{"mappings":"A,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,S,E,C,E,O,G,E,U,C,E,O,C,C,C,I62GIE,EACA,E,E,A,a,O,W,W,A,a,O,K,K,A,a,O,O,O,A,a,O,O,O,C,E,S,E,C,E,O,c,C,E,a,C,M,C,E,a,C,C,E,C,S,E,C,C,C,E,O,O,I,C,G,O,C,S,C,E,Y,G,A,e,G,O,S,C,c,C,I,C,E,I,O,c,C,E,E,C,W,C,E,I,W,O,C,C,E,A,C,E,G,C,C,I,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,I,E,E,Q,C,E,Q,S,C,C,C,E52GLF,YAGE,CAAA,EAAA,OAAA,CAAA,EAAA,Q,G,E,Q,S,C,C,C,ECMF,a,E,E,O,C,W,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,M,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,O,W,O,C,E,S,C,E,O,E,C,G,IAC4T,EAAmB,EAAc,E,E,E,SADzT,EAAE,OAAO,GAAG,CAAC,iBAAiB,EAAE,OAAO,GAAG,CAAC,kBAAkB,EAAE,OAAO,SAAS,CAAC,cAAc,CAAC,EAAE,EAAA,kDAAA,CAAqD,iBAAiB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,EAClP,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,KAAiF,IAAI,KAAhF,KAAK,IAAI,GAAI,CAAA,EAAE,GAAG,CAAA,EAAG,KAAK,IAAI,EAAE,GAAG,EAAG,CAAA,EAAE,GAAG,EAAE,GAAE,AAAF,EAAK,KAAK,IAAI,EAAE,GAAG,EAAG,CAAA,EAAE,EAAE,GAAE,AAAF,EAAc,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,cAAc,CAAC,IAAK,CAAA,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,AAAD,EAAI,GAAG,GAAG,EAAE,YAAY,CAAC,IAAI,KAAK,EAAE,EAAE,YAAY,CAAG,KAAK,IAAI,CAAC,CAAC,EAAE,EAAG,CAAA,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,AAAD,EAAI,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,AAAA,CAAC,CAAC,EAAiB,EAAE,EAAY,EAAE,EAAa,C,G,E,Q,S,C,C,C,ECV1W,YAGE,CAAA,EAAA,OAAA,CAAA,EAAA,Q,G,E,Q,S,C,C,C,ECMF,a,E,E,O,C,W,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,Y,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,W,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,W,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,gB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,a,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,W,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,qD,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,e,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,gB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,gB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,gB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,Y,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,a,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,iB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,O,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,O,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,kB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,e,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,c,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,a,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,gB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,mB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,Y,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,Q,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,s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EAAE,OAAO,GAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAC/e,EAAsB,WAAW,OAAO,GAAE,OAAO,CAAC,aAAa,EAAE,EAAE,EAAgB,Q,G,E,Q,S,C,C,C,ECzBnF,aAiCE,AA/BF,CAAA,SAAS,IAEP,GACE,AAA0C,aAA1C,OAAO,gCACP,AAAmD,YAAnD,OAAO,+BAA+B,QAAQ,CAchD,GAAI,CAEF,+BAA+B,QAAQ,CAAC,EAC1C,CAAE,MAAO,EAAK,CAGZ,QAAQ,KAAK,CAAC,EAChB,CACF,CAAA,IAME,EAAA,OAAA,CAAA,EAAA,Q,G,E,Q,S,C,C,C,ECtBF,a,E,E,O,C,qD,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,e,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,a,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,c,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,Y,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,U,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,c,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,S,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,yB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,0B,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,sC,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,U,W,O,E,E,S,C,E,O,G,C,G,IA8E+D,EAmG8K,EAAG,EAAG,EAAG,EAkGpC,E,E,E,S,E,E,SAnRrJ,SAAS,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,yDAAyD,EAAE,EAAE,EAAE,EAAE,UAAU,MAAM,CAAC,IAAI,GAAG,WAAW,mBAAmB,SAAS,CAAC,EAAE,EAAE,MAAM,yBAAyB,EAAE,WAAW,EAAE,gHAAgH,CAAC,IAAI,EAAG,IAAI,IAAI,EAAG,CAAC,EAAE,SAAS,EAAG,CAAC,CAAC,CAAC,EAAE,EAAG,EAAE,GAAG,EAAG,EAAE,UAAU,EAAE,CACxb,SAAS,EAAG,CAAC,CAAC,CAAC,EAAU,IAAR,CAAE,CAAC,EAAE,CAAC,EAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,EAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAC5D,I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,O,C,E,S,C,E,O,E,C,G,E,E,O,C,gC,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,0B,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,6B,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,0B,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,mC,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,gC,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,gB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,0B,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,wB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,2B,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,4B,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,uB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,wB,W,O,C,E,S,C,E,O,E,C,GAAG,UAAW,OAAO,aAAa,YAAa,OAAO,YAAY,GAAG,CAAC,CAAC,IAAkB,EAIhK,EAAgC,EAAqC,EAA+B,EAAkC,EAAgC,EAAwC,EAA6D,EAC3Q,EAAmN,EAA8D,EAA8D,EAAoI,EACnd,EAA2C,EAC3C,EACA,EAA+B,EALmJ,EAHhC,EAAE,YAAY,EAAqB,WAAW,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,EAAqB,WAAW,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,YAAa,OAAO,WAAW,WAAW,KAAK,EAAE,YAAa,OAAO,aAAa,aAAa,KAAK,EAAE,aAAc,OAAO,aAAa,aAAa,KACnT,SAAS,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,OAAO,GAAG,CAAC,GAAG,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,cAAc,CAAC,EAAE,EAAE,QAAQ,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,EAAY,GAAV,EAAE,CAAC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G,OAAtC,EAAzC,UAAW,OAAO,GAAG,OAAO,GAAe,UAAW,MAAvB,CAAA,EAAE,EAAE,KAAK,AAAL,GAA6B,EAAE,EAAE,EAAE,EAAE,EAAc,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,KAAM,MAAK,EAAE,EAAE,IAAI,KAAM,MAAK,EAAE,EAAE,WAAW,KAAM,MAAK,EAAE,EAAE,IAAI,KAAM,SAAQ,EAAE,GAAG,CAAgN,OAA/M,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,EAAE,EAAG,CAAA,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,IAAI,EAAE,IAAK,CAAA,EAAG,CAAA,EAAE,GAAG,EAAE,EAAA,EAAI,EAAE,CAAC,EAAE,GAAE,EAAE,EAAE,EAAA,CAAC,EAAK,CAAA,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAI,CAAA,EAAE,CAAC,EAAE,EAAE,EAAA,CAAC,EAAW,CAAC,EACne,EAA6B,EAAE,EAA8B,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,WAAW,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,C,G,E,Q,S,C,C,C,E,E,E,O,C,kB,W,O,A,E,S,e,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,W,W,O,A,E,S,Q,A,G,E,E,O,C,Q,W,O,A,E,S,K,A,G,E,E,O,C,S,W,O,A,E,S,M,A,G,E,E,O,C,S,W,O,A,E,S,M,A,G,E,E,O,C,a,W,O,A,E,S,U,A,G,E,E,O,C,c,W,O,A,E,S,W,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,gB,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SETzJ05C,E,S,C,E,S,I,I,I,E,E,U,M,C,E,A,M,G,E,E,E,E,I,C,C,E,C,S,C,E,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AE,EAAE,EAAG,CAClC,IAAI,EAAM,CAAI,CAAC,EAAE,CACjB,GAAI,CAAC,CAAa,CAAC,EAAI,EAAI,CAAE,CAAA,GAAa,CAAS,CAAC,EAAG,AAAH,GAAS,CAAE,CAAA,GAAiB,CAAa,CAAC,EAAG,AAAH,GAAS,CAAE,CAAA,GAAiB,CAAa,CAAC,EAAG,AAAH,EAAO,CAC3I,IAAI,EAAa,EAAyB,EAAiB,GAC3D,GAAI,CAEA,EAAe,EAAiB,EAAK,EACzC,CAAE,MAAO,EAAG,CAAC,CACjB,CACJ,CAGJ,CAEA,OAAO,CACX,C,G,E,Q,S,C,C,C,ECpGA,YAGE,CAAA,EAAA,OAAA,CAAA,EAAA,Q,G,E,Q,S,C,C,C,ECMF,a,E,E,O,C,Y,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,iB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,kB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,kB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,U,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,a,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,W,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,O,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,O,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,S,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,W,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,a,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,W,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,c,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,mB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,oB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,oB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,Y,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,e,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,a,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,S,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,S,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,W,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,a,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,e,W,O,C,E,S,C,E,O,E,C,G,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,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAa,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI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,GAEpC,GAAsB,IAAuB,GAC/C,EAAqB,EAAiB,EAAoB,EAE9D,CAEA,IAAI,EAAO,EAAoB,GAE3B,GACF,CAAA,EAAO,EAAK,MAAM,CAAC,EAAsB,GAD3C,EAOA,IAAK,IAHD,EAAgB,EAAW,GAC3B,EAAgB,EAAW,GAEtB,EAAI,EAAG,EAAI,EAAK,MAAM,CAAE,EAAE,EAAG,CACpC,IAAI,EAAM,CAAI,CAAC,EAAE,CAEjB,GAAI,CAAC,CAAa,CAAC,EAAI,EAAI,CAAE,CAAA,GAAa,CAAS,CAAC,EAAG,AAAH,GAAS,CAAE,CAAA,GAAiB,CAAa,CAAC,EAAG,AAAH,GAAS,CAAE,CAAA,GAAiB,CAAa,CAAC,EAAG,AAAH,EAAO,CAC7I,IAAI,EAAa,EAAyB,EAAiB,GAE3D,GAAI,CAEF,EAAe,EAAiB,EAAK,EACvC,CAAE,MAAO,EAAG,CAAC,CACf,CACF,CACF,CAEA,OAAO,CACT,C,G,E,Q,S,C,C,C,ECpGA,YAGE,CAAA,EAAA,OAAA,CAAA,EAAA,Q,G,E,Q,S,C,C,C,ECMF,a,E,E,O,C,Y,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,iB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,kB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,kB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,U,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,a,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,W,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,O,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,O,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,S,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,W,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,a,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,W,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,c,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,mB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,oB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,oB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,Y,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,e,W,O,C,E,S,C,E,O,E,C,G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,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,O,G,E,E,S,C,G,G,E,E,G,C,C,S,I,M,A,C,E,O,M,E,S,C,E,I,I,E,E,E,U,M,C,I,C,I,E,S,C,E,C,I,I,K,E,O,S,C,c,C,I,C,E,I,C,C,C,E,C,C,C,E,A,C,C,O,C,C,E,K,C,I,C,U,C,S,E,C,C,C,E,E,S,C,O,M,C,E,S,E,E,S,C,W,C,E,E,S,C,C,C,S,E,C,E,G,A,K,I,E,M,A,e,6D,O,C,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,E,G,A,a,O,Q,A,M,C,C,O,Q,C,C,C,G,M,O,C,I,C,E,A,S,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,E,E,G,G,G,A,U,O,E,M,C,C,G,C,E,C,E,I,E,E,O,kB,A,G,E,M,C,C,K,C,C,E,C,K,C,E,M,C,C,I,A,C,C,C,M,A,U,wI,C,M,A,C,E,C,C,O,Q,C,E,E,I,C,I,C,E,CCrLE,IAAMw1B,GAA0B3gF,OAAO,2BAO9C,SAAgB4gF,GAA0BC,CAA1C,EAII,OAAO1jF,OAAO0H,MAAP,CAHP,SAAmBgT,CAAnB,CAA2BqiD,CAA3B,EACI4mB,GAAgBjpE,EAAQqiD,EAAU2mB,EACrC,EAC+BA,EACnC,CAMD,SAAgBC,GAAgBliF,CAAAA,CAAgBD,CAAAA,CAAkBkiF,CAAlE,EACSrB,EAAQ5gF,EAAW+hF,KACpB9B,EAAcjgF,EAAW+hF,GAAZ,EAAA,CAAA,EAEN/hF,CAAS,CAAC+hF,GAFJ,GIbJ,aASNE,AJqBSA,EIrBEE,eAAX,EJsBHniF,CAAAA,CAAS,CAAC+hF,GAAV,CAAmChiF,EAAnC,CAA0CkiF,CAD9C,CAGH,CC1BYvE,IAAAA,GAAQt8E,OAAO,uBAOfghF,GAAb,WAYI,SAAA,EAAmBC,CAAnB,EAAmBA,KAAAA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IAAMu+E,GAAgBv+E,GADWkI,MAAM83C,IAAN,CAAWhgD,EAAEgnD,OAAF,IAElDhnD,CACV,CCxJe29F,SAAAA,GAAgB/2F,CAAhB+2F,EAEZ,OADA/2F,CAAQ,CAACtE,OAAOsE,QAAR,CAAR,CAA4B67F,GACrB77F,CACV,CAED,SAAS67F,KACL,OAAO,IAAP,AACH,CEYA,CAAC,SAAU,MAAO,MAAlB,CAAyBzhG,OAAzB,CAAiC,SAAA6H,CAAC,EAEX,KAAA,IAAT1F,AADH68E,GACI,CAACn3E,EAAT,EACAk1E,EAAG,yBAA0Bl1E,EAA1B,kCAEV,GA0H4C,UAAzC,OAAO65F,+BAEPA,8BAA8BC,UAA9B,CAAyC,CACrCC,I/BtGR,SAAoBjyE,CAApB,EAGQ,OADArkB,QAAQgvF,IAAR,CAAAhvF,8CACO,WAAA,CAOd,E+B6FOu2F,OAAQ,CACJhB,aAAAA,EADI,EAGRjjB,MAAAA,EALqC,E,G,E,Q,S,C,C,C,E,E,E,O,C,W,W,O,A,E,S,Q,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,S,E,S,I,E,E,S,E,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,SE5I7C,AAAA,CAAA,EAAA,EAAA,gBAAA,AAAA,EAAiB,EAAA,uBAAA,C,G,E,Q,S,C,C,C,E,I,E,E,SELjB,GAAI,CAAC,A,E,SAAA,QAAA,CACD,MAAM,AAAI,MAAM,qDAEpB,GAAI,CAAC,EAAA,cAAA,CACD,MAAM,AAAI,MAAM,qE,G,E,Q,S,C,C,C,E,E,E,O,C,0B,W,O,A,E,S,uB,A,G,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,mB,W,O,C,G,I,E,E,SGLd,SAAU,EAAiB,CAAoB,EACjD,GACJ,CAEM,SAAU,EAAiB,CAAsB,EAC9C,GACD,CAAA,EAAoB,CADxB,EAQA,AAAA,CAAA,EAAA,EAAA,SAAA,AAAA,EAAU,CAAE,kBAAiB,CAAA,EACjC,C,G,E,Q,S,C,C,C,E,G,E,Q,S,C,C,C,E,E,E,O,C,c,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,S,C,C,C,E,I,E,A,Y,O,Q,C,C,O,Q,C,C,G,C,E,O,E,I,E,E,E,E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F,EACJ,EA5ByB,EALjB,EALA,EAAY,UAAU,CAKN,AAAA,CAAA,EAAA,EAAA,IAAA,AAAA,EAAK,AAAA,CAAA,EAAA,EAAA,UAAA,AAAA,EAAW,IAEhB,AAAA,CAAA,EAAA,EAAA,IAAA,AAAA,EAAK,IAIzB,EAAc,WAAW,CAAG,EAUrB,CACX,CAGA,IAAM,EAAsB,CACxB,SAAU,CAAA,EACV,OAAQ,CAAA,EACR,QAAS,CAAA,EACT,KAAM,CAAA,CACT,C,G,E,Q,S,C,C,C,E,E,Q,G,E,Q,S,C,C,C,E,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,gB,W,O,C,G,I,E,E,S,E,E,S,E,S,I,E,E,SMxFK,SAAU,EACZ,CAAyC,CACzC,CAAiB,EAMjB,IAAM,EAAS,GAAW,AAAA,CAAA,EAAA,EAAA,qBAAA,AAAA,EAAsB,GAChD,MAAO,AAAA,CAAA,EAAA,EAAA,QAAA,AAAA,EAAS,WAAM,MAAA,AAAA,CAAA,EAAA,EAAA,UAAA,AAAA,EAAW,EAAY,GAAS,KAAA,EAAW,CAAE,SAAU,CAAA,CAAI,EAA3D,EAA+D,CAAC,EAAE,AAC5F,C,G,E,Q,S,C,C,C,E,E,E,O,C,wB,W,O,C,G,E,S,I,E,E,S,E,E,S,E,S,C,C,C,E,I,E,A,Y,O,Q,C,C,O,Q,C,C,G,C,E,O,E,I,E,E,E,E,I,C,G,E,E,C,G,C,K,A,C,A,K,I,G,K,C,G,C,A,C,E,E,I,E,E,I,E,E,I,C,E,K,C,C,M,E,C,E,C,M,C,C,Q,C,G,C,G,C,E,I,E,C,E,E,M,A,G,E,I,C,E,Q,C,G,E,M,E,K,A,C,C,O,C,EEjBM,SAAU,EAA8C,CAAgB,EAKpE,IAAC,EAAG,AAAJ,EAAQ,AAAA,CAAA,EAAA,EAAA,QAAA,AAAA,EAAS,WAAM,MAAA,AAAA,CAAA,EAAA,EAAA,UAAA,AAAA,EAAW,EAAS,CAAA,EAAI,CAAE,KAAM,CAAA,CAAK,EAArC,GAAyC,EAA5D,CAAA,EAA4D,CAItE,MAHA,AAAA,CAAA,EAAA,EAAA,WAAA,AAAA,EAAY,WACR,OAAO,MAAM,CAAC,EAAK,EACvB,GACO,CACX,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,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O,CACT,EACA,CACE,MAAO,aACP,SAAU,QACV,MAAO,AAAoB,MAApB,EAA2B,EAAW,GAAoB,CACnE,EACA,CACE,MAAO,cACP,SAAU,QACV,MAAO,AAAqB,MAArB,EAA4B,EAAW,GAAqB,CACrE,EACA,CACE,MAAO,kBACP,SAAU,QACV,MACE,AAAyB,MAAzB,EACI,EAAW,GACX,CACR,EACA,CACE,MAAO,cACP,SAAU,QACV,MAAO,EACT,EACA,CACE,MAAO,eACP,SAAU,QACV,MACE,AAAsB,MAAtB,EAA6B,EAAW,GAAsB,CAClE,EACA,CACE,MAAO,eACP,SAAU,QACV,MACE,AAAsB,MAAtB,EAA6B,EAAW,GAAsB,CAClE,EACA,CACE,MAAO,mBACP,SAAU,QACV,MACE,AAA0B,MAA1B,EACI,EAAW,GACX,CACR,EACA,CACE,MAAO,cACP,SAAU,QACV,MAAO,AAAqB,MAArB,EAA4B,EAAW,GAAqB,CACrE,EACA,CACE,MAAO,YACP,SAAU,QACV,MAAO,EACH,EAAW,KAAK,KAAK,CAAC,AAAoB,WAApB,IACtB,CACN,EACA,CACE,MAAO,gBACP,SAAU,QACV,MAAO,EACH,EAAW,KAAK,KAAK,CAAC,IACtB,CACN,EACA,CACE,MAAO,aACP,SAAU,QACV,MAAO,AAAoB,MAApB,EAA2B,EAAW,GAAoB,CACnE,EACA,CACE,MAAO,WACP,SAAU,QACV,MAAO,EACT,EACA,CACE,MAAO,oBACP,SAAU,QACV,MAAO,EACT,EACD,CACD,WAAY,CACV,CACE,MAAO,eACP,SAAU,OACV,OAAQ,WACR,MAAO,GAA0B,CACnC,EACA,CACE,MAAO,WACP,SAAU,OACV,OAAQ,IACR,MAAO,IAAY,CACrB,EACA,CACE,MAAO,UACP,SAAU,OACV,OAAQ,WACR,MAAO,IAAW,CACpB,EACA,CACE,MAAO,OACP,SAAU,OACV,OAAQ,WACR,MAAO,IAAqB,CAC9B,EACA,CACE,MAAO,uBACP,SAAU,OACV,OAAQ,WACR,MAAO,IAAW,GAAoB,GAAU,GAAoB,CACtE,EACA,CACE,MAAO,gBACP,OAAQ,WACR,SAAU,QACV,MAAO,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KAAK,CACd,SAAU,WACZ,EACD,CACD,OAAQ,CACN,CACE,KAAM,qBACN,MAAO,gBACP,MAAO,EACP,IAAK,IACL,OAAQ,CAAC,KAAK,CACd,SAAU,QACZ,EAEA,CACE,KAAM,oBACN,MAAO,qBACP,MAAO,EACP,IAAK,IACL,OAAQ,CAAC,KAAK,CACd,SAAU,QACZ,EAEA,CACE,KAAM,MACN,MAAO,uBACP,MAAO,EACP,IAAK,IACL,OAAQ,CAAC,KAAK,CACd,SAAU,QACZ,EACD,CACD,mBAAoB,CAClB,CACE,KAAM,eACN,MAAO,mBACP,MAAO,EACP,IAAK,IACL,OAAQ,CAAC,KAAK,AAChB,EAEA,CACE,KAAM,kBACN,MAAO,kBACP,MAAO,KACP,IAAK,EACL,OAAQ,CAAC,KAAK,AAChB,EACA,CACE,KAAM,oBACN,MAAO,oBACP,MAAO,EACP,IAAK,IACL,OAAQ,CAAC,KAAK,AAChB,EACD,AACH,EAoE8B,CAC5B,CACE,MAAO,IACP,MAAO,qBACT,EACA,CACE,MAAO,IACP,MAAO,qBACT,EACA,CACE,MAAO,IACP,MAAO,mBACT,EACA,CACE,MAAO,IACP,MAAO,oBACT,EACA,CACE,MAAO,IACP,MAAO,WACT,EACA,CACE,MAAO,IACP,MAAO,6BACT,EACA,CACE,MAAO,IACP,MAAO,4BACT,EACA,CACE,MAAO,IACP,MAAO,OACT,EACA,CACE,MAAO,IACP,MAAO,YACT,EACA,CACE,MAAO,IACP,MAAO,SACT,EACA,CACE,MAAO,IACP,MAAO,QACT,EACA,CACE,MAAO,IACP,MAAO,eACT,EACA,CACE,MAAO,IACP,MAAO,oBACT,EACA,CACE,MAAO,IACP,MAAO,aACT,EACA,CACE,MAAO,IACP,MAAO,iBACT,EACA,CACE,MAAO,IACP,MAAO,uBACT,EACA,CACE,MAAO,IACP,MAAO,6BACT,EACA,CACE,MAAO,IACP,MAAO,aACT,EACA,CACE,MAAO,IACP,MAAO,mBACT,EACA,CACE,MAAO,IACP,MAAO,yBACT,EACA,CACE,MAAO,IACP,MAAO,SACT,EACA,CACE,MAAO,IACP,MAAO,aACT,EACA,CACE,MAAO,IACP,MAAO,WACT,EACA,CACE,MAAO,IACP,MAAO,qBACT,EACA,CACE,MAAO,IACP,MAAO,eACT,EACD,CAAC,IAAI,CAAC,CAAC,EAAG,IACT,EAAE,KAAK,CAAC,WAAW,GAAG,aAAa,CAAC,EAAE,KAAK,CAAE,KAAM,CAAE,YAAa,MAAO,IAEjD,EAAA,OAAmB,CAEtC,IAAM,EAAmB,CAC9B,CACE,MAAO,gBACP,MAAO,eACT,EACA,CACE,MAAO,gBACP,MAAO,eACT,EACA,CACE,MAAO,cACP,MAAO,YACT,EACA,CACE,MAAO,OACP,MAAO,MACT,EACA,CACE,MAAO,aACP,MAAO,KACT,EACA,CACE,MAAO,cACP,MAAO,aACT,EACA,CACE,MAAO,OACP,MAAO,MACT,EACA,CACE,MAAO,cACP,MAAO,WACT,EACA,CACE,MAAO,aACP,MAAO,YACT,EACA,CACE,MAAO,WACP,MAAO,UACT,EACA,CACE,MAAO,SACP,MAAO,QACT,EACA,CACE,MAAO,qBACP,MAAO,WACT,EACA,CACE,MAAO,qBACP,MAAO,QACT,EACA,CACE,MAAO,SACP,MAAO,QACT,EACA,CACE,MAAO,SACP,MAAO,QACT,EACA,CACE,MAAO,mBACP,MAAO,SACT,EACA,CACE,MAAO,mBACP,MAAO,kBACT,EACA,CACE,MAAO,aACP,MAAO,YACT,EACA,CACE,MAAO,sBACP,MAAO,SACT,EACA,CACE,MAAO,UACP,MAAO,SACT,EACA,CACE,MAAO,YACP,MAAO,WACT,EACA,CACE,MAAO,iBACP,MAAO,gBACT,EACA,CACE,MAAO,eACP,MAAO,cACT,EACA,CACE,MAAO,eACP,MAAO,MACT,EACA,CACE,MAAO,aACP,MAAO,YACT,EACA,CACE,MAAO,WACP,MAAO,UACT,EACA,CACE,MAAO,UACP,MAAO,SACT,EACA,CACE,MAAO,cACP,MAAO,aACT,EACA,CACE,MAAO,eACP,MAAO,cACT,EACA,CACE,MAAO,mBACP,MAAO,SACT,EACA,CACE,MAAO,WACP,MAAO,UACT,EACA,CACE,MAAO,iBACP,MAAO,QACT,EACA,CACE,MAAO,cACP,MAAO,aACT,EACA,CACE,MAAO,SACP,MAAO,QACT,EACA,CACE,MAAO,MACP,MAAO,KACT,EACA,CACE,MAAO,kBACP,MAAO,iBACT,EACA,CACE,MAAO,iBACP,MAAO,gBACT,EACA,CACE,MAAO,qBACP,MAAO,WACT,EACA,CACE,MAAO,SACP,MAAO,QACT,EACA,CACE,MAAO,UACP,MAAO,SACT,EACA,CACE,MAAO,kBACP,MAAO,eACT,EACA,CACE,MAAO,SACP,MAAO,QACT,EACA,CACE,MAAO,gBACP,MAAO,eACT,EACA,CACE,MAAO,UACP,MAAO,SACT,EACA,CACE,MAAO,oBACP,MAAO,SACT,EACA,CACE,MAAO,YACP,MAAO,WACT,EACA,CACE,MAAO,sBACP,MAAO,YACT,EACD,CAEY,EAA2B,CACtC,CACE,KAAM,mBACN,MAAO,oBACP,MAAO,EACP,IAAK,IACL,OAAQ,CAAC,KAAK,CACd,SAAU,eACZ,EACA,CACE,KAAM,sBACN,MAAO,sBACP,MAAO,EACP,IAAK,GACL,OAAQ,CAAC,KAAK,AAChB,EACA,CACE,KAAM,SACN,MAAO,mBACP,MAAO,EACP,IAAK,IACL,OAAQ,CAAC,KAAM,QAAQ,CACvB,SAAU,IACZ,EACA,CACE,KAAM,aACN,MAAO,aACP,MAAO,KACP,IAAK,EACL,OAAQ,CAAC,KAAK,CACd,SAAU,IACZ,EACD,A,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GC1kBD,IAAM,EAAY,CAChB,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,GACA,GACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,MACA,EACA,GACA,OACA,OACA,OACA,GACA,OACA,KACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,OACA,GACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,KACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,GACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,GACA,OACA,OACA,OACA,OACA,OACA,OACA,GACA,OACA,OACA,GACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,EACA,EACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,GACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,GACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACD,CAED,IAAA,EAAe,CACb,CACE,MAAO,MACP,MAAO,OACP,OAAQ,CAAC,KAAK,AAChB,EACA,CACE,MAAO,MACP,MAAO,uCACP,OAAQ,CAAC,KAAK,AAChB,EACA,CACE,MAAO,MACP,MAAO,wCACP,OAAQ,CAAC,KAAK,AAChB,EACA,CACE,MAAO,MACP,MAAO,uCACP,OAAQ,CAAC,KAAK,AAChB,EACA,CACE,MAAO,EACP,MAAO,kCACP,OAAQ,CAAC,KAAK,AAChB,EACA,CACE,MAAO,EACP,MAAO,0BACP,OAAQ,CAAC,KAAK,AAChB,EACA,CACE,MAAO,EACP,MAAO,kBACP,OAAQ,CAAC,KAAK,AAChB,EACA,CACE,MAAO,EACP,MAAO,wBACP,OAAQ,CAAC,KAAK,AAChB,EACA,CACE,MAAO,EACP,MAAO,qBACP,OAAQ,CAAC,KAAK,AAChB,EACA,CACE,MAAO,EACP,MAAO,+CACP,OAAQ,CAAC,KAAK,AAChB,EACA,CACE,MAAO,EACP,MAAO,sCACP,OAAQ,CAAC,KAAK,A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C,E,O,C,iB,C,W,C,E,I,W,O,E,c,A,C,G,O,c,C,E,O,C,U,C,W,C,E,I,W,O,E,O,A,C,G,O,c,C,E,O,C,kB,C,W,C,E,I,W,O,E,O,A,C,G,O,c,C,E,O,C,c,C,W,C,E,I,W,O,E,O,A,C,G,O,c,C,E,O,C,iB,C,W,C,E,I,W,O,E,O,A,C,G,O,c,C,E,O,C,a,C,W,C,E,I,W,O,E,O,A,C,G,O,c,C,E,O,C,gB,C,W,C,E,I,W,O,E,O,A,C,G,O,c,C,E,O,C,a,C,W,C,E,I,W,O,E,O,A,C,G,O,c,C,E,O,C,kC,C,W,C,E,I,W,O,E,+B,A,C,G,O,c,C,E,O,C,c,C,W,C,E,I,W,O,E,W,A,C,G,O,c,C,E,O,C,uB,C,W,C,E,I,W,O,E,oB,A,C,G,O,c,C,E,O,C,iB,C,W,C,E,I,W,O,E,c,A,C,G,O,c,C,E,O,C,0B,C,W,C,E,I,W,O,E,uB,A,C,G,O,c,C,E,O,C,mB,C,W,C,E,I,W,O,E,gB,A,C,G,O,c,C,E,O,C,kB,C,W,C,E,I,W,O,E,e,A,C,G,O,c,C,E,O,C,kB,C,W,C,E,I,W,O,E,e,A,C,G,O,c,C,E,O,C,a,C,W,C,E,I,W,O,E,U,A,C,G,O,c,C,E,O,C,mB,C,W,C,E,I,W,O,E,gB,A,C,G,O,c,C,E,O,C,gB,C,W,C,E,I,W,O,E,a,A,C,G,O,c,C,E,O,C,Y,C,W,C,E,I,W,O,E,S,A,C,G,O,c,C,E,O,C,a,C,W,C,E,I,W,O,E,U,A,C,G,O,c,C,E,O,C,gB,C,W,C,E,I,W,O,E,a,A,C,G,O,c,C,E,O,C,uB,C,W,C,E,I,W,O,E,oB,A,C,G,O,c,C,E,O,C,mB,C,W,C,E,I,W,O,E,gB,A,C,G,O,c,C,E,O,C,c,C,W,C,E,I,W,O,E,W,A,C,G,O,c,C,E,O,C,gB,C,W,C,E,I,W,O,E,a,A,C,G,O,c,C,E,O,C,gB,C,W,C,E,I,W,O,E,a,A,C,G,O,c,C,E,O,C,gB,C,W,C,E,I,W,O,E,a,A,C,G,O,c,C,E,O,C,qB,C,W,C,E,I,W,O,E,kB,A,C,G,O,c,C,E,O,C,kB,C,W,C,E,I,W,O,E,e,A,C,G,O,c,C,E,O,C,oB,C,W,C,E,I,W,O,E,iB,A,C,G,O,c,C,E,O,C,iB,C,W,C,E,I,W,O,E,c,A,C,G,O,c,C,E,O,C,8B,C,W,C,E,I,W,O,E,2B,A,C,G,O,c,C,E,O,C,2B,C,W,C,E,I,W,O,E,wB,A,C,G,O,c,C,E,O,C,2B,C,W,C,E,I,W,O,E,wB,A,C,G,O,c,C,E,O,C,2B,C,W,C,E,I,W,O,E,wB,A,C,G,O,c,C,E,O,C,+B,C,W,C,E,I,W,O,E,4B,A,C,G,O,c,C,E,O,C,kC,C,W,C,E,I,W,O,E,+B,A,C,G,O,c,C,E,O,C,oC,C,W,C,E,I,W,O,E,iC,A,C,G,O,c,C,E,O,C,0B,C,W,C,E,I,W,O,E,uB,A,C,G,O,c,C,E,O,C,4B,C,W,C,E,I,W,O,E,yB,A,C,G,O,c,C,E,O,C,6B,C,W,C,E,I,W,O,E,0B,A,C,G,O,c,C,E,O,C,W,C,W,C,E,I,W,O,E,Q,A,C,G,O,c,C,E,O,C,sB,C,W,C,E,I,W,O,E,mB,A,C,G,O,c,C,E,O,C,kB,C,W,C,E,I,W,O,E,e,A,C,G,O,c,C,E,O,C,mB,C,W,C,E,I,W,O,E,gB,A,C,G,O,c,C,E,O,C,gB,C,W,C,E,I,W,O,E,a,A,C,G,O,c,C,E,O,C,gB,C,W,C,E,I,W,O,E,a,A,C,G,I,E,E,S,E,E,SEnaf,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UAEA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UAEA,EAAA,EAAA,EAAA,U,E,E,S,E,E,S,E,E,S,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,a,C,E,O,C,U,C,E,O,C,c,C,E,O,C,W,C,K,EEVO,IAAM23E,EAAc,CACzBhnE,KAAM,EACNmqE,QAAS,EACTC,SAAU,EACVC,KAAM,CAJmB,C,C,E,O,C,W,C,E,E,O,C,c,CAOG,E,E,O,C,U,CACJ,EAEnB,IAAMJ,EAAgB,CAC3BM,WAAY,CAAC,EAAG,EAAG,EAAG,EADK,CAE3BC,WAL4B,EAM5BC,WAAYzD,EAAYhnE,IAHG,CAI3B0qE,UAAW,CAAC,EAAG,EAAG,EAAG,EAJM,CAK3BC,UAAW,CAAC,EAAG,EAAG,EAAG,EALM,CAM3BC,gBAAiB,EACjBC,oBAAqB,EACrB7iJ,QAAS,EACT8iJ,OAAQ,CATmB,C,C,E,O,C,a,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,O,C,E,O,C,c,C,K,E,I,E,E,S,E,E,SET7B,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,C,C,E,I,E,O,I,C,G,G,O,qB,C,C,I,E,O,qB,C,G,G,C,E,E,M,C,S,C,E,O,O,wB,C,E,G,U,A,E,E,E,I,C,K,C,E,E,C,O,C,C,S,E,C,C,C,E,O,A,S,C,E,G,M,O,C,G,O,C,E,I,A,S,C,C,C,E,G,A,a,O,Q,O,Q,I,O,I,I,E,E,C,E,C,E,E,C,E,E,K,E,G,C,I,I,E,E,C,C,O,Q,C,G,C,C,E,A,C,E,E,I,E,E,I,A,I,E,I,C,E,K,E,C,G,E,M,G,G,E,C,G,C,M,E,C,E,C,E,E,C,Q,C,G,C,G,A,M,E,M,E,E,M,E,Q,C,G,E,M,C,C,C,O,E,E,E,I,E,E,I,A,W,M,A,U,4I,G,C,S,E,C,E,O,A,S,C,E,G,M,O,C,G,O,E,E,E,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,E,I,E,I,A,W,M,A,U,uI,G,C,S,E,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,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,S,C,C,C,E,E,E,O,C,M,W,O,A,E,S,G,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,Q,A,G,E,E,O,C,mB,W,O,A,E,S,gB,A,G,E,E,O,C,qB,W,O,A,E,S,kB,A,G,E,E,O,C,sB,W,O,A,E,S,mB,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,kB,W,O,A,E,S,e,A,G,E,E,O,C,iB,W,O,A,E,S,c,A,G,E,E,O,C,kB,W,O,A,E,S,e,A,G,E,E,O,C,kB,W,O,A,E,S,e,A,G,E,E,O,C,sB,W,O,A,E,S,mB,A,G,E,E,O,C,mB,W,O,A,E,S,gB,A,G,E,E,O,C,oB,W,O,A,E,S,iB,A,G,E,S,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,M,W,O,C,G,E,S,I,E,E,SGZvB,IAAMjtK,EAAM,IAAIg/F,EAAAA,GAAAA,CAAI,CAACp8G,GAAI,SAAL,E,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,E,E,O,C,W,W,O,C,G,E,E,O,C,mB,W,O,C,G,E,E,O,C,qB,W,O,C,G,E,E,O,C,sB,W,O,C,G,I,E,E,SEIpB,SAASirL,EAAQ9kD,CAAjB,QACL,GAAqC,aAAjC,OAAO6lD,uBAAyC7lD,aAAc6lD,uBAG9D,AAAkC,aAAlC,OAAOC,wBAA0C9lD,aAAc8lD,yBAI5D1wC,CAAAA,CAAQpV,CAAAA,GAAMnhE,OAAOsnG,QAAP,CAAgBnmC,EAAG+lD,QAAnB,CAAA,CACtB,CAEM,SAAS3C,EAASpjD,CAAlB,QACL,EAAI,CAAA,AAAkC,aAAlC,OAAO8lD,wBAA0C9lD,aAAc8lD,sBAAAA,GAI5D1wC,CAAAA,CAAQpV,CAAAA,GAAMA,AAAgB,IAAhBA,EAAG+lD,QAAH,AAAgB,CACtC,CAEM,SAAShB,EAAiB/kD,CAA1B,EACL,OAAOojD,EAASpjD,GAAMA,EAAK,IAC5B,CAEM,SAAS2kD,EAAmB3kD,CAA5B,EAEL,MADAkxC,AAAAA,CAAAA,EAAAA,EAAAA,MAAAA,AAAAA,EAAO4T,EAAQ9kD,GA5BG,iCA6BXA,CACR,CAEM,SAASw/C,EAAoBx/C,CAA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AAAA,CAAOu0D,KAAP,EAAgB,CAAC8ksB,AAzBhB,SAAwB782B,CAAxB,CAAwCmJ,CAAxC,EACL,GAAInJ,EAAEmJ,MAAF,GAAaA,EACf,MAAO,CAAA,EAGT,IAAK,IAAIuzC,EAAI,EAAGA,EAAI18C,EAAEmJ,MAAtB,CAA8B,EAAEuzC,EAC9B,GAAI,CAACuqB,OAAOsnG,QAAP,CAAgBvuK,CAAC,CAAC08C,EAAlB,EACH,MAAO,CAAA,EAGX,MAAO,CAAA,CACR,EAcqC18C,EAAGmJ,GACrC,MAAM,AAAI7G,MAAJ,YAAA,MAAA,CAAsB47M,EAAtB,yCAER,OAAOl+M,CACR,C,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,S,W,O,C,G,E,E,O,C,a,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,S,W,O,C,G,E,E,O,C,Y,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,Q,W,O,C,G,E,E,O,C,gB,W,O,C,G,E,E,O,C,gB,W,O,C,G,E,E,O,C,gB,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,Q,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,M,W,O,C,G,I,E,E,SCvCM,SAAS,IACd,IAAI,EAAM,IAAI,EAAA,UAAA,CAAoB,GAQlC,OANI,EAAA,UAAA,EAAuB,eACzB,CAAG,CAAC,EAAE,CAAG,EACT,CAAG,CAAC,EAAE,CAAG,EACT,CAAG,CAAC,EAAE,CAAG,GAGJ,CACT,CAsBO,SAAS,EAAO,CAAC,EAItB,OAAO,KAAK,KAAK,CAHT,CAAC,CAAC,EAAE,CACJ,CAAC,CAAC,EAAE,CACJ,CAAC,CAAC,EAAE,CAEd,CAUO,SAAS,EAAW,CAAC,CAAE,CAAC,CAAE,CAAC,EAChC,IAAI,EAAM,IAAI,EAAA,UAAA,CAAoB,GAIlC,OAHA,CAAG,CAAC,EAAE,CAAG,EACT,CAAG,CAAC,EAAE,CAAG,EACT,CAAG,CAAC,EAAE,CAAG,EACF,CACT,CAwCO,SAAS,EAAI,CAAG,CAAE,CAAC,CAAE,CAAC,EAI3B,OAHA,CAAG,CAAC,EAAE,CAAG,CAA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A,CAAKqnO,IAAX,CAAkBv6E,EAA9B,AACD,CAGD89E,WAAW99E,CAAD,CAAc9sJ,CAAd,CAA2BxY,CAA3B,CAAgD,CAExD,OADA,IAAA,CAAKwY,EAAM,IAAA,CAAKqnO,IAAX,CAAkBv6E,EAAvB,CAA8BuxC,AAAAA,CAAAA,EAAAA,EAAAA,WAAAA,AAAAA,EAAY72M,GACnC,IAAP,AACD,CAIDqjP,UAAUC,CAAD,CAAsB1kM,EAAmB,AAAIr3C,MAAM,IAAA,CAAKs4O,IAAf,EAAqB18D,IAArB,CAA0B,GAAnE,CAAkF,CACzF,IAAMogE,EAAaD,EAAc,IAAA,CAAKzD,IAAtC,CACA,IAAK,IAAIvkM,EAAI,EAAGA,EAAI,IAAA,CAAKukM,IAAzB,CAA+B,EAAEvkM,EAC/BsD,CAAM,CAACtD,EAAP,CAAY,IAAA,CAAKioM,EAAajoM,EAA9B,CAEF,OAAOsD,CACR,CAED4kM,UAAUF,CAAD,CAAsBG,CAAtB,CAAkE,CACzE,IAAMF,EAAaD,EAAc,IAAA,CAAKzD,IAAtC,CACA,IAAK,IAAIvkM,EAAI,EAAGA,EAAI,IAAA,CAAKukM,IAAzB,CAA+B,EAAEvkM,EAC/B,IAAA,CAAKioM,EAAajoM,EAAlB,CAAuBmoM,CAAY,CAACnoM,EAApC,CAEF,OAAO,IAAP,AACD,CAhEoD,C,G,E,Q,S,C,C,C,E,E,E,O,C,Y,W,O,C,G,E,E,O,C,S,W,O,C,G,E,E,O,C,c,W,O,C,G,E,E,O,C,W,W,O,C,G,E,E,O,C,Y,W,O,C,G,E,E,O,C,Q,W,O,C,G,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,a,W,O,C,G,E,E,O,C,W,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,c,W,O,C,G,E,E,O,C,Q,W,O,C,G,E,E,O,C,S,W,O,C,G,E,E,O,C,S,W,O,C,G,I,E,E,SCwMhD,SAAS,EAAU,CAAG,CAAE,CAAC,EAE9B,GAAI,IAAQ,EAAG,CACb,IAAI,EAAM,CAAC,CAAC,EAAE,CACV,EAAM,CAAC,CAAC,EAAE,CACV,EAAM,CAAC,CAAC,EAAE,CA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,O,A,E,S,c,A,G,E,E,O,C,e,W,O,A,E,S,Y,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,oB,W,O,A,E,S,iB,A,G,E,E,O,C,oB,W,O,A,E,S,iB,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,0B,W,O,A,E,S,uB,A,G,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GInBE,SAAA,EAAyB,CAAG,CAAE,CAAG,CAAE,CAAK,EAYrD,OAXI,KAAO,EACT,OAAO,cAAc,CAAC,EAAK,EAAK,CAC9B,MAAO,EACP,WAAY,CAAA,EACZ,aAAc,CAAA,EACd,SAAU,CAAA,CACZ,GAEA,CAAG,CAAC,EAAI,CAAG,EAGN,CACT,C,G,E,Q,S,C,C,C,E,E,E,O,C,a,W,O,C,G,E,E,O,C,kB,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,Q,W,O,C,G,E,E,O,C,O,W,O,C,G,I,E,E,SEVO,SAAS6hM,IACd,MAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAArD,AACD,CAGM,SAASyF,EAAgB/D,CAAzB,CAA2C7nC,CAA3C,EACL,IAAMp4J,EAAS44J,AAAAA,CAAAA,EAAAA,EAAAA,aAAAA,AAAAA,EAAc,EAAD,CAAiBR,EAAQ6nC,GAErD,MADApmE,AAAAA,CAAAA,EAAAA,EAAAA,KAAAA,AAAAA,EAAM75H,EAAQA,EAAQ,EAAIA,CAAM,CAAC,EAA5B,EACEA,CACR,CAEM,SAASiyM,EAAI7wP,CAAb,CAA4B0+K,CAA5B,EACL,IAAM8rE,EAAUxqP,EAAQ0+K,EACxB,OAAO8rE,EAAU,EAAI9rE,EAAU8rE,EAAUA,CAC1C,CAEM,SAAS9vC,EAAK7sL,CAAd,CAA6BE,CAA7B,CAA0C4rC,CAA1C,EACL,OAAOA,EAAO5rC,EAAO,AAAA,CAAA,EAAI4rC,CAAAA,EAAQ9rC,CAClC,CAEM,SAAS+sL,EAAM9pL,CAAf,CAA0Bqc,CAA1B,CAAuC6Y,CAAvC,EACL,OAAOl1B,EAAIqc,EAAMA,EAAMrc,EAAIk1B,EAAMA,EAAMl1B,CACxC,CAMM,IAAMwtN,EAAOzgO,KAAKygO,IAAL,EAJpB,SAAgBxtN,CAAhB,EACE,OAAOjT,KAAKI,GAAL,CAAS6S,GAAKjT,KAAK4sO,KAA1B,AACD,C,G,E,Q,S,C,C,C,E,E,E,O,C,Q,W,O,C,G,E,E,O,C,gB,W,O,C,G,IChBK,E,E,E,SAmOC,SAAS,EAAM,CAAG,CAAE,CAAC,CAAE,CAAC,EAK7B,OAJA,CAAG,CAAC,EAAE,CAAG,CAAC,CAAC,EAAE,CAAG,EAChB,CAAG,CAAC,EAAE,CAAG,CAAC,CAAC,EAAE,CAAG,EAChB,CAAG,CAAC,EAAE,CAAG,CAAC,CAAC,EAAE,CAAG,EAChB,CAAG,CAAC,EAAE,CAAG,CAAC,CAAC,EAAE,CAAG,EACT,CACT,CA0OO,SAAS,EAAc,CAAG,CAAE,CAAC,CAAE,CAAC,EACrC,IAAI,EAAI,CAAC,CAAC,EAAE,CACR,EAAI,CAAC,CAAC,EAAE,CACR,EAAI,CAAC,CAAC,EAAE,CACR,EAAI,CAAC,CAAC,EAAE,CAKZ,OAJA,CAAG,CAAC,EAAE,CAAG,CAAC,CAAC,EAAE,CAAG,EAAI,CAAC,CAAC,EAAE,CAAG,EAAI,CAAC,CAAC,EAAE,CAAG,EAAI,CAAC,CAAC,GAAG,CAAG,EAClD,CAAG,CAAC,EAAE,CAAG,CAAC,CAAC,EAAE,CAAG,EAAI,CAAC,CAAC,EAAE,CAAG,EAAI,CAAC,CAAC,EAAE,CAAG,EAAI,CAAC,CAAC,GAAG,CAAG,EAClD,CAAG,CAAC,EAAE,CAAG,CAAC,CAAC,EAAE,CAAG,EAAI,CAAC,CAAC,EAAE,CAAG,EAAI,CAAC,CAAC,GAAG,CAAG,EAAI,CAAC,CAAC,GAAG,CAAG,EACnD,CAAG,CAAC,EAAE,CAAG,CAAC,CAAC,EAAE,CAAG,EAAI,CAAC,CAAC,EAAE,CAAG,EAAI,CAAC,CAAC,GAAG,CAAG,EAAI,CAAC,CAAC,GAAG,CAAG,EAC5C,CACT,CA7dM,EAAM,IAAI,EAAA,UAAA,CAAoB,GAE9B,EAAA,UAAA,EAAuB,eACzB,CAAG,CAAC,EAAE,CAAG,EACT,CAAG,CAAC,EAAE,CAAG,EACT,CAAG,CAAC,EAAE,CAAG,EACT,CAAG,CAAC,EAAE,CAAG,E,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,E,E,O,C,a,W,O,C,G,E,E,O,C,S,W,O,C,GCdN,IAAI,EAAU,KACV,EAAa,AAAwB,aAAxB,OAAO,aAA+B,aAAe,MAClE,EAAS,KAAK,MAAM,AAiC1B,CAAA,KAAK,KAAK,EAAE,CAAA,KAAK,KAAK,CAAG,WAI5B,IAHA,IAAI,EAAI,EACJ,EAAI,UAAU,MAAM,CAEjB,KACL,GAAK,SAAS,CAAC,EAAE,CAAG,SAAS,CAAC,EAAE,CAGlC,OAAO,KAAK,IAAI,CAAC,EACnB,CAAA,C,G,E,Q,S,C,C,C,E,E,E,O,C,e,W,O,C,G,E,E,O,C,mB,W,O,C,G,E,E,O,C,c,W,O,C,G,E,E,O,C,c,W,O,C,G,E,E,O,C,gB,W,O,C,G,E,E,O,C,gB,W,O,C,G,E,E,O,C,e,W,O,C,G,E,E,O,C,gB,W,O,C,G,E,E,O,C,oB,W,O,C,G,E,E,O,C,oB,W,O,C,G,E,E,O,C,gB,W,O,C,G,E,E,O,C,0B,W,O,C,G,E,E,O,C,iB,W,O,C,G,E,E,O,C,iB,W,O,C,G,E,E,O,C,sB,W,O,C,G,E,E,O,C,gB,W,O,C,G,E,E,O,C,gB,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SEvCA,IAAMn0H,EAAKz4G,KAAKy4G,EAAhB,CACMqzvB,EAAOrzvB,EAAK,EACZ+kvB,EAAqB/kvB,EAAK,IAC1B8kvB,EAAqB,IAAM9kvB,EAKpB05H,EAAe,UAGfs5nB,EAAmB,IA8BzB,SAASt2nB,EAAY97O,CAArB,EACL,OAAO2G,KAAK8lH,GAAL,CAAS,EAAGzsH,EACpB,CAGM,SAASw7O,EAAYj6E,CAArB,EACL,MAAO6lE,AAAAA,CAAAA,EAAAA,EAAAA,IAAAA,AAAAA,EAAK7lE,EACb,CAYM,SAASilE,EAAc7/E,CAAvB,EACL,GAAM,CAACtnC,EAAK9nB,EAAN,CAAaovD,EACnBqa,AAAAA,CAAAA,EAAAA,EAAAA,OAAAA,AAA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G,CAAI,CAAC,EAAI,EAAE,AAAF,EAC9C,AAAC,CAAA,CAAI,CAAC,EAAE,CAAG,CAAI,CAAC,EAAC,AAAD,EAAO,CAAA,CAAI,CAAC,EAAI,EAAE,CAAG,CAAI,CAAC,EAAI,EAAC,AAAD,EACtD,CAEA,OAAO,AAAgB,IAAhB,GAAqB,AAAkB,IAAlB,EAAsB,EAC9C,KAAK,GAAG,CAAC,AAAC,CAAA,EAAgB,CAAA,EAAe,EACjD,EAYA,EAAO,OAAO,CAAG,SAAU,CAAI,EAK3B,IAAK,IAJD,EAAM,CAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CACvB,EAAS,CAAC,SAAU,EAAE,CAAE,MAAO,EAAE,CAAE,WAAY,CAAG,EAClD,EAAY,EAEP,EAAI,EAAG,EAAI,EAAK,MAAM,CAAE,IAAK,CAClC,IAAK,IAAI,EAAI,EAAG,EAAI,CAAI,CAAC,EAAE,CAAC,MAAM,CAAE,IAChC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,IAAK,EAAO,QAAQ,CAAC,IAAI,CAAC,CAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAEhE,EAAI,IACJ,GAAa,CAAI,CAAC,EAAI,EAAE,CAAC,MAAM,CAC/B,EAAO,KAAK,CAAC,IAAI,CAAC,GAE1B,CACA,OAAO,CACX,C,G,E,Q,S,C,C,C,E,E,E,O,C,uB,W,O,A,E,S,oB,A,G,E,E,O,C,gC,W,O,A,E,S,6B,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,S,W,O,A,E,S,M,A,G,E,E,O,C,mB,W,O,A,E,S,gB,A,G,E,E,O,C,oB,W,O,A,E,S,iB,A,G,E,E,O,C,8B,W,O,A,E,S,2B,A,G,E,E,O,C,6B,W,O,A,E,S,0B,A,G,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,E,E,O,C,gC,W,O,C,G,E,E,O,C,uB,W,O,C,G,E,E,O,C,0B,W,O,C,G,E,E,O,C,sC,W,O,C,G,E,E,O,C,6B,W,O,C,G,E,E,O,C,gC,W,O,C,G,I,E,E,SKnqBO,IAAM49G,EAAU,CACrBC,UAAW,EACXE,kBAAmB,EAFE,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IAAI,CAAC,CAAC,EAAI,EAAK,CAAC,CACvB,IAAI,CAAC,CAAC,CAAG,EAAK,CAAC,AACtB,EACA,QAAS,WACP,OAAO,IAAI,CAAC,CAAC,AACf,CACF,EAEA,IAAI,EAAO,IAAI,EAEf,SAAS,EAAI,CAAK,CAAE,CAAC,CAAE,CAAC,EACtB,IAAI,EAAI,EAAM,CAAC,CAAG,EAAI,EAClB,EAAK,EAAI,CAEb,CAAA,EAAM,CAAC,CAAI,EADF,CAAA,EAAI,CAFb,EAGsB,CAAA,EAAI,CAAA,CAC5B,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,E,E,O,C,W,W,O,C,G,E,E,O,C,K,W,O,C,G,E,E,O,C,S,W,O,C,G,E,E,O,C,Y,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,Q,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,W,W,O,C,GCvCO,IAAI,EAAU,KACV,EAAW,MACX,EAAK,KAAK,EAAE,CACZ,EAAS,EAAK,EACd,EAAY,EAAK,EACjB,EAAM,AAAK,EAAL,EAEN,EAAU,IAAM,EAChB,EAAU,EAAK,IAEf,EAAM,KAAK,GAAG,CACd,EAAO,KAAK,IAAI,CAChB,EAAQ,KAAK,KAAK,CAClB,EAAM,KAAK,GAAG,CACd,EAAO,KAAK,IAAI,CAChB,EAAM,KAAK,GAAG,CAEd,EAAM,KAAK,GAAG,CACd,EAAM,KAAK,GAAG,CACd,EAAM,KAAK,GAAG,CACd,EAAO,KAAK,IAAI,EAAI,SAAS,CAAC,EAAI,OAAO,EAAI,EAAI,EAAI,EAAI,EAAI,GAAK,CAAG,EACrE,EAAO,KAAK,IAAI,CAChB,EAAM,KAAK,GAAG,CAElB,SAAS,EAAK,CAAC,EACpB,OAAO,EAAI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QAAL,CAAgBA,CACjB,C,O,E,A,E,S,C,C,C,I,YAEgB,MAAA,WAEf,OAAO,IAAA,CAAK8zF,OAAL,CAAa9/O,QAAb,CAAsBob,WAA7B,AACD,C,E,E,G,E,E,G,C,G,C,E,O,C,O,C,C,G,E,Q,S,C,C,C,E,a,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,C,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,O,C,K,EExBkB+kO,IAAAA,EAAAA,e,EAanB,SAAA,EACE54U,CADF,CAAA,CAAA,EAGE,IADEgG,EACF,EADEA,IACF,CADQ6yU,EACR,EADQA,WACR,CADqBt9L,EACrB,EADqBA,MACrB,CAD6BkpG,EAC7B,EAD6BA,QAC7B,CAAA,A,C,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,C,EAAA,IAAA,CAAA,GAAA,EAAA,IAAA,CAAA,WAAA,KAAA,GAAA,EAAA,IAAA,CAAA,OAAA,KAAA,GAAA,EAAA,IAAA,CAAA,WAAA,KAAA,GAAA,EAAA,IAAA,CAAA,cAAA,KAAA,GAAA,EAAA,IAAA,CAAA,cAAA,KAAA,GAAA,EAAA,IAAA,CAAA,SAAA,KAAA,GACA,IAAA,CAAKzkP,WAAL,CAAmBA,EAEnB,IAAA,CAAKgG,IAAL,CAAYA,EACZ,IAAA,CAAK6yU,WAAL,CAAmBA,EACnB,IAAA,CAAKt9L,MAAL,CAAcA,EACd,IAAA,CAAKkpG,QAAL,CAAgBA,CACjB,C,O,E,A,E,S,C,C,C,I,kBAEiB,MAAA,WAChB,IAAA,CAAKzkP,WAAL,CAAiB0B,eAAjB,GACA,IAAA,CAAKq3U,QAAL,CAAgB,CAAA,CACjB,C,E,E,G,E,E,G,C,G,C,E,O,C,O,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,O,C,K,EE9BH,I,EAAA,E,C,EAAA,EAAA,W,E,U,C,E,C,Q,C,E,E,E,S,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,G,A,K,I,E,M,A,e,6D,O,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,CAKqBY,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,E,I,C,EAYnB,SAAA,EAAA,CAAA,EAAmE,IAAA,EAArDlzK,EAAqD,EAArDA,OAAqD,CAA5Cj+H,EAA4C,EAA5CA,EAA4C,CAAxCyxS,EAAwC,EAAxCA,eAAwC,CAAA,OAAA,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,EAAA,IAAA,CAAA,GAAA,EAAA,EACjE,EAAA,EAAA,IAAA,CAAA,IAAA,GADiE,UAAA,KAAA,GAAA,EAAA,EAAA,GAAA,kBAAA,KAAA,GAAA,EAAA,EAAA,GAAA,KAAA,KAAA,GAAA,EAAA,EAAA,GAAA,eAAA,KAAA,GAAA,EAAA,EAAA,GAAA,gBALnD,CAAA,GAKmD,EAAA,EAAA,GAAA,gBAJnD,CAAA,GAImD,EAAA,EAAA,GAAA,kBAHjD,CAAA,GAKhB,EAAK35V,EAAL,CAAU,AAA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E,G,A,K,I,E,M,A,e,6D,O,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CAEqBoE,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,E,I,C,EAGnB,SAAA,EAAY38O,CAAZ,MAAyC,E,E,E,EAAA,OAAA,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,EAAA,IAAA,CAAA,G,EAAA,EACvC,EAAA,EAAA,IAAA,CAAA,IAAA,CAAMA,I,EADiC,KAAA,E,C,EAAA,e,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,EAEvC,EAAKq6C,SAAL,CAAiB,IAAI8nT,EAAAA,OAAJ,CAAcniW,EAAO4kE,OAArB,CAA8B,SAACzgK,CAAD,EAAA,OAAU67F,EAAOo4O,eAAP,CAAuBj0U,EAAjC,GAC/C,EAAK24U,aAAL,CAAqB,CAAA,EAHkB,CAIxC,C,O,E,A,E,S,C,C,C,I,SAEuC,MAAA,SAAA,CAAA,EAAA,EAA/BpjM,MAA+B,CACtC,IAAMqjM,EAAiD,CAAC,EAAK,EAAK,EAAK,IAAvE,CADsC,EAEH,IAAA,CAAK1iM,SAFF,CAE9BF,EAF8B,EAE9BA,OAF8B,CAErB8iM,EAFqB,EAErBA,aAFqB,CAItC,OAAO,IAAIC,EAAAA,wBAAAA,CAAyB,CAClCz+V,GAAE,aAAA,MAAA,CAAe,IAAA,CAAKA,EAApB,EACF0lB,KAAMg2I,EACN3lJ,QAAS,EAETqoJ,KAAM,CAAA,EACNC,SAAU,CAAA,EACVqgM,YAAa,SAAC35G,CAAD,EAAA,OAAQA,EAAGkzG,OAAH,CAAW9/O,QAAX,CAAoBob,WAA5B,AAAA,EACborC,aAAc,SAAComF,CAAD,EAAA,MAAQ,AAAA,CAAA,EAAA,EAAA,WAAA,AAAA,EAAYA,EAAG9tO,KAAH,CAASwhJ,SAArB,GAAmC6lM,CAA3C,EACdK,eAAgB,SAAC55G,CAAD,EAAA,MACd,AAAA,CAAA,EAAA,EAAA,WAAA,AAAA,EAAYA,EAAG9tO,KAAH,CAAS2nV,YAArB,GAAsC,AAAA,CAAA,EAAA,EAAA,WAAA,AAAA,EAAY75G,EAAG9tO,KAAH,CAASwhJ,SAArB,GAAmC6lM,CAD3D,EAEhBO,UAAW,SAAC95G,CAAD,EAAA,OAAQA,EAAG9tO,KAAH,CAAS6nV,iBAAT,CAA6B/5G,EAAG9tO,KAAH,CAAS2hJ,mBAAtC,EAA6D,CAArE,EACXmmM,eAAgB,SAACh6G,CAAD,EAAA,OAAQA,EAAG9tO,KAAH,CAAS6nV,iBAAT,EAA8B,EAAtC,EAChB95L,WAAY,CACVixB,UAAW,CAAA,EACXN,MAAO,CAAA,CAFG,EAKZ5zB,eAAgB,CAAE5iD,IAAKq/O,CAAP,EAEhBjjM,YAAa,IAAbA,AApBkC,EAsBrC,C,E,E,G,E,E,G,CAnCyC89L,EAAAA,EAAAA,O,C,C,E,O,C,O,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,O,c,C,E,O,C,c,C,W,C,E,I,W,O,E,W,A,C,G,O,c,C,E,O,C,iB,C,W,C,E,I,W,O,E,c,A,C,G,O,c,C,E,O,C,a,C,W,C,E,I,W,O,E,U,A,C,G,O,c,C,E,O,C,uB,C,W,C,E,I,W,O,E,O,A,C,G,O,c,C,E,O,C,yB,C,W,C,E,I,W,O,E,O,A,C,G,O,c,C,E,O,C,iB,C,W,C,E,I,W,O,E,O,A,C,G,O,c,C,E,O,C,0B,C,W,C,E,I,W,O,E,O,A,C,G,O,c,C,E,O,C,mB,C,W,C,E,I,W,O,E,O,A,C,G,O,c,C,E,O,C,kB,C,W,C,E,I,W,O,E,O,A,C,G,O,c,C,E,O,C,2B,C,W,C,E,I,W,O,E,O,A,C,G,O,c,C,E,O,C,c,C,W,C,E,I,W,O,E,W,A,C,G,I,E,E,SEF5C,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UAGA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,U,C,E,O,C,c,C,E,O,C,W,C,K,E,E,O,C,W,CEV2B,CACzBtrQ,KAAM,EACNmqE,QAAS,EACTC,SAAU,EACVC,KAAM,CAJmB,E,E,O,C,c,CAOG,E,E,O,C,U,CACJ,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,O,C,K,E,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SEkC1B,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,E,O,I,C,G,G,O,qB,C,C,I,E,O,qB,C,G,G,C,E,E,M,C,S,C,E,O,O,wB,C,E,G,U,A,E,E,E,I,C,K,C,E,E,C,O,C,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,M,C,E,A,a,O,S,Q,G,C,Q,G,C,S,C,C,C,C,C,E,I,E,A,S,C,C,C,E,K,C,O,S,C,c,C,I,C,E,I,A,O,C,E,E,E,I,O,C,E,E,G,G,G,I,E,O,wB,C,E,U,A,E,G,C,E,G,C,I,C,G,E,K,C,G,E,E,G,E,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,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AAA,A,S,C,E,G,A,a,O,Q,A,M,C,C,O,Q,C,C,C,G,M,O,C,I,C,E,A,S,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,E,E,E,C,I,E,E,E,W,E,M,C,E,E,E,kB,A,G,E,M,C,C,K,C,C,E,C,K,C,E,M,C,C,I,A,C,E,E,S,C,E,M,C,E,E,C,C,C,M,A,U,wI,C,I,E,E,E,C,E,E,C,E,M,C,E,W,E,C,C,O,Q,C,E,E,E,W,I,E,E,I,G,O,E,E,I,C,C,E,E,S,C,E,E,C,E,E,C,E,E,W,G,C,G,A,M,E,M,E,E,M,E,Q,C,G,E,M,C,C,C,C,EACIzjS,EAAKmrG,WAAL,CAAiBnK,YAAjB,IADJ,GAAA,CAChB,IAAA,EAAA,CAAA,GAAA,CAAA,AAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,IAAA,EACExpB,AADmD,EAAA,KAAA,CAC7CgsB,mBAAN,CAA0BxjG,EAFZ,CAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAIjB,MACCA,EAAKmrG,WAAL,CAAiB3H,mBAAjB,CAAqCxjG,GAG1C,C,E,C,I,qBAEoB,MAAA,WAEnB,IAAM+jS,EAA4BtsU,AADrB,IAAA,CAAKusU,aAAL,GAC0BC,SAAL,CAAe,IAAA,CAAKC,YAAL,CAAkB,IAAA,CAAK7kW,KAAvB,GAEjD,GAAI,CAAC0kW,GAAU,CAACA,EAAOhiN,QAAP,CAAgB19I,MAAhC,CACE,MAAO,EAAP,CAGF,IAAMi+V,EAAgB,CACpBG,YAAa,CACXr3E,UAAW,IAAA,CAAK/rR,KAAL,CAAW+rR,SADX,CAEX9oH,cAAe,CAAA,CAFJ,EAIb,gBAAiB,CACfA,cAAe,CAAA,CADA,EAGjB,kBAAmB,CACjB8oH,UAAW,IAAA,CAAK/rR,KAAL,CAAW+rR,SAAtBA,AADiB,CARC,EA6DtB,MAhDI,AAA8B,SAA9B,IAAA,CAAK/rR,KAAL,CAAW0/V,cAAX,CACFuD,CAAa,CAAC,cAAd,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,CAAuC,OAEhCmmM,CACR,C,G,E,Q,S,C,C,C,E,a,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,O,c,C,E,O,C,a,C,M,C,C,G,O,c,C,E,O,C,kB,C,W,C,E,I,W,O,E,e,A,C,G,O,c,C,E,O,C,a,C,W,C,E,I,W,O,E,U,A,C,G,O,c,C,E,O,C,mB,C,W,C,E,I,W,O,E,gB,A,C,G,O,c,C,E,O,C,gB,C,W,C,E,I,W,O,E,a,A,C,G,O,c,C,E,O,C,Y,C,W,C,E,I,W,O,E,S,A,C,G,O,c,C,E,O,C,a,C,W,C,E,I,W,O,E,U,A,C,G,O,c,C,E,O,C,gB,C,W,C,E,I,W,O,E,a,A,C,G,O,c,C,E,O,C,uB,C,W,C,E,I,W,O,E,oB,A,C,G,O,c,C,E,O,C,mB,C,W,C,E,I,W,O,E,gB,A,C,G,O,c,C,E,O,C,c,C,W,C,E,I,W,O,E,W,A,C,G,O,c,C,E,O,C,gB,C,W,C,E,I,W,O,E,a,A,C,G,O,c,C,E,O,C,gB,C,W,C,E,I,W,O,E,a,A,C,G,O,c,C,E,O,C,gB,C,W,C,E,I,W,O,E,a,A,C,G,O,c,C,E,O,C,qB,C,W,C,E,I,W,O,E,kB,A,C,G,O,c,C,E,O,C,kB,C,W,C,E,I,W,O,E,e,A,C,G,O,c,C,E,O,C,oB,C,W,C,E,I,W,O,E,iB,A,C,G,O,c,C,E,O,C,iB,C,W,C,E,I,W,O,E,c,A,C,G,O,c,C,E,O,C,8B,C,W,C,E,I,W,O,E,2B,A,C,G,O,c,C,E,O,C,2B,C,W,C,E,I,W,O,E,wB,A,C,G,O,c,C,E,O,C,2B,C,W,C,E,I,W,O,E,wB,A,C,G,O,c,C,E,O,C,2B,C,W,C,E,I,W,O,E,wB,A,C,G,O,c,C,E,O,C,+B,C,W,C,E,I,W,O,E,4B,A,C,G,O,c,C,E,O,C,kC,C,W,C,E,I,W,O,E,+B,A,C,G,O,c,C,E,O,C,oC,C,W,C,E,I,W,O,E,iC,A,C,G,O,c,C,E,O,C,0B,C,W,C,E,I,W,O,E,uB,A,C,G,O,c,C,E,O,C,4B,C,W,C,E,I,W,O,E,yB,A,C,G,O,c,C,E,O,C,6B,C,W,C,E,I,W,O,E,0B,A,C,G,O,c,C,E,O,C,W,C,W,C,E,I,W,O,E,Q,A,C,G,O,c,C,E,O,C,sB,C,W,C,E,I,W,O,E,mB,A,C,G,O,c,C,E,O,C,kB,C,W,C,E,I,W,O,E,e,A,C,G,O,c,C,E,O,C,mB,C,W,C,E,I,W,O,E,gB,A,C,G,O,c,C,E,O,C,gB,C,W,C,E,I,W,O,E,a,A,C,G,O,c,C,E,O,C,gB,C,W,C,E,I,W,O,E,a,A,C,G,O,c,C,E,O,C,W,C,W,C,E,I,W,O,E,O,A,C,G,E,O,C,K,C,K,E,I,E,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SEnGD,E,C,EAAA,EAAA,W,E,U,C,E,C,Q,C,EA2CA,EAAA,A,S,C,E,G,G,E,U,C,O,E,G,A,O,G,A,W,E,I,A,Y,O,E,M,C,Q,C,E,I,E,I,G,G,E,G,C,G,O,E,G,C,G,I,E,C,E,E,O,c,E,O,wB,C,I,I,K,E,G,O,S,C,c,C,I,C,E,G,C,I,E,E,O,wB,C,E,G,I,C,G,C,E,G,E,E,G,A,E,O,c,C,E,E,G,C,C,E,C,C,C,E,A,C,O,E,O,C,E,G,E,G,C,E,G,C,EAAA,EAAA,U,S,I,G,A,Y,O,Q,O,K,I,E,I,Q,O,E,W,O,C,E,C,C,E,O,C,K,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,uB,CE0LO,SAAiCsmB,CAAjC,CAAsDC,CAAtD,EAML,MAL6B,CAC1BD,AAAAA,CAAAA,CAAS,CAAC,EAAV,CAAeC,CAAS,CAAC,EAA1B,AAA0B,EAAM,EAC/BD,AAAAA,CAAAA,CAAS,CAAC,EAAV,CAAeC,CAAS,CAAC,EAA1B,AAA0B,EAAM,EAFlC,AAMD,E,E,O,C,e,C,K,EAzRD,IAAA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,S,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,O,A,S,C,E,G,M,O,C,G,O,E,E,E,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,E,I,E,I,A,W,M,A,U,uI,G,C,S,E,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,CAsBA,IAAM2qgB,EAAyC,CAC7Cn43B,KAAM,oBACN2iJ,SAAU,EAAVA,AAF6C,EAIzCy1uB,EAA8B,EAApC,CASa/juB,EAAAA,e,E,E,S,Q,E,E,A,C,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,C,E,I,C,G,EACkB,E,C,C,EAAA,oBAAA,IAAA,C,O,c,CAAA,IAAA,C,E,C,M,E,W,C,E,a,C,E,S,C,C,G,AAAA,IAAA,A,C,E,C,C,C,O,E,C,C,I,YAEnBp0J,MAAAA,SAAAA,C,EACR,OAAOk43B,CACR,C,E,C,I,cAEWl43B,MAAAA,SAAAA,C,EACV,OAAOm43B,CACR,C,E,C,I,qBAEkBn43B,MAAAA,SAAAA,C,SACjB,AAAIA,AAAiC,IAAjCA,EAAM8jW,eAAN,CAAsB9+V,MAAtB,CACKhF,EAAMwjB,IAAN,CAAWk/H,QAAX,CAAoB1iJ,EAAM8jW,eAAN,CAAsB,EAA1C,CAAP,CAEK,IACR,C,E,C,I,sBAEmB9jW,MAAAA,SAAAA,C,EAClB,IAAMkxG,EAAU,IAAA,CAAKu9Q,kBAAL,CAAwBzuX,UACxC,AAAIkxG,EACKA,EAAQ+E,QAAf,CAEK,IACR,C,E,C,I,yCAEsCj2G,MAAAA,SAAAA,C,EAAwD,IACrF0iJ,EAAa1iJ,EAAMwjB,IADkE,CACrFk/H,QADqF,CAG7F,MAAO,CACL3iJ,KAAM,oBACN2iJ,SAHuB1iJ,EAAM8jW,eAAN,CAAsBv9V,GAAtB,CAA0B,SAACmoX,CAAD,EAAA,OAAmBhsO,CAAQ,CAACgsO,EAA5B,AAAA,EAC5C,CAIR,C,E,C,I,mBAE8B,MAAA,WAC7B,OAAO,IAAA,CAAKC,cAAZ,AACD,C,E,C,I,mBAEiD,MAAA,SAAA,CAAA,EAAA,IAA/BC,EAA+B,EAA/BA,SAA+B,CAChD,IAAA,CAAKD,cAAL,CAAoBhpX,IAApB,CAAyBipX,EAC1B,C,E,C,I,qBAE0B,MAAA,WACzB,IAAA,CAAKD,cAAL,CAAsB,EAAtB,AACD,C,E,C,I,oBAEiB3uX,MAAAA,SAAAA,C,EAIhB,OAAO0kW,AAHQ,IAAA,CAAKE,SAAL,CAAe5kW,GAGhB0iJ,QAAP,CAAgBhF,IAAhB,CAAqB,SAACx4I,CAAD,EAAA,OAAOA,EAAE4hF,UAAF,EAAgB5hF,AAA2B,cAA3BA,EAAE4hF,UAAF,CAAa+nS,SAAb,AAAvB,EAC7B,C,E,C,I,oBAEiBC,MAAAA,SAAAA,C,CAAe9uX,C,EAC/B,GAAI,CAAC8uX,EAAM9pX,MAAX,CAAmB,MAAO,CAAA,EAC1B,IAAM+pX,EAAiB,AAAA,CAAA,EAAA,EAAA,gBAAA,AAAA,EAAiBD,GAAOvoX,GAAxB,CAA4B,SAAnD,CAAA,EAAmD,OAAA,EAAGyyB,KAAH,AAAA,GAC7Ci2V,EAAgB,AAAA,CAAA,EAAA,EAAA,oBAAA,AAAA,EAAqBH,GAAOvoX,GAA5B,CACpB,SADF,CAAA,EACE,OAAoBugF,AAApB,EAAGA,UAAH,CAA+BuiE,YAA/B,AAAA,GAEI8lO,EAAgB,IAAI/kX,IAAJ,EAAA,CAAA,MAAA,CAAA,EAAY2kX,GAAZ,EAA+BE,KACrD,OAAOjvX,EAAM8jW,eAAN,CAAsB54L,IAAtB,CAA2B,SAAClyI,CAAD,EAAA,OAAWm2V,EAAc/hW,GAAd,CAAkB4L,EAA7B,EACnC,C,E,C,I,gBAEak4E,MAAAA,SAAAA,C,EAA2B,IAC/B+E,EAAa/E,EAAb+E,QAD+B,OAIvC,AADoBA,AAAkB,YAAlBA,EAASl2G,IAAT,EAA+Bk2G,AAAkB,iBAAlBA,EAASl2G,IAAT,CAG1C,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAOmxG,GAGTA,CACR,C,E,C,I,sBAGCk+Q,MAAAA,SAAAA,C,CACA1sO,C,EAKA,IAAMxxC,EACJm+Q,AAAgC,YAAhCA,AAHkCD,EAGXrvX,IAAvB,CAHkCqvX,EAK9B,CACErvX,KAAM,UACN+mF,WAAY,CAAA,EACZmvB,SAR4Bm5Q,CAK9B,EAMAE,EAAgB,IAAA,CAAKC,aAAL,CAAmBr+Q,GACnCy8C,EAAc,IAAI4H,EAAAA,0BAAAA,CAA2B7S,GAChDsN,UADiB,CACNs/N,GACXhoD,SAFiB,GAIpB,MAAO,CACL35K,YAAAA,EACA6hO,SAAU,aACVC,YAAa,CACXC,eAAgB,CAAC/hO,EAAYjL,QAAZ,CAAqB19I,MAArB,CAA8B,EAA/C0qX,AADW,CAHR,CAOR,C,E,C,I,2BAIChtO,MAAAA,SAAAA,CAAAA,CAAAA,C,EACmB,IAAA,EAFPitO,EAEO,EAFjBjtO,QAEiB,CACfiL,EAAc,IAAI4H,EAAAA,0BAAAA,CAA2B7S,GAC3Cr/F,EAAesqG,EAAY25K,SAAZ,GAAwB5kL,QAAxB,CAAiC19I,MAAtD,CACM4qX,EAAiB,EAAvB,CAHmB,EAAA,A,S,C,E,G,A,a,O,Q,A,M,C,C,O,Q,C,C,C,G,M,O,C,I,C,E,E,E,E,C,I,E,E,E,W,E,M,C,E,E,E,kB,A,G,E,M,C,C,K,C,C,E,C,K,C,E,M,C,C,I,A,C,E,E,S,C,E,M,C,E,E,C,C,C,M,A,U,wI,C,I,E,E,E,C,E,E,C,E,M,C,E,W,E,C,C,O,Q,C,E,E,E,W,I,E,E,I,G,O,E,E,I,C,C,E,E,S,C,E,E,C,E,E,C,E,E,W,G,C,G,A,M,E,M,E,E,M,E,Q,C,G,E,M,C,C,C,C,EAIGD,GAJH,GAAA,CAInB,IAAA,EAAA,CAAA,GAAA,CAAA,AAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,IAAA,EAAqC,CAAA,IAA1Bz+Q,EAA0B,EAAA,KAAA,CAC3BpqB,EAAyBoqB,EAAzBpqB,UAD2B,CACfmvB,EAAa/E,EAAb+E,QADe,CAGnC03C,EAAcA,EAAYqC,UAAZ,C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,G,E,M,C,C,C,O,E,E,E,I,E,E,I,A,W,M,A,U,4I,G,C,S,E,C,E,O,A,S,C,E,G,M,O,C,G,O,E,E,E,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,E,I,E,I,A,W,M,A,U,uI,G,C,S,E,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,CAiGO,SAASi6O,EAAWr5N,CAApB,CAAgCC,CAAhC,CAA4CE,CAA5C,CAAwDC,CAAxD,EACL,IAAM8hL,EAAKliL,EAAKG,EACVgiL,EAAKliL,EAAKG,EAChB,OAAOv/I,KAAKm5G,IAAL,CAAUkoN,EAAKA,EAAKC,EAAKA,EACjC,CAEM,SAASo3C,EAAIl3X,CAAb,CAAwBoD,CAAxB,CAAmC07L,CAAnC,EACL,OAAO17L,EAAI07L,EAAQ9+L,EAAK,CAAA,EAAI8+L,CAAAA,CAC7B,CAiPM,SAAS8zL,EAAqBJ,CAA9B,EAQL,OANGA,GACCA,EACGx2U,MADH,CACU,SAAC+9U,CAAD,EAAA,OAAUA,EAAKjyB,OAAL,EAAgBiyB,AAAqC,eAArCA,EAAK9vU,MAAL,CAAYugC,UAAZ,CAAuB+nS,SAAvB,AAA1B,GACPtoX,GAFH,CAEO,SAAC8vX,CAAD,EAAA,OAAUA,EAAK9vU,MAAf,AAAA,IACT,EALF,AAQD,CA2ED,SAAS+x0B,EACPjnwB,CADF,CAEEmmQ,CAFF,CAGEnuO,CAHF,EAOE,IAAK,IAHLq2M,EACqB,UAAA,MAAA,CAAA,GAAA,AAAA,KAAA,IAAA,SAAA,CAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CADY,WAE3B+D,EAAc,EAApB,CACSlrT,EAAI,EAAGA,EAAI84E,EAAYrsH,MAAhC,CAAwCuzC,IAAK,CAC3C,IAAM22B,EAAWmiD,CAAW,CAAC94E,EAA7B,CACAkrT,EAAY99V,IAAZ,CAAiB,CA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ACjC,EAAY,MAAM,CAAG,EACrB,MAAM,AAAI,MAAM,yDAMpB,OAAO,EAJI,CACP,KAAM,aACN,YAAa,CACjB,EACqB,EAAY,EACrC,CAiUO,SAAS,EAAS,CAAG,EACxB,MAAO,CAAC,MAAM,IAAQ,AAAQ,OAAR,GAAgB,CAAC,MAAM,OAAO,CAAC,EACzD,CAYO,SAAS,EAAS,CAAK,EAC1B,MAAO,CAAC,CAAC,GAAS,EAAM,WAAW,GAAK,MAC5C,C,E,E,O,C,U,W,O,C,G,E,E,O,C,Q,W,O,C,G,E,E,O,C,a,W,O,C,G,E,E,O,C,W,W,O,C,E,G,E,Q,S,C,C,C,E,E,E,O,E,E,E,O,C,U,W,O,A,E,S,O,A,G,E,S,E,S,I,E,E,S,E,E,O,C,E,G,E,Q,S,C,C,C,E,E,E,O,E,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,sB,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,yB,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,mB,W,O,A,E,S,gB,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,c,W,O,A,E,S,W,A,G,E,E,O,C,c,W,O,A,E,S,W,A,G,E,E,O,C,e,W,O,A,E,S,Y,A,G,E,E,O,C,oB,W,O,A,E,S,iB,A,G,E,E,O,C,oB,W,O,A,E,S,iB,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,sB,W,O,A,E,S,mB,A,G,E,E,O,C,0B,W,O,A,E,S,uB,A,G,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SIrmBqBg3B,EAAAA,SAAAA,CAAAA,EA+BnB,SAAA,IAYQ,IAAA,EAAA,EAAA,UAAA,MAAA,CAAA,GAAA,AAAA,KAAA,IAAA,SAAA,CAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAJ,CAAA,EAVFr1W,EAUM,EAVNA,KAUM,CATN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QC,GAAAA,EAAIC,GAAAA,EAAI7uH,EAFxC,AAACowH,CAAAA,EAAKpB,CAAAA,EAAMF,EAE+BA,IAAAA,EAAKC,KAAAA,EAAMC,GAAAA,EAAIoB,GAAAA,CAA7D,CACR,C,G,E,Q,S,C,C,C,E,a,S,E,C,E,O,A,S,C,E,G,M,O,C,G,O,E,E,E,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,E,I,A,S,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,E,I,A,W,M,A,U,uI,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,E,O,I,C,G,G,O,qB,C,C,I,E,O,qB,C,G,G,C,E,E,M,C,S,C,E,O,O,wB,C,E,G,U,A,E,E,E,I,C,K,C,E,E,C,O,C,C,S,E,C,E,I,I,E,E,E,U,M,C,I,C,I,E,A,M,S,C,E,C,S,C,E,C,C,C,C,E,E,E,O,G,C,G,O,C,S,C,E,E,E,E,C,C,E,C,G,O,yB,C,O,gB,C,E,O,yB,C,I,E,O,I,O,C,S,C,E,O,c,C,E,E,O,wB,C,E,G,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,C,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,0B,C,K,EE/FYh7F,IAAAA,EAAAA,e,E,EAGX,SAAA,EAAYjT,CAAZ,EAAkD,A,C,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,C,EAAA,IAAA,CAAA,GAAA,EAAA,IAAA,CAAA,oBAAA,KAAA,GAChD,IAAA,CAAKA,iBAAL,CAAyBA,CAC1B,C,O,E,C,C,I,YAEW,MAAA,WACV,OAAO,IAAA,CAAKA,iBAAZ,AACD,C,E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G,E,O,C,U,C,K,E,I,E,E,S,E,E,S,E,E,S,E,E,S,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,E,O,A,S,C,E,G,M,O,C,G,O,E,E,E,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,E,I,E,I,A,W,M,A,U,uI,G,C,S,E,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CEpYY5zH,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,YACD9vJ,MAAAA,SAAAA,C,EAA6D,IAAA,EAAA,EAAA,IAAA,CAC/Dk2X,EAAU,EAAhB,CAEQ1yW,EAA+BxjB,EAA/BwjB,IAH6D,CAGvDugV,EAAyB/jW,EAAzB+jW,oBAHuD,CAI7DrhN,EAAal/H,EAAbk/H,QAJ6D,CAK/DosO,EAAQ/qB,GAAwBA,EAAqB+qB,KAA3D,CACMF,EAAY7qB,GAAwBA,EAAqB6qB,SAA/D,CANqE,EAAA,A,S,C,E,G,A,a,O,Q,A,M,C,C,O,Q,C,C,C,G,M,O,C,I,C,E,E,E,E,C,I,E,E,E,W,E,M,C,E,E,E,kB,A,G,E,M,C,C,K,C,C,E,C,K,C,E,M,C,C,I,A,C,E,E,S,C,E,M,C,E,E,C,C,C,M,A,U,wI,C,I,E,E,E,C,E,E,C,E,M,C,E,W,E,C,C,O,Q,C,E,E,E,W,I,E,E,I,G,O,E,E,I,C,C,E,E,S,C,E,E,C,E,E,C,E,E,W,G,C,G,A,M,E,M,E,E,M,E,Q,C,G,E,M,C,C,C,C,EAQjD5uX,EAAM8jW,eAR2C,EAAA,GAAA,CAQrE,IAAA,EAAA,CAAA,GAAA,CAAA,AAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,IAAA,EAA2C,CAAA,IAAhC9qU,EAAgC,EAAA,KAAA,CACzC,GAAIA,EAAQ0pH,EAAS19I,MAArB,CAA6B,CAAA,IACnBixG,EAAaysC,CAAQ,CAAC1pH,EADH,CACnBi9E,QADmB,CAE3BigR,EAAQvwX,IAAR,CAAA,KAAA,CAAAuwX,EAAO,EAAS,AAAA,CAAA,EAAA,EAAA,yBAAA,AAAA,EAA0BjgR,EAAUj9E,IACrD,MACCpwB,QAAQgvF,IAAR,CAAA,uCAAA,MAAA,CAAoD5+D,GAEvD,CAfoE,CAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAkBrE,GAAI81V,GAASA,EAAM9pX,MAAf,EAAyB4pX,EAAW,CAGtC,IAHsC,EAGhCuX,EAAgB,CAFK,AAAA,CAAA,EAAA,EAAA,2BAAA,AAAA,EAA4BrX,IAEVA,EAAMpxO,IAAN,CAAW,SAAC24O,CAAD,EAAA,MAAU,CAACA,EAAKjyB,OAAhB,AAAA,GAGxD,GACE+hC,GACA,CAACA,EAAc5/U,MAAd,CAAqB0vD,QAArB,CAA8Bl2G,I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8jW,eAArC,CACMwjC,EAAa,AAAA,CAAA,EAAA,EAAA,mBAAA,AAAA,EAAoBh/W,EAAMwmW,KAA1B,CACfzrB,CAAAA,EAAuBr+V,MAAvB,EAAiCsiY,GACnC,IAAA,CAAKG,eAAL,CAAqB,qBAAsBznY,EAAOsnY,EAAYh/W,EAEjE,C,E,C,I,YAESA,MAAAA,SAAAA,C,EACR,IAAMwmW,EAASxmW,GAASA,EAAMwmW,KAAhB,EAA0B,EAAxC,OAGA,AAAIiZ,AADkB,AAAA,CAAA,EAAA,EAAA,oBAAA,AAAA,EAAqBjZ,GACzB9pX,MAAlB,CACS,OAEF,IACR,C,E,C,E,A,E,S,C,G,G,E,E,G,CArQ6BovJ,EAAAA,EAAAA,eAAAA,C,C,E,O,C,U,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,gB,C,K,EE5BhC,IAAA,EAAA,EAAA,EAAA,U,E,E,SAEA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,S,E,E,S,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,G,A,K,I,E,M,A,e,6D,O,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,CAsBaC,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,E,I,C,E,S,I,I,G,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,I,I,E,U,M,C,E,A,M,G,E,E,E,E,I,C,C,E,C,S,C,E,C,O,E,E,E,E,I,C,K,C,E,C,I,C,C,M,C,K,sB,K,GAEG,EAAA,EAAA,GAAA,cAAA,CAAA,G,C,C,O,E,C,C,I,YAEJr0J,MAAAA,SAAAA,C,EAA6D,IAAA,EAAA,IAAA,CAC/Dk2X,EAAU,EAAhB,CACM7yB,EAAyBrjW,EAAM8jW,eAArC,CAEQC,EAAyB/jW,EAAzB+jW,oBAJ6D,CAK/D+qB,EAAQ/qB,GAAwBA,EAAqB+qB,KAA3D,CACMF,EAAY7qB,GAAwBA,EAAqB6qB,SAA/D,CAGA,GACEE,GACAA,EAAM9pX,MADN,EAEA4pX,GACAvrB,AAAkC,IAAlCA,EAAuBr+V,MAAvB,EACA,CAAC,IAAA,CAAKgkY,WALR,CAME,CACA,IAAM7C,EAAgBrX,EAAMpxO,IAAN,CAAW,SAAC24O,CAAD,EAAA,MAAU,CAACA,EAAKjyB,OAAhB,AAAA,GAGjC,GACE+hC,GACAA,EAAc5/U,MAAd,CAAqBugC,UAArB,CAAgCz+B,KADhC,EAEA89U,EAAc5/U,MAAd,CAAqBugC,UAArB,CAAgCz+B,KAAhC,CAAsC/5C,QAAtC,CAA+C,WAC/CtO,EAAM8jW,eAAN,CAAsBx1V,QAAtB,CAA+B63X,EAAcntW,KAA7C,EACA,CACA,IAAIqtW,EAAyD,KACzD7O,EAAsB,EAA1B,CACM8O,EAAiB,AAAA,CAAA,EAAA,EAAA,KAAA,AAAA,EAAM1X,GAuB7B,GArBA,AAAA,CAAA,EAAA,EAAA,+BAAA,AAAA,EACEuX,EAAc5/U,MAAd,CAA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,EACZ,KAAK,IAAjB,GAAsB,CAAA,EAAU,CAAC,CAAA,EACrC,IAAI,EAAM,EAAA,OAAA,CAAe,GACrB,EAAK,AAAA,CAAA,CAAG,CAAC,EAAE,CAAG,CAAG,CAAC,EAAE,AAAF,EAAM,EACxB,EAAK,AAAA,CAAA,CAAG,CAAC,EAAE,CAAG,CAAG,CAAC,EAAE,AAAF,EAAM,EAC5B,OAAO,EAAA,KAAA,CAAgB,CAAC,EAAG,EAAE,CAAE,EAAQ,UAAU,CAAE,EACvD,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,a,C,K,EElCA,IAAA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,SAEA,EAAA,EAAA,EAAA,U,E,E,S,E,E,S,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,G,A,K,I,E,M,A,e,6D,O,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,CAaavE,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C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AAI,EAAkB,AAAmB,OAAnB,EAAM,QAAQ,EAAa,AAAwB,UAAxB,EAAM,QAAQ,CAAC,IAAI,CAAc,OAAO,EAAM,QAAQ,CAAC,WAAW,CAC7H,GAAI,AAAe,UAAf,EAAM,IAAI,CAAc,OAAO,EAAM,WAAW,CACpD,GAAI,MAAM,OAAO,CAAC,IAAU,EAAM,MAAM,EAAI,GAAK,AAAoB,KAAA,IAApB,CAAK,CAAC,EAAE,CAAC,MAAM,EAAkB,AAAoB,KAAA,IAApB,CAAK,CAAC,EAAE,CAAC,MAAM,CAAgB,OAAO,CAExH,OAAM,AAAI,MAAM,qDACpB,C,E,E,O,C,W,W,O,C,G,E,Q,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,S,C,K,EEpBA,IAAA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,SAEA,EAAA,EAAA,EAAA,U,E,E,SAEA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,S,E,E,S,E,E,S,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,G,A,K,I,E,M,A,e,6D,O,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,CAgBaE,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,E,I,C,E,S,I,I,G,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,I,I,E,U,M,C,E,A,M,G,E,E,E,E,I,C,C,E,C,S,C,E,C,O,E,E,E,E,I,C,K,C,E,C,I,C,C,M,C,K,uB,K,G,E,E,G,sB,K,G,E,E,G,qB,K,G,E,E,G,U,K,GAKE,EAAA,EAAA,GAAA,aAAA,CAAA,GAEoB,EAAA,EAAA,GAAA,iCAAA,SAACr+C,CAAD,EAA6D,IACpFysC,EADoF,AACvEzsC,CAAAA,GAAY,CAAA,CAAA,EAAzBysC,QADoF,OAE5F,EAAIl+I,MAAMC,OAAN,CAAci+I,IAAaA,AAAoB,IAApBA,EAAS19I,MAAT,EAGtBjF,AAAS,UAHoC,AAEnC,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAQ2iJ,CAAQ,CAAC,EAAjB,EAAT3iJ,IAF4C,AAMvD,GAEyB,EAAA,EAAA,GAAA,0BAAA,SAACyzY,CAAD,EACxB,IAAMC,EACJD,GACAA,EAAe1sT,UADf,EAEAtiF,MAAMC,OAAN,CAAc+uY,EAAe1sT,UAAf,CAA0B4vS,eAAxC,GACA8c,EAAe1sT,UAAf,CAA0B4vS,eAA1B,CAA0C,EAJ5C,CAMA,GAAI,AAA+B,UAA/B,OAAO+c,EACT,OAAO,KAET,IAAMC,EAAkB,EAAKC,kBAAL,CAAwB3uY,MAAhD,CACM4uY,EAAgB,AAACH,CAAAA,EAAsBC,EAAkB,CAAA,EAAKA,EACpE,OAAO,EAAKC,kBAAL,CAAwBj2P,IAAxB,CAA6B,SAACtlF,CAAD,QAClC,EAAK5zD,MAAMC,OAAN,CAAc2zD,EAAE0uB,UAAF,CAAa4vS,eAA3B,GAGEt+T,EAAE0uB,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O,EAAM,WAAW,CACpD,GAAI,MAAM,OAAO,CAAC,IAAU,EAAM,MAAM,EAAI,GAAK,AAAoB,KAAA,IAApB,CAAK,CAAC,EAAE,CAAC,MAAM,EAAkB,AAAoB,KAAA,IAApB,CAAK,CAAC,EAAE,CAAC,MAAM,CAAgB,OAAO,CAExH,OAAM,AAAI,MAAM,qDACpB,CAcA,SAAS,EAAU,CAAM,EACrB,GAAI,CAAC,EAAQ,MAAM,AAAI,MAAM,sBAG7B,GAAI,AAAgB,YAAhB,EAAO,IAAI,EAAkB,AAAoB,OAApB,EAAO,QAAQ,CAAW,OAAO,EAAO,QAAQ,CAAC,WAAW,CAG7F,GAAI,EAAO,WAAW,CAAE,OAAO,EAAO,WAAW,CAGjD,GAAI,MAAM,OAAO,CAAC,GAAS,OAAO,CAElC,OAAM,AAAI,MAAM,8DACpB,CAyIA,SAAS,EAAQ,CAAO,CAAE,CAAI,EAC1B,GAAI,CAAC,EAAS,MAAM,AAAI,MAAM,AAAC,CAAA,GAAQ,SAAA,EAAa,gBAEpD,GAAI,EAAQ,QAAQ,EAAI,EAAQ,QAAQ,CAAC,IAAI,CAAE,OAAO,EAAQ,QAAQ,CAAC,IAAI,CAE3E,GAAI,EAAQ,IAAI,CAAE,OAAO,EAAQ,IAAI,AACrC,OAAM,AAAI,MAAO,AAAA,CAAA,GAAQ,SAAA,EAAa,cAC1C,C,E,E,O,C,W,W,O,C,G,E,E,O,C,Y,W,O,C,G,E,E,O,C,U,W,O,C,G,E,Q,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,U,C,K,EE/LA,IAAA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,S,E,E,S,E,E,SAIA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,S,E,E,S,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,G,A,K,I,E,M,A,e,6D,O,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,CAeazE,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,E,I,C,E,S,I,I,G,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,I,I,E,U,M,C,E,A,M,G,E,E,E,E,I,C,C,E,C,S,C,E,C,O,E,E,E,E,I,C,K,C,E,C,I,C,C,M,C,K,sB,K,G,E,E,G,wB,K,GAGG,EAAA,EAAA,GAAA,cAAA,CAAA,GAEmB,EAAA,EAAA,GAAA,iCAAA,SAAC15C,CAAD,EAA6D,IACpFysC,EADoF,AACvEzsC,CAAAA,GAAY,CAAA,CAAA,EAAzBysC,QADoF,OAE5F,EAAIl+I,MAAMC,OAAN,CAAci+I,IAAaA,AAAoB,IAApBA,EAAS19I,MAAT,EAGtBjF,AAAS,UAHoC,AAEnC,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAQ2iJ,CAAQ,CAAC,EAAjB,EAAT3iJ,IAF4C,AAMvD,GAEe,EAAA,EAAA,GAAA,gBAAA,WAAA,OAAM,EAAKo6Y,WAAX,AAAA,G,C,C,O,E,C,C,I,YAENn6Y,MAAAA,SAAAA,C,EACR,IAAM40Y,EACJ,IAAA,CAAKwF,qBAAL,EAA8B,IAAA,CAAK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E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,M,C,E,A,a,O,S,Q,G,C,Q,G,C,S,C,C,C,C,C,E,I,E,A,S,C,C,C,E,K,C,O,S,C,c,C,I,C,E,I,A,O,C,E,E,E,I,O,C,E,E,G,G,G,I,E,O,wB,C,E,U,A,E,G,C,E,G,C,I,C,G,E,K,C,G,E,E,G,E,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,a,C,K,EE5CaG,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,sBACSjsI,MAAAA,SAAAA,C,CAA2BtoB,C,EAC7C,EAAA,EAAA,EAAA,SAAA,EAAA,sBAAA,IAAA,EAAA,IAAA,CAAA,IAAA,CAA0BsoB,EAAOtoB,GAE7B,IAAA,CAAKuvY,wBAAT,EACEvvY,EAAM4/V,MAAN,CAAa,IAAA,CAAKi9C,wBAAL,CAA8B,IAAA,CAAKtN,wBAAnC,CAA6DvvY,EAAMwjB,IAAnE,EAEhB,C,E,C,I,eAEYxjB,MAAAA,SAAAA,C,EACP,IAAA,CAAKsvY,eAAT,CACEtvY,EAAMikW,cAAN,CAAqB,QAErBjkW,EAAMikW,cAAN,CAAqB,KAExB,C,E,C,E,A,E,S,C,G,G,E,E,G,CAfgCp0M,EAAAA,A,E,SAAAA,aAAAA,C,C,E,O,C,a,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,oB,C,K,E,I,E,E,S,E,E,S,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CECtB2E,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,8BACiBx0J,MAAAA,SAAAA,C,EAC1B,IAAM40Y,EAAmB,IAAA,CAAK2I,mBAAL,CAAyBv9Y,UAElD,AAAI40Y,GAAoBA,AAA0B,eAA1BA,EAAiB70Y,IAAjB,CACf60Y,EAEF,IACR,C,E,C,I,cAEWtsX,MAAAA,SAAAA,C,CAAmBtoB,C,EAE7B,IAAMw9Y,EAAqB,IAAA,CAAKC,2BAAL,CAAiCz9Y,GAE5D,GAAI,CAACw9Y,EAAoB,CACvB50Y,QAAQgvF,IAAR,CAAA,uEACA,MACD,CAGD,IAAI8+R,EAAkB,CAAC8mB,EAAmBnsR,WAAnB,CAA+BrsH,MAAhC,CAAtB,CAEM6+V,EAAa7jW,EAAM6jW,UAAzB,CACIA,GAAcA,EAAW65C,WAA7B,EACEhnB,CAAAA,EAAkB,CAAC,EAAnB,AAAA,EAEF,IAAMrtO,EAAey6M,AAfO9jW,EAApB8jW,eAD0D,AAgB9B,CAAC,EAArC,CACMn2M,EAAc,IAAI4H,EAAAA,0BAAAA,CAA2Bv1J,EAAMwjB,IAArC,EACjB6jX,WADiB,CACLh+O,EAAcqtO,EAAiBpuW,EAAMsmW,SADhC,EAEjBtnD,SAFiB,GAIpBtnU,EAAM4/V,MAAN,CAAa,CACXjyM,YAAAA,EACA6hO,SAAU,cACVC,YAAa,CACXC,eAAgB,CAACrmO,EADN,CAEXqtO,gBAAAA,EACAxnT,SAAU5mD,EAAMsmW,SAAhB1/S,AAHW,CAHF,EASd,C,E,C,I,YAESlvE,MAAAA,SAAAA,C,EACR,IAAM0kW,EAAS,CACb3kW,KAAM,oBACN2iJ,SAAU,EAAVA,AAFa,EAKT86P,EAAqB,IAAA,CAAKC,2BAAL,CAAiCz9Y,GAC5D,GAAI,CAACw9Y,EAGH,OAAO94C,EAGT,IAAMkqB,EAAY5uX,EAAM+jW,oBAAN,EAA8B/jW,EAAM+jW,oBAAN,CAA2B6qB,SAA3E,CAGI+uB,EAA6C,KACzC95C,EAAe7jW,EAAf6jW,UAjB6D,CAmCrE,OAhBE85C,EADE95C,GAAcA,EAAW65C,WAA7B,CACkBF,EAAmBnsR,WAAnB,CAA+B,EAA/C,CAEgBmsR,EAAmBnsR,WAAnB,CAA+BmsR,EAAmBnsR,WAAnB,CAA+BrsH,MAA/B,CAAwC,EAAvF,CAGF0/V,EAAOhiN,QAAP,CAAgB/8I,IAAhB,CAAqB,CACnB5F,KAAM,UACN+mF,WAAY,CACV+nS,UAAW,WADD,EAGZ54Q,SAAU,CACRl2G,KAAM,aACNsxH,YAAa,CAACssR,EAAe/uB,EAA7Bv9P,AAFQ,CALS,GAWdqzO,CACR,C,E,C,I,oBAEiBp8U,MAAAA,SAAAA,C,CAAyBtoB,C,EACzCA,EAAMikW,cAAN,CAAqB,OACtB,C,E,C,E,A,E,S,C,G,G,E,E,G,CAlFuC7vM,EAAAA,EAAAA,eAAAA,C,C,E,O,C,oB,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,gB,C,K,EEL1C,IAAA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,SAEA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,S,E,E,S,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CAaaK,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,qBACQwqP,MAAAA,SAAAA,C,CAAoBrwB,C,CAAgB5uX,C,EACrD,I,EAAM6jW,EAAa7jW,EAAM6jW,UAAzB,CACA,GAAI,CAACA,GAAc,CAACA,EAAWq7C,YAA3B,EAA2C,CAACD,EAAcj6Y,MAA9D,CACE,OAAO4pX,EAET,GAAIqwB,AAAyB,IAAzBA,EAAcj6Y,MAAd,CAA4B,CAE9B,IAAMm6Y,EAAaF,CAAa,CAAC,EAAjC,CACMrK,EAAmB,IAAA,CAAK2I,mBAAL,CAAyBv9Y,GAE5CkxG,EAAU,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAkB0jS,GAE5BxoL,EAAQl7G,AAAiB,sBAAjBA,EAAQnxG,IAAR,CAAuCmxG,EAAQwxC,QAA/C,CAA0D,CAACxxC,EAAzE,CACIgjR,EAAcpxT,OAAOi7F,gBAAzB,CACIkjJ,EAAe,KAWnB,GATA70F,EAAM9uN,OAAN,CAAc,SAACqyE,CAAD,EACZ,IAAMomT,EAAY,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAmBpmT,EAAMwvU,GACrCC,EAAqB,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAarpB,EAAWopB,GAC/CjrB,EAAckrB,IAChBlrB,EAAckrB,EACdn+F,EAAe80E,EAElB,GAEG90E,EAAc,CAEhB,IAAMo+F,EAAc,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAYF,EAAYl+F,GACtCq+F,EAAkB,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAaH,EAAYvwB,EAAW,CAAE18P,MAAO,QAAT,GAC5D,MAAO,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAgBitR,EAAYG,EAAiBD,EAAa,CAC/DntR,MAAO,QADwD,GAE9Djc,QAFI,CAEKob,WAFZ,AAGD,CACD,OAAOu9P,CACR,CAED,IAAM2wB,EAAYN,CAAa,CAACA,EAAcj6Y,MAAd,CAAuB,EAAvD,CACOw6Y,EArCmF,A,C,A,S,C,E,G,M,O,C,G,O,C,E,EAqC/D,AAAA,CAAA,EAAA,EAAA,kCAAA,AAAA,EACzBP,CAAa,CAACA,EAAcj6Y,MAAd,CAAuB,EADZ,CAEzBu6Y,EACA3wB,K,A,S,C,C,C,E,G,A,a,O,Q,O,Q,I,O,I,I,E,E,C,E,C,E,E,C,E,E,K,E,G,C,I,I,E,E,C,C,O,Q,C,G,C,C,E,A,C,E,E,I,E,E,I,A,I,E,I,C,E,K,E,C,G,E,M,G,G,E,C,G,C,M,E,C,E,C,E,E,C,Q,C,G,C,G,A,M,E,M,E,E,M,E,Q,C,G,E,M,C,C,C,O,E,E,EAxCwF,I,E,EAAA,I,A,W,M,A,U,4I,G,CAAA,CAAA,EAAA,CA6C1F,MAFkB,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAmB,AAAA,CAAA,EAAA,EAAA,UAAA,AAAA,EAAW,CAAC2wB,EAAWC,EAAvB,EAA2C5wB,GAC7E34Q,QADe,CACNob,WADZ,AAGD,C,E,C,I,YAESrxH,MAAAA,SAAAA,C,EACR,IAAMi/Y,EAAgB,IAAA,CAAKY,gBAAL,GAEhBn7C,EAAiC,CACrC3kW,KAAM,oBACN2iJ,SAAU,EAAVA,AAFqC,EAKvC,GAAIu8P,AAAyB,IAAzBA,EAAcj6Y,MAAd,EAA8B,CAAChF,EAAM+jW,oBAAzC,CAEE,OAAOW,EAV4D,IAa7DkqB,EAAc5uX,EAAM+jW,oBAbyC,CAa7D6qB,SAb6D,CA0BrE,OAXAlqB,EAAOhiN,QAAP,CAAgB/8I,IAAhB,CAAqB,CACnB5F,KAAM,UACN+mF,WAAY,CACV+nS,UAAW,WADD,EAGZ54Q,SAAU,CACRl2G,KAAM,aACNsxH,YAAW,EAAA,CAAA,MAAA,C,A,S,C,E,G,M,O,C,G,O,E,E,EAAM4tR,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,EAAAA,I,EAAAA,I,A,W,M,A,U,uI,IAAN,CAAqB,IAAA,CAAKgB,kBAAL,CAAwBhB,EAAerwB,EAAW5uX,GAAlFqxH,CAFQ,CALS,GAWdqzO,CACR,C,E,C,I,cAEWp8U,MAAAA,SAAAA,C,CAAmBtoB,C,EAC7B,IAAMmwX,EAA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B,CAqEZ,CAAC,EAAE,EAAI,AArEC,CAqEC,CAAC,EAAE,EACnB,AAtEmB,CAsEf,CAAC,EAAE,EAAI,AAtEI,CAsEF,CAAC,EAAE,EAChB,AAvEmB,CAuEf,CAAC,EAAE,EAAI,AAvEI,CAuEF,CAAC,EAAE,EAChB,AAxEmB,CAwEf,CAAC,EAAE,EAAI,AAxEI,CAwEF,CAAC,EAAE,AAAF,EAvEd,MAAO,CAAA,CAGE,CAAA,YAAT,GACA,CAAA,EAAQ,CAAC,EAAM,AAAA,EAGnB,IAAK,IADD,EAAa,CAAA,EACR,EAAI,EAAG,EAAI,EAAM,MAAM,EAAI,CAAC,EAAY,IAE7C,GAAI,EAAO,EAAI,CAAK,CAAC,EAAE,CAAC,EAAE,CAAE,EAAQ,cAAc,EAAG,CAIjD,IAHA,IAAI,EAAS,CAAA,EACT,EAAI,EAED,EAAI,CAAK,CAAC,EAAE,CAAC,MAAM,EAAI,CAAC,GACvB,EAAO,EAAI,CAAK,CAAC,EAAE,CAAC,EAAE,CAAE,CAAC,EAAQ,cAAc,GAC/C,CAAA,EAAS,CAAA,CADb,EAGA,IAEC,GACD,CAAA,EAAa,CAAA,CADjB,CAGJ,CAEJ,OAAO,CACX,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,W,C,K,EEvEA,I,EAAA,E,C,EAAA,EAAA,W,E,U,C,E,C,Q,C,E,E,E,S,E,E,S,E,E,S,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,E,O,A,S,C,E,G,M,O,C,G,O,E,E,E,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,E,I,E,I,A,W,M,A,U,uI,G,C,S,E,C,C,C,E,O,A,S,C,E,G,M,O,C,G,O,C,E,I,A,S,C,C,C,E,G,A,a,O,Q,O,Q,I,O,I,I,E,E,C,E,C,E,E,C,E,E,K,E,G,C,I,I,E,E,C,C,O,Q,C,G,C,C,E,A,C,E,E,I,E,E,I,A,I,E,I,C,E,K,E,C,G,E,M,G,G,E,C,G,C,M,E,C,E,C,E,E,C,Q,C,G,C,G,A,M,E,M,E,E,M,E,Q,C,G,E,M,C,C,C,O,E,E,E,I,E,E,I,A,W,M,A,U,4I,G,C,S,E,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,G,A,K,I,E,M,A,e,6D,O,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CAWaM,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,E,I,C,E,S,K,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,I,I,E,E,E,E,U,M,C,E,A,M,G,E,E,E,E,I,C,C,E,C,S,C,E,C,M,C,EAGI,kB,EAAA,E,E,E,I,C,K,C,E,C,I,C,C,M,C,M,O,c,C,E,E,C,MAAA,CAAA,E,W,C,E,a,C,E,S,C,C,G,C,C,E,CAAA,CAAA,E,C,C,O,E,C,C,I,iBAEApsI,MAAAA,SAAAA,C,CAAsBtoB,C,EACnC,IAAMsnY,EAAa,AAAA,CAAA,EAAA,EAAA,mBAAA,AAAA,EAAoBh/W,EAAMi/W,gBAA1B,EAEnB,GAAID,EA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AA,EAAA,AAED6xH,CAAAA,EAAYrsH,MAAZ,EAAsBqsH,CAAW,CAAC3xH,EAAZ,CAAesF,MAAzC,EACEqyE,CAAAA,EAAKg6C,CAAW,CAAC3xH,EAAZ,CAAeF,EAApB,AAAoBA,CAEvB,CACF,CACD,OAAO63E,CACR,C,E,C,E,A,E,S,C,G,G,E,E,G,CAjP8By4E,EAAAA,EAAAA,UAAAA,C,C,E,O,C,W,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,a,C,K,E,I,E,E,S,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,M,C,E,A,a,O,S,Q,G,C,Q,G,C,S,C,C,C,C,C,E,I,E,A,S,C,C,C,E,K,C,O,S,C,c,C,I,C,E,I,A,O,C,E,E,E,I,O,C,E,E,G,G,G,I,E,O,wB,C,E,U,A,E,G,C,E,G,C,I,C,G,E,K,C,G,E,E,G,E,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CENjC,SAASypuB,EAAT,CAAA,EAOE,OAAO,GAAMr1e,CAAAA,AADZ,EALDA,uBAKC,AACmC,CAAC,EAAxB,CAA6BC,AADzC,EAJDA,YAIC,AACqD,CAAC,EAAD,AAAC,CACxD,CAEYv0P,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,oBAETtnI,MAAAA,SAAAA,C,CACA4mD,C,CACAlvE,C,EACqB,IAAA,EAKjBA,EAAM6jW,UAAN,EAAoB,CAAA,EALH,EAAA,EAEnB6gD,YAFmB,CAAA,EAAA,EAGnBE,YAHmB,CAAA,EAAA,EAInBE,wBAJmB,CAOrB,GAAI,CAACx8X,EAAM47X,uBAAX,CACE,OAAO57X,EAIT,IAAI8oG,EAAYliD,AAAoB,IAApBA,EAASlqE,MAAT,CAAwBkqE,CAAQ,CAAC,EAAjC,CAAsC,EAUtD,OAPAkiD,GAAa0zR,AAfQ,CAAA,AAAA,KAAA,IAAA,EAIQy0e,EAJR,CAAA,EAeiB,CACpCr1e,wBAAyB57X,EAAM47X,uBADK,CAEpCC,aAAc77X,EAAM67X,YAApBA,AAFoC,GAKtC/yR,EAAYt2G,KAAKmoC,GAAL,CADZmuE,EAAYt2G,KAAKsvB,GAAL,CAASgnF,EAnBA,AAAA,KAAA,IAAA,EAGJ,IAHI,GAAA,AAAA,KAAA,IAAA,EAEJ,EAFI,GAsBdr1H,OAAO0H,MAAP,CAAc,CAAA,EAAI6kB,EAAO,CAC9BsmW,UAAW,CAAC1/S,CAAQ,CAAC,EAAV,CAAcA,CAAQ,CAAC,EAAvB,CAA2BkiD,EAAtCw9P,AAD8B,EAGjC,C,E,C,I,oBAEiBtmW,MAAAA,SAAAA,C,CAAyBtoB,C,EACzC,IAAMsnY,EAAa,AAAA,CAAA,EAAA,EAAA,mBAAA,AAAA,EAAoBh/W,EAAMi/W,gBAA1B,EACbr4T,EAAWo4T,EAAaA,EAAWrxR,QAAX,CAAoBob,WAAvB,CAAqC/oG,EAAMsmW,SAAtE,CAEA,EAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,IAAA,EAAA,IAAA,CAAA,IAAA,CAAwB,IAAA,CAAKm2B,iBAAL,CAAuBz8X,EAAO4mD,EAAUlvE,GAAQA,EACzE,C,E,C,I,qBAEkBsoB,MAAAA,SAAAA,C,CAA0BtoB,C,EAC3C,IAAMsnY,EAAa,AAAA,CAAA,EAAA,EAAA,mBAAA,AAAA,EAAoBh/W,EAAMwmW,KAA1B,EACb5/S,EAAWo4T,EAAaA,EAAWrxR,QAAX,CAAoBob,WAAvB,CAAqC/oG,EAAMsmW,SAAtE,CAEA,EAAA,EAAA,EAAA,SAAA,EAAA,qBAAA,IAAA,EAAA,IAAA,CAAA,IAAA,CAAyB,IAAA,CAAKm2B,iBAAL,CAAuBz8X,EAAO4mD,EAAUlvE,GAAQA,EAC1E,C,E,C,I,YAESsoB,MAAAA,SAAAA,C,EACR,IAAIq7U,EAAM,EAAA,EAAA,EAAA,SAAA,EAAA,YAAA,IAAA,EAAA,IAAA,CAAA,IAAA,CAAmBr7U,GAI7B,MAHe,SAAXq7U,GACFA,CAAAA,EAAS,WADX,EAGOA,CACR,C,E,C,E,C,C,I,uCAGCv/N,MAAAA,SAAAA,C,C,C,EAaA,OAAQo2G,AAFL,aAAe1/N,KAAKi5G,GAAL,CAAUqQ,EAASpxB,QAAT,CAAoBl4F,KAAKy4G,EAA1B,CAAgC,KAAQz4G,KAAK8lH,GAAL,CAAS,EAAGwD,EAASjwH,IAArB,EAEzC+vY,CAAAA,AALlB,EANNA,uBAMM,AAKyC,CAAC,EAAxB,CAA6BC,AAL/C,EALNA,YAKM,AAK2D,CAAC,EAA9C,AAA8C,EAAO,CAC5E,C,E,C,G,E,A,E,S,C,G,G,E,E,G,CArEgCr0P,EAAAA,A,E,SAAAA,UAAAA,C,C,E,O,C,a,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,a,C,K,E,I,E,E,S,E,E,S,E,E,S,E,E,S,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,E,O,I,C,G,G,O,qB,C,C,I,E,O,qB,C,G,G,C,E,E,M,C,S,C,E,O,O,wB,C,E,G,U,A,E,E,E,I,C,K,C,E,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,M,C,E,A,a,O,S,Q,G,C,Q,G,C,S,C,C,C,C,C,E,I,E,A,S,C,C,C,E,K,C,O,S,C,c,C,I,C,E,I,A,O,C,E,E,E,I,O,C,E,E,G,G,G,I,E,O,wB,C,E,U,A,E,G,C,E,G,C,I,C,G,E,K,C,G,E,E,G,E,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CENtB6E,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,EACX,SAAA,IAAc,OAAA,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,EAAA,IAAA,CAAA,GAAA,EAAA,IAAA,CAAA,IAAA,CACN,CAAC,IAAI9E,EAAJ,aAAA,CAAqB,IAAIyE,EAAJ,SAAA,CAAiB,IAAI3E,EAAJ,UAAA,CADjC,CAEb,C,O,E,C,C,I,oBAEiBrnI,MAAAA,SAAAA,C,CAAyBtoB,C,EACzC,IAAI6lZ,EAAgB,KACpB,EAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,IAAA,EAAA,IAAA,CAAA,IAAA,CAAwBv9X,EAAxB,A,S,C,E,I,I,E,E,E,U,M,C,I,C,I,E,A,M,S,C,E,C,S,C,E,C,C,C,C,E,E,E,O,G,C,G,O,C,S,C,M,E,E,C,C,E,C,A,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,A,C,C,E,C,C,G,O,yB,C,O,gB,C,E,O,yB,C,I,E,O,I,O,C,S,C,E,O,c,C,E,E,O,wB,C,E,G,E,C,O,C,EAAA,CAAA,EACKtoB,EADL,CAEEikW,eAAgB,SAACN,CAAD,EACdkiD,EAAgBliD,GAAUkiD,CAC3B,CAJH,IAMA7lZ,EAAMikW,cAAN,CAAqB4hD,EACtB,C,E,C,I,sBAEmBv9X,MAAAA,SAAAA,C,CAA2BtoB,C,EAC7C,IAAI+lZ,EAAY,KACZC,EAAgB,KACdC,EAAgB,EAAtB,CAMA,IAAA,CAAKC,MAAL,CAAY5oZ,OAAZ,CAAoB,SAAC86B,CAAD,EACdA,aAAgBy3H,EAAAA,aAAAA,CAClBm2P,EAAgB5tX,GAEZA,aAAgBk8H,EAAAA,SAAAA,EAClByxP,CAAAA,EAAY3tX,CADd,EAGA6tX,EAActgZ,IAAd,CAAmByyB,GAEtB,GAEG2tX,aAAqBzxP,EAAAA,SAAAA,EAAa,CAACyxP,EAAUI,oBAAV,IACrCF,EAActgZ,IAAd,CAAmBqgZ,GAGrBC,EAAc3tW,MAAd,CAAqB+gG,SAAS/7I,OAA9B,CAAsC,SAAC86B,CAAD,EAAA,OAAUA,EAAK2tU,mBAAL,CAAyBz9U,EAAOtoB,EAA1C,EACvC,C,E,C,I,YAESA,MAAAA,SAAAA,C,EACR,IAAIomZ,EAAe,EAAA,EAAA,EAAA,SAAA,EAAA,YAAA,IAAA,EAAA,IAAA,CAAA,IAAA,CAAmBpmZ,GAChCqmZ,EAAa,AAAC,CAAA,IAAA,CAAKH,MAAL,EAAe,EAAA,AAAA,EAAIxoQ,IAApB,CAAyB,SAACtlH,CAAD,EAAA,OAAUA,aAAgBu3H,EAA1B,UAAA,AAAA,GAE5C,GAAI02P,aAAsB12P,EAAAA,UAAAA,CAAY,CACpC,IAAM22P,EAAoBF,EAAgB1jQ,QAAhB,CAAyBpqG,MAAzB,CAAgC,SAACiuW,CAAD,EAAW,IAAA,EACjCA,EAAMz/T,UAAP,EAA6B,CAAA,EAAtD44Q,EAD2D,EAC3DA,cAD2D,CAG7D8mD,EAAoB,CAHyC,EAC3CpuX,IAD2C,CAGnE,CAKA,OAHIiuX,EAAWI,aAAX,IACFD,EAAkB7gZ,IAAlB,CAAuB+5V,GAElB,CAAC8mD,EAAkBl4Y,QAAlB,CAA2B,QACpC,GAED83Y,EAAkB,AAAA,CAAA,EAAA,EAAA,iBAAA,AAAA,EAAkBE,EACrC,CACD,OAAOF,CACR,C,E,C,E,A,E,S,C,G,G,E,E,G,CA9DgCzwP,EAAAA,A,E,SAAAA,aAAAA,C,C,E,O,C,a,C,C,G,E,Q,S,C,C,C,E,a,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,G,A,K,I,E,M,A,e,6D,O,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,a,C,K,EEGtBA,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,E,I,C,EAGX,SAAA,EAAYh0F,CAAZ,MAA2C,E,E,E,EAAA,OAAA,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,EAAA,IAAA,CAAA,G,EAAA,EACzC,EAAA,EAAA,IAAA,CAAA,IAAA,G,EADyC,KAAA,E,C,EAAA,Y,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,EAEzC,EAAKukV,MAAL,CAAcvkV,EAF2B,CAG1C,C,O,E,C,C,I,YAGCntC,MAAAA,SAAAA,C,EAKA,IAAK,IAFDqnB,EAFJwrW,EACG,UAAA,MAAA,CAAA,GAAA,AAAA,KAAA,IAAA,SAAA,CAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CADmD,KAI7C9uW,EAAI,EAAGA,EAAI,IAAA,CAAK2tW,MAAL,CAAYlhZ,MAAhC,GACE62C,EAASrnB,EAAS,IAAA,CAAK0xX,MAAL,CAAY3tW,EAAb,EACb8uW,GAAaA,EAAWxrW,IAAUA,GAFAtD,KAOxC,OAAOsD,CACR,C,E,C,I,cAEWvzB,MAAAA,SAAAA,C,CAAmBtoB,C,EAC7B,IAAA,CAAKsnZ,SAAL,CAAe,SAACrhW,CAAD,EAAA,OAAaA,EAAQ4/S,WAAR,CAAoBv9U,EAAOtoB,EAAxC,EAChB,C,E,C,I,oBAEiBsoB,MAAAA,SAAAA,C,CAAyBtoB,C,EACzC,OAAO,IAAA,CAAKsnZ,SAAL,CAAe,SAACrhW,CAAD,EAAA,OAAaA,EAAQigT,iBAAR,CAA0B59U,EAAOtoB,EAA9C,EACvB,C,E,C,I,sBAEmBsoB,MAAAA,SAAAA,C,CAA2BtoB,C,EAC7C,OAAO,IAAA,CAAKsnZ,SAAL,CAAe,SAACrhW,CAAD,EAAA,OAAaA,EAAQ8/S,mBAAR,CAA4Bz9U,EAAOtoB,EAAhD,EACvB,C,E,C,I,qBAEkBsoB,MAAAA,SAAAA,C,CAA0BtoB,C,EAC3C,OAAO,IAAA,CAAKsnZ,SAAL,CAAe,SAACrhW,CAAD,EAAA,OAAaA,EAAQggT,kBAAR,CAA2B39U,EAAOtoB,EAA/C,EACvB,C,E,C,I,iBAEcsoB,MAAAA,SAAAA,C,CAAsBtoB,C,EACnC,OAAO,IAAA,CAAKsnZ,SAAL,CAAe,SAACrhW,CAAD,EAAA,OAAaA,EAAQ+/S,cAAR,CAAuB19U,EAAOtoB,EAA3C,EACvB,C,E,C,I,YAESA,MAAAA,SAAAA,C,EAKR,IALqE,EAK/DunZ,EAAY,EAAlB,CALqE,EAAA,A,S,C,E,G,A,a,O,Q,A,M,C,C,O,Q,C,C,C,G,M,O,C,I,C,E,E,E,E,C,I,E,E,E,W,E,M,C,E,E,E,kB,A,G,E,M,C,C,K,C,C,E,C,K,C,E,M,C,C,I,A,C,E,E,S,C,E,M,C,E,E,C,C,C,M,A,U,wI,C,I,E,E,E,C,E,E,C,E,M,C,E,W,E,C,C,O,Q,C,E,E,E,W,I,E,E,I,G,O,E,E,I,C,C,E,E,S,C,E,E,C,E,E,C,E,E,W,G,C,G,A,M,E,M,E,E,M,E,Q,C,G,E,M,C,C,C,C,EAMlD,IAAA,CAAKrB,MAN6C,EAAA,GAAA,CAMrE,IAAA,EAAA,CAAA,GAAA,CAAA,AAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,IAAA,EAAgC,CAAA,I,EAArB9tX,EAAqB,EAAA,KAAA,CAC9BmvX,EAAU5hZ,IAAV,CAAA,KAAA,CAAA4hZ,G,EAAkBnvX,EAAKwsU,SAAL,CAAe5kW,GAAO0iJ,QAA/B,C,A,S,C,E,G,M,O,C,G,O,E,E,E,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,E,I,E,I,A,W,M,A,U,uI,KACV,CARoE,CAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAUrE,MAAO,CACL3iJ,KAAM,oBACN2iJ,SAAU6kQ,CAFL,CAIR,C,E,C,E,A,E,S,C,G,G,E,E,G,CA1DgCnzP,EAAAA,A,E,SAAAA,eAAAA,C,C,E,O,C,a,C,C,G,E,Q,S,C,C,C,E,a,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,M,C,E,A,a,O,S,Q,G,C,Q,G,C,S,C,C,C,C,C,E,I,E,A,S,C,C,C,E,K,C,O,S,C,c,C,I,C,E,I,A,O,C,E,E,E,I,O,C,E,E,G,G,G,I,E,O,wB,C,E,U,A,E,G,C,E,G,C,I,C,G,E,K,C,G,E,E,G,E,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,a,C,K,EERtB3E,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,yBACYzvJ,MAAAA,SAAAA,C,EAAuD,IACpE+jW,EAAyB/jW,EAAzB+jW,oBADoE,CAI5E,MAAO,CACLhkW,KAAM,UACN+mF,WAAY,CACV+nS,UAAW,WADD,EAGZ54Q,SAAU,CACRl2G,KAAM,QACNsxH,YAAak3R,AATExkD,CAAAA,EAAuB,CAACA,EAAqB6qB,SAAtB,CAAH,CAAsC,EAA7E,AAA6E,CASlD,CAAC,EAAxBv9P,AAFQ,CALL,CAUR,C,E,C,I,cAEsCrxH,MAAAA,SAAAA,CAAAA,CAAAA,C,EAA2C,IAApE4uX,EAAoE,EAApEA,SAAoE,CAMhF5uX,EAAM4/V,MAAN,CAAa,IAAA,CAAKswB,mBAAL,CALI,CACfnwX,KAAM,QACNsxH,YAAau9P,CAFE,EAK+B5uX,EAAMwjB,IAAzC,EACd,C,E,C,I,oBAEiB8E,MAAAA,SAAAA,C,CAAyBtoB,C,EACzCA,EAAMikW,cAAN,CAAqB,QACrB,EAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,IAAA,EAAA,IAAA,CAAA,IAAA,CAAwB37U,EAAOtoB,EAChC,C,E,C,E,A,E,S,C,G,G,E,E,G,CA7BgCo0J,EAAAA,A,E,SAAAA,eAAAA,C,C,E,O,C,a,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,kB,C,K,E,I,E,E,S,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,E,O,A,S,C,E,G,M,O,C,G,O,E,E,E,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,E,I,A,S,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,E,I,A,W,M,A,U,uI,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CECtB7E,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,cACCjnI,MAAAA,SAAAA,C,CAAmBtoB,C,EAAqC,IAC1D8uX,EAAUxmW,EAAVwmW,KAD0D,CAE5Dy6B,EAAoB,AAAA,CAAA,EAAA,EAAA,mBAAA,AAAA,EAAoBz6B,GAE1C06B,EAAgB,CAAA,EACfD,IAEH,IAAA,CAAKpJ,gBAAL,CAAsB73X,GACtBkhY,EAAgB,CAAA,GAElB,IAAMvK,EAAgB,IAAA,CAAKY,gBAAL,GAEtB,GACEZ,EAAcj6Y,MAAd,CAAuB,GACvBukZ,GACA/kZ,MAAMC,OAAN,CAAc8kZ,EAAkBziU,UAAlB,CAA6B4vS,eAA3C,GACA6yB,EAAkBziU,UAAlB,CAA6B4vS,eAA7B,CAA6C,EAA7C,GAAoDuoB,EAAcj6Y,MAAd,CAAuB,EAC3E,CAGA,IAAMykZ,EAA8B,CAClC1pZ,KAAM,aACNsxH,YAAW,EAAM4tR,EAFiB,EAKpC,IAAA,CAAK5uB,kBAAL,GAEA,IAAMrsB,EAAa,IAAA,CAAKksB,mBAAL,CAAyBu5B,EAAiBzpZ,EAAMwjB,IAAhD,EACfwgV,GACFhkW,EAAM4/V,MAAN,CAAaoE,EAEhB,MAAUwlD,GAETxpZ,EAAM4/V,MAAN,CAAa,CAEXjyM,YAAa3tJ,EAAMwjB,IAFR,CAGXgsW,SAAU,uBACVC,YAAa,CACXvgT,SAAU5mD,EAAMsmW,SAAhB1/S,AADW,CAJF,EAShB,C,E,C,I,cACW5mD,MAAAA,SAAAA,C,CAAsBtoB,C,EAEhC,GAAIzC,AAAQ,UADI+qB,EAAR/qB,GAD6D,CAEhD,CACnB,IAAM0hZ,EAAgB,IAAA,CAAKY,gBAAL,GACtB,GAAIZ,EAAcj6Y,MAAd,CAAuB,EAAG,CAC5B,IAAMykZ,EAA8B,CAClC1pZ,KAAM,aACNsxH,YAAW,EAAM4tR,EAFiB,EAIpC,IAAA,CAAK5uB,kBAAL,GACA,IAAMrsB,EAAa,IAAA,CAAKksB,mBAAL,CAAyBu5B,EAAiBzpZ,EAAMwjB,IAAhD,EACfwgV,GACFhkW,EAAM4/V,MAAN,CAAaoE,EAEhB,CACF,CACF,C,E,C,I,YACShkW,MAAAA,SAAAA,C,EAA6D,IAAA,EAWjEmwX,EAVIpsB,EAAyB/jW,EAAzB+jW,oBAD6D,CAE/Dk7C,EAAgB,IAAA,CAAKY,gBAAL,GAEhB0I,EAAaxkD,EAAuB,CAACA,EAAqB6qB,SAAtB,CAAH,CAAsC,EAA7E,CAEMlqB,EAAS,CACb3kW,KAAM,oBACN2iJ,SAAU,EAAVA,AAFa,CAMXu8P,CAAAA,EAAcj6Y,MAAd,CAAuB,GACzBmrX,CAAAA,EAAmB,CACjBpwX,KAAM,UACN+mF,WAAY,CACV+nS,UAAW,WADD,EAGZ54Q,SAAU,CACRl2G,KAAM,aACNsxH,YAAW,EAAA,CAAA,MAAA,CAAA,EAAM4tR,GAAkBsJ,EAF3B,CALO,CAAA,EAYjBp4B,GACFzrB,EAAOhiN,QAAP,CAAgB/8I,IAAhB,CAAqBwqX,GAGvB,IAAM1sB,EAAcw7C,EAAc14Y,GAAd,CAAkB,SAACojZ,CAAD,CAAe3wX,CAAf,EAAA,MAA0B,CAC9Dj5B,KAAM,UACN+mF,WAAY,CACV+nS,UAAW,aACXnvB,eAAgB,WAChBr2M,aAAc,GACdqtO,gBAAiB,CAAC19V,EAAlB09V,AAJU,EAMZzgR,SAAU,CACRl2G,KAAM,QACNsxH,YAAas4R,CAFL,CARoD,CAA1B,GAgBtC,MAFA,AAAA,CAAA,EAAAjlD,EAAOhiN,QAAAA,AAAAA,EAAS/8I,IAAhB,CAAA,KAAA,CAAA,EAAA,EAAwB89V,IAEjBiB,CACR,C,E,C,I,oBAEiBp8U,MAAAA,SAAAA,C,CAAyBtoB,C,EACzCA,EAAMikW,cAAN,CAAqB,OACtB,C,E,C,E,A,E,S,C,G,G,E,E,G,CA/GqC7vM,EAAAA,A,E,SAAAA,eAAAA,C,C,E,O,C,kB,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,e,C,K,EELxC,I,EAAA,E,C,EAAA,EAAA,W,E,U,C,E,C,Q,C,E,E,E,S,E,E,S,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,E,O,A,S,C,E,G,M,O,C,G,O,E,E,E,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,E,I,A,S,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,E,I,A,W,M,A,U,uI,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,M,C,E,A,a,O,S,Q,G,C,Q,G,C,S,C,C,C,C,C,E,I,E,A,S,C,C,C,E,K,C,O,S,C,c,C,I,C,E,I,A,O,C,E,E,E,I,O,C,E,E,G,G,G,I,E,O,wB,C,E,U,A,E,G,C,E,G,C,I,C,G,E,K,C,G,E,E,G,E,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CAaa5E,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,yBACYxvJ,MAAAA,SAAAA,C,EAAuD,IAMxEmwX,EALIpsB,EAAyB/jW,EAAz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AN,CAAa,CAEXjyM,YAAa3tJ,EAAMwjB,IAFR,CAGXgsW,SAAU,uBACVC,YAAa,CACXvgT,SAAU5mD,EAAMsmW,SAAhB1/S,AADW,CAJF,EAShB,C,E,C,I,cAEW5mD,MAAAA,SAAAA,C,CAAsBtoB,C,EAChC,GAAIsoB,AAAc,UAAdA,EAAM/qB,GAAN,CAAuB,CACzB,IAAM0hZ,EAAgB,IAAA,CAAKY,gBAAL,GACtB,GAAIZ,EAAcj6Y,MAAd,CAAuB,EAAG,CAC5B,IAAMkmZ,EAAwB,CAC5BnrZ,KAAM,UACNsxH,YAAa,CAAA,EAAA,CAAA,MAAA,CAAA,EAAK4tR,GAAL,CAAoBA,CAAa,CAAC,EAAlC,CAAb5tR,EAAAA,AAF4B,EAI9B,IAAA,CAAKg/P,kBAAL,GAEA,IAAMrsB,EAAa,IAAA,CAAKmnD,mCAAL,CAAyCD,EAAclrZ,GACtEgkW,GACFhkW,EAAM4/V,MAAN,CAAaoE,EAEhB,CACF,CACF,C,E,C,I,oBAEiB17U,MAAAA,SAAAA,C,CAAyBtoB,C,EACzCA,EAAMikW,cAAN,CAAqB,QACrB,EAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,IAAA,EAAA,IAAA,CAAA,IAAA,CAAwB37U,EAAOtoB,EAChC,C,E,C,E,A,E,S,C,G,G,E,E,G,CAnJkCo0J,EAAAA,A,E,SAAAA,eAAAA,C,C,E,O,C,e,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,iB,C,K,EEbrC,I,EAAA,E,C,EAAA,EAAA,W,E,U,C,E,C,Q,C,E,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CAIaQ,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,qBACQ02F,MAAAA,SAAAA,C,CAAkBygK,C,CAAkBloD,C,EACrD,IAAMmoD,EAAY,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAY,CAAC1gK,CAAM,CAAC,EAAR,CAAYA,CAAM,CAAC,EAAnB,CAAuBygK,CAAM,CAAC,EAA9B,CAAkCA,CAAM,CAAC,EAAzC,CAAZ,EAKlB,OAJAC,EAAUllU,UAAV,CAAuBklU,EAAUllU,UAAV,EAAwB,CAAA,EAC/CklU,EAAUllU,UAAV,CAAqBz+B,KAArB,CAA6B,YAGtB2jW,CACR,C,E,C,E,A,E,S,C,G,G,E,E,G,CARoCE,EAAAA,A,E,SAAAA,mBAAAA,C,C,E,O,C,iB,C,C,G,E,Q,S,C,C,C,E,a,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,M,C,E,A,a,O,S,Q,G,C,Q,G,C,S,C,C,C,C,C,E,I,E,A,S,C,C,C,E,K,C,O,S,C,c,C,I,C,E,I,A,O,C,E,E,E,I,O,C,E,E,G,G,G,I,E,O,wB,C,E,U,A,E,G,C,E,G,C,I,C,G,E,K,C,G,E,E,G,E,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,mB,C,K,EEQ1BA,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,cACC5jY,MAAAA,SAAAA,C,CAAmBtoB,C,EACzBA,EAAM6jW,UAAN,EAAoB7jW,EAAM6jW,UAAN,CAAiBipD,UAAzC,GAKA,IAAA,CAAK3M,gBAAL,CAAsB73X,GAEtB,IAAA,CAAKykY,qBAAL,CAA2B/sZ,GAC5B,C,E,C,I,sBAEmBsoB,MAAAA,SAAAA,C,CAA2BtoB,C,EACxCA,EAAM6jW,UAAP,EAAsB7jW,EAAM6jW,UAAN,CAAiBipD,UAA3C,GAKA,IAAA,CAAK3M,gBAAL,CAAsB73X,GACtBA,EAAMk/W,SAAN,GACD,C,E,C,I,qBAEkBl/W,MAAAA,SAAAA,C,CAA0BtoB,C,EACtCA,EAAM6jW,UAAP,EAAsB7jW,EAAM6jW,UAAN,CAAiBipD,UAA3C,GAIA,IAAA,CAAK3M,gBAAL,CAAsB73X,GAEtB,IAAA,CAAKykY,qBAAL,CAA2B/sZ,GAC5B,C,E,C,I,wBAEqBA,MAAAA,SAAAA,C,EACpB,IAAMi/Y,EAAgB,IAAA,CAAKY,gBAAL,GAChB1vB,EAAmB,IAAA,CAAK+vB,iBAAL,CAAuBlgZ,GAEhD,GACEi/Y,EAAcj6Y,MAAd,CAAuB,GACvBmrX,GACAA,AAAmC,YAAnCA,EAAiBl6Q,QAAjB,CAA0Bl2G,IAA1B,CACA,CACA,IAAMmxG,EAA8B,CAClCnxG,KAAM,UACN+mF,WAAY,CACVz+B,MAAO8nU,EAAiBrpS,UAAjB,CAA4Bz+B,KAAnCA,AADU,EAGZ4tD,SAAU,CACRl2G,KAAM,UACNsxH,YAAa8+P,EAAiBl6Q,QAAjB,CAA0Bob,WAAvCA,AAFQ,CALwB,EAU9B2yO,EAAa,IAAA,CAAKmnD,mCAAL,CAAyCj6S,EAASlxG,GAErE,IAAA,CAAKqwX,kBAAL,GAEIrsB,GACFhkW,EAAM4/V,MAAN,CAAaoE,EAEhB,CACF,C,E,C,I,YAEShkW,MAAAA,SAAAA,C,EAA6D,IAC7D+jW,EAAqC/jW,EAArC+jW,oBAD6D,CACvCF,EAAe7jW,EAAf6jW,UADuC,CAE/Do7C,EAAgB,IAAA,CAAKY,gBAAL,GAEhBn7C,EAAiC,CACrC3kW,KAAM,oBACN2iJ,SAAU,EAAVA,AAFqC,EAKvC,GAAIu8P,AAAyB,IAAzBA,EAAcj6Y,MAAd,CAEF,OAAO0/V,EAGT,IAAMsoD,EAAU/N,CAAa,CAAC,EAA9B,CACMgO,EAAUlpD,EAAqB6qB,SAArC,CAEM7yO,EAAU,IAAA,CAAKmxQ,kBAAL,CAAwBF,EAASC,EAASppD,GAY1D,OAXI9nN,GACF2oN,EAAOhiN,QAAP,CAAgB/8I,IAAhB,CAAqB,CACnB5F,KAAM,UACN+mF,WAAY,CACVz+B,MAAO0zF,EAAQj1D,UAAR,EAAsBi1D,EAAQj1D,UAAR,CAAmBz+B,KADtC,CAEVwmU,UAAW,WAFD,EAIZ54Q,SAAU8lC,EAAQ9lC,QAAlBA,AANmB,GAUhByuP,CACR,C,E,C,I,qBAGCp5G,MAAAA,SAAAA,C,CACAygK,C,CACAloD,C,EAEA,OAAO,IACR,C,E,C,I,oBAEiBv7U,MAAAA,SAAAA,C,CAAyBtoB,C,EACzCA,EAAMikW,cAAN,CAAqB,QACrB,EAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,IAAA,EAAA,IAAA,CAAA,IAAA,CAAwB37U,EAAOtoB,EAChC,C,E,C,I,yBAEsBA,MAAAA,SAAAA,C,EAAuD,IAMxEmwX,EALIpsB,EAAyB/jW,EAAzB+jW,oBADoE,CAEtEk7C,EAAgB,IAAA,CAAKY,gBAAL,GAEhB0I,EAAaxkD,EAAuB,CAACA,EAAqB6qB,SAAtB,CAAH,CAAsC,EAA7E,CAOA,OAJ6B,IAAzBqwB,EAAcj6Y,MAAd,EACFmrX,CAAAA,EAAmB,IAAA,CAAK+8B,kBAAL,CAAwBjO,CAAa,CAAC,EAAtC,CAA0CsJ,CAAU,CAAC,EAArD,CAAyDvoZ,EAAM6jW,UAA/D,CAAA,EAGdssB,CACR,C,E,C,E,A,E,S,C,G,G,E,E,G,CAtHsC/7N,EAAAA,A,E,SAAAA,eAAAA,C,C,E,O,C,mB,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,c,C,K,EEZzC,IAAA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CAKaS,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C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AA,EAAA,QAAO,AAAP,EAAS,GAKxB,EAAI,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,AAJf,AAAA,CAAA,EAAA,EAAA,gBAAe,AAAf,EAAiB,CAAY,CAAC,EAAE,CAAG,CAAY,CAAC,EAAE,EAI5B,GAAI,GACjC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,AAJX,AAAA,CAAA,EAAA,EAAA,gBAAe,AAAf,EAAiB,CAAY,CAAC,EAAE,CAAG,CAAY,CAAC,EAAE,EAIhC,GAAI,GAAK,KAAK,GAAG,CAHnC,AAAA,CAAA,EAAA,EAAA,gBAAe,AAAf,EAAiB,CAAY,CAAC,EAAE,GAGY,KAAK,GAAG,CAFpD,AAAA,CAAA,EAAA,EAAA,gBAAe,AAAf,EAAiB,CAAY,CAAC,EAAE,GAG3C,MAAO,AAAA,CAAA,EAAA,EAAA,eAAc,AAAd,EAAgB,EAAI,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,GAAI,KAAK,IAAI,CAAC,EAAI,IAAK,EAAQ,KAAK,CACxF,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,2B,C,K,EErCA,I,EAAA,E,C,EAAA,EAAA,W,E,U,C,E,C,Q,C,E,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CAIap3P,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,qBACQw2F,MAAAA,SAAAA,C,CAAkBygK,C,CAAkBloD,C,EACrD,IAAM9wP,EACJu4I,CAAM,CAAC,EAAP,CAAYygK,CAAM,CAAC,EAAnB,CACIzgK,CAAM,CAAC,EAAP,CAAYxwO,KAAKw+C,GAAL,CAASgyL,CAAM,CAAC,EAAP,CAAYygK,CAAM,CAAC,EAA5B,EACZzgK,CAAM,CAAC,EAAP,CAAYxwO,KAAKw+C,GAAL,CAASgyL,CAAM,CAAC,EAAP,CAAYygK,CAAM,CAAC,EAA5B,EACZ/4S,EACJs4I,CAAM,CAAC,EAAP,CAAYygK,CAAM,CAAC,EAAnB,CACIzgK,CAAM,CAAC,EAAP,CAAYxwO,KAAKw+C,GAAL,CAASgyL,CAAM,CAAC,EAAP,CAAYygK,CAAM,CAAC,EAA5B,EACZzgK,CAAM,CAAC,EAAP,CAAYxwO,KAAKw+C,GAAL,CAASgyL,CAAM,CAAC,EAAP,CAAYygK,CAAM,CAAC,EAA5B,EAEZC,EAAY,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAY,CAACj5S,EAAWC,EAAU+4S,CAAM,CAAC,EAA7B,CAAiCA,CAAM,CAAC,EAAxC,CAAZ,EAKlB,OAJAC,EAAUllU,UAAV,CAAuBklU,EAAUllU,UAAV,EAAwB,CAAA,EAC/CklU,EAAUllU,UAAV,CAAqBz+B,KAArB,CAA6B,YAGtB2jW,CACR,C,E,C,E,A,E,S,C,G,G,E,E,G,CAjB8CE,EAAAA,A,E,SAAAA,mBAAAA,C,C,E,O,C,2B,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,wB,C,K,EEJjD,IAAA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CAKan3P,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,qBACQu2F,MAAAA,SAAAA,C,CAAkBygK,C,CAAkBloD,C,EAErD,IAAMmqD,EAAS,CAACjC,CAAM,CAAC,EAAR,CAAYzgK,CAAM,CAAC,EAAnB,CAAf,CACM2iK,EAAS,CAAC3iK,CAAM,CAAC,EAAR,CAAYygK,CAAM,CAAC,EAAnB,CAAf,CAGMmC,EAAY,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAa,AAAA,CAAA,EAAA,EAAA,KAAA,AAAA,EAAMF,GAAS,AAAA,CAAA,EAAA,EAAA,KAAA,AAAA,EAAM1iK,IAC9C6iK,EAAY,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAa,AAAA,CAAA,EAAA,EAAA,KAAA,AAAA,EAAMF,GAAS,AAAA,CAAA,EAAA,EAAA,KAAA,AAAA,EAAM3iK,IAI9C21D,EAAeitG,GAAaC,EAAYH,EAASC,EAGjDt+U,EAAO,AAAA,CAAA,EAAA,EAAA,UAAA,AAAA,EAAe,CAACsxO,EAAc8qG,EAA9B,EAIPlxE,EAASuzE,AADE,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAUz+U,EATFu+U,GAAaC,EAAYD,EAAYC,GAUtCl4S,QAAT,CAAkBob,WAAjC,CAGMte,EACJu4I,CAAM,CAAC,EAAP,CAAYuvF,CAAM,CAAC,EAAnB,CACIvvF,CAAM,CAAC,EAAP,CAAYxwO,KAAKw+C,GAAL,CAASgyL,CAAM,CAAC,EAAP,CAAYuvF,CAAM,CAAC,EAA5B,EACZvvF,CAAM,CAAC,EAAP,CAAYxwO,KAAKw+C,GAAL,CAASgyL,CAAM,CAAC,EAAP,CAAYuvF,CAAM,CAAC,EAA5B,EACZ7nO,EACJs4I,CAAM,CAAC,EAAP,CAAYuvF,CAAM,CAAC,EAAnB,CACIvvF,CAAM,CAAC,EAAP,CAAYxwO,KAAKw+C,GAAL,CAASgyL,CAAM,CAAC,EAAP,CAAYuvF,CAAM,CAAC,EAA5B,EACZvvF,CAAM,CAAC,EAAP,CAAYxwO,KAAKw+C,GAAL,CAASgyL,CAAM,CAAC,EAAP,CAAYuvF,CAAM,CAAC,EAA5B,EAEZwzE,EAAS,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAY,CAACt7S,EAAWC,EAAU6nO,CAAM,CAAC,EAA7B,CAAiCA,CAAM,CAAC,EAAxC,CAAZ,EAKf,OAJAwzE,EAAOvnU,UAAP,CAAoBunU,EAAOvnU,UAAP,EAAqB,CAAA,EACzCunU,EAAOvnU,UAAP,CAAkBz+B,KAAlB,CAA0B,SAGnBgmW,CACR,C,E,C,E,A,E,S,C,G,G,E,E,G,CArC2CnC,EAAAA,A,E,SAAAA,mBAAAA,C,C,E,O,C,wB,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,wB,C,K,EEP9C,IAAA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CAKal3P,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,qBACQs2F,MAAAA,SAAAA,C,CAAkBygK,C,CAAkBloD,C,EAAqC,IAAA,EAAA,AAEnEA,CAAAA,GAAc,CAAA,CAAA,EAA7B70E,KAFkF,CAElFA,EAFkF,AAAA,KAAA,IAAA,EAE1E,GAF0E,EAGpF1+Q,EAAU,CAAE0+Q,MAAAA,CAAF,EAEZA,EAAQ,IACVpmR,QAAQgvF,IAAR,CAAA,wCACAtnF,EAAQ0+Q,KAAR,CAAgB,GAGlB,IAAM8iI,EAAoB,AAAA,CAAA,EAAA,EAAA,uBAAA,AAAA,EAAwBxmK,EAAQygK,GACpDlkT,EAAS/sF,KAAKmoC,GAAL,CAAS,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAASqoM,EAAQwmK,GAAoB,MAEvD77S,EAAW,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAO67S,EAAmBjqT,EAAQv3F,GAKnD,OAHA2lG,EAASnvB,UAAT,CAAsBmvB,EAASnvB,UAAT,EAAuB,CAAA,EAC7CmvB,EAASnvB,UAAT,CAAoBz+B,KAApB,CAA4B,SAErB4tD,CACR,C,E,C,E,A,E,S,C,G,G,E,E,G,CApB2Ci2S,EAAAA,A,E,SAAAA,mBAAAA,C,C,E,O,C,wB,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,wB,C,K,EEN9C,IAAA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CAIaj3P,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,qBACQq2F,MAAAA,SAAAA,C,CAAkBygK,C,CAAkBloD,C,EAAqC,IAAA,EAAA,AAEnEA,CAAAA,GAAc,CAAA,CAAA,EAA7B70E,KAFkF,CAElFA,EAFkF,AAAA,KAAA,IAAA,EAE1E,GAF0E,EAGpF1+Q,EAAU,CAAE0+Q,MAAAA,CAAF,EAEZA,EAAQ,IACVpmR,QAAQgvF,IAAR,CAAA,wCACAtnF,EAAQ0+Q,KAAR,CAAgB,GAGlB,IAAMnnL,EAAS/sF,KAAKmoC,GAAL,CAAS,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAASqoM,EAAQygK,GAAS,MAC5C91S,EAAW,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAOq1I,EAAQzjJ,EAAQv3F,GAKxC,OAHA2lG,EAASnvB,UAAT,CAAsBmvB,EAASnvB,UAAT,EAAuB,CAAA,EAC7CmvB,EAASnvB,UAAT,CAAoBz+B,KAApB,CAA4B,SAErB4tD,CACR,C,E,C,E,A,E,S,C,G,G,E,E,G,CAlB2Ci2S,EAAAA,A,E,SAAAA,mBAAAA,C,C,E,O,C,wB,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,4B,C,K,EEL9C,IAAA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,S,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CAMah3P,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S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A2VA,SAAS,EAAiB,CAAO,EAC7B,GAAI,MAAA,EAA2C,MAAM,AAAI,MAAM,uBAG/D,OAAO,AADO,EAAU,IACP,KAAK,EAAE,CAAG,GAC/B,CAkDA,SAAS,EAAS,CAAG,EACjB,MAAO,CAAC,MAAM,IAAQ,AAAQ,OAAR,GAAgB,CAAC,MAAM,OAAO,CAAC,EACzD,CAaA,SAAS,EAAS,CAAK,EACnB,MAAQ,CAAC,CAAC,GAAW,EAAM,WAAW,GAAK,MAC/C,C,E,E,O,C,W,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,W,W,O,C,G,E,E,O,C,mB,W,O,C,E,G,E,Q,S,C,C,C,ECzoBA,SAAS,EAAS,CAAK,EACnB,GAAI,CAAC,EAAO,MAAM,AAAI,MAAM,qBAC5B,GAAI,AAAe,YAAf,EAAM,IAAI,EAAkB,AAAmB,OAAnB,EAAM,QAAQ,EAAa,AAAwB,UAAxB,EAAM,QAAQ,CAAC,IAAI,CAAc,OAAO,EAAM,QAAQ,CAAC,WAAW,CAC7H,GAAI,AAAe,UAAf,EAAM,IAAI,CAAc,OAAO,EAAM,WAAW,CACpD,GAAI,MAAM,OAAO,CAAC,IAAU,EAAM,MAAM,EAAI,GAAK,AAAoB,KAAA,IAApB,CAAK,CAAC,EAAE,CAAC,MAAM,EAAkB,AAAoB,KAAA,IAApB,CAAK,CAAC,EAAE,CAAC,MAAM,CAAgB,OAAO,CAExH,OAAM,AAAI,MAAM,qDACpB,C,E,E,O,C,W,W,O,C,G,E,Q,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,+B,C,K,EErBA,IAAA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,S,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CAMa/2P,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,uBAETm2F,MAAAA,SAAAA,C,CACAygK,C,CACAiC,C,CACAnqD,C,EAEA,IAAMiuD,EAAoB,AAAA,CAAA,EAAA,EAAA,uBAAA,AAAA,EAAwBxmK,EAAQygK,GACpD0H,EAAY34Y,KAAKmoC,GAAL,CAAS,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAS6uW,EAAmB,AAAA,CAAA,EAAA,EAAA,KAAA,AAAA,EAAM9D,IAAU,MACjE0F,EAAY54Y,KAAKmoC,GAAL,CAAS,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAASqoM,EAAQygK,GAAS,MAAS,EACxDz7Y,EAAU,CAAEm3I,MAAO,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAQ6jG,EAAQygK,EAAzB,EAEhB,MAAO,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAQ+F,EAAmB2B,EAAWC,EAAWpjZ,EACzD,C,E,C,E,A,E,S,C,G,G,E,E,G,CAbkDulZ,EAAAA,A,E,SAAAA,qBAAAA,C,C,E,O,C,+B,C,C,G,E,Q,S,C,C,C,E,a,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,M,C,E,A,a,O,S,Q,G,C,Q,G,C,S,C,C,C,C,C,E,I,E,A,S,C,C,C,E,K,C,O,S,C,c,C,I,C,E,I,A,O,C,E,E,E,I,O,C,E,E,G,G,G,I,E,O,wB,C,E,U,A,E,G,C,E,G,C,I,C,G,E,K,C,G,E,E,G,E,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,qB,C,K,EEExCA,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,cACCvtY,MAAAA,SAAAA,C,CAAmBtoB,C,EAC7B,IAAA,CAAKmgZ,gBAAL,CAAsB73X,GACtB,IAAM22X,EAAgB,IAAA,CAAKY,gBAAL,GAChB1vB,EAAmB,IAAA,CAAK+vB,iBAAL,CAAuBlgZ,GAEhD,GACEi/Y,EAAcj6Y,MAAd,CAAuB,GACvBmrX,GACAA,AAAmC,YAAnCA,EAAiBl6Q,QAAjB,CAA0Bl2G,IAA1B,CACA,CACA,IAAMikW,EAAa,IAAA,CAAKmnD,mCAAL,CAAyCh7B,EAAiBl6Q,QAA1D,CAAoEj2G,GACvF,IAAA,CAAKqwX,kBAAL,GAEIrsB,GACFhkW,EAAM4/V,MAAN,CAAaoE,EAEhB,CACF,C,E,C,I,YAEShkW,MAAAA,SAAAA,C,EAA6D,IAC7D+jW,EAAqC/jW,EAArC+jW,oBAD6D,CACvCF,EAAe7jW,EAAf6jW,UADuC,CAE/Do7C,EAAgB,IAAA,CAAKY,gBAAL,GAEhBn7C,EAAiC,CACrC3kW,KAAM,oBACN2iJ,SAAU,EAAVA,AAFqC,EAKvC,GAAIu8P,AAAyB,IAAzBA,EAAcj6Y,MAAd,CAEF,OAAO0/V,EAGT,IAAM+xD,EAAe1yD,EAAqB6qB,SAA1C,CAEA,GAAIqwB,AAAyB,IAAzBA,EAAcj6Y,MAAd,CACF0/V,EAAOhiN,QAAP,CAAgB/8I,IAAhB,CAAqB,CACnB5F,KAAM,UACN+mF,WAAY,CACV+nS,UAAW,WADD,EAGZ54Q,SAAU,CACRl2G,KAAM,aACNsxH,YAAa,CAAC4tR,CAAa,CAAC,EAAf,CAAmBwX,EAAhCplS,AAFQ,CALS,OAUhB,CACL,IAAM0qB,EAAU,IAAA,CAAK26Q,oBAAL,CACdzX,CAAa,CAAC,EADA,CAEdA,CAAa,CAAC,EAFA,CAGdwX,EACA5yD,GAEE9nN,GACF2oN,EAAOhiN,QAAP,CAAgB/8I,IAAhB,CAAqB,CACnB5F,KAAM,UACN+mF,WAAY,CACV+nS,UAAW,WADD,EAGZ54Q,SAAU8lC,EAAQ9lC,QAAlBA,AALmB,EAQxB,CAED,OAAOyuP,CACR,C,E,C,I,uBAGCp5G,MAAAA,SAAAA,C,CACAygK,C,CACAiC,C,CACAnqD,C,EAEA,OAAO,IACR,C,E,C,I,oBAEiBv7U,MAAAA,SAAAA,C,CAAyBtoB,C,EACzCA,EAAMikW,cAAN,CAAqB,QACrB,EAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,IAAA,EAAA,IAAA,CAAA,IAAA,CAAwB37U,EAAOtoB,EAChC,C,E,C,I,yBAEsBA,MAAAA,SAAAA,C,EAAuD,IAMxEmwX,EALIpsB,EAAyB/jW,EAAzB+jW,oBADoE,CAEtEk7C,EAAgB,IAAA,CAAKY,gBAAL,GAEhB0I,EAAaxkD,EAAuB,CAACA,EAAqB6qB,SAAtB,CAAH,CAAsC,EAA7E,CAYA,OAT6B,IAAzBqwB,EAAcj6Y,MAAd,EACFmrX,CAAAA,EAAmB,IAAA,CAAKumC,oBAAL,CACjBzX,CAAa,CAAC,EADG,CAEjBA,CAAa,CAAC,EAFG,CAGjBsJ,CAAU,CAAC,EAHM,CAIjBvoZ,EAAM6jW,UAJW,CAAA,EAQdssB,CACR,C,E,C,E,A,E,S,C,G,G,E,E,G,CAnGwC/7N,EAAAA,A,E,SAAAA,eAAAA,C,C,E,O,C,qB,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,iC,C,K,E,I,E,E,S,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CEN9BgB,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,uBAETk2F,MAAAA,SAAAA,C,CACAygK,C,CACAiC,C,CACAnqD,C,EACuC,I,EAAA,E,A,S,C,E,G,M,O,C,G,O,C,E,EACtB,AAAA,CAAA,EAAA,EAAA,kCAAA,AAAA,EAAmCv4G,EAAQygK,EAAQiC,K,A,S,C,C,C,E,G,A,a,O,Q,O,Q,I,O,I,I,E,E,C,E,C,E,E,C,E,E,K,E,G,C,I,I,E,E,C,C,O,Q,C,G,C,C,E,A,C,E,E,I,E,E,I,A,I,E,I,C,E,K,E,C,G,E,M,G,G,E,C,G,C,M,E,C,E,C,E,E,C,Q,C,G,C,G,A,M,E,M,E,E,M,E,Q,C,G,E,M,C,C,C,O,E,E,EAD7B,I,A,S,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,E,EAAA,I,A,W,M,A,U,4I,IAChC74D,EADgC,CAAA,CAAA,EAAA,CAC5Bk+B,EAD4B,CAAA,CAAA,EAAA,CAGvC,MAAO,CACLtzX,KAAM,UACN+mF,WAAY,CACVz+B,MAAO,WADG,EAGZ4tD,SAAU,CACRl2G,KAAM,UACNsxH,YAAa,CACX,CAIEi6H,EACAygK,EACA52D,EACAk+B,EACA/nI,EATS,CAKTA,AAPI,CALL,CAqBR,C,E,C,E,A,E,S,C,G,G,E,E,G,CA9BoDuqK,EAAAA,A,E,SAAAA,qBAAAA,C,C,E,O,C,iC,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,uB,C,K,EEJvD,IAAA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,S,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,E,O,A,S,C,E,G,M,O,C,G,O,E,E,E,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,E,I,E,I,A,W,M,A,U,uI,G,C,S,E,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,M,C,E,A,a,O,S,Q,G,C,Q,G,C,S,C,C,C,C,C,E,I,E,A,S,C,C,C,E,K,C,O,S,C,c,C,I,C,E,I,A,O,C,E,E,E,I,O,C,E,E,G,G,G,I,E,O,wB,C,E,U,A,E,G,C,E,G,C,I,C,G,E,K,C,G,E,E,G,E,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CAiBaxgQ,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,yBACYr1J,MAAAA,SAAAA,C,EACrB,IAIIm1V,EAJE8pD,EAAgB,IAAA,CAAKY,gBAAL,GAEdjxB,EAAc5uX,EAAM+jW,oBAHgD,CAGpE6qB,SAHoE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ACw8Z,CAAD,EAChB,IAAMrvB,EAAQ,AAAA,CAAA,EAAA,EAAA,UAAA,AAAA,EAAe,CAC3Bt1C,EACA,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAYA,EAAIn5M,EAAUy9Q,EAAOC,MAAP,CAAcI,EAAxC,EAAsD7jT,QAAtD,CAA+Dob,WAFpC,CAAf,EAIRuzB,EAAK,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAc4lP,EAAOC,GAC5B7lP,GAAMA,EAAGlC,QAAH,CAAY19I,MAAtB,EAEEi6R,CAAAA,EAAKr6I,EAAGlC,QAAH,CAAY,EAAZ,CAAezsC,QAAf,CAAwBob,WAA7B,AAA6BA,CAEhC,EACF,EACF,CACD,OAAO4tK,CACR,C,E,C,E,A,E,S,C,G,G,E,E,G,CAtM0C7qI,EAAAA,A,E,SAAAA,eAAAA,C,C,E,O,C,uB,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,yB,C,K,EEpB7C,I,EAAA,E,C,EAAA,EAAA,W,E,U,C,E,C,Q,C,E,E,E,S,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,G,A,K,I,E,M,A,e,6D,O,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CAcakB,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,E,I,C,E,S,K,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,I,I,E,E,E,E,U,M,C,E,A,M,G,E,E,E,E,I,C,C,E,C,S,C,E,C,M,C,EACmD,6B,EAAA,E,E,E,I,C,K,C,E,C,I,C,C,M,C,M,O,c,C,E,E,C,MAAA,K,W,C,E,a,C,E,S,C,C,G,C,C,E,CAAA,K,C,C,O,E,C,C,I,cAElDhtI,MAAAA,SAAAA,C,CAAmBtoB,C,EAE9B,C,E,C,I,sBAEmBsoB,MAAAA,SAAAA,C,CAA2BtoB,C,EAC7CsoB,EAAMk/W,SAAN,GACIxnY,EAAM6jW,UAAN,EAAoB7jW,EAAM6jW,UAAN,CAAiB82D,UAAzC,CACE,IAAA,CAAKC,uBAAL,CAA+B,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAS,IAAA,CAAKC,iBAAd,CAAiC76Z,EAAM6jW,UAAN,CAAiB82D,UAAlD,EAE/B,IAAA,CAAKC,uBAAL,CAA+B,IAAA,CAAKC,iBAApC,AAEH,C,E,C,I,qBAEkBvyY,MAAAA,SAAAA,C,CAA0BtoB,C,EAC3C,IAAA,CAAKmgZ,gBAAL,CAAsB73X,GACtB,IAAM22X,EAAgB,IAAA,CAAKY,gBAAL,GAOtB,GALI,IAAA,CAAK+a,uBAAL,EAAgC,IAAA,CAAKA,uBAAL,CAA6BzmU,MAAjE,EAEE,IAAA,CAAKymU,uBAAL,CAA6BzmU,MAA7B,GAGE8qT,EAAcj6Y,MAAd,CAAuB,EAAG,CAE5B,IAAMkmZ,EAAwB,CAC5BnrZ,KAAM,UACNsxH,YAAa,CAAA,EAAA,CAAA,MAAA,C,A,S,C,E,G,M,O,C,G,O,E,E,EAAK4tR,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,EAAAA,I,A,S,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A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AA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,CAAiB0E,EAAAA,A,E,SAAAA,eAAAA,C,C,E,O,C,Q,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,mB,C,K,EEF9B,IAAA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,E,O,A,S,C,E,G,M,O,C,G,O,E,E,E,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,E,I,A,S,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,E,I,A,W,M,A,U,uI,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,G,A,K,I,E,M,A,e,6D,O,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,CAMaoB,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,E,I,C,E,S,I,I,G,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,I,I,E,U,M,C,E,A,M,G,E,E,E,E,I,C,C,E,C,S,C,E,C,OACmB,EAAA,E,E,E,I,C,K,C,E,C,I,C,C,M,C,KAAA,8BAAA,CAAA,GACX,EAAA,EAAA,GAAA,mBAAA,E,EACA,EAAA,EAAA,GAAA,mBAAA,GAEY,EAAA,EAAA,GAAA,+BAAA,SAAA,CAAA,EAA0C,IAAvCypQ,EAAuC,EAAvCA,SAAuC,CAA5BC,EAA4B,EAA5BA,SAA4B,CAAA,EAC1Br7D,AAD0B,EAAjBA,UAAiB,EACZ,CAAA,EAAnDs7D,EAD+D,EAC/DA,WAD+D,CAClDC,EADkD,EAClDA,mBADkD,CAEjEpjR,EAAW,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAaijR,EAAWC,EAAWC,GAMpD,OAJIC,GACFA,EAAoBpjR,GAGfA,CACR,G,C,C,O,E,C,C,I,iBAEcA,MAAAA,SAAAA,C,CAAU6nN,C,EAAa,IAAA,EACGA,GAAc,CAAA,EAA7Cw7D,EAD4B,EAC5BA,aAD4B,CACbF,EADa,EACbA,WADa,CAE9BjtS,EAASitS,GAAeA,EAAYjtS,KAA5B,EAAsC,aAUpD,OAPImtS,EACKA,EAAcrjR,GAGjB,GA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AE,GAG3C,MAAO,AAAA,CAAA,EAAA,EAAA,eAAc,AAAd,EAAgB,EAAI,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,GAAI,KAAK,IAAI,CAAC,EAAI,IAAK,EAAQ,KAAK,CACxF,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,e,C,K,EErCA,IAAA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,E,O,I,C,G,G,O,qB,C,C,I,E,O,qB,C,G,G,C,E,E,M,C,S,C,E,O,O,wB,C,E,G,U,A,E,E,E,I,C,K,C,E,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,M,C,E,A,a,O,S,Q,G,C,Q,G,C,S,C,C,C,C,C,E,I,E,A,S,C,C,C,E,K,C,O,S,C,c,C,I,C,E,I,A,O,C,E,E,E,I,O,C,E,E,G,G,G,I,E,O,wB,C,E,U,A,E,G,C,E,G,C,I,C,G,E,K,C,G,E,E,G,E,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CAKA,IAAM+juB,EAAmB,EAAzB,CAEa1iuB,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,cACCntI,MAAAA,SAAAA,C,CAAmBtoB,C,EAC7B,IAAMmia,EAAgB,A,S,C,E,I,I,E,E,E,U,M,C,I,C,I,E,A,M,S,C,E,C,S,C,E,C,C,C,C,E,E,E,O,G,C,G,O,C,S,C,M,E,E,C,C,E,C,A,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,A,C,C,E,C,C,G,O,yB,C,O,gB,C,E,O,yB,C,I,E,O,I,O,C,S,C,E,O,c,C,E,E,O,wB,C,E,G,E,C,O,C,EAAA,CAAA,EACjBnia,EADL,CAGE4/V,OAAQ,WAAQ,CAHI,GAMtB,EAAA,EAAA,EAAA,SAAA,EAAA,cAAA,IAAA,EAAA,IAAA,CAAA,IAAA,CAAkBt3U,EAAO65Y,EAC1B,C,E,C,I,cAEWnia,MAAAA,SAAAA,C,EACV,IAAMqia,EAAiB,IAAA,CAAKniB,iBAAL,CAAuBlgZ,GAE9C,GAAIqia,GAAkBA,AAAiC,YAAjCA,EAAepsT,QAAf,CAAwBl2G,IAAxB,CAA4C,CAAA,IAQ5DgoB,EAR4D,EAEjB87U,AADxB7jW,EAAf6jW,UADwD,EAEH,CAAA,EAArDw7D,EAFwD,EAExDA,aAFwD,CAEzCD,EAFyC,EAEzCA,mBAFyC,CAK1D9wR,EAAW,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAa+zR,GACxB/sZ,EAAO,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAS+sZ,GAetB,OAXEt6Y,EADEs3Y,EACKA,EAAc/pZ,GAIjB,GAAA,MAAA,CAAMmtD,WAAWntD,GAAMytD,OAAjB,CAAyB,GAA/B,KAAA,MAAA,CAXQ,SAcVq8V,GACFA,EAAoB9pZ,GAGf,CACL,CACE45D,SAAUo/D,EAASr4B,QAAT,CAAkBob,WAD9B,CAEEtpG,KAAAA,CAFF,EADF,AAMD,CACD,OAAOow2B,CACR,C,E,C,E,A,E,S,C,G,G,E,E,G,CA3CkC3ouB,EAAAA,EAAAA,eAAAA,C,C,E,O,C,e,C,C,G,E,Q,S,C,C,C,E,E,E,O,E,E,E,O,C,U,W,O,C,G,I,E,E,SCUtB,SAAA,EAAc,CAAO,EAChC,MAAO,AAAA,CAAA,EAAA,EAAA,UAAS,AAAT,EAAW,EAAS,SAAU,CAAK,CAAE,CAAI,EAC5C,OAAO,EAAQ,AAUvB,SAAuB,CAAI,EACvB,IACI,EADA,EAAQ,EAEZ,OAAQ,EAAK,IAAI,EACb,IAAK,UACD,OAAO,EAAY,EAAK,WAAW,CACvC,KAAK,eACD,IAAK,EAAI,EAAG,EAAI,EAAK,WAAW,CAAC,MAAM,CAAE,IACrC,GAAS,EAAY,EAAK,WAAW,CAAC,EAAE,EAE5C,OAAO,CAMf,CACA,OAAO,CACX,EA5BqC,EACjC,EAAG,EACP,CA2BA,SAAS,EAAY,CAAM,EACvB,IAAI,EAAQ,EACZ,GAAI,GAAU,EAAO,MAAM,CAAG,EAAG,CAC7B,GAAS,KAAK,GAAG,CAAC,EAAS,CAAM,CAAC,EAAE,GACpC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,MAAM,CAAE,IAC/B,GAAS,KAAK,GAAG,CAAC,EAAS,CAAM,CAAC,EAAE,EAE5C,CACA,OAAO,CACX,CAcA,SAAS,EAAS,CAAM,EAQpB,IAPI,EACA,EAEA,EACA,EACA,EACA,EACA,EAAQ,EACR,EAAe,EAAO,MAAM,CAChC,GAAI,EAAe,EAAG,CAClB,IAAK,EAAI,EAAG,EAAI,EAAc,IACtB,IAAM,EAAe,GAErB,EAAa,EAAe,EAC5B,EAAc,EAAe,EAC7B,EAAa,GAER,IAAM,EAAe,GAE1B,EAAa,EAAe,EAC5B,EAAc,EACd,EAAa,IAIb,EAAa,EACb,EAAc,EAAI,EAClB,EAAa,EAAI,GAErB,EAAK,CAAM,CAAC,EAAW,CACvB,EAAK,CAAM,CAAC,EAAY,CAExB,GAAU,AAAA,CAAA,EAAI,AADT,CAAM,CAAC,EAAW,AACP,CAAC,EAAE,EAAI,EAAI,CAAE,CAAC,EAAE,CAAA,EAAK,KAAK,GAAG,CAAC,EAAI,CAAE,CAAC,EAAE,GAE3D,EAAQ,eAAA,EAA4B,CACxC,CACA,OAAO,CACX,CACA,SAAS,EAAI,CAAG,EACZ,OAAO,EAAO,KAAK,EAAE,CAAI,GAC7B,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,gB,C,K,EEjHA,IAAA,EAAA,EAAA,EAAA,UAEA,EAAA,EAAA,EAAA,UAEA,EAAA,EAAA,EAAA,U,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,G,A,K,I,E,M,A,e,6D,O,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CAMA,IAAM2ouB,EAAmB,EAAzB,CAEaziuB,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,E,I,C,E,S,K,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,I,I,E,E,E,E,E,U,M,C,E,A,M,G,E,E,E,E,I,C,C,E,C,S,C,E,C,O,EACI,E,E,E,I,C,K,C,E,C,I,C,C,M,C,K,EAAA,e,EAAA,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAQ,SAAA,CAAA,EAA4C,IAAzCmuM,EAAyC,EAAzCA,UAAyC,CAA7B6/D,EAA6B,EAA7BA,MAA6B,CAArBzjF,EAAqB,EAArBA,MAAqB,CAAb4K,EAAa,EAAbA,MAAa,CAC7D6a,EAAWyyhB,EAEf,GAAIz0d,GAAUzjF,GAAU4K,EAAQ,CAAA,IAW1B9iU,EAX0B,EACiB87U,GAAc,CAAA,EAArDw7D,EADsB,EACtBA,aADsB,CACPD,EADO,EACPA,mBADO,CAM1B33Q,EAAQ3sI,KAAKw+C,GAAL,CAASigW,AAFN,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAYmK,EAAQzjF,GACpB,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAYyjF,EAAQ74E,IAE/BpjM,EAAQ,KACVA,CAAAA,EAAQ,IAAMA,CADhB,EAME1/H,EADEs3Y,EACKA,EAAc53Q,GAIjB,GAAA,MAAA,CAAMhlF,WAAWglF,GAAO1kF,OAAlB,CAA0B,GAAhC,KAAA,MAAA,CAfQ,OAkBVq8V,GACFA,EAAoB33Q,GActBi+M,EAAW,CACT,CACEx2R,SAba,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAW,CAC1BnvE,KAAM,oBACN2iJ,SAAU,CAACu9L,EAAQ4K,EAAT,CAAiBtkV,GAAjB,CAAqB,SAAC6xD,CAAD,EAAA,MAAQ,CACrCr4D,KAAM,UACNk2G,SAAU,CACRl2G,KAAM,QACNsxH,YAAaj5D,CAFL,CAF2B,CAAR,EAFL,GASzB69C,QATc,CASLob,WATZ,CAcItpG,KAAAA,CAFF,EADF,AAMD,CAED,OAAO29U,CACR,G,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,C,O,E,C,C,I,cAEWp9U,MAAAA,SAAAA,C,CAAmBtoB,C,EACzB,IAAA,CAAK6/Y,gBAAL,GAAwB76Y,MAAxB,EAAkC,GACpC,IAAA,CAAKqrX,kBAAL,GAGF,IAAA,CAAK8vB,gBAAL,CAAsB73X,EACvB,C,E,C,I,oBAGiBA,MAAAA,SAAAA,C,CAAyBtoB,C,EACzCA,EAAMikW,cAAN,CAAqB,OACtB,C,E,C,I,YAESjkW,MAAAA,SAAAA,C,EACR,IAAMi/Y,EAAgB,IAAA,CAAKY,gBAAL,GAEhB9wU,E,A,S,C,E,G,M,O,C,G,O,E,E,EAAakwU,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,EAAAA,I,A,S,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,EAAAA,I,A,W,M,A,U,uI,IAMnB,OAJIA,EAAcj6Y,MAAd,CAAuB,GAAKhF,EAAM+jW,oBAAtC,EACEh1R,EAAOppE,IAAP,CAAY3F,EAAM+jW,oBAAN,CAA2B6qB,SAAvC,EAGK7/S,CACR,C,E,C,I,YAGS/uE,MAAAA,SAAAA,C,EACR,IAAM0kW,EAAiC,CAAE3kW,KAAM,oBAAqB2iJ,SAAU,EAAVA,AAA7B,EAC/BA,EAAagiN,EAAbhiN,QAF6D,CAI/D3zE,EAAS,IAAA,CAAK4rP,SAAL,CAAe36T,GAsB9B,OApBI+uE,EAAO/pE,MAAP,CAAgB,EAClB09I,EAAS/8I,IAAT,CAAc,CACZ5F,KAAM,UACN+mF,WAAY,CAAE+nS,UAAW,WAAb,EACZ54Q,SAAU,CACRl2G,KAAM,aACNsxH,YAAa,CAACtiD,CAAM,CAAC,EAAR,CAAYA,CAAM,CAAC,EAAnB,CAAuBA,CAAM,CAAC,EAA9B,CAAbsiD,AAFQ,CAHE,GAQLtiD,EAAO/pE,MAAP,CAAgB,GACzB09I,EAAS/8I,IAAT,CAAc,CACZ5F,KAAM,UACN+mF,WAAY,CAAE+nS,UAAW,WAAb,EACZ54Q,SAAU,CACRl2G,KAAM,aACNsxH,YAAa,CAACtiD,CAAM,CAAC,EAAR,CAAYA,CAAM,CAAC,EAAnB,CAAbsiD,AAFQ,CAHE,GAUTqzO,CACR,C,E,C,I,cAEW1kW,MAAAA,SAAAA,C,EACV,IAAM+uE,EAAS,IAAA,CAAK4rP,SAAL,CAAe36T,GAE9B,OAAO,IAAA,CAAK+ja,YAAL,CAAkB,CACvBlgE,WAAY7jW,EAAM6jW,UADK,CAEvB6/D,OAAQ30V,CAAM,CAAC,EAFQ,CAGvBkxQ,OAAQlxQ,CAAM,CAAC,EAHQ,CAIvB87Q,OAAQ97Q,CAAM,CAAC,EAAf87Q,AAJuB,EAM1B,C,E,C,E,A,E,S,C,G,G,E,E,G,CAlHmCz2L,EAAAA,EAAAA,eAAAA,C,C,E,O,C,gB,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,O,CEgBvB,SAAiBgsD,CAAjB,EACb,IACIC,EADAC,EAAa,CAAA,EAGjB,OAAO,SAAC/qK,CAAD,EACL,IAAK,IAAMh4C,KAAOg4C,EAChB,GAAI,CAAC6yP,AAjCX,SAAiB9rS,CAAjB,CAAyBoD,CAAzB,EACE,GAAIpD,IAAMoD,EACR,MAAO,CAAA,EAET,GAAI8E,MAAMC,OAAN,CAAcnI,GAAI,CAGpB,IAAMi8E,EAAMj8E,EAAE0I,MAAd,CACA,GAAI,CAACtF,GAAKA,EAAEsF,MAAF,GAAauzE,EACrB,MAAO,CAAA,EAGT,IAAK,IAAIhgC,EAAI,EAAGA,EAAIggC,EAAKhgC,IACvB,GAAIj8C,CAAC,CAACi8C,EAAF,GAAS74C,CAAC,CAAC64C,EAAf,CACE,MAAO,CAAA,EAGX,MAAO,CAAA,CACR,CACD,MAAO,CAAA,CACR,EAakBhD,CAAI,CAACh4C,EAAN,CAAY+iN,CAAU,CAAC/iN,EAAvB,EAA8B,CACxC8iN,EAAeD,EAAQ7qK,GACvB+qK,EAAa/qK,EACb,KACD,CAEH,OAAO8qK,CACR,CACF,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,a,C,K,E,I,E,E,S,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,E,O,A,S,C,E,G,M,O,C,G,O,E,E,E,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,E,I,E,I,A,W,M,A,U,uI,G,C,S,E,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,E,O,I,C,G,G,O,qB,C,C,I,E,O,qB,C,G,G,C,E,E,M,C,S,C,E,O,O,wB,C,E,G,U,A,E,E,E,I,C,K,C,E,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,G,A,K,I,E,M,A,e,6D,O,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,CEtBYzqD,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,E,I,C,EAGX,SAAA,EAAY3vG,CAAZ,EAAsC,IAAA,EAAA,OAAA,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,EAAA,IAAA,CAAA,GAAA,EAAA,EACpC,EAAA,EAAA,IAAA,CAAA,IAAA,GADoC,WAAA,KAAA,GAEpC,EAAKi/W,QAAL,CAAgBj/W,EAFoB,CAGrC,C,O,E,C,C,I,wBAGC39B,MAAAA,SAAAA,C,CACA68Y,C,CACAC,C,EAEA,OAAOrpa,OAAO0H,MAAP,CAAc6kB,EAAO,CAC1BsmW,UAAWw2C,EAAWnvT,QAAX,CAAoBob,WADL,CAE1Bo+Q,qBAAsB01B,GAAcA,EAAWlvT,QAAX,CAAo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AAyBtoB,C,EACzC,IAAA,CAAKkla,QAAL,CAAch/D,iBAAd,CAAgC,IAAA,CAAKigE,kBAAL,CAAwB79Y,EAAOtoB,GAAQA,EACxE,C,E,C,E,A,E,S,C,G,G,E,E,G,CAxJgCo0J,EAAAA,A,E,SAAAA,eAAAA,C,C,E,O,C,a,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,I,C,E,O,C,+B,C,K,E,E,O,C,+B,CEfY,EAAI,E,E,O,C,I,CAK/B,CAClB3yF,OAAQ,EACRkvD,OAAQ,EACRgiD,OAAQ,CAHU,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,O,C,K,E,I,E,E,S,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,E,O,I,C,G,G,O,qB,C,C,I,E,O,qB,C,G,G,C,E,E,M,C,S,C,E,O,O,wB,C,E,G,U,A,E,E,E,I,C,K,C,E,E,C,O,C,C,S,E,C,E,I,I,E,E,E,U,M,C,I,C,I,E,A,M,S,C,E,C,S,C,E,C,C,C,C,E,E,E,O,G,C,G,O,C,S,C,E,E,E,E,C,C,E,C,G,O,yB,C,O,gB,C,E,O,yB,C,I,E,O,I,O,C,S,C,E,O,c,C,E,E,O,wB,C,E,G,E,C,O,C,C,S,E,C,E,G,A,a,O,Q,A,M,C,C,O,Q,C,C,C,G,M,O,C,I,C,E,A,S,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,E,E,E,C,I,E,E,E,W,E,M,C,E,E,E,kB,A,G,E,M,C,C,K,C,C,E,C,K,C,E,M,C,C,I,A,C,E,E,S,C,E,M,C,E,E,C,C,C,M,A,U,wI,C,I,E,E,E,C,E,E,C,E,M,C,E,W,E,C,C,O,Q,C,E,E,E,W,I,E,E,I,G,O,E,E,I,C,C,E,E,S,C,E,E,C,E,E,C,E,E,W,G,C,G,A,M,E,M,E,E,M,E,Q,C,G,E,M,C,C,C,C,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,CEGpB,IAAMgntB,EAAc,CAAC,WAAY,cAAe,WAAY,UAAW,SAAU,QAAjF,CAOqBzyd,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,eAON5+Y,MAAAA,SAAAA,C,EAEZ,C,E,C,I,kBAEeA,MAAAA,SAAAA,C,EAEf,C,E,C,I,iBAEcA,MAAAA,SAAAA,C,EAEd,C,E,C,I,aAEUA,MAAAA,SAAAA,C,EAEV,C,E,C,I,gBAEaA,MAAAA,SAAAA,C,EAEb,C,E,C,I,eAEYA,MAAAA,SAAAA,C,EAEZ,C,E,C,I,kBAGiB,MAAA,WAChB,IAAA,CAAKpkB,QAAL,CAAc,CACZoja,oBAAqB,CAEnB//B,iBAAkB,KAElB2c,wBAAyB,KAEzBzU,qBAAsB,KAGtB83B,aAAc,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ACAzU,qBAAAA,EACA2pB,YAAayO,CARI,EAUpB,C,E,C,I,WAEQ1jB,MAAAA,SAAAA,C,EAEP,OAAO,IAAA,CAAKvgZ,OAAL,CAAagka,IAAb,CAAkBe,mBAAlB,CAAsC,CAC3C56Y,EAAGo2X,CAAY,CAAC,EAD2B,CAE3CnvX,EAAGmvX,CAAY,CAAC,EAF2B,CAG3C5pP,SAAU,CAAC,IAAA,CAAKv6J,KAAL,CAAWlC,EAAZ,CAHiC,CAI3C+pG,OAAQ,IAAA,CAAK7nG,KAAL,CAAW6/V,aAJwB,CAK3CthQ,MAAO,IAAA,CAAKv+F,KAAL,CAAW8/V,YAAlBvhQ,AAL2C,EAO9C,C,E,C,I,kBAEeqqU,MAAAA,SAAAA,C,EACd,MAAO,CACLA,EAAahnZ,OAAb,CACG,IAAA,CAAKhe,OAAL,CAAaqgI,EAAb,CAAgBukD,MAAjB,CAA8Cn2D,qBAA9C,GAAsE1nF,IAFnE,CAGLi+X,EAAa/mZ,OAAb,CACG,IAAA,CAAKje,OAAL,CAAaqgI,EAAb,CAAgBukD,MAAjB,CAA8Cn2D,qBAA9C,GAAsExnF,GAJnE,CAAP,AAMD,C,E,C,I,eAEYs5W,MAAAA,SAAAA,C,EAEX,OAAO,IAAA,CAAKvgZ,OAAL,CAAawgI,QAAb,CAAsBgkC,SAAtB,CAAgC,CAAC+7O,CAAY,CAAC,EAAd,CAAkBA,CAAY,CAAC,EAA/B,CAAhC,CACR,C,E,C,E,A,E,S,C,G,G,E,E,G,CAzPO+od,EAAAA,EAAAA,OAAAA,C,C,E,O,C,O,C,EAHWhmc,EAAAA,E,YAIA,gB,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,O,C,K,E,I,E,E,S,E,E,S,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,M,C,E,A,a,O,S,Q,G,C,Q,G,C,S,C,C,C,C,C,E,I,E,A,S,C,C,C,E,K,C,O,S,C,c,C,I,C,E,I,A,O,C,E,E,E,I,O,C,E,E,G,G,G,I,E,O,wB,C,E,U,A,E,G,C,E,G,C,I,C,G,E,K,C,G,E,E,G,E,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,S,E,C,C,C,E,I,E,O,I,C,G,G,O,qB,C,C,I,E,O,qB,C,G,G,C,E,E,M,C,S,C,E,O,O,wB,C,E,G,U,A,E,E,E,I,C,K,C,E,E,C,O,C,C,S,E,C,E,I,I,E,E,E,U,M,C,I,C,I,E,A,M,S,C,E,C,S,C,E,C,C,C,C,E,E,E,O,G,C,G,O,C,S,C,M,E,E,C,C,E,C,A,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,A,C,C,E,C,C,G,O,yB,C,O,gB,C,E,O,yB,C,I,E,O,I,O,C,S,C,E,O,c,C,E,E,O,wB,C,E,G,E,C,O,C,CEhBrB,IAAMrna,EAAY,EAAA,CAAA,EACbut2B,EAAAA,OAAAA,CAAUvt2B,YADG,CAAlB,CAEEkgW,4BAA6B,CAAEhgW,KAAM,SAAUqqC,IAAK,EAAGntC,MAAO6lE,OAAOi7F,gBAAd9gK,AAA1B,CAFb,GAKGwsa,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,aACN,MAAA,WACX,IADW,EACL9+P,EAAO,EAAA,EAAA,EAAA,SAAA,EAAA,aAAA,IAAA,EAAA,IAAA,CAAA,IAAA,EAYb,OAVAA,EAAQm4C,EAAR,CAAa,AAAA,CAAA,EAAA,EAAA,YAAA,AAAA,EACXn4C,EAAQm4C,EADG,CAEX,cAFW,2GAUb,EAAA,CAAA,EACKn4C,EADL,CAEEz7H,OAAM,EAAA,CAAA,EACAy7H,EAAQz7H,MAAR,EAAkB,CAAA,EADxBA,CAEE,WAAY,AAAC,CAAA,AAAA,CAAA,AAAA,OAAA,CAAA,EAAAy7H,EAAQz7H,MAAAA,AAAAA,GAAR,AAAA,KAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAiB,WAAjB,AAAiB,GAAe,EAAA,EAAIriB,MAArC,CAAZ,6CAFI,EAFR,EASD,C,E,C,I,OAEI7sB,MAAAA,SAAAA,C,EACH,EAAA,EAAA,EAAA,SAAA,EAAA,OAAA,IAAA,EAAA,IAAA,CAAA,IAAA,CAAA,EAAA,CAAA,EACKA,EADL,CAEEuwK,SAAQ,EAAA,CAAA,EACHvwK,EAAMuwK,QADH,CAARA,CAEEwvL,4BAA6B,IAAA,CAAK//V,KAAL,CAAW+/V,2BAAxCA,AAFM,EAFV,GAOD,C,E,C,E,A,E,S,C,G,G,E,E,G,CAjC4CqtgB,EAAAA,EAAAA,OAAAA,C,C,E,O,C,O,C,EAoC/C3jc,EAAkB5pa,YAAlB,CAAiCA,EACjC4pa,EAAkBxxR,SAAlB,CAA8B,mB,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,W,CEhCvB,SACL5wH,CADK,EAG6B,IADlC+0U,EACkC,UAAA,MAAA,CAAA,GAAA,AAAA,KAAA,IAAA,SAAA,CAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CADe,CAAC,IAAK,EAAG,EAAG,IAC3B,QAClC,AAAK53V,MAAMC,OAAN,CAAc4iB,GAGZ,CAACA,AAAW,IAAXA,CAAK,CAAC,EAAN,CAAgBA,AAAW,IAAXA,CAAK,CAAC,EAAN,CAAgBA,AAAW,IAAXA,CAAK,CAAC,EAAN,CAAgBA,AAAW,IAAXA,CAAK,CAAC,EAAN,CAAxD,CAFS+0U,CAGV,E,E,O,C,+B,CA2BM,SAASs2B,EACdjrU,CADK,CAEL/J,CAFK,CAGLiB,CAHK,EAKL,GAAI,CAACn6C,MAAMC,OAAN,CAAcgjD,CAAK,CAAC,EAApB,EACH,MAAO,CAAA,EAET,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMziD,MAA1B,CAAkCuzC,IAChC,GAAIm6U,EAAgCjrU,CAAK,CAAClP,EAAP,CAAA,EAAA,CAAA,MAAA,C,A,S,C,E,G,M,O,C,G,O,E,E,EAAemF,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,EAAAA,I,EAAAA,I,A,W,M,A,U,uI,IAAf,CAAuBnF,EAAvB,EAA2BoG,GAAK,CACjEA,EAAG8I,EAAO/J,GACV,KACD,CAEH,MAAO,CAAA,CACR,E,E,O,C,kC,CAEM,SACL25B,CADK,CAELC,CAFK,CAGL8yV,CAHK,EASL,IAAMnrI,EAAK,AAAA,CAAA,EAAA,EAAA,KAAA,AAAA,EAAMmrI,GACXt3C,EAAY,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAoB7zF,EALP,CAC7Bl/R,KAAM,aACNsxH,YAAa,CAACh6C,EAAIC,EAAlB+5C,AAF6B,GAMzB2hQ,EAAc,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAQ37S,EAAIC,GAS1B47S,EAAoBC,AAHvBi3C,CAAAA,CAAY,CAAC,EAAb,CAAkB/yV,CAAE,CAAC,EAAtB,AAAsB,EAAOC,CAAAA,CAAE,CAAC,EAAH,CAAQD,CAAE,CAAC,EAAD,AAAC,EAAM,AAAC+yV,CAAAA,CAAY,CAAC,EAAb,CAAkB/yV,CAAE,CAAC,EAAtB,AAAsB,EAAOC,CAAAA,CAAE,CAAC,EAAH,CAAQD,CAAE,CAAC,EAAD,AAAC,EAGxC,EAAI27S,EAAc,GAAKA,EAAc,IAI/E79B,EAAK,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAY79Q,EAAIw7S,EAAWI,GAChCG,EAAK,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAYh8S,EAAIy7S,EAAWI,GAEtC,MAAO,CAAC/9B,EAAGl/O,QAAH,CAAYob,WAAb,CAA0BgiQ,EAAGp9Q,QAAH,CAAYob,WAAtC,CAAP,AACD,E,E,O,C,U,C,E,E,O,C,G,C,E,E,O,C,2B,CAYM,SACL1hD,CADK,CAELgkT,CAFK,CAGLvvP,CAHK,EAKL,IAAMwvP,EAAa,IAAI6G,EAAAA,OAAJ,CAAwBr2P,GAGrC0vP,EAAkBziQ,AADkB1hD,EAAKsmC,QAAL,CAAcob,WAAxD,CACoC9qH,GAAZ,CAAgB,SAAxC,CAAA,EAAwC,IAAA,EAAA,EAAA,EAAA,GAAEwnB,EAAF,CAAA,CAAA,EAAA,CAAKiH,EAAL,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAQqgD,EAAR,AAAA,KAAA,IAAA,EAAY,EAAZ,EAAA,OAAmBu+S,EAAWtqR,OAAX,CAAmB,CAACv7E,EAAGiH,EAAGqgD,EAA1B,CAAnB,GAJtB,EAAA,EAMHu+S,EAAWtqR,OAAX,CAAmBqqR,EAAQ19Q,QAAR,CAAiBob,WAApC,EANG,GAMXtjG,EANW,CAAA,CAAA,EAAA,CAMRiH,EANQ,CAAA,CAAA,EAAA,CASdk/V,EAActtV,IACdutV,EAAe,CAAA,EAEnBL,EAAgBx2X,OAAhB,CAAwB,SAAA,CAAA,CAAW07B,CAAX,EAAqB,IAAA,EAAA,EAAA,EAAA,GAAnBohI,EAAmB,CAAA,CAAA,EAAA,CAAfC,EAAe,CAAA,CAAA,EAAA,CAC3C,GAAIrhI,AAAU,IAAVA,GADuC,IAAA,EAAA,EAK1B86V,CAAe,CAAC96V,EAAQ,EALE,CAAA,GAKpCihI,EALoC,CAAA,CAAA,EAAA,CAKhCC,EALgC,CAAA,CAAA,EAAA,CASrCu5H,EAAIv5H,EAAKG,EACTv6B,EAAIs6B,EAAKH,EACTlqH,EAAIkqH,EAAKI,EAAKD,EAAKF,EAGnBm6N,EAAM5gG,EAAIA,EAAI3zJ,EAAIA,EAClBkc,EAAWlhI,KAAKw+C,GAAL,CAASm6N,EAAI1lQ,EAAI+xG,EAAI9qG,EAAI+a,GAAKj1B,KAAKm5G,IAAL,CAAUogQ,GAIrDr4O,EAAWk4O,IACbA,EAAcl4O,EACdm4O,EAAe,CACbn7V,MAAAA,EACAgqN,GAAI,AAACljH,CAAAA,EAAKA,CAAAA,EAAI/xG,EAAI0lQ,EAAIz+P,CAAAA,EAAKy+P,EAAI1jP,CAAAA,EAAKskV,EACpCpxI,GAAI,AAACwwC,CAAAA,EAAK,CAAA,CAAC3zJ,EAAI/xG,EAAI0lQ,EAAIz+P,CAAAA,EAAK8qG,EAAI/vF,CAAAA,EAAKskV,CAHxB,GAMlB,GAvCiB,IAAA,EAyCQF,EAAlBn7V,EAzCU,EAyCVA,KAzCU,CAyCHgqN,EAzCG,EAyCHA,EAzCG,CAyCCC,EAzCD,EAyCCA,EAzCD,CAAA,EAAA,EA0CO6wI,CAAe,CAAC96V,EAAQ,EA1C/B,CAAA,GA0CXihI,EA1CW,CAAA,CAAA,EAAA,CA0CPC,EA1CO,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,EA2CO45N,CAAe,CAAC96V,EA3CvB,CAAA,GA2CXohI,EA3CW,CAAA,CAAA,EAAA,CA2CPC,EA3CO,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CA8CZs6N,EAAarB,EAAWr5N,EAAIC,EAAIE,EAAIC,GAGpC6oF,EAAKswI,EAjDO,AAAA,KAAA,IAAA,EA0CE,EA1CF,EAAA,AAAA,KAAA,IAAA,EA2CE,EA3CF,EAgDJoB,AADatB,EAAWr5N,EAAIC,EAAI8oF,EAAIC,GACf0xI,GAGnC,MAAO,CACL50X,KAAM,UACNk2G,SAAU,CACRl2G,KAAM,QACNsxH,YAAauiQ,EAAWxrN,SAAX,CAAqB,CAAC46E,EAAIC,EAAIC,EAA9B,CAFL,EAIVp8J,WAAY,CAEV+uH,KAAMq+K,EACNl7V,MAAOA,EAAQ,CAHL,CANP,CAYR,E,E,O,C,Y,CASM,SAAsBzjB,CAAtB,CAAoC6vB,CAApC,CAA0DwlY,CAA1D,EACL,IAAMpuI,EAAKjnR,EAAKP,OAAL,CAAaowB,UACxB,AAAIo3P,EAAK,EACAjnR,EAEFA,EAAKtJ,KAAL,CAAW,EAAGuwR,GAAMouI,EAAWr1Z,EAAKtJ,KAAL,CAAWuwR,EAClD,EAhMD,IAAA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,SAUA,EAAA,EAAA,EAAA,U,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,C,C,E,O,A,S,C,E,G,M,O,C,G,O,C,E,I,A,S,C,C,C,E,G,A,a,O,Q,O,Q,I,O,I,I,E,E,C,E,C,E,E,C,E,E,K,E,G,C,I,I,E,E,C,C,O,Q,C,G,C,C,E,A,C,E,E,I,E,E,I,A,I,E,I,C,E,K,E,C,G,E,M,G,G,E,C,G,C,M,E,C,E,C,E,E,C,Q,C,G,C,G,A,M,E,M,E,E,M,E,Q,C,G,E,M,C,C,C,O,E,E,E,I,E,E,I,A,W,M,A,U,4I,G,C,S,E,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,CAwFO,SAAS82F,EAAWr5N,CAApB,CAAgCC,CAAhC,CAA4CE,CAA5C,CAAwDC,CAAxD,EACL,IAAM8hL,EAAKliL,EAAKG,EACVgiL,EAAKliL,EAAKG,EAChB,OAAOv/I,KAAKm5G,IAAL,CAAUkoN,EAAKA,EAAKC,EAAKA,EACjC,CAEM,SAASo3C,EAAIl3X,CAAb,CAAwBoD,CAAxB,CAAmC07L,CAAnC,EACL,OAAO17L,EAAI07L,EAAQ9+L,EAAK,CAAA,EAAI8+L,CAAAA,CAC7B,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,O,C,K,E,I,E,E,S,E,E,S,E,E,S,E,E,SEtGD,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,E,O,A,S,C,E,G,M,O,C,G,O,E,E,E,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,E,I,A,S,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,E,I,A,W,M,A,U,uI,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,M,C,E,A,a,O,S,Q,G,C,Q,G,C,S,C,C,C,C,C,E,I,E,A,S,C,C,C,E,K,C,O,S,C,c,C,I,C,E,I,A,O,C,E,E,E,I,O,C,E,E,G,G,G,I,E,O,wB,C,E,U,A,E,G,C,E,G,C,I,C,G,E,K,C,G,E,E,G,E,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,S,E,C,C,C,E,I,E,O,I,C,G,G,O,qB,C,C,I,E,O,qB,C,G,G,C,E,E,M,C,S,C,E,O,O,wB,C,E,G,U,A,E,E,E,I,C,K,C,E,E,C,O,C,C,S,E,C,E,I,I,E,E,E,U,M,C,I,C,I,E,A,M,S,C,E,C,S,C,E,C,C,C,C,E,E,E,O,G,C,G,O,C,S,C,E,E,E,E,C,C,E,C,G,O,yB,C,O,gB,C,E,O,yB,C,I,E,O,I,O,C,S,C,E,O,c,C,E,E,O,wB,C,E,G,E,C,O,C,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,CAEA,IAAM25rB,EAAoBrluB,EAA1B,QAAA,CAEMmquB,EAA2B,CAC/B953B,KAAM,oBACN2iJ,SAAU,EAAVA,AAF+B,EAqB3B7iJ,EAAN,EAAA,CACEu4B,KAAM281B,CAD4C,EAG/CjhuB,EAAAA,OAAAA,CAAqBj0J,YAH0B,CAAA,CAMlD2jB,KAAM,EAN4C,CAOlDsgV,gBAAiB,EAPiC,CAQlDvmM,OAAQ,CAAA,EACRZ,QAAS,CAAA,EACTmB,eAAgBpK,EAAhBoK,+BAAAA,CACA1B,mBAAoB,EACpBC,mBAAoBv5F,OAAOi7F,gBAZuB,CAalDF,eAAgB,SAChB2uQ,YAAa,SAAC7sa,CAAD,EAAA,OAAOA,EAAE8sa,MAAT,AAAA,EACbC,iBAAkB,SAACC,CAAD,CAAkBC,CAAlB,SAChB,AAAIA,EACF,EAAA,CAAA,EACKA,EADL,CAEEH,OAAQE,CAFV,GAKK,CACLF,OAAQE,CADH,CAGR,EACD33J,WAhD4B,CAsBsB,GA6B/B+3J,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,kBAOD,MAAA,WAChB,EAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,IAAA,EAAA,IAAA,CAAA,IAAA,EAEA,IAAA,CAAK7oa,QAAL,CAAc,CACZipa,oBAAqB,EAArBA,AADY,EAGf,C,E,C,I,uBAGoB1mR,MAAAA,SAAAA,C,EACnB,MAAO,AAAA,CAAA,EAAA,EAAA,QAAA,AAAA,EAASA,EAAQ,IAAA,CAAKzmJ,KAAL,CAAWg1Q,UAA5B,CAAwC,CAAA,EAChD,C,E,C,I,sBAGmBvuH,MAAAA,SAAAA,C,EAClB,MAAO,AAAA,CAAA,EAAA,EAAA,OAAA,AAAA,EAAQA,CAAM,CAAC,EAAf,CAAmBA,CAAM,CAAC,EAA1B,CAA8B,IAAA,CAAKzmJ,KAAL,CAAWg1Q,UAAzC,CACR,C,E,C,I,eAEc,MAAA,WAAA,IAAA,EAAA,IAAA,CA0Gb,MAzGoB,CAClB,IAAIlhH,EAAAA,OAAJ,CACE,IAAA,CAAKqM,gBAAL,CAAsB,CACpBriK,GAAI,mBAEJs6B,KAAM,IAAA,CAAKp4B,KAAL,C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Q,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MA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,CAAC,CAAC,KAAV,CAAgBA,CAAC,CAAC,KAAF,CAAQ,GAAGA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAMA,CAAC,CAAC,KAAF,CAAQ,MAAM7D,EAAE+D,EAAE,IAAI,EAAU04D,EAAE,AAACA,CAAAA,AAAE,EAAbA,CAAAA,EAAE74D,EAAE,EAAE,CAAA,EAAS,CAAA,GAAI,EAAE,EAAE,EAAE64D,EAAE,EAAExjC,EAAEr1B,EAAE64D,EAAE,EAAEA,EAAEz8D,EAAEy8D,EAAE,EAAE54D,CAAC,CAAC,KAAF,CAAQo1B,EAAEp1B,CAAC,CAAC,KAAF,CAAQ44D,EAAE54D,CAAC,CAACo1B,EAAE,GAAG,EAAP,CAAUwjC,AAAE,EAAFA,EAAI54D,CAAC,CAACD,EAAE5D,EAAE,GAAG,EAAT,CAAY,GAAG6D,CAAC,CAAC,KAAF,CAAQA,CAAC,CAAC,KAAV,OAAsB,EAAz/J,AAA2gKF,GAAAA,AAAfA,CAAAA,EAAEE,AAAQ,EAARA,CAAC,CAAC,KAAF,AAAQ,IAAS,EAAEyF,IAAI,EAAkGtJ,OAA/Fy8D,EAAE94D,EAAE2F,EAAE,EAAEzF,CAAC,CAAC,KAAF,CAAQ44D,EAAcxjC,EAAEj5B,AAAdA,CAAAA,EAAE6D,AAAQ,EAARA,CAAC,CAAC,KAAF,AAAQ,EAAMyF,EAAE,EAAEzF,CAAC,CAAC,KAAF,CAAQo1B,EAAEp1B,CAAC,CAACo1B,EAAE,GAAG,EAAP,CAAUwjC,AAAE,EAAFA,EAAI54D,CAAC,CAAC7D,EAAE,GAAG,EAAP,CAAUsJ,AAAE,EAAFA,EAAItJ,EAAEA,EAAE,EAAE,EAAEskI,EAAEvyG,EAAS/xB,AAAE,EAAFA,C,CAAwCA,OAA1B6D,CAAC,CAAC7D,AAAXA,CAAAA,EAAEsgb,KAAK,GAAO,EAAL,CAAQ,GAAGtgb,EAAE,EAAEskI,EAAEvyG,EAAS/xB,AAAE,EAAFA,C,CAAau8a,SAAAA,GAAG97a,CAAZ,EAAyBkD,IAAAA,EAAE,EAAEG,EAAE,EAAEhE,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAE24C,EAAE,EAAEwS,EAAE,EAAK,GAA7CzuD,GAAI,GAAmDqD,EAAErD,EAAE,GAAG,EAAE4I,EAAExF,AAAQ,EAARA,CAAC,CAAC,KAAF,CAAyBF,EAAElD,AAAE,GAAnBA,CAAAA,EAAEoD,AAAW,EAAXA,CAAC,CAACpD,EAAE,IAAI,EAAR,AAAW,EAASyuD,EAAEprD,EAAEH,EAAE,EAAK,GAAA,GAAKlD,AAAE,EAAFA,EAA49Bi8C,EAAE54C,EAAEC,EAAED,MAA79B,CAAgB,GAAfhE,EAAE+D,AAAQ,EAARA,CAAC,CAACC,GAAG,EAAL,CAAa,CAAErD,CAAAA,AAAE,EAAFA,CAAE,IAAUsD,EAAED,EAAG,CAAA,EAAEhE,CAAAA,EAAG,EAAE8D,EAAE9D,EAAE6D,EAAE,EAAKI,IAAI,EAAEsF,IAAI,GAAxC,OAAoD,GAAA,AAACxF,CAAAA,AAAQ,EAARA,CAAC,CAAC,KAAF,AAAQ,GAAKE,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAwB,GAACJ,AAAAA,CAAAA,AAAE,EAAlBA,CAAAA,EAAEE,AAAQ,EAARA,CAAC,CAACpD,AAAZA,CAAAA,EAAEyuD,EAAE,EAAE,CAAA,GAAS,EAAL,AAAQ,EAAU,CAAA,GAAI,EAAE,CAACxS,EAAE34C,EAAEJ,EAAEC,E,K,CAAQC,CAAC,CAAC,KAAF,CAAQD,EAAEC,CAAC,CAACpD,GAAG,EAAL,CAAQkD,AAAE,GAAFA,EAAKE,CAAC,CAACE,EAAE,GAAG,EAAP,CAAUH,AAAE,EAAFA,EAAIC,CAAC,CAACE,EAAEH,GAAG,EAAP,CAAUA,E,M,CAAoB9D,GAAXgE,EAAEhE,IAAI,EAAKA,IAAI,EAAE,IAAI,CAAiC,GAAhCW,EAAEoD,AAAU,EAAVA,CAAC,CAACE,EAAE,GAAG,EAAP,CAA+BJ,AAAAA,CAAAA,AAAE,EAArBA,CAAAA,EAAEE,AAAW,EAAXA,CAAC,CAACE,EAAE,IAAI,EAAR,AAAW,CAAQ,GAAKtD,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAACoD,CAAC,CAAC,KAAF,CAAQA,CAAC,CAAC,KAAF,CAAQ,CAAE,CAAA,GAAGC,CAAAA,EAAG44C,EAAE34C,EAAEJ,EAAEC,E,KAA/C,CAA4DC,CAAC,CAACpD,EAAE,IAAI,EAAR,CAAWkD,EAAEE,CAAC,CAACF,EAAE,GAAG,EAAP,CAAUlD,EAAEi8C,EAAE34C,EAAEJ,EAAEC,E,K,CAASyF,EAAExF,AAAW,EAAXA,CAAC,CAACE,EAAE,IAAI,EAAR,CAAatD,EAAEoD,AAAW,EAAXA,CAAC,CAACE,EAAE,IAAI,EAAR,CAAgB,GAAA,GAAItD,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKsD,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAiC,GAAftD,EAAEoD,AAAQ,EAARA,CAAC,CAACC,AAAZA,CAAAA,EAAEH,AAAXA,CAAAA,EAAEI,EAAE,GAAG,CAAA,EAAM,EAAE,CAAA,GAAS,EAAL,CAAoDJ,EAAEG,OAAtB,GAAA,CAAfrD,CAAAA,EAAEoD,AAAQ,EAARA,CAAC,CAACF,GAAG,EAAL,AAAQ,EAAQ,CAAClD,EAAE,E,K,CAAwB,OAA2B,GAAfqD,EAAED,AAAQ,EAARA,CAAC,CAAC/D,AAAbA,CAAAA,EAAEW,EAAE,GAAG,CAAA,GAAS,EAAL,CAAqEA,EAAEqD,EAAEH,EAAE7D,OAAlC,GAAfgE,EAAED,AAAQ,EAARA,CAAC,CAAC/D,AAAbA,CAAAA,EAAEW,EAAE,GAAG,CAAA,GAAS,EAAL,CAA2BA,EAAEqD,EAAEH,EAAE7D,OAAjB,KAAkC+D,CAAAA,CAAC,CAACF,GAAG,EAAL,CAAQ,CAAtM,MAA6M+4C,EAAE74C,AAAU,EAAVA,CAAC,CAACE,EAAE,GAAG,EAAP,CAAYF,CAAC,CAAC64C,EAAE,IAAI,EAAR,CAAWj8C,EAAEoD,CAAC,CAACpD,EAAE,GAAG,EAAP,CAAUi8C,QAAQ,EAA7P,AAAmQrzC,GAAAA,EAAE,CAAoC,GAApBvF,EAAE,MAAOH,CAAAA,AAAxBA,CAAAA,EAAEE,AAAW,EAAXA,CAAC,CAACE,EAAE,IAAI,EAAR,AAAW,GAAc,CAAA,EAAG,EAAK,AAACF,CAAAA,AAAQ,EAARA,CAAC,CAACC,GAAG,EAAL,AAAQ,GAAKC,CAAAA,AAAE,EAAFA,CAAE,EAAiB,CAAA,GAAbF,CAAC,CAACC,GAAG,EAAL,CAAQrD,EAAK,CAACA,EAAE,CAACoD,CAAC,CAAC,KAAF,CAAQA,CAAC,CAAC,KAAF,CAAQ,CAAE,CAAA,GAAGF,CAAAA,EAAG+4C,EAAE34C,EAAEJ,EAAEC,E,K,C,MAAgE,GAAzCC,CAAC,CAAE,AAACA,CAAAA,AAAAA,CAAAA,AAAQ,EAARA,CAAC,CAAC64C,AAAfA,CAAAA,EAAErzC,EAAE,GAAG,CAAA,GAAW,EAAL,AAAQ,GAAKtF,CAAAA,AAAE,EAAFA,CAAE,EAAG24C,EAAErzC,EAAE,GAAG,CAAA,GAAI,EAAjC,CAAoC5I,EAAK,CAACA,EAAE,CAACi8C,EAAE34C,EAAEJ,EAAEC,E,K,CAASC,CAAC,CAACpD,EAAE,IAAI,EAAR,CAAW4I,EAA4B,EAAjBvF,CAAAA,EAAED,AAAQ,EAARA,CAAC,CAACF,AAAbA,CAAAA,EAAEI,EAAE,GAAG,CAAA,GAAS,EAAL,AAAQ,IAAUF,CAAC,CAACpD,EAAE,IAAI,EAAR,CAAWqD,EAAED,CAAC,CAACC,EAAE,IAAI,EAAR,CAAWrD,GAAEkD,CAAAA,EAAEE,AAAU,EAAVA,CAAC,CAACF,EAAE,GAAG,EAAP,AAAU,IAAQE,CAAC,CAACpD,EAAE,IAAI,EAAR,CAAWkD,EAAEE,CAAC,CAACF,EAAE,IAAI,EAAR,CAAWlD,GAAei8C,EAAE34C,EAAEJ,EAAEC,CAApU,MAA4U84C,EAAE34C,EAAEJ,EAAEC,CAAz9B,OAA++B,EAAl/B,AAAw/BG,IAAAA,CAAAA,IAAI,GAAGmrD,IAAI,CAAA,GAAkCpvD,AAAE,EAAnBA,CAAAA,EAAE+D,AAAQ,EAARA,CAAC,CAACpD,AAAZA,CAAAA,EAAEyuD,EAAE,EAAE,CAAA,GAAS,EAAL,AAAQ,GAAsB,GAAEpvD,AAAE,EAAFA,EAA+hC+D,CAAC,CAACpD,GAAG,EAAL,CAAQX,AAAE,GAAFA,EAAK+D,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAU/4C,AAAE,EAAFA,EAAIE,CAAC,CAACE,EAAEJ,GAAG,EAAP,CAAUA,EAAE0F,EAAE1F,MAAnkC,CAAI,GAAA,AAACE,CAAAA,AAAQ,EAARA,CAAC,CAAC,KAAF,AAAQ,GAAKqrD,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAwD,GAAvDA,EAAGrrD,AAAAA,CAAAA,AAAQ,EAARA,CAAC,CAAC,KAAF,AAAQ,EAAGF,EAAE,EAAEE,CAAC,CAAC,KAAF,CAAQqrD,EAAErrD,CAAC,CAAC,KAAF,CAAQ64C,EAAE74C,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAUwS,AAAE,EAAFA,EAAO,AAACxS,CAAAA,AAAE,EAAFA,CAAE,GAAK74C,CAAAA,AAAQ,EAARA,CAAC,CAAC,KAAF,AAAQ,EAAG,MAAOA,CAAAA,CAAC,CAAC,KAAF,CAAQ,EAAEA,CAAC,CAAC,KAAF,CAAQ,E,M,CAAY,GAAA,AAACA,CAAAA,AAAQ,EAARA,CAAC,CAAC,KAAF,AAAQ,GAAKqrD,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAACA,EAAGrrD,AAAAA,CAAAA,AAAQ,EAARA,CAAC,CAAC,KAAF,AAAQ,EAAGF,EAAE,EAAEE,CAAC,CAAC,KAAF,CAAQqrD,EAAErrD,CAAC,CAAC,KAAF,CAAQE,EAAEF,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAUwS,AAAE,EAAFA,EAAIrrD,CAAC,CAACE,EAAEmrD,GAAG,EAAP,CAAUA,E,M,CAAS7lD,EAAGvJ,AAAAA,CAAAA,AAAE,GAAFA,CAAE,EAAI6D,EAAE,EAAEG,EAAEhE,IAAI,EAAK,GAAA,GAAGA,IAAI,EAAE,IAAI,CAAiC,GAAhC6D,EAAEE,AAAU,EAAVA,CAAC,CAACqrD,EAAE,GAAG,EAAP,CAA+BzuD,AAAAA,CAAAA,AAAE,EAArBA,CAAAA,EAAEoD,AAAW,EAAXA,CAAC,CAACqrD,EAAE,IAAI,EAAR,AAAW,CAAQ,GAAKvrD,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAACE,CAAC,CAAC,KAAF,CAAQA,CAAC,CAAC,KAAF,CAAQ,CAAE,CAAA,GAAGC,CAAAA,E,KAAtC,CAAoDD,CAAC,CAACF,EAAE,IAAI,EAAR,CAAWlD,EAAEoD,CAAC,CAACpD,EAAE,GAAG,EAAP,CAAUkD,E,KAAtH,KAAmI,CAACC,EAAEC,AAAW,EAAXA,CAAC,CAACqrD,EAAE,IAAI,EAAR,CAAazuD,EAAEoD,AAAW,EAAXA,CAAC,CAACqrD,EAAE,IAAI,EAAR,CAAgB,GAAA,GAAIzuD,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKyuD,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAiC,GAAfzuD,EAAEoD,AAAQ,EAARA,CAAC,CAACC,AAAZA,CAAAA,EAAEH,AAAXA,CAAAA,EAAEurD,EAAE,GAAG,CAAA,EAAM,EAAE,CAAA,GAAS,EAAL,CAAoDvrD,EAAEG,OAAtB,GAAA,CAAfrD,CAAAA,EAAEoD,AAAQ,EAARA,CAAC,CAACF,GAAG,EAAL,AAAQ,EAAQ,CAACG,EAAE,E,K,CAAwB,OAA2B,GAAfA,EAAED,AAAQ,EAARA,CAAC,CAAC/D,AAAbA,CAAAA,EAAEW,EAAE,GAAG,CAAA,GAAS,EAAL,CAAqEA,EAAEqD,EAAEH,EAAE7D,OAAlC,GAAfgE,EAAED,AAAQ,EAARA,CAAC,CAAC/D,AAAbA,CAAAA,EAAEW,EAAE,GAAG,CAAA,GAAS,EAAL,CAA2BA,EAAEqD,EAAEH,EAAE7D,OAAjB,KAAkC+D,CAAAA,CAAC,CAACF,GAAG,EAAL,CAAQ,EAAEG,EAAErD,CAA1M,MAAiNqD,EAAED,AAAU,EAAVA,CAAC,CAACqrD,EAAE,GAAG,EAAP,CAAYrrD,CAAC,CAACC,EAAE,IAAI,EAAR,CAAWrD,EAAEoD,CAAC,CAACpD,EAAE,GAAG,EAAP,CAAUqD,EAAEA,EAAErD,QAAQ,EAArQ,AAA2QmD,GAAAA,AAAE,EAAFA,EAAI,CAAoC,GAApBD,EAAE,MAAOlD,CAAAA,AAAxBA,CAAAA,EAAEoD,AAAW,EAAXA,CAAC,CAACqrD,EAAE,IAAI,EAAR,AAAW,GAAc,CAAA,EAAG,EAAK,AAACrrD,CAAAA,AAAQ,EAARA,CAAC,CAACF,GAAG,EAAL,AAAQ,GAAKurD,CAAAA,AAAE,EAAFA,CAAE,EAAiB,CAAA,GAAbrrD,CAAC,CAACF,GAAG,EAAL,CAAQG,EAAK,CAACA,EAAE,CAACD,CAAC,CAAC,KAAF,CAAQA,CAAC,CAAC,KAAF,CAAQ,CAAE,CAAA,GAAGpD,CAAAA,E,K,C,MAAiE,GAAzCoD,CAAC,CAAE,AAACA,CAAAA,AAAAA,CAAAA,AAAQ,EAARA,CAAC,CAAC/D,AAAfA,CAAAA,EAAE8D,EAAE,GAAG,CAAA,GAAW,EAAL,AAAQ,GAAKsrD,CAAAA,AAAE,EAAFA,CAAE,EAAGpvD,EAAE8D,EAAE,GAAG,CAAA,GAAI,EAAjC,CAAoCE,EAAK,CAACA,EAAE,KAAMD,CAAAA,CAAC,CAACC,EAAE,IAAI,EAAR,CAAWF,EAA4B,EAAjBD,CAAAA,EAAEE,AAAQ,EAARA,CAAC,CAACpD,AAAbA,CAAAA,EAAEyuD,EAAE,GAAG,CAAA,GAAS,EAAL,AAAQ,IAAUrrD,CAAC,CAACC,EAAE,IAAI,EAAR,CAAWH,EAAEE,CAAC,CAACF,EAAE,IAAI,EAAR,CAAWG,GAAqB,EAAnBrD,CAAAA,EAAEoD,AAAU,EAAVA,CAAC,CAACpD,EAAE,GAAG,EAAP,AAAU,IAAUoD,CAAC,CAACC,EAAE,IAAI,EAAR,CAAWrD,EAAEoD,CAAC,CAACpD,EAAE,IAAI,EAAR,CAAWqD,E,CAA9sB,OAAwtB,EAAxtB,AAAwvB,GAA7BD,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAUrzC,AAAE,EAAFA,EAAIxF,CAAC,CAACE,EAAEsF,GAAG,EAAP,CAAUA,EAAK,AAACqzC,CAAAA,AAAE,EAAFA,CAAE,GAAK74C,CAAAA,AAAQ,EAARA,CAAC,CAAC,KAAF,AAAQ,EAAG,CAACA,CAAC,CAAC,KAAF,CAAQwF,E,M,CAArhC,CAA0lCA,GAAX5I,EAAE4I,IAAI,EAAKA,IAAI,EAAE,IAAI,CAACvF,EAAE,MAAOrD,CAAAA,GAAG,GAAG,CAAA,EAAG,EAA0BkD,AAAxBA,CAAAA,EAAEE,AAAQ,EAARA,CAAC,CAAC,KAAF,AAAQ,EAAEpD,CAAAA,EAAE,GAAGA,CAAAA,EAAkDA,EAAEoD,AAAQ,EAARA,CAAC,CAACF,AAAZA,CAAAA,EAAEG,EAAE,EAAE,CAAA,GAAS,EAAL,EAAvCD,CAAC,CAAC,KAAF,CAAQF,EAAElD,EAAEA,EAAEqD,EAAEH,EAAEG,EAAE,EAAE,GAA2BD,CAAC,CAACF,GAAG,EAAL,CAAQ+4C,EAAE74C,CAAC,CAACpD,EAAE,IAAI,EAAR,CAAWi8C,EAAE74C,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAUj8C,EAAEoD,CAAC,CAAC64C,EAAE,IAAI,EAAR,CAAW54C,E,M,CAASrD,CAAAA,EAAE4I,IAAI,CAAA,EAAUA,IAAI,EAAE,SAASvJ,EAAE,IAAQiE,EAAGtD,AAAAA,CAAAA,EAAE,QAAQ,CAAA,IAAK,GAAG,EAASmD,EAAGsrD,AAAAA,CAAAA,AAAVA,CAAAA,EAAEzuD,GAAGsD,CAAAA,EAAO,OAAO,CAAA,IAAK,GAAG,EAAEmrD,IAAKtrD,EAAmD9D,EAAEuJ,IAAKvJ,CAAAA,AAAlCA,CAAAA,EAAE,GAAI8D,CAAAA,EAAEG,EAA9BjE,CAAAA,EAAGovD,AAAAA,CAAAA,EAAE,OAAO,CAAA,IAAK,GAAG,CAAA,CAAYpvD,EAAIovD,CAAAA,GAAGpvD,IAAI,EAAA,EAAI,CAAA,EAAW,EAAE,CAAA,EAAG,EAAEA,GAAG,GAAOA,EAAE,EAAEW,EAAE,MAAOX,CAAAA,GAAG,CAAA,EAAG,EAAE+D,CAAC,CAAC64C,EAAE,IAAI,EAAR,CAAW58C,EAAE+D,CAAC,CAAC64C,EAAE,IAAI,EAAR,CAAW,EAAE74C,CAAC,CAAC64C,EAAE,IAAI,EAAR,CAAW,EAAE/4C,EAAEE,AAAQ,EAARA,CAAC,CAAC,KAAF,CAAUC,EAAE,GAAGhE,EAAEW,EAAK,GAAKkD,EAAEG,EAAoE,CAACrD,EAAEoD,AAAQ,EAARA,CAAC,CAACpD,GAAG,EAAL,CAAUoD,EAAK,GAAIA,AAAAA,CAAAA,AAAU,GAAVA,CAAC,CAACpD,EAAE,GAAG,EAAP,CAAa,CAAA,GAAK4I,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAuC,IAAtCvJ,EAAEuJ,GAAKvJ,CAAAA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,GAAG,EAAE,GAAIA,CAAAA,IAAI,CAAA,EAAG,CAAA,EAAiC6D,EAAEE,AAAQ,EAARA,CAAC,CAACC,AAAzBA,CAAAA,EAAErD,EAAE,GAAIX,CAAAA,IAAI,IAAI,CAAA,EAAG,CAAA,GAAS,EAAL,EAAxB,CAAiD,GAAC+D,AAAAA,CAAAA,AAAU,GAAVA,CAAC,CAACF,EAAE,GAAG,EAAP,CAAa,CAAA,GAAK0F,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAC5I,EAAEkD,EAAQE,MAAAA,CAAtC,CAA6C/D,IAAK,EAAEW,EAAEkD,C,CAAGE,CAAC,CAACC,GAAG,EAAL,CAAQ44C,EAAE74C,CAAC,CAAC64C,EAAE,IAAI,EAAR,CAAWj8C,EAAEoD,CAAC,CAAC64C,EAAE,IAAI,EAAR,CAAWA,EAAE74C,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAUA,EAAQj8C,MAAAA,CAApO,CAAuPyuD,EAAErrD,AAAQ,EAARA,CAAC,CAACE,AAAZA,CAAAA,EAAEtD,EAAE,EAAE,CAAA,GAAS,EAAL,CAAUoD,CAAC,CAACqrD,EAAE,IAAI,EAAR,CAAWxS,EAAE74C,CAAC,CAACE,GAAG,EAAL,CAAQ24C,EAAE74C,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAUwS,EAAErrD,CAAC,CAAC64C,EAAE,IAAI,EAAR,CAAWj8C,EAAEoD,CAAC,CAAC64C,EAAE,IAAI,EAAR,CAAW,CAA3Z,MAAc74C,CAAC,CAAC,KAAF,CAAQF,EAAEG,EAAED,CAAC,CAACpD,GAAG,EAAL,CAAQi8C,EAAE74C,CAAC,CAAC64C,EAAE,IAAI,EAAR,CAAWj8C,EAAEoD,CAAC,CAAC64C,EAAE,IAAI,EAAR,CAAWA,EAAE74C,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAUA,EAA8XwS,GAAhCA,EAAGrrD,AAAAA,CAAAA,AAAQ,EAARA,CAAC,CAAC,KAAF,AAAQ,EAAG,GAAG,EAAEA,CAAC,CAAC,KAAF,CAAQqrD,GAAKA,CAAAA,AAAE,EAAFA,CAAE,GAAuB,IAAdzuD,EAAE,QAA8B,GAAfA,EAAEoD,AAAQ,EAARA,CAAC,CAACpD,GAAG,EAAL,CAA2BA,EAAEA,EAAE,EAAE,OAAjB,KAAmBoD,CAAAA,CAAC,CAAC,KAAF,CAAQ,K,CAAmBq0a,SAAAA,GAAGz3a,CAAZ,CAAckD,CAAd,EAAuBA,GAAI,EAAMG,IAAAA,EAAE,QAAlBrD,CAAAA,GAAI,CAAA,GAAsBqD,EAAEmgI,AAAO,EAAPA,EAAEtgI,EAAElD,GAASkD,CAAAA,EAAElD,CAAAA,IAAK,EAAE,OAAMqD,CAAAA,EAAE,AAAC,CAAA,AAACA,CAAAA,IAAI,CAAA,EAAIrD,CAAAA,IAAI,CAAA,EAAb,CAAA,GAAuBkD,CAAAA,AAAE,EAAFA,CAAE,EAAGG,EAAE,EAAjD,GAAyDA,EAAE,EAAErD,CAAAA,EAAE05a,AAAM,EAANA,GAAGr2a,EAAG,GAAwBD,AAAW,EAAXA,CAAC,CAACpD,EAAE,IAAI,EAAR,EAAyB+8a,GAAG/8a,AAAE,EAAFA,EAAI,EAAEqD,AAAE,EAAFA,GAA3CrD,AAAE,EAAFA,C,CAAyK68a,SAAAA,GAAG78a,CAAZ,CAAcoD,CAAd,CAAgBF,CAAhB,CAAkBG,CAAlB,EAA8E,OAAA,AAAzDrD,GAAI,EAAEoD,GAAI,EAAEF,GAAI,EAAEG,GAAI,EAAoCquB,EAAEruB,AAAE,EAAtCA,CAAAA,EAAED,EAAEC,EAAGH,CAAAA,IAAI,EAAElD,IAAI,EAAE,CAAA,IAAK,CAAA,GAAU0xB,AAAO1xB,EAAEkD,IAAI,EAAbwuB,C,CAA6B01X,SAAAA,GAAGpnZ,CAAZ,EAA4B,MAACA,AAAAA,CAAAA,AAAdA,CAAAA,GAAI,CAAA,EAAY,GAAI+iI,CAAAA,AAAS,EAATA,EAAE/iI,EAAEA,EAAE,EAAG,EAAG,EAAE,EAAA,EAAI,C,CAA41D48a,SAAAA,GAAG58a,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,CAAkBhE,CAAlB,EAAqBW,GAAI,EAAEkD,GAAI,EAAEG,GAAI,EAAEhE,GAAI,EAAMuJ,IAAAA,EAAE,EAAEzF,EAAE,EAAgD,OAACuuB,AAA/CvuB,EAAE0gI,EAAEA,EAAEA,EAAE,GAAG,EAAQ84S,AAAp5DA,SAAG38a,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,CAAkBhE,CAAlB,CAAoBuJ,CAApB,EAAuB5I,GAAI,EAAEkD,GAAI,EAAEG,GAAI,EAAEhE,GAAI,EAAEuJ,GAAI,EAAMzF,IAA1SnD,EAAIkD,EAAsSC,EAAE,EAAEG,EAAE,EAAE24C,EAAE,EAAEwS,EAAE,EAAEjmD,EAAE,EAAEsJ,EAAE,EAAEjJ,EAAE,EAAEvJ,EAAE,EAAEu5E,EAAE,EAAE/c,EAAE,EAA6B,GAA3BhqD,EAAE9R,EAAMwI,EAAJimD,EAAEvrD,EAAMI,EAAED,EAAM44C,EAAJ38C,EAAED,EAAS,CAACmJ,SAAGrF,EAAE,AAACyF,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAMqzC,IAAoG94C,IAA+BC,CAAC,CAACwF,GAAG,EAAL,CAAQ5I,AAAE,EAAFA,EAAIoD,CAAC,CAACwF,EAAE,GAAG,EAAP,CAAU1F,AAAE,EAAFA,GAA9C0F,EAAE,EAAU8oB,EAAEpyB,AAAE,EAApBA,CAAAA,EAAE,CAAA,IAA1BoyB,CAAAA,AAAzEvuB,IAAGC,CAAC,CAACwF,GAAG,EAAL,CAAQ,AAACkJ,CAAAA,IAAI,CAAA,EAAIxO,CAAAA,IAAI,CAAA,EAAGF,CAAC,CAACwF,EAAE,GAAG,EAAP,CAAU,GAAEtJ,EAAE,EAAEsJ,EAAGkJ,AAAAA,CAAAA,IAAI,CAAA,EAAIxO,CAAAA,IAAI,CAAA,IAAK,EAAUouB,EAAEpyB,AAAE,EAAFA,EAAQ,EAAiG6D,EAAE,AAAC84C,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAK,GAAA,GAAG34C,EAAE,CAAI,GAAA,CAACH,EAAE,CAA8BA,GAAAA,AAA7BA,CAAAA,EAAE,AAAC4/H,CAAAA,AAAO,EAAPA,EAAE9mF,AAAE,EAAFA,EAAK,EAAI8mF,CAAAA,AAAO,EAAPA,EAAEv6H,AAAE,EAAFA,EAAK,EAAG,CAAA,IAAS,GAAG,GAAG,CAACK,EAAE1F,EAAE,EAAE,EAAE84C,EAAE,GAAG94C,EAAE,EAAED,EAAEC,EAAE,IAAI,GAAGG,EAAEuF,EAAE7I,EAAE8R,IAAKjJ,CAAAA,IAAI,CAAA,EAAG3F,EAAEsF,GAAGyzC,EAAE/4C,EAAEsF,IAAKK,CAAAA,IAAI,CAAA,EAAG3F,EAAEC,EAAE,EAAE84C,EAAEnqC,GAAGmqC,E,K,CAAW,GAAA,CAACrzC,EAAkB,OAAC8oB,AAAZ9oB,EAAE,EAAU8oB,EAAEpyB,AAAE,EAApBA,CAAAA,EAAE,CAAA,GAAcoyB,AAAU,EAAH9oB,EAAgD,OAAC8oB,AAA5CtuB,CAAC,CAACwF,GAAG,EAAL,CAAQ5I,AAAE,EAAFA,EAAIoD,CAAC,CAACwF,EAAE,GAAG,EAAP,CAAU6lD,EAAEvrD,AAAE,EAAFA,EAAQ0F,EAAE,EAAU8oB,EAAEpyB,AAAE,EAApBA,CAAAA,EAAE,CAAA,GAAcoyB,AAAU,EAAH9oB,C,CAAgBzF,GAAAA,AAAXA,CAAAA,EAAEG,EAAE,EAAE,CAAA,EAAOA,EAAE,EAAE,CAA8Bw4D,EAAE,GAA/B7f,CAAAA,EAAG8mF,AAAAA,CAAAA,AAAO,EAAPA,EAAEz/H,AAAE,EAAFA,EAAK,EAAG,GAAIy/H,CAAAA,AAAO,EAAPA,EAAEv6H,AAAE,EAAFA,EAAK,EAAG,CAAA,EAAS,EAAWimD,EAAE5lD,AAAXA,CAAAA,EAAE,GAAGozC,EAAE,CAAA,GAAO,GAAY/4C,EAAE21E,AAAXA,CAAAA,EAAE58B,EAAE,GAAG,CAAA,GAAO,GAAG34C,EAAE24C,EAAEj8C,EAAE6I,EAAE,GAAG,GAAGL,IAAKqwE,CAAAA,IAAI,CAAA,EAAIrwE,AAAAA,CAAAA,GAAGK,EAAEiJ,IAAKmqC,CAAAA,IAAI,CAAA,CAAA,EAAI/4C,EAAEA,GAAIsF,IAAKyzC,CAAAA,IAAI,CAAA,EAAG94C,EAAE2O,GAAGgqD,EAAErN,EAAExS,EAAGzzC,AAAAA,CAAAA,GAAGszD,EAAEhqD,IAAK+mE,CAAAA,IAAI,CAAA,CAAA,EAAIpqB,EAAE38C,GAAGjJ,EAAEozC,EAAE,IAAI,G,K,CAA4C,GAA9B,EAAFrzC,IAAKxF,CAAC,CAACwF,GAAG,EAAL,CAAQzF,EAAE2O,EAAE1O,CAAC,CAACwF,EAAE,GAAG,EAAP,CAAU,GAAMtF,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAA0B,OAACouB,AAAxBmnD,EAAEpqB,EAAEvrD,AAAE,EAAFA,EAAI44D,EAAE97D,AAAAA,EAAAA,EAAc0xB,EAAEmnD,AAAE,EAAFA,GAAFnnD,AAAU,EAAHoqC,EAAqE,OAACpqC,AAAhDmnD,EAAErwE,IAAKszD,CAAAA,AAAnBA,CAAAA,EAAEsrV,AAAQ,EAARA,GAAG9jZ,AAAE,EAAFA,EAAK,IAAa,CAAA,EAAG,EAAEw4D,EAAEtzD,GAAG,GAAGszD,EAAEhqD,IAAKgqD,CAAAA,IAAI,CAAA,EAAG,EAAUpqC,EAAEmnD,AAAE,EAAFA,GAAFnnD,AAAU,EAAHoqC,CAA5kB,KAAslB,CAAI34D,GAAAA,EAAgF,OAACuuB,AAAzE,EAAF9oB,IAAKxF,CAAC,CAACwF,GAAG,EAAL,CAAQ,AAACJ,CAAAA,IAAI,CAAA,EAAIlF,CAAAA,IAAI,CAAA,EAAGF,CAAC,CAACwF,EAAE,GAAG,EAAP,CAAU,GAAEiwE,EAAE,EAAE/c,EAAGtzD,AAAAA,CAAAA,IAAI,CAAA,EAAIlF,CAAAA,IAAI,CAAA,IAAK,EAAUouB,EAAEmnD,AAAE,EAAFA,GAAFnnD,AAAU,EAAHoqC,EAAQ,GAAA,CAAChqD,EAAgF,OAAC4f,AAAzE,EAAF9oB,IAAKxF,CAAC,CAACwF,GAAG,EAAL,CAAQ,EAAExF,CAAC,CAACwF,EAAE,GAAG,EAAP,CAAWJ,AAAAA,CAAAA,IAAI,CAAA,EAAIyzC,CAAAA,IAAI,CAAA,GAAG48B,EAAE,EAAE/c,EAAGtzD,AAAAA,CAAAA,IAAI,CAAA,EAAIyzC,CAAAA,IAAI,CAAA,IAAK,EAAUvqB,EAAEmnD,AAAE,EAAFA,GAAFnnD,AAAU,EAAHoqC,EAAgB,GAAA,CAAE34D,CAAAA,AAAbA,CAAAA,EAAE84C,EAAE,EAAE,CAAA,EAASA,CAAAA,EAA6E,OAACvqB,AAArE,EAAF9oB,IAAKxF,CAAC,CAACwF,GAAG,EAAL,CAAQ5I,AAAE,EAAFA,EAAIoD,CAAC,CAACwF,EAAE,GAAG,EAAP,CAAUzF,EAAEqF,EAAEtF,AAAE,EAAFA,GAAI21E,EAAE,EAAE/c,EAAEtzD,IAAK,CAAA,AAAC4+Y,CAAAA,AAAQ,EAARA,GAAGnrW,AAAE,EAAFA,EAAK,IAAK,CAAA,EAAWvqB,EAAEmnD,AAAE,EAAFA,GAAFnnD,AAAU,EAAHoqC,EAAkC34D,GAAAA,AAA7BA,CAAAA,EAAE,AAAC4/H,CAAAA,AAAO,EAAPA,EAAE9mF,AAAE,EAAFA,EAAK,EAAI8mF,CAAAA,AAAO,EAAPA,EAAEv6H,AAAE,EAAFA,EAAK,EAAG,CAAA,IAAS,GAAG,GAAG,CAACtF,EAAEC,EAAE,EAAE,EAAE84C,EAAE,GAAG94C,EAAE,EAAEG,EAAEJ,EAAElD,EAAEwI,GAAGyzC,EAAEnqC,IAAK5O,CAAAA,IAAI,CAAA,EAAGA,EAAEsF,IAAKtF,CAAAA,IAAI,CAAA,EAAGC,EAAE,EAAE84C,EAAEnqC,GAAGmqC,E,K,CAAW,GAAA,CAACrzC,EAAkB,OAAC8oB,AAAZoqC,EAAE,EAAUpqC,EAAEmnD,AAAE,EAApBA,CAAAA,EAAE,CAAA,GAAcnnD,AAAU,EAAHoqC,EAAgD,OAACpqC,AAA5CtuB,CAAC,CAACwF,GAAG,EAAL,CAAQ5I,AAAE,EAAFA,EAAIoD,CAAC,CAACwF,EAAE,GAAG,EAAP,CAAU6lD,EAAEvrD,AAAE,EAAFA,EAAQ44D,EAAE,EAAUpqC,EAAEmnD,AAAE,EAApBA,CAAAA,EAAE,CAAA,GAAcnnD,AAAU,EAAHoqC,CAAzkC,OAAolC,EAAplC,AAA0lC,GAACx4D,EAAmB,CAACuF,EAAExF,AAAAA,EAAAA,EAAcmF,EAAEgva,AAAkB,GAAnsDt0a,KAA8BwuB,EAAEtuB,CAA0pD,EAAnB0O,CAAAA,EAAExS,EAAED,AAAE,EAAFA,CAAE,EAA/qD,MAAuC6D,CAAAA,AAAzBA,CAAAA,EAAElD,AAA1BA,CAAAA,EAAksD,EAAF6I,EAA5rD,CAAA,EAAwB3F,IAAI,CAAA,IAAqB,EAAElD,IAAI,EAAE,CAAA,IAAK,EAAE,GAA1B0xB,AAA+B,EAAFxuB,EAAK,GAAqoDG,EAAE0+H,AAAI,EAAJA,IAAMtzE,EAAExS,EAAEA,EAAE,EAAI,GAAC58C,EAAEovD,EAAEA,EAAEtrD,IAAI,GAAGsrD,GAAG,EAAEtrD,EAAE84C,EAAE94C,GAAG,EAAkC05a,GAAGr0a,AAAE,EAAFA,EAAInF,AAAE,EAAFA,EAAIhE,AAAE,EAA7CA,CAAAA,EAAEW,GAAG,EAAEX,IAAI,GAAG,CAAA,EAAiCC,AAAE,EAAjCA,CAAAA,EAAEU,IAAI,GAAGkD,GAAG,EAAE,CAAA,GAA0D+4C,EAAE48B,AAAE,EAA9BA,CAAAA,EAAE/c,AAAVA,CAAAA,EAAEimE,AAAI,EAAJA,GAAI,GAAO,GAAG,AAAC,CAAA,AAACjmE,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAE,GAAG,CAAA,GAAI,CAAA,EAAQ97D,EAAE68a,AAA6D,EAA7DA,GAAGx9a,AAAE,EAAFA,EAAIC,AAAE,EAAFA,EAAIu5E,EAAEhwE,EAAE,EAAE,AAAE,CAAA,AAACizD,CAAAA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAE,GAAG,CAAA,GAAI,GAAI,AAACA,CAAAA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAE,GAAG,CAAA,GAAI,CAAA,EAAGhqD,EAAE,GAAK5O,EAAE6+H,AAAI,EAAJA,IAAMz+H,EAAEA,EAAE,EAAE,QAASA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAA1N,AAA6NkF,EAAEimD,EAAEA,EAAE,C,MAA1SjmD,EAAEyzC,EAAEwS,EAAE,EAAExS,EAAE,CAAyYvqB,CAAvGpuB,EAAE,EAAO,EAAFsF,IAAKxF,CAAC,CAACwF,GAAG,EAAL,CAAQ5I,EAAEoD,CAAC,CAACwF,EAAE,GAAG,EAAP,CAAU1F,GAAE21E,EAAG11E,AAAAA,CAAAA,AAAE,EAAFA,CAAE,IAAK,GAAIqF,AAAAA,CAAAA,EAAElF,CAAAA,GAAI,EAAGA,AAAAA,CAAAA,GAAG,EAAEH,IAAI,EAAA,EAAI,EAAEsrD,EAAEqN,EAAG34D,AAAAA,CAAAA,GAAG,EAAE,CAAA,EAAQ,GAAG84C,EAAUvqB,EAAEmnD,AAAE,EAAFA,E,EAAyF74E,EAAEkD,EAAEG,EAAEhE,EAAfuJ,EAAEzF,AAAE,EAAFA,GAAoB0gI,EAAE1gI,EAAUuuB,EAAEtuB,AAAU,EAAVA,CAAC,CAACwF,EAAE,GAAG,EAAP,EAAF8oB,AAAuB,EAARtuB,CAAC,CAACwF,GAAG,EAAL,CAAW,C,CAAWgva,SAAAA,GAAG53a,CAAZ,CAAcoD,CAAd,CAAgBF,CAAhB,QAAwC,CAArBlD,GAAI,EAAEoD,GAAI,EAAYF,AAAAA,CAAAA,AAAE,EAAZA,CAAAA,GAAI,CAAA,CAAQ,EAAG,KAAIwuB,EAAEtuB,IAAIF,EAAE,GAAUlD,IAAIkD,EAAE,AAACE,CAAAA,EAAG,AAAA,CAAA,GAAGF,CAAAA,EAAG,CAAA,GAAI,GAAGA,IAAEwuB,EAAE,GAAUtuB,IAAIF,EAAE,GAAG,E,CAAW40a,SAAAA,GAAG93a,CAAZ,CAAcoD,CAAd,CAAgBF,CAAhB,QAAwC,CAArBlD,GAAI,EAAEoD,GAAI,EAAYF,AAAAA,CAAAA,AAAE,EAAZA,CAAAA,GAAI,CAAA,CAAQ,EAAG,KAAIwuB,EAAEtuB,GAAGF,EAAGlD,AAAAA,CAAAA,EAAG,AAAA,CAAA,GAAGkD,CAAAA,EAAG,GAAG,GAAGA,CAAAA,IAAK,GAAGA,EAAE,GAAUlD,GAAGkD,IAAEwuB,EAAE1xB,GAAGkD,EAAE,GAAG,GAAU,E,CAAW+0a,SAAAA,GAAGj4a,CAAZ,CAAcoD,CAAd,QAA8BpD,CAARoD,EAAE,CAACA,EAAKpD,AAAbA,CAAAA,EAAE,CAACA,CAAAA,GAAaA,GAAS,CAACoD,EAAKA,GAAGA,EAAS,CAACpD,EAAS,CAACyzC,EAAE,CAACzzC,EAAE,CAACoD,E,CAAY81a,SAAAA,GAAGl5a,CAAZ,EAA2BA,MAAAA,AAAZA,CAAAA,EAAE,CAACA,CAAAA,GAAY,EAAI,CAAC87D,EAAE97D,EAAE,IAAI,CAACm3R,EAAEn3R,EAAE,G,CAAa88a,SAAAA,GAAG55a,CAAZ,CAAcG,CAAd,CAAgBhE,CAAhB,EAAmB6D,GAAI,EAAEG,GAAI,EAAYuF,IAAAA,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAK,GAACjE,AAAAA,CAAAA,AAAE,EAA5BA,CAAAA,GAAI,CAAA,CAAwB,GAAI,KAA8B6D,OAAxBwgI,EAAExgI,AAAE,EAAFA,EAAIG,AAAE,EAAFA,EAAIhE,AAAE,EAAFA,GAAc6D,AAAE,EAAFA,EAAqB,GAAjBI,EAAEJ,AAAE,EAAFA,EAAIC,EAAED,EAAE7D,EAAE,EAAM6D,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKG,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAOH,KAAAA,AAAE,EAAFA,GAAI,CAAI,GAAA,CAAC7D,EAAE,OAAOiE,AAAE,EAAFA,CAAItD,CAAAA,CAAC,CAACkD,GAAG,EAAL,CAAQlD,AAAQ,EAARA,CAAC,CAACqD,GAAG,EAAL,CAAUH,EAAEA,EAAE,EAAE,EAAEG,EAAEA,EAAE,EAAE,EAAEhE,EAAEA,EAAE,EAAE,C,CAA0B,IAAfuJ,EAAEvJ,AAAXA,CAAAA,EAAE8D,AAAE,GAAFA,EAAK,CAAA,EAAM,GAAG,EAASD,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAK0F,CAAAA,AAAE,EAAFA,CAAE,GAAIxF,CAAC,CAACF,GAAG,EAAL,CAAQE,CAAC,CAACC,GAAG,EAAb,CAAgBD,CAAC,CAACF,EAAE,GAAG,EAAP,CAAUE,CAAC,CAACC,EAAE,GAAG,EAAjB,CAAoBD,CAAC,CAACF,EAAE,GAAG,EAAP,CAAUE,CAAC,CAACC,EAAE,GAAG,EAAjB,CAAoBD,CAAC,CAACF,EAAE,IAAI,EAAR,CAAWE,CAAC,CAACC,EAAE,IAAI,EAAnB,CAAsBD,CAAC,CAACF,EAAE,IAAI,EAAR,CAAWE,CAAC,CAACC,EAAE,IAAI,EAAnB,CAAsBD,CAAC,CAACF,EAAE,IAAI,EAAR,CAAWE,CAAC,CAACC,EAAE,IAAI,EAAnB,CAAsBD,CAAC,CAACF,EAAE,IAAI,EAAR,CAAWE,CAAC,CAACC,EAAE,IAAI,EAAnB,CAAsBD,CAAC,CAACF,EAAE,IAAI,EAAR,CAAWE,CAAC,CAACC,EAAE,IAAI,EAAnB,CAAsBD,CAAC,CAACF,EAAE,IAAI,EAAR,CAAWE,CAAC,CAACC,EAAE,IAAI,EAAnB,CAAsBD,CAAC,CAACF,EAAE,IAAI,EAAR,CAAWE,CAAC,CAACC,EAAE,IAAI,EAAnB,CAAsBD,CAAC,CAACF,EAAE,IAAI,EAAR,CAAWE,CAAC,CAACC,EAAE,IAAI,EAAnB,CAAsBD,CAAC,CAACF,EAAE,IAAI,EAAR,CAAWE,CAAC,CAACC,EAAE,IAAI,EAAnB,CAAsBD,CAAC,CAACF,EAAE,IAAI,EAAR,CAAWE,CAAC,CAACC,EAAE,IAAI,EAAnB,CAAsBD,CAAC,CAACF,EAAE,IAAI,EAAR,CAAWE,CAAC,CAACC,EAAE,IAAI,EAAnB,CAAsBD,CAAC,CAACF,EAAE,IAAI,EAAR,CAAWE,CAAC,CAACC,EAAE,IAAI,EAAnB,CAAsBD,CAAC,CAACF,EAAE,IAAI,EAAR,CAAWE,CAAC,CAACC,EAAE,IAAI,EAAnB,CAAsBH,EAAEA,EAAE,GAAG,EAAEG,EAAEA,EAAE,GAAG,EAAQ,KAACH,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAI7D,CAAAA,AAAE,EAAFA,CAAE,GAAI+D,CAAC,CAACF,GAAG,EAAL,CAAQE,CAAC,CAACC,GAAG,EAAb,CAAgBH,EAAEA,EAAE,EAAE,EAAEG,EAAEA,EAAE,EAAE,CAAthB,MAA4iB,IAAdhE,EAAE8D,EAAE,EAAE,EAASD,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAI7D,CAAAA,AAAE,EAAFA,CAAE,GAAIW,CAAC,CAACkD,GAAG,EAAL,CAAQlD,AAAQ,EAARA,CAAC,CAACqD,GAAG,EAAL,CAAUrD,CAAC,CAACkD,EAAE,GAAG,EAAP,CAAUlD,AAAU,EAAVA,CAAC,CAACqD,EAAE,GAAG,EAAP,CAAYrD,CAAC,CAACkD,EAAE,GAAG,EAAP,CAAUlD,AAAU,EAAVA,CAAC,CAACqD,EAAE,GAAG,EAAP,CAAYrD,CAAC,CAACkD,EAAE,GAAG,EAAP,CAAUlD,AAAU,EAAVA,CAAC,CAACqD,EAAE,GAAG,EAAP,CAAYH,EAAEA,EAAE,EAAE,EAAEG,EAAEA,EAAE,EAAE,EAAS,KAACH,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAIC,CAAAA,AAAE,EAAFA,CAAE,GAAInD,CAAC,CAACkD,GAAG,EAAL,CAAQlD,AAAQ,EAARA,CAAC,CAACqD,GAAG,EAAL,CAAUH,EAAEA,EAAE,EAAE,EAAEG,EAAEA,EAAE,EAAE,EAASC,OAAAA,AAAE,EAAFA,C,CAAay5a,SAAAA,GAAG75a,CAAZ,CAAcG,CAAd,CAAgBhE,CAAhB,EAAmB6D,GAAI,EAAEG,GAAI,EAAEhE,GAAI,EAAMuJ,IAAAA,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAE24C,EAAE,EAAqB,GAAnB34C,EAAEJ,EAAE7D,EAAE,EAAEgE,GAAI,IAAQhE,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,GAAG,CAAO6D,KAAAA,AAAE,EAAFA,GAAKlD,CAAC,CAACkD,GAAG,EAAL,CAAQG,EAAEH,EAAEA,EAAE,EAAE,EAA+C,IAA7C0F,EAAEtF,AAAE,GAAFA,EAAK,EAAE24C,EAAE54C,EAAEA,GAAG,EAAEA,GAAG,GAAGA,GAAG,GAAGF,EAAEyF,EAAE,GAAG,EAAS1F,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKC,CAAAA,AAAE,EAAFA,CAAE,GAAIC,CAAC,CAACF,GAAG,EAAL,CAAQ+4C,EAAE74C,CAAC,CAACF,EAAE,GAAG,EAAP,CAAU+4C,EAAE74C,CAAC,CAACF,EAAE,GAAG,EAAP,CAAU+4C,EAAE74C,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW+4C,EAAE74C,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW+4C,EAAE74C,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW+4C,EAAE74C,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW+4C,EAAE74C,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW+4C,EAAE74C,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW+4C,EAAE74C,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW+4C,EAAE74C,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW+4C,EAAE74C,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW+4C,EAAE74C,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW+4C,EAAE74C,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW+4C,EAAE74C,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW+4C,EAAE74C,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW+4C,EAAE/4C,EAAEA,EAAE,GAAG,EAAQ,KAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAI0F,CAAAA,AAAE,EAAFA,CAAE,GAAIxF,CAAC,CAACF,GAAG,EAAL,CAAQ+4C,EAAE/4C,EAAEA,EAAE,EAAE,C,CAAS,KAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAII,CAAAA,AAAE,EAAFA,CAAE,GAAItD,CAAC,CAACkD,GAAG,EAAL,CAAQG,EAAEH,EAAEA,EAAE,EAAE,EAASI,OAAAA,EAAEjE,EAAE,C,CAAWk4a,SAAAA,GAAGv3a,CAAZ,EAA2BA,MAAAA,AAAZA,CAAAA,EAAE,CAACA,CAAAA,GAAY,EAAI,CAAC87D,EAAE97D,EAAE,IAAI,CAACm3R,EAAEn3R,EAAE,G,CAAawB,SAAAA,GAAGxB,CAAZ,EAAeA,GAAI,EAAMkD,IAAAA,EAAE,EAAEG,EAAE,EAAEhE,EAAE,QAAiC,CAA/BA,EAAEkyB,AAAI,EAAJA,IAAkBruB,EAAEG,AAAdA,CAAAA,EAAED,AAAQ,EAARA,CAAC,CAACD,GAAG,EAAL,AAAQ,EAAMnD,EAAE,EAAMA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAGkD,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAIG,CAAAA,AAAE,EAAFA,CAAE,EAAIH,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAG,IAAGw/H,EAAEx/H,AAAE,EAAFA,GAAO0/H,EAAE,IAAW,IAAO1/H,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAI7D,CAAAA,AAAE,EAAFA,CAAE,GAAM,CAAEsjI,CAAAA,AAAO,EAAPA,EAAEz/H,AAAE,EAAFA,EAAK,GAAI0/H,EAAE,IAAW,KAAGx/H,CAAC,CAACD,GAAG,EAAL,CAAQD,EAASG,AAAE,EAAFA,EAHxl/F,CAM9D,MAAA,CAAC25a,WAAWJ,GAAGK,gBAAgBrF,GAAGsF,eAAepF,GAAGqF,QAAQ1F,GAAG2F,aAHq9jCijd,SAAGrg4B,CAAZ,CAAckD,CAAd,EAAiBlD,GAAI,EAAEkD,GAAI,EAAMG,IAAAA,EAAE,EAAIhE,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAAqE,GAA/DA,EAAE0gI,EAAEA,EAAEA,EAAE,IAAI,EAAExkI,EAAE8D,EAAE,IAAI,EAAEyF,EAAEzF,EAAEo4a,GAAGv7a,EAAEkD,EAAE7D,GAAGq5a,GAAG14a,EAAEkD,EAAE0F,GAAmB1F,AAAAA,CAAAA,AAAE,EAAlBA,CAAAA,EAAEE,AAAQ,EAARA,CAAC,CAACwF,GAAG,EAAL,AAAQ,CAAQ,EAAG,EAAiD,CAAA,GAA9CvF,EAAE,CAACgyV,GAAGzsV,EAAE,EAAE,EAAEA,EAAE,EAAG,CAAA,AAAE1F,CAAAA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAE,CAAA,GAAI,CAAA,EAAG,EAAE7D,GAAG,EAAQ6D,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAE,CAAClD,EAAE,EAAI,GAAaqD,GAAK,CAACgyV,GAAGzsV,EAAE,EAAGtF,CAAAA,AAAxBtD,GAA2B,CAAA,EAAG,EAAE4I,EAAE,EAAI,CAAA,AAAC5I,CAAAA,AAAAA,CAAAA,AAAE,EAAvCA,CAAAA,EAAEA,EAAE,EAAE,CAAA,CAAiC,EAAIkD,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAA,GAAI,CAAA,EAAG,EAAE7D,SAAUW,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAIkD,CAAAA,AAAE,EAAFA,CAAE,EAAlF,A,C,MAA4FG,EAAE,EAAe,OAAXwgI,EAAE1gI,EAAS,CAAEE,CAAAA,AAAAA,kBAAAA,CAAAA,C,EAGtukCg6a,YAHsxkCtoF,SAAG/0V,CAAZ,CAAckD,CAAd,EAAiBlD,GAAI,EAAEkD,GAAI,EAAMG,IAAAA,EAAE,EAAIhE,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAAqE,GAA/DA,EAAE0gI,EAAEA,EAAEA,EAAE,IAAI,EAAExkI,EAAE8D,EAAE,IAAI,EAAEyF,EAAEzF,EAAEo4a,GAAGv7a,EAAEkD,EAAE7D,GAAGq5a,GAAG14a,EAAEkD,EAAE0F,GAAmB1F,AAAAA,CAAAA,AAAE,EAAlBA,CAAAA,EAAEE,AAAQ,EAARA,CAAC,CAACwF,GAAG,EAAL,AAAQ,CAAQ,EAAG,EAAiD,CAAA,GAA9CvF,EAAE,CAACgyV,GAAGzsV,EAAE,EAAE,EAAEA,EAAE,EAAG,CAAA,AAAE1F,CAAAA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAE,CAAA,GAAI,CAAA,EAAG,EAAE7D,GAAG,EAAQ6D,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAE,CAAClD,EAAE,EAAI,GAAaqD,GAAK,CAACgyV,GAAGzsV,EAAE,EAAGtF,CAAAA,AAAxBtD,GAA2B,CAAA,EAAG,EAAE4I,EAAE,EAAI,CAAA,AAAC5I,CAAAA,AAAAA,CAAAA,AAAE,EAAvCA,CAAAA,EAAEA,EAAE,EAAE,CAAA,CAAiC,EAAIkD,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAA,GAAI,CAAA,EAAG,EAAE7D,SAAUW,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAIkD,CAAAA,AAAE,EAAFA,CAAE,EAAlF,A,C,MAA4FG,EAAE,EAAe,OAAXwgI,EAAE1gI,EAAS,CAAEE,CAAAA,AAAAA,kBAAAA,CAAAA,C,EAGxilCi6a,eAHonjCh3L,SAAGtmP,CAAZ,CAAckD,CAAd,EAAiBlD,GAAI,EAAEkD,GAAI,EAAMG,IAAAA,EAAE,EAAIhE,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAAqE,GAA/DA,EAAE0gI,EAAEA,EAAEA,EAAE,IAAI,EAAExkI,EAAE8D,EAAE,IAAI,EAAEyF,EAAEzF,EAAEo4a,GAAGv7a,EAAEkD,EAAE7D,GAAGq5a,GAAG14a,EAAEkD,EAAE0F,GAAmB1F,AAAAA,CAAAA,AAAE,EAAlBA,CAAAA,EAAEE,AAAQ,EAARA,CAAC,CAACwF,GAAG,EAAL,AAAQ,CAAQ,GAAI,EAAoB,OAAjBvF,EAAE,EAAIwgI,EAAE1gI,EAAS,CAACE,EAAgD,GAA9CA,EAAE,CAACgyV,GAAGzsV,EAAE,EAAE,EAAEA,EAAE,EAAG,CAAA,AAAE1F,CAAAA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAE,CAAA,GAAI,CAAA,EAAG,EAAE7D,GAAG,EAAQ6D,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAc,OAAX2gI,EAAE1gI,EAAS,CAACE,EAAErD,EAAE,EAAI,GAAaqD,GAAK,CAACgyV,GAAGzsV,EAAE,EAAGtF,CAAAA,AAAxBtD,GAA2B,CAAA,EAAG,EAAE4I,EAAE,EAAI,CAAA,AAAC5I,CAAAA,AAAAA,CAAAA,AAAE,EAAvCA,CAAAA,EAAEA,EAAE,EAAE,CAAA,CAAiC,EAAIkD,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAA,GAAI,CAAA,EAAG,EAAE7D,SAAUW,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAIkD,CAAAA,AAAE,EAAFA,CAAE,EAAlF,AAAiG,OAAX2gI,EAAE1gI,EAAS,CAACE,C,EAGz5jCk6a,SAHsotCgjd,SAAGvg4B,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,EAAmBrD,GAAI,EAAEkD,GAAI,EAAY7D,IAAAA,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAE24C,EAAE,EAAEwS,EAAE,EAAEjmD,EAAE,EAAEsJ,EAAE,EAAEjJ,EAAE,EAAEvJ,EAAE,EAAEu5E,EAAE,EAAE/c,EAAE,EAAErjC,EAAE,EAAEjH,EAAE,EAAEhyB,EAAE,EAAEw8D,EAAE,EAAExjC,EAAE,EAAEj5B,EAAE,EAAE+xB,EAAE,EAAEG,EAAE,EAAEiH,EAAE,EAAEqgD,EAAE,EAAK,GAAA,CAArG11E,CAAAA,GAAI,CAAA,EAAgHq1B,OAAAA,AAAE,EAAbA,CAAAA,EAAE,CAAA,EAA8C,GAA7Br5B,EAAE+D,AAAQ,EAARA,CAAC,CAACwF,AAARA,CAAAA,EAAE5I,CAAAA,GAAS,EAAL,CAA2B,CAAA,EAAK,AAAC4I,CAAAA,AAAE,SAAzBA,CAAAA,EAAExF,AAAU,EAAVA,CAAC,CAACwF,EAAE,GAAG,EAAP,AAAU,EAAsB,CAAA,GAAI,EAAE,CAAI,GAACvF,CAAAA,AAAE,EAAFA,CAAE,GAAI,IAAsBD,CAAC,CAACs1B,AAANA,CAAAA,EAAEx1B,CAAAA,GAAO,EAAL,CAAQ7D,EAAE+D,CAAC,CAACs1B,EAAE,GAAG,EAAP,CAAU9vB,EAAMvF,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,GAAxCq1B,OAAAA,AAAE,EAAbA,CAAAA,EAAE,CAAA,EAAmEr5B,EAAE,EAAI,GAAcoyB,EAAEruB,AAAU,EAAVA,CAAC,CAACkuB,AAAjBA,CAAAA,EAAEtxB,EAAGX,CAAAA,GAAG,CAAA,EAAG,CAAA,EAAQ,GAAG,EAAP,CAAyB+D,CAAC,CAACs1B,AAAfA,CAAAA,EAAEx1B,EAAG7D,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAO,EAAL,CAAQ+D,CAAC,CAACkuB,GAAG,EAAb,CAAgBluB,CAAC,CAACs1B,EAAE,GAAG,EAAP,CAAUjH,EAAEpyB,EAAEA,EAAE,EAAE,QAASA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKgE,CAAAA,AAAE,EAAFA,CAAE,EAA/F,AAA8GhE,OAAAA,AAAE,EAAbA,CAAAA,EAAE,CAAA,C,CAAiC,GAAA,CAAboyB,CAAAA,EAAEioZ,AAAM,EAANA,GAATpoZ,EAAEjuB,GAAG,EAAU,EAAqBq1B,OAAAA,AAAE,EAAdA,CAAAA,EAAE,EAAFA,EAAiD,GAAjCokZ,GAAGrrZ,AAAE,EAAFA,EAAIzxB,AAAE,EAAFA,EAAIsxB,AAAE,EAAFA,GAAsB,CAAf/xB,CAAAA,EAAEk4a,AAAQ,EAARA,GAAGp0a,EAAE,EAAG,EAA2Bq1B,OAAlBojZ,GAAGrqZ,GAAeiH,AAAE,EAAdA,CAAAA,EAAE,EAAFA,EAAgBr5B,EAAEgE,EAAErD,EAAE,OAAQ,CAAK8R,EAAE1O,AAAQ,EAARA,CAAC,CAACE,AAARA,CAAAA,EAAEmuB,CAAAA,GAAS,EAAL,CAAUnuB,EAAEF,AAAU,EAAVA,CAAC,CAACE,EAAE,GAAG,EAAP,CAAY04D,EAAE47W,AAAe,EAAfA,GAAG9la,AAAE,EAAFA,EAAIxO,AAAE,EAAFA,EAAI,IAAMy+H,IAAM/lE,GAAI,GAAGxjC,EAAEwjC,EAAE,GAAG,EAAEx8D,EAAE,AAACH,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAE+D,EAAE,GAAG,GAAG5D,EAAE,CAAiDg5B,GAAhDhH,EAAE,AAAC,CAAA,AAACnyB,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAA,GAAI,IAAI,GAAGy8D,EAAEg8W,AAAa,EAAbA,GAAGt/Y,AAAE,EAAFA,EAAI,EAAE,IAAMC,EAAEspG,AAAI,EAAJA,IAASvpG,IAAI,EAAE,GAAsB,IAAlB5vB,EAAE,EAAE5I,EAAE8R,EAAEzO,EAAEC,IAAU,CAAI,GAAA,CAAGtD,CAAAA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAGqD,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,CAAA,EAAG,CAAkK,GAAjKF,EAAEy0a,AAAe,EAAfA,GAAG53a,AAAE,EAAFA,EAAIqD,AAAE,EAAFA,EAAI,IAAM0+H,IAAM5+H,GAAI,GAAG84C,EAAG94C,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAIq1B,CAAAA,AAAE,EAAFA,CAAE,EAAGr1B,EAAGA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKq1B,CAAAA,AAAE,EAAFA,CAAE,EAAGhwB,EAAEyzC,EAAE,EAAE94C,EAAEnD,EAAE,EAAEA,EAAEi8C,EAAE,EAAE94C,EAAEE,EAAE,EAAEA,EAAEu5a,AAAoB,EAApBA,GAAGp0a,AAAE,EAAFA,EAAIxI,AAAE,EAAFA,EAAIX,AAAE,EAAFA,EAAImyB,AAAE,EAAFA,GAAOuwG,IAAuBtzE,EAAErrD,AAAQ,EAARA,CAAC,CAAC64C,AAARA,CAAAA,EAAb94C,EAAE5D,EAAG8D,CAAAA,GAAG,CAAA,EAAG,CAAIF,GAAS,EAAL,CAAU84C,EAAE74C,AAAU,EAAVA,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAe,AAACwS,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAE,AAACxS,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAE54C,EAAEmF,OAA6B,IAAtBszD,EAAE,EAAE+c,EAAEx1E,EAAE/D,EAAE28C,EAAE54C,EAAEmF,IAAU,CAAI,GAACszD,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAIz8D,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAACq5B,EAAE,GAAS14B,MAAAA,C,CAAK,GAACyuD,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKprD,CAAAA,AAAE,EAAFA,CAAE,EAAG,AAAC/D,CAAAA,AAAE,WAAFA,EAAa,CAAA,GAAKU,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAACwI,EAAEova,AAAe,EAAfA,GAAGnpX,AAAE,EAAFA,EAAInvD,AAAE,EAAFA,EAAI,IAAMyiI,IAAMv5H,GAAI,EAAEK,EAAEL,EAAE,EAAE,EAAEiwB,EAAEm/Y,AAAe,EAAfA,GAAGnpX,AAAE,EAAFA,EAAInvD,AAAE,EAAFA,EAAI,IAAMyiI,IAAM7+H,EAAE,GAAG,GAAKi1a,AAAU,EAAVA,EAAG1/Y,AAAE,IAAFA,GAAkB,CAAoC,GAAnCg2B,EAAEmpX,AAAe,EAAfA,GAAGnpX,AAAE,EAAFA,EAAInvD,AAAE,EAAFA,EAAI,IAAMyiI,IAAgB,CAAVtzE,CAAAA,GAAI,EAAJA,EAAa,CAACxS,EAAE,E,K,CAAkB,IAAVA,EAAE,IAAU,CAA6B,GAAA,CAAGxjB,CAAAA,AAAAA,CAAAA,AAA/BA,CAAAA,EAAEq/Y,AAAqB,EAArBA,GAAG,EAAE,EAAG,AAAA,CAAA,GAAG77X,EAAE,CAAA,EAAG,EAAE,EAAG,EAAU54C,EAAE,CAAA,GAAI,EAAG,AAAC0+H,CAAAA,AAAAA,CAAAA,AAAI,EAAJA,GAAI,EAAG/hI,EAAE,CAAA,GAAI,CAAA,EAAG,CAACi8C,EAAE,EAAQ/4C,MAAAA,C,CAAK+4C,GAAAA,IAAI,EAAEwS,IAAI,EAAExS,EAAEA,EAAE,EAAE,MAAM,CAACA,EAAE,E,K,C,CAAlM,MAAqBA,EAAE,QAA2L,EAAlN,AAAwN,GAACzzC,AAAAA,CAAAA,EAAE,EAAE,CAAA,IAAK,EAAEyzC,IAAI,EAAE,CAACvjB,EAAE,GAAS14B,MAAAA,C,CAAEy4B,EAAEq/Y,AAAa,EAAbA,GAAGjva,AAAE,EAAFA,EAAI,EAAE,IAAM7I,EAAE+hI,AAAI,EAAJA,IAAM/hI,AAAE,WAAFA,EAAiBoD,CAAC,CAAC64C,AAANA,CAAAA,EAAE94C,CAAAA,GAAO,EAAL,CAAQ,EAAEC,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAU,EAAEA,EAAE48B,EAAEx1E,GAAEo1B,CAAza,MAAkbwjB,EAAG48B,AAAAA,CAAAA,EAAE,EAAE,CAAA,EAAIx5E,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAgD,GAA7BovD,EAAErrD,AAAQ,EAARA,CAAC,CAAC9D,AAARA,CAAAA,EAAb6D,EAAE5D,EAAG08C,CAAAA,GAAG,CAAA,EAAG,CAAI94C,GAAS,EAAL,CAAU7D,EAAE8D,AAAU,EAAVA,CAAC,CAAC9D,EAAE,GAAG,EAAP,CAAe,AAACmvD,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAE,AAACnvD,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAE,MAAWw8D,EAAEA,EAAE,EAAE,EAAE+c,EAAE58B,C,CAAQ74C,CAAC,CAACq1B,AAANA,CAAAA,EAAEt1B,CAAAA,GAAO,EAAL,CAAQE,EAAED,CAAC,CAACq1B,EAAE,GAAG,EAAP,CAAUz4B,C,CAAa,GAAA,AAAC4I,CAAAA,AAAE,EAAdA,CAAAA,EAAEA,EAAE,EAAE,CAAA,CAAQ,GAAKvJ,CAAAA,AAAE,EAAFA,CAAE,EAAG,MAAM+D,EAAepD,EAAEoD,AAAQ,EAARA,CAAC,CAACC,AAAjBA,CAAAA,EAAEouB,EAAG7oB,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAS,EAAL,CAAUvF,EAAED,AAAU,EAAVA,CAAC,CAACC,EAAE,GAAG,EAAP,A,CAA+B,IAAlBuF,EAAE,EAAE5I,EAAE8R,EAAEzO,EAAEC,IAAU,CAAI,GAAA,CAAGtD,CAAAA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAGqD,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,CAAA,EAAG,CAAoC,GAAnC44C,EAAE27X,AAAe,EAAfA,GAAG53a,AAAE,EAAFA,EAAIqD,AAAE,EAAFA,EAAI,IAAM0+H,IAAiB9lF,AAAAA,CAAAA,AAAE,EAAbA,CAAAA,GAAI,EAAJA,CAAa,GAAKzjB,CAAAA,AAAE,EAAFA,CAAE,EAAO,CAAA,GAACyjB,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKzjB,CAAAA,AAAE,EAAFA,CAAE,IAAIx4B,GAAI87D,EAAEz4D,EAAEA,AAAE,UAAFA,EAAYo1B,EAAKwjB,IAAI,GAAG+f,IAAI,GAAE,CAAC74D,EAAEq1B,EAAI,GAACqgD,EAAEi/V,AAAqB,EAArBA,GAAG,EAAE,EAAG,AAAA,CAAA,GAAG30a,EAAE,CAAA,EAAG,EAAE,GAAKA,EAAEA,EAAE,EAAE,EAAEnD,GAAE64E,EAAIx1E,EAAE0+H,AAAI,EAAJA,IAAM1+H,QAAQF,IAAI,EAAE84C,IAAI,EAApE,A,C,MAA8Ej8C,EAAE,EAAEqD,EAAE,EAA8E,GAA5E44C,EAAE2gY,AAAoB,EAApBA,GAAG58a,AAAE,EAAFA,EAAIqD,AAAE,EAAFA,EAAIhE,AAAE,EAAFA,EAAImyB,AAAE,EAAFA,GAAOuwG,IAAuBv5H,EAAEpF,AAAQ,EAARA,CAAC,CAACqrD,AAARA,CAAAA,EAAbtrD,EAAE5D,EAAG08C,CAAAA,GAAG,CAAA,EAAG,CAAI94C,GAAS,EAAL,CAAUsrD,EAAErrD,AAAU,EAAVA,CAAC,CAACqrD,EAAE,GAAG,EAAP,CAAe,CAAGjmD,CAAAA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAGimD,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,CAAA,EAAc,IAAVoqB,EAAE,IAAU,CAAI,GAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAIx5E,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAACq5B,EAAE,GAAS14B,MAAAA,C,CAAK,GAACwI,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKxI,CAAAA,AAAE,EAAFA,CAAE,EAAG,AAACyuD,CAAAA,AAAE,WAAFA,EAAa,CAAA,GAAKprD,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAACwF,EAAE+ua,AAAe,EAAfA,GAAGpva,AAAE,EAAFA,EAAIimD,AAAE,EAAFA,EAAI,IAAMszE,IAAMl5H,GAAI,EAAEvJ,EAAEuJ,EAAE,EAAE,EAAEkwE,EAAE6+V,AAAe,EAAfA,GAAGpva,AAAE,EAAFA,EAAIimD,AAAE,EAAFA,EAAI,IAAMszE,IAAM1+H,EAAE,GAAG,GAAK80a,AAAU,EAAVA,EAAGp/V,AAAE,IAAFA,GAAkB,CAAoC,GAAnCvwE,EAAEova,AAAe,EAAfA,GAAGpva,AAAE,EAAFA,EAAIimD,AAAE,EAAFA,EAAI,IAAMszE,IAAgB,CAAVv5H,CAAAA,GAAI,EAAJA,EAAa,CAACimD,EAAE,E,K,CAAkB,IAAVA,EAAE,IAAU,CAA6B,GAAA,CAAGsqB,CAAAA,AAAAA,CAAAA,AAA/BA,CAAAA,EAAE++V,AAAqB,EAArBA,GAAG,EAAE,EAAG,AAAA,CAAA,GAAGrpX,EAAE,CAAA,EAAG,EAAE,EAAG,EAAUzuD,EAAE,CAAA,GAAI,EAAG,AAAC+hI,CAAAA,AAAAA,CAAAA,AAAI,EAAJA,GAAI,EAAG1+H,EAAE,CAAA,GAAI,CAAA,EAAG,CAACorD,EAAE,EAAQprD,MAAAA,C,CAAKorD,GAAAA,IAAI,EAAEjmD,IAAI,EAAEimD,EAAEA,EAAE,EAAE,MAAM,CAACA,EAAE,E,K,C,CAAlM,MAAqBA,EAAE,QAA2L,EAAlN,AAAwN,GAAC5lD,AAAAA,CAAAA,EAAE,EAAE,CAAA,IAAK,EAAE4lD,IAAI,EAAE,CAAC/1B,EAAE,GAAS14B,MAAAA,C,CAAE+4E,EAAE++V,AAAa,EAAbA,GAAGx4a,AAAE,EAAFA,EAAI,EAAE,IAAM+D,EAAE0+H,AAAI,EAAJA,IAAM1+H,AAAE,WAAFA,EAAiBD,CAAC,CAAC9D,AAANA,CAAAA,EAAE6D,CAAAA,GAAO,EAAL,CAAQ,EAAEC,CAAC,CAAC9D,EAAE,GAAG,EAAP,CAAU,EAAEU,GAAE+4E,CAAra,MAA8a98B,EAAGA,AAAAA,CAAAA,EAAE,EAAE,CAAA,EAAI58C,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAgD,GAA7BmJ,EAAEpF,AAAQ,EAARA,CAAC,CAACqrD,AAARA,CAAAA,EAAbtrD,EAAE5D,EAAG08C,CAAAA,GAAG,CAAA,EAAG,CAAI94C,GAAS,EAAL,CAAUsrD,EAAErrD,AAAU,EAAVA,CAAC,CAACqrD,EAAE,GAAG,EAAP,CAAe,AAACjmD,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAE,AAACimD,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAE,MAAWoqB,EAAEA,EAAE,EAAE,C,CAAOz1E,CAAC,CAAC21E,AAANA,CAAAA,EAAE51E,CAAAA,GAAO,EAAL,CAAQnD,EAAEoD,CAAC,CAAC21E,EAAE,GAAG,EAAP,CAAU11E,C,CAAa,GAAA,AAACuF,CAAAA,AAAE,EAAdA,CAAAA,EAAEA,EAAE,EAAE,CAAA,CAAQ,GAAKvJ,CAAAA,AAAE,EAAFA,CAAE,EAAG,MAAM+D,EAAepD,EAAEoD,AAAQ,EAARA,CAAC,CAACC,AAAjBA,CAAAA,EAAEouB,EAAG7oB,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAS,EAAL,CAAUvF,EAAED,AAAU,EAAVA,CAAC,CAACC,EAAE,GAAG,EAAP,A,CAAx8D,OAA29D,EAA39D,AAAi+D,GAAChE,AAAAA,CAAAA,EAAE,EAAE,CAAA,IAAK,EAAE,GAAG,CAACq5B,EAAE,G,K,CAAgC,GAAA,CAAvBD,CAAAA,EAAEg/Y,AAAgB,EAAhBA,GAAG,AAACp4a,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAE,EAAE,EAAG,EAAQ,CAACq5B,EAAE,G,K,CAASr5B,EAAE,GAAG,GAAGG,EAAE,CAACq5E,EAAE,EAAEv5E,EAAE,EAAI,EAAA,CAA+C,GAA7BsJ,EAAExF,AAAQ,EAARA,CAAC,CAACpD,AAARA,CAAAA,EAAbi8C,EAAE18C,EAAGs5E,CAAAA,GAAG,CAAA,EAAG,CAAI58B,GAAS,EAAL,CAAUj8C,EAAEoD,AAAU,EAAVA,CAAC,CAACpD,EAAE,GAAG,EAAP,CAAe,CAAG4I,CAAAA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAG5I,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,CAAA,EAAG,CAACyuD,EAAEmpX,AAAe,EAAfA,GAAGhva,AAAE,EAAFA,EAAI5I,AAAE,EAAFA,EAAI,IAAM+hI,IAAMtzE,GAAI,EAAEprD,EAAEorD,EAAE,EAAE,EAAEjmD,EAAExI,AAAE,WAAFA,EAAa+4E,EAAE6+V,AAAe,EAAfA,GAAGhva,AAAE,EAAFA,EAAI5I,AAAE,EAAFA,EAAI,IAAM+hI,IAAMn5H,EAAE,GAAG,GAAGuva,AAAU,EAAVA,EAAGp/V,AAAE,IAAFA,GAAS,CAAoClwE,GAAnCA,EAAE+ua,AAAe,EAAfA,GAAGhva,AAAE,EAAFA,EAAI5I,AAAE,EAAFA,EAAI,IAAM+hI,IAAgBl5H,AAAE,EAAZA,CAAAA,GAAI,EAAJA,EAAyB,IAAV1F,EAAE,IAAU,CAA6B,GAAA,CAAGyF,CAAAA,AAAAA,CAAAA,EAA/BmwE,CAAAA,EAAE++V,AAAqB,EAArBA,GAAG,EAAE,EAAG,AAAA,CAAA,GAAG30a,EAAE,CAAA,EAAG,EAAE,EAAG,EAAY,CAAA,GAAI,EAAGqF,AAAAA,CAAAA,EAAGu5H,CAAAA,AAAI,EAAJA,GAAI,EAAG,CAAA,GAAI,CAAA,EAAG,MAAMn5H,EAAKzF,GAAAA,IAAI,EAAE0F,IAAI,EAAE1F,EAAEA,EAAE,EAAE,OAAO,K,CAAwByF,GAAjB5I,EAAE83a,AAAa,EAAbA,GAAGz0a,AAAE,EAAFA,EAAI,EAAE,IAAYrD,EAAE+hI,AAAI,EAAJA,IAAMv5H,EAAMpF,CAAC,CAACC,AAANA,CAAAA,EAAE44C,CAAAA,GAAO,EAAL,CAAQrzC,EAAExF,CAAC,CAACC,EAAE,GAAG,EAAP,CAAUrD,EAAEqD,EAAEorD,EAAE,EAAE,CAA/O,OAAuP,EAAvP,AAA8PprD,CAAAA,AAAE,EAAFA,CAAE,GAAI,IAAgBD,CAAC,CAAC21E,AAAfA,CAAAA,EAAEtgD,EAAGn5B,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAO,EAAL,CAAQsJ,EAAExF,CAAC,CAAC21E,EAAE,GAAG,EAAP,CAAU/4E,AAAE,WAAFA,EAAaV,EAAEA,EAAE,EAAE,E,CAAGu5E,EAAEA,EAAE,EAAE,CAA5d,OAAqeA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKx5E,CAAAA,AAAE,EAAFA,CAAE,EAA9e,AAAqfG,GAAAA,EAAE,CAAiDg5B,GAAhDsjC,EAAE,AAAC,CAAA,AAACz8D,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAA,GAAI,IAAI,GAAGwJ,EAAEiva,AAAa,EAAbA,GAAGt/Y,AAAE,EAAFA,EAAI,EAAE,IAAMqgD,EAAEkpD,AAAI,EAAJA,IAASvpG,IAAI,EAAE,GAAkB,IAAdx4B,EAAE,EAAE4I,EAAE,IAAU,CAAI,GAAA,GAAG,CAAE,CAAA,AAACkJ,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAGxO,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,CAAA,EAAG,CAA8H,IAA7HmrD,EAAEmpX,AAAe,EAAfA,GAAG9la,AAAE,EAAFA,EAAIxO,AAAE,EAAFA,EAAI,IAAMy+H,IAAMtzE,GAAI,GAAGtrD,EAAGsrD,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAIj2B,CAAAA,AAAE,EAAFA,CAAE,EAAGi2B,EAAGA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKj2B,CAAAA,AAAE,EAAFA,CAAE,EAA2Br1B,EAAEy5a,AAAoB,EAApBA,GAAG3gY,AAAE,EAA/BA,CAAAA,EAAE94C,EAAE,EAAEsrD,EAAE38C,EAAE,CAAA,EAAuB28C,AAAE,EAAvBA,CAAAA,EAAEtrD,EAAE,EAAEsrD,EAAEnrD,EAAE,CAAA,EAAejE,AAAE,EAAFA,EAAIy8D,AAAE,EAAFA,GAAOimE,IAAM1+H,EAAE,IAAU,CAAI,GAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAIhE,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAACq5B,EAAE,GAAS14B,MAAAA,C,CAAgC,GAAA,AAACwI,CAAAA,AAAE,WAApBA,CAAAA,EAAEpF,AAAU,EAAVA,CAAC,CAAC21E,AAAjBA,CAAAA,EAAEx5E,EAAG4D,CAAAA,GAAG,CAAA,EAAG,CAAA,EAAQ,GAAG,EAAP,AAAU,EAAmB,CAAA,GAAKsrD,CAAAA,AAAE,EAAFA,CAAE,EAAIrrD,AAAAA,CAAAA,AAAQ,EAARA,CAAC,CAAC21E,GAAG,EAAL,AAAQ,GAAK98B,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAE,CAACvjB,EAAE,G,K,CAA2C,GAAA,AAACt1B,CAAAA,AAAQ,EAARA,CAAC,CAAC21E,AAAnBA,CAAAA,EAAEx5E,EAAG4D,CAAAA,AAAvBA,CAAAA,EAAE,AAACA,CAAAA,EAAE,EAAE,CAAA,EAAI9D,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAA,GAAU,CAAA,EAAG,CAAA,GAAW,EAAL,AAAQ,GAAK48C,CAAAA,AAAE,EAAFA,CAAE,EAAI74C,AAAAA,CAAAA,AAAU,EAAVA,CAAC,CAAC21E,EAAE,GAAG,EAAP,AAAU,GAAKtqB,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAE,MAAWprD,EAAEA,EAAE,EAAE,C,CAAK,GAACq1B,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,GAAIA,CAAAA,EAAE,EAAE,CAAA,EAAMlwB,AAAAA,CAAAA,AAAE,UAAFA,EAAY,CAAA,GAAI,SAAA,EAAW,EAAE,KAAmBpF,CAAAA,CAAC,CAAC21E,AAAfA,CAAAA,EAAE71E,EAAG0F,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAO,EAAL,CAAQkJ,EAAE1O,CAAC,CAAC21E,EAAE,GAAG,EAAP,CAAUz1E,EAAEsF,EAAEA,EAAE,EAAE,CAAnd,OAA2d,EAA3d,AAAye,GAAC5I,AAAAA,CAAAA,AAAE,EAAdA,CAAAA,EAAEA,EAAE,EAAE,CAAA,CAAQ,GAAKX,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAACA,EAAEC,EAAQD,MAAAA,C,CAAeyS,EAAE1O,AAAQ,EAARA,CAAC,CAACE,AAAjBA,CAAAA,EAAEmuB,EAAGzxB,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAS,EAAL,CAAUsD,EAAEF,AAAU,EAAVA,CAAC,CAACE,EAAE,GAAG,EAAP,A,CAA2B,IAAdtD,EAAE,EAAE4I,EAAE,IAAU,CAAI,GAAA,GAAG,CAAE,CAAA,AAACkJ,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAGxO,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,CAAA,EAAG,CAAoC,GAAnCmrD,EAAEmpX,AAAe,EAAfA,GAAG9la,AAAE,EAAFA,EAAIxO,AAAE,EAAFA,EAAI,IAAMy+H,IAAiBtzE,AAAAA,CAAAA,AAAE,EAAbA,CAAAA,GAAI,EAAJA,CAAa,GAAKj2B,CAAAA,AAAE,EAAFA,CAAE,GAAM,GAACi2B,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKj2B,CAAAA,AAAE,EAAFA,CAAE,GAA6Bi2B,GAAzBprD,EAAEyO,EAAEjJ,EAAE1F,EAAEG,AAAE,UAAFA,EAAYu1E,EAAKpqB,IAAI,EAAEuN,IAAI,EAAEvN,EAAEtrD,MAAM,CAAC84C,EAAEzjB,EAAI,GAACugD,EAAE++V,AAAqB,EAArBA,GAAG,EAAE,EAAG,AAAA,CAAA,GAAG77X,EAAE,CAAA,EAAG,EAAE,GAAKA,EAAEA,EAAE,EAAE,EAAE54C,GAAE01E,EAAI51E,EAAE4+H,AAAI,EAAJA,IAAM5+H,QAAQ84C,IAAI,EAAEwS,IAAI,EAApE,AAAuEA,EAAEtrD,C,OAAQE,EAAEyO,EAAE28C,EAAEnrD,OAAOD,EAAE,EAAEorD,EAAE,EAA0C,IAAxCxS,EAAE2gY,AAAoB,EAApBA,GAAGv5a,AAAE,EAAFA,EAAIorD,AAAE,EAAFA,EAAIpvD,AAAE,EAAFA,EAAIy8D,AAAE,EAAFA,GAAOimE,IAAM5+H,EAAE,IAAU,CAAI,GAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAI9D,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAACq5B,EAAE,GAAS14B,MAAAA,C,CAAgC,GAAA,AAACwI,CAAAA,AAAE,WAApBA,CAAAA,EAAEpF,AAAU,EAAVA,CAAC,CAAC21E,AAAjBA,CAAAA,EAAEx5E,EAAG08C,CAAAA,GAAG,CAAA,EAAG,CAAA,EAAQ,GAAG,EAAP,AAAU,EAAmB,CAAA,GAAKwS,CAAAA,AAAE,EAAFA,CAAE,EAAIrrD,AAAAA,CAAAA,AAAQ,EAARA,CAAC,CAAC21E,GAAG,EAAL,AAAQ,GAAK11E,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAE,CAACq1B,EAAE,G,K,CAA2C,GAAA,AAACt1B,CAAAA,AAAQ,EAARA,CAAC,CAAC21E,AAAnBA,CAAAA,EAAEx5E,EAAG08C,CAAAA,AAAvBA,CAAAA,EAAE,AAACA,CAAAA,EAAE,EAAE,CAAA,EAAI58C,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAA,GAAU,CAAA,EAAG,CAAA,GAAW,EAAL,AAAQ,GAAKgE,CAAAA,AAAE,EAAFA,CAAE,EAAID,AAAAA,CAAAA,AAAU,EAAVA,CAAC,CAAC21E,EAAE,GAAG,EAAP,AAAU,GAAKtqB,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAE,MAAWtrD,EAAEA,EAAE,EAAE,C,CAAK,GAACu1B,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,GAAIA,CAAAA,EAAE,EAAE,CAAA,EAAMlwB,AAAAA,CAAAA,AAAE,UAAFA,EAAY,CAAA,GAAI,SAAA,EAAW,EAAE,KAAmBpF,CAAAA,CAAC,CAAC21E,AAAfA,CAAAA,EAAE71E,EAAG0F,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAO,EAAL,CAAQkJ,EAAE1O,CAAC,CAAC21E,EAAE,GAAG,EAAP,CAAUz1E,EAAEsF,EAAEA,EAAE,EAAE,CAAvlB,OAA+lB,EAA/lB,AAA6mB,GAAC5I,AAAAA,CAAAA,AAAE,EAAdA,CAAAA,EAAEA,EAAE,EAAE,CAAA,CAAQ,GAAKX,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAACA,EAAEC,EAAQD,MAAAA,C,CAAeyS,EAAE1O,AAAQ,EAARA,CAAC,CAACE,AAAjBA,CAAAA,EAAEmuB,EAAGzxB,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAS,EAAL,CAAUsD,EAAEF,AAAU,EAAVA,CAAC,CAACE,EAAE,GAAG,EAAP,A,CAA/yC,MAAi0CsF,EAAE,EAAEvJ,EAAEC,CAAv0D,MAA+0DsJ,EAAE,EAAEvJ,EAAE,QAAQ,EAAh2D,AAAi5D,GAA9C09a,GAAGx9a,AAAE,EAAFA,EAAI,EAAE+xB,AAAE,EAAFA,GAAOwrZ,GAAGrrZ,AAAE,EAAFA,EAAIgH,AAAE,EAAFA,EAAIp5B,GAAG,EAAE,GAAKy8a,GAAGrjZ,GAAOp5B,EAAa6D,EAAEA,EAAG0F,CAAAA,GAAG,CAAA,EAAG,OAAtB,K,OAA2B,AAAC8vB,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,IAAIojZ,GAAGrqZ,GAAGqqZ,GAAGv8a,GAAew5E,AAAE,EAAdA,CAAAA,EAAE,EAAFA,GAAwB,AAACrgD,CAAAA,AAAE,EAAFA,CAAE,GAAI,IAAIojZ,GAAGrqZ,GAAGqqZ,GAAGv8a,GAAew5E,AAAE,EAAdA,CAAAA,EAAE,EAAFA,GAAwB,AAACrgD,CAAAA,AAAE,EAAFA,CAAE,GAAI,IAAIojZ,GAAGrqZ,GAAGqqZ,GAAGv8a,GAAew5E,AAAE,EAAdA,CAAAA,EAAE,EAAFA,GAAwB,AAACrgD,CAAAA,AAAE,EAAFA,CAAE,GAAI,IAAIojZ,GAAGrjZ,GAAGqjZ,GAAGrqZ,GAAGqqZ,GAAGv8a,GAAew5E,AAAE,EAAdA,CAAAA,EAAE,EAAFA,IAAyBrgD,CAAAA,AAAE,EAAFA,CAAE,GAAI,IAAGokZ,GAAG55a,AAAE,EAAFA,EAAIuuB,AAAE,EAAFA,EAAIpyB,GAAG,EAAE,GAAKy8a,GAAGrqZ,GAAGqqZ,GAAGv8a,GAAcw5E,AAAE,EAAbA,CAAAA,EAAE,CAAA,E,EAGh52CykW,sBAHmgxDoC,SAAG5/a,CAAZ,EAAyBkD,IAAAA,EAAE,EAAEG,EAAE,EAAEhE,EAAE,EAAEuJ,EAAE,EAAK,GAA7B5I,GAAI,EAA6C,IAAVX,EAAE,IAAU,CAAgB6D,GAAAA,AAAE,EAAjBA,CAAAA,EAAEE,AAAQ,EAARA,CAAC,CAACpD,GAAG,EAAL,AAAQ,EAAS,EAAE,CAAgBqD,GAAAA,AAAE,EAAjBA,CAAAA,EAAED,AAAQ,EAARA,CAAC,CAACF,GAAG,EAAL,AAAQ,EAAS,GAAG0F,EAAEvF,EAAEA,EAAED,AAAW,EAAXA,CAAC,CAACC,EAAE,IAAI,EAAR,CAAay4a,GAAGlza,SAAUvF,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAzC,AAA4CuF,EAAE1F,EAAEA,EAAEE,AAAU,EAAVA,CAAC,CAACF,EAAE,GAAG,EAAP,CAAY44a,GAAGlza,EAAvF,OAAiG1F,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAvG,AAA2I,GAAjCA,EAAElD,EAAEA,EAAEoD,AAAU,EAAVA,CAAC,CAACpD,EAAE,GAAG,EAAP,CAAgBX,GAAEy8a,GAAG54a,GAAOlD,EAAaX,EAAE,OAAb,K,C,EAGrsxDo+a,cAH80hCpwF,SAAGrtV,CAAZ,EAA4B,MAAA,EAAA,CAAGX,CAAC,CAAC,MAAOW,CAAAA,AAAzBA,CAAAA,GAAI,CAAA,GAAwB,CAAA,GAAI,EAA1B,A,EAGz0hC09a,aAHg3hCyid,SAAGng4B,CAAZ,EAA4B,MAAA,EAAA,CAAGX,CAAC,CAAC,MAAOW,CAAAA,AAAzBA,CAAAA,GAAI,CAAA,GAAwB,CAAA,GAAI,EAA1B,A,EAG52hCu2a,2BALydz8I,SAAEw8I,CAAX,EAA6L,OAAvKt2a,EAAE,IAAIkjM,UAAUozO,GAAa,IAAI7oQ,WAAW6oQ,GAAWlza,EAAE,IAAI+vL,WAAWmjP,GAAa,IAAI7yP,aAAa6yP,GAAWj3a,EAAE,IAAIgkL,aAAaizP,GAAW50T,EAAO40T,EAAiB,CAAA,CADrwB,EAMqJqH,mBAHs3lCszT,SAAGjxuB,CAAZ,CAAckD,CAAd,EAAiBlD,GAAI,EAAEkD,GAAI,EAAMG,IAAAA,EAAE,EAAIuF,EAAE,EAAIzF,EAAE,EAAIG,EAAE,EAAE24C,EAAE,EAAEwS,EAAE,EAAIjmD,EAAE,EAAIsJ,EAAE,EAA+C,GAA3CmqC,EAAE4nF,EAAEA,EAAEA,EAAE,IAAI,EAAMykB,GAAGtoJ,EAAEkD,EAATI,EAAE24C,GAA4Bj8C,AAAAA,CAAAA,AAAE,EAAlBA,CAAAA,EAAEoD,AAAQ,EAARA,CAAC,CAACE,GAAG,EAAL,AAAQ,CAAQ,GAAI,EAAoB,OAAjBH,EAAE,EAAI0gI,EAAE5nF,EAAS,CAAC94C,EAAED,EAAElD,EAAE,GAAG,EAAEA,EAAE,EAAEqD,EAAE,EAAIuF,EAAE,CAACvJ,CAAC,CAACiE,EAAE,GAAG,EAAV,CAAaH,EAAE,CAAC9D,CAAC,CAACiE,EAAE,IAAI,EAAX,CAAgB,GAACtD,EAAEA,EAAE,EAAE,EAAEwI,EAAEI,EAAEA,EAAE,CAACvJ,CAAC,CAACiE,EAAE,EAAGtD,CAAAA,GAAG,CAAA,GAAI,EAAjB,CAAoB8R,EAAE,CAAC0mB,EAAE,CAAG5vB,CAAAA,AAAAA,CAAAA,EAAEJ,CAAAA,EAAG,EAAA,GAAKimD,EAAEtrD,EAAEA,EAAE,CAAC9D,CAAC,CAACiE,EAAE,EAAGtD,CAAAA,GAAG,CAAA,EAAG,GAAG,EAAnB,CAAkEqD,GAAK,AAA8B,EAA9B,CAAC01E,EAAE,EAAA,CAAGvnD,EAAE,CAAvCi9B,CAAAA,EAAE38C,EAAEA,EAAE28C,AAAxBA,CAAAA,EAAE,CAACj2B,EAAE,CAAGr1B,CAAAA,AAAAA,CAAAA,EAAEsrD,CAAAA,EAAG,EAAA,EAAbA,EAA2B,CAAA,CAACuN,EAAE,CAACxzD,GAAG,CAACwzD,EAAE,CAACpzD,GAAG6lD,CAAAA,CAAAA,GAAqB,EAAA,CAAGj9B,EAAE,CAAE,CAAA,EAAIi9B,CAAAA,UAAiBzuD,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKkD,CAAAA,AAAE,EAAFA,CAAE,EAAlL,AAAuN,OAAjC4O,EAAEzO,AAAE,kBAAFA,EAAoBwgI,EAAE5nF,EAAS,CAACnqC,C,EAGnvmC8ra,kBAH8vmCszT,SAAGlxuB,CAAZ,CAAckD,CAAd,EAAiBlD,GAAI,EAAEkD,GAAI,EAAMG,IAAAA,EAAE,EAAIuF,EAAE,EAAIzF,EAAE,EAAIG,EAAE,EAAE24C,EAAE,EAAEwS,EAAE,EAAIjmD,EAAE,EAAIsJ,EAAE,EAA+C,GAA3CmqC,EAAE4nF,EAAEA,EAAEA,EAAE,IAAI,EAAMykB,GAAGtoJ,EAAEkD,EAATI,EAAE24C,GAA4Bj8C,AAAAA,CAAAA,AAAE,EAAlBA,CAAAA,EAAEoD,AAAQ,EAARA,CAAC,CAACE,GAAG,EAAL,AAAQ,CAAQ,GAAI,EAAoB,OAAjBH,EAAE,EAAI0gI,EAAE5nF,EAAS,CAAC94C,EAAED,EAAElD,EAAE,GAAG,EAAEA,EAAE,EAAEqD,EAAE,EAAIuF,EAAE,CAACvJ,CAAC,CAACiE,EAAE,GAAG,EAAV,CAAaH,EAAE,CAAC9D,CAAC,CAACiE,EAAE,IAAI,EAAX,CAAgB,GAACtD,EAAEA,EAAE,EAAE,EAAEwI,EAAEI,EAAEA,EAAE,CAACvJ,CAAC,CAACiE,EAAE,EAAGtD,CAAAA,GAAG,CAAA,GAAI,EAAjB,CAAoB8R,EAAE,CAAC0mB,EAAE,CAAG5vB,CAAAA,AAAAA,CAAAA,EAAEJ,CAAAA,EAAG,EAAA,GAAKimD,EAAEtrD,EAAEA,EAAE,CAAC9D,CAAC,CAACiE,EAAE,EAAGtD,CAAAA,GAAG,CAAA,EAAG,GAAG,EAAnB,CAAkEqD,GAAK,AAA8B,EAA9B,CAAC01E,EAAE,EAAA,CAAGvnD,EAAE,CAAvCi9B,CAAAA,EAAE38C,EAAEA,EAAE28C,AAAxBA,CAAAA,EAAE,CAACj2B,EAAE,CAAGr1B,CAAAA,AAAAA,CAAAA,EAAEsrD,CAAAA,EAAG,EAAA,EAAbA,EAA2B,CAAA,CAACuN,EAAE,CAACxzD,GAAG,CAACwzD,EAAE,CAACpzD,GAAG6lD,CAAAA,CAAAA,GAAqB,EAAA,CAAGj9B,EAAE,CAAE,CAAA,EAAIi9B,CAAAA,UAAiBzuD,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKkD,CAAAA,AAAE,EAAFA,CAAE,EAAlL,AAA6N,OAAvC4O,EAAEzO,AAAAA,kBAAAA,EAA0BwgI,EAAE5nF,EAAS,CAACnqC,C,EAGlonC+ra,qBAHo8kCyid,SAAGtg4B,CAAZ,CAAckD,CAAd,EAAiBlD,GAAI,EAAEkD,GAAI,EAAMG,IAAAA,EAAE,EAAIuF,EAAE,EAAIzF,EAAE,EAAIG,EAAE,EAAE24C,EAAE,EAAEwS,EAAE,EAAIjmD,EAAE,EAAIsJ,EAAE,EAA+C,GAA3CmqC,EAAE4nF,EAAEA,EAAEA,EAAE,IAAI,EAAMykB,GAAGtoJ,EAAEkD,EAATI,EAAE24C,GAA4Bj8C,AAAAA,CAAAA,AAAE,EAAlBA,CAAAA,EAAEoD,AAAQ,EAARA,CAAC,CAACE,GAAG,EAAL,AAAQ,CAAQ,GAAI,EAAoB,OAAjBH,EAAE,EAAI0gI,EAAE5nF,EAAS,CAAC94C,EAAED,EAAElD,EAAE,GAAG,EAAEA,EAAE,EAAEqD,EAAE,EAAIuF,EAAE,CAACvJ,CAAC,CAACiE,EAAE,GAAG,EAAV,CAAaH,EAAE,CAAC9D,CAAC,CAACiE,EAAE,IAAI,EAAX,CAAgB,GAACtD,EAAEA,EAAE,EAAE,EAAEwI,EAAEI,EAAEA,EAAE,CAACvJ,CAAC,CAACiE,EAAE,EAAGtD,CAAAA,GAAG,CAAA,GAAI,EAAjB,CAAoB8R,EAAE,CAAC0mB,EAAE,CAAG5vB,CAAAA,AAAAA,CAAAA,EAAEJ,CAAAA,EAAG,EAAA,GAAKimD,EAAEtrD,EAAEA,EAAE,CAAC9D,CAAC,CAACiE,EAAE,EAAGtD,CAAAA,GAAG,CAAA,EAAG,GAAG,EAAnB,CAAkEqD,GAAK,AAA8B,EAA9B,CAAC01E,EAAE,EAAA,CAAGvnD,EAAE,CAAvCi9B,CAAAA,EAAE38C,EAAEA,EAAE28C,AAAxBA,CAAAA,EAAE,CAACj2B,EAAE,CAAGr1B,CAAAA,AAAAA,CAAAA,EAAEsrD,CAAAA,EAAG,EAAA,EAAbA,EAA2B,CAAA,CAACuN,EAAE,CAACpzD,GAAG,CAACozD,EAAE,CAACxzD,GAAGimD,CAAAA,CAAAA,GAAqB,EAAA,CAAGj9B,EAAE,CAAE,CAAA,EAAIi9B,CAAAA,UAAiBzuD,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAIkD,CAAAA,AAAE,EAAFA,CAAE,EAAjL,AAAgM,OAAX2gI,EAAE5nF,EAAS,CAAC54C,C,EAGxylCy6a,yBAHwziE5B,SAAGl8a,CAAZ,CAAcoD,CAAd,CAAgBF,CAAhB,CAAkBG,CAAlB,CAAoBhE,CAApB,EAAuBW,GAAI,EAAEoD,GAAI,EAAEF,GAAI,EAAEG,GAAI,EAAEhE,GAAI,EAAMuJ,IAAhx2C5I,EAAEkD,EAAmBG,EAA2v2CuF,EAAE,EAAEzF,EAAE,EAAmEnD,OAAjEmD,EAAE0gI,EAAEA,EAAEA,EAAE,GAAG,EAAM7jI,CAAAA,EAAE+7a,AAAc,EAAdA,GAAG/7a,EAAEoD,EAAEF,EAAEG,EAAfuF,EAAEzF,EAAkB,IAApz2CnD,EAAI,EAA4z2C4I,EAA1z2C1F,EAAI,EAAwz2C7D,EAAlz2CgE,EAAE,EAAEA,EAAED,AAAU,EAAVA,CAAC,CAACpD,EAAE,GAAG,EAAP,CAAYoD,CAAC,CAACF,GAAG,EAAL,CAAQ,AAACE,CAAAA,AAAQ,EAARA,CAAC,CAACpD,GAAG,EAAL,AAAQ,EAAGqD,EAAED,CAAC,CAACF,EAAE,GAAG,EAAP,CAAU,AAACE,CAAAA,AAAU,EAAVA,CAAC,CAACpD,EAAE,GAAG,EAAP,AAAU,EAAGqD,EAAqv2CrD,EAAE,GAAE6jI,EAAE1gI,EAASnD,AAAE,EAAFA,C,EAGr5iE+9a,yBAHk6iEyqP,SAAGxoqB,CAAZ,CAAcoD,CAAd,CAAgBF,CAAhB,CAAkBG,CAAlB,EAAqBrD,GAAI,EAAEoD,GAAI,EAAEF,GAAI,EAAEG,GAAI,EAAMhE,IAApy2CW,EAAEkD,EAAmBG,EAAIhE,EAAIuJ,EAAIzF,EAAIG,EAAI24C,EAA2v2C58C,EAAE,EAAEuJ,EAAE,EAAsDvF,OAApDhE,EAAEwkI,EAAEA,EAAEA,EAAE,GAAG,EAAEj7H,EAAEvJ,EAAtz2CW,EAAI,EAAuz2CkD,EAArz2CA,EAAI,EAAmz2C0F,EAA7y2CvF,EAAE,EAAEhE,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAE24C,EAAE,EAAE58C,EAAE+D,AAAQ,EAARA,CAAC,CAACpD,GAAG,EAAL,CAAUoD,CAAC,CAACF,GAAG,EAAL,CAAQ7D,EAAEW,EAAEoD,AAAU,EAAVA,CAAC,CAACpD,EAAE,GAAG,EAAP,CAAoBoD,CAAC,CAACE,AAAVA,CAAAA,EAAEJ,EAAE,EAAE,CAAA,GAAO,EAAL,CAAQlD,EAAUoD,CAAC,CAAC64C,AAAVA,CAAAA,EAAE/4C,EAAE,EAAE,CAAA,GAAO,EAAL,CAAQ,EAAEG,EAAErD,EAAEX,EAAE,EAAMA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAG,GAAGW,EAAE,EAAEX,EAAE,EAAE+D,CAAC,CAACE,GAAG,EAAL,CAAQD,EAAED,CAAC,CAAC64C,GAAG,EAAL,CAAQj8C,EAAEoD,CAAC,CAACF,GAAG,EAAL,CAAQ,EAAE7D,EAAE,IAAOgE,EAAErD,EAAEA,EAAE,GAAMqD,CAAAA,AAAE,EAAFA,CAAE,EAAG,IAAGhE,EAAEA,EAAEgE,EAAE,EAAED,CAAC,CAACF,GAAG,EAAL,CAAQ7D,EAAEW,EAAEA,EAAEqD,EAAE,EAAED,CAAC,CAAC64C,GAAG,EAAL,CAAQj8C,EAAEoD,CAAC,CAACE,GAAG,EAAL,CAAQ,EAAED,EAAE,GAAEF,EAAE9D,EAAEW,EAAE,EAAE4I,EAAEvF,EAAErD,EAAE,EAAMA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAG,GAAGoD,CAAC,CAACF,GAAG,EAAL,CAAQC,EAAEC,CAAC,CAACE,GAAG,EAAL,CAAQsF,EAAExF,CAAC,CAAC64C,GAAG,EAAL,CAAQ,EAAE54C,EAAEuF,EAAEA,EAAEzF,EAAEnD,EAAE,GAAO4I,EAAEvJ,EAAEA,EAAE,AAACgE,CAAAA,AAAE,EAAFA,CAAE,EAAIuF,CAAAA,AAAE,EAAFA,CAAE,EAAGvF,EAAEuF,EAAwBvJ,CAAAA,AAAE,EAAxBA,CAAAA,EAAE,AAACW,CAAAA,AAAE,EAAFA,CAAE,EAAIX,CAAAA,AAAE,EAAFA,CAAE,EAAGW,EAAEX,CAAAA,CAAQ,GAAI,IAAS+D,CAAC,CAACF,GAAG,EAAL,CAAQ0F,EAAEvJ,EAAE+D,CAAC,CAACE,GAAG,EAAL,CAAQD,EAAEhE,EAAE+D,CAAC,CAAC64C,GAAG,EAAL,CAAQj8C,EAAEX,GAA+51CgE,EAAE24a,AAAY,EAAZA,GAAGh8a,EAAEoD,EAAEwF,EAAEvF,GAAKwgI,EAAExkI,EAASgE,AAAE,EAAFA,C,EAG1+iE26a,MAAMlC,GAAGmC,SAASjG,GAAGkG,6CAHy0sD0id,SAAG5g4B,CAAZ,CAAckD,CAAd,EAAiBlD,GAAI,EAAEkD,GAAI,EAAMG,IAAAA,EAAE,EAAEhE,EAAE,EAAEuJ,EAAE,SAAEvJ,EAAEwkI,EAAEA,EAAEA,EAAE,GAAG,EAAExgI,EAAEhE,EAAO,CAAA,EAAM6D,AAAAA,CAAAA,AAAE,WAAFA,EAAa,CAAA,GAAI,YAA0C0F,EAAEgva,AAAe,EAAfA,GAAG53a,AAAE,EAAFA,EAAIkD,AAAE,EAAFA,EAAI,IAAM6+H,IAAM3+H,CAAC,CAACC,GAAG,EAAL,CAAQ,EAAEA,EAAEs0a,AAAoC,EAApCA,EAAG33a,EAAEkD,AAAE,YAAFA,EAAc,UAAU0F,AAAE,EAAFA,EAAIvF,GAAaquB,EAAExuB,AAAE,EAAZA,CAAAA,EAAE6+H,AAAI,EAAJA,GAAI,KAA3G1+H,EAAE,EAAEquB,EAAExuB,AAAE,EAAZA,CAAAA,EAAE,CAAA,IAAa2gI,EAAExkI,EAASgE,AAAE,EAAFA,C,EAGh5sD86a,oCAHkytDy0R,SAAG5ysB,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,EAAmBrD,GAAI,EAAEkD,GAAI,EAAEG,GAAI,EAAMhE,IAAAA,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAE24C,EAAE,EAAE94C,EAAE0gI,EAAEA,EAAEA,EAAE,GAAG,EAAExkI,EAAE8D,EAAEG,EAAE,CAAA,EAAK,AAACJ,CAAAA,AAAE,WAAFA,EAAa,CAAA,GAAI,UAAU0F,EAAE1F,AAAE,YAAFA,EAAc,UAAcE,CAAC,CAAC64C,AAANA,CAAAA,EAAE54C,CAAAA,GAAO,EAAL,CAAQC,EAAEtD,EAAE,EAAEoD,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAU34C,EAAEsF,EAAE,EAAKtF,GAAGJ,EAAE00a,AAAe,EAAfA,GAAG53a,AAAE,EAAFA,EAAIkD,AAAE,EAAFA,EAAI,IAAM6+H,IAAM3+H,CAAC,CAAC/D,GAAG,EAAL,CAAQ,EAAEW,EAAE23a,AAAc,EAAdA,EAAG33a,EAAE4I,EAAE1F,AAAE,EAAFA,EAAI7D,GAAK6D,EAAE6+H,AAAI,EAAJA,MAAW/hI,EAAE,EAAEkD,EAAE,GAAUE,CAAC,CAAC64C,AAAVA,CAAAA,EAAE54C,EAAE,EAAE,CAAA,GAAO,EAAL,CAAQrD,EAAEoD,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAU/4C,EAAE2gI,EAAE1gI,C,EAG/guDi7a,yBAH+trD5C,SAAGx7a,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,CAAkBhE,CAAlB,EAAqBW,GAAI,EAAEkD,GAAI,EAAEG,GAAI,EAAEhE,GAAI,EAAMuJ,IAAAA,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAE24C,EAAE,EAAEwS,EAAE,EAAEjmD,EAAE,EAAEsJ,EAAE,EAAsB,GAApBtJ,EAAEq7H,EAAEA,EAAEA,EAAE,GAAG,EAAEvgI,EAAEkF,EAAK,CAAE67F,CAAAA,AAAY,EAAZA,GAAGrkG,EAAEkD,EAAEG,EAAEhE,EAAG,EAA8BovD,OAAtBA,EAAE,EAAE/8B,EAAEuqB,AAAE,EAAZA,CAAAA,EAAE,CAAA,GAAa4nF,EAAEr7H,EAASimD,AAAE,EAAFA,EAAmD,IAA/CxS,EAAE/4C,AAAE,YAAFA,EAA+B0F,EAAEA,AAAnBA,CAAAA,EAAGoya,AAAAA,CAAAA,AAAQ,EAARA,GAAGh7a,EAAEkD,EAAG,GAAI,CAAA,EAAM,EAAE,EAAWE,CAAC,CAACE,GAAG,EAAL,CAAQ,EAAEwO,EAAE6la,AAAY,EAAZA,EAAG33a,EAAEkD,EAAE0F,EAAEtF,GAAKH,EAAEyF,EAAE,EAAE,GAAMkJ,CAAAA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKzO,CAAAA,AAAE,EAAFA,CAAE,EAAG,AAAC0+H,CAAAA,AAAI,EAAJA,GAAI,GAAK1iI,CAAAA,AAAE,EAAFA,CAAE,CAAA,GAAY8D,GAAAA,IAAI,EAAE,EAAEyF,EAAEzF,MAAM,CAACyF,EAAE,EAAE5I,EAAE,EAAEyuD,EAAE,E,K,OAAY,AAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,GAAG/8B,EAAE9oB,AAAE,EAAFA,GAAKi7H,EAAEr7H,EAASxI,AAAE,EAAFA,IAAI8R,EAAEgma,AAAa,EAAbA,GAAGlva,AAAE,EAAFA,EAAI,EAAE,IAAM6lD,EAAExS,EAAG8lF,CAAAA,AAAI,EAAJA,GAAI,EAAG,UAAUjwH,GAAE9R,EAAI0xB,EAAE+8B,AAAE,EAAFA,GAAKo1E,EAAEr7H,EAASsJ,AAAE,EAAFA,E,EAG7ksDusa,iCAAiC/1R,GAAGg2R,qCAHi+tDuid,SAAG7g4B,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,EAAmBrD,GAAI,EAAEkD,GAAI,EAAEG,GAAI,EAAMhE,IAAAA,EAAE,EAAEuJ,EAAE,EAAEA,EAAGoya,AAAAA,CAAAA,AAAQ,EAARA,GAAGh7a,EAAEkD,EAAG,GAAI,EAAEA,GAAI,YAAgBE,CAAC,CAAC/D,AAANA,CAAAA,EAAEgE,CAAAA,GAAO,EAAL,CAAQuF,EAAE5I,EAAE,EAAEoD,CAAC,CAAC/D,EAAE,GAAG,EAAP,CAAUuJ,EAAE1F,AAAE,UAAFA,EAAY,EAAUE,CAAC,CAAC/D,AAAVA,CAAAA,EAAEgE,EAAE,EAAE,CAAA,GAAO,EAAL,CAAQrD,EAAEoD,CAAC,CAAC/D,EAAE,GAAG,EAAP,CAAU6D,AAAE,UAAFA,EAAqBE,CAAC,CAAC/D,AAAXA,CAAAA,EAAEgE,EAAE,GAAG,CAAA,GAAO,EAAL,CAAQrD,EAAEoD,CAAC,CAAC/D,EAAE,GAAG,EAAP,CAAU6D,AAAE,UAAFA,EAAqBE,CAAC,CAAC/D,AAAXA,CAAAA,EAAEgE,EAAE,GAAG,CAAA,GAAO,EAAL,CAAQrD,EAAEoD,CAAC,CAAC/D,EAAE,GAAG,EAAP,CAAU6D,AAAE,UAAFA,EAAqBE,CAAC,CAAC/D,AAAXA,CAAAA,EAAEgE,EAAE,GAAG,CAAA,GAAO,EAAL,CAAQrD,EAAEoD,CAAC,CAAC/D,EAAE,GAAG,EAAP,CAAU6D,AAAE,UAAFA,EAAqBE,CAAC,CAACC,AAAXA,CAAAA,EAAEA,EAAE,GAAG,CAAA,GAAO,EAAL,CAAQrD,EAAEoD,CAAC,CAACC,EAAE,GAAG,EAAP,CAAUH,AAAE,UAAFA,C,EAG9uuDq7a,wCAH8gsDoid,SAAG3g4B,CAAZ,CAAcoD,CAAd,EAAiBpD,GAAI,EAAEoD,GAAI,EAAMF,IAAAA,EAAE,EAA+E,OAA1CwuB,EAAGxuB,AAAAA,CAAAA,AAAtCA,CAAAA,EAAE,CAAA,EAAK,AAACE,CAAAA,AAAE,WAAFA,EAAa,CAAA,GAAI,SAAzBF,EAAwCE,AAAE,YAAFA,EAAc,UAAU,CAAA,EAAG,GAAWF,AAAAA,CAAAA,EAAElD,EAAE,CAAA,EAAG,C,EAGplsDw+a,oBAAoBqO,GAAGpO,gBAH8+Y3pF,SAAG90V,CAAZ,EAAeA,GAAI,EAAMkD,IAAAA,EAAE,EAAEG,EAAE,EAAEhE,EAAE,EAAE6D,EAAE,EAAI,GAAC40a,GAAG50a,AAAE,EAAFA,EAAI,EAAE,IAAM7D,EAAE0iI,AAAAA,UAAAA,IAA6B3+H,CAAC,CAACC,AAAfA,CAAAA,EAAErD,EAAGkD,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAO,EAAL,CAAQ,GAAGE,CAAC,CAACC,EAAE,GAAG,EAAP,CAAUhE,EAAE6D,EAAEA,EAAE,EAAE,QAASA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,IAA7F,A,EAG3/Yw7a,YAH8siEoid,SAAG9g4B,CAAZ,CAAcoD,CAAd,CAAgBF,CAAhB,CAAkBG,CAAlB,EAAqBrD,GAAI,EAAEoD,GAAI,EAAEF,GAAI,EAAEG,GAAI,EAAMhE,IAAAA,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAA4GnD,OAA1GmD,EAAE0gI,EAAEA,EAAEA,EAAE,GAAG,EAAExkI,EAAE8D,EAAE,GAAG,EAAEyF,EAAEzF,EAAiDnD,EAA5C,CAAA,AAAC+7a,CAAAA,AAAc,EAAdA,GAAG/7a,EAAEoD,EAAEpD,EAAEoD,EAAE/D,EAAG,GAAI,EAAG08a,AAAAA,CAAAA,AAAc,EAAdA,GAAG/7a,EAAEoD,EAAEF,EAAEG,EAAEuF,EAAG,GAAI,EAAE,CAAA,EAAIwxa,AAAQ,EAARA,GAAG/6a,EAAEuJ,GAAY,GAAGi7H,EAAE1gI,EAASnD,AAAE,EAAFA,C,EAG71iE2+a,eAAeqO,GAAGpO,YAHu4lDwO,SAAAA,EAAGptb,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,EAAmBrD,GAAI,EAAEkD,GAAI,EAAEG,GAAI,EAAMhE,IAAAA,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAE24C,EAAE,EAAEwS,EAAE,EAAEjmD,EAAE,EAAEsJ,EAAE,EAAEjJ,EAAE,EAAEA,EAAEg7H,EAAEA,EAAEA,EAAE,IAAI,EAAEr7H,EAAEK,EAAE,IAAI,EAAE1F,EAAE0F,EAAE,GAAG,EAAEiJ,EAAEjJ,EAAED,EAAEgva,AAAe,EAAfA,GAAG53a,AAAE,EAAFA,EAAIkD,AAAE,EAAFA,EAAI,IAAM6+H,IAAM9lF,EAAErzC,AAAE,GAAFA,EAAKxF,CAAC,CAACoF,GAAG,EAAL,CAAQyzC,EAAE34C,EAAEs0a,AAAe,EAAfA,GAAG53a,AAAE,EAAFA,EAAIkD,AAAE,EAAFA,EAAI,IAAM6+H,IAAMz+H,GAAI,IAAItD,EAAE,GAAG,GAAGm4a,AAAM,EAANA,EAAG70a,GAAK,CAAI24C,GAAAA,AAAE,EAAFA,EAAe,IAAV58C,EAAE,IAAU,CAA6B,GAAA,CAAGovD,CAAAA,AAAAA,CAAAA,AAA/BA,CAAAA,EAAEqpX,AAAqB,EAArBA,GAAG,EAAE,EAAG,AAAA,CAAA,GAAGz4a,EAAE,CAAA,EAAG,EAAE,EAAG,EAAUW,EAAE,CAAA,GAAI,EAAG,AAAC+hI,CAAAA,AAAAA,CAAAA,AAAI,EAAJA,GAAI,EAAG7+H,EAAE,CAAA,GAAI,CAAA,EAAG,CAAC0F,EAAE,EAAQ5I,MAAAA,C,CAAKX,GAAAA,IAAI,EAAE48C,IAAI,EAAE58C,EAAEA,EAAE,EAAE,OAAO,K,CAAU,GAAEuJ,AAAE,EAAFA,EAAgHA,EAAE,MAA7G,CAAC6lD,EAAEqpX,AAAe,EAAfA,GAAG77X,EAAE,EAAE,EAAE,EAAE,IAAMnqC,EAAEiwH,AAAI,EAAJA,IAAM7+H,AAAE,UAAFA,EAAqCkqb,EAAG,AAAC3+X,CAAAA,EAAEzuD,CAAAA,EAAG,CAAlCwI,CAAAA,EAAEsva,AAAqB,EAArBA,GAAG,EAAE,EAAG,AAAA,CAAA,GAAG77X,EAAE,CAAA,EAAG,EAAE,EAAG,EAAcnqC,EAAE,CAAEiwH,CAAAA,AAAI,EAAJA,GAAI,EAAG1+H,GAAGwgI,EAAEh7H,E,MAAvG,CAA5I,MAA0QD,EAAE,QAAQ,EAApR,AAAuR0ya,GAAGt7a,EAAEkD,EAAEC,GAAMyF,GAAG4xa,GAAGr3a,EAAEqF,EAAEsJ,GAAG28C,EAAE,IAAO4wK,GAAGl8N,EAAEqF,EAAEsJ,GAAG28C,EAAE,GAAErrD,EAAE,GAAG,GAAG+0a,AAAM,EAANA,EAAG70a,IAAQ,GAAC24C,EAAsB,IAAV58C,EAAE,IAAU,CAA6B,GAAA,CAAGiE,CAAAA,AAAAA,CAAAA,AAA/BA,CAAAA,EAAEw0a,AAAqB,EAArBA,GAAG,EAAE,EAAG,AAAA,CAAA,GAAGz4a,EAAE,CAAA,EAAG,EAAE,EAAG,EAAUW,EAAE,CAAA,GAAI,EAAG,AAAC+hI,CAAAA,AAAAA,CAAAA,AAAI,EAAJA,GAAI,EAAG7+H,EAAE,CAAA,GAAI,CAAA,EAAG,CAAC7D,EAAE,EAAQ+D,MAAAA,C,CAAK/D,GAAAA,IAAI,EAAE48C,IAAI,EAAE58C,EAAEA,EAAE,EAAE,MAAM,CAACA,EAAE,G,K,C,MAA7HA,EAAE,QAA2IA,EAAE,QAAQ,EAAVA,AAAiCuJ,GAApBm0a,GAAG15a,AAAE,EAAFA,EAAI,GAAGhE,AAAE,EAAFA,GAAUuJ,EAAE,CAACA,EAAE,EAAI,EAAA,CAAsD,IAAxCk2a,AAAlyvBA,SAAG9+a,CAAZ,CAAcoD,CAAd,EAAiBpD,GAAI,EAAEoD,GAAI,EAAMF,IAAAA,EAAE,EAAKA,GAAAA,EAAEuzF,AAAY,EAAZA,GAAGz2F,EAAEoD,EAAE,EAAE,SAAYF,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAA7BA,A,EAAsvvBC,EAAE2O,EAAGlJ,CAAAA,GAAG,CAAA,EAAG,EAAOxF,AAAQ,EAARA,CAAC,CAACoF,GAAG,EAAL,EAAarF,EAAEC,AAAQ,EAARA,CAAC,CAACD,GAAG,EAAL,CAAU9D,EAAE,GAAwC48C,CAAAA,AAAAA,CAAAA,AAAE,EAAlBA,CAAAA,EAAE74C,AAAQ,EAARA,CAAC,CAACE,AAAjBA,CAAAA,EAAED,EAAGhE,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAS,EAAL,AAAQ,CAAQ,GAAI,GAAI48C,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAK94C,CAAAA,AAAE,EAAFA,CAAE,CAAA,GAAc9D,EAAEA,EAAE,EAAE,CAAE+D,CAAAA,CAAC,CAACE,GAAG,EAAL,CAAQH,EAAEyF,EAAEA,EAAE,EAAE,CAAjJ,OAA0JA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAK6lD,CAAAA,AAAE,EAAFA,CAAE,EAAnK,AAAV,KAAqL,CAAC7lD,EAAE,EAAI,EAAA,CAA0D,IAA5C6tF,GAAbtzF,EAAE2O,EAAGlJ,CAAAA,GAAG,CAAA,EAAG,EAAOxF,AAAQ,EAARA,CAAC,CAACoF,GAAG,EAAL,CAAU,EAAE,GAAKrF,EAAEC,AAAQ,EAARA,CAAC,CAACD,GAAG,EAAL,CAAU9D,EAAE,GAAwC48C,CAAAA,AAAAA,CAAAA,AAAE,EAAlBA,CAAAA,EAAE74C,AAAQ,EAARA,CAAC,CAACE,AAAjBA,CAAAA,EAAED,EAAGhE,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAS,EAAL,AAAQ,CAAQ,GAAI,GAAI48C,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAK94C,CAAAA,AAAE,EAAFA,CAAE,CAAA,GAAc9D,EAAEA,EAAE,EAAE,CAAE+D,CAAAA,CAAC,CAACE,GAAG,EAAL,CAAQH,EAAEyF,EAAEA,EAAE,EAAE,CAArJ,OAA8JA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAK6lD,CAAAA,AAAE,EAAFA,CAAE,EAAvK,A,CAA2Ko1E,EAAEh7H,C,EAGj6nDm2a,uBAAuB36U,GAAG46U,cAAcjE,GAAGkE,iBAHul4Cwhd,SAAG1g4B,CAAZ,CAAcoD,CAAd,EAA6DA,OAA5CpD,GAAI,EAAEoD,GAAI,EAAEA,EAAEw0a,AAAe,EAAfA,GAAG53a,AAAE,EAAFA,EAAIoD,AAAE,EAAFA,EAAI,IAAM2+H,IAAa3+H,AAAE,EAAFA,EAAI,C,EAG3n4C+7a,WAAWtE,GAAGuE,QAHk7iE4nP,SAAGhnqB,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,CAAkBhE,CAAlB,CAAoBuJ,CAApB,EAAuB5I,GAAI,EAAEkD,GAAI,EAAEG,GAAI,EAAEhE,GAAI,EAAEuJ,GAAI,EAAMzF,IAAAA,EAAE,EAAEG,EAAE,EAAE24C,EAAE,EAAIwS,EAAE,EAAIjmD,EAAE,EAAEsJ,EAAE,EAAEjJ,EAAE,EAAEvJ,EAAE,EAAEu5E,EAAE,EAAI/c,EAAE,EAAItqC,EAAE,EAAIhyB,EAAE,EAAEw8D,EAAE,EAAExjC,EAAE,EAAEj5B,EAAE,EAAE+xB,EAAE,EAAEG,EAAE,EAAEiH,EAAE,EAA0C,GAAtCjH,EAAEoyG,EAAEA,EAAEA,EAAE,GAAG,EAAE1gI,EAAEsuB,EAAE,GAAG,EAAEnuB,EAAEmuB,EAAE,GAAG,EAAEH,EAAEG,EAAK,AAACsqZ,CAAAA,AAAc,EAAdA,GAAG/7a,EAAEkD,EAAElD,EAAEkD,EAAEC,EAAG,GAAI,EAAE,AAAC44a,CAAAA,AAAc,EAAdA,GAAG/7a,EAAEkD,EAAEG,EAAEhE,EAAEiE,EAAG,GAAI,EAAE,EAAE,CAAgB,GAAC/D,AAAAA,CAAAA,AAAE,EAAlBA,CAAAA,EAAE66a,AAAQ,EAARA,GAAGj3a,EAAEG,EAAG,CAAQ,EAAG,EAAkBguB,OAAfA,EAAE/xB,EAAEskI,EAAEpyG,EAASH,AAAE,EAAFA,EAAia,IAA5ZluB,CAAC,CAACD,GAAG,EAAL,CAAQ,EAAEC,CAAC,CAACD,EAAE,GAAG,EAAP,CAAU,EAAEC,CAAC,CAACD,EAAE,GAAG,EAAP,CAAU,EAAEC,CAAC,CAACE,GAAG,EAAL,CAAQ,EAAEF,CAAC,CAACE,EAAE,GAAG,EAAP,CAAU,EAAEF,CAAC,CAACE,EAAE,GAAG,EAAP,CAAU,EAAEy4a,GAAG/7a,EAAEkD,EAAElD,EAAEkD,EAAEC,GAAK44a,GAAG/7a,EAAEkD,EAAEG,EAAEhE,EAAEiE,GAAK+2a,GAAGl3a,GAAGk3a,GAAG/2a,GAAO/D,GAA0FuS,EAAE1O,AAAQ,EAARA,CAAC,CAACD,GAAG,EAAL,CAAU01E,EAAE,CAAEt5E,CAAAA,AAAE,EAAFA,CAAE,EAAWsJ,EAAEzF,AAAQ,EAARA,CAAC,CAAC5D,AAAZA,CAAAA,EAAE2D,EAAE,EAAE,CAAA,GAAS,EAAL,CAAkB7D,EAAE8D,AAAQ,EAARA,CAAC,CAAC44D,AAAZA,CAAAA,EAAE74D,EAAE,EAAE,CAAA,GAAS,EAAL,CAAUq1B,EAAEr1B,EAAEE,EAAEyO,EAAEzS,EAAEwJ,EAAE1F,EAAE7D,EAAEw8D,EAAE,CAAG14D,CAAAA,AAAAA,CAAAA,AAAQ,EAARA,CAAC,CAACE,GAAG,EAAL,AAAQ,EAAGwO,EAAE,CAAA,EAAG+mE,EAAErnD,EAAE,CAAGpuB,CAAAA,AAAAA,CAAAA,AAAU,EAAVA,CAAC,CAACE,EAAE,GAAG,EAAP,AAAU,EAAGuF,EAAE,CAAA,EAAGgwE,EAAEA,EAAE,CAAGz1E,CAAAA,AAAAA,CAAAA,AAAU,EAAVA,CAAC,CAACE,EAAE,GAAG,EAAP,AAAU,EAAGhE,EAAE,CAAA,EAAGu5E,IAA3Ox5E,EAAE8D,EAAE,EAAE,EAAE7D,EAAE6D,EAAE,EAAE,EAAE3D,EAAEH,EAAE28D,EAAE18D,EAAEk5B,EAAEr1B,EAAEE,EAAED,AAAQ,EAARA,CAAC,CAACD,GAAG,EAAL,CAAU9D,EAAE+D,AAAQ,EAARA,CAAC,CAAC/D,GAAG,EAAL,CAAU8D,EAAEC,AAAQ,EAARA,CAAC,CAAC9D,GAAG,EAAL,CAAUw8D,EAAE,EAAItqC,EAAE,EAAIqnD,EAAE,GAA+Jz1E,CAAC,CAACkuB,GAAG,EAAL,CAAQjuB,EAAUD,CAAC,CAAC9D,AAAVA,CAAAA,EAAEgyB,EAAE,EAAE,CAAA,GAAO,EAAL,CAAQjyB,EAAU+D,CAAC,CAACyF,AAAVA,CAAAA,EAAEyoB,EAAE,EAAE,CAAA,GAAO,EAAL,CAAQnuB,EAAE2O,EAAE,IAAU,CAAU4mB,EAAEojC,EAAXrN,CAAAA,EAAE,CAAE38C,CAAAA,AAAE,EAAFA,CAAE,CAAA,GAAU,CAAEzO,CAAAA,AAAE,EAAFA,CAAE,EAAG44C,EAAEzqB,EAAEi9B,GAAG,CAAErrD,CAAAA,AAAQ,EAARA,CAAC,CAAC5D,GAAG,EAAL,AAAQ,EAAGivD,EAAEoqB,EAAEpqB,GAAG,CAAErrD,CAAAA,AAAQ,EAARA,CAAC,CAAC44D,GAAG,EAAL,AAAQ,EAAG38D,EAAE,CAAC,CAAC,CAAC65a,GAAG,CAACxgZ,GAAGp1B,EAAE,CAAC,CAAC,CAAC41a,GAAG,CAACj9X,GAAG54C,EAAE,CAAC,CAAC,CAAC61a,GAAG,CAACzqX,GAAG/1B,EAAE,CAACD,EAAE,CAAE,CAAA,CAAEp5B,CAAAA,AAAE,EAAFA,CAAE,EAAGq5B,CAAAA,GAAIujB,EAAE,CAACxjB,EAAE,CAAE,CAAA,CAAEn1B,CAAAA,AAAE,EAAFA,CAAE,EAAG24C,CAAAA,GAAIwS,EAAE,CAACh2B,EAAE,CAAE,CAAA,CAAEp1B,CAAAA,AAAE,EAAFA,CAAE,EAAGorD,CAAAA,GAAO,GAAA,GAAK/1B,EAAEujB,EAAEvjB,EAAE+1B,EAA+DpvD,EAAE,EAAGiE,CAAAA,EAAED,CAAAA,EAAG,EAAEF,EAAEG,MAA1E,CAAY24C,GAAXzzC,EAAE,EAAEnJ,EAAE,EAAK48C,EAAEwS,EAAE,CAACtrD,EAAEqF,EAAEnF,EAAE,E,KAAd,CAA2BF,EAAEG,EAAED,EAAEmF,EAAElF,EAAE,E,KAA5D,OAAgG,EAAnG,AAAoK,GAA9DF,CAAC,CAACkuB,GAAG,EAAL,CAAQjyB,EAAE+D,CAAC,CAAC9D,GAAG,EAAL,CAAQ6D,EAAEC,CAAC,CAACyF,GAAG,EAAL,CAAQxF,EAAEg8a,AAAjk4CA,SAAGr/a,CAAZ,EAAeA,GAAI,EAAMkD,IAAAA,EAAE,EAAEG,EAAE,EAAEhE,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAE24C,EAAE,EAAc/4C,EAAE,EAAdG,CAAAA,EAAED,AAAQ,EAARA,CAAC,CAACpD,GAAG,EAAL,AAAQ,EAAQ,EAAEoD,CAAC,CAACpD,GAAG,EAAL,CAAQkD,EAAUE,CAAC,CAACE,AAAVA,CAAAA,EAAEtD,EAAE,EAAE,CAAA,GAAO,EAAL,CAAQ,EAAsB4I,EAAEvJ,AAAdA,CAAAA,EAAE+D,AAAQ,EAARA,CAAC,CAAC64C,AAAZA,CAAAA,EAAEj8C,EAAE,EAAE,CAAA,GAAS,EAAL,AAAQ,EAAMqD,EAAE,EAAMA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAG,GAAGD,CAAC,CAAC64C,GAAG,EAAL,CAAQrzC,EAAExF,CAAC,CAACE,GAAG,EAAL,CAAQD,EAAED,CAAC,CAACpD,GAAG,EAAL,CAAQ,EAAEkD,EAAE,EAAE7D,EAAEuJ,GAAOvF,EAAE,EAAMhE,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAG,GAAG8D,EAAED,EAAE7D,EAAE,EAAE+D,CAAC,CAACpD,GAAG,EAAL,CAAQmD,EAAEE,EAAEA,EAAEhE,EAAE,EAAE+D,CAAC,CAACE,GAAG,EAAL,CAAQD,EAAED,CAAC,CAAC64C,GAAG,EAAL,CAAQ,EAAErzC,EAAEzF,EAAEE,EAAE,EAAEH,EAAE,EAAEG,EAAE,EAAMA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAG,GAAGD,CAAC,CAACpD,GAAG,EAAL,CAAQ4I,EAAExF,CAAC,CAAC64C,GAAG,EAAL,CAAQ/4C,EAAEE,CAAC,CAACE,GAAG,EAAL,CAAQ,EAAEjE,EAAE6D,EAAEG,EAAE,IAAOhE,EAAE,EAAEuJ,EAAEzF,IAAQyF,EAAE1F,EAAEA,EAAE,AAAC7D,CAAAA,AAAE,EAAFA,CAAE,EAAIuJ,CAAAA,AAAE,EAAFA,CAAE,EAAGvJ,EAAEuJ,EAAwB1F,CAAAA,AAAE,EAAxBA,CAAAA,EAAE,AAACG,CAAAA,AAAE,EAAFA,CAAE,EAAIH,CAAAA,AAAE,EAAFA,CAAE,EAAGG,EAAEH,CAAAA,CAAQ,GAAI,IAASE,CAAC,CAACpD,GAAG,EAAL,CAAQ4I,EAAE1F,EAAEE,CAAC,CAAC64C,GAAG,EAAL,CAAQ58C,EAAE6D,EAAEE,CAAC,CAACE,GAAG,EAAL,CAAQD,EAAEH,E,EAAqq3CouB,GAAG0qZ,GAAGh8a,EAAEkD,EAAEouB,EAAE1oB,EAAGkJ,CAAAA,GAAG,CAAA,EAAG,GAASA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKvS,CAAAA,AAAE,EAAFA,CAAE,EAAG,MAAMuS,EAAEA,EAAE,EAAE,EAAEzO,EAAED,AAAQ,EAARA,CAAC,CAACo1B,GAAG,EAAL,A,CAAyBlH,OAAfA,EAAE,EAAEuyG,EAAEpyG,EAASH,AAAE,EAAFA,C,CAAoBA,OAAhBA,EAAE,GAAGuyG,EAAEpyG,EAASH,AAAE,EAAFA,C,EAGh9kEguZ,YAHiviEyhd,SAAG/g4B,CAAZ,CAAcoD,CAAd,CAAgBF,CAAhB,CAAkBG,CAAlB,EAAqBrD,GAAI,EAAEoD,GAAI,EAAEF,GAAI,EAAEG,GAAI,EAAMhE,IAAAA,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAA4G,OAA1GA,EAAE0gI,EAAEA,EAAEA,EAAE,GAAG,EAAExkI,EAAE8D,EAAE,GAAG,EAAEyF,EAAEzF,EAAiDnD,EAA5C,CAAA,AAAC+7a,CAAAA,AAAc,EAAdA,GAAG/7a,EAAEoD,EAAEpD,EAAEoD,EAAE/D,EAAG,GAAI,EAAG08a,AAAAA,CAAAA,AAAc,EAAdA,GAAG/7a,EAAEoD,EAAEF,EAAEG,EAAEuF,EAAG,GAAI,EAAE,CAAA,EAAIwxa,AAAQ,EAARA,GAAG/6a,EAAEuJ,GAAY,GAAGi7H,EAAE1gI,EAAUnD,AAAAA,CAAAA,IAAI,GAAG,CAAA,EAAGA,EAAE,C,EAG74iEu/a,kBAHguSkgd,SAAGz/3B,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,EAAmBrD,GAAI,EAAEkD,GAAI,EAAEG,GAAI,EAAMhE,IAAAA,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAqF,GAAnFH,EAAE0gI,EAAEA,EAAEA,EAAE,GAAG,EAAExkI,EAAE8D,EAAWq8a,AAA5fA,SAAGx/a,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,EAAmBrD,GAAI,EAAEkD,GAAI,EAAEG,GAAI,EAAMhE,IAAAA,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAE24C,EAAE,EAAEwS,EAAE,EAAEjmD,EAAE,EAAuB,GAArBA,EAAEq7H,EAAEA,EAAEA,EAAE,IAAI,EAAEp1E,EAAEjmD,EAAMtF,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAE,CAACw4a,GAAGr4a,EAAE,EAAE,GAAGwgI,EAAEr7H,E,M,CAAalF,EAAEs0a,AAA6B,EAA7BA,GAAGx0a,AAAQ,EAARA,CAAC,CAACE,AAAXA,CAAAA,EAAEtD,CAAAA,GAAY,EAAL,CAAUoD,AAAU,EAAVA,CAAC,CAACE,EAAE,GAAG,EAAP,CAAY,IAAMy+H,IAAM25S,GAAGr4a,EAAGH,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAEA,EAAE,EAAEI,AAAE,GAAFA,GAAMA,EAAE,EAAI,EAAA,CAAyD,GAA3Co1a,GAAGt1a,AAAQ,EAARA,CAAC,CAAC/D,AAAlBA,CAAAA,EAAEW,EAAGsD,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAU,EAAL,CAAUF,AAAU,EAAVA,CAAC,CAAC/D,EAAE,GAAG,EAAP,CAAYovD,GAAmBpvD,AAAAA,CAAAA,AAAE,EAAlBA,CAAAA,EAAE+D,AAAQ,EAARA,CAAC,CAACqrD,GAAG,EAAL,AAAQ,CAAQ,EAAG,EAAE,CAACxS,EAAE,EAAI,GAAC94C,EAAEsrD,EAAE,EAAGxS,CAAAA,GAAG,CAAA,EAAG,EAAuCrzC,CAAAA,EAAE82a,AAAU,EAAVA,AAAy1jEA,SAAG1/a,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,EAAmBrD,GAAI,EAAEkD,GAAI,EAAEG,GAAI,EAAMuF,IAAAA,EAAE,EAAEzF,EAAE,EAA4H,GAA1HA,EAAE,CAAC,CAAE,CAAA,CAACs1B,EAAE,CAAE,CAAA,CAACj5B,EAAE,GAAK,EAAA,CAAI,CAAA,GAAI4D,CAAAA,AAAW,EAAXA,CAAC,CAACpD,EAAE,IAAI,EAAR,AAAW,EAAG,CAAA,GAAM,CAAA,CAACX,CAAC,CAAC6D,GAAG,EAAN,EAAU,CAAC7D,CAAC,CAAC6D,EAAE,GAAG,EAAN,AAAM,CAAN,GAAY,CAAEE,CAAAA,AAAU,EAAVA,CAAC,CAACpD,EAAE,GAAG,EAAP,AAAU,CAAA,IAAM,EAAkC,CAAhCmD,CAAAA,EAAEC,AAAyB,EAAzBA,CAAC,CAAEA,AAAAA,CAAAA,AAAQ,EAARA,CAAC,CAACpD,GAAG,EAAL,AAAQ,EAAImD,CAAAA,GAAG,CAAA,GAAI,EAAtB,AAAyB,EAAoBE,OAAAA,AAAE,EAAbA,CAAAA,EAAE,CAAA,EAAgB,GAAA,CAACA,EAAE,CAAW,IAAVrD,EAAEmD,IAAU,CAAIy3a,GAAAA,AAAQ,EAARA,GAAG56a,EAAEkD,GAAK,CAAC0F,EAAE,G,K,CAA2B,GAAA,CAAlB5I,CAAAA,EAAEoD,AAAW,EAAXA,CAAC,CAACpD,EAAE,IAAI,EAAR,AAAW,EAAQ,CAACA,EAAE,EAAE4I,EAAE,G,K,C,CAAa,GAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,GAAG,OAAO5I,AAAE,EAAFA,C,CAAc,IAAVA,EAAEmD,IAAU,CAAIy3a,GAAAA,AAAQ,EAARA,GAAG56a,EAAEkD,GAAK03a,AAAa,EAAbA,GAAG56a,EAAE,GAAG,EAAEqD,GAAK,EAAE,CAACuF,EAAE,G,K,CAA2B,GAAA,CAAlB5I,CAAAA,EAAEoD,AAAW,EAAXA,CAAC,CAACpD,EAAE,IAAI,EAAR,AAAW,EAAQ,CAACA,EAAE,EAAE4I,EAAE,G,K,C,OAAa,AAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,GAAU5I,AAAE,EAAFA,EAAW,C,EAAlvkEqD,EAAlChE,EAAEovD,EAAE,EAAI,CAAA,AAACxS,CAAAA,AAAAA,CAAAA,AAAE,EAAnBA,CAAAA,EAAEA,EAAE,EAAE,CAAA,CAAa,EAAI58C,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAA,GAAI,CAAA,EAAG,EAAW8D,EAAG,EAAyBo5a,GAAGl5a,EAAEuF,GAAtB4za,AAAusiEA,SAAGx8a,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,EAAmBrD,GAAI,EAAEkD,GAAI,EAAEG,GAAI,EAAMuF,IAAAA,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAE24C,EAAE,EAAE34C,CAAAA,EAAEo2a,AAAO,EAAPA,GAAG,GAAI,GAAQj2S,EAAE,MAAM,MAAM,GAAG,OAAOrgI,CAAC,CAACE,GAAG,EAAL,CAAQF,CAAC,CAACF,GAAG,EAAb,CAAgBE,CAAC,CAACE,EAAE,GAAG,EAAP,CAAUF,CAAC,CAACF,EAAE,GAAG,EAAjB,CAAoBE,CAAC,CAACE,EAAE,GAAG,EAAP,CAAUF,CAAC,CAACF,EAAE,GAAG,EAAjB,CAAoBE,CAAC,CAACE,EAAE,IAAI,EAAR,CAAWF,CAAC,CAACF,EAAE,IAAI,EAAnB,CAA+BE,CAAC,CAACD,AAAXA,CAAAA,EAAEG,EAAE,GAAG,CAAA,GAAO,EAAL,CAAQF,CAAC,CAACC,GAAG,EAAb,CAAgBD,CAAC,CAACD,EAAE,GAAG,EAAP,CAAUC,CAAC,CAACC,EAAE,GAAG,EAAjB,CAAoBD,CAAC,CAACD,EAAE,GAAG,EAAP,CAAUC,CAAC,CAACC,EAAE,GAAG,EAAjB,CAAoBD,CAAC,CAACD,EAAE,IAAI,EAAR,CAAWC,CAAC,CAACC,EAAE,IAAI,EAAnB,CAAsBD,CAAC,CAACE,EAAE,IAAI,EAAR,CAAW,EAAEH,EAAE,CAAC,CAAE,CAAA,CAACs1B,EAAE,CAAE,CAAA,CAACj5B,EAAE,GAAK,EAAA,CAAI,CAAA,GAAI4D,CAAAA,AAAW,EAAXA,CAAC,CAACpD,EAAE,IAAI,EAAR,AAAW,EAAG,CAAA,GAAM,CAAA,CAACX,CAAC,CAAC6D,GAAG,EAAN,EAAU,CAAC7D,CAAC,CAAC6D,EAAE,GAAG,EAAN,AAAM,CAAN,GAAY,CAAEE,CAAAA,AAAU,EAAVA,CAAC,CAACpD,EAAE,GAAG,EAAP,AAAU,CAAA,IAAM,EAAEmD,EAAE,AAACC,CAAAA,AAAQ,EAARA,CAAC,CAACpD,GAAG,EAAL,AAAQ,EAAImD,CAAAA,GAAG,CAAA,EAAG,EAAEyF,EAAExF,AAAQ,EAARA,CAAC,CAACD,GAAG,EAAL,CAAa,GAAA,GAAIyF,EAAgB,CAAO,KAAMgya,CAAAA,CAAAA,AAAQ,EAARA,GAAGhya,EAAE1F,EAAG,IAAE03a,CAAAA,AAAa,EAAbA,GAAGhya,EAAE,GAAG,EAAEvF,EAAG,GAA2C,GAAlBuF,EAAGzF,AAAAA,CAAAA,AAAE,EAApBA,CAAAA,EAAEC,AAAW,EAAXA,CAAC,CAACwF,EAAE,IAAI,EAAR,AAAW,CAAO,GAAI,EAAEA,EAAEzF,EAAK,CAAEC,CAAAA,AAAW,EAAXA,CAAC,CAACwF,EAAE,IAAI,EAAR,AAAW,EAAG,CAACqzC,EAAE,G,K,CAAa,GAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,GAAG,CAAC74C,CAAC,CAACwF,EAAE,IAAI,EAAR,CAAWtF,E,K,CAAyB24C,OAAjB6/X,GAAGx4a,GAAc24C,AAAE,EAAbA,CAAAA,EAAErzC,CAAAA,CAA5K,MAASxF,CAAC,CAACD,GAAG,EAAL,CAAQG,QAA8K,EAA/L,AAA2O24C,OAAjC74C,CAAC,CAAC64C,AAAVA,CAAAA,EAAEj8C,EAAE,EAAE,CAAA,GAAO,EAAL,CAAQ,AAACoD,CAAAA,AAAQ,EAARA,CAAC,CAAC64C,GAAG,EAAL,AAAQ,EAAG,EAAaA,AAAE,EAAbA,CAAAA,EAAE34C,CAAAA,C,EAA9yjED,EAAEF,EAAE9D,GAAoBA,EAAE+D,AAAQ,EAARA,CAAC,CAACqrD,GAAG,EAAL,OAAiBxS,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAI58C,CAAAA,AAAE,EAAFA,CAAE,EAAjI,A,CAAqIiE,EAAEA,EAAE,EAAE,CAAnN,OAA4NA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKJ,CAAAA,AAAE,EAAFA,CAAE,EAArO,AAAyO2gI,EAAEr7H,C,EAA+FxI,EAAEkD,EAAd0F,EAAEzF,EAAE,GAAG,GAAYC,CAAC,CAACC,GAAG,EAAL,CAAQ,EAAED,CAAC,CAACC,EAAE,GAAG,EAAP,CAAU,EAAED,CAAC,CAACC,EAAE,GAAG,EAAP,CAAU,EAAe,CAAbrD,CAAAA,EAAEs8a,AAAM,EAANA,GAAG1za,EAAG,EAAQ,CAACukb,GAAG9pb,GAAKg5a,GAAGzza,GAAGi7H,EAAE1gI,E,M,CAAW,EAAA,CAACD,EAAEu4a,AAAM,EAANA,AAAk+7CA,SAAGz7a,CAAZ,EAAeA,GAAI,EAAMkD,IAAAA,EAAE,EAAEG,EAAE,EAAEhE,EAAE,SAAE6D,CAAAA,EAAEu0a,AAAS,EAATA,GAAG,EAAE,GAAI,GAAQh0S,EAAE,MAAM,MAAM,GAAG,OAA8BpkI,AAAE,EAAjBA,CAAAA,EAAE+D,AAAQ,EAARA,CAAC,CAACC,AAAZA,CAAAA,EAAErD,EAAE,EAAE,CAAA,GAAS,EAAL,AAAQ,GAAkBoD,CAAC,CAAC/D,AAAVA,CAAAA,EAAEA,EAAE,EAAE,CAAA,GAAO,EAAL,CAAQ6D,GAAkC,EAARE,CAAC,CAACpD,GAAG,EAAL,EAAUyjI,EAAE,MAAM,MAAM,GAAG,OAAWrgI,CAAC,CAAC/D,AAANA,CAAAA,EAAEW,CAAAA,GAAO,EAAL,CAAQkD,GAAEE,CAAC,CAACC,GAAG,EAAL,CAAQH,EAASA,AAAE,EAAFA,C,EAA7q8CG,GAAO,EAACs8a,AAAkr8CA,CAAAA,SAAG3/a,CAAZ,CAAckD,CAAd,EAAiBlD,GAAI,EAAEkD,GAAI,EAAMG,IAAAA,EAAE,EAAEhE,EAAE,GAAEA,CAAAA,EAAEq6a,AAAO,EAAPA,GAAG,GAAI,GAAQj2S,EAAE,MAAM,MAAM,GAAG,OAAOrgI,CAAC,CAAC/D,GAAG,EAAL,CAAQ+D,CAAC,CAACF,GAAG,EAAb,CAAgBE,CAAC,CAAC/D,EAAE,GAAG,EAAP,CAAU+D,CAAC,CAACF,EAAE,GAAG,EAAjB,CAAoBE,CAAC,CAAC/D,EAAE,GAAG,EAAP,CAAU+D,CAAC,CAACF,EAAE,GAAG,EAAjB,CAAoBE,CAAC,CAAC/D,EAAE,IAAI,EAAR,CAAW+D,CAAC,CAACF,EAAE,IAAI,EAAnB,CAAsBE,CAAC,CAAC/D,EAAE,IAAI,EAAR,CAAW,EAAyBgE,AAAE,EAAjBA,CAAAA,EAAED,AAAQ,EAARA,CAAC,CAACF,AAAZA,CAAAA,EAAElD,EAAE,EAAE,CAAA,GAAS,EAAL,AAAQ,GAAUoD,CAAC,CAACC,EAAE,IAAI,EAAR,CAAWhE,GAAkC,EAAR+D,CAAC,CAACpD,GAAG,EAAL,EAAUyjI,EAAE,MAAM,MAAM,GAAG,OAAOrgI,CAAC,CAACpD,GAAG,EAAL,CAAQX,GAAE+D,CAAC,CAACF,GAAG,EAAL,CAAQ7D,C,C,EAAx88C6D,EAAElD,GAAKsD,EAAEtD,EAAE,GAAG,EAAEoD,CAAC,CAAC/D,GAAG,EAAL,CAAQ+D,CAAC,CAACE,GAAG,EAAb,CAAgBF,CAAC,CAAC/D,EAAE,GAAG,EAAP,CAAU+D,CAAC,CAACE,EAAE,GAAG,EAAjB,CAAoBF,CAAC,CAAC/D,EAAE,GAAG,EAAP,CAAU+D,CAAC,CAACE,EAAE,GAAG,EAAjB,CAAoBF,CAAC,CAAC/D,EAAE,IAAI,EAAR,CAAW+D,CAAC,CAACE,EAAE,IAAI,EAAnB,CAAsBi5a,GAAG3za,EAAE5I,GAAKA,EAAEy/a,AAAQ,EAARA,AAAu2jEA,SAAGz/a,CAAZ,CAAckD,CAAd,EAAiBlD,GAAI,EAAEkD,GAAI,EAAMG,IAAAA,EAAE,EAA4H,GAA1HA,EAAE,CAAC,CAAE,CAAA,CAACo1B,EAAE,CAAE,CAAA,CAACj5B,EAAE,GAAK,EAAA,CAAI,CAAA,GAAI4D,CAAAA,AAAW,EAAXA,CAAC,CAACpD,EAAE,IAAI,EAAR,AAAW,EAAG,CAAA,GAAM,CAAA,CAACX,CAAC,CAAC6D,GAAG,EAAN,EAAU,CAAC7D,CAAC,CAAC6D,EAAE,GAAG,EAAN,AAAM,CAAN,GAAY,CAAEE,CAAAA,AAAU,EAAVA,CAAC,CAACpD,EAAE,GAAG,EAAP,AAAU,CAAA,IAAM,EAAkC,CAAhCA,CAAAA,EAAEoD,AAAyB,EAAzBA,CAAC,CAAEA,AAAAA,CAAAA,AAAQ,EAARA,CAAC,CAACpD,GAAG,EAAL,AAAQ,EAAIqD,CAAAA,GAAG,CAAA,GAAI,EAAtB,AAAyB,EAAoBA,OAAAA,AAAE,EAAbA,CAAAA,EAAE,CAAA,EAAmB,OAAE,CAAIu3a,GAAAA,AAAQ,EAARA,GAAG56a,EAAEkD,GAAK,CAACA,EAAE,E,K,CAA0B,GAAA,CAAlBlD,CAAAA,EAAEoD,AAAW,EAAXA,CAAC,CAACpD,EAAE,IAAI,EAAR,AAAW,EAAQ,CAACA,EAAE,EAAEkD,EAAE,E,K,C,OAAY,AAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAASlD,AAAE,EAAFA,EAAW,C,EAAjnkE4I,EAAEvJ,SAAYW,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAvI,AAA0IA,EAAEs8a,AAAM,EAANA,GAAG1za,EAA5J,OAAwK5I,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAA9K,AAAiLmtb,GAAG9pb,GAAKg5a,GAAGzza,GAAGi7H,EAAE1gI,C,EAG5iT28a,iBAHkrrCpI,SAAG13a,CAAZ,CAAcoD,CAAd,CAAgBF,CAAhB,EAAmBlD,GAAI,EAAEoD,GAAI,EAAEF,GAAI,EAAMG,IAAAA,EAAE,EAAEhE,EAAE,EAAqC,GAAnCgE,EAAEu0a,AAAe,EAAfA,GAAG53a,AAAE,EAAFA,EAAIoD,AAAE,EAAFA,EAAI,IAAM2+H,IAAiB7+H,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAG,GAAIG,AAAAA,CAAAA,AAAE,EAAtBA,CAAAA,GAAI,EAAJA,CAAsB,GAAKH,CAAAA,AAAE,EAAFA,CAAE,EAAO,CAAA,GAACG,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKH,CAAAA,AAAE,EAAFA,CAAE,IAAqBlD,GAAjBX,EAAEy4a,AAAa,EAAbA,GAAG50a,AAAE,EAAFA,EAAI,EAAE,IAAYE,EAAE2+H,AAAI,EAAJA,IAAM3+H,AAAE,UAAFA,EAAe,AAACC,CAAAA,AAAE,EAAFA,CAAE,EAAIH,CAAAA,AAAE,EAAFA,CAAE,GAAG,GAAG7D,EAAEy4a,AAAqB,EAArBA,GAAG,EAAE,EAAG,AAAA,CAAA,GAAGz0a,EAAE,CAAA,EAAG,EAAE,GAAKA,EAAEA,EAAE,EAAE,EAAErD,GAAI,CAACX,EAAE+D,GAAI,CAAE2+H,CAAAA,AAAI,EAAJA,GAAI,QAAU1+H,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAIH,CAAAA,AAAE,EAAFA,CAAE,EAAvE,A,MAAiFE,EAAE,EAAEpD,EAAE,EAAgBA,OAAd0xB,EAAEtuB,AAAE,EAAFA,GAAYpD,AAAE,EAAFA,C,EAGl7rC+/a,cAAckN,GAAGjN,SAASzE,GAAG0E,iBAAiBvH,GAAGwH,YAAYpF,GAAGqF,6BAHkisD7vF,SAAGtwV,CAAZ,CAAcoD,CAAd,EAAiBpD,GAAI,EAAYkD,IAAAA,EAAE,EAAK,GAAA,CAAE,CAAA,CAAA,EAAME,AAAAA,CAAAA,AAAE,WAA3BA,CAAAA,GAAI,CAAA,EAAkC,CAAA,GAAI,SAAA,EAAuBF,OAAAA,AAAE,EAAbA,CAAAA,EAAE,CAAA,EAA6CA,OAAhCA,EAAE00a,AAAe,EAAfA,GAAG53a,AAAE,EAAFA,EAAIoD,AAAE,EAAFA,EAAI,IAAM2+H,IAAa7+H,AAAE,EAAFA,GAAU,KAAA,EAAO,KAAA,EAAcA,OAAAA,AAAE,EAAbA,CAAAA,EAAE,CAAA,C,OAAqD,CAA7BA,EAAEE,AAAE,YAAFA,EAAc,UAAa,CAAA,EAAK,AAACA,CAAAA,AAAE,UAAFA,EAAY,CAAA,GAAI,SAAS,AAAC43a,CAAAA,AAAQ,EAARA,GAAGh7a,EAAEkD,EAAG,GAAI,GAAcA,AAAE,EAAbA,CAAAA,EAAE,CAAA,EAAgCA,AAAE,EAArBA,CAAAA,EAAE23a,AAAQ,EAARA,GAAG76a,EAAEkD,EAAG,C,EAGxwsDk9a,YAHs+/Bu9M,SAAG39nB,CAAZ,EAA4B,MAAA,EAAA,CAAGX,CAAC,CAAC,MAAOW,CAAAA,AAAzBA,CAAAA,GAAI,CAAA,GAAwB,CAAA,GAAI,EAA1B,A,EAGn+/Bqgb,WAH0ggC6/c,SAAGlg4B,CAAZ,EAA4B,MAAA,EAAA,CAAGX,CAAC,CAAC,MAAOW,CAAAA,AAAzBA,CAAAA,GAAI,CAAA,GAAwB,CAAA,GAAI,EAA1B,A,EAGxggCsgb,SAH0iGvpV,SAAG/2F,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,CAAkBhE,CAAlB,EAAqBW,GAAI,EAAEkD,GAAI,EAAEG,GAAI,EAAEhE,GAAI,EAAMuJ,IAAAA,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAE24C,EAAE,EAAEwS,EAAE,EAAEjmD,EAAE,EAAEsJ,EAAE,EAAEjJ,EAAE,EAAsB,GAApBA,EAAEg7H,EAAEA,EAAEA,EAAE,GAAG,EAAE/xH,EAAEjJ,EAAK,CAACxF,EAA4CyO,OAArC1O,CAAC,CAAC0O,AAANA,CAAAA,EAAEzS,CAAAA,GAAO,EAAL,CAAQW,EAAEoD,CAAC,CAAC0O,EAAE,GAAG,EAAP,CAAU5O,EAAE4O,EAAE,EAAE+xH,EAAEh7H,EAASiJ,AAAE,EAAFA,CAAI1O,CAAAA,CAAC,CAAC0O,GAAG,EAAL,CAAQ,EAAE9R,EAAE,GAAG,GAAKg7a,AAAQ,EAARA,GAAGh7a,EAAEkD,GAAwyClD,EAAE,MAApyC,CAAcmD,GAAbA,EAAE,AAACE,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAO,CAACuF,EAAE,EAAEJ,EAAExI,EAAI,EAAA,CAA4B,GAAA,AAACwI,CAAAA,AAAE,EAA9BA,CAAAA,EAAEmva,AAAY,EAAZA,EAAGnva,EAAEtF,EAAE,EAAE4O,EAAG,CAAgB,GAAI,EAAE,AAAC5O,CAAAA,AAAE,EAAvBA,CAAAA,EAAE6+H,AAAI,EAAJA,GAAI,CAAiB,GAAI,EAAE,CAAC/hI,EAAE,EAAQA,MAAAA,C,CAAag7a,GAAXpya,EAAEA,EAAE,EAAE,EAAKoya,AAAQ,EAARA,GAAGxya,EAAEtF,GAAK,CAAClD,EAAE,EAAQA,MAAAA,C,CAA7F,OAAuG4I,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAIvF,CAAAA,AAAE,EAAFA,CAAE,EAA/G,AAAyJF,GAAlCC,CAAC,CAACqrD,AAANA,CAAAA,EAAEpvD,CAAAA,GAAO,EAAL,CAAQmJ,EAAEpF,CAAC,CAACqrD,EAAE,GAAG,EAAP,CAAUvrD,EAAEurD,EAAEprD,EAAE,GAAG,EAAKF,EAAE,CAACA,EAAE,EAAEG,EAAE,EAAEsF,EAAEJ,EAAExI,EAAEkD,EAAI,EAAA,CAA4B,GAAA,AAAC0F,CAAAA,AAAE,EAA9BA,CAAAA,EAAE+ua,AAAY,EAAZA,EAAG/ua,EAAE5I,EAAE,EAAE8R,EAAG,CAAgB,GAAI,EAAE,AAAC9R,CAAAA,AAAE,EAAvBA,CAAAA,EAAE+hI,AAAI,EAAJA,GAAI,CAAiB,GAAI,EAAE,CAAC/hI,EAAE,EAAQA,MAAAA,C,CAAgDg7a,GAAjC53a,CAAC,CAAC64C,AAAfA,CAAAA,EAAE58C,EAAGiE,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAO,EAAL,CAAQsF,EAAExF,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAUj8C,EAAEsD,EAAEA,EAAE,EAAE,EAAK03a,AAAQ,EAARA,GAAGpya,EAAE5I,GAAK,CAACA,EAAE,EAAQA,MAAAA,C,CAAEmD,EAAEA,EAAE,EAAE,CAAxI,OAAiJA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAIE,CAAAA,AAAE,EAAFA,CAAE,EAAzJ,AAA6J44C,EAAE,EAAE94C,EAAEG,EAAI,EAAA,CAA4B,GAAA,AAACsF,CAAAA,AAAE,EAA9BA,CAAAA,EAAE+ua,AAAY,EAAZA,EAAG/ua,EAAE5I,EAAE,EAAE8R,EAAG,CAAgB,GAAI,EAAE,AAAC9R,CAAAA,AAAE,EAAvBA,CAAAA,EAAE+hI,AAAI,EAAJA,GAAI,CAAiB,GAAI,EAAE,CAAC/hI,EAAE,EAAQA,MAAAA,C,CAAgDg7a,GAAjC53a,CAAC,CAACE,AAAfA,CAAAA,EAAEjE,EAAG8D,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAO,EAAL,CAAQyF,EAAExF,CAAC,CAACE,EAAE,GAAG,EAAP,CAAUtD,EAAEmD,EAAEA,EAAE,EAAE,EAAK63a,AAAQ,EAARA,GAAGpya,EAAE5I,GAAK,CAACA,EAAE,EAAQA,MAAAA,C,CAAEi8C,EAAEA,EAAE,EAAE,CAAxI,OAAiJA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAI54C,CAAAA,AAAE,EAAFA,CAAE,EAAzJ,AAA6JC,EAAE,EAAI,EAAA,CAA4B,GAAA,AAACsF,CAAAA,AAAE,EAA9BA,CAAAA,EAAE+ua,AAAY,EAAZA,EAAG/ua,EAAE5I,EAAE,EAAE8R,EAAG,CAAgB,GAAI,EAAE,AAAC9R,CAAAA,AAAE,EAAvBA,CAAAA,EAAE+hI,AAAI,EAAJA,GAAI,CAAiB,GAAI,EAAE,CAAC/hI,EAAE,EAAQA,MAAAA,C,CAAgDg7a,GAAjC53a,CAAC,CAAC64C,AAAfA,CAAAA,EAAE58C,EAAG8D,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAO,EAAL,CAAQyF,EAAExF,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAUj8C,EAAEmD,EAAEA,EAAE,EAAE,EAAK63a,AAAQ,EAARA,GAAGpya,EAAE5I,GAAK,CAACA,EAAE,EAAQA,MAAAA,C,CAAEsD,EAAEA,EAAE,EAAE,CAAxI,OAAiJA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAID,CAAAA,AAAE,EAAFA,CAAE,EAAzJ,AAA6JC,EAAE,EAAI,EAAA,CAA4B,GAAA,AAACsF,CAAAA,AAAE,EAA9BA,CAAAA,EAAE+ua,AAAY,EAAZA,EAAG/ua,EAAE5I,EAAE,EAAE8R,EAAG,CAAgB,GAAI,EAAE,AAAC9R,CAAAA,AAAE,EAAvBA,CAAAA,EAAE+hI,AAAI,EAAJA,GAAI,CAAiB,GAAI,EAAE,CAAC/hI,EAAE,EAAQA,MAAAA,C,CAAgDg7a,GAAjC53a,CAAC,CAAC64C,AAAfA,CAAAA,EAAE58C,EAAG8D,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAO,EAAL,CAAQyF,EAAExF,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAUj8C,EAAEmD,EAAEA,EAAE,EAAE,EAAK63a,AAAQ,EAARA,GAAGpya,EAAE5I,GAAK,CAACA,EAAE,EAAQA,MAAAA,C,CAAEsD,EAAEA,EAAE,EAAE,CAAxI,OAAiJA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAID,CAAAA,AAAE,EAAFA,CAAE,EAAzJ,AAA6JC,EAAE,EAAI,EAAA,CAA4B,GAAA,AAACsF,CAAAA,AAAE,EAA9BA,CAAAA,EAAE+ua,AAAY,EAAZA,EAAG/ua,EAAE5I,EAAE,EAAE8R,EAAG,CAAgB,GAAI,EAAE,AAAC9R,CAAAA,AAAE,EAAvBA,CAAAA,EAAE+hI,AAAI,EAAJA,GAAI,CAAiB,GAAI,EAAE,CAAC/hI,EAAE,EAAQA,MAAAA,C,CAAgDg7a,GAAjC53a,CAAC,CAAC64C,AAAfA,CAAAA,EAAE58C,EAAG8D,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAO,EAAL,CAAQyF,EAAExF,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAUj8C,EAAEmD,EAAEA,EAAE,EAAE,EAAK63a,AAAQ,EAARA,GAAGpya,EAAE5I,GAAK,CAACA,EAAE,EAAQA,MAAAA,C,CAAEsD,EAAEA,EAAE,EAAE,CAAxI,OAAiJA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAID,CAAAA,AAAE,EAAFA,CAAE,EAAzJ,AAAuK,IAAVC,EAAE,IAAU,CAA4B,GAAA,AAACsF,CAAAA,AAAE,EAA9BA,CAAAA,EAAE+ua,AAAY,EAAZA,EAAG/ua,EAAE5I,EAAE,EAAE8R,EAAG,CAAgB,GAAI,EAAE,AAAC9R,CAAAA,AAAE,EAAvBA,CAAAA,EAAE+hI,AAAI,EAAJA,GAAI,CAAiB,GAAI,EAAE,CAAC/hI,EAAE,EAAQA,MAAAA,C,CAAK,GAACsD,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKmrD,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAuC,GAAzBrrD,CAAC,CAAC64C,AAAfA,CAAAA,EAAE58C,EAAG8D,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAO,EAAL,CAAQyF,EAAExF,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAUj8C,EAAOg7a,AAAQ,EAARA,GAAGpya,EAAE5I,GAAkB,CAACA,EAAE,EAAQA,MAAAA,C,CAAvBmD,EAAEA,EAAE,EAAE,C,CAA+B,GAACG,AAAAA,CAAAA,AAAE,EAAdA,CAAAA,EAAEA,EAAE,EAAE,CAAA,CAAQ,GAAKD,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAACC,EAAEkF,EAAErF,EAAED,E,K,C,CAA//B,MAA8gCI,EAAEkF,EAAEI,EAAEJ,EAAErF,EAAED,EAAElD,EAAEkD,CAAhsC,MAA4sCE,CAAC,CAACE,AAANA,CAAAA,EAAEjE,CAAAA,GAAO,EAAL,CAAQW,EAAEoD,CAAC,CAACE,EAAE,GAAG,EAAP,CAAUJ,EAAEI,EAAEtD,EAAE4I,EAAE5I,EAAEmD,EAAED,EAAElD,EAAEkD,EAAElD,EAAG,AAACsD,CAAAA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKsF,CAAAA,AAAE,EAAFA,CAAE,EAAIzF,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKnD,CAAAA,AAAE,EAAFA,CAAE,CAAA,EAAI,CAA3yC,OAA4zC,EAA5zC,AAA80C8R,OAAfA,EAAE9R,EAAE6jI,EAAEh7H,EAASiJ,AAAE,EAAFA,C,EAGxgJyua,aAAa1D,GAAG2D,OAAO1nW,EAAE2nW,gBAHzlB20V,SAAGp1wB,CAAZ,CAAcoD,CAAd,CAAgBF,CAAhB,CAAkBG,CAAlB,CAAoBhE,CAApB,EAAyDuJ,IAAAA,EAAE,EAAK,GAAE0ua,AAAc,EAAdA,EAA3Ct3a,GAAI,EAAEoD,GAAI,EAAEF,GAAI,EAAEG,GAAI,EAAEhE,GAAI,IAAsFA,GAAtB09a,GAAG15a,AAAE,EAAFA,EAAI,EAAEuF,AAAlCA,CAAAA,EAAE,AAAC46H,CAAAA,AAAe,EAAfA,EAAEtgI,AAAE,EAAFA,EAAI,EAAEA,EAAE,EAAE,EAAG,EAAG,EAAE,CAAA,GAAc,EAAE,GAAQ7D,AAAE,EAAFA,EAAI,CAAC09a,GAAG19a,AAAE,EAAFA,EAAI,EAAEuJ,GAAG,EAAE,GAAKupB,EAAGnyB,EAAEoD,EAAEF,EAAEG,EAAEhE,EAAEuJ,EAAE,G,M,CAAUvJ,CAAAA,EAAEo4a,AAAQ,EAARA,GAAG7ua,EAAE,EAAG,IAAeupB,EAAGnyB,EAAEoD,EAAEF,EAAEG,EAAEhE,EAAEuJ,EAAE,GAAGkza,GAAGz8a,I,EAG6Yqhb,iBAAiBzI,GAAG0I,gBAAgBzH,GAAG0H,QAAQlH,GAAGmH,cAHiskDlI,SAAG34a,CAAZ,CAAcoD,CAAd,EAAiBpD,GAAI,EAAEoD,GAAI,EAAMF,IAAAA,EAAE,EAAEG,EAAE,EAAkC,GAA5BA,EAAEu0a,AAAe,EAAfA,GAAG53a,AAAE,EAAFA,EAAIoD,AAAE,EAAFA,EAAI,IAAM2+H,IAAS,CAAEo2S,CAAAA,AAAU,EAAVA,EAAG90a,AAAE,IAAFA,EAAO,EAAeA,OAAAA,AAAE,EAAbA,CAAAA,EAAE,CAAA,EAAgD,GAAnCA,EAAEu0a,AAAe,EAAfA,GAAG53a,AAAE,EAAFA,EAAIoD,AAAE,EAAFA,EAAI,IAAM2+H,IAAgB,CAAV1+H,CAAAA,GAAI,EAAJA,EAAyBA,OAAAA,AAAE,EAAbA,CAAAA,EAAE,CAAA,EAAuB,IAAVH,EAAE,IAAU,CAA6B,GAAA,CAAG7D,CAAAA,AAAAA,CAAAA,AAA7By4a,CAAAA,AAAqB,EAArBA,GAAG,EAAE,EAAG,AAAA,CAAA,GAAG50a,EAAE,CAAA,EAAG,EAAE,EAAG,EAAUlD,EAAE,CAAA,GAAI,EAAG,AAAC+hI,CAAAA,AAAAA,CAAAA,AAAI,EAAJA,GAAI,EAAG3+H,EAAE,CAAA,GAAI,CAAA,EAAG,CAACF,EAAE,EAAElD,EAAE,E,K,CAAWkD,GAAAA,IAAI,EAAEG,IAAI,EAAEH,EAAEA,EAAE,EAAE,MAAM,CAACA,EAAE,EAAElD,EAAE,E,K,C,OAAY,AAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAASkD,AAAE,EAAFA,EAAW,C,EAGr+kD49a,qBAH81nC/F,SAAG/6a,CAAZ,CAAcoD,CAAd,CAAgBF,CAAhB,QAAwE,CAArDlD,GAAI,EAAEoD,GAAI,EAAEF,GAAI,EAAElD,EAAE43a,AAAe,EAAfA,GAAG53a,AAAE,EAAFA,EAAIoD,AAAE,EAAFA,EAAI,IAAM2+H,IAAmB7+H,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAG,GAAIlD,AAAAA,CAAAA,AAAE,EAAxBA,CAAAA,GAAI,EAAJA,CAAwB,GAAKkD,CAAAA,AAAE,EAAFA,CAAE,GAA2CA,AAAE,EAAzBA,CAAAA,EAAEmtV,AAAY,EAAZA,GAAG,EAAEntV,EAAElD,EAAE,EAAG,EAAlBkD,AAAE,EAAbA,CAAAA,EAAE,CAAA,C,EAGj6nC69a,cAHl7B77V,SAAEllF,CAAX,EAA2B,MAAA,AAACwjI,CAAAA,AAAe,EAAfA,EAAExjI,AAAE,EAAlBA,CAAAA,GAAI,CAAA,EAAgB,EAAEA,EAAE,EAAE,EAAG,EAAG,EAAE,C,EAG25Bghb,iBAH83Iu+c,SAAGv/3B,CAAZ,CAAckD,CAAd,EAAiBlD,GAAI,EAAEkD,GAAI,EAAMG,IAAAA,EAAE,EAAEhE,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAE24C,EAAE,EAA8H,GAA5H94C,EAAE0gI,EAAEA,EAAEA,EAAE,GAAG,EAAEj7H,EAAEzF,EAAE,EAAE,EAAE9D,EAAE8D,EAAMG,EAAEF,AAAU,EAAVA,CAAC,CAAC64C,AAARA,CAAAA,EAAEj8C,CAAAA,EAAQ,GAAG,EAAP,CAAgBoD,CAAC,CAACC,AAANA,CAAAA,EAAEhE,CAAAA,GAAO,EAAL,CAAQ+D,CAAC,CAAC64C,GAAG,EAAb,CAAgB74C,CAAC,CAACC,EAAE,GAAG,EAAP,CAAUC,EAAE64a,GAAG98a,EAAEuJ,GAAGA,EAAEspB,AAAQ,EAARA,EAAGtpB,EAAE1F,GAAKA,EAAEE,AAAQ,EAARA,CAAC,CAAC/D,GAAG,EAAL,CAA4BA,AAAAA,CAAAA,AAAE,EAApBA,CAAAA,EAAE+D,AAAU,EAAVA,CAAC,CAACpD,EAAE,GAAG,EAAP,AAAU,CAAQ,GAAI,EAAiDi8C,OAApBA,EAAEA,AAAVA,CAAAA,EAAE34C,AAAhBA,CAAAA,EAAGsF,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAIqzC,CAAAA,AAAE,EAAfA,CAAAA,EAAE/4C,CAAAA,CAAa,CAAA,EAAO+4C,EAAErzC,CAAAA,EAAM,GAAG,EAAEi7H,EAAE1gI,EAAS84C,AAAE,EAAFA,EAAI54C,EAAED,AAAW,EAAXA,CAAC,CAACpD,EAAE,IAAI,EAAR,CAAaA,EAAE,EAAI,GAACkD,EAAGE,AAAAA,CAAAA,AAAe,EAAfA,CAAC,CAACC,EAAGrD,CAAAA,GAAG,CAAA,GAAI,EAAZ,AAAe,EAAGkD,EAAE,EAAElD,EAAEA,EAAE,EAAE,QAASA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAIX,CAAAA,AAAE,EAAFA,CAAE,EAAnD,AAAiG48C,OAApBA,EAAEA,AAAVA,CAAAA,EAAEA,AAAhBA,CAAAA,EAAGrzC,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAI1F,CAAAA,AAAE,EAAFA,CAAE,CAAA,EAAOA,EAAE0F,CAAAA,EAAM,GAAG,EAAEi7H,EAAE1gI,EAAS84C,AAAE,EAAFA,C,EAGtsJglY,kBAHiq2Cw/c,SAAGzg4B,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,EAAmBrD,GAAI,EAAQqD,GAAI,EAAMhE,IAAAA,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAK,GAACJ,AAAAA,CAAAA,AAAE,EAAtCA,CAAAA,GAAI,CAAA,CAAkC,GAAI,EAAcG,OAAAA,AAAE,EAAbA,CAAAA,EAAE,CAAA,EAAgB,GAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,GAAG,CAAW,IAAVhE,EAAE,IAAU,CAAiB,GAAA,CAAE,CAAA,AAAC+D,CAAAA,AAAQ,EAARA,CAAC,CAACE,AAArBA,CAAAA,EAAEtD,EAAGX,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAa,EAAL,AAAQ,GAAI,EAAE,AAAC+D,CAAAA,AAAU,EAAVA,CAAC,CAACE,EAAE,GAAG,EAAP,AAAU,GAAI,CAAA,EAAG,CAACjE,EAAE,GAAGuJ,EAAE,G,K,CAAoB,GAACvJ,AAAAA,CAAAA,AAAE,EAAdA,CAAAA,EAAEA,EAAE,EAAE,CAAA,CAAQ,GAAK6D,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAC7D,EAAE,EAAEuJ,EAAE,G,K,C,CAAa,GAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,GAAG,OAAOvJ,AAAE,EAAFA,C,CAAIA,EAAE,EAAEiE,EAAE,EAAEtD,EAAE,OAAQ,CAAcmD,EAAEC,AAAQ,EAARA,CAAC,CAACwF,AAAjBA,CAAAA,EAAE5I,EAAGsD,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAS,EAAL,CAAUsF,EAAExF,AAAU,EAAVA,CAAC,CAACwF,EAAE,GAAG,EAAP,CAAe,GAAA,GAAG,CAAE,CAAA,AAACzF,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAGyF,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,CAAA,EAAG,CAAoC,GAAnCA,EAAEgva,AAAe,EAAfA,GAAGz0a,AAAE,EAAFA,EAAIyF,AAAE,EAAFA,EAAI,IAAMm5H,IAAiBn5H,AAAAA,CAAAA,AAAE,EAAbA,CAAAA,GAAI,EAAJA,CAAa,EAAIvF,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAChE,EAAE,GAAGuJ,EAAE,GAAS5I,MAAAA,C,CAAK,GAAC4I,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKvF,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAChE,EAAEA,EAAE,EAAE,E,KAAvB,CAAoCA,EAAE,AAACgxV,CAAAA,AAAY,EAAZA,GAAG,EAAEhtV,EAAEuF,EAAE,EAAG,EAAGvJ,EAAE,E,KAAtJ,OAAqK,EAArK,AAAmL,GAACiE,AAAAA,CAAAA,AAAE,EAAdA,CAAAA,EAAEA,EAAE,EAAE,CAAA,CAAQ,GAAKJ,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAC0F,EAAE,G,K,C,OAAa,AAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,GAAUvJ,AAAE,EAAFA,EAAW,C,EAG9p3C6hb,QAAQpE,GAAGqE,QAAQpE,GAAGqE,aAHm7/Bg/c,SAAGpg4B,CAAZ,EAAeA,GAAI,EAAMkD,IAAAA,EAAE,EAAqDlD,OAAlCA,EAAEoD,AAAQ,EAARA,CAAC,CAACF,AAArBA,CAAAA,EAAE,MAAOlD,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAS,EAAL,CAAU0xB,EAAEtuB,AAAU,EAAVA,CAAC,CAACF,EAAE,GAAG,EAAP,EAAoBlD,AAAE,EAAFA,C,EAG1+/Bqhb,oBAHo7mDxC,WAAY,OAAA,E,EAGz6mDyC,aAAa1I,GAAG2I,YAHg+7B0+c,SAAGjg4B,CAAZ,CAAcoD,CAAd,EAAiBpD,GAAI,EAAEoD,GAAI,EAAMF,IAAAA,EAAE,EAAIG,EAAE,EAAIuF,EAAE,EAAIzF,EAAE,EAAiH,OAA7GyF,EAAE,CAACvJ,CAAC,CAAC+D,GAAG,EAAR,CAAWC,EAAE,CAAChE,CAAC,CAACW,GAAG,EAAR,CAAWmD,EAAE,CAACq1B,EAAE,CAAG5vB,CAAAA,AAAAA,CAAAA,EAAEvF,CAAAA,EAAG,EAAA,GAAKH,EAAE,CAACs1B,EAAE,CAAG,CAAA,AAAA,CAAA,CAACn5B,CAAC,CAAC+D,EAAE,GAAG,EAAR,CAAW,CAAC/D,CAAC,CAACW,EAAE,GAAG,EAAN,AAAM,EAAI,EAAA,GAAsC,CAAE,CAAA,AAAA,kBAAA,CAAC+4E,EAAE,EAAA,CAAGvnD,EAAE,CAA3CtuB,CAAAA,EAAEC,EAAEA,EAAED,EAAG,CAAA,CAAC84D,EAAE,CAACpzD,GAAG,CAACozD,EAAE,CAAC34D,GAAGH,CAAAA,CAAAA,GAAyB,EAAA,CAAGsuB,EAAE,CAAE,CAAA,EAAItuB,CAAAA,GAAxB,C,EAGhn8Bs+a,eAHyi7Bw+c,SAAGhg4B,CAAZ,CAAcoD,CAAd,EAAiBpD,GAAI,EAAEoD,GAAI,EAAMF,IAAAA,EAAE,EAAIG,EAAE,EAAIuF,EAAE,EAAIzF,EAAE,EAAiH,OAA7GyF,EAAE,CAACvJ,CAAC,CAAC+D,GAAG,EAAR,CAAWC,EAAE,CAAChE,CAAC,CAACW,GAAG,EAAR,CAAWmD,EAAE,CAACq1B,EAAE,CAAG5vB,CAAAA,AAAAA,CAAAA,EAAEvF,CAAAA,EAAG,EAAA,GAAKH,EAAE,CAACs1B,EAAE,CAAG,CAAA,AAAA,CAAA,CAACn5B,CAAC,CAAC+D,EAAE,GAAG,EAAR,CAAW,CAAC/D,CAAC,CAACW,EAAE,GAAG,EAAN,AAAM,EAAI,EAAA,GAAsC,CAAE,CAAA,AAA8B,EAA9B,CAAC+4E,EAAE,EAAA,CAAGvnD,EAAE,CAA3CtuB,CAAAA,EAAEC,EAAEA,EAAED,EAAG,CAAA,CAAC84D,EAAE,CAACpzD,GAAG,CAACozD,EAAE,CAAC34D,GAAGH,CAAAA,CAAAA,GAAyB,EAAA,CAAGsuB,EAAE,CAAE,CAAA,EAAItuB,CAAAA,GAAM,C,EAGpt7Bu+a,UAHglJ+9c,SAAGx/3B,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,EAAmBrD,GAAI,EAAEkD,GAAI,EAAEG,GAAI,EAAMhE,IAAAA,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAE24C,EAAE,EAAEwS,EAAE,EAA8B,GAA5BxS,EAAE4nF,EAAEA,EAAEA,EAAE,GAAG,EAAExkI,EAAE48C,EAAE,EAAE,EAAErzC,EAAEqzC,EAAK,CAAEylY,CAAAA,AAAU,EAAVA,AAA4TA,SAAG1hb,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,EAAmBrD,GAAI,EAAEkD,GAAI,EAAEG,GAAI,EAAMhE,IAAAA,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAE24C,EAAE,EAAEwS,EAAE,EAAEjmD,EAAE,EAAEsJ,EAAE,EAAEjJ,EAAE,EAAEvJ,EAAE,EAAEu5E,EAAE,EAAE/c,EAAE,EAAErjC,EAAE,EAAEjH,EAAE,EAAEhyB,EAAE,EAAEw8D,EAAE,EAAExjC,EAAE,EAAEj5B,EAAE,EAAE+xB,EAAE,EAAEG,EAAE,EAAEiH,EAAE,EAAEqgD,EAAE,EAAEo+M,EAAE,EAAE3zJ,EAAE,EAAE/vF,EAAE,EAAEsvF,EAAE,EAAEE,EAAE,EAAEvxG,EAAE,EAAEkxG,EAAE,EAAErxG,EAAE,EAAyN,GAAvNA,EAAEsyG,EAAEA,EAAEA,EAAE,IAAI,EAAEd,EAAExxG,EAAE,GAAG,EAAEk9B,EAAEl9B,EAAE,GAAG,EAAE0xG,EAAE1xG,EAAEG,EAAEH,EAAE,GAAG,EAAUqxG,CAAAA,EAAE82S,AAAsB,EAAtBA,GAAIt2a,AAAAA,CAAAA,CAAC,CAACoF,AAAhBA,CAAAA,EAAExI,EAAE,EAAE,CAAA,GAAa,EAAL,EAAS,CAAA,EAAG,GAAG,EAAG,GAAQyjI,EAAE,MAAM,MAAM,IAAI,OAAO24S,AAAs/9DA,SAAGp8a,CAAZ,CAAckD,CAAd,EAAiBlD,GAAI,EAAEkD,GAAI,EAAMG,IAAAA,EAAE,EAAEuF,EAAE,EAAEzF,EAAE,EAAEG,EAAE,EAAI24C,EAAE,EAAIwS,EAAE,EAAIjmD,EAAE,EAAIsJ,EAAE,EAAIjJ,EAAE,EAAIvJ,EAAE,EAAIu5E,EAAE,EAAI/c,EAAE,EAAItqC,EAAE,EAAEhyB,EAAE,EAAEw8D,EAAE,EAAExjC,EAAE,EAAEj5B,EAAE,EAAE+xB,EAAE,EAAEG,EAAE,EAAEiH,EAAE,EAAEqgD,EAAE,EAAEo+M,EAAE,EAAiB3lQ,GAAfA,EAAEpuB,AAAQ,EAARA,CAAC,CAACpD,GAAG,EAAL,CAA+M,CAAA,GAAvLX,CAAC,CAACG,AAAVA,CAAAA,EAAE0D,EAAE,EAAE,CAAA,GAAO,EAAL,CAAQ,sBAAyC7D,CAAC,CAAC28D,AAAXA,CAAAA,EAAE94D,EAAE,GAAG,CAAA,GAAO,EAAL,CAAQ,sBAAgC7D,CAAC,CAAC6D,GAAG,EAAL,CAAQ,uBAA0C7D,CAAC,CAACm5B,AAAXA,CAAAA,EAAEt1B,EAAE,GAAG,CAAA,GAAO,EAAL,CAAQ,uBAAqCsuB,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAE,CAAiP,IAAhPruB,EAAEC,AAAU,EAAVA,CAAC,CAACpD,EAAE,GAAG,EAAP,CAAY64E,EAAE,sBAAgC/c,EAAE,uBAAiClzD,EAAE,EAAEvF,EAAE,GAAGmF,EAAE,sBAAgCsJ,EAAE,sBAAgCxS,EAAE,uBAAiC28C,EAAE,uBAAiC18C,EAAE,EAAW+D,EAAE,CAACjE,CAAC,CAAC8D,EAAG5D,CAAAA,GAAG,CAAA,GAAI,EAAf,CAAkBsJ,EAAE,CAACxJ,CAAC,CAAC8D,EAAG5D,CAAAA,GAAG,CAAA,EAAG,GAAG,EAAjB,CAA4BkvD,EAAE,CAACpvD,CAAC,CAAC8D,EAAG,CAAA,AAAE41E,CAAAA,AAAAA,CAAAA,AAAE,EAApBA,CAAAA,EAAE11E,EAAE,EAAE,CAAA,CAAc,GAAKmuB,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAEunD,CAAAA,GAAI,CAAA,EAAG,GAAG,EAAlC,CAAwCz1E,EAAEkF,IAAGnJ,CAAC,CAACG,GAAG,EAAL,CAAQ8D,EAAEkF,EAAElF,GAAKuF,EAAEiJ,IAAGzS,CAAC,CAAC28D,GAAG,EAAL,CAAQnzD,EAAEiJ,EAAEjJ,GAAKvF,EAAEhE,EAAED,CAAC,CAAC6D,GAAG,EAAL,CAAQI,EAAOA,EAAEhE,EAAKuJ,EAAEozC,IAAG58C,CAAC,CAACm5B,GAAG,EAAL,CAAQ3vB,EAAEozC,EAAEpzC,GAAEgwE,EAAEhwE,EAAE,EAAIA,EAAEgwE,EAAEhwE,EAAEgwE,EAAE/c,EAAEjzD,EAAE,EAAIA,EAAEizD,EAAEjzD,EAAEizD,EAAElzD,GAAI,CAAC6vB,EAAE,CAAE5vB,CAAAA,EAAE4lD,CAAAA,GAAI,kBAA8BprD,AAAAA,CAAAA,AAAE,EAAdA,CAAAA,EAAE9D,EAAE,EAAE,CAAA,CAAQ,GAAKiyB,CAAAA,AAAE,EAAFA,CAAE,GAAcunD,EAAEx5E,EAAED,EAAEgE,EAAE/D,EAAE8D,EAAEA,EAAE01E,EAAMnwE,IAAGvJ,CAAC,CAACm5B,GAAG,EAAL,CAAQsjC,EAAEz8D,CAAC,CAAC28D,GAAG,EAAL,CAAQ6c,E,C,MAASz1E,CAAC,CAACF,GAAG,EAAL,CAAQ,EAAEE,CAAC,CAACF,EAAE,GAAG,EAAP,CAAU,EAAEE,CAAC,CAACF,EAAE,GAAG,EAAP,CAAU,EAAEE,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW,EAAEE,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW,EAAEE,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW,EAAEE,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW,EAAEE,CAAC,CAACF,EAAE,IAAI,EAAR,CAAW,EAAyB,IAACG,CAAAA,AAAAA,CAAAA,AAAE,EAAlBA,CAAAA,EAAED,AAAQ,EAARA,CAAC,CAAC21E,AAAZA,CAAAA,EAAE/4E,EAAE,EAAE,CAAA,GAAS,EAAL,AAAQ,CAAQ,GAAI,CAAA,GAAS04B,EAAE14B,EAAE,GAAG,EAAEyxB,EAAE,EAAI,GAA4D+G,GAA3Dr1B,EAAEC,AAAQ,EAARA,CAAC,CAACs1B,GAAG,EAAL,CAAU9vB,EAAE6oB,EAAUuqC,EAAE94D,EAAGuuB,CAAAA,AAAbA,CAAAA,EAAEA,EAAE,EAAE,CAAA,GAAU,CAAA,EAAG,EAAE+G,EAAEp1B,AAAe,EAAfA,CAAC,CAACD,EAAGyF,CAAAA,GAAG,CAAA,GAAI,EAAZ,CAA2O,CAAA,GAArMvJ,CAAC,CAACE,AAAjBA,CAAAA,EAAE2D,EAAGuuB,CAAAA,GAAG,CAAA,EAAG,EAAE,CAAA,GAAO,EAAL,CAAQ,sBAAgDpyB,CAAC,CAACW,AAAlBA,CAAAA,EAAEkD,EAAGuuB,CAAAA,GAAG,CAAA,EAAG,GAAG,CAAA,GAAO,EAAL,CAAQ,sBAAgCpyB,CAAC,CAAC28D,GAAG,EAAL,CAAQ,uBAAiD38D,CAAC,CAACiyB,AAAlBA,CAAAA,EAAEpuB,EAAGuuB,CAAAA,GAAG,CAAA,EAAG,GAAG,CAAA,GAAO,EAAL,CAAQ,uBAAqC+G,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAE,CAAwP,IAAvPhH,EAAEpuB,AAAiB,EAAjBA,CAAC,CAACD,EAAGyF,CAAAA,GAAG,CAAA,EAAG,GAAG,EAAd,CAAmBiwE,EAAE,sBAAgC/c,EAAE,uBAAiC34D,EAAE,EAAEyF,EAAE,GAAGpJ,EAAE,EAAEgJ,EAAE,sBAAgCsJ,EAAE,sBAAgCjJ,EAAE,uBAAiCozC,EAAE,uBAA0C34C,EAAE,CAACjE,CAAC,CAACmyB,EAAGhyB,CAAAA,GAAG,CAAA,GAAI,EAAf,CAAkBF,EAAE,CAACD,CAAC,CAACmyB,EAAGhyB,CAAAA,GAAG,CAAA,EAAG,GAAG,EAAjB,CAA4BivD,EAAE,CAACpvD,CAAC,CAACmyB,EAAG,CAAA,AAAE5oB,CAAAA,AAAAA,CAAAA,AAAE,EAApBA,CAAAA,EAAEA,EAAE,EAAE,CAAA,CAAc,GAAK4vB,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAE5vB,CAAAA,GAAI,CAAA,EAAG,GAAG,EAAlC,CAAwCtF,EAAEkF,IAAGnJ,CAAC,CAACE,GAAG,EAAL,CAAQ+D,EAAEkF,EAAElF,GAAKhE,EAAEwS,IAAGzS,CAAC,CAACW,GAAG,EAAL,CAAQV,EAAEwS,EAAExS,GAAKgE,EAAEuF,EAAExJ,CAAC,CAAC28D,GAAG,EAAL,CAAQ14D,EAAOA,EAAEuF,EAAKvJ,EAAE28C,IAAG58C,CAAC,CAACiyB,GAAG,EAAL,CAAQhyB,EAAE28C,EAAE38C,GAAEu5E,EAAEv5E,EAAE,EAAIA,EAAEu5E,EAAEv5E,EAAEu5E,EAAE/c,EAAEx8D,EAAE,EAAIA,EAAEw8D,EAAEx8D,EAAEw8D,EAAE34D,GAAI,CAACs1B,EAAE,CAAEn5B,CAAAA,EAAEmvD,CAAAA,GAAI,kBAA8B7lD,AAAAA,CAAAA,AAAE,EAAdA,CAAAA,EAAEpJ,EAAE,EAAE,CAAA,CAAQ,GAAKg5B,CAAAA,AAAE,EAAFA,CAAE,GAAc2+P,EAAE33R,EAAEA,EAAEoJ,EAAEC,EAAEvF,EAAEsF,EAAEuuR,EAAMh0R,IAAG9D,CAAC,CAACiyB,GAAG,EAAL,CAAQwqC,EAAEz8D,CAAC,CAACW,GAAG,EAAL,CAAQ64E,E,C,MAASz1E,CAAC,CAAC44D,GAAG,EAAL,CAAQ,EAAE54D,CAAC,CAAC44D,EAAE,GAAG,EAAP,CAAU,EAAE54D,CAAC,CAAC44D,EAAE,GAAG,EAAP,CAAU,EAAE54D,CAAC,CAAC44D,EAAE,IAAI,EAAR,CAAW,EAAE54D,CAAC,CAAC44D,EAAE,IAAI,EAAR,CAAW,EAAE54D,CAAC,CAAC44D,EAAE,IAAI,EAAR,CAAW,EAAE54D,CAAC,CAAC44D,EAAE,IAAI,EAAR,CAAW,EAAE54D,CAAC,CAAC44D,EAAE,IAAI,EAAR,CAAW,EAAE34D,EAAED,AAAQ,EAARA,CAAC,CAAC21E,GAAG,EAAL,OAAkBtnD,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAIpuB,CAAAA,AAAE,EAAFA,CAAE,EAA59B,C,EAA9hgErD,EAAE4iI,GAAOvjI,EAAE+D,AAAU,EAAVA,CAAC,CAACD,AAARA,CAAAA,EAAEnD,CAAAA,EAAQ,GAAG,EAAP,CAAgBoD,CAAC,CAAC64C,AAANA,CAAAA,EAAEwS,CAAAA,GAAO,EAAL,CAAQrrD,CAAC,CAACD,GAAG,EAAb,CAAgBC,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAU58C,EAAE88a,GAAG1tX,EAAEs0E,GAAG9mF,EAAE/pB,AAAQ,EAARA,EAAG6wG,EAAE7/H,GAAK7D,EAAE+D,AAAQ,EAARA,CAAC,CAACqrD,GAAG,EAAL,CAA0BtrD,AAAAA,CAAAA,AAAE,EAAlBA,CAAAA,EAAEC,AAAQ,EAARA,CAAC,CAACoF,GAAG,EAAL,AAAQ,CAAQ,EAAG,EAAE,CAAClF,EAAEF,AAAW,EAAXA,CAAC,CAACpD,EAAE,IAAI,EAAR,CAAa4I,EAAE,EAAI,GAACvJ,EAAG+D,AAAAA,CAAAA,AAAe,EAAfA,CAAC,CAACE,EAAGsF,CAAAA,GAAG,CAAA,GAAI,EAAZ,AAAe,EAAGvJ,EAAE,EAAEuJ,EAAEA,EAAE,EAAE,QAASA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAKzF,CAAAA,AAAE,EAAFA,CAAE,EAApD,A,CAA8L9D,GAA3GuJ,EAAE6ua,AAAQ,EAARA,GAAXhkY,EAAEwI,AAApBA,CAAAA,EAAE,AAACA,CAAAA,AAAE,EAAFA,CAAE,EAAI58C,CAAAA,AAAE,EAAFA,CAAE,EAAGA,EAAE48C,CAAAA,EAAM,GAAG,EAAS,GAAKnqC,EAAE2la,AAAQ,EAARA,GAAGhkY,EAAE,GAAKrwC,CAAC,CAAC2/H,GAAG,EAAL,CAAQ,EAAMS,EAAEpgI,AAAU,EAAVA,CAAC,CAAC+zR,AAARA,CAAAA,EAAEn3R,CAAAA,EAAQ,GAAG,EAAP,CAAgBoD,CAAC,CAAC/D,AAANA,CAAAA,EAAEovD,CAAAA,GAAO,EAAL,CAAQrrD,CAAC,CAAC+zR,GAAG,EAAb,CAAgB/zR,CAAC,CAAC/D,EAAE,GAAG,EAAP,CAAUmkI,EAAyBnkI,AAAE,EAAzBA,CAAAA,EAAEm5a,AAAgB,EAAhBA,EAAG/pX,EAAEhb,EAAEvwC,EAAE6/H,EAAEn6H,EAAEkJ,EAAG,EAA2C8wH,OAAjCk5S,GAAGlza,GAAGkza,GAAGhqa,GAAGgqa,GAAGl5S,GAAGA,EAAEvjI,EAAEwkI,EAAEtyG,EAASqxG,AAAE,EAAFA,EAAI5iI,EAAE,GAAG,GAAG,AAACoD,CAAAA,AAAQ,EAARA,CAAC,CAACoF,GAAG,EAAL,AAAQ,EAAG,EAAE,CAAoB,IAAnBrF,EAAEnD,EAAE,GAAG,EAAEX,EAAE,EAAWiE,EAAEk1a,AAAmC,EAAnCA,EAAG,AAACp1a,CAAAA,AAAQ,EAARA,CAAC,CAACD,GAAG,EAAL,AAAQ,EAAI9D,CAAAA,GAAG,CAAA,EAAG,EAAEo0C,EAAEvwC,EAAE6/H,EAAEn6H,EAAEkJ,GAAKzS,EAAEA,EAAE,EAAE,GAAKiE,CAAAA,AAAE,EAAFA,CAAE,GAAW,GAACjE,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAK+D,CAAAA,AAAQ,EAARA,CAAC,CAACoF,GAAG,EAAL,AAAQ,EAAG,MAAMxI,EAAmC4iI,OAAjCk5S,GAAGlza,GAAGkza,GAAGhqa,GAAGgqa,GAAGl5S,GAAGA,EAAEt/H,EAAEugI,EAAEtyG,EAASqxG,AAAE,EAAFA,CAAtK,OAAgL,EAAhL,AAAuL3mF,CAAAA,AAAE,EAAFA,CAAE,EAAG,KAAI8gY,GAAGjra,AAAE,EAAFA,EAAI,EAAG,AAAC2hC,CAAAA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAEA,EAAE,CAAA,GAAI,EAAE,GAAKrwC,EAAE,GAAG,GAAG,AAACA,CAAAA,AAAQ,EAARA,CAAC,CAAC2/H,GAAG,EAAL,AAAQ,EAAG,EAAE,CAACS,EAAE,AAAC,CAAA,AAAC/vF,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAA,GAAI,IAAI,GAAGl0C,EAAEqJ,EAAE0oB,EAAExf,EAAE2f,EAAE7oB,EAAE8vB,EAAE9vB,EAAEmwE,EAAEjnE,EAAEqlR,EAAEvuR,EAAEvJ,EAAEuJ,EAAE4oB,EAAE5oB,EAAEpJ,EAAEsS,EAAEkqD,EAAElqD,EAAE0mB,EAAE1mB,EAAElJ,EAAEkJ,EAAE5O,EAAE,OAAQ,CAA+B,IAA9Bu1B,EAAEr1B,AAAQ,EAARA,CAAC,CAAC2/H,GAAG,EAAL,CAAUlqD,EAAE,EAAE/c,EAAE,EAAE34D,EAAE,IAAU,CAAK84C,EAAE34C,AAANA,CAAAA,EAAE2/H,CAAAA,EAAM,GAAG,EAAI,GAAC7/H,CAAC,CAACE,GAAG,EAAL,CAAQ,EAAEA,EAAEA,EAAE,EAAE,QAASA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAI24C,CAAAA,AAAE,EAAFA,CAAE,EAApC,AAAkFq7X,GAA7B7oX,EAAErrD,AAAQ,EAARA,CAAC,CAACF,AAAjBA,CAAAA,EAAE3D,EAAGs5E,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAS,EAAL,CAAU31E,EAAEE,AAAU,EAAVA,CAAC,CAACF,EAAE,GAAG,EAAP,CAAeo0a,AAAc,EAAdA,EAAG7oX,EAAEvrD,EAAE,EAAE+/H,EAAE,GAAK,CAAKhnF,EAAE34C,AAANA,CAAAA,EAAE2/H,CAAAA,EAAM,GAAG,EAAI,GAAC7/H,CAAC,CAACE,GAAG,EAAL,CAAQ,EAAEA,EAAEA,EAAE,EAAE,QAASA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAI24C,CAAAA,AAAE,EAAFA,CAAE,EAApC,AAAyD,EAAjB34C,CAAAA,EAAEm0a,AAAQ,EAARA,GAAG,EAAE,EAAG,IAAUtlZ,EAAGs8B,EAAEvrD,EAAE,EAAE+/H,EAAE3/H,EAAE,EAAE,GAAGw4a,GAAGx4a,G,CAAIhE,EAAE,EAAI,EAAA,CAAcwS,EAAE1O,AAAQ,EAARA,CAAC,CAACyF,AAAjBA,CAAAA,EAAEo6H,EAAG3jI,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAS,EAAL,CAAUuJ,EAAEzF,AAAU,EAAVA,CAAC,CAACyF,EAAE,GAAG,EAAP,CAAYxF,EAAE,GAAG,GAAG,CAAGyO,CAAAA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAGjJ,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,CAAA,EAAG,CAA6E,GAA5E4lD,EAAEmuX,AAAoB,EAApBA,GAAG9qa,AAAE,EAAFA,EAAIjJ,AAAE,EAAFA,EAAI4qC,AAAE,EAAFA,EAAI+vF,AAAE,EAAFA,GAAOzB,IAAuB7+H,EAAEE,AAAQ,EAARA,CAAC,CAAC64C,AAARA,CAAAA,EAAb34C,EAAED,EAAGorD,CAAAA,GAAG,CAAA,EAAG,CAAInrD,GAAS,EAAL,CAAU24C,EAAE74C,AAAU,EAAVA,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAe,CAAG/4C,CAAAA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAG+4C,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,CAAA,EAAc,IAAVzzC,EAAE,IAAU,CAAI,GAAA,AAACA,CAAAA,AAAE,EAAFA,CAAE,EAAIirC,CAAAA,AAAE,EAAFA,CAAE,EAAG,MAAMvwC,EAAK,GAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAK4O,CAAAA,AAAE,EAAFA,CAAE,EAAG,AAACmqC,CAAAA,AAAE,EAAFA,CAAE,GAAKpzC,CAAAA,AAAE,EAAFA,CAAE,EAAG,MAAMxF,EAAkE,GAA7BH,EAAEE,AAAQ,EAARA,CAAC,CAAC64C,AAARA,CAAAA,EAAb34C,EAAED,EAAGorD,CAAAA,AAAvBA,CAAAA,EAAE,AAACA,CAAAA,EAAE,EAAE,CAAA,EAAIhb,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAA,GAAU,CAAA,EAAG,CAAInwC,GAAS,EAAL,CAAU24C,EAAE74C,AAAU,EAAVA,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAe,AAAC/4C,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAE,AAAC+4C,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAE,MAAWzzC,EAAEA,EAAE,EAAE,C,CAAM,CAAGsJ,CAAAA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAGjJ,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,CAAA,IAAI0ya,GAAGzpa,EAAEjJ,EAAE6oB,GAAgB,EAAViwZ,AAAuu/DA,SAAG3hb,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,EAAyChE,IAAAA,EAAE,EAAEuJ,EAAE,EAAEzF,EAAE,EAAK,GAAA,CAAE65Z,CAAAA,AAAU,EAAVA,GAAvCh9Z,GAAI,EAAEkD,GAAI,EAAEG,GAAI,EAAiC,EAAeuF,OAAAA,AAAE,EAAbA,CAAAA,EAAE,CAAA,EAAwB,GAAA,AAACxF,CAAAA,AAAQ,EAARA,CAAC,CAACwF,AAAdA,CAAAA,EAAE5I,EAAE,EAAE,CAAA,GAAW,EAAL,AAAQ,GAAI,EAAc4I,OAAAA,AAAE,EAAbA,CAAAA,EAAE,CAAA,EAAgC,IAAnBvJ,EAAEW,EAAE,GAAG,EAAEA,EAAE,IAAU,CAAgBg9Z,GAAf75Z,EAAEnD,EAAEA,EAAEA,EAAE,EAAE,EAAKg9Z,AAAsC,EAAtCA,GAAI55Z,AAAAA,CAAAA,AAAQ,EAARA,CAAC,CAAC/D,GAAG,EAAL,AAAQ,EAAI8D,CAAAA,GAAG,CAAA,EAAG,EAAED,EAAGlD,CAAAA,GAAG,CAAA,EAAG,EAAEqD,GAAK,CAACrD,EAAE,EAAEX,EAAE,E,K,CAAW,GAAA,AAACW,CAAAA,AAAE,EAAFA,CAAE,GAAKoD,CAAAA,AAAQ,EAARA,CAAC,CAACwF,GAAG,EAAL,AAAQ,EAAG,CAAC5I,EAAE,EAAEX,EAAE,E,K,C,OAAY,AAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAASW,AAAE,EAAFA,EAAW,C,EAA5//DA,EAAE4iI,EAAElxG,KAAUtuB,CAAC,CAACoF,AAANA,CAAAA,EAAElF,CAAAA,GAAO,EAAL,CAAQwO,EAAE1O,CAAC,CAACoF,EAAE,GAAG,EAAP,CAAUK,EAAezF,CAAC,CAACoF,AAAfA,CAAAA,EAAE8oB,EAAGnuB,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAO,EAAL,CAAQ2O,EAAE1O,CAAC,CAACoF,EAAE,GAAG,EAAP,CAAUK,EAAE1F,EAAEA,EAAE,EAAE,GAAna,OAA6a,EAA7a,AAAgb7D,EAAEA,EAAE,EAAE,CAAle,OAA0eA,IAAI,EAAE,EAAhf,AAA8f,GAACw8D,AAAAA,CAAAA,AAAE,EAAdA,CAAAA,EAAEA,EAAE,EAAE,CAAA,CAAQ,GAAKrjC,CAAAA,AAAE,EAAFA,CAAE,EAAG,MAAWogD,EAAEA,EAAE,EAAE,C,CAA6C,GAAvCpgD,CAAAA,AAAE,EAAFA,CAAE,EAAG,GAAEskZ,GAAGtrZ,AAAE,EAAFA,EAAI,EAAEgH,GAAG,EAAE,GAAKr1B,CAAC,CAAC2/H,GAAG,EAAL,CAAQ5/H,EAAMA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAG2O,EAAElJ,EAAEC,EAAE2vB,EAAEl5B,EAAE63R,EAAEt+M,EAAE7c,EAAEF,EAAEt8D,EAAEi5B,EAAEnH,EAAE1oB,EAAE4oB,EAAEgH,EAAEn5B,EAAE28D,EAAEtjC,EAAEl5B,EAAEiyB,EAAED,EAAE1f,EAAEzS,EAAEwJ,EAAEsuR,EAAEp+M,EAAEA,EAAEz5E,EAAEo5B,EAAEmgD,EAAEpnD,EAAEqqC,EAAExqC,EAAE/xB,EAAEA,EAAEk5B,OAAO,MAAMr1B,C,CAAoCw/H,OAAlCk5S,GAAGpjZ,GAAGojZ,GAAG/iW,GAAG+iW,GAAGl5S,GAAGA,EAAE,GAAGiB,EAAEtyG,EAASqxG,AAAE,EAAFA,CAAjiC,MAA0iCvjI,EAAEyS,QAAQ,EAApjC,AAAwlC8wH,OAAjCk5S,GAAGl5S,GAAGk5S,GAAGlza,GAAGkza,GAAGz8a,GAAGujI,EAAE,EAAEiB,EAAEtyG,EAASqxG,AAAE,EAAFA,C,EAA1uE5iI,EAAEkD,EAAEG,EAAG,EAAG,CAACwgI,EAAE5nF,E,M,CAA4G,GAA/F94C,EAAEC,AAAU,EAAVA,CAAC,CAACqrD,AAARA,CAAAA,EAAEzuD,CAAAA,EAAQ,GAAG,EAAP,CAAgBoD,CAAC,CAACE,AAANA,CAAAA,EAAEsF,CAAAA,GAAO,EAAL,CAAQxF,CAAC,CAACqrD,GAAG,EAAb,CAAgBrrD,CAAC,CAACE,EAAE,GAAG,EAAP,CAAUH,EAAEg5a,GAAGvza,EAAEvJ,GAAGiE,EAAE4uB,AAAQ,EAARA,EAAG7yB,EAAE6D,GAAKA,EAAEE,AAAQ,EAARA,CAAC,CAACwF,GAAG,EAAL,CAA4BzF,AAAAA,CAAAA,AAAE,EAApBA,CAAAA,EAAEC,AAAU,EAAVA,CAAC,CAACpD,EAAE,GAAG,EAAP,AAAU,CAAQ,EAAG,EAAE,CAAC4I,EAAExF,AAAW,EAAXA,CAAC,CAACpD,EAAE,IAAI,EAAR,CAAaX,EAAE,EAAI,GAAC6D,EAAGE,AAAAA,CAAAA,AAAe,EAAfA,CAAC,CAACwF,EAAGvJ,CAAAA,GAAG,CAAA,GAAI,EAAZ,AAAe,EAAG6D,EAAE,EAAE7D,EAAEA,EAAE,EAAE,QAASA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAK8D,CAAAA,AAAE,EAAFA,CAAE,EAApD,A,CAA6E,GAACD,AAAAA,CAAAA,AAAE,EAAxBA,CAAAA,EAAE,AAACI,CAAAA,AAAE,EAAFA,CAAE,EAAIJ,CAAAA,AAAE,EAAFA,CAAE,EAAGA,EAAEI,CAAAA,CAAQ,GAAI,IAAI,CAACugI,EAAE5nF,E,M,CAAkB8gY,GAAG15a,AAAE,EAAFA,EAAI,EAAG,AAAC,CAAA,AAAA,CAAA,AAACorD,CAAAA,AAAE,EAAvBA,CAAAA,EAAEvrD,EAAE,GAAG,CAAA,CAAgB,EAAG,EAAEurD,EAAE,CAAA,GAAI,CAAA,EAAG,EAAE,GAAKo1E,EAAE5nF,C,EAGn8J4lY,gBAH8zX/+X,WAAY,OAAA,G,EAGvzXg/X,OAAOvK,GAAGwK,MAAMvgb,GAAGwgb,eAHwntEq/c,WAAY,OAAA,C,EAGlntEp/c,mBAHsgtEg/c,WAAY,OAAA,G,EAG5/sE/+c,gBAHw9sE8+c,WAAY,OAAA,E,EAGj9sE7+c,kBAH6gtEg/c,WAAY,OAAA,E,EAGpgtE/+c,gBAHi+sE8+c,WAAY,OAAA,C,EAG19sE7+c,eAHs4sET,WAAY,OAAA,C,EAGh4sEU,wBAH2+sE8+c,WAAY,OAAA,E,EAG59sE7+c,WAHin0Ci+c,SAAGxg4B,CAAZ,CAAckD,CAAd,CAAgBG,CAAhB,CAAkBhE,CAAlB,CAAoBuJ,CAApB,EAAuB5I,GAAI,EAAQqD,GAAI,EAAEhE,GAAI,EAAEuJ,GAAI,EAAMzF,IAAAA,EAAE,EAAEG,EAAE,EAAE24C,EAAE,EAAEwS,EAAE,EAAEjmD,EAAE,EAAEsJ,EAAE,EAAK,GAAC5O,AAAAA,CAAAA,AAAE,EAA1DA,CAAAA,GAAI,CAAA,CAAsD,GAAI,EAAc0F,OAAAA,AAAE,EAAbA,CAAAA,EAAE,CAAA,EAAgB,GAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,GAAG,CAAW,IAAVzF,EAAE,IAAU,CAAiB,GAAA,CAAE,CAAA,AAACC,CAAAA,AAAQ,EAARA,CAAC,CAAC0O,AAArBA,CAAAA,EAAE9R,EAAGmD,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAa,EAAL,AAAQ,GAAI,EAAE,AAACC,CAAAA,AAAU,EAAVA,CAAC,CAAC0O,EAAE,GAAG,EAAP,AAAU,GAAI,CAAA,EAAG,CAAC3O,EAAE,G,K,CAAoB,GAACA,AAAAA,CAAAA,AAAE,EAAdA,CAAAA,EAAEA,EAAE,EAAE,CAAA,CAAQ,GAAKD,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAACI,EAAE,EAAEH,EAAE,G,K,C,CAAa,GAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,GAAG,MAAO,AAAC,CAAA,AAAC9D,CAAAA,AAAE,EAAFA,CAAE,EAAG,EAAE,GAAG,EAAA,EAAI,EAAO,GAAI8D,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,GAAG,OAAOG,AAAE,EAAFA,C,CAAIH,EAAE,EAAE2O,EAAE,EAAE9R,EAAE,OAAQ,CAAkBsD,EAAEF,AAAQ,EAARA,CAAC,CAAC64C,AAARA,CAAAA,EAAbzzC,EAAExI,EAAG8R,CAAAA,GAAG,CAAA,EAAG,CAAItJ,GAAS,EAAL,CAAUyzC,EAAE74C,AAAU,EAAVA,CAAC,CAAC64C,EAAE,GAAG,EAAP,CAAe,GAAA,GAAG,CAAE,CAAA,AAAC34C,CAAAA,AAAE,EAAFA,CAAE,GAAI,EAAG24C,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,CAAA,EAAG,CAAI,GAAC94C,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAK9D,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAACiE,EAAE,GAAGH,EAAE,GAASnD,MAAAA,C,CAAqC,GAAnCyuD,EAAEmpX,AAAe,EAAfA,GAAGt0a,AAAE,EAAFA,EAAI24C,AAAE,EAAFA,EAAI,IAAM8lF,IAAiBtzE,AAAAA,CAAAA,AAAE,EAAbA,CAAAA,GAAI,EAAJA,CAAa,EAAI7lD,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAACtF,EAAE,GAAGH,EAAE,GAASnD,MAAAA,C,CAAK,GAACyuD,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAK7lD,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAAcxF,CAAC,CAACoF,AAAfA,CAAAA,EAAEnF,EAAGF,CAAAA,GAAG,CAAA,EAAG,CAAA,GAAO,EAAL,CAAQG,EAAEF,CAAC,CAACoF,EAAE,GAAG,EAAP,CAAUyzC,EAAE94C,EAAEA,EAAE,EAAE,E,K,CAAiC,GAACG,AAAAA,CAAAA,AAAE,EAA5BA,CAAAA,EAAE,AAAC+sV,CAAAA,AAAY,EAAZA,GAAG,EAAEznV,EAAE6lD,EAAE,EAAG,EAAGtrD,EAAE,CAAA,CAAQ,EAAI9D,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAACiE,EAAE,GAAGH,EAAE,GAASnD,MAAAA,C,CAAEitb,GAAG7pb,AAAQ,EAARA,CAAC,CAACoF,GAAG,EAAL,CAAUpF,AAAU,EAAVA,CAAC,CAACoF,EAAE,GAAG,EAAP,CAAYI,EAAEvF,EAAGF,CAAAA,GAAG,CAAA,EAAG,GAAGA,EAAEG,CAApS,OAA4S,EAA5S,AAA0T,GAACwO,AAAAA,CAAAA,AAAE,EAAdA,CAAAA,EAAEA,EAAE,EAAE,CAAA,CAAQ,GAAK5O,CAAAA,AAAE,EAAFA,CAAE,EAAG,CAACI,EAAE,EAAEH,EAAE,G,K,C,OAAa,AAACA,AAAAA,CAAAA,AAAE,EAAFA,CAAE,GAAI,GAAUG,AAAE,EAAFA,EAAW,C,EAGl01Ck/a,oBAH90CvwZ,SAAEjyB,CAAX,CAAaoD,CAAb,EAAgBpD,GAAI,EAAQ6jI,EAAE7jI,C,EAG+0Cyib,WAHl9C9mJ,SAAE37R,CAAX,EAAcA,GAAI,EAAMoD,IAAAA,EAAE,EAAgCA,OAA9BA,EAAEygI,EAAUA,EAAEA,AAAVA,CAAAA,EAAEA,EAAE7jI,EAAE,CAAA,EAAM,GAAG,IAAWoD,AAAE,EAAFA,C,EAG86Cs/a,aAHz4CvgT,SAAEniI,CAAX,EAAcA,GAAI,EAAE6jI,EAAE7jI,C,EAG24C2ib,UAHh7C7+S,WAAWD,OAAAA,AAAE,EAAFA,C,CAGlF,CANQ,EAD4h5C,CAAQrlH,KAAAA,KAAiB0kL,UAAAA,UAAuB/P,WAAAA,WAAwB1lB,WAAAA,WAA0BgW,aAAAA,aAA4BJ,aAAAA,YAA/I,EAA+K,CAAKn6D,EAAAA,GAAU20wB,EAAlnzC,SAASl93B,CAAT,EAAgBmza,EAASnza,CAAzC,EAAkpzCoza,EAAAA,EAAgB8qd,EAAn1FA,SAAeh20B,CAAxB,CAAkCm0M,CAAlC,CAA2C3pL,CAA3C,CAAgD/nB,CAAhD,EAAsD49D,GAAM,qBAAqBkrT,EAAavrX,GAAW,SAAS,CAACm0M,EAASo3K,EAAap3K,GAAU,mBAAmB3pL,EAAK/nB,EAAK8oX,EAAa9oX,GAAM,mBAAxI,C,EAAozFyz0B,EAAz/EA,SAAYp+3B,CAArB,EAAiHA,OAAlF4ya,EAAO,iBAAV,EAA+BN,CAAAA,CAAM,CAACM,EAAO,iBAAP,IAA+B,EAAtC,CAAyC5ya,CAArE4ya,EAAkF5ya,C,EAAi6Ey1a,EAAAA,EAA8B0od,EAAnoFA,SAAuBj+3B,CAAhC,CAAqCwoC,CAArC,CAAyC2tF,CAAzC,EAA8C+7S,EAAOnza,GAAP,CAAWmza,EAAOrhQ,QAAP,CAAgBroI,EAAIA,EAAI2tF,GAAKn2H,E,EAAilFo+3B,EAAppEA,SAAwBr8c,CAAjC,EAAoDC,IAAAA,EAAQzM,IAA6FwM,GAAAA,EAA5B,WAAwD,MAAA,CAAA,EAAyF5tO,IAAjDA,IAAAA,EAAQx2L,KAAKmoC,GAAL,CAASk8X,EAA9B,UAA8D7tO,EAAQ4tO,GAAsC5tO,EAApBA,GAAS,UAAmB8/N,EAAQ,EAAE9/N,EAApO,UAAwQx2L,KAAKsvB,GAAL,CAASgnY,EAAQ,AAAC,CAAA,EAAE9/N,EAAQ,UAAA,EAAY,EAAhT,UAAmB,oBAAsUqhO,EAA0BrhO,E,EAA4tDgqrB,EAAv+EA,SAAwBp8c,CAAjC,EAAgD15T,GAAM,M,EAAs9Ey1wB,EAA18GA,SAASrz0B,CAAlB,EAA+BA,OAAAA,C,EAAi8G4qX,EAAAA,EAAgBG,EAAAA,EAA8BF,EAAAA,EAAiByod,EAAxrGA,WAAiB97c,IAAAA,EAAG3M,IAAwFD,OAAtE3C,EAAO,eAAV,EAA6BuP,CAAAA,GAAI,KAAKvP,EAAO,eAAP,EAAnCA,EAAsE2C,EAAY4M,E,EAA+kG47c,EAApjH,MAAskHvpd,EAAt4oC,KAAokoC,EAWpp5CzzT,EAAuB6xT,CAAAA,EAAO,UAAP,CAAqB6D,EAAI,UAAxC,CAA0E7D,EAAO,eAAP,CAA0B6D,EAAI,eAAlD,CAAwF7D,EAAO,cAAP,CAAyB6D,EAAI,cAAhD,CAA8E7D,EAAO,OAAP,CAAkB6D,EAAI,OAAlC,CAA8D7D,EAAO,YAAP,CAAuB6D,EAAI,YAA5C,CAA4E7D,EAAO,WAAP,CAAsB6D,EAAI,WAA1C,CAA4E7D,EAAO,cAAP,CAAyB6D,EAAI,cAAhD,CAA+E7D,EAAO,QAAP,CAAmB6D,EAAI,QAApC,CAA0E7D,EAAO,qBAAP,CAAgC6D,EAAI,qBAA9D,CAAyG7D,EAAO,aAAP,CAAwB6D,EAAI,aAA9C,CAAgF7D,EAAO,YAAP,CAAuB6D,EAAI,YAA5C,CAAgEb,IAAAA,EAA2BhD,EAAO,0BAAP,CAAqC6D,EAAI,0BAAxE,AAA6H7D,CAAAA,EAAO,kBAAP,CAA6B6D,EAAI,kBAAxD,CAAoG7D,EAAO,iBAAP,CAA4B6D,EAAI,iBAAtD,CAAoG7D,EAAO,oBAAP,CAA+B6D,EAAI,oBAA5D,CAAiH7D,EAAO,wBAAP,CAAmC6D,EAAI,wBAApE,CAA6H7D,EAAO,wBAAP,CAAmC6D,EAAI,wBAApE,CAA0G7D,EAAO,KAAP,CAAgB6D,EAAI,KAA9B,CAAoD7D,EAAO,QAAP,CAAmB6D,EAAI,QAApC,CAAiG7D,EAAO,4CAAP,CAAuD6D,EAAI,4CAA5G,CAAoM7D,EAAO,mCAAP,CAA8C6D,EAAI,mCAA1F,CAA8J7D,EAAO,wBAAP,CAAmC6D,EAAI,wBAApE,CAAqI7D,EAAO,gCAAP,CAA2C6D,EAAI,gCAApF,CAAiK7D,EAAO,oCAAP,CAA+C6D,EAAI,oCAA5F,CAAgL7D,EAAO,uCAAP,CAAkD6D,EAAI,uCAAlG,CAAqK7D,EAAO,mBAAP,CAA8B6D,EAAI,mBAA1D,CAAqG7D,EAAO,eAAP,CAA0B6D,EAAI,eAAlD,CAAqF7D,EAAO,WAAP,CAAsB6D,EAAI,WAA1C,CAA4E7D,EAAO,cAAP,CAAyB6D,EAAI,cAAhD,CAAkF7D,EAAO,WAAP,CAAsB6D,EAAI,WAA1C,CAAoF7D,EAAO,sBAAP,CAAiC6D,EAAI,sBAAhE,CAA4G7D,EAAO,aAAP,CAAwB6D,EAAI,aAA9C,CAAoF7D,EAAO,gBAAP,CAA2B6D,EAAI,gBAApD,CAAuF7D,EAAO,UAAP,CAAqB6D,EAAI,UAAxC,CAAkE7D,EAAO,OAAP,CAAkB6D,EAAI,OAAlC,CAA6D7D,EAAO,WAAP,CAAsB6D,EAAI,WAA1C,CAA+E7D,EAAO,iBAAP,CAA4B6D,EAAI,iBAAtD,CAAgG7D,EAAO,gBAAP,CAA2B6D,EAAI,gBAApD,CAA0F7D,EAAO,aAAP,CAAwB6D,EAAI,aAA9C,CAA4E7D,EAAO,QAAP,CAAmB6D,EAAI,QAApC,CAAqE7D,EAAO,gBAAP,CAA2B6D,EAAI,gBAApD,CAAwF7D,EAAO,WAAP,CAAsB6D,EAAI,WAA1C,CAA0F7D,EAAO,4BAAP,CAAuC6D,EAAI,4BAA5E,CAA4H7D,EAAO,WAAP,CAAsB6D,EAAI,WAA1C,CAAwE7D,EAAO,UAAP,CAAqB6D,EAAI,UAAxC,CAAmE7D,EAAO,QAAP,CAAmB6D,EAAI,QAApC,CAAiE7D,EAAO,YAAP,CAAuB6D,EAAI,YAA5C,CAAuE7D,EAAO,MAAP,CAAiB6D,EAAI,MAAhC,CAA8D7D,EAAO,eAAP,CAA0B6D,EAAI,eAAlD,CAA0F7D,EAAO,gBAAP,CAA2B6D,EAAI,gBAApD,CAA4F7D,EAAO,eAAP,CAA0B6D,EAAI,eAAlD,CAAiF7D,EAAO,OAAP,CAAkB6D,EAAI,OAAlC,CAA+D7D,EAAO,aAAP,CAAwB6D,EAAI,aAA9C,CAAwF7D,EAAO,oBAAP,CAA+B6D,EAAI,oBAA5D,CAAsG7D,EAAO,aAAP,CAAwB6D,EAAI,aAA9C,CAAoF7D,EAAO,gBAAP,CAA2B6D,EAAI,gBAApD,CAA8F7D,EAAO,iBAAP,CAA4B6D,EAAI,iBAAtD,CAAuF7D,EAAO,OAAP,CAAkB6D,EAAI,OAAlC,CAAyD7D,EAAO,OAAP,CAAkB6D,EAAI,OAAlC,CAA8D7D,EAAO,YAAP,CAAuB6D,EAAI,YAA5C,CAAoF7D,EAAO,mBAAP,CAA8B6D,EAAI,mBAA1D,CAAkG7D,EAAO,YAAP,CAAuB6D,EAAI,YAA5C,CAA4E7D,EAAO,WAAP,CAAsB6D,EAAI,WAA1C,CAA4E7D,EAAO,cAAP,CAAyB6D,EAAI,cAAhD,CAAgF7D,EAAO,SAAP,CAAoB6D,EAAI,SAAtC,CAAuE7D,EAAO,eAAP,CAA0B6D,EAAI,eAAlD,CAAgF7D,EAAO,MAAP,CAAiB6D,EAAI,MAAhC,CAAoD7D,EAAO,KAAP,CAAgB6D,EAAI,KAA9B,CAA0D7D,EAAO,cAAP,CAAyB6D,EAAI,cAAhD,CAAyF7D,EAAO,kBAAP,CAA6B6D,EAAI,kBAAxD,CAAkG7D,EAAO,eAAP,CAA0B6D,EAAI,eAAlD,CAA2F7D,EAAO,iBAAP,CAA4B6D,EAAI,iBAAtD,CAA+F7D,EAAO,eAAP,CAA0B6D,EAAI,eAAlD,CAAwF7D,EAAO,cAAP,CAAyB6D,EAAI,cAAhD,CAA8F7D,EAAO,uBAAP,CAAkC6D,EAAI,uBAAlE,CAA4G7D,EAAO,UAAP,CAAqB6D,EAAI,UAAxC,CAA8E7D,EAAO,mBAAP,CAA8B6D,EAAI,mBAA1D,CAAqFqL,IAAAA,EAAWlP,EAAO,UAAP,CAAqB6D,EAAI,UAAxC,CAA0DsL,EAAanP,EAAO,YAAP,CAAuB6D,EAAI,YAA5C,CAAgEuL,EAAUpP,EAAO,SAAP,CAAoB6D,EAAI,SAAtC,CAAwLrB,GAArIxC,EAAO,GAAP,CAAc6D,EAAI7D,EAAO,KAAP,CAXtGoR,SAAMzQ,CAAf,CAAqB6O,CAArB,CAAgCC,CAAhC,CAAyC50X,CAAzC,EAAyE60X,IAAAA,EAAYD,AAAtCA,CAAAA,EAASA,GAAU,EAAnB,AAAmB,EAA4B16X,KAAT,CAAe,SAAS7kD,CAAT,EAAsBA,MAAAA,AAAO,WAAPA,CAArC,SAA+Fy/a,AAAAA,AAAZ,WAAbH,GAAqCE,GAAa,CAAC70X,EAAa6lX,EAASC,GAAc,WAAkBiP,OAAAA,AAAjgCA,SAAMjP,CAAf,CAAqB6O,CAArB,CAAgCC,CAAhC,CAAyC/pY,CAAzC,CAA8CmV,CAA9C,EAAwDg1X,IAA6R1pW,EAA7R0pW,EAAI,CAAU,OAAA,SAASh2X,CAAT,EAAkBssB,IAAAA,EAAI,EAAKtsB,GAAAA,MAAAA,GAA6BA,AAAM,IAANA,EAAQ,CAAK6uB,IAAAA,EAAI,AAAC7uB,CAAAA,EAAI1kD,MAAJ,EAAY,CAAA,EAAG,EAAonF26a,AAAz0BA,CAAAA,SAAkBj2X,CAA3B,CAA+Bk2X,CAA/B,CAA0CC,CAA1C,CAAiDC,CAAjD,EAAqE,GAAEA,EAAgB,GAAwE,IAAA,IAApC/O,EAAO8O,EAAOC,EAAgB,EAAUvnY,EAAE,EAAEA,EAAEmR,EAAI1kD,MAAlB,CAAyB,EAAEuzC,EAAE,CAAKzjB,IAAAA,EAAE40B,EAAIc,UAAJ,CAAejS,GAAuFzjB,GAAjFA,GAAG,OAAOA,GAAG,OAAkCA,CAAAA,EAAE,MAAO,CAAA,AAACA,CAAAA,AAAE,KAAFA,CAAE,GAAO,EAAA,EAAIk6N,AAAG,KAA9CtlM,EAAIc,UAAJ,CAAe,EAAEjS,EAAGzjB,EAAkCA,GAAG,IAAI,CAAI+qZ,GAAAA,GAAQ9O,EAAO,KAAM6O,CAAAA,CAAU,CAACC,IAAX,CAAqB/qZ,CAAxD,MAA+D,GAAGA,GAAG,KAAK,CAAI+qZ,GAAAA,EAAO,GAAG9O,EAAO,KAAM6O,CAAAA,CAAU,CAACC,IAAX,CAAqB,IAAI/qZ,GAAG,EAAE8qZ,CAAU,CAACC,IAAX,CAAqB,IAAI/qZ,AAAE,GAAFA,CAA7F,MAAuG,GAAGA,GAAG,MAAM,CAAI+qZ,GAAAA,EAAO,GAAG9O,EAAO,KAAM6O,CAAAA,CAAU,CAACC,IAAX,CAAqB,IAAI/qZ,GAAG,GAAG8qZ,CAAU,CAACC,IAAX,CAAqB,IAAI/qZ,GAAG,EAAE,GAAG8qZ,CAAU,CAACC,IAAX,CAAqB,IAAI/qZ,AAAE,GAAFA,CAAhI,KAAyI,CAAI+qZ,GAAAA,EAAO,GAAG9O,EAAO,KAAM6O,CAAAA,CAAU,CAACC,IAAX,CAAqB,IAAI/qZ,GAAG,GAAG8qZ,CAAU,CAACC,IAAX,CAAqB,IAAI/qZ,GAAG,GAAG,GAAG8qZ,CAAU,CAACC,IAAX,CAAqB,IAAI/qZ,GAAG,EAAE,GAAG8qZ,CAAU,CAACC,IAAX,CAAqB,IAAI/qZ,AAAE,GAAFA,C,C,CAAM8qZ,CAAU,CAACC,EAAX,CAAmB,E,C,EAA//En2X,EAAumF2lX,EAAxoFr5V,EAAI+oW,EAAWxmW,GAA0BA,E,CAAYvC,OAAAA,CAA1J,EAAuK,MAAA,SAAS9qB,CAAT,EAAkB8qB,IAAAA,EAAI+oW,EAAW7zX,EAAIlmD,MAAL,EAAgDgxE,OAAi5Fo5V,EAAMlza,GAAN,CAAj6FgvD,EAAI8qB,GAAYA,C,CAA/P,EAAqZpuB,EAAK2oX,EAASC,GAAWuP,EAAM,EAAV,CAAiBnya,EAAM,EAAK2nC,GAAAA,EAAU,IAAA,IAAIgD,EAAE,EAAEA,EAAEhD,EAAKvwC,MAAnB,CAA0BuzC,IAAI,CAAKynY,IAAAA,EAAUN,CAAG,CAACJ,CAAQ,CAAC/mY,EAAV,CAAjB,CAAkCynY,GAAsB,IAARpya,GAAUA,CAAAA,EAAMqxa,GAAhBrxa,EAA4Bmya,CAAK,CAACxnY,EAAN,CAASynY,EAAUzqY,CAAI,CAACgD,EAAN,GAAewnY,CAAK,CAACxnY,EAAN,CAAShD,CAAI,CAACgD,EAAd,A,CAAuBy9B,IAAAA,EAAIpuB,EAAKphD,KAAL,CAAW,KAAKu5a,GAA2E/pW,OAA7aA,EAAgYA,EAAvBA,EAAjWqpW,AAAAA,AAAa,WAAbA,EAA6B3O,EAAa16V,GAAQqpW,AAAa,YAAbA,EAA8BhmS,CAAAA,CAAQrjE,EAAYA,EAAoS,IAARpoE,GAAUoxa,EAAapxa,GAAcooE,C,EAA8Qw6V,EAAM6O,EAAWC,EAASv6a,UAAU2lD,EAAnE,C,EAWtGmlX,EAAO,QAAP,CAXrrE7ga,SAAS2ha,CAAlB,CAAsB1za,CAAtB,CAA4B8C,CAA5B,CAAiCkgb,CAAjC,EAA+Glgb,OAAtB,MAA7BA,AAAnBA,CAAAA,EAAKA,GAAM,IAAXA,EAAwBmV,MAAL,CAAYnV,EAAKiF,MAAL,CAAY,IAASjF,CAAAA,EAAK,KAAtCA,EAAmDA,GAAU,IAAA,KAAmC,IAAA,KAA9Bqva,CAAK,CAACuB,GAAK,EAAX,CAAc1za,E,KAAmD,KAAA,MAAMqya,CAAM,CAACqB,GAAK,EAAZ,CAAe1za,E,KAAgB,KAAA,MAAMsya,CAAM,CAACoB,GAAK,EAAZ,CAAe1za,E,KAAgB,KAAA,MAAM0ya,EAAQ,CAAC1ya,IAAQ,EAAoB,CAAC60a,EAAlBpC,EAAWzya,IAA6B,EAAGyya,EAAW,EAAG,AAACuC,CAAAA,AAA0D,EAA1DA,EAAS,CAACD,EAAWtC,EAAW,YAAa,WAAa,IAAK,EAAE,CAAC,CAAC,CAACqC,EAAU,AAACrC,CAAAA,EAAW,CAAE,CAAA,CAAC,CAACA,IAAa,CAAA,CAAA,EAAI,cAAe,EAAE,EAA9M,CAAkNH,CAAM,CAACoB,GAAK,EAAZ,CAAehB,CAAO,CAAC,EAAzO,CAA4OJ,CAAM,CAACoB,EAAI,GAAG,EAAd,CAAiBhB,CAAO,CAAC,EAArQ,C,KAAkR,KAAA,QAAQH,CAAO,CAACmB,GAAK,EAAb,CAAgB1za,E,KAAgB,KAAA,SAASwya,CAAO,CAACkB,GAAK,EAAb,CAAgB1za,E,K,SAAoBuoH,GAAM,8BAA8BzlH,E,C,EAWgkD8va,EAAO,QAAP,CAXhjD9ga,SAAS4ha,CAAlB,CAAsB5wa,CAAtB,CAA2Bkgb,CAA3B,EAAyGlgb,OAAtB,MAA7BA,AAAnBA,CAAAA,EAAKA,GAAM,IAAXA,EAAwBmV,MAAL,CAAYnV,EAAKiF,MAAL,CAAY,IAASjF,CAAAA,EAAK,KAAtCA,EAAmDA,GAAU,IAAA,KAA8B,IAAA,KAAlBqva,OAAAA,CAAK,CAACuB,GAAK,EAAlB,AAAuD,KAAA,MAAarB,OAAAA,CAAM,CAACqB,GAAK,EAAnB,AAA0B,KAAA,MAAgC,IAAA,MAAnBpB,OAAAA,CAAM,CAACoB,GAAK,EAAnB,AAA0D,KAAA,QAAenB,OAAAA,CAAO,CAACmB,GAAK,EAApB,AAA2B,KAAA,SAAgBlB,OAAAA,CAAO,CAACkB,GAAK,EAApB,A,SAA+BnrT,GAAM,8BAA8BzlH,E,CAAa,OAAA,I,EAW0sC8va,EAAO,WAAP,CAAsBQ,EAAegC,EAAkB,CAAKE,EAAUF,KAXxuKp6X,GAWyxKo6X,EAA7BA,EAXnvKxC,AAAAA,EAAO,UAAV,CAAgCA,EAAO,UAAP,CAAqB53X,GAAK+3X,GAAwBA,EAAgB/3X,IAAkvTi6X,IAAqBrC,EAAO,sBAAV,EAAqCA,EAAO,sBAAP,CAAiCqC,GAWp+IgO,IAX98KjoY,GAW88KioY,GAAuB,SAAS18Z,CAAT,EAAkBA,EAAKs5J,UAAR,EAAmBt5J,CAAAA,EAAK,IAAIumJ,WAAWvmJ,EAApCA,EAA0C6rZ,EAAOnza,GAAP,CAAWsnB,EAX5xF,GAWizFqsZ,EAAO,wBAAV,EAAsC,OAAOA,EAAO,wBAAP,CAAmChmU,QAA1C,CAAmDs2U,AAXszIA,SAAoBrib,CAA7B,EAA6Io0a,GAA5GA,IAAqBrC,EAAO,sBAAV,EAAqCA,EAAO,sBAAP,CAAiCqC,GAAoBA,AAAiB,GAAjBA,IAA8C,OAAvBC,IAA6BrxR,cAAcqxR,GAAsBA,EAAqB,MAAQC,GAAsB,CAAK59Y,IAAAA,EAAS49Y,EAAsBA,EAAsB,KAAK59Y,G,C,EAWhnJ,EAAjO,EAA4P4rZ,GAAc,WAAWjR,EAAUkD,EAAkB6N,GAAuB,WAAgB,KAAA,qCAAqC7N,CAA/F,EAAtC,EAA8JgO,GAAuBlQ,EAAkBkC,GAAsBgO,GAAAA,GAAwBH,GAAuBG,GAAuBriU,MAAxB,OAAqC,GAAG6xT,EAAO,wBAAV,CAAsC,CAAKyQ,IAAAA,GAAW,WAAe7jU,IAAAA,EAAQozT,EAAO,wBAAnB,CAAmDhmU,EAAS4S,EAAQ5S,QAArB,CAAiC4S,GAAAA,AAAiB,MAAjBA,EAAQ+E,MAAR,EAAsB/E,AAAiB,IAAjBA,EAAQ+E,MAAR,CAAmB,CAAKh+F,IAAAA,EAAK2sZ,EAAkBN,EAAO,2BAAR,EAA2CrsZ,GAAAA,EAAMqmF,EAASrmF,EAAKw6F,MAAd,KAAyB,CAACp1G,QAAQgvF,IAAR,CAAa,kFAAkF6kB,EAAQ+E,MAA1F,CAAiG,cAAc6wT,GAAmB+N,K,M,C,CAAwBF,GAAuBr2U,EAAvb,CAAqcgmU,CAAAA,EAAO,wBAAP,CAAmChmU,QAAtC,CAAgDr6E,WAAW8wZ,GAAW,GAAQzQ,EAAO,wBAAP,CAAmCh4Z,gBAAnC,CAAoD,OAAOyoa,GAAlnB,MAAooBF,I,CAAqR/tV,SAAAA,GAAI98C,CAAb,EAAmBA,EAAKA,GAAMw6X,GAAcmC,CAAAA,EAAgB,CAAA,IAAUqO,AAXy/DA,WAAY1Q,GAAAA,EAAO,MAAV,CAAsGA,IAArD,YAAzB,OAAOA,EAAO,MAAd,EAAoCA,CAAAA,EAAO,MAAP,CAAiB,CAACA,EAAO,MAAR,CAAjB,AAAA,EAA0CA,EAAO,MAAP,CAAiB7qa,MAAvB,EAA+Bw7a,KAAifztV,EAAAA,EAAre88U,EAAO,MAAP,CAAiBxxZ,KAAjB,GAAyeqzZ,EAAa7iZ,OAAb,CAAqBkkE,EAAniB88U,CAAgE0B,EAAqBG,E,IAWjrEQ,EAAgB,IAAqLrC,EAAO,SAAV,EAAwBA,EAAO,SAAP,CAAoB,cAAcrgZ,WAAW,WAAWA,WAAW,WAAWqgZ,EAAO,SAAP,CAAoB,GAAhC,EAAqC,GAAG4Q,GAA9D,EAAuE,IAAQA,MAAnTA,SAAAA,KAAW7Q,IAAiBA,EAAU,CAAA,EAAQU,IAX8pEiB,EAAqBI,GAA+BJ,EAAqBK,GAW/rE/B,EAAO,oBAAV,EAAkCA,EAAO,oBAAP,GAAiC6Q,AAX8rEA,WAAa7Q,GAAAA,EAAO,OAAV,CAA0GA,IAAvD,YAA1B,OAAOA,EAAO,OAAd,EAAqCA,CAAAA,EAAO,OAAP,CAAkB,CAACA,EAAO,OAAR,CAAlB,AAAA,EAA4CA,EAAO,OAAP,CAAkB7qa,MAAxB,EAAgC27a,KAAqJ5tV,EAAAA,EAAxI88U,EAAO,OAAP,CAAkBxxZ,KAAlB,GAA4IwzZ,EAAchjZ,OAAd,CAAsBkkE,EAAzM88U,CAAmE0B,EAAqBM,E,K,C,CAWzsErsT,SAAAA,GAAMo7T,CAAf,EAA6H,MAArG/Q,EAAO,OAAV,EAAsBA,EAAO,OAAP,CAAkB+Q,GAAe11T,EAAT01T,GAAM,IAAa1ib,EAAI0ib,GAAMtQ,EAAM,CAAA,EAAuB,SAASsQ,EAAK,8C,CAAwE/Q,GAAnwBuC,EAAsB,SAASyO,IAAgBjR,GAAUv9U,KAAUu9U,GAAUwC,CAAAA,EAAsByO,CAAjC,CAAlE,EAA8hBhR,EAAO,GAAP,CAAcx9U,GAA8Lw9U,EAAO,KAAP,CAAgBrqT,GAASqqT,EAAO,OAAV,CAA0GA,IAAvD,YAA1B,OAAOA,EAAO,OAAd,EAAqCA,CAAAA,EAAO,OAAP,CAAkB,CAACA,EAAO,OAAR,CAAlB,AAAA,EAA4CA,EAAO,OAAP,CAAkB7qa,MAAlB,CAAyB,GAAG6qa,EAAO,OAAP,CAAkB//X,GAAlB,KAI5jQo/X,OAJ0mQ78U,KAI1mQ68U,CAnBG,EAqBV,AAAiB,UAAjB,OAAOA,EAAqBA,EAAQ,CAAA,GCHhC2ud,EAAS,SCITM,EAAK,CAAA,EAGXC,ADGe,CAEX,CAAC,gBAAiBP,EAFP,CAGX,CAAC,iBAAkBA,EAHR,CAIX,CAAC,oBAAqBA,EAJX,CAKX,CAAC,mBAAoBA,EALV,CAMX,CAAC,iBAAkBA,EANR,CAOX,CAAC,yBAA0BA,EAPhB,CAQX,CAAC,gBAAiBA,EARP,CAUX,CAAC,YAnBWA,EAmBW,CAlBVA,EACAA,EAiBb,CAVW,CAWX,CAAC,UAnBYA,EAmBS,CAACA,EAAQA,EAjBhBA,EAiBf,CAXW,CAYX,CAAC,UAAW,KAAM,CApBLA,EACAA,EAEDA,EAiBZ,CAZW,CAaX,CAAC,kBAAmB,KAAM,CArBbA,EACAA,EAEDA,EAkBZ,CAbW,CAcX,CAAC,eAAgBA,EAAQ,CAACA,EAA1B,CAdW,CAeX,CAAC,QAAS,KAAM,CAvBHA,EACAA,EAsBwBA,EApBzBA,EAoBZ,CAfW,CAgBX,CAAC,iBAAkB,KAAM,CAxBZA,EACAA,EAuBiCA,EArBlCA,EAAAA,EAqBZ,CAhBW,CAiBX,CAAC,UAAW,KAAM,CAzBLA,EACAA,EAwB0BA,EAtB3BA,EAsBZ,CAjBW,CAkBX,CAAC,kBAAmBA,EAAQ,CAvBhBA,EADGA,EAwBf,CAlBW,CAmBX,CAAC,WAAY,KAAM,CAxBPA,EADGA,EACHA,EAwBZ,CAnBW,CAoBX,CAAC,mBAAoB,KAAM,CAzBfA,EAyByBA,EAzBzBA,EAyBZ,CApBW,CAqBX,CAAC,uBAAwB,KAAM,CA1BnBA,EA0BZ,CArBW,CAsBX,CAAC,UAAWA,EAAQ,CA3BRA,EAAAA,EA2B2BA,EAAvC,CAtBW,CAuBX,CAAC,YAAaA,EAAQ,CA5BVA,EA4BoBA,EA5BpBA,EA4BqCA,EA7BlCA,EA6Bf,CAvBW,CAwBX,CAAC,mBAAoBA,EAAQ,CA7BjBA,EA6B2BA,EA9BxBA,EA8Bf,CAxBW,CAyBX,CAAC,eAlCWA,EAkCc,CAjCbA,EACAA,EAgCb,CAzBW,CA0BX,CAAC,kBAnCWA,EAmCiB,CAlChBA,EACAA,EAiCb,CA1BW,CA2BX,CAAC,gBAAiBA,EAAQ,CAnCbA,EACAA,EAkCb,CA3BW,CA4BX,CAAC,eAAgBA,EAAQ,CApCZA,EACAA,EAmCb,CA5BW,CA6BX,CAAC,aAAc,KAAM,CArCRA,EACAA,EAEDA,EAkCZ,CA7BW,CA8BX,CAAC,aAtCYA,EAsCY,CAtCZA,EACAA,EACEA,EAoCf,CA9BW,CA+BX,CAAC,eAAgB,KAAM,CAvCVA,EACAA,EACEA,EACHA,EAoCZ,CA/BW,CAgCX,CAAC,kBAxCYA,EAwCiB,CAxCjBA,EACAA,EACEA,EAsCf,CAhCW,CAiCX,CAAC,sBAAuBA,EAAQ,CAzCnBA,EACAA,EACEA,EAuCf,CAjCW,CAkCX,CAAC,wBA3CWA,EA2CuB,CA1CtBA,EACAA,EADAA,EACAA,EAyCb,CAlCW,CAmCX,CAAC,0BA3CYA,EA2CyB,CA3CzBA,EACAA,EADAA,EACAA,EA0Cb,CAnCW,CAoCX,CAAC,yCA5CYA,EA4CwC,CA5CxCA,EACAA,EA2Cb,CApCW,CAqCX,CAAC,8CA7CYA,EA6C6C,CA7C7CA,EACAA,EA4Cb,CArCW,CAsCX,CAAC,8BA/CWA,EA+C6B,CA9C5BA,EACAA,EA6Cb,CAtCW,CAuCX,CAAC,qCAAsC,KAAM,CA/ChCA,EACAA,EAEDA,EA4CZ,CAvCW,CAwCX,CAAC,sCAAuC,KAAM,CAhDjCA,EACAA,EAEDA,EA6CZ,CAxCW,CAyCX,CAAC,kCAAmC,KAAM,CAjD7BA,EACAA,EAEDA,EA8CZ,CAzCW,CA0CX,CAAC,aAAcA,EAAQ,CAlDVA,EACAA,EADAA,EACAA,EAiDb,CA1CW,CA2CX,CAAC,SAAUA,EAAQ,CAnDNA,EACAA,EADAA,EACAA,EAEDA,EAgDZ,CA3CW,CA4CX,CAAC,aAAcA,EAAQ,CApDVA,EACAA,EADAA,EACAA,EAmDb,CA5CW,CA6CX,CAAC,0BAA2BA,EAAQ,CArDvBA,EACAA,EADAA,EACAA,EAEDA,EAkDZ,CA7CW,CA8CX,CAAC,0BAA2BA,EAAQ,CAtDvBA,EACAA,EAEDA,EAAAA,EAmDZ,CA9CW,CA+CX,CAAC,YAAaA,EAAQ,CArDPA,EAqDf,CA/CW,CAgDX,CAAC,aAAcA,EAAQ,CAtDRA,EAsDf,CAhDW,CAiDX,CAAC,cAAeA,EAAQ,CAvDTA,EAuDf,CAjDW,CAkDX,CAAC,eAAgBA,EAAQ,CAxDVA,EAwDf,CAlDW,CAmDX,CAAC,aAAcA,EAAQ,CAxDXA,EAAAA,EAwDZ,CAnDW,CAoDX,CAAC,cAAeA,EAAQ,CAzDZA,EAAAA,EAyDZ,CApDW,CAqDX,CAAC,gBAAiBA,EAAQ,CA1DdA,EAAAA,EA0DZ,CArDW,CAsDX,CAAC,aAAcA,EAAQ,CA9DVA,EACAA,EA6Db,CAtDW,CAuDX,CAAC,cAAeA,EAAQ,CA/DXA,EACAA,EA8Db,CAvDW,CAwDX,CAAC,gBAAiBA,EAAQ,CAhEbA,EACAA,EA+Db,CAxDW,CAyDX,CAAC,mBAAoBA,EAAQ,CAjEhBA,EACAA,EAgEb,CAzDW,CA0DX,CAAC,oBAAqBA,EAAQ,CAlEjBA,EACAA,EAiEb,CA1DW,CA2DX,CAAC,sBAAuBA,EAAQ,CAnEnBA,EACAA,EAkEb,CA3DW,CA4DX,CAAC,cAAeA,EAAQ,CAlETA,EAkEf,CA5DW,CA6DX,CAAC,iBAAkB,KAAM,CAlEbA,EAkEZ,CA7DW,CA8DX,CAAC,iBAAkBA,EA9DR,CA+DX,CAAC,qBAAsB,KAAM,CAACA,EApElBA,EAoEZ,CA/DW,CAgEX,CAAC,qBAAsBA,EAhEZ,CAAf,CCHSvg4B,OAAT,CAAiB,SAAcw5N,CAAd,EACbqnqB,CAAE,CAACrnqB,CAAG,CAAC,EAAL,CAAF,CAAa/mL,EAAEkxY,KAAAA,CAAAA,KAAF,CAAQlxY,EAAG+mL,EAD5B,GAaA68pB,IAAM8K,EAAaN,EAAGh9c,aAAH,GACbu9c,EAAcP,EAAG98c,cAAH,GACG88c,EAAG58c,iBAAH,GACvBoyc,IAAMiL,EAAgBT,EAAG38c,gBAAH,GAChBq9c,EAAcV,EAAG18c,cAAH,GAmGpB,SAAS89c,EAAajswB,CAAtB,EACQA,GAAAA,GAAO,EACAA,OAAAA,EAAI9tH,QAAJ,CAjHC,IAsHR28a,IAAAA,EAAUq9c,EAAQ,EAAGlswB,AADzBA,CAAAA,GAAY,UAAZA,EAC6B9tH,QAAJ,CAtHb,KAyHL28a,MADGE,AADM//W,AAAAA,CAAAA,SAAS6/W,CAAO,CAAC,EAAT,CAvHZ,IAuHoC,CAAA,EAAG38a,QAApC,CAvHH,IAwHO28a,EAAQhta,SAAR,CAAkB,E,CAWzC,SAASsq3B,EAAmB38c,CAA5B,CAAmCb,CAAnC,EACWs9c,OAAAA,EAAat9c,GAASu9c,EAAQ,EAAGD,EAAaz8c,G,CAUzD,SAAS08c,EAAQl9c,CAAjB,CAA0BC,CAA1B,EAGSqxc,IAAAA,IAFCpxc,EAAYF,EAAUC,EAAOv9a,MAAnC,CACIy9a,EAAS,GACJlqY,EAAI,EAAGA,EAAIiqY,EAAWjqY,IAC3BkqY,GAAU,IAGPA,OADPA,EAAkBF,C,CAYtB,SAASm9c,EAAuBp1c,CAAhC,CAA8CC,CAA9C,CAAwDC,CAAxD,EAMSopc,IAAAA,IALCt1mB,EAAWgsK,EAAatlb,MAA9B,CACMylb,EAAgB16Y,EAAE0pY,OAAF,CAAUn7J,EAAUognB,GAEpCh0c,EAAWF,EAAY,EAAI,EAC3BG,EAAWH,EAAY,EAAI,EACxBjyY,EAAI,EAAGA,EAAI+lO,AAAW,EAAXA,EAAc/lO,GAAK,EACnCxI,EAAE0/X,OAAF,CAAUvza,GAAV,CACI,CAACoub,CAAY,CAAC/xY,EAAI,EAAjB,CAAoBmyY,EAArB,CAAgCJ,CAAY,CAAC/xY,EAAI,EAAjB,CAAoBoyY,EAApD,CAAA,CAA+Dpkb,GAA/D,CAAmEo53B,GACnEl1c,EAlKG,EAkKsBlyY,GAI1BgyY,OADPx6Y,EAAEi0Y,OAAF,CAAU9nb,GAAV,CAAc,CAACoiR,EAAUmsK,EAAzB,CAAyCF,EAvK9B,GAwKJA,C,CAkYJ,SAASnd,EAAQ1hU,CAAjB,CAAsB8nB,CAAtB,CAA2BzpE,CAA3B,EACGm5X,IAtTiB68c,EAAhBj9c,EAAOb,EAsTRiB,EAASnzY,EAAEmtY,OAAF,CAAUwhd,GAEzB3u1B,EAAE0/X,OAAF,CAAUvza,GAAV,CAAc,CAACwvG,EAAK8nB,EAAN,CAAWjtH,GAAX,CAAeo53B,GAAaz8c,EA3iB/B,GA6iBLlB,IAAAA,GA1TCc,EAAAA,CAAgBi9c,EAZhB,CAsUqB5B,EAAG/wd,OAAH,CAAW8V,EAAQn5X,GAvUjCha,EAAEsgY,WAAF,GACd,CAYOyS,CAAAA,EAAAA,CAGAb,CAHOA,EAAAA,CAAAA,CAAAA,EAAAA,EAGCw9c,EAAmB38c,EAAOb,GAAS,MAyT3CD,OADPjyY,EAAEuqY,KAAF,CAAQ4I,GACDlB,C,CA2KJ,SAAS/2P,EAAS55D,CAAlB,CAA+BtnE,CAA/B,CAAoCygY,CAApC,EAICn5T,GAHJ+twB,AAxpBJ,SAAqBr10B,CAArB,EACQ,GAAA,AAAe,UAAf,OAAOA,GAAoBA,EAAM,GAAKA,EAAM,IAAMjvC,KAAKg5B,KAAL,CAAWiW,KAASA,EAChE,MAAA,AAAI5rD,MAAJ,uBAAiC4rD,E,EAspB/BA,GACZygY,EAAYnxS,CAAAA,CAAQmxS,EAEhBn5T,AAAuB,IAAvBA,EAAYrsH,MAAZ,EAA4BqsH,AAA0B,IAA1BA,CAAW,CAAC,EAAZ,CAAersH,MAAf,CACrB,MAAA,EAAP,AAG6B,CAAA,UAA7B,OAAOqsH,CAAW,CAAC,EAAZ,CAAe,EAAtB,EACAA,CAAAA,EAAc,CAACA,EAAf,AAAA,EAEEy5T,IAAAA,EAAa80c,AArjBvB,SAAiCvuwB,CAAjC,CAA8Cm5T,CAA9C,EAEUQ,IAQFxnK,EAREwnK,EAAW35T,EAAYrsH,MAAZ,CAAqB,EAChC8lb,EAAa/6Y,EAAE0pY,OAAF,CAAUmld,GAGvB3zc,EAAiBC,AADA,EACiB2zc,EAClC1zc,EAAcF,EAzLT,EA6LPD,GAFJ00c,EAAuBruwB,CAAW,CAAC,EAAb,CAAiBy5T,EAJhB,EAI6CN,GAEhEQ,EAAW,EAAG,CACdxnK,EAAQzzO,EAAE0pY,OAAF,CAAUuR,EAAU6zc,GACvBjL,IAAAA,IAAIr70B,EAAI,EAAGA,EAAIyyY,EAAUzyY,IAC1Bmn1B,EAAuBruwB,CAAW,CAAC94E,EAAI,EAAjB,CAAqBirO,EAAQq7mB,EAActm1B,EAAGiyY,E,CAKrEM,OAFP/6Y,EAAE/gC,QAAF,CAAW87a,EAAaG,EAAgBD,EAAU,OAClDj7Y,EAAE/gC,QAAF,CAAW87a,EAAaK,EAAa3nK,EAAO,OACrCsnK,C,EAkiBoCz5T,EAAam5T,GAClDY,EAAW+yc,EAAG9yc,eAAH,CAAmBP,EAAY/gY,GAC1CygD,EAAWz6D,EAAE0pY,OAAF,CAAU2R,EAAUqzc,GACrCN,EAAGlzsB,QAAH,CAAY6/P,EAAY/gY,EAAKygD,GACvB0gB,IAAAA,EAAMk1wB,AApchB,SAA6Bz9c,CAA7B,CAAuC90Q,CAAvC,EAES+ltB,IAAAA,IADC1owB,EAAM,EAAZ,CACS3yE,EAAI,EAAGA,EAAIs1H,EAAUt1H,IAAK,CACzBypY,IAAAA,EAAUk+c,AAvCxB,SAAgCv9c,CAAhC,CAA0C34Z,CAA1C,EAAgD,KAAA,IAAA,GAAA,CAAA,EAAG,CAAA,EACzC84Z,IAAAA,EAAQ/yY,EAAEhhC,QAAF,CAAW4za,EAAW27c,AApQzB,EAoQkCt02B,EAAS,EAAG,OACnDi4Z,EAAQlyY,EAAEhhC,QAAF,CAAW4za,EAAW27c,AArQzB,EAqQmCt02B,CAAAA,AAAS,EAATA,EAAa,CAAA,EAAI,OAGxDi4Z,OAAAA,EAAQw9c,EAAmB38c,EAAOb,GAAS,I,EAkCPU,EAAUpqY,EACjC,QAAZypY,GACA92T,EAAIvlH,IAAJ,CAASq8a,E,CAGV92T,OAAAA,C,EA4byB1gB,EAAU4gV,GAGnClgU,OAFPn7E,EAAEuqY,KAAF,CAAQ9vU,GACRq1xB,AA/hBJ,SAA2B/0c,CAA3B,EAGUG,IAAAA,EAAiBC,AADA,EACiB2zc,EAClC1zc,EAAcF,EAlNT,EAoNXl7Y,EAAEuqY,KAAF,CAAQvqY,EAAEhhC,QAAF,CAAW+7a,EAJI,EAIyB,QAG3C8oc,IAAAA,IADC5oc,EAAWj7Y,EAAEhhC,QAAF,CAAW+7a,EAAaG,EAAgB,OAChD1yY,EAAI,EAAGA,EAAIyyY,EAAUzyY,IAC1BxI,EAAEuqY,KAAF,CAAQvqY,EAAEhhC,QAAF,CAAW+7a,EAAaK,EAAc0zc,EAActm1B,EAAG,QAEnExI,EAAEuqY,KAAF,CAAQwQ,E,EAmhBUA,GACX5/T,C,CA6hBJ,SAASy0wB,EAAW3re,CAApB,EACKA,OAAAA,EAAMl5Y,KAAKy4G,EAAZ,CAAkB,G,CApwCA4qwB,EAAGx8c,sBAAH,GACVw8c,EAAGv8c,aAAH,E,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,O,C,E,O,C,c,C,K,E,I,E,E,E,S,E,E,S,E,E,SEvCnB,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,E,E,SAGA,EAAA,EAAA,EAAA,U,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,E,O,I,C,G,G,O,qB,C,C,I,E,O,qB,C,G,G,C,E,E,M,C,S,C,E,O,O,wB,C,E,G,U,A,E,E,E,I,C,K,C,E,E,C,O,C,C,S,E,C,E,O,A,S,C,E,G,M,O,C,G,O,E,E,E,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,E,I,E,I,A,W,M,A,U,uI,G,C,S,E,C,C,C,E,O,A,S,C,E,G,M,O,C,G,O,C,E,I,A,S,C,C,C,E,G,A,a,O,Q,O,Q,I,O,I,I,E,E,C,E,C,E,E,C,E,E,K,E,G,C,I,I,E,E,C,C,O,Q,C,G,C,C,E,A,C,E,E,I,E,E,I,A,I,E,I,C,E,K,E,C,G,E,M,G,G,E,C,G,C,M,E,C,E,C,E,E,C,Q,C,G,C,G,A,M,E,M,E,E,M,E,Q,C,G,E,M,C,C,C,O,E,E,E,I,E,E,I,A,W,M,A,U,4I,G,C,S,E,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,CAEO,IAAM3uR,EAAiB,CAC5BpnE,KAAM,KACN8sE,UAAW,YACXC,QAAS,SAHmB,C,C,E,O,C,c,C,EAM9B,IAAM8suB,EAAQ,CAAA,AAAA,EAAA,EAAA,CAAA,EACXzyuB,EAAe0F,SADJ,CACgB/D,EAAAA,iBAAAA,EADhB,EAAA,EAEX3B,EAAe2F,OAFJ,CAEcpJ,EAAAA,eAAAA,EAFd,CAAA,EAKRm2uB,EAAe,EAAA,CAAA,EAClB1yuB,EAAe0F,SADG,CACS,CAAEm0P,WAAY,CAAA,CAAd,GASxBjtZ,EAAoC,CACxCk7J,cAAe9H,EAAe0F,SADU,CAExC4B,SAAU,EAF8B,CAGxC4yR,SAAU,WAAQ,CAHsB,EAMpCy4c,EAAa,CACjB7l4B,KAAM,oBACN2iJ,SAAU,EAAVA,AAFiB,EAObojvB,EAAmB,oBAEnBC,EAAqB,CACzB,iBACA,qBACA,qBACA,iBACA,mBACA,iBACA,iBACA,mBACA,uBACA,uBACA,oBACA,eACA,eACA,YACA,eACA,mBACA,4BACA,wBACA,wBACA,wBApBF,CAsBqBhyuB,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,0BAOK1iC,MAAAA,SAAAA,C,EAAkB,IAAA,EACT,IAAA,CAAKrxH,KADI,CAChCu6J,EADgC,EAChCA,QADgC,CACtB4yR,EADsB,EACtBA,QADsB,CAAA,EAAA,EAGvB,IAAA,CAAKvpb,OAAL,CAAawgI,QAAb,CAAsB96B,OAAtB,CAA8B+nB,CAAW,CAAC,EAAZ,CAAe,EAA7C,EAHuB,GAGjC4oC,EAHiC,CAAA,CAAA,EAAA,CAG7BC,EAH6B,CAAA,CAAA,EAAA,CAAA,EAAA,EAKvB,IAAA,CAAKt2J,OAAL,CAAawgI,QAAb,CAAsB96B,OAAtB,CAA8B+nB,CAAW,CAAC,EAAZ,CAAe,EAA7C,EALuB,GAKjC+oC,EALiC,CAAA,CAAA,EAAA,CAK7BC,EAL6B,CAAA,CAAA,EAAA,CAexC8yR,EAAS,CAAE5zR,aARU,IAAA,CAAK31J,OAAL,CAAagka,IAAb,CAAkBttQ,WAAlB,CAA8B,CACjDvsI,EAAGjT,KAAKsvB,GAAL,CAAS6vH,EAAIG,GAChBplI,EAAGla,KAAKsvB,GAAL,CAAS8vH,EAAIG,GAChBj1I,MAAOtK,KAAKw+C,GAAL,CAAS8gG,EAAKH,GACrB50I,OAAQvK,KAAKw+C,GAAL,CAAS+gG,EAAKH,GACtBK,SAAAA,CALiD,EAQ1C,EACV,C,E,C,I,wBAEqBlpC,MAAAA,SAAAA,C,EAAkB,IAgBlCmqC,EAhBkC,EAAA,IAAA,CAAA,EACP,IAAA,CAAKx7J,KADE,CAC9Bu6J,EAD8B,EAC9BA,QAD8B,CACpB4yR,EADoB,EACpBA,QADoB,CAGhCh0R,EAAc9nC,CAAW,CAAC,EAAZ,CAAe9qH,GAAf,CAAmB,SAAC/G,CA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CAE3Bzd,EAAOp4I,IAAP,CAEE,IAAIsn2B,EAAAA,OAAAA,CAEF,IAAA,CAAK9ssB,gBAAL,CAAsB,CACpBriK,GAAIgo4B,EACJ3puB,SAAU,CAAA,EACVQ,QAAS,CAAA,EACT9oJ,QAAS,EACT2P,KAAM,CAACg4I,EALa,CAMpBgB,aAAc,SAAC93G,CAAD,EAAA,MAAS,CAAC,EAAG,EAAG,EAAG,EAAnB,AAAA,EACd+3G,aAAc,SAAC/3G,CAAD,EAAA,MAAS,CAAC,EAAG,EAAG,EAAG,EAAnB,AAAA,EACdg4G,WAAY,SAACvnF,CAAD,EAAA,OAAOA,EAAE8gC,QAAF,CAAWob,WAAlB,AAAA,CARQ,IAY3B,CAED,OAAO0sB,CACR,C,E,C,I,oBAE6F,MAAA,SAAA,CAAA,EAAA,IAAA,EAAA,EAA1EwgB,WAA0E,CAA3DkK,EAA2D,EAA3DA,YAA2D,CAA7CqC,EAA6C,EAA7CA,kBAA6C,CAC5F,OAAOrC,GAAgBqC,CACxB,C,E,C,E,A,E,S,C,G,G,E,E,G,CAvIOoisB,EAAAA,EAAAA,OAAAA,C,C,E,O,C,O,C,EAHWn5sB,EAAAA,E,YAIA,kBAJAA,EAAAA,E,eAKGl0J,E,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,O,C,K,E,I,E,E,S,E,E,S,E,E,S,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,CEpEHm0J,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,eAGJ,MAAA,WAoBb,MAAO,CAnBS,IAAI0huB,EAAAA,OAAAA,CAClB353B,OAAO0H,MAAP,CAAc,CAAA,EAAI,IAAA,CAAKzD,KAAvB,CAA8B,CAC5BlC,GAAE,GAAA,MAAA,CAAK,IAAA,CAAKkC,KAAL,CAAWlC,EAAhB,CAAA,qBACF0lB,KAAM,IAAA,CAAKxjB,KAAL,CAAWwjB,IAAjBA,AAF4B,IAMlB,IAAIwi3B,EAAAA,OAAAA,CAChBjq4B,OAAO0H,MAAP,CAAc,CAAA,EAAI,IAAA,CAAKzD,KAAvB,CAA8B,CAC5BlC,GAAE,GAAA,MAAA,CAAK,IAAA,CAAKkC,KAAL,CAAWlC,EAAhB,CAAA,cACF0lB,KAAM,IAAA,CAAKxjB,KAAL,CAAWwjB,IAFW,CAG5B24I,SAAU,CAAA,EACV4yR,kBAAmB,SAAnBA,CAAAA,EAAmB,IAAG7/W,EAAH,EAAGA,QAAH,CAAA,MAAkB,CAACA,CAAQ,CAAC,EAAV,CAAcA,CAAQ,CAAC,EAAvB,CAA2B,EAA7C,AAAA,EACnB8/W,kBAAmB,SAAnBA,CAAAA,EAAmB,IAAG9/W,EAAH,EAAGA,QAAH,CAAA,MAAkB,CAACA,CAAQ,CAAC,EAAV,CAAcA,CAAQ,CAAC,EAAvB,CAA2BA,CAAQ,CAAC,EAAT,EAAe,EAA5D,AAAA,EACnB6xF,SAAU,CAAC,IAAK,IAAK,IAAK,IANE,CAO5BkuR,eAAgB,CAPY,IAWhC,AACD,C,E,C,E,A,E,S,C,G,G,E,E,G,CAxBkDi+a,EAAAA,EAAAA,OAAAA,C,C,E,O,C,O,C,EAAhCl5sB,EAAAA,E,YACA,2BADAA,EAAAA,E,eAFA,CAAA,E,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SEqCrB,IAAMn0J,EAA6C,CACjDkvb,kBAAmB,CAAChvb,KAAM,WAAY9C,MAAO8wB,AAAAA,GAAKA,EAAEuha,cAAdryb,AAAnB,EACnB+xb,kBAAmB,CAACjvb,KAAM,WAAY9C,MAAO8wB,AAAAA,GAAKA,EAAEwha,cAAdtyb,AAAnB,EACnB8jK,SAAU,CAAChhK,KAAM,WAAY9C,MALyB,CAAC,EAAG,EAAG,EAAG,IAAlE,AAKY,EACV6jK,SAAU,CAAC/gK,KAAM,WAAY9C,MAAO,CAA1B,EAEVqjK,WAAY,SACZC,WAAY,CAACxgK,KAAM,SAAU9C,MAAO,EAAGmtC,IAAK,CAAhC,EACZo2H,eAAgB,CAACzgK,KAAM,SAAU9C,MAAO,EAAGmtC,IAAK,CAAhC,EAChBq2H,eAAgB,CAAC1gK,KAAM,SAAU9C,MAAO6lE,OAAOi7F,gBAA/B,CAAiD3zH,IAAK,CAAtD,CATiC,CAsEpC,OAAM471B,UAA2Dz4B,EAAAA,OAAAA,CAM9E/isB,WAAyC,CAAA,IAAA,EACvC,OAAA,AAAA,OAAA,CAAA,EAAO,IAAA,CAAKnB,mBAAL,EAAA,GAAP,AAAA,KAAA,IAAA,EAAA,KAAA,EAAO,EAA4BmB,SAA5B,CAAsC,CAC3C,0BACA,0BAFK,CAIR,CAEDE,YAAa,CACX,OAAO,KAAA,CAAMA,WAAW,CAACo4C,GAAAA,EAAAA,OAAAA,CAAIF,GAAAA,EAAAA,OAAAA,CAAI3mB,QAAS,CAAC+xrB,EAAAA,OAAAA,CAAW/1mB,EAAAA,OAAAA,CAArBh8E,AAAT,EACzB,CAGgB,IAAb54B,eAAyB,CAC3B,MAAO,CAAA,CACR,CAEDhF,iBAAkB,CAChB,IAAMiL,EAAmB,IAAA,CAAKD,mBAAL,GAGzBC,EAAiB2F,YAAjB,CAA8B,CAC5BugR,wBAAyB,CACvBnmZ,KAAM,EACNtpC,KAAI,KACJm8J,KAAM,IAAA,CAAKsN,iBAAL,GACNljK,WAAY,CAAA,EACZo8J,SAAU,mBALa,EAOzB+sR,wBAAyB,CACvBpmZ,KAAM,EACNtpC,KAAI,KACJm8J,KAAM,IAAA,CAAKsN,iBAAL,GACNljK,WAAY,CAAA,EACZo8J,SAAU,mBALa,EAOzB+pH,eAAgB,CACdpjP,KAAM,IAAA,CAAKrpC,KAAL,CAAW4nK,WAAX,CAAuB5iK,MADf,CAEdjF,KAAI,KACJsgL,WAAY,CAAA,EACZ/5K,WAAY,CAAA,EACZo8J,SAAU,WACVjzJ,aAAc,CAAC,EAAG,EAAG,EAAG,IAAxBA,AANc,EAQhBigb,eAAgB,CACdrmZ,KAAM,EACN/iC,WAAY,CAAA,EACZo8J,SAAU,WACVjzJ,aAAc,CAJA,CAvBY,EA+B/B,CAED6uJ,YAAY1kH,CAAD,CAAuC,CAGhD,GAFA,KAAA,CAAM0kH,YAAY1kH,GAEdA,EAAO2kH,WAAP,CAAmBmR,iBAAvB,CAA0C,CAAA,IAAA,EACxC,GAAM,CAAA,GAACzrC,CAAAA,CAAD,CAAO,IAAA,CAAKrgI,OAAlB,AACA,AAAA,QAAA,CAAA,EAAA,IAAA,CAAKmyB,KAAL,CAAWkzI,KAAAA,AAAAA,GAAX,AAAA,KAAA,IAAA,GAAA,EAAkB5rJ,MAAlB,GACA,IAAA,CAAK0Y,KAAL,CAAWkzI,KAAX,CAAmB,IAAA,CAAK4jH,SAAL,CAAe5oJ,GAClC,IAAA,CAAKolC,mBAAL,GAA4B0B,aAA5B,EACD,CACF,CAEDc,KAAK,CAAA,SAAC0E,CAAAA,CAAF,CAAmB,CACrB,GAAM,CAAA,WAACjQ,CAAD,CAAA,WAAaC,CAAb,CAAA,eAAyBC,CAAzB,CAAA,eAAyCC,CAAzC,CAAA,cAAyD4C,CAAAA,CAAzD,CAA0E,IAAA,CAAKrjK,KAArF,CAEA,IAAA,CAAK+1B,KAAL,CAAWkzI,KAAX,CACG0lD,WADH,CACep+C,GACZo+C,WAFH,CAEe,CACXruD,WAAYu5G,AAAAA,EAAAA,IAAAA,AAAI,CAACv5G,EADN,CAEXC,WAAAA,EACAC,eAAAA,EACAC,eAAAA,EACAkvR,gBAAiBtsR,EAAgB,EAAI,CAL1B,GAOZwI,IATH,GAWIxI,GAEF,IAAA,CAAKttI,KAAL,CAAWkzI,KAAX,CACG0lD,WADH,CACe,CACXghO,gBAAiB,EADN,GAGZ9jR,IAJH,EAMH,CAESghH,UAAU5oJ,CAAD,CAAmC,CAUpD,OAAO,IAAI21uB,EAAAA,OAAAA,CAAM31uB,EAAI,AAAA,CAAA,EAAA,EAAA,CAAA,AAAA,EAAA,AAAA,CAAA,EAAA,EAAA,CAAA,AAAA,EAAA,CAAA,EAChB,IAAA,CAAKymC,UAAL,IADL,CAEE5sK,GAAI,IAAA,CAAKkC,KAAL,CAAWlC,EAFI,CAGnBm4G,SAAU,IAAIg4wB,EAAAA,OAAAA,CAAS,CACrBlrqB,SAAQ,EACRz3C,WAAY,CACV7L,UAAW,IAAIsgB,aARH,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAtD,CAOgB,CAFS,GAMvBoC,YAAa,CAAA,C,GAEhB,CAjHD,CAFmB6jtB,AAAAA,CAAAA,EAAAA,EAAAA,OAAAA,AAAAA,EAAAA,E,YAGA,aAHAA,AAAAA,CAAAA,EAAAA,EAAAA,OAAAA,AAAAA,EAAAA,E,eAIGnm4B,E,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GEhGxB,IAAA,EAAA,knG,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GEAA,IAAA,EAAA,iP,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,O,C,K,E,I,E,E,SElBA,EAAA,EAAA,EAAA,U,E,E,S,E,E,SAEA,EAAA,EAAA,EAAA,U,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,M,C,E,A,a,O,S,Q,G,C,Q,G,C,S,C,C,C,C,C,E,I,E,A,S,C,C,C,E,K,C,O,S,C,c,C,I,C,E,I,A,O,C,E,E,E,I,O,C,E,E,G,G,G,I,E,O,wB,C,E,U,A,E,G,C,E,G,C,I,C,G,E,K,C,G,E,E,G,E,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,CAIA,SAASom4B,EAAT,CAAA,EAAiD,IAArB7o4B,EAAqB,EAArBA,MAAqB,CAAA,EAAA,EAAbgB,IAAa,CAE/C,OAAOhB,EAAOmI,OAAP,CADa,WACenH,AAFY,CAAA,AAAA,KAAA,IAAA,EAAN,GAAM,CAAA,EAEPyuB,MAAL,CAAY,SAChD,CAqBoBonI,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,aAQN,MAAA,WACX,IAAM0W,EAAO,EAAA,EAAA,EAAA,SAAA,EAAA,aAAA,IAAA,EAAA,IAAA,CAAA,IAAA,EACb,OAAO5uK,OAAO0H,MAAP,CAAc,CAAA,EAAIknK,EAAS,CAChCsxB,QAAStxB,EAAQsxB,OAAR,CAAgBpvK,MAAhB,CAAuB,CAACyyV,EAAAA,OAAD,CAAvB,EACTx8J,GAAImjrB,EAAiB,CAAE7o4B,OAAQutK,EAAQm4C,EAAlB,CAAsB1kN,KA/BpC,uEA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BAAT,CAA8B1kB,CADhC,EAGO/gR,CACR,CAuEc,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,O,C,K,E,I,E,E,S,E,E,S,E,E,S,E,E,SEzFf,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UAEA,EAAA,EAAA,EAAA,U,E,E,S,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,O,A,S,C,E,G,M,O,C,G,O,C,E,I,A,S,C,C,C,E,G,A,a,O,Q,O,Q,I,O,I,I,E,E,C,E,C,E,E,C,E,E,K,E,G,C,I,I,E,E,C,C,O,Q,C,G,C,C,E,A,C,E,E,I,E,E,I,A,I,E,I,C,E,K,E,C,G,E,M,G,G,E,C,G,C,M,E,C,E,C,E,E,C,Q,C,G,C,G,A,M,E,M,E,E,M,E,Q,C,G,E,M,C,C,C,O,E,E,E,I,A,S,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,E,E,I,A,W,M,A,U,4I,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,CAQA,IAAMm2tB,EAAuBC,EAA7B,OAAA,CAeMC,EAA6B,CACjCxvb,KAAM,IAAI6F,EAAAA,OAAJ,CAAoB,CAAE5F,SApBN,GAoBiCC,UAnBhC,GAmBG,EADO,EAI7Bz3c,EAA0C9D,OAAO0H,MAAP,CAAc,CAAA,EAAIwwJ,EAAAA,OAAAA,CAAiBp0J,YAAnC,CAAiD,CAC/F23c,YAAakvb,EACbjvb,iBAAkBmvb,EAElB3hiB,UAAW,IACX/oM,KAAM,CAAA,EAENw7S,eAAgB,GAChBC,eAAgB,KAEhBt+Y,QAAS,SAACtrC,CAAD,EAAA,OAAOA,EAAEkqB,IAAT,AAAA,EACT8oH,SAAU,SAAChzI,CAAD,EAAA,OAAOA,EAAE1G,KAAT,AAAA,EACVuwb,eAAgB,SAAC7pb,CAAD,EAAA,MAAO,CAAC,EAAG,EAAG,EAAG,IAAjB,AAAA,EAChB8pb,aAAc,SAAC9pb,CAAD,EAAA,OAAOA,EAAEwnC,SAAT,AAAA,EACduiZ,qBAAsB,SAACvxZ,CAAD,CAAtBuxZ,CAAAA,EAAsB,OACpBnjF,AADoB,EAAWA,UAAX,CAtCU,GAuCW,CAAC,IAAM,GAAK,IAArD,CAA6D,CAAC,GAD1C,AAAA,CAdyE,GAkB5EzgO,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,kBAID,MAAA,WAChB,IAAA,CAAKn+H,KAAL,CAAa,CACXqib,QAAS,EADE,CAEXhB,KAAM,IAAI6F,EAAAA,OAAJ,CAAoB,CAAE5F,SAhDV,GAgDqCC,UA/CpC,GA+CO,GAC1Br2J,aAAc,IAHH,CAKd,C,E,C,I,cAEWl5I,MAAAA,SAAAA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E,CACpB88B,EAAIoqF,CAAS,CAAClnH,EAAI,EAAE,CAE1BwqG,EAAOh1H,EAAIg1H,EAAOh1H,EAAIg1H,EACtBC,EAAOhuH,EAAIguH,EAAOhuH,EAAIguH,EACtBw+H,EAAOnsM,EAAImsM,EAAOnsM,EAAImsM,EAEtBv+H,EAAOl1H,EAAIk1H,EAAOl1H,EAAIk1H,EACtBC,EAAOluH,EAAIkuH,EAAOluH,EAAIkuH,EACtBu+H,EAAOpsM,EAAIosM,EAAOpsM,EAAIosM,CACxB,CACA,MAAO,CACL,CAAC1+H,EAAMC,EAAMw+H,EAAK,CAClB,CAACv+H,EAAMC,EAAMu+H,EAAK,CACnB,AACH,C,G,E,Q,S,C,C,C,E,a,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,O,C,K,EE7DqBw7L,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,EACnB,SAAA,IAAuB,IAAXvyZ,EAAW,UAAA,MAAA,CAAA,GAAA,AAAA,KAAA,IAAA,SAAA,CAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAJ,CAAA,EAAI,OAAA,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,EAAA,IAAA,CAAA,GAAA,EAAA,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a,EAAR,CAAWyjG,QAAX,CAAoBmiU,CAAO,CAAC5la,EAAI,EAAhC,EAEhB,OAAOo8U,CACR,EAwBoCwpF,GAI3BI,EAAczG,EAAqBvxZ,EAAQ,CAAEouU,WAAAA,CAAF,GAbxB,EAAA,EAgBA4pF,GAhBA,GAAA,CAgBzB,IAAA,EAAA,CAAA,GAAA,CAAA,AAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,IAAA,EAAsC,CAAA,IAA3BxuW,EAA2B,EAAA,KAAA,CACpC,GAAIx6C,EAAU6kR,OAAd,CAAuB,CACrB,IAAM53Q,EAASil0B,EAAsB,CACnCxv1B,KAAMkma,EACNpuW,WAAAA,EACA4kR,WAAAA,EACAttW,MAAAA,EACAk/B,OAAAA,EACAkyL,YAAAA,CANmC,GAQrC2/N,EAAQzyc,IAAR,CAAa68D,EACd,CAED,GAAIjN,EAAUkpZ,QAAd,CAAwB,CACtB,IAAMj8Y,EAASil0B,EAAsB,CACnCxv1B,KAAMoma,EACNtuW,WAAAA,EACA4kR,WAAAA,EACAttW,MAAAA,EACAk/B,OAAAA,EACAkyL,YAAAA,CANmC,GAQrC2/N,EAAQzyc,IAAR,CAAa68D,EACd,CACF,CAxCwB,CAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAyC1B,CA5CA,CAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CA8CD,OAAO41Y,CACR,E,E,S,I,E,E,S,S,E,C,E,G,A,a,O,Q,A,M,C,C,O,Q,C,C,C,G,M,O,C,I,C,E,A,S,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,E,E,E,C,I,E,E,E,W,E,M,C,E,E,E,kB,A,G,E,M,C,C,K,C,C,E,C,K,C,E,M,C,C,I,A,C,E,E,S,C,E,M,C,E,E,C,C,C,M,A,U,wI,C,I,E,E,E,C,E,E,C,E,M,C,E,W,E,C,C,O,Q,C,E,E,E,W,I,E,E,I,G,O,E,E,I,C,C,E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Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,E,O,I,C,G,G,O,qB,C,C,I,E,O,qB,C,G,G,C,E,E,M,C,S,C,E,O,O,wB,C,E,G,U,A,E,E,E,I,C,K,C,E,E,C,O,C,C,S,E,C,E,I,I,E,E,E,U,M,C,I,C,I,E,A,M,S,C,E,C,S,C,E,C,C,C,C,E,E,E,O,G,C,G,O,C,S,C,E,E,E,E,C,C,E,C,G,O,yB,C,O,gB,C,E,O,yB,C,I,E,O,I,O,C,S,C,E,O,c,C,E,E,O,wB,C,E,G,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,CEFoByL,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,A,S,C,E,G,A,K,I,E,M,A,e,6D,O,C,E,I,C,E,S,I,O,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,E,I,C,G,E,K,C,I,C,U,C,O,E,C,C,I,eAYJ,MAAA,WAAA,IAAA,EACgE,IAAA,CAAKv8V,KADrE,CACLlC,EADK,EACLA,EADK,CACD2+J,EADC,EACDA,YADC,CACaggM,EADb,EACaA,cADb,CAC6BI,EAD7B,EAC6BA,cAD7B,CAC6Ch9L,EAD7C,EAC6CA,cAD7C,CAIb,MAAO,CAEL,IAAI61tB,EAAAA,OAAAA,CAAJ,EAAA,CAAA,EACK,IAAA,CAAK113B,KADV,CAAA,CAEElC,GAAE,GAAA,MAAA,CAAKA,EAAL,SACF0lB,KAAM,IAAA,CAAKxjB,KAAL,CAAWwjB,IAHnB,CAIEg5I,aAAcigM,EACd58L,eAAc,EAAA,CAAA,EACTA,EADLA,CAEE48L,eAAgB58L,EAAe48L,cAA/BA,AAFY,EALhB,IAUA,IAAIi5hB,EAAAA,OAAAA,CAAJ,EAAA,CAAA,EACK,IAAA,CAAK113B,KADV,CAAA,CAEElC,GAAE,GAAA,MAAA,CAAKA,EAAL,UACF0lB,KAAM,IAAA,CAAKxjB,KAAL,CAAWwjB,IAHnB,CAIEi5I,aAAAA,EACAkgM,UAAWE,EACX1gM,SAAU,CAAA,EACV0D,eAAc,EAAA,CAAA,EACTA,EADLA,CAEEpD,aAAcoD,EAAepD,YAFjB,CAGZkgM,UAAW98L,EAAeg9L,cAA1BF,AAHY,EAPhB,IAZF,AA0BD,C,E,C,E,A,E,S,C,G,G,E,E,G,CA1CmDuwgB,EAAAA,EAAAA,OAAAA,C,C,E,O,C,O,C,EAAjC3wgB,EAAAA,E,YAIA,4BAJAA,EAAAA,E,e,E,C,EAMdm5hB,EAAAA,OAAAA,CAAiB713B,Y,CANH08V,CAOjB9/L,aAAc,SAAC98J,CAAD,EAAA,MAAO,CAAC,EAAG,EAAG,EAAG,IAAjB,AAAA,EACd88V,eAAgB,SAAC98V,CAAD,EAAA,MAAO,CAAC,IAAK,IAAK,IAAK,IAAvB,AAAA,EAChBk9V,eAAgB,SAACl9V,CAAD,EAAA,OAAO,CAAP,C,G,G,E,Q,S,C,C,C,E,a,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,W,CEnBb,SACL0nB,CADK,EAG6B,IADlC+0U,EACkC,UAAA,MAAA,CAAA,GAAA,AAAA,KAAA,IAAA,SAAA,CAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CADe,CAAC,IAAK,EAAG,EAAG,IAC3B,QAClC,AAAK53V,MAAMC,OAAN,CAAc4iB,GAGZ,CAACA,AAAW,IAAXA,CAAK,CAAC,EAAN,CAAgBA,AAAW,IAAXA,CAAK,CAAC,EAAN,CAAgBA,AAAW,IAAXA,CAAK,CAAC,EAAN,CAAgBA,AAAW,IAAXA,CAAK,CAAC,EAAN,CAAxD,CAFS+0U,CAGV,E,E,O,C,+B,CA2BM,SAASs2B,EACdjrU,CADK,CAEL/J,CAFK,CAGLiB,CAHK,EAKL,GAAI,CAACn6C,MAAMC,OAAN,CAAcgjD,CAAK,CAAC,EAApB,EACH,MAAO,CAAA,EAET,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMziD,MAA1B,CAAkCuzC,IAChC,GAAIm6U,EAAgCjrU,CAAK,CAAClP,EAAP,CAAA,EAAA,CAAA,MAAA,C,A,S,C,E,G,M,O,C,G,O,E,E,EAAemF,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,EAAAA,I,A,S,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,EAAAA,I,A,W,M,A,U,uI,IAAf,CAAuBnF,EAAvB,EAA2BoG,GAAK,CACjEA,EAAG8I,EAAO/J,GACV,KACD,CAEH,MAAO,CAAA,CACR,C,G,E,Q,S,C,C,C,E,a,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,C,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,O,C,K,EElDoB8ja,IAAAA,EAAAA,e,E,EAQnB,SAAA,EAAYv9R,CAAZ,CAAoCw9R,CAApC,EAAqE,A,C,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,C,EAAA,IAAA,CAAA,GAAA,EAAA,IAAA,CAAA,UAAA,KAAA,GAAA,EAAA,IAAA,CAAA,YAAA,KAAA,GAAA,EAAA,IAAA,CAAA,gBAAA,KAAA,GAAA,EAAA,IAAA,CAAA,gBAAA,KAAA,GAAA,EAAA,IAAA,CAAA,WAAA,KAAA,GAAA,EAAA,IAAA,CAAA,WAAA,KAAA,GACnE,IAAA,CAAKjoT,OAAL,CAAe,EAAf,CACA,IAAA,CAAKG,SAAL,CAAiB,EAAjB,CACA,IAAA,CAAK2iM,aAAL,CAAqB,EAErB,IAAA,CAAKqlH,aAAL,CAAqB,IAAI3kc,IACzB,IAAA,CAAK4kc,QAAL,CAAgB39R,EAChB,IAAA,CAAK49R,QAAL,CAAgBJ,CACjB,C,O,E,C,C,I,uBAEsB,MAAA,WAAA,IAAA,EAAA,IAAA,AAChB,CAAA,IAAA,CAAKG,QAAN,EAAmB,IAAA,CAAKC,QAA5B,GAEA,IAAA,CAAKloT,SAAL,CAAe30J,MAAf,CAAwB,EACxB,IAAA,CAAKw0J,OAAL,CAAax0J,MAAb,CAAsB,EACtB,IAAA,CAAK28c,aAAL,CAAmB7pX,KAAnB,GAEA,IAAA,CAAK8pX,QAAL,GAAgBtkd,OAAhB,CAAwB,SAACqC,CAAD,EACtB,EAAKgid,aAAL,CAAmBzld,GAAnB,CAAwByD,EAAU7B,EAAlC,CAAsC,EAAK07J,OAAL,CAAax0J,MAAnD,EACA,EAAK20J,SAAL,CAAeh0J,IAAf,CAAoBhG,GACpB,EAAK65J,OAAL,CAAa7zJ,IAAb,CAAkB,EAAKk8c,QAAL,CAAclid,GACjC,GAED,IAAA,CAAKmid,aAAL,GACD,C,E,C,I,yBAEsB74W,MAAAA,SAAAA,C,EAAe,IAAA,EAAA,IAAA,AAC/B,CAAA,IAAA,CAAK24W,QAAN,EAAmB,IAAA,CAAKC,QAA5B,GAEA54W,EAAI3rG,OAAJ,CAAY,SAACQ,CAAD,EACV,IAAMs6D,EAAI,EAAKupZ,aAAL,CAAmB1ld,GAAnB,CAAuB6B,EACvBmgD,MAAAA,IAANma,GACF,CAAA,EAAKohG,OAAL,CAAaphG,EAAb,CAAkB,EAAKypZ,QAAL,CAAc,EAAKloT,SAAL,CAAevhG,EAA7B,CAAA,CAErB,GAED,IAAA,CAAK0pZ,aAAL,GACD,C,E,C,I,gBAEe,MAAA,WACd,IAAA,CAAKxlH,aAAL,EACD,C,E,C,I,oBAEiBx+V,MAAAA,SAAAA,C,EAChB,IAAMs6D,EAAI,IAAA,CAAKupZ,aAAL,CAAmB1ld,GAAnB,CAAuB6B,GACjC,OAAOs6D,AAAMna,KAAAA,IAANma,EAAkB,IAAA,CAAKohG,OAAL,CAAaphG,EAA/B,CAAoC,IAC5C,C,E,C,I,kBAEet6D,MAAAA,SAAAA,C,EACd,IAAMs6D,EAAI,IAAA,CAAKupZ,aAAL,CAAmB1ld,GAAnB,CAAuB6B,GACjC,OAAOs6D,AAAMna,KAAAA,IAANma,EAAkB,IAAA,CAAKuhG,SAAL,CAAevhG,EAAjC,CAAsC,IAC9C,C,E,C,E,A,E,S,C,G,G,E,E,G,C,G,C,E,O,C,O,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,O,C,K,E,I,E,E,SEzDH,EAAA,EAAA,EAAA,U,E,E,S,E,E,SAGA,EAAA,EAAA,EAAA,U,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,G,A,K,I,E,M,A,e,6D,O,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,CAEqBqqZ,IAAAA,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,E,I,C,EAGnB,SAAA,EAAYpjW,CAAZ,MAAyC,E,E,E,EAAA,OAAA,A,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,EAAA,IAAA,CAAA,G,EAAA,EACvC,EAAA,EAAA,IAAA,CAAA,IAAA,CAAMA,I,EADiC,KAAA,E,C,EAAA,e,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,EAEvC,EAAKq6C,SAAL,CAAiB,IAAI8nT,EAAAA,OAAJ,CAAcniW,EAAO4kE,OAArB,CAA8B,SAACzgK,CAAD,EAAA,OAAU67F,EAAOo4O,eAAP,CAAuBj0U,EAAjC,GAFR,CAGxC,C,O,E,C,C,I,SAEuC,MAAA,SAAA,CAAA,EAAA,IAA/Bu1I,EAA+B,EAA/BA,MAA+B,CAChCqjM,EAAe,CAAC,EAAK,EAAK,EAAK,IAArC,CADsC,EAEH,IAAA,CAAK1iM,SAFF,CAE9BF,EAF8B,EAE9BA,OAF8B,CAErB8iM,EAFqB,EAErBA,aAFqB,CAI9BnoV,EAAS4kJ,EAAO/4J,KAAP,CAAaokI,QAJQ,CAI9BjwH,IAJ8B,CAMtC,OAAO,IAAIwh3B,EAAAA,OAAAA,CAAU,CACnB733B,GAAE,SAAA,MAAA,CAAW,IAAA,CAAKA,EAAhB,EACF0lB,KAAMg2I,EACN3lJ,QAAS,EACTqoJ,KAAM,CAAA,EACNC,SAAU,CAAA,EAGV4qM,QAAS,SAAClkH,CAAD,EAAA,OAAQA,EAAG9tO,KAAH,CAASgT,IAAjB,AAAA,EAETy0U,YAAa,SAAC35G,CAAD,EAAA,OAAQA,EAAGkzG,OAAH,CAAW9/O,QAAX,CAAoBob,WAA5B,AAAA,EAEb0vC,SAAU,SAAC8hF,CAAD,EAAA,MAAQ,AAAA,CAAA,EAAA,EAAA,WAAA,AAAA,EAAYA,EAAG9tO,KAAH,CAASwhJ,SAArB,GAAmC6lM,CAA3C,EAGV6I,UAAW,EAAInqV,KAAK8lH,GAAL,CAAS,EAAG,GAAKzsH,GAChCgxV,QAASzxM,EAATyxM,+BAAAA,CAEAtlM,eAAgB,CAAE5iD,IAAKq/O,CAAP,EAEhBjjM,YAAa,IAAbA,AApBmB,EAsBtB,C,E,C,E,A,E,S,C,G,G,E,E,G,CApCqC89L,EAAAA,EAAAA,O,C,C,E,O,C,O,C,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,+B,C,K,E,E,O,C,+B,CEFO,EAAI,C,G,E,Q,S,C,C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,O,C,K,E,I,E,E,E,SEJnD,EAAA,EAAA,EAAA,U,E,E,SAGA,EAAA,EAAA,EAAA,U,E,E,SAEA,EAAA,EAAA,EAAA,U,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,M,C,E,A,Y,O,Q,A,U,O,O,Q,C,S,C,E,O,O,C,E,S,C,E,O,G,A,Y,O,Q,E,W,G,Q,I,O,S,C,S,O,C,G,E,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,E,G,A,K,I,E,M,A,e,6D,O,C,C,S,E,C,E,M,A,C,E,O,c,C,O,c,C,S,C,E,O,E,S,E,O,c,C,E,C,E,E,C,S,E,C,C,C,E,M,A,C,E,O,c,E,S,C,C,C,E,O,E,S,C,E,C,C,E,E,E,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,CAEA,IAAMuwiB,EAAyB,CAAA,AAAA,EAAA,EAAA,CAAA,EAC5B70uB,EAAAA,WAAAA,CAAYhnE,IADgB,CACT,CAAEuuP,QAAS,CAAA,EAAOqkI,SAAU,CAAA,CAA5B,GADS,EAAA,EAE5B5rT,EAAAA,WAAAA,CAAYmD,OAFgB,CAEN,CAAEokL,QAAS,CAAA,EAAMqkI,SAAU,CAAA,CAA3B,GAFM,EAAA,EAG5B5rT,EAAAA,WAAAA,CAAYoD,QAHgB,CAGL,CAAEmkL,QAAS,CAAA,EAAOqkI,SAAU,CAAA,CAA5B,GAHK,EAAA,EAI5B5rT,EAAAA,WAAAA,CAAYqD,IAJgB,CAIT,CAAEkkL,QAAS,CAAA,EAAMqkI,SAAU,CAAA,CAA3B,GAJS,CAAA,EAOViF,EAAAA,SAAAA,CAAAA,G,A,S,C,C,C,E,G,A,Y,O,G,A,O,E,M,A,U,qD,C,E,S,C,O,M,C,G,E,S,C,C,Y,C,M,E,S,C,E,a,C,C,C,G,G,E,E,E,E,E,G,I,E,E,E,W,I,E,E,E,E,G,G,A,W,G,a,O,S,C,Q,S,E,Q,S,C,I,C,M,C,E,G,A,Y,O,M,M,C,E,G,C,O,K,S,C,Q,C,I,C,Q,S,C,K,E,C,W,I,C,C,C,M,E,C,M,C,C,C,I,C,I,E,E,I,E,W,C,E,Q,S,C,E,U,E,M,E,E,K,C,I,C,W,M,A,C,E,I,C,A,W,E,I,A,Y,O,C,E,E,E,I,C,EAUnB,SAAA,EAAYrkW,CAAZ,EAAyC,A,C,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,C,EAAA,IAAA,CAAA,GAAA,EAAA,EACvC,EAAA,EAAA,IAAA,CAAA,IAAA,CAAMA,IADiC,YAAA,KAAA,GAAA,EAAA,EAAA,GAAA,UAAA,KAAA,GAAA,EAAA,EAAA,GAAA,iBAAA,KAAA,GAAA,EAAA,EAAA,GAAA,YAAA,KAAA,GAAA,EAAA,EAAA,GAAA,eAAA,KAAA,GAAA,EAAA,EAAA,GAAA,aAAA,KAAA,GAAA,EAAA,EAAA,GAAA,SAAA,KAAA,GAAA,EAAA,EAAA,GAAA,mBAAA,KAAA,GAEvC,EAAKq6C,SAAL,CAAiB,IAAI8nT,EAAAA,OAAJ,CAAcniW,EAAO4kE,OAArB,CAA8B,SAACzgK,CAAD,EAAA,OAAU67F,EAAOo4O,eAAP,CAAuBj0U,EAAjC,GAC/C,EAAK81I,eAAL,CAAuB,CAAA,EAHgB,IAAA,EAAA,EAWnCj6C,EANF88O,aALqC,CAAA,EAWnC98O,EALF0kW,OANqC,CAAA,EAWnC1kW,EAJFqhD,YAPqC,CAAA,EAWnCrhD,EAHFysK,UARqC,CAAA,EAWnCzsK,EAFF8kW,MATqC,CAAA,EAWnC9kW,EADFo4V,gBAVqC,CAAA,OAYvC17c,OAAO0H,MAAP,CAAA,EAAA,GAAoB,CAClB04V,cAbqC,AAAA,KAAA,IAAA,GAAA,EAcrC4nH,QAdqC,AAAA,KAAA,IAAA,GAAA,EAerCrjT,aAfqC,AAAA,KAAA,IAAA,GAAA,EAgBrCorH,WAhBqC,AAAA,KAAA,IAAA,GAAA,EAiBrC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C,C,E,a,O,c,C,E,O,C,a,C,M,C,C,G,E,O,C,O,C,K,E,I,E,E,SEb3C,EAAA,EAAA,EAAA,U,E,E,SAIA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,UACA,EAAA,EAAA,EAAA,U,S,E,C,E,O,G,E,U,C,E,C,Q,C,C,C,S,E,C,E,O,A,S,C,E,G,M,O,C,G,O,E,E,E,I,A,S,C,E,G,A,a,O,Q,O,Q,I,O,G,O,M,I,C,E,E,I,A,S,C,C,C,E,G,G,G,A,U,O,E,O,E,E,G,I,E,O,S,C,Q,C,I,C,G,K,C,E,I,G,W,G,E,W,E,C,E,E,W,C,I,A,E,A,Q,G,A,Q,E,O,M,I,C,G,G,A,c,G,2C,I,C,G,O,E,E,G,E,I,A,W,M,A,U,uI,G,C,S,E,C,C,C,E,C,A,M,G,E,E,M,A,G,C,E,E,M,A,E,I,I,E,E,E,A,M,G,E,E,I,C,C,E,C,C,C,E,C,O,C,C,S,E,C,C,C,E,I,I,E,E,E,E,M,C,I,C,I,E,C,C,E,A,C,E,U,C,E,U,E,C,E,E,Y,C,C,E,U,G,C,E,Q,C,C,C,E,O,c,C,E,E,G,C,E,C,C,S,E,C,C,C,C,C,E,O,K,E,O,c,C,E,E,C,M,E,W,C,E,a,C,E,S,C,C,G,C,C,E,C,E,C,CAIqBwuH,IAAAA,EAAAA,e,E,E,S,I,I,E,I,C,A,C,S,C,C,C,E,G,C,C,a,C,E,M,A,U,oC,C,E,I,C,G,E,I,C,Q,K,G,E,I,C,S,K,G,E,I,C,gB,K,G,E,I,C,sB,K,G,E,I,C,c,K,G,E,I,C,gB,K,G,E,I,C,a,K,GAgCe,EAAA,IAAA,CAAA,oBAAA,IAAI/tH,EAAJ,YAAA,E,E,I,C,c,K,G,E,I,C,S,K,GA+DlB,EAAA,IAAA,CAAA,gBAAA,SAACtvU,CAAD,EACd,GAAK,EAAKu9b,cAAL,CAAoBv9b,IAIN,cAAfA,EAAMvoB,IAAN,EACF,CAAA,EAAK+ld,aAAL,CAAqB,CAAA,CADvB,EAL4C,IAAA,EAad,EAAKC,aAAL,CAC1B,EAAKA,aAAL,CAAmB1zV,qBAAnB,GACA,CAAA,EAfwC,EAAA,EAapCxnF,GAboC,CAapCA,EAboC,AAAA,KAAA,IAAA,EAa9B,EAb8B,EAAA,EAAA,EAa3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A,QAAO,CAC1B,UAAW,EAAA,QAAO,CAClB,QAAS,EAAA,QAAO,CAChB,OAAQ,EAAA,MAAK,CACb,eAAgB,EAAA,MAAK,CACrB,YAAa,EAAA,MAAK,CAClB,cAAe,EAAA,MAAK,CACpB,cAAe,EAAA,MAAK,CACpB,MAAO,EAAA,MAAK,CACZ,UAAW,EAAA,MAAK,AAClB,EACF,CAmNF,EAGM,EAAkB,AAAA,CAAA,EAAA,EAAA,QAAO,AAAP,EAAS,EAAM,MAAM,CAAE,KAE/C,AAAA,CAAA,EAAA,EAAA,QAAO,AAAP,EACE,IACE,KAAK,SAAS,CAAC,CACb,EAAM,KAAK,CACX,EAAM,IAAI,CACV,EAAM,MAAM,CACZ,EAAM,UAAU,CAChB,EAAM,WAAW,CACjB,EAAM,IAAI,CACV,EAAM,QAAQ,CACd,EAAM,KAAK,CACX,EAAM,KAAK,CACZ,EACH,KACM,EAAM,EAAE,EAAI,CAAC,EAAM,SAAS,EAAE,GACpC,GAGF,IAAA,EAAe,C,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,M,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GE/Zf,IA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,CAAc,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,AAAA,EAAA,OAAe,CAAE,QAAQ,CAAE,CACtD,MAAO,EACP,SAAU,CACZ,GAAiB,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,EAAqB,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAClD,GAAI,EACJ,QAAS,MACX,EAAG,EAAiB,CAClB,SAAuB,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,MAAO,CACjC,kBAAmB,EAAQ,KAAK,CAAC,EAAE,CACnC,GAAI,EAAQ,KAAK,CAAC,gBAAgB,CAClC,KAAM,SACN,UAAW,EAAQ,MAAM,CACzB,SAAU,CACZ,EACF,IAAI,AACN,GACF,GA4FA,IAAA,EAAe,C,G,E,Q,S,C,C,C,ECtRf,YAGE,CAAA,EAAA,OAAA,CAAA,EAAA,Q,G,E,Q,S,C,C,C,ECKF,a,E,E,O,C,kB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,kB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,U,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,a,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,W,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,O,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,O,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,S,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,W,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,a,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,W,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,c,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,mB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,oB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,oB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,Y,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,e,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,a,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,S,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,S,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,W,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,a,W,O,C,E,S,C,E,O,E,C,G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B,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCHA,IAAA,EAAe,A,E,SAAA,OAAgB,A,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,S,I,E,E,S,E,E,S,E,E,SC2B/B,EArBA,SAAsB,CAAK,EACzB,MAAoB,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,EAAA,OAAiB,CAAG,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,EAAG,EAAO,CAC/D,aAAc,EAAA,OAAW,AAC3B,GACF,C,G,E,Q,S,C,C,C,E,E,E,O,C,2B,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVO,SAAS,EAAyB,CAAI,EAC3C,MAAO,AAAA,CAAA,EAAA,EAAA,OAAmB,AAAnB,EAAqB,eAAgB,EAC9C,CACA,IAAM,EAAmB,AAAA,CAAA,EAAA,EAAA,OAAqB,AAArB,EAAuB,eAAgB,CAAC,OAAQ,cAAe,UAAW,WAAY,eAAgB,aAAc,QAAS,YAAa,YAAa,iBAAkB,YAAa,cAAe,QAAS,iBAAkB,iBAAkB,kBAAmB,oBAAqB,kBAAmB,mBAAmB,EACzV,IAAA,EAAe,C,G,E,Q,S,C,C,C,E,E,E,O,C,uB,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,SCFR,SAAS,EAAqB,CAAI,EACvC,MAAO,AAAA,CAAA,EAAA,EAAA,OAAmB,AAAnB,EAAqB,WAAY,EAC1C,CAEA,IAAM,EAAe,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,EAAG,EAAA,OAAe,CAAG,AAAA,CAAA,EAAA,EAAA,OAAqB,AAArB,EAAuB,WAAY,CAAC,OAAQ,YAAa,QAAQ,GAErH,IAAA,EAAe,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCPf,IAAM,EAAY,CAAC,mBAAoB,SAAU,SAAU,UAAU,CAY/D,EAAoB,AAAA,IACxB,GAAM,CAAA,QACJ,CAAO,CAAA,YACP,CAAW,CAAA,KACX,CAAI,CAAA,OACJ,CAAM,CAAA,iB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AK,CAAA,EAAM,CAAA,AAAqF,OAApF,CAAA,EAAK,AAA+B,OAA9B,CAAA,EAAK,EAAE,KAAK,CAAC,EAAA,UAAS,CAAA,GAAgB,AAAO,KAAK,IAAZ,EAAgB,KAAK,EAAI,EAAG,MAAK,AAAL,GAAoB,AAAO,KAAK,IAAZ,EAAgB,EAAK,CAAA,EAAK,CACxP,EAuCwB,MAAA,EAAO,kBAAA,EAAmB,kBALlD,SAA2B,CAAC,EACxB,IAAM,EAAS,EAAM,GACf,EAAc,EAAkB,GACtC,OAAO,EAAY,EAAO,GAAG,CAAC,GAClC,CACoE,C,G,E,Q,S,C,C,C,E,E,E,O,C,Q,W,O,C,GC7CpE,IAAM,EAAQ,AAAC,GAAM,AAAa,UAAb,OAAO,C,G,E,Q,S,C,C,C,E,E,E,O,C,O,W,O,C,GCL5B,IAAM,EAAmB,CAAC,EAAG,IAAM,AAAC,GAAM,EAAE,EAAE,IACxC,EAAO,CAAC,GAAG,IAAiB,EAAa,MAAM,CAAC,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,Y,W,O,C,G,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,Y,W,O,C,G,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,Y,W,O,C,G,E,E,O,C,a,W,O,C,G,E,E,O,C,Y,W,O,C,G,E,E,O,C,W,W,O,C,G,E,E,O,C,c,W,O,C,G,I,E,E,SCEtD,IAAM,EAAyB,EAAM,GAC/B,EAA0B,EAAM,GAEhC,EAAS,AAAA,GAAK,EACd,EAAS,AAAA,CAAA,EAAA,EAAA,YAAW,AAAX,EAAa,GACtB,EAAU,AAAA,CAAA,EAAA,EAAA,aAAY,AAAZ,EAAc,GACxB,EAAY,AAAA,CAAA,EAAA,EAAA,YAAW,AAAX,EAAa,GACzB,EAAS,AAAA,GAAK,EAAI,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,IACrC,EAAU,AAAA,CAAA,EAAA,EAAA,aAAY,AAAZ,EAAc,GACxB,EAAY,AAAA,CAAA,EAAA,EAAA,YAAW,AAAX,EAAa,GACzB,EAAS,AAAA,CAAA,EAAA,EAAA,YAAW,AAAX,EAXoB,OAY7B,EAA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AAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,EAAc,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACjD,IAAK,EACL,KAAM,EACN,SAAU,EACV,UAAW,EACX,sBAAuB,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,EAAQ,YAAY,CAAE,EACpD,EAAG,EAAO,CACR,WAAY,EACZ,QAAS,CACX,GACF,EACF,GAwFA,IAAA,EAAe,C,G,E,Q,S,C,C,C,E,E,E,O,C,8B,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SClRR,SAAS,EAA4B,CAAI,EAC9C,MAAO,AAAA,CAAA,EAAA,EAAA,OAAmB,AAAnB,EAAqB,kBAAmB,EACjD,CACA,IAAM,EAAsB,AAAA,CAAA,EAAA,EAAA,OAAqB,AAArB,EAAuB,kBAAmB,CAAC,OAAQ,sBAAsB,EACrG,IAAA,EAAe,C,G,E,Q,S,C,C,C,E,E,E,O,C,8B,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCJR,SAAS,EAA4B,CAAI,EAC9C,MAAO,AAAA,CAAA,EAAA,EAAA,OAAmB,AAAnB,EAAqB,kBAAmB,EACjD,CACA,IAAM,EAAsB,AAAA,CAAA,EAAA,EAAA,OAAqB,AAArB,EAAuB,kBAAmB,CAAC,OAAQ,YAAa,QAAS,QAAS,UAAW,YAAY,EACrI,IAAA,EAAe,C,G,E,Q,S,C,C,C,E,E,E,O,C,0B,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCJR,SAAS,EAAwB,CAAI,EAC1C,MAAO,AAAA,CAAA,EAAA,EAAA,OAAmB,AAAnB,EAAqB,cAAe,EAC7C,CACA,IAAM,EAAkB,AAAA,CAAA,EAAA,EAAA,OAAqB,AAArB,EAAuB,cAAe,CAAC,OAAQ,eAAgB,QAAS,WAAY,UAAW,UAAW,WAAW,EAC7I,IAAA,EAAe,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E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,O,E,G,E,E,O,C,oB,W,O,E,G,E,E,O,C,gB,W,O,E,G,E,E,O,C,gB,W,O,E,G,E,E,O,C,oB,W,O,E,G,E,E,O,C,gB,W,O,E,G,E,E,O,C,a,W,O,E,G,E,E,O,C,oB,W,O,E,G,E,E,O,C,W,W,O,E,G,E,E,O,C,Y,W,O,E,G,E,E,O,C,oB,W,O,E,G,E,E,O,C,mB,W,O,E,G,E,E,O,C,mB,W,O,E,G,E,E,O,C,W,W,O,E,G,E,E,O,C,oB,W,O,E,G,E,E,O,C,oB,W,O,E,G,E,E,O,C,a,W,O,E,G,E,E,O,C,W,W,O,E,G,E,E,O,C,mB,W,O,E,G,E,E,O,C,gB,W,O,E,G,E,E,O,C,oB,W,O,E,G,E,E,O,C,sB,W,O,E,G,E,E,O,C,c,W,O,E,G,E,E,O,C,W,W,O,E,G,E,E,O,C,iB,W,O,E,G,E,E,O,C,oB,W,O,E,G,E,E,O,C,W,W,O,E,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,S,I,E,E,S,E,S,E,S,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,G,E,S,E,S,I,G,E,S,G,E,S,G,E,SnBF7B,SAAS,GAAQ,CAAM,CAAE,CAAc,EACrC,IAAI,EAAO,OAAO,IAAI,CAAC,GAEvB,GAAI,OAAO,qBAAqB,CAAE,CAChC,IAAI,EAAU,OAAO,qBAAqB,CAAC,GACvC,GAAgB,CAAA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E,O,C,e,W,O,C,G,E,E,O,C,K,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,W,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,Q,W,O,C,G,E,E,O,C,a,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,Y,W,O,C,G,E,E,O,C,S,W,O,C,G,E,E,O,C,qB,W,O,C,G,E,E,O,C,gB,W,O,E,G,E,E,O,C,gB,W,O,E,G,E,E,O,C,oB,W,O,E,G,E,E,O,C,qB,W,O,E,G,E,E,O,C,a,W,O,E,G,E,E,O,C,mB,W,O,E,G,E,E,O,C,sB,W,O,E,G,E,E,O,C,2B,W,O,E,G,E,E,O,C,uB,W,O,E,G,E,E,O,C,sB,W,O,E,G,E,E,O,C,mB,W,O,E,G,E,E,O,C,U,W,O,E,G,E,E,O,C,iB,W,O,E,G,E,E,O,C,a,W,O,E,G,E,E,O,C,U,W,O,E,G,E,E,O,C,kB,W,O,E,G,E,E,O,C,M,W,O,A,E,S,G,A,G,I,E,E,S,E,E,SAjlBJ,SAAS,IAAQ,CACjB,IAAM,EAAe,CAAC,EAAK,EAAK,IAAU,OAAO,cAAc,CAAC,EAAK,EAAK,CACxE,MAAA,EACA,SAAU,CAAA,EACV,aAAc,CAAA,CAChB,GACM,EAAK,CACT,IAAK,MAAM,OAAO,CAClB,IAAK,AAAA,GAAK,CAAC,CAAC,GAAK,AAAuB,WAAvB,EAAE,WAAW,CAAC,IAAI,CACnC,IAAK,AAAA,GAAK,AAAa,YAAb,OAAO,EACjB,IAAK,AAAA,GAAK,AAAa,UAAb,OAAO,EACjB,IAAK,AAAA,GAAK,AAAa,UAAb,OAAO,EACjB,IAAK,AAAA,GAAK,AAAM,KAAA,IAAN,CACZ,EACA,SAAS,EAAQ,CAAC,CAAE,CAAC,EACnB,GAAI,EAAG,GAAG,CAAC,GAAI,CACb,GAAI,CAAC,EAAG,GAAG,CAAC,IAAM,EAAE,MAAM,GAAK,EAAE,MAAM,CAAE,MAAO,CAAA,EAEhD,IAAK,IAAI,EAAI,EAAG,EAAI,EAAE,MAAM,CAAE,IAC5B,GAAI,CAAC,CAAC,EAAE,GAAK,CAAC,CAAC,EAAE,CAAE,MAAO,CAAA,EAG5B,MAAO,CAAA,CACT,CAEA,OAAO,I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CAAC,EAAQ,IAAS,IAAI,GAAc,EAAQ,EAClD,GACe,AAAA,EAAA,SAAQ,CAAE,OAAO,C,E,E,O,C,G,E,E,O,C,E,G,E,Q,S,C,C,C,MCx1E5B,EACA,EA4hBA,E,E,E,O,C,O,W,O,C,G,E,E,O,C,e,W,O,C,G,E,E,O,C,K,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,W,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,Q,W,O,C,G,E,E,O,C,a,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,Y,W,O,C,G,E,E,O,C,S,W,O,C,G,E,E,O,C,qB,W,O,C,G,E,E,O,C,gB,W,O,E,G,E,E,O,C,gB,W,O,E,G,E,E,O,C,oB,W,O,E,G,E,E,O,C,qB,W,O,E,G,E,E,O,C,a,W,O,E,G,E,E,O,C,mB,W,O,E,G,E,E,O,C,sB,W,O,E,G,E,E,O,C,2B,W,O,E,G,E,E,O,C,uB,W,O,E,G,E,E,O,C,sB,W,O,E,G,E,E,O,C,mB,W,O,E,G,E,E,O,C,U,W,O,E,G,E,E,O,C,iB,W,O,E,G,E,E,O,C,a,W,O,E,G,E,E,O,C,U,W,O,E,G,E,E,O,C,kB,W,O,E,G,E,E,O,C,M,W,O,A,E,S,G,A,G,I,E,E,S,E,E,SAllBJ,SAAS,IAAQ,CACjB,IAAM,EAAe,CAAC,EAAK,EAAK,IAAU,OAAO,cAAc,CAAC,EAAK,EAAK,CACxE,MAAA,EACA,SAAU,CAAA,EACV,aAAc,CAAA,CAChB,GACM,EAAK,CACT,IAAK,MAAM,OAAO,CAClB,IAAK,AAAA,GAAK,CAAC,CAAC,GAAK,AAAuB,WAAvB,EAAE,WAAW,CAAC,IAAI,CACnC,IAAK,AAAA,GAAK,AAAa,YAAb,OAAO,EACjB,IAAK,AAAA,GAAK,AAAa,UAAb,OAAO,EACjB,IAAK,AAAA,GAAK,AAAa,UAAb,OAAO,EACjB,IAAK,AAAA,GAAK,AAAM,KAAA,IAAN,CACZ,EACA,SAAS,EAAQ,CAAC,CAAE,CAAC,EACnB,GAAI,EAAG,GAAG,CAAC,GAAI,CACb,GAAI,CAAC,EAAG,GAAG,CAAC,IAAM,EAAE,MAAM,GAAK,EAAE,MAAM,CAAE,MAAO,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AP,EAAS,MAAM,GAAK,EAAI,EAChE,CACF,CAEe,SAAA,EAAiB,CAAC,CAAE,CAAC,EAClC,IAAI,EAAI,EAAI,EACZ,OAAO,EAAI,EAAO,EAAG,GAAK,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,MAAM,GAAK,EAAI,EACpD,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GC5BA,IAAA,EAAe,AAAA,GAAK,IAAM,C,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCGf,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCZT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,O,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAO,AAAA,CAAA,EAAA,EAAA,aAAuB,AAAvB,EAAyB,AAAA,CAAA,EAAA,EAAA,OAAQ,AAAR,EAAU,KAAM,IAAM,KAAO,AAAA,CAAA,EAAA,EAAA,OAAQ,AAAR,EAAU,GAAI,IAAM,KAEjF,EAAO,AAAA,CAAA,EAAA,EAAA,aAAuB,AAAvB,EAAyB,AAAA,CAAA,EAAA,EAAA,OAAQ,AAAR,EAAU,IAAK,IAAM,KAAO,AAAA,CAAA,EAA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AK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCZT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCZT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCZT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCZT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCZT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCZT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCZT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCXpB,IAAI,EAAI,AAAA,CAAA,EAAA,A,E,SAAA,GAAE,AAAF,IACJ,EAAS,KAAK,EAAE,CAAG,EACnB,EAAS,AAAU,EAAV,KAAK,EAAE,CAAO,EAEZ,SAAA,EAAS,CAAC,EACvB,IAAI,EAKJ,OAJA,EAAK,AAAA,CAAA,GAAM,CAAA,EAAK,KAAK,EAAE,CACvB,EAAE,CAAC,CAAG,IAAO,CAAA,EAAI,KAAK,GAAG,CAAC,EAAA,EAAM,EAChC,EAAE,CAAC,CAAG,IAAO,CAAA,EAAI,KAAK,GAAG,CAAC,EAAI,EAAA,EAAW,EACzC,EAAE,CAAC,CAAG,IAAO,CAAA,EAAI,KAAK,GAAG,CAAC,EAAI,EAAA,EAAW,EAClC,EAAI,EACb,C,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVW,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCZT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCXpB,IAAA,EAAe,AAAA,CAAA,EAAA,A,E,SAAA,OAAK,AAAL,EAAO,mD,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCAtB,IAAA,EAAe,AAAA,CAAA,EAAA,A,E,SAAA,OAAK,AAAL,EAAO,+D,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCAtB,IAAA,EAAe,AAAA,CAAA,EAAA,A,E,SAAA,OAAK,AAAL,EAAO,mD,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCAtB,IAAA,EAAe,AAAA,CAAA,EAAA,A,E,SAAA,OAAK,AAAL,EAAO,2E,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,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FL,CAEiB,SAAAnvP,CAAG,EAAA,OAAIA,EAAImvP,WAAR,AAAA,GACfrE,YAHL,CAGkBA,GACbD,QAJL,CAIcA,EALlB,EAMA,CAACC,EAAcD,EAPZ,CAPoB,C,G,E,Q,S,C,C,C,E,E,E,O,C,oB,W,O,E,G,E,E,O,C,uB,W,O,E,G,E,E,O,C,wB,W,O,E,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,S,I,E,E,S,E,E,ShdX/B,SAAS,EAAQ,CAAM,CAAE,CAAc,EACrC,IAAI,EAAO,OAAO,IAAI,CAAC,GAEvB,GAAI,OAAO,qBAAqB,CAAE,CAChC,IAAI,EAAU,OAAO,qBAAqB,CAAC,GACvC,GAAgB,CAAA,EAAU,EAAQ,MAAM,CAAC,SAAU,CAAG,EACxD,OAAO,OAAO,wBAAwB,CAAC,EAAQ,GAAK,UAAU,AACpE,EAAA,EACI,EAAK,IAAI,CAAC,KAAK,CAAC,EAAM,EAC1B,CAEE,OAAO,CACT,CAEe,SAAS,GAAe,CAAM,EAC3C,IAAK,IAAI,EAAI,EAAG,EAAI,UAAU,MAAM,CAAE,IAAK,CACzC,IAAI,EAAS,AAAgB,MAAhB,SAAS,CAAC,EAAE,CAAW,SAAS,CAAC,EAAE,CAAG,CAAA,CAE/C,CAAA,EAAI,EACN,EAAQ,OAAO,GAAS,CAAA,GAAM,OAAO,CAAC,SAAU,CAAG,MDrBP,EAAA,ECsBd,CAAM,CAAC,EAAI,CDrBzC,ACqByB,KAAR,EDpBnB,OAAO,cAAc,CCoBF,EAAQ,EDpBK,CAC9B,MAAO,EACP,WAAY,CAAA,EACZ,aAAc,CAAA,EACd,SAAU,CAAA,CAChB,GAEI,ACamB,CDbhB,CCawB,EDbnB,CAAG,CCcf,GACe,OAAO,yBAAyB,CACzC,OAAO,gBAAg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EACH,MAAO,EACP,KAAK,Q,G,A,E,G,A,EAMjB,C,G,E,Q,S,C,C,C,E,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,G,E,E,O,C,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,W,A,G,E,E,O,C,a,W,O,A,E,S,U,A,G,E,E,O,C,e,W,O,A,E,S,Y,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,I,A,G,E,E,O,C,Q,W,O,A,E,S,K,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,Q,W,O,A,E,S,K,A,G,E,E,O,C,O,W,O,A,E,S,I,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,a,W,O,A,E,S,U,A,G,E,E,O,C,S,W,O,A,E,S,M,A,G,E,E,O,C,Q,W,O,A,E,S,K,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,S,W,O,A,E,S,M,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,M,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,4B,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,O,A,G,E,E,O,C,mB,W,O,A,E,S,O,A,G,E,E,O,C,M,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,W,A,G,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,M,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,iB,W,O,A,E,S,c,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,Q,A,G,E,E,O,C,M,W,O,A,E,S,O,A,G,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,W,W,O,A,E,S,Q,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,E,O,C,M,W,O,A,E,S,O,A,G,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,M,W,O,A,E,S,O,A,G,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,O,A,G,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,c,W,O,C,G,E,E,O,C,a,W,O,C,G,E,E,O,C,e,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,SG9RA,IAAM,EAAkB,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,EAAA,OAAQ,EAC5B,EAAc,EAAgB,KAAK,CACnC,EAAa,EAAgB,IAAI,CACjC,EAAe,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,EAAA,OAAK,EAAG,MAAM,CACnD,IAAA,EAAe,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCRA,SAAA,EAAmB,CAAC,CAAE,CAAC,EACpC,OAAO,AAAK,MAAL,GAAa,AAAK,MAAL,EAAY,IAAM,EAAI,EAAI,GAAK,EAAI,EAAI,EAAI,GAAK,EAAI,EAAI,GAC9E,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCCe,SAAA,EAAkB,CAAC,EAChC,IAAI,EAAU,EAAU,EAiBxB,SAAS,EAAK,CAAC,CAAE,CAAC,CAAE,EAAK,CAAC,CAAE,EAAK,EAAE,MAAM,EACvC,GAAI,EAAK,EAAI,CACX,GAAI,AAAmB,IAAnB,EAAS,EAAG,GAAU,OAAO,EACjC,EAAG,CACD,IAAM,EAAO,EAAK,IAAQ,CACtB,AAAsB,CAAA,EAAtB,EAAS,CAAC,CAAC,EAAI,CA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AG,EAAA,SAAQ,EAAK,EAAS,IAAI,GAAK,EACnE,OAAO,IAAI,EAAA,UAAS,CAAE,CAAC,CAAC,EAAK,CAAC,CAAE,EAAM,EAAM,CAAC,EAEjD,CAGF,OAAO,IACT,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCpBA,IAAA,EAAe,AAAA,GAAK,IAAM,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCAX,SAAA,EAAoB,CAAI,CAAE,CAAA,YACvC,CAAW,CAAA,OACX,CAAM,CAAA,UACN,CAAS,CAAA,KACT,CAAI,CAAA,SACJ,CAAQ,CACT,EACC,OAAO,gBAAgB,CAAC,IAAI,CAAE,CAC5B,KAAM,CAAC,MAAO,EAAM,WAAY,CAAA,EAAM,aAAc,CAAA,CAAI,EACxD,YAAa,CAAC,MAAO,EAAa,WAAY,CAAA,EAAM,aAAc,CAAA,CAAI,EACtE,OAAQ,CAAC,MAAO,EAAQ,WAAY,CAAA,EAAM,aAAc,CAAA,CAAI,EAC5D,UAAW,CAAC,MAAO,EAAW,WAAY,CAAA,EAAM,aAAc,CAAA,CAAI,EAClE,KAAM,CAAC,MAAO,EAAM,WAAY,CAAA,EAAM,aAAc,CAAA,CAAI,EACxD,EAAG,CAAC,MAAO,CAAQ,CACrB,EACF,C,G,E,Q,S,C,C,C,ECfO,SAAS,EAAc,CAAK,EACjC,EAAM,wBAAwB,EAChC,CAEe,SAAA,EAAS,CAAK,EAC3B,EAAM,cAAc,GACpB,EAAM,wBAAwB,EAChC,C,E,E,O,C,gB,W,O,C,G,E,E,O,C,U,W,O,C,E,G,E,Q,S,C,C,C,E,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,c,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,W,A,G,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,E,E,O,C,iB,W,O,C,G,E,E,O,C,gB,W,O,C,G,I,E,E,SELA,SAAS,EAAM,CAAC,CAAE,CAAC,EACjB,OAAO,MAAM,IAAI,CAAC,CAAC,OAAQ,EAAI,CAAC,EAAG,CAAC,EAAG,IAAM,EAAI,EACnD,CAWe,SAAA,IACb,OAAO,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AI,EAAQ,MAAM,CAAE,EAAI,EAAG,EAAE,EAC3C,IAAI,CAAC,CAAC,EAAI,KAAK,KAAK,CAAC,SAAS,CAAC,EAAE,CAAG,GAAK,EAAI,CAAO,CAAC,EAAE,AAE3D,CACF,EAOyD,EACvD,CAiHF,CAEO,SAAS,IACd,OAAO,IAAI,CACb,CAKO,SAAS,EAAU,EAAS,CAAC,EAClC,OAAO,IAAI,EAAK,CAAC,EACnB,CAJA,EAAK,SAAS,CAAG,EAAK,SAAS,A,G,E,Q,S,C,C,C,E,E,E,O,C,Q,W,O,C,GCvJxB,IAAI,EAAQ,MAAM,SAAS,CAAC,KAAK,A,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCAzB,SAAA,EAAS,CAAC,EACvB,OAAO,WACL,OAAO,CACT,CACF,C,G,E,Q,S,C,C,C,E,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,M,W,O,A,E,S,G,A,G,E,E,O,C,M,W,O,A,E,S,G,A,G,E,E,O,C,M,W,O,A,E,S,O,A,G,E,E,O,C,M,W,O,A,E,S,G,A,G,E,E,O,C,M,W,O,A,E,S,G,A,G,E,E,O,C,O,W,O,A,E,S,I,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,O,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,M,W,O,C,G,I,E,E,S,E,E,S,E,E,SECA,IAII,EAAK,EAAI,GACT,EAAK,EAAI,GACT,EAAK,EAAI,EAAK,EACd,EAAK,EAAK,EAAK,EAEnB,SAAS,EAAW,CAAC,EACnB,GAAI,aAAa,EAAK,OAAO,IAAI,EAAI,EAAE,CAAC,CAAE,EAAE,CAAC,CAAE,EAAE,CAAC,CAAE,EAAE,OAAO,EAC7D,GAAI,aAAa,EAAK,OAAO,EAAQ,GAC/B,aAAa,EAAA,GAAE,EAAI,CAAA,EAAI,AAAA,CAAA,EAAA,EAAA,UAAS,AAAT,EAAW,EAAxC,EACA,IAGuE,EAAG,EAHtE,EAAI,EAAS,EAAE,CAAC,EAChB,EAAI,EAAS,EAAE,CAAC,EAChB,EAAI,EAAS,EAAE,CAAC,EAChB,EAAI,EAAS,AAAA,CAAA,SAAY,EAAI,SAAY,EAAI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,G,E,Q,S,C,C,C,E,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,Q,A,G,E,E,O,C,e,W,O,A,E,S,Y,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,e,W,O,A,E,S,Y,A,G,E,E,O,C,iB,W,O,A,E,S,c,A,G,E,E,O,C,W,W,O,A,E,S,Q,A,G,E,E,O,C,e,W,O,A,E,S,Y,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,e,W,O,A,E,S,Y,A,G,E,E,O,C,iB,W,O,A,E,S,c,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GE3BA,IAAI,EAAM,CAAC,EACP,EAAM,CAAC,EAKX,SAAS,EAAgB,CAAO,EAC9B,OAAO,AAAI,SAAS,IAAK,WAAa,EAAQ,GAAG,CAAC,SAAS,CAAI,CAAE,CAAC,EAChE,OAAO,KAAK,SAAS,CAAC,GAAQ,OAAS,EAAI,SAC7C,GAAG,IAAI,CAAC,KAAO,IACjB,CAUA,SAAS,EAAa,CAAI,EACxB,IAAI,EAAY,OAAO,MAAM,CAAC,MAC1B,EAAU,EAAE,CAUhB,OARA,EAAK,OAAO,CAAC,SAAS,CAAG,EACvB,IAAK,IAAI,KAAU,EACX,KAAU,GACd,EAAQ,IAAI,CAAC,CAAS,CAAC,EAAO,CAAG,EAGvC,GAEO,CACT,CAEA,SAAS,EAAI,CAAK,CAAE,CAAK,EACvB,IAAI,EAAI,EAAQ,GAAI,EAAS,EAAE,MAAM,CACrC,OAAO,EAAS,EAAQ,AAAI,MAAM,EAAQ,EAAS,GAAG,IAAI,CAAC,GAAK,EAAI,CACtE,CAqBe,SAAA,EAAS,CAAS,EAC/B,IAAI,EAAW,AAAI,OAAO,KAAQ,EAAY,SAC1C,EAAY,EAAU,UAAU,CAAC,GAWrC,SAAS,EAAU,CAAI,CAAE,CAAC,EACxB,IAII,EAJA,EAAO,EAAE,CACT,EAAI,EAAK,MAAM,CACf,EAAI,EACJ,EAAI,EAEJ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B,EAAQ,CAAA,OAC/B,GAAI,AAAU,QAAV,EAAiB,EAAQ,SAC7B,GAAK,MAAM,EAAS,CAAC,IACrB,IAAI,CAAA,EAAI,EAAM,KAAK,CAAC,8FAAA,EAIpB,SAHC,GAAW,CAAC,CAAC,EAAE,EAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA,EAAQ,EAAM,OAAO,CAAC,KAAM,KAAK,OAAO,CAAC,IAAK,IAA5E,EACA,EAAQ,IAAI,KAAK,QAHe,EAAQ,OAJ9B,EAAQ,IAUpB,CAAA,CAAM,CAAC,EAAI,CAAG,CAChB,CACA,OAAO,CACT,C,E,E,O,C,U,W,O,C,GAGA,IAAM,EAAQ,IAAI,KAAK,oBAAoB,QAAQ,IAAM,IAAI,KAAK,oBAAoB,QAAQ,E,G,E,Q,S,C,C,C,E,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,W,W,O,A,E,S,S,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,S,A,G,E,E,O,C,Y,W,O,A,E,S,U,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,Q,A,G,E,E,O,C,iB,W,O,A,E,S,U,A,G,E,E,O,C,W,W,O,A,E,S,S,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,S,A,G,E,E,O,C,U,W,O,A,E,S,Q,A,G,E,E,O,C,Y,W,O,A,E,S,K,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,e,W,O,A,E,S,Q,A,G,E,E,O,C,U,W,O,A,E,S,Q,A,G,E,E,O,C,Y,W,O,A,E,S,K,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,e,W,O,A,E,S,Q,A,G,E,E,O,C,a,W,O,A,E,S,W,A,G,E,E,O,C,e,W,O,A,E,S,Q,A,G,E,E,O,C,gB,W,O,A,E,S,S,A,G,E,E,O,C,kB,W,O,A,E,S,W,A,G,E,E,O,C,a,W,O,A,E,S,S,A,G,E,E,O,C,e,W,O,A,E,S,Q,A,G,E,E,O,C,gB,W,O,A,E,S,S,A,G,E,E,O,C,kB,W,O,A,E,S,W,A,G,E,E,O,C,W,W,O,A,E,S,S,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,S,A,G,E,E,O,C,c,W,O,A,E,S,U,A,G,E,E,O,C,gB,W,O,A,E,S,S,A,G,E,E,O,C,iB,W,O,A,E,S,U,A,G,E,E,O,C,mB,W,O,A,E,S,Y,A,G,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,GEnBvF,IAAM,EAAS,AAAA,GAAK,CAAC,C,G,E,Q,S,C,C,C,ECArB,SAAS,EAAO,CAAC,EACtB,OAAO,EAAI,CACb,CAEO,SAAS,EAAQ,CAAC,EACvB,OAAO,EAAK,CAAA,EAAI,CAAA,CAClB,CAEO,SAAS,EAAU,CAAC,EACzB,MAAQ,AAAC,CAAA,AAAA,CAAA,GAAK,CAAA,GAAM,EAAI,EAAI,EAAI,EAAE,EAAK,CAAA,EAAI,CAAA,EAAK,CAAA,EAAK,CACvD,C,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,Y,W,O,C,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,Y,W,O,C,GCRO,IAAI,EAAU,SAAS,EAAO,CAAC,EAGpC,SAAS,EAAO,CAAC,EACf,OAAO,KAAK,GAAG,CAAC,EAAG,EACrB,CAIA,OARA,EAAI,CAAC,EAML,EAAO,QAAQ,CAAG,EAEX,CACT,EAZe,GAcJ,EAAW,SAAS,EAAO,CAAC,EAGrC,SAAS,EAAQ,CAAC,EAChB,OAAO,EAAI,KAAK,GAAG,CAAC,EAAI,EAAG,EAC7B,CAIA,OARA,EAAI,CAAC,EAML,EAAQ,QAAQ,CAAG,EAEZ,CACT,EAxBe,GA0BJ,EAAa,SAAS,EAAO,CAAC,EAGvC,SAAS,EAAU,CAAC,EAClB,MAAQ,AAAC,CAAA,AAAA,CAAA,GAAK,CAAA,GAAM,EAAI,KAAK,GAAG,CAAC,EAAG,GAAK,EAAI,KAAK,GAAG,CAAC,EAAI,EAAG,EAAA,EAAM,CACrE,CAIA,OARA,EAAI,CAAC,EAML,EAAU,QAAQ,CAAG,EAEd,CACT,EApCe,E,G,E,Q,S,C,C,C,E,E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,CAAA,EAAI,KAAK,GAAG,CAAC,EAAG,EAAA,GAAQ,CAAA,GAAK,CAAA,EAEpD,SAAS,EAAa,CAAC,EACrB,MAAQ,AAAC,CAAA,AAAA,CAAA,EAAI,AAAI,EAAJ,EAAQ,CAAA,EAAK,EACpB,EAAI,AAAA,CAAA,EAAA,EAAA,IAAG,AAAH,EAAK,CAAC,GAAK,KAAK,GAAG,CAAE,AAAA,CAAA,EAAI,CAAA,EAAK,GAClC,EAAI,EAAI,AAAA,CAAA,EAAA,EAAA,IAAG,AAAH,EAAK,GAAK,KAAK,GAAG,CAAC,AAAC,CAAA,EAAI,CAAA,EAAK,EAAA,EAAM,CACnD,CAKA,OAHA,EAAa,SAAS,CAAG,SAAS,CAAC,EAAI,OAAO,EAAO,EAAG,EAAI,EAAM,EAClE,EAAa,MAAM,CAAG,SAAS,CAAC,EAAI,OAAO,EAAO,EAAG,EAAI,EAElD,CACT,EA1CgB,EACH,G,G,E,Q,S,C,C,C,E,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,M,W,O,A,E,S,O,A,G,E,E,O,C,M,W,O,A,E,S,G,A,G,E,E,O,C,M,W,O,A,E,S,G,A,G,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,M,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,I,A,G,E,E,O,C,M,W,O,A,E,S,G,A,G,E,S,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,EEJb,SAAS,EAAa,CAAQ,EAC5B,GAAI,CAAC,EAAS,EAAE,CAAE,MAAM,AAAI,MAAM,EAAS,MAAM,CAAG,IAAM,EAAS,UAAU,EAC7E,OAAO,EAAS,IAAI,EACtB,CAEe,SAAA,EAAS,CAAK,CAAE,CAAI,EACjC,OAAO,MAAM,EAAO,GAAM,IAAI,CAAC,EACjC,C,E,E,O,C,U,W,O,C,E,G,E,Q,S,C,C,C,ECPA,SAAS,EAAoB,CAAQ,EACnC,GAAI,CAAC,EAAS,EAAE,CAAE,MAAM,AAAI,MAAM,EAAS,MAAM,CAAG,IAAM,EAAS,UAAU,EAC7E,OAAO,EAAS,WAAW,EAC7B,CAEe,SAAA,E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,SAAA,EAAS,CAAK,CAAE,CAAI,EACjC,OAAO,MAAM,EAAO,GAAM,IAAI,CAAC,EACjC,C,E,E,O,C,U,W,O,C,E,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCPe,SAAA,EAAS,CAAK,CAAE,CAAI,EACjC,OAAO,IAAI,QAAQ,SAAS,CAAO,CAAE,CAAM,EACzC,IAAI,EAAQ,IAAI,MAChB,IAAK,IAAI,KAAO,EAAM,CAAK,CAAC,EAAI,CAAG,CAAI,CAAC,EAAI,AAC5C,CAAA,EAAM,OAAO,CAAG,EAChB,EAAM,MAAM,CAAG,WAAa,EAAQ,EAAQ,EAC5C,EAAM,GAAG,CAAG,CACd,EACF,C,G,E,Q,S,C,C,C,ECRA,SAAS,EAAa,CAAQ,EAC5B,GAAI,CAAC,EAAS,EAAE,CAAE,MAAM,AAAI,MAAM,EAAS,MAAM,CAAG,IAAM,EAAS,UAAU,EAC7E,GAAI,AAAoB,MAApB,EAAS,MAAM,EAAY,AAAoB,MAApB,EAAS,MAAM,CAC9C,OAAO,EAAS,IAAI,EACtB,CAEe,SAAA,EAAS,CAAK,CAAE,CAAI,EACjC,OAAO,MAAM,EAAO,GAAM,IAAI,CAAC,EACjC,C,E,E,O,C,U,W,O,C,E,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,M,W,O,C,G,I,E,E,SCNA,SAAS,EAAO,CAAI,EAClB,MAAO,CAAC,EAAO,IAAS,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,EAAO,GACjC,IAAI,CAAC,AAAA,GAAQ,AAAC,CAAA,IAAI,SAAA,EAAW,eAAe,CAAC,EAAM,GACxD,CAEA,IAAA,EAAe,EAAO,mBAEX,EAAO,EAAO,aAEd,EAAM,EAAO,gB,G,E,Q,S,C,C,C,E,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,S,W,O,A,E,S,O,A,G,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E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AAG,EAAK,CAAA,AAAA,EAAK,CAAS,CAAC,EAAE,CAAG,CAElE,CAEA,SAAS,IACP,GAAK,GACL,IAAI,EAAG,EAAI,EAAM,MAAM,CAGvB,IAAK,EAAI,EAFT,EAAY,AAAI,MAAM,GACtB,EAAK,AAAI,MAAM,GACH,EAAI,EAAG,EAAE,EACnB,CAAS,CAAC,EAAE,CAAG,MAAM,CAAE,CAAC,EAAE,CAAG,CAAC,EAAE,CAAK,CAAC,EAAE,CAAE,EAAG,IAAU,EAAI,CAAC,EAAS,CAAK,CAAC,EAAE,CAAE,EAAG,GAEtF,CAeA,MA/BiB,YAAb,OAAO,GAAkB,CAAA,EAAI,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,AAAK,MAAL,EAAY,EAAI,CAAC,EAA3D,EAkBA,EAAM,UAAU,CAAG,SAAS,CAAC,EAC3B,EAAQ,EACR,GACF,EAEA,EAAM,QAAQ,CAAG,SAAS,CAAC,EACzB,OAAO,UAAU,MAAM,CAAI,CAAA,EAAW,AAAa,YAAb,OAAO,EAAmB,EAAI,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,GAAI,IAAc,CAAA,EAAS,CAC3G,EAEA,EAAM,CAAC,CAAG,SAAS,CAAC,EAClB,OAAO,UAAU,MAAM,CAAI,CAAA,EAAI,AAAa,YAAb,OAAO,EAAmB,EAAI,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,GAAI,IAAc,CAAA,EAAS,CACpG,EAEO,CACT,C,G,E,Q,S,C,C,C,E,E,E,O,C,sB,W,O,A,E,S,O,A,G,E,E,O,C,S,W,O,A,E,S,M,A,G,E,E,O,C,e,W,O,A,E,S,Y,A,G,E,E,O,C,e,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,e,A,G,E,E,O,C,iB,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,O,A,G,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,e,W,O,C,G,E,E,O,C,U,W,O,C,G,IEtCI,EACO,EACA,E,E,E,SAQI,SAAA,EAAuB,CAAU,EAI9C,OAF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O,C,U,W,O,C,G,I,E,E,SCFe,SAAA,EAAS,CAAI,CAAE,CAAG,EAE/B,OADuB,EAAM,KAAK,GAAG,CAAC,GAAtC,CAAA,EAAO,KAAK,GAAG,CAAC,EAAA,EACT,KAAK,GAAG,CAAC,EAAG,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,GAAO,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,IAAS,CACvD,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,sB,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,mB,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,W,A,G,E,E,O,C,iB,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,O,A,G,E,E,O,C,wB,W,O,A,E,S,O,A,G,E,E,O,C,2B,W,O,A,E,S,qB,A,G,E,E,O,C,0B,W,O,A,E,S,O,A,G,E,E,O,C,6B,W,O,A,E,S,uB,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,E,O,C,uB,W,O,A,E,S,iB,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,E,O,C,uB,W,O,A,E,S,iB,A,G,E,E,O,C,sB,W,O,A,E,S,O,A,G,E,E,O,C,yB,W,O,A,E,S,mB,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,mB,W,O,A,E,S,a,A,G,E,E,O,C,qB,W,O,A,E,S,O,A,G,E,E,O,C,wB,W,O,A,E,S,kB,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,W,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,uB,W,O,A,E,S,iB,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,W,A,G,E,E,O,C,mB,W,O,A,E,S,O,A,G,E,E,O,C,sB,W,O,A,E,S,gB,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,qB,W,O,A,E,S,e,A,G,E,E,O,C,mB,W,O,A,E,S,O,A,G,E,E,O,C,sB,W,O,A,E,S,gB,A,G,E,E,O,C,wB,W,O,A,E,S,O,A,G,E,E,O,C,2B,W,O,A,E,S,qB,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,O,A,G,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,c,W,O,C,G,E,E,O,C,a,W,O,C,G,E,E,O,C,U,W,O,C,G,IEKI,EACA,EACA,EACA,EACA,E,E,E,S,E,E,S,E,E,S,E,E,SATO,EAAc,IAAI,EAAA,KAAI,CAI7B,EAAU,IAAI,EAAA,KAAI,CAOX,EAAa,CACtB,MAAO,EAAA,OAAG,CACV,UAAW,EAAA,OAAG,CACd,QAAS,EAAA,OAAG,CACZ,aAAc,WACZ,EAAc,IAAI,EAAA,KAAI,CACtB,EAAW,SAAS,CAAG,EACvB,EAAW,OAAO,CAAG,CACvB,EACA,WAAY,WACV,IAAI,EAAW,CAAC,EAChB,EAAQ,GAAG,CAAC,EAAW,EAAI,AAAA,EAAA,GAAE,CAAI,EAAW,GAC5C,IAAI,CAAC,SAAS,CAAG,IAAI,CAAC,OAAO,CAAG,IAAI,CAAC,KAAK,CAAG,EAAA,OAAG,AAClD,EACA,OAAQ,WACN,EAAQ,GAAG,CAAC,EAAA,GAAE,CAChB,CACF,EAEA,SAAS,IACP,EAAW,KAAK,CAAG,CACrB,CAEA,SAAS,IACP,EAAU,EAAU,EACtB,CAEA,SAAS,EAAe,CAAM,CAAE,CAAG,EACjC,EAAW,KAAK,CAAG,EACnB,EAAW,EAAQ,EAAQ,EAC3B,GAAU,EAAA,OAAM,CAAG,GAAO,EAAA,OAAM,CAChC,EAAU,EAAQ,EAAU,AAAA,CAAA,EAAA,EAAA,GAAE,AAAF,EAAI,EAAM,EAAM,EAAI,EAAA,SAAQ,EAAI,EAAU,AAAA,CAAA,EAAA,EAAA,GAAE,AAAF,EAAI,EAC5E,CAEA,SAAS,EAAU,CAAM,CAAE,CAAG,EAC5B,GAAU,EAAA,OAAM,CAAG,GAAO,EAAA,OAAM,CAChC,EAAM,EAAM,EAAI,EAAA,SAAQ,CAKxB,IAAI,EAAU,EAAS,EACnB,EAAW,GAAW,EAAI,EAAI,GAC9B,EAAW,EAAW,EACtB,EAAS,AAAA,CAAA,EAAA,EAAA,GAAE,AAAF,EAAI,GACb,EAAS,AAAA,CAAA,EAAA,EAAA,GAAE,AAAF,EAAI,GACb,EAAI,EAAU,EACd,EAAI,EAAU,EAAS,EAAI,AAAA,CAAA,EAAA,EAAA,GAAE,AAAF,EAAI,GAC/B,EAAI,EAAI,EAAW,AAAA,CAAA,EAAA,EAAA,GAAE,AAAF,EAAI,GAC3B,EAAY,GAAG,CAAC,AAAA,CAAA,EAAA,EAAA,KAAI,AAAJ,EAAM,EAAG,IAGzB,EAAU,EAAQ,EAAU,EAAQ,EAAU,CAChD,CAEe,SAAA,EAAS,CAAM,EAG5B,OAFA,EAAU,IAAI,EAAA,KAAI,CAClB,AAAA,CAAA,EAAA,EAAA,OAAK,AAAL,EAAO,EAAQ,GACR,AAAU,EAAV,CACT,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,E,E,O,C,W,W,O,C,G,E,E,O,C,K,W,O,C,G,E,E,O,C,S,W,O,C,G,E,E,O,C,Y,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,Q,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,Q,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,W,W,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AC,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC,CAAC,EAAE,CAAC,EAAmB,CAAC,AAAf,CAAA,EAAI,GAAA,CAAY,CAAC,EAAE,CAAE,CAAC,CAAC,CAAC,EAAE,CAAA,AAC/E,EAEA,EAAE,MAAM,CAAG,SAAS,CAAC,EACnB,OAAO,UAAU,MAAM,CAAG,EAAO,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC,CAAC,EAAE,CAAE,EAAE,MAAM,CAAG,EAAI,CAAC,CAAC,EAAE,CAAG,GAAK,GAAG,EAAmB,CAAC,AAAf,CAAA,EAAI,GAAA,CAAY,CAAC,EAAE,CAAE,CAAC,CAAC,EAAE,CAAE,CAAC,CAAC,EAAE,CAAG,GAAE,AACvH,EAEO,EAAO,CAAC,EAAG,EAAG,GAAG,EACnB,KAAK,CAAC,QACb,CAnBA,EAAsB,MAAM,CAAG,SAAS,CAAC,CAAE,CAAC,EAC1C,MAAO,CAAC,CAAC,EAAG,EAAI,AAAA,CAAA,EAAA,EAAA,IAAG,AAAH,EAAK,AAAA,CAAA,EAAA,EAAA,GAAE,AAAF,EAAI,IAAM,EAAA,MAAK,CAAE,AACxC,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,I,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,O,A,G,E,E,O,C,mB,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,EETA,SAAS,EAAkB,CAAC,CAAE,CAAC,EAC7B,OAAO,EAAE,MAAM,GAAK,EAAE,MAAM,CAAG,EAAI,CAC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,O,A,E,S,O,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,E,O,C,mB,W,O,A,E,S,O,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,E,O,C,0B,W,O,A,E,S,uB,A,G,E,E,O,C,0B,W,O,A,E,S,uB,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,O,A,G,E,E,O,C,sB,W,O,A,E,S,Q,A,G,E,E,O,C,4B,W,O,A,E,S,c,A,G,E,E,O,C,iB,W,O,A,E,S,O,A,G,E,E,O,C,qB,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,O,A,G,E,E,O,C,qB,W,O,A,E,S,O,A,G,E,E,O,C,uB,W,O,A,E,S,O,A,G,E,E,O,C,2B,W,O,A,E,S,a,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GEnCU,SAAA,EAAS,CAAK,EAC3B,IAAI,EAAI,EAAM,MAAM,CACpB,OAAO,SAAS,CAAC,EACf,OAAO,CAAK,CAAC,KAAK,GAAG,CAAC,EAAG,KAAK,GAAG,CAAC,EAAI,EAAG,KAAK,KAAK,CAAC,EAAI,KAAK,AAC/D,CACF,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,SCHe,SAAA,EAAS,CAAC,CAAE,CAAC,EAC1B,IAAI,EAAI,AAAA,CAAA,EAAA,EAAA,GAAE,AAAF,EAAI,CAAC,EAAG,CAAC,GACjB,OAAO,SAAS,CAAC,EACf,IAAI,EAAI,EAAE,GACV,OAAO,EAAI,IAAM,KAAK,KAAK,CAAC,EAAI,IAClC,CACF,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCRe,SAAA,EAAS,CAAC,CAAE,CAAC,EAC1B,OAAO,EAAI,CAAC,EAAG,EAAI,CAAC,EAAG,SAAS,CAAC,EAC/B,OAAO,KAAK,KAAK,CAAC,EAAK,CAAA,EAAI,CAAA,EAAK,EAAI,EACtC,CACF,C,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D,OAAO,CAAC,CAAC,EAAE,CAAC,EAAI,EAClB,CACF,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCVe,SAAA,EAAS,CAAY,CAAE,CAAC,EAErC,IAAK,IADD,EAAU,AAAI,MAAM,GACf,EAAI,EAAG,EAAI,EAAG,EAAE,EAAG,CAAO,CAAC,EAAE,CAAG,EAAa,EAAK,CAAA,EAAI,CAAA,GAC/D,OAAO,CACT,C,G,E,Q,S,C,C,C,E,E,E,O,C,O,W,O,A,E,S,I,A,G,E,E,O,C,O,W,O,A,E,S,I,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GGJe,SAAA,EAAS,CAAO,EAO7B,IANA,IAEI,EAFA,EAAI,GACJ,EAAI,EAAQ,MAAM,CAElB,EAAI,CAAO,CAAC,EAAI,EAAE,CAClB,EAAO,EAEJ,EAAE,EAAI,GACX,EAAI,EACJ,EAAI,CAAO,CAAC,EAAE,CACd,GAAQ,CAAC,CAAC,EAAE,CAAG,CAAC,CAAC,EAAE,CAAG,CAAC,CAAC,EAAE,CAAG,CAAC,CAAC,EAAE,CAGnC,OAAO,EAAO,CAChB,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCde,SAAA,EAAS,CAAO,EAU7B,IATA,IAII,EAEA,EANA,EAAI,GACJ,EAAI,EAAQ,MAAM,CAClB,EAAI,EACJ,EAAI,EAEJ,EAAI,CAAO,CAAC,EAAI,EAAE,CAElB,EAAI,EAED,EAAE,EAAI,GACX,EAAI,EACJ,EAAI,CAAO,CAAC,EAAE,CACd,GAAK,EAAI,CAAC,CAAC,EAAE,CAAG,CAAC,CAAC,EAAE,CAAG,CAAC,CAAC,EAAE,CAAG,CAAC,CAAC,EAAE,CAClC,GAAK,AAAC,CAAA,CAAC,CAAC,EAAE,CAAG,CAAC,CAAC,EAAE,AAAF,EAAM,EACrB,GAAK,AAAC,CAAA,CAAC,C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B,IATA,IAGI,EACA,EAJA,EAAI,GACJ,EAAI,EAAQ,MAAM,CAClB,EAAI,CAAO,CAAC,EAAI,EAAE,CAGlB,EAAK,CAAC,CAAC,EAAE,CACT,EAAK,CAAC,CAAC,EAAE,CACT,EAAY,EAET,EAAE,EAAI,GACX,EAAK,EACL,EAAK,EAEL,EAAK,AADL,CAAA,EAAI,CAAO,CAAC,EAAE,AAAF,CACN,CAAC,EAAE,CACT,EAAK,CAAC,CAAC,EAAE,CACT,GAAM,EACN,GAAM,EACN,GAAa,KAAK,KAAK,CAAC,EAAI,GAG9B,OAAO,CACT,C,G,E,Q,S,C,C,C,E,E,E,O,C,W,W,O,A,E,S,O,A,G,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GGpBA,IAAA,EAAe,SAAU,EAAoB,CAAM,EACjD,SAAS,EAAc,CAAG,CAAE,CAAG,EAK7B,OAJA,EAAM,AAAO,MAAP,EAAc,EAAI,CAAC,EACzB,EAAM,AAAO,MAAP,EAAc,EAAI,CAAC,EACrB,AAAqB,GAArB,UAAU,MAAM,CAAQ,CAAA,EAAM,EAAK,EAAM,CAAA,EACxC,GAAO,EACL,WACL,OAAO,IAAW,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nC,CACF,CAIA,OAFA,EAAe,MAAM,CAAG,EAEjB,CACT,EAAG,A,E,SAAA,OAAY,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,SCXf,EAAe,SAAU,EAAoB,CAAM,EACjD,IAAI,EAAI,AAAA,CAAA,EAAA,EAAA,OAAI,AAAJ,EAAM,MAAM,CAAC,GACjB,EAAI,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,MAAM,CAAC,GAExB,SAAS,EAAc,CAAM,EAC3B,OAAO,WAEL,IADA,IAAI,EAAM,EAAG,EAAI,EACV,EAAI,IAAI,CACb,IAAI,EAAI,KAAK,KAAK,CAAC,KAAQ,GACvB,EAAI,EAAE,KACV,GAAI,EAAI,EAAG,OAAO,EAAM,EAAE,EAAI,EAAG,EAAI,KACrC,GAAO,EACP,GAAK,CACP,CACA,IAAK,IAAI,EAAI,CAAC,KAAK,KAAK,CAAC,CAAC,KAAW,EAAI,EAAG,GAAK,EAAG,EAAE,EAAG,GAAK,KAAK,KAAK,CAAC,CAAC,KAC1E,OAAO,EAAM,CACf,CACF,CAIA,OAFA,EAAc,MAAM,CAAG,EAEhB,CACT,EAAG,EAAA,OAAY,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCvBf,IAAM,EAAM,EAAI,WAED,SAAA,EAAa,EAAO,KAAK,MAAM,EAAE,EAC9C,IAAI,EAAQ,AAAC,CAAA,GAAK,GAAQ,EAAO,EAAI,EAAO,EAAM,KAAK,GAAG,CAAC,EAAA,EAAS,EACpE,MAAO,IAAsC,EAAO,CAAA,AAAtC,CAAA,EAAQ,AANZ,QAMkB,EALlB,WAKgC,CAAA,IAAoB,CAAA,CAChE,C,G,E,Q,S,C,C,C,E,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,K,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,Q,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,I,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,qB,W,O,A,E,S,a,A,G,E,E,O,C,qB,W,O,A,E,S,a,A,G,E,E,O,C,sB,W,O,A,E,S,c,A,G,E,E,O,C,wB,W,O,A,E,S,gB,A,G,E,E,O,C,0B,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,O,A,G,E,E,O,C,oB,W,O,A,E,S,Y,A,G,E,E,O,C,oB,W,O,A,E,S,Y,A,G,E,E,O,C,qB,W,O,A,E,S,a,A,G,E,E,O,C,uB,W,O,A,E,S,e,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,E,E,O,C,Q,W,O,C,G,I,E,E,S,E,E,S,E,E,SEJe,SAAA,IACb,IAKI,EACA,EANA,EAAQ,AAAA,CAAA,EAAA,EAAA,OAAM,AAAN,IAAU,OAAO,CAAC,KAAA,GAC1B,EAAS,EAAM,MAAM,CACrB,EAAe,EAAM,KAAK,CAC1B,EAAK,EACL,EAAK,EAGL,EAAQ,CAAA,EACR,EAAe,EACf,EAAe,EACf,EAAQ,GAIZ,SAAS,IACP,IAAI,EAAI,IAAS,MAAM,CACnB,EAAU,EAAK,EACf,EAAQ,EAAU,EAAK,EACvB,EAAO,EAAU,EAAK,EAC1B,EAAO,AAAC,CAAA,EAAO,CAAA,EAAS,KAAK,GAAG,CAAC,EAAG,EAAI,EAAe,AAAe,EAAf,GACnD,GAAO,CAAA,EAAO,KAAK,KAAK,CAAC,EAA7B,EACA,GAAS,AAAC,CAAA,EAAO,EAAQ,EAAQ,CAAA,EAAI,CAAA,CAAW,EAAM,EACtD,EAAY,EAAQ,CAAA,EAAI,CAAA,EACpB,GAAO,CAAA,EAAQ,KAAK,KAAK,CAAC,GAAQ,EAAY,KAAK,KAAK,CAAC,EAA7D,EACA,IAAI,EAAS,AAAA,CAAA,EAAA,EAA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EAC9B,EAAG,CAAC,EAAO,IACF,AAAC,CAAA,EAAM,CAAA,EAAS,GANJ,EADgB,KAWhC,IAAM,EAAe,EAAY,KAAK,A,G,E,Q,S,C,C,C,E,E,E,O,C,a,W,O,C,G,E,E,O,C,a,W,O,C,G,E,E,O,C,c,W,O,C,G,E,E,O,C,gB,W,O,C,G,E,E,O,C,e,W,O,C,G,E,E,O,C,a,W,O,C,G,E,E,O,C,e,W,O,C,G,E,E,O,C,c,W,O,C,G,E,E,O,C,c,W,O,C,G,E,E,O,C,e,W,O,C,G,E,E,O,C,iB,W,O,C,G,E,E,O,C,gB,W,O,C,G,E,E,O,C,c,W,O,C,G,E,E,O,C,gB,W,O,C,G,E,E,O,C,Y,W,O,C,G,E,E,O,C,Y,W,O,C,G,E,E,O,C,a,W,O,C,G,E,E,O,C,e,W,O,C,G,E,E,O,C,c,W,O,C,G,E,E,O,C,Y,W,O,C,G,E,E,O,C,c,W,O,C,G,E,E,O,C,a,W,O,C,G,E,E,O,C,a,W,O,C,G,E,E,O,C,c,W,O,C,G,E,E,O,C,gB,W,O,C,G,E,E,O,C,e,W,O,C,G,E,E,O,C,a,W,O,C,G,E,E,O,C,e,W,O,C,G,I,E,E,S,E,E,SCrB7C,SAAS,EAAY,CAAC,EACpB,MAAO,AAAA,CAAA,EAAA,EAAA,YAAW,AAAX,EAAa,AAAC,IACnB,EAAK,OAAO,CAAC,EAAK,OAAO,GAAM,AAAA,CAAA,EAAK,MAAM,GAAK,EAAI,CAAA,EAAK,GACxD,EAAK,QAAQ,CAAC,EAAG,EAAG,EAAG,EACzB,EAAG,CAAC,EAAM,KACR,EAAK,OAAO,CAAC,EAAK,OAAO,GAAK,AAAO,EAAP,EAChC,EAAG,CAAC,EAAO,IACD,AAAA,CAAA,EAAM,EAAQ,AAAC,CAAA,EAAI,iBAAiB,GAAK,EAAM,iBAAiB,EAAA,EAAM,EAAA,cAAa,EAAK,EAAA,YAAW,CAE/G,CAEO,IAAM,EAAa,EAAY,GACzB,EAAa,EAAY,GACzB,EAAc,EAAY,GAC1B,EAAgB,EAAY,GAC5B,EAAe,EAAY,GAC3B,EAAa,EAAY,GACzB,EAAe,EAAY,GAE3B,EAAc,EAAW,KAAK,CAC9B,EAAc,EAAW,KAAK,CAC9B,EAAe,EAAY,KAAK,CAChC,EAAiB,EAAc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,O,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,M,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,M,A,G,E,E,O,C,sB,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,M,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,M,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,M,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,M,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,M,A,G,E,E,O,C,mB,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,M,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,M,A,G,E,E,O,C,mB,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,M,A,G,E,E,O,C,qB,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,M,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,qB,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,M,A,G,E,E,O,C,qB,W,O,A,E,S,O,A,G,E,E,O,C,8B,W,O,A,E,S,O,A,G,E,E,O,C,qB,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,I,A,G,E,E,O,C,kB,W,O,A,E,S,I,A,G,E,E,O,C,qB,W,O,A,E,S,O,A,G,E,E,O,C,mB,W,O,A,E,S,O,A,G,E,E,O,C,qB,W,O,A,E,S,O,A,G,E,E,O,C,mB,W,O,A,E,S,K,A,G,E,E,O,C,qB,W,O,A,E,S,O,A,G,E,E,O,C,oB,W,O,A,E,S,M,A,G,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GErGA,IAAA,EAAe,AAAA,CAAA,EAAA,A,E,SAAA,OAAK,AAAL,EAAO,+D,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCFP,SAAA,EAAS,CAAS,EAE/B,IADA,IAAI,EAAI,EAAU,MAAM,CAAG,EAAI,EAAG,EAAS,AAAI,MAAM,GAAI,EAAI,EACtD,EAAI,GAAG,CAAM,CAAC,EAAE,CAAG,IAAM,EAAU,KAAK,CAAC,AAAI,EAAJ,EAAO,AAAM,EAAN,EAAE,GACzD,OAAO,CACT,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCFA,IAAA,EAAe,AAAA,CAAA,EAAA,A,E,SAAA,OAAK,AAAL,EAAO,mD,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCAtB,IAAA,EAAe,AAAA,CAAA,EAAA,A,E,SAAA,OAAK,AAAL,EAAO,mD,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCAtB,IAAA,EAAe,AAAA,CAAA,EAAA,A,E,SAAA,OAAK,AAAL,EAAO,2E,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCAtB,IAAA,EAAe,AAAA,CAAA,EAAA,A,E,SAAA,OAAK,AAAL,EAAO,yD,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCAtB,IAAA,EAAe,AAAA,CAAA,EAAA,A,E,SAAA,OAAK,AAAL,EAAO,mD,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCAtB,IAAA,EAAe,AAAA,CAAA,EAAA,A,E,SAAA,OAAK,AAAL,EAAO,yD,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCAtB,IAAA,EAAe,AAAA,CAAA,EAAA,A,E,SAAA,OAAK,AAAL,EAAO,mD,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCAtB,IAAA,EAAe,AAAA,CAAA,EAAA,A,E,SAAA,OAAK,AAAL,EAAO,2E,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCAtB,IAAA,EAAe,AAAA,CAAA,EAAA,A,E,SAAA,OAAK,AAAL,EAAO,+D,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCCX,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,SCbpB,EAAe,AAAA,GAAU,AAAA,CAAA,EAAA,EAAA,QAAkB,AAAlB,EAAoB,CAAM,CAAC,EAAO,MAAM,CAAG,EAAE,C,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCC3D,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCZT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCZT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCZT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCZT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCZT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCZT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCZT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCZT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCVT,EAAS,KAAU,CAAG,MAAM,CACrC,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA,GAAG,CAAC,EAAA,OAAK,EAEX,EAAe,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,E,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCbL,SAAA,EAAS,CAAC,EAEvB,MAAO,OACD,KAAK,GAAG,CAAC,EAAG,KAAK,GAAG,CAAC,IAAK,KAAK,KAAK,CAAC,MAAQ,AAFnD,CAAA,EAAI,KAAK,GAAG,CAAC,EAAG,KAAK,GAAG,CAAC,EAAG,GAA5B,EAEwD,CAAA,MAAQ,EAAK,CAAA,QAAU,EAAK,CAAA,OAAS,EAAK,CAAA,QAAU,AAAI,QAAJ,CAAI,CAAM,CAAC,CAAC,KAAS,KAC3H,KAAK,GAAG,CAAC,EAAG,KAAK,GAAG,CAAC,IAAK,KAAK,KAAK,CAAC,MAAQ,EAAK,CAAA,OAAS,EAAK,CAAA,MAAQ,EAAK,CAAA,OAAS,EAAK,CAAA,OAAS,AAAI,MAAJ,CAAI,CAAI,CAAC,CAAC,KAAS,KACvH,KAAK,GAAG,CAAC,EAAG,KAAK,GAAG,CAAC,IAAK,KAAK,KAAK,CAAC,MAAQ,EAAK,CAAA,OAAS,EAAK,CAAA,QAAU,EAAK,CAAA,QAAU,EAAK,CAAA,QAAU,AAAI,QAAJ,CAAI,CAAM,CAAC,CAAC,KACpH,GACR,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,SCJA,EAAe,AAAA,CAAA,EAAA,A,E,SAAA,aAAuB,AAAvB,EAAyB,AAAA,CAAA,EAAA,EAAA,OAAQ,AAAR,EAAU,IAAK,GAAK,GAAM,AAAA,CAAA,EAAA,EAAA,OAAQ,AAAR,EAAU,KAAM,GAAK,G,G,E,Q,S,C,C,C,E,E,E,O,C,O,W,O,C,G,E,E,O,C,O,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCA5E,EAAO,AAAA,CAAA,EAAA,EAAA,aAAuB,AAAvB,EAAyB,AAAA,CAAA,EAAA,EAAA,OAAQ,AAAR,EAAU,KAAM,IAAM,KAAO,AAAA,CAAA,EAAA,EAAA,OAAQ,AAAR,EAAU,GAAI,IAAM,KAEjF,EAAO,AAAA,CAAA,EAAA,EAAA,aAAuB,AAAvB,EAAyB,AAAA,CAAA,EAAA,EAAA,OAAQ,AAAR,EAAU,IAAK,IAAM,KAAO,AAAA,CAAA,EAAA,EAAA,OAAQ,AAAR,EAAU,GAAI,IAAM,KAEvF,EAAI,AAAA,CAAA,EAAA,EAAA,OAAQ,AAAR,IAEO,SAAA,EAAS,CAAC,EACnB,CAAA,EAAI,GAAK,EAAI,CAAA,GAAG,CAAA,GAAK,KAAK,KAAK,CAAC,EAApC,EACA,IAAI,EAAK,KAAK,GAAG,CAAC,EAAI,IAItB,OAHA,EAAE,CAAC,CAAG,IAAM,EAAI,IAChB,EAAE,CAAC,CAAG,IAAM,IAAM,EAClB,EAAE,CAAC,CAAG,GAAM,GAAM,EACX,EAAI,EACb,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCdA,IAAI,EAAI,AAAA,CAAA,EAAA,A,E,SAAA,GAAE,AAAF,IACJ,EAAS,KAAK,EAAE,CAAG,EACnB,EAAS,AAAU,EAAV,KAAK,EAAE,CAAO,EAEZ,SAAA,EAAS,CAAC,EACvB,IAAI,EAKJ,OAJA,EAAK,AAAA,CAAA,GAAM,CAAA,EAAK,KAAK,EAAE,CACvB,EAAE,CAAC,CAAG,IAAO,CAAA,EAAI,KAAK,GAAG,CAAC,EAAA,EAAM,EAChC,EAAE,CAAC,CAAG,IAAO,CAAA,EAAI,KAAK,GAAG,CAAC,EAAI,EAAA,EAAW,EACzC,EAAE,CAAC,CAAG,IAAO,CAAA,EAAI,KAAK,GAAG,CAAC,EAAI,EAAA,EAAW,EAClC,EAAI,EACb,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCbe,SAAA,EAAS,CAAC,EAEvB,MAAO,OACD,KAAK,GAAG,CAAC,EAAG,KAAK,GAAG,CAAC,IAAK,KAAK,KAAK,CAAC,MAAQ,AAFnD,CAAA,EAAI,KAAK,GAAG,CAAC,EAAG,KAAK,GAAG,CAAC,EAAG,GAA5B,EAEwD,CAAA,QAAU,EAAK,CAAA,SAAW,EAAK,CAAA,SAAW,EAAK,CAAA,SAAW,AAAI,SAAJ,CAAI,CAAO,CAAC,CAAC,KAAS,KAClI,KAAK,GAAG,CAAC,EAAG,KAAK,GAAG,CAAC,IAAK,KAAK,KAAK,CAAC,MAAQ,EAAK,CAAA,OAAS,EAAK,CAAA,QAAU,EAAK,CAAA,QAAU,EAAK,CAAA,QAAU,AAAI,OAAJ,CAAI,CAAK,CAAC,CAAC,KAAS,KAC5H,KAAK,GAAG,CAAC,EAAG,KAAK,GAAG,CAAC,IAAK,KAAK,KAAK,CAAC,KAAO,EAAK,CAAA,OAAS,EAAK,CAAA,SAAW,EAAK,CAAA,MAAQ,EAAK,CAAA,SAAW,AAAI,QAAJ,CAAI,CAAM,CAAC,CAAC,KACnH,GACR,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,E,E,O,C,Q,W,O,C,G,E,E,O,C,U,W,O,C,G,E,E,O,C,S,W,O,C,G,I,E,E,SCLA,SAAS,EAAK,CAAK,EACjB,IAAI,EAAI,EAAM,MAAM,CACpB,OAAO,SAAS,CAAC,EACf,OAAO,CAAK,CAAC,KAAK,GAAG,CAAC,EAAG,KAAK,GAAG,CAAC,EAAI,EAAG,KAAK,KAAK,CAAC,EAAI,KAAK,AAC/D,CACF,CAEA,IAAA,EAAe,EAAK,AAAA,CAAA,EAAA,EAAA,OAAK,AAAL,EAAO,qgDAEhB,EAAQ,EAAK,AAAA,CAAA,EAAA,EAAA,OAAK,AAAL,EAAO,qgDAEpB,EAAU,EAAK,AAAA,CAAA,EAAA,EAAA,OAAK,AAAL,EAAO,qgDAEtB,EAAS,EAAK,AAAA,CAAA,EAAA,EAAA,OAAK,AAAL,EAAO,ogD,G,E,Q,S,C,C,C,E,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,Q,W,O,A,E,S,U,A,G,E,E,O,C,S,W,O,A,E,S,O,A,G,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SEZjB,SAAA,EAAS,CAAI,EAC1B,MAAO,AAAA,CAAA,EAAA,EAAA,OAAK,AAAL,EAAO,AAAA,CAAA,EAAA,EAAA,OAAM,AAAN,EAAQ,GAAM,IAAI,CAAC,SAAS,eAAe,EAC3D,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCLA,IAAI,EAAS,EAEE,SAAA,IACb,OAAO,IAAI,CACb,CAEA,SAAS,IACP,IAAI,CAAC,CAAC,CAAG,IAAO,AAAA,CAAA,EAAE,CAAA,EAAQ,QAAQ,CAAC,GACrC,CAEA,EAAM,SAAS,CAAG,EAAM,SAAS,CAAG,CAClC,YAAa,EACb,IAAK,SAAS,CAAI,EAEhB,IADA,IAAI,EAAK,IAAI,CAAC,CAAC,CACR,CAAE,CAAA,KAAM,CAAA,GAAO,GAAI,CAAE,CAAA,EAAO,EAAK,UAAS,AAAT,EAAa,OACrD,OAAO,CAAI,CAAC,EAAG,AACjB,EACA,IAAK,SAAS,CAAI,CAAE,CAAK,EACvB,OAAO,CAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAG,CACxB,EACA,OAAQ,SAAS,CAAI,EACnB,OAAO,IAAI,CAAC,CAAC,IAAI,GAAQ,OAAO,CAAI,CAAC,IAAI,CAAC,CAAC,CAAC,AAC9C,EACA,SAAU,WACR,OAAO,IAAI,CAAC,CAAC,AACf,CACF,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCvBe,SAAA,EAAS,CAAM,CAAE,CAAI,EAMlC,OALI,EAAO,MAAM,GACf,EAAS,AAAA,CAAA,EAAA,EAAA,OAAU,AAAV,EAAY,GACR,KAAA,IAAT,GAAoB,CAAA,EAAO,EAAO,aAAa,AAAb,EACtC,EAAS,EAAO,OAAO,EAAI,CAAC,EAAO,EAE9B,MAAM,IAAI,CAAC,EAAQ,AAAA,GAAS,AAAA,CAAA,EAAA,EAAA,OAAM,AAAN,EAAQ,EAAO,GACpD,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCPe,SAAA,EAAS,CAAQ,EAC9B,MAAO,AAAoB,UAApB,OAAO,EACR,IAAI,EAAA,SAAQ,CAAE,CAAC,SAAS,gBAAgB,CAAC,GAAU,CAAE,CAAC,SAAS,eAAe,CAAC,EAC/E,IAAI,EAAA,SAAQ,CAAE,CAAC,AAAA,CAAA,EAAA,EAAA,OAAI,AAAJ,EAAM,GAAU,CAAE,EAAA,IAAG,CAC5C,C,G,E,Q,S,C,C,C,E,E,E,O,C,M,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,M,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,O,W,O,A,E,S,I,A,G,E,E,O,C,iB,W,O,A,E,S,c,A,G,E,E,O,C,e,W,O,A,E,S,Y,A,G,E,E,O,C,a,W,O,A,E,S,U,A,G,E,E,O,C,S,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,c,W,O,A,E,S,W,A,G,E,E,O,C,U,W,O,A,E,S,W,A,G,E,E,O,C,iB,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,mB,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,K,A,G,E,E,O,C,a,W,O,A,E,S,K,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,sB,W,O,A,E,S,O,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,wB,W,O,A,E,S,O,A,G,E,E,O,C,sB,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,S,A,G,E,E,O,C,iB,W,O,A,E,S,S,A,G,E,E,O,C,e,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,S,A,G,E,E,O,C,kB,W,O,A,E,S,U,A,G,E,E,O,C,Q,W,O,A,E,S,O,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,E,O,C,uB,W,O,A,E,S,O,A,G,E,E,O,C,kB,W,O,A,E,S,O,A,G,E,E,O,C,wB,W,O,A,E,S,O,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,E,O,C,uB,W,O,A,E,S,O,A,G,E,E,O,C,sB,W,O,A,E,S,O,A,G,E,E,O,C,uB,W,O,A,E,S,O,A,G,E,E,O,C,sB,W,O,A,E,S,O,A,G,E,E,O,C,iB,W,O,A,E,S,O,A,G,E,E,O,C,oB,W,O,A,E,S,O,A,G,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,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7B,C,G,E,Q,S,C,C,C,E,E,E,O,C,e,W,O,A,E,S,Y,A,G,E,E,O,C,iB,W,O,A,E,S,W,A,G,E,E,O,C,kB,W,O,A,E,S,Y,A,G,E,E,O,C,kB,W,O,A,E,S,W,A,G,E,E,O,C,mB,W,O,A,E,S,Y,A,G,E,E,O,C,Y,W,O,A,E,S,M,A,G,E,E,O,C,a,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,M,A,G,E,E,O,C,c,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,U,A,G,E,E,O,C,c,W,O,A,E,S,W,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,a,W,O,A,E,S,U,A,G,E,E,O,C,W,W,O,A,E,S,Q,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,Q,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,Q,A,G,E,E,O,C,S,W,O,A,E,S,M,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,Q,A,G,E,E,O,C,W,W,O,A,E,S,U,A,G,E,E,O,C,Y,W,O,A,E,S,W,A,G,E,E,O,C,a,W,O,A,E,S,U,A,G,E,E,O,C,c,W,O,A,E,S,W,A,G,E,E,O,C,a,W,O,A,E,S,U,A,G,E,E,O,C,c,W,O,A,E,S,W,A,G,E,E,O,C,c,W,O,A,E,S,W,A,G,E,E,O,C,e,W,O,A,E,S,Y,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,iB,W,O,A,E,S,c,A,G,E,E,O,C,e,W,O,A,E,S,Y,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,a,W,O,A,E,S,U,A,G,E,E,O,C,c,W,O,A,E,S,W,A,G,E,E,O,C,e,W,O,A,E,S,Y,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,U,W,O,A,E,S,S,A,G,E,E,O,C,W,W,O,A,E,S,U,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,a,W,O,A,E,S,U,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,a,W,O,A,E,S,U,A,G,E,E,O,C,a,W,O,A,E,S,U,A,G,E,E,O,C,c,W,O,A,E,S,W,A,G,E,E,O,C,e,W,O,A,E,S,Y,A,G,E,E,O,C,gB,W,O,A,E,S,a,A,G,E,E,O,C,c,W,O,A,E,S,W,A,G,E,E,O,C,e,W,O,A,E,S,Y,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,a,W,O,A,E,S,U,A,G,E,E,O,C,c,W,O,A,E,S,W,A,G,E,E,O,C,e,W,O,A,E,S,Y,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,a,W,O,A,E,S,U,A,G,E,E,O,C,W,W,O,A,E,S,Q,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,W,W,O,A,E,S,Q,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,Q,A,G,E,E,O,C,W,W,O,A,E,S,Q,A,G,E,E,O,C,kB,W,O,A,E,S,e,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,mB,W,O,A,E,S,gB,A,G,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,0B,W,O,A,E,S,O,A,G,E,E,O,C,a,W,O,A,E,S,U,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,Y,W,O,A,E,S,S,A,G,E,E,O,C,W,W,O,A,E,S,Q,A,G,E,E,O,C,mB,W,O,A,E,S,O,A,G,E,E,O,C,Y,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,S,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,e,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,SGFW,EAAe,wBAU1B,EAJgB,KAAK,SAAS,CAAC,WAAW,CAJ1C,SAAyB,CAAI,EAC3B,OAAO,EAAK,WAAW,EACzB,EAIM,AAAA,CAAA,EAAA,EAAA,SAAQ,AAAR,EAAU,E,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCEhB,EAJe,CAAC,IAAI,KAAK,4BALzB,SAAwB,CAAM,EAC5B,IAAI,EAAO,IAAI,KAAK,GACpB,OAAO,MAAM,GAAQ,KAAO,CAC9B,EAIM,AAAA,CAAA,EAAA,EAAA,QAAO,AAAP,EAAS,EAAA,YAAW,C,G,E,Q,S,C,C,C,E,E,E,O,C,M,W,O,A,E,S,G,A,G,E,E,O,C,Q,W,O,A,E,S,K,A,G,E,E,O,C,a,W,O,A,E,S,U,A,G,E,E,O,C,U,W,O,A,E,S,O,A,G,E,E,O,C,W,W,O,A,E,S,O,A,G,E,S,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,SERX,SAAA,EAAS,CAAQ,CAAE,CAAK,CAAE,CAAI,EAC3C,IAAI,EAAI,IAAI,EAAA,KAAI,CAAG,EAAQ,SACd,MAAT,IACJ,EAAE,QAAQ,CAAG,EAAE,OAAO,CACtB,EAAE,OAAO,CAAG,SAAS,CAAQ,CAAE,CAAK,CAAE,CAAI,EACxC,EAAQ,CAAC,EAAO,EAAO,AAAQ,MAAR,EAAe,AAAA,CAAA,EAAA,EAAA,GAAE,AAAF,IAAQ,CAAC,EAC/C,EAAE,QAAQ,CAAC,SAAS,EAAK,CAAO,EAC9B,GAAW,EACX,EAAE,QAAQ,CAAC,EAAM,GAAS,EAAO,GACjC,EAAS,EACX,EAAG,EAAO,EACZ,GAT0B,EAAE,OAAO,CAAC,EAAU,EAAO,GAAO,CAY9D,C,G,E,Q,S,C,C,C,E,E,E,O,C,O,W,O,A,E,S,O,A,G,E,E,O,C,gB,W,O,A,E,S,O,A,G,E,E,O,C,e,W,O,A,E,S,Q,A,G,E,E,O,C,gB,W,O,A,E,S,S,A,G,E,S,E,Q,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,S,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SEJA,SAAS,EAAc,CAAK,EAC1B,MAAQ,AAAA,CAAA,CAAC,EAAM,OAAO,EAAI,AAAe,UAAf,EAAM,IAAI,AAAK,GAAY,CAAC,EAAM,MAAM,AACpE,CAEA,SAAS,IACP,IAAI,EAAI,IAAI,QACZ,AAAI,aAAa,WAEf,AAAI,AADJ,CAAA,EAAI,EAAE,eAAe,EAAI,CAAA,EACnB,YAAY,CAAC,WAEV,CAAC,CAAC,AADT,CAAA,EAAI,EAAE,OAAO,CAAC,OAAO,AAAP,EACH,CAAC,CAAE,EAAE,CAAC,CAAC,CAAE,CAAC,EAAE,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DA,EAAI,IAAI,CAAG,sBACL,EACR,CAEA,SAAS,IACP,OAAO,CACT,CAHA,EAAK,UAAU,CAAG,EAMlB,IAAI,EAAiB,CACnB,MAAO,EACP,KAAM,EACN,KAAM,EACN,OAAQ,EACR,OAAQ,EACR,OAAQ,EACR,OAAQ,EAER,IAAK,EACL,QAAS,EACT,QAAS,EACT,YAAa,EACb,WAAY,EACZ,KAAM,EACN,SAAU,EACV,MAAO,EACP,UAAW,EACX,MAAO,EACP,MAAO,EAEP,eAAgB,EAChB,kBAAmB,CACrB,EAIA,OAFA,EAAe,SAAS,CAAG,EAEpB,CACT,C,G,E,Q,S,C,C,C,ECxDA,YAIA,CAAA,EAAA,OAAA,CAF2B,8C,G,E,Q,S,C,C,C,ECF3B,YAsDA,CAAA,EAAA,OAAA,CA3Cc,WAAY,C,G,E,Q,S,C,C,C,EClB1B,a,E,E,O,E,E,E,O,C,a,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,U,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,e,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,iB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,kB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,oB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,gB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,gB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,qB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,kB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,mB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,qB,W,O,C,E,S,C,E,O,E,C,G,E,E,O,C,Y,W,O,C,E,S,C,E,O,E,C,G,IAIA,EACA,EAAkB,EAAuB,EAAyB,EAA0B,EAA4B,EAAwB,EAAwB,EAA6B,EAA0B,EAA2B,EAA6B,EAMnR,EAAQ,EAAe,EAGvB,EAAoB,EAAoB,EAAkB,EAK1D,EAAe,EAAmB,EAAiB,E,E,E,SAfvD,EAAqB,CAAA,EACrB,EAAkB,EAAuB,EAAyB,EAA0B,EAA4B,EAAwB,EAAwB,EAA6B,EAA0B,EAA2B,EAA6B,EAAoB,KAAK,EAEhT,IAAI,EAAS,EAAb,EAAA,UAEI,EAAY,YAgBhB,GAfA,EAAoB,EAEpB,EAAuB,EACvB,EAAwB,EAExB,EAA0B,EAC1B,EAA2B,EAC3B,EAA6B,EAC7B,EAA6B,EAE7B,EAAyB,EACzB,EAA0B,EAC1B,EAA4B,EAC5B,EAAwB,EAEpB,EAAO,OAAO,CAAE,CAClB,IAAI,EAAwB,AA0B9B,WAoBE,IAAK,IAHD,EAAe,EAhBf,EAAQ,SAAS,aAAa,CAAC,OAAO,KAAK,CAC3C,EAAY,CACd,EAAG,SAAW,CAAC,EACb,MAAO,IAAM,EAAE,WAAW,EAC5B,EACA,IAAK,SAAa,CAAC,EACjB,OAAO,EAAE,WAAW,EACtB,EACA,OAAQ,SAAgB,CAAC,EACvB,MAAO,SAAW,CACpB,EACA,GAAI,SAAY,CAAC,EACf,MAAO,KAAO,CAChB,CACF,EACI,EAAU,OAAO,IAAI,CAAC,GAEtB,EAAS,GAEJ,EAAI,EAAG,EAAI,EAAQ,MAAM,CAAE,IAAK,CACvC,IAAI,EAAS,CAAO,CAAC,EAAE,CAEvB,GAAI,EAAS,wBAAwB,EAAO,CAC1C,EAAS,IAAM,EAAO,WAAW,GACjC,EAAgB,CAAS,CAAC,EAAO,CAAC,iBAClC,EAAe,CAAS,CAAC,EAAO,CAAC,gBACjC,KACF,CACF,CAKA,MAHI,CAAC,GAAiB,uBAAwB,GAAO,CAAA,EAAgB,eAArE,EACI,CAAC,GAAgB,kBAAmB,GAAO,CAAA,EAAe,cAA9D,EACA,EAAQ,KACD,CACL,aAAc,EACd,cAAe,EACf,OAAQ,CACV,CACF,IA/DE,EAAS,EAAsB,MAAM,CACrC,EAAwB,EAAgB,EAAsB,aAAa,CAC3E,EAAuB,EAAe,EAAsB,YAAY,CACxE,EAAoB,EAAY,EAAS,IAAM,EAC/C,EAA6B,EAAqB,EAAS,uBAC3D,EAA6B,EAAqB,EAAS,uBAC3D,EAA0B,EAAkB,EAAS,oBACrD,EAA2B,EAAmB,EAAS,8BACvD,EAAwB,EAAgB,EAAS,kBACjD,EAA4B,EAAoB,EAAS,sBACzD,EAA0B,EAAkB,EAAS,mBACrD,EAAyB,EAAiB,EAAS,4BACrD,CAUA,EARe,CACb,UAAW,EACX,IAAK,EACL,SAAU,EACV,OAAQ,EACR,MAAO,EACP,SAAU,CACZ,C,G,E,Q,S,C,C,C,EC3CA,EAAA,OAAA,CANA,SAAgC,CAAG,EACjC,OAAO,GAAO,EAAI,UAAU,CAAG,EAAM,CACnC,QAAW,CACb,CACF,C,G,E,Q,S,C,C,C,ECJA,YAEA,CAAA,EAAA,OAAA,CAAQ,UAAU,CAAG,CAAA,EACrB,EAAA,OAAA,CAAQ,OAAO,CAAG,KAAK,EAEvB,IAAI,EAAW,CAAC,CAAE,CAAA,AAAkB,aAAlB,OAAO,QAA0B,OAAO,QAAQ,EAAI,OAAO,QAAQ,CAAC,aAAa,AAAb,CAEtF,CAAA,EAAA,OAAA,CAAQ,OAAO,CAAG,EAClB,EAAA,OAAA,CAAiB,EAAA,OAAO,CAAC,OAAU,A,G,E,Q,S,C,C,C,ECRnC,a,I,E,E,QAIA,CAAA,EAAA,OAAA,CAAQ,UAAU,CAAG,CAAA,EACrB,EAAA,OAAA,CAAQ,OAAO,CAAG,KAAK,EAEvB,IAAI,EAAS,EAAb,EAAA,UAEI,EAAK,WAAe,CAEpB,CAAA,EAAO,OAAO,EAChB,CAAA,EACE,AAAI,SAAS,gBAAgB,CAAS,SAAU,CAAI,CAAE,CAAS,CAAE,CAAO,CAAE,CAAO,EAC/E,OAAO,EAAK,gBAAgB,CAAC,EAAW,EAAS,GAAW,CAAA,EAC9D,EAAW,SAAS,WAAW,CAAS,SAAU,CAAI,CAAE,CAAS,CAAE,CAAO,EACxE,OAAO,EAAK,WAAW,CAAC,KAAO,EAAW,SAAU,CAAC,EAEnD,AADA,CAAA,EAAI,GAAK,OAAO,KAAK,AAAL,EACd,MAAM,CAAG,EAAE,MAAM,EAAI,EAAE,UAAU,CACnC,EAAE,aAAa,CAAG,EAClB,EAAQ,IAAI,CAAC,EAAM,EACrB,EACF,QACF,EAGF,IAAI,EAAW,CACf,CAAA,EAAA,OAAA,CAAQ,OAAO,CAAG,EAClB,EAAA,OAAA,CAAiB,EAAA,OAAO,CAAC,OAAU,A,G,E,Q,S,C,C,C,EC5BnC,a,I,E,E,QAIA,CAAA,EAAA,OAAA,CAAQ,UAAU,CAAG,CAAA,EACrB,EAAA,OAAA,CAAQ,OAAO,CAAG,KAAK,EAEvB,IAAI,EAAS,EAAb,EAAA,UAEI,EAAM,WAAgB,CAEtB,CAAA,EAAO,OAAO,EAChB,CAAA,EACE,AAAI,SAAS,gBAAgB,CAAS,SAAU,CAAI,CAAE,CAAS,CAAE,CAAO,CAAE,CAAO,EAC/E,OAAO,EAAK,mBAAmB,CAAC,EAAW,EAAS,GAAW,CAAA,EACjE,EAAW,SAAS,WAAW,CAAS,SAAU,CAAI,CAAE,CAAS,CAAE,CAAO,EACxE,OAAO,EAAK,WAAW,CAAC,KAAO,EAAW,EAC5C,QACF,EAGF,IAAI,EAAW,CACf,CAAA,EAAA,OAAA,CAAQ,OAAO,CAAG,EAClB,EAAA,OAAA,CAAiB,EAAA,OAAO,CAAC,OAAU,A,G,E,Q,S,C,C,C,ECvBnC,a,I,E,E,SAIA,OAAO,cAAc,CAAC,EAAA,OAAA,CAAS,aAAc,CAC3C,MAAO,CAAA,CACT,GACA,OAAO,cAAc,CAAC,EAAA,OAAA,CAAS,mBAAoB,CACjD,WAAY,CAAA,EACZ,IAAK,WACH,OAAO,EAAkB,OAAO,AAClC,CACF,GACA,OAAO,cAAc,CAAC,EAAA,OAAA,CAAS,eAAgB,CAC7C,WAAY,CAAA,EACZ,IAAK,WACH,OAAO,EAAc,OAAO,AAC9B,CACF,GACA,OAAO,cAAc,CAAC,EAAA,OAAA,CAAS,WAAY,CACzC,WAAY,CAAA,EACZ,IAAK,WACH,OAAO,EAAU,OAAO,AAC1B,CACF,GACA,OAAO,cAAc,CAAC,EAAA,OAAA,CAAS,sBAAuB,CACpD,WAAY,CAAA,EACZ,IAAK,WACH,OAAO,EAAqB,OAAO,AACrC,CACF,GACA,OAAO,cAAc,CAAC,EAAA,OAAA,CAAS,MAAO,CACpC,WAAY,CAAA,EACZ,IAAK,WACH,OAAO,EAAK,OAAO,AACrB,CACF,GAEA,IAAI,EAAoB,EAAxB,EAAA,UAEI,EAAgB,EAApB,EAAA,UAEI,EAAY,EAAhB,EAAA,UAEI,EAAuB,EAA3B,EAAA,UAEI,EAAO,EAAX,EAAA,S,G,E,Q,S,C,C,C,ECxCA,EAAA,OAAA,CANA,SAAgC,CAAG,EACjC,OAAO,GAAO,EAAI,UAAU,CAAG,EAAM,CACnC,QAAS,CACX,CACF,C,G,E,Q,S,C,C,C,ECJA,a,I,E,E,SAIA,OAAO,cAAc,CAAC,EAAA,OAAA,CAAS,aAAc,CAC3C,MAAO,CAAA,CACT,GACA,EAAA,OAAA,CAAQ,OAAO,CAAG,KAAK,EAEvB,IAAI,EAAS,EAAb,EAAA,UAEe,EAAf,EAAA,UAYA,EAAA,OAAA,CAAQ,OAAO,CAVQ,SAA0B,CAAK,EACxC,EAAM,KAAK,CAAvB,IACI,EAAW,EAAM,QAAQ,CAET,EAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAGpD,C,G,E,Q,S,C,C,C,ECpBA,a,I,E,E,SAIA,OAAO,cAAc,CAAC,EAAA,OAAA,CAAS,aAAc,CAC3C,MAAO,CAAA,CACT,GACA,EAAA,OAAA,CAAQ,OAAO,CAMf,SAAsB,CAAM,EAC1B,IAQI,EARA,EAAW,EAAO,QAAQ,CAC1B,EAAa,EAAO,UAAU,CAC9B,EAAS,EAAO,MAAM,CACtB,EAAQ,EAAO,KAAK,CACpB,EAAa,EAAO,UAAU,CAC9B,EAAa,EAAO,UAAU,CAC9B,EAAW,EAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAY,EACrD,EAAQ,EAAc,AAAA,CAAA,EAAS,CAAA,EAAS,EAkB5C,OAfK,EASM,EAAQ,EACjB,EAAQ,KAAK,GAAG,CAAC,EAAQ,EAAU,OAAO,CAAC,eAAe,EAAI,EACrD,EAAQ,GACjB,CAAA,EAAQ,EAAW,EAAI,KAAK,GAAG,CAAC,AAAC,CAAA,EAAW,CAAA,EAAS,EAAU,OAAO,CAAC,eAAe,CAAA,EAVlF,EAAQ,EAEV,EAAa,AAAA,CAAA,AADb,CAAA,EAAQ,CAAA,EACa,CAAA,EAAc,EAAa,EACvC,EAAQ,GAEjB,CAAA,EAAa,AAAA,CAAA,AADb,CAAA,EAAQ,CAAR,EACqB,CAAA,EAAc,EAAa,CAAhD,EAQG,CACL,MAAO,EACP,OAAQ,CACV,CACF,EAlCA,IAAI,EAAS,EAAb,EAAA,UAEI,EAAY,EAAhB,EAAA,S,G,E,Q,S,C,C,C,ECXA,aAEA,OAAO,cAAc,CAAC,EAAA,OAAA,CAAS,aAAc,CAC3C,MAAO,CAAA,CACT,GACA,EAAA,OAAA,CAAQ,OAAO,CAAG,KAAK,EAQvB,EAAA,OAAA,CAAQ,OAAO,CAPA,CACb,gBAAiB,GAGjB,sBAAuB,CAEzB,C,G,E,Q,S,C,C,C,ECZA,a,I,E,E,SAIA,OAAO,cAAc,CAAC,EAAA,OAAA,CAAS,aAAc,CAC3C,MAAO,CAAA,CACT,GACA,EAAA,OAAA,CAAQ,OAAO,CAAG,KAAK,EAEvB,IAAI,EAAS,EAAb,EAAA,SA6BA,CAAA,EAAA,OAAA,CAAQ,OAAO,CA3BW,SAA6B,CAAK,CAAE,CAAS,EACrE,IAAI,EAAmB,CAAA,EAEnB,EAAiB,SAAwB,CAAK,EAChD,OAAO,EAAQ,EAAM,GAAG,CAAG,OAC7B,EAEA,GAAI,EAAM,QAAQ,CAAC,MAAM,EAAI,EAAU,QAAQ,CAAC,MAAM,CAAE,CAGtD,IAAI,EAAS,AAFC,EAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAM,QAAQ,CAAE,EAEtC,CAAC,EAAM,KAAK,CAAC,OAE7B,GAKE,IAFS,AAFC,EAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAU,QAAQ,CAAE,EAE1C,CAAC,EAAU,KAAK,CAAC,EAGnC,CAAA,EAAmB,CAAA,CADrB,CAIJ,CAEA,OAAO,CACT,C,G,E,Q,S,C,C,C,ECnCA,aAEA,OAAO,cAAc,CAAC,EAAA,OAAA,CAAS,aAAc,CAC3C,MAAO,CAAA,CACT,GACA,EAAA,OAAA,CAAQ,OAAO,CAAG,KAAK,EASvB,EAAA,OAAA,CAAQ,OAAO,CANf,SAAa,CAAC,CAAE,CAAC,EACf,IAAI,EAAI,EAAI,EACZ,OAAO,EAAI,EAAI,EAAI,EAAI,CACzB,C,G,E,Q,S,C,C,C,ECXA,a,I,E,E,SAIA,OAAO,cAAc,CAAC,EAAA,OAAA,CAAS,aAAc,CAC3C,MAAO,CAAA,CACT,GACA,EAAA,OAAA,CAAQ,OAAO,CAAG,KAAK,EAEvB,IAAI,EAAiB,EAArB,EAAA,U,E,E,SAII,EAAW,AAAC,CAAA,EAAG,EAAe,OAAO,AAAP,EAAwB,AAAA,CAAA,EAAG,EAAA,GAAc,AAAd,EAAiB,OAAQ,CACpF,EAAG,8DACL,GAAI,YAEJ,CAAA,EAAA,OAAA,CAAQ,OAAO,CAAG,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCflB,EAAe,AAAA,CAAA,EAAA,EAAA,OAAY,AAAZ,EAA4B,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,OAAQ,CACtD,EAAG,uGACL,GAAI,Q,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCFJ,EAAe,AAAA,CAAA,EAAA,EAAA,OAAY,AAAZ,EAA4B,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,OAAQ,CACtD,EAAG,qCACL,GAAI,M,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCCW,SAAA,EAAmB,CAAnB,EAAmB,GAAA,CAAA,KAChC,CAAI,CAAA,KACJ,EAAO,CAAA,CAAA,CAAA,QACP,EAAU,EAAE,CAAA,SACZ,EAAW,CAAC,CAAA,CAAA,cACZ,CAAa,CAAA,OACb,EAAS,KAAO,CAAA,CAAA,SAChB,CAAQ,CAET,CATiC,EAQ7B,EAAA,AAAA,CAAA,EAAA,EAAA,CAAA,AAAA,EAR6B,EAAA,CAChC,OACA,OACA,UACA,WACA,gBACA,SACA,W,EAIA,GAAM,CAAC,EAAQ,EAAU,CAAG,AAAA,EAAA,GAAM,QAAQ,CAAC,GAM3C,MAJA,AAAA,CAAA,EAAA,EAAA,SAAQ,AAAR,EAAU,KACR,EAAU,EACZ,EAAG,CAAC,EAAK,EAGP,AAAA,CAAA,EAAA,EAAA,IAAA,AAAA,EAAC,MADH,CACO,GAAG,a,S,CACN,AAAA,CAAA,EAAA,EAAA,GAAA,AAAA,EAAC,EAAA,OAAQ,CAAT,AAAA,CAAA,EAAA,EAAA,CAAA,AAAA,EAAA,AAAA,CAAA,EAAA,EAAA,CAAA,AAAA,EAAA,CACE,UAAU,mBACV,UAAU,aACV,UAAU,KACV,KAAM,GAAQ,CAAA,MAAA,EAAA,KAAA,EAAA,EAAe,IAAI,AAAJ,GAAQ,AAAA,CAAA,EAAA,EAAA,GAAA,AAAA,EAAC,EAAA,OAAW,CAAjD,CAAA,GACA,KAAM,EACN,SAAU,EACV,QAAS,CACP,IAAK,gBACP,EACA,OAAQ,CAAC,EAAO,KACC,UAAX,GAAoB,IACxB,EAAU,CAAA,EACZ,EACA,QAAS,KACP,EAAU,CAAA,EACZ,EACA,QAAS,AAAA,IACP,EAAM,eAAe,GACrB,EAAU,CAAA,GACN,CAAA,MAAA,EAAA,KAAA,EAAA,EAAe,OAAO,AAAP,GAAS,EAAc,OAAO,CAAC,EACpD,CACI,EAAA,GAAA,CAEH,SAAA,EACE,MAAM,CAAC,AAAA,GAAU,CAAC,EAAO,QAAQ,EACjC,GAAG,CAAC,AAAA,GACH,AAAA,CAAA,EAAA,EAAA,GAAA,AAAA,EAAC,EAAA,OAAc,CAHlB,CAIK,aACE,AAAA,CAAA,EAAA,EAAA,GAAA,AAAA,EAAC,EAAA,OAAS,CADZ,CACc,MAAO,CAAE,WAAY,QAAS,EAAG,QAAQ,QAClD,SAAA,EAAO,YAAY,A,GAIxB,QAAS,CACP,cAAe,0BACjB,EACA,KAAM,EAAO,IAAI,CACjB,YAAA,CAAA,EACA,QAAS,AAAA,IACP,EAAM,eAAe,GACrB,EAAO,OAAO,CAAC,EACjB,CATK,EAAA,EAAO,YAAY,E,IAa/B,GACC,AAAA,CAAA,EAAA,EAAA,GAAA,AAAA,EAAC,EAAA,OAAG,CADL,CACO,GAAI,EACR,SAAA,AAAA,CAAA,EAAA,EAAA,GAAA,AAAA,EAAC,EAAA,OAAS,CAAV,CACE,UAAU,2CACV,QAAQ,QAER,SAAA,AAAA,CAAA,EAAA,EAAA,GAAA,AAAA,EAAC,OAAD,CAAO,SAAA,EAAc,KAAK,A,E,E,GAK/B,E,A,EAGP,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,S,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SClFA,IAAM,EAAY,CAAC,MAAM,CACnB,EAAa,CAAC,YAAa,WAAY,WAAY,YAAa,YAAa,SAAU,OAAQ,SAAU,UAAW,UAAW,YAAa,eAAgB,eAAgB,SAAU,OAAQ,WAAY,sBAAuB,qBAAsB,kBAAkB,CACzQ,EAAa,CAAC,MAAM,CAmBpB,EAAoB,AAAA,IACxB,GAAM,CAAA,QACJ,CAAO,CAAA,KACP,CAAI,CAAA,UACJ,CAAS,CACV,CAAG,EACE,EAAQ,CACZ,KAAM,CAAC,OAAQ,CAAC,SAAS,EAAE,AAAA,CAAA,EAAA,EAAA,OAAS,AAAT,EAAW,GAAW,CAAC,CAAC,CACnD,IAAK,CAAC,MAAM,CACZ,QAAS,CAAC,UAAW,CAAC,GAAQ,gBAAgB,AAChD,EACA,MAAO,AAAA,CAAA,EAAA,EAAA,OAAa,AAAb,EAAe,EAAO,EAAA,wBAAuB,CAAG,EACzD,EAEA,SAAS,EAAe,CAAS,QAC/B,AAAI,AAAc,OAAd,GAAsB,AAAc,SAAd,EACjB,WAGL,AAAc,UAAd,GAAyB,AAAc,SAAd,EACpB,mBAIX,CAgBA,IAAM,EAAgB,AAAA,CAAA,EAAA,EAAA,OAAK,AAAL,EAAO,MAAO,CAClC,KAAM,eACN,KAAM,OACN,kBAAmB,CAAC,EAAO,KACzB,GAAM,CAAA,WACJ,CAAU,CACX,CAAG,EACJ,MAAO,CAAC,EAAO,IAAI,CAAE,CAAM,CAAC,CAAC,SAAS,EAAE,AAAA,CAAA,EAAA,EAAA,OAAS,AAAT,EAAW,EAAW,SAAS,EAAE,CAAC,CAAC,CAAC,AAC9E,CACF,GAAG,CAAC,CAAA,MACF,CAAK,CAAA,WACL,CAAU,CACX,GAAK,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACb,OAAQ,EAAM,MAAM,CAAC,SAAS,CAC9B,QAAS,OACT,WAAY,SACZ,cAAe,MACjB,EAAG,AAAyB,OAAzB,EAAW,SAAS,EAAa,CAClC,cAAe,iBACf,CAAC,CAAC,GAAG,EAAE,AAAA,EAAA,OAAe,CAAE,OAAO,CAAC,CAAC,CAAC,CAAE,CAClC,cAAe,iBACf,aAAc,IACd,cAAe,EACjB,CACF,EAAG,AAAyB,SAAzB,EAAW,SAAS,EAAe,CACpC,cAAe,SACf,CAAC,CAAC,GAAG,EAAE,AAAA,EAAA,OAAe,CAAE,OAAO,CAAC,CAAC,CAAC,CAAE,CAClC,cAAe,SACf,UAAW,IACX,WAAY,EACd,CACF,EAAG,AAAyB,SAAzB,EAAW,SAAS,EAAe,CACpC,cAAe,cACf,CAAC,CAAC,GAAG,EAAE,AAAA,EAAA,OAAe,CAAE,OAAO,CAAC,CAAC,CAAC,CAAE,CAClC,cAAe,cACf,YAAa,IACb,aAAc,EAChB,CACF,EAAG,AAAyB,UAAzB,EAAW,SAAS,EAAgB,CACrC,cAAe,MACf,CAAC,CAAC,GAAG,EAAE,AAAA,EAAA,OAAe,CAAE,OAAO,CAAC,CAAC,CAAC,CAAE,CAClC,cAAe,MACf,WAAY,IACZ,YAAa,EACf,CACF,IACM,EAAe,AAAA,CAAA,EAAA,EAAA,OAAK,AAAL,EAAO,EAAA,OAAE,CAAG,CAC/B,KAAM,eACN,KAAM,MACN,kBAAmB,CAAC,EAAO,IAAW,EAAO,GAAG,AAClD,GAAG,IAAO,CAAA,CACR,cAAe,MACjB,CAAA,GACM,EAAmB,AAAA,CAAA,EAAA,EAAA,OAAK,AAAL,EAAO,MAAO,CACrC,KAAM,eACN,KAAM,UACN,kBAAmB,CAAC,EAAO,KACzB,GAAM,CAAA,WACJ,CAAU,CACX,CAAG,EACJ,MAAO,CAAC,EAAO,OAAO,CAAE,CAAC,EAAW,IAAI,EAAI,EAAO,aAAa,CAAC,AACnE,CACF,GAAG,CAAC,CAAA,WACF,CAAU,CACX,GAAK,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACb,QAAS,OACT,cAAe,MACjB,EAAG,CAAC,EAAW,IAAI,EAAI,CACrB,WAAY,qBACZ,cAAe,MACjB,IACM,EAAyB,EAAA,UAAA,CAAiB,SAAmB,CAAO,CAAE,CAAG,EAC7E,IAAM,EAAQ,AAAA,CAAA,EAAA,EAAA,OAAY,AAAZ,EAAc,CAC1B,MAAO,EACP,KAAM,cACR,GACM,EAAQ,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,IACR,EAA4B,CAChC,MAAO,EAAM,WAAW,CAAC,QAAQ,CAAC,cAAc,CAChD,KAAM,EAAM,WAAW,CAAC,QAAQ,CAAC,aAAa,AAChD,EAEM,CAAA,UACJ,CAAS,CACT,SAAU,CACR,IAAK,CAAiB,CACvB,CAAG,CAAC,CAAC,CACN,SAAU,CAAY,CAAA,UACtB,CAAS,CAAA,UACT,EAAY,IAAA,CAAA,OACZ,EAAS,CAAA,CAAA,CAAA,KACT,CAAI,CAAA,OACJ,CAAM,CAAA,QACN,CAAO,CAAA,QACP,CAAO,CAAA,UACP,CAAS,CAAA,aACT,CAAY,CAAA,aACZ,CAAY,CAAA,OACZ,CAAM,CACN,KAAM,CAAQ,CAAA,oBACd,EAAsB,EAAA,OAAG,AAAA,CAAA,mBACzB,EAAqB,CAAA,CAAA,gBACrB,CAAe,CAChB,CAAG,EACE,EAAW,AAAA,CAAA,EAAA,EAAA,OAA4B,AAA5B,EAA8B,EAAM,QAAQ,CAAE,GACzD,EAAQ,AAAA,CAAA,EAAA,EAAA,OAA4B,AAA5B,EAA8B,EAAO,GAE7C,CAAC,EAAM,EAAa,CAAG,AAAA,CAAA,EAAA,EAAA,OAAY,AAAZ,EAAc,CACzC,WAAY,EACZ,QAAS,CAAA,EACT,KAAM,YACN,MAAO,MACT,GAEM,EAAa,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,EAAG,EAAO,CACrC,KAAA,EACA,UAAA,CACF,GAEM,EAAU,EAAkB,GAC5B,EAAa,EAAnB,MAAA,GACA,EAAA,SAAA,CAAgB,IACP,KACL,aAAa,EAAW,OAAO,CACjC,EACC,EAAE,EAKL,IAAM,EAAgB,EAAA,MAAA,CAAa,GAS7B,EAAmB,EAFxB,MAAA,GASK,EAAU,EAAA,MAAA,CAAa,EAAE,CAC/B,CAAA,EAAQ,OAAO,CAAG,CAAC,EAAQ,OAAO,CAAC,EAAE,CAAC,CACtC,IAAM,EAAkB,EAAA,WAAA,CAAkB,AAAA,IACxC,EAAQ,OAAO,CAAC,EAAE,CAAG,CACvB,EAAG,EAAE,EACC,EAAe,AAAA,CAAA,EAAA,EAAA,OAAS,AAAT,EAAW,EAAmB,GAS7C,GAAuC,CAAC,EAAiB,IACtD,AAAA,IACL,EAAQ,OAAO,CAAC,EAAkB,EAAE,CAAG,EAEnC,GACF,EAAc,EAElB,EAmCF,EAAA,SAAA,CAAgB,KAET,IACH,EAAc,OAAO,CAAG,EACxB,EAAiB,OAAO,CAAG,KAAA,EAE/B,EAAG,CAAC,EAAK,EAET,IAAM,GAAc,AAAA,IACC,eAAf,EAAM,IAAI,EAAqB,GACjC,EAAa,GAGI,SAAf,EAAM,IAAI,EAAe,GAC3B,EAAO,GAGT,aAAa,EAAW,OAAO,EAE3B,AAAe,SAAf,EAAM,IAAI,CACZ,EAAW,OAAO,CAAG,WAAW,KAC9B,EAAa,CAAA,GAET,GACF,EAAQ,EAAO,OAEnB,IAEA,EAAa,CAAA,GAET,GACF,EAAQ,EAAO,cAGrB,EAwBM,GAAa,AAAA,IACE,eAAf,EAAM,IAAI,EAAqB,GACjC,EAAa,GAGI,UAAf,EAAM,IAAI,EAAgB,GAC5B,EAAQ,GAMV,aAAa,EAAW,OAAO,EAE1B,GAEH,CAAA,EAAW,OAAO,CAAG,WAAW,KAC9B,EAAa,CAAA,GAET,GAKF,EAAO,EAAO,AAJG,CACf,MAAO,QACP,WAAY,YACd,CACsB,CAAC,EAAM,IAAI,CAAC,CAEtC,EAAA,CAEJ,EAGM,GAAK,EAAU,OAAO,CAAC,uBAAwB,IAC/C,GAAW,EAAA,QAAA,CAAe,OAAO,CAAC,GAAc,MAAM,CAAC,AAAA,GAOvC,EAAA,cAAA,CAAqB,IAErC,GAAW,GAAS,GAAG,CAAC,CAAC,EAAO,KACpC,IAAM,EAAe,EAAM,KAAK,CAC1B,CACJ,SAAU,CACR,IAAK,CAAa,CACnB,CAAG,CAAC,CAAC,CACN,iBAAkB,CAAoB,CACvC,CAAG,EACE,EAAgB,AAAA,CAAA,EAAA,EAAA,OAA4B,AAA5B,EAA8B,EAAa,QAAQ,CAAE,GAErE,EAAmB,GAAyB,CAAA,AAA8B,aAA9B,EAAe,GAA4B,OAAS,KAAA,EACtG,OAAoB,EAAA,YAAA,CAAmB,EAAO,CAC5C,SAAU,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,EAAG,EAAe,CACpC,IAAK,GAAqC,EAAO,EACnD,GACA,MAAO,GAAM,CAAA,EAAO,EAAQ,GAAS,MAAM,CAAG,CAAA,EAC9C,KAAA,EACA,iBAAA,EACA,GAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,EAAM,CAAC,AAC7B,EACF,GACA,MAAoB,AAAA,CAAA,EAAA,EAAA,IAAI,AAAJ,EAAM,EAAe,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAChD,UAAW,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,EAAQ,IAAI,CAAE,GAC9B,IAAK,EACL,KAAM,eACN,UA5JoB,AAAA,IAChB,GACF,EAAU,GAGZ,IAAM,EAAM,EAAM,GAAG,CAAC,OAAO,CAAC,QAAS,IAAI,WAAW,GAChD,CACJ,QAAS,EAA0B,CAAG,CACvC,CAAG,EAEJ,GAAI,AAAc,WAAd,EAAM,GAAG,CAAe,CAC1B,EAAa,CAAA,GACb,EAAQ,OAAO,CAAC,EAAE,CAAC,KAAK,GAEpB,GACF,EAAQ,EAAO,iBAGjB,MACF,CAEA,GAAI,EAAe,KAAS,EAAe,IAA4B,AAAwB,KAAA,IAAxB,EAAe,GAAoB,KA7M/F,EAAY,EA8MrB,EAAM,cAAc,GACpB,IAAM,EAAa,IAAQ,EAA0B,EAAI,GAEnD,GAjNG,EAiNgB,EAAc,OAAO,CAAG,EAjN5B,EAiN2C,EAAQ,OAAO,CAAC,MAAM,CAAG,EAhN7F,AAAI,EAgN6D,EAAA,EA5M7D,EAAQ,EACH,EAGF,GAyMH,EAAQ,OAAO,CAAC,EAAW,CAAC,KAAK,GACjC,EAAc,OAAO,CAAG,EACxB,EAAiB,OAAO,CAAG,CAC7B,CACF,EA+HE,OAAQ,GACR,QAAS,GACT,aAAc,GACd,aAAc,GACd,WAAY,CACd,EAAG,EAAO,CACR,SAAU,CAAc,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,EAAqB,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACzD,GAAI,CAAC,EACL,QAAS,EACT,cAAe,CAAA,CACjB,EAAG,EAAiB,CAClB,SAAuB,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,EAAc,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACjD,MAAO,UACP,aAAc,EACd,gBAAiB,OACjB,gBAAiB,EACjB,gBAAiB,CAAC,EAAE,GAAG,QAAQ,CAAC,AAClC,EAAG,EAAU,CACX,QA3Gc,AAAA,IACd,EAAS,OAAO,EAClB,EAAS,OAAO,CAAC,GAGnB,aAAa,EAAW,OAAO,EAE3B,GACF,EAAa,CAAA,GAET,GACF,EAAQ,EAAO,YAGjB,EAAa,CAAA,GAET,GACF,EAAO,EAAO,UAGpB,EAwFM,UAAW,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,EAAQ,GAAG,CAAE,EAAS,SAAS,EAC/C,IAAK,EACL,WAAY,EACZ,SAAuB,EAAA,cAAA,CAAqB,IAAS,AAAA,CAAA,EAAA,EAAA,OAAW,AAAX,EAAa,EAAM,CAAC,gBAAgB,EAAiB,EAAA,YAAA,CAAmB,EAAM,CACjI,KAAA,CACF,GAAK,CACP,GACF,IAAkB,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,EAAkB,CACvC,GAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,CACnB,KAAM,OACN,mBAAoB,EAAe,GACnC,UAAW,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,EAAQ,OAAO,CAAE,CAAC,GAAQ,EAAQ,aAAa,EAC/D,WAAY,EACZ,SAAU,EACZ,GAAG,AACL,GACF,GAyIA,IAAA,EAAe,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SChjBf,IAAM,EAAY,CAAC,iBAAkB,SAAU,WAAY,SAAU,KAAM,UAAW,YAAa,aAAc,SAAU,WAAY,YAAa,QAAS,UAAW,sBAAsB,CASxL,EAAS,CACb,SAAU,CACR,UAAW,MACb,EACA,QAAS,CACP,UAAW,MACb,CACF,EAOM,EAAoB,EAAA,UAAA,CAAiB,SAAc,CAAK,CAAE,CAAG,EACjE,IAAM,EAAQ,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,IACR,EAAiB,CACrB,MAAO,EAAM,WAAW,CAAC,QAAQ,CAAC,cAAc,CAChD,KAAM,EAAM,WAAW,CAAC,QAAQ,CAAC,aAAa,AAChD,EAEM,CAAA,eACJ,CAAc,CAAA,OACd,EAAS,CAAA,CAAA,CAAA,SACT,CAAQ,CAAA,OACR,CAAM,CACN,GAAI,CAAM,CAAA,QACV,CAAO,CAAA,UACP,CAAS,CAAA,WACT,CAAU,CAAA,OACV,CAAM,CAAA,SACN,CAAQ,CAAA,UACR,CAAS,CAAA,MACT,CAAK,CAAA,QACL,EAAU,CAAA,CAAA,oBAEV,EAAsB,EAAA,OAAS,AAAA,CAChC,CAAG,EACE,EAAQ,AAAA,CAAA,EAAA,EAAA,OAA4B,AAA5B,EAA8B,EAAO,GAE7C,EAAU,EAAA,MAAA,CAAa,MACvB,EAAa,AAAA,CAAA,EAAA,EAAA,OAAS,AAAT,EAAW,EAAS,GAAG,CAAE,GACtC,EAAY,AAAA,CAAA,EAAA,EAAA,OAAS,AAAT,EAAW,EAAS,GAEhC,EAA+B,AAAA,GAAY,AAAA,IAC/C,GAAI,EAAU,CACZ,IAAM,EAAO,EAAQ,OAAO,AAExB,AAAqB,MAAA,IAArB,EACF,EAAS,GAET,EAAS,EAAM,EAEnB,CACF,EAEM,EAAiB,EAA6B,GAC9C,EAAc,EAA6B,CAAC,EAAM,KACtD,AAAA,CAAA,EAAA,EAAA,MAAK,AAAL,EAAO,GAEP,IAAM,EAAkB,AAAA,CAAA,EAAA,EAAA,kBAAiB,AAAjB,EAAmB,CACzC,MAAA,EACA,QAAA,EACA,OAAA,CACF,EAAG,CACD,KAAM,OACR,EACA,CAAA,EAAK,KAAK,CAAC,gBAAgB,CAAG,EAAM,WAAW,CAAC,MAAM,CAAC,YAAa,GACpE,EAAK,KAAK,CAAC,UAAU,CAAG,EAAM,WAAW,CAAC,MAAM,CAAC,YAAa,GAE1D,GACF,EAAQ,EAAM,EAElB,GACM,EAAgB,EAA6B,GAC7C,EAAgB,EAA6B,GAC7C,EAAa,EAA6B,AAAA,IAC9C,IAAM,EAAkB,AAAA,CAAA,EAAA,EAAA,kBAAiB,AAAjB,EAAmB,CACzC,MAAA,EACA,QAAA,EACA,OAAA,CACF,EAAG,CACD,KAAM,MACR,EACA,CAAA,EAAK,KAAK,CAAC,gBAAgB,CAAG,EAAM,WAAW,CAAC,MAAM,CAAC,YAAa,GACpE,EAAK,KAAK,CAAC,UAAU,CAAG,EAAM,WAAW,CAAC,MAAM,CAAC,YAAa,GAE1D,GACF,EAAO,EAEX,GACM,EAAe,EAA6B,GASlD,MAAoB,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,EAAqB,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACrD,OAAQ,EACR,GAAI,EACJ,QAAS,EACT,QAAS,EACT,UAAW,EACX,WAAY,EACZ,OAAQ,EACR,SAAU,EACV,UAAW,EACX,eAjB2B,AAAA,IACvB,GAEF,EAAe,EAAQ,OAAO,CAAE,EAEpC,EAaE,QAAS,CACX,EAAG,EAAO,CACR,SAAU,CAAC,EAAO,IACI,EAAA,YAAA,CAAmB,EAAU,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACxD,MAAO,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACd,UAAW,WACX,WAAY,AAAU,WAAV,GAAuB,EAAoB,KAAA,EAAX,QAC9C,EAAG,CAAM,CAAC,EAAM,CAAE,EAAO,EAAS,KAAK,CAAC,KAAK,EAC7C,IAAK,CACP,EAAG,GAEP,GACF,GA2FA,IAAA,EAAe,C,G,E,Q,S,C,C,C,E,E,E,O,C,2B,W,O,C,G,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SChOR,SAAS,EAAyB,CAAI,EAC3C,MAAO,AAAA,CAAA,EAAA,EAAA,OAAmB,AAAnB,EAAqB,eAAgB,EAC9C,CACA,IAAM,EAAmB,AAAA,CAAA,EAAA,EAAA,OAAqB,AAArB,EAAuB,eAAgB,CAAC,OAAQ,MAAO,cAAe,gBAAiB,gBAAiB,iBAAkB,UAAW,gBAAgB,EAC9K,IAAA,EAAe,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCHf,IAAM,EAAY,CAAC,YAAa,QAAS,WAAY,OAAQ,KAAM,OAAQ,iBAAkB,cAAe,mBAAoB,eAAe,CAgBzI,EAAoB,AAAA,IACxB,GAAM,CAAA,KACJ,CAAI,CAAA,iBACJ,CAAgB,CAAA,QAChB,CAAO,CACR,CAAG,EACE,EAAQ,CACZ,IAAK,CAAC,MAAO,CAAC,GAAQ,YAAY,CAClC,cAAe,CAAC,gBAAiB,CAAC,gBAAgB,EAAE,AAAA,CAAA,EAAA,EAAA,OAAS,AAAT,EAAW,GAAkB,CAAC,CAAE,CAAC,GAAQ,sBAAsB,CACnH,mBAAoB,CAAC,qBAAqB,AAC5C,EACA,MAAO,AAAA,CAAA,EAAA,EAAA,OAAa,AAAb,EAAe,EAAO,EAAA,8BAA6B,CAAG,EAC/D,EAEM,EAAqB,AAAA,CAAA,EAAA,EAAA,OAAK,AAAL,EAAO,EAAA,OAAE,CAAG,CACrC,KAAM,qBACN,KAAM,MACN,qBAAsB,CAAA,EACtB,kBAAmB,CAAC,EAAO,KACzB,GAAM,CAAA,WACJ,CAAU,CACX,CAAG,EACJ,MAAO,CAAC,EAAO,GAAG,CAAE,CAAC,EAAW,IAAI,EAAI,EAAO,SAAS,CAAC,AAC3D,CACF,GAAG,CAAC,CAAA,MACF,CAAK,CAAA,WACL,CAAU,CACX,GAAK,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACb,OAAQ,EACR,MAAO,EAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CACnC,gBAAiB,EAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAC/C,UAAW,CACT,gBAAiB,AAAA,CAAA,EAAA,EAAA,SAAQ,AAAR,EAAU,EAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAE,IAC7D,EACA,WAAY,CAAC,EAAE,EAAM,WAAW,CAAC,MAAM,CAAC,YAAa,CACnD,SAAU,EAAM,WAAW,CAAC,QAAQ,CAAC,OAAO,AAC9C,GAAG,cAAc,CAAC,CAClB,QAAS,CACX,EAAG,CAAC,EAAW,IAAI,EAAI,CACrB,QAAS,EACT,UAAW,UACb,IACM,EAA+B,AAAA,CAAA,EAAA,EAAA,OAAK,AAAL,EAAO,OAAQ,CAClD,KAAM,qBACN,KAAM,gBACN,kBAAmB,CAAC,EAAO,KACzB,GAAM,CAAA,WACJ,CAAU,CACX,CAAG,EACJ,MAAO,CAAC,EAAO,aAAa,CAAE,CAAC,EAAW,IAAI,EAAI,EAAO,mBAAmB,CAAE,CAAM,CAAC,CAAC,gBAAgB,EAAE,AAAA,CAAA,EAAA,EAAA,OAAS,AAAT,EAAW,EAAW,gBAAgB,EAAE,CAAC,CAAC,CAAC,AACrJ,CACF,GAAG,CAAC,CAAA,MACF,CAAK,CAAA,WACL,CAAU,CACX,GAAM,CAAA,CACL,SAAU,WACV,QAAS,OACT,WAAY,SACZ,CAAC,CAAC,GAAG,EAAE,AAAA,EAAA,OAAqB,CAAE,kBAAkB,CAAC,CAAC,CAAC,CAAE,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAC5D,WAAY,EAAM,WAAW,CAAC,MAAM,CAAC,CAAC,YAAa,UAAU,CAAE,CAC7D,SAAU,EAAM,WAAW,CAAC,QAAQ,CAAC,OAAO,AAC9C,GACA,QAAS,CACX,EAAG,CAAC,EAAW,IAAI,EAAI,CACrB,QAAS,EACT,UAAW,YACb,EAAG,AAAgC,SAAhC,EAAW,gBAAgB,EAAe,CAC3C,gBAAiB,WACjB,MAAO,OACP,YAAa,CACf,EAAG,AAAgC,UAAhC,EAAW,gBAAgB,EAAgB,CAC5C,gBAAiB,SACjB,KAAM,OACN,WAAY,CACd,EACF,CAAA,GACM,EAAoC,AAAA,CAAA,EAAA,EAAA,OAAK,AAAL,EAAO,OAAQ,CACvD,KAAM,qBACN,KAAM,qBACN,kBAAmB,CAAC,EAAO,IAAW,EAAO,kBAAkB,AACjE,GAAG,CAAC,CAAA,MACF,CAAK,CACN,GAAK,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACb,SAAU,UACZ,EAAG,EAAM,UAAU,CAAC,KAAK,CAAE,CACzB,gBAAiB,EAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAC/C,aAAc,EAAM,KAAK,CAAC,YAAY,CACtC,UAAW,EAAM,OAAO,CAAC,EAAE,CAC3B,MAAO,EAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CACnC,QAAS,WACT,UAAW,UACb,IACM,EAA+B,EAAA,UAAA,CAAiB,SAAyB,CAAO,CAAE,CAAG,EACzF,IAAM,EAAQ,AAAA,CAAA,EAAA,EAAA,OAAY,AAAZ,EAAc,CAC1B,MAAO,EACP,KAAM,oBACR,GAEM,CAAA,UACJ,CAAS,CAAA,MACT,EAAQ,CAAA,CAAA,SACR,EAAW,CAAC,CAAA,CAAA,KACZ,CAAI,CAAA,GACJ,CAAE,CAAA,KACF,CAAI,CAAA,eACJ,CAAc,CACd,YAAa,EAAkB,CAAA,CAAK,CAAA,iBACpC,EAAmB,MAAA,CAAA,aACnB,CAAY,CACb,CAAG,EACE,EAAQ,AAAA,CAAA,EAAA,EAAA,OAA4B,AAA5B,EAA8B,EAAO,GAE7C,EAAa,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,EAAG,EAAO,CACrC,iBAAA,CACF,GAEM,EAAU,EAAkB,GAC5B,CAAC,EAAa,EAAe,CAAG,EAAA,QAAA,CAAe,GAU/C,EAAkB,CACtB,gBAAiB,CAAC,EAAE,EAAM,EAAE,CAAC,AAC/B,EAEM,EAAmB,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,EAAoB,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACzD,KAAM,QACN,UAAW,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,EAAQ,GAAG,CAAE,GAC7B,SAAU,GACV,KAAM,WACN,WAAY,CACd,EAAG,EAAU,CACX,MAAO,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,EAAG,EAAiB,EAAS,KAAK,EACnD,SAAU,CACZ,WAEA,AAAI,EACkB,AAAA,CAAA,EAAA,EAAA,IAAI,AAAJ,EAAM,EAA8B,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAC/D,GAAI,EACJ,IAAK,EACL,UAAW,EAAQ,aAAa,CAChC,WAAY,CACd,EAAG,EAAO,CACR,SAAU,CAAc,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,EAAmC,CAC9D,MAAO,EACP,GAAI,CAAC,EAAE,EAAG,MAAM,CAAC,CACjB,UAAW,EAAQ,kBAAkB,CACrC,WAAY,EACZ,SAAU,CACZ,GAAiB,EAAA,YAAA,CAAmB,EAAK,CACvC,kBAAmB,CAAC,EAAE,EAAG,MAAM,CAAC,AAClC,GAAG,AACL,KAGE,CAAC,GAAQ,GACX,EAAe,CAAA,GAGG,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,EAAA,OAAM,CAAG,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACzC,GAAI,EACJ,IAAK,EACL,MAAO,EACP,UAAW,EACX,QAnDyB,KACzB,EAAe,CAAA,EACjB,EAkDE,OAhDwB,KACxB,EAAe,CAAA,EACjB,EA+CE,KAAM,GAAQ,EACd,QAAS,CACX,EAAG,EAAO,CACR,SAAU,CACZ,IACF,GA0EA,IAAA,EAAe,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SC3Qf,IAAM,EAAY,CAAC,QAAS,WAAY,UAAW,aAAc,kBAAmB,gBAAiB,uBAAwB,uBAAwB,qBAAsB,uBAAwB,aAAc,iBAAkB,kBAAmB,eAAgB,KAAM,aAAc,kBAAmB,UAAW,SAAU,OAAQ,YAAa,kBAAmB,cAAe,QAAS,sBAAuB,kBAAkB,CA0Bra,EAAoB,AAAA,IACxB,GAAM,CAAA,QACJ,CAAO,CAAA,mBACP,CAAkB,CAAA,MAClB,CAAK,CAAA,MACL,CAAK,CAAA,UACL,CAAS,CACV,CAAG,EACE,EAAQ,CACZ,OAAQ,CAAC,SAAU,CAAC,GAAsB,oBAAqB,GAAS,cAAc,CACtF,QAAS,CAAC,UAAW,GAAS,eAAgB,GAAS,QAAS,CAAC,gBAAgB,EAAE,AAAA,CAAA,EAAA,EAAA,OAAS,AAAT,EAAW,EAAU,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CACzH,MAAO,CAAC,QAAQ,AAClB,EACA,MAAO,AAAA,CAAA,EAAA,EAAA,OAAa,AAAb,EAAe,EAAO,EAAA,sBAAqB,CAAG,EACvD,EAEM,EAAgB,AAAA,CAAA,EAAA,EAAA,OAAK,AAAL,EAAO,EAAA,OAAK,CAAG,CACnC,KAAM,aACN,KAAM,SACN,kBAAmB,CAAC,EAAO,KACzB,GAAM,CAAA,WACJ,CAAU,CACX,CAAG,EACJ,MAAO,CAAC,EAAO,MAAM,CAAE,CAAC,EAAW,kBAAkB,EAAI,EAAO,iBAAiB,CAAE,EAAW,KAAK,EAAI,EAAO,WAAW,CAAE,CAAC,EAAW,IAAI,EAAI,EAAO,WAAW,CAAC,AACpK,CACF,GAAG,CAAC,CAAA,MACF,CAAK,CAAA,WACL,CAAU,CAAA,KACV,CAAI,CACL,GAAK,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACb,OAAQ,EAAM,MAAM,CAAC,OAAO,CAC5B,cAAe,MACjB,EAAG,CAAC,EAAW,kBAAkB,EAAI,CACnC,cAAe,MACjB,EAAG,CAAC,GAAQ,CACV,cAAe,MACjB,EAAG,EAAW,KAAK,EAAI,CACrB,CAAC,CAAC,oCAAoC,EAAE,AAAA,EAAA,OAAa,CAAE,KAAK,CAAC,CAAC,CAAC,CAAE,CAC/D,IAAK,EACL,UAAW,UACX,YAAa,CACX,gBAAiB,QACnB,CACF,EACA,CAAC,CAAC,iCAAiC,EAAE,AAAA,EAAA,OAAa,CAAE,KAAK,CAAC,CAAC,CAAC,CAAE,CAC5D,OAAQ,EACR,aAAc,UACd,YAAa,CACX,gBAAiB,QACnB,CACF,EACA,CAAC,CAAC,mCAAmC,EAAE,AAAA,EAAA,OAAa,CAAE,KAAK,CAAC,CAAC,CAAC,CAAE,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,EAAG,AAAC,EAAW,KAAK,CAG1F,CACF,MAAO,EACP,YAAa,SACf,EANiG,CAC/F,KAAM,EACN,WAAY,SACd,EAGG,CACD,OAAQ,MACR,MAAO,SACP,YAAa,CACX,gBAAiB,WACnB,CACF,GACA,CAAC,CAAC,kCAAkC,EAAE,AAAA,EAAA,OAAa,CAAE,KAAK,CAAC,CAAC,CAAC,CAAE,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,EAAG,AAAC,EAAW,KAAK,CAGzF,CACF,KAAM,EACN,WAAY,SACd,EANgG,CAC9F,MAAO,EACP,YAAa,SACf,EAGG,CACD,OAAQ,MACR,MAAO,SACP,YAAa,CACX,gBAAiB,KACnB,CACF,EACF,IACM,EAAiB,AAAA,CAAA,EAAA,EAAA,OAAK,AAAL,EAAO,MAAO,CACnC,KAAM,aACN,KAAM,UACN,kBAAmB,CAAC,EAAO,KACzB,GAAM,CAAA,WACJ,CAAU,CACX,CAAG,EACJ,MAAO,CAAC,EAAO,OAAO,CAAE,EAAW,KAAK,EAAI,EAAO,KAAK,CAAE,EAAW,KAAK,EAAI,EAAO,YAAY,CAAE,CAAM,CAAC,CAAC,gBAAgB,EAAE,AAAA,CAAA,EAAA,EAAA,OAAS,AAAT,EAAW,EAAW,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,AACjL,CACF,GAAG,CAAC,CAAA,MACF,CAAK,CAAA,WACL,CAAU,CACX,GAAK,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACb,gBAAiB,AAAA,CAAA,EAAA,EAAA,KAAI,AAAJ,EAAM,EAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAE,KAChD,aAAc,EAAM,KAAK,CAAC,YAAY,CACtC,MAAO,EAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CACjC,WAAY,EAAM,UAAU,CAAC,UAAU,CACvC,QAAS,UACT,SAAU,EAAM,UAAU,CAAC,OAAO,CAAC,IACnC,SAAU,IACV,OAAQ,EACR,SAAU,aACV,WAAY,EAAM,UAAU,CAAC,gBAAgB,AAC/C,EAAG,EAAW,KAAK,EAAI,CACrB,SAAU,WACV,OAAQ,CACV,EAAG,EAAW,KAAK,EAAI,CACrB,QAAS,WACT,SAAU,EAAM,UAAU,CAAC,OAAO,CAAC,IACnC,WAAY,CAAC,EA9GN,KAAK,KAAK,CAAC,AAAQ,IA8GL,CAAA,GAAK,EAAA,GA9GO,IA8GH,EAAE,CAAC,CACjC,WAAY,EAAM,UAAU,CAAC,iBAAiB,AAChD,EAAG,CACD,CAAC,CAAC,CAAC,EAAE,AAAA,EAAA,OAAa,CAAE,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAE,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACvE,gBAAiB,cACnB,EAAG,AAAC,EAAW,KAAK,CAIf,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACZ,WAAY,MACd,EAAG,EAAW,KAAK,EAAI,CACrB,WAAY,MACd,GARuB,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAC9B,YAAa,MACf,EAAG,EAAW,KAAK,EAAI,CACrB,YAAa,MACf,IAKA,CAAC,CAAC,CAAC,EAAE,AAAA,EAAA,OAAa,CAAE,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAE,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACxE,gBAAiB,aACnB,EAAG,AAAC,EAAW,KAAK,CAIf,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACZ,YAAa,MACf,EAAG,EAAW,KAAK,EAAI,CACrB,YAAa,MACf,GARuB,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAC9B,WAAY,MACd,EAAG,EAAW,KAAK,EAAI,CACrB,WAAY,MACd,IAKA,CAAC,CAAC,CAAC,EAAE,AAAA,EAAA,OAAa,CAAE,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAE,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACtE,gBAAiB,gBACjB,aAAc,MAChB,EAAG,EAAW,KAAK,EAAI,CACrB,aAAc,MAChB,GACA,CAAC,CAAC,CAAC,EAAE,AAAA,EAAA,OAAa,CAAE,MAAM,CAAC,mCAAmC,CAAC,CAAC,CAAE,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACzE,gBAAiB,aACjB,UAAW,MACb,EAAG,EAAW,KAAK,EAAI,CACrB,UAAW,MACb,EACF,IACM,EAAe,AAAA,CAAA,EAAA,EAAA,OAAK,AAAL,EAAO,OAAQ,CAClC,KAAM,aACN,KAAM,QACN,kBAAmB,CAAC,EAAO,IAAW,EAAO,KAAK,AACpD,GAAG,CAAC,CAAA,MACF,CAAK,CACN,GAAM,CAAA,CACL,SAAU,SACV,SAAU,WACV,MAAO,MACP,OAAQ,SAGR,UAAW,aACX,MAAO,AAAA,CAAA,EAAA,EAAA,KAAI,AAAJ,EAAM,EAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAE,IACtC,YAAa,CACX,QAAS,KACT,OAAQ,OACR,QAAS,QACT,MAAO,OACP,OAAQ,OACR,gBAAiB,eACjB,UAAW,eACb,CACF,CAAA,GACI,EAAgB,CAAA,EAChB,EAAiB,KAMrB,SAAS,EAAoB,CAAO,CAAE,CAAY,EAChD,OAAO,AAAA,IACD,GACF,EAAa,GAGf,EAAQ,EACV,CACF,CAGA,IAAM,EAAuB,EAAA,UAAA,CAAiB,SAAiB,CAAO,CAAE,CAAG,EACzE,IAAI,EAAoB,EAAM,EAAuB,EAAqB,EAAmB,EAE7F,IAAM,EAAQ,AAAA,CAAA,EAAA,EAAA,OAAY,AAAZ,EAAc,CAC1B,MAAO,EACP,KAAM,YACR,GAEM,CAAA,MACJ,EAAQ,CAAA,CAAA,CAAA,SACR,CAAQ,CAAA,WACR,EAAa,CAAC,CAAA,CAAA,gBACd,EAAkB,CAAC,CAAA,CAAA,cACnB,EAAgB,CAAA,CAAA,CAAA,qBAChB,EAAuB,CAAA,CAAA,CAAA,qBACvB,EAAuB,CAAA,CAAA,CACvB,mBAAoB,EAAyB,CAAA,CAAK,CAAA,qBAClD,EAAuB,CAAA,CAAA,CAAA,WACvB,EAAa,GAAA,CAAA,eACb,EAAiB,CAAA,CAAA,gBACjB,EAAkB,GAAA,CAAA,aAClB,EAAe,CAAA,CAAA,CACf,GAAI,CAAM,CAAA,WACV,EAAa,CAAA,CAAA,gBACb,EAAkB,IAAA,CAAA,QAClB,CAAO,CAAA,OACP,CAAM,CACN,KAAM,CAAQ,CAAA,UACd,EAAY,QAAA,CACZ,gBAAiB,CAAmB,CAAA,YACpC,EAAc,CAAC,CAAA,CAAA,MACf,EAAK,CACL,oBAAqB,GAA0B,EAAA,OAAG,AAAC,CAAA,gBACnD,EAAe,CAChB,CAAG,EACE,GAAQ,AAAA,CAAA,EAAA,EAAA,OAA4B,AAA5B,EAA8B,EAAO,GAE7C,GAAQ,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,IACR,GAAQ,AAAoB,QAApB,GAAM,SAAS,CACvB,CAAC,GAAW,GAAa,CAAG,EAAlC,QAAA,GACM,CAAC,GAAU,GAAY,CAAG,EAAA,QAAA,CAAe,MACzC,GAAuB,EAAA,MAAA,CAAa,CAAA,GACpC,GAAqB,GAA0B,EAC/C,GAAa,EAAnB,MAAA,GACM,GAAa,EAAnB,MAAA,GACM,GAAa,EAAnB,MAAA,GACM,GAAa,EAAnB,MAAA,GACM,CAAC,GAAW,GAAa,CAAG,AAAA,CAAA,EAAA,EAAA,OAAY,AAAZ,EAAc,CAC9C,WAAY,EACZ,QAAS,CAAA,EACT,KAAM,UACN,MAAO,MACT,GACI,GAAO,GAeL,GAAK,AAAA,CAAA,EAAA,EAAA,OAAI,AAAJ,EAAM,GACX,GAAiB,EAAvB,MAAA,GACM,GAAuB,EAAA,WAAA,CAAkB,KACd,KAAA,IAA3B,GAAe,OAAO,GACxB,SAAS,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAG,GAAe,OAAO,CAC7D,GAAe,OAAO,CAAG,KAAA,GAG3B,aAAa,GAAW,OAAO,CACjC,EAAG,EAAE,EACL,EAAA,SAAA,CAAgB,IACP,KACL,aAAa,GAAW,OAAO,EAC/B,aAAa,GAAW,OAAO,EAC/B,aAAa,GAAW,OAAO,EAC/B,IACF,EACC,CAAC,GAAqB,EAEzB,IAAM,GAAa,AAAA,IACjB,aAAa,GACb,EAAgB,CAAA,EAIhB,GAAa,CAAA,GAET,GAAU,CAAC,IACb,EAAO,EAEX,EAEM,GAAc,AAAA,CAAA,EAAA,EAAA,OAAe,AAAf,EAIpB,AAAA,IACE,aAAa,GACb,EAAiB,WAAW,KAC1B,EAAgB,CAAA,CAClB,EAAG,IAAM,GACT,GAAa,CAAA,GAET,GAAW,IACb,EAAQ,GAGV,aAAa,GAAW,OAAO,EAC/B,GAAW,OAAO,CAAG,WAAW,KAC9B,GAAqB,OAAO,CAAG,CAAA,CACjC,EAAG,GAAM,WAAW,CAAC,QAAQ,CAAC,QAAQ,CACxC,GAEM,GAAc,AAAA,IACd,GAAqB,OAAO,EAAI,AAAe,eAAf,EAAM,IAAI,GAO1C,IACF,GAAU,eAAe,CAAC,SAG5B,aAAa,GAAW,OAAO,EAC/B,aAAa,GAAW,OAAO,EAE3B,GAAc,GAAiB,EACjC,GAAW,OAAO,CAAG,WAAW,KAC9B,GAAW,EACb,EAAG,EAAgB,EAAiB,GAEpC,GAAW,GAEf,EAEM,GAAc,AAAA,IAClB,aAAa,GAAW,OAAO,EAC/B,aAAa,GAAW,OAAO,EAC/B,GAAW,OAAO,CAAG,WAAW,KAC9B,GAAY,EACd,EAAG,EACL,EAEM,CAAA,kBACJ,EAAiB,CACjB,OAAQ,EAAiB,CACzB,QAAS,EAAkB,CAC3B,IAAK,EAAe,CACrB,CAAG,AAAA,CAAA,EAAA,EAAA,OAAgB,AAAhB,IAGE,EAAG,GAAuB,CAAG,EAAA,QAAA,CAAe,CAAA,GAE5C,GAAa,AAAA,IACjB,GAAkB,GAEgB,CAAA,IAA9B,GAAkB,OAAO,GAC3B,GAAuB,CAAA,GACvB,GAAY,GAEhB,EAEM,GAAc,AAAA,IAIb,IACH,GAAa,EAAM,aAAa,EAGlC,GAAmB,GAEe,CAAA,IAA9B,GAAkB,OAAO,GAC3B,GAAuB,CAAA,GACvB,GAAY,GAEhB,EAEM,GAAmB,AAAA,IACvB,GAAqB,OAAO,CAAG,CAAA,EAC/B,IAAM,EAAgB,EAAS,KAAK,AAEhC,CAAA,EAAc,YAAY,EAC5B,EAAc,YAAY,CAAC,EAE/B,EA+BA,EAAA,SAAA,CAAgB,KACd,GAAK,GAgBL,OADA,SAAS,gBAAgB,CAAC,UAAW,GAC9B,KACL,SAAS,mBAAmB,CAAC,UAAW,EAC1C,EAVA,SAAS,EAAc,CAAW,EAE5B,CAAA,AAAoB,WAApB,EAAY,GAAG,EAAiB,AAAoB,QAApB,EAAY,GAAG,AAAK,GACtD,GAAY,EAEhB,CAMF,EAAG,CAAC,GAAa,GAAK,EACtB,IAAM,GAAe,AAAA,CAAA,EAAA,EAAA,OAAS,AAAT,EAAW,GAAc,GACxC,GAAiB,AAAA,CAAA,EAAA,EAAA,OAAS,AAAT,EAAW,GAAiB,IAC7C,GAAY,AAAA,CAAA,EAAA,EAAA,OAAS,AAAT,EAAW,EAAS,GAAG,CAAE,GAE7B,CAAA,KAAV,IACF,CAAA,GAAO,CAAA,CADT,EAIA,IAAM,GAAc,EAAA,MAAA,CAAa,CAC/B,EAAG,EACH,EAAG,CACL,GACM,GAAY,EAAlB,MAAA,GAmBM,GAAkB,CAAC,EACnB,GAAgB,AAAiB,UAAjB,OAAO,GAEzB,GACF,GAAgB,KAAK,CAAG,AAAC,KAAQ,IAAkB,EAA+B,KAAR,GAC1E,EAAe,CAAC,mBAAmB,CAAG,GAAO,GAAK,OAElD,EAAe,CAAC,aAAa,CAAG,GAAgB,GAAQ,KACxD,EAAe,CAAC,kBAAkB,CAAG,IAAQ,CAAC,GAAgB,GAAK,MAGrE,IAAM,GAAgB,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,EAAG,GAAiB,GAAO,EAAS,KAAK,CAAE,CACzE,UAAW,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,GAAM,SAAS,CAAE,EAAS,KAAK,CAAC,SAAS,EACzD,aAAc,GACd,IAAK,EACP,EAAG,EAAe,CAChB,YAjCsB,AAAA,IACtB,IAAM,EAAgB,EAAS,KAAK,AAEhC,CAAA,EAAc,WAAW,EAC3B,EAAc,WAAW,CAAC,GAG5B,GAAY,OAAO,CAAG,CACpB,EAAG,EAAM,OAAO,CAChB,EAAG,EAAM,OAAO,AAClB,EAEI,GAAU,OAAO,EACnB,GAAU,OAAO,CAAC,MAAM,EAE5B,CAmBA,EAAI,CAAC,GAYC,GAA8B,CAAC,EAEhC,IACH,GAAc,YAAY,CA9GH,AAAA,IACvB,GAAiB,GACjB,aAAa,GAAW,OAAO,EAC/B,aAAa,GAAW,OAAO,EAC/B,KACA,GAAe,OAAO,CAAG,SAAS,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAE7D,SAAS,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAG,OACvC,GAAW,OAAO,CAAG,WAAW,KAC9B,SAAS,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAG,GAAe,OAAO,CAC7D,GAAY,EACd,EAAG,EACL,EAmGE,GAAc,UAAU,CAjGH,AAAA,IACjB,EAAS,KAAK,CAAC,UAAU,EAC3B,EAAS,KAAK,CAAC,UAAU,CAAC,GAG5B,KACA,aAAa,GAAW,OAAO,EAC/B,GAAW,OAAO,CAAG,WAAW,KAC9B,GAAY,EACd,EAAG,EACL,GA0FK,IACH,GAAc,WAAW,CAAG,EAtHN,GAsH2C,GAAc,WAAW,EAC1F,GAAc,YAAY,CAAG,EAtHN,GAsH4C,GAAc,YAAY,EAExF,KACH,GAA4B,WAAW,CA1HnB,GA2HpB,GAA4B,YAAY,CA1HnB,KA8HpB,IACH,GAAc,OAAO,CAAG,EAAoB,GAAa,GAAc,OAAO,EAC9E,GAAc,MAAM,CAAG,EAAoB,GAAY,GAAc,MAAM,EAEtE,KACH,GAA4B,OAAO,CAAG,GACtC,GAA4B,MAAM,CAAG,KAUzC,IAAM,GAAgB,EAAA,OAAA,CAAc,KAClC,IAAI,EAEJ,IAAI,EAAmB,CAAC,CACtB,KAAM,QACN,QAAS,CAAA,CAAQ,GACjB,QAAS,CACP,QAAS,GACT,QAAS,CACX,CACF,EAAE,CAMF,OAJ2D,MAAtD,CAAA,EAAwB,EAAY,aAAY,AAAZ,GAA0B,EAAsB,SAAS,EAChG,CAAA,EAAmB,EAAiB,MAAM,CAAC,EAAY,aAAa,CAAC,SAAS,CAAA,EAGzE,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,EAAG,EAAY,aAAa,CAAE,CAC7C,UAAW,CACb,EACF,EAAG,CAAC,GAAU,EAAY,EAEpB,GAAa,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,EAAG,EAAO,CACrC,MAAA,GACA,MAAA,EACA,mBAAA,GACA,UAAA,EACA,oBAAA,EACA,MAAO,GAAqB,OAAO,AACrC,GAEM,GAAU,EAAkB,IAC5B,GAAmB,AAA2C,MAA3C,CAAA,EAAqB,EAAW,MAAK,AAAL,EAAkB,EAAqB,EAC1F,GAAsB,AAAsH,MAArH,CAAA,EAAO,AAAmD,MAAlD,CAAA,EAAwB,EAAW,UAAS,AAAT,EAAsB,EAAwB,EAAA,EAAmC,EAAO,EAAA,OAAG,CAC7J,GAAoB,AAA6C,MAA7C,CAAA,EAAsB,EAAW,OAAM,AAAN,EAAmB,EAAsB,EAC9F,GAAkB,AAAyC,MAAzC,CAAA,EAAoB,EAAW,KAAI,AAAJ,EAAiB,EAAoB,EACtF,GAAc,AAAA,CAAA,EAAA,EAAA,OAAe,AAAf,EAAiB,GAAiB,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,EAAG,EAAa,EAAgB,MAAM,EAAG,IACnG,GAAkB,AAAA,CAAA,EAAA,EAAA,OAAe,AAAf,EAAiB,GAAqB,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,EAAG,GAAiB,EAAgB,UAAU,EAAG,IACnH,GAAe,AAAA,CAAA,EAAA,EAAA,OAAe,AAAf,EAAiB,GAAkB,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,EAAG,EAAgB,OAAO,EAAG,IACzF,GAAoB,AAAA,CAAA,EAAA,EAAA,OAAe,AAAf,EAAiB,GAAgB,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,EAAG,EAAgB,KAAK,EAAG,IAChG,MAAoB,AAAA,CAAA,EAAA,EAAA,IAAI,AAAJ,EAAM,EAAA,QAAA,CAAgB,CACxC,SAAU,CAAc,EAAA,YAAA,CAAmB,EAAU,IAA6B,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,GAAiB,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAC/G,GAAI,AAAuB,MAAvB,EAA8B,EAAsB,EAAA,OAAK,CAC7D,UAAW,EACX,SAAU,EAAe,CACvB,sBAAuB,IAAO,CAAA,CAC5B,IAAK,GAAY,OAAO,CAAC,CAAC,CAC1B,KAAM,GAAY,OAAO,CAAC,CAAC,CAC3B,MAAO,GAAY,OAAO,CAAC,CAAC,CAC5B,OAAQ,GAAY,OAAO,CAAC,CAAC,CAC7B,MAAO,EACP,OAAQ,CACV,CAAA,CACF,EAAI,GACJ,UAAW,GACX,KAAM,EAAA,IAAY,GAClB,GAAI,GACJ,WAAY,CAAA,CACd,EAAG,GAA6B,GAAa,CAC3C,UAAW,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,GAAQ,MAAM,CAAE,AAAe,MAAf,EAAsB,KAAK,EAAI,EAAY,SAAS,CAAG,AAAmD,MAAnD,CAAA,EAAwB,EAAgB,MAAK,AAAL,EAAkB,KAAK,EAAI,EAAsB,SAAS,EACzL,cAAe,GACf,SAAU,CAAC,CACT,gBAAiB,CAAoB,CACtC,IACC,IAAI,EAAuB,EAE3B,MAAoB,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,GAAqB,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACrD,QAAS,GAAM,WAAW,CAAC,QAAQ,CAAC,OAAO,AAC7C,EAAG,EAAsB,GAAiB,CACxC,SAAuB,AAAA,CAAA,EAAA,EAAA,IAAI,AAAJ,EAAM,GAAkB,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,EAAG,GAAc,CACxE,UAAW,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,GAAQ,OAAO,CAAE,AAAqD,MAApD,CAAA,EAAwB,EAAgB,OAAO,AAAP,EAAmB,KAAK,EAAI,EAAsB,SAAS,EACrI,SAAU,CAAC,GAAO,EAAqB,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,GAAgB,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAAC,EAAG,GAAmB,CAC1F,UAAW,AAAA,CAAA,EAAA,EAAA,OAAG,AAAH,EAAK,GAAQ,KAAK,CAAE,AAAmD,MAAlD,CAAA,EAAwB,EAAgB,KAAK,AAAL,EAAiB,KAAK,EAAI,EAAsB,SAAS,EACjI,IAAK,EACP,IAAM,KAAK,AACb,GACF,GACF,CACF,IAAI,AACN,EACF,GAiMA,IAAA,EAAe,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCpzBf,IAAM,EAAa,AAAA,CAAA,EAAA,EAAA,OAAK,AAAL,EAAO,EAAA,OAAa,CAAG,CACxC,KAAM,YACN,KAAM,OACN,kBAAmB,CAAC,EAAO,IAAW,EAAO,IAAI,AACnD,GAAG,CAAC,GAcE,EAAsB,EAAA,UAAA,CAAiB,SAAgB,CAAO,CAAE,CAAG,EACvE,IAAM,EAAQ,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,IACR,EAAQ,AAAA,CAAA,EAAA,EAAA,OAAY,AAAZ,EAAc,CAC1B,MAAO,EACP,KAAM,WACR,GACA,MAAoB,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,EAAY,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAC5C,UAAW,AAAS,MAAT,EAAgB,KAAK,EAAI,EAAM,SAAS,AACrD,EAAG,EAAO,CACR,IAAK,CACP,GACF,GA8GA,IAAA,EAAe,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCjJf,IAAM,EAAY,CAAC,WAAY,WAAY,YAAa,gBAAiB,YAAa,OAAQ,aAAc,YAAa,gBAAiB,YAAa,kBAAkB,CACnK,EAAa,CAAC,WAAY,WAAY,YAAa,YAAa,gBAAiB,cAAe,YAAa,OAAQ,YAAa,gBAAiB,YAAa,QAAS,aAAa,CA+B5L,SAAS,EAAgB,CAAQ,EAC/B,MAAO,AAAoB,YAApB,OAAO,EAA0B,IAAa,CACvD,CAEA,IAAM,EAAuB,CAAC,EAGxB,EAA6B,EAAA,UAAA,CAAiB,SAAuB,CAAK,CAAE,CAAG,EACnF,GAAM,CAAA,SACJ,CAAQ,CAAA,SACR,CAAQ,CAAA,UACR,CAAS,CAAA,cACT,CAAa,CAAA,UACb,CAAS,CAAA,KACT,CAAI,CACJ,UAAW,CAAgB,CAAA,cAC3B,CAAa,CACb,UAAW,CAAa,CAAA,gBACxB,CAAe,CAChB,CAAG,EACE,EAAQ,AAAA,CAAA,EAAA,EAAA,OAA4B,AAA5B,EAA8B,EAAO,GAE7C,EAAa,EAAA,MAAA,CAAa,MAC1B,EAAS,AAAA,CAAA,EAAA,EAAA,OAAS,AAAT,EAAW,EAAY,GAChC,EAAY,EAAA,MAAA,CAAa,MACzB,EAAkB,AAAA,CAAA,EAAA,EAAA,OAAS,AAAT,EAAW,EAAW,GACxC,EAAqB,EAAA,MAAA,CAAa,GACxC,AAAA,CAAA,EAAA,EAAA,OAAgB,AAAhB,EAAkB,KAChB,EAAmB,OAAO,CAAG,CAC/B,EAAG,CAAC,EAAgB,EACpB,EAAA,mBAAA,CAA0B,EAAe,IAAM,EAAU,OAAO,CAAE,EAAE,EACpE,IAAM,EAAe,AAtDvB,SAAuB,CAAS,CAAE,CAAS,EACzC,GAAI,AAAc,QAAd,EACF,OAAO,EAGT,OAAQ,GACN,IAAK,aACH,MAAO,cAET,KAAK,eACH,MAAO,YAET,KAAK,UACH,MAAO,WAET,KAAK,YACH,MAAO,SAET,SACE,OAAO,CACX,CACF,EAiCqC,EAAkB,GAM/C,CAAC,EAAW,EAAa,CAAG,EAAA,QAAA,CAAe,GACjD,EAAA,SAAA,CAAgB,KACV,EAAU,OAAO,EACnB,EAAU,OAAO,CAAC,WAAW,EAEjC,GACA,AAAA,CAAA,EAAA,EAAA,OAAgB,AAAhB,EAAkB,KAChB,GAAI,CAAC,GAAY,CAAC,EAChB,OAGF,IAAM,EAAqB,AAAA,IACzB,EAAa,EAAK,SAAS,CAC7B,EAEyB,EAAgB,GAYzC,IAAI,EAAkB,CAAC,CACrB,KAAM,kBACN,QAAS,CACP,YAAa,CACf,CACF,EAAG,CACD,KAAM,OACN,QAAS,CACP,YAAa,CACf,CACF,EAAG,CACD,KAAM,WACN,QAAS,CAAA,EACT,MAAO,aACP,GAAI,CAAC,CAAA,MACH,CAAK,CACN,IACC,EAAmB,EACrB,CACF,EAAE,AAEe,OAAb,GACF,CAAA,EAAkB,EAAgB,MAAM,CAAC,EAD3C,EAII,GAAiB,AAA2B,MAA3B,EAAc,SAAS,EAC1C,CAAA,EAAkB,EAAgB,MAAM,CAAC,EAAc,SAAS,CAAA,EAGlE,IAAM,EAAS,AAAA,CAAA,EAAA,EAAA,YAAW,AAAX,EAAa,EAAgB,GAAW,EAAW,OAAO,CAAE,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAClF,UAAW,CACb,EAAG,EAAe,CAChB,UAAW,CACb,IAEA,OADA,EAAmB,OAAO,CAAC,GACpB,KACL,EAAO,OAAO,GACd,EAAmB,OAAO,CAAC,KAC7B,CACF,EAAG,CAAC,EAAU,EAAe,EAAW,EAAM,EAAe,EAAa,EAC1E,IAAM,EAAa,CACjB,UAAA,CACF,EAMA,OAJwB,OAApB,GACF,CAAA,EAAW,eAAe,CAAG,CAD/B,EAIoB,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,MAAO,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CACvC,IAAK,EACL,KAAM,SACR,EAAG,EAAO,CACR,SAAU,AAAoB,YAApB,OAAO,EAA0B,EAAS,GAAc,CACpE,GACF,GAOM,EAA8B,EAAA,UAAA,CAAiB,SAAwB,CAAK,CAAE,CAAG,EACrF,GAAM,CAAA,SACJ,CAAQ,CAAA,SACR,CAAQ,CACR,UAAW,CAAa,CAAA,UACxB,EAAY,KAAA,CAAA,cACZ,EAAgB,CAAA,CAAA,CAAA,YAChB,EAAc,CAAA,CAAA,CAAA,UACd,CAAS,CAAA,KACT,CAAI,CAAA,UACJ,EAAY,QAAA,CAAA,cACZ,EAAgB,CAAA,CAAA,UAChB,CAAS,CAAA,MACT,CAAK,CAAA,WACL,EAAa,CAAA,CAAA,CACd,CAAG,EACE,EAAQ,AAAA,CAAA,EAAA,EAAA,OAA4B,AAA5B,EAA8B,EAAO,GAE7C,CAAC,EAAQ,EAAU,CAAG,EAAA,QAAA,CAAe,CAAA,GAU3C,GAAI,CAAC,GAAe,CAAC,GAAS,CAAA,CAAC,GAAc,CAAA,EAC3C,OAAO,KAMT,IAAM,EAAY,GAAkB,CAAA,EAAW,AAAA,CAAA,EAAA,EAAA,OAAY,AAAZ,EAAc,EAAgB,IAAW,IAAI,CAAG,KAAA,CAAA,EAC/F,MAAoB,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,EAAA,OAAK,CAAG,CAC/B,cAAe,EACf,UAAW,EACX,SAAuB,AAAA,CAAA,EAAA,EAAA,GAAG,AAAH,EAAK,EAAe,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAClD,SAAU,EACV,UAAW,EACX,cAAe,EACf,UAAW,EACX,IAAK,EACL,KAAM,EAAa,CAAC,EAAS,EAC7B,UAAW,EACX,cAAe,EACf,UAAW,CACb,EAAG,EAAO,CACR,MAAO,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,CAEd,SAAU,QAEV,IAAK,EACL,KAAM,EACN,QAAS,CAAC,GAAQ,GAAgB,CAAA,CAAC,GAAc,CAAA,EAAU,OAAS,IACtE,EAAG,GACH,gBAAiB,EAAa,CAC5B,GAAI,EACJ,QAxCc,KAClB,EAAU,CAAA,EACZ,EAuCM,SArCe,KACnB,EAAU,CAAA,EACZ,CAoCI,EAAI,KACJ,SAAU,CACZ,GACF,EACF,GAkIA,IAAA,EAAe,C,G,E,Q,S,C,C,C,E,E,E,O,C,e,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCzVX,EAAmB,CAAC,EAAA,OAAa,CAAG,EAAA,OAAY,CAAG,EAAA,OAAY,CAAG,EAAA,OAAU,CAAG,EAAA,OAAK,CAAG,EAAA,OAAG,CAAG,EAAA,OAAc,CAAG,EAAA,OAAI,CAAG,EAAA,OAAG,CAAE,CAC1H,EAA4B,AAAA,CAAA,EAAA,EAAA,eAAc,AAAd,EAAgB,CAC9C,iBAAkB,CACpB,E,G,E,Q,S,C,C,C,E,E,E,O,C,kB,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCGI,EAAkB,CACpB,UAAW,SACX,UAAW,EAAE,CACb,SAAU,UACZ,EAEA,SAAS,IACP,IAAK,IAAI,EAAO,UAAU,MAAM,CAAE,EAAO,AAAI,MAAM,GAAO,EAAO,EAAG,EAAO,EAAM,IAC/E,CAAI,CAAC,EAAK,CAAG,SAAS,CAAC,EAAK,CAG9B,MAAO,CAAC,EAAK,IAAI,CAAC,SAAU,CAAO,EACjC,MAAO,CAAE,CAAA,GAAW,AAAyC,YAAzC,OAAO,EAAQ,qBAAqB,AAAK,CAC/D,EACF,CAEO,SAAS,EAAgB,CAAgB,EACrB,KAAK,IAA1B,GACF,CAAA,EAAmB,CAAC,CAAA,EAGtB,IAAI,EAAoB,EACpB,EAAwB,EAAkB,gBAAgB,CAC1D,EAAmB,AAA0B,KAAK,IAA/B,EAAmC,EAAE,CAAG,EAC3D,EAAyB,EAAkB,cAAc,CACzD,EAAiB,AAA2B,KAAK,IAAhC,EAAoC,EAAkB,EAC3E,OAAO,SAAsB,CAAS,CAAE,CAAM,CAAE,CAAO,EACrC,KAAK,IAAjB,GACF,CAAA,EAAU,CADZ,EAIA,IAAI,EAAQ,CACV,UAAW,SACX,iBAAkB,EAAE,CACpB,QAAS,OAAO,MAAM,CAAC,CAAC,EAAG,EAAiB,GAC5C,cAAe,CAAC,EAChB,SAAU,CACR,UAAW,EACX,OAAQ,CACV,EACA,WAAY,CAAC,EACb,OAAQ,CAAC,CACX,EACI,EAAmB,EAAE,CACrB,EAAc,CAAA,EACd,EAAW,CACb,MAAO,EACP,WAAY,SAAoB,CAAgB,EAC9C,IAAI,EAAU,AAA4B,YAA5B,OAAO,EAAkC,EAAiB,EAAM,OAAO,EAAI,EACzF,IACA,EAAM,OAAO,CAAG,OAAO,MAAM,CAAC,CAAC,EAAG,EAAgB,EAAM,OAAO,CAAE,GACjE,EAAM,aAAa,CAAG,CACpB,UAAW,AAAA,CAAA,EAAA,EAAA,SAAQ,AAAR,EAAU,GAAa,AAAA,CAAA,EAAA,EAAA,OAAgB,AAAhB,EAAkB,GAAa,EAAU,cAAc,CAAG,AAAA,CAAA,EAAA,EAAA,OAAgB,AAAhB,EAAkB,EAAU,cAAc,EAAI,EAAE,CAC5I,OAAQ,AAAA,CAAA,EAAA,EAAA,OAAgB,AAAhB,EAAkB,EAC5B,EAGA,IAAI,EAAmB,AAAA,CAAA,EAAA,EAAA,OAAa,AAAb,EAAe,AAAA,CAAA,EAAA,EAAA,OAAU,AAAV,EAAY,EAAE,CAAC,MAAM,CAAC,EAAkB,EAAM,OAAO,CAAC,SAAS,IAyCrG,OAvCA,EAAM,gBAAgB,CAAG,EAAiB,MAAM,CAAC,SAAU,CAAC,EAC1D,OAAO,EAAE,OAAO,AAClB,GAoJF,EAAM,gBAAgB,CAAC,OAAO,CAAC,SAAU,CAAK,EAC5C,IAAI,EAAO,EAAM,IAAI,CACjB,EAAgB,EAAM,OAAO,CAE7B,EAAS,EAAM,MAAM,CAEzB,GAAI,AAAkB,YAAlB,OAAO,EAAuB,CAChC,IAAI,EAAY,EAAO,CACrB,MAAO,EACP,KAAM,EACN,SAAU,EACV,QARU,AAAkB,KAAK,IAAvB,EAA2B,CAAC,EAAI,CAS5C,GAIA,EAAiB,IAAI,CAAC,GAFT,WAAmB,EAGlC,CACF,GAjIS,EAAS,MAAM,EACxB,EAMA,YAAa,WACX,IAAI,GAIJ,IAAI,EAAkB,EAAM,QAAQ,CAChC,EAAY,EAAgB,SAAS,CACrC,EAAS,EAAgB,MAAM,CAGnC,GAAK,EAAiB,EAAW,IASjC,EAAM,KAAK,CAAG,CACZ,UAAW,AAAA,CAAA,EAAA,EAAA,OAAe,AAAf,EAAiB,EAAW,AAAA,CAAA,EAAA,EAAA,OAAc,AAAd,EAAgB,GAAS,AAA2B,UAA3B,EAAM,OAAO,CAAC,QAAQ,EACtF,OAAQ,AAAA,CAAA,EAAA,EAAA,OAAY,AAAZ,EAAc,EACxB,EAMA,EAAM,KAAK,CAAG,CAAA,EACd,EAAM,SAAS,CAAG,EAAM,OAAO,CAAC,SAAS,CAKzC,EAAM,gBAAgB,CAAC,OAAO,CAAC,SAAU,CAAQ,EAC/C,OAAO,EAAM,aAAa,CAAC,EAAS,IAAI,CAAC,CAAG,OAAO,MAAM,CAAC,CAAC,EAAG,EAAS,IAAI,CAC7E,GAGA,IAAK,IAAI,EAAQ,EAAG,EAAQ,EAAM,gBAAgB,CAAC,MAAM,CAAE,IAAS,CAUlE,GAAI,AAAgB,CAAA,IAAhB,EAAM,KAAK,CAAW,CACxB,EAAM,KAAK,CAAG,CAAA,EACd,EAAQ,GACR,QACF,CAEA,IAAI,EAAwB,EAAM,gBAAgB,CAAC,EAAM,CACrD,EAAK,EAAsB,EAAE,CAC7B,EAAyB,EAAsB,OAAO,CACtD,EAAW,AAA2B,KAAK,IAAhC,EAAoC,CAAC,EAAI,EACpD,EAAO,EAAsB,IAAI,AAEnB,CAAA,YAAd,OAAO,GACT,CAAA,EAAQ,EAAG,CACT,MAAO,EACP,QAAS,EACT,KAAM,EACN,SAAU,CACZ,IAAM,CAAN,CAEJ,GACF,EAGA,OAAQ,AAAA,CAAA,EAAA,EAAA,OAAO,AAAP,EAAS,WACf,OAAO,IAAI,QAAQ,SAAU,CAAO,EAClC,EAAS,WAAW,GACpB,EAAQ,EACV,EACF,GACA,QAAS,WACP,IACA,EAAc,CAAA,CAChB,CACF,EAEA,GAAI,CAAC,EAAiB,EAAW,GAK/B,OAAO,EAmCT,SAAS,IACP,EAAiB,OAAO,CAAC,SAAU,CAAE,EACnC,OAAO,GACT,GACA,EAAmB,EAAE,AACvB,CAEA,OAvCA,EAAS,UAAU,CAAC,GAAS,IAAI,CAAC,SAAU,CAAK,EAC3C,CAAC,GAAe,EAAQ,aAAa,EACvC,EAAQ,aAAa,CAAC,EAE1B,GAmCO,CACT,CACF,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SC7Oe,SAAA,EAA0B,CAAuB,CAAE,CAAY,CAAE,CAAO,EACrE,KAAK,IAAjB,GACF,CAAA,EAAU,CAAA,CADZ,EAIA,IAbI,EACA,EACA,EAWA,EAA0B,AAAA,CAAA,EAAA,EAAA,aAAY,AAAZ,EAAc,GACxC,EAAuB,AAAA,CAAA,EAAA,EAAA,aAAY,AAAZ,EAAc,KAdrC,EAAO,AAc+D,EAdvD,qBAAqB,GACpC,EAAS,AAAA,CAAA,EAAA,EAAA,KAAI,AAAJ,EAAM,EAAK,KAAK,EAAI,AAayC,EAbjC,WAAW,EAAI,EACpD,EAAS,AAAA,CAAA,EAAA,EAAA,KAAI,AAAJ,EAAM,EAAK,MAAM,EAAI,AAYwC,EAZhC,YAAY,EAAI,EACnD,AAAW,IAAX,GAAgB,AAAW,IAAX,GAYnB,EAAkB,AAAA,CAAA,EAAA,EAAA,OAAiB,AAAjB,EAAmB,GACrC,EAAO,AAAA,CAAA,EAAA,EAAA,OAAoB,AAApB,EAAsB,EAAyB,GACtD,EAAS,CACX,WAAY,EACZ,UAAW,CACb,EACI,EAAU,CACZ,EAAG,EACH,EAAG,CACL,EAiBA,MAfI,CAAA,GAA2B,CAAC,GAA2B,CAAC,CAAA,IACtD,CAAA,AAA8B,SAA9B,AAAA,CAAA,EAAA,EAAA,OAAU,AAAV,EAAY,IAChB,AAAA,CAAA,EAAA,EAAA,OAAa,AAAb,EAAe,EAAA,GACb,CAAA,EAAS,AAAA,CAAA,EAAA,EAAA,OAAY,AAAZ,EAAc,EADzB,EAII,AAAA,CAAA,EAAA,EAAA,aAAY,AAAZ,EAAc,IAChB,EAAU,AAAA,CAAA,EAAA,EAAA,OAAoB,AAApB,EAAsB,EAAc,CAAA,GAC9C,EAAQ,CAAC,EAAI,EAAa,UAAU,CACpC,EAAQ,CAAC,EAAI,EAAa,SAAS,EAC1B,GACT,CAAA,EAAQ,CAAC,CAAG,AAAA,CAAA,EAAA,EAAA,OAAkB,AAAlB,EAAoB,EADlC,GAKK,CACL,EAAG,EAAK,IAAI,CAAG,EAAO,UAAU,CAAG,EAAQ,CAAC,CAC5C,EAAG,EAAK,GAAG,CAAG,EAAO,SAAS,CAAG,EAAQ,CAAC,CAC1C,MAAO,EAAK,KAAK,CACjB,OAAQ,EAAK,MAAM,AACrB,CACF,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,SCvDe,SAAA,EAA+B,CAAO,CAAE,CAAY,EAC5C,KAAK,IAAtB,GACF,CAAA,EAAe,CAAA,CADjB,EAIA,IAAI,EAAO,EAAQ,qBAAqB,GACpC,EAAS,EACT,EAAS,EAEb,GAAI,AAAA,CAAA,EAAA,EAAA,aAAY,AAAZ,EAAc,IAAY,EAAc,CAC1C,IAAI,EAAe,EAAQ,YAAY,CACnC,EAAc,EAAQ,WAAW,CAGjC,EAAc,GAChB,CAAA,EAAS,AAAA,CAAA,EAAA,EAAA,KAAI,AAAJ,EAAM,EAAK,KAAK,EAAI,GAAe,CAAA,EAG1C,EAAe,GACjB,CAAA,EAAS,AAAA,CAAA,EAAA,EAAA,KAAI,AAAJ,EAAM,EAAK,MAAM,EAAI,GAAgB,CAAA,CAElD,CAEA,MAAO,CACL,MAAO,EAAK,KAAK,CAAG,EACpB,OAAQ,EAAK,MAAM,CAAG,EACtB,IAAK,EAAK,GAAG,CAAG,EAChB,MAAO,EAAK,KAAK,CAAG,EACpB,OAAQ,EAAK,MAAM,CAAG,EACtB,KAAM,EAAK,IAAI,CAAG,EAClB,EAAG,EAAK,IAAI,CAAG,EACf,EAAG,EAAK,GAAG,CAAG,CAChB,CACF,C,G,E,Q,S,C,C,C,E,E,E,O,C,Y,W,O,C,G,E,E,O,C,gB,W,O,C,G,E,E,O,C,e,W,O,C,G,I,E,E,SCjCA,SAAS,EAAU,CAAI,EACrB,IAAI,EAAa,AAAA,CAAA,EAAA,EAAA,OAAQ,AAAR,EAAU,GAAM,OAAO,CACxC,OAAO,aAAgB,GAAc,aAAgB,OACvD,CAEA,SAAS,EAAc,CAAI,EACzB,IAAI,EAAa,AAAA,CAAA,EAAA,EAAA,OAAQ,AAAR,EAAU,GAAM,WAAW,CAC5C,OAAO,aAAgB,GAAc,aAAgB,WACvD,CAEA,SAAS,EAAa,CAAI,EAExB,GAAI,AAAsB,aAAtB,OAAO,WACT,MAAO,CAAA,EAGT,IAAI,EAAa,AAAA,CAAA,EAAA,EAAA,OAAQ,AAAR,EAAU,GAAM,UAAU,CAC3C,OAAO,aAAgB,GAAc,aAAgB,UACvD,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCpBe,SAAA,EAAmB,CAAI,EACpC,GAAI,AAAQ,MAAR,EACF,OAAO,OAGT,GAAI,AAAoB,oBAApB,EAAK,QAAQ,GAA0B,CACzC,IAAI,EAAgB,EAAK,aAAa,CACtC,OAAO,GAAgB,EAAc,WAAW,EAAI,MACtD,CAEA,OAAO,CACT,C,G,E,Q,S,C,C,C,E,E,E,O,C,M,W,O,C,G,E,E,O,C,M,W,O,C,G,E,E,O,C,Q,W,O,C,GCXO,IAAI,EAAM,KAAK,GAAG,CACd,EAAM,KAAK,GAAG,CACd,EAAQ,KAAK,KAAK,A,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,S,E,E,SCEd,SAAA,EAAuB,CAAI,SACxC,AAAI,IAAS,AAAA,CAAA,EAAA,EAAA,OAAQ,AAAR,EAAU,IAAU,AAAA,CAAA,EAAA,EAAA,aAAY,AAAZ,EAAc,GAGtC,AAAA,CAAA,EAAA,EAAA,OAAmB,AAAnB,EAAqB,GAFrB,AAAA,CAAA,EAAA,EAAA,OAAc,AAAd,EAAgB,EAI3B,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,SCTe,SAAA,EAAyB,CAAI,EAC1C,IAAI,EAAM,AAAA,CAAA,EAAA,EAAA,OAAQ,AAAR,EAAU,GAGpB,MAAO,CACL,WAHe,EAAI,WAAW,CAI9B,UAHc,EAAI,WAAW,AAI/B,CACF,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCTe,SAAA,EAA8B,CAAO,EAClD,MAAO,CACL,WAAY,EAAQ,UAAU,CAC9B,UAAW,EAAQ,SAAS,AAC9B,CACF,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,GCLe,SAAA,EAAqB,CAAO,EACzC,OAAO,EAAW,AAAA,CAAA,EAAQ,QAAQ,EAAI,EAAA,EAAI,WAAW,GAAK,IAC5D,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,S,E,E,S,E,E,SCCe,SAAA,EAA6B,CAAO,EAQjD,MAAO,AAAA,CAAA,EAAA,EAAA,OAAoB,AAApB,EAAsB,AAAA,CAAA,EAAA,EAAA,OAAiB,AAAjB,EAAmB,IAAU,IAAI,CAAG,AAAA,CAAA,EAAA,EAAA,OAAc,AAAd,EAAgB,GAAS,UAAU,AACtG,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,SCXe,SAAA,EAA4B,CAAO,EAEhD,MAAQ,AAAC,CAAA,AAAA,CAAA,AAAA,CAAA,EAAA,EAAA,SAAQ,AAAR,EAAU,GAAW,EAAQ,aAAa,CACnD,EAAQ,QAAO,AAAP,GAAa,OAAO,QAAO,AAAP,EAAU,eAAe,AACvD,C,G,E,Q,S,C,C,C,E,E,E,O,C,U,W,O,C,G,I,E,E,SCJe,SAAA,EAAwB,CAA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EACA,QAAS,CACP,WAAY,CACV,QAAS,SACX,EACA,QAAS,CACP,KAAM,SACR,EACA,UAAW,CACT,KAAM,SACR,EACA,QAAS,CACP,KAAM,UACN,MAAO,UACP,KAAM,UACN,aAAc,SAChB,EACA,KAAM,CACJ,QAAS,UACT,UAAW,qBACX,SAAU,SACZ,EACA,QAAS,CACP,KAAM,UACN,MAAO,UACP,KAAM,UACN,aAAc,SAChB,CACF,EACA,WAAY,CACV,eAAgB,CACd,eAAgB,CACd,UAAW,CACT,aAAc,CAAC,EAAY,EAAY,AACzC,CACF,CACF,EACA,WAAY,CACV,eAAgB,CACd,MAAO,CACL,WAAY,EACd,CACF,CACF,EACA,YAAa,CACX,OAAQ,CACN,eAAgB,CACd,UAAW,CACT,gBAAiB,eACnB,CACF,CACF,CACF,EACA,OAAQ,CACN,eAAgB,CACd,KAAM,CACJ,gBAAiB,MACnB,CACF,CACF,EACA,cAAe,CACb,eAAgB,CACd,SAAU,CACR,SAAU,SACZ,CACF,CACF,EACA,UAAW,CACT,eAAgB,CACd,UAAW,CACT,SAAU,UACZ,CACF,CACF,EACA,cAAe,CACb,eAAgB,CACd,eAAgB,CACd,QAAS,GACT,MAAO,GACP,OAAQ,GACR,SAAU,GACV,QAAS,CACP,OAAQ,GACR,MAAO,GACP,SAAU,EACZ,CACF,EACA,UAAW,CACT,QAAS,EACT,QAAS,CACP,UAAW,GACX,SAAU,EACZ,CACF,CACF,CACF,EACA,UAAW,CACT,eAAgB,CACd,KAAM,CACJ,MAAO,UACP,OAAQ,CACV,EACA,KAAM,CACJ,OAAQ,CACV,EACA,MAAO,CACL,OAAQ,CACV,EACA,MAAO,CACL,MAAO,GACP,OAAQ,GACR,WAAY,SACd,CACF,CACF,EACA,oBAAqB,CACnB,eAAgB,CACd,KAAM,CACJ,QAAS,OACX,CACF,CACF,EACA,iBAAkB,CAChB,eAAgB,CACd,KAAM,CACJ,WAAY,IACZ,SAAU,SACV,aAAc,mBAChB,EACA,OAAQ,CACN,gBAAiB,MACnB,CACF,CACF,EACA,YAAa,CACX,eAAgB,CACd,KAAM,CACJ,SAAU,UACZ,C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","sources":["","node_modules/react/jsx-runtime.js","node_modules/react/cjs/react-jsx-runtime.production.min.js","node_modules/react/index.js","node_modules/react/cjs/react.production.min.js","node_modules/react-dom/index.js","node_modules/react-dom/cjs/react-dom.production.min.js","node_modules/scheduler/index.js","node_modules/scheduler/cjs/scheduler.production.min.js","node_modules/react-router-dom/esm/react-router-dom.js","node_modules/react-router-dom/modules/BrowserRouter.js","node_modules/react-router-dom/modules/HashRouter.js","node_modules/react-router-dom/modules/utils/locationUtils.js","node_modules/react-router-dom/modules/Link.js","node_modules/react-router-dom/modules/NavLink.js","node_modules/react-router/esm/react-router.js","node_modules/react-router/modules/RouterContext.js","node_modules/react-router/modules/Router.js","node_modules/react-router/modules/MemoryRouter.js","node_modules/react-router/modules/Lifecycle.js","node_modules/react-router/modules/Prompt.js","node_modules/react-router/modules/generatePath.js","node_modules/react-router/modules/Redirect.js","node_modules/react-router/modules/matchPath.js","node_modules/react-router/modules/Route.js","node_modules/react-router/modules/StaticRouter.js","node_modules/react-router/modules/Switch.js","node_modules/react-router/modules/withRouter.js","node_modules/react-router/modules/hooks.js","node_modules/react-router/modules/index.js","node_modules/react-router/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","node_modules/history/esm/history.js","node_modules/history/node_modules/@babel/runtime/helpers/esm/extends.js","node_modules/resolve-pathname/index.js","node_modules/value-equal/index.js","node_modules/tiny-invariant/dist/tiny-invariant.esm.js","node_modules/mini-create-react-context/dist/esm/index.js","node_modules/mini-create-react-context/node_modules/@babel/runtime/helpers/inheritsLoose.js","node_modules/prop-types/index.js","node_modules/prop-types/factoryWithThrowingShims.js","node_modules/prop-types/lib/ReactPropTypesSecret.js","node_modules/gud/index.js","node_modules/react-router/node_modules/@babel/runtime/helpers/esm/extends.js","node_modules/path-to-regexp/index.js","node_modules/path-to-regexp/node_modules/isarray/index.js","node_modules/react-router/node_modules/react-is/index.js","node_modules/react-router/node_modules/react-is/cjs/react-is.production.min.js","node_modules/react-router/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","node_modules/react-router/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","node_modules/react-router/node_modules/hoist-non-react-statics/node_modules/react-is/index.js","node_modules/react-router/node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/extends.js","node_modules/react-router-dom/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","node_modules/@babel/runtime/helpers/esm/extends.js","node_modules/@mui/material/styles/useThemeProps.js","node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","node_modules/@mui/utils/esm/resolveProps.js","node_modules/@mui/system/esm/useTheme.js","node_modules/@mui/system/esm/createTheme/createTheme.js","node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","node_modules/@mui/utils/esm/deepmerge.js","node_modules/@mui/system/esm/createTheme/createBreakpoints.js","node_modules/@mui/system/esm/createTheme/shape.js","node_modules/@mui/system/esm/createTheme/createSpacing.js","node_modules/@mui/system/esm/spacing.js","node_modules/@mui/system/esm/breakpoints.js","node_modules/@mui/system/esm/merge.js","node_modules/@mui/system/esm/style.js","node_modules/@mui/utils/esm/capitalize.js","node_modules/@mui/utils/esm/formatMuiErrorMessage.js","node_modules/@mui/system/esm/memoize.js","node_modules/@mui/system/esm/useThemeWithoutDefault.js","node_modules/@mui/private-theming/useTheme/useTheme.js","node_modules/@mui/private-theming/useTheme/ThemeContext.js","node_modules/@mui/material/styles/defaultTheme.js","node_modules/@mui/material/styles/createTheme.js","node_modules/@mui/material/styles/createMixins.js","node_modules/@mui/material/styles/createPalette.js","node_modules/@mui/system/esm/colorManipulator.js","node_modules/@mui/material/colors/common.js","node_modules/@mui/material/colors/grey.js","node_modules/@mui/material/colors/purple.js","node_modules/@mui/material/colors/red.js","node_modules/@mui/material/colors/orange.js","node_modules/@mui/material/colors/blue.js","node_modules/@mui/material/colors/lightBlue.js","node_modules/@mui/material/colors/green.js","node_modules/@mui/material/styles/createTypography.js","node_modules/@mui/material/styles/shadows.js","node_modules/@mui/material/styles/createTransitions.js","node_modules/@mui/material/styles/zIndex.js","node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","node_modules/react-is/index.js","node_modules/react-is/cjs/react-is.production.min.js","node_modules/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js","node_modules/@emotion/react/dist/emotion-element-cbed451f.browser.esm.js","node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","node_modules/stylis/dist/stylis.mjs","node_modules/stylis/src/Enum.js","node_modules/stylis/src/Utility.js","node_modules/stylis/src/Tokenizer.js","node_modules/stylis/src/Parser.js","node_modules/stylis/src/Prefixer.js","node_modules/stylis/src/Serializer.js","node_modules/stylis/src/Middleware.js","node_modules/@emotion/weak-memoize/dist/weak-memoize.browser.esm.js","node_modules/@emotion/memoize/dist/emotion-memoize.browser.esm.js","node_modules/@emotion/react/_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js","node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","node_modules/@emotion/hash/dist/hash.browser.esm.js","node_modules/@emotion/unitless/dist/unitless.browser.esm.js","node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js","node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js","node_modules/@mui/private-theming/ThemeProvider/nested.js","node_modules/@emotion/react/dist/emotion-react.browser.esm.js","node_modules/@babel/runtime/helpers/extends.js","node_modules/mobx/dist/mobx.esm.js","node_modules/mobx/src/errors.ts","node_modules/mobx/src/utils/global.ts","node_modules/mobx/src/utils/utils.ts","node_modules/mobx/src/api/decorators.ts","node_modules/mobx/src/core/atom.ts","node_modules/mobx/src/utils/comparer.ts","node_modules/mobx/src/types/modifiers.ts","node_modules/mobx/src/types/overrideannotation.ts","node_modules/mobx/src/types/actionannotation.ts","node_modules/mobx/src/types/flowannotation.ts","node_modules/mobx/src/types/computedannotation.ts","node_modules/mobx/src/types/observableannotation.ts","node_modules/mobx/src/types/autoannotation.ts","node_modules/mobx/src/api/observable.ts","node_modules/mobx/src/api/computed.ts","node_modules/mobx/src/core/action.ts","node_modules/mobx/src/types/observablevalue.ts","node_modules/mobx/src/core/computedvalue.ts","node_modules/mobx/src/core/derivation.ts","node_modules/mobx/src/core/globalstate.ts","node_modules/mobx/src/core/observable.ts","node_modules/mobx/src/core/reaction.ts","node_modules/mobx/src/core/spy.ts","node_modules/mobx/src/api/action.ts","node_modules/mobx/src/api/autorun.ts","node_modules/mobx/src/api/become-observed.ts","node_modules/mobx/src/api/configure.ts","node_modules/mobx/src/api/extendobservable.ts","node_modules/mobx/src/api/extras.ts","node_modules/mobx/src/api/flow.ts","node_modules/mobx/src/api/intercept-read.ts","node_modules/mobx/src/api/intercept.ts","node_modules/mobx/src/api/iscomputed.ts","node_modules/mobx/src/api/isobservable.ts","node_modules/mobx/src/api/object-api.ts","node_modules/mobx/src/api/observe.ts","node_modules/mobx/src/api/tojs.ts","node_modules/mobx/src/api/trace.ts","node_modules/mobx/src/api/transaction.ts","node_modules/mobx/src/api/when.ts","node_modules/mobx/src/types/dynamicobject.ts","node_modules/mobx/src/types/intercept-utils.ts","node_modules/mobx/src/types/listen-utils.ts","node_modules/mobx/src/api/makeObservable.ts","node_modules/mobx/src/types/observablearray.ts","node_modules/mobx/src/types/observablemap.ts","node_modules/mobx/src/types/observableset.ts","node_modules/mobx/src/types/observableobject.ts","node_modules/mobx/src/types/legacyobservablearray.ts","node_modules/mobx/src/types/type-utils.ts","node_modules/mobx/src/utils/eq.ts","node_modules/mobx/src/utils/iterable.ts","node_modules/mobx/src/api/annotation.ts","node_modules/mobx/src/mobx.ts","node_modules/mobx-react-lite/es/index.js","node_modules/mobx-react-lite/src/index.ts","node_modules/mobx-react-lite/es/utils/assertEnvironment.js","node_modules/mobx-react-lite/src/utils/assertEnvironment.ts","node_modules/mobx-react-lite/src/utils/reactBatchedUpdates.ts","node_modules/mobx-react-lite/es/utils/observerBatching.js","node_modules/mobx-react-lite/src/utils/observerBatching.ts","node_modules/mobx-react-lite/es/utils/utils.js","node_modules/mobx-react-lite/src/utils/utils.ts","node_modules/mobx-react-lite/es/useObserver.js","node_modules/mobx-react-lite/src/useObserver.ts","node_modules/mobx-react-lite/es/utils/printDebugValue.js","node_modules/mobx-react-lite/src/utils/printDebugValue.ts","node_modules/mobx-react-lite/es/utils/reactionCleanupTracking.js","node_modules/mobx-react-lite/src/utils/reactionCleanupTracking.ts","node_modules/mobx-react-lite/es/utils/FinalizationRegistryWrapper.js","node_modules/mobx-react-lite/src/utils/FinalizationRegistryWrapper.ts","node_modules/mobx-react-lite/es/utils/createReactionCleanupTrackingUsingFinalizationRegister.js","node_modules/mobx-react-lite/src/utils/createReactionCleanupTrackingUsingFinalizationRegister.ts","node_modules/mobx-react-lite/es/utils/reactionCleanupTrackingCommon.js","node_modules/mobx-react-lite/src/utils/reactionCleanupTrackingCommon.ts","node_modules/mobx-react-lite/es/utils/createTimerBasedReactionCleanupTracking.js","node_modules/mobx-react-lite/src/utils/createTimerBasedReactionCleanupTracking.ts","node_modules/mobx-react-lite/es/staticRendering.js","node_modules/mobx-react-lite/src/staticRendering.ts","node_modules/mobx-react-lite/es/observer.js","node_modules/mobx-react-lite/src/observer.ts","node_modules/mobx-react-lite/es/ObserverComponent.js","node_modules/mobx-react-lite/src/ObserverComponent.ts","node_modules/mobx-react-lite/es/useLocalObservable.js","node_modules/mobx-react-lite/src/useLocalObservable.ts","node_modules/mobx-react-lite/es/useLocalStore.js","node_modules/mobx-react-lite/src/useLocalStore.ts","node_modules/mobx-react-lite/es/useAsObservableSource.js","node_modules/mobx-react-lite/src/useAsObservableSource.ts","src/stores/useStores.js","src/stores/StoreContext.js","src/stores/BuildingStore.js","node_modules/@swc/helpers/esm/_define_property.js","node_modules/@swc/helpers/esm/_object_spread.js","node_modules/@swc/helpers/esm/_object_spread_props.js","node_modules/debounce/index.js","src/lib/agent.js","node_modules/axios/index.js","node_modules/axios/lib/axios.js","node_modules/axios/lib/utils.js","node_modules/axios/lib/helpers/bind.js","node_modules/axios/lib/core/Axios.js","node_modules/axios/lib/helpers/buildURL.js","node_modules/axios/lib/core/InterceptorManager.js","node_modules/axios/lib/core/dispatchRequest.js","node_modules/axios/lib/core/transformData.js","node_modules/axios/lib/cancel/isCancel.js","node_modules/axios/lib/defaults.js","node_modules/process/browser.js","node_modules/axios/lib/helpers/normalizeHeaderName.js","node_modules/axios/lib/adapters/xhr.js","node_modules/axios/lib/core/settle.js","node_modules/axios/lib/core/createError.js","node_modules/axios/lib/core/enhanceError.js","node_modules/axios/lib/core/buildFullPath.js","node_modules/axios/lib/helpers/isAbsoluteURL.js","node_modules/axios/lib/helpers/combineURLs.js","node_modules/axios/lib/helpers/parseHeaders.js","node_modules/axios/lib/helpers/isURLSameOrigin.js","node_modules/axios/lib/helpers/cookies.js","node_modules/axios/lib/core/mergeConfig.js","node_modules/axios/lib/cancel/Cancel.js","node_modules/axios/lib/cancel/CancelToken.js","node_modules/axios/lib/helpers/spread.js","node_modules/qs/lib/index.js","node_modules/qs/lib/stringify.js","node_modules/qs/lib/utils.js","node_modules/qs/lib/formats.js","node_modules/qs/lib/parse.js","src/lib/axios.js","src/conf.js","src/stores/ProjectStore.js","src/lib/utils.js","node_modules/haversine/haversine.js","node_modules/date-fns/esm/format/index.js","node_modules/date-fns/esm/isValid/index.js","node_modules/date-fns/esm/toDate/index.js","node_modules/date-fns/esm/_lib/requiredArgs/index.js","node_modules/date-fns/esm/locale/en-US/index.js","node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","node_modules/date-fns/esm/subMilliseconds/index.js","node_modules/date-fns/esm/_lib/toInteger/index.js","node_modules/date-fns/esm/addMilliseconds/index.js","node_modules/date-fns/esm/_lib/format/formatters/index.js","node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","node_modules/date-fns/esm/_lib/getUTCWeek/index.js","node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","node_modules/date-fns/esm/_lib/format/longFormatters/index.js","node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","node_modules/date-fns/esm/_lib/protectedTokens/index.js","src/stores/MapStore.js","src/lib/formatData.js","node_modules/@swc/helpers/esm/_object_without_properties.js","node_modules/@swc/helpers/esm/_object_without_properties_loose.js","src/stores/BuildingDetailStore.js","src/constants/translations.js","src/stores/ModalStore.js","src/stores/CreateProjectStore.js","src/stores/TaskStore.js","src/stores/UIStore.js","src/stores/UserStore.js","src/stores/ProjectDetailStore.js","node_modules/geojson-rbush/index.js","node_modules/rbush/rbush.min.js","node_modules/@turf/helpers/index.js","node_modules/@turf/meta/index.js","node_modules/@turf/bbox/index.js","src/constants/filters.js","src/constants/incentives.js","src/stores/ChatStore.js","src/stores/TaskEditorStore.js","src/stores/SurveyStore.js","src/stores/EditorStore.js","node_modules/nebula.gl/dist-es6/index.js","node_modules/nebula.gl/src/index.ts","node_modules/nebula.gl/dist-es6/lib/style.js","node_modules/nebula.gl/src/lib/style.ts","node_modules/nebula.gl/dist-es6/lib/deck-renderer/deck-drawer.js","node_modules/nebula.gl/src/lib/deck-renderer/deck-drawer.ts","node_modules/@deck.gl/layers/dist/esm/polygon-layer/polygon-layer.js","node_modules/@deck.gl/layers/src/polygon-layer/polygon-layer.ts","node_modules/@deck.gl/layers/node_modules/@babel/runtime/helpers/esm/defineProperty.js","node_modules/@deck.gl/core/dist/esm/lib/composite-layer.js","node_modules/@deck.gl/core/src/lib/composite-layer.ts","node_modules/@deck.gl/core/node_modules/@babel/runtime/helpers/esm/defineProperty.js","node_modules/@deck.gl/core/dist/esm/lib/layer.js","node_modules/@deck.gl/core/src/lib/layer.ts","node_modules/@deck.gl/core/dist/esm/lib/constants.js","node_modules/@deck.gl/core/src/lib/constants.ts","node_modules/@deck.gl/core/dist/esm/utils/log.js","node_modules/@deck.gl/core/src/utils/log.ts","node_modules/@probe.gl/log/dist/esm/index.js","node_modules/@probe.gl/log/src/index.ts","node_modules/@probe.gl/log/dist/esm/log.js","node_modules/@probe.gl/log/src/log.ts","node_modules/@probe.gl/log/node_modules/@babel/runtime/helpers/esm/defineProperty.js","node_modules/@probe.gl/env/dist/esm/lib/is-browser.js","node_modules/@probe.gl/env/src/lib/is-browser.ts","node_modules/@probe.gl/env/dist/esm/lib/is-electron.js","node_modules/@probe.gl/env/src/lib/is-electron.ts","node_modules/@probe.gl/env/dist/esm/utils/globals.js","node_modules/@probe.gl/env/src/utils/globals.ts","node_modules/@probe.gl/log/dist/esm/utils/local-storage.js","node_modules/@probe.gl/log/src/utils/local-storage.ts","node_modules/@probe.gl/log/dist/esm/utils/formatters.js","node_modules/@probe.gl/log/src/utils/formatters.ts","node_modules/@probe.gl/log/dist/esm/utils/color.js","node_modules/@probe.gl/log/src/utils/color.ts","node_modules/@probe.gl/log/dist/esm/utils/autobind.js","node_modules/@probe.gl/log/src/utils/autobind.ts","node_modules/@probe.gl/log/dist/esm/utils/assert.js","node_modules/@probe.gl/log/src/utils/assert.ts","node_modules/@probe.gl/log/dist/esm/utils/hi-res-timestamp.js","node_modules/@probe.gl/log/src/utils/hi-res-timestamp.ts","node_modules/@probe.gl/env/dist/esm/lib/globals.js","node_modules/@probe.gl/env/src/lib/globals.ts","node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-manager.js","node_modules/@deck.gl/core/src/lib/attribute/attribute-manager.ts","node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute.js","node_modules/@deck.gl/core/src/lib/attribute/attribute.ts","node_modules/@deck.gl/core/dist/esm/lib/attribute/data-column.js","node_modules/@deck.gl/core/src/lib/attribute/data-column.ts","node_modules/@luma.gl/webgl/dist/esm/classes/buffer.js","node_modules/@luma.gl/webgl/src/classes/buffer.js","node_modules/@luma.gl/webgl/dist/esm/classes/resource.js","node_modules/@luma.gl/webgl/src/classes/resource.js","node_modules/@luma.gl/gltools/src/index.js","node_modules/@luma.gl/gltools/dist/esm/utils/log.js","node_modules/@luma.gl/gltools/src/utils/log.js","node_modules/@luma.gl/gltools/dist/esm/utils/webgl-checks.js","node_modules/@luma.gl/gltools/src/utils/webgl-checks.js","node_modules/@luma.gl/gltools/dist/esm/utils/assert.js","node_modules/@luma.gl/gltools/src/utils/assert.js","node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-context.js","node_modules/@luma.gl/gltools/src/polyfill/polyfill-context.js","node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-vertex-array-object.js","node_modules/@luma.gl/gltools/src/polyfill/polyfill-vertex-array-object.js","node_modules/@luma.gl/gltools/dist/esm/polyfill/polyfill-table.js","node_modules/@luma.gl/gltools/src/polyfill/polyfill-table.js","node_modules/@luma.gl/gltools/dist/esm/polyfill/get-parameter-polyfill.js","node_modules/@luma.gl/gltools/src/polyfill/get-parameter-polyfill.js","node_modules/@luma.gl/gltools/dist/esm/state-tracker/unified-parameter-api.js","node_modules/@luma.gl/gltools/src/state-tracker/unified-parameter-api.js","node_modules/@luma.gl/gltools/dist/esm/state-tracker/webgl-parameter-tables.js","node_modules/@luma.gl/gltools/src/state-tracker/webgl-parameter-tables.js","node_modules/@luma.gl/gltools/dist/esm/state-tracker/track-context-state.js","node_modules/@luma.gl/gltools/src/state-tracker/track-context-state.js","node_modules/@luma.gl/gltools/dist/esm/utils/utils.js","node_modules/@luma.gl/gltools/src/utils/utils.js","node_modules/@luma.gl/gltools/dist/esm/context/context.js","node_modules/@luma.gl/gltools/src/context/context.js","node_modules/@luma.gl/gltools/dist/esm/utils/device-pixels.js","node_modules/@luma.gl/gltools/src/utils/device-pixels.js","node_modules/@luma.gl/webgl/dist/esm/init.js","node_modules/@luma.gl/webgl/src/init.js","node_modules/@probe.gl/stats/src/index.ts","node_modules/@probe.gl/stats/dist/esm/lib/stats.js","node_modules/@probe.gl/stats/src/lib/stats.ts","node_modules/@probe.gl/stats/node_modules/@babel/runtime/helpers/esm/defineProperty.js","node_modules/@probe.gl/stats/dist/esm/lib/stat.js","node_modules/@probe.gl/stats/src/lib/stat.ts","node_modules/@probe.gl/stats/dist/esm/utils/hi-res-timestamp.js","node_modules/@probe.gl/stats/src/utils/hi-res-timestamp.ts","node_modules/@luma.gl/webgl/dist/esm/webgl-utils/constants-to-keys.js","node_modules/@luma.gl/webgl/src/webgl-utils/constants-to-keys.js","node_modules/@luma.gl/webgl/dist/esm/utils/assert.js","node_modules/@luma.gl/webgl/src/utils/assert.js","node_modules/@luma.gl/webgl/dist/esm/utils/utils.js","node_modules/@luma.gl/webgl/src/utils/utils.js","node_modules/@luma.gl/webgl/dist/esm/utils/stub-methods.js","node_modules/@luma.gl/webgl/src/utils/stub-methods.js","node_modules/@luma.gl/webgl/dist/esm/classes/accessor.js","node_modules/@luma.gl/webgl/src/classes/accessor.js","node_modules/@luma.gl/webgl/dist/esm/webgl-utils/typed-array-utils.js","node_modules/@luma.gl/webgl/src/webgl-utils/typed-array-utils.js","node_modules/@luma.gl/webgl/dist/esm/utils/check-props.js","node_modules/@luma.gl/webgl/src/utils/check-props.js","node_modules/@luma.gl/webgl/dist/esm/features/webgl-features-table.js","node_modules/@luma.gl/webgl/src/features/webgl-features-table.js","node_modules/@luma.gl/webgl/dist/esm/classes/framebuffer.js","node_modules/@luma.gl/webgl/src/classes/framebuffer.js","node_modules/@luma.gl/webgl/dist/esm/classes/texture-2d.js","node_modules/@luma.gl/webgl/src/classes/texture-2d.js","node_modules/@luma.gl/webgl/dist/esm/classes/texture.js","node_modules/@luma.gl/webgl/src/classes/texture.js","node_modules/@luma.gl/webgl/dist/esm/classes/texture-formats.js","node_modules/@luma.gl/webgl/src/classes/texture-formats.js","node_modules/@luma.gl/webgl/dist/esm/utils/load-file.js","node_modules/@luma.gl/webgl/src/utils/load-file.js","node_modules/@luma.gl/webgl/dist/esm/classes/renderbuffer.js","node_modules/@luma.gl/webgl/src/classes/renderbuffer.js","node_modules/@luma.gl/webgl/dist/esm/classes/renderbuffer-formats.js","node_modules/@luma.gl/webgl/src/classes/renderbuffer-formats.js","node_modules/@luma.gl/webgl/dist/esm/classes/clear.js","node_modules/@luma.gl/webgl/src/classes/clear.js","node_modules/@luma.gl/webgl/dist/esm/classes/copy-and-blit.js","node_modules/@luma.gl/webgl/src/classes/copy-and-blit.js","node_modules/@luma.gl/webgl/dist/esm/webgl-utils/format-utils.js","node_modules/@luma.gl/webgl/src/webgl-utils/format-utils.js","node_modules/@luma.gl/webgl/dist/esm/webgl-utils/texture-utils.js","node_modules/@luma.gl/webgl/src/webgl-utils/texture-utils.js","node_modules/@luma.gl/webgl/dist/esm/classes/texture-cube.js","node_modules/@luma.gl/webgl/src/classes/texture-cube.js","node_modules/@luma.gl/webgl/dist/esm/classes/texture-3d.js","node_modules/@luma.gl/webgl/src/classes/texture-3d.js","node_modules/@luma.gl/webgl/dist/esm/features/features.js","node_modules/@luma.gl/webgl/src/features/features.js","node_modules/@deck.gl/core/dist/esm/lib/attribute/shader-attribute.js","node_modules/@deck.gl/core/src/lib/attribute/shader-attribute.ts","node_modules/@deck.gl/core/dist/esm/lib/attribute/gl-utils.js","node_modules/@deck.gl/core/src/lib/attribute/gl-utils.ts","node_modules/@deck.gl/core/dist/esm/utils/typed-array-manager.js","node_modules/@deck.gl/core/src/utils/typed-array-manager.ts","node_modules/@deck.gl/core/dist/esm/utils/math-utils.js","node_modules/@deck.gl/core/src/utils/math-utils.ts","node_modules/@math.gl/core/dist/esm/classes/vector3.js","node_modules/@math.gl/core/src/classes/vector3.ts","node_modules/@math.gl/core/dist/esm/classes/base/vector.js","node_modules/@math.gl/core/src/classes/base/vector.ts","node_modules/@math.gl/core/dist/esm/classes/base/math-array.js","node_modules/@math.gl/core/src/classes/base/math-array.ts","node_modules/@math.gl/core/dist/esm/lib/common.js","node_modules/@math.gl/core/src/lib/common.ts","node_modules/@math.gl/core/dist/esm/lib/assert.js","node_modules/@math.gl/core/src/lib/assert.ts","node_modules/@math.gl/core/dist/esm/lib/validators.js","node_modules/@math.gl/core/src/lib/validators.ts","node_modules/gl-matrix/esm/vec3.js","node_modules/gl-matrix/esm/common.js","node_modules/@math.gl/core/dist/esm/lib/gl-matrix-extras.js","node_modules/@math.gl/core/src/lib/gl-matrix-extras.ts","node_modules/@deck.gl/core/dist/esm/utils/assert.js","node_modules/@deck.gl/core/src/utils/assert.ts","node_modules/@deck.gl/core/dist/esm/utils/iterable-utils.js","node_modules/@deck.gl/core/src/utils/iterable-utils.ts","node_modules/@deck.gl/core/dist/esm/utils/flatten.js","node_modules/@deck.gl/core/src/utils/flatten.ts","node_modules/@deck.gl/core/dist/esm/utils/range.js","node_modules/@deck.gl/core/src/utils/range.ts","node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-transition-utils.js","node_modules/@deck.gl/core/src/lib/attribute/attribute-transition-utils.ts","node_modules/@deck.gl/core/dist/esm/utils/array-utils.js","node_modules/@deck.gl/core/src/utils/array-utils.ts","node_modules/@deck.gl/core/dist/esm/utils/memoize.js","node_modules/@deck.gl/core/src/utils/memoize.ts","node_modules/@deck.gl/core/dist/esm/debug/index.js","node_modules/@deck.gl/core/src/debug/index.ts","node_modules/@deck.gl/core/dist/esm/lib/attribute/attribute-transition-manager.js","node_modules/@deck.gl/core/src/lib/attribute/attribute-transition-manager.ts","node_modules/@luma.gl/engine/dist/esm/transform/transform.js","node_modules/@luma.gl/engine/src/transform/transform.js","node_modules/@luma.gl/shadertools/dist/esm/utils/shader-utils.js","node_modules/@luma.gl/shadertools/src/utils/shader-utils.js","node_modules/@luma.gl/shadertools/dist/esm/utils/assert.js","node_modules/@luma.gl/shadertools/src/utils/assert.js","node_modules/@luma.gl/engine/dist/esm/transform/buffer-transform.js","node_modules/@luma.gl/engine/src/transform/buffer-transform.js","node_modules/@luma.gl/webgl/dist/esm/classes/transform-feedback.js","node_modules/@luma.gl/webgl/src/classes/transform-feedback.js","node_modules/@luma.gl/engine/dist/esm/transform/texture-transform.js","node_modules/@luma.gl/engine/src/transform/texture-transform.js","node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-version.js","node_modules/@luma.gl/webgl/src/glsl-utils/get-shader-version.js","node_modules/@luma.gl/shadertools/dist/esm/modules/transform/transform.js","node_modules/@luma.gl/shadertools/src/modules/transform/transform.js","node_modules/@luma.gl/shadertools/dist/esm/lib/inject-shader.js","node_modules/@luma.gl/shadertools/src/lib/inject-shader.js","node_modules/@luma.gl/shadertools/dist/esm/modules/module-injectors.js","node_modules/@luma.gl/shadertools/src/modules/module-injectors.js","node_modules/@luma.gl/shadertools/dist/esm/lib/constants.js","node_modules/@luma.gl/shadertools/src/lib/constants.js","node_modules/@luma.gl/engine/dist/esm/transform/transform-shader-utils.js","node_modules/@luma.gl/engine/src/transform/transform-shader-utils.js","node_modules/@luma.gl/engine/dist/esm/lib/model.js","node_modules/@luma.gl/engine/src/lib/model.js","node_modules/@luma.gl/engine/dist/esm/lib/program-manager.js","node_modules/@luma.gl/engine/src/lib/program-manager.js","node_modules/@luma.gl/shadertools/dist/esm/lib/assemble-shaders.js","node_modules/@luma.gl/shadertools/src/lib/assemble-shaders.js","node_modules/@luma.gl/shadertools/dist/esm/lib/resolve-modules.js","node_modules/@luma.gl/shadertools/src/lib/resolve-modules.js","node_modules/@luma.gl/shadertools/dist/esm/lib/shader-module.js","node_modules/@luma.gl/shadertools/src/lib/shader-module.js","node_modules/@luma.gl/shadertools/dist/esm/lib/filters/prop-types.js","node_modules/@luma.gl/shadertools/src/lib/filters/prop-types.js","node_modules/@luma.gl/shadertools/dist/esm/lib/platform-defines.js","node_modules/@luma.gl/shadertools/src/lib/platform-defines.js","node_modules/@luma.gl/shadertools/dist/esm/utils/webgl-info.js","node_modules/@luma.gl/shadertools/src/utils/webgl-info.js","node_modules/@luma.gl/shadertools/dist/esm/utils/is-old-ie.js","node_modules/@luma.gl/shadertools/src/utils/is-old-ie.js","node_modules/@luma.gl/shadertools/dist/esm/lib/transpile-shader.js","node_modules/@luma.gl/shadertools/src/lib/transpile-shader.js","node_modules/@luma.gl/webgl/dist/esm/classes/program.js","node_modules/@luma.gl/webgl/src/classes/program.js","node_modules/@luma.gl/webgl/dist/esm/classes/uniforms.js","node_modules/@luma.gl/webgl/src/classes/uniforms.js","node_modules/@luma.gl/webgl/dist/esm/classes/shader.js","node_modules/@luma.gl/webgl/src/classes/shader.js","node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-name.js","node_modules/@luma.gl/webgl/src/glsl-utils/get-shader-name.js","node_modules/@luma.gl/webgl/dist/esm/glsl-utils/format-glsl-error.js","node_modules/@luma.gl/webgl/src/glsl-utils/format-glsl-error.js","node_modules/@luma.gl/webgl/dist/esm/glsl-utils/get-shader-type-name.js","node_modules/@luma.gl/webgl/src/glsl-utils/get-shader-type-name.js","node_modules/@luma.gl/webgl/dist/esm/classes/program-configuration.js","node_modules/@luma.gl/webgl/src/classes/program-configuration.js","node_modules/@luma.gl/webgl/dist/esm/webgl-utils/attribute-utils.js","node_modules/@luma.gl/webgl/src/webgl-utils/attribute-utils.js","node_modules/@luma.gl/webgl/dist/esm/debug/debug-program-configuration.js","node_modules/@luma.gl/webgl/src/debug/debug-program-configuration.js","node_modules/@luma.gl/webgl/dist/esm/debug/debug-uniforms.js","node_modules/@luma.gl/webgl/src/debug/debug-uniforms.js","node_modules/@luma.gl/webgl/dist/esm/utils/format-value.js","node_modules/@luma.gl/webgl/src/utils/format-value.js","node_modules/@luma.gl/webgl/dist/esm/debug/debug-vertex-array.js","node_modules/@luma.gl/webgl/src/debug/debug-vertex-array.js","node_modules/@luma.gl/webgl/dist/esm/classes/vertex-array.js","node_modules/@luma.gl/webgl/src/classes/vertex-array.js","node_modules/@luma.gl/webgl/dist/esm/classes/vertex-array-object.js","node_modules/@luma.gl/webgl/src/classes/vertex-array-object.js","node_modules/@luma.gl/webgl/dist/esm/utils/array-utils-flat.js","node_modules/@luma.gl/webgl/src/utils/array-utils-flat.js","node_modules/@probe.gl/env/dist/esm/lib/get-browser.js","node_modules/@probe.gl/env/src/lib/get-browser.ts","node_modules/@luma.gl/engine/dist/esm/lib/model-utils.js","node_modules/@luma.gl/engine/src/lib/model-utils.js","node_modules/@deck.gl/core/dist/esm/transitions/gpu-interpolation-transition.js","node_modules/@deck.gl/core/src/transitions/gpu-interpolation-transition.ts","node_modules/@deck.gl/core/dist/esm/transitions/transition.js","node_modules/@deck.gl/core/src/transitions/transition.ts","node_modules/@deck.gl/core/dist/esm/transitions/gpu-spring-transition.js","node_modules/@deck.gl/core/src/transitions/gpu-spring-transition.ts","node_modules/@deck.gl/core/dist/esm/lib/uniform-transition-manager.js","node_modules/@deck.gl/core/src/lib/uniform-transition-manager.js","node_modules/@deck.gl/core/dist/esm/transitions/cpu-interpolation-transition.js","node_modules/@deck.gl/core/src/transitions/cpu-interpolation-transition.js","node_modules/@deck.gl/core/dist/esm/transitions/cpu-spring-transition.js","node_modules/@deck.gl/core/src/transitions/cpu-spring-transition.js","node_modules/@deck.gl/core/dist/esm/lifecycle/props.js","node_modules/@deck.gl/core/src/lifecycle/props.ts","node_modules/@deck.gl/core/dist/esm/lifecycle/constants.js","node_modules/@deck.gl/core/src/lifecycle/constants.ts","node_modules/@deck.gl/core/dist/esm/utils/count.js","node_modules/@deck.gl/core/src/utils/count.ts","node_modules/@deck.gl/core/dist/esm/utils/shader.js","node_modules/@deck.gl/core/src/utils/shader.ts","node_modules/@deck.gl/core/dist/esm/shaderlib/project/project-functions.js","node_modules/@deck.gl/core/src/shaderlib/project/project-functions.ts","node_modules/@deck.gl/core/dist/esm/shaderlib/project/viewport-uniforms.js","node_modules/@deck.gl/core/src/shaderlib/project/viewport-uniforms.ts","node_modules/@deck.gl/core/node_modules/gl-matrix/esm/mat4.js","node_modules/@deck.gl/core/node_modules/gl-matrix/esm/common.js","node_modules/@deck.gl/core/node_modules/gl-matrix/esm/vec4.js","node_modules/@deck.gl/core/dist/esm/viewports/web-mercator-viewport.js","node_modules/@deck.gl/core/src/viewports/web-mercator-viewport.ts","node_modules/@deck.gl/core/dist/esm/viewports/viewport.js","node_modules/@deck.gl/core/src/viewports/viewport.ts","node_modules/@math.gl/core/dist/esm/classes/matrix4.js","node_modules/@math.gl/core/src/classes/matrix4.ts","node_modules/@math.gl/core/dist/esm/classes/base/matrix.js","node_modules/@math.gl/core/src/classes/base/matrix.ts","node_modules/gl-matrix/esm/mat4.js","node_modules/gl-matrix/esm/vec2.js","node_modules/gl-matrix/esm/vec4.js","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/src/index.ts","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/dist/esm/web-mercator-viewport.js","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/src/web-mercator-viewport.ts","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/node_modules/@babel/runtime/helpers/esm/defineProperty.js","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/dist/esm/math-utils.js","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/src/math-utils.ts","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/node_modules/gl-matrix/esm/vec4.js","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/node_modules/gl-matrix/esm/common.js","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/src/web-mercator-utils.ts","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/node_modules/gl-matrix/esm/mat4.js","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/node_modules/gl-matrix/esm/vec2.js","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/node_modules/gl-matrix/esm/vec3.js","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/dist/esm/assert.js","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/src/assert.ts","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/src/fit-bounds.ts","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/dist/esm/get-bounds.js","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/src/get-bounds.ts","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/dist/esm/normalize-viewport-props.js","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/src/normalize-viewport-props.ts","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/dist/esm/fly-to-viewport.js","node_modules/@deck.gl/core/node_modules/@math.gl/web-mercator/src/fly-to-viewport.ts","node_modules/@deck.gl/core/node_modules/gl-matrix/esm/vec2.js","node_modules/@deck.gl/core/node_modules/gl-matrix/esm/vec3.js","node_modules/@deck.gl/core/dist/esm/lifecycle/component.js","node_modules/@deck.gl/core/src/lifecycle/component.ts","node_modules/@deck.gl/core/dist/esm/lifecycle/create-props.js","node_modules/@deck.gl/core/src/lifecycle/create-props.ts","node_modules/@deck.gl/core/dist/esm/lifecycle/prop-types.js","node_modules/@deck.gl/core/src/lifecycle/prop-types.ts","node_modules/@deck.gl/core/dist/esm/utils/texture.js","node_modules/@deck.gl/core/src/utils/texture.ts","node_modules/@deck.gl/core/dist/esm/utils/deep-equal.js","node_modules/@deck.gl/core/src/utils/deep-equal.ts","node_modules/@deck.gl/core/dist/esm/lib/layer-state.js","node_modules/@deck.gl/core/src/lib/layer-state.ts","node_modules/@deck.gl/core/dist/esm/lifecycle/component-state.js","node_modules/@deck.gl/core/src/lifecycle/component-state.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/lib/api/load.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/lib/api/load.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/javascript-utils/is-type.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/javascript-utils/is-type.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/normalize-loader.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/lib/loader-utils/normalize-loader.ts","node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/assert.js","node_modules/@loaders.gl/loader-utils/src/lib/env-utils/assert.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/get-fetch-function.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/lib/loader-utils/get-fetch-function.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/lib/fetch/fetch-file.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/lib/fetch/fetch-file.ts","node_modules/@loaders.gl/loader-utils/dist/esm/lib/path-utils/file-aliases.js","node_modules/@loaders.gl/loader-utils/src/lib/path-utils/file-aliases.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/lib/utils/response-utils.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/lib/utils/response-utils.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/lib/utils/resource-utils.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/lib/utils/resource-utils.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/lib/utils/mime-type-utils.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/lib/utils/mime-type-utils.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/lib/utils/url-utils.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/lib/utils/url-utils.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/option-utils.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/lib/loader-utils/option-utils.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/loggers.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/lib/loader-utils/loggers.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@babel/runtime/helpers/esm/defineProperty.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/log/dist/index.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/log/src/index.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/log/dist/log.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/log/src/log.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/env/dist/lib/is-browser.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/env/src/lib/is-browser.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/env/dist/lib/is-electron.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/env/src/lib/is-electron.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/env/dist/utils/globals.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/env/src/utils/globals.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/log/dist/utils/local-storage.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/log/src/utils/local-storage.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/log/dist/utils/formatters.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/log/src/utils/formatters.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/log/dist/utils/color.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/log/src/utils/color.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/log/dist/utils/autobind.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/log/src/utils/autobind.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/log/dist/utils/assert.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/log/src/utils/assert.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/log/dist/utils/hi-res-timestamp.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/log/src/utils/hi-res-timestamp.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/env/dist/lib/globals.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/node_modules/@probe.gl/env/src/lib/globals.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/option-defaults.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/lib/loader-utils/option-defaults.ts","node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/globals.js","node_modules/@loaders.gl/loader-utils/src/lib/env-utils/globals.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/lib/api/parse.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/lib/api/parse.ts","node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/assert.js","node_modules/@loaders.gl/worker-utils/src/lib/env-utils/assert.ts","node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-api/validate-worker-version.js","node_modules/@loaders.gl/worker-utils/src/lib/worker-api/validate-worker-version.ts","node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/version.js","node_modules/@loaders.gl/worker-utils/src/lib/env-utils/version.ts","node_modules/@loaders.gl/loader-utils/dist/esm/lib/worker-loader-utils/parse-with-worker.js","node_modules/@loaders.gl/loader-utils/src/lib/worker-loader-utils/parse-with-worker.ts","node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-api/get-worker-url.js","node_modules/@loaders.gl/worker-utils/src/lib/worker-api/get-worker-url.ts","node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/globals.js","node_modules/@loaders.gl/worker-utils/src/lib/env-utils/globals.ts","node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-farm.js","node_modules/@loaders.gl/worker-utils/src/lib/worker-farm/worker-farm.ts","node_modules/@babel/runtime/helpers/esm/defineProperty.js","node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-pool.js","node_modules/@loaders.gl/worker-utils/src/lib/worker-farm/worker-pool.ts","node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-thread.js","node_modules/@loaders.gl/worker-utils/src/lib/worker-farm/worker-thread.ts","node_modules/@loaders.gl/worker-utils/dist/esm/lib/node/worker_threads-browser.js","node_modules/@loaders.gl/worker-utils/src/lib/node/worker_threads-browser.ts","node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/get-loadable-worker-url.js","node_modules/@loaders.gl/worker-utils/src/lib/worker-utils/get-loadable-worker-url.ts","node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/get-transfer-list.js","node_modules/@loaders.gl/worker-utils/src/lib/worker-utils/get-transfer-list.ts","node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-job.js","node_modules/@loaders.gl/worker-utils/src/lib/worker-farm/worker-job.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/get-data.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/lib/loader-utils/get-data.ts","node_modules/@loaders.gl/loader-utils/dist/esm/lib/iterators/async-iteration.js","node_modules/@loaders.gl/loader-utils/src/lib/iterators/async-iteration.ts","node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/array-buffer-utils.js","node_modules/@loaders.gl/loader-utils/src/lib/binary-utils/array-buffer-utils.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-iterator.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/iterators/make-iterator/make-iterator.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-string-iterator.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/iterators/make-iterator/make-string-iterator.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-array-buffer-iterator.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/iterators/make-iterator/make-array-buffer-iterator.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-blob-iterator.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/iterators/make-iterator/make-blob-iterator.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-stream-iterator.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/iterators/make-iterator/make-stream-iterator.ts","node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/memory-conversion-utils.js","node_modules/@loaders.gl/loader-utils/src/lib/binary-utils/memory-conversion-utils.ts","node_modules/@loaders.gl/loader-utils/dist/esm/lib/node/buffer.browser.js","node_modules/@loaders.gl/loader-utils/src/lib/node/buffer.browser.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/loader-context.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/lib/loader-utils/loader-context.ts","node_modules/@loaders.gl/loader-utils/dist/esm/lib/path-utils/path.js","node_modules/@loaders.gl/loader-utils/src/lib/path-utils/path.ts","node_modules/@loaders.gl/loader-utils/dist/esm/lib/path-utils/get-cwd.js","node_modules/@loaders.gl/loader-utils/src/lib/path-utils/get-cwd.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/lib/api/select-loader.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/lib/api/select-loader.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/lib/utils/log.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/lib/utils/log.ts","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/dist/esm/lib/api/register-loaders.js","node_modules/@deck.gl/core/node_modules/@loaders.gl/core/src/lib/api/register-loaders.ts","node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer.js","node_modules/@deck.gl/layers/src/solid-polygon-layer/solid-polygon-layer.ts","node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.js","node_modules/@luma.gl/shadertools/src/modules/phong-lighting/phong-lighting.js","node_modules/@luma.gl/shadertools/dist/esm/modules/lights/lights.js","node_modules/@luma.gl/shadertools/src/modules/lights/lights.js","node_modules/@luma.gl/shadertools/dist/esm/modules/lights/lights.glsl.js","node_modules/@luma.gl/shadertools/src/modules/lights/lights.glsl.js","node_modules/@luma.gl/shadertools/dist/esm/modules/phong-lighting/phong-lighting.glsl.js","node_modules/@luma.gl/shadertools/src/modules/phong-lighting/phong-lighting.glsl.js","node_modules/@deck.gl/core/dist/esm/shaderlib/picking/picking.js","node_modules/@deck.gl/core/src/shaderlib/picking/picking.ts","node_modules/@luma.gl/shadertools/dist/esm/modules/picking/picking.js","node_modules/@luma.gl/shadertools/src/modules/picking/picking.js","node_modules/@deck.gl/core/dist/esm/shaderlib/project32/project32.js","node_modules/@deck.gl/core/src/shaderlib/project32/project32.ts","node_modules/@deck.gl/core/dist/esm/shaderlib/project/project.js","node_modules/@deck.gl/core/src/shaderlib/project/project.ts","node_modules/@luma.gl/shadertools/dist/esm/modules/fp32/fp32.js","node_modules/@luma.gl/shadertools/src/modules/fp32/fp32.js","node_modules/@deck.gl/core/dist/esm/shaderlib/misc/geometry.js","node_modules/@deck.gl/core/src/shaderlib/misc/geometry.ts","node_modules/@deck.gl/core/dist/esm/shaderlib/project/project.glsl.js","node_modules/@deck.gl/core/src/shaderlib/project/project.glsl.ts","node_modules/@luma.gl/engine/dist/esm/geometry/geometry.js","node_modules/@luma.gl/engine/src/geometry/geometry.js","node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/polygon-tesselator.js","node_modules/@deck.gl/layers/src/solid-polygon-layer/polygon-tesselator.ts","node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/polygon.js","node_modules/@deck.gl/layers/src/solid-polygon-layer/polygon.ts","node_modules/earcut/src/earcut.js","node_modules/@math.gl/polygon/src/index.ts","node_modules/@math.gl/polygon/dist/esm/polygon.js","node_modules/@math.gl/polygon/src/polygon.ts","node_modules/@math.gl/polygon/dist/esm/polygon-utils.js","node_modules/@math.gl/polygon/src/polygon-utils.ts","node_modules/@math.gl/polygon/dist/esm/earcut.js","node_modules/@math.gl/polygon/src/earcut.ts","node_modules/@math.gl/polygon/dist/esm/lineclip.js","node_modules/@math.gl/polygon/src/lineclip.ts","node_modules/@math.gl/polygon/dist/esm/utils.js","node_modules/@math.gl/polygon/src/utils.ts","node_modules/@math.gl/polygon/dist/esm/cut-by-grid.js","node_modules/@math.gl/polygon/src/cut-by-grid.ts","node_modules/@math.gl/polygon/dist/esm/cut-by-mercator-bounds.js","node_modules/@math.gl/polygon/src/cut-by-mercator-bounds.ts","node_modules/@deck.gl/core/dist/esm/utils/tesselator.js","node_modules/@deck.gl/core/src/utils/tesselator.ts","node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-top.glsl.js","node_modules/@deck.gl/layers/src/solid-polygon-layer/solid-polygon-layer-vertex-top.glsl.ts","node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-main.glsl.js","node_modules/@deck.gl/layers/src/solid-polygon-layer/solid-polygon-layer-vertex-main.glsl.ts","node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-vertex-side.glsl.js","node_modules/@deck.gl/layers/src/solid-polygon-layer/solid-polygon-layer-vertex-side.glsl.ts","node_modules/@deck.gl/layers/dist/esm/solid-polygon-layer/solid-polygon-layer-fragment.glsl.js","node_modules/@deck.gl/layers/src/solid-polygon-layer/solid-polygon-layer-fragment.glsl.ts","node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer.js","node_modules/@deck.gl/layers/src/path-layer/path-layer.ts","node_modules/@deck.gl/layers/dist/esm/path-layer/path-tesselator.js","node_modules/@deck.gl/layers/src/path-layer/path-tesselator.ts","node_modules/@deck.gl/layers/dist/esm/path-layer/path.js","node_modules/@deck.gl/layers/src/path-layer/path.ts","node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer-vertex.glsl.js","node_modules/@deck.gl/layers/src/path-layer/path-layer-vertex.glsl.ts","node_modules/@deck.gl/layers/dist/esm/path-layer/path-layer-fragment.glsl.js","node_modules/@deck.gl/layers/src/path-layer/path-layer-fragment.glsl.ts","node_modules/@deck.gl/layers/dist/esm/utils.js","node_modules/@deck.gl/layers/src/utils.ts","node_modules/@turf/bbox-polygon/index.js","node_modules/@turf/buffer/main.es.js","node_modules/@turf/buffer/node_modules/@turf/center/main.es.js","node_modules/@turf/buffer/node_modules/@turf/bbox/main.es.js","node_modules/@turf/buffer/node_modules/@turf/meta/main.es.js","node_modules/@turf/buffer/node_modules/@turf/helpers/main.es.js","node_modules/turf-jsts/jsts.min.js","node_modules/@turf/buffer/node_modules/@turf/projection/main.es.js","node_modules/@turf/clone/main.es.js","node_modules/@turf/buffer/node_modules/d3-geo/index.js","node_modules/@turf/buffer/node_modules/d3-geo/src/area.js","node_modules/@turf/buffer/node_modules/d3-geo/src/adder.js","node_modules/@turf/buffer/node_modules/d3-geo/src/math.js","node_modules/@turf/buffer/node_modules/d3-geo/src/noop.js","node_modules/@turf/buffer/node_modules/d3-geo/src/stream.js","node_modules/@turf/buffer/node_modules/d3-geo/src/bounds.js","node_modules/@turf/buffer/node_modules/d3-geo/src/cartesian.js","node_modules/@turf/buffer/node_modules/d3-geo/src/centroid.js","node_modules/@turf/buffer/node_modules/d3-geo/src/circle.js","node_modules/@turf/buffer/node_modules/d3-geo/src/constant.js","node_modules/@turf/buffer/node_modules/d3-geo/src/rotation.js","node_modules/@turf/buffer/node_modules/d3-geo/src/compose.js","node_modules/@turf/buffer/node_modules/d3-geo/src/clip/extent.js","node_modules/@turf/buffer/node_modules/d3-geo/src/clip/buffer.js","node_modules/@turf/buffer/node_modules/d3-geo/src/clip/line.js","node_modules/@turf/buffer/node_modules/d3-geo/src/clip/polygon.js","node_modules/@turf/buffer/node_modules/d3-geo/src/pointEqual.js","node_modules/@turf/buffer/node_modules/d3-array/src/index.js","node_modules/@turf/buffer/node_modules/d3-array/src/bisect.js","node_modules/@turf/buffer/node_modules/d3-array/src/ascending.js","node_modules/@turf/buffer/node_modules/d3-array/src/bisector.js","node_modules/@turf/buffer/node_modules/d3-array/src/cross.js","node_modules/@turf/buffer/node_modules/d3-array/src/pairs.js","node_modules/@turf/buffer/node_modules/d3-array/src/descending.js","node_modules/@turf/buffer/node_modules/d3-array/src/deviation.js","node_modules/@turf/buffer/node_modules/d3-array/src/variance.js","node_modules/@turf/buffer/node_modules/d3-array/src/number.js","node_modules/@turf/buffer/node_modules/d3-array/src/extent.js","node_modules/@turf/buffer/node_modules/d3-array/src/histogram.js","node_modules/@turf/buffer/node_modules/d3-array/src/array.js","node_modules/@turf/buffer/node_modules/d3-array/src/constant.js","node_modules/@turf/buffer/node_modules/d3-array/src/identity.js","node_modules/@turf/buffer/node_modules/d3-array/src/range.js","node_modules/@turf/buffer/node_modules/d3-array/src/ticks.js","node_modules/@turf/buffer/node_modules/d3-array/src/threshold/sturges.js","node_modules/@turf/buffer/node_modules/d3-array/src/threshold/freedmanDiaconis.js","node_modules/@turf/buffer/node_modules/d3-array/src/quantile.js","node_modules/@turf/buffer/node_modules/d3-array/src/threshold/scott.js","node_modules/@turf/buffer/node_modules/d3-array/src/max.js","node_modules/@turf/buffer/node_modules/d3-array/src/mean.js","node_modules/@turf/buffer/node_modules/d3-array/src/median.js","node_modules/@turf/buffer/node_modules/d3-array/src/merge.js","node_modules/@turf/buffer/node_modules/d3-array/src/min.js","node_modules/@turf/buffer/node_modules/d3-array/src/permute.js","node_modules/@turf/buffer/node_modules/d3-array/src/scan.js","node_modules/@turf/buffer/node_modules/d3-array/src/shuffle.js","node_modules/@turf/buffer/node_modules/d3-array/src/sum.js","node_modules/@turf/buffer/node_modules/d3-array/src/transpose.js","node_modules/@turf/buffer/node_modules/d3-array/src/zip.js","node_modules/@turf/buffer/node_modules/d3-geo/src/contains.js","node_modules/@turf/buffer/node_modules/d3-geo/src/polygonContains.js","node_modules/@turf/buffer/node_modules/d3-geo/src/distance.js","node_modules/@turf/buffer/node_modules/d3-geo/src/length.js","node_modules/@turf/buffer/node_modules/d3-geo/src/graticule.js","node_modules/@turf/buffer/node_modules/d3-geo/src/interpolate.js","node_modules/@turf/buffer/node_modules/d3-geo/src/path/index.js","node_modules/@turf/buffer/node_modules/d3-geo/src/identity.js","node_modules/@turf/buffer/node_modules/d3-geo/src/path/area.js","node_modules/@turf/buffer/node_modules/d3-geo/src/path/bounds.js","node_modules/@turf/buffer/node_modules/d3-geo/src/path/centroid.js","node_modules/@turf/buffer/node_modules/d3-geo/src/path/context.js","node_modules/@turf/buffer/node_modules/d3-geo/src/path/measure.js","node_modules/@turf/buffer/node_modules/d3-geo/src/path/string.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/albers.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/conicEqualArea.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/conic.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/index.js","node_modules/@turf/buffer/node_modules/d3-geo/src/clip/antimeridian.js","node_modules/@turf/buffer/node_modules/d3-geo/src/clip/index.js","node_modules/@turf/buffer/node_modules/d3-geo/src/clip/circle.js","node_modules/@turf/buffer/node_modules/d3-geo/src/transform.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/fit.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/resample.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/cylindricalEqualArea.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/albersUsa.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/azimuthalEqualArea.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/azimuthal.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/azimuthalEquidistant.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/conicConformal.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/mercator.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/conicEquidistant.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/equirectangular.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/gnomonic.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/identity.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/naturalEarth1.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/orthographic.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/stereographic.js","node_modules/@turf/buffer/node_modules/d3-geo/src/projection/transverseMercator.js","node_modules/@turf/difference/index.mjs","node_modules/martinez-polygon-clipping/dist/martinez.umd.js","node_modules/martinez-polygon-clipping/node_modules/splaytree/index.js","node_modules/martinez-polygon-clipping/src/edge_type.js","node_modules/martinez-polygon-clipping/src/operation.js","node_modules/martinez-polygon-clipping/src/compute_fields.js","node_modules/martinez-polygon-clipping/src/sweep_event.js","node_modules/martinez-polygon-clipping/src/equals.js","node_modules/martinez-polygon-clipping/src/signed_area.js","node_modules/martinez-polygon-clipping/src/compare_events.js","node_modules/martinez-polygon-clipping/src/divide_segment.js","node_modules/martinez-polygon-clipping/src/segment_intersection.js","node_modules/martinez-polygon-clipping/src/possible_intersection.js","node_modules/martinez-polygon-clipping/src/compare_segments.js","node_modules/martinez-polygon-clipping/src/subdivide_segments.js","node_modules/martinez-polygon-clipping/src/connect_edges.js","node_modules/martinez-polygon-clipping/node_modules/tinyqueue/index.js","node_modules/martinez-polygon-clipping/src/fill_queue.js","node_modules/martinez-polygon-clipping/src/index.js","node_modules/martinez-polygon-clipping/index.js","node_modules/@turf/area/index.js","node_modules/@turf/invariant/index.js","node_modules/@turf/distance/index.js","node_modules/nebula.gl/dist-es6/lib/feature.js","node_modules/nebula.gl/src/lib/feature.ts","node_modules/nebula.gl/dist-es6/lib/layer-mouse-event.js","node_modules/nebula.gl/src/lib/layer-mouse-event.ts","node_modules/nebula.gl/dist-es6/lib/nebula-layer.js","node_modules/nebula.gl/src/lib/nebula-layer.ts","node_modules/events/events.js","node_modules/nebula.gl/node_modules/uuid/dist/esm-browser/v4.js","node_modules/nebula.gl/node_modules/uuid/dist/esm-browser/rng.js","node_modules/nebula.gl/node_modules/uuid/dist/esm-browser/bytesToUuid.js","node_modules/nebula.gl/dist-es6/lib/layers/junctions-layer.js","node_modules/nebula.gl/src/lib/layers/junctions-layer.ts","node_modules/nebula.gl/node_modules/@nebula.gl/layers/dist-es6/index.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/src/index.ts","node_modules/nebula.gl/node_modules/@nebula.gl/layers/dist-es6/style.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/src/style.ts","node_modules/nebula.gl/node_modules/@nebula.gl/layers/dist-es6/layers/editable-geojson-layer.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/src/layers/editable-geojson-layer.ts","node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-layer.js","node_modules/@deck.gl/layers/src/geojson-layer/geojson-layer.ts","node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-binary.js","node_modules/@deck.gl/layers/src/geojson-layer/geojson-binary.ts","node_modules/@deck.gl/layers/dist/esm/geojson-layer/sub-layer-map.js","node_modules/@deck.gl/layers/src/geojson-layer/sub-layer-map.ts","node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer.js","node_modules/@deck.gl/layers/src/icon-layer/icon-layer.ts","node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer-vertex.glsl.js","node_modules/@deck.gl/layers/src/icon-layer/icon-layer-vertex.glsl.ts","node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-layer-fragment.glsl.js","node_modules/@deck.gl/layers/src/icon-layer/icon-layer-fragment.glsl.ts","node_modules/@deck.gl/layers/dist/esm/icon-layer/icon-manager.js","node_modules/@deck.gl/layers/src/icon-layer/icon-manager.ts","node_modules/@loaders.gl/core/dist/esm/lib/api/load.js","node_modules/@loaders.gl/core/src/lib/api/load.ts","node_modules/@loaders.gl/core/dist/esm/javascript-utils/is-type.js","node_modules/@loaders.gl/core/src/javascript-utils/is-type.ts","node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/normalize-loader.js","node_modules/@loaders.gl/core/src/lib/loader-utils/normalize-loader.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/assert.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/src/lib/env-utils/assert.ts","node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/option-utils.js","node_modules/@loaders.gl/core/src/lib/loader-utils/option-utils.ts","node_modules/@loaders.gl/core/dist/esm/lib/fetch/fetch-file.js","node_modules/@loaders.gl/core/src/lib/fetch/fetch-file.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/dist/esm/lib/path-utils/file-aliases.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/src/lib/path-utils/file-aliases.ts","node_modules/@loaders.gl/core/dist/esm/lib/utils/response-utils.js","node_modules/@loaders.gl/core/src/lib/utils/response-utils.ts","node_modules/@loaders.gl/core/dist/esm/lib/utils/resource-utils.js","node_modules/@loaders.gl/core/src/lib/utils/resource-utils.ts","node_modules/@loaders.gl/core/dist/esm/lib/utils/mime-type-utils.js","node_modules/@loaders.gl/core/src/lib/utils/mime-type-utils.ts","node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/loggers.js","node_modules/@loaders.gl/core/src/lib/loader-utils/loggers.ts","node_modules/probe.gl/dist/esm/index.js","node_modules/probe.gl/src/index.js","node_modules/probe.gl/dist/esm/lib/log.js","node_modules/probe.gl/src/lib/log.js","node_modules/probe.gl/dist/esm/utils/globals.js","node_modules/probe.gl/src/utils/globals.js","node_modules/probe.gl/dist/esm/env/is-browser.js","node_modules/probe.gl/src/env/is-browser.js","node_modules/probe.gl/dist/esm/env/is-electron.js","node_modules/probe.gl/src/env/is-electron.js","node_modules/probe.gl/dist/esm/env/globals.js","node_modules/probe.gl/src/env/globals.js","node_modules/probe.gl/dist/esm/utils/local-storage.js","node_modules/probe.gl/src/utils/local-storage.js","node_modules/probe.gl/dist/esm/utils/formatters.js","node_modules/probe.gl/src/utils/formatters.js","node_modules/probe.gl/dist/esm/utils/color.js","node_modules/probe.gl/src/utils/color.js","node_modules/probe.gl/dist/esm/utils/autobind.js","node_modules/probe.gl/src/utils/autobind.js","node_modules/probe.gl/dist/esm/utils/assert.js","node_modules/probe.gl/src/utils/assert.js","node_modules/probe.gl/dist/esm/utils/hi-res-timestamp.js","node_modules/probe.gl/src/utils/hi-res-timestamp.js","node_modules/@parcel/node-resolver-core/lib/_empty.js","node_modules/probe.gl/node_modules/@probe.gl/stats/src/index.js","node_modules/probe.gl/node_modules/@probe.gl/stats/dist/esm/lib/stats.js","node_modules/probe.gl/node_modules/@probe.gl/stats/src/lib/stats.js","node_modules/probe.gl/node_modules/@probe.gl/stats/dist/esm/lib/stat.js","node_modules/probe.gl/node_modules/@probe.gl/stats/src/lib/stat.js","node_modules/probe.gl/node_modules/@probe.gl/stats/dist/esm/utils/hi-res-timestamp.js","node_modules/probe.gl/node_modules/@probe.gl/stats/src/utils/hi-res-timestamp.js","node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/option-defaults.js","node_modules/@loaders.gl/core/src/lib/loader-utils/option-defaults.ts","node_modules/@loaders.gl/core/dist/esm/lib/api/parse.js","node_modules/@loaders.gl/core/src/lib/api/parse.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/assert.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/env-utils/assert.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-api/validate-worker-version.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/worker-api/validate-worker-version.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/version.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/env-utils/version.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/dist/esm/lib/worker-loader-utils/parse-with-worker.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/src/lib/worker-loader-utils/parse-with-worker.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-api/get-worker-url.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/worker-api/get-worker-url.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-farm.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/worker-farm/worker-farm.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-pool.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/worker-farm/worker-pool.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/dist/esm/lib/env-utils/globals.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/env-utils/globals.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-thread.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/worker-farm/worker-thread.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/get-loadable-worker-url.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/worker-utils/get-loadable-worker-url.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-utils/get-transfer-list.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/worker-utils/get-transfer-list.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/dist/esm/lib/worker-farm/worker-job.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/src/lib/worker-farm/worker-job.ts","node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/get-data.js","node_modules/@loaders.gl/core/src/lib/loader-utils/get-data.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/dist/esm/lib/iterators/async-iteration.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/src/lib/iterators/async-iteration.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/array-buffer-utils.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/src/lib/binary-utils/array-buffer-utils.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/dist/esm/lib/binary-utils/buffer-utils.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/src/lib/binary-utils/buffer-utils.ts","node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-iterator.js","node_modules/@loaders.gl/core/src/iterators/make-iterator/make-iterator.ts","node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-string-iterator.js","node_modules/@loaders.gl/core/src/iterators/make-iterator/make-string-iterator.ts","node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-array-buffer-iterator.js","node_modules/@loaders.gl/core/src/iterators/make-iterator/make-array-buffer-iterator.ts","node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-blob-iterator.js","node_modules/@loaders.gl/core/src/iterators/make-iterator/make-blob-iterator.ts","node_modules/@loaders.gl/core/dist/esm/iterators/make-iterator/make-stream-iterator.js","node_modules/@loaders.gl/core/src/iterators/make-iterator/make-stream-iterator.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/dist/esm/lib/env-utils/globals.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/src/lib/env-utils/globals.ts","node_modules/@loaders.gl/core/dist/esm/lib/loader-utils/loader-context.js","node_modules/@loaders.gl/core/src/lib/loader-utils/loader-context.ts","node_modules/@loaders.gl/core/dist/esm/lib/api/select-loader.js","node_modules/@loaders.gl/core/src/lib/api/select-loader.ts","node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/dist/esm/lib/path-utils/path.js","node_modules/@loaders.gl/core/node_modules/@loaders.gl/loader-utils/src/lib/path-utils/path.ts","node_modules/@loaders.gl/core/dist/esm/lib/api/register-loaders.js","node_modules/@loaders.gl/core/src/lib/api/register-loaders.ts","node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer.js","node_modules/@deck.gl/layers/src/scatterplot-layer/scatterplot-layer.ts","node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer-vertex.glsl.js","node_modules/@deck.gl/layers/src/scatterplot-layer/scatterplot-layer-vertex.glsl.ts","node_modules/@deck.gl/layers/dist/esm/scatterplot-layer/scatterplot-layer-fragment.glsl.js","node_modules/@deck.gl/layers/src/scatterplot-layer/scatterplot-layer-fragment.glsl.ts","node_modules/@deck.gl/layers/dist/esm/text-layer/text-layer.js","node_modules/@deck.gl/layers/src/text-layer/text-layer.ts","node_modules/@deck.gl/layers/dist/esm/text-layer/multi-icon-layer/multi-icon-layer.js","node_modules/@deck.gl/layers/src/text-layer/multi-icon-layer/multi-icon-layer.ts","node_modules/@deck.gl/layers/dist/esm/text-layer/multi-icon-layer/multi-icon-layer-fragment.glsl.js","node_modules/@deck.gl/layers/src/text-layer/multi-icon-layer/multi-icon-layer-fragment.glsl.ts","node_modules/@deck.gl/layers/dist/esm/text-layer/font-atlas-manager.js","node_modules/@deck.gl/layers/src/text-layer/font-atlas-manager.ts","node_modules/@deck.gl/layers/node_modules/@mapbox/tiny-sdf/index.js","node_modules/@deck.gl/layers/dist/esm/text-layer/utils.js","node_modules/@deck.gl/layers/src/text-layer/utils.ts","node_modules/@deck.gl/layers/dist/esm/text-layer/lru-cache.js","node_modules/@deck.gl/layers/src/text-layer/lru-cache.ts","node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer.js","node_modules/@deck.gl/layers/src/text-layer/text-background-layer/text-background-layer.ts","node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer-vertex.glsl.js","node_modules/@deck.gl/layers/src/text-layer/text-background-layer/text-background-layer-vertex.glsl.ts","node_modules/@deck.gl/layers/dist/esm/text-layer/text-background-layer/text-background-layer-fragment.glsl.js","node_modules/@deck.gl/layers/src/text-layer/text-background-layer/text-background-layer-fragment.glsl.ts","node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson.js","node_modules/@deck.gl/layers/src/geojson-layer/geojson.ts","node_modules/@deck.gl/layers/dist/esm/geojson-layer/geojson-layer-props.js","node_modules/@deck.gl/layers/src/geojson-layer/geojson-layer-props.ts","node_modules/@nebula.gl/edit-modes/dist-es6/index.js","node_modules/@nebula.gl/edit-modes/src/index.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/geojson-edit-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/geojson-edit-mode.ts","node_modules/@turf/union/index.js","node_modules/@nebula.gl/edit-modes/node_modules/@turf/intersect/index.js","node_modules/@turf/rewind/main.es.js","node_modules/@turf/boolean-clockwise/main.es.js","node_modules/@turf/boolean-clockwise/node_modules/@turf/invariant/main.es.js","node_modules/@turf/boolean-clockwise/node_modules/@turf/helpers/main.es.js","node_modules/@turf/rewind/node_modules/@turf/meta/main.es.js","node_modules/@turf/rewind/node_modules/@turf/helpers/main.es.js","node_modules/@turf/rewind/node_modules/@turf/invariant/main.es.js","node_modules/@nebula.gl/edit-modes/dist-es6/utils.js","node_modules/@nebula.gl/edit-modes/src/utils.ts","node_modules/@turf/destination/index.js","node_modules/@turf/bearing/index.js","node_modules/@turf/point-to-line-distance/index.js","node_modules/@turf/point-to-line-distance/node_modules/@turf/rhumb-distance/index.js","node_modules/@nebula.gl/edit-modes/node_modules/@turf/meta/dist/es/index.js","node_modules/@nebula.gl/edit-modes/node_modules/@turf/meta/node_modules/@turf/helpers/dist/es/index.js","node_modules/viewport-mercator-project/module.js","node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator/src/index.js","node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator/dist/esm/web-mercator-viewport.js","node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator/src/web-mercator-viewport.js","node_modules/viewport-mercator-project/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","node_modules/viewport-mercator-project/node_modules/@babel/runtime/helpers/esm/createClass.js","node_modules/viewport-mercator-project/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","node_modules/viewport-mercator-project/node_modules/@babel/runtime/helpers/esm/typeof.js","node_modules/viewport-mercator-project/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","node_modules/viewport-mercator-project/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","node_modules/viewport-mercator-project/node_modules/@babel/runtime/helpers/esm/inherits.js","node_modules/viewport-mercator-project/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator/dist/esm/viewport.js","node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator/src/viewport.js","node_modules/viewport-mercator-project/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","node_modules/viewport-mercator-project/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","node_modules/viewport-mercator-project/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","node_modules/viewport-mercator-project/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","node_modules/viewport-mercator-project/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","node_modules/viewport-mercator-project/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator/dist/esm/math-utils.js","node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator/src/math-utils.js","node_modules/viewport-mercator-project/node_modules/gl-matrix/esm/vec4.js","node_modules/viewport-mercator-project/node_modules/gl-matrix/esm/common.js","node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js","node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator/src/web-mercator-utils.js","node_modules/viewport-mercator-project/node_modules/gl-matrix/esm/mat4.js","node_modules/viewport-mercator-project/node_modules/gl-matrix/esm/vec2.js","node_modules/viewport-mercator-project/node_modules/gl-matrix/esm/vec3.js","node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator/dist/esm/assert.js","node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator/src/assert.js","node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js","node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator/src/fit-bounds.js","node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator/dist/esm/normalize-viewport-props.js","node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator/src/normalize-viewport-props.js","node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator/dist/esm/fly-to-viewport.js","node_modules/viewport-mercator-project/node_modules/@math.gl/web-mercator/src/fly-to-viewport.js","node_modules/@nebula.gl/edit-modes/dist-es6/lib/immutable-feature-collection.js","node_modules/@nebula.gl/edit-modes/src/lib/immutable-feature-collection.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/modify-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/modify-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/resize-circle-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/resize-circle-mode.ts","node_modules/@turf/nearest-point-on-line/index.js","node_modules/@turf/line-intersect/index.js","node_modules/@turf/line-segment/index.js","node_modules/@turf/line-intersect/node_modules/geojson-rbush/index.js","node_modules/@turf/line-intersect/node_modules/rbush/index.js","node_modules/quickselect/quickselect.js","node_modules/@turf/circle/index.js","node_modules/@turf/center/index.js","node_modules/@nebula.gl/edit-modes/dist-es6/lib/translate-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/translate-mode.ts","node_modules/@turf/transform-translate/main.es.js","node_modules/@turf/transform-translate/node_modules/@turf/meta/main.es.js","node_modules/@turf/transform-translate/node_modules/@turf/helpers/main.es.js","node_modules/@turf/transform-translate/node_modules/@turf/invariant/main.es.js","node_modules/@turf/rhumb-destination/main.es.js","node_modules/@turf/rhumb-destination/node_modules/@turf/helpers/main.es.js","node_modules/@turf/rhumb-destination/node_modules/@turf/invariant/main.es.js","node_modules/@nebula.gl/edit-modes/dist-es6/lib/scale-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/scale-mode.ts","node_modules/@turf/centroid/index.js","node_modules/@turf/polygon-to-line/index.js","node_modules/@turf/transform-scale/main.es.js","node_modules/@turf/transform-scale/node_modules/@turf/center/main.es.js","node_modules/@turf/transform-scale/node_modules/@turf/bbox/main.es.js","node_modules/@turf/transform-scale/node_modules/@turf/meta/main.es.js","node_modules/@turf/transform-scale/node_modules/@turf/helpers/main.es.js","node_modules/@turf/transform-scale/node_modules/@turf/centroid/main.es.js","node_modules/@turf/rhumb-bearing/main.es.js","node_modules/@turf/rhumb-bearing/node_modules/@turf/invariant/main.es.js","node_modules/@turf/rhumb-bearing/node_modules/@turf/helpers/main.es.js","node_modules/@turf/rhumb-distance/main.es.js","node_modules/@turf/rhumb-distance/node_modules/@turf/helpers/main.es.js","node_modules/@turf/rhumb-distance/node_modules/@turf/invariant/main.es.js","node_modules/@turf/transform-scale/node_modules/@turf/invariant/main.es.js","node_modules/@nebula.gl/edit-modes/dist-es6/lib/rotate-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/rotate-mode.ts","node_modules/@turf/transform-rotate/main.es.js","node_modules/@turf/transform-rotate/node_modules/@turf/centroid/main.es.js","node_modules/@turf/transform-rotate/node_modules/@turf/meta/main.es.js","node_modules/@turf/transform-rotate/node_modules/@turf/helpers/main.es.js","node_modules/@turf/transform-rotate/node_modules/@turf/invariant/main.es.js","node_modules/@nebula.gl/edit-modes/dist-es6/lib/duplicate-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/duplicate-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/extend-line-string-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/extend-line-string-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/split-polygon-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/split-polygon-mode.ts","node_modules/@turf/boolean-point-in-polygon/index.js","node_modules/@nebula.gl/edit-modes/dist-es6/lib/extrude-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/extrude-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/elevation-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/elevation-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/transform-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/transform-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/composite-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/composite-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-point-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/draw-point-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-line-string-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/draw-line-string-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-polygon-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/draw-polygon-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-rectangle-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/draw-rectangle-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/two-click-polygon-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/two-click-polygon-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-square-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/draw-square-mode.ts","node_modules/@turf/along/dist/es/index.js","node_modules/@turf/along/node_modules/@turf/bearing/dist/es/index.js","node_modules/@turf/along/node_modules/@turf/helpers/dist/es/index.js","node_modules/@turf/along/node_modules/@turf/invariant/dist/es/index.js","node_modules/@turf/along/node_modules/@turf/destination/dist/es/index.js","node_modules/@turf/along/node_modules/@turf/distance/dist/es/index.js","node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-rectangle-from-center-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/draw-rectangle-from-center-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-square-from-center-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/draw-square-from-center-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-circle-by-diameter-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/draw-circle-by-diameter-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-circle-from-center-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/draw-circle-from-center-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-ellipse-by-bounding-box-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/draw-ellipse-by-bounding-box-mode.ts","node_modules/@turf/ellipse/main.es.js","node_modules/@turf/ellipse/node_modules/@turf/helpers/main.es.js","node_modules/@turf/ellipse/node_modules/@turf/invariant/main.es.js","node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-ellipse-using-three-points-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/draw-ellipse-using-three-points-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/three-click-polygon-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/three-click-polygon-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-rectangle-using-three-points-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/draw-rectangle-using-three-points-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-90degree-polygon-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/draw-90degree-polygon-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/draw-polygon-by-dragging-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/draw-polygon-by-dragging-mode.ts","node_modules/lodash.throttle/index.js","node_modules/@nebula.gl/edit-modes/dist-es6/lib/view-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/view-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/measure-distance-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/measure-distance-mode.ts","node_modules/@turf/midpoint/dist/es/index.js","node_modules/@turf/midpoint/node_modules/@turf/bearing/dist/es/index.js","node_modules/@turf/midpoint/node_modules/@turf/helpers/dist/es/index.js","node_modules/@turf/midpoint/node_modules/@turf/invariant/dist/es/index.js","node_modules/@turf/midpoint/node_modules/@turf/destination/dist/es/index.js","node_modules/@turf/midpoint/node_modules/@turf/distance/dist/es/index.js","node_modules/@nebula.gl/edit-modes/dist-es6/lib/measure-area-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/measure-area-mode.ts","node_modules/@nebula.gl/edit-modes/node_modules/@turf/area/dist/es/index.js","node_modules/@nebula.gl/edit-modes/dist-es6/lib/measure-angle-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/measure-angle-mode.ts","node_modules/@nebula.gl/edit-modes/dist-es6/memoize.js","node_modules/@nebula.gl/edit-modes/src/memoize.ts","node_modules/@nebula.gl/edit-modes/dist-es6/lib/snappable-mode.js","node_modules/@nebula.gl/edit-modes/src/lib/snappable-mode.ts","node_modules/nebula.gl/node_modules/@nebula.gl/layers/dist-es6/constants.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/src/constants.ts","node_modules/nebula.gl/node_modules/@nebula.gl/layers/dist-es6/layers/editable-layer.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/src/layers/editable-layer.ts","node_modules/nebula.gl/node_modules/@nebula.gl/layers/dist-es6/layers/editable-path-layer.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/src/layers/editable-path-layer.ts","node_modules/nebula.gl/node_modules/@nebula.gl/layers/dist-es6/utils.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/src/utils.ts","node_modules/nebula.gl/node_modules/@nebula.gl/layers/dist-es6/layers/editable-h3-cluster-layer.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/src/layers/editable-h3-cluster-layer.ts","node_modules/@deck.gl/geo-layers/dist/esm/h3-layers/h3-cluster-layer.js","node_modules/@deck.gl/geo-layers/src/h3-layers/h3-cluster-layer.ts","node_modules/@deck.gl/geo-layers/node_modules/@babel/runtime/helpers/esm/defineProperty.js","node_modules/h3-js/dist/browser/h3-js.es.js","node_modules/h3-js/dist/libh3-browser.js","node_modules/h3-js/lib/bindings.js","node_modules/h3-js/lib/h3core.js","node_modules/@deck.gl/geo-layers/dist/esm/h3-layers/h3-hexagon-layer.js","node_modules/@deck.gl/geo-layers/src/h3-layers/h3-hexagon-layer.ts","node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer.js","node_modules/@deck.gl/layers/src/column-layer/column-layer.ts","node_modules/@deck.gl/layers/dist/esm/column-layer/column-geometry.js","node_modules/@deck.gl/layers/src/column-layer/column-geometry.ts","node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer-vertex.glsl.js","node_modules/@deck.gl/layers/src/column-layer/column-layer-vertex.glsl.ts","node_modules/@deck.gl/layers/dist/esm/column-layer/column-layer-fragment.glsl.js","node_modules/@deck.gl/layers/src/column-layer/column-layer-fragment.glsl.ts","node_modules/@deck.gl/geo-layers/dist/esm/geo-cell-layer/GeoCellLayer.js","node_modules/@deck.gl/geo-layers/src/geo-cell-layer/GeoCellLayer.ts","node_modules/nebula.gl/node_modules/h3-js/dist/browser/h3-js.es.js","node_modules/nebula.gl/node_modules/h3-js/dist/libh3-browser.js","node_modules/nebula.gl/node_modules/h3-js/lib/bindings.js","node_modules/nebula.gl/node_modules/h3-js/lib/h3core.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/dist-es6/layers/selection-layer.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/src/layers/selection-layer.ts","node_modules/nebula.gl/node_modules/@nebula.gl/layers/dist-es6/layers/elevated-edit-handle-layer.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/src/layers/elevated-edit-handle-layer.ts","node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer.js","node_modules/@deck.gl/layers/src/line-layer/line-layer.ts","node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer-vertex.glsl.js","node_modules/@deck.gl/layers/src/line-layer/line-layer-vertex.glsl.ts","node_modules/@deck.gl/layers/dist/esm/line-layer/line-layer-fragment.glsl.js","node_modules/@deck.gl/layers/src/line-layer/line-layer-fragment.glsl.ts","node_modules/nebula.gl/node_modules/@nebula.gl/layers/dist-es6/layers/path-outline-layer/path-outline-layer.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/src/layers/path-outline-layer/path-outline-layer.ts","node_modules/nebula.gl/node_modules/@luma.gl/constants/dist/esm/index.js","node_modules/nebula.gl/node_modules/@luma.gl/constants/src/index.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/dist-es6/shaderlib/outline/outline.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/src/shaderlib/outline/outline.ts","node_modules/nebula.gl/node_modules/@nebula.gl/layers/dist-es6/layers/path-marker-layer/path-marker-layer.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/src/layers/path-marker-layer/path-marker-layer.ts","node_modules/@deck.gl/mesh-layers/dist/esm/simple-mesh-layer/simple-mesh-layer.js","node_modules/@deck.gl/mesh-layers/src/simple-mesh-layer/simple-mesh-layer.ts","node_modules/@deck.gl/mesh-layers/node_modules/@babel/runtime/helpers/esm/defineProperty.js","node_modules/@deck.gl/mesh-layers/dist/esm/utils/matrix.js","node_modules/@deck.gl/mesh-layers/src/utils/matrix.ts","node_modules/@deck.gl/mesh-layers/dist/esm/simple-mesh-layer/simple-mesh-layer-vertex.glsl.js","node_modules/@deck.gl/mesh-layers/src/simple-mesh-layer/simple-mesh-layer-vertex.glsl.ts","node_modules/@deck.gl/mesh-layers/dist/esm/simple-mesh-layer/simple-mesh-layer-fragment.glsl.js","node_modules/@deck.gl/mesh-layers/src/simple-mesh-layer/simple-mesh-layer-fragment.glsl.ts","node_modules/@loaders.gl/schema/dist/esm/category/mesh/mesh-utils.js","node_modules/@loaders.gl/schema/src/category/mesh/mesh-utils.ts","node_modules/nebula.gl/node_modules/@nebula.gl/layers/dist-es6/layers/path-marker-layer/arrow-2d-geometry.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/src/layers/path-marker-layer/arrow-2d-geometry.ts","node_modules/nebula.gl/node_modules/@nebula.gl/layers/dist-es6/layers/path-marker-layer/create-path-markers.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/src/layers/path-marker-layer/create-path-markers.ts","node_modules/math.gl/src/index.ts","node_modules/@math.gl/core/dist/esm/classes/vector2.js","node_modules/@math.gl/core/src/classes/vector2.ts","node_modules/nebula.gl/node_modules/@nebula.gl/layers/dist-es6/layers/path-marker-layer/polyline.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/src/layers/path-marker-layer/polyline.ts","node_modules/nebula.gl/node_modules/@nebula.gl/layers/dist-es6/layers/junction-scatterplot-layer.js","node_modules/nebula.gl/node_modules/@nebula.gl/layers/src/layers/junction-scatterplot-layer.ts","node_modules/nebula.gl/dist-es6/lib/utils.js","node_modules/nebula.gl/src/lib/utils.ts","node_modules/nebula.gl/dist-es6/lib/deck-renderer/deck-cache.js","node_modules/nebula.gl/src/lib/deck-renderer/deck-cache.ts","node_modules/nebula.gl/dist-es6/lib/layers/texts-layer.js","node_modules/nebula.gl/src/lib/layers/texts-layer.ts","node_modules/nebula.gl/dist-es6/lib/constants.js","node_modules/nebula.gl/src/lib/constants.ts","node_modules/nebula.gl/dist-es6/lib/layers/segments-layer.js","node_modules/nebula.gl/src/lib/layers/segments-layer.ts","node_modules/nebula.gl/dist-es6/lib/nebula.js","node_modules/nebula.gl/src/lib/nebula.ts","node_modules/global/document.js","src/stores/FeatureSettingsStore.js","node_modules/@mui/material/colors/index.js","node_modules/@mui/material/colors/pink.js","node_modules/@mui/material/colors/deepPurple.js","node_modules/@mui/material/colors/indigo.js","node_modules/@mui/material/colors/cyan.js","node_modules/@mui/material/colors/teal.js","node_modules/@mui/material/colors/lightGreen.js","node_modules/@mui/material/colors/lime.js","node_modules/@mui/material/colors/yellow.js","node_modules/@mui/material/colors/amber.js","node_modules/@mui/material/colors/deepOrange.js","node_modules/@mui/material/colors/brown.js","node_modules/@mui/material/colors/blueGrey.js","node_modules/@mui/material/Snackbar/Snackbar.js","node_modules/clsx/dist/clsx.m.js","node_modules/@mui/base/composeClasses/composeClasses.js","node_modules/@mui/base/ClickAwayListener/ClickAwayListener.js","node_modules/@mui/utils/esm/ownerDocument.js","node_modules/@mui/utils/esm/useEventCallback.js","node_modules/@mui/utils/esm/useEnhancedEffect.js","node_modules/@mui/utils/esm/useForkRef.js","node_modules/@mui/utils/esm/setRef.js","node_modules/@mui/material/styles/styled.js","node_modules/@mui/system/esm/createStyled.js","node_modules/@mui/styled-engine/index.js","node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.browser.esm.js","node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js","node_modules/@mui/system/esm/propsToClassKey.js","node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","node_modules/@mui/system/esm/getThemeValue.js","node_modules/@mui/system/esm/borders.js","node_modules/@mui/system/esm/compose.js","node_modules/@mui/system/esm/display.js","node_modules/@mui/system/esm/flexbox.js","node_modules/@mui/system/esm/grid.js","node_modules/@mui/system/esm/positions.js","node_modules/@mui/system/esm/palette.js","node_modules/@mui/system/esm/shadows.js","node_modules/@mui/system/esm/sizing.js","node_modules/@mui/system/esm/typography.js","node_modules/@mui/material/styles/useTheme.js","node_modules/@mui/material/utils/useEventCallback.js","node_modules/@mui/material/utils/capitalize.js","node_modules/@mui/material/Grow/Grow.js","node_modules/@mui/material/node_modules/react-transition-group/esm/Transition.js","node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","node_modules/@mui/material/node_modules/react-transition-group/esm/config.js","node_modules/@mui/material/node_modules/react-transition-group/esm/TransitionGroupContext.js","node_modules/@mui/material/transitions/utils.js","node_modules/@mui/material/utils/useForkRef.js","node_modules/@mui/material/SnackbarContent/SnackbarContent.js","node_modules/@mui/material/Paper/Paper.js","node_modules/@mui/material/Paper/paperClasses.js","node_modules/@mui/base/generateUtilityClass/generateUtilityClass.js","node_modules/@mui/base/className/ClassNameGenerator.js","node_modules/@mui/base/generateUtilityClasses/generateUtilityClasses.js","node_modules/@mui/material/SnackbarContent/snackbarContentClasses.js","node_modules/@mui/material/Snackbar/snackbarClasses.js","node_modules/@mui/material/Typography/Typography.js","node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","node_modules/@mui/material/Typography/typographyClasses.js","node_modules/@mui/material/Accordion/Accordion.js","node_modules/@mui/material/node_modules/react-is/index.js","node_modules/@mui/material/node_modules/react-is/cjs/react-is.production.min.js","node_modules/@mui/material/Collapse/Collapse.js","node_modules/@mui/material/Collapse/collapseClasses.js","node_modules/@mui/material/Accordion/AccordionContext.js","node_modules/@mui/material/utils/useControlled.js","node_modules/@mui/utils/esm/useControlled.js","node_modules/@mui/material/Accordion/accordionClasses.js","node_modules/@mui/material/AccordionDetails/AccordionDetails.js","node_modules/@mui/material/AccordionDetails/accordionDetailsClasses.js","node_modules/@mui/material/AccordionSummary/AccordionSummary.js","node_modules/@mui/material/ButtonBase/ButtonBase.js","node_modules/@mui/material/utils/useIsFocusVisible.js","node_modules/@mui/utils/esm/useIsFocusVisible.js","node_modules/@mui/material/ButtonBase/TouchRipple.js","node_modules/@mui/material/node_modules/react-transition-group/esm/TransitionGroup.js","node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","node_modules/@mui/material/node_modules/react-transition-group/esm/utils/ChildMapping.js","node_modules/@mui/material/ButtonBase/Ripple.js","node_modules/@mui/material/ButtonBase/touchRippleClasses.js","node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","node_modules/@mui/material/AccordionSummary/accordionSummaryClasses.js","node_modules/@mui/material/Badge/Badge.js","node_modules/@mui/utils/esm/usePreviousProps.js","node_modules/@mui/base/BadgeUnstyled/badgeUnstyledClasses.js","node_modules/@mui/base/BadgeUnstyled/BadgeUnstyled.js","node_modules/@mui/base/utils/appendOwnerState.js","node_modules/@mui/base/utils/isHostComponent.js","node_modules/@mui/base/BadgeUnstyled/useBadge.js","node_modules/@mui/material/utils/shouldSpreadAdditionalProps.js","node_modules/@mui/material/Box/Box.js","node_modules/@mui/system/esm/createBox.js","node_modules/@mui/material/utils/createSvgIcon.js","node_modules/@mui/material/SvgIcon/SvgIcon.js","node_modules/@mui/material/SvgIcon/svgIconClasses.js","node_modules/@mui/icons-material/esm/ExpandMore.js","node_modules/@mui/material/Button/Button.js","node_modules/@mui/material/Button/buttonClasses.js","node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js","node_modules/@mui/material/Checkbox/Checkbox.js","node_modules/@mui/material/internal/SwitchBase.js","node_modules/@mui/material/FormControl/useFormControl.js","node_modules/@mui/material/FormControl/FormControlContext.js","node_modules/@mui/material/internal/switchBaseClasses.js","node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","node_modules/@mui/material/internal/svg-icons/CheckBox.js","node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","node_modules/@mui/material/Checkbox/checkboxClasses.js","node_modules/@mui/material/FormControl/FormControl.js","node_modules/@mui/material/InputBase/utils.js","node_modules/@mui/material/utils/isMuiElement.js","node_modules/@mui/utils/esm/isMuiElement.js","node_modules/@mui/material/FormControl/formControlClasses.js","node_modules/@mui/material/FormControlLabel/FormControlLabel.js","node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js","node_modules/@mui/material/FormControl/formControlState.js","node_modules/@mui/material/FormHelperText/FormHelperText.js","node_modules/@mui/material/FormHelperText/formHelperTextClasses.js","node_modules/@mui/material/Grid/Grid.js","node_modules/@mui/material/Grid/GridContext.js","node_modules/@mui/material/Grid/gridClasses.js","node_modules/@mui/material/Input/Input.js","node_modules/@mui/material/InputBase/InputBase.js","node_modules/@mui/base/TextareaAutosize/TextareaAutosize.js","node_modules/@mui/utils/esm/debounce.js","node_modules/@mui/utils/esm/ownerWindow.js","node_modules/@mui/material/utils/useEnhancedEffect.js","node_modules/@mui/material/GlobalStyles/GlobalStyles.js","node_modules/@mui/material/InputBase/inputBaseClasses.js","node_modules/@mui/material/Input/inputClasses.js","node_modules/@mui/material/InputLabel/InputLabel.js","node_modules/@mui/material/FormLabel/FormLabel.js","node_modules/@mui/material/FormLabel/formLabelClasses.js","node_modules/@mui/material/InputLabel/inputLabelClasses.js","src/components/general/LoadingSpinner.js","node_modules/@mui/material/Divider/Divider.js","node_modules/@mui/material/Divider/dividerClasses.js","node_modules/@mui/material/IconButton/IconButton.js","node_modules/@mui/material/IconButton/iconButtonClasses.js","node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs","node_modules/tslib/tslib.es6.js","node_modules/framer-motion/dist/es/utils/use-force-update.mjs","node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs","node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs","node_modules/framer-motion/dist/es/context/PresenceContext.mjs","node_modules/framer-motion/dist/es/utils/use-constant.mjs","node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","node_modules/framer-motion/dist/es/render/dom/motion.mjs","node_modules/framer-motion/dist/es/motion/index.mjs","node_modules/framer-motion/dist/es/motion/features/use-features.mjs","node_modules/framer-motion/dist/es/motion/features/definitions.mjs","node_modules/hey-listen/dist/hey-listen.es.js","node_modules/framer-motion/dist/es/context/LazyContext.mjs","node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","node_modules/framer-motion/dist/es/utils/is-browser.mjs","node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","node_modules/framer-motion/dist/es/render/utils/variants.mjs","node_modules/framer-motion/dist/es/projection/node/id.mjs","node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","node_modules/framesync/dist/es/index.mjs","node_modules/framesync/dist/es/on-next-frame.mjs","node_modules/framesync/dist/es/create-render-step.mjs","node_modules/popmotion/dist/es/utils/mix.mjs","node_modules/framer-motion/dist/es/animation/animate.mjs","node_modules/framer-motion/dist/es/value/index.mjs","node_modules/popmotion/dist/es/utils/velocity-per-second.mjs","node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","node_modules/framer-motion/dist/es/utils/array.mjs","node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","node_modules/framer-motion/dist/es/animation/utils/transitions.mjs","node_modules/popmotion/dist/es/animations/index.mjs","node_modules/popmotion/dist/es/animations/utils/detect-animation-from-options.mjs","node_modules/popmotion/dist/es/animations/generators/spring.mjs","node_modules/popmotion/dist/es/animations/utils/find-spring.mjs","node_modules/popmotion/dist/es/utils/clamp.mjs","node_modules/popmotion/dist/es/animations/generators/keyframes.mjs","node_modules/popmotion/dist/es/utils/interpolate.mjs","node_modules/popmotion/dist/es/utils/progress.mjs","node_modules/popmotion/dist/es/utils/mix-color.mjs","node_modules/style-value-types/dist/es/color/hex.mjs","node_modules/style-value-types/dist/es/color/rgba.mjs","node_modules/style-value-types/dist/es/numbers/index.mjs","node_modules/style-value-types/dist/es/utils.mjs","node_modules/style-value-types/dist/es/color/utils.mjs","node_modules/style-value-types/dist/es/color/hsla.mjs","node_modules/style-value-types/dist/es/numbers/units.mjs","node_modules/popmotion/dist/es/utils/mix-complex.mjs","node_modules/style-value-types/dist/es/color/index.mjs","node_modules/style-value-types/dist/es/complex/index.mjs","node_modules/popmotion/dist/es/utils/inc.mjs","node_modules/popmotion/dist/es/utils/pipe.mjs","node_modules/popmotion/dist/es/easing/index.mjs","node_modules/popmotion/dist/es/easing/utils.mjs","node_modules/popmotion/dist/es/animations/generators/decay.mjs","node_modules/popmotion/dist/es/animations/utils/elapsed.mjs","node_modules/popmotion/dist/es/animations/inertia.mjs","node_modules/framer-motion/dist/es/utils/time-conversion.mjs","node_modules/framer-motion/dist/es/animation/utils/easing.mjs","node_modules/popmotion/dist/es/easing/cubic-bezier.mjs","node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs","node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","node_modules/style-value-types/dist/es/complex/filter.mjs","node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","node_modules/popmotion/dist/es/utils/distance.mjs","node_modules/popmotion/dist/es/utils/is-point.mjs","node_modules/popmotion/dist/es/utils/is-point-3d.mjs","node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","node_modules/framer-motion/dist/es/projection/geometry/models.mjs","node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","node_modules/framer-motion/dist/es/projection/shared/stack.mjs","node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","node_modules/framer-motion/dist/es/projection/styles/transform.mjs","node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","node_modules/framer-motion/dist/es/render/html/utils/transform.mjs","node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","node_modules/framer-motion/dist/es/gestures/PanSession.mjs","node_modules/framer-motion/dist/es/gestures/utils/event-type.mjs","node_modules/framer-motion/dist/es/events/event-info.mjs","node_modules/framer-motion/dist/es/events/use-pointer-event.mjs","node_modules/framer-motion/dist/es/events/use-dom-event.mjs","node_modules/framer-motion/dist/es/events/utils.mjs","node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs","node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","node_modules/framer-motion/dist/es/render/utils/types.mjs","node_modules/framer-motion/dist/es/projection/utils/measure.mjs","node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","node_modules/framer-motion/dist/es/motion/features/use-projection.mjs","node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","node_modules/framer-motion/dist/es/motion/utils/VisualElementHandler.mjs","node_modules/framer-motion/dist/es/render/dom/motion-proxy.mjs","node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs","node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","node_modules/framer-motion/dist/es/render/dom/use-render.mjs","node_modules/framer-motion/dist/es/render/html/use-props.mjs","node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","node_modules/framer-motion/node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","node_modules/framer-motion/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","node_modules/framer-motion/dist/es/render/svg/use-props.mjs","node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","node_modules/framer-motion/dist/es/render/html/utils/render.mjs","node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","node_modules/framer-motion/dist/es/utils/resolve-value.mjs","node_modules/framer-motion/dist/es/render/html/config-motion.mjs","node_modules/framer-motion/dist/es/motion/features/gestures.mjs","node_modules/framer-motion/dist/es/gestures/use-focus-gesture.mjs","node_modules/framer-motion/dist/es/gestures/use-hover-gesture.mjs","node_modules/framer-motion/dist/es/gestures/use-tap-gesture.mjs","node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs","node_modules/framer-motion/dist/es/motion/utils/make-renderless-component.mjs","node_modules/framer-motion/dist/es/motion/features/animations.mjs","node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","node_modules/framer-motion/dist/es/render/utils/animation-state.mjs","node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","node_modules/framer-motion/dist/es/render/utils/animation.mjs","node_modules/framer-motion/dist/es/render/utils/setters.mjs","node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs","node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","node_modules/framer-motion/dist/es/motion/features/drag.mjs","node_modules/framer-motion/dist/es/gestures/drag/use-drag.mjs","node_modules/framer-motion/dist/es/gestures/use-pan-gesture.mjs","node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","node_modules/framer-motion/dist/es/render/html/visual-element.mjs","node_modules/framer-motion/dist/es/render/index.mjs","node_modules/framer-motion/dist/es/render/utils/lifecycles.mjs","node_modules/framer-motion/dist/es/render/utils/motion-values.mjs","node_modules/framer-motion/dist/es/render/dom/utils/parse-dom-variant.mjs","node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","node_modules/framer-motion/dist/es/render/svg/visual-element.mjs","node_modules/framer-motion/dist/es/motion/features/layout/index.mjs","node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","node_modules/@mui/icons-material/esm/Search.js","src/pages/buildings/Building.js","src/components/project/ProjectHeader.js","src/components/general/RecommendationIconGroup.js","src/components/general/RecommendationIcon.js","src/components/general/DragHandle.js","src/components/building/BuildingDetails.js","node_modules/react-visibility-sensor/dist/visibility-sensor.js","src/components/dataGrid/DataGrid.js","src/components/dataGrid/DataGridItem.js","node_modules/@mui/material/Skeleton/Skeleton.js","node_modules/@mui/material/styles/cssUtils.js","node_modules/@mui/material/Skeleton/skeletonClasses.js","src/components/dataSection/DataSection.js","node_modules/@mui/icons-material/ExpandMore.js","node_modules/@babel/runtime/helpers/interopRequireDefault.js","node_modules/@mui/icons-material/utils/createSvgIcon.js","src/components/index.js","src/components/general/TechnologyIcon.js","src/components/quickMenu/QuickMenu.js","node_modules/@mui/material/Menu/Menu.js","node_modules/@mui/material/MenuList/MenuList.js","node_modules/@mui/material/utils/ownerDocument.js","node_modules/@mui/material/List/List.js","node_modules/@mui/material/List/ListContext.js","node_modules/@mui/material/List/listClasses.js","node_modules/@mui/material/utils/getScrollbarSize.js","node_modules/@mui/utils/esm/getScrollbarSize.js","node_modules/@mui/material/Popover/Popover.js","node_modules/@mui/material/utils/debounce.js","node_modules/@mui/material/utils/ownerWindow.js","node_modules/@mui/material/Modal/Modal.js","node_modules/@mui/base/ModalUnstyled/ModalUnstyled.js","node_modules/@mui/utils/esm/createChainedFunction.js","node_modules/@mui/base/Portal/Portal.js","node_modules/@mui/base/ModalUnstyled/ModalManager.js","node_modules/@mui/base/Unstable_TrapFocus/Unstable_TrapFocus.js","node_modules/@mui/base/ModalUnstyled/modalUnstyledClasses.js","node_modules/@mui/material/Backdrop/Backdrop.js","node_modules/@mui/base/BackdropUnstyled/backdropUnstyledClasses.js","node_modules/@mui/base/BackdropUnstyled/BackdropUnstyled.js","node_modules/@mui/material/Fade/Fade.js","node_modules/@mui/material/Popover/popoverClasses.js","node_modules/@mui/material/Menu/menuClasses.js","node_modules/@mui/material/MenuItem/MenuItem.js","node_modules/@mui/material/ListItemIcon/listItemIconClasses.js","node_modules/@mui/material/ListItemText/listItemTextClasses.js","node_modules/@mui/material/MenuItem/menuItemClasses.js","src/components/building/UseChart.js","node_modules/@mui/material/Avatar/Avatar.js","node_modules/@mui/material/internal/svg-icons/Person.js","node_modules/@mui/material/Avatar/avatarClasses.js","node_modules/@mui/material/Select/Select.js","node_modules/@mui/material/Select/SelectInput.js","node_modules/@mui/material/NativeSelect/NativeSelectInput.js","node_modules/@mui/material/NativeSelect/nativeSelectClasses.js","node_modules/@mui/material/Select/selectClasses.js","node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js","node_modules/@mui/material/FilledInput/FilledInput.js","node_modules/@mui/material/FilledInput/filledInputClasses.js","node_modules/@mui/material/OutlinedInput/OutlinedInput.js","node_modules/@mui/material/OutlinedInput/NotchedOutline.js","node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js","node_modules/@mui/material/Table/Table.js","node_modules/@mui/material/Table/TableContext.js","node_modules/@mui/material/Table/tableClasses.js","node_modules/@mui/material/TableBody/TableBody.js","node_modules/@mui/material/Table/Tablelvl2Context.js","node_modules/@mui/material/TableBody/tableBodyClasses.js","node_modules/@mui/material/TableCell/TableCell.js","node_modules/@mui/material/TableCell/tableCellClasses.js","node_modules/@mui/material/TableContainer/TableContainer.js","node_modules/@mui/material/TableContainer/tableContainerClasses.js","node_modules/@mui/material/TableHead/TableHead.js","node_modules/@mui/material/TableHead/tableHeadClasses.js","node_modules/@mui/material/TableRow/TableRow.js","node_modules/@mui/material/TableRow/tableRowClasses.js","src/components/building/PieChart.js","node_modules/@nivo/pie/dist/nivo-pie.es.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","node_modules/@nivo/pie/src/PieLegends.tsx","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","node_modules/@nivo/pie/src/PieTooltip.tsx","node_modules/@nivo/pie/src/props.ts","node_modules/@nivo/pie/src/hooks.ts","node_modules/@nivo/pie/src/Arcs.tsx","node_modules/@nivo/pie/src/Pie.tsx","node_modules/@nivo/pie/src/ResponsivePie.tsx","node_modules/@nivo/pie/src/PieCanvas.tsx","node_modules/@nivo/pie/src/ResponsivePieCanvas.tsx","node_modules/@nivo/core/dist/nivo-core.es.js","node_modules/@nivo/core/src/theming/propTypes.js","node_modules/@nivo/core/src/theming/defaultTheme.js","node_modules/@nivo/core/src/theming/extend.js","node_modules/@nivo/core/src/motion/context.js","node_modules/@nivo/core/src/motion/hooks.js","node_modules/@nivo/core/src/hooks/useAnimatedPath.js","node_modules/@nivo/core/src/lib/colors/quantize.js","node_modules/@nivo/core/src/lib/colors/index.js","node_modules/@nivo/core/src/props/colors.js","node_modules/@nivo/core/src/props/curve.js","node_modules/@nivo/core/src/props/defs.js","node_modules/@nivo/core/src/props/stack.js","node_modules/@nivo/core/src/props/treeMap.js","node_modules/@nivo/core/src/props/index.js","node_modules/@nivo/core/src/hooks/useCurveInterpolation.js","node_modules/@nivo/core/src/defaults/index.js","node_modules/@nivo/core/src/hooks/useDimensions.js","node_modules/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","node_modules/@nivo/core/src/hooks/useMeasure.js","node_modules/@nivo/core/src/hooks/usePartialTheme.js","node_modules/@nivo/core/src/hooks/useValueFormatter.js","node_modules/@nivo/core/src/theming/context.js","node_modules/@nivo/core/src/components/ConditionalWrapper.js","node_modules/@nivo/core/src/components/Container.js","node_modules/@nivo/core/src/lib/noop.js","node_modules/@nivo/core/src/components/LegacyContainer.js","node_modules/@nivo/core/src/components/ResponsiveWrapper.js","node_modules/@nivo/core/src/components/defs/gradients/LinearGradient.js","node_modules/@nivo/core/src/components/defs/gradients/index.js","node_modules/@nivo/core/src/components/defs/patterns/PatternDots.js","node_modules/@nivo/core/src/lib/polar/utils.js","node_modules/@nivo/core/src/lib/bridge.js","node_modules/@nivo/core/src/lib/polar/labels.js","node_modules/@nivo/core/src/components/defs/patterns/PatternLines.js","node_modules/@nivo/core/src/components/defs/patterns/PatternSquares.js","node_modules/@nivo/core/src/components/defs/patterns/index.js","node_modules/@nivo/core/src/components/defs/Defs.js","node_modules/@nivo/core/src/components/SvgWrapper.js","node_modules/@nivo/core/src/components/dots/DotsItemSymbol.js","node_modules/@nivo/core/src/components/dots/DotsItem.js","node_modules/@nivo/core/src/components/cartesian/markers/CartesianMarkersItem.js","node_modules/@nivo/core/src/components/cartesian/markers/CartesianMarkers.js","node_modules/@nivo/core/src/hocs/withDimensions.js","node_modules/@nivo/core/src/hocs/withMotion.js","node_modules/@nivo/core/src/hocs/withTheme.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","node_modules/@nivo/core/src/hocs/withContainer.js","node_modules/@nivo/core/src/lib/propertiesConverters.js","node_modules/@nivo/core/src/lib/cartesian/utils.js","node_modules/@nivo/core/src/lib/interactivity/detect.js","node_modules/@nivo/core/src/lib/interactivity/index.js","node_modules/@nivo/core/src/lib/defs.js","node_modules/@nivo/tooltip/dist/nivo-tooltip.es.js","node_modules/@nivo/tooltip/src/TooltipWrapper.tsx","node_modules/@nivo/tooltip/src/Chip.tsx","node_modules/@nivo/tooltip/src/BasicTooltip.tsx","node_modules/@nivo/tooltip/src/TableTooltip.tsx","node_modules/@nivo/tooltip/src/CrosshairLine.tsx","node_modules/@nivo/tooltip/src/Crosshair.tsx","node_modules/@nivo/tooltip/src/context.ts","node_modules/@nivo/tooltip/src/hooks.ts","node_modules/@nivo/tooltip/src/Tooltip.tsx","node_modules/@nivo/tooltip/src/TooltipProvider.tsx","node_modules/@react-spring/web/dist/react-spring-web.esm.js","node_modules/@react-spring/core/dist/react-spring-core.esm.js","node_modules/@react-spring/shared/dist/react-spring-shared.esm.js","node_modules/@react-spring/rafz/dist/react-spring-rafz.esm.js","node_modules/@react-spring/animated/dist/react-spring-animated.esm.js","node_modules/@react-spring/types/animated.js","node_modules/@react-spring/types/interpolation.js","node_modules/@nivo/core/node_modules/lodash/merge.js","node_modules/@nivo/core/node_modules/lodash/_baseMerge.js","node_modules/@nivo/core/node_modules/lodash/_Stack.js","node_modules/@nivo/core/node_modules/lodash/_ListCache.js","node_modules/@nivo/core/node_modules/lodash/_listCacheClear.js","node_modules/@nivo/core/node_modules/lodash/_listCacheDelete.js","node_modules/@nivo/core/node_modules/lodash/_assocIndexOf.js","node_modules/@nivo/core/node_modules/lodash/eq.js","node_modules/@nivo/core/node_modules/lodash/_listCacheGet.js","node_modules/@nivo/core/node_modules/lodash/_listCacheHas.js","node_modules/@nivo/core/node_modules/lodash/_listCacheSet.js","node_modules/@nivo/core/node_modules/lodash/_stackClear.js","node_modules/@nivo/core/node_modules/lodash/_stackDelete.js","node_modules/@nivo/core/node_modules/lodash/_stackGet.js","node_modules/@nivo/core/node_modules/lodash/_stackHas.js","node_modules/@nivo/core/node_modules/lodash/_stackSet.js","node_modules/@nivo/core/node_modules/lodash/_Map.js","node_modules/@nivo/core/node_modules/lodash/_getNative.js","node_modules/@nivo/core/node_modules/lodash/_baseIsNative.js","node_modules/@nivo/core/node_modules/lodash/isFunction.js","node_modules/@nivo/core/node_modules/lodash/_baseGetTag.js","node_modules/@nivo/core/node_modules/lodash/_Symbol.js","node_modules/@nivo/core/node_modules/lodash/_root.js","node_modules/@nivo/core/node_modules/lodash/_freeGlobal.js","node_modules/@nivo/core/node_modules/lodash/_getRawTag.js","node_modules/@nivo/core/node_modules/lodash/_objectToString.js","node_modules/@nivo/core/node_modules/lodash/isObject.js","node_modules/@nivo/core/node_modules/lodash/_isMasked.js","node_modules/@nivo/core/node_modules/lodash/_coreJsData.js","node_modules/@nivo/core/node_modules/lodash/_toSource.js","node_modules/@nivo/core/node_modules/lodash/_getValue.js","node_modules/@nivo/core/node_modules/lodash/_MapCache.js","node_modules/@nivo/core/node_modules/lodash/_mapCacheClear.js","node_modules/@nivo/core/node_modules/lodash/_Hash.js","node_modules/@nivo/core/node_modules/lodash/_hashClear.js","node_modules/@nivo/core/node_modules/lodash/_nativeCreate.js","node_modules/@nivo/core/node_modules/lodash/_hashDelete.js","node_modules/@nivo/core/node_modules/lodash/_hashGet.js","node_modules/@nivo/core/node_modules/lodash/_hashHas.js","node_modules/@nivo/core/node_modules/lodash/_hashSet.js","node_modules/@nivo/core/node_modules/lodash/_mapCacheDelete.js","node_modules/@nivo/core/node_modules/lodash/_getMapData.js","node_modules/@nivo/core/node_modules/lodash/_isKeyable.js","node_modules/@nivo/core/node_modules/lodash/_mapCacheGet.js","node_modules/@nivo/core/node_modules/lodash/_mapCacheHas.js","node_modules/@nivo/core/node_modules/lodash/_mapCacheSet.js","node_modules/@nivo/core/node_modules/lodash/_assignMergeValue.js","node_modules/@nivo/core/node_modules/lodash/_baseAssignValue.js","node_modules/@nivo/core/node_modules/lodash/_defineProperty.js","node_modules/@nivo/core/node_modules/lodash/_baseFor.js","node_modules/@nivo/core/node_modules/lodash/_createBaseFor.js","node_modules/@nivo/core/node_modules/lodash/_baseMergeDeep.js","node_modules/@nivo/core/node_modules/lodash/_cloneBuffer.js","node_modules/@nivo/core/node_modules/lodash/_cloneTypedArray.js","node_modules/@nivo/core/node_modules/lodash/_cloneArrayBuffer.js","node_modules/@nivo/core/node_modules/lodash/_Uint8Array.js","node_modules/@nivo/core/node_modules/lodash/_copyArray.js","node_modules/@nivo/core/node_modules/lodash/_initCloneObject.js","node_modules/@nivo/core/node_modules/lodash/_baseCreate.js","node_modules/@nivo/core/node_modules/lodash/_getPrototype.js","node_modules/@nivo/core/node_modules/lodash/_overArg.js","node_modules/@nivo/core/node_modules/lodash/_isPrototype.js","node_modules/@nivo/core/node_modules/lodash/isArguments.js","node_modules/@nivo/core/node_modules/lodash/_baseIsArguments.js","node_modules/@nivo/core/node_modules/lodash/isObjectLike.js","node_modules/@nivo/core/node_modules/lodash/isArray.js","node_modules/@nivo/core/node_modules/lodash/isArrayLikeObject.js","node_modules/@nivo/core/node_modules/lodash/isArrayLike.js","node_modules/@nivo/core/node_modules/lodash/isLength.js","node_modules/@nivo/core/node_modules/lodash/isBuffer.js","node_modules/@nivo/core/node_modules/lodash/stubFalse.js","node_modules/@nivo/core/node_modules/lodash/isPlainObject.js","node_modules/@nivo/core/node_modules/lodash/isTypedArray.js","node_modules/@nivo/core/node_modules/lodash/_baseIsTypedArray.js","node_modules/@nivo/core/node_modules/lodash/_baseUnary.js","node_modules/@nivo/core/node_modules/lodash/_nodeUtil.js","node_modules/@nivo/core/node_modules/lodash/_safeGet.js","node_modules/@nivo/core/node_modules/lodash/toPlainObject.js","node_modules/@nivo/core/node_modules/lodash/_copyObject.js","node_modules/@nivo/core/node_modules/lodash/_assignValue.js","node_modules/@nivo/core/node_modules/lodash/keysIn.js","node_modules/@nivo/core/node_modules/lodash/_arrayLikeKeys.js","node_modules/@nivo/core/node_modules/lodash/_baseTimes.js","node_modules/@nivo/core/node_modules/lodash/_isIndex.js","node_modules/@nivo/core/node_modules/lodash/_baseKeysIn.js","node_modules/@nivo/core/node_modules/lodash/_nativeKeysIn.js","node_modules/@nivo/core/node_modules/lodash/_createAssigner.js","node_modules/@nivo/core/node_modules/lodash/_baseRest.js","node_modules/@nivo/core/node_modules/lodash/identity.js","node_modules/@nivo/core/node_modules/lodash/_overRest.js","node_modules/@nivo/core/node_modules/lodash/_apply.js","node_modules/@nivo/core/node_modules/lodash/_setToString.js","node_modules/@nivo/core/node_modules/lodash/_baseSetToString.js","node_modules/@nivo/core/node_modules/lodash/constant.js","node_modules/@nivo/core/node_modules/lodash/_shortOut.js","node_modules/@nivo/core/node_modules/lodash/_isIterateeCall.js","node_modules/@nivo/core/node_modules/lodash/get.js","node_modules/@nivo/core/node_modules/lodash/_baseGet.js","node_modules/@nivo/core/node_modules/lodash/_castPath.js","node_modules/@nivo/core/node_modules/lodash/_isKey.js","node_modules/@nivo/core/node_modules/lodash/isSymbol.js","node_modules/@nivo/core/node_modules/lodash/_stringToPath.js","node_modules/@nivo/core/node_modules/lodash/_memoizeCapped.js","node_modules/@nivo/core/node_modules/lodash/memoize.js","node_modules/@nivo/core/node_modules/lodash/toString.js","node_modules/@nivo/core/node_modules/lodash/_baseToString.js","node_modules/@nivo/core/node_modules/lodash/_arrayMap.js","node_modules/@nivo/core/node_modules/lodash/_toKey.js","node_modules/@nivo/core/node_modules/lodash/set.js","node_modules/@nivo/core/node_modules/lodash/_baseSet.js","node_modules/@nivo/core/node_modules/d3-interpolate/src/string.js","node_modules/@nivo/core/node_modules/d3-interpolate/src/number.js","node_modules/@nivo/core/node_modules/@react-spring/web/dist/react-spring-web.esm.js","node_modules/@nivo/core/node_modules/@react-spring/core/dist/react-spring-core.esm.js","node_modules/@nivo/core/node_modules/@react-spring/shared/dist/react-spring-shared.esm.js","node_modules/@nivo/core/node_modules/@react-spring/rafz/dist/react-spring-rafz.esm.js","node_modules/@nivo/core/node_modules/@react-spring/animated/dist/react-spring-animated.esm.js","node_modules/@nivo/core/node_modules/@react-spring/types/animated.js","node_modules/@nivo/core/node_modules/@react-spring/types/interpolation.js","node_modules/@nivo/core/node_modules/lodash/isString.js","node_modules/@nivo/core/node_modules/lodash/last.js","node_modules/d3-scale/src/ordinal.js","node_modules/d3-scale/src/init.js","node_modules/d3-scale/src/quantize.js","node_modules/d3-scale/node_modules/d3-array/src/bisect.js","node_modules/d3-scale/node_modules/d3-array/src/ascending.js","node_modules/d3-scale/node_modules/d3-array/src/bisector.js","node_modules/d3-scale/node_modules/d3-array/src/number.js","node_modules/d3-scale/src/linear.js","node_modules/d3-scale/node_modules/d3-array/src/ticks.js","node_modules/d3-scale/src/continuous.js","node_modules/d3-scale/node_modules/d3-interpolate/src/value.js","node_modules/d3-scale/node_modules/d3-color/src/color.js","node_modules/d3-scale/node_modules/d3-color/src/define.js","node_modules/d3-scale/node_modules/d3-interpolate/src/rgb.js","node_modules/d3-scale/node_modules/d3-interpolate/src/basis.js","node_modules/d3-scale/node_modules/d3-interpolate/src/basisClosed.js","node_modules/d3-scale/node_modules/d3-interpolate/src/color.js","node_modules/d3-scale/node_modules/d3-interpolate/src/constant.js","node_modules/d3-scale/node_modules/d3-interpolate/src/array.js","node_modules/d3-scale/node_modules/d3-interpolate/src/numberArray.js","node_modules/d3-scale/node_modules/d3-interpolate/src/date.js","node_modules/d3-scale/node_modules/d3-interpolate/src/number.js","node_modules/d3-scale/node_modules/d3-interpolate/src/object.js","node_modules/d3-scale/node_modules/d3-interpolate/src/string.js","node_modules/d3-scale/node_modules/d3-interpolate/src/round.js","node_modules/d3-scale/src/constant.js","node_modules/d3-scale/src/number.js","node_modules/d3-scale/src/tickFormat.js","node_modules/d3-scale/node_modules/d3-format/src/defaultLocale.js","node_modules/d3-scale/node_modules/d3-format/src/locale.js","node_modules/d3-scale/node_modules/d3-format/src/exponent.js","node_modules/d3-scale/node_modules/d3-format/src/formatDecimal.js","node_modules/d3-scale/node_modules/d3-format/src/formatGroup.js","node_modules/d3-scale/node_modules/d3-format/src/formatNumerals.js","node_modules/d3-scale/node_modules/d3-format/src/formatSpecifier.js","node_modules/d3-scale/node_modules/d3-format/src/formatTrim.js","node_modules/d3-scale/node_modules/d3-format/src/formatTypes.js","node_modules/d3-scale/node_modules/d3-format/src/formatPrefixAuto.js","node_modules/d3-scale/node_modules/d3-format/src/formatRounded.js","node_modules/d3-scale/node_modules/d3-format/src/identity.js","node_modules/d3-scale/node_modules/d3-format/src/precisionFixed.js","node_modules/d3-scale/node_modules/d3-format/src/precisionPrefix.js","node_modules/d3-scale/node_modules/d3-format/src/precisionRound.js","node_modules/d3-scale/src/sequential.js","node_modules/d3-scale/src/log.js","node_modules/d3-scale/src/nice.js","node_modules/d3-scale/src/symlog.js","node_modules/d3-scale/src/pow.js","node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","node_modules/d3-scale-chromatic/src/colors.js","node_modules/d3-scale-chromatic/src/ramp.js","node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/rgb.js","node_modules/d3-scale-chromatic/node_modules/d3-color/src/color.js","node_modules/d3-scale-chromatic/node_modules/d3-color/src/define.js","node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/basis.js","node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/basisClosed.js","node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/color.js","node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/constant.js","node_modules/d3-scale-chromatic/src/diverging/BrBG.js","node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","node_modules/d3-scale-chromatic/node_modules/d3-color/src/cubehelix.js","node_modules/d3-scale-chromatic/node_modules/d3-color/src/math.js","node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/cubehelix.js","node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","node_modules/d3-scale-chromatic/src/diverging/PiYG.js","node_modules/d3-scale-chromatic/src/diverging/PRGn.js","node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","node_modules/d3-scale-chromatic/src/diverging/PuOr.js","node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","node_modules/d3-scale-chromatic/src/diverging/RdBu.js","node_modules/d3-scale-chromatic/src/diverging/RdGy.js","node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","node_modules/d3-scale-chromatic/src/diverging/Spectral.js","node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","node_modules/d3-scale-chromatic/src/categorical/Accent.js","node_modules/d3-scale-chromatic/src/categorical/category10.js","node_modules/d3-scale-chromatic/src/categorical/Dark2.js","node_modules/d3-scale-chromatic/src/categorical/Paired.js","node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","node_modules/d3-scale-chromatic/src/categorical/Set1.js","node_modules/d3-scale-chromatic/src/categorical/Set2.js","node_modules/d3-scale-chromatic/src/categorical/Set3.js","node_modules/@nivo/core/node_modules/lodash/without.js","node_modules/@nivo/core/node_modules/lodash/_baseDifference.js","node_modules/@nivo/core/node_modules/lodash/_SetCache.js","node_modules/@nivo/core/node_modules/lodash/_setCacheAdd.js","node_modules/@nivo/core/node_modules/lodash/_setCacheHas.js","node_modules/@nivo/core/node_modules/lodash/_arrayIncludes.js","node_modules/@nivo/core/node_modules/lodash/_baseIndexOf.js","node_modules/@nivo/core/node_modules/lodash/_baseFindIndex.js","node_modules/@nivo/core/node_modules/lodash/_baseIsNaN.js","node_modules/@nivo/core/node_modules/lodash/_strictIndexOf.js","node_modules/@nivo/core/node_modules/lodash/_arrayIncludesWith.js","node_modules/@nivo/core/node_modules/lodash/_cacheHas.js","node_modules/d3-shape/src/curve/basis.js","node_modules/d3-shape/src/curve/basisClosed.js","node_modules/d3-shape/src/noop.js","node_modules/d3-shape/src/curve/basisOpen.js","node_modules/d3-shape/src/curve/bundle.js","node_modules/d3-shape/src/curve/cardinal.js","node_modules/d3-shape/src/curve/cardinalClosed.js","node_modules/d3-shape/src/curve/cardinalOpen.js","node_modules/d3-shape/src/curve/catmullRom.js","node_modules/d3-shape/src/math.js","node_modules/d3-shape/src/curve/catmullRomClosed.js","node_modules/d3-shape/src/curve/catmullRomOpen.js","node_modules/d3-shape/src/curve/linear.js","node_modules/d3-shape/src/curve/linearClosed.js","node_modules/d3-shape/src/curve/monotone.js","node_modules/d3-shape/src/curve/natural.js","node_modules/d3-shape/src/curve/step.js","node_modules/d3-shape/src/offset/diverging.js","node_modules/d3-shape/src/offset/expand.js","node_modules/d3-shape/src/offset/none.js","node_modules/d3-shape/src/offset/silhouette.js","node_modules/d3-shape/src/offset/wiggle.js","node_modules/d3-shape/src/order/ascending.js","node_modules/d3-shape/src/order/none.js","node_modules/d3-shape/src/order/descending.js","node_modules/d3-shape/src/order/insideOut.js","node_modules/d3-shape/src/order/appearance.js","node_modules/d3-shape/src/order/reverse.js","node_modules/@nivo/core/node_modules/d3-hierarchy/src/treemap/binary.js","node_modules/@nivo/core/node_modules/d3-hierarchy/src/treemap/dice.js","node_modules/@nivo/core/node_modules/d3-hierarchy/src/treemap/resquarify.js","node_modules/@nivo/core/node_modules/d3-hierarchy/src/treemap/slice.js","node_modules/@nivo/core/node_modules/d3-hierarchy/src/treemap/squarify.js","node_modules/@nivo/core/node_modules/d3-hierarchy/src/treemap/sliceDice.js","node_modules/@nivo/core/node_modules/d3-format/src/defaultLocale.js","node_modules/@nivo/core/node_modules/d3-format/src/locale.js","node_modules/@nivo/core/node_modules/d3-format/src/exponent.js","node_modules/@nivo/core/node_modules/d3-format/src/formatDecimal.js","node_modules/@nivo/core/node_modules/d3-format/src/formatGroup.js","node_modules/@nivo/core/node_modules/d3-format/src/formatNumerals.js","node_modules/@nivo/core/node_modules/d3-format/src/formatSpecifier.js","node_modules/@nivo/core/node_modules/d3-format/src/formatTrim.js","node_modules/@nivo/core/node_modules/d3-format/src/formatTypes.js","node_modules/@nivo/core/node_modules/d3-format/src/formatPrefixAuto.js","node_modules/@nivo/core/node_modules/d3-format/src/formatRounded.js","node_modules/@nivo/core/node_modules/d3-format/src/identity.js","node_modules/d3-time-format/src/defaultLocale.js","node_modules/d3-time-format/src/locale.js","node_modules/d3-time-format/node_modules/d3-time/src/day.js","node_modules/d3-time-format/node_modules/d3-time/src/interval.js","node_modules/d3-time-format/node_modules/d3-time/src/duration.js","node_modules/d3-time-format/node_modules/d3-time/src/week.js","node_modules/d3-time-format/node_modules/d3-time/src/year.js","node_modules/d3-time-format/node_modules/d3-time/src/utcDay.js","node_modules/d3-time-format/node_modules/d3-time/src/utcWeek.js","node_modules/d3-time-format/node_modules/d3-time/src/utcYear.js","node_modules/@nivo/recompose/dist/nivo-recompose.es.js","node_modules/@nivo/recompose/src/getDisplayName.ts","node_modules/@nivo/recompose/src/setStatic.ts","node_modules/@nivo/recompose/src/setDisplayName.ts","node_modules/@nivo/recompose/src/shallowEqual.ts","node_modules/@nivo/recompose/src/wrapDisplayName.ts","node_modules/@nivo/recompose/src/shouldUpdate.ts","node_modules/@nivo/recompose/src/pure.ts","node_modules/@nivo/recompose/src/compose.ts","node_modules/@nivo/recompose/src/utils/pick.ts","node_modules/@nivo/recompose/src/withPropsOnChange.ts","node_modules/@nivo/recompose/src/defaultProps.ts","node_modules/@nivo/recompose/src/mapProps.ts","node_modules/@nivo/recompose/src/withProps.ts","node_modules/@nivo/recompose/src/setPropTypes.ts","node_modules/@nivo/recompose/src/withState.ts","node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","node_modules/@nivo/core/node_modules/lodash/isEqual.js","node_modules/@nivo/core/node_modules/lodash/_baseIsEqual.js","node_modules/@nivo/core/node_modules/lodash/_baseIsEqualDeep.js","node_modules/@nivo/core/node_modules/lodash/_equalArrays.js","node_modules/@nivo/core/node_modules/lodash/_arraySome.js","node_modules/@nivo/core/node_modules/lodash/_equalByTag.js","node_modules/@nivo/core/node_modules/lodash/_mapToArray.js","node_modules/@nivo/core/node_modules/lodash/_setToArray.js","node_modules/@nivo/core/node_modules/lodash/_equalObjects.js","node_modules/@nivo/core/node_modules/lodash/_getAllKeys.js","node_modules/@nivo/core/node_modules/lodash/_baseGetAllKeys.js","node_modules/@nivo/core/node_modules/lodash/_arrayPush.js","node_modules/@nivo/core/node_modules/lodash/_getSymbols.js","node_modules/@nivo/core/node_modules/lodash/_arrayFilter.js","node_modules/@nivo/core/node_modules/lodash/stubArray.js","node_modules/@nivo/core/node_modules/lodash/keys.js","node_modules/@nivo/core/node_modules/lodash/_baseKeys.js","node_modules/@nivo/core/node_modules/lodash/_nativeKeys.js","node_modules/@nivo/core/node_modules/lodash/_getTag.js","node_modules/@nivo/core/node_modules/lodash/_DataView.js","node_modules/@nivo/core/node_modules/lodash/_Promise.js","node_modules/@nivo/core/node_modules/lodash/_Set.js","node_modules/@nivo/core/node_modules/lodash/_WeakMap.js","node_modules/@nivo/core/node_modules/lodash/pick.js","node_modules/@nivo/core/node_modules/lodash/_basePick.js","node_modules/@nivo/core/node_modules/lodash/_basePickBy.js","node_modules/@nivo/core/node_modules/lodash/hasIn.js","node_modules/@nivo/core/node_modules/lodash/_baseHasIn.js","node_modules/@nivo/core/node_modules/lodash/_hasPath.js","node_modules/@nivo/core/node_modules/lodash/_flatRest.js","node_modules/@nivo/core/node_modules/lodash/flatten.js","node_modules/@nivo/core/node_modules/lodash/_baseFlatten.js","node_modules/@nivo/core/node_modules/lodash/_isFlattenable.js","node_modules/@nivo/arcs/dist/nivo-arcs.es.js","node_modules/@nivo/arcs/src/utils.ts","node_modules/@nivo/arcs/src/arcTransitionMode.ts","node_modules/@nivo/arcs/src/centers.ts","node_modules/@nivo/arcs/src/arc_labels/ArcLabel.tsx","node_modules/@nivo/arcs/src/arc_labels/ArcLabelsLayer.tsx","node_modules/@nivo/arcs/src/arc_labels/canvas.ts","node_modules/@nivo/arcs/src/arc_labels/useArcLabels.ts","node_modules/@nivo/arcs/src/arc_link_labels/compute.ts","node_modules/@nivo/arcs/src/arc_link_labels/useArcLinkLabelsTransition.ts","node_modules/@nivo/arcs/src/arc_link_labels/ArcLinkLabel.tsx","node_modules/@nivo/arcs/src/arc_link_labels/ArcLinkLabelsLayer.tsx","node_modules/@nivo/arcs/src/arc_link_labels/canvas.ts","node_modules/@nivo/arcs/src/arc_link_labels/useArcLinks.ts","node_modules/@nivo/arcs/src/arc_link_labels/useArcLinkLabels.ts","node_modules/@nivo/arcs/src/ArcLine.tsx","node_modules/@nivo/arcs/src/ArcShape.tsx","node_modules/@nivo/arcs/src/interpolateArc.ts","node_modules/@nivo/arcs/src/useArcsTransition.ts","node_modules/@nivo/arcs/src/ArcsLayer.tsx","node_modules/@nivo/arcs/src/boundingBox.ts","node_modules/@nivo/arcs/src/interactivity.ts","node_modules/@nivo/arcs/src/useAnimatedArc.ts","node_modules/@nivo/arcs/src/useArcGenerator.ts","node_modules/@nivo/colors/dist/nivo-colors.es.js","node_modules/@nivo/colors/src/schemes/categorical.ts","node_modules/@nivo/colors/src/schemes/diverging.ts","node_modules/@nivo/colors/src/schemes/sequential.ts","node_modules/@nivo/colors/src/schemes/all.ts","node_modules/@nivo/colors/src/schemes/cyclical.ts","node_modules/@nivo/colors/src/schemes/interpolators.ts","node_modules/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","node_modules/@nivo/colors/src/inheritedColor.ts","node_modules/@nivo/colors/src/motion.ts","node_modules/@nivo/colors/src/ordinalColorScale.ts","node_modules/@nivo/colors/src/props.ts","node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","node_modules/@nivo/colors/node_modules/lodash/isPlainObject.js","node_modules/@nivo/colors/node_modules/lodash/_baseGetTag.js","node_modules/@nivo/colors/node_modules/lodash/_Symbol.js","node_modules/@nivo/colors/node_modules/lodash/_root.js","node_modules/@nivo/colors/node_modules/lodash/_freeGlobal.js","node_modules/@nivo/colors/node_modules/lodash/_getRawTag.js","node_modules/@nivo/colors/node_modules/lodash/_objectToString.js","node_modules/@nivo/colors/node_modules/lodash/_getPrototype.js","node_modules/@nivo/colors/node_modules/lodash/_overArg.js","node_modules/@nivo/colors/node_modules/lodash/isObjectLike.js","node_modules/@nivo/colors/node_modules/lodash/get.js","node_modules/@nivo/colors/node_modules/lodash/_baseGet.js","node_modules/@nivo/colors/node_modules/lodash/_castPath.js","node_modules/@nivo/colors/node_modules/lodash/isArray.js","node_modules/@nivo/colors/node_modules/lodash/_isKey.js","node_modules/@nivo/colors/node_modules/lodash/isSymbol.js","node_modules/@nivo/colors/node_modules/lodash/_stringToPath.js","node_modules/@nivo/colors/node_modules/lodash/_memoizeCapped.js","node_modules/@nivo/colors/node_modules/lodash/memoize.js","node_modules/@nivo/colors/node_modules/lodash/_MapCache.js","node_modules/@nivo/colors/node_modules/lodash/_mapCacheClear.js","node_modules/@nivo/colors/node_modules/lodash/_Hash.js","node_modules/@nivo/colors/node_modules/lodash/_hashClear.js","node_modules/@nivo/colors/node_modules/lodash/_nativeCreate.js","node_modules/@nivo/colors/node_modules/lodash/_getNative.js","node_modules/@nivo/colors/node_modules/lodash/_baseIsNative.js","node_modules/@nivo/colors/node_modules/lodash/isFunction.js","node_modules/@nivo/colors/node_modules/lodash/isObject.js","node_modules/@nivo/colors/node_modules/lodash/_isMasked.js","node_modules/@nivo/colors/node_modules/lodash/_coreJsData.js","node_modules/@nivo/colors/node_modules/lodash/_toSource.js","node_modules/@nivo/colors/node_modules/lodash/_getValue.js","node_modules/@nivo/colors/node_modules/lodash/_hashDelete.js","node_modules/@nivo/colors/node_modules/lodash/_hashGet.js","node_modules/@nivo/colors/node_modules/lodash/_hashHas.js","node_modules/@nivo/colors/node_modules/lodash/_hashSet.js","node_modules/@nivo/colors/node_modules/lodash/_ListCache.js","node_modules/@nivo/colors/node_modules/lodash/_listCacheClear.js","node_modules/@nivo/colors/node_modules/lodash/_listCacheDelete.js","node_modules/@nivo/colors/node_modules/lodash/_assocIndexOf.js","node_modules/@nivo/colors/node_modules/lodash/eq.js","node_modules/@nivo/colors/node_modules/lodash/_listCacheGet.js","node_modules/@nivo/colors/node_modules/lodash/_listCacheHas.js","node_modules/@nivo/colors/node_modules/lodash/_listCacheSet.js","node_modules/@nivo/colors/node_modules/lodash/_Map.js","node_modules/@nivo/colors/node_modules/lodash/_mapCacheDelete.js","node_modules/@nivo/colors/node_modules/lodash/_getMapData.js","node_modules/@nivo/colors/node_modules/lodash/_isKeyable.js","node_modules/@nivo/colors/node_modules/lodash/_mapCacheGet.js","node_modules/@nivo/colors/node_modules/lodash/_mapCacheHas.js","node_modules/@nivo/colors/node_modules/lodash/_mapCacheSet.js","node_modules/@nivo/colors/node_modules/lodash/toString.js","node_modules/@nivo/colors/node_modules/lodash/_baseToString.js","node_modules/@nivo/colors/node_modules/lodash/_arrayMap.js","node_modules/@nivo/colors/node_modules/lodash/_toKey.js","node_modules/@nivo/colors/node_modules/d3-color/src/color.js","node_modules/@nivo/colors/node_modules/d3-color/src/define.js","node_modules/react-motion/lib/react-motion.js","node_modules/react-motion/lib/Motion.js","node_modules/react-motion/lib/mapToZero.js","node_modules/react-motion/lib/stripStyle.js","node_modules/react-motion/lib/stepper.js","node_modules/react-motion/node_modules/performance-now/lib/performance-now.js","node_modules/raf/index.js","node_modules/performance-now/lib/performance-now.js","node_modules/performance-now/src/performance-now.coffee","node_modules/react-motion/lib/shouldStopAnimation.js","node_modules/react-motion/node_modules/prop-types/index.js","node_modules/react-motion/node_modules/prop-types/factoryWithThrowingShims.js","node_modules/react-motion/node_modules/prop-types/lib/ReactPropTypesSecret.js","node_modules/react-motion/lib/StaggeredMotion.js","node_modules/react-motion/lib/TransitionMotion.js","node_modules/react-motion/lib/mergeDiff.js","node_modules/react-motion/lib/spring.js","node_modules/react-motion/lib/presets.js","node_modules/react-motion/lib/reorderKeys.js","node_modules/d3-shape/src/arc.js","node_modules/d3-shape/node_modules/d3-path/src/path.js","node_modules/d3-shape/src/constant.js","node_modules/d3-shape/src/line.js","node_modules/d3-shape/src/point.js","node_modules/@nivo/legends/dist/nivo-legends.es.js","node_modules/@nivo/legends/src/compute.ts","node_modules/@nivo/legends/src/svg/symbols/SymbolCircle.tsx","node_modules/@nivo/legends/src/svg/symbols/SymbolDiamond.tsx","node_modules/@nivo/legends/src/svg/symbols/SymbolSquare.tsx","node_modules/@nivo/legends/src/svg/symbols/SymbolTriangle.tsx","node_modules/@nivo/legends/src/svg/LegendSvgItem.tsx","node_modules/@nivo/legends/src/svg/LegendSvg.tsx","node_modules/@nivo/legends/src/svg/BoxLegendSvg.tsx","node_modules/@nivo/legends/src/canvas.ts","node_modules/@nivo/legends/src/hooks.ts","node_modules/@nivo/legends/src/props.ts","node_modules/d3-shape/src/pie.js","node_modules/d3-shape/src/descending.js","node_modules/d3-shape/src/identity.js","src/components/building/BuildingRecommendations.js","src/components/building/Reduction.js","src/components/building/EnergyRatingIcons.js","src/components/building/Chart.js","node_modules/react-dropzone/dist/es/index.js","node_modules/file-selector/src/index.ts","node_modules/file-selector/dist/es5/file-selector.js","node_modules/file-selector/src/file-selector.ts","node_modules/file-selector/node_modules/tslib/tslib.es6.js","node_modules/file-selector/dist/es5/file.js","node_modules/file-selector/src/file.ts","node_modules/react-dropzone/dist/es/utils/index.js","node_modules/attr-accept/dist/index.js","node_modules/@mui/material/CircularProgress/CircularProgress.js","node_modules/@mui/material/CircularProgress/circularProgressClasses.js","src/components/moreMenu/MoreMenu.js","node_modules/@mui/material/Fab/Fab.js","node_modules/@mui/material/Fab/fabClasses.js","node_modules/@mui/icons-material/esm/MoreVert.js","src/components/chart/LineChart.js","node_modules/@nivo/line/dist/nivo-line.es.js","node_modules/@nivo/line/src/PointTooltip.js","node_modules/@nivo/line/src/SliceTooltip.js","node_modules/@nivo/line/src/props.js","node_modules/@nivo/line/src/hooks.js","node_modules/@nivo/line/src/Areas.js","node_modules/@nivo/line/src/LinesItem.js","node_modules/@nivo/line/src/Lines.js","node_modules/@nivo/line/src/SlicesItem.js","node_modules/@nivo/line/src/Slices.js","node_modules/@nivo/line/src/Points.js","node_modules/@nivo/line/src/Mesh.js","node_modules/@nivo/line/src/Line.js","node_modules/@nivo/line/src/ResponsiveLine.js","node_modules/@nivo/line/src/LineCanvas.js","node_modules/@nivo/line/src/ResponsiveLineCanvas.js","node_modules/@nivo/axes/dist/nivo-axes.es.js","node_modules/@nivo/axes/src/compute.ts","node_modules/@nivo/axes/src/components/AxisTick.tsx","node_modules/@nivo/axes/src/components/Axis.tsx","node_modules/@nivo/axes/src/props.ts","node_modules/@nivo/axes/src/components/Axes.tsx","node_modules/@nivo/axes/src/components/GridLine.tsx","node_modules/@nivo/axes/src/components/GridLines.tsx","node_modules/@nivo/axes/src/components/Grid.tsx","node_modules/@nivo/axes/src/canvas.ts","node_modules/@nivo/axes/node_modules/d3-format/src/defaultLocale.js","node_modules/@nivo/axes/node_modules/d3-format/src/locale.js","node_modules/@nivo/axes/node_modules/d3-format/src/exponent.js","node_modules/@nivo/axes/node_modules/d3-format/src/formatDecimal.js","node_modules/@nivo/axes/node_modules/d3-format/src/formatGroup.js","node_modules/@nivo/axes/node_modules/d3-format/src/formatNumerals.js","node_modules/@nivo/axes/node_modules/d3-format/src/formatSpecifier.js","node_modules/@nivo/axes/node_modules/d3-format/src/formatTrim.js","node_modules/@nivo/axes/node_modules/d3-format/src/formatTypes.js","node_modules/@nivo/axes/node_modules/d3-format/src/formatPrefixAuto.js","node_modules/@nivo/axes/node_modules/d3-format/src/formatRounded.js","node_modules/@nivo/axes/node_modules/d3-format/src/identity.js","node_modules/@nivo/scales/dist/nivo-scales.es.js","node_modules/@nivo/scales/src/timeHelpers.ts","node_modules/@nivo/scales/src/linearScale.ts","node_modules/@nivo/scales/src/pointScale.ts","node_modules/@nivo/scales/src/bandScale.ts","node_modules/@nivo/scales/src/timeScale.ts","node_modules/@nivo/scales/src/logScale.ts","node_modules/@nivo/scales/src/symlogScale.ts","node_modules/@nivo/scales/src/compute.ts","node_modules/@nivo/scales/src/ticks.ts","node_modules/@nivo/scales/node_modules/lodash/uniq.js","node_modules/@nivo/scales/node_modules/lodash/_baseUniq.js","node_modules/@nivo/scales/node_modules/lodash/_SetCache.js","node_modules/@nivo/scales/node_modules/lodash/_MapCache.js","node_modules/@nivo/scales/node_modules/lodash/_mapCacheClear.js","node_modules/@nivo/scales/node_modules/lodash/_Hash.js","node_modules/@nivo/scales/node_modules/lodash/_hashClear.js","node_modules/@nivo/scales/node_modules/lodash/_nativeCreate.js","node_modules/@nivo/scales/node_modules/lodash/_getNative.js","node_modules/@nivo/scales/node_modules/lodash/_baseIsNative.js","node_modules/@nivo/scales/node_modules/lodash/isFunction.js","node_modules/@nivo/scales/node_modules/lodash/_baseGetTag.js","node_modules/@nivo/scales/node_modules/lodash/_Symbol.js","node_modules/@nivo/scales/node_modules/lodash/_root.js","node_modules/@nivo/scales/node_modules/lodash/_freeGlobal.js","node_modules/@nivo/scales/node_modules/lodash/_getRawTag.js","node_modules/@nivo/scales/node_modules/lodash/_objectToString.js","node_modules/@nivo/scales/node_modules/lodash/isObject.js","node_modules/@nivo/scales/node_modules/lodash/_isMasked.js","node_modules/@nivo/scales/node_modules/lodash/_coreJsData.js","node_modules/@nivo/scales/node_modules/lodash/_toSource.js","node_modules/@nivo/scales/node_modules/lodash/_getValue.js","node_modules/@nivo/scales/node_modules/lodash/_hashDelete.js","node_modules/@nivo/scales/node_modules/lodash/_hashGet.js","node_modules/@nivo/scales/node_modules/lodash/_hashHas.js","node_modules/@nivo/scales/node_modules/lodash/_hashSet.js","node_modules/@nivo/scales/node_modules/lodash/_ListCache.js","node_modules/@nivo/scales/node_modules/lodash/_listCacheClear.js","node_modules/@nivo/scales/node_modules/lodash/_listCacheDelete.js","node_modules/@nivo/scales/node_modules/lodash/_assocIndexOf.js","node_modules/@nivo/scales/node_modules/lodash/eq.js","node_modules/@nivo/scales/node_modules/lodash/_listCacheGet.js","node_modules/@nivo/scales/node_modules/lodash/_listCacheHas.js","node_modules/@nivo/scales/node_modules/lodash/_listCacheSet.js","node_modules/@nivo/scales/node_modules/lodash/_Map.js","node_modules/@nivo/scales/node_modules/lodash/_mapCacheDelete.js","node_modules/@nivo/scales/node_modules/lodash/_getMapData.js","node_modules/@nivo/scales/node_modules/lodash/_isKeyable.js","node_modules/@nivo/scales/node_modules/lodash/_mapCacheGet.js","node_modules/@nivo/scales/node_modules/lodash/_mapCacheHas.js","node_modules/@nivo/scales/node_modules/lodash/_mapCacheSet.js","node_modules/@nivo/scales/node_modules/lodash/_setCacheAdd.js","node_modules/@nivo/scales/node_modules/lodash/_setCacheHas.js","node_modules/@nivo/scales/node_modules/lodash/_arrayIncludes.js","node_modules/@nivo/scales/node_modules/lodash/_baseIndexOf.js","node_modules/@nivo/scales/node_modules/lodash/_baseFindIndex.js","node_modules/@nivo/scales/node_modules/lodash/_baseIsNaN.js","node_modules/@nivo/scales/node_modules/lodash/_strictIndexOf.js","node_modules/@nivo/scales/node_modules/lodash/_arrayIncludesWith.js","node_modules/@nivo/scales/node_modules/lodash/_cacheHas.js","node_modules/@nivo/scales/node_modules/lodash/_createSet.js","node_modules/@nivo/scales/node_modules/lodash/_Set.js","node_modules/@nivo/scales/node_modules/lodash/noop.js","node_modules/@nivo/scales/node_modules/lodash/_setToArray.js","node_modules/@nivo/scales/node_modules/lodash/uniqBy.js","node_modules/@nivo/scales/node_modules/lodash/_baseIteratee.js","node_modules/@nivo/scales/node_modules/lodash/_baseMatches.js","node_modules/@nivo/scales/node_modules/lodash/_baseIsMatch.js","node_modules/@nivo/scales/node_modules/lodash/_Stack.js","node_modules/@nivo/scales/node_modules/lodash/_stackClear.js","node_modules/@nivo/scales/node_modules/lodash/_stackDelete.js","node_modules/@nivo/scales/node_modules/lodash/_stackGet.js","node_modules/@nivo/scales/node_modules/lodash/_stackHas.js","node_modules/@nivo/scales/node_modules/lodash/_stackSet.js","node_modules/@nivo/scales/node_modules/lodash/_baseIsEqual.js","node_modules/@nivo/scales/node_modules/lodash/_baseIsEqualDeep.js","node_modules/@nivo/scales/node_modules/lodash/_equalArrays.js","node_modules/@nivo/scales/node_modules/lodash/_arraySome.js","node_modules/@nivo/scales/node_modules/lodash/_equalByTag.js","node_modules/@nivo/scales/node_modules/lodash/_Uint8Array.js","node_modules/@nivo/scales/node_modules/lodash/_mapToArray.js","node_modules/@nivo/scales/node_modules/lodash/_equalObjects.js","node_modules/@nivo/scales/node_modules/lodash/_getAllKeys.js","node_modules/@nivo/scales/node_modules/lodash/_baseGetAllKeys.js","node_modules/@nivo/scales/node_modules/lodash/_arrayPush.js","node_modules/@nivo/scales/node_modules/lodash/isArray.js","node_modules/@nivo/scales/node_modules/lodash/_getSymbols.js","node_modules/@nivo/scales/node_modules/lodash/_arrayFilter.js","node_modules/@nivo/scales/node_modules/lodash/stubArray.js","node_modules/@nivo/scales/node_modules/lodash/keys.js","node_modules/@nivo/scales/node_modules/lodash/_arrayLikeKeys.js","node_modules/@nivo/scales/node_modules/lodash/_baseTimes.js","node_modules/@nivo/scales/node_modules/lodash/isArguments.js","node_modules/@nivo/scales/node_modules/lodash/_baseIsArguments.js","node_modules/@nivo/scales/node_modules/lodash/isObjectLike.js","node_modules/@nivo/scales/node_modules/lodash/isBuffer.js","node_modules/@nivo/scales/node_modules/lodash/stubFalse.js","node_modules/@nivo/scales/node_modules/lodash/_isIndex.js","node_modules/@nivo/scales/node_modules/lodash/isTypedArray.js","node_modules/@nivo/scales/node_modules/lodash/_baseIsTypedArray.js","node_modules/@nivo/scales/node_modules/lodash/isLength.js","node_modules/@nivo/scales/node_modules/lodash/_baseUnary.js","node_modules/@nivo/scales/node_modules/lodash/_nodeUtil.js","node_modules/@nivo/scales/node_modules/lodash/_baseKeys.js","node_modules/@nivo/scales/node_modules/lodash/_isPrototype.js","node_modules/@nivo/scales/node_modules/lodash/_nativeKeys.js","node_modules/@nivo/scales/node_modules/lodash/_overArg.js","node_modules/@nivo/scales/node_modules/lodash/isArrayLike.js","node_modules/@nivo/scales/node_modules/lodash/_getTag.js","node_modules/@nivo/scales/node_modules/lodash/_DataView.js","node_modules/@nivo/scales/node_modules/lodash/_Promise.js","node_modules/@nivo/scales/node_modules/lodash/_WeakMap.js","node_modules/@nivo/scales/node_modules/lodash/_getMatchData.js","node_modules/@nivo/scales/node_modules/lodash/_isStrictComparable.js","node_modules/@nivo/scales/node_modules/lodash/_matchesStrictComparable.js","node_modules/@nivo/scales/node_modules/lodash/_baseMatchesProperty.js","node_modules/@nivo/scales/node_modules/lodash/get.js","node_modules/@nivo/scales/node_modules/lodash/_baseGet.js","node_modules/@nivo/scales/node_modules/lodash/_castPath.js","node_modules/@nivo/scales/node_modules/lodash/_isKey.js","node_modules/@nivo/scales/node_modules/lodash/isSymbol.js","node_modules/@nivo/scales/node_modules/lodash/_stringToPath.js","node_modules/@nivo/scales/node_modules/lodash/_memoizeCapped.js","node_modules/@nivo/scales/node_modules/lodash/memoize.js","node_modules/@nivo/scales/node_modules/lodash/toString.js","node_modules/@nivo/scales/node_modules/lodash/_baseToString.js","node_modules/@nivo/scales/node_modules/lodash/_arrayMap.js","node_modules/@nivo/scales/node_modules/lodash/_toKey.js","node_modules/@nivo/scales/node_modules/lodash/hasIn.js","node_modules/@nivo/scales/node_modules/lodash/_baseHasIn.js","node_modules/@nivo/scales/node_modules/lodash/_hasPath.js","node_modules/@nivo/scales/node_modules/lodash/identity.js","node_modules/@nivo/scales/node_modules/lodash/property.js","node_modules/@nivo/scales/node_modules/lodash/_baseProperty.js","node_modules/@nivo/scales/node_modules/lodash/_basePropertyDeep.js","node_modules/@nivo/scales/node_modules/lodash/sortBy.js","node_modules/@nivo/scales/node_modules/lodash/_baseFlatten.js","node_modules/@nivo/scales/node_modules/lodash/_isFlattenable.js","node_modules/@nivo/scales/node_modules/lodash/_baseOrderBy.js","node_modules/@nivo/scales/node_modules/lodash/_baseMap.js","node_modules/@nivo/scales/node_modules/lodash/_baseEach.js","node_modules/@nivo/scales/node_modules/lodash/_baseForOwn.js","node_modules/@nivo/scales/node_modules/lodash/_baseFor.js","node_modules/@nivo/scales/node_modules/lodash/_createBaseFor.js","node_modules/@nivo/scales/node_modules/lodash/_createBaseEach.js","node_modules/@nivo/scales/node_modules/lodash/_baseSortBy.js","node_modules/@nivo/scales/node_modules/lodash/_compareMultiple.js","node_modules/@nivo/scales/node_modules/lodash/_compareAscending.js","node_modules/@nivo/scales/node_modules/lodash/_baseRest.js","node_modules/@nivo/scales/node_modules/lodash/_overRest.js","node_modules/@nivo/scales/node_modules/lodash/_apply.js","node_modules/@nivo/scales/node_modules/lodash/_setToString.js","node_modules/@nivo/scales/node_modules/lodash/_baseSetToString.js","node_modules/@nivo/scales/node_modules/lodash/constant.js","node_modules/@nivo/scales/node_modules/lodash/_defineProperty.js","node_modules/@nivo/scales/node_modules/lodash/_shortOut.js","node_modules/@nivo/scales/node_modules/lodash/_isIterateeCall.js","node_modules/@nivo/scales/node_modules/lodash/last.js","node_modules/@nivo/scales/node_modules/lodash/isDate.js","node_modules/@nivo/scales/node_modules/lodash/_baseIsDate.js","node_modules/d3-scale/src/band.js","node_modules/d3-scale/node_modules/d3-array/src/range.js","node_modules/d3-scale/src/time.js","node_modules/d3-scale/node_modules/d3-time/src/day.js","node_modules/d3-scale/node_modules/d3-time/src/interval.js","node_modules/d3-scale/node_modules/d3-time/src/duration.js","node_modules/d3-scale/node_modules/d3-time/src/hour.js","node_modules/d3-scale/node_modules/d3-time/src/minute.js","node_modules/d3-scale/node_modules/d3-time/src/month.js","node_modules/d3-scale/node_modules/d3-time/src/second.js","node_modules/d3-scale/node_modules/d3-time/src/ticks.js","node_modules/d3-scale/node_modules/d3-time/src/millisecond.js","node_modules/d3-scale/node_modules/d3-time/src/week.js","node_modules/d3-scale/node_modules/d3-time/src/year.js","node_modules/d3-scale/node_modules/d3-time/src/utcMinute.js","node_modules/d3-scale/node_modules/d3-time/src/utcHour.js","node_modules/d3-scale/node_modules/d3-time/src/utcDay.js","node_modules/d3-scale/node_modules/d3-time/src/utcWeek.js","node_modules/d3-scale/node_modules/d3-time/src/utcMonth.js","node_modules/d3-scale/node_modules/d3-time/src/utcYear.js","node_modules/d3-scale/src/utcTime.js","node_modules/@nivo/scales/node_modules/d3-time/src/index.js","node_modules/@nivo/scales/node_modules/d3-time/src/interval.js","node_modules/@nivo/scales/node_modules/d3-time/src/millisecond.js","node_modules/@nivo/scales/node_modules/d3-time/src/second.js","node_modules/@nivo/scales/node_modules/d3-time/src/duration.js","node_modules/@nivo/scales/node_modules/d3-time/src/minute.js","node_modules/@nivo/scales/node_modules/d3-time/src/hour.js","node_modules/@nivo/scales/node_modules/d3-time/src/week.js","node_modules/@nivo/scales/node_modules/d3-time/src/month.js","node_modules/@nivo/scales/node_modules/d3-time/src/year.js","node_modules/@nivo/scales/node_modules/d3-time/src/utcMinute.js","node_modules/@nivo/scales/node_modules/d3-time/src/utcHour.js","node_modules/@nivo/scales/node_modules/d3-time/src/utcWeek.js","node_modules/@nivo/scales/node_modules/d3-time/src/utcMonth.js","node_modules/@nivo/scales/node_modules/d3-time/src/utcYear.js","node_modules/d3-shape/src/area.js","node_modules/@nivo/voronoi/dist/nivo-voronoi.es.js","node_modules/@nivo/voronoi/src/props.ts","node_modules/@nivo/voronoi/src/computeMesh.ts","node_modules/@nivo/voronoi/src/hooks.ts","node_modules/@nivo/voronoi/src/Voronoi.tsx","node_modules/@nivo/voronoi/src/ResponsiveVoronoi.tsx","node_modules/@nivo/voronoi/src/Mesh.tsx","node_modules/@nivo/voronoi/src/meshCanvas.ts","node_modules/@nivo/voronoi/node_modules/d3-delaunay/src/delaunay.js","node_modules/@nivo/voronoi/node_modules/delaunator/index.js","node_modules/@nivo/voronoi/node_modules/d3-delaunay/src/path.js","node_modules/@nivo/voronoi/node_modules/d3-delaunay/src/polygon.js","node_modules/@nivo/voronoi/node_modules/d3-delaunay/src/voronoi.js","src/components/building/Contact.js","node_modules/@mui/material/Card/Card.js","node_modules/@mui/material/Card/cardClasses.js","node_modules/@mui/material/CardActions/CardActions.js","node_modules/@mui/material/CardActions/cardActionsClasses.js","node_modules/@mui/material/CardContent/CardContent.js","node_modules/@mui/material/CardContent/cardContentClasses.js","node_modules/@mui/material/CardHeader/CardHeader.js","node_modules/@mui/material/CardHeader/cardHeaderClasses.js","node_modules/@mui/material/ListItem/ListItem.js","node_modules/@mui/material/ListItem/listItemClasses.js","node_modules/@mui/material/ListItemButton/listItemButtonClasses.js","node_modules/@mui/material/ListItemSecondaryAction/ListItemSecondaryAction.js","node_modules/@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js","node_modules/@mui/material/ListItemText/ListItemText.js","src/components/building/Place.js","src/components/building/PowerlineMap.js","src/components/building/mapStyles.js","src/components/financials/Financials.js","node_modules/@mui/icons-material/esm/CloudQueue.js","node_modules/@mui/icons-material/esm/DriveEtaOutlined.js","node_modules/@mui/icons-material/esm/LocalGasStationOutlined.js","node_modules/@mui/icons-material/esm/NatureOutlined.js","node_modules/@mui/icons-material/esm/OpenInNew.js","src/components/financials/FinancialsSummary.js","src/components/financials/CashFlowChart.js","src/components/financials/ScatterPlot.js","node_modules/d3/src/index.js","node_modules/d3-array/src/index.js","node_modules/d3-array/src/bisect.js","node_modules/d3-array/src/ascending.js","node_modules/d3-array/src/bisector.js","node_modules/d3-array/src/descending.js","node_modules/d3-array/src/number.js","node_modules/d3-array/src/blur.js","node_modules/d3-array/src/count.js","node_modules/d3-array/src/cross.js","node_modules/d3-array/src/cumsum.js","node_modules/d3-array/src/deviation.js","node_modules/d3-array/src/variance.js","node_modules/d3-array/src/extent.js","node_modules/d3-array/src/fsum.js","node_modules/d3-array/src/group.js","node_modules/internmap/src/index.js","node_modules/d3-array/src/identity.js","node_modules/d3-array/src/groupSort.js","node_modules/d3-array/src/sort.js","node_modules/d3-array/src/permute.js","node_modules/d3-array/src/bin.js","node_modules/d3-array/src/array.js","node_modules/d3-array/src/constant.js","node_modules/d3-array/src/nice.js","node_modules/d3-array/src/ticks.js","node_modules/d3-array/src/threshold/sturges.js","node_modules/d3-array/src/threshold/freedmanDiaconis.js","node_modules/d3-array/src/quantile.js","node_modules/d3-array/src/max.js","node_modules/d3-array/src/maxIndex.js","node_modules/d3-array/src/min.js","node_modules/d3-array/src/minIndex.js","node_modules/d3-array/src/quickselect.js","node_modules/d3-array/src/greatest.js","node_modules/d3-array/src/threshold/scott.js","node_modules/d3-array/src/mean.js","node_modules/d3-array/src/median.js","node_modules/d3-array/src/merge.js","node_modules/d3-array/src/mode.js","node_modules/d3-array/src/pairs.js","node_modules/d3-array/src/range.js","node_modules/d3-array/src/rank.js","node_modules/d3-array/src/least.js","node_modules/d3-array/src/leastIndex.js","node_modules/d3-array/src/greatestIndex.js","node_modules/d3-array/src/scan.js","node_modules/d3-array/src/shuffle.js","node_modules/d3-array/src/sum.js","node_modules/d3-array/src/transpose.js","node_modules/d3-array/src/zip.js","node_modules/d3-array/src/every.js","node_modules/d3-array/src/some.js","node_modules/d3-array/src/filter.js","node_modules/d3-array/src/map.js","node_modules/d3-array/src/reduce.js","node_modules/d3-array/src/reverse.js","node_modules/d3-array/src/difference.js","node_modules/d3-array/src/disjoint.js","node_modules/d3-array/src/intersection.js","node_modules/d3-array/src/subset.js","node_modules/d3-array/src/superset.js","node_modules/d3-array/src/union.js","node_modules/d3-axis/src/index.js","node_modules/d3-axis/src/axis.js","node_modules/d3-axis/src/identity.js","node_modules/d3-brush/src/index.js","node_modules/d3-brush/src/brush.js","node_modules/d3-dispatch/src/dispatch.js","node_modules/d3-drag/src/nodrag.js","node_modules/d3-selection/src/select.js","node_modules/d3-selection/src/selection/index.js","node_modules/d3-selection/src/selection/select.js","node_modules/d3-selection/src/selector.js","node_modules/d3-selection/src/selection/selectAll.js","node_modules/d3-selection/src/array.js","node_modules/d3-selection/src/selectorAll.js","node_modules/d3-selection/src/selection/selectChild.js","node_modules/d3-selection/src/matcher.js","node_modules/d3-selection/src/selection/selectChildren.js","node_modules/d3-selection/src/selection/filter.js","node_modules/d3-selection/src/selection/data.js","node_modules/d3-selection/src/selection/enter.js","node_modules/d3-selection/src/selection/sparse.js","node_modules/d3-selection/src/constant.js","node_modules/d3-selection/src/selection/exit.js","node_modules/d3-selection/src/selection/join.js","node_modules/d3-selection/src/selection/merge.js","node_modules/d3-selection/src/selection/order.js","node_modules/d3-selection/src/selection/sort.js","node_modules/d3-selection/src/selection/call.js","node_modules/d3-selection/src/selection/nodes.js","node_modules/d3-selection/src/selection/node.js","node_modules/d3-selection/src/selection/size.js","node_modules/d3-selection/src/selection/empty.js","node_modules/d3-selection/src/selection/each.js","node_modules/d3-selection/src/selection/attr.js","node_modules/d3-selection/src/namespace.js","node_modules/d3-selection/src/namespaces.js","node_modules/d3-selection/src/selection/style.js","node_modules/d3-selection/src/window.js","node_modules/d3-selection/src/selection/property.js","node_modules/d3-selection/src/selection/classed.js","node_modules/d3-selection/src/selection/text.js","node_modules/d3-selection/src/selection/html.js","node_modules/d3-selection/src/selection/raise.js","node_modules/d3-selection/src/selection/lower.js","node_modules/d3-selection/src/selection/append.js","node_modules/d3-selection/src/creator.js","node_modules/d3-selection/src/selection/insert.js","node_modules/d3-selection/src/selection/remove.js","node_modules/d3-selection/src/selection/clone.js","node_modules/d3-selection/src/selection/datum.js","node_modules/d3-selection/src/selection/on.js","node_modules/d3-selection/src/selection/dispatch.js","node_modules/d3-selection/src/selection/iterator.js","node_modules/d3-drag/src/noevent.js","node_modules/d3-interpolate/src/value.js","node_modules/d3-color/src/color.js","node_modules/d3-color/src/define.js","node_modules/d3-interpolate/src/rgb.js","node_modules/d3-interpolate/src/basis.js","node_modules/d3-interpolate/src/basisClosed.js","node_modules/d3-interpolate/src/color.js","node_modules/d3-interpolate/src/constant.js","node_modules/d3-interpolate/src/array.js","node_modules/d3-interpolate/src/numberArray.js","node_modules/d3-interpolate/src/date.js","node_modules/d3-interpolate/src/number.js","node_modules/d3-interpolate/src/object.js","node_modules/d3-interpolate/src/string.js","node_modules/d3-selection/src/pointer.js","node_modules/d3-selection/src/sourceEvent.js","node_modules/d3-transition/src/index.js","node_modules/d3-transition/src/selection/index.js","node_modules/d3-transition/src/selection/interrupt.js","node_modules/d3-transition/src/interrupt.js","node_modules/d3-transition/src/transition/schedule.js","node_modules/d3-timer/src/timeout.js","node_modules/d3-timer/src/timer.js","node_modules/d3-transition/src/selection/transition.js","node_modules/d3-transition/src/transition/index.js","node_modules/d3-transition/src/transition/attr.js","node_modules/d3-interpolate/src/transform/index.js","node_modules/d3-interpolate/src/transform/parse.js","node_modules/d3-interpolate/src/transform/decompose.js","node_modules/d3-transition/src/transition/tween.js","node_modules/d3-transition/src/transition/interpolate.js","node_modules/d3-transition/src/transition/attrTween.js","node_modules/d3-transition/src/transition/delay.js","node_modules/d3-transition/src/transition/duration.js","node_modules/d3-transition/src/transition/ease.js","node_modules/d3-transition/src/transition/easeVarying.js","node_modules/d3-transition/src/transition/filter.js","node_modules/d3-transition/src/transition/merge.js","node_modules/d3-transition/src/transition/on.js","node_modules/d3-transition/src/transition/remove.js","node_modules/d3-transition/src/transition/select.js","node_modules/d3-transition/src/transition/selectAll.js","node_modules/d3-transition/src/transition/selection.js","node_modules/d3-transition/src/transition/style.js","node_modules/d3-transition/src/transition/styleTween.js","node_modules/d3-transition/src/transition/text.js","node_modules/d3-transition/src/transition/textTween.js","node_modules/d3-transition/src/transition/transition.js","node_modules/d3-transition/src/transition/end.js","node_modules/d3-ease/src/cubic.js","node_modules/d3-transition/src/active.js","node_modules/d3-brush/src/constant.js","node_modules/d3-brush/src/event.js","node_modules/d3-brush/src/noevent.js","node_modules/d3-chord/src/index.js","node_modules/d3-chord/src/chord.js","node_modules/d3-chord/src/math.js","node_modules/d3-chord/src/ribbon.js","node_modules/d3-path/src/path.js","node_modules/d3-chord/src/array.js","node_modules/d3-chord/src/constant.js","node_modules/d3-color/src/index.js","node_modules/d3-color/src/lab.js","node_modules/d3-color/src/math.js","node_modules/d3-color/src/cubehelix.js","node_modules/d3-contour/src/index.js","node_modules/d3-contour/src/contours.js","node_modules/d3-contour/src/array.js","node_modules/d3-contour/src/ascending.js","node_modules/d3-contour/src/area.js","node_modules/d3-contour/src/constant.js","node_modules/d3-contour/src/contains.js","node_modules/d3-contour/src/noop.js","node_modules/d3-contour/src/density.js","node_modules/d3-delaunay/src/index.js","node_modules/d3-delaunay/src/delaunay.js","node_modules/delaunator/index.js","node_modules/robust-predicates/index.js","node_modules/robust-predicates/esm/orient2d.js","node_modules/robust-predicates/esm/util.js","node_modules/robust-predicates/esm/orient3d.js","node_modules/robust-predicates/esm/incircle.js","node_modules/robust-predicates/esm/insphere.js","node_modules/d3-delaunay/src/path.js","node_modules/d3-delaunay/src/polygon.js","node_modules/d3-delaunay/src/voronoi.js","node_modules/d3-dispatch/src/index.js","node_modules/d3-drag/src/index.js","node_modules/d3-drag/src/drag.js","node_modules/d3-drag/src/constant.js","node_modules/d3-drag/src/event.js","node_modules/d3/node_modules/d3-dsv/src/index.js","node_modules/d3/node_modules/d3-dsv/src/dsv.js","node_modules/d3/node_modules/d3-dsv/src/csv.js","node_modules/d3/node_modules/d3-dsv/src/tsv.js","node_modules/d3/node_modules/d3-dsv/src/autoType.js","node_modules/d3-ease/src/index.js","node_modules/d3-ease/src/linear.js","node_modules/d3-ease/src/quad.js","node_modules/d3-ease/src/poly.js","node_modules/d3-ease/src/sin.js","node_modules/d3-ease/src/exp.js","node_modules/d3-ease/src/math.js","node_modules/d3-ease/src/circle.js","node_modules/d3-ease/src/bounce.js","node_modules/d3-ease/src/back.js","node_modules/d3-ease/src/elastic.js","node_modules/d3-fetch/src/index.js","node_modules/d3-fetch/src/blob.js","node_modules/d3-fetch/src/buffer.js","node_modules/d3-fetch/src/dsv.js","node_modules/d3-fetch/node_modules/d3-dsv/src/csv.js","node_modules/d3-fetch/node_modules/d3-dsv/src/dsv.js","node_modules/d3-fetch/node_modules/d3-dsv/src/tsv.js","node_modules/d3-fetch/src/text.js","node_modules/d3-fetch/src/image.js","node_modules/d3-fetch/src/json.js","node_modules/d3-fetch/src/xml.js","node_modules/d3-force/src/index.js","node_modules/d3-force/src/center.js","node_modules/d3-force/src/collide.js","node_modules/d3-quadtree/src/quadtree.js","node_modules/d3-quadtree/src/add.js","node_modules/d3-quadtree/src/cover.js","node_modules/d3-quadtree/src/data.js","node_modules/d3-quadtree/src/extent.js","node_modules/d3-quadtree/src/find.js","node_modules/d3-quadtree/src/quad.js","node_modules/d3-quadtree/src/remove.js","node_modules/d3-quadtree/src/root.js","node_modules/d3-quadtree/src/size.js","node_modules/d3-quadtree/src/visit.js","node_modules/d3-quadtree/src/visitAfter.js","node_modules/d3-quadtree/src/x.js","node_modules/d3-quadtree/src/y.js","node_modules/d3-force/src/constant.js","node_modules/d3-force/src/jiggle.js","node_modules/d3-force/src/link.js","node_modules/d3-force/src/manyBody.js","node_modules/d3-force/src/simulation.js","node_modules/d3-force/src/lcg.js","node_modules/d3-force/src/radial.js","node_modules/d3-force/src/x.js","node_modules/d3-force/src/y.js","node_modules/d3-format/src/index.js","node_modules/d3-format/src/defaultLocale.js","node_modules/d3-format/src/locale.js","node_modules/d3-format/src/exponent.js","node_modules/d3-format/src/formatDecimal.js","node_modules/d3-format/src/formatGroup.js","node_modules/d3-format/src/formatNumerals.js","node_modules/d3-format/src/formatSpecifier.js","node_modules/d3-format/src/formatTrim.js","node_modules/d3-format/src/formatTypes.js","node_modules/d3-format/src/formatPrefixAuto.js","node_modules/d3-format/src/formatRounded.js","node_modules/d3-format/src/identity.js","node_modules/d3-format/src/precisionFixed.js","node_modules/d3-format/src/precisionPrefix.js","node_modules/d3-format/src/precisionRound.js","node_modules/d3-geo/src/index.js","node_modules/d3-geo/src/area.js","node_modules/d3-geo/src/math.js","node_modules/d3-geo/src/noop.js","node_modules/d3-geo/src/stream.js","node_modules/d3-geo/src/bounds.js","node_modules/d3-geo/src/cartesian.js","node_modules/d3-geo/src/centroid.js","node_modules/d3-geo/src/circle.js","node_modules/d3-geo/src/constant.js","node_modules/d3-geo/src/rotation.js","node_modules/d3-geo/src/compose.js","node_modules/d3-geo/src/clip/antimeridian.js","node_modules/d3-geo/src/clip/index.js","node_modules/d3-geo/src/clip/buffer.js","node_modules/d3-geo/src/clip/rejoin.js","node_modules/d3-geo/src/pointEqual.js","node_modules/d3-geo/src/polygonContains.js","node_modules/d3-geo/src/clip/circle.js","node_modules/d3-geo/src/clip/extent.js","node_modules/d3-geo/src/clip/rectangle.js","node_modules/d3-geo/src/clip/line.js","node_modules/d3-geo/src/contains.js","node_modules/d3-geo/src/distance.js","node_modules/d3-geo/src/length.js","node_modules/d3-geo/src/graticule.js","node_modules/d3-geo/src/interpolate.js","node_modules/d3-geo/src/path/index.js","node_modules/d3-geo/src/identity.js","node_modules/d3-geo/src/path/area.js","node_modules/d3-geo/src/path/bounds.js","node_modules/d3-geo/src/path/centroid.js","node_modules/d3-geo/src/path/context.js","node_modules/d3-geo/src/path/measure.js","node_modules/d3-geo/src/path/string.js","node_modules/d3-geo/src/projection/albers.js","node_modules/d3-geo/src/projection/conicEqualArea.js","node_modules/d3-geo/src/projection/conic.js","node_modules/d3-geo/src/projection/index.js","node_modules/d3-geo/src/transform.js","node_modules/d3-geo/src/projection/fit.js","node_modules/d3-geo/src/projection/resample.js","node_modules/d3-geo/src/projection/cylindricalEqualArea.js","node_modules/d3-geo/src/projection/albersUsa.js","node_modules/d3-geo/src/projection/azimuthalEqualArea.js","node_modules/d3-geo/src/projection/azimuthal.js","node_modules/d3-geo/src/projection/azimuthalEquidistant.js","node_modules/d3-geo/src/projection/conicConformal.js","node_modules/d3-geo/src/projection/mercator.js","node_modules/d3-geo/src/projection/conicEquidistant.js","node_modules/d3-geo/src/projection/equirectangular.js","node_modules/d3-geo/src/projection/equalEarth.js","node_modules/d3-geo/src/projection/gnomonic.js","node_modules/d3-geo/src/projection/identity.js","node_modules/d3-geo/src/projection/naturalEarth1.js","node_modules/d3-geo/src/projection/orthographic.js","node_modules/d3-geo/src/projection/stereographic.js","node_modules/d3-geo/src/projection/transverseMercator.js","node_modules/d3-hierarchy/src/index.js","node_modules/d3-hierarchy/src/cluster.js","node_modules/d3-hierarchy/src/hierarchy/index.js","node_modules/d3-hierarchy/src/hierarchy/count.js","node_modules/d3-hierarchy/src/hierarchy/each.js","node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","node_modules/d3-hierarchy/src/hierarchy/find.js","node_modules/d3-hierarchy/src/hierarchy/sum.js","node_modules/d3-hierarchy/src/hierarchy/sort.js","node_modules/d3-hierarchy/src/hierarchy/path.js","node_modules/d3-hierarchy/src/hierarchy/ancestors.js","node_modules/d3-hierarchy/src/hierarchy/descendants.js","node_modules/d3-hierarchy/src/hierarchy/leaves.js","node_modules/d3-hierarchy/src/hierarchy/links.js","node_modules/d3-hierarchy/src/hierarchy/iterator.js","node_modules/d3-hierarchy/src/pack/index.js","node_modules/d3-hierarchy/src/accessors.js","node_modules/d3-hierarchy/src/constant.js","node_modules/d3-hierarchy/src/lcg.js","node_modules/d3-hierarchy/src/pack/siblings.js","node_modules/d3-hierarchy/src/array.js","node_modules/d3-hierarchy/src/pack/enclose.js","node_modules/d3-hierarchy/src/partition.js","node_modules/d3-hierarchy/src/treemap/round.js","node_modules/d3-hierarchy/src/treemap/dice.js","node_modules/d3-hierarchy/src/stratify.js","node_modules/d3-hierarchy/src/tree.js","node_modules/d3-hierarchy/src/treemap/index.js","node_modules/d3-hierarchy/src/treemap/squarify.js","node_modules/d3-hierarchy/src/treemap/slice.js","node_modules/d3-hierarchy/src/treemap/binary.js","node_modules/d3-hierarchy/src/treemap/sliceDice.js","node_modules/d3-hierarchy/src/treemap/resquarify.js","node_modules/d3-interpolate/src/index.js","node_modules/d3-interpolate/src/discrete.js","node_modules/d3-interpolate/src/hue.js","node_modules/d3-interpolate/src/round.js","node_modules/d3-interpolate/src/zoom.js","node_modules/d3-interpolate/src/hsl.js","node_modules/d3-interpolate/src/lab.js","node_modules/d3-interpolate/src/hcl.js","node_modules/d3-interpolate/src/cubehelix.js","node_modules/d3-interpolate/src/piecewise.js","node_modules/d3-interpolate/src/quantize.js","node_modules/d3-path/src/index.js","node_modules/d3-polygon/src/index.js","node_modules/d3-polygon/src/area.js","node_modules/d3-polygon/src/centroid.js","node_modules/d3-polygon/src/hull.js","node_modules/d3-polygon/src/cross.js","node_modules/d3-polygon/src/contains.js","node_modules/d3-polygon/src/length.js","node_modules/d3-quadtree/src/index.js","node_modules/d3-random/src/index.js","node_modules/d3-random/src/uniform.js","node_modules/d3-random/src/defaultSource.js","node_modules/d3-random/src/int.js","node_modules/d3-random/src/normal.js","node_modules/d3-random/src/logNormal.js","node_modules/d3-random/src/bates.js","node_modules/d3-random/src/irwinHall.js","node_modules/d3-random/src/exponential.js","node_modules/d3-random/src/pareto.js","node_modules/d3-random/src/bernoulli.js","node_modules/d3-random/src/geometric.js","node_modules/d3-random/src/binomial.js","node_modules/d3-random/src/beta.js","node_modules/d3-random/src/gamma.js","node_modules/d3-random/src/weibull.js","node_modules/d3-random/src/cauchy.js","node_modules/d3-random/src/logistic.js","node_modules/d3-random/src/poisson.js","node_modules/d3-random/src/lcg.js","node_modules/d3/node_modules/d3-scale/src/index.js","node_modules/d3/node_modules/d3-scale/src/band.js","node_modules/d3/node_modules/d3-scale/src/init.js","node_modules/d3/node_modules/d3-scale/src/ordinal.js","node_modules/d3/node_modules/d3-scale/src/identity.js","node_modules/d3/node_modules/d3-scale/src/linear.js","node_modules/d3/node_modules/d3-scale/src/continuous.js","node_modules/d3/node_modules/d3-scale/src/constant.js","node_modules/d3/node_modules/d3-scale/src/number.js","node_modules/d3/node_modules/d3-scale/src/tickFormat.js","node_modules/d3/node_modules/d3-scale/src/log.js","node_modules/d3/node_modules/d3-scale/src/nice.js","node_modules/d3/node_modules/d3-scale/src/symlog.js","node_modules/d3/node_modules/d3-scale/src/pow.js","node_modules/d3/node_modules/d3-scale/src/radial.js","node_modules/d3/node_modules/d3-scale/src/quantile.js","node_modules/d3/node_modules/d3-scale/src/quantize.js","node_modules/d3/node_modules/d3-scale/src/threshold.js","node_modules/d3/node_modules/d3-scale/src/time.js","node_modules/d3-time/src/day.js","node_modules/d3-time/src/interval.js","node_modules/d3-time/src/duration.js","node_modules/d3-time/src/hour.js","node_modules/d3-time/src/minute.js","node_modules/d3-time/src/month.js","node_modules/d3-time/src/second.js","node_modules/d3-time/src/ticks.js","node_modules/d3-time/src/millisecond.js","node_modules/d3-time/src/week.js","node_modules/d3-time/src/year.js","node_modules/d3/node_modules/d3-time-format/src/defaultLocale.js","node_modules/d3/node_modules/d3-time-format/src/locale.js","node_modules/d3/node_modules/d3-scale/src/utcTime.js","node_modules/d3/node_modules/d3-scale/src/sequential.js","node_modules/d3/node_modules/d3-scale/src/sequentialQuantile.js","node_modules/d3/node_modules/d3-scale/src/diverging.js","node_modules/d3/node_modules/d3-scale-chromatic/src/index.js","node_modules/d3/node_modules/d3-scale-chromatic/src/categorical/category10.js","node_modules/d3/node_modules/d3-scale-chromatic/src/colors.js","node_modules/d3/node_modules/d3-scale-chromatic/src/categorical/Accent.js","node_modules/d3/node_modules/d3-scale-chromatic/src/categorical/Dark2.js","node_modules/d3/node_modules/d3-scale-chromatic/src/categorical/Paired.js","node_modules/d3/node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","node_modules/d3/node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","node_modules/d3/node_modules/d3-scale-chromatic/src/categorical/Set1.js","node_modules/d3/node_modules/d3-scale-chromatic/src/categorical/Set2.js","node_modules/d3/node_modules/d3-scale-chromatic/src/categorical/Set3.js","node_modules/d3/node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","node_modules/d3/node_modules/d3-scale-chromatic/src/diverging/BrBG.js","node_modules/d3/node_modules/d3-scale-chromatic/src/ramp.js","node_modules/d3/node_modules/d3-scale-chromatic/src/diverging/PRGn.js","node_modules/d3/node_modules/d3-scale-chromatic/src/diverging/PiYG.js","node_modules/d3/node_modules/d3-scale-chromatic/src/diverging/PuOr.js","node_modules/d3/node_modules/d3-scale-chromatic/src/diverging/RdBu.js","node_modules/d3/node_modules/d3-scale-chromatic/src/diverging/RdGy.js","node_modules/d3/node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","node_modules/d3/node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","node_modules/d3/node_modules/d3-scale-chromatic/src/diverging/Spectral.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","node_modules/d3/node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","node_modules/d3-selection/src/index.js","node_modules/d3-selection/src/create.js","node_modules/d3-selection/src/local.js","node_modules/d3-selection/src/pointers.js","node_modules/d3-selection/src/selectAll.js","node_modules/d3/node_modules/d3-shape/src/index.js","node_modules/d3/node_modules/d3-shape/src/arc.js","node_modules/d3/node_modules/d3-shape/src/constant.js","node_modules/d3/node_modules/d3-shape/src/math.js","node_modules/d3/node_modules/d3-shape/src/path.js","node_modules/d3/node_modules/d3-shape/src/area.js","node_modules/d3/node_modules/d3-shape/src/array.js","node_modules/d3/node_modules/d3-shape/src/curve/linear.js","node_modules/d3/node_modules/d3-shape/src/line.js","node_modules/d3/node_modules/d3-shape/src/point.js","node_modules/d3/node_modules/d3-shape/src/pie.js","node_modules/d3/node_modules/d3-shape/src/descending.js","node_modules/d3/node_modules/d3-shape/src/identity.js","node_modules/d3/node_modules/d3-shape/src/areaRadial.js","node_modules/d3/node_modules/d3-shape/src/curve/radial.js","node_modules/d3/node_modules/d3-shape/src/lineRadial.js","node_modules/d3/node_modules/d3-shape/src/pointRadial.js","node_modules/d3/node_modules/d3-shape/src/link.js","node_modules/d3/node_modules/d3-shape/src/curve/bump.js","node_modules/d3/node_modules/d3-shape/src/symbol.js","node_modules/d3/node_modules/d3-shape/src/symbol/asterisk.js","node_modules/d3/node_modules/d3-shape/src/symbol/circle.js","node_modules/d3/node_modules/d3-shape/src/symbol/cross.js","node_modules/d3/node_modules/d3-shape/src/symbol/diamond.js","node_modules/d3/node_modules/d3-shape/src/symbol/diamond2.js","node_modules/d3/node_modules/d3-shape/src/symbol/plus.js","node_modules/d3/node_modules/d3-shape/src/symbol/square.js","node_modules/d3/node_modules/d3-shape/src/symbol/square2.js","node_modules/d3/node_modules/d3-shape/src/symbol/star.js","node_modules/d3/node_modules/d3-shape/src/symbol/triangle.js","node_modules/d3/node_modules/d3-shape/src/symbol/triangle2.js","node_modules/d3/node_modules/d3-shape/src/symbol/wye.js","node_modules/d3/node_modules/d3-shape/src/symbol/times.js","node_modules/d3/node_modules/d3-shape/src/curve/basisClosed.js","node_modules/d3/node_modules/d3-shape/src/noop.js","node_modules/d3/node_modules/d3-shape/src/curve/basis.js","node_modules/d3/node_modules/d3-shape/src/curve/basisOpen.js","node_modules/d3/node_modules/d3-shape/src/curve/bundle.js","node_modules/d3/node_modules/d3-shape/src/curve/cardinalClosed.js","node_modules/d3/node_modules/d3-shape/src/curve/cardinal.js","node_modules/d3/node_modules/d3-shape/src/curve/cardinalOpen.js","node_modules/d3/node_modules/d3-shape/src/curve/catmullRomClosed.js","node_modules/d3/node_modules/d3-shape/src/curve/catmullRom.js","node_modules/d3/node_modules/d3-shape/src/curve/catmullRomOpen.js","node_modules/d3/node_modules/d3-shape/src/curve/linearClosed.js","node_modules/d3/node_modules/d3-shape/src/curve/monotone.js","node_modules/d3/node_modules/d3-shape/src/curve/natural.js","node_modules/d3/node_modules/d3-shape/src/curve/step.js","node_modules/d3/node_modules/d3-shape/src/stack.js","node_modules/d3/node_modules/d3-shape/src/offset/none.js","node_modules/d3/node_modules/d3-shape/src/order/none.js","node_modules/d3/node_modules/d3-shape/src/offset/expand.js","node_modules/d3/node_modules/d3-shape/src/offset/diverging.js","node_modules/d3/node_modules/d3-shape/src/offset/silhouette.js","node_modules/d3/node_modules/d3-shape/src/offset/wiggle.js","node_modules/d3/node_modules/d3-shape/src/order/appearance.js","node_modules/d3/node_modules/d3-shape/src/order/ascending.js","node_modules/d3/node_modules/d3-shape/src/order/descending.js","node_modules/d3/node_modules/d3-shape/src/order/insideOut.js","node_modules/d3/node_modules/d3-shape/src/order/reverse.js","node_modules/d3-time/src/index.js","node_modules/d3/node_modules/d3-time-format/src/index.js","node_modules/d3/node_modules/d3-time-format/src/isoFormat.js","node_modules/d3/node_modules/d3-time-format/src/isoParse.js","node_modules/d3-timer/src/index.js","node_modules/d3-timer/src/interval.js","node_modules/d3-zoom/src/index.js","node_modules/d3-zoom/src/zoom.js","node_modules/d3-zoom/src/constant.js","node_modules/d3-zoom/src/event.js","node_modules/d3-zoom/src/transform.js","node_modules/d3-zoom/src/noevent.js","src/components/chart/Heatmap.js","src/components/general/LabelSwitch.js","node_modules/@mui/material/Switch/Switch.js","node_modules/@mui/material/Switch/switchClasses.js","node_modules/@mui/material/Stack/Stack.js","src/components/errors/PageError.js","src/components/project/PanoramaToggleButton.js","node_modules/use-debounce/dist/index.module.js","node_modules/use-debounce/src/useDebouncedCallback.ts","node_modules/use-debounce/src/useDebounce.ts","node_modules/use-debounce/src/useThrottledCallback.ts","src/components/project/ProjectHeaderPanorama.js","src/components/search/SearchResults.js","node_modules/react-window/dist/index.esm.js","node_modules/react-window/src/timer.js","node_modules/react-window/src/domHelpers.js","node_modules/react-window/src/createGridComponent.js","node_modules/react-window/src/VariableSizeGrid.js","node_modules/react-window/src/createListComponent.js","node_modules/react-window/src/VariableSizeList.js","node_modules/react-window/src/FixedSizeGrid.js","node_modules/react-window/src/FixedSizeList.js","node_modules/react-window/src/shallowDiffers.js","node_modules/react-window/src/areEqual.js","node_modules/react-window/src/shouldComponentUpdate.js","node_modules/react-window/node_modules/@babel/runtime/helpers/esm/extends.js","node_modules/react-window/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","node_modules/react-window/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","node_modules/memoize-one/dist/memoize-one.esm.js","node_modules/react-window/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","node_modules/react-virtualized-auto-sizer/dist/index.esm.js","node_modules/react-window-infinite-loader/dist/index.esm.js","src/components/building/BuildingCard.js","node_modules/@mui/material/ListItemAvatar/ListItemAvatar.js","node_modules/@mui/material/ListItemAvatar/listItemAvatarClasses.js","node_modules/@mui/material/ListItemIcon/ListItemIcon.js","node_modules/@mui/icons-material/esm/NavigateNext.js","src/components/building/BuildingCardMeta.js","node_modules/@parcel/runtime-js/lib/runtime-8d9ae5f6d7191c5c.js","node_modules/@parcel/runtime-js/lib/helpers/browser/css-loader.js","node_modules/@parcel/runtime-js/lib/helpers/cacheLoader.js","node_modules/@parcel/runtime-js/lib/helpers/browser/import-polyfill.js","node_modules/@mui/material/TextField/TextField.js","node_modules/@mui/utils/esm/useId.js","node_modules/@mui/material/TextField/textFieldClasses.js","node_modules/@mui/material/Dialog/Dialog.js","node_modules/@mui/material/Dialog/dialogClasses.js","node_modules/@mui/material/Dialog/DialogContext.js","node_modules/@mui/material/DialogActions/DialogActions.js","node_modules/@mui/material/DialogActions/dialogActionsClasses.js","node_modules/@mui/material/DialogContent/DialogContent.js","node_modules/@mui/material/DialogContent/dialogContentClasses.js","node_modules/@mui/material/DialogTitle/dialogTitleClasses.js","node_modules/@mui/material/DialogContentText/DialogContentText.js","node_modules/@mui/material/DialogContentText/dialogContentTextClasses.js","node_modules/@mui/material/DialogTitle/DialogTitle.js","node_modules/react-swipeable-views/lib/SwipeableViews.js","node_modules/react-swipeable-views/node_modules/@babel/runtime/helpers/interopRequireDefault.js","node_modules/react-swipeable-views/node_modules/@babel/runtime/helpers/extends.js","node_modules/react-swipeable-views/node_modules/@babel/runtime/helpers/objectWithoutProperties.js","node_modules/react-swipeable-views/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","node_modules/react-swipeable-views/node_modules/@babel/runtime/helpers/classCallCheck.js","node_modules/react-swipeable-views/node_modules/@babel/runtime/helpers/createClass.js","node_modules/react-swipeable-views/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","node_modules/react-swipeable-views/node_modules/@babel/runtime/helpers/typeof.js","node_modules/react-swipeable-views/node_modules/@babel/runtime/helpers/assertThisInitialized.js","node_modules/react-swipeable-views/node_modules/@babel/runtime/helpers/getPrototypeOf.js","node_modules/react-swipeable-views/node_modules/@babel/runtime/helpers/inherits.js","node_modules/react-swipeable-views/node_modules/@babel/runtime/helpers/setPrototypeOf.js","node_modules/react-swipeable-views/node_modules/prop-types/index.js","node_modules/react-swipeable-views/node_modules/prop-types/factoryWithThrowingShims.js","node_modules/react-swipeable-views/node_modules/prop-types/lib/ReactPropTypesSecret.js","node_modules/warning/warning.js","node_modules/dom-helpers/transition/properties.js","node_modules/dom-helpers/node_modules/@babel/runtime/helpers/interopRequireDefault.js","node_modules/dom-helpers/util/inDOM.js","node_modules/dom-helpers/events/on.js","node_modules/dom-helpers/events/off.js","node_modules/react-swipeable-views-core/lib/index.js","node_modules/react-swipeable-views-core/node_modules/@babel/runtime/helpers/interopRequireDefault.js","node_modules/react-swipeable-views-core/lib/checkIndexBounds.js","node_modules/react-swipeable-views-core/lib/computeIndex.js","node_modules/react-swipeable-views-core/lib/constant.js","node_modules/react-swipeable-views-core/lib/getDisplaySameSlide.js","node_modules/react-swipeable-views-core/lib/mod.js","node_modules/@mui/icons-material/ArrowBack.js","node_modules/@mui/icons-material/esm/Close.js","node_modules/@mui/icons-material/esm/Add.js","src/components/speedMenu/SpeedMenu.js","node_modules/@mui/material/SpeedDial/SpeedDial.js","node_modules/@mui/material/Zoom/Zoom.js","node_modules/@mui/material/SpeedDial/speedDialClasses.js","node_modules/@mui/material/SpeedDialAction/SpeedDialAction.js","node_modules/@mui/material/Tooltip/Tooltip.js","node_modules/@mui/material/Popper/Popper.js","node_modules/@mui/base/PopperUnstyled/PopperUnstyled.js","node_modules/@popperjs/core/lib/popper.js","node_modules/@popperjs/core/lib/createPopper.js","node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","node_modules/@popperjs/core/lib/dom-utils/getWindow.js","node_modules/@popperjs/core/lib/utils/math.js","node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","node_modules/@popperjs/core/lib/utils/orderModifiers.js","node_modules/@popperjs/core/lib/enums.js","node_modules/@popperjs/core/lib/utils/debounce.js","node_modules/@popperjs/core/lib/utils/mergeByName.js","node_modules/@popperjs/core/lib/modifiers/eventListeners.js","node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","node_modules/@popperjs/core/lib/utils/computeOffsets.js","node_modules/@popperjs/core/lib/utils/getBasePlacement.js","node_modules/@popperjs/core/lib/utils/getVariation.js","node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","node_modules/@popperjs/core/lib/modifiers/computeStyles.js","node_modules/@popperjs/core/lib/modifiers/applyStyles.js","node_modules/@popperjs/core/lib/modifiers/offset.js","node_modules/@popperjs/core/lib/modifiers/flip.js","node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","node_modules/@popperjs/core/lib/utils/detectOverflow.js","node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","node_modules/@popperjs/core/lib/dom-utils/contains.js","node_modules/@popperjs/core/lib/utils/rectToClientRect.js","node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","node_modules/@popperjs/core/lib/utils/expandToHashMap.js","node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","node_modules/@popperjs/core/lib/utils/getAltAxis.js","node_modules/@popperjs/core/lib/utils/within.js","node_modules/@popperjs/core/lib/modifiers/arrow.js","node_modules/@popperjs/core/lib/modifiers/hide.js","node_modules/@mui/material/utils/useId.js","node_modules/@mui/material/Tooltip/tooltipClasses.js","node_modules/@mui/material/SpeedDialAction/speedDialActionClasses.js","node_modules/@mui/material/FormGroup/FormGroup.js","node_modules/@mui/material/FormGroup/formGroupClasses.js","node_modules/@mui/material/Link/Link.js","node_modules/@mui/material/Link/linkClasses.js","node_modules/@mui/icons-material/esm/Business.js","node_modules/@mui/icons-material/esm/Group.js","node_modules/@mui/icons-material/esm/Layers.js","node_modules/@mui/icons-material/esm/ArrowBack.js","node_modules/@mui/material/ListSubheader/ListSubheader.js","node_modules/@mui/material/ListSubheader/listSubheaderClasses.js","node_modules/@mui/icons-material/esm/Person.js","node_modules/@mui/icons-material/esm/Delete.js","src/components/layout/LayoutContent.js","node_modules/react-transition-group/esm/CSSTransition.js","node_modules/react-transition-group/node_modules/@babel/runtime/helpers/esm/extends.js","node_modules/react-transition-group/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","node_modules/react-transition-group/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","node_modules/dom-helpers/class/addClass.js","node_modules/dom-helpers/class/hasClass.js","node_modules/dom-helpers/class/removeClass.js","node_modules/react-transition-group/esm/Transition.js","node_modules/react-transition-group/esm/config.js","node_modules/react-transition-group/esm/TransitionGroupContext.js","node_modules/react-transition-group/esm/TransitionGroup.js","node_modules/react-transition-group/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","node_modules/react-transition-group/esm/utils/ChildMapping.js","src/components/layout/LayoutPanel.js","src/components/sidebar/SidebarToggle.js","node_modules/@mui/icons-material/esm/Menu.js","src/components/editor/FeatureListContext.js","node_modules/@parcel/runtime-js/lib/runtime-4f492c259fcaeb3d.js","node_modules/@parcel/runtime-js/lib/runtime-a85dae64e986a0ff.js","node_modules/@parcel/runtime-js/lib/runtime-7946f79e1096740a.js","node_modules/@parcel/runtime-js/lib/runtime-14ec8dfcc82abcb5.js","node_modules/@parcel/runtime-js/lib/runtime-a3a01a312c235097.js","node_modules/@mui/material/MobileStepper/MobileStepper.js","node_modules/@mui/material/LinearProgress/LinearProgress.js","node_modules/@mui/material/LinearProgress/linearProgressClasses.js","node_modules/@mui/material/MobileStepper/mobileStepperClasses.js","node_modules/@mui/icons-material/CheckOutlined.js","node_modules/@mui/icons-material/Clear.js","node_modules/@mui/material/Autocomplete/Autocomplete.js","node_modules/@mui/base/AutocompleteUnstyled/useAutocomplete.js","node_modules/@mui/material/Chip/Chip.js","node_modules/@mui/material/internal/svg-icons/Cancel.js","node_modules/@mui/material/Chip/chipClasses.js","node_modules/@mui/material/internal/svg-icons/Close.js","node_modules/@mui/material/Autocomplete/autocompleteClasses.js","node_modules/@mui/material/InputAdornment/InputAdornment.js","node_modules/@mui/material/InputAdornment/inputAdornmentClasses.js","node_modules/@mui/material/Radio/Radio.js","node_modules/@mui/material/Radio/RadioButtonIcon.js","node_modules/@mui/material/internal/svg-icons/RadioButtonUnchecked.js","node_modules/@mui/material/internal/svg-icons/RadioButtonChecked.js","node_modules/@mui/material/utils/createChainedFunction.js","node_modules/@mui/material/RadioGroup/useRadioGroup.js","node_modules/@mui/material/RadioGroup/RadioGroupContext.js","node_modules/@mui/material/Radio/radioClasses.js","node_modules/@mui/icons-material/CheckCircleOutline.js","node_modules/@mui/icons-material/KeyboardArrowLeft.js","node_modules/@mui/icons-material/KeyboardArrowRight.js","src/lib/useInterval.js","src/index.js","node_modules/react-dom/client.js","node_modules/@mui/material/CssBaseline/CssBaseline.js","src/theme.js","node_modules/@parcel/runtime-js/lib/runtime-fa3983d81db56653.js","node_modules/@parcel/runtime-js/lib/runtime-3935ea6abcfe56eb.js","src/KeyboardShortcuts.js","src/NotificationBar.js","src/App.js","src/components/PrivateRoute.js","src/pages/status/Status.js","node_modules/@mui/icons-material/esm/CheckCircleOutline.js","node_modules/@mui/icons-material/esm/ErrorOutline.js","src/pages/auth/Auth.js","src/components/user/SignIn.js","node_modules/@parcel/runtime-js/lib/runtime-1bea634cf23a8d60.js","src/ProtectedApp.js","src/Demo.js","src/components/feedback/FeedbcakForm.js","node_modules/@mui/icons-material/AttachFile.js","node_modules/@mui/icons-material/BugReportOutlined.js","node_modules/@mui/icons-material/FiberManualRecord.js","src/components/document/DocumentSignModal.js","src/components/project/ProjectPicker.js","node_modules/react-swipeable-views/lib/index.js","src/components/project/ProjectSpeedDial.js","node_modules/@mui/icons-material/esm/Check.js","node_modules/@mui/icons-material/esm/PlaylistAdd.js","src/components/sidebar/SideBar.js","src/components/sidebar/AddAccount.js","src/components/sidebar/MenuList.js","node_modules/@mui/icons-material/esm/BarChart.js","node_modules/@mui/icons-material/esm/FeedbackOutlined.js","node_modules/@mui/icons-material/esm/Notes.js","node_modules/@mui/icons-material/esm/WorkOutline.js","src/components/sidebar/ProfilePicker.js","src/components/account/AccountManager.js","src/components/account/AccountList.js","src/components/account/AccountSettings.js","src/pages/onboarding/Onboarding.js","node_modules/@mui/material/RadioGroup/RadioGroup.js","node_modules/@mui/icons-material/MailOutline.js","node_modules/@mui/icons-material/KeyboardDoubleArrowRight.js","node_modules/@mui/icons-material/KeyboardDoubleArrowLeft.js","node_modules/@parcel/runtime-js/lib/runtime-3d251cb5dc06965c.js","node_modules/@parcel/runtime-js/lib/runtime-4cb01c3568ba16d0.js","src/Trackers.js"],"sourcesContent":["\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\n var $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n \nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true, configurable: true});\n}\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n }\n });\n });\n\n return dest;\n}\n\nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequire3fab\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequire3fab\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nparcelRegister(\"4x3bm\", function(module, exports) {\n\"use strict\";\n\nmodule.exports = (parcelRequire(\"ifLAN\"));\n\n});\nparcelRegister(\"ifLAN\", function(module, exports) {\n\n$parcel$export(module.exports, \"Fragment\", function () { return $d49e8b922d581d6f$export$ffb0004e005737fa; }, function (v) { return $d49e8b922d581d6f$export$ffb0004e005737fa = v; });\n$parcel$export(module.exports, \"jsx\", function () { return $d49e8b922d581d6f$export$34b9dba7ce09269b; }, function (v) { return $d49e8b922d581d6f$export$34b9dba7ce09269b = v; });\n$parcel$export(module.exports, \"jsxs\", function () { return $d49e8b922d581d6f$export$25062201e9e25d76; }, function (v) { return $d49e8b922d581d6f$export$25062201e9e25d76 = v; });\n/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */ var $d49e8b922d581d6f$export$ffb0004e005737fa;\nvar $d49e8b922d581d6f$export$34b9dba7ce09269b;\nvar $d49e8b922d581d6f$export$25062201e9e25d76;\n\"use strict\";\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\nvar $d49e8b922d581d6f$var$k = Symbol.for(\"react.element\"), $d49e8b922d581d6f$var$l = Symbol.for(\"react.fragment\"), $d49e8b922d581d6f$var$m = Object.prototype.hasOwnProperty, $d49e8b922d581d6f$var$n = $70fFQ.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, $d49e8b922d581d6f$var$p = {\n key: !0,\n ref: !0,\n __self: !0,\n __source: !0\n};\nfunction $d49e8b922d581d6f$var$q(c, a, g) {\n var b, d = {}, e = null, h = null;\n void 0 !== g && (e = \"\" + g);\n void 0 !== a.key && (e = \"\" + a.key);\n void 0 !== a.ref && (h = a.ref);\n for(b in a)$d49e8b922d581d6f$var$m.call(a, b) && !$d49e8b922d581d6f$var$p.hasOwnProperty(b) && (d[b] = a[b]);\n if (c && c.defaultProps) for(b in a = c.defaultProps, a)void 0 === d[b] && (d[b] = a[b]);\n return {\n $$typeof: $d49e8b922d581d6f$var$k,\n type: c,\n key: e,\n ref: h,\n props: d,\n _owner: $d49e8b922d581d6f$var$n.current\n };\n}\n$d49e8b922d581d6f$export$ffb0004e005737fa = $d49e8b922d581d6f$var$l;\n$d49e8b922d581d6f$export$34b9dba7ce09269b = $d49e8b922d581d6f$var$q;\n$d49e8b922d581d6f$export$25062201e9e25d76 = $d49e8b922d581d6f$var$q;\n\n});\nparcelRegister(\"70fFQ\", function(module, exports) {\n\"use strict\";\n\nmodule.exports = (parcelRequire(\"hjxY2\"));\n\n});\nparcelRegister(\"hjxY2\", function(module, exports) {\n\n$parcel$export(module.exports, \"Children\", function () { return $c9ae8f3ccfa82d2b$export$dca3b0875bd9a954; }, function (v) { return $c9ae8f3ccfa82d2b$export$dca3b0875bd9a954 = v; });\n$parcel$export(module.exports, \"Component\", function () { return $c9ae8f3ccfa82d2b$export$16fa2f45be04daa8; }, function (v) { return $c9ae8f3ccfa82d2b$export$16fa2f45be04daa8 = v; });\n$parcel$export(module.exports, \"Fragment\", function () { return $c9ae8f3ccfa82d2b$export$ffb0004e005737fa; }, function (v) { return $c9ae8f3ccfa82d2b$export$ffb0004e005737fa = v; });\n$parcel$export(module.exports, \"Profiler\", function () { return $c9ae8f3ccfa82d2b$export$e2c29f18771995cb; }, function (v) { return $c9ae8f3ccfa82d2b$export$e2c29f18771995cb = v; });\n$parcel$export(module.exports, \"PureComponent\", function () { return $c9ae8f3ccfa82d2b$export$221d75b3f55bb0bd; }, function (v) { return $c9ae8f3ccfa82d2b$export$221d75b3f55bb0bd = v; });\n$parcel$export(module.exports, \"StrictMode\", function () { return $c9ae8f3ccfa82d2b$export$5f8d39834fd61797; }, function (v) { return $c9ae8f3ccfa82d2b$export$5f8d39834fd61797 = v; });\n$parcel$export(module.exports, \"Suspense\", function () { return $c9ae8f3ccfa82d2b$export$74bf444e3cd11ea5; }, function (v) { return $c9ae8f3ccfa82d2b$export$74bf444e3cd11ea5 = v; });\n$parcel$export(module.exports, \"__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\", function () { return $c9ae8f3ccfa82d2b$export$ae55be85d98224ed; }, function (v) { return $c9ae8f3ccfa82d2b$export$ae55be85d98224ed = v; });\n$parcel$export(module.exports, \"cloneElement\", function () { return $c9ae8f3ccfa82d2b$export$e530037191fcd5d7; }, function (v) { return $c9ae8f3ccfa82d2b$export$e530037191fcd5d7 = v; });\n$parcel$export(module.exports, \"createContext\", function () { return $c9ae8f3ccfa82d2b$export$fd42f52fd3ae1109; }, function (v) { return $c9ae8f3ccfa82d2b$export$fd42f52fd3ae1109 = v; });\n$parcel$export(module.exports, \"createElement\", function () { return $c9ae8f3ccfa82d2b$export$c8a8987d4410bf2d; }, function (v) { return $c9ae8f3ccfa82d2b$export$c8a8987d4410bf2d = v; });\n$parcel$export(module.exports, \"createFactory\", function () { return $c9ae8f3ccfa82d2b$export$d38cd72104c1f0e9; }, function (v) { return $c9ae8f3ccfa82d2b$export$d38cd72104c1f0e9 = v; });\n$parcel$export(module.exports, \"createRef\", function () { return $c9ae8f3ccfa82d2b$export$7d1e3a5e95ceca43; }, function (v) { return $c9ae8f3ccfa82d2b$export$7d1e3a5e95ceca43 = v; });\n$parcel$export(module.exports, \"forwardRef\", function () { return $c9ae8f3ccfa82d2b$export$257a8862b851cb5b; }, function (v) { return $c9ae8f3ccfa82d2b$export$257a8862b851cb5b = v; });\n$parcel$export(module.exports, \"isValidElement\", function () { return $c9ae8f3ccfa82d2b$export$a8257692ac88316c; }, function (v) { return $c9ae8f3ccfa82d2b$export$a8257692ac88316c = v; });\n$parcel$export(module.exports, \"lazy\", function () { return $c9ae8f3ccfa82d2b$export$488013bae63b21da; }, function (v) { return $c9ae8f3ccfa82d2b$export$488013bae63b21da = v; });\n$parcel$export(module.exports, \"memo\", function () { return $c9ae8f3ccfa82d2b$export$7c73462e0d25e514; }, function (v) { return $c9ae8f3ccfa82d2b$export$7c73462e0d25e514 = v; });\n$parcel$export(module.exports, \"startTransition\", function () { return $c9ae8f3ccfa82d2b$export$7568632d0d33d16d; }, function (v) { return $c9ae8f3ccfa82d2b$export$7568632d0d33d16d = v; });\n$parcel$export(module.exports, \"unstable_act\", function () { return $c9ae8f3ccfa82d2b$export$88948ce120ea2619; }, function (v) { return $c9ae8f3ccfa82d2b$export$88948ce120ea2619 = v; });\n$parcel$export(module.exports, \"useCallback\", function () { return $c9ae8f3ccfa82d2b$export$35808ee640e87ca7; }, function (v) { return $c9ae8f3ccfa82d2b$export$35808ee640e87ca7 = v; });\n$parcel$export(module.exports, \"useContext\", function () { return $c9ae8f3ccfa82d2b$export$fae74005e78b1a27; }, function (v) { return $c9ae8f3ccfa82d2b$export$fae74005e78b1a27 = v; });\n$parcel$export(module.exports, \"useDebugValue\", function () { return $c9ae8f3ccfa82d2b$export$dc8fbce3eb94dc1e; }, function (v) { return $c9ae8f3ccfa82d2b$export$dc8fbce3eb94dc1e = v; });\n$parcel$export(module.exports, \"useDeferredValue\", function () { return $c9ae8f3ccfa82d2b$export$6a7bc4e911dc01cf; }, function (v) { return $c9ae8f3ccfa82d2b$export$6a7bc4e911dc01cf = v; });\n$parcel$export(module.exports, \"useEffect\", function () { return $c9ae8f3ccfa82d2b$export$6d9c69b0de29b591; }, function (v) { return $c9ae8f3ccfa82d2b$export$6d9c69b0de29b591 = v; });\n$parcel$export(module.exports, \"useId\", function () { return $c9ae8f3ccfa82d2b$export$f680877a34711e37; }, function (v) { return $c9ae8f3ccfa82d2b$export$f680877a34711e37 = v; });\n$parcel$export(module.exports, \"useImperativeHandle\", function () { return $c9ae8f3ccfa82d2b$export$d5a552a76deda3c2; }, function (v) { return $c9ae8f3ccfa82d2b$export$d5a552a76deda3c2 = v; });\n$parcel$export(module.exports, \"useInsertionEffect\", function () { return $c9ae8f3ccfa82d2b$export$aaabe4eda9ed9969; }, function (v) { return $c9ae8f3ccfa82d2b$export$aaabe4eda9ed9969 = v; });\n$parcel$export(module.exports, \"useLayoutEffect\", function () { return $c9ae8f3ccfa82d2b$export$e5c5a5f917a5871c; }, function (v) { return $c9ae8f3ccfa82d2b$export$e5c5a5f917a5871c = v; });\n$parcel$export(module.exports, \"useMemo\", function () { return $c9ae8f3ccfa82d2b$export$1538c33de8887b59; }, function (v) { return $c9ae8f3ccfa82d2b$export$1538c33de8887b59 = v; });\n$parcel$export(module.exports, \"useReducer\", function () { return $c9ae8f3ccfa82d2b$export$13e3392192263954; }, function (v) { return $c9ae8f3ccfa82d2b$export$13e3392192263954 = v; });\n$parcel$export(module.exports, \"useRef\", function () { return $c9ae8f3ccfa82d2b$export$b8f5890fc79d6aca; }, function (v) { return $c9ae8f3ccfa82d2b$export$b8f5890fc79d6aca = v; });\n$parcel$export(module.exports, \"useState\", function () { return $c9ae8f3ccfa82d2b$export$60241385465d0a34; }, function (v) { return $c9ae8f3ccfa82d2b$export$60241385465d0a34 = v; });\n$parcel$export(module.exports, \"useSyncExternalStore\", function () { return $c9ae8f3ccfa82d2b$export$306c0aa65ff9ec16; }, function (v) { return $c9ae8f3ccfa82d2b$export$306c0aa65ff9ec16 = v; });\n$parcel$export(module.exports, \"useTransition\", function () { return $c9ae8f3ccfa82d2b$export$7b286972b8d8ccbf; }, function (v) { return $c9ae8f3ccfa82d2b$export$7b286972b8d8ccbf = v; });\n$parcel$export(module.exports, \"version\", function () { return $c9ae8f3ccfa82d2b$export$83d89fbfd8236492; }, function (v) { return $c9ae8f3ccfa82d2b$export$83d89fbfd8236492 = v; });\n/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */ var $c9ae8f3ccfa82d2b$export$dca3b0875bd9a954;\nvar $c9ae8f3ccfa82d2b$export$16fa2f45be04daa8;\nvar $c9ae8f3ccfa82d2b$export$ffb0004e005737fa;\nvar $c9ae8f3ccfa82d2b$export$e2c29f18771995cb;\nvar $c9ae8f3ccfa82d2b$export$221d75b3f55bb0bd;\nvar $c9ae8f3ccfa82d2b$export$5f8d39834fd61797;\nvar $c9ae8f3ccfa82d2b$export$74bf444e3cd11ea5;\nvar $c9ae8f3ccfa82d2b$export$ae55be85d98224ed;\nvar $c9ae8f3ccfa82d2b$export$e530037191fcd5d7;\nvar $c9ae8f3ccfa82d2b$export$fd42f52fd3ae1109;\nvar $c9ae8f3ccfa82d2b$export$c8a8987d4410bf2d;\nvar $c9ae8f3ccfa82d2b$export$d38cd72104c1f0e9;\nvar $c9ae8f3ccfa82d2b$export$7d1e3a5e95ceca43;\nvar $c9ae8f3ccfa82d2b$export$257a8862b851cb5b;\nvar $c9ae8f3ccfa82d2b$export$a8257692ac88316c;\nvar $c9ae8f3ccfa82d2b$export$488013bae63b21da;\nvar $c9ae8f3ccfa82d2b$export$7c73462e0d25e514;\nvar $c9ae8f3ccfa82d2b$export$7568632d0d33d16d;\nvar $c9ae8f3ccfa82d2b$export$88948ce120ea2619;\nvar $c9ae8f3ccfa82d2b$export$35808ee640e87ca7;\nvar $c9ae8f3ccfa82d2b$export$fae74005e78b1a27;\nvar $c9ae8f3ccfa82d2b$export$dc8fbce3eb94dc1e;\nvar $c9ae8f3ccfa82d2b$export$6a7bc4e911dc01cf;\nvar $c9ae8f3ccfa82d2b$export$6d9c69b0de29b591;\nvar $c9ae8f3ccfa82d2b$export$f680877a34711e37;\nvar $c9ae8f3ccfa82d2b$export$d5a552a76deda3c2;\nvar $c9ae8f3ccfa82d2b$export$aaabe4eda9ed9969;\nvar $c9ae8f3ccfa82d2b$export$e5c5a5f917a5871c;\nvar $c9ae8f3ccfa82d2b$export$1538c33de8887b59;\nvar $c9ae8f3ccfa82d2b$export$13e3392192263954;\nvar $c9ae8f3ccfa82d2b$export$b8f5890fc79d6aca;\nvar $c9ae8f3ccfa82d2b$export$60241385465d0a34;\nvar $c9ae8f3ccfa82d2b$export$306c0aa65ff9ec16;\nvar $c9ae8f3ccfa82d2b$export$7b286972b8d8ccbf;\nvar $c9ae8f3ccfa82d2b$export$83d89fbfd8236492;\n\"use strict\";\nvar $c9ae8f3ccfa82d2b$var$l = Symbol.for(\"react.element\"), $c9ae8f3ccfa82d2b$var$n = Symbol.for(\"react.portal\"), $c9ae8f3ccfa82d2b$var$p = Symbol.for(\"react.fragment\"), $c9ae8f3ccfa82d2b$var$q = Symbol.for(\"react.strict_mode\"), $c9ae8f3ccfa82d2b$var$r = Symbol.for(\"react.profiler\"), $c9ae8f3ccfa82d2b$var$t = Symbol.for(\"react.provider\"), $c9ae8f3ccfa82d2b$var$u = Symbol.for(\"react.context\"), $c9ae8f3ccfa82d2b$var$v = Symbol.for(\"react.forward_ref\"), $c9ae8f3ccfa82d2b$var$w = Symbol.for(\"react.suspense\"), $c9ae8f3ccfa82d2b$var$x = Symbol.for(\"react.memo\"), $c9ae8f3ccfa82d2b$var$y = Symbol.for(\"react.lazy\"), $c9ae8f3ccfa82d2b$var$z = Symbol.iterator;\nfunction $c9ae8f3ccfa82d2b$var$A(a) {\n if (null === a || \"object\" !== typeof a) return null;\n a = $c9ae8f3ccfa82d2b$var$z && a[$c9ae8f3ccfa82d2b$var$z] || a[\"@@iterator\"];\n return \"function\" === typeof a ? a : null;\n}\nvar $c9ae8f3ccfa82d2b$var$B = {\n isMounted: function() {\n return !1;\n },\n enqueueForceUpdate: function() {},\n enqueueReplaceState: function() {},\n enqueueSetState: function() {}\n}, $c9ae8f3ccfa82d2b$var$C = Object.assign, $c9ae8f3ccfa82d2b$var$D = {};\nfunction $c9ae8f3ccfa82d2b$var$E(a, b, e) {\n this.props = a;\n this.context = b;\n this.refs = $c9ae8f3ccfa82d2b$var$D;\n this.updater = e || $c9ae8f3ccfa82d2b$var$B;\n}\n$c9ae8f3ccfa82d2b$var$E.prototype.isReactComponent = {};\n$c9ae8f3ccfa82d2b$var$E.prototype.setState = function(a, b) {\n if (\"object\" !== typeof a && \"function\" !== typeof a && null != a) throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");\n this.updater.enqueueSetState(this, a, b, \"setState\");\n};\n$c9ae8f3ccfa82d2b$var$E.prototype.forceUpdate = function(a) {\n this.updater.enqueueForceUpdate(this, a, \"forceUpdate\");\n};\nfunction $c9ae8f3ccfa82d2b$var$F() {}\n$c9ae8f3ccfa82d2b$var$F.prototype = $c9ae8f3ccfa82d2b$var$E.prototype;\nfunction $c9ae8f3ccfa82d2b$var$G(a, b, e) {\n this.props = a;\n this.context = b;\n this.refs = $c9ae8f3ccfa82d2b$var$D;\n this.updater = e || $c9ae8f3ccfa82d2b$var$B;\n}\nvar $c9ae8f3ccfa82d2b$var$H = $c9ae8f3ccfa82d2b$var$G.prototype = new $c9ae8f3ccfa82d2b$var$F;\n$c9ae8f3ccfa82d2b$var$H.constructor = $c9ae8f3ccfa82d2b$var$G;\n$c9ae8f3ccfa82d2b$var$C($c9ae8f3ccfa82d2b$var$H, $c9ae8f3ccfa82d2b$var$E.prototype);\n$c9ae8f3ccfa82d2b$var$H.isPureReactComponent = !0;\nvar $c9ae8f3ccfa82d2b$var$I = Array.isArray, $c9ae8f3ccfa82d2b$var$J = Object.prototype.hasOwnProperty, $c9ae8f3ccfa82d2b$var$K = {\n current: null\n}, $c9ae8f3ccfa82d2b$var$L = {\n key: !0,\n ref: !0,\n __self: !0,\n __source: !0\n};\nfunction $c9ae8f3ccfa82d2b$var$M(a, b, e) {\n var d, c = {}, k = null, h = null;\n if (null != b) for(d in void 0 !== b.ref && (h = b.ref), void 0 !== b.key && (k = \"\" + b.key), b)$c9ae8f3ccfa82d2b$var$J.call(b, d) && !$c9ae8f3ccfa82d2b$var$L.hasOwnProperty(d) && (c[d] = b[d]);\n var g = arguments.length - 2;\n if (1 === g) c.children = e;\n else if (1 < g) {\n for(var f = Array(g), m = 0; m < g; m++)f[m] = arguments[m + 2];\n c.children = f;\n }\n if (a && a.defaultProps) for(d in g = a.defaultProps, g)void 0 === c[d] && (c[d] = g[d]);\n return {\n $$typeof: $c9ae8f3ccfa82d2b$var$l,\n type: a,\n key: k,\n ref: h,\n props: c,\n _owner: $c9ae8f3ccfa82d2b$var$K.current\n };\n}\nfunction $c9ae8f3ccfa82d2b$var$N(a, b) {\n return {\n $$typeof: $c9ae8f3ccfa82d2b$var$l,\n type: a.type,\n key: b,\n ref: a.ref,\n props: a.props,\n _owner: a._owner\n };\n}\nfunction $c9ae8f3ccfa82d2b$var$O(a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === $c9ae8f3ccfa82d2b$var$l;\n}\nfunction $c9ae8f3ccfa82d2b$var$escape(a) {\n var b = {\n \"=\": \"=0\",\n \":\": \"=2\"\n };\n return \"$\" + a.replace(/[=:]/g, function(a) {\n return b[a];\n });\n}\nvar $c9ae8f3ccfa82d2b$var$P = /\\/+/g;\nfunction $c9ae8f3ccfa82d2b$var$Q(a, b) {\n return \"object\" === typeof a && null !== a && null != a.key ? $c9ae8f3ccfa82d2b$var$escape(\"\" + a.key) : b.toString(36);\n}\nfunction $c9ae8f3ccfa82d2b$var$R(a, b, e, d, c) {\n var k = typeof a;\n if (\"undefined\" === k || \"boolean\" === k) a = null;\n var h = !1;\n if (null === a) h = !0;\n else switch(k){\n case \"string\":\n case \"number\":\n h = !0;\n break;\n case \"object\":\n switch(a.$$typeof){\n case $c9ae8f3ccfa82d2b$var$l:\n case $c9ae8f3ccfa82d2b$var$n:\n h = !0;\n }\n }\n if (h) return h = a, c = c(h), a = \"\" === d ? \".\" + $c9ae8f3ccfa82d2b$var$Q(h, 0) : d, $c9ae8f3ccfa82d2b$var$I(c) ? (e = \"\", null != a && (e = a.replace($c9ae8f3ccfa82d2b$var$P, \"$&/\") + \"/\"), $c9ae8f3ccfa82d2b$var$R(c, b, e, \"\", function(a) {\n return a;\n })) : null != c && ($c9ae8f3ccfa82d2b$var$O(c) && (c = $c9ae8f3ccfa82d2b$var$N(c, e + (!c.key || h && h.key === c.key ? \"\" : (\"\" + c.key).replace($c9ae8f3ccfa82d2b$var$P, \"$&/\") + \"/\") + a)), b.push(c)), 1;\n h = 0;\n d = \"\" === d ? \".\" : d + \":\";\n if ($c9ae8f3ccfa82d2b$var$I(a)) for(var g = 0; g < a.length; g++){\n k = a[g];\n var f = d + $c9ae8f3ccfa82d2b$var$Q(k, g);\n h += $c9ae8f3ccfa82d2b$var$R(k, b, e, f, c);\n }\n else if (f = $c9ae8f3ccfa82d2b$var$A(a), \"function\" === typeof f) for(a = f.call(a), g = 0; !(k = a.next()).done;)k = k.value, f = d + $c9ae8f3ccfa82d2b$var$Q(k, g++), h += $c9ae8f3ccfa82d2b$var$R(k, b, e, f, c);\n else if (\"object\" === k) throw b = String(a), Error(\"Objects are not valid as a React child (found: \" + (\"[object Object]\" === b ? \"object with keys {\" + Object.keys(a).join(\", \") + \"}\" : b) + \"). If you meant to render a collection of children, use an array instead.\");\n return h;\n}\nfunction $c9ae8f3ccfa82d2b$var$S(a, b, e) {\n if (null == a) return a;\n var d = [], c = 0;\n $c9ae8f3ccfa82d2b$var$R(a, d, \"\", \"\", function(a) {\n return b.call(e, a, c++);\n });\n return d;\n}\nfunction $c9ae8f3ccfa82d2b$var$T(a) {\n if (-1 === a._status) {\n var b = a._result;\n b = b();\n b.then(function(b) {\n if (0 === a._status || -1 === a._status) a._status = 1, a._result = b;\n }, function(b) {\n if (0 === a._status || -1 === a._status) a._status = 2, a._result = b;\n });\n -1 === a._status && (a._status = 0, a._result = b);\n }\n if (1 === a._status) return a._result.default;\n throw a._result;\n}\nvar $c9ae8f3ccfa82d2b$var$U = {\n current: null\n}, $c9ae8f3ccfa82d2b$var$V = {\n transition: null\n}, $c9ae8f3ccfa82d2b$var$W = {\n ReactCurrentDispatcher: $c9ae8f3ccfa82d2b$var$U,\n ReactCurrentBatchConfig: $c9ae8f3ccfa82d2b$var$V,\n ReactCurrentOwner: $c9ae8f3ccfa82d2b$var$K\n};\n$c9ae8f3ccfa82d2b$export$dca3b0875bd9a954 = {\n map: $c9ae8f3ccfa82d2b$var$S,\n forEach: function(a, b, e) {\n $c9ae8f3ccfa82d2b$var$S(a, function() {\n b.apply(this, arguments);\n }, e);\n },\n count: function(a) {\n var b = 0;\n $c9ae8f3ccfa82d2b$var$S(a, function() {\n b++;\n });\n return b;\n },\n toArray: function(a) {\n return $c9ae8f3ccfa82d2b$var$S(a, function(a) {\n return a;\n }) || [];\n },\n only: function(a) {\n if (!$c9ae8f3ccfa82d2b$var$O(a)) throw Error(\"React.Children.only expected to receive a single React element child.\");\n return a;\n }\n};\n$c9ae8f3ccfa82d2b$export$16fa2f45be04daa8 = $c9ae8f3ccfa82d2b$var$E;\n$c9ae8f3ccfa82d2b$export$ffb0004e005737fa = $c9ae8f3ccfa82d2b$var$p;\n$c9ae8f3ccfa82d2b$export$e2c29f18771995cb = $c9ae8f3ccfa82d2b$var$r;\n$c9ae8f3ccfa82d2b$export$221d75b3f55bb0bd = $c9ae8f3ccfa82d2b$var$G;\n$c9ae8f3ccfa82d2b$export$5f8d39834fd61797 = $c9ae8f3ccfa82d2b$var$q;\n$c9ae8f3ccfa82d2b$export$74bf444e3cd11ea5 = $c9ae8f3ccfa82d2b$var$w;\n$c9ae8f3ccfa82d2b$export$ae55be85d98224ed = $c9ae8f3ccfa82d2b$var$W;\n$c9ae8f3ccfa82d2b$export$e530037191fcd5d7 = function(a, b, e) {\n if (null === a || void 0 === a) throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + a + \".\");\n var d = $c9ae8f3ccfa82d2b$var$C({}, a.props), c = a.key, k = a.ref, h = a._owner;\n if (null != b) {\n void 0 !== b.ref && (k = b.ref, h = $c9ae8f3ccfa82d2b$var$K.current);\n void 0 !== b.key && (c = \"\" + b.key);\n if (a.type && a.type.defaultProps) var g = a.type.defaultProps;\n for(f in b)$c9ae8f3ccfa82d2b$var$J.call(b, f) && !$c9ae8f3ccfa82d2b$var$L.hasOwnProperty(f) && (d[f] = void 0 === b[f] && void 0 !== g ? g[f] : b[f]);\n }\n var f = arguments.length - 2;\n if (1 === f) d.children = e;\n else if (1 < f) {\n g = Array(f);\n for(var m = 0; m < f; m++)g[m] = arguments[m + 2];\n d.children = g;\n }\n return {\n $$typeof: $c9ae8f3ccfa82d2b$var$l,\n type: a.type,\n key: c,\n ref: k,\n props: d,\n _owner: h\n };\n};\n$c9ae8f3ccfa82d2b$export$fd42f52fd3ae1109 = function(a) {\n a = {\n $$typeof: $c9ae8f3ccfa82d2b$var$u,\n _currentValue: a,\n _currentValue2: a,\n _threadCount: 0,\n Provider: null,\n Consumer: null,\n _defaultValue: null,\n _globalName: null\n };\n a.Provider = {\n $$typeof: $c9ae8f3ccfa82d2b$var$t,\n _context: a\n };\n return a.Consumer = a;\n};\n$c9ae8f3ccfa82d2b$export$c8a8987d4410bf2d = $c9ae8f3ccfa82d2b$var$M;\n$c9ae8f3ccfa82d2b$export$d38cd72104c1f0e9 = function(a) {\n var b = $c9ae8f3ccfa82d2b$var$M.bind(null, a);\n b.type = a;\n return b;\n};\n$c9ae8f3ccfa82d2b$export$7d1e3a5e95ceca43 = function() {\n return {\n current: null\n };\n};\n$c9ae8f3ccfa82d2b$export$257a8862b851cb5b = function(a) {\n return {\n $$typeof: $c9ae8f3ccfa82d2b$var$v,\n render: a\n };\n};\n$c9ae8f3ccfa82d2b$export$a8257692ac88316c = $c9ae8f3ccfa82d2b$var$O;\n$c9ae8f3ccfa82d2b$export$488013bae63b21da = function(a) {\n return {\n $$typeof: $c9ae8f3ccfa82d2b$var$y,\n _payload: {\n _status: -1,\n _result: a\n },\n _init: $c9ae8f3ccfa82d2b$var$T\n };\n};\n$c9ae8f3ccfa82d2b$export$7c73462e0d25e514 = function(a, b) {\n return {\n $$typeof: $c9ae8f3ccfa82d2b$var$x,\n type: a,\n compare: void 0 === b ? null : b\n };\n};\n$c9ae8f3ccfa82d2b$export$7568632d0d33d16d = function(a) {\n var b = $c9ae8f3ccfa82d2b$var$V.transition;\n $c9ae8f3ccfa82d2b$var$V.transition = {};\n try {\n a();\n } finally{\n $c9ae8f3ccfa82d2b$var$V.transition = b;\n }\n};\n$c9ae8f3ccfa82d2b$export$88948ce120ea2619 = function() {\n throw Error(\"act(...) is not supported in production builds of React.\");\n};\n$c9ae8f3ccfa82d2b$export$35808ee640e87ca7 = function(a, b) {\n return $c9ae8f3ccfa82d2b$var$U.current.useCallback(a, b);\n};\n$c9ae8f3ccfa82d2b$export$fae74005e78b1a27 = function(a) {\n return $c9ae8f3ccfa82d2b$var$U.current.useContext(a);\n};\n$c9ae8f3ccfa82d2b$export$dc8fbce3eb94dc1e = function() {};\n$c9ae8f3ccfa82d2b$export$6a7bc4e911dc01cf = function(a) {\n return $c9ae8f3ccfa82d2b$var$U.current.useDeferredValue(a);\n};\n$c9ae8f3ccfa82d2b$export$6d9c69b0de29b591 = function(a, b) {\n return $c9ae8f3ccfa82d2b$var$U.current.useEffect(a, b);\n};\n$c9ae8f3ccfa82d2b$export$f680877a34711e37 = function() {\n return $c9ae8f3ccfa82d2b$var$U.current.useId();\n};\n$c9ae8f3ccfa82d2b$export$d5a552a76deda3c2 = function(a, b, e) {\n return $c9ae8f3ccfa82d2b$var$U.current.useImperativeHandle(a, b, e);\n};\n$c9ae8f3ccfa82d2b$export$aaabe4eda9ed9969 = function(a, b) {\n return $c9ae8f3ccfa82d2b$var$U.current.useInsertionEffect(a, b);\n};\n$c9ae8f3ccfa82d2b$export$e5c5a5f917a5871c = function(a, b) {\n return $c9ae8f3ccfa82d2b$var$U.current.useLayoutEffect(a, b);\n};\n$c9ae8f3ccfa82d2b$export$1538c33de8887b59 = function(a, b) {\n return $c9ae8f3ccfa82d2b$var$U.current.useMemo(a, b);\n};\n$c9ae8f3ccfa82d2b$export$13e3392192263954 = function(a, b, e) {\n return $c9ae8f3ccfa82d2b$var$U.current.useReducer(a, b, e);\n};\n$c9ae8f3ccfa82d2b$export$b8f5890fc79d6aca = function(a) {\n return $c9ae8f3ccfa82d2b$var$U.current.useRef(a);\n};\n$c9ae8f3ccfa82d2b$export$60241385465d0a34 = function(a) {\n return $c9ae8f3ccfa82d2b$var$U.current.useState(a);\n};\n$c9ae8f3ccfa82d2b$export$306c0aa65ff9ec16 = function(a, b, e) {\n return $c9ae8f3ccfa82d2b$var$U.current.useSyncExternalStore(a, b, e);\n};\n$c9ae8f3ccfa82d2b$export$7b286972b8d8ccbf = function() {\n return $c9ae8f3ccfa82d2b$var$U.current.useTransition();\n};\n$c9ae8f3ccfa82d2b$export$83d89fbfd8236492 = \"18.1.0\";\n\n});\n\n\n\n\nparcelRegister(\"3glZ1\", function(module, exports) {\n\"use strict\";\nfunction $2603eb25b0423f2c$var$checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === \"undefined\" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== \"function\") return;\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE($2603eb25b0423f2c$var$checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n// DCE check should happen before ReactDOM bundle executes so that\n// DevTools can report bad minification during injection.\n$2603eb25b0423f2c$var$checkDCE();\n\nmodule.exports = (parcelRequire(\"ldfzr\"));\n\n});\nparcelRegister(\"ldfzr\", function(module, exports) {\n\n$parcel$export(module.exports, \"__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\", function () { return $f716e3e58d6e8629$export$ae55be85d98224ed; }, function (v) { return $f716e3e58d6e8629$export$ae55be85d98224ed = v; });\n$parcel$export(module.exports, \"createPortal\", function () { return $f716e3e58d6e8629$export$d39a5bbd09211389; }, function (v) { return $f716e3e58d6e8629$export$d39a5bbd09211389 = v; });\n$parcel$export(module.exports, \"createRoot\", function () { return $f716e3e58d6e8629$export$882461b6382ed46c; }, function (v) { return $f716e3e58d6e8629$export$882461b6382ed46c = v; });\n$parcel$export(module.exports, \"findDOMNode\", function () { return $f716e3e58d6e8629$export$466bfc07425424d5; }, function (v) { return $f716e3e58d6e8629$export$466bfc07425424d5 = v; });\n$parcel$export(module.exports, \"flushSync\", function () { return $f716e3e58d6e8629$export$cd75ccfd720a3cd4; }, function (v) { return $f716e3e58d6e8629$export$cd75ccfd720a3cd4 = v; });\n$parcel$export(module.exports, \"hydrate\", function () { return $f716e3e58d6e8629$export$fa8d919ba61d84db; }, function (v) { return $f716e3e58d6e8629$export$fa8d919ba61d84db = v; });\n$parcel$export(module.exports, \"hydrateRoot\", function () { return $f716e3e58d6e8629$export$757ceba2d55c277e; }, function (v) { return $f716e3e58d6e8629$export$757ceba2d55c277e = v; });\n$parcel$export(module.exports, \"render\", function () { return $f716e3e58d6e8629$export$b3890eb0ae9dca99; }, function (v) { return $f716e3e58d6e8629$export$b3890eb0ae9dca99 = v; });\n$parcel$export(module.exports, \"unmountComponentAtNode\", function () { return $f716e3e58d6e8629$export$502457920280e6be; }, function (v) { return $f716e3e58d6e8629$export$502457920280e6be = v; });\n$parcel$export(module.exports, \"unstable_batchedUpdates\", function () { return $f716e3e58d6e8629$export$c78a37762a8d58e1; }, function (v) { return $f716e3e58d6e8629$export$c78a37762a8d58e1 = v; });\n$parcel$export(module.exports, \"unstable_renderSubtreeIntoContainer\", function () { return $f716e3e58d6e8629$export$dc54d992c10e8a18; }, function (v) { return $f716e3e58d6e8629$export$dc54d992c10e8a18 = v; });\n$parcel$export(module.exports, \"version\", function () { return $f716e3e58d6e8629$export$83d89fbfd8236492; }, function (v) { return $f716e3e58d6e8629$export$83d89fbfd8236492 = v; });\n/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */ /*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/ var $f716e3e58d6e8629$export$ae55be85d98224ed;\nvar $f716e3e58d6e8629$export$d39a5bbd09211389;\nvar $f716e3e58d6e8629$export$882461b6382ed46c;\nvar $f716e3e58d6e8629$export$466bfc07425424d5;\nvar $f716e3e58d6e8629$export$cd75ccfd720a3cd4;\nvar $f716e3e58d6e8629$export$fa8d919ba61d84db;\nvar $f716e3e58d6e8629$export$757ceba2d55c277e;\nvar $f716e3e58d6e8629$export$b3890eb0ae9dca99;\nvar $f716e3e58d6e8629$export$502457920280e6be;\nvar $f716e3e58d6e8629$export$c78a37762a8d58e1;\nvar $f716e3e58d6e8629$export$dc54d992c10e8a18;\nvar $f716e3e58d6e8629$export$83d89fbfd8236492;\n\"use strict\";\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $c2cCr = parcelRequire(\"c2cCr\");\nfunction $f716e3e58d6e8629$var$p(a) {\n for(var b = \"https://reactjs.org/docs/error-decoder.html?invariant=\" + a, c = 1; c < arguments.length; c++)b += \"&args[]=\" + encodeURIComponent(arguments[c]);\n return \"Minified React error #\" + a + \"; visit \" + b + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\";\n}\nvar $f716e3e58d6e8629$var$da = new Set, $f716e3e58d6e8629$var$ea = {};\nfunction $f716e3e58d6e8629$var$fa(a, b) {\n $f716e3e58d6e8629$var$ha(a, b);\n $f716e3e58d6e8629$var$ha(a + \"Capture\", b);\n}\nfunction $f716e3e58d6e8629$var$ha(a, b) {\n $f716e3e58d6e8629$var$ea[a] = b;\n for(a = 0; a < b.length; a++)$f716e3e58d6e8629$var$da.add(b[a]);\n}\nvar $f716e3e58d6e8629$var$ia = !(\"undefined\" === typeof window || \"undefined\" === typeof window.document || \"undefined\" === typeof window.document.createElement), $f716e3e58d6e8629$var$ja = Object.prototype.hasOwnProperty, $f716e3e58d6e8629$var$ka = /^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/, $f716e3e58d6e8629$var$la = {}, $f716e3e58d6e8629$var$ma = {};\nfunction $f716e3e58d6e8629$var$na(a) {\n if ($f716e3e58d6e8629$var$ja.call($f716e3e58d6e8629$var$ma, a)) return !0;\n if ($f716e3e58d6e8629$var$ja.call($f716e3e58d6e8629$var$la, a)) return !1;\n if ($f716e3e58d6e8629$var$ka.test(a)) return $f716e3e58d6e8629$var$ma[a] = !0;\n $f716e3e58d6e8629$var$la[a] = !0;\n return !1;\n}\nfunction $f716e3e58d6e8629$var$oa(a, b, c, d) {\n if (null !== c && 0 === c.type) return !1;\n switch(typeof b){\n case \"function\":\n case \"symbol\":\n return !0;\n case \"boolean\":\n if (d) return !1;\n if (null !== c) return !c.acceptsBooleans;\n a = a.toLowerCase().slice(0, 5);\n return \"data-\" !== a && \"aria-\" !== a;\n default:\n return !1;\n }\n}\nfunction $f716e3e58d6e8629$var$pa(a, b, c, d) {\n if (null === b || \"undefined\" === typeof b || $f716e3e58d6e8629$var$oa(a, b, c, d)) return !0;\n if (d) return !1;\n if (null !== c) switch(c.type){\n case 3:\n return !b;\n case 4:\n return !1 === b;\n case 5:\n return isNaN(b);\n case 6:\n return isNaN(b) || 1 > b;\n }\n return !1;\n}\nfunction $f716e3e58d6e8629$var$t(a, b, c, d, e, f, g) {\n this.acceptsBooleans = 2 === b || 3 === b || 4 === b;\n this.attributeName = d;\n this.attributeNamespace = e;\n this.mustUseProperty = c;\n this.propertyName = a;\n this.type = b;\n this.sanitizeURL = f;\n this.removeEmptyString = g;\n}\nvar $f716e3e58d6e8629$var$z = {};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a) {\n $f716e3e58d6e8629$var$z[a] = new $f716e3e58d6e8629$var$t(a, 0, !1, a, null, !1, !1);\n});\n[\n [\n \"acceptCharset\",\n \"accept-charset\"\n ],\n [\n \"className\",\n \"class\"\n ],\n [\n \"htmlFor\",\n \"for\"\n ],\n [\n \"httpEquiv\",\n \"http-equiv\"\n ]\n].forEach(function(a) {\n var b = a[0];\n $f716e3e58d6e8629$var$z[b] = new $f716e3e58d6e8629$var$t(b, 1, !1, a[1], null, !1, !1);\n});\n[\n \"contentEditable\",\n \"draggable\",\n \"spellCheck\",\n \"value\"\n].forEach(function(a) {\n $f716e3e58d6e8629$var$z[a] = new $f716e3e58d6e8629$var$t(a, 2, !1, a.toLowerCase(), null, !1, !1);\n});\n[\n \"autoReverse\",\n \"externalResourcesRequired\",\n \"focusable\",\n \"preserveAlpha\"\n].forEach(function(a) {\n $f716e3e58d6e8629$var$z[a] = new $f716e3e58d6e8629$var$t(a, 2, !1, a, null, !1, !1);\n});\n\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a) {\n $f716e3e58d6e8629$var$z[a] = new $f716e3e58d6e8629$var$t(a, 3, !1, a.toLowerCase(), null, !1, !1);\n});\n[\n \"checked\",\n \"multiple\",\n \"muted\",\n \"selected\"\n].forEach(function(a) {\n $f716e3e58d6e8629$var$z[a] = new $f716e3e58d6e8629$var$t(a, 3, !0, a, null, !1, !1);\n});\n[\n \"capture\",\n \"download\"\n].forEach(function(a) {\n $f716e3e58d6e8629$var$z[a] = new $f716e3e58d6e8629$var$t(a, 4, !1, a, null, !1, !1);\n});\n[\n \"cols\",\n \"rows\",\n \"size\",\n \"span\"\n].forEach(function(a) {\n $f716e3e58d6e8629$var$z[a] = new $f716e3e58d6e8629$var$t(a, 6, !1, a, null, !1, !1);\n});\n[\n \"rowSpan\",\n \"start\"\n].forEach(function(a) {\n $f716e3e58d6e8629$var$z[a] = new $f716e3e58d6e8629$var$t(a, 5, !1, a.toLowerCase(), null, !1, !1);\n});\nvar $f716e3e58d6e8629$var$qa = /[\\-:]([a-z])/g;\nfunction $f716e3e58d6e8629$var$ra(a) {\n return a[1].toUpperCase();\n}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a) {\n var b = a.replace($f716e3e58d6e8629$var$qa, $f716e3e58d6e8629$var$ra);\n $f716e3e58d6e8629$var$z[b] = new $f716e3e58d6e8629$var$t(b, 1, !1, a, null, !1, !1);\n});\n\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a) {\n var b = a.replace($f716e3e58d6e8629$var$qa, $f716e3e58d6e8629$var$ra);\n $f716e3e58d6e8629$var$z[b] = new $f716e3e58d6e8629$var$t(b, 1, !1, a, \"http://www.w3.org/1999/xlink\", !1, !1);\n});\n[\n \"xml:base\",\n \"xml:lang\",\n \"xml:space\"\n].forEach(function(a) {\n var b = a.replace($f716e3e58d6e8629$var$qa, $f716e3e58d6e8629$var$ra);\n $f716e3e58d6e8629$var$z[b] = new $f716e3e58d6e8629$var$t(b, 1, !1, a, \"http://www.w3.org/XML/1998/namespace\", !1, !1);\n});\n[\n \"tabIndex\",\n \"crossOrigin\"\n].forEach(function(a) {\n $f716e3e58d6e8629$var$z[a] = new $f716e3e58d6e8629$var$t(a, 1, !1, a.toLowerCase(), null, !1, !1);\n});\n$f716e3e58d6e8629$var$z.xlinkHref = new $f716e3e58d6e8629$var$t(\"xlinkHref\", 1, !1, \"xlink:href\", \"http://www.w3.org/1999/xlink\", !0, !1);\n[\n \"src\",\n \"href\",\n \"action\",\n \"formAction\"\n].forEach(function(a) {\n $f716e3e58d6e8629$var$z[a] = new $f716e3e58d6e8629$var$t(a, 1, !1, a.toLowerCase(), null, !0, !0);\n});\nfunction $f716e3e58d6e8629$var$sa(a, b, c, d) {\n var e = $f716e3e58d6e8629$var$z.hasOwnProperty(b) ? $f716e3e58d6e8629$var$z[b] : null;\n if (null !== e ? 0 !== e.type : d || !(2 < b.length) || \"o\" !== b[0] && \"O\" !== b[0] || \"n\" !== b[1] && \"N\" !== b[1]) $f716e3e58d6e8629$var$pa(b, c, e, d) && (c = null), d || null === e ? $f716e3e58d6e8629$var$na(b) && (null === c ? a.removeAttribute(b) : a.setAttribute(b, \"\" + c)) : e.mustUseProperty ? a[e.propertyName] = null === c ? 3 === e.type ? !1 : \"\" : c : (b = e.attributeName, d = e.attributeNamespace, null === c ? a.removeAttribute(b) : (e = e.type, c = 3 === e || 4 === e && !0 === c ? \"\" : \"\" + c, d ? a.setAttributeNS(d, b, c) : a.setAttribute(b, c)));\n}\nvar $f716e3e58d6e8629$var$ta = $70fFQ.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, $f716e3e58d6e8629$var$ua = Symbol.for(\"react.element\"), $f716e3e58d6e8629$var$va = Symbol.for(\"react.portal\"), $f716e3e58d6e8629$var$wa = Symbol.for(\"react.fragment\"), $f716e3e58d6e8629$var$xa = Symbol.for(\"react.strict_mode\"), $f716e3e58d6e8629$var$za = Symbol.for(\"react.profiler\"), $f716e3e58d6e8629$var$Aa = Symbol.for(\"react.provider\"), $f716e3e58d6e8629$var$Ba = Symbol.for(\"react.context\"), $f716e3e58d6e8629$var$Ca = Symbol.for(\"react.forward_ref\"), $f716e3e58d6e8629$var$Da = Symbol.for(\"react.suspense\"), $f716e3e58d6e8629$var$Ea = Symbol.for(\"react.suspense_list\"), $f716e3e58d6e8629$var$Fa = Symbol.for(\"react.memo\"), $f716e3e58d6e8629$var$Ga = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nSymbol.for(\"react.debug_trace_mode\");\nvar $f716e3e58d6e8629$var$Ha = Symbol.for(\"react.offscreen\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.cache\");\nSymbol.for(\"react.tracing_marker\");\nvar $f716e3e58d6e8629$var$Ia = Symbol.iterator;\nfunction $f716e3e58d6e8629$var$Ja(a) {\n if (null === a || \"object\" !== typeof a) return null;\n a = $f716e3e58d6e8629$var$Ia && a[$f716e3e58d6e8629$var$Ia] || a[\"@@iterator\"];\n return \"function\" === typeof a ? a : null;\n}\nvar $f716e3e58d6e8629$var$A = Object.assign, $f716e3e58d6e8629$var$Ka;\nfunction $f716e3e58d6e8629$var$La(a) {\n if (void 0 === $f716e3e58d6e8629$var$Ka) try {\n throw Error();\n } catch (c) {\n var b = c.stack.trim().match(/\\n( *(at )?)/);\n $f716e3e58d6e8629$var$Ka = b && b[1] || \"\";\n }\n return \"\\n\" + $f716e3e58d6e8629$var$Ka + a;\n}\nvar $f716e3e58d6e8629$var$Ma = !1;\nfunction $f716e3e58d6e8629$var$Na(a, b) {\n if (!a || $f716e3e58d6e8629$var$Ma) return \"\";\n $f716e3e58d6e8629$var$Ma = !0;\n var c = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n try {\n if (b) {\n if (b = function() {\n throw Error();\n }, Object.defineProperty(b.prototype, \"props\", {\n set: function() {\n throw Error();\n }\n }), \"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(b, []);\n } catch (l) {\n var d = l;\n }\n Reflect.construct(a, [], b);\n } else {\n try {\n b.call();\n } catch (l) {\n d = l;\n }\n a.call(b.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (l) {\n d = l;\n }\n a();\n }\n } catch (l) {\n if (l && d && \"string\" === typeof l.stack) {\n for(var e = l.stack.split(\"\\n\"), f = d.stack.split(\"\\n\"), g = e.length - 1, h = f.length - 1; 1 <= g && 0 <= h && e[g] !== f[h];)h--;\n for(; 1 <= g && 0 <= h; g--, h--)if (e[g] !== f[h]) {\n if (1 !== g || 1 !== h) {\n do if (g--, h--, 0 > h || e[g] !== f[h]) {\n var k = \"\\n\" + e[g].replace(\" at new \", \" at \");\n a.displayName && k.includes(\"\") && (k = k.replace(\"\", a.displayName));\n return k;\n }\n while (1 <= g && 0 <= h);\n }\n break;\n }\n }\n } finally{\n $f716e3e58d6e8629$var$Ma = !1, Error.prepareStackTrace = c;\n }\n return (a = a ? a.displayName || a.name : \"\") ? $f716e3e58d6e8629$var$La(a) : \"\";\n}\nfunction $f716e3e58d6e8629$var$Oa(a) {\n switch(a.tag){\n case 5:\n return $f716e3e58d6e8629$var$La(a.type);\n case 16:\n return $f716e3e58d6e8629$var$La(\"Lazy\");\n case 13:\n return $f716e3e58d6e8629$var$La(\"Suspense\");\n case 19:\n return $f716e3e58d6e8629$var$La(\"SuspenseList\");\n case 0:\n case 2:\n case 15:\n return a = $f716e3e58d6e8629$var$Na(a.type, !1), a;\n case 11:\n return a = $f716e3e58d6e8629$var$Na(a.type.render, !1), a;\n case 1:\n return a = $f716e3e58d6e8629$var$Na(a.type, !0), a;\n default:\n return \"\";\n }\n}\nfunction $f716e3e58d6e8629$var$Pa(a) {\n if (null == a) return null;\n if (\"function\" === typeof a) return a.displayName || a.name || null;\n if (\"string\" === typeof a) return a;\n switch(a){\n case $f716e3e58d6e8629$var$wa:\n return \"Fragment\";\n case $f716e3e58d6e8629$var$va:\n return \"Portal\";\n case $f716e3e58d6e8629$var$za:\n return \"Profiler\";\n case $f716e3e58d6e8629$var$xa:\n return \"StrictMode\";\n case $f716e3e58d6e8629$var$Da:\n return \"Suspense\";\n case $f716e3e58d6e8629$var$Ea:\n return \"SuspenseList\";\n }\n if (\"object\" === typeof a) switch(a.$$typeof){\n case $f716e3e58d6e8629$var$Ba:\n return (a.displayName || \"Context\") + \".Consumer\";\n case $f716e3e58d6e8629$var$Aa:\n return (a._context.displayName || \"Context\") + \".Provider\";\n case $f716e3e58d6e8629$var$Ca:\n var b = a.render;\n a = a.displayName;\n a || (a = b.displayName || b.name || \"\", a = \"\" !== a ? \"ForwardRef(\" + a + \")\" : \"ForwardRef\");\n return a;\n case $f716e3e58d6e8629$var$Fa:\n return b = a.displayName || null, null !== b ? b : $f716e3e58d6e8629$var$Pa(a.type) || \"Memo\";\n case $f716e3e58d6e8629$var$Ga:\n b = a._payload;\n a = a._init;\n try {\n return $f716e3e58d6e8629$var$Pa(a(b));\n } catch (c) {}\n }\n return null;\n}\nfunction $f716e3e58d6e8629$var$Qa(a) {\n var b = a.type;\n switch(a.tag){\n case 24:\n return \"Cache\";\n case 9:\n return (b.displayName || \"Context\") + \".Consumer\";\n case 10:\n return (b._context.displayName || \"Context\") + \".Provider\";\n case 18:\n return \"DehydratedFragment\";\n case 11:\n return a = b.render, a = a.displayName || a.name || \"\", b.displayName || (\"\" !== a ? \"ForwardRef(\" + a + \")\" : \"ForwardRef\");\n case 7:\n return \"Fragment\";\n case 5:\n return b;\n case 4:\n return \"Portal\";\n case 3:\n return \"Root\";\n case 6:\n return \"Text\";\n case 16:\n return $f716e3e58d6e8629$var$Pa(b);\n case 8:\n return b === $f716e3e58d6e8629$var$xa ? \"StrictMode\" : \"Mode\";\n case 22:\n return \"Offscreen\";\n case 12:\n return \"Profiler\";\n case 21:\n return \"Scope\";\n case 13:\n return \"Suspense\";\n case 19:\n return \"SuspenseList\";\n case 25:\n return \"TracingMarker\";\n case 1:\n case 0:\n case 17:\n case 2:\n case 14:\n case 15:\n if (\"function\" === typeof b) return b.displayName || b.name || null;\n if (\"string\" === typeof b) return b;\n }\n return null;\n}\nfunction $f716e3e58d6e8629$var$Ra(a) {\n switch(typeof a){\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"undefined\":\n return a;\n case \"object\":\n return a;\n default:\n return \"\";\n }\n}\nfunction $f716e3e58d6e8629$var$Sa(a) {\n var b = a.type;\n return (a = a.nodeName) && \"input\" === a.toLowerCase() && (\"checkbox\" === b || \"radio\" === b);\n}\nfunction $f716e3e58d6e8629$var$Ta(a) {\n var b = $f716e3e58d6e8629$var$Sa(a) ? \"checked\" : \"value\", c = Object.getOwnPropertyDescriptor(a.constructor.prototype, b), d = \"\" + a[b];\n if (!a.hasOwnProperty(b) && \"undefined\" !== typeof c && \"function\" === typeof c.get && \"function\" === typeof c.set) {\n var e = c.get, f = c.set;\n Object.defineProperty(a, b, {\n configurable: !0,\n get: function() {\n return e.call(this);\n },\n set: function(a) {\n d = \"\" + a;\n f.call(this, a);\n }\n });\n Object.defineProperty(a, b, {\n enumerable: c.enumerable\n });\n return {\n getValue: function() {\n return d;\n },\n setValue: function(a) {\n d = \"\" + a;\n },\n stopTracking: function() {\n a._valueTracker = null;\n delete a[b];\n }\n };\n }\n}\nfunction $f716e3e58d6e8629$var$Ua(a) {\n a._valueTracker || (a._valueTracker = $f716e3e58d6e8629$var$Ta(a));\n}\nfunction $f716e3e58d6e8629$var$Va(a) {\n if (!a) return !1;\n var b = a._valueTracker;\n if (!b) return !0;\n var c = b.getValue();\n var d = \"\";\n a && (d = $f716e3e58d6e8629$var$Sa(a) ? a.checked ? \"true\" : \"false\" : a.value);\n a = d;\n return a !== c ? (b.setValue(a), !0) : !1;\n}\nfunction $f716e3e58d6e8629$var$Wa(a) {\n a = a || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof a) return null;\n try {\n return a.activeElement || a.body;\n } catch (b) {\n return a.body;\n }\n}\nfunction $f716e3e58d6e8629$var$Xa(a, b) {\n var c = b.checked;\n return $f716e3e58d6e8629$var$A({}, b, {\n defaultChecked: void 0,\n defaultValue: void 0,\n value: void 0,\n checked: null != c ? c : a._wrapperState.initialChecked\n });\n}\nfunction $f716e3e58d6e8629$var$Ya(a, b) {\n var c = null == b.defaultValue ? \"\" : b.defaultValue, d = null != b.checked ? b.checked : b.defaultChecked;\n c = $f716e3e58d6e8629$var$Ra(null != b.value ? b.value : c);\n a._wrapperState = {\n initialChecked: d,\n initialValue: c,\n controlled: \"checkbox\" === b.type || \"radio\" === b.type ? null != b.checked : null != b.value\n };\n}\nfunction $f716e3e58d6e8629$var$Za(a, b) {\n b = b.checked;\n null != b && $f716e3e58d6e8629$var$sa(a, \"checked\", b, !1);\n}\nfunction $f716e3e58d6e8629$var$$a(a, b) {\n $f716e3e58d6e8629$var$Za(a, b);\n var c = $f716e3e58d6e8629$var$Ra(b.value), d = b.type;\n if (null != c) {\n if (\"number\" === d) {\n if (0 === c && \"\" === a.value || a.value != c) a.value = \"\" + c;\n } else a.value !== \"\" + c && (a.value = \"\" + c);\n } else if (\"submit\" === d || \"reset\" === d) {\n a.removeAttribute(\"value\");\n return;\n }\n b.hasOwnProperty(\"value\") ? $f716e3e58d6e8629$var$bb(a, b.type, c) : b.hasOwnProperty(\"defaultValue\") && $f716e3e58d6e8629$var$bb(a, b.type, $f716e3e58d6e8629$var$Ra(b.defaultValue));\n null == b.checked && null != b.defaultChecked && (a.defaultChecked = !!b.defaultChecked);\n}\nfunction $f716e3e58d6e8629$var$cb(a, b, c) {\n if (b.hasOwnProperty(\"value\") || b.hasOwnProperty(\"defaultValue\")) {\n var d = b.type;\n if (!(\"submit\" !== d && \"reset\" !== d || void 0 !== b.value && null !== b.value)) return;\n b = \"\" + a._wrapperState.initialValue;\n c || b === a.value || (a.value = b);\n a.defaultValue = b;\n }\n c = a.name;\n \"\" !== c && (a.name = \"\");\n a.defaultChecked = !!a._wrapperState.initialChecked;\n \"\" !== c && (a.name = c);\n}\nfunction $f716e3e58d6e8629$var$bb(a, b, c) {\n if (\"number\" !== b || $f716e3e58d6e8629$var$Wa(a.ownerDocument) !== a) null == c ? a.defaultValue = \"\" + a._wrapperState.initialValue : a.defaultValue !== \"\" + c && (a.defaultValue = \"\" + c);\n}\nvar $f716e3e58d6e8629$var$db = Array.isArray;\nfunction $f716e3e58d6e8629$var$eb(a, b, c, d) {\n a = a.options;\n if (b) {\n b = {};\n for(var e = 0; e < c.length; e++)b[\"$\" + c[e]] = !0;\n for(c = 0; c < a.length; c++)e = b.hasOwnProperty(\"$\" + a[c].value), a[c].selected !== e && (a[c].selected = e), e && d && (a[c].defaultSelected = !0);\n } else {\n c = \"\" + $f716e3e58d6e8629$var$Ra(c);\n b = null;\n for(e = 0; e < a.length; e++){\n if (a[e].value === c) {\n a[e].selected = !0;\n d && (a[e].defaultSelected = !0);\n return;\n }\n null !== b || a[e].disabled || (b = a[e]);\n }\n null !== b && (b.selected = !0);\n }\n}\nfunction $f716e3e58d6e8629$var$fb(a, b) {\n if (null != b.dangerouslySetInnerHTML) throw Error($f716e3e58d6e8629$var$p(91));\n return $f716e3e58d6e8629$var$A({}, b, {\n value: void 0,\n defaultValue: void 0,\n children: \"\" + a._wrapperState.initialValue\n });\n}\nfunction $f716e3e58d6e8629$var$gb(a, b) {\n var c = b.value;\n if (null == c) {\n c = b.children;\n b = b.defaultValue;\n if (null != c) {\n if (null != b) throw Error($f716e3e58d6e8629$var$p(92));\n if ($f716e3e58d6e8629$var$db(c)) {\n if (1 < c.length) throw Error($f716e3e58d6e8629$var$p(93));\n c = c[0];\n }\n b = c;\n }\n null == b && (b = \"\");\n c = b;\n }\n a._wrapperState = {\n initialValue: $f716e3e58d6e8629$var$Ra(c)\n };\n}\nfunction $f716e3e58d6e8629$var$hb(a, b) {\n var c = $f716e3e58d6e8629$var$Ra(b.value), d = $f716e3e58d6e8629$var$Ra(b.defaultValue);\n null != c && (c = \"\" + c, c !== a.value && (a.value = c), null == b.defaultValue && a.defaultValue !== c && (a.defaultValue = c));\n null != d && (a.defaultValue = \"\" + d);\n}\nfunction $f716e3e58d6e8629$var$ib(a) {\n var b = a.textContent;\n b === a._wrapperState.initialValue && \"\" !== b && null !== b && (a.value = b);\n}\nfunction $f716e3e58d6e8629$var$jb(a) {\n switch(a){\n case \"svg\":\n return \"http://www.w3.org/2000/svg\";\n case \"math\":\n return \"http://www.w3.org/1998/Math/MathML\";\n default:\n return \"http://www.w3.org/1999/xhtml\";\n }\n}\nfunction $f716e3e58d6e8629$var$kb(a, b) {\n return null == a || \"http://www.w3.org/1999/xhtml\" === a ? $f716e3e58d6e8629$var$jb(b) : \"http://www.w3.org/2000/svg\" === a && \"foreignObject\" === b ? \"http://www.w3.org/1999/xhtml\" : a;\n}\nvar $f716e3e58d6e8629$var$lb, $f716e3e58d6e8629$var$mb = function(a) {\n return \"undefined\" !== typeof MSApp && MSApp.execUnsafeLocalFunction ? function(b, c, d, e) {\n MSApp.execUnsafeLocalFunction(function() {\n return a(b, c, d, e);\n });\n } : a;\n}(function(a, b) {\n if (\"http://www.w3.org/2000/svg\" !== a.namespaceURI || \"innerHTML\" in a) a.innerHTML = b;\n else {\n $f716e3e58d6e8629$var$lb = $f716e3e58d6e8629$var$lb || document.createElement(\"div\");\n $f716e3e58d6e8629$var$lb.innerHTML = \"\" + b.valueOf().toString() + \"\";\n for(b = $f716e3e58d6e8629$var$lb.firstChild; a.firstChild;)a.removeChild(a.firstChild);\n for(; b.firstChild;)a.appendChild(b.firstChild);\n }\n});\nfunction $f716e3e58d6e8629$var$nb(a, b) {\n if (b) {\n var c = a.firstChild;\n if (c && c === a.lastChild && 3 === c.nodeType) {\n c.nodeValue = b;\n return;\n }\n }\n a.textContent = b;\n}\nvar $f716e3e58d6e8629$var$ob = {\n animationIterationCount: !0,\n aspectRatio: !0,\n borderImageOutset: !0,\n borderImageSlice: !0,\n borderImageWidth: !0,\n boxFlex: !0,\n boxFlexGroup: !0,\n boxOrdinalGroup: !0,\n columnCount: !0,\n columns: !0,\n flex: !0,\n flexGrow: !0,\n flexPositive: !0,\n flexShrink: !0,\n flexNegative: !0,\n flexOrder: !0,\n gridArea: !0,\n gridRow: !0,\n gridRowEnd: !0,\n gridRowSpan: !0,\n gridRowStart: !0,\n gridColumn: !0,\n gridColumnEnd: !0,\n gridColumnSpan: !0,\n gridColumnStart: !0,\n fontWeight: !0,\n lineClamp: !0,\n lineHeight: !0,\n opacity: !0,\n order: !0,\n orphans: !0,\n tabSize: !0,\n widows: !0,\n zIndex: !0,\n zoom: !0,\n fillOpacity: !0,\n floodOpacity: !0,\n stopOpacity: !0,\n strokeDasharray: !0,\n strokeDashoffset: !0,\n strokeMiterlimit: !0,\n strokeOpacity: !0,\n strokeWidth: !0\n}, $f716e3e58d6e8629$var$pb = [\n \"Webkit\",\n \"ms\",\n \"Moz\",\n \"O\"\n];\nObject.keys($f716e3e58d6e8629$var$ob).forEach(function(a) {\n $f716e3e58d6e8629$var$pb.forEach(function(b) {\n b = b + a.charAt(0).toUpperCase() + a.substring(1);\n $f716e3e58d6e8629$var$ob[b] = $f716e3e58d6e8629$var$ob[a];\n });\n});\nfunction $f716e3e58d6e8629$var$qb(a, b, c) {\n return null == b || \"boolean\" === typeof b || \"\" === b ? \"\" : c || \"number\" !== typeof b || 0 === b || $f716e3e58d6e8629$var$ob.hasOwnProperty(a) && $f716e3e58d6e8629$var$ob[a] ? (\"\" + b).trim() : b + \"px\";\n}\nfunction $f716e3e58d6e8629$var$rb(a, b) {\n a = a.style;\n for(var c in b)if (b.hasOwnProperty(c)) {\n var d = 0 === c.indexOf(\"--\"), e = $f716e3e58d6e8629$var$qb(c, b[c], d);\n \"float\" === c && (c = \"cssFloat\");\n d ? a.setProperty(c, e) : a[c] = e;\n }\n}\nvar $f716e3e58d6e8629$var$sb = $f716e3e58d6e8629$var$A({\n menuitem: !0\n}, {\n area: !0,\n base: !0,\n br: !0,\n col: !0,\n embed: !0,\n hr: !0,\n img: !0,\n input: !0,\n keygen: !0,\n link: !0,\n meta: !0,\n param: !0,\n source: !0,\n track: !0,\n wbr: !0\n});\nfunction $f716e3e58d6e8629$var$tb(a, b) {\n if (b) {\n if ($f716e3e58d6e8629$var$sb[a] && (null != b.children || null != b.dangerouslySetInnerHTML)) throw Error($f716e3e58d6e8629$var$p(137, a));\n if (null != b.dangerouslySetInnerHTML) {\n if (null != b.children) throw Error($f716e3e58d6e8629$var$p(60));\n if (\"object\" !== typeof b.dangerouslySetInnerHTML || !(\"__html\" in b.dangerouslySetInnerHTML)) throw Error($f716e3e58d6e8629$var$p(61));\n }\n if (null != b.style && \"object\" !== typeof b.style) throw Error($f716e3e58d6e8629$var$p(62));\n }\n}\nfunction $f716e3e58d6e8629$var$ub(a, b) {\n if (-1 === a.indexOf(\"-\")) return \"string\" === typeof b.is;\n switch(a){\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n return !1;\n default:\n return !0;\n }\n}\nvar $f716e3e58d6e8629$var$vb = null;\nfunction $f716e3e58d6e8629$var$wb(a) {\n a = a.target || a.srcElement || window;\n a.correspondingUseElement && (a = a.correspondingUseElement);\n return 3 === a.nodeType ? a.parentNode : a;\n}\nvar $f716e3e58d6e8629$var$xb = null, $f716e3e58d6e8629$var$yb = null, $f716e3e58d6e8629$var$zb = null;\nfunction $f716e3e58d6e8629$var$Ab(a) {\n if (a = $f716e3e58d6e8629$var$Bb(a)) {\n if (\"function\" !== typeof $f716e3e58d6e8629$var$xb) throw Error($f716e3e58d6e8629$var$p(280));\n var b = a.stateNode;\n b && (b = $f716e3e58d6e8629$var$Cb(b), $f716e3e58d6e8629$var$xb(a.stateNode, a.type, b));\n }\n}\nfunction $f716e3e58d6e8629$var$Db(a) {\n $f716e3e58d6e8629$var$yb ? $f716e3e58d6e8629$var$zb ? $f716e3e58d6e8629$var$zb.push(a) : $f716e3e58d6e8629$var$zb = [\n a\n ] : $f716e3e58d6e8629$var$yb = a;\n}\nfunction $f716e3e58d6e8629$var$Eb() {\n if ($f716e3e58d6e8629$var$yb) {\n var a = $f716e3e58d6e8629$var$yb, b = $f716e3e58d6e8629$var$zb;\n $f716e3e58d6e8629$var$zb = $f716e3e58d6e8629$var$yb = null;\n $f716e3e58d6e8629$var$Ab(a);\n if (b) for(a = 0; a < b.length; a++)$f716e3e58d6e8629$var$Ab(b[a]);\n }\n}\nfunction $f716e3e58d6e8629$var$Fb(a, b) {\n return a(b);\n}\nfunction $f716e3e58d6e8629$var$Gb() {}\nvar $f716e3e58d6e8629$var$Hb = !1;\nfunction $f716e3e58d6e8629$var$Ib(a, b, c) {\n if ($f716e3e58d6e8629$var$Hb) return a(b, c);\n $f716e3e58d6e8629$var$Hb = !0;\n try {\n return $f716e3e58d6e8629$var$Fb(a, b, c);\n } finally{\n if ($f716e3e58d6e8629$var$Hb = !1, null !== $f716e3e58d6e8629$var$yb || null !== $f716e3e58d6e8629$var$zb) $f716e3e58d6e8629$var$Gb(), $f716e3e58d6e8629$var$Eb();\n }\n}\nfunction $f716e3e58d6e8629$var$Jb(a, b) {\n var c = a.stateNode;\n if (null === c) return null;\n var d = $f716e3e58d6e8629$var$Cb(c);\n if (null === d) return null;\n c = d[b];\n a: switch(b){\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n case \"onMouseEnter\":\n (d = !d.disabled) || (a = a.type, d = !(\"button\" === a || \"input\" === a || \"select\" === a || \"textarea\" === a));\n a = !d;\n break a;\n default:\n a = !1;\n }\n if (a) return null;\n if (c && \"function\" !== typeof c) throw Error($f716e3e58d6e8629$var$p(231, b, typeof c));\n return c;\n}\nvar $f716e3e58d6e8629$var$Kb = !1;\nif ($f716e3e58d6e8629$var$ia) try {\n var $f716e3e58d6e8629$var$Lb = {};\n Object.defineProperty($f716e3e58d6e8629$var$Lb, \"passive\", {\n get: function() {\n $f716e3e58d6e8629$var$Kb = !0;\n }\n });\n window.addEventListener(\"test\", $f716e3e58d6e8629$var$Lb, $f716e3e58d6e8629$var$Lb);\n window.removeEventListener(\"test\", $f716e3e58d6e8629$var$Lb, $f716e3e58d6e8629$var$Lb);\n} catch (a) {\n $f716e3e58d6e8629$var$Kb = !1;\n}\nfunction $f716e3e58d6e8629$var$Mb(a, b, c, d, e, f, g, h, k) {\n var l = Array.prototype.slice.call(arguments, 3);\n try {\n b.apply(c, l);\n } catch (n) {\n this.onError(n);\n }\n}\nvar $f716e3e58d6e8629$var$Nb = !1, $f716e3e58d6e8629$var$Ob = null, $f716e3e58d6e8629$var$Pb = !1, $f716e3e58d6e8629$var$Qb = null, $f716e3e58d6e8629$var$Rb = {\n onError: function(a) {\n $f716e3e58d6e8629$var$Nb = !0;\n $f716e3e58d6e8629$var$Ob = a;\n }\n};\nfunction $f716e3e58d6e8629$var$Sb(a, b, c, d, e, f, g, h, k) {\n $f716e3e58d6e8629$var$Nb = !1;\n $f716e3e58d6e8629$var$Ob = null;\n $f716e3e58d6e8629$var$Mb.apply($f716e3e58d6e8629$var$Rb, arguments);\n}\nfunction $f716e3e58d6e8629$var$Tb(a, b, c, d, e, f, g, h, k) {\n $f716e3e58d6e8629$var$Sb.apply(this, arguments);\n if ($f716e3e58d6e8629$var$Nb) {\n if ($f716e3e58d6e8629$var$Nb) {\n var l = $f716e3e58d6e8629$var$Ob;\n $f716e3e58d6e8629$var$Nb = !1;\n $f716e3e58d6e8629$var$Ob = null;\n } else throw Error($f716e3e58d6e8629$var$p(198));\n $f716e3e58d6e8629$var$Pb || ($f716e3e58d6e8629$var$Pb = !0, $f716e3e58d6e8629$var$Qb = l);\n }\n}\nfunction $f716e3e58d6e8629$var$Ub(a) {\n var b = a, c = a;\n if (a.alternate) for(; b.return;)b = b.return;\n else {\n a = b;\n do b = a, 0 !== (b.flags & 4098) && (c = b.return), a = b.return;\n while (a);\n }\n return 3 === b.tag ? c : null;\n}\nfunction $f716e3e58d6e8629$var$Vb(a) {\n if (13 === a.tag) {\n var b = a.memoizedState;\n null === b && (a = a.alternate, null !== a && (b = a.memoizedState));\n if (null !== b) return b.dehydrated;\n }\n return null;\n}\nfunction $f716e3e58d6e8629$var$Wb(a) {\n if ($f716e3e58d6e8629$var$Ub(a) !== a) throw Error($f716e3e58d6e8629$var$p(188));\n}\nfunction $f716e3e58d6e8629$var$Xb(a) {\n var b = a.alternate;\n if (!b) {\n b = $f716e3e58d6e8629$var$Ub(a);\n if (null === b) throw Error($f716e3e58d6e8629$var$p(188));\n return b !== a ? null : a;\n }\n for(var c = a, d = b;;){\n var e = c.return;\n if (null === e) break;\n var f = e.alternate;\n if (null === f) {\n d = e.return;\n if (null !== d) {\n c = d;\n continue;\n }\n break;\n }\n if (e.child === f.child) {\n for(f = e.child; f;){\n if (f === c) return $f716e3e58d6e8629$var$Wb(e), a;\n if (f === d) return $f716e3e58d6e8629$var$Wb(e), b;\n f = f.sibling;\n }\n throw Error($f716e3e58d6e8629$var$p(188));\n }\n if (c.return !== d.return) c = e, d = f;\n else {\n for(var g = !1, h = e.child; h;){\n if (h === c) {\n g = !0;\n c = e;\n d = f;\n break;\n }\n if (h === d) {\n g = !0;\n d = e;\n c = f;\n break;\n }\n h = h.sibling;\n }\n if (!g) {\n for(h = f.child; h;){\n if (h === c) {\n g = !0;\n c = f;\n d = e;\n break;\n }\n if (h === d) {\n g = !0;\n d = f;\n c = e;\n break;\n }\n h = h.sibling;\n }\n if (!g) throw Error($f716e3e58d6e8629$var$p(189));\n }\n }\n if (c.alternate !== d) throw Error($f716e3e58d6e8629$var$p(190));\n }\n if (3 !== c.tag) throw Error($f716e3e58d6e8629$var$p(188));\n return c.stateNode.current === c ? a : b;\n}\nfunction $f716e3e58d6e8629$var$Yb(a) {\n a = $f716e3e58d6e8629$var$Xb(a);\n return null !== a ? $f716e3e58d6e8629$var$Zb(a) : null;\n}\nfunction $f716e3e58d6e8629$var$Zb(a) {\n if (5 === a.tag || 6 === a.tag) return a;\n for(a = a.child; null !== a;){\n var b = $f716e3e58d6e8629$var$Zb(a);\n if (null !== b) return b;\n a = a.sibling;\n }\n return null;\n}\nvar $f716e3e58d6e8629$var$$b = $c2cCr.unstable_scheduleCallback, $f716e3e58d6e8629$var$ac = $c2cCr.unstable_cancelCallback, $f716e3e58d6e8629$var$bc = $c2cCr.unstable_shouldYield, $f716e3e58d6e8629$var$cc = $c2cCr.unstable_requestPaint, $f716e3e58d6e8629$var$B = $c2cCr.unstable_now, $f716e3e58d6e8629$var$dc = $c2cCr.unstable_getCurrentPriorityLevel, $f716e3e58d6e8629$var$ec = $c2cCr.unstable_ImmediatePriority, $f716e3e58d6e8629$var$fc = $c2cCr.unstable_UserBlockingPriority, $f716e3e58d6e8629$var$gc = $c2cCr.unstable_NormalPriority, $f716e3e58d6e8629$var$hc = $c2cCr.unstable_LowPriority, $f716e3e58d6e8629$var$ic = $c2cCr.unstable_IdlePriority, $f716e3e58d6e8629$var$jc = null, $f716e3e58d6e8629$var$kc = null;\nfunction $f716e3e58d6e8629$var$lc(a) {\n if ($f716e3e58d6e8629$var$kc && \"function\" === typeof $f716e3e58d6e8629$var$kc.onCommitFiberRoot) try {\n $f716e3e58d6e8629$var$kc.onCommitFiberRoot($f716e3e58d6e8629$var$jc, a, void 0, 128 === (a.current.flags & 128));\n } catch (b) {}\n}\nvar $f716e3e58d6e8629$var$nc = Math.clz32 ? Math.clz32 : $f716e3e58d6e8629$var$mc, $f716e3e58d6e8629$var$oc = Math.log, $f716e3e58d6e8629$var$pc = Math.LN2;\nfunction $f716e3e58d6e8629$var$mc(a) {\n a >>>= 0;\n return 0 === a ? 32 : 31 - ($f716e3e58d6e8629$var$oc(a) / $f716e3e58d6e8629$var$pc | 0) | 0;\n}\nvar $f716e3e58d6e8629$var$qc = 64, $f716e3e58d6e8629$var$rc = 4194304;\nfunction $f716e3e58d6e8629$var$sc(a) {\n switch(a & -a){\n case 1:\n return 1;\n case 2:\n return 2;\n case 4:\n return 4;\n case 8:\n return 8;\n case 16:\n return 16;\n case 32:\n return 32;\n case 64:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return a & 4194240;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n case 67108864:\n return a & 130023424;\n case 134217728:\n return 134217728;\n case 268435456:\n return 268435456;\n case 536870912:\n return 536870912;\n case 1073741824:\n return 1073741824;\n default:\n return a;\n }\n}\nfunction $f716e3e58d6e8629$var$tc(a, b) {\n var c = a.pendingLanes;\n if (0 === c) return 0;\n var d = 0, e = a.suspendedLanes, f = a.pingedLanes, g = c & 268435455;\n if (0 !== g) {\n var h = g & ~e;\n 0 !== h ? d = $f716e3e58d6e8629$var$sc(h) : (f &= g, 0 !== f && (d = $f716e3e58d6e8629$var$sc(f)));\n } else g = c & ~e, 0 !== g ? d = $f716e3e58d6e8629$var$sc(g) : 0 !== f && (d = $f716e3e58d6e8629$var$sc(f));\n if (0 === d) return 0;\n if (0 !== b && b !== d && 0 === (b & e) && (e = d & -d, f = b & -b, e >= f || 16 === e && 0 !== (f & 4194240))) return b;\n 0 !== (d & 4) && (d |= c & 16);\n b = a.entangledLanes;\n if (0 !== b) for(a = a.entanglements, b &= d; 0 < b;)c = 31 - $f716e3e58d6e8629$var$nc(b), e = 1 << c, d |= a[c], b &= ~e;\n return d;\n}\nfunction $f716e3e58d6e8629$var$uc(a, b) {\n switch(a){\n case 1:\n case 2:\n case 4:\n return b + 250;\n case 8:\n case 16:\n case 32:\n case 64:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return b + 5E3;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n case 67108864:\n return -1;\n case 134217728:\n case 268435456:\n case 536870912:\n case 1073741824:\n return -1;\n default:\n return -1;\n }\n}\nfunction $f716e3e58d6e8629$var$vc(a, b) {\n for(var c = a.suspendedLanes, d = a.pingedLanes, e = a.expirationTimes, f = a.pendingLanes; 0 < f;){\n var g = 31 - $f716e3e58d6e8629$var$nc(f), h = 1 << g, k = e[g];\n if (-1 === k) {\n if (0 === (h & c) || 0 !== (h & d)) e[g] = $f716e3e58d6e8629$var$uc(h, b);\n } else k <= b && (a.expiredLanes |= h);\n f &= ~h;\n }\n}\nfunction $f716e3e58d6e8629$var$wc(a) {\n a = a.pendingLanes & -1073741825;\n return 0 !== a ? a : a & 1073741824 ? 1073741824 : 0;\n}\nfunction $f716e3e58d6e8629$var$xc() {\n var a = $f716e3e58d6e8629$var$qc;\n $f716e3e58d6e8629$var$qc <<= 1;\n 0 === ($f716e3e58d6e8629$var$qc & 4194240) && ($f716e3e58d6e8629$var$qc = 64);\n return a;\n}\nfunction $f716e3e58d6e8629$var$yc(a) {\n for(var b = [], c = 0; 31 > c; c++)b.push(a);\n return b;\n}\nfunction $f716e3e58d6e8629$var$zc(a, b, c) {\n a.pendingLanes |= b;\n 536870912 !== b && (a.suspendedLanes = 0, a.pingedLanes = 0);\n a = a.eventTimes;\n b = 31 - $f716e3e58d6e8629$var$nc(b);\n a[b] = c;\n}\nfunction $f716e3e58d6e8629$var$Ac(a, b) {\n var c = a.pendingLanes & ~b;\n a.pendingLanes = b;\n a.suspendedLanes = 0;\n a.pingedLanes = 0;\n a.expiredLanes &= b;\n a.mutableReadLanes &= b;\n a.entangledLanes &= b;\n b = a.entanglements;\n var d = a.eventTimes;\n for(a = a.expirationTimes; 0 < c;){\n var e = 31 - $f716e3e58d6e8629$var$nc(c), f = 1 << e;\n b[e] = 0;\n d[e] = -1;\n a[e] = -1;\n c &= ~f;\n }\n}\nfunction $f716e3e58d6e8629$var$Bc(a, b) {\n var c = a.entangledLanes |= b;\n for(a = a.entanglements; c;){\n var d = 31 - $f716e3e58d6e8629$var$nc(c), e = 1 << d;\n e & b | a[d] & b && (a[d] |= b);\n c &= ~e;\n }\n}\nvar $f716e3e58d6e8629$var$C = 0;\nfunction $f716e3e58d6e8629$var$Cc(a) {\n a &= -a;\n return 1 < a ? 4 < a ? 0 !== (a & 268435455) ? 16 : 536870912 : 4 : 1;\n}\nvar $f716e3e58d6e8629$var$Dc, $f716e3e58d6e8629$var$Ec, $f716e3e58d6e8629$var$Fc, $f716e3e58d6e8629$var$Gc, $f716e3e58d6e8629$var$Hc, $f716e3e58d6e8629$var$Ic = !1, $f716e3e58d6e8629$var$Jc = [], $f716e3e58d6e8629$var$Kc = null, $f716e3e58d6e8629$var$Lc = null, $f716e3e58d6e8629$var$Mc = null, $f716e3e58d6e8629$var$Nc = new Map, $f716e3e58d6e8629$var$Oc = new Map, $f716e3e58d6e8629$var$Pc = [], $f716e3e58d6e8629$var$Qc = \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction $f716e3e58d6e8629$var$Rc(a, b) {\n switch(a){\n case \"focusin\":\n case \"focusout\":\n $f716e3e58d6e8629$var$Kc = null;\n break;\n case \"dragenter\":\n case \"dragleave\":\n $f716e3e58d6e8629$var$Lc = null;\n break;\n case \"mouseover\":\n case \"mouseout\":\n $f716e3e58d6e8629$var$Mc = null;\n break;\n case \"pointerover\":\n case \"pointerout\":\n $f716e3e58d6e8629$var$Nc.delete(b.pointerId);\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n $f716e3e58d6e8629$var$Oc.delete(b.pointerId);\n }\n}\nfunction $f716e3e58d6e8629$var$Sc(a, b, c, d, e, f) {\n if (null === a || a.nativeEvent !== f) return a = {\n blockedOn: b,\n domEventName: c,\n eventSystemFlags: d,\n nativeEvent: f,\n targetContainers: [\n e\n ]\n }, null !== b && (b = $f716e3e58d6e8629$var$Bb(b), null !== b && $f716e3e58d6e8629$var$Ec(b)), a;\n a.eventSystemFlags |= d;\n b = a.targetContainers;\n null !== e && -1 === b.indexOf(e) && b.push(e);\n return a;\n}\nfunction $f716e3e58d6e8629$var$Tc(a, b, c, d, e) {\n switch(b){\n case \"focusin\":\n return $f716e3e58d6e8629$var$Kc = $f716e3e58d6e8629$var$Sc($f716e3e58d6e8629$var$Kc, a, b, c, d, e), !0;\n case \"dragenter\":\n return $f716e3e58d6e8629$var$Lc = $f716e3e58d6e8629$var$Sc($f716e3e58d6e8629$var$Lc, a, b, c, d, e), !0;\n case \"mouseover\":\n return $f716e3e58d6e8629$var$Mc = $f716e3e58d6e8629$var$Sc($f716e3e58d6e8629$var$Mc, a, b, c, d, e), !0;\n case \"pointerover\":\n var f = e.pointerId;\n $f716e3e58d6e8629$var$Nc.set(f, $f716e3e58d6e8629$var$Sc($f716e3e58d6e8629$var$Nc.get(f) || null, a, b, c, d, e));\n return !0;\n case \"gotpointercapture\":\n return f = e.pointerId, $f716e3e58d6e8629$var$Oc.set(f, $f716e3e58d6e8629$var$Sc($f716e3e58d6e8629$var$Oc.get(f) || null, a, b, c, d, e)), !0;\n }\n return !1;\n}\nfunction $f716e3e58d6e8629$var$Uc(a) {\n var b = $f716e3e58d6e8629$var$Vc(a.target);\n if (null !== b) {\n var c = $f716e3e58d6e8629$var$Ub(b);\n if (null !== c) {\n if (b = c.tag, 13 === b) {\n if (b = $f716e3e58d6e8629$var$Vb(c), null !== b) {\n a.blockedOn = b;\n $f716e3e58d6e8629$var$Hc(a.priority, function() {\n $f716e3e58d6e8629$var$Fc(c);\n });\n return;\n }\n } else if (3 === b && c.stateNode.current.memoizedState.isDehydrated) {\n a.blockedOn = 3 === c.tag ? c.stateNode.containerInfo : null;\n return;\n }\n }\n }\n a.blockedOn = null;\n}\nfunction $f716e3e58d6e8629$var$Wc(a) {\n if (null !== a.blockedOn) return !1;\n for(var b = a.targetContainers; 0 < b.length;){\n var c = $f716e3e58d6e8629$var$Xc(a.domEventName, a.eventSystemFlags, b[0], a.nativeEvent);\n if (null === c) {\n c = a.nativeEvent;\n var d = new c.constructor(c.type, c);\n $f716e3e58d6e8629$var$vb = d;\n c.target.dispatchEvent(d);\n $f716e3e58d6e8629$var$vb = null;\n } else return b = $f716e3e58d6e8629$var$Bb(c), null !== b && $f716e3e58d6e8629$var$Ec(b), a.blockedOn = c, !1;\n b.shift();\n }\n return !0;\n}\nfunction $f716e3e58d6e8629$var$Yc(a, b, c) {\n $f716e3e58d6e8629$var$Wc(a) && c.delete(b);\n}\nfunction $f716e3e58d6e8629$var$Zc() {\n $f716e3e58d6e8629$var$Ic = !1;\n null !== $f716e3e58d6e8629$var$Kc && $f716e3e58d6e8629$var$Wc($f716e3e58d6e8629$var$Kc) && ($f716e3e58d6e8629$var$Kc = null);\n null !== $f716e3e58d6e8629$var$Lc && $f716e3e58d6e8629$var$Wc($f716e3e58d6e8629$var$Lc) && ($f716e3e58d6e8629$var$Lc = null);\n null !== $f716e3e58d6e8629$var$Mc && $f716e3e58d6e8629$var$Wc($f716e3e58d6e8629$var$Mc) && ($f716e3e58d6e8629$var$Mc = null);\n $f716e3e58d6e8629$var$Nc.forEach($f716e3e58d6e8629$var$Yc);\n $f716e3e58d6e8629$var$Oc.forEach($f716e3e58d6e8629$var$Yc);\n}\nfunction $f716e3e58d6e8629$var$$c(a, b) {\n a.blockedOn === b && (a.blockedOn = null, $f716e3e58d6e8629$var$Ic || ($f716e3e58d6e8629$var$Ic = !0, $c2cCr.unstable_scheduleCallback($c2cCr.unstable_NormalPriority, $f716e3e58d6e8629$var$Zc)));\n}\nfunction $f716e3e58d6e8629$var$ad(a) {\n function b(b) {\n return $f716e3e58d6e8629$var$$c(b, a);\n }\n if (0 < $f716e3e58d6e8629$var$Jc.length) {\n $f716e3e58d6e8629$var$$c($f716e3e58d6e8629$var$Jc[0], a);\n for(var c = 1; c < $f716e3e58d6e8629$var$Jc.length; c++){\n var d = $f716e3e58d6e8629$var$Jc[c];\n d.blockedOn === a && (d.blockedOn = null);\n }\n }\n null !== $f716e3e58d6e8629$var$Kc && $f716e3e58d6e8629$var$$c($f716e3e58d6e8629$var$Kc, a);\n null !== $f716e3e58d6e8629$var$Lc && $f716e3e58d6e8629$var$$c($f716e3e58d6e8629$var$Lc, a);\n null !== $f716e3e58d6e8629$var$Mc && $f716e3e58d6e8629$var$$c($f716e3e58d6e8629$var$Mc, a);\n $f716e3e58d6e8629$var$Nc.forEach(b);\n $f716e3e58d6e8629$var$Oc.forEach(b);\n for(c = 0; c < $f716e3e58d6e8629$var$Pc.length; c++)d = $f716e3e58d6e8629$var$Pc[c], d.blockedOn === a && (d.blockedOn = null);\n for(; 0 < $f716e3e58d6e8629$var$Pc.length && (c = $f716e3e58d6e8629$var$Pc[0], null === c.blockedOn);)$f716e3e58d6e8629$var$Uc(c), null === c.blockedOn && $f716e3e58d6e8629$var$Pc.shift();\n}\nvar $f716e3e58d6e8629$var$bd = $f716e3e58d6e8629$var$ta.ReactCurrentBatchConfig, $f716e3e58d6e8629$var$cd = !0;\nfunction $f716e3e58d6e8629$var$dd(a, b, c, d) {\n var e = $f716e3e58d6e8629$var$C, f = $f716e3e58d6e8629$var$bd.transition;\n $f716e3e58d6e8629$var$bd.transition = null;\n try {\n $f716e3e58d6e8629$var$C = 1, $f716e3e58d6e8629$var$ed(a, b, c, d);\n } finally{\n $f716e3e58d6e8629$var$C = e, $f716e3e58d6e8629$var$bd.transition = f;\n }\n}\nfunction $f716e3e58d6e8629$var$fd(a, b, c, d) {\n var e = $f716e3e58d6e8629$var$C, f = $f716e3e58d6e8629$var$bd.transition;\n $f716e3e58d6e8629$var$bd.transition = null;\n try {\n $f716e3e58d6e8629$var$C = 4, $f716e3e58d6e8629$var$ed(a, b, c, d);\n } finally{\n $f716e3e58d6e8629$var$C = e, $f716e3e58d6e8629$var$bd.transition = f;\n }\n}\nfunction $f716e3e58d6e8629$var$ed(a, b, c, d) {\n if ($f716e3e58d6e8629$var$cd) {\n var e = $f716e3e58d6e8629$var$Xc(a, b, c, d);\n if (null === e) $f716e3e58d6e8629$var$gd(a, b, d, $f716e3e58d6e8629$var$hd, c), $f716e3e58d6e8629$var$Rc(a, d);\n else if ($f716e3e58d6e8629$var$Tc(e, a, b, c, d)) d.stopPropagation();\n else if ($f716e3e58d6e8629$var$Rc(a, d), b & 4 && -1 < $f716e3e58d6e8629$var$Qc.indexOf(a)) {\n for(; null !== e;){\n var f = $f716e3e58d6e8629$var$Bb(e);\n null !== f && $f716e3e58d6e8629$var$Dc(f);\n f = $f716e3e58d6e8629$var$Xc(a, b, c, d);\n null === f && $f716e3e58d6e8629$var$gd(a, b, d, $f716e3e58d6e8629$var$hd, c);\n if (f === e) break;\n e = f;\n }\n null !== e && d.stopPropagation();\n } else $f716e3e58d6e8629$var$gd(a, b, d, null, c);\n }\n}\nvar $f716e3e58d6e8629$var$hd = null;\nfunction $f716e3e58d6e8629$var$Xc(a, b, c, d) {\n $f716e3e58d6e8629$var$hd = null;\n a = $f716e3e58d6e8629$var$wb(d);\n a = $f716e3e58d6e8629$var$Vc(a);\n if (null !== a) {\n if (b = $f716e3e58d6e8629$var$Ub(a), null === b) a = null;\n else if (c = b.tag, 13 === c) {\n a = $f716e3e58d6e8629$var$Vb(b);\n if (null !== a) return a;\n a = null;\n } else if (3 === c) {\n if (b.stateNode.current.memoizedState.isDehydrated) return 3 === b.tag ? b.stateNode.containerInfo : null;\n a = null;\n } else b !== a && (a = null);\n }\n $f716e3e58d6e8629$var$hd = a;\n return null;\n}\nfunction $f716e3e58d6e8629$var$id(a) {\n switch(a){\n case \"cancel\":\n case \"click\":\n case \"close\":\n case \"contextmenu\":\n case \"copy\":\n case \"cut\":\n case \"auxclick\":\n case \"dblclick\":\n case \"dragend\":\n case \"dragstart\":\n case \"drop\":\n case \"focusin\":\n case \"focusout\":\n case \"input\":\n case \"invalid\":\n case \"keydown\":\n case \"keypress\":\n case \"keyup\":\n case \"mousedown\":\n case \"mouseup\":\n case \"paste\":\n case \"pause\":\n case \"play\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointerup\":\n case \"ratechange\":\n case \"reset\":\n case \"resize\":\n case \"seeked\":\n case \"submit\":\n case \"touchcancel\":\n case \"touchend\":\n case \"touchstart\":\n case \"volumechange\":\n case \"change\":\n case \"selectionchange\":\n case \"textInput\":\n case \"compositionstart\":\n case \"compositionend\":\n case \"compositionupdate\":\n case \"beforeblur\":\n case \"afterblur\":\n case \"beforeinput\":\n case \"blur\":\n case \"fullscreenchange\":\n case \"focus\":\n case \"hashchange\":\n case \"popstate\":\n case \"select\":\n case \"selectstart\":\n return 1;\n case \"drag\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"mousemove\":\n case \"mouseout\":\n case \"mouseover\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"scroll\":\n case \"toggle\":\n case \"touchmove\":\n case \"wheel\":\n case \"mouseenter\":\n case \"mouseleave\":\n case \"pointerenter\":\n case \"pointerleave\":\n return 4;\n case \"message\":\n switch($f716e3e58d6e8629$var$dc()){\n case $f716e3e58d6e8629$var$ec:\n return 1;\n case $f716e3e58d6e8629$var$fc:\n return 4;\n case $f716e3e58d6e8629$var$gc:\n case $f716e3e58d6e8629$var$hc:\n return 16;\n case $f716e3e58d6e8629$var$ic:\n return 536870912;\n default:\n return 16;\n }\n default:\n return 16;\n }\n}\nvar $f716e3e58d6e8629$var$jd = null, $f716e3e58d6e8629$var$kd = null, $f716e3e58d6e8629$var$ld = null;\nfunction $f716e3e58d6e8629$var$md() {\n if ($f716e3e58d6e8629$var$ld) return $f716e3e58d6e8629$var$ld;\n var a, b = $f716e3e58d6e8629$var$kd, c = b.length, d, e = \"value\" in $f716e3e58d6e8629$var$jd ? $f716e3e58d6e8629$var$jd.value : $f716e3e58d6e8629$var$jd.textContent, f = e.length;\n for(a = 0; a < c && b[a] === e[a]; a++);\n var g = c - a;\n for(d = 1; d <= g && b[c - d] === e[f - d]; d++);\n return $f716e3e58d6e8629$var$ld = e.slice(a, 1 < d ? 1 - d : void 0);\n}\nfunction $f716e3e58d6e8629$var$nd(a) {\n var b = a.keyCode;\n \"charCode\" in a ? (a = a.charCode, 0 === a && 13 === b && (a = 13)) : a = b;\n 10 === a && (a = 13);\n return 32 <= a || 13 === a ? a : 0;\n}\nfunction $f716e3e58d6e8629$var$od() {\n return !0;\n}\nfunction $f716e3e58d6e8629$var$pd() {\n return !1;\n}\nfunction $f716e3e58d6e8629$var$qd(a) {\n function b(b, d, e, f, g) {\n this._reactName = b;\n this._targetInst = e;\n this.type = d;\n this.nativeEvent = f;\n this.target = g;\n this.currentTarget = null;\n for(var c in a)a.hasOwnProperty(c) && (b = a[c], this[c] = b ? b(f) : f[c]);\n this.isDefaultPrevented = (null != f.defaultPrevented ? f.defaultPrevented : !1 === f.returnValue) ? $f716e3e58d6e8629$var$od : $f716e3e58d6e8629$var$pd;\n this.isPropagationStopped = $f716e3e58d6e8629$var$pd;\n return this;\n }\n $f716e3e58d6e8629$var$A(b.prototype, {\n preventDefault: function() {\n this.defaultPrevented = !0;\n var a = this.nativeEvent;\n a && (a.preventDefault ? a.preventDefault() : \"unknown\" !== typeof a.returnValue && (a.returnValue = !1), this.isDefaultPrevented = $f716e3e58d6e8629$var$od);\n },\n stopPropagation: function() {\n var a = this.nativeEvent;\n a && (a.stopPropagation ? a.stopPropagation() : \"unknown\" !== typeof a.cancelBubble && (a.cancelBubble = !0), this.isPropagationStopped = $f716e3e58d6e8629$var$od);\n },\n persist: function() {},\n isPersistent: $f716e3e58d6e8629$var$od\n });\n return b;\n}\nvar $f716e3e58d6e8629$var$rd = {\n eventPhase: 0,\n bubbles: 0,\n cancelable: 0,\n timeStamp: function(a) {\n return a.timeStamp || Date.now();\n },\n defaultPrevented: 0,\n isTrusted: 0\n}, $f716e3e58d6e8629$var$sd = $f716e3e58d6e8629$var$qd($f716e3e58d6e8629$var$rd), $f716e3e58d6e8629$var$td = $f716e3e58d6e8629$var$A({}, $f716e3e58d6e8629$var$rd, {\n view: 0,\n detail: 0\n}), $f716e3e58d6e8629$var$ud = $f716e3e58d6e8629$var$qd($f716e3e58d6e8629$var$td), $f716e3e58d6e8629$var$vd, $f716e3e58d6e8629$var$wd, $f716e3e58d6e8629$var$xd, $f716e3e58d6e8629$var$zd = $f716e3e58d6e8629$var$A({}, $f716e3e58d6e8629$var$td, {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n pageX: 0,\n pageY: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n getModifierState: $f716e3e58d6e8629$var$yd,\n button: 0,\n buttons: 0,\n relatedTarget: function(a) {\n return void 0 === a.relatedTarget ? a.fromElement === a.srcElement ? a.toElement : a.fromElement : a.relatedTarget;\n },\n movementX: function(a) {\n if (\"movementX\" in a) return a.movementX;\n a !== $f716e3e58d6e8629$var$xd && ($f716e3e58d6e8629$var$xd && \"mousemove\" === a.type ? ($f716e3e58d6e8629$var$vd = a.screenX - $f716e3e58d6e8629$var$xd.screenX, $f716e3e58d6e8629$var$wd = a.screenY - $f716e3e58d6e8629$var$xd.screenY) : $f716e3e58d6e8629$var$wd = $f716e3e58d6e8629$var$vd = 0, $f716e3e58d6e8629$var$xd = a);\n return $f716e3e58d6e8629$var$vd;\n },\n movementY: function(a) {\n return \"movementY\" in a ? a.movementY : $f716e3e58d6e8629$var$wd;\n }\n}), $f716e3e58d6e8629$var$Ad = $f716e3e58d6e8629$var$qd($f716e3e58d6e8629$var$zd), $f716e3e58d6e8629$var$Bd = $f716e3e58d6e8629$var$A({}, $f716e3e58d6e8629$var$zd, {\n dataTransfer: 0\n}), $f716e3e58d6e8629$var$Cd = $f716e3e58d6e8629$var$qd($f716e3e58d6e8629$var$Bd), $f716e3e58d6e8629$var$Dd = $f716e3e58d6e8629$var$A({}, $f716e3e58d6e8629$var$td, {\n relatedTarget: 0\n}), $f716e3e58d6e8629$var$Ed = $f716e3e58d6e8629$var$qd($f716e3e58d6e8629$var$Dd), $f716e3e58d6e8629$var$Fd = $f716e3e58d6e8629$var$A({}, $f716e3e58d6e8629$var$rd, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n}), $f716e3e58d6e8629$var$Gd = $f716e3e58d6e8629$var$qd($f716e3e58d6e8629$var$Fd), $f716e3e58d6e8629$var$Hd = $f716e3e58d6e8629$var$A({}, $f716e3e58d6e8629$var$rd, {\n clipboardData: function(a) {\n return \"clipboardData\" in a ? a.clipboardData : window.clipboardData;\n }\n}), $f716e3e58d6e8629$var$Id = $f716e3e58d6e8629$var$qd($f716e3e58d6e8629$var$Hd), $f716e3e58d6e8629$var$Jd = $f716e3e58d6e8629$var$A({}, $f716e3e58d6e8629$var$rd, {\n data: 0\n}), $f716e3e58d6e8629$var$Kd = $f716e3e58d6e8629$var$qd($f716e3e58d6e8629$var$Jd), $f716e3e58d6e8629$var$Ld = {\n Esc: \"Escape\",\n Spacebar: \" \",\n Left: \"ArrowLeft\",\n Up: \"ArrowUp\",\n Right: \"ArrowRight\",\n Down: \"ArrowDown\",\n Del: \"Delete\",\n Win: \"OS\",\n Menu: \"ContextMenu\",\n Apps: \"ContextMenu\",\n Scroll: \"ScrollLock\",\n MozPrintableKey: \"Unidentified\"\n}, $f716e3e58d6e8629$var$Md = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 12: \"Clear\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 45: \"Insert\",\n 46: \"Delete\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 224: \"Meta\"\n}, $f716e3e58d6e8629$var$Nd = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n};\nfunction $f716e3e58d6e8629$var$Od(a) {\n var b = this.nativeEvent;\n return b.getModifierState ? b.getModifierState(a) : (a = $f716e3e58d6e8629$var$Nd[a]) ? !!b[a] : !1;\n}\nfunction $f716e3e58d6e8629$var$yd() {\n return $f716e3e58d6e8629$var$Od;\n}\nvar $f716e3e58d6e8629$var$Pd = $f716e3e58d6e8629$var$A({}, $f716e3e58d6e8629$var$td, {\n key: function(a) {\n if (a.key) {\n var b = $f716e3e58d6e8629$var$Ld[a.key] || a.key;\n if (\"Unidentified\" !== b) return b;\n }\n return \"keypress\" === a.type ? (a = $f716e3e58d6e8629$var$nd(a), 13 === a ? \"Enter\" : String.fromCharCode(a)) : \"keydown\" === a.type || \"keyup\" === a.type ? $f716e3e58d6e8629$var$Md[a.keyCode] || \"Unidentified\" : \"\";\n },\n code: 0,\n location: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n repeat: 0,\n locale: 0,\n getModifierState: $f716e3e58d6e8629$var$yd,\n charCode: function(a) {\n return \"keypress\" === a.type ? $f716e3e58d6e8629$var$nd(a) : 0;\n },\n keyCode: function(a) {\n return \"keydown\" === a.type || \"keyup\" === a.type ? a.keyCode : 0;\n },\n which: function(a) {\n return \"keypress\" === a.type ? $f716e3e58d6e8629$var$nd(a) : \"keydown\" === a.type || \"keyup\" === a.type ? a.keyCode : 0;\n }\n}), $f716e3e58d6e8629$var$Qd = $f716e3e58d6e8629$var$qd($f716e3e58d6e8629$var$Pd), $f716e3e58d6e8629$var$Rd = $f716e3e58d6e8629$var$A({}, $f716e3e58d6e8629$var$zd, {\n pointerId: 0,\n width: 0,\n height: 0,\n pressure: 0,\n tangentialPressure: 0,\n tiltX: 0,\n tiltY: 0,\n twist: 0,\n pointerType: 0,\n isPrimary: 0\n}), $f716e3e58d6e8629$var$Sd = $f716e3e58d6e8629$var$qd($f716e3e58d6e8629$var$Rd), $f716e3e58d6e8629$var$Td = $f716e3e58d6e8629$var$A({}, $f716e3e58d6e8629$var$td, {\n touches: 0,\n targetTouches: 0,\n changedTouches: 0,\n altKey: 0,\n metaKey: 0,\n ctrlKey: 0,\n shiftKey: 0,\n getModifierState: $f716e3e58d6e8629$var$yd\n}), $f716e3e58d6e8629$var$Ud = $f716e3e58d6e8629$var$qd($f716e3e58d6e8629$var$Td), $f716e3e58d6e8629$var$Vd = $f716e3e58d6e8629$var$A({}, $f716e3e58d6e8629$var$rd, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n}), $f716e3e58d6e8629$var$Wd = $f716e3e58d6e8629$var$qd($f716e3e58d6e8629$var$Vd), $f716e3e58d6e8629$var$Xd = $f716e3e58d6e8629$var$A({}, $f716e3e58d6e8629$var$zd, {\n deltaX: function(a) {\n return \"deltaX\" in a ? a.deltaX : \"wheelDeltaX\" in a ? -a.wheelDeltaX : 0;\n },\n deltaY: function(a) {\n return \"deltaY\" in a ? a.deltaY : \"wheelDeltaY\" in a ? -a.wheelDeltaY : \"wheelDelta\" in a ? -a.wheelDelta : 0;\n },\n deltaZ: 0,\n deltaMode: 0\n}), $f716e3e58d6e8629$var$Yd = $f716e3e58d6e8629$var$qd($f716e3e58d6e8629$var$Xd), $f716e3e58d6e8629$var$Zd = [\n 9,\n 13,\n 27,\n 32\n], $f716e3e58d6e8629$var$$d = $f716e3e58d6e8629$var$ia && \"CompositionEvent\" in window, $f716e3e58d6e8629$var$ae = null;\n$f716e3e58d6e8629$var$ia && \"documentMode\" in document && ($f716e3e58d6e8629$var$ae = document.documentMode);\nvar $f716e3e58d6e8629$var$be = $f716e3e58d6e8629$var$ia && \"TextEvent\" in window && !$f716e3e58d6e8629$var$ae, $f716e3e58d6e8629$var$ce = $f716e3e58d6e8629$var$ia && (!$f716e3e58d6e8629$var$$d || $f716e3e58d6e8629$var$ae && 8 < $f716e3e58d6e8629$var$ae && 11 >= $f716e3e58d6e8629$var$ae), $f716e3e58d6e8629$var$de = String.fromCharCode(32), $f716e3e58d6e8629$var$ee = !1;\nfunction $f716e3e58d6e8629$var$fe(a, b) {\n switch(a){\n case \"keyup\":\n return -1 !== $f716e3e58d6e8629$var$Zd.indexOf(b.keyCode);\n case \"keydown\":\n return 229 !== b.keyCode;\n case \"keypress\":\n case \"mousedown\":\n case \"focusout\":\n return !0;\n default:\n return !1;\n }\n}\nfunction $f716e3e58d6e8629$var$ge(a) {\n a = a.detail;\n return \"object\" === typeof a && \"data\" in a ? a.data : null;\n}\nvar $f716e3e58d6e8629$var$he = !1;\nfunction $f716e3e58d6e8629$var$ie(a, b) {\n switch(a){\n case \"compositionend\":\n return $f716e3e58d6e8629$var$ge(b);\n case \"keypress\":\n if (32 !== b.which) return null;\n $f716e3e58d6e8629$var$ee = !0;\n return $f716e3e58d6e8629$var$de;\n case \"textInput\":\n return a = b.data, a === $f716e3e58d6e8629$var$de && $f716e3e58d6e8629$var$ee ? null : a;\n default:\n return null;\n }\n}\nfunction $f716e3e58d6e8629$var$je(a, b) {\n if ($f716e3e58d6e8629$var$he) return \"compositionend\" === a || !$f716e3e58d6e8629$var$$d && $f716e3e58d6e8629$var$fe(a, b) ? (a = $f716e3e58d6e8629$var$md(), $f716e3e58d6e8629$var$ld = $f716e3e58d6e8629$var$kd = $f716e3e58d6e8629$var$jd = null, $f716e3e58d6e8629$var$he = !1, a) : null;\n switch(a){\n case \"paste\":\n return null;\n case \"keypress\":\n if (!(b.ctrlKey || b.altKey || b.metaKey) || b.ctrlKey && b.altKey) {\n if (b.char && 1 < b.char.length) return b.char;\n if (b.which) return String.fromCharCode(b.which);\n }\n return null;\n case \"compositionend\":\n return $f716e3e58d6e8629$var$ce && \"ko\" !== b.locale ? null : b.data;\n default:\n return null;\n }\n}\nvar $f716e3e58d6e8629$var$ke = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n};\nfunction $f716e3e58d6e8629$var$le(a) {\n var b = a && a.nodeName && a.nodeName.toLowerCase();\n return \"input\" === b ? !!$f716e3e58d6e8629$var$ke[a.type] : \"textarea\" === b ? !0 : !1;\n}\nfunction $f716e3e58d6e8629$var$me(a, b, c, d) {\n $f716e3e58d6e8629$var$Db(d);\n b = $f716e3e58d6e8629$var$ne(b, \"onChange\");\n 0 < b.length && (c = new $f716e3e58d6e8629$var$sd(\"onChange\", \"change\", null, c, d), a.push({\n event: c,\n listeners: b\n }));\n}\nvar $f716e3e58d6e8629$var$oe = null, $f716e3e58d6e8629$var$pe = null;\nfunction $f716e3e58d6e8629$var$qe(a) {\n $f716e3e58d6e8629$var$re(a, 0);\n}\nfunction $f716e3e58d6e8629$var$se(a) {\n var b = $f716e3e58d6e8629$var$te(a);\n if ($f716e3e58d6e8629$var$Va(b)) return a;\n}\nfunction $f716e3e58d6e8629$var$ue(a, b) {\n if (\"change\" === a) return b;\n}\nvar $f716e3e58d6e8629$var$ve = !1;\nif ($f716e3e58d6e8629$var$ia) {\n var $f716e3e58d6e8629$var$we;\n if ($f716e3e58d6e8629$var$ia) {\n var $f716e3e58d6e8629$var$xe = \"oninput\" in document;\n if (!$f716e3e58d6e8629$var$xe) {\n var $f716e3e58d6e8629$var$ye = document.createElement(\"div\");\n $f716e3e58d6e8629$var$ye.setAttribute(\"oninput\", \"return;\");\n $f716e3e58d6e8629$var$xe = \"function\" === typeof $f716e3e58d6e8629$var$ye.oninput;\n }\n $f716e3e58d6e8629$var$we = $f716e3e58d6e8629$var$xe;\n } else $f716e3e58d6e8629$var$we = !1;\n $f716e3e58d6e8629$var$ve = $f716e3e58d6e8629$var$we && (!document.documentMode || 9 < document.documentMode);\n}\nfunction $f716e3e58d6e8629$var$ze() {\n $f716e3e58d6e8629$var$oe && ($f716e3e58d6e8629$var$oe.detachEvent(\"onpropertychange\", $f716e3e58d6e8629$var$Ae), $f716e3e58d6e8629$var$pe = $f716e3e58d6e8629$var$oe = null);\n}\nfunction $f716e3e58d6e8629$var$Ae(a) {\n if (\"value\" === a.propertyName && $f716e3e58d6e8629$var$se($f716e3e58d6e8629$var$pe)) {\n var b = [];\n $f716e3e58d6e8629$var$me(b, $f716e3e58d6e8629$var$pe, a, $f716e3e58d6e8629$var$wb(a));\n $f716e3e58d6e8629$var$Ib($f716e3e58d6e8629$var$qe, b);\n }\n}\nfunction $f716e3e58d6e8629$var$Be(a, b, c) {\n \"focusin\" === a ? ($f716e3e58d6e8629$var$ze(), $f716e3e58d6e8629$var$oe = b, $f716e3e58d6e8629$var$pe = c, $f716e3e58d6e8629$var$oe.attachEvent(\"onpropertychange\", $f716e3e58d6e8629$var$Ae)) : \"focusout\" === a && $f716e3e58d6e8629$var$ze();\n}\nfunction $f716e3e58d6e8629$var$Ce(a) {\n if (\"selectionchange\" === a || \"keyup\" === a || \"keydown\" === a) return $f716e3e58d6e8629$var$se($f716e3e58d6e8629$var$pe);\n}\nfunction $f716e3e58d6e8629$var$De(a, b) {\n if (\"click\" === a) return $f716e3e58d6e8629$var$se(b);\n}\nfunction $f716e3e58d6e8629$var$Ee(a, b) {\n if (\"input\" === a || \"change\" === a) return $f716e3e58d6e8629$var$se(b);\n}\nfunction $f716e3e58d6e8629$var$Fe(a, b) {\n return a === b && (0 !== a || 1 / a === 1 / b) || a !== a && b !== b;\n}\nvar $f716e3e58d6e8629$var$Ge = \"function\" === typeof Object.is ? Object.is : $f716e3e58d6e8629$var$Fe;\nfunction $f716e3e58d6e8629$var$He(a, b) {\n if ($f716e3e58d6e8629$var$Ge(a, b)) return !0;\n if (\"object\" !== typeof a || null === a || \"object\" !== typeof b || null === b) return !1;\n var c = Object.keys(a), d = Object.keys(b);\n if (c.length !== d.length) return !1;\n for(d = 0; d < c.length; d++){\n var e = c[d];\n if (!$f716e3e58d6e8629$var$ja.call(b, e) || !$f716e3e58d6e8629$var$Ge(a[e], b[e])) return !1;\n }\n return !0;\n}\nfunction $f716e3e58d6e8629$var$Ie(a) {\n for(; a && a.firstChild;)a = a.firstChild;\n return a;\n}\nfunction $f716e3e58d6e8629$var$Je(a, b) {\n var c = $f716e3e58d6e8629$var$Ie(a);\n a = 0;\n for(var d; c;){\n if (3 === c.nodeType) {\n d = a + c.textContent.length;\n if (a <= b && d >= b) return {\n node: c,\n offset: b - a\n };\n a = d;\n }\n a: {\n for(; c;){\n if (c.nextSibling) {\n c = c.nextSibling;\n break a;\n }\n c = c.parentNode;\n }\n c = void 0;\n }\n c = $f716e3e58d6e8629$var$Ie(c);\n }\n}\nfunction $f716e3e58d6e8629$var$Ke(a, b) {\n return a && b ? a === b ? !0 : a && 3 === a.nodeType ? !1 : b && 3 === b.nodeType ? $f716e3e58d6e8629$var$Ke(a, b.parentNode) : \"contains\" in a ? a.contains(b) : a.compareDocumentPosition ? !!(a.compareDocumentPosition(b) & 16) : !1 : !1;\n}\nfunction $f716e3e58d6e8629$var$Le() {\n for(var a = window, b = $f716e3e58d6e8629$var$Wa(); b instanceof a.HTMLIFrameElement;){\n try {\n var c = \"string\" === typeof b.contentWindow.location.href;\n } catch (d) {\n c = !1;\n }\n if (c) a = b.contentWindow;\n else break;\n b = $f716e3e58d6e8629$var$Wa(a.document);\n }\n return b;\n}\nfunction $f716e3e58d6e8629$var$Me(a) {\n var b = a && a.nodeName && a.nodeName.toLowerCase();\n return b && (\"input\" === b && (\"text\" === a.type || \"search\" === a.type || \"tel\" === a.type || \"url\" === a.type || \"password\" === a.type) || \"textarea\" === b || \"true\" === a.contentEditable);\n}\nfunction $f716e3e58d6e8629$var$Ne(a) {\n var b = $f716e3e58d6e8629$var$Le(), c = a.focusedElem, d = a.selectionRange;\n if (b !== c && c && c.ownerDocument && $f716e3e58d6e8629$var$Ke(c.ownerDocument.documentElement, c)) {\n if (null !== d && $f716e3e58d6e8629$var$Me(c)) {\n if (b = d.start, a = d.end, void 0 === a && (a = b), \"selectionStart\" in c) c.selectionStart = b, c.selectionEnd = Math.min(a, c.value.length);\n else if (a = (b = c.ownerDocument || document) && b.defaultView || window, a.getSelection) {\n a = a.getSelection();\n var e = c.textContent.length, f = Math.min(d.start, e);\n d = void 0 === d.end ? f : Math.min(d.end, e);\n !a.extend && f > d && (e = d, d = f, f = e);\n e = $f716e3e58d6e8629$var$Je(c, f);\n var g = $f716e3e58d6e8629$var$Je(c, d);\n e && g && (1 !== a.rangeCount || a.anchorNode !== e.node || a.anchorOffset !== e.offset || a.focusNode !== g.node || a.focusOffset !== g.offset) && (b = b.createRange(), b.setStart(e.node, e.offset), a.removeAllRanges(), f > d ? (a.addRange(b), a.extend(g.node, g.offset)) : (b.setEnd(g.node, g.offset), a.addRange(b)));\n }\n }\n b = [];\n for(a = c; a = a.parentNode;)1 === a.nodeType && b.push({\n element: a,\n left: a.scrollLeft,\n top: a.scrollTop\n });\n \"function\" === typeof c.focus && c.focus();\n for(c = 0; c < b.length; c++)a = b[c], a.element.scrollLeft = a.left, a.element.scrollTop = a.top;\n }\n}\nvar $f716e3e58d6e8629$var$Oe = $f716e3e58d6e8629$var$ia && \"documentMode\" in document && 11 >= document.documentMode, $f716e3e58d6e8629$var$Pe = null, $f716e3e58d6e8629$var$Qe = null, $f716e3e58d6e8629$var$Re = null, $f716e3e58d6e8629$var$Se = !1;\nfunction $f716e3e58d6e8629$var$Te(a, b, c) {\n var d = c.window === c ? c.document : 9 === c.nodeType ? c : c.ownerDocument;\n $f716e3e58d6e8629$var$Se || null == $f716e3e58d6e8629$var$Pe || $f716e3e58d6e8629$var$Pe !== $f716e3e58d6e8629$var$Wa(d) || (d = $f716e3e58d6e8629$var$Pe, \"selectionStart\" in d && $f716e3e58d6e8629$var$Me(d) ? d = {\n start: d.selectionStart,\n end: d.selectionEnd\n } : (d = (d.ownerDocument && d.ownerDocument.defaultView || window).getSelection(), d = {\n anchorNode: d.anchorNode,\n anchorOffset: d.anchorOffset,\n focusNode: d.focusNode,\n focusOffset: d.focusOffset\n }), $f716e3e58d6e8629$var$Re && $f716e3e58d6e8629$var$He($f716e3e58d6e8629$var$Re, d) || ($f716e3e58d6e8629$var$Re = d, d = $f716e3e58d6e8629$var$ne($f716e3e58d6e8629$var$Qe, \"onSelect\"), 0 < d.length && (b = new $f716e3e58d6e8629$var$sd(\"onSelect\", \"select\", null, b, c), a.push({\n event: b,\n listeners: d\n }), b.target = $f716e3e58d6e8629$var$Pe)));\n}\nfunction $f716e3e58d6e8629$var$Ue(a, b) {\n var c = {};\n c[a.toLowerCase()] = b.toLowerCase();\n c[\"Webkit\" + a] = \"webkit\" + b;\n c[\"Moz\" + a] = \"moz\" + b;\n return c;\n}\nvar $f716e3e58d6e8629$var$Ve = {\n animationend: $f716e3e58d6e8629$var$Ue(\"Animation\", \"AnimationEnd\"),\n animationiteration: $f716e3e58d6e8629$var$Ue(\"Animation\", \"AnimationIteration\"),\n animationstart: $f716e3e58d6e8629$var$Ue(\"Animation\", \"AnimationStart\"),\n transitionend: $f716e3e58d6e8629$var$Ue(\"Transition\", \"TransitionEnd\")\n}, $f716e3e58d6e8629$var$We = {}, $f716e3e58d6e8629$var$Xe = {};\n$f716e3e58d6e8629$var$ia && ($f716e3e58d6e8629$var$Xe = document.createElement(\"div\").style, \"AnimationEvent\" in window || (delete $f716e3e58d6e8629$var$Ve.animationend.animation, delete $f716e3e58d6e8629$var$Ve.animationiteration.animation, delete $f716e3e58d6e8629$var$Ve.animationstart.animation), \"TransitionEvent\" in window || delete $f716e3e58d6e8629$var$Ve.transitionend.transition);\nfunction $f716e3e58d6e8629$var$Ye(a) {\n if ($f716e3e58d6e8629$var$We[a]) return $f716e3e58d6e8629$var$We[a];\n if (!$f716e3e58d6e8629$var$Ve[a]) return a;\n var b = $f716e3e58d6e8629$var$Ve[a], c;\n for(c in b)if (b.hasOwnProperty(c) && c in $f716e3e58d6e8629$var$Xe) return $f716e3e58d6e8629$var$We[a] = b[c];\n return a;\n}\nvar $f716e3e58d6e8629$var$Ze = $f716e3e58d6e8629$var$Ye(\"animationend\"), $f716e3e58d6e8629$var$$e = $f716e3e58d6e8629$var$Ye(\"animationiteration\"), $f716e3e58d6e8629$var$af = $f716e3e58d6e8629$var$Ye(\"animationstart\"), $f716e3e58d6e8629$var$bf = $f716e3e58d6e8629$var$Ye(\"transitionend\"), $f716e3e58d6e8629$var$cf = new Map, $f716e3e58d6e8629$var$df = \"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction $f716e3e58d6e8629$var$ef(a, b) {\n $f716e3e58d6e8629$var$cf.set(a, b);\n $f716e3e58d6e8629$var$fa(b, [\n a\n ]);\n}\nfor(var $f716e3e58d6e8629$var$ff = 0; $f716e3e58d6e8629$var$ff < $f716e3e58d6e8629$var$df.length; $f716e3e58d6e8629$var$ff++){\n var $f716e3e58d6e8629$var$gf = $f716e3e58d6e8629$var$df[$f716e3e58d6e8629$var$ff], $f716e3e58d6e8629$var$hf = $f716e3e58d6e8629$var$gf.toLowerCase(), $f716e3e58d6e8629$var$jf = $f716e3e58d6e8629$var$gf[0].toUpperCase() + $f716e3e58d6e8629$var$gf.slice(1);\n $f716e3e58d6e8629$var$ef($f716e3e58d6e8629$var$hf, \"on\" + $f716e3e58d6e8629$var$jf);\n}\n$f716e3e58d6e8629$var$ef($f716e3e58d6e8629$var$Ze, \"onAnimationEnd\");\n$f716e3e58d6e8629$var$ef($f716e3e58d6e8629$var$$e, \"onAnimationIteration\");\n$f716e3e58d6e8629$var$ef($f716e3e58d6e8629$var$af, \"onAnimationStart\");\n$f716e3e58d6e8629$var$ef(\"dblclick\", \"onDoubleClick\");\n$f716e3e58d6e8629$var$ef(\"focusin\", \"onFocus\");\n$f716e3e58d6e8629$var$ef(\"focusout\", \"onBlur\");\n$f716e3e58d6e8629$var$ef($f716e3e58d6e8629$var$bf, \"onTransitionEnd\");\n$f716e3e58d6e8629$var$ha(\"onMouseEnter\", [\n \"mouseout\",\n \"mouseover\"\n]);\n$f716e3e58d6e8629$var$ha(\"onMouseLeave\", [\n \"mouseout\",\n \"mouseover\"\n]);\n$f716e3e58d6e8629$var$ha(\"onPointerEnter\", [\n \"pointerout\",\n \"pointerover\"\n]);\n$f716e3e58d6e8629$var$ha(\"onPointerLeave\", [\n \"pointerout\",\n \"pointerover\"\n]);\n$f716e3e58d6e8629$var$fa(\"onChange\", \"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));\n$f716e3e58d6e8629$var$fa(\"onSelect\", \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));\n$f716e3e58d6e8629$var$fa(\"onBeforeInput\", [\n \"compositionend\",\n \"keypress\",\n \"textInput\",\n \"paste\"\n]);\n$f716e3e58d6e8629$var$fa(\"onCompositionEnd\", \"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\n$f716e3e58d6e8629$var$fa(\"onCompositionStart\", \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\n$f716e3e58d6e8629$var$fa(\"onCompositionUpdate\", \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));\nvar $f716e3e58d6e8629$var$kf = \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"), $f716e3e58d6e8629$var$lf = new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat($f716e3e58d6e8629$var$kf));\nfunction $f716e3e58d6e8629$var$mf(a, b, c) {\n var d = a.type || \"unknown-event\";\n a.currentTarget = c;\n $f716e3e58d6e8629$var$Tb(d, b, void 0, a);\n a.currentTarget = null;\n}\nfunction $f716e3e58d6e8629$var$re(a, b) {\n b = 0 !== (b & 4);\n for(var c = 0; c < a.length; c++){\n var d = a[c], e = d.event;\n d = d.listeners;\n a: {\n var f = void 0;\n if (b) for(var g = d.length - 1; 0 <= g; g--){\n var h = d[g], k = h.instance, l = h.currentTarget;\n h = h.listener;\n if (k !== f && e.isPropagationStopped()) break a;\n $f716e3e58d6e8629$var$mf(e, h, l);\n f = k;\n }\n else for(g = 0; g < d.length; g++){\n h = d[g];\n k = h.instance;\n l = h.currentTarget;\n h = h.listener;\n if (k !== f && e.isPropagationStopped()) break a;\n $f716e3e58d6e8629$var$mf(e, h, l);\n f = k;\n }\n }\n }\n if ($f716e3e58d6e8629$var$Pb) throw a = $f716e3e58d6e8629$var$Qb, $f716e3e58d6e8629$var$Pb = !1, $f716e3e58d6e8629$var$Qb = null, a;\n}\nfunction $f716e3e58d6e8629$var$D(a, b) {\n var c = b[$f716e3e58d6e8629$var$nf];\n void 0 === c && (c = b[$f716e3e58d6e8629$var$nf] = new Set);\n var d = a + \"__bubble\";\n c.has(d) || ($f716e3e58d6e8629$var$of(b, a, 2, !1), c.add(d));\n}\nfunction $f716e3e58d6e8629$var$pf(a, b, c) {\n var d = 0;\n b && (d |= 4);\n $f716e3e58d6e8629$var$of(c, a, d, b);\n}\nvar $f716e3e58d6e8629$var$qf = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction $f716e3e58d6e8629$var$rf(a) {\n if (!a[$f716e3e58d6e8629$var$qf]) {\n a[$f716e3e58d6e8629$var$qf] = !0;\n $f716e3e58d6e8629$var$da.forEach(function(b) {\n \"selectionchange\" !== b && ($f716e3e58d6e8629$var$lf.has(b) || $f716e3e58d6e8629$var$pf(b, !1, a), $f716e3e58d6e8629$var$pf(b, !0, a));\n });\n var b = 9 === a.nodeType ? a : a.ownerDocument;\n null === b || b[$f716e3e58d6e8629$var$qf] || (b[$f716e3e58d6e8629$var$qf] = !0, $f716e3e58d6e8629$var$pf(\"selectionchange\", !1, b));\n }\n}\nfunction $f716e3e58d6e8629$var$of(a, b, c, d) {\n switch($f716e3e58d6e8629$var$id(b)){\n case 1:\n var e = $f716e3e58d6e8629$var$dd;\n break;\n case 4:\n e = $f716e3e58d6e8629$var$fd;\n break;\n default:\n e = $f716e3e58d6e8629$var$ed;\n }\n c = e.bind(null, b, c, a);\n e = void 0;\n !$f716e3e58d6e8629$var$Kb || \"touchstart\" !== b && \"touchmove\" !== b && \"wheel\" !== b || (e = !0);\n d ? void 0 !== e ? a.addEventListener(b, c, {\n capture: !0,\n passive: e\n }) : a.addEventListener(b, c, !0) : void 0 !== e ? a.addEventListener(b, c, {\n passive: e\n }) : a.addEventListener(b, c, !1);\n}\nfunction $f716e3e58d6e8629$var$gd(a, b, c, d, e) {\n var f = d;\n if (0 === (b & 1) && 0 === (b & 2) && null !== d) a: for(;;){\n if (null === d) return;\n var g = d.tag;\n if (3 === g || 4 === g) {\n var h = d.stateNode.containerInfo;\n if (h === e || 8 === h.nodeType && h.parentNode === e) break;\n if (4 === g) for(g = d.return; null !== g;){\n var k = g.tag;\n if (3 === k || 4 === k) {\n if (k = g.stateNode.containerInfo, k === e || 8 === k.nodeType && k.parentNode === e) return;\n }\n g = g.return;\n }\n for(; null !== h;){\n g = $f716e3e58d6e8629$var$Vc(h);\n if (null === g) return;\n k = g.tag;\n if (5 === k || 6 === k) {\n d = f = g;\n continue a;\n }\n h = h.parentNode;\n }\n }\n d = d.return;\n }\n $f716e3e58d6e8629$var$Ib(function() {\n var d = f, e = $f716e3e58d6e8629$var$wb(c), g = [];\n a: {\n var h = $f716e3e58d6e8629$var$cf.get(a);\n if (void 0 !== h) {\n var k = $f716e3e58d6e8629$var$sd, m = a;\n switch(a){\n case \"keypress\":\n if (0 === $f716e3e58d6e8629$var$nd(c)) break a;\n case \"keydown\":\n case \"keyup\":\n k = $f716e3e58d6e8629$var$Qd;\n break;\n case \"focusin\":\n m = \"focus\";\n k = $f716e3e58d6e8629$var$Ed;\n break;\n case \"focusout\":\n m = \"blur\";\n k = $f716e3e58d6e8629$var$Ed;\n break;\n case \"beforeblur\":\n case \"afterblur\":\n k = $f716e3e58d6e8629$var$Ed;\n break;\n case \"click\":\n if (2 === c.button) break a;\n case \"auxclick\":\n case \"dblclick\":\n case \"mousedown\":\n case \"mousemove\":\n case \"mouseup\":\n case \"mouseout\":\n case \"mouseover\":\n case \"contextmenu\":\n k = $f716e3e58d6e8629$var$Ad;\n break;\n case \"drag\":\n case \"dragend\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"dragstart\":\n case \"drop\":\n k = $f716e3e58d6e8629$var$Cd;\n break;\n case \"touchcancel\":\n case \"touchend\":\n case \"touchmove\":\n case \"touchstart\":\n k = $f716e3e58d6e8629$var$Ud;\n break;\n case $f716e3e58d6e8629$var$Ze:\n case $f716e3e58d6e8629$var$$e:\n case $f716e3e58d6e8629$var$af:\n k = $f716e3e58d6e8629$var$Gd;\n break;\n case $f716e3e58d6e8629$var$bf:\n k = $f716e3e58d6e8629$var$Wd;\n break;\n case \"scroll\":\n k = $f716e3e58d6e8629$var$ud;\n break;\n case \"wheel\":\n k = $f716e3e58d6e8629$var$Yd;\n break;\n case \"copy\":\n case \"cut\":\n case \"paste\":\n k = $f716e3e58d6e8629$var$Id;\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"pointerup\":\n k = $f716e3e58d6e8629$var$Sd;\n }\n var w = 0 !== (b & 4), J = !w && \"scroll\" === a, v = w ? null !== h ? h + \"Capture\" : null : h;\n w = [];\n for(var x = d, r; null !== x;){\n r = x;\n var F = r.stateNode;\n 5 === r.tag && null !== F && (r = F, null !== v && (F = $f716e3e58d6e8629$var$Jb(x, v), null != F && w.push($f716e3e58d6e8629$var$sf(x, F, r))));\n if (J) break;\n x = x.return;\n }\n 0 < w.length && (h = new k(h, m, null, c, e), g.push({\n event: h,\n listeners: w\n }));\n }\n }\n if (0 === (b & 7)) {\n a: {\n h = \"mouseover\" === a || \"pointerover\" === a;\n k = \"mouseout\" === a || \"pointerout\" === a;\n if (h && c !== $f716e3e58d6e8629$var$vb && (m = c.relatedTarget || c.fromElement) && ($f716e3e58d6e8629$var$Vc(m) || m[$f716e3e58d6e8629$var$tf])) break a;\n if (k || h) {\n h = e.window === e ? e : (h = e.ownerDocument) ? h.defaultView || h.parentWindow : window;\n if (k) {\n if (m = c.relatedTarget || c.toElement, k = d, m = m ? $f716e3e58d6e8629$var$Vc(m) : null, null !== m && (J = $f716e3e58d6e8629$var$Ub(m), m !== J || 5 !== m.tag && 6 !== m.tag)) m = null;\n } else k = null, m = d;\n if (k !== m) {\n w = $f716e3e58d6e8629$var$Ad;\n F = \"onMouseLeave\";\n v = \"onMouseEnter\";\n x = \"mouse\";\n if (\"pointerout\" === a || \"pointerover\" === a) w = $f716e3e58d6e8629$var$Sd, F = \"onPointerLeave\", v = \"onPointerEnter\", x = \"pointer\";\n J = null == k ? h : $f716e3e58d6e8629$var$te(k);\n r = null == m ? h : $f716e3e58d6e8629$var$te(m);\n h = new w(F, x + \"leave\", k, c, e);\n h.target = J;\n h.relatedTarget = r;\n F = null;\n $f716e3e58d6e8629$var$Vc(e) === d && (w = new w(v, x + \"enter\", m, c, e), w.target = r, w.relatedTarget = J, F = w);\n J = F;\n if (k && m) b: {\n w = k;\n v = m;\n x = 0;\n for(r = w; r; r = $f716e3e58d6e8629$var$uf(r))x++;\n r = 0;\n for(F = v; F; F = $f716e3e58d6e8629$var$uf(F))r++;\n for(; 0 < x - r;)w = $f716e3e58d6e8629$var$uf(w), x--;\n for(; 0 < r - x;)v = $f716e3e58d6e8629$var$uf(v), r--;\n for(; x--;){\n if (w === v || null !== v && w === v.alternate) break b;\n w = $f716e3e58d6e8629$var$uf(w);\n v = $f716e3e58d6e8629$var$uf(v);\n }\n w = null;\n }\n else w = null;\n null !== k && $f716e3e58d6e8629$var$vf(g, h, k, w, !1);\n null !== m && null !== J && $f716e3e58d6e8629$var$vf(g, J, m, w, !0);\n }\n }\n }\n a: {\n h = d ? $f716e3e58d6e8629$var$te(d) : window;\n k = h.nodeName && h.nodeName.toLowerCase();\n if (\"select\" === k || \"input\" === k && \"file\" === h.type) var Z = $f716e3e58d6e8629$var$ue;\n else if ($f716e3e58d6e8629$var$le(h)) {\n if ($f716e3e58d6e8629$var$ve) Z = $f716e3e58d6e8629$var$Ee;\n else {\n Z = $f716e3e58d6e8629$var$Ce;\n var ya = $f716e3e58d6e8629$var$Be;\n }\n } else (k = h.nodeName) && \"input\" === k.toLowerCase() && (\"checkbox\" === h.type || \"radio\" === h.type) && (Z = $f716e3e58d6e8629$var$De);\n if (Z && (Z = Z(a, d))) {\n $f716e3e58d6e8629$var$me(g, Z, c, e);\n break a;\n }\n ya && ya(a, h, d);\n \"focusout\" === a && (ya = h._wrapperState) && ya.controlled && \"number\" === h.type && $f716e3e58d6e8629$var$bb(h, \"number\", h.value);\n }\n ya = d ? $f716e3e58d6e8629$var$te(d) : window;\n switch(a){\n case \"focusin\":\n if ($f716e3e58d6e8629$var$le(ya) || \"true\" === ya.contentEditable) $f716e3e58d6e8629$var$Pe = ya, $f716e3e58d6e8629$var$Qe = d, $f716e3e58d6e8629$var$Re = null;\n break;\n case \"focusout\":\n $f716e3e58d6e8629$var$Re = $f716e3e58d6e8629$var$Qe = $f716e3e58d6e8629$var$Pe = null;\n break;\n case \"mousedown\":\n $f716e3e58d6e8629$var$Se = !0;\n break;\n case \"contextmenu\":\n case \"mouseup\":\n case \"dragend\":\n $f716e3e58d6e8629$var$Se = !1;\n $f716e3e58d6e8629$var$Te(g, c, e);\n break;\n case \"selectionchange\":\n if ($f716e3e58d6e8629$var$Oe) break;\n case \"keydown\":\n case \"keyup\":\n $f716e3e58d6e8629$var$Te(g, c, e);\n }\n var ab;\n if ($f716e3e58d6e8629$var$$d) b: {\n switch(a){\n case \"compositionstart\":\n var ca = \"onCompositionStart\";\n break b;\n case \"compositionend\":\n ca = \"onCompositionEnd\";\n break b;\n case \"compositionupdate\":\n ca = \"onCompositionUpdate\";\n break b;\n }\n ca = void 0;\n }\n else $f716e3e58d6e8629$var$he ? $f716e3e58d6e8629$var$fe(a, c) && (ca = \"onCompositionEnd\") : \"keydown\" === a && 229 === c.keyCode && (ca = \"onCompositionStart\");\n ca && ($f716e3e58d6e8629$var$ce && \"ko\" !== c.locale && ($f716e3e58d6e8629$var$he || \"onCompositionStart\" !== ca ? \"onCompositionEnd\" === ca && $f716e3e58d6e8629$var$he && (ab = $f716e3e58d6e8629$var$md()) : ($f716e3e58d6e8629$var$jd = e, $f716e3e58d6e8629$var$kd = \"value\" in $f716e3e58d6e8629$var$jd ? $f716e3e58d6e8629$var$jd.value : $f716e3e58d6e8629$var$jd.textContent, $f716e3e58d6e8629$var$he = !0)), ya = $f716e3e58d6e8629$var$ne(d, ca), 0 < ya.length && (ca = new $f716e3e58d6e8629$var$Kd(ca, a, null, c, e), g.push({\n event: ca,\n listeners: ya\n }), ab ? ca.data = ab : (ab = $f716e3e58d6e8629$var$ge(c), null !== ab && (ca.data = ab))));\n if (ab = $f716e3e58d6e8629$var$be ? $f716e3e58d6e8629$var$ie(a, c) : $f716e3e58d6e8629$var$je(a, c)) d = $f716e3e58d6e8629$var$ne(d, \"onBeforeInput\"), 0 < d.length && (e = new $f716e3e58d6e8629$var$Kd(\"onBeforeInput\", \"beforeinput\", null, c, e), g.push({\n event: e,\n listeners: d\n }), e.data = ab);\n }\n $f716e3e58d6e8629$var$re(g, b);\n });\n}\nfunction $f716e3e58d6e8629$var$sf(a, b, c) {\n return {\n instance: a,\n listener: b,\n currentTarget: c\n };\n}\nfunction $f716e3e58d6e8629$var$ne(a, b) {\n for(var c = b + \"Capture\", d = []; null !== a;){\n var e = a, f = e.stateNode;\n 5 === e.tag && null !== f && (e = f, f = $f716e3e58d6e8629$var$Jb(a, c), null != f && d.unshift($f716e3e58d6e8629$var$sf(a, f, e)), f = $f716e3e58d6e8629$var$Jb(a, b), null != f && d.push($f716e3e58d6e8629$var$sf(a, f, e)));\n a = a.return;\n }\n return d;\n}\nfunction $f716e3e58d6e8629$var$uf(a) {\n if (null === a) return null;\n do a = a.return;\n while (a && 5 !== a.tag);\n return a ? a : null;\n}\nfunction $f716e3e58d6e8629$var$vf(a, b, c, d, e) {\n for(var f = b._reactName, g = []; null !== c && c !== d;){\n var h = c, k = h.alternate, l = h.stateNode;\n if (null !== k && k === d) break;\n 5 === h.tag && null !== l && (h = l, e ? (k = $f716e3e58d6e8629$var$Jb(c, f), null != k && g.unshift($f716e3e58d6e8629$var$sf(c, k, h))) : e || (k = $f716e3e58d6e8629$var$Jb(c, f), null != k && g.push($f716e3e58d6e8629$var$sf(c, k, h))));\n c = c.return;\n }\n 0 !== g.length && a.push({\n event: b,\n listeners: g\n });\n}\nvar $f716e3e58d6e8629$var$wf = /\\r\\n?/g, $f716e3e58d6e8629$var$xf = /\\u0000|\\uFFFD/g;\nfunction $f716e3e58d6e8629$var$yf(a) {\n return (\"string\" === typeof a ? a : \"\" + a).replace($f716e3e58d6e8629$var$wf, \"\\n\").replace($f716e3e58d6e8629$var$xf, \"\");\n}\nfunction $f716e3e58d6e8629$var$zf(a, b, c) {\n b = $f716e3e58d6e8629$var$yf(b);\n if ($f716e3e58d6e8629$var$yf(a) !== b && c) throw Error($f716e3e58d6e8629$var$p(425));\n}\nfunction $f716e3e58d6e8629$var$Af() {}\nvar $f716e3e58d6e8629$var$Bf = null, $f716e3e58d6e8629$var$Cf = null;\nfunction $f716e3e58d6e8629$var$Df(a, b) {\n return \"textarea\" === a || \"noscript\" === a || \"string\" === typeof b.children || \"number\" === typeof b.children || \"object\" === typeof b.dangerouslySetInnerHTML && null !== b.dangerouslySetInnerHTML && null != b.dangerouslySetInnerHTML.__html;\n}\nvar $f716e3e58d6e8629$var$Ef = \"function\" === typeof setTimeout ? setTimeout : void 0, $f716e3e58d6e8629$var$Ff = \"function\" === typeof clearTimeout ? clearTimeout : void 0, $f716e3e58d6e8629$var$Gf = \"function\" === typeof Promise ? Promise : void 0, $f716e3e58d6e8629$var$If = \"function\" === typeof queueMicrotask ? queueMicrotask : \"undefined\" !== typeof $f716e3e58d6e8629$var$Gf ? function(a) {\n return $f716e3e58d6e8629$var$Gf.resolve(null).then(a).catch($f716e3e58d6e8629$var$Hf);\n} : $f716e3e58d6e8629$var$Ef;\nfunction $f716e3e58d6e8629$var$Hf(a) {\n setTimeout(function() {\n throw a;\n });\n}\nfunction $f716e3e58d6e8629$var$Jf(a, b) {\n var c = b, d = 0;\n do {\n var e = c.nextSibling;\n a.removeChild(c);\n if (e && 8 === e.nodeType) {\n if (c = e.data, \"/$\" === c) {\n if (0 === d) {\n a.removeChild(e);\n $f716e3e58d6e8629$var$ad(b);\n return;\n }\n d--;\n } else \"$\" !== c && \"$?\" !== c && \"$!\" !== c || d++;\n }\n c = e;\n }while (c);\n $f716e3e58d6e8629$var$ad(b);\n}\nfunction $f716e3e58d6e8629$var$Kf(a) {\n for(; null != a; a = a.nextSibling){\n var b = a.nodeType;\n if (1 === b || 3 === b) break;\n if (8 === b) {\n b = a.data;\n if (\"$\" === b || \"$!\" === b || \"$?\" === b) break;\n if (\"/$\" === b) return null;\n }\n }\n return a;\n}\nfunction $f716e3e58d6e8629$var$Lf(a) {\n a = a.previousSibling;\n for(var b = 0; a;){\n if (8 === a.nodeType) {\n var c = a.data;\n if (\"$\" === c || \"$!\" === c || \"$?\" === c) {\n if (0 === b) return a;\n b--;\n } else \"/$\" === c && b++;\n }\n a = a.previousSibling;\n }\n return null;\n}\nvar $f716e3e58d6e8629$var$Mf = Math.random().toString(36).slice(2), $f716e3e58d6e8629$var$Nf = \"__reactFiber$\" + $f716e3e58d6e8629$var$Mf, $f716e3e58d6e8629$var$Of = \"__reactProps$\" + $f716e3e58d6e8629$var$Mf, $f716e3e58d6e8629$var$tf = \"__reactContainer$\" + $f716e3e58d6e8629$var$Mf, $f716e3e58d6e8629$var$nf = \"__reactEvents$\" + $f716e3e58d6e8629$var$Mf, $f716e3e58d6e8629$var$Pf = \"__reactListeners$\" + $f716e3e58d6e8629$var$Mf, $f716e3e58d6e8629$var$Qf = \"__reactHandles$\" + $f716e3e58d6e8629$var$Mf;\nfunction $f716e3e58d6e8629$var$Vc(a) {\n var b = a[$f716e3e58d6e8629$var$Nf];\n if (b) return b;\n for(var c = a.parentNode; c;){\n if (b = c[$f716e3e58d6e8629$var$tf] || c[$f716e3e58d6e8629$var$Nf]) {\n c = b.alternate;\n if (null !== b.child || null !== c && null !== c.child) for(a = $f716e3e58d6e8629$var$Lf(a); null !== a;){\n if (c = a[$f716e3e58d6e8629$var$Nf]) return c;\n a = $f716e3e58d6e8629$var$Lf(a);\n }\n return b;\n }\n a = c;\n c = a.parentNode;\n }\n return null;\n}\nfunction $f716e3e58d6e8629$var$Bb(a) {\n a = a[$f716e3e58d6e8629$var$Nf] || a[$f716e3e58d6e8629$var$tf];\n return !a || 5 !== a.tag && 6 !== a.tag && 13 !== a.tag && 3 !== a.tag ? null : a;\n}\nfunction $f716e3e58d6e8629$var$te(a) {\n if (5 === a.tag || 6 === a.tag) return a.stateNode;\n throw Error($f716e3e58d6e8629$var$p(33));\n}\nfunction $f716e3e58d6e8629$var$Cb(a) {\n return a[$f716e3e58d6e8629$var$Of] || null;\n}\nvar $f716e3e58d6e8629$var$Rf = [], $f716e3e58d6e8629$var$Sf = -1;\nfunction $f716e3e58d6e8629$var$Tf(a) {\n return {\n current: a\n };\n}\nfunction $f716e3e58d6e8629$var$E(a) {\n 0 > $f716e3e58d6e8629$var$Sf || (a.current = $f716e3e58d6e8629$var$Rf[$f716e3e58d6e8629$var$Sf], $f716e3e58d6e8629$var$Rf[$f716e3e58d6e8629$var$Sf] = null, $f716e3e58d6e8629$var$Sf--);\n}\nfunction $f716e3e58d6e8629$var$G(a, b) {\n $f716e3e58d6e8629$var$Sf++;\n $f716e3e58d6e8629$var$Rf[$f716e3e58d6e8629$var$Sf] = a.current;\n a.current = b;\n}\nvar $f716e3e58d6e8629$var$Uf = {}, $f716e3e58d6e8629$var$H = $f716e3e58d6e8629$var$Tf($f716e3e58d6e8629$var$Uf), $f716e3e58d6e8629$var$Vf = $f716e3e58d6e8629$var$Tf(!1), $f716e3e58d6e8629$var$Wf = $f716e3e58d6e8629$var$Uf;\nfunction $f716e3e58d6e8629$var$Xf(a, b) {\n var c = a.type.contextTypes;\n if (!c) return $f716e3e58d6e8629$var$Uf;\n var d = a.stateNode;\n if (d && d.__reactInternalMemoizedUnmaskedChildContext === b) return d.__reactInternalMemoizedMaskedChildContext;\n var e = {}, f;\n for(f in c)e[f] = b[f];\n d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = b, a.__reactInternalMemoizedMaskedChildContext = e);\n return e;\n}\nfunction $f716e3e58d6e8629$var$Yf(a) {\n a = a.childContextTypes;\n return null !== a && void 0 !== a;\n}\nfunction $f716e3e58d6e8629$var$Zf() {\n $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$Vf);\n $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$H);\n}\nfunction $f716e3e58d6e8629$var$$f(a, b, c) {\n if ($f716e3e58d6e8629$var$H.current !== $f716e3e58d6e8629$var$Uf) throw Error($f716e3e58d6e8629$var$p(168));\n $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$H, b);\n $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$Vf, c);\n}\nfunction $f716e3e58d6e8629$var$ag(a, b, c) {\n var d = a.stateNode;\n b = b.childContextTypes;\n if (\"function\" !== typeof d.getChildContext) return c;\n d = d.getChildContext();\n for(var e in d)if (!(e in b)) throw Error($f716e3e58d6e8629$var$p(108, $f716e3e58d6e8629$var$Qa(a) || \"Unknown\", e));\n return $f716e3e58d6e8629$var$A({}, c, d);\n}\nfunction $f716e3e58d6e8629$var$bg(a) {\n a = (a = a.stateNode) && a.__reactInternalMemoizedMergedChildContext || $f716e3e58d6e8629$var$Uf;\n $f716e3e58d6e8629$var$Wf = $f716e3e58d6e8629$var$H.current;\n $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$H, a);\n $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$Vf, $f716e3e58d6e8629$var$Vf.current);\n return !0;\n}\nfunction $f716e3e58d6e8629$var$cg(a, b, c) {\n var d = a.stateNode;\n if (!d) throw Error($f716e3e58d6e8629$var$p(169));\n c ? (a = $f716e3e58d6e8629$var$ag(a, b, $f716e3e58d6e8629$var$Wf), d.__reactInternalMemoizedMergedChildContext = a, $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$Vf), $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$H), $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$H, a)) : $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$Vf);\n $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$Vf, c);\n}\nvar $f716e3e58d6e8629$var$dg = null, $f716e3e58d6e8629$var$eg = !1, $f716e3e58d6e8629$var$fg = !1;\nfunction $f716e3e58d6e8629$var$gg(a) {\n null === $f716e3e58d6e8629$var$dg ? $f716e3e58d6e8629$var$dg = [\n a\n ] : $f716e3e58d6e8629$var$dg.push(a);\n}\nfunction $f716e3e58d6e8629$var$hg(a) {\n $f716e3e58d6e8629$var$eg = !0;\n $f716e3e58d6e8629$var$gg(a);\n}\nfunction $f716e3e58d6e8629$var$ig() {\n if (!$f716e3e58d6e8629$var$fg && null !== $f716e3e58d6e8629$var$dg) {\n $f716e3e58d6e8629$var$fg = !0;\n var a = 0, b = $f716e3e58d6e8629$var$C;\n try {\n var c = $f716e3e58d6e8629$var$dg;\n for($f716e3e58d6e8629$var$C = 1; a < c.length; a++){\n var d = c[a];\n do d = d(!0);\n while (null !== d);\n }\n $f716e3e58d6e8629$var$dg = null;\n $f716e3e58d6e8629$var$eg = !1;\n } catch (e) {\n throw null !== $f716e3e58d6e8629$var$dg && ($f716e3e58d6e8629$var$dg = $f716e3e58d6e8629$var$dg.slice(a + 1)), $f716e3e58d6e8629$var$$b($f716e3e58d6e8629$var$ec, $f716e3e58d6e8629$var$ig), e;\n } finally{\n $f716e3e58d6e8629$var$C = b, $f716e3e58d6e8629$var$fg = !1;\n }\n }\n return null;\n}\nvar $f716e3e58d6e8629$var$jg = $f716e3e58d6e8629$var$ta.ReactCurrentBatchConfig;\nfunction $f716e3e58d6e8629$var$kg(a, b) {\n if (a && a.defaultProps) {\n b = $f716e3e58d6e8629$var$A({}, b);\n a = a.defaultProps;\n for(var c in a)void 0 === b[c] && (b[c] = a[c]);\n return b;\n }\n return b;\n}\nvar $f716e3e58d6e8629$var$lg = $f716e3e58d6e8629$var$Tf(null), $f716e3e58d6e8629$var$mg = null, $f716e3e58d6e8629$var$ng = null, $f716e3e58d6e8629$var$og = null;\nfunction $f716e3e58d6e8629$var$pg() {\n $f716e3e58d6e8629$var$og = $f716e3e58d6e8629$var$ng = $f716e3e58d6e8629$var$mg = null;\n}\nfunction $f716e3e58d6e8629$var$qg(a) {\n var b = $f716e3e58d6e8629$var$lg.current;\n $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$lg);\n a._currentValue = b;\n}\nfunction $f716e3e58d6e8629$var$rg(a, b, c) {\n for(; null !== a;){\n var d = a.alternate;\n (a.childLanes & b) !== b ? (a.childLanes |= b, null !== d && (d.childLanes |= b)) : null !== d && (d.childLanes & b) !== b && (d.childLanes |= b);\n if (a === c) break;\n a = a.return;\n }\n}\nfunction $f716e3e58d6e8629$var$sg(a, b) {\n $f716e3e58d6e8629$var$mg = a;\n $f716e3e58d6e8629$var$og = $f716e3e58d6e8629$var$ng = null;\n a = a.dependencies;\n null !== a && null !== a.firstContext && (0 !== (a.lanes & b) && ($f716e3e58d6e8629$var$tg = !0), a.firstContext = null);\n}\nfunction $f716e3e58d6e8629$var$ug(a) {\n var b = a._currentValue;\n if ($f716e3e58d6e8629$var$og !== a) {\n if (a = {\n context: a,\n memoizedValue: b,\n next: null\n }, null === $f716e3e58d6e8629$var$ng) {\n if (null === $f716e3e58d6e8629$var$mg) throw Error($f716e3e58d6e8629$var$p(308));\n $f716e3e58d6e8629$var$ng = a;\n $f716e3e58d6e8629$var$mg.dependencies = {\n lanes: 0,\n firstContext: a\n };\n } else $f716e3e58d6e8629$var$ng = $f716e3e58d6e8629$var$ng.next = a;\n }\n return b;\n}\nvar $f716e3e58d6e8629$var$vg = null, $f716e3e58d6e8629$var$wg = !1;\nfunction $f716e3e58d6e8629$var$xg(a) {\n a.updateQueue = {\n baseState: a.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: {\n pending: null,\n interleaved: null,\n lanes: 0\n },\n effects: null\n };\n}\nfunction $f716e3e58d6e8629$var$yg(a, b) {\n a = a.updateQueue;\n b.updateQueue === a && (b.updateQueue = {\n baseState: a.baseState,\n firstBaseUpdate: a.firstBaseUpdate,\n lastBaseUpdate: a.lastBaseUpdate,\n shared: a.shared,\n effects: a.effects\n });\n}\nfunction $f716e3e58d6e8629$var$zg(a, b) {\n return {\n eventTime: a,\n lane: b,\n tag: 0,\n payload: null,\n callback: null,\n next: null\n };\n}\nfunction $f716e3e58d6e8629$var$Ag(a, b) {\n var c = a.updateQueue;\n null !== c && (c = c.shared, $f716e3e58d6e8629$var$Bg(a) ? (a = c.interleaved, null === a ? (b.next = b, null === $f716e3e58d6e8629$var$vg ? $f716e3e58d6e8629$var$vg = [\n c\n ] : $f716e3e58d6e8629$var$vg.push(c)) : (b.next = a.next, a.next = b), c.interleaved = b) : (a = c.pending, null === a ? b.next = b : (b.next = a.next, a.next = b), c.pending = b));\n}\nfunction $f716e3e58d6e8629$var$Cg(a, b, c) {\n b = b.updateQueue;\n if (null !== b && (b = b.shared, 0 !== (c & 4194240))) {\n var d = b.lanes;\n d &= a.pendingLanes;\n c |= d;\n b.lanes = c;\n $f716e3e58d6e8629$var$Bc(a, c);\n }\n}\nfunction $f716e3e58d6e8629$var$Dg(a, b) {\n var c = a.updateQueue, d = a.alternate;\n if (null !== d && (d = d.updateQueue, c === d)) {\n var e = null, f = null;\n c = c.firstBaseUpdate;\n if (null !== c) {\n do {\n var g = {\n eventTime: c.eventTime,\n lane: c.lane,\n tag: c.tag,\n payload: c.payload,\n callback: c.callback,\n next: null\n };\n null === f ? e = f = g : f = f.next = g;\n c = c.next;\n }while (null !== c);\n null === f ? e = f = b : f = f.next = b;\n } else e = f = b;\n c = {\n baseState: d.baseState,\n firstBaseUpdate: e,\n lastBaseUpdate: f,\n shared: d.shared,\n effects: d.effects\n };\n a.updateQueue = c;\n return;\n }\n a = c.lastBaseUpdate;\n null === a ? c.firstBaseUpdate = b : a.next = b;\n c.lastBaseUpdate = b;\n}\nfunction $f716e3e58d6e8629$var$Eg(a, b, c, d) {\n var e = a.updateQueue;\n $f716e3e58d6e8629$var$wg = !1;\n var f = e.firstBaseUpdate, g = e.lastBaseUpdate, h = e.shared.pending;\n if (null !== h) {\n e.shared.pending = null;\n var k = h, l = k.next;\n k.next = null;\n null === g ? f = l : g.next = l;\n g = k;\n var n = a.alternate;\n null !== n && (n = n.updateQueue, h = n.lastBaseUpdate, h !== g && (null === h ? n.firstBaseUpdate = l : h.next = l, n.lastBaseUpdate = k));\n }\n if (null !== f) {\n var u = e.baseState;\n g = 0;\n n = l = k = null;\n h = f;\n do {\n var q = h.lane, y = h.eventTime;\n if ((d & q) === q) {\n null !== n && (n = n.next = {\n eventTime: y,\n lane: 0,\n tag: h.tag,\n payload: h.payload,\n callback: h.callback,\n next: null\n });\n a: {\n var m = a, w = h;\n q = b;\n y = c;\n switch(w.tag){\n case 1:\n m = w.payload;\n if (\"function\" === typeof m) {\n u = m.call(y, u, q);\n break a;\n }\n u = m;\n break a;\n case 3:\n m.flags = m.flags & -65537 | 128;\n case 0:\n m = w.payload;\n q = \"function\" === typeof m ? m.call(y, u, q) : m;\n if (null === q || void 0 === q) break a;\n u = $f716e3e58d6e8629$var$A({}, u, q);\n break a;\n case 2:\n $f716e3e58d6e8629$var$wg = !0;\n }\n }\n null !== h.callback && 0 !== h.lane && (a.flags |= 64, q = e.effects, null === q ? e.effects = [\n h\n ] : q.push(h));\n } else y = {\n eventTime: y,\n lane: q,\n tag: h.tag,\n payload: h.payload,\n callback: h.callback,\n next: null\n }, null === n ? (l = n = y, k = u) : n = n.next = y, g |= q;\n h = h.next;\n if (null === h) {\n if (h = e.shared.pending, null === h) break;\n else q = h, h = q.next, q.next = null, e.lastBaseUpdate = q, e.shared.pending = null;\n }\n }while (1);\n null === n && (k = u);\n e.baseState = k;\n e.firstBaseUpdate = l;\n e.lastBaseUpdate = n;\n b = e.shared.interleaved;\n if (null !== b) {\n e = b;\n do g |= e.lane, e = e.next;\n while (e !== b);\n } else null === f && (e.shared.lanes = 0);\n $f716e3e58d6e8629$var$Fg |= g;\n a.lanes = g;\n a.memoizedState = u;\n }\n}\nfunction $f716e3e58d6e8629$var$Gg(a, b, c) {\n a = b.effects;\n b.effects = null;\n if (null !== a) for(b = 0; b < a.length; b++){\n var d = a[b], e = d.callback;\n if (null !== e) {\n d.callback = null;\n d = c;\n if (\"function\" !== typeof e) throw Error($f716e3e58d6e8629$var$p(191, e));\n e.call(d);\n }\n }\n}\nvar $f716e3e58d6e8629$var$Hg = (new $70fFQ.Component).refs;\nfunction $f716e3e58d6e8629$var$Ig(a, b, c, d) {\n b = a.memoizedState;\n c = c(d, b);\n c = null === c || void 0 === c ? b : $f716e3e58d6e8629$var$A({}, b, c);\n a.memoizedState = c;\n 0 === a.lanes && (a.updateQueue.baseState = c);\n}\nvar $f716e3e58d6e8629$var$Mg = {\n isMounted: function(a) {\n return (a = a._reactInternals) ? $f716e3e58d6e8629$var$Ub(a) === a : !1;\n },\n enqueueSetState: function(a, b, c) {\n a = a._reactInternals;\n var d = $f716e3e58d6e8629$var$Jg(), e = $f716e3e58d6e8629$var$Kg(a), f = $f716e3e58d6e8629$var$zg(d, e);\n f.payload = b;\n void 0 !== c && null !== c && (f.callback = c);\n $f716e3e58d6e8629$var$Ag(a, f);\n b = $f716e3e58d6e8629$var$Lg(a, e, d);\n null !== b && $f716e3e58d6e8629$var$Cg(b, a, e);\n },\n enqueueReplaceState: function(a, b, c) {\n a = a._reactInternals;\n var d = $f716e3e58d6e8629$var$Jg(), e = $f716e3e58d6e8629$var$Kg(a), f = $f716e3e58d6e8629$var$zg(d, e);\n f.tag = 1;\n f.payload = b;\n void 0 !== c && null !== c && (f.callback = c);\n $f716e3e58d6e8629$var$Ag(a, f);\n b = $f716e3e58d6e8629$var$Lg(a, e, d);\n null !== b && $f716e3e58d6e8629$var$Cg(b, a, e);\n },\n enqueueForceUpdate: function(a, b) {\n a = a._reactInternals;\n var c = $f716e3e58d6e8629$var$Jg(), d = $f716e3e58d6e8629$var$Kg(a), e = $f716e3e58d6e8629$var$zg(c, d);\n e.tag = 2;\n void 0 !== b && null !== b && (e.callback = b);\n $f716e3e58d6e8629$var$Ag(a, e);\n b = $f716e3e58d6e8629$var$Lg(a, d, c);\n null !== b && $f716e3e58d6e8629$var$Cg(b, a, d);\n }\n};\nfunction $f716e3e58d6e8629$var$Ng(a, b, c, d, e, f, g) {\n a = a.stateNode;\n return \"function\" === typeof a.shouldComponentUpdate ? a.shouldComponentUpdate(d, f, g) : b.prototype && b.prototype.isPureReactComponent ? !$f716e3e58d6e8629$var$He(c, d) || !$f716e3e58d6e8629$var$He(e, f) : !0;\n}\nfunction $f716e3e58d6e8629$var$Og(a, b, c) {\n var d = !1, e = $f716e3e58d6e8629$var$Uf;\n var f = b.contextType;\n \"object\" === typeof f && null !== f ? f = $f716e3e58d6e8629$var$ug(f) : (e = $f716e3e58d6e8629$var$Yf(b) ? $f716e3e58d6e8629$var$Wf : $f716e3e58d6e8629$var$H.current, d = b.contextTypes, f = (d = null !== d && void 0 !== d) ? $f716e3e58d6e8629$var$Xf(a, e) : $f716e3e58d6e8629$var$Uf);\n b = new b(c, f);\n a.memoizedState = null !== b.state && void 0 !== b.state ? b.state : null;\n b.updater = $f716e3e58d6e8629$var$Mg;\n a.stateNode = b;\n b._reactInternals = a;\n d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = e, a.__reactInternalMemoizedMaskedChildContext = f);\n return b;\n}\nfunction $f716e3e58d6e8629$var$Pg(a, b, c, d) {\n a = b.state;\n \"function\" === typeof b.componentWillReceiveProps && b.componentWillReceiveProps(c, d);\n \"function\" === typeof b.UNSAFE_componentWillReceiveProps && b.UNSAFE_componentWillReceiveProps(c, d);\n b.state !== a && $f716e3e58d6e8629$var$Mg.enqueueReplaceState(b, b.state, null);\n}\nfunction $f716e3e58d6e8629$var$Qg(a, b, c, d) {\n var e = a.stateNode;\n e.props = c;\n e.state = a.memoizedState;\n e.refs = $f716e3e58d6e8629$var$Hg;\n $f716e3e58d6e8629$var$xg(a);\n var f = b.contextType;\n \"object\" === typeof f && null !== f ? e.context = $f716e3e58d6e8629$var$ug(f) : (f = $f716e3e58d6e8629$var$Yf(b) ? $f716e3e58d6e8629$var$Wf : $f716e3e58d6e8629$var$H.current, e.context = $f716e3e58d6e8629$var$Xf(a, f));\n e.state = a.memoizedState;\n f = b.getDerivedStateFromProps;\n \"function\" === typeof f && ($f716e3e58d6e8629$var$Ig(a, b, f, c), e.state = a.memoizedState);\n \"function\" === typeof b.getDerivedStateFromProps || \"function\" === typeof e.getSnapshotBeforeUpdate || \"function\" !== typeof e.UNSAFE_componentWillMount && \"function\" !== typeof e.componentWillMount || (b = e.state, \"function\" === typeof e.componentWillMount && e.componentWillMount(), \"function\" === typeof e.UNSAFE_componentWillMount && e.UNSAFE_componentWillMount(), b !== e.state && $f716e3e58d6e8629$var$Mg.enqueueReplaceState(e, e.state, null), $f716e3e58d6e8629$var$Eg(a, c, e, d), e.state = a.memoizedState);\n \"function\" === typeof e.componentDidMount && (a.flags |= 4194308);\n}\nvar $f716e3e58d6e8629$var$Rg = [], $f716e3e58d6e8629$var$Sg = 0, $f716e3e58d6e8629$var$Tg = null, $f716e3e58d6e8629$var$Ug = 0, $f716e3e58d6e8629$var$Vg = [], $f716e3e58d6e8629$var$Wg = 0, $f716e3e58d6e8629$var$Xg = null, $f716e3e58d6e8629$var$Yg = 1, $f716e3e58d6e8629$var$Zg = \"\";\nfunction $f716e3e58d6e8629$var$$g(a, b) {\n $f716e3e58d6e8629$var$Rg[$f716e3e58d6e8629$var$Sg++] = $f716e3e58d6e8629$var$Ug;\n $f716e3e58d6e8629$var$Rg[$f716e3e58d6e8629$var$Sg++] = $f716e3e58d6e8629$var$Tg;\n $f716e3e58d6e8629$var$Tg = a;\n $f716e3e58d6e8629$var$Ug = b;\n}\nfunction $f716e3e58d6e8629$var$ah(a, b, c) {\n $f716e3e58d6e8629$var$Vg[$f716e3e58d6e8629$var$Wg++] = $f716e3e58d6e8629$var$Yg;\n $f716e3e58d6e8629$var$Vg[$f716e3e58d6e8629$var$Wg++] = $f716e3e58d6e8629$var$Zg;\n $f716e3e58d6e8629$var$Vg[$f716e3e58d6e8629$var$Wg++] = $f716e3e58d6e8629$var$Xg;\n $f716e3e58d6e8629$var$Xg = a;\n var d = $f716e3e58d6e8629$var$Yg;\n a = $f716e3e58d6e8629$var$Zg;\n var e = 32 - $f716e3e58d6e8629$var$nc(d) - 1;\n d &= ~(1 << e);\n c += 1;\n var f = 32 - $f716e3e58d6e8629$var$nc(b) + e;\n if (30 < f) {\n var g = e - e % 5;\n f = (d & (1 << g) - 1).toString(32);\n d >>= g;\n e -= g;\n $f716e3e58d6e8629$var$Yg = 1 << 32 - $f716e3e58d6e8629$var$nc(b) + e | c << e | d;\n $f716e3e58d6e8629$var$Zg = f + a;\n } else $f716e3e58d6e8629$var$Yg = 1 << f | c << e | d, $f716e3e58d6e8629$var$Zg = a;\n}\nfunction $f716e3e58d6e8629$var$bh(a) {\n null !== a.return && ($f716e3e58d6e8629$var$$g(a, 1), $f716e3e58d6e8629$var$ah(a, 1, 0));\n}\nfunction $f716e3e58d6e8629$var$ch(a) {\n for(; a === $f716e3e58d6e8629$var$Tg;)$f716e3e58d6e8629$var$Tg = $f716e3e58d6e8629$var$Rg[--$f716e3e58d6e8629$var$Sg], $f716e3e58d6e8629$var$Rg[$f716e3e58d6e8629$var$Sg] = null, $f716e3e58d6e8629$var$Ug = $f716e3e58d6e8629$var$Rg[--$f716e3e58d6e8629$var$Sg], $f716e3e58d6e8629$var$Rg[$f716e3e58d6e8629$var$Sg] = null;\n for(; a === $f716e3e58d6e8629$var$Xg;)$f716e3e58d6e8629$var$Xg = $f716e3e58d6e8629$var$Vg[--$f716e3e58d6e8629$var$Wg], $f716e3e58d6e8629$var$Vg[$f716e3e58d6e8629$var$Wg] = null, $f716e3e58d6e8629$var$Zg = $f716e3e58d6e8629$var$Vg[--$f716e3e58d6e8629$var$Wg], $f716e3e58d6e8629$var$Vg[$f716e3e58d6e8629$var$Wg] = null, $f716e3e58d6e8629$var$Yg = $f716e3e58d6e8629$var$Vg[--$f716e3e58d6e8629$var$Wg], $f716e3e58d6e8629$var$Vg[$f716e3e58d6e8629$var$Wg] = null;\n}\nvar $f716e3e58d6e8629$var$dh = null, $f716e3e58d6e8629$var$eh = null, $f716e3e58d6e8629$var$I = !1, $f716e3e58d6e8629$var$fh = null;\nfunction $f716e3e58d6e8629$var$gh(a, b) {\n var c = $f716e3e58d6e8629$var$hh(5, null, null, 0);\n c.elementType = \"DELETED\";\n c.stateNode = b;\n c.return = a;\n b = a.deletions;\n null === b ? (a.deletions = [\n c\n ], a.flags |= 16) : b.push(c);\n}\nfunction $f716e3e58d6e8629$var$ih(a, b) {\n switch(a.tag){\n case 5:\n var c = a.type;\n b = 1 !== b.nodeType || c.toLowerCase() !== b.nodeName.toLowerCase() ? null : b;\n return null !== b ? (a.stateNode = b, $f716e3e58d6e8629$var$dh = a, $f716e3e58d6e8629$var$eh = $f716e3e58d6e8629$var$Kf(b.firstChild), !0) : !1;\n case 6:\n return b = \"\" === a.pendingProps || 3 !== b.nodeType ? null : b, null !== b ? (a.stateNode = b, $f716e3e58d6e8629$var$dh = a, $f716e3e58d6e8629$var$eh = null, !0) : !1;\n case 13:\n return b = 8 !== b.nodeType ? null : b, null !== b ? (c = null !== $f716e3e58d6e8629$var$Xg ? {\n id: $f716e3e58d6e8629$var$Yg,\n overflow: $f716e3e58d6e8629$var$Zg\n } : null, a.memoizedState = {\n dehydrated: b,\n treeContext: c,\n retryLane: 1073741824\n }, c = $f716e3e58d6e8629$var$hh(18, null, null, 0), c.stateNode = b, c.return = a, a.child = c, $f716e3e58d6e8629$var$dh = a, $f716e3e58d6e8629$var$eh = null, !0) : !1;\n default:\n return !1;\n }\n}\nfunction $f716e3e58d6e8629$var$jh(a) {\n return 0 !== (a.mode & 1) && 0 === (a.flags & 128);\n}\nfunction $f716e3e58d6e8629$var$kh(a) {\n if ($f716e3e58d6e8629$var$I) {\n var b = $f716e3e58d6e8629$var$eh;\n if (b) {\n var c = b;\n if (!$f716e3e58d6e8629$var$ih(a, b)) {\n if ($f716e3e58d6e8629$var$jh(a)) throw Error($f716e3e58d6e8629$var$p(418));\n b = $f716e3e58d6e8629$var$Kf(c.nextSibling);\n var d = $f716e3e58d6e8629$var$dh;\n b && $f716e3e58d6e8629$var$ih(a, b) ? $f716e3e58d6e8629$var$gh(d, c) : (a.flags = a.flags & -4097 | 2, $f716e3e58d6e8629$var$I = !1, $f716e3e58d6e8629$var$dh = a);\n }\n } else {\n if ($f716e3e58d6e8629$var$jh(a)) throw Error($f716e3e58d6e8629$var$p(418));\n a.flags = a.flags & -4097 | 2;\n $f716e3e58d6e8629$var$I = !1;\n $f716e3e58d6e8629$var$dh = a;\n }\n }\n}\nfunction $f716e3e58d6e8629$var$lh(a) {\n for(a = a.return; null !== a && 5 !== a.tag && 3 !== a.tag && 13 !== a.tag;)a = a.return;\n $f716e3e58d6e8629$var$dh = a;\n}\nfunction $f716e3e58d6e8629$var$mh(a) {\n if (a !== $f716e3e58d6e8629$var$dh) return !1;\n if (!$f716e3e58d6e8629$var$I) return $f716e3e58d6e8629$var$lh(a), $f716e3e58d6e8629$var$I = !0, !1;\n var b;\n (b = 3 !== a.tag) && !(b = 5 !== a.tag) && (b = a.type, b = \"head\" !== b && \"body\" !== b && !$f716e3e58d6e8629$var$Df(a.type, a.memoizedProps));\n if (b && (b = $f716e3e58d6e8629$var$eh)) {\n if ($f716e3e58d6e8629$var$jh(a)) {\n for(a = $f716e3e58d6e8629$var$eh; a;)a = $f716e3e58d6e8629$var$Kf(a.nextSibling);\n throw Error($f716e3e58d6e8629$var$p(418));\n }\n for(; b;)$f716e3e58d6e8629$var$gh(a, b), b = $f716e3e58d6e8629$var$Kf(b.nextSibling);\n }\n $f716e3e58d6e8629$var$lh(a);\n if (13 === a.tag) {\n a = a.memoizedState;\n a = null !== a ? a.dehydrated : null;\n if (!a) throw Error($f716e3e58d6e8629$var$p(317));\n a: {\n a = a.nextSibling;\n for(b = 0; a;){\n if (8 === a.nodeType) {\n var c = a.data;\n if (\"/$\" === c) {\n if (0 === b) {\n $f716e3e58d6e8629$var$eh = $f716e3e58d6e8629$var$Kf(a.nextSibling);\n break a;\n }\n b--;\n } else \"$\" !== c && \"$!\" !== c && \"$?\" !== c || b++;\n }\n a = a.nextSibling;\n }\n $f716e3e58d6e8629$var$eh = null;\n }\n } else $f716e3e58d6e8629$var$eh = $f716e3e58d6e8629$var$dh ? $f716e3e58d6e8629$var$Kf(a.stateNode.nextSibling) : null;\n return !0;\n}\nfunction $f716e3e58d6e8629$var$nh() {\n $f716e3e58d6e8629$var$eh = $f716e3e58d6e8629$var$dh = null;\n $f716e3e58d6e8629$var$I = !1;\n}\nfunction $f716e3e58d6e8629$var$oh(a) {\n null === $f716e3e58d6e8629$var$fh ? $f716e3e58d6e8629$var$fh = [\n a\n ] : $f716e3e58d6e8629$var$fh.push(a);\n}\nfunction $f716e3e58d6e8629$var$ph(a, b, c) {\n a = c.ref;\n if (null !== a && \"function\" !== typeof a && \"object\" !== typeof a) {\n if (c._owner) {\n c = c._owner;\n if (c) {\n if (1 !== c.tag) throw Error($f716e3e58d6e8629$var$p(309));\n var d = c.stateNode;\n }\n if (!d) throw Error($f716e3e58d6e8629$var$p(147, a));\n var e = d, f = \"\" + a;\n if (null !== b && null !== b.ref && \"function\" === typeof b.ref && b.ref._stringRef === f) return b.ref;\n b = function(a) {\n var b = e.refs;\n b === $f716e3e58d6e8629$var$Hg && (b = e.refs = {});\n null === a ? delete b[f] : b[f] = a;\n };\n b._stringRef = f;\n return b;\n }\n if (\"string\" !== typeof a) throw Error($f716e3e58d6e8629$var$p(284));\n if (!c._owner) throw Error($f716e3e58d6e8629$var$p(290, a));\n }\n return a;\n}\nfunction $f716e3e58d6e8629$var$qh(a, b) {\n a = Object.prototype.toString.call(b);\n throw Error($f716e3e58d6e8629$var$p(31, \"[object Object]\" === a ? \"object with keys {\" + Object.keys(b).join(\", \") + \"}\" : a));\n}\nfunction $f716e3e58d6e8629$var$rh(a) {\n var b = a._init;\n return b(a._payload);\n}\nfunction $f716e3e58d6e8629$var$sh(a) {\n function b(b, c) {\n if (a) {\n var d = b.deletions;\n null === d ? (b.deletions = [\n c\n ], b.flags |= 16) : d.push(c);\n }\n }\n function c(c, d) {\n if (!a) return null;\n for(; null !== d;)b(c, d), d = d.sibling;\n return null;\n }\n function d(a, b) {\n for(a = new Map; null !== b;)null !== b.key ? a.set(b.key, b) : a.set(b.index, b), b = b.sibling;\n return a;\n }\n function e(a, b) {\n a = $f716e3e58d6e8629$var$th(a, b);\n a.index = 0;\n a.sibling = null;\n return a;\n }\n function f(b, c, d) {\n b.index = d;\n if (!a) return b.flags |= 1048576, c;\n d = b.alternate;\n if (null !== d) return d = d.index, d < c ? (b.flags |= 2, c) : d;\n b.flags |= 2;\n return c;\n }\n function g(b) {\n a && null === b.alternate && (b.flags |= 2);\n return b;\n }\n function h(a, b, c, d) {\n if (null === b || 6 !== b.tag) return b = $f716e3e58d6e8629$var$uh(c, a.mode, d), b.return = a, b;\n b = e(b, c);\n b.return = a;\n return b;\n }\n function k(a, b, c, d) {\n var f = c.type;\n if (f === $f716e3e58d6e8629$var$wa) return n(a, b, c.props.children, d, c.key);\n if (null !== b && (b.elementType === f || \"object\" === typeof f && null !== f && f.$$typeof === $f716e3e58d6e8629$var$Ga && $f716e3e58d6e8629$var$rh(f) === b.type)) return d = e(b, c.props), d.ref = $f716e3e58d6e8629$var$ph(a, b, c), d.return = a, d;\n d = $f716e3e58d6e8629$var$vh(c.type, c.key, c.props, null, a.mode, d);\n d.ref = $f716e3e58d6e8629$var$ph(a, b, c);\n d.return = a;\n return d;\n }\n function l(a, b, c, d) {\n if (null === b || 4 !== b.tag || b.stateNode.containerInfo !== c.containerInfo || b.stateNode.implementation !== c.implementation) return b = $f716e3e58d6e8629$var$wh(c, a.mode, d), b.return = a, b;\n b = e(b, c.children || []);\n b.return = a;\n return b;\n }\n function n(a, b, c, d, f) {\n if (null === b || 7 !== b.tag) return b = $f716e3e58d6e8629$var$xh(c, a.mode, d, f), b.return = a, b;\n b = e(b, c);\n b.return = a;\n return b;\n }\n function u(a, b, c) {\n if (\"string\" === typeof b && \"\" !== b || \"number\" === typeof b) return b = $f716e3e58d6e8629$var$uh(\"\" + b, a.mode, c), b.return = a, b;\n if (\"object\" === typeof b && null !== b) {\n switch(b.$$typeof){\n case $f716e3e58d6e8629$var$ua:\n return c = $f716e3e58d6e8629$var$vh(b.type, b.key, b.props, null, a.mode, c), c.ref = $f716e3e58d6e8629$var$ph(a, null, b), c.return = a, c;\n case $f716e3e58d6e8629$var$va:\n return b = $f716e3e58d6e8629$var$wh(b, a.mode, c), b.return = a, b;\n case $f716e3e58d6e8629$var$Ga:\n var d = b._init;\n return u(a, d(b._payload), c);\n }\n if ($f716e3e58d6e8629$var$db(b) || $f716e3e58d6e8629$var$Ja(b)) return b = $f716e3e58d6e8629$var$xh(b, a.mode, c, null), b.return = a, b;\n $f716e3e58d6e8629$var$qh(a, b);\n }\n return null;\n }\n function q(a, b, c, d) {\n var e = null !== b ? b.key : null;\n if (\"string\" === typeof c && \"\" !== c || \"number\" === typeof c) return null !== e ? null : h(a, b, \"\" + c, d);\n if (\"object\" === typeof c && null !== c) {\n switch(c.$$typeof){\n case $f716e3e58d6e8629$var$ua:\n return c.key === e ? k(a, b, c, d) : null;\n case $f716e3e58d6e8629$var$va:\n return c.key === e ? l(a, b, c, d) : null;\n case $f716e3e58d6e8629$var$Ga:\n return e = c._init, q(a, b, e(c._payload), d);\n }\n if ($f716e3e58d6e8629$var$db(c) || $f716e3e58d6e8629$var$Ja(c)) return null !== e ? null : n(a, b, c, d, null);\n $f716e3e58d6e8629$var$qh(a, c);\n }\n return null;\n }\n function y(a, b, c, d, e) {\n if (\"string\" === typeof d && \"\" !== d || \"number\" === typeof d) return a = a.get(c) || null, h(b, a, \"\" + d, e);\n if (\"object\" === typeof d && null !== d) {\n switch(d.$$typeof){\n case $f716e3e58d6e8629$var$ua:\n return a = a.get(null === d.key ? c : d.key) || null, k(b, a, d, e);\n case $f716e3e58d6e8629$var$va:\n return a = a.get(null === d.key ? c : d.key) || null, l(b, a, d, e);\n case $f716e3e58d6e8629$var$Ga:\n var f = d._init;\n return y(a, b, c, f(d._payload), e);\n }\n if ($f716e3e58d6e8629$var$db(d) || $f716e3e58d6e8629$var$Ja(d)) return a = a.get(c) || null, n(b, a, d, e, null);\n $f716e3e58d6e8629$var$qh(b, d);\n }\n return null;\n }\n function m(e, g, h, k) {\n for(var l = null, n = null, r = g, m = g = 0, x = null; null !== r && m < h.length; m++){\n r.index > m ? (x = r, r = null) : x = r.sibling;\n var v = q(e, r, h[m], k);\n if (null === v) {\n null === r && (r = x);\n break;\n }\n a && r && null === v.alternate && b(e, r);\n g = f(v, g, m);\n null === n ? l = v : n.sibling = v;\n n = v;\n r = x;\n }\n if (m === h.length) return c(e, r), $f716e3e58d6e8629$var$I && $f716e3e58d6e8629$var$$g(e, m), l;\n if (null === r) {\n for(; m < h.length; m++)r = u(e, h[m], k), null !== r && (g = f(r, g, m), null === n ? l = r : n.sibling = r, n = r);\n $f716e3e58d6e8629$var$I && $f716e3e58d6e8629$var$$g(e, m);\n return l;\n }\n for(r = d(e, r); m < h.length; m++)x = y(r, e, m, h[m], k), null !== x && (a && null !== x.alternate && r.delete(null === x.key ? m : x.key), g = f(x, g, m), null === n ? l = x : n.sibling = x, n = x);\n a && r.forEach(function(a) {\n return b(e, a);\n });\n $f716e3e58d6e8629$var$I && $f716e3e58d6e8629$var$$g(e, m);\n return l;\n }\n function w(e, g, h, k) {\n var l = $f716e3e58d6e8629$var$Ja(h);\n if (\"function\" !== typeof l) throw Error($f716e3e58d6e8629$var$p(150));\n h = l.call(h);\n if (null == h) throw Error($f716e3e58d6e8629$var$p(151));\n for(var n = l = null, m = g, r = g = 0, x = null, v = h.next(); null !== m && !v.done; r++, v = h.next()){\n m.index > r ? (x = m, m = null) : x = m.sibling;\n var w = q(e, m, v.value, k);\n if (null === w) {\n null === m && (m = x);\n break;\n }\n a && m && null === w.alternate && b(e, m);\n g = f(w, g, r);\n null === n ? l = w : n.sibling = w;\n n = w;\n m = x;\n }\n if (v.done) return c(e, m), $f716e3e58d6e8629$var$I && $f716e3e58d6e8629$var$$g(e, r), l;\n if (null === m) {\n for(; !v.done; r++, v = h.next())v = u(e, v.value, k), null !== v && (g = f(v, g, r), null === n ? l = v : n.sibling = v, n = v);\n $f716e3e58d6e8629$var$I && $f716e3e58d6e8629$var$$g(e, r);\n return l;\n }\n for(m = d(e, m); !v.done; r++, v = h.next())v = y(m, e, r, v.value, k), null !== v && (a && null !== v.alternate && m.delete(null === v.key ? r : v.key), g = f(v, g, r), null === n ? l = v : n.sibling = v, n = v);\n a && m.forEach(function(a) {\n return b(e, a);\n });\n $f716e3e58d6e8629$var$I && $f716e3e58d6e8629$var$$g(e, r);\n return l;\n }\n function J(a, d, f, h) {\n \"object\" === typeof f && null !== f && f.type === $f716e3e58d6e8629$var$wa && null === f.key && (f = f.props.children);\n if (\"object\" === typeof f && null !== f) {\n switch(f.$$typeof){\n case $f716e3e58d6e8629$var$ua:\n a: {\n for(var k = f.key, l = d; null !== l;){\n if (l.key === k) {\n k = f.type;\n if (k === $f716e3e58d6e8629$var$wa) {\n if (7 === l.tag) {\n c(a, l.sibling);\n d = e(l, f.props.children);\n d.return = a;\n a = d;\n break a;\n }\n } else if (l.elementType === k || \"object\" === typeof k && null !== k && k.$$typeof === $f716e3e58d6e8629$var$Ga && $f716e3e58d6e8629$var$rh(k) === l.type) {\n c(a, l.sibling);\n d = e(l, f.props);\n d.ref = $f716e3e58d6e8629$var$ph(a, l, f);\n d.return = a;\n a = d;\n break a;\n }\n c(a, l);\n break;\n } else b(a, l);\n l = l.sibling;\n }\n f.type === $f716e3e58d6e8629$var$wa ? (d = $f716e3e58d6e8629$var$xh(f.props.children, a.mode, h, f.key), d.return = a, a = d) : (h = $f716e3e58d6e8629$var$vh(f.type, f.key, f.props, null, a.mode, h), h.ref = $f716e3e58d6e8629$var$ph(a, d, f), h.return = a, a = h);\n }\n return g(a);\n case $f716e3e58d6e8629$var$va:\n a: {\n for(l = f.key; null !== d;){\n if (d.key === l) {\n if (4 === d.tag && d.stateNode.containerInfo === f.containerInfo && d.stateNode.implementation === f.implementation) {\n c(a, d.sibling);\n d = e(d, f.children || []);\n d.return = a;\n a = d;\n break a;\n } else {\n c(a, d);\n break;\n }\n } else b(a, d);\n d = d.sibling;\n }\n d = $f716e3e58d6e8629$var$wh(f, a.mode, h);\n d.return = a;\n a = d;\n }\n return g(a);\n case $f716e3e58d6e8629$var$Ga:\n return l = f._init, J(a, d, l(f._payload), h);\n }\n if ($f716e3e58d6e8629$var$db(f)) return m(a, d, f, h);\n if ($f716e3e58d6e8629$var$Ja(f)) return w(a, d, f, h);\n $f716e3e58d6e8629$var$qh(a, f);\n }\n return \"string\" === typeof f && \"\" !== f || \"number\" === typeof f ? (f = \"\" + f, null !== d && 6 === d.tag ? (c(a, d.sibling), d = e(d, f), d.return = a, a = d) : (c(a, d), d = $f716e3e58d6e8629$var$uh(f, a.mode, h), d.return = a, a = d), g(a)) : c(a, d);\n }\n return J;\n}\nvar $f716e3e58d6e8629$var$yh = $f716e3e58d6e8629$var$sh(!0), $f716e3e58d6e8629$var$zh = $f716e3e58d6e8629$var$sh(!1), $f716e3e58d6e8629$var$Ah = {}, $f716e3e58d6e8629$var$Bh = $f716e3e58d6e8629$var$Tf($f716e3e58d6e8629$var$Ah), $f716e3e58d6e8629$var$Ch = $f716e3e58d6e8629$var$Tf($f716e3e58d6e8629$var$Ah), $f716e3e58d6e8629$var$Dh = $f716e3e58d6e8629$var$Tf($f716e3e58d6e8629$var$Ah);\nfunction $f716e3e58d6e8629$var$Eh(a) {\n if (a === $f716e3e58d6e8629$var$Ah) throw Error($f716e3e58d6e8629$var$p(174));\n return a;\n}\nfunction $f716e3e58d6e8629$var$Fh(a, b) {\n $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$Dh, b);\n $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$Ch, a);\n $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$Bh, $f716e3e58d6e8629$var$Ah);\n a = b.nodeType;\n switch(a){\n case 9:\n case 11:\n b = (b = b.documentElement) ? b.namespaceURI : $f716e3e58d6e8629$var$kb(null, \"\");\n break;\n default:\n a = 8 === a ? b.parentNode : b, b = a.namespaceURI || null, a = a.tagName, b = $f716e3e58d6e8629$var$kb(b, a);\n }\n $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$Bh);\n $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$Bh, b);\n}\nfunction $f716e3e58d6e8629$var$Gh() {\n $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$Bh);\n $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$Ch);\n $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$Dh);\n}\nfunction $f716e3e58d6e8629$var$Hh(a) {\n $f716e3e58d6e8629$var$Eh($f716e3e58d6e8629$var$Dh.current);\n var b = $f716e3e58d6e8629$var$Eh($f716e3e58d6e8629$var$Bh.current);\n var c = $f716e3e58d6e8629$var$kb(b, a.type);\n b !== c && ($f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$Ch, a), $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$Bh, c));\n}\nfunction $f716e3e58d6e8629$var$Ih(a) {\n $f716e3e58d6e8629$var$Ch.current === a && ($f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$Bh), $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$Ch));\n}\nvar $f716e3e58d6e8629$var$K = $f716e3e58d6e8629$var$Tf(0);\nfunction $f716e3e58d6e8629$var$Jh(a) {\n for(var b = a; null !== b;){\n if (13 === b.tag) {\n var c = b.memoizedState;\n if (null !== c && (c = c.dehydrated, null === c || \"$?\" === c.data || \"$!\" === c.data)) return b;\n } else if (19 === b.tag && void 0 !== b.memoizedProps.revealOrder) {\n if (0 !== (b.flags & 128)) return b;\n } else if (null !== b.child) {\n b.child.return = b;\n b = b.child;\n continue;\n }\n if (b === a) break;\n for(; null === b.sibling;){\n if (null === b.return || b.return === a) return null;\n b = b.return;\n }\n b.sibling.return = b.return;\n b = b.sibling;\n }\n return null;\n}\nvar $f716e3e58d6e8629$var$Kh = [];\nfunction $f716e3e58d6e8629$var$Lh() {\n for(var a = 0; a < $f716e3e58d6e8629$var$Kh.length; a++)$f716e3e58d6e8629$var$Kh[a]._workInProgressVersionPrimary = null;\n $f716e3e58d6e8629$var$Kh.length = 0;\n}\nvar $f716e3e58d6e8629$var$Mh = $f716e3e58d6e8629$var$ta.ReactCurrentDispatcher, $f716e3e58d6e8629$var$Nh = $f716e3e58d6e8629$var$ta.ReactCurrentBatchConfig, $f716e3e58d6e8629$var$Oh = 0, $f716e3e58d6e8629$var$L = null, $f716e3e58d6e8629$var$M = null, $f716e3e58d6e8629$var$N = null, $f716e3e58d6e8629$var$Ph = !1, $f716e3e58d6e8629$var$Qh = !1, $f716e3e58d6e8629$var$Rh = 0, $f716e3e58d6e8629$var$Sh = 0;\nfunction $f716e3e58d6e8629$var$O() {\n throw Error($f716e3e58d6e8629$var$p(321));\n}\nfunction $f716e3e58d6e8629$var$Th(a, b) {\n if (null === b) return !1;\n for(var c = 0; c < b.length && c < a.length; c++)if (!$f716e3e58d6e8629$var$Ge(a[c], b[c])) return !1;\n return !0;\n}\nfunction $f716e3e58d6e8629$var$Uh(a, b, c, d, e, f) {\n $f716e3e58d6e8629$var$Oh = f;\n $f716e3e58d6e8629$var$L = b;\n b.memoizedState = null;\n b.updateQueue = null;\n b.lanes = 0;\n $f716e3e58d6e8629$var$Mh.current = null === a || null === a.memoizedState ? $f716e3e58d6e8629$var$Vh : $f716e3e58d6e8629$var$Wh;\n a = c(d, e);\n if ($f716e3e58d6e8629$var$Qh) {\n f = 0;\n do {\n $f716e3e58d6e8629$var$Qh = !1;\n $f716e3e58d6e8629$var$Rh = 0;\n if (25 <= f) throw Error($f716e3e58d6e8629$var$p(301));\n f += 1;\n $f716e3e58d6e8629$var$N = $f716e3e58d6e8629$var$M = null;\n b.updateQueue = null;\n $f716e3e58d6e8629$var$Mh.current = $f716e3e58d6e8629$var$Xh;\n a = c(d, e);\n }while ($f716e3e58d6e8629$var$Qh);\n }\n $f716e3e58d6e8629$var$Mh.current = $f716e3e58d6e8629$var$Yh;\n b = null !== $f716e3e58d6e8629$var$M && null !== $f716e3e58d6e8629$var$M.next;\n $f716e3e58d6e8629$var$Oh = 0;\n $f716e3e58d6e8629$var$N = $f716e3e58d6e8629$var$M = $f716e3e58d6e8629$var$L = null;\n $f716e3e58d6e8629$var$Ph = !1;\n if (b) throw Error($f716e3e58d6e8629$var$p(300));\n return a;\n}\nfunction $f716e3e58d6e8629$var$Zh() {\n var a = 0 !== $f716e3e58d6e8629$var$Rh;\n $f716e3e58d6e8629$var$Rh = 0;\n return a;\n}\nfunction $f716e3e58d6e8629$var$$h() {\n var a = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n null === $f716e3e58d6e8629$var$N ? $f716e3e58d6e8629$var$L.memoizedState = $f716e3e58d6e8629$var$N = a : $f716e3e58d6e8629$var$N = $f716e3e58d6e8629$var$N.next = a;\n return $f716e3e58d6e8629$var$N;\n}\nfunction $f716e3e58d6e8629$var$ai() {\n if (null === $f716e3e58d6e8629$var$M) {\n var a = $f716e3e58d6e8629$var$L.alternate;\n a = null !== a ? a.memoizedState : null;\n } else a = $f716e3e58d6e8629$var$M.next;\n var b = null === $f716e3e58d6e8629$var$N ? $f716e3e58d6e8629$var$L.memoizedState : $f716e3e58d6e8629$var$N.next;\n if (null !== b) $f716e3e58d6e8629$var$N = b, $f716e3e58d6e8629$var$M = a;\n else {\n if (null === a) throw Error($f716e3e58d6e8629$var$p(310));\n $f716e3e58d6e8629$var$M = a;\n a = {\n memoizedState: $f716e3e58d6e8629$var$M.memoizedState,\n baseState: $f716e3e58d6e8629$var$M.baseState,\n baseQueue: $f716e3e58d6e8629$var$M.baseQueue,\n queue: $f716e3e58d6e8629$var$M.queue,\n next: null\n };\n null === $f716e3e58d6e8629$var$N ? $f716e3e58d6e8629$var$L.memoizedState = $f716e3e58d6e8629$var$N = a : $f716e3e58d6e8629$var$N = $f716e3e58d6e8629$var$N.next = a;\n }\n return $f716e3e58d6e8629$var$N;\n}\nfunction $f716e3e58d6e8629$var$bi(a, b) {\n return \"function\" === typeof b ? b(a) : b;\n}\nfunction $f716e3e58d6e8629$var$ci(a) {\n var b = $f716e3e58d6e8629$var$ai(), c = b.queue;\n if (null === c) throw Error($f716e3e58d6e8629$var$p(311));\n c.lastRenderedReducer = a;\n var d = $f716e3e58d6e8629$var$M, e = d.baseQueue, f = c.pending;\n if (null !== f) {\n if (null !== e) {\n var g = e.next;\n e.next = f.next;\n f.next = g;\n }\n d.baseQueue = e = f;\n c.pending = null;\n }\n if (null !== e) {\n f = e.next;\n d = d.baseState;\n var h = g = null, k = null, l = f;\n do {\n var n = l.lane;\n if (($f716e3e58d6e8629$var$Oh & n) === n) null !== k && (k = k.next = {\n lane: 0,\n action: l.action,\n hasEagerState: l.hasEagerState,\n eagerState: l.eagerState,\n next: null\n }), d = l.hasEagerState ? l.eagerState : a(d, l.action);\n else {\n var u = {\n lane: n,\n action: l.action,\n hasEagerState: l.hasEagerState,\n eagerState: l.eagerState,\n next: null\n };\n null === k ? (h = k = u, g = d) : k = k.next = u;\n $f716e3e58d6e8629$var$L.lanes |= n;\n $f716e3e58d6e8629$var$Fg |= n;\n }\n l = l.next;\n }while (null !== l && l !== f);\n null === k ? g = d : k.next = h;\n $f716e3e58d6e8629$var$Ge(d, b.memoizedState) || ($f716e3e58d6e8629$var$tg = !0);\n b.memoizedState = d;\n b.baseState = g;\n b.baseQueue = k;\n c.lastRenderedState = d;\n }\n a = c.interleaved;\n if (null !== a) {\n e = a;\n do f = e.lane, $f716e3e58d6e8629$var$L.lanes |= f, $f716e3e58d6e8629$var$Fg |= f, e = e.next;\n while (e !== a);\n } else null === e && (c.lanes = 0);\n return [\n b.memoizedState,\n c.dispatch\n ];\n}\nfunction $f716e3e58d6e8629$var$di(a) {\n var b = $f716e3e58d6e8629$var$ai(), c = b.queue;\n if (null === c) throw Error($f716e3e58d6e8629$var$p(311));\n c.lastRenderedReducer = a;\n var d = c.dispatch, e = c.pending, f = b.memoizedState;\n if (null !== e) {\n c.pending = null;\n var g = e = e.next;\n do f = a(f, g.action), g = g.next;\n while (g !== e);\n $f716e3e58d6e8629$var$Ge(f, b.memoizedState) || ($f716e3e58d6e8629$var$tg = !0);\n b.memoizedState = f;\n null === b.baseQueue && (b.baseState = f);\n c.lastRenderedState = f;\n }\n return [\n f,\n d\n ];\n}\nfunction $f716e3e58d6e8629$var$ei() {}\nfunction $f716e3e58d6e8629$var$fi(a, b) {\n var c = $f716e3e58d6e8629$var$L, d = $f716e3e58d6e8629$var$ai(), e = b(), f = !$f716e3e58d6e8629$var$Ge(d.memoizedState, e);\n f && (d.memoizedState = e, $f716e3e58d6e8629$var$tg = !0);\n d = d.queue;\n $f716e3e58d6e8629$var$gi($f716e3e58d6e8629$var$hi.bind(null, c, d, a), [\n a\n ]);\n if (d.getSnapshot !== b || f || null !== $f716e3e58d6e8629$var$N && $f716e3e58d6e8629$var$N.memoizedState.tag & 1) {\n c.flags |= 2048;\n $f716e3e58d6e8629$var$ii(9, $f716e3e58d6e8629$var$ji.bind(null, c, d, e, b), void 0, null);\n if (null === $f716e3e58d6e8629$var$P) throw Error($f716e3e58d6e8629$var$p(349));\n 0 !== ($f716e3e58d6e8629$var$Oh & 30) || $f716e3e58d6e8629$var$ki(c, b, e);\n }\n return e;\n}\nfunction $f716e3e58d6e8629$var$ki(a, b, c) {\n a.flags |= 16384;\n a = {\n getSnapshot: b,\n value: c\n };\n b = $f716e3e58d6e8629$var$L.updateQueue;\n null === b ? (b = {\n lastEffect: null,\n stores: null\n }, $f716e3e58d6e8629$var$L.updateQueue = b, b.stores = [\n a\n ]) : (c = b.stores, null === c ? b.stores = [\n a\n ] : c.push(a));\n}\nfunction $f716e3e58d6e8629$var$ji(a, b, c, d) {\n b.value = c;\n b.getSnapshot = d;\n $f716e3e58d6e8629$var$li(b) && $f716e3e58d6e8629$var$Lg(a, 1, -1);\n}\nfunction $f716e3e58d6e8629$var$hi(a, b, c) {\n return c(function() {\n $f716e3e58d6e8629$var$li(b) && $f716e3e58d6e8629$var$Lg(a, 1, -1);\n });\n}\nfunction $f716e3e58d6e8629$var$li(a) {\n var b = a.getSnapshot;\n a = a.value;\n try {\n var c = b();\n return !$f716e3e58d6e8629$var$Ge(a, c);\n } catch (d) {\n return !0;\n }\n}\nfunction $f716e3e58d6e8629$var$mi(a) {\n var b = $f716e3e58d6e8629$var$$h();\n \"function\" === typeof a && (a = a());\n b.memoizedState = b.baseState = a;\n a = {\n pending: null,\n interleaved: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: $f716e3e58d6e8629$var$bi,\n lastRenderedState: a\n };\n b.queue = a;\n a = a.dispatch = $f716e3e58d6e8629$var$ni.bind(null, $f716e3e58d6e8629$var$L, a);\n return [\n b.memoizedState,\n a\n ];\n}\nfunction $f716e3e58d6e8629$var$ii(a, b, c, d) {\n a = {\n tag: a,\n create: b,\n destroy: c,\n deps: d,\n next: null\n };\n b = $f716e3e58d6e8629$var$L.updateQueue;\n null === b ? (b = {\n lastEffect: null,\n stores: null\n }, $f716e3e58d6e8629$var$L.updateQueue = b, b.lastEffect = a.next = a) : (c = b.lastEffect, null === c ? b.lastEffect = a.next = a : (d = c.next, c.next = a, a.next = d, b.lastEffect = a));\n return a;\n}\nfunction $f716e3e58d6e8629$var$oi() {\n return $f716e3e58d6e8629$var$ai().memoizedState;\n}\nfunction $f716e3e58d6e8629$var$pi(a, b, c, d) {\n var e = $f716e3e58d6e8629$var$$h();\n $f716e3e58d6e8629$var$L.flags |= a;\n e.memoizedState = $f716e3e58d6e8629$var$ii(1 | b, c, void 0, void 0 === d ? null : d);\n}\nfunction $f716e3e58d6e8629$var$qi(a, b, c, d) {\n var e = $f716e3e58d6e8629$var$ai();\n d = void 0 === d ? null : d;\n var f = void 0;\n if (null !== $f716e3e58d6e8629$var$M) {\n var g = $f716e3e58d6e8629$var$M.memoizedState;\n f = g.destroy;\n if (null !== d && $f716e3e58d6e8629$var$Th(d, g.deps)) {\n e.memoizedState = $f716e3e58d6e8629$var$ii(b, c, f, d);\n return;\n }\n }\n $f716e3e58d6e8629$var$L.flags |= a;\n e.memoizedState = $f716e3e58d6e8629$var$ii(1 | b, c, f, d);\n}\nfunction $f716e3e58d6e8629$var$ri(a, b) {\n return $f716e3e58d6e8629$var$pi(8390656, 8, a, b);\n}\nfunction $f716e3e58d6e8629$var$gi(a, b) {\n return $f716e3e58d6e8629$var$qi(2048, 8, a, b);\n}\nfunction $f716e3e58d6e8629$var$si(a, b) {\n return $f716e3e58d6e8629$var$qi(4, 2, a, b);\n}\nfunction $f716e3e58d6e8629$var$ti(a, b) {\n return $f716e3e58d6e8629$var$qi(4, 4, a, b);\n}\nfunction $f716e3e58d6e8629$var$ui(a, b) {\n if (\"function\" === typeof b) return a = a(), b(a), function() {\n b(null);\n };\n if (null !== b && void 0 !== b) return a = a(), b.current = a, function() {\n b.current = null;\n };\n}\nfunction $f716e3e58d6e8629$var$vi(a, b, c) {\n c = null !== c && void 0 !== c ? c.concat([\n a\n ]) : null;\n return $f716e3e58d6e8629$var$qi(4, 4, $f716e3e58d6e8629$var$ui.bind(null, b, a), c);\n}\nfunction $f716e3e58d6e8629$var$wi() {}\nfunction $f716e3e58d6e8629$var$xi(a, b) {\n var c = $f716e3e58d6e8629$var$ai();\n b = void 0 === b ? null : b;\n var d = c.memoizedState;\n if (null !== d && null !== b && $f716e3e58d6e8629$var$Th(b, d[1])) return d[0];\n c.memoizedState = [\n a,\n b\n ];\n return a;\n}\nfunction $f716e3e58d6e8629$var$yi(a, b) {\n var c = $f716e3e58d6e8629$var$ai();\n b = void 0 === b ? null : b;\n var d = c.memoizedState;\n if (null !== d && null !== b && $f716e3e58d6e8629$var$Th(b, d[1])) return d[0];\n a = a();\n c.memoizedState = [\n a,\n b\n ];\n return a;\n}\nfunction $f716e3e58d6e8629$var$zi(a, b, c) {\n if (0 === ($f716e3e58d6e8629$var$Oh & 21)) return a.baseState && (a.baseState = !1, $f716e3e58d6e8629$var$tg = !0), a.memoizedState = c;\n $f716e3e58d6e8629$var$Ge(c, b) || (c = $f716e3e58d6e8629$var$xc(), $f716e3e58d6e8629$var$L.lanes |= c, $f716e3e58d6e8629$var$Fg |= c, a.baseState = !0);\n return b;\n}\nfunction $f716e3e58d6e8629$var$Ai(a, b) {\n var c = $f716e3e58d6e8629$var$C;\n $f716e3e58d6e8629$var$C = 0 !== c && 4 > c ? c : 4;\n a(!0);\n var d = $f716e3e58d6e8629$var$Nh.transition;\n $f716e3e58d6e8629$var$Nh.transition = {};\n try {\n a(!1), b();\n } finally{\n $f716e3e58d6e8629$var$C = c, $f716e3e58d6e8629$var$Nh.transition = d;\n }\n}\nfunction $f716e3e58d6e8629$var$Bi() {\n return $f716e3e58d6e8629$var$ai().memoizedState;\n}\nfunction $f716e3e58d6e8629$var$Ci(a, b, c) {\n var d = $f716e3e58d6e8629$var$Kg(a);\n c = {\n lane: d,\n action: c,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n $f716e3e58d6e8629$var$Di(a) ? $f716e3e58d6e8629$var$Ei(b, c) : ($f716e3e58d6e8629$var$Fi(a, b, c), c = $f716e3e58d6e8629$var$Jg(), a = $f716e3e58d6e8629$var$Lg(a, d, c), null !== a && $f716e3e58d6e8629$var$Gi(a, b, d));\n}\nfunction $f716e3e58d6e8629$var$ni(a, b, c) {\n var d = $f716e3e58d6e8629$var$Kg(a), e = {\n lane: d,\n action: c,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if ($f716e3e58d6e8629$var$Di(a)) $f716e3e58d6e8629$var$Ei(b, e);\n else {\n $f716e3e58d6e8629$var$Fi(a, b, e);\n var f = a.alternate;\n if (0 === a.lanes && (null === f || 0 === f.lanes) && (f = b.lastRenderedReducer, null !== f)) try {\n var g = b.lastRenderedState, h = f(g, c);\n e.hasEagerState = !0;\n e.eagerState = h;\n if ($f716e3e58d6e8629$var$Ge(h, g)) return;\n } catch (k) {} finally{}\n c = $f716e3e58d6e8629$var$Jg();\n a = $f716e3e58d6e8629$var$Lg(a, d, c);\n null !== a && $f716e3e58d6e8629$var$Gi(a, b, d);\n }\n}\nfunction $f716e3e58d6e8629$var$Di(a) {\n var b = a.alternate;\n return a === $f716e3e58d6e8629$var$L || null !== b && b === $f716e3e58d6e8629$var$L;\n}\nfunction $f716e3e58d6e8629$var$Ei(a, b) {\n $f716e3e58d6e8629$var$Qh = $f716e3e58d6e8629$var$Ph = !0;\n var c = a.pending;\n null === c ? b.next = b : (b.next = c.next, c.next = b);\n a.pending = b;\n}\nfunction $f716e3e58d6e8629$var$Fi(a, b, c) {\n $f716e3e58d6e8629$var$Bg(a) ? (a = b.interleaved, null === a ? (c.next = c, null === $f716e3e58d6e8629$var$vg ? $f716e3e58d6e8629$var$vg = [\n b\n ] : $f716e3e58d6e8629$var$vg.push(b)) : (c.next = a.next, a.next = c), b.interleaved = c) : (a = b.pending, null === a ? c.next = c : (c.next = a.next, a.next = c), b.pending = c);\n}\nfunction $f716e3e58d6e8629$var$Gi(a, b, c) {\n if (0 !== (c & 4194240)) {\n var d = b.lanes;\n d &= a.pendingLanes;\n c |= d;\n b.lanes = c;\n $f716e3e58d6e8629$var$Bc(a, c);\n }\n}\nvar $f716e3e58d6e8629$var$Yh = {\n readContext: $f716e3e58d6e8629$var$ug,\n useCallback: $f716e3e58d6e8629$var$O,\n useContext: $f716e3e58d6e8629$var$O,\n useEffect: $f716e3e58d6e8629$var$O,\n useImperativeHandle: $f716e3e58d6e8629$var$O,\n useInsertionEffect: $f716e3e58d6e8629$var$O,\n useLayoutEffect: $f716e3e58d6e8629$var$O,\n useMemo: $f716e3e58d6e8629$var$O,\n useReducer: $f716e3e58d6e8629$var$O,\n useRef: $f716e3e58d6e8629$var$O,\n useState: $f716e3e58d6e8629$var$O,\n useDebugValue: $f716e3e58d6e8629$var$O,\n useDeferredValue: $f716e3e58d6e8629$var$O,\n useTransition: $f716e3e58d6e8629$var$O,\n useMutableSource: $f716e3e58d6e8629$var$O,\n useSyncExternalStore: $f716e3e58d6e8629$var$O,\n useId: $f716e3e58d6e8629$var$O,\n unstable_isNewReconciler: !1\n}, $f716e3e58d6e8629$var$Vh = {\n readContext: $f716e3e58d6e8629$var$ug,\n useCallback: function(a, b) {\n $f716e3e58d6e8629$var$$h().memoizedState = [\n a,\n void 0 === b ? null : b\n ];\n return a;\n },\n useContext: $f716e3e58d6e8629$var$ug,\n useEffect: $f716e3e58d6e8629$var$ri,\n useImperativeHandle: function(a, b, c) {\n c = null !== c && void 0 !== c ? c.concat([\n a\n ]) : null;\n return $f716e3e58d6e8629$var$pi(4194308, 4, $f716e3e58d6e8629$var$ui.bind(null, b, a), c);\n },\n useLayoutEffect: function(a, b) {\n return $f716e3e58d6e8629$var$pi(4194308, 4, a, b);\n },\n useInsertionEffect: function(a, b) {\n return $f716e3e58d6e8629$var$pi(4, 2, a, b);\n },\n useMemo: function(a, b) {\n var c = $f716e3e58d6e8629$var$$h();\n b = void 0 === b ? null : b;\n a = a();\n c.memoizedState = [\n a,\n b\n ];\n return a;\n },\n useReducer: function(a, b, c) {\n var d = $f716e3e58d6e8629$var$$h();\n b = void 0 !== c ? c(b) : b;\n d.memoizedState = d.baseState = b;\n a = {\n pending: null,\n interleaved: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: a,\n lastRenderedState: b\n };\n d.queue = a;\n a = a.dispatch = $f716e3e58d6e8629$var$Ci.bind(null, $f716e3e58d6e8629$var$L, a);\n return [\n d.memoizedState,\n a\n ];\n },\n useRef: function(a) {\n var b = $f716e3e58d6e8629$var$$h();\n a = {\n current: a\n };\n return b.memoizedState = a;\n },\n useState: $f716e3e58d6e8629$var$mi,\n useDebugValue: $f716e3e58d6e8629$var$wi,\n useDeferredValue: function(a) {\n return $f716e3e58d6e8629$var$$h().memoizedState = a;\n },\n useTransition: function() {\n var a = $f716e3e58d6e8629$var$mi(!1), b = a[0];\n a = $f716e3e58d6e8629$var$Ai.bind(null, a[1]);\n $f716e3e58d6e8629$var$$h().memoizedState = a;\n return [\n b,\n a\n ];\n },\n useMutableSource: function() {},\n useSyncExternalStore: function(a, b, c) {\n var d = $f716e3e58d6e8629$var$L, e = $f716e3e58d6e8629$var$$h();\n if ($f716e3e58d6e8629$var$I) {\n if (void 0 === c) throw Error($f716e3e58d6e8629$var$p(407));\n c = c();\n } else {\n c = b();\n if (null === $f716e3e58d6e8629$var$P) throw Error($f716e3e58d6e8629$var$p(349));\n 0 !== ($f716e3e58d6e8629$var$Oh & 30) || $f716e3e58d6e8629$var$ki(d, b, c);\n }\n e.memoizedState = c;\n var f = {\n value: c,\n getSnapshot: b\n };\n e.queue = f;\n $f716e3e58d6e8629$var$ri($f716e3e58d6e8629$var$hi.bind(null, d, f, a), [\n a\n ]);\n d.flags |= 2048;\n $f716e3e58d6e8629$var$ii(9, $f716e3e58d6e8629$var$ji.bind(null, d, f, c, b), void 0, null);\n return c;\n },\n useId: function() {\n var a = $f716e3e58d6e8629$var$$h(), b = $f716e3e58d6e8629$var$P.identifierPrefix;\n if ($f716e3e58d6e8629$var$I) {\n var c = $f716e3e58d6e8629$var$Zg;\n var d = $f716e3e58d6e8629$var$Yg;\n c = (d & ~(1 << 32 - $f716e3e58d6e8629$var$nc(d) - 1)).toString(32) + c;\n b = \":\" + b + \"R\" + c;\n c = $f716e3e58d6e8629$var$Rh++;\n 0 < c && (b += \"H\" + c.toString(32));\n b += \":\";\n } else c = $f716e3e58d6e8629$var$Sh++, b = \":\" + b + \"r\" + c.toString(32) + \":\";\n return a.memoizedState = b;\n },\n unstable_isNewReconciler: !1\n}, $f716e3e58d6e8629$var$Wh = {\n readContext: $f716e3e58d6e8629$var$ug,\n useCallback: $f716e3e58d6e8629$var$xi,\n useContext: $f716e3e58d6e8629$var$ug,\n useEffect: $f716e3e58d6e8629$var$gi,\n useImperativeHandle: $f716e3e58d6e8629$var$vi,\n useInsertionEffect: $f716e3e58d6e8629$var$si,\n useLayoutEffect: $f716e3e58d6e8629$var$ti,\n useMemo: $f716e3e58d6e8629$var$yi,\n useReducer: $f716e3e58d6e8629$var$ci,\n useRef: $f716e3e58d6e8629$var$oi,\n useState: function() {\n return $f716e3e58d6e8629$var$ci($f716e3e58d6e8629$var$bi);\n },\n useDebugValue: $f716e3e58d6e8629$var$wi,\n useDeferredValue: function(a) {\n var b = $f716e3e58d6e8629$var$ai();\n return $f716e3e58d6e8629$var$zi(b, $f716e3e58d6e8629$var$M.memoizedState, a);\n },\n useTransition: function() {\n var a = $f716e3e58d6e8629$var$ci($f716e3e58d6e8629$var$bi)[0], b = $f716e3e58d6e8629$var$ai().memoizedState;\n return [\n a,\n b\n ];\n },\n useMutableSource: $f716e3e58d6e8629$var$ei,\n useSyncExternalStore: $f716e3e58d6e8629$var$fi,\n useId: $f716e3e58d6e8629$var$Bi,\n unstable_isNewReconciler: !1\n}, $f716e3e58d6e8629$var$Xh = {\n readContext: $f716e3e58d6e8629$var$ug,\n useCallback: $f716e3e58d6e8629$var$xi,\n useContext: $f716e3e58d6e8629$var$ug,\n useEffect: $f716e3e58d6e8629$var$gi,\n useImperativeHandle: $f716e3e58d6e8629$var$vi,\n useInsertionEffect: $f716e3e58d6e8629$var$si,\n useLayoutEffect: $f716e3e58d6e8629$var$ti,\n useMemo: $f716e3e58d6e8629$var$yi,\n useReducer: $f716e3e58d6e8629$var$di,\n useRef: $f716e3e58d6e8629$var$oi,\n useState: function() {\n return $f716e3e58d6e8629$var$di($f716e3e58d6e8629$var$bi);\n },\n useDebugValue: $f716e3e58d6e8629$var$wi,\n useDeferredValue: function(a) {\n var b = $f716e3e58d6e8629$var$ai();\n return null === $f716e3e58d6e8629$var$M ? b.memoizedState = a : $f716e3e58d6e8629$var$zi(b, $f716e3e58d6e8629$var$M.memoizedState, a);\n },\n useTransition: function() {\n var a = $f716e3e58d6e8629$var$di($f716e3e58d6e8629$var$bi)[0], b = $f716e3e58d6e8629$var$ai().memoizedState;\n return [\n a,\n b\n ];\n },\n useMutableSource: $f716e3e58d6e8629$var$ei,\n useSyncExternalStore: $f716e3e58d6e8629$var$fi,\n useId: $f716e3e58d6e8629$var$Bi,\n unstable_isNewReconciler: !1\n};\nfunction $f716e3e58d6e8629$var$Hi(a, b) {\n try {\n var c = \"\", d = b;\n do c += $f716e3e58d6e8629$var$Oa(d), d = d.return;\n while (d);\n var e = c;\n } catch (f) {\n e = \"\\nError generating stack: \" + f.message + \"\\n\" + f.stack;\n }\n return {\n value: a,\n source: b,\n stack: e\n };\n}\nfunction $f716e3e58d6e8629$var$Ii(a, b) {\n try {\n console.error(b.value);\n } catch (c) {\n setTimeout(function() {\n throw c;\n });\n }\n}\nvar $f716e3e58d6e8629$var$Ji = \"function\" === typeof WeakMap ? WeakMap : Map;\nfunction $f716e3e58d6e8629$var$Ki(a, b, c) {\n c = $f716e3e58d6e8629$var$zg(-1, c);\n c.tag = 3;\n c.payload = {\n element: null\n };\n var d = b.value;\n c.callback = function() {\n $f716e3e58d6e8629$var$Li || ($f716e3e58d6e8629$var$Li = !0, $f716e3e58d6e8629$var$Mi = d);\n $f716e3e58d6e8629$var$Ii(a, b);\n };\n return c;\n}\nfunction $f716e3e58d6e8629$var$Ni(a, b, c) {\n c = $f716e3e58d6e8629$var$zg(-1, c);\n c.tag = 3;\n var d = a.type.getDerivedStateFromError;\n if (\"function\" === typeof d) {\n var e = b.value;\n c.payload = function() {\n return d(e);\n };\n c.callback = function() {\n $f716e3e58d6e8629$var$Ii(a, b);\n };\n }\n var f = a.stateNode;\n null !== f && \"function\" === typeof f.componentDidCatch && (c.callback = function() {\n $f716e3e58d6e8629$var$Ii(a, b);\n \"function\" !== typeof d && (null === $f716e3e58d6e8629$var$Oi ? $f716e3e58d6e8629$var$Oi = new Set([\n this\n ]) : $f716e3e58d6e8629$var$Oi.add(this));\n var c = b.stack;\n this.componentDidCatch(b.value, {\n componentStack: null !== c ? c : \"\"\n });\n });\n return c;\n}\nfunction $f716e3e58d6e8629$var$Pi(a, b, c) {\n var d = a.pingCache;\n if (null === d) {\n d = a.pingCache = new $f716e3e58d6e8629$var$Ji;\n var e = new Set;\n d.set(b, e);\n } else e = d.get(b), void 0 === e && (e = new Set, d.set(b, e));\n e.has(c) || (e.add(c), a = $f716e3e58d6e8629$var$Qi.bind(null, a, b, c), b.then(a, a));\n}\nfunction $f716e3e58d6e8629$var$Ri(a) {\n do {\n var b;\n if (b = 13 === a.tag) b = a.memoizedState, b = null !== b ? null !== b.dehydrated ? !0 : !1 : !0;\n if (b) return a;\n a = a.return;\n }while (null !== a);\n return null;\n}\nfunction $f716e3e58d6e8629$var$Si(a, b, c, d, e) {\n if (0 === (a.mode & 1)) return a === b ? a.flags |= 65536 : (a.flags |= 128, c.flags |= 131072, c.flags &= -52805, 1 === c.tag && (null === c.alternate ? c.tag = 17 : (b = $f716e3e58d6e8629$var$zg(-1, 1), b.tag = 2, $f716e3e58d6e8629$var$Ag(c, b))), c.lanes |= 1), a;\n a.flags |= 65536;\n a.lanes = e;\n return a;\n}\nvar $f716e3e58d6e8629$var$Ti, $f716e3e58d6e8629$var$Ui, $f716e3e58d6e8629$var$Vi, $f716e3e58d6e8629$var$Wi;\n$f716e3e58d6e8629$var$Ti = function(a, b) {\n for(var c = b.child; null !== c;){\n if (5 === c.tag || 6 === c.tag) a.appendChild(c.stateNode);\n else if (4 !== c.tag && null !== c.child) {\n c.child.return = c;\n c = c.child;\n continue;\n }\n if (c === b) break;\n for(; null === c.sibling;){\n if (null === c.return || c.return === b) return;\n c = c.return;\n }\n c.sibling.return = c.return;\n c = c.sibling;\n }\n};\n$f716e3e58d6e8629$var$Ui = function() {};\n$f716e3e58d6e8629$var$Vi = function(a, b, c, d) {\n var e = a.memoizedProps;\n if (e !== d) {\n a = b.stateNode;\n $f716e3e58d6e8629$var$Eh($f716e3e58d6e8629$var$Bh.current);\n var f = null;\n switch(c){\n case \"input\":\n e = $f716e3e58d6e8629$var$Xa(a, e);\n d = $f716e3e58d6e8629$var$Xa(a, d);\n f = [];\n break;\n case \"select\":\n e = $f716e3e58d6e8629$var$A({}, e, {\n value: void 0\n });\n d = $f716e3e58d6e8629$var$A({}, d, {\n value: void 0\n });\n f = [];\n break;\n case \"textarea\":\n e = $f716e3e58d6e8629$var$fb(a, e);\n d = $f716e3e58d6e8629$var$fb(a, d);\n f = [];\n break;\n default:\n \"function\" !== typeof e.onClick && \"function\" === typeof d.onClick && (a.onclick = $f716e3e58d6e8629$var$Af);\n }\n $f716e3e58d6e8629$var$tb(c, d);\n var g;\n c = null;\n for(l in e)if (!d.hasOwnProperty(l) && e.hasOwnProperty(l) && null != e[l]) {\n if (\"style\" === l) {\n var h = e[l];\n for(g in h)h.hasOwnProperty(g) && (c || (c = {}), c[g] = \"\");\n } else \"dangerouslySetInnerHTML\" !== l && \"children\" !== l && \"suppressContentEditableWarning\" !== l && \"suppressHydrationWarning\" !== l && \"autoFocus\" !== l && ($f716e3e58d6e8629$var$ea.hasOwnProperty(l) ? f || (f = []) : (f = f || []).push(l, null));\n }\n for(l in d){\n var k = d[l];\n h = null != e ? e[l] : void 0;\n if (d.hasOwnProperty(l) && k !== h && (null != k || null != h)) {\n if (\"style\" === l) {\n if (h) {\n for(g in h)!h.hasOwnProperty(g) || k && k.hasOwnProperty(g) || (c || (c = {}), c[g] = \"\");\n for(g in k)k.hasOwnProperty(g) && h[g] !== k[g] && (c || (c = {}), c[g] = k[g]);\n } else c || (f || (f = []), f.push(l, c)), c = k;\n } else \"dangerouslySetInnerHTML\" === l ? (k = k ? k.__html : void 0, h = h ? h.__html : void 0, null != k && h !== k && (f = f || []).push(l, k)) : \"children\" === l ? \"string\" !== typeof k && \"number\" !== typeof k || (f = f || []).push(l, \"\" + k) : \"suppressContentEditableWarning\" !== l && \"suppressHydrationWarning\" !== l && ($f716e3e58d6e8629$var$ea.hasOwnProperty(l) ? (null != k && \"onScroll\" === l && $f716e3e58d6e8629$var$D(\"scroll\", a), f || h === k || (f = [])) : (f = f || []).push(l, k));\n }\n }\n c && (f = f || []).push(\"style\", c);\n var l = f;\n if (b.updateQueue = l) b.flags |= 4;\n }\n};\n$f716e3e58d6e8629$var$Wi = function(a, b, c, d) {\n c !== d && (b.flags |= 4);\n};\nfunction $f716e3e58d6e8629$var$Xi(a, b) {\n if (!$f716e3e58d6e8629$var$I) switch(a.tailMode){\n case \"hidden\":\n b = a.tail;\n for(var c = null; null !== b;)null !== b.alternate && (c = b), b = b.sibling;\n null === c ? a.tail = null : c.sibling = null;\n break;\n case \"collapsed\":\n c = a.tail;\n for(var d = null; null !== c;)null !== c.alternate && (d = c), c = c.sibling;\n null === d ? b || null === a.tail ? a.tail = null : a.tail.sibling = null : d.sibling = null;\n }\n}\nfunction $f716e3e58d6e8629$var$Q(a) {\n var b = null !== a.alternate && a.alternate.child === a.child, c = 0, d = 0;\n if (b) for(var e = a.child; null !== e;)c |= e.lanes | e.childLanes, d |= e.subtreeFlags & 14680064, d |= e.flags & 14680064, e.return = a, e = e.sibling;\n else for(e = a.child; null !== e;)c |= e.lanes | e.childLanes, d |= e.subtreeFlags, d |= e.flags, e.return = a, e = e.sibling;\n a.subtreeFlags |= d;\n a.childLanes = c;\n return b;\n}\nfunction $f716e3e58d6e8629$var$Yi(a, b, c) {\n var d = b.pendingProps;\n $f716e3e58d6e8629$var$ch(b);\n switch(b.tag){\n case 2:\n case 16:\n case 15:\n case 0:\n case 11:\n case 7:\n case 8:\n case 12:\n case 9:\n case 14:\n return $f716e3e58d6e8629$var$Q(b), null;\n case 1:\n return $f716e3e58d6e8629$var$Yf(b.type) && $f716e3e58d6e8629$var$Zf(), $f716e3e58d6e8629$var$Q(b), null;\n case 3:\n d = b.stateNode;\n $f716e3e58d6e8629$var$Gh();\n $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$Vf);\n $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$H);\n $f716e3e58d6e8629$var$Lh();\n d.pendingContext && (d.context = d.pendingContext, d.pendingContext = null);\n if (null === a || null === a.child) $f716e3e58d6e8629$var$mh(b) ? b.flags |= 4 : null === a || a.memoizedState.isDehydrated && 0 === (b.flags & 256) || (b.flags |= 1024, null !== $f716e3e58d6e8629$var$fh && ($f716e3e58d6e8629$var$Zi($f716e3e58d6e8629$var$fh), $f716e3e58d6e8629$var$fh = null));\n $f716e3e58d6e8629$var$Ui(a, b);\n $f716e3e58d6e8629$var$Q(b);\n return null;\n case 5:\n $f716e3e58d6e8629$var$Ih(b);\n var e = $f716e3e58d6e8629$var$Eh($f716e3e58d6e8629$var$Dh.current);\n c = b.type;\n if (null !== a && null != b.stateNode) $f716e3e58d6e8629$var$Vi(a, b, c, d, e), a.ref !== b.ref && (b.flags |= 512, b.flags |= 2097152);\n else {\n if (!d) {\n if (null === b.stateNode) throw Error($f716e3e58d6e8629$var$p(166));\n $f716e3e58d6e8629$var$Q(b);\n return null;\n }\n a = $f716e3e58d6e8629$var$Eh($f716e3e58d6e8629$var$Bh.current);\n if ($f716e3e58d6e8629$var$mh(b)) {\n d = b.stateNode;\n c = b.type;\n var f = b.memoizedProps;\n d[$f716e3e58d6e8629$var$Nf] = b;\n d[$f716e3e58d6e8629$var$Of] = f;\n a = 0 !== (b.mode & 1);\n switch(c){\n case \"dialog\":\n $f716e3e58d6e8629$var$D(\"cancel\", d);\n $f716e3e58d6e8629$var$D(\"close\", d);\n break;\n case \"iframe\":\n case \"object\":\n case \"embed\":\n $f716e3e58d6e8629$var$D(\"load\", d);\n break;\n case \"video\":\n case \"audio\":\n for(e = 0; e < $f716e3e58d6e8629$var$kf.length; e++)$f716e3e58d6e8629$var$D($f716e3e58d6e8629$var$kf[e], d);\n break;\n case \"source\":\n $f716e3e58d6e8629$var$D(\"error\", d);\n break;\n case \"img\":\n case \"image\":\n case \"link\":\n $f716e3e58d6e8629$var$D(\"error\", d);\n $f716e3e58d6e8629$var$D(\"load\", d);\n break;\n case \"details\":\n $f716e3e58d6e8629$var$D(\"toggle\", d);\n break;\n case \"input\":\n $f716e3e58d6e8629$var$Ya(d, f);\n $f716e3e58d6e8629$var$D(\"invalid\", d);\n break;\n case \"select\":\n d._wrapperState = {\n wasMultiple: !!f.multiple\n };\n $f716e3e58d6e8629$var$D(\"invalid\", d);\n break;\n case \"textarea\":\n $f716e3e58d6e8629$var$gb(d, f), $f716e3e58d6e8629$var$D(\"invalid\", d);\n }\n $f716e3e58d6e8629$var$tb(c, f);\n e = null;\n for(var g in f)if (f.hasOwnProperty(g)) {\n var h = f[g];\n \"children\" === g ? \"string\" === typeof h ? d.textContent !== h && (!0 !== f.suppressHydrationWarning && $f716e3e58d6e8629$var$zf(d.textContent, h, a), e = [\n \"children\",\n h\n ]) : \"number\" === typeof h && d.textContent !== \"\" + h && (!0 !== f.suppressHydrationWarning && $f716e3e58d6e8629$var$zf(d.textContent, h, a), e = [\n \"children\",\n \"\" + h\n ]) : $f716e3e58d6e8629$var$ea.hasOwnProperty(g) && null != h && \"onScroll\" === g && $f716e3e58d6e8629$var$D(\"scroll\", d);\n }\n switch(c){\n case \"input\":\n $f716e3e58d6e8629$var$Ua(d);\n $f716e3e58d6e8629$var$cb(d, f, !0);\n break;\n case \"textarea\":\n $f716e3e58d6e8629$var$Ua(d);\n $f716e3e58d6e8629$var$ib(d);\n break;\n case \"select\":\n case \"option\":\n break;\n default:\n \"function\" === typeof f.onClick && (d.onclick = $f716e3e58d6e8629$var$Af);\n }\n d = e;\n b.updateQueue = d;\n null !== d && (b.flags |= 4);\n } else {\n g = 9 === e.nodeType ? e : e.ownerDocument;\n \"http://www.w3.org/1999/xhtml\" === a && (a = $f716e3e58d6e8629$var$jb(c));\n \"http://www.w3.org/1999/xhtml\" === a ? \"script\" === c ? (a = g.createElement(\"div\"), a.innerHTML = \"\", a = a.removeChild(a.firstChild)) : \"string\" === typeof d.is ? a = g.createElement(c, {\n is: d.is\n }) : (a = g.createElement(c), \"select\" === c && (g = a, d.multiple ? g.multiple = !0 : d.size && (g.size = d.size))) : a = g.createElementNS(a, c);\n a[$f716e3e58d6e8629$var$Nf] = b;\n a[$f716e3e58d6e8629$var$Of] = d;\n $f716e3e58d6e8629$var$Ti(a, b, !1, !1);\n b.stateNode = a;\n a: {\n g = $f716e3e58d6e8629$var$ub(c, d);\n switch(c){\n case \"dialog\":\n $f716e3e58d6e8629$var$D(\"cancel\", a);\n $f716e3e58d6e8629$var$D(\"close\", a);\n e = d;\n break;\n case \"iframe\":\n case \"object\":\n case \"embed\":\n $f716e3e58d6e8629$var$D(\"load\", a);\n e = d;\n break;\n case \"video\":\n case \"audio\":\n for(e = 0; e < $f716e3e58d6e8629$var$kf.length; e++)$f716e3e58d6e8629$var$D($f716e3e58d6e8629$var$kf[e], a);\n e = d;\n break;\n case \"source\":\n $f716e3e58d6e8629$var$D(\"error\", a);\n e = d;\n break;\n case \"img\":\n case \"image\":\n case \"link\":\n $f716e3e58d6e8629$var$D(\"error\", a);\n $f716e3e58d6e8629$var$D(\"load\", a);\n e = d;\n break;\n case \"details\":\n $f716e3e58d6e8629$var$D(\"toggle\", a);\n e = d;\n break;\n case \"input\":\n $f716e3e58d6e8629$var$Ya(a, d);\n e = $f716e3e58d6e8629$var$Xa(a, d);\n $f716e3e58d6e8629$var$D(\"invalid\", a);\n break;\n case \"option\":\n e = d;\n break;\n case \"select\":\n a._wrapperState = {\n wasMultiple: !!d.multiple\n };\n e = $f716e3e58d6e8629$var$A({}, d, {\n value: void 0\n });\n $f716e3e58d6e8629$var$D(\"invalid\", a);\n break;\n case \"textarea\":\n $f716e3e58d6e8629$var$gb(a, d);\n e = $f716e3e58d6e8629$var$fb(a, d);\n $f716e3e58d6e8629$var$D(\"invalid\", a);\n break;\n default:\n e = d;\n }\n $f716e3e58d6e8629$var$tb(c, e);\n h = e;\n for(f in h)if (h.hasOwnProperty(f)) {\n var k = h[f];\n \"style\" === f ? $f716e3e58d6e8629$var$rb(a, k) : \"dangerouslySetInnerHTML\" === f ? (k = k ? k.__html : void 0, null != k && $f716e3e58d6e8629$var$mb(a, k)) : \"children\" === f ? \"string\" === typeof k ? (\"textarea\" !== c || \"\" !== k) && $f716e3e58d6e8629$var$nb(a, k) : \"number\" === typeof k && $f716e3e58d6e8629$var$nb(a, \"\" + k) : \"suppressContentEditableWarning\" !== f && \"suppressHydrationWarning\" !== f && \"autoFocus\" !== f && ($f716e3e58d6e8629$var$ea.hasOwnProperty(f) ? null != k && \"onScroll\" === f && $f716e3e58d6e8629$var$D(\"scroll\", a) : null != k && $f716e3e58d6e8629$var$sa(a, f, k, g));\n }\n switch(c){\n case \"input\":\n $f716e3e58d6e8629$var$Ua(a);\n $f716e3e58d6e8629$var$cb(a, d, !1);\n break;\n case \"textarea\":\n $f716e3e58d6e8629$var$Ua(a);\n $f716e3e58d6e8629$var$ib(a);\n break;\n case \"option\":\n null != d.value && a.setAttribute(\"value\", \"\" + $f716e3e58d6e8629$var$Ra(d.value));\n break;\n case \"select\":\n a.multiple = !!d.multiple;\n f = d.value;\n null != f ? $f716e3e58d6e8629$var$eb(a, !!d.multiple, f, !1) : null != d.defaultValue && $f716e3e58d6e8629$var$eb(a, !!d.multiple, d.defaultValue, !0);\n break;\n default:\n \"function\" === typeof e.onClick && (a.onclick = $f716e3e58d6e8629$var$Af);\n }\n switch(c){\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n d = !!d.autoFocus;\n break a;\n case \"img\":\n d = !0;\n break a;\n default:\n d = !1;\n }\n }\n d && (b.flags |= 4);\n }\n null !== b.ref && (b.flags |= 512, b.flags |= 2097152);\n }\n $f716e3e58d6e8629$var$Q(b);\n return null;\n case 6:\n if (a && null != b.stateNode) $f716e3e58d6e8629$var$Wi(a, b, a.memoizedProps, d);\n else {\n if (\"string\" !== typeof d && null === b.stateNode) throw Error($f716e3e58d6e8629$var$p(166));\n c = $f716e3e58d6e8629$var$Eh($f716e3e58d6e8629$var$Dh.current);\n $f716e3e58d6e8629$var$Eh($f716e3e58d6e8629$var$Bh.current);\n if ($f716e3e58d6e8629$var$mh(b)) {\n d = b.stateNode;\n c = b.memoizedProps;\n d[$f716e3e58d6e8629$var$Nf] = b;\n if (f = d.nodeValue !== c) {\n if (a = $f716e3e58d6e8629$var$dh, null !== a) switch(a.tag){\n case 3:\n $f716e3e58d6e8629$var$zf(d.nodeValue, c, 0 !== (a.mode & 1));\n break;\n case 5:\n !0 !== a.memoizedProps.suppressHydrationWarning && $f716e3e58d6e8629$var$zf(d.nodeValue, c, 0 !== (a.mode & 1));\n }\n }\n f && (b.flags |= 4);\n } else d = (9 === c.nodeType ? c : c.ownerDocument).createTextNode(d), d[$f716e3e58d6e8629$var$Nf] = b, b.stateNode = d;\n }\n $f716e3e58d6e8629$var$Q(b);\n return null;\n case 13:\n $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$K);\n d = b.memoizedState;\n if ($f716e3e58d6e8629$var$I && null !== $f716e3e58d6e8629$var$eh && 0 !== (b.mode & 1) && 0 === (b.flags & 128)) {\n for(d = $f716e3e58d6e8629$var$eh; d;)d = $f716e3e58d6e8629$var$Kf(d.nextSibling);\n $f716e3e58d6e8629$var$nh();\n b.flags |= 98560;\n return b;\n }\n if (null !== d && null !== d.dehydrated) {\n d = $f716e3e58d6e8629$var$mh(b);\n if (null === a) {\n if (!d) throw Error($f716e3e58d6e8629$var$p(318));\n d = b.memoizedState;\n d = null !== d ? d.dehydrated : null;\n if (!d) throw Error($f716e3e58d6e8629$var$p(317));\n d[$f716e3e58d6e8629$var$Nf] = b;\n } else $f716e3e58d6e8629$var$nh(), 0 === (b.flags & 128) && (b.memoizedState = null), b.flags |= 4;\n $f716e3e58d6e8629$var$Q(b);\n return null;\n }\n null !== $f716e3e58d6e8629$var$fh && ($f716e3e58d6e8629$var$Zi($f716e3e58d6e8629$var$fh), $f716e3e58d6e8629$var$fh = null);\n if (0 !== (b.flags & 128)) return b.lanes = c, b;\n d = null !== d;\n c = !1;\n null === a ? $f716e3e58d6e8629$var$mh(b) : c = null !== a.memoizedState;\n d !== c && d && (b.child.flags |= 8192, 0 !== (b.mode & 1) && (null === a || 0 !== ($f716e3e58d6e8629$var$K.current & 1) ? 0 === $f716e3e58d6e8629$var$R && ($f716e3e58d6e8629$var$R = 3) : $f716e3e58d6e8629$var$$i()));\n null !== b.updateQueue && (b.flags |= 4);\n $f716e3e58d6e8629$var$Q(b);\n return null;\n case 4:\n return $f716e3e58d6e8629$var$Gh(), $f716e3e58d6e8629$var$Ui(a, b), null === a && $f716e3e58d6e8629$var$rf(b.stateNode.containerInfo), $f716e3e58d6e8629$var$Q(b), null;\n case 10:\n return $f716e3e58d6e8629$var$qg(b.type._context), $f716e3e58d6e8629$var$Q(b), null;\n case 17:\n return $f716e3e58d6e8629$var$Yf(b.type) && $f716e3e58d6e8629$var$Zf(), $f716e3e58d6e8629$var$Q(b), null;\n case 19:\n $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$K);\n f = b.memoizedState;\n if (null === f) return $f716e3e58d6e8629$var$Q(b), null;\n d = 0 !== (b.flags & 128);\n g = f.rendering;\n if (null === g) {\n if (d) $f716e3e58d6e8629$var$Xi(f, !1);\n else {\n if (0 !== $f716e3e58d6e8629$var$R || null !== a && 0 !== (a.flags & 128)) for(a = b.child; null !== a;){\n g = $f716e3e58d6e8629$var$Jh(a);\n if (null !== g) {\n b.flags |= 128;\n $f716e3e58d6e8629$var$Xi(f, !1);\n d = g.updateQueue;\n null !== d && (b.updateQueue = d, b.flags |= 4);\n b.subtreeFlags = 0;\n d = c;\n for(c = b.child; null !== c;)f = c, a = d, f.flags &= 14680066, g = f.alternate, null === g ? (f.childLanes = 0, f.lanes = a, f.child = null, f.subtreeFlags = 0, f.memoizedProps = null, f.memoizedState = null, f.updateQueue = null, f.dependencies = null, f.stateNode = null) : (f.childLanes = g.childLanes, f.lanes = g.lanes, f.child = g.child, f.subtreeFlags = 0, f.deletions = null, f.memoizedProps = g.memoizedProps, f.memoizedState = g.memoizedState, f.updateQueue = g.updateQueue, f.type = g.type, a = g.dependencies, f.dependencies = null === a ? null : {\n lanes: a.lanes,\n firstContext: a.firstContext\n }), c = c.sibling;\n $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$K, $f716e3e58d6e8629$var$K.current & 1 | 2);\n return b.child;\n }\n a = a.sibling;\n }\n null !== f.tail && $f716e3e58d6e8629$var$B() > $f716e3e58d6e8629$var$aj && (b.flags |= 128, d = !0, $f716e3e58d6e8629$var$Xi(f, !1), b.lanes = 4194304);\n }\n } else {\n if (!d) {\n if (a = $f716e3e58d6e8629$var$Jh(g), null !== a) {\n if (b.flags |= 128, d = !0, c = a.updateQueue, null !== c && (b.updateQueue = c, b.flags |= 4), $f716e3e58d6e8629$var$Xi(f, !0), null === f.tail && \"hidden\" === f.tailMode && !g.alternate && !$f716e3e58d6e8629$var$I) return $f716e3e58d6e8629$var$Q(b), null;\n } else 2 * $f716e3e58d6e8629$var$B() - f.renderingStartTime > $f716e3e58d6e8629$var$aj && 1073741824 !== c && (b.flags |= 128, d = !0, $f716e3e58d6e8629$var$Xi(f, !1), b.lanes = 4194304);\n }\n f.isBackwards ? (g.sibling = b.child, b.child = g) : (c = f.last, null !== c ? c.sibling = g : b.child = g, f.last = g);\n }\n if (null !== f.tail) return b = f.tail, f.rendering = b, f.tail = b.sibling, f.renderingStartTime = $f716e3e58d6e8629$var$B(), b.sibling = null, c = $f716e3e58d6e8629$var$K.current, $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$K, d ? c & 1 | 2 : c & 1), b;\n $f716e3e58d6e8629$var$Q(b);\n return null;\n case 22:\n case 23:\n return $f716e3e58d6e8629$var$bj(), d = null !== b.memoizedState, null !== a && null !== a.memoizedState !== d && (b.flags |= 8192), d && 0 !== (b.mode & 1) ? 0 !== ($f716e3e58d6e8629$var$cj & 1073741824) && ($f716e3e58d6e8629$var$Q(b), b.subtreeFlags & 6 && (b.flags |= 8192)) : $f716e3e58d6e8629$var$Q(b), null;\n case 24:\n return null;\n case 25:\n return null;\n }\n throw Error($f716e3e58d6e8629$var$p(156, b.tag));\n}\nvar $f716e3e58d6e8629$var$dj = $f716e3e58d6e8629$var$ta.ReactCurrentOwner, $f716e3e58d6e8629$var$tg = !1;\nfunction $f716e3e58d6e8629$var$ej(a, b, c, d) {\n b.child = null === a ? $f716e3e58d6e8629$var$zh(b, null, c, d) : $f716e3e58d6e8629$var$yh(b, a.child, c, d);\n}\nfunction $f716e3e58d6e8629$var$fj(a, b, c, d, e) {\n c = c.render;\n var f = b.ref;\n $f716e3e58d6e8629$var$sg(b, e);\n d = $f716e3e58d6e8629$var$Uh(a, b, c, d, f, e);\n c = $f716e3e58d6e8629$var$Zh();\n if (null !== a && !$f716e3e58d6e8629$var$tg) return b.updateQueue = a.updateQueue, b.flags &= -2053, a.lanes &= ~e, $f716e3e58d6e8629$var$gj(a, b, e);\n $f716e3e58d6e8629$var$I && c && $f716e3e58d6e8629$var$bh(b);\n b.flags |= 1;\n $f716e3e58d6e8629$var$ej(a, b, d, e);\n return b.child;\n}\nfunction $f716e3e58d6e8629$var$hj(a, b, c, d, e) {\n if (null === a) {\n var f = c.type;\n if (\"function\" === typeof f && !$f716e3e58d6e8629$var$ij(f) && void 0 === f.defaultProps && null === c.compare && void 0 === c.defaultProps) return b.tag = 15, b.type = f, $f716e3e58d6e8629$var$jj(a, b, f, d, e);\n a = $f716e3e58d6e8629$var$vh(c.type, null, d, b, b.mode, e);\n a.ref = b.ref;\n a.return = b;\n return b.child = a;\n }\n f = a.child;\n if (0 === (a.lanes & e)) {\n var g = f.memoizedProps;\n c = c.compare;\n c = null !== c ? c : $f716e3e58d6e8629$var$He;\n if (c(g, d) && a.ref === b.ref) return $f716e3e58d6e8629$var$gj(a, b, e);\n }\n b.flags |= 1;\n a = $f716e3e58d6e8629$var$th(f, d);\n a.ref = b.ref;\n a.return = b;\n return b.child = a;\n}\nfunction $f716e3e58d6e8629$var$jj(a, b, c, d, e) {\n if (null !== a) {\n var f = a.memoizedProps;\n if ($f716e3e58d6e8629$var$He(f, d) && a.ref === b.ref) {\n if ($f716e3e58d6e8629$var$tg = !1, b.pendingProps = d = f, 0 !== (a.lanes & e)) 0 !== (a.flags & 131072) && ($f716e3e58d6e8629$var$tg = !0);\n else return b.lanes = a.lanes, $f716e3e58d6e8629$var$gj(a, b, e);\n }\n }\n return $f716e3e58d6e8629$var$kj(a, b, c, d, e);\n}\nfunction $f716e3e58d6e8629$var$lj(a, b, c) {\n var d = b.pendingProps, e = d.children, f = null !== a ? a.memoizedState : null;\n if (\"hidden\" === d.mode) {\n if (0 === (b.mode & 1)) b.memoizedState = {\n baseLanes: 0,\n cachePool: null,\n transitions: null\n }, $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$mj, $f716e3e58d6e8629$var$cj), $f716e3e58d6e8629$var$cj |= c;\n else if (0 !== (c & 1073741824)) b.memoizedState = {\n baseLanes: 0,\n cachePool: null,\n transitions: null\n }, d = null !== f ? f.baseLanes : c, $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$mj, $f716e3e58d6e8629$var$cj), $f716e3e58d6e8629$var$cj |= d;\n else return a = null !== f ? f.baseLanes | c : c, b.lanes = b.childLanes = 1073741824, b.memoizedState = {\n baseLanes: a,\n cachePool: null,\n transitions: null\n }, b.updateQueue = null, $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$mj, $f716e3e58d6e8629$var$cj), $f716e3e58d6e8629$var$cj |= a, null;\n } else null !== f ? (d = f.baseLanes | c, b.memoizedState = null) : d = c, $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$mj, $f716e3e58d6e8629$var$cj), $f716e3e58d6e8629$var$cj |= d;\n $f716e3e58d6e8629$var$ej(a, b, e, c);\n return b.child;\n}\nfunction $f716e3e58d6e8629$var$nj(a, b) {\n var c = b.ref;\n if (null === a && null !== c || null !== a && a.ref !== c) b.flags |= 512, b.flags |= 2097152;\n}\nfunction $f716e3e58d6e8629$var$kj(a, b, c, d, e) {\n var f = $f716e3e58d6e8629$var$Yf(c) ? $f716e3e58d6e8629$var$Wf : $f716e3e58d6e8629$var$H.current;\n f = $f716e3e58d6e8629$var$Xf(b, f);\n $f716e3e58d6e8629$var$sg(b, e);\n c = $f716e3e58d6e8629$var$Uh(a, b, c, d, f, e);\n d = $f716e3e58d6e8629$var$Zh();\n if (null !== a && !$f716e3e58d6e8629$var$tg) return b.updateQueue = a.updateQueue, b.flags &= -2053, a.lanes &= ~e, $f716e3e58d6e8629$var$gj(a, b, e);\n $f716e3e58d6e8629$var$I && d && $f716e3e58d6e8629$var$bh(b);\n b.flags |= 1;\n $f716e3e58d6e8629$var$ej(a, b, c, e);\n return b.child;\n}\nfunction $f716e3e58d6e8629$var$oj(a, b, c, d, e) {\n if ($f716e3e58d6e8629$var$Yf(c)) {\n var f = !0;\n $f716e3e58d6e8629$var$bg(b);\n } else f = !1;\n $f716e3e58d6e8629$var$sg(b, e);\n if (null === b.stateNode) null !== a && (a.alternate = null, b.alternate = null, b.flags |= 2), $f716e3e58d6e8629$var$Og(b, c, d), $f716e3e58d6e8629$var$Qg(b, c, d, e), d = !0;\n else if (null === a) {\n var g = b.stateNode, h = b.memoizedProps;\n g.props = h;\n var k = g.context, l = c.contextType;\n \"object\" === typeof l && null !== l ? l = $f716e3e58d6e8629$var$ug(l) : (l = $f716e3e58d6e8629$var$Yf(c) ? $f716e3e58d6e8629$var$Wf : $f716e3e58d6e8629$var$H.current, l = $f716e3e58d6e8629$var$Xf(b, l));\n var n = c.getDerivedStateFromProps, u = \"function\" === typeof n || \"function\" === typeof g.getSnapshotBeforeUpdate;\n u || \"function\" !== typeof g.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g.componentWillReceiveProps || (h !== d || k !== l) && $f716e3e58d6e8629$var$Pg(b, g, d, l);\n $f716e3e58d6e8629$var$wg = !1;\n var q = b.memoizedState;\n g.state = q;\n $f716e3e58d6e8629$var$Eg(b, d, g, e);\n k = b.memoizedState;\n h !== d || q !== k || $f716e3e58d6e8629$var$Vf.current || $f716e3e58d6e8629$var$wg ? (\"function\" === typeof n && ($f716e3e58d6e8629$var$Ig(b, c, n, d), k = b.memoizedState), (h = $f716e3e58d6e8629$var$wg || $f716e3e58d6e8629$var$Ng(b, c, h, d, q, k, l)) ? (u || \"function\" !== typeof g.UNSAFE_componentWillMount && \"function\" !== typeof g.componentWillMount || (\"function\" === typeof g.componentWillMount && g.componentWillMount(), \"function\" === typeof g.UNSAFE_componentWillMount && g.UNSAFE_componentWillMount()), \"function\" === typeof g.componentDidMount && (b.flags |= 4194308)) : (\"function\" === typeof g.componentDidMount && (b.flags |= 4194308), b.memoizedProps = d, b.memoizedState = k), g.props = d, g.state = k, g.context = l, d = h) : (\"function\" === typeof g.componentDidMount && (b.flags |= 4194308), d = !1);\n } else {\n g = b.stateNode;\n $f716e3e58d6e8629$var$yg(a, b);\n h = b.memoizedProps;\n l = b.type === b.elementType ? h : $f716e3e58d6e8629$var$kg(b.type, h);\n g.props = l;\n u = b.pendingProps;\n q = g.context;\n k = c.contextType;\n \"object\" === typeof k && null !== k ? k = $f716e3e58d6e8629$var$ug(k) : (k = $f716e3e58d6e8629$var$Yf(c) ? $f716e3e58d6e8629$var$Wf : $f716e3e58d6e8629$var$H.current, k = $f716e3e58d6e8629$var$Xf(b, k));\n var y = c.getDerivedStateFromProps;\n (n = \"function\" === typeof y || \"function\" === typeof g.getSnapshotBeforeUpdate) || \"function\" !== typeof g.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g.componentWillReceiveProps || (h !== u || q !== k) && $f716e3e58d6e8629$var$Pg(b, g, d, k);\n $f716e3e58d6e8629$var$wg = !1;\n q = b.memoizedState;\n g.state = q;\n $f716e3e58d6e8629$var$Eg(b, d, g, e);\n var m = b.memoizedState;\n h !== u || q !== m || $f716e3e58d6e8629$var$Vf.current || $f716e3e58d6e8629$var$wg ? (\"function\" === typeof y && ($f716e3e58d6e8629$var$Ig(b, c, y, d), m = b.memoizedState), (l = $f716e3e58d6e8629$var$wg || $f716e3e58d6e8629$var$Ng(b, c, l, d, q, m, k) || !1) ? (n || \"function\" !== typeof g.UNSAFE_componentWillUpdate && \"function\" !== typeof g.componentWillUpdate || (\"function\" === typeof g.componentWillUpdate && g.componentWillUpdate(d, m, k), \"function\" === typeof g.UNSAFE_componentWillUpdate && g.UNSAFE_componentWillUpdate(d, m, k)), \"function\" === typeof g.componentDidUpdate && (b.flags |= 4), \"function\" === typeof g.getSnapshotBeforeUpdate && (b.flags |= 1024)) : (\"function\" !== typeof g.componentDidUpdate || h === a.memoizedProps && q === a.memoizedState || (b.flags |= 4), \"function\" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && q === a.memoizedState || (b.flags |= 1024), b.memoizedProps = d, b.memoizedState = m), g.props = d, g.state = m, g.context = k, d = l) : (\"function\" !== typeof g.componentDidUpdate || h === a.memoizedProps && q === a.memoizedState || (b.flags |= 4), \"function\" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && q === a.memoizedState || (b.flags |= 1024), d = !1);\n }\n return $f716e3e58d6e8629$var$pj(a, b, c, d, f, e);\n}\nfunction $f716e3e58d6e8629$var$pj(a, b, c, d, e, f) {\n $f716e3e58d6e8629$var$nj(a, b);\n var g = 0 !== (b.flags & 128);\n if (!d && !g) return e && $f716e3e58d6e8629$var$cg(b, c, !1), $f716e3e58d6e8629$var$gj(a, b, f);\n d = b.stateNode;\n $f716e3e58d6e8629$var$dj.current = b;\n var h = g && \"function\" !== typeof c.getDerivedStateFromError ? null : d.render();\n b.flags |= 1;\n null !== a && g ? (b.child = $f716e3e58d6e8629$var$yh(b, a.child, null, f), b.child = $f716e3e58d6e8629$var$yh(b, null, h, f)) : $f716e3e58d6e8629$var$ej(a, b, h, f);\n b.memoizedState = d.state;\n e && $f716e3e58d6e8629$var$cg(b, c, !0);\n return b.child;\n}\nfunction $f716e3e58d6e8629$var$qj(a) {\n var b = a.stateNode;\n b.pendingContext ? $f716e3e58d6e8629$var$$f(a, b.pendingContext, b.pendingContext !== b.context) : b.context && $f716e3e58d6e8629$var$$f(a, b.context, !1);\n $f716e3e58d6e8629$var$Fh(a, b.containerInfo);\n}\nfunction $f716e3e58d6e8629$var$rj(a, b, c, d, e) {\n $f716e3e58d6e8629$var$nh();\n $f716e3e58d6e8629$var$oh(e);\n b.flags |= 256;\n $f716e3e58d6e8629$var$ej(a, b, c, d);\n return b.child;\n}\nvar $f716e3e58d6e8629$var$sj = {\n dehydrated: null,\n treeContext: null,\n retryLane: 0\n};\nfunction $f716e3e58d6e8629$var$tj(a) {\n return {\n baseLanes: a,\n cachePool: null,\n transitions: null\n };\n}\nfunction $f716e3e58d6e8629$var$uj(a, b) {\n return {\n baseLanes: a.baseLanes | b,\n cachePool: null,\n transitions: a.transitions\n };\n}\nfunction $f716e3e58d6e8629$var$vj(a, b, c) {\n var d = b.pendingProps, e = $f716e3e58d6e8629$var$K.current, f = !1, g = 0 !== (b.flags & 128), h;\n (h = g) || (h = null !== a && null === a.memoizedState ? !1 : 0 !== (e & 2));\n if (h) f = !0, b.flags &= -129;\n else if (null === a || null !== a.memoizedState) e |= 1;\n $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$K, e & 1);\n if (null === a) {\n $f716e3e58d6e8629$var$kh(b);\n a = b.memoizedState;\n if (null !== a && (a = a.dehydrated, null !== a)) return 0 === (b.mode & 1) ? b.lanes = 1 : \"$!\" === a.data ? b.lanes = 8 : b.lanes = 1073741824, null;\n e = d.children;\n a = d.fallback;\n return f ? (d = b.mode, f = b.child, e = {\n mode: \"hidden\",\n children: e\n }, 0 === (d & 1) && null !== f ? (f.childLanes = 0, f.pendingProps = e) : f = $f716e3e58d6e8629$var$wj(e, d, 0, null), a = $f716e3e58d6e8629$var$xh(a, d, c, null), f.return = b, a.return = b, f.sibling = a, b.child = f, b.child.memoizedState = $f716e3e58d6e8629$var$tj(c), b.memoizedState = $f716e3e58d6e8629$var$sj, a) : $f716e3e58d6e8629$var$xj(b, e);\n }\n e = a.memoizedState;\n if (null !== e) {\n h = e.dehydrated;\n if (null !== h) {\n if (g) {\n if (b.flags & 256) return b.flags &= -257, $f716e3e58d6e8629$var$yj(a, b, c, Error($f716e3e58d6e8629$var$p(422)));\n if (null !== b.memoizedState) return b.child = a.child, b.flags |= 128, null;\n f = d.fallback;\n e = b.mode;\n d = $f716e3e58d6e8629$var$wj({\n mode: \"visible\",\n children: d.children\n }, e, 0, null);\n f = $f716e3e58d6e8629$var$xh(f, e, c, null);\n f.flags |= 2;\n d.return = b;\n f.return = b;\n d.sibling = f;\n b.child = d;\n 0 !== (b.mode & 1) && $f716e3e58d6e8629$var$yh(b, a.child, null, c);\n b.child.memoizedState = $f716e3e58d6e8629$var$tj(c);\n b.memoizedState = $f716e3e58d6e8629$var$sj;\n return f;\n }\n if (0 === (b.mode & 1)) b = $f716e3e58d6e8629$var$yj(a, b, c, null);\n else if (\"$!\" === h.data) b = $f716e3e58d6e8629$var$yj(a, b, c, Error($f716e3e58d6e8629$var$p(419)));\n else if (d = 0 !== (c & a.childLanes), $f716e3e58d6e8629$var$tg || d) {\n d = $f716e3e58d6e8629$var$P;\n if (null !== d) {\n switch(c & -c){\n case 4:\n f = 2;\n break;\n case 16:\n f = 8;\n break;\n case 64:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n case 67108864:\n f = 32;\n break;\n case 536870912:\n f = 268435456;\n break;\n default:\n f = 0;\n }\n d = 0 !== (f & (d.suspendedLanes | c)) ? 0 : f;\n 0 !== d && d !== e.retryLane && (e.retryLane = d, $f716e3e58d6e8629$var$Lg(a, d, -1));\n }\n $f716e3e58d6e8629$var$$i();\n b = $f716e3e58d6e8629$var$yj(a, b, c, Error($f716e3e58d6e8629$var$p(421)));\n } else \"$?\" === h.data ? (b.flags |= 128, b.child = a.child, b = $f716e3e58d6e8629$var$zj.bind(null, a), h._reactRetry = b, b = null) : (c = e.treeContext, $f716e3e58d6e8629$var$eh = $f716e3e58d6e8629$var$Kf(h.nextSibling), $f716e3e58d6e8629$var$dh = b, $f716e3e58d6e8629$var$I = !0, $f716e3e58d6e8629$var$fh = null, null !== c && ($f716e3e58d6e8629$var$Vg[$f716e3e58d6e8629$var$Wg++] = $f716e3e58d6e8629$var$Yg, $f716e3e58d6e8629$var$Vg[$f716e3e58d6e8629$var$Wg++] = $f716e3e58d6e8629$var$Zg, $f716e3e58d6e8629$var$Vg[$f716e3e58d6e8629$var$Wg++] = $f716e3e58d6e8629$var$Xg, $f716e3e58d6e8629$var$Yg = c.id, $f716e3e58d6e8629$var$Zg = c.overflow, $f716e3e58d6e8629$var$Xg = b), b = $f716e3e58d6e8629$var$xj(b, b.pendingProps.children), b.flags |= 4096);\n return b;\n }\n if (f) return d = $f716e3e58d6e8629$var$Aj(a, b, d.children, d.fallback, c), f = b.child, e = a.child.memoizedState, f.memoizedState = null === e ? $f716e3e58d6e8629$var$tj(c) : $f716e3e58d6e8629$var$uj(e, c), f.childLanes = a.childLanes & ~c, b.memoizedState = $f716e3e58d6e8629$var$sj, d;\n c = $f716e3e58d6e8629$var$Bj(a, b, d.children, c);\n b.memoizedState = null;\n return c;\n }\n if (f) return d = $f716e3e58d6e8629$var$Aj(a, b, d.children, d.fallback, c), f = b.child, e = a.child.memoizedState, f.memoizedState = null === e ? $f716e3e58d6e8629$var$tj(c) : $f716e3e58d6e8629$var$uj(e, c), f.childLanes = a.childLanes & ~c, b.memoizedState = $f716e3e58d6e8629$var$sj, d;\n c = $f716e3e58d6e8629$var$Bj(a, b, d.children, c);\n b.memoizedState = null;\n return c;\n}\nfunction $f716e3e58d6e8629$var$xj(a, b) {\n b = $f716e3e58d6e8629$var$wj({\n mode: \"visible\",\n children: b\n }, a.mode, 0, null);\n b.return = a;\n return a.child = b;\n}\nfunction $f716e3e58d6e8629$var$Bj(a, b, c, d) {\n var e = a.child;\n a = e.sibling;\n c = $f716e3e58d6e8629$var$th(e, {\n mode: \"visible\",\n children: c\n });\n 0 === (b.mode & 1) && (c.lanes = d);\n c.return = b;\n c.sibling = null;\n null !== a && (d = b.deletions, null === d ? (b.deletions = [\n a\n ], b.flags |= 16) : d.push(a));\n return b.child = c;\n}\nfunction $f716e3e58d6e8629$var$Aj(a, b, c, d, e) {\n var f = b.mode;\n a = a.child;\n var g = a.sibling, h = {\n mode: \"hidden\",\n children: c\n };\n 0 === (f & 1) && b.child !== a ? (c = b.child, c.childLanes = 0, c.pendingProps = h, b.deletions = null) : (c = $f716e3e58d6e8629$var$th(a, h), c.subtreeFlags = a.subtreeFlags & 14680064);\n null !== g ? d = $f716e3e58d6e8629$var$th(g, d) : (d = $f716e3e58d6e8629$var$xh(d, f, e, null), d.flags |= 2);\n d.return = b;\n c.return = b;\n c.sibling = d;\n b.child = c;\n return d;\n}\nfunction $f716e3e58d6e8629$var$yj(a, b, c, d) {\n null !== d && $f716e3e58d6e8629$var$oh(d);\n $f716e3e58d6e8629$var$yh(b, a.child, null, c);\n a = $f716e3e58d6e8629$var$xj(b, b.pendingProps.children);\n a.flags |= 2;\n b.memoizedState = null;\n return a;\n}\nfunction $f716e3e58d6e8629$var$Cj(a, b, c) {\n a.lanes |= b;\n var d = a.alternate;\n null !== d && (d.lanes |= b);\n $f716e3e58d6e8629$var$rg(a.return, b, c);\n}\nfunction $f716e3e58d6e8629$var$Dj(a, b, c, d, e) {\n var f = a.memoizedState;\n null === f ? a.memoizedState = {\n isBackwards: b,\n rendering: null,\n renderingStartTime: 0,\n last: d,\n tail: c,\n tailMode: e\n } : (f.isBackwards = b, f.rendering = null, f.renderingStartTime = 0, f.last = d, f.tail = c, f.tailMode = e);\n}\nfunction $f716e3e58d6e8629$var$Ej(a, b, c) {\n var d = b.pendingProps, e = d.revealOrder, f = d.tail;\n $f716e3e58d6e8629$var$ej(a, b, d.children, c);\n d = $f716e3e58d6e8629$var$K.current;\n if (0 !== (d & 2)) d = d & 1 | 2, b.flags |= 128;\n else {\n if (null !== a && 0 !== (a.flags & 128)) a: for(a = b.child; null !== a;){\n if (13 === a.tag) null !== a.memoizedState && $f716e3e58d6e8629$var$Cj(a, c, b);\n else if (19 === a.tag) $f716e3e58d6e8629$var$Cj(a, c, b);\n else if (null !== a.child) {\n a.child.return = a;\n a = a.child;\n continue;\n }\n if (a === b) break a;\n for(; null === a.sibling;){\n if (null === a.return || a.return === b) break a;\n a = a.return;\n }\n a.sibling.return = a.return;\n a = a.sibling;\n }\n d &= 1;\n }\n $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$K, d);\n if (0 === (b.mode & 1)) b.memoizedState = null;\n else switch(e){\n case \"forwards\":\n c = b.child;\n for(e = null; null !== c;)a = c.alternate, null !== a && null === $f716e3e58d6e8629$var$Jh(a) && (e = c), c = c.sibling;\n c = e;\n null === c ? (e = b.child, b.child = null) : (e = c.sibling, c.sibling = null);\n $f716e3e58d6e8629$var$Dj(b, !1, e, c, f);\n break;\n case \"backwards\":\n c = null;\n e = b.child;\n for(b.child = null; null !== e;){\n a = e.alternate;\n if (null !== a && null === $f716e3e58d6e8629$var$Jh(a)) {\n b.child = e;\n break;\n }\n a = e.sibling;\n e.sibling = c;\n c = e;\n e = a;\n }\n $f716e3e58d6e8629$var$Dj(b, !0, c, null, f);\n break;\n case \"together\":\n $f716e3e58d6e8629$var$Dj(b, !1, null, null, void 0);\n break;\n default:\n b.memoizedState = null;\n }\n return b.child;\n}\nfunction $f716e3e58d6e8629$var$gj(a, b, c) {\n null !== a && (b.dependencies = a.dependencies);\n $f716e3e58d6e8629$var$Fg |= b.lanes;\n if (0 === (c & b.childLanes)) return null;\n if (null !== a && b.child !== a.child) throw Error($f716e3e58d6e8629$var$p(153));\n if (null !== b.child) {\n a = b.child;\n c = $f716e3e58d6e8629$var$th(a, a.pendingProps);\n b.child = c;\n for(c.return = b; null !== a.sibling;)a = a.sibling, c = c.sibling = $f716e3e58d6e8629$var$th(a, a.pendingProps), c.return = b;\n c.sibling = null;\n }\n return b.child;\n}\nfunction $f716e3e58d6e8629$var$Fj(a, b, c) {\n switch(b.tag){\n case 3:\n $f716e3e58d6e8629$var$qj(b);\n $f716e3e58d6e8629$var$nh();\n break;\n case 5:\n $f716e3e58d6e8629$var$Hh(b);\n break;\n case 1:\n $f716e3e58d6e8629$var$Yf(b.type) && $f716e3e58d6e8629$var$bg(b);\n break;\n case 4:\n $f716e3e58d6e8629$var$Fh(b, b.stateNode.containerInfo);\n break;\n case 10:\n var d = b.type._context, e = b.memoizedProps.value;\n $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$lg, d._currentValue);\n d._currentValue = e;\n break;\n case 13:\n d = b.memoizedState;\n if (null !== d) {\n if (null !== d.dehydrated) return $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$K, $f716e3e58d6e8629$var$K.current & 1), b.flags |= 128, null;\n if (0 !== (c & b.child.childLanes)) return $f716e3e58d6e8629$var$vj(a, b, c);\n $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$K, $f716e3e58d6e8629$var$K.current & 1);\n a = $f716e3e58d6e8629$var$gj(a, b, c);\n return null !== a ? a.sibling : null;\n }\n $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$K, $f716e3e58d6e8629$var$K.current & 1);\n break;\n case 19:\n d = 0 !== (c & b.childLanes);\n if (0 !== (a.flags & 128)) {\n if (d) return $f716e3e58d6e8629$var$Ej(a, b, c);\n b.flags |= 128;\n }\n e = b.memoizedState;\n null !== e && (e.rendering = null, e.tail = null, e.lastEffect = null);\n $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$K, $f716e3e58d6e8629$var$K.current);\n if (d) break;\n else return null;\n case 22:\n case 23:\n return b.lanes = 0, $f716e3e58d6e8629$var$lj(a, b, c);\n }\n return $f716e3e58d6e8629$var$gj(a, b, c);\n}\nfunction $f716e3e58d6e8629$var$Gj(a, b) {\n $f716e3e58d6e8629$var$ch(b);\n switch(b.tag){\n case 1:\n return $f716e3e58d6e8629$var$Yf(b.type) && $f716e3e58d6e8629$var$Zf(), a = b.flags, a & 65536 ? (b.flags = a & -65537 | 128, b) : null;\n case 3:\n return $f716e3e58d6e8629$var$Gh(), $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$Vf), $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$H), $f716e3e58d6e8629$var$Lh(), a = b.flags, 0 !== (a & 65536) && 0 === (a & 128) ? (b.flags = a & -65537 | 128, b) : null;\n case 5:\n return $f716e3e58d6e8629$var$Ih(b), null;\n case 13:\n $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$K);\n a = b.memoizedState;\n if (null !== a && null !== a.dehydrated) {\n if (null === b.alternate) throw Error($f716e3e58d6e8629$var$p(340));\n $f716e3e58d6e8629$var$nh();\n }\n a = b.flags;\n return a & 65536 ? (b.flags = a & -65537 | 128, b) : null;\n case 19:\n return $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$K), null;\n case 4:\n return $f716e3e58d6e8629$var$Gh(), null;\n case 10:\n return $f716e3e58d6e8629$var$qg(b.type._context), null;\n case 22:\n case 23:\n return $f716e3e58d6e8629$var$bj(), null;\n case 24:\n return null;\n default:\n return null;\n }\n}\nvar $f716e3e58d6e8629$var$Hj = !1, $f716e3e58d6e8629$var$S = !1, $f716e3e58d6e8629$var$Ij = \"function\" === typeof WeakSet ? WeakSet : Set, $f716e3e58d6e8629$var$T = null;\nfunction $f716e3e58d6e8629$var$Jj(a, b) {\n var c = a.ref;\n if (null !== c) {\n if (\"function\" === typeof c) try {\n c(null);\n } catch (d) {\n $f716e3e58d6e8629$var$U(a, b, d);\n }\n else c.current = null;\n }\n}\nfunction $f716e3e58d6e8629$var$Kj(a, b, c) {\n try {\n c();\n } catch (d) {\n $f716e3e58d6e8629$var$U(a, b, d);\n }\n}\nvar $f716e3e58d6e8629$var$Lj = !1;\nfunction $f716e3e58d6e8629$var$Mj(a, b) {\n $f716e3e58d6e8629$var$Bf = $f716e3e58d6e8629$var$cd;\n a = $f716e3e58d6e8629$var$Le();\n if ($f716e3e58d6e8629$var$Me(a)) {\n if (\"selectionStart\" in a) var c = {\n start: a.selectionStart,\n end: a.selectionEnd\n };\n else a: {\n c = (c = a.ownerDocument) && c.defaultView || window;\n var d = c.getSelection && c.getSelection();\n if (d && 0 !== d.rangeCount) {\n c = d.anchorNode;\n var e = d.anchorOffset, f = d.focusNode;\n d = d.focusOffset;\n try {\n c.nodeType, f.nodeType;\n } catch (Z) {\n c = null;\n break a;\n }\n var g = 0, h = -1, k = -1, l = 0, n = 0, u = a, q = null;\n b: for(;;){\n for(var y;;){\n u !== c || 0 !== e && 3 !== u.nodeType || (h = g + e);\n u !== f || 0 !== d && 3 !== u.nodeType || (k = g + d);\n 3 === u.nodeType && (g += u.nodeValue.length);\n if (null === (y = u.firstChild)) break;\n q = u;\n u = y;\n }\n for(;;){\n if (u === a) break b;\n q === c && ++l === e && (h = g);\n q === f && ++n === d && (k = g);\n if (null !== (y = u.nextSibling)) break;\n u = q;\n q = u.parentNode;\n }\n u = y;\n }\n c = -1 === h || -1 === k ? null : {\n start: h,\n end: k\n };\n } else c = null;\n }\n c = c || {\n start: 0,\n end: 0\n };\n } else c = null;\n $f716e3e58d6e8629$var$Cf = {\n focusedElem: a,\n selectionRange: c\n };\n $f716e3e58d6e8629$var$cd = !1;\n for($f716e3e58d6e8629$var$T = b; null !== $f716e3e58d6e8629$var$T;)if (b = $f716e3e58d6e8629$var$T, a = b.child, 0 !== (b.subtreeFlags & 1028) && null !== a) a.return = b, $f716e3e58d6e8629$var$T = a;\n else for(; null !== $f716e3e58d6e8629$var$T;){\n b = $f716e3e58d6e8629$var$T;\n try {\n var m = b.alternate;\n if (0 !== (b.flags & 1024)) switch(b.tag){\n case 0:\n case 11:\n case 15:\n break;\n case 1:\n if (null !== m) {\n var w = m.memoizedProps, J = m.memoizedState, v = b.stateNode, x = v.getSnapshotBeforeUpdate(b.elementType === b.type ? w : $f716e3e58d6e8629$var$kg(b.type, w), J);\n v.__reactInternalSnapshotBeforeUpdate = x;\n }\n break;\n case 3:\n var r = b.stateNode.containerInfo;\n if (1 === r.nodeType) r.textContent = \"\";\n else if (9 === r.nodeType) {\n var F = r.body;\n null != F && (F.textContent = \"\");\n }\n break;\n case 5:\n case 6:\n case 4:\n case 17:\n break;\n default:\n throw Error($f716e3e58d6e8629$var$p(163));\n }\n } catch (Z) {\n $f716e3e58d6e8629$var$U(b, b.return, Z);\n }\n a = b.sibling;\n if (null !== a) {\n a.return = b.return;\n $f716e3e58d6e8629$var$T = a;\n break;\n }\n $f716e3e58d6e8629$var$T = b.return;\n }\n m = $f716e3e58d6e8629$var$Lj;\n $f716e3e58d6e8629$var$Lj = !1;\n return m;\n}\nfunction $f716e3e58d6e8629$var$Nj(a, b, c) {\n var d = b.updateQueue;\n d = null !== d ? d.lastEffect : null;\n if (null !== d) {\n var e = d = d.next;\n do {\n if ((e.tag & a) === a) {\n var f = e.destroy;\n e.destroy = void 0;\n void 0 !== f && $f716e3e58d6e8629$var$Kj(b, c, f);\n }\n e = e.next;\n }while (e !== d);\n }\n}\nfunction $f716e3e58d6e8629$var$Oj(a, b) {\n b = b.updateQueue;\n b = null !== b ? b.lastEffect : null;\n if (null !== b) {\n var c = b = b.next;\n do {\n if ((c.tag & a) === a) {\n var d = c.create;\n c.destroy = d();\n }\n c = c.next;\n }while (c !== b);\n }\n}\nfunction $f716e3e58d6e8629$var$Pj(a) {\n var b = a.ref;\n if (null !== b) {\n var c = a.stateNode;\n switch(a.tag){\n case 5:\n a = c;\n break;\n default:\n a = c;\n }\n \"function\" === typeof b ? b(a) : b.current = a;\n }\n}\nfunction $f716e3e58d6e8629$var$Qj(a) {\n var b = a.alternate;\n null !== b && (a.alternate = null, $f716e3e58d6e8629$var$Qj(b));\n a.child = null;\n a.deletions = null;\n a.sibling = null;\n 5 === a.tag && (b = a.stateNode, null !== b && (delete b[$f716e3e58d6e8629$var$Nf], delete b[$f716e3e58d6e8629$var$Of], delete b[$f716e3e58d6e8629$var$nf], delete b[$f716e3e58d6e8629$var$Pf], delete b[$f716e3e58d6e8629$var$Qf]));\n a.stateNode = null;\n a.return = null;\n a.dependencies = null;\n a.memoizedProps = null;\n a.memoizedState = null;\n a.pendingProps = null;\n a.stateNode = null;\n a.updateQueue = null;\n}\nfunction $f716e3e58d6e8629$var$Rj(a) {\n return 5 === a.tag || 3 === a.tag || 4 === a.tag;\n}\nfunction $f716e3e58d6e8629$var$Sj(a) {\n a: for(;;){\n for(; null === a.sibling;){\n if (null === a.return || $f716e3e58d6e8629$var$Rj(a.return)) return null;\n a = a.return;\n }\n a.sibling.return = a.return;\n for(a = a.sibling; 5 !== a.tag && 6 !== a.tag && 18 !== a.tag;){\n if (a.flags & 2) continue a;\n if (null === a.child || 4 === a.tag) continue a;\n else a.child.return = a, a = a.child;\n }\n if (!(a.flags & 2)) return a.stateNode;\n }\n}\nfunction $f716e3e58d6e8629$var$Tj(a, b, c) {\n var d = a.tag;\n if (5 === d || 6 === d) a = a.stateNode, b ? 8 === c.nodeType ? c.parentNode.insertBefore(a, b) : c.insertBefore(a, b) : (8 === c.nodeType ? (b = c.parentNode, b.insertBefore(a, c)) : (b = c, b.appendChild(a)), c = c._reactRootContainer, null !== c && void 0 !== c || null !== b.onclick || (b.onclick = $f716e3e58d6e8629$var$Af));\n else if (4 !== d && (a = a.child, null !== a)) for($f716e3e58d6e8629$var$Tj(a, b, c), a = a.sibling; null !== a;)$f716e3e58d6e8629$var$Tj(a, b, c), a = a.sibling;\n}\nfunction $f716e3e58d6e8629$var$Uj(a, b, c) {\n var d = a.tag;\n if (5 === d || 6 === d) a = a.stateNode, b ? c.insertBefore(a, b) : c.appendChild(a);\n else if (4 !== d && (a = a.child, null !== a)) for($f716e3e58d6e8629$var$Uj(a, b, c), a = a.sibling; null !== a;)$f716e3e58d6e8629$var$Uj(a, b, c), a = a.sibling;\n}\nvar $f716e3e58d6e8629$var$V = null, $f716e3e58d6e8629$var$Vj = !1;\nfunction $f716e3e58d6e8629$var$Wj(a, b, c) {\n for(c = c.child; null !== c;)$f716e3e58d6e8629$var$Xj(a, b, c), c = c.sibling;\n}\nfunction $f716e3e58d6e8629$var$Xj(a, b, c) {\n if ($f716e3e58d6e8629$var$kc && \"function\" === typeof $f716e3e58d6e8629$var$kc.onCommitFiberUnmount) try {\n $f716e3e58d6e8629$var$kc.onCommitFiberUnmount($f716e3e58d6e8629$var$jc, c);\n } catch (h) {}\n switch(c.tag){\n case 5:\n $f716e3e58d6e8629$var$S || $f716e3e58d6e8629$var$Jj(c, b);\n case 6:\n var d = $f716e3e58d6e8629$var$V, e = $f716e3e58d6e8629$var$Vj;\n $f716e3e58d6e8629$var$V = null;\n $f716e3e58d6e8629$var$Wj(a, b, c);\n $f716e3e58d6e8629$var$V = d;\n $f716e3e58d6e8629$var$Vj = e;\n null !== $f716e3e58d6e8629$var$V && ($f716e3e58d6e8629$var$Vj ? (a = $f716e3e58d6e8629$var$V, c = c.stateNode, 8 === a.nodeType ? a.parentNode.removeChild(c) : a.removeChild(c)) : $f716e3e58d6e8629$var$V.removeChild(c.stateNode));\n break;\n case 18:\n null !== $f716e3e58d6e8629$var$V && ($f716e3e58d6e8629$var$Vj ? (a = $f716e3e58d6e8629$var$V, c = c.stateNode, 8 === a.nodeType ? $f716e3e58d6e8629$var$Jf(a.parentNode, c) : 1 === a.nodeType && $f716e3e58d6e8629$var$Jf(a, c), $f716e3e58d6e8629$var$ad(a)) : $f716e3e58d6e8629$var$Jf($f716e3e58d6e8629$var$V, c.stateNode));\n break;\n case 4:\n d = $f716e3e58d6e8629$var$V;\n e = $f716e3e58d6e8629$var$Vj;\n $f716e3e58d6e8629$var$V = c.stateNode.containerInfo;\n $f716e3e58d6e8629$var$Vj = !0;\n $f716e3e58d6e8629$var$Wj(a, b, c);\n $f716e3e58d6e8629$var$V = d;\n $f716e3e58d6e8629$var$Vj = e;\n break;\n case 0:\n case 11:\n case 14:\n case 15:\n if (!$f716e3e58d6e8629$var$S && (d = c.updateQueue, null !== d && (d = d.lastEffect, null !== d))) {\n e = d = d.next;\n do {\n var f = e, g = f.destroy;\n f = f.tag;\n void 0 !== g && (0 !== (f & 2) ? $f716e3e58d6e8629$var$Kj(c, b, g) : 0 !== (f & 4) && $f716e3e58d6e8629$var$Kj(c, b, g));\n e = e.next;\n }while (e !== d);\n }\n $f716e3e58d6e8629$var$Wj(a, b, c);\n break;\n case 1:\n if (!$f716e3e58d6e8629$var$S && ($f716e3e58d6e8629$var$Jj(c, b), d = c.stateNode, \"function\" === typeof d.componentWillUnmount)) try {\n d.props = c.memoizedProps, d.state = c.memoizedState, d.componentWillUnmount();\n } catch (h) {\n $f716e3e58d6e8629$var$U(c, b, h);\n }\n $f716e3e58d6e8629$var$Wj(a, b, c);\n break;\n case 21:\n $f716e3e58d6e8629$var$Wj(a, b, c);\n break;\n case 22:\n c.mode & 1 ? ($f716e3e58d6e8629$var$S = (d = $f716e3e58d6e8629$var$S) || null !== c.memoizedState, $f716e3e58d6e8629$var$Wj(a, b, c), $f716e3e58d6e8629$var$S = d) : $f716e3e58d6e8629$var$Wj(a, b, c);\n break;\n default:\n $f716e3e58d6e8629$var$Wj(a, b, c);\n }\n}\nfunction $f716e3e58d6e8629$var$Yj(a) {\n var b = a.updateQueue;\n if (null !== b) {\n a.updateQueue = null;\n var c = a.stateNode;\n null === c && (c = a.stateNode = new $f716e3e58d6e8629$var$Ij);\n b.forEach(function(b) {\n var d = $f716e3e58d6e8629$var$Zj.bind(null, a, b);\n c.has(b) || (c.add(b), b.then(d, d));\n });\n }\n}\nfunction $f716e3e58d6e8629$var$ak(a, b) {\n var c = b.deletions;\n if (null !== c) for(var d = 0; d < c.length; d++){\n var e = c[d];\n try {\n var f = a, g = b, h = g;\n a: for(; null !== h;){\n switch(h.tag){\n case 5:\n $f716e3e58d6e8629$var$V = h.stateNode;\n $f716e3e58d6e8629$var$Vj = !1;\n break a;\n case 3:\n $f716e3e58d6e8629$var$V = h.stateNode.containerInfo;\n $f716e3e58d6e8629$var$Vj = !0;\n break a;\n case 4:\n $f716e3e58d6e8629$var$V = h.stateNode.containerInfo;\n $f716e3e58d6e8629$var$Vj = !0;\n break a;\n }\n h = h.return;\n }\n if (null === $f716e3e58d6e8629$var$V) throw Error($f716e3e58d6e8629$var$p(160));\n $f716e3e58d6e8629$var$Xj(f, g, e);\n $f716e3e58d6e8629$var$V = null;\n $f716e3e58d6e8629$var$Vj = !1;\n var k = e.alternate;\n null !== k && (k.return = null);\n e.return = null;\n } catch (l) {\n $f716e3e58d6e8629$var$U(e, b, l);\n }\n }\n if (b.subtreeFlags & 12854) for(b = b.child; null !== b;)$f716e3e58d6e8629$var$bk(b, a), b = b.sibling;\n}\nfunction $f716e3e58d6e8629$var$bk(a, b) {\n var c = a.alternate, d = a.flags;\n switch(a.tag){\n case 0:\n case 11:\n case 14:\n case 15:\n $f716e3e58d6e8629$var$ak(b, a);\n $f716e3e58d6e8629$var$ck(a);\n if (d & 4) {\n try {\n $f716e3e58d6e8629$var$Nj(3, a, a.return), $f716e3e58d6e8629$var$Oj(3, a);\n } catch (m) {\n $f716e3e58d6e8629$var$U(a, a.return, m);\n }\n try {\n $f716e3e58d6e8629$var$Nj(5, a, a.return);\n } catch (m) {\n $f716e3e58d6e8629$var$U(a, a.return, m);\n }\n }\n break;\n case 1:\n $f716e3e58d6e8629$var$ak(b, a);\n $f716e3e58d6e8629$var$ck(a);\n d & 512 && null !== c && $f716e3e58d6e8629$var$Jj(c, c.return);\n break;\n case 5:\n $f716e3e58d6e8629$var$ak(b, a);\n $f716e3e58d6e8629$var$ck(a);\n d & 512 && null !== c && $f716e3e58d6e8629$var$Jj(c, c.return);\n if (a.flags & 32) {\n var e = a.stateNode;\n try {\n $f716e3e58d6e8629$var$nb(e, \"\");\n } catch (m) {\n $f716e3e58d6e8629$var$U(a, a.return, m);\n }\n }\n if (d & 4 && (e = a.stateNode, null != e)) {\n var f = a.memoizedProps, g = null !== c ? c.memoizedProps : f, h = a.type, k = a.updateQueue;\n a.updateQueue = null;\n if (null !== k) try {\n \"input\" === h && \"radio\" === f.type && null != f.name && $f716e3e58d6e8629$var$Za(e, f);\n $f716e3e58d6e8629$var$ub(h, g);\n var l = $f716e3e58d6e8629$var$ub(h, f);\n for(g = 0; g < k.length; g += 2){\n var n = k[g], u = k[g + 1];\n \"style\" === n ? $f716e3e58d6e8629$var$rb(e, u) : \"dangerouslySetInnerHTML\" === n ? $f716e3e58d6e8629$var$mb(e, u) : \"children\" === n ? $f716e3e58d6e8629$var$nb(e, u) : $f716e3e58d6e8629$var$sa(e, n, u, l);\n }\n switch(h){\n case \"input\":\n $f716e3e58d6e8629$var$$a(e, f);\n break;\n case \"textarea\":\n $f716e3e58d6e8629$var$hb(e, f);\n break;\n case \"select\":\n var q = e._wrapperState.wasMultiple;\n e._wrapperState.wasMultiple = !!f.multiple;\n var y = f.value;\n null != y ? $f716e3e58d6e8629$var$eb(e, !!f.multiple, y, !1) : q !== !!f.multiple && (null != f.defaultValue ? $f716e3e58d6e8629$var$eb(e, !!f.multiple, f.defaultValue, !0) : $f716e3e58d6e8629$var$eb(e, !!f.multiple, f.multiple ? [] : \"\", !1));\n }\n e[$f716e3e58d6e8629$var$Of] = f;\n } catch (m) {\n $f716e3e58d6e8629$var$U(a, a.return, m);\n }\n }\n break;\n case 6:\n $f716e3e58d6e8629$var$ak(b, a);\n $f716e3e58d6e8629$var$ck(a);\n if (d & 4) {\n if (null === a.stateNode) throw Error($f716e3e58d6e8629$var$p(162));\n l = a.stateNode;\n n = a.memoizedProps;\n try {\n l.nodeValue = n;\n } catch (m) {\n $f716e3e58d6e8629$var$U(a, a.return, m);\n }\n }\n break;\n case 3:\n $f716e3e58d6e8629$var$ak(b, a);\n $f716e3e58d6e8629$var$ck(a);\n if (d & 4 && null !== c && c.memoizedState.isDehydrated) try {\n $f716e3e58d6e8629$var$ad(b.containerInfo);\n } catch (m) {\n $f716e3e58d6e8629$var$U(a, a.return, m);\n }\n break;\n case 4:\n $f716e3e58d6e8629$var$ak(b, a);\n $f716e3e58d6e8629$var$ck(a);\n break;\n case 13:\n $f716e3e58d6e8629$var$ak(b, a);\n $f716e3e58d6e8629$var$ck(a);\n l = a.child;\n l.flags & 8192 && null !== l.memoizedState && (null === l.alternate || null === l.alternate.memoizedState) && ($f716e3e58d6e8629$var$dk = $f716e3e58d6e8629$var$B());\n d & 4 && $f716e3e58d6e8629$var$Yj(a);\n break;\n case 22:\n l = null !== c && null !== c.memoizedState;\n a.mode & 1 ? ($f716e3e58d6e8629$var$S = (n = $f716e3e58d6e8629$var$S) || l, $f716e3e58d6e8629$var$ak(b, a), $f716e3e58d6e8629$var$S = n) : $f716e3e58d6e8629$var$ak(b, a);\n $f716e3e58d6e8629$var$ck(a);\n if (d & 8192) {\n n = null !== a.memoizedState;\n a: for(u = null, q = a;;){\n if (5 === q.tag) {\n if (null === u) {\n u = q;\n try {\n e = q.stateNode, n ? (f = e.style, \"function\" === typeof f.setProperty ? f.setProperty(\"display\", \"none\", \"important\") : f.display = \"none\") : (h = q.stateNode, k = q.memoizedProps.style, g = void 0 !== k && null !== k && k.hasOwnProperty(\"display\") ? k.display : null, h.style.display = $f716e3e58d6e8629$var$qb(\"display\", g));\n } catch (m) {\n $f716e3e58d6e8629$var$U(a, a.return, m);\n }\n }\n } else if (6 === q.tag) {\n if (null === u) try {\n q.stateNode.nodeValue = n ? \"\" : q.memoizedProps;\n } catch (m) {\n $f716e3e58d6e8629$var$U(a, a.return, m);\n }\n } else if ((22 !== q.tag && 23 !== q.tag || null === q.memoizedState || q === a) && null !== q.child) {\n q.child.return = q;\n q = q.child;\n continue;\n }\n if (q === a) break a;\n for(; null === q.sibling;){\n if (null === q.return || q.return === a) break a;\n u === q && (u = null);\n q = q.return;\n }\n u === q && (u = null);\n q.sibling.return = q.return;\n q = q.sibling;\n }\n if (n && !l && 0 !== (a.mode & 1)) for($f716e3e58d6e8629$var$T = a, a = a.child; null !== a;){\n for(l = $f716e3e58d6e8629$var$T = a; null !== $f716e3e58d6e8629$var$T;){\n n = $f716e3e58d6e8629$var$T;\n u = n.child;\n switch(n.tag){\n case 0:\n case 11:\n case 14:\n case 15:\n $f716e3e58d6e8629$var$Nj(4, n, n.return);\n break;\n case 1:\n $f716e3e58d6e8629$var$Jj(n, n.return);\n f = n.stateNode;\n if (\"function\" === typeof f.componentWillUnmount) {\n q = n;\n y = n.return;\n try {\n e = q, f.props = e.memoizedProps, f.state = e.memoizedState, f.componentWillUnmount();\n } catch (m) {\n $f716e3e58d6e8629$var$U(q, y, m);\n }\n }\n break;\n case 5:\n $f716e3e58d6e8629$var$Jj(n, n.return);\n break;\n case 22:\n if (null !== n.memoizedState) {\n $f716e3e58d6e8629$var$ek(l);\n continue;\n }\n }\n null !== u ? (u.return = n, $f716e3e58d6e8629$var$T = u) : $f716e3e58d6e8629$var$ek(l);\n }\n a = a.sibling;\n }\n }\n break;\n case 19:\n $f716e3e58d6e8629$var$ak(b, a);\n $f716e3e58d6e8629$var$ck(a);\n d & 4 && $f716e3e58d6e8629$var$Yj(a);\n break;\n case 21:\n break;\n default:\n $f716e3e58d6e8629$var$ak(b, a), $f716e3e58d6e8629$var$ck(a);\n }\n}\nfunction $f716e3e58d6e8629$var$ck(a) {\n var b = a.flags;\n if (b & 2) {\n try {\n a: {\n for(var c = a.return; null !== c;){\n if ($f716e3e58d6e8629$var$Rj(c)) {\n var d = c;\n break a;\n }\n c = c.return;\n }\n throw Error($f716e3e58d6e8629$var$p(160));\n }\n switch(d.tag){\n case 5:\n var e = d.stateNode;\n d.flags & 32 && ($f716e3e58d6e8629$var$nb(e, \"\"), d.flags &= -33);\n var f = $f716e3e58d6e8629$var$Sj(a);\n $f716e3e58d6e8629$var$Uj(a, f, e);\n break;\n case 3:\n case 4:\n var g = d.stateNode.containerInfo, h = $f716e3e58d6e8629$var$Sj(a);\n $f716e3e58d6e8629$var$Tj(a, h, g);\n break;\n default:\n throw Error($f716e3e58d6e8629$var$p(161));\n }\n } catch (k) {\n $f716e3e58d6e8629$var$U(a, a.return, k);\n }\n a.flags &= -3;\n }\n b & 4096 && (a.flags &= -4097);\n}\nfunction $f716e3e58d6e8629$var$fk(a, b, c) {\n $f716e3e58d6e8629$var$T = a;\n $f716e3e58d6e8629$var$gk(a, b, c);\n}\nfunction $f716e3e58d6e8629$var$gk(a, b, c) {\n for(var d = 0 !== (a.mode & 1); null !== $f716e3e58d6e8629$var$T;){\n var e = $f716e3e58d6e8629$var$T, f = e.child;\n if (22 === e.tag && d) {\n var g = null !== e.memoizedState || $f716e3e58d6e8629$var$Hj;\n if (!g) {\n var h = e.alternate, k = null !== h && null !== h.memoizedState || $f716e3e58d6e8629$var$S;\n h = $f716e3e58d6e8629$var$Hj;\n var l = $f716e3e58d6e8629$var$S;\n $f716e3e58d6e8629$var$Hj = g;\n if (($f716e3e58d6e8629$var$S = k) && !l) for($f716e3e58d6e8629$var$T = e; null !== $f716e3e58d6e8629$var$T;)g = $f716e3e58d6e8629$var$T, k = g.child, 22 === g.tag && null !== g.memoizedState ? $f716e3e58d6e8629$var$hk(e) : null !== k ? (k.return = g, $f716e3e58d6e8629$var$T = k) : $f716e3e58d6e8629$var$hk(e);\n for(; null !== f;)$f716e3e58d6e8629$var$T = f, $f716e3e58d6e8629$var$gk(f, b, c), f = f.sibling;\n $f716e3e58d6e8629$var$T = e;\n $f716e3e58d6e8629$var$Hj = h;\n $f716e3e58d6e8629$var$S = l;\n }\n $f716e3e58d6e8629$var$ik(a, b, c);\n } else 0 !== (e.subtreeFlags & 8772) && null !== f ? (f.return = e, $f716e3e58d6e8629$var$T = f) : $f716e3e58d6e8629$var$ik(a, b, c);\n }\n}\nfunction $f716e3e58d6e8629$var$ik(a) {\n for(; null !== $f716e3e58d6e8629$var$T;){\n var b = $f716e3e58d6e8629$var$T;\n if (0 !== (b.flags & 8772)) {\n var c = b.alternate;\n try {\n if (0 !== (b.flags & 8772)) switch(b.tag){\n case 0:\n case 11:\n case 15:\n $f716e3e58d6e8629$var$S || $f716e3e58d6e8629$var$Oj(5, b);\n break;\n case 1:\n var d = b.stateNode;\n if (b.flags & 4 && !$f716e3e58d6e8629$var$S) {\n if (null === c) d.componentDidMount();\n else {\n var e = b.elementType === b.type ? c.memoizedProps : $f716e3e58d6e8629$var$kg(b.type, c.memoizedProps);\n d.componentDidUpdate(e, c.memoizedState, d.__reactInternalSnapshotBeforeUpdate);\n }\n }\n var f = b.updateQueue;\n null !== f && $f716e3e58d6e8629$var$Gg(b, f, d);\n break;\n case 3:\n var g = b.updateQueue;\n if (null !== g) {\n c = null;\n if (null !== b.child) switch(b.child.tag){\n case 5:\n c = b.child.stateNode;\n break;\n case 1:\n c = b.child.stateNode;\n }\n $f716e3e58d6e8629$var$Gg(b, g, c);\n }\n break;\n case 5:\n var h = b.stateNode;\n if (null === c && b.flags & 4) {\n c = h;\n var k = b.memoizedProps;\n switch(b.type){\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n k.autoFocus && c.focus();\n break;\n case \"img\":\n k.src && (c.src = k.src);\n }\n }\n break;\n case 6:\n break;\n case 4:\n break;\n case 12:\n break;\n case 13:\n if (null === b.memoizedState) {\n var l = b.alternate;\n if (null !== l) {\n var n = l.memoizedState;\n if (null !== n) {\n var u = n.dehydrated;\n null !== u && $f716e3e58d6e8629$var$ad(u);\n }\n }\n }\n break;\n case 19:\n case 17:\n case 21:\n case 22:\n case 23:\n break;\n default:\n throw Error($f716e3e58d6e8629$var$p(163));\n }\n $f716e3e58d6e8629$var$S || b.flags & 512 && $f716e3e58d6e8629$var$Pj(b);\n } catch (q) {\n $f716e3e58d6e8629$var$U(b, b.return, q);\n }\n }\n if (b === a) {\n $f716e3e58d6e8629$var$T = null;\n break;\n }\n c = b.sibling;\n if (null !== c) {\n c.return = b.return;\n $f716e3e58d6e8629$var$T = c;\n break;\n }\n $f716e3e58d6e8629$var$T = b.return;\n }\n}\nfunction $f716e3e58d6e8629$var$ek(a) {\n for(; null !== $f716e3e58d6e8629$var$T;){\n var b = $f716e3e58d6e8629$var$T;\n if (b === a) {\n $f716e3e58d6e8629$var$T = null;\n break;\n }\n var c = b.sibling;\n if (null !== c) {\n c.return = b.return;\n $f716e3e58d6e8629$var$T = c;\n break;\n }\n $f716e3e58d6e8629$var$T = b.return;\n }\n}\nfunction $f716e3e58d6e8629$var$hk(a) {\n for(; null !== $f716e3e58d6e8629$var$T;){\n var b = $f716e3e58d6e8629$var$T;\n try {\n switch(b.tag){\n case 0:\n case 11:\n case 15:\n var c = b.return;\n try {\n $f716e3e58d6e8629$var$Oj(4, b);\n } catch (k) {\n $f716e3e58d6e8629$var$U(b, c, k);\n }\n break;\n case 1:\n var d = b.stateNode;\n if (\"function\" === typeof d.componentDidMount) {\n var e = b.return;\n try {\n d.componentDidMount();\n } catch (k) {\n $f716e3e58d6e8629$var$U(b, e, k);\n }\n }\n var f = b.return;\n try {\n $f716e3e58d6e8629$var$Pj(b);\n } catch (k) {\n $f716e3e58d6e8629$var$U(b, f, k);\n }\n break;\n case 5:\n var g = b.return;\n try {\n $f716e3e58d6e8629$var$Pj(b);\n } catch (k) {\n $f716e3e58d6e8629$var$U(b, g, k);\n }\n }\n } catch (k) {\n $f716e3e58d6e8629$var$U(b, b.return, k);\n }\n if (b === a) {\n $f716e3e58d6e8629$var$T = null;\n break;\n }\n var h = b.sibling;\n if (null !== h) {\n h.return = b.return;\n $f716e3e58d6e8629$var$T = h;\n break;\n }\n $f716e3e58d6e8629$var$T = b.return;\n }\n}\nvar $f716e3e58d6e8629$var$jk = Math.ceil, $f716e3e58d6e8629$var$kk = $f716e3e58d6e8629$var$ta.ReactCurrentDispatcher, $f716e3e58d6e8629$var$lk = $f716e3e58d6e8629$var$ta.ReactCurrentOwner, $f716e3e58d6e8629$var$mk = $f716e3e58d6e8629$var$ta.ReactCurrentBatchConfig, $f716e3e58d6e8629$var$W = 0, $f716e3e58d6e8629$var$P = null, $f716e3e58d6e8629$var$X = null, $f716e3e58d6e8629$var$Y = 0, $f716e3e58d6e8629$var$cj = 0, $f716e3e58d6e8629$var$mj = $f716e3e58d6e8629$var$Tf(0), $f716e3e58d6e8629$var$R = 0, $f716e3e58d6e8629$var$nk = null, $f716e3e58d6e8629$var$Fg = 0, $f716e3e58d6e8629$var$ok = 0, $f716e3e58d6e8629$var$pk = 0, $f716e3e58d6e8629$var$qk = null, $f716e3e58d6e8629$var$rk = null, $f716e3e58d6e8629$var$dk = 0, $f716e3e58d6e8629$var$aj = Infinity, $f716e3e58d6e8629$var$sk = null, $f716e3e58d6e8629$var$Li = !1, $f716e3e58d6e8629$var$Mi = null, $f716e3e58d6e8629$var$Oi = null, $f716e3e58d6e8629$var$tk = !1, $f716e3e58d6e8629$var$uk = null, $f716e3e58d6e8629$var$vk = 0, $f716e3e58d6e8629$var$wk = 0, $f716e3e58d6e8629$var$xk = null, $f716e3e58d6e8629$var$yk = -1, $f716e3e58d6e8629$var$zk = 0;\nfunction $f716e3e58d6e8629$var$Jg() {\n return 0 !== ($f716e3e58d6e8629$var$W & 6) ? $f716e3e58d6e8629$var$B() : -1 !== $f716e3e58d6e8629$var$yk ? $f716e3e58d6e8629$var$yk : $f716e3e58d6e8629$var$yk = $f716e3e58d6e8629$var$B();\n}\nfunction $f716e3e58d6e8629$var$Kg(a) {\n if (0 === (a.mode & 1)) return 1;\n if (0 !== ($f716e3e58d6e8629$var$W & 2) && 0 !== $f716e3e58d6e8629$var$Y) return $f716e3e58d6e8629$var$Y & -$f716e3e58d6e8629$var$Y;\n if (null !== $f716e3e58d6e8629$var$jg.transition) return 0 === $f716e3e58d6e8629$var$zk && ($f716e3e58d6e8629$var$zk = $f716e3e58d6e8629$var$xc()), $f716e3e58d6e8629$var$zk;\n a = $f716e3e58d6e8629$var$C;\n if (0 !== a) return a;\n a = window.event;\n a = void 0 === a ? 16 : $f716e3e58d6e8629$var$id(a.type);\n return a;\n}\nfunction $f716e3e58d6e8629$var$Lg(a, b, c) {\n if (50 < $f716e3e58d6e8629$var$wk) throw $f716e3e58d6e8629$var$wk = 0, $f716e3e58d6e8629$var$xk = null, Error($f716e3e58d6e8629$var$p(185));\n var d = $f716e3e58d6e8629$var$Ak(a, b);\n if (null === d) return null;\n $f716e3e58d6e8629$var$zc(d, b, c);\n if (0 === ($f716e3e58d6e8629$var$W & 2) || d !== $f716e3e58d6e8629$var$P) d === $f716e3e58d6e8629$var$P && (0 === ($f716e3e58d6e8629$var$W & 2) && ($f716e3e58d6e8629$var$ok |= b), 4 === $f716e3e58d6e8629$var$R && $f716e3e58d6e8629$var$Bk(d, $f716e3e58d6e8629$var$Y)), $f716e3e58d6e8629$var$Ck(d, c), 1 === b && 0 === $f716e3e58d6e8629$var$W && 0 === (a.mode & 1) && ($f716e3e58d6e8629$var$aj = $f716e3e58d6e8629$var$B() + 500, $f716e3e58d6e8629$var$eg && $f716e3e58d6e8629$var$ig());\n return d;\n}\nfunction $f716e3e58d6e8629$var$Ak(a, b) {\n a.lanes |= b;\n var c = a.alternate;\n null !== c && (c.lanes |= b);\n c = a;\n for(a = a.return; null !== a;)a.childLanes |= b, c = a.alternate, null !== c && (c.childLanes |= b), c = a, a = a.return;\n return 3 === c.tag ? c.stateNode : null;\n}\nfunction $f716e3e58d6e8629$var$Bg(a) {\n return (null !== $f716e3e58d6e8629$var$P || null !== $f716e3e58d6e8629$var$vg) && 0 !== (a.mode & 1) && 0 === ($f716e3e58d6e8629$var$W & 2);\n}\nfunction $f716e3e58d6e8629$var$Ck(a, b) {\n var c = a.callbackNode;\n $f716e3e58d6e8629$var$vc(a, b);\n var d = $f716e3e58d6e8629$var$tc(a, a === $f716e3e58d6e8629$var$P ? $f716e3e58d6e8629$var$Y : 0);\n if (0 === d) null !== c && $f716e3e58d6e8629$var$ac(c), a.callbackNode = null, a.callbackPriority = 0;\n else if (b = d & -d, a.callbackPriority !== b) {\n null != c && $f716e3e58d6e8629$var$ac(c);\n if (1 === b) 0 === a.tag ? $f716e3e58d6e8629$var$hg($f716e3e58d6e8629$var$Dk.bind(null, a)) : $f716e3e58d6e8629$var$gg($f716e3e58d6e8629$var$Dk.bind(null, a)), $f716e3e58d6e8629$var$If(function() {\n 0 === $f716e3e58d6e8629$var$W && $f716e3e58d6e8629$var$ig();\n }), c = null;\n else {\n switch($f716e3e58d6e8629$var$Cc(d)){\n case 1:\n c = $f716e3e58d6e8629$var$ec;\n break;\n case 4:\n c = $f716e3e58d6e8629$var$fc;\n break;\n case 16:\n c = $f716e3e58d6e8629$var$gc;\n break;\n case 536870912:\n c = $f716e3e58d6e8629$var$ic;\n break;\n default:\n c = $f716e3e58d6e8629$var$gc;\n }\n c = $f716e3e58d6e8629$var$Ek(c, $f716e3e58d6e8629$var$Fk.bind(null, a));\n }\n a.callbackPriority = b;\n a.callbackNode = c;\n }\n}\nfunction $f716e3e58d6e8629$var$Fk(a, b) {\n $f716e3e58d6e8629$var$yk = -1;\n $f716e3e58d6e8629$var$zk = 0;\n if (0 !== ($f716e3e58d6e8629$var$W & 6)) throw Error($f716e3e58d6e8629$var$p(327));\n var c = a.callbackNode;\n if ($f716e3e58d6e8629$var$Gk() && a.callbackNode !== c) return null;\n var d = $f716e3e58d6e8629$var$tc(a, a === $f716e3e58d6e8629$var$P ? $f716e3e58d6e8629$var$Y : 0);\n if (0 === d) return null;\n if (0 !== (d & 30) || 0 !== (d & a.expiredLanes) || b) b = $f716e3e58d6e8629$var$Hk(a, d);\n else {\n b = d;\n var e = $f716e3e58d6e8629$var$W;\n $f716e3e58d6e8629$var$W |= 2;\n var f = $f716e3e58d6e8629$var$Ik();\n if ($f716e3e58d6e8629$var$P !== a || $f716e3e58d6e8629$var$Y !== b) $f716e3e58d6e8629$var$sk = null, $f716e3e58d6e8629$var$aj = $f716e3e58d6e8629$var$B() + 500, $f716e3e58d6e8629$var$Jk(a, b);\n for(;;)try {\n $f716e3e58d6e8629$var$Kk();\n break;\n } catch (h) {\n $f716e3e58d6e8629$var$Lk(a, h);\n }\n $f716e3e58d6e8629$var$pg();\n $f716e3e58d6e8629$var$kk.current = f;\n $f716e3e58d6e8629$var$W = e;\n null !== $f716e3e58d6e8629$var$X ? b = 0 : ($f716e3e58d6e8629$var$P = null, $f716e3e58d6e8629$var$Y = 0, b = $f716e3e58d6e8629$var$R);\n }\n if (0 !== b) {\n 2 === b && (e = $f716e3e58d6e8629$var$wc(a), 0 !== e && (d = e, b = $f716e3e58d6e8629$var$Mk(a, e)));\n if (1 === b) throw c = $f716e3e58d6e8629$var$nk, $f716e3e58d6e8629$var$Jk(a, 0), $f716e3e58d6e8629$var$Bk(a, d), $f716e3e58d6e8629$var$Ck(a, $f716e3e58d6e8629$var$B()), c;\n if (6 === b) $f716e3e58d6e8629$var$Bk(a, d);\n else {\n e = a.current.alternate;\n if (0 === (d & 30) && !$f716e3e58d6e8629$var$Nk(e) && (b = $f716e3e58d6e8629$var$Hk(a, d), 2 === b && (f = $f716e3e58d6e8629$var$wc(a), 0 !== f && (d = f, b = $f716e3e58d6e8629$var$Mk(a, f))), 1 === b)) throw c = $f716e3e58d6e8629$var$nk, $f716e3e58d6e8629$var$Jk(a, 0), $f716e3e58d6e8629$var$Bk(a, d), $f716e3e58d6e8629$var$Ck(a, $f716e3e58d6e8629$var$B()), c;\n a.finishedWork = e;\n a.finishedLanes = d;\n switch(b){\n case 0:\n case 1:\n throw Error($f716e3e58d6e8629$var$p(345));\n case 2:\n $f716e3e58d6e8629$var$Ok(a, $f716e3e58d6e8629$var$rk, $f716e3e58d6e8629$var$sk);\n break;\n case 3:\n $f716e3e58d6e8629$var$Bk(a, d);\n if ((d & 130023424) === d && (b = $f716e3e58d6e8629$var$dk + 500 - $f716e3e58d6e8629$var$B(), 10 < b)) {\n if (0 !== $f716e3e58d6e8629$var$tc(a, 0)) break;\n e = a.suspendedLanes;\n if ((e & d) !== d) {\n $f716e3e58d6e8629$var$Jg();\n a.pingedLanes |= a.suspendedLanes & e;\n break;\n }\n a.timeoutHandle = $f716e3e58d6e8629$var$Ef($f716e3e58d6e8629$var$Ok.bind(null, a, $f716e3e58d6e8629$var$rk, $f716e3e58d6e8629$var$sk), b);\n break;\n }\n $f716e3e58d6e8629$var$Ok(a, $f716e3e58d6e8629$var$rk, $f716e3e58d6e8629$var$sk);\n break;\n case 4:\n $f716e3e58d6e8629$var$Bk(a, d);\n if ((d & 4194240) === d) break;\n b = a.eventTimes;\n for(e = -1; 0 < d;){\n var g = 31 - $f716e3e58d6e8629$var$nc(d);\n f = 1 << g;\n g = b[g];\n g > e && (e = g);\n d &= ~f;\n }\n d = e;\n d = $f716e3e58d6e8629$var$B() - d;\n d = (120 > d ? 120 : 480 > d ? 480 : 1080 > d ? 1080 : 1920 > d ? 1920 : 3E3 > d ? 3E3 : 4320 > d ? 4320 : 1960 * $f716e3e58d6e8629$var$jk(d / 1960)) - d;\n if (10 < d) {\n a.timeoutHandle = $f716e3e58d6e8629$var$Ef($f716e3e58d6e8629$var$Ok.bind(null, a, $f716e3e58d6e8629$var$rk, $f716e3e58d6e8629$var$sk), d);\n break;\n }\n $f716e3e58d6e8629$var$Ok(a, $f716e3e58d6e8629$var$rk, $f716e3e58d6e8629$var$sk);\n break;\n case 5:\n $f716e3e58d6e8629$var$Ok(a, $f716e3e58d6e8629$var$rk, $f716e3e58d6e8629$var$sk);\n break;\n default:\n throw Error($f716e3e58d6e8629$var$p(329));\n }\n }\n }\n $f716e3e58d6e8629$var$Ck(a, $f716e3e58d6e8629$var$B());\n return a.callbackNode === c ? $f716e3e58d6e8629$var$Fk.bind(null, a) : null;\n}\nfunction $f716e3e58d6e8629$var$Mk(a, b) {\n var c = $f716e3e58d6e8629$var$qk;\n a.current.memoizedState.isDehydrated && ($f716e3e58d6e8629$var$Jk(a, b).flags |= 256);\n a = $f716e3e58d6e8629$var$Hk(a, b);\n 2 !== a && (b = $f716e3e58d6e8629$var$rk, $f716e3e58d6e8629$var$rk = c, null !== b && $f716e3e58d6e8629$var$Zi(b));\n return a;\n}\nfunction $f716e3e58d6e8629$var$Zi(a) {\n null === $f716e3e58d6e8629$var$rk ? $f716e3e58d6e8629$var$rk = a : $f716e3e58d6e8629$var$rk.push.apply($f716e3e58d6e8629$var$rk, a);\n}\nfunction $f716e3e58d6e8629$var$Nk(a) {\n for(var b = a;;){\n if (b.flags & 16384) {\n var c = b.updateQueue;\n if (null !== c && (c = c.stores, null !== c)) for(var d = 0; d < c.length; d++){\n var e = c[d], f = e.getSnapshot;\n e = e.value;\n try {\n if (!$f716e3e58d6e8629$var$Ge(f(), e)) return !1;\n } catch (g) {\n return !1;\n }\n }\n }\n c = b.child;\n if (b.subtreeFlags & 16384 && null !== c) c.return = b, b = c;\n else {\n if (b === a) break;\n for(; null === b.sibling;){\n if (null === b.return || b.return === a) return !0;\n b = b.return;\n }\n b.sibling.return = b.return;\n b = b.sibling;\n }\n }\n return !0;\n}\nfunction $f716e3e58d6e8629$var$Bk(a, b) {\n b &= ~$f716e3e58d6e8629$var$pk;\n b &= ~$f716e3e58d6e8629$var$ok;\n a.suspendedLanes |= b;\n a.pingedLanes &= ~b;\n for(a = a.expirationTimes; 0 < b;){\n var c = 31 - $f716e3e58d6e8629$var$nc(b), d = 1 << c;\n a[c] = -1;\n b &= ~d;\n }\n}\nfunction $f716e3e58d6e8629$var$Dk(a) {\n if (0 !== ($f716e3e58d6e8629$var$W & 6)) throw Error($f716e3e58d6e8629$var$p(327));\n $f716e3e58d6e8629$var$Gk();\n var b = $f716e3e58d6e8629$var$tc(a, 0);\n if (0 === (b & 1)) return $f716e3e58d6e8629$var$Ck(a, $f716e3e58d6e8629$var$B()), null;\n var c = $f716e3e58d6e8629$var$Hk(a, b);\n if (0 !== a.tag && 2 === c) {\n var d = $f716e3e58d6e8629$var$wc(a);\n 0 !== d && (b = d, c = $f716e3e58d6e8629$var$Mk(a, d));\n }\n if (1 === c) throw c = $f716e3e58d6e8629$var$nk, $f716e3e58d6e8629$var$Jk(a, 0), $f716e3e58d6e8629$var$Bk(a, b), $f716e3e58d6e8629$var$Ck(a, $f716e3e58d6e8629$var$B()), c;\n if (6 === c) throw Error($f716e3e58d6e8629$var$p(345));\n a.finishedWork = a.current.alternate;\n a.finishedLanes = b;\n $f716e3e58d6e8629$var$Ok(a, $f716e3e58d6e8629$var$rk, $f716e3e58d6e8629$var$sk);\n $f716e3e58d6e8629$var$Ck(a, $f716e3e58d6e8629$var$B());\n return null;\n}\nfunction $f716e3e58d6e8629$var$Pk(a, b) {\n var c = $f716e3e58d6e8629$var$W;\n $f716e3e58d6e8629$var$W |= 1;\n try {\n return a(b);\n } finally{\n $f716e3e58d6e8629$var$W = c, 0 === $f716e3e58d6e8629$var$W && ($f716e3e58d6e8629$var$aj = $f716e3e58d6e8629$var$B() + 500, $f716e3e58d6e8629$var$eg && $f716e3e58d6e8629$var$ig());\n }\n}\nfunction $f716e3e58d6e8629$var$Qk(a) {\n null !== $f716e3e58d6e8629$var$uk && 0 === $f716e3e58d6e8629$var$uk.tag && 0 === ($f716e3e58d6e8629$var$W & 6) && $f716e3e58d6e8629$var$Gk();\n var b = $f716e3e58d6e8629$var$W;\n $f716e3e58d6e8629$var$W |= 1;\n var c = $f716e3e58d6e8629$var$mk.transition, d = $f716e3e58d6e8629$var$C;\n try {\n if ($f716e3e58d6e8629$var$mk.transition = null, $f716e3e58d6e8629$var$C = 1, a) return a();\n } finally{\n $f716e3e58d6e8629$var$C = d, $f716e3e58d6e8629$var$mk.transition = c, $f716e3e58d6e8629$var$W = b, 0 === ($f716e3e58d6e8629$var$W & 6) && $f716e3e58d6e8629$var$ig();\n }\n}\nfunction $f716e3e58d6e8629$var$bj() {\n $f716e3e58d6e8629$var$cj = $f716e3e58d6e8629$var$mj.current;\n $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$mj);\n}\nfunction $f716e3e58d6e8629$var$Jk(a, b) {\n a.finishedWork = null;\n a.finishedLanes = 0;\n var c = a.timeoutHandle;\n -1 !== c && (a.timeoutHandle = -1, $f716e3e58d6e8629$var$Ff(c));\n if (null !== $f716e3e58d6e8629$var$X) for(c = $f716e3e58d6e8629$var$X.return; null !== c;){\n var d = c;\n $f716e3e58d6e8629$var$ch(d);\n switch(d.tag){\n case 1:\n d = d.type.childContextTypes;\n null !== d && void 0 !== d && $f716e3e58d6e8629$var$Zf();\n break;\n case 3:\n $f716e3e58d6e8629$var$Gh();\n $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$Vf);\n $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$H);\n $f716e3e58d6e8629$var$Lh();\n break;\n case 5:\n $f716e3e58d6e8629$var$Ih(d);\n break;\n case 4:\n $f716e3e58d6e8629$var$Gh();\n break;\n case 13:\n $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$K);\n break;\n case 19:\n $f716e3e58d6e8629$var$E($f716e3e58d6e8629$var$K);\n break;\n case 10:\n $f716e3e58d6e8629$var$qg(d.type._context);\n break;\n case 22:\n case 23:\n $f716e3e58d6e8629$var$bj();\n }\n c = c.return;\n }\n $f716e3e58d6e8629$var$P = a;\n $f716e3e58d6e8629$var$X = a = $f716e3e58d6e8629$var$th(a.current, null);\n $f716e3e58d6e8629$var$Y = $f716e3e58d6e8629$var$cj = b;\n $f716e3e58d6e8629$var$R = 0;\n $f716e3e58d6e8629$var$nk = null;\n $f716e3e58d6e8629$var$pk = $f716e3e58d6e8629$var$ok = $f716e3e58d6e8629$var$Fg = 0;\n $f716e3e58d6e8629$var$rk = $f716e3e58d6e8629$var$qk = null;\n if (null !== $f716e3e58d6e8629$var$vg) {\n for(b = 0; b < $f716e3e58d6e8629$var$vg.length; b++)if (c = $f716e3e58d6e8629$var$vg[b], d = c.interleaved, null !== d) {\n c.interleaved = null;\n var e = d.next, f = c.pending;\n if (null !== f) {\n var g = f.next;\n f.next = e;\n d.next = g;\n }\n c.pending = d;\n }\n $f716e3e58d6e8629$var$vg = null;\n }\n return a;\n}\nfunction $f716e3e58d6e8629$var$Lk(a, b) {\n do {\n var c = $f716e3e58d6e8629$var$X;\n try {\n $f716e3e58d6e8629$var$pg();\n $f716e3e58d6e8629$var$Mh.current = $f716e3e58d6e8629$var$Yh;\n if ($f716e3e58d6e8629$var$Ph) {\n for(var d = $f716e3e58d6e8629$var$L.memoizedState; null !== d;){\n var e = d.queue;\n null !== e && (e.pending = null);\n d = d.next;\n }\n $f716e3e58d6e8629$var$Ph = !1;\n }\n $f716e3e58d6e8629$var$Oh = 0;\n $f716e3e58d6e8629$var$N = $f716e3e58d6e8629$var$M = $f716e3e58d6e8629$var$L = null;\n $f716e3e58d6e8629$var$Qh = !1;\n $f716e3e58d6e8629$var$Rh = 0;\n $f716e3e58d6e8629$var$lk.current = null;\n if (null === c || null === c.return) {\n $f716e3e58d6e8629$var$R = 1;\n $f716e3e58d6e8629$var$nk = b;\n $f716e3e58d6e8629$var$X = null;\n break;\n }\n a: {\n var f = a, g = c.return, h = c, k = b;\n b = $f716e3e58d6e8629$var$Y;\n h.flags |= 32768;\n if (null !== k && \"object\" === typeof k && \"function\" === typeof k.then) {\n var l = k, n = h, u = n.tag;\n if (0 === (n.mode & 1) && (0 === u || 11 === u || 15 === u)) {\n var q = n.alternate;\n q ? (n.updateQueue = q.updateQueue, n.memoizedState = q.memoizedState, n.lanes = q.lanes) : (n.updateQueue = null, n.memoizedState = null);\n }\n var y = $f716e3e58d6e8629$var$Ri(g);\n if (null !== y) {\n y.flags &= -257;\n $f716e3e58d6e8629$var$Si(y, g, h, f, b);\n y.mode & 1 && $f716e3e58d6e8629$var$Pi(f, l, b);\n b = y;\n k = l;\n var m = b.updateQueue;\n if (null === m) {\n var w = new Set;\n w.add(k);\n b.updateQueue = w;\n } else m.add(k);\n break a;\n } else {\n if (0 === (b & 1)) {\n $f716e3e58d6e8629$var$Pi(f, l, b);\n $f716e3e58d6e8629$var$$i();\n break a;\n }\n k = Error($f716e3e58d6e8629$var$p(426));\n }\n } else if ($f716e3e58d6e8629$var$I && h.mode & 1) {\n var J = $f716e3e58d6e8629$var$Ri(g);\n if (null !== J) {\n 0 === (J.flags & 65536) && (J.flags |= 256);\n $f716e3e58d6e8629$var$Si(J, g, h, f, b);\n $f716e3e58d6e8629$var$oh(k);\n break a;\n }\n }\n f = k;\n 4 !== $f716e3e58d6e8629$var$R && ($f716e3e58d6e8629$var$R = 2);\n null === $f716e3e58d6e8629$var$qk ? $f716e3e58d6e8629$var$qk = [\n f\n ] : $f716e3e58d6e8629$var$qk.push(f);\n k = $f716e3e58d6e8629$var$Hi(k, h);\n h = g;\n do {\n switch(h.tag){\n case 3:\n h.flags |= 65536;\n b &= -b;\n h.lanes |= b;\n var v = $f716e3e58d6e8629$var$Ki(h, k, b);\n $f716e3e58d6e8629$var$Dg(h, v);\n break a;\n case 1:\n f = k;\n var x = h.type, r = h.stateNode;\n if (0 === (h.flags & 128) && (\"function\" === typeof x.getDerivedStateFromError || null !== r && \"function\" === typeof r.componentDidCatch && (null === $f716e3e58d6e8629$var$Oi || !$f716e3e58d6e8629$var$Oi.has(r)))) {\n h.flags |= 65536;\n b &= -b;\n h.lanes |= b;\n var F = $f716e3e58d6e8629$var$Ni(h, f, b);\n $f716e3e58d6e8629$var$Dg(h, F);\n break a;\n }\n }\n h = h.return;\n }while (null !== h);\n }\n $f716e3e58d6e8629$var$Rk(c);\n } catch (Z) {\n b = Z;\n $f716e3e58d6e8629$var$X === c && null !== c && ($f716e3e58d6e8629$var$X = c = c.return);\n continue;\n }\n break;\n }while (1);\n}\nfunction $f716e3e58d6e8629$var$Ik() {\n var a = $f716e3e58d6e8629$var$kk.current;\n $f716e3e58d6e8629$var$kk.current = $f716e3e58d6e8629$var$Yh;\n return null === a ? $f716e3e58d6e8629$var$Yh : a;\n}\nfunction $f716e3e58d6e8629$var$$i() {\n if (0 === $f716e3e58d6e8629$var$R || 3 === $f716e3e58d6e8629$var$R || 2 === $f716e3e58d6e8629$var$R) $f716e3e58d6e8629$var$R = 4;\n null === $f716e3e58d6e8629$var$P || 0 === ($f716e3e58d6e8629$var$Fg & 268435455) && 0 === ($f716e3e58d6e8629$var$ok & 268435455) || $f716e3e58d6e8629$var$Bk($f716e3e58d6e8629$var$P, $f716e3e58d6e8629$var$Y);\n}\nfunction $f716e3e58d6e8629$var$Hk(a, b) {\n var c = $f716e3e58d6e8629$var$W;\n $f716e3e58d6e8629$var$W |= 2;\n var d = $f716e3e58d6e8629$var$Ik();\n if ($f716e3e58d6e8629$var$P !== a || $f716e3e58d6e8629$var$Y !== b) $f716e3e58d6e8629$var$sk = null, $f716e3e58d6e8629$var$Jk(a, b);\n for(;;)try {\n $f716e3e58d6e8629$var$Sk();\n break;\n } catch (e) {\n $f716e3e58d6e8629$var$Lk(a, e);\n }\n $f716e3e58d6e8629$var$pg();\n $f716e3e58d6e8629$var$W = c;\n $f716e3e58d6e8629$var$kk.current = d;\n if (null !== $f716e3e58d6e8629$var$X) throw Error($f716e3e58d6e8629$var$p(261));\n $f716e3e58d6e8629$var$P = null;\n $f716e3e58d6e8629$var$Y = 0;\n return $f716e3e58d6e8629$var$R;\n}\nfunction $f716e3e58d6e8629$var$Sk() {\n for(; null !== $f716e3e58d6e8629$var$X;)$f716e3e58d6e8629$var$Tk($f716e3e58d6e8629$var$X);\n}\nfunction $f716e3e58d6e8629$var$Kk() {\n for(; null !== $f716e3e58d6e8629$var$X && !$f716e3e58d6e8629$var$bc();)$f716e3e58d6e8629$var$Tk($f716e3e58d6e8629$var$X);\n}\nfunction $f716e3e58d6e8629$var$Tk(a) {\n var b = $f716e3e58d6e8629$var$Uk(a.alternate, a, $f716e3e58d6e8629$var$cj);\n a.memoizedProps = a.pendingProps;\n null === b ? $f716e3e58d6e8629$var$Rk(a) : $f716e3e58d6e8629$var$X = b;\n $f716e3e58d6e8629$var$lk.current = null;\n}\nfunction $f716e3e58d6e8629$var$Rk(a) {\n var b = a;\n do {\n var c = b.alternate;\n a = b.return;\n if (0 === (b.flags & 32768)) {\n if (c = $f716e3e58d6e8629$var$Yi(c, b, $f716e3e58d6e8629$var$cj), null !== c) {\n $f716e3e58d6e8629$var$X = c;\n return;\n }\n } else {\n c = $f716e3e58d6e8629$var$Gj(c, b);\n if (null !== c) {\n c.flags &= 32767;\n $f716e3e58d6e8629$var$X = c;\n return;\n }\n if (null !== a) a.flags |= 32768, a.subtreeFlags = 0, a.deletions = null;\n else {\n $f716e3e58d6e8629$var$R = 6;\n $f716e3e58d6e8629$var$X = null;\n return;\n }\n }\n b = b.sibling;\n if (null !== b) {\n $f716e3e58d6e8629$var$X = b;\n return;\n }\n $f716e3e58d6e8629$var$X = b = a;\n }while (null !== b);\n 0 === $f716e3e58d6e8629$var$R && ($f716e3e58d6e8629$var$R = 5);\n}\nfunction $f716e3e58d6e8629$var$Ok(a, b, c) {\n var d = $f716e3e58d6e8629$var$C, e = $f716e3e58d6e8629$var$mk.transition;\n try {\n $f716e3e58d6e8629$var$mk.transition = null, $f716e3e58d6e8629$var$C = 1, $f716e3e58d6e8629$var$Vk(a, b, c, d);\n } finally{\n $f716e3e58d6e8629$var$mk.transition = e, $f716e3e58d6e8629$var$C = d;\n }\n return null;\n}\nfunction $f716e3e58d6e8629$var$Vk(a, b, c, d) {\n do $f716e3e58d6e8629$var$Gk();\n while (null !== $f716e3e58d6e8629$var$uk);\n if (0 !== ($f716e3e58d6e8629$var$W & 6)) throw Error($f716e3e58d6e8629$var$p(327));\n c = a.finishedWork;\n var e = a.finishedLanes;\n if (null === c) return null;\n a.finishedWork = null;\n a.finishedLanes = 0;\n if (c === a.current) throw Error($f716e3e58d6e8629$var$p(177));\n a.callbackNode = null;\n a.callbackPriority = 0;\n var f = c.lanes | c.childLanes;\n $f716e3e58d6e8629$var$Ac(a, f);\n a === $f716e3e58d6e8629$var$P && ($f716e3e58d6e8629$var$X = $f716e3e58d6e8629$var$P = null, $f716e3e58d6e8629$var$Y = 0);\n 0 === (c.subtreeFlags & 2064) && 0 === (c.flags & 2064) || $f716e3e58d6e8629$var$tk || ($f716e3e58d6e8629$var$tk = !0, $f716e3e58d6e8629$var$Ek($f716e3e58d6e8629$var$gc, function() {\n $f716e3e58d6e8629$var$Gk();\n return null;\n }));\n f = 0 !== (c.flags & 15990);\n if (0 !== (c.subtreeFlags & 15990) || f) {\n f = $f716e3e58d6e8629$var$mk.transition;\n $f716e3e58d6e8629$var$mk.transition = null;\n var g = $f716e3e58d6e8629$var$C;\n $f716e3e58d6e8629$var$C = 1;\n var h = $f716e3e58d6e8629$var$W;\n $f716e3e58d6e8629$var$W |= 4;\n $f716e3e58d6e8629$var$lk.current = null;\n $f716e3e58d6e8629$var$Mj(a, c);\n $f716e3e58d6e8629$var$bk(c, a);\n $f716e3e58d6e8629$var$Ne($f716e3e58d6e8629$var$Cf);\n $f716e3e58d6e8629$var$cd = !!$f716e3e58d6e8629$var$Bf;\n $f716e3e58d6e8629$var$Cf = $f716e3e58d6e8629$var$Bf = null;\n a.current = c;\n $f716e3e58d6e8629$var$fk(c, a, e);\n $f716e3e58d6e8629$var$cc();\n $f716e3e58d6e8629$var$W = h;\n $f716e3e58d6e8629$var$C = g;\n $f716e3e58d6e8629$var$mk.transition = f;\n } else a.current = c;\n $f716e3e58d6e8629$var$tk && ($f716e3e58d6e8629$var$tk = !1, $f716e3e58d6e8629$var$uk = a, $f716e3e58d6e8629$var$vk = e);\n f = a.pendingLanes;\n 0 === f && ($f716e3e58d6e8629$var$Oi = null);\n $f716e3e58d6e8629$var$lc(c.stateNode, d);\n $f716e3e58d6e8629$var$Ck(a, $f716e3e58d6e8629$var$B());\n if (null !== b) for(d = a.onRecoverableError, c = 0; c < b.length; c++)d(b[c]);\n if ($f716e3e58d6e8629$var$Li) throw $f716e3e58d6e8629$var$Li = !1, a = $f716e3e58d6e8629$var$Mi, $f716e3e58d6e8629$var$Mi = null, a;\n 0 !== ($f716e3e58d6e8629$var$vk & 1) && 0 !== a.tag && $f716e3e58d6e8629$var$Gk();\n f = a.pendingLanes;\n 0 !== (f & 1) ? a === $f716e3e58d6e8629$var$xk ? $f716e3e58d6e8629$var$wk++ : ($f716e3e58d6e8629$var$wk = 0, $f716e3e58d6e8629$var$xk = a) : $f716e3e58d6e8629$var$wk = 0;\n $f716e3e58d6e8629$var$ig();\n return null;\n}\nfunction $f716e3e58d6e8629$var$Gk() {\n if (null !== $f716e3e58d6e8629$var$uk) {\n var a = $f716e3e58d6e8629$var$Cc($f716e3e58d6e8629$var$vk), b = $f716e3e58d6e8629$var$mk.transition, c = $f716e3e58d6e8629$var$C;\n try {\n $f716e3e58d6e8629$var$mk.transition = null;\n $f716e3e58d6e8629$var$C = 16 > a ? 16 : a;\n if (null === $f716e3e58d6e8629$var$uk) var d = !1;\n else {\n a = $f716e3e58d6e8629$var$uk;\n $f716e3e58d6e8629$var$uk = null;\n $f716e3e58d6e8629$var$vk = 0;\n if (0 !== ($f716e3e58d6e8629$var$W & 6)) throw Error($f716e3e58d6e8629$var$p(331));\n var e = $f716e3e58d6e8629$var$W;\n $f716e3e58d6e8629$var$W |= 4;\n for($f716e3e58d6e8629$var$T = a.current; null !== $f716e3e58d6e8629$var$T;){\n var f = $f716e3e58d6e8629$var$T, g = f.child;\n if (0 !== ($f716e3e58d6e8629$var$T.flags & 16)) {\n var h = f.deletions;\n if (null !== h) {\n for(var k = 0; k < h.length; k++){\n var l = h[k];\n for($f716e3e58d6e8629$var$T = l; null !== $f716e3e58d6e8629$var$T;){\n var n = $f716e3e58d6e8629$var$T;\n switch(n.tag){\n case 0:\n case 11:\n case 15:\n $f716e3e58d6e8629$var$Nj(8, n, f);\n }\n var u = n.child;\n if (null !== u) u.return = n, $f716e3e58d6e8629$var$T = u;\n else for(; null !== $f716e3e58d6e8629$var$T;){\n n = $f716e3e58d6e8629$var$T;\n var q = n.sibling, y = n.return;\n $f716e3e58d6e8629$var$Qj(n);\n if (n === l) {\n $f716e3e58d6e8629$var$T = null;\n break;\n }\n if (null !== q) {\n q.return = y;\n $f716e3e58d6e8629$var$T = q;\n break;\n }\n $f716e3e58d6e8629$var$T = y;\n }\n }\n }\n var m = f.alternate;\n if (null !== m) {\n var w = m.child;\n if (null !== w) {\n m.child = null;\n do {\n var J = w.sibling;\n w.sibling = null;\n w = J;\n }while (null !== w);\n }\n }\n $f716e3e58d6e8629$var$T = f;\n }\n }\n if (0 !== (f.subtreeFlags & 2064) && null !== g) g.return = f, $f716e3e58d6e8629$var$T = g;\n else b: for(; null !== $f716e3e58d6e8629$var$T;){\n f = $f716e3e58d6e8629$var$T;\n if (0 !== (f.flags & 2048)) switch(f.tag){\n case 0:\n case 11:\n case 15:\n $f716e3e58d6e8629$var$Nj(9, f, f.return);\n }\n var v = f.sibling;\n if (null !== v) {\n v.return = f.return;\n $f716e3e58d6e8629$var$T = v;\n break b;\n }\n $f716e3e58d6e8629$var$T = f.return;\n }\n }\n var x = a.current;\n for($f716e3e58d6e8629$var$T = x; null !== $f716e3e58d6e8629$var$T;){\n g = $f716e3e58d6e8629$var$T;\n var r = g.child;\n if (0 !== (g.subtreeFlags & 2064) && null !== r) r.return = g, $f716e3e58d6e8629$var$T = r;\n else b: for(g = x; null !== $f716e3e58d6e8629$var$T;){\n h = $f716e3e58d6e8629$var$T;\n if (0 !== (h.flags & 2048)) try {\n switch(h.tag){\n case 0:\n case 11:\n case 15:\n $f716e3e58d6e8629$var$Oj(9, h);\n }\n } catch (Z) {\n $f716e3e58d6e8629$var$U(h, h.return, Z);\n }\n if (h === g) {\n $f716e3e58d6e8629$var$T = null;\n break b;\n }\n var F = h.sibling;\n if (null !== F) {\n F.return = h.return;\n $f716e3e58d6e8629$var$T = F;\n break b;\n }\n $f716e3e58d6e8629$var$T = h.return;\n }\n }\n $f716e3e58d6e8629$var$W = e;\n $f716e3e58d6e8629$var$ig();\n if ($f716e3e58d6e8629$var$kc && \"function\" === typeof $f716e3e58d6e8629$var$kc.onPostCommitFiberRoot) try {\n $f716e3e58d6e8629$var$kc.onPostCommitFiberRoot($f716e3e58d6e8629$var$jc, a);\n } catch (Z) {}\n d = !0;\n }\n return d;\n } finally{\n $f716e3e58d6e8629$var$C = c, $f716e3e58d6e8629$var$mk.transition = b;\n }\n }\n return !1;\n}\nfunction $f716e3e58d6e8629$var$Wk(a, b, c) {\n b = $f716e3e58d6e8629$var$Hi(c, b);\n b = $f716e3e58d6e8629$var$Ki(a, b, 1);\n $f716e3e58d6e8629$var$Ag(a, b);\n b = $f716e3e58d6e8629$var$Jg();\n a = $f716e3e58d6e8629$var$Ak(a, 1);\n null !== a && ($f716e3e58d6e8629$var$zc(a, 1, b), $f716e3e58d6e8629$var$Ck(a, b));\n}\nfunction $f716e3e58d6e8629$var$U(a, b, c) {\n if (3 === a.tag) $f716e3e58d6e8629$var$Wk(a, a, c);\n else for(; null !== b;){\n if (3 === b.tag) {\n $f716e3e58d6e8629$var$Wk(b, a, c);\n break;\n } else if (1 === b.tag) {\n var d = b.stateNode;\n if (\"function\" === typeof b.type.getDerivedStateFromError || \"function\" === typeof d.componentDidCatch && (null === $f716e3e58d6e8629$var$Oi || !$f716e3e58d6e8629$var$Oi.has(d))) {\n a = $f716e3e58d6e8629$var$Hi(c, a);\n a = $f716e3e58d6e8629$var$Ni(b, a, 1);\n $f716e3e58d6e8629$var$Ag(b, a);\n a = $f716e3e58d6e8629$var$Jg();\n b = $f716e3e58d6e8629$var$Ak(b, 1);\n null !== b && ($f716e3e58d6e8629$var$zc(b, 1, a), $f716e3e58d6e8629$var$Ck(b, a));\n break;\n }\n }\n b = b.return;\n }\n}\nfunction $f716e3e58d6e8629$var$Qi(a, b, c) {\n var d = a.pingCache;\n null !== d && d.delete(b);\n b = $f716e3e58d6e8629$var$Jg();\n a.pingedLanes |= a.suspendedLanes & c;\n $f716e3e58d6e8629$var$P === a && ($f716e3e58d6e8629$var$Y & c) === c && (4 === $f716e3e58d6e8629$var$R || 3 === $f716e3e58d6e8629$var$R && ($f716e3e58d6e8629$var$Y & 130023424) === $f716e3e58d6e8629$var$Y && 500 > $f716e3e58d6e8629$var$B() - $f716e3e58d6e8629$var$dk ? $f716e3e58d6e8629$var$Jk(a, 0) : $f716e3e58d6e8629$var$pk |= c);\n $f716e3e58d6e8629$var$Ck(a, b);\n}\nfunction $f716e3e58d6e8629$var$Xk(a, b) {\n 0 === b && (0 === (a.mode & 1) ? b = 1 : (b = $f716e3e58d6e8629$var$rc, $f716e3e58d6e8629$var$rc <<= 1, 0 === ($f716e3e58d6e8629$var$rc & 130023424) && ($f716e3e58d6e8629$var$rc = 4194304)));\n var c = $f716e3e58d6e8629$var$Jg();\n a = $f716e3e58d6e8629$var$Ak(a, b);\n null !== a && ($f716e3e58d6e8629$var$zc(a, b, c), $f716e3e58d6e8629$var$Ck(a, c));\n}\nfunction $f716e3e58d6e8629$var$zj(a) {\n var b = a.memoizedState, c = 0;\n null !== b && (c = b.retryLane);\n $f716e3e58d6e8629$var$Xk(a, c);\n}\nfunction $f716e3e58d6e8629$var$Zj(a, b) {\n var c = 0;\n switch(a.tag){\n case 13:\n var d = a.stateNode;\n var e = a.memoizedState;\n null !== e && (c = e.retryLane);\n break;\n case 19:\n d = a.stateNode;\n break;\n default:\n throw Error($f716e3e58d6e8629$var$p(314));\n }\n null !== d && d.delete(b);\n $f716e3e58d6e8629$var$Xk(a, c);\n}\nvar $f716e3e58d6e8629$var$Uk;\n$f716e3e58d6e8629$var$Uk = function(a, b, c) {\n if (null !== a) {\n if (a.memoizedProps !== b.pendingProps || $f716e3e58d6e8629$var$Vf.current) $f716e3e58d6e8629$var$tg = !0;\n else {\n if (0 === (a.lanes & c) && 0 === (b.flags & 128)) return $f716e3e58d6e8629$var$tg = !1, $f716e3e58d6e8629$var$Fj(a, b, c);\n $f716e3e58d6e8629$var$tg = 0 !== (a.flags & 131072) ? !0 : !1;\n }\n } else $f716e3e58d6e8629$var$tg = !1, $f716e3e58d6e8629$var$I && 0 !== (b.flags & 1048576) && $f716e3e58d6e8629$var$ah(b, $f716e3e58d6e8629$var$Ug, b.index);\n b.lanes = 0;\n switch(b.tag){\n case 2:\n var d = b.type;\n null !== a && (a.alternate = null, b.alternate = null, b.flags |= 2);\n a = b.pendingProps;\n var e = $f716e3e58d6e8629$var$Xf(b, $f716e3e58d6e8629$var$H.current);\n $f716e3e58d6e8629$var$sg(b, c);\n e = $f716e3e58d6e8629$var$Uh(null, b, d, a, e, c);\n var f = $f716e3e58d6e8629$var$Zh();\n b.flags |= 1;\n \"object\" === typeof e && null !== e && \"function\" === typeof e.render && void 0 === e.$$typeof ? (b.tag = 1, b.memoizedState = null, b.updateQueue = null, $f716e3e58d6e8629$var$Yf(d) ? (f = !0, $f716e3e58d6e8629$var$bg(b)) : f = !1, b.memoizedState = null !== e.state && void 0 !== e.state ? e.state : null, $f716e3e58d6e8629$var$xg(b), e.updater = $f716e3e58d6e8629$var$Mg, b.stateNode = e, e._reactInternals = b, $f716e3e58d6e8629$var$Qg(b, d, a, c), b = $f716e3e58d6e8629$var$pj(null, b, d, !0, f, c)) : (b.tag = 0, $f716e3e58d6e8629$var$I && f && $f716e3e58d6e8629$var$bh(b), $f716e3e58d6e8629$var$ej(null, b, e, c), b = b.child);\n return b;\n case 16:\n d = b.elementType;\n a: {\n null !== a && (a.alternate = null, b.alternate = null, b.flags |= 2);\n a = b.pendingProps;\n e = d._init;\n d = e(d._payload);\n b.type = d;\n e = b.tag = $f716e3e58d6e8629$var$Yk(d);\n a = $f716e3e58d6e8629$var$kg(d, a);\n switch(e){\n case 0:\n b = $f716e3e58d6e8629$var$kj(null, b, d, a, c);\n break a;\n case 1:\n b = $f716e3e58d6e8629$var$oj(null, b, d, a, c);\n break a;\n case 11:\n b = $f716e3e58d6e8629$var$fj(null, b, d, a, c);\n break a;\n case 14:\n b = $f716e3e58d6e8629$var$hj(null, b, d, $f716e3e58d6e8629$var$kg(d.type, a), c);\n break a;\n }\n throw Error($f716e3e58d6e8629$var$p(306, d, \"\"));\n }\n return b;\n case 0:\n return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : $f716e3e58d6e8629$var$kg(d, e), $f716e3e58d6e8629$var$kj(a, b, d, e, c);\n case 1:\n return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : $f716e3e58d6e8629$var$kg(d, e), $f716e3e58d6e8629$var$oj(a, b, d, e, c);\n case 3:\n a: {\n $f716e3e58d6e8629$var$qj(b);\n if (null === a) throw Error($f716e3e58d6e8629$var$p(387));\n d = b.pendingProps;\n f = b.memoizedState;\n e = f.element;\n $f716e3e58d6e8629$var$yg(a, b);\n $f716e3e58d6e8629$var$Eg(b, d, null, c);\n var g = b.memoizedState;\n d = g.element;\n if (f.isDehydrated) {\n if (f = {\n element: d,\n isDehydrated: !1,\n cache: g.cache,\n pendingSuspenseBoundaries: g.pendingSuspenseBoundaries,\n transitions: g.transitions\n }, b.updateQueue.baseState = f, b.memoizedState = f, b.flags & 256) {\n e = Error($f716e3e58d6e8629$var$p(423));\n b = $f716e3e58d6e8629$var$rj(a, b, d, c, e);\n break a;\n } else if (d !== e) {\n e = Error($f716e3e58d6e8629$var$p(424));\n b = $f716e3e58d6e8629$var$rj(a, b, d, c, e);\n break a;\n } else for($f716e3e58d6e8629$var$eh = $f716e3e58d6e8629$var$Kf(b.stateNode.containerInfo.firstChild), $f716e3e58d6e8629$var$dh = b, $f716e3e58d6e8629$var$I = !0, $f716e3e58d6e8629$var$fh = null, c = $f716e3e58d6e8629$var$zh(b, null, d, c), b.child = c; c;)c.flags = c.flags & -3 | 4096, c = c.sibling;\n } else {\n $f716e3e58d6e8629$var$nh();\n if (d === e) {\n b = $f716e3e58d6e8629$var$gj(a, b, c);\n break a;\n }\n $f716e3e58d6e8629$var$ej(a, b, d, c);\n }\n b = b.child;\n }\n return b;\n case 5:\n return $f716e3e58d6e8629$var$Hh(b), null === a && $f716e3e58d6e8629$var$kh(b), d = b.type, e = b.pendingProps, f = null !== a ? a.memoizedProps : null, g = e.children, $f716e3e58d6e8629$var$Df(d, e) ? g = null : null !== f && $f716e3e58d6e8629$var$Df(d, f) && (b.flags |= 32), $f716e3e58d6e8629$var$nj(a, b), $f716e3e58d6e8629$var$ej(a, b, g, c), b.child;\n case 6:\n return null === a && $f716e3e58d6e8629$var$kh(b), null;\n case 13:\n return $f716e3e58d6e8629$var$vj(a, b, c);\n case 4:\n return $f716e3e58d6e8629$var$Fh(b, b.stateNode.containerInfo), d = b.pendingProps, null === a ? b.child = $f716e3e58d6e8629$var$yh(b, null, d, c) : $f716e3e58d6e8629$var$ej(a, b, d, c), b.child;\n case 11:\n return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : $f716e3e58d6e8629$var$kg(d, e), $f716e3e58d6e8629$var$fj(a, b, d, e, c);\n case 7:\n return $f716e3e58d6e8629$var$ej(a, b, b.pendingProps, c), b.child;\n case 8:\n return $f716e3e58d6e8629$var$ej(a, b, b.pendingProps.children, c), b.child;\n case 12:\n return $f716e3e58d6e8629$var$ej(a, b, b.pendingProps.children, c), b.child;\n case 10:\n a: {\n d = b.type._context;\n e = b.pendingProps;\n f = b.memoizedProps;\n g = e.value;\n $f716e3e58d6e8629$var$G($f716e3e58d6e8629$var$lg, d._currentValue);\n d._currentValue = g;\n if (null !== f) {\n if ($f716e3e58d6e8629$var$Ge(f.value, g)) {\n if (f.children === e.children && !$f716e3e58d6e8629$var$Vf.current) {\n b = $f716e3e58d6e8629$var$gj(a, b, c);\n break a;\n }\n } else for(f = b.child, null !== f && (f.return = b); null !== f;){\n var h = f.dependencies;\n if (null !== h) {\n g = f.child;\n for(var k = h.firstContext; null !== k;){\n if (k.context === d) {\n if (1 === f.tag) {\n k = $f716e3e58d6e8629$var$zg(-1, c & -c);\n k.tag = 2;\n var l = f.updateQueue;\n if (null !== l) {\n l = l.shared;\n var n = l.pending;\n null === n ? k.next = k : (k.next = n.next, n.next = k);\n l.pending = k;\n }\n }\n f.lanes |= c;\n k = f.alternate;\n null !== k && (k.lanes |= c);\n $f716e3e58d6e8629$var$rg(f.return, c, b);\n h.lanes |= c;\n break;\n }\n k = k.next;\n }\n } else if (10 === f.tag) g = f.type === b.type ? null : f.child;\n else if (18 === f.tag) {\n g = f.return;\n if (null === g) throw Error($f716e3e58d6e8629$var$p(341));\n g.lanes |= c;\n h = g.alternate;\n null !== h && (h.lanes |= c);\n $f716e3e58d6e8629$var$rg(g, c, b);\n g = f.sibling;\n } else g = f.child;\n if (null !== g) g.return = f;\n else for(g = f; null !== g;){\n if (g === b) {\n g = null;\n break;\n }\n f = g.sibling;\n if (null !== f) {\n f.return = g.return;\n g = f;\n break;\n }\n g = g.return;\n }\n f = g;\n }\n }\n $f716e3e58d6e8629$var$ej(a, b, e.children, c);\n b = b.child;\n }\n return b;\n case 9:\n return e = b.type, d = b.pendingProps.children, $f716e3e58d6e8629$var$sg(b, c), e = $f716e3e58d6e8629$var$ug(e), d = d(e), b.flags |= 1, $f716e3e58d6e8629$var$ej(a, b, d, c), b.child;\n case 14:\n return d = b.type, e = $f716e3e58d6e8629$var$kg(d, b.pendingProps), e = $f716e3e58d6e8629$var$kg(d.type, e), $f716e3e58d6e8629$var$hj(a, b, d, e, c);\n case 15:\n return $f716e3e58d6e8629$var$jj(a, b, b.type, b.pendingProps, c);\n case 17:\n return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : $f716e3e58d6e8629$var$kg(d, e), null !== a && (a.alternate = null, b.alternate = null, b.flags |= 2), b.tag = 1, $f716e3e58d6e8629$var$Yf(d) ? (a = !0, $f716e3e58d6e8629$var$bg(b)) : a = !1, $f716e3e58d6e8629$var$sg(b, c), $f716e3e58d6e8629$var$Og(b, d, e), $f716e3e58d6e8629$var$Qg(b, d, e, c), $f716e3e58d6e8629$var$pj(null, b, d, !0, a, c);\n case 19:\n return $f716e3e58d6e8629$var$Ej(a, b, c);\n case 22:\n return $f716e3e58d6e8629$var$lj(a, b, c);\n }\n throw Error($f716e3e58d6e8629$var$p(156, b.tag));\n};\nfunction $f716e3e58d6e8629$var$Ek(a, b) {\n return $f716e3e58d6e8629$var$$b(a, b);\n}\nfunction $f716e3e58d6e8629$var$Zk(a, b, c, d) {\n this.tag = a;\n this.key = c;\n this.sibling = this.child = this.return = this.stateNode = this.type = this.elementType = null;\n this.index = 0;\n this.ref = null;\n this.pendingProps = b;\n this.dependencies = this.memoizedState = this.updateQueue = this.memoizedProps = null;\n this.mode = d;\n this.subtreeFlags = this.flags = 0;\n this.deletions = null;\n this.childLanes = this.lanes = 0;\n this.alternate = null;\n}\nfunction $f716e3e58d6e8629$var$hh(a, b, c, d) {\n return new $f716e3e58d6e8629$var$Zk(a, b, c, d);\n}\nfunction $f716e3e58d6e8629$var$ij(a) {\n a = a.prototype;\n return !(!a || !a.isReactComponent);\n}\nfunction $f716e3e58d6e8629$var$Yk(a) {\n if (\"function\" === typeof a) return $f716e3e58d6e8629$var$ij(a) ? 1 : 0;\n if (void 0 !== a && null !== a) {\n a = a.$$typeof;\n if (a === $f716e3e58d6e8629$var$Ca) return 11;\n if (a === $f716e3e58d6e8629$var$Fa) return 14;\n }\n return 2;\n}\nfunction $f716e3e58d6e8629$var$th(a, b) {\n var c = a.alternate;\n null === c ? (c = $f716e3e58d6e8629$var$hh(a.tag, b, a.key, a.mode), c.elementType = a.elementType, c.type = a.type, c.stateNode = a.stateNode, c.alternate = a, a.alternate = c) : (c.pendingProps = b, c.type = a.type, c.flags = 0, c.subtreeFlags = 0, c.deletions = null);\n c.flags = a.flags & 14680064;\n c.childLanes = a.childLanes;\n c.lanes = a.lanes;\n c.child = a.child;\n c.memoizedProps = a.memoizedProps;\n c.memoizedState = a.memoizedState;\n c.updateQueue = a.updateQueue;\n b = a.dependencies;\n c.dependencies = null === b ? null : {\n lanes: b.lanes,\n firstContext: b.firstContext\n };\n c.sibling = a.sibling;\n c.index = a.index;\n c.ref = a.ref;\n return c;\n}\nfunction $f716e3e58d6e8629$var$vh(a, b, c, d, e, f) {\n var g = 2;\n d = a;\n if (\"function\" === typeof a) $f716e3e58d6e8629$var$ij(a) && (g = 1);\n else if (\"string\" === typeof a) g = 5;\n else a: switch(a){\n case $f716e3e58d6e8629$var$wa:\n return $f716e3e58d6e8629$var$xh(c.children, e, f, b);\n case $f716e3e58d6e8629$var$xa:\n g = 8;\n e |= 8;\n break;\n case $f716e3e58d6e8629$var$za:\n return a = $f716e3e58d6e8629$var$hh(12, c, b, e | 2), a.elementType = $f716e3e58d6e8629$var$za, a.lanes = f, a;\n case $f716e3e58d6e8629$var$Da:\n return a = $f716e3e58d6e8629$var$hh(13, c, b, e), a.elementType = $f716e3e58d6e8629$var$Da, a.lanes = f, a;\n case $f716e3e58d6e8629$var$Ea:\n return a = $f716e3e58d6e8629$var$hh(19, c, b, e), a.elementType = $f716e3e58d6e8629$var$Ea, a.lanes = f, a;\n case $f716e3e58d6e8629$var$Ha:\n return $f716e3e58d6e8629$var$wj(c, e, f, b);\n default:\n if (\"object\" === typeof a && null !== a) switch(a.$$typeof){\n case $f716e3e58d6e8629$var$Aa:\n g = 10;\n break a;\n case $f716e3e58d6e8629$var$Ba:\n g = 9;\n break a;\n case $f716e3e58d6e8629$var$Ca:\n g = 11;\n break a;\n case $f716e3e58d6e8629$var$Fa:\n g = 14;\n break a;\n case $f716e3e58d6e8629$var$Ga:\n g = 16;\n d = null;\n break a;\n }\n throw Error($f716e3e58d6e8629$var$p(130, null == a ? a : typeof a, \"\"));\n }\n b = $f716e3e58d6e8629$var$hh(g, c, b, e);\n b.elementType = a;\n b.type = d;\n b.lanes = f;\n return b;\n}\nfunction $f716e3e58d6e8629$var$xh(a, b, c, d) {\n a = $f716e3e58d6e8629$var$hh(7, a, d, b);\n a.lanes = c;\n return a;\n}\nfunction $f716e3e58d6e8629$var$wj(a, b, c, d) {\n a = $f716e3e58d6e8629$var$hh(22, a, d, b);\n a.elementType = $f716e3e58d6e8629$var$Ha;\n a.lanes = c;\n a.stateNode = {};\n return a;\n}\nfunction $f716e3e58d6e8629$var$uh(a, b, c) {\n a = $f716e3e58d6e8629$var$hh(6, a, null, b);\n a.lanes = c;\n return a;\n}\nfunction $f716e3e58d6e8629$var$wh(a, b, c) {\n b = $f716e3e58d6e8629$var$hh(4, null !== a.children ? a.children : [], a.key, b);\n b.lanes = c;\n b.stateNode = {\n containerInfo: a.containerInfo,\n pendingChildren: null,\n implementation: a.implementation\n };\n return b;\n}\nfunction $f716e3e58d6e8629$var$$k(a, b, c, d, e) {\n this.tag = b;\n this.containerInfo = a;\n this.finishedWork = this.pingCache = this.current = this.pendingChildren = null;\n this.timeoutHandle = -1;\n this.callbackNode = this.pendingContext = this.context = null;\n this.callbackPriority = 0;\n this.eventTimes = $f716e3e58d6e8629$var$yc(0);\n this.expirationTimes = $f716e3e58d6e8629$var$yc(-1);\n this.entangledLanes = this.finishedLanes = this.mutableReadLanes = this.expiredLanes = this.pingedLanes = this.suspendedLanes = this.pendingLanes = 0;\n this.entanglements = $f716e3e58d6e8629$var$yc(0);\n this.identifierPrefix = d;\n this.onRecoverableError = e;\n this.mutableSourceEagerHydrationData = null;\n}\nfunction $f716e3e58d6e8629$var$al(a, b, c, d, e, f, g, h, k) {\n a = new $f716e3e58d6e8629$var$$k(a, b, c, h, k);\n 1 === b ? (b = 1, !0 === f && (b |= 8)) : b = 0;\n f = $f716e3e58d6e8629$var$hh(3, null, null, b);\n a.current = f;\n f.stateNode = a;\n f.memoizedState = {\n element: d,\n isDehydrated: c,\n cache: null,\n transitions: null,\n pendingSuspenseBoundaries: null\n };\n $f716e3e58d6e8629$var$xg(f);\n return a;\n}\nfunction $f716e3e58d6e8629$var$bl(a, b, c) {\n var d = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: $f716e3e58d6e8629$var$va,\n key: null == d ? null : \"\" + d,\n children: a,\n containerInfo: b,\n implementation: c\n };\n}\nfunction $f716e3e58d6e8629$var$cl(a) {\n if (!a) return $f716e3e58d6e8629$var$Uf;\n a = a._reactInternals;\n a: {\n if ($f716e3e58d6e8629$var$Ub(a) !== a || 1 !== a.tag) throw Error($f716e3e58d6e8629$var$p(170));\n var b = a;\n do {\n switch(b.tag){\n case 3:\n b = b.stateNode.context;\n break a;\n case 1:\n if ($f716e3e58d6e8629$var$Yf(b.type)) {\n b = b.stateNode.__reactInternalMemoizedMergedChildContext;\n break a;\n }\n }\n b = b.return;\n }while (null !== b);\n throw Error($f716e3e58d6e8629$var$p(171));\n }\n if (1 === a.tag) {\n var c = a.type;\n if ($f716e3e58d6e8629$var$Yf(c)) return $f716e3e58d6e8629$var$ag(a, c, b);\n }\n return b;\n}\nfunction $f716e3e58d6e8629$var$dl(a, b, c, d, e, f, g, h, k) {\n a = $f716e3e58d6e8629$var$al(c, d, !0, a, e, f, g, h, k);\n a.context = $f716e3e58d6e8629$var$cl(null);\n c = a.current;\n d = $f716e3e58d6e8629$var$Jg();\n e = $f716e3e58d6e8629$var$Kg(c);\n f = $f716e3e58d6e8629$var$zg(d, e);\n f.callback = void 0 !== b && null !== b ? b : null;\n $f716e3e58d6e8629$var$Ag(c, f);\n a.current.lanes = e;\n $f716e3e58d6e8629$var$zc(a, e, d);\n $f716e3e58d6e8629$var$Ck(a, d);\n return a;\n}\nfunction $f716e3e58d6e8629$var$el(a, b, c, d) {\n var e = b.current, f = $f716e3e58d6e8629$var$Jg(), g = $f716e3e58d6e8629$var$Kg(e);\n c = $f716e3e58d6e8629$var$cl(c);\n null === b.context ? b.context = c : b.pendingContext = c;\n b = $f716e3e58d6e8629$var$zg(f, g);\n b.payload = {\n element: a\n };\n d = void 0 === d ? null : d;\n null !== d && (b.callback = d);\n $f716e3e58d6e8629$var$Ag(e, b);\n a = $f716e3e58d6e8629$var$Lg(e, g, f);\n null !== a && $f716e3e58d6e8629$var$Cg(a, e, g);\n return g;\n}\nfunction $f716e3e58d6e8629$var$fl(a) {\n a = a.current;\n if (!a.child) return null;\n switch(a.child.tag){\n case 5:\n return a.child.stateNode;\n default:\n return a.child.stateNode;\n }\n}\nfunction $f716e3e58d6e8629$var$gl(a, b) {\n a = a.memoizedState;\n if (null !== a && null !== a.dehydrated) {\n var c = a.retryLane;\n a.retryLane = 0 !== c && c < b ? c : b;\n }\n}\nfunction $f716e3e58d6e8629$var$hl(a, b) {\n $f716e3e58d6e8629$var$gl(a, b);\n (a = a.alternate) && $f716e3e58d6e8629$var$gl(a, b);\n}\nfunction $f716e3e58d6e8629$var$il() {\n return null;\n}\nvar $f716e3e58d6e8629$var$jl = \"function\" === typeof reportError ? reportError : function(a) {\n console.error(a);\n};\nfunction $f716e3e58d6e8629$var$kl(a) {\n this._internalRoot = a;\n}\n$f716e3e58d6e8629$var$ll.prototype.render = $f716e3e58d6e8629$var$kl.prototype.render = function(a) {\n var b = this._internalRoot;\n if (null === b) throw Error($f716e3e58d6e8629$var$p(409));\n $f716e3e58d6e8629$var$el(a, b, null, null);\n};\n$f716e3e58d6e8629$var$ll.prototype.unmount = $f716e3e58d6e8629$var$kl.prototype.unmount = function() {\n var a = this._internalRoot;\n if (null !== a) {\n this._internalRoot = null;\n var b = a.containerInfo;\n $f716e3e58d6e8629$var$Qk(function() {\n $f716e3e58d6e8629$var$el(null, a, null, null);\n });\n b[$f716e3e58d6e8629$var$tf] = null;\n }\n};\nfunction $f716e3e58d6e8629$var$ll(a) {\n this._internalRoot = a;\n}\n$f716e3e58d6e8629$var$ll.prototype.unstable_scheduleHydration = function(a) {\n if (a) {\n var b = $f716e3e58d6e8629$var$Gc();\n a = {\n blockedOn: null,\n target: a,\n priority: b\n };\n for(var c = 0; c < $f716e3e58d6e8629$var$Pc.length && 0 !== b && b < $f716e3e58d6e8629$var$Pc[c].priority; c++);\n $f716e3e58d6e8629$var$Pc.splice(c, 0, a);\n 0 === c && $f716e3e58d6e8629$var$Uc(a);\n }\n};\nfunction $f716e3e58d6e8629$var$ml(a) {\n return !(!a || 1 !== a.nodeType && 9 !== a.nodeType && 11 !== a.nodeType);\n}\nfunction $f716e3e58d6e8629$var$nl(a) {\n return !(!a || 1 !== a.nodeType && 9 !== a.nodeType && 11 !== a.nodeType && (8 !== a.nodeType || \" react-mount-point-unstable \" !== a.nodeValue));\n}\nfunction $f716e3e58d6e8629$var$ol() {}\nfunction $f716e3e58d6e8629$var$pl(a, b, c, d, e) {\n if (e) {\n if (\"function\" === typeof d) {\n var f = d;\n d = function() {\n var a = $f716e3e58d6e8629$var$fl(g);\n f.call(a);\n };\n }\n var g = $f716e3e58d6e8629$var$dl(b, d, a, 0, null, !1, !1, \"\", $f716e3e58d6e8629$var$ol);\n a._reactRootContainer = g;\n a[$f716e3e58d6e8629$var$tf] = g.current;\n $f716e3e58d6e8629$var$rf(8 === a.nodeType ? a.parentNode : a);\n $f716e3e58d6e8629$var$Qk();\n return g;\n }\n for(; e = a.lastChild;)a.removeChild(e);\n if (\"function\" === typeof d) {\n var h = d;\n d = function() {\n var a = $f716e3e58d6e8629$var$fl(k);\n h.call(a);\n };\n }\n var k = $f716e3e58d6e8629$var$al(a, 0, !1, null, null, !1, !1, \"\", $f716e3e58d6e8629$var$ol);\n a._reactRootContainer = k;\n a[$f716e3e58d6e8629$var$tf] = k.current;\n $f716e3e58d6e8629$var$rf(8 === a.nodeType ? a.parentNode : a);\n $f716e3e58d6e8629$var$Qk(function() {\n $f716e3e58d6e8629$var$el(b, k, c, d);\n });\n return k;\n}\nfunction $f716e3e58d6e8629$var$ql(a, b, c, d, e) {\n var f = c._reactRootContainer;\n if (f) {\n var g = f;\n if (\"function\" === typeof e) {\n var h = e;\n e = function() {\n var a = $f716e3e58d6e8629$var$fl(g);\n h.call(a);\n };\n }\n $f716e3e58d6e8629$var$el(b, g, a, e);\n } else g = $f716e3e58d6e8629$var$pl(c, b, a, e, d);\n return $f716e3e58d6e8629$var$fl(g);\n}\n$f716e3e58d6e8629$var$Dc = function(a) {\n switch(a.tag){\n case 3:\n var b = a.stateNode;\n if (b.current.memoizedState.isDehydrated) {\n var c = $f716e3e58d6e8629$var$sc(b.pendingLanes);\n 0 !== c && ($f716e3e58d6e8629$var$Bc(b, c | 1), $f716e3e58d6e8629$var$Ck(b, $f716e3e58d6e8629$var$B()), 0 === ($f716e3e58d6e8629$var$W & 6) && ($f716e3e58d6e8629$var$aj = $f716e3e58d6e8629$var$B() + 500, $f716e3e58d6e8629$var$ig()));\n }\n break;\n case 13:\n var d = $f716e3e58d6e8629$var$Jg();\n $f716e3e58d6e8629$var$Qk(function() {\n return $f716e3e58d6e8629$var$Lg(a, 1, d);\n });\n $f716e3e58d6e8629$var$hl(a, 1);\n }\n};\n$f716e3e58d6e8629$var$Ec = function(a) {\n if (13 === a.tag) {\n var b = $f716e3e58d6e8629$var$Jg();\n $f716e3e58d6e8629$var$Lg(a, 134217728, b);\n $f716e3e58d6e8629$var$hl(a, 134217728);\n }\n};\n$f716e3e58d6e8629$var$Fc = function(a) {\n if (13 === a.tag) {\n var b = $f716e3e58d6e8629$var$Jg(), c = $f716e3e58d6e8629$var$Kg(a);\n $f716e3e58d6e8629$var$Lg(a, c, b);\n $f716e3e58d6e8629$var$hl(a, c);\n }\n};\n$f716e3e58d6e8629$var$Gc = function() {\n return $f716e3e58d6e8629$var$C;\n};\n$f716e3e58d6e8629$var$Hc = function(a, b) {\n var c = $f716e3e58d6e8629$var$C;\n try {\n return $f716e3e58d6e8629$var$C = a, b();\n } finally{\n $f716e3e58d6e8629$var$C = c;\n }\n};\n$f716e3e58d6e8629$var$xb = function(a, b, c) {\n switch(b){\n case \"input\":\n $f716e3e58d6e8629$var$$a(a, c);\n b = c.name;\n if (\"radio\" === c.type && null != b) {\n for(c = a; c.parentNode;)c = c.parentNode;\n c = c.querySelectorAll(\"input[name=\" + JSON.stringify(\"\" + b) + '][type=\"radio\"]');\n for(b = 0; b < c.length; b++){\n var d = c[b];\n if (d !== a && d.form === a.form) {\n var e = $f716e3e58d6e8629$var$Cb(d);\n if (!e) throw Error($f716e3e58d6e8629$var$p(90));\n $f716e3e58d6e8629$var$Va(d);\n $f716e3e58d6e8629$var$$a(d, e);\n }\n }\n }\n break;\n case \"textarea\":\n $f716e3e58d6e8629$var$hb(a, c);\n break;\n case \"select\":\n b = c.value, null != b && $f716e3e58d6e8629$var$eb(a, !!c.multiple, b, !1);\n }\n};\n$f716e3e58d6e8629$var$Fb = $f716e3e58d6e8629$var$Pk;\n$f716e3e58d6e8629$var$Gb = $f716e3e58d6e8629$var$Qk;\nvar $f716e3e58d6e8629$var$rl = {\n usingClientEntryPoint: !1,\n Events: [\n $f716e3e58d6e8629$var$Bb,\n $f716e3e58d6e8629$var$te,\n $f716e3e58d6e8629$var$Cb,\n $f716e3e58d6e8629$var$Db,\n $f716e3e58d6e8629$var$Eb,\n $f716e3e58d6e8629$var$Pk\n ]\n}, $f716e3e58d6e8629$var$sl = {\n findFiberByHostInstance: $f716e3e58d6e8629$var$Vc,\n bundleType: 0,\n version: \"18.1.0\",\n rendererPackageName: \"react-dom\"\n};\nvar $f716e3e58d6e8629$var$tl = {\n bundleType: $f716e3e58d6e8629$var$sl.bundleType,\n version: $f716e3e58d6e8629$var$sl.version,\n rendererPackageName: $f716e3e58d6e8629$var$sl.rendererPackageName,\n rendererConfig: $f716e3e58d6e8629$var$sl.rendererConfig,\n overrideHookState: null,\n overrideHookStateDeletePath: null,\n overrideHookStateRenamePath: null,\n overrideProps: null,\n overridePropsDeletePath: null,\n overridePropsRenamePath: null,\n setErrorHandler: null,\n setSuspenseHandler: null,\n scheduleUpdate: null,\n currentDispatcherRef: $f716e3e58d6e8629$var$ta.ReactCurrentDispatcher,\n findHostInstanceByFiber: function(a) {\n a = $f716e3e58d6e8629$var$Yb(a);\n return null === a ? null : a.stateNode;\n },\n findFiberByHostInstance: $f716e3e58d6e8629$var$sl.findFiberByHostInstance || $f716e3e58d6e8629$var$il,\n findHostInstancesForRefresh: null,\n scheduleRefresh: null,\n scheduleRoot: null,\n setRefreshHandler: null,\n getCurrentFiber: null,\n reconcilerVersion: \"18.1.0-next-22edb9f77-20220426\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n var $f716e3e58d6e8629$var$ul = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (!$f716e3e58d6e8629$var$ul.isDisabled && $f716e3e58d6e8629$var$ul.supportsFiber) try {\n $f716e3e58d6e8629$var$jc = $f716e3e58d6e8629$var$ul.inject($f716e3e58d6e8629$var$tl), $f716e3e58d6e8629$var$kc = $f716e3e58d6e8629$var$ul;\n } catch (a) {}\n}\n$f716e3e58d6e8629$export$ae55be85d98224ed = $f716e3e58d6e8629$var$rl;\n$f716e3e58d6e8629$export$d39a5bbd09211389 = function(a, b) {\n var c = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (!$f716e3e58d6e8629$var$ml(b)) throw Error($f716e3e58d6e8629$var$p(200));\n return $f716e3e58d6e8629$var$bl(a, b, null, c);\n};\n$f716e3e58d6e8629$export$882461b6382ed46c = function(a, b) {\n if (!$f716e3e58d6e8629$var$ml(a)) throw Error($f716e3e58d6e8629$var$p(299));\n var c = !1, d = \"\", e = $f716e3e58d6e8629$var$jl;\n null !== b && void 0 !== b && (!0 === b.unstable_strictMode && (c = !0), void 0 !== b.identifierPrefix && (d = b.identifierPrefix), void 0 !== b.onRecoverableError && (e = b.onRecoverableError));\n b = $f716e3e58d6e8629$var$al(a, 1, !1, null, null, c, !1, d, e);\n a[$f716e3e58d6e8629$var$tf] = b.current;\n $f716e3e58d6e8629$var$rf(8 === a.nodeType ? a.parentNode : a);\n return new $f716e3e58d6e8629$var$kl(b);\n};\n$f716e3e58d6e8629$export$466bfc07425424d5 = function(a) {\n if (null == a) return null;\n if (1 === a.nodeType) return a;\n var b = a._reactInternals;\n if (void 0 === b) {\n if (\"function\" === typeof a.render) throw Error($f716e3e58d6e8629$var$p(188));\n a = Object.keys(a).join(\",\");\n throw Error($f716e3e58d6e8629$var$p(268, a));\n }\n a = $f716e3e58d6e8629$var$Yb(b);\n a = null === a ? null : a.stateNode;\n return a;\n};\n$f716e3e58d6e8629$export$cd75ccfd720a3cd4 = function(a) {\n return $f716e3e58d6e8629$var$Qk(a);\n};\n$f716e3e58d6e8629$export$fa8d919ba61d84db = function(a, b, c) {\n if (!$f716e3e58d6e8629$var$nl(b)) throw Error($f716e3e58d6e8629$var$p(200));\n return $f716e3e58d6e8629$var$ql(null, a, b, !0, c);\n};\n$f716e3e58d6e8629$export$757ceba2d55c277e = function(a, b, c) {\n if (!$f716e3e58d6e8629$var$ml(a)) throw Error($f716e3e58d6e8629$var$p(405));\n var d = null != c && c.hydratedSources || null, e = !1, f = \"\", g = $f716e3e58d6e8629$var$jl;\n null !== c && void 0 !== c && (!0 === c.unstable_strictMode && (e = !0), void 0 !== c.identifierPrefix && (f = c.identifierPrefix), void 0 !== c.onRecoverableError && (g = c.onRecoverableError));\n b = $f716e3e58d6e8629$var$dl(b, null, a, 1, null != c ? c : null, e, !1, f, g);\n a[$f716e3e58d6e8629$var$tf] = b.current;\n $f716e3e58d6e8629$var$rf(a);\n if (d) for(a = 0; a < d.length; a++)c = d[a], e = c._getVersion, e = e(c._source), null == b.mutableSourceEagerHydrationData ? b.mutableSourceEagerHydrationData = [\n c,\n e\n ] : b.mutableSourceEagerHydrationData.push(c, e);\n return new $f716e3e58d6e8629$var$ll(b);\n};\n$f716e3e58d6e8629$export$b3890eb0ae9dca99 = function(a, b, c) {\n if (!$f716e3e58d6e8629$var$nl(b)) throw Error($f716e3e58d6e8629$var$p(200));\n return $f716e3e58d6e8629$var$ql(null, a, b, !1, c);\n};\n$f716e3e58d6e8629$export$502457920280e6be = function(a) {\n if (!$f716e3e58d6e8629$var$nl(a)) throw Error($f716e3e58d6e8629$var$p(40));\n return a._reactRootContainer ? ($f716e3e58d6e8629$var$Qk(function() {\n $f716e3e58d6e8629$var$ql(null, null, a, !1, function() {\n a._reactRootContainer = null;\n a[$f716e3e58d6e8629$var$tf] = null;\n });\n }), !0) : !1;\n};\n$f716e3e58d6e8629$export$c78a37762a8d58e1 = $f716e3e58d6e8629$var$Pk;\n$f716e3e58d6e8629$export$dc54d992c10e8a18 = function(a, b, c, d) {\n if (!$f716e3e58d6e8629$var$nl(c)) throw Error($f716e3e58d6e8629$var$p(200));\n if (null == a || void 0 === a._reactInternals) throw Error($f716e3e58d6e8629$var$p(38));\n return $f716e3e58d6e8629$var$ql(a, b, c, !1, d);\n};\n$f716e3e58d6e8629$export$83d89fbfd8236492 = \"18.1.0-next-22edb9f77-20220426\";\n\n});\nparcelRegister(\"c2cCr\", function(module, exports) {\n\"use strict\";\n\nmodule.exports = (parcelRequire(\"jA2H2\"));\n\n});\nparcelRegister(\"jA2H2\", function(module, exports) {\n\n$parcel$export(module.exports, \"unstable_now\", function () { return $e41377ef566186ed$export$c4744153514ff05d; }, function (v) { return $e41377ef566186ed$export$c4744153514ff05d = v; });\n$parcel$export(module.exports, \"unstable_IdlePriority\", function () { return $e41377ef566186ed$export$3e506c1ccc9cc1a7; }, function (v) { return $e41377ef566186ed$export$3e506c1ccc9cc1a7 = v; });\n$parcel$export(module.exports, \"unstable_ImmediatePriority\", function () { return $e41377ef566186ed$export$e26fe2ed2fa76875; }, function (v) { return $e41377ef566186ed$export$e26fe2ed2fa76875 = v; });\n$parcel$export(module.exports, \"unstable_LowPriority\", function () { return $e41377ef566186ed$export$502329bbf4b505b1; }, function (v) { return $e41377ef566186ed$export$502329bbf4b505b1 = v; });\n$parcel$export(module.exports, \"unstable_NormalPriority\", function () { return $e41377ef566186ed$export$6e3807111c4874c4; }, function (v) { return $e41377ef566186ed$export$6e3807111c4874c4 = v; });\n$parcel$export(module.exports, \"unstable_Profiling\", function () { return $e41377ef566186ed$export$c27134553091fb3a; }, function (v) { return $e41377ef566186ed$export$c27134553091fb3a = v; });\n$parcel$export(module.exports, \"unstable_UserBlockingPriority\", function () { return $e41377ef566186ed$export$33ee1acdc04fd2a2; }, function (v) { return $e41377ef566186ed$export$33ee1acdc04fd2a2 = v; });\n$parcel$export(module.exports, \"unstable_cancelCallback\", function () { return $e41377ef566186ed$export$b00a404bbd5edef2; }, function (v) { return $e41377ef566186ed$export$b00a404bbd5edef2 = v; });\n$parcel$export(module.exports, \"unstable_continueExecution\", function () { return $e41377ef566186ed$export$8352ce38b91d0c62; }, function (v) { return $e41377ef566186ed$export$8352ce38b91d0c62 = v; });\n$parcel$export(module.exports, \"unstable_forceFrameRate\", function () { return $e41377ef566186ed$export$d66a1c1c77bd778b; }, function (v) { return $e41377ef566186ed$export$d66a1c1c77bd778b = v; });\n$parcel$export(module.exports, \"unstable_getCurrentPriorityLevel\", function () { return $e41377ef566186ed$export$d3dfb8e4810cb555; }, function (v) { return $e41377ef566186ed$export$d3dfb8e4810cb555 = v; });\n$parcel$export(module.exports, \"unstable_getFirstCallbackNode\", function () { return $e41377ef566186ed$export$839f9183b0465a69; }, function (v) { return $e41377ef566186ed$export$839f9183b0465a69 = v; });\n$parcel$export(module.exports, \"unstable_next\", function () { return $e41377ef566186ed$export$72fdf0e06517287b; }, function (v) { return $e41377ef566186ed$export$72fdf0e06517287b = v; });\n$parcel$export(module.exports, \"unstable_pauseExecution\", function () { return $e41377ef566186ed$export$4b844e58a3e414b4; }, function (v) { return $e41377ef566186ed$export$4b844e58a3e414b4 = v; });\n$parcel$export(module.exports, \"unstable_requestPaint\", function () { return $e41377ef566186ed$export$816d2913ae6b83b1; }, function (v) { return $e41377ef566186ed$export$816d2913ae6b83b1 = v; });\n$parcel$export(module.exports, \"unstable_runWithPriority\", function () { return $e41377ef566186ed$export$61bcfe829111a1d0; }, function (v) { return $e41377ef566186ed$export$61bcfe829111a1d0 = v; });\n$parcel$export(module.exports, \"unstable_scheduleCallback\", function () { return $e41377ef566186ed$export$7ee8c9beb337bc3f; }, function (v) { return $e41377ef566186ed$export$7ee8c9beb337bc3f = v; });\n$parcel$export(module.exports, \"unstable_shouldYield\", function () { return $e41377ef566186ed$export$b5836b71941fa3ed; }, function (v) { return $e41377ef566186ed$export$b5836b71941fa3ed = v; });\n$parcel$export(module.exports, \"unstable_wrapCallback\", function () { return $e41377ef566186ed$export$cf845f2c119da08a; }, function (v) { return $e41377ef566186ed$export$cf845f2c119da08a = v; });\n/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */ var $e41377ef566186ed$export$c4744153514ff05d;\nvar $e41377ef566186ed$export$3e506c1ccc9cc1a7;\nvar $e41377ef566186ed$export$e26fe2ed2fa76875;\nvar $e41377ef566186ed$export$502329bbf4b505b1;\nvar $e41377ef566186ed$export$6e3807111c4874c4;\nvar $e41377ef566186ed$export$c27134553091fb3a;\nvar $e41377ef566186ed$export$33ee1acdc04fd2a2;\nvar $e41377ef566186ed$export$b00a404bbd5edef2;\nvar $e41377ef566186ed$export$8352ce38b91d0c62;\nvar $e41377ef566186ed$export$d66a1c1c77bd778b;\nvar $e41377ef566186ed$export$d3dfb8e4810cb555;\nvar $e41377ef566186ed$export$839f9183b0465a69;\nvar $e41377ef566186ed$export$72fdf0e06517287b;\nvar $e41377ef566186ed$export$4b844e58a3e414b4;\nvar $e41377ef566186ed$export$816d2913ae6b83b1;\nvar $e41377ef566186ed$export$61bcfe829111a1d0;\nvar $e41377ef566186ed$export$7ee8c9beb337bc3f;\nvar $e41377ef566186ed$export$b5836b71941fa3ed;\nvar $e41377ef566186ed$export$cf845f2c119da08a;\n\"use strict\";\nfunction $e41377ef566186ed$var$f(a, b) {\n var c = a.length;\n a.push(b);\n a: for(; 0 < c;){\n var d = c - 1 >>> 1, e = a[d];\n if (0 < $e41377ef566186ed$var$g(e, b)) a[d] = b, a[c] = e, c = d;\n else break a;\n }\n}\nfunction $e41377ef566186ed$var$h(a) {\n return 0 === a.length ? null : a[0];\n}\nfunction $e41377ef566186ed$var$k(a) {\n if (0 === a.length) return null;\n var b = a[0], c = a.pop();\n if (c !== b) {\n a[0] = c;\n a: for(var d = 0, e = a.length, w = e >>> 1; d < w;){\n var m = 2 * (d + 1) - 1, C = a[m], n = m + 1, x = a[n];\n if (0 > $e41377ef566186ed$var$g(C, c)) n < e && 0 > $e41377ef566186ed$var$g(x, C) ? (a[d] = x, a[n] = c, d = n) : (a[d] = C, a[m] = c, d = m);\n else if (n < e && 0 > $e41377ef566186ed$var$g(x, c)) a[d] = x, a[n] = c, d = n;\n else break a;\n }\n }\n return b;\n}\nfunction $e41377ef566186ed$var$g(a, b) {\n var c = a.sortIndex - b.sortIndex;\n return 0 !== c ? c : a.id - b.id;\n}\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n var $e41377ef566186ed$var$l = performance;\n $e41377ef566186ed$export$c4744153514ff05d = function() {\n return $e41377ef566186ed$var$l.now();\n };\n} else {\n var $e41377ef566186ed$var$p = Date, $e41377ef566186ed$var$q = $e41377ef566186ed$var$p.now();\n $e41377ef566186ed$export$c4744153514ff05d = function() {\n return $e41377ef566186ed$var$p.now() - $e41377ef566186ed$var$q;\n };\n}\nvar $e41377ef566186ed$var$r = [], $e41377ef566186ed$var$t = [], $e41377ef566186ed$var$u = 1, $e41377ef566186ed$var$v = null, $e41377ef566186ed$var$y = 3, $e41377ef566186ed$var$z = !1, $e41377ef566186ed$var$A = !1, $e41377ef566186ed$var$B = !1, $e41377ef566186ed$var$D = \"function\" === typeof setTimeout ? setTimeout : null, $e41377ef566186ed$var$E = \"function\" === typeof clearTimeout ? clearTimeout : null, $e41377ef566186ed$var$F = \"undefined\" !== typeof setImmediate ? setImmediate : null;\n\"undefined\" !== typeof navigator && void 0 !== navigator.scheduling && void 0 !== navigator.scheduling.isInputPending && navigator.scheduling.isInputPending.bind(navigator.scheduling);\nfunction $e41377ef566186ed$var$G(a) {\n for(var b = $e41377ef566186ed$var$h($e41377ef566186ed$var$t); null !== b;){\n if (null === b.callback) $e41377ef566186ed$var$k($e41377ef566186ed$var$t);\n else if (b.startTime <= a) $e41377ef566186ed$var$k($e41377ef566186ed$var$t), b.sortIndex = b.expirationTime, $e41377ef566186ed$var$f($e41377ef566186ed$var$r, b);\n else break;\n b = $e41377ef566186ed$var$h($e41377ef566186ed$var$t);\n }\n}\nfunction $e41377ef566186ed$var$H(a) {\n $e41377ef566186ed$var$B = !1;\n $e41377ef566186ed$var$G(a);\n if (!$e41377ef566186ed$var$A) {\n if (null !== $e41377ef566186ed$var$h($e41377ef566186ed$var$r)) $e41377ef566186ed$var$A = !0, $e41377ef566186ed$var$I($e41377ef566186ed$var$J);\n else {\n var b = $e41377ef566186ed$var$h($e41377ef566186ed$var$t);\n null !== b && $e41377ef566186ed$var$K($e41377ef566186ed$var$H, b.startTime - a);\n }\n }\n}\nfunction $e41377ef566186ed$var$J(a, b) {\n $e41377ef566186ed$var$A = !1;\n $e41377ef566186ed$var$B && ($e41377ef566186ed$var$B = !1, $e41377ef566186ed$var$E($e41377ef566186ed$var$L), $e41377ef566186ed$var$L = -1);\n $e41377ef566186ed$var$z = !0;\n var c = $e41377ef566186ed$var$y;\n try {\n $e41377ef566186ed$var$G(b);\n for($e41377ef566186ed$var$v = $e41377ef566186ed$var$h($e41377ef566186ed$var$r); null !== $e41377ef566186ed$var$v && (!($e41377ef566186ed$var$v.expirationTime > b) || a && !$e41377ef566186ed$var$M());){\n var d = $e41377ef566186ed$var$v.callback;\n if (\"function\" === typeof d) {\n $e41377ef566186ed$var$v.callback = null;\n $e41377ef566186ed$var$y = $e41377ef566186ed$var$v.priorityLevel;\n var e = d($e41377ef566186ed$var$v.expirationTime <= b);\n b = $e41377ef566186ed$export$c4744153514ff05d();\n \"function\" === typeof e ? $e41377ef566186ed$var$v.callback = e : $e41377ef566186ed$var$v === $e41377ef566186ed$var$h($e41377ef566186ed$var$r) && $e41377ef566186ed$var$k($e41377ef566186ed$var$r);\n $e41377ef566186ed$var$G(b);\n } else $e41377ef566186ed$var$k($e41377ef566186ed$var$r);\n $e41377ef566186ed$var$v = $e41377ef566186ed$var$h($e41377ef566186ed$var$r);\n }\n if (null !== $e41377ef566186ed$var$v) var w = !0;\n else {\n var m = $e41377ef566186ed$var$h($e41377ef566186ed$var$t);\n null !== m && $e41377ef566186ed$var$K($e41377ef566186ed$var$H, m.startTime - b);\n w = !1;\n }\n return w;\n } finally{\n $e41377ef566186ed$var$v = null, $e41377ef566186ed$var$y = c, $e41377ef566186ed$var$z = !1;\n }\n}\nvar $e41377ef566186ed$var$N = !1, $e41377ef566186ed$var$O = null, $e41377ef566186ed$var$L = -1, $e41377ef566186ed$var$P = 5, $e41377ef566186ed$var$Q = -1;\nfunction $e41377ef566186ed$var$M() {\n return $e41377ef566186ed$export$c4744153514ff05d() - $e41377ef566186ed$var$Q < $e41377ef566186ed$var$P ? !1 : !0;\n}\nfunction $e41377ef566186ed$var$R() {\n if (null !== $e41377ef566186ed$var$O) {\n var a = $e41377ef566186ed$export$c4744153514ff05d();\n $e41377ef566186ed$var$Q = a;\n var b = !0;\n try {\n b = $e41377ef566186ed$var$O(!0, a);\n } finally{\n b ? $e41377ef566186ed$var$S() : ($e41377ef566186ed$var$N = !1, $e41377ef566186ed$var$O = null);\n }\n } else $e41377ef566186ed$var$N = !1;\n}\nvar $e41377ef566186ed$var$S;\nif (\"function\" === typeof $e41377ef566186ed$var$F) $e41377ef566186ed$var$S = function() {\n $e41377ef566186ed$var$F($e41377ef566186ed$var$R);\n};\nelse if (\"undefined\" !== typeof MessageChannel) {\n var $e41377ef566186ed$var$T = new MessageChannel, $e41377ef566186ed$var$U = $e41377ef566186ed$var$T.port2;\n $e41377ef566186ed$var$T.port1.onmessage = $e41377ef566186ed$var$R;\n $e41377ef566186ed$var$S = function() {\n $e41377ef566186ed$var$U.postMessage(null);\n };\n} else $e41377ef566186ed$var$S = function() {\n $e41377ef566186ed$var$D($e41377ef566186ed$var$R, 0);\n};\nfunction $e41377ef566186ed$var$I(a) {\n $e41377ef566186ed$var$O = a;\n $e41377ef566186ed$var$N || ($e41377ef566186ed$var$N = !0, $e41377ef566186ed$var$S());\n}\nfunction $e41377ef566186ed$var$K(a, b) {\n $e41377ef566186ed$var$L = $e41377ef566186ed$var$D(function() {\n a($e41377ef566186ed$export$c4744153514ff05d());\n }, b);\n}\n$e41377ef566186ed$export$3e506c1ccc9cc1a7 = 5;\n$e41377ef566186ed$export$e26fe2ed2fa76875 = 1;\n$e41377ef566186ed$export$502329bbf4b505b1 = 4;\n$e41377ef566186ed$export$6e3807111c4874c4 = 3;\n$e41377ef566186ed$export$c27134553091fb3a = null;\n$e41377ef566186ed$export$33ee1acdc04fd2a2 = 2;\n$e41377ef566186ed$export$b00a404bbd5edef2 = function(a) {\n a.callback = null;\n};\n$e41377ef566186ed$export$8352ce38b91d0c62 = function() {\n $e41377ef566186ed$var$A || $e41377ef566186ed$var$z || ($e41377ef566186ed$var$A = !0, $e41377ef566186ed$var$I($e41377ef566186ed$var$J));\n};\n$e41377ef566186ed$export$d66a1c1c77bd778b = function(a) {\n 0 > a || 125 < a ? console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\") : $e41377ef566186ed$var$P = 0 < a ? Math.floor(1E3 / a) : 5;\n};\n$e41377ef566186ed$export$d3dfb8e4810cb555 = function() {\n return $e41377ef566186ed$var$y;\n};\n$e41377ef566186ed$export$839f9183b0465a69 = function() {\n return $e41377ef566186ed$var$h($e41377ef566186ed$var$r);\n};\n$e41377ef566186ed$export$72fdf0e06517287b = function(a) {\n switch($e41377ef566186ed$var$y){\n case 1:\n case 2:\n case 3:\n var b = 3;\n break;\n default:\n b = $e41377ef566186ed$var$y;\n }\n var c = $e41377ef566186ed$var$y;\n $e41377ef566186ed$var$y = b;\n try {\n return a();\n } finally{\n $e41377ef566186ed$var$y = c;\n }\n};\n$e41377ef566186ed$export$4b844e58a3e414b4 = function() {};\n$e41377ef566186ed$export$816d2913ae6b83b1 = function() {};\n$e41377ef566186ed$export$61bcfe829111a1d0 = function(a, b) {\n switch(a){\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n default:\n a = 3;\n }\n var c = $e41377ef566186ed$var$y;\n $e41377ef566186ed$var$y = a;\n try {\n return b();\n } finally{\n $e41377ef566186ed$var$y = c;\n }\n};\n$e41377ef566186ed$export$7ee8c9beb337bc3f = function(a, b, c) {\n var d = $e41377ef566186ed$export$c4744153514ff05d();\n \"object\" === typeof c && null !== c ? (c = c.delay, c = \"number\" === typeof c && 0 < c ? d + c : d) : c = d;\n switch(a){\n case 1:\n var e = -1;\n break;\n case 2:\n e = 250;\n break;\n case 5:\n e = 1073741823;\n break;\n case 4:\n e = 1E4;\n break;\n default:\n e = 5E3;\n }\n e = c + e;\n a = {\n id: $e41377ef566186ed$var$u++,\n callback: b,\n priorityLevel: a,\n startTime: c,\n expirationTime: e,\n sortIndex: -1\n };\n c > d ? (a.sortIndex = c, $e41377ef566186ed$var$f($e41377ef566186ed$var$t, a), null === $e41377ef566186ed$var$h($e41377ef566186ed$var$r) && a === $e41377ef566186ed$var$h($e41377ef566186ed$var$t) && ($e41377ef566186ed$var$B ? ($e41377ef566186ed$var$E($e41377ef566186ed$var$L), $e41377ef566186ed$var$L = -1) : $e41377ef566186ed$var$B = !0, $e41377ef566186ed$var$K($e41377ef566186ed$var$H, c - d))) : (a.sortIndex = e, $e41377ef566186ed$var$f($e41377ef566186ed$var$r, a), $e41377ef566186ed$var$A || $e41377ef566186ed$var$z || ($e41377ef566186ed$var$A = !0, $e41377ef566186ed$var$I($e41377ef566186ed$var$J)));\n return a;\n};\n$e41377ef566186ed$export$b5836b71941fa3ed = $e41377ef566186ed$var$M;\n$e41377ef566186ed$export$cf845f2c119da08a = function(a) {\n var b = $e41377ef566186ed$var$y;\n return function() {\n var c = $e41377ef566186ed$var$y;\n $e41377ef566186ed$var$y = b;\n try {\n return a.apply(this, arguments);\n } finally{\n $e41377ef566186ed$var$y = c;\n }\n };\n};\n\n});\n\n\n\n\nparcelRegister(\"dsvUQ\", function(module, exports) {\n$parcel$export(module.exports, \"__RouterContext\", function () { return (parcelRequire(\"dih0O\")).__RouterContext; });\n$parcel$export(module.exports, \"matchPath\", function () { return (parcelRequire(\"dih0O\")).matchPath; });\n$parcel$export(module.exports, \"Redirect\", function () { return (parcelRequire(\"dih0O\")).Redirect; });\n$parcel$export(module.exports, \"Route\", function () { return (parcelRequire(\"dih0O\")).Route; });\n$parcel$export(module.exports, \"Router\", function () { return (parcelRequire(\"dih0O\")).Router; });\n$parcel$export(module.exports, \"Switch\", function () { return (parcelRequire(\"dih0O\")).Switch; });\n$parcel$export(module.exports, \"useHistory\", function () { return (parcelRequire(\"dih0O\")).useHistory; });\n$parcel$export(module.exports, \"useLocation\", function () { return (parcelRequire(\"dih0O\")).useLocation; });\n$parcel$export(module.exports, \"useParams\", function () { return (parcelRequire(\"dih0O\")).useParams; });\n$parcel$export(module.exports, \"useRouteMatch\", function () { return (parcelRequire(\"dih0O\")).useRouteMatch; });\n\n$parcel$export(module.exports, \"BrowserRouter\", function () { return $9cc6a5b0b922b332$export$9ba4e89fdfa1fc54; });\n$parcel$export(module.exports, \"Link\", function () { return $9cc6a5b0b922b332$export$a6c7ac8248d6e38a; });\n$parcel$export(module.exports, \"NavLink\", function () { return $9cc6a5b0b922b332$export$b0d92dbee9b5b60d; });\n\nvar $dih0O = parcelRequire(\"dih0O\");\n\nvar $1hm3X = parcelRequire(\"1hm3X\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $lw2Im = parcelRequire(\"lw2Im\");\n\n\n\nvar $iBVPT = parcelRequire(\"iBVPT\");\n\nvar $fxhIv = parcelRequire(\"fxhIv\");\n\nvar $1ayQT = parcelRequire(\"1ayQT\");\n/**\n * The public API for a that uses HTML5 history.\n */ var $9cc6a5b0b922b332$export$9ba4e89fdfa1fc54 = /*#__PURE__*/ function(_React$Component) {\n (0, $1hm3X.default)(BrowserRouter, _React$Component);\n function BrowserRouter() {\n var _this;\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n _this = _React$Component.call.apply(_React$Component, [\n this\n ].concat(args)) || this;\n _this.history = (0, $lw2Im.createBrowserHistory)(_this.props);\n return _this;\n }\n var _proto = BrowserRouter.prototype;\n _proto.render = function render() {\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement((0, $dih0O.Router), {\n history: this.history,\n children: this.props.children\n });\n };\n return BrowserRouter;\n}((0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).Component);\n/**\n * The public API for a that uses window.location.hash.\n */ var $9cc6a5b0b922b332$export$7221d69dcfc8e36b = /*#__PURE__*/ function(_React$Component) {\n (0, $1hm3X.default)(HashRouter, _React$Component);\n function HashRouter() {\n var _this;\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n _this = _React$Component.call.apply(_React$Component, [\n this\n ].concat(args)) || this;\n _this.history = (0, $lw2Im.createHashHistory)(_this.props);\n return _this;\n }\n var _proto = HashRouter.prototype;\n _proto.render = function render() {\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement((0, $dih0O.Router), {\n history: this.history,\n children: this.props.children\n });\n };\n return HashRouter;\n}((0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).Component);\nvar $9cc6a5b0b922b332$var$resolveToLocation = function resolveToLocation(to, currentLocation) {\n return typeof to === \"function\" ? to(currentLocation) : to;\n};\nvar $9cc6a5b0b922b332$var$normalizeToLocation = function normalizeToLocation(to, currentLocation) {\n return typeof to === \"string\" ? (0, $lw2Im.createLocation)(to, null, null, currentLocation) : to;\n};\nvar $9cc6a5b0b922b332$var$forwardRefShim = function forwardRefShim(C) {\n return C;\n};\nvar $9cc6a5b0b922b332$var$forwardRef = (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).forwardRef;\nif (typeof $9cc6a5b0b922b332$var$forwardRef === \"undefined\") $9cc6a5b0b922b332$var$forwardRef = $9cc6a5b0b922b332$var$forwardRefShim;\nfunction $9cc6a5b0b922b332$var$isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nvar $9cc6a5b0b922b332$var$LinkAnchor = $9cc6a5b0b922b332$var$forwardRef(function(_ref, forwardedRef) {\n var innerRef = _ref.innerRef, navigate = _ref.navigate, _onClick = _ref.onClick, rest = (0, $fxhIv.default)(_ref, [\n \"innerRef\",\n \"navigate\",\n \"onClick\"\n ]);\n var target = rest.target;\n var props = (0, $iBVPT.default)({}, rest, {\n onClick: function onClick(event) {\n try {\n if (_onClick) _onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !$9cc6a5b0b922b332$var$isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n }); // React 15 compat\n if ($9cc6a5b0b922b332$var$forwardRefShim !== $9cc6a5b0b922b332$var$forwardRef) props.ref = forwardedRef || innerRef;\n else props.ref = innerRef;\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement(\"a\", props);\n});\n/**\n * The public API for rendering a history-aware .\n */ var $9cc6a5b0b922b332$export$a6c7ac8248d6e38a = $9cc6a5b0b922b332$var$forwardRef(function(_ref2, forwardedRef) {\n var _ref2$component = _ref2.component, component = _ref2$component === void 0 ? $9cc6a5b0b922b332$var$LinkAnchor : _ref2$component, replace = _ref2.replace, to = _ref2.to, innerRef = _ref2.innerRef, rest = (0, $fxhIv.default)(_ref2, [\n \"component\",\n \"replace\",\n \"to\",\n \"innerRef\"\n ]);\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement((0, $dih0O.__RouterContext).Consumer, null, function(context) {\n !context && (0, $1ayQT.default)(false);\n var history = context.history;\n var location = $9cc6a5b0b922b332$var$normalizeToLocation($9cc6a5b0b922b332$var$resolveToLocation(to, context.location), context.location);\n var href = location ? history.createHref(location) : \"\";\n var props = (0, $iBVPT.default)({}, rest, {\n href: href,\n navigate: function navigate() {\n var location = $9cc6a5b0b922b332$var$resolveToLocation(to, context.location);\n var method = replace ? history.replace : history.push;\n method(location);\n }\n }); // React 15 compat\n if ($9cc6a5b0b922b332$var$forwardRefShim !== $9cc6a5b0b922b332$var$forwardRef) props.ref = forwardedRef || innerRef;\n else props.innerRef = innerRef;\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement(component, props);\n });\n});\nvar $9cc6a5b0b922b332$var$toType, $9cc6a5b0b922b332$var$refType;\nvar $9cc6a5b0b922b332$var$forwardRefShim$1 = function forwardRefShim(C) {\n return C;\n};\nvar $9cc6a5b0b922b332$var$forwardRef$1 = (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).forwardRef;\nif (typeof $9cc6a5b0b922b332$var$forwardRef$1 === \"undefined\") $9cc6a5b0b922b332$var$forwardRef$1 = $9cc6a5b0b922b332$var$forwardRefShim$1;\nfunction $9cc6a5b0b922b332$var$joinClassnames() {\n for(var _len = arguments.length, classnames = new Array(_len), _key = 0; _key < _len; _key++)classnames[_key] = arguments[_key];\n return classnames.filter(function(i) {\n return i;\n }).join(\" \");\n}\n/**\n * A wrapper that knows if it's \"active\" or not.\n */ var $9cc6a5b0b922b332$export$b0d92dbee9b5b60d = $9cc6a5b0b922b332$var$forwardRef$1(function(_ref, forwardedRef) {\n var _ref$ariaCurrent = _ref[\"aria-current\"], ariaCurrent = _ref$ariaCurrent === void 0 ? \"page\" : _ref$ariaCurrent, _ref$activeClassName = _ref.activeClassName, activeClassName = _ref$activeClassName === void 0 ? \"active\" : _ref$activeClassName, activeStyle = _ref.activeStyle, classNameProp = _ref.className, exact = _ref.exact, isActiveProp = _ref.isActive, locationProp = _ref.location, strict = _ref.strict, styleProp = _ref.style, to = _ref.to, innerRef = _ref.innerRef, rest = (0, $fxhIv.default)(_ref, [\n \"aria-current\",\n \"activeClassName\",\n \"activeStyle\",\n \"className\",\n \"exact\",\n \"isActive\",\n \"location\",\n \"strict\",\n \"style\",\n \"to\",\n \"innerRef\"\n ]);\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement((0, $dih0O.__RouterContext).Consumer, null, function(context) {\n !context && (0, $1ayQT.default)(false);\n var currentLocation = locationProp || context.location;\n var toLocation = $9cc6a5b0b922b332$var$normalizeToLocation($9cc6a5b0b922b332$var$resolveToLocation(to, currentLocation), currentLocation);\n var path = toLocation.pathname; // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n var match = escapedPath ? (0, $dih0O.matchPath)(currentLocation.pathname, {\n path: escapedPath,\n exact: exact,\n strict: strict\n }) : null;\n var isActive = !!(isActiveProp ? isActiveProp(match, currentLocation) : match);\n var className = isActive ? $9cc6a5b0b922b332$var$joinClassnames(classNameProp, activeClassName) : classNameProp;\n var style = isActive ? (0, $iBVPT.default)({}, styleProp, {}, activeStyle) : styleProp;\n var props = (0, $iBVPT.default)({\n \"aria-current\": isActive && ariaCurrent || null,\n className: className,\n style: style,\n to: toLocation\n }, rest); // React 15 compat\n if ($9cc6a5b0b922b332$var$forwardRefShim$1 !== $9cc6a5b0b922b332$var$forwardRef$1) props.ref = forwardedRef || innerRef;\n else props.innerRef = innerRef;\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement($9cc6a5b0b922b332$export$a6c7ac8248d6e38a, props);\n });\n});\nvar $9cc6a5b0b922b332$var$ariaCurrentType;\n\n});\nparcelRegister(\"dih0O\", function(module, exports) {\n\n$parcel$export(module.exports, \"__RouterContext\", function () { return $9ada270afa9d29fb$export$63baa8ccbe60bb07; });\n$parcel$export(module.exports, \"Router\", function () { return $9ada270afa9d29fb$export$55185c17a0fcbe46; });\n$parcel$export(module.exports, \"Redirect\", function () { return $9ada270afa9d29fb$export$2d8d895a0a0f636e; });\n$parcel$export(module.exports, \"matchPath\", function () { return $9ada270afa9d29fb$export$81336c211d5ff295; });\n$parcel$export(module.exports, \"Route\", function () { return $9ada270afa9d29fb$export$e7b0ac011bb776c6; });\n$parcel$export(module.exports, \"Switch\", function () { return $9ada270afa9d29fb$export$b5d5cf8927ab7262; });\n$parcel$export(module.exports, \"useHistory\", function () { return $9ada270afa9d29fb$export$3420e1dc2c4a518c; });\n$parcel$export(module.exports, \"useLocation\", function () { return $9ada270afa9d29fb$export$45d76561a5302f2b; });\n$parcel$export(module.exports, \"useParams\", function () { return $9ada270afa9d29fb$export$99eaa27ddbbb95ef; });\n$parcel$export(module.exports, \"useRouteMatch\", function () { return $9ada270afa9d29fb$export$632be4bb944c1bc7; });\n\nvar $c6Dbg = parcelRequire(\"c6Dbg\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\nvar $lw2Im = parcelRequire(\"lw2Im\");\n\n\nvar $al2p2 = parcelRequire(\"al2p2\");\n\nvar $1ayQT = parcelRequire(\"1ayQT\");\n\nvar $iMVXs = parcelRequire(\"iMVXs\");\n\nvar $39sv4 = parcelRequire(\"39sv4\");\nparcelRequire(\"3HbWh\");\n\nvar $5uOBs = parcelRequire(\"5uOBs\");\n\nvar $55VV8 = parcelRequire(\"55VV8\");\n// TODO: Replace with React.createContext once we can assume React 16+\nvar $9ada270afa9d29fb$var$createNamedContext = function createNamedContext(name) {\n var context = (0, $al2p2.default)();\n context.displayName = name;\n return context;\n};\nvar $9ada270afa9d29fb$export$63baa8ccbe60bb07 = /*#__PURE__*/ $9ada270afa9d29fb$var$createNamedContext(\"Router\");\n/**\n * The public API for putting history on context.\n */ var $9ada270afa9d29fb$export$55185c17a0fcbe46 = /*#__PURE__*/ function(_React$Component) {\n (0, $c6Dbg.default)(Router, _React$Component);\n Router.computeRootMatch = function computeRootMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n function Router(props) {\n var _this;\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n location: props.history.location\n }; // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n _this._isMounted = false;\n _this._pendingLocation = null;\n if (!props.staticContext) _this.unlisten = props.history.listen(function(location) {\n if (_this._isMounted) _this.setState({\n location: location\n });\n else _this._pendingLocation = location;\n });\n return _this;\n }\n var _proto = Router.prototype;\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n if (this._pendingLocation) this.setState({\n location: this._pendingLocation\n });\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n };\n _proto.render = function render() {\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement($9ada270afa9d29fb$export$63baa8ccbe60bb07.Provider, {\n children: this.props.children || null,\n value: {\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }\n });\n };\n return Router;\n}((0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).Component);\n/**\n * The public API for a that stores location in memory.\n */ var $9ada270afa9d29fb$export$ae46f04cfaffe093 = /*#__PURE__*/ function(_React$Component) {\n (0, $c6Dbg.default)(MemoryRouter, _React$Component);\n function MemoryRouter() {\n var _this;\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n _this = _React$Component.call.apply(_React$Component, [\n this\n ].concat(args)) || this;\n _this.history = (0, $lw2Im.createMemoryHistory)(_this.props);\n return _this;\n }\n var _proto = MemoryRouter.prototype;\n _proto.render = function render() {\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement($9ada270afa9d29fb$export$55185c17a0fcbe46, {\n history: this.history,\n children: this.props.children\n });\n };\n return MemoryRouter;\n}((0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).Component);\nvar $9ada270afa9d29fb$var$Lifecycle = /*#__PURE__*/ function(_React$Component) {\n (0, $c6Dbg.default)(Lifecycle, _React$Component);\n function Lifecycle() {\n return _React$Component.apply(this, arguments) || this;\n }\n var _proto = Lifecycle.prototype;\n _proto.componentDidMount = function componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n };\n _proto.render = function render() {\n return null;\n };\n return Lifecycle;\n}((0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).Component);\n/**\n * The public API for prompting the user before navigating away from a screen.\n */ function $9ada270afa9d29fb$export$83716a4aa1642908(_ref) {\n var message = _ref.message, _ref$when = _ref.when, when = _ref$when === void 0 ? true : _ref$when;\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement($9ada270afa9d29fb$export$63baa8ccbe60bb07.Consumer, null, function(context) {\n !context && (0, $1ayQT.default)(false);\n if (!when || context.staticContext) return null;\n var method = context.history.block;\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement($9ada270afa9d29fb$var$Lifecycle, {\n onMount: function onMount(self) {\n self.release = method(message);\n },\n onUpdate: function onUpdate(self, prevProps) {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n },\n onUnmount: function onUnmount(self) {\n self.release();\n },\n message: message\n });\n });\n}\nvar $9ada270afa9d29fb$var$messageType;\nvar $9ada270afa9d29fb$var$cache = {};\nvar $9ada270afa9d29fb$var$cacheLimit = 10000;\nvar $9ada270afa9d29fb$var$cacheCount = 0;\nfunction $9ada270afa9d29fb$var$compilePath(path) {\n if ($9ada270afa9d29fb$var$cache[path]) return $9ada270afa9d29fb$var$cache[path];\n var generator = (0, (/*@__PURE__*/$parcel$interopDefault($39sv4))).compile(path);\n if ($9ada270afa9d29fb$var$cacheCount < $9ada270afa9d29fb$var$cacheLimit) {\n $9ada270afa9d29fb$var$cache[path] = generator;\n $9ada270afa9d29fb$var$cacheCount++;\n }\n return generator;\n}\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */ function $9ada270afa9d29fb$export$82476f982757e71e(path, params) {\n if (path === void 0) path = \"/\";\n if (params === void 0) params = {};\n return path === \"/\" ? path : $9ada270afa9d29fb$var$compilePath(path)(params, {\n pretty: true\n });\n}\n/**\n * The public API for navigating programmatically with a component.\n */ function $9ada270afa9d29fb$export$2d8d895a0a0f636e(_ref) {\n var computedMatch = _ref.computedMatch, to = _ref.to, _ref$push = _ref.push, push = _ref$push === void 0 ? false : _ref$push;\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement($9ada270afa9d29fb$export$63baa8ccbe60bb07.Consumer, null, function(context) {\n !context && (0, $1ayQT.default)(false);\n var history = context.history, staticContext = context.staticContext;\n var method = push ? history.push : history.replace;\n var location = (0, $lw2Im.createLocation)(computedMatch ? typeof to === \"string\" ? $9ada270afa9d29fb$export$82476f982757e71e(to, computedMatch.params) : (0, $iMVXs.default)({}, to, {\n pathname: $9ada270afa9d29fb$export$82476f982757e71e(to.pathname, computedMatch.params)\n }) : to); // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement($9ada270afa9d29fb$var$Lifecycle, {\n onMount: function onMount() {\n method(location);\n },\n onUpdate: function onUpdate(self, prevProps) {\n var prevLocation = (0, $lw2Im.createLocation)(prevProps.to);\n if (!(0, $lw2Im.locationsAreEqual)(prevLocation, (0, $iMVXs.default)({}, location, {\n key: prevLocation.key\n }))) method(location);\n },\n to: to\n });\n });\n}\nvar $9ada270afa9d29fb$var$cache$1 = {};\nvar $9ada270afa9d29fb$var$cacheLimit$1 = 10000;\nvar $9ada270afa9d29fb$var$cacheCount$1 = 0;\nfunction $9ada270afa9d29fb$var$compilePath$1(path, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var pathCache = $9ada270afa9d29fb$var$cache$1[cacheKey] || ($9ada270afa9d29fb$var$cache$1[cacheKey] = {});\n if (pathCache[path]) return pathCache[path];\n var keys = [];\n var regexp = (0, (/*@__PURE__*/$parcel$interopDefault($39sv4)))(path, keys, options);\n var result = {\n regexp: regexp,\n keys: keys\n };\n if ($9ada270afa9d29fb$var$cacheCount$1 < $9ada270afa9d29fb$var$cacheLimit$1) {\n pathCache[path] = result;\n $9ada270afa9d29fb$var$cacheCount$1++;\n }\n return result;\n}\n/**\n * Public API for matching a URL pathname to a path.\n */ function $9ada270afa9d29fb$export$81336c211d5ff295(pathname, options) {\n if (options === void 0) options = {};\n if (typeof options === \"string\" || Array.isArray(options)) options = {\n path: options\n };\n var _options = options, path = _options.path, _options$exact = _options.exact, exact = _options$exact === void 0 ? false : _options$exact, _options$strict = _options.strict, strict = _options$strict === void 0 ? false : _options$strict, _options$sensitive = _options.sensitive, sensitive = _options$sensitive === void 0 ? false : _options$sensitive;\n var paths = [].concat(path);\n return paths.reduce(function(matched, path) {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n var _compilePath = $9ada270afa9d29fb$var$compilePath$1(path, {\n end: exact,\n strict: strict,\n sensitive: sensitive\n }), regexp = _compilePath.regexp, keys = _compilePath.keys;\n var match = regexp.exec(pathname);\n if (!match) return null;\n var url = match[0], values = match.slice(1);\n var isExact = pathname === url;\n if (exact && !isExact) return null;\n return {\n path: path,\n // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url,\n // the matched portion of the URL\n isExact: isExact,\n // whether or not we matched exactly\n params: keys.reduce(function(memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\nfunction $9ada270afa9d29fb$var$isEmptyChildren(children) {\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).Children.count(children) === 0;\n}\nfunction $9ada270afa9d29fb$var$evalChildrenDev(children, props, path) {\n var value = children(props);\n return value || null;\n}\n/**\n * The public API for matching a single path and rendering.\n */ var $9ada270afa9d29fb$export$e7b0ac011bb776c6 = /*#__PURE__*/ function(_React$Component) {\n (0, $c6Dbg.default)(Route, _React$Component);\n function Route() {\n return _React$Component.apply(this, arguments) || this;\n }\n var _proto = Route.prototype;\n _proto.render = function render() {\n var _this = this;\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement($9ada270afa9d29fb$export$63baa8ccbe60bb07.Consumer, null, function(context$1) {\n !context$1 && (0, $1ayQT.default)(false);\n var location = _this.props.location || context$1.location;\n var match = _this.props.computedMatch ? _this.props.computedMatch // already computed the match for us\n : _this.props.path ? $9ada270afa9d29fb$export$81336c211d5ff295(location.pathname, _this.props) : context$1.match;\n var props = (0, $iMVXs.default)({}, context$1, {\n location: location,\n match: match\n });\n var _this$props = _this.props, children = _this$props.children, component = _this$props.component, render = _this$props.render; // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) children = null;\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement($9ada270afa9d29fb$export$63baa8ccbe60bb07.Provider, {\n value: props\n }, props.match ? children ? typeof children === \"function\" ? children(props) : children : component ? (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement(component, props) : render ? render(props) : null : typeof children === \"function\" ? children(props) : null);\n });\n };\n return Route;\n}((0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).Component);\nfunction $9ada270afa9d29fb$var$addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\nfunction $9ada270afa9d29fb$var$addBasename(basename, location) {\n if (!basename) return location;\n return (0, $iMVXs.default)({}, location, {\n pathname: $9ada270afa9d29fb$var$addLeadingSlash(basename) + location.pathname\n });\n}\nfunction $9ada270afa9d29fb$var$stripBasename(basename, location) {\n if (!basename) return location;\n var base = $9ada270afa9d29fb$var$addLeadingSlash(basename);\n if (location.pathname.indexOf(base) !== 0) return location;\n return (0, $iMVXs.default)({}, location, {\n pathname: location.pathname.substr(base.length)\n });\n}\nfunction $9ada270afa9d29fb$var$createURL(location) {\n return typeof location === \"string\" ? location : (0, $lw2Im.createPath)(location);\n}\nfunction $9ada270afa9d29fb$var$staticHandler(methodName) {\n return function() {\n (0, $1ayQT.default)(false);\n };\n}\nfunction $9ada270afa9d29fb$var$noop() {}\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */ var $9ada270afa9d29fb$export$cac06da4d76d935b = /*#__PURE__*/ function(_React$Component) {\n (0, $c6Dbg.default)(StaticRouter, _React$Component);\n function StaticRouter() {\n var _this;\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n _this = _React$Component.call.apply(_React$Component, [\n this\n ].concat(args)) || this;\n _this.handlePush = function(location) {\n return _this.navigateTo(location, \"PUSH\");\n };\n _this.handleReplace = function(location) {\n return _this.navigateTo(location, \"REPLACE\");\n };\n _this.handleListen = function() {\n return $9ada270afa9d29fb$var$noop;\n };\n _this.handleBlock = function() {\n return $9ada270afa9d29fb$var$noop;\n };\n return _this;\n }\n var _proto = StaticRouter.prototype;\n _proto.navigateTo = function navigateTo(location, action) {\n var _this$props = this.props, _this$props$basename = _this$props.basename, basename = _this$props$basename === void 0 ? \"\" : _this$props$basename, _this$props$context = _this$props.context, context = _this$props$context === void 0 ? {} : _this$props$context;\n context.action = action;\n context.location = $9ada270afa9d29fb$var$addBasename(basename, (0, $lw2Im.createLocation)(location));\n context.url = $9ada270afa9d29fb$var$createURL(context.location);\n };\n _proto.render = function render() {\n var _this$props2 = this.props, _this$props2$basename = _this$props2.basename, basename = _this$props2$basename === void 0 ? \"\" : _this$props2$basename, _this$props2$context = _this$props2.context, context = _this$props2$context === void 0 ? {} : _this$props2$context, _this$props2$location = _this$props2.location, location = _this$props2$location === void 0 ? \"/\" : _this$props2$location, rest = (0, $5uOBs.default)(_this$props2, [\n \"basename\",\n \"context\",\n \"location\"\n ]);\n var history = {\n createHref: function createHref(path) {\n return $9ada270afa9d29fb$var$addLeadingSlash(basename + $9ada270afa9d29fb$var$createURL(path));\n },\n action: \"POP\",\n location: $9ada270afa9d29fb$var$stripBasename(basename, (0, $lw2Im.createLocation)(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: $9ada270afa9d29fb$var$staticHandler(\"go\"),\n goBack: $9ada270afa9d29fb$var$staticHandler(\"goBack\"),\n goForward: $9ada270afa9d29fb$var$staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement($9ada270afa9d29fb$export$55185c17a0fcbe46, (0, $iMVXs.default)({}, rest, {\n history: history,\n staticContext: context\n }));\n };\n return StaticRouter;\n}((0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).Component);\n/**\n * The public API for rendering the first that matches.\n */ var $9ada270afa9d29fb$export$b5d5cf8927ab7262 = /*#__PURE__*/ function(_React$Component) {\n (0, $c6Dbg.default)(Switch, _React$Component);\n function Switch() {\n return _React$Component.apply(this, arguments) || this;\n }\n var _proto = Switch.prototype;\n _proto.render = function render() {\n var _this = this;\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement($9ada270afa9d29fb$export$63baa8ccbe60bb07.Consumer, null, function(context) {\n !context && (0, $1ayQT.default)(false);\n var location = _this.props.location || context.location;\n var element, match; // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).Children.forEach(_this.props.children, function(child) {\n if (match == null && (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).isValidElement(child)) {\n element = child;\n var path = child.props.path || child.props.from;\n match = path ? $9ada270afa9d29fb$export$81336c211d5ff295(location.pathname, (0, $iMVXs.default)({}, child.props, {\n path: path\n })) : context.match;\n }\n });\n return match ? (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).cloneElement(element, {\n location: location,\n computedMatch: match\n }) : null;\n });\n };\n return Switch;\n}((0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).Component);\n/**\n * A public higher-order component to access the imperative API\n */ function $9ada270afa9d29fb$export$369b6b2b30582e8e(Component) {\n var displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n var C = function C(props) {\n var wrappedComponentRef = props.wrappedComponentRef, remainingProps = (0, $5uOBs.default)(props, [\n \"wrappedComponentRef\"\n ]);\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement($9ada270afa9d29fb$export$63baa8ccbe60bb07.Consumer, null, function(context) {\n !context && (0, $1ayQT.default)(false);\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement(Component, (0, $iMVXs.default)({}, remainingProps, context, {\n ref: wrappedComponentRef\n }));\n });\n };\n C.displayName = displayName;\n C.WrappedComponent = Component;\n return (0, (/*@__PURE__*/$parcel$interopDefault($55VV8)))(C, Component);\n}\nvar $9ada270afa9d29fb$var$useContext = (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).useContext;\nfunction $9ada270afa9d29fb$export$3420e1dc2c4a518c() {\n return $9ada270afa9d29fb$var$useContext($9ada270afa9d29fb$export$63baa8ccbe60bb07).history;\n}\nfunction $9ada270afa9d29fb$export$45d76561a5302f2b() {\n return $9ada270afa9d29fb$var$useContext($9ada270afa9d29fb$export$63baa8ccbe60bb07).location;\n}\nfunction $9ada270afa9d29fb$export$99eaa27ddbbb95ef() {\n var match = $9ada270afa9d29fb$var$useContext($9ada270afa9d29fb$export$63baa8ccbe60bb07).match;\n return match ? match.params : {};\n}\nfunction $9ada270afa9d29fb$export$632be4bb944c1bc7(path) {\n return path ? $9ada270afa9d29fb$export$81336c211d5ff295($9ada270afa9d29fb$export$45d76561a5302f2b().pathname, path) : $9ada270afa9d29fb$var$useContext($9ada270afa9d29fb$export$63baa8ccbe60bb07).match;\n}\nvar $9ada270afa9d29fb$var$global, $9ada270afa9d29fb$var$key, $9ada270afa9d29fb$var$buildNames, $9ada270afa9d29fb$var$initialBuildName, $9ada270afa9d29fb$var$secondaryBuildName;\n\n});\nparcelRegister(\"c6Dbg\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $8d04700507130a65$export$2e2bcd8739ae039; });\nfunction $8d04700507130a65$export$2e2bcd8739ae039(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\n});\n\nparcelRegister(\"lw2Im\", function(module, exports) {\n\n$parcel$export(module.exports, \"createPath\", function () { return $fa9eb12b8acccbff$export$fe53371bee54353d; });\n$parcel$export(module.exports, \"createLocation\", function () { return $fa9eb12b8acccbff$export$90c043f1c57770b8; });\n$parcel$export(module.exports, \"locationsAreEqual\", function () { return $fa9eb12b8acccbff$export$c3e8bb440bd55b18; });\n$parcel$export(module.exports, \"createBrowserHistory\", function () { return $fa9eb12b8acccbff$export$719fc203c4e16dee; });\n$parcel$export(module.exports, \"createHashHistory\", function () { return $fa9eb12b8acccbff$export$b71fdd3798280242; });\n$parcel$export(module.exports, \"createMemoryHistory\", function () { return $fa9eb12b8acccbff$export$2b76ad033c6e6d08; });\n\nvar $adToP = parcelRequire(\"adToP\");\n\nvar $1hgYx = parcelRequire(\"1hgYx\");\n\nvar $9yFSs = parcelRequire(\"9yFSs\");\n\n\nvar $1ayQT = parcelRequire(\"1ayQT\");\nfunction $fa9eb12b8acccbff$var$addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\nfunction $fa9eb12b8acccbff$var$stripLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path.substr(1) : path;\n}\nfunction $fa9eb12b8acccbff$var$hasBasename(path, prefix) {\n return new RegExp(\"^\" + prefix + \"(\\\\/|\\\\?|#|$)\", \"i\").test(path);\n}\nfunction $fa9eb12b8acccbff$var$stripBasename(path, prefix) {\n return $fa9eb12b8acccbff$var$hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction $fa9eb12b8acccbff$var$stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === \"/\" ? path.slice(0, -1) : path;\n}\nfunction $fa9eb12b8acccbff$export$8ccf933b0513f8d0(path) {\n var pathname = path || \"/\";\n var search = \"\";\n var hash = \"\";\n var hashIndex = pathname.indexOf(\"#\");\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n var searchIndex = pathname.indexOf(\"?\");\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n return {\n pathname: pathname,\n search: search === \"?\" ? \"\" : search,\n hash: hash === \"#\" ? \"\" : hash\n };\n}\nfunction $fa9eb12b8acccbff$export$fe53371bee54353d(location) {\n var pathname = location.pathname, search = location.search, hash = location.hash;\n var path = pathname || \"/\";\n if (search && search !== \"?\") path += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\") path += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return path;\n}\nfunction $fa9eb12b8acccbff$export$90c043f1c57770b8(path, state, key, currentLocation) {\n var location;\n if (typeof path === \"string\") {\n // Two-arg form: push(path, state)\n location = $fa9eb12b8acccbff$export$8ccf933b0513f8d0(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = (0, $adToP.default)({}, path);\n if (location.pathname === undefined) location.pathname = \"\";\n if (location.search) {\n if (location.search.charAt(0) !== \"?\") location.search = \"?\" + location.search;\n } else location.search = \"\";\n if (location.hash) {\n if (location.hash.charAt(0) !== \"#\") location.hash = \"#\" + location.hash;\n } else location.hash = \"\";\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + \"This is likely caused by an invalid percent-encoding.\");\n else throw e;\n }\n if (key) location.key = key;\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) location.pathname = currentLocation.pathname;\n else if (location.pathname.charAt(0) !== \"/\") location.pathname = (0, $1hgYx.default)(location.pathname, currentLocation.pathname);\n } else // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) location.pathname = \"/\";\n return location;\n}\nfunction $fa9eb12b8acccbff$export$c3e8bb440bd55b18(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && (0, $9yFSs.default)(a.state, b.state);\n}\nfunction $fa9eb12b8acccbff$var$createTransitionManager() {\n var prompt = null;\n function setPrompt(nextPrompt) {\n prompt = nextPrompt;\n return function() {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === \"function\" ? prompt(location, action) : prompt;\n if (typeof result === \"string\") {\n if (typeof getUserConfirmation === \"function\") getUserConfirmation(result, callback);\n else callback(true);\n } else // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n } else callback(true);\n }\n var listeners = [];\n function appendListener(fn) {\n var isActive = true;\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n listeners.push(listener);\n return function() {\n isActive = false;\n listeners = listeners.filter(function(item) {\n return item !== listener;\n });\n };\n }\n function notifyListeners() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n listeners.forEach(function(listener) {\n return listener.apply(void 0, args);\n });\n }\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\nvar $fa9eb12b8acccbff$var$canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction $fa9eb12b8acccbff$var$getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */ function $fa9eb12b8acccbff$var$supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf(\"Android 2.\") !== -1 || ua.indexOf(\"Android 4.0\") !== -1) && ua.indexOf(\"Mobile Safari\") !== -1 && ua.indexOf(\"Chrome\") === -1 && ua.indexOf(\"Windows Phone\") === -1) return false;\n return window.history && \"pushState\" in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */ function $fa9eb12b8acccbff$var$supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf(\"Trident\") === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */ function $fa9eb12b8acccbff$var$supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf(\"Firefox\") === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */ function $fa9eb12b8acccbff$var$isExtraneousPopstateEvent(event) {\n event.state === undefined && navigator.userAgent.indexOf(\"CriOS\");\n}\nvar $fa9eb12b8acccbff$var$PopStateEvent = \"popstate\";\nvar $fa9eb12b8acccbff$var$HashChangeEvent = \"hashchange\";\nfunction $fa9eb12b8acccbff$var$getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */ function $fa9eb12b8acccbff$export$719fc203c4e16dee(props) {\n if (props === void 0) props = {};\n !$fa9eb12b8acccbff$var$canUseDOM && (0, $1ayQT.default)(false);\n var globalHistory = window.history;\n var canUseHistory = $fa9eb12b8acccbff$var$supportsHistory();\n var needsHashChangeListener = !$fa9eb12b8acccbff$var$supportsPopStateOnHashChange();\n var _props = props, _props$forceRefresh = _props.forceRefresh, forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh, _props$getUserConfirm = _props.getUserConfirmation, getUserConfirmation = _props$getUserConfirm === void 0 ? $fa9eb12b8acccbff$var$getConfirmation : _props$getUserConfirm, _props$keyLength = _props.keyLength, keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? $fa9eb12b8acccbff$var$stripTrailingSlash($fa9eb12b8acccbff$var$addLeadingSlash(props.basename)) : \"\";\n function getDOMLocation(historyState) {\n var _ref = historyState || {}, key = _ref.key, state = _ref.state;\n var _window$location = window.location, pathname = _window$location.pathname, search = _window$location.search, hash = _window$location.hash;\n var path = pathname + search + hash;\n if (basename) path = $fa9eb12b8acccbff$var$stripBasename(path, basename);\n return $fa9eb12b8acccbff$export$90c043f1c57770b8(path, state, key);\n }\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n var transitionManager = $fa9eb12b8acccbff$var$createTransitionManager();\n function setState(nextState) {\n (0, $adToP.default)(history, nextState);\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if ($fa9eb12b8acccbff$var$isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n function handleHashChange() {\n handlePop(getDOMLocation($fa9eb12b8acccbff$var$getHistoryState()));\n }\n var forceNextPop = false;\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = \"POP\";\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function(ok) {\n if (ok) setState({\n action: action,\n location: location\n });\n else revertPop(location);\n });\n }\n }\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n var initialLocation = getDOMLocation($fa9eb12b8acccbff$var$getHistoryState());\n var allKeys = [\n initialLocation.key\n ]; // Public interface\n function createHref(location) {\n return basename + $fa9eb12b8acccbff$export$fe53371bee54353d(location);\n }\n function push(path, state) {\n var action = \"PUSH\";\n var location = $fa9eb12b8acccbff$export$90c043f1c57770b8(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function(ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key, state = location.state;\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n if (forceRefresh) window.location.href = href;\n else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else window.location.href = href;\n });\n }\n function replace(path, state) {\n var action = \"REPLACE\";\n var location = $fa9eb12b8acccbff$export$90c043f1c57770b8(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function(ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key, state = location.state;\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n if (forceRefresh) window.location.replace(href);\n else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else window.location.replace(href);\n });\n }\n function go(n) {\n globalHistory.go(n);\n }\n function goBack() {\n go(-1);\n }\n function goForward() {\n go(1);\n }\n var listenerCount = 0;\n function checkDOMListeners(delta) {\n listenerCount += delta;\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener($fa9eb12b8acccbff$var$PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener($fa9eb12b8acccbff$var$HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener($fa9eb12b8acccbff$var$PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener($fa9eb12b8acccbff$var$HashChangeEvent, handleHashChange);\n }\n }\n var isBlocked = false;\n function block(prompt) {\n if (prompt === void 0) prompt = false;\n var unblock = transitionManager.setPrompt(prompt);\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n return function() {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n return unblock();\n };\n }\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function() {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n var history = {\n length: globalHistory.length,\n action: \"POP\",\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\nvar $fa9eb12b8acccbff$var$HashChangeEvent$1 = \"hashchange\";\nvar $fa9eb12b8acccbff$var$HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === \"!\" ? path : \"!/\" + $fa9eb12b8acccbff$var$stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === \"!\" ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: $fa9eb12b8acccbff$var$stripLeadingSlash,\n decodePath: $fa9eb12b8acccbff$var$addLeadingSlash\n },\n slash: {\n encodePath: $fa9eb12b8acccbff$var$addLeadingSlash,\n decodePath: $fa9eb12b8acccbff$var$addLeadingSlash\n }\n};\nfunction $fa9eb12b8acccbff$var$getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf(\"#\");\n return hashIndex === -1 ? \"\" : href.substring(hashIndex + 1);\n}\nfunction $fa9eb12b8acccbff$var$pushHashPath(path) {\n window.location.hash = path;\n}\nfunction $fa9eb12b8acccbff$var$replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf(\"#\");\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + \"#\" + path);\n}\nfunction $fa9eb12b8acccbff$export$b71fdd3798280242(props) {\n if (props === void 0) props = {};\n !$fa9eb12b8acccbff$var$canUseDOM && (0, $1ayQT.default)(false);\n var globalHistory = window.history;\n var canGoWithoutReload = $fa9eb12b8acccbff$var$supportsGoWithoutReloadUsingHash();\n var _props = props, _props$getUserConfirm = _props.getUserConfirmation, getUserConfirmation = _props$getUserConfirm === void 0 ? $fa9eb12b8acccbff$var$getConfirmation : _props$getUserConfirm, _props$hashType = _props.hashType, hashType = _props$hashType === void 0 ? \"slash\" : _props$hashType;\n var basename = props.basename ? $fa9eb12b8acccbff$var$stripTrailingSlash($fa9eb12b8acccbff$var$addLeadingSlash(props.basename)) : \"\";\n var _HashPathCoders$hashT = $fa9eb12b8acccbff$var$HashPathCoders[hashType], encodePath = _HashPathCoders$hashT.encodePath, decodePath = _HashPathCoders$hashT.decodePath;\n function getDOMLocation() {\n var path = decodePath($fa9eb12b8acccbff$var$getHashPath());\n if (basename) path = $fa9eb12b8acccbff$var$stripBasename(path, basename);\n return $fa9eb12b8acccbff$export$90c043f1c57770b8(path);\n }\n var transitionManager = $fa9eb12b8acccbff$var$createTransitionManager();\n function setState(nextState) {\n (0, $adToP.default)(history, nextState);\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n var forceNextPop = false;\n var ignorePath = null;\n function handleHashChange() {\n var path = $fa9eb12b8acccbff$var$getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) // Ensure we always have a properly-encoded hash.\n $fa9eb12b8acccbff$var$replaceHashPath(encodedPath);\n else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && $fa9eb12b8acccbff$export$c3e8bb440bd55b18(prevLocation, location)) return; // A hashchange doesn't always == location change.\n if (ignorePath === $fa9eb12b8acccbff$export$fe53371bee54353d(location)) return; // Ignore this change; we already setState in push/replace.\n ignorePath = null;\n handlePop(location);\n }\n }\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = \"POP\";\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function(ok) {\n if (ok) setState({\n action: action,\n location: location\n });\n else revertPop(location);\n });\n }\n }\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n var toIndex = allPaths.lastIndexOf($fa9eb12b8acccbff$export$fe53371bee54353d(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf($fa9eb12b8acccbff$export$fe53371bee54353d(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n var path = $fa9eb12b8acccbff$var$getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) $fa9eb12b8acccbff$var$replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [\n $fa9eb12b8acccbff$export$fe53371bee54353d(initialLocation)\n ]; // Public interface\n function createHref(location) {\n return \"#\" + encodePath(basename + $fa9eb12b8acccbff$export$fe53371bee54353d(location));\n }\n function push(path, state) {\n var action = \"PUSH\";\n var location = $fa9eb12b8acccbff$export$90c043f1c57770b8(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function(ok) {\n if (!ok) return;\n var path = $fa9eb12b8acccbff$export$fe53371bee54353d(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = $fa9eb12b8acccbff$var$getHashPath() !== encodedPath;\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n $fa9eb12b8acccbff$var$pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf($fa9eb12b8acccbff$export$fe53371bee54353d(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else setState();\n });\n }\n function replace(path, state) {\n var action = \"REPLACE\";\n var location = $fa9eb12b8acccbff$export$90c043f1c57770b8(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function(ok) {\n if (!ok) return;\n var path = $fa9eb12b8acccbff$export$fe53371bee54353d(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = $fa9eb12b8acccbff$var$getHashPath() !== encodedPath;\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n $fa9eb12b8acccbff$var$replaceHashPath(encodedPath);\n }\n var prevIndex = allPaths.indexOf($fa9eb12b8acccbff$export$fe53371bee54353d(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n function go(n) {\n globalHistory.go(n);\n }\n function goBack() {\n go(-1);\n }\n function goForward() {\n go(1);\n }\n var listenerCount = 0;\n function checkDOMListeners(delta) {\n listenerCount += delta;\n if (listenerCount === 1 && delta === 1) window.addEventListener($fa9eb12b8acccbff$var$HashChangeEvent$1, handleHashChange);\n else if (listenerCount === 0) window.removeEventListener($fa9eb12b8acccbff$var$HashChangeEvent$1, handleHashChange);\n }\n var isBlocked = false;\n function block(prompt) {\n if (prompt === void 0) prompt = false;\n var unblock = transitionManager.setPrompt(prompt);\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n return function() {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n return unblock();\n };\n }\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function() {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n var history = {\n length: globalHistory.length,\n action: \"POP\",\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\nfunction $fa9eb12b8acccbff$var$clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */ function $fa9eb12b8acccbff$export$2b76ad033c6e6d08(props) {\n if (props === void 0) props = {};\n var _props = props, getUserConfirmation = _props.getUserConfirmation, _props$initialEntries = _props.initialEntries, initialEntries = _props$initialEntries === void 0 ? [\n \"/\"\n ] : _props$initialEntries, _props$initialIndex = _props.initialIndex, initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex, _props$keyLength = _props.keyLength, keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = $fa9eb12b8acccbff$var$createTransitionManager();\n function setState(nextState) {\n (0, $adToP.default)(history, nextState);\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n var index = $fa9eb12b8acccbff$var$clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function(entry) {\n return typeof entry === \"string\" ? $fa9eb12b8acccbff$export$90c043f1c57770b8(entry, undefined, createKey()) : $fa9eb12b8acccbff$export$90c043f1c57770b8(entry, undefined, entry.key || createKey());\n }); // Public interface\n var createHref = $fa9eb12b8acccbff$export$fe53371bee54353d;\n function push(path, state) {\n var action = \"PUSH\";\n var location = $fa9eb12b8acccbff$export$90c043f1c57770b8(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function(ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n if (nextEntries.length > nextIndex) nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n else nextEntries.push(location);\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n function replace(path, state) {\n var action = \"REPLACE\";\n var location = $fa9eb12b8acccbff$export$90c043f1c57770b8(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function(ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n function go(n) {\n var nextIndex = $fa9eb12b8acccbff$var$clamp(history.index + n, 0, history.entries.length - 1);\n var action = \"POP\";\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function(ok) {\n if (ok) setState({\n action: action,\n location: location,\n index: nextIndex\n });\n else // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n });\n }\n function goBack() {\n go(-1);\n }\n function goForward() {\n go(1);\n }\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n function block(prompt) {\n if (prompt === void 0) prompt = false;\n return transitionManager.setPrompt(prompt);\n }\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n var history = {\n length: entries.length,\n action: \"POP\",\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\n});\nparcelRegister(\"adToP\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $7716176f5e0cfda4$export$2e2bcd8739ae039; });\nfunction $7716176f5e0cfda4$export$2e2bcd8739ae039() {\n $7716176f5e0cfda4$export$2e2bcd8739ae039 = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n return target;\n };\n return $7716176f5e0cfda4$export$2e2bcd8739ae039.apply(this, arguments);\n}\n\n});\n\nparcelRegister(\"1hgYx\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $0ee48bf4caf578e1$export$2e2bcd8739ae039; });\nfunction $0ee48bf4caf578e1$var$isAbsolute(pathname) {\n return pathname.charAt(0) === \"/\";\n}\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction $0ee48bf4caf578e1$var$spliceOne(list, index) {\n for(var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)list[i] = list[k];\n list.pop();\n}\n// This implementation is based heavily on node's url.parse\nfunction $0ee48bf4caf578e1$var$resolvePathname(to) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n var toParts = to && to.split(\"/\") || [];\n var fromParts = from && from.split(\"/\") || [];\n var isToAbs = to && $0ee48bf4caf578e1$var$isAbsolute(to);\n var isFromAbs = from && $0ee48bf4caf578e1$var$isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n if (to && $0ee48bf4caf578e1$var$isAbsolute(to)) // to is absolute\n fromParts = toParts;\n else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n if (!fromParts.length) return \"/\";\n var hasTrailingSlash = void 0;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === \".\" || last === \"..\" || last === \"\";\n } else hasTrailingSlash = false;\n var up = 0;\n for(var i = fromParts.length; i >= 0; i--){\n var part = fromParts[i];\n if (part === \".\") $0ee48bf4caf578e1$var$spliceOne(fromParts, i);\n else if (part === \"..\") {\n $0ee48bf4caf578e1$var$spliceOne(fromParts, i);\n up++;\n } else if (up) {\n $0ee48bf4caf578e1$var$spliceOne(fromParts, i);\n up--;\n }\n }\n if (!mustEndAbs) for(; up--; up)fromParts.unshift(\"..\");\n if (mustEndAbs && fromParts[0] !== \"\" && (!fromParts[0] || !$0ee48bf4caf578e1$var$isAbsolute(fromParts[0]))) fromParts.unshift(\"\");\n var result = fromParts.join(\"/\");\n if (hasTrailingSlash && result.substr(-1) !== \"/\") result += \"/\";\n return result;\n}\nvar $0ee48bf4caf578e1$export$2e2bcd8739ae039 = $0ee48bf4caf578e1$var$resolvePathname;\n\n});\n\nparcelRegister(\"9yFSs\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6f57c5fa07461a12$export$2e2bcd8739ae039; });\nvar $6f57c5fa07461a12$var$_typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function(obj) {\n return typeof obj;\n} : function(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nfunction $6f57c5fa07461a12$var$valueEqual(a, b) {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (Array.isArray(a)) return Array.isArray(b) && a.length === b.length && a.every(function(item, index) {\n return $6f57c5fa07461a12$var$valueEqual(item, b[index]);\n });\n var aType = typeof a === \"undefined\" ? \"undefined\" : $6f57c5fa07461a12$var$_typeof(a);\n var bType = typeof b === \"undefined\" ? \"undefined\" : $6f57c5fa07461a12$var$_typeof(b);\n if (aType !== bType) return false;\n if (aType === \"object\") {\n var aValue = a.valueOf();\n var bValue = b.valueOf();\n if (aValue !== a || bValue !== b) return $6f57c5fa07461a12$var$valueEqual(aValue, bValue);\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n return aKeys.every(function(key) {\n return $6f57c5fa07461a12$var$valueEqual(a[key], b[key]);\n });\n }\n return false;\n}\nvar $6f57c5fa07461a12$export$2e2bcd8739ae039 = $6f57c5fa07461a12$var$valueEqual;\n\n});\n\nparcelRegister(\"1ayQT\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $0da1c288545eac50$export$2e2bcd8739ae039; });\nvar $0da1c288545eac50$var$isProduction = true;\nvar $0da1c288545eac50$var$prefix = \"Invariant failed\";\nfunction $0da1c288545eac50$var$invariant(condition, message) {\n if (condition) return;\n if ($0da1c288545eac50$var$isProduction) throw new Error($0da1c288545eac50$var$prefix);\n else throw new Error($0da1c288545eac50$var$prefix + \": \" + (message || \"\"));\n}\nvar $0da1c288545eac50$export$2e2bcd8739ae039 = $0da1c288545eac50$var$invariant;\n\n});\n\n\nparcelRegister(\"al2p2\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $786dbab2251ef9b7$export$2e2bcd8739ae039; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $atxqw = parcelRequire(\"atxqw\");\n\nvar $cd0Jr = parcelRequire(\"cd0Jr\");\n\nvar $c2cf2 = parcelRequire(\"c2cf2\");\n\nvar $786dbab2251ef9b7$var$MAX_SIGNED_31_BIT_INT = 1073741823;\nfunction $786dbab2251ef9b7$var$objectIs(x, y) {\n if (x === y) return x !== 0 || 1 / x === 1 / y;\n else return x !== x && y !== y;\n}\nfunction $786dbab2251ef9b7$var$createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function(h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function(handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\nfunction $786dbab2251ef9b7$var$onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\nfunction $786dbab2251ef9b7$var$createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n var contextProp = \"__create-react-context-\" + (0, (/*@__PURE__*/$parcel$interopDefault($c2cf2)))() + \"__\";\n var Provider = /*#__PURE__*/ function(_Component) {\n (0, (/*@__PURE__*/$parcel$interopDefault($atxqw)))(Provider, _Component);\n function Provider() {\n var _this;\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = $786dbab2251ef9b7$var$createEventEmitter(_this.props.value);\n return _this;\n }\n var _proto = Provider.prototype;\n _proto.getChildContext = function getChildContext() {\n var _ref;\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n if ($786dbab2251ef9b7$var$objectIs(oldValue, newValue)) changedBits = 0;\n else {\n changedBits = typeof calculateChangedBits === \"function\" ? calculateChangedBits(oldValue, newValue) : $786dbab2251ef9b7$var$MAX_SIGNED_31_BIT_INT;\n changedBits |= 0;\n if (changedBits !== 0) this.emitter.set(nextProps.value, changedBits);\n }\n }\n };\n _proto.render = function render() {\n return this.props.children;\n };\n return Provider;\n }((0, $70fFQ.Component));\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = (0, (/*@__PURE__*/$parcel$interopDefault($cd0Jr))).object.isRequired, _Provider$childContex);\n var Consumer = /*#__PURE__*/ function(_Component2) {\n (0, (/*@__PURE__*/$parcel$interopDefault($atxqw)))(Consumer, _Component2);\n function Consumer() {\n var _this2;\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n _this2.onUpdate = function(newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n if ((observedBits & changedBits) !== 0) _this2.setState({\n value: _this2.getValue()\n });\n };\n return _this2;\n }\n var _proto2 = Consumer.prototype;\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? $786dbab2251ef9b7$var$MAX_SIGNED_31_BIT_INT : observedBits;\n };\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) this.context[contextProp].on(this.onUpdate);\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? $786dbab2251ef9b7$var$MAX_SIGNED_31_BIT_INT : observedBits;\n };\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) this.context[contextProp].off(this.onUpdate);\n };\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) return this.context[contextProp].get();\n else return defaultValue;\n };\n _proto2.render = function render() {\n return $786dbab2251ef9b7$var$onlyChild(this.props.children)(this.state.value);\n };\n return Consumer;\n }((0, $70fFQ.Component));\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = (0, (/*@__PURE__*/$parcel$interopDefault($cd0Jr))).object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\nvar $786dbab2251ef9b7$var$index = (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createContext || $786dbab2251ef9b7$var$createReactContext;\nvar $786dbab2251ef9b7$export$2e2bcd8739ae039 = $786dbab2251ef9b7$var$index;\n\n});\nparcelRegister(\"atxqw\", function(module, exports) {\nfunction $7a068aae08366db9$var$_inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\nmodule.exports = $7a068aae08366db9$var$_inheritsLoose;\n\n});\n\nparcelRegister(\"cd0Jr\", function(module, exports) {\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */ var $8e37444847af19e8$var$ReactIs, $8e37444847af19e8$var$throwOnDirectAccess;\n\n// By explicitly using `prop-types` you are opting into new production behavior.\n// http://fb.me/prop-types-in-prod\nmodule.exports = (parcelRequire(\"eSKCJ\"))();\n\n});\nparcelRegister(\"eSKCJ\", function(module, exports) {\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */ \"use strict\";\n\nvar $kGFiO = parcelRequire(\"kGFiO\");\nfunction $ad5a4654dfeb0e94$var$emptyFunction() {}\nfunction $ad5a4654dfeb0e94$var$emptyFunctionWithReset() {}\n$ad5a4654dfeb0e94$var$emptyFunctionWithReset.resetWarningCache = $ad5a4654dfeb0e94$var$emptyFunction;\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === $kGFiO) // It is still safe when called from React.\n return;\n var err = new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");\n err.name = \"Invariant Violation\";\n throw err;\n }\n shim.isRequired = shim;\n function getShim() {\n return shim;\n }\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n checkPropTypes: $ad5a4654dfeb0e94$var$emptyFunctionWithReset,\n resetWarningCache: $ad5a4654dfeb0e94$var$emptyFunction\n };\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n};\n\n});\nparcelRegister(\"kGFiO\", function(module, exports) {\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */ \"use strict\";\nvar $f0f7c4b0d0b6e510$var$ReactPropTypesSecret = \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";\nmodule.exports = $f0f7c4b0d0b6e510$var$ReactPropTypesSecret;\n\n});\n\n\n\nparcelRegister(\"c2cf2\", function(module, exports) {\n// @flow\n\"use strict\";\nvar $8c2f2adeaf0764e0$var$key = \"__global_unique_id__\";\nmodule.exports = function() {\n return $parcel$global[$8c2f2adeaf0764e0$var$key] = ($parcel$global[$8c2f2adeaf0764e0$var$key] || 0) + 1;\n};\n\n});\n\n\nparcelRegister(\"iMVXs\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $dad9aaea2f3ec275$export$2e2bcd8739ae039; });\nfunction $dad9aaea2f3ec275$export$2e2bcd8739ae039() {\n $dad9aaea2f3ec275$export$2e2bcd8739ae039 = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n return target;\n };\n return $dad9aaea2f3ec275$export$2e2bcd8739ae039.apply(this, arguments);\n}\n\n});\n\nparcelRegister(\"39sv4\", function(module, exports) {\n\nvar $f8aTb = parcelRequire(\"f8aTb\");\n/**\n * Expose `pathToRegexp`.\n */ module.exports = $24b851e3008b290b$var$pathToRegexp;\nmodule.exports.parse = $24b851e3008b290b$var$parse;\nmodule.exports.compile = $24b851e3008b290b$var$compile;\nmodule.exports.tokensToFunction = $24b851e3008b290b$var$tokensToFunction;\nmodule.exports.tokensToRegExp = $24b851e3008b290b$var$tokensToRegExp;\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */ var $24b851e3008b290b$var$PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n \"(\\\\\\\\.)\",\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n \"([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))\"\n].join(\"|\"), \"g\");\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */ function $24b851e3008b290b$var$parse(str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = \"\";\n var defaultDelimiter = options && options.delimiter || \"/\";\n var res;\n while((res = $24b851e3008b290b$var$PATH_REGEXP.exec(str)) != null){\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue;\n }\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = \"\";\n }\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === \"+\" || modifier === \"*\";\n var optional = modifier === \"?\" || modifier === \"*\";\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n tokens.push({\n name: name || key++,\n prefix: prefix || \"\",\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? $24b851e3008b290b$var$escapeGroup(pattern) : asterisk ? \".*\" : \"[^\" + $24b851e3008b290b$var$escapeString(delimiter) + \"]+?\"\n });\n }\n // Match any characters still remaining.\n if (index < str.length) path += str.substr(index);\n // If the path exists, push it onto the end.\n if (path) tokens.push(path);\n return tokens;\n}\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */ function $24b851e3008b290b$var$compile(str, options) {\n return $24b851e3008b290b$var$tokensToFunction($24b851e3008b290b$var$parse(str, options));\n}\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */ function $24b851e3008b290b$var$encodeURIComponentPretty(str) {\n return encodeURI(str).replace(/[\\/?#]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */ function $24b851e3008b290b$var$encodeAsterisk(str) {\n return encodeURI(str).replace(/[?#]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */ function $24b851e3008b290b$var$tokensToFunction(tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n // Compile all the patterns before compilation.\n for(var i = 0; i < tokens.length; i++)if (typeof tokens[i] === \"object\") matches[i] = new RegExp(\"^(?:\" + tokens[i].pattern + \")$\");\n return function(obj, opts) {\n var path = \"\";\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? $24b851e3008b290b$var$encodeURIComponentPretty : encodeURIComponent;\n for(var i = 0; i < tokens.length; i++){\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data[token.name];\n var segment;\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) path += token.prefix;\n continue;\n } else throw new TypeError('Expected \"' + token.name + '\" to be defined');\n }\n if ($f8aTb(value)) {\n if (!token.repeat) throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + \"`\");\n if (value.length === 0) {\n if (token.optional) continue;\n else throw new TypeError('Expected \"' + token.name + '\" to not be empty');\n }\n for(var j = 0; j < value.length; j++){\n segment = encode(value[j]);\n if (!matches[i].test(segment)) throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + \"`\");\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n continue;\n }\n segment = token.asterisk ? $24b851e3008b290b$var$encodeAsterisk(value) : encode(value);\n if (!matches[i].test(segment)) throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"');\n path += token.prefix + segment;\n }\n return path;\n };\n}\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */ function $24b851e3008b290b$var$escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */ function $24b851e3008b290b$var$escapeGroup(group) {\n return group.replace(/([=!:$\\/()])/g, \"\\\\$1\");\n}\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */ function $24b851e3008b290b$var$attachKeys(re, keys) {\n re.keys = keys;\n return re;\n}\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */ function $24b851e3008b290b$var$flags(options) {\n return options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */ function $24b851e3008b290b$var$regexpToRegexp(path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n if (groups) for(var i = 0; i < groups.length; i++)keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n return $24b851e3008b290b$var$attachKeys(path, keys);\n}\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */ function $24b851e3008b290b$var$arrayToRegexp(path, keys, options) {\n var parts = [];\n for(var i = 0; i < path.length; i++)parts.push($24b851e3008b290b$var$pathToRegexp(path[i], keys, options).source);\n var regexp = new RegExp(\"(?:\" + parts.join(\"|\") + \")\", $24b851e3008b290b$var$flags(options));\n return $24b851e3008b290b$var$attachKeys(regexp, keys);\n}\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */ function $24b851e3008b290b$var$stringToRegexp(path, keys, options) {\n return $24b851e3008b290b$var$tokensToRegExp($24b851e3008b290b$var$parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */ function $24b851e3008b290b$var$tokensToRegExp(tokens, keys, options) {\n if (!$f8aTb(keys)) {\n options = /** @type {!Object} */ keys || options;\n keys = [];\n }\n options = options || {};\n var strict = options.strict;\n var end = options.end !== false;\n var route = \"\";\n // Iterate over the tokens and create our regexp string.\n for(var i = 0; i < tokens.length; i++){\n var token = tokens[i];\n if (typeof token === \"string\") route += $24b851e3008b290b$var$escapeString(token);\n else {\n var prefix = $24b851e3008b290b$var$escapeString(token.prefix);\n var capture = \"(?:\" + token.pattern + \")\";\n keys.push(token);\n if (token.repeat) capture += \"(?:\" + prefix + capture + \")*\";\n if (token.optional) {\n if (!token.partial) capture = \"(?:\" + prefix + \"(\" + capture + \"))?\";\n else capture = prefix + \"(\" + capture + \")?\";\n } else capture = prefix + \"(\" + capture + \")\";\n route += capture;\n }\n }\n var delimiter = $24b851e3008b290b$var$escapeString(options.delimiter || \"/\");\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + \"(?:\" + delimiter + \"(?=$))?\";\n if (end) route += \"$\";\n else // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? \"\" : \"(?=\" + delimiter + \"|$)\";\n return $24b851e3008b290b$var$attachKeys(new RegExp(\"^\" + route, $24b851e3008b290b$var$flags(options)), keys);\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */ function $24b851e3008b290b$var$pathToRegexp(path, keys, options) {\n if (!$f8aTb(keys)) {\n options = /** @type {!Object} */ keys || options;\n keys = [];\n }\n options = options || {};\n if (path instanceof RegExp) return $24b851e3008b290b$var$regexpToRegexp(path, /** @type {!Array} */ keys);\n if ($f8aTb(path)) return $24b851e3008b290b$var$arrayToRegexp(/** @type {!Array} */ path, /** @type {!Array} */ keys, options);\n return $24b851e3008b290b$var$stringToRegexp(/** @type {string} */ path, /** @type {!Array} */ keys, options);\n}\n\n});\nparcelRegister(\"f8aTb\", function(module, exports) {\nmodule.exports = Array.isArray || function(arr) {\n return Object.prototype.toString.call(arr) == \"[object Array]\";\n};\n\n});\n\n\nparcelRegister(\"3HbWh\", function(module, exports) {\n\"use strict\";\n\nmodule.exports = (parcelRequire(\"5U6Je\"));\n\n});\nparcelRegister(\"5U6Je\", function(module, exports) {\n/** @license React v16.8.6\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */ \"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: !0\n});\nvar $44c766e27e2c7c91$var$b = \"function\" === typeof Symbol && Symbol.for, $44c766e27e2c7c91$var$c = $44c766e27e2c7c91$var$b ? Symbol.for(\"react.element\") : 60103, $44c766e27e2c7c91$var$d = $44c766e27e2c7c91$var$b ? Symbol.for(\"react.portal\") : 60106, $44c766e27e2c7c91$var$e = $44c766e27e2c7c91$var$b ? Symbol.for(\"react.fragment\") : 60107, $44c766e27e2c7c91$var$f = $44c766e27e2c7c91$var$b ? Symbol.for(\"react.strict_mode\") : 60108, $44c766e27e2c7c91$var$g = $44c766e27e2c7c91$var$b ? Symbol.for(\"react.profiler\") : 60114, $44c766e27e2c7c91$var$h = $44c766e27e2c7c91$var$b ? Symbol.for(\"react.provider\") : 60109, $44c766e27e2c7c91$var$k = $44c766e27e2c7c91$var$b ? Symbol.for(\"react.context\") : 60110, $44c766e27e2c7c91$var$l = $44c766e27e2c7c91$var$b ? Symbol.for(\"react.async_mode\") : 60111, $44c766e27e2c7c91$var$m = $44c766e27e2c7c91$var$b ? Symbol.for(\"react.concurrent_mode\") : 60111, $44c766e27e2c7c91$var$n = $44c766e27e2c7c91$var$b ? Symbol.for(\"react.forward_ref\") : 60112, $44c766e27e2c7c91$var$p = $44c766e27e2c7c91$var$b ? Symbol.for(\"react.suspense\") : 60113, $44c766e27e2c7c91$var$q = $44c766e27e2c7c91$var$b ? Symbol.for(\"react.memo\") : 60115, $44c766e27e2c7c91$var$r = $44c766e27e2c7c91$var$b ? Symbol.for(\"react.lazy\") : 60116;\nfunction $44c766e27e2c7c91$var$t(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n switch(u){\n case $44c766e27e2c7c91$var$c:\n switch(a = a.type, a){\n case $44c766e27e2c7c91$var$l:\n case $44c766e27e2c7c91$var$m:\n case $44c766e27e2c7c91$var$e:\n case $44c766e27e2c7c91$var$g:\n case $44c766e27e2c7c91$var$f:\n case $44c766e27e2c7c91$var$p:\n return a;\n default:\n switch(a = a && a.$$typeof, a){\n case $44c766e27e2c7c91$var$k:\n case $44c766e27e2c7c91$var$n:\n case $44c766e27e2c7c91$var$h:\n return a;\n default:\n return u;\n }\n }\n case $44c766e27e2c7c91$var$r:\n case $44c766e27e2c7c91$var$q:\n case $44c766e27e2c7c91$var$d:\n return u;\n }\n }\n}\nfunction $44c766e27e2c7c91$var$v(a) {\n return $44c766e27e2c7c91$var$t(a) === $44c766e27e2c7c91$var$m;\n}\nmodule.exports.typeOf = $44c766e27e2c7c91$var$t;\nmodule.exports.AsyncMode = $44c766e27e2c7c91$var$l;\nmodule.exports.ConcurrentMode = $44c766e27e2c7c91$var$m;\nmodule.exports.ContextConsumer = $44c766e27e2c7c91$var$k;\nmodule.exports.ContextProvider = $44c766e27e2c7c91$var$h;\nmodule.exports.Element = $44c766e27e2c7c91$var$c;\nmodule.exports.ForwardRef = $44c766e27e2c7c91$var$n;\nmodule.exports.Fragment = $44c766e27e2c7c91$var$e;\nmodule.exports.Lazy = $44c766e27e2c7c91$var$r;\nmodule.exports.Memo = $44c766e27e2c7c91$var$q;\nmodule.exports.Portal = $44c766e27e2c7c91$var$d;\nmodule.exports.Profiler = $44c766e27e2c7c91$var$g;\nmodule.exports.StrictMode = $44c766e27e2c7c91$var$f;\nmodule.exports.Suspense = $44c766e27e2c7c91$var$p;\nmodule.exports.isValidElementType = function(a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === $44c766e27e2c7c91$var$e || a === $44c766e27e2c7c91$var$m || a === $44c766e27e2c7c91$var$g || a === $44c766e27e2c7c91$var$f || a === $44c766e27e2c7c91$var$p || \"object\" === typeof a && null !== a && (a.$$typeof === $44c766e27e2c7c91$var$r || a.$$typeof === $44c766e27e2c7c91$var$q || a.$$typeof === $44c766e27e2c7c91$var$h || a.$$typeof === $44c766e27e2c7c91$var$k || a.$$typeof === $44c766e27e2c7c91$var$n);\n};\nmodule.exports.isAsyncMode = function(a) {\n return $44c766e27e2c7c91$var$v(a) || $44c766e27e2c7c91$var$t(a) === $44c766e27e2c7c91$var$l;\n};\nmodule.exports.isConcurrentMode = $44c766e27e2c7c91$var$v;\nmodule.exports.isContextConsumer = function(a) {\n return $44c766e27e2c7c91$var$t(a) === $44c766e27e2c7c91$var$k;\n};\nmodule.exports.isContextProvider = function(a) {\n return $44c766e27e2c7c91$var$t(a) === $44c766e27e2c7c91$var$h;\n};\nmodule.exports.isElement = function(a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === $44c766e27e2c7c91$var$c;\n};\nmodule.exports.isForwardRef = function(a) {\n return $44c766e27e2c7c91$var$t(a) === $44c766e27e2c7c91$var$n;\n};\nmodule.exports.isFragment = function(a) {\n return $44c766e27e2c7c91$var$t(a) === $44c766e27e2c7c91$var$e;\n};\nmodule.exports.isLazy = function(a) {\n return $44c766e27e2c7c91$var$t(a) === $44c766e27e2c7c91$var$r;\n};\nmodule.exports.isMemo = function(a) {\n return $44c766e27e2c7c91$var$t(a) === $44c766e27e2c7c91$var$q;\n};\nmodule.exports.isPortal = function(a) {\n return $44c766e27e2c7c91$var$t(a) === $44c766e27e2c7c91$var$d;\n};\nmodule.exports.isProfiler = function(a) {\n return $44c766e27e2c7c91$var$t(a) === $44c766e27e2c7c91$var$g;\n};\nmodule.exports.isStrictMode = function(a) {\n return $44c766e27e2c7c91$var$t(a) === $44c766e27e2c7c91$var$f;\n};\nmodule.exports.isSuspense = function(a) {\n return $44c766e27e2c7c91$var$t(a) === $44c766e27e2c7c91$var$p;\n};\n\n});\n\n\nparcelRegister(\"5uOBs\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $400701d145807711$export$2e2bcd8739ae039; });\nfunction $400701d145807711$export$2e2bcd8739ae039(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\n});\n\nparcelRegister(\"55VV8\", function(module, exports) {\n\"use strict\";\n\nvar $enjWa = parcelRequire(\"enjWa\");\nvar $3b5a592ebbb19045$var$REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar $3b5a592ebbb19045$var$KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar $3b5a592ebbb19045$var$FORWARD_REF_STATICS = {\n \"$$typeof\": true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar $3b5a592ebbb19045$var$MEMO_STATICS = {\n \"$$typeof\": true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar $3b5a592ebbb19045$var$TYPE_STATICS = {};\n$3b5a592ebbb19045$var$TYPE_STATICS[$enjWa.ForwardRef] = $3b5a592ebbb19045$var$FORWARD_REF_STATICS;\nfunction $3b5a592ebbb19045$var$getStatics(component) {\n if ($enjWa.isMemo(component)) return $3b5a592ebbb19045$var$MEMO_STATICS;\n return $3b5a592ebbb19045$var$TYPE_STATICS[component[\"$$typeof\"]] || $3b5a592ebbb19045$var$REACT_STATICS;\n}\nvar $3b5a592ebbb19045$var$defineProperty = Object.defineProperty;\nvar $3b5a592ebbb19045$var$getOwnPropertyNames = Object.getOwnPropertyNames;\nvar $3b5a592ebbb19045$var$getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar $3b5a592ebbb19045$var$getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar $3b5a592ebbb19045$var$getPrototypeOf = Object.getPrototypeOf;\nvar $3b5a592ebbb19045$var$objectPrototype = Object.prototype;\nfunction $3b5a592ebbb19045$var$hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== \"string\") {\n // don't hoist over string (html) components\n if ($3b5a592ebbb19045$var$objectPrototype) {\n var inheritedComponent = $3b5a592ebbb19045$var$getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== $3b5a592ebbb19045$var$objectPrototype) $3b5a592ebbb19045$var$hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n var keys = $3b5a592ebbb19045$var$getOwnPropertyNames(sourceComponent);\n if ($3b5a592ebbb19045$var$getOwnPropertySymbols) keys = keys.concat($3b5a592ebbb19045$var$getOwnPropertySymbols(sourceComponent));\n var targetStatics = $3b5a592ebbb19045$var$getStatics(targetComponent);\n var sourceStatics = $3b5a592ebbb19045$var$getStatics(sourceComponent);\n for(var i = 0; i < keys.length; ++i){\n var key = keys[i];\n if (!$3b5a592ebbb19045$var$KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = $3b5a592ebbb19045$var$getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n $3b5a592ebbb19045$var$defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n return targetComponent;\n }\n return targetComponent;\n}\nmodule.exports = $3b5a592ebbb19045$var$hoistNonReactStatics;\n\n});\nparcelRegister(\"enjWa\", function(module, exports) {\n\"use strict\";\n\nmodule.exports = (parcelRequire(\"hAyFw\"));\n\n});\nparcelRegister(\"hAyFw\", function(module, exports) {\n\n$parcel$export(module.exports, \"AsyncMode\", function () { return $cce0b0f44a7ea63f$export$2b8d127b894957b9; }, function (v) { return $cce0b0f44a7ea63f$export$2b8d127b894957b9 = v; });\n$parcel$export(module.exports, \"ConcurrentMode\", function () { return $cce0b0f44a7ea63f$export$cea3a54a6425200c; }, function (v) { return $cce0b0f44a7ea63f$export$cea3a54a6425200c = v; });\n$parcel$export(module.exports, \"ContextConsumer\", function () { return $cce0b0f44a7ea63f$export$a7c73072b1a182ae; }, function (v) { return $cce0b0f44a7ea63f$export$a7c73072b1a182ae = v; });\n$parcel$export(module.exports, \"ContextProvider\", function () { return $cce0b0f44a7ea63f$export$9f27bc3417b4524d; }, function (v) { return $cce0b0f44a7ea63f$export$9f27bc3417b4524d = v; });\n$parcel$export(module.exports, \"Element\", function () { return $cce0b0f44a7ea63f$export$db77ccec0bb4ccac; }, function (v) { return $cce0b0f44a7ea63f$export$db77ccec0bb4ccac = v; });\n$parcel$export(module.exports, \"ForwardRef\", function () { return $cce0b0f44a7ea63f$export$8392c0c9d3dcbd35; }, function (v) { return $cce0b0f44a7ea63f$export$8392c0c9d3dcbd35 = v; });\n$parcel$export(module.exports, \"Fragment\", function () { return $cce0b0f44a7ea63f$export$ffb0004e005737fa; }, function (v) { return $cce0b0f44a7ea63f$export$ffb0004e005737fa = v; });\n$parcel$export(module.exports, \"Lazy\", function () { return $cce0b0f44a7ea63f$export$b624eff549462981; }, function (v) { return $cce0b0f44a7ea63f$export$b624eff549462981 = v; });\n$parcel$export(module.exports, \"Memo\", function () { return $cce0b0f44a7ea63f$export$7897aa7841a5380c; }, function (v) { return $cce0b0f44a7ea63f$export$7897aa7841a5380c = v; });\n$parcel$export(module.exports, \"Portal\", function () { return $cce0b0f44a7ea63f$export$602eac185826482c; }, function (v) { return $cce0b0f44a7ea63f$export$602eac185826482c = v; });\n$parcel$export(module.exports, \"Profiler\", function () { return $cce0b0f44a7ea63f$export$e2c29f18771995cb; }, function (v) { return $cce0b0f44a7ea63f$export$e2c29f18771995cb = v; });\n$parcel$export(module.exports, \"StrictMode\", function () { return $cce0b0f44a7ea63f$export$5f8d39834fd61797; }, function (v) { return $cce0b0f44a7ea63f$export$5f8d39834fd61797 = v; });\n$parcel$export(module.exports, \"Suspense\", function () { return $cce0b0f44a7ea63f$export$74bf444e3cd11ea5; }, function (v) { return $cce0b0f44a7ea63f$export$74bf444e3cd11ea5 = v; });\n$parcel$export(module.exports, \"isAsyncMode\", function () { return $cce0b0f44a7ea63f$export$92387174baf9b227; }, function (v) { return $cce0b0f44a7ea63f$export$92387174baf9b227 = v; });\n$parcel$export(module.exports, \"isConcurrentMode\", function () { return $cce0b0f44a7ea63f$export$ec112efeb987d9c6; }, function (v) { return $cce0b0f44a7ea63f$export$ec112efeb987d9c6 = v; });\n$parcel$export(module.exports, \"isContextConsumer\", function () { return $cce0b0f44a7ea63f$export$b706b080d889d2c9; }, function (v) { return $cce0b0f44a7ea63f$export$b706b080d889d2c9 = v; });\n$parcel$export(module.exports, \"isContextProvider\", function () { return $cce0b0f44a7ea63f$export$5be5a87408f70ddc; }, function (v) { return $cce0b0f44a7ea63f$export$5be5a87408f70ddc = v; });\n$parcel$export(module.exports, \"isElement\", function () { return $cce0b0f44a7ea63f$export$45a5e7f76e0caa8d; }, function (v) { return $cce0b0f44a7ea63f$export$45a5e7f76e0caa8d = v; });\n$parcel$export(module.exports, \"isForwardRef\", function () { return $cce0b0f44a7ea63f$export$455c2e768291efa6; }, function (v) { return $cce0b0f44a7ea63f$export$455c2e768291efa6 = v; });\n$parcel$export(module.exports, \"isFragment\", function () { return $cce0b0f44a7ea63f$export$9522e17588c12572; }, function (v) { return $cce0b0f44a7ea63f$export$9522e17588c12572 = v; });\n$parcel$export(module.exports, \"isLazy\", function () { return $cce0b0f44a7ea63f$export$2110ac352bb060b9; }, function (v) { return $cce0b0f44a7ea63f$export$2110ac352bb060b9 = v; });\n$parcel$export(module.exports, \"isMemo\", function () { return $cce0b0f44a7ea63f$export$56885ab8b9c456ab; }, function (v) { return $cce0b0f44a7ea63f$export$56885ab8b9c456ab = v; });\n$parcel$export(module.exports, \"isPortal\", function () { return $cce0b0f44a7ea63f$export$d927fcb6adf8f9de; }, function (v) { return $cce0b0f44a7ea63f$export$d927fcb6adf8f9de = v; });\n$parcel$export(module.exports, \"isProfiler\", function () { return $cce0b0f44a7ea63f$export$b82d16f27459e05a; }, function (v) { return $cce0b0f44a7ea63f$export$b82d16f27459e05a = v; });\n$parcel$export(module.exports, \"isStrictMode\", function () { return $cce0b0f44a7ea63f$export$522c17b4f5e123e8; }, function (v) { return $cce0b0f44a7ea63f$export$522c17b4f5e123e8 = v; });\n$parcel$export(module.exports, \"isSuspense\", function () { return $cce0b0f44a7ea63f$export$1aabd8a0274ecfd6; }, function (v) { return $cce0b0f44a7ea63f$export$1aabd8a0274ecfd6 = v; });\n$parcel$export(module.exports, \"isValidElementType\", function () { return $cce0b0f44a7ea63f$export$9b621391a187a31a; }, function (v) { return $cce0b0f44a7ea63f$export$9b621391a187a31a = v; });\n$parcel$export(module.exports, \"typeOf\", function () { return $cce0b0f44a7ea63f$export$f5bbd400c2f4426f; }, function (v) { return $cce0b0f44a7ea63f$export$f5bbd400c2f4426f = v; });\n/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */ var $cce0b0f44a7ea63f$export$2b8d127b894957b9;\nvar $cce0b0f44a7ea63f$export$cea3a54a6425200c;\nvar $cce0b0f44a7ea63f$export$a7c73072b1a182ae;\nvar $cce0b0f44a7ea63f$export$9f27bc3417b4524d;\nvar $cce0b0f44a7ea63f$export$db77ccec0bb4ccac;\nvar $cce0b0f44a7ea63f$export$8392c0c9d3dcbd35;\nvar $cce0b0f44a7ea63f$export$ffb0004e005737fa;\nvar $cce0b0f44a7ea63f$export$b624eff549462981;\nvar $cce0b0f44a7ea63f$export$7897aa7841a5380c;\nvar $cce0b0f44a7ea63f$export$602eac185826482c;\nvar $cce0b0f44a7ea63f$export$e2c29f18771995cb;\nvar $cce0b0f44a7ea63f$export$5f8d39834fd61797;\nvar $cce0b0f44a7ea63f$export$74bf444e3cd11ea5;\nvar $cce0b0f44a7ea63f$export$92387174baf9b227;\nvar $cce0b0f44a7ea63f$export$ec112efeb987d9c6;\nvar $cce0b0f44a7ea63f$export$b706b080d889d2c9;\nvar $cce0b0f44a7ea63f$export$5be5a87408f70ddc;\nvar $cce0b0f44a7ea63f$export$45a5e7f76e0caa8d;\nvar $cce0b0f44a7ea63f$export$455c2e768291efa6;\nvar $cce0b0f44a7ea63f$export$9522e17588c12572;\nvar $cce0b0f44a7ea63f$export$2110ac352bb060b9;\nvar $cce0b0f44a7ea63f$export$56885ab8b9c456ab;\nvar $cce0b0f44a7ea63f$export$d927fcb6adf8f9de;\nvar $cce0b0f44a7ea63f$export$b82d16f27459e05a;\nvar $cce0b0f44a7ea63f$export$522c17b4f5e123e8;\nvar $cce0b0f44a7ea63f$export$1aabd8a0274ecfd6;\nvar $cce0b0f44a7ea63f$export$9b621391a187a31a;\nvar $cce0b0f44a7ea63f$export$f5bbd400c2f4426f;\n\"use strict\";\nvar $cce0b0f44a7ea63f$var$b = \"function\" === typeof Symbol && Symbol.for, $cce0b0f44a7ea63f$var$c = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.element\") : 60103, $cce0b0f44a7ea63f$var$d = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.portal\") : 60106, $cce0b0f44a7ea63f$var$e = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.fragment\") : 60107, $cce0b0f44a7ea63f$var$f = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.strict_mode\") : 60108, $cce0b0f44a7ea63f$var$g = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.profiler\") : 60114, $cce0b0f44a7ea63f$var$h = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.provider\") : 60109, $cce0b0f44a7ea63f$var$k = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.context\") : 60110, $cce0b0f44a7ea63f$var$l = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.async_mode\") : 60111, $cce0b0f44a7ea63f$var$m = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.concurrent_mode\") : 60111, $cce0b0f44a7ea63f$var$n = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.forward_ref\") : 60112, $cce0b0f44a7ea63f$var$p = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.suspense\") : 60113, $cce0b0f44a7ea63f$var$q = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.suspense_list\") : 60120, $cce0b0f44a7ea63f$var$r = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.memo\") : 60115, $cce0b0f44a7ea63f$var$t = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.lazy\") : 60116, $cce0b0f44a7ea63f$var$v = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.block\") : 60121, $cce0b0f44a7ea63f$var$w = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.fundamental\") : 60117, $cce0b0f44a7ea63f$var$x = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.responder\") : 60118, $cce0b0f44a7ea63f$var$y = $cce0b0f44a7ea63f$var$b ? Symbol.for(\"react.scope\") : 60119;\nfunction $cce0b0f44a7ea63f$var$z(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n switch(u){\n case $cce0b0f44a7ea63f$var$c:\n switch(a = a.type, a){\n case $cce0b0f44a7ea63f$var$l:\n case $cce0b0f44a7ea63f$var$m:\n case $cce0b0f44a7ea63f$var$e:\n case $cce0b0f44a7ea63f$var$g:\n case $cce0b0f44a7ea63f$var$f:\n case $cce0b0f44a7ea63f$var$p:\n return a;\n default:\n switch(a = a && a.$$typeof, a){\n case $cce0b0f44a7ea63f$var$k:\n case $cce0b0f44a7ea63f$var$n:\n case $cce0b0f44a7ea63f$var$t:\n case $cce0b0f44a7ea63f$var$r:\n case $cce0b0f44a7ea63f$var$h:\n return a;\n default:\n return u;\n }\n }\n case $cce0b0f44a7ea63f$var$d:\n return u;\n }\n }\n}\nfunction $cce0b0f44a7ea63f$var$A(a) {\n return $cce0b0f44a7ea63f$var$z(a) === $cce0b0f44a7ea63f$var$m;\n}\n$cce0b0f44a7ea63f$export$2b8d127b894957b9 = $cce0b0f44a7ea63f$var$l;\n$cce0b0f44a7ea63f$export$cea3a54a6425200c = $cce0b0f44a7ea63f$var$m;\n$cce0b0f44a7ea63f$export$a7c73072b1a182ae = $cce0b0f44a7ea63f$var$k;\n$cce0b0f44a7ea63f$export$9f27bc3417b4524d = $cce0b0f44a7ea63f$var$h;\n$cce0b0f44a7ea63f$export$db77ccec0bb4ccac = $cce0b0f44a7ea63f$var$c;\n$cce0b0f44a7ea63f$export$8392c0c9d3dcbd35 = $cce0b0f44a7ea63f$var$n;\n$cce0b0f44a7ea63f$export$ffb0004e005737fa = $cce0b0f44a7ea63f$var$e;\n$cce0b0f44a7ea63f$export$b624eff549462981 = $cce0b0f44a7ea63f$var$t;\n$cce0b0f44a7ea63f$export$7897aa7841a5380c = $cce0b0f44a7ea63f$var$r;\n$cce0b0f44a7ea63f$export$602eac185826482c = $cce0b0f44a7ea63f$var$d;\n$cce0b0f44a7ea63f$export$e2c29f18771995cb = $cce0b0f44a7ea63f$var$g;\n$cce0b0f44a7ea63f$export$5f8d39834fd61797 = $cce0b0f44a7ea63f$var$f;\n$cce0b0f44a7ea63f$export$74bf444e3cd11ea5 = $cce0b0f44a7ea63f$var$p;\n$cce0b0f44a7ea63f$export$92387174baf9b227 = function(a) {\n return $cce0b0f44a7ea63f$var$A(a) || $cce0b0f44a7ea63f$var$z(a) === $cce0b0f44a7ea63f$var$l;\n};\n$cce0b0f44a7ea63f$export$ec112efeb987d9c6 = $cce0b0f44a7ea63f$var$A;\n$cce0b0f44a7ea63f$export$b706b080d889d2c9 = function(a) {\n return $cce0b0f44a7ea63f$var$z(a) === $cce0b0f44a7ea63f$var$k;\n};\n$cce0b0f44a7ea63f$export$5be5a87408f70ddc = function(a) {\n return $cce0b0f44a7ea63f$var$z(a) === $cce0b0f44a7ea63f$var$h;\n};\n$cce0b0f44a7ea63f$export$45a5e7f76e0caa8d = function(a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === $cce0b0f44a7ea63f$var$c;\n};\n$cce0b0f44a7ea63f$export$455c2e768291efa6 = function(a) {\n return $cce0b0f44a7ea63f$var$z(a) === $cce0b0f44a7ea63f$var$n;\n};\n$cce0b0f44a7ea63f$export$9522e17588c12572 = function(a) {\n return $cce0b0f44a7ea63f$var$z(a) === $cce0b0f44a7ea63f$var$e;\n};\n$cce0b0f44a7ea63f$export$2110ac352bb060b9 = function(a) {\n return $cce0b0f44a7ea63f$var$z(a) === $cce0b0f44a7ea63f$var$t;\n};\n$cce0b0f44a7ea63f$export$56885ab8b9c456ab = function(a) {\n return $cce0b0f44a7ea63f$var$z(a) === $cce0b0f44a7ea63f$var$r;\n};\n$cce0b0f44a7ea63f$export$d927fcb6adf8f9de = function(a) {\n return $cce0b0f44a7ea63f$var$z(a) === $cce0b0f44a7ea63f$var$d;\n};\n$cce0b0f44a7ea63f$export$b82d16f27459e05a = function(a) {\n return $cce0b0f44a7ea63f$var$z(a) === $cce0b0f44a7ea63f$var$g;\n};\n$cce0b0f44a7ea63f$export$522c17b4f5e123e8 = function(a) {\n return $cce0b0f44a7ea63f$var$z(a) === $cce0b0f44a7ea63f$var$f;\n};\n$cce0b0f44a7ea63f$export$1aabd8a0274ecfd6 = function(a) {\n return $cce0b0f44a7ea63f$var$z(a) === $cce0b0f44a7ea63f$var$p;\n};\n$cce0b0f44a7ea63f$export$9b621391a187a31a = function(a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === $cce0b0f44a7ea63f$var$e || a === $cce0b0f44a7ea63f$var$m || a === $cce0b0f44a7ea63f$var$g || a === $cce0b0f44a7ea63f$var$f || a === $cce0b0f44a7ea63f$var$p || a === $cce0b0f44a7ea63f$var$q || \"object\" === typeof a && null !== a && (a.$$typeof === $cce0b0f44a7ea63f$var$t || a.$$typeof === $cce0b0f44a7ea63f$var$r || a.$$typeof === $cce0b0f44a7ea63f$var$h || a.$$typeof === $cce0b0f44a7ea63f$var$k || a.$$typeof === $cce0b0f44a7ea63f$var$n || a.$$typeof === $cce0b0f44a7ea63f$var$w || a.$$typeof === $cce0b0f44a7ea63f$var$x || a.$$typeof === $cce0b0f44a7ea63f$var$y || a.$$typeof === $cce0b0f44a7ea63f$var$v);\n};\n$cce0b0f44a7ea63f$export$f5bbd400c2f4426f = $cce0b0f44a7ea63f$var$z;\n\n});\n\n\n\n\nparcelRegister(\"1hm3X\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $0ee87e385b1557e4$export$2e2bcd8739ae039; });\nfunction $0ee87e385b1557e4$export$2e2bcd8739ae039(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\n});\n\nparcelRegister(\"iBVPT\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $d8c88bba4ab346a6$export$2e2bcd8739ae039; });\nfunction $d8c88bba4ab346a6$export$2e2bcd8739ae039() {\n $d8c88bba4ab346a6$export$2e2bcd8739ae039 = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n return target;\n };\n return $d8c88bba4ab346a6$export$2e2bcd8739ae039.apply(this, arguments);\n}\n\n});\n\nparcelRegister(\"fxhIv\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b4f7ae49db0ec40d$export$2e2bcd8739ae039; });\nfunction $b4f7ae49db0ec40d$export$2e2bcd8739ae039(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\n});\n\n\nparcelRegister(\"20MOv\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $1771723e14e11c61$export$2e2bcd8739ae039; });\nfunction $1771723e14e11c61$export$2e2bcd8739ae039() {\n $1771723e14e11c61$export$2e2bcd8739ae039 = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n return target;\n };\n return $1771723e14e11c61$export$2e2bcd8739ae039.apply(this, arguments);\n}\n\n});\n\nparcelRegister(\"cNmNk\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $950bbe29cfff7f63$export$2e2bcd8739ae039; });\n\nvar $5ICsL = parcelRequire(\"5ICsL\");\n\nvar $7Rxn3 = parcelRequire(\"7Rxn3\");\nfunction $950bbe29cfff7f63$export$2e2bcd8739ae039({ props: props, name: name }) {\n return (0, $5ICsL.default)({\n props: props,\n name: name,\n defaultTheme: $7Rxn3.default\n });\n}\n\n});\nparcelRegister(\"5ICsL\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $429ee5b99ee93221$export$2e2bcd8739ae039; });\n\nvar $lfg53 = parcelRequire(\"lfg53\");\n\nvar $3yh9K = parcelRequire(\"3yh9K\");\nfunction $429ee5b99ee93221$export$2e2bcd8739ae039({ props: props, name: name, defaultTheme: defaultTheme }) {\n const theme = (0, $3yh9K.default)(defaultTheme);\n const mergedProps = (0, $lfg53.default)({\n theme: theme,\n name: name,\n props: props\n });\n return mergedProps;\n}\n\n});\nparcelRegister(\"lfg53\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $f77778f4f2eda6a7$export$2e2bcd8739ae039; });\n\nvar $b913t = parcelRequire(\"b913t\");\nfunction $f77778f4f2eda6a7$export$2e2bcd8739ae039(params) {\n const { theme: theme, name: name, props: props } = params;\n if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) return props;\n return (0, $b913t.default)(theme.components[name].defaultProps, props);\n}\n\n});\nparcelRegister(\"b913t\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $81d15a7790ca3f2f$export$2e2bcd8739ae039; });\n\nvar $20MOv = parcelRequire(\"20MOv\");\nfunction $81d15a7790ca3f2f$export$2e2bcd8739ae039(defaultProps, props) {\n const output = (0, $20MOv.default)({}, props);\n Object.keys(defaultProps).forEach((propName)=>{\n if (output[propName] === undefined) output[propName] = defaultProps[propName];\n });\n return output;\n}\n\n});\n\n\nparcelRegister(\"3yh9K\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $2961daf3d9514be3$export$2e2bcd8739ae039; });\n\nvar $ketPc = parcelRequire(\"ketPc\");\n\nvar $g7YYH = parcelRequire(\"g7YYH\");\nconst $2961daf3d9514be3$export$35e57303dbd8a66 = (0, $ketPc.default)();\nfunction $2961daf3d9514be3$var$useTheme(defaultTheme = $2961daf3d9514be3$export$35e57303dbd8a66) {\n return (0, $g7YYH.default)(defaultTheme);\n}\nvar $2961daf3d9514be3$export$2e2bcd8739ae039 = $2961daf3d9514be3$var$useTheme;\n\n});\nparcelRegister(\"ketPc\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ebac400d95f45d3b$export$2e2bcd8739ae039; });\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $jWrHX = parcelRequire(\"jWrHX\");\n\nvar $fxwWe = parcelRequire(\"fxwWe\");\n\nvar $d7B4v = parcelRequire(\"d7B4v\");\n\nvar $7VF1Q = parcelRequire(\"7VF1Q\");\nconst $ebac400d95f45d3b$var$_excluded = [\n \"breakpoints\",\n \"palette\",\n \"spacing\",\n \"shape\"\n];\nfunction $ebac400d95f45d3b$var$createTheme(options = {}, ...args) {\n const { breakpoints: breakpointsInput = {}, palette: paletteInput = {}, spacing: spacingInput, shape: shapeInput = {} } = options, other = (0, $79yYo.default)(options, $ebac400d95f45d3b$var$_excluded);\n const breakpoints = (0, $fxwWe.default)(breakpointsInput);\n const spacing = (0, $7VF1Q.default)(spacingInput);\n let muiTheme = (0, $jWrHX.default)({\n breakpoints: breakpoints,\n direction: \"ltr\",\n components: {},\n // Inject component definitions.\n palette: (0, $20MOv.default)({\n mode: \"light\"\n }, paletteInput),\n spacing: spacing,\n shape: (0, $20MOv.default)({}, (0, $d7B4v.default), shapeInput)\n }, other);\n muiTheme = args.reduce((acc, argument)=>(0, $jWrHX.default)(acc, argument), muiTheme);\n return muiTheme;\n}\nvar $ebac400d95f45d3b$export$2e2bcd8739ae039 = $ebac400d95f45d3b$var$createTheme;\n\n});\nparcelRegister(\"79yYo\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $53548097e910e6ba$export$2e2bcd8739ae039; });\nfunction $53548097e910e6ba$export$2e2bcd8739ae039(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\n});\n\nparcelRegister(\"jWrHX\", function(module, exports) {\n\n$parcel$export(module.exports, \"isPlainObject\", function () { return $e848ed545ed37bf1$export$53b83ca8eaab0383; });\n$parcel$export(module.exports, \"default\", function () { return $e848ed545ed37bf1$export$2e2bcd8739ae039; });\n\nvar $20MOv = parcelRequire(\"20MOv\");\nfunction $e848ed545ed37bf1$export$53b83ca8eaab0383(item) {\n return item !== null && typeof item === \"object\" && item.constructor === Object;\n}\nfunction $e848ed545ed37bf1$export$2e2bcd8739ae039(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? (0, $20MOv.default)({}, target) : target;\n if ($e848ed545ed37bf1$export$53b83ca8eaab0383(target) && $e848ed545ed37bf1$export$53b83ca8eaab0383(source)) Object.keys(source).forEach((key)=>{\n // Avoid prototype pollution\n if (key === \"__proto__\") return;\n if ($e848ed545ed37bf1$export$53b83ca8eaab0383(source[key]) && key in target && $e848ed545ed37bf1$export$53b83ca8eaab0383(target[key])) // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = $e848ed545ed37bf1$export$2e2bcd8739ae039(target[key], source[key], options);\n else output[key] = source[key];\n });\n return output;\n}\n\n});\n\nparcelRegister(\"fxwWe\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b5037cefb2e2664e$export$2e2bcd8739ae039; });\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $20MOv = parcelRequire(\"20MOv\");\nconst $b5037cefb2e2664e$var$_excluded = [\n \"values\",\n \"unit\",\n \"step\"\n];\nconst $b5037cefb2e2664e$export$ebf128a87553cecf = [\n \"xs\",\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\"\n];\nconst $b5037cefb2e2664e$var$sortBreakpointsValues = (values)=>{\n const breakpointsAsArray = Object.keys(values).map((key)=>({\n key: key,\n val: values[key]\n })) || []; // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2)=>breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj)=>{\n return (0, $20MOv.default)({}, acc, {\n [obj.key]: obj.val\n });\n }, {});\n}; // Keep in mind that @media is inclusive by the CSS specification.\nfunction $b5037cefb2e2664e$export$2e2bcd8739ae039(breakpoints) {\n const { values: // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n }, unit: unit = \"px\", step: step = 5 } = breakpoints, other = (0, $79yYo.default)(breakpoints, $b5037cefb2e2664e$var$_excluded);\n const sortedValues = $b5037cefb2e2664e$var$sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === \"number\" ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === \"number\" ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === \"number\" ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === \"number\" ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) return between(key, keys[keys.indexOf(key) + 1]);\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) return up(keys[1]);\n if (keyIndex === keys.length - 1) return down(keys[keyIndex]);\n return between(key, keys[keys.indexOf(key) + 1]).replace(\"@media\", \"@media not all and\");\n }\n return (0, $20MOv.default)({\n keys: keys,\n values: sortedValues,\n up: up,\n down: down,\n between: between,\n only: only,\n not: not,\n unit: unit\n }, other);\n}\n\n});\n\nparcelRegister(\"d7B4v\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $98d8af7b025217d8$export$2e2bcd8739ae039; });\nconst $98d8af7b025217d8$var$shape = {\n borderRadius: 4\n};\nvar $98d8af7b025217d8$export$2e2bcd8739ae039 = $98d8af7b025217d8$var$shape;\n\n});\n\nparcelRegister(\"7VF1Q\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $5c5daebf4eabdffc$export$2e2bcd8739ae039; });\n\nvar $eHQ84 = parcelRequire(\"eHQ84\");\nfunction $5c5daebf4eabdffc$export$2e2bcd8739ae039(spacingInput = 8) {\n // Already transformed.\n if (spacingInput.mui) return spacingInput;\n // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n // Smaller components, such as icons, can align to a 4dp grid.\n // https://material.io/design/layout/understanding-layout.html#usage\n const transform = (0, $eHQ84.createUnarySpacing)({\n spacing: spacingInput\n });\n const spacing = (...argsInput)=>{\n const args = argsInput.length === 0 ? [\n 1\n ] : argsInput;\n return args.map((argument)=>{\n const output = transform(argument);\n return typeof output === \"number\" ? `${output}px` : output;\n }).join(\" \");\n };\n spacing.mui = true;\n return spacing;\n}\n\n});\nparcelRegister(\"eHQ84\", function(module, exports) {\n\n$parcel$export(module.exports, \"createUnaryUnit\", function () { return $ab4d849f9b1a6a61$export$cb5ee237cce814a2; });\n$parcel$export(module.exports, \"createUnarySpacing\", function () { return $ab4d849f9b1a6a61$export$1def6f833384e3d1; });\n$parcel$export(module.exports, \"getValue\", function () { return $ab4d849f9b1a6a61$export$bf7199a9ebcb84a9; });\n$parcel$export(module.exports, \"default\", function () { return $ab4d849f9b1a6a61$export$2e2bcd8739ae039; });\n\n\nvar $bXmqm = parcelRequire(\"bXmqm\");\n\nvar $1sJkf = parcelRequire(\"1sJkf\");\n\nvar $bs0XL = parcelRequire(\"bs0XL\");\n\nvar $4fgLQ = parcelRequire(\"4fgLQ\");\nconst $ab4d849f9b1a6a61$var$properties = {\n m: \"margin\",\n p: \"padding\"\n};\nconst $ab4d849f9b1a6a61$var$directions = {\n t: \"Top\",\n r: \"Right\",\n b: \"Bottom\",\n l: \"Left\",\n x: [\n \"Left\",\n \"Right\"\n ],\n y: [\n \"Top\",\n \"Bottom\"\n ]\n};\nconst $ab4d849f9b1a6a61$var$aliases = {\n marginX: \"mx\",\n marginY: \"my\",\n paddingX: \"px\",\n paddingY: \"py\"\n}; // memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst $ab4d849f9b1a6a61$var$getCssProperties = (0, $4fgLQ.default)((prop)=>{\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if ($ab4d849f9b1a6a61$var$aliases[prop]) prop = $ab4d849f9b1a6a61$var$aliases[prop];\n else return [\n prop\n ];\n }\n const [a, b] = prop.split(\"\");\n const property = $ab4d849f9b1a6a61$var$properties[a];\n const direction = $ab4d849f9b1a6a61$var$directions[b] || \"\";\n return Array.isArray(direction) ? direction.map((dir)=>property + dir) : [\n property + direction\n ];\n});\nconst $ab4d849f9b1a6a61$var$marginKeys = [\n \"m\",\n \"mt\",\n \"mr\",\n \"mb\",\n \"ml\",\n \"mx\",\n \"my\",\n \"margin\",\n \"marginTop\",\n \"marginRight\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginX\",\n \"marginY\",\n \"marginInline\",\n \"marginInlineStart\",\n \"marginInlineEnd\",\n \"marginBlock\",\n \"marginBlockStart\",\n \"marginBlockEnd\"\n];\nconst $ab4d849f9b1a6a61$var$paddingKeys = [\n \"p\",\n \"pt\",\n \"pr\",\n \"pb\",\n \"pl\",\n \"px\",\n \"py\",\n \"padding\",\n \"paddingTop\",\n \"paddingRight\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"paddingX\",\n \"paddingY\",\n \"paddingInline\",\n \"paddingInlineStart\",\n \"paddingInlineEnd\",\n \"paddingBlock\",\n \"paddingBlockStart\",\n \"paddingBlockEnd\"\n];\nconst $ab4d849f9b1a6a61$var$spacingKeys = [\n ...$ab4d849f9b1a6a61$var$marginKeys,\n ...$ab4d849f9b1a6a61$var$paddingKeys\n];\nfunction $ab4d849f9b1a6a61$export$cb5ee237cce814a2(theme, themeKey, defaultValue, propName) {\n const themeSpacing = (0, $1sJkf.getPath)(theme, themeKey) || defaultValue;\n if (typeof themeSpacing === \"number\") return (abs)=>{\n if (typeof abs === \"string\") return abs;\n return themeSpacing * abs;\n };\n if (Array.isArray(themeSpacing)) return (abs)=>{\n if (typeof abs === \"string\") return abs;\n return themeSpacing[abs];\n };\n if (typeof themeSpacing === \"function\") return themeSpacing;\n return ()=>undefined;\n}\nfunction $ab4d849f9b1a6a61$export$1def6f833384e3d1(theme) {\n return $ab4d849f9b1a6a61$export$cb5ee237cce814a2(theme, \"spacing\", 8, \"spacing\");\n}\nfunction $ab4d849f9b1a6a61$export$bf7199a9ebcb84a9(transformer, propValue) {\n if (typeof propValue === \"string\" || propValue == null) return propValue;\n const abs = Math.abs(propValue);\n const transformed = transformer(abs);\n if (propValue >= 0) return transformed;\n if (typeof transformed === \"number\") return -transformed;\n return `-${transformed}`;\n}\nfunction $ab4d849f9b1a6a61$export$1dc0036b298ea8d1(cssProperties, transformer) {\n return (propValue)=>cssProperties.reduce((acc, cssProperty)=>{\n acc[cssProperty] = $ab4d849f9b1a6a61$export$bf7199a9ebcb84a9(transformer, propValue);\n return acc;\n }, {});\n}\nfunction $ab4d849f9b1a6a61$var$resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (keys.indexOf(prop) === -1) return null;\n const cssProperties = $ab4d849f9b1a6a61$var$getCssProperties(prop);\n const styleFromPropValue = $ab4d849f9b1a6a61$export$1dc0036b298ea8d1(cssProperties, transformer);\n const propValue = props[prop];\n return (0, $bXmqm.handleBreakpoints)(props, propValue, styleFromPropValue);\n}\nfunction $ab4d849f9b1a6a61$var$style(props, keys) {\n const transformer = $ab4d849f9b1a6a61$export$1def6f833384e3d1(props.theme);\n return Object.keys(props).map((prop)=>$ab4d849f9b1a6a61$var$resolveCssProperty(props, keys, prop, transformer)).reduce((0, $bs0XL.default), {});\n}\nfunction $ab4d849f9b1a6a61$export$7ede87f9b603dd3c(props) {\n return $ab4d849f9b1a6a61$var$style(props, $ab4d849f9b1a6a61$var$marginKeys);\n}\n$ab4d849f9b1a6a61$export$7ede87f9b603dd3c.propTypes = {};\n$ab4d849f9b1a6a61$export$7ede87f9b603dd3c.filterProps = $ab4d849f9b1a6a61$var$marginKeys;\nfunction $ab4d849f9b1a6a61$export$6f98e8eaf0be1996(props) {\n return $ab4d849f9b1a6a61$var$style(props, $ab4d849f9b1a6a61$var$paddingKeys);\n}\n$ab4d849f9b1a6a61$export$6f98e8eaf0be1996.propTypes = {};\n$ab4d849f9b1a6a61$export$6f98e8eaf0be1996.filterProps = $ab4d849f9b1a6a61$var$paddingKeys;\nfunction $ab4d849f9b1a6a61$var$spacing(props) {\n return $ab4d849f9b1a6a61$var$style(props, $ab4d849f9b1a6a61$var$spacingKeys);\n}\n$ab4d849f9b1a6a61$var$spacing.propTypes = {};\n$ab4d849f9b1a6a61$var$spacing.filterProps = $ab4d849f9b1a6a61$var$spacingKeys;\nvar $ab4d849f9b1a6a61$export$2e2bcd8739ae039 = $ab4d849f9b1a6a61$var$spacing;\n\n});\nparcelRegister(\"bXmqm\", function(module, exports) {\n\n$parcel$export(module.exports, \"values\", function () { return $8b46995bfecb1b07$export$68c286be0e7e55b7; });\n$parcel$export(module.exports, \"handleBreakpoints\", function () { return $8b46995bfecb1b07$export$88347efdb2e19abd; });\n$parcel$export(module.exports, \"createEmptyBreakpointObject\", function () { return $8b46995bfecb1b07$export$1f2600516e91381f; });\n$parcel$export(module.exports, \"removeUnusedBreakpoints\", function () { return $8b46995bfecb1b07$export$8922c90b6e020726; });\n$parcel$export(module.exports, \"resolveBreakpointValues\", function () { return $8b46995bfecb1b07$export$980e6a259d807490; });\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\n\nvar $jWrHX = parcelRequire(\"jWrHX\");\n\nvar $bs0XL = parcelRequire(\"bs0XL\");\nconst $8b46995bfecb1b07$export$68c286be0e7e55b7 = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst $8b46995bfecb1b07$var$defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: [\n \"xs\",\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\"\n ],\n up: (key)=>`@media (min-width:${$8b46995bfecb1b07$export$68c286be0e7e55b7[key]}px)`\n};\nfunction $8b46995bfecb1b07$export$88347efdb2e19abd(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || $8b46995bfecb1b07$var$defaultBreakpoints;\n return propValue.reduce((acc, item, index)=>{\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === \"object\") {\n const themeBreakpoints = theme.breakpoints || $8b46995bfecb1b07$var$defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint)=>{\n // key is breakpoint\n if (Object.keys(themeBreakpoints.values || $8b46995bfecb1b07$export$68c286be0e7e55b7).indexOf(breakpoint) !== -1) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction $8b46995bfecb1b07$var$breakpoints(styleFunction) {\n const newStyleFunction = (props)=>{\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || $8b46995bfecb1b07$var$defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key)=>{\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction((0, $20MOv.default)({\n theme: theme\n }, props[key]));\n }\n return acc;\n }, null);\n return (0, $bs0XL.default)(base, extended);\n };\n newStyleFunction.propTypes = {};\n newStyleFunction.filterProps = [\n \"xs\",\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\",\n ...styleFunction.filterProps\n ];\n return newStyleFunction;\n}\nfunction $8b46995bfecb1b07$export$1f2600516e91381f(breakpointsInput = {}) {\n var _breakpointsInput$key;\n const breakpointsInOrder = breakpointsInput == null ? void 0 : (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key)=>{\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nfunction $8b46995bfecb1b07$export$8922c90b6e020726(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key)=>{\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) delete acc[key];\n return acc;\n }, style);\n}\nfunction $8b46995bfecb1b07$export$b89a003a1e05c0ee(breakpointsInput, ...styles) {\n const emptyBreakpoints = $8b46995bfecb1b07$export$1f2600516e91381f(breakpointsInput);\n const mergedOutput = [\n emptyBreakpoints,\n ...styles\n ].reduce((prev, next)=>(0, $jWrHX.default)(prev, next), {});\n return $8b46995bfecb1b07$export$8922c90b6e020726(Object.keys(emptyBreakpoints), mergedOutput);\n} // compute base for responsive values; e.g.,\nfunction $8b46995bfecb1b07$export$ead4e80eca2ebb85(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== \"object\") return {};\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) breakpointsKeys.forEach((breakpoint, i)=>{\n if (i < breakpointValues.length) base[breakpoint] = true;\n });\n else breakpointsKeys.forEach((breakpoint)=>{\n if (breakpointValues[breakpoint] != null) base[breakpoint] = true;\n });\n return base;\n}\nfunction $8b46995bfecb1b07$export$980e6a259d807490({ values: breakpointValues, breakpoints: themeBreakpoints, base: customBase }) {\n const base = customBase || $8b46995bfecb1b07$export$ead4e80eca2ebb85(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) return breakpointValues;\n let previous;\n return keys.reduce((acc, breakpoint, i)=>{\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous] || breakpointValues;\n previous = breakpoint;\n }\n return acc;\n }, {});\n}\nvar $8b46995bfecb1b07$export$2e2bcd8739ae039 = $8b46995bfecb1b07$var$breakpoints;\n\n});\nparcelRegister(\"bs0XL\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $85630e7367834496$export$2e2bcd8739ae039; });\n\nvar $jWrHX = parcelRequire(\"jWrHX\");\nfunction $85630e7367834496$var$merge(acc, item) {\n if (!item) return acc;\n return (0, $jWrHX.default)(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nvar $85630e7367834496$export$2e2bcd8739ae039 = $85630e7367834496$var$merge;\n\n});\n\n\nparcelRegister(\"1sJkf\", function(module, exports) {\n\n$parcel$export(module.exports, \"getPath\", function () { return $110b90a9a2989531$export$2aa3fd96c49a84a8; });\n$parcel$export(module.exports, \"default\", function () { return $110b90a9a2989531$export$2e2bcd8739ae039; });\n\nvar $9vGQi = parcelRequire(\"9vGQi\");\n\n\nvar $bXmqm = parcelRequire(\"bXmqm\");\nfunction $110b90a9a2989531$export$2aa3fd96c49a84a8(obj, path) {\n if (!path || typeof path !== \"string\") return null;\n return path.split(\".\").reduce((acc, item)=>acc && acc[item] ? acc[item] : null, obj);\n}\nfunction $110b90a9a2989531$var$getValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === \"function\") value = themeMapping(propValueFinal);\n else if (Array.isArray(themeMapping)) value = themeMapping[propValueFinal] || userValue;\n else value = $110b90a9a2989531$export$2aa3fd96c49a84a8(themeMapping, propValueFinal) || userValue;\n if (transform) value = transform(value);\n return value;\n}\nfunction $110b90a9a2989531$var$style(options) {\n const { prop: prop, cssProperty: cssProperty = options.prop, themeKey: themeKey, transform: transform } = options;\n const fn = (props)=>{\n if (props[prop] == null) return null;\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = $110b90a9a2989531$export$2aa3fd96c49a84a8(theme, themeKey) || {};\n const styleFromPropValue = (propValueFinal)=>{\n let value = $110b90a9a2989531$var$getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === \"string\") // Haven't found value\n value = $110b90a9a2989531$var$getValue(themeMapping, transform, `${prop}${propValueFinal === \"default\" ? \"\" : (0, $9vGQi.default)(propValueFinal)}`, propValueFinal);\n if (cssProperty === false) return value;\n return {\n [cssProperty]: value\n };\n };\n return (0, $bXmqm.handleBreakpoints)(props, propValue, styleFromPropValue);\n };\n fn.propTypes = {};\n fn.filterProps = [\n prop\n ];\n return fn;\n}\nvar $110b90a9a2989531$export$2e2bcd8739ae039 = $110b90a9a2989531$var$style;\n\n});\nparcelRegister(\"9vGQi\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6ec83dedc83ed9a4$export$2e2bcd8739ae039; });\n\nvar $awKLE = parcelRequire(\"awKLE\");\nfunction $6ec83dedc83ed9a4$export$2e2bcd8739ae039(string) {\n if (typeof string !== \"string\") throw new Error((0, $awKLE.default)(7));\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n});\nparcelRegister(\"awKLE\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $7aa12b98280af963$export$2e2bcd8739ae039; });\n/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/utils/macros/MuiError.macro` instead.\n * @param {number} code\n */ function $7aa12b98280af963$export$2e2bcd8739ae039(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe iff we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n /* eslint-disable prefer-template */ let url = \"https://mui.com/production-error/?code=\" + code;\n for(let i = 1; i < arguments.length; i += 1)// rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n return \"Minified MUI error #\" + code + \"; visit \" + url + \" for the full message.\";\n/* eslint-enable prefer-template */ }\n\n});\n\n\n\nparcelRegister(\"4fgLQ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $31759272fbdf9765$export$2e2bcd8739ae039; });\nfunction $31759272fbdf9765$export$2e2bcd8739ae039(fn) {\n const cache = {};\n return (arg)=>{\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\n});\n\n\n\n\nparcelRegister(\"g7YYH\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $bbdc99c3100a96c0$export$2e2bcd8739ae039; });\n\nvar $jxWMH = parcelRequire(\"jxWMH\");\nfunction $bbdc99c3100a96c0$var$isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction $bbdc99c3100a96c0$var$useTheme(defaultTheme = null) {\n const contextTheme = (0, $jxWMH.default)();\n return !contextTheme || $bbdc99c3100a96c0$var$isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nvar $bbdc99c3100a96c0$export$2e2bcd8739ae039 = $bbdc99c3100a96c0$var$useTheme;\n\n});\nparcelRegister(\"jxWMH\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $e3aeb2c7597694db$export$2e2bcd8739ae039; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $gCCs2 = parcelRequire(\"gCCs2\");\nfunction $e3aeb2c7597694db$export$2e2bcd8739ae039() {\n const theme = $70fFQ.useContext((0, $gCCs2.default));\n return theme;\n}\n\n});\nparcelRegister(\"gCCs2\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c19e058b1f20be97$export$2e2bcd8739ae039; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\nconst $c19e058b1f20be97$var$ThemeContext = /*#__PURE__*/ $70fFQ.createContext(null);\nvar $c19e058b1f20be97$export$2e2bcd8739ae039 = $c19e058b1f20be97$var$ThemeContext;\n\n});\n\n\n\n\n\nparcelRegister(\"7Rxn3\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $5b975e69d38cecb6$export$2e2bcd8739ae039; });\n\nvar $bMr3l = parcelRequire(\"bMr3l\");\nconst $5b975e69d38cecb6$var$defaultTheme = (0, $bMr3l.default)();\nvar $5b975e69d38cecb6$export$2e2bcd8739ae039 = $5b975e69d38cecb6$var$defaultTheme;\n\n});\nparcelRegister(\"bMr3l\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $893929896aef4ab0$export$2e2bcd8739ae039; });\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $jWrHX = parcelRequire(\"jWrHX\");\n\n\nvar $ketPc = parcelRequire(\"ketPc\");\n\nvar $fola9 = parcelRequire(\"fola9\");\n\nvar $bY67P = parcelRequire(\"bY67P\");\n\nvar $1yqBb = parcelRequire(\"1yqBb\");\n\nvar $aBxCC = parcelRequire(\"aBxCC\");\n\nvar $a3nje = parcelRequire(\"a3nje\");\n\nvar $ghwOB = parcelRequire(\"ghwOB\");\nconst $893929896aef4ab0$var$_excluded = [\n \"breakpoints\",\n \"mixins\",\n \"spacing\",\n \"palette\",\n \"transitions\",\n \"typography\",\n \"shape\"\n];\nfunction $893929896aef4ab0$var$createTheme(options = {}, ...args) {\n const { mixins: mixinsInput = {}, palette: paletteInput = {}, transitions: transitionsInput = {}, typography: typographyInput = {} } = options, other = (0, $79yYo.default)(options, $893929896aef4ab0$var$_excluded);\n const palette = (0, $bY67P.default)(paletteInput);\n const systemTheme = (0, $ketPc.default)(options);\n let muiTheme = (0, $jWrHX.default)(systemTheme, {\n mixins: (0, $fola9.default)(systemTheme.breakpoints, systemTheme.spacing, mixinsInput),\n palette: palette,\n // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n shadows: (0, $aBxCC.default).slice(),\n typography: (0, $1yqBb.default)(palette, typographyInput),\n transitions: (0, $a3nje.default)(transitionsInput),\n zIndex: (0, $20MOv.default)({}, (0, $ghwOB.default))\n });\n muiTheme = (0, $jWrHX.default)(muiTheme, other);\n muiTheme = args.reduce((acc, argument)=>(0, $jWrHX.default)(acc, argument), muiTheme);\n var component;\n return muiTheme;\n}\nlet $893929896aef4ab0$var$warnedOnce = false;\nfunction $893929896aef4ab0$export$c469355549431d9b(...args) {\n return $893929896aef4ab0$var$createTheme(...args);\n}\nvar $893929896aef4ab0$export$2e2bcd8739ae039 = $893929896aef4ab0$var$createTheme;\n\n});\nparcelRegister(\"fola9\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b34983688cc945c0$export$2e2bcd8739ae039; });\n\nvar $20MOv = parcelRequire(\"20MOv\");\nfunction $b34983688cc945c0$export$2e2bcd8739ae039(breakpoints, spacing, mixins) {\n return (0, $20MOv.default)({\n toolbar: {\n minHeight: 56,\n [`${breakpoints.up(\"xs\")} and (orientation: landscape)`]: {\n minHeight: 48\n },\n [breakpoints.up(\"sm\")]: {\n minHeight: 64\n }\n }\n }, mixins);\n}\n\n});\n\nparcelRegister(\"bY67P\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $8b6a0ca5867b71d9$export$2e2bcd8739ae039; });\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $jWrHX = parcelRequire(\"jWrHX\");\nvar $awKLE = parcelRequire(\"awKLE\");\n\nvar $bFVgt = parcelRequire(\"bFVgt\");\n\nvar $AC97U = parcelRequire(\"AC97U\");\n\nvar $eYsCg = parcelRequire(\"eYsCg\");\n\nvar $jibMW = parcelRequire(\"jibMW\");\n\nvar $d39yA = parcelRequire(\"d39yA\");\n\nvar $1QBMq = parcelRequire(\"1QBMq\");\n\nvar $aXDgw = parcelRequire(\"aXDgw\");\n\nvar $8mydd = parcelRequire(\"8mydd\");\n\nvar $du1yB = parcelRequire(\"du1yB\");\nconst $8b6a0ca5867b71d9$var$_excluded = [\n \"mode\",\n \"contrastThreshold\",\n \"tonalOffset\"\n];\nconst $8b6a0ca5867b71d9$export$a43af521ac8c3202 = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: \"rgba(0, 0, 0, 0.87)\",\n // Secondary text.\n secondary: \"rgba(0, 0, 0, 0.6)\",\n // Disabled text have even lower visual prominence.\n disabled: \"rgba(0, 0, 0, 0.38)\"\n },\n // The color used to divide different elements.\n divider: \"rgba(0, 0, 0, 0.12)\",\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: (0, $AC97U.default).white,\n default: (0, $AC97U.default).white\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: \"rgba(0, 0, 0, 0.54)\",\n // The color of an hovered action.\n hover: \"rgba(0, 0, 0, 0.04)\",\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: \"rgba(0, 0, 0, 0.08)\",\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: \"rgba(0, 0, 0, 0.26)\",\n // The background color of a disabled action.\n disabledBackground: \"rgba(0, 0, 0, 0.12)\",\n disabledOpacity: 0.38,\n focus: \"rgba(0, 0, 0, 0.12)\",\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nconst $8b6a0ca5867b71d9$export$55ce6f3a06c59543 = {\n text: {\n primary: (0, $AC97U.default).white,\n secondary: \"rgba(255, 255, 255, 0.7)\",\n disabled: \"rgba(255, 255, 255, 0.5)\",\n icon: \"rgba(255, 255, 255, 0.5)\"\n },\n divider: \"rgba(255, 255, 255, 0.12)\",\n background: {\n paper: \"#121212\",\n default: \"#121212\"\n },\n action: {\n active: (0, $AC97U.default).white,\n hover: \"rgba(255, 255, 255, 0.08)\",\n hoverOpacity: 0.08,\n selected: \"rgba(255, 255, 255, 0.16)\",\n selectedOpacity: 0.16,\n disabled: \"rgba(255, 255, 255, 0.3)\",\n disabledBackground: \"rgba(255, 255, 255, 0.12)\",\n disabledOpacity: 0.38,\n focus: \"rgba(255, 255, 255, 0.12)\",\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\nfunction $8b6a0ca5867b71d9$var$addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) intent[direction] = intent[shade];\n else if (direction === \"light\") intent.light = (0, $bFVgt.lighten)(intent.main, tonalOffsetLight);\n else if (direction === \"dark\") intent.dark = (0, $bFVgt.darken)(intent.main, tonalOffsetDark);\n }\n}\nfunction $8b6a0ca5867b71d9$var$getDefaultPrimary(mode = \"light\") {\n if (mode === \"dark\") return {\n main: (0, $aXDgw.default)[200],\n light: (0, $aXDgw.default)[50],\n dark: (0, $aXDgw.default)[400]\n };\n return {\n main: (0, $aXDgw.default)[700],\n light: (0, $aXDgw.default)[400],\n dark: (0, $aXDgw.default)[800]\n };\n}\nfunction $8b6a0ca5867b71d9$var$getDefaultSecondary(mode = \"light\") {\n if (mode === \"dark\") return {\n main: (0, $jibMW.default)[200],\n light: (0, $jibMW.default)[50],\n dark: (0, $jibMW.default)[400]\n };\n return {\n main: (0, $jibMW.default)[500],\n light: (0, $jibMW.default)[300],\n dark: (0, $jibMW.default)[700]\n };\n}\nfunction $8b6a0ca5867b71d9$var$getDefaultError(mode = \"light\") {\n if (mode === \"dark\") return {\n main: (0, $d39yA.default)[500],\n light: (0, $d39yA.default)[300],\n dark: (0, $d39yA.default)[700]\n };\n return {\n main: (0, $d39yA.default)[700],\n light: (0, $d39yA.default)[400],\n dark: (0, $d39yA.default)[800]\n };\n}\nfunction $8b6a0ca5867b71d9$var$getDefaultInfo(mode = \"light\") {\n if (mode === \"dark\") return {\n main: (0, $8mydd.default)[400],\n light: (0, $8mydd.default)[300],\n dark: (0, $8mydd.default)[700]\n };\n return {\n main: (0, $8mydd.default)[700],\n light: (0, $8mydd.default)[500],\n dark: (0, $8mydd.default)[900]\n };\n}\nfunction $8b6a0ca5867b71d9$var$getDefaultSuccess(mode = \"light\") {\n if (mode === \"dark\") return {\n main: (0, $du1yB.default)[400],\n light: (0, $du1yB.default)[300],\n dark: (0, $du1yB.default)[700]\n };\n return {\n main: (0, $du1yB.default)[800],\n light: (0, $du1yB.default)[500],\n dark: (0, $du1yB.default)[900]\n };\n}\nfunction $8b6a0ca5867b71d9$var$getDefaultWarning(mode = \"light\") {\n if (mode === \"dark\") return {\n main: (0, $1QBMq.default)[400],\n light: (0, $1QBMq.default)[300],\n dark: (0, $1QBMq.default)[700]\n };\n return {\n main: \"#ed6c02\",\n // closest to orange[800] that pass 3:1.\n light: (0, $1QBMq.default)[500],\n dark: (0, $1QBMq.default)[900]\n };\n}\nfunction $8b6a0ca5867b71d9$export$2e2bcd8739ae039(palette) {\n const { mode: mode = \"light\", contrastThreshold: contrastThreshold = 3, tonalOffset: tonalOffset = 0.2 } = palette, other = (0, $79yYo.default)(palette, $8b6a0ca5867b71d9$var$_excluded);\n const primary = palette.primary || $8b6a0ca5867b71d9$var$getDefaultPrimary(mode);\n const secondary = palette.secondary || $8b6a0ca5867b71d9$var$getDefaultSecondary(mode);\n const error = palette.error || $8b6a0ca5867b71d9$var$getDefaultError(mode);\n const info = palette.info || $8b6a0ca5867b71d9$var$getDefaultInfo(mode);\n const success = palette.success || $8b6a0ca5867b71d9$var$getDefaultSuccess(mode);\n const warning = palette.warning || $8b6a0ca5867b71d9$var$getDefaultWarning(mode); // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n function getContrastText(background) {\n const contrastText = (0, $bFVgt.getContrastRatio)(background, $8b6a0ca5867b71d9$export$55ce6f3a06c59543.text.primary) >= contrastThreshold ? $8b6a0ca5867b71d9$export$55ce6f3a06c59543.text.primary : $8b6a0ca5867b71d9$export$a43af521ac8c3202.text.primary;\n return contrastText;\n }\n const augmentColor = ({ color: color, name: name, mainShade: mainShade = 500, lightShade: lightShade = 300, darkShade: darkShade = 700 })=>{\n color = (0, $20MOv.default)({}, color);\n if (!color.main && color[mainShade]) color.main = color[mainShade];\n if (!color.hasOwnProperty(\"main\")) throw new Error((0, $awKLE.default)(11, name ? ` (${name})` : \"\", mainShade));\n if (typeof color.main !== \"string\") throw new Error((0, $awKLE.default)(12, name ? ` (${name})` : \"\", JSON.stringify(color.main)));\n $8b6a0ca5867b71d9$var$addLightOrDark(color, \"light\", lightShade, tonalOffset);\n $8b6a0ca5867b71d9$var$addLightOrDark(color, \"dark\", darkShade, tonalOffset);\n if (!color.contrastText) color.contrastText = getContrastText(color.main);\n return color;\n };\n const modes = {\n dark: $8b6a0ca5867b71d9$export$55ce6f3a06c59543,\n light: $8b6a0ca5867b71d9$export$a43af521ac8c3202\n };\n const paletteOutput = (0, $jWrHX.default)((0, $20MOv.default)({\n common: // A collection of common colors.\n $AC97U.default,\n mode: // The palette mode, can be light or dark.\n mode,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor({\n color: primary,\n name: \"primary\"\n }),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor({\n color: secondary,\n name: \"secondary\",\n mainShade: \"A400\",\n lightShade: \"A200\",\n darkShade: \"A700\"\n }),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor({\n color: error,\n name: \"error\"\n }),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor({\n color: warning,\n name: \"warning\"\n }),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor({\n color: info,\n name: \"info\"\n }),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor({\n color: success,\n name: \"success\"\n }),\n grey: // The grey colors.\n $eYsCg.default,\n contrastThreshold: // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold,\n getContrastText: // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText,\n augmentColor: // Generate a rich color object.\n augmentColor,\n tonalOffset: // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset\n }, modes[mode]), other);\n return paletteOutput;\n}\n\n});\nparcelRegister(\"bFVgt\", function(module, exports) {\n\n$parcel$export(module.exports, \"getContrastRatio\", function () { return $87fff1a2e98892b5$export$d061e26956a60b0a; });\n$parcel$export(module.exports, \"alpha\", function () { return $87fff1a2e98892b5$export$58f0f39f63f3cf42; });\n$parcel$export(module.exports, \"darken\", function () { return $87fff1a2e98892b5$export$4b073707ff63303; });\n$parcel$export(module.exports, \"lighten\", function () { return $87fff1a2e98892b5$export$c0816ed86df316af; });\n$parcel$export(module.exports, \"emphasize\", function () { return $87fff1a2e98892b5$export$e665714f76e581fd; });\n\nvar $awKLE = parcelRequire(\"awKLE\");\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */ function $87fff1a2e98892b5$var$clamp(value, min = 0, max = 1) {\n return Math.min(Math.max(min, value), max);\n}\nfunction $87fff1a2e98892b5$export$5a544e13ad4e1fa5(color) {\n color = color.substr(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, \"g\");\n let colors = color.match(re);\n if (colors && colors[0].length === 1) colors = colors.map((n)=>n + n);\n return colors ? `rgb${colors.length === 4 ? \"a\" : \"\"}(${colors.map((n, index)=>{\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(\", \")})` : \"\";\n}\nfunction $87fff1a2e98892b5$var$intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\nfunction $87fff1a2e98892b5$export$677b39864803984e(color) {\n // Idempotent\n if (color.type) return color;\n if (color.charAt(0) === \"#\") return $87fff1a2e98892b5$export$677b39864803984e($87fff1a2e98892b5$export$5a544e13ad4e1fa5(color));\n const marker = color.indexOf(\"(\");\n const type = color.substring(0, marker);\n if ([\n \"rgb\",\n \"rgba\",\n \"hsl\",\n \"hsla\",\n \"color\"\n ].indexOf(type) === -1) throw new Error((0, $awKLE.default)(9, color));\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n if (type === \"color\") {\n values = values.split(\" \");\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === \"/\") values[3] = values[3].substr(1);\n if ([\n \"srgb\",\n \"display-p3\",\n \"a98-rgb\",\n \"prophoto-rgb\",\n \"rec-2020\"\n ].indexOf(colorSpace) === -1) throw new Error((0, $awKLE.default)(10, colorSpace));\n } else values = values.split(\",\");\n values = values.map((value)=>parseFloat(value));\n return {\n type: type,\n values: values,\n colorSpace: colorSpace\n };\n}\nfunction $87fff1a2e98892b5$export$211a73f2b8c10ce4(color) {\n const { type: type, colorSpace: colorSpace } = color;\n let { values: values } = color;\n if (type.indexOf(\"rgb\") !== -1) // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i)=>i < 3 ? parseInt(n, 10) : n);\n else if (type.indexOf(\"hsl\") !== -1) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n if (type.indexOf(\"color\") !== -1) values = `${colorSpace} ${values.join(\" \")}`;\n else values = `${values.join(\", \")}`;\n return `${type}(${values})`;\n}\nfunction $87fff1a2e98892b5$export$34d09c4a771c46ef(color) {\n // Idempotent\n if (color.indexOf(\"#\") === 0) return color;\n const { values: values } = $87fff1a2e98892b5$export$677b39864803984e(color);\n return `#${values.map((n, i)=>$87fff1a2e98892b5$var$intToHex(i === 3 ? Math.round(255 * n) : n)).join(\"\")}`;\n}\nfunction $87fff1a2e98892b5$export$29fb7152bd3f781a(color) {\n color = $87fff1a2e98892b5$export$677b39864803984e(color);\n const { values: values } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12)=>l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = \"rgb\";\n const rgb = [\n Math.round(f(0) * 255),\n Math.round(f(8) * 255),\n Math.round(f(4) * 255)\n ];\n if (color.type === \"hsla\") {\n type += \"a\";\n rgb.push(values[3]);\n }\n return $87fff1a2e98892b5$export$211a73f2b8c10ce4({\n type: type,\n values: rgb\n });\n}\nfunction $87fff1a2e98892b5$export$c852d90bf7403b62(color) {\n color = $87fff1a2e98892b5$export$677b39864803984e(color);\n let rgb = color.type === \"hsl\" ? $87fff1a2e98892b5$export$677b39864803984e($87fff1a2e98892b5$export$29fb7152bd3f781a(color)).values : color.values;\n rgb = rgb.map((val)=>{\n if (color.type !== \"color\") val /= 255; // normalized\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n }); // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\nfunction $87fff1a2e98892b5$export$d061e26956a60b0a(foreground, background) {\n const lumA = $87fff1a2e98892b5$export$c852d90bf7403b62(foreground);\n const lumB = $87fff1a2e98892b5$export$c852d90bf7403b62(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\nfunction $87fff1a2e98892b5$export$58f0f39f63f3cf42(color, value) {\n color = $87fff1a2e98892b5$export$677b39864803984e(color);\n value = $87fff1a2e98892b5$var$clamp(value);\n if (color.type === \"rgb\" || color.type === \"hsl\") color.type += \"a\";\n if (color.type === \"color\") color.values[3] = `/${value}`;\n else color.values[3] = value;\n return $87fff1a2e98892b5$export$211a73f2b8c10ce4(color);\n}\nfunction $87fff1a2e98892b5$export$4b073707ff63303(color, coefficient) {\n color = $87fff1a2e98892b5$export$677b39864803984e(color);\n coefficient = $87fff1a2e98892b5$var$clamp(coefficient);\n if (color.type.indexOf(\"hsl\") !== -1) color.values[2] *= 1 - coefficient;\n else if (color.type.indexOf(\"rgb\") !== -1 || color.type.indexOf(\"color\") !== -1) for(let i = 0; i < 3; i += 1)color.values[i] *= 1 - coefficient;\n return $87fff1a2e98892b5$export$211a73f2b8c10ce4(color);\n}\nfunction $87fff1a2e98892b5$export$c0816ed86df316af(color, coefficient) {\n color = $87fff1a2e98892b5$export$677b39864803984e(color);\n coefficient = $87fff1a2e98892b5$var$clamp(coefficient);\n if (color.type.indexOf(\"hsl\") !== -1) color.values[2] += (100 - color.values[2]) * coefficient;\n else if (color.type.indexOf(\"rgb\") !== -1) for(let i = 0; i < 3; i += 1)color.values[i] += (255 - color.values[i]) * coefficient;\n else if (color.type.indexOf(\"color\") !== -1) for(let i = 0; i < 3; i += 1)color.values[i] += (1 - color.values[i]) * coefficient;\n return $87fff1a2e98892b5$export$211a73f2b8c10ce4(color);\n}\nfunction $87fff1a2e98892b5$export$e665714f76e581fd(color, coefficient = 0.15) {\n return $87fff1a2e98892b5$export$c852d90bf7403b62(color) > 0.5 ? $87fff1a2e98892b5$export$4b073707ff63303(color, coefficient) : $87fff1a2e98892b5$export$c0816ed86df316af(color, coefficient);\n}\n\n});\n\nparcelRegister(\"AC97U\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $06e0f3f2d3f967e6$export$2e2bcd8739ae039; });\nconst $06e0f3f2d3f967e6$var$common = {\n black: \"#000\",\n white: \"#fff\"\n};\nvar $06e0f3f2d3f967e6$export$2e2bcd8739ae039 = $06e0f3f2d3f967e6$var$common;\n\n});\n\nparcelRegister(\"eYsCg\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ae6cddd585bc4db0$export$2e2bcd8739ae039; });\nconst $ae6cddd585bc4db0$var$grey = {\n 50: \"#fafafa\",\n 100: \"#f5f5f5\",\n 200: \"#eeeeee\",\n 300: \"#e0e0e0\",\n 400: \"#bdbdbd\",\n 500: \"#9e9e9e\",\n 600: \"#757575\",\n 700: \"#616161\",\n 800: \"#424242\",\n 900: \"#212121\",\n A100: \"#f5f5f5\",\n A200: \"#eeeeee\",\n A400: \"#bdbdbd\",\n A700: \"#616161\"\n};\nvar $ae6cddd585bc4db0$export$2e2bcd8739ae039 = $ae6cddd585bc4db0$var$grey;\n\n});\n\nparcelRegister(\"jibMW\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $e0b8d7afde082243$export$2e2bcd8739ae039; });\nconst $e0b8d7afde082243$var$purple = {\n 50: \"#f3e5f5\",\n 100: \"#e1bee7\",\n 200: \"#ce93d8\",\n 300: \"#ba68c8\",\n 400: \"#ab47bc\",\n 500: \"#9c27b0\",\n 600: \"#8e24aa\",\n 700: \"#7b1fa2\",\n 800: \"#6a1b9a\",\n 900: \"#4a148c\",\n A100: \"#ea80fc\",\n A200: \"#e040fb\",\n A400: \"#d500f9\",\n A700: \"#aa00ff\"\n};\nvar $e0b8d7afde082243$export$2e2bcd8739ae039 = $e0b8d7afde082243$var$purple;\n\n});\n\nparcelRegister(\"d39yA\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9802f7fa7d8fab2a$export$2e2bcd8739ae039; });\nconst $9802f7fa7d8fab2a$var$red = {\n 50: \"#ffebee\",\n 100: \"#ffcdd2\",\n 200: \"#ef9a9a\",\n 300: \"#e57373\",\n 400: \"#ef5350\",\n 500: \"#f44336\",\n 600: \"#e53935\",\n 700: \"#d32f2f\",\n 800: \"#c62828\",\n 900: \"#b71c1c\",\n A100: \"#ff8a80\",\n A200: \"#ff5252\",\n A400: \"#ff1744\",\n A700: \"#d50000\"\n};\nvar $9802f7fa7d8fab2a$export$2e2bcd8739ae039 = $9802f7fa7d8fab2a$var$red;\n\n});\n\nparcelRegister(\"1QBMq\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $1587f41f904ad438$export$2e2bcd8739ae039; });\nconst $1587f41f904ad438$var$orange = {\n 50: \"#fff3e0\",\n 100: \"#ffe0b2\",\n 200: \"#ffcc80\",\n 300: \"#ffb74d\",\n 400: \"#ffa726\",\n 500: \"#ff9800\",\n 600: \"#fb8c00\",\n 700: \"#f57c00\",\n 800: \"#ef6c00\",\n 900: \"#e65100\",\n A100: \"#ffd180\",\n A200: \"#ffab40\",\n A400: \"#ff9100\",\n A700: \"#ff6d00\"\n};\nvar $1587f41f904ad438$export$2e2bcd8739ae039 = $1587f41f904ad438$var$orange;\n\n});\n\nparcelRegister(\"aXDgw\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $7faddf63a46da71b$export$2e2bcd8739ae039; });\nconst $7faddf63a46da71b$var$blue = {\n 50: \"#e3f2fd\",\n 100: \"#bbdefb\",\n 200: \"#90caf9\",\n 300: \"#64b5f6\",\n 400: \"#42a5f5\",\n 500: \"#2196f3\",\n 600: \"#1e88e5\",\n 700: \"#1976d2\",\n 800: \"#1565c0\",\n 900: \"#0d47a1\",\n A100: \"#82b1ff\",\n A200: \"#448aff\",\n A400: \"#2979ff\",\n A700: \"#2962ff\"\n};\nvar $7faddf63a46da71b$export$2e2bcd8739ae039 = $7faddf63a46da71b$var$blue;\n\n});\n\nparcelRegister(\"8mydd\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $616aeaa36fc557ad$export$2e2bcd8739ae039; });\nconst $616aeaa36fc557ad$var$lightBlue = {\n 50: \"#e1f5fe\",\n 100: \"#b3e5fc\",\n 200: \"#81d4fa\",\n 300: \"#4fc3f7\",\n 400: \"#29b6f6\",\n 500: \"#03a9f4\",\n 600: \"#039be5\",\n 700: \"#0288d1\",\n 800: \"#0277bd\",\n 900: \"#01579b\",\n A100: \"#80d8ff\",\n A200: \"#40c4ff\",\n A400: \"#00b0ff\",\n A700: \"#0091ea\"\n};\nvar $616aeaa36fc557ad$export$2e2bcd8739ae039 = $616aeaa36fc557ad$var$lightBlue;\n\n});\n\nparcelRegister(\"du1yB\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9d0f48e6a9341174$export$2e2bcd8739ae039; });\nconst $9d0f48e6a9341174$var$green = {\n 50: \"#e8f5e9\",\n 100: \"#c8e6c9\",\n 200: \"#a5d6a7\",\n 300: \"#81c784\",\n 400: \"#66bb6a\",\n 500: \"#4caf50\",\n 600: \"#43a047\",\n 700: \"#388e3c\",\n 800: \"#2e7d32\",\n 900: \"#1b5e20\",\n A100: \"#b9f6ca\",\n A200: \"#69f0ae\",\n A400: \"#00e676\",\n A700: \"#00c853\"\n};\nvar $9d0f48e6a9341174$export$2e2bcd8739ae039 = $9d0f48e6a9341174$var$green;\n\n});\n\n\nparcelRegister(\"1yqBb\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $121d995c3c1a526c$export$2e2bcd8739ae039; });\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $jWrHX = parcelRequire(\"jWrHX\");\nconst $121d995c3c1a526c$var$_excluded = [\n \"fontFamily\",\n \"fontSize\",\n \"fontWeightLight\",\n \"fontWeightRegular\",\n \"fontWeightMedium\",\n \"fontWeightBold\",\n \"htmlFontSize\",\n \"allVariants\",\n \"pxToRem\"\n];\nfunction $121d995c3c1a526c$var$round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst $121d995c3c1a526c$var$caseAllCaps = {\n textTransform: \"uppercase\"\n};\nconst $121d995c3c1a526c$var$defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\nfunction $121d995c3c1a526c$export$2e2bcd8739ae039(palette, typography) {\n const _ref = typeof typography === \"function\" ? typography(palette) : typography, { fontFamily: fontFamily = $121d995c3c1a526c$var$defaultFontFamily, fontSize: // The default font size of the Material Specification.\n fontSize = 14, fontWeightLight: // px\n fontWeightLight = 300, fontWeightRegular: fontWeightRegular = 400, fontWeightMedium: fontWeightMedium = 500, fontWeightBold: fontWeightBold = 700, htmlFontSize: // Tell MUI what's the font-size on the html element.\n // 16px is the default font-size used by browsers.\n htmlFontSize = 16, allVariants: // Apply the CSS properties to all the variants.\n allVariants, pxToRem: pxToRem2 } = _ref, other = (0, $79yYo.default)(_ref, $121d995c3c1a526c$var$_excluded);\n const coef = fontSize / 14;\n const pxToRem = pxToRem2 || ((size)=>`${size / htmlFontSize * coef}rem`);\n const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing)=>(0, $20MOv.default)({\n fontFamily: fontFamily,\n fontWeight: fontWeight,\n fontSize: pxToRem(size),\n lineHeight: // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight\n }, fontFamily === $121d995c3c1a526c$var$defaultFontFamily ? {\n letterSpacing: `${$121d995c3c1a526c$var$round(letterSpacing / size)}em`\n } : {}, casing, allVariants);\n const variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, $121d995c3c1a526c$var$caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, $121d995c3c1a526c$var$caseAllCaps)\n };\n return (0, $jWrHX.default)((0, $20MOv.default)({\n htmlFontSize: htmlFontSize,\n pxToRem: pxToRem,\n fontFamily: fontFamily,\n fontSize: fontSize,\n fontWeightLight: fontWeightLight,\n fontWeightRegular: fontWeightRegular,\n fontWeightMedium: fontWeightMedium,\n fontWeightBold: fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n });\n}\n\n});\n\nparcelRegister(\"aBxCC\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $7b8770b6488b69cf$export$2e2bcd8739ae039; });\nconst $7b8770b6488b69cf$var$shadowKeyUmbraOpacity = 0.2;\nconst $7b8770b6488b69cf$var$shadowKeyPenumbraOpacity = 0.14;\nconst $7b8770b6488b69cf$var$shadowAmbientShadowOpacity = 0.12;\nfunction $7b8770b6488b69cf$var$createShadow(...px) {\n return [\n `${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${$7b8770b6488b69cf$var$shadowKeyUmbraOpacity})`,\n `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${$7b8770b6488b69cf$var$shadowKeyPenumbraOpacity})`,\n `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${$7b8770b6488b69cf$var$shadowAmbientShadowOpacity})`\n ].join(\",\");\n} // Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst $7b8770b6488b69cf$var$shadows = [\n \"none\",\n $7b8770b6488b69cf$var$createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0),\n $7b8770b6488b69cf$var$createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0),\n $7b8770b6488b69cf$var$createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0),\n $7b8770b6488b69cf$var$createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0),\n $7b8770b6488b69cf$var$createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0),\n $7b8770b6488b69cf$var$createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0),\n $7b8770b6488b69cf$var$createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1),\n $7b8770b6488b69cf$var$createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2),\n $7b8770b6488b69cf$var$createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2),\n $7b8770b6488b69cf$var$createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3),\n $7b8770b6488b69cf$var$createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3),\n $7b8770b6488b69cf$var$createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4),\n $7b8770b6488b69cf$var$createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4),\n $7b8770b6488b69cf$var$createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4),\n $7b8770b6488b69cf$var$createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5),\n $7b8770b6488b69cf$var$createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5),\n $7b8770b6488b69cf$var$createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5),\n $7b8770b6488b69cf$var$createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6),\n $7b8770b6488b69cf$var$createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6),\n $7b8770b6488b69cf$var$createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7),\n $7b8770b6488b69cf$var$createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7),\n $7b8770b6488b69cf$var$createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7),\n $7b8770b6488b69cf$var$createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8),\n $7b8770b6488b69cf$var$createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)\n];\nvar $7b8770b6488b69cf$export$2e2bcd8739ae039 = $7b8770b6488b69cf$var$shadows;\n\n});\n\nparcelRegister(\"a3nje\", function(module, exports) {\n\n$parcel$export(module.exports, \"duration\", function () { return $751c43e6fb576b43$export$1f34108aa9eb96ab; });\n$parcel$export(module.exports, \"default\", function () { return $751c43e6fb576b43$export$2e2bcd8739ae039; });\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $20MOv = parcelRequire(\"20MOv\");\nconst $751c43e6fb576b43$var$_excluded = [\n \"duration\",\n \"easing\",\n \"delay\"\n];\nconst $751c43e6fb576b43$export$24c5ac7c37452e7d = {\n // This is the most common easing curve.\n easeInOut: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: \"cubic-bezier(0.0, 0, 0.2, 1)\",\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: \"cubic-bezier(0.4, 0, 1, 1)\",\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: \"cubic-bezier(0.4, 0, 0.6, 1)\"\n}; // Follow https://material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\nconst $751c43e6fb576b43$export$1f34108aa9eb96ab = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nfunction $751c43e6fb576b43$var$formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\nfunction $751c43e6fb576b43$var$getAutoHeightDuration(height) {\n if (!height) return 0;\n const constant = height / 36; // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nfunction $751c43e6fb576b43$export$2e2bcd8739ae039(inputTransitions) {\n const mergedEasing = (0, $20MOv.default)({}, $751c43e6fb576b43$export$24c5ac7c37452e7d, inputTransitions.easing);\n const mergedDuration = (0, $20MOv.default)({}, $751c43e6fb576b43$export$1f34108aa9eb96ab, inputTransitions.duration);\n const create = (props = [\n \"all\"\n ], options = {})=>{\n const { duration: durationOption = mergedDuration.standard, easing: easingOption = mergedEasing.easeInOut, delay: delay = 0 } = options, other = (0, $79yYo.default)(options, $751c43e6fb576b43$var$_excluded);\n return (Array.isArray(props) ? props : [\n props\n ]).map((animatedProp)=>`${animatedProp} ${typeof durationOption === \"string\" ? durationOption : $751c43e6fb576b43$var$formatMs(durationOption)} ${easingOption} ${typeof delay === \"string\" ? delay : $751c43e6fb576b43$var$formatMs(delay)}`).join(\",\");\n };\n return (0, $20MOv.default)({\n getAutoHeightDuration: $751c43e6fb576b43$var$getAutoHeightDuration,\n create: create\n }, inputTransitions, {\n easing: mergedEasing,\n duration: mergedDuration\n });\n}\n\n});\n\nparcelRegister(\"ghwOB\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $bda7b04dadfecb4c$export$2e2bcd8739ae039; });\n// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst $bda7b04dadfecb4c$var$zIndex = {\n mobileStepper: 1000,\n fab: 1050,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nvar $bda7b04dadfecb4c$export$2e2bcd8739ae039 = $bda7b04dadfecb4c$var$zIndex;\n\n});\n\n\n\n\nparcelRegister(\"6mXVL\", function(module, exports) {\n\"use strict\";\n\nvar $koAO1 = parcelRequire(\"koAO1\");\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */ var $4a334922dedd850b$var$REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar $4a334922dedd850b$var$KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar $4a334922dedd850b$var$FORWARD_REF_STATICS = {\n \"$$typeof\": true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar $4a334922dedd850b$var$MEMO_STATICS = {\n \"$$typeof\": true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar $4a334922dedd850b$var$TYPE_STATICS = {};\n$4a334922dedd850b$var$TYPE_STATICS[$koAO1.ForwardRef] = $4a334922dedd850b$var$FORWARD_REF_STATICS;\n$4a334922dedd850b$var$TYPE_STATICS[$koAO1.Memo] = $4a334922dedd850b$var$MEMO_STATICS;\nfunction $4a334922dedd850b$var$getStatics(component) {\n // React v16.11 and below\n if ($koAO1.isMemo(component)) return $4a334922dedd850b$var$MEMO_STATICS;\n // React v16.12 and above\n return $4a334922dedd850b$var$TYPE_STATICS[component[\"$$typeof\"]] || $4a334922dedd850b$var$REACT_STATICS;\n}\nvar $4a334922dedd850b$var$defineProperty = Object.defineProperty;\nvar $4a334922dedd850b$var$getOwnPropertyNames = Object.getOwnPropertyNames;\nvar $4a334922dedd850b$var$getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar $4a334922dedd850b$var$getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar $4a334922dedd850b$var$getPrototypeOf = Object.getPrototypeOf;\nvar $4a334922dedd850b$var$objectPrototype = Object.prototype;\nfunction $4a334922dedd850b$var$hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== \"string\") {\n // don't hoist over string (html) components\n if ($4a334922dedd850b$var$objectPrototype) {\n var inheritedComponent = $4a334922dedd850b$var$getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== $4a334922dedd850b$var$objectPrototype) $4a334922dedd850b$var$hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n var keys = $4a334922dedd850b$var$getOwnPropertyNames(sourceComponent);\n if ($4a334922dedd850b$var$getOwnPropertySymbols) keys = keys.concat($4a334922dedd850b$var$getOwnPropertySymbols(sourceComponent));\n var targetStatics = $4a334922dedd850b$var$getStatics(targetComponent);\n var sourceStatics = $4a334922dedd850b$var$getStatics(sourceComponent);\n for(var i = 0; i < keys.length; ++i){\n var key = keys[i];\n if (!$4a334922dedd850b$var$KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = $4a334922dedd850b$var$getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n $4a334922dedd850b$var$defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n return targetComponent;\n}\nmodule.exports = $4a334922dedd850b$var$hoistNonReactStatics;\n\n});\nparcelRegister(\"koAO1\", function(module, exports) {\n\"use strict\";\n\nmodule.exports = (parcelRequire(\"4GSL4\"));\n\n});\nparcelRegister(\"4GSL4\", function(module, exports) {\n\n$parcel$export(module.exports, \"AsyncMode\", function () { return $36a58f7b27f0109b$export$2b8d127b894957b9; }, function (v) { return $36a58f7b27f0109b$export$2b8d127b894957b9 = v; });\n$parcel$export(module.exports, \"ConcurrentMode\", function () { return $36a58f7b27f0109b$export$cea3a54a6425200c; }, function (v) { return $36a58f7b27f0109b$export$cea3a54a6425200c = v; });\n$parcel$export(module.exports, \"ContextConsumer\", function () { return $36a58f7b27f0109b$export$a7c73072b1a182ae; }, function (v) { return $36a58f7b27f0109b$export$a7c73072b1a182ae = v; });\n$parcel$export(module.exports, \"ContextProvider\", function () { return $36a58f7b27f0109b$export$9f27bc3417b4524d; }, function (v) { return $36a58f7b27f0109b$export$9f27bc3417b4524d = v; });\n$parcel$export(module.exports, \"Element\", function () { return $36a58f7b27f0109b$export$db77ccec0bb4ccac; }, function (v) { return $36a58f7b27f0109b$export$db77ccec0bb4ccac = v; });\n$parcel$export(module.exports, \"ForwardRef\", function () { return $36a58f7b27f0109b$export$8392c0c9d3dcbd35; }, function (v) { return $36a58f7b27f0109b$export$8392c0c9d3dcbd35 = v; });\n$parcel$export(module.exports, \"Fragment\", function () { return $36a58f7b27f0109b$export$ffb0004e005737fa; }, function (v) { return $36a58f7b27f0109b$export$ffb0004e005737fa = v; });\n$parcel$export(module.exports, \"Lazy\", function () { return $36a58f7b27f0109b$export$b624eff549462981; }, function (v) { return $36a58f7b27f0109b$export$b624eff549462981 = v; });\n$parcel$export(module.exports, \"Memo\", function () { return $36a58f7b27f0109b$export$7897aa7841a5380c; }, function (v) { return $36a58f7b27f0109b$export$7897aa7841a5380c = v; });\n$parcel$export(module.exports, \"Portal\", function () { return $36a58f7b27f0109b$export$602eac185826482c; }, function (v) { return $36a58f7b27f0109b$export$602eac185826482c = v; });\n$parcel$export(module.exports, \"Profiler\", function () { return $36a58f7b27f0109b$export$e2c29f18771995cb; }, function (v) { return $36a58f7b27f0109b$export$e2c29f18771995cb = v; });\n$parcel$export(module.exports, \"StrictMode\", function () { return $36a58f7b27f0109b$export$5f8d39834fd61797; }, function (v) { return $36a58f7b27f0109b$export$5f8d39834fd61797 = v; });\n$parcel$export(module.exports, \"Suspense\", function () { return $36a58f7b27f0109b$export$74bf444e3cd11ea5; }, function (v) { return $36a58f7b27f0109b$export$74bf444e3cd11ea5 = v; });\n$parcel$export(module.exports, \"isAsyncMode\", function () { return $36a58f7b27f0109b$export$92387174baf9b227; }, function (v) { return $36a58f7b27f0109b$export$92387174baf9b227 = v; });\n$parcel$export(module.exports, \"isConcurrentMode\", function () { return $36a58f7b27f0109b$export$ec112efeb987d9c6; }, function (v) { return $36a58f7b27f0109b$export$ec112efeb987d9c6 = v; });\n$parcel$export(module.exports, \"isContextConsumer\", function () { return $36a58f7b27f0109b$export$b706b080d889d2c9; }, function (v) { return $36a58f7b27f0109b$export$b706b080d889d2c9 = v; });\n$parcel$export(module.exports, \"isContextProvider\", function () { return $36a58f7b27f0109b$export$5be5a87408f70ddc; }, function (v) { return $36a58f7b27f0109b$export$5be5a87408f70ddc = v; });\n$parcel$export(module.exports, \"isElement\", function () { return $36a58f7b27f0109b$export$45a5e7f76e0caa8d; }, function (v) { return $36a58f7b27f0109b$export$45a5e7f76e0caa8d = v; });\n$parcel$export(module.exports, \"isForwardRef\", function () { return $36a58f7b27f0109b$export$455c2e768291efa6; }, function (v) { return $36a58f7b27f0109b$export$455c2e768291efa6 = v; });\n$parcel$export(module.exports, \"isFragment\", function () { return $36a58f7b27f0109b$export$9522e17588c12572; }, function (v) { return $36a58f7b27f0109b$export$9522e17588c12572 = v; });\n$parcel$export(module.exports, \"isLazy\", function () { return $36a58f7b27f0109b$export$2110ac352bb060b9; }, function (v) { return $36a58f7b27f0109b$export$2110ac352bb060b9 = v; });\n$parcel$export(module.exports, \"isMemo\", function () { return $36a58f7b27f0109b$export$56885ab8b9c456ab; }, function (v) { return $36a58f7b27f0109b$export$56885ab8b9c456ab = v; });\n$parcel$export(module.exports, \"isPortal\", function () { return $36a58f7b27f0109b$export$d927fcb6adf8f9de; }, function (v) { return $36a58f7b27f0109b$export$d927fcb6adf8f9de = v; });\n$parcel$export(module.exports, \"isProfiler\", function () { return $36a58f7b27f0109b$export$b82d16f27459e05a; }, function (v) { return $36a58f7b27f0109b$export$b82d16f27459e05a = v; });\n$parcel$export(module.exports, \"isStrictMode\", function () { return $36a58f7b27f0109b$export$522c17b4f5e123e8; }, function (v) { return $36a58f7b27f0109b$export$522c17b4f5e123e8 = v; });\n$parcel$export(module.exports, \"isSuspense\", function () { return $36a58f7b27f0109b$export$1aabd8a0274ecfd6; }, function (v) { return $36a58f7b27f0109b$export$1aabd8a0274ecfd6 = v; });\n$parcel$export(module.exports, \"isValidElementType\", function () { return $36a58f7b27f0109b$export$9b621391a187a31a; }, function (v) { return $36a58f7b27f0109b$export$9b621391a187a31a = v; });\n$parcel$export(module.exports, \"typeOf\", function () { return $36a58f7b27f0109b$export$f5bbd400c2f4426f; }, function (v) { return $36a58f7b27f0109b$export$f5bbd400c2f4426f = v; });\n/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */ var $36a58f7b27f0109b$export$2b8d127b894957b9;\nvar $36a58f7b27f0109b$export$cea3a54a6425200c;\nvar $36a58f7b27f0109b$export$a7c73072b1a182ae;\nvar $36a58f7b27f0109b$export$9f27bc3417b4524d;\nvar $36a58f7b27f0109b$export$db77ccec0bb4ccac;\nvar $36a58f7b27f0109b$export$8392c0c9d3dcbd35;\nvar $36a58f7b27f0109b$export$ffb0004e005737fa;\nvar $36a58f7b27f0109b$export$b624eff549462981;\nvar $36a58f7b27f0109b$export$7897aa7841a5380c;\nvar $36a58f7b27f0109b$export$602eac185826482c;\nvar $36a58f7b27f0109b$export$e2c29f18771995cb;\nvar $36a58f7b27f0109b$export$5f8d39834fd61797;\nvar $36a58f7b27f0109b$export$74bf444e3cd11ea5;\nvar $36a58f7b27f0109b$export$92387174baf9b227;\nvar $36a58f7b27f0109b$export$ec112efeb987d9c6;\nvar $36a58f7b27f0109b$export$b706b080d889d2c9;\nvar $36a58f7b27f0109b$export$5be5a87408f70ddc;\nvar $36a58f7b27f0109b$export$45a5e7f76e0caa8d;\nvar $36a58f7b27f0109b$export$455c2e768291efa6;\nvar $36a58f7b27f0109b$export$9522e17588c12572;\nvar $36a58f7b27f0109b$export$2110ac352bb060b9;\nvar $36a58f7b27f0109b$export$56885ab8b9c456ab;\nvar $36a58f7b27f0109b$export$d927fcb6adf8f9de;\nvar $36a58f7b27f0109b$export$b82d16f27459e05a;\nvar $36a58f7b27f0109b$export$522c17b4f5e123e8;\nvar $36a58f7b27f0109b$export$1aabd8a0274ecfd6;\nvar $36a58f7b27f0109b$export$9b621391a187a31a;\nvar $36a58f7b27f0109b$export$f5bbd400c2f4426f;\n\"use strict\";\nvar $36a58f7b27f0109b$var$b = \"function\" === typeof Symbol && Symbol.for, $36a58f7b27f0109b$var$c = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.element\") : 60103, $36a58f7b27f0109b$var$d = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.portal\") : 60106, $36a58f7b27f0109b$var$e = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.fragment\") : 60107, $36a58f7b27f0109b$var$f = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.strict_mode\") : 60108, $36a58f7b27f0109b$var$g = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.profiler\") : 60114, $36a58f7b27f0109b$var$h = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.provider\") : 60109, $36a58f7b27f0109b$var$k = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.context\") : 60110, $36a58f7b27f0109b$var$l = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.async_mode\") : 60111, $36a58f7b27f0109b$var$m = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.concurrent_mode\") : 60111, $36a58f7b27f0109b$var$n = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.forward_ref\") : 60112, $36a58f7b27f0109b$var$p = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.suspense\") : 60113, $36a58f7b27f0109b$var$q = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.suspense_list\") : 60120, $36a58f7b27f0109b$var$r = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.memo\") : 60115, $36a58f7b27f0109b$var$t = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.lazy\") : 60116, $36a58f7b27f0109b$var$v = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.block\") : 60121, $36a58f7b27f0109b$var$w = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.fundamental\") : 60117, $36a58f7b27f0109b$var$x = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.responder\") : 60118, $36a58f7b27f0109b$var$y = $36a58f7b27f0109b$var$b ? Symbol.for(\"react.scope\") : 60119;\nfunction $36a58f7b27f0109b$var$z(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n switch(u){\n case $36a58f7b27f0109b$var$c:\n switch(a = a.type, a){\n case $36a58f7b27f0109b$var$l:\n case $36a58f7b27f0109b$var$m:\n case $36a58f7b27f0109b$var$e:\n case $36a58f7b27f0109b$var$g:\n case $36a58f7b27f0109b$var$f:\n case $36a58f7b27f0109b$var$p:\n return a;\n default:\n switch(a = a && a.$$typeof, a){\n case $36a58f7b27f0109b$var$k:\n case $36a58f7b27f0109b$var$n:\n case $36a58f7b27f0109b$var$t:\n case $36a58f7b27f0109b$var$r:\n case $36a58f7b27f0109b$var$h:\n return a;\n default:\n return u;\n }\n }\n case $36a58f7b27f0109b$var$d:\n return u;\n }\n }\n}\nfunction $36a58f7b27f0109b$var$A(a) {\n return $36a58f7b27f0109b$var$z(a) === $36a58f7b27f0109b$var$m;\n}\n$36a58f7b27f0109b$export$2b8d127b894957b9 = $36a58f7b27f0109b$var$l;\n$36a58f7b27f0109b$export$cea3a54a6425200c = $36a58f7b27f0109b$var$m;\n$36a58f7b27f0109b$export$a7c73072b1a182ae = $36a58f7b27f0109b$var$k;\n$36a58f7b27f0109b$export$9f27bc3417b4524d = $36a58f7b27f0109b$var$h;\n$36a58f7b27f0109b$export$db77ccec0bb4ccac = $36a58f7b27f0109b$var$c;\n$36a58f7b27f0109b$export$8392c0c9d3dcbd35 = $36a58f7b27f0109b$var$n;\n$36a58f7b27f0109b$export$ffb0004e005737fa = $36a58f7b27f0109b$var$e;\n$36a58f7b27f0109b$export$b624eff549462981 = $36a58f7b27f0109b$var$t;\n$36a58f7b27f0109b$export$7897aa7841a5380c = $36a58f7b27f0109b$var$r;\n$36a58f7b27f0109b$export$602eac185826482c = $36a58f7b27f0109b$var$d;\n$36a58f7b27f0109b$export$e2c29f18771995cb = $36a58f7b27f0109b$var$g;\n$36a58f7b27f0109b$export$5f8d39834fd61797 = $36a58f7b27f0109b$var$f;\n$36a58f7b27f0109b$export$74bf444e3cd11ea5 = $36a58f7b27f0109b$var$p;\n$36a58f7b27f0109b$export$92387174baf9b227 = function(a) {\n return $36a58f7b27f0109b$var$A(a) || $36a58f7b27f0109b$var$z(a) === $36a58f7b27f0109b$var$l;\n};\n$36a58f7b27f0109b$export$ec112efeb987d9c6 = $36a58f7b27f0109b$var$A;\n$36a58f7b27f0109b$export$b706b080d889d2c9 = function(a) {\n return $36a58f7b27f0109b$var$z(a) === $36a58f7b27f0109b$var$k;\n};\n$36a58f7b27f0109b$export$5be5a87408f70ddc = function(a) {\n return $36a58f7b27f0109b$var$z(a) === $36a58f7b27f0109b$var$h;\n};\n$36a58f7b27f0109b$export$45a5e7f76e0caa8d = function(a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === $36a58f7b27f0109b$var$c;\n};\n$36a58f7b27f0109b$export$455c2e768291efa6 = function(a) {\n return $36a58f7b27f0109b$var$z(a) === $36a58f7b27f0109b$var$n;\n};\n$36a58f7b27f0109b$export$9522e17588c12572 = function(a) {\n return $36a58f7b27f0109b$var$z(a) === $36a58f7b27f0109b$var$e;\n};\n$36a58f7b27f0109b$export$2110ac352bb060b9 = function(a) {\n return $36a58f7b27f0109b$var$z(a) === $36a58f7b27f0109b$var$t;\n};\n$36a58f7b27f0109b$export$56885ab8b9c456ab = function(a) {\n return $36a58f7b27f0109b$var$z(a) === $36a58f7b27f0109b$var$r;\n};\n$36a58f7b27f0109b$export$d927fcb6adf8f9de = function(a) {\n return $36a58f7b27f0109b$var$z(a) === $36a58f7b27f0109b$var$d;\n};\n$36a58f7b27f0109b$export$b82d16f27459e05a = function(a) {\n return $36a58f7b27f0109b$var$z(a) === $36a58f7b27f0109b$var$g;\n};\n$36a58f7b27f0109b$export$522c17b4f5e123e8 = function(a) {\n return $36a58f7b27f0109b$var$z(a) === $36a58f7b27f0109b$var$f;\n};\n$36a58f7b27f0109b$export$1aabd8a0274ecfd6 = function(a) {\n return $36a58f7b27f0109b$var$z(a) === $36a58f7b27f0109b$var$p;\n};\n$36a58f7b27f0109b$export$9b621391a187a31a = function(a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === $36a58f7b27f0109b$var$e || a === $36a58f7b27f0109b$var$m || a === $36a58f7b27f0109b$var$g || a === $36a58f7b27f0109b$var$f || a === $36a58f7b27f0109b$var$p || a === $36a58f7b27f0109b$var$q || \"object\" === typeof a && null !== a && (a.$$typeof === $36a58f7b27f0109b$var$t || a.$$typeof === $36a58f7b27f0109b$var$r || a.$$typeof === $36a58f7b27f0109b$var$h || a.$$typeof === $36a58f7b27f0109b$var$k || a.$$typeof === $36a58f7b27f0109b$var$n || a.$$typeof === $36a58f7b27f0109b$var$w || a.$$typeof === $36a58f7b27f0109b$var$x || a.$$typeof === $36a58f7b27f0109b$var$y || a.$$typeof === $36a58f7b27f0109b$var$v);\n};\n$36a58f7b27f0109b$export$f5bbd400c2f4426f = $36a58f7b27f0109b$var$z;\n\n});\n\n\n\nparcelRegister(\"lM6lR\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $fda301fb3397341c$export$2e2bcd8739ae039; });\nparcelRequire(\"70fFQ\");\n\n\nvar $e5Z97 = parcelRequire(\"e5Z97\");\n\nvar $6eHKy = parcelRequire(\"6eHKy\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nconst $fda301fb3397341c$var$cache = (0, $6eHKy.default)({\n key: \"css\",\n prepend: true\n});\nfunction $fda301fb3397341c$export$2e2bcd8739ae039(props) {\n const { injectFirst: injectFirst, children: children } = props;\n return injectFirst ? /*#__PURE__*/ (0, $4x3bm.jsx)((0, $e5Z97.C), {\n value: $fda301fb3397341c$var$cache,\n children: children\n }) : children;\n}\n\n});\nparcelRegister(\"e5Z97\", function(module, exports) {\n\n$parcel$export(module.exports, \"h\", function () { return $a430f6a570517541$export$dda1d9f60106f0e9; });\n$parcel$export(module.exports, \"C\", function () { return $a430f6a570517541$export$e7094788287c5e9b; });\n$parcel$export(module.exports, \"w\", function () { return $a430f6a570517541$export$efccba1c4a2ef57b; });\n$parcel$export(module.exports, \"T\", function () { return $a430f6a570517541$export$971d5caa766a69d7; });\n$parcel$export(module.exports, \"u\", function () { return $a430f6a570517541$export$3b14a55fb2447963; });\n$parcel$export(module.exports, \"c\", function () { return $a430f6a570517541$export$db3b6bfb95261072; });\n$parcel$export(module.exports, \"E\", function () { return $a430f6a570517541$export$a9c23c6ac3fc3eca; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $6eHKy = parcelRequire(\"6eHKy\");\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $evHj4 = parcelRequire(\"evHj4\");\n\nvar $7kcod = parcelRequire(\"7kcod\");\n\nvar $jJpXM = parcelRequire(\"jJpXM\");\n\nvar $asszK = parcelRequire(\"asszK\");\nvar $a430f6a570517541$export$dda1d9f60106f0e9 = {}.hasOwnProperty;\nvar $a430f6a570517541$var$EmotionCacheContext = /* #__PURE__ */ (0, $70fFQ.createContext)(// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== \"undefined\" ? /* #__PURE__ */ (0, $6eHKy.default)({\n key: \"css\"\n}) : null);\nvar $a430f6a570517541$export$e7094788287c5e9b = $a430f6a570517541$var$EmotionCacheContext.Provider;\nvar $a430f6a570517541$export$71511d61b312f219 = function useEmotionCache() {\n return (0, $70fFQ.useContext)($a430f6a570517541$var$EmotionCacheContext);\n};\nvar $a430f6a570517541$export$efccba1c4a2ef57b = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/ (0, $70fFQ.forwardRef)(function(props, ref) {\n // the cache will never be null in the browser\n var cache = (0, $70fFQ.useContext)($a430f6a570517541$var$EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\nvar $a430f6a570517541$export$971d5caa766a69d7 = /* #__PURE__ */ (0, $70fFQ.createContext)({});\nvar $a430f6a570517541$export$407448d2b89b1813 = function useTheme() {\n return (0, $70fFQ.useContext)($a430f6a570517541$export$971d5caa766a69d7);\n};\nvar $a430f6a570517541$var$getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === \"function\") {\n var mergedTheme = theme(outerTheme);\n return mergedTheme;\n }\n return (0, $20MOv.default)({}, outerTheme, theme);\n};\nvar $a430f6a570517541$var$createCacheWithTheme = /* #__PURE__ */ (0, $evHj4.default)(function(outerTheme) {\n return (0, $evHj4.default)(function(theme) {\n return $a430f6a570517541$var$getTheme(outerTheme, theme);\n });\n});\nvar $a430f6a570517541$export$8b22cf2602fb60ce = function ThemeProvider(props) {\n var theme = (0, $70fFQ.useContext)($a430f6a570517541$export$971d5caa766a69d7);\n if (props.theme !== theme) theme = $a430f6a570517541$var$createCacheWithTheme(theme)(props.theme);\n return /*#__PURE__*/ (0, $70fFQ.createElement)($a430f6a570517541$export$971d5caa766a69d7.Provider, {\n value: theme\n }, props.children);\n};\nfunction $a430f6a570517541$export$4368d992c4eafac0(Component) {\n var componentName = Component.displayName || Component.name || \"Component\";\n var render = function render(props, ref) {\n var theme = (0, $70fFQ.useContext)($a430f6a570517541$export$971d5caa766a69d7);\n return /*#__PURE__*/ (0, $70fFQ.createElement)(Component, (0, $20MOv.default)({\n theme: theme,\n ref: ref\n }, props));\n }; // $FlowFixMe\n var WithTheme = /*#__PURE__*/ (0, $70fFQ.forwardRef)(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return (0, $7kcod.default)(WithTheme, Component);\n}\nvar $a430f6a570517541$var$getLastPart = function getLastPart(functionName) {\n // The match may be something like 'Object.createEmotionProps' or\n // 'Loader.prototype.render'\n var parts = functionName.split(\".\");\n return parts[parts.length - 1];\n};\nvar $a430f6a570517541$var$getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n // V8\n var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n if (match) return $a430f6a570517541$var$getLastPart(match[1]); // Safari / Firefox\n match = /^([A-Za-z0-9$.]+)@/.exec(line);\n if (match) return $a430f6a570517541$var$getLastPart(match[1]);\n return undefined;\n};\nvar $a430f6a570517541$var$internalReactFunctionNames = /* #__PURE__ */ new Set([\n \"renderWithHooks\",\n \"processChild\",\n \"finishClassComponent\",\n \"renderToString\"\n]); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\nvar $a430f6a570517541$var$sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, \"-\");\n};\nvar $a430f6a570517541$var$getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n if (!stackTrace) return undefined;\n var lines = stackTrace.split(\"\\n\");\n for(var i = 0; i < lines.length; i++){\n var functionName = $a430f6a570517541$var$getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n if ($a430f6a570517541$var$internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n // uppercase letter\n if (/^[A-Z]/.test(functionName)) return $a430f6a570517541$var$sanitizeIdentifier(functionName);\n }\n return undefined;\n};\nvar $a430f6a570517541$var$useInsertionEffect = $70fFQ.useInsertionEffect ? $70fFQ.useInsertionEffect : function useInsertionEffect(create) {\n create();\n};\nfunction $a430f6a570517541$export$3b14a55fb2447963(create) {\n $a430f6a570517541$var$useInsertionEffect(create);\n}\nvar $a430f6a570517541$var$typePropName = \"__EMOTION_TYPE_PLEASE_DO_NOT_USE__\";\nvar $a430f6a570517541$var$labelPropName = \"__EMOTION_LABEL_PLEASE_DO_NOT_USE__\";\nvar $a430f6a570517541$export$db3b6bfb95261072 = function createEmotionProps(type, props) {\n var newProps = {};\n for(var key in props)if ($a430f6a570517541$export$dda1d9f60106f0e9.call(props, key)) newProps[key] = props[key];\n newProps[$a430f6a570517541$var$typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n var label;\n return newProps;\n};\nvar $a430f6a570517541$var$Insertion = function Insertion(_ref) {\n var cache = _ref.cache, serialized = _ref.serialized, isStringTag = _ref.isStringTag;\n (0, $jJpXM.registerStyles)(cache, serialized, isStringTag);\n var rules = $a430f6a570517541$export$3b14a55fb2447963(function() {\n return (0, $jJpXM.insertStyles)(cache, serialized, isStringTag);\n });\n return null;\n};\nvar $a430f6a570517541$export$a9c23c6ac3fc3eca = /* #__PURE__ */ $a430f6a570517541$export$efccba1c4a2ef57b(function(props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n if (typeof cssProp === \"string\" && cache.registered[cssProp] !== undefined) cssProp = cache.registered[cssProp];\n var WrappedComponent = props[$a430f6a570517541$var$typePropName];\n var registeredStyles = [\n cssProp\n ];\n var className = \"\";\n if (typeof props.className === \"string\") className = (0, $jJpXM.getRegisteredStyles)(cache.registered, registeredStyles, props.className);\n else if (props.className != null) className = props.className + \" \";\n var serialized = (0, $asszK.serializeStyles)(registeredStyles, undefined, (0, $70fFQ.useContext)($a430f6a570517541$export$971d5caa766a69d7));\n var labelFromStack;\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n for(var key in props)if ($a430f6a570517541$export$dda1d9f60106f0e9.call(props, key) && key !== \"css\" && key !== $a430f6a570517541$var$typePropName && true) newProps[key] = props[key];\n newProps.ref = ref;\n newProps.className = className;\n return /*#__PURE__*/ (0, $70fFQ.createElement)((0, $70fFQ.Fragment), null, /*#__PURE__*/ (0, $70fFQ.createElement)($a430f6a570517541$var$Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === \"string\"\n }), /*#__PURE__*/ (0, $70fFQ.createElement)(WrappedComponent, newProps));\n});\n\n});\nparcelRegister(\"6eHKy\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $48a5fcaf347b00c9$export$2e2bcd8739ae039; });\n\nvar $332e3 = parcelRequire(\"332e3\");\n\nvar $jjzxz = parcelRequire(\"jjzxz\");\nparcelRequire(\"evHj4\");\nparcelRequire(\"fWAyu\");\nvar $48a5fcaf347b00c9$var$last = function last(arr) {\n return arr.length ? arr[arr.length - 1] : null;\n}; // based on https://github.com/thysultan/stylis.js/blob/e6843c373ebcbbfade25ebcc23f540ed8508da0a/src/Tokenizer.js#L239-L244\nvar $48a5fcaf347b00c9$var$identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n while(true){\n previous = character;\n character = (0, $jjzxz.peek)(); // &\\f\n if (previous === 38 && character === 12) points[index] = 1;\n if ((0, $jjzxz.token)(character)) break;\n (0, $jjzxz.next)();\n }\n return (0, $jjzxz.slice)(begin, (0, $jjzxz.position));\n};\nvar $48a5fcaf347b00c9$var$toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n do switch((0, $jjzxz.token)(character)){\n case 0:\n // &\\f\n if (character === 38 && (0, $jjzxz.peek)() === 12) // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n parsed[index] += $48a5fcaf347b00c9$var$identifierWithPointTracking((0, $jjzxz.position) - 1, points, index);\n break;\n case 2:\n parsed[index] += (0, $jjzxz.delimit)(character);\n break;\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = (0, $jjzxz.peek)() === 58 ? \"&\\f\" : \"\";\n points[index] = parsed[index].length;\n break;\n }\n // fallthrough\n default:\n parsed[index] += (0, $jjzxz.from)(character);\n }\n while (character = (0, $jjzxz.next)());\n return parsed;\n};\nvar $48a5fcaf347b00c9$var$getRules = function getRules(value, points) {\n return (0, $jjzxz.dealloc)($48a5fcaf347b00c9$var$toRules((0, $jjzxz.alloc)(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\nvar $48a5fcaf347b00c9$var$fixedElements = /* #__PURE__ */ new WeakMap();\nvar $48a5fcaf347b00c9$var$compat = function compat(element) {\n if (element.type !== \"rule\" || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) return;\n var value = element.value, parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n while(parent.type !== \"rule\"){\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n if (element.props.length === 1 && value.charCodeAt(0) !== 58 && !$48a5fcaf347b00c9$var$fixedElements.get(parent)) return;\n // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n if (isImplicitRule) return;\n $48a5fcaf347b00c9$var$fixedElements.set(element, true);\n var points = [];\n var rules = $48a5fcaf347b00c9$var$getRules(value, points);\n var parentRules = parent.props;\n for(var i = 0, k = 0; i < rules.length; i++)for(var j = 0; j < parentRules.length; j++, k++)element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n};\nvar $48a5fcaf347b00c9$var$removeLabel = function removeLabel(element) {\n if (element.type === \"decl\") {\n var value = element.value;\n if (value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = \"\";\n element.value = \"\";\n }\n }\n};\nvar $48a5fcaf347b00c9$var$ignoreFlag = \"emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason\";\nvar $48a5fcaf347b00c9$var$isIgnoringComment = function isIgnoringComment(element) {\n return !!element && element.type === \"comm\" && element.children.indexOf($48a5fcaf347b00c9$var$ignoreFlag) > -1;\n};\nvar $48a5fcaf347b00c9$var$createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function(element, index, children) {\n if (element.type !== \"rule\") return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n if (unsafePseudoClasses && cache.compat !== true) {\n var prevElement = index > 0 ? children[index - 1] : null;\n if (prevElement && $48a5fcaf347b00c9$var$isIgnoringComment($48a5fcaf347b00c9$var$last(prevElement.children))) return;\n unsafePseudoClasses.forEach(function(unsafePseudoClass) {\n console.error('The pseudo class \"' + unsafePseudoClass + '\" is potentially unsafe when doing server-side rendering. Try changing it to \"' + unsafePseudoClass.split(\"-child\")[0] + '-of-type\".');\n });\n }\n };\n};\nvar $48a5fcaf347b00c9$var$isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\nvar $48a5fcaf347b00c9$var$isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for(var i = index - 1; i >= 0; i--){\n if (!$48a5fcaf347b00c9$var$isImportRule(children[i])) return true;\n }\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\nvar $48a5fcaf347b00c9$var$nullifyElement = function nullifyElement(element) {\n element.type = \"\";\n element.value = \"\";\n element[\"return\"] = \"\";\n element.children = \"\";\n element.props = \"\";\n};\nvar $48a5fcaf347b00c9$var$incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!$48a5fcaf347b00c9$var$isImportRule(element)) return;\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n $48a5fcaf347b00c9$var$nullifyElement(element);\n } else if ($48a5fcaf347b00c9$var$isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n $48a5fcaf347b00c9$var$nullifyElement(element);\n }\n};\nvar $48a5fcaf347b00c9$var$defaultStylisPlugins = [\n (0, $jjzxz.prefixer)\n];\nvar $48a5fcaf347b00c9$var$createCache = function createCache(options) {\n var key = options.key;\n if (key === \"css\") {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n Array.prototype.forEach.call(ssrStyles, function(node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute(\"data-emotion\");\n if (dataEmotionAttribute.indexOf(\" \") === -1) return;\n document.head.appendChild(node);\n node.setAttribute(\"data-s\", \"\");\n });\n }\n var stylisPlugins = options.stylisPlugins || $48a5fcaf347b00c9$var$defaultStylisPlugins;\n var inserted = {}; // $FlowFixMe\n var container;\n var nodesToHydrate = [];\n container = options.container || document.head;\n Array.prototype.forEach.call(// means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll('style[data-emotion^=\"' + key + ' \"]'), function(node) {\n var attrib = node.getAttribute(\"data-emotion\").split(\" \"); // $FlowFixMe\n for(var i = 1; i < attrib.length; i++)inserted[attrib[i]] = true;\n nodesToHydrate.push(node);\n });\n var _insert;\n var omnipresentPlugins = [\n $48a5fcaf347b00c9$var$compat,\n $48a5fcaf347b00c9$var$removeLabel\n ];\n var currentSheet;\n var finalizingPlugins = [\n (0, $jjzxz.stringify),\n (0, $jjzxz.rulesheet)(function(rule) {\n currentSheet.insert(rule);\n })\n ];\n var serializer = (0, $jjzxz.middleware)(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n var stylis = function stylis(styles) {\n return (0, $jjzxz.serialize)((0, $jjzxz.compile)(styles), serializer);\n };\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n if (shouldCache) cache.inserted[serialized.name] = true;\n };\n var cache = {\n key: key,\n sheet: new (0, $332e3.StyleSheet)({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\nvar $48a5fcaf347b00c9$export$2e2bcd8739ae039 = $48a5fcaf347b00c9$var$createCache;\n\n});\nparcelRegister(\"332e3\", function(module, exports) {\n\n$parcel$export(module.exports, \"StyleSheet\", function () { return $238360dfbd8efbc3$export$9d753cd7ae895cce; });\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/ // $FlowFixMe\nfunction $238360dfbd8efbc3$var$sheetForTag(tag) {\n if (tag.sheet) // $FlowFixMe\n return tag.sheet;\n // this weirdness brought to you by firefox\n /* istanbul ignore next */ for(var i = 0; i < document.styleSheets.length; i++){\n if (document.styleSheets[i].ownerNode === tag) // $FlowFixMe\n return document.styleSheets[i];\n }\n}\nfunction $238360dfbd8efbc3$var$createStyleElement(options) {\n var tag = document.createElement(\"style\");\n tag.setAttribute(\"data-emotion\", options.key);\n if (options.nonce !== undefined) tag.setAttribute(\"nonce\", options.nonce);\n tag.appendChild(document.createTextNode(\"\"));\n tag.setAttribute(\"data-s\", \"\");\n return tag;\n}\nvar $238360dfbd8efbc3$export$9d753cd7ae895cce = /*#__PURE__*/ function() {\n function StyleSheet(options) {\n var _this = this;\n this._insertTag = function(tag) {\n var before;\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) before = _this.insertionPoint.nextSibling;\n else if (_this.prepend) before = _this.container.firstChild;\n else before = _this.before;\n } else before = _this.tags[_this.tags.length - 1].nextSibling;\n _this.container.insertBefore(tag, before);\n _this.tags.push(tag);\n };\n this.isSpeedy = options.speedy === undefined ? true : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n var _proto = StyleSheet.prototype;\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) this._insertTag($238360dfbd8efbc3$var$createStyleElement(this));\n var tag = this.tags[this.tags.length - 1];\n var isImportRule;\n if (this.isSpeedy) {\n var sheet = $238360dfbd8efbc3$var$sheetForTag(tag);\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {}\n } else tag.appendChild(document.createTextNode(rule));\n this.ctr++;\n };\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function(tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n return StyleSheet;\n}();\n\n});\n\nparcelRegister(\"jjzxz\", function(module, exports) {\n\n$parcel$export(module.exports, \"from\", function () { return $145bc69d9bd54ee6$export$6788812c4e6611e6; });\n$parcel$export(module.exports, \"position\", function () { return $145bc69d9bd54ee6$export$5880b8b5730aff45; });\n$parcel$export(module.exports, \"next\", function () { return $145bc69d9bd54ee6$export$48cfd1e771a65c4f; });\n$parcel$export(module.exports, \"peek\", function () { return $145bc69d9bd54ee6$export$4d3fb11e950abb9e; });\n$parcel$export(module.exports, \"slice\", function () { return $145bc69d9bd54ee6$export$58adb3bec8346d0f; });\n$parcel$export(module.exports, \"token\", function () { return $145bc69d9bd54ee6$export$9e1725a4cfeada27; });\n$parcel$export(module.exports, \"alloc\", function () { return $145bc69d9bd54ee6$export$2de70f21292aac9e; });\n$parcel$export(module.exports, \"dealloc\", function () { return $145bc69d9bd54ee6$export$45918ac1574455b1; });\n$parcel$export(module.exports, \"delimit\", function () { return $145bc69d9bd54ee6$export$410ac95b9ec204b8; });\n$parcel$export(module.exports, \"compile\", function () { return $145bc69d9bd54ee6$export$ef7acd7185315e22; });\n$parcel$export(module.exports, \"serialize\", function () { return $145bc69d9bd54ee6$export$dfdc1655ccc5b9cb; });\n$parcel$export(module.exports, \"stringify\", function () { return $145bc69d9bd54ee6$export$fac44ee5b035f737; });\n$parcel$export(module.exports, \"middleware\", function () { return $145bc69d9bd54ee6$export$5a7767152ae0305f; });\n$parcel$export(module.exports, \"rulesheet\", function () { return $145bc69d9bd54ee6$export$38bcb760f1d4871c; });\n$parcel$export(module.exports, \"prefixer\", function () { return $145bc69d9bd54ee6$export$e08c7d021b829b7a; });\nvar $145bc69d9bd54ee6$export$71ad59f2e432cfe8 = \"-ms-\";\nvar $145bc69d9bd54ee6$export$2c0f367103c8d01c = \"-moz-\";\nvar $145bc69d9bd54ee6$export$39dfd62a25e0fe93 = \"-webkit-\";\nvar $145bc69d9bd54ee6$export$a29989082612d0d9 = \"comm\";\nvar $145bc69d9bd54ee6$export$aa3a2e812ca8570d = \"rule\";\nvar $145bc69d9bd54ee6$export$527d108ccf083c2b = \"decl\";\nvar $145bc69d9bd54ee6$export$d3d35020fa5b54f0 = \"@page\";\nvar $145bc69d9bd54ee6$export$500415a86c544f73 = \"@media\";\nvar $145bc69d9bd54ee6$export$a763edbf796b780a = \"@import\";\nvar $145bc69d9bd54ee6$export$2790aeb8b4e5c826 = \"@charset\";\nvar $145bc69d9bd54ee6$export$1cc683e23b84b133 = \"@viewport\";\nvar $145bc69d9bd54ee6$export$9447a5efea57e862 = \"@supports\";\nvar $145bc69d9bd54ee6$export$ef011b4e114b1fba = \"@document\";\nvar $145bc69d9bd54ee6$export$6aad947bda0f3f46 = \"@namespace\";\nvar $145bc69d9bd54ee6$export$b44a8529a35fcb60 = \"@keyframes\";\nvar $145bc69d9bd54ee6$export$2c16de31893252e6 = \"@font-face\";\nvar $145bc69d9bd54ee6$export$3d846dd52e150c6f = \"@counter-style\";\nvar $145bc69d9bd54ee6$export$22314bfbb57653fe = \"@font-feature-values\";\nvar $145bc69d9bd54ee6$export$2335f513bbd82c6d = Math.abs;\nvar $145bc69d9bd54ee6$export$6788812c4e6611e6 = String.fromCharCode;\nvar $145bc69d9bd54ee6$export$e6e34fd1f2686227 = Object.assign;\nfunction $145bc69d9bd54ee6$export$d6af199866bfb566(e, r) {\n return (((r << 2 ^ $145bc69d9bd54ee6$export$a9db5e087081082d(e, 0)) << 2 ^ $145bc69d9bd54ee6$export$a9db5e087081082d(e, 1)) << 2 ^ $145bc69d9bd54ee6$export$a9db5e087081082d(e, 2)) << 2 ^ $145bc69d9bd54ee6$export$a9db5e087081082d(e, 3);\n}\nfunction $145bc69d9bd54ee6$export$87c2784dc9fc4ab(e) {\n return e.trim();\n}\nfunction $145bc69d9bd54ee6$export$4659b591c19bdf3d(e, r) {\n return (e = r.exec(e)) ? e[0] : e;\n}\nfunction $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(e, r, a) {\n return e.replace(r, a);\n}\nfunction $145bc69d9bd54ee6$export$f8e21b1e77979a08(e, r) {\n return e.indexOf(r);\n}\nfunction $145bc69d9bd54ee6$export$a9db5e087081082d(e, r) {\n return e.charCodeAt(r) | 0;\n}\nfunction $145bc69d9bd54ee6$export$2f35ab04d2335697(e, r, a) {\n return e.slice(r, a);\n}\nfunction $145bc69d9bd54ee6$export$36776f635604f274(e) {\n return e.length;\n}\nfunction $145bc69d9bd54ee6$export$f9084667e487ed46(e) {\n return e.length;\n}\nfunction $145bc69d9bd54ee6$export$10d8903dec122b9d(e, r) {\n return r.push(e), e;\n}\nfunction $145bc69d9bd54ee6$export$1be1fc439b849fdf(e, r) {\n return e.map(r).join(\"\");\n}\nvar $145bc69d9bd54ee6$export$53f1d5ea8de3d7c = 1;\nvar $145bc69d9bd54ee6$export$4e0c71f277ca26b3 = 1;\nvar $145bc69d9bd54ee6$export$f24224f1c91d8156 = 0;\nvar $145bc69d9bd54ee6$export$5880b8b5730aff45 = 0;\nvar $145bc69d9bd54ee6$export$c0306caf338ac095 = 0;\nvar $145bc69d9bd54ee6$export$30a86d91af8ff6e6 = \"\";\nfunction $145bc69d9bd54ee6$export$35059013cd4a06db(e, r, a, c, n, t, s) {\n return {\n value: e,\n root: r,\n parent: a,\n type: c,\n props: n,\n children: t,\n line: $145bc69d9bd54ee6$export$53f1d5ea8de3d7c,\n column: $145bc69d9bd54ee6$export$4e0c71f277ca26b3,\n length: s,\n return: \"\"\n };\n}\nfunction $145bc69d9bd54ee6$export$784d13d8ee351f07(e, r) {\n return $145bc69d9bd54ee6$export$e6e34fd1f2686227($145bc69d9bd54ee6$export$35059013cd4a06db(\"\", null, null, \"\", null, null, 0), e, {\n length: -e.length\n }, r);\n}\nfunction $145bc69d9bd54ee6$export$eba6f6f03b0a92e7() {\n return $145bc69d9bd54ee6$export$c0306caf338ac095;\n}\nfunction $145bc69d9bd54ee6$export$232faf9add678146() {\n $145bc69d9bd54ee6$export$c0306caf338ac095 = $145bc69d9bd54ee6$export$5880b8b5730aff45 > 0 ? $145bc69d9bd54ee6$export$a9db5e087081082d($145bc69d9bd54ee6$export$30a86d91af8ff6e6, --$145bc69d9bd54ee6$export$5880b8b5730aff45) : 0;\n if ($145bc69d9bd54ee6$export$4e0c71f277ca26b3--, $145bc69d9bd54ee6$export$c0306caf338ac095 === 10) $145bc69d9bd54ee6$export$4e0c71f277ca26b3 = 1, $145bc69d9bd54ee6$export$53f1d5ea8de3d7c--;\n return $145bc69d9bd54ee6$export$c0306caf338ac095;\n}\nfunction $145bc69d9bd54ee6$export$48cfd1e771a65c4f() {\n $145bc69d9bd54ee6$export$c0306caf338ac095 = $145bc69d9bd54ee6$export$5880b8b5730aff45 < $145bc69d9bd54ee6$export$f24224f1c91d8156 ? $145bc69d9bd54ee6$export$a9db5e087081082d($145bc69d9bd54ee6$export$30a86d91af8ff6e6, $145bc69d9bd54ee6$export$5880b8b5730aff45++) : 0;\n if ($145bc69d9bd54ee6$export$4e0c71f277ca26b3++, $145bc69d9bd54ee6$export$c0306caf338ac095 === 10) $145bc69d9bd54ee6$export$4e0c71f277ca26b3 = 1, $145bc69d9bd54ee6$export$53f1d5ea8de3d7c++;\n return $145bc69d9bd54ee6$export$c0306caf338ac095;\n}\nfunction $145bc69d9bd54ee6$export$4d3fb11e950abb9e() {\n return $145bc69d9bd54ee6$export$a9db5e087081082d($145bc69d9bd54ee6$export$30a86d91af8ff6e6, $145bc69d9bd54ee6$export$5880b8b5730aff45);\n}\nfunction $145bc69d9bd54ee6$export$e88cb2efb12ae807() {\n return $145bc69d9bd54ee6$export$5880b8b5730aff45;\n}\nfunction $145bc69d9bd54ee6$export$58adb3bec8346d0f(e, r) {\n return $145bc69d9bd54ee6$export$2f35ab04d2335697($145bc69d9bd54ee6$export$30a86d91af8ff6e6, e, r);\n}\nfunction $145bc69d9bd54ee6$export$9e1725a4cfeada27(e) {\n switch(e){\n case 0:\n case 9:\n case 10:\n case 13:\n case 32:\n return 5;\n case 33:\n case 43:\n case 44:\n case 47:\n case 62:\n case 64:\n case 126:\n case 59:\n case 123:\n case 125:\n return 4;\n case 58:\n return 3;\n case 34:\n case 39:\n case 40:\n case 91:\n return 2;\n case 41:\n case 93:\n return 1;\n }\n return 0;\n}\nfunction $145bc69d9bd54ee6$export$2de70f21292aac9e(e) {\n return $145bc69d9bd54ee6$export$53f1d5ea8de3d7c = $145bc69d9bd54ee6$export$4e0c71f277ca26b3 = 1, $145bc69d9bd54ee6$export$f24224f1c91d8156 = $145bc69d9bd54ee6$export$36776f635604f274($145bc69d9bd54ee6$export$30a86d91af8ff6e6 = e), $145bc69d9bd54ee6$export$5880b8b5730aff45 = 0, [];\n}\nfunction $145bc69d9bd54ee6$export$45918ac1574455b1(e) {\n return $145bc69d9bd54ee6$export$30a86d91af8ff6e6 = \"\", e;\n}\nfunction $145bc69d9bd54ee6$export$410ac95b9ec204b8(e) {\n return $145bc69d9bd54ee6$export$87c2784dc9fc4ab($145bc69d9bd54ee6$export$58adb3bec8346d0f($145bc69d9bd54ee6$export$5880b8b5730aff45 - 1, $145bc69d9bd54ee6$export$c889f2fcc19dbf12(e === 91 ? e + 2 : e === 40 ? e + 1 : e)));\n}\nfunction $145bc69d9bd54ee6$export$660b2ee2d4fb4eff(e) {\n return $145bc69d9bd54ee6$export$45918ac1574455b1($145bc69d9bd54ee6$export$5f8c09e3ae6f64e1($145bc69d9bd54ee6$export$2de70f21292aac9e(e)));\n}\nfunction $145bc69d9bd54ee6$export$7af1228ff777d175(e) {\n while($145bc69d9bd54ee6$export$c0306caf338ac095 = $145bc69d9bd54ee6$export$4d3fb11e950abb9e())if ($145bc69d9bd54ee6$export$c0306caf338ac095 < 33) $145bc69d9bd54ee6$export$48cfd1e771a65c4f();\n else break;\n return $145bc69d9bd54ee6$export$9e1725a4cfeada27(e) > 2 || $145bc69d9bd54ee6$export$9e1725a4cfeada27($145bc69d9bd54ee6$export$c0306caf338ac095) > 3 ? \"\" : \" \";\n}\nfunction $145bc69d9bd54ee6$export$5f8c09e3ae6f64e1(e) {\n while($145bc69d9bd54ee6$export$48cfd1e771a65c4f())switch($145bc69d9bd54ee6$export$9e1725a4cfeada27($145bc69d9bd54ee6$export$c0306caf338ac095)){\n case 0:\n $145bc69d9bd54ee6$export$10d8903dec122b9d($145bc69d9bd54ee6$export$c2ab62c7bf24634($145bc69d9bd54ee6$export$5880b8b5730aff45 - 1), e);\n break;\n case 2:\n $145bc69d9bd54ee6$export$10d8903dec122b9d($145bc69d9bd54ee6$export$410ac95b9ec204b8($145bc69d9bd54ee6$export$c0306caf338ac095), e);\n break;\n default:\n $145bc69d9bd54ee6$export$10d8903dec122b9d($145bc69d9bd54ee6$export$6788812c4e6611e6($145bc69d9bd54ee6$export$c0306caf338ac095), e);\n }\n return e;\n}\nfunction $145bc69d9bd54ee6$export$955ba06d119e085e(e, r) {\n while(--r && $145bc69d9bd54ee6$export$48cfd1e771a65c4f())if ($145bc69d9bd54ee6$export$c0306caf338ac095 < 48 || $145bc69d9bd54ee6$export$c0306caf338ac095 > 102 || $145bc69d9bd54ee6$export$c0306caf338ac095 > 57 && $145bc69d9bd54ee6$export$c0306caf338ac095 < 65 || $145bc69d9bd54ee6$export$c0306caf338ac095 > 70 && $145bc69d9bd54ee6$export$c0306caf338ac095 < 97) break;\n return $145bc69d9bd54ee6$export$58adb3bec8346d0f(e, $145bc69d9bd54ee6$export$e88cb2efb12ae807() + (r < 6 && $145bc69d9bd54ee6$export$4d3fb11e950abb9e() == 32 && $145bc69d9bd54ee6$export$48cfd1e771a65c4f() == 32));\n}\nfunction $145bc69d9bd54ee6$export$c889f2fcc19dbf12(e) {\n while($145bc69d9bd54ee6$export$48cfd1e771a65c4f())switch($145bc69d9bd54ee6$export$c0306caf338ac095){\n case e:\n return $145bc69d9bd54ee6$export$5880b8b5730aff45;\n case 34:\n case 39:\n if (e !== 34 && e !== 39) $145bc69d9bd54ee6$export$c889f2fcc19dbf12($145bc69d9bd54ee6$export$c0306caf338ac095);\n break;\n case 40:\n if (e === 41) $145bc69d9bd54ee6$export$c889f2fcc19dbf12(e);\n break;\n case 92:\n $145bc69d9bd54ee6$export$48cfd1e771a65c4f();\n break;\n }\n return $145bc69d9bd54ee6$export$5880b8b5730aff45;\n}\nfunction $145bc69d9bd54ee6$export$4254d4e2b3745c4c(e, r) {\n while($145bc69d9bd54ee6$export$48cfd1e771a65c4f())if (e + $145bc69d9bd54ee6$export$c0306caf338ac095 === 57) break;\n else if (e + $145bc69d9bd54ee6$export$c0306caf338ac095 === 84 && $145bc69d9bd54ee6$export$4d3fb11e950abb9e() === 47) break;\n return \"/*\" + $145bc69d9bd54ee6$export$58adb3bec8346d0f(r, $145bc69d9bd54ee6$export$5880b8b5730aff45 - 1) + \"*\" + $145bc69d9bd54ee6$export$6788812c4e6611e6(e === 47 ? e : $145bc69d9bd54ee6$export$48cfd1e771a65c4f());\n}\nfunction $145bc69d9bd54ee6$export$c2ab62c7bf24634(e) {\n while(!$145bc69d9bd54ee6$export$9e1725a4cfeada27($145bc69d9bd54ee6$export$4d3fb11e950abb9e()))$145bc69d9bd54ee6$export$48cfd1e771a65c4f();\n return $145bc69d9bd54ee6$export$58adb3bec8346d0f(e, $145bc69d9bd54ee6$export$5880b8b5730aff45);\n}\nfunction $145bc69d9bd54ee6$export$ef7acd7185315e22(e) {\n return $145bc69d9bd54ee6$export$45918ac1574455b1($145bc69d9bd54ee6$export$98e6a39c04603d36(\"\", null, null, null, [\n \"\"\n ], e = $145bc69d9bd54ee6$export$2de70f21292aac9e(e), 0, [\n 0\n ], e));\n}\nfunction $145bc69d9bd54ee6$export$98e6a39c04603d36(e, r, a, c, n, t, s, u, i) {\n var f = 0;\n var o = 0;\n var l = s;\n var v = 0;\n var h = 0;\n var p = 0;\n var b = 1;\n var w = 1;\n var $ = 1;\n var k = 0;\n var g = \"\";\n var m = n;\n var x = t;\n var y = c;\n var z = g;\n while(w)switch(p = k, k = $145bc69d9bd54ee6$export$48cfd1e771a65c4f()){\n case 40:\n if (p != 108 && z.charCodeAt(l - 1) == 58) {\n if ($145bc69d9bd54ee6$export$f8e21b1e77979a08(z += $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed($145bc69d9bd54ee6$export$410ac95b9ec204b8(k), \"&\", \"&\\f\"), \"&\\f\") != -1) $ = -1;\n break;\n }\n case 34:\n case 39:\n case 91:\n z += $145bc69d9bd54ee6$export$410ac95b9ec204b8(k);\n break;\n case 9:\n case 10:\n case 13:\n case 32:\n z += $145bc69d9bd54ee6$export$7af1228ff777d175(p);\n break;\n case 92:\n z += $145bc69d9bd54ee6$export$955ba06d119e085e($145bc69d9bd54ee6$export$e88cb2efb12ae807() - 1, 7);\n continue;\n case 47:\n switch($145bc69d9bd54ee6$export$4d3fb11e950abb9e()){\n case 42:\n case 47:\n $145bc69d9bd54ee6$export$10d8903dec122b9d($145bc69d9bd54ee6$export$4a34f930e789283c($145bc69d9bd54ee6$export$4254d4e2b3745c4c($145bc69d9bd54ee6$export$48cfd1e771a65c4f(), $145bc69d9bd54ee6$export$e88cb2efb12ae807()), r, a), i);\n break;\n default:\n z += \"/\";\n }\n break;\n case 123 * b:\n u[f++] = $145bc69d9bd54ee6$export$36776f635604f274(z) * $;\n case 125 * b:\n case 59:\n case 0:\n switch(k){\n case 0:\n case 125:\n w = 0;\n case 59 + o:\n if (h > 0 && $145bc69d9bd54ee6$export$36776f635604f274(z) - l) $145bc69d9bd54ee6$export$10d8903dec122b9d(h > 32 ? $145bc69d9bd54ee6$export$f8483753829ec8f3(z + \";\", c, a, l - 1) : $145bc69d9bd54ee6$export$f8483753829ec8f3($145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(z, \" \", \"\") + \";\", c, a, l - 2), i);\n break;\n case 59:\n z += \";\";\n default:\n $145bc69d9bd54ee6$export$10d8903dec122b9d(y = $145bc69d9bd54ee6$export$3307ffa7023ede1e(z, r, a, f, o, n, u, g, m = [], x = [], l), t);\n if (k === 123) {\n if (o === 0) $145bc69d9bd54ee6$export$98e6a39c04603d36(z, r, y, y, m, t, l, u, x);\n else switch(v){\n case 100:\n case 109:\n case 115:\n $145bc69d9bd54ee6$export$98e6a39c04603d36(e, y, y, c && $145bc69d9bd54ee6$export$10d8903dec122b9d($145bc69d9bd54ee6$export$3307ffa7023ede1e(e, y, y, 0, 0, n, u, g, n, m = [], l), x), n, x, l, u, c ? m : x);\n break;\n default:\n $145bc69d9bd54ee6$export$98e6a39c04603d36(z, y, y, y, [\n \"\"\n ], x, 0, u, x);\n }\n }\n }\n f = o = h = 0, b = $ = 1, g = z = \"\", l = s;\n break;\n case 58:\n l = 1 + $145bc69d9bd54ee6$export$36776f635604f274(z), h = p;\n default:\n if (b < 1) {\n if (k == 123) --b;\n else if (k == 125 && b++ == 0 && $145bc69d9bd54ee6$export$232faf9add678146() == 125) continue;\n }\n switch(z += $145bc69d9bd54ee6$export$6788812c4e6611e6(k), k * b){\n case 38:\n $ = o > 0 ? 1 : (z += \"\\f\", -1);\n break;\n case 44:\n u[f++] = ($145bc69d9bd54ee6$export$36776f635604f274(z) - 1) * $, $ = 1;\n break;\n case 64:\n if ($145bc69d9bd54ee6$export$4d3fb11e950abb9e() === 45) z += $145bc69d9bd54ee6$export$410ac95b9ec204b8($145bc69d9bd54ee6$export$48cfd1e771a65c4f());\n v = $145bc69d9bd54ee6$export$4d3fb11e950abb9e(), o = l = $145bc69d9bd54ee6$export$36776f635604f274(g = z += $145bc69d9bd54ee6$export$c2ab62c7bf24634($145bc69d9bd54ee6$export$e88cb2efb12ae807())), k++;\n break;\n case 45:\n if (p === 45 && $145bc69d9bd54ee6$export$36776f635604f274(z) == 2) b = 0;\n }\n }\n return t;\n}\nfunction $145bc69d9bd54ee6$export$3307ffa7023ede1e(e, r, a, c, t, s, u, i, f, o, l) {\n var v = t - 1;\n var h = t === 0 ? s : [\n \"\"\n ];\n var p = $145bc69d9bd54ee6$export$f9084667e487ed46(h);\n for(var b = 0, w = 0, $ = 0; b < c; ++b)for(var d = 0, g = $145bc69d9bd54ee6$export$2f35ab04d2335697(e, v + 1, v = $145bc69d9bd54ee6$export$2335f513bbd82c6d(w = u[b])), m = e; d < p; ++d)if (m = $145bc69d9bd54ee6$export$87c2784dc9fc4ab(w > 0 ? h[d] + \" \" + g : $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(g, /&\\f/g, h[d]))) f[$++] = m;\n return $145bc69d9bd54ee6$export$35059013cd4a06db(e, r, a, t === 0 ? $145bc69d9bd54ee6$export$aa3a2e812ca8570d : i, f, o, l);\n}\nfunction $145bc69d9bd54ee6$export$4a34f930e789283c(e, r, a) {\n return $145bc69d9bd54ee6$export$35059013cd4a06db(e, r, a, $145bc69d9bd54ee6$export$a29989082612d0d9, $145bc69d9bd54ee6$export$6788812c4e6611e6($145bc69d9bd54ee6$export$eba6f6f03b0a92e7()), $145bc69d9bd54ee6$export$2f35ab04d2335697(e, 2, -2), 0);\n}\nfunction $145bc69d9bd54ee6$export$f8483753829ec8f3(e, r, a, c) {\n return $145bc69d9bd54ee6$export$35059013cd4a06db(e, r, a, $145bc69d9bd54ee6$export$527d108ccf083c2b, $145bc69d9bd54ee6$export$2f35ab04d2335697(e, 0, c), $145bc69d9bd54ee6$export$2f35ab04d2335697(e, c + 1, -1), c);\n}\nfunction $145bc69d9bd54ee6$export$82e9f45cca5ba907(c, n) {\n switch($145bc69d9bd54ee6$export$d6af199866bfb566(c, n)){\n case 5103:\n return $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + \"print-\" + c + c;\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921:\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005:\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855:\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + c + c;\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + c + $145bc69d9bd54ee6$export$2c0f367103c8d01c + c + $145bc69d9bd54ee6$export$71ad59f2e432cfe8 + c + c;\n case 6828:\n case 4268:\n return $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + c + $145bc69d9bd54ee6$export$71ad59f2e432cfe8 + c + c;\n case 6165:\n return $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + c + $145bc69d9bd54ee6$export$71ad59f2e432cfe8 + \"flex-\" + c + c;\n case 5187:\n return $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + c + $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, /(\\w+).+(:[^]+)/, $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + \"box-$1$2\" + $145bc69d9bd54ee6$export$71ad59f2e432cfe8 + \"flex-$1$2\") + c;\n case 5443:\n return $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + c + $145bc69d9bd54ee6$export$71ad59f2e432cfe8 + \"flex-item-\" + $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, /flex-|-self/, \"\") + c;\n case 4675:\n return $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + c + $145bc69d9bd54ee6$export$71ad59f2e432cfe8 + \"flex-line-pack\" + $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, /align-content|flex-|-self/, \"\") + c;\n case 5548:\n return $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + c + $145bc69d9bd54ee6$export$71ad59f2e432cfe8 + $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, \"shrink\", \"negative\") + c;\n case 5292:\n return $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + c + $145bc69d9bd54ee6$export$71ad59f2e432cfe8 + $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, \"basis\", \"preferred-size\") + c;\n case 6060:\n return $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + \"box-\" + $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, \"-grow\", \"\") + $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + c + $145bc69d9bd54ee6$export$71ad59f2e432cfe8 + $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, \"grow\", \"positive\") + c;\n case 4554:\n return $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, /([^-])(transform)/g, \"$1\" + $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + \"$2\") + c;\n case 6187:\n return $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed($145bc69d9bd54ee6$export$77ad94ebf1c2b9ed($145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, /(zoom-|grab)/, $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + \"$1\"), /(image-set)/, $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + \"$1\"), c, \"\") + c;\n case 5495:\n case 3959:\n return $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, /(image-set\\([^]*)/, $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + \"$1\" + \"$`$1\");\n case 4968:\n return $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed($145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, /(.+:)(flex-)?(.*)/, $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + \"box-pack:$3\" + $145bc69d9bd54ee6$export$71ad59f2e432cfe8 + \"flex-pack:$3\"), /s.+-b[^;]+/, \"justify\") + $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + c + c;\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, /(.+)-inline(.+)/, $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + \"$1$2\") + c;\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n if ($145bc69d9bd54ee6$export$36776f635604f274(c) - 1 - n > 6) switch($145bc69d9bd54ee6$export$a9db5e087081082d(c, n + 1)){\n case 109:\n if ($145bc69d9bd54ee6$export$a9db5e087081082d(c, n + 4) !== 45) break;\n case 102:\n return $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, /(.+:)(.+)-([^]+)/, \"$1\" + $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + \"$2-$3\" + \"$1\" + $145bc69d9bd54ee6$export$2c0f367103c8d01c + ($145bc69d9bd54ee6$export$a9db5e087081082d(c, n + 3) == 108 ? \"$3\" : \"$2-$3\")) + c;\n case 115:\n return ~$145bc69d9bd54ee6$export$f8e21b1e77979a08(c, \"stretch\") ? $145bc69d9bd54ee6$export$82e9f45cca5ba907($145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, \"stretch\", \"fill-available\"), n) + c : c;\n }\n break;\n case 4949:\n if ($145bc69d9bd54ee6$export$a9db5e087081082d(c, n + 1) !== 115) break;\n case 6444:\n switch($145bc69d9bd54ee6$export$a9db5e087081082d(c, $145bc69d9bd54ee6$export$36776f635604f274(c) - 3 - (~$145bc69d9bd54ee6$export$f8e21b1e77979a08(c, \"!important\") && 10))){\n case 107:\n return $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, \":\", \":\" + $145bc69d9bd54ee6$export$39dfd62a25e0fe93) + c;\n case 101:\n return $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, /(.+:)([^;!]+)(;|!.+)?/, \"$1\" + $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + ($145bc69d9bd54ee6$export$a9db5e087081082d(c, 14) === 45 ? \"inline-\" : \"\") + \"box$3\" + \"$1\" + $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + \"$2$3\" + \"$1\" + $145bc69d9bd54ee6$export$71ad59f2e432cfe8 + \"$2box$3\") + c;\n }\n break;\n case 5936:\n switch($145bc69d9bd54ee6$export$a9db5e087081082d(c, n + 11)){\n case 114:\n return $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + c + $145bc69d9bd54ee6$export$71ad59f2e432cfe8 + $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, /[svh]\\w+-[tblr]{2}/, \"tb\") + c;\n case 108:\n return $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + c + $145bc69d9bd54ee6$export$71ad59f2e432cfe8 + $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, /[svh]\\w+-[tblr]{2}/, \"tb-rl\") + c;\n case 45:\n return $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + c + $145bc69d9bd54ee6$export$71ad59f2e432cfe8 + $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c, /[svh]\\w+-[tblr]{2}/, \"lr\") + c;\n }\n return $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + c + $145bc69d9bd54ee6$export$71ad59f2e432cfe8 + c + c;\n }\n return c;\n}\nfunction $145bc69d9bd54ee6$export$dfdc1655ccc5b9cb(e, r) {\n var a = \"\";\n var c = $145bc69d9bd54ee6$export$f9084667e487ed46(e);\n for(var n = 0; n < c; n++)a += r(e[n], n, e, r) || \"\";\n return a;\n}\nfunction $145bc69d9bd54ee6$export$fac44ee5b035f737(e, r, a, s) {\n switch(e.type){\n case $145bc69d9bd54ee6$export$a763edbf796b780a:\n case $145bc69d9bd54ee6$export$527d108ccf083c2b:\n return e.return = e.return || e.value;\n case $145bc69d9bd54ee6$export$a29989082612d0d9:\n return \"\";\n case $145bc69d9bd54ee6$export$b44a8529a35fcb60:\n return e.return = e.value + \"{\" + $145bc69d9bd54ee6$export$dfdc1655ccc5b9cb(e.children, s) + \"}\";\n case $145bc69d9bd54ee6$export$aa3a2e812ca8570d:\n e.value = e.props.join(\",\");\n }\n return $145bc69d9bd54ee6$export$36776f635604f274(a = $145bc69d9bd54ee6$export$dfdc1655ccc5b9cb(e.children, s)) ? e.return = e.value + \"{\" + a + \"}\" : \"\";\n}\nfunction $145bc69d9bd54ee6$export$5a7767152ae0305f(e) {\n var r = $145bc69d9bd54ee6$export$f9084667e487ed46(e);\n return function(a, c, n, t) {\n var s = \"\";\n for(var u = 0; u < r; u++)s += e[u](a, c, n, t) || \"\";\n return s;\n };\n}\nfunction $145bc69d9bd54ee6$export$38bcb760f1d4871c(e) {\n return function(r) {\n if (!r.root) {\n if (r = r.return) e(r);\n }\n };\n}\nfunction $145bc69d9bd54ee6$export$e08c7d021b829b7a(c, s, u, i) {\n if (c.length > -1) {\n if (!c.return) switch(c.type){\n case $145bc69d9bd54ee6$export$527d108ccf083c2b:\n c.return = $145bc69d9bd54ee6$export$82e9f45cca5ba907(c.value, c.length);\n break;\n case $145bc69d9bd54ee6$export$b44a8529a35fcb60:\n return $145bc69d9bd54ee6$export$dfdc1655ccc5b9cb([\n $145bc69d9bd54ee6$export$784d13d8ee351f07(c, {\n value: $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(c.value, \"@\", \"@\" + $145bc69d9bd54ee6$export$39dfd62a25e0fe93)\n })\n ], i);\n case $145bc69d9bd54ee6$export$aa3a2e812ca8570d:\n if (c.length) return $145bc69d9bd54ee6$export$1be1fc439b849fdf(c.props, function(n) {\n switch($145bc69d9bd54ee6$export$4659b591c19bdf3d(n, /(::plac\\w+|:read-\\w+)/)){\n case \":read-only\":\n case \":read-write\":\n return $145bc69d9bd54ee6$export$dfdc1655ccc5b9cb([\n $145bc69d9bd54ee6$export$784d13d8ee351f07(c, {\n props: [\n $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(n, /:(read-\\w+)/, \":\" + $145bc69d9bd54ee6$export$2c0f367103c8d01c + \"$1\")\n ]\n })\n ], i);\n case \"::placeholder\":\n return $145bc69d9bd54ee6$export$dfdc1655ccc5b9cb([\n $145bc69d9bd54ee6$export$784d13d8ee351f07(c, {\n props: [\n $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(n, /:(plac\\w+)/, \":\" + $145bc69d9bd54ee6$export$39dfd62a25e0fe93 + \"input-$1\")\n ]\n }),\n $145bc69d9bd54ee6$export$784d13d8ee351f07(c, {\n props: [\n $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(n, /:(plac\\w+)/, \":\" + $145bc69d9bd54ee6$export$2c0f367103c8d01c + \"$1\")\n ]\n }),\n $145bc69d9bd54ee6$export$784d13d8ee351f07(c, {\n props: [\n $145bc69d9bd54ee6$export$77ad94ebf1c2b9ed(n, /:(plac\\w+)/, $145bc69d9bd54ee6$export$71ad59f2e432cfe8 + \"input-$1\")\n ]\n })\n ], i);\n }\n return \"\";\n });\n }\n }\n}\nfunction $145bc69d9bd54ee6$export$76a88f7de6507443(e) {\n switch(e.type){\n case $145bc69d9bd54ee6$export$aa3a2e812ca8570d:\n e.props = e.props.map(function(r) {\n return $145bc69d9bd54ee6$export$1be1fc439b849fdf($145bc69d9bd54ee6$export$660b2ee2d4fb4eff(r), function(r, a, c) {\n switch($145bc69d9bd54ee6$export$a9db5e087081082d(r, 0)){\n case 12:\n return $145bc69d9bd54ee6$export$2f35ab04d2335697(r, 1, $145bc69d9bd54ee6$export$36776f635604f274(r));\n case 0:\n case 40:\n case 43:\n case 62:\n case 126:\n return r;\n case 58:\n if (c[++a] === \"global\") c[a] = \"\", c[++a] = \"\\f\" + $145bc69d9bd54ee6$export$2f35ab04d2335697(c[a], a = 1, -1);\n case 32:\n return a === 1 ? \"\" : r;\n default:\n switch(a){\n case 0:\n e = r;\n return $145bc69d9bd54ee6$export$f9084667e487ed46(c) > 1 ? \"\" : r;\n case a = $145bc69d9bd54ee6$export$f9084667e487ed46(c) - 1:\n case 2:\n return a === 2 ? r + e + e : r + e;\n default:\n return r;\n }\n }\n });\n });\n }\n}\n\n});\n\nparcelRegister(\"evHj4\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $a9058db6290652bd$export$2e2bcd8739ae039; });\nvar $a9058db6290652bd$var$weakMemoize = function weakMemoize(func) {\n // $FlowFixMe flow doesn't include all non-primitive types as allowed for weakmaps\n var cache = new WeakMap();\n return function(arg) {\n if (cache.has(arg)) // $FlowFixMe\n return cache.get(arg);\n var ret = func(arg);\n cache.set(arg, ret);\n return ret;\n };\n};\nvar $a9058db6290652bd$export$2e2bcd8739ae039 = $a9058db6290652bd$var$weakMemoize;\n\n});\n\nparcelRegister(\"fWAyu\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b9b8a0ec2a434b13$export$2e2bcd8739ae039; });\nfunction $b9b8a0ec2a434b13$var$memoize(fn) {\n var cache = Object.create(null);\n return function(arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\nvar $b9b8a0ec2a434b13$export$2e2bcd8739ae039 = $b9b8a0ec2a434b13$var$memoize;\n\n});\n\n\nparcelRegister(\"7kcod\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $555402fce37f522a$export$2e2bcd8739ae039; });\n\nvar $6mXVL = parcelRequire(\"6mXVL\");\n// this file isolates this package that is not tree-shakeable\n// and if this module doesn't actually contain any logic of its own\n// then Rollup just use 'hoist-non-react-statics' directly in other chunks\nvar $555402fce37f522a$var$hoistNonReactStatics = function(targetComponent, sourceComponent) {\n return (0, (/*@__PURE__*/$parcel$interopDefault($6mXVL)))(targetComponent, sourceComponent);\n};\nvar $555402fce37f522a$export$2e2bcd8739ae039 = $555402fce37f522a$var$hoistNonReactStatics;\n\n});\n\nparcelRegister(\"jJpXM\", function(module, exports) {\n\n$parcel$export(module.exports, \"getRegisteredStyles\", function () { return $e5d65c10781c6d7a$export$95d99596f328fd52; });\n$parcel$export(module.exports, \"registerStyles\", function () { return $e5d65c10781c6d7a$export$580009a5da2a8b4b; });\n$parcel$export(module.exports, \"insertStyles\", function () { return $e5d65c10781c6d7a$export$6f077d94b33a01aa; });\nvar $e5d65c10781c6d7a$var$isBrowser = true;\nfunction $e5d65c10781c6d7a$export$95d99596f328fd52(registered, registeredStyles, classNames) {\n var rawClassName = \"\";\n classNames.split(\" \").forEach(function(className) {\n if (registered[className] !== undefined) registeredStyles.push(registered[className] + \";\");\n else rawClassName += className + \" \";\n });\n return rawClassName;\n}\nvar $e5d65c10781c6d7a$export$580009a5da2a8b4b = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n if (// class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n $e5d65c10781c6d7a$var$isBrowser === false) && cache.registered[className] === undefined) cache.registered[className] = serialized.styles;\n};\nvar $e5d65c10781c6d7a$export$6f077d94b33a01aa = function insertStyles(cache, serialized, isStringTag) {\n $e5d65c10781c6d7a$export$580009a5da2a8b4b(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n do {\n var maybeStyles = cache.insert(serialized === current ? \".\" + className : \"\", current, cache.sheet, true);\n current = current.next;\n }while (current !== undefined);\n }\n};\n\n});\n\nparcelRegister(\"asszK\", function(module, exports) {\n\n$parcel$export(module.exports, \"serializeStyles\", function () { return $79d2af65d5c10c06$export$6321afa313b251b5; });\n\nvar $3ZKH4 = parcelRequire(\"3ZKH4\");\n\nvar $kIYjZ = parcelRequire(\"kIYjZ\");\n\nvar $fWAyu = parcelRequire(\"fWAyu\");\nvar $79d2af65d5c10c06$var$ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar $79d2af65d5c10c06$var$UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar $79d2af65d5c10c06$var$hyphenateRegex = /[A-Z]|^ms/g;\nvar $79d2af65d5c10c06$var$animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\nvar $79d2af65d5c10c06$var$isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\nvar $79d2af65d5c10c06$var$isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== \"boolean\";\n};\nvar $79d2af65d5c10c06$var$processStyleName = /* #__PURE__ */ (0, $fWAyu.default)(function(styleName) {\n return $79d2af65d5c10c06$var$isCustomProperty(styleName) ? styleName : styleName.replace($79d2af65d5c10c06$var$hyphenateRegex, \"-$&\").toLowerCase();\n});\nvar $79d2af65d5c10c06$var$processStyleValue = function processStyleValue(key, value) {\n switch(key){\n case \"animation\":\n case \"animationName\":\n if (typeof value === \"string\") return value.replace($79d2af65d5c10c06$var$animationRegex, function(match, p1, p2) {\n $79d2af65d5c10c06$var$cursor = {\n name: p1,\n styles: p2,\n next: $79d2af65d5c10c06$var$cursor\n };\n return p1;\n });\n }\n if ((0, $kIYjZ.default)[key] !== 1 && !$79d2af65d5c10c06$var$isCustomProperty(key) && typeof value === \"number\" && value !== 0) return value + \"px\";\n return value;\n};\nvar $79d2af65d5c10c06$var$contentValuePattern, $79d2af65d5c10c06$var$contentValues, $79d2af65d5c10c06$var$oldProcessStyleValue, $79d2af65d5c10c06$var$msPattern, $79d2af65d5c10c06$var$hyphenPattern, $79d2af65d5c10c06$var$hyphenatedCache;\nfunction $79d2af65d5c10c06$var$handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) return \"\";\n if (interpolation.__emotion_styles !== undefined) return interpolation;\n switch(typeof interpolation){\n case \"boolean\":\n return \"\";\n case \"object\":\n if (interpolation.anim === 1) {\n $79d2af65d5c10c06$var$cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: $79d2af65d5c10c06$var$cursor\n };\n return interpolation.name;\n }\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n if (next !== undefined) // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while(next !== undefined){\n $79d2af65d5c10c06$var$cursor = {\n name: next.name,\n styles: next.styles,\n next: $79d2af65d5c10c06$var$cursor\n };\n next = next.next;\n }\n var styles = interpolation.styles + \";\";\n return styles;\n }\n return $79d2af65d5c10c06$var$createStringFromObject(mergedProps, registered, interpolation);\n case \"function\":\n if (mergedProps !== undefined) {\n var previousCursor = $79d2af65d5c10c06$var$cursor;\n var result = interpolation(mergedProps);\n $79d2af65d5c10c06$var$cursor = previousCursor;\n return $79d2af65d5c10c06$var$handleInterpolation(mergedProps, registered, result);\n }\n break;\n case \"string\":\n var matched, replaced;\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n if (registered == null) return interpolation;\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\nfunction $79d2af65d5c10c06$var$createStringFromObject(mergedProps, registered, obj) {\n var string = \"\";\n if (Array.isArray(obj)) for(var i = 0; i < obj.length; i++)string += $79d2af65d5c10c06$var$handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n else for(var _key in obj){\n var value = obj[_key];\n if (typeof value !== \"object\") {\n if (registered != null && registered[value] !== undefined) string += _key + \"{\" + registered[value] + \"}\";\n else if ($79d2af65d5c10c06$var$isProcessableValue(value)) string += $79d2af65d5c10c06$var$processStyleName(_key) + \":\" + $79d2af65d5c10c06$var$processStyleValue(_key, value) + \";\";\n } else if (Array.isArray(value) && typeof value[0] === \"string\" && (registered == null || registered[value[0]] === undefined)) {\n for(var _i = 0; _i < value.length; _i++)if ($79d2af65d5c10c06$var$isProcessableValue(value[_i])) string += $79d2af65d5c10c06$var$processStyleName(_key) + \":\" + $79d2af65d5c10c06$var$processStyleValue(_key, value[_i]) + \";\";\n } else {\n var interpolated = $79d2af65d5c10c06$var$handleInterpolation(mergedProps, registered, value);\n switch(_key){\n case \"animation\":\n case \"animationName\":\n string += $79d2af65d5c10c06$var$processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n default:\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n return string;\n}\nvar $79d2af65d5c10c06$var$labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar $79d2af65d5c10c06$var$sourceMapPattern;\n// keyframes are stored on the SerializedStyles object as a linked list\nvar $79d2af65d5c10c06$var$cursor;\nvar $79d2af65d5c10c06$export$6321afa313b251b5 = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === \"object\" && args[0] !== null && args[0].styles !== undefined) return args[0];\n var stringMode = true;\n var styles = \"\";\n $79d2af65d5c10c06$var$cursor = undefined;\n var strings = args[0];\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += $79d2af65d5c10c06$var$handleInterpolation(mergedProps, registered, strings);\n } else styles += strings[0];\n // we start at 1 since we've already handled the first arg\n for(var i = 1; i < args.length; i++){\n styles += $79d2af65d5c10c06$var$handleInterpolation(mergedProps, registered, args[i]);\n if (stringMode) styles += strings[i];\n }\n var sourceMap;\n $79d2af65d5c10c06$var$labelPattern.lastIndex = 0;\n var identifierName = \"\";\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n while((match = $79d2af65d5c10c06$var$labelPattern.exec(styles)) !== null)identifierName += \"-\" + // $FlowFixMe we know it's not null\n match[1];\n var name = (0, $3ZKH4.default)(styles) + identifierName;\n return {\n name: name,\n styles: styles,\n next: $79d2af65d5c10c06$var$cursor\n };\n};\n\n});\nparcelRegister(\"3ZKH4\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $2e8b4a01f00a0e71$export$2e2bcd8739ae039; });\n/* eslint-disable */ // Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction $2e8b4a01f00a0e71$var$murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n var k, i = 0, len = str.length;\n for(; len >= 4; ++i, len -= 4){\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k = /* Math.imul(k, m): */ (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^= /* k >>> r: */ k >>> 24;\n h = /* Math.imul(k, m): */ (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^ /* Math.imul(h, m): */ (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n switch(len){\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h = /* Math.imul(h, m): */ (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n h ^= h >>> 13;\n h = /* Math.imul(h, m): */ (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\nvar $2e8b4a01f00a0e71$export$2e2bcd8739ae039 = $2e8b4a01f00a0e71$var$murmur2;\n\n});\n\nparcelRegister(\"kIYjZ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $f166b543ff6f8d23$export$2e2bcd8739ae039; });\nvar $f166b543ff6f8d23$var$unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\nvar $f166b543ff6f8d23$export$2e2bcd8739ae039 = $f166b543ff6f8d23$var$unitlessKeys;\n\n});\n\n\n\n\nparcelRegister(\"5vXJC\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $403e2f183c52395e$export$2e2bcd8739ae039; });\nparcelRequire(\"70fFQ\");\n\n\nvar $5f0Qw = parcelRequire(\"5f0Qw\");\n\nparcelRequire(\"l1z3A\");\nvar $e5Z97 = parcelRequire(\"e5Z97\");\n\nvar $3yh9K = parcelRequire(\"3yh9K\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nfunction $403e2f183c52395e$var$InnerThemeProvider(props) {\n const theme = (0, $3yh9K.default)();\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $e5Z97.T).Provider, {\n value: typeof theme === \"object\" ? theme : {},\n children: props.children\n });\n}\n/**\n * This component makes the `theme` available down the React tree.\n * It should preferably be used at **the root of your component tree**.\n */ function $403e2f183c52395e$var$ThemeProvider(props) {\n const { children: children, theme: localTheme } = props;\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $5f0Qw.default), {\n theme: localTheme,\n children: /*#__PURE__*/ (0, $4x3bm.jsx)($403e2f183c52395e$var$InnerThemeProvider, {\n children: children\n })\n });\n}\nvar $403e2f183c52395e$export$2e2bcd8739ae039 = $403e2f183c52395e$var$ThemeProvider;\n\n});\nparcelRegister(\"5f0Qw\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $3d0f027c6cce8dd0$export$2e2bcd8739ae039; });\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\n\nvar $gCCs2 = parcelRequire(\"gCCs2\");\n\nvar $jxWMH = parcelRequire(\"jxWMH\");\n\nvar $9aXnw = parcelRequire(\"9aXnw\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nfunction $3d0f027c6cce8dd0$var$mergeOuterLocalTheme(outerTheme, localTheme) {\n if (typeof localTheme === \"function\") {\n const mergedTheme = localTheme(outerTheme);\n return mergedTheme;\n }\n return (0, $20MOv.default)({}, outerTheme, localTheme);\n}\n/**\n * This component takes a `theme` prop.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */ function $3d0f027c6cce8dd0$var$ThemeProvider(props) {\n const { children: children, theme: localTheme } = props;\n const outerTheme = (0, $jxWMH.default)();\n const theme = $70fFQ.useMemo(()=>{\n const output = outerTheme === null ? localTheme : $3d0f027c6cce8dd0$var$mergeOuterLocalTheme(outerTheme, localTheme);\n if (output != null) output[0, $9aXnw.default] = outerTheme !== null;\n return output;\n }, [\n localTheme,\n outerTheme\n ]);\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $gCCs2.default).Provider, {\n value: theme,\n children: children\n });\n}\nvar $3d0f027c6cce8dd0$export$2e2bcd8739ae039 = $3d0f027c6cce8dd0$var$ThemeProvider;\n\n});\nparcelRegister(\"9aXnw\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6ae31b8dba0fe836$export$2e2bcd8739ae039; });\nconst $6ae31b8dba0fe836$var$hasSymbol = typeof Symbol === \"function\" && Symbol.for;\nvar $6ae31b8dba0fe836$export$2e2bcd8739ae039 = $6ae31b8dba0fe836$var$hasSymbol ? Symbol.for(\"mui.nested\") : \"__THEME_NESTED__\";\n\n});\n\n\nparcelRegister(\"l1z3A\", function(module, exports) {\n\n$parcel$export(module.exports, \"Global\", function () { return $f4e4e289b4538e0e$export$98f03c5d19621d70; });\n$parcel$export(module.exports, \"css\", function () { return $f4e4e289b4538e0e$export$dbf350e5966cf602; });\n$parcel$export(module.exports, \"keyframes\", function () { return $f4e4e289b4538e0e$export$d25ddfdf17c3ad3e; });\n$parcel$export(module.exports, \"ThemeContext\", function () { return (parcelRequire(\"e5Z97\")).T; });\n$parcel$export(module.exports, \"withEmotionCache\", function () { return (parcelRequire(\"e5Z97\")).w; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\nparcelRequire(\"6eHKy\");\n\nvar $e5Z97 = parcelRequire(\"e5Z97\");\nparcelRequire(\"2i5nE\");\nparcelRequire(\"evHj4\");\nparcelRequire(\"6mXVL\");\n\n\nvar $jJpXM = parcelRequire(\"jJpXM\");\n\nvar $asszK = parcelRequire(\"asszK\");\nvar $f4e4e289b4538e0e$var$pkg = {\n name: \"@emotion/react\",\n version: \"11.8.2\",\n main: \"dist/emotion-react.cjs.js\",\n module: \"dist/emotion-react.esm.js\",\n browser: {\n \"./dist/emotion-react.cjs.js\": \"./dist/emotion-react.browser.cjs.js\",\n \"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n },\n types: \"types/index.d.ts\",\n files: [\n \"src\",\n \"dist\",\n \"jsx-runtime\",\n \"jsx-dev-runtime\",\n \"_isolated-hnrs\",\n \"types/*.d.ts\",\n \"macro.js\",\n \"macro.d.ts\",\n \"macro.js.flow\"\n ],\n sideEffects: false,\n author: \"Emotion Contributors\",\n license: \"MIT\",\n scripts: {\n \"test:typescript\": \"dtslint types\"\n },\n dependencies: {\n \"@babel/runtime\": \"^7.13.10\",\n \"@emotion/babel-plugin\": \"^11.7.1\",\n \"@emotion/cache\": \"^11.7.1\",\n \"@emotion/serialize\": \"^1.0.2\",\n \"@emotion/utils\": \"^1.1.0\",\n \"@emotion/weak-memoize\": \"^0.2.5\",\n \"hoist-non-react-statics\": \"^3.3.1\"\n },\n peerDependencies: {\n \"@babel/core\": \"^7.0.0\",\n react: \">=16.8.0\"\n },\n peerDependenciesMeta: {\n \"@babel/core\": {\n optional: true\n },\n \"@types/react\": {\n optional: true\n }\n },\n devDependencies: {\n \"@babel/core\": \"^7.13.10\",\n \"@emotion/css\": \"11.7.1\",\n \"@emotion/css-prettifier\": \"1.0.1\",\n \"@emotion/server\": \"11.4.0\",\n \"@emotion/styled\": \"11.8.1\",\n \"@types/react\": \"^16.9.11\",\n dtslint: \"^4.2.1\",\n \"html-tag-names\": \"^1.1.2\",\n react: \"16.14.0\",\n \"svg-tag-names\": \"^1.1.1\",\n typescript: \"^4.5.5\"\n },\n repository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n publishConfig: {\n access: \"public\"\n },\n \"umd:main\": \"dist/emotion-react.umd.min.js\",\n preconstruct: {\n entrypoints: [\n \"./index.js\",\n \"./jsx-runtime.js\",\n \"./jsx-dev-runtime.js\",\n \"./_isolated-hnrs.js\"\n ],\n umdName: \"emotionReact\"\n }\n};\nvar $f4e4e289b4538e0e$export$c8a8987d4410bf2d = function jsx(type, props) {\n var args = arguments;\n if (props == null || !(0, $e5Z97.h).call(props, \"css\")) // $FlowFixMe\n return (0, $70fFQ.createElement).apply(undefined, args);\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = (0, $e5Z97.E);\n createElementArgArray[1] = (0, $e5Z97.c)(type, props);\n for(var i = 2; i < argsLength; i++)createElementArgArray[i] = args[i];\n // $FlowFixMe\n return (0, $70fFQ.createElement).apply(null, createElementArgArray);\n};\nvar $f4e4e289b4538e0e$var$useInsertionEffect = $70fFQ.useInsertionEffect ? $70fFQ.useInsertionEffect : (0, $70fFQ.useLayoutEffect);\nvar $f4e4e289b4538e0e$var$warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\nvar $f4e4e289b4538e0e$export$98f03c5d19621d70 = /* #__PURE__ */ (0, $e5Z97.w)(function(props, cache) {\n var styles = props.styles;\n var serialized = (0, $asszK.serializeStyles)([\n styles\n ], undefined, (0, $70fFQ.useContext)((0, $e5Z97.T)));\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n var sheetRef = (0, $70fFQ.useRef)();\n $f4e4e289b4538e0e$var$useInsertionEffect(function() {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n var node = document.querySelector('style[data-emotion=\"' + key + \" \" + serialized.name + '\"]');\n if (cache.sheet.tags.length) sheet.before = cache.sheet.tags[0];\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n node.setAttribute(\"data-emotion\", key);\n sheet.hydrate([\n node\n ]);\n }\n sheetRef.current = [\n sheet,\n rehydrating\n ];\n return function() {\n sheet.flush();\n };\n }, [\n cache\n ]);\n $f4e4e289b4538e0e$var$useInsertionEffect(function() {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0], rehydrating = sheetRefCurrent[1];\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n if (serialized.next !== undefined) // insert keyframes\n (0, $jJpXM.insertStyles)(cache, serialized.next, true);\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n cache.insert(\"\", serialized, sheet, false);\n }, [\n cache,\n serialized.name\n ]);\n return null;\n});\nfunction $f4e4e289b4538e0e$export$dbf350e5966cf602() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n return (0, $asszK.serializeStyles)(args);\n}\nvar $f4e4e289b4538e0e$export$d25ddfdf17c3ad3e = function keyframes() {\n var insertable = $f4e4e289b4538e0e$export$dbf350e5966cf602.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\nvar $f4e4e289b4538e0e$var$classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = \"\";\n for(; i < len; i++){\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n switch(typeof arg){\n case \"boolean\":\n break;\n case \"object\":\n if (Array.isArray(arg)) toAdd = classnames(arg);\n else {\n toAdd = \"\";\n for(var k in arg)if (arg[k] && k) {\n toAdd && (toAdd += \" \");\n toAdd += k;\n }\n }\n break;\n default:\n toAdd = arg;\n }\n if (toAdd) {\n cls && (cls += \" \");\n cls += toAdd;\n }\n }\n return cls;\n};\nfunction $f4e4e289b4538e0e$var$merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = (0, $jJpXM.getRegisteredStyles)(registered, registeredStyles, className);\n if (registeredStyles.length < 2) return className;\n return rawClassName + css(registeredStyles);\n}\nvar $f4e4e289b4538e0e$var$Insertion = function Insertion(_ref) {\n var cache = _ref.cache, serializedArr = _ref.serializedArr;\n var rules = (0, $e5Z97.u)(function() {\n for(var i = 0; i < serializedArr.length; i++)var res = (0, $jJpXM.insertStyles)(cache, serializedArr[i], false);\n });\n return null;\n};\nvar $f4e4e289b4538e0e$export$9b9c0f9d9f3552b8 = /* #__PURE__ */ (0, $e5Z97.w)(function(props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n var css = function css() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n var serialized = (0, $asszK.serializeStyles)(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n (0, $jJpXM.registerStyles)(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n var cx = function cx() {\n for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++)args[_key2] = arguments[_key2];\n return $f4e4e289b4538e0e$var$merge(cache.registered, css, $f4e4e289b4538e0e$var$classnames(args));\n };\n var content = {\n css: css,\n cx: cx,\n theme: (0, $70fFQ.useContext)((0, $e5Z97.T))\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/ (0, $70fFQ.createElement)((0, $70fFQ.Fragment), null, /*#__PURE__*/ (0, $70fFQ.createElement)($f4e4e289b4538e0e$var$Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\nvar $f4e4e289b4538e0e$var$isBrowser, $f4e4e289b4538e0e$var$isJest, $f4e4e289b4538e0e$var$globalContext, $f4e4e289b4538e0e$var$globalKey;\n\n});\nparcelRegister(\"2i5nE\", function(module, exports) {\nfunction $1ab16fa43c767403$var$_extends() {\n module.exports = $1ab16fa43c767403$var$_extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return $1ab16fa43c767403$var$_extends.apply(this, arguments);\n}\nmodule.exports = $1ab16fa43c767403$var$_extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n});\n\n\n\nparcelRegister(\"gOgWf\", function(module, exports) {\n\n$parcel$export(module.exports, \"observable\", function () { return observable; });\n$parcel$export(module.exports, \"computed\", function () { return computed; });\n$parcel$export(module.exports, \"autorun\", function () { return autorun; });\n$parcel$export(module.exports, \"getDependencyTree\", function () { return getDependencyTree; });\n$parcel$export(module.exports, \"Reaction\", function () { return Reaction; });\n$parcel$export(module.exports, \"action\", function () { return action; });\n$parcel$export(module.exports, \"reaction\", function () { return reaction; });\n$parcel$export(module.exports, \"configure\", function () { return configure; });\n$parcel$export(module.exports, \"keys\", function () { return keys; });\n$parcel$export(module.exports, \"set\", function () { return set; });\n$parcel$export(module.exports, \"remove\", function () { return remove; });\n$parcel$export(module.exports, \"makeObservable\", function () { return makeObservable; });\n$parcel$export(module.exports, \"runInAction\", function () { return runInAction; });\nvar niceErrors = {\n 0: \"Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'\",\n 1: function _(annotationType, key) {\n return \"Cannot apply '\" + annotationType + \"' to '\" + key.toString() + \"': Field not found.\";\n },\n /*\r\n 2(prop) {\r\n return `invalid decorator for '${prop.toString()}'`\r\n },\r\n 3(prop) {\r\n return `Cannot decorate '${prop.toString()}': action can only be used on properties with a function value.`\r\n },\r\n 4(prop) {\r\n return `Cannot decorate '${prop.toString()}': computed can only be used on getter properties.`\r\n },\r\n */ 5: \"'keys()' can only be used on observable objects, arrays, sets and maps\",\n 6: \"'values()' can only be used on observable objects, arrays, sets and maps\",\n 7: \"'entries()' can only be used on observable objects, arrays and maps\",\n 8: \"'set()' can only be used on observable objects, arrays and maps\",\n 9: \"'remove()' can only be used on observable objects, arrays and maps\",\n 10: \"'has()' can only be used on observable objects, arrays and maps\",\n 11: \"'get()' can only be used on observable objects, arrays and maps\",\n 12: \"Invalid annotation\",\n 13: \"Dynamic observable objects cannot be frozen\",\n 14: \"Intercept handlers should return nothing or a change object\",\n 15: \"Observable arrays cannot be frozen\",\n 16: \"Modification exception: the internal structure of an observable array was changed.\",\n 17: function _(index, length) {\n return \"[mobx.array] Index out of bounds, \" + index + \" is larger than \" + length;\n },\n 18: \"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\",\n 19: function _(other) {\n return \"Cannot initialize from classes that inherit from Map: \" + other.constructor.name;\n },\n 20: function _(other) {\n return \"Cannot initialize map from \" + other;\n },\n 21: function _(dataStructure) {\n return \"Cannot convert to map from '\" + dataStructure + \"'\";\n },\n 22: \"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\",\n 23: \"It is not possible to get index atoms from arrays\",\n 24: function _(thing) {\n return \"Cannot obtain administration from \" + thing;\n },\n 25: function _(property, name) {\n return \"the entry '\" + property + \"' does not exist in the observable map '\" + name + \"'\";\n },\n 26: \"please specify a property\",\n 27: function _(property, name) {\n return \"no observable property '\" + property.toString() + \"' found on the observable object '\" + name + \"'\";\n },\n 28: function _(thing) {\n return \"Cannot obtain atom from \" + thing;\n },\n 29: \"Expecting some object\",\n 30: \"invalid action stack. did you forget to finish an action?\",\n 31: \"missing option for computed: get\",\n 32: function _(name, derivation) {\n return \"Cycle detected in computation \" + name + \": \" + derivation;\n },\n 33: function _(name) {\n return \"The setter of computed value '\" + name + \"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?\";\n },\n 34: function _(name) {\n return \"[ComputedValue '\" + name + \"'] It is not possible to assign a new value to a computed value.\";\n },\n 35: \"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\",\n 36: \"isolateGlobalState should be called before MobX is running any reactions\",\n 37: function _(method) {\n return \"[mobx] `observableArray.\" + method + \"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice().\" + method + \"()` instead\";\n },\n 38: \"'ownKeys()' can only be used on observable objects\",\n 39: \"'defineProperty()' can only be used on observable objects\"\n};\nvar errors = {};\nfunction die(error) {\n for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++)args[_key - 1] = arguments[_key];\n var e;\n throw new Error(typeof error === \"number\" ? \"[MobX] minified error nr: \" + error + (args.length ? \" \" + args.map(String).join(\",\") : \"\") + \". Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts\" : \"[MobX] \" + error);\n}\nvar mockGlobal = {};\nfunction getGlobal() {\n if (typeof globalThis !== \"undefined\") return globalThis;\n if (typeof window !== \"undefined\") return window;\n if (typeof $parcel$global !== \"undefined\") return $parcel$global;\n if (typeof self !== \"undefined\") return self;\n return mockGlobal;\n}\nvar assign = Object.assign;\nvar getDescriptor = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar objectPrototype = Object.prototype;\nvar EMPTY_ARRAY = [];\nObject.freeze(EMPTY_ARRAY);\nvar EMPTY_OBJECT = {};\nObject.freeze(EMPTY_OBJECT);\nvar hasProxy = typeof Proxy !== \"undefined\";\nvar plainObjectString = /*#__PURE__*/ Object.toString();\nfunction assertProxies() {\n if (!hasProxy) die(\"Proxy not available\");\n}\nfunction warnAboutProxyRequirement(msg) {}\nfunction getNextId() {\n return ++globalState.mobxGuid;\n}\n/**\r\n * Makes sure that the provided function is invoked at most once.\r\n */ function once(func) {\n var invoked = false;\n return function() {\n if (invoked) return;\n invoked = true;\n return func.apply(this, arguments);\n };\n}\nvar noop = function noop() {};\nfunction isFunction(fn) {\n return typeof fn === \"function\";\n}\nfunction isStringish(value) {\n var t = typeof value;\n switch(t){\n case \"string\":\n case \"symbol\":\n case \"number\":\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && typeof value === \"object\";\n}\nfunction isPlainObject(value) {\n var _proto$constructor;\n if (!isObject(value)) return false;\n var proto = Object.getPrototypeOf(value);\n if (proto == null) return true;\n return ((_proto$constructor = proto.constructor) == null ? void 0 : _proto$constructor.toString()) === plainObjectString;\n} // https://stackoverflow.com/a/37865170\nfunction isGenerator(obj) {\n var constructor = obj == null ? void 0 : obj.constructor;\n if (!constructor) return false;\n if (\"GeneratorFunction\" === constructor.name || \"GeneratorFunction\" === constructor.displayName) return true;\n return false;\n}\nfunction addHiddenProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value: value\n });\n}\nfunction addHiddenFinalProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: false,\n configurable: true,\n value: value\n });\n}\nfunction createInstanceofPredicate(name, theClass) {\n var propName = \"isMobX\" + name;\n theClass.prototype[propName] = true;\n return function(x) {\n return isObject(x) && x[propName] === true;\n };\n}\nfunction isES6Map(thing) {\n return thing instanceof Map;\n}\nfunction isES6Set(thing) {\n return thing instanceof Set;\n}\nvar hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\";\n/**\r\n * Returns the following: own enumerable keys and symbols.\r\n */ function getPlainObjectKeys(object) {\n var keys = Object.keys(object); // Not supported in IE, so there are not going to be symbol props anyway...\n if (!hasGetOwnPropertySymbols) return keys;\n var symbols = Object.getOwnPropertySymbols(object);\n if (!symbols.length) return keys;\n return [].concat(keys, symbols.filter(function(s) {\n return objectPrototype.propertyIsEnumerable.call(object, s);\n }));\n} // From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\nvar ownKeys = typeof Reflect !== \"undefined\" && Reflect.ownKeys ? Reflect.ownKeys : hasGetOwnPropertySymbols ? function(obj) {\n return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj));\n} : /* istanbul ignore next */ Object.getOwnPropertyNames;\nfunction stringifyKey(key) {\n if (typeof key === \"string\") return key;\n if (typeof key === \"symbol\") return key.toString();\n return new String(key).toString();\n}\nfunction toPrimitive(value) {\n return value === null ? null : typeof value === \"object\" ? \"\" + value : value;\n}\nfunction hasProp(target, prop) {\n return objectPrototype.hasOwnProperty.call(target, prop);\n} // From Immer utils\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors(target) {\n // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n var res = {}; // Note: without polyfill for ownKeys, symbols won't be picked up\n ownKeys(target).forEach(function(key) {\n res[key] = getDescriptor(target, key);\n });\n return res;\n};\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\nfunction _assertThisInitialized(self1) {\n if (self1 === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self1;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it;\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n it = o[Symbol.iterator]();\n return it.next.bind(it);\n}\nvar storedAnnotationsSymbol = /*#__PURE__*/ Symbol(\"mobx-stored-annotations\");\n/**\r\n * Creates a function that acts as\r\n * - decorator\r\n * - annotation object\r\n */ function createDecoratorAnnotation(annotation) {\n function decorator(target, property) {\n storeAnnotation(target, property, annotation);\n }\n return Object.assign(decorator, annotation);\n}\n/**\r\n * Stores annotation to prototype,\r\n * so it can be inspected later by `makeObservable` called from constructor\r\n */ function storeAnnotation(prototype, key, annotation) {\n if (!hasProp(prototype, storedAnnotationsSymbol)) addHiddenProp(prototype, storedAnnotationsSymbol, _extends({}, prototype[storedAnnotationsSymbol]));\n // @override must override something\n var fieldName;\n assertNotDecorated(prototype, annotation, key); // Ignore override\n if (!isOverride(annotation)) prototype[storedAnnotationsSymbol][key] = annotation;\n}\nfunction assertNotDecorated(prototype, annotation, key) {\n var fieldName, currentAnnotationType, requestedAnnotationType;\n}\n/**\r\n * Collects annotations from prototypes and stores them on target (instance)\r\n */ function collectStoredAnnotations(target) {\n if (!hasProp(target, storedAnnotationsSymbol)) addHiddenProp(target, storedAnnotationsSymbol, _extends({}, target[storedAnnotationsSymbol]));\n return target[storedAnnotationsSymbol];\n}\nvar $mobx = /*#__PURE__*/ Symbol(\"mobx administration\");\nvar Atom = /*#__PURE__*/ function() {\n // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n /**\r\n * Create a new atom. For debugging purposes it is recommended to give it a name.\r\n * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\r\n */ function Atom(name_) {\n if (name_ === void 0) name_ = \"Atom\";\n this.name_ = void 0;\n this.isPendingUnobservation_ = false;\n this.isBeingObserved_ = false;\n this.observers_ = new Set();\n this.diffValue_ = 0;\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.NOT_TRACKING_;\n this.onBOL = void 0;\n this.onBUOL = void 0;\n this.name_ = name_;\n } // onBecomeObservedListeners\n var _proto = Atom.prototype;\n _proto.onBO = function onBO() {\n if (this.onBOL) this.onBOL.forEach(function(listener) {\n return listener();\n });\n };\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) this.onBUOL.forEach(function(listener) {\n return listener();\n });\n } /**\r\n * Invoke this method to notify mobx that your atom has been used somehow.\r\n * Returns true if there is currently a reactive context.\r\n */ ;\n _proto.reportObserved = function reportObserved$1() {\n return reportObserved(this);\n } /**\r\n * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\r\n */ ;\n _proto.reportChanged = function reportChanged() {\n startBatch();\n propagateChanged(this);\n endBatch();\n };\n _proto.toString = function toString() {\n return this.name_;\n };\n return Atom;\n}();\nvar isAtom = /*#__PURE__*/ createInstanceofPredicate(\"Atom\", Atom);\nfunction createAtom(name, onBecomeObservedHandler, onBecomeUnobservedHandler) {\n if (onBecomeObservedHandler === void 0) onBecomeObservedHandler = noop;\n if (onBecomeUnobservedHandler === void 0) onBecomeUnobservedHandler = noop;\n var atom = new Atom(name); // default `noop` listener will not initialize the hook Set\n if (onBecomeObservedHandler !== noop) onBecomeObserved(atom, onBecomeObservedHandler);\n if (onBecomeUnobservedHandler !== noop) onBecomeUnobserved(atom, onBecomeUnobservedHandler);\n return atom;\n}\nfunction identityComparer(a, b) {\n return a === b;\n}\nfunction structuralComparer(a, b) {\n return deepEqual(a, b);\n}\nfunction shallowComparer(a, b) {\n return deepEqual(a, b, 1);\n}\nfunction defaultComparer(a, b) {\n if (Object.is) return Object.is(a, b);\n return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b;\n}\nvar comparer = {\n identity: identityComparer,\n structural: structuralComparer,\n \"default\": defaultComparer,\n shallow: shallowComparer\n};\nfunction deepEnhancer(v, _, name) {\n // it is an observable already, done\n if (isObservable(v)) return v; // something that can be converted and mutated?\n if (Array.isArray(v)) return observable.array(v, {\n name: name\n });\n if (isPlainObject(v)) return observable.object(v, undefined, {\n name: name\n });\n if (isES6Map(v)) return observable.map(v, {\n name: name\n });\n if (isES6Set(v)) return observable.set(v, {\n name: name\n });\n if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n if (isGenerator(v)) return flow(v);\n else return autoAction(name, v);\n }\n return v;\n}\nfunction shallowEnhancer(v, _, name) {\n if (v === undefined || v === null) return v;\n if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v)) return v;\n if (Array.isArray(v)) return observable.array(v, {\n name: name,\n deep: false\n });\n if (isPlainObject(v)) return observable.object(v, undefined, {\n name: name,\n deep: false\n });\n if (isES6Map(v)) return observable.map(v, {\n name: name,\n deep: false\n });\n if (isES6Set(v)) return observable.set(v, {\n name: name,\n deep: false\n });\n}\nfunction referenceEnhancer(newValue) {\n // never turn into an observable\n return newValue;\n}\nfunction refStructEnhancer(v, oldValue) {\n if (deepEqual(v, oldValue)) return oldValue;\n return v;\n}\nvar OVERRIDE = \"override\";\nvar override = /*#__PURE__*/ createDecoratorAnnotation({\n annotationType_: OVERRIDE,\n make_: make_,\n extend_: extend_\n});\nfunction isOverride(annotation) {\n return annotation.annotationType_ === OVERRIDE;\n}\nfunction make_(adm, key) {\n return 0 /* Cancel */ ;\n}\nfunction extend_(adm, key, descriptor, proxyTrap) {\n die(\"'\" + this.annotationType_ + \"' can only be used with 'makeObservable'\");\n}\nfunction createActionAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$1,\n extend_: extend_$1\n };\n}\nfunction make_$1(adm, key, descriptor, source) {\n var _this$options_;\n // bound\n if ((_this$options_ = this.options_) == null ? void 0 : _this$options_.bound) return this.extend_(adm, key, descriptor, false) === null ? 0 : 1 /* Break */ ;\n // own\n if (source === adm.target_) return this.extend_(adm, key, descriptor, false) === null ? 0 : 2 /* Continue */ ;\n // prototype\n if (isAction(descriptor.value)) // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1 /* Break */ ;\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false);\n defineProperty(source, key, actionDescriptor);\n return 2 /* Continue */ ;\n}\nfunction extend_$1(adm, key, descriptor, proxyTrap) {\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor);\n return adm.defineProperty_(key, actionDescriptor, proxyTrap);\n}\nfunction assertActionDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n}\nfunction createActionDescriptor(adm, annotation, key, descriptor, safeDescriptors) {\n var _annotation$options_, _annotation$options_$, _annotation$options_2, _annotation$options_$2, _annotation$options_3, _annotation$options_4, _adm$proxy_2;\n if (safeDescriptors === void 0) safeDescriptors = globalState.safeDescriptors;\n assertActionDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n if ((_annotation$options_ = annotation.options_) == null ? void 0 : _annotation$options_.bound) {\n var _adm$proxy_;\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n return {\n value: createAction((_annotation$options_$ = (_annotation$options_2 = annotation.options_) == null ? void 0 : _annotation$options_2.name) != null ? _annotation$options_$ : key.toString(), value, (_annotation$options_$2 = (_annotation$options_3 = annotation.options_) == null ? void 0 : _annotation$options_3.autoAction) != null ? _annotation$options_$2 : false, ((_annotation$options_4 = annotation.options_) == null ? void 0 : _annotation$options_4.bound) ? (_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_ : undefined),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\nfunction createFlowAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$2,\n extend_: extend_$2\n };\n}\nfunction make_$2(adm, key, descriptor, source) {\n var _this$options_;\n // own\n if (source === adm.target_) return this.extend_(adm, key, descriptor, false) === null ? 0 : 2 /* Continue */ ;\n // prototype\n // bound - must annotate protos to support super.flow()\n if (((_this$options_ = this.options_) == null ? void 0 : _this$options_.bound) && !isFlow(adm.target_[key])) {\n if (this.extend_(adm, key, descriptor, false) === null) return 0 /* Cancel */ ;\n }\n if (isFlow(descriptor.value)) // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1 /* Break */ ;\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false);\n defineProperty(source, key, flowDescriptor);\n return 2 /* Continue */ ;\n}\nfunction extend_$2(adm, key, descriptor, proxyTrap) {\n var _this$options_2;\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, (_this$options_2 = this.options_) == null ? void 0 : _this$options_2.bound);\n return adm.defineProperty_(key, flowDescriptor, proxyTrap);\n}\nfunction assertFlowDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n}\nfunction createFlowDescriptor(adm, annotation, key, descriptor, bound, safeDescriptors) {\n if (safeDescriptors === void 0) safeDescriptors = globalState.safeDescriptors;\n assertFlowDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n if (bound) {\n var _adm$proxy_;\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n return {\n value: flow(value),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\nfunction createComputedAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$3,\n extend_: extend_$3\n };\n}\nfunction make_$3(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 : 1 /* Break */ ;\n}\nfunction extend_$3(adm, key, descriptor, proxyTrap) {\n assertComputedDescriptor(adm, this, key, descriptor);\n return adm.defineComputedProperty_(key, _extends({}, this.options_, {\n get: descriptor.get,\n set: descriptor.set\n }), proxyTrap);\n}\nfunction assertComputedDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var get = _ref2.get;\n}\nfunction createObservableAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$4,\n extend_: extend_$4\n };\n}\nfunction make_$4(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0 : 1 /* Break */ ;\n}\nfunction extend_$4(adm, key, descriptor, proxyTrap) {\n var _this$options_$enhanc, _this$options_;\n assertObservableDescriptor(adm, this, key, descriptor);\n return adm.defineObservableProperty_(key, descriptor.value, (_this$options_$enhanc = (_this$options_ = this.options_) == null ? void 0 : _this$options_.enhancer) != null ? _this$options_$enhanc : deepEnhancer, proxyTrap);\n}\nfunction assertObservableDescriptor(adm, _ref, key, descriptor) {\n var annotationType_ = _ref.annotationType_;\n}\nvar AUTO = \"true\";\nvar autoAnnotation = /*#__PURE__*/ createAutoAnnotation();\nfunction createAutoAnnotation(options) {\n return {\n annotationType_: AUTO,\n options_: options,\n make_: make_$5,\n extend_: extend_$5\n };\n}\nfunction make_$5(adm, key, descriptor, source) {\n var _this$options_3, _this$options_4;\n // getter -> computed\n if (descriptor.get) return computed.make_(adm, key, descriptor, source);\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.make_\n var set = createAction(key.toString(), descriptor.set); // own\n if (source === adm.target_) return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: set\n }) === null ? 0 : 2 /* Continue */ ;\n // proto\n defineProperty(source, key, {\n configurable: true,\n set: set\n });\n return 2 /* Continue */ ;\n } // function on proto -> autoAction/flow\n if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n var _this$options_2;\n if (isGenerator(descriptor.value)) {\n var _this$options_;\n var flowAnnotation = ((_this$options_ = this.options_) == null ? void 0 : _this$options_.autoBind) ? flow.bound : flow;\n return flowAnnotation.make_(adm, key, descriptor, source);\n }\n var actionAnnotation = ((_this$options_2 = this.options_) == null ? void 0 : _this$options_2.autoBind) ? autoAction.bound : autoAction;\n return actionAnnotation.make_(adm, key, descriptor, source);\n } // other -> observable\n // Copy props from proto as well, see test:\n // \"decorate should work with Object.create\"\n var observableAnnotation = ((_this$options_3 = this.options_) == null ? void 0 : _this$options_3.deep) === false ? observable.ref : observable; // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && ((_this$options_4 = this.options_) == null ? void 0 : _this$options_4.autoBind)) {\n var _adm$proxy_;\n descriptor.value = descriptor.value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n return observableAnnotation.make_(adm, key, descriptor, source);\n}\nfunction extend_$5(adm, key, descriptor, proxyTrap) {\n var _this$options_5, _this$options_6;\n // getter -> computed\n if (descriptor.get) return computed.extend_(adm, key, descriptor, proxyTrap);\n // lone setter -> action setter\n if (descriptor.set) // TODO make action applicable to setter and delegate to action.extend_\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: createAction(key.toString(), descriptor.set)\n }, proxyTrap);\n // other -> observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && ((_this$options_5 = this.options_) == null ? void 0 : _this$options_5.autoBind)) {\n var _adm$proxy_2;\n descriptor.value = descriptor.value.bind((_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_);\n }\n var observableAnnotation = ((_this$options_6 = this.options_) == null ? void 0 : _this$options_6.deep) === false ? observable.ref : observable;\n return observableAnnotation.extend_(adm, key, descriptor, proxyTrap);\n}\nvar OBSERVABLE = \"observable\";\nvar OBSERVABLE_REF = \"observable.ref\";\nvar OBSERVABLE_SHALLOW = \"observable.shallow\";\nvar OBSERVABLE_STRUCT = \"observable.struct\"; // Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nvar defaultCreateObservableOptions = {\n deep: true,\n name: undefined,\n defaultDecorator: undefined,\n proxy: true\n};\nObject.freeze(defaultCreateObservableOptions);\nfunction asCreateObservableOptions(thing) {\n return thing || defaultCreateObservableOptions;\n}\nvar observableAnnotation = /*#__PURE__*/ createObservableAnnotation(OBSERVABLE);\nvar observableRefAnnotation = /*#__PURE__*/ createObservableAnnotation(OBSERVABLE_REF, {\n enhancer: referenceEnhancer\n});\nvar observableShallowAnnotation = /*#__PURE__*/ createObservableAnnotation(OBSERVABLE_SHALLOW, {\n enhancer: shallowEnhancer\n});\nvar observableStructAnnotation = /*#__PURE__*/ createObservableAnnotation(OBSERVABLE_STRUCT, {\n enhancer: refStructEnhancer\n});\nvar observableDecoratorAnnotation = /*#__PURE__*/ createDecoratorAnnotation(observableAnnotation);\nfunction getEnhancerFromOptions(options) {\n return options.deep === true ? deepEnhancer : options.deep === false ? referenceEnhancer : getEnhancerFromAnnotation(options.defaultDecorator);\n}\nfunction getAnnotationFromOptions(options) {\n var _options$defaultDecor;\n return options ? (_options$defaultDecor = options.defaultDecorator) != null ? _options$defaultDecor : createAutoAnnotation(options) : undefined;\n}\nfunction getEnhancerFromAnnotation(annotation) {\n var _annotation$options_$, _annotation$options_;\n return !annotation ? deepEnhancer : (_annotation$options_$ = (_annotation$options_ = annotation.options_) == null ? void 0 : _annotation$options_.enhancer) != null ? _annotation$options_$ : deepEnhancer;\n}\n/**\r\n * Turns an object, array or function into a reactive structure.\r\n * @param v the value which should become observable.\r\n */ function createObservable(v, arg2, arg3) {\n // @observable someProp;\n if (isStringish(arg2)) {\n storeAnnotation(v, arg2, observableAnnotation);\n return;\n } // already observable - ignore\n if (isObservable(v)) return v; // plain object\n if (isPlainObject(v)) return observable.object(v, arg2, arg3); // Array\n if (Array.isArray(v)) return observable.array(v, arg2); // Map\n if (isES6Map(v)) return observable.map(v, arg2); // Set\n if (isES6Set(v)) return observable.set(v, arg2); // other object - ignore\n if (typeof v === \"object\" && v !== null) return v; // anything else\n return observable.box(v, arg2);\n}\nObject.assign(createObservable, observableDecoratorAnnotation);\nvar observableFactories = {\n box: function box(value, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals);\n },\n array: function array(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return (globalState.useProxies === false || o.proxy === false ? createLegacyArray : createObservableArray)(initialValues, getEnhancerFromOptions(o), o.name);\n },\n map: function map(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableMap(initialValues, getEnhancerFromOptions(o), o.name);\n },\n set: function set(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableSet(initialValues, getEnhancerFromOptions(o), o.name);\n },\n object: function object(props, decorators, options) {\n return extendObservable(globalState.useProxies === false || (options == null ? void 0 : options.proxy) === false ? asObservableObject({}, options) : asDynamicObservableObject({}, options), props, decorators);\n },\n ref: /*#__PURE__*/ createDecoratorAnnotation(observableRefAnnotation),\n shallow: /*#__PURE__*/ createDecoratorAnnotation(observableShallowAnnotation),\n deep: observableDecoratorAnnotation,\n struct: /*#__PURE__*/ createDecoratorAnnotation(observableStructAnnotation)\n}; // eslint-disable-next-line\nvar observable = /*#__PURE__*/ assign(createObservable, observableFactories);\nvar COMPUTED = \"computed\";\nvar COMPUTED_STRUCT = \"computed.struct\";\nvar computedAnnotation = /*#__PURE__*/ createComputedAnnotation(COMPUTED);\nvar computedStructAnnotation = /*#__PURE__*/ createComputedAnnotation(COMPUTED_STRUCT, {\n equals: comparer.structural\n});\n/**\r\n * Decorator for class properties: @computed get value() { return expr; }.\r\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\r\n */ var computed = function computed(arg1, arg2) {\n if (isStringish(arg2)) // @computed\n return storeAnnotation(arg1, arg2, computedAnnotation);\n if (isPlainObject(arg1)) // @computed({ options })\n return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1));\n // computed(expr, options?)\n var opts = isPlainObject(arg2) ? arg2 : {};\n opts.get = arg1;\n opts.name || (opts.name = arg1.name || \"\");\n /* for generated name */ return new ComputedValue(opts);\n};\nObject.assign(computed, computedAnnotation);\ncomputed.struct = /*#__PURE__*/ createDecoratorAnnotation(computedStructAnnotation);\nvar _getDescriptor$config, _getDescriptor;\n// mobx versions\nvar currentActionId = 0;\nvar nextActionId = 1;\nvar isFunctionNameConfigurable = (_getDescriptor$config = (_getDescriptor = /*#__PURE__*/ getDescriptor(function() {}, \"name\")) == null ? void 0 : _getDescriptor.configurable) != null ? _getDescriptor$config : false; // we can safely recycle this object\nvar tmpNameDescriptor = {\n value: \"action\",\n configurable: true,\n writable: false,\n enumerable: false\n};\nfunction createAction(actionName, fn, autoAction, ref) {\n if (autoAction === void 0) autoAction = false;\n function res() {\n return executeAction(actionName, autoAction, fn, ref || this, arguments);\n }\n res.isMobxAction = true;\n if (isFunctionNameConfigurable) {\n tmpNameDescriptor.value = actionName;\n Object.defineProperty(res, \"name\", tmpNameDescriptor);\n }\n return res;\n}\nfunction executeAction(actionName, canRunAsDerivation, fn, scope, args) {\n var runInfo = _startAction(actionName, canRunAsDerivation, scope, args);\n try {\n return fn.apply(scope, args);\n } catch (err) {\n runInfo.error_ = err;\n throw err;\n } finally{\n _endAction(runInfo);\n }\n}\nfunction _startAction(actionName, canRunAsDerivation, scope, args) {\n var notifySpy_ = false;\n var startTime_ = 0;\n var flattenedArgs;\n var prevDerivation_ = globalState.trackingDerivation;\n var runAsAction = !canRunAsDerivation || !prevDerivation_;\n startBatch();\n var prevAllowStateChanges_ = globalState.allowStateChanges; // by default preserve previous allow\n if (runAsAction) {\n untrackedStart();\n prevAllowStateChanges_ = allowStateChangesStart(true);\n }\n var prevAllowStateReads_ = allowStateReadsStart(true);\n var runInfo = {\n runAsAction_: runAsAction,\n prevDerivation_: prevDerivation_,\n prevAllowStateChanges_: prevAllowStateChanges_,\n prevAllowStateReads_: prevAllowStateReads_,\n notifySpy_: notifySpy_,\n startTime_: startTime_,\n actionId_: nextActionId++,\n parentActionId_: currentActionId\n };\n currentActionId = runInfo.actionId_;\n return runInfo;\n}\nfunction _endAction(runInfo) {\n if (currentActionId !== runInfo.actionId_) die(30);\n currentActionId = runInfo.parentActionId_;\n if (runInfo.error_ !== undefined) globalState.suppressReactionErrors = true;\n allowStateChangesEnd(runInfo.prevAllowStateChanges_);\n allowStateReadsEnd(runInfo.prevAllowStateReads_);\n endBatch();\n if (runInfo.runAsAction_) untrackedEnd(runInfo.prevDerivation_);\n globalState.suppressReactionErrors = false;\n}\nfunction allowStateChanges(allowStateChanges, func) {\n var prev = allowStateChangesStart(allowStateChanges);\n try {\n return func();\n } finally{\n allowStateChangesEnd(prev);\n }\n}\nfunction allowStateChangesStart(allowStateChanges) {\n var prev = globalState.allowStateChanges;\n globalState.allowStateChanges = allowStateChanges;\n return prev;\n}\nfunction allowStateChangesEnd(prev) {\n globalState.allowStateChanges = prev;\n}\nvar _Symbol$toPrimitive;\nvar CREATE = \"create\";\n_Symbol$toPrimitive = Symbol.toPrimitive;\nvar ObservableValue = /*#__PURE__*/ function(_Atom) {\n _inheritsLoose(ObservableValue, _Atom);\n function ObservableValue(value, enhancer, name_, notifySpy, equals) {\n var _this;\n if (name_ === void 0) name_ = \"ObservableValue\";\n if (notifySpy === void 0) notifySpy = true;\n if (equals === void 0) equals = comparer[\"default\"];\n _this = _Atom.call(this, name_) || this;\n _this.enhancer = void 0;\n _this.name_ = void 0;\n _this.equals = void 0;\n _this.hasUnreportedChange_ = false;\n _this.interceptors_ = void 0;\n _this.changeListeners_ = void 0;\n _this.value_ = void 0;\n _this.dehancer = void 0;\n _this.enhancer = enhancer;\n _this.name_ = name_;\n _this.equals = equals;\n _this.value_ = enhancer(value, undefined, name_);\n return _this;\n }\n var _proto = ObservableValue.prototype;\n _proto.dehanceValue = function dehanceValue(value) {\n if (this.dehancer !== undefined) return this.dehancer(value);\n return value;\n };\n _proto.set = function set(newValue) {\n var oldValue = this.value_;\n newValue = this.prepareNewValue_(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n this.setNewValue_(newValue);\n }\n };\n _proto.prepareNewValue_ = function prepareNewValue_(newValue) {\n checkIfStateModificationsAreAllowed(this);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this,\n type: UPDATE,\n newValue: newValue\n });\n if (!change) return globalState.UNCHANGED;\n newValue = change.newValue;\n } // apply modifier\n newValue = this.enhancer(newValue, this.value_, this.name_);\n return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue;\n };\n _proto.setNewValue_ = function setNewValue_(newValue) {\n var oldValue = this.value_;\n this.value_ = newValue;\n this.reportChanged();\n if (hasListeners(this)) notifyListeners(this, {\n type: UPDATE,\n object: this,\n newValue: newValue,\n oldValue: oldValue\n });\n };\n _proto.get = function get() {\n this.reportObserved();\n return this.dehanceValue(this.value_);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately) listener({\n observableKind: \"value\",\n debugObjectName: this.name_,\n object: this,\n type: UPDATE,\n newValue: this.value_,\n oldValue: undefined\n });\n return registerListener(this, listener);\n };\n _proto.raw = function raw() {\n // used by MST ot get undehanced value\n return this.value_;\n };\n _proto.toJSON = function toJSON() {\n return this.get();\n };\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.value_ + \"]\";\n };\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n _proto[_Symbol$toPrimitive] = function() {\n return this.valueOf();\n };\n return ObservableValue;\n}(Atom);\nvar isObservableValue = /*#__PURE__*/ createInstanceofPredicate(\"ObservableValue\", ObservableValue);\nvar _Symbol$toPrimitive$1;\n/**\r\n * A node in the state dependency root that observes other nodes, and can be observed itself.\r\n *\r\n * ComputedValue will remember the result of the computation for the duration of the batch, or\r\n * while being observed.\r\n *\r\n * During this time it will recompute only when one of its direct dependencies changed,\r\n * but only when it is being accessed with `ComputedValue.get()`.\r\n *\r\n * Implementation description:\r\n * 1. First time it's being accessed it will compute and remember result\r\n * give back remembered result until 2. happens\r\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\r\n * 3. When it's being accessed, recompute if any shallow dependency changed.\r\n * if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\r\n * go to step 2. either way\r\n *\r\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\r\n */ _Symbol$toPrimitive$1 = Symbol.toPrimitive;\nvar ComputedValue = /*#__PURE__*/ function() {\n // nodes we are looking at. Our value depends on these nodes\n // during tracking it's an array with new observed observers\n // to check for cycles\n // N.B: unminified as it is used by MST\n /**\r\n * Create a new computed value based on a function expression.\r\n *\r\n * The `name` property is for debug purposes only.\r\n *\r\n * The `equals` property specifies the comparer function to use to determine if a newly produced\r\n * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\r\n * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\r\n * Structural comparison can be convenient if you always produce a new aggregated object and\r\n * don't want to notify observers if it is structurally the same.\r\n * This is useful for working with vectors, mouse coordinates etc.\r\n */ function ComputedValue(options) {\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.observing_ = [];\n this.newObserving_ = null;\n this.isBeingObserved_ = false;\n this.isPendingUnobservation_ = false;\n this.observers_ = new Set();\n this.diffValue_ = 0;\n this.runId_ = 0;\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n this.unboundDepsCount_ = 0;\n this.value_ = new CaughtException(null);\n this.name_ = void 0;\n this.triggeredBy_ = void 0;\n this.isComputing_ = false;\n this.isRunningSetter_ = false;\n this.derivation = void 0;\n this.setter_ = void 0;\n this.isTracing_ = TraceMode.NONE;\n this.scope_ = void 0;\n this.equals_ = void 0;\n this.requiresReaction_ = void 0;\n this.keepAlive_ = void 0;\n this.onBOL = void 0;\n this.onBUOL = void 0;\n if (!options.get) die(31);\n this.derivation = options.get;\n this.name_ = options.name || \"ComputedValue\";\n if (options.set) this.setter_ = createAction(\"ComputedValue-setter\", options.set);\n this.equals_ = options.equals || (options.compareStructural || options.struct ? comparer.structural : comparer[\"default\"]);\n this.scope_ = options.context;\n this.requiresReaction_ = !!options.requiresReaction;\n this.keepAlive_ = !!options.keepAlive;\n }\n var _proto = ComputedValue.prototype;\n _proto.onBecomeStale_ = function onBecomeStale_() {\n propagateMaybeChanged(this);\n };\n _proto.onBO = function onBO() {\n if (this.onBOL) this.onBOL.forEach(function(listener) {\n return listener();\n });\n };\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) this.onBUOL.forEach(function(listener) {\n return listener();\n });\n } /**\r\n * Returns the current value of this computed value.\r\n * Will evaluate its computation first if needed.\r\n */ ;\n _proto.get = function get() {\n if (this.isComputing_) die(32, this.name_, this.derivation);\n if (globalState.inBatch === 0 && // !globalState.trackingDerivatpion &&\n this.observers_.size === 0 && !this.keepAlive_) {\n if (shouldCompute(this)) {\n this.warnAboutUntrackedRead_();\n startBatch(); // See perf test 'computed memoization'\n this.value_ = this.computeValue_(false);\n endBatch();\n }\n } else {\n reportObserved(this);\n if (shouldCompute(this)) {\n var prevTrackingContext = globalState.trackingContext;\n if (this.keepAlive_ && !prevTrackingContext) globalState.trackingContext = this;\n if (this.trackAndCompute()) propagateChangeConfirmed(this);\n globalState.trackingContext = prevTrackingContext;\n }\n }\n var result = this.value_;\n if (isCaughtException(result)) throw result.cause;\n return result;\n };\n _proto.set = function set(value) {\n if (this.setter_) {\n if (this.isRunningSetter_) die(33, this.name_);\n this.isRunningSetter_ = true;\n try {\n this.setter_.call(this.scope_, value);\n } finally{\n this.isRunningSetter_ = false;\n }\n } else die(34, this.name_);\n };\n _proto.trackAndCompute = function trackAndCompute() {\n // N.B: unminified as it is used by MST\n var oldValue = this.value_;\n var wasSuspended = /* see #1208 */ this.dependenciesState_ === IDerivationState_.NOT_TRACKING_;\n var newValue = this.computeValue_(true);\n var changed = wasSuspended || isCaughtException(oldValue) || isCaughtException(newValue) || !this.equals_(oldValue, newValue);\n if (changed) this.value_ = newValue;\n return changed;\n };\n _proto.computeValue_ = function computeValue_(track) {\n this.isComputing_ = true; // don't allow state changes during computation\n var prev = allowStateChangesStart(false);\n var res;\n if (track) res = trackDerivedFunction(this, this.derivation, this.scope_);\n else {\n if (globalState.disableErrorBoundaries === true) res = this.derivation.call(this.scope_);\n else try {\n res = this.derivation.call(this.scope_);\n } catch (e) {\n res = new CaughtException(e);\n }\n }\n allowStateChangesEnd(prev);\n this.isComputing_ = false;\n return res;\n };\n _proto.suspend_ = function suspend_() {\n if (!this.keepAlive_) {\n clearObserving(this);\n this.value_ = undefined; // don't hold on to computed value!\n }\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n var _this = this;\n var firstTime = true;\n var prevValue = undefined;\n return autorun(function() {\n // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n var newValue = _this.get();\n if (!firstTime || fireImmediately) {\n var prevU = untrackedStart();\n listener({\n observableKind: \"computed\",\n debugObjectName: _this.name_,\n type: UPDATE,\n object: _this,\n newValue: newValue,\n oldValue: prevValue\n });\n untrackedEnd(prevU);\n }\n firstTime = false;\n prevValue = newValue;\n });\n };\n _proto.warnAboutUntrackedRead_ = function warnAboutUntrackedRead_() {\n return;\n };\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.derivation.toString() + \"]\";\n };\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n _proto[_Symbol$toPrimitive$1] = function() {\n return this.valueOf();\n };\n return ComputedValue;\n}();\nvar isComputedValue = /*#__PURE__*/ createInstanceofPredicate(\"ComputedValue\", ComputedValue);\nvar IDerivationState_;\n(function(IDerivationState_) {\n // before being run or (outside batch and not being observed)\n // at this point derivation is not holding any data about dependency tree\n IDerivationState_[IDerivationState_[\"NOT_TRACKING_\"] = -1] = \"NOT_TRACKING_\"; // no shallow dependency changed since last computation\n // won't recalculate derivation\n // this is what makes mobx fast\n IDerivationState_[IDerivationState_[\"UP_TO_DATE_\"] = 0] = \"UP_TO_DATE_\"; // some deep dependency changed, but don't know if shallow dependency changed\n // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n // currently only ComputedValue will propagate POSSIBLY_STALE\n //\n // having this state is second big optimization:\n // don't have to recompute on every dependency change, but only when it's needed\n IDerivationState_[IDerivationState_[\"POSSIBLY_STALE_\"] = 1] = \"POSSIBLY_STALE_\"; // A shallow dependency has changed since last computation and the derivation\n // will need to recompute when it's needed next.\n IDerivationState_[IDerivationState_[\"STALE_\"] = 2] = \"STALE_\";\n})(IDerivationState_ || (IDerivationState_ = {}));\nvar TraceMode;\n(function(TraceMode) {\n TraceMode[TraceMode[\"NONE\"] = 0] = \"NONE\";\n TraceMode[TraceMode[\"LOG\"] = 1] = \"LOG\";\n TraceMode[TraceMode[\"BREAK\"] = 2] = \"BREAK\";\n})(TraceMode || (TraceMode = {}));\nvar CaughtException = function CaughtException(cause) {\n this.cause = void 0;\n this.cause = cause; // Empty\n};\nfunction isCaughtException(e) {\n return e instanceof CaughtException;\n}\n/**\r\n * Finds out whether any dependency of the derivation has actually changed.\r\n * If dependenciesState is 1 then it will recalculate dependencies,\r\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\r\n *\r\n * By iterating over the dependencies in the same order that they were reported and\r\n * stopping on the first change, all the recalculations are only called for ComputedValues\r\n * that will be tracked by derivation. That is because we assume that if the first x\r\n * dependencies of the derivation doesn't change then the derivation should run the same way\r\n * up until accessing x-th dependency.\r\n */ function shouldCompute(derivation) {\n switch(derivation.dependenciesState_){\n case IDerivationState_.UP_TO_DATE_:\n return false;\n case IDerivationState_.NOT_TRACKING_:\n case IDerivationState_.STALE_:\n return true;\n case IDerivationState_.POSSIBLY_STALE_:\n // state propagation can occur outside of action/reactive context #2195\n var prevAllowStateReads = allowStateReadsStart(true);\n var prevUntracked = untrackedStart(); // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n var obs = derivation.observing_, l = obs.length;\n for(var i = 0; i < l; i++){\n var obj = obs[i];\n if (isComputedValue(obj)) {\n if (globalState.disableErrorBoundaries) obj.get();\n else try {\n obj.get();\n } catch (e) {\n // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n // and `derivation` is an observer of `obj`\n // invariantShouldCompute(derivation)\n if (derivation.dependenciesState_ === IDerivationState_.STALE_) {\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n }\n changeDependenciesStateTo0(derivation);\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return false;\n }\n}\nfunction isComputingDerivation() {\n return globalState.trackingDerivation !== null; // filter out actions inside computations\n}\nfunction checkIfStateModificationsAreAllowed(atom) {\n var hasObservers;\n return;\n}\nfunction checkIfStateReadsAreAllowed(observable) {}\n/**\r\n * Executes the provided function `f` and tracks which observables are being accessed.\r\n * The tracking information is stored on the `derivation` object and the derivation is registered\r\n * as observer of any of the accessed observables.\r\n */ function trackDerivedFunction(derivation, f, context) {\n var prevAllowStateReads = allowStateReadsStart(true); // pre allocate array allocation + room for variation in deps\n // array will be trimmed by bindDependencies\n changeDependenciesStateTo0(derivation);\n derivation.newObserving_ = new Array(derivation.observing_.length + 100);\n derivation.unboundDepsCount_ = 0;\n derivation.runId_ = ++globalState.runId;\n var prevTracking = globalState.trackingDerivation;\n globalState.trackingDerivation = derivation;\n globalState.inBatch++;\n var result;\n if (globalState.disableErrorBoundaries === true) result = f.call(context);\n else try {\n result = f.call(context);\n } catch (e) {\n result = new CaughtException(e);\n }\n globalState.inBatch--;\n globalState.trackingDerivation = prevTracking;\n bindDependencies(derivation);\n warnAboutDerivationWithoutDependencies(derivation);\n allowStateReadsEnd(prevAllowStateReads);\n return result;\n}\nfunction warnAboutDerivationWithoutDependencies(derivation) {\n return;\n}\n/**\r\n * diffs newObserving with observing.\r\n * update observing to be newObserving with unique observables\r\n * notify observers that become observed/unobserved\r\n */ function bindDependencies(derivation) {\n // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n var prevObserving = derivation.observing_;\n var observing = derivation.observing_ = derivation.newObserving_;\n var lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_; // Go through all new observables and check diffValue: (this list can contain duplicates):\n // 0: first occurrence, change to 1 and keep it\n // 1: extra occurrence, drop it\n var i0 = 0, l = derivation.unboundDepsCount_;\n for(var i = 0; i < l; i++){\n var dep = observing[i];\n if (dep.diffValue_ === 0) {\n dep.diffValue_ = 1;\n if (i0 !== i) observing[i0] = dep;\n i0++;\n } // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n // not hitting the condition\n if (dep.dependenciesState_ > lowestNewObservingDerivationState) lowestNewObservingDerivationState = dep.dependenciesState_;\n }\n observing.length = i0;\n derivation.newObserving_ = null; // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n // 0: it's not in new observables, unobserve it\n // 1: it keeps being observed, don't want to notify it. change to 0\n l = prevObserving.length;\n while(l--){\n var _dep = prevObserving[l];\n if (_dep.diffValue_ === 0) removeObserver(_dep, derivation);\n _dep.diffValue_ = 0;\n } // Go through all new observables and check diffValue: (now it should be unique)\n // 0: it was set to 0 in last loop. don't need to do anything.\n // 1: it wasn't observed, let's observe it. set back to 0\n while(i0--){\n var _dep2 = observing[i0];\n if (_dep2.diffValue_ === 1) {\n _dep2.diffValue_ = 0;\n addObserver(_dep2, derivation);\n }\n } // Some new observed derivations may become stale during this derivation computation\n // so they have had no chance to propagate staleness (#916)\n if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n derivation.dependenciesState_ = lowestNewObservingDerivationState;\n derivation.onBecomeStale_();\n }\n}\nfunction clearObserving(derivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n var obs = derivation.observing_;\n derivation.observing_ = [];\n var i = obs.length;\n while(i--)removeObserver(obs[i], derivation);\n derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n}\nfunction untracked(action) {\n var prev = untrackedStart();\n try {\n return action();\n } finally{\n untrackedEnd(prev);\n }\n}\nfunction untrackedStart() {\n var prev = globalState.trackingDerivation;\n globalState.trackingDerivation = null;\n return prev;\n}\nfunction untrackedEnd(prev) {\n globalState.trackingDerivation = prev;\n}\nfunction allowStateReadsStart(allowStateReads) {\n var prev = globalState.allowStateReads;\n globalState.allowStateReads = allowStateReads;\n return prev;\n}\nfunction allowStateReadsEnd(prev) {\n globalState.allowStateReads = prev;\n}\n/**\r\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\r\n *\r\n */ function changeDependenciesStateTo0(derivation) {\n if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) return;\n derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_;\n var obs = derivation.observing_;\n var i = obs.length;\n while(i--)obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n}\n/**\r\n * These values will persist if global state is reset\r\n */ var persistentKeys = [\n \"mobxGuid\",\n \"spyListeners\",\n \"enforceActions\",\n \"computedRequiresReaction\",\n \"reactionRequiresObservable\",\n \"observableRequiresReaction\",\n \"allowStateReads\",\n \"disableErrorBoundaries\",\n \"runId\",\n \"UNCHANGED\",\n \"useProxies\"\n];\nvar MobXGlobals = function MobXGlobals() {\n this.version = 6;\n this.UNCHANGED = {};\n this.trackingDerivation = null;\n this.trackingContext = null;\n this.runId = 0;\n this.mobxGuid = 0;\n this.inBatch = 0;\n this.pendingUnobservations = [];\n this.pendingReactions = [];\n this.isRunningReactions = false;\n this.allowStateChanges = false;\n this.allowStateReads = true;\n this.enforceActions = true;\n this.spyListeners = [];\n this.globalReactionErrorHandlers = [];\n this.computedRequiresReaction = false;\n this.reactionRequiresObservable = false;\n this.observableRequiresReaction = false;\n this.disableErrorBoundaries = false;\n this.suppressReactionErrors = false;\n this.useProxies = true;\n this.verifyProxies = false;\n this.safeDescriptors = true;\n};\nvar canMergeGlobalState = true;\nvar isolateCalled = false;\nvar globalState = /*#__PURE__*/ function() {\n var global1 = /*#__PURE__*/ getGlobal();\n if (global1.__mobxInstanceCount > 0 && !global1.__mobxGlobals) canMergeGlobalState = false;\n if (global1.__mobxGlobals && global1.__mobxGlobals.version !== new MobXGlobals().version) canMergeGlobalState = false;\n if (!canMergeGlobalState) {\n // Because this is a IIFE we need to let isolateCalled a chance to change\n // so we run it after the event loop completed at least 1 iteration\n setTimeout(function() {\n if (!isolateCalled) die(35);\n }, 1);\n return new MobXGlobals();\n } else if (global1.__mobxGlobals) {\n global1.__mobxInstanceCount += 1;\n if (!global1.__mobxGlobals.UNCHANGED) global1.__mobxGlobals.UNCHANGED = {}; // make merge backward compatible\n return global1.__mobxGlobals;\n } else {\n global1.__mobxInstanceCount = 1;\n return global1.__mobxGlobals = /*#__PURE__*/ new MobXGlobals();\n }\n}();\nfunction isolateGlobalState() {\n if (globalState.pendingReactions.length || globalState.inBatch || globalState.isRunningReactions) die(36);\n isolateCalled = true;\n if (canMergeGlobalState) {\n var global1 = getGlobal();\n if (--global1.__mobxInstanceCount === 0) global1.__mobxGlobals = undefined;\n globalState = new MobXGlobals();\n }\n}\nfunction getGlobalState() {\n return globalState;\n}\n/**\r\n * For testing purposes only; this will break the internal state of existing observables,\r\n * but can be used to get back at a stable state after throwing errors\r\n */ function resetGlobalState() {\n var defaultGlobals = new MobXGlobals();\n for(var key in defaultGlobals)if (persistentKeys.indexOf(key) === -1) globalState[key] = defaultGlobals[key];\n globalState.allowStateChanges = !globalState.enforceActions;\n}\nfunction hasObservers(observable) {\n return observable.observers_ && observable.observers_.size > 0;\n}\nfunction getObservers(observable) {\n return observable.observers_;\n} // function invariantObservers(observable: IObservable) {\n// const list = observable.observers\n// const map = observable.observersIndexes\n// const l = list.length\n// for (let i = 0; i < l; i++) {\n// const id = list[i].__mapid\n// if (i) {\n// invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n// } else {\n// invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n// }\n// }\n// invariant(\n// list.length === 0 || Object.keys(map).length === list.length - 1,\n// \"INTERNAL ERROR there is no junk in map\"\n// )\n// }\nfunction addObserver(observable, node) {\n // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n // invariantObservers(observable);\n observable.observers_.add(node);\n if (observable.lowestObserverState_ > node.dependenciesState_) observable.lowestObserverState_ = node.dependenciesState_; // invariantObservers(observable);\n// invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\nfunction removeObserver(observable, node) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n // invariantObservers(observable);\n observable.observers_[\"delete\"](node);\n if (observable.observers_.size === 0) // deleting last observer\n queueForUnobservation(observable);\n // invariantObservers(observable);\n// invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\nfunction queueForUnobservation(observable) {\n if (observable.isPendingUnobservation_ === false) {\n // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n observable.isPendingUnobservation_ = true;\n globalState.pendingUnobservations.push(observable);\n }\n}\n/**\r\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\r\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\r\n * Avoids unnecessary recalculations.\r\n */ function startBatch() {\n globalState.inBatch++;\n}\nfunction endBatch() {\n if (--globalState.inBatch === 0) {\n runReactions(); // the batch is actually about to finish, all unobserving should happen here.\n var list = globalState.pendingUnobservations;\n for(var i = 0; i < list.length; i++){\n var observable = list[i];\n observable.isPendingUnobservation_ = false;\n if (observable.observers_.size === 0) {\n if (observable.isBeingObserved_) {\n // if this observable had reactive observers, trigger the hooks\n observable.isBeingObserved_ = false;\n observable.onBUO();\n }\n if (observable instanceof ComputedValue) // computed values are automatically teared down when the last observer leaves\n // this process happens recursively, this computed might be the last observabe of another, etc..\n observable.suspend_();\n }\n }\n globalState.pendingUnobservations = [];\n }\n}\nfunction reportObserved(observable) {\n checkIfStateReadsAreAllowed(observable);\n var derivation = globalState.trackingDerivation;\n if (derivation !== null) {\n /**\r\n * Simple optimization, give each derivation run an unique id (runId)\r\n * Check if last time this observable was accessed the same runId is used\r\n * if this is the case, the relation is already known\r\n */ if (derivation.runId_ !== observable.lastAccessedBy_) {\n observable.lastAccessedBy_ = derivation.runId_; // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n derivation.newObserving_[derivation.unboundDepsCount_++] = observable;\n if (!observable.isBeingObserved_ && globalState.trackingContext) {\n observable.isBeingObserved_ = true;\n observable.onBO();\n }\n }\n return true;\n } else if (observable.observers_.size === 0 && globalState.inBatch > 0) queueForUnobservation(observable);\n return false;\n} // function invariantLOS(observable: IObservable, msg: string) {\n// // it's expensive so better not run it in produciton. but temporarily helpful for testing\n// const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n// if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n// throw new Error(\n// \"lowestObserverState is wrong for \" +\n// msg +\n// \" because \" +\n// min +\n// \" < \" +\n// observable.lowestObserverState\n// )\n// }\n/**\r\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\r\n * It will propagate changes to observers from previous run\r\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\r\n * Hopefully self reruning autoruns aren't a feature people should depend on\r\n * Also most basic use cases should be ok\r\n */ // Called by Atom when its value changes\nfunction propagateChanged(observable) {\n // invariantLOS(observable, \"changed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) return;\n observable.lowestObserverState_ = IDerivationState_.STALE_; // Ideally we use for..of here, but the downcompiled version is really slow...\n observable.observers_.forEach(function(d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) d.onBecomeStale_();\n d.dependenciesState_ = IDerivationState_.STALE_;\n }); // invariantLOS(observable, \"changed end\");\n} // Called by ComputedValue when it recalculate and its value changed\nfunction propagateChangeConfirmed(observable) {\n // invariantLOS(observable, \"confirmed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) return;\n observable.lowestObserverState_ = IDerivationState_.STALE_;\n observable.observers_.forEach(function(d) {\n if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) d.dependenciesState_ = IDerivationState_.STALE_;\n else if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n ) observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n }); // invariantLOS(observable, \"confirmed end\");\n} // Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nfunction propagateMaybeChanged(observable) {\n // invariantLOS(observable, \"maybe start\");\n if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) return;\n observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_;\n observable.observers_.forEach(function(d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_;\n d.onBecomeStale_();\n }\n }); // invariantLOS(observable, \"maybe end\");\n}\nfunction logTraceInfo(derivation, observable) {\n console.log(\"[mobx.trace] '\" + derivation.name_ + \"' is invalidated due to a change in: '\" + observable.name_ + \"'\");\n if (derivation.isTracing_ === TraceMode.BREAK) {\n var lines = [];\n printDepTree(getDependencyTree(derivation), lines, 1); // prettier-ignore\n new Function(\"debugger;\\n/*\\nTracing '\" + derivation.name_ + \"'\\n\\nYou are entering this break point because derivation '\" + derivation.name_ + \"' is being traced and '\" + observable.name_ + \"' is now forcing it to update.\\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\\n\\n\" + (derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\") + \"\\n\\nThe dependencies for this derivation are:\\n\\n\" + lines.join(\"\\n\") + \"\\n*/\\n \")();\n }\n}\nfunction printDepTree(tree, lines, depth) {\n if (lines.length >= 1000) {\n lines.push(\"(and many more)\");\n return;\n }\n lines.push(\"\" + \"\t\".repeat(depth - 1) + tree.name);\n if (tree.dependencies) tree.dependencies.forEach(function(child) {\n return printDepTree(child, lines, depth + 1);\n });\n}\nvar Reaction = /*#__PURE__*/ function() {\n // nodes we are looking at. Our value depends on these nodes\n function Reaction(name_, onInvalidate_, errorHandler_, requiresObservable_) {\n if (name_ === void 0) name_ = \"Reaction\";\n if (requiresObservable_ === void 0) requiresObservable_ = false;\n this.name_ = void 0;\n this.onInvalidate_ = void 0;\n this.errorHandler_ = void 0;\n this.requiresObservable_ = void 0;\n this.observing_ = [];\n this.newObserving_ = [];\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.diffValue_ = 0;\n this.runId_ = 0;\n this.unboundDepsCount_ = 0;\n this.isDisposed_ = false;\n this.isScheduled_ = false;\n this.isTrackPending_ = false;\n this.isRunning_ = false;\n this.isTracing_ = TraceMode.NONE;\n this.name_ = name_;\n this.onInvalidate_ = onInvalidate_;\n this.errorHandler_ = errorHandler_;\n this.requiresObservable_ = requiresObservable_;\n }\n var _proto = Reaction.prototype;\n _proto.onBecomeStale_ = function onBecomeStale_() {\n this.schedule_();\n };\n _proto.schedule_ = function schedule_() {\n if (!this.isScheduled_) {\n this.isScheduled_ = true;\n globalState.pendingReactions.push(this);\n runReactions();\n }\n };\n _proto.isScheduled = function isScheduled() {\n return this.isScheduled_;\n } /**\r\n * internal, use schedule() if you intend to kick off a reaction\r\n */ ;\n _proto.runReaction_ = function runReaction_() {\n if (!this.isDisposed_) {\n startBatch();\n this.isScheduled_ = false;\n var prev = globalState.trackingContext;\n globalState.trackingContext = this;\n if (shouldCompute(this)) {\n this.isTrackPending_ = true;\n try {\n this.onInvalidate_();\n } catch (e) {\n this.reportExceptionInDerivation_(e);\n }\n }\n globalState.trackingContext = prev;\n endBatch();\n }\n };\n _proto.track = function track(fn) {\n if (this.isDisposed_) return; // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n startBatch();\n var notify = isSpyEnabled();\n var startTime;\n this.isRunning_ = true;\n var prevReaction = globalState.trackingContext; // reactions could create reactions...\n globalState.trackingContext = this;\n var result = trackDerivedFunction(this, fn, undefined);\n globalState.trackingContext = prevReaction;\n this.isRunning_ = false;\n this.isTrackPending_ = false;\n if (this.isDisposed_) // disposed during last run. Clean up everything that was bound after the dispose call.\n clearObserving(this);\n if (isCaughtException(result)) this.reportExceptionInDerivation_(result.cause);\n endBatch();\n };\n _proto.reportExceptionInDerivation_ = function reportExceptionInDerivation_(error) {\n var _this = this;\n if (this.errorHandler_) {\n this.errorHandler_(error, this);\n return;\n }\n if (globalState.disableErrorBoundaries) throw error;\n var message = \"[mobx] uncaught error in '\" + this + \"'\";\n if (!globalState.suppressReactionErrors) console.error(message, error);\n // prettier-ignore\n globalState.globalReactionErrorHandlers.forEach(function(f) {\n return f(error, _this);\n });\n };\n _proto.dispose = function dispose() {\n if (!this.isDisposed_) {\n this.isDisposed_ = true;\n if (!this.isRunning_) {\n // if disposed while running, clean up later. Maybe not optimal, but rare case\n startBatch();\n clearObserving(this);\n endBatch();\n }\n }\n };\n _proto.getDisposer_ = function getDisposer_() {\n var r = this.dispose.bind(this);\n r[$mobx] = this;\n return r;\n };\n _proto.toString = function toString() {\n return \"Reaction[\" + this.name_ + \"]\";\n };\n _proto.trace = function trace$1(enterBreakPoint) {\n if (enterBreakPoint === void 0) enterBreakPoint = false;\n trace(this, enterBreakPoint);\n };\n return Reaction;\n}();\nfunction onReactionError(handler) {\n globalState.globalReactionErrorHandlers.push(handler);\n return function() {\n var idx = globalState.globalReactionErrorHandlers.indexOf(handler);\n if (idx >= 0) globalState.globalReactionErrorHandlers.splice(idx, 1);\n };\n}\n/**\r\n * Magic number alert!\r\n * Defines within how many times a reaction is allowed to re-trigger itself\r\n * until it is assumed that this is gonna be a never ending loop...\r\n */ var MAX_REACTION_ITERATIONS = 100;\nvar reactionScheduler = function reactionScheduler(f) {\n return f();\n};\nfunction runReactions() {\n // Trampolining, if runReactions are already running, new reactions will be picked up\n if (globalState.inBatch > 0 || globalState.isRunningReactions) return;\n reactionScheduler(runReactionsHelper);\n}\nfunction runReactionsHelper() {\n globalState.isRunningReactions = true;\n var allReactions = globalState.pendingReactions;\n var iterations = 0; // While running reactions, new reactions might be triggered.\n // Hence we work with two variables and check whether\n // we converge to no remaining reactions after a while.\n while(allReactions.length > 0){\n if (++iterations === MAX_REACTION_ITERATIONS) {\n console.error(\"[mobx] cycle in reaction: \" + allReactions[0]);\n allReactions.splice(0); // clear reactions\n }\n var remainingReactions = allReactions.splice(0);\n for(var i = 0, l = remainingReactions.length; i < l; i++)remainingReactions[i].runReaction_();\n }\n globalState.isRunningReactions = false;\n}\nvar isReaction = /*#__PURE__*/ createInstanceofPredicate(\"Reaction\", Reaction);\nfunction setReactionScheduler(fn) {\n var baseScheduler = reactionScheduler;\n reactionScheduler = function reactionScheduler(f) {\n return fn(function() {\n return baseScheduler(f);\n });\n };\n}\nfunction isSpyEnabled() {\n return false;\n}\nfunction spyReport(event) {\n var listeners, i, l;\n return; // dead code elimination can do the rest\n}\nfunction spyReportStart(event) {\n var change;\n return;\n}\nvar END_EVENT = {\n type: \"report-end\",\n spyReportEnd: true\n};\nfunction spyReportEnd(change) {\n return;\n}\nfunction spy(listener) {\n console.warn(\"[mobx.spy] Is a no-op in production builds\");\n return function() {};\n}\nvar ACTION = \"action\";\nvar ACTION_BOUND = \"action.bound\";\nvar AUTOACTION = \"autoAction\";\nvar AUTOACTION_BOUND = \"autoAction.bound\";\nvar DEFAULT_ACTION_NAME = \"\";\nvar actionAnnotation = /*#__PURE__*/ createActionAnnotation(ACTION);\nvar actionBoundAnnotation = /*#__PURE__*/ createActionAnnotation(ACTION_BOUND, {\n bound: true\n});\nvar autoActionAnnotation = /*#__PURE__*/ createActionAnnotation(AUTOACTION, {\n autoAction: true\n});\nvar autoActionBoundAnnotation = /*#__PURE__*/ createActionAnnotation(AUTOACTION_BOUND, {\n autoAction: true,\n bound: true\n});\nfunction createActionFactory(autoAction) {\n var res = function action(arg1, arg2) {\n // action(fn() {})\n if (isFunction(arg1)) return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction); // action(\"name\", fn() {})\n if (isFunction(arg2)) return createAction(arg1, arg2, autoAction); // @action\n if (isStringish(arg2)) return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation);\n // action(\"name\") & @action(\"name\")\n if (isStringish(arg1)) return createDecoratorAnnotation(createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n name: arg1,\n autoAction: autoAction\n }));\n };\n return res;\n}\nvar action = /*#__PURE__*/ createActionFactory(false);\nObject.assign(action, actionAnnotation);\nvar autoAction = /*#__PURE__*/ createActionFactory(true);\nObject.assign(autoAction, autoActionAnnotation);\naction.bound = /*#__PURE__*/ createDecoratorAnnotation(actionBoundAnnotation);\nautoAction.bound = /*#__PURE__*/ createDecoratorAnnotation(autoActionBoundAnnotation);\nfunction runInAction(fn) {\n return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined);\n}\nfunction isAction(thing) {\n return isFunction(thing) && thing.isMobxAction === true;\n}\n/**\r\n * Creates a named reactive view and keeps it alive, so that the view is always\r\n * updated if one of the dependencies changes, even when the view is not further used by something else.\r\n * @param view The reactive view\r\n * @returns disposer function, which can be used to stop the view from being updated in the future.\r\n */ function autorun(view, opts) {\n var _opts$name, _opts;\n if (opts === void 0) opts = EMPTY_OBJECT;\n var name = (_opts$name = (_opts = opts) == null ? void 0 : _opts.name) != null ? _opts$name : \"Autorun\";\n var runSync = !opts.scheduler && !opts.delay;\n var reaction;\n if (runSync) // normal autorun\n reaction = new Reaction(name, function() {\n this.track(reactionRunner);\n }, opts.onError, opts.requiresObservable);\n else {\n var scheduler = createSchedulerFromOptions(opts); // debounced autorun\n var isScheduled = false;\n reaction = new Reaction(name, function() {\n if (!isScheduled) {\n isScheduled = true;\n scheduler(function() {\n isScheduled = false;\n if (!reaction.isDisposed_) reaction.track(reactionRunner);\n });\n }\n }, opts.onError, opts.requiresObservable);\n }\n function reactionRunner() {\n view(reaction);\n }\n reaction.schedule_();\n return reaction.getDisposer_();\n}\nvar run = function run(f) {\n return f();\n};\nfunction createSchedulerFromOptions(opts) {\n return opts.scheduler ? opts.scheduler : opts.delay ? function(f) {\n return setTimeout(f, opts.delay);\n } : run;\n}\nfunction reaction(expression, effect, opts) {\n var _opts$name2;\n if (opts === void 0) opts = EMPTY_OBJECT;\n var name = (_opts$name2 = opts.name) != null ? _opts$name2 : \"Reaction\";\n var effectAction = action(name, opts.onError ? wrapErrorHandler(opts.onError, effect) : effect);\n var runSync = !opts.scheduler && !opts.delay;\n var scheduler = createSchedulerFromOptions(opts);\n var firstTime = true;\n var isScheduled = false;\n var value;\n var oldValue;\n var equals = opts.compareStructural ? comparer.structural : opts.equals || comparer[\"default\"];\n var r = new Reaction(name, function() {\n if (firstTime || runSync) reactionRunner();\n else if (!isScheduled) {\n isScheduled = true;\n scheduler(reactionRunner);\n }\n }, opts.onError, opts.requiresObservable);\n function reactionRunner() {\n isScheduled = false;\n if (r.isDisposed_) return;\n var changed = false;\n r.track(function() {\n var nextValue = allowStateChanges(false, function() {\n return expression(r);\n });\n changed = firstTime || !equals(value, nextValue);\n oldValue = value;\n value = nextValue;\n });\n if (firstTime && opts.fireImmediately) effectAction(value, oldValue, r);\n else if (!firstTime && changed) effectAction(value, oldValue, r);\n firstTime = false;\n }\n r.schedule_();\n return r.getDisposer_();\n}\nfunction wrapErrorHandler(errorHandler, baseFn) {\n return function() {\n try {\n return baseFn.apply(this, arguments);\n } catch (e) {\n errorHandler.call(this, e);\n }\n };\n}\nvar ON_BECOME_OBSERVED = \"onBO\";\nvar ON_BECOME_UNOBSERVED = \"onBUO\";\nfunction onBecomeObserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3);\n}\nfunction onBecomeUnobserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3);\n}\nfunction interceptHook(hook, thing, arg2, arg3) {\n var atom = typeof arg3 === \"function\" ? getAtom(thing, arg2) : getAtom(thing);\n var cb = isFunction(arg3) ? arg3 : arg2;\n var listenersKey = hook + \"L\";\n if (atom[listenersKey]) atom[listenersKey].add(cb);\n else atom[listenersKey] = new Set([\n cb\n ]);\n return function() {\n var hookListeners = atom[listenersKey];\n if (hookListeners) {\n hookListeners[\"delete\"](cb);\n if (hookListeners.size === 0) delete atom[listenersKey];\n }\n };\n}\nvar NEVER = \"never\";\nvar ALWAYS = \"always\";\nvar OBSERVED = \"observed\"; // const IF_AVAILABLE = \"ifavailable\"\nfunction configure(options) {\n if (options.isolateGlobalState === true) isolateGlobalState();\n var useProxies = options.useProxies, enforceActions = options.enforceActions;\n if (useProxies !== undefined) globalState.useProxies = useProxies === ALWAYS ? true : useProxies === NEVER ? false : typeof Proxy !== \"undefined\";\n if (useProxies === \"ifavailable\") globalState.verifyProxies = true;\n if (enforceActions !== undefined) {\n var ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED;\n globalState.enforceActions = ea;\n globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true;\n }\n [\n \"computedRequiresReaction\",\n \"reactionRequiresObservable\",\n \"observableRequiresReaction\",\n \"disableErrorBoundaries\",\n \"safeDescriptors\"\n ].forEach(function(key) {\n if (key in options) globalState[key] = !!options[key];\n });\n globalState.allowStateReads = !globalState.observableRequiresReaction;\n if (options.reactionScheduler) setReactionScheduler(options.reactionScheduler);\n}\nfunction extendObservable(target, properties, annotations, options) {\n var descriptors = getOwnPropertyDescriptors(properties);\n var adm = asObservableObject(target, options)[$mobx];\n startBatch();\n try {\n ownKeys(descriptors).forEach(function(key) {\n adm.extend_(key, descriptors[key], !annotations ? true : key in annotations ? annotations[key] : true);\n });\n } finally{\n endBatch();\n }\n return target;\n}\nfunction getDependencyTree(thing, property) {\n return nodeToDependencyTree(getAtom(thing, property));\n}\nfunction nodeToDependencyTree(node) {\n var result = {\n name: node.name_\n };\n if (node.observing_ && node.observing_.length > 0) result.dependencies = unique(node.observing_).map(nodeToDependencyTree);\n return result;\n}\nfunction getObserverTree(thing, property) {\n return nodeToObserverTree(getAtom(thing, property));\n}\nfunction nodeToObserverTree(node) {\n var result = {\n name: node.name_\n };\n if (hasObservers(node)) result.observers = Array.from(getObservers(node)).map(nodeToObserverTree);\n return result;\n}\nfunction unique(list) {\n return Array.from(new Set(list));\n}\nvar generatorId = 0;\nfunction FlowCancellationError() {\n this.message = \"FLOW_CANCELLED\";\n}\nFlowCancellationError.prototype = /*#__PURE__*/ Object.create(Error.prototype);\nfunction isFlowCancellationError(error) {\n return error instanceof FlowCancellationError;\n}\nvar flowAnnotation = /*#__PURE__*/ createFlowAnnotation(\"flow\");\nvar flowBoundAnnotation = /*#__PURE__*/ createFlowAnnotation(\"flow.bound\", {\n bound: true\n});\nvar flow = /*#__PURE__*/ Object.assign(function flow(arg1, arg2) {\n // @flow\n if (isStringish(arg2)) return storeAnnotation(arg1, arg2, flowAnnotation);\n // flow(fn)\n var generator = arg1;\n var name = generator.name || \"\"; // Implementation based on https://github.com/tj/co/blob/master/index.js\n var res = function res() {\n var ctx = this;\n var args = arguments;\n var runId = ++generatorId;\n var gen = action(name + \" - runid: \" + runId + \" - init\", generator).apply(ctx, args);\n var rejector;\n var pendingPromise = undefined;\n var promise = new Promise(function(resolve, reject) {\n var stepId = 0;\n rejector = reject;\n function onFulfilled(res) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen.next).call(gen, res);\n } catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function onRejected(err) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen[\"throw\"]).call(gen, err);\n } catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function next(ret) {\n if (isFunction(ret == null ? void 0 : ret.then)) {\n // an async iterator\n ret.then(next, reject);\n return;\n }\n if (ret.done) return resolve(ret.value);\n pendingPromise = Promise.resolve(ret.value);\n return pendingPromise.then(onFulfilled, onRejected);\n }\n onFulfilled(undefined); // kick off the process\n });\n promise.cancel = action(name + \" - runid: \" + runId + \" - cancel\", function() {\n try {\n if (pendingPromise) cancelPromise(pendingPromise); // Finally block can return (or yield) stuff..\n var _res = gen[\"return\"](undefined); // eat anything that promise would do, it's cancelled!\n var yieldedPromise = Promise.resolve(_res.value);\n yieldedPromise.then(noop, noop);\n cancelPromise(yieldedPromise); // maybe it can be cancelled :)\n // reject our original promise\n rejector(new FlowCancellationError());\n } catch (e) {\n rejector(e); // there could be a throwing finally block\n }\n });\n return promise;\n };\n res.isMobXFlow = true;\n return res;\n}, flowAnnotation);\nflow.bound = /*#__PURE__*/ createDecoratorAnnotation(flowBoundAnnotation);\nfunction cancelPromise(promise) {\n if (isFunction(promise.cancel)) promise.cancel();\n}\nfunction flowResult(result) {\n return result; // just tricking TypeScript :)\n}\nfunction isFlow(fn) {\n return (fn == null ? void 0 : fn.isMobXFlow) === true;\n}\nfunction interceptReads(thing, propOrHandler, handler) {\n var target;\n if (isObservableMap(thing) || isObservableArray(thing) || isObservableValue(thing)) target = getAdministration(thing);\n else if (isObservableObject(thing)) target = getAdministration(thing, propOrHandler);\n target.dehancer = typeof propOrHandler === \"function\" ? propOrHandler : handler;\n return function() {\n target.dehancer = undefined;\n };\n}\nfunction intercept(thing, propOrHandler, handler) {\n if (isFunction(handler)) return interceptProperty(thing, propOrHandler, handler);\n else return interceptInterceptable(thing, propOrHandler);\n}\nfunction interceptInterceptable(thing, handler) {\n return getAdministration(thing).intercept_(handler);\n}\nfunction interceptProperty(thing, property, handler) {\n return getAdministration(thing, property).intercept_(handler);\n}\nfunction _isComputed(value, property) {\n if (property === undefined) return isComputedValue(value);\n if (isObservableObject(value) === false) return false;\n if (!value[$mobx].values_.has(property)) return false;\n var atom = getAtom(value, property);\n return isComputedValue(atom);\n}\nfunction isComputed(value) {\n return _isComputed(value);\n}\nfunction isComputedProp(value, propName) {\n return _isComputed(value, propName);\n}\nfunction _isObservable(value, property) {\n if (!value) return false;\n if (property !== undefined) {\n if (isObservableObject(value)) return value[$mobx].values_.has(property);\n return false;\n } // For first check, see #701\n return isObservableObject(value) || !!value[$mobx] || isAtom(value) || isReaction(value) || isComputedValue(value);\n}\nfunction isObservable(value) {\n return _isObservable(value);\n}\nfunction isObservableProp(value, propName) {\n return _isObservable(value, propName);\n}\nfunction keys(obj) {\n if (isObservableObject(obj)) return obj[$mobx].keys_();\n if (isObservableMap(obj) || isObservableSet(obj)) return Array.from(obj.keys());\n if (isObservableArray(obj)) return obj.map(function(_, index) {\n return index;\n });\n die(5);\n}\nfunction values(obj) {\n if (isObservableObject(obj)) return keys(obj).map(function(key) {\n return obj[key];\n });\n if (isObservableMap(obj)) return keys(obj).map(function(key) {\n return obj.get(key);\n });\n if (isObservableSet(obj)) return Array.from(obj.values());\n if (isObservableArray(obj)) return obj.slice();\n die(6);\n}\nfunction entries(obj) {\n if (isObservableObject(obj)) return keys(obj).map(function(key) {\n return [\n key,\n obj[key]\n ];\n });\n if (isObservableMap(obj)) return keys(obj).map(function(key) {\n return [\n key,\n obj.get(key)\n ];\n });\n if (isObservableSet(obj)) return Array.from(obj.entries());\n if (isObservableArray(obj)) return obj.map(function(key, index) {\n return [\n index,\n key\n ];\n });\n die(7);\n}\nfunction set(obj, key, value) {\n if (arguments.length === 2 && !isObservableSet(obj)) {\n startBatch();\n var _values = key;\n try {\n for(var _key in _values)set(obj, _key, _values[_key]);\n } finally{\n endBatch();\n }\n return;\n }\n if (isObservableObject(obj)) obj[$mobx].set_(key, value);\n else if (isObservableMap(obj)) obj.set(key, value);\n else if (isObservableSet(obj)) obj.add(key);\n else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") key = parseInt(key, 10);\n if (key < 0) die(\"Invalid index: '\" + key + \"'\");\n startBatch();\n if (key >= obj.length) obj.length = key + 1;\n obj[key] = value;\n endBatch();\n } else die(8);\n}\nfunction remove(obj, key) {\n if (isObservableObject(obj)) obj[$mobx].delete_(key);\n else if (isObservableMap(obj)) obj[\"delete\"](key);\n else if (isObservableSet(obj)) obj[\"delete\"](key);\n else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") key = parseInt(key, 10);\n obj.splice(key, 1);\n } else die(9);\n}\nfunction has(obj, key) {\n if (isObservableObject(obj)) return obj[$mobx].has_(key);\n else if (isObservableMap(obj)) return obj.has(key);\n else if (isObservableSet(obj)) return obj.has(key);\n else if (isObservableArray(obj)) return key >= 0 && key < obj.length;\n die(10);\n}\nfunction get(obj, key) {\n if (!has(obj, key)) return undefined;\n if (isObservableObject(obj)) return obj[$mobx].get_(key);\n else if (isObservableMap(obj)) return obj.get(key);\n else if (isObservableArray(obj)) return obj[key];\n die(11);\n}\nfunction apiDefineProperty(obj, key, descriptor) {\n if (isObservableObject(obj)) return obj[$mobx].defineProperty_(key, descriptor);\n die(39);\n}\nfunction apiOwnKeys(obj) {\n if (isObservableObject(obj)) return obj[$mobx].ownKeys_();\n die(38);\n}\nfunction observe(thing, propOrCb, cbOrFire, fireImmediately) {\n if (isFunction(cbOrFire)) return observeObservableProperty(thing, propOrCb, cbOrFire, fireImmediately);\n else return observeObservable(thing, propOrCb, cbOrFire);\n}\nfunction observeObservable(thing, listener, fireImmediately) {\n return getAdministration(thing).observe_(listener, fireImmediately);\n}\nfunction observeObservableProperty(thing, property, listener, fireImmediately) {\n return getAdministration(thing, property).observe_(listener, fireImmediately);\n}\nfunction cache(map, key, value) {\n map.set(key, value);\n return value;\n}\nfunction toJSHelper(source, __alreadySeen) {\n if (source == null || typeof source !== \"object\" || source instanceof Date || !isObservable(source)) return source;\n if (isObservableValue(source) || isComputedValue(source)) return toJSHelper(source.get(), __alreadySeen);\n if (__alreadySeen.has(source)) return __alreadySeen.get(source);\n if (isObservableArray(source)) {\n var res = cache(__alreadySeen, source, new Array(source.length));\n source.forEach(function(value, idx) {\n res[idx] = toJSHelper(value, __alreadySeen);\n });\n return res;\n }\n if (isObservableSet(source)) {\n var _res = cache(__alreadySeen, source, new Set());\n source.forEach(function(value) {\n _res.add(toJSHelper(value, __alreadySeen));\n });\n return _res;\n }\n if (isObservableMap(source)) {\n var _res2 = cache(__alreadySeen, source, new Map());\n source.forEach(function(value, key) {\n _res2.set(key, toJSHelper(value, __alreadySeen));\n });\n return _res2;\n } else {\n // must be observable object\n var _res3 = cache(__alreadySeen, source, {});\n apiOwnKeys(source).forEach(function(key) {\n if (objectPrototype.propertyIsEnumerable.call(source, key)) _res3[key] = toJSHelper(source[key], __alreadySeen);\n });\n return _res3;\n }\n}\n/**\r\n * Basically, a deep clone, so that no reactive property will exist anymore.\r\n */ function toJS(source, options) {\n return toJSHelper(source, new Map());\n}\nfunction trace() {\n die(\"trace() is not available in production builds\");\n var enterBreakPoint = false;\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n if (typeof args[args.length - 1] === \"boolean\") enterBreakPoint = args.pop();\n var derivation = getAtomFromArgs(args);\n if (!derivation) return die(\"'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly\");\n if (derivation.isTracing_ === TraceMode.NONE) console.log(\"[mobx.trace] '\" + derivation.name_ + \"' tracing enabled\");\n derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG;\n}\nfunction getAtomFromArgs(args) {\n switch(args.length){\n case 0:\n return globalState.trackingDerivation;\n case 1:\n return getAtom(args[0]);\n case 2:\n return getAtom(args[0], args[1]);\n }\n}\n/**\r\n * During a transaction no views are updated until the end of the transaction.\r\n * The transaction will be run synchronously nonetheless.\r\n *\r\n * @param action a function that updates some reactive state\r\n * @returns any value that was returned by the 'action' parameter.\r\n */ function transaction(action, thisArg) {\n if (thisArg === void 0) thisArg = undefined;\n startBatch();\n try {\n return action.apply(thisArg);\n } finally{\n endBatch();\n }\n}\nfunction when(predicate, arg1, arg2) {\n if (arguments.length === 1 || arg1 && typeof arg1 === \"object\") return whenPromise(predicate, arg1);\n return _when(predicate, arg1, arg2 || {});\n}\nfunction _when(predicate, effect, opts) {\n var timeoutHandle;\n if (typeof opts.timeout === \"number\") {\n var error = new Error(\"WHEN_TIMEOUT\");\n timeoutHandle = setTimeout(function() {\n if (!disposer[$mobx].isDisposed_) {\n disposer();\n if (opts.onError) opts.onError(error);\n else throw error;\n }\n }, opts.timeout);\n }\n opts.name = \"When\";\n var effectAction = createAction(\"When-effect\", effect); // eslint-disable-next-line\n var disposer = autorun(function(r) {\n // predicate should not change state\n var cond = allowStateChanges(false, predicate);\n if (cond) {\n r.dispose();\n if (timeoutHandle) clearTimeout(timeoutHandle);\n effectAction();\n }\n }, opts);\n return disposer;\n}\nfunction whenPromise(predicate, opts) {\n var cancel;\n var res = new Promise(function(resolve, reject) {\n var disposer = _when(predicate, resolve, _extends({}, opts, {\n onError: reject\n }));\n cancel = function cancel() {\n disposer();\n reject(new Error(\"WHEN_CANCELLED\"));\n };\n });\n res.cancel = cancel;\n return res;\n}\nfunction getAdm(target) {\n return target[$mobx];\n} // Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\nvar objectProxyTraps = {\n has: function has(target, name) {\n return getAdm(target).has_(name);\n },\n get: function get(target, name) {\n return getAdm(target).get_(name);\n },\n set: function set(target, name, value) {\n var _getAdm$set_;\n if (!isStringish(name)) return false;\n return (_getAdm$set_ = getAdm(target).set_(name, value, true)) != null ? _getAdm$set_ : true;\n },\n deleteProperty: function deleteProperty(target, name) {\n var _getAdm$delete_;\n if (!isStringish(name)) return false; // null (intercepted) -> true (success)\n return (_getAdm$delete_ = getAdm(target).delete_(name, true)) != null ? _getAdm$delete_ : true;\n },\n defineProperty: function defineProperty(target, name, descriptor) {\n var _getAdm$definePropert;\n return (_getAdm$definePropert = getAdm(target).defineProperty_(name, descriptor)) != null ? _getAdm$definePropert : true;\n },\n ownKeys: function ownKeys(target) {\n return getAdm(target).ownKeys_();\n },\n preventExtensions: function preventExtensions(target) {\n die(13);\n }\n};\nfunction asDynamicObservableObject(target, options) {\n var _target$$mobx, _target$$mobx$proxy_;\n assertProxies();\n target = asObservableObject(target, options);\n return (_target$$mobx$proxy_ = (_target$$mobx = target[$mobx]).proxy_) != null ? _target$$mobx$proxy_ : _target$$mobx.proxy_ = new Proxy(target, objectProxyTraps);\n}\nfunction hasInterceptors(interceptable) {\n return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0;\n}\nfunction registerInterceptor(interceptable, handler) {\n var interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = []);\n interceptors.push(handler);\n return once(function() {\n var idx = interceptors.indexOf(handler);\n if (idx !== -1) interceptors.splice(idx, 1);\n });\n}\nfunction interceptChange(interceptable, change) {\n var prevU = untrackedStart();\n try {\n // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n var interceptors = [].concat(interceptable.interceptors_ || []);\n for(var i = 0, l = interceptors.length; i < l; i++){\n change = interceptors[i](change);\n if (change && !change.type) die(14);\n if (!change) break;\n }\n return change;\n } finally{\n untrackedEnd(prevU);\n }\n}\nfunction hasListeners(listenable) {\n return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0;\n}\nfunction registerListener(listenable, handler) {\n var listeners = listenable.changeListeners_ || (listenable.changeListeners_ = []);\n listeners.push(handler);\n return once(function() {\n var idx = listeners.indexOf(handler);\n if (idx !== -1) listeners.splice(idx, 1);\n });\n}\nfunction notifyListeners(listenable, change) {\n var prevU = untrackedStart();\n var listeners = listenable.changeListeners_;\n if (!listeners) return;\n listeners = listeners.slice();\n for(var i = 0, l = listeners.length; i < l; i++)listeners[i](change);\n untrackedEnd(prevU);\n}\nfunction makeObservable(target, annotations, options) {\n var adm = asObservableObject(target, options)[$mobx];\n startBatch();\n try {\n var _annotations;\n (_annotations = annotations) != null ? _annotations : annotations = collectStoredAnnotations(target); // Annotate\n ownKeys(annotations).forEach(function(key) {\n return adm.make_(key, annotations[key]);\n });\n } finally{\n endBatch();\n }\n return target;\n} // proto[keysSymbol] = new Set()\nvar keysSymbol = /*#__PURE__*/ Symbol(\"mobx-keys\");\nfunction makeAutoObservable(target, overrides, options) {\n // Assumes that annotation.make_/.extend_ works the same for plain objects\n if (isPlainObject(target)) return extendObservable(target, target, overrides, options);\n var adm = asObservableObject(target, options)[$mobx]; // Optimization: cache keys on proto\n // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n if (!target[keysSymbol]) {\n var proto = Object.getPrototypeOf(target);\n var keys = new Set([].concat(ownKeys(target), ownKeys(proto)));\n keys[\"delete\"](\"constructor\");\n keys[\"delete\"]($mobx);\n addHiddenProp(proto, keysSymbol, keys);\n }\n startBatch();\n try {\n target[keysSymbol].forEach(function(key) {\n return adm.make_(key, !overrides ? true : key in overrides ? overrides[key] : true);\n });\n } finally{\n endBatch();\n }\n return target;\n}\nvar SPLICE = \"splice\";\nvar UPDATE = \"update\";\nvar MAX_SPLICE_SIZE = 10000; // See e.g. https://github.com/mobxjs/mobx/issues/859\nvar arrayTraps = {\n get: function get(target, name) {\n var adm = target[$mobx];\n if (name === $mobx) return adm;\n if (name === \"length\") return adm.getArrayLength_();\n if (typeof name === \"string\" && !isNaN(name)) return adm.get_(parseInt(name));\n if (hasProp(arrayExtensions, name)) return arrayExtensions[name];\n return target[name];\n },\n set: function set(target, name, value) {\n var adm = target[$mobx];\n if (name === \"length\") adm.setArrayLength_(value);\n if (typeof name === \"symbol\" || isNaN(name)) target[name] = value;\n else // numeric string\n adm.set_(parseInt(name), value);\n return true;\n },\n preventExtensions: function preventExtensions() {\n die(15);\n }\n};\nvar ObservableArrayAdministration = /*#__PURE__*/ function() {\n // this is the prop that gets proxied, so can't replace it!\n function ObservableArrayAdministration(name, enhancer, owned_, legacyMode_) {\n if (name === void 0) name = \"ObservableArray\";\n this.owned_ = void 0;\n this.legacyMode_ = void 0;\n this.atom_ = void 0;\n this.values_ = [];\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.enhancer_ = void 0;\n this.dehancer = void 0;\n this.proxy_ = void 0;\n this.lastKnownLength_ = 0;\n this.owned_ = owned_;\n this.legacyMode_ = legacyMode_;\n this.atom_ = new Atom(name);\n this.enhancer_ = function(newV, oldV) {\n return enhancer(newV, oldV, \"ObservableArray[..]\");\n };\n }\n var _proto = ObservableArrayAdministration.prototype;\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) return this.dehancer(value);\n return value;\n };\n _proto.dehanceValues_ = function dehanceValues_(values) {\n if (this.dehancer !== undefined && values.length > 0) return values.map(this.dehancer);\n return values;\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately === void 0) fireImmediately = false;\n if (fireImmediately) listener({\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: \"splice\",\n index: 0,\n added: this.values_.slice(),\n addedCount: this.values_.length,\n removed: [],\n removedCount: 0\n });\n return registerListener(this, listener);\n };\n _proto.getArrayLength_ = function getArrayLength_() {\n this.atom_.reportObserved();\n return this.values_.length;\n };\n _proto.setArrayLength_ = function setArrayLength_(newLength) {\n if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) die(\"Out of range: \" + newLength);\n var currentLength = this.values_.length;\n if (newLength === currentLength) return;\n else if (newLength > currentLength) {\n var newItems = new Array(newLength - currentLength);\n for(var i = 0; i < newLength - currentLength; i++)newItems[i] = undefined;\n // No Array.fill everywhere...\n this.spliceWithArray_(currentLength, 0, newItems);\n } else this.spliceWithArray_(newLength, currentLength - newLength);\n };\n _proto.updateArrayLength_ = function updateArrayLength_(oldLength, delta) {\n if (oldLength !== this.lastKnownLength_) die(16);\n this.lastKnownLength_ += delta;\n if (this.legacyMode_ && delta > 0) reserveArrayBuffer(oldLength + delta + 1);\n };\n _proto.spliceWithArray_ = function spliceWithArray_(index, deleteCount, newItems) {\n var _this = this;\n checkIfStateModificationsAreAllowed(this.atom_);\n var length = this.values_.length;\n if (index === undefined) index = 0;\n else if (index > length) index = length;\n else if (index < 0) index = Math.max(0, length + index);\n if (arguments.length === 1) deleteCount = length - index;\n else if (deleteCount === undefined || deleteCount === null) deleteCount = 0;\n else deleteCount = Math.max(0, Math.min(deleteCount, length - index));\n if (newItems === undefined) newItems = EMPTY_ARRAY;\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_,\n type: SPLICE,\n index: index,\n removedCount: deleteCount,\n added: newItems\n });\n if (!change) return EMPTY_ARRAY;\n deleteCount = change.removedCount;\n newItems = change.added;\n }\n newItems = newItems.length === 0 ? newItems : newItems.map(function(v) {\n return _this.enhancer_(v, undefined);\n });\n if (this.legacyMode_ || false) {\n var lengthDelta = newItems.length - deleteCount;\n this.updateArrayLength_(length, lengthDelta); // checks if internal array wasn't modified\n }\n var res = this.spliceItemsIntoValues_(index, deleteCount, newItems);\n if (deleteCount !== 0 || newItems.length !== 0) this.notifyArraySplice_(index, newItems, res);\n return this.dehanceValues_(res);\n };\n _proto.spliceItemsIntoValues_ = function spliceItemsIntoValues_(index, deleteCount, newItems) {\n if (newItems.length < MAX_SPLICE_SIZE) {\n var _this$values_;\n return (_this$values_ = this.values_).splice.apply(_this$values_, [\n index,\n deleteCount\n ].concat(newItems));\n } else {\n var res = this.values_.slice(index, index + deleteCount);\n var oldItems = this.values_.slice(index + deleteCount);\n this.values_.length = index + newItems.length - deleteCount;\n for(var i = 0; i < newItems.length; i++)this.values_[index + i] = newItems[i];\n for(var _i = 0; _i < oldItems.length; _i++)this.values_[index + newItems.length + _i] = oldItems[_i];\n return res;\n }\n };\n _proto.notifyArrayChildUpdate_ = function notifyArrayChildUpdate_(index, newValue, oldValue) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n type: UPDATE,\n debugObjectName: this.atom_.name_,\n index: index,\n newValue: newValue,\n oldValue: oldValue\n } : null; // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n this.atom_.reportChanged();\n if (notify) notifyListeners(this, change);\n };\n _proto.notifyArraySplice_ = function notifyArraySplice_(index, added, removed) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: SPLICE,\n index: index,\n removed: removed,\n added: added,\n removedCount: removed.length,\n addedCount: added.length\n } : null;\n this.atom_.reportChanged(); // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n if (notify) notifyListeners(this, change);\n };\n _proto.get_ = function get_(index) {\n if (index < this.values_.length) {\n this.atom_.reportObserved();\n return this.dehanceValue_(this.values_[index]);\n }\n console.warn(\"[mobx.array] Attempt to read an array index (\" + index + \") that is out of bounds (\" + this.values_.length + \"). Please check length first. Out of bound indices will not be tracked by MobX\");\n };\n _proto.set_ = function set_(index, newValue) {\n var values = this.values_;\n if (index < values.length) {\n // update at index in range\n checkIfStateModificationsAreAllowed(this.atom_);\n var oldValue = values[index];\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_,\n index: index,\n newValue: newValue\n });\n if (!change) return;\n newValue = change.newValue;\n }\n newValue = this.enhancer_(newValue, oldValue);\n var changed = newValue !== oldValue;\n if (changed) {\n values[index] = newValue;\n this.notifyArrayChildUpdate_(index, newValue, oldValue);\n }\n } else if (index === values.length) // add a new item\n this.spliceWithArray_(index, 0, [\n newValue\n ]);\n else // out of bounds\n die(17, index, values.length);\n };\n return ObservableArrayAdministration;\n}();\nfunction createObservableArray(initialValues, enhancer, name, owned) {\n if (name === void 0) name = \"ObservableArray\";\n if (owned === void 0) owned = false;\n assertProxies();\n var adm = new ObservableArrayAdministration(name, enhancer, owned, false);\n addHiddenFinalProp(adm.values_, $mobx, adm);\n var proxy = new Proxy(adm.values_, arrayTraps);\n adm.proxy_ = proxy;\n if (initialValues && initialValues.length) {\n var prev = allowStateChangesStart(true);\n adm.spliceWithArray_(0, 0, initialValues);\n allowStateChangesEnd(prev);\n }\n return proxy;\n} // eslint-disable-next-line\nvar arrayExtensions = {\n clear: function clear() {\n return this.splice(0);\n },\n replace: function replace(newItems) {\n var adm = this[$mobx];\n return adm.spliceWithArray_(0, adm.values_.length, newItems);\n },\n // Used by JSON.stringify\n toJSON: function toJSON() {\n return this.slice();\n },\n /*\r\n * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\r\n * since these functions alter the inner structure of the array, the have side effects.\r\n * Because the have side effects, they should not be used in computed function,\r\n * and for that reason the do not call dependencyState.notifyObserved\r\n */ splice: function splice(index, deleteCount) {\n for(var _len = arguments.length, newItems = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++)newItems[_key - 2] = arguments[_key];\n var adm = this[$mobx];\n switch(arguments.length){\n case 0:\n return [];\n case 1:\n return adm.spliceWithArray_(index);\n case 2:\n return adm.spliceWithArray_(index, deleteCount);\n }\n return adm.spliceWithArray_(index, deleteCount, newItems);\n },\n spliceWithArray: function spliceWithArray(index, deleteCount, newItems) {\n return this[$mobx].spliceWithArray_(index, deleteCount, newItems);\n },\n push: function push() {\n var adm = this[$mobx];\n for(var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++)items[_key2] = arguments[_key2];\n adm.spliceWithArray_(adm.values_.length, 0, items);\n return adm.values_.length;\n },\n pop: function pop() {\n return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0];\n },\n shift: function shift() {\n return this.splice(0, 1)[0];\n },\n unshift: function unshift() {\n var adm = this[$mobx];\n for(var _len3 = arguments.length, items = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++)items[_key3] = arguments[_key3];\n adm.spliceWithArray_(0, 0, items);\n return adm.values_.length;\n },\n reverse: function reverse() {\n // reverse by default mutates in place before returning the result\n // which makes it both a 'derivation' and a 'mutation'.\n if (globalState.trackingDerivation) die(37, \"reverse\");\n this.replace(this.slice().reverse());\n return this;\n },\n sort: function sort() {\n // sort by default mutates in place before returning the result\n // which goes against all good practices. Let's not change the array in place!\n if (globalState.trackingDerivation) die(37, \"sort\");\n var copy = this.slice();\n copy.sort.apply(copy, arguments);\n this.replace(copy);\n return this;\n },\n remove: function remove(value) {\n var adm = this[$mobx];\n var idx = adm.dehanceValues_(adm.values_).indexOf(value);\n if (idx > -1) {\n this.splice(idx, 1);\n return true;\n }\n return false;\n }\n};\n/**\r\n * Wrap function from prototype\r\n * Without this, everything works as well, but this works\r\n * faster as everything works on unproxied values\r\n */ addArrayExtension(\"concat\", simpleFunc);\naddArrayExtension(\"flat\", simpleFunc);\naddArrayExtension(\"includes\", simpleFunc);\naddArrayExtension(\"indexOf\", simpleFunc);\naddArrayExtension(\"join\", simpleFunc);\naddArrayExtension(\"lastIndexOf\", simpleFunc);\naddArrayExtension(\"slice\", simpleFunc);\naddArrayExtension(\"toString\", simpleFunc);\naddArrayExtension(\"toLocaleString\", simpleFunc); // map\naddArrayExtension(\"every\", mapLikeFunc);\naddArrayExtension(\"filter\", mapLikeFunc);\naddArrayExtension(\"find\", mapLikeFunc);\naddArrayExtension(\"findIndex\", mapLikeFunc);\naddArrayExtension(\"flatMap\", mapLikeFunc);\naddArrayExtension(\"forEach\", mapLikeFunc);\naddArrayExtension(\"map\", mapLikeFunc);\naddArrayExtension(\"some\", mapLikeFunc); // reduce\naddArrayExtension(\"reduce\", reduceLikeFunc);\naddArrayExtension(\"reduceRight\", reduceLikeFunc);\nfunction addArrayExtension(funcName, funcFactory) {\n if (typeof Array.prototype[funcName] === \"function\") arrayExtensions[funcName] = funcFactory(funcName);\n} // Report and delegate to dehanced array\nfunction simpleFunc(funcName) {\n return function() {\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n} // Make sure callbacks recieve correct array arg #2326\nfunction mapLikeFunc(funcName) {\n return function(callback, thisArg) {\n var _this2 = this;\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName](function(element, index) {\n return callback.call(thisArg, element, index, _this2);\n });\n };\n} // Make sure callbacks recieve correct array arg #2326\nfunction reduceLikeFunc(funcName) {\n return function() {\n var _this3 = this;\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_); // #2432 - reduce behavior depends on arguments.length\n var callback = arguments[0];\n arguments[0] = function(accumulator, currentValue, index) {\n return callback(accumulator, currentValue, index, _this3);\n };\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n}\nvar isObservableArrayAdministration = /*#__PURE__*/ createInstanceofPredicate(\"ObservableArrayAdministration\", ObservableArrayAdministration);\nfunction isObservableArray(thing) {\n return isObject(thing) && isObservableArrayAdministration(thing[$mobx]);\n}\nvar _Symbol$iterator, _Symbol$toStringTag;\nvar ObservableMapMarker = {};\nvar ADD = \"add\";\nvar DELETE = \"delete\"; // just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\n_Symbol$iterator = Symbol.iterator;\n_Symbol$toStringTag = Symbol.toStringTag;\nvar ObservableMap = /*#__PURE__*/ function() {\n // hasMap, not hashMap >-).\n function ObservableMap(initialData, enhancer_, name_) {\n if (enhancer_ === void 0) enhancer_ = deepEnhancer;\n if (name_ === void 0) name_ = \"ObservableMap\";\n this.enhancer_ = void 0;\n this.name_ = void 0;\n this[$mobx] = ObservableMapMarker;\n this.data_ = void 0;\n this.hasMap_ = void 0;\n this.keysAtom_ = void 0;\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = enhancer_;\n this.name_ = name_;\n if (!isFunction(Map)) die(18);\n this.keysAtom_ = createAtom(\"ObservableMap.keys()\");\n this.data_ = new Map();\n this.hasMap_ = new Map();\n this.merge(initialData);\n }\n var _proto = ObservableMap.prototype;\n _proto.has_ = function has_(key) {\n return this.data_.has(key);\n };\n _proto.has = function has(key) {\n var _this = this;\n if (!globalState.trackingDerivation) return this.has_(key);\n var entry = this.hasMap_.get(key);\n if (!entry) {\n var newEntry = entry = new ObservableValue(this.has_(key), referenceEnhancer, \"ObservableMap.key?\", false);\n this.hasMap_.set(key, newEntry);\n onBecomeUnobserved(newEntry, function() {\n return _this.hasMap_[\"delete\"](key);\n });\n }\n return entry.get();\n };\n _proto.set = function set(key, value) {\n var hasKey = this.has_(key);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: hasKey ? UPDATE : ADD,\n object: this,\n newValue: value,\n name: key\n });\n if (!change) return this;\n value = change.newValue;\n }\n if (hasKey) this.updateValue_(key, value);\n else this.addValue_(key, value);\n return this;\n };\n _proto[\"delete\"] = function _delete(key) {\n var _this2 = this;\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n name: key\n });\n if (!change) return false;\n }\n if (this.has_(key)) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var _change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: this.data_.get(key).value_,\n name: key\n } : null;\n transaction(function() {\n var _this2$hasMap_$get;\n _this2.keysAtom_.reportChanged();\n (_this2$hasMap_$get = _this2.hasMap_.get(key)) == null || _this2$hasMap_$get.setNewValue_(false);\n var observable = _this2.data_.get(key);\n observable.setNewValue_(undefined);\n _this2.data_[\"delete\"](key);\n });\n if (notify) notifyListeners(this, _change);\n return true;\n }\n return false;\n };\n _proto.updateValue_ = function updateValue_(key, newValue) {\n var observable = this.data_.get(key);\n newValue = observable.prepareNewValue_(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n observable.setNewValue_(newValue);\n if (notify) notifyListeners(this, change);\n }\n };\n _proto.addValue_ = function addValue_(key, newValue) {\n var _this3 = this;\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n transaction(function() {\n var _this3$hasMap_$get;\n var observable = new ObservableValue(newValue, _this3.enhancer_, \"ObservableMap.key\", false);\n _this3.data_.set(key, observable);\n newValue = observable.value_; // value might have been changed\n (_this3$hasMap_$get = _this3.hasMap_.get(key)) == null || _this3$hasMap_$get.setNewValue_(true);\n _this3.keysAtom_.reportChanged();\n });\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n name: key,\n newValue: newValue\n } : null;\n if (notify) notifyListeners(this, change);\n };\n _proto.get = function get(key) {\n if (this.has(key)) return this.dehanceValue_(this.data_.get(key).get());\n return this.dehanceValue_(undefined);\n };\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) return this.dehancer(value);\n return value;\n };\n _proto.keys = function keys() {\n this.keysAtom_.reportObserved();\n return this.data_.keys();\n };\n _proto.values = function values() {\n var self1 = this;\n var keys = this.keys();\n return makeIterable({\n next: function next() {\n var _keys$next = keys.next(), done = _keys$next.done, value = _keys$next.value;\n return {\n done: done,\n value: done ? undefined : self1.get(value)\n };\n }\n });\n };\n _proto.entries = function entries() {\n var self1 = this;\n var keys = this.keys();\n return makeIterable({\n next: function next() {\n var _keys$next2 = keys.next(), done = _keys$next2.done, value = _keys$next2.value;\n return {\n done: done,\n value: done ? undefined : [\n value,\n self1.get(value)\n ]\n };\n }\n });\n };\n _proto[_Symbol$iterator] = function() {\n return this.entries();\n };\n _proto.forEach = function forEach(callback, thisArg) {\n for(var _iterator = _createForOfIteratorHelperLoose(this), _step; !(_step = _iterator()).done;){\n var _step$value = _step.value, key = _step$value[0], value = _step$value[1];\n callback.call(thisArg, value, key, this);\n }\n } /** Merge another object into this object, returns this. */ ;\n _proto.merge = function merge(other) {\n var _this4 = this;\n if (isObservableMap(other)) other = new Map(other);\n transaction(function() {\n if (isPlainObject(other)) getPlainObjectKeys(other).forEach(function(key) {\n return _this4.set(key, other[key]);\n });\n else if (Array.isArray(other)) other.forEach(function(_ref) {\n var key = _ref[0], value = _ref[1];\n return _this4.set(key, value);\n });\n else if (isES6Map(other)) {\n if (other.constructor !== Map) die(19, other);\n other.forEach(function(value, key) {\n return _this4.set(key, value);\n });\n } else if (other !== null && other !== undefined) die(20, other);\n });\n return this;\n };\n _proto.clear = function clear() {\n var _this5 = this;\n transaction(function() {\n untracked(function() {\n for(var _iterator2 = _createForOfIteratorHelperLoose(_this5.keys()), _step2; !(_step2 = _iterator2()).done;){\n var key = _step2.value;\n _this5[\"delete\"](key);\n }\n });\n });\n };\n _proto.replace = function replace(values) {\n var _this6 = this;\n // Implementation requirements:\n // - respect ordering of replacement map\n // - allow interceptors to run and potentially prevent individual operations\n // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n // - note that result map may differ from replacement map due to the interceptors\n transaction(function() {\n // Convert to map so we can do quick key lookups\n var replacementMap = convertToMap(values);\n var orderedData = new Map(); // Used for optimization\n var keysReportChangedCalled = false; // Delete keys that don't exist in replacement map\n // if the key deletion is prevented by interceptor\n // add entry at the beginning of the result map\n for(var _iterator3 = _createForOfIteratorHelperLoose(_this6.data_.keys()), _step3; !(_step3 = _iterator3()).done;){\n var key = _step3.value;\n // Concurrently iterating/deleting keys\n // iterator should handle this correctly\n if (!replacementMap.has(key)) {\n var deleted = _this6[\"delete\"](key); // Was the key removed?\n if (deleted) // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n else {\n // Delete prevented by interceptor\n var value = _this6.data_.get(key);\n orderedData.set(key, value);\n }\n }\n } // Merge entries\n for(var _iterator4 = _createForOfIteratorHelperLoose(replacementMap.entries()), _step4; !(_step4 = _iterator4()).done;){\n var _step4$value = _step4.value, _key = _step4$value[0], _value = _step4$value[1];\n // We will want to know whether a new key is added\n var keyExisted = _this6.data_.has(_key); // Add or update value\n _this6.set(_key, _value); // The addition could have been prevent by interceptor\n if (_this6.data_.has(_key)) {\n // The update could have been prevented by interceptor\n // and also we want to preserve existing values\n // so use value from _data map (instead of replacement map)\n var _value2 = _this6.data_.get(_key);\n orderedData.set(_key, _value2); // Was a new key added?\n if (!keyExisted) // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n }\n } // Check for possible key order change\n if (!keysReportChangedCalled) {\n if (_this6.data_.size !== orderedData.size) // If size differs, keys are definitely modified\n _this6.keysAtom_.reportChanged();\n else {\n var iter1 = _this6.data_.keys();\n var iter2 = orderedData.keys();\n var next1 = iter1.next();\n var next2 = iter2.next();\n while(!next1.done){\n if (next1.value !== next2.value) {\n _this6.keysAtom_.reportChanged();\n break;\n }\n next1 = iter1.next();\n next2 = iter2.next();\n }\n }\n } // Use correctly ordered map\n _this6.data_ = orderedData;\n });\n return this;\n };\n _proto.toString = function toString() {\n return \"[object ObservableMap]\";\n };\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n /**\r\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\r\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\r\n * for callback details\r\n */ _proto.observe_ = function observe_(listener, fireImmediately) {\n return registerListener(this, listener);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _createClass(ObservableMap, [\n {\n key: \"size\",\n get: function get() {\n this.keysAtom_.reportObserved();\n return this.data_.size;\n }\n },\n {\n key: _Symbol$toStringTag,\n get: function get() {\n return \"Map\";\n }\n }\n ]);\n return ObservableMap;\n}(); // eslint-disable-next-line\nvar isObservableMap = /*#__PURE__*/ createInstanceofPredicate(\"ObservableMap\", ObservableMap);\nfunction convertToMap(dataStructure) {\n if (isES6Map(dataStructure) || isObservableMap(dataStructure)) return dataStructure;\n else if (Array.isArray(dataStructure)) return new Map(dataStructure);\n else if (isPlainObject(dataStructure)) {\n var map = new Map();\n for(var key in dataStructure)map.set(key, dataStructure[key]);\n return map;\n } else return die(21, dataStructure);\n}\nvar _Symbol$iterator$1, _Symbol$toStringTag$1;\nvar ObservableSetMarker = {};\n_Symbol$iterator$1 = Symbol.iterator;\n_Symbol$toStringTag$1 = Symbol.toStringTag;\nvar ObservableSet = /*#__PURE__*/ function() {\n function ObservableSet(initialData, enhancer, name_) {\n if (enhancer === void 0) enhancer = deepEnhancer;\n if (name_ === void 0) name_ = \"ObservableSet\";\n this.name_ = void 0;\n this[$mobx] = ObservableSetMarker;\n this.data_ = new Set();\n this.atom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = void 0;\n this.name_ = name_;\n if (!isFunction(Set)) die(22);\n this.atom_ = createAtom(this.name_);\n this.enhancer_ = function(newV, oldV) {\n return enhancer(newV, oldV, name_);\n };\n if (initialData) this.replace(initialData);\n }\n var _proto = ObservableSet.prototype;\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) return this.dehancer(value);\n return value;\n };\n _proto.clear = function clear() {\n var _this = this;\n transaction(function() {\n untracked(function() {\n for(var _iterator = _createForOfIteratorHelperLoose(_this.data_.values()), _step; !(_step = _iterator()).done;){\n var value = _step.value;\n _this[\"delete\"](value);\n }\n });\n });\n };\n _proto.forEach = function forEach(callbackFn, thisArg) {\n for(var _iterator2 = _createForOfIteratorHelperLoose(this), _step2; !(_step2 = _iterator2()).done;){\n var value = _step2.value;\n callbackFn.call(thisArg, value, value, this);\n }\n };\n _proto.add = function add(value) {\n var _this2 = this;\n checkIfStateModificationsAreAllowed(this.atom_);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: ADD,\n object: this,\n newValue: value\n });\n if (!change) return this; // ideally, value = change.value would be done here, so that values can be\n // changed by interceptor. Same applies for other Set and Map api's.\n }\n if (!this.has(value)) {\n transaction(function() {\n _this2.data_.add(_this2.enhancer_(value, undefined));\n _this2.atom_.reportChanged();\n });\n var notifySpy = false;\n var notify = hasListeners(this);\n var _change = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n newValue: value\n } : null;\n if (notify) notifyListeners(this, _change);\n }\n return this;\n };\n _proto[\"delete\"] = function _delete(value) {\n var _this3 = this;\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n oldValue: value\n });\n if (!change) return false;\n }\n if (this.has(value)) {\n var notifySpy = false;\n var notify = hasListeners(this);\n var _change2 = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: value\n } : null;\n transaction(function() {\n _this3.atom_.reportChanged();\n _this3.data_[\"delete\"](value);\n });\n if (notify) notifyListeners(this, _change2);\n return true;\n }\n return false;\n };\n _proto.has = function has(value) {\n this.atom_.reportObserved();\n return this.data_.has(this.dehanceValue_(value));\n };\n _proto.entries = function entries() {\n var nextIndex = 0;\n var keys = Array.from(this.keys());\n var values = Array.from(this.values());\n return makeIterable({\n next: function next() {\n var index = nextIndex;\n nextIndex += 1;\n return index < values.length ? {\n value: [\n keys[index],\n values[index]\n ],\n done: false\n } : {\n done: true\n };\n }\n });\n };\n _proto.keys = function keys() {\n return this.values();\n };\n _proto.values = function values() {\n this.atom_.reportObserved();\n var self1 = this;\n var nextIndex = 0;\n var observableValues = Array.from(this.data_.values());\n return makeIterable({\n next: function next() {\n return nextIndex < observableValues.length ? {\n value: self1.dehanceValue_(observableValues[nextIndex++]),\n done: false\n } : {\n done: true\n };\n }\n });\n };\n _proto.replace = function replace(other) {\n var _this4 = this;\n if (isObservableSet(other)) other = new Set(other);\n transaction(function() {\n if (Array.isArray(other)) {\n _this4.clear();\n other.forEach(function(value) {\n return _this4.add(value);\n });\n } else if (isES6Set(other)) {\n _this4.clear();\n other.forEach(function(value) {\n return _this4.add(value);\n });\n } else if (other !== null && other !== undefined) die(\"Cannot initialize set from \" + other);\n });\n return this;\n };\n _proto.observe_ = function observe_(listener, fireImmediately) {\n return registerListener(this, listener);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n _proto.toString = function toString() {\n return \"[object ObservableSet]\";\n };\n _proto[_Symbol$iterator$1] = function() {\n return this.values();\n };\n _createClass(ObservableSet, [\n {\n key: \"size\",\n get: function get() {\n this.atom_.reportObserved();\n return this.data_.size;\n }\n },\n {\n key: _Symbol$toStringTag$1,\n get: function get() {\n return \"Set\";\n }\n }\n ]);\n return ObservableSet;\n}(); // eslint-disable-next-line\nvar isObservableSet = /*#__PURE__*/ createInstanceofPredicate(\"ObservableSet\", ObservableSet);\nvar descriptorCache = /*#__PURE__*/ Object.create(null);\nvar REMOVE = \"remove\";\nvar ObservableObjectAdministration = /*#__PURE__*/ function() {\n function ObservableObjectAdministration(target_, values_, name_, defaultAnnotation_) {\n if (values_ === void 0) values_ = new Map();\n if (defaultAnnotation_ === void 0) defaultAnnotation_ = autoAnnotation;\n this.target_ = void 0;\n this.values_ = void 0;\n this.name_ = void 0;\n this.defaultAnnotation_ = void 0;\n this.keysAtom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.proxy_ = void 0;\n this.isPlainObject_ = void 0;\n this.appliedAnnotations_ = void 0;\n this.pendingKeys_ = void 0;\n this.target_ = target_;\n this.values_ = values_;\n this.name_ = name_;\n this.defaultAnnotation_ = defaultAnnotation_;\n this.keysAtom_ = new Atom(\"ObservableObject.keys\"); // Optimization: we use this frequently\n this.isPlainObject_ = isPlainObject(this.target_);\n }\n var _proto = ObservableObjectAdministration.prototype;\n _proto.getObservablePropValue_ = function getObservablePropValue_(key) {\n return this.values_.get(key).get();\n };\n _proto.setObservablePropValue_ = function setObservablePropValue_(key, newValue) {\n var observable = this.values_.get(key);\n if (observable instanceof ComputedValue) {\n observable.set(newValue);\n return true;\n } // intercept\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: newValue\n });\n if (!change) return null;\n newValue = change.newValue;\n }\n newValue = observable.prepareNewValue_(newValue); // notify spy & observers\n if (newValue !== globalState.UNCHANGED) {\n var notify = hasListeners(this);\n var notifySpy = false;\n var _change = notify || notifySpy ? {\n type: UPDATE,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n observable.setNewValue_(newValue);\n if (notify) notifyListeners(this, _change);\n }\n return true;\n };\n _proto.get_ = function get_(key) {\n if (globalState.trackingDerivation && !hasProp(this.target_, key)) // Key doesn't exist yet, subscribe for it in case it's added later\n this.has_(key);\n return this.target_[key];\n } /**\r\n * @param {PropertyKey} key\r\n * @param {any} value\r\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */ ;\n _proto.set_ = function set_(key, value, proxyTrap) {\n if (proxyTrap === void 0) proxyTrap = false;\n // Don't use .has(key) - we care about own\n if (hasProp(this.target_, key)) {\n // Existing prop\n if (this.values_.has(key)) // Observable (can be intercepted)\n return this.setObservablePropValue_(key, value);\n else if (proxyTrap) // Non-observable - proxy\n return Reflect.set(this.target_, key, value);\n else {\n // Non-observable\n this.target_[key] = value;\n return true;\n }\n } else // New prop\n return this.extend_(key, {\n value: value,\n enumerable: true,\n writable: true,\n configurable: true\n }, this.defaultAnnotation_, proxyTrap);\n } // Trap for \"in\"\n ;\n _proto.has_ = function has_(key) {\n if (!globalState.trackingDerivation) // Skip key subscription outside derivation\n return key in this.target_;\n this.pendingKeys_ || (this.pendingKeys_ = new Map());\n var entry = this.pendingKeys_.get(key);\n if (!entry) {\n entry = new ObservableValue(key in this.target_, referenceEnhancer, \"ObservableObject.key?\", false);\n this.pendingKeys_.set(key, entry);\n }\n return entry.get();\n } /**\r\n * @param {PropertyKey} key\r\n * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\r\n */ ;\n _proto.make_ = function make_(key, annotation) {\n if (annotation === true) annotation = this.defaultAnnotation_;\n if (annotation === false) return;\n assertAnnotable(this, annotation, key);\n if (!(key in this.target_)) {\n var _this$target_$storedA;\n // Throw on missing key, except for decorators:\n // Decorator annotations are collected from whole prototype chain.\n // When called from super() some props may not exist yet.\n // However we don't have to worry about missing prop,\n // because the decorator must have been applied to something.\n if ((_this$target_$storedA = this.target_[storedAnnotationsSymbol]) == null ? void 0 : _this$target_$storedA[key]) return; // will be annotated by subclass constructor\n else die(1, annotation.annotationType_, this.name_ + \".\" + key.toString());\n }\n var source = this.target_;\n while(source && source !== objectPrototype){\n var descriptor = getDescriptor(source, key);\n if (descriptor) {\n var outcome = annotation.make_(this, key, descriptor, source);\n if (outcome === 0) return;\n if (outcome === 1) break;\n }\n source = Object.getPrototypeOf(source);\n }\n recordAnnotationApplied(this, annotation, key);\n } /**\r\n * @param {PropertyKey} key\r\n * @param {PropertyDescriptor} descriptor\r\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */ ;\n _proto.extend_ = function extend_(key, descriptor, annotation, proxyTrap) {\n if (proxyTrap === void 0) proxyTrap = false;\n if (annotation === true) annotation = this.defaultAnnotation_;\n if (annotation === false) return this.defineProperty_(key, descriptor, proxyTrap);\n assertAnnotable(this, annotation, key);\n var outcome = annotation.extend_(this, key, descriptor, proxyTrap);\n if (outcome) recordAnnotationApplied(this, annotation, key);\n return outcome;\n } /**\r\n * @param {PropertyKey} key\r\n * @param {PropertyDescriptor} descriptor\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */ ;\n _proto.defineProperty_ = function defineProperty_(key, descriptor, proxyTrap) {\n if (proxyTrap === void 0) proxyTrap = false;\n try {\n startBatch(); // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) // Failure or intercepted\n return deleteOutcome;\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: descriptor.value\n });\n if (!change) return null;\n var newValue = change.newValue;\n if (descriptor.value !== newValue) descriptor = _extends({}, descriptor, {\n value: newValue\n });\n } // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) return false;\n } else defineProperty(this.target_, key, descriptor);\n // Notify\n this.notifyPropertyAddition_(key, descriptor.value);\n } finally{\n endBatch();\n }\n return true;\n } // If original descriptor becomes relevant, move this to annotation directly\n ;\n _proto.defineObservableProperty_ = function defineObservableProperty_(key, value, enhancer, proxyTrap) {\n if (proxyTrap === void 0) proxyTrap = false;\n try {\n startBatch(); // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) // Failure or intercepted\n return deleteOutcome;\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: value\n });\n if (!change) return null;\n value = change.newValue;\n }\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: true,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }; // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) return false;\n } else defineProperty(this.target_, key, descriptor);\n var observable = new ObservableValue(value, enhancer, \"ObservableObject.key\", false);\n this.values_.set(key, observable); // Notify (value possibly changed by ObservableValue)\n this.notifyPropertyAddition_(key, observable.value_);\n } finally{\n endBatch();\n }\n return true;\n } // If original descriptor becomes relevant, move this to annotation directly\n ;\n _proto.defineComputedProperty_ = function defineComputedProperty_(key, options, proxyTrap) {\n if (proxyTrap === void 0) proxyTrap = false;\n try {\n startBatch(); // Delete\n var deleteOutcome = this.delete_(key);\n if (!deleteOutcome) // Failure or intercepted\n return deleteOutcome;\n // ADD interceptor\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: undefined\n });\n if (!change) return null;\n }\n options.name || (options.name = \"ObservableObject.key\");\n options.context = this.proxy_ || this.target_;\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: false,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }; // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) return false;\n } else defineProperty(this.target_, key, descriptor);\n this.values_.set(key, new ComputedValue(options)); // Notify\n this.notifyPropertyAddition_(key, undefined);\n } finally{\n endBatch();\n }\n return true;\n } /**\r\n * @param {PropertyKey} key\r\n * @param {PropertyDescriptor} descriptor\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */ ;\n _proto.delete_ = function delete_(key, proxyTrap) {\n if (proxyTrap === void 0) proxyTrap = false;\n // No such prop\n if (!hasProp(this.target_, key)) return true;\n // Intercept\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: REMOVE\n }); // Cancelled\n if (!change) return null;\n } // Delete\n try {\n var _this$pendingKeys_, _this$pendingKeys_$ge;\n startBatch();\n var notify = hasListeners(this);\n var notifySpy = false;\n var observable = this.values_.get(key); // Value needed for spies/listeners\n var value = undefined; // Optimization: don't pull the value unless we will need it\n if (!observable && (notify || notifySpy)) {\n var _getDescriptor;\n value = (_getDescriptor = getDescriptor(this.target_, key)) == null ? void 0 : _getDescriptor.value;\n } // delete prop (do first, may fail)\n if (proxyTrap) {\n if (!Reflect.deleteProperty(this.target_, key)) return false;\n } else delete this.target_[key];\n // Allow re-annotating this field\n if (observable) {\n this.values_[\"delete\"](key); // for computed, value is undefined\n if (observable instanceof ObservableValue) value = observable.value_;\n // Notify: autorun(() => obj[key]), see #1796\n propagateChanged(observable);\n } // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged(); // Notify \"has\" observers\n // \"in\" as it may still exist in proto\n (_this$pendingKeys_ = this.pendingKeys_) == null || (_this$pendingKeys_$ge = _this$pendingKeys_.get(key)) == null || _this$pendingKeys_$ge.set(key in this.target_); // Notify spies/listeners\n if (notify || notifySpy) {\n var _change2 = {\n type: REMOVE,\n observableKind: \"object\",\n object: this.proxy_ || this.target_,\n debugObjectName: this.name_,\n oldValue: value,\n name: key\n };\n if (notify) notifyListeners(this, _change2);\n }\n } finally{\n endBatch();\n }\n return true;\n } /**\r\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\r\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\r\n * for callback details\r\n */ ;\n _proto.observe_ = function observe_(callback, fireImmediately) {\n return registerListener(this, callback);\n };\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n _proto.notifyPropertyAddition_ = function notifyPropertyAddition_(key, value) {\n var _this$pendingKeys_2, _this$pendingKeys_2$g;\n var notify = hasListeners(this);\n var notifySpy = false;\n if (notify || notifySpy) {\n var change = notify || notifySpy ? {\n type: ADD,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: value\n } : null;\n if (notify) notifyListeners(this, change);\n }\n (_this$pendingKeys_2 = this.pendingKeys_) == null || (_this$pendingKeys_2$g = _this$pendingKeys_2.get(key)) == null || _this$pendingKeys_2$g.set(true); // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged();\n };\n _proto.ownKeys_ = function ownKeys_() {\n this.keysAtom_.reportObserved();\n return ownKeys(this.target_);\n };\n _proto.keys_ = function keys_() {\n // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n // We choose to over-report in Object.keys(object), because:\n // - typically it's used with simple data objects\n // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n this.keysAtom_.reportObserved();\n return Object.keys(this.target_);\n };\n return ObservableObjectAdministration;\n}();\nfunction asObservableObject(target, options) {\n var _options$name;\n if (hasProp(target, $mobx)) return target;\n var name = (_options$name = options == null ? void 0 : options.name) != null ? _options$name : \"ObservableObject\";\n var adm = new ObservableObjectAdministration(target, new Map(), String(name), getAnnotationFromOptions(options));\n addHiddenProp(target, $mobx, adm);\n return target;\n}\nvar isObservableObjectAdministration = /*#__PURE__*/ createInstanceofPredicate(\"ObservableObjectAdministration\", ObservableObjectAdministration);\nfunction getCachedObservablePropDescriptor(key) {\n return descriptorCache[key] || (descriptorCache[key] = {\n get: function get() {\n return this[$mobx].getObservablePropValue_(key);\n },\n set: function set(value) {\n return this[$mobx].setObservablePropValue_(key, value);\n }\n });\n}\nfunction isObservableObject(thing) {\n if (isObject(thing)) return isObservableObjectAdministration(thing[$mobx]);\n return false;\n}\nfunction recordAnnotationApplied(adm, annotation, key) {\n var _adm$target_$storedAn;\n (_adm$target_$storedAn = adm.target_[storedAnnotationsSymbol]) == null || delete _adm$target_$storedAn[key];\n}\nfunction assertAnnotable(adm, annotation, key) {\n var fieldName, currentAnnotationType, requestedAnnotationType;\n}\n/**\r\n * This array buffer contains two lists of properties, so that all arrays\r\n * can recycle their property definitions, which significantly improves performance of creating\r\n * properties on the fly.\r\n */ var OBSERVABLE_ARRAY_BUFFER_SIZE = 0; // Typescript workaround to make sure ObservableArray extends Array\nvar StubArray = function StubArray() {};\nfunction inherit(ctor, proto) {\n if (Object.setPrototypeOf) Object.setPrototypeOf(ctor.prototype, proto);\n else if (ctor.prototype.__proto__ !== undefined) ctor.prototype.__proto__ = proto;\n else ctor.prototype = proto;\n}\ninherit(StubArray, Array.prototype); // Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\nvar LegacyObservableArray = /*#__PURE__*/ function(_StubArray) {\n _inheritsLoose(LegacyObservableArray, _StubArray);\n function LegacyObservableArray(initialValues, enhancer, name, owned) {\n var _this;\n if (name === void 0) name = \"ObservableArray\";\n if (owned === void 0) owned = false;\n _this = _StubArray.call(this) || this;\n var adm = new ObservableArrayAdministration(name, enhancer, owned, true);\n adm.proxy_ = _assertThisInitialized(_this);\n addHiddenFinalProp(_assertThisInitialized(_this), $mobx, adm);\n if (initialValues && initialValues.length) {\n var prev = allowStateChangesStart(true); // @ts-ignore\n _this.spliceWithArray(0, 0, initialValues);\n allowStateChangesEnd(prev);\n }\n return _this;\n }\n var _proto = LegacyObservableArray.prototype;\n _proto.concat = function concat() {\n this[$mobx].atom_.reportObserved();\n for(var _len = arguments.length, arrays = new Array(_len), _key = 0; _key < _len; _key++)arrays[_key] = arguments[_key];\n return Array.prototype.concat.apply(this.slice(), arrays.map(function(a) {\n return isObservableArray(a) ? a.slice() : a;\n }));\n };\n _proto[Symbol.iterator] = function() {\n var self1 = this;\n var nextIndex = 0;\n return makeIterable({\n next: function next() {\n // @ts-ignore\n return nextIndex < self1.length ? {\n value: self1[nextIndex++],\n done: false\n } : {\n done: true,\n value: undefined\n };\n }\n });\n };\n _createClass(LegacyObservableArray, [\n {\n key: \"length\",\n get: function get() {\n return this[$mobx].getArrayLength_();\n },\n set: function set(newLength) {\n this[$mobx].setArrayLength_(newLength);\n }\n },\n {\n key: Symbol.toStringTag,\n get: function get() {\n return \"Array\";\n }\n }\n ]);\n return LegacyObservableArray;\n}(StubArray);\nObject.entries(arrayExtensions).forEach(function(_ref) {\n var prop = _ref[0], fn = _ref[1];\n if (prop !== \"concat\") addHiddenProp(LegacyObservableArray.prototype, prop, fn);\n});\nfunction createArrayEntryDescriptor(index) {\n return {\n enumerable: false,\n configurable: true,\n get: function get() {\n return this[$mobx].get_(index);\n },\n set: function set(value) {\n this[$mobx].set_(index, value);\n }\n };\n}\nfunction createArrayBufferItem(index) {\n defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index));\n}\nfunction reserveArrayBuffer(max) {\n if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n for(var index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++)createArrayBufferItem(index);\n OBSERVABLE_ARRAY_BUFFER_SIZE = max;\n }\n}\nreserveArrayBuffer(1000);\nfunction createLegacyArray(initialValues, enhancer, name) {\n return new LegacyObservableArray(initialValues, enhancer, name);\n}\nfunction getAtom(thing, property) {\n if (typeof thing === \"object\" && thing !== null) {\n if (isObservableArray(thing)) {\n if (property !== undefined) die(23);\n return thing[$mobx].atom_;\n }\n if (isObservableSet(thing)) return thing[$mobx];\n if (isObservableMap(thing)) {\n if (property === undefined) return thing.keysAtom_;\n var observable = thing.data_.get(property) || thing.hasMap_.get(property);\n if (!observable) die(25, property, getDebugName(thing));\n return observable;\n }\n if (isObservableObject(thing)) {\n if (!property) return die(26);\n var _observable = thing[$mobx].values_.get(property);\n if (!_observable) die(27, property, getDebugName(thing));\n return _observable;\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) return thing;\n } else if (isFunction(thing)) {\n if (isReaction(thing[$mobx])) // disposer function\n return thing[$mobx];\n }\n die(28);\n}\nfunction getAdministration(thing, property) {\n if (!thing) die(29);\n if (property !== undefined) return getAdministration(getAtom(thing, property));\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) return thing;\n if (isObservableMap(thing) || isObservableSet(thing)) return thing;\n if (thing[$mobx]) return thing[$mobx];\n die(24, thing);\n}\nfunction getDebugName(thing, property) {\n var named;\n if (property !== undefined) named = getAtom(thing, property);\n else if (isAction(thing)) return thing.name;\n else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) named = getAdministration(thing);\n else // valid for arrays as well\n named = getAtom(thing);\n return named.name_;\n}\nvar toString = objectPrototype.toString;\nfunction deepEqual(a, b, depth) {\n if (depth === void 0) depth = -1;\n return eq(a, b, depth);\n} // Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a, b, depth, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b; // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false; // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b; // Exhaust primitive checks\n var type = typeof a;\n if (!isFunction(type) && type !== \"object\" && typeof b != \"object\") return false; // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n switch(className){\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case \"[object RegExp]\":\n case \"[object String]\":\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return \"\" + a === \"\" + b;\n case \"[object Number]\":\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b; // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case \"[object Date]\":\n case \"[object Boolean]\":\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case \"[object Symbol]\":\n return typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b);\n case \"[object Map]\":\n case \"[object Set]\":\n // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n // Hide this extra level by increasing the depth.\n if (depth >= 0) depth++;\n break;\n } // Unwrap any wrapped objects.\n a = unwrap(a);\n b = unwrap(b);\n var areArrays = className === \"[object Array]\";\n if (!areArrays) {\n if (typeof a != \"object\" || typeof b != \"object\") return false; // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor && isFunction(bCtor) && bCtor instanceof bCtor) && \"constructor\" in a && \"constructor\" in b) return false;\n }\n if (depth === 0) return false;\n else if (depth < 0) depth = -1;\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while(length--){\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n } // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b); // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false; // Deep compare the contents, ignoring non-numeric properties.\n while(length--){\n if (!eq(a[length], b[length], depth - 1, aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var keys = Object.keys(a);\n var key;\n length = keys.length; // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object.keys(b).length !== length) return false;\n while(length--){\n // Deep compare each member\n key = keys[length];\n if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) return false;\n }\n } // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\nfunction unwrap(a) {\n if (isObservableArray(a)) return a.slice();\n if (isES6Map(a) || isObservableMap(a)) return Array.from(a.entries());\n if (isES6Set(a) || isObservableSet(a)) return Array.from(a.entries());\n return a;\n}\nfunction makeIterable(iterator) {\n iterator[Symbol.iterator] = getSelf;\n return iterator;\n}\nfunction getSelf() {\n return this;\n}\nfunction isAnnotation(thing) {\n return thing instanceof Object && typeof thing.annotationType_ === \"string\" && isFunction(thing.make_) && isFunction(thing.extend_);\n}\n/**\r\n * (c) Michel Weststrate 2015 - 2020\r\n * MIT Licensed\r\n *\r\n * Welcome to the mobx sources! To get an global overview of how MobX internally works,\r\n * this is a good place to start:\r\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\r\n *\r\n * Source folders:\r\n * ===============\r\n *\r\n * - api/ Most of the public static methods exposed by the module can be found here.\r\n * - core/ Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\r\n * - types/ All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\r\n * - utils/ Utility stuff.\r\n *\r\n */ [\n \"Symbol\",\n \"Map\",\n \"Set\"\n].forEach(function(m) {\n var g = getGlobal();\n if (typeof g[m] === \"undefined\") die(\"MobX requires global '\" + m + \"' to be available or polyfilled\");\n});\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") // See: https://github.com/andykog/mobx-devtools/\n__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n spy: spy,\n extras: {\n getDebugName: getDebugName\n },\n $mobx: $mobx\n});\n\n});\n\nparcelRegister(\"8hvMW\", function(module, exports) {\n\n$parcel$export(module.exports, \"observer\", function () { return (parcelRequire(\"87gt0\")).observer; });\n$parcel$export(module.exports, \"useLocalStore\", function () { return (parcelRequire(\"jTDtN\")).useLocalStore; });\nparcelRequire(\"hYrwY\");\nparcelRequire(\"2icV0\");\nvar $3glZ1 = parcelRequire(\"3glZ1\");\n\nvar $d8Qvp = parcelRequire(\"d8Qvp\");\nparcelRequire(\"lk9T4\");\n\nvar $lBJ1n = parcelRequire(\"lBJ1n\");\n\nvar $a32AH = parcelRequire(\"a32AH\");\n\nvar $87gt0 = parcelRequire(\"87gt0\");\n\nvar $jKc8N = parcelRequire(\"jKc8N\");\n\nvar $e7tbY = parcelRequire(\"e7tbY\");\n\nvar $jTDtN = parcelRequire(\"jTDtN\");\n\nvar $80RKL = parcelRequire(\"80RKL\");\n\nvar $kJoID = parcelRequire(\"kJoID\");\n(0, $d8Qvp.observerBatching)((0, $3glZ1.unstable_batchedUpdates));\nfunction $607891cac3cc5723$export$b9c7ecd090a87b14(fn, baseComponentName) {\n if (baseComponentName === void 0) baseComponentName = \"observed\";\n return (0, $lBJ1n.useObserver)(fn, baseComponentName);\n}\nfunction $607891cac3cc5723$export$7613124ee4202834(enable) {\n (0, $a32AH.enableStaticRendering)(enable);\n}\n\n});\nparcelRegister(\"hYrwY\", function(module, exports) {\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\nif (!(0, $70fFQ.useState)) throw new Error(\"mobx-react-lite requires React with Hooks support\");\nif (!(0, $gOgWf.makeObservable)) throw new Error(\"mobx-react-lite@3 requires mobx at least version 6 to be available\");\n\n});\n\nparcelRegister(\"2icV0\", function(module, exports) {\n\n$parcel$export(module.exports, \"unstable_batchedUpdates\", function () { return (parcelRequire(\"3glZ1\")).unstable_batchedUpdates; });\n\nvar $3glZ1 = parcelRequire(\"3glZ1\");\n\n});\n\nparcelRegister(\"d8Qvp\", function(module, exports) {\n\n$parcel$export(module.exports, \"observerBatching\", function () { return $9914c03b19cd6b2b$export$294943bbc3c74f4f; });\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\nfunction $9914c03b19cd6b2b$export$fb2daceae6f5097a(callback) {\n callback();\n}\nfunction $9914c03b19cd6b2b$export$294943bbc3c74f4f(reactionScheduler) {\n if (!reactionScheduler) reactionScheduler = $9914c03b19cd6b2b$export$fb2daceae6f5097a;\n (0, $gOgWf.configure)({\n reactionScheduler: reactionScheduler\n });\n}\nvar $9914c03b19cd6b2b$export$13ce1459b9a04b51 = function() {\n return true;\n};\n\n});\n\nparcelRegister(\"lk9T4\", function(module, exports) {\nvar $f863229eac307d4a$var$deprecatedMessages = [];\nfunction $f863229eac307d4a$export$be38475be17599d(msg) {\n if (!$f863229eac307d4a$var$deprecatedMessages.includes(msg)) {\n $f863229eac307d4a$var$deprecatedMessages.push(msg);\n console.warn(msg);\n }\n}\n\n});\n\nparcelRegister(\"lBJ1n\", function(module, exports) {\n\n$parcel$export(module.exports, \"useObserver\", function () { return $fbaff9f8c8e0861f$export$b9c7ecd090a87b14; });\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $ljNBX = parcelRequire(\"ljNBX\");\n\nvar $kJoID = parcelRequire(\"kJoID\");\n\nvar $a32AH = parcelRequire(\"a32AH\");\nvar $fbaff9f8c8e0861f$var$__read = undefined && undefined.__read || function(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while((n === void 0 || n-- > 0) && !(r = i.next()).done)ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally{\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally{\n if (e) throw e.error;\n }\n }\n return ar;\n};\nfunction $fbaff9f8c8e0861f$var$observerComponentNameFor(baseComponentName) {\n return \"observer\" + baseComponentName;\n}\n/**\n * We use class to make it easier to detect in heap snapshots by name\n */ var $fbaff9f8c8e0861f$var$ObjectToBeRetainedByReact = /** @class */ function() {\n function ObjectToBeRetainedByReact() {}\n return ObjectToBeRetainedByReact;\n}();\nfunction $fbaff9f8c8e0861f$var$objectToBeRetainedByReactFactory() {\n return new $fbaff9f8c8e0861f$var$ObjectToBeRetainedByReact();\n}\nfunction $fbaff9f8c8e0861f$export$b9c7ecd090a87b14(fn, baseComponentName) {\n if (baseComponentName === void 0) baseComponentName = \"observed\";\n if ((0, $a32AH.isUsingStaticRendering)()) return fn();\n var _a = $fbaff9f8c8e0861f$var$__read((0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).useState($fbaff9f8c8e0861f$var$objectToBeRetainedByReactFactory), 1), objectRetainedByReact = _a[0];\n // Force update, see #2982\n var _b = $fbaff9f8c8e0861f$var$__read((0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).useState(), 2), setState = _b[1];\n var forceUpdate = function() {\n return setState([]);\n };\n // StrictMode/ConcurrentMode/Suspense may mean that our component is\n // rendered and abandoned multiple times, so we need to track leaked\n // Reactions.\n var reactionTrackingRef = (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).useRef(null);\n if (!reactionTrackingRef.current) {\n // First render for this component (or first time since a previous\n // reaction from an abandoned render was disposed).\n var newReaction = new (0, $gOgWf.Reaction)($fbaff9f8c8e0861f$var$observerComponentNameFor(baseComponentName), function() {\n // Observable has changed, meaning we want to re-render\n // BUT if we're a component that hasn't yet got to the useEffect()\n // stage, we might be a component that _started_ to render, but\n // got dropped, and we don't want to make state changes then.\n // (It triggers warnings in StrictMode, for a start.)\n if (trackingData_1.mounted) // We have reached useEffect(), so we're mounted, and can trigger an update\n forceUpdate();\n else // We haven't yet reached useEffect(), so we'll need to trigger a re-render\n // when (and if) useEffect() arrives.\n trackingData_1.changedBeforeMount = true;\n });\n var trackingData_1 = (0, $kJoID.addReactionToTrack)(reactionTrackingRef, newReaction, objectRetainedByReact);\n }\n var reaction = reactionTrackingRef.current.reaction;\n (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).useDebugValue(reaction, (0, $ljNBX.printDebugValue));\n (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).useEffect(function() {\n // Called on first mount only\n (0, $kJoID.recordReactionAsCommitted)(reactionTrackingRef);\n if (reactionTrackingRef.current) {\n // Great. We've already got our reaction from our render;\n // all we need to do is to record that it's now mounted,\n // to allow future observable changes to trigger re-renders\n reactionTrackingRef.current.mounted = true;\n // Got a change before first mount, force an update\n if (reactionTrackingRef.current.changedBeforeMount) {\n reactionTrackingRef.current.changedBeforeMount = false;\n forceUpdate();\n }\n } else {\n // The reaction we set up in our render has been disposed.\n // This can be due to bad timings of renderings, e.g. our\n // component was paused for a _very_ long time, and our\n // reaction got cleaned up\n // Re-create the reaction\n reactionTrackingRef.current = {\n reaction: new (0, $gOgWf.Reaction)($fbaff9f8c8e0861f$var$observerComponentNameFor(baseComponentName), function() {\n // We've definitely already been mounted at this point\n forceUpdate();\n }),\n mounted: true,\n changedBeforeMount: false,\n cleanAt: Infinity\n };\n forceUpdate();\n }\n return function() {\n reactionTrackingRef.current.reaction.dispose();\n reactionTrackingRef.current = null;\n };\n }, []);\n // render the original component, but have the\n // reaction track the observables, so that rendering\n // can be invalidated (see above) once a dependency changes\n var rendering;\n var exception;\n reaction.track(function() {\n try {\n rendering = fn();\n } catch (e) {\n exception = e;\n }\n });\n if (exception) throw exception; // re-throw any exceptions caught during rendering\n return rendering;\n}\n\n});\nparcelRegister(\"ljNBX\", function(module, exports) {\n\n$parcel$export(module.exports, \"printDebugValue\", function () { return $f851db1985964faf$export$ef795f1f307682c7; });\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\nfunction $f851db1985964faf$export$ef795f1f307682c7(v) {\n return (0, $gOgWf.getDependencyTree)(v);\n}\n\n});\n\nparcelRegister(\"kJoID\", function(module, exports) {\n\n$parcel$export(module.exports, \"addReactionToTrack\", function () { return $f17b2f445cb5e7b8$export$afe524b4187b229f; });\n$parcel$export(module.exports, \"recordReactionAsCommitted\", function () { return $f17b2f445cb5e7b8$export$ab63aa5c46b8d26f; });\n\nvar $bTohN = parcelRequire(\"bTohN\");\n\nvar $3aEMe = parcelRequire(\"3aEMe\");\n\nvar $kGWPs = parcelRequire(\"kGWPs\");\nvar $f17b2f445cb5e7b8$var$_a = (0, $bTohN.FinalizationRegistry) ? (0, $3aEMe.createReactionCleanupTrackingUsingFinalizationRegister)((0, $bTohN.FinalizationRegistry)) : (0, $kGWPs.createTimerBasedReactionCleanupTracking)(), $f17b2f445cb5e7b8$export$afe524b4187b229f = $f17b2f445cb5e7b8$var$_a.addReactionToTrack, $f17b2f445cb5e7b8$export$ab63aa5c46b8d26f = $f17b2f445cb5e7b8$var$_a.recordReactionAsCommitted, $f17b2f445cb5e7b8$export$8ccb7f898b3f89a3 = $f17b2f445cb5e7b8$var$_a.resetCleanupScheduleForTests, $f17b2f445cb5e7b8$export$e4e43e0ec68bea7 = $f17b2f445cb5e7b8$var$_a.forceCleanupTimerToRunNowForTests;\n\n});\nparcelRegister(\"bTohN\", function(module, exports) {\n\n$parcel$export(module.exports, \"FinalizationRegistry\", function () { return $8a87ab7a9e0ba88e$export$76a7cbb61503421d; });\nvar $8a87ab7a9e0ba88e$export$76a7cbb61503421d = typeof FinalizationRegistry === \"undefined\" ? undefined : FinalizationRegistry;\n\n});\n\nparcelRegister(\"3aEMe\", function(module, exports) {\n\n$parcel$export(module.exports, \"createReactionCleanupTrackingUsingFinalizationRegister\", function () { return $24f1efb7e45e8bb7$export$50c9e8dc802ed29e; });\n\nvar $53Jpg = parcelRequire(\"53Jpg\");\nfunction $24f1efb7e45e8bb7$export$50c9e8dc802ed29e(FinalizationRegistry) {\n var cleanupTokenToReactionTrackingMap = new Map();\n var globalCleanupTokensCounter = 1;\n var registry = new FinalizationRegistry(function cleanupFunction(token) {\n var trackedReaction = cleanupTokenToReactionTrackingMap.get(token);\n if (trackedReaction) {\n trackedReaction.reaction.dispose();\n cleanupTokenToReactionTrackingMap.delete(token);\n }\n });\n return {\n addReactionToTrack: function(reactionTrackingRef, reaction, objectRetainedByReact) {\n var token = globalCleanupTokensCounter++;\n registry.register(objectRetainedByReact, token, reactionTrackingRef);\n reactionTrackingRef.current = (0, $53Jpg.createTrackingData)(reaction);\n reactionTrackingRef.current.finalizationRegistryCleanupToken = token;\n cleanupTokenToReactionTrackingMap.set(token, reactionTrackingRef.current);\n return reactionTrackingRef.current;\n },\n recordReactionAsCommitted: function(reactionRef) {\n registry.unregister(reactionRef);\n if (reactionRef.current && reactionRef.current.finalizationRegistryCleanupToken) cleanupTokenToReactionTrackingMap.delete(reactionRef.current.finalizationRegistryCleanupToken);\n },\n forceCleanupTimerToRunNowForTests: function() {\n // When FinalizationRegistry in use, this this is no-op\n },\n resetCleanupScheduleForTests: function() {\n // When FinalizationRegistry in use, this this is no-op\n }\n };\n}\n\n});\nparcelRegister(\"53Jpg\", function(module, exports) {\n\n$parcel$export(module.exports, \"createTrackingData\", function () { return $3af07451efa3cf75$export$bbb1082a9abc1839; });\n$parcel$export(module.exports, \"CLEANUP_TIMER_LOOP_MILLIS\", function () { return $3af07451efa3cf75$export$262a80afc9566214; });\nfunction $3af07451efa3cf75$export$bbb1082a9abc1839(reaction) {\n var trackingData = {\n reaction: reaction,\n mounted: false,\n changedBeforeMount: false,\n cleanAt: Date.now() + $3af07451efa3cf75$export$6c9b1ff66852295c\n };\n return trackingData;\n}\nvar $3af07451efa3cf75$export$6c9b1ff66852295c = 10000;\nvar $3af07451efa3cf75$export$262a80afc9566214 = 10000;\n\n});\n\n\nparcelRegister(\"kGWPs\", function(module, exports) {\n\n$parcel$export(module.exports, \"createTimerBasedReactionCleanupTracking\", function () { return $f1055d1a6838f3e6$export$6136b5ce3e719258; });\n\nvar $53Jpg = parcelRequire(\"53Jpg\");\nvar $f1055d1a6838f3e6$var$__values = undefined && undefined.__values || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nfunction $f1055d1a6838f3e6$export$6136b5ce3e719258() {\n /**\n * Reactions created by components that have yet to be fully mounted.\n */ var uncommittedReactionRefs = new Set();\n /**\n * Latest 'uncommitted reactions' cleanup timer handle.\n */ var reactionCleanupHandle;\n /* istanbul ignore next */ /**\n * Only to be used by test functions; do not export outside of mobx-react-lite\n */ function forceCleanupTimerToRunNowForTests() {\n // This allows us to control the execution of the cleanup timer\n // to force it to run at awkward times in unit tests.\n if (reactionCleanupHandle) {\n clearTimeout(reactionCleanupHandle);\n cleanUncommittedReactions();\n }\n }\n /* istanbul ignore next */ function resetCleanupScheduleForTests() {\n var e_1, _a;\n if (uncommittedReactionRefs.size > 0) {\n try {\n for(var uncommittedReactionRefs_1 = $f1055d1a6838f3e6$var$__values(uncommittedReactionRefs), uncommittedReactionRefs_1_1 = uncommittedReactionRefs_1.next(); !uncommittedReactionRefs_1_1.done; uncommittedReactionRefs_1_1 = uncommittedReactionRefs_1.next()){\n var ref = uncommittedReactionRefs_1_1.value;\n var tracking = ref.current;\n if (tracking) {\n tracking.reaction.dispose();\n ref.current = null;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally{\n try {\n if (uncommittedReactionRefs_1_1 && !uncommittedReactionRefs_1_1.done && (_a = uncommittedReactionRefs_1.return)) _a.call(uncommittedReactionRefs_1);\n } finally{\n if (e_1) throw e_1.error;\n }\n }\n uncommittedReactionRefs.clear();\n }\n if (reactionCleanupHandle) {\n clearTimeout(reactionCleanupHandle);\n reactionCleanupHandle = undefined;\n }\n }\n function ensureCleanupTimerRunning() {\n if (reactionCleanupHandle === undefined) reactionCleanupHandle = setTimeout(cleanUncommittedReactions, (0, $53Jpg.CLEANUP_TIMER_LOOP_MILLIS));\n }\n function scheduleCleanupOfReactionIfLeaked(ref) {\n uncommittedReactionRefs.add(ref);\n ensureCleanupTimerRunning();\n }\n function recordReactionAsCommitted(reactionRef) {\n uncommittedReactionRefs.delete(reactionRef);\n }\n /**\n * Run by the cleanup timer to dispose any outstanding reactions\n */ function cleanUncommittedReactions() {\n reactionCleanupHandle = undefined;\n // Loop through all the candidate leaked reactions; those older\n // than CLEANUP_LEAKED_REACTIONS_AFTER_MILLIS get tidied.\n var now = Date.now();\n uncommittedReactionRefs.forEach(function(ref) {\n var tracking = ref.current;\n if (tracking) {\n if (now >= tracking.cleanAt) {\n // It's time to tidy up this leaked reaction.\n tracking.reaction.dispose();\n ref.current = null;\n uncommittedReactionRefs.delete(ref);\n }\n }\n });\n if (uncommittedReactionRefs.size > 0) // We've just finished a round of cleanups but there are still\n // some leak candidates outstanding.\n ensureCleanupTimerRunning();\n }\n return {\n addReactionToTrack: function(reactionTrackingRef, reaction, /**\n * On timer based implementation we don't really need this object,\n * but we keep the same api\n */ objectRetainedByReact) {\n reactionTrackingRef.current = (0, $53Jpg.createTrackingData)(reaction);\n scheduleCleanupOfReactionIfLeaked(reactionTrackingRef);\n return reactionTrackingRef.current;\n },\n recordReactionAsCommitted: recordReactionAsCommitted,\n forceCleanupTimerToRunNowForTests: forceCleanupTimerToRunNowForTests,\n resetCleanupScheduleForTests: resetCleanupScheduleForTests\n };\n}\n\n});\n\n\nparcelRegister(\"a32AH\", function(module, exports) {\n\n$parcel$export(module.exports, \"enableStaticRendering\", function () { return $750c31b313a7c5e5$export$5d52eaa7c0f24c9e; });\n$parcel$export(module.exports, \"isUsingStaticRendering\", function () { return $750c31b313a7c5e5$export$55979271896d643e; });\nvar $750c31b313a7c5e5$var$globalIsUsingStaticRendering = false;\nfunction $750c31b313a7c5e5$export$5d52eaa7c0f24c9e(enable) {\n $750c31b313a7c5e5$var$globalIsUsingStaticRendering = enable;\n}\nfunction $750c31b313a7c5e5$export$55979271896d643e() {\n return $750c31b313a7c5e5$var$globalIsUsingStaticRendering;\n}\n\n});\n\n\nparcelRegister(\"87gt0\", function(module, exports) {\n\n$parcel$export(module.exports, \"observer\", function () { return $5e8bc020242a39a2$export$b6ae1bc530f4c149; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $a32AH = parcelRequire(\"a32AH\");\n\nvar $lBJ1n = parcelRequire(\"lBJ1n\");\nvar $5e8bc020242a39a2$var$__assign = undefined && undefined.__assign || function() {\n $5e8bc020242a39a2$var$__assign = Object.assign || function(t) {\n for(var s, i = 1, n = arguments.length; i < n; i++){\n s = arguments[i];\n for(var p in s)if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return $5e8bc020242a39a2$var$__assign.apply(this, arguments);\n};\nfunction $5e8bc020242a39a2$export$b6ae1bc530f4c149(baseComponent, options) {\n // The working of observer is explained step by step in this talk: https://www.youtube.com/watch?v=cPF4iBedoF0&feature=youtu.be&t=1307\n if ((0, $a32AH.isUsingStaticRendering)()) return baseComponent;\n var realOptions = $5e8bc020242a39a2$var$__assign({\n forwardRef: false\n }, options);\n var baseComponentName = baseComponent.displayName || baseComponent.name;\n var wrappedComponent = function(props, ref) {\n return (0, $lBJ1n.useObserver)(function() {\n return baseComponent(props, ref);\n }, baseComponentName);\n };\n wrappedComponent.displayName = baseComponentName;\n // Support legacy context: `contextTypes` must be applied before `memo` \n if (baseComponent.contextTypes) wrappedComponent.contextTypes = baseComponent.contextTypes;\n // memo; we are not interested in deep updates\n // in props; we assume that if deep objects are changed,\n // this is in observables, which would have been tracked anyway\n var memoComponent;\n if (realOptions.forwardRef) // we have to use forwardRef here because:\n // 1. it cannot go before memo, only after it\n // 2. forwardRef converts the function into an actual component, so we can't let the baseComponent do it\n // since it wouldn't be a callable function anymore\n memoComponent = (0, $70fFQ.memo)((0, $70fFQ.forwardRef)(wrappedComponent));\n else memoComponent = (0, $70fFQ.memo)(wrappedComponent);\n $5e8bc020242a39a2$var$copyStaticProperties(baseComponent, memoComponent);\n memoComponent.displayName = baseComponentName;\n return memoComponent;\n}\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nvar $5e8bc020242a39a2$var$hoistBlackList = {\n $$typeof: true,\n render: true,\n compare: true,\n type: true\n};\nfunction $5e8bc020242a39a2$var$copyStaticProperties(base, target) {\n Object.keys(base).forEach(function(key) {\n if (!$5e8bc020242a39a2$var$hoistBlackList[key]) Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key));\n });\n}\n\n});\n\nparcelRegister(\"jKc8N\", function(module, exports) {\n\nvar $lBJ1n = parcelRequire(\"lBJ1n\");\nfunction $e5fbbb24f130934e$export$c1cbdee04e18ea8b(_a) {\n var children = _a.children, render = _a.render;\n var component = children || render;\n if (typeof component !== \"function\") return null;\n return (0, $lBJ1n.useObserver)(component);\n}\n$e5fbbb24f130934e$export$c1cbdee04e18ea8b.displayName = \"Observer\";\nfunction $e5fbbb24f130934e$var$ObserverPropsCheck(props, key, componentName, location, propFullName) {\n var extraKey = key === \"children\" ? \"render\" : \"children\";\n var hasProp = typeof props[key] === \"function\";\n var hasExtraProp = typeof props[extraKey] === \"function\";\n if (hasProp && hasExtraProp) return new Error(\"MobX Observer: Do not use children and render in the same time in`\" + componentName);\n if (hasProp || hasExtraProp) return null;\n return new Error(\"Invalid prop `\" + propFullName + \"` of type `\" + typeof props[key] + \"` supplied to\" + \" `\" + componentName + \"`, expected `function`.\");\n}\n\n});\n\nparcelRegister(\"e7tbY\", function(module, exports) {\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\nfunction $a4785d14001171d7$export$aa207039f277c5f(initializer, annotations) {\n return (0, $70fFQ.useState)(function() {\n return (0, $gOgWf.observable)(initializer(), annotations, {\n autoBind: true\n });\n })[0];\n}\n\n});\n\nparcelRegister(\"jTDtN\", function(module, exports) {\n\n$parcel$export(module.exports, \"useLocalStore\", function () { return $e7c1c72d61f13c66$export$f5b97ae82d1eeaf3; });\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\nparcelRequire(\"lk9T4\");\n\nvar $80RKL = parcelRequire(\"80RKL\");\nfunction $e7c1c72d61f13c66$export$f5b97ae82d1eeaf3(initializer, current) {\n var source = current && (0, $80RKL.useAsObservableSource)(current);\n return (0, $70fFQ.useState)(function() {\n return (0, $gOgWf.observable)(initializer(source), undefined, {\n autoBind: true\n });\n })[0];\n}\n\n});\nparcelRegister(\"80RKL\", function(module, exports) {\n\n$parcel$export(module.exports, \"useAsObservableSource\", function () { return $5d58051dac3adcd1$export$e0ded3646391939c; });\nparcelRequire(\"lk9T4\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\nvar $5d58051dac3adcd1$var$__read = undefined && undefined.__read || function(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while((n === void 0 || n-- > 0) && !(r = i.next()).done)ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally{\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally{\n if (e) throw e.error;\n }\n }\n return ar;\n};\nfunction $5d58051dac3adcd1$export$e0ded3646391939c(current) {\n var _a = $5d58051dac3adcd1$var$__read((0, $70fFQ.useState)(function() {\n return (0, $gOgWf.observable)(current, {}, {\n deep: false\n });\n }), 1), res = _a[0];\n (0, $gOgWf.runInAction)(function() {\n Object.assign(res, current);\n });\n return res;\n}\n\n});\n\n\n\nparcelRegister(\"iWaGk\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $dc95edeaac0bd010$export$2e2bcd8739ae039; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $3Bt14 = parcelRequire(\"3Bt14\");\nvar $dc95edeaac0bd010$export$2e2bcd8739ae039 = ()=>(0, $70fFQ.useContext)((0, $3Bt14.default));\n\n});\nparcelRegister(\"3Bt14\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $29fb55cf4217ea0e$export$2e2bcd8739ae039; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $a2DeL = parcelRequire(\"a2DeL\");\n\nvar $bccd0 = parcelRequire(\"bccd0\");\n\nvar $8ERvd = parcelRequire(\"8ERvd\");\n\nvar $PtNzY = parcelRequire(\"PtNzY\");\n\nvar $4WgAH = parcelRequire(\"4WgAH\");\n\nvar $a0rcO = parcelRequire(\"a0rcO\");\n\nvar $6OIJW = parcelRequire(\"6OIJW\");\n\nvar $brBQs = parcelRequire(\"brBQs\");\n\nvar $kH9gy = parcelRequire(\"kH9gy\");\n\nvar $7dntZ = parcelRequire(\"7dntZ\");\n\nvar $5KKaN = parcelRequire(\"5KKaN\");\n\nvar $4WMcN = parcelRequire(\"4WMcN\");\n\nvar $iuVwc = parcelRequire(\"iuVwc\");\n\nvar $gABF7 = parcelRequire(\"gABF7\");\n\nvar $gcPmB = parcelRequire(\"gcPmB\");\nvar $29fb55cf4217ea0e$export$2e2bcd8739ae039 = /*#__PURE__*/ (0, $70fFQ.createContext)({\n buildingStore: (0, $a2DeL.default),\n buildingDetailStore: (0, $bccd0.default),\n modalStore: (0, $8ERvd.default),\n projectStore: (0, $4WgAH.default),\n taskStore: (0, $a0rcO.default),\n uiStore: (0, $6OIJW.default),\n userStore: (0, $brBQs.default),\n createProjectStore: (0, $PtNzY.default),\n projectDetailStore: (0, $kH9gy.default),\n taskEditorStore: (0, $5KKaN.default),\n mapStore: (0, $gcPmB.default),\n editorStore: (0, $iuVwc.default),\n featureSettingsStore: (0, $gABF7.default),\n surveyStore: (0, $4WMcN.default),\n chatStore: (0, $7dntZ.default)\n});\n\n});\nparcelRegister(\"a2DeL\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $74f886f614e1467d$export$2e2bcd8739ae039; });\n\nvar $cr2GM = parcelRequire(\"cr2GM\");\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $fBBlk = parcelRequire(\"fBBlk\");\n\nvar $lxEiN = parcelRequire(\"lxEiN\");\n\nvar $4WgAH = parcelRequire(\"4WgAH\");\n\nvar $gcPmB = parcelRequire(\"gcPmB\");\n\nvar $ht0W2 = parcelRequire(\"ht0W2\");\nconst $74f886f614e1467d$var$parseFilters = (filters)=>{\n const q = {\n filters: {}\n };\n Object.keys(filters).forEach((filterName)=>{\n const filterValue = filters[filterName];\n if (filterValue === null || filterValue === \"\") return;\n if (filterName === \"geo_polygon\") {\n q.filters[filterName] = filterValue;\n return;\n }\n if (typeof filterValue === \"object\") {\n if (filterName.match(/^estimates_int/i)) {\n if (filterValue.start) q.filters[`${filterName}.low`] = {\n gte: filterValue.start\n };\n if (filterValue.end) q.filters[`${filterName}.high`] = {\n lte: filterValue.end\n };\n } else if (filterName.match(/^incentives/i)) q.filters[filterName] = filterValue;\n else if (filterName === \"radius\") q.filters.radius = filterValue;\n else if (filterName === \"sort\") q.sort = filterValue;\n else q.filters[filterName] = {\n gte: filterValue.start,\n lte: filterValue.end\n };\n } else if (![\n \"skip\",\n \"limit\",\n \"favourites\"\n ].includes(filterName)) q.filters[filterName] = filterValue;\n else q[filterName] = filterValue;\n });\n return q;\n};\nclass $74f886f614e1467d$var$Store {\n setResults(results) {\n this.resultMap = results;\n }\n updateBuildingName(buildingId, buildingName) {\n const building = this.resultMap.get(buildingId);\n const updatedBuilding = (0, $edHbI._)((0, $2QP2i._)({}, building), {\n building_name: buildingName\n });\n this.resultMap.set(buildingId, updatedBuilding);\n const newResults = new Map(this.resultMap);\n newResults.set(buildingId, updatedBuilding);\n this.resultMap = newResults;\n }\n clearPicked() {\n this.pickedResults = new Set();\n }\n pickResult(id) {\n console.log(\"pick: pickResult\", id);\n this.pickedResults.add(id);\n }\n unPickResult(id) {\n this.pickedResults.delete(id);\n }\n getFilterValue(name) {\n return this.filters[name] || null;\n }\n get filtersCount() {\n return (0, $gOgWf.keys)(this.filters).length;\n }\n get params() {\n return $74f886f614e1467d$var$parseFilters(this.filters);\n }\n clearAllFilters() {\n this.filters = {};\n }\n constructor(){\n (0, $cr2GM._)(this, \"buildings\", new Map());\n (0, $cr2GM._)(this, \"activeProject\", null);\n (0, $cr2GM._)(this, \"aggregations\", null);\n (0, $cr2GM._)(this, \"emissions\", null);\n (0, $cr2GM._)(this, \"financials\", null);\n (0, $cr2GM._)(this, \"filters\", {});\n (0, $cr2GM._)(this, \"projectId\", null);\n (0, $cr2GM._)(this, \"sort\", \"\");\n (0, $cr2GM._)(this, \"pickedResults\", new Set());\n (0, $cr2GM._)(this, \"savedSearches\", []);\n (0, $cr2GM._)(this, \"totalResults\", {\n value: 0,\n relation: \"gte\"\n });\n (0, $cr2GM._)(this, \"hexagons\", []);\n (0, $cr2GM._)(this, \"points\", []);\n (0, $cr2GM._)(this, \"bbox\", null);\n (0, $cr2GM._)(this, \"location\", null);\n (0, $cr2GM._)(this, \"resultMap\", new Map());\n (0, $cr2GM._)(this, \"loadResult\", async (ids)=>{\n if (!ids.length) return;\n // Set state to loading\n ids.forEach((id)=>{\n this.resultMap.set(id, 1);\n });\n const { data: data } = await (0, $lxEiN.default).Building.getBuildingsById(ids);\n data.data.forEach((item)=>{\n this.resultMap.set(item.id, item);\n });\n return data;\n });\n (0, $cr2GM._)(this, \"debounceLoadResult\", (0, $fBBlk.debounce)(this.loadResult, 500));\n (0, $cr2GM._)(this, \"get\", (id)=>{\n return this.resultMap.get(id);\n });\n (0, $cr2GM._)(this, \"pickAllResults\", ()=>{\n this.pickedResults = new Set([\n ...this.resultMap.keys()\n ]);\n });\n (0, $cr2GM._)(this, \"createProjectFromPicked\", async (params)=>{\n const pickedResults = [\n ...this.pickedResults\n ];\n if (!pickedResults.size) return;\n this.clearPicked();\n const project = await (0, $4WgAH.default).createProject((0, $edHbI._)((0, $2QP2i._)({}, params), {\n pickedResults: pickedResults\n }));\n (0, $4WgAH.default).fetchAll();\n return project;\n });\n (0, $cr2GM._)(this, \"setSort\", (value)=>{\n const selected = this.sort && this.sort.includes(value);\n if (selected && this.sort.includes(\"desc\")) this.sort = `${value}:asc`;\n else this.sort = `${value}:desc`;\n return this.sort;\n });\n (0, $cr2GM._)(this, \"setFilter\", (name, value)=>{\n const newFilters = (0, $2QP2i._)({}, this.filters);\n if (value === null) delete newFilters[name];\n else newFilters[name] = value;\n this.filters = newFilters;\n });\n (0, $cr2GM._)(this, \"clearFilters\", ()=>{\n this.filters = {};\n this.sort = \"\";\n });\n (0, $cr2GM._)(this, \"fetchBuilding\", async (id)=>{\n const { data: data } = await (0, $lxEiN.default).Building.getBuildingsById([\n id\n ], 1);\n return data.data[0];\n });\n (0, $cr2GM._)(this, \"setFilters\", (newFilters)=>{\n this.filters = newFilters;\n });\n (0, $cr2GM._)(this, \"restoreFilters\", async (savedSearchId)=>{\n var _response_data_data, _response_data;\n const response = await (0, $lxEiN.default).SavedSearchFilters.get(savedSearchId);\n this.setFilters((_response_data = response.data) === null || _response_data === void 0 ? void 0 : (_response_data_data = _response_data.data) === null || _response_data_data === void 0 ? void 0 : _response_data_data.query);\n });\n (0, $cr2GM._)(this, \"saveFilters\", async (name, projectId)=>{\n const response = await (0, $lxEiN.default).SavedSearchFilters.create(name, this.filters, projectId);\n const newSavedSearches = [\n ...this.savedSearches,\n response.data.data\n ];\n this.savedSearches = newSavedSearches;\n });\n (0, $cr2GM._)(this, \"deleteSavedSearch\", async (savedSearchId)=>{\n const newSavedSearches = [\n ...this.savedSearches\n ].filter((savedSearch)=>savedSearch.id !== savedSearchId);\n this.savedSearches = newSavedSearches;\n (0, $lxEiN.default).SavedSearchFilters.delete(savedSearchId);\n });\n (0, $cr2GM._)(this, \"getSavedSearches\", async (projectId)=>{\n const response = await (0, $lxEiN.default).SavedSearchFilters.getAll({\n projectId: projectId\n });\n this.savedSearches = response.data.data;\n });\n (0, $cr2GM._)(this, \"fetch\", async ()=>{\n var _data_hexagons;\n this.results = [];\n this.points = [];\n // Fill results with loading results for visual feedback\n const arr = [\n ...new Array(10)\n ].map((item, index)=>{\n return [\n index,\n 0\n ];\n });\n this.resultMap = new Map(arr);\n const params = $74f886f614e1467d$var$parseFilters(this.filters);\n if (this.sort) params.sort = this.sort;\n params.version = \"v2\";\n const { data: data } = await (0, $lxEiN.default).Building.getBuildings(params);\n const map = data.data.reduce((acc, result)=>{\n acc[result.id] = result;\n return acc;\n }, {});\n if (data.ids) {\n const arr = data.ids.map((value)=>{\n const [id] = value;\n if (map[id]) return [\n id,\n map[id]\n ];\n return [\n id,\n 0\n ];\n });\n this.resultMap = new Map(arr);\n }\n this.location = data.location || null;\n if ((_data_hexagons = data.hexagons) === null || _data_hexagons === void 0 ? void 0 : _data_hexagons.length) this.hexagons = data.hexagons;\n else this.hexagons = [];\n // Don't change the order since observers depend on it\n this.bbox = data.bbox;\n if (!this.filters.geo_polygon) (0, $gcPmB.default).setBounds(data.bbox);\n if (this.filters.project_id) this.projectId = this.filters.project_id;\n this.points = data.ids;\n this.financials = data.financials;\n this.emissions = data.emissions;\n this.totalResults = data.total;\n this.aggregations = data.aggregations;\n });\n (0, $cr2GM._)(this, \"loadBuilding\", async (buildingId)=>{\n const { data: data } = await (0, $lxEiN.default).Building.getBuilding(buildingId);\n if (data.data) {\n const formattedData = (0, $ht0W2.formatBuildingData)(data.data);\n const building = (0, $edHbI._)((0, $2QP2i._)({}, formattedData), {\n formatted_details: data.data.formatted_details,\n details: (0, $ht0W2.formatBuildingDetails)(data.data)\n });\n // console.log('BUILDING', formattedData, data.data);\n this.buildings.set(data.data.id, building);\n return building;\n }\n return null;\n });\n (0, $cr2GM._)(this, \"getWeather\", async (buildingId, lon, lat)=>{\n const { data: data } = await (0, $lxEiN.default).Building.getWeather(lon, lat);\n if (data === null || data === void 0 ? void 0 : data.data) {\n const weather = data.data.wind_speed_temp.reduce((acc, item)=>{\n acc.weather_timestamp.push(item[0] * 1000);\n acc.wind_speed.push(item[1]);\n acc.temperature.push(item[2]);\n return acc;\n }, {\n weather_timestamp: [],\n wind_speed: [],\n temperature: []\n });\n const building = this.buildings.get(buildingId);\n this.buildings.set(buildingId, (0, $2QP2i._)({}, building, weather));\n }\n });\n (0, $cr2GM._)(this, \"getPowerOptions\", async (buildingId, lon, lat)=>{\n const { data: data } = await (0, $lxEiN.default).Building.getPowerOptions(lon, lat);\n if (data === null || data === void 0 ? void 0 : data.data) {\n const { power_line_closest_point: power_line_closest_point, power_line_geometry: power_line_geometry, power_line_id: power_line_id, power_plant_geometry: power_plant_geometry } = data.data;\n const building = this.buildings.get(buildingId);\n this.buildings.set(buildingId, (0, $edHbI._)((0, $2QP2i._)({}, building), {\n details: (0, $2QP2i._)({}, building.details, (0, $ht0W2.formatBuildingPower)(data.data)),\n closest_power_plant: true,\n power_line: {\n power_line_closest_point: power_line_closest_point,\n power_line_geometry: power_line_geometry,\n power_line_id: power_line_id,\n power_plant_geometry: power_plant_geometry\n }\n }));\n }\n });\n (0, $cr2GM._)(this, \"getPlaces\", async (buildingId, lon, lat)=>{\n const { data: data } = await (0, $lxEiN.default).Building.getPlaces(lon, lat);\n if (data === null || data === void 0 ? void 0 : data.data) {\n const building = this.buildings.get(buildingId);\n this.buildings.set(buildingId, (0, $edHbI._)((0, $2QP2i._)({}, building), {\n places: data.data\n }));\n }\n });\n (0, $gOgWf.makeObservable)(this, {\n projectId: (0, $gOgWf.observable),\n buildings: (0, $gOgWf.observable),\n activeProject: (0, $gOgWf.observable),\n aggregations: (0, $gOgWf.observable),\n filters: (0, $gOgWf.observable),\n financials: (0, $gOgWf.observable),\n emissions: (0, $gOgWf.observable),\n sort: (0, $gOgWf.observable),\n pickedResults: (0, $gOgWf.observable),\n savedSearches: (0, $gOgWf.observable),\n totalResults: (0, $gOgWf.observable),\n hexagons: (0, $gOgWf.observable),\n points: (0, $gOgWf.observable),\n bbox: (0, $gOgWf.observable),\n location: (0, $gOgWf.observable),\n resultMap: (0, $gOgWf.observable),\n loadResult: (0, $gOgWf.action),\n debounceLoadResult: (0, $gOgWf.action),\n get: (0, $gOgWf.action),\n pickAllResults: (0, $gOgWf.action),\n createProjectFromPicked: (0, $gOgWf.action),\n setSort: (0, $gOgWf.action),\n clearPicked: (0, $gOgWf.action),\n pickResult: (0, $gOgWf.action),\n unPickResult: (0, $gOgWf.action),\n setFilter: (0, $gOgWf.action),\n clearFilters: (0, $gOgWf.action),\n getFilterValue: (0, $gOgWf.action),\n filtersCount: (0, $gOgWf.computed),\n fetchBuilding: (0, $gOgWf.action),\n clearAllFilters: (0, $gOgWf.action),\n setFilters: (0, $gOgWf.action),\n restoreFilters: (0, $gOgWf.action),\n saveFilters: (0, $gOgWf.action),\n deleteSavedSearch: (0, $gOgWf.action),\n getSavedSearches: (0, $gOgWf.action),\n fetch: (0, $gOgWf.action),\n loadBuilding: (0, $gOgWf.action),\n getWeather: (0, $gOgWf.action),\n getPlaces: (0, $gOgWf.action),\n getPowerOptions: (0, $gOgWf.action),\n params: (0, $gOgWf.computed),\n updateBuildingName: (0, $gOgWf.action)\n });\n }\n}\nconst $74f886f614e1467d$var$store = new $74f886f614e1467d$var$Store();\n(0, $gOgWf.reaction)(()=>JSON.stringify([\n $74f886f614e1467d$var$store.filters\n ]), (0, $fBBlk.debounce)(()=>{\n if ((Object.keys($74f886f614e1467d$var$store.filters).includes(\"addresses\") && $74f886f614e1467d$var$store.filters.addresses.length) === 0 && Object.keys($74f886f614e1467d$var$store.filters).length === 1) return;\n $74f886f614e1467d$var$store.fetch();\n}, 350));\nvar $74f886f614e1467d$export$2e2bcd8739ae039 = $74f886f614e1467d$var$store;\n\n});\nparcelRegister(\"cr2GM\", function(module, exports) {\n\n$parcel$export(module.exports, \"_define_property\", function () { return $90da17a50fd8adb7$export$1e71eb4bef00f6b0; });\n$parcel$export(module.exports, \"_\", function () { return $90da17a50fd8adb7$export$1e71eb4bef00f6b0; });\nfunction $90da17a50fd8adb7$export$1e71eb4bef00f6b0(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\n\n});\n\nparcelRegister(\"2QP2i\", function(module, exports) {\n\n$parcel$export(module.exports, \"_\", function () { return $213806c615f8d849$export$581ff339ea0ba762; });\n\nvar $cr2GM = parcelRequire(\"cr2GM\");\nfunction $213806c615f8d849$export$581ff339ea0ba762(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n ownKeys.forEach(function(key) {\n (0, $cr2GM._define_property)(target, key, source[key]);\n });\n }\n return target;\n}\n\n});\n\nparcelRegister(\"edHbI\", function(module, exports) {\n\n$parcel$export(module.exports, \"_\", function () { return $02abee93fb4af183$export$4fa2f4023c9cbda5; });\nfunction $02abee93fb4af183$var$ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction $02abee93fb4af183$export$4fa2f4023c9cbda5(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n else $02abee93fb4af183$var$ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n return target;\n}\n\n});\n\nparcelRegister(\"fBBlk\", function(module, exports) {\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */ function $b5c7473cf3da35ca$var$debounce(func, wait, immediate) {\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n function later() {\n var last = Date.now() - timestamp;\n if (last < wait && last >= 0) timeout = setTimeout(later, wait - last);\n else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n }\n var debounced = function() {\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n return result;\n };\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n clearTimeout(timeout);\n timeout = null;\n }\n };\n return debounced;\n}\n// Adds compatibility for ES modules\n$b5c7473cf3da35ca$var$debounce.debounce = $b5c7473cf3da35ca$var$debounce;\nmodule.exports = $b5c7473cf3da35ca$var$debounce;\n\n});\n\nparcelRegister(\"lxEiN\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $faebf13b597c0117$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $96kno = parcelRequire(\"96kno\");\n\nvar $hqhdr = parcelRequire(\"hqhdr\");\n\nvar $3U8SM = parcelRequire(\"3U8SM\");\n\nvar $lUBOG = parcelRequire(\"lUBOG\");\nconst $faebf13b597c0117$var$instance = (0, (/*@__PURE__*/$parcel$interopDefault($96kno))).create({\n baseURL: (0, $lUBOG.default).PROSPECTING_API_URL,\n timeout: 30000,\n withCredentials: true,\n paramsSerializer: (params)=>(0, (/*@__PURE__*/$parcel$interopDefault($hqhdr))).stringify(params, {\n skipNulls: true\n })\n});\nconst $faebf13b597c0117$var$upload = (url, filesLike, onProgress)=>{\n let formData = null;\n if (Array.isArray(filesLike)) {\n formData = new FormData();\n filesLike.forEach((file)=>formData.append(\"file[]\", file));\n }\n if (filesLike instanceof FormData) formData = filesLike;\n if (!formData) throw new Error(`Files must be either FormData or array`);\n return (0, $3U8SM.default).post(url, formData, {\n timeout: Infinity,\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n },\n onUploadProgress: (event)=>{\n const percentage = event.loaded / event.total * 100;\n return onProgress(percentage, event);\n }\n });\n};\nconst $faebf13b597c0117$var$Dataset = {\n getFeature: (datasetId, featureId)=>(0, $3U8SM.default).get(`/datasets/${datasetId}/feature/${featureId}`, {\n timeout: 100000\n }),\n getDataset: (datasetId)=>(0, $3U8SM.default).get(`/datasets/${datasetId}`),\n getFeatures: (datasetId, layerId)=>(0, $3U8SM.default).get(`/datasets/${datasetId}/features`, {\n params: {\n layer_id: layerId\n }\n }),\n getLayers: (datasetId)=>(0, $3U8SM.default).get(`/datasets/${datasetId}/layers`),\n createLayer: (datasetId, data)=>(0, $3U8SM.default).post(`/datasets/${datasetId}/layer`, data),\n updateLayer: (datasetId, layerId, params)=>(0, $3U8SM.default).patch(`/datasets/${datasetId}/layer/${layerId}`, params),\n updateFeature: (datasetId, feature)=>(0, $3U8SM.default).patch(`/datasets/${datasetId}/${feature.id}`, feature),\n get: (groupId)=>(0, $3U8SM.default).get(`/datasets`, {\n params: {\n group_id: groupId\n }\n }),\n getLayer: (datasetId, layerId)=>(0, $3U8SM.default).get(`/datasets/${datasetId}/layer/${layerId}`),\n createFeature: (datasetId, feature)=>(0, $3U8SM.default).post(`/datasets/${datasetId}/${feature.id}`, feature),\n updateFeatureProperties: (datasetId, featureId, properties)=>(0, $3U8SM.default).post(`/datasets/${datasetId}/${featureId}/properties`, properties),\n deleteFeature: (datasetId, featureId)=>(0, $3U8SM.default).delete(`/datasets/${datasetId}/${featureId}`),\n createDataset: (data)=>(0, $3U8SM.default).put(\"/datasets\", data),\n updateDataset: (datasetId, params)=>(0, $3U8SM.default).patch(`/datasets/${datasetId}`, params),\n deleteDataset: (datasetId)=>(0, $3U8SM.default).delete(`/datasets/${datasetId}`),\n deleteLayer: (datasetId, layerId)=>(0, $3U8SM.default).delete(`/datasets/${datasetId}/layer/${layerId}`),\n upload: (formData, params)=>(0, $3U8SM.default).post(\"datasets/upload\", formData, params),\n uploadDataset: (files, { name: name, description: description, projectId: projectId, onUploadProgress: onUploadProgress })=>{\n const formData = new FormData();\n formData.append(\"name\", name);\n formData.append(\"description\", description);\n formData.append(\"projectId\", projectId);\n files.forEach((file)=>{\n formData.append(\"file\", file);\n });\n return (0, $3U8SM.default).post(\"datasets/upload\", formData, {\n timeout: Infinity,\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n \"Cache-Control\": \"no-cache, no-store\"\n },\n onUploadProgress: onUploadProgress\n });\n },\n removeDatasetProject: (datasetId, projectId)=>(0, $3U8SM.default).delete(`/datasets/${datasetId}/project/${projectId}`),\n addDatasetProject: (datasetId, projectId)=>(0, $3U8SM.default).get(`/datasets/${datasetId}/project/${projectId}`),\n search: (term, groupId)=>(0, $3U8SM.default).get(\"datasets/search\", {\n params: {\n term: term,\n group_id: groupId\n }\n })\n};\nconst $faebf13b597c0117$var$Building = {\n runOptimization: (buildingId, params)=>(0, $3U8SM.default).post(`/api/building/${buildingId}/optimization`, params),\n addFiles: (buildingId, fileIds)=>(0, $3U8SM.default).patch(`/building/${buildingId}/files/${fileIds.join(\";\")}`),\n getBuildings: (params)=>$faebf13b597c0117$var$instance.post(\"/building\", (0, $2QP2i._)({}, params)),\n getBuildingsById: (ids, limit = 30)=>$faebf13b597c0117$var$instance.get(\"/building\", {\n params: {\n ids: ids,\n limit: limit\n }\n }),\n getBuilding: (buildingId, projectId)=>$faebf13b597c0117$var$instance.get(`/building/${buildingId}`, projectId ? {\n project_id: projectId\n } : {}),\n getPlaces: (lon, lat)=>$faebf13b597c0117$var$instance.get(`/places`, {\n params: {\n lon: lon,\n lat: lat\n }\n }),\n getPowerOptions: (lon, lat)=>$faebf13b597c0117$var$instance.get(`/powerline`, {\n params: {\n lon: lon,\n lat: lat\n }\n }),\n getWeather: (lon, lat)=>$faebf13b597c0117$var$instance.get(`/weather`, {\n params: {\n lon: lon,\n lat: lat\n }\n }),\n getPredictions: (buildingId)=>$faebf13b597c0117$var$instance.get(`/building/${buildingId}/predictions?period=7D`),\n getHoverInfo: (longitude, latitude)=>(0, $3U8SM.default).get(`/points/hoverinfo`, {\n params: {\n longitude: longitude,\n latitude: latitude\n }\n })\n};\nconst $faebf13b597c0117$var$Project = {\n getProject: (projectId)=>(0, $3U8SM.default).get(`/project/${projectId}`),\n getProjectTerms: (projectId)=>(0, $3U8SM.default).get(`/project/${projectId}/terms`),\n getStatus: (projectId)=>(0, $3U8SM.default).get(`/project/${projectId}/status`),\n createProjectProposal: (projectId, files, questions, signature)=>(0, $3U8SM.default).post(`/project/${projectId}/proposals`, {\n files: files,\n questions: questions,\n signature: signature\n }),\n getProjectPredictions: (projectId)=>(0, $3U8SM.default).get(`/project/${projectId}/predictions?period=7D`),\n getProjectBuildingPredictions: (projectId, buildingId)=>(0, $3U8SM.default).get(`/project/${projectId}/building/${buildingId}/predictions?period=7D`),\n getProjectFinancials: (projectId)=>(0, $3U8SM.default).get(`/project/${projectId}/financials`),\n getProjectRFPQuestions: (projectId)=>(0, $3U8SM.default).get(`/project/${projectId}/rfp_questions`),\n setProjectRFPQuestions: (projectId, questions)=>(0, $3U8SM.default).patch(`/project/${projectId}/rfp_questions`, questions),\n createProjectRFPQuestion: (projectId, data)=>(0, $3U8SM.default).post(`/project/${projectId}/rfp_question`, data),\n deleteProjectRFPQuestion: (projectId, questionId)=>(0, $3U8SM.default).delete(`/project/${projectId}/rfp_question/${questionId}`),\n updateProjectRFPQuestion: (projectId, questionId, data)=>(0, $3U8SM.default).patch(`/project/${projectId}/rfp_question/${questionId}`, data),\n updateProjectTerms: (projectId, termsId, data)=>(0, $3U8SM.default).patch(`/project/${projectId}/terms/${termsId}`, data),\n createProjectTerms: (projectId, terms)=>(0, $3U8SM.default).post(`/project/${projectId}/terms`, terms),\n deleteProjectTerms: (projectId, termsId)=>(0, $3U8SM.default).delete(`/project/${projectId}/terms/${termsId}`),\n getProjectTermsById: (projectId, termsId)=>(0, $3U8SM.default).get(`/project/${projectId}/terms/${termsId}`),\n hasAccess: (projectId)=>(0, $3U8SM.default).get(`/project/${projectId}/has_access`),\n updateProject: (projectId, data)=>(0, $3U8SM.default).patch(`/project/${projectId}`, data),\n getProjects: ()=>(0, $3U8SM.default).get(`/project`),\n deleteProject: (projectId)=>(0, $3U8SM.default).delete(`/project/${projectId}`),\n getProjectBuilding: (projectId, buildingId)=>(0, $3U8SM.default).get(`/project/${projectId}/building/${buildingId}`),\n getProjectFeature: (projectId, featureId)=>(0, $3U8SM.default).get(`/project/${projectId}/feature/${featureId}`),\n refreshProjectFinancials: (projectId)=>(0, $3U8SM.default).get(`/project/${projectId}/financials/refresh`),\n updateProjectBuilding: (projectId, buildingId, buildingData)=>(0, $3U8SM.default).post(`/project/${projectId}/building/${buildingId}`, buildingData),\n getBuildingAnalyticsSettings: (projectId, buildingId)=>(0, $3U8SM.default).get(`/project/${projectId}/building/${buildingId}/analytics_settings`),\n getProjectVendors: (projectId)=>(0, $3U8SM.default).get(`/project/${projectId}/vendors`),\n getProjectBuildings: (projectId)=>(0, $3U8SM.default).get(`/project/${projectId}/buildings`),\n getProjectLayers: (projectId)=>(0, $3U8SM.default).get(`/project/${projectId}/layers`),\n getBuildingFinancials: (projectId, buildingId)=>(0, $3U8SM.default).get(`/project/${projectId}/building/${buildingId}/financials`),\n updateBuildingSettings: (projectId, buildingId, settings)=>(0, $3U8SM.default).patch(`/project/${projectId}/building/${buildingId}/settings`, settings),\n createBuilding: (projectId, buildingData)=>(0, $3U8SM.default).post(`/project/${projectId}/add`, buildingData),\n addBuilding: (projectId, buildingIds)=>(0, $3U8SM.default).post(`/project/${projectId}/add`, buildingIds),\n addBuildingByImportId: (projectId, importId)=>(0, $3U8SM.default).post(`/project/${projectId}/add`, {\n import_id: importId\n }),\n createProjectByImportId: (importId, projectName = \"Imported Project\")=>(0, $3U8SM.default).post(\"/project\", {\n name: projectName,\n importId: importId\n }),\n removeBuilding: (projectId, buildingIds)=>(0, $3U8SM.default).post(`/project/${projectId}/remove`, buildingIds),\n createProject: (params)=>(0, $3U8SM.default).post(\"/project\", params),\n updateProjectBuildingGeometry: (projectId, buildingId, geometry)=>(0, $3U8SM.default).post(`/project/${projectId}/building/${buildingId}/geometry`, geometry),\n acceptInfoMessage: (projectId)=>(0, $3U8SM.default).post(`/project/${projectId}/accept_infomessage`),\n setProjectSettings: (projectId, settingsData)=>(0, $3U8SM.default).patch(`/project/${projectId}/settings`, settingsData),\n getSystems: (projectId)=>(0, $3U8SM.default).get(\"/crawler/system\", {\n params: {\n project_id: projectId\n }\n }),\n getSystemData: (systemId, timeWindow, time)=>(0, $3U8SM.default).get(`/crawler/system/${systemId}/data`, {\n params: {\n timeWindow: timeWindow,\n time: time\n }\n }),\n getFiles: (projectId, fileIds = [])=>(0, $3U8SM.default).get(`/project/${projectId}/files/${fileIds.join(\";\")}`),\n deleteFiles: (projectId, fileIds)=>(0, $3U8SM.default).delete(`/project/${projectId}/files/${fileIds.join(\";\")}`),\n addFiles: (projectId, fileIds)=>(0, $3U8SM.default).patch(`/project/${projectId}/files/${fileIds.join(\";\")}`),\n getProposal: (projectId, proposalId)=>(0, $3U8SM.default).get(`/project/${projectId}/proposals/${proposalId}`),\n deleteProposal: (projectId, proposalId)=>(0, $3U8SM.default).delete(`/project/${projectId}/proposals/${proposalId}`),\n getProposals: (projectId)=>(0, $3U8SM.default).get(`/project/${projectId}/proposals`),\n addProposals: (projectId, fileIds)=>(0, $3U8SM.default).patch(`/project/${projectId}/proposals/${fileIds.join(\";\")}`),\n addVendors: (projectId, vendorIds)=>(0, $3U8SM.default).post(`/project/${projectId}/share`, vendorIds),\n addMembers: (projectId, memberIds)=>(0, $3U8SM.default).put(`/project/${projectId}/members`, memberIds),\n getChat: (projectId)=>(0, $3U8SM.default).get(`/project/${projectId}/chat`),\n updateChat: (projectId, chatData)=>(0, $3U8SM.default).post(`/project/${projectId}/chat`, {\n chat: chatData\n }),\n uploadBuildingLoadProfile: (projectId, buildingId, files, onProgressCallback)=>{\n const url = `/project/${projectId}/building/${buildingId}/load_profile`;\n return $faebf13b597c0117$var$upload(url, files, onProgressCallback);\n },\n uploadBuildingRate: (projectId, buildingId, files, onProgressCallback)=>{\n const url = `/project/${projectId}/building/${buildingId}/rate`;\n return $faebf13b597c0117$var$upload(url, files, onProgressCallback);\n },\n deleteBuildingLoadProfile: (projectId, buildingId)=>(0, $3U8SM.default).delete(`/project/${projectId}/building/${buildingId}/load_profile`),\n getVendorSuggestions: (projectId, q)=>(0, $3U8SM.default).get(`/project/${projectId}/vendor_suggestions`, {\n params: {\n q: q\n }\n }),\n addVendor: (projectId, groupIdLike)=>(0, $3U8SM.default).post(`/project/${projectId}/invite_vendor`, {\n id: groupIdLike\n }),\n removeVendor: (projectId, groupId)=>(0, $3U8SM.default).delete(`/project/${projectId}/remove_vendor`, {\n params: {\n group_id: groupId\n }\n }),\n uploadBuildingCSV: (projectId, files, onProgressCallback)=>{\n const url = `/importer-service/upload`;\n return $faebf13b597c0117$var$upload(url, files, onProgressCallback);\n },\n checkForImport: (importId, importItemIndex)=>{\n const url = `/importer-service/import/${importId}/check`;\n return (0, $3U8SM.default).get(url, {\n params: {\n index: importItemIndex\n }\n });\n },\n uncheckForImport: (importId, importItemIndex)=>{\n const url = `/importer-service/import/${importId}/uncheck`;\n // console.log();\n return (0, $3U8SM.default).get(url, {\n params: {\n index: importItemIndex\n }\n });\n },\n getImportStatus: (importId)=>{\n const url = `/importer-service/status/${importId}`;\n return (0, $3U8SM.default).get(url);\n }\n};\nconst $faebf13b597c0117$var$Group = {\n getSettings: (groupId)=>(0, $3U8SM.default).get(`/group/${groupId}/settings`),\n update: (groupId, data)=>(0, $3U8SM.default).patch(`/group/${groupId}`, data),\n setSettings: (groupId, data)=>(0, $3U8SM.default).post(`/group/${groupId}/settings`, data),\n delete: (groupId)=>(0, $3U8SM.default).delete(`/group/${groupId}`),\n search: (query)=>(0, $3U8SM.default).get(`/group/search`, {\n params: {\n query: query\n }\n })\n};\nconst $faebf13b597c0117$var$User = {\n validateResetToken: (token)=>(0, $3U8SM.default).get(`/reset/check/${token}`),\n validateUserActivationToken: (token)=>(0, $3U8SM.default).get(`/activate/${token}`),\n getGroups: ()=>(0, $3U8SM.default).get(`/user/groups`),\n sendPasswordResetEmail: (email)=>(0, $3U8SM.default).get(`/reset`, {\n params: {\n email: email\n }\n }),\n signup: (data)=>(0, $3U8SM.default).post(`/signup`, data),\n skipOnboarding: ()=>(0, $3U8SM.default).post(`/user/onboarding/skip`),\n logout: ()=>(0, $3U8SM.default).get(`/logout`),\n sendFeedback: (formData)=>(0, $3U8SM.default).post(`/user/feedback`, formData),\n onboardingComplete: ()=>(0, $3U8SM.default).post(`/user/onboarding/complete`),\n createSignupProject: (data)=>(0, $3U8SM.default).post(`/signup/project`, data),\n updateUserInfo: (id, data)=>(0, $3U8SM.default).put(`/user/${id}`, data),\n getUserAvatar: (id)=>(0, $3U8SM.default).get(`/user/${id}/avatar`),\n submitOnboardingAnswer: (question, answer, userId)=>(0, $3U8SM.default).post(`/user/onboarding/answer`, {\n user_id: userId,\n question: question,\n answer: answer\n }),\n resetPassword: (send_email, user_id)=>(0, $3U8SM.default).post(`/reset_password`, send_email, user_id)\n};\nconst $faebf13b597c0117$var$Admin = {\n sendResetPassword: (send_email, user_id)=>(0, $3U8SM.default).post(`/admin/user/reset_password`, send_email, user_id),\n sendMagicLink: (userId)=>(0, $3U8SM.default).post(`/admin/user/magic_link`, {\n user_id: userId\n })\n};\nconst $faebf13b597c0117$var$Task = {\n get: (id)=>(0, $3U8SM.default).get(`/task/${id}`),\n create: (params)=>(0, $3U8SM.default).post(\"/task\", params),\n update: (id, params)=>(0, $3U8SM.default).patch(`/task/${id}`, params),\n delete: (id)=>(0, $3U8SM.default).delete(`/task/${id}`),\n getProjectTasks: (projectId, buildingId)=>buildingId ? (0, $3U8SM.default).get(`/project/${projectId}/building/${buildingId}/tasks`) : (0, $3U8SM.default).get(`/project/${projectId}/tasks`)\n};\nconst $faebf13b597c0117$var$Data = {\n getDataset: (name)=>(0, $3U8SM.default).get(`/data/${name}`),\n getCountries: ()=>(0, $3U8SM.default).get(`/data/countries`),\n getISOTerritories: (term)=>(0, $3U8SM.default).get(`/data/iso_territories`, {\n params: {\n term: term\n }\n }),\n getUtilityTerritories: (term)=>(0, $3U8SM.default).get(`/data/utility_territories`, {\n params: {\n term: term\n }\n })\n};\nconst $faebf13b597c0117$var$SavedSearchFilters = {\n get: (id)=>(0, $3U8SM.default).get(`/user/search/${id}`),\n getAll: ({ projectId: projectId })=>(0, $3U8SM.default).get(`/user/search`, {\n params: {\n project_id: projectId\n }\n }),\n create: (name, data, projectId)=>(0, $3U8SM.default).post(`/user/search`, {\n name: name,\n data: data,\n project_id: projectId\n }),\n delete: (id)=>(0, $3U8SM.default).delete(`/user/search/${id}`)\n};\nconst $faebf13b597c0117$var$Log = {\n get: (groupId, projectId)=>(0, $3U8SM.default).get(`/log`, {\n params: {\n group_id: groupId,\n project_id: projectId\n }\n }),\n getCSV: (groupId)=>(0, $3U8SM.default).get(`/log/csv`, {\n params: {\n group_id: groupId\n }\n }),\n getItem: (id)=>(0, $3U8SM.default).get(`/log/${id}`)\n};\nconst $faebf13b597c0117$var$Survey = {\n addSurvey: (projectId, data)=>(0, $3U8SM.default).post(`/project/${projectId}/survey`, data),\n getSteps: (projectId, buildingId)=>(0, $3U8SM.default).get(`/project/${projectId}/building/${buildingId}/survey`),\n submitAnswer: (projectId, buildingId, stepId, value)=>(0, $3U8SM.default).post(`/project/${projectId}/building/${buildingId}/survey/step/${stepId}`, {\n value: value\n }),\n utilityDetails: (projectId, buildingId)=>(0, $3U8SM.default).post(`/project/${projectId}/building/${buildingId}/survey/utilitydetails`),\n setFinished: (projectId, buildingId)=>(0, $3U8SM.default).post(`/project/${projectId}/building/${buildingId}/survey/complete`),\n addCategory: (data = {\n label: \"\",\n order: 1,\n description: \"\"\n })=>(0, $3U8SM.default).post(`/admin/survey/category`, data),\n deleteCategory: (categoryId)=>(0, $3U8SM.default).delete(`/admin/survey/category/${categoryId}`),\n addStep: (data = {\n id: \"\",\n label: \"\",\n order: 1,\n inputType: \"text\",\n buildingId: \"\",\n description: \"\"\n })=>(0, $3U8SM.default).post(`/admin/survey/step`, data),\n deleteStep: (stepId)=>(0, $3U8SM.default).delete(`/admin/survey/step/${stepId}`)\n};\nconst $faebf13b597c0117$var$Workspace = {\n createFolder: (folderId, folderName)=>(0, $3U8SM.default).post(`/workspaces/folders/${folderId}`, {\n name: folderName\n }),\n move: (pathId, newParentId)=>(0, $3U8SM.default).patch(`/workspaces/files/${pathId}`, {\n parentId: newParentId\n }),\n delete: (itemIds)=>(0, $3U8SM.default).delete(`/workspaces/folders`, {\n data: {\n ids: itemIds\n }\n }),\n renameFolder: (folderId, newName)=>(0, $3U8SM.default).patch(`/workspaces/folders/${folderId}`, {\n name: newName\n }),\n getArchiveUrl: (parentId, fileIds)=>{\n return (0, $3U8SM.default).get(`/workspaces/folders/${parentId}/download`, {\n params: {\n file_ids: fileIds.join(\";\")\n }\n });\n },\n createFile: (parentId, formData, params)=>(0, $3U8SM.default).post(`/workspaces/${parentId}/files`, formData, params),\n getFile: (fileId)=>(0, $3U8SM.default).get(`/workspaces/files/${fileId}`),\n get: (id, sortKey)=>(0, $3U8SM.default).get(`/workspaces/folders/${id}`, {\n params: {\n sort: sortKey\n }\n }),\n upload: (parentId, filesLike, onProgress)=>{\n let formData = null;\n if (Array.isArray(filesLike)) {\n formData = new FormData();\n filesLike.forEach((file)=>formData.append(\"file[]\", file));\n }\n if (filesLike instanceof FormData) formData = filesLike;\n if (!formData) throw new Error(`Files must be either FormData or array`);\n return (0, $3U8SM.default).post(`/workspaces/${parentId}/files`, formData, {\n timeout: Infinity,\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n },\n onUploadProgress: (event)=>{\n const percentage = event.loaded / event.total * 100;\n return onProgress(percentage, event);\n }\n });\n }\n};\nconst $faebf13b597c0117$var$Address = {\n geocode: (address)=>(0, $3U8SM.default).get(`/api/geocode`, {\n params: {\n address: address,\n key: \"HwphuLg1MaToFC13M49QMG\"\n }\n }),\n autocomplete: (address)=>(0, $3U8SM.default).get(`/api/autocomplete`, {\n params: {\n q: address,\n key: \"HwphuLg1MaToFC13M49QMG\"\n }\n })\n};\nvar $faebf13b597c0117$export$2e2bcd8739ae039 = {\n Address: $faebf13b597c0117$var$Address,\n Dataset: $faebf13b597c0117$var$Dataset,\n SavedSearchFilters: $faebf13b597c0117$var$SavedSearchFilters,\n Data: $faebf13b597c0117$var$Data,\n Building: $faebf13b597c0117$var$Building,\n Project: $faebf13b597c0117$var$Project,\n Group: $faebf13b597c0117$var$Group,\n User: $faebf13b597c0117$var$User,\n Admin: $faebf13b597c0117$var$Admin,\n Task: $faebf13b597c0117$var$Task,\n Log: $faebf13b597c0117$var$Log,\n Survey: $faebf13b597c0117$var$Survey,\n Workspace: $faebf13b597c0117$var$Workspace\n};\n\n});\nparcelRegister(\"96kno\", function(module, exports) {\n\nmodule.exports = (parcelRequire(\"7adkN\"));\n\n});\nparcelRegister(\"7adkN\", function(module, exports) {\n\"use strict\";\n\nvar $lKhqw = parcelRequire(\"lKhqw\");\n\nvar $aPrk0 = parcelRequire(\"aPrk0\");\n\nvar $0yJ19 = parcelRequire(\"0yJ19\");\n\nvar $4HCLR = parcelRequire(\"4HCLR\");\n\nvar $eBlJu = parcelRequire(\"eBlJu\");\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */ function $5373cf85e013fcc9$var$createInstance(defaultConfig) {\n var context = new $0yJ19(defaultConfig);\n var instance = $aPrk0($0yJ19.prototype.request, context);\n // Copy axios.prototype to instance\n $lKhqw.extend(instance, $0yJ19.prototype, context);\n // Copy context to instance\n $lKhqw.extend(instance, context);\n return instance;\n}\n// Create the default instance to be exported\nvar $5373cf85e013fcc9$var$axios = $5373cf85e013fcc9$var$createInstance($eBlJu);\n// Expose Axios class to allow class inheritance\n$5373cf85e013fcc9$var$axios.Axios = $0yJ19;\n// Factory for creating new instances\n$5373cf85e013fcc9$var$axios.create = function create(instanceConfig) {\n return $5373cf85e013fcc9$var$createInstance($4HCLR($5373cf85e013fcc9$var$axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\n$5373cf85e013fcc9$var$axios.Cancel = (parcelRequire(\"2h22r\"));\n\n$5373cf85e013fcc9$var$axios.CancelToken = (parcelRequire(\"6pDYR\"));\n\n$5373cf85e013fcc9$var$axios.isCancel = (parcelRequire(\"HLDIA\"));\n// Expose all/spread\n$5373cf85e013fcc9$var$axios.all = function all(promises) {\n return Promise.all(promises);\n};\n\n$5373cf85e013fcc9$var$axios.spread = (parcelRequire(\"8U7FG\"));\nmodule.exports = $5373cf85e013fcc9$var$axios;\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = $5373cf85e013fcc9$var$axios;\n\n});\nparcelRegister(\"lKhqw\", function(module, exports) {\n\"use strict\";\n\nvar $aPrk0 = parcelRequire(\"aPrk0\");\n/*global toString:true*/ // utils is a library of generic helper functions non-specific to axios\nvar $fd4b6975c6d4e60d$var$toString = Object.prototype.toString;\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */ function $fd4b6975c6d4e60d$var$isArray(val) {\n return $fd4b6975c6d4e60d$var$toString.call(val) === \"[object Array]\";\n}\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */ function $fd4b6975c6d4e60d$var$isUndefined(val) {\n return typeof val === \"undefined\";\n}\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */ function $fd4b6975c6d4e60d$var$isBuffer(val) {\n return val !== null && !$fd4b6975c6d4e60d$var$isUndefined(val) && val.constructor !== null && !$fd4b6975c6d4e60d$var$isUndefined(val.constructor) && typeof val.constructor.isBuffer === \"function\" && val.constructor.isBuffer(val);\n}\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */ function $fd4b6975c6d4e60d$var$isArrayBuffer(val) {\n return $fd4b6975c6d4e60d$var$toString.call(val) === \"[object ArrayBuffer]\";\n}\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */ function $fd4b6975c6d4e60d$var$isFormData(val) {\n return typeof FormData !== \"undefined\" && val instanceof FormData;\n}\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */ function $fd4b6975c6d4e60d$var$isArrayBufferView(val) {\n var result;\n if (typeof ArrayBuffer !== \"undefined\" && ArrayBuffer.isView) result = ArrayBuffer.isView(val);\n else result = val && val.buffer && val.buffer instanceof ArrayBuffer;\n return result;\n}\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */ function $fd4b6975c6d4e60d$var$isString(val) {\n return typeof val === \"string\";\n}\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */ function $fd4b6975c6d4e60d$var$isNumber(val) {\n return typeof val === \"number\";\n}\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */ function $fd4b6975c6d4e60d$var$isObject(val) {\n return val !== null && typeof val === \"object\";\n}\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */ function $fd4b6975c6d4e60d$var$isDate(val) {\n return $fd4b6975c6d4e60d$var$toString.call(val) === \"[object Date]\";\n}\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */ function $fd4b6975c6d4e60d$var$isFile(val) {\n return $fd4b6975c6d4e60d$var$toString.call(val) === \"[object File]\";\n}\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */ function $fd4b6975c6d4e60d$var$isBlob(val) {\n return $fd4b6975c6d4e60d$var$toString.call(val) === \"[object Blob]\";\n}\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */ function $fd4b6975c6d4e60d$var$isFunction(val) {\n return $fd4b6975c6d4e60d$var$toString.call(val) === \"[object Function]\";\n}\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */ function $fd4b6975c6d4e60d$var$isStream(val) {\n return $fd4b6975c6d4e60d$var$isObject(val) && $fd4b6975c6d4e60d$var$isFunction(val.pipe);\n}\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */ function $fd4b6975c6d4e60d$var$isURLSearchParams(val) {\n return typeof URLSearchParams !== \"undefined\" && val instanceof URLSearchParams;\n}\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */ function $fd4b6975c6d4e60d$var$trim(str) {\n return str.replace(/^\\s*/, \"\").replace(/\\s*$/, \"\");\n}\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */ function $fd4b6975c6d4e60d$var$isStandardBrowserEnv() {\n if (typeof navigator !== \"undefined\" && (navigator.product === \"ReactNative\" || navigator.product === \"NativeScript\" || navigator.product === \"NS\")) return false;\n return typeof window !== \"undefined\" && typeof document !== \"undefined\";\n}\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */ function $fd4b6975c6d4e60d$var$forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === \"undefined\") return;\n // Force an array if not already something iterable\n if (typeof obj !== \"object\") /*eslint no-param-reassign:0*/ obj = [\n obj\n ];\n if ($fd4b6975c6d4e60d$var$isArray(obj)) // Iterate over array values\n for(var i = 0, l = obj.length; i < l; i++)fn.call(null, obj[i], i, obj);\n else {\n // Iterate over object keys\n for(var key in obj)if (Object.prototype.hasOwnProperty.call(obj, key)) fn.call(null, obj[key], key, obj);\n }\n}\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */ function $fd4b6975c6d4e60d$var$merge() {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === \"object\" && typeof val === \"object\") result[key] = $fd4b6975c6d4e60d$var$merge(result[key], val);\n else result[key] = val;\n }\n for(var i = 0, l = arguments.length; i < l; i++)$fd4b6975c6d4e60d$var$forEach(arguments[i], assignValue);\n return result;\n}\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */ function $fd4b6975c6d4e60d$var$deepMerge() {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === \"object\" && typeof val === \"object\") result[key] = $fd4b6975c6d4e60d$var$deepMerge(result[key], val);\n else if (typeof val === \"object\") result[key] = $fd4b6975c6d4e60d$var$deepMerge({}, val);\n else result[key] = val;\n }\n for(var i = 0, l = arguments.length; i < l; i++)$fd4b6975c6d4e60d$var$forEach(arguments[i], assignValue);\n return result;\n}\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */ function $fd4b6975c6d4e60d$var$extend(a, b, thisArg) {\n $fd4b6975c6d4e60d$var$forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === \"function\") a[key] = $aPrk0(val, thisArg);\n else a[key] = val;\n });\n return a;\n}\nmodule.exports = {\n isArray: $fd4b6975c6d4e60d$var$isArray,\n isArrayBuffer: $fd4b6975c6d4e60d$var$isArrayBuffer,\n isBuffer: $fd4b6975c6d4e60d$var$isBuffer,\n isFormData: $fd4b6975c6d4e60d$var$isFormData,\n isArrayBufferView: $fd4b6975c6d4e60d$var$isArrayBufferView,\n isString: $fd4b6975c6d4e60d$var$isString,\n isNumber: $fd4b6975c6d4e60d$var$isNumber,\n isObject: $fd4b6975c6d4e60d$var$isObject,\n isUndefined: $fd4b6975c6d4e60d$var$isUndefined,\n isDate: $fd4b6975c6d4e60d$var$isDate,\n isFile: $fd4b6975c6d4e60d$var$isFile,\n isBlob: $fd4b6975c6d4e60d$var$isBlob,\n isFunction: $fd4b6975c6d4e60d$var$isFunction,\n isStream: $fd4b6975c6d4e60d$var$isStream,\n isURLSearchParams: $fd4b6975c6d4e60d$var$isURLSearchParams,\n isStandardBrowserEnv: $fd4b6975c6d4e60d$var$isStandardBrowserEnv,\n forEach: $fd4b6975c6d4e60d$var$forEach,\n merge: $fd4b6975c6d4e60d$var$merge,\n deepMerge: $fd4b6975c6d4e60d$var$deepMerge,\n extend: $fd4b6975c6d4e60d$var$extend,\n trim: $fd4b6975c6d4e60d$var$trim\n};\n\n});\nparcelRegister(\"aPrk0\", function(module, exports) {\n\"use strict\";\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for(var i = 0; i < args.length; i++)args[i] = arguments[i];\n return fn.apply(thisArg, args);\n };\n};\n\n});\n\n\nparcelRegister(\"0yJ19\", function(module, exports) {\n\"use strict\";\n\nvar $lKhqw = parcelRequire(\"lKhqw\");\n\nvar $iUyGw = parcelRequire(\"iUyGw\");\n\nvar $avirQ = parcelRequire(\"avirQ\");\n\nvar $eiKwg = parcelRequire(\"eiKwg\");\n\nvar $4HCLR = parcelRequire(\"4HCLR\");\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */ function $001aefe19d856021$var$Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new $avirQ(),\n response: new $avirQ()\n };\n}\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */ $001aefe19d856021$var$Axios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/ // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === \"string\") {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else config = config || {};\n config = $4HCLR(this.defaults, config);\n // Set config.method\n if (config.method) config.method = config.method.toLowerCase();\n else if (this.defaults.method) config.method = this.defaults.method.toLowerCase();\n else config.method = \"get\";\n // Hook up interceptors middleware\n var chain = [\n $eiKwg,\n undefined\n ];\n var promise = Promise.resolve(config);\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n while(chain.length)promise = promise.then(chain.shift(), chain.shift());\n return promise;\n};\n$001aefe19d856021$var$Axios.prototype.getUri = function getUri(config) {\n config = $4HCLR(this.defaults, config);\n return $iUyGw(config.url, config.params, config.paramsSerializer).replace(/^\\?/, \"\");\n};\n// Provide aliases for supported request methods\n$lKhqw.forEach([\n \"delete\",\n \"get\",\n \"head\",\n \"options\"\n], function forEachMethodNoData(method) {\n /*eslint func-names:0*/ $001aefe19d856021$var$Axios.prototype[method] = function(url, config) {\n return this.request($lKhqw.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n$lKhqw.forEach([\n \"post\",\n \"put\",\n \"patch\"\n], function forEachMethodWithData(method) {\n /*eslint func-names:0*/ $001aefe19d856021$var$Axios.prototype[method] = function(url, data, config) {\n return this.request($lKhqw.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\nmodule.exports = $001aefe19d856021$var$Axios;\n\n});\nparcelRegister(\"iUyGw\", function(module, exports) {\n\"use strict\";\n\nvar $lKhqw = parcelRequire(\"lKhqw\");\nfunction $dc485ca62913762a$var$encode(val) {\n return encodeURIComponent(val).replace(/%40/gi, \"@\").replace(/%3A/gi, \":\").replace(/%24/g, \"$\").replace(/%2C/gi, \",\").replace(/%20/g, \"+\").replace(/%5B/gi, \"[\").replace(/%5D/gi, \"]\");\n}\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */ module.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/ if (!params) return url;\n var serializedParams;\n if (paramsSerializer) serializedParams = paramsSerializer(params);\n else if ($lKhqw.isURLSearchParams(params)) serializedParams = params.toString();\n else {\n var parts = [];\n $lKhqw.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === \"undefined\") return;\n if ($lKhqw.isArray(val)) key = key + \"[]\";\n else val = [\n val\n ];\n $lKhqw.forEach(val, function parseValue(v) {\n if ($lKhqw.isDate(v)) v = v.toISOString();\n else if ($lKhqw.isObject(v)) v = JSON.stringify(v);\n parts.push($dc485ca62913762a$var$encode(key) + \"=\" + $dc485ca62913762a$var$encode(v));\n });\n });\n serializedParams = parts.join(\"&\");\n }\n if (serializedParams) {\n var hashmarkIndex = url.indexOf(\"#\");\n if (hashmarkIndex !== -1) url = url.slice(0, hashmarkIndex);\n url += (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + serializedParams;\n }\n return url;\n};\n\n});\n\nparcelRegister(\"avirQ\", function(module, exports) {\n\"use strict\";\n\nvar $lKhqw = parcelRequire(\"lKhqw\");\nfunction $7a5b1c0937c752f6$var$InterceptorManager() {\n this.handlers = [];\n}\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */ $7a5b1c0937c752f6$var$InterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */ $7a5b1c0937c752f6$var$InterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) this.handlers[id] = null;\n};\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */ $7a5b1c0937c752f6$var$InterceptorManager.prototype.forEach = function forEach(fn) {\n $lKhqw.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) fn(h);\n });\n};\nmodule.exports = $7a5b1c0937c752f6$var$InterceptorManager;\n\n});\n\nparcelRegister(\"eiKwg\", function(module, exports) {\n\"use strict\";\n\nvar $lKhqw = parcelRequire(\"lKhqw\");\n\nvar $lgs8l = parcelRequire(\"lgs8l\");\n\nvar $HLDIA = parcelRequire(\"HLDIA\");\n\nvar $eBlJu = parcelRequire(\"eBlJu\");\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */ function $a696d4ee9286baa4$var$throwIfCancellationRequested(config) {\n if (config.cancelToken) config.cancelToken.throwIfRequested();\n}\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */ module.exports = function dispatchRequest(config) {\n $a696d4ee9286baa4$var$throwIfCancellationRequested(config);\n // Ensure headers exist\n config.headers = config.headers || {};\n // Transform request data\n config.data = $lgs8l(config.data, config.headers, config.transformRequest);\n // Flatten headers\n config.headers = $lKhqw.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers);\n $lKhqw.forEach([\n \"delete\",\n \"get\",\n \"head\",\n \"post\",\n \"put\",\n \"patch\",\n \"common\"\n ], function cleanHeaderConfig(method) {\n delete config.headers[method];\n });\n var adapter = config.adapter || $eBlJu.adapter;\n return adapter(config).then(function onAdapterResolution(response) {\n $a696d4ee9286baa4$var$throwIfCancellationRequested(config);\n // Transform response data\n response.data = $lgs8l(response.data, response.headers, config.transformResponse);\n return response;\n }, function onAdapterRejection(reason) {\n if (!$HLDIA(reason)) {\n $a696d4ee9286baa4$var$throwIfCancellationRequested(config);\n // Transform response data\n if (reason && reason.response) reason.response.data = $lgs8l(reason.response.data, reason.response.headers, config.transformResponse);\n }\n return Promise.reject(reason);\n });\n};\n\n});\nparcelRegister(\"lgs8l\", function(module, exports) {\n\"use strict\";\n\nvar $lKhqw = parcelRequire(\"lKhqw\");\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */ module.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/ $lKhqw.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n return data;\n};\n\n});\n\nparcelRegister(\"HLDIA\", function(module, exports) {\n\"use strict\";\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n\n});\n\nparcelRegister(\"eBlJu\", function(module, exports) {\n\nvar $95Bnk = parcelRequire(\"95Bnk\");\n\"use strict\";\n\nvar $lKhqw = parcelRequire(\"lKhqw\");\n\nvar $8L8x3 = parcelRequire(\"8L8x3\");\nvar $aa1561117f5df43f$var$DEFAULT_CONTENT_TYPE = {\n \"Content-Type\": \"application/x-www-form-urlencoded\"\n};\nfunction $aa1561117f5df43f$var$setContentTypeIfUnset(headers, value) {\n if (!$lKhqw.isUndefined(headers) && $lKhqw.isUndefined(headers[\"Content-Type\"])) headers[\"Content-Type\"] = value;\n}\n\n\nfunction $aa1561117f5df43f$var$getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== \"undefined\") // For browsers use XHR adapter\n adapter = (parcelRequire(\"9gGJV\"));\n else if (typeof $95Bnk !== \"undefined\" && Object.prototype.toString.call($95Bnk) === \"[object process]\") // For node use HTTP adapter\n adapter = (parcelRequire(\"9gGJV\"));\n return adapter;\n}\nvar $aa1561117f5df43f$var$defaults = {\n adapter: $aa1561117f5df43f$var$getDefaultAdapter(),\n transformRequest: [\n function transformRequest(data, headers) {\n $8L8x3(headers, \"Accept\");\n $8L8x3(headers, \"Content-Type\");\n if ($lKhqw.isFormData(data) || $lKhqw.isArrayBuffer(data) || $lKhqw.isBuffer(data) || $lKhqw.isStream(data) || $lKhqw.isFile(data) || $lKhqw.isBlob(data)) return data;\n if ($lKhqw.isArrayBufferView(data)) return data.buffer;\n if ($lKhqw.isURLSearchParams(data)) {\n $aa1561117f5df43f$var$setContentTypeIfUnset(headers, \"application/x-www-form-urlencoded;charset=utf-8\");\n return data.toString();\n }\n if ($lKhqw.isObject(data)) {\n $aa1561117f5df43f$var$setContentTypeIfUnset(headers, \"application/json;charset=utf-8\");\n return JSON.stringify(data);\n }\n return data;\n }\n ],\n transformResponse: [\n function transformResponse(data) {\n /*eslint no-param-reassign:0*/ if (typeof data === \"string\") try {\n data = JSON.parse(data);\n } catch (e) {}\n return data;\n }\n ],\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */ timeout: 0,\n xsrfCookieName: \"XSRF-TOKEN\",\n xsrfHeaderName: \"X-XSRF-TOKEN\",\n maxContentLength: -1,\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n$aa1561117f5df43f$var$defaults.headers = {\n common: {\n \"Accept\": \"application/json, text/plain, */*\"\n }\n};\n$lKhqw.forEach([\n \"delete\",\n \"get\",\n \"head\"\n], function forEachMethodNoData(method) {\n $aa1561117f5df43f$var$defaults.headers[method] = {};\n});\n$lKhqw.forEach([\n \"post\",\n \"put\",\n \"patch\"\n], function forEachMethodWithData(method) {\n $aa1561117f5df43f$var$defaults.headers[method] = $lKhqw.merge($aa1561117f5df43f$var$DEFAULT_CONTENT_TYPE);\n});\nmodule.exports = $aa1561117f5df43f$var$defaults;\n\n});\nparcelRegister(\"95Bnk\", function(module, exports) {\n// shim for using process in browser\nvar $69e192a00f641b7a$var$process = module.exports = {};\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\nvar $69e192a00f641b7a$var$cachedSetTimeout;\nvar $69e192a00f641b7a$var$cachedClearTimeout;\nfunction $69e192a00f641b7a$var$defaultSetTimout() {\n throw new Error(\"setTimeout has not been defined\");\n}\nfunction $69e192a00f641b7a$var$defaultClearTimeout() {\n throw new Error(\"clearTimeout has not been defined\");\n}\n(function() {\n try {\n if (typeof setTimeout === \"function\") $69e192a00f641b7a$var$cachedSetTimeout = setTimeout;\n else $69e192a00f641b7a$var$cachedSetTimeout = $69e192a00f641b7a$var$defaultSetTimout;\n } catch (e) {\n $69e192a00f641b7a$var$cachedSetTimeout = $69e192a00f641b7a$var$defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === \"function\") $69e192a00f641b7a$var$cachedClearTimeout = clearTimeout;\n else $69e192a00f641b7a$var$cachedClearTimeout = $69e192a00f641b7a$var$defaultClearTimeout;\n } catch (e) {\n $69e192a00f641b7a$var$cachedClearTimeout = $69e192a00f641b7a$var$defaultClearTimeout;\n }\n})();\nfunction $69e192a00f641b7a$var$runTimeout(fun) {\n if ($69e192a00f641b7a$var$cachedSetTimeout === setTimeout) //normal enviroments in sane situations\n return setTimeout(fun, 0);\n // if setTimeout wasn't available but was latter defined\n if (($69e192a00f641b7a$var$cachedSetTimeout === $69e192a00f641b7a$var$defaultSetTimout || !$69e192a00f641b7a$var$cachedSetTimeout) && setTimeout) {\n $69e192a00f641b7a$var$cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return $69e192a00f641b7a$var$cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return $69e192a00f641b7a$var$cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return $69e192a00f641b7a$var$cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\nfunction $69e192a00f641b7a$var$runClearTimeout(marker) {\n if ($69e192a00f641b7a$var$cachedClearTimeout === clearTimeout) //normal enviroments in sane situations\n return clearTimeout(marker);\n // if clearTimeout wasn't available but was latter defined\n if (($69e192a00f641b7a$var$cachedClearTimeout === $69e192a00f641b7a$var$defaultClearTimeout || !$69e192a00f641b7a$var$cachedClearTimeout) && clearTimeout) {\n $69e192a00f641b7a$var$cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return $69e192a00f641b7a$var$cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return $69e192a00f641b7a$var$cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return $69e192a00f641b7a$var$cachedClearTimeout.call(this, marker);\n }\n }\n}\nvar $69e192a00f641b7a$var$queue = [];\nvar $69e192a00f641b7a$var$draining = false;\nvar $69e192a00f641b7a$var$currentQueue;\nvar $69e192a00f641b7a$var$queueIndex = -1;\nfunction $69e192a00f641b7a$var$cleanUpNextTick() {\n if (!$69e192a00f641b7a$var$draining || !$69e192a00f641b7a$var$currentQueue) return;\n $69e192a00f641b7a$var$draining = false;\n if ($69e192a00f641b7a$var$currentQueue.length) $69e192a00f641b7a$var$queue = $69e192a00f641b7a$var$currentQueue.concat($69e192a00f641b7a$var$queue);\n else $69e192a00f641b7a$var$queueIndex = -1;\n if ($69e192a00f641b7a$var$queue.length) $69e192a00f641b7a$var$drainQueue();\n}\nfunction $69e192a00f641b7a$var$drainQueue() {\n if ($69e192a00f641b7a$var$draining) return;\n var timeout = $69e192a00f641b7a$var$runTimeout($69e192a00f641b7a$var$cleanUpNextTick);\n $69e192a00f641b7a$var$draining = true;\n var len = $69e192a00f641b7a$var$queue.length;\n while(len){\n $69e192a00f641b7a$var$currentQueue = $69e192a00f641b7a$var$queue;\n $69e192a00f641b7a$var$queue = [];\n while(++$69e192a00f641b7a$var$queueIndex < len)if ($69e192a00f641b7a$var$currentQueue) $69e192a00f641b7a$var$currentQueue[$69e192a00f641b7a$var$queueIndex].run();\n $69e192a00f641b7a$var$queueIndex = -1;\n len = $69e192a00f641b7a$var$queue.length;\n }\n $69e192a00f641b7a$var$currentQueue = null;\n $69e192a00f641b7a$var$draining = false;\n $69e192a00f641b7a$var$runClearTimeout(timeout);\n}\n$69e192a00f641b7a$var$process.nextTick = function(fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) for(var i = 1; i < arguments.length; i++)args[i - 1] = arguments[i];\n $69e192a00f641b7a$var$queue.push(new $69e192a00f641b7a$var$Item(fun, args));\n if ($69e192a00f641b7a$var$queue.length === 1 && !$69e192a00f641b7a$var$draining) $69e192a00f641b7a$var$runTimeout($69e192a00f641b7a$var$drainQueue);\n};\n// v8 likes predictible objects\nfunction $69e192a00f641b7a$var$Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n$69e192a00f641b7a$var$Item.prototype.run = function() {\n this.fun.apply(null, this.array);\n};\n$69e192a00f641b7a$var$process.title = \"browser\";\n$69e192a00f641b7a$var$process.browser = true;\n$69e192a00f641b7a$var$process.env = {};\n$69e192a00f641b7a$var$process.argv = [];\n$69e192a00f641b7a$var$process.version = \"\"; // empty string to avoid regexp issues\n$69e192a00f641b7a$var$process.versions = {};\nfunction $69e192a00f641b7a$var$noop() {}\n$69e192a00f641b7a$var$process.on = $69e192a00f641b7a$var$noop;\n$69e192a00f641b7a$var$process.addListener = $69e192a00f641b7a$var$noop;\n$69e192a00f641b7a$var$process.once = $69e192a00f641b7a$var$noop;\n$69e192a00f641b7a$var$process.off = $69e192a00f641b7a$var$noop;\n$69e192a00f641b7a$var$process.removeListener = $69e192a00f641b7a$var$noop;\n$69e192a00f641b7a$var$process.removeAllListeners = $69e192a00f641b7a$var$noop;\n$69e192a00f641b7a$var$process.emit = $69e192a00f641b7a$var$noop;\n$69e192a00f641b7a$var$process.prependListener = $69e192a00f641b7a$var$noop;\n$69e192a00f641b7a$var$process.prependOnceListener = $69e192a00f641b7a$var$noop;\n$69e192a00f641b7a$var$process.listeners = function(name) {\n return [];\n};\n$69e192a00f641b7a$var$process.binding = function(name) {\n throw new Error(\"process.binding is not supported\");\n};\n$69e192a00f641b7a$var$process.cwd = function() {\n return \"/\";\n};\n$69e192a00f641b7a$var$process.chdir = function(dir) {\n throw new Error(\"process.chdir is not supported\");\n};\n$69e192a00f641b7a$var$process.umask = function() {\n return 0;\n};\n\n});\n\nparcelRegister(\"8L8x3\", function(module, exports) {\n\"use strict\";\n\nvar $lKhqw = parcelRequire(\"lKhqw\");\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n $lKhqw.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n\n});\n\nparcelRegister(\"9gGJV\", function(module, exports) {\n\"use strict\";\n\nvar $lKhqw = parcelRequire(\"lKhqw\");\n\nvar $lDK0X = parcelRequire(\"lDK0X\");\n\nvar $iUyGw = parcelRequire(\"iUyGw\");\n\nvar $bueOp = parcelRequire(\"bueOp\");\n\nvar $fqmMy = parcelRequire(\"fqmMy\");\n\nvar $6YDQT = parcelRequire(\"6YDQT\");\n\nvar $8eGGi = parcelRequire(\"8eGGi\");\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n if ($lKhqw.isFormData(requestData)) delete requestHeaders[\"Content-Type\"]; // Let the browser set it\n var request = new XMLHttpRequest();\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || \"\";\n var password = config.auth.password || \"\";\n requestHeaders.Authorization = \"Basic \" + btoa(username + \":\" + password);\n }\n var fullPath = $bueOp(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), $iUyGw(fullPath, config.params, config.paramsSerializer), true);\n // Set the request timeout in MS\n request.timeout = config.timeout;\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) return;\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf(\"file:\") === 0)) return;\n // Prepare the response\n var responseHeaders = \"getAllResponseHeaders\" in request ? $fqmMy(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === \"text\" ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n $lDK0X(resolve, reject, response);\n // Clean up request\n request = null;\n };\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) return;\n reject($8eGGi(\"Request aborted\", config, \"ECONNABORTED\", request));\n // Clean up request\n request = null;\n };\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject($8eGGi(\"Network Error\", config, null, request));\n // Clean up request\n request = null;\n };\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = \"timeout of \" + config.timeout + \"ms exceeded\";\n if (config.timeoutErrorMessage) timeoutErrorMessage = config.timeoutErrorMessage;\n reject($8eGGi(timeoutErrorMessage, config, \"ECONNABORTED\", request));\n // Clean up request\n request = null;\n };\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if ($lKhqw.isStandardBrowserEnv()) {\n var cookies = (parcelRequire(\"3PTc0\"));\n // Add xsrf header\n var xsrfValue = (config.withCredentials || $6YDQT(fullPath)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined;\n if (xsrfValue) requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n // Add headers to the request\n if (\"setRequestHeader\" in request) $lKhqw.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === \"undefined\" && key.toLowerCase() === \"content-type\") // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n else // Otherwise add header to the request\n request.setRequestHeader(key, val);\n });\n // Add withCredentials to request if needed\n if (!$lKhqw.isUndefined(config.withCredentials)) request.withCredentials = !!config.withCredentials;\n // Add responseType to request if needed\n if (config.responseType) try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== \"json\") throw e;\n }\n // Handle progress if needed\n if (typeof config.onDownloadProgress === \"function\") request.addEventListener(\"progress\", config.onDownloadProgress);\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === \"function\" && request.upload) request.upload.addEventListener(\"progress\", config.onUploadProgress);\n if (config.cancelToken) // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) return;\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n if (requestData === undefined) requestData = null;\n // Send the request\n request.send(requestData);\n });\n};\n\n});\nparcelRegister(\"lDK0X\", function(module, exports) {\n\"use strict\";\n\nvar $8eGGi = parcelRequire(\"8eGGi\");\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */ module.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) resolve(response);\n else reject($8eGGi(\"Request failed with status code \" + response.status, response.config, null, response.request, response));\n};\n\n});\nparcelRegister(\"8eGGi\", function(module, exports) {\n\"use strict\";\n\nvar $4ODsI = parcelRequire(\"4ODsI\");\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */ module.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return $4ODsI(error, config, code, request, response);\n};\n\n});\nparcelRegister(\"4ODsI\", function(module, exports) {\n\"use strict\";\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */ module.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) error.code = code;\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n\n});\n\n\n\nparcelRegister(\"bueOp\", function(module, exports) {\n\"use strict\";\n\nvar $7sSu0 = parcelRequire(\"7sSu0\");\n\nvar $1Sn7d = parcelRequire(\"1Sn7d\");\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */ module.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !$7sSu0(requestedURL)) return $1Sn7d(baseURL, requestedURL);\n return requestedURL;\n};\n\n});\nparcelRegister(\"7sSu0\", function(module, exports) {\n\"use strict\";\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */ module.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n\n});\n\nparcelRegister(\"1Sn7d\", function(module, exports) {\n\"use strict\";\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */ module.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL ? baseURL.replace(/\\/+$/, \"\") + \"/\" + relativeURL.replace(/^\\/+/, \"\") : baseURL;\n};\n\n});\n\n\nparcelRegister(\"fqmMy\", function(module, exports) {\n\"use strict\";\n\nvar $lKhqw = parcelRequire(\"lKhqw\");\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar $b3aaf4cd5be16710$var$ignoreDuplicateOf = [\n \"age\",\n \"authorization\",\n \"content-length\",\n \"content-type\",\n \"etag\",\n \"expires\",\n \"from\",\n \"host\",\n \"if-modified-since\",\n \"if-unmodified-since\",\n \"last-modified\",\n \"location\",\n \"max-forwards\",\n \"proxy-authorization\",\n \"referer\",\n \"retry-after\",\n \"user-agent\"\n];\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */ module.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n if (!headers) return parsed;\n $lKhqw.forEach(headers.split(\"\\n\"), function parser(line) {\n i = line.indexOf(\":\");\n key = $lKhqw.trim(line.substr(0, i)).toLowerCase();\n val = $lKhqw.trim(line.substr(i + 1));\n if (key) {\n if (parsed[key] && $b3aaf4cd5be16710$var$ignoreDuplicateOf.indexOf(key) >= 0) return;\n if (key === \"set-cookie\") parsed[key] = (parsed[key] ? parsed[key] : []).concat([\n val\n ]);\n else parsed[key] = parsed[key] ? parsed[key] + \", \" + val : val;\n }\n });\n return parsed;\n};\n\n});\n\nparcelRegister(\"6YDQT\", function(module, exports) {\n\"use strict\";\n\nvar $lKhqw = parcelRequire(\"lKhqw\");\nmodule.exports = $lKhqw.isStandardBrowserEnv() ? // Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\nfunction standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement(\"a\");\n var originURL;\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */ function resolveURL(url) {\n var href = url;\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute(\"href\", href);\n href = urlParsingNode.href;\n }\n urlParsingNode.setAttribute(\"href\", href);\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, \"\") : \"\",\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, \"\") : \"\",\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, \"\") : \"\",\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: urlParsingNode.pathname.charAt(0) === \"/\" ? urlParsingNode.pathname : \"/\" + urlParsingNode.pathname\n };\n }\n originURL = resolveURL(window.location.href);\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */ return function isURLSameOrigin(requestURL) {\n var parsed = $lKhqw.isString(requestURL) ? resolveURL(requestURL) : requestURL;\n return parsed.protocol === originURL.protocol && parsed.host === originURL.host;\n };\n}() : // Non standard browser envs (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n}();\n\n});\n\nparcelRegister(\"3PTc0\", function(module, exports) {\n\"use strict\";\n\nvar $lKhqw = parcelRequire(\"lKhqw\");\nmodule.exports = $lKhqw.isStandardBrowserEnv() ? // Standard browser envs support document.cookie\nfunction standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + \"=\" + encodeURIComponent(value));\n if ($lKhqw.isNumber(expires)) cookie.push(\"expires=\" + new Date(expires).toGMTString());\n if ($lKhqw.isString(path)) cookie.push(\"path=\" + path);\n if ($lKhqw.isString(domain)) cookie.push(\"domain=\" + domain);\n if (secure === true) cookie.push(\"secure\");\n document.cookie = cookie.join(\"; \");\n },\n read: function read(name) {\n var match = document.cookie.match(new RegExp(\"(^|;\\\\s*)(\" + name + \")=([^;]*)\"));\n return match ? decodeURIComponent(match[3]) : null;\n },\n remove: function remove(name) {\n this.write(name, \"\", Date.now() - 86400000);\n }\n };\n}() : // Non standard browser env (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() {\n return null;\n },\n remove: function remove() {}\n };\n}();\n\n});\n\n\n\n\nparcelRegister(\"4HCLR\", function(module, exports) {\n\"use strict\";\n\nvar $lKhqw = parcelRequire(\"lKhqw\");\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */ module.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n var valueFromConfig2Keys = [\n \"url\",\n \"method\",\n \"params\",\n \"data\"\n ];\n var mergeDeepPropertiesKeys = [\n \"headers\",\n \"auth\",\n \"proxy\"\n ];\n var defaultToConfig2Keys = [\n \"baseURL\",\n \"url\",\n \"transformRequest\",\n \"transformResponse\",\n \"paramsSerializer\",\n \"timeout\",\n \"withCredentials\",\n \"adapter\",\n \"responseType\",\n \"xsrfCookieName\",\n \"xsrfHeaderName\",\n \"onUploadProgress\",\n \"onDownloadProgress\",\n \"maxContentLength\",\n \"validateStatus\",\n \"maxRedirects\",\n \"httpAgent\",\n \"httpsAgent\",\n \"cancelToken\",\n \"socketPath\"\n ];\n $lKhqw.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (typeof config2[prop] !== \"undefined\") config[prop] = config2[prop];\n });\n $lKhqw.forEach(mergeDeepPropertiesKeys, function mergeDeepProperties(prop) {\n if ($lKhqw.isObject(config2[prop])) config[prop] = $lKhqw.deepMerge(config1[prop], config2[prop]);\n else if (typeof config2[prop] !== \"undefined\") config[prop] = config2[prop];\n else if ($lKhqw.isObject(config1[prop])) config[prop] = $lKhqw.deepMerge(config1[prop]);\n else if (typeof config1[prop] !== \"undefined\") config[prop] = config1[prop];\n });\n $lKhqw.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (typeof config2[prop] !== \"undefined\") config[prop] = config2[prop];\n else if (typeof config1[prop] !== \"undefined\") config[prop] = config1[prop];\n });\n var axiosKeys = valueFromConfig2Keys.concat(mergeDeepPropertiesKeys).concat(defaultToConfig2Keys);\n var otherKeys = Object.keys(config2).filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n $lKhqw.forEach(otherKeys, function otherKeysDefaultToConfig2(prop) {\n if (typeof config2[prop] !== \"undefined\") config[prop] = config2[prop];\n else if (typeof config1[prop] !== \"undefined\") config[prop] = config1[prop];\n });\n return config;\n};\n\n});\n\n\nparcelRegister(\"2h22r\", function(module, exports) {\n\"use strict\";\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */ function $1a7ec00f9d1e1cf4$var$Cancel(message) {\n this.message = message;\n}\n$1a7ec00f9d1e1cf4$var$Cancel.prototype.toString = function toString() {\n return \"Cancel\" + (this.message ? \": \" + this.message : \"\");\n};\n$1a7ec00f9d1e1cf4$var$Cancel.prototype.__CANCEL__ = true;\nmodule.exports = $1a7ec00f9d1e1cf4$var$Cancel;\n\n});\n\nparcelRegister(\"6pDYR\", function(module, exports) {\n\"use strict\";\n\nvar $2h22r = parcelRequire(\"2h22r\");\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */ function $4ab41735eb671710$var$CancelToken(executor) {\n if (typeof executor !== \"function\") throw new TypeError(\"executor must be a function.\");\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n var token = this;\n executor(function cancel(message) {\n if (token.reason) // Cancellation has already been requested\n return;\n token.reason = new $2h22r(message);\n resolvePromise(token.reason);\n });\n}\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */ $4ab41735eb671710$var$CancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) throw this.reason;\n};\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */ $4ab41735eb671710$var$CancelToken.source = function source() {\n var cancel;\n var token = new $4ab41735eb671710$var$CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\nmodule.exports = $4ab41735eb671710$var$CancelToken;\n\n});\n\nparcelRegister(\"8U7FG\", function(module, exports) {\n\"use strict\";\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */ module.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n\n});\n\n\n\nparcelRegister(\"hqhdr\", function(module, exports) {\n\"use strict\";\n\nvar $fXzVl = parcelRequire(\"fXzVl\");\n\nvar $iXMLF = parcelRequire(\"iXMLF\");\n\nvar $9VinK = parcelRequire(\"9VinK\");\nmodule.exports = {\n formats: $9VinK,\n parse: $iXMLF,\n stringify: $fXzVl\n};\n\n});\nparcelRegister(\"fXzVl\", function(module, exports) {\n\"use strict\";\n\nvar $ghlAC = parcelRequire(\"ghlAC\");\n\nvar $9VinK = parcelRequire(\"9VinK\");\nvar $b9e83b7738a3c801$var$has = Object.prototype.hasOwnProperty;\nvar $b9e83b7738a3c801$var$arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + \"[]\";\n },\n comma: \"comma\",\n indices: function indices(prefix, key) {\n return prefix + \"[\" + key + \"]\";\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\nvar $b9e83b7738a3c801$var$isArray = Array.isArray;\nvar $b9e83b7738a3c801$var$push = Array.prototype.push;\nvar $b9e83b7738a3c801$var$pushToArray = function(arr, valueOrArray) {\n $b9e83b7738a3c801$var$push.apply(arr, $b9e83b7738a3c801$var$isArray(valueOrArray) ? valueOrArray : [\n valueOrArray\n ]);\n};\nvar $b9e83b7738a3c801$var$toISO = Date.prototype.toISOString;\nvar $b9e83b7738a3c801$var$defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: \"utf-8\",\n charsetSentinel: false,\n delimiter: \"&\",\n encode: true,\n encoder: $ghlAC.encode,\n encodeValuesOnly: false,\n formatter: $9VinK.formatters[$9VinK.default],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return $b9e83b7738a3c801$var$toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\nvar $b9e83b7738a3c801$var$stringify = function stringify(object, prefix, generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots, serializeDate, formatter, encodeValuesOnly, charset) {\n var obj = object;\n if (typeof filter === \"function\") obj = filter(prefix, obj);\n else if (obj instanceof Date) obj = serializeDate(obj);\n else if (generateArrayPrefix === \"comma\" && $b9e83b7738a3c801$var$isArray(obj)) obj = obj.join(\",\");\n if (obj === null) {\n if (strictNullHandling) return encoder && !encodeValuesOnly ? encoder(prefix, $b9e83b7738a3c801$var$defaults.encoder, charset) : prefix;\n obj = \"\";\n }\n if (typeof obj === \"string\" || typeof obj === \"number\" || typeof obj === \"boolean\" || $ghlAC.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, $b9e83b7738a3c801$var$defaults.encoder, charset);\n return [\n formatter(keyValue) + \"=\" + formatter(encoder(obj, $b9e83b7738a3c801$var$defaults.encoder, charset))\n ];\n }\n return [\n formatter(prefix) + \"=\" + formatter(String(obj))\n ];\n }\n var values = [];\n if (typeof obj === \"undefined\") return values;\n var objKeys;\n if ($b9e83b7738a3c801$var$isArray(filter)) objKeys = filter;\n else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n for(var i = 0; i < objKeys.length; ++i){\n var key = objKeys[i];\n if (skipNulls && obj[key] === null) continue;\n if ($b9e83b7738a3c801$var$isArray(obj)) $b9e83b7738a3c801$var$pushToArray(values, stringify(obj[key], typeof generateArrayPrefix === \"function\" ? generateArrayPrefix(prefix, key) : prefix, generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots, serializeDate, formatter, encodeValuesOnly, charset));\n else $b9e83b7738a3c801$var$pushToArray(values, stringify(obj[key], prefix + (allowDots ? \".\" + key : \"[\" + key + \"]\"), generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots, serializeDate, formatter, encodeValuesOnly, charset));\n }\n return values;\n};\nvar $b9e83b7738a3c801$var$normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) return $b9e83b7738a3c801$var$defaults;\n if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== \"function\") throw new TypeError(\"Encoder has to be a function.\");\n var charset = opts.charset || $b9e83b7738a3c801$var$defaults.charset;\n if (typeof opts.charset !== \"undefined\" && opts.charset !== \"utf-8\" && opts.charset !== \"iso-8859-1\") throw new TypeError(\"The charset option must be either utf-8, iso-8859-1, or undefined\");\n var format = $9VinK.default;\n if (typeof opts.format !== \"undefined\") {\n if (!$b9e83b7738a3c801$var$has.call($9VinK.formatters, opts.format)) throw new TypeError(\"Unknown format option provided.\");\n format = opts.format;\n }\n var formatter = $9VinK.formatters[format];\n var filter = $b9e83b7738a3c801$var$defaults.filter;\n if (typeof opts.filter === \"function\" || $b9e83b7738a3c801$var$isArray(opts.filter)) filter = opts.filter;\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === \"boolean\" ? opts.addQueryPrefix : $b9e83b7738a3c801$var$defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === \"undefined\" ? $b9e83b7738a3c801$var$defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === \"boolean\" ? opts.charsetSentinel : $b9e83b7738a3c801$var$defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === \"undefined\" ? $b9e83b7738a3c801$var$defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === \"boolean\" ? opts.encode : $b9e83b7738a3c801$var$defaults.encode,\n encoder: typeof opts.encoder === \"function\" ? opts.encoder : $b9e83b7738a3c801$var$defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === \"boolean\" ? opts.encodeValuesOnly : $b9e83b7738a3c801$var$defaults.encodeValuesOnly,\n filter: filter,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === \"function\" ? opts.serializeDate : $b9e83b7738a3c801$var$defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === \"boolean\" ? opts.skipNulls : $b9e83b7738a3c801$var$defaults.skipNulls,\n sort: typeof opts.sort === \"function\" ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === \"boolean\" ? opts.strictNullHandling : $b9e83b7738a3c801$var$defaults.strictNullHandling\n };\n};\nmodule.exports = function(object, opts) {\n var obj = object;\n var options = $b9e83b7738a3c801$var$normalizeStringifyOptions(opts);\n var objKeys;\n var filter;\n if (typeof options.filter === \"function\") {\n filter = options.filter;\n obj = filter(\"\", obj);\n } else if ($b9e83b7738a3c801$var$isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n var keys = [];\n if (typeof obj !== \"object\" || obj === null) return \"\";\n var arrayFormat;\n if (opts && opts.arrayFormat in $b9e83b7738a3c801$var$arrayPrefixGenerators) arrayFormat = opts.arrayFormat;\n else if (opts && \"indices\" in opts) arrayFormat = opts.indices ? \"indices\" : \"repeat\";\n else arrayFormat = \"indices\";\n var generateArrayPrefix = $b9e83b7738a3c801$var$arrayPrefixGenerators[arrayFormat];\n if (!objKeys) objKeys = Object.keys(obj);\n if (options.sort) objKeys.sort(options.sort);\n for(var i = 0; i < objKeys.length; ++i){\n var key = objKeys[i];\n if (options.skipNulls && obj[key] === null) continue;\n $b9e83b7738a3c801$var$pushToArray(keys, $b9e83b7738a3c801$var$stringify(obj[key], key, generateArrayPrefix, options.strictNullHandling, options.skipNulls, options.encode ? options.encoder : null, options.filter, options.sort, options.allowDots, options.serializeDate, options.formatter, options.encodeValuesOnly, options.charset));\n }\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? \"?\" : \"\";\n if (options.charsetSentinel) {\n if (options.charset === \"iso-8859-1\") // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += \"utf8=%26%2310003%3B&\";\n else // encodeURIComponent('✓')\n prefix += \"utf8=%E2%9C%93&\";\n }\n return joined.length > 0 ? prefix + joined : \"\";\n};\n\n});\nparcelRegister(\"ghlAC\", function(module, exports) {\n\"use strict\";\nvar $bd9efb1a02ffc54b$var$has = Object.prototype.hasOwnProperty;\nvar $bd9efb1a02ffc54b$var$isArray = Array.isArray;\nvar $bd9efb1a02ffc54b$var$hexTable = function() {\n var array = [];\n for(var i = 0; i < 256; ++i)array.push(\"%\" + ((i < 16 ? \"0\" : \"\") + i.toString(16)).toUpperCase());\n return array;\n}();\nvar $bd9efb1a02ffc54b$var$compactQueue = function compactQueue(queue) {\n while(queue.length > 1){\n var item = queue.pop();\n var obj = item.obj[item.prop];\n if ($bd9efb1a02ffc54b$var$isArray(obj)) {\n var compacted = [];\n for(var j = 0; j < obj.length; ++j)if (typeof obj[j] !== \"undefined\") compacted.push(obj[j]);\n item.obj[item.prop] = compacted;\n }\n }\n};\nvar $bd9efb1a02ffc54b$var$arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for(var i = 0; i < source.length; ++i)if (typeof source[i] !== \"undefined\") obj[i] = source[i];\n return obj;\n};\nvar $bd9efb1a02ffc54b$var$merge = function merge(target, source, options) {\n if (!source) return target;\n if (typeof source !== \"object\") {\n if ($bd9efb1a02ffc54b$var$isArray(target)) target.push(source);\n else if (target && typeof target === \"object\") {\n if (options && (options.plainObjects || options.allowPrototypes) || !$bd9efb1a02ffc54b$var$has.call(Object.prototype, source)) target[source] = true;\n } else return [\n target,\n source\n ];\n return target;\n }\n if (!target || typeof target !== \"object\") return [\n target\n ].concat(source);\n var mergeTarget = target;\n if ($bd9efb1a02ffc54b$var$isArray(target) && !$bd9efb1a02ffc54b$var$isArray(source)) mergeTarget = $bd9efb1a02ffc54b$var$arrayToObject(target, options);\n if ($bd9efb1a02ffc54b$var$isArray(target) && $bd9efb1a02ffc54b$var$isArray(source)) {\n source.forEach(function(item, i) {\n if ($bd9efb1a02ffc54b$var$has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === \"object\" && item && typeof item === \"object\") target[i] = merge(targetItem, item, options);\n else target.push(item);\n } else target[i] = item;\n });\n return target;\n }\n return Object.keys(source).reduce(function(acc, key) {\n var value = source[key];\n if ($bd9efb1a02ffc54b$var$has.call(acc, key)) acc[key] = merge(acc[key], value, options);\n else acc[key] = value;\n return acc;\n }, mergeTarget);\n};\nvar $bd9efb1a02ffc54b$var$assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function(acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\nvar $bd9efb1a02ffc54b$var$decode = function(str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, \" \");\n if (charset === \"iso-8859-1\") // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\nvar $bd9efb1a02ffc54b$var$encode = function encode(str, defaultEncoder, charset) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) return str;\n var string = typeof str === \"string\" ? str : String(str);\n if (charset === \"iso-8859-1\") return escape(string).replace(/%u[0-9a-f]{4}/gi, function($0) {\n return \"%26%23\" + parseInt($0.slice(2), 16) + \"%3B\";\n });\n var out = \"\";\n for(var i = 0; i < string.length; ++i){\n var c = string.charCodeAt(i);\n if (c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || c >= 0x30 && c <= 0x39 // 0-9\n || c >= 0x41 && c <= 0x5A // a-z\n || c >= 0x61 && c <= 0x7A // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n if (c < 0x80) {\n out = out + $bd9efb1a02ffc54b$var$hexTable[c];\n continue;\n }\n if (c < 0x800) {\n out = out + ($bd9efb1a02ffc54b$var$hexTable[0xC0 | c >> 6] + $bd9efb1a02ffc54b$var$hexTable[0x80 | c & 0x3F]);\n continue;\n }\n if (c < 0xD800 || c >= 0xE000) {\n out = out + ($bd9efb1a02ffc54b$var$hexTable[0xE0 | c >> 12] + $bd9efb1a02ffc54b$var$hexTable[0x80 | c >> 6 & 0x3F] + $bd9efb1a02ffc54b$var$hexTable[0x80 | c & 0x3F]);\n continue;\n }\n i += 1;\n c = 0x10000 + ((c & 0x3FF) << 10 | string.charCodeAt(i) & 0x3FF);\n out += $bd9efb1a02ffc54b$var$hexTable[0xF0 | c >> 18] + $bd9efb1a02ffc54b$var$hexTable[0x80 | c >> 12 & 0x3F] + $bd9efb1a02ffc54b$var$hexTable[0x80 | c >> 6 & 0x3F] + $bd9efb1a02ffc54b$var$hexTable[0x80 | c & 0x3F];\n }\n return out;\n};\nvar $bd9efb1a02ffc54b$var$compact = function compact(value) {\n var queue = [\n {\n obj: {\n o: value\n },\n prop: \"o\"\n }\n ];\n var refs = [];\n for(var i = 0; i < queue.length; ++i){\n var item = queue[i];\n var obj = item.obj[item.prop];\n var keys = Object.keys(obj);\n for(var j = 0; j < keys.length; ++j){\n var key = keys[j];\n var val = obj[key];\n if (typeof val === \"object\" && val !== null && refs.indexOf(val) === -1) {\n queue.push({\n obj: obj,\n prop: key\n });\n refs.push(val);\n }\n }\n }\n $bd9efb1a02ffc54b$var$compactQueue(queue);\n return value;\n};\nvar $bd9efb1a02ffc54b$var$isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === \"[object RegExp]\";\n};\nvar $bd9efb1a02ffc54b$var$isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== \"object\") return false;\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\nvar $bd9efb1a02ffc54b$var$combine = function combine(a, b) {\n return [].concat(a, b);\n};\nmodule.exports = {\n arrayToObject: $bd9efb1a02ffc54b$var$arrayToObject,\n assign: $bd9efb1a02ffc54b$var$assign,\n combine: $bd9efb1a02ffc54b$var$combine,\n compact: $bd9efb1a02ffc54b$var$compact,\n decode: $bd9efb1a02ffc54b$var$decode,\n encode: $bd9efb1a02ffc54b$var$encode,\n isBuffer: $bd9efb1a02ffc54b$var$isBuffer,\n isRegExp: $bd9efb1a02ffc54b$var$isRegExp,\n merge: $bd9efb1a02ffc54b$var$merge\n};\n\n});\n\nparcelRegister(\"9VinK\", function(module, exports) {\n\"use strict\";\nvar $7397b23337a6c3fb$var$replace = String.prototype.replace;\nvar $7397b23337a6c3fb$var$percentTwenties = /%20/g;\nmodule.exports = {\n \"default\": \"RFC3986\",\n formatters: {\n RFC1738: function(value) {\n return $7397b23337a6c3fb$var$replace.call(value, $7397b23337a6c3fb$var$percentTwenties, \"+\");\n },\n RFC3986: function(value) {\n return value;\n }\n },\n RFC1738: \"RFC1738\",\n RFC3986: \"RFC3986\"\n};\n\n});\n\n\nparcelRegister(\"iXMLF\", function(module, exports) {\n\"use strict\";\n\nvar $ghlAC = parcelRequire(\"ghlAC\");\nvar $dce390f7be7ccd0b$var$has = Object.prototype.hasOwnProperty;\nvar $dce390f7be7ccd0b$var$defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n charset: \"utf-8\",\n charsetSentinel: false,\n comma: false,\n decoder: $ghlAC.decode,\n delimiter: \"&\",\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\nvar $dce390f7be7ccd0b$var$interpretNumericEntities = function(str) {\n return str.replace(/&#(\\d+);/g, function($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar $dce390f7be7ccd0b$var$isoSentinel = \"utf8=%26%2310003%3B\"; // encodeURIComponent('✓')\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar $dce390f7be7ccd0b$var$charsetSentinel = \"utf8=%E2%9C%93\"; // encodeURIComponent('✓')\nvar $dce390f7be7ccd0b$var$parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, \"\") : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n var charset = options.charset;\n if (options.charsetSentinel) {\n for(i = 0; i < parts.length; ++i)if (parts[i].indexOf(\"utf8=\") === 0) {\n if (parts[i] === $dce390f7be7ccd0b$var$charsetSentinel) charset = \"utf-8\";\n else if (parts[i] === $dce390f7be7ccd0b$var$isoSentinel) charset = \"iso-8859-1\";\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n for(i = 0; i < parts.length; ++i){\n if (i === skipIndex) continue;\n var part = parts[i];\n var bracketEqualsPos = part.indexOf(\"]=\");\n var pos = bracketEqualsPos === -1 ? part.indexOf(\"=\") : bracketEqualsPos + 1;\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, $dce390f7be7ccd0b$var$defaults.decoder, charset);\n val = options.strictNullHandling ? null : \"\";\n } else {\n key = options.decoder(part.slice(0, pos), $dce390f7be7ccd0b$var$defaults.decoder, charset);\n val = options.decoder(part.slice(pos + 1), $dce390f7be7ccd0b$var$defaults.decoder, charset);\n }\n if (val && options.interpretNumericEntities && charset === \"iso-8859-1\") val = $dce390f7be7ccd0b$var$interpretNumericEntities(val);\n if (val && options.comma && val.indexOf(\",\") > -1) val = val.split(\",\");\n if ($dce390f7be7ccd0b$var$has.call(obj, key)) obj[key] = $ghlAC.combine(obj[key], val);\n else obj[key] = val;\n }\n return obj;\n};\nvar $dce390f7be7ccd0b$var$parseObject = function(chain, val, options) {\n var leaf = val;\n for(var i = chain.length - 1; i >= 0; --i){\n var obj;\n var root = chain[i];\n if (root === \"[]\" && options.parseArrays) obj = [].concat(leaf);\n else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === \"[\" && root.charAt(root.length - 1) === \"]\" ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === \"\") obj = {\n 0: leaf\n };\n else if (!isNaN(index) && root !== cleanRoot && String(index) === cleanRoot && index >= 0 && options.parseArrays && index <= options.arrayLimit) {\n obj = [];\n obj[index] = leaf;\n } else obj[cleanRoot] = leaf;\n }\n leaf = obj;\n }\n return leaf;\n};\nvar $dce390f7be7ccd0b$var$parseKeys = function parseQueryStringKeys(givenKey, val, options) {\n if (!givenKey) return;\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, \"[$1]\") : givenKey;\n // The regex chunks\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n // Get the parent\n var segment = brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n // Stash the parent if it exists\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && $dce390f7be7ccd0b$var$has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) return;\n }\n keys.push(parent);\n }\n // Loop through children appending to the array until we hit depth\n var i = 0;\n while((segment = child.exec(key)) !== null && i < options.depth){\n i += 1;\n if (!options.plainObjects && $dce390f7be7ccd0b$var$has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) return;\n }\n keys.push(segment[1]);\n }\n // If there's a remainder, just add whatever is left\n if (segment) keys.push(\"[\" + key.slice(segment.index) + \"]\");\n return $dce390f7be7ccd0b$var$parseObject(keys, val, options);\n};\nvar $dce390f7be7ccd0b$var$normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) return $dce390f7be7ccd0b$var$defaults;\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== \"function\") throw new TypeError(\"Decoder has to be a function.\");\n if (typeof opts.charset !== \"undefined\" && opts.charset !== \"utf-8\" && opts.charset !== \"iso-8859-1\") throw new Error(\"The charset option must be either utf-8, iso-8859-1, or undefined\");\n var charset = typeof opts.charset === \"undefined\" ? $dce390f7be7ccd0b$var$defaults.charset : opts.charset;\n return {\n allowDots: typeof opts.allowDots === \"undefined\" ? $dce390f7be7ccd0b$var$defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === \"boolean\" ? opts.allowPrototypes : $dce390f7be7ccd0b$var$defaults.allowPrototypes,\n arrayLimit: typeof opts.arrayLimit === \"number\" ? opts.arrayLimit : $dce390f7be7ccd0b$var$defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === \"boolean\" ? opts.charsetSentinel : $dce390f7be7ccd0b$var$defaults.charsetSentinel,\n comma: typeof opts.comma === \"boolean\" ? opts.comma : $dce390f7be7ccd0b$var$defaults.comma,\n decoder: typeof opts.decoder === \"function\" ? opts.decoder : $dce390f7be7ccd0b$var$defaults.decoder,\n delimiter: typeof opts.delimiter === \"string\" || $ghlAC.isRegExp(opts.delimiter) ? opts.delimiter : $dce390f7be7ccd0b$var$defaults.delimiter,\n depth: typeof opts.depth === \"number\" ? opts.depth : $dce390f7be7ccd0b$var$defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === \"boolean\" ? opts.interpretNumericEntities : $dce390f7be7ccd0b$var$defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === \"number\" ? opts.parameterLimit : $dce390f7be7ccd0b$var$defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === \"boolean\" ? opts.plainObjects : $dce390f7be7ccd0b$var$defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === \"boolean\" ? opts.strictNullHandling : $dce390f7be7ccd0b$var$defaults.strictNullHandling\n };\n};\nmodule.exports = function(str, opts) {\n var options = $dce390f7be7ccd0b$var$normalizeParseOptions(opts);\n if (str === \"\" || str === null || typeof str === \"undefined\") return options.plainObjects ? Object.create(null) : {};\n var tempObj = typeof str === \"string\" ? $dce390f7be7ccd0b$var$parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n // Iterate over the keys and setup the new object\n var keys = Object.keys(tempObj);\n for(var i = 0; i < keys.length; ++i){\n var key = keys[i];\n var newObj = $dce390f7be7ccd0b$var$parseKeys(key, tempObj[key], options);\n obj = $ghlAC.merge(obj, newObj, options);\n }\n return $ghlAC.compact(obj);\n};\n\n});\n\n\nparcelRegister(\"3U8SM\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $2d7d7def1c4acb78$export$2e2bcd8739ae039; });\n\nvar $96kno = parcelRequire(\"96kno\");\n\nvar $hqhdr = parcelRequire(\"hqhdr\");\n\nvar $lUBOG = parcelRequire(\"lUBOG\");\nconst $2d7d7def1c4acb78$var$axiosInstance = (0, (/*@__PURE__*/$parcel$interopDefault($96kno))).create({\n baseURL: (0, $lUBOG.default).E2E_API_URL,\n timeout: 60000,\n withCredentials: true,\n paramsSerializer: (params)=>{\n return (0, (/*@__PURE__*/$parcel$interopDefault($hqhdr))).stringify(params, {\n skipNulls: true\n });\n }\n});\nvar $2d7d7def1c4acb78$export$2e2bcd8739ae039 = $2d7d7def1c4acb78$var$axiosInstance;\n\n});\nparcelRegister(\"lUBOG\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ff3c298267595352$export$2e2bcd8739ae039; });\nlet $ff3c298267595352$var$E2E_API_URL = `https://api.gridmarket.xyz/`;\nlet $ff3c298267595352$var$PROSPECTING_API_URL = `https://prospecting-api.gridmarket.xyz/`;\nlet $ff3c298267595352$var$MARTIN_API_URL = `https://martin.gridmarket.xyz/`;\nlet $ff3c298267595352$var$TILES_API_URL = \"https://tiles.gridmarket.xyz/\";\nlet $ff3c298267595352$var$ENVIRONMENT = \"production\";\nif (window.location.hostname === \"dev.gridmarket.xyz\") {\n $ff3c298267595352$var$E2E_API_URL = `https://api.gridmarket.xyz/`;\n $ff3c298267595352$var$PROSPECTING_API_URL = `https://prospecting-api.gridmarket.xyz/`;\n $ff3c298267595352$var$ENVIRONMENT = \"development\";\n}\nif (window.location.hostname === \"dev.gridmarket.net\") {\n $ff3c298267595352$var$E2E_API_URL = `https://staging.gridmarket.com/e2e-api/`;\n $ff3c298267595352$var$PROSPECTING_API_URL = `https://staging.gridmarket.com/prospecting-api/`;\n $ff3c298267595352$var$MARTIN_API_URL = `https://staging.gridmarket.com/martin/`;\n $ff3c298267595352$var$TILES_API_URL = \"https://staging.gridmarket.com/tiles/\";\n $ff3c298267595352$var$ENVIRONMENT = \"staging\";\n}\nif (window.location.hostname === \"platform.gridmarket.xyz\") {\n $ff3c298267595352$var$E2E_API_URL = `https://platform.gridmarket.xyz/e2e-api/`;\n $ff3c298267595352$var$PROSPECTING_API_URL = `https://platform.gridmarket.xyz/prospecting-api/`;\n $ff3c298267595352$var$MARTIN_API_URL = `https://platform.gridmarket.xyz/martin/`;\n $ff3c298267595352$var$TILES_API_URL = \"https://platform.gridmarket.xyz/tiles/\";\n $ff3c298267595352$var$ENVIRONMENT = \"development\";\n}\nif (window.location.hostname === \"platform.gridmarket.com\" || window.location.hostname === \"live.gridmarket.net\") {\n $ff3c298267595352$var$E2E_API_URL = `https://platform.gridmarket.com/e2e-api/`;\n $ff3c298267595352$var$PROSPECTING_API_URL = `https://platform.gridmarket.com/prospecting-api/`;\n $ff3c298267595352$var$MARTIN_API_URL = `https://platform.gridmarket.com/martin/`;\n $ff3c298267595352$var$TILES_API_URL = \"https://platform.gridmarket.com/tiles/\";\n $ff3c298267595352$var$ENVIRONMENT = \"production\";\n}\nif (window.location.hostname === \"staging.gridmarket.com\" || window.location.hostname === \"localhost\" || window.location.hostname === \"devtasks--spontaneous-genie-4ce6f9.netlify.app\") {\n $ff3c298267595352$var$E2E_API_URL = `https://staging.gridmarket.com/e2e-api/`;\n $ff3c298267595352$var$PROSPECTING_API_URL = `https://staging.gridmarket.com/prospecting-api/`;\n $ff3c298267595352$var$MARTIN_API_URL = `https://staging.gridmarket.com/martin/`;\n $ff3c298267595352$var$TILES_API_URL = \"https://staging.gridmarket.com/tiles/\";\n $ff3c298267595352$var$ENVIRONMENT = \"staging\";\n}\nvar $ff3c298267595352$export$2e2bcd8739ae039 = {\n E2E_API_URL: $ff3c298267595352$var$E2E_API_URL,\n PROSPECTING_API_URL: $ff3c298267595352$var$PROSPECTING_API_URL,\n MARTIN_API_URL: $ff3c298267595352$var$MARTIN_API_URL,\n TILES_API_URL: $ff3c298267595352$var$TILES_API_URL,\n ENVIRONMENT: $ff3c298267595352$var$ENVIRONMENT\n};\n\n});\n\n\n\nparcelRegister(\"4WgAH\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $398972cd9d4d2167$export$2e2bcd8739ae039; });\n\nvar $cr2GM = parcelRequire(\"cr2GM\");\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $3U8SM = parcelRequire(\"3U8SM\");\n\nvar $lxEiN = parcelRequire(\"lxEiN\");\n\nvar $fuiMG = parcelRequire(\"fuiMG\");\nclass $398972cd9d4d2167$var$Store {\n get groupedProjectsByTerm() {\n const projects = [\n ...this.resultMap.values()\n ].filter((project)=>{\n if (!this.filters.name) return true;\n return new RegExp(this.filters.name, \"i\").test(project.name);\n });\n const groupedProjects = (0, $fuiMG.groupBy)(projects, \"status\");\n return groupedProjects;\n }\n setResults(results) {\n this.resultMap = results;\n }\n constructor(){\n (0, $cr2GM._)(this, \"project\", null);\n (0, $cr2GM._)(this, \"members\", []);\n (0, $cr2GM._)(this, \"projects\", new Map());\n (0, $cr2GM._)(this, \"totalResults\", 0);\n (0, $cr2GM._)(this, \"resultMap\", new Map());\n (0, $cr2GM._)(this, \"filters\", {\n name: \"\"\n });\n (0, $cr2GM._)(this, \"removeProject\", (id)=>{\n this.projects.delete(id);\n const resultMap = new Map(this.resultMap);\n resultMap.delete(id);\n this.resultMap = resultMap;\n // console.log(JSON.stringify(resultMap.size));\n });\n (0, $cr2GM._)(this, \"loadProject\", async (id)=>{\n try {\n const { data: data } = await (0, $lxEiN.default).Project.getProject(id);\n const hasAccess = data.data.has_access;\n if (typeof hasAccess !== \"undefined\" && hasAccess === false) {\n this.removeProject(id);\n return null;\n }\n if (data.data) {\n this.projects.set(data.data.id, data.data);\n return this.projects.get(id);\n }\n } catch (err) {\n this.removeProject(id);\n return null;\n }\n });\n (0, $cr2GM._)(this, \"setFilter\", (name, value)=>{\n if (value === null) {\n (0, $gOgWf.remove)(this.filters, name, value);\n return;\n }\n (0, $gOgWf.set)(this.filters, name, value);\n });\n (0, $cr2GM._)(this, \"get\", (id)=>{\n return this.projects.get(id);\n });\n (0, $cr2GM._)(this, \"fetchAll\", async ()=>{\n const { data: data } = await (0, $lxEiN.default).Project.getProjects();\n const arr = data.data.map((result)=>{\n return [\n result.id,\n result\n ];\n });\n this.resultMap = new Map(arr);\n });\n (0, $cr2GM._)(this, \"deleteProject\", async (id)=>{\n const { data: data } = await (0, $lxEiN.default).Project.deleteProject(id);\n const currentResults = new Map(this.resultMap);\n currentResults.delete(id);\n this.resultMap = currentResults;\n return data.data;\n });\n (0, $cr2GM._)(this, \"getProjectBuilding\", async (projectId, buildingId)=>{\n const { data: data } = await (0, $lxEiN.default).Project.getProjectBuilding(projectId, buildingId);\n return data.data;\n });\n (0, $cr2GM._)(this, \"deleteProjectBuilding\", async (projectId, buildingId)=>{\n // const currentResults = new Map(this.resultMap);\n // const project = currentResults.get(projectId);\n // project.buildings = project.buildings.filter(b => b.id !== buildingId);\n // currentResults.set(project.id, project);\n // this.resultMap = currentResults;\n const { data: data } = await (0, $lxEiN.default).Project.removeBuilding(projectId, [\n {\n id: buildingId\n }\n ]);\n return data;\n });\n (0, $cr2GM._)(this, \"updateProjectBuildingGeometry\", async (projectId, buildingId, geometry)=>{\n (0, $lxEiN.default).Project.updateProjectBuildingGeometry(projectId, buildingId, geometry);\n });\n (0, $cr2GM._)(this, \"updateProjectBuilding\", async (projectId, buildingData)=>{\n const { data: data } = await (0, $lxEiN.default).Project.updateProjectBuilding(projectId, buildingData.id, buildingData);\n return data.data;\n });\n (0, $cr2GM._)(this, \"createProjectBuilding\", async (projectId, buildingData)=>{\n const { data: data } = await (0, $lxEiN.default).Project.createBuilding(projectId, buildingData);\n return data.data;\n });\n (0, $cr2GM._)(this, \"updateProject\", async (id, params)=>{\n const { data: data } = await (0, $3U8SM.default).patch(`/project/${id}`, params);\n const project = this.resultMap.get(id);\n if (project) {\n const resultMap = new Map(this.resultMap);\n resultMap.set(id, (0, $edHbI._)((0, $2QP2i._)({}, project), {\n name: data.data.name,\n color: data.data.color\n }));\n this.resultMap = resultMap;\n }\n });\n (0, $cr2GM._)(this, \"setMembers\", async (members)=>{\n this.members = members;\n });\n (0, $cr2GM._)(this, \"getProjectBuildingFeature\", async (projectId, buildingId)=>{\n const { data: data } = await (0, $3U8SM.default).get(`/project/${projectId}/building/${buildingId}/feature`);\n // this.projectBuildingRegistry.set(data.data.id, formattedData);\n return data;\n });\n (0, $cr2GM._)(this, \"createProject\", async (params)=>{\n const { data: data } = await (0, $lxEiN.default).Project.createProject(params);\n if (data.ok) return data.data;\n });\n (0, $gOgWf.makeObservable)(this, {\n project: (0, $gOgWf.observable),\n members: (0, $gOgWf.observable),\n projects: (0, $gOgWf.observable),\n totalResults: (0, $gOgWf.observable),\n resultMap: (0, $gOgWf.observable),\n filters: (0, $gOgWf.observable),\n loadProject: (0, $gOgWf.action),\n groupedProjectsByTerm: (0, $gOgWf.computed),\n setFilter: (0, $gOgWf.action),\n get: (0, $gOgWf.action),\n setResults: (0, $gOgWf.action),\n fetchAll: (0, $gOgWf.action),\n deleteProject: (0, $gOgWf.action),\n getProjectBuilding: (0, $gOgWf.action),\n deleteProjectBuilding: (0, $gOgWf.action),\n updateProjectBuildingGeometry: (0, $gOgWf.action),\n updateProjectBuilding: (0, $gOgWf.action),\n createProjectBuilding: (0, $gOgWf.action),\n updateProject: (0, $gOgWf.action),\n setMembers: (0, $gOgWf.action),\n getProjectBuildingFeature: (0, $gOgWf.action),\n createProject: (0, $gOgWf.action)\n });\n }\n}\nconst $398972cd9d4d2167$var$store = new $398972cd9d4d2167$var$Store();\nvar $398972cd9d4d2167$export$2e2bcd8739ae039 = $398972cd9d4d2167$var$store;\n\n});\nparcelRegister(\"fuiMG\", function(module, exports) {\n\n$parcel$export(module.exports, \"formatNumber\", function () { return $b4683a7d19cfa4ef$export$f5dd818bff069720; });\n$parcel$export(module.exports, \"abbreviateNumber\", function () { return $b4683a7d19cfa4ef$export$36d5e0d2b514f546; });\n$parcel$export(module.exports, \"getDistanceFromLatLonInKm\", function () { return $b4683a7d19cfa4ef$export$55ad5c77306bdcab; });\n$parcel$export(module.exports, \"metersToMiles\", function () { return $b4683a7d19cfa4ef$export$2ffb1a8ba3bb2151; });\n$parcel$export(module.exports, \"downloadFile\", function () { return $b4683a7d19cfa4ef$export$bb3b75778e3e272; });\n$parcel$export(module.exports, \"abbreviate\", function () { return $b4683a7d19cfa4ef$export$f8e59455b4837291; });\n$parcel$export(module.exports, \"groupBy\", function () { return $b4683a7d19cfa4ef$export$3f063810d7bf01bd; });\n$parcel$export(module.exports, \"hexToRgb\", function () { return $b4683a7d19cfa4ef$export$5a544e13ad4e1fa5; });\n$parcel$export(module.exports, \"elevateGeometry\", function () { return $b4683a7d19cfa4ef$export$639c3d0f541a8c10; });\n$parcel$export(module.exports, \"getElevationFromGeometry\", function () { return $b4683a7d19cfa4ef$export$bf65b5d7dcc5a942; });\n$parcel$export(module.exports, \"humanDateTime\", function () { return $b4683a7d19cfa4ef$export$9617bc2569567fac; });\n$parcel$export(module.exports, \"humanDate\", function () { return $b4683a7d19cfa4ef$export$a41d61df4ac70627; });\n$parcel$export(module.exports, \"humanFileSize\", function () { return $b4683a7d19cfa4ef$export$291541584f4e762f; });\n$parcel$export(module.exports, \"isElementInViewport\", function () { return $b4683a7d19cfa4ef$export$7cc0e9dd2435cb30; });\n$parcel$export(module.exports, \"timeSince\", function () { return $b4683a7d19cfa4ef$export$79c01495e306fbf5; });\n/* eslint-disable no-param-reassign */ \nvar $kPMXY = parcelRequire(\"kPMXY\");\n\nvar $eFsDQ = parcelRequire(\"eFsDQ\");\n\nvar $lUBOG = parcelRequire(\"lUBOG\");\nfunction $b4683a7d19cfa4ef$export$f5dd818bff069720(value, digits) {\n const options = {\n minimumFractionDigits: value > 1000 || Number.isInteger(value) ? 0 : 2,\n maximumFractionDigits: value > 1000 || Number.isInteger(value) ? 0 : 2\n };\n if (digits) {\n options.maximumFractionDigits = digits;\n options.minimumFractionDigits = digits;\n }\n return new Intl.NumberFormat(\"en-US\", options).format(value);\n}\nfunction $b4683a7d19cfa4ef$export$36d5e0d2b514f546(value, unit) {\n const sign = Math.sign(value);\n let newValue = Math.abs(value);\n let suffixes = [\n \"\",\n \"K\",\n \"M\",\n \"B\",\n \"T\"\n ];\n if (unit === \"kW\") suffixes = [\n \"kW\",\n \"MW\",\n \"GW\",\n \"TW\",\n \"PW\"\n ];\n let suffixNum = 0;\n while(newValue >= 1000){\n newValue /= 1000;\n suffixNum += 1;\n }\n const newValueWithSign = sign * newValue;\n const newValueWithSignPercision = $b4683a7d19cfa4ef$export$f5dd818bff069720(newValueWithSign);\n const suffix = suffixes[suffixNum];\n const result = `${newValueWithSignPercision}${suffix}`;\n return result;\n}\nfunction $b4683a7d19cfa4ef$export$55ad5c77306bdcab(coordinates1, coordinates2) {\n const start = {\n latitude: coordinates1[1],\n longitude: coordinates1[0]\n };\n const end = {\n latitude: coordinates2[1],\n longitude: coordinates2[0]\n };\n return (0, (/*@__PURE__*/$parcel$interopDefault($kPMXY)))(start, end);\n}\nfunction $b4683a7d19cfa4ef$export$fa562257f40442f8(osmId) {\n return osmId < 0 ? `R${osmId}` : `W${Math.abs(osmId)}`;\n}\nfunction $b4683a7d19cfa4ef$export$1372c1a6b93abfb8(appId) {\n if (!appId) return null;\n return parseInt(appId.replace(\"W\", \"\").replace(\"R\", \"-\"), 10);\n}\nfunction $b4683a7d19cfa4ef$export$2ffb1a8ba3bb2151(meters, fractionDigits = 2) {\n return (meters * 0.000621371192).toFixed(fractionDigits);\n}\nasync function $b4683a7d19cfa4ef$export$bb3b75778e3e272(url, name, delay = 0) {\n const sleep = (ms)=>new Promise((resolve)=>setTimeout(resolve, ms));\n await sleep(delay);\n const a = document.createElement(\"a\");\n a.download = name;\n a.href = url.startsWith(\"http\") ? url : `${(0, $lUBOG.default).E2E_API_URL}${url}`;\n a.target = \"_blank\";\n a.style.display = \"none\";\n document.body.append(a);\n a.click();\n // Chrome requires the timeout\n await sleep(100);\n a.remove();\n}\nfunction $b4683a7d19cfa4ef$export$f8e59455b4837291(val) {\n const match = val.match(/[0-9A-Z]/g);\n if (!match) return val.substring(0, 2);\n const short = match.join(\"\").substring(0, 2);\n if (short.length > 1) return short;\n return val.substring(0, 2);\n}\nfunction $b4683a7d19cfa4ef$export$3f063810d7bf01bd(xs, key) {\n return xs.reduce((rv, x)=>{\n (rv[x[key]] = rv[x[key]] || []).push(x);\n return rv;\n }, {});\n}\nfunction $b4683a7d19cfa4ef$export$5a544e13ad4e1fa5(hex) {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? [\n parseInt(result[1], 16),\n parseInt(result[2], 16),\n parseInt(result[3], 16)\n ] : null;\n}\nfunction $b4683a7d19cfa4ef$export$639c3d0f541a8c10(geometry, elevation) {\n const { type: type } = geometry;\n let coordinates = [\n ...geometry.coordinates\n ];\n if (type === \"Point\") coordinates[2] = elevation;\n if (type === \"Polygon\") coordinates = coordinates.map((coordinateGroup)=>{\n return coordinateGroup.map((coord)=>{\n return [\n coord[0],\n coord[1],\n elevation\n ];\n });\n });\n if (type === \"LineString\") coordinates = coordinates.map((coord)=>{\n return [\n coord[0],\n coord[1],\n elevation\n ];\n });\n return {\n type: type,\n coordinates: coordinates\n };\n}\nfunction $b4683a7d19cfa4ef$export$bf65b5d7dcc5a942(geometry) {\n var _geometry_coordinates__, _geometry_coordinates_, _geometry_coordinates_1;\n if ((geometry === null || geometry === void 0 ? void 0 : geometry.type) === \"Point\" && geometry.coordinates[2]) return geometry.coordinates[2];\n if ((geometry === null || geometry === void 0 ? void 0 : geometry.type) === \"Polygon\" && ((_geometry_coordinates_ = geometry.coordinates[0]) === null || _geometry_coordinates_ === void 0 ? void 0 : (_geometry_coordinates__ = _geometry_coordinates_[0]) === null || _geometry_coordinates__ === void 0 ? void 0 : _geometry_coordinates__[2])) return geometry.coordinates[0][0][2];\n if ((geometry === null || geometry === void 0 ? void 0 : geometry.type) === \"LineString\" && ((_geometry_coordinates_1 = geometry.coordinates[0]) === null || _geometry_coordinates_1 === void 0 ? void 0 : _geometry_coordinates_1[2])) return geometry.coordinates[0][2];\n return 0;\n}\nfunction $b4683a7d19cfa4ef$export$9617bc2569567fac(timeLike) {\n const DATE_FORMAT = \"MMM d, yyyy HH:mm\";\n if (timeLike instanceof Date) return (0, $eFsDQ.default)(timeLike, DATE_FORMAT);\n const unixTime = typeof timeLike === \"string\" ? parseInt(timeLike, 10) : timeLike;\n const date = new Date(unixTime * 1000);\n return (0, $eFsDQ.default)(date, DATE_FORMAT);\n}\nfunction $b4683a7d19cfa4ef$export$a41d61df4ac70627(timeLike) {\n const DATE_FORMAT = \"MMM d, yyyy\";\n if (timeLike instanceof Date) return (0, $eFsDQ.default)(timeLike, DATE_FORMAT);\n const unixTime = typeof timeLike === \"string\" ? parseInt(timeLike, 10) : timeLike;\n const date = new Date(unixTime * 1000);\n return (0, $eFsDQ.default)(date, DATE_FORMAT);\n}\nfunction $b4683a7d19cfa4ef$export$291541584f4e762f(byteSize, si = true) {\n let bytes = byteSize;\n const thresh = si ? 1000 : 1024;\n if (Math.abs(bytes) < thresh) return `${bytes} B`;\n const units = si ? [\n \"kB\",\n \"MB\",\n \"GB\",\n \"TB\",\n \"PB\",\n \"EB\",\n \"ZB\",\n \"YB\"\n ] : [\n \"KiB\",\n \"MiB\",\n \"GiB\",\n \"TiB\",\n \"PiB\",\n \"EiB\",\n \"ZiB\",\n \"YiB\"\n ];\n let u = -1;\n do {\n bytes /= thresh;\n u += 1;\n }while (Math.abs(bytes) >= thresh && u < units.length - 1);\n return `${bytes.toFixed(1)} ${units[u]}`;\n}\nfunction $b4683a7d19cfa4ef$export$7cc0e9dd2435cb30(el) {\n if (!el) return false;\n const rect = el.getBoundingClientRect();\n return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);\n}\nfunction $b4683a7d19cfa4ef$export$79c01495e306fbf5(date) {\n const seconds = Math.floor((new Date() - date) / 1000);\n let interval = seconds / 31536000;\n if (interval > 1) return `${Math.floor(interval)} years`;\n interval = seconds / 2592000;\n if (interval > 1) return `${Math.floor(interval)} months`;\n interval = seconds / 86400;\n if (interval > 1) return `${Math.floor(interval)} days`;\n interval = seconds / 3600;\n if (interval > 1) return `${Math.floor(interval)} hours`;\n interval = seconds / 60;\n if (interval > 1) return `${Math.floor(interval)} minutes`;\n return `${Math.floor(seconds)} seconds`;\n}\nfunction $b4683a7d19cfa4ef$export$da805ba9431c7107(arr, predicate) {\n const cb = typeof predicate === \"function\" ? predicate : (o)=>o[predicate];\n return [\n ...arr.reduce((map, item)=>{\n const key = item === null || item === undefined ? item : cb(item);\n // eslint-disable-next-line no-unused-expressions\n map.has(key) || map.set(key, item);\n return map;\n }, new Map()).values()\n ];\n}\n\n});\nparcelRegister(\"kPMXY\", function(module, exports) {\nvar $f2ae8dc4aac89f36$var$haversine = function() {\n var RADII = {\n km: 6371,\n mile: 3960,\n meter: 6371000,\n nmi: 3440\n };\n // convert to radians\n var toRad = function(num) {\n return num * Math.PI / 180;\n };\n // convert coordinates to standard format based on the passed format option\n var convertCoordinates = function(format, coordinates) {\n switch(format){\n case \"[lat,lon]\":\n return {\n latitude: coordinates[0],\n longitude: coordinates[1]\n };\n case \"[lon,lat]\":\n return {\n latitude: coordinates[1],\n longitude: coordinates[0]\n };\n case \"{lon,lat}\":\n return {\n latitude: coordinates.lat,\n longitude: coordinates.lon\n };\n case \"{lat,lng}\":\n return {\n latitude: coordinates.lat,\n longitude: coordinates.lng\n };\n case \"geojson\":\n return {\n latitude: coordinates.geometry.coordinates[1],\n longitude: coordinates.geometry.coordinates[0]\n };\n default:\n return coordinates;\n }\n };\n return function haversine(startCoordinates, endCoordinates, options) {\n options = options || {};\n var R = options.unit in RADII ? RADII[options.unit] : RADII.km;\n var start = convertCoordinates(options.format, startCoordinates);\n var end = convertCoordinates(options.format, endCoordinates);\n var dLat = toRad(end.latitude - start.latitude);\n var dLon = toRad(end.longitude - start.longitude);\n var lat1 = toRad(start.latitude);\n var lat2 = toRad(end.latitude);\n var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2);\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n if (options.threshold) return options.threshold > R * c;\n return R * c;\n };\n}();\nif (0, module.exports) module.exports = $f2ae8dc4aac89f36$var$haversine;\n\n});\n\nparcelRegister(\"eFsDQ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $aadb1ca5365d6e34$export$2e2bcd8739ae039; });\n\nvar $hK69R = parcelRequire(\"hK69R\");\n\nvar $iy2cb = parcelRequire(\"iy2cb\");\n\nvar $60RHq = parcelRequire(\"60RHq\");\n\nvar $8H1yM = parcelRequire(\"8H1yM\");\n\nvar $4QPmc = parcelRequire(\"4QPmc\");\n\nvar $cMC1N = parcelRequire(\"cMC1N\");\n\nvar $4lcyT = parcelRequire(\"4lcyT\");\n\nvar $38P9V = parcelRequire(\"38P9V\");\n\nvar $85Mfn = parcelRequire(\"85Mfn\");\n\nvar $fpVqC = parcelRequire(\"fpVqC\");\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar $aadb1ca5365d6e34$var$formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar $aadb1ca5365d6e34$var$longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar $aadb1ca5365d6e34$var$escapedStringRegExp = /^'([^]*?)'?$/;\nvar $aadb1ca5365d6e34$var$doubleQuoteRegExp = /''/g;\nvar $aadb1ca5365d6e34$var$unescapedLatinCharacterRegExp = /[a-zA-Z]/;\nfunction $aadb1ca5365d6e34$export$2e2bcd8739ae039(dirtyDate, dirtyFormatStr, dirtyOptions) {\n (0, $fpVqC.default)(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || (0, $iy2cb.default);\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : (0, $85Mfn.default)(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : (0, $85Mfn.default)(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) throw new RangeError(\"firstWeekContainsDate must be between 1 and 7 inclusively\");\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : (0, $85Mfn.default)(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : (0, $85Mfn.default)(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) throw new RangeError(\"weekStartsOn must be between 0 and 6 inclusively\");\n if (!locale.localize) throw new RangeError(\"locale must contain localize property\");\n if (!locale.formatLong) throw new RangeError(\"locale must contain formatLong property\");\n var originalDate = (0, $8H1yM.default)(dirtyDate);\n if (!(0, $hK69R.default)(originalDate)) throw new RangeError(\"Invalid time value\");\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = (0, $4lcyT.default)(originalDate);\n var utcDate = (0, $60RHq.default)(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match($aadb1ca5365d6e34$var$longFormattingTokensRegExp).map(function(substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n var longFormatter = (0, $cMC1N.default)[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n return substring;\n }).join(\"\").match($aadb1ca5365d6e34$var$formattingTokensRegExp).map(function(substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") return \"'\";\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") return $aadb1ca5365d6e34$var$cleanEscapedString(substring);\n var formatter = (0, $4QPmc.default)[firstCharacter];\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && (0, $38P9V.isProtectedWeekYearToken)(substring)) (0, $38P9V.throwProtectedError)(substring);\n if (!options.useAdditionalDayOfYearTokens && (0, $38P9V.isProtectedDayOfYearToken)(substring)) (0, $38P9V.throwProtectedError)(substring);\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match($aadb1ca5365d6e34$var$unescapedLatinCharacterRegExp)) throw new RangeError(\"Format string contains an unescaped latin alphabet character `\" + firstCharacter + \"`\");\n return substring;\n }).join(\"\");\n return result;\n}\nfunction $aadb1ca5365d6e34$var$cleanEscapedString(input) {\n return input.match($aadb1ca5365d6e34$var$escapedStringRegExp)[1].replace($aadb1ca5365d6e34$var$doubleQuoteRegExp, \"'\");\n}\n\n});\nparcelRegister(\"hK69R\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ceab8269d054413c$export$2e2bcd8739ae039; });\n\nvar $8H1yM = parcelRequire(\"8H1yM\");\n\nvar $fpVqC = parcelRequire(\"fpVqC\");\nfunction $ceab8269d054413c$export$2e2bcd8739ae039(dirtyDate) {\n (0, $fpVqC.default)(1, arguments);\n var date = (0, $8H1yM.default)(dirtyDate);\n return !isNaN(date);\n}\n\n});\nparcelRegister(\"8H1yM\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $65438ca42f497c65$export$2e2bcd8739ae039; });\n\nvar $fpVqC = parcelRequire(\"fpVqC\");\nfunction $65438ca42f497c65$export$2e2bcd8739ae039(argument) {\n (0, $fpVqC.default)(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n if (argument instanceof Date || typeof argument === \"object\" && argStr === \"[object Date]\") // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n else if (typeof argument === \"number\" || argStr === \"[object Number]\") return new Date(argument);\n else {\n if ((typeof argument === \"string\" || argStr === \"[object String]\") && typeof console !== \"undefined\") {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}\n\n});\nparcelRegister(\"fpVqC\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b395bcdcf91488d5$export$2e2bcd8739ae039; });\nfunction $b395bcdcf91488d5$export$2e2bcd8739ae039(required, args) {\n if (args.length < required) throw new TypeError(required + \" argument\" + required > 1 ? \"s\" : \" required, but only \" + args.length + \" present\");\n}\n\n});\n\n\n\nparcelRegister(\"iy2cb\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $d80d1af3cca7cccb$export$2e2bcd8739ae039; });\n\nvar $b68QP = parcelRequire(\"b68QP\");\n\nvar $3EPAv = parcelRequire(\"3EPAv\");\n\nvar $dj1wh = parcelRequire(\"dj1wh\");\n\nvar $5VQ3H = parcelRequire(\"5VQ3H\");\n\nvar $ifRm8 = parcelRequire(\"ifRm8\");\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */ var $d80d1af3cca7cccb$var$locale = {\n code: \"en-US\",\n formatDistance: (0, $b68QP.default),\n formatLong: (0, $3EPAv.default),\n formatRelative: (0, $dj1wh.default),\n localize: (0, $5VQ3H.default),\n match: (0, $ifRm8.default),\n options: {\n weekStartsOn: 0,\n firstWeekContainsDate: 1\n }\n};\nvar $d80d1af3cca7cccb$export$2e2bcd8739ae039 = $d80d1af3cca7cccb$var$locale;\n\n});\nparcelRegister(\"b68QP\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $81471ee80300b385$export$2e2bcd8739ae039; });\nvar $81471ee80300b385$var$formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\"\n },\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\"\n },\n halfAMinute: \"half a minute\",\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\"\n },\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\"\n },\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\"\n },\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\"\n },\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\"\n },\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\"\n },\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\"\n },\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\"\n },\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\"\n },\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\"\n },\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\"\n }\n};\nfunction $81471ee80300b385$export$2e2bcd8739ae039(token, count, options) {\n options = options || {};\n var result;\n if (typeof $81471ee80300b385$var$formatDistanceLocale[token] === \"string\") result = $81471ee80300b385$var$formatDistanceLocale[token];\n else if (count === 1) result = $81471ee80300b385$var$formatDistanceLocale[token].one;\n else result = $81471ee80300b385$var$formatDistanceLocale[token].other.replace(\"{{count}}\", count);\n if (options.addSuffix) {\n if (options.comparison > 0) return \"in \" + result;\n else return result + \" ago\";\n }\n return result;\n}\n\n});\n\nparcelRegister(\"3EPAv\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $2a9d1fce25ce5064$export$2e2bcd8739ae039; });\n\nvar $cbGOV = parcelRequire(\"cbGOV\");\nvar $2a9d1fce25ce5064$var$dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\"\n};\nvar $2a9d1fce25ce5064$var$timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\"\n};\nvar $2a9d1fce25ce5064$var$dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\"\n};\nvar $2a9d1fce25ce5064$var$formatLong = {\n date: (0, $cbGOV.default)({\n formats: $2a9d1fce25ce5064$var$dateFormats,\n defaultWidth: \"full\"\n }),\n time: (0, $cbGOV.default)({\n formats: $2a9d1fce25ce5064$var$timeFormats,\n defaultWidth: \"full\"\n }),\n dateTime: (0, $cbGOV.default)({\n formats: $2a9d1fce25ce5064$var$dateTimeFormats,\n defaultWidth: \"full\"\n })\n};\nvar $2a9d1fce25ce5064$export$2e2bcd8739ae039 = $2a9d1fce25ce5064$var$formatLong;\n\n});\nparcelRegister(\"cbGOV\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $8df7ba57d069fb17$export$2e2bcd8739ae039; });\nfunction $8df7ba57d069fb17$export$2e2bcd8739ae039(args) {\n return function(dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n\n});\n\n\nparcelRegister(\"dj1wh\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9afe3a80e463160a$export$2e2bcd8739ae039; });\nvar $9afe3a80e463160a$var$formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\"\n};\nfunction $9afe3a80e463160a$export$2e2bcd8739ae039(token, _date, _baseDate, _options) {\n return $9afe3a80e463160a$var$formatRelativeLocale[token];\n}\n\n});\n\nparcelRegister(\"5VQ3H\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $451aa86226740dc6$export$2e2bcd8739ae039; });\n\nvar $dh4Ji = parcelRequire(\"dh4Ji\");\nvar $451aa86226740dc6$var$eraValues = {\n narrow: [\n \"B\",\n \"A\"\n ],\n abbreviated: [\n \"BC\",\n \"AD\"\n ],\n wide: [\n \"Before Christ\",\n \"Anno Domini\"\n ]\n};\nvar $451aa86226740dc6$var$quarterValues = {\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ] // Note: in English, the names of days of the week and months are capitalized.\n};\nvar $451aa86226740dc6$var$monthValues = {\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n};\nvar $451aa86226740dc6$var$dayValues = {\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n};\nvar $451aa86226740dc6$var$dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\"\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\"\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\"\n }\n};\nvar $451aa86226740dc6$var$formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\"\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\"\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\"\n }\n};\nfunction $451aa86226740dc6$var$ordinalNumber(dirtyNumber, _dirtyOptions) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) switch(rem100 % 10){\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n return number + \"th\";\n}\nvar $451aa86226740dc6$var$localize = {\n ordinalNumber: $451aa86226740dc6$var$ordinalNumber,\n era: (0, $dh4Ji.default)({\n values: $451aa86226740dc6$var$eraValues,\n defaultWidth: \"wide\"\n }),\n quarter: (0, $dh4Ji.default)({\n values: $451aa86226740dc6$var$quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: function(quarter) {\n return Number(quarter) - 1;\n }\n }),\n month: (0, $dh4Ji.default)({\n values: $451aa86226740dc6$var$monthValues,\n defaultWidth: \"wide\"\n }),\n day: (0, $dh4Ji.default)({\n values: $451aa86226740dc6$var$dayValues,\n defaultWidth: \"wide\"\n }),\n dayPeriod: (0, $dh4Ji.default)({\n values: $451aa86226740dc6$var$dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: $451aa86226740dc6$var$formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\"\n })\n};\nvar $451aa86226740dc6$export$2e2bcd8739ae039 = $451aa86226740dc6$var$localize;\n\n});\nparcelRegister(\"dh4Ji\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9aa08813a99d756e$export$2e2bcd8739ae039; });\nfunction $9aa08813a99d756e$export$2e2bcd8739ae039(args) {\n return function(dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : \"standalone\";\n var valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n return valuesArray[index];\n };\n}\n\n});\n\n\nparcelRegister(\"ifRm8\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $d4a3041c0f410746$export$2e2bcd8739ae039; });\n\nvar $fRFGa = parcelRequire(\"fRFGa\");\n\nvar $dCt7U = parcelRequire(\"dCt7U\");\nvar $d4a3041c0f410746$var$matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar $d4a3041c0f410746$var$parseOrdinalNumberPattern = /\\d+/i;\nvar $d4a3041c0f410746$var$matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar $d4a3041c0f410746$var$parseEraPatterns = {\n any: [\n /^b/i,\n /^(a|c)/i\n ]\n};\nvar $d4a3041c0f410746$var$matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar $d4a3041c0f410746$var$parseQuarterPatterns = {\n any: [\n /1/i,\n /2/i,\n /3/i,\n /4/i\n ]\n};\nvar $d4a3041c0f410746$var$matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar $d4a3041c0f410746$var$parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i\n ],\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i\n ]\n};\nvar $d4a3041c0f410746$var$matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar $d4a3041c0f410746$var$parseDayPatterns = {\n narrow: [\n /^s/i,\n /^m/i,\n /^t/i,\n /^w/i,\n /^t/i,\n /^f/i,\n /^s/i\n ],\n any: [\n /^su/i,\n /^m/i,\n /^tu/i,\n /^w/i,\n /^th/i,\n /^f/i,\n /^sa/i\n ]\n};\nvar $d4a3041c0f410746$var$matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar $d4a3041c0f410746$var$parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar $d4a3041c0f410746$var$match = {\n ordinalNumber: (0, $fRFGa.default)({\n matchPattern: $d4a3041c0f410746$var$matchOrdinalNumberPattern,\n parsePattern: $d4a3041c0f410746$var$parseOrdinalNumberPattern,\n valueCallback: function(value) {\n return parseInt(value, 10);\n }\n }),\n era: (0, $dCt7U.default)({\n matchPatterns: $d4a3041c0f410746$var$matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: $d4a3041c0f410746$var$parseEraPatterns,\n defaultParseWidth: \"any\"\n }),\n quarter: (0, $dCt7U.default)({\n matchPatterns: $d4a3041c0f410746$var$matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: $d4a3041c0f410746$var$parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: function(index) {\n return index + 1;\n }\n }),\n month: (0, $dCt7U.default)({\n matchPatterns: $d4a3041c0f410746$var$matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: $d4a3041c0f410746$var$parseMonthPatterns,\n defaultParseWidth: \"any\"\n }),\n day: (0, $dCt7U.default)({\n matchPatterns: $d4a3041c0f410746$var$matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: $d4a3041c0f410746$var$parseDayPatterns,\n defaultParseWidth: \"any\"\n }),\n dayPeriod: (0, $dCt7U.default)({\n matchPatterns: $d4a3041c0f410746$var$matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: $d4a3041c0f410746$var$parseDayPeriodPatterns,\n defaultParseWidth: \"any\"\n })\n};\nvar $d4a3041c0f410746$export$2e2bcd8739ae039 = $d4a3041c0f410746$var$match;\n\n});\nparcelRegister(\"fRFGa\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b8cc22dc4a71d8c0$export$2e2bcd8739ae039; });\nfunction $b8cc22dc4a71d8c0$export$2e2bcd8739ae039(args) {\n return function(dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}\n\n});\n\nparcelRegister(\"dCt7U\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9ea56ae3cf8c3269$export$2e2bcd8739ae039; });\nfunction $9ea56ae3cf8c3269$export$2e2bcd8739ae039(args) {\n return function(dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var value;\n if (Object.prototype.toString.call(parsePatterns) === \"[object Array]\") value = $9ea56ae3cf8c3269$var$findIndex(parsePatterns, function(pattern) {\n return pattern.test(string);\n });\n else value = $9ea56ae3cf8c3269$var$findKey(parsePatterns, function(pattern) {\n return pattern.test(string);\n });\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}\nfunction $9ea56ae3cf8c3269$var$findKey(object, predicate) {\n for(var key in object){\n if (object.hasOwnProperty(key) && predicate(object[key])) return key;\n }\n}\nfunction $9ea56ae3cf8c3269$var$findIndex(array, predicate) {\n for(var key = 0; key < array.length; key++){\n if (predicate(array[key])) return key;\n }\n}\n\n});\n\n\n\nparcelRegister(\"60RHq\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $460c65c0b3cca457$export$2e2bcd8739ae039; });\n\nvar $85Mfn = parcelRequire(\"85Mfn\");\n\nvar $7tLxu = parcelRequire(\"7tLxu\");\n\nvar $fpVqC = parcelRequire(\"fpVqC\");\nfunction $460c65c0b3cca457$export$2e2bcd8739ae039(dirtyDate, dirtyAmount) {\n (0, $fpVqC.default)(2, arguments);\n var amount = (0, $85Mfn.default)(dirtyAmount);\n return (0, $7tLxu.default)(dirtyDate, -amount);\n}\n\n});\nparcelRegister(\"85Mfn\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $5e443738df7dac1b$export$2e2bcd8739ae039; });\nfunction $5e443738df7dac1b$export$2e2bcd8739ae039(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) return NaN;\n var number = Number(dirtyNumber);\n if (isNaN(number)) return number;\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}\n\n});\n\nparcelRegister(\"7tLxu\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $57201e19e932b8ef$export$2e2bcd8739ae039; });\n\nvar $85Mfn = parcelRequire(\"85Mfn\");\n\nvar $8H1yM = parcelRequire(\"8H1yM\");\n\nvar $fpVqC = parcelRequire(\"fpVqC\");\nfunction $57201e19e932b8ef$export$2e2bcd8739ae039(dirtyDate, dirtyAmount) {\n (0, $fpVqC.default)(2, arguments);\n var timestamp = (0, $8H1yM.default)(dirtyDate).getTime();\n var amount = (0, $85Mfn.default)(dirtyAmount);\n return new Date(timestamp + amount);\n}\n\n});\n\n\nparcelRegister(\"4QPmc\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $3883db334826ed59$export$2e2bcd8739ae039; });\n\nvar $iIxd6 = parcelRequire(\"iIxd6\");\n\nvar $kjYwe = parcelRequire(\"kjYwe\");\n\nvar $9vn2K = parcelRequire(\"9vn2K\");\n\nvar $iO0fJ = parcelRequire(\"iO0fJ\");\n\nvar $bmRWV = parcelRequire(\"bmRWV\");\n\nvar $1ucPI = parcelRequire(\"1ucPI\");\n\nvar $acn2e = parcelRequire(\"acn2e\");\nvar $3883db334826ed59$var$dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\"\n};\nvar $3883db334826ed59$var$formatters = {\n // Era\n G: function(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch(token){\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, {\n width: \"abbreviated\"\n });\n // A, B\n case \"GGGGG\":\n return localize.era(era, {\n width: \"narrow\"\n });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, {\n width: \"wide\"\n });\n }\n },\n // Year\n y: function(date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: \"year\"\n });\n }\n return (0, $iIxd6.default).y(date, token);\n },\n // Local week-numbering year\n Y: function(date, token, localize, options) {\n var signedWeekYear = (0, $1ucPI.default)(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n if (token === \"YY\") {\n var twoDigitYear = weekYear % 100;\n return (0, $acn2e.default)(twoDigitYear, 2);\n } // Ordinal number\n if (token === \"Yo\") return localize.ordinalNumber(weekYear, {\n unit: \"year\"\n });\n // Padding\n return (0, $acn2e.default)(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function(date, token) {\n var isoWeekYear = (0, $iO0fJ.default)(date); // Padding\n return (0, $acn2e.default)(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function(date, token) {\n var year = date.getUTCFullYear();\n return (0, $acn2e.default)(year, token.length);\n },\n // Quarter\n Q: function(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch(token){\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return (0, $acn2e.default)(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, {\n unit: \"quarter\"\n });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // Stand-alone quarter\n q: function(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch(token){\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return (0, $acn2e.default)(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, {\n unit: \"quarter\"\n });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\"\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\"\n });\n }\n },\n // Month\n M: function(date, token, localize) {\n var month = date.getUTCMonth();\n switch(token){\n case \"M\":\n case \"MM\":\n return (0, $iIxd6.default).M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, {\n unit: \"month\"\n });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // Stand-alone month\n L: function(date, token, localize) {\n var month = date.getUTCMonth();\n switch(token){\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return (0, $acn2e.default)(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, {\n unit: \"month\"\n });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\"\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, {\n width: \"wide\",\n context: \"standalone\"\n });\n }\n },\n // Local week of year\n w: function(date, token, localize, options) {\n var week = (0, $bmRWV.default)(date, options);\n if (token === \"wo\") return localize.ordinalNumber(week, {\n unit: \"week\"\n });\n return (0, $acn2e.default)(week, token.length);\n },\n // ISO week of year\n I: function(date, token, localize) {\n var isoWeek = (0, $9vn2K.default)(date);\n if (token === \"Io\") return localize.ordinalNumber(isoWeek, {\n unit: \"week\"\n });\n return (0, $acn2e.default)(isoWeek, token.length);\n },\n // Day of the month\n d: function(date, token, localize) {\n if (token === \"do\") return localize.ordinalNumber(date.getUTCDate(), {\n unit: \"date\"\n });\n return (0, $iIxd6.default).d(date, token);\n },\n // Day of year\n D: function(date, token, localize) {\n var dayOfYear = (0, $kjYwe.default)(date);\n if (token === \"Do\") return localize.ordinalNumber(dayOfYear, {\n unit: \"dayOfYear\"\n });\n return (0, $acn2e.default)(dayOfYear, token.length);\n },\n // Day of week\n E: function(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch(token){\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\"\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // Local day of week\n e: function(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch(token){\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return (0, $acn2e.default)(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, {\n unit: \"day\"\n });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\"\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // Stand-alone local day of week\n c: function(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch(token){\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return (0, $acn2e.default)(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, {\n unit: \"day\"\n });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\"\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\"\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\"\n });\n }\n },\n // ISO day of week\n i: function(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch(token){\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return (0, $acn2e.default)(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: \"day\"\n });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\"\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // AM or PM\n a: function(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n switch(token){\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // AM, PM, midnight, noon\n b: function(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) dayPeriodEnumValue = $3883db334826ed59$var$dayPeriodEnum.noon;\n else if (hours === 0) dayPeriodEnumValue = $3883db334826ed59$var$dayPeriodEnum.midnight;\n else dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n switch(token){\n case \"b\":\n case \"bb\":\n case \"bbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) dayPeriodEnumValue = $3883db334826ed59$var$dayPeriodEnum.evening;\n else if (hours >= 12) dayPeriodEnumValue = $3883db334826ed59$var$dayPeriodEnum.afternoon;\n else if (hours >= 4) dayPeriodEnumValue = $3883db334826ed59$var$dayPeriodEnum.morning;\n else dayPeriodEnumValue = $3883db334826ed59$var$dayPeriodEnum.night;\n switch(token){\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\"\n });\n }\n },\n // Hour [1-12]\n h: function(date, token, localize) {\n if (token === \"ho\") {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: \"hour\"\n });\n }\n return (0, $iIxd6.default).h(date, token);\n },\n // Hour [0-23]\n H: function(date, token, localize) {\n if (token === \"Ho\") return localize.ordinalNumber(date.getUTCHours(), {\n unit: \"hour\"\n });\n return (0, $iIxd6.default).H(date, token);\n },\n // Hour [0-11]\n K: function(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === \"Ko\") return localize.ordinalNumber(hours, {\n unit: \"hour\"\n });\n return (0, $acn2e.default)(hours, token.length);\n },\n // Hour [1-24]\n k: function(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === \"ko\") return localize.ordinalNumber(hours, {\n unit: \"hour\"\n });\n return (0, $acn2e.default)(hours, token.length);\n },\n // Minute\n m: function(date, token, localize) {\n if (token === \"mo\") return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: \"minute\"\n });\n return (0, $iIxd6.default).m(date, token);\n },\n // Second\n s: function(date, token, localize) {\n if (token === \"so\") return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: \"second\"\n });\n return (0, $iIxd6.default).s(date, token);\n },\n // Fraction of second\n S: function(date, token) {\n return (0, $iIxd6.default).S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) return \"Z\";\n switch(token){\n // Hours and optional minutes\n case \"X\":\n return $3883db334826ed59$var$formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\":\n // Hours and minutes without `:` delimiter\n return $3883db334826ed59$var$formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\":\n default:\n return $3883db334826ed59$var$formatTimezone(timezoneOffset, \":\");\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch(token){\n // Hours and optional minutes\n case \"x\":\n return $3883db334826ed59$var$formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\":\n // Hours and minutes without `:` delimiter\n return $3883db334826ed59$var$formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\":\n default:\n return $3883db334826ed59$var$formatTimezone(timezoneOffset, \":\");\n }\n },\n // Timezone (GMT)\n O: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch(token){\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + $3883db334826ed59$var$formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + $3883db334826ed59$var$formatTimezone(timezoneOffset, \":\");\n }\n },\n // Timezone (specific non-location)\n z: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch(token){\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + $3883db334826ed59$var$formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + $3883db334826ed59$var$formatTimezone(timezoneOffset, \":\");\n }\n },\n // Seconds timestamp\n t: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return (0, $acn2e.default)(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return (0, $acn2e.default)(timestamp, token.length);\n }\n};\nfunction $3883db334826ed59$var$formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? \"-\" : \"+\";\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) return sign + String(hours);\n var delimiter = dirtyDelimiter || \"\";\n return sign + String(hours) + delimiter + (0, $acn2e.default)(minutes, 2);\n}\nfunction $3883db334826ed59$var$formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? \"-\" : \"+\";\n return sign + (0, $acn2e.default)(Math.abs(offset) / 60, 2);\n }\n return $3883db334826ed59$var$formatTimezone(offset, dirtyDelimiter);\n}\nfunction $3883db334826ed59$var$formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || \"\";\n var sign = offset > 0 ? \"-\" : \"+\";\n var absOffset = Math.abs(offset);\n var hours = (0, $acn2e.default)(Math.floor(absOffset / 60), 2);\n var minutes = (0, $acn2e.default)(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nvar $3883db334826ed59$export$2e2bcd8739ae039 = $3883db334826ed59$var$formatters;\n\n});\nparcelRegister(\"iIxd6\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $da0618eaadbf7381$export$2e2bcd8739ae039; });\n\nvar $acn2e = parcelRequire(\"acn2e\");\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */ var $da0618eaadbf7381$var$formatters = {\n // Year\n y: function(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return (0, $acn2e.default)(token === \"yy\" ? year % 100 : year, token.length);\n },\n // Month\n M: function(date, token) {\n var month = date.getUTCMonth();\n return token === \"M\" ? String(month + 1) : (0, $acn2e.default)(month + 1, 2);\n },\n // Day of the month\n d: function(date, token) {\n return (0, $acn2e.default)(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? \"pm\" : \"am\";\n switch(token){\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n // Hour [1-12]\n h: function(date, token) {\n return (0, $acn2e.default)(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function(date, token) {\n return (0, $acn2e.default)(date.getUTCHours(), token.length);\n },\n // Minute\n m: function(date, token) {\n return (0, $acn2e.default)(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function(date, token) {\n return (0, $acn2e.default)(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return (0, $acn2e.default)(fractionalSeconds, token.length);\n }\n};\nvar $da0618eaadbf7381$export$2e2bcd8739ae039 = $da0618eaadbf7381$var$formatters;\n\n});\nparcelRegister(\"acn2e\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $76cce4a8f6828d26$export$2e2bcd8739ae039; });\nfunction $76cce4a8f6828d26$export$2e2bcd8739ae039(number, targetLength) {\n var sign = number < 0 ? \"-\" : \"\";\n var output = Math.abs(number).toString();\n while(output.length < targetLength)output = \"0\" + output;\n return sign + output;\n}\n\n});\n\n\nparcelRegister(\"kjYwe\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ecb486ccafe8a1b6$export$2e2bcd8739ae039; });\n\nvar $8H1yM = parcelRequire(\"8H1yM\");\n\nvar $fpVqC = parcelRequire(\"fpVqC\");\nvar $ecb486ccafe8a1b6$var$MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\nfunction $ecb486ccafe8a1b6$export$2e2bcd8739ae039(dirtyDate) {\n (0, $fpVqC.default)(1, arguments);\n var date = (0, $8H1yM.default)(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / $ecb486ccafe8a1b6$var$MILLISECONDS_IN_DAY) + 1;\n}\n\n});\n\nparcelRegister(\"9vn2K\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6eb8e239be0a82dd$export$2e2bcd8739ae039; });\n\nvar $8H1yM = parcelRequire(\"8H1yM\");\n\nvar $1nrz6 = parcelRequire(\"1nrz6\");\n\nvar $jinp4 = parcelRequire(\"jinp4\");\n\nvar $fpVqC = parcelRequire(\"fpVqC\");\nvar $6eb8e239be0a82dd$var$MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\nfunction $6eb8e239be0a82dd$export$2e2bcd8739ae039(dirtyDate) {\n (0, $fpVqC.default)(1, arguments);\n var date = (0, $8H1yM.default)(dirtyDate);\n var diff = (0, $1nrz6.default)(date).getTime() - (0, $jinp4.default)(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / $6eb8e239be0a82dd$var$MILLISECONDS_IN_WEEK) + 1;\n}\n\n});\nparcelRegister(\"1nrz6\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $100d5249fecb8a70$export$2e2bcd8739ae039; });\n\nvar $8H1yM = parcelRequire(\"8H1yM\");\n\nvar $fpVqC = parcelRequire(\"fpVqC\");\nfunction $100d5249fecb8a70$export$2e2bcd8739ae039(dirtyDate) {\n (0, $fpVqC.default)(1, arguments);\n var weekStartsOn = 1;\n var date = (0, $8H1yM.default)(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}\n\n});\n\nparcelRegister(\"jinp4\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $e0c1da2e9e14480d$export$2e2bcd8739ae039; });\n\nvar $iO0fJ = parcelRequire(\"iO0fJ\");\n\nvar $1nrz6 = parcelRequire(\"1nrz6\");\n\nvar $fpVqC = parcelRequire(\"fpVqC\");\nfunction $e0c1da2e9e14480d$export$2e2bcd8739ae039(dirtyDate) {\n (0, $fpVqC.default)(1, arguments);\n var year = (0, $iO0fJ.default)(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = (0, $1nrz6.default)(fourthOfJanuary);\n return date;\n}\n\n});\nparcelRegister(\"iO0fJ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $db0d17b3a45c37d7$export$2e2bcd8739ae039; });\n\nvar $8H1yM = parcelRequire(\"8H1yM\");\n\nvar $1nrz6 = parcelRequire(\"1nrz6\");\n\nvar $fpVqC = parcelRequire(\"fpVqC\");\nfunction $db0d17b3a45c37d7$export$2e2bcd8739ae039(dirtyDate) {\n (0, $fpVqC.default)(1, arguments);\n var date = (0, $8H1yM.default)(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = (0, $1nrz6.default)(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = (0, $1nrz6.default)(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) return year + 1;\n else if (date.getTime() >= startOfThisYear.getTime()) return year;\n else return year - 1;\n}\n\n});\n\n\n\nparcelRegister(\"bmRWV\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $846b99051cbfaa4a$export$2e2bcd8739ae039; });\n\nvar $8H1yM = parcelRequire(\"8H1yM\");\n\nvar $gF90W = parcelRequire(\"gF90W\");\n\nvar $j25kY = parcelRequire(\"j25kY\");\n\nvar $fpVqC = parcelRequire(\"fpVqC\");\nvar $846b99051cbfaa4a$var$MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\nfunction $846b99051cbfaa4a$export$2e2bcd8739ae039(dirtyDate, options) {\n (0, $fpVqC.default)(1, arguments);\n var date = (0, $8H1yM.default)(dirtyDate);\n var diff = (0, $gF90W.default)(date, options).getTime() - (0, $j25kY.default)(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / $846b99051cbfaa4a$var$MILLISECONDS_IN_WEEK) + 1;\n}\n\n});\nparcelRegister(\"gF90W\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c21777b0586e1634$export$2e2bcd8739ae039; });\n\nvar $85Mfn = parcelRequire(\"85Mfn\");\n\nvar $8H1yM = parcelRequire(\"8H1yM\");\n\nvar $fpVqC = parcelRequire(\"fpVqC\");\nfunction $c21777b0586e1634$export$2e2bcd8739ae039(dirtyDate, dirtyOptions) {\n (0, $fpVqC.default)(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : (0, $85Mfn.default)(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : (0, $85Mfn.default)(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) throw new RangeError(\"weekStartsOn must be between 0 and 6 inclusively\");\n var date = (0, $8H1yM.default)(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}\n\n});\n\nparcelRegister(\"j25kY\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ddb25818f46a73f2$export$2e2bcd8739ae039; });\n\nvar $85Mfn = parcelRequire(\"85Mfn\");\n\nvar $1ucPI = parcelRequire(\"1ucPI\");\n\nvar $gF90W = parcelRequire(\"gF90W\");\n\nvar $fpVqC = parcelRequire(\"fpVqC\");\nfunction $ddb25818f46a73f2$export$2e2bcd8739ae039(dirtyDate, dirtyOptions) {\n (0, $fpVqC.default)(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : (0, $85Mfn.default)(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : (0, $85Mfn.default)(options.firstWeekContainsDate);\n var year = (0, $1ucPI.default)(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = (0, $gF90W.default)(firstWeek, dirtyOptions);\n return date;\n}\n\n});\nparcelRegister(\"1ucPI\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $11528c2a008ace63$export$2e2bcd8739ae039; });\n\nvar $85Mfn = parcelRequire(\"85Mfn\");\n\nvar $8H1yM = parcelRequire(\"8H1yM\");\n\nvar $gF90W = parcelRequire(\"gF90W\");\n\nvar $fpVqC = parcelRequire(\"fpVqC\");\nfunction $11528c2a008ace63$export$2e2bcd8739ae039(dirtyDate, dirtyOptions) {\n (0, $fpVqC.default)(1, arguments);\n var date = (0, $8H1yM.default)(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : (0, $85Mfn.default)(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : (0, $85Mfn.default)(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) throw new RangeError(\"firstWeekContainsDate must be between 1 and 7 inclusively\");\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = (0, $gF90W.default)(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = (0, $gF90W.default)(firstWeekOfThisYear, dirtyOptions);\n if (date.getTime() >= startOfNextYear.getTime()) return year + 1;\n else if (date.getTime() >= startOfThisYear.getTime()) return year;\n else return year - 1;\n}\n\n});\n\n\n\n\nparcelRegister(\"cMC1N\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $94e77750bd660f52$export$2e2bcd8739ae039; });\nfunction $94e77750bd660f52$var$dateLongFormatter(pattern, formatLong) {\n switch(pattern){\n case \"P\":\n return formatLong.date({\n width: \"short\"\n });\n case \"PP\":\n return formatLong.date({\n width: \"medium\"\n });\n case \"PPP\":\n return formatLong.date({\n width: \"long\"\n });\n case \"PPPP\":\n default:\n return formatLong.date({\n width: \"full\"\n });\n }\n}\nfunction $94e77750bd660f52$var$timeLongFormatter(pattern, formatLong) {\n switch(pattern){\n case \"p\":\n return formatLong.time({\n width: \"short\"\n });\n case \"pp\":\n return formatLong.time({\n width: \"medium\"\n });\n case \"ppp\":\n return formatLong.time({\n width: \"long\"\n });\n case \"pppp\":\n default:\n return formatLong.time({\n width: \"full\"\n });\n }\n}\nfunction $94e77750bd660f52$var$dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) return $94e77750bd660f52$var$dateLongFormatter(pattern, formatLong);\n var dateTimeFormat;\n switch(datePattern){\n case \"P\":\n dateTimeFormat = formatLong.dateTime({\n width: \"short\"\n });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({\n width: \"medium\"\n });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({\n width: \"long\"\n });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({\n width: \"full\"\n });\n break;\n }\n return dateTimeFormat.replace(\"{{date}}\", $94e77750bd660f52$var$dateLongFormatter(datePattern, formatLong)).replace(\"{{time}}\", $94e77750bd660f52$var$timeLongFormatter(timePattern, formatLong));\n}\nvar $94e77750bd660f52$var$longFormatters = {\n p: $94e77750bd660f52$var$timeLongFormatter,\n P: $94e77750bd660f52$var$dateTimeLongFormatter\n};\nvar $94e77750bd660f52$export$2e2bcd8739ae039 = $94e77750bd660f52$var$longFormatters;\n\n});\n\nparcelRegister(\"4lcyT\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $3292de173c23ea3f$export$2e2bcd8739ae039; });\nvar $3292de173c23ea3f$var$MILLISECONDS_IN_MINUTE = 60000;\nfunction $3292de173c23ea3f$export$2e2bcd8739ae039(dirtyDate) {\n var date = new Date(dirtyDate.getTime());\n var baseTimezoneOffset = Math.ceil(date.getTimezoneOffset());\n date.setSeconds(0, 0);\n var millisecondsPartOfTimezoneOffset = date.getTime() % $3292de173c23ea3f$var$MILLISECONDS_IN_MINUTE;\n return baseTimezoneOffset * $3292de173c23ea3f$var$MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset;\n}\n\n});\n\nparcelRegister(\"38P9V\", function(module, exports) {\n\n$parcel$export(module.exports, \"isProtectedDayOfYearToken\", function () { return $2499cd99bccd64b5$export$c6cc36aa33304772; });\n$parcel$export(module.exports, \"isProtectedWeekYearToken\", function () { return $2499cd99bccd64b5$export$c6b49d6dceb604a1; });\n$parcel$export(module.exports, \"throwProtectedError\", function () { return $2499cd99bccd64b5$export$8073c1ae88f0e727; });\nvar $2499cd99bccd64b5$var$protectedDayOfYearTokens = [\n \"D\",\n \"DD\"\n];\nvar $2499cd99bccd64b5$var$protectedWeekYearTokens = [\n \"YY\",\n \"YYYY\"\n];\nfunction $2499cd99bccd64b5$export$c6cc36aa33304772(token) {\n return $2499cd99bccd64b5$var$protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nfunction $2499cd99bccd64b5$export$c6b49d6dceb604a1(token) {\n return $2499cd99bccd64b5$var$protectedWeekYearTokens.indexOf(token) !== -1;\n}\nfunction $2499cd99bccd64b5$export$8073c1ae88f0e727(token) {\n if (token === \"YYYY\") throw new RangeError(\"Use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr\");\n else if (token === \"YY\") throw new RangeError(\"Use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\");\n else if (token === \"D\") throw new RangeError(\"Use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\");\n else if (token === \"DD\") throw new RangeError(\"Use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\");\n}\n\n});\n\n\n\n\nparcelRegister(\"gcPmB\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $bcc59c0d830023bd$export$2e2bcd8739ae039; });\n\nvar $cr2GM = parcelRequire(\"cr2GM\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\nclass $bcc59c0d830023bd$var$MapStore {\n setDeckRef(ref) {\n this.deckRef = ref;\n }\n setMode(mode) {\n this.mode = mode;\n }\n setMapboxRef(ref) {\n this.mapboxRef = ref;\n }\n setGl(gl) {\n this.gl = gl;\n }\n setBounds(bounds) {\n this.bounds = bounds;\n }\n setViewPort(viewport) {\n this.viewport = viewport;\n }\n setStatus(status) {\n this.status = status;\n }\n setEditMode(editMode) {\n this.editMode = editMode;\n }\n setShouldRedrawPoints(value) {\n this.shouldRedrawPoints = value;\n }\n setPopup(value) {\n this.popup = value;\n }\n constructor(){\n (0, $cr2GM._)(this, \"viewport\", {\n center: {\n lng: -73.9954260224539,\n lat: 40.723244087001774\n },\n zoom: 12,\n pitch: 0\n });\n (0, $cr2GM._)(this, \"bounds\", null);\n (0, $cr2GM._)(this, \"status\", \"loading\");\n (0, $cr2GM._)(this, \"mode\", \"view\");\n (0, $cr2GM._)(this, \"popup\", null);\n (0, $cr2GM._)(this, \"gl\", null);\n (0, $cr2GM._)(this, \"deckRef\", null);\n (0, $cr2GM._)(this, \"mapboxRef\", null);\n (0, $cr2GM._)(this, \"shouldRedrawPoints\", false);\n (0, $gOgWf.makeObservable)(this, {\n viewport: (0, $gOgWf.observable),\n gl: (0, $gOgWf.observable),\n shouldRedrawPoints: (0, $gOgWf.observable),\n bounds: (0, $gOgWf.observable),\n status: (0, $gOgWf.observable),\n mode: (0, $gOgWf.observable),\n popup: (0, $gOgWf.observable),\n setMode: (0, $gOgWf.action),\n setBounds: (0, $gOgWf.action),\n setViewPort: (0, $gOgWf.action),\n setStatus: (0, $gOgWf.action),\n setEditMode: (0, $gOgWf.action),\n setPopup: (0, $gOgWf.action)\n });\n }\n}\nconst $bcc59c0d830023bd$var$store = new $bcc59c0d830023bd$var$MapStore();\nvar $bcc59c0d830023bd$export$2e2bcd8739ae039 = $bcc59c0d830023bd$var$store;\n\n});\n\nparcelRegister(\"ht0W2\", function(module, exports) {\n\n$parcel$export(module.exports, \"formatBuildingDetails\", function () { return $cb75dec613a20d5a$export$b8ed849243134f3; });\n$parcel$export(module.exports, \"formatBuildingData\", function () { return $cb75dec613a20d5a$export$126d463feb878e45; });\n$parcel$export(module.exports, \"formatBuildingPower\", function () { return $cb75dec613a20d5a$export$b1edea61042966f2; });\n$parcel$export(module.exports, \"formatBuildingFinancials\", function () { return $cb75dec613a20d5a$export$cd5b146eaf8b654e; });\n$parcel$export(module.exports, \"formatBuildingRates\", function () { return $cb75dec613a20d5a$export$aaca97b705d749dc; });\n/* eslint-disable camelcase */ \nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $bmkEq = parcelRequire(\"bmkEq\");\n\nvar $fuiMG = parcelRequire(\"fuiMG\");\nconst $cb75dec613a20d5a$var$none = \"n/a\";\nconst $cb75dec613a20d5a$var$sf = \" ft\\xb2\";\nconst $cb75dec613a20d5a$var$areaUnit = \"ft\\xb2\";\nconst $cb75dec613a20d5a$var$units = \"imperial\";\nconst $cb75dec613a20d5a$var$toTitleCase = (str)=>{\n return str.replace(/\\w\\S*/g, (txt)=>{\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n });\n};\nconst $cb75dec613a20d5a$var$formatArea = (n)=>{\n let area = n;\n if ($cb75dec613a20d5a$var$units === \"international\") area /= 10.7639104;\n area = area.toLocaleString(\"en-US\");\n return `${area} ${$cb75dec613a20d5a$var$areaUnit}`;\n};\nconst $cb75dec613a20d5a$var$formatAddress = (arr)=>{\n if (arr) return arr[0];\n return $cb75dec613a20d5a$var$none;\n};\nconst $cb75dec613a20d5a$export$b8ed849243134f3 = ({ annual_peak: annual_peak = $cb75dec613a20d5a$var$none, annual_property_tax: annual_property_tax, aquisition_date: aquisition_date, aquisition_price: aquisition_price, area_in_sq_meters: area_in_sq_meters, average_annual_irradiance: average_annual_irradiance, billable_assessed_value: billable_assessed_value, bins: bins, boiler_capacity: boiler_capacity = $cb75dec613a20d5a$var$none, boiler_consumption: boiler_consumption, boiler_installation_date: boiler_installation_date = $cb75dec613a20d5a$var$none, boiler_is_dual_fuel: boiler_is_dual_fuel, boiler_model: boiler_model, building_far: building_far = $cb75dec613a20d5a$var$none, building_name: building_name, burner_model: burner_model = $cb75dec613a20d5a$var$none, cdd65: cdd65, co2_reduction: co2_reduction, compliance_date: compliance_date = $cb75dec613a20d5a$var$none, construction: construction, customer_cd: customer_cd = $cb75dec613a20d5a$var$none, debt: debt, demo: demo, der_installation_date: der_installation_date = $cb75dec613a20d5a$var$none, der_installer: der_installer = $cb75dec613a20d5a$var$none, der_natural_gas_consumption: der_natural_gas_consumption = $cb75dec613a20d5a$var$none, der_output: der_output = $cb75dec613a20d5a$var$none, der_ownership_structure: der_ownership_structure = $cb75dec613a20d5a$var$none, der_type: der_type = $cb75dec613a20d5a$var$none, ele: ele, electric_utility: electric_utility = null, electricity_forecast: electricity_forecast = null, electricity_use: electricity_use, energy_star_score: energy_star_score = $cb75dec613a20d5a$var$none, esimated_boiler_retirement_year: esimated_boiler_retirement_year = $cb75dec613a20d5a$var$none, estimated_market_value: estimated_market_value, eui: eui = $cb75dec613a20d5a$var$none, floor_area_commercial: floor_area_commercial, floor_area_factory: floor_area_factory, floor_area_garage: floor_area_garage, floor_area_leasable: floor_area_leasable, floor_area_lot: floor_area_lot, floor_area_office: floor_area_office, floor_area_other: floor_area_other, floor_area_residential: floor_area_residential, floor_area_storage: floor_area_storage, floor_area_total: floor_area_total, floors: floors = $cb75dec613a20d5a$var$none, gas_comm_price: gas_comm_price, gas_customers: gas_customers, gas_ind_price: gas_ind_price, gas_name: gas_name, gas_res_price: gas_res_price, gas_total_vol: gas_total_vol, gas_website: gas_website, ghg_emission_total: ghg_emission_total, hdd65: hdd65, incentives: incentives, industry: industry = $cb75dec613a20d5a$var$none, iso_avg_load: iso_avg_load, iso_name: iso_name, iso_peak_load: iso_peak_load, iso_website: iso_website, land_use: land_use = $cb75dec613a20d5a$var$none, landmark: landmark, last_renovation: last_renovation, lender: lender = $cb75dec613a20d5a$var$none, loan_year: loan_year = $cb75dec613a20d5a$var$none, monthly_predictions: monthly_predictions = null, natural_gas_consumption: natural_gas_consumption, natural_gas_utility: natural_gas_utility, nearest_station: nearest_station, number_of_baths: number_of_baths = $cb75dec613a20d5a$var$none, number_of_beds: number_of_beds = $cb75dec613a20d5a$var$none, number_of_buildings: number_of_buildings = $cb75dec613a20d5a$var$none, operating_expense: operating_expense, opta: opta, owner_name: owner_name = $cb75dec613a20d5a$var$none, owner_type: owner_type, owner_type_code: owner_type_code = $cb75dec613a20d5a$var$none, predictions: predictions = null, predictionsTrace: predictionsTrace, primary_fuel: primary_fuel = $cb75dec613a20d5a$var$none, property_name: property_name, pvout: pvout, pvwattsTrace: pvwattsTrace, residential_units: residential_units = $cb75dec613a20d5a$var$none, revenue: revenue, share_in_aquisition_price: share_in_aquisition_price, sub_category: sub_category = $cb75dec613a20d5a$var$none, tax_rate: tax_rate = $cb75dec613a20d5a$var$none, temp: temp, total_gallons_high: total_gallons_high, total_gallons_low: total_gallons_low, total_mmbtu_high: total_mmbtu_high, total_mmbtu_low: total_mmbtu_low, utility_customers: utility_customers, utility_name: utility_name, utility_network_demand_peak: utility_network_demand_peak = $cb75dec613a20d5a$var$none, utility_total_mwh: utility_total_mwh, utility_website: utility_website, year_built: year_built = $cb75dec613a20d5a$var$none, zoning: zoning = $cb75dec613a20d5a$var$none, metrics: metrics, us_state_region: us_state_region, property_type_long: property_type_long, ev_level2_charger_count: // ev_charger_count,\n// ev_charger_count_final,\nev_level2_charger_count, ev_dcfc_charger_count: ev_dcfc_charger_count, ev_registration_count: ev_registration_count, ev_registration_count_per_population: ev_registration_count_per_population, ev_state_population: ev_state_population, ev_closest_station_name: ev_closest_station_name, ev_chargers_in_10_mile_radius: ev_chargers_in_10_mile_radius, ev_chargers_in_state: ev_chargers_in_state, ev_distance_to_substation_meters: ev_distance_to_substation_meters })=>{\n let formattedArea = $cb75dec613a20d5a$var$none;\n if (area_in_sq_meters) formattedArea = $cb75dec613a20d5a$var$formatArea(Math.floor(area_in_sq_meters * 10.7639104));\n if (floor_area_total) formattedArea = $cb75dec613a20d5a$var$formatArea(floor_area_total);\n const details = {\n predictions: predictions && predictions.length || monthly_predictions && monthly_predictions.length,\n load_curve: pvwattsTrace && pvwattsTrace.length || predictionsTrace && predictionsTrace.length,\n energy_use: [\n {\n id: \"annual_consumption\",\n label: \"Annual Consumption\",\n value: (0, $fuiMG.formatNumber)(metrics === null || metrics === void 0 ? void 0 : metrics.annual_kwh_consumption) || $cb75dec613a20d5a$var$none,\n suffix: \"kWh\"\n },\n {\n label: \"Region\",\n value: us_state_region || $cb75dec613a20d5a$var$none\n },\n {\n label: \"Area\",\n value: formattedArea\n },\n {\n label: \"Property type\",\n value: property_type_long\n }\n ],\n utility_territory: [\n {\n label: \"Name\",\n value: utility_name ? $cb75dec613a20d5a$var$toTitleCase(utility_name) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Website\",\n url: utility_website,\n value: utility_website || $cb75dec613a20d5a$var$none\n },\n {\n label: \"Customers\",\n value: utility_customers ? (0, $fuiMG.formatNumber)(utility_customers) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Total MWh\",\n value: utility_total_mwh ? (0, $fuiMG.formatNumber)(utility_total_mwh) : $cb75dec613a20d5a$var$none\n }\n ],\n ev: [\n {\n label: \"Level 2 EV charger recommendation\",\n suffix: \"chargers\",\n hideIfZero: true,\n value: ev_level2_charger_count\n },\n {\n label: \"Level 3 (DC Fast) charger recommendation\",\n suffix: \"chargers\",\n hideIfZero: true,\n value: ev_dcfc_charger_count\n },\n {\n label: \"EV Registrations per state\",\n suffix: \"vehicles\",\n value: ev_registration_count\n },\n {\n label: \"EV Registrations Per 1,000 People\",\n value: ev_registration_count_per_population\n },\n {\n label: \"State Population\",\n value: ev_state_population\n },\n {\n label: \"Closest EV Charger\",\n value: ev_closest_station_name\n },\n {\n label: \"Number of EV Chargers within 10 Miles\",\n value: ev_chargers_in_10_mile_radius\n },\n {\n label: \"Distance to Substation \",\n value: ev_chargers_in_10_mile_radius > 0 && ev_distance_to_substation_meters ? (0, $fuiMG.metersToMiles)(ev_distance_to_substation_meters) : null,\n suffix: \"miles\"\n },\n {\n label: \"Number of EV Chargers in State\",\n value: ev_chargers_in_state\n }\n ],\n iso_territory: [\n {\n label: \"Name\",\n value: iso_name ? $cb75dec613a20d5a$var$toTitleCase(iso_name) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Website\",\n url: iso_website,\n value: iso_website || $cb75dec613a20d5a$var$none\n },\n {\n label: \"Peak Load\",\n suffix: \"MW\",\n value: iso_peak_load ? (0, $fuiMG.formatNumber)(iso_peak_load) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Average Load\",\n suffix: \"MW\",\n value: iso_avg_load ? (0, $fuiMG.formatNumber)(iso_avg_load) : $cb75dec613a20d5a$var$none\n }\n ],\n natural_gas_service: [\n {\n label: \"Utility Name\",\n position: \"left\",\n value: gas_name ? $cb75dec613a20d5a$var$toTitleCase(gas_name) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Website\",\n position: \"left\",\n url: gas_website,\n value: gas_website || $cb75dec613a20d5a$var$none\n },\n {\n label: \"Total Volume (ccf)\",\n position: \"left\",\n value: gas_total_vol ? (0, $fuiMG.formatNumber)(gas_total_vol) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Commercial Customers\",\n position: \"left\",\n value: gas_customers ? (0, $fuiMG.formatNumber)(gas_customers) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Residential price $/MMBTU\",\n position: \"right\",\n format: \"currency\",\n value: gas_res_price || $cb75dec613a20d5a$var$none\n },\n {\n label: \"Commercial price $/MMBTU\",\n position: \"right\",\n format: \"currency\",\n value: gas_comm_price || $cb75dec613a20d5a$var$none\n },\n {\n label: \"Industrial price $/MMBTU\",\n position: \"right\",\n format: \"currency\",\n value: gas_ind_price || $cb75dec613a20d5a$var$none\n }\n ],\n closest_power_plant: [\n \"\"\n ],\n power_line: [\n \"\"\n ],\n building: [\n {\n label: \"Lot Area\",\n position: \"left\",\n value: floor_area_lot ? $cb75dec613a20d5a$var$formatArea(floor_area_lot) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Year Built\",\n position: \"left\",\n value: year_built,\n format: false\n },\n {\n label: \"Number Of Floors\",\n position: \"left\",\n value: floors\n },\n {\n label: \"Floor Area Ratio\",\n position: \"left\",\n value: building_far\n },\n {\n label: \"Number Of Buildings\",\n position: \"left\",\n value: number_of_buildings\n },\n {\n label: \"Number Of Bedrooms\",\n position: \"left\",\n value: number_of_beds\n },\n {\n label: \"Number Of Bathrooms\",\n position: \"left\",\n value: number_of_baths\n },\n {\n label: \"Bin Numbers\",\n position: \"left\",\n value: bins && bins.length ? bins.join(\", \") : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Construction\",\n position: \"left\",\n value: construction && construction.length ? construction : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Nearest Station\",\n position: \"left\",\n value: nearest_station && nearest_station.length ? nearest_station : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Property Name\",\n position: \"left\",\n value: property_name && property_name.length ? property_name : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Building Name\",\n position: \"left\",\n value: building_name && building_name.length ? building_name : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Acquisition Date\",\n position: \"left\",\n value: aquisition_date && aquisition_date.length ? aquisition_date : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Acquisition price\",\n position: \"left\",\n value: aquisition_price && aquisition_price.length ? aquisition_price : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Share in acquisition price\",\n position: \"left\",\n value: share_in_aquisition_price && share_in_aquisition_price.length ? share_in_aquisition_price : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Industry\",\n position: \"left\",\n value: industry\n },\n {\n label: \"Subcategory\",\n position: \"left\",\n value: sub_category\n },\n {\n label: \"Customer cd\",\n position: \"left\",\n value: customer_cd\n },\n {\n label: \"Total Area\",\n position: \"right\",\n value: floor_area_total != null ? $cb75dec613a20d5a$var$formatArea(floor_area_total) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Office Area\",\n position: \"right\",\n value: floor_area_office != null ? $cb75dec613a20d5a$var$formatArea(floor_area_office) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Commercial Area\",\n position: \"right\",\n value: floor_area_commercial != null ? $cb75dec613a20d5a$var$formatArea(floor_area_commercial) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Zoning Code\",\n position: \"right\",\n value: zoning\n },\n {\n label: \"Factory Area\",\n position: \"right\",\n value: floor_area_factory != null ? $cb75dec613a20d5a$var$formatArea(floor_area_factory) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Storage Area\",\n position: \"right\",\n value: floor_area_storage != null ? $cb75dec613a20d5a$var$formatArea(floor_area_storage) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Residential Area\",\n position: \"right\",\n value: floor_area_residential != null ? $cb75dec613a20d5a$var$formatArea(floor_area_residential) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Garage Area\",\n position: \"right\",\n value: floor_area_garage != null ? $cb75dec613a20d5a$var$formatArea(floor_area_garage) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Roof Area\",\n position: \"right\",\n value: area_in_sq_meters ? $cb75dec613a20d5a$var$formatArea(Math.floor(area_in_sq_meters * 10.7639104)) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Leasable Area\",\n position: \"right\",\n value: floor_area_leasable ? $cb75dec613a20d5a$var$formatArea(Math.floor(floor_area_leasable)) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Other Area\",\n position: \"right\",\n value: floor_area_other != null ? $cb75dec613a20d5a$var$formatArea(floor_area_other) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Land Use\",\n position: \"right\",\n value: land_use\n },\n {\n label: \"Residential Units\",\n position: \"right\",\n value: residential_units\n }\n ],\n financials: [\n {\n label: \"Market Value\",\n position: \"left\",\n format: \"currency\",\n value: estimated_market_value || $cb75dec613a20d5a$var$none\n },\n {\n label: \"Tax Rate\",\n position: \"left\",\n suffix: \"%\",\n value: tax_rate || $cb75dec613a20d5a$var$none\n },\n {\n label: \"Revenue\",\n position: \"left\",\n format: \"currency\",\n value: revenue || $cb75dec613a20d5a$var$none\n },\n {\n label: \"OPEX\",\n position: \"left\",\n format: \"currency\",\n value: operating_expense || $cb75dec613a20d5a$var$none\n },\n {\n label: \"Net Operating Income\",\n position: \"left\",\n format: \"currency\",\n value: revenue && operating_expense ? revenue - operating_expense : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Taxable Value\",\n format: \"currency\",\n position: \"right\",\n value: billable_assessed_value || $cb75dec613a20d5a$var$none\n },\n {\n label: \"Property Tax\",\n format: \"currency\",\n position: \"right\",\n value: annual_property_tax != null ? annual_property_tax : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Lender\",\n position: \"right\",\n value: lender || $cb75dec613a20d5a$var$none\n },\n {\n label: \"Loan\",\n format: \"currency\",\n position: \"right\",\n value: debt || $cb75dec613a20d5a$var$none\n },\n {\n label: \"Loan Year\",\n position: \"right\",\n value: loan_year || $cb75dec613a20d5a$var$none\n }\n ],\n energy: [\n {\n label: \"HDD65\",\n suffix: \"days\",\n values: hdd65 || $cb75dec613a20d5a$var$none\n },\n {\n label: \"Average Annual Irradiance\",\n suffix: \"kWh/m2/day\",\n value: average_annual_irradiance || $cb75dec613a20d5a$var$none\n },\n {\n label: \"CDD65\",\n suffix: \"days\",\n value: cdd65 || $cb75dec613a20d5a$var$none\n },\n {\n label: \"Energy Use Intensity\",\n suffix: `kBtu/${$cb75dec613a20d5a$var$sf}`,\n value: eui\n },\n {\n label: \"energy star rating\",\n value: energy_star_score\n },\n {\n label: \"total ghg emissions\",\n suffix: \"MtCO2e\",\n value: ghg_emission_total ? (0, $fuiMG.formatNumber)(ghg_emission_total) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"annual kwh estimate\",\n suffix: \"kWh\",\n value: electricity_use ? (0, $fuiMG.formatNumber)(electricity_use) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"annual peak\",\n suffix: \"kW\",\n value: annual_peak\n },\n {\n label: \"compliance(ll87)\",\n value: compliance_date\n },\n {\n label: \"utility network demand peak\",\n value: utility_network_demand_peak\n },\n {\n label: \"electric utility\",\n value: electric_utility || $cb75dec613a20d5a$var$none\n },\n {\n label: \"natural gas utility\",\n value: natural_gas_utility || $cb75dec613a20d5a$var$none\n }\n ],\n wind_speed: false,\n temperature: false,\n electricity_forecast: !!electricity_forecast,\n der: [\n {\n label: \"Type\",\n position: \"left\",\n value: der_type\n },\n {\n label: \"Output\",\n position: \"left\",\n suffix: \"kW\",\n value: der_output\n },\n {\n label: \"installer & manufacturer\",\n position: \"right\",\n value: der_installer\n },\n {\n label: \"ownership structure\",\n position: \"right\",\n value: der_ownership_structure\n },\n {\n label: \"install date\",\n position: \"right\",\n value: der_installation_date\n },\n {\n label: \"natural gas consumption\",\n position: \"right\",\n value: der_natural_gas_consumption\n }\n ],\n owner: [\n {\n label: \"owner\",\n value: owner_name || $cb75dec613a20d5a$var$none\n },\n {\n label: \"type\",\n value: owner_type || $cb75dec613a20d5a$var$none\n },\n {\n label: \"type code\",\n value: owner_type_code || $cb75dec613a20d5a$var$none\n }\n ]\n };\n // remove der section if non existing\n if (!der_output) delete details.der;\n // Remove energy use section if not available\n if (!metrics || !us_state_region) delete details.energy_use;\n if (total_mmbtu_low) details.energy.push({\n label: \"total mmbtu\",\n value: total_mmbtu_low ? `${(0, $fuiMG.formatNumber)(total_mmbtu_high)} - ${(0, $fuiMG.formatNumber)(total_mmbtu_low)}` : $cb75dec613a20d5a$var$none\n }, {\n label: \"total gallons\",\n value: total_gallons_low ? `${(0, $fuiMG.formatNumber)(total_gallons_low)} - ${(0, $fuiMG.formatNumber)(total_gallons_high)}` : $cb75dec613a20d5a$var$none\n }, {\n label: \"burner model\",\n value: burner_model\n }, {\n label: \"primary fuel\",\n value: primary_fuel\n }, {\n label: \"boiler retirement year\",\n value: esimated_boiler_retirement_year\n });\n if (incentives) details.incentives = incentives.map((incentive)=>({\n key: incentive.id,\n label: incentive.category,\n value: incentive.name\n }));\n if (natural_gas_consumption) details.energy.push({\n label: \"Annual Natural Gas Consumption (MMBTu)\",\n value: natural_gas_consumption ? `${(0, $fuiMG.formatNumber)(natural_gas_consumption)}` : $cb75dec613a20d5a$var$none\n });\n const co2_technologies = [\n \"solar\",\n \"fuel_cell\",\n \"chp\",\n \"solar_thermal\"\n ];\n co2_technologies.forEach((tech)=>{\n if (!co2_reduction || !co2_reduction[tech]) return;\n const { low: low } = co2_reduction[tech];\n const { high: high } = co2_reduction[tech];\n if (high > 0) {\n const v = {\n label: `CO2 Reduction with ${tech.toUpperCase().replace(/_/g, \" \")}`,\n suffix: \"lbs of CO2 reduced/year\",\n value: high ? (0, $fuiMG.formatNumber)(low) - (0, $fuiMG.formatNumber)(high) : $cb75dec613a20d5a$var$none\n };\n if (co2_reduction[tech].high <= 0) v.value = \"0\";\n details.energy.push(v);\n }\n });\n if (last_renovation) details.building.push({\n label: \"last renovation\",\n value: last_renovation\n });\n if (landmark) details.building.push({\n label: \"landmark\",\n value: landmark\n });\n if (boiler_model || boiler_consumption) {\n const boilerData = [\n {\n label: \"boiler model\",\n value: boiler_model || $cb75dec613a20d5a$var$none\n },\n {\n label: \"boiler capacity\",\n suffix: \"Btu\",\n value: boiler_capacity\n },\n {\n label: \"boiler installation Date\",\n value: boiler_installation_date\n },\n {\n label: \"est. boiler consumption (MMBTU)\",\n value: boiler_consumption || $cb75dec613a20d5a$var$none\n },\n {\n label: \"dual fuel\",\n value: boiler_is_dual_fuel ? \"Yes\" : \"No\"\n }\n ];\n details.energy.push(...boilerData);\n }\n if (demo) details.building.forEach((o, i)=>{\n if (o[\"bin number\"]) details.building.splice(i, 1);\n });\n if (opta) details.energy.push({\n label: \"Solar Panel Tilt\",\n suffix: \"\\xb0/180\\xb0\",\n value: opta\n });\n if (pvout) details.energy.push({\n label: \"Solar Irradiance\",\n suffix: \"kWh/kWp per day\",\n value: pvout.toFixed(2)\n });\n if (ele) details.building.push({\n label: \"elevation\",\n suffix: \"m\",\n value: ele\n });\n if (temp) details.building.push({\n label: \"temperature\",\n suffix: \"\\xb0C\",\n value: temp.toFixed(2)\n });\n Object.keys(details).forEach((propName)=>{\n const skip = [\n \"closest_power_plant\",\n \"incentives\",\n \"power_line\",\n \"predictionsTrace\",\n \"pvwattsTrace\"\n ];\n if (Array.isArray(details[propName]) && !skip.includes(propName)) {\n const newDetails = [];\n details[propName].forEach((o)=>{\n if (o.value !== $cb75dec613a20d5a$var$none && o.value !== \"NOT AVAILABLE\") newDetails.push(o);\n });\n if (newDetails.length) details[propName] = newDetails;\n else delete details[propName];\n }\n });\n return details;\n};\nconst $cb75dec613a20d5a$export$126d463feb878e45 = (_param)=>{\n var { address: address, address_ranges: address_ranges, addresses: addresses, attachments: attachments, centroid: centroid, contacts: contacts, energy_star_score: energy_star_score, estimates: estimates, eui: eui, property_type_long: property_type_long, property_type: property_type, recommendations: recommendations, reductions: reductions, therm_production: therm_production = {\n low: 0,\n high: 0\n } } = _param, rest = (0, $bmkEq._)(_param, [\n \"address\",\n \"address_ranges\",\n \"addresses\",\n \"attachments\",\n \"centroid\",\n \"contacts\",\n \"energy_star_score\",\n \"estimates\",\n \"eui\",\n \"property_type_long\",\n \"property_type\",\n \"recommendations\",\n \"reductions\",\n \"therm_production\"\n ]);\n const data = (0, $edHbI._)((0, $2QP2i._)({}, rest), {\n files: attachments,\n centroid: {\n lat: centroid[1],\n lon: centroid[0]\n },\n address: address || $cb75dec613a20d5a$var$formatAddress(addresses) || $cb75dec613a20d5a$var$none,\n address_ranges: address_ranges && address_ranges.length > 1 ? address_ranges : [],\n property_type: property_type_long,\n property_type_short: property_type,\n contacts: contacts,\n recommendations: recommendations,\n pv: recommendations.pv || 0,\n chp: recommendations.chp || 0,\n storage: recommendations.storage || 0,\n fuel_cell: recommendations.fuel_cell || 0,\n solar_thermal: recommendations.solar_thermal || 0,\n icons: {\n energystar: energy_star_score,\n eui: eui\n },\n estimates: {\n chp: estimates.chp || $cb75dec613a20d5a$var$none,\n fuel_cell: estimates.fuel_cell || $cb75dec613a20d5a$var$none,\n solar: estimates.solar || $cb75dec613a20d5a$var$none,\n storage: estimates.storage || $cb75dec613a20d5a$var$none,\n solar_thermal: estimates.solar_thermal || $cb75dec613a20d5a$var$none\n },\n therm_production: therm_production,\n reductions: reductions || {\n solar: {\n kw_reduction: {\n low: 0,\n high: 0\n },\n kwh_reduction: {\n low: 0,\n high: 0\n }\n },\n chp: {\n kw_reduction: {\n low: 0,\n high: 0\n },\n kwh_reduction: {\n low: 0,\n high: 0\n }\n },\n storage: {\n kw_reduction: {\n low: 0,\n high: 0\n },\n kwh_reduction: {\n low: 0,\n high: 0\n }\n },\n fuel_cell: {\n kw_reduction: {\n low: 0,\n high: 0\n },\n kwh_reduction: {\n low: 0,\n high: 0\n }\n }\n }\n });\n Object.keys(data).filter((propName)=>![\n \"closest_power_plant\",\n \"contacts\",\n \"files\",\n \"incentives\",\n \"power_line\",\n \"predictionsTrace\",\n \"pvwattsTrace\",\n \"bbox\"\n ].includes(propName)).forEach((propName)=>{\n const newArr = [];\n if (Array.isArray(data[propName])) {\n data[propName].filter((o)=>o !== null).forEach((o)=>{\n Object.keys(o).forEach((k)=>{\n const v = o[k];\n if (v !== $cb75dec613a20d5a$var$none && v !== \"NOT AVAILABLE\") newArr.push(o);\n });\n });\n data[propName] = newArr;\n }\n });\n return data;\n};\nfunction $cb75dec613a20d5a$export$b1edea61042966f2({ power_line_distance_in_meters: power_line_distance_in_meters, power_line_id: power_line_id, power_line_length_in_meters: power_line_length_in_meters, power_plant_desc: power_plant_desc, power_plant_distance: power_plant_distance, power_plant_fuel: power_plant_fuel, power_plant_id: power_plant_id, power_plant_name: power_plant_name, power_plant_total_mw: power_plant_total_mw }) {\n const data = {\n closest_power_plant: false,\n power_line: false\n };\n if (power_plant_id) data.closest_power_plant = [\n {\n label: \"Name\",\n url: power_plant_id ? `/search/${power_plant_id}` : null,\n value: power_plant_name || $cb75dec613a20d5a$var$none\n },\n {\n label: \"Power Output\",\n suffix: \"MW\",\n value: power_plant_total_mw || $cb75dec613a20d5a$var$none\n },\n {\n label: \"Type\",\n value: power_plant_desc || $cb75dec613a20d5a$var$none\n },\n {\n label: \"Distance\",\n suffix: \"miles\",\n value: power_plant_distance ? (0, $fuiMG.metersToMiles)(power_plant_distance) : $cb75dec613a20d5a$var$none\n },\n {\n label: \"Fuel\",\n value: power_plant_fuel || $cb75dec613a20d5a$var$none\n }\n ];\n if (power_line_id) data.power_line = [\n {\n label: \"Powerline Length\",\n value: power_line_length_in_meters ? (0, $fuiMG.metersToMiles)(power_line_length_in_meters) : $cb75dec613a20d5a$var$none,\n suffix: \"miles\"\n },\n {\n label: \"Powerline Distance\",\n value: power_line_distance_in_meters ? (0, $fuiMG.metersToMiles)(power_line_distance_in_meters) : $cb75dec613a20d5a$var$none,\n suffix: \"miles\"\n }\n ];\n return data;\n}\nfunction $cb75dec613a20d5a$export$cd5b146eaf8b654e({ IRR: IRR, net_present_value: net_present_value, payback_period: payback_period, total_1st_year_net_revenue: total_1st_year_net_revenue, total_30_year_net_revenue: total_30_year_net_revenue, total_gross_project_cost: total_gross_project_cost, battery_kw: battery_kw, battery_kwh: battery_kwh, chp_kw: chp_kw, fuel_cell_kw: fuel_cell_kw, pv_kw: pv_kw }) {\n return [\n {\n label: \"Project Cost\",\n value: total_gross_project_cost,\n format: \"currency\"\n },\n {\n label: \"Payback Period\",\n value: payback_period,\n suffix: \"years\"\n },\n {\n label: \"IRR\",\n value: IRR * 100,\n suffix: \"%\"\n },\n {\n label: \"1st Year Net Revenue\",\n value: total_1st_year_net_revenue,\n format: \"currency\"\n },\n {\n label: \"Total Project Revenue\",\n value: total_30_year_net_revenue,\n format: \"currency\"\n },\n {\n label: \"Net Present Value\",\n value: net_present_value,\n format: \"currency\"\n },\n {\n label: \"Battery\",\n value: `${(0, $fuiMG.formatNumber)(battery_kw)}kW / ${(0, $fuiMG.formatNumber)(battery_kwh)}kWh`\n },\n {\n label: \"CHP\",\n value: chp_kw,\n suffix: \"kW\"\n },\n {\n label: \"Fuel Cell\",\n value: fuel_cell_kw,\n suffix: \"kW\"\n },\n {\n label: \"Solar\",\n value: pv_kw,\n suffix: \"kW\"\n }\n ];\n}\nfunction $cb75dec613a20d5a$export$aaca97b705d749dc(rates) {\n if (!rates) return [];\n const { abbreviation: abbreviation, alternative_policy: alternative_policy, cost_solar: cost_solar, country_average_rate_kwh: country_average_rate_kwh, country_commercial_rate_kwh: country_commercial_rate_kwh, country_industrial_rate_kwh: country_industrial_rate_kwh, country_residential_rate_kwh: country_residential_rate_kwh, country_source: country_source, interconnection_spr: interconnection_spr, name: name, net_metering_allowed: net_metering_allowed, net_metering_capacity_limit: net_metering_capacity_limit, net_metering_meter_aggregation: net_metering_meter_aggregation, net_metering_notes: net_metering_notes, performance_payments_spr: performance_payments_spr, property_tax_spr: property_tax_spr, rps_spr: rps_spr, sales_tax_spr: sales_tax_spr, score_spr: score_spr, state_commercial_rate_kwh: state_commercial_rate_kwh, state_industrial_rate_kwh: state_industrial_rate_kwh, state_residential_rate_kwh: state_residential_rate_kwh, state_source: state_source, tax_credit_spr: tax_credit_spr, tariff_name: tariff_name, utility_name: utility_name, tariff_type: tariff_type } = rates;\n return [\n {\n value: name,\n name: \"name\",\n label: \"name\"\n },\n {\n value: tariff_name,\n name: \"tariff_name\",\n label: \"tariff name\"\n },\n {\n value: tariff_type,\n name: \"tariff_type\",\n label: \"tariff type\"\n },\n {\n value: utility_name,\n name: \"utility_name\",\n label: \"utility name\"\n },\n {\n value: rps_spr,\n name: \"rps_spr\",\n label: \"rps spr\"\n },\n {\n value: score_spr,\n name: \"score_spr\",\n label: \"score spr\"\n },\n {\n value: cost_solar,\n name: \"cost_solar\",\n label: \"cost solar\",\n format: \"currency\"\n },\n {\n value: abbreviation,\n name: \"abbreviation\",\n label: \"abbreviation\"\n },\n {\n value: state_source,\n name: \"state_source\",\n label: \"state source\"\n },\n {\n value: sales_tax_spr,\n name: \"sales_tax_spr\",\n label: \"sales taxspr\"\n },\n {\n value: country_source,\n name: \"country_source\",\n label: \"country source\"\n },\n {\n value: tax_credit_spr,\n name: \"tax_credit_spr\",\n label: \"tax credit spr\"\n },\n {\n value: property_tax_spr,\n name: \"property_tax_spr\",\n label: \"property tax spr\"\n },\n {\n value: alternative_policy,\n name: \"alternative_policy\",\n label: \"alternative policy\"\n },\n {\n value: net_metering_notes,\n name: \"net_metering_notes\",\n label: \"net metering notes\"\n },\n {\n value: interconnection_spr,\n name: \"interconnection_spr\",\n label: \"interconnection spr\"\n },\n {\n value: net_metering_allowed,\n name: \"net_metering_allowed\",\n label: \"net metering allowed\"\n },\n {\n value: country_average_rate_kwh,\n name: \"country_average_rate_kwh\",\n label: \"country average rate\",\n prefix: \"$\",\n suffix: \"/kWh\"\n },\n {\n value: performance_payments_spr,\n name: \"performance_payments_spr\",\n label: \"performance payments spr\"\n },\n {\n value: state_commercial_rate_kwh,\n name: \"state_commercial_rate_kwh\",\n label: \"state commercial rate\",\n prefix: \"$\",\n suffix: \"/kWh\"\n },\n {\n value: state_industrial_rate_kwh,\n name: \"state_industrial_rate_kwh\",\n label: \"state industrial rate\",\n prefix: \"$\",\n suffix: \"/kWh\"\n },\n {\n value: state_residential_rate_kwh,\n name: \"state_residential_rate_kwh\",\n label: \"state residential rate\",\n prefix: \"$\",\n suffix: \"/kWh\"\n },\n {\n value: country_commercial_rate_kwh,\n name: \"country_commercial_rate_kwh\",\n label: \"country commercial rate\",\n prefix: \"$\",\n suffix: \"/kWh\"\n },\n {\n value: country_industrial_rate_kwh,\n name: \"country_industrial_rate_kwh\",\n label: \"country industrial rate\",\n prefix: \"$\",\n suffix: \"/kWh\"\n },\n {\n value: net_metering_capacity_limit,\n name: \"net_metering_capacity_limit\",\n label: \"net metering capacity limit\"\n },\n {\n value: country_residential_rate_kwh,\n name: \"country_residential_rate_kwh\",\n label: \"country residential rate\",\n prefix: \"$\",\n suffix: \"/kWh\"\n },\n {\n value: net_metering_meter_aggregation,\n name: \"net_metering_meter_aggregation\",\n label: \"net metering meter aggregation\"\n }\n ];\n}\n\n});\nparcelRegister(\"bmkEq\", function(module, exports) {\n\n$parcel$export(module.exports, \"_\", function () { return $8451c4a8dea9d5c8$export$69fdd232f62cde60; });\n\nvar $4ac6j = parcelRequire(\"4ac6j\");\nfunction $8451c4a8dea9d5c8$export$69fdd232f62cde60(source, excluded) {\n if (source == null) return {};\n var target = (0, $4ac6j._object_without_properties_loose)(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\n\n});\nparcelRegister(\"4ac6j\", function(module, exports) {\n\n$parcel$export(module.exports, \"_object_without_properties_loose\", function () { return $30817b8edd440392$export$7a4a7e38737aceb4; });\nfunction $30817b8edd440392$export$7a4a7e38737aceb4(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\n});\n\n\n\n\nparcelRegister(\"bccd0\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $826a49161fad03e6$export$2e2bcd8739ae039; });\n\nvar $cr2GM = parcelRequire(\"cr2GM\");\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $a2DeL = parcelRequire(\"a2DeL\");\n\nvar $lxEiN = parcelRequire(\"lxEiN\");\n\nvar $ht0W2 = parcelRequire(\"ht0W2\");\n\nvar $8K8cO = parcelRequire(\"8K8cO\");\nclass $826a49161fad03e6$var$Store {\n get sections() {\n if (this.details) return Object.keys(this.details).filter((key)=>this.details[key]).map((id)=>({\n id: id,\n title: (0, $8K8cO.default)[id]\n }));\n return [];\n }\n get analyticsUrl() {\n if (this.financials) return this.financials.analytics_id;\n return null;\n }\n get emissionsData() {\n if (this.financials) return this.financials.emissions;\n return null;\n }\n get cashFlow() {\n if (this.financials) return this.financials.capex_cash_flow;\n return null;\n }\n get cashFlowPPA() {\n if (this.financials) return this.financials.financials_ppa.capex_cash_flow;\n return null;\n }\n get formattedFinancials() {\n var _this_financials;\n if ((_this_financials = this.financials) === null || _this_financials === void 0 ? void 0 : _this_financials.formatted_financials) return this.financials.formatted_financials.financials;\n return [];\n }\n get formattedFinancialsPPA() {\n var _this_financials;\n if ((_this_financials = this.financials) === null || _this_financials === void 0 ? void 0 : _this_financials.formatted_financials_ppa) return this.financials.formatted_financials_ppa.financials;\n return [];\n }\n get quickMenuLinks() {\n if (this.building) {\n const { contacts: contacts, tariff: tariff } = this.building;\n const links = [\n ...this.sections\n ];\n if (tariff) links.push({\n id: \"tariff\",\n title: `${(0, $8K8cO.default).tariff}: ${tariff.name}`\n });\n links.push({\n id: \"places\",\n title: (0, $8K8cO.default).places\n });\n if (contacts && !!contacts.length) links.push({\n id: \"contacts\",\n title: (0, $8K8cO.default).contacts\n });\n return links;\n }\n return [];\n }\n constructor(){\n (0, $cr2GM._)(this, \"isLoading\", false);\n (0, $cr2GM._)(this, \"id\", null);\n (0, $cr2GM._)(this, \"building\", null);\n (0, $cr2GM._)(this, \"estimates\", null);\n (0, $cr2GM._)(this, \"estimates_int\", null);\n (0, $cr2GM._)(this, \"financialsHash\", null);\n (0, $cr2GM._)(this, \"details\", null);\n (0, $cr2GM._)(this, \"weather_timestamp\", null);\n (0, $cr2GM._)(this, \"wind_speed\", null);\n (0, $cr2GM._)(this, \"temperature\", null);\n (0, $cr2GM._)(this, \"places\", null);\n (0, $cr2GM._)(this, \"financials\", null);\n (0, $cr2GM._)(this, \"closest_power_plant\", null);\n (0, $cr2GM._)(this, \"power_line\", null);\n (0, $cr2GM._)(this, \"weatherData\", []);\n (0, $cr2GM._)(this, \"predictions\", []);\n (0, $cr2GM._)(this, \"centroid\", null);\n (0, $cr2GM._)(this, \"bbox\", null);\n (0, $cr2GM._)(this, \"timeOfDay\", new Date(1681488000000));\n (0, $cr2GM._)(this, \"financialMode\", \"default\");\n (0, $cr2GM._)(this, \"showUploadedData\", false);\n (0, $cr2GM._)(this, \"setFinancialsHash\", (hash)=>{\n this.financialsHash = hash;\n });\n (0, $cr2GM._)(this, \"setFinancials\", (financials)=>{\n this.financials = financials;\n });\n (0, $cr2GM._)(this, \"loadBuilding\", async (buildingId)=>{\n if (this.id === buildingId && !this.isLoading) return true;\n this.building = null;\n this.isLoading = true;\n this.centroid = null;\n this.bbox = null;\n this.financials = null;\n this.financialMode = \"default\";\n this.timeOfDay = new Date(1681488000000);\n const building = await (0, $a2DeL.default).loadBuilding(buildingId);\n if (building) {\n this.id = building.id;\n this.details = building.details;\n this.estimates = building.estimates;\n this.estimates_int = building.estimates_int;\n this.building = building;\n this.centroid = building.centroid;\n this.bbox = building.bbox;\n this.weather_timestamp = null;\n this.wind_speed = null;\n this.temperature = null;\n this.weatherData = [];\n this.predictions = [];\n this.places = null;\n this.closest_power_plant = null;\n this.power_line = null;\n this.isLoading = false;\n if (building.financials) this.setFinancials(building.financials);\n return building;\n }\n this.isLoading = false;\n return null;\n });\n (0, $cr2GM._)(this, \"loadFinancials\", async ()=>{\n const building = await (0, $a2DeL.default).loadBuilding(this.id);\n if (building) {\n console.log(\"new financials\");\n this.setFinancials(building.financials);\n return building;\n }\n return null;\n });\n (0, $cr2GM._)(this, \"getBuildingFinancials\", async (projectId)=>{\n const { data: data } = await (0, $lxEiN.default).Project.getBuildingFinancials(projectId, this.id);\n this.financials = data.data;\n });\n (0, $cr2GM._)(this, \"getWeather\", async (lon, lat)=>{\n const { data: data } = await (0, $lxEiN.default).Building.getWeather(lon, lat);\n if (data.data) this.weatherData = data.data.charts;\n });\n (0, $cr2GM._)(this, \"getPredictions\", async (buildingId)=>{\n if (this.building.project_id) {\n const { data: data } = await (0, $lxEiN.default).Project.getProjectBuildingPredictions(this.building.project_id, buildingId);\n this.predictions = data.data;\n } else {\n const { data: data } = await (0, $lxEiN.default).Building.getPredictions(buildingId);\n this.predictions = data.data;\n }\n });\n (0, $cr2GM._)(this, \"getPlaces\", async (buildingId, lon, lat)=>{\n const { data: data } = await (0, $lxEiN.default).Building.getPlaces(lon, lat);\n if (data === null || data === void 0 ? void 0 : data.data) this.places = data.data;\n });\n (0, $cr2GM._)(this, \"getPowerOptions\", async (buildingId, lon, lat)=>{\n const { data: data } = await (0, $lxEiN.default).Building.getPowerOptions(lon, lat);\n if (data === null || data === void 0 ? void 0 : data.data) {\n const { power_line_closest_point: power_line_closest_point, power_line_geometry: power_line_geometry, power_line_id: power_line_id, power_plant_geometry: power_plant_geometry } = data.data;\n this.details = (0, $2QP2i._)({}, this.details, (0, $ht0W2.formatBuildingPower)(data.data));\n this.closest_power_plant = true;\n this.power_line = {\n power_line_closest_point: power_line_closest_point,\n power_line_geometry: power_line_geometry,\n power_line_id: power_line_id,\n power_plant_geometry: power_plant_geometry\n };\n }\n });\n (0, $cr2GM._)(this, \"setEstimates\", (estimates, estimates_int)=>{\n if (!estimates) throw new Error(\"estimates is required\");\n if (!estimates_int) throw new Error(\"estimates_int is required\");\n this.estimates = estimates;\n this.estimates_int = estimates_int;\n });\n (0, $cr2GM._)(this, \"setFinancialMode\", (mode)=>{\n this.financialMode = mode;\n });\n (0, $cr2GM._)(this, \"setTimeOfDay\", (time)=>{\n this.timeOfDay = time;\n });\n (0, $cr2GM._)(this, \"setShowUploadedData\", (show)=>{\n this.showUploadedData = show;\n });\n (0, $gOgWf.makeObservable)(this, {\n isLoading: (0, $gOgWf.observable),\n showUploadedData: (0, $gOgWf.observable),\n id: (0, $gOgWf.observable),\n centroid: (0, $gOgWf.observable),\n financialsHash: (0, $gOgWf.observable),\n estimates: (0, $gOgWf.observable),\n estimates_int: (0, $gOgWf.observable),\n timeOfDay: (0, $gOgWf.observable),\n details: (0, $gOgWf.observable),\n weather_timestamp: (0, $gOgWf.observable),\n financials: (0, $gOgWf.observable),\n wind_speed: (0, $gOgWf.observable),\n temperature: (0, $gOgWf.observable),\n places: (0, $gOgWf.observable),\n closest_power_plant: (0, $gOgWf.observable),\n power_line: (0, $gOgWf.observable),\n weatherData: (0, $gOgWf.observable),\n predictions: (0, $gOgWf.observable),\n loadBuilding: (0, $gOgWf.action),\n financialMode: (0, $gOgWf.observable),\n sections: (0, $gOgWf.computed),\n quickMenuLinks: (0, $gOgWf.computed),\n getWeather: (0, $gOgWf.action),\n getPredictions: (0, $gOgWf.action),\n getPlaces: (0, $gOgWf.action),\n setFinancialMode: (0, $gOgWf.action),\n getPowerOptions: (0, $gOgWf.action)\n });\n }\n}\nconst $826a49161fad03e6$var$store = new $826a49161fad03e6$var$Store();\nvar $826a49161fad03e6$export$2e2bcd8739ae039 = $826a49161fad03e6$var$store;\n\n});\nparcelRegister(\"8K8cO\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $01a48831df6ab253$export$2e2bcd8739ae039; });\nvar $01a48831df6ab253$export$2e2bcd8739ae039 = {\n building: \"Building\",\n closest_power_plant: \"Nearest Power Plant\",\n der: \"Der on-site\",\n electricity_forecast: \"Realtime Utility and Weather\",\n energy: \"Energy and environment\",\n financials: \"Property Financials\",\n incentives: \"Energy Incentives\",\n energy_use: \"Energy Use\",\n iso_territory: \"Independent System Operator\",\n load_curve: \"Predicted Load Profile\",\n natural_gas_service: \"Natural Gas Service Territory\",\n ev: \"Electric Vehicles\",\n owner: \"Ownership\",\n power_line: \"Nearest Powerline\",\n predictions: \"Solar Photovoltaic Production\",\n temperature: \"Temperature\",\n utility_territory: \"Utility Territory\",\n wind_speed: \"Wind Speed\",\n contacts: \"Contacts\",\n tariff: \"Tariff\",\n places: \"Places\",\n descriptions: {\n storage_estimate: `A site-specific recommendation on the size of a Battery Storage system to be installed at this property`,\n storage_recommendation: `Suitability of Battery Storage technologies to this property type`,\n chp_estimate: `A site-specific recommendation on the size of a CHP system to be installed at this property`,\n chp_recommendation: `Suitability of CHP technologies to this property type`,\n fuel_cell_recommendation: `A site-specific recommendation on the size of a Fuel Cell system to be installed at this property`,\n fuel_cell_estimate: `Suitability of Fuel Cell technologies to this property type`,\n solar_recommendation: `A site-specific recommendation on the size of a Solar system to be installed at this property`,\n solar_estimate: `Suitability of Solar technologies to this type`,\n \"lot area\": `Total square footage value of parcel of land`,\n \"total area\": `Total square footage of building(s) on parcel`,\n \"year built\": `Date of intial building completion`,\n \"office area\": `area Sub-type of commercial area. Building usage breakdown for office area, allowing for a better understanding of building use`,\n \"number of floors\": `Maximum number of floors of building(s) on property`,\n \"commercial area\": `Building usage breakdown for commercial area, allowing for a better understanding of building use`,\n \"floor area ratio\": `Gross floor area of building(s) (total area) divided by lot area`,\n \"number of buildings\": `Number of buildings included on the property`,\n \"factory area\": `Sub-type of commercial area. Building usage breakdown for factory area, allowing for a better understanding of building use`,\n \"retail area\": `Sub-type of commercial area. Building usage breakdown for retail area, allowing for a better understanding of building use`,\n \"storage area\": `Able to search through any of the NYC data sets using this number`,\n \"residential area\": `Sub-type of commercial area. Building usage breakdown for storage area, allowing for a better understanding of building use`,\n \"land use\": `Land Use of the property, derived from building class`,\n \"garage area\": `Sub-type of commercial area. Building usage breakdown for garage area, allowing for a better understanding of building use`,\n landmark: `Name of the landmark designation on the building (if applicable)`,\n \"other area\": `Sub-type of commercial area. Building usage breakdown for other area, allowing for a better understanding of building use`,\n \"residential units\": `Number of residential units contained on the property (does not include hotel units)`,\n \"market value\": `DER project development can increase current market value of property`,\n \"taxable value\": `Actual or Transitional Assessed Value (whichever is less) minus any exemptions, used to calculate annual tax bill`,\n \"tax rate\": `The rate used to determine the tax owed, each tax class has it's own rate `,\n \"property tax\": \"Can provide useful insight. Often when property tax is $0, the site is subsidized \",\n revenue: `Total revenue of property`,\n lender: `Name of instutution loaning the amount listed`,\n opex: `Building Operating Expense`,\n loan: `Current loan amount`,\n \"net operating income\": `Revenue minus OPEX`,\n \"loan year\": `Year of most recent loan`,\n \"energy use intensity\": `Total energy consumed in one year divided by total building area`,\n \"electric utility\": `Name of Electric Utility`,\n \"energy star rating\": `Screening tool that helps one assess how a building is performing. A score of 50 is the median`,\n gas_utility: `Name of Gas Utility`,\n \"total ghg emissions\": `Total GHG emissions from the technologies and systems on the property`,\n bouler_model: `Model of boiler currently installed on the property`,\n \"total kwh\": `Estimate of total kWh used on the lot in a year`,\n boiler_capacity: `Heating capacity of current boiler`,\n \"year peak\": `Yearly peak electric demand of building(s)`,\n \"boiler installation date\": `Istallation year of boiler, which can suggest a boiler is out of date and in need of an upgrade`,\n \"compliance(ll87)\": `Compliance years in the recent past means they energy audit information is up-to-date. A compliance year scheduled in the near future means their energy info will be updated soon`,\n \"boiler oil consumption\": `Estimate of yearly oil consumption by installed boiler`,\n \"utility network demand peak\": `When electricity demand is highest for a given network`,\n \"is dual fuel\": `Boiler able to accept both oil and natural gas (Y/N)`,\n owner: `Listed owner of building`,\n type: `Owner type`,\n \"natural gas utility\": \"Name of Gas Utility\",\n \"e-mail\": `Email address listed for contact`,\n contact: `If an organization, contact at the organization for reaching out to initiate or continue conversations`,\n \"relationship to owner\": \"Relationship of Contact to owner\",\n phone: \"Phone number of contact\"\n }\n};\n\n});\n\n\nparcelRegister(\"8ERvd\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $64db8fa61093eb9e$export$2e2bcd8739ae039; });\n\nvar $cr2GM = parcelRequire(\"cr2GM\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n// configure({ enforceActions: true});\nclass $64db8fa61093eb9e$var$Store {\n setModal(modalName, data) {\n this.open = modalName;\n this.data = data;\n }\n setData(data) {\n this.data = data;\n }\n constructor(){\n (0, $cr2GM._)(this, \"open\", null);\n (0, $cr2GM._)(this, \"data\", void 0);\n (0, $gOgWf.makeObservable)(this, {\n open: (0, $gOgWf.observable),\n data: (0, $gOgWf.observable),\n setModal: (0, $gOgWf.action),\n setData: (0, $gOgWf.action)\n });\n }\n}\nconst $64db8fa61093eb9e$var$store = new $64db8fa61093eb9e$var$Store();\nvar $64db8fa61093eb9e$export$2e2bcd8739ae039 = $64db8fa61093eb9e$var$store;\n\n});\n\nparcelRegister(\"PtNzY\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $09abe0ede62d3598$export$2e2bcd8739ae039; });\n\nvar $cr2GM = parcelRequire(\"cr2GM\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $4WgAH = parcelRequire(\"4WgAH\");\nclass $09abe0ede62d3598$var$Store {\n addBuilding(id, building) {\n this.buildings.set(id, building);\n }\n removeBuilding(id) {\n this.buldings.delete(id);\n }\n constructor(){\n (0, $cr2GM._)(this, \"buildings\", new Map());\n (0, $cr2GM._)(this, \"create\", async (name)=>{\n const params = {\n name: name,\n buildings: this.buildings.values()\n };\n await (0, $4WgAH.default).createProject(params);\n });\n (0, $gOgWf.makeObservable)(this, {\n buildings: (0, $gOgWf.observable),\n addBuilding: (0, $gOgWf.action),\n removeBuilding: (0, $gOgWf.action),\n create: (0, $gOgWf.action)\n });\n }\n}\nconst $09abe0ede62d3598$var$store = new $09abe0ede62d3598$var$Store();\nvar $09abe0ede62d3598$export$2e2bcd8739ae039 = $09abe0ede62d3598$var$store;\n\n});\n\nparcelRegister(\"a0rcO\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $748f01f1fcb334d0$export$2e2bcd8739ae039; });\n\nvar $cr2GM = parcelRequire(\"cr2GM\");\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $lxEiN = parcelRequire(\"lxEiN\");\nclass $748f01f1fcb334d0$var$Store {\n get total() {\n return this.tasks.size;\n }\n constructor(){\n (0, $cr2GM._)(this, \"project\", null);\n (0, $cr2GM._)(this, \"tasks\", new Map());\n (0, $cr2GM._)(this, \"loadTasks\", async (projectId, buildingId)=>{\n this.tasks = new Map();\n const response = await (0, $lxEiN.default).Task.getProjectTasks(projectId, buildingId);\n this.tasks = new Map(response.data.data.map((task)=>{\n return [\n task.id,\n task\n ];\n }));\n });\n (0, $cr2GM._)(this, \"loadTask\", async (id)=>{\n try {\n const { data: data } = await (0, $lxEiN.default).Task.get(id);\n if (data.ok) {\n this.tasks.set(data.data.id, data.data);\n return this.tasks.get(data.data.id);\n }\n } catch (e) {\n return null;\n }\n });\n (0, $cr2GM._)(this, \"get\", (id)=>{\n return this.tasks.get(id);\n });\n (0, $cr2GM._)(this, \"create\", async (taskData)=>{\n const postParams = (0, $edHbI._)((0, $2QP2i._)({}, taskData), {\n users: taskData.users.map((u)=>u.id)\n });\n const { data: data } = await (0, $lxEiN.default).Task.create(postParams);\n if (data.ok) {\n this.tasks.set(data.data.id, data.data);\n return data.data;\n }\n return null;\n });\n (0, $cr2GM._)(this, \"updateStatus\", async (taskData)=>{\n const task = this.tasks.get(taskData.id);\n this.tasks.set(taskData.id, taskData);\n await this.update(taskData, task);\n });\n (0, $cr2GM._)(this, \"update\", async (taskId, taskData)=>{\n const tasks = new Map(this.tasks);\n const task = tasks.get(taskId);\n const newTask = (0, $edHbI._)((0, $2QP2i._)({}, task), {\n status: taskData.status\n });\n if (taskData.status !== task.status) {\n tasks.set(taskId, newTask);\n this.tasks = tasks;\n }\n try {\n const { data: data } = await (0, $lxEiN.default).Task.update(taskId, taskData);\n tasks.set(data.data.id, data.data);\n } catch (err) {\n tasks.set(task.id, task);\n }\n this.tasks = tasks;\n });\n (0, $cr2GM._)(this, \"deleteTask\", async (id)=>{\n const { data: data } = await (0, $lxEiN.default).Task.delete(id);\n if (data.ok) {\n this.tasks.delete(id);\n return data.data;\n }\n return null;\n });\n (0, $gOgWf.makeObservable)(this, {\n project: (0, $gOgWf.observable),\n tasks: (0, $gOgWf.observable),\n loadTasks: (0, $gOgWf.action),\n loadTask: (0, $gOgWf.action),\n get: (0, $gOgWf.action),\n total: (0, $gOgWf.computed),\n create: (0, $gOgWf.action),\n updateStatus: (0, $gOgWf.action),\n update: (0, $gOgWf.action),\n deleteTask: (0, $gOgWf.action)\n });\n }\n}\nconst $748f01f1fcb334d0$var$store = new $748f01f1fcb334d0$var$Store();\nvar $748f01f1fcb334d0$export$2e2bcd8739ae039 = $748f01f1fcb334d0$var$store;\n\n});\n\nparcelRegister(\"6OIJW\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $4f6a1e06e4fbabca$export$2e2bcd8739ae039; });\n\nvar $cr2GM = parcelRequire(\"cr2GM\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n// configure({ enforceActions: true});\nclass $4f6a1e06e4fbabca$var$Store {\n get layoutClass() {\n return [\n this.sidebarExpanded ? \"nav-expanded\" : \"\",\n this.isContentVisible ? \"content-visible\" : \"\",\n this.isMapVisible ? \"map-visible\" : \"\",\n this.isSpeedDialOpen ? \"speeddial-visible\" : \"\"\n ].join(\" \").trim();\n }\n setRadius(value) {\n this.radius = value;\n }\n setRadiusActive(value) {\n this.isRadiusActive = value;\n }\n setSearchPanelState(state) {\n this.controlPanelState = state;\n }\n setSearchFiltersState(state) {\n this.searchFiltersState = state;\n }\n setSidebarExpanded(isExpanded) {\n this.sidebarExpanded = isExpanded;\n }\n setIsSpeedDialOpen(isOpen) {\n this.isSpeedDialOpen = isOpen;\n }\n setActiveLayer(layerName, isActive) {\n if (isActive) this.activeMapLayers = [\n ...this.activeMapLayers,\n layerName\n ];\n else this.activeMapLayers = [\n ...this.activeMapLayers,\n layerName\n ].filter((layer)=>layer !== layerName);\n }\n setAnalysisPanelOpen(isOpen) {\n this.isAnalysisPanelOpen = isOpen;\n }\n setActiveMapLayers(mapLayers) {\n this.activeMapLayers = mapLayers;\n }\n setIsMapVisible(isVisible) {\n this.isMapVisible = isVisible;\n }\n setIsContentVisible(isVisible) {\n this.isContentVisible = isVisible;\n }\n setFeedbackModalOpen(open) {\n this.feedbackModalOpen = open;\n }\n setUIVersion(version) {\n this.version = version;\n }\n setREGISTRATION_VERSION(version) {\n this.REGISTRATION_VERSION = version;\n }\n constructor(){\n (0, $cr2GM._)(this, \"controlPanelState\", \"search\");\n (0, $cr2GM._)(this, \"searchFiltersState\", \"form\");\n (0, $cr2GM._)(this, \"isSpeedDialOpen\", false);\n (0, $cr2GM._)(this, \"isAnalysisPanelOpen\", false);\n (0, $cr2GM._)(this, \"isMapVisible\", false);\n (0, $cr2GM._)(this, \"isContentVisible\", false);\n (0, $cr2GM._)(this, \"feedbackModalOpen\", false);\n (0, $cr2GM._)(this, \"version\", \"v2\");\n (0, $cr2GM._)(this, \"REGISTRATION_VERSION\", \"v2\");\n (0, $cr2GM._)(this, \"mapLayers\", [\n {\n name: \"coned_hosting_capacity\",\n label: \"Hosting Capacity\"\n },\n {\n name: \"coned_hosting_capacity_lines\",\n label: \"Feeder Hosting Capacity\"\n },\n {\n name: \"powerlines\",\n label: \"Powerlines\"\n },\n {\n name: \"openweather_solar\",\n label: \"Temperature\"\n },\n {\n name: \"openweather_wind\",\n label: \"Wind\"\n },\n {\n name: \"openweather_clouds\",\n label: \"Cloud Cover\"\n }\n ]);\n (0, $cr2GM._)(this, \"detailView\", {\n currentTab: 0\n });\n (0, $cr2GM._)(this, \"activeMapLayers\", []);\n (0, $cr2GM._)(this, \"radius\", false);\n (0, $cr2GM._)(this, \"isRadiusActive\", false);\n (0, $cr2GM._)(this, \"sidebarExpanded\", false);\n (0, $gOgWf.makeObservable)(this, {\n isAnalysisPanelOpen: (0, $gOgWf.observable),\n controlPanelState: (0, $gOgWf.observable),\n version: (0, $gOgWf.observable),\n REGISTRATION_VERSION: (0, $gOgWf.observable),\n feedbackModalOpen: (0, $gOgWf.observable),\n searchFiltersState: (0, $gOgWf.observable),\n isSpeedDialOpen: (0, $gOgWf.observable),\n isMapVisible: (0, $gOgWf.observable),\n isContentVisible: (0, $gOgWf.observable),\n mapLayers: (0, $gOgWf.observable),\n detailView: (0, $gOgWf.observable),\n activeMapLayers: (0, $gOgWf.observable),\n radius: (0, $gOgWf.observable),\n isRadiusActive: (0, $gOgWf.observable),\n sidebarExpanded: (0, $gOgWf.observable),\n layoutClass: (0, $gOgWf.computed),\n setRadius: (0, $gOgWf.action),\n setRadiusActive: (0, $gOgWf.action),\n setSearchPanelState: (0, $gOgWf.action),\n setSearchFiltersState: (0, $gOgWf.action),\n setSidebarExpanded: (0, $gOgWf.action),\n setIsSpeedDialOpen: (0, $gOgWf.action),\n setActiveLayer: (0, $gOgWf.action),\n setIsMapVisible: (0, $gOgWf.action),\n setIsContentVisible: (0, $gOgWf.action)\n });\n }\n}\nconst $4f6a1e06e4fbabca$var$store = new $4f6a1e06e4fbabca$var$Store();\nvar $4f6a1e06e4fbabca$export$2e2bcd8739ae039 = $4f6a1e06e4fbabca$var$store;\n\n});\n\nparcelRegister(\"brBQs\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $854f928e0b85dc7e$export$2e2bcd8739ae039; });\n\nvar $cr2GM = parcelRequire(\"cr2GM\");\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $3U8SM = parcelRequire(\"3U8SM\");\n\nvar $lxEiN = parcelRequire(\"lxEiN\");\n\nvar $lUBOG = parcelRequire(\"lUBOG\");\nclass $854f928e0b85dc7e$var$Store {\n get loggedIn() {\n return Boolean(this.user && this.user.logged_in);\n }\n get isAdmin() {\n var _this_user;\n return Boolean((_this_user = this.user) === null || _this_user === void 0 ? void 0 : _this_user.is_admin);\n }\n get avatar() {\n var _this_user, _this_user1;\n return `${(0, $lUBOG.default).E2E_API_URL}user/${(_this_user = this.user) === null || _this_user === void 0 ? void 0 : _this_user.id}/avatar?${(_this_user1 = this.user) === null || _this_user1 === void 0 ? void 0 : _this_user1.last_active}`;\n }\n get isActivated() {\n var _this_user;\n return Boolean((_this_user = this.user) === null || _this_user === void 0 ? void 0 : _this_user.is_activated);\n }\n get isOnboardingCompleted() {\n var _this_user;\n return Boolean((_this_user = this.user) === null || _this_user === void 0 ? void 0 : _this_user.is_onboarding_completed);\n }\n hasAccess(id) {\n var _this_user_group;\n return (_this_user_group = this.user.group) === null || _this_user_group === void 0 ? void 0 : _this_user_group.menu_items.includes(id);\n }\n addNotification(notification) {\n this.notifications = [\n ...this.notifications,\n notification\n ];\n }\n constructor(){\n (0, $cr2GM._)(this, \"user\", null);\n (0, $cr2GM._)(this, \"groupMembers\", []);\n (0, $cr2GM._)(this, \"notifications\", []);\n (0, $cr2GM._)(this, \"status\", \"loading\");\n (0, $cr2GM._)(this, \"loginWithCode\", async (code)=>{\n const { data: data } = await (0, $3U8SM.default).post(\"/login\", {\n code: code\n });\n if (data.ok !== 1) return false;\n await this.fetchCredentials();\n return true;\n });\n (0, $cr2GM._)(this, \"login\", async (email, password)=>{\n const { data: data } = await (0, $3U8SM.default).post(\"/login\", {\n email: email,\n password: password\n });\n if (data.ok !== 1) return false;\n await this.fetchCredentials();\n return true;\n });\n (0, $cr2GM._)(this, \"logout\", async ()=>{\n localStorage.removeItem(\"jwt\");\n await (0, $lxEiN.default).User.logout();\n this.user = null;\n });\n (0, $cr2GM._)(this, \"fetchCredentials\", async ()=>{\n const { data: data } = await (0, $3U8SM.default).get(\"/status\");\n this.user = data;\n if (data.msg === \"UNDER_MAINTENANCE\") this.status = \"UNDER_MAINTENANCE\";\n else this.status = \"loaded\";\n if (data.is_activated && data.logged_in && data.group) this.fetchGroupMembers();\n return data;\n });\n (0, $cr2GM._)(this, \"hasGroupPermission\", (permission)=>{\n return Boolean(this.user.group.permissions[permission]);\n });\n (0, $cr2GM._)(this, \"switchGroup\", async (id)=>{\n try {\n const { data: data } = await (0, $3U8SM.default).get(`/group/${id}/switch`);\n await this.fetchCredentials();\n this.fetchGroupMembers();\n return data;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n return null;\n }\n });\n (0, $cr2GM._)(this, \"fetchGroupMembers\", async ()=>{\n const { data: data } = await (0, $3U8SM.default).get(`/group/${this.user.group.id}/relationships/users`);\n this.groupMembers = data.data;\n return data.data;\n });\n (0, $cr2GM._)(this, \"deleteGroup\", async (groupId)=>{\n const newGroups = [\n ...this.user.groups\n ].filter((group)=>group.id !== groupId);\n this.user = (0, $edHbI._)((0, $2QP2i._)({}, this.user), {\n groups: newGroups\n });\n await (0, $lxEiN.default).Group.delete(groupId);\n });\n (0, $cr2GM._)(this, \"removeGroupMember\", async (userId)=>{\n const groupId = this.user.group.id;\n const idx = this.groupMembers.findIndex((m)=>m.id === userId);\n this.groupMembers.splice(idx, 1);\n await (0, $3U8SM.default).delete(`/group/${groupId}/relationships/users`, {\n data: [\n {\n id: userId\n }\n ]\n });\n });\n (0, $gOgWf.makeObservable)(this, {\n user: (0, $gOgWf.observable),\n groupMembers: (0, $gOgWf.observable),\n notifications: (0, $gOgWf.observable),\n status: (0, $gOgWf.observable),\n loggedIn: (0, $gOgWf.computed),\n isAdmin: (0, $gOgWf.computed),\n avatar: (0, $gOgWf.computed),\n isActivated: (0, $gOgWf.computed),\n isOnboardingCompleted: (0, $gOgWf.computed),\n login: (0, $gOgWf.action),\n hasAccess: (0, $gOgWf.action),\n logout: (0, $gOgWf.action),\n addNotification: (0, $gOgWf.action),\n fetchCredentials: (0, $gOgWf.action),\n switchGroup: (0, $gOgWf.action),\n fetchGroupMembers: (0, $gOgWf.action),\n deleteGroup: (0, $gOgWf.action),\n removeGroupMember: (0, $gOgWf.action)\n });\n this.fetchCredentials();\n }\n}\nconst $854f928e0b85dc7e$var$store = new $854f928e0b85dc7e$var$Store();\nvar $854f928e0b85dc7e$export$2e2bcd8739ae039 = $854f928e0b85dc7e$var$store;\n\n});\n\nparcelRegister(\"kH9gy\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $f10f02d5413fc340$export$2e2bcd8739ae039; });\n\nvar $cr2GM = parcelRequire(\"cr2GM\");\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $drY2b = parcelRequire(\"drY2b\");\n\nvar $ht0W2 = parcelRequire(\"ht0W2\");\n\nvar $4WgAH = parcelRequire(\"4WgAH\");\n\nvar $brBQs = parcelRequire(\"brBQs\");\n\nvar $3U8SM = parcelRequire(\"3U8SM\");\n\nvar $lxEiN = parcelRequire(\"lxEiN\");\n\nvar $fuiMG = parcelRequire(\"fuiMG\");\n\nvar $WXYRR = parcelRequire(\"WXYRR\");\nclass $f10f02d5413fc340$var$Store {\n get financialsCalculated() {\n return this.buildings.every((building)=>building.financials);\n }\n get filteredBuildings() {\n var _this_buildingFilter;\n const geometry = (_this_buildingFilter = this.buildingFilter) === null || _this_buildingFilter === void 0 ? void 0 : _this_buildingFilter.geometry;\n if (!geometry) return this.buildings;\n const tree = (0, (/*@__PURE__*/$parcel$interopDefault($drY2b)))();\n tree.insert({\n type: \"Feature\",\n geometry: geometry\n });\n if (geometry.type === \"Polygon\") return this.buildings.filter((building)=>{\n return tree.collides({\n type: \"Feature\",\n geometry: building.polygon\n });\n });\n if (geometry.type === \"Point\") return this.buildings.reduce((acc, building)=>{\n const distance = (0, $fuiMG.getDistanceFromLatLonInKm)(geometry.coordinates, building.centroid);\n if (distance < 0.5) acc.push((0, $edHbI._)((0, $2QP2i._)({}, building), {\n distance: distance\n }));\n return acc;\n }, []);\n return this.buildings;\n }\n get selectedVendors() {\n return this.vendors.filter((vendor)=>vendor.is_selected);\n }\n addBuilding(building) {\n this.buildings = [\n ...this.buildings,\n building\n ];\n }\n setInfoMessage(message) {\n this.infoMessage = message;\n (0, $lxEiN.default).Project.setProjectSettings(this.id, {\n info_message: message\n });\n }\n setProposalMessage(message) {\n this.proposalMessage = message;\n }\n setContactMessage(message) {\n this.contactMessage = message;\n }\n setExecutiveSummaryFileId(fileId) {\n this.executiveSummaryFileId = fileId;\n }\n setCustomerName(customerName) {\n this.customerName = customerName;\n }\n setProposalDeadline(deadline) {\n this.proposalDeadline = deadline;\n }\n setStatus(status, options = {}) {\n this.status = status;\n const resultMap = new Map((0, $4WgAH.default).resultMap);\n const project = resultMap.get(this.id);\n if (project) project.status = status;\n (0, $lxEiN.default).Project.setProjectSettings(this.id, (0, $2QP2i._)({\n status: status\n }, options));\n (0, $4WgAH.default).setResults(resultMap);\n }\n setVendor(vendor) {\n this.vendor = vendor;\n }\n setVariant(variant) {\n this.variant = variant;\n }\n setRFPQuestions(questions) {\n this.rfpQuestions = questions;\n }\n getRFPQuestion(questionId) {\n return this.rfpQuestions.find((q)=>q.question_id === questionId);\n }\n setProposals(proposals) {\n this.proposals = proposals;\n }\n setFinancials(financials) {\n this.financials = financials;\n }\n // eslint-disable-next-line class-methods-use-this\n get analyticsUrl() {\n return null;\n }\n get emissionsData() {\n console.log(\"this.financials\", this.financials);\n if (this.financials) return this.financials.emissions;\n return null;\n }\n get cashFlow() {\n var _this_financials;\n if ((_this_financials = this.financials) === null || _this_financials === void 0 ? void 0 : _this_financials.capex_cash_flow) return this.financials.capex_cash_flow;\n return null;\n }\n get formattedFinancials() {\n return this.financials.formatted_financials;\n }\n setLayerActive(layerId, isActive) {\n const layers = [\n ...this.activeLayers,\n layerId\n ];\n if (!isActive) this.setActiveLayers([\n ...this.activeLayers.filter((activeLayerId)=>activeLayerId !== layerId)\n ]);\n else this.setActiveLayers(layers);\n }\n setActiveLayers(activeLayers) {\n this.activeLayers = [\n ...new Set(activeLayers)\n ];\n }\n setBuildingFilter(filter) {\n this.buildingFilter = filter;\n }\n setAcceptedFiles(files) {\n this.acceptedFiles = files;\n }\n updateBuildingName(buildingId, buildingName) {\n const projectResult = (0, $4WgAH.default).resultMap.get(this.id);\n const newProjectResult = (0, $2QP2i._)({}, projectResult);\n const newResults = new Map((0, $4WgAH.default).resultMap);\n newProjectResult.buildings = newProjectResult.buildings.map((building)=>{\n return (0, $edHbI._)((0, $2QP2i._)({}, building), {\n name: building.id === buildingId ? buildingName : building.name\n });\n });\n newResults.set(this.id, newProjectResult);\n (0, $4WgAH.default).setResults(newResults);\n this.buildings = [\n ...this.buildings\n ].map((building)=>{\n if (building.id === buildingId) return (0, $edHbI._)((0, $2QP2i._)({}, building), {\n name: buildingName\n });\n return building;\n });\n }\n constructor(){\n (0, $cr2GM._)(this, \"id\", null);\n (0, $cr2GM._)(this, \"name\", \"\");\n (0, $cr2GM._)(this, \"description\", \"\");\n (0, $cr2GM._)(this, \"filters\", {});\n (0, $cr2GM._)(this, \"acceptedFiles\", []);\n (0, $cr2GM._)(this, \"lat\", \"\");\n (0, $cr2GM._)(this, \"lon\", \"\");\n (0, $cr2GM._)(this, \"address\", \"\");\n (0, $cr2GM._)(this, \"color\", \"\");\n (0, $cr2GM._)(this, \"files\", []);\n (0, $cr2GM._)(this, \"executiveSummaryFileId\", null);\n (0, $cr2GM._)(this, \"tasks\", []);\n (0, $cr2GM._)(this, \"financials\", null);\n (0, $cr2GM._)(this, \"resultMap\", new Map());\n (0, $cr2GM._)(this, \"survey\", []);\n (0, $cr2GM._)(this, \"groupId\", null);\n (0, $cr2GM._)(this, \"buildingFilter\", null);\n (0, $cr2GM._)(this, \"members\", []);\n (0, $cr2GM._)(this, \"buildings\", []);\n (0, $cr2GM._)(this, \"activeLayers\", []);\n (0, $cr2GM._)(this, \"layers\", []);\n (0, $cr2GM._)(this, \"isLoading\", false);\n (0, $cr2GM._)(this, \"projectBuildingRegistry\", new Map());\n (0, $cr2GM._)(this, \"bbox\", null);\n (0, $cr2GM._)(this, \"pickedResults\", new Set());\n (0, $cr2GM._)(this, \"vendors\", []);\n (0, $cr2GM._)(this, \"isVendor\", false);\n (0, $cr2GM._)(this, \"proposals\", []);\n (0, $cr2GM._)(this, \"termsAccepted\", true);\n (0, $cr2GM._)(this, \"infoMessage\", \"\");\n (0, $cr2GM._)(this, \"seen\", \"none\");\n (0, $cr2GM._)(this, \"terms\", null);\n (0, $cr2GM._)(this, \"status\", \"in_progress\");\n (0, $cr2GM._)(this, \"vendor\", null);\n (0, $cr2GM._)(this, \"variant\", \"large\");\n (0, $cr2GM._)(this, \"headerInfo\", null);\n (0, $cr2GM._)(this, \"headerVariant\", \"map\");\n (0, $cr2GM._)(this, \"infoMessageOpen\", false);\n (0, $cr2GM._)(this, \"buildingOsmIds\", new Set());\n (0, $cr2GM._)(this, \"created\", null);\n (0, $cr2GM._)(this, \"proposalMessage\", \"\");\n (0, $cr2GM._)(this, \"contactMessage\", \"\");\n (0, $cr2GM._)(this, \"customerName\", \"\");\n (0, $cr2GM._)(this, \"proposalDeadline\", \"\");\n (0, $cr2GM._)(this, \"rfpQuestions\", []);\n (0, $cr2GM._)(this, \"technologies\", [\n {\n id: \"solar\",\n label: \"Solar\"\n },\n {\n id: \"chp\",\n label: \"Combined Heat and Power\"\n },\n {\n id: \"fuelcell\",\n label: \"Fuel Cell\"\n },\n {\n id: \"storage\",\n label: \"Storage\"\n },\n {\n id: \"efficiency\",\n label: \"Energy Efficiency\"\n },\n {\n id: \"other\",\n label: \"Other\"\n }\n ]);\n (0, $cr2GM._)(this, \"recommendations\", {\n chp: 0,\n solar: 0,\n storage: 0,\n fuel_cell: 0\n });\n (0, $cr2GM._)(this, \"loadProject\", async (projectId)=>{\n this.isLoading = true;\n const project = await (0, $4WgAH.default).loadProject(projectId);\n if (project) {\n this.variant = \"large\";\n this.headerVariant = \"map\";\n this.id = project.id;\n this.financials = null;\n this.name = project.name;\n this.buildingFilter = null;\n this.financials = project.financials;\n this.description = project.description;\n this.color = project.color;\n this.files = project.files;\n this.tasks = project.tasks;\n this.address = project.address;\n this.lat = project.lat;\n this.lon = project.lon;\n this.survey = project.survey;\n this.members = project.members;\n this.layers = project.layers;\n this.created = project.created;\n this.filters = project.filters;\n this.proposalDeadline = project.proposal_deadline_at;\n this.executiveSummaryFileId = project.executive_summary_file_id;\n this.customerName = project.customer_name;\n this.proposalMessage = project.markdown_proposal_message;\n this.contactMessage = project.markdown_proposal_contact;\n this.bbox = project.bbox;\n this.vendors = project.vendors;\n this.groupId = project.group_id;\n this.isVendor = project.is_vendor;\n this.proposals = project.proposals;\n this.termsAccepted = project.terms_accepted;\n this.seen = project.seen;\n this.infoMessage = project.info_message;\n this.status = project.status;\n this.vendor = null;\n this.terms = project.terms;\n this.recommendations = project.recommendations;\n if (this.isVendor) this.setVendor((0, $brBQs.default).user.group);\n if (!this.termsAccepted) {\n this.isLoading = false;\n return null;\n }\n this.setBuildings(project.buildings);\n this.buildingOsmIds = new Set(project.buildings.map((building)=>building.original_id));\n const fetchBuildings = async ()=>{\n const response = await (0, $lxEiN.default).Project.getProjectBuildings(this.id);\n const { data: data, financials: financials } = response.data;\n if (financials) this.setFinancials(financials);\n if (data.every((building)=>building.financials)) this.setBuildings(data);\n if (!this.financialsCalculated) setTimeout(fetchBuildings, 5000);\n };\n if (!this.financialsCalculated) fetchBuildings();\n this.isLoading = false;\n return project;\n }\n this.isLoading = false;\n return null;\n });\n (0, $cr2GM._)(this, \"loadBuildings\", async ()=>{\n const response = await (0, $lxEiN.default).Project.getProjectBuildings(this.id);\n const { data: data, financials: financials } = response.data;\n this.setBuildings(data);\n if (financials) this.setFinancials(financials);\n if (data.every((building)=>building.financials)) return data;\n return false;\n });\n (0, $cr2GM._)(this, \"setName\", (name)=>{\n this.name = name;\n (0, $lxEiN.default).Project.updateProject(this.id, {\n name: name\n });\n const resultMap = new Map((0, $4WgAH.default).resultMap);\n const result = resultMap.get(this.id);\n if (result) {\n resultMap.set(this.id, (0, $edHbI._)((0, $2QP2i._)({}, result), {\n name: name\n }));\n (0, $4WgAH.default).setResults(resultMap);\n }\n });\n (0, $cr2GM._)(this, \"setHeaderVariant\", (variant)=>{\n this.headerVariant = variant;\n });\n (0, $cr2GM._)(this, \"setHeaderInfo\", (data)=>{\n this.headerInfo = data;\n });\n (0, $cr2GM._)(this, \"getProjectFilters\", ()=>{\n const { filters: filters } = this;\n const newPopularRangeFilters = JSON.parse(JSON.stringify((0, $2QP2i._)({}, (0, $WXYRR.POPULAR_RANGE_FILTERS))));\n const newRangeFilters = JSON.parse(JSON.stringify((0, $2QP2i._)({}, (0, $WXYRR.RANGE_FILTERS))));\n Object.entries(filters).forEach(([key, value])=>{\n Object.entries(newRangeFilters).forEach(([title, filters])=>{\n const idx = filters.findIndex((f)=>f.name === key);\n if (idx !== -1) {\n if (value.min === null || value.max === null) newRangeFilters[title][idx].isVisible = false;\n else newRangeFilters[title][idx] = (0, $edHbI._)((0, $2QP2i._)({}, newRangeFilters[title][idx]), {\n start: value.min,\n end: value.max\n });\n }\n });\n });\n // remove empty categories\n Object.entries(newRangeFilters).forEach(([key, value])=>{\n if (value.every((f)=>f.isVisible === false)) delete newRangeFilters[key];\n });\n Object.entries(filters).forEach(([key, value])=>{\n const idx = newPopularRangeFilters.popular.findIndex((f)=>f.name === key);\n if (idx !== -1) newPopularRangeFilters.popular[idx] = (0, $edHbI._)((0, $2QP2i._)({}, newPopularRangeFilters.popular[idx]), {\n start: value.min,\n end: value.max\n });\n });\n return {\n popular: newPopularRangeFilters,\n rangeFilters: newRangeFilters\n };\n });\n (0, $cr2GM._)(this, \"setFilters\", (projectFilters)=>{\n this.filters = projectFilters;\n });\n (0, $cr2GM._)(this, \"setBuildings\", (buildings)=>{\n this.buildings = buildings.map((building)=>{\n return (0, $edHbI._)((0, $2QP2i._)({}, building), {\n // financials: null,\n formatted_financials: building.financials ? (0, $ht0W2.formatBuildingFinancials)(building.financials) : null\n });\n });\n });\n (0, $cr2GM._)(this, \"loadResult\", async (ids)=>{\n if (!ids.length) return;\n // Set state to loading\n ids.forEach((id)=>{\n this.resultMap.set(id, 1);\n });\n const response = await (0, $lxEiN.default).Project.getProjectBuildings(this.id);\n response.data.data.forEach((building)=>{\n this.resultMap.set(building.id, (0, $edHbI._)((0, $2QP2i._)({}, building), {\n formatted_financials: building.financials ? (0, $ht0W2.formatBuildingFinancials)(building.financials) : null\n }));\n });\n return response.data.data;\n });\n (0, $cr2GM._)(this, \"setDescription\", (description)=>{\n this.description = description;\n });\n (0, $cr2GM._)(this, \"addFile\", (file)=>{\n const newFiles = [\n ...this.files,\n file\n ];\n this.files = newFiles;\n });\n (0, $cr2GM._)(this, \"setFileId\", (fileTempId, fileId)=>{\n const index = this.files.findIndex((file)=>file.id === fileTempId);\n if (index > -1) this.files[index].id = fileId;\n });\n (0, $cr2GM._)(this, \"setTerms\", (terms)=>{\n this.terms = terms;\n });\n (0, $cr2GM._)(this, \"deleteFiles\", async (fileIds)=>{\n this.files = [\n ...this.files\n ].filter((file)=>!fileIds.includes(file.id));\n await (0, $lxEiN.default).Workspace.delete(fileIds);\n });\n (0, $cr2GM._)(this, \"removeBuilding\", async (buildingId)=>{\n this.buildings = [\n ...this.buildings\n ].filter((building)=>building.id !== buildingId);\n });\n (0, $cr2GM._)(this, \"addFiles\", async (fileIds, buildingId)=>{\n await (0, $lxEiN.default).Project.addFiles(this.id, fileIds, buildingId);\n });\n (0, $cr2GM._)(this, \"addProposals\", async (fileIds)=>{\n await (0, $lxEiN.default).Project.addProposals(this.id, fileIds);\n });\n (0, $cr2GM._)(this, \"setMembers\", async (members)=>{\n this.members = members;\n await (0, $lxEiN.default).Project.addMembers(this.id, {\n data: members.map(({ id: id })=>id)\n });\n });\n (0, $cr2GM._)(this, \"setVendors\", async (vendors)=>{\n this.vendors = vendors;\n });\n (0, $cr2GM._)(this, \"getVendors\", async ()=>{\n const response = await (0, $lxEiN.default).Project.getProjectVendors(this.id);\n this.setVendors(response.data.data);\n });\n (0, $cr2GM._)(this, \"removeVendor\", async (groupId)=>{\n await (0, $lxEiN.default).Project.removeVendor(this.id, groupId);\n const newVendors = this.vendors.filter((vendor)=>vendor.id !== groupId);\n this.setVendors(newVendors);\n });\n (0, $cr2GM._)(this, \"addVendor\", async (groupIdLike)=>{\n const { data: data } = await (0, $lxEiN.default).Project.addVendor(this.id, groupIdLike);\n const newVendors = [\n ...this.vendors,\n data\n ];\n this.setVendors(newVendors);\n });\n (0, $cr2GM._)(this, \"inviteVendorByEmail\", async (email)=>{\n await (0, $lxEiN.default).Project.inviteVendor(this.id, email);\n });\n (0, $cr2GM._)(this, \"submit\", ()=>{\n const data = {\n title: this.title,\n description: this.description,\n users: this.users,\n files: this.files,\n project_id: this.project_id\n };\n if (this.id) data.id = this.id;\n });\n (0, $cr2GM._)(this, \"acceptTerms\", async (projectId, terms)=>{\n var _response_data_err;\n const data = JSON.parse(JSON.stringify(terms || this.terms));\n const response = await (0, $3U8SM.default).post(`/project/${projectId || this.id}/accept`, data);\n if (((_response_data_err = response.data.err) === null || _response_data_err === void 0 ? void 0 : _response_data_err.code) === \"terms_updated\") {\n this.setTerms(response.data.data);\n return false;\n }\n this.termsAccepted = true;\n return true;\n });\n (0, $cr2GM._)(this, \"setTermsAccepted\", (termsAccepted)=>{\n this.termsAccepted = termsAccepted;\n });\n (0, $cr2GM._)(this, \"acceptInfoMessage\", async ()=>{\n (0, $lxEiN.default).Project.acceptInfoMessage(this.id);\n });\n (0, $cr2GM._)(this, \"setRFPQuestionActive\", (questionId, isActive)=>{\n this.rfpQuestions = this.rfpQuestions.map((q)=>{\n if (q.question_id === questionId) return (0, $edHbI._)((0, $2QP2i._)({}, q), {\n is_active: isActive\n });\n return q;\n });\n (0, $lxEiN.default).Project.updateProjectRFPQuestion(this.id, questionId, {\n is_active: isActive\n });\n });\n (0, $cr2GM._)(this, \"loadRFPQuestions\", async ()=>{\n const { data: data } = await (0, $lxEiN.default).Project.getProjectRFPQuestions(this.id);\n this.setRFPQuestions(data.data);\n });\n (0, $cr2GM._)(this, \"deleteRFPQuestion\", async (questionId)=>{\n await (0, $lxEiN.default).Project.deleteProjectRFPQuestion(this.id, questionId);\n });\n (0, $cr2GM._)(this, \"getFinancials\", async (projectId)=>{\n const { data: data } = await (0, $lxEiN.default).Project.getProjectFinancials(projectId || this.id, this.id);\n this.financials = data.data;\n });\n (0, $cr2GM._)(this, \"getLayers\", async ()=>{\n const response = await (0, $lxEiN.default).Project.getProjectLayers(this.id);\n this.layers = response.data.data;\n });\n (0, $cr2GM._)(this, \"loadProposals\", async ()=>{\n const response = await (0, $lxEiN.default).Project.getProposals(this.id);\n this.setProposals(response.data.data);\n });\n (0, $cr2GM._)(this, \"deleteProposal\", async (proposalId)=>{\n await (0, $lxEiN.default).Project.deleteProposal(this.id, proposalId);\n });\n (0, $cr2GM._)(this, \"waitProjectReady\", async (onProgress = ()=>{\n return 0;\n }, timeout = 600000)=>{\n return new Promise((resolve)=>{\n const interval = setInterval(async ()=>{\n const status = await this.getStatus();\n const totalProgress = status.progress + 10 <= 100 ? status.progress + 10 : status.progress;\n onProgress(totalProgress);\n if (status.progress === 100) {\n const buildings = await this.loadBuildings();\n if (buildings) {\n clearInterval(interval);\n resolve();\n }\n }\n }, 5000);\n setTimeout(()=>{\n clearInterval(interval);\n resolve();\n }, timeout);\n });\n });\n (0, $cr2GM._)(this, \"getStatus\", async ()=>{\n const response = await (0, $lxEiN.default).Project.getStatus(this.id);\n return response.data;\n });\n (0, $cr2GM._)(this, \"getProjectBuildingByOsmId\", (osmIdLike)=>{\n if (!osmIdLike) return null;\n return this.buildings.find((building)=>{\n const osmId = osmIdLike.replace(\"osm-\", \"\").toUpperCase();\n console.log(\"INCLUDES\", building.original_id, osmId);\n return building.original_id.includes(osmId);\n });\n });\n (0, $cr2GM._)(this, \"hasBuildingWithOsmId\", (osmIdLike)=>{\n if (!osmIdLike) return false;\n const osmId = osmIdLike.replace(\"osm-\", \"\").toUpperCase();\n return this.buildingOsmIds.has(osmId);\n });\n (0, $cr2GM._)(this, \"setInfoMessageOpen\", (open)=>{\n this.infoMessageOpen = open;\n });\n (0, $gOgWf.makeObservable)(this, {\n id: (0, $gOgWf.observable),\n name: (0, $gOgWf.observable),\n description: (0, $gOgWf.observable),\n resultMap: (0, $gOgWf.observable),\n financials: (0, $gOgWf.observable),\n lat: (0, $gOgWf.observable),\n lon: (0, $gOgWf.observable),\n address: (0, $gOgWf.observable),\n rfpQuestions: (0, $gOgWf.observable),\n color: (0, $gOgWf.observable),\n files: (0, $gOgWf.observable),\n layers: (0, $gOgWf.observable),\n tasks: (0, $gOgWf.observable),\n survey: (0, $gOgWf.observable),\n groupId: (0, $gOgWf.observable),\n members: (0, $gOgWf.observable),\n buildings: (0, $gOgWf.observable),\n isLoading: (0, $gOgWf.observable),\n acceptedFiles: (0, $gOgWf.observable),\n infoMessageOpen: (0, $gOgWf.observable),\n proposalMessage: (0, $gOgWf.observable),\n executiveSummaryFileId: (0, $gOgWf.observable),\n contactMessage: (0, $gOgWf.observable),\n customerName: (0, $gOgWf.observable),\n proposalDeadline: (0, $gOgWf.observable),\n projectBuildingRegistry: (0, $gOgWf.observable),\n bbox: (0, $gOgWf.observable),\n vendors: (0, $gOgWf.observable),\n isVendor: (0, $gOgWf.observable),\n proposals: (0, $gOgWf.observable),\n termsAccepted: (0, $gOgWf.observable),\n buildingFilter: (0, $gOgWf.observable),\n filters: (0, $gOgWf.observable),\n terms: (0, $gOgWf.observable),\n infoMessage: (0, $gOgWf.observable),\n seen: (0, $gOgWf.observable),\n status: (0, $gOgWf.observable),\n vendor: (0, $gOgWf.observable),\n variant: (0, $gOgWf.observable),\n headerInfo: (0, $gOgWf.observable),\n headerVariant: (0, $gOgWf.observable),\n recommendations: (0, $gOgWf.observable),\n activeLayers: (0, $gOgWf.observable),\n loadProject: (0, $gOgWf.action),\n setTermsAccepted: (0, $gOgWf.action),\n setInfoMessageOpen: (0, $gOgWf.action),\n setName: (0, $gOgWf.action),\n setHeaderVariant: (0, $gOgWf.action),\n setHeaderInfo: (0, $gOgWf.action),\n setBuildings: (0, $gOgWf.action),\n setDescription: (0, $gOgWf.action),\n addFile: (0, $gOgWf.action),\n financialsCalculated: (0, $gOgWf.computed),\n filteredBuildings: (0, $gOgWf.computed),\n setFileId: (0, $gOgWf.action),\n deleteFiles: (0, $gOgWf.action),\n setFilters: (0, $gOgWf.action),\n removeBuilding: (0, $gOgWf.action),\n addFiles: (0, $gOgWf.action),\n addProposals: (0, $gOgWf.action),\n setMembers: (0, $gOgWf.action),\n setVendors: (0, $gOgWf.action),\n selectedVendors: (0, $gOgWf.computed),\n addBuilding: (0, $gOgWf.action),\n submit: (0, $gOgWf.action),\n acceptTerms: (0, $gOgWf.action),\n acceptInfoMessage: (0, $gOgWf.action),\n setInfoMessage: (0, $gOgWf.action),\n setTerms: (0, $gOgWf.action),\n setStatus: (0, $gOgWf.action),\n setVendor: (0, $gOgWf.action),\n setVariant: (0, $gOgWf.action),\n updateBuildingName: (0, $gOgWf.action)\n });\n }\n}\nconst $f10f02d5413fc340$var$store = new $f10f02d5413fc340$var$Store();\nvar $f10f02d5413fc340$export$2e2bcd8739ae039 = $f10f02d5413fc340$var$store;\n\n});\nparcelRegister(\"drY2b\", function(module, exports) {\n\nvar $horFy = parcelRequire(\"horFy\");\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $7aiSl = parcelRequire(\"7aiSl\");\n\nvar $lX3Ya = parcelRequire(\"lX3Ya\");\nvar $9cac5d8732cbc60d$require$turfBBox = $lX3Ya.default;\nvar $9cac5d8732cbc60d$var$featureEach = $7aiSl.featureEach;\nvar $9cac5d8732cbc60d$var$coordEach = $7aiSl.coordEach;\nvar $9cac5d8732cbc60d$var$polygon = $7GKQS.polygon;\nvar $9cac5d8732cbc60d$var$featureCollection = $7GKQS.featureCollection;\n/**\n * GeoJSON implementation of [RBush](https://github.com/mourner/rbush#rbush) spatial index.\n *\n * @name rbush\n * @param {number} [maxEntries=9] defines the maximum number of entries in a tree node. 9 (used by default) is a\n * reasonable choice for most applications. Higher value means faster insertion and slower search, and vice versa.\n * @returns {RBush} GeoJSON RBush\n * @example\n * var geojsonRbush = require('geojson-rbush').default;\n * var tree = geojsonRbush();\n */ function $9cac5d8732cbc60d$var$geojsonRbush(maxEntries) {\n var tree = new $horFy(maxEntries);\n /**\n * [insert](https://github.com/mourner/rbush#data-format)\n *\n * @param {Feature} feature insert single GeoJSON Feature\n * @returns {RBush} GeoJSON RBush\n * @example\n * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n * tree.insert(poly)\n */ tree.insert = function(feature) {\n if (feature.type !== \"Feature\") throw new Error(\"invalid feature\");\n feature.bbox = feature.bbox ? feature.bbox : $9cac5d8732cbc60d$require$turfBBox(feature);\n return $horFy.prototype.insert.call(this, feature);\n };\n /**\n * [load](https://github.com/mourner/rbush#bulk-inserting-data)\n *\n * @param {FeatureCollection|Array} features load entire GeoJSON FeatureCollection\n * @returns {RBush} GeoJSON RBush\n * @example\n * var polys = turf.polygons([\n * [[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]],\n * [[[-93, 32], [-83, 32], [-83, 39], [-93, 39], [-93, 32]]]\n * ]);\n * tree.load(polys);\n */ tree.load = function(features) {\n var load = [];\n // Load an Array of Features\n if (Array.isArray(features)) features.forEach(function(feature) {\n if (feature.type !== \"Feature\") throw new Error(\"invalid features\");\n feature.bbox = feature.bbox ? feature.bbox : $9cac5d8732cbc60d$require$turfBBox(feature);\n load.push(feature);\n });\n else // Load a FeatureCollection\n $9cac5d8732cbc60d$var$featureEach(features, function(feature) {\n if (feature.type !== \"Feature\") throw new Error(\"invalid features\");\n feature.bbox = feature.bbox ? feature.bbox : $9cac5d8732cbc60d$require$turfBBox(feature);\n load.push(feature);\n });\n return $horFy.prototype.load.call(this, load);\n };\n /**\n * [remove](https://github.com/mourner/rbush#removing-data)\n *\n * @param {Feature} feature remove single GeoJSON Feature\n * @param {Function} equals Pass a custom equals function to compare by value for removal.\n * @returns {RBush} GeoJSON RBush\n * @example\n * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n *\n * tree.remove(poly);\n */ tree.remove = function(feature, equals) {\n if (feature.type !== \"Feature\") throw new Error(\"invalid feature\");\n feature.bbox = feature.bbox ? feature.bbox : $9cac5d8732cbc60d$require$turfBBox(feature);\n return $horFy.prototype.remove.call(this, feature, equals);\n };\n /**\n * [clear](https://github.com/mourner/rbush#removing-data)\n *\n * @returns {RBush} GeoJSON Rbush\n * @example\n * tree.clear()\n */ tree.clear = function() {\n return $horFy.prototype.clear.call(this);\n };\n /**\n * [search](https://github.com/mourner/rbush#search)\n *\n * @param {BBox|FeatureCollection|Feature} geojson search with GeoJSON\n * @returns {FeatureCollection} all features that intersects with the given GeoJSON.\n * @example\n * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n *\n * tree.search(poly);\n */ tree.search = function(geojson) {\n var features = $horFy.prototype.search.call(this, this.toBBox(geojson));\n return $9cac5d8732cbc60d$var$featureCollection(features);\n };\n /**\n * [collides](https://github.com/mourner/rbush#collisions)\n *\n * @param {BBox|FeatureCollection|Feature} geojson collides with GeoJSON\n * @returns {boolean} true if there are any items intersecting the given GeoJSON, otherwise false.\n * @example\n * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n *\n * tree.collides(poly);\n */ tree.collides = function(geojson) {\n return $horFy.prototype.collides.call(this, this.toBBox(geojson));\n };\n /**\n * [all](https://github.com/mourner/rbush#search)\n *\n * @returns {FeatureCollection} all the features in RBush\n * @example\n * tree.all()\n */ tree.all = function() {\n var features = $horFy.prototype.all.call(this);\n return $9cac5d8732cbc60d$var$featureCollection(features);\n };\n /**\n * [toJSON](https://github.com/mourner/rbush#export-and-import)\n *\n * @returns {any} export data as JSON object\n * @example\n * var exported = tree.toJSON()\n */ tree.toJSON = function() {\n return $horFy.prototype.toJSON.call(this);\n };\n /**\n * [fromJSON](https://github.com/mourner/rbush#export-and-import)\n *\n * @param {any} json import previously exported data\n * @returns {RBush} GeoJSON RBush\n * @example\n * var exported = {\n * \"children\": [\n * {\n * \"type\": \"Feature\",\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * },\n * \"properties\": {},\n * \"bbox\": [110, 50, 110, 50]\n * }\n * ],\n * \"height\": 1,\n * \"leaf\": true,\n * \"minX\": 110,\n * \"minY\": 50,\n * \"maxX\": 110,\n * \"maxY\": 50\n * }\n * tree.fromJSON(exported)\n */ tree.fromJSON = function(json) {\n return $horFy.prototype.fromJSON.call(this, json);\n };\n /**\n * Converts GeoJSON to {minX, minY, maxX, maxY} schema\n *\n * @private\n * @param {BBox|FeatureCollection|Feature} geojson feature(s) to retrieve BBox from\n * @returns {Object} converted to {minX, minY, maxX, maxY}\n */ tree.toBBox = function(geojson) {\n var bbox;\n if (geojson.bbox) bbox = geojson.bbox;\n else if (Array.isArray(geojson) && geojson.length === 4) bbox = geojson;\n else if (Array.isArray(geojson) && geojson.length === 6) bbox = [\n geojson[0],\n geojson[1],\n geojson[3],\n geojson[4]\n ];\n else if (geojson.type === \"Feature\") bbox = $9cac5d8732cbc60d$require$turfBBox(geojson);\n else if (geojson.type === \"FeatureCollection\") bbox = $9cac5d8732cbc60d$require$turfBBox(geojson);\n else throw new Error(\"invalid geojson\");\n return {\n minX: bbox[0],\n minY: bbox[1],\n maxX: bbox[2],\n maxY: bbox[3]\n };\n };\n return tree;\n}\nmodule.exports = $9cac5d8732cbc60d$var$geojsonRbush;\nmodule.exports.default = $9cac5d8732cbc60d$var$geojsonRbush;\n\n});\nparcelRegister(\"horFy\", function(module, exports) {\n!function(t, i) {\n module.exports = i();\n}(module.exports, function() {\n \"use strict\";\n function t(t, r, e, a, h) {\n !function t(n, r, e, a, h) {\n for(; a > e;){\n if (a - e > 600) {\n var o = a - e + 1, s = r - e + 1, l = Math.log(o), f = .5 * Math.exp(2 * l / 3), u = .5 * Math.sqrt(l * f * (o - f) / o) * (s - o / 2 < 0 ? -1 : 1), m = Math.max(e, Math.floor(r - s * f / o + u)), c = Math.min(a, Math.floor(r + (o - s) * f / o + u));\n t(n, r, m, c, h);\n }\n var p = n[r], d = e, x = a;\n for(i(n, e, r), h(n[a], p) > 0 && i(n, e, a); d < x;){\n for(i(n, d, x), d++, x--; h(n[d], p) < 0;)d++;\n for(; h(n[x], p) > 0;)x--;\n }\n 0 === h(n[e], p) ? i(n, e, x) : i(n, ++x, a), x <= r && (e = x + 1), r <= x && (a = x - 1);\n }\n }(t, r, e || 0, a || t.length - 1, h || n);\n }\n function i(t, i, n) {\n var r = t[i];\n t[i] = t[n], t[n] = r;\n }\n function n(t, i) {\n return t < i ? -1 : t > i ? 1 : 0;\n }\n var r = function(t) {\n void 0 === t && (t = 9), this._maxEntries = Math.max(4, t), this._minEntries = Math.max(2, Math.ceil(.4 * this._maxEntries)), this.clear();\n };\n function e(t, i, n) {\n if (!n) return i.indexOf(t);\n for(var r = 0; r < i.length; r++)if (n(t, i[r])) return r;\n return -1;\n }\n function a(t, i) {\n h(t, 0, t.children.length, i, t);\n }\n function h(t, i, n, r, e) {\n e || (e = p(null)), e.minX = 1 / 0, e.minY = 1 / 0, e.maxX = -1 / 0, e.maxY = -1 / 0;\n for(var a = i; a < n; a++){\n var h = t.children[a];\n o(e, t.leaf ? r(h) : h);\n }\n return e;\n }\n function o(t, i) {\n return t.minX = Math.min(t.minX, i.minX), t.minY = Math.min(t.minY, i.minY), t.maxX = Math.max(t.maxX, i.maxX), t.maxY = Math.max(t.maxY, i.maxY), t;\n }\n function s(t, i) {\n return t.minX - i.minX;\n }\n function l(t, i) {\n return t.minY - i.minY;\n }\n function f(t) {\n return (t.maxX - t.minX) * (t.maxY - t.minY);\n }\n function u(t) {\n return t.maxX - t.minX + (t.maxY - t.minY);\n }\n function m(t, i) {\n return t.minX <= i.minX && t.minY <= i.minY && i.maxX <= t.maxX && i.maxY <= t.maxY;\n }\n function c(t, i) {\n return i.minX <= t.maxX && i.minY <= t.maxY && i.maxX >= t.minX && i.maxY >= t.minY;\n }\n function p(t) {\n return {\n children: t,\n height: 1,\n leaf: !0,\n minX: 1 / 0,\n minY: 1 / 0,\n maxX: -1 / 0,\n maxY: -1 / 0\n };\n }\n function d(i, n, r, e, a) {\n for(var h = [\n n,\n r\n ]; h.length;)if (!((r = h.pop()) - (n = h.pop()) <= e)) {\n var o = n + Math.ceil((r - n) / e / 2) * e;\n t(i, o, n, r, a), h.push(n, o, o, r);\n }\n }\n return r.prototype.all = function() {\n return this._all(this.data, []);\n }, r.prototype.search = function(t) {\n var i = this.data, n = [];\n if (!c(t, i)) return n;\n for(var r = this.toBBox, e = []; i;){\n for(var a = 0; a < i.children.length; a++){\n var h = i.children[a], o = i.leaf ? r(h) : h;\n c(t, o) && (i.leaf ? n.push(h) : m(t, o) ? this._all(h, n) : e.push(h));\n }\n i = e.pop();\n }\n return n;\n }, r.prototype.collides = function(t) {\n var i = this.data;\n if (!c(t, i)) return !1;\n for(var n = []; i;){\n for(var r = 0; r < i.children.length; r++){\n var e = i.children[r], a = i.leaf ? this.toBBox(e) : e;\n if (c(t, a)) {\n if (i.leaf || m(t, a)) return !0;\n n.push(e);\n }\n }\n i = n.pop();\n }\n return !1;\n }, r.prototype.load = function(t) {\n if (!t || !t.length) return this;\n if (t.length < this._minEntries) {\n for(var i = 0; i < t.length; i++)this.insert(t[i]);\n return this;\n }\n var n = this._build(t.slice(), 0, t.length - 1, 0);\n if (this.data.children.length) {\n if (this.data.height === n.height) this._splitRoot(this.data, n);\n else {\n if (this.data.height < n.height) {\n var r = this.data;\n this.data = n, n = r;\n }\n this._insert(n, this.data.height - n.height - 1, !0);\n }\n } else this.data = n;\n return this;\n }, r.prototype.insert = function(t) {\n return t && this._insert(t, this.data.height - 1), this;\n }, r.prototype.clear = function() {\n return this.data = p([]), this;\n }, r.prototype.remove = function(t, i) {\n if (!t) return this;\n for(var n, r, a, h = this.data, o = this.toBBox(t), s = [], l = []; h || s.length;){\n if (h || (h = s.pop(), r = s[s.length - 1], n = l.pop(), a = !0), h.leaf) {\n var f = e(t, h.children, i);\n if (-1 !== f) return h.children.splice(f, 1), s.push(h), this._condense(s), this;\n }\n a || h.leaf || !m(h, o) ? r ? (n++, h = r.children[n], a = !1) : h = null : (s.push(h), l.push(n), n = 0, r = h, h = h.children[0]);\n }\n return this;\n }, r.prototype.toBBox = function(t) {\n return t;\n }, r.prototype.compareMinX = function(t, i) {\n return t.minX - i.minX;\n }, r.prototype.compareMinY = function(t, i) {\n return t.minY - i.minY;\n }, r.prototype.toJSON = function() {\n return this.data;\n }, r.prototype.fromJSON = function(t) {\n return this.data = t, this;\n }, r.prototype._all = function(t, i) {\n for(var n = []; t;)t.leaf ? i.push.apply(i, t.children) : n.push.apply(n, t.children), t = n.pop();\n return i;\n }, r.prototype._build = function(t, i, n, r) {\n var e, h = n - i + 1, o = this._maxEntries;\n if (h <= o) return a(e = p(t.slice(i, n + 1)), this.toBBox), e;\n r || (r = Math.ceil(Math.log(h) / Math.log(o)), o = Math.ceil(h / Math.pow(o, r - 1))), (e = p([])).leaf = !1, e.height = r;\n var s = Math.ceil(h / o), l = s * Math.ceil(Math.sqrt(o));\n d(t, i, n, l, this.compareMinX);\n for(var f = i; f <= n; f += l){\n var u = Math.min(f + l - 1, n);\n d(t, f, u, s, this.compareMinY);\n for(var m = f; m <= u; m += s){\n var c = Math.min(m + s - 1, u);\n e.children.push(this._build(t, m, c, r - 1));\n }\n }\n return a(e, this.toBBox), e;\n }, r.prototype._chooseSubtree = function(t, i, n, r) {\n for(; r.push(i), !i.leaf && r.length - 1 !== n;){\n for(var e = 1 / 0, a = 1 / 0, h = void 0, o = 0; o < i.children.length; o++){\n var s = i.children[o], l = f(s), u = (m = t, c = s, (Math.max(c.maxX, m.maxX) - Math.min(c.minX, m.minX)) * (Math.max(c.maxY, m.maxY) - Math.min(c.minY, m.minY)) - l);\n u < a ? (a = u, e = l < e ? l : e, h = s) : u === a && l < e && (e = l, h = s);\n }\n i = h || i.children[0];\n }\n var m, c;\n return i;\n }, r.prototype._insert = function(t, i, n) {\n var r = n ? t : this.toBBox(t), e = [], a = this._chooseSubtree(r, this.data, i, e);\n for(a.children.push(t), o(a, r); i >= 0 && e[i].children.length > this._maxEntries;)this._split(e, i), i--;\n this._adjustParentBBoxes(r, e, i);\n }, r.prototype._split = function(t, i) {\n var n = t[i], r = n.children.length, e = this._minEntries;\n this._chooseSplitAxis(n, e, r);\n var h = this._chooseSplitIndex(n, e, r), o = p(n.children.splice(h, n.children.length - h));\n o.height = n.height, o.leaf = n.leaf, a(n, this.toBBox), a(o, this.toBBox), i ? t[i - 1].children.push(o) : this._splitRoot(n, o);\n }, r.prototype._splitRoot = function(t, i) {\n this.data = p([\n t,\n i\n ]), this.data.height = t.height + 1, this.data.leaf = !1, a(this.data, this.toBBox);\n }, r.prototype._chooseSplitIndex = function(t, i, n) {\n for(var r, e, a, o, s, l, u, m = 1 / 0, c = 1 / 0, p = i; p <= n - i; p++){\n var d = h(t, 0, p, this.toBBox), x = h(t, p, n, this.toBBox), v = (e = d, a = x, o = void 0, s = void 0, l = void 0, u = void 0, o = Math.max(e.minX, a.minX), s = Math.max(e.minY, a.minY), l = Math.min(e.maxX, a.maxX), u = Math.min(e.maxY, a.maxY), Math.max(0, l - o) * Math.max(0, u - s)), M = f(d) + f(x);\n v < m ? (m = v, r = p, c = M < c ? M : c) : v === m && M < c && (c = M, r = p);\n }\n return r || n - i;\n }, r.prototype._chooseSplitAxis = function(t, i, n) {\n var r = t.leaf ? this.compareMinX : s, e = t.leaf ? this.compareMinY : l;\n this._allDistMargin(t, i, n, r) < this._allDistMargin(t, i, n, e) && t.children.sort(r);\n }, r.prototype._allDistMargin = function(t, i, n, r) {\n t.children.sort(r);\n for(var e = this.toBBox, a = h(t, 0, i, e), s = h(t, n - i, n, e), l = u(a) + u(s), f = i; f < n - i; f++){\n var m = t.children[f];\n o(a, t.leaf ? e(m) : m), l += u(a);\n }\n for(var c = n - i - 1; c >= i; c--){\n var p = t.children[c];\n o(s, t.leaf ? e(p) : p), l += u(s);\n }\n return l;\n }, r.prototype._adjustParentBBoxes = function(t, i, n) {\n for(var r = n; r >= 0; r--)o(i[r], t);\n }, r.prototype._condense = function(t) {\n for(var i = t.length - 1, n = void 0; i >= 0; i--)0 === t[i].children.length ? i > 0 ? (n = t[i - 1].children).splice(n.indexOf(t[i]), 1) : this.clear() : a(t[i], this.toBBox);\n }, r;\n});\n\n});\n\nparcelRegister(\"7GKQS\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n/**\n * @module helpers\n */ /**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */ module.exports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */ module.exports.factors = {\n centimeters: module.exports.earthRadius * 100,\n centimetres: module.exports.earthRadius * 100,\n degrees: module.exports.earthRadius / 111325,\n feet: module.exports.earthRadius * 3.28084,\n inches: module.exports.earthRadius * 39.370,\n kilometers: module.exports.earthRadius / 1000,\n kilometres: module.exports.earthRadius / 1000,\n meters: module.exports.earthRadius,\n metres: module.exports.earthRadius,\n miles: module.exports.earthRadius / 1609.344,\n millimeters: module.exports.earthRadius * 1000,\n millimetres: module.exports.earthRadius * 1000,\n nauticalmiles: module.exports.earthRadius / 1852,\n radians: 1,\n yards: module.exports.earthRadius / 1.0936\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */ module.exports.unitsFactors = {\n centimeters: 100,\n centimetres: 100,\n degrees: 1 / 111325,\n feet: 3.28084,\n inches: 39.370,\n kilometers: 0.001,\n kilometres: 0.001,\n meters: 1,\n metres: 1,\n miles: 1 / 1609.344,\n millimeters: 1000,\n millimetres: 1000,\n nauticalmiles: 1 / 1852,\n radians: 1 / module.exports.earthRadius,\n yards: 1 / 1.0936\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */ module.exports.areaFactors = {\n acres: 0.000247105,\n centimeters: 10000,\n centimetres: 10000,\n feet: 10.763910417,\n inches: 1550.003100006,\n kilometers: 0.000001,\n kilometres: 0.000001,\n meters: 1,\n metres: 1,\n miles: 3.86e-7,\n millimeters: 1000000,\n millimetres: 1000000,\n yards: 1.195990046\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */ function $5990cc70d091eed0$var$feature(geom, properties, options) {\n if (options === void 0) options = {};\n var feat = {\n type: \"Feature\"\n };\n if (options.id === 0 || options.id) feat.id = options.id;\n if (options.bbox) feat.bbox = options.bbox;\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nmodule.exports.feature = $5990cc70d091eed0$var$feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */ function $5990cc70d091eed0$var$geometry(type, coordinates, options) {\n if (options === void 0) options = {};\n switch(type){\n case \"Point\":\n return $5990cc70d091eed0$var$point(coordinates).geometry;\n case \"LineString\":\n return $5990cc70d091eed0$var$lineString(coordinates).geometry;\n case \"Polygon\":\n return $5990cc70d091eed0$var$polygon(coordinates).geometry;\n case \"MultiPoint\":\n return $5990cc70d091eed0$var$multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return $5990cc70d091eed0$var$multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return $5990cc70d091eed0$var$multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\nmodule.exports.geometry = $5990cc70d091eed0$var$geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */ function $5990cc70d091eed0$var$point(coordinates, properties, options) {\n if (options === void 0) options = {};\n var geom = {\n type: \"Point\",\n coordinates: coordinates\n };\n return $5990cc70d091eed0$var$feature(geom, properties, options);\n}\nmodule.exports.point = $5990cc70d091eed0$var$point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */ function $5990cc70d091eed0$var$points(coordinates, properties, options) {\n if (options === void 0) options = {};\n return $5990cc70d091eed0$var$featureCollection(coordinates.map(function(coords) {\n return $5990cc70d091eed0$var$point(coords, properties);\n }), options);\n}\nmodule.exports.points = $5990cc70d091eed0$var$points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */ function $5990cc70d091eed0$var$polygon(coordinates, properties, options) {\n if (options === void 0) options = {};\n for(var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++){\n var ring = coordinates_1[_i];\n if (ring.length < 4) throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n for(var j = 0; j < ring[ring.length - 1].length; j++){\n // Check if first point of Polygon contains two numbers\n if (ring[ring.length - 1][j] !== ring[0][j]) throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n var geom = {\n type: \"Polygon\",\n coordinates: coordinates\n };\n return $5990cc70d091eed0$var$feature(geom, properties, options);\n}\nmodule.exports.polygon = $5990cc70d091eed0$var$polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */ function $5990cc70d091eed0$var$polygons(coordinates, properties, options) {\n if (options === void 0) options = {};\n return $5990cc70d091eed0$var$featureCollection(coordinates.map(function(coords) {\n return $5990cc70d091eed0$var$polygon(coords, properties);\n }), options);\n}\nmodule.exports.polygons = $5990cc70d091eed0$var$polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */ function $5990cc70d091eed0$var$lineString(coordinates, properties, options) {\n if (options === void 0) options = {};\n if (coordinates.length < 2) throw new Error(\"coordinates must be an array of two or more positions\");\n var geom = {\n type: \"LineString\",\n coordinates: coordinates\n };\n return $5990cc70d091eed0$var$feature(geom, properties, options);\n}\nmodule.exports.lineString = $5990cc70d091eed0$var$lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */ function $5990cc70d091eed0$var$lineStrings(coordinates, properties, options) {\n if (options === void 0) options = {};\n return $5990cc70d091eed0$var$featureCollection(coordinates.map(function(coords) {\n return $5990cc70d091eed0$var$lineString(coords, properties);\n }), options);\n}\nmodule.exports.lineStrings = $5990cc70d091eed0$var$lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */ function $5990cc70d091eed0$var$featureCollection(features, options) {\n if (options === void 0) options = {};\n var fc = {\n type: \"FeatureCollection\"\n };\n if (options.id) fc.id = options.id;\n if (options.bbox) fc.bbox = options.bbox;\n fc.features = features;\n return fc;\n}\nmodule.exports.featureCollection = $5990cc70d091eed0$var$featureCollection;\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */ function $5990cc70d091eed0$var$multiLineString(coordinates, properties, options) {\n if (options === void 0) options = {};\n var geom = {\n type: \"MultiLineString\",\n coordinates: coordinates\n };\n return $5990cc70d091eed0$var$feature(geom, properties, options);\n}\nmodule.exports.multiLineString = $5990cc70d091eed0$var$multiLineString;\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */ function $5990cc70d091eed0$var$multiPoint(coordinates, properties, options) {\n if (options === void 0) options = {};\n var geom = {\n type: \"MultiPoint\",\n coordinates: coordinates\n };\n return $5990cc70d091eed0$var$feature(geom, properties, options);\n}\nmodule.exports.multiPoint = $5990cc70d091eed0$var$multiPoint;\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */ function $5990cc70d091eed0$var$multiPolygon(coordinates, properties, options) {\n if (options === void 0) options = {};\n var geom = {\n type: \"MultiPolygon\",\n coordinates: coordinates\n };\n return $5990cc70d091eed0$var$feature(geom, properties, options);\n}\nmodule.exports.multiPolygon = $5990cc70d091eed0$var$multiPolygon;\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */ function $5990cc70d091eed0$var$geometryCollection(geometries, properties, options) {\n if (options === void 0) options = {};\n var geom = {\n type: \"GeometryCollection\",\n geometries: geometries\n };\n return $5990cc70d091eed0$var$feature(geom, properties, options);\n}\nmodule.exports.geometryCollection = $5990cc70d091eed0$var$geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */ function $5990cc70d091eed0$var$round(num, precision) {\n if (precision === void 0) precision = 0;\n if (precision && !(precision >= 0)) throw new Error(\"precision must be a positive number\");\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nmodule.exports.round = $5990cc70d091eed0$var$round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */ function $5990cc70d091eed0$var$radiansToLength(radians, units) {\n if (units === void 0) units = \"kilometers\";\n var factor = module.exports.factors[units];\n if (!factor) throw new Error(units + \" units is invalid\");\n return radians * factor;\n}\nmodule.exports.radiansToLength = $5990cc70d091eed0$var$radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */ function $5990cc70d091eed0$var$lengthToRadians(distance, units) {\n if (units === void 0) units = \"kilometers\";\n var factor = module.exports.factors[units];\n if (!factor) throw new Error(units + \" units is invalid\");\n return distance / factor;\n}\nmodule.exports.lengthToRadians = $5990cc70d091eed0$var$lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */ function $5990cc70d091eed0$var$lengthToDegrees(distance, units) {\n return $5990cc70d091eed0$var$radiansToDegrees($5990cc70d091eed0$var$lengthToRadians(distance, units));\n}\nmodule.exports.lengthToDegrees = $5990cc70d091eed0$var$lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */ function $5990cc70d091eed0$var$bearingToAzimuth(bearing) {\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\nmodule.exports.bearingToAzimuth = $5990cc70d091eed0$var$bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */ function $5990cc70d091eed0$var$radiansToDegrees(radians) {\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\nmodule.exports.radiansToDegrees = $5990cc70d091eed0$var$radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */ function $5990cc70d091eed0$var$degreesToRadians(degrees) {\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\nmodule.exports.degreesToRadians = $5990cc70d091eed0$var$degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */ function $5990cc70d091eed0$var$convertLength(length, originalUnit, finalUnit) {\n if (originalUnit === void 0) originalUnit = \"kilometers\";\n if (finalUnit === void 0) finalUnit = \"kilometers\";\n if (!(length >= 0)) throw new Error(\"length must be a positive number\");\n return $5990cc70d091eed0$var$radiansToLength($5990cc70d091eed0$var$lengthToRadians(length, originalUnit), finalUnit);\n}\nmodule.exports.convertLength = $5990cc70d091eed0$var$convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted distance\n */ function $5990cc70d091eed0$var$convertArea(area, originalUnit, finalUnit) {\n if (originalUnit === void 0) originalUnit = \"meters\";\n if (finalUnit === void 0) finalUnit = \"kilometers\";\n if (!(area >= 0)) throw new Error(\"area must be a positive number\");\n var startFactor = module.exports.areaFactors[originalUnit];\n if (!startFactor) throw new Error(\"invalid original units\");\n var finalFactor = module.exports.areaFactors[finalUnit];\n if (!finalFactor) throw new Error(\"invalid final units\");\n return area / startFactor * finalFactor;\n}\nmodule.exports.convertArea = $5990cc70d091eed0$var$convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */ function $5990cc70d091eed0$var$isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num) && !/^\\s*$/.test(num);\n}\nmodule.exports.isNumber = $5990cc70d091eed0$var$isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */ function $5990cc70d091eed0$var$isObject(input) {\n return !!input && input.constructor === Object;\n}\nmodule.exports.isObject = $5990cc70d091eed0$var$isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */ function $5990cc70d091eed0$var$validateBBox(bbox) {\n if (!bbox) throw new Error(\"bbox is required\");\n if (!Array.isArray(bbox)) throw new Error(\"bbox must be an Array\");\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n bbox.forEach(function(num) {\n if (!$5990cc70d091eed0$var$isNumber(num)) throw new Error(\"bbox must only contain numbers\");\n });\n}\nmodule.exports.validateBBox = $5990cc70d091eed0$var$validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */ function $5990cc70d091eed0$var$validateId(id) {\n if (!id) throw new Error(\"id is required\");\n if ([\n \"string\",\n \"number\"\n ].indexOf(typeof id) === -1) throw new Error(\"id must be a number or a string\");\n}\nmodule.exports.validateId = $5990cc70d091eed0$var$validateId;\n// Deprecated methods\nfunction $5990cc70d091eed0$var$radians2degrees() {\n throw new Error(\"method has been renamed to `radiansToDegrees`\");\n}\nmodule.exports.radians2degrees = $5990cc70d091eed0$var$radians2degrees;\nfunction $5990cc70d091eed0$var$degrees2radians() {\n throw new Error(\"method has been renamed to `degreesToRadians`\");\n}\nmodule.exports.degrees2radians = $5990cc70d091eed0$var$degrees2radians;\nfunction $5990cc70d091eed0$var$distanceToDegrees() {\n throw new Error(\"method has been renamed to `lengthToDegrees`\");\n}\nmodule.exports.distanceToDegrees = $5990cc70d091eed0$var$distanceToDegrees;\nfunction $5990cc70d091eed0$var$distanceToRadians() {\n throw new Error(\"method has been renamed to `lengthToRadians`\");\n}\nmodule.exports.distanceToRadians = $5990cc70d091eed0$var$distanceToRadians;\nfunction $5990cc70d091eed0$var$radiansToDistance() {\n throw new Error(\"method has been renamed to `radiansToLength`\");\n}\nmodule.exports.radiansToDistance = $5990cc70d091eed0$var$radiansToDistance;\nfunction $5990cc70d091eed0$var$bearingToAngle() {\n throw new Error(\"method has been renamed to `bearingToAzimuth`\");\n}\nmodule.exports.bearingToAngle = $5990cc70d091eed0$var$bearingToAngle;\nfunction $5990cc70d091eed0$var$convertDistance() {\n throw new Error(\"method has been renamed to `convertLength`\");\n}\nmodule.exports.convertDistance = $5990cc70d091eed0$var$convertDistance;\n\n});\n\nparcelRegister(\"7aiSl\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */ /**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */ function $53781bdc68c68893$var$coordEach(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for(var featureIndex = 0; featureIndex < stop; featureIndex++){\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for(var geomIndex = 0; geomIndex < stopG; geomIndex++){\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch(geomType){\n case null:\n break;\n case \"Point\":\n if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for(j = 0; j < coords.length; j++){\n if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for(j = 0; j < coords.length; j++){\n for(k = 0; k < coords[j].length - wrapShrink; k++){\n if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for(j = 0; j < coords.length; j++){\n geometryIndex = 0;\n for(k = 0; k < coords[j].length; k++){\n for(l = 0; l < coords[j][k].length - wrapShrink; l++){\n if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for(j = 0; j < geometry.geometries.length; j++)if ($53781bdc68c68893$var$coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */ /**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */ function $53781bdc68c68893$var$coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n $53781bdc68c68893$var$coordEach(geojson, function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n }, excludeWrapCoord);\n return previousValue;\n}\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */ function $53781bdc68c68893$var$propEach(geojson, callback) {\n var i;\n switch(geojson.type){\n case \"FeatureCollection\":\n for(i = 0; i < geojson.features.length; i++){\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */ function $53781bdc68c68893$var$propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $53781bdc68c68893$var$propEach(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n else previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */ function $53781bdc68c68893$var$featureEach(geojson, callback) {\n if (geojson.type === \"Feature\") callback(geojson, 0);\n else if (geojson.type === \"FeatureCollection\") for(var i = 0; i < geojson.features.length; i++){\n if (callback(geojson.features[i], i) === false) break;\n }\n}\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */ function $53781bdc68c68893$var$featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $53781bdc68c68893$var$featureEach(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */ function $53781bdc68c68893$var$coordAll(geojson) {\n var coords = [];\n $53781bdc68c68893$var$coordEach(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */ /**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */ function $53781bdc68c68893$var$geomEach(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for(i = 0; i < stop; i++){\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : undefined;\n featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : undefined;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for(g = 0; g < stopG; g++){\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n // Handle null Geometry\n if (geometry === null) {\n if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n continue;\n }\n switch(geometry.type){\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n break;\n case \"GeometryCollection\":\n for(j = 0; j < geometry.geometries.length; j++){\n if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n }\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */ /**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */ function $53781bdc68c68893$var$geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $53781bdc68c68893$var$geomEach(geojson, function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n });\n return previousValue;\n}\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */ /**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */ function $53781bdc68c68893$var$flattenEach(geojson, callback) {\n $53781bdc68c68893$var$geomEach(geojson, function(geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = geometry === null ? null : geometry.type;\n switch(type){\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback($7GKQS.feature(geometry, properties, {\n bbox: bbox,\n id: id\n }), featureIndex, 0) === false) return false;\n return;\n }\n var geomType;\n // Callback for multi-geometry\n switch(type){\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for(var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++){\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback($7GKQS.feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n }\n });\n}\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */ /**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */ function $53781bdc68c68893$var$flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $53781bdc68c68893$var$flattenEach(geojson, function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n });\n return previousValue;\n}\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */ /**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */ function $53781bdc68c68893$var$segmentEach(geojson, callback) {\n $53781bdc68c68893$var$flattenEach(geojson, function(feature, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n // Exclude null Geometries\n if (!feature.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n // Generate 2-vertex line segments\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if ($53781bdc68c68893$var$coordEach(feature, function(currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (previousCoords === undefined || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = $7GKQS.lineString([\n previousCoords,\n currentCoord\n ], feature.properties);\n if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }) === false) return false;\n });\n}\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */ /**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentInex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */ function $53781bdc68c68893$var$segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n $53781bdc68c68893$var$segmentEach(geojson, function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === undefined) previousValue = currentSegment;\n else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n started = true;\n });\n return previousValue;\n}\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */ /**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */ function $53781bdc68c68893$var$lineEach(geojson, callback) {\n // validation\n if (!geojson) throw new Error(\"geojson is required\");\n $53781bdc68c68893$var$flattenEach(geojson, function(feature, featureIndex, multiFeatureIndex) {\n if (feature.geometry === null) return;\n var type = feature.geometry.type;\n var coords = feature.geometry.coordinates;\n switch(type){\n case \"LineString\":\n if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n break;\n case \"Polygon\":\n for(var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++){\n if (callback($7GKQS.lineString(coords[geometryIndex], feature.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n }\n break;\n }\n });\n}\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */ /**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */ function $53781bdc68c68893$var$lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $53781bdc68c68893$var$lineEach(geojson, function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n });\n return previousValue;\n}\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature>\n */ function $53781bdc68c68893$var$findSegment(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!$7GKQS.isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n switch(geojson.type){\n case \"FeatureCollection\":\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch(geometry.type){\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return $7GKQS.lineString([\n coords[segmentIndex],\n coords[segmentIndex + 1]\n ], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return $7GKQS.lineString([\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1]\n ], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return $7GKQS.lineString([\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1]\n ], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return $7GKQS.lineString([\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ], properties, options);\n }\n throw new Error(\"geojson is invalid\");\n}\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature>\n */ function $53781bdc68c68893$var$findPoint(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!$7GKQS.isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n switch(geojson.type){\n case \"FeatureCollection\":\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch(geometry.type){\n case \"Point\":\n return $7GKQS.point(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n return $7GKQS.point(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return $7GKQS.point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n return $7GKQS.point(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return $7GKQS.point(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return $7GKQS.point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n }\n throw new Error(\"geojson is invalid\");\n}\nmodule.exports.coordEach = $53781bdc68c68893$var$coordEach;\nmodule.exports.coordReduce = $53781bdc68c68893$var$coordReduce;\nmodule.exports.propEach = $53781bdc68c68893$var$propEach;\nmodule.exports.propReduce = $53781bdc68c68893$var$propReduce;\nmodule.exports.featureEach = $53781bdc68c68893$var$featureEach;\nmodule.exports.featureReduce = $53781bdc68c68893$var$featureReduce;\nmodule.exports.coordAll = $53781bdc68c68893$var$coordAll;\nmodule.exports.geomEach = $53781bdc68c68893$var$geomEach;\nmodule.exports.geomReduce = $53781bdc68c68893$var$geomReduce;\nmodule.exports.flattenEach = $53781bdc68c68893$var$flattenEach;\nmodule.exports.flattenReduce = $53781bdc68c68893$var$flattenReduce;\nmodule.exports.segmentEach = $53781bdc68c68893$var$segmentEach;\nmodule.exports.segmentReduce = $53781bdc68c68893$var$segmentReduce;\nmodule.exports.lineEach = $53781bdc68c68893$var$lineEach;\nmodule.exports.lineReduce = $53781bdc68c68893$var$lineReduce;\nmodule.exports.findSegment = $53781bdc68c68893$var$findSegment;\nmodule.exports.findPoint = $53781bdc68c68893$var$findPoint;\n\n});\n\nparcelRegister(\"lX3Ya\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $7aiSl = parcelRequire(\"7aiSl\");\n/**\n * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.\n *\n * @name bbox\n * @param {GeoJSON} geojson any GeoJSON object\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);\n * var bbox = turf.bbox(line);\n * var bboxPolygon = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [line, bboxPolygon]\n */ function $ffb22fee903c1acf$var$bbox(geojson) {\n var result = [\n Infinity,\n Infinity,\n -Infinity,\n -Infinity\n ];\n $7aiSl.coordEach(geojson, function(coord) {\n if (result[0] > coord[0]) result[0] = coord[0];\n if (result[1] > coord[1]) result[1] = coord[1];\n if (result[2] < coord[0]) result[2] = coord[0];\n if (result[3] < coord[1]) result[3] = coord[1];\n });\n return result;\n}\nmodule.exports.default = $ffb22fee903c1acf$var$bbox;\n\n});\n\n\nparcelRegister(\"WXYRR\", function(module, exports) {\n\n$parcel$export(module.exports, \"RECOMMENDATION_FILTERS\", function () { return $0b13f1d1c0c1464c$export$84b324ae0bc63ae0; });\n$parcel$export(module.exports, \"POPULAR_RANGE_FILTERS\", function () { return $0b13f1d1c0c1464c$export$b25e85153698cb3b; });\n$parcel$export(module.exports, \"RANGE_FILTERS\", function () { return $0b13f1d1c0c1464c$export$651f966db44568df; });\n$parcel$export(module.exports, \"BUILDING_CLASSES\", function () { return $0b13f1d1c0c1464c$export$eb5dde5c73501199; });\n$parcel$export(module.exports, \"PROPERTY_SUMMARY_FILTERS\", function () { return $0b13f1d1c0c1464c$export$286a7f607624d59e; });\n\nvar $5d5VO = parcelRequire(\"5d5VO\");\nconst $0b13f1d1c0c1464c$var$currentYear = new Date().getFullYear();\nconst $0b13f1d1c0c1464c$export$84b324ae0bc63ae0 = [\n {\n icon: \"sun\",\n label: \"Solar Recommendation\",\n name: \"recommendations.pv\",\n min: 0,\n max: 3\n },\n {\n icon: \"bulb\",\n label: \"CHP Recommendation\",\n name: \"recommendations.chp\",\n min: 0,\n max: 3\n },\n {\n icon: \"battery\",\n label: \"Battery Storage Recommendation\",\n name: \"recommendations.storage\",\n min: 0,\n max: 3\n },\n {\n icon: \"hydrogen\",\n label: \"Fuel Cell Recommendation\",\n name: \"recommendations.fuel_cell\",\n min: 0,\n max: 3\n }\n];\nconst $0b13f1d1c0c1464c$export$b25e85153698cb3b = {\n popular: [\n {\n name: \"estimates_int.solar\",\n label: \"Solar Estimates\",\n start: 0,\n end: 100,\n states: [\n \"ny\",\n \"ma\",\n \"tx\",\n \"nj\",\n \"ct\",\n \"palau\",\n \"japan\",\n \"*\"\n ],\n category: null\n },\n {\n name: \"estimates_int.chp\",\n label: \"CHP Estimates\",\n start: 0,\n end: 100,\n states: [\n \"ny\",\n \"ma\",\n \"tx\",\n \"nj\",\n \"ct\",\n \"palau\",\n \"japan\",\n \"*\"\n ],\n category: null\n },\n {\n name: \"estimates_int.storage\",\n label: \"Battery Storage Estimates\",\n start: 0,\n end: 100,\n states: [\n \"ny\",\n \"ma\",\n \"tx\",\n \"nj\",\n \"ct\",\n \"palau\",\n \"japan\",\n \"*\"\n ],\n category: null\n },\n {\n name: \"estimates_int.fuel_cell\",\n label: \"Fuel Cell Estimates\",\n start: 0,\n end: 100,\n states: [\n \"ny\",\n \"ma\",\n \"tx\",\n \"nj\",\n \"ct\",\n \"palau\",\n \"japan\",\n \"*\"\n ],\n category: null\n },\n {\n name: \"der_score\",\n label: \"DER Adoption Potential\",\n start: 0,\n end: 100,\n states: [\n \"ny\",\n \"ma\",\n \"tx\",\n \"nj\",\n \"ct\",\n \"palau\",\n \"japan\",\n \"*\"\n ],\n category: null\n }\n ],\n adv_popular: []\n};\nconst $0b13f1d1c0c1464c$export$651f966db44568df = {\n \"Financial Estimates\": [\n {\n name: \"financial_total_gross_project_cost\",\n label: \"Total Gross Project Cost\",\n start: 0,\n end: 100000000,\n step: 1000,\n states: [\n \"ny\"\n ],\n category: \"financial\"\n },\n {\n name: \"financial_irr\",\n label: \"IRR\",\n start: 0,\n end: 1,\n step: 0.01,\n states: [\n \"ny\"\n ],\n category: \"financial\"\n },\n {\n name: \"financial_payback_period\",\n label: \"Payback Period\",\n start: 0,\n end: 10,\n step: 0.1,\n states: [\n \"ny\"\n ],\n category: \"financial\"\n },\n {\n name: \"financial_net_present_value\",\n label: \"Net Present Value\",\n start: 0,\n end: 10000000,\n step: 1000,\n states: [\n \"ny\"\n ],\n category: \"financial\"\n },\n {\n name: \"financial_ppa_1st_year_savings_to_customer\",\n label: \"1st Year Savings\",\n start: 0,\n end: 1000000,\n step: 1000,\n states: [\n \"ny\"\n ],\n category: \"financial\"\n },\n {\n name: \"financial_ppa_kwh_rate\",\n label: \"PPA kWh Rate\",\n start: 0,\n end: 0.5,\n step: 0.01,\n states: [\n \"ny\"\n ],\n category: \"financial\"\n }\n ],\n Energy: [\n {\n name: \"ghg_emission_total\",\n label: \"GHG Emissions\",\n start: 0,\n end: 1000000,\n states: [\n \"ny\"\n ],\n category: \"energy\"\n },\n {\n name: \"energy_star_score\",\n label: \"Energy Star Rating\",\n start: 0,\n end: 100,\n states: [\n \"ny\"\n ],\n category: \"energy\"\n },\n {\n name: \"eui\",\n label: \"Energy Use Intensity\",\n start: 0,\n end: 1000000,\n states: [\n \"ny\"\n ],\n category: \"energy\"\n }\n ],\n \"Building profile\": [\n {\n name: \"building_far\",\n label: \"Floor Area Ratio\",\n start: 0,\n end: 200,\n states: [\n \"ny\"\n ]\n },\n {\n name: \"last_renovation\",\n label: \"Last Renovation\",\n start: 1700,\n end: $0b13f1d1c0c1464c$var$currentYear,\n states: [\n \"ny\"\n ]\n },\n {\n name: \"residential_units\",\n label: \"Residential Units\",\n start: 0,\n end: 300,\n states: [\n \"ny\"\n ]\n }\n ]\n};\nconst $0b13f1d1c0c1464c$export$d9b686cf96064644 = [\n {\n value: 1,\n label: \"Manhattan\",\n acronym: \"mn\"\n },\n {\n value: 3,\n label: \"Brooklyn\",\n acronym: \"bk\"\n },\n {\n value: 4,\n label: \"Queens\",\n acronym: \"qu\"\n },\n {\n value: 2,\n label: \"The Bronx\",\n acronym: \"bx\"\n },\n {\n value: 5,\n label: \"Staten Island\",\n acronym: \"si\"\n }\n];\nconst $0b13f1d1c0c1464c$export$4be155fc44d57dc5 = [\n {\n value: \"New York\",\n label: \"New York\",\n acronym: \"ny\"\n },\n {\n value: \"Connecticut\",\n label: \"Connecticut\",\n acronym: \"ct\"\n },\n {\n value: \"Massachusetts\",\n label: \"Massachusetts\",\n acronym: \"ma\"\n },\n {\n value: \"New Jersey\",\n label: \"New Jersey\",\n acronym: \"nj\"\n },\n {\n value: \"Texas\",\n label: \"Texas\",\n acronym: \"tx\"\n },\n {\n value: \"Palau\",\n label: \"Palau\",\n acronym: \"palau\"\n },\n {\n value: \"Japan\",\n label: \"Japan\",\n acronym: \"japan\"\n }\n];\nconst $0b13f1d1c0c1464c$export$e986372e7c5bc8b4 = [\n {\n value: \"A\",\n label: \"One Family Dwelling\"\n },\n {\n value: \"B\",\n label: \"Two Family Dwelling\"\n },\n {\n value: \"C\",\n label: \"Walk Up Apartment\"\n },\n {\n value: \"D\",\n label: \"Elevator Apartment\"\n },\n {\n value: \"E\",\n label: \"Warehouse\"\n },\n {\n value: \"F\",\n label: \"Factory/Industrial Building\"\n },\n {\n value: \"G\",\n label: \"Garage or Gasoline Station\"\n },\n {\n value: \"H\",\n label: \"Hotel\"\n },\n {\n value: \"I\",\n label: \"Healthcare\"\n },\n {\n value: \"J\",\n label: \"Theatre\"\n },\n {\n value: \"K\",\n label: \"Retail\"\n },\n {\n value: \"L\",\n label: \"Loft Building\"\n },\n {\n value: \"M\",\n label: \"Religious Building\"\n },\n {\n value: \"N\",\n label: \"Asylum/Home\"\n },\n {\n value: \"O\",\n label: \"Office Building\"\n },\n {\n value: \"P\",\n label: \"Public Assembly Place\"\n },\n {\n value: \"Q\",\n label: \"Outdoor Recreation Facility\"\n },\n {\n value: \"R\",\n label: \"Condomonium\"\n },\n {\n value: \"S\",\n label: \"Mix-Use Residence\"\n },\n {\n value: \"T\",\n label: \"Transportation Facility\"\n },\n {\n value: \"U\",\n label: \"Utility\"\n },\n {\n value: \"V\",\n label: \"Vacant Land\"\n },\n {\n value: \"W\",\n label: \"Education\"\n },\n {\n value: \"Y\",\n label: \"Government Building\"\n },\n {\n value: \"Z\",\n label: \"Miscellaneous\"\n }\n].sort((a, b)=>a.label.toLowerCase().localeCompare(b.label, \"en\", {\n sensitivity: \"base\"\n }));\nconst $0b13f1d1c0c1464c$export$3c27ed10463c06fa = (0, $5d5VO.default);\nconst $0b13f1d1c0c1464c$export$eb5dde5c73501199 = [\n {\n label: \"Power Station\",\n value: \"power_station\"\n },\n {\n label: \"Miscellaneous\",\n value: \"miscellaneous\"\n },\n {\n label: \"Arts Center\",\n value: \"art_center\"\n },\n {\n label: \"Bank\",\n value: \"bank\"\n },\n {\n label: \"Restaurant\",\n value: \"bar\"\n },\n {\n label: \"Bus Station\",\n value: \"bus_station\"\n },\n {\n label: \"Cafe\",\n value: \"cafe\"\n },\n {\n label: \"Car Service\",\n value: \"car_parts\"\n },\n {\n label: \"Car Rental\",\n value: \"car_rental\"\n },\n {\n label: \"Car Wash\",\n value: \"car_wash\"\n },\n {\n label: \"Casino\",\n value: \"casino\"\n },\n {\n label: \"Childcare Facility\",\n value: \"childcare\"\n },\n {\n label: \"Religious Building\",\n value: \"church\"\n },\n {\n label: \"Cinema\",\n value: \"cinema\"\n },\n {\n label: \"Clinic\",\n value: \"clinic\"\n },\n {\n label: \"Higher Education\",\n value: \"college\"\n },\n {\n label: \"Community Center\",\n value: \"community_center\"\n },\n {\n label: \"Courthouse\",\n value: \"courthouse\"\n },\n {\n label: \"Healthcare Facility\",\n value: \"doctors\"\n },\n {\n label: \"Embassy\",\n value: \"embassy\"\n },\n {\n label: \"Fast Food\",\n value: \"fast_food\"\n },\n {\n label: \"Ferry Terminal\",\n value: \"ferry_terminal\"\n },\n {\n label: \"Fire Station\",\n value: \"fire_station\"\n },\n {\n label: \"Fuel Station\",\n value: \"fuel\"\n },\n {\n label: \"Healthcare\",\n value: \"healthcare\"\n },\n {\n label: \"Hospital\",\n value: \"hospital\"\n },\n {\n label: \"Library\",\n value: \"library\"\n },\n {\n label: \"Marketplace\",\n value: \"marketplace\"\n },\n {\n label: \"Nursing Home\",\n value: \"nursing_home\"\n },\n {\n label: \"Parking Facility\",\n value: \"parking\"\n },\n {\n label: \"Pharmacy\",\n value: \"pharmacy\"\n },\n {\n label: \"Police Station\",\n value: \"police\"\n },\n {\n label: \"Post Office\",\n value: \"post_office\"\n },\n {\n label: \"Prison\",\n value: \"prison\"\n },\n {\n label: \"Bar\",\n value: \"pub\"\n },\n {\n label: \"Public Building\",\n value: \"public_building\"\n },\n {\n label: \"Ranger Station\",\n value: \"ranger_station\"\n },\n {\n label: \"Recycling Facility\",\n value: \"recycling\"\n },\n {\n label: \"School\",\n value: \"school\"\n },\n {\n label: \"Shelter\",\n value: \"shelter\"\n },\n {\n label: \"Social Facility\",\n value: \"social_centre\"\n },\n {\n label: \"Studio\",\n value: \"studio\"\n },\n {\n label: \"Swimming Pool\",\n value: \"swimming_pool\"\n },\n {\n label: \"Theater\",\n value: \"theatre\"\n },\n {\n label: \"Restroom Facility\",\n value: \"toilets\"\n },\n {\n label: \"Town Hall\",\n value: \"town_hall\"\n },\n {\n label: \"Veterinary Facility\",\n value: \"veterinary\"\n }\n];\nconst $0b13f1d1c0c1464c$export$286a7f607624d59e = [\n {\n name: \"floor_area_total\",\n label: \"Total Square Feet\",\n start: 0,\n end: 5000000,\n states: [\n \"ny\"\n ],\n category: \"building_area\"\n },\n {\n name: \"number_of_buildings\",\n label: \"Number Of Buildings\",\n start: 0,\n end: 10,\n states: [\n \"ny\"\n ]\n },\n {\n name: \"floors\",\n label: \"Number of Floors\",\n start: 0,\n end: 100,\n states: [\n \"ny\",\n \"japan\"\n ],\n category: null\n },\n {\n name: \"year_built\",\n label: \"Year Built\",\n start: 1900,\n end: $0b13f1d1c0c1464c$var$currentYear,\n states: [\n \"ny\"\n ],\n category: null\n }\n];\n\n});\nparcelRegister(\"5d5VO\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $3cb2c4846bbd3aaa$export$2e2bcd8739ae039; });\nconst $3cb2c4846bbd3aaa$var$available = [\n 88004,\n 88001,\n 88002,\n 88003,\n 9933,\n 99141,\n 99144,\n 99145,\n 99146,\n 99147,\n 99148,\n 99149,\n 99177,\n 99229,\n 99281,\n 99298,\n 99332,\n 99479,\n 99543,\n 99580,\n 99849,\n 99850,\n 99875,\n 99940,\n 99986,\n 991076,\n 991146,\n 991284,\n 991285,\n 991334,\n 991380,\n 991381,\n 991402,\n 991675,\n 991685,\n 992529,\n 992535,\n 992536,\n 992598,\n 993017,\n 993338,\n 993628,\n 993701,\n 993783,\n 993942,\n 993991,\n 994067,\n 994283,\n 994500,\n 994624,\n 995357,\n 995678,\n 995679,\n 995782,\n 995850,\n 9922020,\n 9922036,\n 9922037,\n 994037,\n 994055,\n 99345,\n 993657,\n 993677,\n 993658,\n 992107,\n 995039,\n 992851,\n 993435,\n 994791,\n 995367,\n 995380,\n 995038,\n 991339,\n 991353,\n 991383,\n 991389,\n 991400,\n 993378,\n 9915,\n 9981,\n 9982,\n 99173,\n 99182,\n 99288,\n 99702,\n 99805,\n 99981,\n 991134,\n 992766,\n 992779,\n 993535,\n 993742,\n 993743,\n 994622,\n 994880,\n 995669,\n 9921955,\n 9921956,\n 13,\n 12,\n 9980,\n 99153,\n 99174,\n 99192,\n 99217,\n 99453,\n 99546,\n 99550,\n 99616,\n 99699,\n 99776,\n 991153,\n 991155,\n 991159,\n 991161,\n 991162,\n 991234,\n 991251,\n 991252,\n 991596,\n 991672,\n 992397,\n 992724,\n 992891,\n 993177,\n 993565,\n 993662,\n 993765,\n 993925,\n 994419,\n 994621,\n 994857,\n 994874,\n 995122,\n 995249,\n 995539,\n 995660,\n 995676,\n 995755,\n 995860,\n 995861,\n 995883,\n 995947,\n 9921863,\n 9921946,\n 9922022,\n 99701,\n 9,\n 27,\n 994563,\n 995540,\n 995549,\n 24,\n 994371,\n 9976,\n 992004,\n 992806,\n 993197,\n 993237,\n 994472,\n 9921865,\n 9921866,\n 991396,\n 991397,\n 993324,\n 994298,\n 994557,\n 994962,\n 992762,\n 99327,\n 99511,\n 99513,\n 99517,\n 99897,\n 991088,\n 992011,\n 992012,\n 992013,\n 992014,\n 992015,\n 992016,\n 992020,\n 992749,\n 992925,\n 993972,\n 995139,\n 995154,\n 995447,\n 9915761,\n 9915763,\n 993217,\n 15,\n 992464,\n 994864,\n 993377,\n 993379,\n 994263,\n 992088,\n 993432,\n 992884,\n 994792,\n 994793,\n 99665,\n 99799,\n 991154,\n 991157,\n 992324,\n 992605,\n 992641,\n 992725,\n 992736,\n 992738,\n 992761,\n 992845,\n 993425,\n 993731,\n 994696,\n 995375,\n 99219,\n 99564,\n 99595,\n 99797,\n 991053,\n 991054,\n 991110,\n 991148,\n 991149,\n 991152,\n 991249,\n 991326,\n 991477,\n 992722,\n 993014,\n 993100,\n 993461,\n 993678,\n 993736,\n 993756,\n 993929,\n 994026,\n 994034,\n 994335,\n 994360,\n 994805,\n 994848,\n 995109,\n 995687,\n 995715,\n 995716,\n 995728,\n 995729,\n 995873,\n 9921919,\n 9921920,\n 9922023,\n 9938,\n 99168,\n 99589,\n 991150,\n 991151,\n 992359,\n 993266,\n 993330,\n 993671,\n 993883,\n 993966,\n 994933,\n 995165,\n 995205,\n 993907,\n 992910,\n 994588,\n 994982,\n 994983,\n 994378,\n 991829,\n 991831,\n 993474,\n 994282,\n 995919,\n 991337,\n 991338,\n 992886,\n 993400,\n 994176,\n 993026,\n 18,\n 99129,\n 99195,\n 99196,\n 99239,\n 99240,\n 99277,\n 99336,\n 99338,\n 99721,\n 991046,\n 991059,\n 991078,\n 991247,\n 991646,\n 991691,\n 991693,\n 992613,\n 992624,\n 992654,\n 993141,\n 993373,\n 993705,\n 993706,\n 993802,\n 993930,\n 994506,\n 994552,\n 994951,\n 994958,\n 995321,\n 995423,\n 995425,\n 995730,\n 995739,\n 995767,\n 995787,\n 9921981,\n 9921983,\n 9921985,\n 9922025,\n 991236,\n 991407,\n 993081,\n 993730,\n 993941,\n 994338,\n 994342,\n 994355,\n 994356,\n 994517,\n 994712,\n 995120,\n 995242,\n 995405,\n 995735,\n 995738,\n 14,\n 991375,\n 991379,\n 994259,\n 994560,\n 995567,\n 995717,\n 11,\n 991811,\n 995189,\n 10,\n 991342,\n 992649,\n 992650,\n 993833,\n 993834,\n 994363,\n 995741,\n 995742,\n 995743,\n 995744,\n 995745,\n 995746,\n 995748,\n 991485,\n 994807,\n 991313,\n 991315,\n 991316,\n 991320,\n 993889,\n 994358,\n 995162,\n 995358,\n 995693,\n 995737,\n 993285,\n 994470,\n 995858,\n 994379,\n 993463,\n 994244,\n 994306,\n 994574,\n 994955,\n 7,\n 8,\n 991807,\n 991808,\n 993728,\n 995664,\n 992885,\n 992887,\n 994720,\n 995593,\n 26,\n 991321,\n 991322,\n 991323,\n 991324,\n 991330,\n 991399,\n 993445,\n 993887,\n 993888,\n 994357,\n 995164,\n 995356,\n 995692,\n 995289,\n 994605,\n 993456,\n 994789,\n 9961,\n 992036,\n 992473,\n 992794,\n 992795,\n 992797,\n 994147,\n 994322,\n 994788,\n 993905,\n 994644,\n 995011,\n 994770,\n 994771,\n 994917,\n 993831,\n 995170,\n 994748,\n 994750,\n 994751,\n 995547,\n 995893,\n 995944,\n 28,\n 993464,\n 994245,\n 994304,\n 994575,\n 994956,\n 994594,\n 993660,\n 994480,\n 995171,\n 992740,\n 991543,\n 991544,\n 993488,\n 992021,\n 992028,\n 993661,\n 993827,\n 993828,\n 993829,\n 9919314,\n 992652,\n 992653,\n 993346,\n 993835,\n 9921750,\n 991592,\n 991593,\n 991594,\n 993652,\n 995012,\n 992090,\n 993313,\n 993322,\n 992084,\n 993670,\n 993825,\n 994289,\n 995126,\n 992026,\n 992631,\n 992946,\n 992947,\n 995411,\n 992029,\n 993838,\n 993840,\n 994196,\n 994593,\n 995545,\n 993669,\n 993830,\n 993832,\n 9919316,\n 995594,\n 995595,\n 993727,\n 993735,\n 994228,\n 995590,\n 995592,\n 992089,\n 994948,\n 992039,\n 993430,\n 993480,\n 993004,\n 995221,\n 9914057,\n 9914059,\n 9914074,\n 9914081,\n 9914091,\n 9916433,\n 9917294,\n 9917300,\n 9917439,\n 9917440,\n 9917462,\n 9917599,\n 9917638,\n 9918549,\n 9918820,\n 9919752,\n 9920157,\n 9920322,\n 9921650,\n 9921651,\n 9921652,\n 9921653,\n 9921684,\n 9921685,\n 9921686,\n 9921687,\n 9921715,\n 9921716,\n 9921717,\n 9921737,\n 9921947,\n 9921952,\n 992647,\n 992648,\n 993082,\n 993168,\n 994601,\n 995176,\n 995177,\n 995490,\n 9915778,\n 9915786,\n 9915792,\n 9915798,\n 9917413,\n 9917415,\n 9917418,\n 9917433,\n 9917434,\n 9917437,\n 9917705,\n 9918961,\n 9918980,\n 9918981,\n 9919309,\n 9919311,\n 9919669,\n 9921101,\n 9921567,\n 9921624,\n 9921628,\n 9921636,\n 9921793,\n 9921794,\n 9921800,\n 9921802,\n 9921803,\n 9921806,\n 9921808,\n 9921810,\n 9921817,\n 993630,\n 994796,\n 993037,\n 994703,\n 995117,\n 995118,\n 992729,\n 995254,\n 9915772,\n 9917695,\n 992091,\n 991772,\n 991773,\n 995352,\n 992087,\n 993111,\n 993115,\n 994572,\n 9913947,\n 9913952,\n 9913955,\n 9913956,\n 9913957,\n 9914062,\n 9914078,\n 9916193,\n 9916282,\n 9916286,\n 9916287,\n 9916289,\n 9917454,\n 9917458,\n 9917470,\n 9917478,\n 9917480,\n 9917481,\n 9917573,\n 9917574,\n 9917578,\n 9917727,\n 9918330,\n 9918953,\n 9918962,\n 9919774,\n 9919888,\n 9919911,\n 9919913,\n 9919914,\n 9920099,\n 9920123,\n 9920258,\n 9920625,\n 9921157,\n 9921171,\n 9921186,\n 9921187,\n 9921571,\n 9921671,\n 9921674,\n 9917847,\n 9921541,\n 994587,\n 9914025,\n 9914029,\n 9916416,\n 9916482,\n 9916483,\n 9917594,\n 9919788,\n 9919892,\n 9919893,\n 9920368,\n 9920375,\n 9921635,\n 9921638,\n 9921921,\n 995008,\n 9913886,\n 9916288,\n 9916290,\n 9916390,\n 9916396,\n 9916397,\n 9916501,\n 9916968,\n 9917229,\n 9917234,\n 9917237,\n 9917238,\n 9917239,\n 9918738,\n 9920619\n];\nvar $3cb2c4846bbd3aaa$export$2e2bcd8739ae039 = [\n {\n value: 88004,\n label: \"BQDM\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 88001,\n label: \"Non-Wires Alternative (Williamsburg)\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 88002,\n label: \"Non-Wires Alternative (Prospect Park)\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 88003,\n label: \"Non-Wires Alternative (Borough Hall)\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 2,\n label: \"Multi-Family Building Incentive\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 3,\n label: \"Demand Response Program\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 4,\n label: \"Solar + Storage\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 5,\n label: \"Demand Management 2.0\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 6,\n label: \"CHP BQDM Incentive\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 7,\n label: \"Commercial Implementation Assistance Program\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 8,\n label: \"Commercial New Construction Program\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 9,\n label: \"Residential New Construction Program\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 10,\n label: \"PON 1746 FlexTech Program\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 11,\n label: \"NY Prize Community Grid Competition (Stage 2)\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 12,\n label: \"Shared Solar\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 13,\n label: \"Residential/Small Commercial Solar\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 14,\n label: \"Commercial/Industrial Solar\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 15,\n label: \"Affordable Solar\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 16,\n label: \"PON 2149 Solar Thermal Incentive Program\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 17,\n label: \"PON 2568 Program\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 18,\n label: \"PON 3309 RTEM\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 19,\n label: \"CST Fuel Cell Program\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 20,\n label: \"Small Wind Turbine Program\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 21,\n label: \"Lighting Upgrade\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 22,\n label: \"Insulation Improvement\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 23,\n label: \"EnergyWise\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 24,\n label: \"Property Tax Exemption\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 25,\n label: \"Solar Energy System Equipment Credit\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 26,\n label: \"Energy Efficiency Tax Incentives\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 27,\n label: \"Energy Efficient Home Credit\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 28,\n label: \"Energy Project Tax Credit\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 1,\n label: \"LED Lighting Free Install\",\n states: [\n \"ny\"\n ]\n },\n {\n value: 995162,\n label: \"The United Illuminating Company - ZREC and LREC Long Term Contracts\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995120,\n label: \"Residential Solar Investment Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995738,\n label: \"(Electric and Gas) Residential Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994958,\n label: \"Local Option - Building Permit Fee Waivers for Renewable Energy Projects\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994951,\n label: \"Local Option - Residential Sustainable Energy Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994884,\n label: \"CCEF - Alpha Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994712,\n label: \"Small Business Energy Advantage Loan Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994576,\n label: \"Energy Efficiency Fund (Gas) - Home Energy Solutions and Performance Programs\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994572,\n label: \"Norwich Public Utilities (Gas) - Residential Energy Efficiency Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994566,\n label: \"Litchfield Hills Region - Business Energy Efficiency Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 99277,\n label: \"Net Metering\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991078,\n label: \"Green Power Purchase Plan\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991087,\n label: \"CEFIA - Residential Solar PV Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9921985,\n label: \"Energize Connecticut - Small Business Energy Advantage\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9913886,\n label: \"United Illuminating Company - Energy Opportunities Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995787,\n label: \"Renewable Energy Investment Fund\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995767,\n label: \"Xcel Energy - Express Energy Efficiency\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995739,\n label: \"(CHIF) Home Energy Solutions Loan Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995737,\n label: \"Commercial and Industrial Kitchen Equipment Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991236,\n label: \"Operational Demonstration Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991247,\n label: \"Sales and Use Tax Exemption for Energy-Efficient Products\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995735,\n label: \"Low Interest Energy Efficiency Loan Program (Electric and Gas)\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991263,\n label: \"On-Site Renewable DG Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9918738,\n label: \"United Illuminating Company - Process Reengineering for Increased Manufacturing Efficiency (PRIME)\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 99297,\n label: \"CCEF - Commercial, Industrial, Institutional PV Grant Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9922025,\n label: \"Northeast Energy Efficiency Partnerships - EM&V Forum\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991313,\n label: \"The United Illuminating Company - Small Business Energy Advantage Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991314,\n label: \"The United Illuminating Company - Energy Star Incentives Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9921983,\n label: \"Energize Connecticut - Energy Conscious Blueprint\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991315,\n label: \"The United Illuminating Company - Energy Conscious Blueprint Grant Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991316,\n label: \"The United Illuminating Company - Energy Conscious Blueprint Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991318,\n label: \"The United Illuminating Company - MotorUp Commercial Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991319,\n label: \"The United Illuminating Company - Cool Choice Commercial Energy Efficiency Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991320,\n label: \"The United Illuminating Company - Energy Opportunities Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991321,\n label: \"Connecticut Light & Power - Energy Opportunities Efficiency Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991322,\n label: \"Connecticut Light & Power - Commercial Energy Efficiency Rebates\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991323,\n label: \"Connecticut Light & Power - Small Business Energy Advantage Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991324,\n label: \"Connecticut Light & Power - Small Business Energy Advantage Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995730,\n label: \"Multifamily Energy Conservation Loan Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991327,\n label: \"Connecticut Light & Power - Express Rebate Programs\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991329,\n label: \"The United Illuminating Company - Express Lighting Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991330,\n label: \"Connecticut Light & Power - Small Industrial and Commercial Energy Efficiency Loan Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9921981,\n label: \"Eversource - Energy Savings Plan\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 99322,\n label: \"Solar and Wind Contractor Licensing\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 99336,\n label: \"CCEF - Renewable Energy Projects in Pre-Development Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9917239,\n label: \"Southern Connecticut Gas - Operation & Maintenance Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 99338,\n label: \"CCEF - Project 150 Initiative\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 99157,\n label: \"Connecticut Clean Energy Fund\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9917238,\n label: \"Southern Connecticut Gas - Energy Opportunities Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9917237,\n label: \"Southern Connecticut Gas - Energy Conscious Blueprint Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9917234,\n label: \"Santa Buckley Energy - Heating, Ventilation, and Air Conditioning Equipment and Service\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9917229,\n label: \"EnerNOC - Energy Procurement\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991399,\n label: \"Connecticut Light & Power - Operation and Maintenance Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 99128,\n label: \"Alternative Fueled Vehicle Incremental Cost Credit\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991407,\n label: \"Smart-E loans\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995693,\n label: \"The United Illuminating Company - ZREC and LREC Long Term Contracts\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995692,\n label: \"Connecticut Light & Power - ZREC and LREC Long Term Contracts\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995684,\n label: \"Connecticut Light & Power - Small ZREC Tariff\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995683,\n label: \"The United Illuminating Company - Small ZREC Tariff\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995639,\n label: \"Copy of CT Clean Energy Communities\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995638,\n label: \"Combined Heat and Power Loan Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995637,\n label: \"Performance based incentive for Combined Heat and Power Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991563,\n label: \"Energy Efficiency Standards for Appliances\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9916968,\n label: \"Norwich Public Utilities - Commercial Energy Audit\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995425,\n label: \"Clean Energy On-Bill Financing\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9920619,\n label: \"Santa Buckley Energy - Lighting Retrofits & Upgrades\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991619,\n label: \"CT Clean Energy Communities\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991646,\n label: \"Community Innovations Grant Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9916501,\n label: \"Northeast Energy Efficiency Council - Building Operator Certification (BOC)\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991691,\n label: \"DPUC - Capital Grants for Customer-Side Distributed Resources\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991693,\n label: \"Low-Interest Loans for Customer-Side Distributed Resources\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991772,\n label: \"Groton Utilities - Residential Energy Efficiency Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991773,\n label: \"Groton Utilities - Commercial & Industrial Energy Efficiency Rebate Programs\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991311,\n label: \"Connecticut Natural Gas - Energy Conservation Program for State Facilities\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 99721,\n label: \"Fuel Cell Initiative\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995423,\n label: \"Local Option - Property Tax Exemption for Renewable Energy Systems\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995405,\n label: \"CT Solar Loan\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995358,\n label: \"The United Illuminating Company - Small ZREC Tariff\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995356,\n label: \"Connecticut Light & Power - Small ZREC Tariff\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995321,\n label: \"Local Option - Commercial PACE Financing\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995242,\n label: \"Commercial Solar Thermal Incentive Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995213,\n label: \"Combined Heat and Power Pilot Loan Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995212,\n label: \"Combined Heat and Power Grant Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995164,\n label: \"Connecticut Light & Power - ZREC and LREC Long Term Contracts\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 995121,\n label: \"Exemption from Electric Generation Tax\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 992313,\n label: \"Energy Efficiency Fund\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994552,\n label: \"Sales and Use Taxes for Items Used in Renewable Energy Industries\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 992390,\n label: \"Energy Efficiency Requirements for State Government\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994517,\n label: \"Energy Efficiency Fund (Electric and Gas) - Residential Energy Efficiency Financing\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994506,\n label: \"Renewable Portfolio Standards - Energy Efficiency Component\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 99195,\n label: \"Renewables Portfolio Standard\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9916397,\n label: \"United Illuminating Company - Retro-Commissioning (RCx)\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 992612,\n label: \"Building Energy Code\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 992613,\n label: \"Sales and Use Tax Exemption for Solar and Geothermal Systems\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 992614,\n label: \"OPM - Replacement Furnace Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994421,\n label: \"CCEF - ARRA Commercial Solar PV Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 992623,\n label: \"Connecticut Light & Power - Summer Saver Rewards\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 992624,\n label: \"Local Option - Property Tax Exemption Cogeneration Systems\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 992625,\n label: \"The United Illuminating Company - Summer Savers Rewards\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994358,\n label: \"Connecticut Light & Power - Energy Conscious Blueprint Grant Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994357,\n label: \"Connecticut Light & Power - Small Business Energy Advantage Loan Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994356,\n label: \"Energy Efficiency Fund (Electric) - Commercial New Construction Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994355,\n label: \"(Electric) Commercial and Industrial Energy Efficiency Programs\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994342,\n label: \"(Electric and Gas) Residential New Construction Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994340,\n label: \"Connecticut Light and Power (Electric) - Heating and Cooling Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 992654,\n label: \"Mass Energy - Renewable Energy Certificate Incentive\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9916396,\n label: \"United Illuminating Company - Business Energy Solutions\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 994338,\n label: \"(Electric and Gas ) Home Energy Solutions Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993941,\n label: \"(Gas) Commercial and Industrial Gas Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993940,\n label: \"Yankeegas - Cooking and Water Heating Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993938,\n label: \"Connecticut Natural Gas - Cooking and Water Heating Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993934,\n label: \"Southern Connecticut Gas - Custom Commercial Energy Efficiency Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993933,\n label: \"Yankee Gas - Custom Commercial Energy Efficiency Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993930,\n label: \"Connecticut Natural Gas - Custom Commercial Energy Efficiency Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993889,\n label: \"The United Illuminating Company - Residential New Construction Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 99196,\n label: \"Energy Conservation Loan\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993888,\n label: \"Connecticut Light & Power - Residential New Construction Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993887,\n label: \"Connecticut Light & Power - Energy Conscious Blueprint Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993844,\n label: \"Connecticut - Residential Energy-Efficient Appliance Rebates\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 99197,\n label: \"Alternative Fuel Vehicles and Associated Equipment\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993802,\n label: \"Geothermal Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9916390,\n label: \"Commercial Conservation Programs\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993730,\n label: \"Solar Thermal Incentive Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9916290,\n label: \"ISO New England - Demand Resources\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993706,\n label: \"New Generation Energy - Community Solar Lending Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993705,\n label: \"New Generation Energy - Community Food Service Efficiency Lending Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993447,\n label: \"Energy Efficiency Fund (Electric) - Residential Heating and Cooling Rebates\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993445,\n label: \"CL&P - Residential Heating and Cooling Rebates\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993373,\n label: \"Commercial and Industrial Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993003,\n label: \"CCEF - Affordable Housing Initiative Solar PV Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993081,\n label: \"CT Solar Lease\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993141,\n label: \"Furnace and Boiler Replacement Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993115,\n label: \"Norwich Public Utilities - Zero Percent Financing Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993111,\n label: \"Norwich Public Utilities - Commercial Energy Efficiency Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 993112,\n label: \"Norwich Public Utilities (Electric) - Residential Energy Efficiency Rebate Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 99129,\n label: \"Alternative Fueled Vehicle Charging Station Credit\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 99239,\n label: \"Fuel Mix and Emissions Disclosure\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9916288,\n label: \"U.S. Department of Energy Industrial Assessment Center (IAC): University of Massachusetts\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 99240,\n label: \"Property Tax Exemption for Renewable Energy Systems\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991046,\n label: \"New Energy Technology Program\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 991059,\n label: \"Interconnection Standards\",\n states: [\n \"ct\"\n ]\n },\n {\n value: 9922037,\n label: \"Local Option - Commercial PACE Financing\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9933,\n label: \"Green Power Predevelopment Financing Grant\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99147,\n label: \"Excise Tax Exemption for Solar or Wind Powered Systems\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995367,\n label: \"Commonwealth Outdoor Hydronic Heater Change-Out Pilot Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99141,\n label: \"Clustered PV Installation Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99144,\n label: \"Residential Renewable Energy Income Tax Credit\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99145,\n label: \"Renewable Energy Equipment Sales Tax Exemption\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99146,\n label: \"Renewable Energy Property Tax Exemption\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99148,\n label: \"Excise Tax Deduction for Solar or Wind Powered Systems\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99149,\n label: \"Alternative Energy and Energy Conservation Patent Income Tax Deduction (Corporate)\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99177,\n label: \"Mass Energy Consumers Alliance - Renewable Energy Certificate Incentive\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99229,\n label: \"Alternative Energy and Energy Conservation Patent Income Tax Deduction (Personal)\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99281,\n label: \"Net Metering\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99298,\n label: \"MTC - Renewable Energy Credit Payment Options\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99301,\n label: \"Solar Easements & Rights Laws\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99307,\n label: \"Cape Cod & Martha's Vineyard - Green Power Purchasing\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99349,\n label: \"Medford Solar Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99332,\n label: \"MTC - Matching Grants for Communities\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99345,\n label: \"Commonwealth Wind Incentive Program - Micro Wind Initiative\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99479,\n label: \"Renewable Portfolio Standard\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99480,\n label: \"Fuel Mix and Emissions Disclosure\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99543,\n label: \"Open PV Installation Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99580,\n label: \"Cape & Islands Self-Reliance Corporation - Home Energy Loan Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99732,\n label: \"Renewable Energy Trust Fund\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99849,\n label: \"Green Schools Initiative\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99850,\n label: \"Green Buildings Initiative\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99875,\n label: \"Newton - Solar Hot Water System Rebate\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99930,\n label: \"Green Power Purchasing\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99940,\n label: \"Fuel Cell Grants\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 99986,\n label: \"Interconnection Standards\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991076,\n label: \"MTC - Large Onsite Renewables Initiative (LORI) Grants\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991146,\n label: \"Energy Conservation Improvement Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991269,\n label: \"MassCEC - Sustainable Energy Economic Development (SEED) Initiative\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991284,\n label: \"Residential Solar and Efficiency Tax Credit - Personal\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991285,\n label: \"Residential Solar and Efficiency Tax Credit - Corporate\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991303,\n label: \"National Grid - Residential (Gas) Solar Water Heating Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991334,\n label: \"Berkshire Gas - Residential Energy Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991337,\n label: \"Holyoke Gas & Electric - Residential Energy Conservation Loan Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991338,\n label: \"Holyoke Gas & Electric - Commercial Energy Conservation Loan Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991339,\n label: \"National Grid (Electric) - Residential Energy Efficiency Incentive Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991342,\n label: \"Wakefield Municipal Gas & Light Department - Residential Conservation Services Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991353,\n label: \"National Grid (Mass Electric) - Small Business Energy Efficiency Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991355,\n label: \"New England Gas Company - Residential and Commercial Energy Efficiency Rebate Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991375,\n label: \"Unitil - Residential Energy Efficiency Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991379,\n label: \"Unitil (Gas) - Business Energy Efficiency Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991380,\n label: \"Columbia Gas of Massachusetts - Residential Energy Efficiency Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991381,\n label: \"Columbia Gas of Massachusetts - Commercial Energy Efficiency Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991383,\n label: \"National Grid (Electric) - Commercial Energy Efficiency Incentive Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991389,\n label: \"National Grid - Small/Mid-Sized Business Energy Efficiency Loan/Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991390,\n label: \"National Grid (Nantucket) - Commercial Energy Efficiency Incentive Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991391,\n label: \"National Grid (Nantucket) - Residential Energy Efficiency Incentive Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991395,\n label: \"NSTAR (Gas) - Residential Energy Efficiency Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991396,\n label: \"NSTAR (Electric) - Construction Solutions Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991397,\n label: \"NSTAR (Electric) - Business Solutions Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991400,\n label: \"National Grid - Commercial Energy Efficiency Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991402,\n label: \"National Grid (Gas) - Residential Energy Efficiency Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991403,\n label: \"National Grid Energy Delivery - Building Practices and Demonstration Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991567,\n label: \"Appliance Efficiency Standards\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991598,\n label: \"Corporate Tax Credit for Solar Water Heating Systems\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9918330,\n label: \"Reading Municipal Light Department - Commercial Customers\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991675,\n label: \"MTC - Clean Energy Pre-Development Financing Initiative (Grants)\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991685,\n label: \"MTC - Clean Energy Pre-Development Financing Initiative (Loans)\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991802,\n label: \"Belmont Municipal Light Department - Residential Energy Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991817,\n label: \"North Attleborough Electric Department - Residential Energy Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991806,\n label: \"Chicopee Electric Light Department - Residential Energy Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991807,\n label: \"Concord Municipal Light Plant - Residential Energy Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991808,\n label: \"Concord Municipal Light Plant - Commercial Energy Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991811,\n label: \"Mansfield Municipal Electric Department - Residential Energy Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991812,\n label: \"Marblehead Municipal Light Department - Residential Energy Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991828,\n label: \"North Attleborough Electric Department - Power Saver Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991829,\n label: \"Reading Municipal Light Department - Residential Energy Star Appliance Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991831,\n label: \"Reading Municipal Light Department - Commercial Lighting Retrofit Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991871,\n label: \"Building Energy Code\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 991929,\n label: \"Shrewsbury Electric - Residential Energy Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 992107,\n label: \"Mass Save - HEAT Loan Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 992257,\n label: \"Energy Efficiency Fund\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 992504,\n label: \"City of Boston - Green Power Purchasing\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 992529,\n label: \"MTC - Massachusetts Green Communities Grant\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 992535,\n label: \"MTC - Massachusetts Green Communities Loan\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 992536,\n label: \"Boston Community Capital - Energy Advantage Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 992598,\n label: \"MTC - Business Expansion Initiative\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 992569,\n label: \"Energy Reduction Plan for State Buildings\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993324,\n label: \"NSTAR (Electric) - Small Business Direct Install Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 992782,\n label: \"Model As-of Right Zoning Ordinance or Bylaw: Allowing Use of Wind Energy Facilities\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 992851,\n label: \"Commonwealth Solar II Rebates\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 992886,\n label: \"Chicopee Electric Light - Residential Solar Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993000,\n label: \"Green Power Purchasing Commitment\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9917470,\n label: \"Massachusetts Division of Energy Resources - Green Business Development\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993017,\n label: \"National Grid (Gas)\\xe2\\u20AC\\u201C Commercial Energy Efficiency Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993126,\n label: \"Model Ordinance for Permitting of Small Wind Facilities\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993217,\n label: \"MuniHELPS - Offered by 17 Utilities through the MMWEC\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993338,\n label: \"Eversource (Gas) - Commercial Energy Efficiency Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993377,\n label: \"Western Massachusetts Electric - Commercial Energy Efficiency Rebates\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993378,\n label: \"National Grid (Electric) - Small Business Energy Efficiency Loan/Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993379,\n label: \"WMECO - New Construction/Major Renovations Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993435,\n label: \"Commonwealth Wind Community-Scale Initiative\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993456,\n label: \"Marblehead Municipal Light Department - Solar Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993487,\n label: \"Cape Light Compact - Residential Energy Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993488,\n label: \"Cape Light Compact - Commercial Energy Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993628,\n label: \"National Grid (Gas) - Commercial Solar Thermal Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993657,\n label: \"Commonwealth Wind Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993658,\n label: \"MassCEC - Commonwealth Wind Incentive Program - Commercial Wind Initiative Loan\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993677,\n label: \"Commonwealth Hydropower Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993701,\n label: \"New Generation Energy - Community Solar Lending Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993728,\n label: \"Concord Municipal Light Plant - Solar Photovoltaic Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993783,\n label: \"New Generation Energy - Community Food Service Efficiency Lending Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993862,\n label: \"Massachusetts - Residential Energy-Efficient Appliance Rebates\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993942,\n label: \"MassCEC - Commonwealth Solar Stimulus\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 993991,\n label: \"Solar Renewable Energy Certificates (SREC-I)\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994037,\n label: \"Residential New Construction Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994055,\n label: \"Major Renovations Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994061,\n label: \"Model As-of Right Zoning Ordinance or Bylaw: Allowing Use of Large-Scale Solar Energy Facilities\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994067,\n label: \"Green Communities Grant Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994214,\n label: \"Unitil - Commercial and Industrial Energy Efficiency Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994259,\n label: \"Berkshire Gas - Commercial Energy Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994263,\n label: \"Western Massachusetts Electric - Residential Energy Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9918953,\n label: \"Rowley Municipal Lighting Plant - Commercial Energy Audits and Rebates\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994282,\n label: \"Taunton Municipal Lighting Plant - Residential PV Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994283,\n label: \"Local Option - Energy Revolving Loan Fund\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994298,\n label: \"NSTAR (Electric) - Residential Energy Efficiency Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994378,\n label: \"MMWEC Green Opportunity Commercial and Industrial Efficiency Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994379,\n label: \"Ipswich Utilities - HELPS PV Solar Rebate\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994431,\n label: \"City of Boston - Renew Boston Residential Retrofit Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994500,\n label: \"Energy Efficiency First Fuel Requirement (Gas and Electric)\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994557,\n label: \"Commonwealth Residential & Small-Scale Solar Hot Water Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994561,\n label: \"Taunton Municipal Lighting Plant - Residential Energy Star Appliance Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994595,\n label: \"Reading Municipal Light Department - Business Energy Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994605,\n label: \"Reading Municipal Light Department - Residential Renewable Energy Rebates\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994624,\n label: \"Alternative Energy Portfolio Standard\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994791,\n label: \"MassSAVE (Electric) - Commercial New Construction/Major Renovation Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994794,\n label: \"Gas Networks - Commercial Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994797,\n label: \"Mass Save (Gas) - Residential Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994798,\n label: \"Mass Save (Electric) - Large Commercial Retrofit Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994799,\n label: \"Mass Save (Electric) - Residential Energy Efficiency Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994807,\n label: \"Wellesley Municipal Light Plant - Residential Energy Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994918,\n label: \"City of Boston - Renew Boston Solar Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 994962,\n label: \"Commercial Solar Hot Water Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995038,\n label: \"Mass Save - Financing for Business Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995039,\n label: \"Commonwealth Organics-to-Energy Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995070,\n label: \"ReBuild Western Massachusetts Grant Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995071,\n label: \"ReBuild Western Massachusetts Loan Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995157,\n label: \"City of Cambridge - Cambridge Energy Alliance Solar Hot Water Grant\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995189,\n label: \"Hudson Light & Power - Photovoltaic Incentive Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995239,\n label: \"Chicopee Electric Light - Commercial Energy Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995289,\n label: \"City of Lowell - BLEU Projects Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995319,\n label: \"Taunton Municipal Lighting Plant - Residential and Non-Profit Weatherization Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995357,\n label: \"Commonwealth Woodstove Change-Out Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995359,\n label: \"Commercial Solar Hot Water Financing Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995380,\n label: \"Commonwealth Small Pellet Boiler Grant Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9913957,\n label: \"National Grid - Existing Facility Incentives\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995515,\n label: \"Solar Renewable Energy Certificates (SREC-II)\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995635,\n label: \"Residential & Small-Scale Air-Source Heat Pump Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995636,\n label: \"Residential & Small-Scale Ground-Source Heat Pump Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995644,\n label: \"Residential & Small-Scale Biomass Heating Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995678,\n label: \"Solar Renewable Energy Certificates (SREC-I)\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995679,\n label: \"Solar Renewable Energy Certificates (SREC-II)\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995782,\n label: \"Cape Light Compact- Residential Energy Efficiency Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995808,\n label: \"Leading By Example Solar Photovoltaic Canopy Grant Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995828,\n label: \"Mass Save (Electric) - Small Business Direct Install Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995850,\n label: \"Mass Solar Loan Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 995919,\n label: \"City of Boston - Green Building Standard\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9913956,\n label: \"Mass Save - New Construction/Major Renovations Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9913947,\n label: \"Columbia Gas of Massachusetts - Medium and Large Business Energy Efficiency Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9913952,\n label: \"Concord Municipal Light Plant - Energy Resources For Businesses\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9913955,\n label: \"National Grid - Building Operator Certification Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9914062,\n label: \"National Grid - Building Practices & Demonstration Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9914078,\n label: \"National Grid - Energy Profiler Online\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9916193,\n label: \"Holyoke Gas & Electric - Commercial Energy Audits\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9916282,\n label: \"Massachusetts Executive Office of Energy and Environmental Affairs - Energy Efficiency Assistance for Business\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9916286,\n label: \"Massachusetts Office of Technical Assistance and Technology - OTA Software Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9916287,\n label: \"Massachusetts Office of Technical Assistance and Technology - OTA Energy Publications\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9916289,\n label: \"U.S. Department of Energy - Massachusetts Energy Efficiency Partnership\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9917454,\n label: \"National Grid - Financing Solutions For Natural Gas Equipment\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9917458,\n label: \"National Grid - Power Quality Enhancements Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9917478,\n label: \"Berkshire Gas - GasNetworks Commercial & Industrial High Efficiency Heating Rebate Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9917480,\n label: \"National Grid - Demand Response\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9917481,\n label: \"National Grid - Enhanced Metering\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9917573,\n label: \"Massachusetts Division of Energy Resources - Education and Outreach Programs for Businesses\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9917574,\n label: \"Massachusetts Division of Energy Resources - Municipal Energy Efficiency\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9917578,\n label: \"Western Massachusetts Electric - Massachusetts Energy Efficiency Partnership\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9917727,\n label: \"Massachusetts Office of Technical Assistance and Technology - Energy Efficiency for Businesses & Institutions\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9918962,\n label: \"Hudson Light & Power - Commercial and Industrial Energy Audits\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9919774,\n label: \"Western Massachusetts Electric - Power Purchase\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9919888,\n label: \"Westfield Gas & Electric Light Dept. - Commercial & Industrial New Construction and Lost Opportunity Pilot Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9919911,\n label: \"Ipswich Municipal Light - Commercial & Industrial Energy Efficiency Programs\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9919913,\n label: \"Ipswich Municipal Light - Commercial & Industrial New Construction and Major Renovation Pilot Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9919914,\n label: \"Ipswich Municipal Light - Commercial & Industrial Renewable Energy and Demand Response Options\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9920099,\n label: \"Massachusetts Division of Energy Resources - Assessments and Audits\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9920123,\n label: \"Columbia Gas of Massachusetts - Small Business Energy Efficiency Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9920258,\n label: \"Chicopee Electric Light - Custom Retrofit GO Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9920625,\n label: \"Taunton Municipal Lighting Plant - Net Metering\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9921157,\n label: \"National Grid - Massachusetts Energy Efficiency Services\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9921171,\n label: \"National Grid - Rhode Island Energy Efficiency Services\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9921186,\n label: \"Mass Save - Small Business Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9921187,\n label: \"National Grid - Construction Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9921571,\n label: \"Unitil - Energy Saving Tips\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9921671,\n label: \"ISO New England - Demand Resources\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9921674,\n label: \"Northeast Energy Efficiency Council - Building Operator Certification (BOC)\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9922020,\n label: \"Northeast Energy Efficiency Partnerships - EM&V Forum\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9922036,\n label: \"Commercial Biomass Heating Grant Program\",\n states: [\n \"ma\"\n ]\n },\n {\n value: 9921635,\n label: \"FirstEnergy Solutions - Business Energy Analyzer\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 991477,\n label: \"ENERGY STAR Homes Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 995715,\n label: \"SREC-Based Financing Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 995716,\n label: \"SREC-Based Financing Program (ACE, JCP&L, RECO)\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 995717,\n label: \"SREC-Based Financing Program (ACE, JCP&L, RECO)\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 991465,\n label: \"South Jersey Gas - Residential Loan Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 995728,\n label: \"New Jersey Natural Gas- SAVEGREEN Commercial On-Bill Financing Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 99898,\n label: \"New Jersey - Green Power Purchasing\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 992979,\n label: \"New Jersey Natural Gas (NJNG) - Home Performance with Energy Star Rebate\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 995729,\n label: \"South Jersey Gas Commerical and Industrial Loan Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 991326,\n label: \"Combined Heat & Power (CHP) Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 993461,\n label: \"Clean Energy Solutions Capital Investment Loan/Grant Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 991249,\n label: \"Renewable Energy Business Venture Assistance Program (REBVAP)\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 99797,\n label: \"Interconnection Standards\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 991152,\n label: \"Sustainable Development Loan Fund\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 991151,\n label: \"NJ Clean Energy- WARMAdvantage Program (Electric and Gas)\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 994983,\n label: \"PSE&G - Multi-Family Residential Efficiency Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9916416,\n label: \"New Jersey Natural Gas - Energy-Saving Tips for Your Business\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 991855,\n label: \"Building Energy Code\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9916482,\n label: \"New Jersey Board of Public Utilities - Pay for Performance\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9916483,\n label: \"New Jersey Board of Public Utilities - Renewable Energy Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 992722,\n label: \"Residential Solar Rights\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 995012,\n label: \"Orange and Rockland Utilities (Electric) - HVAC Efficiency Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 994805,\n label: \"New Jersey Natural Gas - SAVEGREEN Residential On-Bill Financing Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9921638,\n label: \"First Energy - Business Energy Analyzer\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 993671,\n label: \"Solar Domestic Hot Water Pilot Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 99595,\n label: \"Renewable Energy Advanced Power Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 993678,\n label: \"Edison Innovation Clean Energy Fund\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 99589,\n label: \"New Jersey Renewable Energy Incentive Program (Sustainable Biopower)\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 991568,\n label: \"Energy Efficiency Product Standards\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 992910,\n label: \"PSE&G - Solar Loan Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 991150,\n label: \"COOLAdvantage Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 99565,\n label: \"Environmental Information Disclosure\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 992890,\n label: \"New Jersey Comfort Partners Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 991149,\n label: \"Clean Energy Financing for Businesses\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 993736,\n label: \"Grid-Connected Renewables Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 99219,\n label: \"Solar Energy Sales Tax Exemption\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 991148,\n label: \"Cogeneration Facility Sales Tax Exemption\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 993756,\n label: \"New Jersey Natural Gas - SAVEGREEN Residential Rebate Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 995205,\n label: \"Small Scale CHP and Fuel Cell Incentive Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 995811,\n label: \"NJ Clean Energy- Residential New Construction Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 99564,\n label: \"Renewables Portfolio Standard\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 994848,\n label: \"Edison Innovation Green Growth Fund Loans\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9917594,\n label: \"U.S. Department of Energy Industrial Assessment Center (IAC): Lehigh University\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9921919,\n label: \"New Jersey\\u2019s Clean Energy Program - Commercial Industrial and Local Government Programs\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 995873,\n label: \"New Jersey Energy Resilience Bank\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9922023,\n label: \"Northeast Energy Efficiency Partnerships - EM&V Forum\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 995109,\n label: \"Local Option - Property Assessed Clean Energy Financing\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 995567,\n label: \"Local Energy Audit Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 995568,\n label: \"Large Energy Users Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 992359,\n label: \"New Jersey SmartStart Buildings - New Construction and Retrofits\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 992615,\n label: \"South Jersey Gas - Residential Energy Efficiency Rebate Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9919788,\n label: \"New Jersey Board of Public Utilities - NJ Clean Energy Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9938,\n label: \"Net Metering\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9914025,\n label: \"New Jersey Board of Public Utilities - NJ SmartStart Buildings\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9914029,\n label: \"Atlantic City Electric - Energy Profiler Online\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 99168,\n label: \"Societal Benefits Charge\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9921541,\n label: \"FirstEnergy Solutions - Power Management Platform\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 993883,\n label: \"Renewable Energy Manufacturing Incentives (for End-Use PV Installations)\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 994548,\n label: \"Utility Solar Financing Incentive (ACE, JCP&L, RECO)\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 994588,\n label: \"PSE&G - Commercial Efficiency Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 991110,\n label: \"Solar Renewable Energy Certificates (SRECs)\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 993907,\n label: \"PSE&G - Residential Efficiency Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 993929,\n label: \"Solar and Wind Permitting Laws\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 994933,\n label: \"Clean Energy Solutions Energy Efficiency Revolving Loan Fund\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 991054,\n label: \"Renewable Energy Economic Development Program (REED)\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 991053,\n label: \"Clean Energy Financing for Local Schools and Governments (REDO Program)\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 993100,\n label: \"Property Tax Exemption for Renewable Energy Systems\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9919,\n label: \"Solar Easements\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9921920,\n label: \"New Jersey Manufacturing Extension Program - Operational Excellence Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9921921,\n label: \"New Jersey Board of Public Utilities - Commercial Customers\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 993966,\n label: \"New Jersey Direct Install Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 993031,\n label: \"NJ Clean Energy- ENERGY STAR Appliance Rebate program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 993014,\n label: \"High Performance Building Standards in New State Construction\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 994023,\n label: \"Solar Energy Option Requirement for Residential Developments\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 994026,\n label: \"Assessment of Farmland Hosting Renewable Energy Systems\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 994034,\n label: \"New Jersey - Residential Energy Efficient Appliance Rebate Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 994335,\n label: \"Clean Energy Solutions ARRA CHP Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 994560,\n label: \"Utility Solar Financing Programs (ACE, JCP&L, RECO)\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 993266,\n label: \"Edison Innovation Clean Energy Manufacturing Fund - Grants and Loans\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 994360,\n label: \"Wind Manufacturing Tax Credit\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9919892,\n label: \"South Jersey Gas - Business Services\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 991906,\n label: \"High Performance Schools Policy\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9920368,\n label: \"New Jersey's Clean Energy Program - Pay for Performance\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9920375,\n label: \"New Jersey's Clean Energy Program - Energy Benchmarking\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 9919893,\n label: \"South Jersey Gas - Business Services \\u05E0Commercial Accounts\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 993330,\n label: \"Pay for Performance Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 994982,\n label: \"PSE&G - Government and Non-Profit Facility Direct Install Efficiency Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 991502,\n label: \"Home Performance with ENERGY STAR Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 992978,\n label: \"Home Performance with ENERGY STAR Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 995165,\n label: \"Clean Energy Solutions Large Scale CHP and Fuel Cells Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 995687,\n label: \"Solar Renewable Energy Certificates (SRECs) Registration Program\",\n states: [\n \"nj\"\n ]\n },\n {\n value: 992014,\n label: \"Austin Energy - Small Business Energy Efficiency Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995254,\n label: \"Brownsville Public Utilities Board - Green Living Residential Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995304,\n label: \"Texas Gas Service - Residential Solar Water Heating Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992013,\n label: \"Austin Energy - Commercial Energy Management Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992012,\n label: \"Austin Energy - Residential Energy Efficiency Loan Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9921808,\n label: \"Xcel Energy - Energy At Risk Financial Analysis Tool\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992011,\n label: \"Austin Energy - Residential Energy Efficiency Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995352,\n label: \"TXU - Commercial Energy Efficiency Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992021,\n label: \"Bryan Texas Utilities - Low-Interest Insulation Loan Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9921810,\n label: \"Xcel Energy - Energy Management Systems\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 991900,\n label: \"Building Energy Code\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995411,\n label: \"Bryan Texas Utilities - SmartHOME Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 991594,\n label: \"Xcel Energy - Air Conditioner Distributor Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995447,\n label: \"Austin Energy - Value of Solar Residential Rate\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 991593,\n label: \"Xcel Energy - Residential and Hard-to-Reach Standard Offer Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 991592,\n label: \"Xcel Energy - Commercial and Industrial Standard Offer Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 991548,\n label: \"Texas-New Mexico Power Company - Energy Star Homes Market Transformation Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995490,\n label: \"Entergy Texas - Home Performance with ENERGY STAR\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9921817,\n label: \"Atmos Energy - Business Savings\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995545,\n label: \"El Paso Electric Company - Net Metering\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995547,\n label: \"San Antonio City Public Service (CPS Energy) - Net Metering\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995570,\n label: \"City of Denton - Green Power Purchasing\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995592,\n label: \"City of Forth Worth - Green Building Policy for Municipal Buildings\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995590,\n label: \"City of Fort Worth - Residential and Commercial Green Building Requirements\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995593,\n label: \"City of Houston - Residential and Commercial Green Building Requirements\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995594,\n label: \"City of El Paso - Green Building Policy for Municipal Buildings\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995595,\n label: \"City of El Paso - Residential and Commercial Green Building Requirements\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 991544,\n label: \"Texas-New Mexico Power Company - SCORE/CitySmart, Commercial Solutions, and Small Business Programs\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 991543,\n label: \"Texas-New Mexico Power Company - Residential, Hard-to-Reach, and High-Performance New Homes Programs\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 991542,\n label: \"Texas Gas Service - Commercial Water Heating Energy Efficiency Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 991540,\n label: \"Texas Gas Service - Food Service Equipment Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9921955,\n label: \"El Paso Electric Company - Tools, Tips, and Calculators\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995669,\n label: \"Austin Energy - Value of Solar Residential Rate\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 991536,\n label: \"Texas Gas Service - Residential Energy Efficiency Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 991538,\n label: \"Texas Gas Service - Commercial Energy Efficiency Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 991485,\n label: \"American Electric Power - Standard Offer Demand Response Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995741,\n label: \"CenterPoint Energy Healthcare Energy Efficiency Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995742,\n label: \"CenterPoint Energy Sustainable Schools Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995743,\n label: \"CenterPoint Energy New Homes Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995744,\n label: \"CenterPoint Energy Advanced Residential Lighting Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995745,\n label: \"CenterPoint Energy A/C Distributor Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995746,\n label: \"CenterPoint Energy's Energy Wise Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995748,\n label: \"CenterPoint Energy Low-Rise Multi Family Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 99182,\n label: \"Renewable Generation Requirement\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9921956,\n label: \"El Paso Electric Company - Energy Library\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 99173,\n label: \"Renewable Energy Systems Property Tax Exemption\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995858,\n label: \"Garland Power & Light - Solar Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995893,\n label: \"City of San Antonio - Sec. 35-398. - Renewable Energy Systems\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9921101,\n label: \"Pedernales Electric Cooperative - My Use Energy Analyzer\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9982,\n label: \"Solar and Wind Energy Business Franchise Tax Exemption\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995944,\n label: \"City of San Antonio - Energy Conservation Code\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 991134,\n label: \"LoanSTAR Revolving Loan Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9981,\n label: \"Solar and Wind Energy Device Franchise Tax Deduction\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9961,\n label: \"San Antonio City Public Service - Distributed Generation Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9915761,\n label: \"Austin Energy - Load Profiler\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9915763,\n label: \"Austin Energy - Energy Conservation Audit and Disclosure Ordinance\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 991088,\n label: \"Austin Energy - Residential Solar PV Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9921567,\n label: \"El Paso Electric - Energy Library\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993082,\n label: \"Oncor Electric Delivery - Commercial and Industrial Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993168,\n label: \"Oncor Electric Delivery - Solar Photovoltaic Standard Offer Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993006,\n label: \"Plano - Renewable Energy Purchasing Policy\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9915,\n label: \"Fuel Mix and Emissions Disclosure\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993004,\n label: \"City of Plano - Green Building Policy for Municipal Buildings\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992988,\n label: \"Oncor Electric Delivery - Data Center Energy Management Pilot Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993285,\n label: \"Garland Power & Light - Energy Efficiency Rebate Programs\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993298,\n label: \"Oncor Electric Delivery - Solar Water Heating Incentive Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993313,\n label: \"Guadalupe Valley Electric Cooperative - Renewable Energy Rebates\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993322,\n label: \"Guadalupe Valley Electric Cooperative - Residential Energy Efficiency Rebate Programs\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9921624,\n label: \"El Paso Electric - Tools, Tips, and Calculators\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993346,\n label: \"Entergy Texas - Home Performance with ENERGY STAR Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9921628,\n label: \"El Paso Electric Company - Large Commercial Solutions Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 99981,\n label: \"Ethanol and Biodiesel Production Incentive\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993400,\n label: \"Green Mountain Energy Renewable Rewards Buy-Back Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993419,\n label: \"Texas New Mexico Power Company - Solar PV Pilot Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993429,\n label: \"Entergy Texas - Solar PV Pilot Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993430,\n label: \"Denton Municipal Electric - Commercial Standard Offer Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993432,\n label: \"Pedernales Electric Cooperative - Commercial Energy Efficiency Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992947,\n label: \"Bryan Texas Utilities - Solar Hot Water Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 99897,\n label: \"City of Austin - Renewables Portfolio Standard\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 99805,\n label: \"Interconnection Standards\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993480,\n label: \"Denton Municipal Electric - GreenSense Solar PV/Thermal Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992946,\n label: \"Bryan Texas Utilities - Solar PV Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 99702,\n label: \"Hansford County Tax Abatement\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993630,\n label: \"New Braunfels Utilities - Energy Efficiency and Water Conservation Rebate Programs\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993660,\n label: \"AEP Texas - Commercial and Industrial Energy Efficiency Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993661,\n label: \"AEP Texas Central Company - SMART Source Solar PV Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993669,\n label: \"AEP Texas North Company - SMART Source Solar PV Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993670,\n label: \"AEP (SWEPCO) - SMART Source Solar PV Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992925,\n label: \"Austin Energy - Commercial New Construction Efficiency Rebates\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993727,\n label: \"City of Sunset Valley - PV Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993735,\n label: \"City of Sunset Valley - Solar Water Heating Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993742,\n label: \"Renewable Energy Demonstration Pilot Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993743,\n label: \"Department of Rural Affairs - Wind Energy for Desalination Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992887,\n label: \"City of Houston - Green Building Policy for Municipal Buildings\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992885,\n label: \"City of Houston - Green Power Purchasing\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992884,\n label: \"City of Dallas - Green Energy Purchasing\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993825,\n label: \"AEP SWEPCO - SCORE Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993827,\n label: \"AEP Texas Central Company - CitySmart Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993828,\n label: \"AEP Texas Central Company - Commercial Solutions Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993829,\n label: \"AEP Texas Central Company - SCORE Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993830,\n label: \"AEP Texas North Company - CitySmart Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993831,\n label: \"AEP (Central, SWEPCO and North) - Commercial Solutions Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993832,\n label: \"AEP Texas North Company - SCORE Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993833,\n label: \"CenterPoint Energy - SCORE and CitySmart Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993834,\n label: \"CenterPoint Energy - SCORE Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993835,\n label: \"Entergy Texas - CitySmart Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993838,\n label: \"El Paso Electric Company - Residential Solutions Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993840,\n label: \"El Paso Electric Company - Small Business and Large Commercial Programs\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992795,\n label: \"CPS Energy - Commercial Energy Efficiency Rebates\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 99530,\n label: \"Big Country Electric Coop - PV Water Pump Sales & Lease Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994917,\n label: \"CoServ - Solar Energy Rebate\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992794,\n label: \"CPS Energy - Solar PV Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992797,\n label: \"CPS Energy - Solar Hot Water Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992779,\n label: \"Advanced Clean Energy Project Grants\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992766,\n label: \"ENERGY STAR Sales Tax Holiday for Energy-Efficient Products\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992762,\n label: \"City of Austin - Green Power Purchasing\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992749,\n label: \"City of Austin - Residential and Commercial Green Building Requirements\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992741,\n label: \"City of Dallas - Green Building Policy for Municipal Buildings\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992730,\n label: \"Frisco - Municipal Green Building Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992729,\n label: \"City of Frisco - Residential and Commercial Green Building Requirements\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 99517,\n label: \"Austin Energy - Home Energy Loans\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993972,\n label: \"Austin Energy - Commercial Solar PV Incentive Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 99513,\n label: \"Austin Energy - Solar Loan Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 99511,\n label: \"Austin Energy - Solar Water Heating Rebate\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 993535,\n label: \"PACE Financing (Local Option - Contractual Assessments for Energy Efficient Improvements)\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 99337,\n label: \"Mandatory Renewable Energy Educational Materials\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9917413,\n label: \"Texas State Energy Conservation Office - Innovative Energy Demonstration Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994147,\n label: \"CPS Energy - Solartricity Producer Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994176,\n label: \"Green Mountain Energy Renewable Rewards Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994196,\n label: \"El Paso Electric Company - Solar PV Pilot Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994228,\n label: \"Bandera Electric Cooperative - Residential Heat Pump Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9917415,\n label: \"Texas State Energy Conservation Office - Texas Industries of the Future Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9915772,\n label: \"Brownsville Public Utilities Board - Customer Engineering-Energy Services\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9917418,\n label: \"Entergy Texas - Datalink\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9917433,\n label: \"Denton Municipal Electric - Load Profiler\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9917434,\n label: \"Lower Colorado River Authority - Energy Services\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9917437,\n label: \"Texas Renewable Energy Industries Association - General Info & Links\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994289,\n label: \"AEP SWEPCO - CitySmart Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9921636,\n label: \"Rio Grande Electric Coop - Interconnection\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994320,\n label: \"CPS Energy - Small Business Lighting Retrofit Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994322,\n label: \"City of San Antonio and CPS Energy - City Lights Small Business Energy Efficiency Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992653,\n label: \"Entergy Texas - SCORE, CitySmart, and Commercial Solutions Programs\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992652,\n label: \"Entergy Texas - Residential and Small Commercial Standard Offer Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994350,\n label: \"Texas - Residential Energy-Efficient Appliance Rebates\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992650,\n label: \"CenterPoint Energy - Residential and Small Commercial Efficiency Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992649,\n label: \"CenterPoint Energy - Commercial and Industrial Energy Efficiency Programs\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992648,\n label: \"Oncor Electric Delivery - Home Energy Efficiency Program (Texas)\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992647,\n label: \"Oncor Electric Delivery - Energy Star Homes Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992631,\n label: \"Bryan Texas Utilities - Commercial Energy Efficiency Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994363,\n label: \"CenterPoint Energy - ENERGY STAR Homes Efficiency Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9921750,\n label: \"Entergy Louisiana - DataLink\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994470,\n label: \"Garland Power & Light: Commercial Lighting Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994480,\n label: \"AEP (Central and North) - Residential Energy Efficiency Programs\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 99335,\n label: \"Alternative Energy in New State Construction\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992473,\n label: \"San Antonio City Public Service (CPS Energy) - Renewable Portfolio Goal\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992464,\n label: \"City of Austin - Green Building Policy for Municipal Buildings\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9915778,\n label: \"College Station Utilities - Energy Surveys\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992315,\n label: \"Energy Efficiency Goals and Requirements for Public Entities\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 99334,\n label: \"Certification of Solar Collectors\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9921793,\n label: \"Xcel Energy - Energy Design Assistance\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992091,\n label: \"Farmers Electric Cooperative - Residential Energy Efficiency Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992090,\n label: \"Guadalupe Valley Electric Cooperative - Conservation Plan 7 Loan Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992089,\n label: \"Magic Valley Electric Cooperative - Residential Energy Efficiency Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9915786,\n label: \"Entergy Texas - Commercial Solutions Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9921794,\n label: \"Xcel Energy - Online Energy Assessment\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994587,\n label: \"City of Brenham - Net Metering\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994593,\n label: \"El Paso Electric Company - SCORE Program for Counties, Municipalities, and Schools\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994594,\n label: \"AEP (Central and SWEPCO) - Coolsaver A/C Tune Up or Replacement\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9921800,\n label: \"Xcel Energy - Energy Audits and Studies\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994601,\n label: \"Oncor Electric Delivery - Government and Education Facilities Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994602,\n label: \"Oncor Electric Delivery - City and School Matching Grant Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9915792,\n label: \"Garland Power & Light - Energy Audit\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994622,\n label: \"Required Energy Efficiency Goals\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9917695,\n label: \"Brownsville Public Utilities Board - Customer Engineering-Energy Services\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9915798,\n label: \"New Braunfels Utilities - Energy Audit\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994658,\n label: \"City of Houston - Energy Efficiency Incentive Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992088,\n label: \"Pedernales Electric Cooperative - Residential Energy Efficiency Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994720,\n label: \"City of Houston - Property Tax Abatement for Green Commercial Buildings\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994748,\n label: \"City of San Antonio - Residential and Commercial Green Building Requirements\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994750,\n label: \"City of San Antonio - Green Building Policy for Municipal Buildings\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994751,\n label: \"City of San Antonio -Tax Abatement Scorecard Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994770,\n label: \"CoServ Electric Cooperative - Residential Energy Efficiency Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994771,\n label: \"CoServ Electric Cooperative - Commercial Energy Efficient Lighting Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994788,\n label: \"CPS Energy - New Commercial Construction Incentives\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994789,\n label: \"CPS Energy - New Residential Construction Incentives\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9917705,\n label: \"Denton Municipal Electric - Commercial Energy Services\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994792,\n label: \"City of Dallas - Green Building Expedited Plan Review\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994793,\n label: \"City of Dallas - Residential and Commercial Green Building Requirements\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9921802,\n label: \"Xcel Energy - Small Business Lighting\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994796,\n label: \"New Braunfels Utilities - Residential Solar Water Heater Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9917847,\n label: \"Kerrville Public Utility Board - Business Energy Audits\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 99327,\n label: \"Austin Energy - Net Metering\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 99288,\n label: \"Texas - Net Metering\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9918961,\n label: \"Wharton County Electric Coop - Energy Audits\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994864,\n label: \"City of Austin - Zoning Code\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994880,\n label: \"Solar Rights\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992087,\n label: \"Tri-County Electric Cooperative - Energy Efficient Water Heater Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9921803,\n label: \"Xcel Energy - Business Energy Advisor\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994911,\n label: \"Harris County - Property Tax Abatement for Green Commercial Buildings\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994912,\n label: \"Harris County - Green Building Policy for County Buildings\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 994948,\n label: \"Magic Valley Electric Cooperative - ENERGY STAR Builders Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992084,\n label: \"United Cooperative Services - Residential Energy Efficiency Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992039,\n label: \"Denton Municipal Electric - Residential GreenSense Energy Efficiency Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9918980,\n label: \"TXU Energy - iThermostat for Business\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995008,\n label: \"City of Friendswood - Property Tax Abatement for Green Commercial Buildings\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9918981,\n label: \"TXU Energy - PowerReport\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9919309,\n label: \"Garland Power & Light - Energy Depot for Business\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9919311,\n label: \"TXU Energy PowerReport\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992036,\n label: \"CPS Energy (Electric) - Residential Energy Efficiency Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9919314,\n label: \"AEP Texas Central Company - Commercial Solutions Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995117,\n label: \"City of San Marcos - Distributed Generation Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995118,\n label: \"City of San Marcos - Energy Efficient Home Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992029,\n label: \"College Station Utilities - Residential Energy Back II Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992028,\n label: \"Bryan Texas Utilities - Appliance Loan Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995126,\n label: \"AEP (SWEPCO) - Residential Energy Efficiency Programs\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995139,\n label: \"Austin Energy - Value of Solar Residential Rate\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995154,\n label: \"Austin Energy - Residential Solar Loan Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9919316,\n label: \"AEP Texas North Company - Commercial Solutions Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992026,\n label: \"Bryan Texas Utilities - Energy Efficiency Loan Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992020,\n label: \"Austin Energy - Energy Miser Vending Products Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995170,\n label: \"AEP (Central, SWEPCO and North) - SCORE Program for Schools\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995171,\n label: \"AEP (Central and North) - CitySmart Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995176,\n label: \"Sharyland Utilities - Commercial Standard Offer Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995177,\n label: \"Sharyland Utilities - Residential Standard Offer Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9919669,\n label: \"Mid South Synergy - Business Energy Advisor\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992016,\n label: \"Austin Energy - Free Home Energy Improvements Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 992015,\n label: \"Austin Energy - Multi-Family Energy Efficiency Rebate Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 995221,\n label: \"City of Plano - Smart Energy Loan Program\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 9921806,\n label: \"Xcel Energy - Business Solutions\",\n states: [\n \"tx\"\n ]\n },\n {\n value: 99727,\n label: \"Residential Energy Conservation Subsidy Exclusion (Corporate)\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99729,\n label: \"Renewable Energy Production Incentive (REPI)\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99722,\n label: \"USDA Rural Housing Service Loans\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 991709,\n label: \"Federal Appliance Standards\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9917041,\n label: \"The Hydraulic Institute\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9917045,\n label: \"Non-Ferrous Founders' Society - Energy Information\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 992393,\n label: \"Energy Goals and Standards for Federal Agencies\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 995681,\n label: \"USDA - Rural Energy for America Program (REAP) Energy Audit and Renewable Energy Development Assistance (EA/REDA) Program\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99726,\n label: \"Deductions for Clean-Fuel Vehicles and Refueling Property\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99724,\n label: \"Deductions for Clean-Fuel Vehicles and Refueling Property\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 992510,\n label: \"Clean Renewable Energy Bonds (CREBs)\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 992511,\n label: \"USDA - Rural Energy for America Program (REAP) Loan Guarantees\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99734,\n label: \"Renewable Electricity Production Tax Credit (PTC)\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99736,\n label: \"Alcohol Fuel Credit\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99737,\n label: \"Small Business Administration Loan Programs\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99742,\n label: \"Energy-Efficient Mortgages\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 995313,\n label: \"USDA - Biorefinery Assistance Program\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 991045,\n label: \"Weatherization Assistance Program\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 995631,\n label: \"FHA PowerSaver Loan Program\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9915956,\n label: \"E-Source - Business Energy Advisor\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9915955,\n label: \"Association of Energy Services Professionals - Brown Bag Energy Seminars\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 991060,\n label: \"Green Power Purchasing Goal for Federal Government\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99666,\n label: \"Residential Energy Conservation Subsidy Exclusion (Personal)\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 994359,\n label: \"USDA - High Energy Cost Grant Program\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9917967,\n label: \"U.S. Department of Agriculture - Bioenergy Program for Advanced Biofuels\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99112,\n label: \"Tax-Exempt Financing for Green Buildings, Renewable Energy & Brownfield Redevelopment\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9915954,\n label: \"Association of Energy Engineers - Energy Training Program\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 991096,\n label: \"Value-Added Producer Grant Program\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9915953,\n label: \"TPC Trainco - Industrial Energy Efficiency Training\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9922035,\n label: \"Southeast Energy Efficiency Alliance (SEEA) - Resource Center\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9917566,\n label: \"U.S. Department of the Treasury - Payments for Specified Energy Property in Lieu of Tax Credits\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9917544,\n label: \"U.S. Environmental Protection Agency - ENERGY STAR Training\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 995780,\n label: \"Fannie Mae Green Initiative- Loan Program\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99669,\n label: \"Federal Excise Tax Exemption for Gasohol\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 991235,\n label: \"Residential Renewable Energy Tax Credit\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99348,\n label: \"Conservation Security Program (CSP) Production Incentive\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 992774,\n label: \"Interconnection Standards for Small Generators\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9921219,\n label: \"CLEARresults\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9920736,\n label: \"Gaz M\\xe9tropolitain & Co., LP - Feasibility Studies\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99676,\n label: \"Modified Accelerated Cost-Recovery System (MACRS)\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99693,\n label: \"2003 Climate Change Fuel Cell Buy-Down Program\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 991271,\n label: \"Energy-Efficient Commercial Buildings Tax Deduction\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 991272,\n label: \"Energy-Efficient New Homes Tax Credit for Home Builders\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9920513,\n label: \"North Carolina Solar Center - Education, Analysis, and Modeling\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 991273,\n label: \"Energy-Efficient Appliance Manufacturing Tax Credit\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 991274,\n label: \"Residential Energy Efficiency Tax Credit\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 991280,\n label: \"Veterans Housing Guaranteed and Insured Loans\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 991616,\n label: \"Energy Goals and Standards for Federal Government\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99658,\n label: \"Business Energy Investment Tax Credit (ITC)\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99700,\n label: \"HUD Energy Efficient Mortgages\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9921075,\n label: \"Dominion Hope - West Virginia - Business Energy Center\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99917,\n label: \"USDA - Rural Energy for America Program (REAP) Grants\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9917056,\n label: \"Energy Sciences - Energy Management Services\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9916403,\n label: \"Touchstone Energy Cooperatives - Commercial/Business Energy Advisor\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9917051,\n label: \"Energy Solutions Center - Industrial Energy Efficiency Consortium\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 993280,\n label: \"U.S. Department of Treasury - Renewable Energy Grants\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9916924,\n label: \"National Center for Hydrogen Technology, University of North Dakota - Education and Outreach\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 993279,\n label: \"Qualifying Advanced Energy Manufacturing Investment Tax Credit\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9917050,\n label: \"Edison Electric Institute - Energy Efficiency\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9917049,\n label: \"American Public Power Association - Energy Efficiency Resource Central\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99918,\n label: \"Tribal Energy Program Grant\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9917047,\n label: \"Original Equipment Suppliers Association - Resources\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 993071,\n label: \"U.S. Department of Energy - Loan Guarantee Program\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 995725,\n label: \"Weatherization Assistance Program (WAP)\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 995712,\n label: \"Low Income Home Energy Assistance Program (LIHEAP)\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 9917039,\n label: \"U.S. Environmental Protection Agency - ENERGY STAR Guidelines for Energy Management\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 993098,\n label: \"Qualified Energy Conservation Bonds (QECBs)\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 99718,\n label: \"Energy Star Financing and Mortgages\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n },\n {\n value: 995316,\n label: \"USDA - Repowering Assistance Biorefinery Program\",\n states: [\n \"ma\",\n \"nj\",\n \"tx\",\n \"ct\"\n ]\n }\n].filter((incentive)=>$3cb2c4846bbd3aaa$var$available.includes(incentive.value));\n\n});\n\n\n\nparcelRegister(\"7dntZ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $540bf67a93d05e4a$export$2e2bcd8739ae039; });\n\nvar $cr2GM = parcelRequire(\"cr2GM\");\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $fBBlk = parcelRequire(\"fBBlk\");\n\nvar $lxEiN = parcelRequire(\"lxEiN\");\nclass $540bf67a93d05e4a$var$Store {\n get issueCount() {\n return this.threads.filter((thread)=>!thread.closed).length;\n }\n constructor(){\n (0, $cr2GM._)(this, \"threads\", []);\n (0, $cr2GM._)(this, \"projectId\", null);\n (0, $cr2GM._)(this, \"addMessageToThread\", (threadId, messageOptions)=>{\n const newThreads = [\n ...this.threads\n ];\n const threadIndex = newThreads.findIndex((thread)=>thread.id === threadId);\n if (threadIndex !== -1) {\n const id = `${Math.round(Math.random() * 900000)}`;\n newThreads[threadIndex].items.push({\n id: id,\n audience: messageOptions.audience,\n name: messageOptions.user.email,\n date: messageOptions.date || \"now\",\n user: {\n name: messageOptions.user.email,\n id: messageOptions.user.id,\n email: messageOptions.user.email\n },\n group: {\n name: messageOptions.user.group.name,\n type: \"vendor\",\n id: messageOptions.user.group.id\n },\n type: messageOptions.type,\n content: messageOptions.message\n });\n }\n });\n (0, $cr2GM._)(this, \"updateThread\", async (threadId, updatedData)=>{\n const newThreads = [\n ...this.threads\n ];\n const index = newThreads.findIndex((thread)=>thread.id === threadId);\n const thread = newThreads[index];\n newThreads[index] = (0, $edHbI._)((0, $2QP2i._)({}, thread), {\n image: updatedData.highlight.content.image,\n highlight: updatedData.highlight\n });\n // FIXME set image only for thread\n newThreads[index].items[0].image = updatedData.highlight.content.image;\n this.threads = newThreads;\n });\n (0, $cr2GM._)(this, \"addThread\", async (messageOptions)=>{\n const id = `${Math.random()}t_bla`;\n const date = `now`;\n const thread = {\n project_id: messageOptions.project_id,\n parent_id: messageOptions.parent_id,\n highlight: messageOptions.highlight,\n image: messageOptions.image,\n audience: messageOptions.audience,\n id: id,\n items: [\n {\n id: `${id}-item`,\n user: {\n name: messageOptions.user.email,\n id: messageOptions.user.id,\n email: messageOptions.user.email\n },\n name: messageOptions.user.email,\n date: date,\n group: messageOptions.user.group,\n type: messageOptions.type,\n content: messageOptions.message\n }\n ]\n };\n const newThreads = [\n ...this.threads,\n thread\n ];\n this.threads = newThreads;\n return id;\n });\n (0, $cr2GM._)(this, \"resolveThread\", (threadId)=>{\n const newThreads = [\n ...this.threads\n ];\n const threadIndex = newThreads.findIndex((thread)=>thread.id === threadId);\n if (threadIndex !== -1) {\n newThreads[threadIndex].closed = Math.floor(new Date() / 1000);\n this.threads = newThreads;\n }\n });\n (0, $cr2GM._)(this, \"reset\", ()=>{\n this.threads = [];\n });\n (0, $cr2GM._)(this, \"loadChat\", async ()=>{\n if (this.projectId) {\n const response = await (0, $lxEiN.default).Project.getChat(this.projectId);\n this.threads = response.data.data;\n }\n });\n (0, $cr2GM._)(this, \"update\", async ()=>{\n await (0, $lxEiN.default).Project.updateChat(this.projectId, this.threads);\n });\n (0, $cr2GM._)(this, \"setProjectId\", async (projectId)=>{\n this.projectId = projectId;\n });\n (0, $gOgWf.makeObservable)(this, {\n threads: (0, $gOgWf.observable),\n projectId: (0, $gOgWf.observable),\n addMessageToThread: (0, $gOgWf.action),\n resolveThread: (0, $gOgWf.action),\n issueCount: (0, $gOgWf.computed),\n addThread: (0, $gOgWf.action),\n update: (0, $gOgWf.action),\n reset: (0, $gOgWf.action),\n setProjectId: (0, $gOgWf.action)\n });\n }\n}\nconst $540bf67a93d05e4a$var$store = new $540bf67a93d05e4a$var$Store();\nconst $540bf67a93d05e4a$var$debouncedUpdate = (0, $fBBlk.debounce)($540bf67a93d05e4a$var$store.update, 200);\n(0, $gOgWf.reaction)(()=>JSON.stringify($540bf67a93d05e4a$var$store.threads), ()=>{\n $540bf67a93d05e4a$var$debouncedUpdate();\n});\n(0, $gOgWf.reaction)(()=>`${$540bf67a93d05e4a$var$store.projectId}`, ()=>{\n $540bf67a93d05e4a$var$store.loadChat();\n});\nvar $540bf67a93d05e4a$export$2e2bcd8739ae039 = $540bf67a93d05e4a$var$store;\n\n});\n\nparcelRegister(\"5KKaN\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $430510ac23ca4fe6$export$2e2bcd8739ae039; });\n\nvar $cr2GM = parcelRequire(\"cr2GM\");\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $a0rcO = parcelRequire(\"a0rcO\");\nclass $430510ac23ca4fe6$var$Store {\n get userIds() {\n return this.users.map((u)=>u.id);\n }\n get fileIds() {\n return this.files.map((u)=>u.id);\n }\n constructor(){\n (0, $cr2GM._)(this, \"building_id\", null);\n (0, $cr2GM._)(this, \"description\", \"\");\n (0, $cr2GM._)(this, \"done\", false);\n (0, $cr2GM._)(this, \"files\", []);\n (0, $cr2GM._)(this, \"groupId\", null);\n (0, $cr2GM._)(this, \"id\", null);\n (0, $cr2GM._)(this, \"isLoading\", false);\n (0, $cr2GM._)(this, \"project_id\", null);\n (0, $cr2GM._)(this, \"status\", null);\n (0, $cr2GM._)(this, \"title\", \"needs_action\");\n (0, $cr2GM._)(this, \"users\", []);\n (0, $cr2GM._)(this, \"clearTask\", ()=>{\n this.building_id = null;\n this.description = \"\";\n this.status = \"needs_action\";\n this.groupId = null;\n this.done = false;\n this.files = [];\n this.id = null;\n this.isLoading = false;\n this.project_id = null;\n this.title = \"\";\n this.users = [];\n });\n (0, $cr2GM._)(this, \"loadTask\", async (taskId)=>{\n this.isLoading = true;\n const task = await (0, $a0rcO.default).loadTask(taskId);\n this.building_id = task.building_id;\n this.description = task.description;\n this.done = task.done;\n this.status = task.status;\n this.files = task.files;\n this.groupId = task.group_id;\n this.id = task.id;\n this.isLoading = false;\n this.project_id = task.project_id;\n this.status = task.status;\n this.title = task.title;\n this.users = task.users;\n });\n (0, $cr2GM._)(this, \"deleteTask\", async (taskId)=>{\n await (0, $a0rcO.default).deleteTask(taskId);\n this.clearTask();\n });\n (0, $cr2GM._)(this, \"change\", (name, value)=>{\n this[name] = value;\n });\n (0, $cr2GM._)(this, \"setFiles\", (files)=>{\n this.files = files;\n });\n (0, $cr2GM._)(this, \"setDescription\", (description)=>{\n this.description = description;\n });\n (0, $cr2GM._)(this, \"setGroup\", (groupId)=>{\n this.groupId = groupId;\n });\n (0, $cr2GM._)(this, \"setFileId\", (fileTempId, fileId)=>{\n const index = this.files.findIndex((file)=>file.id === fileTempId);\n if (index > -1) this.files[index].id = fileId;\n });\n (0, $cr2GM._)(this, \"submit\", ()=>{\n const data = {\n description: this.description,\n status: this.status,\n title: this.title,\n users: this.users\n };\n if (this.id) return (0, $a0rcO.default).update(this.id, data);\n return (0, $a0rcO.default).create((0, $edHbI._)((0, $2QP2i._)({}, data), {\n group_id: this.groupId,\n building_id: this.building_id,\n project_id: this.project_id\n }));\n });\n (0, $gOgWf.makeObservable)(this, {\n building_id: (0, $gOgWf.observable),\n description: (0, $gOgWf.observable),\n done: (0, $gOgWf.observable),\n files: (0, $gOgWf.observable),\n groupId: (0, $gOgWf.observable),\n id: (0, $gOgWf.observable),\n isLoading: (0, $gOgWf.observable),\n project_id: (0, $gOgWf.observable),\n status: (0, $gOgWf.observable),\n title: (0, $gOgWf.observable),\n users: (0, $gOgWf.observable),\n clearTask: (0, $gOgWf.action),\n loadTask: (0, $gOgWf.action),\n deleteTask: (0, $gOgWf.action),\n change: (0, $gOgWf.action),\n setFiles: (0, $gOgWf.action),\n setDescription: (0, $gOgWf.action),\n setGroup: (0, $gOgWf.action),\n userIds: (0, $gOgWf.computed),\n fileIds: (0, $gOgWf.computed),\n setFileId: (0, $gOgWf.action),\n submit: (0, $gOgWf.action)\n });\n }\n}\nconst $430510ac23ca4fe6$var$store = new $430510ac23ca4fe6$var$Store();\nvar $430510ac23ca4fe6$export$2e2bcd8739ae039 = $430510ac23ca4fe6$var$store;\n\n});\n\nparcelRegister(\"4WMcN\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $39a1f8c4f702558f$export$2e2bcd8739ae039; });\n\nvar $cr2GM = parcelRequire(\"cr2GM\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $lxEiN = parcelRequire(\"lxEiN\");\nclass $39a1f8c4f702558f$var$Store {\n constructor(){\n (0, $cr2GM._)(this, \"questions\", [\n {\n id: \"tax_liability\",\n text: \"Do you have a tax liability?\",\n type: \"checkbox\",\n value: false\n },\n {\n id: \"non_profit\",\n text: \"Is the company a non-profit ?\",\n type: \"checkbox\",\n value: false\n },\n {\n id: \"is_esco\",\n text: \"Are you on an ESCO?\",\n type: \"checkbox\",\n value: false\n },\n {\n id: \"has_nat_gas\",\n text: \"Do you have existing Natural Gas infrastructure?\",\n type: \"checkbox\",\n value: false\n },\n {\n id: \"gas_utility\",\n text: \"Gas Utility Name\",\n type: \"text\",\n value: \"\"\n },\n {\n id: \"electric_rate\",\n text: \"Current Electric rate\",\n type: \"text\",\n value: \"\"\n },\n {\n id: \"gas_rate\",\n text: \"Current Gas rate\",\n type: \"text\",\n value: \"\"\n }\n ]);\n (0, $cr2GM._)(this, \"setAnswer\", (questionId, value)=>{\n const idx = this.questions.findIndex((q)=>q.id === questionId);\n const question = this.questions[idx];\n if (question.type === \"checkbox\") this.questions[idx].value = Boolean(value);\n else this.questions[idx].value = value;\n });\n (0, $cr2GM._)(this, \"setAnswers\", (answers)=>{\n if (!answers) return;\n answers.forEach((answer)=>{\n this.setAnswer(answer.id, answer.value);\n });\n });\n (0, $cr2GM._)(this, \"addSurvey\", async (projectId)=>{\n const answers = this.questions.map(({ id: id, value: value, checked: checked })=>({\n id: id,\n value: value,\n checked: checked\n }));\n const { data: data } = await (0, $lxEiN.default).Survey.addSurvey(projectId, {\n data: answers\n });\n return data;\n });\n (0, $gOgWf.makeObservable)(this, {\n questions: (0, $gOgWf.observable),\n setAnswer: (0, $gOgWf.action),\n setAnswers: (0, $gOgWf.action),\n addSurvey: (0, $gOgWf.action)\n });\n }\n}\nconst $39a1f8c4f702558f$var$store = new $39a1f8c4f702558f$var$Store();\nvar $39a1f8c4f702558f$export$2e2bcd8739ae039 = $39a1f8c4f702558f$var$store;\n\n});\n\nparcelRegister(\"iuVwc\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $d777a543714ff4d2$export$2e2bcd8739ae039; });\n\nvar $cr2GM = parcelRequire(\"cr2GM\");\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $fBBlk = parcelRequire(\"fBBlk\");\n\nvar $cI9tr = parcelRequire(\"cI9tr\");\n\nvar $4WgAH = parcelRequire(\"4WgAH\");\n\nvar $brBQs = parcelRequire(\"brBQs\");\n\nvar $kH9gy = parcelRequire(\"kH9gy\");\n\nvar $lxEiN = parcelRequire(\"lxEiN\");\nconst $d777a543714ff4d2$var$INITIAL_VIEW_STATE = {\n latitude: 41.8825763,\n longitude: -71.3629619,\n zoom: 17,\n maxZoom: 18,\n pitch: 50,\n bearing: 0\n};\nconst $d777a543714ff4d2$var$MODES = [\n {\n id: \"drawPolyline\",\n text: \"Draw Polyline\",\n handler: new (0, $cI9tr.DrawLineStringMode)()\n },\n {\n id: \"drawPolygon\",\n text: \"Draw Polygon\",\n handler: new (0, $cI9tr.DrawPolygonMode)()\n },\n {\n id: \"drawBuilding\",\n text: \"Draw Building\",\n handler: new (0, $cI9tr.DrawPolygonMode)()\n },\n {\n id: \"drawText\",\n text: \"Add Text\",\n handler: new (0, $cI9tr.DrawPointMode)()\n },\n {\n id: \"drawPoint\",\n text: \"Draw Polygon\",\n handler: new (0, $cI9tr.DrawPointMode)()\n },\n {\n id: \"view\",\n text: \"Edit Feature\",\n handler: new (0, $cI9tr.ViewMode)()\n },\n {\n id: \"rotate\",\n text: \"Rotate\",\n handler: new (0, $cI9tr.RotateMode)()\n },\n {\n id: \"elevation\",\n text: \"Elevation\",\n handler: new (0, $cI9tr.ElevationMode)()\n },\n {\n id: \"translate\",\n text: \"Translate\",\n handler: new (0, $cI9tr.TranslateMode)()\n },\n {\n id: \"modify\",\n text: \"Edit Feature\",\n handler: new (0, $cI9tr.ModifyMode)()\n }\n];\nclass $d777a543714ff4d2$var$EditorStore {\n addFeature(feature) {\n this.features.push(feature);\n }\n get featureCollection() {\n return {\n type: \"FeatureCollection\",\n features: [\n ...this.features\n ]\n };\n }\n get projectId() {\n var _this_datasetId, _this_currentDataset_id, _this_currentDataset;\n if ((_this_datasetId = this.datasetId) === null || _this_datasetId === void 0 ? void 0 : _this_datasetId.startsWith(\"pr_\")) return (_this_currentDataset = this.currentDataset) === null || _this_currentDataset === void 0 ? void 0 : (_this_currentDataset_id = _this_currentDataset.id) === null || _this_currentDataset_id === void 0 ? void 0 : _this_currentDataset_id.replace(\"pr_\", \"\");\n return null;\n }\n get datasetId() {\n var _this_currentDataset;\n return (_this_currentDataset = this.currentDataset) === null || _this_currentDataset === void 0 ? void 0 : _this_currentDataset.id;\n }\n constructor(){\n (0, $cr2GM._)(this, \"viewState\", $d777a543714ff4d2$var$INITIAL_VIEW_STATE);\n (0, $cr2GM._)(this, \"isLoadingFeatures\", false);\n (0, $cr2GM._)(this, \"pickedResults\", new Set([]));\n (0, $cr2GM._)(this, \"resultMap\", new Map());\n (0, $cr2GM._)(this, \"currentDataset\", null);\n (0, $cr2GM._)(this, \"deletedFeatures\", []);\n (0, $cr2GM._)(this, \"currentLayer\", null);\n (0, $cr2GM._)(this, \"datasets\", []);\n (0, $cr2GM._)(this, \"editMode\", $d777a543714ff4d2$var$MODES.find((mode)=>mode.id === \"view\"));\n (0, $cr2GM._)(this, \"features\", []);\n (0, $cr2GM._)(this, \"modal\", false);\n (0, $cr2GM._)(this, \"mapBounds\", null);\n (0, $cr2GM._)(this, \"layers\", []);\n (0, $cr2GM._)(this, \"arcGISLayers\", []);\n (0, $cr2GM._)(this, \"show3dTiles\", false);\n (0, $cr2GM._)(this, \"searchResults\", []);\n (0, $cr2GM._)(this, \"searchTerm\", null);\n (0, $cr2GM._)(this, \"getFeature\", (featureId)=>{\n return this.features.find((feature)=>feature.id === featureId);\n });\n (0, $cr2GM._)(this, \"setSearchTerm\", (term)=>{\n this.searchTerm = term;\n });\n (0, $cr2GM._)(this, \"setSearchResults\", (results)=>{\n this.searchResults = results;\n });\n (0, $cr2GM._)(this, \"setViewState\", (viewState)=>{\n this.viewState = viewState;\n });\n (0, $cr2GM._)(this, \"search\", async ()=>{\n var _UserStore_user;\n // TODO remove groupId\n const groupId = (_UserStore_user = (0, $brBQs.default).user) === null || _UserStore_user === void 0 ? void 0 : _UserStore_user.group.id;\n const response = await (0, $lxEiN.default).Dataset.search(this.searchTerm, groupId);\n this.setSearchResults(response.data.data);\n });\n (0, $cr2GM._)(this, \"reset\", ()=>{\n this.currentDataset = null;\n this.editMode = $d777a543714ff4d2$var$MODES.find((mode)=>mode.id === \"view\");\n this.features = [];\n this.modal = false;\n });\n (0, $cr2GM._)(this, \"deleteFeature\", async (id)=>{\n this.deletedFeatures = [\n ...this.deletedFeatures,\n id\n ];\n (0, $lxEiN.default).Dataset.deleteFeature(this.currentDataset.id, id);\n const resultMap = new Map(this.resultMap);\n resultMap.delete(id);\n this.resultMap = resultMap;\n this.features = this.features.filter((feature)=>feature.id !== id);\n // ProjectDetailStore.removeBuilding(id.replace('pb_', ''));\n });\n (0, $cr2GM._)(this, \"getLayers\", async ()=>{\n var _this_currentDataset;\n if (!((_this_currentDataset = this.currentDataset) === null || _this_currentDataset === void 0 ? void 0 : _this_currentDataset.id)) return;\n const response = await (0, $lxEiN.default).Dataset.getLayers(this.currentDataset.id);\n this.layers = response.data.data;\n });\n (0, $cr2GM._)(this, \"deleteAll\", ()=>{\n // this.features.clear();\n });\n (0, $cr2GM._)(this, \"setFeatures\", (features)=>{\n this.features = features;\n });\n (0, $cr2GM._)(this, \"updateLayer\", async (datasetId, layerId, data)=>{\n const newLayers = [\n ...this.layers\n ];\n const index = newLayers.findIndex((layer)=>layer.id === layerId);\n newLayers[index] = (0, $2QP2i._)({}, newLayers[index], data);\n this.layers = newLayers;\n await (0, $lxEiN.default).Dataset.updateLayer(datasetId, layerId, data);\n });\n (0, $cr2GM._)(this, \"updateDataset\", async (datasetId, data)=>{\n await (0, $lxEiN.default).Dataset.updateDataset(datasetId, data);\n });\n (0, $cr2GM._)(this, \"getDatasetFeatures\", async ()=>{\n var _this_currentLayer;\n if (!this.currentDataset) return;\n const response = await (0, $lxEiN.default).Dataset.getFeatures(this.currentDataset.id);\n this.features = [];\n this.resultMap = new Map();\n this.setFeatures(response.data.data);\n this.filterResults({\n layerId: (_this_currentLayer = this.currentLayer) === null || _this_currentLayer === void 0 ? void 0 : _this_currentLayer.id\n });\n return response.data.data;\n });\n (0, $cr2GM._)(this, \"getLayerFeatures\", async (layerId)=>{\n const response = await (0, $lxEiN.default).Dataset.getFeatures(this.currentDataset.id, layerId);\n this.features = response.data.data;\n return response.data.data;\n });\n (0, $cr2GM._)(this, \"setCurrentLayer\", async (datasetId, layerId)=>{\n var _this_currentLayer, _this_currentDataset;\n if (((_this_currentLayer = this.currentLayer) === null || _this_currentLayer === void 0 ? void 0 : _this_currentLayer.id) === layerId) return;\n const response = await (0, $lxEiN.default).Dataset.getLayer(datasetId, layerId);\n if (((_this_currentDataset = this.currentDataset) === null || _this_currentDataset === void 0 ? void 0 : _this_currentDataset.id) !== response.data.data.dataset.id) this.currentDataset = response.data.data.dataset;\n this.currentLayer = response.data.data;\n return this.currentLayer;\n });\n (0, $cr2GM._)(this, \"setModal\", (modal)=>{\n this.modal = modal;\n });\n (0, $cr2GM._)(this, \"setMapBounds\", (bounds)=>{\n this.mapBounds = bounds;\n });\n (0, $cr2GM._)(this, \"updateFeature\", async (feature)=>{\n // axios.post(`/dataset/${datasetId}/${feature.id}`, feature);\n (0, $lxEiN.default).Dataset.updateFeature(this.datasetId, feature);\n });\n (0, $cr2GM._)(this, \"setArcGISLayers\", (layers)=>{\n this.arcGISLayers = layers;\n });\n (0, $cr2GM._)(this, \"createFeature\", async (feature)=>{\n const { datasetId: datasetId } = this;\n if (datasetId === \"create_project\") return;\n if (this.currentDataset.type === \"project\") {\n const data = await (0, $4WgAH.default).createProjectBuilding(datasetId, feature);\n (0, $kH9gy.default).addBuilding(data);\n return;\n }\n (0, $lxEiN.default).Dataset.createFeature(datasetId, feature);\n });\n (0, $cr2GM._)(this, \"getDatasets\", async ()=>{\n const { data: data } = await (0, $lxEiN.default).Dataset.get();\n this.datasets = data.data;\n });\n (0, $cr2GM._)(this, \"createDataset\", async (options)=>{\n const response = await (0, $lxEiN.default).Dataset.createDataset(options);\n this.getDatasets();\n return response.data.data;\n });\n (0, $cr2GM._)(this, \"createLayer\", async (data)=>{\n await (0, $lxEiN.default).Dataset.createLayer(this.currentDataset.id, data);\n this.getLayers(this.currentDataset.id);\n });\n (0, $cr2GM._)(this, \"deleteDataset\", async (datasetId)=>{\n this.datasets = this.datasets.filter((dataset)=>dataset.id !== datasetId);\n await (0, $lxEiN.default).Dataset.deleteDataset(datasetId);\n });\n (0, $cr2GM._)(this, \"deleteLayer\", async (datasetId, layerId)=>{\n const newLayers = [\n ...this.layers\n ].filter((layer)=>layer.id !== layerId);\n this.layers = newLayers;\n await (0, $lxEiN.default).Dataset.deleteLayer(datasetId, layerId);\n });\n (0, $cr2GM._)(this, \"setCurrentDataset\", async (dataset)=>{\n var _this_currentDataset;\n // console.log('setCurrentDataset', dataset);\n if (typeof dataset === \"string\") {\n var _this_currentDataset1;\n if (dataset === ((_this_currentDataset1 = this.currentDataset) === null || _this_currentDataset1 === void 0 ? void 0 : _this_currentDataset1.id)) return;\n // console.log('setCurrentDataset1');\n const response = await (0, $lxEiN.default).Dataset.getDataset(dataset);\n // console.log('setCurrentDataset2', response.data.data);\n this.currentDataset = response.data.data;\n return;\n }\n if (((_this_currentDataset = this.currentDataset) === null || _this_currentDataset === void 0 ? void 0 : _this_currentDataset.id) !== dataset.id) this.deleteAll();\n this.currentDataset = dataset;\n });\n (0, $cr2GM._)(this, \"setCurrentDatasetLayers\", (datasetIds)=>{\n this.currentDataset = (0, $edHbI._)((0, $2QP2i._)({}, this.currentDataset), {\n datasets: datasetIds\n });\n });\n (0, $cr2GM._)(this, \"setCurrentDatasetName\", async (name)=>{\n this.currentDataset = (0, $edHbI._)((0, $2QP2i._)({}, this.currentDataset), {\n name: name\n });\n const newDatasets = [\n ...this.datasets\n ];\n const index = newDatasets.findIndex((dataset)=>dataset.id === this.currentDataset.id);\n if (index > -1) newDatasets[index].name = name;\n this.datasets = newDatasets;\n await (0, $lxEiN.default).Dataset.updateDataset(this.currentDataset.id, {\n name: name\n });\n });\n (0, $cr2GM._)(this, \"getCurrentDataset\", ()=>{\n return this.datasets.find((d)=>d.current === true);\n });\n (0, $cr2GM._)(this, \"setSubdomains\", (subdomains)=>{\n this.currentDataset.subdomains = subdomains;\n });\n (0, $cr2GM._)(this, \"setEditMode\", (modeId)=>{\n const mode = $d777a543714ff4d2$var$MODES.find((mode)=>mode.id === modeId);\n if (!mode) return $d777a543714ff4d2$var$MODES.find((mode)=>mode.id === \"view\");\n this.editMode = mode;\n });\n (0, $cr2GM._)(this, \"filterResults\", ({ layerId: layerId })=>{\n const arr = this.features.filter((feature)=>{\n // filter out additional datasets\n if (feature.dataset_id !== this.datasetId) return false;\n if (layerId === \"uncategorized\" || layerId === null) return feature.layer_id === null || feature.layer_id === \"uncategorized\";\n return feature.layer_id === layerId;\n }).map((feature)=>{\n return [\n feature.id,\n feature\n ];\n });\n this.resultMap = new Map(arr);\n });\n (0, $cr2GM._)(this, \"setShow3dTiles\", (show3dTiles)=>{\n this.show3dTiles = show3dTiles;\n });\n (0, $gOgWf.makeObservable)(this, {\n show3dTiles: (0, $gOgWf.observable),\n viewState: (0, $gOgWf.observable),\n isLoadingFeatures: (0, $gOgWf.observable),\n pickedResults: (0, $gOgWf.observable),\n resultMap: (0, $gOgWf.observable),\n currentDataset: (0, $gOgWf.observable),\n arcGISLayers: (0, $gOgWf.observable),\n deletedFeatures: (0, $gOgWf.observable),\n currentLayer: (0, $gOgWf.observable),\n datasets: (0, $gOgWf.observable),\n editMode: (0, $gOgWf.observable),\n features: (0, $gOgWf.observable),\n modal: (0, $gOgWf.observable),\n mapBounds: (0, $gOgWf.observable),\n layers: (0, $gOgWf.observable),\n searchResults: (0, $gOgWf.observable),\n searchTerm: (0, $gOgWf.observable),\n getFeature: (0, $gOgWf.action),\n setSearchTerm: (0, $gOgWf.action),\n setSearchResults: (0, $gOgWf.action),\n setViewState: (0, $gOgWf.action),\n search: (0, $gOgWf.action),\n reset: (0, $gOgWf.action),\n deleteFeature: (0, $gOgWf.action),\n getLayers: (0, $gOgWf.action),\n addFeature: (0, $gOgWf.action),\n deleteAll: (0, $gOgWf.action),\n setFeatures: (0, $gOgWf.action),\n updateLayer: (0, $gOgWf.action),\n updateDataset: (0, $gOgWf.action),\n featureCollection: (0, $gOgWf.computed),\n projectId: (0, $gOgWf.computed),\n datasetId: (0, $gOgWf.computed),\n getDatasetFeatures: (0, $gOgWf.action),\n getLayerFeatures: (0, $gOgWf.action),\n setCurrentLayer: (0, $gOgWf.action),\n setModal: (0, $gOgWf.action),\n setMapBounds: (0, $gOgWf.action),\n updateFeature: (0, $gOgWf.action),\n createFeature: (0, $gOgWf.action),\n getDatasets: (0, $gOgWf.action),\n createDataset: (0, $gOgWf.action),\n createLayer: (0, $gOgWf.action),\n deleteDataset: (0, $gOgWf.action),\n deleteLayer: (0, $gOgWf.action),\n setCurrentDataset: (0, $gOgWf.action),\n setCurrentDatasetLayers: (0, $gOgWf.action),\n setCurrentDatasetName: (0, $gOgWf.action),\n getCurrentDataset: (0, $gOgWf.action),\n setSubdomains: (0, $gOgWf.action),\n setEditMode: (0, $gOgWf.action),\n filterResults: (0, $gOgWf.action)\n });\n }\n}\nconst $d777a543714ff4d2$var$store = new $d777a543714ff4d2$var$EditorStore();\n(0, $gOgWf.reaction)(()=>JSON.stringify([\n $d777a543714ff4d2$var$store.searchTerm\n ]), (0, $fBBlk.debounce)(()=>{\n if ($d777a543714ff4d2$var$store.searchTerm) $d777a543714ff4d2$var$store.search();\n else $d777a543714ff4d2$var$store.setSearchResults([]);\n}, 200));\n(0, $gOgWf.reaction)(()=>JSON.stringify([\n $d777a543714ff4d2$var$store.currentDataset\n ]), ()=>{\n var _store_currentDataset, _store_currentDataset1;\n if ((_store_currentDataset = $d777a543714ff4d2$var$store.currentDataset) === null || _store_currentDataset === void 0 ? void 0 : _store_currentDataset.id) $d777a543714ff4d2$var$store.getLayers((_store_currentDataset1 = $d777a543714ff4d2$var$store.currentDataset) === null || _store_currentDataset1 === void 0 ? void 0 : _store_currentDataset1.id);\n});\n(0, $gOgWf.reaction)(()=>$d777a543714ff4d2$var$store.datasetId, ()=>{\n if ($d777a543714ff4d2$var$store.datasetId && $d777a543714ff4d2$var$store.datasetId !== \"create_project\") $d777a543714ff4d2$var$store.getDatasetFeatures();\n});\n(0, $gOgWf.reaction)(()=>{\n var _store_currentLayer;\n return JSON.stringify((_store_currentLayer = $d777a543714ff4d2$var$store.currentLayer) === null || _store_currentLayer === void 0 ? void 0 : _store_currentLayer.id);\n}, ()=>{\n var _store_currentLayer;\n $d777a543714ff4d2$var$store.filterResults({\n layerId: (_store_currentLayer = $d777a543714ff4d2$var$store.currentLayer) === null || _store_currentLayer === void 0 ? void 0 : _store_currentLayer.id\n });\n});\nvar $d777a543714ff4d2$export$2e2bcd8739ae039 = $d777a543714ff4d2$var$store;\n\n});\nparcelRegister(\"cI9tr\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(module.exports, \"ArrowStyles\", {\n enumerable: true,\n get: function get() {\n return $4TuXT.ArrowStyles;\n }\n});\nObject.defineProperty(module.exports, \"DEFAULT_ARROWS\", {\n enumerable: true,\n get: function get() {\n return $4TuXT.DEFAULT_ARROWS;\n }\n});\nObject.defineProperty(module.exports, \"MAX_ARROWS\", {\n enumerable: true,\n get: function get() {\n return $4TuXT.MAX_ARROWS;\n }\n});\nObject.defineProperty(module.exports, \"SELECTION_TYPE\", {\n enumerable: true,\n get: function get() {\n return $cY7II.SELECTION_TYPE;\n }\n});\nObject.defineProperty(module.exports, \"Feature\", {\n enumerable: true,\n get: function get() {\n return $9410f162e13c7cc8$var$_feature[\"default\"];\n }\n});\nObject.defineProperty(module.exports, \"LayerMouseEvent\", {\n enumerable: true,\n get: function get() {\n return $9410f162e13c7cc8$var$_layerMouseEvent[\"default\"];\n }\n});\nObject.defineProperty(module.exports, \"NebulaLayer\", {\n enumerable: true,\n get: function get() {\n return $9410f162e13c7cc8$var$_nebulaLayer[\"default\"];\n }\n});\nObject.defineProperty(module.exports, \"JunctionsLayer\", {\n enumerable: true,\n get: function get() {\n return $9410f162e13c7cc8$var$_junctionsLayer[\"default\"];\n }\n});\nObject.defineProperty(module.exports, \"TextsLayer\", {\n enumerable: true,\n get: function get() {\n return $9410f162e13c7cc8$var$_textsLayer[\"default\"];\n }\n});\nObject.defineProperty(module.exports, \"SegmentsLayer\", {\n enumerable: true,\n get: function get() {\n return $9410f162e13c7cc8$var$_segmentsLayer[\"default\"];\n }\n});\nObject.defineProperty(module.exports, \"NebulaCore\", {\n enumerable: true,\n get: function get() {\n return $9410f162e13c7cc8$var$_nebula[\"default\"];\n }\n});\nObject.defineProperty(module.exports, \"PROJECTED_PIXEL_SIZE_MULTIPLIER\", {\n enumerable: true,\n get: function get() {\n return $bEXHX.PROJECTED_PIXEL_SIZE_MULTIPLIER;\n }\n});\nObject.defineProperty(module.exports, \"toDeckColor\", {\n enumerable: true,\n get: function get() {\n return $h5pu5.toDeckColor;\n }\n});\nObject.defineProperty(module.exports, \"EditableGeoJsonLayer\", {\n enumerable: true,\n get: function get() {\n return $4agoo.EditableGeoJsonLayer;\n }\n});\nObject.defineProperty(module.exports, \"SelectionLayer\", {\n enumerable: true,\n get: function get() {\n return $4agoo.SelectionLayer;\n }\n});\nObject.defineProperty(module.exports, \"ElevatedEditHandleLayer\", {\n enumerable: true,\n get: function get() {\n return $4agoo.ElevatedEditHandleLayer;\n }\n});\nObject.defineProperty(module.exports, \"PathOutlineLayer\", {\n enumerable: true,\n get: function get() {\n return $4agoo.PathOutlineLayer;\n }\n});\nObject.defineProperty(module.exports, \"PathMarkerLayer\", {\n enumerable: true,\n get: function get() {\n return $4agoo.PathMarkerLayer;\n }\n});\nObject.defineProperty(module.exports, \"GeoJsonEditMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.GeoJsonEditMode;\n }\n});\nObject.defineProperty(module.exports, \"ModifyMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.ModifyMode;\n }\n});\nObject.defineProperty(module.exports, \"ResizeCircleMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.ResizeCircleMode;\n }\n});\nObject.defineProperty(module.exports, \"TranslateMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.TranslateMode;\n }\n});\nObject.defineProperty(module.exports, \"ScaleMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.ScaleMode;\n }\n});\nObject.defineProperty(module.exports, \"RotateMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.RotateMode;\n }\n});\nObject.defineProperty(module.exports, \"DuplicateMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.DuplicateMode;\n }\n});\nObject.defineProperty(module.exports, \"ExtendLineStringMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.ExtendLineStringMode;\n }\n});\nObject.defineProperty(module.exports, \"SplitPolygonMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.SplitPolygonMode;\n }\n});\nObject.defineProperty(module.exports, \"ExtrudeMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.ExtrudeMode;\n }\n});\nObject.defineProperty(module.exports, \"ElevationMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.ElevationMode;\n }\n});\nObject.defineProperty(module.exports, \"TransformMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.TransformMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawPointMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.DrawPointMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawLineStringMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.DrawLineStringMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawPolygonMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.DrawPolygonMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawRectangleMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.DrawRectangleMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawSquareMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.DrawSquareMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawRectangleFromCenterMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.DrawRectangleFromCenterMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawSquareFromCenterMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.DrawSquareFromCenterMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawCircleByDiameterMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.DrawCircleByDiameterMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawCircleFromCenterMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.DrawCircleFromCenterMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawEllipseByBoundingBoxMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.DrawEllipseByBoundingBoxMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawEllipseUsingThreePointsMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.DrawEllipseUsingThreePointsMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawRectangleUsingThreePointsMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.DrawRectangleUsingThreePointsMode;\n }\n});\nObject.defineProperty(module.exports, \"Draw90DegreePolygonMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.Draw90DegreePolygonMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawPolygonByDraggingMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.DrawPolygonByDraggingMode;\n }\n});\nObject.defineProperty(module.exports, \"ImmutableFeatureCollection\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.ImmutableFeatureCollection;\n }\n});\nObject.defineProperty(module.exports, \"ViewMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.ViewMode;\n }\n});\nObject.defineProperty(module.exports, \"MeasureDistanceMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.MeasureDistanceMode;\n }\n});\nObject.defineProperty(module.exports, \"MeasureAreaMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.MeasureAreaMode;\n }\n});\nObject.defineProperty(module.exports, \"MeasureAngleMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.MeasureAngleMode;\n }\n});\nObject.defineProperty(module.exports, \"CompositeMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.CompositeMode;\n }\n});\nObject.defineProperty(module.exports, \"SnappableMode\", {\n enumerable: true,\n get: function get() {\n return $cQSdn.SnappableMode;\n }\n});\n\nvar $4TuXT = parcelRequire(\"4TuXT\");\n\nvar $cY7II = parcelRequire(\"cY7II\");\n\nvar $9410f162e13c7cc8$var$_feature = $9410f162e13c7cc8$var$_interopRequireDefault((parcelRequire(\"c2GPt\")));\n\nvar $9410f162e13c7cc8$var$_layerMouseEvent = $9410f162e13c7cc8$var$_interopRequireDefault((parcelRequire(\"iXJhp\")));\n\nvar $9410f162e13c7cc8$var$_nebulaLayer = $9410f162e13c7cc8$var$_interopRequireDefault((parcelRequire(\"7uZXb\")));\n\nvar $9410f162e13c7cc8$var$_junctionsLayer = $9410f162e13c7cc8$var$_interopRequireDefault((parcelRequire(\"faO1n\")));\n\nvar $9410f162e13c7cc8$var$_textsLayer = $9410f162e13c7cc8$var$_interopRequireDefault((parcelRequire(\"cWVMd\")));\n\nvar $9410f162e13c7cc8$var$_segmentsLayer = $9410f162e13c7cc8$var$_interopRequireDefault((parcelRequire(\"cIeIZ\")));\n\nvar $9410f162e13c7cc8$var$_nebula = $9410f162e13c7cc8$var$_interopRequireDefault((parcelRequire(\"afly2\")));\n\nvar $bEXHX = parcelRequire(\"bEXHX\");\n\nvar $h5pu5 = parcelRequire(\"h5pu5\");\n\nvar $4agoo = parcelRequire(\"4agoo\");\n\nvar $cQSdn = parcelRequire(\"cQSdn\");\nfunction $9410f162e13c7cc8$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\n});\nparcelRegister(\"4TuXT\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.DEFAULT_STYLE = module.exports.MAX_ARROWS = module.exports.DEFAULT_ARROWS = module.exports.ArrowStyles = void 0;\n// Describes the arrow style of polylines\nvar $3904517f5237c32e$var$ArrowStyles = {\n NONE: 0,\n FORWARD: 1,\n BACKWARD: 2,\n BOTH: 3\n};\nmodule.exports.ArrowStyles = $3904517f5237c32e$var$ArrowStyles;\nvar $3904517f5237c32e$var$DEFAULT_ARROWS = 1;\nmodule.exports.DEFAULT_ARROWS = $3904517f5237c32e$var$DEFAULT_ARROWS;\nvar $3904517f5237c32e$var$MAX_ARROWS = 3;\nmodule.exports.MAX_ARROWS = $3904517f5237c32e$var$MAX_ARROWS;\nvar $3904517f5237c32e$var$DEFAULT_STYLE = {\n arrowColor: [\n 0,\n 0,\n 0,\n 1\n ],\n arrowCount: $3904517f5237c32e$var$DEFAULT_ARROWS,\n arrowStyle: $3904517f5237c32e$var$ArrowStyles.NONE,\n fillColor: [\n 0,\n 0,\n 0,\n 1\n ],\n lineColor: [\n 0,\n 0,\n 0,\n 1\n ],\n lineWidthMeters: 5,\n outlineRadiusMeters: 0,\n opacity: 1,\n zLevel: 0\n};\nmodule.exports.DEFAULT_STYLE = $3904517f5237c32e$var$DEFAULT_STYLE;\n\n});\n\nparcelRegister(\"cY7II\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = module.exports.SELECTION_TYPE = void 0;\n\nvar $6ey8i = parcelRequire(\"6ey8i\");\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $971113b6972d660e$var$_bbox = $971113b6972d660e$var$_interopRequireDefault((parcelRequire(\"lX3Ya\")));\n\nvar $971113b6972d660e$var$_bboxPolygon = $971113b6972d660e$var$_interopRequireDefault((parcelRequire(\"e9fnE\")));\n\nvar $971113b6972d660e$var$_buffer = $971113b6972d660e$var$_interopRequireDefault((parcelRequire(\"3qree\")));\n\nvar $971113b6972d660e$var$_difference = $971113b6972d660e$var$_interopRequireDefault((parcelRequire(\"gZv4c\")));\n\nvar $971113b6972d660e$var$_distance = $971113b6972d660e$var$_interopRequireDefault((parcelRequire(\"b5wF2\")));\nfunction $971113b6972d660e$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $971113b6972d660e$var$ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction $971113b6972d660e$var$_objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) $971113b6972d660e$var$ownKeys(Object(source), true).forEach(function(key) {\n $971113b6972d660e$var$_defineProperty(target, key, source[key]);\n });\n else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n else $971113b6972d660e$var$ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction $971113b6972d660e$var$_slicedToArray(arr, i) {\n return $971113b6972d660e$var$_arrayWithHoles(arr) || $971113b6972d660e$var$_iterableToArrayLimit(arr, i) || $971113b6972d660e$var$_unsupportedIterableToArray(arr, i) || $971113b6972d660e$var$_nonIterableRest();\n}\nfunction $971113b6972d660e$var$_nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $971113b6972d660e$var$_iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for(var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction $971113b6972d660e$var$_arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction $971113b6972d660e$var$_toConsumableArray(arr) {\n return $971113b6972d660e$var$_arrayWithoutHoles(arr) || $971113b6972d660e$var$_iterableToArray(arr) || $971113b6972d660e$var$_unsupportedIterableToArray(arr) || $971113b6972d660e$var$_nonIterableSpread();\n}\nfunction $971113b6972d660e$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $971113b6972d660e$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $971113b6972d660e$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $971113b6972d660e$var$_arrayLikeToArray(o, minLen);\n}\nfunction $971113b6972d660e$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $971113b6972d660e$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $971113b6972d660e$var$_arrayLikeToArray(arr);\n}\nfunction $971113b6972d660e$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $971113b6972d660e$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $971113b6972d660e$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $971113b6972d660e$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $971113b6972d660e$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $971113b6972d660e$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $971113b6972d660e$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $971113b6972d660e$var$POLYGON_LINE_COLOR = [\n 0,\n 255,\n 0,\n 255\n];\nvar $971113b6972d660e$var$POLYGON_FILL_COLOR = [\n 255,\n 255,\n 255,\n 90\n];\nvar $971113b6972d660e$var$POLYGON_LINE_WIDTH = 2;\nvar $971113b6972d660e$var$POLYGON_DASHES = [\n 20,\n 20\n];\nvar $971113b6972d660e$var$POLYGON_THRESHOLD = 0.01;\nvar $971113b6972d660e$var$EXPANSION_KM = 10;\nvar $971113b6972d660e$var$LAYER_ID_VIEW = \"DeckDrawerView\";\nvar $971113b6972d660e$var$LAYER_ID_PICK = \"DeckDrawerPick\";\nvar $971113b6972d660e$var$SELECTION_TYPE = {\n NONE: null,\n RECTANGLE: \"rectangle\",\n POLYGON: \"polygon\"\n};\nmodule.exports.SELECTION_TYPE = $971113b6972d660e$var$SELECTION_TYPE;\nvar $971113b6972d660e$var$DeckDrawer = /*#__PURE__*/ function() {\n function DeckDrawer(nebula) {\n $971113b6972d660e$var$_classCallCheck(this, DeckDrawer);\n $971113b6972d660e$var$_defineProperty(this, \"nebula\", void 0);\n $971113b6972d660e$var$_defineProperty(this, \"usePolygon\", void 0);\n $971113b6972d660e$var$_defineProperty(this, \"validPolygon\", void 0);\n $971113b6972d660e$var$_defineProperty(this, \"landPoints\", void 0);\n $971113b6972d660e$var$_defineProperty(this, \"mousePoints\", void 0);\n this.nebula = nebula;\n this.usePolygon = false;\n this.landPoints = [];\n this.mousePoints = [];\n }\n $971113b6972d660e$var$_createClass(DeckDrawer, [\n {\n key: \"_getLayerIds\",\n value: function _getLayerIds() {\n // TODO: sort by mouse priority\n return this.nebula.deckgl.props.layers.filter(function(l) {\n return l && l.props && l.props.nebulaLayer && l.props.nebulaLayer.enableSelection;\n }).map(function(l) {\n return l.id;\n });\n }\n },\n {\n key: \"_selectFromPickingInfos\",\n value: function _selectFromPickingInfos(pickingInfos) {\n var objects = pickingInfos.map(function(_ref) {\n var layer = _ref.layer, index = _ref.index, object = _ref.object;\n return object.original || layer.props.nebulaLayer.deckCache.originals[index];\n });\n this.nebula.props.onSelection(objects);\n }\n },\n {\n key: \"_getBoundingBox\",\n value: function _getBoundingBox() {\n var mousePoints = this.mousePoints;\n var allX = mousePoints.map(function(mousePoint) {\n return mousePoint[0];\n });\n var allY = mousePoints.map(function(mousePoint) {\n return mousePoint[1];\n });\n var x = Math.min.apply(Math, $971113b6972d660e$var$_toConsumableArray(allX));\n var y = Math.min.apply(Math, $971113b6972d660e$var$_toConsumableArray(allY));\n var maxX = Math.max.apply(Math, $971113b6972d660e$var$_toConsumableArray(allX));\n var maxY = Math.max.apply(Math, $971113b6972d660e$var$_toConsumableArray(allY));\n return {\n x: x,\n y: y,\n width: maxX - x,\n height: maxY - y\n };\n }\n },\n {\n key: \"_selectRectangleObjects\",\n value: function _selectRectangleObjects() {\n if (this.landPoints.length !== 2) return;\n var _this$mousePoints$ = $971113b6972d660e$var$_slicedToArray(this.mousePoints[0], 2), x1 = _this$mousePoints$[0], y1 = _this$mousePoints$[1];\n var _this$mousePoints$2 = $971113b6972d660e$var$_slicedToArray(this.mousePoints[1], 2), x2 = _this$mousePoints$2[0], y2 = _this$mousePoints$2[1];\n var pickingInfos = this.nebula.deckgl.pickObjects({\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1),\n layerIds: this._getLayerIds()\n });\n this._selectFromPickingInfos(pickingInfos);\n }\n },\n {\n key: \"_selectPolygonObjects\",\n value: function _selectPolygonObjects() {\n var pickingInfos = this.nebula.deckgl.pickObjects($971113b6972d660e$var$_objectSpread({}, this._getBoundingBox(), {\n layerIds: [\n $971113b6972d660e$var$LAYER_ID_PICK\n ].concat($971113b6972d660e$var$_toConsumableArray(this._getLayerIds()))\n }));\n this._selectFromPickingInfos(pickingInfos.filter(function(item) {\n return item.layer.id !== $971113b6972d660e$var$LAYER_ID_PICK;\n }));\n }\n },\n {\n key: \"_getMousePosFromEvent\",\n value: function _getMousePosFromEvent(event) {\n var offsetX = event.offsetX, offsetY = event.offsetY;\n return [\n offsetX,\n offsetY\n ];\n }\n },\n {\n key: \"handleEvent\",\n value: function handleEvent(event, lngLat, selectionType) {\n // capture all events (mouse-up is needed to prevent us stuck in moving map)\n if (event.type !== \"mouseup\") event.stopPropagation(); // @ts-ignore\n this.usePolygon = selectionType === $971113b6972d660e$var$SELECTION_TYPE.POLYGON;\n var redraw = false;\n var deactivate = false;\n var usePolygon = this.usePolygon, landPoints = this.landPoints, mousePoints = this.mousePoints;\n if (event.type === \"mousedown\") {\n if (usePolygon && landPoints.length) // if landPoints.length is zero we want to insert two points (so we let it run the else)\n // also don't insert if polygon is invalid\n {\n if (this.landPoints.length < 3 || this.validPolygon) {\n landPoints.push(lngLat);\n mousePoints.push(this._getMousePosFromEvent(event));\n }\n } else {\n this.landPoints = [\n lngLat,\n lngLat\n ];\n var m = this._getMousePosFromEvent(event);\n this.mousePoints = [\n m,\n m\n ];\n }\n redraw = true;\n } else if (event.type === \"mousemove\" && landPoints.length) {\n // update last point\n landPoints[landPoints.length - 1] = lngLat;\n mousePoints[mousePoints.length - 1] = this._getMousePosFromEvent(event);\n redraw = true;\n } else if (event.type === \"mouseup\") {\n if (usePolygon) // check to see if completed\n // TODO: Maybe double-click to finish?\n {\n if (landPoints.length > 4 && (0, $971113b6972d660e$var$_distance[\"default\"])(landPoints[0], landPoints[landPoints.length - 1]) < $971113b6972d660e$var$POLYGON_THRESHOLD && this.validPolygon) {\n this._selectPolygonObjects();\n this.reset();\n redraw = true;\n deactivate = true;\n }\n } else {\n this._selectRectangleObjects();\n this.reset();\n redraw = true;\n deactivate = true;\n }\n }\n return {\n redraw: redraw,\n deactivate: deactivate\n };\n }\n },\n {\n key: \"reset\",\n value: function reset() {\n this.landPoints = [];\n this.mousePoints = [];\n }\n },\n {\n key: \"_makeStartPointHighlight\",\n value: function _makeStartPointHighlight(center) {\n var buffer = (0, $971113b6972d660e$var$_buffer[\"default\"])((0, $7GKQS.point)(center), $971113b6972d660e$var$POLYGON_THRESHOLD / 4.0); // @ts-ignore\n return (0, $971113b6972d660e$var$_bboxPolygon[\"default\"])((0, $971113b6972d660e$var$_bbox[\"default\"])(buffer)).geometry.coordinates;\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this = this;\n var data = [];\n var dataPick = [];\n if (!this.usePolygon && this.landPoints.length === 2) {\n // Use mouse points instead of land points so we get the right shape\n // no matter what bearing is.\n var _this$mousePoints = $971113b6972d660e$var$_slicedToArray(this.mousePoints, 2), _this$mousePoints$3 = $971113b6972d660e$var$_slicedToArray(_this$mousePoints[0], 2), x1 = _this$mousePoints$3[0], y1 = _this$mousePoints$3[1], _this$mousePoints$4 = $971113b6972d660e$var$_slicedToArray(_this$mousePoints[1], 2), x2 = _this$mousePoints$4[0], y2 = _this$mousePoints$4[1];\n var selPolygon = [\n [\n x1,\n y1\n ],\n [\n x1,\n y2\n ],\n [\n x2,\n y2\n ],\n [\n x2,\n y1\n ],\n [\n x1,\n y1\n ]\n ].map(function(mousePos) {\n return _this.nebula.unprojectMousePosition(mousePos);\n });\n data.push({\n polygon: selPolygon,\n lineColor: $971113b6972d660e$var$POLYGON_LINE_COLOR,\n fillColor: $971113b6972d660e$var$POLYGON_FILL_COLOR\n });\n } else if (this.usePolygon && this.landPoints.length) {\n data.push({\n polygon: this.landPoints,\n lineColor: $971113b6972d660e$var$POLYGON_LINE_COLOR,\n fillColor: $971113b6972d660e$var$POLYGON_FILL_COLOR\n }); // Hack: use a polygon to hide the outside, because pickObjects()\n // does not support polygons\n if (this.landPoints.length >= 3) {\n var landPointsPoly = (0, $7GKQS.polygon)([\n [].concat($971113b6972d660e$var$_toConsumableArray(this.landPoints), [\n this.landPoints[0]\n ])\n ]);\n var bigBuffer = (0, $971113b6972d660e$var$_buffer[\"default\"])((0, $7GKQS.point)(this.landPoints[0]), $971113b6972d660e$var$EXPANSION_KM);\n var bigPolygon;\n try {\n // turfDifference throws an exception if the polygon\n // intersects with itself\n bigPolygon = (0, $971113b6972d660e$var$_difference[\"default\"])(bigBuffer, landPointsPoly);\n dataPick.push({\n polygon: bigPolygon.geometry.coordinates,\n fillColor: [\n 0,\n 0,\n 0,\n 1\n ]\n });\n this.validPolygon = true;\n } catch (e) {\n // invalid selection polygon\n this.validPolygon = false;\n }\n }\n }\n if (this.landPoints.length) // highlight start point\n data.push({\n polygon: this._makeStartPointHighlight(this.landPoints[0]),\n lineColor: [\n 0,\n 0,\n 0,\n 0\n ],\n fillColor: $971113b6972d660e$var$POLYGON_LINE_COLOR\n });\n // Hack to make the PolygonLayer() stay active,\n // otherwise it takes 3 seconds (!) to init!\n // TODO: fix this\n data.push({\n polygon: [\n [\n 0,\n 0\n ]\n ]\n });\n dataPick.push({\n polygon: [\n [\n 0,\n 0\n ]\n ]\n });\n return [\n new $6ey8i.default({\n id: $971113b6972d660e$var$LAYER_ID_VIEW,\n data: data,\n // @ts-ignore\n fp64: false,\n opacity: 1.0,\n pickable: false,\n lineWidthMinPixels: $971113b6972d660e$var$POLYGON_LINE_WIDTH,\n lineWidthMaxPixels: $971113b6972d660e$var$POLYGON_LINE_WIDTH,\n lineDashJustified: true,\n getLineDashArray: function getLineDashArray(x) {\n return $971113b6972d660e$var$POLYGON_DASHES;\n },\n // @ts-ignore\n getLineColor: function getLineColor(obj) {\n return obj.lineColor || [\n 0,\n 0,\n 0,\n 255\n ];\n },\n // @ts-ignore\n getFillColor: function getFillColor(obj) {\n return obj.fillColor || [\n 0,\n 0,\n 0,\n 255\n ];\n },\n // @ts-ignore\n getPolygon: function getPolygon(o) {\n return o.polygon;\n }\n }),\n new $6ey8i.default({\n id: $971113b6972d660e$var$LAYER_ID_PICK,\n data: dataPick,\n // @ts-ignore\n getLineColor: function getLineColor(obj) {\n return obj.lineColor || [\n 0,\n 0,\n 0,\n 255\n ];\n },\n // @ts-ignore\n getFillColor: function getFillColor(obj) {\n return obj.fillColor || [\n 0,\n 0,\n 0,\n 255\n ];\n },\n // @ts-ignore\n fp64: false,\n opacity: 1.0,\n stroked: false,\n pickable: true,\n // @ts-ignore\n getPolygon: function getPolygon(o) {\n return o.polygon;\n }\n })\n ];\n }\n }\n ]);\n return DeckDrawer;\n}();\nmodule.exports[\"default\"] = $971113b6972d660e$var$DeckDrawer;\n\n});\nparcelRegister(\"6ey8i\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $489e86f01fa23e27$export$2e2bcd8739ae039; });\n\nvar $lEQUF = parcelRequire(\"lEQUF\");\n\nvar $coXLq = parcelRequire(\"coXLq\");\nvar $abpME = parcelRequire(\"abpME\");\nvar $4VQgq = parcelRequire(\"4VQgq\");\n\nvar $7VEAA = parcelRequire(\"7VEAA\");\n\nvar $lzW2S = parcelRequire(\"lzW2S\");\n\nvar $9001n = parcelRequire(\"9001n\");\n\nvar $cNqHj = parcelRequire(\"cNqHj\");\nconst $489e86f01fa23e27$var$defaultLineColor = [\n 0,\n 0,\n 0,\n 255\n];\nconst $489e86f01fa23e27$var$defaultFillColor = [\n 0,\n 0,\n 0,\n 255\n];\nconst $489e86f01fa23e27$var$defaultProps = {\n stroked: true,\n filled: true,\n extruded: false,\n elevationScale: 1,\n wireframe: false,\n _normalize: true,\n _windingOrder: \"CW\",\n lineWidthUnits: \"meters\",\n lineWidthScale: 1,\n lineWidthMinPixels: 0,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n lineJointRounded: false,\n lineMiterLimit: 4,\n getPolygon: {\n type: \"accessor\",\n value: (f)=>f.polygon\n },\n getFillColor: {\n type: \"accessor\",\n value: $489e86f01fa23e27$var$defaultFillColor\n },\n getLineColor: {\n type: \"accessor\",\n value: $489e86f01fa23e27$var$defaultLineColor\n },\n getLineWidth: {\n type: \"accessor\",\n value: 1\n },\n getElevation: {\n type: \"accessor\",\n value: 1000\n },\n material: true\n};\nclass $489e86f01fa23e27$export$2e2bcd8739ae039 extends (0, $coXLq.default) {\n initializeState() {\n this.state = {\n paths: []\n };\n if (this.props.getLineDashArray) (0, $4VQgq.default).removed(\"getLineDashArray\", \"PathStyleExtension\")();\n }\n updateState({ changeFlags: changeFlags }) {\n const geometryChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPolygon);\n if (geometryChanged && Array.isArray(changeFlags.dataChanged)) {\n const paths = this.state.paths.slice();\n const pathsDiff = changeFlags.dataChanged.map((dataRange)=>(0, $cNqHj.replaceInRange)({\n data: paths,\n getIndex: (p)=>p.__source.index,\n dataRange: dataRange,\n replace: this._getPaths(dataRange)\n }));\n this.setState({\n paths: paths,\n pathsDiff: pathsDiff\n });\n } else if (geometryChanged) this.setState({\n paths: this._getPaths(),\n pathsDiff: null\n });\n }\n _getPaths(dataRange = {}) {\n const { data: data, getPolygon: getPolygon, positionFormat: positionFormat, _normalize: _normalize } = this.props;\n const paths = [];\n const positionSize = positionFormat === \"XY\" ? 2 : 3;\n const { startRow: startRow, endRow: endRow } = dataRange;\n const { iterable: iterable, objectInfo: objectInfo } = (0, $abpME.createIterable)(data, startRow, endRow);\n for (const object of iterable){\n objectInfo.index++;\n let polygon = getPolygon(object, objectInfo);\n if (_normalize) polygon = $9001n.normalize(polygon, positionSize);\n const { holeIndices: holeIndices } = polygon;\n const positions = polygon.positions || polygon;\n if (holeIndices) for(let i = 0; i <= holeIndices.length; i++){\n const path = positions.slice(holeIndices[i - 1] || 0, holeIndices[i] || positions.length);\n paths.push(this.getSubLayerRow({\n path: path\n }, object, objectInfo.index));\n }\n else paths.push(this.getSubLayerRow({\n path: positions\n }, object, objectInfo.index));\n }\n return paths;\n }\n renderLayers() {\n const { data: data, _dataDiff: _dataDiff, stroked: stroked, filled: filled, extruded: extruded, wireframe: wireframe, _normalize: _normalize, _windingOrder: _windingOrder, elevationScale: elevationScale, transitions: transitions, positionFormat: positionFormat } = this.props;\n const { lineWidthUnits: lineWidthUnits, lineWidthScale: lineWidthScale, lineWidthMinPixels: lineWidthMinPixels, lineWidthMaxPixels: lineWidthMaxPixels, lineJointRounded: lineJointRounded, lineMiterLimit: lineMiterLimit, lineDashJustified: lineDashJustified } = this.props;\n const { getFillColor: getFillColor, getLineColor: getLineColor, getLineWidth: getLineWidth, getLineDashArray: getLineDashArray, getElevation: getElevation, getPolygon: getPolygon, updateTriggers: updateTriggers, material: material } = this.props;\n const { paths: paths, pathsDiff: pathsDiff } = this.state;\n const FillLayer = this.getSubLayerClass(\"fill\", (0, $7VEAA.default));\n const StrokeLayer = this.getSubLayerClass(\"stroke\", (0, $lzW2S.default));\n const polygonLayer = this.shouldRenderSubLayer(\"fill\", paths) && new FillLayer({\n _dataDiff: _dataDiff,\n extruded: extruded,\n elevationScale: elevationScale,\n filled: filled,\n wireframe: wireframe,\n _normalize: _normalize,\n _windingOrder: _windingOrder,\n getElevation: getElevation,\n getFillColor: getFillColor,\n getLineColor: extruded && wireframe ? getLineColor : $489e86f01fa23e27$var$defaultLineColor,\n material: material,\n transitions: transitions\n }, this.getSubLayerProps({\n id: \"fill\",\n updateTriggers: updateTriggers && {\n getPolygon: updateTriggers.getPolygon,\n getElevation: updateTriggers.getElevation,\n getFillColor: updateTriggers.getFillColor,\n lineColors: extruded && wireframe,\n getLineColor: updateTriggers.getLineColor\n }\n }), {\n data: data,\n positionFormat: positionFormat,\n getPolygon: getPolygon\n });\n const polygonLineLayer = !extruded && stroked && this.shouldRenderSubLayer(\"stroke\", paths) && new StrokeLayer({\n _dataDiff: pathsDiff && (()=>pathsDiff),\n widthUnits: lineWidthUnits,\n widthScale: lineWidthScale,\n widthMinPixels: lineWidthMinPixels,\n widthMaxPixels: lineWidthMaxPixels,\n jointRounded: lineJointRounded,\n miterLimit: lineMiterLimit,\n dashJustified: lineDashJustified,\n _pathType: \"loop\",\n transitions: transitions && {\n getWidth: transitions.getLineWidth,\n getColor: transitions.getLineColor,\n getPath: transitions.getPolygon\n },\n getColor: this.getSubLayerAccessor(getLineColor),\n getWidth: this.getSubLayerAccessor(getLineWidth),\n getDashArray: this.getSubLayerAccessor(getLineDashArray)\n }, this.getSubLayerProps({\n id: \"stroke\",\n updateTriggers: updateTriggers && {\n getWidth: updateTriggers.getLineWidth,\n getColor: updateTriggers.getLineColor,\n getDashArray: updateTriggers.getLineDashArray\n }\n }), {\n data: paths,\n positionFormat: positionFormat,\n getPath: (x)=>x.path\n });\n return [\n !extruded && polygonLayer,\n polygonLineLayer,\n extruded && polygonLayer\n ];\n }\n}\n(0, $lEQUF.default)($489e86f01fa23e27$export$2e2bcd8739ae039, \"layerName\", \"PolygonLayer\");\n(0, $lEQUF.default)($489e86f01fa23e27$export$2e2bcd8739ae039, \"defaultProps\", $489e86f01fa23e27$var$defaultProps);\n\n});\nparcelRegister(\"lEQUF\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $fc4660d3cb41e445$export$2e2bcd8739ae039; });\nfunction $fc4660d3cb41e445$export$2e2bcd8739ae039(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\n\n});\n\nparcelRegister(\"coXLq\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $907615c95888d543$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $1zR3q = parcelRequire(\"1zR3q\");\n\nvar $i46md = parcelRequire(\"i46md\");\n\nvar $bwVEZ = parcelRequire(\"bwVEZ\");\n\nvar $ivBeX = parcelRequire(\"ivBeX\");\n\nvar $lXg0j = parcelRequire(\"lXg0j\");\nconst $907615c95888d543$var$TRACE_RENDER_LAYERS = \"compositeLayer.renderLayers\";\nclass $907615c95888d543$export$2e2bcd8739ae039 extends (0, $i46md.default) {\n get isComposite() {\n return true;\n }\n get isLoaded() {\n return super.isLoaded && this.getSubLayers().every((layer)=>layer.isLoaded);\n }\n getSubLayers() {\n return this.internalState && this.internalState.subLayers || [];\n }\n initializeState(context) {}\n setState(updateObject) {\n super.setState(updateObject);\n this.setNeedsUpdate();\n }\n getPickingInfo({ info: info }) {\n const { object: object } = info;\n const isDataWrapped = object && object.__source && object.__source.parent && object.__source.parent.id === this.id;\n if (!isDataWrapped) return info;\n info.object = object.__source.object;\n info.index = object.__source.index;\n return info;\n }\n filterSubLayer(context) {\n return true;\n }\n shouldRenderSubLayer(subLayerId, data) {\n return data && data.length;\n }\n getSubLayerClass(subLayerId, DefaultLayerClass) {\n const { _subLayerProps: overridingProps } = this.props;\n return overridingProps && overridingProps[subLayerId] && overridingProps[subLayerId].type || DefaultLayerClass;\n }\n getSubLayerRow(row, sourceObject, sourceObjectIndex) {\n row.__source = {\n parent: this,\n object: sourceObject,\n index: sourceObjectIndex\n };\n return row;\n }\n getSubLayerAccessor(accessor) {\n if (typeof accessor === \"function\") {\n const objectInfo = {\n index: -1,\n data: this.props.data,\n target: []\n };\n return (x, i)=>{\n if (x && x.__source) {\n objectInfo.index = x.__source.index;\n return accessor(x.__source.object, objectInfo);\n }\n return accessor(x, i);\n };\n }\n return accessor;\n }\n getSubLayerProps(sublayerProps = {}) {\n var _this$props$updateTri;\n const { opacity: opacity, pickable: pickable, visible: visible, parameters: parameters, getPolygonOffset: getPolygonOffset, highlightedObjectIndex: highlightedObjectIndex, autoHighlight: autoHighlight, highlightColor: highlightColor, coordinateSystem: coordinateSystem, coordinateOrigin: coordinateOrigin, wrapLongitude: wrapLongitude, positionFormat: positionFormat, modelMatrix: modelMatrix, extensions: extensions, fetch: fetch, operation: operation, _subLayerProps: overridingProps } = this.props;\n const newProps = {\n id: \"\",\n updateTriggers: {},\n opacity: opacity,\n pickable: pickable,\n visible: visible,\n parameters: parameters,\n getPolygonOffset: getPolygonOffset,\n highlightedObjectIndex: highlightedObjectIndex,\n autoHighlight: autoHighlight,\n highlightColor: highlightColor,\n coordinateSystem: coordinateSystem,\n coordinateOrigin: coordinateOrigin,\n wrapLongitude: wrapLongitude,\n positionFormat: positionFormat,\n modelMatrix: modelMatrix,\n extensions: extensions,\n fetch: fetch,\n operation: operation\n };\n const overridingSublayerProps = overridingProps && sublayerProps.id && overridingProps[sublayerProps.id];\n const overridingSublayerTriggers = overridingSublayerProps && overridingSublayerProps.updateTriggers;\n const sublayerId = sublayerProps.id || \"sublayer\";\n if (overridingSublayerProps) {\n const propTypes = this.props[0, $lXg0j.PROP_TYPES_SYMBOL];\n const subLayerPropTypes = sublayerProps.type ? sublayerProps.type._propTypes : {};\n for(const key in overridingSublayerProps){\n const propType = subLayerPropTypes[key] || propTypes[key];\n if (propType && propType.type === \"accessor\") overridingSublayerProps[key] = this.getSubLayerAccessor(overridingSublayerProps[key]);\n }\n }\n Object.assign(newProps, sublayerProps, overridingSublayerProps);\n newProps.id = \"\".concat(this.props.id, \"-\").concat(sublayerId);\n newProps.updateTriggers = (0, $2QP2i._)({\n all: (_this$props$updateTri = this.props.updateTriggers) === null || _this$props$updateTri === void 0 ? void 0 : _this$props$updateTri.all\n }, sublayerProps.updateTriggers, overridingSublayerTriggers);\n for (const extension of extensions){\n const passThroughProps = extension.getSubLayerProps.call(this, extension);\n if (passThroughProps) Object.assign(newProps, passThroughProps, {\n updateTriggers: Object.assign(newProps.updateTriggers, passThroughProps.updateTriggers)\n });\n }\n return newProps;\n }\n _updateAutoHighlight(info) {\n for (const layer of this.getSubLayers())layer.updateAutoHighlight(info);\n }\n _getAttributeManager() {\n return null;\n }\n _postUpdate(updateParams, forceUpdate) {\n let subLayers = this.internalState.subLayers;\n const shouldUpdate = !subLayers || this.needsUpdate();\n if (shouldUpdate) {\n const subLayersList = this.renderLayers();\n subLayers = (0, $ivBeX.flatten)(subLayersList, Boolean);\n this.internalState.subLayers = subLayers;\n }\n (0, $bwVEZ.default)($907615c95888d543$var$TRACE_RENDER_LAYERS, this, shouldUpdate, subLayers);\n for (const layer of subLayers)layer.parent = this;\n }\n}\n(0, $1zR3q.default)($907615c95888d543$export$2e2bcd8739ae039, \"layerName\", \"CompositeLayer\");\n\n});\nparcelRegister(\"1zR3q\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $126236cd6470e02c$export$2e2bcd8739ae039; });\nfunction $126236cd6470e02c$export$2e2bcd8739ae039(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\n\n});\n\nparcelRegister(\"i46md\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $d26d882a326691db$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $1zR3q = parcelRequire(\"1zR3q\");\n\nvar $7gQQK = parcelRequire(\"7gQQK\");\n\nvar $ke18b = parcelRequire(\"ke18b\");\n\nvar $EIvaG = parcelRequire(\"EIvaG\");\n\nvar $ciluY = parcelRequire(\"ciluY\");\n\nvar $lXg0j = parcelRequire(\"lXg0j\");\n\nvar $6CX3d = parcelRequire(\"6CX3d\");\n\nvar $4VQgq = parcelRequire(\"4VQgq\");\n\nvar $bwVEZ = parcelRequire(\"bwVEZ\");\nparcelRequire(\"73UuK\");\nvar $2SJyH = parcelRequire(\"2SJyH\");\n\nvar $hu5l6 = parcelRequire(\"hu5l6\");\n\nvar $b9Qhn = parcelRequire(\"b9Qhn\");\n\nvar $4hN1x = parcelRequire(\"4hN1x\");\n\nvar $4cXyN = parcelRequire(\"4cXyN\");\n\nvar $an4RE = parcelRequire(\"an4RE\");\n\nvar $lXqRv = parcelRequire(\"lXqRv\");\n\nvar $5UhUg = parcelRequire(\"5UhUg\");\nparcelRequire(\"3vYZD\");\nvar $k5FuL = parcelRequire(\"k5FuL\");\n\nvar $ewlwV = parcelRequire(\"ewlwV\");\nconst $d26d882a326691db$var$TRACE_CHANGE_FLAG = \"layer.changeFlag\";\nconst $d26d882a326691db$var$TRACE_INITIALIZE = \"layer.initialize\";\nconst $d26d882a326691db$var$TRACE_UPDATE = \"layer.update\";\nconst $d26d882a326691db$var$TRACE_FINALIZE = \"layer.finalize\";\nconst $d26d882a326691db$var$TRACE_MATCHED = \"layer.matched\";\nconst $d26d882a326691db$var$MAX_PICKING_COLOR_CACHE_SIZE = 2 ** 24 - 1;\nconst $d26d882a326691db$var$EMPTY_ARRAY = Object.freeze([]);\nconst $d26d882a326691db$var$areViewportsEqual = (0, $b9Qhn.default)(({ oldViewport: oldViewport, viewport: viewport })=>{\n return oldViewport.equals(viewport);\n});\nlet $d26d882a326691db$var$pickingColorCache = new Uint8ClampedArray(0);\nconst $d26d882a326691db$var$defaultProps = {\n data: {\n type: \"data\",\n value: $d26d882a326691db$var$EMPTY_ARRAY,\n async: true\n },\n dataComparator: {\n type: \"function\",\n value: null,\n optional: true\n },\n _dataDiff: {\n type: \"function\",\n value: (data)=>data && data.__diff,\n optional: true\n },\n dataTransform: {\n type: \"function\",\n value: null,\n optional: true\n },\n onDataLoad: {\n type: \"function\",\n value: null,\n optional: true\n },\n onError: {\n type: \"function\",\n value: null,\n optional: true\n },\n fetch: {\n type: \"function\",\n value: (url, { propName: propName, layer: layer, loaders: loaders, loadOptions: loadOptions, signal: signal })=>{\n const { resourceManager: resourceManager } = layer.context;\n loadOptions = loadOptions || layer.getLoadOptions();\n loaders = loaders || layer.props.loaders;\n if (signal) {\n var _loadOptions;\n loadOptions = (0, $edHbI._)((0, $2QP2i._)({}, loadOptions), {\n fetch: (0, $edHbI._)((0, $2QP2i._)({}, (_loadOptions = loadOptions) === null || _loadOptions === void 0 ? void 0 : _loadOptions.fetch), {\n signal: signal\n })\n });\n }\n let inResourceManager = resourceManager.contains(url);\n if (!inResourceManager && !loadOptions) {\n resourceManager.add({\n resourceId: url,\n data: (0, $ewlwV.load)(url, loaders),\n persistent: false\n });\n inResourceManager = true;\n }\n if (inResourceManager) return resourceManager.subscribe({\n resourceId: url,\n onChange: (data)=>{\n var _layer$internalState;\n return (_layer$internalState = layer.internalState) === null || _layer$internalState === void 0 ? void 0 : _layer$internalState.reloadAsyncProp(propName, data);\n },\n consumerId: layer.id,\n requestId: propName\n });\n return (0, $ewlwV.load)(url, loaders, loadOptions);\n }\n },\n updateTriggers: {},\n visible: true,\n pickable: false,\n opacity: {\n type: \"number\",\n min: 0,\n max: 1,\n value: 1\n },\n operation: \"draw\",\n onHover: {\n type: \"function\",\n value: null,\n optional: true\n },\n onClick: {\n type: \"function\",\n value: null,\n optional: true\n },\n onDragStart: {\n type: \"function\",\n value: null,\n optional: true\n },\n onDrag: {\n type: \"function\",\n value: null,\n optional: true\n },\n onDragEnd: {\n type: \"function\",\n value: null,\n optional: true\n },\n coordinateSystem: (0, $7gQQK.COORDINATE_SYSTEM).DEFAULT,\n coordinateOrigin: {\n type: \"array\",\n value: [\n 0,\n 0,\n 0\n ],\n compare: true\n },\n modelMatrix: {\n type: \"array\",\n value: null,\n compare: true,\n optional: true\n },\n wrapLongitude: false,\n positionFormat: \"XYZ\",\n colorFormat: \"RGBA\",\n parameters: {\n type: \"object\",\n value: {},\n optional: true,\n compare: 2\n },\n loadOptions: {\n type: \"object\",\n value: null,\n optional: true,\n ignore: true\n },\n transitions: null,\n extensions: [],\n loaders: {\n type: \"array\",\n value: [],\n optional: true,\n ignore: true\n },\n getPolygonOffset: {\n type: \"function\",\n value: ({ layerIndex: layerIndex })=>[\n 0,\n -layerIndex * 100\n ]\n },\n highlightedObjectIndex: null,\n autoHighlight: false,\n highlightColor: {\n type: \"accessor\",\n value: [\n 0,\n 0,\n 128,\n 128\n ]\n }\n};\nclass $d26d882a326691db$export$2e2bcd8739ae039 extends (0, $lXqRv.default) {\n static get componentName() {\n return Object.prototype.hasOwnProperty.call(this, \"layerName\") ? this.layerName : \"\";\n }\n get root() {\n let layer = this;\n while(layer.parent)layer = layer.parent;\n return layer;\n }\n toString() {\n const className = this.constructor.layerName || this.constructor.name;\n return \"\".concat(className, \"({id: '\").concat(this.props.id, \"'})\");\n }\n project(xyz) {\n (0, $hu5l6.default)(this.internalState);\n const viewport = this.internalState.viewport || this.context.viewport;\n const worldPosition = (0, $4cXyN.getWorldPosition)(xyz, {\n viewport: viewport,\n modelMatrix: this.props.modelMatrix,\n coordinateOrigin: this.props.coordinateOrigin,\n coordinateSystem: this.props.coordinateSystem\n });\n const [x, y, z] = (0, $k5FuL.worldToPixels)(worldPosition, viewport.pixelProjectionMatrix);\n return xyz.length === 2 ? [\n x,\n y\n ] : [\n x,\n y,\n z\n ];\n }\n unproject(xy) {\n (0, $hu5l6.default)(this.internalState);\n const viewport = this.internalState.viewport || this.context.viewport;\n return viewport.unproject(xy);\n }\n projectPosition(xyz, params) {\n (0, $hu5l6.default)(this.internalState);\n const viewport = this.internalState.viewport || this.context.viewport;\n return (0, $4cXyN.projectPosition)(xyz, (0, $2QP2i._)({\n viewport: viewport,\n modelMatrix: this.props.modelMatrix,\n coordinateOrigin: this.props.coordinateOrigin,\n coordinateSystem: this.props.coordinateSystem\n }, params));\n }\n get isComposite() {\n return false;\n }\n setState(partialState) {\n this.setChangeFlags({\n stateChanged: true\n });\n Object.assign(this.state, partialState);\n this.setNeedsRedraw();\n }\n setNeedsRedraw() {\n if (this.internalState) this.internalState.needsRedraw = true;\n }\n setNeedsUpdate() {\n if (this.internalState) {\n this.context.layerManager.setNeedsUpdate(String(this));\n this.internalState.needsUpdate = true;\n }\n }\n get isLoaded() {\n return this.internalState ? !this.internalState.isAsyncPropLoading() : false;\n }\n get wrapLongitude() {\n return this.props.wrapLongitude;\n }\n isPickable() {\n return this.props.pickable && this.props.visible;\n }\n getModels() {\n return this.state && (this.state.models || this.state.model && [\n this.state.model\n ]) || [];\n }\n setModuleParameters(moduleParameters) {\n for (const model of this.getModels())model.updateModuleSettings(moduleParameters);\n }\n getAttributeManager() {\n return this.internalState && this.internalState.attributeManager;\n }\n getCurrentLayer() {\n return this.internalState && this.internalState.layer;\n }\n getLoadOptions() {\n return this.props.loadOptions;\n }\n use64bitPositions() {\n const { coordinateSystem: coordinateSystem } = this.props;\n return coordinateSystem === (0, $7gQQK.COORDINATE_SYSTEM).DEFAULT || coordinateSystem === (0, $7gQQK.COORDINATE_SYSTEM).LNGLAT || coordinateSystem === (0, $7gQQK.COORDINATE_SYSTEM).CARTESIAN;\n }\n onHover(info, pickingEvent) {\n if (this.props.onHover) return this.props.onHover(info, pickingEvent) || false;\n return false;\n }\n onClick(info, pickingEvent) {\n if (this.props.onClick) return this.props.onClick(info, pickingEvent) || false;\n return false;\n }\n nullPickingColor() {\n return [\n 0,\n 0,\n 0\n ];\n }\n encodePickingColor(i, target = []) {\n target[0] = i + 1 & 255;\n target[1] = i + 1 >> 8 & 255;\n target[2] = i + 1 >> 8 >> 8 & 255;\n return target;\n }\n decodePickingColor(color) {\n (0, $hu5l6.default)(color instanceof Uint8Array);\n const [i1, i2, i3] = color;\n const index = i1 + i2 * 256 + i3 * 65536 - 1;\n return index;\n }\n getNumInstances() {\n if (Number.isFinite(this.props.numInstances)) return this.props.numInstances;\n if (this.state && this.state.numInstances !== undefined) return this.state.numInstances;\n return (0, $6CX3d.count)(this.props.data);\n }\n getStartIndices() {\n if (this.props.startIndices) return this.props.startIndices;\n if (this.state && this.state.startIndices) return this.state.startIndices;\n return null;\n }\n getBounds() {\n var _this$getAttributeMan;\n return (_this$getAttributeMan = this.getAttributeManager()) === null || _this$getAttributeMan === void 0 ? void 0 : _this$getAttributeMan.getBounds([\n \"positions\",\n \"instancePositions\"\n ]);\n }\n getShaders(shaders) {\n for (const extension of this.props.extensions)shaders = (0, $4hN1x.mergeShaders)(shaders, extension.getShaders.call(this, extension));\n return shaders;\n }\n shouldUpdateState(params) {\n return params.changeFlags.propsOrDataChanged;\n }\n updateState(params) {\n const attributeManager = this.getAttributeManager();\n const { dataChanged: dataChanged } = params.changeFlags;\n if (dataChanged && attributeManager) {\n if (Array.isArray(dataChanged)) for (const dataRange of dataChanged)attributeManager.invalidateAll(dataRange);\n else attributeManager.invalidateAll();\n }\n if (attributeManager) {\n const { props: props } = params;\n const hasPickingBuffer = this.internalState.hasPickingBuffer;\n const needsPickingBuffer = Number.isInteger(props.highlightedObjectIndex) || props.pickable || props.extensions.some((extension)=>extension.getNeedsPickingBuffer.call(this, extension));\n if (hasPickingBuffer !== needsPickingBuffer) {\n this.internalState.hasPickingBuffer = needsPickingBuffer;\n const { pickingColors: pickingColors, instancePickingColors: instancePickingColors } = attributeManager.attributes;\n const pickingColorsAttribute = pickingColors || instancePickingColors;\n if (pickingColorsAttribute) {\n if (needsPickingBuffer && pickingColorsAttribute.constant) {\n pickingColorsAttribute.constant = false;\n attributeManager.invalidate(pickingColorsAttribute.id);\n }\n if (!pickingColorsAttribute.value && !needsPickingBuffer) {\n pickingColorsAttribute.constant = true;\n pickingColorsAttribute.value = [\n 0,\n 0,\n 0\n ];\n }\n }\n }\n }\n }\n finalizeState(context) {\n for (const model of this.getModels())model.delete();\n const attributeManager = this.getAttributeManager();\n if (attributeManager) attributeManager.finalize();\n if (this.context) this.context.resourceManager.unsubscribe({\n consumerId: this.id\n });\n if (this.internalState) {\n this.internalState.uniformTransitions.clear();\n this.internalState.finalize();\n }\n }\n draw(opts) {\n for (const model of this.getModels())model.draw(opts);\n }\n getPickingInfo({ info: info, mode: mode, sourceLayer: sourceLayer }) {\n const { index: index } = info;\n if (index >= 0) {\n if (Array.isArray(this.props.data)) info.object = this.props.data[index];\n }\n return info;\n }\n raiseError(error, message) {\n var _this$props$onError, _this$props;\n if (message) error = new Error(\"\".concat(message, \": \").concat(error.message), {\n cause: error\n });\n if (!((_this$props$onError = (_this$props = this.props).onError) !== null && _this$props$onError !== void 0 && _this$props$onError.call(_this$props, error))) {\n var _this$context, _this$context$onError;\n (_this$context = this.context) === null || _this$context === void 0 || (_this$context$onError = _this$context.onError) === null || _this$context$onError === void 0 || _this$context$onError.call(_this$context, error, this);\n }\n }\n getNeedsRedraw(opts = {\n clearRedrawFlags: false\n }) {\n return this._getNeedsRedraw(opts);\n }\n needsUpdate() {\n if (!this.internalState) return false;\n return this.internalState.needsUpdate || this.hasUniformTransition() || this.shouldUpdateState(this._getUpdateParams());\n }\n hasUniformTransition() {\n var _this$internalState;\n return ((_this$internalState = this.internalState) === null || _this$internalState === void 0 ? void 0 : _this$internalState.uniformTransitions.active) || false;\n }\n activateViewport(viewport) {\n if (!this.internalState) return;\n const oldViewport = this.internalState.viewport;\n this.internalState.viewport = viewport;\n if (!oldViewport || !$d26d882a326691db$var$areViewportsEqual({\n oldViewport: oldViewport,\n viewport: viewport\n })) {\n this.setChangeFlags({\n viewportChanged: true\n });\n if (this.isComposite) {\n if (this.needsUpdate()) this.setNeedsUpdate();\n } else this._update();\n }\n }\n invalidateAttribute(name = \"all\") {\n const attributeManager = this.getAttributeManager();\n if (!attributeManager) return;\n if (name === \"all\") attributeManager.invalidateAll();\n else attributeManager.invalidate(name);\n }\n updateAttributes(changedAttributes) {\n for (const model of this.getModels())this._setModelAttributes(model, changedAttributes);\n }\n _updateAttributes() {\n const attributeManager = this.getAttributeManager();\n if (!attributeManager) return;\n const props = this.props;\n const numInstances = this.getNumInstances();\n const startIndices = this.getStartIndices();\n attributeManager.update({\n data: props.data,\n numInstances: numInstances,\n startIndices: startIndices,\n props: props,\n transitions: props.transitions,\n buffers: props.data.attributes,\n context: this\n });\n const changedAttributes = attributeManager.getChangedAttributes({\n clearChangedFlags: true\n });\n this.updateAttributes(changedAttributes);\n }\n _updateAttributeTransition() {\n const attributeManager = this.getAttributeManager();\n if (attributeManager) attributeManager.updateTransition();\n }\n _updateUniformTransition() {\n const { uniformTransitions: uniformTransitions } = this.internalState;\n if (uniformTransitions.active) {\n const propsInTransition = uniformTransitions.update();\n const props = Object.create(this.props);\n for(const key in propsInTransition)Object.defineProperty(props, key, {\n value: propsInTransition[key]\n });\n return props;\n }\n return this.props;\n }\n calculateInstancePickingColors(attribute, { numInstances: numInstances }) {\n if (attribute.constant) return;\n const cacheSize = Math.floor($d26d882a326691db$var$pickingColorCache.length / 3);\n this.internalState.usesPickingColorCache = true;\n if (cacheSize < numInstances) {\n if (numInstances > $d26d882a326691db$var$MAX_PICKING_COLOR_CACHE_SIZE) (0, $4VQgq.default).warn(\"Layer has too many data objects. Picking might not be able to distinguish all objects.\")();\n $d26d882a326691db$var$pickingColorCache = (0, $an4RE.default).allocate($d26d882a326691db$var$pickingColorCache, numInstances, {\n size: 3,\n copy: true,\n maxCount: Math.max(numInstances, $d26d882a326691db$var$MAX_PICKING_COLOR_CACHE_SIZE)\n });\n const newCacheSize = Math.floor($d26d882a326691db$var$pickingColorCache.length / 3);\n const pickingColor = [];\n for(let i = cacheSize; i < newCacheSize; i++){\n this.encodePickingColor(i, pickingColor);\n $d26d882a326691db$var$pickingColorCache[i * 3 + 0] = pickingColor[0];\n $d26d882a326691db$var$pickingColorCache[i * 3 + 1] = pickingColor[1];\n $d26d882a326691db$var$pickingColorCache[i * 3 + 2] = pickingColor[2];\n }\n }\n attribute.value = $d26d882a326691db$var$pickingColorCache.subarray(0, numInstances * 3);\n }\n _setModelAttributes(model, changedAttributes) {\n const attributeManager = this.getAttributeManager();\n const excludeAttributes = model.userData.excludeAttributes || {};\n const shaderAttributes = attributeManager.getShaderAttributes(changedAttributes, excludeAttributes);\n model.setAttributes(shaderAttributes);\n }\n disablePickingIndex(objectIndex) {\n const data = this.props.data;\n if (!(\"attributes\" in data)) {\n this._disablePickingIndex(objectIndex);\n return;\n }\n const { pickingColors: pickingColors, instancePickingColors: instancePickingColors } = this.getAttributeManager().attributes;\n const colors = pickingColors || instancePickingColors;\n const externalColorAttribute = colors && data.attributes && data.attributes[colors.id];\n if (externalColorAttribute && externalColorAttribute.value) {\n const values = externalColorAttribute.value;\n const objectColor = this.encodePickingColor(objectIndex);\n for(let index = 0; index < data.length; index++){\n const i = colors.getVertexOffset(index);\n if (values[i] === objectColor[0] && values[i + 1] === objectColor[1] && values[i + 2] === objectColor[2]) this._disablePickingIndex(index);\n }\n } else this._disablePickingIndex(objectIndex);\n }\n _disablePickingIndex(objectIndex) {\n const { pickingColors: pickingColors, instancePickingColors: instancePickingColors } = this.getAttributeManager().attributes;\n const colors = pickingColors || instancePickingColors;\n if (!colors) return;\n const start = colors.getVertexOffset(objectIndex);\n const end = colors.getVertexOffset(objectIndex + 1);\n colors.buffer.subData({\n data: new Uint8Array(end - start),\n offset: start\n });\n }\n restorePickingColors() {\n const { pickingColors: pickingColors, instancePickingColors: instancePickingColors } = this.getAttributeManager().attributes;\n const colors = pickingColors || instancePickingColors;\n if (!colors) return;\n if (this.internalState.usesPickingColorCache && colors.value.buffer !== $d26d882a326691db$var$pickingColorCache.buffer) colors.value = $d26d882a326691db$var$pickingColorCache.subarray(0, colors.value.length);\n colors.updateSubBuffer({\n startOffset: 0\n });\n }\n _initialize() {\n (0, $hu5l6.default)(!this.internalState);\n (0, $hu5l6.default)(Number.isFinite(this.props.coordinateSystem));\n (0, $bwVEZ.default)($d26d882a326691db$var$TRACE_INITIALIZE, this);\n const attributeManager = this._getAttributeManager();\n if (attributeManager) attributeManager.addInstanced({\n instancePickingColors: {\n type: 5121,\n size: 3,\n noAlloc: true,\n update: this.calculateInstancePickingColors\n }\n });\n this.internalState = new (0, $5UhUg.default)({\n attributeManager: attributeManager,\n layer: this\n });\n this._clearChangeFlags();\n this.state = {};\n Object.defineProperty(this.state, \"attributeManager\", {\n get: ()=>{\n (0, $4VQgq.default).deprecated(\"layer.state.attributeManager\", \"layer.getAttributeManager()\")();\n return attributeManager;\n }\n });\n this.internalState.uniformTransitions = new (0, $EIvaG.default)(this.context.timeline);\n this.internalState.onAsyncPropUpdated = this._onAsyncPropUpdated.bind(this);\n this.internalState.setAsyncProps(this.props);\n this.initializeState(this.context);\n for (const extension of this.props.extensions)extension.initializeState.call(this, this.context, extension);\n this.setChangeFlags({\n dataChanged: \"init\",\n propsChanged: \"init\",\n viewportChanged: true,\n extensionsChanged: true\n });\n this._update();\n }\n _transferState(oldLayer) {\n (0, $bwVEZ.default)($d26d882a326691db$var$TRACE_MATCHED, this, this === oldLayer);\n const { state: state, internalState: internalState } = oldLayer;\n if (this === oldLayer) return;\n this.internalState = internalState;\n this.state = state;\n this.internalState.setAsyncProps(this.props);\n this._diffProps(this.props, this.internalState.getOldProps());\n }\n _update() {\n const stateNeedsUpdate = this.needsUpdate();\n (0, $bwVEZ.default)($d26d882a326691db$var$TRACE_UPDATE, this, stateNeedsUpdate);\n if (!stateNeedsUpdate) return;\n const currentProps = this.props;\n const context = this.context;\n const internalState = this.internalState;\n const currentViewport = context.viewport;\n const propsInTransition = this._updateUniformTransition();\n internalState.propsInTransition = propsInTransition;\n context.viewport = internalState.viewport || currentViewport;\n this.props = propsInTransition;\n try {\n const updateParams = this._getUpdateParams();\n const oldModels = this.getModels();\n if (context.gl) this.updateState(updateParams);\n else try {\n this.updateState(updateParams);\n } catch (error) {}\n for (const extension of this.props.extensions)extension.updateState.call(this, updateParams, extension);\n const modelChanged = this.getModels()[0] !== oldModels[0];\n this._postUpdate(updateParams, modelChanged);\n } finally{\n context.viewport = currentViewport;\n this.props = currentProps;\n this._clearChangeFlags();\n internalState.needsUpdate = false;\n internalState.resetOldProps();\n }\n }\n _finalize() {\n (0, $bwVEZ.default)($d26d882a326691db$var$TRACE_FINALIZE, this);\n this.finalizeState(this.context);\n for (const extension of this.props.extensions)extension.finalizeState.call(this, this.context, extension);\n }\n _drawLayer({ moduleParameters: moduleParameters = null, uniforms: uniforms = {}, parameters: parameters = {} }) {\n this._updateAttributeTransition();\n const currentProps = this.props;\n const context = this.context;\n this.props = this.internalState.propsInTransition || currentProps;\n const opacity = this.props.opacity;\n uniforms.opacity = Math.pow(opacity, 1 / 2.2);\n try {\n if (moduleParameters) this.setModuleParameters(moduleParameters);\n const { getPolygonOffset: getPolygonOffset } = this.props;\n const offsets = getPolygonOffset && getPolygonOffset(uniforms) || [\n 0,\n 0\n ];\n (0, $2SJyH.setParameters)(context.gl, {\n polygonOffset: offsets\n });\n (0, $2SJyH.withParameters)(context.gl, parameters, ()=>{\n const opts = {\n moduleParameters: moduleParameters,\n uniforms: uniforms,\n parameters: parameters,\n context: context\n };\n for (const extension of this.props.extensions)extension.draw.call(this, opts, extension);\n this.draw(opts);\n });\n } finally{\n this.props = currentProps;\n }\n }\n getChangeFlags() {\n var _this$internalState2;\n return (_this$internalState2 = this.internalState) === null || _this$internalState2 === void 0 ? void 0 : _this$internalState2.changeFlags;\n }\n setChangeFlags(flags) {\n if (!this.internalState) return;\n const { changeFlags: changeFlags } = this.internalState;\n for(const key in flags)if (flags[key]) {\n let flagChanged = false;\n switch(key){\n case \"dataChanged\":\n const dataChangedReason = flags[key];\n const prevDataChangedReason = changeFlags[key];\n if (dataChangedReason && Array.isArray(prevDataChangedReason)) {\n changeFlags.dataChanged = Array.isArray(dataChangedReason) ? prevDataChangedReason.concat(dataChangedReason) : dataChangedReason;\n flagChanged = true;\n }\n default:\n if (!changeFlags[key]) {\n changeFlags[key] = flags[key];\n flagChanged = true;\n }\n }\n if (flagChanged) (0, $bwVEZ.default)($d26d882a326691db$var$TRACE_CHANGE_FLAG, this, key, flags);\n }\n const propsOrDataChanged = Boolean(changeFlags.dataChanged || changeFlags.updateTriggersChanged || changeFlags.propsChanged || changeFlags.extensionsChanged);\n changeFlags.propsOrDataChanged = propsOrDataChanged;\n changeFlags.somethingChanged = propsOrDataChanged || changeFlags.viewportChanged || changeFlags.stateChanged;\n }\n _clearChangeFlags() {\n this.internalState.changeFlags = {\n dataChanged: false,\n propsChanged: false,\n updateTriggersChanged: false,\n viewportChanged: false,\n stateChanged: false,\n extensionsChanged: false,\n propsOrDataChanged: false,\n somethingChanged: false\n };\n }\n _diffProps(newProps, oldProps) {\n const changeFlags = (0, $ciluY.diffProps)(newProps, oldProps);\n if (changeFlags.updateTriggersChanged) {\n for(const key in changeFlags.updateTriggersChanged)if (changeFlags.updateTriggersChanged[key]) this.invalidateAttribute(key);\n }\n if (changeFlags.transitionsChanged) for(const key in changeFlags.transitionsChanged){\n var _newProps$transitions;\n this.internalState.uniformTransitions.add(key, oldProps[key], newProps[key], (_newProps$transitions = newProps.transitions) === null || _newProps$transitions === void 0 ? void 0 : _newProps$transitions[key]);\n }\n return this.setChangeFlags(changeFlags);\n }\n validateProps() {\n (0, $ciluY.validateProps)(this.props);\n }\n updateAutoHighlight(info) {\n if (this.props.autoHighlight && !Number.isInteger(this.props.highlightedObjectIndex)) this._updateAutoHighlight(info);\n }\n _updateAutoHighlight(info) {\n const pickingModuleParameters = {\n pickingSelectedColor: info.picked ? info.color : null\n };\n const { highlightColor: highlightColor } = this.props;\n if (info.picked && typeof highlightColor === \"function\") pickingModuleParameters.pickingHighlightColor = highlightColor(info);\n this.setModuleParameters(pickingModuleParameters);\n this.setNeedsRedraw();\n }\n _getAttributeManager() {\n const context = this.context;\n return new (0, $ke18b.default)(context.gl, {\n id: this.props.id,\n stats: context.stats,\n timeline: context.timeline\n });\n }\n _postUpdate(updateParams, forceUpdate) {\n const { props: props, oldProps: oldProps } = updateParams;\n this.setNeedsRedraw();\n this._updateAttributes();\n const { model: model } = this.state;\n model === null || model === void 0 || model.setInstanceCount(this.getNumInstances());\n const { autoHighlight: autoHighlight, highlightedObjectIndex: highlightedObjectIndex, highlightColor: highlightColor } = props;\n if (forceUpdate || oldProps.autoHighlight !== autoHighlight || oldProps.highlightedObjectIndex !== highlightedObjectIndex || oldProps.highlightColor !== highlightColor) {\n const parameters = {};\n if (!autoHighlight) parameters.pickingSelectedColor = null;\n if (Array.isArray(highlightColor)) parameters.pickingHighlightColor = highlightColor;\n if (forceUpdate || highlightedObjectIndex !== oldProps.highlightedObjectIndex) parameters.pickingSelectedColor = Number.isFinite(highlightedObjectIndex) && highlightedObjectIndex >= 0 ? this.encodePickingColor(highlightedObjectIndex) : null;\n this.setModuleParameters(parameters);\n }\n }\n _getUpdateParams() {\n return {\n props: this.props,\n oldProps: this.internalState.getOldProps(),\n context: this.context,\n changeFlags: this.internalState.changeFlags\n };\n }\n _getNeedsRedraw(opts) {\n if (!this.internalState) return false;\n let redraw = false;\n redraw = redraw || this.internalState.needsRedraw && this.id;\n const attributeManager = this.getAttributeManager();\n const attributeManagerNeedsRedraw = attributeManager ? attributeManager.getNeedsRedraw(opts) : false;\n redraw = redraw || attributeManagerNeedsRedraw;\n if (redraw) for (const extension of this.props.extensions)extension.onNeedsRedraw.call(this, extension);\n this.internalState.needsRedraw = this.internalState.needsRedraw && !opts.clearRedrawFlags;\n return redraw;\n }\n _onAsyncPropUpdated() {\n this._diffProps(this.props, this.internalState.getOldProps());\n this.setNeedsUpdate();\n }\n constructor(...args){\n super(...args);\n (0, $1zR3q.default)(this, \"internalState\", null);\n (0, $1zR3q.default)(this, \"lifecycle\", (0, $lXg0j.LIFECYCLE).NO_STATE);\n (0, $1zR3q.default)(this, \"context\", void 0);\n (0, $1zR3q.default)(this, \"state\", void 0);\n (0, $1zR3q.default)(this, \"parent\", null);\n }\n}\n(0, $1zR3q.default)($d26d882a326691db$export$2e2bcd8739ae039, \"defaultProps\", $d26d882a326691db$var$defaultProps);\n(0, $1zR3q.default)($d26d882a326691db$export$2e2bcd8739ae039, \"layerName\", \"Layer\");\n\n});\nparcelRegister(\"7gQQK\", function(module, exports) {\n\n$parcel$export(module.exports, \"COORDINATE_SYSTEM\", function () { return $54b305e24bb885b8$export$e4ccd0285368e485; });\n$parcel$export(module.exports, \"PROJECTION_MODE\", function () { return $54b305e24bb885b8$export$3697aaebd269a548; });\n$parcel$export(module.exports, \"UNIT\", function () { return $54b305e24bb885b8$export$97361b7a0c542045; });\n$parcel$export(module.exports, \"EVENTS\", function () { return $54b305e24bb885b8$export$fa3d5b535a2458a1; });\n\nvar $4VQgq = parcelRequire(\"4VQgq\");\nconst $54b305e24bb885b8$export$e4ccd0285368e485 = {\n DEFAULT: -1,\n LNGLAT: 1,\n METER_OFFSETS: 2,\n LNGLAT_OFFSETS: 3,\n CARTESIAN: 0\n};\nObject.defineProperty($54b305e24bb885b8$export$e4ccd0285368e485, \"IDENTITY\", {\n get: ()=>{\n (0, $4VQgq.default).deprecated(\"COORDINATE_SYSTEM.IDENTITY\", \"COORDINATE_SYSTEM.CARTESIAN\")();\n return 0;\n }\n});\nconst $54b305e24bb885b8$export$3697aaebd269a548 = {\n WEB_MERCATOR: 1,\n GLOBE: 2,\n WEB_MERCATOR_AUTO_OFFSET: 4,\n IDENTITY: 0\n};\nconst $54b305e24bb885b8$export$97361b7a0c542045 = {\n common: 0,\n meters: 1,\n pixels: 2\n};\nconst $54b305e24bb885b8$export$fa3d5b535a2458a1 = {\n click: {\n handler: \"onClick\"\n },\n panstart: {\n handler: \"onDragStart\"\n },\n panmove: {\n handler: \"onDrag\"\n },\n panend: {\n handler: \"onDragEnd\"\n }\n};\nconst $54b305e24bb885b8$export$b56168d831461ce2 = {\n DRAW: \"draw\",\n MASK: \"mask\",\n TERRAIN: \"terrain\"\n};\n\n});\nparcelRegister(\"4VQgq\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $397506d1c45d8e82$export$2e2bcd8739ae039; });\nparcelRequire(\"hBHxj\");\nvar $1s4ih = parcelRequire(\"1s4ih\");\nvar $397506d1c45d8e82$export$2e2bcd8739ae039 = new (0, $1s4ih.Log)({\n id: \"deck\"\n});\n\n});\nparcelRegister(\"hBHxj\", function(module, exports) {\n\n$parcel$export(module.exports, \"Log\", function () { return (parcelRequire(\"1s4ih\")).Log; });\n\nvar $1s4ih = parcelRequire(\"1s4ih\");\n\n\n\n\n\n\nvar $cd17a9c5435a1e2f$export$2e2bcd8739ae039 = new (0, $1s4ih.Log)({\n id: \"@probe.gl/log\"\n});\n\n});\nparcelRegister(\"1s4ih\", function(module, exports) {\n\n$parcel$export(module.exports, \"Log\", function () { return $10ebbc9d5655d27e$export$ce30dbb46644d06c; });\n\nvar $lK3ac = parcelRequire(\"lK3ac\");\n\nvar $jeIEj = parcelRequire(\"jeIEj\");\nvar $h6Pse = parcelRequire(\"h6Pse\");\n\nvar $ae2RA = parcelRequire(\"ae2RA\");\n\nvar $6liXj = parcelRequire(\"6liXj\");\n\nvar $abwsY = parcelRequire(\"abwsY\");\n\nvar $1ezvW = parcelRequire(\"1ezvW\");\n\nvar $dkjRw = parcelRequire(\"dkjRw\");\n\nvar $3odO6 = parcelRequire(\"3odO6\");\nconst $10ebbc9d5655d27e$var$originalConsole = {\n debug: (0, $jeIEj.default) ? console.debug || console.log : console.log,\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error\n};\nconst $10ebbc9d5655d27e$var$DEFAULT_SETTINGS = {\n enabled: true,\n level: 0\n};\nfunction $10ebbc9d5655d27e$var$noop() {}\nconst $10ebbc9d5655d27e$var$cache = {};\nconst $10ebbc9d5655d27e$var$ONCE = {\n once: true\n};\nclass $10ebbc9d5655d27e$export$ce30dbb46644d06c {\n set level(newLevel) {\n this.setLevel(newLevel);\n }\n get level() {\n return this.getLevel();\n }\n isEnabled() {\n return this._storage.config.enabled;\n }\n getLevel() {\n return this._storage.config.level;\n }\n getTotal() {\n return Number(((0, $3odO6.getHiResTimestamp)() - this._startTs).toPrecision(10));\n }\n getDelta() {\n return Number(((0, $3odO6.getHiResTimestamp)() - this._deltaTs).toPrecision(10));\n }\n set priority(newPriority) {\n this.level = newPriority;\n }\n get priority() {\n return this.level;\n }\n getPriority() {\n return this.level;\n }\n enable() {\n let enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this._storage.setConfiguration({\n enabled: enabled\n });\n return this;\n }\n setLevel(level) {\n this._storage.setConfiguration({\n level: level\n });\n return this;\n }\n get(setting) {\n return this._storage.config[setting];\n }\n set(setting, value) {\n this._storage.setConfiguration({\n [setting]: value\n });\n }\n settings() {\n if (console.table) console.table(this._storage.config);\n else console.log(this._storage.config);\n }\n assert(condition, message) {\n (0, $dkjRw.default)(condition, message);\n }\n warn(message) {\n return this._getLogFunction(0, message, $10ebbc9d5655d27e$var$originalConsole.warn, arguments, $10ebbc9d5655d27e$var$ONCE);\n }\n error(message) {\n return this._getLogFunction(0, message, $10ebbc9d5655d27e$var$originalConsole.error, arguments);\n }\n deprecated(oldUsage, newUsage) {\n return this.warn(\"`\".concat(oldUsage, \"` is deprecated and will be removed in a later version. Use `\").concat(newUsage, \"` instead\"));\n }\n removed(oldUsage, newUsage) {\n return this.error(\"`\".concat(oldUsage, \"` has been removed. Use `\").concat(newUsage, \"` instead\"));\n }\n probe(logLevel, message) {\n return this._getLogFunction(logLevel, message, $10ebbc9d5655d27e$var$originalConsole.log, arguments, {\n time: true,\n once: true\n });\n }\n log(logLevel, message) {\n return this._getLogFunction(logLevel, message, $10ebbc9d5655d27e$var$originalConsole.debug, arguments);\n }\n info(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.info, arguments);\n }\n once(logLevel, message) {\n for(var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++)args[_key - 2] = arguments[_key];\n return this._getLogFunction(logLevel, message, $10ebbc9d5655d27e$var$originalConsole.debug || $10ebbc9d5655d27e$var$originalConsole.info, arguments, $10ebbc9d5655d27e$var$ONCE);\n }\n table(logLevel, table, columns) {\n if (table) return this._getLogFunction(logLevel, table, console.table || $10ebbc9d5655d27e$var$noop, columns && [\n columns\n ], {\n tag: $10ebbc9d5655d27e$var$getTableHeader(table)\n });\n return $10ebbc9d5655d27e$var$noop;\n }\n image(_ref) {\n let { logLevel: logLevel, priority: priority, image: image, message: message = \"\", scale: scale = 1 } = _ref;\n if (!this._shouldLog(logLevel || priority)) return $10ebbc9d5655d27e$var$noop;\n return (0, $jeIEj.default) ? $10ebbc9d5655d27e$var$logImageInBrowser({\n image: image,\n message: message,\n scale: scale\n }) : $10ebbc9d5655d27e$var$logImageInNode({\n image: image,\n message: message,\n scale: scale\n });\n }\n time(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);\n }\n timeEnd(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeEnd ? console.timeEnd : console.info);\n }\n timeStamp(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeStamp || $10ebbc9d5655d27e$var$noop);\n }\n group(logLevel, message) {\n let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n collapsed: false\n };\n const options = $10ebbc9d5655d27e$export$abc60e668512edf9({\n logLevel: logLevel,\n message: message,\n opts: opts\n });\n const { collapsed: collapsed } = opts;\n options.method = (collapsed ? console.groupCollapsed : console.group) || console.info;\n return this._getLogFunction(options);\n }\n groupCollapsed(logLevel, message) {\n let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.group(logLevel, message, Object.assign({}, opts, {\n collapsed: true\n }));\n }\n groupEnd(logLevel) {\n return this._getLogFunction(logLevel, \"\", console.groupEnd || $10ebbc9d5655d27e$var$noop);\n }\n withGroup(logLevel, message, func) {\n this.group(logLevel, message)();\n try {\n func();\n } finally{\n this.groupEnd(logLevel)();\n }\n }\n trace() {\n if (console.trace) console.trace();\n }\n _shouldLog(logLevel) {\n return this.isEnabled() && this.getLevel() >= $10ebbc9d5655d27e$var$normalizeLogLevel(logLevel);\n }\n _getLogFunction(logLevel, message, method, args, opts) {\n if (this._shouldLog(logLevel)) {\n opts = $10ebbc9d5655d27e$export$abc60e668512edf9({\n logLevel: logLevel,\n message: message,\n args: args,\n opts: opts\n });\n method = method || opts.method;\n (0, $dkjRw.default)(method);\n opts.total = this.getTotal();\n opts.delta = this.getDelta();\n this._deltaTs = (0, $3odO6.getHiResTimestamp)();\n const tag = opts.tag || opts.message;\n if (opts.once) {\n if (!$10ebbc9d5655d27e$var$cache[tag]) $10ebbc9d5655d27e$var$cache[tag] = (0, $3odO6.getHiResTimestamp)();\n else return $10ebbc9d5655d27e$var$noop;\n }\n message = $10ebbc9d5655d27e$var$decorateMessage(this.id, opts.message, opts);\n return method.bind(console, message, ...opts.args);\n }\n return $10ebbc9d5655d27e$var$noop;\n }\n constructor(){\n let { id: id } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n id: \"\"\n };\n (0, $lK3ac.default)(this, \"id\", void 0);\n (0, $lK3ac.default)(this, \"VERSION\", (0, $h6Pse.VERSION));\n (0, $lK3ac.default)(this, \"_startTs\", (0, $3odO6.getHiResTimestamp)());\n (0, $lK3ac.default)(this, \"_deltaTs\", (0, $3odO6.getHiResTimestamp)());\n (0, $lK3ac.default)(this, \"_storage\", void 0);\n (0, $lK3ac.default)(this, \"userData\", {});\n (0, $lK3ac.default)(this, \"LOG_THROTTLE_TIMEOUT\", 0);\n this.id = id;\n this.userData = {};\n this._storage = new (0, $ae2RA.LocalStorage)(\"__probe-\".concat(this.id, \"__\"), $10ebbc9d5655d27e$var$DEFAULT_SETTINGS);\n this.timeStamp(\"\".concat(this.id, \" started\"));\n (0, $1ezvW.autobind)(this);\n Object.seal(this);\n }\n}\n(0, $lK3ac.default)($10ebbc9d5655d27e$export$ce30dbb46644d06c, \"VERSION\", (0, $h6Pse.VERSION));\nfunction $10ebbc9d5655d27e$var$normalizeLogLevel(logLevel) {\n if (!logLevel) return 0;\n let resolvedLevel;\n switch(typeof logLevel){\n case \"number\":\n resolvedLevel = logLevel;\n break;\n case \"object\":\n resolvedLevel = logLevel.logLevel || logLevel.priority || 0;\n break;\n default:\n return 0;\n }\n (0, $dkjRw.default)(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);\n return resolvedLevel;\n}\nfunction $10ebbc9d5655d27e$export$abc60e668512edf9(opts) {\n const { logLevel: logLevel, message: message } = opts;\n opts.logLevel = $10ebbc9d5655d27e$var$normalizeLogLevel(logLevel);\n const args = opts.args ? Array.from(opts.args) : [];\n while(args.length && args.shift() !== message);\n switch(typeof logLevel){\n case \"string\":\n case \"function\":\n if (message !== undefined) args.unshift(message);\n opts.message = logLevel;\n break;\n case \"object\":\n Object.assign(opts, logLevel);\n break;\n default:\n }\n if (typeof opts.message === \"function\") opts.message = opts.message();\n const messageType = typeof opts.message;\n (0, $dkjRw.default)(messageType === \"string\" || messageType === \"object\");\n return Object.assign(opts, {\n args: args\n }, opts.opts);\n}\nfunction $10ebbc9d5655d27e$var$decorateMessage(id, message, opts) {\n if (typeof message === \"string\") {\n const time = opts.time ? (0, $6liXj.leftPad)((0, $6liXj.formatTime)(opts.total)) : \"\";\n message = opts.time ? \"\".concat(id, \": \").concat(time, \" \").concat(message) : \"\".concat(id, \": \").concat(message);\n message = (0, $abwsY.addColor)(message, opts.color, opts.background);\n }\n return message;\n}\nfunction $10ebbc9d5655d27e$var$logImageInNode(_ref2) {\n let { image: image, message: message = \"\", scale: scale = 1 } = _ref2;\n console.warn(\"removed\");\n return $10ebbc9d5655d27e$var$noop;\n}\nfunction $10ebbc9d5655d27e$var$logImageInBrowser(_ref3) {\n let { image: image, message: message = \"\", scale: scale = 1 } = _ref3;\n if (typeof image === \"string\") {\n const img = new Image();\n img.onload = ()=>{\n const args = (0, $6liXj.formatImage)(img, message, scale);\n console.log(...args);\n };\n img.src = image;\n return $10ebbc9d5655d27e$var$noop;\n }\n const element = image.nodeName || \"\";\n if (element.toLowerCase() === \"img\") {\n console.log(...(0, $6liXj.formatImage)(image, message, scale));\n return $10ebbc9d5655d27e$var$noop;\n }\n if (element.toLowerCase() === \"canvas\") {\n const img = new Image();\n img.onload = ()=>console.log(...(0, $6liXj.formatImage)(img, message, scale));\n img.src = image.toDataURL();\n return $10ebbc9d5655d27e$var$noop;\n }\n return $10ebbc9d5655d27e$var$noop;\n}\nfunction $10ebbc9d5655d27e$var$getTableHeader(table) {\n for(const key in table){\n for(const title in table[key])return title || \"untitled\";\n }\n return \"empty\";\n}\n\n});\nparcelRegister(\"lK3ac\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $fd40590c59a4f438$export$2e2bcd8739ae039; });\nfunction $fd40590c59a4f438$export$2e2bcd8739ae039(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\n\n});\n\nparcelRegister(\"jeIEj\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $e011f5809f2010bb$export$2e2bcd8739ae039; });\n\nvar $1366E = parcelRequire(\"1366E\");\n\nvar $95Bnk = parcelRequire(\"95Bnk\");\nfunction $e011f5809f2010bb$export$2e2bcd8739ae039() {\n const isNode = typeof $95Bnk === \"object\" && String($95Bnk) === \"[object process]\" && false;\n return !isNode || (0, $1366E.default)();\n}\nfunction $e011f5809f2010bb$export$fb09d24fafba666a() {\n return $e011f5809f2010bb$export$2e2bcd8739ae039() && typeof document !== \"undefined\";\n}\n\n});\nparcelRegister(\"1366E\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $0c3aced86bf66d7a$export$2e2bcd8739ae039; });\n\nvar $95Bnk = parcelRequire(\"95Bnk\");\nfunction $0c3aced86bf66d7a$export$2e2bcd8739ae039(mockUserAgent) {\n if (typeof window !== \"undefined\" && typeof window.process === \"object\" && window.process.type === \"renderer\") return true;\n if (typeof $95Bnk !== \"undefined\" && typeof $95Bnk.versions === \"object\" && Boolean($95Bnk.versions[\"electron\"])) return true;\n const realUserAgent = typeof navigator === \"object\" && typeof navigator.userAgent === \"string\" && navigator.userAgent;\n const userAgent = mockUserAgent || realUserAgent;\n if (userAgent && userAgent.indexOf(\"Electron\") >= 0) return true;\n return false;\n}\n\n});\n\n\nparcelRegister(\"h6Pse\", function(module, exports) {\n\n$parcel$export(module.exports, \"VERSION\", function () { return $c74ae8f327c164cf$export$a4ad2735b021c132; });\n\nvar $jeIEj = parcelRequire(\"jeIEj\");\n\nconst $c74ae8f327c164cf$export$a4ad2735b021c132 = typeof __VERSION__ !== \"undefined\" ? __VERSION__ : \"untranspiled source\";\nconst $c74ae8f327c164cf$export$4e09c449d6c407f7 = (0, $jeIEj.default)();\n\n});\n\nparcelRegister(\"ae2RA\", function(module, exports) {\n\n$parcel$export(module.exports, \"LocalStorage\", function () { return $771d6ec6dabfad87$export$19fffca37ef3e106; });\n\nvar $lK3ac = parcelRequire(\"lK3ac\");\nfunction $771d6ec6dabfad87$var$getStorage(type) {\n try {\n const storage = window[type];\n const x = \"__storage_test__\";\n storage.setItem(x, x);\n storage.removeItem(x);\n return storage;\n } catch (e) {\n return null;\n }\n}\nclass $771d6ec6dabfad87$export$19fffca37ef3e106 {\n getConfiguration() {\n return this.config;\n }\n setConfiguration(configuration) {\n Object.assign(this.config, configuration);\n if (this.storage) {\n const serialized = JSON.stringify(this.config);\n this.storage.setItem(this.id, serialized);\n }\n }\n _loadConfiguration() {\n let configuration = {};\n if (this.storage) {\n const serializedConfiguration = this.storage.getItem(this.id);\n configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};\n }\n Object.assign(this.config, configuration);\n return this;\n }\n constructor(id, defaultConfig){\n let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"sessionStorage\";\n (0, $lK3ac.default)(this, \"storage\", void 0);\n (0, $lK3ac.default)(this, \"id\", void 0);\n (0, $lK3ac.default)(this, \"config\", void 0);\n this.storage = $771d6ec6dabfad87$var$getStorage(type);\n this.id = id;\n this.config = defaultConfig;\n this._loadConfiguration();\n }\n}\n\n});\n\nparcelRegister(\"6liXj\", function(module, exports) {\n\n$parcel$export(module.exports, \"formatTime\", function () { return $49e3686a0b35ef63$export$3203edd9e5edd663; });\n$parcel$export(module.exports, \"leftPad\", function () { return $49e3686a0b35ef63$export$cbb503201166aab7; });\n$parcel$export(module.exports, \"formatImage\", function () { return $49e3686a0b35ef63$export$9171d83acafa047c; });\nfunction $49e3686a0b35ef63$export$3203edd9e5edd663(ms) {\n let formatted;\n if (ms < 10) formatted = \"\".concat(ms.toFixed(2), \"ms\");\n else if (ms < 100) formatted = \"\".concat(ms.toFixed(1), \"ms\");\n else if (ms < 1000) formatted = \"\".concat(ms.toFixed(0), \"ms\");\n else formatted = \"\".concat((ms / 1000).toFixed(2), \"s\");\n return formatted;\n}\nfunction $49e3686a0b35ef63$export$cbb503201166aab7(string) {\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 8;\n const padLength = Math.max(length - string.length, 0);\n return \"\".concat(\" \".repeat(padLength)).concat(string);\n}\nfunction $49e3686a0b35ef63$export$390245bab32fb60f(string) {\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 8;\n const padLength = Math.max(length - string.length, 0);\n return \"\".concat(string).concat(\" \".repeat(padLength));\n}\nfunction $49e3686a0b35ef63$export$7c4d25c0c3217d8c(v) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const EPSILON = 1e-16;\n const { isInteger: isInteger = false } = opts;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) return $49e3686a0b35ef63$var$formatArrayValue(v, opts);\n if (!Number.isFinite(v)) return String(v);\n if (Math.abs(v) < EPSILON) return isInteger ? \"0\" : \"0.\";\n if (isInteger) return v.toFixed(0);\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) return v.toFixed(0);\n const string = v.toPrecision(2);\n const decimal = string.indexOf(\".0\");\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\nfunction $49e3686a0b35ef63$var$formatArrayValue(v, opts) {\n const { maxElts: maxElts = 16, size: size = 1 } = opts;\n let string = \"[\";\n for(let i = 0; i < v.length && i < maxElts; ++i){\n if (i > 0) string += \",\".concat(i % size === 0 ? \" \" : \"\");\n string += $49e3686a0b35ef63$export$7c4d25c0c3217d8c(v[i], opts);\n }\n const terminator = v.length > maxElts ? \"...\" : \"]\";\n return \"\".concat(string).concat(terminator);\n}\nfunction $49e3686a0b35ef63$export$9171d83acafa047c(image, message, scale) {\n let maxWidth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 600;\n const imageUrl = image.src.replace(/\\(/g, \"%28\").replace(/\\)/g, \"%29\");\n if (image.width > maxWidth) scale = Math.min(scale, maxWidth / image.width);\n const width = image.width * scale;\n const height = image.height * scale;\n const style = [\n \"font-size:1px;\",\n \"padding:\".concat(Math.floor(height / 2), \"px \").concat(Math.floor(width / 2), \"px;\"),\n \"line-height:\".concat(height, \"px;\"),\n \"background:url(\".concat(imageUrl, \");\"),\n \"background-size:\".concat(width, \"px \").concat(height, \"px;\"),\n \"color:transparent;\"\n ].join(\"\");\n return [\n \"\".concat(message, \" %c+\"),\n style\n ];\n}\n\n});\n\nparcelRegister(\"abwsY\", function(module, exports) {\n\n$parcel$export(module.exports, \"addColor\", function () { return $76a41d98fb1b3c9a$export$4c4d9288a45f1fb3; });\n\nvar $jeIEj = parcelRequire(\"jeIEj\");\nlet $76a41d98fb1b3c9a$export$9b982809044276a6;\n(function(COLOR) {\n COLOR[COLOR[\"BLACK\"] = 30] = \"BLACK\";\n COLOR[COLOR[\"RED\"] = 31] = \"RED\";\n COLOR[COLOR[\"GREEN\"] = 32] = \"GREEN\";\n COLOR[COLOR[\"YELLOW\"] = 33] = \"YELLOW\";\n COLOR[COLOR[\"BLUE\"] = 34] = \"BLUE\";\n COLOR[COLOR[\"MAGENTA\"] = 35] = \"MAGENTA\";\n COLOR[COLOR[\"CYAN\"] = 36] = \"CYAN\";\n COLOR[COLOR[\"WHITE\"] = 37] = \"WHITE\";\n COLOR[COLOR[\"BRIGHT_BLACK\"] = 90] = \"BRIGHT_BLACK\";\n COLOR[COLOR[\"BRIGHT_RED\"] = 91] = \"BRIGHT_RED\";\n COLOR[COLOR[\"BRIGHT_GREEN\"] = 92] = \"BRIGHT_GREEN\";\n COLOR[COLOR[\"BRIGHT_YELLOW\"] = 93] = \"BRIGHT_YELLOW\";\n COLOR[COLOR[\"BRIGHT_BLUE\"] = 94] = \"BRIGHT_BLUE\";\n COLOR[COLOR[\"BRIGHT_MAGENTA\"] = 95] = \"BRIGHT_MAGENTA\";\n COLOR[COLOR[\"BRIGHT_CYAN\"] = 96] = \"BRIGHT_CYAN\";\n COLOR[COLOR[\"BRIGHT_WHITE\"] = 97] = \"BRIGHT_WHITE\";\n})($76a41d98fb1b3c9a$export$9b982809044276a6 || ($76a41d98fb1b3c9a$export$9b982809044276a6 = {}));\nfunction $76a41d98fb1b3c9a$var$getColor(color) {\n return typeof color === \"string\" ? $76a41d98fb1b3c9a$export$9b982809044276a6[color.toUpperCase()] || $76a41d98fb1b3c9a$export$9b982809044276a6.WHITE : color;\n}\nfunction $76a41d98fb1b3c9a$export$4c4d9288a45f1fb3(string, color, background) {\n if (!(0, $jeIEj.default) && typeof string === \"string\") {\n if (color) {\n color = $76a41d98fb1b3c9a$var$getColor(color);\n string = \"\\x1b[\".concat(color, \"m\").concat(string, \"\\x1b[39m\");\n }\n if (background) {\n color = $76a41d98fb1b3c9a$var$getColor(background);\n string = \"\\x1b[\".concat(background + 10, \"m\").concat(string, \"\\x1b[49m\");\n }\n }\n return string;\n}\n\n});\n\nparcelRegister(\"1ezvW\", function(module, exports) {\n\n$parcel$export(module.exports, \"autobind\", function () { return $0e62a5a71b8b8104$export$f648f36420f83db; });\nfunction $0e62a5a71b8b8104$export$f648f36420f83db(obj) {\n let predefined = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [\n \"constructor\"\n ];\n const proto = Object.getPrototypeOf(obj);\n const propNames = Object.getOwnPropertyNames(proto);\n for (const key of propNames){\n if (typeof obj[key] === \"function\") {\n if (!predefined.find((name)=>key === name)) obj[key] = obj[key].bind(obj);\n }\n }\n}\n\n});\n\nparcelRegister(\"dkjRw\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9b3c8cd91ac21900$export$2e2bcd8739ae039; });\nfunction $9b3c8cd91ac21900$export$2e2bcd8739ae039(condition, message) {\n if (!condition) throw new Error(message || \"Assertion failed\");\n}\n\n});\n\nparcelRegister(\"3odO6\", function(module, exports) {\n\n$parcel$export(module.exports, \"getHiResTimestamp\", function () { return $277e52ceb50b7f2e$export$19cd34ab73b4c7a7; });\n\nvar $jeIEj = parcelRequire(\"jeIEj\");\nvar $e6ekZ = parcelRequire(\"e6ekZ\");\nfunction $277e52ceb50b7f2e$export$19cd34ab73b4c7a7() {\n let timestamp;\n if ((0, $jeIEj.default) && \"performance\" in (0, $e6ekZ.window)) {\n var _window$performance, _window$performance$n;\n timestamp = (0, $e6ekZ.window) === null || (0, $e6ekZ.window) === void 0 ? void 0 : (_window$performance = (0, $e6ekZ.window).performance) === null || _window$performance === void 0 ? void 0 : (_window$performance$n = _window$performance.now) === null || _window$performance$n === void 0 ? void 0 : _window$performance$n.call(_window$performance);\n } else if (\"hrtime\" in (0, $e6ekZ.process)) {\n var _process$hrtime;\n const timeParts = (0, $e6ekZ.process) === null || (0, $e6ekZ.process) === void 0 ? void 0 : (_process$hrtime = (0, $e6ekZ.process).hrtime) === null || _process$hrtime === void 0 ? void 0 : _process$hrtime.call((0, $e6ekZ.process));\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else timestamp = Date.now();\n return timestamp;\n}\n\n});\nparcelRegister(\"e6ekZ\", function(module, exports) {\n\n$parcel$export(module.exports, \"window\", function () { return $a43cbf58b6e528bc$export$8291e5b88f90ce4; });\n$parcel$export(module.exports, \"process\", function () { return $a43cbf58b6e528bc$export$e54fe5b0f43758f7; });\n\nvar $95Bnk = parcelRequire(\"95Bnk\");\nconst $a43cbf58b6e528bc$var$globals = {\n self: typeof self !== \"undefined\" && self,\n window: typeof window !== \"undefined\" && window,\n global: typeof $parcel$global !== \"undefined\" && $parcel$global,\n document: typeof document !== \"undefined\" && document,\n process: typeof $95Bnk === \"object\" && $95Bnk\n};\nconst $a43cbf58b6e528bc$export$90b4d2ff6acb88af = globalThis;\nconst $a43cbf58b6e528bc$export$82c2e460fb230c2a = $a43cbf58b6e528bc$var$globals.self || $a43cbf58b6e528bc$var$globals.window || $a43cbf58b6e528bc$var$globals.global;\nconst $a43cbf58b6e528bc$export$8291e5b88f90ce4 = $a43cbf58b6e528bc$var$globals.window || $a43cbf58b6e528bc$var$globals.self || $a43cbf58b6e528bc$var$globals.global;\nconst $a43cbf58b6e528bc$export$5a7bfc01df82fcd1 = $a43cbf58b6e528bc$var$globals.document || {};\nconst $a43cbf58b6e528bc$export$e54fe5b0f43758f7 = $a43cbf58b6e528bc$var$globals.process || {};\nconst $a43cbf58b6e528bc$export$e896d9a1b4631fa1 = console;\n\n});\n\n\n\n\n\n\nparcelRegister(\"ke18b\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $03ccbde779749d44$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $1zR3q = parcelRequire(\"1zR3q\");\n\nvar $yVHST = parcelRequire(\"yVHST\");\n\nvar $4VQgq = parcelRequire(\"4VQgq\");\n\nvar $b9Qhn = parcelRequire(\"b9Qhn\");\n\nvar $9kyEf = parcelRequire(\"9kyEf\");\n\nvar $bwVEZ = parcelRequire(\"bwVEZ\");\n\nvar $9FKfW = parcelRequire(\"9FKfW\");\nconst $03ccbde779749d44$var$TRACE_INVALIDATE = \"attributeManager.invalidate\";\nconst $03ccbde779749d44$var$TRACE_UPDATE_START = \"attributeManager.updateStart\";\nconst $03ccbde779749d44$var$TRACE_UPDATE_END = \"attributeManager.updateEnd\";\nconst $03ccbde779749d44$var$TRACE_ATTRIBUTE_UPDATE_START = \"attribute.updateStart\";\nconst $03ccbde779749d44$var$TRACE_ATTRIBUTE_ALLOCATE = \"attribute.allocate\";\nconst $03ccbde779749d44$var$TRACE_ATTRIBUTE_UPDATE_END = \"attribute.updateEnd\";\nclass $03ccbde779749d44$export$2e2bcd8739ae039 {\n finalize() {\n for(const attributeName in this.attributes)this.attributes[attributeName].delete();\n this.attributeTransitionManager.finalize();\n }\n getNeedsRedraw(opts = {\n clearRedrawFlags: false\n }) {\n const redraw = this.needsRedraw;\n this.needsRedraw = this.needsRedraw && !opts.clearRedrawFlags;\n return redraw && this.id;\n }\n setNeedsRedraw() {\n this.needsRedraw = true;\n }\n add(attributes) {\n this._add(attributes);\n }\n addInstanced(attributes) {\n this._add(attributes, {\n instanced: 1\n });\n }\n remove(attributeNameArray) {\n for (const name of attributeNameArray)if (this.attributes[name] !== undefined) {\n this.attributes[name].delete();\n delete this.attributes[name];\n }\n }\n invalidate(triggerName, dataRange) {\n const invalidatedAttributes = this._invalidateTrigger(triggerName, dataRange);\n (0, $bwVEZ.default)($03ccbde779749d44$var$TRACE_INVALIDATE, this, triggerName, invalidatedAttributes);\n }\n invalidateAll(dataRange) {\n for(const attributeName in this.attributes)this.attributes[attributeName].setNeedsUpdate(attributeName, dataRange);\n (0, $bwVEZ.default)($03ccbde779749d44$var$TRACE_INVALIDATE, this, \"all\");\n }\n update({ data: data, numInstances: numInstances, startIndices: startIndices = null, transitions: transitions, props: props = {}, buffers: buffers = {}, context: context = {} }) {\n let updated = false;\n (0, $bwVEZ.default)($03ccbde779749d44$var$TRACE_UPDATE_START, this);\n if (this.stats) this.stats.get(\"Update Attributes\").timeStart();\n for(const attributeName in this.attributes){\n const attribute = this.attributes[attributeName];\n const accessorName = attribute.settings.accessor;\n attribute.startIndices = startIndices;\n attribute.numInstances = numInstances;\n if (props[attributeName]) (0, $4VQgq.default).removed(\"props.\".concat(attributeName), \"data.attributes.\".concat(attributeName))();\n if (attribute.setExternalBuffer(buffers[attributeName])) ;\n else if (attribute.setBinaryValue(typeof accessorName === \"string\" ? buffers[accessorName] : undefined, data.startIndices)) ;\n else if (typeof accessorName === \"string\" && !buffers[accessorName] && attribute.setConstantValue(props[accessorName])) ;\n else if (attribute.needsUpdate()) {\n updated = true;\n this._updateAttribute({\n attribute: attribute,\n numInstances: numInstances,\n data: data,\n props: props,\n context: context\n });\n }\n this.needsRedraw = this.needsRedraw || attribute.needsRedraw();\n }\n if (updated) (0, $bwVEZ.default)($03ccbde779749d44$var$TRACE_UPDATE_END, this, numInstances);\n if (this.stats) this.stats.get(\"Update Attributes\").timeEnd();\n this.attributeTransitionManager.update({\n attributes: this.attributes,\n numInstances: numInstances,\n transitions: transitions\n });\n }\n updateTransition() {\n const { attributeTransitionManager: attributeTransitionManager } = this;\n const transitionUpdated = attributeTransitionManager.run();\n this.needsRedraw = this.needsRedraw || transitionUpdated;\n return transitionUpdated;\n }\n getAttributes() {\n return this.attributes;\n }\n getBounds(attributeNames) {\n const bounds = attributeNames.map((attributeName)=>{\n var _this$attributes$attr;\n return (_this$attributes$attr = this.attributes[attributeName]) === null || _this$attributes$attr === void 0 ? void 0 : _this$attributes$attr.getBounds();\n });\n return this.mergeBoundsMemoized(bounds);\n }\n getChangedAttributes(opts = {\n clearChangedFlags: false\n }) {\n const { attributes: attributes, attributeTransitionManager: attributeTransitionManager } = this;\n const changedAttributes = (0, $2QP2i._)({}, attributeTransitionManager.getAttributes());\n for(const attributeName in attributes){\n const attribute = attributes[attributeName];\n if (attribute.needsRedraw(opts) && !attributeTransitionManager.hasAttribute(attributeName)) changedAttributes[attributeName] = attribute;\n }\n return changedAttributes;\n }\n getShaderAttributes(attributes, excludeAttributes = {}) {\n if (!attributes) attributes = this.getAttributes();\n const shaderAttributes = {};\n for(const attributeName in attributes)if (!excludeAttributes[attributeName]) Object.assign(shaderAttributes, attributes[attributeName].getShaderAttributes());\n return shaderAttributes;\n }\n _add(attributes, extraProps = {}) {\n for(const attributeName in attributes){\n const attribute = attributes[attributeName];\n this.attributes[attributeName] = this._createAttribute(attributeName, attribute, extraProps);\n }\n this._mapUpdateTriggersToAttributes();\n }\n _createAttribute(name, attribute, extraProps) {\n const props = (0, $edHbI._)((0, $2QP2i._)({}, attribute), {\n id: name,\n size: attribute.isIndexed && 1 || attribute.size || 1,\n divisor: extraProps.instanced ? 1 : attribute.divisor || 0\n });\n return new (0, $yVHST.default)(this.gl, props);\n }\n _mapUpdateTriggersToAttributes() {\n const triggers = {};\n for(const attributeName in this.attributes){\n const attribute = this.attributes[attributeName];\n attribute.getUpdateTriggers().forEach((triggerName)=>{\n if (!triggers[triggerName]) triggers[triggerName] = [];\n triggers[triggerName].push(attributeName);\n });\n }\n this.updateTriggers = triggers;\n }\n _invalidateTrigger(triggerName, dataRange) {\n const { attributes: attributes, updateTriggers: updateTriggers } = this;\n const invalidatedAttributes = updateTriggers[triggerName];\n if (invalidatedAttributes) invalidatedAttributes.forEach((name)=>{\n const attribute = attributes[name];\n if (attribute) attribute.setNeedsUpdate(attribute.id, dataRange);\n });\n return invalidatedAttributes;\n }\n _updateAttribute(opts) {\n const { attribute: attribute, numInstances: numInstances } = opts;\n (0, $bwVEZ.default)($03ccbde779749d44$var$TRACE_ATTRIBUTE_UPDATE_START, attribute);\n if (attribute.constant) {\n attribute.setConstantValue(attribute.value);\n return;\n }\n if (attribute.allocate(numInstances)) (0, $bwVEZ.default)($03ccbde779749d44$var$TRACE_ATTRIBUTE_ALLOCATE, attribute, numInstances);\n const updated = attribute.updateBuffer(opts);\n if (updated) {\n this.needsRedraw = true;\n (0, $bwVEZ.default)($03ccbde779749d44$var$TRACE_ATTRIBUTE_UPDATE_END, attribute, numInstances);\n }\n }\n constructor(gl, { id: id = \"attribute-manager\", stats: stats, timeline: timeline } = {}){\n (0, $1zR3q.default)(this, \"id\", void 0);\n (0, $1zR3q.default)(this, \"gl\", void 0);\n (0, $1zR3q.default)(this, \"attributes\", void 0);\n (0, $1zR3q.default)(this, \"updateTriggers\", void 0);\n (0, $1zR3q.default)(this, \"needsRedraw\", void 0);\n (0, $1zR3q.default)(this, \"userData\", void 0);\n (0, $1zR3q.default)(this, \"stats\", void 0);\n (0, $1zR3q.default)(this, \"attributeTransitionManager\", void 0);\n (0, $1zR3q.default)(this, \"mergeBoundsMemoized\", (0, $b9Qhn.default)((0, $9kyEf.mergeBounds)));\n this.id = id;\n this.gl = gl;\n this.attributes = {};\n this.updateTriggers = {};\n this.needsRedraw = true;\n this.userData = {};\n this.stats = stats;\n this.attributeTransitionManager = new (0, $9FKfW.default)(gl, {\n id: \"\".concat(id, \"-transitions\"),\n timeline: timeline\n });\n Object.seal(this);\n }\n}\n\n});\nparcelRegister(\"yVHST\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $068ff0760839dd7d$export$2e2bcd8739ae039; });\n\nvar $1zR3q = parcelRequire(\"1zR3q\");\n\nvar $99Td9 = parcelRequire(\"99Td9\");\n\nvar $hu5l6 = parcelRequire(\"hu5l6\");\n\nvar $abpME = parcelRequire(\"abpME\");\n\nvar $ivBeX = parcelRequire(\"ivBeX\");\n\nvar $gZkNz = parcelRequire(\"gZkNz\");\n\nvar $5YQrt = parcelRequire(\"5YQrt\");\nclass $068ff0760839dd7d$export$2e2bcd8739ae039 extends (0, $99Td9.default) {\n get startIndices() {\n return this.state.startIndices;\n }\n set startIndices(layout) {\n this.state.startIndices = layout;\n }\n needsUpdate() {\n return this.state.needsUpdate;\n }\n needsRedraw({ clearChangedFlags: clearChangedFlags = false } = {}) {\n const needsRedraw = this.state.needsRedraw;\n this.state.needsRedraw = needsRedraw && !clearChangedFlags;\n return needsRedraw;\n }\n getUpdateTriggers() {\n const { accessor: accessor } = this.settings;\n return [\n this.id\n ].concat(typeof accessor !== \"function\" && accessor || []);\n }\n supportsTransition() {\n return Boolean(this.settings.transition);\n }\n getTransitionSetting(opts) {\n if (!opts || !this.supportsTransition()) return null;\n const { accessor: accessor } = this.settings;\n const layerSettings = this.settings.transition;\n const userSettings = Array.isArray(accessor) ? opts[accessor.find((a)=>opts[a])] : opts[accessor];\n return (0, $5YQrt.normalizeTransitionSettings)(userSettings, layerSettings);\n }\n setNeedsUpdate(reason = this.id, dataRange) {\n this.state.needsUpdate = this.state.needsUpdate || reason;\n this.setNeedsRedraw(reason);\n if (dataRange) {\n const { startRow: startRow = 0, endRow: endRow = Infinity } = dataRange;\n this.state.updateRanges = $gZkNz.add(this.state.updateRanges, [\n startRow,\n endRow\n ]);\n } else this.state.updateRanges = $gZkNz.FULL;\n }\n clearNeedsUpdate() {\n this.state.needsUpdate = false;\n this.state.updateRanges = $gZkNz.EMPTY;\n }\n setNeedsRedraw(reason = this.id) {\n this.state.needsRedraw = this.state.needsRedraw || reason;\n }\n allocate(numInstances) {\n const { state: state, settings: settings } = this;\n if (settings.noAlloc) return false;\n if (settings.update) {\n super.allocate(numInstances, state.updateRanges !== $gZkNz.FULL);\n return true;\n }\n return false;\n }\n updateBuffer({ numInstances: numInstances, data: data, props: props, context: context }) {\n if (!this.needsUpdate()) return false;\n const { state: { updateRanges: updateRanges }, settings: { update: update, noAlloc: noAlloc } } = this;\n let updated = true;\n if (update) {\n for (const [startRow, endRow] of updateRanges)update.call(context, this, {\n data: data,\n startRow: startRow,\n endRow: endRow,\n props: props,\n numInstances: numInstances\n });\n if (!this.value) ;\n else if (this.constant || this.buffer.byteLength < this.value.byteLength + this.byteOffset) {\n this.setData({\n value: this.value,\n constant: this.constant\n });\n this.constant = false;\n } else for (const [startRow, endRow] of updateRanges){\n const startOffset = Number.isFinite(startRow) ? this.getVertexOffset(startRow) : 0;\n const endOffset = Number.isFinite(endRow) ? this.getVertexOffset(endRow) : noAlloc || !Number.isFinite(numInstances) ? this.value.length : numInstances * this.size;\n super.updateSubBuffer({\n startOffset: startOffset,\n endOffset: endOffset\n });\n }\n this._checkAttributeArray();\n } else updated = false;\n this.clearNeedsUpdate();\n this.setNeedsRedraw();\n return updated;\n }\n setConstantValue(value) {\n if (value === undefined || typeof value === \"function\") return false;\n const hasChanged = this.setData({\n constant: true,\n value: value\n });\n if (hasChanged) this.setNeedsRedraw();\n this.clearNeedsUpdate();\n return true;\n }\n setExternalBuffer(buffer) {\n const { state: state } = this;\n if (!buffer) {\n state.lastExternalBuffer = null;\n return false;\n }\n this.clearNeedsUpdate();\n if (state.lastExternalBuffer === buffer) return true;\n state.lastExternalBuffer = buffer;\n this.setNeedsRedraw();\n this.setData(buffer);\n return true;\n }\n setBinaryValue(buffer, startIndices = null) {\n const { state: state, settings: settings } = this;\n if (!buffer) {\n state.binaryValue = null;\n state.binaryAccessor = null;\n return false;\n }\n if (settings.noAlloc) return false;\n if (state.binaryValue === buffer) {\n this.clearNeedsUpdate();\n return true;\n }\n state.binaryValue = buffer;\n this.setNeedsRedraw();\n const needsUpdate = settings.transform || startIndices !== this.startIndices;\n if (needsUpdate) {\n if (ArrayBuffer.isView(buffer)) buffer = {\n value: buffer\n };\n const binaryValue = buffer;\n (0, $hu5l6.default)(ArrayBuffer.isView(binaryValue.value), \"invalid \".concat(settings.accessor));\n const needsNormalize = Boolean(binaryValue.size) && binaryValue.size !== this.size;\n state.binaryAccessor = (0, $abpME.getAccessorFromBuffer)(binaryValue.value, {\n size: binaryValue.size || this.size,\n stride: binaryValue.stride,\n offset: binaryValue.offset,\n startIndices: startIndices,\n nested: needsNormalize\n });\n return false;\n }\n this.clearNeedsUpdate();\n this.setData(buffer);\n return true;\n }\n getVertexOffset(row) {\n const { startIndices: startIndices } = this;\n const vertexIndex = startIndices ? row < startIndices.length ? startIndices[row] : this.numInstances : row;\n return vertexIndex * this.size;\n }\n getShaderAttributes() {\n const shaderAttributeDefs = this.settings.shaderAttributes || {\n [this.id]: null\n };\n const shaderAttributes = {};\n for(const shaderAttributeName in shaderAttributeDefs)Object.assign(shaderAttributes, super.getShaderAttributes(shaderAttributeName, shaderAttributeDefs[shaderAttributeName]));\n return shaderAttributes;\n }\n _autoUpdater(attribute, { data: data, startRow: startRow, endRow: endRow, props: props, numInstances: numInstances }) {\n if (attribute.constant) return;\n const { settings: settings, state: state, value: value, size: size, startIndices: startIndices } = attribute;\n const { accessor: accessor, transform: transform } = settings;\n const accessorFunc = state.binaryAccessor || (typeof accessor === \"function\" ? accessor : props[accessor]);\n (0, $hu5l6.default)(typeof accessorFunc === \"function\", 'accessor \"'.concat(accessor, '\" is not a function'));\n let i = attribute.getVertexOffset(startRow);\n const { iterable: iterable, objectInfo: objectInfo } = (0, $abpME.createIterable)(data, startRow, endRow);\n for (const object of iterable){\n objectInfo.index++;\n let objectValue = accessorFunc(object, objectInfo);\n if (transform) objectValue = transform.call(this, objectValue);\n if (startIndices) {\n const numVertices = (objectInfo.index < startIndices.length - 1 ? startIndices[objectInfo.index + 1] : numInstances) - startIndices[objectInfo.index];\n if (objectValue && Array.isArray(objectValue[0])) {\n let startIndex = i;\n for (const item of objectValue){\n attribute._normalizeValue(item, value, startIndex);\n startIndex += size;\n }\n } else if (objectValue && objectValue.length > size) value.set(objectValue, i);\n else {\n attribute._normalizeValue(objectValue, objectInfo.target, 0);\n (0, $ivBeX.fillArray)({\n target: value,\n source: objectInfo.target,\n start: i,\n count: numVertices\n });\n }\n i += numVertices * size;\n } else {\n attribute._normalizeValue(objectValue, value, i);\n i += size;\n }\n }\n }\n _validateAttributeUpdaters() {\n const { settings: settings } = this;\n const hasUpdater = settings.noAlloc || typeof settings.update === \"function\";\n if (!hasUpdater) throw new Error(\"Attribute \".concat(this.id, \" missing update or accessor\"));\n }\n _checkAttributeArray() {\n const { value: value } = this;\n const limit = Math.min(4, this.size);\n if (value && value.length >= limit) {\n let valid = true;\n switch(limit){\n case 4:\n valid = valid && Number.isFinite(value[3]);\n case 3:\n valid = valid && Number.isFinite(value[2]);\n case 2:\n valid = valid && Number.isFinite(value[1]);\n case 1:\n valid = valid && Number.isFinite(value[0]);\n break;\n default:\n valid = false;\n }\n if (!valid) throw new Error(\"Illegal attribute generated for \".concat(this.id));\n }\n }\n constructor(gl, opts){\n super(gl, opts, {\n startIndices: null,\n lastExternalBuffer: null,\n binaryValue: null,\n binaryAccessor: null,\n needsUpdate: true,\n needsRedraw: false,\n updateRanges: $gZkNz.FULL\n });\n (0, $1zR3q.default)(this, \"constant\", false);\n this.settings.update = opts.update || (opts.accessor ? this._autoUpdater : undefined);\n Object.seal(this.settings);\n Object.seal(this.state);\n this._validateAttributeUpdaters();\n }\n}\n\n});\nparcelRegister(\"99Td9\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6aafc81bfcdbd539$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $1zR3q = parcelRequire(\"1zR3q\");\n\nvar $7jraD = parcelRequire(\"7jraD\");\nvar $68aPy = parcelRequire(\"68aPy\");\nvar $tIWfJ = parcelRequire(\"tIWfJ\");\n\nvar $jL2pF = parcelRequire(\"jL2pF\");\n\nvar $24b9z = parcelRequire(\"24b9z\");\n\nvar $an4RE = parcelRequire(\"an4RE\");\n\nvar $9kyEf = parcelRequire(\"9kyEf\");\n\nvar $4VQgq = parcelRequire(\"4VQgq\");\nfunction $6aafc81bfcdbd539$var$getStride(accessor) {\n return accessor.stride || accessor.size * accessor.bytesPerElement;\n}\nfunction $6aafc81bfcdbd539$var$resolveShaderAttribute(baseAccessor, shaderAttributeOptions) {\n if (shaderAttributeOptions.offset) (0, $4VQgq.default).removed(\"shaderAttribute.offset\", \"vertexOffset, elementOffset\")();\n const stride = $6aafc81bfcdbd539$var$getStride(baseAccessor);\n const vertexOffset = shaderAttributeOptions.vertexOffset !== undefined ? shaderAttributeOptions.vertexOffset : baseAccessor.vertexOffset || 0;\n const elementOffset = shaderAttributeOptions.elementOffset || 0;\n const offset = vertexOffset * stride + elementOffset * baseAccessor.bytesPerElement + (baseAccessor.offset || 0);\n return (0, $edHbI._)((0, $2QP2i._)({}, shaderAttributeOptions), {\n offset: offset,\n stride: stride\n });\n}\nfunction $6aafc81bfcdbd539$var$resolveDoublePrecisionShaderAttributes(baseAccessor, shaderAttributeOptions) {\n const resolvedOptions = $6aafc81bfcdbd539$var$resolveShaderAttribute(baseAccessor, shaderAttributeOptions);\n return {\n high: resolvedOptions,\n low: (0, $edHbI._)((0, $2QP2i._)({}, resolvedOptions), {\n offset: resolvedOptions.offset + baseAccessor.size * 4\n })\n };\n}\nclass $6aafc81bfcdbd539$export$2e2bcd8739ae039 {\n get isConstant() {\n return this.state.constant;\n }\n get buffer() {\n if (!this._buffer) {\n const { isIndexed: isIndexed, type: type } = this.settings;\n this._buffer = new (0, $7jraD.default)(this.gl, {\n id: this.id,\n target: isIndexed ? 34963 : 34962,\n accessor: {\n type: type\n }\n });\n }\n return this._buffer;\n }\n get byteOffset() {\n const accessor = this.getAccessor();\n if (accessor.vertexOffset) return accessor.vertexOffset * $6aafc81bfcdbd539$var$getStride(accessor);\n return 0;\n }\n get numInstances() {\n return this.state.numInstances;\n }\n set numInstances(n) {\n this.state.numInstances = n;\n }\n delete() {\n if (this._buffer) {\n this._buffer.delete();\n this._buffer = null;\n }\n (0, $an4RE.default).release(this.state.allocatedValue);\n }\n getShaderAttributes(id, options) {\n if (this.doublePrecision) {\n const shaderAttributes = {};\n const isBuffer64Bit = this.value instanceof Float64Array;\n const doubleShaderAttributeDefs = $6aafc81bfcdbd539$var$resolveDoublePrecisionShaderAttributes(this.getAccessor(), options || {});\n shaderAttributes[id] = new (0, $jL2pF.default)(this, doubleShaderAttributeDefs.high);\n shaderAttributes[\"\".concat(id, \"64Low\")] = isBuffer64Bit ? new (0, $jL2pF.default)(this, doubleShaderAttributeDefs.low) : new Float32Array(this.size);\n return shaderAttributes;\n }\n if (options) {\n const shaderAttributeDef = $6aafc81bfcdbd539$var$resolveShaderAttribute(this.getAccessor(), options);\n return {\n [id]: new (0, $jL2pF.default)(this, shaderAttributeDef)\n };\n }\n return {\n [id]: this\n };\n }\n getBuffer() {\n if (this.state.constant) return null;\n return this.state.externalBuffer || this._buffer;\n }\n getValue() {\n if (this.state.constant) return this.value;\n return [\n this.getBuffer(),\n this.getAccessor()\n ];\n }\n getAccessor() {\n return this.state.bufferAccessor;\n }\n getBounds() {\n if (this.state.bounds) return this.state.bounds;\n let result = null;\n if (this.state.constant && this.value) {\n const min = Array.from(this.value);\n result = [\n min,\n min\n ];\n } else {\n const { value: value, numInstances: numInstances, size: size } = this;\n const len = numInstances * size;\n if (value && len && value.length >= len) {\n const min = new Array(size).fill(Infinity);\n const max = new Array(size).fill(-Infinity);\n for(let i = 0; i < len;)for(let j = 0; j < size; j++){\n const v = value[i++];\n if (v < min[j]) min[j] = v;\n if (v > max[j]) max[j] = v;\n }\n result = [\n min,\n max\n ];\n }\n }\n this.state.bounds = result;\n return result;\n }\n setData(data) {\n const { state: state } = this;\n let opts;\n if (ArrayBuffer.isView(data)) opts = {\n value: data\n };\n else if (data instanceof (0, $7jraD.default)) opts = {\n buffer: data\n };\n else opts = data;\n const accessor = (0, $2QP2i._)({}, this.settings, opts);\n state.bufferAccessor = accessor;\n state.bounds = null;\n if (opts.constant) {\n let value = opts.value;\n value = this._normalizeValue(value, [], 0);\n if (this.settings.normalized) value = this.normalizeConstant(value);\n const hasChanged = !state.constant || !this._areValuesEqual(value, this.value);\n if (!hasChanged) return false;\n state.externalBuffer = null;\n state.constant = true;\n this.value = value;\n } else if (opts.buffer) {\n const buffer = opts.buffer;\n state.externalBuffer = buffer;\n state.constant = false;\n this.value = opts.value || null;\n const isBuffer64Bit = opts.value instanceof Float64Array;\n accessor.type = opts.type || buffer.accessor.type;\n accessor.bytesPerElement = buffer.accessor.BYTES_PER_ELEMENT * (isBuffer64Bit ? 2 : 1);\n accessor.stride = $6aafc81bfcdbd539$var$getStride(accessor);\n } else if (opts.value) {\n this._checkExternalBuffer(opts);\n let value = opts.value;\n state.externalBuffer = null;\n state.constant = false;\n this.value = value;\n accessor.bytesPerElement = value.BYTES_PER_ELEMENT;\n accessor.stride = $6aafc81bfcdbd539$var$getStride(accessor);\n const { buffer: buffer, byteOffset: byteOffset } = this;\n if (this.doublePrecision && value instanceof Float64Array) value = (0, $9kyEf.toDoublePrecisionArray)(value, accessor);\n const requiredBufferSize = value.byteLength + byteOffset + accessor.stride * 2;\n if (buffer.byteLength < requiredBufferSize) buffer.reallocate(requiredBufferSize);\n buffer.setAccessor(null);\n buffer.subData({\n data: value,\n offset: byteOffset\n });\n accessor.type = opts.type || buffer.accessor.type;\n }\n return true;\n }\n updateSubBuffer(opts = {}) {\n this.state.bounds = null;\n const value = this.value;\n const { startOffset: startOffset = 0, endOffset: endOffset } = opts;\n this.buffer.subData({\n data: this.doublePrecision && value instanceof Float64Array ? (0, $9kyEf.toDoublePrecisionArray)(value, {\n size: this.size,\n startIndex: startOffset,\n endIndex: endOffset\n }) : value.subarray(startOffset, endOffset),\n offset: startOffset * value.BYTES_PER_ELEMENT + this.byteOffset\n });\n }\n allocate(numInstances, copy = false) {\n const { state: state } = this;\n const oldValue = state.allocatedValue;\n const value = (0, $an4RE.default).allocate(oldValue, numInstances + 1, {\n size: this.size,\n type: this.settings.defaultType,\n copy: copy\n });\n this.value = value;\n const { buffer: buffer, byteOffset: byteOffset } = this;\n if (buffer.byteLength < value.byteLength + byteOffset) {\n buffer.reallocate(value.byteLength + byteOffset);\n if (copy && oldValue) buffer.subData({\n data: oldValue instanceof Float64Array ? (0, $9kyEf.toDoublePrecisionArray)(oldValue, this) : oldValue,\n offset: byteOffset\n });\n }\n state.allocatedValue = value;\n state.constant = false;\n state.externalBuffer = null;\n state.bufferAccessor = this.settings;\n return true;\n }\n _checkExternalBuffer(opts) {\n const { value: value } = opts;\n if (!ArrayBuffer.isView(value)) throw new Error(\"Attribute \".concat(this.id, \" value is not TypedArray\"));\n const ArrayType = this.settings.defaultType;\n let illegalArrayType = false;\n if (this.doublePrecision) illegalArrayType = value.BYTES_PER_ELEMENT < 4;\n if (illegalArrayType) throw new Error(\"Attribute \".concat(this.id, \" does not support \").concat(value.constructor.name));\n if (!(value instanceof ArrayType) && this.settings.normalized && !(\"normalized\" in opts)) (0, $4VQgq.default).warn(\"Attribute \".concat(this.id, \" is normalized\"))();\n }\n normalizeConstant(value) {\n switch(this.settings.type){\n case 5120:\n return new Float32Array(value).map((x)=>(x + 128) / 255 * 2 - 1);\n case 5122:\n return new Float32Array(value).map((x)=>(x + 32768) / 65535 * 2 - 1);\n case 5121:\n return new Float32Array(value).map((x)=>x / 255);\n case 5123:\n return new Float32Array(value).map((x)=>x / 65535);\n default:\n return value;\n }\n }\n _normalizeValue(value, out, start) {\n const { defaultValue: defaultValue, size: size } = this.settings;\n if (Number.isFinite(value)) {\n out[start] = value;\n return out;\n }\n if (!value) {\n let i = size;\n while(--i >= 0)out[start + i] = defaultValue[i];\n return out;\n }\n switch(size){\n case 4:\n out[start + 3] = Number.isFinite(value[3]) ? value[3] : defaultValue[3];\n case 3:\n out[start + 2] = Number.isFinite(value[2]) ? value[2] : defaultValue[2];\n case 2:\n out[start + 1] = Number.isFinite(value[1]) ? value[1] : defaultValue[1];\n case 1:\n out[start + 0] = Number.isFinite(value[0]) ? value[0] : defaultValue[0];\n break;\n default:\n let i = size;\n while(--i >= 0)out[start + i] = Number.isFinite(value[i]) ? value[i] : defaultValue[i];\n }\n return out;\n }\n _areValuesEqual(value1, value2) {\n if (!value1 || !value2) return false;\n const { size: size } = this;\n for(let i = 0; i < size; i++){\n if (value1[i] !== value2[i]) return false;\n }\n return true;\n }\n constructor(gl, opts, state){\n (0, $1zR3q.default)(this, \"gl\", void 0);\n (0, $1zR3q.default)(this, \"id\", void 0);\n (0, $1zR3q.default)(this, \"size\", void 0);\n (0, $1zR3q.default)(this, \"settings\", void 0);\n (0, $1zR3q.default)(this, \"value\", void 0);\n (0, $1zR3q.default)(this, \"doublePrecision\", void 0);\n (0, $1zR3q.default)(this, \"_buffer\", void 0);\n (0, $1zR3q.default)(this, \"state\", void 0);\n this.gl = gl;\n this.id = opts.id || \"\";\n this.size = opts.size || 1;\n const logicalType = opts.logicalType || opts.type;\n const doublePrecision = logicalType === 5130;\n let { defaultValue: defaultValue } = opts;\n defaultValue = Number.isFinite(defaultValue) ? [\n defaultValue\n ] : defaultValue || new Array(this.size).fill(0);\n let bufferType;\n if (doublePrecision) bufferType = 5126;\n else if (!logicalType && opts.isIndexed) bufferType = gl && (0, $tIWfJ.hasFeature)(gl, (0, $68aPy.FEATURES).ELEMENT_INDEX_UINT32) ? 5125 : 5123;\n else bufferType = logicalType || 5126;\n let defaultType = (0, $24b9z.glArrayFromType)(logicalType || bufferType || 5126);\n this.doublePrecision = doublePrecision;\n if (doublePrecision && opts.fp64 === false) defaultType = Float32Array;\n this.value = null;\n this.settings = (0, $edHbI._)((0, $2QP2i._)({}, opts), {\n defaultType: defaultType,\n defaultValue: defaultValue,\n logicalType: logicalType,\n type: bufferType,\n size: this.size,\n bytesPerElement: defaultType.BYTES_PER_ELEMENT\n });\n this.state = (0, $edHbI._)((0, $2QP2i._)({}, state), {\n externalBuffer: null,\n bufferAccessor: this.settings,\n allocatedValue: null,\n numInstances: 0,\n bounds: null,\n constant: false\n });\n this._buffer = null;\n }\n}\n\n});\nparcelRegister(\"7jraD\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $552f6243e13f2fd9$export$2e2bcd8739ae039; });\n\nvar $1OVow = parcelRequire(\"1OVow\");\n\nvar $35tVQ = parcelRequire(\"35tVQ\");\n\nvar $3qgcG = parcelRequire(\"3qgcG\");\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\nvar $lvicK = parcelRequire(\"lvicK\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\n\nvar $JOkCq = parcelRequire(\"JOkCq\");\nconst $552f6243e13f2fd9$var$DEBUG_DATA_LENGTH = 10;\nconst $552f6243e13f2fd9$var$DEPRECATED_PROPS = {\n offset: \"accessor.offset\",\n stride: \"accessor.stride\",\n type: \"accessor.type\",\n size: \"accessor.size\",\n divisor: \"accessor.divisor\",\n normalized: \"accessor.normalized\",\n integer: \"accessor.integer\",\n instanced: \"accessor.divisor\",\n isInstanced: \"accessor.divisor\"\n};\nconst $552f6243e13f2fd9$var$PROP_CHECKS_INITIALIZE = {\n removedProps: {},\n replacedProps: {\n bytes: \"byteLength\"\n },\n deprecatedProps: $552f6243e13f2fd9$var$DEPRECATED_PROPS\n};\nconst $552f6243e13f2fd9$var$PROP_CHECKS_SET_PROPS = {\n removedProps: $552f6243e13f2fd9$var$DEPRECATED_PROPS\n};\nclass $552f6243e13f2fd9$export$2e2bcd8739ae039 extends (0, $1OVow.default) {\n get [Symbol.toStringTag]() {\n return \"Buffer\";\n }\n getElementCount() {\n let accessor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.accessor;\n return Math.round(this.byteLength / (0, $35tVQ.default).getBytesPerElement(accessor));\n }\n getVertexCount() {\n let accessor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.accessor;\n return Math.round(this.byteLength / (0, $35tVQ.default).getBytesPerVertex(accessor));\n }\n initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (ArrayBuffer.isView(props)) props = {\n data: props\n };\n if (Number.isFinite(props)) props = {\n byteLength: props\n };\n props = (0, $JOkCq.checkProps)(\"Buffer\", props, $552f6243e13f2fd9$var$PROP_CHECKS_INITIALIZE);\n this.usage = props.usage || 35044;\n this.debugData = null;\n this.setAccessor(Object.assign({}, props, props.accessor));\n if (props.data) this._setData(props.data, props.offset, props.byteLength);\n else this._setByteLength(props.byteLength || 0);\n return this;\n }\n setProps(props) {\n props = (0, $JOkCq.checkProps)(\"Buffer\", props, $552f6243e13f2fd9$var$PROP_CHECKS_SET_PROPS);\n if (\"accessor\" in props) this.setAccessor(props.accessor);\n return this;\n }\n setAccessor(accessor) {\n accessor = Object.assign({}, accessor);\n delete accessor.buffer;\n this.accessor = new (0, $35tVQ.default)(accessor);\n return this;\n }\n reallocate(byteLength) {\n if (byteLength > this.byteLength) {\n this._setByteLength(byteLength);\n return true;\n }\n this.bytesUsed = byteLength;\n return false;\n }\n setData(props) {\n return this.initialize(props);\n }\n subData(props) {\n if (ArrayBuffer.isView(props)) props = {\n data: props\n };\n const { data: data, offset: offset = 0, srcOffset: srcOffset = 0 } = props;\n const byteLength = props.byteLength || props.length;\n (0, $ihfnu.assert)(data);\n const target = this.gl.webgl2 ? 36663 : this.target;\n this.gl.bindBuffer(target, this.handle);\n if (srcOffset !== 0 || byteLength !== undefined) {\n (0, $8HKWo.assertWebGL2Context)(this.gl);\n this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n } else this.gl.bufferSubData(target, offset, data);\n this.gl.bindBuffer(target, null);\n this.debugData = null;\n this._inferType(data);\n return this;\n }\n copyData(_ref) {\n let { sourceBuffer: sourceBuffer, readOffset: readOffset = 0, writeOffset: writeOffset = 0, size: size } = _ref;\n const { gl: gl } = this;\n (0, $8HKWo.assertWebGL2Context)(gl);\n gl.bindBuffer(36662, sourceBuffer.handle);\n gl.bindBuffer(36663, this.handle);\n gl.copyBufferSubData(36662, 36663, readOffset, writeOffset, size);\n gl.bindBuffer(36662, null);\n gl.bindBuffer(36663, null);\n this.debugData = null;\n return this;\n }\n getData() {\n let { dstData: dstData = null, srcByteOffset: srcByteOffset = 0, dstOffset: dstOffset = 0, length: length = 0 } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n (0, $8HKWo.assertWebGL2Context)(this.gl);\n const ArrayType = (0, $3qgcG.getTypedArrayFromGLType)(this.accessor.type || 5126, {\n clamped: false\n });\n const sourceAvailableElementCount = this._getAvailableElementCount(srcByteOffset);\n const dstElementOffset = dstOffset;\n let dstAvailableElementCount;\n let dstElementCount;\n if (dstData) {\n dstElementCount = dstData.length;\n dstAvailableElementCount = dstElementCount - dstElementOffset;\n } else {\n dstAvailableElementCount = Math.min(sourceAvailableElementCount, length || sourceAvailableElementCount);\n dstElementCount = dstElementOffset + dstAvailableElementCount;\n }\n const copyElementCount = Math.min(sourceAvailableElementCount, dstAvailableElementCount);\n length = length || copyElementCount;\n (0, $ihfnu.assert)(length <= copyElementCount);\n dstData = dstData || new ArrayType(dstElementCount);\n this.gl.bindBuffer(36662, this.handle);\n this.gl.getBufferSubData(36662, srcByteOffset, dstData, dstOffset, length);\n this.gl.bindBuffer(36662, null);\n return dstData;\n }\n bind() {\n let { target: target = this.target, index: index = this.accessor && this.accessor.index, offset: offset = 0, size: size } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (target === 35345 || target === 35982) {\n if (size !== undefined) this.gl.bindBufferRange(target, index, this.handle, offset, size);\n else {\n (0, $ihfnu.assert)(offset === 0);\n this.gl.bindBufferBase(target, index, this.handle);\n }\n } else this.gl.bindBuffer(target, this.handle);\n return this;\n }\n unbind() {\n let { target: target = this.target, index: index = this.accessor && this.accessor.index } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const isIndexedBuffer = target === 35345 || target === 35982;\n if (isIndexedBuffer) this.gl.bindBufferBase(target, index, null);\n else this.gl.bindBuffer(target, null);\n return this;\n }\n getDebugData() {\n if (!this.debugData) {\n this.debugData = this.getData({\n length: Math.min($552f6243e13f2fd9$var$DEBUG_DATA_LENGTH, this.byteLength)\n });\n return {\n data: this.debugData,\n changed: true\n };\n }\n return {\n data: this.debugData,\n changed: false\n };\n }\n invalidateDebugData() {\n this.debugData = null;\n }\n _setData(data) {\n let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let byteLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : data.byteLength + offset;\n (0, $ihfnu.assert)(ArrayBuffer.isView(data));\n this._trackDeallocatedMemory();\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, byteLength, this.usage);\n this.gl.bufferSubData(target, offset, data);\n this.gl.bindBuffer(target, null);\n this.debugData = data.slice(0, $552f6243e13f2fd9$var$DEBUG_DATA_LENGTH);\n this.bytesUsed = byteLength;\n this._trackAllocatedMemory(byteLength);\n const type = (0, $3qgcG.getGLTypeFromTypedArray)(data);\n (0, $ihfnu.assert)(type);\n this.setAccessor(new (0, $35tVQ.default)(this.accessor, {\n type: type\n }));\n return this;\n }\n _setByteLength(byteLength) {\n let usage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.usage;\n (0, $ihfnu.assert)(byteLength >= 0);\n this._trackDeallocatedMemory();\n let data = byteLength;\n if (byteLength === 0) data = new Float32Array(0);\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, usage);\n this.gl.bindBuffer(target, null);\n this.usage = usage;\n this.debugData = null;\n this.bytesUsed = byteLength;\n this._trackAllocatedMemory(byteLength);\n return this;\n }\n _getTarget() {\n return this.gl.webgl2 ? 36663 : this.target;\n }\n _getAvailableElementCount(srcByteOffset) {\n const ArrayType = (0, $3qgcG.getTypedArrayFromGLType)(this.accessor.type || 5126, {\n clamped: false\n });\n const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;\n return this.getElementCount() - sourceElementOffset;\n }\n _inferType(data) {\n if (!this.accessor.type) this.setAccessor(new (0, $35tVQ.default)(this.accessor, {\n type: (0, $3qgcG.getGLTypeFromTypedArray)(data)\n }));\n }\n _createHandle() {\n return this.gl.createBuffer();\n }\n _deleteHandle() {\n this.gl.deleteBuffer(this.handle);\n this._trackDeallocatedMemory();\n }\n _getParameter(pname) {\n this.gl.bindBuffer(this.target, this.handle);\n const value = this.gl.getBufferParameter(this.target, pname);\n this.gl.bindBuffer(this.target, null);\n return value;\n }\n get type() {\n (0, $lvicK.log).deprecated(\"Buffer.type\", \"Buffer.accessor.type\")();\n return this.accessor.type;\n }\n get bytes() {\n (0, $lvicK.log).deprecated(\"Buffer.bytes\", \"Buffer.byteLength\")();\n return this.byteLength;\n }\n setByteLength(byteLength) {\n (0, $lvicK.log).deprecated(\"setByteLength\", \"reallocate\")();\n return this.reallocate(byteLength);\n }\n updateAccessor(opts) {\n (0, $lvicK.log).deprecated(\"updateAccessor(...)\", \"setAccessor(new Accessor(buffer.accessor, ...)\")();\n this.accessor = new (0, $35tVQ.default)(this.accessor, opts);\n return this;\n }\n constructor(gl){\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(gl, props);\n this.stubRemovedMethods(\"Buffer\", \"v6.0\", [\n \"layout\",\n \"setLayout\",\n \"getIndexedParameter\"\n ]);\n this.target = props.target || (this.gl.webgl2 ? 36662 : 34962);\n this.initialize(props);\n Object.seal(this);\n }\n}\n\n});\nparcelRegister(\"1OVow\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $1536fb5501fdc12f$export$2e2bcd8739ae039; });\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\n\nvar $jgMzF = parcelRequire(\"jgMzF\");\n\nvar $5tEaG = parcelRequire(\"5tEaG\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\n\nvar $iljOc = parcelRequire(\"iljOc\");\n\nvar $z6hiF = parcelRequire(\"z6hiF\");\nconst $1536fb5501fdc12f$var$ERR_RESOURCE_METHOD_UNDEFINED = \"Resource subclass must define virtual methods\";\nclass $1536fb5501fdc12f$export$2e2bcd8739ae039 {\n get [Symbol.toStringTag]() {\n return \"Resource\";\n }\n toString() {\n return \"\".concat(this[Symbol.toStringTag] || this.constructor.name, \"(\").concat(this.id, \")\");\n }\n get handle() {\n return this._handle;\n }\n delete() {\n let { deleteChildren: deleteChildren = false } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const children = this._handle && this._deleteHandle(this._handle);\n if (this._handle) this._removeStats();\n this._handle = null;\n if (children && deleteChildren) children.filter(Boolean).forEach((child)=>child.delete());\n return this;\n }\n bind() {\n let funcOrHandle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.handle;\n if (typeof funcOrHandle !== \"function\") {\n this._bindHandle(funcOrHandle);\n return this;\n }\n let value;\n if (!this._bound) {\n this._bindHandle(this.handle);\n this._bound = true;\n value = funcOrHandle();\n this._bound = false;\n this._bindHandle(null);\n } else value = funcOrHandle();\n return value;\n }\n unbind() {\n this.bind(null);\n }\n getParameter(pname) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n pname = (0, $5tEaG.getKeyValue)(this.gl, pname);\n (0, $ihfnu.assert)(pname);\n const parameters = this.constructor.PARAMETERS || {};\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = (0, $8HKWo.isWebGL2)(this.gl);\n const parameterAvailable = (!(\"webgl2\" in parameter) || isWebgl2) && (!(\"extension\" in parameter) || this.gl.getExtension(parameter.extension));\n if (!parameterAvailable) {\n const webgl1Default = parameter.webgl1;\n const webgl2Default = \"webgl2\" in parameter ? parameter.webgl2 : parameter.webgl1;\n const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n return defaultValue;\n }\n }\n return this._getParameter(pname, opts);\n }\n getParameters() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { parameters: parameters, keys: keys } = options;\n const PARAMETERS = this.constructor.PARAMETERS || {};\n const isWebgl2 = (0, $8HKWo.isWebGL2)(this.gl);\n const values = {};\n const parameterKeys = parameters || Object.keys(PARAMETERS);\n for (const pname of parameterKeys){\n const parameter = PARAMETERS[pname];\n const parameterAvailable = parameter && (!(\"webgl2\" in parameter) || isWebgl2) && (!(\"extension\" in parameter) || this.gl.getExtension(parameter.extension));\n if (parameterAvailable) {\n const key = keys ? (0, $5tEaG.getKey)(this.gl, pname) : pname;\n values[key] = this.getParameter(pname, options);\n if (keys && parameter.type === \"GLenum\") values[key] = (0, $5tEaG.getKey)(this.gl, values[key]);\n }\n }\n return values;\n }\n setParameter(pname, value) {\n pname = (0, $5tEaG.getKeyValue)(this.gl, pname);\n (0, $ihfnu.assert)(pname);\n const parameters = this.constructor.PARAMETERS || {};\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = (0, $8HKWo.isWebGL2)(this.gl);\n const parameterAvailable = (!(\"webgl2\" in parameter) || isWebgl2) && (!(\"extension\" in parameter) || this.gl.getExtension(parameter.extension));\n if (!parameterAvailable) throw new Error(\"Parameter not available on this platform\");\n if (parameter.type === \"GLenum\") value = (0, $5tEaG.getKeyValue)(value);\n }\n this._setParameter(pname, value);\n return this;\n }\n setParameters(parameters) {\n for(const pname in parameters)this.setParameter(pname, parameters[pname]);\n return this;\n }\n stubRemovedMethods(className, version, methodNames) {\n return (0, $z6hiF.stubRemovedMethods)(this, className, version, methodNames);\n }\n initialize(opts) {}\n _createHandle() {\n throw new Error($1536fb5501fdc12f$var$ERR_RESOURCE_METHOD_UNDEFINED);\n }\n _deleteHandle() {\n throw new Error($1536fb5501fdc12f$var$ERR_RESOURCE_METHOD_UNDEFINED);\n }\n _bindHandle(handle) {\n throw new Error($1536fb5501fdc12f$var$ERR_RESOURCE_METHOD_UNDEFINED);\n }\n _getOptsFromHandle() {\n throw new Error($1536fb5501fdc12f$var$ERR_RESOURCE_METHOD_UNDEFINED);\n }\n _getParameter(pname, opts) {\n throw new Error($1536fb5501fdc12f$var$ERR_RESOURCE_METHOD_UNDEFINED);\n }\n _setParameter(pname, value) {\n throw new Error($1536fb5501fdc12f$var$ERR_RESOURCE_METHOD_UNDEFINED);\n }\n _context() {\n this.gl.luma = this.gl.luma || {};\n return this.gl.luma;\n }\n _addStats() {\n const name = this[Symbol.toStringTag];\n const stats = (0, $jgMzF.lumaStats).get(\"Resource Counts\");\n stats.get(\"Resources Created\").incrementCount();\n stats.get(\"\".concat(name, \"s Created\")).incrementCount();\n stats.get(\"\".concat(name, \"s Active\")).incrementCount();\n }\n _removeStats() {\n const name = this[Symbol.toStringTag];\n const stats = (0, $jgMzF.lumaStats).get(\"Resource Counts\");\n stats.get(\"\".concat(name, \"s Active\")).decrementCount();\n }\n _trackAllocatedMemory(bytes) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this[Symbol.toStringTag];\n this._trackAllocatedMemoryForContext(bytes, name);\n this._trackAllocatedMemoryForContext(bytes, name, this.gl.canvas && this.gl.canvas.id);\n this.byteLength = bytes;\n }\n _trackAllocatedMemoryForContext(bytes) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this[Symbol.toStringTag];\n let id = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"\";\n const stats = (0, $jgMzF.lumaStats).get(\"Memory Usage\".concat(id));\n stats.get(\"GPU Memory\").addCount(bytes);\n stats.get(\"\".concat(name, \" Memory\")).addCount(bytes);\n }\n _trackDeallocatedMemory() {\n let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this[Symbol.toStringTag];\n this._trackDeallocatedMemoryForContext(name);\n this._trackDeallocatedMemoryForContext(name, this.gl.canvas && this.gl.canvas.id);\n this.byteLength = 0;\n }\n _trackDeallocatedMemoryForContext() {\n let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this[Symbol.toStringTag];\n let id = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n const stats = (0, $jgMzF.lumaStats).get(\"Memory Usage\".concat(id));\n stats.get(\"GPU Memory\").subtractCount(this.byteLength);\n stats.get(\"\".concat(name, \" Memory\")).subtractCount(this.byteLength);\n }\n constructor(gl){\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, $8HKWo.assertWebGLContext)(gl);\n const { id: id, userData: userData = {} } = opts;\n this.gl = gl;\n this.gl2 = gl;\n this.id = id || (0, $iljOc.uid)(this[Symbol.toStringTag]);\n this.userData = userData;\n this._bound = false;\n this._handle = opts.handle;\n if (this._handle === undefined) this._handle = this._createHandle();\n this.byteLength = 0;\n this._addStats();\n }\n}\n\n});\nparcelRegister(\"73UuK\", function(module, exports) {\n\n$parcel$export(module.exports, \"log\", function () { return (parcelRequire(\"lvicK\")).log; });\n$parcel$export(module.exports, \"isWebGL\", function () { return (parcelRequire(\"8HKWo\")).isWebGL; });\n$parcel$export(module.exports, \"isWebGL2\", function () { return (parcelRequire(\"8HKWo\")).isWebGL2; });\n$parcel$export(module.exports, \"getWebGL2Context\", function () { return (parcelRequire(\"8HKWo\")).getWebGL2Context; });\n$parcel$export(module.exports, \"assertWebGLContext\", function () { return (parcelRequire(\"8HKWo\")).assertWebGLContext; });\n$parcel$export(module.exports, \"assertWebGL2Context\", function () { return (parcelRequire(\"8HKWo\")).assertWebGL2Context; });\n$parcel$export(module.exports, \"setParameters\", function () { return (parcelRequire(\"2SJyH\")).setParameters; });\n$parcel$export(module.exports, \"resetParameters\", function () { return (parcelRequire(\"2SJyH\")).resetParameters; });\n$parcel$export(module.exports, \"withParameters\", function () { return (parcelRequire(\"2SJyH\")).withParameters; });\n$parcel$export(module.exports, \"createGLContext\", function () { return (parcelRequire(\"5k5Ga\")).createGLContext; });\n$parcel$export(module.exports, \"resizeGLContext\", function () { return (parcelRequire(\"5k5Ga\")).resizeGLContext; });\n$parcel$export(module.exports, \"instrumentGLContext\", function () { return (parcelRequire(\"5k5Ga\")).instrumentGLContext; });\n$parcel$export(module.exports, \"cssToDeviceRatio\", function () { return (parcelRequire(\"ieKgV\")).cssToDeviceRatio; });\n$parcel$export(module.exports, \"cssToDevicePixels\", function () { return (parcelRequire(\"ieKgV\")).cssToDevicePixels; });\n\nvar $lvicK = parcelRequire(\"lvicK\");\n\nvar $8HKWo = parcelRequire(\"8HKWo\");\n\nvar $achLN = parcelRequire(\"achLN\");\n\nvar $2SJyH = parcelRequire(\"2SJyH\");\n\nvar $bMGK6 = parcelRequire(\"bMGK6\");\n\nvar $5k5Ga = parcelRequire(\"5k5Ga\");\n\nvar $ieKgV = parcelRequire(\"ieKgV\");\n\n});\nparcelRegister(\"lvicK\", function(module, exports) {\n\n$parcel$export(module.exports, \"log\", function () { return $fa7a9d4ce373782e$export$bef1f36f5486a6a3; });\nparcelRequire(\"hBHxj\");\nvar $1s4ih = parcelRequire(\"1s4ih\");\nconst $fa7a9d4ce373782e$export$bef1f36f5486a6a3 = new (0, $1s4ih.Log)({\n id: \"luma.gl\"\n});\n\n});\n\nparcelRegister(\"8HKWo\", function(module, exports) {\n\n$parcel$export(module.exports, \"isWebGL\", function () { return $6566c0606a4673f9$export$3a471d0dd6792be6; });\n$parcel$export(module.exports, \"isWebGL2\", function () { return $6566c0606a4673f9$export$e3518b1ac7891039; });\n$parcel$export(module.exports, \"getWebGL2Context\", function () { return $6566c0606a4673f9$export$89dcfcb9130f2c28; });\n$parcel$export(module.exports, \"assertWebGLContext\", function () { return $6566c0606a4673f9$export$9b0605fd3c935712; });\n$parcel$export(module.exports, \"assertWebGL2Context\", function () { return $6566c0606a4673f9$export$22897d77b4bb5316; });\n\nvar $bcsvz = parcelRequire(\"bcsvz\");\nconst $6566c0606a4673f9$var$ERR_CONTEXT = \"Invalid WebGLRenderingContext\";\nconst $6566c0606a4673f9$export$48f7473fb8287ec0 = $6566c0606a4673f9$var$ERR_CONTEXT;\nconst $6566c0606a4673f9$export$f882315798580146 = \"Requires WebGL2\";\nfunction $6566c0606a4673f9$export$3a471d0dd6792be6(gl) {\n if (typeof WebGLRenderingContext !== \"undefined\" && gl instanceof WebGLRenderingContext) return true;\n if (typeof WebGL2RenderingContext !== \"undefined\" && gl instanceof WebGL2RenderingContext) return true;\n return Boolean(gl && Number.isFinite(gl._version));\n}\nfunction $6566c0606a4673f9$export$e3518b1ac7891039(gl) {\n if (typeof WebGL2RenderingContext !== \"undefined\" && gl instanceof WebGL2RenderingContext) return true;\n return Boolean(gl && gl._version === 2);\n}\nfunction $6566c0606a4673f9$export$89dcfcb9130f2c28(gl) {\n return $6566c0606a4673f9$export$e3518b1ac7891039(gl) ? gl : null;\n}\nfunction $6566c0606a4673f9$export$9b0605fd3c935712(gl) {\n (0, $bcsvz.assert)($6566c0606a4673f9$export$3a471d0dd6792be6(gl), $6566c0606a4673f9$var$ERR_CONTEXT);\n return gl;\n}\nfunction $6566c0606a4673f9$export$22897d77b4bb5316(gl) {\n (0, $bcsvz.assert)($6566c0606a4673f9$export$e3518b1ac7891039(gl), $6566c0606a4673f9$export$f882315798580146);\n return gl;\n}\n\n});\nparcelRegister(\"bcsvz\", function(module, exports) {\n\n$parcel$export(module.exports, \"assert\", function () { return $8276edd261c2df89$export$a7a9523472993e97; });\nfunction $8276edd261c2df89$export$a7a9523472993e97(condition, message) {\n if (!condition) throw new Error(message || \"luma.gl: assertion failed.\");\n}\n\n});\n\n\nparcelRegister(\"achLN\", function(module, exports) {\n\nvar $1fqfg = parcelRequire(\"1fqfg\");\n\nvar $bcsvz = parcelRequire(\"bcsvz\");\n\nvar $eOLk1 = parcelRequire(\"eOLk1\");\nfunction $76c8cf1f521e9858$export$2546a51f55104d54(gl) {\n gl.luma = gl.luma || {};\n const { luma: luma } = gl;\n if (!luma.polyfilled) {\n (0, $1fqfg.polyfillVertexArrayObject)(gl);\n $76c8cf1f521e9858$var$initializeExtensions(gl);\n $76c8cf1f521e9858$var$installPolyfills(gl, (0, $eOLk1.WEBGL2_CONTEXT_POLYFILLS));\n $76c8cf1f521e9858$var$installOverrides(gl, {\n target: luma,\n target2: gl\n });\n luma.polyfilled = true;\n }\n return gl;\n}\nglobalThis.polyfillContext = $76c8cf1f521e9858$export$2546a51f55104d54;\nfunction $76c8cf1f521e9858$var$initializeExtensions(gl) {\n gl.luma.extensions = {};\n const EXTENSIONS = gl.getSupportedExtensions() || [];\n for (const extension of EXTENSIONS)gl.luma[extension] = gl.getExtension(extension);\n}\nfunction $76c8cf1f521e9858$var$installOverrides(gl, _ref) {\n let { target: target, target2: target2 } = _ref;\n Object.keys((0, $eOLk1.WEBGL2_CONTEXT_OVERRIDES)).forEach((key)=>{\n if (typeof (0, $eOLk1.WEBGL2_CONTEXT_OVERRIDES)[key] === \"function\") {\n const originalFunc = gl[key] ? gl[key].bind(gl) : ()=>{};\n const polyfill = (0, $eOLk1.WEBGL2_CONTEXT_OVERRIDES)[key].bind(null, gl, originalFunc);\n target[key] = polyfill;\n target2[key] = polyfill;\n }\n });\n}\nfunction $76c8cf1f521e9858$var$installPolyfills(gl, polyfills) {\n for (const extension of Object.getOwnPropertyNames(polyfills))if (extension !== \"overrides\") $76c8cf1f521e9858$var$polyfillExtension(gl, {\n extension: extension,\n target: gl.luma,\n target2: gl\n });\n}\nfunction $76c8cf1f521e9858$var$polyfillExtension(gl, _ref2) {\n let { extension: extension, target: target, target2: target2 } = _ref2;\n const defaults = (0, $eOLk1.WEBGL2_CONTEXT_POLYFILLS)[extension];\n (0, $bcsvz.assert)(defaults);\n const { meta: meta = {} } = defaults;\n const { suffix: suffix = \"\" } = meta;\n const ext = gl.getExtension(extension);\n for (const key of Object.keys(defaults)){\n const extKey = \"\".concat(key).concat(suffix);\n let polyfill = null;\n if (key === \"meta\") ;\n else if (typeof gl[key] === \"function\") ;\n else if (ext && typeof ext[extKey] === \"function\") polyfill = function() {\n return ext[extKey](...arguments);\n };\n else if (typeof defaults[key] === \"function\") polyfill = defaults[key].bind(target);\n if (polyfill) {\n target[key] = polyfill;\n target2[key] = polyfill;\n }\n }\n}\n\n});\nparcelRegister(\"1fqfg\", function(module, exports) {\n\n$parcel$export(module.exports, \"polyfillVertexArrayObject\", function () { return $0e8b8cee8f49775e$export$a14b3889aebee3e2; });\nconst $0e8b8cee8f49775e$var$glErrorShadow = {};\nfunction $0e8b8cee8f49775e$var$error(msg) {\n if (globalThis.console && globalThis.console.error) globalThis.console.error(msg);\n}\nfunction $0e8b8cee8f49775e$var$log(msg) {\n if (globalThis.console && globalThis.console.log) globalThis.console.log(msg);\n}\nfunction $0e8b8cee8f49775e$var$synthesizeGLError(err, opt_msg) {\n $0e8b8cee8f49775e$var$glErrorShadow[err] = true;\n if (opt_msg !== undefined) $0e8b8cee8f49775e$var$error(opt_msg);\n}\nfunction $0e8b8cee8f49775e$var$wrapGLError(gl) {\n const f = gl.getError;\n gl.getError = function getError() {\n let err;\n do {\n err = f.apply(gl);\n if (err !== 0) $0e8b8cee8f49775e$var$glErrorShadow[err] = true;\n }while (err !== 0);\n for(err in $0e8b8cee8f49775e$var$glErrorShadow)if ($0e8b8cee8f49775e$var$glErrorShadow[err]) {\n delete $0e8b8cee8f49775e$var$glErrorShadow[err];\n return parseInt(err, 10);\n }\n return 0;\n };\n}\nconst $0e8b8cee8f49775e$var$WebGLVertexArrayObjectOES = function WebGLVertexArrayObjectOES(ext) {\n const gl = ext.gl;\n this.ext = ext;\n this.isAlive = true;\n this.hasBeenBound = false;\n this.elementArrayBuffer = null;\n this.attribs = new Array(ext.maxVertexAttribs);\n for(let n = 0; n < this.attribs.length; n++){\n const attrib = new WebGLVertexArrayObjectOES.VertexAttrib(gl);\n this.attribs[n] = attrib;\n }\n this.maxAttrib = 0;\n};\n$0e8b8cee8f49775e$var$WebGLVertexArrayObjectOES.VertexAttrib = function VertexAttrib(gl) {\n this.enabled = false;\n this.buffer = null;\n this.size = 4;\n this.type = 5126;\n this.normalized = false;\n this.stride = 16;\n this.offset = 0;\n this.cached = \"\";\n this.recache();\n};\n$0e8b8cee8f49775e$var$WebGLVertexArrayObjectOES.VertexAttrib.prototype.recache = function recache() {\n this.cached = [\n this.size,\n this.type,\n this.normalized,\n this.stride,\n this.offset\n ].join(\":\");\n};\nconst $0e8b8cee8f49775e$var$OESVertexArrayObject = function OESVertexArrayObject(gl) {\n const self = this;\n this.gl = gl;\n $0e8b8cee8f49775e$var$wrapGLError(gl);\n const original = this.original = {\n getParameter: gl.getParameter,\n enableVertexAttribArray: gl.enableVertexAttribArray,\n disableVertexAttribArray: gl.disableVertexAttribArray,\n bindBuffer: gl.bindBuffer,\n getVertexAttrib: gl.getVertexAttrib,\n vertexAttribPointer: gl.vertexAttribPointer\n };\n gl.getParameter = function getParameter(pname) {\n if (pname === self.VERTEX_ARRAY_BINDING_OES) {\n if (self.currentVertexArrayObject === self.defaultVertexArrayObject) return null;\n return self.currentVertexArrayObject;\n }\n return original.getParameter.apply(this, arguments);\n };\n gl.enableVertexAttribArray = function enableVertexAttribArray(index) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, index);\n const attrib = vao.attribs[index];\n attrib.enabled = true;\n return original.enableVertexAttribArray.apply(this, arguments);\n };\n gl.disableVertexAttribArray = function disableVertexAttribArray(index) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, index);\n const attrib = vao.attribs[index];\n attrib.enabled = false;\n return original.disableVertexAttribArray.apply(this, arguments);\n };\n gl.bindBuffer = function bindBuffer(target, buffer) {\n switch(target){\n case 34962:\n self.currentArrayBuffer = buffer;\n break;\n case 34963:\n self.currentVertexArrayObject.elementArrayBuffer = buffer;\n break;\n default:\n }\n return original.bindBuffer.apply(this, arguments);\n };\n gl.getVertexAttrib = function getVertexAttrib(index, pname) {\n const vao = self.currentVertexArrayObject;\n const attrib = vao.attribs[index];\n switch(pname){\n case 34975:\n return attrib.buffer;\n case 34338:\n return attrib.enabled;\n case 34339:\n return attrib.size;\n case 34340:\n return attrib.stride;\n case 34341:\n return attrib.type;\n case 34922:\n return attrib.normalized;\n default:\n return original.getVertexAttrib.apply(this, arguments);\n }\n };\n gl.vertexAttribPointer = function vertexAttribPointer(indx, size, type, normalized, stride, offset) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, indx);\n const attrib = vao.attribs[indx];\n attrib.buffer = self.currentArrayBuffer;\n attrib.size = size;\n attrib.type = type;\n attrib.normalized = normalized;\n attrib.stride = stride;\n attrib.offset = offset;\n attrib.recache();\n return original.vertexAttribPointer.apply(this, arguments);\n };\n if (gl.instrumentExtension) gl.instrumentExtension(this, \"OES_vertex_array_object\");\n if (gl.canvas) gl.canvas.addEventListener(\"webglcontextrestored\", ()=>{\n $0e8b8cee8f49775e$var$log(\"OESVertexArrayObject emulation library context restored\");\n self.reset_();\n }, true);\n this.reset_();\n};\n$0e8b8cee8f49775e$var$OESVertexArrayObject.prototype.VERTEX_ARRAY_BINDING_OES = 0x85b5;\n$0e8b8cee8f49775e$var$OESVertexArrayObject.prototype.reset_ = function reset_() {\n const contextWasLost = this.vertexArrayObjects !== undefined;\n if (contextWasLost) for(let ii = 0; ii < this.vertexArrayObjects.length; ++ii)this.vertexArrayObjects.isAlive = false;\n const gl = this.gl;\n this.maxVertexAttribs = gl.getParameter(34921);\n this.defaultVertexArrayObject = new $0e8b8cee8f49775e$var$WebGLVertexArrayObjectOES(this);\n this.currentVertexArrayObject = null;\n this.currentArrayBuffer = null;\n this.vertexArrayObjects = [\n this.defaultVertexArrayObject\n ];\n this.bindVertexArrayOES(null);\n};\n$0e8b8cee8f49775e$var$OESVertexArrayObject.prototype.createVertexArrayOES = function createVertexArrayOES() {\n const arrayObject = new $0e8b8cee8f49775e$var$WebGLVertexArrayObjectOES(this);\n this.vertexArrayObjects.push(arrayObject);\n return arrayObject;\n};\n$0e8b8cee8f49775e$var$OESVertexArrayObject.prototype.deleteVertexArrayOES = function deleteVertexArrayOES(arrayObject) {\n arrayObject.isAlive = false;\n this.vertexArrayObjects.splice(this.vertexArrayObjects.indexOf(arrayObject), 1);\n if (this.currentVertexArrayObject === arrayObject) this.bindVertexArrayOES(null);\n};\n$0e8b8cee8f49775e$var$OESVertexArrayObject.prototype.isVertexArrayOES = function isVertexArrayOES(arrayObject) {\n if (arrayObject && arrayObject instanceof $0e8b8cee8f49775e$var$WebGLVertexArrayObjectOES) {\n if (arrayObject.hasBeenBound && arrayObject.ext === this) return true;\n }\n return false;\n};\n$0e8b8cee8f49775e$var$OESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(arrayObject) {\n const gl = this.gl;\n if (arrayObject && !arrayObject.isAlive) {\n $0e8b8cee8f49775e$var$synthesizeGLError(1282, \"bindVertexArrayOES: attempt to bind deleted arrayObject\");\n return;\n }\n const original = this.original;\n const oldVAO = this.currentVertexArrayObject;\n this.currentVertexArrayObject = arrayObject || this.defaultVertexArrayObject;\n this.currentVertexArrayObject.hasBeenBound = true;\n const newVAO = this.currentVertexArrayObject;\n if (oldVAO === newVAO) return;\n if (!oldVAO || newVAO.elementArrayBuffer !== oldVAO.elementArrayBuffer) original.bindBuffer.call(gl, 34963, newVAO.elementArrayBuffer);\n let currentBinding = this.currentArrayBuffer;\n const maxAttrib = Math.max(oldVAO ? oldVAO.maxAttrib : 0, newVAO.maxAttrib);\n for(let n = 0; n <= maxAttrib; n++){\n const attrib = newVAO.attribs[n];\n const oldAttrib = oldVAO ? oldVAO.attribs[n] : null;\n if (!oldVAO || attrib.enabled !== oldAttrib.enabled) {\n if (attrib.enabled) original.enableVertexAttribArray.call(gl, n);\n else original.disableVertexAttribArray.call(gl, n);\n }\n if (attrib.enabled) {\n let bufferChanged = false;\n if (!oldVAO || attrib.buffer !== oldAttrib.buffer) {\n if (currentBinding !== attrib.buffer) {\n original.bindBuffer.call(gl, 34962, attrib.buffer);\n currentBinding = attrib.buffer;\n }\n bufferChanged = true;\n }\n if (bufferChanged || attrib.cached !== oldAttrib.cached) original.vertexAttribPointer.call(gl, n, attrib.size, attrib.type, attrib.normalized, attrib.stride, attrib.offset);\n }\n }\n if (this.currentArrayBuffer !== currentBinding) original.bindBuffer.call(gl, 34962, this.currentArrayBuffer);\n};\nfunction $0e8b8cee8f49775e$export$a14b3889aebee3e2(gl) {\n if (typeof gl.createVertexArray === \"function\") return;\n const original_getSupportedExtensions = gl.getSupportedExtensions;\n gl.getSupportedExtensions = function getSupportedExtensions() {\n const list = original_getSupportedExtensions.call(this) || [];\n if (list.indexOf(\"OES_vertex_array_object\") < 0) list.push(\"OES_vertex_array_object\");\n return list;\n };\n const original_getExtension = gl.getExtension;\n gl.getExtension = function getExtension(name) {\n const ext = original_getExtension.call(this, name);\n if (ext) return ext;\n if (name !== \"OES_vertex_array_object\") return null;\n if (!gl.__OESVertexArrayObject) this.__OESVertexArrayObject = new $0e8b8cee8f49775e$var$OESVertexArrayObject(this);\n return this.__OESVertexArrayObject;\n };\n}\n\n});\n\nparcelRegister(\"eOLk1\", function(module, exports) {\n\n$parcel$export(module.exports, \"WEBGL2_CONTEXT_POLYFILLS\", function () { return $ac9a715e2be4b231$export$55b4f9cc9ea3ebcb; });\n$parcel$export(module.exports, \"WEBGL2_CONTEXT_OVERRIDES\", function () { return $ac9a715e2be4b231$export$16cadaab146130da; });\n\nvar $bcsvz = parcelRequire(\"bcsvz\");\n\nvar $8HKWo = parcelRequire(\"8HKWo\");\n\nvar $5QFaj = parcelRequire(\"5QFaj\");\nconst $ac9a715e2be4b231$var$OES_vertex_array_object = \"OES_vertex_array_object\";\nconst $ac9a715e2be4b231$var$ANGLE_instanced_arrays = \"ANGLE_instanced_arrays\";\nconst $ac9a715e2be4b231$var$WEBGL_draw_buffers = \"WEBGL_draw_buffers\";\nconst $ac9a715e2be4b231$var$EXT_disjoint_timer_query = \"EXT_disjoint_timer_query\";\nconst $ac9a715e2be4b231$var$EXT_texture_filter_anisotropic = \"EXT_texture_filter_anisotropic\";\nconst $ac9a715e2be4b231$var$ERR_VAO_NOT_SUPPORTED = \"VertexArray requires WebGL2 or OES_vertex_array_object extension\";\nfunction $ac9a715e2be4b231$var$getExtensionData(gl, extension) {\n return {\n webgl2: (0, $8HKWo.isWebGL2)(gl),\n ext: gl.getExtension(extension)\n };\n}\nconst $ac9a715e2be4b231$export$55b4f9cc9ea3ebcb = {\n [$ac9a715e2be4b231$var$OES_vertex_array_object]: {\n meta: {\n suffix: \"OES\"\n },\n createVertexArray: ()=>{\n (0, $bcsvz.assert)(false, $ac9a715e2be4b231$var$ERR_VAO_NOT_SUPPORTED);\n },\n deleteVertexArray: ()=>{},\n bindVertexArray: ()=>{},\n isVertexArray: ()=>false\n },\n [$ac9a715e2be4b231$var$ANGLE_instanced_arrays]: {\n meta: {\n suffix: \"ANGLE\"\n },\n vertexAttribDivisor (location, divisor) {\n (0, $bcsvz.assert)(divisor === 0, \"WebGL instanced rendering not supported\");\n },\n drawElementsInstanced: ()=>{},\n drawArraysInstanced: ()=>{}\n },\n [$ac9a715e2be4b231$var$WEBGL_draw_buffers]: {\n meta: {\n suffix: \"WEBGL\"\n },\n drawBuffers: ()=>{\n (0, $bcsvz.assert)(false);\n }\n },\n [$ac9a715e2be4b231$var$EXT_disjoint_timer_query]: {\n meta: {\n suffix: \"EXT\"\n },\n createQuery: ()=>{\n (0, $bcsvz.assert)(false);\n },\n deleteQuery: ()=>{\n (0, $bcsvz.assert)(false);\n },\n beginQuery: ()=>{\n (0, $bcsvz.assert)(false);\n },\n endQuery: ()=>{},\n getQuery (handle, pname) {\n return this.getQueryObject(handle, pname);\n },\n getQueryParameter (handle, pname) {\n return this.getQueryObject(handle, pname);\n },\n getQueryObject: ()=>{}\n }\n};\nconst $ac9a715e2be4b231$export$16cadaab146130da = {\n readBuffer: (gl, originalFunc, attachment)=>{\n if ((0, $8HKWo.isWebGL2)(gl)) originalFunc(attachment);\n },\n getVertexAttrib: (gl, originalFunc, location, pname)=>{\n const { webgl2: webgl2, ext: ext } = $ac9a715e2be4b231$var$getExtensionData(gl, $ac9a715e2be4b231$var$ANGLE_instanced_arrays);\n let result;\n switch(pname){\n case 35069:\n result = !webgl2 ? false : undefined;\n break;\n case 35070:\n result = !webgl2 && !ext ? 0 : undefined;\n break;\n default:\n }\n return result !== undefined ? result : originalFunc(location, pname);\n },\n getProgramParameter: (gl, originalFunc, program, pname)=>{\n if (!(0, $8HKWo.isWebGL2)(gl)) switch(pname){\n case 35967:\n return 35981;\n case 35971:\n return 0;\n case 35382:\n return 0;\n default:\n }\n return originalFunc(program, pname);\n },\n getInternalformatParameter: (gl, originalFunc, target, format, pname)=>{\n if (!(0, $8HKWo.isWebGL2)(gl)) switch(pname){\n case 32937:\n return new Int32Array([\n 0\n ]);\n default:\n }\n return gl.getInternalformatParameter(target, format, pname);\n },\n getTexParameter (gl, originalFunc, target, pname) {\n switch(pname){\n case 34046:\n const { extensions: extensions } = gl.luma;\n const ext = extensions[$ac9a715e2be4b231$var$EXT_texture_filter_anisotropic];\n pname = ext && ext.TEXTURE_MAX_ANISOTROPY_EXT || 34046;\n break;\n default:\n }\n return originalFunc(target, pname);\n },\n getParameter: (0, $5QFaj.getParameterPolyfill),\n hint (gl, originalFunc, pname, value) {\n return originalFunc(pname, value);\n }\n};\n\n});\nparcelRegister(\"5QFaj\", function(module, exports) {\n\n$parcel$export(module.exports, \"getParameterPolyfill\", function () { return $4421bda2d8b32c12$export$76e91f2080178ba1; });\n\nvar $8HKWo = parcelRequire(\"8HKWo\");\nconst $4421bda2d8b32c12$var$OES_element_index = \"OES_element_index\";\nconst $4421bda2d8b32c12$var$WEBGL_draw_buffers = \"WEBGL_draw_buffers\";\nconst $4421bda2d8b32c12$var$EXT_disjoint_timer_query = \"EXT_disjoint_timer_query\";\nconst $4421bda2d8b32c12$var$EXT_disjoint_timer_query_webgl2 = \"EXT_disjoint_timer_query_webgl2\";\nconst $4421bda2d8b32c12$var$EXT_texture_filter_anisotropic = \"EXT_texture_filter_anisotropic\";\nconst $4421bda2d8b32c12$var$WEBGL_debug_renderer_info = \"WEBGL_debug_renderer_info\";\nconst $4421bda2d8b32c12$var$GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8b8b;\nconst $4421bda2d8b32c12$var$GL_DONT_CARE = 0x1100;\nconst $4421bda2d8b32c12$var$GL_GPU_DISJOINT_EXT = 0x8fbb;\nconst $4421bda2d8b32c12$var$GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84ff;\nconst $4421bda2d8b32c12$var$GL_UNMASKED_VENDOR_WEBGL = 0x9245;\nconst $4421bda2d8b32c12$var$GL_UNMASKED_RENDERER_WEBGL = 0x9246;\nconst $4421bda2d8b32c12$var$getWebGL2ValueOrZero = (gl)=>!(0, $8HKWo.isWebGL2)(gl) ? 0 : undefined;\nconst $4421bda2d8b32c12$var$WEBGL_PARAMETERS = {\n [3074]: (gl)=>!(0, $8HKWo.isWebGL2)(gl) ? 36064 : undefined,\n [$4421bda2d8b32c12$var$GL_FRAGMENT_SHADER_DERIVATIVE_HINT]: (gl)=>!(0, $8HKWo.isWebGL2)(gl) ? $4421bda2d8b32c12$var$GL_DONT_CARE : undefined,\n [35977]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [32937]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [$4421bda2d8b32c12$var$GL_GPU_DISJOINT_EXT]: (gl, getParameter)=>{\n const ext = (0, $8HKWo.isWebGL2)(gl) ? gl.getExtension($4421bda2d8b32c12$var$EXT_disjoint_timer_query_webgl2) : gl.getExtension($4421bda2d8b32c12$var$EXT_disjoint_timer_query);\n return ext && ext.GPU_DISJOINT_EXT ? getParameter(ext.GPU_DISJOINT_EXT) : 0;\n },\n [$4421bda2d8b32c12$var$GL_UNMASKED_VENDOR_WEBGL]: (gl, getParameter)=>{\n const ext = gl.getExtension($4421bda2d8b32c12$var$WEBGL_debug_renderer_info);\n return getParameter(ext && ext.UNMASKED_VENDOR_WEBGL || 7936);\n },\n [$4421bda2d8b32c12$var$GL_UNMASKED_RENDERER_WEBGL]: (gl, getParameter)=>{\n const ext = gl.getExtension($4421bda2d8b32c12$var$WEBGL_debug_renderer_info);\n return getParameter(ext && ext.UNMASKED_RENDERER_WEBGL || 7937);\n },\n [$4421bda2d8b32c12$var$GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl, getParameter)=>{\n const ext = gl.luma.extensions[$4421bda2d8b32c12$var$EXT_texture_filter_anisotropic];\n return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;\n },\n [32883]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [35071]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [37447]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [36063]: (gl, getParameter)=>{\n if (!(0, $8HKWo.isWebGL2)(gl)) {\n const ext = gl.getExtension($4421bda2d8b32c12$var$WEBGL_draw_buffers);\n return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;\n }\n return undefined;\n },\n [35379]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [35374]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [35377]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [34852]: (gl)=>{\n if (!(0, $8HKWo.isWebGL2)(gl)) {\n const ext = gl.getExtension($4421bda2d8b32c12$var$WEBGL_draw_buffers);\n return ext ? ext.MAX_DRAW_BUFFERS_WEBGL : 0;\n }\n return undefined;\n },\n [36203]: (gl)=>gl.getExtension($4421bda2d8b32c12$var$OES_element_index) ? 2147483647 : 65535,\n [33001]: (gl)=>gl.getExtension($4421bda2d8b32c12$var$OES_element_index) ? 16777216 : 65535,\n [33000]: (gl)=>16777216,\n [37157]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [35373]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [35657]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [36183]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [37137]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [34045]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [35978]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [35979]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [35968]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [35376]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [35375]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [35659]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [37154]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [35371]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [35658]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [35076]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [35077]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero,\n [35380]: $4421bda2d8b32c12$var$getWebGL2ValueOrZero\n};\nfunction $4421bda2d8b32c12$export$76e91f2080178ba1(gl, originalGetParameter, pname) {\n const limit = $4421bda2d8b32c12$var$WEBGL_PARAMETERS[pname];\n const value = typeof limit === \"function\" ? limit(gl, originalGetParameter, pname) : limit;\n const result = value !== undefined ? value : originalGetParameter(pname);\n return result;\n}\n\n});\n\n\n\nparcelRegister(\"2SJyH\", function(module, exports) {\n\n$parcel$export(module.exports, \"setParameters\", function () { return $2193f6f06732c40b$export$60752c4a8a24d484; });\n$parcel$export(module.exports, \"getParameters\", function () { return $2193f6f06732c40b$export$1d5e65f36fbcdb49; });\n$parcel$export(module.exports, \"resetParameters\", function () { return $2193f6f06732c40b$export$2ee1427ea70eaaab; });\n$parcel$export(module.exports, \"withParameters\", function () { return $2193f6f06732c40b$export$b1e7058a2936b651; });\n\nvar $toBvF = parcelRequire(\"toBvF\");\n\nvar $bMGK6 = parcelRequire(\"bMGK6\");\n\nvar $bcsvz = parcelRequire(\"bcsvz\");\n\nvar $8HKWo = parcelRequire(\"8HKWo\");\n\nvar $9mLS9 = parcelRequire(\"9mLS9\");\nfunction $2193f6f06732c40b$export$60752c4a8a24d484(gl, values) {\n (0, $bcsvz.assert)((0, $8HKWo.isWebGL)(gl), \"setParameters requires a WebGL context\");\n if ((0, $9mLS9.isObjectEmpty)(values)) return;\n const compositeSetters = {};\n for(const key in values){\n const glConstant = Number(key);\n const setter = (0, $toBvF.GL_PARAMETER_SETTERS)[key];\n if (setter) {\n if (typeof setter === \"string\") compositeSetters[setter] = true;\n else setter(gl, values[key], glConstant);\n }\n }\n const cache = gl.state && gl.state.cache;\n if (cache) for(const key in compositeSetters){\n const compositeSetter = (0, $toBvF.GL_COMPOSITE_PARAMETER_SETTERS)[key];\n compositeSetter(gl, values, cache);\n }\n}\nfunction $2193f6f06732c40b$export$1d5e65f36fbcdb49(gl, parameters) {\n parameters = parameters || (0, $toBvF.GL_PARAMETER_DEFAULTS);\n if (typeof parameters === \"number\") {\n const key = parameters;\n const getter = (0, $toBvF.GL_PARAMETER_GETTERS)[key];\n return getter ? getter(gl, key) : gl.getParameter(key);\n }\n const parameterKeys = Array.isArray(parameters) ? parameters : Object.keys(parameters);\n const state = {};\n for (const key of parameterKeys){\n const getter = (0, $toBvF.GL_PARAMETER_GETTERS)[key];\n state[key] = getter ? getter(gl, Number(key)) : gl.getParameter(Number(key));\n }\n return state;\n}\nfunction $2193f6f06732c40b$export$2ee1427ea70eaaab(gl) {\n $2193f6f06732c40b$export$60752c4a8a24d484(gl, (0, $toBvF.GL_PARAMETER_DEFAULTS));\n}\nfunction $2193f6f06732c40b$export$b1e7058a2936b651(gl, parameters, func) {\n if ((0, $9mLS9.isObjectEmpty)(parameters)) return func(gl);\n const { nocatch: nocatch = true } = parameters;\n (0, $bMGK6.pushContextState)(gl);\n $2193f6f06732c40b$export$60752c4a8a24d484(gl, parameters);\n let value;\n if (nocatch) {\n value = func(gl);\n (0, $bMGK6.popContextState)(gl);\n } else try {\n value = func(gl);\n } finally{\n (0, $bMGK6.popContextState)(gl);\n }\n return value;\n}\n\n});\nparcelRegister(\"toBvF\", function(module, exports) {\n\n$parcel$export(module.exports, \"GL_PARAMETER_DEFAULTS\", function () { return $0585cb639441f7d8$export$baa06478962d475e; });\n$parcel$export(module.exports, \"GL_PARAMETER_SETTERS\", function () { return $0585cb639441f7d8$export$f29b03183ed64cfb; });\n$parcel$export(module.exports, \"GL_COMPOSITE_PARAMETER_SETTERS\", function () { return $0585cb639441f7d8$export$ff5443824a4dc32; });\n$parcel$export(module.exports, \"GL_HOOKED_SETTERS\", function () { return $0585cb639441f7d8$export$21a690e042a82719; });\n$parcel$export(module.exports, \"GL_PARAMETER_GETTERS\", function () { return $0585cb639441f7d8$export$f7e7f6f928a85334; });\n\nvar $8HKWo = parcelRequire(\"8HKWo\");\nconst $0585cb639441f7d8$export$baa06478962d475e = {\n [3042]: false,\n [32773]: new Float32Array([\n 0,\n 0,\n 0,\n 0\n ]),\n [32777]: 32774,\n [34877]: 32774,\n [32969]: 1,\n [32968]: 0,\n [32971]: 1,\n [32970]: 0,\n [3106]: new Float32Array([\n 0,\n 0,\n 0,\n 0\n ]),\n [3107]: [\n true,\n true,\n true,\n true\n ],\n [2884]: false,\n [2885]: 1029,\n [2929]: false,\n [2931]: 1,\n [2932]: 513,\n [2928]: new Float32Array([\n 0,\n 1\n ]),\n [2930]: true,\n [3024]: true,\n [36006]: null,\n [2886]: 2305,\n [33170]: 4352,\n [2849]: 1,\n [32823]: false,\n [32824]: 0,\n [10752]: 0,\n [32938]: 1.0,\n [32939]: false,\n [3089]: false,\n [3088]: new Int32Array([\n 0,\n 0,\n 1024,\n 1024\n ]),\n [2960]: false,\n [2961]: 0,\n [2968]: 0xffffffff,\n [36005]: 0xffffffff,\n [2962]: 519,\n [2967]: 0,\n [2963]: 0xffffffff,\n [34816]: 519,\n [36003]: 0,\n [36004]: 0xffffffff,\n [2964]: 7680,\n [2965]: 7680,\n [2966]: 7680,\n [34817]: 7680,\n [34818]: 7680,\n [34819]: 7680,\n [2978]: [\n 0,\n 0,\n 1024,\n 1024\n ],\n [3333]: 4,\n [3317]: 4,\n [37440]: false,\n [37441]: false,\n [37443]: 37444,\n [35723]: 4352,\n [36010]: null,\n [35977]: false,\n [3330]: 0,\n [3332]: 0,\n [3331]: 0,\n [3314]: 0,\n [32878]: 0,\n [3316]: 0,\n [3315]: 0,\n [32877]: 0\n};\nconst $0585cb639441f7d8$var$enable = (gl, value, key)=>value ? gl.enable(key) : gl.disable(key);\nconst $0585cb639441f7d8$var$hint = (gl, value, key)=>gl.hint(key, value);\nconst $0585cb639441f7d8$var$pixelStorei = (gl, value, key)=>gl.pixelStorei(key, value);\nconst $0585cb639441f7d8$var$drawFramebuffer = (gl, value)=>{\n const target = (0, $8HKWo.isWebGL2)(gl) ? 36009 : 36160;\n return gl.bindFramebuffer(target, value);\n};\nconst $0585cb639441f7d8$var$readFramebuffer = (gl, value)=>{\n return gl.bindFramebuffer(36008, value);\n};\nfunction $0585cb639441f7d8$var$isArray(array) {\n return Array.isArray(array) || ArrayBuffer.isView(array);\n}\nconst $0585cb639441f7d8$export$f29b03183ed64cfb = {\n [3042]: $0585cb639441f7d8$var$enable,\n [32773]: (gl, value)=>gl.blendColor(...value),\n [32777]: \"blendEquation\",\n [34877]: \"blendEquation\",\n [32969]: \"blendFunc\",\n [32968]: \"blendFunc\",\n [32971]: \"blendFunc\",\n [32970]: \"blendFunc\",\n [3106]: (gl, value)=>gl.clearColor(...value),\n [3107]: (gl, value)=>gl.colorMask(...value),\n [2884]: $0585cb639441f7d8$var$enable,\n [2885]: (gl, value)=>gl.cullFace(value),\n [2929]: $0585cb639441f7d8$var$enable,\n [2931]: (gl, value)=>gl.clearDepth(value),\n [2932]: (gl, value)=>gl.depthFunc(value),\n [2928]: (gl, value)=>gl.depthRange(...value),\n [2930]: (gl, value)=>gl.depthMask(value),\n [3024]: $0585cb639441f7d8$var$enable,\n [35723]: $0585cb639441f7d8$var$hint,\n [36006]: $0585cb639441f7d8$var$drawFramebuffer,\n [2886]: (gl, value)=>gl.frontFace(value),\n [33170]: $0585cb639441f7d8$var$hint,\n [2849]: (gl, value)=>gl.lineWidth(value),\n [32823]: $0585cb639441f7d8$var$enable,\n [32824]: \"polygonOffset\",\n [10752]: \"polygonOffset\",\n [35977]: $0585cb639441f7d8$var$enable,\n [32938]: \"sampleCoverage\",\n [32939]: \"sampleCoverage\",\n [3089]: $0585cb639441f7d8$var$enable,\n [3088]: (gl, value)=>gl.scissor(...value),\n [2960]: $0585cb639441f7d8$var$enable,\n [2961]: (gl, value)=>gl.clearStencil(value),\n [2968]: (gl, value)=>gl.stencilMaskSeparate(1028, value),\n [36005]: (gl, value)=>gl.stencilMaskSeparate(1029, value),\n [2962]: \"stencilFuncFront\",\n [2967]: \"stencilFuncFront\",\n [2963]: \"stencilFuncFront\",\n [34816]: \"stencilFuncBack\",\n [36003]: \"stencilFuncBack\",\n [36004]: \"stencilFuncBack\",\n [2964]: \"stencilOpFront\",\n [2965]: \"stencilOpFront\",\n [2966]: \"stencilOpFront\",\n [34817]: \"stencilOpBack\",\n [34818]: \"stencilOpBack\",\n [34819]: \"stencilOpBack\",\n [2978]: (gl, value)=>gl.viewport(...value),\n [3333]: $0585cb639441f7d8$var$pixelStorei,\n [3317]: $0585cb639441f7d8$var$pixelStorei,\n [37440]: $0585cb639441f7d8$var$pixelStorei,\n [37441]: $0585cb639441f7d8$var$pixelStorei,\n [37443]: $0585cb639441f7d8$var$pixelStorei,\n [3330]: $0585cb639441f7d8$var$pixelStorei,\n [3332]: $0585cb639441f7d8$var$pixelStorei,\n [3331]: $0585cb639441f7d8$var$pixelStorei,\n [36010]: $0585cb639441f7d8$var$readFramebuffer,\n [3314]: $0585cb639441f7d8$var$pixelStorei,\n [32878]: $0585cb639441f7d8$var$pixelStorei,\n [3316]: $0585cb639441f7d8$var$pixelStorei,\n [3315]: $0585cb639441f7d8$var$pixelStorei,\n [32877]: $0585cb639441f7d8$var$pixelStorei,\n framebuffer: (gl, framebuffer)=>{\n const handle = framebuffer && \"handle\" in framebuffer ? framebuffer.handle : framebuffer;\n return gl.bindFramebuffer(36160, handle);\n },\n blend: (gl, value)=>value ? gl.enable(3042) : gl.disable(3042),\n blendColor: (gl, value)=>gl.blendColor(...value),\n blendEquation: (gl, args)=>{\n args = $0585cb639441f7d8$var$isArray(args) ? args : [\n args,\n args\n ];\n gl.blendEquationSeparate(...args);\n },\n blendFunc: (gl, args)=>{\n args = $0585cb639441f7d8$var$isArray(args) && args.length === 2 ? [\n ...args,\n ...args\n ] : args;\n gl.blendFuncSeparate(...args);\n },\n clearColor: (gl, value)=>gl.clearColor(...value),\n clearDepth: (gl, value)=>gl.clearDepth(value),\n clearStencil: (gl, value)=>gl.clearStencil(value),\n colorMask: (gl, value)=>gl.colorMask(...value),\n cull: (gl, value)=>value ? gl.enable(2884) : gl.disable(2884),\n cullFace: (gl, value)=>gl.cullFace(value),\n depthTest: (gl, value)=>value ? gl.enable(2929) : gl.disable(2929),\n depthFunc: (gl, value)=>gl.depthFunc(value),\n depthMask: (gl, value)=>gl.depthMask(value),\n depthRange: (gl, value)=>gl.depthRange(...value),\n dither: (gl, value)=>value ? gl.enable(3024) : gl.disable(3024),\n derivativeHint: (gl, value)=>{\n gl.hint(35723, value);\n },\n frontFace: (gl, value)=>gl.frontFace(value),\n mipmapHint: (gl, value)=>gl.hint(33170, value),\n lineWidth: (gl, value)=>gl.lineWidth(value),\n polygonOffsetFill: (gl, value)=>value ? gl.enable(32823) : gl.disable(32823),\n polygonOffset: (gl, value)=>gl.polygonOffset(...value),\n sampleCoverage: (gl, value)=>gl.sampleCoverage(...value),\n scissorTest: (gl, value)=>value ? gl.enable(3089) : gl.disable(3089),\n scissor: (gl, value)=>gl.scissor(...value),\n stencilTest: (gl, value)=>value ? gl.enable(2960) : gl.disable(2960),\n stencilMask: (gl, value)=>{\n value = $0585cb639441f7d8$var$isArray(value) ? value : [\n value,\n value\n ];\n const [mask, backMask] = value;\n gl.stencilMaskSeparate(1028, mask);\n gl.stencilMaskSeparate(1029, backMask);\n },\n stencilFunc: (gl, args)=>{\n args = $0585cb639441f7d8$var$isArray(args) && args.length === 3 ? [\n ...args,\n ...args\n ] : args;\n const [func, ref, mask, backFunc, backRef, backMask] = args;\n gl.stencilFuncSeparate(1028, func, ref, mask);\n gl.stencilFuncSeparate(1029, backFunc, backRef, backMask);\n },\n stencilOp: (gl, args)=>{\n args = $0585cb639441f7d8$var$isArray(args) && args.length === 3 ? [\n ...args,\n ...args\n ] : args;\n const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;\n gl.stencilOpSeparate(1028, sfail, dpfail, dppass);\n gl.stencilOpSeparate(1029, backSfail, backDpfail, backDppass);\n },\n viewport: (gl, value)=>gl.viewport(...value)\n};\nfunction $0585cb639441f7d8$var$getValue(glEnum, values, cache) {\n return values[glEnum] !== undefined ? values[glEnum] : cache[glEnum];\n}\nconst $0585cb639441f7d8$export$ff5443824a4dc32 = {\n blendEquation: (gl, values, cache)=>gl.blendEquationSeparate($0585cb639441f7d8$var$getValue(32777, values, cache), $0585cb639441f7d8$var$getValue(34877, values, cache)),\n blendFunc: (gl, values, cache)=>gl.blendFuncSeparate($0585cb639441f7d8$var$getValue(32969, values, cache), $0585cb639441f7d8$var$getValue(32968, values, cache), $0585cb639441f7d8$var$getValue(32971, values, cache), $0585cb639441f7d8$var$getValue(32970, values, cache)),\n polygonOffset: (gl, values, cache)=>gl.polygonOffset($0585cb639441f7d8$var$getValue(32824, values, cache), $0585cb639441f7d8$var$getValue(10752, values, cache)),\n sampleCoverage: (gl, values, cache)=>gl.sampleCoverage($0585cb639441f7d8$var$getValue(32938, values, cache), $0585cb639441f7d8$var$getValue(32939, values, cache)),\n stencilFuncFront: (gl, values, cache)=>gl.stencilFuncSeparate(1028, $0585cb639441f7d8$var$getValue(2962, values, cache), $0585cb639441f7d8$var$getValue(2967, values, cache), $0585cb639441f7d8$var$getValue(2963, values, cache)),\n stencilFuncBack: (gl, values, cache)=>gl.stencilFuncSeparate(1029, $0585cb639441f7d8$var$getValue(34816, values, cache), $0585cb639441f7d8$var$getValue(36003, values, cache), $0585cb639441f7d8$var$getValue(36004, values, cache)),\n stencilOpFront: (gl, values, cache)=>gl.stencilOpSeparate(1028, $0585cb639441f7d8$var$getValue(2964, values, cache), $0585cb639441f7d8$var$getValue(2965, values, cache), $0585cb639441f7d8$var$getValue(2966, values, cache)),\n stencilOpBack: (gl, values, cache)=>gl.stencilOpSeparate(1029, $0585cb639441f7d8$var$getValue(34817, values, cache), $0585cb639441f7d8$var$getValue(34818, values, cache), $0585cb639441f7d8$var$getValue(34819, values, cache))\n};\nconst $0585cb639441f7d8$export$21a690e042a82719 = {\n enable: (update, capability)=>update({\n [capability]: true\n }),\n disable: (update, capability)=>update({\n [capability]: false\n }),\n pixelStorei: (update, pname, value)=>update({\n [pname]: value\n }),\n hint: (update, pname, hint)=>update({\n [pname]: hint\n }),\n bindFramebuffer: (update, target, framebuffer)=>{\n switch(target){\n case 36160:\n return update({\n [36006]: framebuffer,\n [36010]: framebuffer\n });\n case 36009:\n return update({\n [36006]: framebuffer\n });\n case 36008:\n return update({\n [36010]: framebuffer\n });\n default:\n return null;\n }\n },\n blendColor: (update, r, g, b, a)=>update({\n [32773]: new Float32Array([\n r,\n g,\n b,\n a\n ])\n }),\n blendEquation: (update, mode)=>update({\n [32777]: mode,\n [34877]: mode\n }),\n blendEquationSeparate: (update, modeRGB, modeAlpha)=>update({\n [32777]: modeRGB,\n [34877]: modeAlpha\n }),\n blendFunc: (update, src, dst)=>update({\n [32969]: src,\n [32968]: dst,\n [32971]: src,\n [32970]: dst\n }),\n blendFuncSeparate: (update, srcRGB, dstRGB, srcAlpha, dstAlpha)=>update({\n [32969]: srcRGB,\n [32968]: dstRGB,\n [32971]: srcAlpha,\n [32970]: dstAlpha\n }),\n clearColor: (update, r, g, b, a)=>update({\n [3106]: new Float32Array([\n r,\n g,\n b,\n a\n ])\n }),\n clearDepth: (update, depth)=>update({\n [2931]: depth\n }),\n clearStencil: (update, s)=>update({\n [2961]: s\n }),\n colorMask: (update, r, g, b, a)=>update({\n [3107]: [\n r,\n g,\n b,\n a\n ]\n }),\n cullFace: (update, mode)=>update({\n [2885]: mode\n }),\n depthFunc: (update, func)=>update({\n [2932]: func\n }),\n depthRange: (update, zNear, zFar)=>update({\n [2928]: new Float32Array([\n zNear,\n zFar\n ])\n }),\n depthMask: (update, mask)=>update({\n [2930]: mask\n }),\n frontFace: (update, face)=>update({\n [2886]: face\n }),\n lineWidth: (update, width)=>update({\n [2849]: width\n }),\n polygonOffset: (update, factor, units)=>update({\n [32824]: factor,\n [10752]: units\n }),\n sampleCoverage: (update, value, invert)=>update({\n [32938]: value,\n [32939]: invert\n }),\n scissor: (update, x, y, width, height)=>update({\n [3088]: new Int32Array([\n x,\n y,\n width,\n height\n ])\n }),\n stencilMask: (update, mask)=>update({\n [2968]: mask,\n [36005]: mask\n }),\n stencilMaskSeparate: (update, face, mask)=>update({\n [face === 1028 ? 2968 : 36005]: mask\n }),\n stencilFunc: (update, func, ref, mask)=>update({\n [2962]: func,\n [2967]: ref,\n [2963]: mask,\n [34816]: func,\n [36003]: ref,\n [36004]: mask\n }),\n stencilFuncSeparate: (update, face, func, ref, mask)=>update({\n [face === 1028 ? 2962 : 34816]: func,\n [face === 1028 ? 2967 : 36003]: ref,\n [face === 1028 ? 2963 : 36004]: mask\n }),\n stencilOp: (update, fail, zfail, zpass)=>update({\n [2964]: fail,\n [2965]: zfail,\n [2966]: zpass,\n [34817]: fail,\n [34818]: zfail,\n [34819]: zpass\n }),\n stencilOpSeparate: (update, face, fail, zfail, zpass)=>update({\n [face === 1028 ? 2964 : 34817]: fail,\n [face === 1028 ? 2965 : 34818]: zfail,\n [face === 1028 ? 2966 : 34819]: zpass\n }),\n viewport: (update, x, y, width, height)=>update({\n [2978]: [\n x,\n y,\n width,\n height\n ]\n })\n};\nconst $0585cb639441f7d8$var$isEnabled = (gl, key)=>gl.isEnabled(key);\nconst $0585cb639441f7d8$export$f7e7f6f928a85334 = {\n [3042]: $0585cb639441f7d8$var$isEnabled,\n [2884]: $0585cb639441f7d8$var$isEnabled,\n [2929]: $0585cb639441f7d8$var$isEnabled,\n [3024]: $0585cb639441f7d8$var$isEnabled,\n [32823]: $0585cb639441f7d8$var$isEnabled,\n [32926]: $0585cb639441f7d8$var$isEnabled,\n [32928]: $0585cb639441f7d8$var$isEnabled,\n [3089]: $0585cb639441f7d8$var$isEnabled,\n [2960]: $0585cb639441f7d8$var$isEnabled,\n [35977]: $0585cb639441f7d8$var$isEnabled\n};\n\n});\n\nparcelRegister(\"bMGK6\", function(module, exports) {\n\n$parcel$export(module.exports, \"trackContextState\", function () { return $89455532f443da4d$export$eda55831a64d5931; });\n$parcel$export(module.exports, \"pushContextState\", function () { return $89455532f443da4d$export$529f9c1c84156b45; });\n$parcel$export(module.exports, \"popContextState\", function () { return $89455532f443da4d$export$30ca4f2cb45c903e; });\n\nvar $toBvF = parcelRequire(\"toBvF\");\n\nvar $2SJyH = parcelRequire(\"2SJyH\");\n\nvar $bcsvz = parcelRequire(\"bcsvz\");\n\nvar $9mLS9 = parcelRequire(\"9mLS9\");\nfunction $89455532f443da4d$var$installGetterOverride(gl, functionName) {\n const originalGetterFunc = gl[functionName].bind(gl);\n gl[functionName] = function get() {\n const pname = arguments.length <= 0 ? undefined : arguments[0];\n if (!(pname in gl.state.cache)) return originalGetterFunc(...arguments);\n return gl.state.enable ? gl.state.cache[pname] : originalGetterFunc(...arguments);\n };\n Object.defineProperty(gl[functionName], \"name\", {\n value: \"\".concat(functionName, \"-from-cache\"),\n configurable: false\n });\n}\nfunction $89455532f443da4d$var$installSetterSpy(gl, functionName, setter) {\n const originalSetterFunc = gl[functionName].bind(gl);\n gl[functionName] = function set() {\n for(var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++)params[_key] = arguments[_key];\n const { valueChanged: valueChanged, oldValue: oldValue } = setter(gl.state._updateCache, ...params);\n if (valueChanged) originalSetterFunc(...params);\n return oldValue;\n };\n Object.defineProperty(gl[functionName], \"name\", {\n value: \"\".concat(functionName, \"-to-cache\"),\n configurable: false\n });\n}\nfunction $89455532f443da4d$var$installProgramSpy(gl) {\n const originalUseProgram = gl.useProgram.bind(gl);\n gl.useProgram = function useProgramLuma(handle) {\n if (gl.state.program !== handle) {\n originalUseProgram(handle);\n gl.state.program = handle;\n }\n };\n}\nclass $89455532f443da4d$var$GLState {\n push() {\n let values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.stateStack.push({});\n }\n pop() {\n (0, $bcsvz.assert)(this.stateStack.length > 0);\n const oldValues = this.stateStack[this.stateStack.length - 1];\n (0, $2SJyH.setParameters)(this.gl, oldValues);\n this.stateStack.pop();\n }\n _updateCache(values) {\n let valueChanged = false;\n let oldValue;\n const oldValues = this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1];\n for(const key in values){\n (0, $bcsvz.assert)(key !== undefined);\n const value = values[key];\n const cached = this.cache[key];\n if (!(0, $9mLS9.deepArrayEqual)(value, cached)) {\n valueChanged = true;\n oldValue = cached;\n if (oldValues && !(key in oldValues)) oldValues[key] = cached;\n this.cache[key] = value;\n }\n }\n return {\n valueChanged: valueChanged,\n oldValue: oldValue\n };\n }\n constructor(gl){\n let { copyState: copyState = false, log: log = ()=>{} } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.gl = gl;\n this.program = null;\n this.stateStack = [];\n this.enable = true;\n this.cache = copyState ? (0, $2SJyH.getParameters)(gl) : Object.assign({}, (0, $toBvF.GL_PARAMETER_DEFAULTS));\n this.log = log;\n this._updateCache = this._updateCache.bind(this);\n Object.seal(this);\n }\n}\nfunction $89455532f443da4d$export$eda55831a64d5931(gl) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const { enable: enable = true, copyState: copyState } = options;\n (0, $bcsvz.assert)(copyState !== undefined);\n if (!gl.state) {\n const { polyfillContext: polyfillContext } = globalThis;\n if (polyfillContext) polyfillContext(gl);\n gl.state = new $89455532f443da4d$var$GLState(gl, {\n copyState: copyState\n });\n $89455532f443da4d$var$installProgramSpy(gl);\n for(const key in 0, $toBvF.GL_HOOKED_SETTERS){\n const setter = (0, $toBvF.GL_HOOKED_SETTERS)[key];\n $89455532f443da4d$var$installSetterSpy(gl, key, setter);\n }\n $89455532f443da4d$var$installGetterOverride(gl, \"getParameter\");\n $89455532f443da4d$var$installGetterOverride(gl, \"isEnabled\");\n }\n gl.state.enable = enable;\n return gl;\n}\nfunction $89455532f443da4d$export$529f9c1c84156b45(gl) {\n if (!gl.state) $89455532f443da4d$export$eda55831a64d5931(gl, {\n copyState: false\n });\n gl.state.push();\n}\nfunction $89455532f443da4d$export$30ca4f2cb45c903e(gl) {\n (0, $bcsvz.assert)(gl.state);\n gl.state.pop();\n}\n\n});\nparcelRegister(\"9mLS9\", function(module, exports) {\n\n$parcel$export(module.exports, \"isObjectEmpty\", function () { return $6d1b4d9be4edfd54$export$23cfe696632d10f4; });\n$parcel$export(module.exports, \"deepArrayEqual\", function () { return $6d1b4d9be4edfd54$export$9b55716ca87eded; });\nfunction $6d1b4d9be4edfd54$export$23cfe696632d10f4(object) {\n for(const key in object)return false;\n return true;\n}\nfunction $6d1b4d9be4edfd54$export$9b55716ca87eded(x, y) {\n if (x === y) return true;\n const isArrayX = Array.isArray(x) || ArrayBuffer.isView(x);\n const isArrayY = Array.isArray(y) || ArrayBuffer.isView(y);\n if (isArrayX && isArrayY && x.length === y.length) {\n for(let i = 0; i < x.length; ++i){\n if (x[i] !== y[i]) return false;\n }\n return true;\n }\n return false;\n}\n\n});\n\n\n\nparcelRegister(\"5k5Ga\", function(module, exports) {\n\n$parcel$export(module.exports, \"createGLContext\", function () { return $3e0339c659eb342d$export$a32ea65c51ffebe7; });\n$parcel$export(module.exports, \"instrumentGLContext\", function () { return $3e0339c659eb342d$export$6b6cef073fe6a207; });\n$parcel$export(module.exports, \"resizeGLContext\", function () { return $3e0339c659eb342d$export$4ed444b69b8944fd; });\n\nvar $jeIEj = parcelRequire(\"jeIEj\");\n\nvar $bMGK6 = parcelRequire(\"bMGK6\");\n\nvar $lvicK = parcelRequire(\"lvicK\");\n\nvar $bcsvz = parcelRequire(\"bcsvz\");\n\nvar $ieKgV = parcelRequire(\"ieKgV\");\n\nvar $8HKWo = parcelRequire(\"8HKWo\");\nconst $3e0339c659eb342d$var$isBrowser = (0, $jeIEj.default)();\nconst $3e0339c659eb342d$var$isPage = $3e0339c659eb342d$var$isBrowser && typeof document !== \"undefined\";\nconst $3e0339c659eb342d$var$CONTEXT_DEFAULTS = {\n webgl2: true,\n webgl1: true,\n throwOnError: true,\n manageState: true,\n canvas: null,\n debug: false,\n width: 800,\n height: 600\n};\nfunction $3e0339c659eb342d$export$a32ea65c51ffebe7() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n (0, $bcsvz.assert)($3e0339c659eb342d$var$isBrowser, \"createGLContext only available in the browser.\\nCreate your own headless context or use 'createHeadlessContext' from @luma.gl/test-utils\");\n options = Object.assign({}, $3e0339c659eb342d$var$CONTEXT_DEFAULTS, options);\n const { width: width, height: height } = options;\n function onError(message) {\n if (options.throwOnError) throw new Error(message);\n console.error(message);\n return null;\n }\n options.onError = onError;\n let gl;\n const { canvas: canvas } = options;\n const targetCanvas = $3e0339c659eb342d$var$getCanvas({\n canvas: canvas,\n width: width,\n height: height,\n onError: onError\n });\n gl = $3e0339c659eb342d$var$createBrowserContext(targetCanvas, options);\n if (!gl) return null;\n gl = $3e0339c659eb342d$export$6b6cef073fe6a207(gl, options);\n $3e0339c659eb342d$var$logInfo(gl);\n return gl;\n}\nfunction $3e0339c659eb342d$export$6b6cef073fe6a207(gl) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!gl || gl._instrumented) return gl;\n gl._version = gl._version || $3e0339c659eb342d$var$getVersion(gl);\n gl.luma = gl.luma || {};\n gl.luma.canvasSizeInfo = gl.luma.canvasSizeInfo || {};\n options = Object.assign({}, $3e0339c659eb342d$var$CONTEXT_DEFAULTS, options);\n const { manageState: manageState, debug: debug } = options;\n if (manageState) (0, $bMGK6.trackContextState)(gl, {\n copyState: false,\n log: function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n return (0, $lvicK.log).log(1, ...args)();\n }\n });\n if ($3e0339c659eb342d$var$isBrowser && debug) {\n if (!globalThis.makeDebugContext) (0, $lvicK.log).warn('WebGL debug mode not activated. import \"@luma.gl/debug\" to enable.')();\n else {\n gl = globalThis.makeDebugContext(gl, options);\n (0, $lvicK.log).level = Math.max((0, $lvicK.log).level, 1);\n }\n }\n gl._instrumented = true;\n return gl;\n}\nfunction $3e0339c659eb342d$export$6f15ab3b829c3189(gl) {\n const vendorMasked = gl.getParameter(7936);\n const rendererMasked = gl.getParameter(7937);\n const ext = gl.getExtension(\"WEBGL_debug_renderer_info\");\n const vendorUnmasked = ext && gl.getParameter(ext.UNMASKED_VENDOR_WEBGL || 7936);\n const rendererUnmasked = ext && gl.getParameter(ext.UNMASKED_RENDERER_WEBGL || 7937);\n return {\n vendor: vendorUnmasked || vendorMasked,\n renderer: rendererUnmasked || rendererMasked,\n vendorMasked: vendorMasked,\n rendererMasked: rendererMasked,\n version: gl.getParameter(7938),\n shadingLanguageVersion: gl.getParameter(35724)\n };\n}\nfunction $3e0339c659eb342d$export$4ed444b69b8944fd(gl) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (gl.canvas) {\n const devicePixelRatio = (0, $ieKgV.getDevicePixelRatio)(options.useDevicePixels);\n $3e0339c659eb342d$var$setDevicePixelRatio(gl, devicePixelRatio, options);\n return;\n }\n const ext = gl.getExtension(\"STACKGL_resize_drawingbuffer\");\n if (ext && \"width\" in options && \"height\" in options) ext.resize(options.width, options.height);\n}\nfunction $3e0339c659eb342d$var$createBrowserContext(canvas, options) {\n const { onError: onError } = options;\n let errorMessage = null;\n const onCreateError = (error)=>errorMessage = error.statusMessage || errorMessage;\n canvas.addEventListener(\"webglcontextcreationerror\", onCreateError, false);\n const { webgl1: webgl1 = true, webgl2: webgl2 = true } = options;\n let gl = null;\n if (webgl2) {\n gl = gl || canvas.getContext(\"webgl2\", options);\n gl = gl || canvas.getContext(\"experimental-webgl2\", options);\n }\n if (webgl1) {\n gl = gl || canvas.getContext(\"webgl\", options);\n gl = gl || canvas.getContext(\"experimental-webgl\", options);\n }\n canvas.removeEventListener(\"webglcontextcreationerror\", onCreateError, false);\n if (!gl) return onError(\"Failed to create \".concat(webgl2 && !webgl1 ? \"WebGL2\" : \"WebGL\", \" context: \").concat(errorMessage || \"Unknown error\"));\n if (options.onContextLost) canvas.addEventListener(\"webglcontextlost\", options.onContextLost, false);\n if (options.onContextRestored) canvas.addEventListener(\"webglcontextrestored\", options.onContextRestored, false);\n return gl;\n}\nfunction $3e0339c659eb342d$var$getCanvas(_ref) {\n let { canvas: canvas, width: width = 800, height: height = 600, onError: onError } = _ref;\n let targetCanvas;\n if (typeof canvas === \"string\") {\n const isPageLoaded = $3e0339c659eb342d$var$isPage && document.readyState === \"complete\";\n if (!isPageLoaded) onError(\"createGLContext called on canvas '\".concat(canvas, \"' before page was loaded\"));\n targetCanvas = document.getElementById(canvas);\n } else if (canvas) targetCanvas = canvas;\n else {\n targetCanvas = document.createElement(\"canvas\");\n targetCanvas.id = \"lumagl-canvas\";\n targetCanvas.style.width = Number.isFinite(width) ? \"\".concat(width, \"px\") : \"100%\";\n targetCanvas.style.height = Number.isFinite(height) ? \"\".concat(height, \"px\") : \"100%\";\n document.body.insertBefore(targetCanvas, document.body.firstChild);\n }\n return targetCanvas;\n}\nfunction $3e0339c659eb342d$var$logInfo(gl) {\n const webGL = (0, $8HKWo.isWebGL2)(gl) ? \"WebGL2\" : \"WebGL1\";\n const info = $3e0339c659eb342d$export$6f15ab3b829c3189(gl);\n const driver = info ? \"(\".concat(info.vendor, \",\").concat(info.renderer, \")\") : \"\";\n const debug = gl.debug ? \" debug\" : \"\";\n (0, $lvicK.log).info(1, \"\".concat(webGL).concat(debug, \" context \").concat(driver))();\n}\nfunction $3e0339c659eb342d$var$getVersion(gl) {\n if (typeof WebGL2RenderingContext !== \"undefined\" && gl instanceof WebGL2RenderingContext) return 2;\n return 1;\n}\nfunction $3e0339c659eb342d$var$setDevicePixelRatio(gl, devicePixelRatio, options) {\n let clientWidth = \"width\" in options ? options.width : gl.canvas.clientWidth;\n let clientHeight = \"height\" in options ? options.height : gl.canvas.clientHeight;\n if (!clientWidth || !clientHeight) {\n (0, $lvicK.log).log(1, \"Canvas clientWidth/clientHeight is 0\")();\n devicePixelRatio = 1;\n clientWidth = gl.canvas.width || 1;\n clientHeight = gl.canvas.height || 1;\n }\n gl.luma = gl.luma || {};\n gl.luma.canvasSizeInfo = gl.luma.canvasSizeInfo || {};\n const cachedSize = gl.luma.canvasSizeInfo;\n if (cachedSize.clientWidth !== clientWidth || cachedSize.clientHeight !== clientHeight || cachedSize.devicePixelRatio !== devicePixelRatio) {\n let clampedPixelRatio = devicePixelRatio;\n const canvasWidth = Math.floor(clientWidth * clampedPixelRatio);\n const canvasHeight = Math.floor(clientHeight * clampedPixelRatio);\n gl.canvas.width = canvasWidth;\n gl.canvas.height = canvasHeight;\n if (gl.drawingBufferWidth !== canvasWidth || gl.drawingBufferHeight !== canvasHeight) {\n (0, $lvicK.log).warn(\"Device pixel ratio clamped\")();\n clampedPixelRatio = Math.min(gl.drawingBufferWidth / clientWidth, gl.drawingBufferHeight / clientHeight);\n gl.canvas.width = Math.floor(clientWidth * clampedPixelRatio);\n gl.canvas.height = Math.floor(clientHeight * clampedPixelRatio);\n }\n Object.assign(gl.luma.canvasSizeInfo, {\n clientWidth: clientWidth,\n clientHeight: clientHeight,\n devicePixelRatio: devicePixelRatio\n });\n }\n}\n\n});\nparcelRegister(\"ieKgV\", function(module, exports) {\n\n$parcel$export(module.exports, \"cssToDeviceRatio\", function () { return $d46d6d76d6cae6f2$export$df40057290e74703; });\n$parcel$export(module.exports, \"cssToDevicePixels\", function () { return $d46d6d76d6cae6f2$export$af080a4e21b7825c; });\n$parcel$export(module.exports, \"getDevicePixelRatio\", function () { return $d46d6d76d6cae6f2$export$cf4a949e5ad681d; });\nfunction $d46d6d76d6cae6f2$export$df40057290e74703(gl) {\n const { luma: luma } = gl;\n if (gl.canvas && luma) {\n const cachedSize = luma.canvasSizeInfo;\n const clientWidth = \"clientWidth\" in cachedSize ? cachedSize.clientWidth : gl.canvas.clientWidth;\n return clientWidth ? gl.drawingBufferWidth / clientWidth : 1;\n }\n return 1;\n}\nfunction $d46d6d76d6cae6f2$export$af080a4e21b7825c(gl, cssPixel) {\n let yInvert = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n const ratio = $d46d6d76d6cae6f2$export$df40057290e74703(gl);\n const width = gl.drawingBufferWidth;\n const height = gl.drawingBufferHeight;\n return $d46d6d76d6cae6f2$var$scalePixels(cssPixel, ratio, width, height, yInvert);\n}\nfunction $d46d6d76d6cae6f2$export$cf4a949e5ad681d(useDevicePixels) {\n const windowRatio = typeof window === \"undefined\" ? 1 : window.devicePixelRatio || 1;\n if (Number.isFinite(useDevicePixels)) return useDevicePixels <= 0 ? 1 : useDevicePixels;\n return useDevicePixels ? windowRatio : 1;\n}\nfunction $d46d6d76d6cae6f2$var$scalePixels(pixel, ratio, width, height, yInvert) {\n const x = $d46d6d76d6cae6f2$var$scaleX(pixel[0], ratio, width);\n let y = $d46d6d76d6cae6f2$var$scaleY(pixel[1], ratio, height, yInvert);\n let t = $d46d6d76d6cae6f2$var$scaleX(pixel[0] + 1, ratio, width);\n const xHigh = t === width - 1 ? t : t - 1;\n t = $d46d6d76d6cae6f2$var$scaleY(pixel[1] + 1, ratio, height, yInvert);\n let yHigh;\n if (yInvert) {\n t = t === 0 ? t : t + 1;\n yHigh = y;\n y = t;\n } else yHigh = t === height - 1 ? t : t - 1;\n return {\n x: x,\n y: y,\n width: Math.max(xHigh - x + 1, 1),\n height: Math.max(yHigh - y + 1, 1)\n };\n}\nfunction $d46d6d76d6cae6f2$var$scaleX(x, ratio, width) {\n const r = Math.min(Math.round(x * ratio), width - 1);\n return r;\n}\nfunction $d46d6d76d6cae6f2$var$scaleY(y, ratio, height, yInvert) {\n return yInvert ? Math.max(0, height - 1 - Math.round(y * ratio)) : Math.min(Math.round(y * ratio), height - 1);\n}\n\n});\n\n\n\nparcelRegister(\"jgMzF\", function(module, exports) {\n\n$parcel$export(module.exports, \"lumaStats\", function () { return $e07530c3d098523d$export$fb95d6e12d0fb414; });\nparcelRequire(\"73UuK\");\nvar $lvicK = parcelRequire(\"lvicK\");\nparcelRequire(\"1k2nF\");\nvar $lL0rr = parcelRequire(\"lL0rr\");\n\nvar $jeIEj = parcelRequire(\"jeIEj\");\nconst $e07530c3d098523d$var$VERSION = \"8.5.21\";\nconst $e07530c3d098523d$var$STARTUP_MESSAGE = \"set luma.log.level=1 (or higher) to trace rendering\";\nclass $e07530c3d098523d$export$a763db1752b80c33 {\n get(name) {\n if (!this.stats.has(name)) this.stats.set(name, new (0, $lL0rr.default)({\n id: name\n }));\n return this.stats.get(name);\n }\n constructor(){\n this.stats = new Map();\n }\n}\nconst $e07530c3d098523d$export$fb95d6e12d0fb414 = new $e07530c3d098523d$export$a763db1752b80c33();\nif (globalThis.luma && globalThis.luma.VERSION !== $e07530c3d098523d$var$VERSION) throw new Error(\"luma.gl - multiple VERSIONs detected: \".concat(globalThis.luma.VERSION, \" vs \").concat($e07530c3d098523d$var$VERSION));\nif (!globalThis.luma) {\n if ((0, $jeIEj.default)()) (0, $lvicK.log).log(1, \"luma.gl \".concat($e07530c3d098523d$var$VERSION, \" - \").concat($e07530c3d098523d$var$STARTUP_MESSAGE))();\n globalThis.luma = globalThis.luma || {\n VERSION: $e07530c3d098523d$var$VERSION,\n version: $e07530c3d098523d$var$VERSION,\n log: $lvicK.log,\n stats: $e07530c3d098523d$export$fb95d6e12d0fb414,\n globals: {\n modules: {},\n nodeIO: {}\n }\n };\n}\nvar $e07530c3d098523d$export$2e2bcd8739ae039 = globalThis.luma;\n\n});\nparcelRegister(\"1k2nF\", function(module, exports) {\n\n$parcel$export(module.exports, \"Stats\", function () { return (parcelRequire(\"lL0rr\")).default; });\n\nvar $lL0rr = parcelRequire(\"lL0rr\");\n\nvar $altPn = parcelRequire(\"altPn\");\n\nvar $7d6hI = parcelRequire(\"7d6hI\");\n\n});\nparcelRegister(\"lL0rr\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $fd6e547550cdaf73$export$2e2bcd8739ae039; });\n\nvar $gl6YX = parcelRequire(\"gl6YX\");\n\nvar $altPn = parcelRequire(\"altPn\");\nclass $fd6e547550cdaf73$export$2e2bcd8739ae039 {\n get(name) {\n let type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"count\";\n return this._getOrCreate({\n name: name,\n type: type\n });\n }\n get size() {\n return Object.keys(this.stats).length;\n }\n reset() {\n for(const key in this.stats)this.stats[key].reset();\n return this;\n }\n forEach(fn) {\n for(const key in this.stats)fn(this.stats[key]);\n }\n getTable() {\n const table = {};\n this.forEach((stat)=>{\n table[stat.name] = {\n time: stat.time || 0,\n count: stat.count || 0,\n average: stat.getAverageTime() || 0,\n hz: stat.getHz() || 0\n };\n });\n return table;\n }\n _initializeStats() {\n let stats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n stats.forEach((stat)=>this._getOrCreate(stat));\n }\n _getOrCreate(stat) {\n if (!stat || !stat.name) return null;\n const { name: name, type: type } = stat;\n if (!this.stats[name]) {\n if (stat instanceof (0, $altPn.default)) this.stats[name] = stat;\n else this.stats[name] = new (0, $altPn.default)(name, type);\n }\n return this.stats[name];\n }\n constructor(options){\n (0, $gl6YX.default)(this, \"id\", void 0);\n (0, $gl6YX.default)(this, \"stats\", {});\n this.id = options.id;\n this.stats = {};\n this._initializeStats(options.stats);\n Object.seal(this);\n }\n}\n\n});\nparcelRegister(\"gl6YX\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $be540606661f80d5$export$2e2bcd8739ae039; });\nfunction $be540606661f80d5$export$2e2bcd8739ae039(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\n\n});\n\nparcelRegister(\"altPn\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $788300afdbd6debc$export$2e2bcd8739ae039; });\n\nvar $gl6YX = parcelRequire(\"gl6YX\");\n\nvar $7d6hI = parcelRequire(\"7d6hI\");\nclass $788300afdbd6debc$export$2e2bcd8739ae039 {\n setSampleSize(samples) {\n this.sampleSize = samples;\n return this;\n }\n incrementCount() {\n this.addCount(1);\n return this;\n }\n decrementCount() {\n this.subtractCount(1);\n return this;\n }\n addCount(value) {\n this._count += value;\n this._samples++;\n this._checkSampling();\n return this;\n }\n subtractCount(value) {\n this._count -= value;\n this._samples++;\n this._checkSampling();\n return this;\n }\n addTime(time) {\n this._time += time;\n this.lastTiming = time;\n this._samples++;\n this._checkSampling();\n return this;\n }\n timeStart() {\n this._startTime = (0, $7d6hI.default)();\n this._timerPending = true;\n return this;\n }\n timeEnd() {\n if (!this._timerPending) return this;\n this.addTime((0, $7d6hI.default)() - this._startTime);\n this._timerPending = false;\n this._checkSampling();\n return this;\n }\n getSampleAverageCount() {\n return this.sampleSize > 0 ? this.lastSampleCount / this.sampleSize : 0;\n }\n getSampleAverageTime() {\n return this.sampleSize > 0 ? this.lastSampleTime / this.sampleSize : 0;\n }\n getSampleHz() {\n return this.lastSampleTime > 0 ? this.sampleSize / (this.lastSampleTime / 1000) : 0;\n }\n getAverageCount() {\n return this.samples > 0 ? this.count / this.samples : 0;\n }\n getAverageTime() {\n return this.samples > 0 ? this.time / this.samples : 0;\n }\n getHz() {\n return this.time > 0 ? this.samples / (this.time / 1000) : 0;\n }\n reset() {\n this.time = 0;\n this.count = 0;\n this.samples = 0;\n this.lastTiming = 0;\n this.lastSampleTime = 0;\n this.lastSampleCount = 0;\n this._count = 0;\n this._time = 0;\n this._samples = 0;\n this._startTime = 0;\n this._timerPending = false;\n return this;\n }\n _checkSampling() {\n if (this._samples === this.sampleSize) {\n this.lastSampleTime = this._time;\n this.lastSampleCount = this._count;\n this.count += this._count;\n this.time += this._time;\n this.samples += this._samples;\n this._time = 0;\n this._count = 0;\n this._samples = 0;\n }\n }\n constructor(name, type){\n (0, $gl6YX.default)(this, \"name\", void 0);\n (0, $gl6YX.default)(this, \"type\", void 0);\n (0, $gl6YX.default)(this, \"sampleSize\", 1);\n (0, $gl6YX.default)(this, \"time\", void 0);\n (0, $gl6YX.default)(this, \"count\", void 0);\n (0, $gl6YX.default)(this, \"samples\", void 0);\n (0, $gl6YX.default)(this, \"lastTiming\", void 0);\n (0, $gl6YX.default)(this, \"lastSampleTime\", void 0);\n (0, $gl6YX.default)(this, \"lastSampleCount\", void 0);\n (0, $gl6YX.default)(this, \"_count\", 0);\n (0, $gl6YX.default)(this, \"_time\", 0);\n (0, $gl6YX.default)(this, \"_samples\", 0);\n (0, $gl6YX.default)(this, \"_startTime\", 0);\n (0, $gl6YX.default)(this, \"_timerPending\", false);\n this.name = name;\n this.type = type;\n this.reset();\n }\n}\n\n});\nparcelRegister(\"7d6hI\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $53fe9f535bc054c1$export$2e2bcd8739ae039; });\n\nvar $95Bnk = parcelRequire(\"95Bnk\");\nfunction $53fe9f535bc054c1$export$2e2bcd8739ae039() {\n let timestamp;\n if (typeof window !== \"undefined\" && window.performance) timestamp = window.performance.now();\n else if (typeof $95Bnk !== \"undefined\" && $95Bnk.hrtime) {\n const timeParts = $95Bnk.hrtime();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else timestamp = Date.now();\n return timestamp;\n}\n\n});\n\n\n\n\n\nparcelRegister(\"5tEaG\", function(module, exports) {\n\n$parcel$export(module.exports, \"getKeyValue\", function () { return $3fced25cdd798184$export$38eb86f225c9e34c; });\n$parcel$export(module.exports, \"getKey\", function () { return $3fced25cdd798184$export$a47fb462a08de82f; });\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\nfunction $3fced25cdd798184$export$38eb86f225c9e34c(gl, name) {\n if (typeof name !== \"string\") return name;\n const number = Number(name);\n if (!isNaN(number)) return number;\n name = name.replace(/^.*\\./, \"\");\n const value = gl[name];\n (0, $ihfnu.assert)(value !== undefined, \"Accessing undefined constant GL.\".concat(name));\n return value;\n}\nfunction $3fced25cdd798184$export$a47fb462a08de82f(gl, value) {\n value = Number(value);\n for(const key in gl){\n if (gl[key] === value) return \"GL.\".concat(key);\n }\n return String(value);\n}\nfunction $3fced25cdd798184$export$7869d83d4284f7ff(gl, value) {\n (0, $ihfnu.assert)(value !== undefined, \"undefined key\");\n value = Number(value);\n for(const key in gl){\n if (gl[key] === value) return \"GL.\".concat(key);\n }\n return String(value);\n}\n\n});\nparcelRegister(\"ihfnu\", function(module, exports) {\n\n$parcel$export(module.exports, \"assert\", function () { return $d4e5be436b497bef$export$a7a9523472993e97; });\nfunction $d4e5be436b497bef$export$a7a9523472993e97(condition, message) {\n if (!condition) throw new Error(message || \"luma.gl: assertion failed.\");\n}\n\n});\n\n\nparcelRegister(\"iljOc\", function(module, exports) {\n\n$parcel$export(module.exports, \"uid\", function () { return $d5a98dc5b372788d$export$e2a22331486dcca0; });\n$parcel$export(module.exports, \"isPowerOfTwo\", function () { return $d5a98dc5b372788d$export$b9e43d1765415474; });\n$parcel$export(module.exports, \"isObjectEmpty\", function () { return $d5a98dc5b372788d$export$23cfe696632d10f4; });\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\nconst $d5a98dc5b372788d$var$uidCounters = {};\nfunction $d5a98dc5b372788d$export$e2a22331486dcca0() {\n let id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"id\";\n $d5a98dc5b372788d$var$uidCounters[id] = $d5a98dc5b372788d$var$uidCounters[id] || 1;\n const count = $d5a98dc5b372788d$var$uidCounters[id]++;\n return \"\".concat(id, \"-\").concat(count);\n}\nfunction $d5a98dc5b372788d$export$b9e43d1765415474(n) {\n (0, $ihfnu.assert)(typeof n === \"number\", \"Input must be a number\");\n return n && (n & n - 1) === 0;\n}\nfunction $d5a98dc5b372788d$export$23cfe696632d10f4(obj) {\n let isEmpty = true;\n for(const key in obj){\n isEmpty = false;\n break;\n }\n return isEmpty;\n}\n\n});\n\nparcelRegister(\"z6hiF\", function(module, exports) {\n\n$parcel$export(module.exports, \"stubRemovedMethods\", function () { return $069823af93ffba1d$export$5c9302507afeb7af; });\nparcelRequire(\"73UuK\");\nvar $lvicK = parcelRequire(\"lvicK\");\nfunction $069823af93ffba1d$export$5c9302507afeb7af(instance, className, version, methodNames) {\n const upgradeMessage = \"See luma.gl \".concat(version, \" Upgrade Guide at https://luma.gl/docs/upgrade-guide\");\n const prototype = Object.getPrototypeOf(instance);\n methodNames.forEach((methodName)=>{\n if (prototype.methodName) return;\n prototype[methodName] = ()=>{\n (0, $lvicK.log).removed(\"Calling removed method \".concat(className, \".\").concat(methodName, \": \"), upgradeMessage)();\n throw new Error(methodName);\n };\n });\n}\n\n});\n\n\nparcelRegister(\"35tVQ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $23f90e979a9ad2ad$export$2e2bcd8739ae039; });\n\nvar $3qgcG = parcelRequire(\"3qgcG\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\n\nvar $JOkCq = parcelRequire(\"JOkCq\");\nconst $23f90e979a9ad2ad$export$e62d85e07017bac6 = {\n offset: 0,\n stride: 0,\n type: 5126,\n size: 1,\n divisor: 0,\n normalized: false,\n integer: false\n};\nconst $23f90e979a9ad2ad$var$PROP_CHECKS = {\n deprecatedProps: {\n instanced: \"divisor\",\n isInstanced: \"divisor\"\n }\n};\nclass $23f90e979a9ad2ad$export$2e2bcd8739ae039 {\n static getBytesPerElement(accessor) {\n const ArrayType = (0, $3qgcG.getTypedArrayFromGLType)(accessor.type || 5126);\n return ArrayType.BYTES_PER_ELEMENT;\n }\n static getBytesPerVertex(accessor) {\n (0, $ihfnu.assert)(accessor.size);\n const ArrayType = (0, $3qgcG.getTypedArrayFromGLType)(accessor.type || 5126);\n return ArrayType.BYTES_PER_ELEMENT * accessor.size;\n }\n static resolve() {\n for(var _len = arguments.length, accessors = new Array(_len), _key = 0; _key < _len; _key++)accessors[_key] = arguments[_key];\n return new $23f90e979a9ad2ad$export$2e2bcd8739ae039(...[\n $23f90e979a9ad2ad$export$e62d85e07017bac6,\n ...accessors\n ]);\n }\n toString() {\n return JSON.stringify(this);\n }\n get BYTES_PER_ELEMENT() {\n return $23f90e979a9ad2ad$export$2e2bcd8739ae039.getBytesPerElement(this);\n }\n get BYTES_PER_VERTEX() {\n return $23f90e979a9ad2ad$export$2e2bcd8739ae039.getBytesPerVertex(this);\n }\n _assign() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n props = (0, $JOkCq.checkProps)(\"Accessor\", props, $23f90e979a9ad2ad$var$PROP_CHECKS);\n if (props.type !== undefined) {\n this.type = props.type;\n if (props.type === 5124 || props.type === 5125) this.integer = true;\n }\n if (props.size !== undefined) this.size = props.size;\n if (props.offset !== undefined) this.offset = props.offset;\n if (props.stride !== undefined) this.stride = props.stride;\n if (props.normalized !== undefined) this.normalized = props.normalized;\n if (props.integer !== undefined) this.integer = props.integer;\n if (props.divisor !== undefined) this.divisor = props.divisor;\n if (props.buffer !== undefined) this.buffer = props.buffer;\n if (props.index !== undefined) {\n if (typeof props.index === \"boolean\") this.index = props.index ? 1 : 0;\n else this.index = props.index;\n }\n if (props.instanced !== undefined) this.divisor = props.instanced ? 1 : 0;\n if (props.isInstanced !== undefined) this.divisor = props.isInstanced ? 1 : 0;\n return this;\n }\n constructor(){\n for(var _len2 = arguments.length, accessors = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++)accessors[_key2] = arguments[_key2];\n accessors.forEach((accessor)=>this._assign(accessor));\n Object.freeze(this);\n }\n}\n\n});\nparcelRegister(\"3qgcG\", function(module, exports) {\n\n$parcel$export(module.exports, \"getGLTypeFromTypedArray\", function () { return $27e05e80a26d6fa2$export$127239b7f8a5750f; });\n$parcel$export(module.exports, \"getTypedArrayFromGLType\", function () { return $27e05e80a26d6fa2$export$9619a05b47814a85; });\n$parcel$export(module.exports, \"flipRows\", function () { return $27e05e80a26d6fa2$export$2478197380c2212f; });\n$parcel$export(module.exports, \"scalePixels\", function () { return $27e05e80a26d6fa2$export$b405024b493a473f; });\nconst $27e05e80a26d6fa2$var$ERR_TYPE_DEDUCTION = \"Failed to deduce GL constant from typed array\";\nfunction $27e05e80a26d6fa2$export$127239b7f8a5750f(arrayOrType) {\n const type = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;\n switch(type){\n case Float32Array:\n return 5126;\n case Uint16Array:\n return 5123;\n case Uint32Array:\n return 5125;\n case Uint8Array:\n return 5121;\n case Uint8ClampedArray:\n return 5121;\n case Int8Array:\n return 5120;\n case Int16Array:\n return 5122;\n case Int32Array:\n return 5124;\n default:\n throw new Error($27e05e80a26d6fa2$var$ERR_TYPE_DEDUCTION);\n }\n}\nfunction $27e05e80a26d6fa2$export$9619a05b47814a85(glType) {\n let { clamped: clamped = true } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n switch(glType){\n case 5126:\n return Float32Array;\n case 5123:\n case 33635:\n case 32819:\n case 32820:\n return Uint16Array;\n case 5125:\n return Uint32Array;\n case 5121:\n return clamped ? Uint8ClampedArray : Uint8Array;\n case 5120:\n return Int8Array;\n case 5122:\n return Int16Array;\n case 5124:\n return Int32Array;\n default:\n throw new Error(\"Failed to deduce typed array type from GL constant\");\n }\n}\nfunction $27e05e80a26d6fa2$export$2478197380c2212f(_ref) {\n let { data: data, width: width, height: height, bytesPerPixel: bytesPerPixel = 4, temp: temp } = _ref;\n const bytesPerRow = width * bytesPerPixel;\n temp = temp || new Uint8Array(bytesPerRow);\n for(let y = 0; y < height / 2; ++y){\n const topOffset = y * bytesPerRow;\n const bottomOffset = (height - y - 1) * bytesPerRow;\n temp.set(data.subarray(topOffset, topOffset + bytesPerRow));\n data.copyWithin(topOffset, bottomOffset, bottomOffset + bytesPerRow);\n data.set(temp, bottomOffset);\n }\n}\nfunction $27e05e80a26d6fa2$export$b405024b493a473f(_ref2) {\n let { data: data, width: width, height: height } = _ref2;\n const newWidth = Math.round(width / 2);\n const newHeight = Math.round(height / 2);\n const newData = new Uint8Array(newWidth * newHeight * 4);\n for(let y = 0; y < newHeight; y++){\n for(let x = 0; x < newWidth; x++)for(let c = 0; c < 4; c++)newData[(y * newWidth + x) * 4 + c] = data[(y * 2 * width + x * 2) * 4 + c];\n }\n return {\n data: newData,\n width: newWidth,\n height: newHeight\n };\n}\n\n});\n\nparcelRegister(\"JOkCq\", function(module, exports) {\n\n$parcel$export(module.exports, \"checkProps\", function () { return $089b3ee21949ce18$export$aac163a490409890; });\nparcelRequire(\"73UuK\");\nvar $lvicK = parcelRequire(\"lvicK\");\nfunction $089b3ee21949ce18$export$aac163a490409890(className, props, propChecks) {\n const { removedProps: removedProps = {}, deprecatedProps: deprecatedProps = {}, replacedProps: replacedProps = {} } = propChecks;\n for(const propName in removedProps)if (propName in props) {\n const replacementProp = removedProps[propName];\n const replacement = replacementProp ? \"\".concat(className, \".\").concat(removedProps[propName]) : \"N/A\";\n (0, $lvicK.log).removed(\"\".concat(className, \".\").concat(propName), replacement)();\n }\n for(const propName in deprecatedProps)if (propName in props) {\n const replacementProp = deprecatedProps[propName];\n (0, $lvicK.log).deprecated(\"\".concat(className, \".\").concat(propName), \"\".concat(className, \".\").concat(replacementProp))();\n }\n let newProps = null;\n for(const propName in replacedProps)if (propName in props) {\n const replacementProp = replacedProps[propName];\n (0, $lvicK.log).deprecated(\"\".concat(className, \".\").concat(propName), \"\".concat(className, \".\").concat(replacementProp))();\n newProps = newProps || Object.assign({}, props);\n newProps[replacementProp] = props[propName];\n delete newProps[propName];\n }\n return newProps || props;\n}\n\n});\n\n\n\nparcelRegister(\"68aPy\", function(module, exports) {\n\n$parcel$export(module.exports, \"FEATURES\", function () { return $476be425cead1097$export$d6a5c11f04f75862; });\n$parcel$export(module.exports, \"default\", function () { return $476be425cead1097$export$2e2bcd8739ae039; });\n\nvar $cJo7e = parcelRequire(\"cJo7e\");\n\nvar $7lUAH = parcelRequire(\"7lUAH\");\nconst $476be425cead1097$export$d6a5c11f04f75862 = {\n WEBGL2: \"WEBGL2\",\n VERTEX_ARRAY_OBJECT: \"VERTEX_ARRAY_OBJECT\",\n TIMER_QUERY: \"TIMER_QUERY\",\n INSTANCED_RENDERING: \"INSTANCED_RENDERING\",\n MULTIPLE_RENDER_TARGETS: \"MULTIPLE_RENDER_TARGETS\",\n ELEMENT_INDEX_UINT32: \"ELEMENT_INDEX_UINT32\",\n BLEND_EQUATION_MINMAX: \"BLEND_EQUATION_MINMAX\",\n FLOAT_BLEND: \"FLOAT_BLEND\",\n COLOR_ENCODING_SRGB: \"COLOR_ENCODING_SRGB\",\n TEXTURE_DEPTH: \"TEXTURE_DEPTH\",\n TEXTURE_FLOAT: \"TEXTURE_FLOAT\",\n TEXTURE_HALF_FLOAT: \"TEXTURE_HALF_FLOAT\",\n TEXTURE_FILTER_LINEAR_FLOAT: \"TEXTURE_FILTER_LINEAR_FLOAT\",\n TEXTURE_FILTER_LINEAR_HALF_FLOAT: \"TEXTURE_FILTER_LINEAR_HALF_FLOAT\",\n TEXTURE_FILTER_ANISOTROPIC: \"TEXTURE_FILTER_ANISOTROPIC\",\n COLOR_ATTACHMENT_RGBA32F: \"COLOR_ATTACHMENT_RGBA32F\",\n COLOR_ATTACHMENT_FLOAT: \"COLOR_ATTACHMENT_FLOAT\",\n COLOR_ATTACHMENT_HALF_FLOAT: \"COLOR_ATTACHMENT_HALF_FLOAT\",\n GLSL_FRAG_DATA: \"GLSL_FRAG_DATA\",\n GLSL_FRAG_DEPTH: \"GLSL_FRAG_DEPTH\",\n GLSL_DERIVATIVES: \"GLSL_DERIVATIVES\",\n GLSL_TEXTURE_LOD: \"GLSL_TEXTURE_LOD\"\n};\nfunction $476be425cead1097$var$checkFloat32ColorAttachment(gl) {\n const testTexture = new (0, $7lUAH.default)(gl, {\n format: 6408,\n type: 5126,\n dataFormat: 6408\n });\n const testFb = new (0, $cJo7e.default)(gl, {\n id: \"test-framebuffer\",\n check: false,\n attachments: {\n [36064]: testTexture\n }\n });\n const status = testFb.getStatus();\n testTexture.delete();\n testFb.delete();\n return status === 36053;\n}\nvar $476be425cead1097$export$2e2bcd8739ae039 = {\n [$476be425cead1097$export$d6a5c11f04f75862.WEBGL2]: [\n false,\n true\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.VERTEX_ARRAY_OBJECT]: [\n \"OES_vertex_array_object\",\n true\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.TIMER_QUERY]: [\n \"EXT_disjoint_timer_query\",\n \"EXT_disjoint_timer_query_webgl2\"\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.INSTANCED_RENDERING]: [\n \"ANGLE_instanced_arrays\",\n true\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.MULTIPLE_RENDER_TARGETS]: [\n \"WEBGL_draw_buffers\",\n true\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.ELEMENT_INDEX_UINT32]: [\n \"OES_element_index_uint\",\n true\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.BLEND_EQUATION_MINMAX]: [\n \"EXT_blend_minmax\",\n true\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.FLOAT_BLEND]: [\n \"EXT_float_blend\"\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.COLOR_ENCODING_SRGB]: [\n \"EXT_sRGB\",\n true\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.TEXTURE_DEPTH]: [\n \"WEBGL_depth_texture\",\n true\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.TEXTURE_FLOAT]: [\n \"OES_texture_float\",\n true\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.TEXTURE_HALF_FLOAT]: [\n \"OES_texture_half_float\",\n true\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.TEXTURE_FILTER_LINEAR_FLOAT]: [\n \"OES_texture_float_linear\"\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.TEXTURE_FILTER_LINEAR_HALF_FLOAT]: [\n \"OES_texture_half_float_linear\"\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.TEXTURE_FILTER_ANISOTROPIC]: [\n \"EXT_texture_filter_anisotropic\"\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.COLOR_ATTACHMENT_RGBA32F]: [\n $476be425cead1097$var$checkFloat32ColorAttachment,\n \"EXT_color_buffer_float\"\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.COLOR_ATTACHMENT_FLOAT]: [\n false,\n \"EXT_color_buffer_float\"\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.COLOR_ATTACHMENT_HALF_FLOAT]: [\n \"EXT_color_buffer_half_float\"\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.GLSL_FRAG_DATA]: [\n \"WEBGL_draw_buffers\",\n true\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.GLSL_FRAG_DEPTH]: [\n \"EXT_frag_depth\",\n true\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.GLSL_DERIVATIVES]: [\n \"OES_standard_derivatives\",\n true\n ],\n [$476be425cead1097$export$d6a5c11f04f75862.GLSL_TEXTURE_LOD]: [\n \"EXT_shader_texture_lod\",\n true\n ]\n};\n\n});\nparcelRegister(\"cJo7e\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $944c64e126d39361$export$2e2bcd8739ae039; });\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\nvar $lvicK = parcelRequire(\"lvicK\");\n\nvar $1OVow = parcelRequire(\"1OVow\");\n\nvar $7lUAH = parcelRequire(\"7lUAH\");\n\nvar $8BnKG = parcelRequire(\"8BnKG\");\n\nvar $eU1YY = parcelRequire(\"eU1YY\");\n\nvar $2YUMm = parcelRequire(\"2YUMm\");\n\nvar $tIWfJ = parcelRequire(\"tIWfJ\");\n\nvar $5tEaG = parcelRequire(\"5tEaG\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\nconst $944c64e126d39361$var$ERR_MULTIPLE_RENDERTARGETS = \"Multiple render targets not supported\";\nclass $944c64e126d39361$export$2e2bcd8739ae039 extends (0, $1OVow.default) {\n get [Symbol.toStringTag]() {\n return \"Framebuffer\";\n }\n static isSupported(gl) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const { colorBufferFloat: colorBufferFloat, colorBufferHalfFloat: colorBufferHalfFloat } = options;\n let supported = true;\n if (colorBufferFloat) supported = Boolean(gl.getExtension(\"EXT_color_buffer_float\") || gl.getExtension(\"WEBGL_color_buffer_float\") || gl.getExtension(\"OES_texture_float\"));\n if (colorBufferHalfFloat) supported = supported && Boolean(gl.getExtension(\"EXT_color_buffer_float\") || gl.getExtension(\"EXT_color_buffer_half_float\"));\n return supported;\n }\n static getDefaultFramebuffer(gl) {\n gl.luma = gl.luma || {};\n gl.luma.defaultFramebuffer = gl.luma.defaultFramebuffer || new $944c64e126d39361$export$2e2bcd8739ae039(gl, {\n id: \"default-framebuffer\",\n handle: null,\n attachments: {}\n });\n return gl.luma.defaultFramebuffer;\n }\n get MAX_COLOR_ATTACHMENTS() {\n const gl2 = (0, $8HKWo.assertWebGL2Context)(this.gl);\n return gl2.getParameter(gl2.MAX_COLOR_ATTACHMENTS);\n }\n get MAX_DRAW_BUFFERS() {\n const gl2 = (0, $8HKWo.assertWebGL2Context)(this.gl);\n return gl2.getParameter(gl2.MAX_DRAW_BUFFERS);\n }\n get color() {\n return this.attachments[36064] || null;\n }\n get texture() {\n return this.attachments[36064] || null;\n }\n get depth() {\n return this.attachments[36096] || this.attachments[33306] || null;\n }\n get stencil() {\n return this.attachments[36128] || this.attachments[33306] || null;\n }\n initialize(_ref) {\n let { width: width = 1, height: height = 1, attachments: attachments = null, color: color = true, depth: depth = true, stencil: stencil = false, check: check = true, readBuffer: readBuffer, drawBuffers: drawBuffers } = _ref;\n (0, $ihfnu.assert)(width >= 0 && height >= 0, \"Width and height need to be integers\");\n this.width = width;\n this.height = height;\n if (attachments) for(const attachment in attachments){\n const target = attachments[attachment];\n const object = Array.isArray(target) ? target[0] : target;\n object.resize({\n width: width,\n height: height\n });\n }\n else attachments = this._createDefaultAttachments(color, depth, stencil, width, height);\n this.update({\n clearAttachments: true,\n attachments: attachments,\n readBuffer: readBuffer,\n drawBuffers: drawBuffers\n });\n if (attachments && check) this.checkStatus();\n }\n delete() {\n for (const resource of this.ownResources)resource.delete();\n super.delete();\n return this;\n }\n update(_ref2) {\n let { attachments: attachments = {}, readBuffer: readBuffer, drawBuffers: drawBuffers, clearAttachments: clearAttachments = false, resizeAttachments: resizeAttachments = true } = _ref2;\n this.attach(attachments, {\n clearAttachments: clearAttachments,\n resizeAttachments: resizeAttachments\n });\n const { gl: gl } = this;\n const prevHandle = gl.bindFramebuffer(36160, this.handle);\n if (readBuffer) this._setReadBuffer(readBuffer);\n if (drawBuffers) this._setDrawBuffers(drawBuffers);\n gl.bindFramebuffer(36160, prevHandle || null);\n return this;\n }\n resize() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let { width: width, height: height } = options;\n if (this.handle === null) {\n (0, $ihfnu.assert)(width === undefined && height === undefined);\n this.width = this.gl.drawingBufferWidth;\n this.height = this.gl.drawingBufferHeight;\n return this;\n }\n if (width === undefined) width = this.gl.drawingBufferWidth;\n if (height === undefined) height = this.gl.drawingBufferHeight;\n if (width !== this.width && height !== this.height) (0, $lvicK.log).log(2, \"Resizing framebuffer \".concat(this.id, \" to \").concat(width, \"x\").concat(height))();\n for(const attachmentPoint in this.attachments)this.attachments[attachmentPoint].resize({\n width: width,\n height: height\n });\n this.width = width;\n this.height = height;\n return this;\n }\n attach(attachments) {\n let { clearAttachments: clearAttachments = false, resizeAttachments: resizeAttachments = true } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const newAttachments = {};\n if (clearAttachments) Object.keys(this.attachments).forEach((key)=>{\n newAttachments[key] = null;\n });\n Object.assign(newAttachments, attachments);\n const prevHandle = this.gl.bindFramebuffer(36160, this.handle);\n for(const key in newAttachments){\n (0, $ihfnu.assert)(key !== undefined, \"Misspelled framebuffer binding point?\");\n const attachment = Number(key);\n const descriptor = newAttachments[attachment];\n let object = descriptor;\n if (!object) this._unattach(attachment);\n else if (object instanceof (0, $8BnKG.default)) this._attachRenderbuffer({\n attachment: attachment,\n renderbuffer: object\n });\n else if (Array.isArray(descriptor)) {\n const [texture, layer = 0, level = 0] = descriptor;\n object = texture;\n this._attachTexture({\n attachment: attachment,\n texture: texture,\n layer: layer,\n level: level\n });\n } else this._attachTexture({\n attachment: attachment,\n texture: object,\n layer: 0,\n level: 0\n });\n if (resizeAttachments && object) object.resize({\n width: this.width,\n height: this.height\n });\n }\n this.gl.bindFramebuffer(36160, prevHandle || null);\n Object.assign(this.attachments, attachments);\n Object.keys(this.attachments).filter((key)=>!this.attachments[key]).forEach((key)=>{\n delete this.attachments[key];\n });\n }\n checkStatus() {\n const { gl: gl } = this;\n const status = this.getStatus();\n if (status !== 36053) throw new Error($944c64e126d39361$var$_getFrameBufferStatus(status));\n return this;\n }\n getStatus() {\n const { gl: gl } = this;\n const prevHandle = gl.bindFramebuffer(36160, this.handle);\n const status = gl.checkFramebufferStatus(36160);\n gl.bindFramebuffer(36160, prevHandle || null);\n return status;\n }\n clear() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { color: color, depth: depth, stencil: stencil, drawBuffers: drawBuffers = [] } = options;\n const prevHandle = this.gl.bindFramebuffer(36160, this.handle);\n if (color || depth || stencil) (0, $eU1YY.clear)(this.gl, {\n color: color,\n depth: depth,\n stencil: stencil\n });\n drawBuffers.forEach((value, drawBuffer)=>{\n (0, $eU1YY.clearBuffer)(this.gl, {\n drawBuffer: drawBuffer,\n value: value\n });\n });\n this.gl.bindFramebuffer(36160, prevHandle || null);\n return this;\n }\n readPixels() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n (0, $lvicK.log).error(\"Framebuffer.readPixels() is no logner supported, use readPixelsToArray(framebuffer)\")();\n return null;\n }\n readPixelsToBuffer() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n (0, $lvicK.log).error(\"Framebuffer.readPixelsToBuffer()is no logner supported, use readPixelsToBuffer(framebuffer)\")();\n return null;\n }\n copyToDataUrl() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n (0, $lvicK.log).error(\"Framebuffer.copyToDataUrl() is no logner supported, use copyToDataUrl(framebuffer)\")();\n return null;\n }\n copyToImage() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n (0, $lvicK.log).error(\"Framebuffer.copyToImage() is no logner supported, use copyToImage(framebuffer)\")();\n return null;\n }\n copyToTexture() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n (0, $lvicK.log).error(\"Framebuffer.copyToTexture({...}) is no logner supported, use copyToTexture(source, target, opts})\")();\n return null;\n }\n blit() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n (0, $lvicK.log).error(\"Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)\")();\n return null;\n }\n invalidate(_ref3) {\n let { attachments: attachments = [], x: x = 0, y: y = 0, width: width, height: height } = _ref3;\n const gl2 = (0, $8HKWo.assertWebGL2Context)(this.gl);\n const prevHandle = gl2.bindFramebuffer(36008, this.handle);\n const invalidateAll = x === 0 && y === 0 && width === undefined && height === undefined;\n if (invalidateAll) gl2.invalidateFramebuffer(36008, attachments);\n else gl2.invalidateFramebuffer(36008, attachments, x, y, width, height);\n gl2.bindFramebuffer(36008, prevHandle);\n return this;\n }\n getAttachmentParameter(attachment, pname, keys) {\n let value = this._getAttachmentParameterFallback(pname);\n if (value === null) {\n this.gl.bindFramebuffer(36160, this.handle);\n value = this.gl.getFramebufferAttachmentParameter(36160, attachment, pname);\n this.gl.bindFramebuffer(36160, null);\n }\n if (keys && value > 1000) value = (0, $5tEaG.getKey)(this.gl, value);\n return value;\n }\n getAttachmentParameters() {\n let attachment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 36064;\n let keys = arguments.length > 1 ? arguments[1] : undefined;\n let parameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.constructor.ATTACHMENT_PARAMETERS || [];\n const values = {};\n for (const pname of parameters){\n const key = keys ? (0, $5tEaG.getKey)(this.gl, pname) : pname;\n values[key] = this.getAttachmentParameter(attachment, pname, keys);\n }\n return values;\n }\n getParameters() {\n let keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n const attachments = Object.keys(this.attachments);\n const parameters = {};\n for (const attachmentName of attachments){\n const attachment = Number(attachmentName);\n const key = keys ? (0, $5tEaG.getKey)(this.gl, attachment) : attachment;\n parameters[key] = this.getAttachmentParameters(attachment, keys);\n }\n return parameters;\n }\n show() {\n if (typeof window !== \"undefined\") window.open((0, $2YUMm.copyToDataUrl)(this), \"luma-debug-texture\");\n return this;\n }\n log() {\n let logLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n if (logLevel > (0, $lvicK.log).level || typeof window === \"undefined\") return this;\n message = message || \"Framebuffer \".concat(this.id);\n const image = (0, $2YUMm.copyToDataUrl)(this, {\n targetMaxHeight: 100\n });\n (0, $lvicK.log).image({\n logLevel: logLevel,\n message: message,\n image: image\n }, message)();\n return this;\n }\n bind() {\n let { target: target = 36160 } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.gl.bindFramebuffer(target, this.handle);\n return this;\n }\n unbind() {\n let { target: target = 36160 } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.gl.bindFramebuffer(target, null);\n return this;\n }\n _createDefaultAttachments(color, depth, stencil, width, height) {\n let defaultAttachments = null;\n if (color) {\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[36064] = new (0, $7lUAH.default)(this.gl, {\n id: \"\".concat(this.id, \"-color0\"),\n pixels: null,\n format: 6408,\n type: 5121,\n width: width,\n height: height,\n mipmaps: false,\n parameters: {\n [10241]: 9729,\n [10240]: 9729,\n [10242]: 33071,\n [10243]: 33071\n }\n });\n this.ownResources.push(defaultAttachments[36064]);\n }\n if (depth && stencil) {\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[33306] = new (0, $8BnKG.default)(this.gl, {\n id: \"\".concat(this.id, \"-depth-stencil\"),\n format: 35056,\n width: width,\n height: 111\n });\n this.ownResources.push(defaultAttachments[33306]);\n } else if (depth) {\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[36096] = new (0, $8BnKG.default)(this.gl, {\n id: \"\".concat(this.id, \"-depth\"),\n format: 33189,\n width: width,\n height: height\n });\n this.ownResources.push(defaultAttachments[36096]);\n } else if (stencil) (0, $ihfnu.assert)(false);\n return defaultAttachments;\n }\n _unattach(attachment) {\n const oldAttachment = this.attachments[attachment];\n if (!oldAttachment) return;\n if (oldAttachment instanceof (0, $8BnKG.default)) this.gl.framebufferRenderbuffer(36160, attachment, 36161, null);\n else this.gl.framebufferTexture2D(36160, attachment, 3553, null, 0);\n delete this.attachments[attachment];\n }\n _attachRenderbuffer(_ref4) {\n let { attachment: attachment = 36064, renderbuffer: renderbuffer } = _ref4;\n const { gl: gl } = this;\n gl.framebufferRenderbuffer(36160, attachment, 36161, renderbuffer.handle);\n this.attachments[attachment] = renderbuffer;\n }\n _attachTexture(_ref5) {\n let { attachment: attachment = 36064, texture: texture, layer: layer, level: level } = _ref5;\n const { gl: gl } = this;\n gl.bindTexture(texture.target, texture.handle);\n switch(texture.target){\n case 35866:\n case 32879:\n const gl2 = (0, $8HKWo.assertWebGL2Context)(gl);\n gl2.framebufferTextureLayer(36160, attachment, texture.target, level, layer);\n break;\n case 34067:\n const face = $944c64e126d39361$var$mapIndexToCubeMapFace(layer);\n gl.framebufferTexture2D(36160, attachment, face, texture.handle, level);\n break;\n case 3553:\n gl.framebufferTexture2D(36160, attachment, 3553, texture.handle, level);\n break;\n default:\n (0, $ihfnu.assert)(false, \"Illegal texture type\");\n }\n gl.bindTexture(texture.target, null);\n this.attachments[attachment] = texture;\n }\n _setReadBuffer(readBuffer) {\n const gl2 = (0, $8HKWo.getWebGL2Context)(this.gl);\n if (gl2) gl2.readBuffer(readBuffer);\n else (0, $ihfnu.assert)(readBuffer === 36064 || readBuffer === 1029, $944c64e126d39361$var$ERR_MULTIPLE_RENDERTARGETS);\n this.readBuffer = readBuffer;\n }\n _setDrawBuffers(drawBuffers) {\n const { gl: gl } = this;\n const gl2 = (0, $8HKWo.assertWebGL2Context)(gl);\n if (gl2) gl2.drawBuffers(drawBuffers);\n else {\n const ext = gl.getExtension(\"WEBGL_draw_buffers\");\n if (ext) ext.drawBuffersWEBGL(drawBuffers);\n else (0, $ihfnu.assert)(drawBuffers.length === 1 && (drawBuffers[0] === 36064 || drawBuffers[0] === 1029), $944c64e126d39361$var$ERR_MULTIPLE_RENDERTARGETS);\n }\n this.drawBuffers = drawBuffers;\n }\n _getAttachmentParameterFallback(pname) {\n const caps = (0, $tIWfJ.getFeatures)(this.gl);\n switch(pname){\n case 36052:\n return !caps.WEBGL2 ? 0 : null;\n case 33298:\n case 33299:\n case 33300:\n case 33301:\n case 33302:\n case 33303:\n return !caps.WEBGL2 ? 8 : null;\n case 33297:\n return !caps.WEBGL2 ? 5125 : null;\n case 33296:\n return !caps.WEBGL2 && !caps.EXT_sRGB ? 9729 : null;\n default:\n return null;\n }\n }\n _createHandle() {\n return this.gl.createFramebuffer();\n }\n _deleteHandle() {\n this.gl.deleteFramebuffer(this.handle);\n }\n _bindHandle(handle) {\n return this.gl.bindFramebuffer(36160, handle);\n }\n constructor(gl){\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(gl, opts);\n this.width = null;\n this.height = null;\n this.attachments = {};\n this.readBuffer = 36064;\n this.drawBuffers = [\n 36064\n ];\n this.ownResources = [];\n this.initialize(opts);\n Object.seal(this);\n }\n}\nfunction $944c64e126d39361$var$mapIndexToCubeMapFace(layer) {\n return layer < 34069 ? layer + 34069 : layer;\n}\nfunction $944c64e126d39361$var$_getFrameBufferStatus(status) {\n const STATUS = $944c64e126d39361$export$2e2bcd8739ae039.STATUS || {};\n return STATUS[status] || \"Framebuffer error \".concat(status);\n}\nconst $944c64e126d39361$export$9bc39e54f49ae5f4 = [\n 36049,\n 36048,\n 33296,\n 33298,\n 33299,\n 33300,\n 33301,\n 33302,\n 33303\n];\n$944c64e126d39361$export$2e2bcd8739ae039.ATTACHMENT_PARAMETERS = $944c64e126d39361$export$9bc39e54f49ae5f4;\n\n});\nparcelRegister(\"7lUAH\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $55a6645961bd6b5f$export$2e2bcd8739ae039; });\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\n\nvar $3D9dM = parcelRequire(\"3D9dM\");\n\nvar $eBf4K = parcelRequire(\"eBf4K\");\nclass $55a6645961bd6b5f$export$2e2bcd8739ae039 extends (0, $3D9dM.default) {\n get [Symbol.toStringTag]() {\n return \"Texture2D\";\n }\n static isSupported(gl, opts) {\n return (0, $3D9dM.default).isSupported(gl, opts);\n }\n constructor(gl){\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, $8HKWo.assertWebGLContext)(gl);\n if (props instanceof Promise || typeof props === \"string\") props = {\n data: props\n };\n if (typeof props.data === \"string\") props = Object.assign({}, props, {\n data: (0, $eBf4K.loadImage)(props.data)\n });\n super(gl, Object.assign({}, props, {\n target: 3553\n }));\n this.initialize(props);\n Object.seal(this);\n }\n}\n\n});\nparcelRegister(\"3D9dM\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $2a4c2ac8f73a57aa$export$2e2bcd8739ae039; });\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\nvar $lvicK = parcelRequire(\"lvicK\");\nvar $2SJyH = parcelRequire(\"2SJyH\");\n\nvar $1OVow = parcelRequire(\"1OVow\");\n\nvar $7jraD = parcelRequire(\"7jraD\");\n\nvar $du43m = parcelRequire(\"du43m\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\n\nvar $iljOc = parcelRequire(\"iljOc\");\nconst $2a4c2ac8f73a57aa$var$NPOT_MIN_FILTERS = [\n 9729,\n 9728\n];\nconst $2a4c2ac8f73a57aa$var$WebGLBuffer = globalThis.WebGLBuffer || function WebGLBuffer() {};\nclass $2a4c2ac8f73a57aa$export$2e2bcd8739ae039 extends (0, $1OVow.default) {\n get [Symbol.toStringTag]() {\n return \"Texture\";\n }\n static isSupported(gl) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const { format: format, linearFiltering: linearFiltering } = opts;\n let supported = true;\n if (format) {\n supported = supported && (0, $du43m.isFormatSupported)(gl, format);\n supported = supported && (!linearFiltering || (0, $du43m.isLinearFilteringSupported)(gl, format));\n }\n return supported;\n }\n toString() {\n return \"Texture(\".concat(this.id, \",\").concat(this.width, \"x\").concat(this.height, \")\");\n }\n initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let data = props.data;\n if (data instanceof Promise) {\n data.then((resolvedImageData)=>this.initialize(Object.assign({}, props, {\n pixels: resolvedImageData,\n data: resolvedImageData\n })));\n return this;\n }\n const isVideo = typeof HTMLVideoElement !== \"undefined\" && data instanceof HTMLVideoElement;\n if (isVideo && data.readyState < HTMLVideoElement.HAVE_METADATA) {\n this._video = null;\n data.addEventListener(\"loadeddata\", ()=>this.initialize(props));\n return this;\n }\n const { pixels: pixels = null, format: format = 6408, border: border = 0, recreate: recreate = false, parameters: parameters = {}, pixelStore: pixelStore = {}, textureUnit: textureUnit } = props;\n if (!data) data = pixels;\n let { width: width, height: height, dataFormat: dataFormat, type: type, compressed: compressed = false, mipmaps: mipmaps = true } = props;\n const { depth: depth = 0 } = props;\n ({ width: width, height: height, compressed: compressed, dataFormat: dataFormat, type: type } = this._deduceParameters({\n format: format,\n type: type,\n dataFormat: dataFormat,\n compressed: compressed,\n data: data,\n width: width,\n height: height\n }));\n this.width = width;\n this.height = height;\n this.depth = depth;\n this.format = format;\n this.type = type;\n this.dataFormat = dataFormat;\n this.border = border;\n this.textureUnit = textureUnit;\n if (Number.isFinite(this.textureUnit)) {\n this.gl.activeTexture(33984 + this.textureUnit);\n this.gl.bindTexture(this.target, this.handle);\n }\n if (mipmaps && this._isNPOT()) {\n (0, $lvicK.log).warn(\"texture: \".concat(this, \" is Non-Power-Of-Two, disabling mipmaping\"))();\n mipmaps = false;\n this._updateForNPOT(parameters);\n }\n this.mipmaps = mipmaps;\n this.setImageData({\n data: data,\n width: width,\n height: height,\n depth: depth,\n format: format,\n type: type,\n dataFormat: dataFormat,\n border: border,\n mipmaps: mipmaps,\n parameters: pixelStore,\n compressed: compressed\n });\n if (mipmaps) this.generateMipmap();\n this.setParameters(parameters);\n if (recreate) this.data = data;\n if (isVideo) this._video = {\n video: data,\n parameters: parameters,\n lastTime: data.readyState >= HTMLVideoElement.HAVE_CURRENT_DATA ? data.currentTime : -1\n };\n return this;\n }\n update() {\n if (this._video) {\n const { video: video, parameters: parameters, lastTime: lastTime } = this._video;\n if (lastTime === video.currentTime || video.readyState < HTMLVideoElement.HAVE_CURRENT_DATA) return;\n this.setSubImageData({\n data: video,\n parameters: parameters\n });\n if (this.mipmaps) this.generateMipmap();\n this._video.lastTime = video.currentTime;\n }\n }\n resize(_ref) {\n let { height: height, width: width, mipmaps: mipmaps = false } = _ref;\n if (width !== this.width || height !== this.height) return this.initialize({\n width: width,\n height: height,\n format: this.format,\n type: this.type,\n dataFormat: this.dataFormat,\n border: this.border,\n mipmaps: mipmaps\n });\n return this;\n }\n generateMipmap() {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (this._isNPOT()) {\n (0, $lvicK.log).warn(\"texture: \".concat(this, \" is Non-Power-Of-Two, disabling mipmaping\"))();\n return this;\n }\n this.mipmaps = true;\n this.gl.bindTexture(this.target, this.handle);\n (0, $2SJyH.withParameters)(this.gl, params, ()=>{\n this.gl.generateMipmap(this.target);\n });\n this.gl.bindTexture(this.target, null);\n return this;\n }\n setImageData(options) {\n this._trackDeallocatedMemory(\"Texture\");\n const { target: target = this.target, pixels: pixels = null, level: level = 0, format: format = this.format, border: border = this.border, offset: offset = 0, parameters: parameters = {} } = options;\n let { data: data = null, type: type = this.type, width: width = this.width, height: height = this.height, dataFormat: dataFormat = this.dataFormat, compressed: compressed = false } = options;\n if (!data) data = pixels;\n ({ type: type, dataFormat: dataFormat, compressed: compressed, width: width, height: height } = this._deduceParameters({\n format: format,\n type: type,\n dataFormat: dataFormat,\n compressed: compressed,\n data: data,\n width: width,\n height: height\n }));\n const { gl: gl } = this;\n gl.bindTexture(this.target, this.handle);\n let dataType = null;\n ({ data: data, dataType: dataType } = this._getDataType({\n data: data,\n compressed: compressed\n }));\n let gl2;\n let compressedTextureSize = 0;\n (0, $2SJyH.withParameters)(this.gl, parameters, ()=>{\n switch(dataType){\n case \"null\":\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n break;\n case \"typed-array\":\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data, offset);\n break;\n case \"buffer\":\n gl2 = (0, $8HKWo.assertWebGL2Context)(gl);\n gl2.bindBuffer(35052, data.handle || data);\n gl2.texImage2D(target, level, format, width, height, border, dataFormat, type, offset);\n gl2.bindBuffer(35052, null);\n break;\n case \"browser-object\":\n if ((0, $8HKWo.isWebGL2)(gl)) gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n else gl.texImage2D(target, level, format, dataFormat, type, data);\n break;\n case \"compressed\":\n for (const [levelIndex, levelData] of data.entries()){\n gl.compressedTexImage2D(target, levelIndex, levelData.format, levelData.width, levelData.height, border, levelData.data);\n compressedTextureSize += levelData.levelSize;\n }\n break;\n default:\n (0, $ihfnu.assert)(false, \"Unknown image data type\");\n }\n });\n if (dataType === \"compressed\") this._trackAllocatedMemory(compressedTextureSize, \"Texture\");\n else if (data && data.byteLength) this._trackAllocatedMemory(data.byteLength, \"Texture\");\n else {\n const channels = (0, $du43m.DATA_FORMAT_CHANNELS)[this.dataFormat] || 4;\n const channelSize = (0, $du43m.TYPE_SIZES)[this.type] || 1;\n this._trackAllocatedMemory(this.width * this.height * channels * channelSize, \"Texture\");\n }\n this.loaded = true;\n return this;\n }\n setSubImageData(_ref2) {\n let { target: target = this.target, pixels: pixels = null, data: data = null, x: x = 0, y: y = 0, width: width = this.width, height: height = this.height, level: level = 0, format: format = this.format, type: type = this.type, dataFormat: dataFormat = this.dataFormat, compressed: compressed = false, offset: offset = 0, border: border = this.border, parameters: parameters = {} } = _ref2;\n ({ type: type, dataFormat: dataFormat, compressed: compressed, width: width, height: height } = this._deduceParameters({\n format: format,\n type: type,\n dataFormat: dataFormat,\n compressed: compressed,\n data: data,\n width: width,\n height: height\n }));\n (0, $ihfnu.assert)(this.depth === 0, \"texSubImage not supported for 3D textures\");\n if (!data) data = pixels;\n if (data && data.data) {\n const ndarray = data;\n data = ndarray.data;\n width = ndarray.shape[0];\n height = ndarray.shape[1];\n }\n if (data instanceof (0, $7jraD.default)) data = data.handle;\n this.gl.bindTexture(this.target, this.handle);\n (0, $2SJyH.withParameters)(this.gl, parameters, ()=>{\n if (compressed) this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);\n else if (data === null) this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);\n else if (ArrayBuffer.isView(data)) this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);\n else if (data instanceof $2a4c2ac8f73a57aa$var$WebGLBuffer) {\n const gl2 = (0, $8HKWo.assertWebGL2Context)(this.gl);\n gl2.bindBuffer(35052, data);\n gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);\n gl2.bindBuffer(35052, null);\n } else if ((0, $8HKWo.isWebGL2)(this.gl)) {\n const gl2 = (0, $8HKWo.assertWebGL2Context)(this.gl);\n gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);\n } else this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);\n });\n this.gl.bindTexture(this.target, null);\n }\n copyFramebuffer() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n (0, $lvicK.log).error(\"Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})\")();\n return null;\n }\n getActiveUnit() {\n return this.gl.getParameter(34016) - 33984;\n }\n bind() {\n let textureUnit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.textureUnit;\n const { gl: gl } = this;\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(33984 + textureUnit);\n }\n gl.bindTexture(this.target, this.handle);\n return textureUnit;\n }\n unbind() {\n let textureUnit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.textureUnit;\n const { gl: gl } = this;\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(33984 + textureUnit);\n }\n gl.bindTexture(this.target, null);\n return textureUnit;\n }\n _getDataType(_ref3) {\n let { data: data, compressed: compressed = false } = _ref3;\n if (compressed) return {\n data: data,\n dataType: \"compressed\"\n };\n if (data === null) return {\n data: data,\n dataType: \"null\"\n };\n if (ArrayBuffer.isView(data)) return {\n data: data,\n dataType: \"typed-array\"\n };\n if (data instanceof (0, $7jraD.default)) return {\n data: data.handle,\n dataType: \"buffer\"\n };\n if (data instanceof $2a4c2ac8f73a57aa$var$WebGLBuffer) return {\n data: data,\n dataType: \"buffer\"\n };\n return {\n data: data,\n dataType: \"browser-object\"\n };\n }\n _deduceParameters(opts) {\n const { format: format, data: data } = opts;\n let { width: width, height: height, dataFormat: dataFormat, type: type, compressed: compressed } = opts;\n const textureFormat = (0, $du43m.TEXTURE_FORMATS)[format];\n dataFormat = dataFormat || textureFormat && textureFormat.dataFormat;\n type = type || textureFormat && textureFormat.types[0];\n compressed = compressed || textureFormat && textureFormat.compressed;\n ({ width: width, height: height } = this._deduceImageSize(data, width, height));\n return {\n dataFormat: dataFormat,\n type: type,\n compressed: compressed,\n width: width,\n height: height,\n format: format,\n data: data\n };\n }\n _deduceImageSize(data, width, height) {\n let size;\n if (typeof ImageData !== \"undefined\" && data instanceof ImageData) size = {\n width: data.width,\n height: data.height\n };\n else if (typeof HTMLImageElement !== \"undefined\" && data instanceof HTMLImageElement) size = {\n width: data.naturalWidth,\n height: data.naturalHeight\n };\n else if (typeof HTMLCanvasElement !== \"undefined\" && data instanceof HTMLCanvasElement) size = {\n width: data.width,\n height: data.height\n };\n else if (typeof ImageBitmap !== \"undefined\" && data instanceof ImageBitmap) size = {\n width: data.width,\n height: data.height\n };\n else if (typeof HTMLVideoElement !== \"undefined\" && data instanceof HTMLVideoElement) size = {\n width: data.videoWidth,\n height: data.videoHeight\n };\n else if (!data) size = {\n width: width >= 0 ? width : 1,\n height: height >= 0 ? height : 1\n };\n else size = {\n width: width,\n height: height\n };\n (0, $ihfnu.assert)(size, \"Could not deduced texture size\");\n (0, $ihfnu.assert)(width === undefined || size.width === width, \"Deduced texture width does not match supplied width\");\n (0, $ihfnu.assert)(height === undefined || size.height === height, \"Deduced texture height does not match supplied height\");\n return size;\n }\n _createHandle() {\n return this.gl.createTexture();\n }\n _deleteHandle() {\n this.gl.deleteTexture(this.handle);\n this._trackDeallocatedMemory(\"Texture\");\n }\n _getParameter(pname) {\n switch(pname){\n case 4096:\n return this.width;\n case 4097:\n return this.height;\n default:\n this.gl.bindTexture(this.target, this.handle);\n const value = this.gl.getTexParameter(this.target, pname);\n this.gl.bindTexture(this.target, null);\n return value;\n }\n }\n _setParameter(pname, param) {\n this.gl.bindTexture(this.target, this.handle);\n param = this._getNPOTParam(pname, param);\n switch(pname){\n case 33082:\n case 33083:\n this.gl.texParameterf(this.handle, pname, param);\n break;\n case 4096:\n case 4097:\n (0, $ihfnu.assert)(false);\n break;\n default:\n this.gl.texParameteri(this.target, pname, param);\n break;\n }\n this.gl.bindTexture(this.target, null);\n return this;\n }\n _isNPOT() {\n if ((0, $8HKWo.isWebGL2)(this.gl)) return false;\n if (!this.width || !this.height) return false;\n return !(0, $iljOc.isPowerOfTwo)(this.width) || !(0, $iljOc.isPowerOfTwo)(this.height);\n }\n _updateForNPOT(parameters) {\n if (parameters[this.gl.TEXTURE_MIN_FILTER] === undefined) parameters[this.gl.TEXTURE_MIN_FILTER] = this.gl.LINEAR;\n if (parameters[this.gl.TEXTURE_WRAP_S] === undefined) parameters[this.gl.TEXTURE_WRAP_S] = this.gl.CLAMP_TO_EDGE;\n if (parameters[this.gl.TEXTURE_WRAP_T] === undefined) parameters[this.gl.TEXTURE_WRAP_T] = this.gl.CLAMP_TO_EDGE;\n }\n _getNPOTParam(pname, param) {\n if (this._isNPOT()) switch(pname){\n case 10241:\n if ($2a4c2ac8f73a57aa$var$NPOT_MIN_FILTERS.indexOf(param) === -1) param = 9729;\n break;\n case 10242:\n case 10243:\n if (param !== 33071) param = 33071;\n break;\n default:\n break;\n }\n return param;\n }\n constructor(gl, props){\n const { id: id = (0, $iljOc.uid)(\"texture\"), handle: handle, target: target } = props;\n super(gl, {\n id: id,\n handle: handle\n });\n this.target = target;\n this.textureUnit = undefined;\n this.loaded = false;\n this.width = undefined;\n this.height = undefined;\n this.depth = undefined;\n this.format = undefined;\n this.type = undefined;\n this.dataFormat = undefined;\n this.border = undefined;\n this.textureUnit = undefined;\n this.mipmaps = undefined;\n }\n}\n\n});\nparcelRegister(\"du43m\", function(module, exports) {\n\n$parcel$export(module.exports, \"TEXTURE_FORMATS\", function () { return $9d11389670c040da$export$ff6ccd50a74e6c72; });\n$parcel$export(module.exports, \"DATA_FORMAT_CHANNELS\", function () { return $9d11389670c040da$export$1b400e62d2e54950; });\n$parcel$export(module.exports, \"TYPE_SIZES\", function () { return $9d11389670c040da$export$9acf869cba30dad8; });\n$parcel$export(module.exports, \"isFormatSupported\", function () { return $9d11389670c040da$export$a3bf67278d0a9114; });\n$parcel$export(module.exports, \"isLinearFilteringSupported\", function () { return $9d11389670c040da$export$769628e6c078fe4c; });\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\nconst $9d11389670c040da$export$ff6ccd50a74e6c72 = {\n [6407]: {\n dataFormat: 6407,\n types: [\n 5121,\n 33635\n ]\n },\n [6408]: {\n dataFormat: 6408,\n types: [\n 5121,\n 32819,\n 32820\n ]\n },\n [6406]: {\n dataFormat: 6406,\n types: [\n 5121\n ]\n },\n [6409]: {\n dataFormat: 6409,\n types: [\n 5121\n ]\n },\n [6410]: {\n dataFormat: 6410,\n types: [\n 5121\n ]\n },\n [33326]: {\n dataFormat: 6403,\n types: [\n 5126\n ],\n gl2: true\n },\n [33328]: {\n dataFormat: 33319,\n types: [\n 5126\n ],\n gl2: true\n },\n [34837]: {\n dataFormat: 6407,\n types: [\n 5126\n ],\n gl2: true\n },\n [34836]: {\n dataFormat: 6408,\n types: [\n 5126\n ],\n gl2: true\n }\n};\nconst $9d11389670c040da$export$1b400e62d2e54950 = {\n [6403]: 1,\n [36244]: 1,\n [33319]: 2,\n [33320]: 2,\n [6407]: 3,\n [36248]: 3,\n [6408]: 4,\n [36249]: 4,\n [6402]: 1,\n [34041]: 1,\n [6406]: 1,\n [6409]: 1,\n [6410]: 2\n};\nconst $9d11389670c040da$export$9acf869cba30dad8 = {\n [5126]: 4,\n [5125]: 4,\n [5124]: 4,\n [5123]: 2,\n [5122]: 2,\n [5131]: 2,\n [5120]: 1,\n [5121]: 1\n};\nfunction $9d11389670c040da$export$a3bf67278d0a9114(gl, format) {\n const info = $9d11389670c040da$export$ff6ccd50a74e6c72[format];\n if (!info) return false;\n if (info.gl1 === undefined && info.gl2 === undefined) return true;\n const value = (0, $8HKWo.isWebGL2)(gl) ? info.gl2 || info.gl1 : info.gl1;\n return typeof value === \"string\" ? gl.getExtension(value) : value;\n}\nfunction $9d11389670c040da$export$769628e6c078fe4c(gl, format) {\n const info = $9d11389670c040da$export$ff6ccd50a74e6c72[format];\n switch(info && info.types[0]){\n case 5126:\n return gl.getExtension(\"OES_texture_float_linear\");\n case 5131:\n return gl.getExtension(\"OES_texture_half_float_linear\");\n default:\n return true;\n }\n}\n\n});\n\n\nparcelRegister(\"eBf4K\", function(module, exports) {\n\n$parcel$export(module.exports, \"loadImage\", function () { return $aa10370fb4b27f8d$export$fe58198efe02b173; });\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\nlet $aa10370fb4b27f8d$var$pathPrefix = \"\";\nfunction $aa10370fb4b27f8d$export$fa7cbeea6a0f8cd3(prefix) {\n $aa10370fb4b27f8d$var$pathPrefix = prefix;\n}\nfunction $aa10370fb4b27f8d$export$3ae43cdaeb063d33(url) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, $ihfnu.assert)(typeof url === \"string\");\n url = $aa10370fb4b27f8d$var$pathPrefix + url;\n const dataType = options.dataType || \"text\";\n return fetch(url, options).then((res)=>res[dataType]());\n}\nfunction $aa10370fb4b27f8d$export$fe58198efe02b173(url, opts) {\n (0, $ihfnu.assert)(typeof url === \"string\");\n url = $aa10370fb4b27f8d$var$pathPrefix + url;\n return new Promise((resolve, reject)=>{\n try {\n const image = new Image();\n image.onload = ()=>resolve(image);\n image.onerror = ()=>reject(new Error(\"Could not load image \".concat(url, \".\")));\n image.crossOrigin = opts && opts.crossOrigin || \"anonymous\";\n image.src = url;\n } catch (error) {\n reject(error);\n }\n });\n}\n\n});\n\n\nparcelRegister(\"8BnKG\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $643434194291d291$export$2e2bcd8739ae039; });\n\nvar $1OVow = parcelRequire(\"1OVow\");\n\nvar $6zfWK = parcelRequire(\"6zfWK\");\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\nfunction $643434194291d291$var$isFormatSupported(gl, format, formats) {\n const info = formats[format];\n if (!info) return false;\n const value = (0, $8HKWo.isWebGL2)(gl) ? info.gl2 || info.gl1 : info.gl1;\n if (typeof value === \"string\") return gl.getExtension(value);\n return value;\n}\nclass $643434194291d291$export$2e2bcd8739ae039 extends (0, $1OVow.default) {\n get [Symbol.toStringTag]() {\n return \"Renderbuffer\";\n }\n static isSupported(gl) {\n let { format: format } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n format: null\n };\n return !format || $643434194291d291$var$isFormatSupported(gl, format, (0, $6zfWK.default));\n }\n static getSamplesForFormat(gl, _ref) {\n let { format: format } = _ref;\n return gl.getInternalformatParameter(36161, format, 32937);\n }\n initialize(_ref2) {\n let { format: format, width: width = 1, height: height = 1, samples: samples = 0 } = _ref2;\n (0, $ihfnu.assert)(format, \"Needs format\");\n this._trackDeallocatedMemory();\n this.gl.bindRenderbuffer(36161, this.handle);\n if (samples !== 0 && (0, $8HKWo.isWebGL2)(this.gl)) this.gl.renderbufferStorageMultisample(36161, samples, format, width, height);\n else this.gl.renderbufferStorage(36161, format, width, height);\n this.format = format;\n this.width = width;\n this.height = height;\n this.samples = samples;\n this._trackAllocatedMemory(this.width * this.height * (this.samples || 1) * (0, $6zfWK.default)[this.format].bpp);\n return this;\n }\n resize(_ref3) {\n let { width: width, height: height } = _ref3;\n if (width !== this.width || height !== this.height) return this.initialize({\n width: width,\n height: height,\n format: this.format,\n samples: this.samples\n });\n return this;\n }\n _createHandle() {\n return this.gl.createRenderbuffer();\n }\n _deleteHandle() {\n this.gl.deleteRenderbuffer(this.handle);\n this._trackDeallocatedMemory();\n }\n _bindHandle(handle) {\n this.gl.bindRenderbuffer(36161, handle);\n }\n _syncHandle(handle) {\n this.format = this.getParameter(36164);\n this.width = this.getParameter(36162);\n this.height = this.getParameter(36163);\n this.samples = this.getParameter(36011);\n }\n _getParameter(pname) {\n this.gl.bindRenderbuffer(36161, this.handle);\n const value = this.gl.getRenderbufferParameter(36161, pname);\n return value;\n }\n constructor(gl){\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(gl, opts);\n this.initialize(opts);\n Object.seal(this);\n }\n}\n\n});\nparcelRegister(\"6zfWK\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $4c82619a65c6c17b$export$2e2bcd8739ae039; });\nconst $4c82619a65c6c17b$var$EXT_FLOAT_WEBGL2 = \"EXT_color_buffer_float\";\nvar $4c82619a65c6c17b$export$2e2bcd8739ae039 = {\n [33189]: {\n bpp: 2\n },\n [33190]: {\n gl2: true,\n bpp: 3\n },\n [36012]: {\n gl2: true,\n bpp: 4\n },\n [36168]: {\n bpp: 1\n },\n [34041]: {\n bpp: 4\n },\n [35056]: {\n gl2: true,\n bpp: 4\n },\n [36013]: {\n gl2: true,\n bpp: 5\n },\n [32854]: {\n bpp: 2\n },\n [36194]: {\n bpp: 2\n },\n [32855]: {\n bpp: 2\n },\n [33321]: {\n gl2: true,\n bpp: 1\n },\n [33330]: {\n gl2: true,\n bpp: 1\n },\n [33329]: {\n gl2: true,\n bpp: 1\n },\n [33332]: {\n gl2: true,\n bpp: 2\n },\n [33331]: {\n gl2: true,\n bpp: 2\n },\n [33334]: {\n gl2: true,\n bpp: 4\n },\n [33333]: {\n gl2: true,\n bpp: 4\n },\n [33323]: {\n gl2: true,\n bpp: 2\n },\n [33336]: {\n gl2: true,\n bpp: 2\n },\n [33335]: {\n gl2: true,\n bpp: 2\n },\n [33338]: {\n gl2: true,\n bpp: 4\n },\n [33337]: {\n gl2: true,\n bpp: 4\n },\n [33340]: {\n gl2: true,\n bpp: 8\n },\n [33339]: {\n gl2: true,\n bpp: 8\n },\n [32849]: {\n gl2: true,\n bpp: 3\n },\n [32856]: {\n gl2: true,\n bpp: 4\n },\n [32857]: {\n gl2: true,\n bpp: 4\n },\n [36220]: {\n gl2: true,\n bpp: 4\n },\n [36238]: {\n gl2: true,\n bpp: 4\n },\n [36975]: {\n gl2: true,\n bpp: 4\n },\n [36214]: {\n gl2: true,\n bpp: 8\n },\n [36232]: {\n gl2: true,\n bpp: 8\n },\n [36226]: {\n gl2: true,\n bpp: 16\n },\n [36208]: {\n gl2: true,\n bpp: 16\n },\n [33325]: {\n gl2: $4c82619a65c6c17b$var$EXT_FLOAT_WEBGL2,\n bpp: 2\n },\n [33327]: {\n gl2: $4c82619a65c6c17b$var$EXT_FLOAT_WEBGL2,\n bpp: 4\n },\n [34842]: {\n gl2: $4c82619a65c6c17b$var$EXT_FLOAT_WEBGL2,\n bpp: 8\n },\n [33326]: {\n gl2: $4c82619a65c6c17b$var$EXT_FLOAT_WEBGL2,\n bpp: 4\n },\n [33328]: {\n gl2: $4c82619a65c6c17b$var$EXT_FLOAT_WEBGL2,\n bpp: 8\n },\n [34836]: {\n gl2: $4c82619a65c6c17b$var$EXT_FLOAT_WEBGL2,\n bpp: 16\n },\n [35898]: {\n gl2: $4c82619a65c6c17b$var$EXT_FLOAT_WEBGL2,\n bpp: 4\n }\n};\n\n});\n\n\nparcelRegister(\"eU1YY\", function(module, exports) {\n\n$parcel$export(module.exports, \"clear\", function () { return $ad97d555949684fb$export$42ffd38884aecdac; });\n$parcel$export(module.exports, \"clearBuffer\", function () { return $ad97d555949684fb$export$abb0b37bc9255c0e; });\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\nvar $2SJyH = parcelRequire(\"2SJyH\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\nconst $ad97d555949684fb$var$GL_DEPTH_BUFFER_BIT = 0x00000100;\nconst $ad97d555949684fb$var$GL_STENCIL_BUFFER_BIT = 0x00000400;\nconst $ad97d555949684fb$var$GL_COLOR_BUFFER_BIT = 0x00004000;\nconst $ad97d555949684fb$var$GL_COLOR = 0x1800;\nconst $ad97d555949684fb$var$GL_DEPTH = 0x1801;\nconst $ad97d555949684fb$var$GL_STENCIL = 0x1802;\nconst $ad97d555949684fb$var$GL_DEPTH_STENCIL = 0x84f9;\nconst $ad97d555949684fb$var$ERR_ARGUMENTS = \"clear: bad arguments\";\nfunction $ad97d555949684fb$export$42ffd38884aecdac(gl) {\n let { framebuffer: framebuffer = null, color: color = null, depth: depth = null, stencil: stencil = null } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const parameters = {};\n if (framebuffer) parameters.framebuffer = framebuffer;\n let clearFlags = 0;\n if (color) {\n clearFlags |= $ad97d555949684fb$var$GL_COLOR_BUFFER_BIT;\n if (color !== true) parameters.clearColor = color;\n }\n if (depth) {\n clearFlags |= $ad97d555949684fb$var$GL_DEPTH_BUFFER_BIT;\n if (depth !== true) parameters.clearDepth = depth;\n }\n if (stencil) {\n clearFlags |= $ad97d555949684fb$var$GL_STENCIL_BUFFER_BIT;\n if (depth !== true) parameters.clearStencil = depth;\n }\n (0, $ihfnu.assert)(clearFlags !== 0, $ad97d555949684fb$var$ERR_ARGUMENTS);\n (0, $2SJyH.withParameters)(gl, parameters, ()=>{\n gl.clear(clearFlags);\n });\n}\nfunction $ad97d555949684fb$export$abb0b37bc9255c0e(gl) {\n let { framebuffer: framebuffer = null, buffer: buffer = $ad97d555949684fb$var$GL_COLOR, drawBuffer: drawBuffer = 0, value: value = [\n 0,\n 0,\n 0,\n 0\n ] } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, $8HKWo.assertWebGL2Context)(gl);\n (0, $2SJyH.withParameters)(gl, {\n framebuffer: framebuffer\n }, ()=>{\n switch(buffer){\n case $ad97d555949684fb$var$GL_COLOR:\n switch(value.constructor){\n case Int32Array:\n gl.clearBufferiv(buffer, drawBuffer, value);\n break;\n case Uint32Array:\n gl.clearBufferuiv(buffer, drawBuffer, value);\n break;\n case Float32Array:\n default:\n gl.clearBufferfv(buffer, drawBuffer, value);\n }\n break;\n case $ad97d555949684fb$var$GL_DEPTH:\n gl.clearBufferfv($ad97d555949684fb$var$GL_DEPTH, 0, [\n value\n ]);\n break;\n case $ad97d555949684fb$var$GL_STENCIL:\n gl.clearBufferiv($ad97d555949684fb$var$GL_STENCIL, 0, [\n value\n ]);\n break;\n case $ad97d555949684fb$var$GL_DEPTH_STENCIL:\n const [depth, stencil] = value;\n gl.clearBufferfi($ad97d555949684fb$var$GL_DEPTH_STENCIL, 0, depth, stencil);\n break;\n default:\n (0, $ihfnu.assert)(false, $ad97d555949684fb$var$ERR_ARGUMENTS);\n }\n });\n}\n\n});\n\nparcelRegister(\"2YUMm\", function(module, exports) {\n\n$parcel$export(module.exports, \"readPixelsToArray\", function () { return $22bd3a789d744ed1$export$f9f2f48e7f9faaa5; });\n$parcel$export(module.exports, \"copyToDataUrl\", function () { return $22bd3a789d744ed1$export$310e97e05f1c81cc; });\n$parcel$export(module.exports, \"copyToTexture\", function () { return $22bd3a789d744ed1$export$45ef68203138b6b0; });\n\nvar $7jraD = parcelRequire(\"7jraD\");\n\nvar $cJo7e = parcelRequire(\"cJo7e\");\n\nvar $3D9dM = parcelRequire(\"3D9dM\");\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\nvar $lvicK = parcelRequire(\"lvicK\");\nvar $2SJyH = parcelRequire(\"2SJyH\");\n\nvar $3qgcG = parcelRequire(\"3qgcG\");\n\nvar $b54ct = parcelRequire(\"b54ct\");\n\nvar $dwgJf = parcelRequire(\"dwgJf\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\nfunction $22bd3a789d744ed1$export$f9f2f48e7f9faaa5(source) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const { sourceX: sourceX = 0, sourceY: sourceY = 0, sourceFormat: sourceFormat = 6408 } = options;\n let { sourceAttachment: sourceAttachment = 36064, target: target = null, sourceWidth: sourceWidth, sourceHeight: sourceHeight, sourceType: sourceType } = options;\n const { framebuffer: framebuffer, deleteFramebuffer: deleteFramebuffer } = $22bd3a789d744ed1$var$getFramebuffer(source);\n (0, $ihfnu.assert)(framebuffer);\n const { gl: gl, handle: handle, attachments: attachments } = framebuffer;\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n if (sourceAttachment === 36064 && handle === null) sourceAttachment = 1028;\n (0, $ihfnu.assert)(attachments[sourceAttachment]);\n sourceType = sourceType || attachments[sourceAttachment].type;\n target = $22bd3a789d744ed1$var$getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);\n sourceType = sourceType || (0, $3qgcG.getGLTypeFromTypedArray)(target);\n const prevHandle = gl.bindFramebuffer(36160, handle);\n gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);\n gl.bindFramebuffer(36160, prevHandle || null);\n if (deleteFramebuffer) framebuffer.delete();\n return target;\n}\nfunction $22bd3a789d744ed1$export$c063f9191f0d5b03(source, _ref) {\n let { sourceX: sourceX = 0, sourceY: sourceY = 0, sourceFormat: sourceFormat = 6408, target: target = null, targetByteOffset: targetByteOffset = 0, sourceWidth: sourceWidth, sourceHeight: sourceHeight, sourceType: sourceType } = _ref;\n const { framebuffer: framebuffer, deleteFramebuffer: deleteFramebuffer } = $22bd3a789d744ed1$var$getFramebuffer(source);\n (0, $ihfnu.assert)(framebuffer);\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n const gl2 = (0, $8HKWo.assertWebGL2Context)(framebuffer.gl);\n sourceType = sourceType || (target ? target.type : 5121);\n if (!target) {\n const components = (0, $b54ct.glFormatToComponents)(sourceFormat);\n const byteCount = (0, $b54ct.glTypeToBytes)(sourceType);\n const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;\n target = new (0, $7jraD.default)(gl2, {\n byteLength: byteLength,\n accessor: {\n type: sourceType,\n size: components\n }\n });\n }\n target.bind({\n target: 35051\n });\n (0, $2SJyH.withParameters)(gl2, {\n framebuffer: framebuffer\n }, ()=>{\n gl2.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, targetByteOffset);\n });\n target.unbind({\n target: 35051\n });\n if (deleteFramebuffer) framebuffer.delete();\n return target;\n}\nfunction $22bd3a789d744ed1$export$310e97e05f1c81cc(source) {\n let { sourceAttachment: sourceAttachment = 36064, targetMaxHeight: targetMaxHeight = Number.MAX_SAFE_INTEGER } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let data = $22bd3a789d744ed1$export$f9f2f48e7f9faaa5(source, {\n sourceAttachment: sourceAttachment\n });\n let { width: width, height: height } = source;\n while(height > targetMaxHeight)({ data: data, width: width, height: height } = (0, $3qgcG.scalePixels)({\n data: data,\n width: width,\n height: height\n }));\n (0, $3qgcG.flipRows)({\n data: data,\n width: width,\n height: height\n });\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext(\"2d\");\n const imageData = context.createImageData(width, height);\n imageData.data.set(data);\n context.putImageData(imageData, 0, 0);\n return canvas.toDataURL();\n}\nfunction $22bd3a789d744ed1$export$d848cd44c7a9b314(source) {\n let { sourceAttachment: sourceAttachment = 36064, targetImage: targetImage = null } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const dataUrl = $22bd3a789d744ed1$export$310e97e05f1c81cc(source, {\n sourceAttachment: sourceAttachment\n });\n targetImage = targetImage || new Image();\n targetImage.src = dataUrl;\n return targetImage;\n}\nfunction $22bd3a789d744ed1$export$45ef68203138b6b0(source, target) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const { sourceX: sourceX = 0, sourceY: sourceY = 0, targetMipmaplevel: targetMipmaplevel = 0, targetInternalFormat: targetInternalFormat = 6408 } = options;\n let { targetX: targetX, targetY: targetY, targetZ: targetZ, width: width, height: height } = options;\n const { framebuffer: framebuffer, deleteFramebuffer: deleteFramebuffer } = $22bd3a789d744ed1$var$getFramebuffer(source);\n (0, $ihfnu.assert)(framebuffer);\n const { gl: gl, handle: handle } = framebuffer;\n const isSubCopy = typeof targetX !== \"undefined\" || typeof targetY !== \"undefined\" || typeof targetZ !== \"undefined\";\n targetX = targetX || 0;\n targetY = targetY || 0;\n targetZ = targetZ || 0;\n const prevHandle = gl.bindFramebuffer(36160, handle);\n (0, $ihfnu.assert)(target);\n let texture = null;\n if (target instanceof (0, $3D9dM.default)) {\n texture = target;\n width = Number.isFinite(width) ? width : texture.width;\n height = Number.isFinite(height) ? height : texture.height;\n texture.bind(0);\n target = texture.target;\n }\n if (!isSubCopy) gl.copyTexImage2D(target, targetMipmaplevel, targetInternalFormat, sourceX, sourceY, width, height, 0);\n else switch(target){\n case 3553:\n case 34067:\n gl.copyTexSubImage2D(target, targetMipmaplevel, targetX, targetY, sourceX, sourceY, width, height);\n break;\n case 35866:\n case 32879:\n const gl2 = (0, $8HKWo.assertWebGL2Context)(gl);\n gl2.copyTexSubImage3D(target, targetMipmaplevel, targetX, targetY, targetZ, sourceX, sourceY, width, height);\n break;\n default:\n }\n if (texture) texture.unbind();\n gl.bindFramebuffer(36160, prevHandle || null);\n if (deleteFramebuffer) framebuffer.delete();\n return texture;\n}\nfunction $22bd3a789d744ed1$export$1b8713e12f56ba52(source, target) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const { sourceX0: sourceX0 = 0, sourceY0: sourceY0 = 0, targetX0: targetX0 = 0, targetY0: targetY0 = 0, color: color = true, depth: depth = false, stencil: stencil = false, filter: filter = 9728 } = options;\n let { sourceX1: sourceX1, sourceY1: sourceY1, targetX1: targetX1, targetY1: targetY1, sourceAttachment: sourceAttachment = 36064, mask: mask = 0 } = options;\n const { framebuffer: srcFramebuffer, deleteFramebuffer: deleteSrcFramebuffer } = $22bd3a789d744ed1$var$getFramebuffer(source);\n const { framebuffer: dstFramebuffer, deleteFramebuffer: deleteDstFramebuffer } = $22bd3a789d744ed1$var$getFramebuffer(target);\n (0, $ihfnu.assert)(srcFramebuffer);\n (0, $ihfnu.assert)(dstFramebuffer);\n const { gl: gl, handle: handle, width: width, height: height, readBuffer: readBuffer } = dstFramebuffer;\n const gl2 = (0, $8HKWo.assertWebGL2Context)(gl);\n if (!srcFramebuffer.handle && sourceAttachment === 36064) sourceAttachment = 1028;\n if (color) mask |= 16384;\n if (depth) mask |= 256;\n if (stencil) mask |= 1024;\n if (deleteSrcFramebuffer || deleteDstFramebuffer) {\n if (mask & 1280) {\n mask = 16384;\n (0, $lvicK.log).warn(\"Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT\")();\n }\n }\n (0, $ihfnu.assert)(mask);\n sourceX1 = sourceX1 === undefined ? srcFramebuffer.width : sourceX1;\n sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;\n targetX1 = targetX1 === undefined ? width : targetX1;\n targetY1 = targetY1 === undefined ? height : targetY1;\n const prevDrawHandle = gl.bindFramebuffer(36009, handle);\n const prevReadHandle = gl.bindFramebuffer(36008, srcFramebuffer.handle);\n gl2.readBuffer(sourceAttachment);\n gl2.blitFramebuffer(sourceX0, sourceY0, sourceX1, sourceY1, targetX0, targetY0, targetX1, targetY1, mask, filter);\n gl2.readBuffer(readBuffer);\n gl2.bindFramebuffer(36008, prevReadHandle || null);\n gl2.bindFramebuffer(36009, prevDrawHandle || null);\n if (deleteSrcFramebuffer) srcFramebuffer.delete();\n if (deleteDstFramebuffer) dstFramebuffer.delete();\n return dstFramebuffer;\n}\nfunction $22bd3a789d744ed1$var$getFramebuffer(source) {\n if (!(source instanceof (0, $cJo7e.default))) return {\n framebuffer: (0, $dwgJf.toFramebuffer)(source),\n deleteFramebuffer: true\n };\n return {\n framebuffer: source,\n deleteFramebuffer: false\n };\n}\nfunction $22bd3a789d744ed1$var$getPixelArray(pixelArray, type, format, width, height) {\n if (pixelArray) return pixelArray;\n type = type || 5121;\n const ArrayType = (0, $3qgcG.getTypedArrayFromGLType)(type, {\n clamped: false\n });\n const components = (0, $b54ct.glFormatToComponents)(format);\n return new ArrayType(width * height * components);\n}\n\n});\nparcelRegister(\"b54ct\", function(module, exports) {\n\n$parcel$export(module.exports, \"glFormatToComponents\", function () { return $81136b663d092389$export$211a621476a5328b; });\n$parcel$export(module.exports, \"glTypeToBytes\", function () { return $81136b663d092389$export$25c250e029e88433; });\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\nfunction $81136b663d092389$export$211a621476a5328b(format) {\n switch(format){\n case 6406:\n case 33326:\n case 6403:\n return 1;\n case 33328:\n case 33319:\n return 2;\n case 6407:\n case 34837:\n return 3;\n case 6408:\n case 34836:\n return 4;\n default:\n (0, $ihfnu.assert)(false);\n return 0;\n }\n}\nfunction $81136b663d092389$export$25c250e029e88433(type) {\n switch(type){\n case 5121:\n return 1;\n case 33635:\n case 32819:\n case 32820:\n return 2;\n case 5126:\n return 4;\n default:\n (0, $ihfnu.assert)(false);\n return 0;\n }\n}\n\n});\n\nparcelRegister(\"dwgJf\", function(module, exports) {\n\n$parcel$export(module.exports, \"cloneTextureFrom\", function () { return $9d7b3d8270246b94$export$a502ec217e00cfb1; });\n$parcel$export(module.exports, \"toFramebuffer\", function () { return $9d7b3d8270246b94$export$37e0e55400e095ba; });\n\nvar $7lUAH = parcelRequire(\"7lUAH\");\n\nvar $dUlGi = parcelRequire(\"dUlGi\");\n\nvar $humiB = parcelRequire(\"humiB\");\n\nvar $cJo7e = parcelRequire(\"cJo7e\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\nfunction $9d7b3d8270246b94$export$a502ec217e00cfb1(refTexture, overrides) {\n (0, $ihfnu.assert)(refTexture instanceof (0, $7lUAH.default) || refTexture instanceof (0, $dUlGi.default) || refTexture instanceof (0, $humiB.default));\n const TextureType = refTexture.constructor;\n const { gl: gl, width: width, height: height, format: format, type: type, dataFormat: dataFormat, border: border, mipmaps: mipmaps } = refTexture;\n const textureOptions = Object.assign({\n width: width,\n height: height,\n format: format,\n type: type,\n dataFormat: dataFormat,\n border: border,\n mipmaps: mipmaps\n }, overrides);\n return new TextureType(gl, textureOptions);\n}\nfunction $9d7b3d8270246b94$export$37e0e55400e095ba(texture, opts) {\n const { gl: gl, width: width, height: height, id: id } = texture;\n const framebuffer = new (0, $cJo7e.default)(gl, Object.assign({}, opts, {\n id: \"framebuffer-for-\".concat(id),\n width: width,\n height: height,\n attachments: {\n [36064]: texture\n }\n }));\n return framebuffer;\n}\n\n});\nparcelRegister(\"dUlGi\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $a20152c204cb3649$export$2e2bcd8739ae039; });\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\nvar $lvicK = parcelRequire(\"lvicK\");\n\nvar $3D9dM = parcelRequire(\"3D9dM\");\nconst $a20152c204cb3649$var$FACES = [\n 34069,\n 34070,\n 34071,\n 34072,\n 34073,\n 34074\n];\nclass $a20152c204cb3649$export$2e2bcd8739ae039 extends (0, $3D9dM.default) {\n get [Symbol.toStringTag]() {\n return \"TextureCube\";\n }\n initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { mipmaps: mipmaps = true, parameters: parameters = {} } = props;\n this.opts = props;\n this.setCubeMapImageData(props).then(()=>{\n this.loaded = true;\n if (mipmaps) this.generateMipmap(props);\n this.setParameters(parameters);\n });\n return this;\n }\n subImage(_ref) {\n let { face: face, data: data, x: x = 0, y: y = 0, mipmapLevel: mipmapLevel = 0 } = _ref;\n return this._subImage({\n target: face,\n data: data,\n x: x,\n y: y,\n mipmapLevel: mipmapLevel\n });\n }\n async setCubeMapImageData(_ref2) {\n let { width: width, height: height, pixels: pixels, data: data, border: border = 0, format: format = 6408, type: type = 5121 } = _ref2;\n const { gl: gl } = this;\n const imageDataMap = pixels || data;\n const resolvedFaces = await Promise.all($a20152c204cb3649$var$FACES.map((face)=>{\n const facePixels = imageDataMap[face];\n return Promise.all(Array.isArray(facePixels) ? facePixels : [\n facePixels\n ]);\n }));\n this.bind();\n $a20152c204cb3649$var$FACES.forEach((face, index)=>{\n if (resolvedFaces[index].length > 1 && this.opts.mipmaps !== false) (0, $lvicK.log).warn(\"\".concat(this.id, \" has mipmap and multiple LODs.\"))();\n resolvedFaces[index].forEach((image, lodLevel)=>{\n if (width && height) gl.texImage2D(face, lodLevel, format, width, height, border, format, type, image);\n else gl.texImage2D(face, lodLevel, format, format, type, image);\n });\n });\n this.unbind();\n }\n setImageDataForFace(options) {\n const { face: face, width: width, height: height, pixels: pixels, data: data, border: border = 0, format: format = 6408, type: type = 5121 } = options;\n const { gl: gl } = this;\n const imageData = pixels || data;\n this.bind();\n if (imageData instanceof Promise) imageData.then((resolvedImageData)=>this.setImageDataForFace(Object.assign({}, options, {\n face: face,\n data: resolvedImageData,\n pixels: resolvedImageData\n })));\n else if (this.width || this.height) gl.texImage2D(face, 0, format, width, height, border, format, type, imageData);\n else gl.texImage2D(face, 0, format, format, type, imageData);\n return this;\n }\n constructor(gl){\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, $8HKWo.assertWebGLContext)(gl);\n super(gl, Object.assign({}, props, {\n target: 34067\n }));\n this.initialize(props);\n Object.seal(this);\n }\n}\n$a20152c204cb3649$export$2e2bcd8739ae039.FACES = $a20152c204cb3649$var$FACES;\n\n});\n\nparcelRegister(\"humiB\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $cbb6891d05bcf94a$export$2e2bcd8739ae039; });\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\nvar $2SJyH = parcelRequire(\"2SJyH\");\n\nvar $3D9dM = parcelRequire(\"3D9dM\");\n\nvar $du43m = parcelRequire(\"du43m\");\n\nvar $7jraD = parcelRequire(\"7jraD\");\nclass $cbb6891d05bcf94a$export$2e2bcd8739ae039 extends (0, $3D9dM.default) {\n get [Symbol.toStringTag]() {\n return \"Texture3D\";\n }\n static isSupported(gl) {\n return (0, $8HKWo.isWebGL2)(gl);\n }\n setImageData(_ref) {\n let { level: level = 0, dataFormat: dataFormat = 6408, width: width, height: height, depth: depth = 1, border: border = 0, format: format, type: type = 5121, offset: offset = 0, data: data, parameters: parameters = {} } = _ref;\n this._trackDeallocatedMemory(\"Texture\");\n this.gl.bindTexture(this.target, this.handle);\n (0, $2SJyH.withParameters)(this.gl, parameters, ()=>{\n if (ArrayBuffer.isView(data)) this.gl.texImage3D(this.target, level, dataFormat, width, height, depth, border, format, type, data);\n if (data instanceof (0, $7jraD.default)) {\n this.gl.bindBuffer(35052, data.handle);\n this.gl.texImage3D(this.target, level, dataFormat, width, height, depth, border, format, type, offset);\n }\n });\n if (data && data.byteLength) this._trackAllocatedMemory(data.byteLength, \"Texture\");\n else {\n const channels = (0, $du43m.DATA_FORMAT_CHANNELS)[this.dataFormat] || 4;\n const channelSize = (0, $du43m.TYPE_SIZES)[this.type] || 1;\n this._trackAllocatedMemory(this.width * this.height * this.depth * channels * channelSize, \"Texture\");\n }\n this.loaded = true;\n return this;\n }\n constructor(gl){\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, $8HKWo.assertWebGL2Context)(gl);\n props = Object.assign({\n depth: 1\n }, props, {\n target: 32879,\n unpackFlipY: false\n });\n super(gl, props);\n this.initialize(props);\n Object.seal(this);\n }\n}\n\n});\n\n\n\nparcelRegister(\"tIWfJ\", function(module, exports) {\n\n$parcel$export(module.exports, \"hasFeature\", function () { return $05959168ffa4f795$export$805ddaeeece0413e; });\n$parcel$export(module.exports, \"hasFeatures\", function () { return $05959168ffa4f795$export$990fdf4f5aca9ddb; });\n$parcel$export(module.exports, \"getFeatures\", function () { return $05959168ffa4f795$export$c5c8eb9e425b0de0; });\n\nvar $68aPy = parcelRequire(\"68aPy\");\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\nvar $lvicK = parcelRequire(\"lvicK\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\nconst $05959168ffa4f795$var$LOG_UNSUPPORTED_FEATURE = 2;\nfunction $05959168ffa4f795$export$805ddaeeece0413e(gl, feature) {\n return $05959168ffa4f795$export$990fdf4f5aca9ddb(gl, feature);\n}\nfunction $05959168ffa4f795$export$990fdf4f5aca9ddb(gl, features) {\n features = Array.isArray(features) ? features : [\n features\n ];\n return features.every((feature)=>{\n return $05959168ffa4f795$var$isFeatureSupported(gl, feature);\n });\n}\nfunction $05959168ffa4f795$export$c5c8eb9e425b0de0(gl) {\n gl.luma = gl.luma || {};\n gl.luma.caps = gl.luma.caps || {};\n for(const cap in 0, $68aPy.default)if (gl.luma.caps[cap] === undefined) gl.luma.caps[cap] = $05959168ffa4f795$var$isFeatureSupported(gl, cap);\n return gl.luma.caps;\n}\nfunction $05959168ffa4f795$var$isFeatureSupported(gl, cap) {\n gl.luma = gl.luma || {};\n gl.luma.caps = gl.luma.caps || {};\n if (gl.luma.caps[cap] === undefined) gl.luma.caps[cap] = $05959168ffa4f795$var$queryFeature(gl, cap);\n if (!gl.luma.caps[cap]) (0, $lvicK.log).log($05959168ffa4f795$var$LOG_UNSUPPORTED_FEATURE, \"Feature: \".concat(cap, \" not supported\"))();\n return gl.luma.caps[cap];\n}\nfunction $05959168ffa4f795$var$queryFeature(gl, cap) {\n const feature = (0, $68aPy.default)[cap];\n (0, $ihfnu.assert)(feature, cap);\n let isSupported;\n const featureDefinition = (0, $8HKWo.isWebGL2)(gl) ? feature[1] || feature[0] : feature[0];\n if (typeof featureDefinition === \"function\") isSupported = featureDefinition(gl);\n else if (Array.isArray(featureDefinition)) {\n isSupported = true;\n for (const extension of featureDefinition)isSupported = isSupported && Boolean(gl.getExtension(extension));\n } else if (typeof featureDefinition === \"string\") isSupported = Boolean(gl.getExtension(featureDefinition));\n else if (typeof featureDefinition === \"boolean\") isSupported = featureDefinition;\n else (0, $ihfnu.assert)(false);\n return isSupported;\n}\n\n});\n\n\n\nparcelRegister(\"jL2pF\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $e6244741b37d557c$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $1zR3q = parcelRequire(\"1zR3q\");\nclass $e6244741b37d557c$export$2e2bcd8739ae039 {\n get value() {\n return this.source.value;\n }\n getValue() {\n const buffer = this.source.getBuffer();\n const accessor = this.getAccessor();\n if (buffer) return [\n buffer,\n accessor\n ];\n const { value: value } = this.source;\n const { size: size } = accessor;\n let constantValue = value;\n if (value && value.length !== size) {\n constantValue = new Float32Array(size);\n const index = accessor.elementOffset || 0;\n for(let i = 0; i < size; ++i)constantValue[i] = value[index + i];\n }\n return constantValue;\n }\n getAccessor() {\n return (0, $2QP2i._)({}, this.source.getAccessor(), this.opts);\n }\n constructor(dataColumn, opts){\n (0, $1zR3q.default)(this, \"opts\", void 0);\n (0, $1zR3q.default)(this, \"source\", void 0);\n this.opts = opts;\n this.source = dataColumn;\n }\n}\n\n});\n\nparcelRegister(\"24b9z\", function(module, exports) {\n\n$parcel$export(module.exports, \"glArrayFromType\", function () { return $18149b5662407a5e$export$99de3c889be30ec5; });\nfunction $18149b5662407a5e$export$99de3c889be30ec5(glType) {\n switch(glType){\n case 5126:\n return Float32Array;\n case 5130:\n return Float64Array;\n case 5123:\n case 33635:\n case 32819:\n case 32820:\n return Uint16Array;\n case 5125:\n return Uint32Array;\n case 5121:\n return Uint8ClampedArray;\n case 5120:\n return Int8Array;\n case 5122:\n return Int16Array;\n case 5124:\n return Int32Array;\n default:\n throw new Error(\"Unknown GL type\");\n }\n}\n\n});\n\nparcelRegister(\"an4RE\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $78cfd35131f8c1e0$export$2e2bcd8739ae039; });\n\nvar $1zR3q = parcelRequire(\"1zR3q\");\nclass $78cfd35131f8c1e0$export$ae7911e6e34e8f38 {\n setOptions(options) {\n Object.assign(this.opts, options);\n }\n allocate(typedArray, count, { size: size = 1, type: type, padding: padding = 0, copy: copy = false, initialize: initialize = false, maxCount: maxCount }) {\n const Type = type || typedArray && typedArray.constructor || Float32Array;\n const newSize = count * size + padding;\n if (ArrayBuffer.isView(typedArray)) {\n if (newSize <= typedArray.length) return typedArray;\n if (newSize * typedArray.BYTES_PER_ELEMENT <= typedArray.buffer.byteLength) return new Type(typedArray.buffer, 0, newSize);\n }\n let maxSize = Infinity;\n if (maxCount) maxSize = maxCount * size + padding;\n const newArray = this._allocate(Type, newSize, initialize, maxSize);\n if (typedArray && copy) newArray.set(typedArray);\n else if (!initialize) newArray.fill(0, 0, 4);\n this._release(typedArray);\n return newArray;\n }\n release(typedArray) {\n this._release(typedArray);\n }\n _allocate(Type, size, initialize, maxSize) {\n let sizeToAllocate = Math.max(Math.ceil(size * this.opts.overAlloc), 1);\n if (sizeToAllocate > maxSize) sizeToAllocate = maxSize;\n const pool = this._pool;\n const byteLength = Type.BYTES_PER_ELEMENT * sizeToAllocate;\n const i = pool.findIndex((b)=>b.byteLength >= byteLength);\n if (i >= 0) {\n const array = new Type(pool.splice(i, 1)[0], 0, sizeToAllocate);\n if (initialize) array.fill(0);\n return array;\n }\n return new Type(sizeToAllocate);\n }\n _release(typedArray) {\n if (!ArrayBuffer.isView(typedArray)) return;\n const pool = this._pool;\n const { buffer: buffer } = typedArray;\n const { byteLength: byteLength } = buffer;\n const i = pool.findIndex((b)=>b.byteLength >= byteLength);\n if (i < 0) pool.push(buffer);\n else if (i > 0 || pool.length < this.opts.poolSize) pool.splice(i, 0, buffer);\n if (pool.length > this.opts.poolSize) pool.shift();\n }\n constructor(options = {}){\n (0, $1zR3q.default)(this, \"_pool\", []);\n (0, $1zR3q.default)(this, \"opts\", {\n overAlloc: 2,\n poolSize: 100\n });\n this.setOptions(options);\n }\n}\nvar $78cfd35131f8c1e0$export$2e2bcd8739ae039 = new $78cfd35131f8c1e0$export$ae7911e6e34e8f38();\n\n});\n\nparcelRegister(\"9kyEf\", function(module, exports) {\n\n$parcel$export(module.exports, \"createMat4\", function () { return $6cb0dbbc1f78b65b$export$1a9a28cade4dcdc4; });\n$parcel$export(module.exports, \"getCameraPosition\", function () { return $6cb0dbbc1f78b65b$export$f411fdc3e02e158b; });\n$parcel$export(module.exports, \"getFrustumPlanes\", function () { return $6cb0dbbc1f78b65b$export$7fd6193a8fe6de4e; });\n$parcel$export(module.exports, \"toDoublePrecisionArray\", function () { return $6cb0dbbc1f78b65b$export$550bd089be4eedcb; });\n$parcel$export(module.exports, \"mergeBounds\", function () { return $6cb0dbbc1f78b65b$export$579a8a269cc78035; });\n\nvar $an4RE = parcelRequire(\"an4RE\");\n\nvar $cKS36 = parcelRequire(\"cKS36\");\nfunction $6cb0dbbc1f78b65b$export$1a9a28cade4dcdc4() {\n return [\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ];\n}\nfunction $6cb0dbbc1f78b65b$export$842a2cf37af977e1(value, divisor) {\n const modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\nfunction $6cb0dbbc1f78b65b$export$f411fdc3e02e158b(viewMatrixInverse) {\n return [\n viewMatrixInverse[12],\n viewMatrixInverse[13],\n viewMatrixInverse[14]\n ];\n}\nfunction $6cb0dbbc1f78b65b$export$7fd6193a8fe6de4e(viewProjectionMatrix) {\n return {\n left: $6cb0dbbc1f78b65b$var$getFrustumPlane(viewProjectionMatrix[3] + viewProjectionMatrix[0], viewProjectionMatrix[7] + viewProjectionMatrix[4], viewProjectionMatrix[11] + viewProjectionMatrix[8], viewProjectionMatrix[15] + viewProjectionMatrix[12]),\n right: $6cb0dbbc1f78b65b$var$getFrustumPlane(viewProjectionMatrix[3] - viewProjectionMatrix[0], viewProjectionMatrix[7] - viewProjectionMatrix[4], viewProjectionMatrix[11] - viewProjectionMatrix[8], viewProjectionMatrix[15] - viewProjectionMatrix[12]),\n bottom: $6cb0dbbc1f78b65b$var$getFrustumPlane(viewProjectionMatrix[3] + viewProjectionMatrix[1], viewProjectionMatrix[7] + viewProjectionMatrix[5], viewProjectionMatrix[11] + viewProjectionMatrix[9], viewProjectionMatrix[15] + viewProjectionMatrix[13]),\n top: $6cb0dbbc1f78b65b$var$getFrustumPlane(viewProjectionMatrix[3] - viewProjectionMatrix[1], viewProjectionMatrix[7] - viewProjectionMatrix[5], viewProjectionMatrix[11] - viewProjectionMatrix[9], viewProjectionMatrix[15] - viewProjectionMatrix[13]),\n near: $6cb0dbbc1f78b65b$var$getFrustumPlane(viewProjectionMatrix[3] + viewProjectionMatrix[2], viewProjectionMatrix[7] + viewProjectionMatrix[6], viewProjectionMatrix[11] + viewProjectionMatrix[10], viewProjectionMatrix[15] + viewProjectionMatrix[14]),\n far: $6cb0dbbc1f78b65b$var$getFrustumPlane(viewProjectionMatrix[3] - viewProjectionMatrix[2], viewProjectionMatrix[7] - viewProjectionMatrix[6], viewProjectionMatrix[11] - viewProjectionMatrix[10], viewProjectionMatrix[15] - viewProjectionMatrix[14])\n };\n}\nconst $6cb0dbbc1f78b65b$var$scratchVector = new (0, $cKS36.default)();\nfunction $6cb0dbbc1f78b65b$var$getFrustumPlane(a, b, c, d) {\n $6cb0dbbc1f78b65b$var$scratchVector.set(a, b, c);\n const L = $6cb0dbbc1f78b65b$var$scratchVector.len();\n return {\n distance: d / L,\n normal: new (0, $cKS36.default)(-a / L, -b / L, -c / L)\n };\n}\nfunction $6cb0dbbc1f78b65b$export$4e5285c56a99f06d(x) {\n return x - Math.fround(x);\n}\nlet $6cb0dbbc1f78b65b$var$scratchArray;\nfunction $6cb0dbbc1f78b65b$export$550bd089be4eedcb(typedArray, options) {\n const { size: size = 1, startIndex: startIndex = 0 } = options;\n const endIndex = options.endIndex !== undefined ? options.endIndex : typedArray.length;\n const count = (endIndex - startIndex) / size;\n $6cb0dbbc1f78b65b$var$scratchArray = (0, $an4RE.default).allocate($6cb0dbbc1f78b65b$var$scratchArray, count, {\n type: Float32Array,\n size: size * 2\n });\n let sourceIndex = startIndex;\n let targetIndex = 0;\n while(sourceIndex < endIndex){\n for(let j = 0; j < size; j++){\n const value = typedArray[sourceIndex++];\n $6cb0dbbc1f78b65b$var$scratchArray[targetIndex + j] = value;\n $6cb0dbbc1f78b65b$var$scratchArray[targetIndex + j + size] = $6cb0dbbc1f78b65b$export$4e5285c56a99f06d(value);\n }\n targetIndex += size * 2;\n }\n return $6cb0dbbc1f78b65b$var$scratchArray.subarray(0, count * size * 2);\n}\nfunction $6cb0dbbc1f78b65b$export$579a8a269cc78035(boundsList) {\n let mergedBounds = null;\n let isMerged = false;\n for (const bounds of boundsList){\n if (!bounds) continue;\n if (!mergedBounds) mergedBounds = bounds;\n else {\n if (!isMerged) {\n mergedBounds = [\n [\n mergedBounds[0][0],\n mergedBounds[0][1]\n ],\n [\n mergedBounds[1][0],\n mergedBounds[1][1]\n ]\n ];\n isMerged = true;\n }\n mergedBounds[0][0] = Math.min(mergedBounds[0][0], bounds[0][0]);\n mergedBounds[0][1] = Math.min(mergedBounds[0][1], bounds[0][1]);\n mergedBounds[1][0] = Math.max(mergedBounds[1][0], bounds[1][0]);\n mergedBounds[1][1] = Math.max(mergedBounds[1][1], bounds[1][1]);\n }\n }\n return mergedBounds;\n}\n\n});\nparcelRegister(\"cKS36\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9493b4ee0416307f$export$2e2bcd8739ae039; });\n\nvar $3nAvB = parcelRequire(\"3nAvB\");\n\nvar $cwF9s = parcelRequire(\"cwF9s\");\n\nvar $j8wyT = parcelRequire(\"j8wyT\");\n\nvar $bjUmI = parcelRequire(\"bjUmI\");\n\nvar $idCXM = parcelRequire(\"idCXM\");\nconst $9493b4ee0416307f$var$ORIGIN = [\n 0,\n 0,\n 0\n];\nlet $9493b4ee0416307f$var$ZERO;\nclass $9493b4ee0416307f$export$2e2bcd8739ae039 extends (0, $3nAvB.default) {\n static get ZERO() {\n if (!$9493b4ee0416307f$var$ZERO) {\n $9493b4ee0416307f$var$ZERO = new $9493b4ee0416307f$export$2e2bcd8739ae039(0, 0, 0);\n Object.freeze($9493b4ee0416307f$var$ZERO);\n }\n return $9493b4ee0416307f$var$ZERO;\n }\n set(x, y, z) {\n this[0] = x;\n this[1] = y;\n this[2] = z;\n return this.check();\n }\n copy(array) {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n return this.check();\n }\n fromObject(object) {\n if ((0, $cwF9s.config).debug) {\n (0, $j8wyT.checkNumber)(object.x);\n (0, $j8wyT.checkNumber)(object.y);\n (0, $j8wyT.checkNumber)(object.z);\n }\n this[0] = object.x;\n this[1] = object.y;\n this[2] = object.z;\n return this.check();\n }\n toObject(object) {\n object.x = this[0];\n object.y = this[1];\n object.z = this[2];\n return object;\n }\n get ELEMENTS() {\n return 3;\n }\n get z() {\n return this[2];\n }\n set z(value) {\n this[2] = (0, $j8wyT.checkNumber)(value);\n }\n angle(vector) {\n return $bjUmI.angle(this, vector);\n }\n cross(vector) {\n $bjUmI.cross(this, this, vector);\n return this.check();\n }\n rotateX({ radians: radians, origin: origin = $9493b4ee0416307f$var$ORIGIN }) {\n $bjUmI.rotateX(this, this, origin, radians);\n return this.check();\n }\n rotateY({ radians: radians, origin: origin = $9493b4ee0416307f$var$ORIGIN }) {\n $bjUmI.rotateY(this, this, origin, radians);\n return this.check();\n }\n rotateZ({ radians: radians, origin: origin = $9493b4ee0416307f$var$ORIGIN }) {\n $bjUmI.rotateZ(this, this, origin, radians);\n return this.check();\n }\n transform(matrix4) {\n return this.transformAsPoint(matrix4);\n }\n transformAsPoint(matrix4) {\n $bjUmI.transformMat4(this, this, matrix4);\n return this.check();\n }\n transformAsVector(matrix4) {\n (0, $idCXM.vec3_transformMat4AsVector)(this, this, matrix4);\n return this.check();\n }\n transformByMatrix3(matrix3) {\n $bjUmI.transformMat3(this, this, matrix3);\n return this.check();\n }\n transformByMatrix2(matrix2) {\n (0, $idCXM.vec3_transformMat2)(this, this, matrix2);\n return this.check();\n }\n transformByQuaternion(quaternion) {\n $bjUmI.transformQuat(this, this, quaternion);\n return this.check();\n }\n constructor(x = 0, y = 0, z = 0){\n super(-0, -0, -0);\n if (arguments.length === 1 && (0, $cwF9s.isArray)(x)) this.copy(x);\n else {\n if ((0, $cwF9s.config).debug) {\n (0, $j8wyT.checkNumber)(x);\n (0, $j8wyT.checkNumber)(y);\n (0, $j8wyT.checkNumber)(z);\n }\n this[0] = x;\n this[1] = y;\n this[2] = z;\n }\n }\n}\n\n});\nparcelRegister(\"3nAvB\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $275fd6f8ce435d12$export$2e2bcd8739ae039; });\n\nvar $cCPCr = parcelRequire(\"cCPCr\");\n\nvar $j8wyT = parcelRequire(\"j8wyT\");\n\nvar $8EkKL = parcelRequire(\"8EkKL\");\nclass $275fd6f8ce435d12$export$2e2bcd8739ae039 extends (0, $cCPCr.default) {\n get x() {\n return this[0];\n }\n set x(value) {\n this[0] = (0, $j8wyT.checkNumber)(value);\n }\n get y() {\n return this[1];\n }\n set y(value) {\n this[1] = (0, $j8wyT.checkNumber)(value);\n }\n len() {\n return Math.sqrt(this.lengthSquared());\n }\n magnitude() {\n return this.len();\n }\n lengthSquared() {\n let length = 0;\n for(let i = 0; i < this.ELEMENTS; ++i)length += this[i] * this[i];\n return length;\n }\n magnitudeSquared() {\n return this.lengthSquared();\n }\n distance(mathArray) {\n return Math.sqrt(this.distanceSquared(mathArray));\n }\n distanceSquared(mathArray) {\n let length = 0;\n for(let i = 0; i < this.ELEMENTS; ++i){\n const dist = this[i] - mathArray[i];\n length += dist * dist;\n }\n return (0, $j8wyT.checkNumber)(length);\n }\n dot(mathArray) {\n let product = 0;\n for(let i = 0; i < this.ELEMENTS; ++i)product += this[i] * mathArray[i];\n return (0, $j8wyT.checkNumber)(product);\n }\n normalize() {\n const length = this.magnitude();\n if (length !== 0) for(let i = 0; i < this.ELEMENTS; ++i)this[i] /= length;\n return this.check();\n }\n multiply(...vectors) {\n for (const vector of vectors)for(let i = 0; i < this.ELEMENTS; ++i)this[i] *= vector[i];\n return this.check();\n }\n divide(...vectors) {\n for (const vector of vectors)for(let i = 0; i < this.ELEMENTS; ++i)this[i] /= vector[i];\n return this.check();\n }\n lengthSq() {\n return this.lengthSquared();\n }\n distanceTo(vector) {\n return this.distance(vector);\n }\n distanceToSquared(vector) {\n return this.distanceSquared(vector);\n }\n getComponent(i) {\n (0, $8EkKL.default)(i >= 0 && i < this.ELEMENTS, \"index is out of range\");\n return (0, $j8wyT.checkNumber)(this[i]);\n }\n setComponent(i, value) {\n (0, $8EkKL.default)(i >= 0 && i < this.ELEMENTS, \"index is out of range\");\n this[i] = value;\n return this.check();\n }\n addVectors(a, b) {\n return this.copy(a).add(b);\n }\n subVectors(a, b) {\n return this.copy(a).subtract(b);\n }\n multiplyVectors(a, b) {\n return this.copy(a).multiply(b);\n }\n addScaledVector(a, b) {\n return this.add(new this.constructor(a).multiplyScalar(b));\n }\n}\n\n});\nparcelRegister(\"cCPCr\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $931113201a6ab2e9$export$2e2bcd8739ae039; });\n\nvar $cwF9s = parcelRequire(\"cwF9s\");\nfunction $931113201a6ab2e9$var$_extendableBuiltin(cls) {\n function ExtendableBuiltin() {\n var instance = Reflect.construct(cls, Array.from(arguments));\n Object.setPrototypeOf(instance, Object.getPrototypeOf(this));\n return instance;\n }\n ExtendableBuiltin.prototype = Object.create(cls.prototype, {\n constructor: {\n value: cls,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (Object.setPrototypeOf) Object.setPrototypeOf(ExtendableBuiltin, cls);\n else ExtendableBuiltin.__proto__ = cls;\n return ExtendableBuiltin;\n}\nclass $931113201a6ab2e9$export$2e2bcd8739ae039 extends $931113201a6ab2e9$var$_extendableBuiltin(Array) {\n clone() {\n return new this.constructor().copy(this);\n }\n fromArray(array, offset = 0) {\n for(let i = 0; i < this.ELEMENTS; ++i)this[i] = array[i + offset];\n return this.check();\n }\n toArray(targetArray = [], offset = 0) {\n for(let i = 0; i < this.ELEMENTS; ++i)targetArray[offset + i] = this[i];\n return targetArray;\n }\n from(arrayOrObject) {\n return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);\n }\n to(arrayOrObject) {\n if (arrayOrObject === this) return this;\n return (0, $cwF9s.isArray)(arrayOrObject) ? this.toArray(arrayOrObject) : this.toObject(arrayOrObject);\n }\n toTarget(target) {\n return target ? this.to(target) : this;\n }\n toFloat32Array() {\n return new Float32Array(this);\n }\n toString() {\n return this.formatString((0, $cwF9s.config));\n }\n formatString(opts) {\n let string = \"\";\n for(let i = 0; i < this.ELEMENTS; ++i)string += (i > 0 ? \", \" : \"\") + (0, $cwF9s.formatValue)(this[i], opts);\n return \"\".concat(opts.printTypes ? this.constructor.name : \"\", \"[\").concat(string, \"]\");\n }\n equals(array) {\n if (!array || this.length !== array.length) return false;\n for(let i = 0; i < this.ELEMENTS; ++i){\n if (!(0, $cwF9s.equals)(this[i], array[i])) return false;\n }\n return true;\n }\n exactEquals(array) {\n if (!array || this.length !== array.length) return false;\n for(let i = 0; i < this.ELEMENTS; ++i){\n if (this[i] !== array[i]) return false;\n }\n return true;\n }\n negate() {\n for(let i = 0; i < this.ELEMENTS; ++i)this[i] = -this[i];\n return this.check();\n }\n lerp(a, b, t) {\n if (t === undefined) return this.lerp(this, a, b);\n for(let i = 0; i < this.ELEMENTS; ++i){\n const ai = a[i];\n this[i] = ai + t * (b[i] - ai);\n }\n return this.check();\n }\n min(vector) {\n for(let i = 0; i < this.ELEMENTS; ++i)this[i] = Math.min(vector[i], this[i]);\n return this.check();\n }\n max(vector) {\n for(let i = 0; i < this.ELEMENTS; ++i)this[i] = Math.max(vector[i], this[i]);\n return this.check();\n }\n clamp(minVector, maxVector) {\n for(let i = 0; i < this.ELEMENTS; ++i)this[i] = Math.min(Math.max(this[i], minVector[i]), maxVector[i]);\n return this.check();\n }\n add(...vectors) {\n for (const vector of vectors)for(let i = 0; i < this.ELEMENTS; ++i)this[i] += vector[i];\n return this.check();\n }\n subtract(...vectors) {\n for (const vector of vectors)for(let i = 0; i < this.ELEMENTS; ++i)this[i] -= vector[i];\n return this.check();\n }\n scale(scale) {\n if (typeof scale === \"number\") for(let i = 0; i < this.ELEMENTS; ++i)this[i] *= scale;\n else for(let i = 0; i < this.ELEMENTS && i < scale.length; ++i)this[i] *= scale[i];\n return this.check();\n }\n multiplyByScalar(scalar) {\n for(let i = 0; i < this.ELEMENTS; ++i)this[i] *= scalar;\n return this.check();\n }\n check() {\n if ((0, $cwF9s.config).debug && !this.validate()) throw new Error(\"math.gl: \".concat(this.constructor.name, \" some fields set to invalid numbers'\"));\n return this;\n }\n validate() {\n let valid = this.length === this.ELEMENTS;\n for(let i = 0; i < this.ELEMENTS; ++i)valid = valid && Number.isFinite(this[i]);\n return valid;\n }\n sub(a) {\n return this.subtract(a);\n }\n setScalar(a) {\n for(let i = 0; i < this.ELEMENTS; ++i)this[i] = a;\n return this.check();\n }\n addScalar(a) {\n for(let i = 0; i < this.ELEMENTS; ++i)this[i] += a;\n return this.check();\n }\n subScalar(a) {\n return this.addScalar(-a);\n }\n multiplyScalar(scalar) {\n for(let i = 0; i < this.ELEMENTS; ++i)this[i] *= scalar;\n return this.check();\n }\n divideScalar(a) {\n return this.multiplyByScalar(1 / a);\n }\n clampScalar(min, max) {\n for(let i = 0; i < this.ELEMENTS; ++i)this[i] = Math.min(Math.max(this[i], min), max);\n return this.check();\n }\n get elements() {\n return this;\n }\n}\n\n});\nparcelRegister(\"cwF9s\", function(module, exports) {\n\n$parcel$export(module.exports, \"config\", function () { return $91e8650d526beecc$export$e506a1d27d1eaa20; });\n$parcel$export(module.exports, \"formatValue\", function () { return $91e8650d526beecc$export$7c4d25c0c3217d8c; });\n$parcel$export(module.exports, \"isArray\", function () { return $91e8650d526beecc$export$43bee75e5e14138e; });\n$parcel$export(module.exports, \"toRadians\", function () { return $91e8650d526beecc$export$cba01ba138429a1d; });\n$parcel$export(module.exports, \"toDegrees\", function () { return $91e8650d526beecc$export$56cb859c01fa134d; });\n$parcel$export(module.exports, \"degrees\", function () { return $91e8650d526beecc$export$41fc368e1a942b97; });\n$parcel$export(module.exports, \"clamp\", function () { return $91e8650d526beecc$export$7d15b64cf5a3a4c4; });\n$parcel$export(module.exports, \"lerp\", function () { return $91e8650d526beecc$export$3a89f8d6f6bf6c9f; });\n$parcel$export(module.exports, \"equals\", function () { return $91e8650d526beecc$export$e9bab7fafb253603; });\n\nvar $8EkKL = parcelRequire(\"8EkKL\");\nconst $91e8650d526beecc$var$RADIANS_TO_DEGREES = 1 / Math.PI * 180;\nconst $91e8650d526beecc$var$DEGREES_TO_RADIANS = 1 / 180 * Math.PI;\nconst $91e8650d526beecc$export$e506a1d27d1eaa20 = {\n EPSILON: 1e-12,\n debug: false,\n precision: 4,\n printTypes: false,\n printDegrees: false,\n printRowMajor: true\n};\nfunction $91e8650d526beecc$export$8d21e34596265fa2(options) {\n for(const key in options){\n (0, $8EkKL.default)(key in $91e8650d526beecc$export$e506a1d27d1eaa20);\n $91e8650d526beecc$export$e506a1d27d1eaa20[key] = options[key];\n }\n return $91e8650d526beecc$export$e506a1d27d1eaa20;\n}\nfunction $91e8650d526beecc$export$7c4d25c0c3217d8c(value, { precision: precision = $91e8650d526beecc$export$e506a1d27d1eaa20.precision } = {}) {\n value = $91e8650d526beecc$var$round(value);\n return \"\".concat(parseFloat(value.toPrecision(precision)));\n}\nfunction $91e8650d526beecc$export$43bee75e5e14138e(value) {\n return Array.isArray(value) || ArrayBuffer.isView(value) && !(value instanceof DataView);\n}\nfunction $91e8650d526beecc$export$9cd59f9826255e47(array) {\n return \"clone\" in array ? array.clone() : array.slice();\n}\nfunction $91e8650d526beecc$export$cba01ba138429a1d(degrees) {\n return $91e8650d526beecc$export$8449e153fbd325fc(degrees);\n}\nfunction $91e8650d526beecc$export$56cb859c01fa134d(radians) {\n return $91e8650d526beecc$export$41fc368e1a942b97(radians);\n}\nfunction $91e8650d526beecc$export$8449e153fbd325fc(degrees, result) {\n return $91e8650d526beecc$var$map(degrees, (degrees)=>degrees * $91e8650d526beecc$var$DEGREES_TO_RADIANS, result);\n}\nfunction $91e8650d526beecc$export$41fc368e1a942b97(radians, result) {\n return $91e8650d526beecc$var$map(radians, (radians)=>radians * $91e8650d526beecc$var$RADIANS_TO_DEGREES, result);\n}\nfunction $91e8650d526beecc$export$5de3937cb4b592ed(radians, result) {\n return $91e8650d526beecc$var$map(radians, (angle)=>Math.sin(angle), result);\n}\nfunction $91e8650d526beecc$export$50d414a77b60d802(radians, result) {\n return $91e8650d526beecc$var$map(radians, (angle)=>Math.cos(angle), result);\n}\nfunction $91e8650d526beecc$export$fcdd3b0b3246a325(radians, result) {\n return $91e8650d526beecc$var$map(radians, (angle)=>Math.tan(angle), result);\n}\nfunction $91e8650d526beecc$export$41726bdb1fc63f(radians, result) {\n return $91e8650d526beecc$var$map(radians, (angle)=>Math.asin(angle), result);\n}\nfunction $91e8650d526beecc$export$fd6306be3fde5b04(radians, result) {\n return $91e8650d526beecc$var$map(radians, (angle)=>Math.acos(angle), result);\n}\nfunction $91e8650d526beecc$export$628dc4eed22b0fbd(radians, result) {\n return $91e8650d526beecc$var$map(radians, (angle)=>Math.atan(angle), result);\n}\nfunction $91e8650d526beecc$export$7d15b64cf5a3a4c4(value, min, max) {\n return $91e8650d526beecc$var$map(value, (value)=>Math.max(min, Math.min(max, value)));\n}\nfunction $91e8650d526beecc$export$3a89f8d6f6bf6c9f(a, b, t) {\n if ($91e8650d526beecc$export$43bee75e5e14138e(a)) return a.map((ai, i)=>$91e8650d526beecc$export$3a89f8d6f6bf6c9f(ai, b[i], t));\n return t * b + (1 - t) * a;\n}\nfunction $91e8650d526beecc$export$e9bab7fafb253603(a, b, epsilon) {\n const oldEpsilon = $91e8650d526beecc$export$e506a1d27d1eaa20.EPSILON;\n if (epsilon) $91e8650d526beecc$export$e506a1d27d1eaa20.EPSILON = epsilon;\n try {\n if (a === b) return true;\n if ($91e8650d526beecc$export$43bee75e5e14138e(a) && $91e8650d526beecc$export$43bee75e5e14138e(b)) {\n if (a.length !== b.length) return false;\n for(let i = 0; i < a.length; ++i){\n if (!$91e8650d526beecc$export$e9bab7fafb253603(a[i], b[i])) return false;\n }\n return true;\n }\n if (a && a.equals) return a.equals(b);\n if (b && b.equals) return b.equals(a);\n if (typeof a === \"number\" && typeof b === \"number\") return Math.abs(a - b) <= $91e8650d526beecc$export$e506a1d27d1eaa20.EPSILON * Math.max(1, Math.abs(a), Math.abs(b));\n return false;\n } finally{\n $91e8650d526beecc$export$e506a1d27d1eaa20.EPSILON = oldEpsilon;\n }\n}\nfunction $91e8650d526beecc$export$f2599a5cf1109d8(a, b) {\n if (a === b) return true;\n if (a && typeof a === \"object\" && b && typeof b === \"object\") {\n if (a.constructor !== b.constructor) return false;\n if (a.exactEquals) return a.exactEquals(b);\n }\n if ($91e8650d526beecc$export$43bee75e5e14138e(a) && $91e8650d526beecc$export$43bee75e5e14138e(b)) {\n if (a.length !== b.length) return false;\n for(let i = 0; i < a.length; ++i){\n if (!$91e8650d526beecc$export$f2599a5cf1109d8(a[i], b[i])) return false;\n }\n return true;\n }\n return false;\n}\nfunction $91e8650d526beecc$export$33e486a830e586b3(epsilon, func) {\n const oldPrecision = $91e8650d526beecc$export$e506a1d27d1eaa20.EPSILON;\n $91e8650d526beecc$export$e506a1d27d1eaa20.EPSILON = epsilon;\n let value;\n try {\n value = func();\n } finally{\n $91e8650d526beecc$export$e506a1d27d1eaa20.EPSILON = oldPrecision;\n }\n return value;\n}\nfunction $91e8650d526beecc$var$round(value) {\n return Math.round(value / $91e8650d526beecc$export$e506a1d27d1eaa20.EPSILON) * $91e8650d526beecc$export$e506a1d27d1eaa20.EPSILON;\n}\nfunction $91e8650d526beecc$var$duplicateArray(array) {\n return array.clone ? array.clone() : new Array(array.length);\n}\nfunction $91e8650d526beecc$var$map(value, func, result) {\n if ($91e8650d526beecc$export$43bee75e5e14138e(value)) {\n const array = value;\n result = result || $91e8650d526beecc$var$duplicateArray(array);\n for(let i = 0; i < result.length && i < array.length; ++i)result[i] = func(value[i], i, result);\n return result;\n }\n return func(value);\n}\n\n});\nparcelRegister(\"8EkKL\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $64c2284d69da3066$export$2e2bcd8739ae039; });\nfunction $64c2284d69da3066$export$2e2bcd8739ae039(condition, message) {\n if (!condition) throw new Error(\"math.gl assertion \".concat(message));\n}\n\n});\n\n\n\nparcelRegister(\"j8wyT\", function(module, exports) {\n\n$parcel$export(module.exports, \"checkNumber\", function () { return $dee805c5bb536af4$export$74ff82ccb88f9fb1; });\n$parcel$export(module.exports, \"checkVector\", function () { return $dee805c5bb536af4$export$3eb62eb6ef90f888; });\n\nvar $cwF9s = parcelRequire(\"cwF9s\");\nfunction $dee805c5bb536af4$export$a1b6cd0c891cc7(v, length) {\n if (v.length !== length) return false;\n for(let i = 0; i < v.length; ++i){\n if (!Number.isFinite(v[i])) return false;\n }\n return true;\n}\nfunction $dee805c5bb536af4$export$74ff82ccb88f9fb1(value) {\n if (!Number.isFinite(value)) throw new Error(\"Invalid number \".concat(value));\n return value;\n}\nfunction $dee805c5bb536af4$export$3eb62eb6ef90f888(v, length, callerName = \"\") {\n if ((0, $cwF9s.config).debug && !$dee805c5bb536af4$export$a1b6cd0c891cc7(v, length)) throw new Error(\"math.gl: \".concat(callerName, \" some fields set to invalid numbers'\"));\n return v;\n}\nconst $dee805c5bb536af4$var$map = {};\nfunction $dee805c5bb536af4$export$cdd73fc4100a6ef4(method, version) {\n if (!$dee805c5bb536af4$var$map[method]) {\n $dee805c5bb536af4$var$map[method] = true;\n console.warn(\"\".concat(method, \" has been removed in version \").concat(version, \", see upgrade guide for more information\"));\n }\n}\n\n});\n\n\nparcelRegister(\"bjUmI\", function(module, exports) {\n\n$parcel$export(module.exports, \"create\", function () { return $83dd3109b127931b$export$185802fd694ee1f5; });\n$parcel$export(module.exports, \"length\", function () { return $83dd3109b127931b$export$f24224f1c91d8156; });\n$parcel$export(module.exports, \"fromValues\", function () { return $83dd3109b127931b$export$a82be99ed2a44a7d; });\n$parcel$export(module.exports, \"add\", function () { return $83dd3109b127931b$export$e16d8520af44a096; });\n$parcel$export(module.exports, \"negate\", function () { return $83dd3109b127931b$export$aef51622e549b8b0; });\n$parcel$export(module.exports, \"normalize\", function () { return $83dd3109b127931b$export$a3295358bff77e; });\n$parcel$export(module.exports, \"dot\", function () { return $83dd3109b127931b$export$94132a0e348806d4; });\n$parcel$export(module.exports, \"cross\", function () { return $83dd3109b127931b$export$bb646b20bb93d339; });\n$parcel$export(module.exports, \"transformMat4\", function () { return $83dd3109b127931b$export$5ffbd13800309d59; });\n$parcel$export(module.exports, \"transformMat3\", function () { return $83dd3109b127931b$export$f0bfa0a0024626ee; });\n$parcel$export(module.exports, \"transformQuat\", function () { return $83dd3109b127931b$export$c32adef9e939ce85; });\n$parcel$export(module.exports, \"rotateX\", function () { return $83dd3109b127931b$export$a59c8716592e09af; });\n$parcel$export(module.exports, \"rotateY\", function () { return $83dd3109b127931b$export$cf71e4d4ca4d1cfd; });\n$parcel$export(module.exports, \"rotateZ\", function () { return $83dd3109b127931b$export$ea6eae3365de5b9c; });\n$parcel$export(module.exports, \"angle\", function () { return $83dd3109b127931b$export$944b09d2ad10b378; });\n$parcel$export(module.exports, \"mul\", function () { return $83dd3109b127931b$export$6e3a27864ab166fe; });\n$parcel$export(module.exports, \"len\", function () { return $83dd3109b127931b$export$fc1400facf92c78; });\n\nvar $jbrKE = parcelRequire(\"jbrKE\");\nfunction $83dd3109b127931b$export$185802fd694ee1f5() {\n var out = new $jbrKE.ARRAY_TYPE(3);\n if ($jbrKE.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n return out;\n}\nfunction $83dd3109b127931b$export$9cd59f9826255e47(a) {\n var out = new $jbrKE.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\nfunction $83dd3109b127931b$export$f24224f1c91d8156(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\nfunction $83dd3109b127931b$export$a82be99ed2a44a7d(x, y, z) {\n var out = new $jbrKE.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\nfunction $83dd3109b127931b$export$784d13d8ee351f07(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\nfunction $83dd3109b127931b$export$adaa4cf7ef1b65be(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\nfunction $83dd3109b127931b$export$e16d8520af44a096(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\nfunction $83dd3109b127931b$export$4e2d2ead65e5f7e3(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\nfunction $83dd3109b127931b$export$2060d2db72cce88f(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\nfunction $83dd3109b127931b$export$cd007d971a5a2143(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\nfunction $83dd3109b127931b$export$803ce6b71a0a94b2(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\nfunction $83dd3109b127931b$export$a3fe094919f356fd(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\nfunction $83dd3109b127931b$export$96ec731ed4dcb222(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\nfunction $83dd3109b127931b$export$8960430cfd85939f(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\nfunction $83dd3109b127931b$export$2077e0241d6afd3c(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\nfunction $83dd3109b127931b$export$dcdf75081b88279d(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\nfunction $83dd3109b127931b$export$19cedf1da84ba854(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\nfunction $83dd3109b127931b$export$9f17032d917177de(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\nfunction $83dd3109b127931b$export$88e6ebb4fe54f538(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\nfunction $83dd3109b127931b$export$ab44e1323ffc8376(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\nfunction $83dd3109b127931b$export$aef51622e549b8b0(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\nfunction $83dd3109b127931b$export$70ae2c07e401031b(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\nfunction $83dd3109b127931b$export$a3295358bff77e(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n if (len > 0) //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\nfunction $83dd3109b127931b$export$94132a0e348806d4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\nfunction $83dd3109b127931b$export$bb646b20bb93d339(out, a, b) {\n var ax = a[0], ay = a[1], az = a[2];\n var bx = b[0], by = b[1], bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\nfunction $83dd3109b127931b$export$3a89f8d6f6bf6c9f(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\nfunction $83dd3109b127931b$export$ae8865616f30561c(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\nfunction $83dd3109b127931b$export$b9c5f84610baddaf(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\nfunction $83dd3109b127931b$export$4385e60b38654f68(out, scale) {\n scale = scale || 1.0;\n var r = $jbrKE.RANDOM() * 2.0 * Math.PI;\n var z = $jbrKE.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\nfunction $83dd3109b127931b$export$5ffbd13800309d59(out, a, m) {\n var x = a[0], y = a[1], z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\nfunction $83dd3109b127931b$export$f0bfa0a0024626ee(out, a, m) {\n var x = a[0], y = a[1], z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\nfunction $83dd3109b127931b$export$c32adef9e939ce85(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0], qy = q[1], qz = q[2], qw = q[3];\n var x = a[0], y = a[1], z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n var uvx = qy * z - qz * y, uvy = qz * x - qx * z, uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n var uuvx = qy * uvz - qz * uvy, uuvy = qz * uvx - qx * uvz, uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\nfunction $83dd3109b127931b$export$a59c8716592e09af(out, a, b, rad) {\n var p = [], r = []; //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\nfunction $83dd3109b127931b$export$cf71e4d4ca4d1cfd(out, a, b, rad) {\n var p = [], r = []; //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\nfunction $83dd3109b127931b$export$ea6eae3365de5b9c(out, a, b, rad) {\n var p = [], r = []; //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\nfunction $83dd3109b127931b$export$944b09d2ad10b378(a, b) {\n var ax = a[0], ay = a[1], az = a[2], bx = b[0], by = b[1], bz = b[2], mag1 = Math.sqrt(ax * ax + ay * ay + az * az), mag2 = Math.sqrt(bx * bx + by * by + bz * bz), mag = mag1 * mag2, cosine = mag && $83dd3109b127931b$export$94132a0e348806d4(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\nfunction $83dd3109b127931b$export$7f9972325ebfd559(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\nfunction $83dd3109b127931b$export$42d51816ce590c93(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\nfunction $83dd3109b127931b$export$f2599a5cf1109d8(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\nfunction $83dd3109b127931b$export$e9bab7fafb253603(a, b) {\n var a0 = a[0], a1 = a[1], a2 = a[2];\n var b0 = b[0], b1 = b[1], b2 = b[2];\n return Math.abs(a0 - b0) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\nvar $83dd3109b127931b$export$f93b5905241a7cca = $83dd3109b127931b$export$4e2d2ead65e5f7e3;\nvar $83dd3109b127931b$export$6e3a27864ab166fe = $83dd3109b127931b$export$2060d2db72cce88f;\nvar $83dd3109b127931b$export$159d9494db57879b = $83dd3109b127931b$export$cd007d971a5a2143;\nvar $83dd3109b127931b$export$6c4a311cc157c764 = $83dd3109b127931b$export$9f17032d917177de;\nvar $83dd3109b127931b$export$2422cd6c492a8b3a = $83dd3109b127931b$export$88e6ebb4fe54f538;\nvar $83dd3109b127931b$export$fc1400facf92c78 = $83dd3109b127931b$export$f24224f1c91d8156;\nvar $83dd3109b127931b$export$99d8dd3f32a3435 = $83dd3109b127931b$export$ab44e1323ffc8376;\nvar $83dd3109b127931b$export$4b80e395e36b5a56 = function() {\n var vec = $83dd3109b127931b$export$185802fd694ee1f5();\n return function(a, stride, offset, count, fn, arg) {\n var i, l;\n if (!stride) stride = 3;\n if (!offset) offset = 0;\n if (count) l = Math.min(count * stride + offset, a.length);\n else l = a.length;\n for(i = offset; i < l; i += stride){\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n return a;\n };\n}();\n\n});\nparcelRegister(\"jbrKE\", function(module, exports) {\n\n$parcel$export(module.exports, \"EPSILON\", function () { return $df7492408be082e2$export$fd293b15f47e270; });\n$parcel$export(module.exports, \"ARRAY_TYPE\", function () { return $df7492408be082e2$export$b67359430d3b1b2; });\n$parcel$export(module.exports, \"RANDOM\", function () { return $df7492408be082e2$export$5ada478c8a628231; });\n/**\n * Common utilities\n * @module glMatrix\n */ // Configuration Constants\nvar $df7492408be082e2$export$fd293b15f47e270 = 0.000001;\nvar $df7492408be082e2$export$b67359430d3b1b2 = typeof Float32Array !== \"undefined\" ? Float32Array : Array;\nvar $df7492408be082e2$export$5ada478c8a628231 = Math.random;\nfunction $df7492408be082e2$export$cb2c0eb57f5e532c(type) {\n $df7492408be082e2$export$b67359430d3b1b2 = type;\n}\nvar $df7492408be082e2$var$degree = Math.PI / 180;\nfunction $df7492408be082e2$export$408b8ee5959eefd5(a) {\n return a * $df7492408be082e2$var$degree;\n}\nfunction $df7492408be082e2$export$e9bab7fafb253603(a, b) {\n return Math.abs(a - b) <= $df7492408be082e2$export$fd293b15f47e270 * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function() {\n var y = 0, i = arguments.length;\n while(i--)y += arguments[i] * arguments[i];\n return Math.sqrt(y);\n};\n\n});\n\n\nparcelRegister(\"idCXM\", function(module, exports) {\n\n$parcel$export(module.exports, \"vec2_transformMat4AsVector\", function () { return $036c40ae3447f164$export$9c22d6d462b57a6c; });\n$parcel$export(module.exports, \"vec3_transformMat4AsVector\", function () { return $036c40ae3447f164$export$df62a5cc0f49271; });\n$parcel$export(module.exports, \"vec3_transformMat2\", function () { return $036c40ae3447f164$export$1287c03b2c6fb6a5; });\n$parcel$export(module.exports, \"vec4_transformMat2\", function () { return $036c40ae3447f164$export$808cc2c9e882a204; });\n$parcel$export(module.exports, \"vec4_transformMat3\", function () { return $036c40ae3447f164$export$bfe7f279eafb7f9b; });\nfunction $036c40ae3447f164$export$9c22d6d462b57a6c(out, a, m) {\n const x = a[0];\n const y = a[1];\n const w = m[3] * x + m[7] * y || 1.0;\n out[0] = (m[0] * x + m[4] * y) / w;\n out[1] = (m[1] * x + m[5] * y) / w;\n return out;\n}\nfunction $036c40ae3447f164$export$df62a5cc0f49271(out, a, m) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n const w = m[3] * x + m[7] * y + m[11] * z || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z) / w;\n return out;\n}\nfunction $036c40ae3447f164$export$1287c03b2c6fb6a5(out, a, m) {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n out[2] = a[2];\n return out;\n}\nfunction $036c40ae3447f164$export$808cc2c9e882a204(out, a, m) {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\nfunction $036c40ae3447f164$export$bfe7f279eafb7f9b(out, a, m) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n out[0] = m[0] * x + m[3] * y + m[6] * z;\n out[1] = m[1] * x + m[4] * y + m[7] * z;\n out[2] = m[2] * x + m[5] * y + m[8] * z;\n out[3] = a[3];\n return out;\n}\n\n});\n\n\n\n\nparcelRegister(\"hu5l6\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $cba9614a3f193089$export$2e2bcd8739ae039; });\nfunction $cba9614a3f193089$export$2e2bcd8739ae039(condition, message) {\n if (!condition) throw new Error(message || \"deck.gl: assertion failed.\");\n}\n\n});\n\nparcelRegister(\"abpME\", function(module, exports) {\n\n$parcel$export(module.exports, \"createIterable\", function () { return $769eee9651aeb164$export$f9c2f07d6e2a6221; });\n$parcel$export(module.exports, \"isAsyncIterable\", function () { return $769eee9651aeb164$export$edb10ab8dd75a915; });\n$parcel$export(module.exports, \"getAccessorFromBuffer\", function () { return $769eee9651aeb164$export$9c57eba05c1e4d4; });\nconst $769eee9651aeb164$var$EMPTY_ARRAY = [];\nconst $769eee9651aeb164$var$placeholderArray = [];\nfunction $769eee9651aeb164$export$f9c2f07d6e2a6221(data, startRow = 0, endRow = Infinity) {\n let iterable = $769eee9651aeb164$var$EMPTY_ARRAY;\n const objectInfo = {\n index: -1,\n data: data,\n target: []\n };\n if (!data) iterable = $769eee9651aeb164$var$EMPTY_ARRAY;\n else if (typeof data[Symbol.iterator] === \"function\") iterable = data;\n else if (data.length > 0) {\n $769eee9651aeb164$var$placeholderArray.length = data.length;\n iterable = $769eee9651aeb164$var$placeholderArray;\n }\n if (startRow > 0 || Number.isFinite(endRow)) {\n iterable = (Array.isArray(iterable) ? iterable : Array.from(iterable)).slice(startRow, endRow);\n objectInfo.index = startRow - 1;\n }\n return {\n iterable: iterable,\n objectInfo: objectInfo\n };\n}\nfunction $769eee9651aeb164$export$edb10ab8dd75a915(data) {\n return data && data[Symbol.asyncIterator];\n}\nfunction $769eee9651aeb164$export$9c57eba05c1e4d4(typedArray, options) {\n const { size: size, stride: stride, offset: offset, startIndices: startIndices, nested: nested } = options;\n const bytesPerElement = typedArray.BYTES_PER_ELEMENT;\n const elementStride = stride ? stride / bytesPerElement : size;\n const elementOffset = offset ? offset / bytesPerElement : 0;\n const vertexCount = Math.floor((typedArray.length - elementOffset) / elementStride);\n return (_, { index: index, target: target })=>{\n if (!startIndices) {\n const sourceIndex = index * elementStride + elementOffset;\n for(let j = 0; j < size; j++)target[j] = typedArray[sourceIndex + j];\n return target;\n }\n const startIndex = startIndices[index];\n const endIndex = startIndices[index + 1] || vertexCount;\n let result;\n if (nested) {\n result = new Array(endIndex - startIndex);\n for(let i = startIndex; i < endIndex; i++){\n const sourceIndex = i * elementStride + elementOffset;\n target = new Array(size);\n for(let j = 0; j < size; j++)target[j] = typedArray[sourceIndex + j];\n result[i - startIndex] = target;\n }\n } else if (elementStride === size) result = typedArray.subarray(startIndex * size + elementOffset, endIndex * size + elementOffset);\n else {\n result = new typedArray.constructor((endIndex - startIndex) * size);\n let targetIndex = 0;\n for(let i = startIndex; i < endIndex; i++){\n const sourceIndex = i * elementStride + elementOffset;\n for(let j = 0; j < size; j++)result[targetIndex++] = typedArray[sourceIndex + j];\n }\n }\n return result;\n };\n}\n\n});\n\nparcelRegister(\"ivBeX\", function(module, exports) {\n\n$parcel$export(module.exports, \"flatten\", function () { return $d798026641f8fd5c$export$bffa455ba8c619a6; });\n$parcel$export(module.exports, \"fillArray\", function () { return $d798026641f8fd5c$export$57295b69bf9c5d15; });\nfunction $d798026641f8fd5c$export$bffa455ba8c619a6(array, filter = ()=>true) {\n if (!Array.isArray(array)) return filter(array) ? [\n array\n ] : [];\n return $d798026641f8fd5c$var$flattenArray(array, filter, []);\n}\nfunction $d798026641f8fd5c$var$flattenArray(array, filter, result) {\n let index = -1;\n while(++index < array.length){\n const value = array[index];\n if (Array.isArray(value)) $d798026641f8fd5c$var$flattenArray(value, filter, result);\n else if (filter(value)) result.push(value);\n }\n return result;\n}\nfunction $d798026641f8fd5c$export$57295b69bf9c5d15({ target: target, source: source, start: start = 0, count: count = 1 }) {\n const length = source.length;\n const total = count * length;\n let copied = 0;\n for(let i = start; copied < length; copied++)target[i++] = source[copied];\n while(copied < total)if (copied < total - copied) {\n target.copyWithin(start + copied, start, start + copied);\n copied *= 2;\n } else {\n target.copyWithin(start + copied, start, start + total - copied);\n copied = total;\n }\n return target;\n}\n\n});\n\nparcelRegister(\"gZkNz\", function(module, exports) {\n\n$parcel$export(module.exports, \"EMPTY\", function () { return $c5e279fef72ada14$export$ccb33e29d92c9a58; });\n$parcel$export(module.exports, \"FULL\", function () { return $c5e279fef72ada14$export$3789e4b2a10baa2b; });\n$parcel$export(module.exports, \"add\", function () { return $c5e279fef72ada14$export$e16d8520af44a096; });\nconst $c5e279fef72ada14$export$ccb33e29d92c9a58 = [];\nconst $c5e279fef72ada14$export$3789e4b2a10baa2b = [\n [\n 0,\n Infinity\n ]\n];\nfunction $c5e279fef72ada14$export$e16d8520af44a096(rangeList, range) {\n if (rangeList === $c5e279fef72ada14$export$3789e4b2a10baa2b) return rangeList;\n if (range[0] < 0) range[0] = 0;\n if (range[0] >= range[1]) return rangeList;\n const newRangeList = [];\n const len = rangeList.length;\n let insertPosition = 0;\n for(let i = 0; i < len; i++){\n const range0 = rangeList[i];\n if (range0[1] < range[0]) {\n newRangeList.push(range0);\n insertPosition = i + 1;\n } else if (range0[0] > range[1]) newRangeList.push(range0);\n else range = [\n Math.min(range0[0], range[0]),\n Math.max(range0[1], range[1])\n ];\n }\n newRangeList.splice(insertPosition, 0, range);\n return newRangeList;\n}\n\n});\n\nparcelRegister(\"5YQrt\", function(module, exports) {\n\n$parcel$export(module.exports, \"normalizeTransitionSettings\", function () { return $45ab3c4309e9afdc$export$47e87a95cf522e8c; });\n$parcel$export(module.exports, \"getSourceBufferAttribute\", function () { return $45ab3c4309e9afdc$export$f3e2a32ee07ef92d; });\n$parcel$export(module.exports, \"getAttributeTypeFromSize\", function () { return $45ab3c4309e9afdc$export$4f893656e30128e9; });\n$parcel$export(module.exports, \"cycleBuffers\", function () { return $45ab3c4309e9afdc$export$1dcce42e2b71f528; });\n$parcel$export(module.exports, \"getAttributeBufferLength\", function () { return $45ab3c4309e9afdc$export$bd45d69169402c18; });\n$parcel$export(module.exports, \"padBuffer\", function () { return $45ab3c4309e9afdc$export$28f1d2df7aaab3dd; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $kMV74 = parcelRequire(\"kMV74\");\nconst $45ab3c4309e9afdc$var$DEFAULT_TRANSITION_SETTINGS = {\n interpolation: {\n duration: 0,\n easing: (t)=>t\n },\n spring: {\n stiffness: 0.05,\n damping: 0.5\n }\n};\nfunction $45ab3c4309e9afdc$export$47e87a95cf522e8c(userSettings, layerSettings) {\n if (!userSettings) return null;\n if (Number.isFinite(userSettings)) userSettings = {\n type: \"interpolation\",\n duration: userSettings\n };\n const type = userSettings.type || \"interpolation\";\n return (0, $edHbI._)((0, $2QP2i._)({}, $45ab3c4309e9afdc$var$DEFAULT_TRANSITION_SETTINGS[type], layerSettings, userSettings), {\n type: type\n });\n}\nfunction $45ab3c4309e9afdc$export$f3e2a32ee07ef92d(gl, attribute) {\n const buffer = attribute.getBuffer();\n if (buffer) return [\n buffer,\n {\n divisor: 0,\n size: attribute.size,\n normalized: attribute.settings.normalized\n }\n ];\n return attribute.value;\n}\nfunction $45ab3c4309e9afdc$export$4f893656e30128e9(size) {\n switch(size){\n case 1:\n return \"float\";\n case 2:\n return \"vec2\";\n case 3:\n return \"vec3\";\n case 4:\n return \"vec4\";\n default:\n throw new Error('No defined attribute type for size \"'.concat(size, '\"'));\n }\n}\nfunction $45ab3c4309e9afdc$export$1dcce42e2b71f528(buffers) {\n buffers.push(buffers.shift());\n}\nfunction $45ab3c4309e9afdc$export$bd45d69169402c18(attribute, numInstances) {\n const { doublePrecision: doublePrecision, settings: settings, value: value, size: size } = attribute;\n const multiplier = doublePrecision && value instanceof Float64Array ? 2 : 1;\n return (settings.noAlloc ? value.length : numInstances * size) * multiplier;\n}\nfunction $45ab3c4309e9afdc$export$28f1d2df7aaab3dd({ buffer: buffer, numInstances: numInstances, attribute: attribute, fromLength: fromLength, fromStartIndices: fromStartIndices, getData: getData = (x)=>x }) {\n const precisionMultiplier = attribute.doublePrecision && attribute.value instanceof Float64Array ? 2 : 1;\n const size = attribute.size * precisionMultiplier;\n const byteOffset = attribute.byteOffset;\n const toStartIndices = attribute.startIndices;\n const hasStartIndices = fromStartIndices && toStartIndices;\n const toLength = $45ab3c4309e9afdc$export$bd45d69169402c18(attribute, numInstances);\n const isConstant = attribute.isConstant;\n if (!hasStartIndices && fromLength >= toLength) return;\n const toData = isConstant ? attribute.value : attribute.getBuffer().getData({\n srcByteOffset: byteOffset\n });\n if (attribute.settings.normalized && !isConstant) {\n const getter = getData;\n getData = (value, chunk)=>attribute.normalizeConstant(getter(value, chunk));\n }\n const getMissingData = isConstant ? (i, chunk)=>getData(toData, chunk) : (i, chunk)=>getData(toData.subarray(i, i + size), chunk);\n const source = buffer.getData({\n length: fromLength\n });\n const data = new Float32Array(toLength);\n (0, $kMV74.padArray)({\n source: source,\n target: data,\n sourceStartIndices: fromStartIndices,\n targetStartIndices: toStartIndices,\n size: size,\n getData: getMissingData\n });\n if (buffer.byteLength < data.byteLength + byteOffset) buffer.reallocate(data.byteLength + byteOffset);\n buffer.subData({\n data: data,\n offset: byteOffset\n });\n}\n\n});\nparcelRegister(\"kMV74\", function(module, exports) {\n\n$parcel$export(module.exports, \"padArray\", function () { return $f22497d3f23167c1$export$6735fc2994e30dd0; });\nfunction $f22497d3f23167c1$var$padArrayChunk(options) {\n const { source: source, target: target, start: start = 0, size: size, getData: getData } = options;\n const end = options.end || target.length;\n const sourceLength = source.length;\n const targetLength = end - start;\n if (sourceLength > targetLength) {\n target.set(source.subarray(0, targetLength), start);\n return;\n }\n target.set(source, start);\n if (!getData) return;\n let i = sourceLength;\n while(i < targetLength){\n const datum = getData(i, source);\n for(let j = 0; j < size; j++){\n target[start + i] = datum[j] || 0;\n i++;\n }\n }\n}\nfunction $f22497d3f23167c1$export$6735fc2994e30dd0({ source: source, target: target, size: size, getData: getData, sourceStartIndices: sourceStartIndices, targetStartIndices: targetStartIndices }) {\n if (!Array.isArray(targetStartIndices)) {\n $f22497d3f23167c1$var$padArrayChunk({\n source: source,\n target: target,\n size: size,\n getData: getData\n });\n return target;\n }\n let sourceIndex = 0;\n let targetIndex = 0;\n const getChunkData = getData && ((i, chunk)=>getData(i + targetIndex, chunk));\n const n = Math.min(sourceStartIndices.length, targetStartIndices.length);\n for(let i = 1; i < n; i++){\n const nextSourceIndex = sourceStartIndices[i] * size;\n const nextTargetIndex = targetStartIndices[i] * size;\n $f22497d3f23167c1$var$padArrayChunk({\n source: source.subarray(sourceIndex, nextSourceIndex),\n target: target,\n start: targetIndex,\n end: nextTargetIndex,\n size: size,\n getData: getChunkData\n });\n sourceIndex = nextSourceIndex;\n targetIndex = nextTargetIndex;\n }\n if (targetIndex < target.length) $f22497d3f23167c1$var$padArrayChunk({\n source: [],\n target: target,\n start: targetIndex,\n size: size,\n getData: getChunkData\n });\n return target;\n}\n\n});\n\n\n\nparcelRegister(\"b9Qhn\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $81f916889e64be5f$export$2e2bcd8739ae039; });\nfunction $81f916889e64be5f$var$isEqual(a, b) {\n if (a === b) return true;\n if (Array.isArray(a)) {\n const len = a.length;\n if (!b || b.length !== len) return false;\n for(let i = 0; i < len; i++){\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n return false;\n}\nfunction $81f916889e64be5f$export$2e2bcd8739ae039(compute) {\n let cachedArgs = {};\n let cachedResult;\n return (args)=>{\n for(const key in args)if (!$81f916889e64be5f$var$isEqual(args[key], cachedArgs[key])) {\n cachedResult = compute(args);\n cachedArgs = args;\n break;\n }\n return cachedResult;\n };\n}\n\n});\n\nparcelRegister(\"bwVEZ\", function(module, exports) {\n\n$parcel$export(module.exports, \"register\", function () { return $864f68f6f4184a28$export$6503ec6e8aabbaf; });\n$parcel$export(module.exports, \"default\", function () { return $864f68f6f4184a28$export$2e2bcd8739ae039; });\n\nvar $4VQgq = parcelRequire(\"4VQgq\");\n\nlet $864f68f6f4184a28$var$loggers = {};\nfunction $864f68f6f4184a28$export$6503ec6e8aabbaf(handlers) {\n $864f68f6f4184a28$var$loggers = handlers;\n}\nfunction $864f68f6f4184a28$export$2e2bcd8739ae039(eventType, arg1, arg2, arg3) {\n if ((0, $4VQgq.default).level > 0 && $864f68f6f4184a28$var$loggers[eventType]) $864f68f6f4184a28$var$loggers[eventType].call(null, arg1, arg2, arg3);\n}\n\n});\n\nparcelRegister(\"9FKfW\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $70abd2e4c8fe280c$export$2e2bcd8739ae039; });\n\nvar $1zR3q = parcelRequire(\"1zR3q\");\n\nvar $bn48C = parcelRequire(\"bn48C\");\n\nvar $9P91Q = parcelRequire(\"9P91Q\");\n\nvar $9qj3Q = parcelRequire(\"9qj3Q\");\n\nvar $4VQgq = parcelRequire(\"4VQgq\");\nconst $70abd2e4c8fe280c$var$TRANSITION_TYPES = {\n interpolation: (0, $9P91Q.default),\n spring: (0, $9qj3Q.default)\n};\nclass $70abd2e4c8fe280c$export$2e2bcd8739ae039 {\n finalize() {\n for(const attributeName in this.transitions)this._removeTransition(attributeName);\n }\n update({ attributes: attributes, transitions: transitions, numInstances: numInstances }) {\n this.numInstances = numInstances || 1;\n for(const attributeName in attributes){\n const attribute = attributes[attributeName];\n const settings = attribute.getTransitionSetting(transitions);\n if (!settings) continue;\n this._updateAttribute(attributeName, attribute, settings);\n }\n for(const attributeName in this.transitions){\n const attribute = attributes[attributeName];\n if (!attribute || !attribute.getTransitionSetting(transitions)) this._removeTransition(attributeName);\n }\n }\n hasAttribute(attributeName) {\n const transition = this.transitions[attributeName];\n return transition && transition.inProgress;\n }\n getAttributes() {\n const animatedAttributes = {};\n for(const attributeName in this.transitions){\n const transition = this.transitions[attributeName];\n if (transition.inProgress) animatedAttributes[attributeName] = transition.attributeInTransition;\n }\n return animatedAttributes;\n }\n run() {\n if (!this.isSupported || this.numInstances === 0) return false;\n for(const attributeName in this.transitions){\n const updated = this.transitions[attributeName].update();\n if (updated) this.needsRedraw = true;\n }\n const needsRedraw = this.needsRedraw;\n this.needsRedraw = false;\n return needsRedraw;\n }\n _removeTransition(attributeName) {\n this.transitions[attributeName].cancel();\n delete this.transitions[attributeName];\n }\n _updateAttribute(attributeName, attribute, settings) {\n const transition = this.transitions[attributeName];\n let isNew = !transition || transition.type !== settings.type;\n if (isNew) {\n if (!this.isSupported) {\n (0, $4VQgq.default).warn(\"WebGL2 not supported by this browser. Transition for \".concat(attributeName, \" is disabled.\"))();\n return;\n }\n if (transition) this._removeTransition(attributeName);\n const TransitionType = $70abd2e4c8fe280c$var$TRANSITION_TYPES[settings.type];\n if (TransitionType) this.transitions[attributeName] = new TransitionType({\n attribute: attribute,\n timeline: this.timeline,\n gl: this.gl\n });\n else {\n (0, $4VQgq.default).error(\"unsupported transition type '\".concat(settings.type, \"'\"))();\n isNew = false;\n }\n }\n if (isNew || attribute.needsRedraw()) {\n this.needsRedraw = true;\n this.transitions[attributeName].start(settings, this.numInstances);\n }\n }\n constructor(gl, { id: id, timeline: timeline }){\n (0, $1zR3q.default)(this, \"id\", void 0);\n (0, $1zR3q.default)(this, \"isSupported\", void 0);\n (0, $1zR3q.default)(this, \"gl\", void 0);\n (0, $1zR3q.default)(this, \"timeline\", void 0);\n (0, $1zR3q.default)(this, \"transitions\", void 0);\n (0, $1zR3q.default)(this, \"needsRedraw\", void 0);\n (0, $1zR3q.default)(this, \"numInstances\", void 0);\n this.id = id;\n this.gl = gl;\n this.timeline = timeline;\n this.transitions = {};\n this.needsRedraw = false;\n this.numInstances = 1;\n this.isSupported = (0, $bn48C.default).isSupported(gl);\n }\n}\n\n});\nparcelRegister(\"bn48C\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $84750d6b2adee031$export$2e2bcd8739ae039; });\n\nvar $1KKN0 = parcelRequire(\"1KKN0\");\n\nvar $auNO8 = parcelRequire(\"auNO8\");\n\nvar $lX8C6 = parcelRequire(\"lX8C6\");\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\nvar $6JLAh = parcelRequire(\"6JLAh\");\nvar $iljOc = parcelRequire(\"iljOc\");\n\nvar $b2F4S = parcelRequire(\"b2F4S\");\nclass $84750d6b2adee031$export$2e2bcd8739ae039 {\n static isSupported(gl) {\n return (0, $8HKWo.isWebGL2)(gl);\n }\n delete() {\n const { model: model, bufferTransform: bufferTransform, textureTransform: textureTransform } = this;\n if (model) model.delete();\n if (bufferTransform) bufferTransform.delete();\n if (textureTransform) textureTransform.delete();\n }\n run() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { clearRenderTarget: clearRenderTarget = true } = opts;\n const updatedOpts = this._updateDrawOptions(opts);\n if (clearRenderTarget && updatedOpts.framebuffer) updatedOpts.framebuffer.clear({\n color: true\n });\n this.model.transform(updatedOpts);\n }\n swap() {\n let swapped = false;\n const resourceTransforms = [\n this.bufferTransform,\n this.textureTransform\n ].filter(Boolean);\n for (const resourceTransform of resourceTransforms)swapped = swapped || resourceTransform.swap();\n (0, $ihfnu.assert)(swapped, \"Nothing to swap\");\n }\n getBuffer() {\n let varyingName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n return this.bufferTransform && this.bufferTransform.getBuffer(varyingName);\n }\n getData() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const resourceTransforms = [\n this.bufferTransform,\n this.textureTransform\n ].filter(Boolean);\n for (const resourceTransform of resourceTransforms){\n const data = resourceTransform.getData(opts);\n if (data) return data;\n }\n return null;\n }\n getFramebuffer() {\n return this.textureTransform && this.textureTransform.getFramebuffer();\n }\n update() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (\"elementCount\" in opts) this.model.setVertexCount(opts.elementCount);\n const resourceTransforms = [\n this.bufferTransform,\n this.textureTransform\n ].filter(Boolean);\n for (const resourceTransform of resourceTransforms)resourceTransform.update(opts);\n }\n _initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { gl: gl } = this;\n this._buildResourceTransforms(gl, props);\n props = this._updateModelProps(props);\n this.model = new (0, $b2F4S.default)(gl, Object.assign({}, props, {\n fs: props.fs || (0, $1KKN0.getPassthroughFS)({\n version: (0, $6JLAh.default)(props.vs)\n }),\n id: props.id || \"transform-model\",\n drawMode: props.drawMode || 0,\n vertexCount: props.elementCount\n }));\n this.bufferTransform && this.bufferTransform.setupResources({\n model: this.model\n });\n }\n _updateModelProps(props) {\n let updatedProps = Object.assign({}, props);\n const resourceTransforms = [\n this.bufferTransform,\n this.textureTransform\n ].filter(Boolean);\n for (const resourceTransform of resourceTransforms)updatedProps = resourceTransform.updateModelProps(updatedProps);\n return updatedProps;\n }\n _buildResourceTransforms(gl, props) {\n if ($84750d6b2adee031$var$canCreateBufferTransform(props)) this.bufferTransform = new (0, $auNO8.default)(gl, props);\n if ($84750d6b2adee031$var$canCreateTextureTransform(props)) this.textureTransform = new (0, $lX8C6.default)(gl, props);\n (0, $ihfnu.assert)(this.bufferTransform || this.textureTransform, \"must provide source/feedback buffers or source/target textures\");\n }\n _updateDrawOptions(opts) {\n let updatedOpts = Object.assign({}, opts);\n const resourceTransforms = [\n this.bufferTransform,\n this.textureTransform\n ].filter(Boolean);\n for (const resourceTransform of resourceTransforms)updatedOpts = Object.assign(updatedOpts, resourceTransform.getDrawOptions(updatedOpts));\n return updatedOpts;\n }\n constructor(gl){\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.gl = gl;\n this.model = null;\n this.elementCount = 0;\n this.bufferTransform = null;\n this.textureTransform = null;\n this.elementIDBuffer = null;\n this._initialize(props);\n Object.seal(this);\n }\n}\nfunction $84750d6b2adee031$var$canCreateBufferTransform(props) {\n if (!(0, $iljOc.isObjectEmpty)(props.feedbackBuffers) || !(0, $iljOc.isObjectEmpty)(props.feedbackMap) || props.varyings && props.varyings.length > 0) return true;\n return false;\n}\nfunction $84750d6b2adee031$var$canCreateTextureTransform(props) {\n if (!(0, $iljOc.isObjectEmpty)(props._sourceTextures) || props._targetTexture || props._targetTextureVarying) return true;\n return false;\n}\n\n});\nparcelRegister(\"1KKN0\", function(module, exports) {\n\n$parcel$export(module.exports, \"getQualifierDetails\", function () { return $146e61b494399b02$export$ca11e09347dd6309; });\n$parcel$export(module.exports, \"getPassthroughFS\", function () { return $146e61b494399b02$export$523a4d4d9f32ef9e; });\n$parcel$export(module.exports, \"typeToChannelSuffix\", function () { return $146e61b494399b02$export$7c9d09032d11b05d; });\n$parcel$export(module.exports, \"typeToChannelCount\", function () { return $146e61b494399b02$export$7d9650494fc7500d; });\n\nvar $8xCEr = parcelRequire(\"8xCEr\");\nconst $146e61b494399b02$var$FS100 = \"void main() {gl_FragColor = vec4(0);}\";\nconst $146e61b494399b02$var$FS_GLES = \"out vec4 transform_output;\\nvoid main() {\\n transform_output = vec4(0);\\n}\";\nconst $146e61b494399b02$var$FS300 = \"#version 300 es\\n\".concat($146e61b494399b02$var$FS_GLES);\nfunction $146e61b494399b02$export$ca11e09347dd6309(line, qualifiers) {\n qualifiers = Array.isArray(qualifiers) ? qualifiers : [\n qualifiers\n ];\n const words = line.replace(/^\\s+/, \"\").split(/\\s+/);\n const [qualifier, type, definition] = words;\n if (!qualifiers.includes(qualifier) || !type || !definition) return null;\n const name = definition.split(\";\")[0];\n return {\n qualifier: qualifier,\n type: type,\n name: name\n };\n}\nfunction $146e61b494399b02$export$523a4d4d9f32ef9e() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { version: version = 100, input: input, inputType: inputType, output: output } = options;\n if (!input) {\n if (version === 300) return $146e61b494399b02$var$FS300;\n else if (version > 300) return \"#version \".concat(version, \"\\n\").concat($146e61b494399b02$var$FS_GLES);\n return $146e61b494399b02$var$FS100;\n }\n const outputValue = $146e61b494399b02$export$5616b9a44ef98392(input, inputType);\n if (version >= 300) return \"#version \".concat(version, \" \").concat(version === 300 ? \"es\" : \"\", \"\\nin \").concat(inputType, \" \").concat(input, \";\\nout vec4 \").concat(output, \";\\nvoid main() {\\n \").concat(output, \" = \").concat(outputValue, \";\\n}\");\n return \"varying \".concat(inputType, \" \").concat(input, \";\\nvoid main() {\\n gl_FragColor = \").concat(outputValue, \";\\n}\");\n}\nfunction $146e61b494399b02$export$7c9d09032d11b05d(type) {\n switch(type){\n case \"float\":\n return \"x\";\n case \"vec2\":\n return \"xy\";\n case \"vec3\":\n return \"xyz\";\n case \"vec4\":\n return \"xyzw\";\n default:\n (0, $8xCEr.default)(false);\n return null;\n }\n}\nfunction $146e61b494399b02$export$7d9650494fc7500d(type) {\n switch(type){\n case \"float\":\n return 1;\n case \"vec2\":\n return 2;\n case \"vec3\":\n return 3;\n case \"vec4\":\n return 4;\n default:\n (0, $8xCEr.default)(false);\n return null;\n }\n}\nfunction $146e61b494399b02$export$5616b9a44ef98392(variable, type) {\n switch(type){\n case \"float\":\n return \"vec4(\".concat(variable, \", 0.0, 0.0, 1.0)\");\n case \"vec2\":\n return \"vec4(\".concat(variable, \", 0.0, 1.0)\");\n case \"vec3\":\n return \"vec4(\".concat(variable, \", 1.0)\");\n case \"vec4\":\n return variable;\n default:\n (0, $8xCEr.default)(false);\n return null;\n }\n}\n\n});\nparcelRegister(\"8xCEr\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $637f63276c09f9d1$export$2e2bcd8739ae039; });\nfunction $637f63276c09f9d1$export$2e2bcd8739ae039(condition, message) {\n if (!condition) throw new Error(message || \"shadertools: assertion failed.\");\n}\n\n});\n\n\nparcelRegister(\"auNO8\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $7a43577758043528$export$2e2bcd8739ae039; });\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\nvar $7jraD = parcelRequire(\"7jraD\");\nvar $9NVBT = parcelRequire(\"9NVBT\");\nclass $7a43577758043528$export$2e2bcd8739ae039 {\n setupResources(opts) {\n for (const binding of this.bindings)this._setupTransformFeedback(binding, opts);\n }\n updateModelProps() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { varyings: varyings } = this;\n if (varyings.length > 0) props = Object.assign({}, props, {\n varyings: varyings\n });\n return props;\n }\n getDrawOptions() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const binding = this.bindings[this.currentIndex];\n const { sourceBuffers: sourceBuffers, transformFeedback: transformFeedback } = binding;\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n return {\n attributes: attributes,\n transformFeedback: transformFeedback\n };\n }\n swap() {\n if (this.feedbackMap) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n update() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this._setupBuffers(opts);\n }\n getBuffer(varyingName) {\n const { feedbackBuffers: feedbackBuffers } = this.bindings[this.currentIndex];\n const bufferOrParams = varyingName ? feedbackBuffers[varyingName] : null;\n if (!bufferOrParams) return null;\n return bufferOrParams instanceof (0, $7jraD.default) ? bufferOrParams : bufferOrParams.buffer;\n }\n getData() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { varyingName: varyingName } = options;\n const buffer = this.getBuffer(varyingName);\n if (buffer) return buffer.getData();\n return null;\n }\n delete() {\n for(const name in this.resources)this.resources[name].delete();\n }\n _initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this._setupBuffers(props);\n this.varyings = props.varyings || Object.keys(this.bindings[this.currentIndex].feedbackBuffers);\n if (this.varyings.length > 0) (0, $ihfnu.assert)((0, $8HKWo.isWebGL2)(this.gl));\n }\n _getFeedbackBuffers(props) {\n const { sourceBuffers: sourceBuffers = {} } = props;\n const feedbackBuffers = {};\n if (this.bindings[this.currentIndex]) Object.assign(feedbackBuffers, this.bindings[this.currentIndex].feedbackBuffers);\n if (this.feedbackMap) for(const sourceName in this.feedbackMap){\n const feedbackName = this.feedbackMap[sourceName];\n if (sourceName in sourceBuffers) feedbackBuffers[feedbackName] = sourceName;\n }\n Object.assign(feedbackBuffers, props.feedbackBuffers);\n for(const bufferName in feedbackBuffers){\n const bufferOrRef = feedbackBuffers[bufferName];\n if (typeof bufferOrRef === \"string\") {\n const sourceBuffer = sourceBuffers[bufferOrRef];\n const { byteLength: byteLength, usage: usage, accessor: accessor } = sourceBuffer;\n feedbackBuffers[bufferName] = this._createNewBuffer(bufferName, {\n byteLength: byteLength,\n usage: usage,\n accessor: accessor\n });\n }\n }\n return feedbackBuffers;\n }\n _setupBuffers() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { sourceBuffers: sourceBuffers = null } = props;\n Object.assign(this.feedbackMap, props.feedbackMap);\n const feedbackBuffers = this._getFeedbackBuffers(props);\n this._updateBindings({\n sourceBuffers: sourceBuffers,\n feedbackBuffers: feedbackBuffers\n });\n }\n _setupTransformFeedback(binding, _ref) {\n let { model: model } = _ref;\n const { program: program } = model;\n binding.transformFeedback = new (0, $9NVBT.default)(this.gl, {\n program: program,\n buffers: binding.feedbackBuffers\n });\n }\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this.feedbackMap) {\n const { sourceBuffers: sourceBuffers, feedbackBuffers: feedbackBuffers } = this._swapBuffers(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceBuffers: sourceBuffers,\n feedbackBuffers: feedbackBuffers\n });\n }\n }\n _updateBinding(binding, opts) {\n if (!binding) return {\n sourceBuffers: Object.assign({}, opts.sourceBuffers),\n feedbackBuffers: Object.assign({}, opts.feedbackBuffers)\n };\n Object.assign(binding.sourceBuffers, opts.sourceBuffers);\n Object.assign(binding.feedbackBuffers, opts.feedbackBuffers);\n if (binding.transformFeedback) binding.transformFeedback.setBuffers(binding.feedbackBuffers);\n return binding;\n }\n _swapBuffers(opts) {\n if (!this.feedbackMap) return null;\n const sourceBuffers = Object.assign({}, opts.sourceBuffers);\n const feedbackBuffers = Object.assign({}, opts.feedbackBuffers);\n for(const srcName in this.feedbackMap){\n const dstName = this.feedbackMap[srcName];\n sourceBuffers[srcName] = opts.feedbackBuffers[dstName];\n feedbackBuffers[dstName] = opts.sourceBuffers[srcName];\n (0, $ihfnu.assert)(feedbackBuffers[dstName] instanceof (0, $7jraD.default));\n }\n return {\n sourceBuffers: sourceBuffers,\n feedbackBuffers: feedbackBuffers\n };\n }\n _createNewBuffer(name, opts) {\n const buffer = new (0, $7jraD.default)(this.gl, opts);\n if (this.resources[name]) this.resources[name].delete();\n this.resources[name] = buffer;\n return buffer;\n }\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n constructor(gl){\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.gl = gl;\n this.currentIndex = 0;\n this.feedbackMap = {};\n this.varyings = null;\n this.bindings = [];\n this.resources = {};\n this._initialize(props);\n Object.seal(this);\n }\n}\n\n});\nparcelRegister(\"9NVBT\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $723560d53e143131$export$2e2bcd8739ae039; });\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\nvar $lvicK = parcelRequire(\"lvicK\");\n\nvar $1OVow = parcelRequire(\"1OVow\");\n\nvar $7jraD = parcelRequire(\"7jraD\");\n\nvar $iljOc = parcelRequire(\"iljOc\");\nclass $723560d53e143131$export$2e2bcd8739ae039 extends (0, $1OVow.default) {\n get [Symbol.toStringTag]() {\n return \"TransformFeedback\";\n }\n static isSupported(gl) {\n return (0, $8HKWo.isWebGL2)(gl);\n }\n initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.buffers = {};\n this.unused = {};\n this.configuration = null;\n this.bindOnUse = true;\n if (!(0, $iljOc.isObjectEmpty)(this.buffers)) this.bind(()=>this._unbindBuffers());\n this.setProps(props);\n return this;\n }\n setProps(props) {\n if (\"program\" in props) this.configuration = props.program && props.program.configuration;\n if (\"configuration\" in props) this.configuration = props.configuration;\n if (\"bindOnUse\" in props) props = props.bindOnUse;\n if (\"buffers\" in props) this.setBuffers(props.buffers);\n }\n setBuffers() {\n let buffers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.bind(()=>{\n for(const bufferName in buffers)this.setBuffer(bufferName, buffers[bufferName]);\n });\n return this;\n }\n setBuffer(locationOrName, bufferOrParams) {\n const location = this._getVaryingIndex(locationOrName);\n const { buffer: buffer, byteSize: byteSize, byteOffset: byteOffset } = this._getBufferParams(bufferOrParams);\n if (location < 0) {\n this.unused[locationOrName] = buffer;\n (0, $lvicK.log).warn(\"\".concat(this.id, \" unused varying buffer \").concat(locationOrName))();\n return this;\n }\n this.buffers[location] = bufferOrParams;\n if (!this.bindOnUse) this._bindBuffer(location, buffer, byteOffset, byteSize);\n return this;\n }\n begin() {\n let primitiveMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this.gl.bindTransformFeedback(36386, this.handle);\n this._bindBuffers();\n this.gl.beginTransformFeedback(primitiveMode);\n return this;\n }\n end() {\n this.gl.endTransformFeedback();\n this._unbindBuffers();\n this.gl.bindTransformFeedback(36386, null);\n return this;\n }\n _getBufferParams(bufferOrParams) {\n let byteOffset;\n let byteSize;\n let buffer;\n if (bufferOrParams instanceof (0, $7jraD.default) === false) {\n buffer = bufferOrParams.buffer;\n byteSize = bufferOrParams.byteSize;\n byteOffset = bufferOrParams.byteOffset;\n } else buffer = bufferOrParams;\n if (byteOffset !== undefined || byteSize !== undefined) {\n byteOffset = byteOffset || 0;\n byteSize = byteSize || buffer.byteLength - byteOffset;\n }\n return {\n buffer: buffer,\n byteOffset: byteOffset,\n byteSize: byteSize\n };\n }\n _getVaryingInfo(locationOrName) {\n return this.configuration && this.configuration.getVaryingInfo(locationOrName);\n }\n _getVaryingIndex(locationOrName) {\n if (this.configuration) return this.configuration.getVaryingInfo(locationOrName).location;\n const location = Number(locationOrName);\n return Number.isFinite(location) ? location : -1;\n }\n _bindBuffers() {\n if (this.bindOnUse) for(const bufferIndex in this.buffers){\n const { buffer: buffer, byteSize: byteSize, byteOffset: byteOffset } = this._getBufferParams(this.buffers[bufferIndex]);\n this._bindBuffer(bufferIndex, buffer, byteOffset, byteSize);\n }\n }\n _unbindBuffers() {\n if (this.bindOnUse) for(const bufferIndex in this.buffers)this._bindBuffer(bufferIndex, null);\n }\n _bindBuffer(index, buffer) {\n let byteOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let byteSize = arguments.length > 3 ? arguments[3] : undefined;\n const handle = buffer && buffer.handle;\n if (!handle || byteSize === undefined) this.gl.bindBufferBase(35982, index, handle);\n else this.gl.bindBufferRange(35982, index, handle, byteOffset, byteSize);\n return this;\n }\n _createHandle() {\n return this.gl.createTransformFeedback();\n }\n _deleteHandle() {\n this.gl.deleteTransformFeedback(this.handle);\n }\n _bindHandle(handle) {\n this.gl.bindTransformFeedback(36386, this.handle);\n }\n constructor(gl){\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, $8HKWo.assertWebGL2Context)(gl);\n super(gl, props);\n this.initialize(props);\n this.stubRemovedMethods(\"TransformFeedback\", \"v6.0\", [\n \"pause\",\n \"resume\"\n ]);\n Object.seal(this);\n }\n}\n\n});\n\n\nparcelRegister(\"lX8C6\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ffb5ca24af3cae9d$export$2e2bcd8739ae039; });\n\nvar $7jraD = parcelRequire(\"7jraD\");\nvar $dwgJf = parcelRequire(\"dwgJf\");\nvar $cJo7e = parcelRequire(\"cJo7e\");\nvar $6JLAh = parcelRequire(\"6JLAh\");\nvar $2YUMm = parcelRequire(\"2YUMm\");\nvar $7lUAH = parcelRequire(\"7lUAH\");\n\nvar $XETJo = parcelRequire(\"XETJo\");\nvar $aSPd9 = parcelRequire(\"aSPd9\");\nvar $1KKN0 = parcelRequire(\"1KKN0\");\n\nvar $3VnAf = parcelRequire(\"3VnAf\");\nconst $ffb5ca24af3cae9d$var$SRC_TEX_PARAMETER_OVERRIDES = {\n [10241]: 9728,\n [10240]: 9728,\n [10242]: 33071,\n [10243]: 33071\n};\nconst $ffb5ca24af3cae9d$var$FS_OUTPUT_VARIABLE = \"transform_output\";\nclass $ffb5ca24af3cae9d$export$2e2bcd8739ae039 {\n updateModelProps() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const updatedModelProps = this._processVertexShader(props);\n return Object.assign({}, props, updatedModelProps);\n }\n getDrawOptions() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { sourceBuffers: sourceBuffers, sourceTextures: sourceTextures, framebuffer: framebuffer, targetTexture: targetTexture } = this.bindings[this.currentIndex];\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n const uniforms = Object.assign({}, opts.uniforms);\n const parameters = Object.assign({}, opts.parameters);\n let discard = opts.discard;\n if (this.hasSourceTextures || this.hasTargetTexture) {\n attributes.transform_elementID = this.elementIDBuffer;\n for(const sampler in this.samplerTextureMap){\n const textureName = this.samplerTextureMap[sampler];\n uniforms[sampler] = sourceTextures[textureName];\n }\n this._setSourceTextureParameters();\n const sizeUniforms = (0, $3VnAf.getSizeUniforms)({\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture: targetTexture\n });\n Object.assign(uniforms, sizeUniforms);\n }\n if (this.hasTargetTexture) {\n discard = false;\n parameters.viewport = [\n 0,\n 0,\n framebuffer.width,\n framebuffer.height\n ];\n }\n return {\n attributes: attributes,\n framebuffer: framebuffer,\n uniforms: uniforms,\n discard: discard,\n parameters: parameters\n };\n }\n swap() {\n if (this._swapTexture) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n update() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this._setupTextures(opts);\n }\n getTargetTexture() {\n const { targetTexture: targetTexture } = this.bindings[this.currentIndex];\n return targetTexture;\n }\n getData() {\n let { packed: packed = false } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { framebuffer: framebuffer } = this.bindings[this.currentIndex];\n const pixels = (0, $2YUMm.readPixelsToArray)(framebuffer);\n if (!packed) return pixels;\n const ArrayType = pixels.constructor;\n const channelCount = (0, $1KKN0.typeToChannelCount)(this.targetTextureType);\n const packedPixels = new ArrayType(pixels.length * channelCount / 4);\n let packCount = 0;\n for(let i = 0; i < pixels.length; i += 4)for(let j = 0; j < channelCount; j++)packedPixels[packCount++] = pixels[i + j];\n return packedPixels;\n }\n getFramebuffer() {\n const currentResources = this.bindings[this.currentIndex];\n return currentResources.framebuffer;\n }\n delete() {\n if (this.ownTexture) this.ownTexture.delete();\n if (this.elementIDBuffer) this.elementIDBuffer.delete();\n }\n _initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { _targetTextureVarying: _targetTextureVarying, _swapTexture: _swapTexture } = props;\n this._swapTexture = _swapTexture;\n this.targetTextureVarying = _targetTextureVarying;\n this.hasTargetTexture = _targetTextureVarying;\n this._setupTextures(props);\n }\n _createTargetTexture(props) {\n const { sourceTextures: sourceTextures, textureOrReference: textureOrReference } = props;\n if (textureOrReference instanceof (0, $7lUAH.default)) return textureOrReference;\n const refTexture = sourceTextures[textureOrReference];\n if (!refTexture) return null;\n this._targetRefTexName = textureOrReference;\n return this._createNewTexture(refTexture);\n }\n _setupTextures() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { sourceBuffers: sourceBuffers, _sourceTextures: _sourceTextures = {}, _targetTexture: _targetTexture } = props;\n const targetTexture = this._createTargetTexture({\n sourceTextures: _sourceTextures,\n textureOrReference: _targetTexture\n });\n this.hasSourceTextures = this.hasSourceTextures || _sourceTextures && Object.keys(_sourceTextures).length > 0;\n this._updateBindings({\n sourceBuffers: sourceBuffers,\n sourceTextures: _sourceTextures,\n targetTexture: targetTexture\n });\n if (\"elementCount\" in props) this._updateElementIDBuffer(props.elementCount);\n }\n _updateElementIDBuffer(elementCount) {\n if (typeof elementCount !== \"number\" || this.elementCount >= elementCount) return;\n const elementIds = new Float32Array(elementCount);\n elementIds.forEach((_, index, array)=>{\n array[index] = index;\n });\n if (!this.elementIDBuffer) this.elementIDBuffer = new (0, $7jraD.default)(this.gl, {\n data: elementIds,\n accessor: {\n size: 1\n }\n });\n else this.elementIDBuffer.setData({\n data: elementIds\n });\n this.elementCount = elementCount;\n }\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this._swapTexture) {\n const { sourceTextures: sourceTextures, targetTexture: targetTexture } = this._swapTextures(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceTextures: sourceTextures,\n targetTexture: targetTexture\n });\n }\n }\n _updateBinding(binding, opts) {\n const { sourceBuffers: sourceBuffers, sourceTextures: sourceTextures, targetTexture: targetTexture } = opts;\n if (!binding) binding = {\n sourceBuffers: {},\n sourceTextures: {},\n targetTexture: null\n };\n Object.assign(binding.sourceTextures, sourceTextures);\n Object.assign(binding.sourceBuffers, sourceBuffers);\n if (targetTexture) {\n binding.targetTexture = targetTexture;\n const { width: width, height: height } = targetTexture;\n const { framebuffer: framebuffer } = binding;\n if (framebuffer) {\n framebuffer.update({\n attachments: {\n [36064]: targetTexture\n },\n resizeAttachments: false\n });\n framebuffer.resize({\n width: width,\n height: height\n });\n } else binding.framebuffer = new (0, $cJo7e.default)(this.gl, {\n id: \"transform-framebuffer\",\n width: width,\n height: height,\n attachments: {\n [36064]: targetTexture\n }\n });\n }\n return binding;\n }\n _setSourceTextureParameters() {\n const index = this.currentIndex;\n const { sourceTextures: sourceTextures } = this.bindings[index];\n for(const name in sourceTextures)sourceTextures[name].setParameters($ffb5ca24af3cae9d$var$SRC_TEX_PARAMETER_OVERRIDES);\n }\n _swapTextures(opts) {\n if (!this._swapTexture) return null;\n const sourceTextures = Object.assign({}, opts.sourceTextures);\n sourceTextures[this._swapTexture] = opts.targetTexture;\n const targetTexture = opts.sourceTextures[this._swapTexture];\n return {\n sourceTextures: sourceTextures,\n targetTexture: targetTexture\n };\n }\n _createNewTexture(refTexture) {\n const texture = (0, $dwgJf.cloneTextureFrom)(refTexture, {\n parameters: {\n [10241]: 9728,\n [10240]: 9728,\n [10242]: 33071,\n [10243]: 33071\n },\n pixelStore: {\n [37440]: false\n }\n });\n if (this.ownTexture) this.ownTexture.delete();\n this.ownTexture = texture;\n return texture;\n }\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n _processVertexShader() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { sourceTextures: sourceTextures, targetTexture: targetTexture } = this.bindings[this.currentIndex];\n const { vs: vs, uniforms: uniforms, targetTextureType: targetTextureType, inject: inject, samplerTextureMap: samplerTextureMap } = (0, $3VnAf.updateForTextures)({\n vs: props.vs,\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture: targetTexture\n });\n const combinedInject = (0, $aSPd9.combineInjects)([\n props.inject || {},\n inject\n ]);\n this.targetTextureType = targetTextureType;\n this.samplerTextureMap = samplerTextureMap;\n const fs = props._fs || (0, $1KKN0.getPassthroughFS)({\n version: (0, $6JLAh.default)(vs),\n input: this.targetTextureVarying,\n inputType: targetTextureType,\n output: $ffb5ca24af3cae9d$var$FS_OUTPUT_VARIABLE\n });\n const modules = this.hasSourceTextures || this.targetTextureVarying ? [\n (0, $XETJo.transform)\n ].concat(props.modules || []) : props.modules;\n return {\n vs: vs,\n fs: fs,\n modules: modules,\n uniforms: uniforms,\n inject: combinedInject\n };\n }\n constructor(gl){\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.gl = gl;\n this.id = this.currentIndex = 0;\n this._swapTexture = null;\n this.targetTextureVarying = null;\n this.targetTextureType = null;\n this.samplerTextureMap = null;\n this.bindings = [];\n this.resources = {};\n this._initialize(props);\n Object.seal(this);\n }\n}\n\n});\nparcelRegister(\"6JLAh\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $4e7bdb48183bff11$export$2e2bcd8739ae039; });\nfunction $4e7bdb48183bff11$export$2e2bcd8739ae039(source) {\n let version = 100;\n const words = source.match(/[^\\s]+/g);\n if (words.length >= 2 && words[0] === \"#version\") {\n const v = parseInt(words[1], 10);\n if (Number.isFinite(v)) version = v;\n }\n return version;\n}\n\n});\n\nparcelRegister(\"XETJo\", function(module, exports) {\n\n$parcel$export(module.exports, \"transform\", function () { return $0b353c45a6af9394$export$51186ad6e864892a; });\nconst $0b353c45a6af9394$var$vs = \"attribute float transform_elementID;\\nvec2 transform_getPixelSizeHalf(vec2 size) {\\n return vec2(1.) / (2. * size);\\n}\\n\\nvec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) {\\n float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]);\\n float xIndex = transform_elementID - (yIndex * texSize[0]);\\n return vec2(xIndex, yIndex);\\n}\\nvec2 transform_getTexCoord(vec2 size) {\\n vec2 pixelSizeHalf = transform_getPixelSizeHalf(size);\\n vec2 indices = transform_getPixelIndices(size, pixelSizeHalf);\\n vec2 coord = indices / size + pixelSizeHalf;\\n return coord;\\n}\\nvec2 transform_getPos(vec2 size) {\\n vec2 texCoord = transform_getTexCoord(size);\\n vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.);\\n return pos;\\n}\\nvec4 transform_getInput(sampler2D texSampler, vec2 size) {\\n vec2 texCoord = transform_getTexCoord(size);\\n vec4 textureColor = texture2D(texSampler, texCoord);\\n return textureColor;\\n}\\n\";\nconst $0b353c45a6af9394$export$51186ad6e864892a = {\n name: \"transform\",\n vs: $0b353c45a6af9394$var$vs,\n fs: null\n};\n\n});\n\nparcelRegister(\"aSPd9\", function(module, exports) {\n\n$parcel$export(module.exports, \"DECLARATION_INJECT_MARKER\", function () { return $7ec6abfdba2183d9$export$62f6e317489649e6; });\n$parcel$export(module.exports, \"default\", function () { return $7ec6abfdba2183d9$export$2e2bcd8739ae039; });\n$parcel$export(module.exports, \"combineInjects\", function () { return $7ec6abfdba2183d9$export$cef13ee8fb8f32f3; });\n\nvar $b5peF = parcelRequire(\"b5peF\");\n\nvar $lRcQn = parcelRequire(\"lRcQn\");\n\nvar $8xCEr = parcelRequire(\"8xCEr\");\nconst $7ec6abfdba2183d9$var$MODULE_INJECTORS = {\n [(0, $lRcQn.VERTEX_SHADER)]: (0, $b5peF.MODULE_INJECTORS_VS),\n [(0, $lRcQn.FRAGMENT_SHADER)]: (0, $b5peF.MODULE_INJECTORS_FS)\n};\nconst $7ec6abfdba2183d9$export$62f6e317489649e6 = \"__LUMA_INJECT_DECLARATIONS__\";\nconst $7ec6abfdba2183d9$var$REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/;\nconst $7ec6abfdba2183d9$var$REGEX_END_OF_MAIN = /}\\n?[^{}]*$/;\nconst $7ec6abfdba2183d9$var$fragments = [];\nfunction $7ec6abfdba2183d9$export$2e2bcd8739ae039(source, type, inject) {\n let injectStandardStubs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n const isVertex = type === (0, $lRcQn.VERTEX_SHADER);\n for(const key in inject){\n const fragmentData = inject[key];\n fragmentData.sort((a, b)=>a.order - b.order);\n $7ec6abfdba2183d9$var$fragments.length = fragmentData.length;\n for(let i = 0, len = fragmentData.length; i < len; ++i)$7ec6abfdba2183d9$var$fragments[i] = fragmentData[i].injection;\n const fragmentString = \"\".concat($7ec6abfdba2183d9$var$fragments.join(\"\\n\"), \"\\n\");\n switch(key){\n case \"vs:#decl\":\n if (isVertex) source = source.replace($7ec6abfdba2183d9$export$62f6e317489649e6, fragmentString);\n break;\n case \"vs:#main-start\":\n if (isVertex) source = source.replace($7ec6abfdba2183d9$var$REGEX_START_OF_MAIN, (match)=>match + fragmentString);\n break;\n case \"vs:#main-end\":\n if (isVertex) source = source.replace($7ec6abfdba2183d9$var$REGEX_END_OF_MAIN, (match)=>fragmentString + match);\n break;\n case \"fs:#decl\":\n if (!isVertex) source = source.replace($7ec6abfdba2183d9$export$62f6e317489649e6, fragmentString);\n break;\n case \"fs:#main-start\":\n if (!isVertex) source = source.replace($7ec6abfdba2183d9$var$REGEX_START_OF_MAIN, (match)=>match + fragmentString);\n break;\n case \"fs:#main-end\":\n if (!isVertex) source = source.replace($7ec6abfdba2183d9$var$REGEX_END_OF_MAIN, (match)=>fragmentString + match);\n break;\n default:\n source = source.replace(key, (match)=>match + fragmentString);\n }\n }\n source = source.replace($7ec6abfdba2183d9$export$62f6e317489649e6, \"\");\n if (injectStandardStubs) source = source.replace(/\\}\\s*$/, (match)=>match + $7ec6abfdba2183d9$var$MODULE_INJECTORS[type]);\n return source;\n}\nfunction $7ec6abfdba2183d9$export$cef13ee8fb8f32f3(injects) {\n const result = {};\n (0, $8xCEr.default)(Array.isArray(injects) && injects.length > 1);\n injects.forEach((inject)=>{\n for(const key in inject)result[key] = result[key] ? \"\".concat(result[key], \"\\n\").concat(inject[key]) : inject[key];\n });\n return result;\n}\n\n});\nparcelRegister(\"b5peF\", function(module, exports) {\n\n$parcel$export(module.exports, \"MODULE_INJECTORS_VS\", function () { return $8123bc9e6b497087$export$1c7c27df7700ab1e; });\n$parcel$export(module.exports, \"MODULE_INJECTORS_FS\", function () { return $8123bc9e6b497087$export$eb0c6f0420228c53; });\nconst $8123bc9e6b497087$export$1c7c27df7700ab1e = \"#ifdef MODULE_LOGDEPTH\\n logdepth_adjustPosition(gl_Position);\\n#endif\\n\";\nconst $8123bc9e6b497087$export$eb0c6f0420228c53 = \"#ifdef MODULE_MATERIAL\\n gl_FragColor = material_filterColor(gl_FragColor);\\n#endif\\n\\n#ifdef MODULE_LIGHTING\\n gl_FragColor = lighting_filterColor(gl_FragColor);\\n#endif\\n\\n#ifdef MODULE_FOG\\n gl_FragColor = fog_filterColor(gl_FragColor);\\n#endif\\n\\n#ifdef MODULE_PICKING\\n gl_FragColor = picking_filterHighlightColor(gl_FragColor);\\n gl_FragColor = picking_filterPickingColor(gl_FragColor);\\n#endif\\n\\n#ifdef MODULE_LOGDEPTH\\n logdepth_setFragDepth();\\n#endif\\n\";\n\n});\n\nparcelRegister(\"lRcQn\", function(module, exports) {\n\n$parcel$export(module.exports, \"VERTEX_SHADER\", function () { return $fe9882bd360d0947$export$9abae82e87f5416d; });\n$parcel$export(module.exports, \"FRAGMENT_SHADER\", function () { return $fe9882bd360d0947$export$71cb6c7fe82525af; });\nconst $fe9882bd360d0947$export$9abae82e87f5416d = \"vs\";\nconst $fe9882bd360d0947$export$71cb6c7fe82525af = \"fs\";\n\n});\n\n\nparcelRegister(\"3VnAf\", function(module, exports) {\n\n$parcel$export(module.exports, \"updateForTextures\", function () { return $2db8fd306aca72f6$export$5a059e62d0049ef0; });\n$parcel$export(module.exports, \"getSizeUniforms\", function () { return $2db8fd306aca72f6$export$9265f23b64eee61d; });\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\n\nvar $aSPd9 = parcelRequire(\"aSPd9\");\nvar $1KKN0 = parcelRequire(\"1KKN0\");\nconst $2db8fd306aca72f6$var$SAMPLER_UNIFORM_PREFIX = \"transform_uSampler_\";\nconst $2db8fd306aca72f6$var$SIZE_UNIFORM_PREFIX = \"transform_uSize_\";\nconst $2db8fd306aca72f6$var$VS_POS_VARIABLE = \"transform_position\";\nfunction $2db8fd306aca72f6$export$5a059e62d0049ef0(_ref) {\n let { vs: vs, sourceTextureMap: sourceTextureMap, targetTextureVarying: targetTextureVarying, targetTexture: targetTexture } = _ref;\n const texAttributeNames = Object.keys(sourceTextureMap);\n let sourceCount = texAttributeNames.length;\n let targetTextureType = null;\n const samplerTextureMap = {};\n let updatedVs = vs;\n let finalInject = {};\n if (sourceCount > 0 || targetTextureVarying) {\n const vsLines = updatedVs.split(\"\\n\");\n const updateVsLines = vsLines.slice();\n vsLines.forEach((line, index, lines)=>{\n if (sourceCount > 0) {\n const updated = $2db8fd306aca72f6$export$b3d21cd7dabd1c6(line, sourceTextureMap);\n if (updated) {\n const { updatedLine: updatedLine, inject: inject } = updated;\n updateVsLines[index] = updatedLine;\n finalInject = (0, $aSPd9.combineInjects)([\n finalInject,\n inject\n ]);\n Object.assign(samplerTextureMap, updated.samplerTextureMap);\n sourceCount--;\n }\n }\n if (targetTextureVarying && !targetTextureType) targetTextureType = $2db8fd306aca72f6$export$997a69001b588146(line, targetTextureVarying);\n });\n if (targetTextureVarying) {\n (0, $ihfnu.assert)(targetTexture);\n const sizeName = \"\".concat($2db8fd306aca72f6$var$SIZE_UNIFORM_PREFIX).concat(targetTextureVarying);\n const uniformDeclaration = \"uniform vec2 \".concat(sizeName, \";\\n\");\n const posInstructions = \" vec2 \".concat($2db8fd306aca72f6$var$VS_POS_VARIABLE, \" = transform_getPos(\").concat(sizeName, \");\\n gl_Position = vec4(\").concat($2db8fd306aca72f6$var$VS_POS_VARIABLE, \", 0, 1.);\\n\");\n const inject = {\n \"vs:#decl\": uniformDeclaration,\n \"vs:#main-start\": posInstructions\n };\n finalInject = (0, $aSPd9.combineInjects)([\n finalInject,\n inject\n ]);\n }\n updatedVs = updateVsLines.join(\"\\n\");\n }\n return {\n vs: updatedVs,\n targetTextureType: targetTextureType,\n inject: finalInject,\n samplerTextureMap: samplerTextureMap\n };\n}\nfunction $2db8fd306aca72f6$export$9265f23b64eee61d(_ref2) {\n let { sourceTextureMap: sourceTextureMap, targetTextureVarying: targetTextureVarying, targetTexture: targetTexture } = _ref2;\n const uniforms = {};\n let width;\n let height;\n if (targetTextureVarying) {\n ({ width: width, height: height } = targetTexture);\n uniforms[\"\".concat($2db8fd306aca72f6$var$SIZE_UNIFORM_PREFIX).concat(targetTextureVarying)] = [\n width,\n height\n ];\n }\n for(const textureName in sourceTextureMap){\n ({ width: width, height: height } = sourceTextureMap[textureName]);\n uniforms[\"\".concat($2db8fd306aca72f6$var$SIZE_UNIFORM_PREFIX).concat(textureName)] = [\n width,\n height\n ];\n }\n return uniforms;\n}\nfunction $2db8fd306aca72f6$var$getAttributeDefinition(line) {\n return (0, $1KKN0.getQualifierDetails)(line, [\n \"attribute\",\n \"in\"\n ]);\n}\nfunction $2db8fd306aca72f6$var$getSamplerDeclerations(textureName) {\n const samplerName = \"\".concat($2db8fd306aca72f6$var$SAMPLER_UNIFORM_PREFIX).concat(textureName);\n const sizeName = \"\".concat($2db8fd306aca72f6$var$SIZE_UNIFORM_PREFIX).concat(textureName);\n const uniformDeclerations = \" uniform sampler2D \".concat(samplerName, \";\\n uniform vec2 \").concat(sizeName, \";\");\n return {\n samplerName: samplerName,\n sizeName: sizeName,\n uniformDeclerations: uniformDeclerations\n };\n}\nfunction $2db8fd306aca72f6$export$997a69001b588146(line, varying) {\n const qualaiferDetails = (0, $1KKN0.getQualifierDetails)(line, [\n \"varying\",\n \"out\"\n ]);\n if (!qualaiferDetails) return null;\n return qualaiferDetails.name === varying ? qualaiferDetails.type : null;\n}\nfunction $2db8fd306aca72f6$export$b3d21cd7dabd1c6(line, textureMap) {\n const samplerTextureMap = {};\n const attributeData = $2db8fd306aca72f6$var$getAttributeDefinition(line);\n if (!attributeData) return null;\n const { type: type, name: name } = attributeData;\n if (name && textureMap[name]) {\n const updatedLine = \"// \".concat(line, \" => Replaced by Transform with a sampler\");\n const { samplerName: samplerName, sizeName: sizeName, uniformDeclerations: uniformDeclerations } = $2db8fd306aca72f6$var$getSamplerDeclerations(name);\n const channels = (0, $1KKN0.typeToChannelSuffix)(type);\n const sampleInstruction = \" \".concat(type, \" \").concat(name, \" = transform_getInput(\").concat(samplerName, \", \").concat(sizeName, \").\").concat(channels, \";\\n\");\n samplerTextureMap[samplerName] = name;\n const inject = {\n \"vs:#decl\": uniformDeclerations,\n \"vs:#main-start\": sampleInstruction\n };\n return {\n updatedLine: updatedLine,\n inject: inject,\n samplerTextureMap: samplerTextureMap\n };\n }\n return null;\n}\n\n});\n\n\nparcelRegister(\"b2F4S\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $809fbec796c7ebe6$export$2e2bcd8739ae039; });\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\n\nvar $ablN0 = parcelRequire(\"ablN0\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\nvar $7jraD = parcelRequire(\"7jraD\");\nvar $eU1YY = parcelRequire(\"eU1YY\");\nvar $5Ha6k = parcelRequire(\"5Ha6k\");\nvar $j4CMX = parcelRequire(\"j4CMX\");\nvar $4wHgq = parcelRequire(\"4wHgq\");\nvar $iljOc = parcelRequire(\"iljOc\");parcelRequire(\"73UuK\");\nvar $lvicK = parcelRequire(\"lvicK\");\nvar $dwmuk = parcelRequire(\"dwmuk\");\nvar $9NVBT = parcelRequire(\"9NVBT\");\nvar $b7Tm8 = parcelRequire(\"b7Tm8\");\n\nvar $lrhVz = parcelRequire(\"lrhVz\");\nconst $809fbec796c7ebe6$var$LOG_DRAW_PRIORITY = 2;\nconst $809fbec796c7ebe6$var$LOG_DRAW_TIMEOUT = 10000;\nconst $809fbec796c7ebe6$var$ERR_MODEL_PARAMS = \"Model needs drawMode and vertexCount\";\nconst $809fbec796c7ebe6$var$NOOP = ()=>{};\nconst $809fbec796c7ebe6$var$DRAW_PARAMS = {};\nclass $809fbec796c7ebe6$export$2e2bcd8739ae039 {\n initialize(props) {\n this.props = {};\n this.programManager = props.programManager || (0, $ablN0.default).getDefaultProgramManager(this.gl);\n this._programManagerState = -1;\n this._managedProgram = false;\n const { program: program = null, vs: vs, fs: fs, modules: modules, defines: defines, inject: inject, varyings: varyings, bufferMode: bufferMode, transpileToGLSL100: transpileToGLSL100 } = props;\n this.programProps = {\n program: program,\n vs: vs,\n fs: fs,\n modules: modules,\n defines: defines,\n inject: inject,\n varyings: varyings,\n bufferMode: bufferMode,\n transpileToGLSL100: transpileToGLSL100\n };\n this.program = null;\n this.vertexArray = null;\n this._programDirty = true;\n this.userData = {};\n this.needsRedraw = true;\n this._attributes = {};\n this.attributes = {};\n this.uniforms = {};\n this.pickable = true;\n this._checkProgram();\n this.setUniforms(Object.assign({}, this.getModuleUniforms(props.moduleSettings)));\n this.drawMode = props.drawMode !== undefined ? props.drawMode : 4;\n this.vertexCount = props.vertexCount || 0;\n this.geometryBuffers = {};\n this.isInstanced = props.isInstanced || props.instanced || props.instanceCount > 0;\n this._setModelProps(props);\n this.geometry = {};\n (0, $ihfnu.assert)(this.drawMode !== undefined && Number.isFinite(this.vertexCount), $809fbec796c7ebe6$var$ERR_MODEL_PARAMS);\n }\n setProps(props) {\n this._setModelProps(props);\n }\n delete() {\n for(const key in this._attributes)if (this._attributes[key] !== this.attributes[key]) this._attributes[key].delete();\n if (this._managedProgram) {\n this.programManager.release(this.program);\n this._managedProgram = false;\n }\n this.vertexArray.delete();\n this._deleteGeometryBuffers();\n }\n getDrawMode() {\n return this.drawMode;\n }\n getVertexCount() {\n return this.vertexCount;\n }\n getInstanceCount() {\n return this.instanceCount;\n }\n getAttributes() {\n return this.attributes;\n }\n getProgram() {\n return this.program;\n }\n setProgram(props) {\n const { program: program, vs: vs, fs: fs, modules: modules, defines: defines, inject: inject, varyings: varyings, bufferMode: bufferMode, transpileToGLSL100: transpileToGLSL100 } = props;\n this.programProps = {\n program: program,\n vs: vs,\n fs: fs,\n modules: modules,\n defines: defines,\n inject: inject,\n varyings: varyings,\n bufferMode: bufferMode,\n transpileToGLSL100: transpileToGLSL100\n };\n this._programDirty = true;\n }\n getUniforms() {\n return this.uniforms;\n }\n setDrawMode(drawMode) {\n this.drawMode = drawMode;\n return this;\n }\n setVertexCount(vertexCount) {\n (0, $ihfnu.assert)(Number.isFinite(vertexCount));\n this.vertexCount = vertexCount;\n return this;\n }\n setInstanceCount(instanceCount) {\n (0, $ihfnu.assert)(Number.isFinite(instanceCount));\n this.instanceCount = instanceCount;\n return this;\n }\n setGeometry(geometry) {\n this.drawMode = geometry.drawMode;\n this.vertexCount = geometry.getVertexCount();\n this._deleteGeometryBuffers();\n this.geometryBuffers = (0, $lrhVz.getBuffersFromGeometry)(this.gl, geometry);\n this.vertexArray.setAttributes(this.geometryBuffers);\n return this;\n }\n setAttributes() {\n let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if ((0, $iljOc.isObjectEmpty)(attributes)) return this;\n const normalizedAttributes = {};\n for(const name in attributes){\n const attribute = attributes[name];\n normalizedAttributes[name] = attribute.getValue ? attribute.getValue() : attribute;\n }\n this.vertexArray.setAttributes(normalizedAttributes);\n return this;\n }\n setUniforms() {\n let uniforms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n Object.assign(this.uniforms, uniforms);\n return this;\n }\n getModuleUniforms(opts) {\n this._checkProgram();\n const getUniforms = this.programManager.getUniforms(this.program);\n if (getUniforms) return getUniforms(opts);\n return {};\n }\n updateModuleSettings(opts) {\n const uniforms = this.getModuleUniforms(opts || {});\n return this.setUniforms(uniforms);\n }\n clear(opts) {\n (0, $eU1YY.clear)(this.program.gl, opts);\n return this;\n }\n draw() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this._checkProgram();\n const { moduleSettings: moduleSettings = null, framebuffer: framebuffer, uniforms: uniforms = {}, attributes: attributes = {}, transformFeedback: transformFeedback = this.transformFeedback, parameters: parameters = {}, vertexArray: vertexArray = this.vertexArray } = opts;\n this.setAttributes(attributes);\n this.updateModuleSettings(moduleSettings);\n this.setUniforms(uniforms);\n let logPriority;\n if ((0, $lvicK.log).priority >= $809fbec796c7ebe6$var$LOG_DRAW_PRIORITY) logPriority = this._logDrawCallStart($809fbec796c7ebe6$var$LOG_DRAW_PRIORITY);\n const drawParams = this.vertexArray.getDrawParams();\n const { isIndexed: isIndexed = drawParams.isIndexed, indexType: indexType = drawParams.indexType, indexOffset: indexOffset = drawParams.indexOffset, vertexArrayInstanced: vertexArrayInstanced = drawParams.isInstanced } = this.props;\n if (vertexArrayInstanced && !this.isInstanced) (0, $lvicK.log).warn(\"Found instanced attributes on non-instanced model\", this.id)();\n const { isInstanced: isInstanced, instanceCount: instanceCount } = this;\n const { onBeforeRender: onBeforeRender = $809fbec796c7ebe6$var$NOOP, onAfterRender: onAfterRender = $809fbec796c7ebe6$var$NOOP } = this.props;\n onBeforeRender();\n this.program.setUniforms(this.uniforms);\n const didDraw = this.program.draw(Object.assign($809fbec796c7ebe6$var$DRAW_PARAMS, opts, {\n logPriority: logPriority,\n uniforms: null,\n framebuffer: framebuffer,\n parameters: parameters,\n drawMode: this.getDrawMode(),\n vertexCount: this.getVertexCount(),\n vertexArray: vertexArray,\n transformFeedback: transformFeedback,\n isIndexed: isIndexed,\n indexType: indexType,\n isInstanced: isInstanced,\n instanceCount: instanceCount,\n offset: isIndexed ? indexOffset : 0\n }));\n onAfterRender();\n if ((0, $lvicK.log).priority >= $809fbec796c7ebe6$var$LOG_DRAW_PRIORITY) this._logDrawCallEnd(logPriority, vertexArray, framebuffer);\n return didDraw;\n }\n transform() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { discard: discard = true, feedbackBuffers: feedbackBuffers, unbindModels: unbindModels = [] } = opts;\n let { parameters: parameters } = opts;\n if (feedbackBuffers) this._setFeedbackBuffers(feedbackBuffers);\n if (discard) parameters = Object.assign({}, parameters, {\n [35977]: discard\n });\n unbindModels.forEach((model)=>model.vertexArray.unbindBuffers());\n try {\n this.draw(Object.assign({}, opts, {\n parameters: parameters\n }));\n } finally{\n unbindModels.forEach((model)=>model.vertexArray.bindBuffers());\n }\n return this;\n }\n render() {\n let uniforms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n (0, $lvicK.log).warn(\"Model.render() is deprecated. Use Model.setUniforms() and Model.draw()\")();\n return this.setUniforms(uniforms).draw();\n }\n _setModelProps(props) {\n Object.assign(this.props, props);\n if (\"uniforms\" in props) this.setUniforms(props.uniforms);\n if (\"pickable\" in props) this.pickable = props.pickable;\n if (\"instanceCount\" in props) this.instanceCount = props.instanceCount;\n if (\"geometry\" in props) this.setGeometry(props.geometry);\n if (\"attributes\" in props) this.setAttributes(props.attributes);\n if (\"_feedbackBuffers\" in props) this._setFeedbackBuffers(props._feedbackBuffers);\n }\n _checkProgram() {\n const needsUpdate = this._programDirty || this.programManager.stateHash !== this._programManagerState;\n if (!needsUpdate) return;\n let { program: program } = this.programProps;\n if (program) this._managedProgram = false;\n else {\n const { vs: vs, fs: fs, modules: modules, inject: inject, defines: defines, varyings: varyings, bufferMode: bufferMode, transpileToGLSL100: transpileToGLSL100 } = this.programProps;\n program = this.programManager.get({\n vs: vs,\n fs: fs,\n modules: modules,\n inject: inject,\n defines: defines,\n varyings: varyings,\n bufferMode: bufferMode,\n transpileToGLSL100: transpileToGLSL100\n });\n if (this.program && this._managedProgram) this.programManager.release(this.program);\n this._programManagerState = this.programManager.stateHash;\n this._managedProgram = true;\n }\n (0, $ihfnu.assert)(program instanceof (0, $dwmuk.default), \"Model needs a program\");\n this._programDirty = false;\n if (program === this.program) return;\n this.program = program;\n if (this.vertexArray) this.vertexArray.setProps({\n program: this.program,\n attributes: this.vertexArray.attributes\n });\n else this.vertexArray = new (0, $b7Tm8.default)(this.gl, {\n program: this.program\n });\n this.setUniforms(Object.assign({}, this.getModuleUniforms()));\n }\n _deleteGeometryBuffers() {\n for(const name in this.geometryBuffers){\n const buffer = this.geometryBuffers[name][0] || this.geometryBuffers[name];\n if (buffer instanceof (0, $7jraD.default)) buffer.delete();\n }\n }\n _setAnimationProps(animationProps) {\n if (this.animated) (0, $ihfnu.assert)(animationProps, \"Model.draw(): animated uniforms but no animationProps\");\n }\n _setFeedbackBuffers() {\n let feedbackBuffers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if ((0, $iljOc.isObjectEmpty)(feedbackBuffers)) return this;\n const { gl: gl } = this.program;\n this.transformFeedback = this.transformFeedback || new (0, $9NVBT.default)(gl, {\n program: this.program\n });\n this.transformFeedback.setBuffers(feedbackBuffers);\n return this;\n }\n _logDrawCallStart(logLevel) {\n const logDrawTimeout = logLevel > 3 ? 0 : $809fbec796c7ebe6$var$LOG_DRAW_TIMEOUT;\n if (Date.now() - this.lastLogTime < logDrawTimeout) return undefined;\n this.lastLogTime = Date.now();\n (0, $lvicK.log).group($809fbec796c7ebe6$var$LOG_DRAW_PRIORITY, \">>> DRAWING MODEL \".concat(this.id), {\n collapsed: (0, $lvicK.log).level <= 2\n })();\n return logLevel;\n }\n _logDrawCallEnd(logLevel, vertexArray, uniforms, framebuffer) {\n if (logLevel === undefined) return;\n const attributeTable = (0, $4wHgq.getDebugTableForVertexArray)({\n vertexArray: vertexArray,\n header: \"\".concat(this.id, \" attributes\"),\n attributes: this._attributes\n });\n const { table: uniformTable, unusedTable: unusedTable, unusedCount: unusedCount } = (0, $j4CMX.getDebugTableForUniforms)({\n header: \"\".concat(this.id, \" uniforms\"),\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms)\n });\n const { table: missingTable, count: missingCount } = (0, $j4CMX.getDebugTableForUniforms)({\n header: \"\".concat(this.id, \" uniforms\"),\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms),\n undefinedOnly: true\n });\n if (missingCount > 0) (0, $lvicK.log).log(\"MISSING UNIFORMS\", Object.keys(missingTable))();\n if (unusedCount > 0) (0, $lvicK.log).log(\"UNUSED UNIFORMS\", Object.keys(unusedTable))();\n const configTable = (0, $5Ha6k.getDebugTableForProgramConfiguration)(this.vertexArray.configuration);\n (0, $lvicK.log).table(logLevel, attributeTable)();\n (0, $lvicK.log).table(logLevel, uniformTable)();\n (0, $lvicK.log).table(logLevel + 1, configTable)();\n if (framebuffer) framebuffer.log({\n logLevel: $809fbec796c7ebe6$var$LOG_DRAW_PRIORITY,\n message: \"Rendered to \".concat(framebuffer.id)\n });\n (0, $lvicK.log).groupEnd($809fbec796c7ebe6$var$LOG_DRAW_PRIORITY)();\n }\n constructor(gl){\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const { id: id = (0, $iljOc.uid)(\"model\") } = props;\n (0, $ihfnu.assert)((0, $8HKWo.isWebGL)(gl));\n this.id = id;\n this.gl = gl;\n this.id = props.id || (0, $iljOc.uid)(\"Model\");\n this.lastLogTime = 0;\n this.animated = false;\n this.initialize(props);\n }\n}\n\n});\nparcelRegister(\"ablN0\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $769bd5617b097dba$export$2e2bcd8739ae039; });\n\nvar $bboEJ = parcelRequire(\"bboEJ\");\n\nvar $dwmuk = parcelRequire(\"dwmuk\");\nclass $769bd5617b097dba$export$2e2bcd8739ae039 {\n static getDefaultProgramManager(gl) {\n gl.luma = gl.luma || {};\n gl.luma.defaultProgramManager = gl.luma.defaultProgramManager || new $769bd5617b097dba$export$2e2bcd8739ae039(gl);\n return gl.luma.defaultProgramManager;\n }\n addDefaultModule(module) {\n if (!this._defaultModules.find((m)=>m.name === module.name)) this._defaultModules.push(module);\n this.stateHash++;\n }\n removeDefaultModule(module) {\n const moduleName = typeof module === \"string\" ? module : module.name;\n this._defaultModules = this._defaultModules.filter((m)=>m.name !== moduleName);\n this.stateHash++;\n }\n addShaderHook(hook, opts) {\n if (opts) hook = Object.assign(opts, {\n hook: hook\n });\n this._hookFunctions.push(hook);\n this.stateHash++;\n }\n get() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { vs: vs = \"\", fs: fs = \"\", defines: defines = {}, inject: inject = {}, varyings: varyings = [], bufferMode: bufferMode = 0x8c8d, transpileToGLSL100: transpileToGLSL100 = false } = props;\n const modules = this._getModuleList(props.modules);\n const vsHash = this._getHash(vs);\n const fsHash = this._getHash(fs);\n const moduleHashes = modules.map((m)=>this._getHash(m.name)).sort();\n const varyingHashes = varyings.map((v)=>this._getHash(v));\n const defineKeys = Object.keys(defines).sort();\n const injectKeys = Object.keys(inject).sort();\n const defineHashes = [];\n const injectHashes = [];\n for (const key of defineKeys){\n defineHashes.push(this._getHash(key));\n defineHashes.push(this._getHash(defines[key]));\n }\n for (const key of injectKeys){\n injectHashes.push(this._getHash(key));\n injectHashes.push(this._getHash(inject[key]));\n }\n const hash = \"\".concat(vsHash, \"/\").concat(fsHash, \"D\").concat(defineHashes.join(\"/\"), \"M\").concat(moduleHashes.join(\"/\"), \"I\").concat(injectHashes.join(\"/\"), \"V\").concat(varyingHashes.join(\"/\"), \"H\").concat(this.stateHash, \"B\").concat(bufferMode).concat(transpileToGLSL100 ? \"T\" : \"\");\n if (!this._programCache[hash]) {\n const assembled = (0, $bboEJ.assembleShaders)(this.gl, {\n vs: vs,\n fs: fs,\n modules: modules,\n inject: inject,\n defines: defines,\n hookFunctions: this._hookFunctions,\n transpileToGLSL100: transpileToGLSL100\n });\n this._programCache[hash] = new (0, $dwmuk.default)(this.gl, {\n hash: hash,\n vs: assembled.vs,\n fs: assembled.fs,\n varyings: varyings,\n bufferMode: bufferMode\n });\n this._getUniforms[hash] = assembled.getUniforms || ((x)=>{});\n this._useCounts[hash] = 0;\n }\n this._useCounts[hash]++;\n return this._programCache[hash];\n }\n getUniforms(program) {\n return this._getUniforms[program.hash] || null;\n }\n release(program) {\n const hash = program.hash;\n this._useCounts[hash]--;\n if (this._useCounts[hash] === 0) {\n this._programCache[hash].delete();\n delete this._programCache[hash];\n delete this._getUniforms[hash];\n delete this._useCounts[hash];\n }\n }\n _getHash(key) {\n if (this._hashes[key] === undefined) this._hashes[key] = this._hashCounter++;\n return this._hashes[key];\n }\n _getModuleList() {\n let appModules = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n const modules = new Array(this._defaultModules.length + appModules.length);\n const seen = {};\n let count = 0;\n for(let i = 0, len = this._defaultModules.length; i < len; ++i){\n const module = this._defaultModules[i];\n const name = module.name;\n modules[count++] = module;\n seen[name] = true;\n }\n for(let i = 0, len = appModules.length; i < len; ++i){\n const module = appModules[i];\n const name = module.name;\n if (!seen[name]) {\n modules[count++] = module;\n seen[name] = true;\n }\n }\n modules.length = count;\n return modules;\n }\n constructor(gl){\n this.gl = gl;\n this._programCache = {};\n this._getUniforms = {};\n this._registeredModules = {};\n this._hookFunctions = [];\n this._defaultModules = [];\n this._hashes = {};\n this._hashCounter = 0;\n this.stateHash = 0;\n this._useCounts = {};\n }\n}\n\n});\nparcelRegister(\"bboEJ\", function(module, exports) {\n\n$parcel$export(module.exports, \"assembleShaders\", function () { return $8243d8f728508920$export$284ff2a142913562; });\n\nvar $lRcQn = parcelRequire(\"lRcQn\");\n\nvar $62jMs = parcelRequire(\"62jMs\");\n\nvar $94X71 = parcelRequire(\"94X71\");\n\nvar $aSPd9 = parcelRequire(\"aSPd9\");\n\nvar $eqEdN = parcelRequire(\"eqEdN\");\n\nvar $8xCEr = parcelRequire(\"8xCEr\");\nconst $8243d8f728508920$var$INJECT_SHADER_DECLARATIONS = \"\\n\\n\".concat((0, $aSPd9.DECLARATION_INJECT_MARKER), \"\\n\\n\");\nconst $8243d8f728508920$var$SHADER_TYPE = {\n [(0, $lRcQn.VERTEX_SHADER)]: \"vertex\",\n [(0, $lRcQn.FRAGMENT_SHADER)]: \"fragment\"\n};\nconst $8243d8f728508920$var$FRAGMENT_SHADER_PROLOGUE = \"precision highp float;\\n\\n\";\nfunction $8243d8f728508920$export$284ff2a142913562(gl, opts) {\n const { vs: vs, fs: fs } = opts;\n const modules = (0, $62jMs.resolveModules)(opts.modules || []);\n return {\n gl: gl,\n vs: $8243d8f728508920$var$assembleShader(gl, Object.assign({}, opts, {\n source: vs,\n type: (0, $lRcQn.VERTEX_SHADER),\n modules: modules\n })),\n fs: $8243d8f728508920$var$assembleShader(gl, Object.assign({}, opts, {\n source: fs,\n type: (0, $lRcQn.FRAGMENT_SHADER),\n modules: modules\n })),\n getUniforms: $8243d8f728508920$var$assembleGetUniforms(modules)\n };\n}\nfunction $8243d8f728508920$var$assembleShader(gl, _ref) {\n let { id: id, source: source, type: type, modules: modules, defines: defines = {}, hookFunctions: hookFunctions = [], inject: inject = {}, transpileToGLSL100: transpileToGLSL100 = false, prologue: prologue = true, log: log } = _ref;\n (0, $8xCEr.default)(typeof source === \"string\", \"shader source must be a string\");\n const isVertex = type === (0, $lRcQn.VERTEX_SHADER);\n const sourceLines = source.split(\"\\n\");\n let glslVersion = 100;\n let versionLine = \"\";\n let coreSource = source;\n if (sourceLines[0].indexOf(\"#version \") === 0) {\n glslVersion = 300;\n versionLine = sourceLines[0];\n coreSource = sourceLines.slice(1).join(\"\\n\");\n } else versionLine = \"#version \".concat(glslVersion);\n const allDefines = {};\n modules.forEach((module)=>{\n Object.assign(allDefines, module.getDefines());\n });\n Object.assign(allDefines, defines);\n let assembledSource = prologue ? \"\".concat(versionLine, \"\\n\").concat($8243d8f728508920$var$getShaderName({\n id: id,\n source: source,\n type: type\n }), \"\\n\").concat($8243d8f728508920$var$getShaderType({\n type: type\n }), \"\\n\").concat((0, $94X71.getPlatformShaderDefines)(gl), \"\\n\").concat((0, $94X71.getVersionDefines)(gl, glslVersion, !isVertex), \"\\n\").concat($8243d8f728508920$var$getApplicationDefines(allDefines), \"\\n\").concat(isVertex ? \"\" : $8243d8f728508920$var$FRAGMENT_SHADER_PROLOGUE, \"\\n\") : \"\".concat(versionLine, \"\\n\");\n const hookFunctionMap = $8243d8f728508920$var$normalizeHookFunctions(hookFunctions);\n const hookInjections = {};\n const declInjections = {};\n const mainInjections = {};\n for(const key in inject){\n const injection = typeof inject[key] === \"string\" ? {\n injection: inject[key],\n order: 0\n } : inject[key];\n const match = key.match(/^(v|f)s:(#)?([\\w-]+)$/);\n if (match) {\n const hash = match[2];\n const name = match[3];\n if (hash) {\n if (name === \"decl\") declInjections[key] = [\n injection\n ];\n else mainInjections[key] = [\n injection\n ];\n } else hookInjections[key] = [\n injection\n ];\n } else mainInjections[key] = [\n injection\n ];\n }\n for (const module of modules){\n if (log) module.checkDeprecations(coreSource, log);\n const moduleSource = module.getModuleSource(type, glslVersion);\n assembledSource += moduleSource;\n const injections = module.injections[type];\n for(const key in injections){\n const match = key.match(/^(v|f)s:#([\\w-]+)$/);\n if (match) {\n const name = match[2];\n const injectionType = name === \"decl\" ? declInjections : mainInjections;\n injectionType[key] = injectionType[key] || [];\n injectionType[key].push(injections[key]);\n } else {\n hookInjections[key] = hookInjections[key] || [];\n hookInjections[key].push(injections[key]);\n }\n }\n }\n assembledSource += $8243d8f728508920$var$INJECT_SHADER_DECLARATIONS;\n assembledSource = (0, $aSPd9.default)(assembledSource, type, declInjections);\n assembledSource += $8243d8f728508920$var$getHookFunctions(hookFunctionMap[type], hookInjections);\n assembledSource += coreSource;\n assembledSource = (0, $aSPd9.default)(assembledSource, type, mainInjections);\n assembledSource = (0, $eqEdN.default)(assembledSource, transpileToGLSL100 ? 100 : glslVersion, isVertex);\n return assembledSource;\n}\nfunction $8243d8f728508920$var$assembleGetUniforms(modules) {\n return function getUniforms(opts) {\n const uniforms = {};\n for (const module of modules){\n const moduleUniforms = module.getUniforms(opts, uniforms);\n Object.assign(uniforms, moduleUniforms);\n }\n return uniforms;\n };\n}\nfunction $8243d8f728508920$var$getShaderType(_ref2) {\n let { type: type } = _ref2;\n return \"\\n#define SHADER_TYPE_\".concat($8243d8f728508920$var$SHADER_TYPE[type].toUpperCase(), \"\\n\");\n}\nfunction $8243d8f728508920$var$getShaderName(_ref3) {\n let { id: id, source: source, type: type } = _ref3;\n const injectShaderName = id && typeof id === \"string\" && source.indexOf(\"SHADER_NAME\") === -1;\n return injectShaderName ? \"\\n#define SHADER_NAME \".concat(id, \"_\").concat($8243d8f728508920$var$SHADER_TYPE[type], \"\\n\\n\") : \"\";\n}\nfunction $8243d8f728508920$var$getApplicationDefines() {\n let defines = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let count = 0;\n let sourceText = \"\";\n for(const define in defines){\n if (count === 0) sourceText += \"\\n// APPLICATION DEFINES\\n\";\n count++;\n const value = defines[define];\n if (value || Number.isFinite(value)) sourceText += \"#define \".concat(define.toUpperCase(), \" \").concat(defines[define], \"\\n\");\n }\n if (count === 0) sourceText += \"\\n\";\n return sourceText;\n}\nfunction $8243d8f728508920$var$getHookFunctions(hookFunctions, hookInjections) {\n let result = \"\";\n for(const hookName in hookFunctions){\n const hookFunction = hookFunctions[hookName];\n result += \"void \".concat(hookFunction.signature, \" {\\n\");\n if (hookFunction.header) result += \" \".concat(hookFunction.header);\n if (hookInjections[hookName]) {\n const injections = hookInjections[hookName];\n injections.sort((a, b)=>a.order - b.order);\n for (const injection of injections)result += \" \".concat(injection.injection, \"\\n\");\n }\n if (hookFunction.footer) result += \" \".concat(hookFunction.footer);\n result += \"}\\n\";\n }\n return result;\n}\nfunction $8243d8f728508920$var$normalizeHookFunctions(hookFunctions) {\n const result = {\n vs: {},\n fs: {}\n };\n hookFunctions.forEach((hook)=>{\n let opts;\n if (typeof hook !== \"string\") {\n opts = hook;\n hook = opts.hook;\n } else opts = {};\n hook = hook.trim();\n const [stage, signature] = hook.split(\":\");\n const name = hook.replace(/\\(.+/, \"\");\n result[stage][name] = Object.assign(opts, {\n signature: signature\n });\n });\n return result;\n}\n\n});\nparcelRegister(\"62jMs\", function(module, exports) {\n\n$parcel$export(module.exports, \"resolveModules\", function () { return $465245f83ff1d29c$export$85f943437bcc1df; });\n\nvar $9a3nx = parcelRequire(\"9a3nx\");\n\nvar $8xCEr = parcelRequire(\"8xCEr\");\nfunction $465245f83ff1d29c$export$85f943437bcc1df(modules) {\n return $465245f83ff1d29c$var$getShaderDependencies($465245f83ff1d29c$var$instantiateModules(modules));\n}\nfunction $465245f83ff1d29c$var$getShaderDependencies(modules) {\n const moduleMap = {};\n const moduleDepth = {};\n $465245f83ff1d29c$var$getDependencyGraph({\n modules: modules,\n level: 0,\n moduleMap: moduleMap,\n moduleDepth: moduleDepth\n });\n return Object.keys(moduleDepth).sort((a, b)=>moduleDepth[b] - moduleDepth[a]).map((name)=>moduleMap[name]);\n}\nfunction $465245f83ff1d29c$var$getDependencyGraph(_ref) {\n let { modules: modules, level: level, moduleMap: moduleMap, moduleDepth: moduleDepth } = _ref;\n if (level >= 5) throw new Error(\"Possible loop in shader dependency graph\");\n for (const module of modules){\n moduleMap[module.name] = module;\n if (moduleDepth[module.name] === undefined || moduleDepth[module.name] < level) moduleDepth[module.name] = level;\n }\n for (const module of modules)if (module.dependencies) $465245f83ff1d29c$var$getDependencyGraph({\n modules: module.dependencies,\n level: level + 1,\n moduleMap: moduleMap,\n moduleDepth: moduleDepth\n });\n}\nfunction $465245f83ff1d29c$var$instantiateModules(modules, seen) {\n return modules.map((module)=>{\n if (module instanceof (0, $9a3nx.default)) return module;\n (0, $8xCEr.default)(typeof module !== \"string\", \"Shader module use by name is deprecated. Import shader module '\".concat(module, \"' and use it directly.\"));\n (0, $8xCEr.default)(module.name, \"shader module has no name\");\n module = new (0, $9a3nx.default)(module);\n module.dependencies = $465245f83ff1d29c$var$instantiateModules(module.dependencies);\n return module;\n });\n}\nconst $465245f83ff1d29c$export$b63c82f0e67dfc21 = {\n getShaderDependencies: $465245f83ff1d29c$var$getShaderDependencies,\n getDependencyGraph: $465245f83ff1d29c$var$getDependencyGraph\n};\n\n});\nparcelRegister(\"9a3nx\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6ab7ab2e8d0100c4$export$2e2bcd8739ae039; });\n\nvar $8xCEr = parcelRequire(\"8xCEr\");\n\nvar $h1Y6G = parcelRequire(\"h1Y6G\");\nconst $6ab7ab2e8d0100c4$var$VERTEX_SHADER = \"vs\";\nconst $6ab7ab2e8d0100c4$var$FRAGMENT_SHADER = \"fs\";\nclass $6ab7ab2e8d0100c4$export$2e2bcd8739ae039 {\n getModuleSource(type) {\n let moduleSource;\n switch(type){\n case $6ab7ab2e8d0100c4$var$VERTEX_SHADER:\n moduleSource = this.vs || \"\";\n break;\n case $6ab7ab2e8d0100c4$var$FRAGMENT_SHADER:\n moduleSource = this.fs || \"\";\n break;\n default:\n (0, $8xCEr.default)(false);\n }\n return \"#define MODULE_\".concat(this.name.toUpperCase().replace(/[^0-9a-z]/gi, \"_\"), \"\\n\").concat(moduleSource, \"// END MODULE_\").concat(this.name, \"\\n\\n\");\n }\n getUniforms(opts, uniforms) {\n if (this.getModuleUniforms) return this.getModuleUniforms(opts, uniforms);\n if (this.uniforms) return this._defaultGetUniforms(opts);\n return {};\n }\n getDefines() {\n return this.defines;\n }\n checkDeprecations(shaderSource, log) {\n this.deprecations.forEach((def)=>{\n if (def.regex.test(shaderSource)) {\n if (def.deprecated) log.deprecated(def.old, def.new)();\n else log.removed(def.old, def.new)();\n }\n });\n }\n _parseDeprecationDefinitions(deprecations) {\n deprecations.forEach((def)=>{\n switch(def.type){\n case \"function\":\n def.regex = new RegExp(\"\\\\b\".concat(def.old, \"\\\\(\"));\n break;\n default:\n def.regex = new RegExp(\"\".concat(def.type, \" \").concat(def.old, \";\"));\n }\n });\n return deprecations;\n }\n _defaultGetUniforms() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const uniforms = {};\n const propTypes = this.uniforms;\n for(const key in propTypes){\n const propDef = propTypes[key];\n if (key in opts && !propDef.private) {\n if (propDef.validate) (0, $8xCEr.default)(propDef.validate(opts[key], propDef), \"\".concat(this.name, \": invalid \").concat(key));\n uniforms[key] = opts[key];\n } else uniforms[key] = propDef.value;\n }\n return uniforms;\n }\n constructor(_ref){\n let { name: name, vs: vs, fs: fs, dependencies: dependencies = [], uniforms: uniforms, getUniforms: getUniforms, deprecations: deprecations = [], defines: defines = {}, inject: inject = {}, vertexShader: vertexShader, fragmentShader: fragmentShader } = _ref;\n (0, $8xCEr.default)(typeof name === \"string\");\n this.name = name;\n this.vs = vs || vertexShader;\n this.fs = fs || fragmentShader;\n this.getModuleUniforms = getUniforms;\n this.dependencies = dependencies;\n this.deprecations = this._parseDeprecationDefinitions(deprecations);\n this.defines = defines;\n this.injections = $6ab7ab2e8d0100c4$var$normalizeInjections(inject);\n if (uniforms) this.uniforms = (0, $h1Y6G.parsePropTypes)(uniforms);\n }\n}\nfunction $6ab7ab2e8d0100c4$export$68c1c1f4f5c924cc(module) {\n if (!module.normalized) {\n module.normalized = true;\n if (module.uniforms && !module.getUniforms) {\n const shaderModule = new $6ab7ab2e8d0100c4$export$2e2bcd8739ae039(module);\n module.getUniforms = shaderModule.getUniforms.bind(shaderModule);\n }\n }\n return module;\n}\nfunction $6ab7ab2e8d0100c4$var$normalizeInjections(injections) {\n const result = {\n vs: {},\n fs: {}\n };\n for(const hook in injections){\n let injection = injections[hook];\n const stage = hook.slice(0, 2);\n if (typeof injection === \"string\") injection = {\n order: 0,\n injection: injection\n };\n result[stage][hook] = injection;\n }\n return result;\n}\n\n});\nparcelRegister(\"h1Y6G\", function(module, exports) {\n\n$parcel$export(module.exports, \"parsePropTypes\", function () { return $c66127a1db59e0a5$export$6335b16489944934; });\nconst $c66127a1db59e0a5$var$TYPE_DEFINITIONS = {\n number: {\n validate (value, propType) {\n return Number.isFinite(value) && (!(\"max\" in propType) || value <= propType.max) && (!(\"min\" in propType) || value >= propType.min);\n }\n },\n array: {\n validate (value, propType) {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n }\n }\n};\nfunction $c66127a1db59e0a5$export$6335b16489944934(propDefs) {\n const propTypes = {};\n for(const propName in propDefs){\n const propDef = propDefs[propName];\n const propType = $c66127a1db59e0a5$var$parsePropType(propDef);\n propTypes[propName] = propType;\n }\n return propTypes;\n}\nfunction $c66127a1db59e0a5$var$parsePropType(propDef) {\n let type = $c66127a1db59e0a5$var$getTypeOf(propDef);\n if (type === \"object\") {\n if (!propDef) return {\n type: \"object\",\n value: null\n };\n if (\"type\" in propDef) return Object.assign({}, propDef, $c66127a1db59e0a5$var$TYPE_DEFINITIONS[propDef.type]);\n if (!(\"value\" in propDef)) return {\n type: \"object\",\n value: propDef\n };\n type = $c66127a1db59e0a5$var$getTypeOf(propDef.value);\n return Object.assign({\n type: type\n }, propDef, $c66127a1db59e0a5$var$TYPE_DEFINITIONS[type]);\n }\n return Object.assign({\n type: type,\n value: propDef\n }, $c66127a1db59e0a5$var$TYPE_DEFINITIONS[type]);\n}\nfunction $c66127a1db59e0a5$var$getTypeOf(value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) return \"array\";\n return typeof value;\n}\n\n});\n\n\n\nparcelRegister(\"94X71\", function(module, exports) {\n\n$parcel$export(module.exports, \"getPlatformShaderDefines\", function () { return $69c2573810685c37$export$2c56069b1b5c9cc2; });\n$parcel$export(module.exports, \"getVersionDefines\", function () { return $69c2573810685c37$export$e7726ded64e86312; });\n\nvar $5b05P = parcelRequire(\"5b05P\");\nfunction $69c2573810685c37$export$2c56069b1b5c9cc2(gl) {\n const debugInfo = (0, $5b05P.getContextInfo)(gl);\n switch(debugInfo.gpuVendor.toLowerCase()){\n case \"nvidia\":\n return \"#define NVIDIA_GPU\\n// Nvidia optimizes away the calculation necessary for emulated fp64\\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\\n\";\n case \"intel\":\n return \"#define INTEL_GPU\\n// Intel optimizes away the calculation necessary for emulated fp64\\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\\n// Intel's built-in 'tan' function doesn't have acceptable precision\\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\\n\";\n case \"amd\":\n return \"#define AMD_GPU\\n\";\n default:\n return \"#define DEFAULT_GPU\\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\\n// Intel's built-in 'tan' function doesn't have acceptable precision\\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\\n\";\n }\n}\nfunction $69c2573810685c37$export$e7726ded64e86312(gl, glslVersion, isFragment) {\n let versionDefines = \"#if (__VERSION__ > 120)\\n\\n# define FEATURE_GLSL_DERIVATIVES\\n# define FEATURE_GLSL_DRAW_BUFFERS\\n# define FEATURE_GLSL_FRAG_DEPTH\\n# define FEATURE_GLSL_TEXTURE_LOD\\n\\n// DEPRECATED FLAGS, remove in v9\\n# define FRAG_DEPTH\\n# define DERIVATIVES\\n# define DRAW_BUFFERS\\n# define TEXTURE_LOD\\n\\n#endif // __VERSION\\n\";\n if ((0, $5b05P.hasFeatures)(gl, (0, $5b05P.FEATURES).GLSL_FRAG_DEPTH)) versionDefines += \"\\n// FRAG_DEPTH => gl_FragDepth is available\\n#ifdef GL_EXT_frag_depth\\n#extension GL_EXT_frag_depth : enable\\n# define FEATURE_GLSL_FRAG_DEPTH\\n# define FRAG_DEPTH\\n# define gl_FragDepth gl_FragDepthEXT\\n#endif\\n\";\n if ((0, $5b05P.hasFeatures)(gl, (0, $5b05P.FEATURES).GLSL_DERIVATIVES) && (0, $5b05P.canCompileGLGSExtension)(gl, (0, $5b05P.FEATURES).GLSL_DERIVATIVES)) versionDefines += \"\\n// DERIVATIVES => dxdF, dxdY and fwidth are available\\n#ifdef GL_OES_standard_derivatives\\n#extension GL_OES_standard_derivatives : enable\\n# define FEATURE_GLSL_DERIVATIVES\\n# define DERIVATIVES\\n#endif\\n\";\n if ((0, $5b05P.hasFeatures)(gl, (0, $5b05P.FEATURES).GLSL_FRAG_DATA) && (0, $5b05P.canCompileGLGSExtension)(gl, (0, $5b05P.FEATURES).GLSL_FRAG_DATA, {\n behavior: \"require\"\n })) versionDefines += \"\\n// DRAW_BUFFERS => gl_FragData[] is available\\n#ifdef GL_EXT_draw_buffers\\n#extension GL_EXT_draw_buffers : require\\n#define FEATURE_GLSL_DRAW_BUFFERS\\n#define DRAW_BUFFERS\\n#endif\\n\";\n if ((0, $5b05P.hasFeatures)(gl, (0, $5b05P.FEATURES).GLSL_TEXTURE_LOD)) versionDefines += \"// TEXTURE_LOD => texture2DLod etc are available\\n#ifdef GL_EXT_shader_texture_lod\\n#extension GL_EXT_shader_texture_lod : enable\\n\\n# define FEATURE_GLSL_TEXTURE_LOD\\n# define TEXTURE_LOD\\n\\n#endif\\n\";\n return versionDefines;\n}\n\n});\nparcelRegister(\"5b05P\", function(module, exports) {\n\n$parcel$export(module.exports, \"FEATURES\", function () { return $3c4e0d4b8052599d$export$d6a5c11f04f75862; });\n$parcel$export(module.exports, \"getContextInfo\", function () { return $3c4e0d4b8052599d$export$906f0ebe0848c767; });\n$parcel$export(module.exports, \"canCompileGLGSExtension\", function () { return $3c4e0d4b8052599d$export$e5033c6f31304d8c; });\n$parcel$export(module.exports, \"hasFeatures\", function () { return $3c4e0d4b8052599d$export$990fdf4f5aca9ddb; });\n\nvar $4fIr0 = parcelRequire(\"4fIr0\");\n\nvar $8xCEr = parcelRequire(\"8xCEr\");\nconst $3c4e0d4b8052599d$var$GL_VENDOR = 0x1f00;\nconst $3c4e0d4b8052599d$var$GL_RENDERER = 0x1f01;\nconst $3c4e0d4b8052599d$var$GL_VERSION = 0x1f02;\nconst $3c4e0d4b8052599d$var$GL_SHADING_LANGUAGE_VERSION = 0x8b8c;\nconst $3c4e0d4b8052599d$var$WEBGL_FEATURES = {\n GLSL_FRAG_DATA: [\n \"WEBGL_draw_buffers\",\n true\n ],\n GLSL_FRAG_DEPTH: [\n \"EXT_frag_depth\",\n true\n ],\n GLSL_DERIVATIVES: [\n \"OES_standard_derivatives\",\n true\n ],\n GLSL_TEXTURE_LOD: [\n \"EXT_shader_texture_lod\",\n true\n ]\n};\nconst $3c4e0d4b8052599d$export$d6a5c11f04f75862 = {};\nObject.keys($3c4e0d4b8052599d$var$WEBGL_FEATURES).forEach((key)=>{\n $3c4e0d4b8052599d$export$d6a5c11f04f75862[key] = key;\n});\nfunction $3c4e0d4b8052599d$var$isWebGL2(gl) {\n if (typeof WebGL2RenderingContext !== \"undefined\" && gl instanceof WebGL2RenderingContext) return true;\n return Boolean(gl && gl._version === 2);\n}\nfunction $3c4e0d4b8052599d$export$906f0ebe0848c767(gl) {\n const info = gl.getExtension(\"WEBGL_debug_renderer_info\");\n const vendor = gl.getParameter(info && info.UNMASKED_VENDOR_WEBGL || $3c4e0d4b8052599d$var$GL_VENDOR);\n const renderer = gl.getParameter(info && info.UNMASKED_RENDERER_WEBGL || $3c4e0d4b8052599d$var$GL_RENDERER);\n const gpuVendor = $3c4e0d4b8052599d$var$identifyGPUVendor(vendor, renderer);\n const gpuInfo = {\n gpuVendor: gpuVendor,\n vendor: vendor,\n renderer: renderer,\n version: gl.getParameter($3c4e0d4b8052599d$var$GL_VERSION),\n shadingLanguageVersion: gl.getParameter($3c4e0d4b8052599d$var$GL_SHADING_LANGUAGE_VERSION)\n };\n return gpuInfo;\n}\nfunction $3c4e0d4b8052599d$var$identifyGPUVendor(vendor, renderer) {\n if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) return \"NVIDIA\";\n if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) return \"INTEL\";\n if (vendor.match(/AMD/i) || renderer.match(/AMD/i) || vendor.match(/ATI/i) || renderer.match(/ATI/i)) return \"AMD\";\n return \"UNKNOWN GPU\";\n}\nconst $3c4e0d4b8052599d$var$compiledGlslExtensions = {};\nfunction $3c4e0d4b8052599d$export$e5033c6f31304d8c(gl, cap) {\n let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const feature = $3c4e0d4b8052599d$var$WEBGL_FEATURES[cap];\n (0, $8xCEr.default)(feature, cap);\n if (!(0, $4fIr0.default)(opts)) return true;\n if (cap in $3c4e0d4b8052599d$var$compiledGlslExtensions) return $3c4e0d4b8052599d$var$compiledGlslExtensions[cap];\n const extensionName = feature[0];\n const behavior = opts.behavior || \"enable\";\n const source = \"#extension GL_\".concat(extensionName, \" : \").concat(behavior, \"\\nvoid main(void) {}\");\n const shader = gl.createShader(35633);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n const canCompile = gl.getShaderParameter(shader, 35713);\n gl.deleteShader(shader);\n $3c4e0d4b8052599d$var$compiledGlslExtensions[cap] = canCompile;\n return canCompile;\n}\nfunction $3c4e0d4b8052599d$var$getFeature(gl, cap) {\n const feature = $3c4e0d4b8052599d$var$WEBGL_FEATURES[cap];\n (0, $8xCEr.default)(feature, cap);\n const extensionName = $3c4e0d4b8052599d$var$isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n const value = typeof extensionName === \"string\" ? Boolean(gl.getExtension(extensionName)) : extensionName;\n (0, $8xCEr.default)(value === false || value === true);\n return value;\n}\nfunction $3c4e0d4b8052599d$export$990fdf4f5aca9ddb(gl, features) {\n features = Array.isArray(features) ? features : [\n features\n ];\n return features.every((feature)=>$3c4e0d4b8052599d$var$getFeature(gl, feature));\n}\n\n});\nparcelRegister(\"4fIr0\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $318b07eac101dbb3$export$2e2bcd8739ae039; });\nfunction $318b07eac101dbb3$export$2e2bcd8739ae039() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const navigator = typeof window !== \"undefined\" ? window.navigator || {} : {};\n const userAgent = opts.userAgent || navigator.userAgent || \"\";\n const isMSIE = userAgent.indexOf(\"MSIE \") !== -1;\n const isTrident = userAgent.indexOf(\"Trident/\") !== -1;\n return isMSIE || isTrident;\n}\n\n});\n\n\n\nparcelRegister(\"eqEdN\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $a812b18f87e27888$export$2e2bcd8739ae039; });\nfunction $a812b18f87e27888$var$testVariable(qualifier) {\n return new RegExp(\"\\\\b\".concat(qualifier, \"[ \\\\t]+(\\\\w+[ \\\\t]+\\\\w+(\\\\[\\\\w+\\\\])?;)\"), \"g\");\n}\nconst $a812b18f87e27888$var$ES300_REPLACEMENTS = [\n [\n /^(#version[ \\t]+(100|300[ \\t]+es))?[ \\t]*\\n/,\n \"#version 300 es\\n\"\n ],\n [\n /\\btexture(2D|2DProj|Cube)Lod(EXT)?\\(/g,\n \"textureLod(\"\n ],\n [\n /\\btexture(2D|2DProj|Cube)(EXT)?\\(/g,\n \"texture(\"\n ]\n];\nconst $a812b18f87e27888$var$ES300_VERTEX_REPLACEMENTS = [\n ...$a812b18f87e27888$var$ES300_REPLACEMENTS,\n [\n $a812b18f87e27888$var$testVariable(\"attribute\"),\n \"in $1\"\n ],\n [\n $a812b18f87e27888$var$testVariable(\"varying\"),\n \"out $1\"\n ]\n];\nconst $a812b18f87e27888$var$ES300_FRAGMENT_REPLACEMENTS = [\n ...$a812b18f87e27888$var$ES300_REPLACEMENTS,\n [\n $a812b18f87e27888$var$testVariable(\"varying\"),\n \"in $1\"\n ]\n];\nconst $a812b18f87e27888$var$ES100_REPLACEMENTS = [\n [\n /^#version[ \\t]+300[ \\t]+es/,\n \"#version 100\"\n ],\n [\n /\\btexture(2D|2DProj|Cube)Lod\\(/g,\n \"texture$1LodEXT(\"\n ],\n [\n /\\btexture\\(/g,\n \"texture2D(\"\n ],\n [\n /\\btextureLod\\(/g,\n \"texture2DLodEXT(\"\n ]\n];\nconst $a812b18f87e27888$var$ES100_VERTEX_REPLACEMENTS = [\n ...$a812b18f87e27888$var$ES100_REPLACEMENTS,\n [\n $a812b18f87e27888$var$testVariable(\"in\"),\n \"attribute $1\"\n ],\n [\n $a812b18f87e27888$var$testVariable(\"out\"),\n \"varying $1\"\n ]\n];\nconst $a812b18f87e27888$var$ES100_FRAGMENT_REPLACEMENTS = [\n ...$a812b18f87e27888$var$ES100_REPLACEMENTS,\n [\n $a812b18f87e27888$var$testVariable(\"in\"),\n \"varying $1\"\n ]\n];\nconst $a812b18f87e27888$var$ES100_FRAGMENT_OUTPUT_NAME = \"gl_FragColor\";\nconst $a812b18f87e27888$var$ES300_FRAGMENT_OUTPUT_REGEX = /\\bout[ \\t]+vec4[ \\t]+(\\w+)[ \\t]*;\\n?/;\nconst $a812b18f87e27888$var$REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/;\nfunction $a812b18f87e27888$export$2e2bcd8739ae039(source, targetGLSLVersion, isVertex) {\n switch(targetGLSLVersion){\n case 300:\n return isVertex ? $a812b18f87e27888$var$convertShader(source, $a812b18f87e27888$var$ES300_VERTEX_REPLACEMENTS) : $a812b18f87e27888$var$convertFragmentShaderTo300(source);\n case 100:\n return isVertex ? $a812b18f87e27888$var$convertShader(source, $a812b18f87e27888$var$ES100_VERTEX_REPLACEMENTS) : $a812b18f87e27888$var$convertFragmentShaderTo100(source);\n default:\n throw new Error(\"unknown GLSL version \".concat(targetGLSLVersion));\n }\n}\nfunction $a812b18f87e27888$var$convertShader(source, replacements) {\n for (const [pattern, replacement] of replacements)source = source.replace(pattern, replacement);\n return source;\n}\nfunction $a812b18f87e27888$var$convertFragmentShaderTo300(source) {\n source = $a812b18f87e27888$var$convertShader(source, $a812b18f87e27888$var$ES300_FRAGMENT_REPLACEMENTS);\n const outputMatch = source.match($a812b18f87e27888$var$ES300_FRAGMENT_OUTPUT_REGEX);\n if (outputMatch) {\n const outputName = outputMatch[1];\n source = source.replace(new RegExp(\"\\\\b\".concat($a812b18f87e27888$var$ES100_FRAGMENT_OUTPUT_NAME, \"\\\\b\"), \"g\"), outputName);\n } else {\n const outputName = \"fragmentColor\";\n source = source.replace($a812b18f87e27888$var$REGEX_START_OF_MAIN, (match)=>\"out vec4 \".concat(outputName, \";\\n\").concat(match)).replace(new RegExp(\"\\\\b\".concat($a812b18f87e27888$var$ES100_FRAGMENT_OUTPUT_NAME, \"\\\\b\"), \"g\"), outputName);\n }\n return source;\n}\nfunction $a812b18f87e27888$var$convertFragmentShaderTo100(source) {\n source = $a812b18f87e27888$var$convertShader(source, $a812b18f87e27888$var$ES100_FRAGMENT_REPLACEMENTS);\n const outputMatch = source.match($a812b18f87e27888$var$ES300_FRAGMENT_OUTPUT_REGEX);\n if (outputMatch) {\n const outputName = outputMatch[1];\n source = source.replace($a812b18f87e27888$var$ES300_FRAGMENT_OUTPUT_REGEX, \"\").replace(new RegExp(\"\\\\b\".concat(outputName, \"\\\\b\"), \"g\"), $a812b18f87e27888$var$ES100_FRAGMENT_OUTPUT_NAME);\n }\n return source;\n}\n\n});\n\n\nparcelRegister(\"dwmuk\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9d7fb5367fbd6906$export$2e2bcd8739ae039; });\n\nvar $1OVow = parcelRequire(\"1OVow\");\n\nvar $3D9dM = parcelRequire(\"3D9dM\");\n\nvar $cJo7e = parcelRequire(\"cJo7e\");\n\nvar $Lma8E = parcelRequire(\"Lma8E\");\n\nvar $kJXQX = parcelRequire(\"kJXQX\");\n\nvar $jw2vH = parcelRequire(\"jw2vH\");\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\nvar $lvicK = parcelRequire(\"lvicK\");\nvar $2SJyH = parcelRequire(\"2SJyH\");\n\nvar $5tEaG = parcelRequire(\"5tEaG\");\n\nvar $eX2kV = parcelRequire(\"eX2kV\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\n\nvar $iljOc = parcelRequire(\"iljOc\");\nconst $9d7fb5367fbd6906$var$LOG_PROGRAM_PERF_PRIORITY = 4;\nconst $9d7fb5367fbd6906$var$GL_SEPARATE_ATTRIBS = 0x8c8d;\nconst $9d7fb5367fbd6906$var$V6_DEPRECATED_METHODS = [\n \"setVertexArray\",\n \"setAttributes\",\n \"setBuffers\",\n \"unsetBuffers\",\n \"use\",\n \"getUniformCount\",\n \"getUniformInfo\",\n \"getUniformLocation\",\n \"getUniformValue\",\n \"getVarying\",\n \"getFragDataLocation\",\n \"getAttachedShaders\",\n \"getAttributeCount\",\n \"getAttributeLocation\",\n \"getAttributeInfo\"\n];\nclass $9d7fb5367fbd6906$export$2e2bcd8739ae039 extends (0, $1OVow.default) {\n get [Symbol.toStringTag]() {\n return \"Program\";\n }\n initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { hash: hash, vs: vs, fs: fs, varyings: varyings, bufferMode: bufferMode = $9d7fb5367fbd6906$var$GL_SEPARATE_ATTRIBS } = props;\n this.hash = hash || \"\";\n this.vs = typeof vs === \"string\" ? new (0, $kJXQX.VertexShader)(this.gl, {\n id: \"\".concat(props.id, \"-vs\"),\n source: vs\n }) : vs;\n this.fs = typeof fs === \"string\" ? new (0, $kJXQX.FragmentShader)(this.gl, {\n id: \"\".concat(props.id, \"-fs\"),\n source: fs\n }) : fs;\n (0, $ihfnu.assert)(this.vs instanceof (0, $kJXQX.VertexShader));\n (0, $ihfnu.assert)(this.fs instanceof (0, $kJXQX.FragmentShader));\n this.uniforms = {};\n this._textureUniforms = {};\n if (varyings && varyings.length > 0) {\n (0, $8HKWo.assertWebGL2Context)(this.gl);\n this.varyings = varyings;\n this.gl2.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n }\n this._compileAndLink();\n this._readUniformLocationsFromLinkedProgram();\n this.configuration = new (0, $jw2vH.default)(this);\n return this.setProps(props);\n }\n delete() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (this._isCached) return this;\n return super.delete(options);\n }\n setProps(props) {\n if (\"uniforms\" in props) this.setUniforms(props.uniforms);\n return this;\n }\n draw(_ref) {\n let { logPriority: logPriority, drawMode: drawMode = 4, vertexCount: vertexCount, offset: offset = 0, start: start, end: end, isIndexed: isIndexed = false, indexType: indexType = 5123, instanceCount: instanceCount = 0, isInstanced: isInstanced = instanceCount > 0, vertexArray: vertexArray = null, transformFeedback: transformFeedback, framebuffer: framebuffer, parameters: parameters = {}, uniforms: uniforms, samplers: samplers } = _ref;\n if (uniforms || samplers) {\n (0, $lvicK.log).deprecated(\"Program.draw({uniforms})\", \"Program.setUniforms(uniforms)\")();\n this.setUniforms(uniforms || {});\n }\n if ((0, $lvicK.log).priority >= logPriority) {\n const fb = framebuffer ? framebuffer.id : \"default\";\n const message = \"mode=\".concat((0, $5tEaG.getKey)(this.gl, drawMode), \" verts=\").concat(vertexCount, \" \") + \"instances=\".concat(instanceCount, \" indexType=\").concat((0, $5tEaG.getKey)(this.gl, indexType), \" \") + \"isInstanced=\".concat(isInstanced, \" isIndexed=\").concat(isIndexed, \" \") + \"Framebuffer=\".concat(fb);\n (0, $lvicK.log).log(logPriority, message)();\n }\n (0, $ihfnu.assert)(vertexArray);\n this.gl.useProgram(this.handle);\n if (!this._areTexturesRenderable() || vertexCount === 0 || isInstanced && instanceCount === 0) return false;\n vertexArray.bindForDraw(vertexCount, instanceCount, ()=>{\n if (framebuffer !== undefined) parameters = Object.assign({}, parameters, {\n framebuffer: framebuffer\n });\n if (transformFeedback) {\n const primitiveMode = (0, $eX2kV.getPrimitiveDrawMode)(drawMode);\n transformFeedback.begin(primitiveMode);\n }\n this._bindTextures();\n (0, $2SJyH.withParameters)(this.gl, parameters, ()=>{\n if (isIndexed && isInstanced) this.gl2.drawElementsInstanced(drawMode, vertexCount, indexType, offset, instanceCount);\n else if (isIndexed && (0, $8HKWo.isWebGL2)(this.gl) && !isNaN(start) && !isNaN(end)) this.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n else if (isIndexed) this.gl.drawElements(drawMode, vertexCount, indexType, offset);\n else if (isInstanced) this.gl2.drawArraysInstanced(drawMode, offset, vertexCount, instanceCount);\n else this.gl.drawArrays(drawMode, offset, vertexCount);\n });\n if (transformFeedback) transformFeedback.end();\n });\n return true;\n }\n setUniforms() {\n let uniforms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if ((0, $lvicK.log).priority >= 2) (0, $Lma8E.checkUniformValues)(uniforms, this.id, this._uniformSetters);\n this.gl.useProgram(this.handle);\n for(const uniformName in uniforms){\n const uniform = uniforms[uniformName];\n const uniformSetter = this._uniformSetters[uniformName];\n if (uniformSetter) {\n let value = uniform;\n let textureUpdate = false;\n if (value instanceof (0, $cJo7e.default)) value = value.texture;\n if (value instanceof (0, $3D9dM.default)) {\n textureUpdate = this.uniforms[uniformName] !== uniform;\n if (textureUpdate) {\n if (uniformSetter.textureIndex === undefined) uniformSetter.textureIndex = this._textureIndexCounter++;\n const texture = value;\n const { textureIndex: textureIndex } = uniformSetter;\n texture.bind(textureIndex);\n value = textureIndex;\n this._textureUniforms[uniformName] = texture;\n } else value = uniformSetter.textureIndex;\n } else if (this._textureUniforms[uniformName]) delete this._textureUniforms[uniformName];\n if (uniformSetter(value) || textureUpdate) (0, $Lma8E.copyUniform)(this.uniforms, uniformName, uniform);\n }\n }\n return this;\n }\n _areTexturesRenderable() {\n let texturesRenderable = true;\n for(const uniformName in this._textureUniforms){\n const texture = this._textureUniforms[uniformName];\n texture.update();\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n return texturesRenderable;\n }\n _bindTextures() {\n for(const uniformName in this._textureUniforms){\n const textureIndex = this._uniformSetters[uniformName].textureIndex;\n this._textureUniforms[uniformName].bind(textureIndex);\n }\n }\n _createHandle() {\n return this.gl.createProgram();\n }\n _deleteHandle() {\n this.gl.deleteProgram(this.handle);\n }\n _getOptionsFromHandle(handle) {\n const shaderHandles = this.gl.getAttachedShaders(handle);\n const opts = {};\n for (const shaderHandle of shaderHandles){\n const type = this.gl.getShaderParameter(this.handle, 35663);\n switch(type){\n case 35633:\n opts.vs = new (0, $kJXQX.VertexShader)({\n handle: shaderHandle\n });\n break;\n case 35632:\n opts.fs = new (0, $kJXQX.FragmentShader)({\n handle: shaderHandle\n });\n break;\n default:\n }\n }\n return opts;\n }\n _getParameter(pname) {\n return this.gl.getProgramParameter(this.handle, pname);\n }\n _setId(id) {\n if (!id) {\n const programName = this._getName();\n this.id = (0, $iljOc.uid)(programName);\n }\n }\n _getName() {\n let programName = this.vs.getName() || this.fs.getName();\n programName = programName.replace(/shader/i, \"\");\n programName = programName ? \"\".concat(programName, \"-program\") : \"program\";\n return programName;\n }\n _compileAndLink() {\n const { gl: gl } = this;\n gl.attachShader(this.handle, this.vs.handle);\n gl.attachShader(this.handle, this.fs.handle);\n (0, $lvicK.log).time($9d7fb5367fbd6906$var$LOG_PROGRAM_PERF_PRIORITY, \"linkProgram for \".concat(this._getName()))();\n gl.linkProgram(this.handle);\n (0, $lvicK.log).timeEnd($9d7fb5367fbd6906$var$LOG_PROGRAM_PERF_PRIORITY, \"linkProgram for \".concat(this._getName()))();\n if (gl.debug || (0, $lvicK.log).level > 0) {\n const linked = gl.getProgramParameter(this.handle, 35714);\n if (!linked) throw new Error(\"Error linking: \".concat(gl.getProgramInfoLog(this.handle)));\n gl.validateProgram(this.handle);\n const validated = gl.getProgramParameter(this.handle, 35715);\n if (!validated) throw new Error(\"Error validating: \".concat(gl.getProgramInfoLog(this.handle)));\n }\n }\n _readUniformLocationsFromLinkedProgram() {\n const { gl: gl } = this;\n this._uniformSetters = {};\n this._uniformCount = this._getParameter(35718);\n for(let i = 0; i < this._uniformCount; i++){\n const info = this.gl.getActiveUniform(this.handle, i);\n const { name: name } = (0, $Lma8E.parseUniformName)(info.name);\n let location = gl.getUniformLocation(this.handle, name);\n this._uniformSetters[name] = (0, $Lma8E.getUniformSetter)(gl, location, info);\n if (info.size > 1) for(let l = 0; l < info.size; l++){\n location = gl.getUniformLocation(this.handle, \"\".concat(name, \"[\").concat(l, \"]\"));\n this._uniformSetters[\"\".concat(name, \"[\").concat(l, \"]\")] = (0, $Lma8E.getUniformSetter)(gl, location, info);\n }\n }\n this._textureIndexCounter = 0;\n }\n getActiveUniforms(uniformIndices, pname) {\n return this.gl2.getActiveUniforms(this.handle, uniformIndices, pname);\n }\n getUniformBlockIndex(blockName) {\n return this.gl2.getUniformBlockIndex(this.handle, blockName);\n }\n getActiveUniformBlockParameter(blockIndex, pname) {\n return this.gl2.getActiveUniformBlockParameter(this.handle, blockIndex, pname);\n }\n uniformBlockBinding(blockIndex, blockBinding) {\n this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);\n }\n constructor(gl){\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(gl, props);\n this.stubRemovedMethods(\"Program\", \"v6.0\", $9d7fb5367fbd6906$var$V6_DEPRECATED_METHODS);\n this._isCached = false;\n this.initialize(props);\n Object.seal(this);\n this._setId(props.id);\n }\n}\n\n});\nparcelRegister(\"Lma8E\", function(module, exports) {\n\n$parcel$export(module.exports, \"getUniformSetter\", function () { return $08e594eac3dcdeb6$export$c2b5b6d0be3c2cf0; });\n$parcel$export(module.exports, \"parseUniformName\", function () { return $08e594eac3dcdeb6$export$ae5f39dc6a50a1c7; });\n$parcel$export(module.exports, \"checkUniformValues\", function () { return $08e594eac3dcdeb6$export$c83bcc63b305493; });\n$parcel$export(module.exports, \"copyUniform\", function () { return $08e594eac3dcdeb6$export$5ced140387f3d289; });\nparcelRequire(\"73UuK\");\nvar $lvicK = parcelRequire(\"lvicK\");\n\nvar $cJo7e = parcelRequire(\"cJo7e\");\n\nvar $8BnKG = parcelRequire(\"8BnKG\");\n\nvar $3D9dM = parcelRequire(\"3D9dM\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\nconst $08e594eac3dcdeb6$var$UNIFORM_SETTERS = {\n [5126]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniform1fv\", $08e594eac3dcdeb6$var$toFloatArray, 1, $08e594eac3dcdeb6$var$setVectorUniform),\n [35664]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniform2fv\", $08e594eac3dcdeb6$var$toFloatArray, 2, $08e594eac3dcdeb6$var$setVectorUniform),\n [35665]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniform3fv\", $08e594eac3dcdeb6$var$toFloatArray, 3, $08e594eac3dcdeb6$var$setVectorUniform),\n [35666]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniform4fv\", $08e594eac3dcdeb6$var$toFloatArray, 4, $08e594eac3dcdeb6$var$setVectorUniform),\n [5124]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniform1iv\", $08e594eac3dcdeb6$var$toIntArray, 1, $08e594eac3dcdeb6$var$setVectorUniform),\n [35667]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniform2iv\", $08e594eac3dcdeb6$var$toIntArray, 2, $08e594eac3dcdeb6$var$setVectorUniform),\n [35668]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniform3iv\", $08e594eac3dcdeb6$var$toIntArray, 3, $08e594eac3dcdeb6$var$setVectorUniform),\n [35669]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniform4iv\", $08e594eac3dcdeb6$var$toIntArray, 4, $08e594eac3dcdeb6$var$setVectorUniform),\n [35670]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniform1iv\", $08e594eac3dcdeb6$var$toIntArray, 1, $08e594eac3dcdeb6$var$setVectorUniform),\n [35671]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniform2iv\", $08e594eac3dcdeb6$var$toIntArray, 2, $08e594eac3dcdeb6$var$setVectorUniform),\n [35672]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniform3iv\", $08e594eac3dcdeb6$var$toIntArray, 3, $08e594eac3dcdeb6$var$setVectorUniform),\n [35673]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniform4iv\", $08e594eac3dcdeb6$var$toIntArray, 4, $08e594eac3dcdeb6$var$setVectorUniform),\n [35674]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniformMatrix2fv\", $08e594eac3dcdeb6$var$toFloatArray, 4, $08e594eac3dcdeb6$var$setMatrixUniform),\n [35675]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniformMatrix3fv\", $08e594eac3dcdeb6$var$toFloatArray, 9, $08e594eac3dcdeb6$var$setMatrixUniform),\n [35676]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniformMatrix4fv\", $08e594eac3dcdeb6$var$toFloatArray, 16, $08e594eac3dcdeb6$var$setMatrixUniform),\n [35678]: $08e594eac3dcdeb6$var$getSamplerSetter,\n [35680]: $08e594eac3dcdeb6$var$getSamplerSetter,\n [5125]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniform1uiv\", $08e594eac3dcdeb6$var$toUIntArray, 1, $08e594eac3dcdeb6$var$setVectorUniform),\n [36294]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniform2uiv\", $08e594eac3dcdeb6$var$toUIntArray, 2, $08e594eac3dcdeb6$var$setVectorUniform),\n [36295]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniform3uiv\", $08e594eac3dcdeb6$var$toUIntArray, 3, $08e594eac3dcdeb6$var$setVectorUniform),\n [36296]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniform4uiv\", $08e594eac3dcdeb6$var$toUIntArray, 4, $08e594eac3dcdeb6$var$setVectorUniform),\n [35685]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniformMatrix2x3fv\", $08e594eac3dcdeb6$var$toFloatArray, 6, $08e594eac3dcdeb6$var$setMatrixUniform),\n [35686]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniformMatrix2x4fv\", $08e594eac3dcdeb6$var$toFloatArray, 8, $08e594eac3dcdeb6$var$setMatrixUniform),\n [35687]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniformMatrix3x2fv\", $08e594eac3dcdeb6$var$toFloatArray, 6, $08e594eac3dcdeb6$var$setMatrixUniform),\n [35688]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniformMatrix3x4fv\", $08e594eac3dcdeb6$var$toFloatArray, 12, $08e594eac3dcdeb6$var$setMatrixUniform),\n [35689]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniformMatrix4x2fv\", $08e594eac3dcdeb6$var$toFloatArray, 8, $08e594eac3dcdeb6$var$setMatrixUniform),\n [35690]: $08e594eac3dcdeb6$var$getArraySetter.bind(null, \"uniformMatrix4x3fv\", $08e594eac3dcdeb6$var$toFloatArray, 12, $08e594eac3dcdeb6$var$setMatrixUniform),\n [35678]: $08e594eac3dcdeb6$var$getSamplerSetter,\n [35680]: $08e594eac3dcdeb6$var$getSamplerSetter,\n [35679]: $08e594eac3dcdeb6$var$getSamplerSetter,\n [35682]: $08e594eac3dcdeb6$var$getSamplerSetter,\n [36289]: $08e594eac3dcdeb6$var$getSamplerSetter,\n [36292]: $08e594eac3dcdeb6$var$getSamplerSetter,\n [36293]: $08e594eac3dcdeb6$var$getSamplerSetter,\n [36298]: $08e594eac3dcdeb6$var$getSamplerSetter,\n [36299]: $08e594eac3dcdeb6$var$getSamplerSetter,\n [36300]: $08e594eac3dcdeb6$var$getSamplerSetter,\n [36303]: $08e594eac3dcdeb6$var$getSamplerSetter,\n [36306]: $08e594eac3dcdeb6$var$getSamplerSetter,\n [36307]: $08e594eac3dcdeb6$var$getSamplerSetter,\n [36308]: $08e594eac3dcdeb6$var$getSamplerSetter,\n [36311]: $08e594eac3dcdeb6$var$getSamplerSetter\n};\nconst $08e594eac3dcdeb6$var$FLOAT_ARRAY = {};\nconst $08e594eac3dcdeb6$var$INT_ARRAY = {};\nconst $08e594eac3dcdeb6$var$UINT_ARRAY = {};\nconst $08e594eac3dcdeb6$var$array1 = [\n 0\n];\nfunction $08e594eac3dcdeb6$var$toTypedArray(value, uniformLength, Type, cache) {\n if (uniformLength === 1 && typeof value === \"boolean\") value = value ? 1 : 0;\n if (Number.isFinite(value)) {\n $08e594eac3dcdeb6$var$array1[0] = value;\n value = $08e594eac3dcdeb6$var$array1;\n }\n const length = value.length;\n if (length % uniformLength) (0, $lvicK.log).warn(\"Uniform size should be multiples of \".concat(uniformLength), value)();\n if (value instanceof Type) return value;\n let result = cache[length];\n if (!result) {\n result = new Type(length);\n cache[length] = result;\n }\n for(let i = 0; i < length; i++)result[i] = value[i];\n return result;\n}\nfunction $08e594eac3dcdeb6$var$toFloatArray(value, uniformLength) {\n return $08e594eac3dcdeb6$var$toTypedArray(value, uniformLength, Float32Array, $08e594eac3dcdeb6$var$FLOAT_ARRAY);\n}\nfunction $08e594eac3dcdeb6$var$toIntArray(value, uniformLength) {\n return $08e594eac3dcdeb6$var$toTypedArray(value, uniformLength, Int32Array, $08e594eac3dcdeb6$var$INT_ARRAY);\n}\nfunction $08e594eac3dcdeb6$var$toUIntArray(value, uniformLength) {\n return $08e594eac3dcdeb6$var$toTypedArray(value, uniformLength, Uint32Array, $08e594eac3dcdeb6$var$UINT_ARRAY);\n}\nfunction $08e594eac3dcdeb6$export$c2b5b6d0be3c2cf0(gl, location, info) {\n const setter = $08e594eac3dcdeb6$var$UNIFORM_SETTERS[info.type];\n if (!setter) throw new Error(\"Unknown GLSL uniform type \".concat(info.type));\n return setter().bind(null, gl, location);\n}\nfunction $08e594eac3dcdeb6$export$ae5f39dc6a50a1c7(name) {\n if (name[name.length - 1] !== \"]\") return {\n name: name,\n length: 1,\n isArray: false\n };\n const UNIFORM_NAME_REGEXP = /([^[]*)(\\[[0-9]+\\])?/;\n const matches = name.match(UNIFORM_NAME_REGEXP);\n if (!matches || matches.length < 2) throw new Error(\"Failed to parse GLSL uniform name \".concat(name));\n return {\n name: matches[1],\n length: matches[2] || 1,\n isArray: Boolean(matches[2])\n };\n}\nfunction $08e594eac3dcdeb6$export$c83bcc63b305493(uniforms, source, uniformMap) {\n for(const uniformName in uniforms){\n const value = uniforms[uniformName];\n const shouldCheck = !uniformMap || Boolean(uniformMap[uniformName]);\n if (shouldCheck && !$08e594eac3dcdeb6$var$checkUniformValue(value)) {\n source = source ? \"\".concat(source, \" \") : \"\";\n console.error(\"\".concat(source, \" Bad uniform \").concat(uniformName), value);\n throw new Error(\"\".concat(source, \" Bad uniform \").concat(uniformName));\n }\n }\n return true;\n}\nfunction $08e594eac3dcdeb6$var$checkUniformValue(value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) return $08e594eac3dcdeb6$var$checkUniformArray(value);\n if (isFinite(value)) return true;\n else if (value === true || value === false) return true;\n else if (value instanceof (0, $3D9dM.default)) return true;\n else if (value instanceof (0, $8BnKG.default)) return true;\n else if (value instanceof (0, $cJo7e.default)) return Boolean(value.texture);\n return false;\n}\nfunction $08e594eac3dcdeb6$export$5ced140387f3d289(uniforms, key, value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n if (uniforms[key]) {\n const dest = uniforms[key];\n for(let i = 0, len = value.length; i < len; ++i)dest[i] = value[i];\n } else uniforms[key] = value.slice();\n } else uniforms[key] = value;\n}\nfunction $08e594eac3dcdeb6$var$checkUniformArray(value) {\n if (value.length === 0) return false;\n const checkLength = Math.min(value.length, 16);\n for(let i = 0; i < checkLength; ++i){\n if (!Number.isFinite(value[i])) return false;\n }\n return true;\n}\nfunction $08e594eac3dcdeb6$var$getSamplerSetter() {\n let cache = null;\n return (gl, location, value)=>{\n const update = cache !== value;\n if (update) {\n gl.uniform1i(location, value);\n cache = value;\n }\n return update;\n };\n}\nfunction $08e594eac3dcdeb6$var$getArraySetter(functionName, toArray, size, uniformSetter) {\n let cache = null;\n let cacheLength = null;\n return (gl, location, value)=>{\n const arrayValue = toArray(value, size);\n const length = arrayValue.length;\n let update = false;\n if (cache === null) {\n cache = new Float32Array(length);\n cacheLength = length;\n update = true;\n } else {\n (0, $ihfnu.assert)(cacheLength === length, \"Uniform length cannot change.\");\n for(let i = 0; i < length; ++i)if (arrayValue[i] !== cache[i]) {\n update = true;\n break;\n }\n }\n if (update) {\n uniformSetter(gl, functionName, location, arrayValue);\n cache.set(arrayValue);\n }\n return update;\n };\n}\nfunction $08e594eac3dcdeb6$var$setVectorUniform(gl, functionName, location, value) {\n gl[functionName](location, value);\n}\nfunction $08e594eac3dcdeb6$var$setMatrixUniform(gl, functionName, location, value) {\n gl[functionName](location, false, value);\n}\n\n});\n\nparcelRegister(\"kJXQX\", function(module, exports) {\n\n$parcel$export(module.exports, \"VertexShader\", function () { return $f19670361bcd788a$export$cb28509c217600d2; });\n$parcel$export(module.exports, \"FragmentShader\", function () { return $f19670361bcd788a$export$2d38bde43c53f87a; });\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\nvar $lvicK = parcelRequire(\"lvicK\");\n\nvar $iUJ8p = parcelRequire(\"iUJ8p\");\nvar $2Bdlp = parcelRequire(\"2Bdlp\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\n\nvar $iljOc = parcelRequire(\"iljOc\");\n\nvar $1OVow = parcelRequire(\"1OVow\");\nconst $f19670361bcd788a$var$ERR_SOURCE = \"Shader: GLSL source code must be a JavaScript string\";\nclass $f19670361bcd788a$export$462bb059fed9d9e5 extends (0, $1OVow.default) {\n get [Symbol.toStringTag]() {\n return \"Shader\";\n }\n static getTypeName(shaderType) {\n switch(shaderType){\n case 35633:\n return \"vertex-shader\";\n case 35632:\n return \"fragment-shader\";\n default:\n (0, $ihfnu.assert)(false);\n return \"unknown\";\n }\n }\n initialize(_ref) {\n let { source: source } = _ref;\n const shaderName = (0, $iUJ8p.default)(source, null);\n if (shaderName) this.id = (0, $iljOc.uid)(shaderName);\n this._compile(source);\n }\n getParameter(pname) {\n return this.gl.getShaderParameter(this.handle, pname);\n }\n toString() {\n return \"\".concat($f19670361bcd788a$export$462bb059fed9d9e5.getTypeName(this.shaderType), \":\").concat(this.id);\n }\n getName() {\n return (0, $iUJ8p.default)(this.source) || \"unnamed-shader\";\n }\n getSource() {\n return this.gl.getShaderSource(this.handle);\n }\n getTranslatedSource() {\n const extension = this.gl.getExtension(\"WEBGL_debug_shaders\");\n return extension ? extension.getTranslatedShaderSource(this.handle) : \"No translated source available. WEBGL_debug_shaders not implemented\";\n }\n _compile() {\n let source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.source;\n if (!source.startsWith(\"#version \")) source = \"#version 100\\n\".concat(source);\n this.source = source;\n this.gl.shaderSource(this.handle, this.source);\n this.gl.compileShader(this.handle);\n const compileStatus = this.getParameter(35713);\n if (!compileStatus) {\n const infoLog = this.gl.getShaderInfoLog(this.handle);\n const { shaderName: shaderName, errors: errors, warnings: warnings } = (0, $2Bdlp.parseGLSLCompilerError)(infoLog, this.source, this.shaderType, this.id);\n (0, $lvicK.log).error(\"GLSL compilation errors in \".concat(shaderName, \"\\n\").concat(errors))();\n (0, $lvicK.log).warn(\"GLSL compilation warnings in \".concat(shaderName, \"\\n\").concat(warnings))();\n throw new Error(\"GLSL compilation errors in \".concat(shaderName));\n }\n }\n _deleteHandle() {\n this.gl.deleteShader(this.handle);\n }\n _getOptsFromHandle() {\n return {\n type: this.getParameter(35663),\n source: this.getSource()\n };\n }\n constructor(gl, props){\n (0, $8HKWo.assertWebGLContext)(gl);\n (0, $ihfnu.assert)(typeof props.source === \"string\", $f19670361bcd788a$var$ERR_SOURCE);\n const id = (0, $iUJ8p.default)(props.source, null) || props.id || (0, $iljOc.uid)(\"unnamed \".concat($f19670361bcd788a$export$462bb059fed9d9e5.getTypeName(props.shaderType)));\n super(gl, {\n id: id\n });\n this.shaderType = props.shaderType;\n this.source = props.source;\n this.initialize(props);\n }\n}\nclass $f19670361bcd788a$export$cb28509c217600d2 extends $f19670361bcd788a$export$462bb059fed9d9e5 {\n get [Symbol.toStringTag]() {\n return \"VertexShader\";\n }\n _createHandle() {\n return this.gl.createShader(35633);\n }\n constructor(gl, props){\n if (typeof props === \"string\") props = {\n source: props\n };\n super(gl, Object.assign({}, props, {\n shaderType: 35633\n }));\n }\n}\nclass $f19670361bcd788a$export$2d38bde43c53f87a extends $f19670361bcd788a$export$462bb059fed9d9e5 {\n get [Symbol.toStringTag]() {\n return \"FragmentShader\";\n }\n _createHandle() {\n return this.gl.createShader(35632);\n }\n constructor(gl, props){\n if (typeof props === \"string\") props = {\n source: props\n };\n super(gl, Object.assign({}, props, {\n shaderType: 35632\n }));\n }\n}\n\n});\nparcelRegister(\"iUJ8p\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $dc5077bd8c8fd933$export$2e2bcd8739ae039; });\nfunction $dc5077bd8c8fd933$export$2e2bcd8739ae039(shader) {\n let defaultName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"unnamed\";\n const SHADER_NAME_REGEXP = /#define[\\s*]SHADER_NAME[\\s*]([A-Za-z0-9_-]+)[\\s*]/;\n const match = shader.match(SHADER_NAME_REGEXP);\n return match ? match[1] : defaultName;\n}\n\n});\n\nparcelRegister(\"2Bdlp\", function(module, exports) {\n\n$parcel$export(module.exports, \"parseGLSLCompilerError\", function () { return $1e49635c8b013159$export$b279b0ccf17fdc42; });\n\nvar $iUJ8p = parcelRequire(\"iUJ8p\");\n\nvar $f0GLy = parcelRequire(\"f0GLy\");\nfunction $1e49635c8b013159$export$2e2bcd8739ae039(errLog, src, shaderType) {\n const { shaderName: shaderName, errors: errors, warnings: warnings } = $1e49635c8b013159$export$b279b0ccf17fdc42(errLog, src, shaderType);\n return \"GLSL compilation error in \".concat(shaderName, \"\\n\\n\").concat(errors, \"\\n\").concat(warnings);\n}\nfunction $1e49635c8b013159$export$b279b0ccf17fdc42(errLog, src, shaderType, shaderName) {\n const errorStrings = errLog.split(/\\r?\\n/);\n const errors = {};\n const warnings = {};\n const name = shaderName || (0, $iUJ8p.default)(src) || \"(unnamed)\";\n const shaderDescription = \"\".concat((0, $f0GLy.default)(shaderType), \" shader \").concat(name);\n for(let i = 0; i < errorStrings.length; i++){\n const errorString = errorStrings[i];\n if (errorString.length <= 1) continue;\n const segments = errorString.split(\":\");\n const type = segments[0];\n const line = parseInt(segments[2], 10);\n if (isNaN(line)) throw new Error(\"GLSL compilation error in \".concat(shaderDescription, \": \").concat(errLog));\n if (type !== \"WARNING\") errors[line] = errorString;\n else warnings[line] = errorString;\n }\n const lines = $1e49635c8b013159$var$addLineNumbers(src);\n return {\n shaderName: shaderDescription,\n errors: $1e49635c8b013159$var$formatErrors(errors, lines),\n warnings: $1e49635c8b013159$var$formatErrors(warnings, lines)\n };\n}\nfunction $1e49635c8b013159$var$formatErrors(errors, lines) {\n let message = \"\";\n for(let i = 0; i < lines.length; i++){\n const line = lines[i];\n if (!errors[i + 3] && !errors[i + 2] && !errors[i + 1]) continue;\n message += \"\".concat(line, \"\\n\");\n if (errors[i + 1]) {\n const error = errors[i + 1];\n const segments = error.split(\":\", 3);\n const type = segments[0];\n const column = parseInt(segments[1], 10) || 0;\n const err = error.substring(segments.join(\":\").length + 1).trim();\n message += $1e49635c8b013159$var$padLeft(\"^^^ \".concat(type, \": \").concat(err, \"\\n\\n\"), column);\n }\n }\n return message;\n}\nfunction $1e49635c8b013159$var$addLineNumbers(string) {\n let start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n let delim = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \": \";\n const lines = string.split(/\\r?\\n/);\n const maxDigits = String(lines.length + start - 1).length;\n return lines.map((line, i)=>{\n const lineNumber = String(i + start);\n const digits = lineNumber.length;\n const prefix = $1e49635c8b013159$var$padLeft(lineNumber, maxDigits - digits);\n return prefix + delim + line;\n });\n}\nfunction $1e49635c8b013159$var$padLeft(string, digits) {\n let result = \"\";\n for(let i = 0; i < digits; ++i)result += \" \";\n return \"\".concat(result).concat(string);\n}\n\n});\nparcelRegister(\"f0GLy\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $aed80790d21dfd50$export$2e2bcd8739ae039; });\nconst $aed80790d21dfd50$var$GL_FRAGMENT_SHADER = 0x8b30;\nconst $aed80790d21dfd50$var$GL_VERTEX_SHADER = 0x8b31;\nfunction $aed80790d21dfd50$export$2e2bcd8739ae039(type) {\n switch(type){\n case $aed80790d21dfd50$var$GL_FRAGMENT_SHADER:\n return \"fragment\";\n case $aed80790d21dfd50$var$GL_VERTEX_SHADER:\n return \"vertex\";\n default:\n return \"unknown type\";\n }\n}\n\n});\n\n\n\nparcelRegister(\"jw2vH\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $e352f3fb8f43d6e4$export$2e2bcd8739ae039; });\n\nvar $35tVQ = parcelRequire(\"35tVQ\");\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\n\nvar $eX2kV = parcelRequire(\"eX2kV\");\nclass $e352f3fb8f43d6e4$export$2e2bcd8739ae039 {\n getAttributeInfo(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) return this.attributeInfosByLocation[location];\n return this.attributeInfosByName[locationOrName] || null;\n }\n getAttributeLocation(locationOrName) {\n const attributeInfo = this.getAttributeInfo(locationOrName);\n return attributeInfo ? attributeInfo.location : -1;\n }\n getAttributeAccessor(locationOrName) {\n const attributeInfo = this.getAttributeInfo(locationOrName);\n return attributeInfo ? attributeInfo.accessor : null;\n }\n getVaryingInfo(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) return this.varyingInfos[location];\n return this.varyingInfosByName[locationOrName] || null;\n }\n getVaryingIndex(locationOrName) {\n const varying = this.getVaryingInfo();\n return varying ? varying.location : -1;\n }\n getVaryingAccessor(locationOrName) {\n const varying = this.getVaryingInfo();\n return varying ? varying.accessor : null;\n }\n _readAttributesFromProgram(program) {\n const { gl: gl } = program;\n const count = gl.getProgramParameter(program.handle, 35721);\n for(let index = 0; index < count; index++){\n const { name: name, type: type, size: size } = gl.getActiveAttrib(program.handle, index);\n const location = gl.getAttribLocation(program.handle, name);\n if (location >= 0) this._addAttribute(location, name, type, size);\n }\n this.attributeInfos.sort((a, b)=>a.location - b.location);\n }\n _readVaryingsFromProgram(program) {\n const { gl: gl } = program;\n if (!(0, $8HKWo.isWebGL2)(gl)) return;\n const count = gl.getProgramParameter(program.handle, 35971);\n for(let location = 0; location < count; location++){\n const { name: name, type: type, size: size } = gl.getTransformFeedbackVarying(program.handle, location);\n this._addVarying(location, name, type, size);\n }\n this.varyingInfos.sort((a, b)=>a.location - b.location);\n }\n _addAttribute(location, name, compositeType, size) {\n const { type: type, components: components } = (0, $eX2kV.decomposeCompositeGLType)(compositeType);\n const accessor = {\n type: type,\n size: size * components\n };\n this._inferProperties(location, name, accessor);\n const attributeInfo = {\n location: location,\n name: name,\n accessor: new (0, $35tVQ.default)(accessor)\n };\n this.attributeInfos.push(attributeInfo);\n this.attributeInfosByLocation[location] = attributeInfo;\n this.attributeInfosByName[attributeInfo.name] = attributeInfo;\n }\n _inferProperties(location, name, accessor) {\n if (/instance/i.test(name)) accessor.divisor = 1;\n }\n _addVarying(location, name, compositeType, size) {\n const { type: type, components: components } = (0, $eX2kV.decomposeCompositeGLType)(compositeType);\n const accessor = new (0, $35tVQ.default)({\n type: type,\n size: size * components\n });\n const varying = {\n location: location,\n name: name,\n accessor: accessor\n };\n this.varyingInfos.push(varying);\n this.varyingInfosByName[varying.name] = varying;\n }\n constructor(program){\n this.id = program.id;\n this.attributeInfos = [];\n this.attributeInfosByName = {};\n this.attributeInfosByLocation = [];\n this.varyingInfos = [];\n this.varyingInfosByName = {};\n Object.seal(this);\n this._readAttributesFromProgram(program);\n this._readVaryingsFromProgram(program);\n }\n}\n\n});\nparcelRegister(\"eX2kV\", function(module, exports) {\n\n$parcel$export(module.exports, \"getPrimitiveDrawMode\", function () { return $ae286360388d3737$export$e50fcedcdc9b2c73; });\n$parcel$export(module.exports, \"decomposeCompositeGLType\", function () { return $ae286360388d3737$export$646982523c4faa11; });\n$parcel$export(module.exports, \"getCompositeGLType\", function () { return $ae286360388d3737$export$508acc40581a1522; });\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\nconst $ae286360388d3737$var$GL_BYTE = 0x1400;\nconst $ae286360388d3737$var$GL_UNSIGNED_BYTE = 0x1401;\nconst $ae286360388d3737$var$GL_SHORT = 0x1402;\nconst $ae286360388d3737$var$GL_UNSIGNED_SHORT = 0x1403;\nconst $ae286360388d3737$var$GL_POINTS = 0x0;\nconst $ae286360388d3737$var$GL_LINES = 0x1;\nconst $ae286360388d3737$var$GL_LINE_LOOP = 0x2;\nconst $ae286360388d3737$var$GL_LINE_STRIP = 0x3;\nconst $ae286360388d3737$var$GL_TRIANGLES = 0x4;\nconst $ae286360388d3737$var$GL_TRIANGLE_STRIP = 0x5;\nconst $ae286360388d3737$var$GL_TRIANGLE_FAN = 0x6;\nconst $ae286360388d3737$var$GL_FLOAT = 0x1406;\nconst $ae286360388d3737$var$GL_FLOAT_VEC2 = 0x8b50;\nconst $ae286360388d3737$var$GL_FLOAT_VEC3 = 0x8b51;\nconst $ae286360388d3737$var$GL_FLOAT_VEC4 = 0x8b52;\nconst $ae286360388d3737$var$GL_INT = 0x1404;\nconst $ae286360388d3737$var$GL_INT_VEC2 = 0x8b53;\nconst $ae286360388d3737$var$GL_INT_VEC3 = 0x8b54;\nconst $ae286360388d3737$var$GL_INT_VEC4 = 0x8b55;\nconst $ae286360388d3737$var$GL_UNSIGNED_INT = 0x1405;\nconst $ae286360388d3737$var$GL_UNSIGNED_INT_VEC2 = 0x8dc6;\nconst $ae286360388d3737$var$GL_UNSIGNED_INT_VEC3 = 0x8dc7;\nconst $ae286360388d3737$var$GL_UNSIGNED_INT_VEC4 = 0x8dc8;\nconst $ae286360388d3737$var$GL_BOOL = 0x8b56;\nconst $ae286360388d3737$var$GL_BOOL_VEC2 = 0x8b57;\nconst $ae286360388d3737$var$GL_BOOL_VEC3 = 0x8b58;\nconst $ae286360388d3737$var$GL_BOOL_VEC4 = 0x8b59;\nconst $ae286360388d3737$var$GL_FLOAT_MAT2 = 0x8b5a;\nconst $ae286360388d3737$var$GL_FLOAT_MAT3 = 0x8b5b;\nconst $ae286360388d3737$var$GL_FLOAT_MAT4 = 0x8b5c;\nconst $ae286360388d3737$var$GL_FLOAT_MAT2x3 = 0x8b65;\nconst $ae286360388d3737$var$GL_FLOAT_MAT2x4 = 0x8b66;\nconst $ae286360388d3737$var$GL_FLOAT_MAT3x2 = 0x8b67;\nconst $ae286360388d3737$var$GL_FLOAT_MAT3x4 = 0x8b68;\nconst $ae286360388d3737$var$GL_FLOAT_MAT4x2 = 0x8b69;\nconst $ae286360388d3737$var$GL_FLOAT_MAT4x3 = 0x8b6a;\nconst $ae286360388d3737$var$COMPOSITE_GL_TYPES = {\n [$ae286360388d3737$var$GL_FLOAT]: [\n $ae286360388d3737$var$GL_FLOAT,\n 1,\n \"float\"\n ],\n [$ae286360388d3737$var$GL_FLOAT_VEC2]: [\n $ae286360388d3737$var$GL_FLOAT,\n 2,\n \"vec2\"\n ],\n [$ae286360388d3737$var$GL_FLOAT_VEC3]: [\n $ae286360388d3737$var$GL_FLOAT,\n 3,\n \"vec3\"\n ],\n [$ae286360388d3737$var$GL_FLOAT_VEC4]: [\n $ae286360388d3737$var$GL_FLOAT,\n 4,\n \"vec4\"\n ],\n [$ae286360388d3737$var$GL_INT]: [\n $ae286360388d3737$var$GL_INT,\n 1,\n \"int\"\n ],\n [$ae286360388d3737$var$GL_INT_VEC2]: [\n $ae286360388d3737$var$GL_INT,\n 2,\n \"ivec2\"\n ],\n [$ae286360388d3737$var$GL_INT_VEC3]: [\n $ae286360388d3737$var$GL_INT,\n 3,\n \"ivec3\"\n ],\n [$ae286360388d3737$var$GL_INT_VEC4]: [\n $ae286360388d3737$var$GL_INT,\n 4,\n \"ivec4\"\n ],\n [$ae286360388d3737$var$GL_UNSIGNED_INT]: [\n $ae286360388d3737$var$GL_UNSIGNED_INT,\n 1,\n \"uint\"\n ],\n [$ae286360388d3737$var$GL_UNSIGNED_INT_VEC2]: [\n $ae286360388d3737$var$GL_UNSIGNED_INT,\n 2,\n \"uvec2\"\n ],\n [$ae286360388d3737$var$GL_UNSIGNED_INT_VEC3]: [\n $ae286360388d3737$var$GL_UNSIGNED_INT,\n 3,\n \"uvec3\"\n ],\n [$ae286360388d3737$var$GL_UNSIGNED_INT_VEC4]: [\n $ae286360388d3737$var$GL_UNSIGNED_INT,\n 4,\n \"uvec4\"\n ],\n [$ae286360388d3737$var$GL_BOOL]: [\n $ae286360388d3737$var$GL_FLOAT,\n 1,\n \"bool\"\n ],\n [$ae286360388d3737$var$GL_BOOL_VEC2]: [\n $ae286360388d3737$var$GL_FLOAT,\n 2,\n \"bvec2\"\n ],\n [$ae286360388d3737$var$GL_BOOL_VEC3]: [\n $ae286360388d3737$var$GL_FLOAT,\n 3,\n \"bvec3\"\n ],\n [$ae286360388d3737$var$GL_BOOL_VEC4]: [\n $ae286360388d3737$var$GL_FLOAT,\n 4,\n \"bvec4\"\n ],\n [$ae286360388d3737$var$GL_FLOAT_MAT2]: [\n $ae286360388d3737$var$GL_FLOAT,\n 8,\n \"mat2\"\n ],\n [$ae286360388d3737$var$GL_FLOAT_MAT2x3]: [\n $ae286360388d3737$var$GL_FLOAT,\n 8,\n \"mat2x3\"\n ],\n [$ae286360388d3737$var$GL_FLOAT_MAT2x4]: [\n $ae286360388d3737$var$GL_FLOAT,\n 8,\n \"mat2x4\"\n ],\n [$ae286360388d3737$var$GL_FLOAT_MAT3]: [\n $ae286360388d3737$var$GL_FLOAT,\n 12,\n \"mat3\"\n ],\n [$ae286360388d3737$var$GL_FLOAT_MAT3x2]: [\n $ae286360388d3737$var$GL_FLOAT,\n 12,\n \"mat3x2\"\n ],\n [$ae286360388d3737$var$GL_FLOAT_MAT3x4]: [\n $ae286360388d3737$var$GL_FLOAT,\n 12,\n \"mat3x4\"\n ],\n [$ae286360388d3737$var$GL_FLOAT_MAT4]: [\n $ae286360388d3737$var$GL_FLOAT,\n 16,\n \"mat4\"\n ],\n [$ae286360388d3737$var$GL_FLOAT_MAT4x2]: [\n $ae286360388d3737$var$GL_FLOAT,\n 16,\n \"mat4x2\"\n ],\n [$ae286360388d3737$var$GL_FLOAT_MAT4x3]: [\n $ae286360388d3737$var$GL_FLOAT,\n 16,\n \"mat4x3\"\n ]\n};\nfunction $ae286360388d3737$export$e50fcedcdc9b2c73(drawMode) {\n switch(drawMode){\n case $ae286360388d3737$var$GL_POINTS:\n return $ae286360388d3737$var$GL_POINTS;\n case $ae286360388d3737$var$GL_LINES:\n return $ae286360388d3737$var$GL_LINES;\n case $ae286360388d3737$var$GL_LINE_STRIP:\n return $ae286360388d3737$var$GL_LINES;\n case $ae286360388d3737$var$GL_LINE_LOOP:\n return $ae286360388d3737$var$GL_LINES;\n case $ae286360388d3737$var$GL_TRIANGLES:\n return $ae286360388d3737$var$GL_TRIANGLES;\n case $ae286360388d3737$var$GL_TRIANGLE_STRIP:\n return $ae286360388d3737$var$GL_TRIANGLES;\n case $ae286360388d3737$var$GL_TRIANGLE_FAN:\n return $ae286360388d3737$var$GL_TRIANGLES;\n default:\n (0, $ihfnu.assert)(false);\n return 0;\n }\n}\nfunction $ae286360388d3737$export$eee3601b0ff4cdda(_ref) {\n let { drawMode: drawMode, vertexCount: vertexCount } = _ref;\n switch(drawMode){\n case $ae286360388d3737$var$GL_POINTS:\n case $ae286360388d3737$var$GL_LINE_LOOP:\n return vertexCount;\n case $ae286360388d3737$var$GL_LINES:\n return vertexCount / 2;\n case $ae286360388d3737$var$GL_LINE_STRIP:\n return vertexCount - 1;\n case $ae286360388d3737$var$GL_TRIANGLES:\n return vertexCount / 3;\n case $ae286360388d3737$var$GL_TRIANGLE_STRIP:\n case $ae286360388d3737$var$GL_TRIANGLE_FAN:\n return vertexCount - 2;\n default:\n (0, $ihfnu.assert)(false);\n return 0;\n }\n}\nfunction $ae286360388d3737$export$bb010cc24ecaa644(_ref2) {\n let { drawMode: drawMode, vertexCount: vertexCount } = _ref2;\n const primitiveCount = $ae286360388d3737$export$eee3601b0ff4cdda({\n drawMode: drawMode,\n vertexCount: vertexCount\n });\n switch($ae286360388d3737$export$e50fcedcdc9b2c73(drawMode)){\n case $ae286360388d3737$var$GL_POINTS:\n return primitiveCount;\n case $ae286360388d3737$var$GL_LINES:\n return primitiveCount * 2;\n case $ae286360388d3737$var$GL_TRIANGLES:\n return primitiveCount * 3;\n default:\n (0, $ihfnu.assert)(false);\n return 0;\n }\n}\nfunction $ae286360388d3737$export$646982523c4faa11(compositeGLType) {\n const typeAndSize = $ae286360388d3737$var$COMPOSITE_GL_TYPES[compositeGLType];\n if (!typeAndSize) return null;\n const [type, components] = typeAndSize;\n return {\n type: type,\n components: components\n };\n}\nfunction $ae286360388d3737$export$508acc40581a1522(type, components) {\n switch(type){\n case $ae286360388d3737$var$GL_BYTE:\n case $ae286360388d3737$var$GL_UNSIGNED_BYTE:\n case $ae286360388d3737$var$GL_SHORT:\n case $ae286360388d3737$var$GL_UNSIGNED_SHORT:\n type = $ae286360388d3737$var$GL_FLOAT;\n break;\n default:\n }\n for(const glType in $ae286360388d3737$var$COMPOSITE_GL_TYPES){\n const [compType, compComponents, name] = $ae286360388d3737$var$COMPOSITE_GL_TYPES[glType];\n if (compType === type && compComponents === components) return {\n glType: glType,\n name: name\n };\n }\n return null;\n}\n\n});\n\n\n\n\nparcelRegister(\"5Ha6k\", function(module, exports) {\n\n$parcel$export(module.exports, \"getDebugTableForProgramConfiguration\", function () { return $4258cdc92cfb39b2$export$826103546372d55e; });\n\nvar $eX2kV = parcelRequire(\"eX2kV\");\nfunction $4258cdc92cfb39b2$export$826103546372d55e(config) {\n const table = {};\n const header = \"Accessors for \".concat(config.id);\n for (const attributeInfo of config.attributeInfos)if (attributeInfo) {\n const glslDeclaration = $4258cdc92cfb39b2$var$getGLSLDeclaration(attributeInfo);\n table[\"in \".concat(glslDeclaration)] = {\n [header]: JSON.stringify(attributeInfo.accessor)\n };\n }\n for (const varyingInfo of config.varyingInfos)if (varyingInfo) {\n const glslDeclaration = $4258cdc92cfb39b2$var$getGLSLDeclaration(varyingInfo);\n table[\"out \".concat(glslDeclaration)] = {\n [header]: JSON.stringify(varyingInfo.accessor)\n };\n }\n return table;\n}\nfunction $4258cdc92cfb39b2$var$getGLSLDeclaration(attributeInfo) {\n const { type: type, size: size } = attributeInfo.accessor;\n const typeAndName = (0, $eX2kV.getCompositeGLType)(type, size);\n if (typeAndName) return \"\".concat(typeAndName.name, \" \").concat(attributeInfo.name);\n return attributeInfo.name;\n}\n\n});\n\nparcelRegister(\"j4CMX\", function(module, exports) {\n\n$parcel$export(module.exports, \"getDebugTableForUniforms\", function () { return $de2c7aa4c84e6a4c$export$72be64c472054e23; });\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\n\nvar $gIkfc = parcelRequire(\"gIkfc\");\nfunction $de2c7aa4c84e6a4c$export$72be64c472054e23(_ref) {\n let { header: header = \"Uniforms\", program: program, uniforms: uniforms, undefinedOnly: undefinedOnly = false } = _ref;\n (0, $ihfnu.assert)(program);\n const SHADER_MODULE_UNIFORM_REGEXP = \".*_.*\";\n const PROJECT_MODULE_UNIFORM_REGEXP = \".*Matrix\";\n const uniformLocations = program._uniformSetters;\n const table = {};\n const uniformNames = Object.keys(uniformLocations).sort();\n let count = 0;\n for (const uniformName of uniformNames){\n if (!uniformName.match(SHADER_MODULE_UNIFORM_REGEXP) && !uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)) {\n if ($de2c7aa4c84e6a4c$var$addUniformToTable({\n table: table,\n header: header,\n uniforms: uniforms,\n uniformName: uniformName,\n undefinedOnly: undefinedOnly\n })) count++;\n }\n }\n for (const uniformName of uniformNames){\n if (uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)) {\n if ($de2c7aa4c84e6a4c$var$addUniformToTable({\n table: table,\n header: header,\n uniforms: uniforms,\n uniformName: uniformName,\n undefinedOnly: undefinedOnly\n })) count++;\n }\n }\n for (const uniformName of uniformNames){\n if (!table[uniformName]) {\n if ($de2c7aa4c84e6a4c$var$addUniformToTable({\n table: table,\n header: header,\n uniforms: uniforms,\n uniformName: uniformName,\n undefinedOnly: undefinedOnly\n })) count++;\n }\n }\n let unusedCount = 0;\n const unusedTable = {};\n if (!undefinedOnly) for(const uniformName in uniforms){\n const uniform = uniforms[uniformName];\n if (!table[uniformName]) {\n unusedCount++;\n unusedTable[uniformName] = {\n Type: \"NOT USED: \".concat(uniform),\n [header]: (0, $gIkfc.formatValue)(uniform)\n };\n }\n }\n return {\n table: table,\n count: count,\n unusedTable: unusedTable,\n unusedCount: unusedCount\n };\n}\nfunction $de2c7aa4c84e6a4c$var$addUniformToTable(_ref2) {\n let { table: table, header: header, uniforms: uniforms, uniformName: uniformName, undefinedOnly: undefinedOnly } = _ref2;\n const value = uniforms[uniformName];\n const isDefined = $de2c7aa4c84e6a4c$var$isUniformDefined(value);\n if (!undefinedOnly || !isDefined) {\n table[uniformName] = {\n [header]: isDefined ? (0, $gIkfc.formatValue)(value) : \"N/A\",\n \"Uniform Type\": isDefined ? value : \"NOT PROVIDED\"\n };\n return true;\n }\n return false;\n}\nfunction $de2c7aa4c84e6a4c$var$isUniformDefined(value) {\n return value !== undefined && value !== null;\n}\n\n});\nparcelRegister(\"gIkfc\", function(module, exports) {\n\n$parcel$export(module.exports, \"formatValue\", function () { return $c2b0757a74d12c48$export$7c4d25c0c3217d8c; });\nfunction $c2b0757a74d12c48$var$formatArrayValue(v, opts) {\n const { maxElts: maxElts = 16, size: size = 1 } = opts;\n let string = \"[\";\n for(let i = 0; i < v.length && i < maxElts; ++i){\n if (i > 0) string += \",\".concat(i % size === 0 ? \" \" : \"\");\n string += $c2b0757a74d12c48$export$7c4d25c0c3217d8c(v[i], opts);\n }\n const terminator = v.length > maxElts ? \"...\" : \"]\";\n return \"\".concat(string).concat(terminator);\n}\nfunction $c2b0757a74d12c48$export$7c4d25c0c3217d8c(v) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const EPSILON = 1e-16;\n const { isInteger: isInteger = false } = opts;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) return $c2b0757a74d12c48$var$formatArrayValue(v, opts);\n if (!Number.isFinite(v)) return String(v);\n if (Math.abs(v) < EPSILON) return isInteger ? \"0\" : \"0.\";\n if (isInteger) return v.toFixed(0);\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) return v.toFixed(0);\n const string = v.toPrecision(2);\n const decimal = string.indexOf(\".0\");\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n\n});\n\n\nparcelRegister(\"4wHgq\", function(module, exports) {\n\n$parcel$export(module.exports, \"getDebugTableForVertexArray\", function () { return $34bbb5e5d4fe9d14$export$f05218eded921e71; });\n\nvar $7jraD = parcelRequire(\"7jraD\");\n\nvar $5tEaG = parcelRequire(\"5tEaG\");\n\nvar $eX2kV = parcelRequire(\"eX2kV\");\n\nvar $gIkfc = parcelRequire(\"gIkfc\");\nfunction $34bbb5e5d4fe9d14$export$f05218eded921e71(_ref) {\n let { vertexArray: vertexArray, header: header = \"Attributes\" } = _ref;\n if (!vertexArray.configuration) return {};\n const table = {};\n if (vertexArray.elements) table.ELEMENT_ARRAY_BUFFER = $34bbb5e5d4fe9d14$var$getDebugTableRow(vertexArray, vertexArray.elements, null, header);\n const attributes = vertexArray.values;\n for(const attributeLocation in attributes){\n const info = vertexArray._getAttributeInfo(attributeLocation);\n if (info) {\n let rowHeader = \"\".concat(attributeLocation, \": \").concat(info.name);\n const accessor = vertexArray.accessors[info.location];\n if (accessor) rowHeader = \"\".concat(attributeLocation, \": \").concat($34bbb5e5d4fe9d14$var$getGLSLDeclaration(info.name, accessor));\n table[rowHeader] = $34bbb5e5d4fe9d14$var$getDebugTableRow(vertexArray, attributes[attributeLocation], accessor, header);\n }\n }\n return table;\n}\nfunction $34bbb5e5d4fe9d14$var$getDebugTableRow(vertexArray, attribute, accessor, header) {\n const { gl: gl } = vertexArray;\n if (!attribute) return {\n [header]: \"null\",\n \"Format \": \"N/A\"\n };\n let type = \"NOT PROVIDED\";\n let size = 1;\n let verts = 0;\n let bytes = 0;\n let isInteger;\n let marker;\n let value;\n if (accessor) {\n type = accessor.type;\n size = accessor.size;\n type = String(type).replace(\"Array\", \"\");\n isInteger = type.indexOf(\"nt\") !== -1;\n }\n if (attribute instanceof (0, $7jraD.default)) {\n const buffer = attribute;\n const { data: data, changed: changed } = buffer.getDebugData();\n marker = changed ? \"*\" : \"\";\n value = data;\n bytes = buffer.byteLength;\n verts = bytes / data.BYTES_PER_ELEMENT / size;\n let format;\n if (accessor) {\n const instanced = accessor.divisor > 0;\n format = \"\".concat(instanced ? \"I \" : \"P \", \" \").concat(verts, \" (x\").concat(size, \"=\").concat(bytes, \" bytes \").concat((0, $5tEaG.getKey)(gl, type), \")\");\n } else {\n isInteger = true;\n format = \"\".concat(bytes, \" bytes\");\n }\n return {\n [header]: \"\".concat(marker).concat((0, $gIkfc.formatValue)(value, {\n size: size,\n isInteger: isInteger\n })),\n \"Format \": format\n };\n }\n value = attribute;\n size = attribute.length;\n type = String(attribute.constructor.name).replace(\"Array\", \"\");\n isInteger = type.indexOf(\"nt\") !== -1;\n return {\n [header]: \"\".concat((0, $gIkfc.formatValue)(value, {\n size: size,\n isInteger: isInteger\n }), \" (constant)\"),\n \"Format \": \"\".concat(size, \"x\").concat(type, \" (constant)\")\n };\n}\nfunction $34bbb5e5d4fe9d14$var$getGLSLDeclaration(name, accessor) {\n const { type: type, size: size } = accessor;\n const typeAndName = (0, $eX2kV.getCompositeGLType)(type, size);\n return typeAndName ? \"\".concat(name, \" (\").concat(typeAndName.name, \")\") : name;\n}\n\n});\n\nparcelRegister(\"b7Tm8\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $819b49bb2faa961a$export$2e2bcd8739ae039; });\nparcelRequire(\"73UuK\");\nvar $lvicK = parcelRequire(\"lvicK\");\n\nvar $35tVQ = parcelRequire(\"35tVQ\");\n\nvar $7jraD = parcelRequire(\"7jraD\");\n\nvar $37NyF = parcelRequire(\"37NyF\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\n\nvar $z6hiF = parcelRequire(\"z6hiF\");\nconst $819b49bb2faa961a$var$ERR_ATTRIBUTE_TYPE = \"VertexArray: attributes must be Buffers or constants (i.e. typed array)\";\nconst $819b49bb2faa961a$var$MULTI_LOCATION_ATTRIBUTE_REGEXP = /^(.+)__LOCATION_([0-9]+)$/;\nconst $819b49bb2faa961a$var$DEPRECATIONS_V6 = [\n \"setBuffers\",\n \"setGeneric\",\n \"clearBindings\",\n \"setLocations\",\n \"setGenericValues\",\n \"setDivisor\",\n \"enable\",\n \"disable\"\n];\nclass $819b49bb2faa961a$export$2e2bcd8739ae039 {\n delete() {\n if (this.buffer) this.buffer.delete();\n this.vertexArrayObject.delete();\n }\n initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.reset();\n this.configuration = null;\n this.bindOnUse = false;\n return this.setProps(props);\n }\n reset() {\n this.elements = null;\n this.elementsAccessor = null;\n const { MAX_ATTRIBUTES: MAX_ATTRIBUTES } = this.vertexArrayObject;\n this.values = new Array(MAX_ATTRIBUTES).fill(null);\n this.accessors = new Array(MAX_ATTRIBUTES).fill(null);\n this.unused = {};\n this.drawParams = null;\n return this;\n }\n setProps(props) {\n if (\"program\" in props) this.configuration = props.program && props.program.configuration;\n if (\"configuration\" in props) this.configuration = props.configuration;\n if (\"attributes\" in props) this.setAttributes(props.attributes);\n if (\"elements\" in props) this.setElementBuffer(props.elements);\n if (\"bindOnUse\" in props) props = props.bindOnUse;\n return this;\n }\n clearDrawParams() {\n this.drawParams = null;\n }\n getDrawParams() {\n this.drawParams = this.drawParams || this._updateDrawParams();\n return this.drawParams;\n }\n setAttributes(attributes) {\n Object.assign(this.attributes, attributes);\n this.vertexArrayObject.bind(()=>{\n for(const locationOrName in attributes){\n const value = attributes[locationOrName];\n this._setAttribute(locationOrName, value);\n }\n this.gl.bindBuffer(34962, null);\n });\n return this;\n }\n setElementBuffer() {\n let elementBuffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n let accessor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.elements = elementBuffer;\n this.elementsAccessor = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setElementBuffer(elementBuffer, accessor);\n return this;\n }\n setBuffer(locationOrName, buffer) {\n let appAccessor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (buffer.target === 34963) return this.setElementBuffer(buffer, appAccessor);\n const { location: location, accessor: accessor } = this._resolveLocationAndAccessor(locationOrName, buffer, buffer.accessor, appAccessor);\n if (location >= 0) {\n this.values[location] = buffer;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setBuffer(location, buffer, accessor);\n }\n return this;\n }\n setConstant(locationOrName, arrayValue) {\n let appAccessor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const { location: location, accessor: accessor } = this._resolveLocationAndAccessor(locationOrName, arrayValue, Object.assign({\n size: arrayValue.length\n }, appAccessor));\n if (location >= 0) {\n arrayValue = this.vertexArrayObject._normalizeConstantArrayValue(arrayValue);\n this.values[location] = arrayValue;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.enable(location, false);\n }\n return this;\n }\n unbindBuffers() {\n this.vertexArrayObject.bind(()=>{\n if (this.elements) this.vertexArrayObject.setElementBuffer(null);\n this.buffer = this.buffer || new (0, $7jraD.default)(this.gl, {\n accessor: {\n size: 4\n }\n });\n for(let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++)if (this.values[location] instanceof (0, $7jraD.default)) {\n this.gl.disableVertexAttribArray(location);\n this.gl.bindBuffer(34962, this.buffer.handle);\n this.gl.vertexAttribPointer(location, 1, 5126, false, 0, 0);\n }\n });\n return this;\n }\n bindBuffers() {\n this.vertexArrayObject.bind(()=>{\n if (this.elements) this.setElementBuffer(this.elements);\n for(let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++){\n const buffer = this.values[location];\n if (buffer instanceof (0, $7jraD.default)) this.setBuffer(location, buffer);\n }\n });\n return this;\n }\n bindForDraw(vertexCount, instanceCount, func) {\n let value;\n this.vertexArrayObject.bind(()=>{\n this._setConstantAttributes(vertexCount, instanceCount);\n value = func();\n });\n return value;\n }\n _resolveLocationAndAccessor(locationOrName, value, valueAccessor, appAccessor) {\n const INVALID_RESULT = {\n location: -1,\n accessor: null\n };\n const { location: location, name: name } = this._getAttributeIndex(locationOrName);\n if (!Number.isFinite(location) || location < 0) {\n this.unused[locationOrName] = value;\n (0, $lvicK.log).once(3, ()=>\"unused value \".concat(locationOrName, \" in \").concat(this.id))();\n return INVALID_RESULT;\n }\n const accessInfo = this._getAttributeInfo(name || location);\n if (!accessInfo) return INVALID_RESULT;\n const currentAccessor = this.accessors[location] || {};\n const accessor = (0, $35tVQ.default).resolve(accessInfo.accessor, currentAccessor, valueAccessor, appAccessor);\n const { size: size, type: type } = accessor;\n (0, $ihfnu.assert)(Number.isFinite(size) && Number.isFinite(type));\n return {\n location: location,\n accessor: accessor\n };\n }\n _getAttributeInfo(attributeName) {\n return this.configuration && this.configuration.getAttributeInfo(attributeName);\n }\n _getAttributeIndex(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) return {\n location: location\n };\n const multiLocation = $819b49bb2faa961a$var$MULTI_LOCATION_ATTRIBUTE_REGEXP.exec(locationOrName);\n const name = multiLocation ? multiLocation[1] : locationOrName;\n const locationOffset = multiLocation ? Number(multiLocation[2]) : 0;\n if (this.configuration) return {\n location: this.configuration.getAttributeLocation(name) + locationOffset,\n name: name\n };\n return {\n location: -1\n };\n }\n _setAttribute(locationOrName, value) {\n if (value instanceof (0, $7jraD.default)) this.setBuffer(locationOrName, value);\n else if (Array.isArray(value) && value.length && value[0] instanceof (0, $7jraD.default)) {\n const buffer = value[0];\n const accessor = value[1];\n this.setBuffer(locationOrName, buffer, accessor);\n } else if (ArrayBuffer.isView(value) || Array.isArray(value)) {\n const constant = value;\n this.setConstant(locationOrName, constant);\n } else if (value.buffer instanceof (0, $7jraD.default)) {\n const accessor = value;\n this.setBuffer(locationOrName, accessor.buffer, accessor);\n } else throw new Error($819b49bb2faa961a$var$ERR_ATTRIBUTE_TYPE);\n }\n _setConstantAttributes(vertexCount, instanceCount) {\n const elementCount = Math.max(vertexCount | 0, instanceCount | 0);\n let constant = this.values[0];\n if (ArrayBuffer.isView(constant)) this._setConstantAttributeZero(constant, elementCount);\n for(let location = 1; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++){\n constant = this.values[location];\n if (ArrayBuffer.isView(constant)) this._setConstantAttribute(location, constant);\n }\n }\n _setConstantAttributeZero(constant, elementCount) {\n if ((0, $37NyF.default).isSupported(this.gl, {\n constantAttributeZero: true\n })) {\n this._setConstantAttribute(0, constant);\n return;\n }\n const buffer = this.vertexArrayObject.getConstantBuffer(elementCount, constant);\n this.vertexArrayObject.setBuffer(0, buffer, this.accessors[0]);\n }\n _setConstantAttribute(location, constant) {\n (0, $37NyF.default).setConstant(this.gl, location, constant);\n }\n _updateDrawParams() {\n const drawParams = {\n isIndexed: false,\n isInstanced: false,\n indexCount: Infinity,\n vertexCount: Infinity,\n instanceCount: Infinity\n };\n for(let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++)this._updateDrawParamsForLocation(drawParams, location);\n if (this.elements) {\n drawParams.elementCount = this.elements.getElementCount(this.elements.accessor);\n drawParams.isIndexed = true;\n drawParams.indexType = this.elementsAccessor.type || this.elements.accessor.type;\n drawParams.indexOffset = this.elementsAccessor.offset || 0;\n }\n if (drawParams.indexCount === Infinity) drawParams.indexCount = 0;\n if (drawParams.vertexCount === Infinity) drawParams.vertexCount = 0;\n if (drawParams.instanceCount === Infinity) drawParams.instanceCount = 0;\n return drawParams;\n }\n _updateDrawParamsForLocation(drawParams, location) {\n const value = this.values[location];\n const accessor = this.accessors[location];\n if (!value) return;\n const { divisor: divisor } = accessor;\n const isInstanced = divisor > 0;\n drawParams.isInstanced = drawParams.isInstanced || isInstanced;\n if (value instanceof (0, $7jraD.default)) {\n const buffer = value;\n if (isInstanced) {\n const instanceCount = buffer.getVertexCount(accessor);\n drawParams.instanceCount = Math.min(drawParams.instanceCount, instanceCount);\n } else {\n const vertexCount = buffer.getVertexCount(accessor);\n drawParams.vertexCount = Math.min(drawParams.vertexCount, vertexCount);\n }\n }\n }\n setElements() {\n let elementBuffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n let accessor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, $lvicK.log).deprecated(\"setElements\", \"setElementBuffer\")();\n return this.setElementBuffer(elementBuffer, accessor);\n }\n constructor(gl){\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const id = opts.id || opts.program && opts.program.id;\n this.id = id;\n this.gl = gl;\n this.configuration = null;\n this.elements = null;\n this.elementsAccessor = null;\n this.values = null;\n this.accessors = null;\n this.unused = null;\n this.drawParams = null;\n this.buffer = null;\n this.attributes = {};\n this.vertexArrayObject = new (0, $37NyF.default)(gl);\n (0, $z6hiF.stubRemovedMethods)(this, \"VertexArray\", \"v6.0\", $819b49bb2faa961a$var$DEPRECATIONS_V6);\n this.initialize(opts);\n Object.seal(this);\n }\n}\n\n});\nparcelRegister(\"37NyF\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $246877c3891b0389$export$2e2bcd8739ae039; });\n\nvar $1OVow = parcelRequire(\"1OVow\");\n\nvar $7jraD = parcelRequire(\"7jraD\");\nparcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\n\nvar $2lgNF = parcelRequire(\"2lgNF\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\n\nvar $8P3Ct = parcelRequire(\"8P3Ct\");\nconst $246877c3891b0389$var$ERR_ELEMENTS = \"elements must be GL.ELEMENT_ARRAY_BUFFER\";\nclass $246877c3891b0389$export$2e2bcd8739ae039 extends (0, $1OVow.default) {\n get [Symbol.toStringTag]() {\n return \"VertexArrayObject\";\n }\n static isSupported(gl) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (options.constantAttributeZero) return (0, $8HKWo.isWebGL2)(gl) || (0, $8P3Ct.default)() === \"Chrome\";\n return true;\n }\n static getDefaultArray(gl) {\n gl.luma = gl.luma || {};\n if (!gl.luma.defaultVertexArray) gl.luma.defaultVertexArray = new $246877c3891b0389$export$2e2bcd8739ae039(gl, {\n handle: null,\n isDefaultArray: true\n });\n return gl.luma.defaultVertexArray;\n }\n static getMaxAttributes(gl) {\n $246877c3891b0389$export$2e2bcd8739ae039.MAX_ATTRIBUTES = $246877c3891b0389$export$2e2bcd8739ae039.MAX_ATTRIBUTES || gl.getParameter(34921);\n return $246877c3891b0389$export$2e2bcd8739ae039.MAX_ATTRIBUTES;\n }\n static setConstant(gl, location, array) {\n switch(array.constructor){\n case Float32Array:\n $246877c3891b0389$export$2e2bcd8739ae039._setConstantFloatArray(gl, location, array);\n break;\n case Int32Array:\n $246877c3891b0389$export$2e2bcd8739ae039._setConstantIntArray(gl, location, array);\n break;\n case Uint32Array:\n $246877c3891b0389$export$2e2bcd8739ae039._setConstantUintArray(gl, location, array);\n break;\n default:\n (0, $ihfnu.assert)(false);\n }\n }\n delete() {\n super.delete();\n if (this.buffer) this.buffer.delete();\n return this;\n }\n get MAX_ATTRIBUTES() {\n return $246877c3891b0389$export$2e2bcd8739ae039.getMaxAttributes(this.gl);\n }\n initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return this.setProps(props);\n }\n setProps(props) {\n return this;\n }\n setElementBuffer() {\n let elementBuffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, $ihfnu.assert)(!elementBuffer || elementBuffer.target === 34963, $246877c3891b0389$var$ERR_ELEMENTS);\n this.bind(()=>{\n this.gl.bindBuffer(34963, elementBuffer ? elementBuffer.handle : null);\n });\n return this;\n }\n setBuffer(location, buffer, accessor) {\n if (buffer.target === 34963) return this.setElementBuffer(buffer, accessor);\n const { size: size, type: type, stride: stride, offset: offset, normalized: normalized, integer: integer, divisor: divisor } = accessor;\n const { gl: gl, gl2: gl2 } = this;\n location = Number(location);\n this.bind(()=>{\n gl.bindBuffer(34962, buffer.handle);\n if (integer) {\n (0, $ihfnu.assert)((0, $8HKWo.isWebGL2)(gl));\n gl2.vertexAttribIPointer(location, size, type, stride, offset);\n } else gl.vertexAttribPointer(location, size, type, normalized, stride, offset);\n gl.enableVertexAttribArray(location);\n gl2.vertexAttribDivisor(location, divisor || 0);\n });\n return this;\n }\n enable(location) {\n let enable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n const disablingAttributeZero = !enable && location === 0 && !$246877c3891b0389$export$2e2bcd8739ae039.isSupported(this.gl, {\n constantAttributeZero: true\n });\n if (!disablingAttributeZero) {\n location = Number(location);\n this.bind(()=>enable ? this.gl.enableVertexAttribArray(location) : this.gl.disableVertexAttribArray(location));\n }\n return this;\n }\n getConstantBuffer(elementCount, value) {\n const constantValue = this._normalizeConstantArrayValue(value);\n const byteLength = constantValue.byteLength * elementCount;\n const length = constantValue.length * elementCount;\n let updateNeeded = !this.buffer;\n this.buffer = this.buffer || new (0, $7jraD.default)(this.gl, byteLength);\n updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);\n updateNeeded = updateNeeded || !this._compareConstantArrayValues(constantValue, this.bufferValue);\n if (updateNeeded) {\n const typedArray = (0, $2lgNF.getScratchArray)(value.constructor, length);\n (0, $2lgNF.fillArray)({\n target: typedArray,\n source: constantValue,\n start: 0,\n count: length\n });\n this.buffer.subData(typedArray);\n this.bufferValue = value;\n }\n return this.buffer;\n }\n _normalizeConstantArrayValue(arrayValue) {\n if (Array.isArray(arrayValue)) return new Float32Array(arrayValue);\n return arrayValue;\n }\n _compareConstantArrayValues(v1, v2) {\n if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) return false;\n for(let i = 0; i < v1.length; ++i){\n if (v1[i] !== v2[i]) return false;\n }\n return true;\n }\n static _setConstantFloatArray(gl, location, array) {\n switch(array.length){\n case 1:\n gl.vertexAttrib1fv(location, array);\n break;\n case 2:\n gl.vertexAttrib2fv(location, array);\n break;\n case 3:\n gl.vertexAttrib3fv(location, array);\n break;\n case 4:\n gl.vertexAttrib4fv(location, array);\n break;\n default:\n (0, $ihfnu.assert)(false);\n }\n }\n static _setConstantIntArray(gl, location, array) {\n (0, $ihfnu.assert)((0, $8HKWo.isWebGL2)(gl));\n switch(array.length){\n case 1:\n gl.vertexAttribI1iv(location, array);\n break;\n case 2:\n gl.vertexAttribI2iv(location, array);\n break;\n case 3:\n gl.vertexAttribI3iv(location, array);\n break;\n case 4:\n gl.vertexAttribI4iv(location, array);\n break;\n default:\n (0, $ihfnu.assert)(false);\n }\n }\n static _setConstantUintArray(gl, location, array) {\n (0, $ihfnu.assert)((0, $8HKWo.isWebGL2)(gl));\n switch(array.length){\n case 1:\n gl.vertexAttribI1uiv(location, array);\n break;\n case 2:\n gl.vertexAttribI2uiv(location, array);\n break;\n case 3:\n gl.vertexAttribI3uiv(location, array);\n break;\n case 4:\n gl.vertexAttribI4uiv(location, array);\n break;\n default:\n (0, $ihfnu.assert)(false);\n }\n }\n _createHandle() {\n const gl2 = this.gl;\n return gl2.createVertexArray();\n }\n _deleteHandle(handle) {\n this.gl2.deleteVertexArray(handle);\n return [\n this.elements\n ];\n }\n _bindHandle(handle) {\n this.gl2.bindVertexArray(handle);\n }\n _getParameter(pname, _ref) {\n let { location: location } = _ref;\n (0, $ihfnu.assert)(Number.isFinite(location));\n return this.bind(()=>{\n switch(pname){\n case 34373:\n return this.gl.getVertexAttribOffset(location, pname);\n default:\n return this.gl.getVertexAttrib(location, pname);\n }\n });\n }\n constructor(gl){\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const id = opts.id || opts.program && opts.program.id;\n super(gl, Object.assign({}, opts, {\n id: id\n }));\n this.buffer = null;\n this.bufferValue = null;\n this.isDefaultArray = opts.isDefaultArray || false;\n this.gl2 = gl;\n this.initialize(opts);\n Object.seal(this);\n }\n}\n\n});\nparcelRegister(\"2lgNF\", function(module, exports) {\n\n$parcel$export(module.exports, \"getScratchArray\", function () { return $1b4a93122ae70e08$export$4c3ca7f6f110bd92; });\n$parcel$export(module.exports, \"fillArray\", function () { return $1b4a93122ae70e08$export$57295b69bf9c5d15; });\nlet $1b4a93122ae70e08$var$arrayBuffer = null;\nfunction $1b4a93122ae70e08$export$2e3ce519f08759f7(byteLength) {\n if (!$1b4a93122ae70e08$var$arrayBuffer || $1b4a93122ae70e08$var$arrayBuffer.byteLength < byteLength) $1b4a93122ae70e08$var$arrayBuffer = new ArrayBuffer(byteLength);\n return $1b4a93122ae70e08$var$arrayBuffer;\n}\nfunction $1b4a93122ae70e08$export$4c3ca7f6f110bd92(Type, length) {\n const scratchArrayBuffer = $1b4a93122ae70e08$export$2e3ce519f08759f7(Type.BYTES_PER_ELEMENT * length);\n return new Type(scratchArrayBuffer, 0, length);\n}\nfunction $1b4a93122ae70e08$export$57295b69bf9c5d15(_ref) {\n let { target: target, source: source, start: start = 0, count: count = 1 } = _ref;\n const length = source.length;\n const total = count * length;\n let copied = 0;\n for(let i = start; copied < length; copied++)target[i++] = source[copied];\n while(copied < total)if (copied < total - copied) {\n target.copyWithin(start + copied, start, start + copied);\n copied *= 2;\n } else {\n target.copyWithin(start + copied, start, start + total - copied);\n copied = total;\n }\n return target;\n}\n\n});\n\nparcelRegister(\"8P3Ct\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $01a85a66dbca3bf1$export$2e2bcd8739ae039; });\n\nvar $jeIEj = parcelRequire(\"jeIEj\");\n\nvar $1366E = parcelRequire(\"1366E\");\nconst $01a85a66dbca3bf1$var$window = globalThis;\nfunction $01a85a66dbca3bf1$export$d0a8044dce8ff2fc() {\n return typeof $01a85a66dbca3bf1$var$window.orientation !== \"undefined\";\n}\nfunction $01a85a66dbca3bf1$export$2e2bcd8739ae039(mockUserAgent) {\n if (!mockUserAgent && !(0, $jeIEj.default)()) return \"Node\";\n if ((0, $1366E.default)(mockUserAgent)) return \"Electron\";\n const navigator_ = typeof navigator !== \"undefined\" ? navigator : {};\n const userAgent = mockUserAgent || navigator_.userAgent || \"\";\n if (userAgent.indexOf(\"Edge\") > -1) return \"Edge\";\n const isMSIE = userAgent.indexOf(\"MSIE \") !== -1;\n const isTrident = userAgent.indexOf(\"Trident/\") !== -1;\n if (isMSIE || isTrident) return \"IE\";\n if ($01a85a66dbca3bf1$var$window.chrome) return \"Chrome\";\n if ($01a85a66dbca3bf1$var$window.safari) return \"Safari\";\n if ($01a85a66dbca3bf1$var$window.mozInnerScreenX) return \"Firefox\";\n return \"Unknown\";\n}\n\n});\n\n\n\nparcelRegister(\"lrhVz\", function(module, exports) {\n\n$parcel$export(module.exports, \"getBuffersFromGeometry\", function () { return $f9ba069d732f1d2a$export$7e4fab05163ba2d1; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\nvar $7jraD = parcelRequire(\"7jraD\");\nconst $f9ba069d732f1d2a$var$GLTF_TO_LUMA_ATTRIBUTE_MAP = {\n POSITION: \"positions\",\n NORMAL: \"normals\",\n COLOR_0: \"colors\",\n TEXCOORD_0: \"texCoords\",\n TEXCOORD_1: \"texCoords1\",\n TEXCOORD_2: \"texCoords2\"\n};\nfunction $f9ba069d732f1d2a$export$7e4fab05163ba2d1(gl, geometry, options) {\n const buffers = {};\n let indices = geometry.indices;\n for(const name in geometry.attributes){\n const attribute = geometry.attributes[name];\n const remappedName = $f9ba069d732f1d2a$var$mapAttributeName(name, options);\n if (name === \"indices\") indices = attribute;\n else if (attribute.constant) buffers[remappedName] = attribute.value;\n else {\n const typedArray = attribute.value;\n const accessor = (0, $2QP2i._)({}, attribute);\n delete accessor.value;\n buffers[remappedName] = [\n new (0, $7jraD.default)(gl, typedArray),\n accessor\n ];\n $f9ba069d732f1d2a$export$3f504f33778aed92(name, accessor);\n }\n }\n if (indices) {\n const data = indices.value || indices;\n (0, $ihfnu.assert)(data instanceof Uint16Array || data instanceof Uint32Array, 'attribute array for \"indices\" must be of integer type');\n const accessor = {\n size: 1,\n isIndexed: indices.isIndexed === undefined ? true : indices.isIndexed\n };\n buffers.indices = [\n new (0, $7jraD.default)(gl, {\n data: data,\n target: 34963\n }),\n accessor\n ];\n }\n return buffers;\n}\nfunction $f9ba069d732f1d2a$var$mapAttributeName(name, options) {\n const { attributeMap: attributeMap = $f9ba069d732f1d2a$var$GLTF_TO_LUMA_ATTRIBUTE_MAP } = options || {};\n return attributeMap && attributeMap[name] || name;\n}\nfunction $f9ba069d732f1d2a$export$3f504f33778aed92(attributeName, attribute) {\n let category;\n switch(attributeName){\n case \"texCoords\":\n case \"texCoord1\":\n case \"texCoord2\":\n case \"texCoord3\":\n category = \"uvs\";\n break;\n case \"vertices\":\n case \"positions\":\n case \"normals\":\n case \"pickingColors\":\n category = \"vectors\";\n break;\n default:\n }\n switch(category){\n case \"vectors\":\n attribute.size = attribute.size || 3;\n break;\n case \"uvs\":\n attribute.size = attribute.size || 2;\n break;\n default:\n }\n (0, $ihfnu.assert)(Number.isFinite(attribute.size), \"attribute \".concat(attributeName, \" needs size\"));\n}\n\n});\n\n\n\nparcelRegister(\"9P91Q\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $726fe162c2e99841$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $1zR3q = parcelRequire(\"1zR3q\");\n\nvar $7jraD = parcelRequire(\"7jraD\");\nvar $bn48C = parcelRequire(\"bn48C\");\n\nvar $yVHST = parcelRequire(\"yVHST\");\n\nvar $5YQrt = parcelRequire(\"5YQrt\");\n\nvar $18U1I = parcelRequire(\"18U1I\");\nclass $726fe162c2e99841$export$2e2bcd8739ae039 {\n get inProgress() {\n return this.transition.inProgress;\n }\n start(transitionSettings, numInstances) {\n if (transitionSettings.duration <= 0) {\n this.transition.cancel();\n return;\n }\n this.settings = transitionSettings;\n const { gl: gl, buffers: buffers, attribute: attribute } = this;\n (0, $5YQrt.cycleBuffers)(buffers);\n const padBufferOpts = {\n numInstances: numInstances,\n attribute: attribute,\n fromLength: this.currentLength,\n fromStartIndices: this.currentStartIndices,\n getData: transitionSettings.enter\n };\n for (const buffer of buffers)(0, $5YQrt.padBuffer)((0, $2QP2i._)({\n buffer: buffer\n }, padBufferOpts));\n this.currentStartIndices = attribute.startIndices;\n this.currentLength = (0, $5YQrt.getAttributeBufferLength)(attribute, numInstances);\n this.attributeInTransition.setData({\n buffer: buffers[1],\n value: attribute.value\n });\n this.transition.start(transitionSettings);\n this.transform.update({\n elementCount: Math.floor(this.currentLength / attribute.size),\n sourceBuffers: {\n aFrom: buffers[0],\n aTo: (0, $5YQrt.getSourceBufferAttribute)(gl, attribute)\n },\n feedbackBuffers: {\n vCurrent: buffers[1]\n }\n });\n }\n update() {\n const updated = this.transition.update();\n if (updated) {\n const { duration: duration, easing: easing } = this.settings;\n const { time: time } = this.transition;\n let t = time / duration;\n if (easing) t = easing(t);\n this.transform.run({\n uniforms: {\n time: t\n }\n });\n }\n return updated;\n }\n cancel() {\n this.transition.cancel();\n this.transform.delete();\n for (const buffer of this.buffers)buffer.delete();\n this.buffers.length = 0;\n }\n constructor({ gl: gl, attribute: attribute, timeline: timeline }){\n (0, $1zR3q.default)(this, \"gl\", void 0);\n (0, $1zR3q.default)(this, \"type\", \"interpolation\");\n (0, $1zR3q.default)(this, \"attributeInTransition\", void 0);\n (0, $1zR3q.default)(this, \"settings\", void 0);\n (0, $1zR3q.default)(this, \"attribute\", void 0);\n (0, $1zR3q.default)(this, \"transition\", void 0);\n (0, $1zR3q.default)(this, \"currentStartIndices\", void 0);\n (0, $1zR3q.default)(this, \"currentLength\", void 0);\n (0, $1zR3q.default)(this, \"transform\", void 0);\n (0, $1zR3q.default)(this, \"buffers\", void 0);\n this.gl = gl;\n this.transition = new (0, $18U1I.default)(timeline);\n this.attribute = attribute;\n this.attributeInTransition = new (0, $yVHST.default)(gl, attribute.settings);\n this.currentStartIndices = attribute.startIndices;\n this.currentLength = 0;\n this.transform = $726fe162c2e99841$var$getTransform(gl, attribute);\n const bufferOpts = {\n byteLength: 0,\n usage: 35050\n };\n this.buffers = [\n new (0, $7jraD.default)(gl, bufferOpts),\n new (0, $7jraD.default)(gl, bufferOpts)\n ];\n }\n}\nconst $726fe162c2e99841$var$vs = \"\\n#define SHADER_NAME interpolation-transition-vertex-shader\\n\\nuniform float time;\\nattribute ATTRIBUTE_TYPE aFrom;\\nattribute ATTRIBUTE_TYPE aTo;\\nvarying ATTRIBUTE_TYPE vCurrent;\\n\\nvoid main(void) {\\n vCurrent = mix(aFrom, aTo, time);\\n gl_Position = vec4(0.0);\\n}\\n\";\nfunction $726fe162c2e99841$var$getTransform(gl, attribute) {\n const attributeType = (0, $5YQrt.getAttributeTypeFromSize)(attribute.size);\n return new (0, $bn48C.default)(gl, {\n vs: $726fe162c2e99841$var$vs,\n defines: {\n ATTRIBUTE_TYPE: attributeType\n },\n varyings: [\n \"vCurrent\"\n ]\n });\n}\n\n});\nparcelRegister(\"18U1I\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $0d51ff87795113f8$export$2e2bcd8739ae039; });\n\nvar $1zR3q = parcelRequire(\"1zR3q\");\nclass $0d51ff87795113f8$export$2e2bcd8739ae039 {\n get inProgress() {\n return this._inProgress;\n }\n start(settings) {\n var _this$settings$onStar, _this$settings;\n this.cancel();\n this.settings = settings;\n this._inProgress = true;\n (_this$settings$onStar = (_this$settings = this.settings).onStart) === null || _this$settings$onStar === void 0 || _this$settings$onStar.call(_this$settings, this);\n }\n end() {\n if (this._inProgress) {\n var _this$settings$onEnd, _this$settings2;\n this._timeline.removeChannel(this._handle);\n this._handle = null;\n this._inProgress = false;\n (_this$settings$onEnd = (_this$settings2 = this.settings).onEnd) === null || _this$settings$onEnd === void 0 || _this$settings$onEnd.call(_this$settings2, this);\n }\n }\n cancel() {\n if (this._inProgress) {\n var _this$settings$onInte, _this$settings3;\n (_this$settings$onInte = (_this$settings3 = this.settings).onInterrupt) === null || _this$settings$onInte === void 0 || _this$settings$onInte.call(_this$settings3, this);\n this._timeline.removeChannel(this._handle);\n this._handle = null;\n this._inProgress = false;\n }\n }\n update() {\n var _this$settings$onUpda, _this$settings4;\n if (!this._inProgress) return false;\n if (this._handle === null) {\n const { _timeline: timeline, settings: settings } = this;\n this._handle = timeline.addChannel({\n delay: timeline.getTime(),\n duration: settings.duration\n });\n }\n this.time = this._timeline.getTime(this._handle);\n this._onUpdate();\n (_this$settings$onUpda = (_this$settings4 = this.settings).onUpdate) === null || _this$settings$onUpda === void 0 || _this$settings$onUpda.call(_this$settings4, this);\n if (this._timeline.isFinished(this._handle)) this.end();\n return true;\n }\n _onUpdate() {}\n constructor(timeline){\n (0, $1zR3q.default)(this, \"_inProgress\", void 0);\n (0, $1zR3q.default)(this, \"_handle\", void 0);\n (0, $1zR3q.default)(this, \"_timeline\", void 0);\n (0, $1zR3q.default)(this, \"time\", void 0);\n (0, $1zR3q.default)(this, \"settings\", void 0);\n this._inProgress = false;\n this._handle = null;\n this._timeline = timeline;\n this.time = 0;\n this.settings = {\n duration: 0\n };\n }\n}\n\n});\n\n\nparcelRegister(\"9qj3Q\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6dc553df3367855b$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $1zR3q = parcelRequire(\"1zR3q\");\n\nvar $7jraD = parcelRequire(\"7jraD\");\nvar $cJo7e = parcelRequire(\"cJo7e\");\nvar $2YUMm = parcelRequire(\"2YUMm\");\nvar $7lUAH = parcelRequire(\"7lUAH\");\nvar $bn48C = parcelRequire(\"bn48C\");\n\nvar $5YQrt = parcelRequire(\"5YQrt\");\n\nvar $yVHST = parcelRequire(\"yVHST\");\n\nvar $18U1I = parcelRequire(\"18U1I\");\nclass $6dc553df3367855b$export$2e2bcd8739ae039 {\n get inProgress() {\n return this.transition.inProgress;\n }\n start(transitionSettings, numInstances) {\n const { gl: gl, buffers: buffers, attribute: attribute } = this;\n const padBufferOpts = {\n numInstances: numInstances,\n attribute: attribute,\n fromLength: this.currentLength,\n fromStartIndices: this.currentStartIndices,\n getData: transitionSettings.enter\n };\n for (const buffer of buffers)(0, $5YQrt.padBuffer)((0, $2QP2i._)({\n buffer: buffer\n }, padBufferOpts));\n this.settings = transitionSettings;\n this.currentStartIndices = attribute.startIndices;\n this.currentLength = (0, $5YQrt.getAttributeBufferLength)(attribute, numInstances);\n this.attributeInTransition.setData({\n buffer: buffers[1],\n value: attribute.value\n });\n this.transition.start((0, $edHbI._)((0, $2QP2i._)({}, transitionSettings), {\n duration: Infinity\n }));\n this.transform.update({\n elementCount: Math.floor(this.currentLength / attribute.size),\n sourceBuffers: {\n aTo: (0, $5YQrt.getSourceBufferAttribute)(gl, attribute)\n }\n });\n }\n update() {\n const { buffers: buffers, transform: transform, framebuffer: framebuffer, transition: transition } = this;\n const updated = transition.update();\n if (!updated) return false;\n const settings = this.settings;\n transform.update({\n sourceBuffers: {\n aPrev: buffers[0],\n aCur: buffers[1]\n },\n feedbackBuffers: {\n vNext: buffers[2]\n }\n });\n transform.run({\n framebuffer: framebuffer,\n discard: false,\n clearRenderTarget: true,\n uniforms: {\n stiffness: settings.stiffness,\n damping: settings.damping\n },\n parameters: {\n depthTest: false,\n blend: true,\n viewport: [\n 0,\n 0,\n 1,\n 1\n ],\n blendFunc: [\n 1,\n 1\n ],\n blendEquation: [\n 32776,\n 32776\n ]\n }\n });\n (0, $5YQrt.cycleBuffers)(buffers);\n this.attributeInTransition.setData({\n buffer: buffers[1],\n value: this.attribute.value\n });\n const isTransitioning = (0, $2YUMm.readPixelsToArray)(framebuffer)[0] > 0;\n if (!isTransitioning) transition.end();\n return true;\n }\n cancel() {\n this.transition.cancel();\n this.transform.delete();\n for (const buffer of this.buffers)buffer.delete();\n this.buffers.length = 0;\n this.texture.delete();\n this.framebuffer.delete();\n }\n constructor({ gl: gl, attribute: attribute, timeline: timeline }){\n (0, $1zR3q.default)(this, \"gl\", void 0);\n (0, $1zR3q.default)(this, \"type\", \"spring\");\n (0, $1zR3q.default)(this, \"attributeInTransition\", void 0);\n (0, $1zR3q.default)(this, \"settings\", void 0);\n (0, $1zR3q.default)(this, \"attribute\", void 0);\n (0, $1zR3q.default)(this, \"transition\", void 0);\n (0, $1zR3q.default)(this, \"currentStartIndices\", void 0);\n (0, $1zR3q.default)(this, \"currentLength\", void 0);\n (0, $1zR3q.default)(this, \"texture\", void 0);\n (0, $1zR3q.default)(this, \"framebuffer\", void 0);\n (0, $1zR3q.default)(this, \"transform\", void 0);\n (0, $1zR3q.default)(this, \"buffers\", void 0);\n this.gl = gl;\n this.type = \"spring\";\n this.transition = new (0, $18U1I.default)(timeline);\n this.attribute = attribute;\n this.attributeInTransition = new (0, $yVHST.default)(gl, (0, $edHbI._)((0, $2QP2i._)({}, attribute.settings), {\n normalized: false\n }));\n this.currentStartIndices = attribute.startIndices;\n this.currentLength = 0;\n this.texture = $6dc553df3367855b$var$getTexture(gl);\n this.framebuffer = $6dc553df3367855b$var$getFramebuffer(gl, this.texture);\n this.transform = $6dc553df3367855b$var$getTransform(gl, attribute, this.framebuffer);\n const bufferOpts = {\n byteLength: 0,\n usage: 35050\n };\n this.buffers = [\n new (0, $7jraD.default)(gl, bufferOpts),\n new (0, $7jraD.default)(gl, bufferOpts),\n new (0, $7jraD.default)(gl, bufferOpts)\n ];\n }\n}\nfunction $6dc553df3367855b$var$getTransform(gl, attribute, framebuffer) {\n const attributeType = (0, $5YQrt.getAttributeTypeFromSize)(attribute.size);\n return new (0, $bn48C.default)(gl, {\n framebuffer: framebuffer,\n vs: \"\\n#define SHADER_NAME spring-transition-vertex-shader\\n\\n#define EPSILON 0.00001\\n\\nuniform float stiffness;\\nuniform float damping;\\nattribute ATTRIBUTE_TYPE aPrev;\\nattribute ATTRIBUTE_TYPE aCur;\\nattribute ATTRIBUTE_TYPE aTo;\\nvarying ATTRIBUTE_TYPE vNext;\\nvarying float vIsTransitioningFlag;\\n\\nATTRIBUTE_TYPE getNextValue(ATTRIBUTE_TYPE cur, ATTRIBUTE_TYPE prev, ATTRIBUTE_TYPE dest) {\\n ATTRIBUTE_TYPE velocity = cur - prev;\\n ATTRIBUTE_TYPE delta = dest - cur;\\n ATTRIBUTE_TYPE spring = delta * stiffness;\\n ATTRIBUTE_TYPE damper = velocity * -1.0 * damping;\\n return spring + damper + velocity + cur;\\n}\\n\\nvoid main(void) {\\n bool isTransitioning = length(aCur - aPrev) > EPSILON || length(aTo - aCur) > EPSILON;\\n vIsTransitioningFlag = isTransitioning ? 1.0 : 0.0;\\n\\n vNext = getNextValue(aCur, aPrev, aTo);\\n gl_Position = vec4(0, 0, 0, 1);\\n gl_PointSize = 100.0;\\n}\\n\",\n fs: \"\\n#define SHADER_NAME spring-transition-is-transitioning-fragment-shader\\n\\nvarying float vIsTransitioningFlag;\\n\\nvoid main(void) {\\n if (vIsTransitioningFlag == 0.0) {\\n discard;\\n }\\n gl_FragColor = vec4(1.0);\\n}\",\n defines: {\n ATTRIBUTE_TYPE: attributeType\n },\n varyings: [\n \"vNext\"\n ]\n });\n}\nfunction $6dc553df3367855b$var$getTexture(gl) {\n return new (0, $7lUAH.default)(gl, {\n data: new Uint8Array(4),\n format: 6408,\n type: 5121,\n border: 0,\n mipmaps: false,\n dataFormat: 6408,\n width: 1,\n height: 1\n });\n}\nfunction $6dc553df3367855b$var$getFramebuffer(gl, texture) {\n return new (0, $cJo7e.default)(gl, {\n id: \"spring-transition-is-transitioning-framebuffer\",\n width: 1,\n height: 1,\n attachments: {\n [36064]: texture\n }\n });\n}\n\n});\n\n\n\nparcelRegister(\"EIvaG\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $07a641aa104c7bc3$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $5YQrt = parcelRequire(\"5YQrt\");\n\nvar $l1gew = parcelRequire(\"l1gew\");\n\nvar $io8OD = parcelRequire(\"io8OD\");\n\nvar $4VQgq = parcelRequire(\"4VQgq\");\nconst $07a641aa104c7bc3$var$TRANSITION_TYPES = {\n interpolation: (0, $l1gew.default),\n spring: (0, $io8OD.default)\n};\nclass $07a641aa104c7bc3$export$2e2bcd8739ae039 {\n get active() {\n return this.transitions.size > 0;\n }\n add(key, fromValue, toValue, settings) {\n const { transitions: transitions } = this;\n if (transitions.has(key)) {\n const transition = transitions.get(key);\n const { value: value = transition.settings.fromValue } = transition;\n fromValue = value;\n this.remove(key);\n }\n settings = (0, $5YQrt.normalizeTransitionSettings)(settings);\n if (!settings) return;\n const TransitionType = $07a641aa104c7bc3$var$TRANSITION_TYPES[settings.type];\n if (!TransitionType) {\n (0, $4VQgq.default).error(\"unsupported transition type '\".concat(settings.type, \"'\"))();\n return;\n }\n const transition = new TransitionType(this.timeline);\n transition.start((0, $edHbI._)((0, $2QP2i._)({}, settings), {\n fromValue: fromValue,\n toValue: toValue\n }));\n transitions.set(key, transition);\n }\n remove(key) {\n const { transitions: transitions } = this;\n if (transitions.has(key)) {\n transitions.get(key).cancel();\n transitions.delete(key);\n }\n }\n update() {\n const propsInTransition = {};\n for (const [key, transition] of this.transitions){\n transition.update();\n propsInTransition[key] = transition.value;\n if (!transition.inProgress) this.remove(key);\n }\n return propsInTransition;\n }\n clear() {\n for (const key of this.transitions.keys())this.remove(key);\n }\n constructor(timeline){\n this.transitions = new Map();\n this.timeline = timeline;\n }\n}\n\n});\nparcelRegister(\"l1gew\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $f4d64889ed8ec45c$export$2e2bcd8739ae039; });\n\nvar $cwF9s = parcelRequire(\"cwF9s\");\n\nvar $18U1I = parcelRequire(\"18U1I\");\nclass $f4d64889ed8ec45c$export$2e2bcd8739ae039 extends (0, $18U1I.default) {\n get value() {\n return this._value;\n }\n _onUpdate() {\n const { time: time, settings: { fromValue: fromValue, toValue: toValue, duration: duration, easing: easing } } = this;\n const t = easing(time / duration);\n this._value = (0, $cwF9s.lerp)(fromValue, toValue, t);\n }\n}\n\n});\n\nparcelRegister(\"io8OD\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $d6314e7bad35b793$export$2e2bcd8739ae039; });\n\nvar $18U1I = parcelRequire(\"18U1I\");\nconst $d6314e7bad35b793$var$EPSILON = 1e-5;\nfunction $d6314e7bad35b793$var$updateSpringElement(prev, cur, dest, damping, stiffness) {\n const velocity = cur - prev;\n const delta = dest - cur;\n const spring = delta * stiffness;\n const damper = -velocity * damping;\n return spring + damper + velocity + cur;\n}\nfunction $d6314e7bad35b793$var$updateSpring(prev, cur, dest, damping, stiffness) {\n if (Array.isArray(dest)) {\n const next = [];\n for(let i = 0; i < dest.length; i++)next[i] = $d6314e7bad35b793$var$updateSpringElement(prev[i], cur[i], dest[i], damping, stiffness);\n return next;\n }\n return $d6314e7bad35b793$var$updateSpringElement(prev, cur, dest, damping, stiffness);\n}\nfunction $d6314e7bad35b793$var$distance(value1, value2) {\n if (Array.isArray(value1)) {\n let distanceSquare = 0;\n for(let i = 0; i < value1.length; i++){\n const d = value1[i] - value2[i];\n distanceSquare += d * d;\n }\n return Math.sqrt(distanceSquare);\n }\n return Math.abs(value1 - value2);\n}\nclass $d6314e7bad35b793$export$2e2bcd8739ae039 extends (0, $18U1I.default) {\n get value() {\n return this._currValue;\n }\n _onUpdate() {\n const { fromValue: fromValue, toValue: toValue, damping: damping, stiffness: stiffness } = this.settings;\n const { _prevValue: _prevValue = fromValue, _currValue: _currValue = fromValue } = this;\n let nextValue = $d6314e7bad35b793$var$updateSpring(_prevValue, _currValue, toValue, damping, stiffness);\n const delta = $d6314e7bad35b793$var$distance(nextValue, toValue);\n const velocity = $d6314e7bad35b793$var$distance(nextValue, _currValue);\n if (delta < $d6314e7bad35b793$var$EPSILON && velocity < $d6314e7bad35b793$var$EPSILON) {\n nextValue = toValue;\n this.end();\n }\n this._prevValue = _currValue;\n this._currValue = nextValue;\n }\n}\n\n});\n\n\nparcelRegister(\"ciluY\", function(module, exports) {\n\n$parcel$export(module.exports, \"validateProps\", function () { return $8f37d7a4ee8ab893$export$45855e0dd982478b; });\n$parcel$export(module.exports, \"diffProps\", function () { return $8f37d7a4ee8ab893$export$8b12422c455acfb9; });\n\nvar $lXg0j = parcelRequire(\"lXg0j\");\nfunction $8f37d7a4ee8ab893$export$45855e0dd982478b(props) {\n const propTypes = props[0, $lXg0j.PROP_TYPES_SYMBOL];\n for(const propName in propTypes){\n const propType = propTypes[propName];\n const { validate: validate } = propType;\n if (validate && !validate(props[propName], propType)) throw new Error(\"Invalid prop \".concat(propName, \": \").concat(props[propName]));\n }\n}\nfunction $8f37d7a4ee8ab893$export$8b12422c455acfb9(props, oldProps) {\n const propsChangedReason = $8f37d7a4ee8ab893$export$1557ccb739c4ea87({\n newProps: props,\n oldProps: oldProps,\n propTypes: props[0, $lXg0j.PROP_TYPES_SYMBOL],\n ignoreProps: {\n data: null,\n updateTriggers: null,\n extensions: null,\n transitions: null\n }\n });\n const dataChangedReason = $8f37d7a4ee8ab893$var$diffDataProps(props, oldProps);\n let updateTriggersChangedReason = false;\n if (!dataChangedReason) updateTriggersChangedReason = $8f37d7a4ee8ab893$var$diffUpdateTriggers(props, oldProps);\n return {\n dataChanged: dataChangedReason,\n propsChanged: propsChangedReason,\n updateTriggersChanged: updateTriggersChangedReason,\n extensionsChanged: $8f37d7a4ee8ab893$var$diffExtensions(props, oldProps),\n transitionsChanged: $8f37d7a4ee8ab893$var$diffTransitions(props, oldProps)\n };\n}\nfunction $8f37d7a4ee8ab893$var$diffTransitions(props, oldProps) {\n if (!props.transitions) return false;\n const result = {};\n const propTypes = props[0, $lXg0j.PROP_TYPES_SYMBOL];\n let changed = false;\n for(const key in props.transitions){\n const propType = propTypes[key];\n const type = propType && propType.type;\n const isTransitionable = type === \"number\" || type === \"color\" || type === \"array\";\n if (isTransitionable && $8f37d7a4ee8ab893$var$comparePropValues(props[key], oldProps[key], propType)) {\n result[key] = true;\n changed = true;\n }\n }\n return changed ? result : false;\n}\nfunction $8f37d7a4ee8ab893$export$1557ccb739c4ea87({ newProps: newProps, oldProps: oldProps, ignoreProps: ignoreProps = {}, propTypes: propTypes = {}, triggerName: triggerName = \"props\" }) {\n if (oldProps === newProps) return false;\n if (typeof newProps !== \"object\" || newProps === null) return \"\".concat(triggerName, \" changed shallowly\");\n if (typeof oldProps !== \"object\" || oldProps === null) return \"\".concat(triggerName, \" changed shallowly\");\n for (const key of Object.keys(newProps))if (!(key in ignoreProps)) {\n if (!(key in oldProps)) return \"\".concat(triggerName, \".\").concat(key, \" added\");\n const changed = $8f37d7a4ee8ab893$var$comparePropValues(newProps[key], oldProps[key], propTypes[key]);\n if (changed) return \"\".concat(triggerName, \".\").concat(key, \" \").concat(changed);\n }\n for (const key of Object.keys(oldProps))if (!(key in ignoreProps)) {\n if (!(key in newProps)) return \"\".concat(triggerName, \".\").concat(key, \" dropped\");\n if (!Object.hasOwnProperty.call(newProps, key)) {\n const changed = $8f37d7a4ee8ab893$var$comparePropValues(newProps[key], oldProps[key], propTypes[key]);\n if (changed) return \"\".concat(triggerName, \".\").concat(key, \" \").concat(changed);\n }\n }\n return false;\n}\nfunction $8f37d7a4ee8ab893$var$comparePropValues(newProp, oldProp, propType) {\n let equal = propType && propType.equal;\n if (equal && !equal(newProp, oldProp, propType)) return \"changed deeply\";\n if (!equal) {\n equal = newProp && oldProp && newProp.equals;\n if (equal && !equal.call(newProp, oldProp)) return \"changed deeply\";\n }\n if (!equal && oldProp !== newProp) return \"changed shallowly\";\n return null;\n}\nfunction $8f37d7a4ee8ab893$var$diffDataProps(props, oldProps) {\n if (oldProps === null) return \"oldProps is null, initial diff\";\n let dataChanged = false;\n const { dataComparator: dataComparator, _dataDiff: _dataDiff } = props;\n if (dataComparator) {\n if (!dataComparator(props.data, oldProps.data)) dataChanged = \"Data comparator detected a change\";\n } else if (props.data !== oldProps.data) dataChanged = \"A new data container was supplied\";\n if (dataChanged && _dataDiff) dataChanged = _dataDiff(props.data, oldProps.data) || dataChanged;\n return dataChanged;\n}\nfunction $8f37d7a4ee8ab893$var$diffUpdateTriggers(props, oldProps) {\n if (oldProps === null) return {\n all: true\n };\n if (\"all\" in props.updateTriggers) {\n const diffReason = $8f37d7a4ee8ab893$var$diffUpdateTrigger(props, oldProps, \"all\");\n if (diffReason) return {\n all: true\n };\n }\n const reason = {};\n let changed = false;\n for(const triggerName in props.updateTriggers)if (triggerName !== \"all\") {\n const diffReason = $8f37d7a4ee8ab893$var$diffUpdateTrigger(props, oldProps, triggerName);\n if (diffReason) {\n reason[triggerName] = true;\n changed = true;\n }\n }\n return changed ? reason : false;\n}\nfunction $8f37d7a4ee8ab893$var$diffExtensions(props, oldProps) {\n if (oldProps === null) return true;\n const oldExtensions = oldProps.extensions;\n const { extensions: extensions } = props;\n if (extensions === oldExtensions) return false;\n if (!oldExtensions || !extensions) return true;\n if (extensions.length !== oldExtensions.length) return true;\n for(let i = 0; i < extensions.length; i++){\n if (!extensions[i].equals(oldExtensions[i])) return true;\n }\n return false;\n}\nfunction $8f37d7a4ee8ab893$var$diffUpdateTrigger(props, oldProps, triggerName) {\n let newTriggers = props.updateTriggers[triggerName];\n newTriggers = newTriggers === undefined || newTriggers === null ? {} : newTriggers;\n let oldTriggers = oldProps.updateTriggers[triggerName];\n oldTriggers = oldTriggers === undefined || oldTriggers === null ? {} : oldTriggers;\n const diffReason = $8f37d7a4ee8ab893$export$1557ccb739c4ea87({\n oldProps: oldTriggers,\n newProps: newTriggers,\n triggerName: triggerName\n });\n return diffReason;\n}\n\n});\nparcelRegister(\"lXg0j\", function(module, exports) {\n\n$parcel$export(module.exports, \"LIFECYCLE\", function () { return $ffbb85be0a8fc19a$export$2cb9787dd463cbf4; });\n$parcel$export(module.exports, \"COMPONENT_SYMBOL\", function () { return $ffbb85be0a8fc19a$export$47f4402f338dd1fc; });\n$parcel$export(module.exports, \"PROP_TYPES_SYMBOL\", function () { return $ffbb85be0a8fc19a$export$b89566a3c9b82a14; });\n$parcel$export(module.exports, \"DEPRECATED_PROPS_SYMBOL\", function () { return $ffbb85be0a8fc19a$export$4fbadbb2b382bcdd; });\n$parcel$export(module.exports, \"ASYNC_DEFAULTS_SYMBOL\", function () { return $ffbb85be0a8fc19a$export$23f7c42255df7b05; });\n$parcel$export(module.exports, \"ASYNC_ORIGINAL_SYMBOL\", function () { return $ffbb85be0a8fc19a$export$c313d789070da88c; });\n$parcel$export(module.exports, \"ASYNC_RESOLVED_SYMBOL\", function () { return $ffbb85be0a8fc19a$export$40aefa3472633071; });\nconst $ffbb85be0a8fc19a$export$2cb9787dd463cbf4 = {\n NO_STATE: \"Awaiting state\",\n MATCHED: \"Matched. State transferred from previous layer\",\n INITIALIZED: \"Initialized\",\n AWAITING_GC: \"Discarded. Awaiting garbage collection\",\n AWAITING_FINALIZATION: \"No longer matched. Awaiting garbage collection\",\n FINALIZED: \"Finalized! Awaiting garbage collection\"\n};\nconst $ffbb85be0a8fc19a$export$47f4402f338dd1fc = Symbol.for(\"component\");\nconst $ffbb85be0a8fc19a$export$b89566a3c9b82a14 = Symbol.for(\"propTypes\");\nconst $ffbb85be0a8fc19a$export$4fbadbb2b382bcdd = Symbol.for(\"deprecatedProps\");\nconst $ffbb85be0a8fc19a$export$23f7c42255df7b05 = Symbol.for(\"asyncPropDefaults\");\nconst $ffbb85be0a8fc19a$export$c313d789070da88c = Symbol.for(\"asyncPropOriginal\");\nconst $ffbb85be0a8fc19a$export$40aefa3472633071 = Symbol.for(\"asyncPropResolved\");\n\n});\n\n\nparcelRegister(\"6CX3d\", function(module, exports) {\n\n$parcel$export(module.exports, \"count\", function () { return $4d3418fbc0bb964a$export$85b9a36db797e02b; });\nconst $4d3418fbc0bb964a$var$ERR_NOT_OBJECT = \"count(): argument not an object\";\nconst $4d3418fbc0bb964a$var$ERR_NOT_CONTAINER = \"count(): argument not a container\";\nfunction $4d3418fbc0bb964a$export$85b9a36db797e02b(container) {\n if (!$4d3418fbc0bb964a$var$isObject(container)) throw new Error($4d3418fbc0bb964a$var$ERR_NOT_OBJECT);\n if (typeof container.count === \"function\") return container.count();\n if (Number.isFinite(container.size)) return container.size;\n if (Number.isFinite(container.length)) return container.length;\n if ($4d3418fbc0bb964a$var$isPlainObject(container)) return Object.keys(container).length;\n throw new Error($4d3418fbc0bb964a$var$ERR_NOT_CONTAINER);\n}\nfunction $4d3418fbc0bb964a$var$isPlainObject(value) {\n return value !== null && typeof value === \"object\" && value.constructor === Object;\n}\nfunction $4d3418fbc0bb964a$var$isObject(value) {\n return value !== null && typeof value === \"object\";\n}\n\n});\n\nparcelRegister(\"4hN1x\", function(module, exports) {\n\n$parcel$export(module.exports, \"mergeShaders\", function () { return $31eec714451bbed7$export$95c481ecbbcfbbf1; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\nfunction $31eec714451bbed7$export$95c481ecbbcfbbf1(target, source) {\n if (!source) return target;\n const result = (0, $2QP2i._)({}, target, source);\n if (\"defines\" in source) result.defines = (0, $2QP2i._)({}, target.defines, source.defines);\n if (\"modules\" in source) {\n result.modules = (target.modules || []).concat(source.modules);\n if (source.modules.some((module)=>module.name === \"project64\")) {\n const index = result.modules.findIndex((module)=>module.name === \"project32\");\n if (index >= 0) result.modules.splice(index, 1);\n }\n }\n if (\"inject\" in source) {\n if (!target.inject) result.inject = source.inject;\n else {\n const mergedInjection = (0, $2QP2i._)({}, target.inject);\n for(const key in source.inject)mergedInjection[key] = (mergedInjection[key] || \"\") + source.inject[key];\n result.inject = mergedInjection;\n }\n }\n return result;\n}\n\n});\n\nparcelRegister(\"4cXyN\", function(module, exports) {\n\n$parcel$export(module.exports, \"getWorldPosition\", function () { return $31067bd486a47c9b$export$13d987dcd33aecbe; });\n$parcel$export(module.exports, \"projectPosition\", function () { return $31067bd486a47c9b$export$a3c26af9c425194b; });\n\nvar $7gQQK = parcelRequire(\"7gQQK\");\n\nvar $3Zb7J = parcelRequire(\"3Zb7J\");\n\nvar $gwLQV = parcelRequire(\"gwLQV\");\n\nvar $egbXO = parcelRequire(\"egbXO\");\n\nvar $7xR33 = parcelRequire(\"7xR33\");\nparcelRequire(\"3vYZD\");\nvar $k5FuL = parcelRequire(\"k5FuL\");\nconst $31067bd486a47c9b$var$DEFAULT_COORDINATE_ORIGIN = [\n 0,\n 0,\n 0\n];\nfunction $31067bd486a47c9b$var$lngLatZToWorldPosition(lngLatZ, viewport, offsetMode = false) {\n const p = viewport.projectPosition(lngLatZ);\n if (offsetMode && viewport instanceof (0, $gwLQV.default)) {\n const [longitude, latitude, z = 0] = lngLatZ;\n const distanceScales = viewport.getDistanceScales([\n longitude,\n latitude\n ]);\n p[2] = z * distanceScales.unitsPerMeter[2];\n }\n return p;\n}\nfunction $31067bd486a47c9b$var$normalizeParameters(opts) {\n const { viewport: viewport, modelMatrix: modelMatrix, coordinateOrigin: coordinateOrigin } = opts;\n let { coordinateSystem: coordinateSystem, fromCoordinateSystem: fromCoordinateSystem, fromCoordinateOrigin: fromCoordinateOrigin } = opts;\n if (coordinateSystem === (0, $7gQQK.COORDINATE_SYSTEM).DEFAULT) coordinateSystem = viewport.isGeospatial ? (0, $7gQQK.COORDINATE_SYSTEM).LNGLAT : (0, $7gQQK.COORDINATE_SYSTEM).CARTESIAN;\n if (fromCoordinateSystem === undefined) fromCoordinateSystem = coordinateSystem;\n if (fromCoordinateOrigin === undefined) fromCoordinateOrigin = coordinateOrigin;\n return {\n viewport: viewport,\n coordinateSystem: coordinateSystem,\n coordinateOrigin: coordinateOrigin,\n modelMatrix: modelMatrix,\n fromCoordinateSystem: fromCoordinateSystem,\n fromCoordinateOrigin: fromCoordinateOrigin\n };\n}\nfunction $31067bd486a47c9b$export$13d987dcd33aecbe(position, { viewport: viewport, modelMatrix: modelMatrix, coordinateSystem: coordinateSystem, coordinateOrigin: coordinateOrigin, offsetMode: offsetMode }) {\n let [x, y, z = 0] = position;\n if (modelMatrix) [x, y, z] = $egbXO.transformMat4([], [\n x,\n y,\n z,\n 1.0\n ], modelMatrix);\n switch(coordinateSystem){\n case (0, $7gQQK.COORDINATE_SYSTEM).LNGLAT:\n return $31067bd486a47c9b$var$lngLatZToWorldPosition([\n x,\n y,\n z\n ], viewport, offsetMode);\n case (0, $7gQQK.COORDINATE_SYSTEM).LNGLAT_OFFSETS:\n return $31067bd486a47c9b$var$lngLatZToWorldPosition([\n x + coordinateOrigin[0],\n y + coordinateOrigin[1],\n z + (coordinateOrigin[2] || 0)\n ], viewport, offsetMode);\n case (0, $7gQQK.COORDINATE_SYSTEM).METER_OFFSETS:\n return $31067bd486a47c9b$var$lngLatZToWorldPosition((0, $k5FuL.addMetersToLngLat)(coordinateOrigin, [\n x,\n y,\n z\n ]), viewport, offsetMode);\n case (0, $7gQQK.COORDINATE_SYSTEM).CARTESIAN:\n default:\n return viewport.isGeospatial ? [\n x + coordinateOrigin[0],\n y + coordinateOrigin[1],\n z + coordinateOrigin[2]\n ] : viewport.projectPosition([\n x,\n y,\n z\n ]);\n }\n}\nfunction $31067bd486a47c9b$export$a3c26af9c425194b(position, params) {\n const { viewport: viewport, coordinateSystem: coordinateSystem, coordinateOrigin: coordinateOrigin, modelMatrix: modelMatrix, fromCoordinateSystem: fromCoordinateSystem, fromCoordinateOrigin: fromCoordinateOrigin } = $31067bd486a47c9b$var$normalizeParameters(params);\n const { autoOffset: autoOffset = true } = params;\n const { geospatialOrigin: geospatialOrigin = $31067bd486a47c9b$var$DEFAULT_COORDINATE_ORIGIN, shaderCoordinateOrigin: shaderCoordinateOrigin = $31067bd486a47c9b$var$DEFAULT_COORDINATE_ORIGIN, offsetMode: offsetMode = false } = autoOffset ? (0, $3Zb7J.getOffsetOrigin)(viewport, coordinateSystem, coordinateOrigin) : {};\n const worldPosition = $31067bd486a47c9b$export$13d987dcd33aecbe(position, {\n viewport: viewport,\n modelMatrix: modelMatrix,\n coordinateSystem: fromCoordinateSystem,\n coordinateOrigin: fromCoordinateOrigin,\n offsetMode: offsetMode\n });\n if (offsetMode) {\n const positionCommonSpace = viewport.projectPosition(geospatialOrigin || shaderCoordinateOrigin);\n $7xR33.sub(worldPosition, worldPosition, positionCommonSpace);\n }\n return worldPosition;\n}\n\n});\nparcelRegister(\"3Zb7J\", function(module, exports) {\n\n$parcel$export(module.exports, \"getOffsetOrigin\", function () { return $2e6fb28603ed26c7$export$20f9eb1a42fcd22d; });\n$parcel$export(module.exports, \"getUniformsFromViewport\", function () { return $2e6fb28603ed26c7$export$31173c1846951f93; });\n\nvar $kI1xR = parcelRequire(\"kI1xR\");\n\nvar $egbXO = parcelRequire(\"egbXO\");\n\nvar $7gQQK = parcelRequire(\"7gQQK\");\n\nvar $b9Qhn = parcelRequire(\"b9Qhn\");\nconst $2e6fb28603ed26c7$var$ZERO_VECTOR = [\n 0,\n 0,\n 0,\n 0\n];\nconst $2e6fb28603ed26c7$var$VECTOR_TO_POINT_MATRIX = [\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0\n];\nconst $2e6fb28603ed26c7$var$IDENTITY_MATRIX = [\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n];\nconst $2e6fb28603ed26c7$var$DEFAULT_PIXELS_PER_UNIT2 = [\n 0,\n 0,\n 0\n];\nconst $2e6fb28603ed26c7$var$DEFAULT_COORDINATE_ORIGIN = [\n 0,\n 0,\n 0\n];\nconst $2e6fb28603ed26c7$var$getMemoizedViewportUniforms = (0, $b9Qhn.default)($2e6fb28603ed26c7$var$calculateViewportUniforms);\nfunction $2e6fb28603ed26c7$export$20f9eb1a42fcd22d(viewport, coordinateSystem, coordinateOrigin = $2e6fb28603ed26c7$var$DEFAULT_COORDINATE_ORIGIN) {\n if (coordinateOrigin.length < 3) coordinateOrigin = [\n coordinateOrigin[0],\n coordinateOrigin[1],\n 0\n ];\n let shaderCoordinateOrigin = coordinateOrigin;\n let geospatialOrigin;\n let offsetMode = true;\n if (coordinateSystem === (0, $7gQQK.COORDINATE_SYSTEM).LNGLAT_OFFSETS || coordinateSystem === (0, $7gQQK.COORDINATE_SYSTEM).METER_OFFSETS) geospatialOrigin = coordinateOrigin;\n else geospatialOrigin = viewport.isGeospatial ? [\n Math.fround(viewport.longitude),\n Math.fround(viewport.latitude),\n 0\n ] : null;\n switch(viewport.projectionMode){\n case (0, $7gQQK.PROJECTION_MODE).WEB_MERCATOR:\n if (coordinateSystem === (0, $7gQQK.COORDINATE_SYSTEM).LNGLAT || coordinateSystem === (0, $7gQQK.COORDINATE_SYSTEM).CARTESIAN) {\n geospatialOrigin = [\n 0,\n 0,\n 0\n ];\n offsetMode = false;\n }\n break;\n case (0, $7gQQK.PROJECTION_MODE).WEB_MERCATOR_AUTO_OFFSET:\n if (coordinateSystem === (0, $7gQQK.COORDINATE_SYSTEM).LNGLAT) shaderCoordinateOrigin = geospatialOrigin;\n else if (coordinateSystem === (0, $7gQQK.COORDINATE_SYSTEM).CARTESIAN) {\n shaderCoordinateOrigin = [\n Math.fround(viewport.center[0]),\n Math.fround(viewport.center[1]),\n 0\n ];\n geospatialOrigin = viewport.unprojectPosition(shaderCoordinateOrigin);\n shaderCoordinateOrigin[0] -= coordinateOrigin[0];\n shaderCoordinateOrigin[1] -= coordinateOrigin[1];\n shaderCoordinateOrigin[2] -= coordinateOrigin[2];\n }\n break;\n case (0, $7gQQK.PROJECTION_MODE).IDENTITY:\n shaderCoordinateOrigin = viewport.position.map(Math.fround);\n shaderCoordinateOrigin[2] = shaderCoordinateOrigin[2] || 0;\n break;\n case (0, $7gQQK.PROJECTION_MODE).GLOBE:\n offsetMode = false;\n geospatialOrigin = null;\n break;\n default:\n offsetMode = false;\n }\n return {\n geospatialOrigin: geospatialOrigin,\n shaderCoordinateOrigin: shaderCoordinateOrigin,\n offsetMode: offsetMode\n };\n}\nfunction $2e6fb28603ed26c7$var$calculateMatrixAndOffset(viewport, coordinateSystem, coordinateOrigin) {\n const { viewMatrixUncentered: viewMatrixUncentered, projectionMatrix: projectionMatrix } = viewport;\n let { viewMatrix: viewMatrix, viewProjectionMatrix: viewProjectionMatrix } = viewport;\n let projectionCenter = $2e6fb28603ed26c7$var$ZERO_VECTOR;\n let originCommon = $2e6fb28603ed26c7$var$ZERO_VECTOR;\n let cameraPosCommon = viewport.cameraPosition;\n const { geospatialOrigin: geospatialOrigin, shaderCoordinateOrigin: shaderCoordinateOrigin, offsetMode: offsetMode } = $2e6fb28603ed26c7$export$20f9eb1a42fcd22d(viewport, coordinateSystem, coordinateOrigin);\n if (offsetMode) {\n originCommon = viewport.projectPosition(geospatialOrigin || shaderCoordinateOrigin);\n cameraPosCommon = [\n cameraPosCommon[0] - originCommon[0],\n cameraPosCommon[1] - originCommon[1],\n cameraPosCommon[2] - originCommon[2]\n ];\n originCommon[3] = 1;\n projectionCenter = $egbXO.transformMat4([], originCommon, viewProjectionMatrix);\n viewMatrix = viewMatrixUncentered || viewMatrix;\n viewProjectionMatrix = $kI1xR.multiply([], projectionMatrix, viewMatrix);\n viewProjectionMatrix = $kI1xR.multiply([], viewProjectionMatrix, $2e6fb28603ed26c7$var$VECTOR_TO_POINT_MATRIX);\n }\n return {\n viewMatrix: viewMatrix,\n viewProjectionMatrix: viewProjectionMatrix,\n projectionCenter: projectionCenter,\n originCommon: originCommon,\n cameraPosCommon: cameraPosCommon,\n shaderCoordinateOrigin: shaderCoordinateOrigin,\n geospatialOrigin: geospatialOrigin\n };\n}\nfunction $2e6fb28603ed26c7$export$31173c1846951f93({ viewport: viewport, devicePixelRatio: devicePixelRatio = 1, modelMatrix: modelMatrix = null, coordinateSystem: coordinateSystem = (0, $7gQQK.COORDINATE_SYSTEM).DEFAULT, coordinateOrigin: coordinateOrigin = $2e6fb28603ed26c7$var$DEFAULT_COORDINATE_ORIGIN, autoWrapLongitude: autoWrapLongitude = false }) {\n if (coordinateSystem === (0, $7gQQK.COORDINATE_SYSTEM).DEFAULT) coordinateSystem = viewport.isGeospatial ? (0, $7gQQK.COORDINATE_SYSTEM).LNGLAT : (0, $7gQQK.COORDINATE_SYSTEM).CARTESIAN;\n const uniforms = $2e6fb28603ed26c7$var$getMemoizedViewportUniforms({\n viewport: viewport,\n devicePixelRatio: devicePixelRatio,\n coordinateSystem: coordinateSystem,\n coordinateOrigin: coordinateOrigin\n });\n uniforms.project_uWrapLongitude = autoWrapLongitude;\n uniforms.project_uModelMatrix = modelMatrix || $2e6fb28603ed26c7$var$IDENTITY_MATRIX;\n return uniforms;\n}\nfunction $2e6fb28603ed26c7$var$calculateViewportUniforms({ viewport: viewport, devicePixelRatio: devicePixelRatio, coordinateSystem: coordinateSystem, coordinateOrigin: coordinateOrigin }) {\n const { projectionCenter: projectionCenter, viewProjectionMatrix: viewProjectionMatrix, originCommon: originCommon, cameraPosCommon: cameraPosCommon, shaderCoordinateOrigin: shaderCoordinateOrigin, geospatialOrigin: geospatialOrigin } = $2e6fb28603ed26c7$var$calculateMatrixAndOffset(viewport, coordinateSystem, coordinateOrigin);\n const distanceScales = viewport.getDistanceScales();\n const viewportSize = [\n viewport.width * devicePixelRatio,\n viewport.height * devicePixelRatio\n ];\n const focalDistance = $egbXO.transformMat4([], [\n 0,\n 0,\n -viewport.focalDistance,\n 1\n ], viewport.projectionMatrix)[3] || 1;\n const uniforms = {\n project_uCoordinateSystem: coordinateSystem,\n project_uProjectionMode: viewport.projectionMode,\n project_uCoordinateOrigin: shaderCoordinateOrigin,\n project_uCommonOrigin: originCommon.slice(0, 3),\n project_uCenter: projectionCenter,\n project_uPseudoMeters: Boolean(viewport._pseudoMeters),\n project_uViewportSize: viewportSize,\n project_uDevicePixelRatio: devicePixelRatio,\n project_uFocalDistance: focalDistance,\n project_uCommonUnitsPerMeter: distanceScales.unitsPerMeter,\n project_uCommonUnitsPerWorldUnit: distanceScales.unitsPerMeter,\n project_uCommonUnitsPerWorldUnit2: $2e6fb28603ed26c7$var$DEFAULT_PIXELS_PER_UNIT2,\n project_uScale: viewport.scale,\n project_uWrapLongitude: false,\n project_uViewProjectionMatrix: viewProjectionMatrix,\n project_uModelMatrix: $2e6fb28603ed26c7$var$IDENTITY_MATRIX,\n project_uCameraPosition: cameraPosCommon\n };\n if (geospatialOrigin) {\n const distanceScalesAtOrigin = viewport.getDistanceScales(geospatialOrigin);\n switch(coordinateSystem){\n case (0, $7gQQK.COORDINATE_SYSTEM).METER_OFFSETS:\n uniforms.project_uCommonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerMeter;\n uniforms.project_uCommonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerMeter2;\n break;\n case (0, $7gQQK.COORDINATE_SYSTEM).LNGLAT:\n case (0, $7gQQK.COORDINATE_SYSTEM).LNGLAT_OFFSETS:\n if (!viewport._pseudoMeters) uniforms.project_uCommonUnitsPerMeter = distanceScalesAtOrigin.unitsPerMeter;\n uniforms.project_uCommonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerDegree;\n uniforms.project_uCommonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerDegree2;\n break;\n case (0, $7gQQK.COORDINATE_SYSTEM).CARTESIAN:\n uniforms.project_uCommonUnitsPerWorldUnit = [\n 1,\n 1,\n distanceScalesAtOrigin.unitsPerMeter[2]\n ];\n uniforms.project_uCommonUnitsPerWorldUnit2 = [\n 0,\n 0,\n distanceScalesAtOrigin.unitsPerMeter2[2]\n ];\n break;\n default:\n break;\n }\n }\n return uniforms;\n}\n\n});\nparcelRegister(\"kI1xR\", function(module, exports) {\n\n$parcel$export(module.exports, \"invert\", function () { return $f1391d84ba904660$export$6897c284b6f9f4dc; });\n$parcel$export(module.exports, \"multiply\", function () { return $f1391d84ba904660$export$2060d2db72cce88f; });\n$parcel$export(module.exports, \"translate\", function () { return $f1391d84ba904660$export$d73ee8ef04f5226a; });\n$parcel$export(module.exports, \"scale\", function () { return $f1391d84ba904660$export$dcdf75081b88279d; });\n\nvar $bheRV = parcelRequire(\"bheRV\");\nfunction $f1391d84ba904660$export$185802fd694ee1f5() {\n var out = new $bheRV.ARRAY_TYPE(16);\n if ($bheRV.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\nfunction $f1391d84ba904660$export$9cd59f9826255e47(a) {\n var out = new $bheRV.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\nfunction $f1391d84ba904660$export$784d13d8ee351f07(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\nfunction $f1391d84ba904660$export$a82be99ed2a44a7d(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new $bheRV.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\nfunction $f1391d84ba904660$export$adaa4cf7ef1b65be(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\nfunction $f1391d84ba904660$export$f0954fd7d5368655(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $f1391d84ba904660$export$9cb09a71b7d66923(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1], a02 = a[2], a03 = a[3];\n var a12 = a[6], a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n return out;\n}\nfunction $f1391d84ba904660$export$6897c284b6f9f4dc(out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n if (!det) return null;\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\nfunction $f1391d84ba904660$export$33f3c024b4ae00a1(out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\nfunction $f1391d84ba904660$export$a04698f914c55ed9(a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\nfunction $f1391d84ba904660$export$2060d2db72cce88f(out, a, b) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; // Cache only the current line of the second matrix\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\nfunction $f1391d84ba904660$export$d73ee8ef04f5226a(out, a, v) {\n var x = v[0], y = v[1], z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n return out;\n}\nfunction $f1391d84ba904660$export$dcdf75081b88279d(out, a, v) {\n var x = v[0], y = v[1], z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\nfunction $f1391d84ba904660$export$bb628a54ab399bc9(out, a, rad, axis) {\n var x = axis[0], y = axis[1], z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n if (len < $bheRV.EPSILON) return null;\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n return out;\n}\nfunction $f1391d84ba904660$export$a59c8716592e09af(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\nfunction $f1391d84ba904660$export$cf71e4d4ca4d1cfd(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\nfunction $f1391d84ba904660$export$ea6eae3365de5b9c(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\nfunction $f1391d84ba904660$export$bc9e79e74e9fddf6(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\nfunction $f1391d84ba904660$export$832ca188ffb1955d(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $f1391d84ba904660$export$926fc125ff3c666c(out, rad, axis) {\n var x = axis[0], y = axis[1], z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n if (len < $bheRV.EPSILON) return null;\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $f1391d84ba904660$export$dd47cc2f828c32ef(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $f1391d84ba904660$export$7dc997d67d2b7f33(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $f1391d84ba904660$export$ad5ddaedc8f405df(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $f1391d84ba904660$export$9545ac307f2a256b(out, q, v) {\n // Quaternion math\n var x = q[0], y = q[1], z = q[2], w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\nfunction $f1391d84ba904660$export$ff497f2be31cc6a(out, a) {\n var translation = new $bheRV.ARRAY_TYPE(3);\n var bx = -a[0], by = -a[1], bz = -a[2], bw = a[3], ax = a[4], ay = a[5], az = a[6], aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n $f1391d84ba904660$export$9545ac307f2a256b(out, a, translation);\n return out;\n}\nfunction $f1391d84ba904660$export$202e99f82f7f0395(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\nfunction $f1391d84ba904660$export$71dc54d92bd04b57(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\nfunction $f1391d84ba904660$export$df3937d3b537df0a(out, mat) {\n var scaling = new $bheRV.ARRAY_TYPE(3);\n $f1391d84ba904660$export$71dc54d92bd04b57(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n return out;\n}\nfunction $f1391d84ba904660$export$ddf9c55c9f2be172(out, q, v, s) {\n // Quaternion math\n var x = q[0], y = q[1], z = q[2], w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\nfunction $f1391d84ba904660$export$1def1f860edc4b1f(out, q, v, s, o) {\n // Quaternion math\n var x = q[0], y = q[1], z = q[2], w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\nfunction $f1391d84ba904660$export$2ff2bbe382249af7(out, q) {\n var x = q[0], y = q[1], z = q[2], w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $f1391d84ba904660$export$89b5708c387cac6c(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\nfunction $f1391d84ba904660$export$541149539f3a4684(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2), nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n return out;\n}\nfunction $f1391d84ba904660$export$58ae211c788e338f(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\nfunction $f1391d84ba904660$export$4f2167e613cfc87b(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\nfunction $f1391d84ba904660$export$d924e14fd6d9aa66(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n if (Math.abs(eyex - centerx) < $bheRV.EPSILON && Math.abs(eyey - centery) < $bheRV.EPSILON && Math.abs(eyez - centerz) < $bheRV.EPSILON) return $f1391d84ba904660$export$f0954fd7d5368655(out);\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\nfunction $f1391d84ba904660$export$aa67782f4dc9e52c(out, eye, target, up) {\n var eyex = eye[0], eyey = eye[1], eyez = eye[2], upx = up[0], upy = up[1], upz = up[2];\n var z0 = eyex - target[0], z1 = eyey - target[1], z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n var x0 = upy * z2 - upz * z1, x1 = upz * z0 - upx * z2, x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\nfunction $f1391d84ba904660$export$42d51816ce590c93(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\nfunction $f1391d84ba904660$export$326827e8268e9cdb(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\nfunction $f1391d84ba904660$export$e16d8520af44a096(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\nfunction $f1391d84ba904660$export$4e2d2ead65e5f7e3(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\nfunction $f1391d84ba904660$export$c697bed75648cdb7(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\nfunction $f1391d84ba904660$export$553579f63bdd7137(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\nfunction $f1391d84ba904660$export$f2599a5cf1109d8(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\nfunction $f1391d84ba904660$export$e9bab7fafb253603(a, b) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n var a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7];\n var a8 = a[8], a9 = a[9], a10 = a[10], a11 = a[11];\n var a12 = a[12], a13 = a[13], a14 = a[14], a15 = a[15];\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n var b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7];\n var b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11];\n var b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n return Math.abs(a0 - b0) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\nvar $f1391d84ba904660$export$6e3a27864ab166fe = $f1391d84ba904660$export$2060d2db72cce88f;\nvar $f1391d84ba904660$export$f93b5905241a7cca = $f1391d84ba904660$export$4e2d2ead65e5f7e3;\n\n});\nparcelRegister(\"bheRV\", function(module, exports) {\n\n$parcel$export(module.exports, \"EPSILON\", function () { return $835cd0d95e33536f$export$fd293b15f47e270; });\n$parcel$export(module.exports, \"ARRAY_TYPE\", function () { return $835cd0d95e33536f$export$b67359430d3b1b2; });\n$parcel$export(module.exports, \"RANDOM\", function () { return $835cd0d95e33536f$export$5ada478c8a628231; });\n/**\r\n * Common utilities\r\n * @module glMatrix\r\n */ // Configuration Constants\nvar $835cd0d95e33536f$export$fd293b15f47e270 = 0.000001;\nvar $835cd0d95e33536f$export$b67359430d3b1b2 = typeof Float32Array !== \"undefined\" ? Float32Array : Array;\nvar $835cd0d95e33536f$export$5ada478c8a628231 = Math.random;\nfunction $835cd0d95e33536f$export$cb2c0eb57f5e532c(type) {\n $835cd0d95e33536f$export$b67359430d3b1b2 = type;\n}\nvar $835cd0d95e33536f$var$degree = Math.PI / 180;\nfunction $835cd0d95e33536f$export$408b8ee5959eefd5(a) {\n return a * $835cd0d95e33536f$var$degree;\n}\nfunction $835cd0d95e33536f$export$e9bab7fafb253603(a, b) {\n return Math.abs(a - b) <= $835cd0d95e33536f$export$fd293b15f47e270 * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function() {\n var y = 0, i = arguments.length;\n while(i--)y += arguments[i] * arguments[i];\n return Math.sqrt(y);\n};\n\n});\n\n\nparcelRegister(\"egbXO\", function(module, exports) {\n\n$parcel$export(module.exports, \"scale\", function () { return $a61bd70e81a64e27$export$dcdf75081b88279d; });\n$parcel$export(module.exports, \"transformMat4\", function () { return $a61bd70e81a64e27$export$5ffbd13800309d59; });\n\nvar $bheRV = parcelRequire(\"bheRV\");\nfunction $a61bd70e81a64e27$export$185802fd694ee1f5() {\n var out = new $bheRV.ARRAY_TYPE(4);\n if ($bheRV.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n return out;\n}\nfunction $a61bd70e81a64e27$export$9cd59f9826255e47(a) {\n var out = new $bheRV.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\nfunction $a61bd70e81a64e27$export$a82be99ed2a44a7d(x, y, z, w) {\n var out = new $bheRV.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\nfunction $a61bd70e81a64e27$export$784d13d8ee351f07(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\nfunction $a61bd70e81a64e27$export$adaa4cf7ef1b65be(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\nfunction $a61bd70e81a64e27$export$e16d8520af44a096(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\nfunction $a61bd70e81a64e27$export$4e2d2ead65e5f7e3(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\nfunction $a61bd70e81a64e27$export$2060d2db72cce88f(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\nfunction $a61bd70e81a64e27$export$cd007d971a5a2143(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\nfunction $a61bd70e81a64e27$export$803ce6b71a0a94b2(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\nfunction $a61bd70e81a64e27$export$a3fe094919f356fd(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\nfunction $a61bd70e81a64e27$export$96ec731ed4dcb222(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\nfunction $a61bd70e81a64e27$export$8960430cfd85939f(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\nfunction $a61bd70e81a64e27$export$2077e0241d6afd3c(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\nfunction $a61bd70e81a64e27$export$dcdf75081b88279d(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\nfunction $a61bd70e81a64e27$export$19cedf1da84ba854(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\nfunction $a61bd70e81a64e27$export$9f17032d917177de(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\nfunction $a61bd70e81a64e27$export$88e6ebb4fe54f538(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\nfunction $a61bd70e81a64e27$export$f24224f1c91d8156(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\nfunction $a61bd70e81a64e27$export$ab44e1323ffc8376(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\nfunction $a61bd70e81a64e27$export$aef51622e549b8b0(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\nfunction $a61bd70e81a64e27$export$70ae2c07e401031b(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\nfunction $a61bd70e81a64e27$export$a3295358bff77e(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n if (len > 0) len = 1 / Math.sqrt(len);\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\nfunction $a61bd70e81a64e27$export$94132a0e348806d4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\nfunction $a61bd70e81a64e27$export$bb646b20bb93d339(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0], B = v[0] * w[2] - v[2] * w[0], C = v[0] * w[3] - v[3] * w[0], D = v[1] * w[2] - v[2] * w[1], E = v[1] * w[3] - v[3] * w[1], F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\nfunction $a61bd70e81a64e27$export$3a89f8d6f6bf6c9f(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\nfunction $a61bd70e81a64e27$export$4385e60b38654f68(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n var v1, v2, v3, v4;\n var s1, s2;\n do {\n v1 = $bheRV.RANDOM() * 2 - 1;\n v2 = $bheRV.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n }while (s1 >= 1);\n do {\n v3 = $bheRV.RANDOM() * 2 - 1;\n v4 = $bheRV.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n }while (s2 >= 1);\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\nfunction $a61bd70e81a64e27$export$5ffbd13800309d59(out, a, m) {\n var x = a[0], y = a[1], z = a[2], w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\nfunction $a61bd70e81a64e27$export$c32adef9e939ce85(out, a, q) {\n var x = a[0], y = a[1], z = a[2];\n var qx = q[0], qy = q[1], qz = q[2], qw = q[3]; // calculate quat * vec\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\nfunction $a61bd70e81a64e27$export$7f9972325ebfd559(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\nfunction $a61bd70e81a64e27$export$42d51816ce590c93(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\nfunction $a61bd70e81a64e27$export$f2599a5cf1109d8(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\nfunction $a61bd70e81a64e27$export$e9bab7fafb253603(a, b) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n return Math.abs(a0 - b0) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\nvar $a61bd70e81a64e27$export$f93b5905241a7cca = $a61bd70e81a64e27$export$4e2d2ead65e5f7e3;\nvar $a61bd70e81a64e27$export$6e3a27864ab166fe = $a61bd70e81a64e27$export$2060d2db72cce88f;\nvar $a61bd70e81a64e27$export$159d9494db57879b = $a61bd70e81a64e27$export$cd007d971a5a2143;\nvar $a61bd70e81a64e27$export$6c4a311cc157c764 = $a61bd70e81a64e27$export$9f17032d917177de;\nvar $a61bd70e81a64e27$export$2422cd6c492a8b3a = $a61bd70e81a64e27$export$88e6ebb4fe54f538;\nvar $a61bd70e81a64e27$export$fc1400facf92c78 = $a61bd70e81a64e27$export$f24224f1c91d8156;\nvar $a61bd70e81a64e27$export$99d8dd3f32a3435 = $a61bd70e81a64e27$export$ab44e1323ffc8376;\nvar $a61bd70e81a64e27$export$4b80e395e36b5a56 = function() {\n var vec = $a61bd70e81a64e27$export$185802fd694ee1f5();\n return function(a, stride, offset, count, fn, arg) {\n var i, l;\n if (!stride) stride = 4;\n if (!offset) offset = 0;\n if (count) l = Math.min(count * stride + offset, a.length);\n else l = a.length;\n for(i = offset; i < l; i += stride){\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n return a;\n };\n}();\n\n});\n\n\nparcelRegister(\"gwLQV\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c084c1038dfd753a$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $1zR3q = parcelRequire(\"1zR3q\");\n\nvar $5CtJW = parcelRequire(\"5CtJW\");\nparcelRequire(\"3vYZD\");\nvar $k5FuL = parcelRequire(\"k5FuL\");\nvar $gy8FM = parcelRequire(\"gy8FM\");\nvar $fPplZ = parcelRequire(\"fPplZ\");\n\nvar $7sAKl = parcelRequire(\"7sAKl\");\n\nvar $cwF9s = parcelRequire(\"cwF9s\");\nvar $1mr6W = parcelRequire(\"1mr6W\");\nclass $c084c1038dfd753a$export$2e2bcd8739ae039 extends (0, $5CtJW.default) {\n get subViewports() {\n if (this._subViewports && !this._subViewports.length) {\n const bounds = this.getBounds();\n const minOffset = Math.floor((bounds[0] + 180) / 360);\n const maxOffset = Math.ceil((bounds[2] - 180) / 360);\n for(let x = minOffset; x <= maxOffset; x++){\n const offsetViewport = x ? new $c084c1038dfd753a$export$2e2bcd8739ae039((0, $edHbI._)((0, $2QP2i._)({}, this), {\n worldOffset: x\n })) : this;\n this._subViewports.push(offsetViewport);\n }\n }\n return this._subViewports;\n }\n projectPosition(xyz) {\n if (this._pseudoMeters) return super.projectPosition(xyz);\n const [X, Y] = this.projectFlat(xyz);\n const Z = (xyz[2] || 0) * (0, $k5FuL.unitsPerMeter)(xyz[1]);\n return [\n X,\n Y,\n Z\n ];\n }\n unprojectPosition(xyz) {\n if (this._pseudoMeters) return super.unprojectPosition(xyz);\n const [X, Y] = this.unprojectFlat(xyz);\n const Z = (xyz[2] || 0) / (0, $k5FuL.unitsPerMeter)(Y);\n return [\n X,\n Y,\n Z\n ];\n }\n addMetersToLngLat(lngLatZ, xyz) {\n return (0, $k5FuL.addMetersToLngLat)(lngLatZ, xyz);\n }\n panByPosition(coords, pixel) {\n const fromLocation = (0, $k5FuL.pixelsToWorld)(pixel, this.pixelUnprojectionMatrix);\n const toLocation = this.projectFlat(coords);\n const translate = $7sAKl.add([], toLocation, $7sAKl.negate([], fromLocation));\n const newCenter = $7sAKl.add([], this.center, translate);\n const [longitude, latitude] = this.unprojectFlat(newCenter);\n return {\n longitude: longitude,\n latitude: latitude\n };\n }\n getBounds(options = {}) {\n const corners = (0, $fPplZ.default)(this, options.z || 0);\n return [\n Math.min(corners[0][0], corners[1][0], corners[2][0], corners[3][0]),\n Math.min(corners[0][1], corners[1][1], corners[2][1], corners[3][1]),\n Math.max(corners[0][0], corners[1][0], corners[2][0], corners[3][0]),\n Math.max(corners[0][1], corners[1][1], corners[2][1], corners[3][1])\n ];\n }\n fitBounds(bounds, options = {}) {\n const { width: width, height: height } = this;\n const { longitude: longitude, latitude: latitude, zoom: zoom } = (0, $gy8FM.default)((0, $2QP2i._)({\n width: width,\n height: height,\n bounds: bounds\n }, options));\n return new $c084c1038dfd753a$export$2e2bcd8739ae039({\n width: width,\n height: height,\n longitude: longitude,\n latitude: latitude,\n zoom: zoom\n });\n }\n constructor(opts = {}){\n const { latitude: latitude = 0, longitude: longitude = 0, zoom: zoom = 0, pitch: pitch = 0, bearing: bearing = 0, nearZMultiplier: nearZMultiplier = 0.1, farZMultiplier: farZMultiplier = 1.01, nearZ: nearZ, farZ: farZ, orthographic: orthographic = false, projectionMatrix: projectionMatrix, repeat: repeat = false, worldOffset: worldOffset = 0, position: position, padding: padding, legacyMeterSizes: legacyMeterSizes = false } = opts;\n let { width: width, height: height, altitude: altitude = 1.5 } = opts;\n const scale = Math.pow(2, zoom);\n width = width || 1;\n height = height || 1;\n let fovy;\n let projectionParameters = null;\n if (projectionMatrix) {\n altitude = projectionMatrix[5] / 2;\n fovy = (0, $k5FuL.altitudeToFovy)(altitude);\n } else {\n if (opts.fovy) {\n fovy = opts.fovy;\n altitude = (0, $k5FuL.fovyToAltitude)(fovy);\n } else fovy = (0, $k5FuL.altitudeToFovy)(altitude);\n let offset;\n if (padding) {\n const { top: top = 0, bottom: bottom = 0 } = padding;\n offset = [\n 0,\n (0, $cwF9s.clamp)((top + height - bottom) / 2, 0, height) - height / 2\n ];\n }\n projectionParameters = (0, $k5FuL.getProjectionParameters)({\n width: width,\n height: height,\n scale: scale,\n center: position && [\n 0,\n 0,\n position[2] * (0, $k5FuL.unitsPerMeter)(latitude)\n ],\n offset: offset,\n pitch: pitch,\n fovy: fovy,\n nearZMultiplier: nearZMultiplier,\n farZMultiplier: farZMultiplier\n });\n if (Number.isFinite(nearZ)) projectionParameters.near = nearZ;\n if (Number.isFinite(farZ)) projectionParameters.far = farZ;\n }\n let viewMatrixUncentered = (0, $k5FuL.getViewMatrix)({\n height: height,\n pitch: pitch,\n bearing: bearing,\n scale: scale,\n altitude: altitude\n });\n if (worldOffset) {\n const viewOffset = new (0, $1mr6W.default)().translate([\n 512 * worldOffset,\n 0,\n 0\n ]);\n viewMatrixUncentered = viewOffset.multiplyLeft(viewMatrixUncentered);\n }\n super((0, $edHbI._)((0, $2QP2i._)((0, $edHbI._)((0, $2QP2i._)({}, opts), {\n width: width,\n height: height,\n viewMatrix: viewMatrixUncentered,\n longitude: longitude,\n latitude: latitude,\n zoom: zoom\n }), projectionParameters), {\n fovy: fovy,\n focalDistance: altitude\n }));\n (0, $1zR3q.default)(this, \"longitude\", void 0);\n (0, $1zR3q.default)(this, \"latitude\", void 0);\n (0, $1zR3q.default)(this, \"pitch\", void 0);\n (0, $1zR3q.default)(this, \"bearing\", void 0);\n (0, $1zR3q.default)(this, \"altitude\", void 0);\n (0, $1zR3q.default)(this, \"fovy\", void 0);\n (0, $1zR3q.default)(this, \"orthographic\", void 0);\n (0, $1zR3q.default)(this, \"_subViewports\", void 0);\n (0, $1zR3q.default)(this, \"_pseudoMeters\", void 0);\n this.latitude = latitude;\n this.longitude = longitude;\n this.zoom = zoom;\n this.pitch = pitch;\n this.bearing = bearing;\n this.altitude = altitude;\n this.fovy = fovy;\n this.orthographic = orthographic;\n this._subViewports = repeat ? [] : null;\n this._pseudoMeters = legacyMeterSizes;\n Object.freeze(this);\n }\n}\n(0, $1zR3q.default)($c084c1038dfd753a$export$2e2bcd8739ae039, \"displayName\", \"WebMercatorViewport\");\n\n});\nparcelRegister(\"5CtJW\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $4177921fc3f81e4b$export$2e2bcd8739ae039; });\n\nvar $1zR3q = parcelRequire(\"1zR3q\");\n\nvar $4VQgq = parcelRequire(\"4VQgq\");\n\nvar $9kyEf = parcelRequire(\"9kyEf\");\n\nvar $cwF9s = parcelRequire(\"cwF9s\");\nvar $1mr6W = parcelRequire(\"1mr6W\");\nvar $cKS36 = parcelRequire(\"cKS36\");\n\nvar $kI1xR = parcelRequire(\"kI1xR\");\nparcelRequire(\"3vYZD\");\nvar $k5FuL = parcelRequire(\"k5FuL\");\n\nvar $7gQQK = parcelRequire(\"7gQQK\");\nconst $4177921fc3f81e4b$var$DEGREES_TO_RADIANS = Math.PI / 180;\nconst $4177921fc3f81e4b$var$IDENTITY = (0, $9kyEf.createMat4)();\nconst $4177921fc3f81e4b$var$ZERO_VECTOR = [\n 0,\n 0,\n 0\n];\nconst $4177921fc3f81e4b$var$DEFAULT_DISTANCE_SCALES = {\n unitsPerMeter: [\n 1,\n 1,\n 1\n ],\n metersPerUnit: [\n 1,\n 1,\n 1\n ]\n};\nfunction $4177921fc3f81e4b$var$createProjectionMatrix({ width: width, height: height, orthographic: orthographic, fovyRadians: fovyRadians, focalDistance: focalDistance, padding: padding, near: near, far: far }) {\n const aspect = width / height;\n const matrix = orthographic ? new (0, $1mr6W.default)().orthographic({\n fovy: fovyRadians,\n aspect: aspect,\n focalDistance: focalDistance,\n near: near,\n far: far\n }) : new (0, $1mr6W.default)().perspective({\n fovy: fovyRadians,\n aspect: aspect,\n near: near,\n far: far\n });\n if (padding) {\n const { left: left = 0, right: right = 0, top: top = 0, bottom: bottom = 0 } = padding;\n const offsetX = (0, $cwF9s.clamp)((left + width - right) / 2, 0, width) - width / 2;\n const offsetY = (0, $cwF9s.clamp)((top + height - bottom) / 2, 0, height) - height / 2;\n matrix[8] -= offsetX * 2 / width;\n matrix[9] += offsetY * 2 / height;\n }\n return matrix;\n}\nclass $4177921fc3f81e4b$export$2e2bcd8739ae039 {\n get subViewports() {\n return null;\n }\n get metersPerPixel() {\n return this.distanceScales.metersPerUnit[2] / this.scale;\n }\n get projectionMode() {\n if (this.isGeospatial) return this.zoom < 12 ? (0, $7gQQK.PROJECTION_MODE).WEB_MERCATOR : (0, $7gQQK.PROJECTION_MODE).WEB_MERCATOR_AUTO_OFFSET;\n return (0, $7gQQK.PROJECTION_MODE).IDENTITY;\n }\n equals(viewport) {\n if (!(viewport instanceof $4177921fc3f81e4b$export$2e2bcd8739ae039)) return false;\n if (this === viewport) return true;\n return viewport.width === this.width && viewport.height === this.height && viewport.scale === this.scale && (0, $cwF9s.equals)(viewport.projectionMatrix, this.projectionMatrix) && (0, $cwF9s.equals)(viewport.viewMatrix, this.viewMatrix);\n }\n project(xyz, { topLeft: topLeft = true } = {}) {\n const worldPosition = this.projectPosition(xyz);\n const coord = (0, $k5FuL.worldToPixels)(worldPosition, this.pixelProjectionMatrix);\n const [x, y] = coord;\n const y2 = topLeft ? y : this.height - y;\n return xyz.length === 2 ? [\n x,\n y2\n ] : [\n x,\n y2,\n coord[2]\n ];\n }\n unproject(xyz, { topLeft: topLeft = true, targetZ: targetZ } = {}) {\n const [x, y, z] = xyz;\n const y2 = topLeft ? y : this.height - y;\n const targetZWorld = targetZ && targetZ * this.distanceScales.unitsPerMeter[2];\n const coord = (0, $k5FuL.pixelsToWorld)([\n x,\n y2,\n z\n ], this.pixelUnprojectionMatrix, targetZWorld);\n const [X, Y, Z] = this.unprojectPosition(coord);\n if (Number.isFinite(z)) return [\n X,\n Y,\n Z\n ];\n return Number.isFinite(targetZ) ? [\n X,\n Y,\n targetZ\n ] : [\n X,\n Y\n ];\n }\n projectPosition(xyz) {\n const [X, Y] = this.projectFlat(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.unitsPerMeter[2];\n return [\n X,\n Y,\n Z\n ];\n }\n unprojectPosition(xyz) {\n const [X, Y] = this.unprojectFlat(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.metersPerUnit[2];\n return [\n X,\n Y,\n Z\n ];\n }\n projectFlat(xyz) {\n if (this.isGeospatial) {\n const result = (0, $k5FuL.lngLatToWorld)(xyz);\n result[1] = (0, $cwF9s.clamp)(result[1], -318, 830);\n return result;\n }\n return xyz;\n }\n unprojectFlat(xyz) {\n if (this.isGeospatial) return (0, $k5FuL.worldToLngLat)(xyz);\n return xyz;\n }\n getBounds(options = {}) {\n const unprojectOption = {\n targetZ: options.z || 0\n };\n const topLeft = this.unproject([\n 0,\n 0\n ], unprojectOption);\n const topRight = this.unproject([\n this.width,\n 0\n ], unprojectOption);\n const bottomLeft = this.unproject([\n 0,\n this.height\n ], unprojectOption);\n const bottomRight = this.unproject([\n this.width,\n this.height\n ], unprojectOption);\n return [\n Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]),\n Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]),\n Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]),\n Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1])\n ];\n }\n getDistanceScales(coordinateOrigin) {\n if (coordinateOrigin) return (0, $k5FuL.getDistanceScales)({\n longitude: coordinateOrigin[0],\n latitude: coordinateOrigin[1],\n highPrecision: true\n });\n return this.distanceScales;\n }\n containsPixel({ x: x, y: y, width: width = 1, height: height = 1 }) {\n return x < this.x + this.width && this.x < x + width && y < this.y + this.height && this.y < y + height;\n }\n getFrustumPlanes() {\n if (this._frustumPlanes.near) return this._frustumPlanes;\n Object.assign(this._frustumPlanes, (0, $9kyEf.getFrustumPlanes)(this.viewProjectionMatrix));\n return this._frustumPlanes;\n }\n panByPosition(coords, pixel) {\n return null;\n }\n _initProps(opts) {\n const longitude = opts.longitude;\n const latitude = opts.latitude;\n if (this.isGeospatial) {\n if (!Number.isFinite(opts.zoom)) this.zoom = (0, $k5FuL.getMeterZoom)({\n latitude: latitude\n }) + Math.log2(this.focalDistance);\n this.distanceScales = opts.distanceScales || (0, $k5FuL.getDistanceScales)({\n latitude: latitude,\n longitude: longitude\n });\n }\n const scale = Math.pow(2, this.zoom);\n this.scale = scale;\n const { position: position, modelMatrix: modelMatrix } = opts;\n let meterOffset = $4177921fc3f81e4b$var$ZERO_VECTOR;\n if (position) meterOffset = modelMatrix ? new (0, $1mr6W.default)(modelMatrix).transformAsVector(position, []) : position;\n if (this.isGeospatial) {\n const center = this.projectPosition([\n longitude,\n latitude,\n 0\n ]);\n this.center = new (0, $cKS36.default)(meterOffset).scale(this.distanceScales.unitsPerMeter).add(center);\n } else this.center = this.projectPosition(meterOffset);\n }\n _initMatrices(opts) {\n const { viewMatrix: viewMatrix = $4177921fc3f81e4b$var$IDENTITY, projectionMatrix: projectionMatrix = null, orthographic: orthographic = false, fovyRadians: fovyRadians, fovy: fovy = 75, near: near = 0.1, far: far = 1000, padding: padding = null, focalDistance: focalDistance = 1 } = opts;\n this.viewMatrixUncentered = viewMatrix;\n this.viewMatrix = new (0, $1mr6W.default)().multiplyRight(viewMatrix).translate(new (0, $cKS36.default)(this.center).negate());\n this.projectionMatrix = projectionMatrix || $4177921fc3f81e4b$var$createProjectionMatrix({\n width: this.width,\n height: this.height,\n orthographic: orthographic,\n fovyRadians: fovyRadians || fovy * $4177921fc3f81e4b$var$DEGREES_TO_RADIANS,\n focalDistance: focalDistance,\n padding: padding,\n near: near,\n far: far\n });\n const vpm = (0, $9kyEf.createMat4)();\n $kI1xR.multiply(vpm, vpm, this.projectionMatrix);\n $kI1xR.multiply(vpm, vpm, this.viewMatrix);\n this.viewProjectionMatrix = vpm;\n this.viewMatrixInverse = $kI1xR.invert([], this.viewMatrix) || this.viewMatrix;\n this.cameraPosition = (0, $9kyEf.getCameraPosition)(this.viewMatrixInverse);\n const viewportMatrix = (0, $9kyEf.createMat4)();\n const pixelProjectionMatrix = (0, $9kyEf.createMat4)();\n $kI1xR.scale(viewportMatrix, viewportMatrix, [\n this.width / 2,\n -this.height / 2,\n 1\n ]);\n $kI1xR.translate(viewportMatrix, viewportMatrix, [\n 1,\n -1,\n 0\n ]);\n $kI1xR.multiply(pixelProjectionMatrix, viewportMatrix, this.viewProjectionMatrix);\n this.pixelProjectionMatrix = pixelProjectionMatrix;\n this.pixelUnprojectionMatrix = $kI1xR.invert((0, $9kyEf.createMat4)(), this.pixelProjectionMatrix);\n if (!this.pixelUnprojectionMatrix) (0, $4VQgq.default).warn(\"Pixel project matrix not invertible\")();\n }\n constructor(opts = {}){\n (0, $1zR3q.default)(this, \"id\", void 0);\n (0, $1zR3q.default)(this, \"x\", void 0);\n (0, $1zR3q.default)(this, \"y\", void 0);\n (0, $1zR3q.default)(this, \"width\", void 0);\n (0, $1zR3q.default)(this, \"height\", void 0);\n (0, $1zR3q.default)(this, \"padding\", void 0);\n (0, $1zR3q.default)(this, \"isGeospatial\", void 0);\n (0, $1zR3q.default)(this, \"zoom\", void 0);\n (0, $1zR3q.default)(this, \"focalDistance\", void 0);\n (0, $1zR3q.default)(this, \"position\", void 0);\n (0, $1zR3q.default)(this, \"modelMatrix\", void 0);\n (0, $1zR3q.default)(this, \"distanceScales\", void 0);\n (0, $1zR3q.default)(this, \"scale\", void 0);\n (0, $1zR3q.default)(this, \"center\", void 0);\n (0, $1zR3q.default)(this, \"cameraPosition\", void 0);\n (0, $1zR3q.default)(this, \"projectionMatrix\", void 0);\n (0, $1zR3q.default)(this, \"viewMatrix\", void 0);\n (0, $1zR3q.default)(this, \"viewMatrixUncentered\", void 0);\n (0, $1zR3q.default)(this, \"viewMatrixInverse\", void 0);\n (0, $1zR3q.default)(this, \"viewProjectionMatrix\", void 0);\n (0, $1zR3q.default)(this, \"pixelProjectionMatrix\", void 0);\n (0, $1zR3q.default)(this, \"pixelUnprojectionMatrix\", void 0);\n (0, $1zR3q.default)(this, \"resolution\", void 0);\n (0, $1zR3q.default)(this, \"_frustumPlanes\", {});\n this.id = opts.id || this.constructor.displayName || \"viewport\";\n this.x = opts.x || 0;\n this.y = opts.y || 0;\n this.width = opts.width || 1;\n this.height = opts.height || 1;\n this.zoom = opts.zoom || 0;\n this.padding = opts.padding;\n this.distanceScales = opts.distanceScales || $4177921fc3f81e4b$var$DEFAULT_DISTANCE_SCALES;\n this.focalDistance = opts.focalDistance || 1;\n this.position = opts.position || $4177921fc3f81e4b$var$ZERO_VECTOR;\n this.modelMatrix = opts.modelMatrix || null;\n const { longitude: longitude, latitude: latitude } = opts;\n this.isGeospatial = Number.isFinite(latitude) && Number.isFinite(longitude);\n this._initProps(opts);\n this._initMatrices(opts);\n this.equals = this.equals.bind(this);\n this.project = this.project.bind(this);\n this.unproject = this.unproject.bind(this);\n this.projectPosition = this.projectPosition.bind(this);\n this.unprojectPosition = this.unprojectPosition.bind(this);\n this.projectFlat = this.projectFlat.bind(this);\n this.unprojectFlat = this.unprojectFlat.bind(this);\n }\n}\n(0, $1zR3q.default)($4177921fc3f81e4b$export$2e2bcd8739ae039, \"displayName\", \"Viewport\");\n\n});\nparcelRegister(\"1mr6W\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $0fdce02c2e767569$export$2e2bcd8739ae039; });\n\nvar $4JloE = parcelRequire(\"4JloE\");\n\nvar $j8wyT = parcelRequire(\"j8wyT\");\n\nvar $idCXM = parcelRequire(\"idCXM\");\n\nvar $2PsMO = parcelRequire(\"2PsMO\");\n\nvar $autGx = parcelRequire(\"autGx\");\n\nvar $bjUmI = parcelRequire(\"bjUmI\");\n\nvar $jCcHA = parcelRequire(\"jCcHA\");\nvar $0fdce02c2e767569$var$INDICES;\n(function(INDICES) {\n INDICES[INDICES[\"COL0ROW0\"] = 0] = \"COL0ROW0\";\n INDICES[INDICES[\"COL0ROW1\"] = 1] = \"COL0ROW1\";\n INDICES[INDICES[\"COL0ROW2\"] = 2] = \"COL0ROW2\";\n INDICES[INDICES[\"COL0ROW3\"] = 3] = \"COL0ROW3\";\n INDICES[INDICES[\"COL1ROW0\"] = 4] = \"COL1ROW0\";\n INDICES[INDICES[\"COL1ROW1\"] = 5] = \"COL1ROW1\";\n INDICES[INDICES[\"COL1ROW2\"] = 6] = \"COL1ROW2\";\n INDICES[INDICES[\"COL1ROW3\"] = 7] = \"COL1ROW3\";\n INDICES[INDICES[\"COL2ROW0\"] = 8] = \"COL2ROW0\";\n INDICES[INDICES[\"COL2ROW1\"] = 9] = \"COL2ROW1\";\n INDICES[INDICES[\"COL2ROW2\"] = 10] = \"COL2ROW2\";\n INDICES[INDICES[\"COL2ROW3\"] = 11] = \"COL2ROW3\";\n INDICES[INDICES[\"COL3ROW0\"] = 12] = \"COL3ROW0\";\n INDICES[INDICES[\"COL3ROW1\"] = 13] = \"COL3ROW1\";\n INDICES[INDICES[\"COL3ROW2\"] = 14] = \"COL3ROW2\";\n INDICES[INDICES[\"COL3ROW3\"] = 15] = \"COL3ROW3\";\n})($0fdce02c2e767569$var$INDICES || ($0fdce02c2e767569$var$INDICES = {}));\nconst $0fdce02c2e767569$var$DEFAULT_FOVY = 45 * Math.PI / 180;\nconst $0fdce02c2e767569$var$DEFAULT_ASPECT = 1;\nconst $0fdce02c2e767569$var$DEFAULT_NEAR = 0.1;\nconst $0fdce02c2e767569$var$DEFAULT_FAR = 500;\nconst $0fdce02c2e767569$var$IDENTITY_MATRIX = Object.freeze([\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n]);\nclass $0fdce02c2e767569$export$2e2bcd8739ae039 extends (0, $4JloE.default) {\n static get IDENTITY() {\n return $0fdce02c2e767569$var$getIdentityMatrix();\n }\n static get ZERO() {\n return $0fdce02c2e767569$var$getZeroMatrix();\n }\n get ELEMENTS() {\n return 16;\n }\n get RANK() {\n return 4;\n }\n get INDICES() {\n return $0fdce02c2e767569$var$INDICES;\n }\n copy(array) {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n this[3] = array[3];\n this[4] = array[4];\n this[5] = array[5];\n this[6] = array[6];\n this[7] = array[7];\n this[8] = array[8];\n this[9] = array[9];\n this[10] = array[10];\n this[11] = array[11];\n this[12] = array[12];\n this[13] = array[13];\n this[14] = array[14];\n this[15] = array[15];\n return this.check();\n }\n set(m00, m10, m20, m30, m01, m11, m21, m31, m02, m12, m22, m32, m03, m13, m23, m33) {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\n }\n setRowMajor(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\n }\n toRowMajor(result) {\n result[0] = this[0];\n result[1] = this[4];\n result[2] = this[8];\n result[3] = this[12];\n result[4] = this[1];\n result[5] = this[5];\n result[6] = this[9];\n result[7] = this[13];\n result[8] = this[2];\n result[9] = this[6];\n result[10] = this[10];\n result[11] = this[14];\n result[12] = this[3];\n result[13] = this[7];\n result[14] = this[11];\n result[15] = this[15];\n return result;\n }\n identity() {\n return this.copy($0fdce02c2e767569$var$IDENTITY_MATRIX);\n }\n fromObject(object) {\n return this.check();\n }\n fromQuaternion(quaternion) {\n $2PsMO.fromQuat(this, quaternion);\n return this.check();\n }\n frustum(view) {\n const { left: left, right: right, bottom: bottom, top: top, near: near = $0fdce02c2e767569$var$DEFAULT_NEAR, far: far = $0fdce02c2e767569$var$DEFAULT_FAR } = view;\n if (far === Infinity) $0fdce02c2e767569$var$computeInfinitePerspectiveOffCenter(this, left, right, bottom, top, near);\n else $2PsMO.frustum(this, left, right, bottom, top, near, far);\n return this.check();\n }\n lookAt(view) {\n const { eye: eye, center: center = [\n 0,\n 0,\n 0\n ], up: up = [\n 0,\n 1,\n 0\n ] } = view;\n $2PsMO.lookAt(this, eye, center, up);\n return this.check();\n }\n ortho(view) {\n const { left: left, right: right, bottom: bottom, top: top, near: near = $0fdce02c2e767569$var$DEFAULT_NEAR, far: far = $0fdce02c2e767569$var$DEFAULT_FAR } = view;\n $2PsMO.ortho(this, left, right, bottom, top, near, far);\n return this.check();\n }\n orthographic(view) {\n const { fovy: fovy = $0fdce02c2e767569$var$DEFAULT_FOVY, aspect: aspect = $0fdce02c2e767569$var$DEFAULT_ASPECT, focalDistance: focalDistance = 1, near: near = $0fdce02c2e767569$var$DEFAULT_NEAR, far: far = $0fdce02c2e767569$var$DEFAULT_FAR } = view;\n $0fdce02c2e767569$var$checkRadians(fovy);\n const halfY = fovy / 2;\n const top = focalDistance * Math.tan(halfY);\n const right = top * aspect;\n return this.ortho({\n left: -right,\n right: right,\n bottom: -top,\n top: top,\n near: near,\n far: far\n });\n }\n perspective(view) {\n const { fovy: fovy = 45 * Math.PI / 180, aspect: aspect = 1, near: near = 0.1, far: far = 500 } = view;\n $0fdce02c2e767569$var$checkRadians(fovy);\n $2PsMO.perspective(this, fovy, aspect, near, far);\n return this.check();\n }\n determinant() {\n return $2PsMO.determinant(this);\n }\n getScale(result = [\n -0,\n -0,\n -0\n ]) {\n result[0] = Math.sqrt(this[0] * this[0] + this[1] * this[1] + this[2] * this[2]);\n result[1] = Math.sqrt(this[4] * this[4] + this[5] * this[5] + this[6] * this[6]);\n result[2] = Math.sqrt(this[8] * this[8] + this[9] * this[9] + this[10] * this[10]);\n return result;\n }\n getTranslation(result = [\n -0,\n -0,\n -0\n ]) {\n result[0] = this[12];\n result[1] = this[13];\n result[2] = this[14];\n return result;\n }\n getRotation(result, scaleResult) {\n result = result || [\n -0,\n -0,\n -0,\n -0,\n -0,\n -0,\n -0,\n -0,\n -0,\n -0,\n -0,\n -0,\n -0,\n -0,\n -0,\n -0\n ];\n scaleResult = scaleResult || [\n -0,\n -0,\n -0\n ];\n const scale = this.getScale(scaleResult);\n const inverseScale0 = 1 / scale[0];\n const inverseScale1 = 1 / scale[1];\n const inverseScale2 = 1 / scale[2];\n result[0] = this[0] * inverseScale0;\n result[1] = this[1] * inverseScale1;\n result[2] = this[2] * inverseScale2;\n result[3] = 0;\n result[4] = this[4] * inverseScale0;\n result[5] = this[5] * inverseScale1;\n result[6] = this[6] * inverseScale2;\n result[7] = 0;\n result[8] = this[8] * inverseScale0;\n result[9] = this[9] * inverseScale1;\n result[10] = this[10] * inverseScale2;\n result[11] = 0;\n result[12] = 0;\n result[13] = 0;\n result[14] = 0;\n result[15] = 1;\n return result;\n }\n getRotationMatrix3(result, scaleResult) {\n result = result || [\n -0,\n -0,\n -0,\n -0,\n -0,\n -0,\n -0,\n -0,\n -0\n ];\n scaleResult = scaleResult || [\n -0,\n -0,\n -0\n ];\n const scale = this.getScale(scaleResult);\n const inverseScale0 = 1 / scale[0];\n const inverseScale1 = 1 / scale[1];\n const inverseScale2 = 1 / scale[2];\n result[0] = this[0] * inverseScale0;\n result[1] = this[1] * inverseScale1;\n result[2] = this[2] * inverseScale2;\n result[3] = this[4] * inverseScale0;\n result[4] = this[5] * inverseScale1;\n result[5] = this[6] * inverseScale2;\n result[6] = this[8] * inverseScale0;\n result[7] = this[9] * inverseScale1;\n result[8] = this[10] * inverseScale2;\n return result;\n }\n transpose() {\n $2PsMO.transpose(this, this);\n return this.check();\n }\n invert() {\n $2PsMO.invert(this, this);\n return this.check();\n }\n multiplyLeft(a) {\n $2PsMO.multiply(this, a, this);\n return this.check();\n }\n multiplyRight(a) {\n $2PsMO.multiply(this, this, a);\n return this.check();\n }\n rotateX(radians) {\n $2PsMO.rotateX(this, this, radians);\n return this.check();\n }\n rotateY(radians) {\n $2PsMO.rotateY(this, this, radians);\n return this.check();\n }\n rotateZ(radians) {\n $2PsMO.rotateZ(this, this, radians);\n return this.check();\n }\n rotateXYZ(angleXYZ) {\n return this.rotateX(angleXYZ[0]).rotateY(angleXYZ[1]).rotateZ(angleXYZ[2]);\n }\n rotateAxis(radians, axis) {\n $2PsMO.rotate(this, this, radians, axis);\n return this.check();\n }\n scale(factor) {\n $2PsMO.scale(this, this, Array.isArray(factor) ? factor : [\n factor,\n factor,\n factor\n ]);\n return this.check();\n }\n translate(vector) {\n $2PsMO.translate(this, this, vector);\n return this.check();\n }\n transform(vector, result) {\n if (vector.length === 4) {\n result = $jCcHA.transformMat4(result || [\n -0,\n -0,\n -0,\n -0\n ], vector, this);\n (0, $j8wyT.checkVector)(result, 4);\n return result;\n }\n return this.transformAsPoint(vector, result);\n }\n transformAsPoint(vector, result) {\n const { length: length } = vector;\n let out;\n switch(length){\n case 2:\n out = $autGx.transformMat4(result || [\n -0,\n -0\n ], vector, this);\n break;\n case 3:\n out = $bjUmI.transformMat4(result || [\n -0,\n -0,\n -0\n ], vector, this);\n break;\n default:\n throw new Error(\"Illegal vector\");\n }\n (0, $j8wyT.checkVector)(out, vector.length);\n return out;\n }\n transformAsVector(vector, result) {\n let out;\n switch(vector.length){\n case 2:\n out = (0, $idCXM.vec2_transformMat4AsVector)(result || [\n -0,\n -0\n ], vector, this);\n break;\n case 3:\n out = (0, $idCXM.vec3_transformMat4AsVector)(result || [\n -0,\n -0,\n -0\n ], vector, this);\n break;\n default:\n throw new Error(\"Illegal vector\");\n }\n (0, $j8wyT.checkVector)(out, vector.length);\n return out;\n }\n transformPoint(vector, result) {\n return this.transformAsPoint(vector, result);\n }\n transformVector(vector, result) {\n return this.transformAsPoint(vector, result);\n }\n transformDirection(vector, result) {\n return this.transformAsVector(vector, result);\n }\n makeRotationX(radians) {\n return this.identity().rotateX(radians);\n }\n makeTranslation(x, y, z) {\n return this.identity().translate([\n x,\n y,\n z\n ]);\n }\n constructor(array){\n super(-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0);\n if (arguments.length === 1 && Array.isArray(array)) this.copy(array);\n else this.identity();\n }\n}\nlet $0fdce02c2e767569$var$ZERO;\nlet $0fdce02c2e767569$var$IDENTITY;\nfunction $0fdce02c2e767569$var$getZeroMatrix() {\n if (!$0fdce02c2e767569$var$ZERO) {\n $0fdce02c2e767569$var$ZERO = new $0fdce02c2e767569$export$2e2bcd8739ae039([\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ]);\n Object.freeze($0fdce02c2e767569$var$ZERO);\n }\n return $0fdce02c2e767569$var$ZERO;\n}\nfunction $0fdce02c2e767569$var$getIdentityMatrix() {\n if (!$0fdce02c2e767569$var$IDENTITY) {\n $0fdce02c2e767569$var$IDENTITY = new $0fdce02c2e767569$export$2e2bcd8739ae039();\n Object.freeze($0fdce02c2e767569$var$IDENTITY);\n }\n return $0fdce02c2e767569$var$IDENTITY;\n}\nfunction $0fdce02c2e767569$var$checkRadians(possiblyDegrees) {\n if (possiblyDegrees > Math.PI * 2) throw Error(\"expected radians\");\n}\nfunction $0fdce02c2e767569$var$computeInfinitePerspectiveOffCenter(result, left, right, bottom, top, near) {\n const column0Row0 = 2 * near / (right - left);\n const column1Row1 = 2 * near / (top - bottom);\n const column2Row0 = (right + left) / (right - left);\n const column2Row1 = (top + bottom) / (top - bottom);\n const column2Row2 = -1;\n const column2Row3 = -1;\n const column3Row2 = -2 * near;\n result[0] = column0Row0;\n result[1] = 0;\n result[2] = 0;\n result[3] = 0;\n result[4] = 0;\n result[5] = column1Row1;\n result[6] = 0;\n result[7] = 0;\n result[8] = column2Row0;\n result[9] = column2Row1;\n result[10] = column2Row2;\n result[11] = column2Row3;\n result[12] = 0;\n result[13] = 0;\n result[14] = column3Row2;\n result[15] = 0;\n return result;\n}\n\n});\nparcelRegister(\"4JloE\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $371bf652a3c77ed3$export$2e2bcd8739ae039; });\n\nvar $cCPCr = parcelRequire(\"cCPCr\");\n\nvar $j8wyT = parcelRequire(\"j8wyT\");\n\nvar $cwF9s = parcelRequire(\"cwF9s\");\nclass $371bf652a3c77ed3$export$2e2bcd8739ae039 extends (0, $cCPCr.default) {\n toString() {\n let string = \"[\";\n if ((0, $cwF9s.config).printRowMajor) {\n string += \"row-major:\";\n for(let row = 0; row < this.RANK; ++row)for(let col = 0; col < this.RANK; ++col)string += \" \".concat(this[col * this.RANK + row]);\n } else {\n string += \"column-major:\";\n for(let i = 0; i < this.ELEMENTS; ++i)string += \" \".concat(this[i]);\n }\n string += \"]\";\n return string;\n }\n getElementIndex(row, col) {\n return col * this.RANK + row;\n }\n getElement(row, col) {\n return this[col * this.RANK + row];\n }\n setElement(row, col, value) {\n this[col * this.RANK + row] = (0, $j8wyT.checkNumber)(value);\n return this;\n }\n getColumn(columnIndex, result = new Array(this.RANK).fill(-0)) {\n const firstIndex = columnIndex * this.RANK;\n for(let i = 0; i < this.RANK; ++i)result[i] = this[firstIndex + i];\n return result;\n }\n setColumn(columnIndex, columnVector) {\n const firstIndex = columnIndex * this.RANK;\n for(let i = 0; i < this.RANK; ++i)this[firstIndex + i] = columnVector[i];\n return this;\n }\n}\n\n});\n\nparcelRegister(\"2PsMO\", function(module, exports) {\n\n$parcel$export(module.exports, \"transpose\", function () { return $20f6ac91acf0dd4a$export$9cb09a71b7d66923; });\n$parcel$export(module.exports, \"invert\", function () { return $20f6ac91acf0dd4a$export$6897c284b6f9f4dc; });\n$parcel$export(module.exports, \"determinant\", function () { return $20f6ac91acf0dd4a$export$a04698f914c55ed9; });\n$parcel$export(module.exports, \"multiply\", function () { return $20f6ac91acf0dd4a$export$2060d2db72cce88f; });\n$parcel$export(module.exports, \"translate\", function () { return $20f6ac91acf0dd4a$export$d73ee8ef04f5226a; });\n$parcel$export(module.exports, \"scale\", function () { return $20f6ac91acf0dd4a$export$dcdf75081b88279d; });\n$parcel$export(module.exports, \"rotate\", function () { return $20f6ac91acf0dd4a$export$bb628a54ab399bc9; });\n$parcel$export(module.exports, \"rotateX\", function () { return $20f6ac91acf0dd4a$export$a59c8716592e09af; });\n$parcel$export(module.exports, \"rotateY\", function () { return $20f6ac91acf0dd4a$export$cf71e4d4ca4d1cfd; });\n$parcel$export(module.exports, \"rotateZ\", function () { return $20f6ac91acf0dd4a$export$ea6eae3365de5b9c; });\n$parcel$export(module.exports, \"getScaling\", function () { return $20f6ac91acf0dd4a$export$71dc54d92bd04b57; });\n$parcel$export(module.exports, \"fromQuat\", function () { return $20f6ac91acf0dd4a$export$2ff2bbe382249af7; });\n$parcel$export(module.exports, \"frustum\", function () { return $20f6ac91acf0dd4a$export$89b5708c387cac6c; });\n$parcel$export(module.exports, \"perspective\", function () { return $20f6ac91acf0dd4a$export$541149539f3a4684; });\n$parcel$export(module.exports, \"ortho\", function () { return $20f6ac91acf0dd4a$export$4f2167e613cfc87b; });\n$parcel$export(module.exports, \"lookAt\", function () { return $20f6ac91acf0dd4a$export$d924e14fd6d9aa66; });\n$parcel$export(module.exports, \"equals\", function () { return $20f6ac91acf0dd4a$export$e9bab7fafb253603; });\n\nvar $jbrKE = parcelRequire(\"jbrKE\");\nfunction $20f6ac91acf0dd4a$export$185802fd694ee1f5() {\n var out = new $jbrKE.ARRAY_TYPE(16);\n if ($jbrKE.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$9cd59f9826255e47(a) {\n var out = new $jbrKE.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$784d13d8ee351f07(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$a82be99ed2a44a7d(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new $jbrKE.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$adaa4cf7ef1b65be(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$f0954fd7d5368655(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$9cb09a71b7d66923(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1], a02 = a[2], a03 = a[3];\n var a12 = a[6], a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$6897c284b6f9f4dc(out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n if (!det) return null;\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$33f3c024b4ae00a1(out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$a04698f914c55ed9(a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\nfunction $20f6ac91acf0dd4a$export$2060d2db72cce88f(out, a, b) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; // Cache only the current line of the second matrix\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$d73ee8ef04f5226a(out, a, v) {\n var x = v[0], y = v[1], z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$dcdf75081b88279d(out, a, v) {\n var x = v[0], y = v[1], z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$bb628a54ab399bc9(out, a, rad, axis) {\n var x = axis[0], y = axis[1], z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n if (len < $jbrKE.EPSILON) return null;\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$a59c8716592e09af(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$cf71e4d4ca4d1cfd(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$ea6eae3365de5b9c(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$bc9e79e74e9fddf6(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$832ca188ffb1955d(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$926fc125ff3c666c(out, rad, axis) {\n var x = axis[0], y = axis[1], z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n if (len < $jbrKE.EPSILON) return null;\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$dd47cc2f828c32ef(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$7dc997d67d2b7f33(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$ad5ddaedc8f405df(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$9545ac307f2a256b(out, q, v) {\n // Quaternion math\n var x = q[0], y = q[1], z = q[2], w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$ff497f2be31cc6a(out, a) {\n var translation = new $jbrKE.ARRAY_TYPE(3);\n var bx = -a[0], by = -a[1], bz = -a[2], bw = a[3], ax = a[4], ay = a[5], az = a[6], aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n $20f6ac91acf0dd4a$export$9545ac307f2a256b(out, a, translation);\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$202e99f82f7f0395(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$71dc54d92bd04b57(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$df3937d3b537df0a(out, mat) {\n var scaling = new $jbrKE.ARRAY_TYPE(3);\n $20f6ac91acf0dd4a$export$71dc54d92bd04b57(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$ddf9c55c9f2be172(out, q, v, s) {\n // Quaternion math\n var x = q[0], y = q[1], z = q[2], w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$1def1f860edc4b1f(out, q, v, s, o) {\n // Quaternion math\n var x = q[0], y = q[1], z = q[2], w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$2ff2bbe382249af7(out, q) {\n var x = q[0], y = q[1], z = q[2], w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$89b5708c387cac6c(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$4cf19729ec9a96b8(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2), nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n return out;\n}\nvar $20f6ac91acf0dd4a$export$541149539f3a4684 = $20f6ac91acf0dd4a$export$4cf19729ec9a96b8;\nfunction $20f6ac91acf0dd4a$export$294bba99a6af0c0c(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2), nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -near;\n }\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$58ae211c788e338f(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$c5f65ef3eb668f27(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\nvar $20f6ac91acf0dd4a$export$4f2167e613cfc87b = $20f6ac91acf0dd4a$export$c5f65ef3eb668f27;\nfunction $20f6ac91acf0dd4a$export$b1d31ea7b4d854e(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = near * nf;\n out[15] = 1;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$d924e14fd6d9aa66(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n if (Math.abs(eyex - centerx) < $jbrKE.EPSILON && Math.abs(eyey - centery) < $jbrKE.EPSILON && Math.abs(eyez - centerz) < $jbrKE.EPSILON) return $20f6ac91acf0dd4a$export$f0954fd7d5368655(out);\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$aa67782f4dc9e52c(out, eye, target, up) {\n var eyex = eye[0], eyey = eye[1], eyez = eye[2], upx = up[0], upy = up[1], upz = up[2];\n var z0 = eyex - target[0], z1 = eyey - target[1], z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n var x0 = upy * z2 - upz * z1, x1 = upz * z0 - upx * z2, x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$42d51816ce590c93(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\nfunction $20f6ac91acf0dd4a$export$326827e8268e9cdb(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\nfunction $20f6ac91acf0dd4a$export$e16d8520af44a096(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$4e2d2ead65e5f7e3(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$c697bed75648cdb7(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$553579f63bdd7137(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\nfunction $20f6ac91acf0dd4a$export$f2599a5cf1109d8(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\nfunction $20f6ac91acf0dd4a$export$e9bab7fafb253603(a, b) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n var a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7];\n var a8 = a[8], a9 = a[9], a10 = a[10], a11 = a[11];\n var a12 = a[12], a13 = a[13], a14 = a[14], a15 = a[15];\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n var b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7];\n var b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11];\n var b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n return Math.abs(a0 - b0) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\nvar $20f6ac91acf0dd4a$export$6e3a27864ab166fe = $20f6ac91acf0dd4a$export$2060d2db72cce88f;\nvar $20f6ac91acf0dd4a$export$f93b5905241a7cca = $20f6ac91acf0dd4a$export$4e2d2ead65e5f7e3;\n\n});\n\nparcelRegister(\"autGx\", function(module, exports) {\n\n$parcel$export(module.exports, \"add\", function () { return $7a33bb9256db33da$export$e16d8520af44a096; });\n$parcel$export(module.exports, \"scale\", function () { return $7a33bb9256db33da$export$dcdf75081b88279d; });\n$parcel$export(module.exports, \"length\", function () { return $7a33bb9256db33da$export$f24224f1c91d8156; });\n$parcel$export(module.exports, \"negate\", function () { return $7a33bb9256db33da$export$aef51622e549b8b0; });\n$parcel$export(module.exports, \"lerp\", function () { return $7a33bb9256db33da$export$3a89f8d6f6bf6c9f; });\n$parcel$export(module.exports, \"transformMat2\", function () { return $7a33bb9256db33da$export$b732428d73874bfc; });\n$parcel$export(module.exports, \"transformMat2d\", function () { return $7a33bb9256db33da$export$3e55bc4b3707dfd3; });\n$parcel$export(module.exports, \"transformMat3\", function () { return $7a33bb9256db33da$export$f0bfa0a0024626ee; });\n$parcel$export(module.exports, \"transformMat4\", function () { return $7a33bb9256db33da$export$5ffbd13800309d59; });\n$parcel$export(module.exports, \"sub\", function () { return $7a33bb9256db33da$export$f93b5905241a7cca; });\n\nvar $jbrKE = parcelRequire(\"jbrKE\");\nfunction $7a33bb9256db33da$export$185802fd694ee1f5() {\n var out = new $jbrKE.ARRAY_TYPE(2);\n if ($jbrKE.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n return out;\n}\nfunction $7a33bb9256db33da$export$9cd59f9826255e47(a) {\n var out = new $jbrKE.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\nfunction $7a33bb9256db33da$export$a82be99ed2a44a7d(x, y) {\n var out = new $jbrKE.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\nfunction $7a33bb9256db33da$export$784d13d8ee351f07(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\nfunction $7a33bb9256db33da$export$adaa4cf7ef1b65be(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\nfunction $7a33bb9256db33da$export$e16d8520af44a096(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\nfunction $7a33bb9256db33da$export$4e2d2ead65e5f7e3(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\nfunction $7a33bb9256db33da$export$2060d2db72cce88f(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\nfunction $7a33bb9256db33da$export$cd007d971a5a2143(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\nfunction $7a33bb9256db33da$export$803ce6b71a0a94b2(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\nfunction $7a33bb9256db33da$export$a3fe094919f356fd(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\nfunction $7a33bb9256db33da$export$96ec731ed4dcb222(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\nfunction $7a33bb9256db33da$export$8960430cfd85939f(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\nfunction $7a33bb9256db33da$export$2077e0241d6afd3c(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\nfunction $7a33bb9256db33da$export$dcdf75081b88279d(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\nfunction $7a33bb9256db33da$export$19cedf1da84ba854(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\nfunction $7a33bb9256db33da$export$9f17032d917177de(a, b) {\n var x = b[0] - a[0], y = b[1] - a[1];\n return Math.hypot(x, y);\n}\nfunction $7a33bb9256db33da$export$88e6ebb4fe54f538(a, b) {\n var x = b[0] - a[0], y = b[1] - a[1];\n return x * x + y * y;\n}\nfunction $7a33bb9256db33da$export$f24224f1c91d8156(a) {\n var x = a[0], y = a[1];\n return Math.hypot(x, y);\n}\nfunction $7a33bb9256db33da$export$ab44e1323ffc8376(a) {\n var x = a[0], y = a[1];\n return x * x + y * y;\n}\nfunction $7a33bb9256db33da$export$aef51622e549b8b0(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\nfunction $7a33bb9256db33da$export$70ae2c07e401031b(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\nfunction $7a33bb9256db33da$export$a3295358bff77e(out, a) {\n var x = a[0], y = a[1];\n var len = x * x + y * y;\n if (len > 0) //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\nfunction $7a33bb9256db33da$export$94132a0e348806d4(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\nfunction $7a33bb9256db33da$export$bb646b20bb93d339(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\nfunction $7a33bb9256db33da$export$3a89f8d6f6bf6c9f(out, a, b, t) {\n var ax = a[0], ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\nfunction $7a33bb9256db33da$export$4385e60b38654f68(out, scale) {\n scale = scale || 1.0;\n var r = $jbrKE.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\nfunction $7a33bb9256db33da$export$b732428d73874bfc(out, a, m) {\n var x = a[0], y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\nfunction $7a33bb9256db33da$export$3e55bc4b3707dfd3(out, a, m) {\n var x = a[0], y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\nfunction $7a33bb9256db33da$export$f0bfa0a0024626ee(out, a, m) {\n var x = a[0], y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\nfunction $7a33bb9256db33da$export$5ffbd13800309d59(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\nfunction $7a33bb9256db33da$export$bb628a54ab399bc9(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0], p1 = a[1] - b[1], sinC = Math.sin(rad), cosC = Math.cos(rad); //perform rotation and translate to correct position\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\nfunction $7a33bb9256db33da$export$944b09d2ad10b378(a, b) {\n var x1 = a[0], y1 = a[1], x2 = b[0], y2 = b[1], // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2), // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\nfunction $7a33bb9256db33da$export$7f9972325ebfd559(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\nfunction $7a33bb9256db33da$export$42d51816ce590c93(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\nfunction $7a33bb9256db33da$export$f2599a5cf1109d8(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\nfunction $7a33bb9256db33da$export$e9bab7fafb253603(a, b) {\n var a0 = a[0], a1 = a[1];\n var b0 = b[0], b1 = b[1];\n return Math.abs(a0 - b0) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\nvar $7a33bb9256db33da$export$fc1400facf92c78 = $7a33bb9256db33da$export$f24224f1c91d8156;\nvar $7a33bb9256db33da$export$f93b5905241a7cca = $7a33bb9256db33da$export$4e2d2ead65e5f7e3;\nvar $7a33bb9256db33da$export$6e3a27864ab166fe = $7a33bb9256db33da$export$2060d2db72cce88f;\nvar $7a33bb9256db33da$export$159d9494db57879b = $7a33bb9256db33da$export$cd007d971a5a2143;\nvar $7a33bb9256db33da$export$6c4a311cc157c764 = $7a33bb9256db33da$export$9f17032d917177de;\nvar $7a33bb9256db33da$export$2422cd6c492a8b3a = $7a33bb9256db33da$export$88e6ebb4fe54f538;\nvar $7a33bb9256db33da$export$99d8dd3f32a3435 = $7a33bb9256db33da$export$ab44e1323ffc8376;\nvar $7a33bb9256db33da$export$4b80e395e36b5a56 = function() {\n var vec = $7a33bb9256db33da$export$185802fd694ee1f5();\n return function(a, stride, offset, count, fn, arg) {\n var i, l;\n if (!stride) stride = 2;\n if (!offset) offset = 0;\n if (count) l = Math.min(count * stride + offset, a.length);\n else l = a.length;\n for(i = offset; i < l; i += stride){\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n return a;\n };\n}();\n\n});\n\nparcelRegister(\"jCcHA\", function(module, exports) {\n\n$parcel$export(module.exports, \"clone\", function () { return $e47b6b4c2027db15$export$9cd59f9826255e47; });\n$parcel$export(module.exports, \"fromValues\", function () { return $e47b6b4c2027db15$export$a82be99ed2a44a7d; });\n$parcel$export(module.exports, \"copy\", function () { return $e47b6b4c2027db15$export$784d13d8ee351f07; });\n$parcel$export(module.exports, \"set\", function () { return $e47b6b4c2027db15$export$adaa4cf7ef1b65be; });\n$parcel$export(module.exports, \"add\", function () { return $e47b6b4c2027db15$export$e16d8520af44a096; });\n$parcel$export(module.exports, \"scale\", function () { return $e47b6b4c2027db15$export$dcdf75081b88279d; });\n$parcel$export(module.exports, \"length\", function () { return $e47b6b4c2027db15$export$f24224f1c91d8156; });\n$parcel$export(module.exports, \"squaredLength\", function () { return $e47b6b4c2027db15$export$ab44e1323ffc8376; });\n$parcel$export(module.exports, \"normalize\", function () { return $e47b6b4c2027db15$export$a3295358bff77e; });\n$parcel$export(module.exports, \"dot\", function () { return $e47b6b4c2027db15$export$94132a0e348806d4; });\n$parcel$export(module.exports, \"lerp\", function () { return $e47b6b4c2027db15$export$3a89f8d6f6bf6c9f; });\n$parcel$export(module.exports, \"transformMat4\", function () { return $e47b6b4c2027db15$export$5ffbd13800309d59; });\n$parcel$export(module.exports, \"transformQuat\", function () { return $e47b6b4c2027db15$export$c32adef9e939ce85; });\n$parcel$export(module.exports, \"exactEquals\", function () { return $e47b6b4c2027db15$export$f2599a5cf1109d8; });\n$parcel$export(module.exports, \"equals\", function () { return $e47b6b4c2027db15$export$e9bab7fafb253603; });\n\nvar $jbrKE = parcelRequire(\"jbrKE\");\nfunction $e47b6b4c2027db15$export$185802fd694ee1f5() {\n var out = new $jbrKE.ARRAY_TYPE(4);\n if ($jbrKE.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n return out;\n}\nfunction $e47b6b4c2027db15$export$9cd59f9826255e47(a) {\n var out = new $jbrKE.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\nfunction $e47b6b4c2027db15$export$a82be99ed2a44a7d(x, y, z, w) {\n var out = new $jbrKE.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\nfunction $e47b6b4c2027db15$export$784d13d8ee351f07(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\nfunction $e47b6b4c2027db15$export$adaa4cf7ef1b65be(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\nfunction $e47b6b4c2027db15$export$e16d8520af44a096(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\nfunction $e47b6b4c2027db15$export$4e2d2ead65e5f7e3(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\nfunction $e47b6b4c2027db15$export$2060d2db72cce88f(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\nfunction $e47b6b4c2027db15$export$cd007d971a5a2143(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\nfunction $e47b6b4c2027db15$export$803ce6b71a0a94b2(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\nfunction $e47b6b4c2027db15$export$a3fe094919f356fd(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\nfunction $e47b6b4c2027db15$export$96ec731ed4dcb222(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\nfunction $e47b6b4c2027db15$export$8960430cfd85939f(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\nfunction $e47b6b4c2027db15$export$2077e0241d6afd3c(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\nfunction $e47b6b4c2027db15$export$dcdf75081b88279d(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\nfunction $e47b6b4c2027db15$export$19cedf1da84ba854(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\nfunction $e47b6b4c2027db15$export$9f17032d917177de(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\nfunction $e47b6b4c2027db15$export$88e6ebb4fe54f538(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\nfunction $e47b6b4c2027db15$export$f24224f1c91d8156(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\nfunction $e47b6b4c2027db15$export$ab44e1323ffc8376(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\nfunction $e47b6b4c2027db15$export$aef51622e549b8b0(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\nfunction $e47b6b4c2027db15$export$70ae2c07e401031b(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\nfunction $e47b6b4c2027db15$export$a3295358bff77e(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n if (len > 0) len = 1 / Math.sqrt(len);\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\nfunction $e47b6b4c2027db15$export$94132a0e348806d4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\nfunction $e47b6b4c2027db15$export$bb646b20bb93d339(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0], B = v[0] * w[2] - v[2] * w[0], C = v[0] * w[3] - v[3] * w[0], D = v[1] * w[2] - v[2] * w[1], E = v[1] * w[3] - v[3] * w[1], F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\nfunction $e47b6b4c2027db15$export$3a89f8d6f6bf6c9f(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\nfunction $e47b6b4c2027db15$export$4385e60b38654f68(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n var v1, v2, v3, v4;\n var s1, s2;\n do {\n v1 = $jbrKE.RANDOM() * 2 - 1;\n v2 = $jbrKE.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n }while (s1 >= 1);\n do {\n v3 = $jbrKE.RANDOM() * 2 - 1;\n v4 = $jbrKE.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n }while (s2 >= 1);\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\nfunction $e47b6b4c2027db15$export$5ffbd13800309d59(out, a, m) {\n var x = a[0], y = a[1], z = a[2], w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\nfunction $e47b6b4c2027db15$export$c32adef9e939ce85(out, a, q) {\n var x = a[0], y = a[1], z = a[2];\n var qx = q[0], qy = q[1], qz = q[2], qw = q[3]; // calculate quat * vec\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\nfunction $e47b6b4c2027db15$export$7f9972325ebfd559(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\nfunction $e47b6b4c2027db15$export$42d51816ce590c93(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\nfunction $e47b6b4c2027db15$export$f2599a5cf1109d8(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\nfunction $e47b6b4c2027db15$export$e9bab7fafb253603(a, b) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n return Math.abs(a0 - b0) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= $jbrKE.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\nvar $e47b6b4c2027db15$export$f93b5905241a7cca = $e47b6b4c2027db15$export$4e2d2ead65e5f7e3;\nvar $e47b6b4c2027db15$export$6e3a27864ab166fe = $e47b6b4c2027db15$export$2060d2db72cce88f;\nvar $e47b6b4c2027db15$export$159d9494db57879b = $e47b6b4c2027db15$export$cd007d971a5a2143;\nvar $e47b6b4c2027db15$export$6c4a311cc157c764 = $e47b6b4c2027db15$export$9f17032d917177de;\nvar $e47b6b4c2027db15$export$2422cd6c492a8b3a = $e47b6b4c2027db15$export$88e6ebb4fe54f538;\nvar $e47b6b4c2027db15$export$fc1400facf92c78 = $e47b6b4c2027db15$export$f24224f1c91d8156;\nvar $e47b6b4c2027db15$export$99d8dd3f32a3435 = $e47b6b4c2027db15$export$ab44e1323ffc8376;\nvar $e47b6b4c2027db15$export$4b80e395e36b5a56 = function() {\n var vec = $e47b6b4c2027db15$export$185802fd694ee1f5();\n return function(a, stride, offset, count, fn, arg) {\n var i, l;\n if (!stride) stride = 4;\n if (!offset) offset = 0;\n if (count) l = Math.min(count * stride + offset, a.length);\n else l = a.length;\n for(i = offset; i < l; i += stride){\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n return a;\n };\n}();\n\n});\n\n\nparcelRegister(\"3vYZD\", function(module, exports) {\n\n$parcel$export(module.exports, \"getBounds\", function () { return (parcelRequire(\"fPplZ\")).default; });\n$parcel$export(module.exports, \"fitBounds\", function () { return (parcelRequire(\"gy8FM\")).default; });\n$parcel$export(module.exports, \"normalizeViewportProps\", function () { return (parcelRequire(\"9cckP\")).default; });\n$parcel$export(module.exports, \"flyToViewport\", function () { return (parcelRequire(\"6Uylx\")).default; });\n$parcel$export(module.exports, \"getFlyToDuration\", function () { return (parcelRequire(\"6Uylx\")).getFlyToDuration; });\n$parcel$export(module.exports, \"lngLatToWorld\", function () { return (parcelRequire(\"k5FuL\")).lngLatToWorld; });\n$parcel$export(module.exports, \"worldToLngLat\", function () { return (parcelRequire(\"k5FuL\")).worldToLngLat; });\n$parcel$export(module.exports, \"worldToPixels\", function () { return (parcelRequire(\"k5FuL\")).worldToPixels; });\n$parcel$export(module.exports, \"pixelsToWorld\", function () { return (parcelRequire(\"k5FuL\")).pixelsToWorld; });\n$parcel$export(module.exports, \"altitudeToFovy\", function () { return (parcelRequire(\"k5FuL\")).altitudeToFovy; });\n$parcel$export(module.exports, \"fovyToAltitude\", function () { return (parcelRequire(\"k5FuL\")).fovyToAltitude; });\n$parcel$export(module.exports, \"getMeterZoom\", function () { return (parcelRequire(\"k5FuL\")).getMeterZoom; });\n$parcel$export(module.exports, \"unitsPerMeter\", function () { return (parcelRequire(\"k5FuL\")).unitsPerMeter; });\n$parcel$export(module.exports, \"getDistanceScales\", function () { return (parcelRequire(\"k5FuL\")).getDistanceScales; });\n$parcel$export(module.exports, \"addMetersToLngLat\", function () { return (parcelRequire(\"k5FuL\")).addMetersToLngLat; });\n$parcel$export(module.exports, \"getViewMatrix\", function () { return (parcelRequire(\"k5FuL\")).getViewMatrix; });\n$parcel$export(module.exports, \"getProjectionParameters\", function () { return (parcelRequire(\"k5FuL\")).getProjectionParameters; });\n\nvar $6rBd7 = parcelRequire(\"6rBd7\");\n\nvar $fPplZ = parcelRequire(\"fPplZ\");\n\nvar $gy8FM = parcelRequire(\"gy8FM\");\n\nvar $9cckP = parcelRequire(\"9cckP\");\n\nvar $6Uylx = parcelRequire(\"6Uylx\");\n\nvar $k5FuL = parcelRequire(\"k5FuL\");\n\n});\nparcelRegister(\"6rBd7\", function(module, exports) {\n\nvar $bh3zl = parcelRequire(\"bh3zl\");\n\nvar $9Uxs3 = parcelRequire(\"9Uxs3\");\n\nvar $k5FuL = parcelRequire(\"k5FuL\");\n\nvar $gy8FM = parcelRequire(\"gy8FM\");\n\nvar $fPplZ = parcelRequire(\"fPplZ\");\n\nvar $3SJ6M = parcelRequire(\"3SJ6M\");\n\nvar $iLzGP = parcelRequire(\"iLzGP\");\n\nvar $bX5ds = parcelRequire(\"bX5ds\");\nclass $4b1220f373d9c412$export$2e2bcd8739ae039 {\n _initMatrices() {\n const { width: width, height: height, projectionMatrix: projectionMatrix, viewMatrix: viewMatrix } = this;\n const vpm = (0, $9Uxs3.createMat4)();\n $3SJ6M.multiply(vpm, vpm, projectionMatrix);\n $3SJ6M.multiply(vpm, vpm, viewMatrix);\n this.viewProjectionMatrix = vpm;\n const m = (0, $9Uxs3.createMat4)();\n $3SJ6M.scale(m, m, [\n width / 2,\n -height / 2,\n 1\n ]);\n $3SJ6M.translate(m, m, [\n 1,\n -1,\n 0\n ]);\n $3SJ6M.multiply(m, m, vpm);\n const mInverse = $3SJ6M.invert((0, $9Uxs3.createMat4)(), m);\n if (!mInverse) throw new Error(\"Pixel project matrix not invertible\");\n this.pixelProjectionMatrix = m;\n this.pixelUnprojectionMatrix = mInverse;\n }\n projectFlat(lngLat) {\n return (0, $k5FuL.lngLatToWorld)(lngLat);\n }\n unprojectFlat(xy) {\n return (0, $k5FuL.worldToLngLat)(xy);\n }\n getMapCenterByLngLatPosition({ lngLat: lngLat, pos: pos }) {\n const fromLocation = (0, $k5FuL.pixelsToWorld)(pos, this.pixelUnprojectionMatrix);\n const toLocation = (0, $k5FuL.lngLatToWorld)(lngLat);\n const translate = $iLzGP.add([], toLocation, $iLzGP.negate([], fromLocation));\n const newCenter = $iLzGP.add([], this.center, translate);\n return (0, $k5FuL.worldToLngLat)(newCenter);\n }\n fitBounds(bounds, options = {}) {\n const { width: width, height: height } = this;\n const { longitude: longitude, latitude: latitude, zoom: zoom } = (0, $gy8FM.default)(Object.assign({\n width: width,\n height: height,\n bounds: bounds\n }, options));\n return new $4b1220f373d9c412$export$2e2bcd8739ae039({\n width: width,\n height: height,\n longitude: longitude,\n latitude: latitude,\n zoom: zoom\n });\n }\n getBounds(options) {\n const corners = this.getBoundingRegion(options);\n const west = Math.min(...corners.map((p)=>p[0]));\n const east = Math.max(...corners.map((p)=>p[0]));\n const south = Math.min(...corners.map((p)=>p[1]));\n const north = Math.max(...corners.map((p)=>p[1]));\n return [\n [\n west,\n south\n ],\n [\n east,\n north\n ]\n ];\n }\n getBoundingRegion(options = {}) {\n return (0, $fPplZ.default)(this, options.z || 0);\n }\n getLocationAtPoint({ lngLat: lngLat, pos: pos }) {\n return this.getMapCenterByLngLatPosition({\n lngLat: lngLat,\n pos: pos\n });\n }\n constructor(props = {\n width: 1,\n height: 1\n }){\n (0, $bh3zl.default)(this, \"latitude\", void 0);\n (0, $bh3zl.default)(this, \"longitude\", void 0);\n (0, $bh3zl.default)(this, \"zoom\", void 0);\n (0, $bh3zl.default)(this, \"pitch\", void 0);\n (0, $bh3zl.default)(this, \"bearing\", void 0);\n (0, $bh3zl.default)(this, \"altitude\", void 0);\n (0, $bh3zl.default)(this, \"fovy\", void 0);\n (0, $bh3zl.default)(this, \"meterOffset\", void 0);\n (0, $bh3zl.default)(this, \"center\", void 0);\n (0, $bh3zl.default)(this, \"width\", void 0);\n (0, $bh3zl.default)(this, \"height\", void 0);\n (0, $bh3zl.default)(this, \"scale\", void 0);\n (0, $bh3zl.default)(this, \"distanceScales\", void 0);\n (0, $bh3zl.default)(this, \"viewMatrix\", void 0);\n (0, $bh3zl.default)(this, \"projectionMatrix\", void 0);\n (0, $bh3zl.default)(this, \"viewProjectionMatrix\", void 0);\n (0, $bh3zl.default)(this, \"pixelProjectionMatrix\", void 0);\n (0, $bh3zl.default)(this, \"pixelUnprojectionMatrix\", void 0);\n (0, $bh3zl.default)(this, \"equals\", (viewport)=>{\n if (!(viewport instanceof $4b1220f373d9c412$export$2e2bcd8739ae039)) return false;\n return viewport.width === this.width && viewport.height === this.height && $3SJ6M.equals(viewport.projectionMatrix, this.projectionMatrix) && $3SJ6M.equals(viewport.viewMatrix, this.viewMatrix);\n });\n (0, $bh3zl.default)(this, \"project\", (lngLatZ, options = {})=>{\n const { topLeft: topLeft = true } = options;\n const worldPosition = this.projectPosition(lngLatZ);\n const coord = (0, $k5FuL.worldToPixels)(worldPosition, this.pixelProjectionMatrix);\n const [x, y] = coord;\n const y2 = topLeft ? y : this.height - y;\n return lngLatZ.length === 2 ? [\n x,\n y2\n ] : [\n x,\n y2,\n coord[2]\n ];\n });\n (0, $bh3zl.default)(this, \"unproject\", (xyz, options = {})=>{\n const { topLeft: topLeft = true, targetZ: targetZ } = options;\n const [x, y, z] = xyz;\n const y2 = topLeft ? y : this.height - y;\n const targetZWorld = targetZ && targetZ * this.distanceScales.unitsPerMeter[2];\n const coord = (0, $k5FuL.pixelsToWorld)([\n x,\n y2,\n z\n ], this.pixelUnprojectionMatrix, targetZWorld);\n const [X, Y, Z] = this.unprojectPosition(coord);\n if (Number.isFinite(z)) return [\n X,\n Y,\n Z\n ];\n return Number.isFinite(targetZ) ? [\n X,\n Y,\n targetZ\n ] : [\n X,\n Y\n ];\n });\n (0, $bh3zl.default)(this, \"projectPosition\", (xyz)=>{\n const [X, Y] = (0, $k5FuL.lngLatToWorld)(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.unitsPerMeter[2];\n return [\n X,\n Y,\n Z\n ];\n });\n (0, $bh3zl.default)(this, \"unprojectPosition\", (xyz)=>{\n const [X, Y] = (0, $k5FuL.worldToLngLat)(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.metersPerUnit[2];\n return [\n X,\n Y,\n Z\n ];\n });\n let { width: width, height: height, altitude: altitude = null, fovy: fovy = null } = props;\n const { latitude: latitude = 0, longitude: longitude = 0, zoom: zoom = 0, pitch: pitch = 0, bearing: bearing = 0, position: position = null, nearZMultiplier: nearZMultiplier = 0.02, farZMultiplier: farZMultiplier = 1.01 } = props;\n width = width || 1;\n height = height || 1;\n if (fovy === null && altitude === null) {\n altitude = (0, $k5FuL.DEFAULT_ALTITUDE);\n fovy = (0, $k5FuL.altitudeToFovy)(altitude);\n } else if (fovy === null) fovy = (0, $k5FuL.altitudeToFovy)(altitude);\n else if (altitude === null) altitude = (0, $k5FuL.fovyToAltitude)(fovy);\n const scale = (0, $k5FuL.zoomToScale)(zoom);\n altitude = Math.max(0.75, altitude);\n const distanceScales = (0, $k5FuL.getDistanceScales)({\n longitude: longitude,\n latitude: latitude\n });\n const center = (0, $k5FuL.lngLatToWorld)([\n longitude,\n latitude\n ]);\n center.push(0);\n if (position) $bX5ds.add(center, center, $bX5ds.mul([], position, distanceScales.unitsPerMeter));\n this.projectionMatrix = (0, $k5FuL.getProjectionMatrix)({\n width: width,\n height: height,\n scale: scale,\n center: center,\n pitch: pitch,\n fovy: fovy,\n nearZMultiplier: nearZMultiplier,\n farZMultiplier: farZMultiplier\n });\n this.viewMatrix = (0, $k5FuL.getViewMatrix)({\n height: height,\n scale: scale,\n center: center,\n pitch: pitch,\n bearing: bearing,\n altitude: altitude\n });\n this.width = width;\n this.height = height;\n this.scale = scale;\n this.latitude = latitude;\n this.longitude = longitude;\n this.zoom = zoom;\n this.pitch = pitch;\n this.bearing = bearing;\n this.altitude = altitude;\n this.fovy = fovy;\n this.center = center;\n this.meterOffset = position || [\n 0,\n 0,\n 0\n ];\n this.distanceScales = distanceScales;\n this._initMatrices();\n Object.freeze(this);\n }\n}\n\n});\nparcelRegister(\"bh3zl\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $83540cf851575ede$export$2e2bcd8739ae039; });\nfunction $83540cf851575ede$export$2e2bcd8739ae039(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\n\n});\n\nparcelRegister(\"9Uxs3\", function(module, exports) {\n\n$parcel$export(module.exports, \"createMat4\", function () { return $73734acdb97e9620$export$1a9a28cade4dcdc4; });\n$parcel$export(module.exports, \"transformVector\", function () { return $73734acdb97e9620$export$8248199402822036; });\n$parcel$export(module.exports, \"mod\", function () { return $73734acdb97e9620$export$842a2cf37af977e1; });\n$parcel$export(module.exports, \"lerp\", function () { return $73734acdb97e9620$export$3a89f8d6f6bf6c9f; });\n$parcel$export(module.exports, \"clamp\", function () { return $73734acdb97e9620$export$7d15b64cf5a3a4c4; });\n$parcel$export(module.exports, \"log2\", function () { return $73734acdb97e9620$export$b9fae0bba9d9094d; });\n\nvar $kE08x = parcelRequire(\"kE08x\");\nfunction $73734acdb97e9620$export$1a9a28cade4dcdc4() {\n return [\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ];\n}\nfunction $73734acdb97e9620$export$8248199402822036(matrix, vector) {\n const result = (0, $kE08x.transformMat4)([], vector, matrix);\n (0, $kE08x.scale)(result, result, 1 / result[3]);\n return result;\n}\nfunction $73734acdb97e9620$export$842a2cf37af977e1(value, divisor) {\n const modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\nfunction $73734acdb97e9620$export$3a89f8d6f6bf6c9f(start, end, step) {\n return step * end + (1 - step) * start;\n}\nfunction $73734acdb97e9620$export$7d15b64cf5a3a4c4(x, min, max) {\n return x < min ? min : x > max ? max : x;\n}\nfunction $73734acdb97e9620$var$ieLog2(x) {\n return Math.log(x) * Math.LOG2E;\n}\nconst $73734acdb97e9620$export$b9fae0bba9d9094d = Math.log2 || $73734acdb97e9620$var$ieLog2;\n\n});\nparcelRegister(\"kE08x\", function(module, exports) {\n\n$parcel$export(module.exports, \"scale\", function () { return $f077a635d80635cb$export$dcdf75081b88279d; });\n$parcel$export(module.exports, \"transformMat4\", function () { return $f077a635d80635cb$export$5ffbd13800309d59; });\n\nvar $jfP25 = parcelRequire(\"jfP25\");\nfunction $f077a635d80635cb$export$185802fd694ee1f5() {\n var out = new $jfP25.ARRAY_TYPE(4);\n if ($jfP25.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n return out;\n}\nfunction $f077a635d80635cb$export$9cd59f9826255e47(a) {\n var out = new $jfP25.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\nfunction $f077a635d80635cb$export$a82be99ed2a44a7d(x, y, z, w) {\n var out = new $jfP25.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\nfunction $f077a635d80635cb$export$784d13d8ee351f07(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\nfunction $f077a635d80635cb$export$adaa4cf7ef1b65be(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\nfunction $f077a635d80635cb$export$e16d8520af44a096(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\nfunction $f077a635d80635cb$export$4e2d2ead65e5f7e3(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\nfunction $f077a635d80635cb$export$2060d2db72cce88f(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\nfunction $f077a635d80635cb$export$cd007d971a5a2143(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\nfunction $f077a635d80635cb$export$803ce6b71a0a94b2(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\nfunction $f077a635d80635cb$export$a3fe094919f356fd(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\nfunction $f077a635d80635cb$export$96ec731ed4dcb222(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\nfunction $f077a635d80635cb$export$8960430cfd85939f(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\nfunction $f077a635d80635cb$export$2077e0241d6afd3c(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\nfunction $f077a635d80635cb$export$dcdf75081b88279d(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\nfunction $f077a635d80635cb$export$19cedf1da84ba854(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\nfunction $f077a635d80635cb$export$9f17032d917177de(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\nfunction $f077a635d80635cb$export$88e6ebb4fe54f538(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\nfunction $f077a635d80635cb$export$f24224f1c91d8156(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\nfunction $f077a635d80635cb$export$ab44e1323ffc8376(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\nfunction $f077a635d80635cb$export$aef51622e549b8b0(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\nfunction $f077a635d80635cb$export$70ae2c07e401031b(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\nfunction $f077a635d80635cb$export$a3295358bff77e(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n if (len > 0) len = 1 / Math.sqrt(len);\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\nfunction $f077a635d80635cb$export$94132a0e348806d4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\nfunction $f077a635d80635cb$export$bb646b20bb93d339(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0], B = v[0] * w[2] - v[2] * w[0], C = v[0] * w[3] - v[3] * w[0], D = v[1] * w[2] - v[2] * w[1], E = v[1] * w[3] - v[3] * w[1], F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\nfunction $f077a635d80635cb$export$3a89f8d6f6bf6c9f(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\nfunction $f077a635d80635cb$export$4385e60b38654f68(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n var v1, v2, v3, v4;\n var s1, s2;\n do {\n v1 = $jfP25.RANDOM() * 2 - 1;\n v2 = $jfP25.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n }while (s1 >= 1);\n do {\n v3 = $jfP25.RANDOM() * 2 - 1;\n v4 = $jfP25.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n }while (s2 >= 1);\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\nfunction $f077a635d80635cb$export$5ffbd13800309d59(out, a, m) {\n var x = a[0], y = a[1], z = a[2], w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\nfunction $f077a635d80635cb$export$c32adef9e939ce85(out, a, q) {\n var x = a[0], y = a[1], z = a[2];\n var qx = q[0], qy = q[1], qz = q[2], qw = q[3]; // calculate quat * vec\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\nfunction $f077a635d80635cb$export$7f9972325ebfd559(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\nfunction $f077a635d80635cb$export$42d51816ce590c93(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\nfunction $f077a635d80635cb$export$f2599a5cf1109d8(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\nfunction $f077a635d80635cb$export$e9bab7fafb253603(a, b) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n return Math.abs(a0 - b0) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\nvar $f077a635d80635cb$export$f93b5905241a7cca = $f077a635d80635cb$export$4e2d2ead65e5f7e3;\nvar $f077a635d80635cb$export$6e3a27864ab166fe = $f077a635d80635cb$export$2060d2db72cce88f;\nvar $f077a635d80635cb$export$159d9494db57879b = $f077a635d80635cb$export$cd007d971a5a2143;\nvar $f077a635d80635cb$export$6c4a311cc157c764 = $f077a635d80635cb$export$9f17032d917177de;\nvar $f077a635d80635cb$export$2422cd6c492a8b3a = $f077a635d80635cb$export$88e6ebb4fe54f538;\nvar $f077a635d80635cb$export$fc1400facf92c78 = $f077a635d80635cb$export$f24224f1c91d8156;\nvar $f077a635d80635cb$export$99d8dd3f32a3435 = $f077a635d80635cb$export$ab44e1323ffc8376;\nvar $f077a635d80635cb$export$4b80e395e36b5a56 = function() {\n var vec = $f077a635d80635cb$export$185802fd694ee1f5();\n return function(a, stride, offset, count, fn, arg) {\n var i, l;\n if (!stride) stride = 4;\n if (!offset) offset = 0;\n if (count) l = Math.min(count * stride + offset, a.length);\n else l = a.length;\n for(i = offset; i < l; i += stride){\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n return a;\n };\n}();\n\n});\nparcelRegister(\"jfP25\", function(module, exports) {\n\n$parcel$export(module.exports, \"EPSILON\", function () { return $e0470109cb7671e2$export$fd293b15f47e270; });\n$parcel$export(module.exports, \"ARRAY_TYPE\", function () { return $e0470109cb7671e2$export$b67359430d3b1b2; });\n$parcel$export(module.exports, \"RANDOM\", function () { return $e0470109cb7671e2$export$5ada478c8a628231; });\n/**\n * Common utilities\n * @module glMatrix\n */ // Configuration Constants\nvar $e0470109cb7671e2$export$fd293b15f47e270 = 0.000001;\nvar $e0470109cb7671e2$export$b67359430d3b1b2 = typeof Float32Array !== \"undefined\" ? Float32Array : Array;\nvar $e0470109cb7671e2$export$5ada478c8a628231 = Math.random;\nfunction $e0470109cb7671e2$export$cb2c0eb57f5e532c(type) {\n $e0470109cb7671e2$export$b67359430d3b1b2 = type;\n}\nvar $e0470109cb7671e2$var$degree = Math.PI / 180;\nfunction $e0470109cb7671e2$export$408b8ee5959eefd5(a) {\n return a * $e0470109cb7671e2$var$degree;\n}\nfunction $e0470109cb7671e2$export$e9bab7fafb253603(a, b) {\n return Math.abs(a - b) <= $e0470109cb7671e2$export$fd293b15f47e270 * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function() {\n var y = 0, i = arguments.length;\n while(i--)y += arguments[i] * arguments[i];\n return Math.sqrt(y);\n};\n\n});\n\n\n\nparcelRegister(\"k5FuL\", function(module, exports) {\n\n$parcel$export(module.exports, \"MAX_LATITUDE\", function () { return $ea0476558ef8b494$export$6872bd9851469b83; });\n$parcel$export(module.exports, \"DEFAULT_ALTITUDE\", function () { return $ea0476558ef8b494$export$c10d0dffa5af045; });\n$parcel$export(module.exports, \"zoomToScale\", function () { return $ea0476558ef8b494$export$eda81de7742ad8e7; });\n$parcel$export(module.exports, \"scaleToZoom\", function () { return $ea0476558ef8b494$export$6e08c044660f3e30; });\n$parcel$export(module.exports, \"lngLatToWorld\", function () { return $ea0476558ef8b494$export$4a0e8ea52607cc9b; });\n$parcel$export(module.exports, \"worldToLngLat\", function () { return $ea0476558ef8b494$export$66ee0abd8a6a9660; });\n$parcel$export(module.exports, \"getMeterZoom\", function () { return $ea0476558ef8b494$export$f4aaab1d865abddd; });\n$parcel$export(module.exports, \"unitsPerMeter\", function () { return $ea0476558ef8b494$export$de3bf8f403bfc548; });\n$parcel$export(module.exports, \"getDistanceScales\", function () { return $ea0476558ef8b494$export$14a522c4e7772100; });\n$parcel$export(module.exports, \"addMetersToLngLat\", function () { return $ea0476558ef8b494$export$86ab4399faf187a8; });\n$parcel$export(module.exports, \"getViewMatrix\", function () { return $ea0476558ef8b494$export$a4dee078b9284944; });\n$parcel$export(module.exports, \"getProjectionParameters\", function () { return $ea0476558ef8b494$export$3debb7b92b597428; });\n$parcel$export(module.exports, \"altitudeToFovy\", function () { return $ea0476558ef8b494$export$4b02e2005c3c5cc; });\n$parcel$export(module.exports, \"fovyToAltitude\", function () { return $ea0476558ef8b494$export$2e0715d5da7e224d; });\n$parcel$export(module.exports, \"getProjectionMatrix\", function () { return $ea0476558ef8b494$export$1d64991cd669ebf9; });\n$parcel$export(module.exports, \"worldToPixels\", function () { return $ea0476558ef8b494$export$46d0dd92e8f9a0db; });\n$parcel$export(module.exports, \"pixelsToWorld\", function () { return $ea0476558ef8b494$export$d0eff18eb06add5f; });\n\nvar $9Uxs3 = parcelRequire(\"9Uxs3\");\n\nvar $3SJ6M = parcelRequire(\"3SJ6M\");\n\nvar $iLzGP = parcelRequire(\"iLzGP\");\n\nvar $bX5ds = parcelRequire(\"bX5ds\");\n\nvar $gugLa = parcelRequire(\"gugLa\");\nconst $ea0476558ef8b494$var$PI = Math.PI;\nconst $ea0476558ef8b494$var$PI_4 = $ea0476558ef8b494$var$PI / 4;\nconst $ea0476558ef8b494$var$DEGREES_TO_RADIANS = $ea0476558ef8b494$var$PI / 180;\nconst $ea0476558ef8b494$var$RADIANS_TO_DEGREES = 180 / $ea0476558ef8b494$var$PI;\nconst $ea0476558ef8b494$var$TILE_SIZE = 512;\nconst $ea0476558ef8b494$var$EARTH_CIRCUMFERENCE = 40.03e6;\nconst $ea0476558ef8b494$export$6872bd9851469b83 = 85.051129;\nconst $ea0476558ef8b494$export$c10d0dffa5af045 = 1.5;\nfunction $ea0476558ef8b494$export$eda81de7742ad8e7(zoom) {\n return Math.pow(2, zoom);\n}\nfunction $ea0476558ef8b494$export$6e08c044660f3e30(scale) {\n return (0, $9Uxs3.log2)(scale);\n}\nfunction $ea0476558ef8b494$export$4a0e8ea52607cc9b(lngLat) {\n const [lng, lat] = lngLat;\n (0, $gugLa.default)(Number.isFinite(lng));\n (0, $gugLa.default)(Number.isFinite(lat) && lat >= -90 && lat <= 90, \"invalid latitude\");\n const lambda2 = lng * $ea0476558ef8b494$var$DEGREES_TO_RADIANS;\n const phi2 = lat * $ea0476558ef8b494$var$DEGREES_TO_RADIANS;\n const x = $ea0476558ef8b494$var$TILE_SIZE * (lambda2 + $ea0476558ef8b494$var$PI) / (2 * $ea0476558ef8b494$var$PI);\n const y = $ea0476558ef8b494$var$TILE_SIZE * ($ea0476558ef8b494$var$PI + Math.log(Math.tan($ea0476558ef8b494$var$PI_4 + phi2 * 0.5))) / (2 * $ea0476558ef8b494$var$PI);\n return [\n x,\n y\n ];\n}\nfunction $ea0476558ef8b494$export$66ee0abd8a6a9660(xy) {\n const [x, y] = xy;\n const lambda2 = x / $ea0476558ef8b494$var$TILE_SIZE * (2 * $ea0476558ef8b494$var$PI) - $ea0476558ef8b494$var$PI;\n const phi2 = 2 * (Math.atan(Math.exp(y / $ea0476558ef8b494$var$TILE_SIZE * (2 * $ea0476558ef8b494$var$PI) - $ea0476558ef8b494$var$PI)) - $ea0476558ef8b494$var$PI_4);\n return [\n lambda2 * $ea0476558ef8b494$var$RADIANS_TO_DEGREES,\n phi2 * $ea0476558ef8b494$var$RADIANS_TO_DEGREES\n ];\n}\nfunction $ea0476558ef8b494$export$f4aaab1d865abddd(options) {\n const { latitude: latitude } = options;\n (0, $gugLa.default)(Number.isFinite(latitude));\n const latCosine = Math.cos(latitude * $ea0476558ef8b494$var$DEGREES_TO_RADIANS);\n return $ea0476558ef8b494$export$6e08c044660f3e30($ea0476558ef8b494$var$EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\nfunction $ea0476558ef8b494$export$de3bf8f403bfc548(latitude) {\n const latCosine = Math.cos(latitude * $ea0476558ef8b494$var$DEGREES_TO_RADIANS);\n return $ea0476558ef8b494$var$TILE_SIZE / $ea0476558ef8b494$var$EARTH_CIRCUMFERENCE / latCosine;\n}\nfunction $ea0476558ef8b494$export$14a522c4e7772100(options) {\n const { latitude: latitude, longitude: longitude, highPrecision: highPrecision = false } = options;\n (0, $gugLa.default)(Number.isFinite(latitude) && Number.isFinite(longitude));\n const worldSize = $ea0476558ef8b494$var$TILE_SIZE;\n const latCosine = Math.cos(latitude * $ea0476558ef8b494$var$DEGREES_TO_RADIANS);\n const unitsPerDegreeX = worldSize / 360;\n const unitsPerDegreeY = unitsPerDegreeX / latCosine;\n const altUnitsPerMeter = worldSize / $ea0476558ef8b494$var$EARTH_CIRCUMFERENCE / latCosine;\n const result = {\n unitsPerMeter: [\n altUnitsPerMeter,\n altUnitsPerMeter,\n altUnitsPerMeter\n ],\n metersPerUnit: [\n 1 / altUnitsPerMeter,\n 1 / altUnitsPerMeter,\n 1 / altUnitsPerMeter\n ],\n unitsPerDegree: [\n unitsPerDegreeX,\n unitsPerDegreeY,\n altUnitsPerMeter\n ],\n degreesPerUnit: [\n 1 / unitsPerDegreeX,\n 1 / unitsPerDegreeY,\n 1 / altUnitsPerMeter\n ]\n };\n if (highPrecision) {\n const latCosine2 = $ea0476558ef8b494$var$DEGREES_TO_RADIANS * Math.tan(latitude * $ea0476558ef8b494$var$DEGREES_TO_RADIANS) / latCosine;\n const unitsPerDegreeY2 = unitsPerDegreeX * latCosine2 / 2;\n const altUnitsPerDegree2 = worldSize / $ea0476558ef8b494$var$EARTH_CIRCUMFERENCE * latCosine2;\n const altUnitsPerMeter2 = altUnitsPerDegree2 / unitsPerDegreeY * altUnitsPerMeter;\n result.unitsPerDegree2 = [\n 0,\n unitsPerDegreeY2,\n altUnitsPerDegree2\n ];\n result.unitsPerMeter2 = [\n altUnitsPerMeter2,\n 0,\n altUnitsPerMeter2\n ];\n }\n return result;\n}\nfunction $ea0476558ef8b494$export$86ab4399faf187a8(lngLatZ, xyz) {\n const [longitude, latitude, z0] = lngLatZ;\n const [x, y, z] = xyz;\n const { unitsPerMeter: unitsPerMeter, unitsPerMeter2: unitsPerMeter2 } = $ea0476558ef8b494$export$14a522c4e7772100({\n longitude: longitude,\n latitude: latitude,\n highPrecision: true\n });\n const worldspace = $ea0476558ef8b494$export$4a0e8ea52607cc9b(lngLatZ);\n worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n const newLngLat = $ea0476558ef8b494$export$66ee0abd8a6a9660(worldspace);\n const newZ = (z0 || 0) + (z || 0);\n return Number.isFinite(z0) || Number.isFinite(z) ? [\n newLngLat[0],\n newLngLat[1],\n newZ\n ] : newLngLat;\n}\nfunction $ea0476558ef8b494$export$a4dee078b9284944(options) {\n const { height: height, pitch: pitch, bearing: bearing, altitude: altitude, scale: scale, center: center } = options;\n const vm = (0, $9Uxs3.createMat4)();\n $3SJ6M.translate(vm, vm, [\n 0,\n 0,\n -altitude\n ]);\n $3SJ6M.rotateX(vm, vm, -pitch * $ea0476558ef8b494$var$DEGREES_TO_RADIANS);\n $3SJ6M.rotateZ(vm, vm, bearing * $ea0476558ef8b494$var$DEGREES_TO_RADIANS);\n const relativeScale = scale / height;\n $3SJ6M.scale(vm, vm, [\n relativeScale,\n relativeScale,\n relativeScale\n ]);\n if (center) $3SJ6M.translate(vm, vm, $bX5ds.negate([], center));\n return vm;\n}\nfunction $ea0476558ef8b494$export$3debb7b92b597428(options) {\n const { width: width, height: height, altitude: altitude, pitch: pitch = 0, offset: offset, center: center, scale: scale, nearZMultiplier: nearZMultiplier = 1, farZMultiplier: farZMultiplier = 1 } = options;\n let { fovy: fovy = $ea0476558ef8b494$export$4b02e2005c3c5cc($ea0476558ef8b494$export$c10d0dffa5af045) } = options;\n if (altitude !== undefined) fovy = $ea0476558ef8b494$export$4b02e2005c3c5cc(altitude);\n const fovRadians = fovy * $ea0476558ef8b494$var$DEGREES_TO_RADIANS;\n const pitchRadians = pitch * $ea0476558ef8b494$var$DEGREES_TO_RADIANS;\n const focalDistance = $ea0476558ef8b494$export$2e0715d5da7e224d(fovy);\n let cameraToSeaLevelDistance = focalDistance;\n if (center) cameraToSeaLevelDistance += center[2] * scale / Math.cos(pitchRadians) / height;\n const fovAboveCenter = fovRadians * (0.5 + (offset ? offset[1] : 0) / height);\n const topHalfSurfaceDistance = Math.sin(fovAboveCenter) * cameraToSeaLevelDistance / Math.sin((0, $9Uxs3.clamp)(Math.PI / 2 - pitchRadians - fovAboveCenter, 0.01, Math.PI - 0.01));\n const furthestDistance = Math.sin(pitchRadians) * topHalfSurfaceDistance + cameraToSeaLevelDistance;\n const horizonDistance = cameraToSeaLevelDistance * 10;\n const farZ = Math.min(furthestDistance * farZMultiplier, horizonDistance);\n return {\n fov: fovRadians,\n aspect: width / height,\n focalDistance: focalDistance,\n near: nearZMultiplier,\n far: farZ\n };\n}\nfunction $ea0476558ef8b494$export$1d64991cd669ebf9(options) {\n const { fov: fov, aspect: aspect, near: near, far: far } = $ea0476558ef8b494$export$3debb7b92b597428(options);\n const projectionMatrix = $3SJ6M.perspective([], fov, aspect, near, far);\n return projectionMatrix;\n}\nfunction $ea0476558ef8b494$export$4b02e2005c3c5cc(altitude) {\n return 2 * Math.atan(0.5 / altitude) * $ea0476558ef8b494$var$RADIANS_TO_DEGREES;\n}\nfunction $ea0476558ef8b494$export$2e0715d5da7e224d(fovy) {\n return 0.5 / Math.tan(0.5 * fovy * $ea0476558ef8b494$var$DEGREES_TO_RADIANS);\n}\nfunction $ea0476558ef8b494$export$46d0dd92e8f9a0db(xyz, pixelProjectionMatrix) {\n const [x, y, z = 0] = xyz;\n (0, $gugLa.default)(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n return (0, $9Uxs3.transformVector)(pixelProjectionMatrix, [\n x,\n y,\n z,\n 1\n ]);\n}\nfunction $ea0476558ef8b494$export$d0eff18eb06add5f(xyz, pixelUnprojectionMatrix, targetZ = 0) {\n const [x, y, z] = xyz;\n (0, $gugLa.default)(Number.isFinite(x) && Number.isFinite(y), \"invalid pixel coordinate\");\n if (Number.isFinite(z)) {\n const coord = (0, $9Uxs3.transformVector)(pixelUnprojectionMatrix, [\n x,\n y,\n z,\n 1\n ]);\n return coord;\n }\n const coord0 = (0, $9Uxs3.transformVector)(pixelUnprojectionMatrix, [\n x,\n y,\n 0,\n 1\n ]);\n const coord1 = (0, $9Uxs3.transformVector)(pixelUnprojectionMatrix, [\n x,\n y,\n 1,\n 1\n ]);\n const z0 = coord0[2];\n const z1 = coord1[2];\n const t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n return $iLzGP.lerp([], coord0, coord1, t);\n}\n\n});\nparcelRegister(\"3SJ6M\", function(module, exports) {\n\n$parcel$export(module.exports, \"invert\", function () { return $2d3967d2766cef10$export$6897c284b6f9f4dc; });\n$parcel$export(module.exports, \"multiply\", function () { return $2d3967d2766cef10$export$2060d2db72cce88f; });\n$parcel$export(module.exports, \"translate\", function () { return $2d3967d2766cef10$export$d73ee8ef04f5226a; });\n$parcel$export(module.exports, \"scale\", function () { return $2d3967d2766cef10$export$dcdf75081b88279d; });\n$parcel$export(module.exports, \"rotateX\", function () { return $2d3967d2766cef10$export$a59c8716592e09af; });\n$parcel$export(module.exports, \"rotateZ\", function () { return $2d3967d2766cef10$export$ea6eae3365de5b9c; });\n$parcel$export(module.exports, \"perspective\", function () { return $2d3967d2766cef10$export$541149539f3a4684; });\n$parcel$export(module.exports, \"equals\", function () { return $2d3967d2766cef10$export$e9bab7fafb253603; });\n\nvar $jfP25 = parcelRequire(\"jfP25\");\nfunction $2d3967d2766cef10$export$185802fd694ee1f5() {\n var out = new $jfP25.ARRAY_TYPE(16);\n if ($jfP25.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\nfunction $2d3967d2766cef10$export$9cd59f9826255e47(a) {\n var out = new $jfP25.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\nfunction $2d3967d2766cef10$export$784d13d8ee351f07(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\nfunction $2d3967d2766cef10$export$a82be99ed2a44a7d(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new $jfP25.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\nfunction $2d3967d2766cef10$export$adaa4cf7ef1b65be(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\nfunction $2d3967d2766cef10$export$f0954fd7d5368655(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $2d3967d2766cef10$export$9cb09a71b7d66923(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1], a02 = a[2], a03 = a[3];\n var a12 = a[6], a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n return out;\n}\nfunction $2d3967d2766cef10$export$6897c284b6f9f4dc(out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n if (!det) return null;\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\nfunction $2d3967d2766cef10$export$33f3c024b4ae00a1(out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\nfunction $2d3967d2766cef10$export$a04698f914c55ed9(a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\nfunction $2d3967d2766cef10$export$2060d2db72cce88f(out, a, b) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; // Cache only the current line of the second matrix\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\nfunction $2d3967d2766cef10$export$d73ee8ef04f5226a(out, a, v) {\n var x = v[0], y = v[1], z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n return out;\n}\nfunction $2d3967d2766cef10$export$dcdf75081b88279d(out, a, v) {\n var x = v[0], y = v[1], z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\nfunction $2d3967d2766cef10$export$bb628a54ab399bc9(out, a, rad, axis) {\n var x = axis[0], y = axis[1], z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n if (len < $jfP25.EPSILON) return null;\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n return out;\n}\nfunction $2d3967d2766cef10$export$a59c8716592e09af(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\nfunction $2d3967d2766cef10$export$cf71e4d4ca4d1cfd(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\nfunction $2d3967d2766cef10$export$ea6eae3365de5b9c(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\nfunction $2d3967d2766cef10$export$bc9e79e74e9fddf6(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\nfunction $2d3967d2766cef10$export$832ca188ffb1955d(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $2d3967d2766cef10$export$926fc125ff3c666c(out, rad, axis) {\n var x = axis[0], y = axis[1], z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n if (len < $jfP25.EPSILON) return null;\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $2d3967d2766cef10$export$dd47cc2f828c32ef(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $2d3967d2766cef10$export$7dc997d67d2b7f33(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $2d3967d2766cef10$export$ad5ddaedc8f405df(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $2d3967d2766cef10$export$9545ac307f2a256b(out, q, v) {\n // Quaternion math\n var x = q[0], y = q[1], z = q[2], w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\nfunction $2d3967d2766cef10$export$ff497f2be31cc6a(out, a) {\n var translation = new $jfP25.ARRAY_TYPE(3);\n var bx = -a[0], by = -a[1], bz = -a[2], bw = a[3], ax = a[4], ay = a[5], az = a[6], aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n $2d3967d2766cef10$export$9545ac307f2a256b(out, a, translation);\n return out;\n}\nfunction $2d3967d2766cef10$export$202e99f82f7f0395(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\nfunction $2d3967d2766cef10$export$71dc54d92bd04b57(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\nfunction $2d3967d2766cef10$export$df3937d3b537df0a(out, mat) {\n var scaling = new $jfP25.ARRAY_TYPE(3);\n $2d3967d2766cef10$export$71dc54d92bd04b57(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n return out;\n}\nfunction $2d3967d2766cef10$export$ddf9c55c9f2be172(out, q, v, s) {\n // Quaternion math\n var x = q[0], y = q[1], z = q[2], w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\nfunction $2d3967d2766cef10$export$1def1f860edc4b1f(out, q, v, s, o) {\n // Quaternion math\n var x = q[0], y = q[1], z = q[2], w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\nfunction $2d3967d2766cef10$export$2ff2bbe382249af7(out, q) {\n var x = q[0], y = q[1], z = q[2], w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $2d3967d2766cef10$export$89b5708c387cac6c(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\nfunction $2d3967d2766cef10$export$4cf19729ec9a96b8(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2), nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n return out;\n}\nvar $2d3967d2766cef10$export$541149539f3a4684 = $2d3967d2766cef10$export$4cf19729ec9a96b8;\nfunction $2d3967d2766cef10$export$294bba99a6af0c0c(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2), nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -near;\n }\n return out;\n}\nfunction $2d3967d2766cef10$export$58ae211c788e338f(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\nfunction $2d3967d2766cef10$export$c5f65ef3eb668f27(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\nvar $2d3967d2766cef10$export$4f2167e613cfc87b = $2d3967d2766cef10$export$c5f65ef3eb668f27;\nfunction $2d3967d2766cef10$export$b1d31ea7b4d854e(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = near * nf;\n out[15] = 1;\n return out;\n}\nfunction $2d3967d2766cef10$export$d924e14fd6d9aa66(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n if (Math.abs(eyex - centerx) < $jfP25.EPSILON && Math.abs(eyey - centery) < $jfP25.EPSILON && Math.abs(eyez - centerz) < $jfP25.EPSILON) return $2d3967d2766cef10$export$f0954fd7d5368655(out);\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\nfunction $2d3967d2766cef10$export$aa67782f4dc9e52c(out, eye, target, up) {\n var eyex = eye[0], eyey = eye[1], eyez = eye[2], upx = up[0], upy = up[1], upz = up[2];\n var z0 = eyex - target[0], z1 = eyey - target[1], z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n var x0 = upy * z2 - upz * z1, x1 = upz * z0 - upx * z2, x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\nfunction $2d3967d2766cef10$export$42d51816ce590c93(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\nfunction $2d3967d2766cef10$export$326827e8268e9cdb(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\nfunction $2d3967d2766cef10$export$e16d8520af44a096(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\nfunction $2d3967d2766cef10$export$4e2d2ead65e5f7e3(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\nfunction $2d3967d2766cef10$export$c697bed75648cdb7(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\nfunction $2d3967d2766cef10$export$553579f63bdd7137(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\nfunction $2d3967d2766cef10$export$f2599a5cf1109d8(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\nfunction $2d3967d2766cef10$export$e9bab7fafb253603(a, b) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n var a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7];\n var a8 = a[8], a9 = a[9], a10 = a[10], a11 = a[11];\n var a12 = a[12], a13 = a[13], a14 = a[14], a15 = a[15];\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n var b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7];\n var b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11];\n var b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n return Math.abs(a0 - b0) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\nvar $2d3967d2766cef10$export$6e3a27864ab166fe = $2d3967d2766cef10$export$2060d2db72cce88f;\nvar $2d3967d2766cef10$export$f93b5905241a7cca = $2d3967d2766cef10$export$4e2d2ead65e5f7e3;\n\n});\n\nparcelRegister(\"iLzGP\", function(module, exports) {\n\n$parcel$export(module.exports, \"add\", function () { return $da984d064645620f$export$e16d8520af44a096; });\n$parcel$export(module.exports, \"scale\", function () { return $da984d064645620f$export$dcdf75081b88279d; });\n$parcel$export(module.exports, \"length\", function () { return $da984d064645620f$export$f24224f1c91d8156; });\n$parcel$export(module.exports, \"negate\", function () { return $da984d064645620f$export$aef51622e549b8b0; });\n$parcel$export(module.exports, \"lerp\", function () { return $da984d064645620f$export$3a89f8d6f6bf6c9f; });\n$parcel$export(module.exports, \"sub\", function () { return $da984d064645620f$export$f93b5905241a7cca; });\n\nvar $jfP25 = parcelRequire(\"jfP25\");\nfunction $da984d064645620f$export$185802fd694ee1f5() {\n var out = new $jfP25.ARRAY_TYPE(2);\n if ($jfP25.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n return out;\n}\nfunction $da984d064645620f$export$9cd59f9826255e47(a) {\n var out = new $jfP25.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\nfunction $da984d064645620f$export$a82be99ed2a44a7d(x, y) {\n var out = new $jfP25.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\nfunction $da984d064645620f$export$784d13d8ee351f07(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\nfunction $da984d064645620f$export$adaa4cf7ef1b65be(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\nfunction $da984d064645620f$export$e16d8520af44a096(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\nfunction $da984d064645620f$export$4e2d2ead65e5f7e3(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\nfunction $da984d064645620f$export$2060d2db72cce88f(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\nfunction $da984d064645620f$export$cd007d971a5a2143(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\nfunction $da984d064645620f$export$803ce6b71a0a94b2(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\nfunction $da984d064645620f$export$a3fe094919f356fd(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\nfunction $da984d064645620f$export$96ec731ed4dcb222(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\nfunction $da984d064645620f$export$8960430cfd85939f(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\nfunction $da984d064645620f$export$2077e0241d6afd3c(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\nfunction $da984d064645620f$export$dcdf75081b88279d(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\nfunction $da984d064645620f$export$19cedf1da84ba854(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\nfunction $da984d064645620f$export$9f17032d917177de(a, b) {\n var x = b[0] - a[0], y = b[1] - a[1];\n return Math.hypot(x, y);\n}\nfunction $da984d064645620f$export$88e6ebb4fe54f538(a, b) {\n var x = b[0] - a[0], y = b[1] - a[1];\n return x * x + y * y;\n}\nfunction $da984d064645620f$export$f24224f1c91d8156(a) {\n var x = a[0], y = a[1];\n return Math.hypot(x, y);\n}\nfunction $da984d064645620f$export$ab44e1323ffc8376(a) {\n var x = a[0], y = a[1];\n return x * x + y * y;\n}\nfunction $da984d064645620f$export$aef51622e549b8b0(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\nfunction $da984d064645620f$export$70ae2c07e401031b(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\nfunction $da984d064645620f$export$a3295358bff77e(out, a) {\n var x = a[0], y = a[1];\n var len = x * x + y * y;\n if (len > 0) //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\nfunction $da984d064645620f$export$94132a0e348806d4(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\nfunction $da984d064645620f$export$bb646b20bb93d339(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\nfunction $da984d064645620f$export$3a89f8d6f6bf6c9f(out, a, b, t) {\n var ax = a[0], ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\nfunction $da984d064645620f$export$4385e60b38654f68(out, scale) {\n scale = scale || 1.0;\n var r = $jfP25.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\nfunction $da984d064645620f$export$b732428d73874bfc(out, a, m) {\n var x = a[0], y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\nfunction $da984d064645620f$export$3e55bc4b3707dfd3(out, a, m) {\n var x = a[0], y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\nfunction $da984d064645620f$export$f0bfa0a0024626ee(out, a, m) {\n var x = a[0], y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\nfunction $da984d064645620f$export$5ffbd13800309d59(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\nfunction $da984d064645620f$export$bb628a54ab399bc9(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0], p1 = a[1] - b[1], sinC = Math.sin(rad), cosC = Math.cos(rad); //perform rotation and translate to correct position\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\nfunction $da984d064645620f$export$944b09d2ad10b378(a, b) {\n var x1 = a[0], y1 = a[1], x2 = b[0], y2 = b[1], // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2), // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\nfunction $da984d064645620f$export$7f9972325ebfd559(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\nfunction $da984d064645620f$export$42d51816ce590c93(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\nfunction $da984d064645620f$export$f2599a5cf1109d8(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\nfunction $da984d064645620f$export$e9bab7fafb253603(a, b) {\n var a0 = a[0], a1 = a[1];\n var b0 = b[0], b1 = b[1];\n return Math.abs(a0 - b0) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\nvar $da984d064645620f$export$fc1400facf92c78 = $da984d064645620f$export$f24224f1c91d8156;\nvar $da984d064645620f$export$f93b5905241a7cca = $da984d064645620f$export$4e2d2ead65e5f7e3;\nvar $da984d064645620f$export$6e3a27864ab166fe = $da984d064645620f$export$2060d2db72cce88f;\nvar $da984d064645620f$export$159d9494db57879b = $da984d064645620f$export$cd007d971a5a2143;\nvar $da984d064645620f$export$6c4a311cc157c764 = $da984d064645620f$export$9f17032d917177de;\nvar $da984d064645620f$export$2422cd6c492a8b3a = $da984d064645620f$export$88e6ebb4fe54f538;\nvar $da984d064645620f$export$99d8dd3f32a3435 = $da984d064645620f$export$ab44e1323ffc8376;\nvar $da984d064645620f$export$4b80e395e36b5a56 = function() {\n var vec = $da984d064645620f$export$185802fd694ee1f5();\n return function(a, stride, offset, count, fn, arg) {\n var i, l;\n if (!stride) stride = 2;\n if (!offset) offset = 0;\n if (count) l = Math.min(count * stride + offset, a.length);\n else l = a.length;\n for(i = offset; i < l; i += stride){\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n return a;\n };\n}();\n\n});\n\nparcelRegister(\"bX5ds\", function(module, exports) {\n\n$parcel$export(module.exports, \"add\", function () { return $8b3940326cf837bf$export$e16d8520af44a096; });\n$parcel$export(module.exports, \"negate\", function () { return $8b3940326cf837bf$export$aef51622e549b8b0; });\n$parcel$export(module.exports, \"mul\", function () { return $8b3940326cf837bf$export$6e3a27864ab166fe; });\n\nvar $jfP25 = parcelRequire(\"jfP25\");\nfunction $8b3940326cf837bf$export$185802fd694ee1f5() {\n var out = new $jfP25.ARRAY_TYPE(3);\n if ($jfP25.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n return out;\n}\nfunction $8b3940326cf837bf$export$9cd59f9826255e47(a) {\n var out = new $jfP25.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\nfunction $8b3940326cf837bf$export$f24224f1c91d8156(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\nfunction $8b3940326cf837bf$export$a82be99ed2a44a7d(x, y, z) {\n var out = new $jfP25.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\nfunction $8b3940326cf837bf$export$784d13d8ee351f07(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\nfunction $8b3940326cf837bf$export$adaa4cf7ef1b65be(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\nfunction $8b3940326cf837bf$export$e16d8520af44a096(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\nfunction $8b3940326cf837bf$export$4e2d2ead65e5f7e3(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\nfunction $8b3940326cf837bf$export$2060d2db72cce88f(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\nfunction $8b3940326cf837bf$export$cd007d971a5a2143(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\nfunction $8b3940326cf837bf$export$803ce6b71a0a94b2(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\nfunction $8b3940326cf837bf$export$a3fe094919f356fd(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\nfunction $8b3940326cf837bf$export$96ec731ed4dcb222(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\nfunction $8b3940326cf837bf$export$8960430cfd85939f(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\nfunction $8b3940326cf837bf$export$2077e0241d6afd3c(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\nfunction $8b3940326cf837bf$export$dcdf75081b88279d(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\nfunction $8b3940326cf837bf$export$19cedf1da84ba854(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\nfunction $8b3940326cf837bf$export$9f17032d917177de(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\nfunction $8b3940326cf837bf$export$88e6ebb4fe54f538(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\nfunction $8b3940326cf837bf$export$ab44e1323ffc8376(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\nfunction $8b3940326cf837bf$export$aef51622e549b8b0(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\nfunction $8b3940326cf837bf$export$70ae2c07e401031b(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\nfunction $8b3940326cf837bf$export$a3295358bff77e(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n if (len > 0) //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\nfunction $8b3940326cf837bf$export$94132a0e348806d4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\nfunction $8b3940326cf837bf$export$bb646b20bb93d339(out, a, b) {\n var ax = a[0], ay = a[1], az = a[2];\n var bx = b[0], by = b[1], bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\nfunction $8b3940326cf837bf$export$3a89f8d6f6bf6c9f(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\nfunction $8b3940326cf837bf$export$ae8865616f30561c(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\nfunction $8b3940326cf837bf$export$b9c5f84610baddaf(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\nfunction $8b3940326cf837bf$export$4385e60b38654f68(out, scale) {\n scale = scale || 1.0;\n var r = $jfP25.RANDOM() * 2.0 * Math.PI;\n var z = $jfP25.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\nfunction $8b3940326cf837bf$export$5ffbd13800309d59(out, a, m) {\n var x = a[0], y = a[1], z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\nfunction $8b3940326cf837bf$export$f0bfa0a0024626ee(out, a, m) {\n var x = a[0], y = a[1], z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\nfunction $8b3940326cf837bf$export$c32adef9e939ce85(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0], qy = q[1], qz = q[2], qw = q[3];\n var x = a[0], y = a[1], z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n var uvx = qy * z - qz * y, uvy = qz * x - qx * z, uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n var uuvx = qy * uvz - qz * uvy, uuvy = qz * uvx - qx * uvz, uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\nfunction $8b3940326cf837bf$export$a59c8716592e09af(out, a, b, rad) {\n var p = [], r = []; //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\nfunction $8b3940326cf837bf$export$cf71e4d4ca4d1cfd(out, a, b, rad) {\n var p = [], r = []; //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\nfunction $8b3940326cf837bf$export$ea6eae3365de5b9c(out, a, b, rad) {\n var p = [], r = []; //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\nfunction $8b3940326cf837bf$export$944b09d2ad10b378(a, b) {\n var ax = a[0], ay = a[1], az = a[2], bx = b[0], by = b[1], bz = b[2], mag1 = Math.sqrt(ax * ax + ay * ay + az * az), mag2 = Math.sqrt(bx * bx + by * by + bz * bz), mag = mag1 * mag2, cosine = mag && $8b3940326cf837bf$export$94132a0e348806d4(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\nfunction $8b3940326cf837bf$export$7f9972325ebfd559(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\nfunction $8b3940326cf837bf$export$42d51816ce590c93(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\nfunction $8b3940326cf837bf$export$f2599a5cf1109d8(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\nfunction $8b3940326cf837bf$export$e9bab7fafb253603(a, b) {\n var a0 = a[0], a1 = a[1], a2 = a[2];\n var b0 = b[0], b1 = b[1], b2 = b[2];\n return Math.abs(a0 - b0) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= $jfP25.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\nvar $8b3940326cf837bf$export$f93b5905241a7cca = $8b3940326cf837bf$export$4e2d2ead65e5f7e3;\nvar $8b3940326cf837bf$export$6e3a27864ab166fe = $8b3940326cf837bf$export$2060d2db72cce88f;\nvar $8b3940326cf837bf$export$159d9494db57879b = $8b3940326cf837bf$export$cd007d971a5a2143;\nvar $8b3940326cf837bf$export$6c4a311cc157c764 = $8b3940326cf837bf$export$9f17032d917177de;\nvar $8b3940326cf837bf$export$2422cd6c492a8b3a = $8b3940326cf837bf$export$88e6ebb4fe54f538;\nvar $8b3940326cf837bf$export$fc1400facf92c78 = $8b3940326cf837bf$export$f24224f1c91d8156;\nvar $8b3940326cf837bf$export$99d8dd3f32a3435 = $8b3940326cf837bf$export$ab44e1323ffc8376;\nvar $8b3940326cf837bf$export$4b80e395e36b5a56 = function() {\n var vec = $8b3940326cf837bf$export$185802fd694ee1f5();\n return function(a, stride, offset, count, fn, arg) {\n var i, l;\n if (!stride) stride = 3;\n if (!offset) offset = 0;\n if (count) l = Math.min(count * stride + offset, a.length);\n else l = a.length;\n for(i = offset; i < l; i += stride){\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n return a;\n };\n}();\n\n});\n\nparcelRegister(\"gugLa\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c00c72cecb16fb87$export$2e2bcd8739ae039; });\nfunction $c00c72cecb16fb87$export$2e2bcd8739ae039(condition, message) {\n if (!condition) throw new Error(message || \"@math.gl/web-mercator: assertion failed.\");\n}\n\n});\n\n\nparcelRegister(\"gy8FM\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c0c68c900829a2aa$export$2e2bcd8739ae039; });\n\nvar $gugLa = parcelRequire(\"gugLa\");\n\nvar $9Uxs3 = parcelRequire(\"9Uxs3\");\n\nvar $k5FuL = parcelRequire(\"k5FuL\");\nfunction $c0c68c900829a2aa$export$2e2bcd8739ae039(options) {\n const { width: width, height: height, bounds: bounds, minExtent: minExtent = 0, maxZoom: maxZoom = 24, offset: offset = [\n 0,\n 0\n ] } = options;\n const [[west, south], [east, north]] = bounds;\n const padding = $c0c68c900829a2aa$var$getPaddingObject(options.padding);\n const nw = (0, $k5FuL.lngLatToWorld)([\n west,\n (0, $9Uxs3.clamp)(north, -(0, $k5FuL.MAX_LATITUDE), (0, $k5FuL.MAX_LATITUDE))\n ]);\n const se = (0, $k5FuL.lngLatToWorld)([\n east,\n (0, $9Uxs3.clamp)(south, -(0, $k5FuL.MAX_LATITUDE), (0, $k5FuL.MAX_LATITUDE))\n ]);\n const size = [\n Math.max(Math.abs(se[0] - nw[0]), minExtent),\n Math.max(Math.abs(se[1] - nw[1]), minExtent)\n ];\n const targetSize = [\n width - padding.left - padding.right - Math.abs(offset[0]) * 2,\n height - padding.top - padding.bottom - Math.abs(offset[1]) * 2\n ];\n (0, $gugLa.default)(targetSize[0] > 0 && targetSize[1] > 0);\n const scaleX = targetSize[0] / size[0];\n const scaleY = targetSize[1] / size[1];\n const offsetX = (padding.right - padding.left) / 2 / scaleX;\n const offsetY = (padding.top - padding.bottom) / 2 / scaleY;\n const center = [\n (se[0] + nw[0]) / 2 + offsetX,\n (se[1] + nw[1]) / 2 + offsetY\n ];\n const centerLngLat = (0, $k5FuL.worldToLngLat)(center);\n const zoom = Math.min(maxZoom, (0, $9Uxs3.log2)(Math.abs(Math.min(scaleX, scaleY))));\n (0, $gugLa.default)(Number.isFinite(zoom));\n return {\n longitude: centerLngLat[0],\n latitude: centerLngLat[1],\n zoom: zoom\n };\n}\nfunction $c0c68c900829a2aa$var$getPaddingObject(padding = 0) {\n if (typeof padding === \"number\") return {\n top: padding,\n bottom: padding,\n left: padding,\n right: padding\n };\n (0, $gugLa.default)(Number.isFinite(padding.top) && Number.isFinite(padding.bottom) && Number.isFinite(padding.left) && Number.isFinite(padding.right));\n return padding;\n}\n\n});\n\nparcelRegister(\"fPplZ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b85f492ba6cfefc8$export$2e2bcd8739ae039; });\n\nvar $k5FuL = parcelRequire(\"k5FuL\");\n\nvar $iLzGP = parcelRequire(\"iLzGP\");\n\nvar $9Uxs3 = parcelRequire(\"9Uxs3\");\nconst $b85f492ba6cfefc8$var$DEGREES_TO_RADIANS = Math.PI / 180;\nfunction $b85f492ba6cfefc8$export$2e2bcd8739ae039(viewport, z = 0) {\n const { width: width, height: height, unproject: unproject } = viewport;\n const unprojectOps = {\n targetZ: z\n };\n const bottomLeft = unproject([\n 0,\n height\n ], unprojectOps);\n const bottomRight = unproject([\n width,\n height\n ], unprojectOps);\n let topLeft;\n let topRight;\n const halfFov = viewport.fovy ? 0.5 * viewport.fovy * $b85f492ba6cfefc8$var$DEGREES_TO_RADIANS : Math.atan(0.5 / viewport.altitude);\n const angleToGround = (90 - viewport.pitch) * $b85f492ba6cfefc8$var$DEGREES_TO_RADIANS;\n if (halfFov > angleToGround - 0.01) {\n topLeft = $b85f492ba6cfefc8$var$unprojectOnFarPlane(viewport, 0, z);\n topRight = $b85f492ba6cfefc8$var$unprojectOnFarPlane(viewport, width, z);\n } else {\n topLeft = unproject([\n 0,\n 0\n ], unprojectOps);\n topRight = unproject([\n width,\n 0\n ], unprojectOps);\n }\n return [\n bottomLeft,\n bottomRight,\n topRight,\n topLeft\n ];\n}\nfunction $b85f492ba6cfefc8$var$unprojectOnFarPlane(viewport, x, targetZ) {\n const { pixelUnprojectionMatrix: pixelUnprojectionMatrix } = viewport;\n const coord0 = (0, $9Uxs3.transformVector)(pixelUnprojectionMatrix, [\n x,\n 0,\n 1,\n 1\n ]);\n const coord1 = (0, $9Uxs3.transformVector)(pixelUnprojectionMatrix, [\n x,\n viewport.height,\n 1,\n 1\n ]);\n const z = targetZ * viewport.distanceScales.unitsPerMeter[2];\n const t = (z - coord0[2]) / (coord1[2] - coord0[2]);\n const coord = $iLzGP.lerp([], coord0, coord1, t);\n const result = (0, $k5FuL.worldToLngLat)(coord);\n result.push(targetZ);\n return result;\n}\n\n});\n\n\nparcelRegister(\"9cckP\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6b1ecd810d701820$export$2e2bcd8739ae039; });\n\nvar $k5FuL = parcelRequire(\"k5FuL\");\n\nvar $9Uxs3 = parcelRequire(\"9Uxs3\");\nconst $6b1ecd810d701820$var$TILE_SIZE = 512;\nfunction $6b1ecd810d701820$export$2e2bcd8739ae039(props) {\n const { width: width, height: height, pitch: pitch = 0 } = props;\n let { longitude: longitude, latitude: latitude, zoom: zoom, bearing: bearing = 0 } = props;\n if (longitude < -180 || longitude > 180) longitude = (0, $9Uxs3.mod)(longitude + 180, 360) - 180;\n if (bearing < -180 || bearing > 180) bearing = (0, $9Uxs3.mod)(bearing + 180, 360) - 180;\n const minZoom = (0, $9Uxs3.log2)(height / $6b1ecd810d701820$var$TILE_SIZE);\n if (zoom <= minZoom) {\n zoom = minZoom;\n latitude = 0;\n } else {\n const halfHeightPixels = height / 2 / Math.pow(2, zoom);\n const minLatitude = (0, $k5FuL.worldToLngLat)([\n 0,\n halfHeightPixels\n ])[1];\n if (latitude < minLatitude) latitude = minLatitude;\n else {\n const maxLatitude = (0, $k5FuL.worldToLngLat)([\n 0,\n $6b1ecd810d701820$var$TILE_SIZE - halfHeightPixels\n ])[1];\n if (latitude > maxLatitude) latitude = maxLatitude;\n }\n }\n return {\n width: width,\n height: height,\n longitude: longitude,\n latitude: latitude,\n zoom: zoom,\n pitch: pitch,\n bearing: bearing\n };\n}\n\n});\n\nparcelRegister(\"6Uylx\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $50829d8282fd979a$export$2e2bcd8739ae039; });\n$parcel$export(module.exports, \"getFlyToDuration\", function () { return $50829d8282fd979a$export$1d42c64f84307be3; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $9Uxs3 = parcelRequire(\"9Uxs3\");\n\nvar $k5FuL = parcelRequire(\"k5FuL\");\n\nvar $iLzGP = parcelRequire(\"iLzGP\");\nconst $50829d8282fd979a$var$EPSILON = 0.01;\nconst $50829d8282fd979a$var$VIEWPORT_TRANSITION_PROPS = [\n \"longitude\",\n \"latitude\",\n \"zoom\"\n];\nconst $50829d8282fd979a$var$DEFAULT_OPTS = {\n curve: 1.414,\n speed: 1.2\n};\nfunction $50829d8282fd979a$export$2e2bcd8739ae039(startProps, endProps, t, options) {\n const { startZoom: startZoom, startCenterXY: startCenterXY, uDelta: uDelta, w0: w0, u1: u1, S: S, rho: rho, rho2: rho2, r0: r0 } = $50829d8282fd979a$var$getFlyToTransitionParams(startProps, endProps, options);\n if (u1 < $50829d8282fd979a$var$EPSILON) {\n const viewport = {};\n for (const key of $50829d8282fd979a$var$VIEWPORT_TRANSITION_PROPS){\n const startValue = startProps[key];\n const endValue = endProps[key];\n viewport[key] = (0, $9Uxs3.lerp)(startValue, endValue, t);\n }\n return viewport;\n }\n const s = t * S;\n const w = Math.cosh(r0) / Math.cosh(r0 + rho * s);\n const u = w0 * ((Math.cosh(r0) * Math.tanh(r0 + rho * s) - Math.sinh(r0)) / rho2) / u1;\n const scaleIncrement = 1 / w;\n const newZoom = startZoom + (0, $k5FuL.scaleToZoom)(scaleIncrement);\n const newCenterWorld = $iLzGP.scale([], uDelta, u);\n $iLzGP.add(newCenterWorld, newCenterWorld, startCenterXY);\n const newCenter = (0, $k5FuL.worldToLngLat)(newCenterWorld);\n return {\n longitude: newCenter[0],\n latitude: newCenter[1],\n zoom: newZoom\n };\n}\nfunction $50829d8282fd979a$export$1d42c64f84307be3(startProps, endProps, options) {\n const opts = (0, $2QP2i._)({}, $50829d8282fd979a$var$DEFAULT_OPTS, options);\n const { screenSpeed: screenSpeed, speed: speed, maxDuration: maxDuration } = opts;\n const { S: S, rho: rho } = $50829d8282fd979a$var$getFlyToTransitionParams(startProps, endProps, opts);\n const length = 1000 * S;\n let duration;\n if (Number.isFinite(screenSpeed)) duration = length / (screenSpeed / rho);\n else duration = length / speed;\n return Number.isFinite(maxDuration) && duration > maxDuration ? 0 : duration;\n}\nfunction $50829d8282fd979a$var$getFlyToTransitionParams(startProps, endProps, opts) {\n opts = Object.assign({}, $50829d8282fd979a$var$DEFAULT_OPTS, opts);\n const rho = opts.curve;\n const startZoom = startProps.zoom;\n const startCenter = [\n startProps.longitude,\n startProps.latitude\n ];\n const startScale = (0, $k5FuL.zoomToScale)(startZoom);\n const endZoom = endProps.zoom;\n const endCenter = [\n endProps.longitude,\n endProps.latitude\n ];\n const scale = (0, $k5FuL.zoomToScale)(endZoom - startZoom);\n const startCenterXY = (0, $k5FuL.lngLatToWorld)(startCenter);\n const endCenterXY = (0, $k5FuL.lngLatToWorld)(endCenter);\n const uDelta = $iLzGP.sub([], endCenterXY, startCenterXY);\n const w0 = Math.max(startProps.width, startProps.height);\n const w1 = w0 / scale;\n const u1 = $iLzGP.length(uDelta) * startScale;\n const _u1 = Math.max(u1, $50829d8282fd979a$var$EPSILON);\n const rho2 = rho * rho;\n const b0 = (w1 * w1 - w0 * w0 + rho2 * rho2 * _u1 * _u1) / (2 * w0 * rho2 * _u1);\n const b1 = (w1 * w1 - w0 * w0 - rho2 * rho2 * _u1 * _u1) / (2 * w1 * rho2 * _u1);\n const r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0);\n const r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n const S = (r1 - r0) / rho;\n return {\n startZoom: startZoom,\n startCenterXY: startCenterXY,\n uDelta: uDelta,\n w0: w0,\n u1: u1,\n S: S,\n rho: rho,\n rho2: rho2,\n r0: r0,\n r1: r1\n };\n}\n\n});\n\n\n\nparcelRegister(\"7sAKl\", function(module, exports) {\n\n$parcel$export(module.exports, \"add\", function () { return $56e7a6ff0ae1fbe9$export$e16d8520af44a096; });\n$parcel$export(module.exports, \"negate\", function () { return $56e7a6ff0ae1fbe9$export$aef51622e549b8b0; });\n\nvar $bheRV = parcelRequire(\"bheRV\");\nfunction $56e7a6ff0ae1fbe9$export$185802fd694ee1f5() {\n var out = new $bheRV.ARRAY_TYPE(2);\n if ($bheRV.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$9cd59f9826255e47(a) {\n var out = new $bheRV.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$a82be99ed2a44a7d(x, y) {\n var out = new $bheRV.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$784d13d8ee351f07(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$adaa4cf7ef1b65be(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$e16d8520af44a096(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$4e2d2ead65e5f7e3(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$2060d2db72cce88f(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$cd007d971a5a2143(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$803ce6b71a0a94b2(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$a3fe094919f356fd(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$96ec731ed4dcb222(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$8960430cfd85939f(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$2077e0241d6afd3c(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$dcdf75081b88279d(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$19cedf1da84ba854(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$9f17032d917177de(a, b) {\n var x = b[0] - a[0], y = b[1] - a[1];\n return Math.hypot(x, y);\n}\nfunction $56e7a6ff0ae1fbe9$export$88e6ebb4fe54f538(a, b) {\n var x = b[0] - a[0], y = b[1] - a[1];\n return x * x + y * y;\n}\nfunction $56e7a6ff0ae1fbe9$export$f24224f1c91d8156(a) {\n var x = a[0], y = a[1];\n return Math.hypot(x, y);\n}\nfunction $56e7a6ff0ae1fbe9$export$ab44e1323ffc8376(a) {\n var x = a[0], y = a[1];\n return x * x + y * y;\n}\nfunction $56e7a6ff0ae1fbe9$export$aef51622e549b8b0(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$70ae2c07e401031b(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$a3295358bff77e(out, a) {\n var x = a[0], y = a[1];\n var len = x * x + y * y;\n if (len > 0) //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$94132a0e348806d4(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\nfunction $56e7a6ff0ae1fbe9$export$bb646b20bb93d339(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$3a89f8d6f6bf6c9f(out, a, b, t) {\n var ax = a[0], ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$4385e60b38654f68(out, scale) {\n scale = scale || 1.0;\n var r = $bheRV.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$b732428d73874bfc(out, a, m) {\n var x = a[0], y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$3e55bc4b3707dfd3(out, a, m) {\n var x = a[0], y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$f0bfa0a0024626ee(out, a, m) {\n var x = a[0], y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$5ffbd13800309d59(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$bb628a54ab399bc9(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0], p1 = a[1] - b[1], sinC = Math.sin(rad), cosC = Math.cos(rad); //perform rotation and translate to correct position\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$944b09d2ad10b378(a, b) {\n var x1 = a[0], y1 = a[1], x2 = b[0], y2 = b[1], // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2), // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\nfunction $56e7a6ff0ae1fbe9$export$7f9972325ebfd559(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\nfunction $56e7a6ff0ae1fbe9$export$42d51816ce590c93(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\nfunction $56e7a6ff0ae1fbe9$export$f2599a5cf1109d8(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\nfunction $56e7a6ff0ae1fbe9$export$e9bab7fafb253603(a, b) {\n var a0 = a[0], a1 = a[1];\n var b0 = b[0], b1 = b[1];\n return Math.abs(a0 - b0) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\nvar $56e7a6ff0ae1fbe9$export$fc1400facf92c78 = $56e7a6ff0ae1fbe9$export$f24224f1c91d8156;\nvar $56e7a6ff0ae1fbe9$export$f93b5905241a7cca = $56e7a6ff0ae1fbe9$export$4e2d2ead65e5f7e3;\nvar $56e7a6ff0ae1fbe9$export$6e3a27864ab166fe = $56e7a6ff0ae1fbe9$export$2060d2db72cce88f;\nvar $56e7a6ff0ae1fbe9$export$159d9494db57879b = $56e7a6ff0ae1fbe9$export$cd007d971a5a2143;\nvar $56e7a6ff0ae1fbe9$export$6c4a311cc157c764 = $56e7a6ff0ae1fbe9$export$9f17032d917177de;\nvar $56e7a6ff0ae1fbe9$export$2422cd6c492a8b3a = $56e7a6ff0ae1fbe9$export$88e6ebb4fe54f538;\nvar $56e7a6ff0ae1fbe9$export$99d8dd3f32a3435 = $56e7a6ff0ae1fbe9$export$ab44e1323ffc8376;\nvar $56e7a6ff0ae1fbe9$export$4b80e395e36b5a56 = function() {\n var vec = $56e7a6ff0ae1fbe9$export$185802fd694ee1f5();\n return function(a, stride, offset, count, fn, arg) {\n var i, l;\n if (!stride) stride = 2;\n if (!offset) offset = 0;\n if (count) l = Math.min(count * stride + offset, a.length);\n else l = a.length;\n for(i = offset; i < l; i += stride){\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n return a;\n };\n}();\n\n});\n\n\nparcelRegister(\"7xR33\", function(module, exports) {\n\n$parcel$export(module.exports, \"lerp\", function () { return $57e4c3bf251896fe$export$3a89f8d6f6bf6c9f; });\n$parcel$export(module.exports, \"sub\", function () { return $57e4c3bf251896fe$export$f93b5905241a7cca; });\n$parcel$export(module.exports, \"len\", function () { return $57e4c3bf251896fe$export$fc1400facf92c78; });\n$parcel$export(module.exports, \"sqrLen\", function () { return $57e4c3bf251896fe$export$99d8dd3f32a3435; });\n\nvar $bheRV = parcelRequire(\"bheRV\");\nfunction $57e4c3bf251896fe$export$185802fd694ee1f5() {\n var out = new $bheRV.ARRAY_TYPE(3);\n if ($bheRV.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n return out;\n}\nfunction $57e4c3bf251896fe$export$9cd59f9826255e47(a) {\n var out = new $bheRV.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\nfunction $57e4c3bf251896fe$export$f24224f1c91d8156(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\nfunction $57e4c3bf251896fe$export$a82be99ed2a44a7d(x, y, z) {\n var out = new $bheRV.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\nfunction $57e4c3bf251896fe$export$784d13d8ee351f07(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\nfunction $57e4c3bf251896fe$export$adaa4cf7ef1b65be(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\nfunction $57e4c3bf251896fe$export$e16d8520af44a096(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\nfunction $57e4c3bf251896fe$export$4e2d2ead65e5f7e3(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\nfunction $57e4c3bf251896fe$export$2060d2db72cce88f(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\nfunction $57e4c3bf251896fe$export$cd007d971a5a2143(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\nfunction $57e4c3bf251896fe$export$803ce6b71a0a94b2(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\nfunction $57e4c3bf251896fe$export$a3fe094919f356fd(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\nfunction $57e4c3bf251896fe$export$96ec731ed4dcb222(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\nfunction $57e4c3bf251896fe$export$8960430cfd85939f(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\nfunction $57e4c3bf251896fe$export$2077e0241d6afd3c(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\nfunction $57e4c3bf251896fe$export$dcdf75081b88279d(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\nfunction $57e4c3bf251896fe$export$19cedf1da84ba854(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\nfunction $57e4c3bf251896fe$export$9f17032d917177de(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\nfunction $57e4c3bf251896fe$export$88e6ebb4fe54f538(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\nfunction $57e4c3bf251896fe$export$ab44e1323ffc8376(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\nfunction $57e4c3bf251896fe$export$aef51622e549b8b0(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\nfunction $57e4c3bf251896fe$export$70ae2c07e401031b(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\nfunction $57e4c3bf251896fe$export$a3295358bff77e(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n if (len > 0) //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\nfunction $57e4c3bf251896fe$export$94132a0e348806d4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\nfunction $57e4c3bf251896fe$export$bb646b20bb93d339(out, a, b) {\n var ax = a[0], ay = a[1], az = a[2];\n var bx = b[0], by = b[1], bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\nfunction $57e4c3bf251896fe$export$3a89f8d6f6bf6c9f(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\nfunction $57e4c3bf251896fe$export$ae8865616f30561c(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\nfunction $57e4c3bf251896fe$export$b9c5f84610baddaf(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\nfunction $57e4c3bf251896fe$export$4385e60b38654f68(out, scale) {\n scale = scale || 1.0;\n var r = $bheRV.RANDOM() * 2.0 * Math.PI;\n var z = $bheRV.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\nfunction $57e4c3bf251896fe$export$5ffbd13800309d59(out, a, m) {\n var x = a[0], y = a[1], z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\nfunction $57e4c3bf251896fe$export$f0bfa0a0024626ee(out, a, m) {\n var x = a[0], y = a[1], z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\nfunction $57e4c3bf251896fe$export$c32adef9e939ce85(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0], qy = q[1], qz = q[2], qw = q[3];\n var x = a[0], y = a[1], z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n var uvx = qy * z - qz * y, uvy = qz * x - qx * z, uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n var uuvx = qy * uvz - qz * uvy, uuvy = qz * uvx - qx * uvz, uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\nfunction $57e4c3bf251896fe$export$a59c8716592e09af(out, a, b, rad) {\n var p = [], r = []; //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\nfunction $57e4c3bf251896fe$export$cf71e4d4ca4d1cfd(out, a, b, rad) {\n var p = [], r = []; //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\nfunction $57e4c3bf251896fe$export$ea6eae3365de5b9c(out, a, b, rad) {\n var p = [], r = []; //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\nfunction $57e4c3bf251896fe$export$944b09d2ad10b378(a, b) {\n var ax = a[0], ay = a[1], az = a[2], bx = b[0], by = b[1], bz = b[2], mag1 = Math.sqrt(ax * ax + ay * ay + az * az), mag2 = Math.sqrt(bx * bx + by * by + bz * bz), mag = mag1 * mag2, cosine = mag && $57e4c3bf251896fe$export$94132a0e348806d4(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\nfunction $57e4c3bf251896fe$export$7f9972325ebfd559(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\nfunction $57e4c3bf251896fe$export$42d51816ce590c93(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\nfunction $57e4c3bf251896fe$export$f2599a5cf1109d8(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\nfunction $57e4c3bf251896fe$export$e9bab7fafb253603(a, b) {\n var a0 = a[0], a1 = a[1], a2 = a[2];\n var b0 = b[0], b1 = b[1], b2 = b[2];\n return Math.abs(a0 - b0) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= $bheRV.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\nvar $57e4c3bf251896fe$export$f93b5905241a7cca = $57e4c3bf251896fe$export$4e2d2ead65e5f7e3;\nvar $57e4c3bf251896fe$export$6e3a27864ab166fe = $57e4c3bf251896fe$export$2060d2db72cce88f;\nvar $57e4c3bf251896fe$export$159d9494db57879b = $57e4c3bf251896fe$export$cd007d971a5a2143;\nvar $57e4c3bf251896fe$export$6c4a311cc157c764 = $57e4c3bf251896fe$export$9f17032d917177de;\nvar $57e4c3bf251896fe$export$2422cd6c492a8b3a = $57e4c3bf251896fe$export$88e6ebb4fe54f538;\nvar $57e4c3bf251896fe$export$fc1400facf92c78 = $57e4c3bf251896fe$export$f24224f1c91d8156;\nvar $57e4c3bf251896fe$export$99d8dd3f32a3435 = $57e4c3bf251896fe$export$ab44e1323ffc8376;\nvar $57e4c3bf251896fe$export$4b80e395e36b5a56 = function() {\n var vec = $57e4c3bf251896fe$export$185802fd694ee1f5();\n return function(a, stride, offset, count, fn, arg) {\n var i, l;\n if (!stride) stride = 3;\n if (!offset) offset = 0;\n if (count) l = Math.min(count * stride + offset, a.length);\n else l = a.length;\n for(i = offset; i < l; i += stride){\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n return a;\n };\n}();\n\n});\n\n\nparcelRegister(\"lXqRv\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ffc3f1e46cf1f899$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $1zR3q = parcelRequire(\"1zR3q\");\n\nvar $lXg0j = parcelRequire(\"lXg0j\");\n\nvar $9y7Yj = parcelRequire(\"9y7Yj\");\nlet $ffc3f1e46cf1f899$var$counter = 0;\nclass $ffc3f1e46cf1f899$export$2e2bcd8739ae039 {\n clone(newProps) {\n const { props: props } = this;\n const asyncProps = {};\n for(const key in props[0, $lXg0j.ASYNC_DEFAULTS_SYMBOL]){\n if (key in props[0, $lXg0j.ASYNC_RESOLVED_SYMBOL]) asyncProps[key] = props[0, $lXg0j.ASYNC_RESOLVED_SYMBOL][key];\n else if (key in props[0, $lXg0j.ASYNC_ORIGINAL_SYMBOL]) asyncProps[key] = props[0, $lXg0j.ASYNC_ORIGINAL_SYMBOL][key];\n }\n return new this.constructor((0, $2QP2i._)({}, props, asyncProps, newProps));\n }\n constructor(...propObjects){\n (0, $1zR3q.default)(this, \"id\", void 0);\n (0, $1zR3q.default)(this, \"props\", void 0);\n (0, $1zR3q.default)(this, \"count\", void 0);\n this.props = (0, $9y7Yj.createProps)(this, propObjects);\n this.id = this.props.id;\n this.count = $ffc3f1e46cf1f899$var$counter++;\n }\n}\n(0, $1zR3q.default)($ffc3f1e46cf1f899$export$2e2bcd8739ae039, \"componentName\", \"Component\");\n(0, $1zR3q.default)($ffc3f1e46cf1f899$export$2e2bcd8739ae039, \"defaultProps\", {});\n\n});\nparcelRegister(\"9y7Yj\", function(module, exports) {\n\n$parcel$export(module.exports, \"createProps\", function () { return $6f3d790fb58d63a4$export$c94ea207b45fef3a; });\n\nvar $4VQgq = parcelRequire(\"4VQgq\");\n\nvar $abpME = parcelRequire(\"abpME\");\n\nvar $ewpcq = parcelRequire(\"ewpcq\");\n\nvar $lXg0j = parcelRequire(\"lXg0j\");\nfunction $6f3d790fb58d63a4$export$c94ea207b45fef3a(component, propObjects) {\n let extensions;\n for(let i = propObjects.length - 1; i >= 0; i--){\n const props = propObjects[i];\n if (\"extensions\" in props) extensions = props.extensions;\n }\n const propsPrototype = $6f3d790fb58d63a4$var$getPropsPrototype(component.constructor, extensions);\n const propsInstance = Object.create(propsPrototype);\n propsInstance[0, $lXg0j.COMPONENT_SYMBOL] = component;\n propsInstance[0, $lXg0j.ASYNC_ORIGINAL_SYMBOL] = {};\n propsInstance[0, $lXg0j.ASYNC_RESOLVED_SYMBOL] = {};\n for(let i = 0; i < propObjects.length; ++i){\n const props = propObjects[i];\n for(const key in props)propsInstance[key] = props[key];\n }\n Object.freeze(propsInstance);\n return propsInstance;\n}\nconst $6f3d790fb58d63a4$var$MergedDefaultPropsCacheKey = \"_mergedDefaultProps\";\nfunction $6f3d790fb58d63a4$var$getPropsPrototype(componentClass, extensions) {\n let cacheKey = $6f3d790fb58d63a4$var$MergedDefaultPropsCacheKey;\n if (extensions) for (const extension of extensions){\n const ExtensionClass = extension.constructor;\n if (ExtensionClass) cacheKey += \":\".concat(ExtensionClass.extensionName || ExtensionClass.name);\n }\n const defaultProps = $6f3d790fb58d63a4$var$getOwnProperty(componentClass, cacheKey);\n if (!defaultProps) return componentClass[cacheKey] = $6f3d790fb58d63a4$var$createPropsPrototypeAndTypes(componentClass, extensions || []);\n return defaultProps;\n}\nfunction $6f3d790fb58d63a4$var$createPropsPrototypeAndTypes(componentClass, extensions) {\n const parent = componentClass.prototype;\n if (!parent) return null;\n const parentClass = Object.getPrototypeOf(componentClass);\n const parentDefaultProps = $6f3d790fb58d63a4$var$getPropsPrototype(parentClass);\n const componentDefaultProps = $6f3d790fb58d63a4$var$getOwnProperty(componentClass, \"defaultProps\") || {};\n const componentPropDefs = (0, $ewpcq.parsePropTypes)(componentDefaultProps);\n const defaultProps = Object.assign(Object.create(null), parentDefaultProps, componentPropDefs.defaultProps);\n const propTypes = Object.assign(Object.create(null), parentDefaultProps === null || parentDefaultProps === void 0 ? void 0 : parentDefaultProps[0, $lXg0j.PROP_TYPES_SYMBOL], componentPropDefs.propTypes);\n const deprecatedProps = Object.assign(Object.create(null), parentDefaultProps === null || parentDefaultProps === void 0 ? void 0 : parentDefaultProps[0, $lXg0j.DEPRECATED_PROPS_SYMBOL], componentPropDefs.deprecatedProps);\n for (const extension of extensions){\n const extensionDefaultProps = $6f3d790fb58d63a4$var$getPropsPrototype(extension.constructor);\n if (extensionDefaultProps) {\n Object.assign(defaultProps, extensionDefaultProps);\n Object.assign(propTypes, extensionDefaultProps[0, $lXg0j.PROP_TYPES_SYMBOL]);\n Object.assign(deprecatedProps, extensionDefaultProps[0, $lXg0j.DEPRECATED_PROPS_SYMBOL]);\n }\n }\n $6f3d790fb58d63a4$var$createPropsPrototype(defaultProps, componentClass);\n $6f3d790fb58d63a4$var$addAsyncPropsToPropPrototype(defaultProps, propTypes);\n $6f3d790fb58d63a4$var$addDeprecatedPropsToPropPrototype(defaultProps, deprecatedProps);\n defaultProps[0, $lXg0j.PROP_TYPES_SYMBOL] = propTypes;\n defaultProps[0, $lXg0j.DEPRECATED_PROPS_SYMBOL] = deprecatedProps;\n if (extensions.length === 0 && !$6f3d790fb58d63a4$var$hasOwnProperty(componentClass, \"_propTypes\")) componentClass._propTypes = propTypes;\n return defaultProps;\n}\nfunction $6f3d790fb58d63a4$var$createPropsPrototype(defaultProps, componentClass) {\n const id = $6f3d790fb58d63a4$var$getComponentName(componentClass);\n Object.defineProperties(defaultProps, {\n id: {\n writable: true,\n value: id\n }\n });\n}\nfunction $6f3d790fb58d63a4$var$addDeprecatedPropsToPropPrototype(defaultProps, deprecatedProps) {\n for(const propName in deprecatedProps)Object.defineProperty(defaultProps, propName, {\n enumerable: false,\n set (newValue) {\n const nameStr = \"\".concat(this.id, \": \").concat(propName);\n for (const newPropName of deprecatedProps[propName])if (!$6f3d790fb58d63a4$var$hasOwnProperty(this, newPropName)) this[newPropName] = newValue;\n (0, $4VQgq.default).deprecated(nameStr, deprecatedProps[propName].join(\"/\"))();\n }\n });\n}\nfunction $6f3d790fb58d63a4$var$addAsyncPropsToPropPrototype(defaultProps, propTypes) {\n const defaultValues = {};\n const descriptors = {};\n for(const propName in propTypes){\n const propType = propTypes[propName];\n const { name: name, value: value } = propType;\n if (propType.async) {\n defaultValues[name] = value;\n descriptors[name] = $6f3d790fb58d63a4$var$getDescriptorForAsyncProp(name);\n }\n }\n defaultProps[0, $lXg0j.ASYNC_DEFAULTS_SYMBOL] = defaultValues;\n defaultProps[0, $lXg0j.ASYNC_ORIGINAL_SYMBOL] = {};\n Object.defineProperties(defaultProps, descriptors);\n}\nfunction $6f3d790fb58d63a4$var$getDescriptorForAsyncProp(name) {\n return {\n enumerable: true,\n set (newValue) {\n if (typeof newValue === \"string\" || newValue instanceof Promise || (0, $abpME.isAsyncIterable)(newValue)) this[0, $lXg0j.ASYNC_ORIGINAL_SYMBOL][name] = newValue;\n else this[0, $lXg0j.ASYNC_RESOLVED_SYMBOL][name] = newValue;\n },\n get () {\n if (this[0, $lXg0j.ASYNC_RESOLVED_SYMBOL]) {\n if (name in this[0, $lXg0j.ASYNC_RESOLVED_SYMBOL]) {\n const value = this[0, $lXg0j.ASYNC_RESOLVED_SYMBOL][name];\n return value || this[0, $lXg0j.ASYNC_DEFAULTS_SYMBOL][name];\n }\n if (name in this[0, $lXg0j.ASYNC_ORIGINAL_SYMBOL]) {\n const state = this[0, $lXg0j.COMPONENT_SYMBOL] && this[0, $lXg0j.COMPONENT_SYMBOL].internalState;\n if (state && state.hasAsyncProp(name)) return state.getAsyncProp(name) || this[0, $lXg0j.ASYNC_DEFAULTS_SYMBOL][name];\n }\n }\n return this[0, $lXg0j.ASYNC_DEFAULTS_SYMBOL][name];\n }\n };\n}\nfunction $6f3d790fb58d63a4$var$hasOwnProperty(object, prop) {\n return Object.prototype.hasOwnProperty.call(object, prop);\n}\nfunction $6f3d790fb58d63a4$var$getOwnProperty(object, prop) {\n return $6f3d790fb58d63a4$var$hasOwnProperty(object, prop) && object[prop];\n}\nfunction $6f3d790fb58d63a4$var$getComponentName(componentClass) {\n const componentName = componentClass.componentName;\n if (!componentName) (0, $4VQgq.default).warn(\"\".concat(componentClass.name, \".componentName not specified\"))();\n return componentName || componentClass.name;\n}\n\n});\nparcelRegister(\"ewpcq\", function(module, exports) {\n\n$parcel$export(module.exports, \"parsePropTypes\", function () { return $a92799eb484b7544$export$6335b16489944934; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $79r96 = parcelRequire(\"79r96\");\n\nvar $lLwj3 = parcelRequire(\"lLwj3\");\nconst $a92799eb484b7544$var$TYPE_DEFINITIONS = {\n boolean: {\n validate (value, propType) {\n return true;\n },\n equal (value1, value2, propType) {\n return Boolean(value1) === Boolean(value2);\n }\n },\n number: {\n validate (value, propType) {\n return Number.isFinite(value) && (!(\"max\" in propType) || value <= propType.max) && (!(\"min\" in propType) || value >= propType.min);\n }\n },\n color: {\n validate (value, propType) {\n return propType.optional && !value || $a92799eb484b7544$var$isArray(value) && (value.length === 3 || value.length === 4);\n },\n equal (value1, value2, propType) {\n return (0, $lLwj3.deepEqual)(value1, value2, 1);\n }\n },\n accessor: {\n validate (value, propType) {\n const valueType = $a92799eb484b7544$var$getTypeOf(value);\n return valueType === \"function\" || valueType === $a92799eb484b7544$var$getTypeOf(propType.value);\n },\n equal (value1, value2, propType) {\n if (typeof value2 === \"function\") return true;\n return (0, $lLwj3.deepEqual)(value1, value2, 1);\n }\n },\n array: {\n validate (value, propType) {\n return propType.optional && !value || $a92799eb484b7544$var$isArray(value);\n },\n equal (value1, value2, propType) {\n const { compare: compare } = propType;\n const depth = Number.isInteger(compare) ? compare : compare ? 1 : 0;\n return compare ? (0, $lLwj3.deepEqual)(value1, value2, depth) : value1 === value2;\n }\n },\n object: {\n equal (value1, value2, propType) {\n if (propType.ignore) return true;\n const { compare: compare } = propType;\n const depth = Number.isInteger(compare) ? compare : compare ? 1 : 0;\n return compare ? (0, $lLwj3.deepEqual)(value1, value2, depth) : value1 === value2;\n }\n },\n function: {\n validate (value, propType) {\n return propType.optional && !value || typeof value === \"function\";\n },\n equal (value1, value2, propType) {\n const shouldIgnore = !propType.compare && propType.ignore !== false;\n return shouldIgnore || value1 === value2;\n }\n },\n data: {\n transform: (value, propType, component)=>{\n const { dataTransform: dataTransform } = component.props;\n return dataTransform && value ? dataTransform(value) : value;\n }\n },\n image: {\n transform: (value, propType, component)=>{\n const context = component.context;\n if (!context || !context.gl) return null;\n return (0, $79r96.createTexture)(component.id, context.gl, value, (0, $2QP2i._)({}, propType.parameters, component.props.textureParameters));\n },\n release: (value, propType, component)=>{\n (0, $79r96.destroyTexture)(component.id, value);\n }\n }\n};\nfunction $a92799eb484b7544$export$6335b16489944934(propDefs) {\n const propTypes = {};\n const defaultProps = {};\n const deprecatedProps = {};\n for (const [propName, propDef] of Object.entries(propDefs)){\n const deprecated = propDef === null || propDef === void 0 ? void 0 : propDef.deprecatedFor;\n if (deprecated) deprecatedProps[propName] = Array.isArray(deprecated) ? deprecated : [\n deprecated\n ];\n else {\n const propType = $a92799eb484b7544$var$parsePropType(propName, propDef);\n propTypes[propName] = propType;\n defaultProps[propName] = propType.value;\n }\n }\n return {\n propTypes: propTypes,\n defaultProps: defaultProps,\n deprecatedProps: deprecatedProps\n };\n}\nfunction $a92799eb484b7544$var$parsePropType(name, propDef) {\n switch($a92799eb484b7544$var$getTypeOf(propDef)){\n case \"object\":\n return $a92799eb484b7544$var$normalizePropDefinition(name, propDef);\n case \"array\":\n return $a92799eb484b7544$var$normalizePropDefinition(name, {\n type: \"array\",\n value: propDef,\n compare: false\n });\n case \"boolean\":\n return $a92799eb484b7544$var$normalizePropDefinition(name, {\n type: \"boolean\",\n value: propDef\n });\n case \"number\":\n return $a92799eb484b7544$var$normalizePropDefinition(name, {\n type: \"number\",\n value: propDef\n });\n case \"function\":\n return $a92799eb484b7544$var$normalizePropDefinition(name, {\n type: \"function\",\n value: propDef,\n compare: true\n });\n default:\n return {\n name: name,\n type: \"unknown\",\n value: propDef\n };\n }\n}\nfunction $a92799eb484b7544$var$normalizePropDefinition(name, propDef) {\n if (!(\"type\" in propDef)) {\n if (!(\"value\" in propDef)) return {\n name: name,\n type: \"object\",\n value: propDef\n };\n return (0, $2QP2i._)({\n name: name,\n type: $a92799eb484b7544$var$getTypeOf(propDef.value)\n }, propDef);\n }\n return (0, $2QP2i._)({\n name: name\n }, $a92799eb484b7544$var$TYPE_DEFINITIONS[propDef.type], propDef);\n}\nfunction $a92799eb484b7544$var$isArray(value) {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n}\nfunction $a92799eb484b7544$var$getTypeOf(value) {\n if ($a92799eb484b7544$var$isArray(value)) return \"array\";\n if (value === null) return \"null\";\n return typeof value;\n}\n\n});\nparcelRegister(\"79r96\", function(module, exports) {\n\n$parcel$export(module.exports, \"createTexture\", function () { return $534e6e480a78c06f$export$37b981a8c575f415; });\n$parcel$export(module.exports, \"destroyTexture\", function () { return $534e6e480a78c06f$export$2ec81868286b17e6; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $7lUAH = parcelRequire(\"7lUAH\");\nconst $534e6e480a78c06f$var$DEFAULT_TEXTURE_PARAMETERS = {\n [10241]: 9987,\n [10240]: 9729,\n [10242]: 33071,\n [10243]: 33071\n};\nconst $534e6e480a78c06f$var$internalTextures = {};\nfunction $534e6e480a78c06f$export$37b981a8c575f415(owner, gl, image, parameters) {\n if (image instanceof (0, $7lUAH.default)) return image;\n else if (image.constructor && image.constructor.name !== \"Object\") image = {\n data: image\n };\n let specialTextureParameters = null;\n if (image.compressed) specialTextureParameters = {\n [10241]: image.data.length > 1 ? 9985 : 9729\n };\n const texture = new (0, $7lUAH.default)(gl, (0, $edHbI._)((0, $2QP2i._)({}, image), {\n parameters: (0, $2QP2i._)({}, $534e6e480a78c06f$var$DEFAULT_TEXTURE_PARAMETERS, specialTextureParameters, parameters)\n }));\n $534e6e480a78c06f$var$internalTextures[texture.id] = owner;\n return texture;\n}\nfunction $534e6e480a78c06f$export$2ec81868286b17e6(owner, texture) {\n if (!texture || !(texture instanceof (0, $7lUAH.default))) return;\n if ($534e6e480a78c06f$var$internalTextures[texture.id] === owner) {\n texture.delete();\n delete $534e6e480a78c06f$var$internalTextures[texture.id];\n }\n}\n\n});\n\nparcelRegister(\"lLwj3\", function(module, exports) {\n\n$parcel$export(module.exports, \"deepEqual\", function () { return $fd870c19bbeef9ea$export$9cb4719e2e525b7a; });\nfunction $fd870c19bbeef9ea$export$9cb4719e2e525b7a(a, b, depth) {\n if (a === b) return true;\n if (!depth || !a || !b) return false;\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) return false;\n for(let i = 0; i < a.length; i++){\n if (!$fd870c19bbeef9ea$export$9cb4719e2e525b7a(a[i], b[i], depth - 1)) return false;\n }\n return true;\n }\n if (Array.isArray(b)) return false;\n if (typeof a === \"object\" && typeof b === \"object\") {\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n for (const key of aKeys){\n if (!b.hasOwnProperty(key)) return false;\n if (!$fd870c19bbeef9ea$export$9cb4719e2e525b7a(a[key], b[key], depth - 1)) return false;\n }\n return true;\n }\n return false;\n}\n\n});\n\n\n\n\nparcelRegister(\"5UhUg\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $44d01292c58fa20a$export$2e2bcd8739ae039; });\n\nvar $1zR3q = parcelRequire(\"1zR3q\");\n\nvar $4nfzm = parcelRequire(\"4nfzm\");\nclass $44d01292c58fa20a$export$2e2bcd8739ae039 extends (0, $4nfzm.default) {\n get layer() {\n return this.component;\n }\n _fetch(propName, url) {\n const layer = this.layer;\n const fetch = layer === null || layer === void 0 ? void 0 : layer.props.fetch;\n if (fetch) return fetch(url, {\n propName: propName,\n layer: layer\n });\n return super._fetch(propName, url);\n }\n _onResolve(propName, value) {\n const layer = this.layer;\n if (layer) {\n const onDataLoad = layer.props.onDataLoad;\n if (propName === \"data\" && onDataLoad) onDataLoad(value, {\n propName: propName,\n layer: layer\n });\n }\n }\n _onError(propName, error) {\n const layer = this.layer;\n if (layer) layer.raiseError(error, \"loading \".concat(propName, \" of \").concat(this.layer));\n }\n constructor({ attributeManager: attributeManager, layer: layer }){\n super(layer);\n (0, $1zR3q.default)(this, \"attributeManager\", void 0);\n (0, $1zR3q.default)(this, \"needsRedraw\", void 0);\n (0, $1zR3q.default)(this, \"needsUpdate\", void 0);\n (0, $1zR3q.default)(this, \"subLayers\", void 0);\n (0, $1zR3q.default)(this, \"usesPickingColorCache\", void 0);\n (0, $1zR3q.default)(this, \"hasPickingBuffer\", void 0);\n (0, $1zR3q.default)(this, \"changeFlags\", void 0);\n (0, $1zR3q.default)(this, \"viewport\", void 0);\n (0, $1zR3q.default)(this, \"uniformTransitions\", void 0);\n (0, $1zR3q.default)(this, \"propsInTransition\", void 0);\n this.attributeManager = attributeManager;\n this.needsRedraw = true;\n this.needsUpdate = true;\n this.subLayers = null;\n this.usesPickingColorCache = false;\n }\n}\n\n});\nparcelRegister(\"4nfzm\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $32f56320eaddaf36$export$2e2bcd8739ae039; });\n\nvar $1zR3q = parcelRequire(\"1zR3q\");\n\nvar $abpME = parcelRequire(\"abpME\");\n\nvar $lXg0j = parcelRequire(\"lXg0j\");\nconst $32f56320eaddaf36$var$EMPTY_PROPS = Object.freeze({});\nclass $32f56320eaddaf36$export$2e2bcd8739ae039 {\n finalize() {\n for(const propName in this.asyncProps){\n const asyncProp = this.asyncProps[propName];\n if (asyncProp && asyncProp.type && asyncProp.type.release) asyncProp.type.release(asyncProp.resolvedValue, asyncProp.type, this.component);\n }\n this.asyncProps = {};\n this.component = null;\n this.resetOldProps();\n }\n getOldProps() {\n return this.oldAsyncProps || this.oldProps || $32f56320eaddaf36$var$EMPTY_PROPS;\n }\n resetOldProps() {\n this.oldAsyncProps = null;\n this.oldProps = this.component ? this.component.props : null;\n }\n hasAsyncProp(propName) {\n return propName in this.asyncProps;\n }\n getAsyncProp(propName) {\n const asyncProp = this.asyncProps[propName];\n return asyncProp && asyncProp.resolvedValue;\n }\n isAsyncPropLoading(propName) {\n if (propName) {\n const asyncProp = this.asyncProps[propName];\n return Boolean(asyncProp && asyncProp.pendingLoadCount > 0 && asyncProp.pendingLoadCount !== asyncProp.resolvedLoadCount);\n }\n for(const key in this.asyncProps){\n if (this.isAsyncPropLoading(key)) return true;\n }\n return false;\n }\n reloadAsyncProp(propName, value) {\n this._watchPromise(propName, Promise.resolve(value));\n }\n setAsyncProps(props) {\n this.component = props[0, $lXg0j.COMPONENT_SYMBOL] || this.component;\n const resolvedValues = props[0, $lXg0j.ASYNC_RESOLVED_SYMBOL] || {};\n const originalValues = props[0, $lXg0j.ASYNC_ORIGINAL_SYMBOL] || props;\n const defaultValues = props[0, $lXg0j.ASYNC_DEFAULTS_SYMBOL] || {};\n for(const propName in resolvedValues){\n const value = resolvedValues[propName];\n this._createAsyncPropData(propName, defaultValues[propName]);\n this._updateAsyncProp(propName, value);\n resolvedValues[propName] = this.getAsyncProp(propName);\n }\n for(const propName in originalValues){\n const value = originalValues[propName];\n this._createAsyncPropData(propName, defaultValues[propName]);\n this._updateAsyncProp(propName, value);\n }\n }\n _fetch(propName, url) {\n return null;\n }\n _onResolve(propName, value) {}\n _onError(propName, error) {}\n _updateAsyncProp(propName, value) {\n if (!this._didAsyncInputValueChange(propName, value)) return;\n if (typeof value === \"string\") value = this._fetch(propName, value);\n if (value instanceof Promise) {\n this._watchPromise(propName, value);\n return;\n }\n if ((0, $abpME.isAsyncIterable)(value)) {\n this._resolveAsyncIterable(propName, value);\n return;\n }\n this._setPropValue(propName, value);\n }\n _freezeAsyncOldProps() {\n if (!this.oldAsyncProps && this.oldProps) {\n this.oldAsyncProps = Object.create(this.oldProps);\n for(const propName in this.asyncProps)Object.defineProperty(this.oldAsyncProps, propName, {\n enumerable: true,\n value: this.oldProps[propName]\n });\n }\n }\n _didAsyncInputValueChange(propName, value) {\n const asyncProp = this.asyncProps[propName];\n if (value === asyncProp.resolvedValue || value === asyncProp.lastValue) return false;\n asyncProp.lastValue = value;\n return true;\n }\n _setPropValue(propName, value) {\n this._freezeAsyncOldProps();\n const asyncProp = this.asyncProps[propName];\n if (asyncProp) {\n value = this._postProcessValue(asyncProp, value);\n asyncProp.resolvedValue = value;\n asyncProp.pendingLoadCount++;\n asyncProp.resolvedLoadCount = asyncProp.pendingLoadCount;\n }\n }\n _setAsyncPropValue(propName, value, loadCount) {\n const asyncProp = this.asyncProps[propName];\n if (asyncProp && loadCount >= asyncProp.resolvedLoadCount && value !== undefined) {\n this._freezeAsyncOldProps();\n asyncProp.resolvedValue = value;\n asyncProp.resolvedLoadCount = loadCount;\n this.onAsyncPropUpdated(propName, value);\n }\n }\n _watchPromise(propName, promise) {\n const asyncProp = this.asyncProps[propName];\n if (asyncProp) {\n asyncProp.pendingLoadCount++;\n const loadCount = asyncProp.pendingLoadCount;\n promise.then((data)=>{\n if (!this.component) return;\n data = this._postProcessValue(asyncProp, data);\n this._setAsyncPropValue(propName, data, loadCount);\n this._onResolve(propName, data);\n }).catch((error)=>{\n this._onError(propName, error);\n });\n }\n }\n async _resolveAsyncIterable(propName, iterable) {\n if (propName !== \"data\") {\n this._setPropValue(propName, iterable);\n return;\n }\n const asyncProp = this.asyncProps[propName];\n if (!asyncProp) return;\n asyncProp.pendingLoadCount++;\n const loadCount = asyncProp.pendingLoadCount;\n let data = [];\n let count = 0;\n for await (const chunk of iterable){\n if (!this.component) return;\n const { dataTransform: dataTransform } = this.component.props;\n if (dataTransform) data = dataTransform(chunk, data);\n else data = data.concat(chunk);\n Object.defineProperty(data, \"__diff\", {\n enumerable: false,\n value: [\n {\n startRow: count,\n endRow: data.length\n }\n ]\n });\n count = data.length;\n this._setAsyncPropValue(propName, data, loadCount);\n }\n this._onResolve(propName, data);\n }\n _postProcessValue(asyncProp, value) {\n const propType = asyncProp.type;\n if (propType && this.component) {\n if (propType.release) propType.release(asyncProp.resolvedValue, propType, this.component);\n if (propType.transform) return propType.transform(value, propType, this.component);\n }\n return value;\n }\n _createAsyncPropData(propName, defaultValue) {\n const asyncProp = this.asyncProps[propName];\n if (!asyncProp) {\n const propTypes = this.component && this.component.props[0, $lXg0j.PROP_TYPES_SYMBOL];\n this.asyncProps[propName] = {\n type: propTypes && propTypes[propName],\n lastValue: null,\n resolvedValue: defaultValue,\n pendingLoadCount: 0,\n resolvedLoadCount: 0\n };\n }\n }\n constructor(component){\n (0, $1zR3q.default)(this, \"component\", void 0);\n (0, $1zR3q.default)(this, \"onAsyncPropUpdated\", void 0);\n (0, $1zR3q.default)(this, \"asyncProps\", void 0);\n (0, $1zR3q.default)(this, \"oldProps\", void 0);\n (0, $1zR3q.default)(this, \"oldAsyncProps\", void 0);\n this.component = component;\n this.asyncProps = {};\n this.onAsyncPropUpdated = ()=>{};\n this.oldProps = null;\n this.oldAsyncProps = null;\n }\n}\n\n});\n\n\nparcelRegister(\"ewlwV\", function(module, exports) {\n\n$parcel$export(module.exports, \"load\", function () { return $a924c13f2eeca3d7$export$11e63f7b0f3d9900; });\n\nvar $coI4l = parcelRequire(\"coI4l\");\n\nvar $vyOkv = parcelRequire(\"vyOkv\");\n\nvar $j9Kyb = parcelRequire(\"j9Kyb\");\n\nvar $a2G5Q = parcelRequire(\"a2G5Q\");\nasync function $a924c13f2eeca3d7$export$11e63f7b0f3d9900(url, loaders, options, context) {\n if (!Array.isArray(loaders) && !(0, $vyOkv.isLoaderObject)(loaders)) {\n context = undefined;\n options = loaders;\n loaders = undefined;\n }\n const fetch = (0, $j9Kyb.getFetchFunction)(options);\n let data = url;\n if (typeof url === \"string\") data = await fetch(url);\n if ((0, $coI4l.isBlob)(url)) data = await fetch(url);\n return await (0, $a2G5Q.parse)(data, loaders, options);\n}\n\n});\nparcelRegister(\"coI4l\", function(module, exports) {\n\n$parcel$export(module.exports, \"isObject\", function () { return $9069e91c21caafa0$export$a6cdc56e425d0d0a; });\n$parcel$export(module.exports, \"isPureObject\", function () { return $9069e91c21caafa0$export$e219791d2b49856; });\n$parcel$export(module.exports, \"isIterable\", function () { return $9069e91c21caafa0$export$9652023d9040757; });\n$parcel$export(module.exports, \"isAsyncIterable\", function () { return $9069e91c21caafa0$export$edb10ab8dd75a915; });\n$parcel$export(module.exports, \"isIterator\", function () { return $9069e91c21caafa0$export$50db6e277db66ea0; });\n$parcel$export(module.exports, \"isResponse\", function () { return $9069e91c21caafa0$export$3f1eb41d9a6a6a27; });\n$parcel$export(module.exports, \"isBlob\", function () { return $9069e91c21caafa0$export$5bcd6e94ed871c88; });\n$parcel$export(module.exports, \"isBuffer\", function () { return $9069e91c21caafa0$export$a7884ebc965f8f54; });\n$parcel$export(module.exports, \"isReadableStream\", function () { return $9069e91c21caafa0$export$ac613ff475b69d05; });\nconst $9069e91c21caafa0$var$isBoolean = (x)=>typeof x === \"boolean\";\nconst $9069e91c21caafa0$var$isFunction = (x)=>typeof x === \"function\";\nconst $9069e91c21caafa0$export$a6cdc56e425d0d0a = (x)=>x !== null && typeof x === \"object\";\nconst $9069e91c21caafa0$export$e219791d2b49856 = (x)=>$9069e91c21caafa0$export$a6cdc56e425d0d0a(x) && x.constructor === ({}).constructor;\nconst $9069e91c21caafa0$export$4369c812aac99591 = (x)=>$9069e91c21caafa0$export$a6cdc56e425d0d0a(x) && $9069e91c21caafa0$var$isFunction(x.then);\nconst $9069e91c21caafa0$export$9652023d9040757 = (x)=>x && typeof x[Symbol.iterator] === \"function\";\nconst $9069e91c21caafa0$export$edb10ab8dd75a915 = (x)=>x && typeof x[Symbol.asyncIterator] === \"function\";\nconst $9069e91c21caafa0$export$50db6e277db66ea0 = (x)=>x && $9069e91c21caafa0$var$isFunction(x.next);\nconst $9069e91c21caafa0$export$3f1eb41d9a6a6a27 = (x)=>typeof Response !== \"undefined\" && x instanceof Response || x && x.arrayBuffer && x.text && x.json;\nconst $9069e91c21caafa0$export$be78b3111c50efdd = (x)=>typeof File !== \"undefined\" && x instanceof File;\nconst $9069e91c21caafa0$export$5bcd6e94ed871c88 = (x)=>typeof Blob !== \"undefined\" && x instanceof Blob;\nconst $9069e91c21caafa0$export$a7884ebc965f8f54 = (x)=>x && typeof x === \"object\" && x.isBuffer;\nconst $9069e91c21caafa0$export$5536d41d90245d51 = (x)=>$9069e91c21caafa0$export$a6cdc56e425d0d0a(x) && $9069e91c21caafa0$var$isFunction(x.abort) && $9069e91c21caafa0$var$isFunction(x.getWriter);\nconst $9069e91c21caafa0$export$f8bb1f6b773199b7 = (x)=>typeof ReadableStream !== \"undefined\" && x instanceof ReadableStream || $9069e91c21caafa0$export$a6cdc56e425d0d0a(x) && $9069e91c21caafa0$var$isFunction(x.tee) && $9069e91c21caafa0$var$isFunction(x.cancel) && $9069e91c21caafa0$var$isFunction(x.getReader);\nconst $9069e91c21caafa0$export$eec1f46c8eef21a4 = (x)=>$9069e91c21caafa0$export$a6cdc56e425d0d0a(x) && $9069e91c21caafa0$var$isFunction(x.end) && $9069e91c21caafa0$var$isFunction(x.write) && $9069e91c21caafa0$var$isBoolean(x.writable);\nconst $9069e91c21caafa0$export$2940183a2d5db90f = (x)=>$9069e91c21caafa0$export$a6cdc56e425d0d0a(x) && $9069e91c21caafa0$var$isFunction(x.read) && $9069e91c21caafa0$var$isFunction(x.pipe) && $9069e91c21caafa0$var$isBoolean(x.readable);\nconst $9069e91c21caafa0$export$ac613ff475b69d05 = (x)=>$9069e91c21caafa0$export$f8bb1f6b773199b7(x) || $9069e91c21caafa0$export$2940183a2d5db90f(x);\nconst $9069e91c21caafa0$export$b58a61c52edb4f66 = (x)=>$9069e91c21caafa0$export$5536d41d90245d51(x) || $9069e91c21caafa0$export$eec1f46c8eef21a4(x);\n\n});\n\nparcelRegister(\"vyOkv\", function(module, exports) {\n\n$parcel$export(module.exports, \"isLoaderObject\", function () { return $05ede60f13427040$export$2db07da082dd07a7; });\n$parcel$export(module.exports, \"normalizeLoader\", function () { return $05ede60f13427040$export$a19b0af95f3585f1; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $be06P = parcelRequire(\"be06P\");\nfunction $05ede60f13427040$export$2db07da082dd07a7(loader) {\n var _loader;\n if (!loader) return false;\n if (Array.isArray(loader)) loader = loader[0];\n const hasExtensions = Array.isArray((_loader = loader) === null || _loader === void 0 ? void 0 : _loader.extensions);\n return hasExtensions;\n}\nfunction $05ede60f13427040$export$a19b0af95f3585f1(loader) {\n var _loader2, _loader3;\n (0, $be06P.assert)(loader, \"null loader\");\n (0, $be06P.assert)($05ede60f13427040$export$2db07da082dd07a7(loader), \"invalid loader\");\n let options;\n if (Array.isArray(loader)) {\n options = loader[1];\n loader = loader[0];\n loader = (0, $edHbI._)((0, $2QP2i._)({}, loader), {\n options: (0, $2QP2i._)({}, loader.options, options)\n });\n }\n if ((_loader2 = loader) !== null && _loader2 !== void 0 && _loader2.parseTextSync || (_loader3 = loader) !== null && _loader3 !== void 0 && _loader3.parseText) loader.text = true;\n if (!loader.text) loader.binary = true;\n return loader;\n}\n\n});\nparcelRegister(\"be06P\", function(module, exports) {\n\n$parcel$export(module.exports, \"assert\", function () { return $82c1162fa930cb52$export$a7a9523472993e97; });\nfunction $82c1162fa930cb52$export$a7a9523472993e97(condition, message) {\n if (!condition) throw new Error(message || \"loader assertion failed.\");\n}\n\n});\n\n\nparcelRegister(\"j9Kyb\", function(module, exports) {\n\n$parcel$export(module.exports, \"getFetchFunction\", function () { return $df22f77e66eddbd9$export$9b973e0eff85009f; });\n\nvar $coI4l = parcelRequire(\"coI4l\");\n\nvar $4OY7P = parcelRequire(\"4OY7P\");\n\nvar $8mcNl = parcelRequire(\"8mcNl\");\nfunction $df22f77e66eddbd9$export$9b973e0eff85009f(options, context) {\n const globalOptions = (0, $8mcNl.getGlobalLoaderOptions)();\n const fetchOptions = options || globalOptions;\n if (typeof fetchOptions.fetch === \"function\") return fetchOptions.fetch;\n if ((0, $coI4l.isObject)(fetchOptions.fetch)) return (url)=>(0, $4OY7P.fetchFile)(url, fetchOptions);\n if (context !== null && context !== void 0 && context.fetch) return context === null || context === void 0 ? void 0 : context.fetch;\n return 0, $4OY7P.fetchFile;\n}\n\n});\nparcelRegister(\"4OY7P\", function(module, exports) {\n\n$parcel$export(module.exports, \"fetchFile\", function () { return $382a788fedc928dc$export$d965bcb23f9d06c5; });\n\nvar $c56Kn = parcelRequire(\"c56Kn\");\n\nvar $iQYNB = parcelRequire(\"iQYNB\");\nasync function $382a788fedc928dc$export$d965bcb23f9d06c5(url, options) {\n if (typeof url === \"string\") {\n url = (0, $c56Kn.resolvePath)(url);\n let fetchOptions = options;\n if (options !== null && options !== void 0 && options.fetch && typeof (options === null || options === void 0 ? void 0 : options.fetch) !== \"function\") fetchOptions = options.fetch;\n return await fetch(url, fetchOptions);\n }\n return await (0, $iQYNB.makeResponse)(url);\n}\n\n});\nparcelRegister(\"c56Kn\", function(module, exports) {\n\n$parcel$export(module.exports, \"resolvePath\", function () { return $8cbb2f7ec9cb0fcd$export$b09f2ff0bbcb43c7; });\nlet $8cbb2f7ec9cb0fcd$var$pathPrefix = \"\";\nconst $8cbb2f7ec9cb0fcd$var$fileAliases = {};\nfunction $8cbb2f7ec9cb0fcd$export$fa7cbeea6a0f8cd3(prefix) {\n $8cbb2f7ec9cb0fcd$var$pathPrefix = prefix;\n}\nfunction $8cbb2f7ec9cb0fcd$export$e21ff368c7512d8e() {\n return $8cbb2f7ec9cb0fcd$var$pathPrefix;\n}\nfunction $8cbb2f7ec9cb0fcd$export$65b32f70101f5674(aliases) {\n Object.assign($8cbb2f7ec9cb0fcd$var$fileAliases, aliases);\n}\nfunction $8cbb2f7ec9cb0fcd$export$b09f2ff0bbcb43c7(filename) {\n for(const alias in $8cbb2f7ec9cb0fcd$var$fileAliases)if (filename.startsWith(alias)) {\n const replacement = $8cbb2f7ec9cb0fcd$var$fileAliases[alias];\n filename = filename.replace(alias, replacement);\n }\n if (!filename.startsWith(\"http://\") && !filename.startsWith(\"https://\")) filename = \"\".concat($8cbb2f7ec9cb0fcd$var$pathPrefix).concat(filename);\n return filename;\n}\n\n});\n\nparcelRegister(\"iQYNB\", function(module, exports) {\n\n$parcel$export(module.exports, \"makeResponse\", function () { return $db9c3ec0b2bb2fc7$export$16d84ad959da5112; });\n$parcel$export(module.exports, \"checkResponse\", function () { return $db9c3ec0b2bb2fc7$export$5db0ad607ce3410b; });\n\nvar $coI4l = parcelRequire(\"coI4l\");\n\nvar $l6GmM = parcelRequire(\"l6GmM\");\nasync function $db9c3ec0b2bb2fc7$export$16d84ad959da5112(resource) {\n if ((0, $coI4l.isResponse)(resource)) return resource;\n const headers = {};\n const contentLength = (0, $l6GmM.getResourceContentLength)(resource);\n if (contentLength >= 0) headers[\"content-length\"] = String(contentLength);\n const url = (0, $l6GmM.getResourceUrl)(resource);\n const type = (0, $l6GmM.getResourceMIMEType)(resource);\n if (type) headers[\"content-type\"] = type;\n const initialDataUrl = await $db9c3ec0b2bb2fc7$var$getInitialDataUrl(resource);\n if (initialDataUrl) headers[\"x-first-bytes\"] = initialDataUrl;\n if (typeof resource === \"string\") resource = new TextEncoder().encode(resource);\n const response = new Response(resource, {\n headers: headers\n });\n Object.defineProperty(response, \"url\", {\n value: url\n });\n return response;\n}\nasync function $db9c3ec0b2bb2fc7$export$5db0ad607ce3410b(response) {\n if (!response.ok) {\n const message = await $db9c3ec0b2bb2fc7$var$getResponseError(response);\n throw new Error(message);\n }\n}\nfunction $db9c3ec0b2bb2fc7$export$ef46f094beca181f(response) {\n if (!response.ok) {\n let message = \"\".concat(response.status, \" \").concat(response.statusText);\n message = message.length > 60 ? \"\".concat(message.slice(0, 60), \"...\") : message;\n throw new Error(message);\n }\n}\nasync function $db9c3ec0b2bb2fc7$var$getResponseError(response) {\n let message = \"Failed to fetch resource \".concat(response.url, \" (\").concat(response.status, \"): \");\n try {\n const contentType = response.headers.get(\"Content-Type\");\n let text = response.statusText;\n if (contentType.includes(\"application/json\")) text += \" \".concat(await response.text());\n message += text;\n message = message.length > 60 ? \"\".concat(message.slice(0, 60), \"...\") : message;\n } catch (error) {}\n return message;\n}\nasync function $db9c3ec0b2bb2fc7$var$getInitialDataUrl(resource) {\n const INITIAL_DATA_LENGTH = 5;\n if (typeof resource === \"string\") return \"data:,\".concat(resource.slice(0, INITIAL_DATA_LENGTH));\n if (resource instanceof Blob) {\n const blobSlice = resource.slice(0, 5);\n return await new Promise((resolve)=>{\n const reader = new FileReader();\n reader.onload = (event)=>{\n var _event$target;\n return resolve(event === null || event === void 0 ? void 0 : (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.result);\n };\n reader.readAsDataURL(blobSlice);\n });\n }\n if (resource instanceof ArrayBuffer) {\n const slice = resource.slice(0, INITIAL_DATA_LENGTH);\n const base64 = $db9c3ec0b2bb2fc7$var$arrayBufferToBase64(slice);\n return \"data:base64,\".concat(base64);\n }\n return null;\n}\nfunction $db9c3ec0b2bb2fc7$var$arrayBufferToBase64(buffer) {\n let binary = \"\";\n const bytes = new Uint8Array(buffer);\n for(let i = 0; i < bytes.byteLength; i++)binary += String.fromCharCode(bytes[i]);\n return btoa(binary);\n}\n\n});\nparcelRegister(\"l6GmM\", function(module, exports) {\n\n$parcel$export(module.exports, \"getResourceUrl\", function () { return $f5db059adc3ceeaf$export$d2c227b690e4eb28; });\n$parcel$export(module.exports, \"getResourceMIMEType\", function () { return $f5db059adc3ceeaf$export$2ac0091ac07fac5c; });\n$parcel$export(module.exports, \"getResourceContentLength\", function () { return $f5db059adc3ceeaf$export$795ad0074e2d4d36; });\n\nvar $coI4l = parcelRequire(\"coI4l\");\n\nvar $5w0eB = parcelRequire(\"5w0eB\");\n\nvar $2z7S5 = parcelRequire(\"2z7S5\");\nfunction $f5db059adc3ceeaf$export$d2c227b690e4eb28(resource) {\n if ((0, $coI4l.isResponse)(resource)) {\n const response = resource;\n return response.url;\n }\n if ((0, $coI4l.isBlob)(resource)) {\n const blob = resource;\n return blob.name || \"\";\n }\n if (typeof resource === \"string\") return resource;\n return \"\";\n}\nfunction $f5db059adc3ceeaf$export$2ac0091ac07fac5c(resource) {\n if ((0, $coI4l.isResponse)(resource)) {\n const response = resource;\n const contentTypeHeader = response.headers.get(\"content-type\") || \"\";\n const noQueryUrl = (0, $2z7S5.stripQueryString)(response.url);\n return (0, $5w0eB.parseMIMEType)(contentTypeHeader) || (0, $5w0eB.parseMIMETypeFromURL)(noQueryUrl);\n }\n if ((0, $coI4l.isBlob)(resource)) {\n const blob = resource;\n return blob.type || \"\";\n }\n if (typeof resource === \"string\") return (0, $5w0eB.parseMIMETypeFromURL)(resource);\n return \"\";\n}\nfunction $f5db059adc3ceeaf$export$795ad0074e2d4d36(resource) {\n if ((0, $coI4l.isResponse)(resource)) {\n const response = resource;\n return response.headers[\"content-length\"] || -1;\n }\n if ((0, $coI4l.isBlob)(resource)) {\n const blob = resource;\n return blob.size;\n }\n if (typeof resource === \"string\") return resource.length;\n if (resource instanceof ArrayBuffer) return resource.byteLength;\n if (ArrayBuffer.isView(resource)) return resource.byteLength;\n return -1;\n}\n\n});\nparcelRegister(\"5w0eB\", function(module, exports) {\n\n$parcel$export(module.exports, \"parseMIMEType\", function () { return $40401f77c7215319$export$85e6adb445fa3ef0; });\n$parcel$export(module.exports, \"parseMIMETypeFromURL\", function () { return $40401f77c7215319$export$a8aa3005f5e6c533; });\nconst $40401f77c7215319$var$DATA_URL_PATTERN = /^data:([-\\w.]+\\/[-\\w.+]+)(;|,)/;\nconst $40401f77c7215319$var$MIME_TYPE_PATTERN = /^([-\\w.]+\\/[-\\w.+]+)/;\nfunction $40401f77c7215319$export$85e6adb445fa3ef0(mimeString) {\n const matches = $40401f77c7215319$var$MIME_TYPE_PATTERN.exec(mimeString);\n if (matches) return matches[1];\n return mimeString;\n}\nfunction $40401f77c7215319$export$a8aa3005f5e6c533(url) {\n const matches = $40401f77c7215319$var$DATA_URL_PATTERN.exec(url);\n if (matches) return matches[1];\n return \"\";\n}\n\n});\n\nparcelRegister(\"2z7S5\", function(module, exports) {\n\n$parcel$export(module.exports, \"extractQueryString\", function () { return $1de4f4bed3d6e61b$export$a2e5c8748fb0f45a; });\n$parcel$export(module.exports, \"stripQueryString\", function () { return $1de4f4bed3d6e61b$export$7cd817681526d337; });\nconst $1de4f4bed3d6e61b$var$QUERY_STRING_PATTERN = /\\?.*/;\nfunction $1de4f4bed3d6e61b$export$a2e5c8748fb0f45a(url) {\n const matches = url.match($1de4f4bed3d6e61b$var$QUERY_STRING_PATTERN);\n return matches && matches[0];\n}\nfunction $1de4f4bed3d6e61b$export$7cd817681526d337(url) {\n return url.replace($1de4f4bed3d6e61b$var$QUERY_STRING_PATTERN, \"\");\n}\n\n});\n\n\n\n\nparcelRegister(\"8mcNl\", function(module, exports) {\n\n$parcel$export(module.exports, \"getGlobalLoaderState\", function () { return $615a4d9fbe360c68$export$2a5c5f9d1a96dd63; });\n$parcel$export(module.exports, \"getGlobalLoaderOptions\", function () { return $615a4d9fbe360c68$export$6b0f80053d2682ea; });\n$parcel$export(module.exports, \"normalizeOptions\", function () { return $615a4d9fbe360c68$export$eb806c0b85b62f7a; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $coI4l = parcelRequire(\"coI4l\");\n\nvar $dqw8x = parcelRequire(\"dqw8x\");\n\nvar $1UJbQ = parcelRequire(\"1UJbQ\");\nfunction $615a4d9fbe360c68$export$2a5c5f9d1a96dd63() {\n globalThis.loaders = globalThis.loaders || {};\n const { loaders: loaders } = globalThis;\n loaders._state = loaders._state || {};\n return loaders._state;\n}\nconst $615a4d9fbe360c68$export$6b0f80053d2682ea = ()=>{\n const state = $615a4d9fbe360c68$export$2a5c5f9d1a96dd63();\n state.globalOptions = state.globalOptions || (0, $2QP2i._)({}, (0, $1UJbQ.DEFAULT_LOADER_OPTIONS));\n return state.globalOptions;\n};\nfunction $615a4d9fbe360c68$export$545eb931aeddfa08(options) {\n const state = $615a4d9fbe360c68$export$2a5c5f9d1a96dd63();\n const globalOptions = $615a4d9fbe360c68$export$6b0f80053d2682ea();\n state.globalOptions = $615a4d9fbe360c68$var$normalizeOptionsInternal(globalOptions, options);\n}\nfunction $615a4d9fbe360c68$export$eb806c0b85b62f7a(options, loader, loaders, url) {\n loaders = loaders || [];\n loaders = Array.isArray(loaders) ? loaders : [\n loaders\n ];\n $615a4d9fbe360c68$var$validateOptions(options, loaders);\n return $615a4d9fbe360c68$var$normalizeOptionsInternal(loader, options, url);\n}\nfunction $615a4d9fbe360c68$var$validateOptions(options, loaders) {\n $615a4d9fbe360c68$var$validateOptionsObject(options, null, (0, $1UJbQ.DEFAULT_LOADER_OPTIONS), (0, $1UJbQ.REMOVED_LOADER_OPTIONS), loaders);\n for (const loader of loaders){\n const idOptions = options && options[loader.id] || {};\n const loaderOptions = loader.options && loader.options[loader.id] || {};\n const deprecatedOptions = loader.deprecatedOptions && loader.deprecatedOptions[loader.id] || {};\n $615a4d9fbe360c68$var$validateOptionsObject(idOptions, loader.id, loaderOptions, deprecatedOptions, loaders);\n }\n}\nfunction $615a4d9fbe360c68$var$validateOptionsObject(options, id, defaultOptions, deprecatedOptions, loaders) {\n const loaderName = id || \"Top level\";\n const prefix = id ? \"\".concat(id, \".\") : \"\";\n for(const key in options){\n const isSubOptions = !id && (0, $coI4l.isObject)(options[key]);\n const isBaseUriOption = key === \"baseUri\" && !id;\n const isWorkerUrlOption = key === \"workerUrl\" && id;\n if (!(key in defaultOptions) && !isBaseUriOption && !isWorkerUrlOption) {\n if (key in deprecatedOptions) (0, $dqw8x.probeLog).warn(\"\".concat(loaderName, \" loader option '\").concat(prefix).concat(key, \"' no longer supported, use '\").concat(deprecatedOptions[key], \"'\"))();\n else if (!isSubOptions) {\n const suggestion = $615a4d9fbe360c68$var$findSimilarOption(key, loaders);\n (0, $dqw8x.probeLog).warn(\"\".concat(loaderName, \" loader option '\").concat(prefix).concat(key, \"' not recognized. \").concat(suggestion))();\n }\n }\n }\n}\nfunction $615a4d9fbe360c68$var$findSimilarOption(optionKey, loaders) {\n const lowerCaseOptionKey = optionKey.toLowerCase();\n let bestSuggestion = \"\";\n for (const loader of loaders)for(const key in loader.options){\n if (optionKey === key) return \"Did you mean '\".concat(loader.id, \".\").concat(key, \"'?\");\n const lowerCaseKey = key.toLowerCase();\n const isPartialMatch = lowerCaseOptionKey.startsWith(lowerCaseKey) || lowerCaseKey.startsWith(lowerCaseOptionKey);\n if (isPartialMatch) bestSuggestion = bestSuggestion || \"Did you mean '\".concat(loader.id, \".\").concat(key, \"'?\");\n }\n return bestSuggestion;\n}\nfunction $615a4d9fbe360c68$var$normalizeOptionsInternal(loader, options, url) {\n const loaderDefaultOptions = loader.options || {};\n const mergedOptions = (0, $2QP2i._)({}, loaderDefaultOptions);\n $615a4d9fbe360c68$var$addUrlOptions(mergedOptions, url);\n if (mergedOptions.log === null) mergedOptions.log = new (0, $dqw8x.NullLog)();\n $615a4d9fbe360c68$var$mergeNestedFields(mergedOptions, $615a4d9fbe360c68$export$6b0f80053d2682ea());\n $615a4d9fbe360c68$var$mergeNestedFields(mergedOptions, options);\n return mergedOptions;\n}\nfunction $615a4d9fbe360c68$var$mergeNestedFields(mergedOptions, options) {\n for(const key in options)if (key in options) {\n const value = options[key];\n if ((0, $coI4l.isPureObject)(value) && (0, $coI4l.isPureObject)(mergedOptions[key])) mergedOptions[key] = (0, $2QP2i._)({}, mergedOptions[key], options[key]);\n else mergedOptions[key] = options[key];\n }\n}\nfunction $615a4d9fbe360c68$var$addUrlOptions(options, url) {\n if (url && !(\"baseUri\" in options)) options.baseUri = url;\n}\n\n});\nparcelRegister(\"dqw8x\", function(module, exports) {\n\n$parcel$export(module.exports, \"probeLog\", function () { return $9c66a1c5341828ff$export$775acaacb88283c4; });\n$parcel$export(module.exports, \"NullLog\", function () { return $9c66a1c5341828ff$export$c8151b0a106d0aae; });\n$parcel$export(module.exports, \"ConsoleLog\", function () { return $9c66a1c5341828ff$export$b0d7de77e5ad708; });\n\nvar $dUfZf = parcelRequire(\"dUfZf\");\nparcelRequire(\"d0O9t\");\nvar $dwYH5 = parcelRequire(\"dwYH5\");\nconst $9c66a1c5341828ff$export$775acaacb88283c4 = new (0, $dwYH5.Log)({\n id: \"loaders.gl\"\n});\nclass $9c66a1c5341828ff$export$c8151b0a106d0aae {\n log() {\n return ()=>{};\n }\n info() {\n return ()=>{};\n }\n warn() {\n return ()=>{};\n }\n error() {\n return ()=>{};\n }\n}\nclass $9c66a1c5341828ff$export$b0d7de77e5ad708 {\n log() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n return this.console.log.bind(this.console, ...args);\n }\n info() {\n for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++)args[_key2] = arguments[_key2];\n return this.console.info.bind(this.console, ...args);\n }\n warn() {\n for(var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++)args[_key3] = arguments[_key3];\n return this.console.warn.bind(this.console, ...args);\n }\n error() {\n for(var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++)args[_key4] = arguments[_key4];\n return this.console.error.bind(this.console, ...args);\n }\n constructor(){\n (0, $dUfZf.default)(this, \"console\", void 0);\n this.console = console;\n }\n}\n\n});\nparcelRegister(\"dUfZf\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $a1fce7fbc0c3e74c$export$2e2bcd8739ae039; });\nfunction $a1fce7fbc0c3e74c$export$2e2bcd8739ae039(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\n\n});\n\nparcelRegister(\"d0O9t\", function(module, exports) {\n\n$parcel$export(module.exports, \"Log\", function () { return (parcelRequire(\"dwYH5\")).Log; });\n\nvar $dwYH5 = parcelRequire(\"dwYH5\");\n\n\n\n\n\n\nvar $97922d8c29471b32$export$2e2bcd8739ae039 = new (0, $dwYH5.Log)({\n id: \"@probe.gl/log\"\n});\n\n});\nparcelRegister(\"dwYH5\", function(module, exports) {\n\n$parcel$export(module.exports, \"Log\", function () { return $9d9d5814dd0cfbf0$export$ce30dbb46644d06c; });\n\nvar $i4pca = parcelRequire(\"i4pca\");\nvar $9RnaI = parcelRequire(\"9RnaI\");\n\nvar $7hRa7 = parcelRequire(\"7hRa7\");\n\nvar $lKlb6 = parcelRequire(\"lKlb6\");\n\nvar $39ODx = parcelRequire(\"39ODx\");\n\nvar $7bpT1 = parcelRequire(\"7bpT1\");\n\nvar $2qu0I = parcelRequire(\"2qu0I\");\n\nvar $9mYXe = parcelRequire(\"9mYXe\");\nconst $9d9d5814dd0cfbf0$var$originalConsole = {\n debug: (0, $i4pca.default)() ? console.debug || console.log : console.log,\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error\n};\nconst $9d9d5814dd0cfbf0$var$DEFAULT_LOG_CONFIGURATION = {\n enabled: true,\n level: 0\n};\nfunction $9d9d5814dd0cfbf0$var$noop() {}\nconst $9d9d5814dd0cfbf0$var$cache = {};\nconst $9d9d5814dd0cfbf0$var$ONCE = {\n once: true\n};\nclass $9d9d5814dd0cfbf0$export$ce30dbb46644d06c {\n set level(newLevel) {\n this.setLevel(newLevel);\n }\n get level() {\n return this.getLevel();\n }\n isEnabled() {\n return this._storage.config.enabled;\n }\n getLevel() {\n return this._storage.config.level;\n }\n getTotal() {\n return Number(((0, $9mYXe.getHiResTimestamp)() - this._startTs).toPrecision(10));\n }\n getDelta() {\n return Number(((0, $9mYXe.getHiResTimestamp)() - this._deltaTs).toPrecision(10));\n }\n set priority(newPriority) {\n this.level = newPriority;\n }\n get priority() {\n return this.level;\n }\n getPriority() {\n return this.level;\n }\n enable() {\n let enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this._storage.setConfiguration({\n enabled: enabled\n });\n return this;\n }\n setLevel(level) {\n this._storage.setConfiguration({\n level: level\n });\n return this;\n }\n get(setting) {\n return this._storage.config[setting];\n }\n set(setting, value) {\n this._storage.setConfiguration({\n [setting]: value\n });\n }\n settings() {\n if (console.table) console.table(this._storage.config);\n else console.log(this._storage.config);\n }\n assert(condition, message) {\n (0, $2qu0I.default)(condition, message);\n }\n warn(message) {\n return this._getLogFunction(0, message, $9d9d5814dd0cfbf0$var$originalConsole.warn, arguments, $9d9d5814dd0cfbf0$var$ONCE);\n }\n error(message) {\n return this._getLogFunction(0, message, $9d9d5814dd0cfbf0$var$originalConsole.error, arguments);\n }\n deprecated(oldUsage, newUsage) {\n return this.warn(\"`\".concat(oldUsage, \"` is deprecated and will be removed in a later version. Use `\").concat(newUsage, \"` instead\"));\n }\n removed(oldUsage, newUsage) {\n return this.error(\"`\".concat(oldUsage, \"` has been removed. Use `\").concat(newUsage, \"` instead\"));\n }\n probe(logLevel, message) {\n return this._getLogFunction(logLevel, message, $9d9d5814dd0cfbf0$var$originalConsole.log, arguments, {\n time: true,\n once: true\n });\n }\n log(logLevel, message) {\n return this._getLogFunction(logLevel, message, $9d9d5814dd0cfbf0$var$originalConsole.debug, arguments);\n }\n info(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.info, arguments);\n }\n once(logLevel, message) {\n return this._getLogFunction(logLevel, message, $9d9d5814dd0cfbf0$var$originalConsole.debug || $9d9d5814dd0cfbf0$var$originalConsole.info, arguments, $9d9d5814dd0cfbf0$var$ONCE);\n }\n table(logLevel, table, columns) {\n if (table) return this._getLogFunction(logLevel, table, console.table || $9d9d5814dd0cfbf0$var$noop, columns && [\n columns\n ], {\n tag: $9d9d5814dd0cfbf0$var$getTableHeader(table)\n });\n return $9d9d5814dd0cfbf0$var$noop;\n }\n image(_ref) {\n let { logLevel: logLevel, priority: priority, image: image, message: message = \"\", scale: scale = 1 } = _ref;\n if (!this._shouldLog(logLevel || priority)) return $9d9d5814dd0cfbf0$var$noop;\n return (0, $i4pca.default)() ? $9d9d5814dd0cfbf0$var$logImageInBrowser({\n image: image,\n message: message,\n scale: scale\n }) : $9d9d5814dd0cfbf0$var$logImageInNode({\n image: image,\n message: message,\n scale: scale\n });\n }\n time(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);\n }\n timeEnd(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeEnd ? console.timeEnd : console.info);\n }\n timeStamp(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeStamp || $9d9d5814dd0cfbf0$var$noop);\n }\n group(logLevel, message) {\n let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n collapsed: false\n };\n const options = $9d9d5814dd0cfbf0$export$abc60e668512edf9({\n logLevel: logLevel,\n message: message,\n opts: opts\n });\n const { collapsed: collapsed } = opts;\n options.method = (collapsed ? console.groupCollapsed : console.group) || console.info;\n return this._getLogFunction(options);\n }\n groupCollapsed(logLevel, message) {\n let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.group(logLevel, message, Object.assign({}, opts, {\n collapsed: true\n }));\n }\n groupEnd(logLevel) {\n return this._getLogFunction(logLevel, \"\", console.groupEnd || $9d9d5814dd0cfbf0$var$noop);\n }\n withGroup(logLevel, message, func) {\n this.group(logLevel, message)();\n try {\n func();\n } finally{\n this.groupEnd(logLevel)();\n }\n }\n trace() {\n if (console.trace) console.trace();\n }\n _shouldLog(logLevel) {\n return this.isEnabled() && this.getLevel() >= $9d9d5814dd0cfbf0$var$normalizeLogLevel(logLevel);\n }\n _getLogFunction(logLevel, message, method, args, opts) {\n if (this._shouldLog(logLevel)) {\n opts = $9d9d5814dd0cfbf0$export$abc60e668512edf9({\n logLevel: logLevel,\n message: message,\n args: args,\n opts: opts\n });\n method = method || opts.method;\n (0, $2qu0I.default)(method);\n opts.total = this.getTotal();\n opts.delta = this.getDelta();\n this._deltaTs = (0, $9mYXe.getHiResTimestamp)();\n const tag = opts.tag || opts.message;\n if (opts.once && tag) {\n if (!$9d9d5814dd0cfbf0$var$cache[tag]) $9d9d5814dd0cfbf0$var$cache[tag] = (0, $9mYXe.getHiResTimestamp)();\n else return $9d9d5814dd0cfbf0$var$noop;\n }\n message = $9d9d5814dd0cfbf0$var$decorateMessage(this.id, opts.message, opts);\n return method.bind(console, message, ...opts.args);\n }\n return $9d9d5814dd0cfbf0$var$noop;\n }\n constructor(){\n let { id: id } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n id: \"\"\n };\n this.id = void 0;\n this.VERSION = (0, $9RnaI.VERSION);\n this._startTs = (0, $9mYXe.getHiResTimestamp)();\n this._deltaTs = (0, $9mYXe.getHiResTimestamp)();\n this._storage = void 0;\n this.userData = {};\n this.LOG_THROTTLE_TIMEOUT = 0;\n this.id = id;\n this.userData = {};\n this._storage = new (0, $7hRa7.LocalStorage)(\"__probe-\".concat(this.id, \"__\"), $9d9d5814dd0cfbf0$var$DEFAULT_LOG_CONFIGURATION);\n this.timeStamp(\"\".concat(this.id, \" started\"));\n (0, $7bpT1.autobind)(this);\n Object.seal(this);\n }\n}\n$9d9d5814dd0cfbf0$export$ce30dbb46644d06c.VERSION = (0, $9RnaI.VERSION);\nfunction $9d9d5814dd0cfbf0$var$normalizeLogLevel(logLevel) {\n if (!logLevel) return 0;\n let resolvedLevel;\n switch(typeof logLevel){\n case \"number\":\n resolvedLevel = logLevel;\n break;\n case \"object\":\n resolvedLevel = logLevel.logLevel || logLevel.priority || 0;\n break;\n default:\n return 0;\n }\n (0, $2qu0I.default)(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);\n return resolvedLevel;\n}\nfunction $9d9d5814dd0cfbf0$export$abc60e668512edf9(opts) {\n const { logLevel: logLevel, message: message } = opts;\n opts.logLevel = $9d9d5814dd0cfbf0$var$normalizeLogLevel(logLevel);\n const args = opts.args ? Array.from(opts.args) : [];\n while(args.length && args.shift() !== message);\n switch(typeof logLevel){\n case \"string\":\n case \"function\":\n if (message !== undefined) args.unshift(message);\n opts.message = logLevel;\n break;\n case \"object\":\n Object.assign(opts, logLevel);\n break;\n default:\n }\n if (typeof opts.message === \"function\") opts.message = opts.message();\n const messageType = typeof opts.message;\n (0, $2qu0I.default)(messageType === \"string\" || messageType === \"object\");\n return Object.assign(opts, {\n args: args\n }, opts.opts);\n}\nfunction $9d9d5814dd0cfbf0$var$decorateMessage(id, message, opts) {\n if (typeof message === \"string\") {\n const time = opts.time ? (0, $lKlb6.leftPad)((0, $lKlb6.formatTime)(opts.total)) : \"\";\n message = opts.time ? \"\".concat(id, \": \").concat(time, \" \").concat(message) : \"\".concat(id, \": \").concat(message);\n message = (0, $39ODx.addColor)(message, opts.color, opts.background);\n }\n return message;\n}\nfunction $9d9d5814dd0cfbf0$var$logImageInNode(_ref2) {\n let { image: image, message: message = \"\", scale: scale = 1 } = _ref2;\n console.warn(\"removed\");\n return $9d9d5814dd0cfbf0$var$noop;\n}\nfunction $9d9d5814dd0cfbf0$var$logImageInBrowser(_ref3) {\n let { image: image, message: message = \"\", scale: scale = 1 } = _ref3;\n if (typeof image === \"string\") {\n const img = new Image();\n img.onload = ()=>{\n const args = (0, $lKlb6.formatImage)(img, message, scale);\n console.log(...args);\n };\n img.src = image;\n return $9d9d5814dd0cfbf0$var$noop;\n }\n const element = image.nodeName || \"\";\n if (element.toLowerCase() === \"img\") {\n console.log(...(0, $lKlb6.formatImage)(image, message, scale));\n return $9d9d5814dd0cfbf0$var$noop;\n }\n if (element.toLowerCase() === \"canvas\") {\n const img = new Image();\n img.onload = ()=>console.log(...(0, $lKlb6.formatImage)(img, message, scale));\n img.src = image.toDataURL();\n return $9d9d5814dd0cfbf0$var$noop;\n }\n return $9d9d5814dd0cfbf0$var$noop;\n}\nfunction $9d9d5814dd0cfbf0$var$getTableHeader(table) {\n for(const key in table){\n for(const title in table[key])return title || \"untitled\";\n }\n return \"empty\";\n}\n\n});\nparcelRegister(\"i4pca\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $d27c24fc606ee687$export$2e2bcd8739ae039; });\n\nvar $cu9Me = parcelRequire(\"cu9Me\");\n\nvar $95Bnk = parcelRequire(\"95Bnk\");\nfunction $d27c24fc606ee687$export$2e2bcd8739ae039() {\n const isNode = typeof $95Bnk === \"object\" && String($95Bnk) === \"[object process]\" && false;\n return !isNode || (0, $cu9Me.default)();\n}\nfunction $d27c24fc606ee687$export$fb09d24fafba666a() {\n return $d27c24fc606ee687$export$2e2bcd8739ae039() && typeof document !== \"undefined\";\n}\n\n});\nparcelRegister(\"cu9Me\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $916fdee4348a2252$export$2e2bcd8739ae039; });\n\nvar $95Bnk = parcelRequire(\"95Bnk\");\nfunction $916fdee4348a2252$export$2e2bcd8739ae039(mockUserAgent) {\n if (typeof window !== \"undefined\" && typeof window.process === \"object\" && window.process.type === \"renderer\") return true;\n if (typeof $95Bnk !== \"undefined\" && typeof $95Bnk.versions === \"object\" && Boolean($95Bnk.versions[\"electron\"])) return true;\n const realUserAgent = typeof navigator === \"object\" && typeof navigator.userAgent === \"string\" && navigator.userAgent;\n const userAgent = mockUserAgent || realUserAgent;\n if (userAgent && userAgent.indexOf(\"Electron\") >= 0) return true;\n return false;\n}\n\n});\n\n\nparcelRegister(\"9RnaI\", function(module, exports) {\n\n$parcel$export(module.exports, \"VERSION\", function () { return $72db09bc59e240b3$export$a4ad2735b021c132; });\n\nvar $i4pca = parcelRequire(\"i4pca\");\n\nconst $72db09bc59e240b3$export$a4ad2735b021c132 = typeof __VERSION__ !== \"undefined\" ? __VERSION__ : \"untranspiled source\";\nconst $72db09bc59e240b3$export$4e09c449d6c407f7 = (0, $i4pca.default)();\n\n});\n\nparcelRegister(\"7hRa7\", function(module, exports) {\n\n$parcel$export(module.exports, \"LocalStorage\", function () { return $54e35bd3a6ddb5f5$export$19fffca37ef3e106; });\nfunction $54e35bd3a6ddb5f5$var$getStorage(type) {\n try {\n const storage = window[type];\n const x = \"__storage_test__\";\n storage.setItem(x, x);\n storage.removeItem(x);\n return storage;\n } catch (e) {\n return null;\n }\n}\nclass $54e35bd3a6ddb5f5$export$19fffca37ef3e106 {\n getConfiguration() {\n return this.config;\n }\n setConfiguration(configuration) {\n Object.assign(this.config, configuration);\n if (this.storage) {\n const serialized = JSON.stringify(this.config);\n this.storage.setItem(this.id, serialized);\n }\n }\n _loadConfiguration() {\n let configuration = {};\n if (this.storage) {\n const serializedConfiguration = this.storage.getItem(this.id);\n configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};\n }\n Object.assign(this.config, configuration);\n return this;\n }\n constructor(id, defaultConfig){\n let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"sessionStorage\";\n this.storage = void 0;\n this.id = void 0;\n this.config = void 0;\n this.storage = $54e35bd3a6ddb5f5$var$getStorage(type);\n this.id = id;\n this.config = defaultConfig;\n this._loadConfiguration();\n }\n}\n\n});\n\nparcelRegister(\"lKlb6\", function(module, exports) {\n\n$parcel$export(module.exports, \"formatTime\", function () { return $fd4e5263c01d5198$export$3203edd9e5edd663; });\n$parcel$export(module.exports, \"leftPad\", function () { return $fd4e5263c01d5198$export$cbb503201166aab7; });\n$parcel$export(module.exports, \"formatImage\", function () { return $fd4e5263c01d5198$export$9171d83acafa047c; });\nfunction $fd4e5263c01d5198$export$3203edd9e5edd663(ms) {\n let formatted;\n if (ms < 10) formatted = \"\".concat(ms.toFixed(2), \"ms\");\n else if (ms < 100) formatted = \"\".concat(ms.toFixed(1), \"ms\");\n else if (ms < 1000) formatted = \"\".concat(ms.toFixed(0), \"ms\");\n else formatted = \"\".concat((ms / 1000).toFixed(2), \"s\");\n return formatted;\n}\nfunction $fd4e5263c01d5198$export$cbb503201166aab7(string) {\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 8;\n const padLength = Math.max(length - string.length, 0);\n return \"\".concat(\" \".repeat(padLength)).concat(string);\n}\nfunction $fd4e5263c01d5198$export$390245bab32fb60f(string) {\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 8;\n const padLength = Math.max(length - string.length, 0);\n return \"\".concat(string).concat(\" \".repeat(padLength));\n}\nfunction $fd4e5263c01d5198$export$7c4d25c0c3217d8c(v) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const EPSILON = 1e-16;\n const { isInteger: isInteger = false } = options;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) return $fd4e5263c01d5198$var$formatArrayValue(v, options);\n if (!Number.isFinite(v)) return String(v);\n if (Math.abs(v) < EPSILON) return isInteger ? \"0\" : \"0.\";\n if (isInteger) return v.toFixed(0);\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) return v.toFixed(0);\n const string = v.toPrecision(2);\n const decimal = string.indexOf(\".0\");\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\nfunction $fd4e5263c01d5198$var$formatArrayValue(v, options) {\n const { maxElts: maxElts = 16, size: size = 1 } = options;\n let string = \"[\";\n for(let i = 0; i < v.length && i < maxElts; ++i){\n if (i > 0) string += \",\".concat(i % size === 0 ? \" \" : \"\");\n string += $fd4e5263c01d5198$export$7c4d25c0c3217d8c(v[i], options);\n }\n const terminator = v.length > maxElts ? \"...\" : \"]\";\n return \"\".concat(string).concat(terminator);\n}\nfunction $fd4e5263c01d5198$export$9171d83acafa047c(image, message, scale) {\n let maxWidth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 600;\n const imageUrl = image.src.replace(/\\(/g, \"%28\").replace(/\\)/g, \"%29\");\n if (image.width > maxWidth) scale = Math.min(scale, maxWidth / image.width);\n const width = image.width * scale;\n const height = image.height * scale;\n const style = [\n \"font-size:1px;\",\n \"padding:\".concat(Math.floor(height / 2), \"px \").concat(Math.floor(width / 2), \"px;\"),\n \"line-height:\".concat(height, \"px;\"),\n \"background:url(\".concat(imageUrl, \");\"),\n \"background-size:\".concat(width, \"px \").concat(height, \"px;\"),\n \"color:transparent;\"\n ].join(\"\");\n return [\n \"\".concat(message, \" %c+\"),\n style\n ];\n}\n\n});\n\nparcelRegister(\"39ODx\", function(module, exports) {\n\n$parcel$export(module.exports, \"addColor\", function () { return $24c97dc08c339607$export$4c4d9288a45f1fb3; });\n\nvar $i4pca = parcelRequire(\"i4pca\");\nlet $24c97dc08c339607$export$9b982809044276a6;\n(function(COLOR) {\n COLOR[COLOR[\"BLACK\"] = 30] = \"BLACK\";\n COLOR[COLOR[\"RED\"] = 31] = \"RED\";\n COLOR[COLOR[\"GREEN\"] = 32] = \"GREEN\";\n COLOR[COLOR[\"YELLOW\"] = 33] = \"YELLOW\";\n COLOR[COLOR[\"BLUE\"] = 34] = \"BLUE\";\n COLOR[COLOR[\"MAGENTA\"] = 35] = \"MAGENTA\";\n COLOR[COLOR[\"CYAN\"] = 36] = \"CYAN\";\n COLOR[COLOR[\"WHITE\"] = 37] = \"WHITE\";\n COLOR[COLOR[\"BRIGHT_BLACK\"] = 90] = \"BRIGHT_BLACK\";\n COLOR[COLOR[\"BRIGHT_RED\"] = 91] = \"BRIGHT_RED\";\n COLOR[COLOR[\"BRIGHT_GREEN\"] = 92] = \"BRIGHT_GREEN\";\n COLOR[COLOR[\"BRIGHT_YELLOW\"] = 93] = \"BRIGHT_YELLOW\";\n COLOR[COLOR[\"BRIGHT_BLUE\"] = 94] = \"BRIGHT_BLUE\";\n COLOR[COLOR[\"BRIGHT_MAGENTA\"] = 95] = \"BRIGHT_MAGENTA\";\n COLOR[COLOR[\"BRIGHT_CYAN\"] = 96] = \"BRIGHT_CYAN\";\n COLOR[COLOR[\"BRIGHT_WHITE\"] = 97] = \"BRIGHT_WHITE\";\n})($24c97dc08c339607$export$9b982809044276a6 || ($24c97dc08c339607$export$9b982809044276a6 = {}));\nconst $24c97dc08c339607$var$BACKGROUND_INCREMENT = 10;\nfunction $24c97dc08c339607$var$getColor(color) {\n if (typeof color !== \"string\") return color;\n color = color.toUpperCase();\n return $24c97dc08c339607$export$9b982809044276a6[color] || $24c97dc08c339607$export$9b982809044276a6.WHITE;\n}\nfunction $24c97dc08c339607$export$4c4d9288a45f1fb3(string, color, background) {\n if (!(0, $i4pca.default) && typeof string === \"string\") {\n if (color) {\n const colorCode = $24c97dc08c339607$var$getColor(color);\n string = \"\\x1b[\".concat(colorCode, \"m\").concat(string, \"\\x1b[39m\");\n }\n if (background) {\n const colorCode = $24c97dc08c339607$var$getColor(background);\n string = \"\\x1b[\".concat(colorCode + $24c97dc08c339607$var$BACKGROUND_INCREMENT, \"m\").concat(string, \"\\x1b[49m\");\n }\n }\n return string;\n}\n\n});\n\nparcelRegister(\"7bpT1\", function(module, exports) {\n\n$parcel$export(module.exports, \"autobind\", function () { return $53ada3fa80b21b15$export$f648f36420f83db; });\nfunction $53ada3fa80b21b15$export$f648f36420f83db(obj) {\n let predefined = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [\n \"constructor\"\n ];\n const proto = Object.getPrototypeOf(obj);\n const propNames = Object.getOwnPropertyNames(proto);\n const object = obj;\n for (const key of propNames){\n const value = object[key];\n if (typeof value === \"function\") {\n if (!predefined.find((name)=>key === name)) object[key] = value.bind(obj);\n }\n }\n}\n\n});\n\nparcelRegister(\"2qu0I\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $1c4549ee5b85d845$export$2e2bcd8739ae039; });\nfunction $1c4549ee5b85d845$export$2e2bcd8739ae039(condition, message) {\n if (!condition) throw new Error(message || \"Assertion failed\");\n}\n\n});\n\nparcelRegister(\"9mYXe\", function(module, exports) {\n\n$parcel$export(module.exports, \"getHiResTimestamp\", function () { return $6d257360a3b98f14$export$19cd34ab73b4c7a7; });\n\nvar $i4pca = parcelRequire(\"i4pca\");\nvar $chRO8 = parcelRequire(\"chRO8\");\nfunction $6d257360a3b98f14$export$19cd34ab73b4c7a7() {\n let timestamp;\n if ((0, $i4pca.default)() && (0, $chRO8.window).performance) {\n var _window$performance, _window$performance$n;\n timestamp = (0, $chRO8.window) === null || (0, $chRO8.window) === void 0 ? void 0 : (_window$performance = (0, $chRO8.window).performance) === null || _window$performance === void 0 ? void 0 : (_window$performance$n = _window$performance.now) === null || _window$performance$n === void 0 ? void 0 : _window$performance$n.call(_window$performance);\n } else if (\"hrtime\" in (0, $chRO8.process)) {\n var _process$hrtime;\n const timeParts = (0, $chRO8.process) === null || (0, $chRO8.process) === void 0 ? void 0 : (_process$hrtime = (0, $chRO8.process).hrtime) === null || _process$hrtime === void 0 ? void 0 : _process$hrtime.call((0, $chRO8.process));\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else timestamp = Date.now();\n return timestamp;\n}\n\n});\nparcelRegister(\"chRO8\", function(module, exports) {\n\n$parcel$export(module.exports, \"window\", function () { return $8f20cf9eb116a839$export$8291e5b88f90ce4; });\n$parcel$export(module.exports, \"process\", function () { return $8f20cf9eb116a839$export$e54fe5b0f43758f7; });\nconst $8f20cf9eb116a839$export$90b4d2ff6acb88af = globalThis;\nconst $8f20cf9eb116a839$export$82c2e460fb230c2a = globalThis.self || globalThis.window || globalThis.global;\nconst $8f20cf9eb116a839$export$8291e5b88f90ce4 = globalThis.window || globalThis.self || globalThis.global;\nconst $8f20cf9eb116a839$export$5a7bfc01df82fcd1 = globalThis.document || {};\nconst $8f20cf9eb116a839$export$e54fe5b0f43758f7 = globalThis.process || {};\nconst $8f20cf9eb116a839$export$e896d9a1b4631fa1 = globalThis.console;\nconst $8f20cf9eb116a839$export$ec7c8efa7f5790ae = globalThis.navigator || {};\n\n});\n\n\n\n\n\nparcelRegister(\"1UJbQ\", function(module, exports) {\n\n$parcel$export(module.exports, \"DEFAULT_LOADER_OPTIONS\", function () { return $164e1336511c725d$export$9e68d151f40453e2; });\n$parcel$export(module.exports, \"REMOVED_LOADER_OPTIONS\", function () { return $164e1336511c725d$export$1bd820ce6d516afc; });\n\nvar $ckgCq = parcelRequire(\"ckgCq\");\n\nvar $dqw8x = parcelRequire(\"dqw8x\");\nconst $164e1336511c725d$export$9e68d151f40453e2 = {\n fetch: null,\n mimeType: undefined,\n nothrow: false,\n log: new (0, $dqw8x.ConsoleLog)(),\n CDN: \"https://unpkg.com/@loaders.gl\",\n worker: true,\n maxConcurrency: 3,\n maxMobileConcurrency: 1,\n reuseWorkers: (0, $ckgCq.isBrowser),\n _nodeWorkers: false,\n _workerType: \"\",\n limit: 0,\n _limitMB: 0,\n batchSize: \"auto\",\n batchDebounceMs: 0,\n metadata: false,\n transforms: []\n};\nconst $164e1336511c725d$export$1bd820ce6d516afc = {\n throws: \"nothrow\",\n dataType: \"(no longer used)\",\n uri: \"baseUri\",\n method: \"fetch.method\",\n headers: \"fetch.headers\",\n body: \"fetch.body\",\n mode: \"fetch.mode\",\n credentials: \"fetch.credentials\",\n cache: \"fetch.cache\",\n redirect: \"fetch.redirect\",\n referrer: \"fetch.referrer\",\n referrerPolicy: \"fetch.referrerPolicy\",\n integrity: \"fetch.integrity\",\n keepalive: \"fetch.keepalive\",\n signal: \"fetch.signal\"\n};\n\n});\nparcelRegister(\"ckgCq\", function(module, exports) {\n\n$parcel$export(module.exports, \"isBrowser\", function () { return $8f943e68d95d209b$export$4e09c449d6c407f7; });\n\nvar $95Bnk = parcelRequire(\"95Bnk\");\nconst $8f943e68d95d209b$var$globals = {\n self: typeof self !== \"undefined\" && self,\n window: typeof window !== \"undefined\" && window,\n global: typeof $parcel$global !== \"undefined\" && $parcel$global,\n document: typeof document !== \"undefined\" && document\n};\nconst $8f943e68d95d209b$export$82c2e460fb230c2a = $8f943e68d95d209b$var$globals.self || $8f943e68d95d209b$var$globals.window || $8f943e68d95d209b$var$globals.global || {};\nconst $8f943e68d95d209b$export$8291e5b88f90ce4 = $8f943e68d95d209b$var$globals.window || $8f943e68d95d209b$var$globals.self || $8f943e68d95d209b$var$globals.global || {};\nconst $8f943e68d95d209b$export$90b4d2ff6acb88af = $8f943e68d95d209b$var$globals.global || $8f943e68d95d209b$var$globals.self || $8f943e68d95d209b$var$globals.window || {};\nconst $8f943e68d95d209b$export$5a7bfc01df82fcd1 = $8f943e68d95d209b$var$globals.document || {};\nconst $8f943e68d95d209b$export$4e09c449d6c407f7 = Boolean(typeof $95Bnk !== \"object\" || String($95Bnk) !== \"[object process]\" || true);\nconst $8f943e68d95d209b$export$3c901a5f01941a06 = typeof importScripts === \"function\";\nconst $8f943e68d95d209b$var$matches = typeof $95Bnk !== \"undefined\" && $95Bnk.version && /v([0-9]*)/.exec($95Bnk.version);\nconst $8f943e68d95d209b$export$168db21d314844a8 = $8f943e68d95d209b$var$matches && parseFloat($8f943e68d95d209b$var$matches[1]) || 0;\n\n});\n\n\n\n\nparcelRegister(\"a2G5Q\", function(module, exports) {\n\n$parcel$export(module.exports, \"parse\", function () { return $74fabe1f85c97231$export$98e6a39c04603d36; });\n\nvar $hDxa9 = parcelRequire(\"hDxa9\");\nvar $9HNbJ = parcelRequire(\"9HNbJ\");\n\nvar $fvV5p = parcelRequire(\"fvV5p\");\n\nvar $vyOkv = parcelRequire(\"vyOkv\");\n\nvar $coI4l = parcelRequire(\"coI4l\");\n\nvar $8mcNl = parcelRequire(\"8mcNl\");\n\nvar $gUP4G = parcelRequire(\"gUP4G\");\n\nvar $7VNil = parcelRequire(\"7VNil\");\n\nvar $l6GmM = parcelRequire(\"l6GmM\");\n\nvar $9pRlR = parcelRequire(\"9pRlR\");\nasync function $74fabe1f85c97231$export$98e6a39c04603d36(data, loaders, options, context) {\n (0, $hDxa9.assert)(!context || typeof context === \"object\");\n if (loaders && !Array.isArray(loaders) && !(0, $vyOkv.isLoaderObject)(loaders)) {\n context = undefined;\n options = loaders;\n loaders = undefined;\n }\n data = await data;\n options = options || {};\n const url = (0, $l6GmM.getResourceUrl)(data);\n const typedLoaders = loaders;\n const candidateLoaders = (0, $7VNil.getLoadersFromContext)(typedLoaders, context);\n const loader = await (0, $9pRlR.selectLoader)(data, candidateLoaders, options);\n if (!loader) return null;\n options = (0, $8mcNl.normalizeOptions)(options, loader, candidateLoaders, url);\n context = (0, $7VNil.getLoaderContext)({\n url: url,\n parse: $74fabe1f85c97231$export$98e6a39c04603d36,\n loaders: candidateLoaders\n }, options, context || null);\n return await $74fabe1f85c97231$var$parseWithLoader(loader, data, options, context);\n}\nasync function $74fabe1f85c97231$var$parseWithLoader(loader, data, options, context) {\n (0, $9HNbJ.validateWorkerVersion)(loader);\n if ((0, $coI4l.isResponse)(data)) {\n const response = data;\n const { ok: ok, redirected: redirected, status: status, statusText: statusText, type: type, url: url } = response;\n const headers = Object.fromEntries(response.headers.entries());\n context.response = {\n headers: headers,\n ok: ok,\n redirected: redirected,\n status: status,\n statusText: statusText,\n type: type,\n url: url\n };\n }\n data = await (0, $gUP4G.getArrayBufferOrStringFromData)(data, loader, options);\n if (loader.parseTextSync && typeof data === \"string\") {\n options.dataType = \"text\";\n return loader.parseTextSync(data, options, context, loader);\n }\n if ((0, $fvV5p.canParseWithWorker)(loader, options)) return await (0, $fvV5p.parseWithWorker)(loader, data, options, context, $74fabe1f85c97231$export$98e6a39c04603d36);\n if (loader.parseText && typeof data === \"string\") return await loader.parseText(data, options, context, loader);\n if (loader.parse) return await loader.parse(data, options, context, loader);\n (0, $hDxa9.assert)(!loader.parseSync);\n throw new Error(\"\".concat(loader.id, \" loader - no parser found and worker is disabled\"));\n}\n\n});\nparcelRegister(\"hDxa9\", function(module, exports) {\n\n$parcel$export(module.exports, \"assert\", function () { return $cd6fcd9989f88830$export$a7a9523472993e97; });\nfunction $cd6fcd9989f88830$export$a7a9523472993e97(condition, message) {\n if (!condition) throw new Error(message || \"loaders.gl assertion failed.\");\n}\n\n});\n\nparcelRegister(\"9HNbJ\", function(module, exports) {\n\n$parcel$export(module.exports, \"validateWorkerVersion\", function () { return $710e48f2b3e53882$export$95e2ee179a5692d5; });\n\nvar $hDxa9 = parcelRequire(\"hDxa9\");\n\nvar $9Dqnm = parcelRequire(\"9Dqnm\");\nfunction $710e48f2b3e53882$export$95e2ee179a5692d5(worker) {\n let coreVersion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, $9Dqnm.VERSION);\n (0, $hDxa9.assert)(worker, \"no worker provided\");\n const workerVersion = worker.version;\n if (!coreVersion || !workerVersion) return false;\n return true;\n}\nfunction $710e48f2b3e53882$var$parseVersion(version) {\n const parts = version.split(\".\").map(Number);\n return {\n major: parts[0],\n minor: parts[1]\n };\n}\n\n});\nparcelRegister(\"9Dqnm\", function(module, exports) {\n\n$parcel$export(module.exports, \"VERSION\", function () { return $703c37438c4b59f9$export$a4ad2735b021c132; });\nconst $703c37438c4b59f9$var$DEFAULT_VERSION = \"latest\";\nconst $703c37438c4b59f9$export$a4ad2735b021c132 = \"3.4.14\";\n\n});\n\n\nparcelRegister(\"fvV5p\", function(module, exports) {\n\n$parcel$export(module.exports, \"canParseWithWorker\", function () { return $b4b608629f0269ff$export$d28453530d9dde76; });\n$parcel$export(module.exports, \"parseWithWorker\", function () { return $b4b608629f0269ff$export$5fc1ede2a33af3b1; });\n\nvar $iOF6R = parcelRequire(\"iOF6R\");\nvar $iR3LN = parcelRequire(\"iR3LN\");\nvar $f3Jb7 = parcelRequire(\"f3Jb7\");\nfunction $b4b608629f0269ff$export$d28453530d9dde76(loader, options) {\n if (!(0, $f3Jb7.default).isSupported()) return false;\n if (!(0, $iR3LN.isBrowser) && !(options !== null && options !== void 0 && options._nodeWorkers)) return false;\n return loader.worker && (options === null || options === void 0 ? void 0 : options.worker);\n}\nasync function $b4b608629f0269ff$export$5fc1ede2a33af3b1(loader, data, options, context, parseOnMainThread) {\n const name = loader.id;\n const url = (0, $iOF6R.getWorkerURL)(loader, options);\n const workerFarm = (0, $f3Jb7.default).getWorkerFarm(options);\n const workerPool = workerFarm.getWorkerPool({\n name: name,\n url: url\n });\n options = JSON.parse(JSON.stringify(options));\n context = JSON.parse(JSON.stringify(context || {}));\n const job = await workerPool.startJob(\"process-on-worker\", $b4b608629f0269ff$var$onMessage.bind(null, parseOnMainThread));\n job.postMessage(\"process\", {\n input: data,\n options: options,\n context: context\n });\n const result = await job.result;\n return await result.result;\n}\nasync function $b4b608629f0269ff$var$onMessage(parseOnMainThread, job, type, payload) {\n switch(type){\n case \"done\":\n job.done(payload);\n break;\n case \"error\":\n job.error(new Error(payload.error));\n break;\n case \"process\":\n const { id: id, input: input, options: options } = payload;\n try {\n const result = await parseOnMainThread(input, options);\n job.postMessage(\"done\", {\n id: id,\n result: result\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : \"unknown error\";\n job.postMessage(\"error\", {\n id: id,\n error: message\n });\n }\n break;\n default:\n console.warn(\"parse-with-worker unknown message \".concat(type));\n }\n}\n\n});\nparcelRegister(\"iOF6R\", function(module, exports) {\n\n$parcel$export(module.exports, \"getWorkerURL\", function () { return $db2cc90afc1c6cf9$export$959914ac3383a118; });\n\nvar $hDxa9 = parcelRequire(\"hDxa9\");\n\nconst $db2cc90afc1c6cf9$var$NPM_TAG = \"latest\";\nconst $db2cc90afc1c6cf9$var$VERSION = \"3.4.14\";\nfunction $db2cc90afc1c6cf9$export$72db835c4de3b02e(worker) {\n const warning = worker.version !== $db2cc90afc1c6cf9$var$VERSION ? \" (worker-utils@\".concat($db2cc90afc1c6cf9$var$VERSION, \")\") : \"\";\n return \"\".concat(worker.name, \"@\").concat(worker.version).concat(warning);\n}\nfunction $db2cc90afc1c6cf9$export$959914ac3383a118(worker) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const workerOptions = options[worker.id] || {};\n const workerFile = \"\".concat(worker.id, \"-worker.js\");\n let url = workerOptions.workerUrl;\n if (!url && worker.id === \"compression\") url = options.workerUrl;\n if (options._workerType === \"test\") url = \"modules/\".concat(worker.module, \"/dist/\").concat(workerFile);\n if (!url) {\n let version = worker.version;\n if (version === \"latest\") version = $db2cc90afc1c6cf9$var$NPM_TAG;\n const versionTag = version ? \"@\".concat(version) : \"\";\n url = \"https://unpkg.com/@loaders.gl/\".concat(worker.module).concat(versionTag, \"/dist/\").concat(workerFile);\n }\n (0, $hDxa9.assert)(url);\n return url;\n}\n\n});\n\nparcelRegister(\"iR3LN\", function(module, exports) {\n\n$parcel$export(module.exports, \"global\", function () { return $dba019dda7b2ee8a$export$90b4d2ff6acb88af; });\n$parcel$export(module.exports, \"isBrowser\", function () { return $dba019dda7b2ee8a$export$4e09c449d6c407f7; });\n$parcel$export(module.exports, \"isWorker\", function () { return $dba019dda7b2ee8a$export$3c901a5f01941a06; });\n$parcel$export(module.exports, \"isMobile\", function () { return $dba019dda7b2ee8a$export$d0a8044dce8ff2fc; });\n\nvar $95Bnk = parcelRequire(\"95Bnk\");\nconst $dba019dda7b2ee8a$var$globals = {\n self: typeof self !== \"undefined\" && self,\n window: typeof window !== \"undefined\" && window,\n global: typeof $parcel$global !== \"undefined\" && $parcel$global,\n document: typeof document !== \"undefined\" && document\n};\nconst $dba019dda7b2ee8a$export$82c2e460fb230c2a = $dba019dda7b2ee8a$var$globals.self || $dba019dda7b2ee8a$var$globals.window || $dba019dda7b2ee8a$var$globals.global || {};\nconst $dba019dda7b2ee8a$export$8291e5b88f90ce4 = $dba019dda7b2ee8a$var$globals.window || $dba019dda7b2ee8a$var$globals.self || $dba019dda7b2ee8a$var$globals.global || {};\nconst $dba019dda7b2ee8a$export$90b4d2ff6acb88af = $dba019dda7b2ee8a$var$globals.global || $dba019dda7b2ee8a$var$globals.self || $dba019dda7b2ee8a$var$globals.window || {};\nconst $dba019dda7b2ee8a$export$5a7bfc01df82fcd1 = $dba019dda7b2ee8a$var$globals.document || {};\nconst $dba019dda7b2ee8a$export$4e09c449d6c407f7 = typeof $95Bnk !== \"object\" || String($95Bnk) !== \"[object process]\" || true;\nconst $dba019dda7b2ee8a$export$3c901a5f01941a06 = typeof importScripts === \"function\";\nconst $dba019dda7b2ee8a$export$d0a8044dce8ff2fc = typeof window !== \"undefined\" && typeof window.orientation !== \"undefined\";\nconst $dba019dda7b2ee8a$var$matches = typeof $95Bnk !== \"undefined\" && $95Bnk.version && /v([0-9]*)/.exec($95Bnk.version);\nconst $dba019dda7b2ee8a$export$168db21d314844a8 = $dba019dda7b2ee8a$var$matches && parseFloat($dba019dda7b2ee8a$var$matches[1]) || 0;\n\n});\n\nparcelRegister(\"f3Jb7\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $af6a2e4ea8fe2bd5$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $1F5uH = parcelRequire(\"1F5uH\");\n\nvar $gCUMs = parcelRequire(\"gCUMs\");\n\nvar $h89eS = parcelRequire(\"h89eS\");\nconst $af6a2e4ea8fe2bd5$var$DEFAULT_PROPS = {\n maxConcurrency: 3,\n maxMobileConcurrency: 1,\n reuseWorkers: true,\n onDebug: ()=>{}\n};\nclass $af6a2e4ea8fe2bd5$export$2e2bcd8739ae039 {\n static isSupported() {\n return (0, $h89eS.default).isSupported();\n }\n static getWorkerFarm() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n $af6a2e4ea8fe2bd5$export$2e2bcd8739ae039._workerFarm = $af6a2e4ea8fe2bd5$export$2e2bcd8739ae039._workerFarm || new $af6a2e4ea8fe2bd5$export$2e2bcd8739ae039({});\n $af6a2e4ea8fe2bd5$export$2e2bcd8739ae039._workerFarm.setProps(props);\n return $af6a2e4ea8fe2bd5$export$2e2bcd8739ae039._workerFarm;\n }\n destroy() {\n for (const workerPool of this.workerPools.values())workerPool.destroy();\n this.workerPools = new Map();\n }\n setProps(props) {\n this.props = (0, $2QP2i._)({}, this.props, props);\n for (const workerPool of this.workerPools.values())workerPool.setProps(this._getWorkerPoolProps());\n }\n getWorkerPool(options) {\n const { name: name, source: source, url: url } = options;\n let workerPool = this.workerPools.get(name);\n if (!workerPool) {\n workerPool = new (0, $gCUMs.default)({\n name: name,\n source: source,\n url: url\n });\n workerPool.setProps(this._getWorkerPoolProps());\n this.workerPools.set(name, workerPool);\n }\n return workerPool;\n }\n _getWorkerPoolProps() {\n return {\n maxConcurrency: this.props.maxConcurrency,\n maxMobileConcurrency: this.props.maxMobileConcurrency,\n reuseWorkers: this.props.reuseWorkers,\n onDebug: this.props.onDebug\n };\n }\n constructor(props){\n (0, $1F5uH.default)(this, \"props\", void 0);\n (0, $1F5uH.default)(this, \"workerPools\", new Map());\n this.props = (0, $2QP2i._)({}, $af6a2e4ea8fe2bd5$var$DEFAULT_PROPS);\n this.setProps(props);\n this.workerPools = new Map();\n }\n}\n(0, $1F5uH.default)($af6a2e4ea8fe2bd5$export$2e2bcd8739ae039, \"_workerFarm\", void 0);\n\n});\nparcelRegister(\"1F5uH\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $135de1d2feaed447$export$2e2bcd8739ae039; });\nfunction $135de1d2feaed447$export$2e2bcd8739ae039(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\n\n});\n\nparcelRegister(\"gCUMs\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c1ac3d5f98749d0d$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $1F5uH = parcelRequire(\"1F5uH\");\n\nvar $iR3LN = parcelRequire(\"iR3LN\");\n\nvar $h89eS = parcelRequire(\"h89eS\");\n\nvar $k6D2w = parcelRequire(\"k6D2w\");\nclass $c1ac3d5f98749d0d$export$2e2bcd8739ae039 {\n static isSupported() {\n return (0, $h89eS.default).isSupported();\n }\n destroy() {\n this.idleQueue.forEach((worker)=>worker.destroy());\n this.isDestroyed = true;\n }\n setProps(props) {\n this.props = (0, $2QP2i._)({}, this.props, props);\n if (props.name !== undefined) this.name = props.name;\n if (props.maxConcurrency !== undefined) this.maxConcurrency = props.maxConcurrency;\n if (props.maxMobileConcurrency !== undefined) this.maxMobileConcurrency = props.maxMobileConcurrency;\n if (props.reuseWorkers !== undefined) this.reuseWorkers = props.reuseWorkers;\n if (props.onDebug !== undefined) this.onDebug = props.onDebug;\n }\n async startJob(name) {\n let onMessage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (job, type, data)=>job.done(data);\n let onError = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : (job, error)=>job.error(error);\n const startPromise = new Promise((onStart)=>{\n this.jobQueue.push({\n name: name,\n onMessage: onMessage,\n onError: onError,\n onStart: onStart\n });\n return this;\n });\n this._startQueuedJob();\n return await startPromise;\n }\n async _startQueuedJob() {\n if (!this.jobQueue.length) return;\n const workerThread = this._getAvailableWorker();\n if (!workerThread) return;\n const queuedJob = this.jobQueue.shift();\n if (queuedJob) {\n this.onDebug({\n message: \"Starting job\",\n name: queuedJob.name,\n workerThread: workerThread,\n backlog: this.jobQueue.length\n });\n const job = new (0, $k6D2w.default)(queuedJob.name, workerThread);\n workerThread.onMessage = (data)=>queuedJob.onMessage(job, data.type, data.payload);\n workerThread.onError = (error)=>queuedJob.onError(job, error);\n queuedJob.onStart(job);\n try {\n await job.result;\n } finally{\n this.returnWorkerToQueue(workerThread);\n }\n }\n }\n returnWorkerToQueue(worker) {\n const shouldDestroyWorker = this.isDestroyed || !this.reuseWorkers || this.count > this._getMaxConcurrency();\n if (shouldDestroyWorker) {\n worker.destroy();\n this.count--;\n } else this.idleQueue.push(worker);\n if (!this.isDestroyed) this._startQueuedJob();\n }\n _getAvailableWorker() {\n if (this.idleQueue.length > 0) return this.idleQueue.shift() || null;\n if (this.count < this._getMaxConcurrency()) {\n this.count++;\n const name = \"\".concat(this.name.toLowerCase(), \" (#\").concat(this.count, \" of \").concat(this.maxConcurrency, \")\");\n return new (0, $h89eS.default)({\n name: name,\n source: this.source,\n url: this.url\n });\n }\n return null;\n }\n _getMaxConcurrency() {\n return (0, $iR3LN.isMobile) ? this.maxMobileConcurrency : this.maxConcurrency;\n }\n constructor(props){\n (0, $1F5uH.default)(this, \"name\", \"unnamed\");\n (0, $1F5uH.default)(this, \"source\", void 0);\n (0, $1F5uH.default)(this, \"url\", void 0);\n (0, $1F5uH.default)(this, \"maxConcurrency\", 1);\n (0, $1F5uH.default)(this, \"maxMobileConcurrency\", 1);\n (0, $1F5uH.default)(this, \"onDebug\", ()=>{});\n (0, $1F5uH.default)(this, \"reuseWorkers\", true);\n (0, $1F5uH.default)(this, \"props\", {});\n (0, $1F5uH.default)(this, \"jobQueue\", []);\n (0, $1F5uH.default)(this, \"idleQueue\", []);\n (0, $1F5uH.default)(this, \"count\", 0);\n (0, $1F5uH.default)(this, \"isDestroyed\", false);\n this.source = props.source;\n this.url = props.url;\n this.setProps(props);\n }\n}\n\n});\nparcelRegister(\"h89eS\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c78a59b39bf3d5a5$export$2e2bcd8739ae039; });\n\nvar $1F5uH = parcelRequire(\"1F5uH\");\n\nvar $e1B0q = parcelRequire(\"e1B0q\");\n\nvar $iR3LN = parcelRequire(\"iR3LN\");\n\nvar $hDxa9 = parcelRequire(\"hDxa9\");\n\nvar $e5bfg = parcelRequire(\"e5bfg\");\n\nvar $4MjqT = parcelRequire(\"4MjqT\");\nconst $c78a59b39bf3d5a5$var$NOOP = ()=>{};\nclass $c78a59b39bf3d5a5$export$2e2bcd8739ae039 {\n static isSupported() {\n return typeof Worker !== \"undefined\" && (0, $iR3LN.isBrowser) || typeof (0, $e1B0q.NodeWorker) !== \"undefined\" && !(0, $iR3LN.isBrowser);\n }\n destroy() {\n this.onMessage = $c78a59b39bf3d5a5$var$NOOP;\n this.onError = $c78a59b39bf3d5a5$var$NOOP;\n this.worker.terminate();\n this.terminated = true;\n }\n get isRunning() {\n return Boolean(this.onMessage);\n }\n postMessage(data, transferList) {\n transferList = transferList || (0, $4MjqT.getTransferList)(data);\n this.worker.postMessage(data, transferList);\n }\n _getErrorFromErrorEvent(event) {\n let message = \"Failed to load \";\n message += \"worker \".concat(this.name, \" from \").concat(this.url, \". \");\n if (event.message) message += \"\".concat(event.message, \" in \");\n if (event.lineno) message += \":\".concat(event.lineno, \":\").concat(event.colno);\n return new Error(message);\n }\n _createBrowserWorker() {\n this._loadableURL = (0, $e5bfg.getLoadableWorkerURL)({\n source: this.source,\n url: this.url\n });\n const worker = new Worker(this._loadableURL, {\n name: this.name\n });\n worker.onmessage = (event)=>{\n if (!event.data) this.onError(new Error(\"No data received\"));\n else this.onMessage(event.data);\n };\n worker.onerror = (error)=>{\n this.onError(this._getErrorFromErrorEvent(error));\n this.terminated = true;\n };\n worker.onmessageerror = (event)=>console.error(event);\n return worker;\n }\n _createNodeWorker() {\n let worker;\n if (this.url) {\n const absolute = this.url.includes(\":/\") || this.url.startsWith(\"/\");\n const url = absolute ? this.url : \"./\".concat(this.url);\n worker = new (0, $e1B0q.NodeWorker)(url, {\n eval: false\n });\n } else if (this.source) worker = new (0, $e1B0q.NodeWorker)(this.source, {\n eval: true\n });\n else throw new Error(\"no worker\");\n worker.on(\"message\", (data)=>{\n this.onMessage(data);\n });\n worker.on(\"error\", (error)=>{\n this.onError(error);\n });\n worker.on(\"exit\", (code)=>{});\n return worker;\n }\n constructor(props){\n (0, $1F5uH.default)(this, \"name\", void 0);\n (0, $1F5uH.default)(this, \"source\", void 0);\n (0, $1F5uH.default)(this, \"url\", void 0);\n (0, $1F5uH.default)(this, \"terminated\", false);\n (0, $1F5uH.default)(this, \"worker\", void 0);\n (0, $1F5uH.default)(this, \"onMessage\", void 0);\n (0, $1F5uH.default)(this, \"onError\", void 0);\n (0, $1F5uH.default)(this, \"_loadableURL\", \"\");\n const { name: name, source: source, url: url } = props;\n (0, $hDxa9.assert)(source || url);\n this.name = name;\n this.source = source;\n this.url = url;\n this.onMessage = $c78a59b39bf3d5a5$var$NOOP;\n this.onError = (error)=>console.log(error);\n this.worker = (0, $iR3LN.isBrowser) ? this._createBrowserWorker() : this._createNodeWorker();\n }\n}\n\n});\nparcelRegister(\"e1B0q\", function(module, exports) {\n\n$parcel$export(module.exports, \"NodeWorker\", function () { return $a35ddd4891abe8eb$export$5ff70a18b7b7760a; });\nclass $a35ddd4891abe8eb$export$5ff70a18b7b7760a {\n terminate() {}\n}\nconst $a35ddd4891abe8eb$export$cf4063c86d516c29 = null;\n\n});\n\nparcelRegister(\"e5bfg\", function(module, exports) {\n\n$parcel$export(module.exports, \"getLoadableWorkerURL\", function () { return $a40a4165801f443c$export$fb15ef3d6a383f22; });\n\nvar $hDxa9 = parcelRequire(\"hDxa9\");\nconst $a40a4165801f443c$var$workerURLCache = new Map();\nfunction $a40a4165801f443c$export$fb15ef3d6a383f22(props) {\n (0, $hDxa9.assert)(props.source && !props.url || !props.source && props.url);\n let workerURL = $a40a4165801f443c$var$workerURLCache.get(props.source || props.url);\n if (!workerURL) {\n if (props.url) {\n workerURL = $a40a4165801f443c$var$getLoadableWorkerURLFromURL(props.url);\n $a40a4165801f443c$var$workerURLCache.set(props.url, workerURL);\n }\n if (props.source) {\n workerURL = $a40a4165801f443c$var$getLoadableWorkerURLFromSource(props.source);\n $a40a4165801f443c$var$workerURLCache.set(props.source, workerURL);\n }\n }\n (0, $hDxa9.assert)(workerURL);\n return workerURL;\n}\nfunction $a40a4165801f443c$var$getLoadableWorkerURLFromURL(url) {\n if (!url.startsWith(\"http\")) return url;\n const workerSource = $a40a4165801f443c$var$buildScriptSource(url);\n return $a40a4165801f443c$var$getLoadableWorkerURLFromSource(workerSource);\n}\nfunction $a40a4165801f443c$var$getLoadableWorkerURLFromSource(workerSource) {\n const blob = new Blob([\n workerSource\n ], {\n type: \"application/javascript\"\n });\n return URL.createObjectURL(blob);\n}\nfunction $a40a4165801f443c$var$buildScriptSource(workerUrl) {\n return \"try {\\n importScripts('\".concat(workerUrl, \"');\\n} catch (error) {\\n console.error(error);\\n throw error;\\n}\");\n}\n\n});\n\nparcelRegister(\"4MjqT\", function(module, exports) {\n\n$parcel$export(module.exports, \"getTransferList\", function () { return $37aab808ef2d6bef$export$6464150b0a96b310; });\nfunction $37aab808ef2d6bef$export$6464150b0a96b310(object) {\n let recursive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n let transfers = arguments.length > 2 ? arguments[2] : undefined;\n const transfersSet = transfers || new Set();\n if (!object) ;\n else if ($37aab808ef2d6bef$var$isTransferable(object)) transfersSet.add(object);\n else if ($37aab808ef2d6bef$var$isTransferable(object.buffer)) transfersSet.add(object.buffer);\n else if (ArrayBuffer.isView(object)) ;\n else if (recursive && typeof object === \"object\") for(const key in object)$37aab808ef2d6bef$export$6464150b0a96b310(object[key], recursive, transfersSet);\n return transfers === undefined ? Array.from(transfersSet) : [];\n}\nfunction $37aab808ef2d6bef$var$isTransferable(object) {\n if (!object) return false;\n if (object instanceof ArrayBuffer) return true;\n if (typeof MessagePort !== \"undefined\" && object instanceof MessagePort) return true;\n if (typeof ImageBitmap !== \"undefined\" && object instanceof ImageBitmap) return true;\n if (typeof OffscreenCanvas !== \"undefined\" && object instanceof OffscreenCanvas) return true;\n return false;\n}\nfunction $37aab808ef2d6bef$export$6ab4b9699085844c(object) {\n if (object === null) return {};\n const clone = Object.assign({}, object);\n Object.keys(clone).forEach((key)=>{\n if (typeof object[key] === \"object\" && !ArrayBuffer.isView(object[key]) && !(object[key] instanceof Array)) clone[key] = $37aab808ef2d6bef$export$6ab4b9699085844c(object[key]);\n else if (typeof clone[key] === \"function\" || clone[key] instanceof RegExp) clone[key] = {};\n else clone[key] = object[key];\n });\n return clone;\n}\n\n});\n\n\nparcelRegister(\"k6D2w\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ea32a6a12c7358b1$export$2e2bcd8739ae039; });\n\nvar $1F5uH = parcelRequire(\"1F5uH\");\n\nvar $hDxa9 = parcelRequire(\"hDxa9\");\nclass $ea32a6a12c7358b1$export$2e2bcd8739ae039 {\n postMessage(type, payload) {\n this.workerThread.postMessage({\n source: \"loaders.gl\",\n type: type,\n payload: payload\n });\n }\n done(value) {\n (0, $hDxa9.assert)(this.isRunning);\n this.isRunning = false;\n this._resolve(value);\n }\n error(error) {\n (0, $hDxa9.assert)(this.isRunning);\n this.isRunning = false;\n this._reject(error);\n }\n constructor(jobName, workerThread){\n (0, $1F5uH.default)(this, \"name\", void 0);\n (0, $1F5uH.default)(this, \"workerThread\", void 0);\n (0, $1F5uH.default)(this, \"isRunning\", true);\n (0, $1F5uH.default)(this, \"result\", void 0);\n (0, $1F5uH.default)(this, \"_resolve\", ()=>{});\n (0, $1F5uH.default)(this, \"_reject\", ()=>{});\n this.name = jobName;\n this.workerThread = workerThread;\n this.result = new Promise((resolve, reject)=>{\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n}\n\n});\n\n\n\n\nparcelRegister(\"gUP4G\", function(module, exports) {\n\n$parcel$export(module.exports, \"getArrayBufferOrStringFromData\", function () { return $c5097ea1ad3be1ff$export$8f911a3af008501e; });\n\nvar $fRqWc = parcelRequire(\"fRqWc\");\n\nvar $coI4l = parcelRequire(\"coI4l\");\n\nvar $d2pyQ = parcelRequire(\"d2pyQ\");\n\nvar $iQYNB = parcelRequire(\"iQYNB\");\nconst $c5097ea1ad3be1ff$var$ERR_DATA = \"Cannot convert supplied data type\";\nfunction $c5097ea1ad3be1ff$export$1bdaa95e029beec8(data, loader, options) {\n if (loader.text && typeof data === \"string\") return data;\n if ((0, $coI4l.isBuffer)(data)) data = data.buffer;\n if (data instanceof ArrayBuffer) {\n const arrayBuffer = data;\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder(\"utf8\");\n return textDecoder.decode(arrayBuffer);\n }\n return arrayBuffer;\n }\n if (ArrayBuffer.isView(data)) {\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder(\"utf8\");\n return textDecoder.decode(data);\n }\n let arrayBuffer = data.buffer;\n const byteLength = data.byteLength || data.length;\n if (data.byteOffset !== 0 || byteLength !== arrayBuffer.byteLength) arrayBuffer = arrayBuffer.slice(data.byteOffset, data.byteOffset + byteLength);\n return arrayBuffer;\n }\n throw new Error($c5097ea1ad3be1ff$var$ERR_DATA);\n}\nasync function $c5097ea1ad3be1ff$export$8f911a3af008501e(data, loader, options) {\n const isArrayBuffer = data instanceof ArrayBuffer || ArrayBuffer.isView(data);\n if (typeof data === \"string\" || isArrayBuffer) return $c5097ea1ad3be1ff$export$1bdaa95e029beec8(data, loader, options);\n if ((0, $coI4l.isBlob)(data)) data = await (0, $iQYNB.makeResponse)(data);\n if ((0, $coI4l.isResponse)(data)) {\n const response = data;\n await (0, $iQYNB.checkResponse)(response);\n return loader.binary ? await response.arrayBuffer() : await response.text();\n }\n if ((0, $coI4l.isReadableStream)(data)) data = (0, $d2pyQ.makeIterator)(data, options);\n if ((0, $coI4l.isIterable)(data) || (0, $coI4l.isAsyncIterable)(data)) return (0, $fRqWc.concatenateArrayBuffersAsync)(data);\n throw new Error($c5097ea1ad3be1ff$var$ERR_DATA);\n}\nasync function $c5097ea1ad3be1ff$export$439b9c71d78e9e91(data, options) {\n if ((0, $coI4l.isIterator)(data)) return data;\n if ((0, $coI4l.isResponse)(data)) {\n const response = data;\n await (0, $iQYNB.checkResponse)(response);\n const body = await response.body;\n return (0, $d2pyQ.makeIterator)(body, options);\n }\n if ((0, $coI4l.isBlob)(data) || (0, $coI4l.isReadableStream)(data)) return (0, $d2pyQ.makeIterator)(data, options);\n if ((0, $coI4l.isAsyncIterable)(data)) return data[Symbol.asyncIterator]();\n return $c5097ea1ad3be1ff$var$getIterableFromData(data);\n}\nasync function $c5097ea1ad3be1ff$export$fcaec59c9cf8d502(data) {\n if ((0, $coI4l.isReadableStream)(data)) return data;\n if ((0, $coI4l.isResponse)(data)) return data.body;\n const response = await (0, $iQYNB.makeResponse)(data);\n return response.body;\n}\nfunction $c5097ea1ad3be1ff$var$getIterableFromData(data) {\n if (ArrayBuffer.isView(data)) return function* oneChunk() {\n yield data.buffer;\n }();\n if (data instanceof ArrayBuffer) return function* oneChunk() {\n yield data;\n }();\n if ((0, $coI4l.isIterator)(data)) return data;\n if ((0, $coI4l.isIterable)(data)) return data[Symbol.iterator]();\n throw new Error($c5097ea1ad3be1ff$var$ERR_DATA);\n}\n\n});\nparcelRegister(\"fRqWc\", function(module, exports) {\n\n$parcel$export(module.exports, \"concatenateArrayBuffersAsync\", function () { return $b8c0b37f1d19e0f1$export$b56e0390cdc1b1ca; });\n\nvar $grxRA = parcelRequire(\"grxRA\");\nasync function $b8c0b37f1d19e0f1$export$4b80e395e36b5a56(iterator, visitor) {\n while(true){\n const { done: done, value: value } = await iterator.next();\n if (done) {\n iterator.return();\n return;\n }\n const cancel = visitor(value);\n if (cancel) return;\n }\n}\nasync function $b8c0b37f1d19e0f1$export$b56e0390cdc1b1ca(asyncIterator) {\n const arrayBuffers = [];\n for await (const chunk of asyncIterator)arrayBuffers.push(chunk);\n return (0, $grxRA.concatenateArrayBuffers)(...arrayBuffers);\n}\nasync function $b8c0b37f1d19e0f1$export$8a08e0b4be2e1c13(asyncIterator) {\n const strings = [];\n for await (const chunk of asyncIterator)strings.push(chunk);\n return strings.join(\"\");\n}\n\n});\nparcelRegister(\"grxRA\", function(module, exports) {\n\n$parcel$export(module.exports, \"compareArrayBuffers\", function () { return $bf896f833451c014$export$a21c1249ab709443; });\n$parcel$export(module.exports, \"concatenateArrayBuffers\", function () { return $bf896f833451c014$export$9a3e9c78eb778da8; });\n$parcel$export(module.exports, \"sliceArrayBuffer\", function () { return $bf896f833451c014$export$1c6babfc8b593386; });\nfunction $bf896f833451c014$export$a21c1249ab709443(arrayBuffer1, arrayBuffer2, byteLength) {\n byteLength = byteLength || arrayBuffer1.byteLength;\n if (arrayBuffer1.byteLength < byteLength || arrayBuffer2.byteLength < byteLength) return false;\n const array1 = new Uint8Array(arrayBuffer1);\n const array2 = new Uint8Array(arrayBuffer2);\n for(let i = 0; i < array1.length; ++i){\n if (array1[i] !== array2[i]) return false;\n }\n return true;\n}\nfunction $bf896f833451c014$export$9a3e9c78eb778da8() {\n for(var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++)sources[_key] = arguments[_key];\n const sourceArrays = sources.map((source2)=>source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2);\n const byteLength = sourceArrays.reduce((length, typedArray)=>length + typedArray.byteLength, 0);\n const result = new Uint8Array(byteLength);\n let offset = 0;\n for (const sourceArray of sourceArrays){\n result.set(sourceArray, offset);\n offset += sourceArray.byteLength;\n }\n return result.buffer;\n}\nfunction $bf896f833451c014$export$b9f790e5e2031778() {\n for(var _len2 = arguments.length, typedArrays = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++)typedArrays[_key2] = arguments[_key2];\n const arrays = typedArrays;\n const TypedArrayConstructor = arrays && arrays.length > 1 && arrays[0].constructor || null;\n if (!TypedArrayConstructor) throw new Error('\"concatenateTypedArrays\" - incorrect quantity of arguments or arguments have incompatible data types');\n const sumLength = arrays.reduce((acc, value)=>acc + value.length, 0);\n const result = new TypedArrayConstructor(sumLength);\n let offset = 0;\n for (const array of arrays){\n result.set(array, offset);\n offset += array.length;\n }\n return result;\n}\nfunction $bf896f833451c014$export$1c6babfc8b593386(arrayBuffer, byteOffset, byteLength) {\n const subArray = byteLength !== undefined ? new Uint8Array(arrayBuffer).subarray(byteOffset, byteOffset + byteLength) : new Uint8Array(arrayBuffer).subarray(byteOffset);\n const arrayCopy = new Uint8Array(subArray);\n return arrayCopy.buffer;\n}\n\n});\n\n\nparcelRegister(\"d2pyQ\", function(module, exports) {\n\n$parcel$export(module.exports, \"makeIterator\", function () { return $97df4a26a6db127b$export$81c40ebfe660d3ca; });\n\nvar $dcQkc = parcelRequire(\"dcQkc\");\n\nvar $6DBWE = parcelRequire(\"6DBWE\");\n\nvar $tsOGf = parcelRequire(\"tsOGf\");\n\nvar $3Nej3 = parcelRequire(\"3Nej3\");\n\nvar $coI4l = parcelRequire(\"coI4l\");\nfunction $97df4a26a6db127b$export$81c40ebfe660d3ca(data, options) {\n if (typeof data === \"string\") return (0, $dcQkc.makeStringIterator)(data, options);\n if (data instanceof ArrayBuffer) return (0, $6DBWE.makeArrayBufferIterator)(data, options);\n if ((0, $coI4l.isBlob)(data)) return (0, $tsOGf.makeBlobIterator)(data, options);\n if ((0, $coI4l.isReadableStream)(data)) return (0, $3Nej3.makeStreamIterator)(data, options);\n if ((0, $coI4l.isResponse)(data)) {\n const response = data;\n return (0, $3Nej3.makeStreamIterator)(response.body, options);\n }\n throw new Error(\"makeIterator\");\n}\n\n});\nparcelRegister(\"dcQkc\", function(module, exports) {\n\n$parcel$export(module.exports, \"makeStringIterator\", function () { return $99d4fbf18100acc8$export$c51500126ec60dd4; });\nconst $99d4fbf18100acc8$var$DEFAULT_CHUNK_SIZE = 262144;\nfunction* $99d4fbf18100acc8$export$c51500126ec60dd4(string, options) {\n const chunkSize = (options === null || options === void 0 ? void 0 : options.chunkSize) || $99d4fbf18100acc8$var$DEFAULT_CHUNK_SIZE;\n let offset = 0;\n const textEncoder = new TextEncoder();\n while(offset < string.length){\n const chunkLength = Math.min(string.length - offset, chunkSize);\n const chunk = string.slice(offset, offset + chunkLength);\n offset += chunkLength;\n yield textEncoder.encode(chunk);\n }\n}\n\n});\n\nparcelRegister(\"6DBWE\", function(module, exports) {\n\n$parcel$export(module.exports, \"makeArrayBufferIterator\", function () { return $4d53d1af3e9d5d58$export$257e4501e13446d3; });\nconst $4d53d1af3e9d5d58$var$DEFAULT_CHUNK_SIZE = 262144;\nfunction $4d53d1af3e9d5d58$export$257e4501e13446d3(arrayBuffer) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function*() {\n const { chunkSize: chunkSize = $4d53d1af3e9d5d58$var$DEFAULT_CHUNK_SIZE } = options;\n let byteOffset = 0;\n while(byteOffset < arrayBuffer.byteLength){\n const chunkByteLength = Math.min(arrayBuffer.byteLength - byteOffset, chunkSize);\n const chunk = new ArrayBuffer(chunkByteLength);\n const sourceArray = new Uint8Array(arrayBuffer, byteOffset, chunkByteLength);\n const chunkArray = new Uint8Array(chunk);\n chunkArray.set(sourceArray);\n byteOffset += chunkByteLength;\n yield chunk;\n }\n }();\n}\n\n});\n\nparcelRegister(\"tsOGf\", function(module, exports) {\n\n$parcel$export(module.exports, \"makeBlobIterator\", function () { return $05890fe3e47fd9d8$export$97cfd032a0f445d2; });\nconst $05890fe3e47fd9d8$var$DEFAULT_CHUNK_SIZE = 1048576;\nasync function* $05890fe3e47fd9d8$export$97cfd032a0f445d2(blob, options) {\n const chunkSize = (options === null || options === void 0 ? void 0 : options.chunkSize) || $05890fe3e47fd9d8$var$DEFAULT_CHUNK_SIZE;\n let offset = 0;\n while(offset < blob.size){\n const end = offset + chunkSize;\n const chunk = await blob.slice(offset, end).arrayBuffer();\n offset = end;\n yield chunk;\n }\n}\n\n});\n\nparcelRegister(\"3Nej3\", function(module, exports) {\n\n$parcel$export(module.exports, \"makeStreamIterator\", function () { return $2c310b9d65c4021e$export$80460602c027534f; });\n\nvar $ckgCq = parcelRequire(\"ckgCq\");\nvar $7YX1b = parcelRequire(\"7YX1b\");\nfunction $2c310b9d65c4021e$export$80460602c027534f(stream, options) {\n return (0, $ckgCq.isBrowser) ? $2c310b9d65c4021e$var$makeBrowserStreamIterator(stream, options) : $2c310b9d65c4021e$var$makeNodeStreamIterator(stream, options);\n}\nasync function* $2c310b9d65c4021e$var$makeBrowserStreamIterator(stream, options) {\n const reader = stream.getReader();\n let nextBatchPromise;\n try {\n while(true){\n const currentBatchPromise = nextBatchPromise || reader.read();\n if (options !== null && options !== void 0 && options._streamReadAhead) nextBatchPromise = reader.read();\n const { done: done, value: value } = await currentBatchPromise;\n if (done) return;\n yield (0, $7YX1b.toArrayBuffer)(value);\n }\n } catch (error) {\n reader.releaseLock();\n }\n}\nasync function* $2c310b9d65c4021e$var$makeNodeStreamIterator(stream, options) {\n for await (const chunk of stream)yield (0, $7YX1b.toArrayBuffer)(chunk);\n}\n\n});\nparcelRegister(\"7YX1b\", function(module, exports) {\n\n$parcel$export(module.exports, \"toArrayBuffer\", function () { return $5cfbeac9aa699d5f$export$8b22b05f429b130c; });\n\nvar $3A8IA = parcelRequire(\"3A8IA\");\nfunction $5cfbeac9aa699d5f$export$a7884ebc965f8f54(value) {\n return value && typeof value === \"object\" && value.isBuffer;\n}\nfunction $5cfbeac9aa699d5f$export$fc336dbfaf62f18f(data) {\n return $3A8IA.toBuffer ? $3A8IA.toBuffer(data) : data;\n}\nfunction $5cfbeac9aa699d5f$export$8b22b05f429b130c(data) {\n if ($5cfbeac9aa699d5f$export$a7884ebc965f8f54(data)) return $3A8IA.toArrayBuffer(data);\n if (data instanceof ArrayBuffer) return data;\n if (ArrayBuffer.isView(data)) {\n if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) return data.buffer;\n return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);\n }\n if (typeof data === \"string\") {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n if (data && typeof data === \"object\" && data._toArrayBuffer) return data._toArrayBuffer();\n throw new Error(\"toArrayBuffer\");\n}\n\n});\nparcelRegister(\"3A8IA\", function(module, exports) {\n\n$parcel$export(module.exports, \"toArrayBuffer\", function () { return $29bb7f1b76ae3ddf$export$8b22b05f429b130c; });\n$parcel$export(module.exports, \"toBuffer\", function () { return $29bb7f1b76ae3ddf$export$fc336dbfaf62f18f; });\nfunction $29bb7f1b76ae3ddf$export$8b22b05f429b130c(buffer) {\n return buffer;\n}\nfunction $29bb7f1b76ae3ddf$export$fc336dbfaf62f18f(binaryData) {\n throw new Error(\"Buffer not supported in browser\");\n}\n\n});\n\n\n\n\n\nparcelRegister(\"7VNil\", function(module, exports) {\n\n$parcel$export(module.exports, \"getLoaderContext\", function () { return $5c641837d2f5cfde$export$c9fdcdb31d4bf289; });\n$parcel$export(module.exports, \"getLoadersFromContext\", function () { return $5c641837d2f5cfde$export$f7bef68ca326d506; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $j9Kyb = parcelRequire(\"j9Kyb\");\n\nvar $2z7S5 = parcelRequire(\"2z7S5\");\n\nvar $btvlZ = parcelRequire(\"btvlZ\");\nfunction $5c641837d2f5cfde$export$c9fdcdb31d4bf289(context, options, parentContext) {\n if (parentContext) return parentContext;\n const newContext = (0, $2QP2i._)({\n fetch: (0, $j9Kyb.getFetchFunction)(options, context)\n }, context);\n if (newContext.url) {\n const baseUrl = (0, $2z7S5.stripQueryString)(newContext.url);\n newContext.baseUrl = baseUrl;\n newContext.queryString = (0, $2z7S5.extractQueryString)(newContext.url);\n newContext.filename = (0, $btvlZ).filename(baseUrl);\n newContext.baseUrl = (0, $btvlZ).dirname(baseUrl);\n }\n if (!Array.isArray(newContext.loaders)) newContext.loaders = null;\n return newContext;\n}\nfunction $5c641837d2f5cfde$export$f7bef68ca326d506(loaders, context) {\n if (!context && loaders && !Array.isArray(loaders)) return loaders;\n let candidateLoaders;\n if (loaders) candidateLoaders = Array.isArray(loaders) ? loaders : [\n loaders\n ];\n if (context && context.loaders) {\n const contextLoaders = Array.isArray(context.loaders) ? context.loaders : [\n context.loaders\n ];\n candidateLoaders = candidateLoaders ? [\n ...candidateLoaders,\n ...contextLoaders\n ] : contextLoaders;\n }\n return candidateLoaders && candidateLoaders.length ? candidateLoaders : null;\n}\n\n});\nparcelRegister(\"btvlZ\", function(module, exports) {\n\n$parcel$export(module.exports, \"filename\", function () { return $85aab9553d1d93cd$export$f9107b66120eb036; });\n$parcel$export(module.exports, \"dirname\", function () { return $85aab9553d1d93cd$export$7f7b8152cc673abe; });\n$parcel$export(module.exports, \"join\", function () { return $85aab9553d1d93cd$export$f7e2c8231c57a8bd; });\n$parcel$export(module.exports, \"resolve\", function () { return $85aab9553d1d93cd$export$f7ad0328861e2f03; });\n\nvar $b8TAO = parcelRequire(\"b8TAO\");\nfunction $85aab9553d1d93cd$export$f9107b66120eb036(url) {\n const slashIndex = url ? url.lastIndexOf(\"/\") : -1;\n return slashIndex >= 0 ? url.substr(slashIndex + 1) : \"\";\n}\nfunction $85aab9553d1d93cd$export$7f7b8152cc673abe(url) {\n const slashIndex = url ? url.lastIndexOf(\"/\") : -1;\n return slashIndex >= 0 ? url.substr(0, slashIndex) : \"\";\n}\nfunction $85aab9553d1d93cd$export$f7e2c8231c57a8bd() {\n for(var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++)parts[_key] = arguments[_key];\n const separator = \"/\";\n parts = parts.map((part, index)=>{\n if (index) part = part.replace(new RegExp(\"^\".concat(separator)), \"\");\n if (index !== parts.length - 1) part = part.replace(new RegExp(\"\".concat(separator, \"$\")), \"\");\n return part;\n });\n return parts.join(separator);\n}\nfunction $85aab9553d1d93cd$export$f7ad0328861e2f03() {\n const paths = [];\n for(let _i = 0; _i < arguments.length; _i++)paths[_i] = _i < 0 || arguments.length <= _i ? undefined : arguments[_i];\n let resolvedPath = \"\";\n let resolvedAbsolute = false;\n let cwd;\n for(let i = paths.length - 1; i >= -1 && !resolvedAbsolute; i--){\n let path;\n if (i >= 0) path = paths[i];\n else {\n if (cwd === undefined) cwd = (0, $b8TAO.getCWD)();\n path = cwd;\n }\n if (path.length === 0) continue;\n resolvedPath = \"\".concat(path, \"/\").concat(resolvedPath);\n resolvedAbsolute = path.charCodeAt(0) === $85aab9553d1d93cd$var$SLASH;\n }\n resolvedPath = $85aab9553d1d93cd$var$normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n if (resolvedAbsolute) return \"/\".concat(resolvedPath);\n else if (resolvedPath.length > 0) return resolvedPath;\n return \".\";\n}\nconst $85aab9553d1d93cd$var$SLASH = 47;\nconst $85aab9553d1d93cd$var$DOT = 46;\nfunction $85aab9553d1d93cd$var$normalizeStringPosix(path, allowAboveRoot) {\n let res = \"\";\n let lastSlash = -1;\n let dots = 0;\n let code;\n let isAboveRoot = false;\n for(let i = 0; i <= path.length; ++i){\n if (i < path.length) code = path.charCodeAt(i);\n else if (code === $85aab9553d1d93cd$var$SLASH) break;\n else code = $85aab9553d1d93cd$var$SLASH;\n if (code === $85aab9553d1d93cd$var$SLASH) {\n if (lastSlash === i - 1 || dots === 1) ;\n else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || !isAboveRoot || res.charCodeAt(res.length - 1) !== $85aab9553d1d93cd$var$DOT || res.charCodeAt(res.length - 2) !== $85aab9553d1d93cd$var$DOT) {\n if (res.length > 2) {\n const start = res.length - 1;\n let j = start;\n for(; j >= 0; --j){\n if (res.charCodeAt(j) === $85aab9553d1d93cd$var$SLASH) break;\n }\n if (j !== start) {\n res = j === -1 ? \"\" : res.slice(0, j);\n lastSlash = i;\n dots = 0;\n isAboveRoot = false;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = \"\";\n lastSlash = i;\n dots = 0;\n isAboveRoot = false;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0) res += \"/..\";\n else res = \"..\";\n isAboveRoot = true;\n }\n } else {\n const slice = path.slice(lastSlash + 1, i);\n if (res.length > 0) res += \"/\".concat(slice);\n else res = slice;\n isAboveRoot = false;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === $85aab9553d1d93cd$var$DOT && dots !== -1) ++dots;\n else dots = -1;\n }\n return res;\n}\n\n});\nparcelRegister(\"b8TAO\", function(module, exports) {\n\n$parcel$export(module.exports, \"getCWD\", function () { return $81cb909c7b78704f$export$f89482d66a91eb15; });\n\nvar $95Bnk = parcelRequire(\"95Bnk\");\nfunction $81cb909c7b78704f$export$f89482d66a91eb15() {\n var _window$location;\n if (typeof $95Bnk !== \"undefined\" && typeof $95Bnk.cwd !== \"undefined\") return $95Bnk.cwd();\n const pathname = (_window$location = window.location) === null || _window$location === void 0 ? void 0 : _window$location.pathname;\n return (pathname === null || pathname === void 0 ? void 0 : pathname.slice(0, pathname.lastIndexOf(\"/\") + 1)) || \"\";\n}\n\n});\n\n\n\nparcelRegister(\"9pRlR\", function(module, exports) {\n\n$parcel$export(module.exports, \"selectLoader\", function () { return $6dafd55f4b8cbdf9$export$c633f22f376a9a73; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $grxRA = parcelRequire(\"grxRA\");\nvar $btvlZ = parcelRequire(\"btvlZ\");\n\nvar $vyOkv = parcelRequire(\"vyOkv\");\n\nvar $2KjuU = parcelRequire(\"2KjuU\");\n\nvar $l6GmM = parcelRequire(\"l6GmM\");\n\nvar $21Tvc = parcelRequire(\"21Tvc\");\n\nvar $coI4l = parcelRequire(\"coI4l\");\n\nvar $2z7S5 = parcelRequire(\"2z7S5\");\nconst $6dafd55f4b8cbdf9$var$EXT_PATTERN = /\\.([^.]+)$/;\nasync function $6dafd55f4b8cbdf9$export$c633f22f376a9a73(data) {\n let loaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n let options = arguments.length > 2 ? arguments[2] : undefined;\n let context = arguments.length > 3 ? arguments[3] : undefined;\n if (!$6dafd55f4b8cbdf9$var$validHTTPResponse(data)) return null;\n let loader = $6dafd55f4b8cbdf9$export$27c49426aa5beb44(data, loaders, (0, $edHbI._)((0, $2QP2i._)({}, options), {\n nothrow: true\n }), context);\n if (loader) return loader;\n if ((0, $coI4l.isBlob)(data)) {\n data = await data.slice(0, 10).arrayBuffer();\n loader = $6dafd55f4b8cbdf9$export$27c49426aa5beb44(data, loaders, options, context);\n }\n if (!loader && !(options !== null && options !== void 0 && options.nothrow)) throw new Error($6dafd55f4b8cbdf9$var$getNoValidLoaderMessage(data));\n return loader;\n}\nfunction $6dafd55f4b8cbdf9$export$27c49426aa5beb44(data) {\n let loaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n let options = arguments.length > 2 ? arguments[2] : undefined;\n let context = arguments.length > 3 ? arguments[3] : undefined;\n if (!$6dafd55f4b8cbdf9$var$validHTTPResponse(data)) return null;\n if (loaders && !Array.isArray(loaders)) return (0, $vyOkv.normalizeLoader)(loaders);\n let candidateLoaders = [];\n if (loaders) candidateLoaders = candidateLoaders.concat(loaders);\n if (!(options !== null && options !== void 0 && options.ignoreRegisteredLoaders)) candidateLoaders.push(...(0, $21Tvc.getRegisteredLoaders)());\n $6dafd55f4b8cbdf9$var$normalizeLoaders(candidateLoaders);\n const loader = $6dafd55f4b8cbdf9$var$selectLoaderInternal(data, candidateLoaders, options, context);\n if (!loader && !(options !== null && options !== void 0 && options.nothrow)) throw new Error($6dafd55f4b8cbdf9$var$getNoValidLoaderMessage(data));\n return loader;\n}\nfunction $6dafd55f4b8cbdf9$var$selectLoaderInternal(data, loaders, options, context) {\n const url = (0, $l6GmM.getResourceUrl)(data);\n const type = (0, $l6GmM.getResourceMIMEType)(data);\n const testUrl = (0, $2z7S5.stripQueryString)(url) || (context === null || context === void 0 ? void 0 : context.url);\n let loader = null;\n let reason = \"\";\n if (options !== null && options !== void 0 && options.mimeType) {\n loader = $6dafd55f4b8cbdf9$var$findLoaderByMIMEType(loaders, options === null || options === void 0 ? void 0 : options.mimeType);\n reason = \"match forced by supplied MIME type \".concat(options === null || options === void 0 ? void 0 : options.mimeType);\n }\n loader = loader || $6dafd55f4b8cbdf9$var$findLoaderByUrl(loaders, testUrl);\n reason = reason || (loader ? \"matched url \".concat(testUrl) : \"\");\n loader = loader || $6dafd55f4b8cbdf9$var$findLoaderByMIMEType(loaders, type);\n reason = reason || (loader ? \"matched MIME type \".concat(type) : \"\");\n loader = loader || $6dafd55f4b8cbdf9$var$findLoaderByInitialBytes(loaders, data);\n reason = reason || (loader ? \"matched initial data \".concat($6dafd55f4b8cbdf9$var$getFirstCharacters(data)) : \"\");\n loader = loader || $6dafd55f4b8cbdf9$var$findLoaderByMIMEType(loaders, options === null || options === void 0 ? void 0 : options.fallbackMimeType);\n reason = reason || (loader ? \"matched fallback MIME type \".concat(type) : \"\");\n if (reason) {\n var _loader;\n (0, $2KjuU.log).log(1, \"selectLoader selected \".concat((_loader = loader) === null || _loader === void 0 ? void 0 : _loader.name, \": \").concat(reason, \".\"));\n }\n return loader;\n}\nfunction $6dafd55f4b8cbdf9$var$validHTTPResponse(data) {\n if (data instanceof Response) {\n if (data.status === 204) return false;\n }\n return true;\n}\nfunction $6dafd55f4b8cbdf9$var$getNoValidLoaderMessage(data) {\n const url = (0, $l6GmM.getResourceUrl)(data);\n const type = (0, $l6GmM.getResourceMIMEType)(data);\n let message = \"No valid loader found (\";\n message += url ? \"\".concat((0, $btvlZ).filename(url), \", \") : \"no url provided, \";\n message += \"MIME type: \".concat(type ? '\"'.concat(type, '\"') : \"not provided\", \", \");\n const firstCharacters = data ? $6dafd55f4b8cbdf9$var$getFirstCharacters(data) : \"\";\n message += firstCharacters ? ' first bytes: \"'.concat(firstCharacters, '\"') : \"first bytes: not available\";\n message += \")\";\n return message;\n}\nfunction $6dafd55f4b8cbdf9$var$normalizeLoaders(loaders) {\n for (const loader of loaders)(0, $vyOkv.normalizeLoader)(loader);\n}\nfunction $6dafd55f4b8cbdf9$var$findLoaderByUrl(loaders, url) {\n const match = url && $6dafd55f4b8cbdf9$var$EXT_PATTERN.exec(url);\n const extension = match && match[1];\n return extension ? $6dafd55f4b8cbdf9$var$findLoaderByExtension(loaders, extension) : null;\n}\nfunction $6dafd55f4b8cbdf9$var$findLoaderByExtension(loaders, extension) {\n extension = extension.toLowerCase();\n for (const loader of loaders)for (const loaderExtension of loader.extensions){\n if (loaderExtension.toLowerCase() === extension) return loader;\n }\n return null;\n}\nfunction $6dafd55f4b8cbdf9$var$findLoaderByMIMEType(loaders, mimeType) {\n for (const loader of loaders){\n if (loader.mimeTypes && loader.mimeTypes.includes(mimeType)) return loader;\n if (mimeType === \"application/x.\".concat(loader.id)) return loader;\n }\n return null;\n}\nfunction $6dafd55f4b8cbdf9$var$findLoaderByInitialBytes(loaders, data) {\n if (!data) return null;\n for (const loader of loaders){\n if (typeof data === \"string\") {\n if ($6dafd55f4b8cbdf9$var$testDataAgainstText(data, loader)) return loader;\n } else if (ArrayBuffer.isView(data)) {\n if ($6dafd55f4b8cbdf9$var$testDataAgainstBinary(data.buffer, data.byteOffset, loader)) return loader;\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n if ($6dafd55f4b8cbdf9$var$testDataAgainstBinary(data, byteOffset, loader)) return loader;\n }\n }\n return null;\n}\nfunction $6dafd55f4b8cbdf9$var$testDataAgainstText(data, loader) {\n if (loader.testText) return loader.testText(data);\n const tests = Array.isArray(loader.tests) ? loader.tests : [\n loader.tests\n ];\n return tests.some((test)=>data.startsWith(test));\n}\nfunction $6dafd55f4b8cbdf9$var$testDataAgainstBinary(data, byteOffset, loader) {\n const tests = Array.isArray(loader.tests) ? loader.tests : [\n loader.tests\n ];\n return tests.some((test)=>$6dafd55f4b8cbdf9$var$testBinary(data, byteOffset, loader, test));\n}\nfunction $6dafd55f4b8cbdf9$var$testBinary(data, byteOffset, loader, test) {\n if (test instanceof ArrayBuffer) return (0, $grxRA.compareArrayBuffers)(test, data, test.byteLength);\n switch(typeof test){\n case \"function\":\n return test(data, loader);\n case \"string\":\n const magic = $6dafd55f4b8cbdf9$var$getMagicString(data, byteOffset, test.length);\n return test === magic;\n default:\n return false;\n }\n}\nfunction $6dafd55f4b8cbdf9$var$getFirstCharacters(data) {\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;\n if (typeof data === \"string\") return data.slice(0, length);\n else if (ArrayBuffer.isView(data)) return $6dafd55f4b8cbdf9$var$getMagicString(data.buffer, data.byteOffset, length);\n else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n return $6dafd55f4b8cbdf9$var$getMagicString(data, byteOffset, length);\n }\n return \"\";\n}\nfunction $6dafd55f4b8cbdf9$var$getMagicString(arrayBuffer, byteOffset, length) {\n if (arrayBuffer.byteLength < byteOffset + length) return \"\";\n const dataView = new DataView(arrayBuffer);\n let magic = \"\";\n for(let i = 0; i < length; i++)magic += String.fromCharCode(dataView.getUint8(byteOffset + i));\n return magic;\n}\n\n});\nparcelRegister(\"2KjuU\", function(module, exports) {\n\n$parcel$export(module.exports, \"log\", function () { return $1fff0077549acd65$export$bef1f36f5486a6a3; });\nparcelRequire(\"d0O9t\");\nvar $dwYH5 = parcelRequire(\"dwYH5\");\nconst $1fff0077549acd65$export$bef1f36f5486a6a3 = new (0, $dwYH5.Log)({\n id: \"loaders.gl\"\n});\n\n});\n\nparcelRegister(\"21Tvc\", function(module, exports) {\n\n$parcel$export(module.exports, \"registerLoaders\", function () { return $17a6ba572a1d1c74$export$74069a1a10fa28e5; });\n$parcel$export(module.exports, \"getRegisteredLoaders\", function () { return $17a6ba572a1d1c74$export$8fa02447f82aef84; });\n\nvar $vyOkv = parcelRequire(\"vyOkv\");\n\nvar $8mcNl = parcelRequire(\"8mcNl\");\nconst $17a6ba572a1d1c74$var$getGlobalLoaderRegistry = ()=>{\n const state = (0, $8mcNl.getGlobalLoaderState)();\n state.loaderRegistry = state.loaderRegistry || [];\n return state.loaderRegistry;\n};\nfunction $17a6ba572a1d1c74$export$74069a1a10fa28e5(loaders) {\n const loaderRegistry = $17a6ba572a1d1c74$var$getGlobalLoaderRegistry();\n loaders = Array.isArray(loaders) ? loaders : [\n loaders\n ];\n for (const loader of loaders){\n const normalizedLoader = (0, $vyOkv.normalizeLoader)(loader);\n if (!loaderRegistry.find((registeredLoader)=>normalizedLoader === registeredLoader)) loaderRegistry.unshift(normalizedLoader);\n }\n}\nfunction $17a6ba572a1d1c74$export$8fa02447f82aef84() {\n return $17a6ba572a1d1c74$var$getGlobalLoaderRegistry();\n}\nfunction $17a6ba572a1d1c74$export$a20f34177d9a64c6() {\n const state = (0, $8mcNl.getGlobalLoaderState)();\n state.loaderRegistry = [];\n}\n\n});\n\n\n\n\n\n\nparcelRegister(\"7VEAA\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $5c5d57721819d245$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $lEQUF = parcelRequire(\"lEQUF\");\n\nvar $7gQQK = parcelRequire(\"7gQQK\");\nvar $b8HWT = parcelRequire(\"b8HWT\");\nvar $i46md = parcelRequire(\"i46md\");\nvar $7UxuR = parcelRequire(\"7UxuR\");\nvar $jRSMz = parcelRequire(\"jRSMz\");\n\nvar $68aPy = parcelRequire(\"68aPy\");\nvar $cxTxU = parcelRequire(\"cxTxU\");\nvar $tIWfJ = parcelRequire(\"tIWfJ\");\nvar $b2F4S = parcelRequire(\"b2F4S\");\n\nvar $dzzPJ = parcelRequire(\"dzzPJ\");\n\nvar $jrNr2 = parcelRequire(\"jrNr2\");\n\nvar $a5Son = parcelRequire(\"a5Son\");\n\nvar $43aPw = parcelRequire(\"43aPw\");\nconst $5c5d57721819d245$var$DEFAULT_COLOR = [\n 0,\n 0,\n 0,\n 255\n];\nconst $5c5d57721819d245$var$defaultProps = {\n filled: true,\n extruded: false,\n wireframe: false,\n _normalize: true,\n _windingOrder: \"CW\",\n _full3d: false,\n elevationScale: {\n type: \"number\",\n min: 0,\n value: 1\n },\n getPolygon: {\n type: \"accessor\",\n value: (f)=>f.polygon\n },\n getElevation: {\n type: \"accessor\",\n value: 1000\n },\n getFillColor: {\n type: \"accessor\",\n value: $5c5d57721819d245$var$DEFAULT_COLOR\n },\n getLineColor: {\n type: \"accessor\",\n value: $5c5d57721819d245$var$DEFAULT_COLOR\n },\n material: true\n};\nconst $5c5d57721819d245$var$ATTRIBUTE_TRANSITION = {\n enter: (value, chunk)=>{\n return chunk.length ? chunk.subarray(chunk.length - value.length) : value;\n }\n};\nclass $5c5d57721819d245$export$2e2bcd8739ae039 extends (0, $i46md.default) {\n getShaders(type) {\n return super.getShaders({\n vs: type === \"top\" ? (0, $jrNr2.default) : (0, $a5Son.default),\n fs: $43aPw.default,\n defines: {\n RING_WINDING_ORDER_CW: !this.props._normalize && this.props._windingOrder === \"CCW\" ? 0 : 1\n },\n modules: [\n (0, $jRSMz.default),\n (0, $b8HWT.gouraudLighting),\n (0, $7UxuR.default)\n ]\n });\n }\n get wrapLongitude() {\n return false;\n }\n initializeState() {\n const { gl: gl, viewport: viewport } = this.context;\n let { coordinateSystem: coordinateSystem } = this.props;\n const { _full3d: _full3d } = this.props;\n if (viewport.isGeospatial && coordinateSystem === (0, $7gQQK.COORDINATE_SYSTEM).DEFAULT) coordinateSystem = (0, $7gQQK.COORDINATE_SYSTEM).LNGLAT;\n let preproject;\n if (coordinateSystem === (0, $7gQQK.COORDINATE_SYSTEM).LNGLAT) {\n if (_full3d) preproject = viewport.projectPosition.bind(viewport);\n else preproject = viewport.projectFlat.bind(viewport);\n }\n this.setState({\n numInstances: 0,\n polygonTesselator: new (0, $dzzPJ.default)({\n preproject: preproject,\n fp64: this.use64bitPositions(),\n IndexType: !gl || (0, $tIWfJ.hasFeatures)(gl, (0, $68aPy.FEATURES).ELEMENT_INDEX_UINT32) ? Uint32Array : Uint16Array\n })\n });\n const attributeManager = this.getAttributeManager();\n const noAlloc = true;\n attributeManager.remove([\n \"instancePickingColors\"\n ]);\n attributeManager.add({\n indices: {\n size: 1,\n isIndexed: true,\n update: this.calculateIndices,\n noAlloc: noAlloc\n },\n positions: {\n size: 3,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: $5c5d57721819d245$var$ATTRIBUTE_TRANSITION,\n accessor: \"getPolygon\",\n update: this.calculatePositions,\n noAlloc: noAlloc,\n shaderAttributes: {\n positions: {\n vertexOffset: 0,\n divisor: 0\n },\n instancePositions: {\n vertexOffset: 0,\n divisor: 1\n },\n nextPositions: {\n vertexOffset: 1,\n divisor: 1\n }\n }\n },\n vertexValid: {\n size: 1,\n divisor: 1,\n type: 5121,\n update: this.calculateVertexValid,\n noAlloc: noAlloc\n },\n elevations: {\n size: 1,\n transition: $5c5d57721819d245$var$ATTRIBUTE_TRANSITION,\n accessor: \"getElevation\",\n shaderAttributes: {\n elevations: {\n divisor: 0\n },\n instanceElevations: {\n divisor: 1\n }\n }\n },\n fillColors: {\n size: this.props.colorFormat.length,\n type: 5121,\n normalized: true,\n transition: $5c5d57721819d245$var$ATTRIBUTE_TRANSITION,\n accessor: \"getFillColor\",\n defaultValue: $5c5d57721819d245$var$DEFAULT_COLOR,\n shaderAttributes: {\n fillColors: {\n divisor: 0\n },\n instanceFillColors: {\n divisor: 1\n }\n }\n },\n lineColors: {\n size: this.props.colorFormat.length,\n type: 5121,\n normalized: true,\n transition: $5c5d57721819d245$var$ATTRIBUTE_TRANSITION,\n accessor: \"getLineColor\",\n defaultValue: $5c5d57721819d245$var$DEFAULT_COLOR,\n shaderAttributes: {\n lineColors: {\n divisor: 0\n },\n instanceLineColors: {\n divisor: 1\n }\n }\n },\n pickingColors: {\n size: 3,\n type: 5121,\n accessor: (object, { index: index, target: value })=>this.encodePickingColor(object && object.__source ? object.__source.index : index, value),\n shaderAttributes: {\n pickingColors: {\n divisor: 0\n },\n instancePickingColors: {\n divisor: 1\n }\n }\n }\n });\n }\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n const { index: index } = info;\n const { data: data } = this.props;\n if (data[0] && data[0].__source) info.object = data.find((d)=>d.__source.index === index);\n return info;\n }\n disablePickingIndex(objectIndex) {\n const { data: data } = this.props;\n if (data[0] && data[0].__source) {\n for(let i = 0; i < data.length; i++)if (data[i].__source.index === objectIndex) this._disablePickingIndex(i);\n } else super.disablePickingIndex(objectIndex);\n }\n draw({ uniforms: uniforms }) {\n const { extruded: extruded, filled: filled, wireframe: wireframe, elevationScale: elevationScale } = this.props;\n const { topModel: topModel, sideModel: sideModel, polygonTesselator: polygonTesselator } = this.state;\n const renderUniforms = (0, $edHbI._)((0, $2QP2i._)({}, uniforms), {\n extruded: Boolean(extruded),\n elevationScale: elevationScale\n });\n if (sideModel) {\n sideModel.setInstanceCount(polygonTesselator.instanceCount - 1);\n sideModel.setUniforms(renderUniforms);\n if (wireframe) {\n sideModel.setDrawMode(3);\n sideModel.setUniforms({\n isWireframe: true\n }).draw();\n }\n if (filled) {\n sideModel.setDrawMode(6);\n sideModel.setUniforms({\n isWireframe: false\n }).draw();\n }\n }\n if (topModel) {\n topModel.setVertexCount(polygonTesselator.vertexCount);\n topModel.setUniforms(renderUniforms).draw();\n }\n }\n updateState(updateParams) {\n super.updateState(updateParams);\n this.updateGeometry(updateParams);\n const { props: props, oldProps: oldProps, changeFlags: changeFlags } = updateParams;\n const attributeManager = this.getAttributeManager();\n const regenerateModels = changeFlags.extensionsChanged || props.filled !== oldProps.filled || props.extruded !== oldProps.extruded;\n if (regenerateModels) {\n var _this$state$models;\n (_this$state$models = this.state.models) === null || _this$state$models === void 0 || _this$state$models.forEach((model)=>model.delete());\n this.setState(this._getModels(this.context.gl));\n attributeManager.invalidateAll();\n }\n }\n updateGeometry({ props: props, oldProps: oldProps, changeFlags: changeFlags }) {\n const geometryConfigChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPolygon);\n if (geometryConfigChanged) {\n const { polygonTesselator: polygonTesselator } = this.state;\n const buffers = props.data.attributes || {};\n polygonTesselator.updateGeometry({\n data: props.data,\n normalize: props._normalize,\n geometryBuffer: buffers.getPolygon,\n buffers: buffers,\n getGeometry: props.getPolygon,\n positionFormat: props.positionFormat,\n wrapLongitude: props.wrapLongitude,\n resolution: this.context.viewport.resolution,\n fp64: this.use64bitPositions(),\n dataChanged: changeFlags.dataChanged,\n full3d: props._full3d\n });\n this.setState({\n numInstances: polygonTesselator.instanceCount,\n startIndices: polygonTesselator.vertexStarts\n });\n if (!changeFlags.dataChanged) this.getAttributeManager().invalidateAll();\n }\n }\n _getModels(gl) {\n const { id: id, filled: filled, extruded: extruded } = this.props;\n let topModel;\n let sideModel;\n if (filled) {\n const shaders = this.getShaders(\"top\");\n shaders.defines.NON_INSTANCED_MODEL = 1;\n topModel = new (0, $b2F4S.default)(gl, (0, $edHbI._)((0, $2QP2i._)({}, shaders), {\n id: \"\".concat(id, \"-top\"),\n drawMode: 4,\n attributes: {\n vertexPositions: new Float32Array([\n 0,\n 1\n ])\n },\n uniforms: {\n isWireframe: false,\n isSideVertex: false\n },\n vertexCount: 0,\n isIndexed: true\n }));\n }\n if (extruded) {\n sideModel = new (0, $b2F4S.default)(gl, (0, $edHbI._)((0, $2QP2i._)({}, this.getShaders(\"side\")), {\n id: \"\".concat(id, \"-side\"),\n geometry: new (0, $cxTxU.default)({\n drawMode: 1,\n vertexCount: 4,\n attributes: {\n vertexPositions: {\n size: 2,\n value: new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1\n ])\n }\n }\n }),\n instanceCount: 0,\n isInstanced: 1\n }));\n sideModel.userData.excludeAttributes = {\n indices: true\n };\n }\n return {\n models: [\n sideModel,\n topModel\n ].filter(Boolean),\n topModel: topModel,\n sideModel: sideModel\n };\n }\n calculateIndices(attribute) {\n const { polygonTesselator: polygonTesselator } = this.state;\n attribute.startIndices = polygonTesselator.indexStarts;\n attribute.value = polygonTesselator.get(\"indices\");\n }\n calculatePositions(attribute) {\n const { polygonTesselator: polygonTesselator } = this.state;\n attribute.startIndices = polygonTesselator.vertexStarts;\n attribute.value = polygonTesselator.get(\"positions\");\n }\n calculateVertexValid(attribute) {\n attribute.value = this.state.polygonTesselator.get(\"vertexValid\");\n }\n constructor(...args){\n super(...args);\n (0, $lEQUF.default)(this, \"state\", void 0);\n }\n}\n(0, $lEQUF.default)($5c5d57721819d245$export$2e2bcd8739ae039, \"defaultProps\", $5c5d57721819d245$var$defaultProps);\n(0, $lEQUF.default)($5c5d57721819d245$export$2e2bcd8739ae039, \"layerName\", \"SolidPolygonLayer\");\n\n});\nparcelRegister(\"b8HWT\", function(module, exports) {\n\n$parcel$export(module.exports, \"gouraudLighting\", function () { return $81c2886745cee65b$export$cd1f8a021f9faae3; });\n$parcel$export(module.exports, \"phongLighting\", function () { return $81c2886745cee65b$export$99431f9f19e64025; });\n\nvar $buD3P = parcelRequire(\"buD3P\");\n\nvar $5xLHO = parcelRequire(\"5xLHO\");\nconst $81c2886745cee65b$var$INITIAL_MODULE_OPTIONS = {};\nfunction $81c2886745cee65b$var$getMaterialUniforms(material) {\n const { ambient: ambient = 0.35, diffuse: diffuse = 0.6, shininess: shininess = 32, specularColor: specularColor = [\n 30,\n 30,\n 30\n ] } = material;\n return {\n lighting_uAmbient: ambient,\n lighting_uDiffuse: diffuse,\n lighting_uShininess: shininess,\n lighting_uSpecularColor: specularColor.map((x)=>x / 255)\n };\n}\nfunction $81c2886745cee65b$var$getUniforms() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : $81c2886745cee65b$var$INITIAL_MODULE_OPTIONS;\n if (!(\"material\" in opts)) return {};\n const { material: material } = opts;\n if (!material) return {\n lighting_uEnabled: false\n };\n return $81c2886745cee65b$var$getMaterialUniforms(material);\n}\nconst $81c2886745cee65b$export$cd1f8a021f9faae3 = {\n name: \"gouraud-lighting\",\n dependencies: [\n (0, $buD3P.lights)\n ],\n vs: (0, $5xLHO.default),\n defines: {\n LIGHTING_VERTEX: 1\n },\n getUniforms: $81c2886745cee65b$var$getUniforms\n};\nconst $81c2886745cee65b$export$99431f9f19e64025 = {\n name: \"phong-lighting\",\n dependencies: [\n (0, $buD3P.lights)\n ],\n fs: (0, $5xLHO.default),\n defines: {\n LIGHTING_FRAGMENT: 1\n },\n getUniforms: $81c2886745cee65b$var$getUniforms\n};\n\n});\nparcelRegister(\"buD3P\", function(module, exports) {\n\n$parcel$export(module.exports, \"lights\", function () { return $85e0cbb2edd4d3b2$export$7c1fce12d7eeb101; });\n\nvar $lrhtR = parcelRequire(\"lrhtR\");\nconst $85e0cbb2edd4d3b2$var$INITIAL_MODULE_OPTIONS = {\n lightSources: {}\n};\nfunction $85e0cbb2edd4d3b2$var$convertColor() {\n let { color: color = [\n 0,\n 0,\n 0\n ], intensity: intensity = 1.0 } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return color.map((component)=>component * intensity / 255.0);\n}\nfunction $85e0cbb2edd4d3b2$var$getLightSourceUniforms(_ref) {\n let { ambientLight: ambientLight, pointLights: pointLights = [], directionalLights: directionalLights = [] } = _ref;\n const lightSourceUniforms = {};\n if (ambientLight) lightSourceUniforms[\"lighting_uAmbientLight.color\"] = $85e0cbb2edd4d3b2$var$convertColor(ambientLight);\n else lightSourceUniforms[\"lighting_uAmbientLight.color\"] = [\n 0,\n 0,\n 0\n ];\n pointLights.forEach((pointLight, index)=>{\n lightSourceUniforms[\"lighting_uPointLight[\".concat(index, \"].color\")] = $85e0cbb2edd4d3b2$var$convertColor(pointLight);\n lightSourceUniforms[\"lighting_uPointLight[\".concat(index, \"].position\")] = pointLight.position;\n lightSourceUniforms[\"lighting_uPointLight[\".concat(index, \"].attenuation\")] = pointLight.attenuation || [\n 1,\n 0,\n 0\n ];\n });\n lightSourceUniforms.lighting_uPointLightCount = pointLights.length;\n directionalLights.forEach((directionalLight, index)=>{\n lightSourceUniforms[\"lighting_uDirectionalLight[\".concat(index, \"].color\")] = $85e0cbb2edd4d3b2$var$convertColor(directionalLight);\n lightSourceUniforms[\"lighting_uDirectionalLight[\".concat(index, \"].direction\")] = directionalLight.direction;\n });\n lightSourceUniforms.lighting_uDirectionalLightCount = directionalLights.length;\n return lightSourceUniforms;\n}\nfunction $85e0cbb2edd4d3b2$var$getUniforms() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : $85e0cbb2edd4d3b2$var$INITIAL_MODULE_OPTIONS;\n if (\"lightSources\" in opts) {\n const { ambientLight: ambientLight, pointLights: pointLights, directionalLights: directionalLights } = opts.lightSources || {};\n const hasLights = ambientLight || pointLights && pointLights.length > 0 || directionalLights && directionalLights.length > 0;\n if (!hasLights) return {\n lighting_uEnabled: false\n };\n return Object.assign({}, $85e0cbb2edd4d3b2$var$getLightSourceUniforms({\n ambientLight: ambientLight,\n pointLights: pointLights,\n directionalLights: directionalLights\n }), {\n lighting_uEnabled: true\n });\n }\n if (\"lights\" in opts) {\n const lightSources = {\n pointLights: [],\n directionalLights: []\n };\n for (const light of opts.lights || [])switch(light.type){\n case \"ambient\":\n lightSources.ambientLight = light;\n break;\n case \"directional\":\n lightSources.directionalLights.push(light);\n break;\n case \"point\":\n lightSources.pointLights.push(light);\n break;\n default:\n }\n return $85e0cbb2edd4d3b2$var$getUniforms({\n lightSources: lightSources\n });\n }\n return {};\n}\nconst $85e0cbb2edd4d3b2$export$7c1fce12d7eeb101 = {\n name: \"lights\",\n vs: (0, $lrhtR.default),\n fs: (0, $lrhtR.default),\n getUniforms: $85e0cbb2edd4d3b2$var$getUniforms,\n defines: {\n MAX_LIGHTS: 3\n }\n};\n\n});\nparcelRegister(\"lrhtR\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $f9b9ade30cd85b49$export$2e2bcd8739ae039; });\nvar $f9b9ade30cd85b49$export$2e2bcd8739ae039 = \"#if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))\\n\\nstruct AmbientLight {\\n vec3 color;\\n};\\n\\nstruct PointLight {\\n vec3 color;\\n vec3 position;\\n vec3 attenuation;\\n};\\n\\nstruct DirectionalLight {\\n vec3 color;\\n vec3 direction;\\n};\\n\\nuniform AmbientLight lighting_uAmbientLight;\\nuniform PointLight lighting_uPointLight[MAX_LIGHTS];\\nuniform DirectionalLight lighting_uDirectionalLight[MAX_LIGHTS];\\nuniform int lighting_uPointLightCount;\\nuniform int lighting_uDirectionalLightCount;\\n\\nuniform bool lighting_uEnabled;\\n\\nfloat getPointLightAttenuation(PointLight pointLight, float distance) {\\n return pointLight.attenuation.x\\n + pointLight.attenuation.y * distance\\n + pointLight.attenuation.z * distance * distance;\\n}\\n\\n#endif\\n\";\n\n});\n\n\nparcelRegister(\"5xLHO\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $40950a2a5f53a6e3$export$2e2bcd8739ae039; });\nvar $40950a2a5f53a6e3$export$2e2bcd8739ae039 = \"\\nuniform float lighting_uAmbient;\\nuniform float lighting_uDiffuse;\\nuniform float lighting_uShininess;\\nuniform vec3 lighting_uSpecularColor;\\n\\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_direction, vec3 normal_worldspace, vec3 color) {\\n vec3 halfway_direction = normalize(light_direction + view_direction);\\n float lambertian = dot(light_direction, normal_worldspace);\\n float specular = 0.0;\\n if (lambertian > 0.0) {\\n float specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0);\\n specular = pow(specular_angle, lighting_uShininess);\\n }\\n lambertian = max(lambertian, 0.0);\\n return (lambertian * lighting_uDiffuse * surfaceColor + specular * lighting_uSpecularColor) * color;\\n}\\n\\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\\n vec3 lightColor = surfaceColor;\\n\\n if (lighting_uEnabled) {\\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\\n lightColor = lighting_uAmbient * surfaceColor * lighting_uAmbientLight.color;\\n\\n for (int i = 0; i < MAX_LIGHTS; i++) {\\n if (i >= lighting_uPointLightCount) {\\n break;\\n }\\n PointLight pointLight = lighting_uPointLight[i];\\n vec3 light_position_worldspace = pointLight.position;\\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\\n }\\n\\n for (int i = 0; i < MAX_LIGHTS; i++) {\\n if (i >= lighting_uDirectionalLightCount) {\\n break;\\n }\\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\\n }\\n }\\n return lightColor;\\n}\\n\\nvec3 lighting_getSpecularLightColor(vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\\n vec3 lightColor = vec3(0, 0, 0);\\n vec3 surfaceColor = vec3(0, 0, 0);\\n\\n if (lighting_uEnabled) {\\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\\n\\n for (int i = 0; i < MAX_LIGHTS; i++) {\\n if (i >= lighting_uPointLightCount) {\\n break;\\n }\\n PointLight pointLight = lighting_uPointLight[i];\\n vec3 light_position_worldspace = pointLight.position;\\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\\n }\\n\\n for (int i = 0; i < MAX_LIGHTS; i++) {\\n if (i >= lighting_uDirectionalLightCount) {\\n break;\\n }\\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\\n }\\n }\\n return lightColor;\\n}\\n\";\n\n});\n\n\nparcelRegister(\"7UxuR\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $5c27bf22a36d36e9$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $9gFKE = parcelRequire(\"9gFKE\");\nvar $5c27bf22a36d36e9$export$2e2bcd8739ae039 = (0, $2QP2i._)({\n inject: {\n \"vs:DECKGL_FILTER_GL_POSITION\": \"\\n // for picking depth values\\n picking_setPickingAttribute(position.z / position.w);\\n \",\n \"vs:DECKGL_FILTER_COLOR\": \"\\n picking_setPickingColor(geometry.pickingColor);\\n \",\n \"fs:#decl\": \"\\nuniform bool picking_uAttribute;\\n \",\n \"fs:DECKGL_FILTER_COLOR\": {\n order: 99,\n injection: \"\\n // use highlight color if this fragment belongs to the selected object.\\n color = picking_filterHighlightColor(color);\\n\\n // use picking color if rendering to picking FBO.\\n color = picking_filterPickingColor(color);\\n \"\n }\n }\n}, (0, $9gFKE.picking));\n\n});\nparcelRegister(\"9gFKE\", function(module, exports) {\n\n$parcel$export(module.exports, \"picking\", function () { return $6bf5fea5aeab0fad$export$1f1790962c6071cf; });\nconst $6bf5fea5aeab0fad$var$DEFAULT_HIGHLIGHT_COLOR = new Uint8Array([\n 0,\n 255,\n 255,\n 255\n]);\nconst $6bf5fea5aeab0fad$var$DEFAULT_MODULE_OPTIONS = {\n pickingSelectedColor: null,\n pickingHighlightColor: $6bf5fea5aeab0fad$var$DEFAULT_HIGHLIGHT_COLOR,\n pickingActive: false,\n pickingAttribute: false\n};\nfunction $6bf5fea5aeab0fad$var$getUniforms() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : $6bf5fea5aeab0fad$var$DEFAULT_MODULE_OPTIONS;\n const uniforms = {};\n if (opts.pickingSelectedColor !== undefined) {\n if (!opts.pickingSelectedColor) uniforms.picking_uSelectedColorValid = 0;\n else {\n const selectedColor = opts.pickingSelectedColor.slice(0, 3);\n uniforms.picking_uSelectedColorValid = 1;\n uniforms.picking_uSelectedColor = selectedColor;\n }\n }\n if (opts.pickingHighlightColor) {\n const color = Array.from(opts.pickingHighlightColor, (x)=>x / 255);\n if (!Number.isFinite(color[3])) color[3] = 1;\n uniforms.picking_uHighlightColor = color;\n }\n if (opts.pickingActive !== undefined) {\n uniforms.picking_uActive = Boolean(opts.pickingActive);\n uniforms.picking_uAttribute = Boolean(opts.pickingAttribute);\n }\n return uniforms;\n}\nconst $6bf5fea5aeab0fad$var$vs = \"uniform bool picking_uActive;\\nuniform bool picking_uAttribute;\\nuniform vec3 picking_uSelectedColor;\\nuniform bool picking_uSelectedColorValid;\\n\\nout vec4 picking_vRGBcolor_Avalid;\\n\\nconst float COLOR_SCALE = 1. / 255.;\\n\\nbool picking_isColorValid(vec3 color) {\\n return dot(color, vec3(1.0)) > 0.001;\\n}\\n\\nbool isVertexPicked(vec3 vertexColor) {\\n return\\n picking_uSelectedColorValid &&\\n !picking_isColorValid(abs(vertexColor - picking_uSelectedColor));\\n}\\n\\nvoid picking_setPickingColor(vec3 pickingColor) {\\n if (picking_uActive) {\\n picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));\\n\\n if (!picking_uAttribute) {\\n picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE;\\n }\\n } else {\\n picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor));\\n }\\n}\\n\\nvoid picking_setPickingAttribute(float value) {\\n if (picking_uAttribute) {\\n picking_vRGBcolor_Avalid.r = value;\\n }\\n}\\nvoid picking_setPickingAttribute(vec2 value) {\\n if (picking_uAttribute) {\\n picking_vRGBcolor_Avalid.rg = value;\\n }\\n}\\nvoid picking_setPickingAttribute(vec3 value) {\\n if (picking_uAttribute) {\\n picking_vRGBcolor_Avalid.rgb = value;\\n }\\n}\\n\";\nconst $6bf5fea5aeab0fad$var$fs = \"uniform bool picking_uActive;\\nuniform vec3 picking_uSelectedColor;\\nuniform vec4 picking_uHighlightColor;\\n\\nin vec4 picking_vRGBcolor_Avalid;\\nvec4 picking_filterHighlightColor(vec4 color) {\\n if (picking_uActive) {\\n return color;\\n }\\n bool selected = bool(picking_vRGBcolor_Avalid.a);\\n\\n if (selected) {\\n float highLightAlpha = picking_uHighlightColor.a;\\n float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);\\n float highLightRatio = highLightAlpha / blendedAlpha;\\n\\n vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio);\\n return vec4(blendedRGB, blendedAlpha);\\n } else {\\n return color;\\n }\\n}\\nvec4 picking_filterPickingColor(vec4 color) {\\n if (picking_uActive) {\\n if (picking_vRGBcolor_Avalid.a == 0.0) {\\n discard;\\n }\\n return picking_vRGBcolor_Avalid;\\n }\\n return color;\\n}\\nvec4 picking_filterColor(vec4 color) {\\n vec4 highightColor = picking_filterHighlightColor(color);\\n return picking_filterPickingColor(highightColor);\\n}\\n\\n\";\nconst $6bf5fea5aeab0fad$export$1f1790962c6071cf = {\n name: \"picking\",\n vs: $6bf5fea5aeab0fad$var$vs,\n fs: $6bf5fea5aeab0fad$var$fs,\n getUniforms: $6bf5fea5aeab0fad$var$getUniforms\n};\n\n});\n\n\nparcelRegister(\"jRSMz\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $e76d762d9e2cf5ca$export$2e2bcd8739ae039; });\n\nvar $ctBl1 = parcelRequire(\"ctBl1\");\nconst $e76d762d9e2cf5ca$var$vs = \"\\nvec4 project_position_to_clipspace(\\n vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition\\n) {\\n vec3 projectedPosition = project_position(position, position64Low);\\n mat3 rotation;\\n if (project_needs_rotation(projectedPosition, rotation)) {\\n // offset is specified as ENU\\n // when in globe projection, rotate offset so that the ground alighs with the surface of the globe\\n offset = rotation * offset;\\n }\\n commonPosition = vec4(projectedPosition + offset, 1.0);\\n return project_common_position_to_clipspace(commonPosition);\\n}\\n\\nvec4 project_position_to_clipspace(\\n vec3 position, vec3 position64Low, vec3 offset\\n) {\\n vec4 commonPosition;\\n return project_position_to_clipspace(position, position64Low, offset, commonPosition);\\n}\\n\";\nvar $e76d762d9e2cf5ca$export$2e2bcd8739ae039 = {\n name: \"project32\",\n dependencies: [\n (0, $ctBl1.default)\n ],\n vs: $e76d762d9e2cf5ca$var$vs\n};\n\n});\nparcelRegister(\"ctBl1\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9155280be49abf96$export$2e2bcd8739ae039; });\n\nvar $jdvz4 = parcelRequire(\"jdvz4\");\n\nvar $9peGQ = parcelRequire(\"9peGQ\");\n\nvar $2MtTu = parcelRequire(\"2MtTu\");\n\nvar $3Zb7J = parcelRequire(\"3Zb7J\");\nconst $9155280be49abf96$var$INITIAL_MODULE_OPTIONS = {};\nfunction $9155280be49abf96$var$getUniforms(opts = $9155280be49abf96$var$INITIAL_MODULE_OPTIONS) {\n if (\"viewport\" in opts) return (0, $3Zb7J.getUniformsFromViewport)(opts);\n return {};\n}\nvar $9155280be49abf96$export$2e2bcd8739ae039 = {\n name: \"project\",\n dependencies: [\n (0, $jdvz4.fp32),\n (0, $9peGQ.default)\n ],\n vs: (0, $2MtTu.default),\n getUniforms: $9155280be49abf96$var$getUniforms\n};\n\n});\nparcelRegister(\"jdvz4\", function(module, exports) {\n\n$parcel$export(module.exports, \"fp32\", function () { return $dfd7b74fc039cc4e$export$d4bf4ab3180407a1; });\nconst $dfd7b74fc039cc4e$var$fp32shader = \"#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\\nconst float TWO_PI = 6.2831854820251465;\\nconst float PI_2 = 1.5707963705062866;\\nconst float PI_16 = 0.1963495463132858;\\n\\nconst float SIN_TABLE_0 = 0.19509032368659973;\\nconst float SIN_TABLE_1 = 0.3826834261417389;\\nconst float SIN_TABLE_2 = 0.5555702447891235;\\nconst float SIN_TABLE_3 = 0.7071067690849304;\\n\\nconst float COS_TABLE_0 = 0.9807852506637573;\\nconst float COS_TABLE_1 = 0.9238795042037964;\\nconst float COS_TABLE_2 = 0.8314695954322815;\\nconst float COS_TABLE_3 = 0.7071067690849304;\\n\\nconst float INVERSE_FACTORIAL_3 = 1.666666716337204e-01;\\nconst float INVERSE_FACTORIAL_5 = 8.333333767950535e-03;\\nconst float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04;\\nconst float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06;\\n\\nfloat sin_taylor_fp32(float a) {\\n float r, s, t, x;\\n\\n if (a == 0.0) {\\n return 0.0;\\n }\\n\\n x = -a * a;\\n s = a;\\n r = a;\\n\\n r = r * x;\\n t = r * INVERSE_FACTORIAL_3;\\n s = s + t;\\n\\n r = r * x;\\n t = r * INVERSE_FACTORIAL_5;\\n s = s + t;\\n\\n r = r * x;\\n t = r * INVERSE_FACTORIAL_7;\\n s = s + t;\\n\\n r = r * x;\\n t = r * INVERSE_FACTORIAL_9;\\n s = s + t;\\n\\n return s;\\n}\\n\\nvoid sincos_taylor_fp32(float a, out float sin_t, out float cos_t) {\\n if (a == 0.0) {\\n sin_t = 0.0;\\n cos_t = 1.0;\\n }\\n sin_t = sin_taylor_fp32(a);\\n cos_t = sqrt(1.0 - sin_t * sin_t);\\n}\\n\\nfloat tan_taylor_fp32(float a) {\\n float sin_a;\\n float cos_a;\\n\\n if (a == 0.0) {\\n return 0.0;\\n }\\n float z = floor(a / TWO_PI);\\n float r = a - TWO_PI * z;\\n\\n float t;\\n float q = floor(r / PI_2 + 0.5);\\n int j = int(q);\\n\\n if (j < -2 || j > 2) {\\n return 1.0 / 0.0;\\n }\\n\\n t = r - PI_2 * q;\\n\\n q = floor(t / PI_16 + 0.5);\\n int k = int(q);\\n int abs_k = int(abs(float(k)));\\n\\n if (abs_k > 4) {\\n return 1.0 / 0.0;\\n } else {\\n t = t - PI_16 * q;\\n }\\n\\n float u = 0.0;\\n float v = 0.0;\\n\\n float sin_t, cos_t;\\n float s, c;\\n sincos_taylor_fp32(t, sin_t, cos_t);\\n\\n if (k == 0) {\\n s = sin_t;\\n c = cos_t;\\n } else {\\n if (abs(float(abs_k) - 1.0) < 0.5) {\\n u = COS_TABLE_0;\\n v = SIN_TABLE_0;\\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\\n u = COS_TABLE_1;\\n v = SIN_TABLE_1;\\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\\n u = COS_TABLE_2;\\n v = SIN_TABLE_2;\\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\\n u = COS_TABLE_3;\\n v = SIN_TABLE_3;\\n }\\n if (k > 0) {\\n s = u * sin_t + v * cos_t;\\n c = u * cos_t - v * sin_t;\\n } else {\\n s = u * sin_t - v * cos_t;\\n c = u * cos_t + v * sin_t;\\n }\\n }\\n\\n if (j == 0) {\\n sin_a = s;\\n cos_a = c;\\n } else if (j == 1) {\\n sin_a = c;\\n cos_a = -s;\\n } else if (j == -1) {\\n sin_a = -c;\\n cos_a = s;\\n } else {\\n sin_a = -s;\\n cos_a = -c;\\n }\\n return sin_a / cos_a;\\n}\\n#endif\\n\\nfloat tan_fp32(float a) {\\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\\n return tan_taylor_fp32(a);\\n#else\\n return tan(a);\\n#endif\\n}\\n\";\nconst $dfd7b74fc039cc4e$export$d4bf4ab3180407a1 = {\n name: \"fp32\",\n vs: $dfd7b74fc039cc4e$var$fp32shader,\n fs: null\n};\n\n});\n\nparcelRegister(\"9peGQ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6d91d8006e7ae005$export$2e2bcd8739ae039; });\nconst $6d91d8006e7ae005$var$defines = \"#define SMOOTH_EDGE_RADIUS 0.5\";\nconst $6d91d8006e7ae005$var$vs = \"\\n\".concat($6d91d8006e7ae005$var$defines, \"\\n\\nstruct VertexGeometry {\\n vec4 position;\\n vec3 worldPosition;\\n vec3 worldPositionAlt;\\n vec3 normal;\\n vec2 uv;\\n vec3 pickingColor;\\n} geometry = VertexGeometry(\\n vec4(0.0, 0.0, 1.0, 0.0),\\n vec3(0.0),\\n vec3(0.0),\\n vec3(0.0),\\n vec2(0.0),\\n vec3(0.0)\\n);\\n\");\nconst $6d91d8006e7ae005$var$fs = \"\\n\".concat($6d91d8006e7ae005$var$defines, \"\\n\\nstruct FragmentGeometry {\\n vec2 uv;\\n} geometry;\\n\\nfloat smoothedge(float edge, float x) {\\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\\n}\\n\");\nvar $6d91d8006e7ae005$export$2e2bcd8739ae039 = {\n name: \"geometry\",\n vs: $6d91d8006e7ae005$var$vs,\n fs: $6d91d8006e7ae005$var$fs\n};\n\n});\n\nparcelRegister(\"2MtTu\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $206740cd7e8a2965$export$2e2bcd8739ae039; });\n\nvar $7gQQK = parcelRequire(\"7gQQK\");\nconst $206740cd7e8a2965$var$COORDINATE_SYSTEM_GLSL_CONSTANTS = Object.keys((0, $7gQQK.COORDINATE_SYSTEM)).map((key)=>\"const int COORDINATE_SYSTEM_\".concat(key, \" = \").concat((0, $7gQQK.COORDINATE_SYSTEM)[key], \";\")).join(\"\");\nconst $206740cd7e8a2965$var$PROJECTION_MODE_GLSL_CONSTANTS = Object.keys((0, $7gQQK.PROJECTION_MODE)).map((key)=>\"const int PROJECTION_MODE_\".concat(key, \" = \").concat((0, $7gQQK.PROJECTION_MODE)[key], \";\")).join(\"\");\nconst $206740cd7e8a2965$var$UNIT_GLSL_CONSTANTS = Object.keys((0, $7gQQK.UNIT)).map((key)=>\"const int UNIT_\".concat(key.toUpperCase(), \" = \").concat((0, $7gQQK.UNIT)[key], \";\")).join(\"\");\nvar $206740cd7e8a2965$export$2e2bcd8739ae039 = \"\".concat($206740cd7e8a2965$var$COORDINATE_SYSTEM_GLSL_CONSTANTS, \"\\n\").concat($206740cd7e8a2965$var$PROJECTION_MODE_GLSL_CONSTANTS, \"\\n\").concat($206740cd7e8a2965$var$UNIT_GLSL_CONSTANTS, \"\\n\\nuniform int project_uCoordinateSystem;\\nuniform int project_uProjectionMode;\\nuniform float project_uScale;\\nuniform bool project_uWrapLongitude;\\nuniform vec3 project_uCommonUnitsPerMeter;\\nuniform vec3 project_uCommonUnitsPerWorldUnit;\\nuniform vec3 project_uCommonUnitsPerWorldUnit2;\\nuniform vec4 project_uCenter;\\nuniform mat4 project_uModelMatrix;\\nuniform mat4 project_uViewProjectionMatrix;\\nuniform vec2 project_uViewportSize;\\nuniform float project_uDevicePixelRatio;\\nuniform float project_uFocalDistance;\\nuniform vec3 project_uCameraPosition;\\nuniform vec3 project_uCoordinateOrigin;\\nuniform vec3 project_uCommonOrigin;\\nuniform bool project_uPseudoMeters;\\n\\nconst float TILE_SIZE = 512.0;\\nconst float PI = 3.1415926536;\\nconst float WORLD_SCALE = TILE_SIZE / (PI * 2.0);\\nconst vec3 ZERO_64_LOW = vec3(0.0);\\nconst float EARTH_RADIUS = 6370972.0;\\nconst float GLOBE_RADIUS = 256.0;\\nfloat project_size_at_latitude(float lat) {\\n float y = clamp(lat, -89.9, 89.9);\\n return 1.0 / cos(radians(y));\\n}\\n\\nfloat project_size() {\\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR &&\\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT &&\\n project_uPseudoMeters == false) {\\n \\n if (geometry.position.w == 0.0) {\\n return project_size_at_latitude(geometry.worldPosition.y);\\n }\\n \\n float y = geometry.position.y / TILE_SIZE * 2.0 - 1.0;\\n float y2 = y * y;\\n float y4 = y2 * y2;\\n float y6 = y4 * y2;\\n return 1.0 + 4.9348 * y2 + 4.0587 * y4 + 1.5642 * y6;\\n }\\n return 1.0;\\n}\\n\\nfloat project_size_at_latitude(float meters, float lat) {\\n return meters * project_uCommonUnitsPerMeter.z * project_size_at_latitude(lat);\\n}\\nfloat project_size(float meters) {\\n return meters * project_uCommonUnitsPerMeter.z * project_size();\\n}\\n\\nvec2 project_size(vec2 meters) {\\n return meters * project_uCommonUnitsPerMeter.xy * project_size();\\n}\\n\\nvec3 project_size(vec3 meters) {\\n return meters * project_uCommonUnitsPerMeter * project_size();\\n}\\n\\nvec4 project_size(vec4 meters) {\\n return vec4(meters.xyz * project_uCommonUnitsPerMeter, meters.w);\\n}\\nmat3 project_get_orientation_matrix(vec3 up) {\\n vec3 uz = normalize(up);\\n vec3 ux = abs(uz.z) == 1.0 ? vec3(1.0, 0.0, 0.0) : normalize(vec3(uz.y, -uz.x, 0));\\n vec3 uy = cross(uz, ux);\\n return mat3(ux, uy, uz);\\n}\\n\\nbool project_needs_rotation(vec3 commonPosition, out mat3 transform) {\\n if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\\n transform = project_get_orientation_matrix(commonPosition);\\n return true;\\n }\\n return false;\\n}\\nvec3 project_normal(vec3 vector) {\\n vec4 normal_modelspace = project_uModelMatrix * vec4(vector, 0.0);\\n vec3 n = normalize(normal_modelspace.xyz * project_uCommonUnitsPerMeter);\\n mat3 rotation;\\n if (project_needs_rotation(geometry.position.xyz, rotation)) {\\n n = rotation * n;\\n }\\n return n;\\n}\\n\\nvec4 project_offset_(vec4 offset) {\\n float dy = offset.y;\\n vec3 commonUnitsPerWorldUnit = project_uCommonUnitsPerWorldUnit + project_uCommonUnitsPerWorldUnit2 * dy;\\n return vec4(offset.xyz * commonUnitsPerWorldUnit, offset.w);\\n}\\nvec2 project_mercator_(vec2 lnglat) {\\n float x = lnglat.x;\\n if (project_uWrapLongitude) {\\n x = mod(x + 180., 360.0) - 180.;\\n }\\n float y = clamp(lnglat.y, -89.9, 89.9);\\n return vec2(\\n radians(x) + PI,\\n PI + log(tan_fp32(PI * 0.25 + radians(y) * 0.5))\\n ) * WORLD_SCALE;\\n}\\n\\nvec3 project_globe_(vec3 lnglatz) {\\n float lambda = radians(lnglatz.x);\\n float phi = radians(lnglatz.y);\\n float cosPhi = cos(phi);\\n float D = (lnglatz.z / EARTH_RADIUS + 1.0) * GLOBE_RADIUS;\\n\\n return vec3(\\n sin(lambda) * cosPhi,\\n -cos(lambda) * cosPhi,\\n sin(phi)\\n ) * D;\\n}\\nvec4 project_position(vec4 position, vec3 position64Low) {\\n vec4 position_world = project_uModelMatrix * position;\\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR) {\\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\\n return vec4(\\n project_mercator_(position_world.xy),\\n project_size_at_latitude(position_world.z, position_world.y),\\n position_world.w\\n );\\n }\\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN) {\\n position_world.xyz += project_uCoordinateOrigin;\\n }\\n }\\n if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\\n return vec4(\\n project_globe_(position_world.xyz),\\n position_world.w\\n );\\n }\\n }\\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\\n if (abs(position_world.y - project_uCoordinateOrigin.y) > 0.25) {\\n return vec4(\\n project_mercator_(position_world.xy) - project_uCommonOrigin.xy,\\n project_size(position_world.z),\\n position_world.w\\n );\\n }\\n }\\n }\\n if (project_uProjectionMode == PROJECTION_MODE_IDENTITY ||\\n (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET &&\\n (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\\n project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN))) {\\n position_world.xyz -= project_uCoordinateOrigin;\\n }\\n return project_offset_(position_world + project_uModelMatrix * vec4(position64Low, 0.0));\\n}\\n\\nvec4 project_position(vec4 position) {\\n return project_position(position, ZERO_64_LOW);\\n}\\n\\nvec3 project_position(vec3 position, vec3 position64Low) {\\n vec4 projected_position = project_position(vec4(position, 1.0), position64Low);\\n return projected_position.xyz;\\n}\\n\\nvec3 project_position(vec3 position) {\\n vec4 projected_position = project_position(vec4(position, 1.0), ZERO_64_LOW);\\n return projected_position.xyz;\\n}\\n\\nvec2 project_position(vec2 position) {\\n vec4 projected_position = project_position(vec4(position, 0.0, 1.0), ZERO_64_LOW);\\n return projected_position.xy;\\n}\\n\\nvec4 project_common_position_to_clipspace(vec4 position, mat4 viewProjectionMatrix, vec4 center) {\\n return viewProjectionMatrix * position + center;\\n}\\nvec4 project_common_position_to_clipspace(vec4 position) {\\n return project_common_position_to_clipspace(position, project_uViewProjectionMatrix, project_uCenter);\\n}\\nvec2 project_pixel_size_to_clipspace(vec2 pixels) {\\n vec2 offset = pixels / project_uViewportSize * project_uDevicePixelRatio * 2.0;\\n return offset * project_uFocalDistance;\\n}\\n\\nfloat project_size_to_pixel(float meters) {\\n return project_size(meters) * project_uScale;\\n}\\nfloat project_size_to_pixel(float size, int unit) {\\n if (unit == UNIT_METERS) return project_size_to_pixel(size);\\n if (unit == UNIT_COMMON) return size * project_uScale;\\n return size;\\n}\\nfloat project_pixel_size(float pixels) {\\n return pixels / project_uScale;\\n}\\nvec2 project_pixel_size(vec2 pixels) {\\n return pixels / project_uScale;\\n}\\n\");\n\n});\n\n\n\nparcelRegister(\"cxTxU\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9223a764222c0021$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $ihfnu = parcelRequire(\"ihfnu\");\nvar $iljOc = parcelRequire(\"iljOc\");\nconst $9223a764222c0021$export$7bd2e4b5b3cb4007 = {\n POINTS: 0x0000,\n LINES: 0x0001,\n LINE_LOOP: 0x0002,\n LINE_STRIP: 0x0003,\n TRIANGLES: 0x0004,\n TRIANGLE_STRIP: 0x0005,\n TRIANGLE_FAN: 0x0006\n};\nclass $9223a764222c0021$export$2e2bcd8739ae039 {\n static get DRAW_MODE() {\n return $9223a764222c0021$export$7bd2e4b5b3cb4007;\n }\n get mode() {\n return this.drawMode;\n }\n getVertexCount() {\n return this.vertexCount;\n }\n getAttributes() {\n return this.indices ? (0, $2QP2i._)({\n indices: this.indices\n }, this.attributes) : this.attributes;\n }\n _print(attributeName) {\n return \"Geometry \".concat(this.id, \" attribute \").concat(attributeName);\n }\n _setAttributes(attributes, indices) {\n if (indices) this.indices = ArrayBuffer.isView(indices) ? {\n value: indices,\n size: 1\n } : indices;\n for(const attributeName in attributes){\n let attribute = attributes[attributeName];\n attribute = ArrayBuffer.isView(attribute) ? {\n value: attribute\n } : attribute;\n (0, $ihfnu.assert)(ArrayBuffer.isView(attribute.value), \"\".concat(this._print(attributeName), \": must be typed array or object with value as typed array\"));\n if ((attributeName === \"POSITION\" || attributeName === \"positions\") && !attribute.size) attribute.size = 3;\n if (attributeName === \"indices\") {\n (0, $ihfnu.assert)(!this.indices);\n this.indices = attribute;\n } else this.attributes[attributeName] = attribute;\n }\n if (this.indices && this.indices.isIndexed !== undefined) {\n this.indices = Object.assign({}, this.indices);\n delete this.indices.isIndexed;\n }\n return this;\n }\n _calculateVertexCount(attributes, indices) {\n if (indices) return indices.value.length;\n let vertexCount = Infinity;\n for(const attributeName in attributes){\n const attribute = attributes[attributeName];\n const { value: value, size: size, constant: constant } = attribute;\n if (!constant && value && size >= 1) vertexCount = Math.min(vertexCount, value.length / size);\n }\n (0, $ihfnu.assert)(Number.isFinite(vertexCount));\n return vertexCount;\n }\n constructor(){\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const { id: id = (0, $iljOc.uid)(\"geometry\"), drawMode: drawMode = $9223a764222c0021$export$7bd2e4b5b3cb4007.TRIANGLES, attributes: attributes = {}, indices: indices = null, vertexCount: vertexCount = null } = props;\n this.id = id;\n this.drawMode = drawMode | 0;\n this.attributes = {};\n this.userData = {};\n this._setAttributes(attributes, indices);\n this.vertexCount = vertexCount || this._calculateVertexCount(this.attributes, this.indices);\n }\n}\n\n});\n\nparcelRegister(\"dzzPJ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9e1a570539b95ed9$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $9001n = parcelRequire(\"9001n\");\n\nvar $bPjHd = parcelRequire(\"bPjHd\");\nparcelRequire(\"b5AlO\");\nvar $drfwC = parcelRequire(\"drfwC\");\nvar $6Kcrp = parcelRequire(\"6Kcrp\");\nclass $9e1a570539b95ed9$export$2e2bcd8739ae039 extends (0, $bPjHd.default) {\n get(attributeName) {\n const { attributes: attributes } = this;\n if (attributeName === \"indices\") return attributes.indices && attributes.indices.subarray(0, this.vertexCount);\n return attributes[attributeName];\n }\n updateGeometry(opts) {\n super.updateGeometry(opts);\n const externalIndices = this.buffers.indices;\n if (externalIndices) this.vertexCount = (externalIndices.value || externalIndices).length;\n else if (this.data && !this.getGeometry) throw new Error(\"missing indices buffer\");\n }\n normalizeGeometry(polygon) {\n if (this.normalize) {\n const normalizedPolygon = $9001n.normalize(polygon, this.positionSize);\n if (this.opts.resolution) return (0, $drfwC.cutPolygonByGrid)($9001n.getPositions(normalizedPolygon), $9001n.getHoleIndices(normalizedPolygon), {\n size: this.positionSize,\n gridResolution: this.opts.resolution,\n edgeTypes: true\n });\n if (this.opts.wrapLongitude) return (0, $6Kcrp.cutPolygonByMercatorBounds)($9001n.getPositions(normalizedPolygon), $9001n.getHoleIndices(normalizedPolygon), {\n size: this.positionSize,\n maxLatitude: 86,\n edgeTypes: true\n });\n return normalizedPolygon;\n }\n return polygon;\n }\n getGeometrySize(polygon) {\n if ($9e1a570539b95ed9$var$isCut(polygon)) {\n let size = 0;\n for (const subPolygon of polygon)size += this.getGeometrySize(subPolygon);\n return size;\n }\n return $9001n.getPositions(polygon).length / this.positionSize;\n }\n getGeometryFromBuffer(buffer) {\n if (this.normalize || !this.buffers.indices) return super.getGeometryFromBuffer(buffer);\n return null;\n }\n updateGeometryAttributes(polygon, context) {\n if (polygon && $9e1a570539b95ed9$var$isCut(polygon)) for (const subPolygon of polygon){\n const geometrySize = this.getGeometrySize(subPolygon);\n context.geometrySize = geometrySize;\n this.updateGeometryAttributes(subPolygon, context);\n context.vertexStart += geometrySize;\n context.indexStart = this.indexStarts[context.geometryIndex + 1];\n }\n else {\n this._updateIndices(polygon, context);\n this._updatePositions(polygon, context);\n this._updateVertexValid(polygon, context);\n }\n }\n _updateIndices(polygon, { geometryIndex: geometryIndex, vertexStart: offset, indexStart: indexStart }) {\n const { attributes: attributes, indexStarts: indexStarts, typedArrayManager: typedArrayManager } = this;\n let target = attributes.indices;\n if (!target || !polygon) return;\n let i = indexStart;\n const indices = $9001n.getSurfaceIndices(polygon, this.positionSize, this.opts.preproject, this.opts.full3d);\n target = typedArrayManager.allocate(target, indexStart + indices.length, {\n copy: true\n });\n for(let j = 0; j < indices.length; j++)target[i++] = indices[j] + offset;\n indexStarts[geometryIndex + 1] = indexStart + indices.length;\n attributes.indices = target;\n }\n _updatePositions(polygon, { vertexStart: vertexStart, geometrySize: geometrySize }) {\n const { attributes: { positions: positions }, positionSize: positionSize } = this;\n if (!positions || !polygon) return;\n const polygonPositions = $9001n.getPositions(polygon);\n for(let i = vertexStart, j = 0; j < geometrySize; i++, j++){\n const x = polygonPositions[j * positionSize];\n const y = polygonPositions[j * positionSize + 1];\n const z = positionSize > 2 ? polygonPositions[j * positionSize + 2] : 0;\n positions[i * 3] = x;\n positions[i * 3 + 1] = y;\n positions[i * 3 + 2] = z;\n }\n }\n _updateVertexValid(polygon, { vertexStart: vertexStart, geometrySize: geometrySize }) {\n const { positionSize: positionSize } = this;\n const vertexValid = this.attributes.vertexValid;\n const holeIndices = polygon && $9001n.getHoleIndices(polygon);\n if (polygon && polygon.edgeTypes) vertexValid.set(polygon.edgeTypes, vertexStart);\n else vertexValid.fill(1, vertexStart, vertexStart + geometrySize);\n if (holeIndices) for(let j = 0; j < holeIndices.length; j++)vertexValid[vertexStart + holeIndices[j] / positionSize - 1] = 0;\n vertexValid[vertexStart + geometrySize - 1] = 0;\n }\n constructor(opts){\n const { fp64: fp64, IndexType: IndexType = Uint32Array } = opts;\n super((0, $edHbI._)((0, $2QP2i._)({}, opts), {\n attributes: {\n positions: {\n size: 3,\n type: fp64 ? Float64Array : Float32Array\n },\n vertexValid: {\n type: Uint8ClampedArray,\n size: 1\n },\n indices: {\n type: IndexType,\n size: 1\n }\n }\n }));\n }\n}\nfunction $9e1a570539b95ed9$var$isCut(polygon) {\n return Array.isArray(polygon) && polygon.length > 0 && !Number.isFinite(polygon[0]);\n}\n\n});\nparcelRegister(\"9001n\", function(module, exports) {\n\n$parcel$export(module.exports, \"getPositions\", function () { return $68d4215ba53f46ac$export$c39457c570f2b189; });\n$parcel$export(module.exports, \"getHoleIndices\", function () { return $68d4215ba53f46ac$export$a70d661c09e77ef8; });\n$parcel$export(module.exports, \"normalize\", function () { return $68d4215ba53f46ac$export$a3295358bff77e; });\n$parcel$export(module.exports, \"getSurfaceIndices\", function () { return $68d4215ba53f46ac$export$9cdf2cc6712e690c; });\n\nvar $3BkEZ = parcelRequire(\"3BkEZ\");\nparcelRequire(\"b5AlO\");\nvar $2d6CO = parcelRequire(\"2d6CO\");\nconst $68d4215ba53f46ac$var$OUTER_POLYGON_WINDING = (0, $2d6CO.WINDING).CLOCKWISE;\nconst $68d4215ba53f46ac$var$HOLE_POLYGON_WINDING = (0, $2d6CO.WINDING).COUNTER_CLOCKWISE;\nconst $68d4215ba53f46ac$var$windingOptions = {\n isClosed: true\n};\nfunction $68d4215ba53f46ac$var$validate(polygon) {\n polygon = polygon && polygon.positions || polygon;\n if (!Array.isArray(polygon) && !ArrayBuffer.isView(polygon)) throw new Error(\"invalid polygon\");\n}\nfunction $68d4215ba53f46ac$export$c39457c570f2b189(polygon) {\n return \"positions\" in polygon ? polygon.positions : polygon;\n}\nfunction $68d4215ba53f46ac$export$a70d661c09e77ef8(polygon) {\n return \"holeIndices\" in polygon ? polygon.holeIndices : null;\n}\nfunction $68d4215ba53f46ac$var$isNested(polygon) {\n return Array.isArray(polygon[0]);\n}\nfunction $68d4215ba53f46ac$var$isSimple(polygon) {\n return polygon.length >= 1 && polygon[0].length >= 2 && Number.isFinite(polygon[0][0]);\n}\nfunction $68d4215ba53f46ac$var$isNestedRingClosed(simplePolygon) {\n const p0 = simplePolygon[0];\n const p1 = simplePolygon[simplePolygon.length - 1];\n return p0[0] === p1[0] && p0[1] === p1[1] && p0[2] === p1[2];\n}\nfunction $68d4215ba53f46ac$var$isFlatRingClosed(positions, size, startIndex, endIndex) {\n for(let i = 0; i < size; i++){\n if (positions[startIndex + i] !== positions[endIndex - size + i]) return false;\n }\n return true;\n}\nfunction $68d4215ba53f46ac$var$copyNestedRing(target, targetStartIndex, simplePolygon, size, windingDirection) {\n let targetIndex = targetStartIndex;\n const len = simplePolygon.length;\n for(let i = 0; i < len; i++)for(let j = 0; j < size; j++)target[targetIndex++] = simplePolygon[i][j] || 0;\n if (!$68d4215ba53f46ac$var$isNestedRingClosed(simplePolygon)) for(let j = 0; j < size; j++)target[targetIndex++] = simplePolygon[0][j] || 0;\n $68d4215ba53f46ac$var$windingOptions.start = targetStartIndex;\n $68d4215ba53f46ac$var$windingOptions.end = targetIndex;\n $68d4215ba53f46ac$var$windingOptions.size = size;\n (0, $2d6CO.modifyPolygonWindingDirection)(target, windingDirection, $68d4215ba53f46ac$var$windingOptions);\n return targetIndex;\n}\nfunction $68d4215ba53f46ac$var$copyFlatRing(target, targetStartIndex, positions, size, srcStartIndex = 0, srcEndIndex, windingDirection) {\n srcEndIndex = srcEndIndex || positions.length;\n const srcLength = srcEndIndex - srcStartIndex;\n if (srcLength <= 0) return targetStartIndex;\n let targetIndex = targetStartIndex;\n for(let i = 0; i < srcLength; i++)target[targetIndex++] = positions[srcStartIndex + i];\n if (!$68d4215ba53f46ac$var$isFlatRingClosed(positions, size, srcStartIndex, srcEndIndex)) for(let i = 0; i < size; i++)target[targetIndex++] = positions[srcStartIndex + i];\n $68d4215ba53f46ac$var$windingOptions.start = targetStartIndex;\n $68d4215ba53f46ac$var$windingOptions.end = targetIndex;\n $68d4215ba53f46ac$var$windingOptions.size = size;\n (0, $2d6CO.modifyPolygonWindingDirection)(target, windingDirection, $68d4215ba53f46ac$var$windingOptions);\n return targetIndex;\n}\nfunction $68d4215ba53f46ac$export$a3295358bff77e(polygon, positionSize) {\n $68d4215ba53f46ac$var$validate(polygon);\n const positions = [];\n const holeIndices = [];\n if (\"positions\" in polygon) {\n const { positions: srcPositions, holeIndices: srcHoleIndices } = polygon;\n if (srcHoleIndices) {\n let targetIndex = 0;\n for(let i = 0; i <= srcHoleIndices.length; i++){\n targetIndex = $68d4215ba53f46ac$var$copyFlatRing(positions, targetIndex, srcPositions, positionSize, srcHoleIndices[i - 1], srcHoleIndices[i], i === 0 ? $68d4215ba53f46ac$var$OUTER_POLYGON_WINDING : $68d4215ba53f46ac$var$HOLE_POLYGON_WINDING);\n holeIndices.push(targetIndex);\n }\n holeIndices.pop();\n return {\n positions: positions,\n holeIndices: holeIndices\n };\n }\n polygon = srcPositions;\n }\n if (!$68d4215ba53f46ac$var$isNested(polygon)) {\n $68d4215ba53f46ac$var$copyFlatRing(positions, 0, polygon, positionSize, 0, positions.length, $68d4215ba53f46ac$var$OUTER_POLYGON_WINDING);\n return positions;\n }\n if (!$68d4215ba53f46ac$var$isSimple(polygon)) {\n let targetIndex = 0;\n for (const [polygonIndex, simplePolygon] of polygon.entries()){\n targetIndex = $68d4215ba53f46ac$var$copyNestedRing(positions, targetIndex, simplePolygon, positionSize, polygonIndex === 0 ? $68d4215ba53f46ac$var$OUTER_POLYGON_WINDING : $68d4215ba53f46ac$var$HOLE_POLYGON_WINDING);\n holeIndices.push(targetIndex);\n }\n holeIndices.pop();\n return {\n positions: positions,\n holeIndices: holeIndices\n };\n }\n $68d4215ba53f46ac$var$copyNestedRing(positions, 0, polygon, positionSize, $68d4215ba53f46ac$var$OUTER_POLYGON_WINDING);\n return positions;\n}\nfunction $68d4215ba53f46ac$var$getPlaneArea(positions, xIndex, yIndex) {\n const numVerts = positions.length / 3;\n let area = 0;\n for(let i = 0; i < numVerts; i++){\n const j = (i + 1) % numVerts;\n area += positions[i * 3 + xIndex] * positions[j * 3 + yIndex];\n area -= positions[j * 3 + xIndex] * positions[i * 3 + yIndex];\n }\n return Math.abs(area / 2);\n}\nfunction $68d4215ba53f46ac$var$permutePositions(positions, xIndex, yIndex, zIndex) {\n const numVerts = positions.length / 3;\n for(let i = 0; i < numVerts; i++){\n const o = i * 3;\n const x = positions[o + 0];\n const y = positions[o + 1];\n const z = positions[o + 2];\n positions[o + xIndex] = x;\n positions[o + yIndex] = y;\n positions[o + zIndex] = z;\n }\n}\nfunction $68d4215ba53f46ac$export$9cdf2cc6712e690c(polygon, positionSize, preproject, full3d) {\n let holeIndices = $68d4215ba53f46ac$export$a70d661c09e77ef8(polygon);\n if (holeIndices) holeIndices = holeIndices.map((positionIndex)=>positionIndex / positionSize);\n let positions = $68d4215ba53f46ac$export$c39457c570f2b189(polygon);\n const is3d = full3d && positionSize === 3;\n if (preproject) {\n const n = positions.length;\n positions = positions.slice();\n const p = [];\n for(let i = 0; i < n; i += positionSize){\n p[0] = positions[i];\n p[1] = positions[i + 1];\n if (is3d) p[2] = positions[i + 2];\n const xy = preproject(p);\n positions[i] = xy[0];\n positions[i + 1] = xy[1];\n if (is3d) positions[i + 2] = xy[2];\n }\n }\n if (is3d) {\n const xyArea = $68d4215ba53f46ac$var$getPlaneArea(positions, 0, 1);\n const xzArea = $68d4215ba53f46ac$var$getPlaneArea(positions, 0, 2);\n const yzArea = $68d4215ba53f46ac$var$getPlaneArea(positions, 1, 2);\n if (!xyArea && !xzArea && !yzArea) return [];\n if (xyArea > xzArea && xyArea > yzArea) ;\n else if (xzArea > yzArea) {\n if (!preproject) positions = positions.slice();\n $68d4215ba53f46ac$var$permutePositions(positions, 0, 2, 1);\n } else {\n if (!preproject) positions = positions.slice();\n $68d4215ba53f46ac$var$permutePositions(positions, 2, 0, 1);\n }\n }\n return (0, (/*@__PURE__*/$parcel$interopDefault($3BkEZ)))(positions, holeIndices, positionSize);\n}\n\n});\nparcelRegister(\"3BkEZ\", function(module, exports) {\n\"use strict\";\nmodule.exports = $29f4da7a45653b83$var$earcut;\nmodule.exports.default = $29f4da7a45653b83$var$earcut;\nfunction $29f4da7a45653b83$var$earcut(data, holeIndices, dim) {\n dim = dim || 2;\n var hasHoles = holeIndices && holeIndices.length, outerLen = hasHoles ? holeIndices[0] * dim : data.length, outerNode = $29f4da7a45653b83$var$linkedList(data, 0, outerLen, dim, true), triangles = [];\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n var minX, minY, maxX, maxY, x, y, invSize;\n if (hasHoles) outerNode = $29f4da7a45653b83$var$eliminateHoles(data, holeIndices, outerNode, dim);\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n for(var i = dim; i < outerLen; i += dim){\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n $29f4da7a45653b83$var$earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n return triangles;\n}\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction $29f4da7a45653b83$var$linkedList(data, start, end, dim, clockwise) {\n var i, last;\n if (clockwise === $29f4da7a45653b83$var$signedArea(data, start, end, dim) > 0) for(i = start; i < end; i += dim)last = $29f4da7a45653b83$var$insertNode(i, data[i], data[i + 1], last);\n else for(i = end - dim; i >= start; i -= dim)last = $29f4da7a45653b83$var$insertNode(i, data[i], data[i + 1], last);\n if (last && $29f4da7a45653b83$var$equals(last, last.next)) {\n $29f4da7a45653b83$var$removeNode(last);\n last = last.next;\n }\n return last;\n}\n// eliminate colinear or duplicate points\nfunction $29f4da7a45653b83$var$filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n var p = start, again;\n do {\n again = false;\n if (!p.steiner && ($29f4da7a45653b83$var$equals(p, p.next) || $29f4da7a45653b83$var$area(p.prev, p, p.next) === 0)) {\n $29f4da7a45653b83$var$removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n } else p = p.next;\n }while (again || p !== end);\n return end;\n}\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction $29f4da7a45653b83$var$earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n // interlink polygon nodes in z-order\n if (!pass && invSize) $29f4da7a45653b83$var$indexCurve(ear, minX, minY, invSize);\n var stop = ear, prev, next;\n // iterate through ears, slicing them one by one\n while(ear.prev !== ear.next){\n prev = ear.prev;\n next = ear.next;\n if (invSize ? $29f4da7a45653b83$var$isEarHashed(ear, minX, minY, invSize) : $29f4da7a45653b83$var$isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n $29f4da7a45653b83$var$removeNode(ear);\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n continue;\n }\n ear = next;\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) $29f4da7a45653b83$var$earcutLinked($29f4da7a45653b83$var$filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n else if (pass === 1) {\n ear = $29f4da7a45653b83$var$cureLocalIntersections($29f4da7a45653b83$var$filterPoints(ear), triangles, dim);\n $29f4da7a45653b83$var$earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) $29f4da7a45653b83$var$splitEarcut(ear, triangles, dim, minX, minY, invSize);\n break;\n }\n }\n}\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction $29f4da7a45653b83$var$isEar(ear) {\n var a = ear.prev, b = ear, c = ear.next;\n if ($29f4da7a45653b83$var$area(a, b, c) >= 0) return false; // reflex, can't be an ear\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx, y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy, x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx, y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy;\n var p = c.next;\n while(p !== a){\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && $29f4da7a45653b83$var$pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && $29f4da7a45653b83$var$area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n return true;\n}\nfunction $29f4da7a45653b83$var$isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev, b = ear, c = ear.next;\n if ($29f4da7a45653b83$var$area(a, b, c) >= 0) return false; // reflex, can't be an ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx, y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy, x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx, y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy;\n // z-order range for the current triangle bbox;\n var minZ = $29f4da7a45653b83$var$zOrder(x0, y0, minX, minY, invSize), maxZ = $29f4da7a45653b83$var$zOrder(x1, y1, minX, minY, invSize);\n var p = ear.prevZ, n = ear.nextZ;\n // look for points inside the triangle in both directions\n while(p && p.z >= minZ && n && n.z <= maxZ){\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c && $29f4da7a45653b83$var$pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && $29f4da7a45653b83$var$area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && $29f4da7a45653b83$var$pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && $29f4da7a45653b83$var$area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n // look for remaining points in decreasing z-order\n while(p && p.z >= minZ){\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c && $29f4da7a45653b83$var$pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && $29f4da7a45653b83$var$area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n // look for remaining points in increasing z-order\n while(n && n.z <= maxZ){\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && $29f4da7a45653b83$var$pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && $29f4da7a45653b83$var$area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n return true;\n}\n// go through all polygon nodes and cure small local self-intersections\nfunction $29f4da7a45653b83$var$cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev, b = p.next.next;\n if (!$29f4da7a45653b83$var$equals(a, b) && $29f4da7a45653b83$var$intersects(a, p, p.next, b) && $29f4da7a45653b83$var$locallyInside(a, b) && $29f4da7a45653b83$var$locallyInside(b, a)) {\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n // remove two nodes involved\n $29f4da7a45653b83$var$removeNode(p);\n $29f4da7a45653b83$var$removeNode(p.next);\n p = start = b;\n }\n p = p.next;\n }while (p !== start);\n return $29f4da7a45653b83$var$filterPoints(p);\n}\n// try splitting polygon into two and triangulate them independently\nfunction $29f4da7a45653b83$var$splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while(b !== a.prev){\n if (a.i !== b.i && $29f4da7a45653b83$var$isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = $29f4da7a45653b83$var$splitPolygon(a, b);\n // filter colinear points around the cuts\n a = $29f4da7a45653b83$var$filterPoints(a, a.next);\n c = $29f4da7a45653b83$var$filterPoints(c, c.next);\n // run earcut on each half\n $29f4da7a45653b83$var$earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n $29f4da7a45653b83$var$earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n }while (a !== start);\n}\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction $29f4da7a45653b83$var$eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [], i, len, start, end, list;\n for(i = 0, len = holeIndices.length; i < len; i++){\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = $29f4da7a45653b83$var$linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push($29f4da7a45653b83$var$getLeftmost(list));\n }\n queue.sort($29f4da7a45653b83$var$compareX);\n // process holes from left to right\n for(i = 0; i < queue.length; i++)outerNode = $29f4da7a45653b83$var$eliminateHole(queue[i], outerNode);\n return outerNode;\n}\nfunction $29f4da7a45653b83$var$compareX(a, b) {\n return a.x - b.x;\n}\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction $29f4da7a45653b83$var$eliminateHole(hole, outerNode) {\n var bridge = $29f4da7a45653b83$var$findHoleBridge(hole, outerNode);\n if (!bridge) return outerNode;\n var bridgeReverse = $29f4da7a45653b83$var$splitPolygon(bridge, hole);\n // filter collinear points around the cuts\n $29f4da7a45653b83$var$filterPoints(bridgeReverse, bridgeReverse.next);\n return $29f4da7a45653b83$var$filterPoints(bridge, bridge.next);\n}\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction $29f4da7a45653b83$var$findHoleBridge(hole, outerNode) {\n var p = outerNode, hx = hole.x, hy = hole.y, qx = -Infinity, m;\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n }while (p !== outerNode);\n if (!m) return null;\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n var stop = m, mx = m.x, my = m.y, tanMin = Infinity, tan;\n p = m;\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x && $29f4da7a45653b83$var$pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n if ($29f4da7a45653b83$var$locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && $29f4da7a45653b83$var$sectorContainsSector(m, p)))) {\n m = p;\n tanMin = tan;\n }\n }\n p = p.next;\n }while (p !== stop);\n return m;\n}\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction $29f4da7a45653b83$var$sectorContainsSector(m, p) {\n return $29f4da7a45653b83$var$area(m.prev, m, p.prev) < 0 && $29f4da7a45653b83$var$area(p.next, m, m.next) < 0;\n}\n// interlink polygon nodes in z-order\nfunction $29f4da7a45653b83$var$indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = $29f4da7a45653b83$var$zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n }while (p !== start);\n p.prevZ.nextZ = null;\n p.prevZ = null;\n $29f4da7a45653b83$var$sortLinked(p);\n}\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction $29f4da7a45653b83$var$sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1;\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n while(p){\n numMerges++;\n q = p;\n pSize = 0;\n for(i = 0; i < inSize; i++){\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n while(pSize > 0 || qSize > 0 && q){\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n if (tail) tail.nextZ = e;\n else list = e;\n e.prevZ = tail;\n tail = e;\n }\n p = q;\n }\n tail.nextZ = null;\n inSize *= 2;\n }while (numMerges > 1);\n return list;\n}\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction $29f4da7a45653b83$var$zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n x = (x | x << 8) & 0x00FF00FF;\n x = (x | x << 4) & 0x0F0F0F0F;\n x = (x | x << 2) & 0x33333333;\n x = (x | x << 1) & 0x55555555;\n y = (y | y << 8) & 0x00FF00FF;\n y = (y | y << 4) & 0x0F0F0F0F;\n y = (y | y << 2) & 0x33333333;\n y = (y | y << 1) & 0x55555555;\n return x | y << 1;\n}\n// find the leftmost node of a polygon ring\nfunction $29f4da7a45653b83$var$getLeftmost(start) {\n var p = start, leftmost = start;\n do {\n if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y) leftmost = p;\n p = p.next;\n }while (p !== start);\n return leftmost;\n}\n// check if a point lies within a convex triangle\nfunction $29f4da7a45653b83$var$pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) && (ax - px) * (by - py) >= (bx - px) * (ay - py) && (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction $29f4da7a45653b83$var$isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !$29f4da7a45653b83$var$intersectsPolygon(a, b) && // dones't intersect other edges\n ($29f4da7a45653b83$var$locallyInside(a, b) && $29f4da7a45653b83$var$locallyInside(b, a) && $29f4da7a45653b83$var$middleInside(a, b) && // locally visible\n ($29f4da7a45653b83$var$area(a.prev, a, b.prev) || $29f4da7a45653b83$var$area(a, b.prev, b)) || // does not create opposite-facing sectors\n $29f4da7a45653b83$var$equals(a, b) && $29f4da7a45653b83$var$area(a.prev, a, a.next) > 0 && $29f4da7a45653b83$var$area(b.prev, b, b.next) > 0); // special zero-length case\n}\n// signed area of a triangle\nfunction $29f4da7a45653b83$var$area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n// check if two points are equal\nfunction $29f4da7a45653b83$var$equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n// check if two segments intersect\nfunction $29f4da7a45653b83$var$intersects(p1, q1, p2, q2) {\n var o1 = $29f4da7a45653b83$var$sign($29f4da7a45653b83$var$area(p1, q1, p2));\n var o2 = $29f4da7a45653b83$var$sign($29f4da7a45653b83$var$area(p1, q1, q2));\n var o3 = $29f4da7a45653b83$var$sign($29f4da7a45653b83$var$area(p2, q2, p1));\n var o4 = $29f4da7a45653b83$var$sign($29f4da7a45653b83$var$area(p2, q2, q1));\n if (o1 !== o2 && o3 !== o4) return true; // general case\n if (o1 === 0 && $29f4da7a45653b83$var$onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && $29f4da7a45653b83$var$onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && $29f4da7a45653b83$var$onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && $29f4da7a45653b83$var$onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n return false;\n}\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction $29f4da7a45653b83$var$onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\nfunction $29f4da7a45653b83$var$sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n// check if a polygon diagonal intersects any polygon segments\nfunction $29f4da7a45653b83$var$intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && $29f4da7a45653b83$var$intersects(p, p.next, a, b)) return true;\n p = p.next;\n }while (p !== a);\n return false;\n}\n// check if a polygon diagonal is locally inside the polygon\nfunction $29f4da7a45653b83$var$locallyInside(a, b) {\n return $29f4da7a45653b83$var$area(a.prev, a, a.next) < 0 ? $29f4da7a45653b83$var$area(a, b, a.next) >= 0 && $29f4da7a45653b83$var$area(a, a.prev, b) >= 0 : $29f4da7a45653b83$var$area(a, b, a.prev) < 0 || $29f4da7a45653b83$var$area(a, a.next, b) < 0;\n}\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction $29f4da7a45653b83$var$middleInside(a, b) {\n var p = a, inside = false, px = (a.x + b.x) / 2, py = (a.y + b.y) / 2;\n do {\n if (p.y > py !== p.next.y > py && p.next.y !== p.y && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x) inside = !inside;\n p = p.next;\n }while (p !== a);\n return inside;\n}\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction $29f4da7a45653b83$var$splitPolygon(a, b) {\n var a2 = new $29f4da7a45653b83$var$Node(a.i, a.x, a.y), b2 = new $29f4da7a45653b83$var$Node(b.i, b.x, b.y), an = a.next, bp = b.prev;\n a.next = b;\n b.prev = a;\n a2.next = an;\n an.prev = a2;\n b2.next = a2;\n a2.prev = b2;\n bp.next = b2;\n b2.prev = bp;\n return b2;\n}\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction $29f4da7a45653b83$var$insertNode(i, x, y, last) {\n var p = new $29f4da7a45653b83$var$Node(i, x, y);\n if (!last) {\n p.prev = p;\n p.next = p;\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\nfunction $29f4da7a45653b83$var$removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\nfunction $29f4da7a45653b83$var$Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n // vertex coordinates\n this.x = x;\n this.y = y;\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n // z-order curve value\n this.z = 0;\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\n$29f4da7a45653b83$var$earcut.deviation = function(data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n var polygonArea = Math.abs($29f4da7a45653b83$var$signedArea(data, 0, outerLen, dim));\n if (hasHoles) for(var i = 0, len = holeIndices.length; i < len; i++){\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs($29f4da7a45653b83$var$signedArea(data, start, end, dim));\n }\n var trianglesArea = 0;\n for(i = 0; i < triangles.length; i += 3){\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs((data[a] - data[c]) * (data[b + 1] - data[a + 1]) - (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n return polygonArea === 0 && trianglesArea === 0 ? 0 : Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\nfunction $29f4da7a45653b83$var$signedArea(data, start, end, dim) {\n var sum = 0;\n for(var i = start, j = end - dim; i < end; i += dim){\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\n$29f4da7a45653b83$var$earcut.flatten = function(data) {\n var dim = data[0][0].length, result = {\n vertices: [],\n holes: [],\n dimensions: dim\n }, holeIndex = 0;\n for(var i = 0; i < data.length; i++){\n for(var j = 0; j < data[i].length; j++)for(var d = 0; d < dim; d++)result.vertices.push(data[i][j][d]);\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n\n});\n\nparcelRegister(\"b5AlO\", function(module, exports) {\n\n$parcel$export(module.exports, \"getPolygonSignedArea\", function () { return (parcelRequire(\"2d6CO\")).getPolygonSignedArea; });\n$parcel$export(module.exports, \"modifyPolygonWindingDirection\", function () { return (parcelRequire(\"2d6CO\")).modifyPolygonWindingDirection; });\n$parcel$export(module.exports, \"WINDING\", function () { return (parcelRequire(\"2d6CO\")).WINDING; });\n$parcel$export(module.exports, \"earcut\", function () { return (parcelRequire(\"kbKbN\")).earcut; });\n$parcel$export(module.exports, \"cutPolygonByGrid\", function () { return (parcelRequire(\"drfwC\")).cutPolygonByGrid; });\n$parcel$export(module.exports, \"cutPolylineByGrid\", function () { return (parcelRequire(\"drfwC\")).cutPolylineByGrid; });\n$parcel$export(module.exports, \"cutPolylineByMercatorBounds\", function () { return (parcelRequire(\"6Kcrp\")).cutPolylineByMercatorBounds; });\n$parcel$export(module.exports, \"cutPolygonByMercatorBounds\", function () { return (parcelRequire(\"6Kcrp\")).cutPolygonByMercatorBounds; });\n\nvar $eAvut = parcelRequire(\"eAvut\");\n\nvar $2d6CO = parcelRequire(\"2d6CO\");\n\nvar $kbKbN = parcelRequire(\"kbKbN\");\n\nvar $1Uh5y = parcelRequire(\"1Uh5y\");\n\nvar $drfwC = parcelRequire(\"drfwC\");\n\nvar $6Kcrp = parcelRequire(\"6Kcrp\");\n\n});\nparcelRegister(\"eAvut\", function(module, exports) {\n\nvar $1F5uH = parcelRequire(\"1F5uH\");\n\nvar $cwF9s = parcelRequire(\"cwF9s\");\n\nvar $2d6CO = parcelRequire(\"2d6CO\");\nclass $a9ecdad4b450b1a2$export$2e2bcd8739ae039 {\n getSignedArea() {\n if (this.isFlatArray) return (0, $2d6CO.getPolygonSignedArea)(this.points, this.options);\n return (0, $2d6CO.getPolygonSignedAreaPoints)(this.points, this.options);\n }\n getArea() {\n return Math.abs(this.getSignedArea());\n }\n getWindingDirection() {\n return Math.sign(this.getSignedArea());\n }\n forEachSegment(visitor) {\n if (this.isFlatArray) (0, $2d6CO.forEachSegmentInPolygon)(this.points, (x1, y1, x2, y2, i1, i2)=>{\n visitor([\n x1,\n y1\n ], [\n x2,\n y2\n ], i1, i2);\n }, this.options);\n else (0, $2d6CO.forEachSegmentInPolygonPoints)(this.points, visitor, this.options);\n }\n modifyWindingDirection(direction) {\n if (this.isFlatArray) return (0, $2d6CO.modifyPolygonWindingDirection)(this.points, direction, this.options);\n return (0, $2d6CO.modifyPolygonWindingDirectionPoints)(this.points, direction, this.options);\n }\n constructor(points, options = {}){\n (0, $1F5uH.default)(this, \"points\", void 0);\n (0, $1F5uH.default)(this, \"isFlatArray\", void 0);\n (0, $1F5uH.default)(this, \"options\", void 0);\n this.points = points;\n this.isFlatArray = !(0, $cwF9s.isArray)(points[0]);\n this.options = {\n start: options.start || 0,\n end: options.end || points.length,\n size: options.size || 2,\n isClosed: options.isClosed\n };\n Object.freeze(this);\n }\n}\n\n});\nparcelRegister(\"2d6CO\", function(module, exports) {\n\n$parcel$export(module.exports, \"WINDING\", function () { return $19c1ef3bfe162178$export$7a90ca0b01b30dce; });\n$parcel$export(module.exports, \"modifyPolygonWindingDirection\", function () { return $19c1ef3bfe162178$export$3c1df49c9961d1cb; });\n$parcel$export(module.exports, \"getPolygonSignedArea\", function () { return $19c1ef3bfe162178$export$bd6d1e7ba21aa7f7; });\n$parcel$export(module.exports, \"forEachSegmentInPolygon\", function () { return $19c1ef3bfe162178$export$260bd294793e0f1c; });\n$parcel$export(module.exports, \"modifyPolygonWindingDirectionPoints\", function () { return $19c1ef3bfe162178$export$fae93f15be6f8b04; });\n$parcel$export(module.exports, \"getPolygonSignedAreaPoints\", function () { return $19c1ef3bfe162178$export$989f242c9077c44f; });\n$parcel$export(module.exports, \"forEachSegmentInPolygonPoints\", function () { return $19c1ef3bfe162178$export$9513103b5db0cc92; });\n\nvar $cwF9s = parcelRequire(\"cwF9s\");\nconst $19c1ef3bfe162178$export$7a90ca0b01b30dce = {\n CLOCKWISE: 1,\n COUNTER_CLOCKWISE: -1\n};\nfunction $19c1ef3bfe162178$export$3c1df49c9961d1cb(points, direction, options = {}) {\n const windingDirection = $19c1ef3bfe162178$export$b673bcea9fcfa4e5(points, options);\n if (windingDirection !== direction) {\n $19c1ef3bfe162178$var$reversePolygon(points, options);\n return true;\n }\n return false;\n}\nfunction $19c1ef3bfe162178$export$b673bcea9fcfa4e5(points, options = {}) {\n return Math.sign($19c1ef3bfe162178$export$bd6d1e7ba21aa7f7(points, options));\n}\nfunction $19c1ef3bfe162178$export$bd6d1e7ba21aa7f7(points, options = {}) {\n const { start: start = 0, end: end = points.length } = options;\n const dim = options.size || 2;\n let area = 0;\n for(let i = start, j = end - dim; i < end; i += dim){\n area += (points[i] - points[j]) * (points[i + 1] + points[j + 1]);\n j = i;\n }\n return area / 2;\n}\nfunction $19c1ef3bfe162178$export$260bd294793e0f1c(points, visitor, options = {}) {\n const { start: start = 0, end: end = points.length, size: size = 2, isClosed: isClosed } = options;\n const numPoints = (end - start) / size;\n for(let i = 0; i < numPoints - 1; ++i)visitor(points[start + i * size], points[start + i * size + 1], points[start + (i + 1) * size], points[start + (i + 1) * size + 1], i, i + 1);\n const endPointIndex = start + (numPoints - 1) * size;\n const isClosedEx = isClosed || (0, $cwF9s.equals)(points[start], points[endPointIndex]) && (0, $cwF9s.equals)(points[start + 1], points[endPointIndex + 1]);\n if (!isClosedEx) visitor(points[endPointIndex], points[endPointIndex + 1], points[start], points[start + 1], numPoints - 1, 0);\n}\nfunction $19c1ef3bfe162178$var$reversePolygon(points, options) {\n const { start: start = 0, end: end = points.length, size: size = 2 } = options;\n const numPoints = (end - start) / size;\n const numSwaps = Math.floor(numPoints / 2);\n for(let i = 0; i < numSwaps; ++i){\n const b1 = start + i * size;\n const b2 = start + (numPoints - 1 - i) * size;\n for(let j = 0; j < size; ++j){\n const tmp = points[b1 + j];\n points[b1 + j] = points[b2 + j];\n points[b2 + j] = tmp;\n }\n }\n}\nfunction $19c1ef3bfe162178$export$fae93f15be6f8b04(points, direction, options = {}) {\n const currentDirection = $19c1ef3bfe162178$export$4a06945e8e3dbc40(points, options);\n if (currentDirection !== direction) {\n points.reverse();\n return true;\n }\n return false;\n}\nfunction $19c1ef3bfe162178$export$4a06945e8e3dbc40(points, options = {}) {\n return Math.sign($19c1ef3bfe162178$export$989f242c9077c44f(points, options));\n}\nfunction $19c1ef3bfe162178$export$989f242c9077c44f(points, options = {}) {\n const { start: start = 0, end: end = points.length } = options;\n let area = 0;\n for(let i = start, j = end - 1; i < end; ++i){\n area += (points[i][0] - points[j][0]) * (points[i][1] + points[j][1]);\n j = i;\n }\n return area / 2;\n}\nfunction $19c1ef3bfe162178$export$9513103b5db0cc92(points, visitor, options = {}) {\n const { start: start = 0, end: end = points.length, isClosed: isClosed } = options;\n for(let i = start; i < end - 1; ++i)visitor(points[i], points[i + 1], i, i + 1);\n const isClosedEx = isClosed || (0, $cwF9s.equals)(points[end - 1], points[0]);\n if (!isClosedEx) visitor(points[end - 1], points[0], end - 1, 0);\n}\n\n});\n\n\nparcelRegister(\"kbKbN\", function(module, exports) {\n\n$parcel$export(module.exports, \"earcut\", function () { return $eb28a9f7238becb4$export$71a1409458eaaf0d; });\n\nvar $2d6CO = parcelRequire(\"2d6CO\");\nfunction $eb28a9f7238becb4$export$71a1409458eaaf0d(positions, holeIndices, dim = 2, areas) {\n const hasHoles = holeIndices && holeIndices.length;\n const outerLen = hasHoles ? holeIndices[0] * dim : positions.length;\n let outerNode = $eb28a9f7238becb4$var$linkedList(positions, 0, outerLen, dim, true, areas && areas[0]);\n const triangles = [];\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n let invSize;\n let maxX;\n let maxY;\n let minX;\n let minY;\n let x;\n let y;\n if (hasHoles) outerNode = $eb28a9f7238becb4$var$eliminateHoles(positions, holeIndices, outerNode, dim, areas);\n if (positions.length > 80 * dim) {\n minX = maxX = positions[0];\n minY = maxY = positions[1];\n for(let i = dim; i < outerLen; i += dim){\n x = positions[i];\n y = positions[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n $eb28a9f7238becb4$var$earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n return triangles;\n}\nfunction $eb28a9f7238becb4$var$linkedList(data, start, end, dim, clockwise, area) {\n let i;\n let last;\n if (area === undefined) area = (0, $2d6CO.getPolygonSignedArea)(data, {\n start: start,\n end: end,\n size: dim\n });\n if (clockwise === area < 0) for(i = start; i < end; i += dim)last = $eb28a9f7238becb4$var$insertNode(i, data[i], data[i + 1], last);\n else for(i = end - dim; i >= start; i -= dim)last = $eb28a9f7238becb4$var$insertNode(i, data[i], data[i + 1], last);\n if (last && $eb28a9f7238becb4$var$equals(last, last.next)) {\n $eb28a9f7238becb4$var$removeNode(last);\n last = last.next;\n }\n return last;\n}\nfunction $eb28a9f7238becb4$var$filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n let p = start;\n let again;\n do {\n again = false;\n if (!p.steiner && ($eb28a9f7238becb4$var$equals(p, p.next) || $eb28a9f7238becb4$var$area(p.prev, p, p.next) === 0)) {\n $eb28a9f7238becb4$var$removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n } else p = p.next;\n }while (again || p !== end);\n return end;\n}\nfunction $eb28a9f7238becb4$var$earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n if (!pass && invSize) $eb28a9f7238becb4$var$indexCurve(ear, minX, minY, invSize);\n let stop = ear;\n let prev;\n let next;\n while(ear.prev !== ear.next){\n prev = ear.prev;\n next = ear.next;\n if (invSize ? $eb28a9f7238becb4$var$isEarHashed(ear, minX, minY, invSize) : $eb28a9f7238becb4$var$isEar(ear)) {\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n $eb28a9f7238becb4$var$removeNode(ear);\n ear = next.next;\n stop = next.next;\n continue;\n }\n ear = next;\n if (ear === stop) {\n if (!pass) $eb28a9f7238becb4$var$earcutLinked($eb28a9f7238becb4$var$filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n else if (pass === 1) {\n ear = $eb28a9f7238becb4$var$cureLocalIntersections($eb28a9f7238becb4$var$filterPoints(ear), triangles, dim);\n $eb28a9f7238becb4$var$earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n } else if (pass === 2) $eb28a9f7238becb4$var$splitEarcut(ear, triangles, dim, minX, minY, invSize);\n break;\n }\n }\n}\nfunction $eb28a9f7238becb4$var$isEar(ear) {\n const a = ear.prev;\n const b = ear;\n const c = ear.next;\n if ($eb28a9f7238becb4$var$area(a, b, c) >= 0) return false;\n let p = ear.next.next;\n while(p !== ear.prev){\n if ($eb28a9f7238becb4$var$pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && $eb28a9f7238becb4$var$area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n return true;\n}\nfunction $eb28a9f7238becb4$var$isEarHashed(ear, minX, minY, invSize) {\n const a = ear.prev;\n const b = ear;\n const c = ear.next;\n if ($eb28a9f7238becb4$var$area(a, b, c) >= 0) return false;\n const minTX = a.x < b.x ? a.x < c.x ? a.x : c.x : b.x < c.x ? b.x : c.x;\n const minTY = a.y < b.y ? a.y < c.y ? a.y : c.y : b.y < c.y ? b.y : c.y;\n const maxTX = a.x > b.x ? a.x > c.x ? a.x : c.x : b.x > c.x ? b.x : c.x;\n const maxTY = a.y > b.y ? a.y > c.y ? a.y : c.y : b.y > c.y ? b.y : c.y;\n const minZ = $eb28a9f7238becb4$var$zOrder(minTX, minTY, minX, minY, invSize);\n const maxZ = $eb28a9f7238becb4$var$zOrder(maxTX, maxTY, minX, minY, invSize);\n let p = ear.prevZ;\n let n = ear.nextZ;\n while(p && p.z >= minZ && n && n.z <= maxZ){\n if (p !== ear.prev && p !== ear.next && $eb28a9f7238becb4$var$pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && $eb28a9f7238becb4$var$area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n if (n !== ear.prev && n !== ear.next && $eb28a9f7238becb4$var$pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && $eb28a9f7238becb4$var$area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n while(p && p.z >= minZ){\n if (p !== ear.prev && p !== ear.next && $eb28a9f7238becb4$var$pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && $eb28a9f7238becb4$var$area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n while(n && n.z <= maxZ){\n if (n !== ear.prev && n !== ear.next && $eb28a9f7238becb4$var$pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && $eb28a9f7238becb4$var$area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n return true;\n}\nfunction $eb28a9f7238becb4$var$cureLocalIntersections(start, triangles, dim) {\n let p = start;\n do {\n const a = p.prev;\n const b = p.next.next;\n if (!$eb28a9f7238becb4$var$equals(a, b) && $eb28a9f7238becb4$var$intersects(a, p, p.next, b) && $eb28a9f7238becb4$var$locallyInside(a, b) && $eb28a9f7238becb4$var$locallyInside(b, a)) {\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n $eb28a9f7238becb4$var$removeNode(p);\n $eb28a9f7238becb4$var$removeNode(p.next);\n p = start = b;\n }\n p = p.next;\n }while (p !== start);\n return $eb28a9f7238becb4$var$filterPoints(p);\n}\nfunction $eb28a9f7238becb4$var$splitEarcut(start, triangles, dim, minX, minY, invSize) {\n let a = start;\n do {\n let b = a.next.next;\n while(b !== a.prev){\n if (a.i !== b.i && $eb28a9f7238becb4$var$isValidDiagonal(a, b)) {\n let c = $eb28a9f7238becb4$var$splitPolygon(a, b);\n a = $eb28a9f7238becb4$var$filterPoints(a, a.next);\n c = $eb28a9f7238becb4$var$filterPoints(c, c.next);\n $eb28a9f7238becb4$var$earcutLinked(a, triangles, dim, minX, minY, invSize);\n $eb28a9f7238becb4$var$earcutLinked(c, triangles, dim, minX, minY, invSize);\n return;\n }\n b = b.next;\n }\n a = a.next;\n }while (a !== start);\n}\nfunction $eb28a9f7238becb4$var$eliminateHoles(data, holeIndices, outerNode, dim, areas) {\n const queue = [];\n let i;\n let len;\n let start;\n let end;\n let list;\n for(i = 0, len = holeIndices.length; i < len; i++){\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = $eb28a9f7238becb4$var$linkedList(data, start, end, dim, false, areas && areas[i + 1]);\n if (list === list.next) list.steiner = true;\n queue.push($eb28a9f7238becb4$var$getLeftmost(list));\n }\n queue.sort($eb28a9f7238becb4$var$compareX);\n for(i = 0; i < queue.length; i++){\n $eb28a9f7238becb4$var$eliminateHole(queue[i], outerNode);\n outerNode = $eb28a9f7238becb4$var$filterPoints(outerNode, outerNode.next);\n }\n return outerNode;\n}\nfunction $eb28a9f7238becb4$var$compareX(a, b) {\n return a.x - b.x;\n}\nfunction $eb28a9f7238becb4$var$eliminateHole(hole, outerNode) {\n outerNode = $eb28a9f7238becb4$var$findHoleBridge(hole, outerNode);\n if (outerNode) {\n const b = $eb28a9f7238becb4$var$splitPolygon(outerNode, hole);\n $eb28a9f7238becb4$var$filterPoints(outerNode, outerNode.next);\n $eb28a9f7238becb4$var$filterPoints(b, b.next);\n }\n}\nfunction $eb28a9f7238becb4$var$findHoleBridge(hole, outerNode) {\n let p = outerNode;\n const hx = hole.x;\n const hy = hole.y;\n let qx = -Infinity;\n let m;\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n if (x === hx) {\n if (hy === p.y) return p;\n if (hy === p.next.y) return p.next;\n }\n m = p.x < p.next.x ? p : p.next;\n }\n }\n p = p.next;\n }while (p !== outerNode);\n if (!m) return null;\n if (hx === qx) return m;\n const stop = m;\n const mx = m.x;\n const my = m.y;\n let tanMin = Infinity;\n let tan;\n p = m;\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x && $eb28a9f7238becb4$var$pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n tan = Math.abs(hy - p.y) / (hx - p.x);\n if ($eb28a9f7238becb4$var$locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && $eb28a9f7238becb4$var$sectorContainsSector(m, p)))) {\n m = p;\n tanMin = tan;\n }\n }\n p = p.next;\n }while (p !== stop);\n return m;\n}\nfunction $eb28a9f7238becb4$var$sectorContainsSector(m, p) {\n return $eb28a9f7238becb4$var$area(m.prev, m, p.prev) < 0 && $eb28a9f7238becb4$var$area(p.next, m, m.next) < 0;\n}\nfunction $eb28a9f7238becb4$var$indexCurve(start, minX, minY, invSize) {\n let p = start;\n do {\n if (p.z === null) p.z = $eb28a9f7238becb4$var$zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n }while (p !== start);\n p.prevZ.nextZ = null;\n p.prevZ = null;\n $eb28a9f7238becb4$var$sortLinked(p);\n}\nfunction $eb28a9f7238becb4$var$sortLinked(list) {\n let e;\n let i;\n let inSize = 1;\n let numMerges;\n let p;\n let pSize;\n let q;\n let qSize;\n let tail;\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n while(p){\n numMerges++;\n q = p;\n pSize = 0;\n for(i = 0; i < inSize; i++){\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n while(pSize > 0 || qSize > 0 && q){\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n if (tail) tail.nextZ = e;\n else list = e;\n e.prevZ = tail;\n tail = e;\n }\n p = q;\n }\n tail.nextZ = null;\n inSize *= 2;\n }while (numMerges > 1);\n return list;\n}\nfunction $eb28a9f7238becb4$var$zOrder(x, y, minX, minY, invSize) {\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n x = (x | x << 8) & 0x00ff00ff;\n x = (x | x << 4) & 0x0f0f0f0f;\n x = (x | x << 2) & 0x33333333;\n x = (x | x << 1) & 0x55555555;\n y = (y | y << 8) & 0x00ff00ff;\n y = (y | y << 4) & 0x0f0f0f0f;\n y = (y | y << 2) & 0x33333333;\n y = (y | y << 1) & 0x55555555;\n return x | y << 1;\n}\nfunction $eb28a9f7238becb4$var$getLeftmost(start) {\n let p = start;\n let leftmost = start;\n do {\n if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y) leftmost = p;\n p = p.next;\n }while (p !== start);\n return leftmost;\n}\nfunction $eb28a9f7238becb4$var$pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 && (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 && (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\nfunction $eb28a9f7238becb4$var$isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !$eb28a9f7238becb4$var$intersectsPolygon(a, b) && ($eb28a9f7238becb4$var$locallyInside(a, b) && $eb28a9f7238becb4$var$locallyInside(b, a) && $eb28a9f7238becb4$var$middleInside(a, b) && ($eb28a9f7238becb4$var$area(a.prev, a, b.prev) || $eb28a9f7238becb4$var$area(a, b.prev, b)) || $eb28a9f7238becb4$var$equals(a, b) && $eb28a9f7238becb4$var$area(a.prev, a, a.next) > 0 && $eb28a9f7238becb4$var$area(b.prev, b, b.next) > 0);\n}\nfunction $eb28a9f7238becb4$var$area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\nfunction $eb28a9f7238becb4$var$equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\nfunction $eb28a9f7238becb4$var$intersects(p1, q1, p2, q2) {\n const o1 = $eb28a9f7238becb4$var$sign($eb28a9f7238becb4$var$area(p1, q1, p2));\n const o2 = $eb28a9f7238becb4$var$sign($eb28a9f7238becb4$var$area(p1, q1, q2));\n const o3 = $eb28a9f7238becb4$var$sign($eb28a9f7238becb4$var$area(p2, q2, p1));\n const o4 = $eb28a9f7238becb4$var$sign($eb28a9f7238becb4$var$area(p2, q2, q1));\n if (o1 !== o2 && o3 !== o4) return true;\n if (o1 === 0 && $eb28a9f7238becb4$var$onSegment(p1, p2, q1)) return true;\n if (o2 === 0 && $eb28a9f7238becb4$var$onSegment(p1, q2, q1)) return true;\n if (o3 === 0 && $eb28a9f7238becb4$var$onSegment(p2, p1, q2)) return true;\n if (o4 === 0 && $eb28a9f7238becb4$var$onSegment(p2, q1, q2)) return true;\n return false;\n}\nfunction $eb28a9f7238becb4$var$onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\nfunction $eb28a9f7238becb4$var$sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\nfunction $eb28a9f7238becb4$var$intersectsPolygon(a, b) {\n let p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && $eb28a9f7238becb4$var$intersects(p, p.next, a, b)) return true;\n p = p.next;\n }while (p !== a);\n return false;\n}\nfunction $eb28a9f7238becb4$var$locallyInside(a, b) {\n return $eb28a9f7238becb4$var$area(a.prev, a, a.next) < 0 ? $eb28a9f7238becb4$var$area(a, b, a.next) >= 0 && $eb28a9f7238becb4$var$area(a, a.prev, b) >= 0 : $eb28a9f7238becb4$var$area(a, b, a.prev) < 0 || $eb28a9f7238becb4$var$area(a, a.next, b) < 0;\n}\nfunction $eb28a9f7238becb4$var$middleInside(a, b) {\n let p = a;\n let inside = false;\n const px = (a.x + b.x) / 2;\n const py = (a.y + b.y) / 2;\n do {\n if (p.y > py !== p.next.y > py && p.next.y !== p.y && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x) inside = !inside;\n p = p.next;\n }while (p !== a);\n return inside;\n}\nfunction $eb28a9f7238becb4$var$splitPolygon(a, b) {\n const a2 = new $eb28a9f7238becb4$var$Node(a.i, a.x, a.y);\n const b2 = new $eb28a9f7238becb4$var$Node(b.i, b.x, b.y);\n const an = a.next;\n const bp = b.prev;\n a.next = b;\n b.prev = a;\n a2.next = an;\n an.prev = a2;\n b2.next = a2;\n a2.prev = b2;\n bp.next = b2;\n b2.prev = bp;\n return b2;\n}\nfunction $eb28a9f7238becb4$var$insertNode(i, x, y, last) {\n const p = new $eb28a9f7238becb4$var$Node(i, x, y);\n if (!last) {\n p.prev = p;\n p.next = p;\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\nfunction $eb28a9f7238becb4$var$removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\nfunction $eb28a9f7238becb4$var$Node(i, x, y) {\n this.i = i;\n this.x = x;\n this.y = y;\n this.prev = null;\n this.next = null;\n this.z = null;\n this.prevZ = null;\n this.nextZ = null;\n this.steiner = false;\n}\n\n});\n\nparcelRegister(\"1Uh5y\", function(module, exports) {\n\n$parcel$export(module.exports, \"bitCode\", function () { return $163846de17e48400$export$a06e53aa5bb2c44b; });\n$parcel$export(module.exports, \"intersect\", function () { return $163846de17e48400$export$1f4807a235930d45; });\n\nvar $96tab = parcelRequire(\"96tab\");\nfunction $163846de17e48400$export$7a2d1c8b44adea76(positions, bbox, options) {\n const { size: size = 2, startIndex: startIndex = 0, endIndex: endIndex = positions.length } = options || {};\n const numPoints = (endIndex - startIndex) / size;\n const result = [];\n let part = [];\n let a;\n let b;\n let codeA = -1;\n let codeB;\n let lastCode;\n for(let i = 1; i < numPoints; i++){\n a = (0, $96tab.getPointAtIndex)(positions, i - 1, size, startIndex, a);\n b = (0, $96tab.getPointAtIndex)(positions, i, size, startIndex, b);\n if (codeA < 0) codeA = $163846de17e48400$export$a06e53aa5bb2c44b(a, bbox);\n codeB = lastCode = $163846de17e48400$export$a06e53aa5bb2c44b(b, bbox);\n while(true){\n if (!(codeA | codeB)) {\n (0, $96tab.push)(part, a);\n if (codeB !== lastCode) {\n (0, $96tab.push)(part, b);\n if (i < numPoints - 1) {\n result.push(part);\n part = [];\n }\n } else if (i === numPoints - 1) (0, $96tab.push)(part, b);\n break;\n } else if (codeA & codeB) break;\n else if (codeA) {\n $163846de17e48400$export$1f4807a235930d45(a, b, codeA, bbox, a);\n codeA = $163846de17e48400$export$a06e53aa5bb2c44b(a, bbox);\n } else {\n $163846de17e48400$export$1f4807a235930d45(a, b, codeB, bbox, b);\n codeB = $163846de17e48400$export$a06e53aa5bb2c44b(b, bbox);\n }\n }\n codeA = lastCode;\n }\n if (part.length) result.push(part);\n return result;\n}\nfunction $163846de17e48400$export$cf9573e980d97240(positions, bbox, options) {\n const { size: size = 2, endIndex: endIndex = positions.length } = options || {};\n let { startIndex: startIndex = 0 } = options || {};\n let numPoints = (endIndex - startIndex) / size;\n let result;\n let p;\n let prev;\n let inside;\n let prevInside;\n for(let edge = 1; edge <= 8; edge *= 2){\n result = [];\n prev = (0, $96tab.getPointAtIndex)(positions, numPoints - 1, size, startIndex, prev);\n prevInside = !($163846de17e48400$export$a06e53aa5bb2c44b(prev, bbox) & edge);\n for(let i = 0; i < numPoints; i++){\n p = (0, $96tab.getPointAtIndex)(positions, i, size, startIndex, p);\n inside = !($163846de17e48400$export$a06e53aa5bb2c44b(p, bbox) & edge);\n if (inside !== prevInside) (0, $96tab.push)(result, $163846de17e48400$export$1f4807a235930d45(prev, p, edge, bbox));\n if (inside) (0, $96tab.push)(result, p);\n (0, $96tab.copy)(prev, p);\n prevInside = inside;\n }\n positions = result;\n startIndex = 0;\n numPoints = result.length / size;\n if (!numPoints) break;\n }\n return result;\n}\nfunction $163846de17e48400$export$1f4807a235930d45(a, b, edge, bbox, out = []) {\n let t;\n let snap;\n if (edge & 8) {\n t = (bbox[3] - a[1]) / (b[1] - a[1]);\n snap = 3;\n } else if (edge & 4) {\n t = (bbox[1] - a[1]) / (b[1] - a[1]);\n snap = 1;\n } else if (edge & 2) {\n t = (bbox[2] - a[0]) / (b[0] - a[0]);\n snap = 2;\n } else if (edge & 1) {\n t = (bbox[0] - a[0]) / (b[0] - a[0]);\n snap = 0;\n } else return null;\n for(let i = 0; i < a.length; i++)out[i] = (snap & 1) === i ? bbox[snap] : t * (b[i] - a[i]) + a[i];\n return out;\n}\nfunction $163846de17e48400$export$a06e53aa5bb2c44b(p, bbox) {\n let code = 0;\n if (p[0] < bbox[0]) code |= 1;\n else if (p[0] > bbox[2]) code |= 2;\n if (p[1] < bbox[1]) code |= 4;\n else if (p[1] > bbox[3]) code |= 8;\n return code;\n}\n\n});\nparcelRegister(\"96tab\", function(module, exports) {\n\n$parcel$export(module.exports, \"push\", function () { return $6a0b4bceadb7b0ee$export$4cbf152802aa238; });\n$parcel$export(module.exports, \"copy\", function () { return $6a0b4bceadb7b0ee$export$784d13d8ee351f07; });\n$parcel$export(module.exports, \"getPointAtIndex\", function () { return $6a0b4bceadb7b0ee$export$44f3a897a4708e95; });\nfunction $6a0b4bceadb7b0ee$export$4cbf152802aa238(target, source) {\n const size = source.length;\n const startIndex = target.length;\n if (startIndex > 0) {\n let isDuplicate = true;\n for(let i = 0; i < size; i++)if (target[startIndex - size + i] !== source[i]) {\n isDuplicate = false;\n break;\n }\n if (isDuplicate) return false;\n }\n for(let i = 0; i < size; i++)target[startIndex + i] = source[i];\n return true;\n}\nfunction $6a0b4bceadb7b0ee$export$784d13d8ee351f07(target, source) {\n const size = source.length;\n for(let i = 0; i < size; i++)target[i] = source[i];\n}\nfunction $6a0b4bceadb7b0ee$export$44f3a897a4708e95(positions, index, size, offset, out = []) {\n const startI = offset + index * size;\n for(let i = 0; i < size; i++)out[i] = positions[startI + i];\n return out;\n}\n\n});\n\n\nparcelRegister(\"drfwC\", function(module, exports) {\n\n$parcel$export(module.exports, \"cutPolylineByGrid\", function () { return $9c89d6f12b5117ec$export$58cf240f51ca277a; });\n$parcel$export(module.exports, \"cutPolygonByGrid\", function () { return $9c89d6f12b5117ec$export$ffcdb188e8d27cc1; });\n\nvar $1Uh5y = parcelRequire(\"1Uh5y\");\n\nvar $96tab = parcelRequire(\"96tab\");\nfunction $9c89d6f12b5117ec$export$58cf240f51ca277a(positions, options) {\n const { size: size = 2, broken: broken = false, gridResolution: gridResolution = 10, gridOffset: gridOffset = [\n 0,\n 0\n ], startIndex: startIndex = 0, endIndex: endIndex = positions.length } = options || {};\n const numPoints = (endIndex - startIndex) / size;\n let part = [];\n const result = [\n part\n ];\n const a = (0, $96tab.getPointAtIndex)(positions, 0, size, startIndex);\n let b;\n let codeB;\n const cell = $9c89d6f12b5117ec$var$getGridCell(a, gridResolution, gridOffset, []);\n const scratchPoint = [];\n (0, $96tab.push)(part, a);\n for(let i = 1; i < numPoints; i++){\n b = (0, $96tab.getPointAtIndex)(positions, i, size, startIndex, b);\n codeB = (0, $1Uh5y.bitCode)(b, cell);\n while(codeB){\n (0, $1Uh5y.intersect)(a, b, codeB, cell, scratchPoint);\n const codeAlt = (0, $1Uh5y.bitCode)(scratchPoint, cell);\n if (codeAlt) {\n (0, $1Uh5y.intersect)(a, scratchPoint, codeAlt, cell, scratchPoint);\n codeB = codeAlt;\n }\n (0, $96tab.push)(part, scratchPoint);\n (0, $96tab.copy)(a, scratchPoint);\n $9c89d6f12b5117ec$var$moveToNeighborCell(cell, gridResolution, codeB);\n if (broken && part.length > size) {\n part = [];\n result.push(part);\n (0, $96tab.push)(part, a);\n }\n codeB = (0, $1Uh5y.bitCode)(b, cell);\n }\n (0, $96tab.push)(part, b);\n (0, $96tab.copy)(a, b);\n }\n return broken ? result : result[0];\n}\nconst $9c89d6f12b5117ec$var$TYPE_INSIDE = 0;\nconst $9c89d6f12b5117ec$var$TYPE_BORDER = 1;\nfunction $9c89d6f12b5117ec$var$concatInPlace(arr1, arr2) {\n for(let i = 0; i < arr2.length; i++)arr1.push(arr2[i]);\n return arr1;\n}\nfunction $9c89d6f12b5117ec$export$ffcdb188e8d27cc1(positions, holeIndices = null, options) {\n if (!positions.length) return [];\n const { size: size = 2, gridResolution: gridResolution = 10, gridOffset: gridOffset = [\n 0,\n 0\n ], edgeTypes: edgeTypes = false } = options || {};\n const result = [];\n const queue = [\n {\n pos: positions,\n types: edgeTypes ? new Array(positions.length / size).fill($9c89d6f12b5117ec$var$TYPE_BORDER) : null,\n holes: holeIndices || []\n }\n ];\n const bbox = [\n [],\n []\n ];\n let cell = [];\n while(queue.length){\n const { pos: pos, types: types, holes: holes } = queue.shift();\n $9c89d6f12b5117ec$var$getBoundingBox(pos, size, holes[0] || pos.length, bbox);\n cell = $9c89d6f12b5117ec$var$getGridCell(bbox[0], gridResolution, gridOffset, cell);\n const code = (0, $1Uh5y.bitCode)(bbox[1], cell);\n if (code) {\n let parts = $9c89d6f12b5117ec$var$bisectPolygon(pos, types, size, 0, holes[0] || pos.length, cell, code);\n const polygonLow = {\n pos: parts[0].pos,\n types: parts[0].types,\n holes: []\n };\n const polygonHigh = {\n pos: parts[1].pos,\n types: parts[1].types,\n holes: []\n };\n queue.push(polygonLow, polygonHigh);\n for(let i = 0; i < holes.length; i++){\n parts = $9c89d6f12b5117ec$var$bisectPolygon(pos, types, size, holes[i], holes[i + 1] || pos.length, cell, code);\n if (parts[0]) {\n polygonLow.holes.push(polygonLow.pos.length);\n polygonLow.pos = $9c89d6f12b5117ec$var$concatInPlace(polygonLow.pos, parts[0].pos);\n if (edgeTypes) polygonLow.types = $9c89d6f12b5117ec$var$concatInPlace(polygonLow.types, parts[0].types);\n }\n if (parts[1]) {\n polygonHigh.holes.push(polygonHigh.pos.length);\n polygonHigh.pos = $9c89d6f12b5117ec$var$concatInPlace(polygonHigh.pos, parts[1].pos);\n if (edgeTypes) polygonHigh.types = $9c89d6f12b5117ec$var$concatInPlace(polygonHigh.types, parts[1].types);\n }\n }\n } else {\n const polygon = {\n positions: pos\n };\n if (edgeTypes) polygon.edgeTypes = types;\n if (holes.length) polygon.holeIndices = holes;\n result.push(polygon);\n }\n }\n return result;\n}\nfunction $9c89d6f12b5117ec$var$bisectPolygon(positions, edgeTypes, size, startIndex, endIndex, bbox, edge) {\n const numPoints = (endIndex - startIndex) / size;\n const resultLow = [];\n const resultHigh = [];\n const typesLow = [];\n const typesHigh = [];\n const scratchPoint = [];\n let p;\n let side;\n let type;\n const prev = (0, $96tab.getPointAtIndex)(positions, numPoints - 1, size, startIndex);\n let prevSide = Math.sign(edge & 8 ? prev[1] - bbox[3] : prev[0] - bbox[2]);\n let prevType = edgeTypes && edgeTypes[numPoints - 1];\n let lowPointCount = 0;\n let highPointCount = 0;\n for(let i = 0; i < numPoints; i++){\n p = (0, $96tab.getPointAtIndex)(positions, i, size, startIndex, p);\n side = Math.sign(edge & 8 ? p[1] - bbox[3] : p[0] - bbox[2]);\n type = edgeTypes && edgeTypes[startIndex / size + i];\n if (side && prevSide && prevSide !== side) {\n (0, $1Uh5y.intersect)(prev, p, edge, bbox, scratchPoint);\n (0, $96tab.push)(resultLow, scratchPoint) && typesLow.push(prevType);\n (0, $96tab.push)(resultHigh, scratchPoint) && typesHigh.push(prevType);\n }\n if (side <= 0) {\n (0, $96tab.push)(resultLow, p) && typesLow.push(type);\n lowPointCount -= side;\n } else if (typesLow.length) typesLow[typesLow.length - 1] = $9c89d6f12b5117ec$var$TYPE_INSIDE;\n if (side >= 0) {\n (0, $96tab.push)(resultHigh, p) && typesHigh.push(type);\n highPointCount += side;\n } else if (typesHigh.length) typesHigh[typesHigh.length - 1] = $9c89d6f12b5117ec$var$TYPE_INSIDE;\n (0, $96tab.copy)(prev, p);\n prevSide = side;\n prevType = type;\n }\n return [\n lowPointCount ? {\n pos: resultLow,\n types: edgeTypes && typesLow\n } : null,\n highPointCount ? {\n pos: resultHigh,\n types: edgeTypes && typesHigh\n } : null\n ];\n}\nfunction $9c89d6f12b5117ec$var$getGridCell(p, gridResolution, gridOffset, out) {\n const left = Math.floor((p[0] - gridOffset[0]) / gridResolution) * gridResolution + gridOffset[0];\n const bottom = Math.floor((p[1] - gridOffset[1]) / gridResolution) * gridResolution + gridOffset[1];\n out[0] = left;\n out[1] = bottom;\n out[2] = left + gridResolution;\n out[3] = bottom + gridResolution;\n return out;\n}\nfunction $9c89d6f12b5117ec$var$moveToNeighborCell(cell, gridResolution, edge) {\n if (edge & 8) {\n cell[1] += gridResolution;\n cell[3] += gridResolution;\n } else if (edge & 4) {\n cell[1] -= gridResolution;\n cell[3] -= gridResolution;\n } else if (edge & 2) {\n cell[0] += gridResolution;\n cell[2] += gridResolution;\n } else if (edge & 1) {\n cell[0] -= gridResolution;\n cell[2] -= gridResolution;\n }\n}\nfunction $9c89d6f12b5117ec$var$getBoundingBox(positions, size, endIndex, out) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n for(let i = 0; i < endIndex; i += size){\n const x = positions[i];\n const y = positions[i + 1];\n minX = x < minX ? x : minX;\n maxX = x > maxX ? x : maxX;\n minY = y < minY ? y : minY;\n maxY = y > maxY ? y : maxY;\n }\n out[0][0] = minX;\n out[0][1] = minY;\n out[1][0] = maxX;\n out[1][1] = maxY;\n return out;\n}\n\n});\n\nparcelRegister(\"6Kcrp\", function(module, exports) {\n\n$parcel$export(module.exports, \"cutPolylineByMercatorBounds\", function () { return $4e90b082c99d369b$export$d3678aab2b71fec6; });\n$parcel$export(module.exports, \"cutPolygonByMercatorBounds\", function () { return $4e90b082c99d369b$export$98fce87c2d504c6a; });\n\nvar $drfwC = parcelRequire(\"drfwC\");\n\nvar $96tab = parcelRequire(\"96tab\");\nconst $4e90b082c99d369b$var$DEFAULT_MAX_LATITUDE = 85.051129;\nfunction $4e90b082c99d369b$export$d3678aab2b71fec6(positions, options) {\n const { size: size = 2, startIndex: startIndex = 0, endIndex: endIndex = positions.length, normalize: normalize = true } = options || {};\n const newPositions = positions.slice(startIndex, endIndex);\n $4e90b082c99d369b$var$wrapLongitudesForShortestPath(newPositions, size, 0, endIndex - startIndex);\n const parts = (0, $drfwC.cutPolylineByGrid)(newPositions, {\n size: size,\n broken: true,\n gridResolution: 360,\n gridOffset: [\n -180,\n -180\n ]\n });\n if (normalize) for (const part of parts)$4e90b082c99d369b$var$shiftLongitudesIntoRange(part, size);\n return parts;\n}\nfunction $4e90b082c99d369b$export$98fce87c2d504c6a(positions, holeIndices = null, options) {\n const { size: size = 2, normalize: normalize = true, edgeTypes: edgeTypes = false } = options || {};\n holeIndices = holeIndices || [];\n const newPositions = [];\n const newHoleIndices = [];\n let srcStartIndex = 0;\n let targetIndex = 0;\n for(let ringIndex = 0; ringIndex <= holeIndices.length; ringIndex++){\n const srcEndIndex = holeIndices[ringIndex] || positions.length;\n const targetStartIndex = targetIndex;\n const splitIndex = $4e90b082c99d369b$var$findSplitIndex(positions, size, srcStartIndex, srcEndIndex);\n for(let i = splitIndex; i < srcEndIndex; i++)newPositions[targetIndex++] = positions[i];\n for(let i = srcStartIndex; i < splitIndex; i++)newPositions[targetIndex++] = positions[i];\n $4e90b082c99d369b$var$wrapLongitudesForShortestPath(newPositions, size, targetStartIndex, targetIndex);\n $4e90b082c99d369b$var$insertPoleVertices(newPositions, size, targetStartIndex, targetIndex, options === null || options === void 0 ? void 0 : options.maxLatitude);\n srcStartIndex = srcEndIndex;\n newHoleIndices[ringIndex] = targetIndex;\n }\n newHoleIndices.pop();\n const parts = (0, $drfwC.cutPolygonByGrid)(newPositions, newHoleIndices, {\n size: size,\n gridResolution: 360,\n gridOffset: [\n -180,\n -180\n ],\n edgeTypes: edgeTypes\n });\n if (normalize) for (const part of parts)$4e90b082c99d369b$var$shiftLongitudesIntoRange(part.positions, size);\n return parts;\n}\nfunction $4e90b082c99d369b$var$findSplitIndex(positions, size, startIndex, endIndex) {\n let maxLat = -1;\n let pointIndex = -1;\n for(let i = startIndex + 1; i < endIndex; i += size){\n const lat = Math.abs(positions[i]);\n if (lat > maxLat) {\n maxLat = lat;\n pointIndex = i - 1;\n }\n }\n return pointIndex;\n}\nfunction $4e90b082c99d369b$var$insertPoleVertices(positions, size, startIndex, endIndex, maxLatitude = $4e90b082c99d369b$var$DEFAULT_MAX_LATITUDE) {\n const firstLng = positions[startIndex];\n const lastLng = positions[endIndex - size];\n if (Math.abs(firstLng - lastLng) > 180) {\n const p = (0, $96tab.getPointAtIndex)(positions, 0, size, startIndex);\n p[0] += Math.round((lastLng - firstLng) / 360) * 360;\n (0, $96tab.push)(positions, p);\n p[1] = Math.sign(p[1]) * maxLatitude;\n (0, $96tab.push)(positions, p);\n p[0] = firstLng;\n (0, $96tab.push)(positions, p);\n }\n}\nfunction $4e90b082c99d369b$var$wrapLongitudesForShortestPath(positions, size, startIndex, endIndex) {\n let prevLng = positions[0];\n let lng;\n for(let i = startIndex; i < endIndex; i += size){\n lng = positions[i];\n const delta = lng - prevLng;\n if (delta > 180 || delta < -180) lng -= Math.round(delta / 360) * 360;\n positions[i] = prevLng = lng;\n }\n}\nfunction $4e90b082c99d369b$var$shiftLongitudesIntoRange(positions, size) {\n let refLng;\n const pointCount = positions.length / size;\n for(let i = 0; i < pointCount; i++){\n refLng = positions[i * size];\n if ((refLng + 180) % 360 !== 0) break;\n }\n const delta = -Math.round(refLng / 360) * 360;\n if (delta === 0) return;\n for(let i = 0; i < pointCount; i++)positions[i * size] += delta;\n}\n\n});\n\n\n\nparcelRegister(\"bPjHd\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $89c3bc59462935de$export$2e2bcd8739ae039; });\n\nvar $1zR3q = parcelRequire(\"1zR3q\");\n\nvar $abpME = parcelRequire(\"abpME\");\n\nvar $an4RE = parcelRequire(\"an4RE\");\n\nvar $hu5l6 = parcelRequire(\"hu5l6\");\n\nvar $7jraD = parcelRequire(\"7jraD\");\nclass $89c3bc59462935de$export$2e2bcd8739ae039 {\n updateGeometry(opts) {\n Object.assign(this.opts, opts);\n const { data: data, buffers: buffers = {}, getGeometry: getGeometry, geometryBuffer: geometryBuffer, positionFormat: positionFormat, dataChanged: dataChanged, normalize: normalize = true } = this.opts;\n this.data = data;\n this.getGeometry = getGeometry;\n this.positionSize = geometryBuffer && geometryBuffer.size || (positionFormat === \"XY\" ? 2 : 3);\n this.buffers = buffers;\n this.normalize = normalize;\n if (geometryBuffer) {\n (0, $hu5l6.default)(data.startIndices);\n this.getGeometry = this.getGeometryFromBuffer(geometryBuffer);\n if (!normalize) buffers.positions = geometryBuffer;\n }\n this.geometryBuffer = buffers.positions;\n if (Array.isArray(dataChanged)) for (const dataRange of dataChanged)this._rebuildGeometry(dataRange);\n else this._rebuildGeometry();\n }\n updatePartialGeometry({ startRow: startRow, endRow: endRow }) {\n this._rebuildGeometry({\n startRow: startRow,\n endRow: endRow\n });\n }\n getGeometryFromBuffer(geometryBuffer) {\n const value = geometryBuffer.value || geometryBuffer;\n if (!ArrayBuffer.isView(value)) return null;\n return (0, $abpME.getAccessorFromBuffer)(value, {\n size: this.positionSize,\n offset: geometryBuffer.offset,\n stride: geometryBuffer.stride,\n startIndices: this.data.startIndices\n });\n }\n _allocate(instanceCount, copy) {\n const { attributes: attributes, buffers: buffers, _attributeDefs: _attributeDefs, typedArrayManager: typedArrayManager } = this;\n for(const name in _attributeDefs)if (name in buffers) {\n typedArrayManager.release(attributes[name]);\n attributes[name] = null;\n } else {\n const def = _attributeDefs[name];\n def.copy = copy;\n attributes[name] = typedArrayManager.allocate(attributes[name], instanceCount, def);\n }\n }\n _forEachGeometry(visitor, startRow, endRow) {\n const { data: data, getGeometry: getGeometry } = this;\n const { iterable: iterable, objectInfo: objectInfo } = (0, $abpME.createIterable)(data, startRow, endRow);\n for (const object of iterable){\n objectInfo.index++;\n const geometry = getGeometry ? getGeometry(object, objectInfo) : null;\n visitor(geometry, objectInfo.index);\n }\n }\n _rebuildGeometry(dataRange) {\n if (!this.data) return;\n let { indexStarts: indexStarts, vertexStarts: vertexStarts, instanceCount: instanceCount } = this;\n const { data: data, geometryBuffer: geometryBuffer } = this;\n const { startRow: startRow = 0, endRow: endRow = Infinity } = dataRange || {};\n const normalizedData = {};\n if (!dataRange) {\n indexStarts = [\n 0\n ];\n vertexStarts = [\n 0\n ];\n }\n if (this.normalize || !geometryBuffer) {\n this._forEachGeometry((geometry, dataIndex)=>{\n const normalizedGeometry = geometry && this.normalizeGeometry(geometry);\n normalizedData[dataIndex] = normalizedGeometry;\n vertexStarts[dataIndex + 1] = vertexStarts[dataIndex] + (normalizedGeometry ? this.getGeometrySize(normalizedGeometry) : 0);\n }, startRow, endRow);\n instanceCount = vertexStarts[vertexStarts.length - 1];\n } else {\n vertexStarts = data.startIndices;\n instanceCount = vertexStarts[data.length] || 0;\n if (ArrayBuffer.isView(geometryBuffer)) instanceCount = instanceCount || geometryBuffer.length / this.positionSize;\n else if (geometryBuffer instanceof (0, $7jraD.default)) {\n const byteStride = geometryBuffer.accessor.stride || this.positionSize * 4;\n instanceCount = instanceCount || geometryBuffer.byteLength / byteStride;\n } else if (geometryBuffer.buffer) {\n const byteStride = geometryBuffer.stride || this.positionSize * 4;\n instanceCount = instanceCount || geometryBuffer.buffer.byteLength / byteStride;\n } else if (geometryBuffer.value) {\n const bufferValue = geometryBuffer.value;\n const elementStride = geometryBuffer.stride / bufferValue.BYTES_PER_ELEMENT || this.positionSize;\n instanceCount = instanceCount || bufferValue.length / elementStride;\n }\n }\n this._allocate(instanceCount, Boolean(dataRange));\n this.indexStarts = indexStarts;\n this.vertexStarts = vertexStarts;\n this.instanceCount = instanceCount;\n const context = {};\n this._forEachGeometry((geometry, dataIndex)=>{\n const normalizedGeometry = normalizedData[dataIndex] || geometry;\n context.vertexStart = vertexStarts[dataIndex];\n context.indexStart = indexStarts[dataIndex];\n const vertexEnd = dataIndex < vertexStarts.length - 1 ? vertexStarts[dataIndex + 1] : instanceCount;\n context.geometrySize = vertexEnd - vertexStarts[dataIndex];\n context.geometryIndex = dataIndex;\n this.updateGeometryAttributes(normalizedGeometry, context);\n }, startRow, endRow);\n this.vertexCount = indexStarts[indexStarts.length - 1];\n }\n constructor(opts){\n (0, $1zR3q.default)(this, \"opts\", void 0);\n (0, $1zR3q.default)(this, \"typedArrayManager\", void 0);\n (0, $1zR3q.default)(this, \"indexStarts\", [\n 0\n ]);\n (0, $1zR3q.default)(this, \"vertexStarts\", [\n 0\n ]);\n (0, $1zR3q.default)(this, \"vertexCount\", 0);\n (0, $1zR3q.default)(this, \"instanceCount\", 0);\n (0, $1zR3q.default)(this, \"attributes\", void 0);\n (0, $1zR3q.default)(this, \"_attributeDefs\", void 0);\n (0, $1zR3q.default)(this, \"data\", void 0);\n (0, $1zR3q.default)(this, \"getGeometry\", void 0);\n (0, $1zR3q.default)(this, \"geometryBuffer\", void 0);\n (0, $1zR3q.default)(this, \"buffers\", void 0);\n (0, $1zR3q.default)(this, \"positionSize\", void 0);\n (0, $1zR3q.default)(this, \"normalize\", void 0);\n const { attributes: attributes = {} } = opts;\n this.typedArrayManager = (0, $an4RE.default);\n this.attributes = {};\n this._attributeDefs = attributes;\n this.opts = opts;\n this.updateGeometry(opts);\n }\n}\n\n});\n\n\nparcelRegister(\"jrNr2\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $e286e2b46b87f19b$export$2e2bcd8739ae039; });\n\nvar $hy6E6 = parcelRequire(\"hy6E6\");\nvar $e286e2b46b87f19b$export$2e2bcd8739ae039 = \"#define SHADER_NAME solid-polygon-layer-vertex-shader\\n\\nattribute vec3 positions;\\nattribute vec3 positions64Low;\\nattribute float elevations;\\nattribute vec4 fillColors;\\nattribute vec4 lineColors;\\nattribute vec3 pickingColors;\\n\\n\".concat((0, $hy6E6.default), \"\\n\\nvoid main(void) {\\n PolygonProps props;\\n\\n props.positions = positions;\\n props.positions64Low = positions64Low;\\n props.elevations = elevations;\\n props.fillColors = fillColors;\\n props.lineColors = lineColors;\\n props.pickingColors = pickingColors;\\n\\n calculatePosition(props);\\n}\\n\");\n\n});\nparcelRegister(\"hy6E6\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $cc6ac45e68c12af6$export$2e2bcd8739ae039; });\nvar $cc6ac45e68c12af6$export$2e2bcd8739ae039 = \"\\nattribute vec2 vertexPositions;\\nattribute float vertexValid;\\n\\nuniform bool extruded;\\nuniform bool isWireframe;\\nuniform float elevationScale;\\nuniform float opacity;\\n\\nvarying vec4 vColor;\\n\\nstruct PolygonProps {\\n vec4 fillColors;\\n vec4 lineColors;\\n vec3 positions;\\n vec3 nextPositions;\\n vec3 pickingColors;\\n vec3 positions64Low;\\n vec3 nextPositions64Low;\\n float elevations;\\n};\\n\\nvec3 project_offset_normal(vec3 vector) {\\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSETS) {\\n return normalize(vector * project_uCommonUnitsPerWorldUnit);\\n }\\n return project_normal(vector);\\n}\\n\\nvoid calculatePosition(PolygonProps props) {\\n#ifdef IS_SIDE_VERTEX\\n if(vertexValid < 0.5){\\n gl_Position = vec4(0.);\\n return;\\n }\\n#endif\\n\\n vec3 pos;\\n vec3 pos64Low;\\n vec3 normal;\\n vec4 colors = isWireframe ? props.lineColors : props.fillColors;\\n\\n geometry.worldPosition = props.positions;\\n geometry.worldPositionAlt = props.nextPositions;\\n geometry.pickingColor = props.pickingColors;\\n\\n#ifdef IS_SIDE_VERTEX\\n pos = mix(props.positions, props.nextPositions, vertexPositions.x);\\n pos64Low = mix(props.positions64Low, props.nextPositions64Low, vertexPositions.x);\\n#else\\n pos = props.positions;\\n pos64Low = props.positions64Low;\\n#endif\\n\\n if (extruded) {\\n pos.z += props.elevations * vertexPositions.y * elevationScale;\\n }\\n gl_Position = project_position_to_clipspace(pos, pos64Low, vec3(0.), geometry.position);\\n\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n if (extruded) {\\n #ifdef IS_SIDE_VERTEX\\n normal = vec3(\\n props.positions.y - props.nextPositions.y + (props.positions64Low.y - props.nextPositions64Low.y),\\n props.nextPositions.x - props.positions.x + (props.nextPositions64Low.x - props.positions64Low.x),\\n 0.0);\\n normal = project_offset_normal(normal);\\n #else\\n normal = project_normal(vec3(0.0, 0.0, 1.0));\\n #endif\\n geometry.normal = normal;\\n vec3 lightColor = lighting_getLightColor(colors.rgb, project_uCameraPosition, geometry.position.xyz, normal);\\n vColor = vec4(lightColor, colors.a * opacity);\\n } else {\\n vColor = vec4(colors.rgb, colors.a * opacity);\\n }\\n DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n\n});\n\n\nparcelRegister(\"a5Son\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $7594902b3f11d815$export$2e2bcd8739ae039; });\n\nvar $hy6E6 = parcelRequire(\"hy6E6\");\nvar $7594902b3f11d815$export$2e2bcd8739ae039 = \"#define SHADER_NAME solid-polygon-layer-vertex-shader-side\\n#define IS_SIDE_VERTEX\\n\\n\\nattribute vec3 instancePositions;\\nattribute vec3 nextPositions;\\nattribute vec3 instancePositions64Low;\\nattribute vec3 nextPositions64Low;\\nattribute float instanceElevations;\\nattribute vec4 instanceFillColors;\\nattribute vec4 instanceLineColors;\\nattribute vec3 instancePickingColors;\\n\\n\".concat((0, $hy6E6.default), \"\\n\\nvoid main(void) {\\n PolygonProps props;\\n\\n #if RING_WINDING_ORDER_CW == 1\\n props.positions = instancePositions;\\n props.positions64Low = instancePositions64Low;\\n props.nextPositions = nextPositions;\\n props.nextPositions64Low = nextPositions64Low;\\n #else\\n props.positions = nextPositions;\\n props.positions64Low = nextPositions64Low;\\n props.nextPositions = instancePositions;\\n props.nextPositions64Low = instancePositions64Low;\\n #endif\\n props.elevations = instanceElevations;\\n props.fillColors = instanceFillColors;\\n props.lineColors = instanceLineColors;\\n props.pickingColors = instancePickingColors;\\n\\n calculatePosition(props);\\n}\\n\");\n\n});\n\nparcelRegister(\"43aPw\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $2f2fd7dad05e8321$export$2e2bcd8739ae039; });\nvar $2f2fd7dad05e8321$export$2e2bcd8739ae039 = \"#define SHADER_NAME solid-polygon-layer-fragment-shader\\n\\nprecision highp float;\\n\\nvarying vec4 vColor;\\n\\nvoid main(void) {\\n gl_FragColor = vColor;\\n\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n\n});\n\n\nparcelRegister(\"lzW2S\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $fb59e47c2ae2061b$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $lEQUF = parcelRequire(\"lEQUF\");\n\nvar $i46md = parcelRequire(\"i46md\");\nvar $7UxuR = parcelRequire(\"7UxuR\");\nvar $jRSMz = parcelRequire(\"jRSMz\");\nvar $7gQQK = parcelRequire(\"7gQQK\");\n\nvar $cxTxU = parcelRequire(\"cxTxU\");\nvar $b2F4S = parcelRequire(\"b2F4S\");\n\nvar $5A6P6 = parcelRequire(\"5A6P6\");\n\nvar $9jmzc = parcelRequire(\"9jmzc\");\n\nvar $1cBlW = parcelRequire(\"1cBlW\");\nconst $fb59e47c2ae2061b$var$DEFAULT_COLOR = [\n 0,\n 0,\n 0,\n 255\n];\nconst $fb59e47c2ae2061b$var$defaultProps = {\n widthUnits: \"meters\",\n widthScale: {\n type: \"number\",\n min: 0,\n value: 1\n },\n widthMinPixels: {\n type: \"number\",\n min: 0,\n value: 0\n },\n widthMaxPixels: {\n type: \"number\",\n min: 0,\n value: Number.MAX_SAFE_INTEGER\n },\n jointRounded: false,\n capRounded: false,\n miterLimit: {\n type: \"number\",\n min: 0,\n value: 4\n },\n billboard: false,\n _pathType: null,\n getPath: {\n type: \"accessor\",\n value: (object)=>object.path\n },\n getColor: {\n type: \"accessor\",\n value: $fb59e47c2ae2061b$var$DEFAULT_COLOR\n },\n getWidth: {\n type: \"accessor\",\n value: 1\n },\n rounded: {\n deprecatedFor: [\n \"jointRounded\",\n \"capRounded\"\n ]\n }\n};\nconst $fb59e47c2ae2061b$var$ATTRIBUTE_TRANSITION = {\n enter: (value, chunk)=>{\n return chunk.length ? chunk.subarray(chunk.length - value.length) : value;\n }\n};\nclass $fb59e47c2ae2061b$export$2e2bcd8739ae039 extends (0, $i46md.default) {\n getShaders() {\n return super.getShaders({\n vs: $9jmzc.default,\n fs: $1cBlW.default,\n modules: [\n (0, $jRSMz.default),\n (0, $7UxuR.default)\n ]\n });\n }\n get wrapLongitude() {\n return false;\n }\n initializeState() {\n const noAlloc = true;\n const attributeManager = this.getAttributeManager();\n attributeManager.addInstanced({\n positions: {\n size: 3,\n vertexOffset: 1,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: $fb59e47c2ae2061b$var$ATTRIBUTE_TRANSITION,\n accessor: \"getPath\",\n update: this.calculatePositions,\n noAlloc: noAlloc,\n shaderAttributes: {\n instanceLeftPositions: {\n vertexOffset: 0\n },\n instanceStartPositions: {\n vertexOffset: 1\n },\n instanceEndPositions: {\n vertexOffset: 2\n },\n instanceRightPositions: {\n vertexOffset: 3\n }\n }\n },\n instanceTypes: {\n size: 1,\n type: 5121,\n update: this.calculateSegmentTypes,\n noAlloc: noAlloc\n },\n instanceStrokeWidths: {\n size: 1,\n accessor: \"getWidth\",\n transition: $fb59e47c2ae2061b$var$ATTRIBUTE_TRANSITION,\n defaultValue: 1\n },\n instanceColors: {\n size: this.props.colorFormat.length,\n type: 5121,\n normalized: true,\n accessor: \"getColor\",\n transition: $fb59e47c2ae2061b$var$ATTRIBUTE_TRANSITION,\n defaultValue: $fb59e47c2ae2061b$var$DEFAULT_COLOR\n },\n instancePickingColors: {\n size: 3,\n type: 5121,\n accessor: (object, { index: index, target: value })=>this.encodePickingColor(object && object.__source ? object.__source.index : index, value)\n }\n });\n this.setState({\n pathTesselator: new (0, $5A6P6.default)({\n fp64: this.use64bitPositions()\n })\n });\n }\n updateState(params) {\n super.updateState(params);\n const { props: props, changeFlags: changeFlags } = params;\n const attributeManager = this.getAttributeManager();\n const geometryChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPath);\n if (geometryChanged) {\n const { pathTesselator: pathTesselator } = this.state;\n const buffers = props.data.attributes || {};\n pathTesselator.updateGeometry({\n data: props.data,\n geometryBuffer: buffers.getPath,\n buffers: buffers,\n normalize: !props._pathType,\n loop: props._pathType === \"loop\",\n getGeometry: props.getPath,\n positionFormat: props.positionFormat,\n wrapLongitude: props.wrapLongitude,\n resolution: this.context.viewport.resolution,\n dataChanged: changeFlags.dataChanged\n });\n this.setState({\n numInstances: pathTesselator.instanceCount,\n startIndices: pathTesselator.vertexStarts\n });\n if (!changeFlags.dataChanged) attributeManager.invalidateAll();\n }\n if (changeFlags.extensionsChanged) {\n var _this$state$model;\n const { gl: gl } = this.context;\n (_this$state$model = this.state.model) === null || _this$state$model === void 0 || _this$state$model.delete();\n this.state.model = this._getModel(gl);\n attributeManager.invalidateAll();\n }\n }\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n const { index: index } = info;\n const { data: data } = this.props;\n if (data[0] && data[0].__source) info.object = data.find((d)=>d.__source.index === index);\n return info;\n }\n disablePickingIndex(objectIndex) {\n const { data: data } = this.props;\n if (data[0] && data[0].__source) {\n for(let i = 0; i < data.length; i++)if (data[i].__source.index === objectIndex) this._disablePickingIndex(i);\n } else super.disablePickingIndex(objectIndex);\n }\n draw({ uniforms: uniforms }) {\n const { jointRounded: jointRounded, capRounded: capRounded, billboard: billboard, miterLimit: miterLimit, widthUnits: widthUnits, widthScale: widthScale, widthMinPixels: widthMinPixels, widthMaxPixels: widthMaxPixels } = this.props;\n this.state.model.setUniforms(uniforms).setUniforms({\n jointType: Number(jointRounded),\n capType: Number(capRounded),\n billboard: billboard,\n widthUnits: (0, $7gQQK.UNIT)[widthUnits],\n widthScale: widthScale,\n miterLimit: miterLimit,\n widthMinPixels: widthMinPixels,\n widthMaxPixels: widthMaxPixels\n }).draw();\n }\n _getModel(gl) {\n const SEGMENT_INDICES = [\n 0,\n 1,\n 2,\n 1,\n 4,\n 2,\n 1,\n 3,\n 4,\n 3,\n 5,\n 4\n ];\n const SEGMENT_POSITIONS = [\n 0,\n 0,\n 0,\n -1,\n 0,\n 1,\n 1,\n -1,\n 1,\n 1,\n 1,\n 0\n ];\n return new (0, $b2F4S.default)(gl, (0, $edHbI._)((0, $2QP2i._)({}, this.getShaders()), {\n id: this.props.id,\n geometry: new (0, $cxTxU.default)({\n drawMode: 4,\n attributes: {\n indices: new Uint16Array(SEGMENT_INDICES),\n positions: {\n value: new Float32Array(SEGMENT_POSITIONS),\n size: 2\n }\n }\n }),\n isInstanced: true\n }));\n }\n calculatePositions(attribute) {\n const { pathTesselator: pathTesselator } = this.state;\n attribute.startIndices = pathTesselator.vertexStarts;\n attribute.value = pathTesselator.get(\"positions\");\n }\n calculateSegmentTypes(attribute) {\n const { pathTesselator: pathTesselator } = this.state;\n attribute.startIndices = pathTesselator.vertexStarts;\n attribute.value = pathTesselator.get(\"segmentTypes\");\n }\n constructor(...args){\n super(...args);\n (0, $lEQUF.default)(this, \"state\", void 0);\n }\n}\n(0, $lEQUF.default)($fb59e47c2ae2061b$export$2e2bcd8739ae039, \"defaultProps\", $fb59e47c2ae2061b$var$defaultProps);\n(0, $lEQUF.default)($fb59e47c2ae2061b$export$2e2bcd8739ae039, \"layerName\", \"PathLayer\");\n\n});\nparcelRegister(\"5A6P6\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $41059b7bf4ee01fa$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $bPjHd = parcelRequire(\"bPjHd\");\n\nvar $gbuMl = parcelRequire(\"gbuMl\");\nconst $41059b7bf4ee01fa$var$START_CAP = 1;\nconst $41059b7bf4ee01fa$var$END_CAP = 2;\nconst $41059b7bf4ee01fa$var$INVALID = 4;\nclass $41059b7bf4ee01fa$export$2e2bcd8739ae039 extends (0, $bPjHd.default) {\n get(attributeName) {\n return this.attributes[attributeName];\n }\n getGeometryFromBuffer(buffer) {\n if (this.normalize) return super.getGeometryFromBuffer(buffer);\n return null;\n }\n normalizeGeometry(path) {\n if (this.normalize) return (0, $gbuMl.normalizePath)(path, this.positionSize, this.opts.resolution, this.opts.wrapLongitude);\n return path;\n }\n getGeometrySize(path) {\n if ($41059b7bf4ee01fa$var$isCut(path)) {\n let size = 0;\n for (const subPath of path)size += this.getGeometrySize(subPath);\n return size;\n }\n const numPoints = this.getPathLength(path);\n if (numPoints < 2) return 0;\n if (this.isClosed(path)) return numPoints < 3 ? 0 : numPoints + 2;\n return numPoints;\n }\n updateGeometryAttributes(path, context) {\n if (context.geometrySize === 0) return;\n if (path && $41059b7bf4ee01fa$var$isCut(path)) for (const subPath of path){\n const geometrySize = this.getGeometrySize(subPath);\n context.geometrySize = geometrySize;\n this.updateGeometryAttributes(subPath, context);\n context.vertexStart += geometrySize;\n }\n else {\n this._updateSegmentTypes(path, context);\n this._updatePositions(path, context);\n }\n }\n _updateSegmentTypes(path, context) {\n const segmentTypes = this.attributes.segmentTypes;\n const isPathClosed = path ? this.isClosed(path) : false;\n const { vertexStart: vertexStart, geometrySize: geometrySize } = context;\n segmentTypes.fill(0, vertexStart, vertexStart + geometrySize);\n if (isPathClosed) {\n segmentTypes[vertexStart] = $41059b7bf4ee01fa$var$INVALID;\n segmentTypes[vertexStart + geometrySize - 2] = $41059b7bf4ee01fa$var$INVALID;\n } else {\n segmentTypes[vertexStart] += $41059b7bf4ee01fa$var$START_CAP;\n segmentTypes[vertexStart + geometrySize - 2] += $41059b7bf4ee01fa$var$END_CAP;\n }\n segmentTypes[vertexStart + geometrySize - 1] = $41059b7bf4ee01fa$var$INVALID;\n }\n _updatePositions(path, context) {\n const { positions: positions } = this.attributes;\n if (!positions || !path) return;\n const { vertexStart: vertexStart, geometrySize: geometrySize } = context;\n const p = new Array(3);\n for(let i = vertexStart, ptIndex = 0; ptIndex < geometrySize; i++, ptIndex++){\n this.getPointOnPath(path, ptIndex, p);\n positions[i * 3] = p[0];\n positions[i * 3 + 1] = p[1];\n positions[i * 3 + 2] = p[2];\n }\n }\n getPathLength(path) {\n return path.length / this.positionSize;\n }\n getPointOnPath(path, index, target = []) {\n const { positionSize: positionSize } = this;\n if (index * positionSize >= path.length) index += 1 - path.length / positionSize;\n const i = index * positionSize;\n target[0] = path[i];\n target[1] = path[i + 1];\n target[2] = positionSize === 3 && path[i + 2] || 0;\n return target;\n }\n isClosed(path) {\n if (!this.normalize) return Boolean(this.opts.loop);\n const { positionSize: positionSize } = this;\n const lastPointIndex = path.length - positionSize;\n return path[0] === path[lastPointIndex] && path[1] === path[lastPointIndex + 1] && (positionSize === 2 || path[2] === path[lastPointIndex + 2]);\n }\n constructor(opts){\n super((0, $edHbI._)((0, $2QP2i._)({}, opts), {\n attributes: {\n positions: {\n size: 3,\n padding: 18,\n initialize: true,\n type: opts.fp64 ? Float64Array : Float32Array\n },\n segmentTypes: {\n size: 1,\n type: Uint8ClampedArray\n }\n }\n }));\n }\n}\nfunction $41059b7bf4ee01fa$var$isCut(path) {\n return Array.isArray(path[0]);\n}\n\n});\nparcelRegister(\"gbuMl\", function(module, exports) {\n\n$parcel$export(module.exports, \"normalizePath\", function () { return $bc858c6c0c681b73$export$6af368f973c74c5; });\nparcelRequire(\"b5AlO\");\nvar $drfwC = parcelRequire(\"drfwC\");\nvar $6Kcrp = parcelRequire(\"6Kcrp\");\nfunction $bc858c6c0c681b73$export$6af368f973c74c5(path, size, gridResolution, wrapLongitude) {\n let flatPath;\n if (Array.isArray(path[0])) {\n const length = path.length * size;\n flatPath = new Array(length);\n for(let i = 0; i < path.length; i++)for(let j = 0; j < size; j++)flatPath[i * size + j] = path[i][j] || 0;\n } else flatPath = path;\n if (gridResolution) return (0, $drfwC.cutPolylineByGrid)(flatPath, {\n size: size,\n gridResolution: gridResolution\n });\n if (wrapLongitude) return (0, $6Kcrp.cutPolylineByMercatorBounds)(flatPath, {\n size: size\n });\n return flatPath;\n}\n\n});\n\n\nparcelRegister(\"9jmzc\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6c7764b49cf2d2a1$export$2e2bcd8739ae039; });\nvar $6c7764b49cf2d2a1$export$2e2bcd8739ae039 = \"#define SHADER_NAME path-layer-vertex-shader\\n\\nattribute vec2 positions;\\n\\nattribute float instanceTypes;\\nattribute vec3 instanceStartPositions;\\nattribute vec3 instanceEndPositions;\\nattribute vec3 instanceLeftPositions;\\nattribute vec3 instanceRightPositions;\\nattribute vec3 instanceLeftPositions64Low;\\nattribute vec3 instanceStartPositions64Low;\\nattribute vec3 instanceEndPositions64Low;\\nattribute vec3 instanceRightPositions64Low;\\nattribute float instanceStrokeWidths;\\nattribute vec4 instanceColors;\\nattribute vec3 instancePickingColors;\\n\\nuniform float widthScale;\\nuniform float widthMinPixels;\\nuniform float widthMaxPixels;\\nuniform float jointType;\\nuniform float capType;\\nuniform float miterLimit;\\nuniform bool billboard;\\nuniform int widthUnits;\\n\\nuniform float opacity;\\n\\nvarying vec4 vColor;\\nvarying vec2 vCornerOffset;\\nvarying float vMiterLength;\\nvarying vec2 vPathPosition;\\nvarying float vPathLength;\\nvarying float vJointType;\\n\\nconst float EPSILON = 0.001;\\nconst vec3 ZERO_OFFSET = vec3(0.0);\\n\\nfloat flipIfTrue(bool flag) {\\n return -(float(flag) * 2. - 1.);\\n}\\nvec3 getLineJoinOffset(\\n vec3 prevPoint, vec3 currPoint, vec3 nextPoint,\\n vec2 width\\n) {\\n bool isEnd = positions.x > 0.0;\\n float sideOfPath = positions.y;\\n float isJoint = float(sideOfPath == 0.0);\\n\\n vec3 deltaA3 = (currPoint - prevPoint);\\n vec3 deltaB3 = (nextPoint - currPoint);\\n\\n mat3 rotationMatrix;\\n bool needsRotation = !billboard && project_needs_rotation(currPoint, rotationMatrix);\\n if (needsRotation) {\\n deltaA3 = deltaA3 * rotationMatrix;\\n deltaB3 = deltaB3 * rotationMatrix;\\n }\\n vec2 deltaA = deltaA3.xy / width;\\n vec2 deltaB = deltaB3.xy / width;\\n\\n float lenA = length(deltaA);\\n float lenB = length(deltaB);\\n\\n vec2 dirA = lenA > 0. ? normalize(deltaA) : vec2(0.0, 0.0);\\n vec2 dirB = lenB > 0. ? normalize(deltaB) : vec2(0.0, 0.0);\\n\\n vec2 perpA = vec2(-dirA.y, dirA.x);\\n vec2 perpB = vec2(-dirB.y, dirB.x);\\n vec2 tangent = dirA + dirB;\\n tangent = length(tangent) > 0. ? normalize(tangent) : perpA;\\n vec2 miterVec = vec2(-tangent.y, tangent.x);\\n vec2 dir = isEnd ? dirA : dirB;\\n vec2 perp = isEnd ? perpA : perpB;\\n float L = isEnd ? lenA : lenB;\\n float sinHalfA = abs(dot(miterVec, perp));\\n float cosHalfA = abs(dot(dirA, miterVec));\\n float turnDirection = flipIfTrue(dirA.x * dirB.y >= dirA.y * dirB.x);\\n float cornerPosition = sideOfPath * turnDirection;\\n\\n float miterSize = 1.0 / max(sinHalfA, EPSILON);\\n miterSize = mix(\\n min(miterSize, max(lenA, lenB) / max(cosHalfA, EPSILON)),\\n miterSize,\\n step(0.0, cornerPosition)\\n );\\n\\n vec2 offsetVec = mix(miterVec * miterSize, perp, step(0.5, cornerPosition))\\n * (sideOfPath + isJoint * turnDirection);\\n bool isStartCap = lenA == 0.0 || (!isEnd && (instanceTypes == 1.0 || instanceTypes == 3.0));\\n bool isEndCap = lenB == 0.0 || (isEnd && (instanceTypes == 2.0 || instanceTypes == 3.0));\\n bool isCap = isStartCap || isEndCap;\\n if (isCap) {\\n offsetVec = mix(perp * sideOfPath, dir * capType * 4.0 * flipIfTrue(isStartCap), isJoint);\\n vJointType = capType;\\n } else {\\n vJointType = jointType;\\n }\\n vPathLength = L;\\n vCornerOffset = offsetVec;\\n vMiterLength = dot(vCornerOffset, miterVec * turnDirection);\\n vMiterLength = isCap ? isJoint : vMiterLength;\\n\\n vec2 offsetFromStartOfPath = vCornerOffset + deltaA * float(isEnd);\\n vPathPosition = vec2(\\n dot(offsetFromStartOfPath, perp),\\n dot(offsetFromStartOfPath, dir)\\n );\\n geometry.uv = vPathPosition;\\n\\n float isValid = step(instanceTypes, 3.5);\\n vec3 offset = vec3(offsetVec * width * isValid, 0.0);\\n\\n if (needsRotation) {\\n offset = rotationMatrix * offset;\\n }\\n return offset;\\n}\\nvoid clipLine(inout vec4 position, vec4 refPosition) {\\n if (position.w < EPSILON) {\\n float r = (EPSILON - refPosition.w) / (position.w - refPosition.w);\\n position = refPosition + (position - refPosition) * r;\\n }\\n}\\n\\nvoid main() {\\n geometry.pickingColor = instancePickingColors;\\n\\n vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\\n\\n float isEnd = positions.x;\\n\\n vec3 prevPosition = mix(instanceLeftPositions, instanceStartPositions, isEnd);\\n vec3 prevPosition64Low = mix(instanceLeftPositions64Low, instanceStartPositions64Low, isEnd);\\n\\n vec3 currPosition = mix(instanceStartPositions, instanceEndPositions, isEnd);\\n vec3 currPosition64Low = mix(instanceStartPositions64Low, instanceEndPositions64Low, isEnd);\\n\\n vec3 nextPosition = mix(instanceEndPositions, instanceRightPositions, isEnd);\\n vec3 nextPosition64Low = mix(instanceEndPositions64Low, instanceRightPositions64Low, isEnd);\\n\\n geometry.worldPosition = currPosition;\\n vec2 widthPixels = vec2(clamp(\\n project_size_to_pixel(instanceStrokeWidths * widthScale, widthUnits),\\n widthMinPixels, widthMaxPixels) / 2.0);\\n vec3 width;\\n\\n if (billboard) {\\n vec4 prevPositionScreen = project_position_to_clipspace(prevPosition, prevPosition64Low, ZERO_OFFSET);\\n vec4 currPositionScreen = project_position_to_clipspace(currPosition, currPosition64Low, ZERO_OFFSET, geometry.position);\\n vec4 nextPositionScreen = project_position_to_clipspace(nextPosition, nextPosition64Low, ZERO_OFFSET);\\n\\n clipLine(prevPositionScreen, currPositionScreen);\\n clipLine(nextPositionScreen, currPositionScreen);\\n clipLine(currPositionScreen, mix(nextPositionScreen, prevPositionScreen, isEnd));\\n\\n width = vec3(widthPixels, 0.0);\\n DECKGL_FILTER_SIZE(width, geometry);\\n\\n vec3 offset = getLineJoinOffset(\\n prevPositionScreen.xyz / prevPositionScreen.w,\\n currPositionScreen.xyz / currPositionScreen.w,\\n nextPositionScreen.xyz / nextPositionScreen.w,\\n project_pixel_size_to_clipspace(width.xy)\\n );\\n\\n DECKGL_FILTER_GL_POSITION(currPositionScreen, geometry);\\n gl_Position = vec4(currPositionScreen.xyz + offset * currPositionScreen.w, currPositionScreen.w);\\n } else {\\n prevPosition = project_position(prevPosition, prevPosition64Low);\\n currPosition = project_position(currPosition, currPosition64Low);\\n nextPosition = project_position(nextPosition, nextPosition64Low);\\n\\n width = vec3(project_pixel_size(widthPixels), 0.0);\\n DECKGL_FILTER_SIZE(width, geometry);\\n\\n vec3 offset = getLineJoinOffset(prevPosition, currPosition, nextPosition, width.xy);\\n geometry.position = vec4(currPosition + offset, 1.0);\\n gl_Position = project_common_position_to_clipspace(geometry.position);\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n }\\n DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n\n});\n\nparcelRegister(\"1cBlW\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $0e03e2f52d1073da$export$2e2bcd8739ae039; });\nvar $0e03e2f52d1073da$export$2e2bcd8739ae039 = \"#define SHADER_NAME path-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform float miterLimit;\\n\\nvarying vec4 vColor;\\nvarying vec2 vCornerOffset;\\nvarying float vMiterLength;\\nvarying vec2 vPathPosition;\\nvarying float vPathLength;\\nvarying float vJointType;\\n\\nvoid main(void) {\\n geometry.uv = vPathPosition;\\n\\n if (vPathPosition.y < 0.0 || vPathPosition.y > vPathLength) {\\n if (vJointType > 0.5 && length(vCornerOffset) > 1.0) {\\n discard;\\n }\\n if (vJointType < 0.5 && vMiterLength > miterLimit + 1.0) {\\n discard;\\n }\\n }\\n gl_FragColor = vColor;\\n\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n\n});\n\n\nparcelRegister(\"cNqHj\", function(module, exports) {\n\n$parcel$export(module.exports, \"replaceInRange\", function () { return $950ec53e6d3b20d4$export$27d2523e190d6166; });\nfunction $950ec53e6d3b20d4$export$27d2523e190d6166({ data: data, getIndex: getIndex, dataRange: dataRange, replace: replace }) {\n const { startRow: startRow = 0, endRow: endRow = Infinity } = dataRange;\n const count = data.length;\n let replaceStart = count;\n let replaceEnd = count;\n for(let i = 0; i < count; i++){\n const row = getIndex(data[i]);\n if (replaceStart > i && row >= startRow) replaceStart = i;\n if (row >= endRow) {\n replaceEnd = i;\n break;\n }\n }\n let index = replaceStart;\n const dataLengthChanged = replaceEnd - replaceStart !== replace.length;\n const endChunk = dataLengthChanged ? data.slice(replaceEnd) : undefined;\n for(let i = 0; i < replace.length; i++)data[index++] = replace[i];\n if (endChunk) {\n for(let i = 0; i < endChunk.length; i++)data[index++] = endChunk[i];\n data.length = index;\n }\n return {\n startRow: replaceStart,\n endRow: replaceStart + replace.length\n };\n}\n\n});\n\n\nparcelRegister(\"e9fnE\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n/**\n * Takes a bbox and returns an equivalent {@link Polygon|polygon}.\n *\n * @name bboxPolygon\n * @param {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @param {Object} [options={}] Optional parameters\n * @param {Properties} [options.properties={}] Translate properties to Polygon\n * @param {string|number} [options.id={}] Translate Id to Polygon\n * @returns {Feature} a Polygon representation of the bounding box\n * @example\n * var bbox = [0, 0, 10, 10];\n *\n * var poly = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [poly]\n */ function $02a87b3266d11327$var$bboxPolygon(bbox, options) {\n if (options === void 0) options = {};\n // Convert BBox positions to Numbers\n // No performance loss for including Number()\n // https://github.com/Turfjs/turf/issues/1119\n var west = Number(bbox[0]);\n var south = Number(bbox[1]);\n var east = Number(bbox[2]);\n var north = Number(bbox[3]);\n if (bbox.length === 6) throw new Error(\"@turf/bbox-polygon does not support BBox with 6 positions\");\n var lowLeft = [\n west,\n south\n ];\n var topLeft = [\n west,\n north\n ];\n var topRight = [\n east,\n north\n ];\n var lowRight = [\n east,\n south\n ];\n return $7GKQS.polygon([\n [\n lowLeft,\n lowRight,\n topRight,\n topLeft,\n lowLeft\n ]\n ], options.properties, {\n bbox: bbox,\n id: options.id\n });\n}\nmodule.exports.default = $02a87b3266d11327$var$bboxPolygon;\n\n});\n\nparcelRegister(\"3qree\", function(module, exports) {\n\n$parcel$defineInteropFlag(module.exports);\n\n$parcel$export(module.exports, \"default\", function () { return $27e8ebd74235584a$export$2e2bcd8739ae039; });\n\nvar $9tGdu = parcelRequire(\"9tGdu\");\n\nvar $juW7F = parcelRequire(\"juW7F\");\n\nvar $fAhXk = parcelRequire(\"fAhXk\");\n\nvar $l1DKV = parcelRequire(\"l1DKV\");\n\nvar $HcJdv = parcelRequire(\"HcJdv\");\nparcelRequire(\"ixaKI\");\nvar $c1N6T = parcelRequire(\"c1N6T\");\n\nvar $brFkQ = parcelRequire(\"brFkQ\");\n/**\n * Calculates a buffer for input features for a given radius. Units supported are miles, kilometers, and degrees.\n *\n * When using a negative radius, the resulting geometry may be invalid if\n * it's too small compared to the radius magnitude. If the input is a\n * FeatureCollection, only valid members will be returned in the output\n * FeatureCollection - i.e., the output collection may have fewer members than\n * the input, or even be empty.\n *\n * @name buffer\n * @param {FeatureCollection|Geometry|Feature} geojson input to be buffered\n * @param {number} radius distance to draw the buffer (negative values are allowed)\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units=\"kilometers\"] any of the options supported by turf units\n * @param {number} [options.steps=64] number of steps\n * @returns {FeatureCollection|Feature|undefined} buffered features\n * @example\n * var point = turf.point([-90.548630, 14.616599]);\n * var buffered = turf.buffer(point, 500, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [point, buffered]\n */ function $27e8ebd74235584a$var$buffer(geojson, radius, options) {\n // Optional params\n options = options || {};\n var units = options.units;\n var steps = options.steps || 64;\n // validation\n if (!geojson) throw new Error(\"geojson is required\");\n if (typeof options !== \"object\") throw new Error(\"options must be an object\");\n if (typeof steps !== \"number\") throw new Error(\"steps must be an number\");\n // Allow negative buffers (\"erosion\") or zero-sized buffers (\"repair geometry\")\n if (radius === undefined) throw new Error(\"radius is required\");\n if (steps <= 0) throw new Error(\"steps must be greater than 0\");\n // default params\n steps = steps || 64;\n units = units || \"kilometers\";\n var results = [];\n switch(geojson.type){\n case \"GeometryCollection\":\n (0, $HcJdv.geomEach)(geojson, function(geometry) {\n var buffered = $27e8ebd74235584a$var$bufferFeature(geometry, radius, units, steps);\n if (buffered) results.push(buffered);\n });\n return (0, $brFkQ.featureCollection)(results);\n case \"FeatureCollection\":\n (0, $HcJdv.featureEach)(geojson, function(feature$$1) {\n var multiBuffered = $27e8ebd74235584a$var$bufferFeature(feature$$1, radius, units, steps);\n if (multiBuffered) (0, $HcJdv.featureEach)(multiBuffered, function(buffered) {\n if (buffered) results.push(buffered);\n });\n });\n return (0, $brFkQ.featureCollection)(results);\n }\n return $27e8ebd74235584a$var$bufferFeature(geojson, radius, units, steps);\n}\n/**\n * Buffer single Feature/Geometry\n *\n * @private\n * @param {Feature} geojson input to be buffered\n * @param {number} radius distance to draw the buffer\n * @param {string} [units='kilometers'] any of the options supported by turf units\n * @param {number} [steps=64] number of steps\n * @returns {Feature} buffered feature\n */ function $27e8ebd74235584a$var$bufferFeature(geojson, radius, units, steps) {\n var properties = geojson.properties || {};\n var geometry = geojson.type === \"Feature\" ? geojson.geometry : geojson;\n // Geometry Types faster than jsts\n if (geometry.type === \"GeometryCollection\") {\n var results = [];\n (0, $HcJdv.geomEach)(geojson, function(geometry) {\n var buffered = $27e8ebd74235584a$var$bufferFeature(geometry, radius, units, steps);\n if (buffered) results.push(buffered);\n });\n return (0, $brFkQ.featureCollection)(results);\n }\n // Project GeoJSON to Transverse Mercator projection (convert to Meters)\n var projected;\n var bbox = (0, $juW7F.default)(geojson);\n var needsTransverseMercator = bbox[1] > 50 && bbox[3] > 50;\n if (needsTransverseMercator) projected = {\n type: geometry.type,\n coordinates: $27e8ebd74235584a$var$projectCoords(geometry.coordinates, $27e8ebd74235584a$var$defineProjection(geometry))\n };\n else projected = (0, $l1DKV.toMercator)(geometry);\n // JSTS buffer operation\n var reader = new (0, $fAhXk.GeoJSONReader)();\n var geom = reader.read(projected);\n var distance = (0, $brFkQ.radiansToLength)((0, $brFkQ.lengthToRadians)(radius, units), \"meters\");\n var buffered = (0, $fAhXk.BufferOp).bufferOp(geom, distance);\n var writer = new (0, $fAhXk.GeoJSONWriter)();\n buffered = writer.write(buffered);\n // Detect if empty geometries\n if ($27e8ebd74235584a$var$coordsIsNaN(buffered.coordinates)) return undefined;\n // Unproject coordinates (convert to Degrees)\n var result;\n if (needsTransverseMercator) result = {\n type: buffered.type,\n coordinates: $27e8ebd74235584a$var$unprojectCoords(buffered.coordinates, $27e8ebd74235584a$var$defineProjection(geometry))\n };\n else result = (0, $l1DKV.toWgs84)(buffered);\n return result.geometry ? result : (0, $brFkQ.feature)(result, properties);\n}\n/**\n * Coordinates isNaN\n *\n * @private\n * @param {Array} coords GeoJSON Coordinates\n * @returns {boolean} if NaN exists\n */ function $27e8ebd74235584a$var$coordsIsNaN(coords) {\n if (Array.isArray(coords[0])) return $27e8ebd74235584a$var$coordsIsNaN(coords[0]);\n return isNaN(coords[0]);\n}\n/**\n * Project coordinates to projection\n *\n * @private\n * @param {Array} coords to project\n * @param {GeoProjection} proj D3 Geo Projection\n * @returns {Array} projected coordinates\n */ function $27e8ebd74235584a$var$projectCoords(coords, proj) {\n if (typeof coords[0] !== \"object\") return proj(coords);\n return coords.map(function(coord) {\n return $27e8ebd74235584a$var$projectCoords(coord, proj);\n });\n}\n/**\n * Un-Project coordinates to projection\n *\n * @private\n * @param {Array} coords to un-project\n * @param {GeoProjection} proj D3 Geo Projection\n * @returns {Array} un-projected coordinates\n */ function $27e8ebd74235584a$var$unprojectCoords(coords, proj) {\n if (typeof coords[0] !== \"object\") return proj.invert(coords);\n return coords.map(function(coord) {\n return $27e8ebd74235584a$var$unprojectCoords(coord, proj);\n });\n}\n/**\n * Define Transverse Mercator projection\n *\n * @private\n * @param {Geometry|Feature} geojson Base projection on center of GeoJSON\n * @returns {GeoProjection} D3 Geo Transverse Mercator Projection\n */ function $27e8ebd74235584a$var$defineProjection(geojson) {\n var coords = (0, $9tGdu.default)(geojson).geometry.coordinates.reverse();\n var rotate = coords.map(function(coord) {\n return -coord;\n });\n return (0, $c1N6T.default)().center(coords).rotate(rotate).scale((0, $brFkQ.earthRadius));\n}\nvar $27e8ebd74235584a$export$2e2bcd8739ae039 = $27e8ebd74235584a$var$buffer;\n\n});\nparcelRegister(\"9tGdu\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6e6791ccd8589941$export$2e2bcd8739ae039; });\n\nvar $juW7F = parcelRequire(\"juW7F\");\n\nvar $brFkQ = parcelRequire(\"brFkQ\");\n/**\n * Takes a {@link Feature} or {@link FeatureCollection} and returns the absolute center point of all features.\n *\n * @name center\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] an Object that is used as the {@link Feature}'s properties\n * @returns {Feature} a Point feature at the absolute center point of all input features\n * @example\n * var features = turf.featureCollection([\n * turf.point( [-97.522259, 35.4691]),\n * turf.point( [-97.502754, 35.463455]),\n * turf.point( [-97.508269, 35.463245])\n * ]);\n *\n * var center = turf.center(features);\n *\n * //addToMap\n * var addToMap = [features, center]\n * center.properties['marker-size'] = 'large';\n * center.properties['marker-color'] = '#000';\n */ function $6e6791ccd8589941$var$center(geojson, options) {\n // Optional parameters\n options = options || {};\n if (!(0, $brFkQ.isObject)(options)) throw new Error(\"options is invalid\");\n var properties = options.properties;\n // Input validation\n if (!geojson) throw new Error(\"geojson is required\");\n var ext = (0, $juW7F.default)(geojson);\n var x = (ext[0] + ext[2]) / 2;\n var y = (ext[1] + ext[3]) / 2;\n return (0, $brFkQ.point)([\n x,\n y\n ], properties);\n}\nvar $6e6791ccd8589941$export$2e2bcd8739ae039 = $6e6791ccd8589941$var$center;\n\n});\nparcelRegister(\"juW7F\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $e31de79dd14e9f77$export$2e2bcd8739ae039; });\n\nvar $HcJdv = parcelRequire(\"HcJdv\");\n/**\n * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.\n *\n * @name bbox\n * @param {GeoJSON} geojson any GeoJSON object\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);\n * var bbox = turf.bbox(line);\n * var bboxPolygon = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [line, bboxPolygon]\n */ function $e31de79dd14e9f77$var$bbox(geojson) {\n var BBox = [\n Infinity,\n Infinity,\n -Infinity,\n -Infinity\n ];\n (0, $HcJdv.coordEach)(geojson, function(coord) {\n if (BBox[0] > coord[0]) BBox[0] = coord[0];\n if (BBox[1] > coord[1]) BBox[1] = coord[1];\n if (BBox[2] < coord[0]) BBox[2] = coord[0];\n if (BBox[3] < coord[1]) BBox[3] = coord[1];\n });\n return BBox;\n}\nvar $e31de79dd14e9f77$export$2e2bcd8739ae039 = $e31de79dd14e9f77$var$bbox;\n\n});\nparcelRegister(\"HcJdv\", function(module, exports) {\n\n$parcel$export(module.exports, \"coordEach\", function () { return $081de3d7e5fc587e$export$6e011439fde007ae; });\n$parcel$export(module.exports, \"featureEach\", function () { return $081de3d7e5fc587e$export$45a31c4de8035258; });\n$parcel$export(module.exports, \"geomEach\", function () { return $081de3d7e5fc587e$export$d2d248a56672ab3d; });\n\nvar $brFkQ = parcelRequire(\"brFkQ\");\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */ /**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */ function $081de3d7e5fc587e$export$6e011439fde007ae(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for(var featureIndex = 0; featureIndex < stop; featureIndex++){\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for(var geomIndex = 0; geomIndex < stopG; geomIndex++){\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch(geomType){\n case null:\n break;\n case \"Point\":\n if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for(j = 0; j < coords.length; j++){\n if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for(j = 0; j < coords.length; j++){\n for(k = 0; k < coords[j].length - wrapShrink; k++){\n if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for(j = 0; j < coords.length; j++){\n if (geomType === \"MultiPolygon\") geometryIndex = 0;\n for(k = 0; k < coords[j].length; k++){\n for(l = 0; l < coords[j][k].length - wrapShrink; l++){\n if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for(j = 0; j < geometry.geometries.length; j++)if ($081de3d7e5fc587e$export$6e011439fde007ae(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */ /**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */ function $081de3d7e5fc587e$export$6f96eac39184ffe9(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n $081de3d7e5fc587e$export$6e011439fde007ae(geojson, function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n }, excludeWrapCoord);\n return previousValue;\n}\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */ function $081de3d7e5fc587e$export$9d63c695566dbaa3(geojson, callback) {\n var i;\n switch(geojson.type){\n case \"FeatureCollection\":\n for(i = 0; i < geojson.features.length; i++){\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */ function $081de3d7e5fc587e$export$7ff6f75e5ef85a65(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $081de3d7e5fc587e$export$9d63c695566dbaa3(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n else previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */ function $081de3d7e5fc587e$export$45a31c4de8035258(geojson, callback) {\n if (geojson.type === \"Feature\") callback(geojson, 0);\n else if (geojson.type === \"FeatureCollection\") for(var i = 0; i < geojson.features.length; i++){\n if (callback(geojson.features[i], i) === false) break;\n }\n}\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */ function $081de3d7e5fc587e$export$b18fee751b10b055(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $081de3d7e5fc587e$export$45a31c4de8035258(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */ function $081de3d7e5fc587e$export$5485820fc560fe4e(geojson) {\n var coords = [];\n $081de3d7e5fc587e$export$6e011439fde007ae(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */ /**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */ function $081de3d7e5fc587e$export$d2d248a56672ab3d(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for(i = 0; i < stop; i++){\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : undefined;\n featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : undefined;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for(g = 0; g < stopG; g++){\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n // Handle null Geometry\n if (geometry === null) {\n if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n continue;\n }\n switch(geometry.type){\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n break;\n case \"GeometryCollection\":\n for(j = 0; j < geometry.geometries.length; j++){\n if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n }\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */ /**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */ function $081de3d7e5fc587e$export$30055ae7bd157809(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $081de3d7e5fc587e$export$d2d248a56672ab3d(geojson, function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n });\n return previousValue;\n}\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */ /**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */ function $081de3d7e5fc587e$export$12cba8b31beb353b(geojson, callback) {\n $081de3d7e5fc587e$export$d2d248a56672ab3d(geojson, function(geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = geometry === null ? null : geometry.type;\n switch(type){\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback((0, $brFkQ.feature)(geometry, properties, {\n bbox: bbox,\n id: id\n }), featureIndex, 0) === false) return false;\n return;\n }\n var geomType;\n // Callback for multi-geometry\n switch(type){\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for(var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++){\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback((0, $brFkQ.feature)(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n }\n });\n}\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */ /**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */ function $081de3d7e5fc587e$export$af6f15fec62b5d18(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $081de3d7e5fc587e$export$12cba8b31beb353b(geojson, function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n });\n return previousValue;\n}\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */ /**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */ function $081de3d7e5fc587e$export$d3ecc1efb2be121e(geojson, callback) {\n $081de3d7e5fc587e$export$12cba8b31beb353b(geojson, function(feature$$1, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n // Exclude null Geometries\n if (!feature$$1.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature$$1.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n // Generate 2-vertex line segments\n var previousCoords;\n if ($081de3d7e5fc587e$export$6e011439fde007ae(feature$$1, function(currentCoord, coordIndex, featureIndexCoord, mutliPartIndexCoord, geometryIndex) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (previousCoords === undefined) {\n previousCoords = currentCoord;\n return;\n }\n var currentSegment = (0, $brFkQ.lineString)([\n previousCoords,\n currentCoord\n ], feature$$1.properties);\n if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }) === false) return false;\n });\n}\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */ /**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentInex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */ function $081de3d7e5fc587e$export$eec78cdd4d343a79(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n $081de3d7e5fc587e$export$d3ecc1efb2be121e(geojson, function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === undefined) previousValue = currentSegment;\n else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n started = true;\n });\n return previousValue;\n}\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */ /**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */ function $081de3d7e5fc587e$export$985a91771cfc783d(geojson, callback) {\n // validation\n if (!geojson) throw new Error(\"geojson is required\");\n $081de3d7e5fc587e$export$12cba8b31beb353b(geojson, function(feature$$1, featureIndex, multiFeatureIndex) {\n if (feature$$1.geometry === null) return;\n var type = feature$$1.geometry.type;\n var coords = feature$$1.geometry.coordinates;\n switch(type){\n case \"LineString\":\n if (callback(feature$$1, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n break;\n case \"Polygon\":\n for(var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++){\n if (callback((0, $brFkQ.lineString)(coords[geometryIndex], feature$$1.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n }\n break;\n }\n });\n}\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */ /**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */ function $081de3d7e5fc587e$export$a150e51c8ec9198a(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $081de3d7e5fc587e$export$985a91771cfc783d(geojson, function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n });\n return previousValue;\n}\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature>\n */ function $081de3d7e5fc587e$export$2b6ba91fd8680d67(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!(0, $brFkQ.isObject)(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n switch(geojson.type){\n case \"FeatureCollection\":\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch(geometry.type){\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return (0, $brFkQ.lineString)([\n coords[segmentIndex],\n coords[segmentIndex + 1]\n ], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return (0, $brFkQ.lineString)([\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1]\n ], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return (0, $brFkQ.lineString)([\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1]\n ], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return (0, $brFkQ.lineString)([\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ], properties, options);\n }\n throw new Error(\"geojson is invalid\");\n}\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature>\n */ function $081de3d7e5fc587e$export$ed60ae5df1bac687(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!(0, $brFkQ.isObject)(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n switch(geojson.type){\n case \"FeatureCollection\":\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch(geometry.type){\n case \"Point\":\n return (0, $brFkQ.point)(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n return (0, $brFkQ.point)(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return (0, $brFkQ.point)(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n return (0, $brFkQ.point)(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return (0, $brFkQ.point)(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return (0, $brFkQ.point)(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n }\n throw new Error(\"geojson is invalid\");\n}\n\n});\nparcelRegister(\"brFkQ\", function(module, exports) {\n\n$parcel$export(module.exports, \"earthRadius\", function () { return $855247a7eed5dd77$export$e3a1ee0e9945697f; });\n$parcel$export(module.exports, \"feature\", function () { return $855247a7eed5dd77$export$ced6ed16dfd6a264; });\n$parcel$export(module.exports, \"isObject\", function () { return $855247a7eed5dd77$export$a6cdc56e425d0d0a; });\n$parcel$export(module.exports, \"point\", function () { return $855247a7eed5dd77$export$105684a3041cb6f3; });\n$parcel$export(module.exports, \"lineString\", function () { return $855247a7eed5dd77$export$98ec381bb06902c3; });\n$parcel$export(module.exports, \"isNumber\", function () { return $855247a7eed5dd77$export$7e4aa119212bc614; });\n$parcel$export(module.exports, \"featureCollection\", function () { return $855247a7eed5dd77$export$4717c67ac3e5e04d; });\n$parcel$export(module.exports, \"radiansToLength\", function () { return $855247a7eed5dd77$export$f234631d6a2eedf8; });\n$parcel$export(module.exports, \"lengthToRadians\", function () { return $855247a7eed5dd77$export$a2280f7debae8f10; });\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */ var $855247a7eed5dd77$export$e3a1ee0e9945697f = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */ var $855247a7eed5dd77$export$f929e47acbed771a = {\n meters: $855247a7eed5dd77$export$e3a1ee0e9945697f,\n metres: $855247a7eed5dd77$export$e3a1ee0e9945697f,\n millimeters: $855247a7eed5dd77$export$e3a1ee0e9945697f * 1000,\n millimetres: $855247a7eed5dd77$export$e3a1ee0e9945697f * 1000,\n centimeters: $855247a7eed5dd77$export$e3a1ee0e9945697f * 100,\n centimetres: $855247a7eed5dd77$export$e3a1ee0e9945697f * 100,\n kilometers: $855247a7eed5dd77$export$e3a1ee0e9945697f / 1000,\n kilometres: $855247a7eed5dd77$export$e3a1ee0e9945697f / 1000,\n miles: $855247a7eed5dd77$export$e3a1ee0e9945697f / 1609.344,\n nauticalmiles: $855247a7eed5dd77$export$e3a1ee0e9945697f / 1852,\n inches: $855247a7eed5dd77$export$e3a1ee0e9945697f * 39.370,\n yards: $855247a7eed5dd77$export$e3a1ee0e9945697f / 1.0936,\n feet: $855247a7eed5dd77$export$e3a1ee0e9945697f * 3.28084,\n radians: 1,\n degrees: $855247a7eed5dd77$export$e3a1ee0e9945697f / 111325\n};\n/**\n * Units of measurement factors based on 1 meter.\n */ var $855247a7eed5dd77$export$95cef4899be7420 = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 0.001,\n kilometres: 0.001,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / $855247a7eed5dd77$export$e3a1ee0e9945697f,\n degrees: 1 / 111325\n};\n/**\n * Area of measurement factors based on 1 square meter.\n */ var $855247a7eed5dd77$export$44665ce4f7f4c82b = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */ function $855247a7eed5dd77$export$ced6ed16dfd6a264(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!$855247a7eed5dd77$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (geometry === undefined) throw new Error(\"geometry is required\");\n if (properties && properties.constructor !== Object) throw new Error(\"properties must be an Object\");\n if (bbox) $855247a7eed5dd77$export$28ac7bb8f5309bea(bbox);\n if (id) $855247a7eed5dd77$export$f35f128fd59ea256(id);\n // Main\n var feat = {\n type: \"Feature\"\n };\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */ function $855247a7eed5dd77$export$42a7622cbf932bb(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!$855247a7eed5dd77$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n // Validation\n if (!type) throw new Error(\"type is required\");\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (bbox) $855247a7eed5dd77$export$28ac7bb8f5309bea(bbox);\n // Main\n var geom;\n switch(type){\n case \"Point\":\n geom = $855247a7eed5dd77$export$105684a3041cb6f3(coordinates).geometry;\n break;\n case \"LineString\":\n geom = $855247a7eed5dd77$export$98ec381bb06902c3(coordinates).geometry;\n break;\n case \"Polygon\":\n geom = $855247a7eed5dd77$export$b7b19aa0ee06c73(coordinates).geometry;\n break;\n case \"MultiPoint\":\n geom = $855247a7eed5dd77$export$335fc20ed6b6dbb6(coordinates).geometry;\n break;\n case \"MultiLineString\":\n geom = $855247a7eed5dd77$export$bd735230309493da(coordinates).geometry;\n break;\n case \"MultiPolygon\":\n geom = $855247a7eed5dd77$export$79bd594da96638d3(coordinates).geometry;\n break;\n default:\n throw new Error(type + \" is invalid\");\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */ function $855247a7eed5dd77$export$105684a3041cb6f3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be at least 2 numbers long\");\n if (!$855247a7eed5dd77$export$7e4aa119212bc614(coordinates[0]) || !$855247a7eed5dd77$export$7e4aa119212bc614(coordinates[1])) throw new Error(\"coordinates must contain numbers\");\n return $855247a7eed5dd77$export$ced6ed16dfd6a264({\n type: \"Point\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */ function $855247a7eed5dd77$export$9f048bf86ee2e9d2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $855247a7eed5dd77$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $855247a7eed5dd77$export$105684a3041cb6f3(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */ function $855247a7eed5dd77$export$b7b19aa0ee06c73(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n for(var i = 0; i < coordinates.length; i++){\n var ring = coordinates[i];\n if (ring.length < 4) throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n for(var j = 0; j < ring[ring.length - 1].length; j++){\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !$855247a7eed5dd77$export$7e4aa119212bc614(ring[0][0]) || !$855247a7eed5dd77$export$7e4aa119212bc614(ring[0][1])) throw new Error(\"coordinates must contain numbers\");\n if (ring[ring.length - 1][j] !== ring[0][j]) throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n return $855247a7eed5dd77$export$ced6ed16dfd6a264({\n type: \"Polygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */ function $855247a7eed5dd77$export$8869eb68a940f9c2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $855247a7eed5dd77$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $855247a7eed5dd77$export$b7b19aa0ee06c73(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */ function $855247a7eed5dd77$export$98ec381bb06902c3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be an array of two or more positions\");\n // Check if first point of LineString contains two numbers\n if (!$855247a7eed5dd77$export$7e4aa119212bc614(coordinates[0][1]) || !$855247a7eed5dd77$export$7e4aa119212bc614(coordinates[0][1])) throw new Error(\"coordinates must contain numbers\");\n return $855247a7eed5dd77$export$ced6ed16dfd6a264({\n type: \"LineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */ function $855247a7eed5dd77$export$74f7306c35db993f(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $855247a7eed5dd77$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $855247a7eed5dd77$export$98ec381bb06902c3(coords, properties);\n }), options);\n}\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */ function $855247a7eed5dd77$export$4717c67ac3e5e04d(features, options) {\n // Optional Parameters\n options = options || {};\n if (!$855247a7eed5dd77$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (!features) throw new Error(\"No features passed\");\n if (!Array.isArray(features)) throw new Error(\"features must be an Array\");\n if (bbox) $855247a7eed5dd77$export$28ac7bb8f5309bea(bbox);\n if (id) $855247a7eed5dd77$export$f35f128fd59ea256(id);\n // Main\n var fc = {\n type: \"FeatureCollection\"\n };\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */ function $855247a7eed5dd77$export$bd735230309493da(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $855247a7eed5dd77$export$ced6ed16dfd6a264({\n type: \"MultiLineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */ function $855247a7eed5dd77$export$335fc20ed6b6dbb6(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $855247a7eed5dd77$export$ced6ed16dfd6a264({\n type: \"MultiPoint\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */ function $855247a7eed5dd77$export$79bd594da96638d3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $855247a7eed5dd77$export$ced6ed16dfd6a264({\n type: \"MultiPolygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */ function $855247a7eed5dd77$export$9242f1e18250422a(geometries, properties, options) {\n if (!geometries) throw new Error(\"geometries is required\");\n if (!Array.isArray(geometries)) throw new Error(\"geometries must be an Array\");\n return $855247a7eed5dd77$export$ced6ed16dfd6a264({\n type: \"GeometryCollection\",\n geometries: geometries\n }, properties, options);\n}\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */ function $855247a7eed5dd77$export$2077e0241d6afd3c(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error(\"num is required\");\n if (precision && !(precision >= 0)) throw new Error(\"precision must be a positive number\");\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */ function $855247a7eed5dd77$export$f234631d6a2eedf8(radians, units) {\n if (radians === undefined || radians === null) throw new Error(\"radians is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $855247a7eed5dd77$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return radians * factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */ function $855247a7eed5dd77$export$a2280f7debae8f10(distance, units) {\n if (distance === undefined || distance === null) throw new Error(\"distance is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $855247a7eed5dd77$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return distance / factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */ function $855247a7eed5dd77$export$c7a138e00a89bd01(distance, units) {\n return $855247a7eed5dd77$export$c41dd2a8460d3196($855247a7eed5dd77$export$a2280f7debae8f10(distance, units));\n}\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */ function $855247a7eed5dd77$export$f2077d29c73b33ec(bearing) {\n if (bearing === null || bearing === undefined) throw new Error(\"bearing is required\");\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */ function $855247a7eed5dd77$export$c41dd2a8460d3196(radians) {\n if (radians === null || radians === undefined) throw new Error(\"radians is required\");\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */ function $855247a7eed5dd77$export$c9fcf1a7df975d78(degrees) {\n if (degrees === null || degrees === undefined) throw new Error(\"degrees is required\");\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */ function $855247a7eed5dd77$export$ea1536a749e80563(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error(\"length is required\");\n if (!(length >= 0)) throw new Error(\"length must be a positive number\");\n return $855247a7eed5dd77$export$f234631d6a2eedf8($855247a7eed5dd77$export$a2280f7debae8f10(length, originalUnit), finalUnit || \"kilometers\");\n}\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */ function $855247a7eed5dd77$export$2e65e2c759f7e341(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error(\"area is required\");\n if (!(area >= 0)) throw new Error(\"area must be a positive number\");\n var startFactor = $855247a7eed5dd77$export$44665ce4f7f4c82b[originalUnit || \"meters\"];\n if (!startFactor) throw new Error(\"invalid original units\");\n var finalFactor = $855247a7eed5dd77$export$44665ce4f7f4c82b[finalUnit || \"kilometers\"];\n if (!finalFactor) throw new Error(\"invalid final units\");\n return area / startFactor * finalFactor;\n}\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */ function $855247a7eed5dd77$export$7e4aa119212bc614(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */ function $855247a7eed5dd77$export$a6cdc56e425d0d0a(input) {\n return !!input && input.constructor === Object;\n}\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */ function $855247a7eed5dd77$export$28ac7bb8f5309bea(bbox) {\n if (!bbox) throw new Error(\"bbox is required\");\n if (!Array.isArray(bbox)) throw new Error(\"bbox must be an Array\");\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n bbox.forEach(function(num) {\n if (!$855247a7eed5dd77$export$7e4aa119212bc614(num)) throw new Error(\"bbox must only contain numbers\");\n });\n}\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */ function $855247a7eed5dd77$export$f35f128fd59ea256(id) {\n if (!id) throw new Error(\"id is required\");\n if ([\n \"string\",\n \"number\"\n ].indexOf(typeof id) === -1) throw new Error(\"id must be a number or a string\");\n}\n// Deprecated methods\nfunction $855247a7eed5dd77$export$b7eac44a74fbbf44() {\n throw new Error(\"method has been renamed to `radiansToDegrees`\");\n}\nfunction $855247a7eed5dd77$export$429f6664de4d6783() {\n throw new Error(\"method has been renamed to `degreesToRadians`\");\n}\nfunction $855247a7eed5dd77$export$682f47d8f6f8f330() {\n throw new Error(\"method has been renamed to `lengthToDegrees`\");\n}\nfunction $855247a7eed5dd77$export$8fc0c652b1df31fd() {\n throw new Error(\"method has been renamed to `lengthToRadians`\");\n}\nfunction $855247a7eed5dd77$export$dc0d90c052e1e7ea() {\n throw new Error(\"method has been renamed to `radiansToLength`\");\n}\nfunction $855247a7eed5dd77$export$97a5bf601f8e0e61() {\n throw new Error(\"method has been renamed to `bearingToAzimuth`\");\n}\nfunction $855247a7eed5dd77$export$1d848d23272abfae() {\n throw new Error(\"method has been renamed to `convertLength`\");\n}\n\n});\n\n\n\n\nparcelRegister(\"fAhXk\", function(module, exports) {\n!function(t, e) {\n e(module.exports);\n}(module.exports, function(t) {\n \"use strict\";\n function e() {}\n function n(t) {\n this.message = t || \"\";\n }\n function i(t) {\n this.message = t || \"\";\n }\n function r(t) {\n this.message = t || \"\";\n }\n function o() {}\n function s(t) {\n return null === t ? Mt : t.color;\n }\n function a(t) {\n return null === t ? null : t.parent;\n }\n function u(t, e) {\n null !== t && (t.color = e);\n }\n function l(t) {\n return null === t ? null : t.left;\n }\n function c(t) {\n return null === t ? null : t.right;\n }\n function p() {\n this.root_ = null, this.size_ = 0;\n }\n function h() {}\n function f() {\n this.array_ = [], arguments[0] instanceof It && this.addAll(arguments[0]);\n }\n function g() {}\n function d(t) {\n this.message = t || \"\";\n }\n function y() {\n this.array_ = [];\n }\n \"fill\" in Array.prototype || Object.defineProperty(Array.prototype, \"fill\", {\n configurable: !0,\n value: function(t) {\n if (void 0 === this || null === this) throw new TypeError(this + \" is not an object\");\n var e = Object(this), n = Math.max(Math.min(e.length, 9007199254740991), 0) || 0, i = 1 in arguments ? parseInt(Number(arguments[1]), 10) || 0 : 0;\n i = i < 0 ? Math.max(n + i, 0) : Math.min(i, n);\n var r = 2 in arguments && void 0 !== arguments[2] ? parseInt(Number(arguments[2]), 10) || 0 : n;\n for(r = r < 0 ? Math.max(n + arguments[2], 0) : Math.min(r, n); i < r;)e[i] = t, ++i;\n return e;\n },\n writable: !0\n }), Number.isFinite = Number.isFinite || function(t) {\n return \"number\" == typeof t && isFinite(t);\n }, Number.isInteger = Number.isInteger || function(t) {\n return \"number\" == typeof t && isFinite(t) && Math.floor(t) === t;\n }, Number.parseFloat = Number.parseFloat || parseFloat, Number.isNaN = Number.isNaN || function(t) {\n return t != t;\n }, Math.trunc = Math.trunc || function(t) {\n return t < 0 ? Math.ceil(t) : Math.floor(t);\n };\n var _ = function() {};\n _.prototype.interfaces_ = function() {\n return [];\n }, _.prototype.getClass = function() {\n return _;\n }, _.prototype.equalsWithTolerance = function(t, e, n) {\n return Math.abs(t - e) <= n;\n };\n var m = function(t) {\n function e(e) {\n t.call(this, e), this.name = \"IllegalArgumentException\", this.message = e, this.stack = (new t).stack;\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e;\n }(Error), v = function() {}, I = {\n MAX_VALUE: {\n configurable: !0\n }\n };\n v.isNaN = function(t) {\n return Number.isNaN(t);\n }, v.doubleToLongBits = function(t) {\n return t;\n }, v.longBitsToDouble = function(t) {\n return t;\n }, v.isInfinite = function(t) {\n return !Number.isFinite(t);\n }, I.MAX_VALUE.get = function() {\n return Number.MAX_VALUE;\n }, Object.defineProperties(v, I);\n var E = function() {}, x = function() {}, N = function() {}, C = function t() {\n if (this.x = null, this.y = null, this.z = null, 0 === arguments.length) this.x = 0, this.y = 0, this.z = t.NULL_ORDINATE;\n else if (1 === arguments.length) {\n var e = arguments[0];\n this.x = e.x, this.y = e.y, this.z = e.z;\n } else 2 === arguments.length ? (this.x = arguments[0], this.y = arguments[1], this.z = t.NULL_ORDINATE) : 3 === arguments.length && (this.x = arguments[0], this.y = arguments[1], this.z = arguments[2]);\n }, S = {\n DimensionalComparator: {\n configurable: !0\n },\n serialVersionUID: {\n configurable: !0\n },\n NULL_ORDINATE: {\n configurable: !0\n },\n X: {\n configurable: !0\n },\n Y: {\n configurable: !0\n },\n Z: {\n configurable: !0\n }\n };\n C.prototype.setOrdinate = function(t, e) {\n switch(t){\n case C.X:\n this.x = e;\n break;\n case C.Y:\n this.y = e;\n break;\n case C.Z:\n this.z = e;\n break;\n default:\n throw new m(\"Invalid ordinate index: \" + t);\n }\n }, C.prototype.equals2D = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n return this.x === t.x && this.y === t.y;\n }\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n return !!_.equalsWithTolerance(this.x, e.x, n) && !!_.equalsWithTolerance(this.y, e.y, n);\n }\n }, C.prototype.getOrdinate = function(t) {\n switch(t){\n case C.X:\n return this.x;\n case C.Y:\n return this.y;\n case C.Z:\n return this.z;\n }\n throw new m(\"Invalid ordinate index: \" + t);\n }, C.prototype.equals3D = function(t) {\n return this.x === t.x && this.y === t.y && (this.z === t.z || v.isNaN(this.z)) && v.isNaN(t.z);\n }, C.prototype.equals = function(t) {\n return t instanceof C && this.equals2D(t);\n }, C.prototype.equalInZ = function(t, e) {\n return _.equalsWithTolerance(this.z, t.z, e);\n }, C.prototype.compareTo = function(t) {\n var e = t;\n return this.x < e.x ? -1 : this.x > e.x ? 1 : this.y < e.y ? -1 : this.y > e.y ? 1 : 0;\n }, C.prototype.clone = function() {}, C.prototype.copy = function() {\n return new C(this);\n }, C.prototype.toString = function() {\n return \"(\" + this.x + \", \" + this.y + \", \" + this.z + \")\";\n }, C.prototype.distance3D = function(t) {\n var e = this.x - t.x, n = this.y - t.y, i = this.z - t.z;\n return Math.sqrt(e * e + n * n + i * i);\n }, C.prototype.distance = function(t) {\n var e = this.x - t.x, n = this.y - t.y;\n return Math.sqrt(e * e + n * n);\n }, C.prototype.hashCode = function() {\n var t = 17;\n return t = 37 * t + C.hashCode(this.x), t = 37 * t + C.hashCode(this.y);\n }, C.prototype.setCoordinate = function(t) {\n this.x = t.x, this.y = t.y, this.z = t.z;\n }, C.prototype.interfaces_ = function() {\n return [\n E,\n x,\n e\n ];\n }, C.prototype.getClass = function() {\n return C;\n }, C.hashCode = function() {\n if (1 === arguments.length) {\n var t = arguments[0], e = v.doubleToLongBits(t);\n return Math.trunc((e ^ e) >>> 32);\n }\n }, S.DimensionalComparator.get = function() {\n return L;\n }, S.serialVersionUID.get = function() {\n return 0x5cbf2c235c7e5800;\n }, S.NULL_ORDINATE.get = function() {\n return v.NaN;\n }, S.X.get = function() {\n return 0;\n }, S.Y.get = function() {\n return 1;\n }, S.Z.get = function() {\n return 2;\n }, Object.defineProperties(C, S);\n var L = function(t) {\n if (this._dimensionsToTest = 2, 0 === arguments.length) ;\n else if (1 === arguments.length) {\n var e = arguments[0];\n if (2 !== e && 3 !== e) throw new m(\"only 2 or 3 dimensions may be specified\");\n this._dimensionsToTest = e;\n }\n };\n L.prototype.compare = function(t, e) {\n var n = t, i = e, r = L.compare(n.x, i.x);\n if (0 !== r) return r;\n var o = L.compare(n.y, i.y);\n if (0 !== o) return o;\n if (this._dimensionsToTest <= 2) return 0;\n return L.compare(n.z, i.z);\n }, L.prototype.interfaces_ = function() {\n return [\n N\n ];\n }, L.prototype.getClass = function() {\n return L;\n }, L.compare = function(t, e) {\n return t < e ? -1 : t > e ? 1 : v.isNaN(t) ? v.isNaN(e) ? 0 : -1 : v.isNaN(e) ? 1 : 0;\n };\n var b = function() {};\n b.prototype.create = function() {}, b.prototype.interfaces_ = function() {\n return [];\n }, b.prototype.getClass = function() {\n return b;\n };\n var w = function() {}, O = {\n INTERIOR: {\n configurable: !0\n },\n BOUNDARY: {\n configurable: !0\n },\n EXTERIOR: {\n configurable: !0\n },\n NONE: {\n configurable: !0\n }\n };\n w.prototype.interfaces_ = function() {\n return [];\n }, w.prototype.getClass = function() {\n return w;\n }, w.toLocationSymbol = function(t) {\n switch(t){\n case w.EXTERIOR:\n return \"e\";\n case w.BOUNDARY:\n return \"b\";\n case w.INTERIOR:\n return \"i\";\n case w.NONE:\n return \"-\";\n }\n throw new m(\"Unknown location value: \" + t);\n }, O.INTERIOR.get = function() {\n return 0;\n }, O.BOUNDARY.get = function() {\n return 1;\n }, O.EXTERIOR.get = function() {\n return 2;\n }, O.NONE.get = function() {\n return -1;\n }, Object.defineProperties(w, O);\n var T = function(t, e) {\n return t.interfaces_ && t.interfaces_().indexOf(e) > -1;\n }, R = function() {}, P = {\n LOG_10: {\n configurable: !0\n }\n };\n R.prototype.interfaces_ = function() {\n return [];\n }, R.prototype.getClass = function() {\n return R;\n }, R.log10 = function(t) {\n var e = Math.log(t);\n return v.isInfinite(e) ? e : v.isNaN(e) ? e : e / R.LOG_10;\n }, R.min = function(t, e, n, i) {\n var r = t;\n return e < r && (r = e), n < r && (r = n), i < r && (r = i), r;\n }, R.clamp = function() {\n if (\"number\" == typeof arguments[2] && \"number\" == typeof arguments[0] && \"number\" == typeof arguments[1]) {\n var t = arguments[0], e = arguments[1], n = arguments[2];\n return t < e ? e : t > n ? n : t;\n }\n if (Number.isInteger(arguments[2]) && Number.isInteger(arguments[0]) && Number.isInteger(arguments[1])) {\n var i = arguments[0], r = arguments[1], o = arguments[2];\n return i < r ? r : i > o ? o : i;\n }\n }, R.wrap = function(t, e) {\n return t < 0 ? e - -t % e : t % e;\n }, R.max = function() {\n if (3 === arguments.length) {\n var t = arguments[0], e = arguments[1], n = arguments[2], i = t;\n return e > i && (i = e), n > i && (i = n), i;\n }\n if (4 === arguments.length) {\n var r = arguments[0], o = arguments[1], s = arguments[2], a = arguments[3], u = r;\n return o > u && (u = o), s > u && (u = s), a > u && (u = a), u;\n }\n }, R.average = function(t, e) {\n return (t + e) / 2;\n }, P.LOG_10.get = function() {\n return Math.log(10);\n }, Object.defineProperties(R, P);\n var D = function(t) {\n this.str = t;\n };\n D.prototype.append = function(t) {\n this.str += t;\n }, D.prototype.setCharAt = function(t, e) {\n this.str = this.str.substr(0, t) + e + this.str.substr(t + 1);\n }, D.prototype.toString = function(t) {\n return this.str;\n };\n var M = function(t) {\n this.value = t;\n };\n M.prototype.intValue = function() {\n return this.value;\n }, M.prototype.compareTo = function(t) {\n return this.value < t ? -1 : this.value > t ? 1 : 0;\n }, M.isNaN = function(t) {\n return Number.isNaN(t);\n };\n var A = function() {};\n A.isWhitespace = function(t) {\n return t <= 32 && t >= 0 || 127 === t;\n }, A.toUpperCase = function(t) {\n return t.toUpperCase();\n };\n var F = function t() {\n if (this._hi = 0, this._lo = 0, 0 === arguments.length) this.init(0);\n else if (1 === arguments.length) {\n if (\"number\" == typeof arguments[0]) {\n var e = arguments[0];\n this.init(e);\n } else if (arguments[0] instanceof t) {\n var n = arguments[0];\n this.init(n);\n } else if (\"string\" == typeof arguments[0]) {\n var i = arguments[0];\n t.call(this, t.parse(i));\n }\n } else if (2 === arguments.length) {\n var r = arguments[0], o = arguments[1];\n this.init(r, o);\n }\n }, G = {\n PI: {\n configurable: !0\n },\n TWO_PI: {\n configurable: !0\n },\n PI_2: {\n configurable: !0\n },\n E: {\n configurable: !0\n },\n NaN: {\n configurable: !0\n },\n EPS: {\n configurable: !0\n },\n SPLIT: {\n configurable: !0\n },\n MAX_PRINT_DIGITS: {\n configurable: !0\n },\n TEN: {\n configurable: !0\n },\n ONE: {\n configurable: !0\n },\n SCI_NOT_EXPONENT_CHAR: {\n configurable: !0\n },\n SCI_NOT_ZERO: {\n configurable: !0\n }\n };\n F.prototype.le = function(t) {\n return (this._hi < t._hi || this._hi === t._hi) && this._lo <= t._lo;\n }, F.prototype.extractSignificantDigits = function(t, e) {\n var n = this.abs(), i = F.magnitude(n._hi), r = F.TEN.pow(i);\n (n = n.divide(r)).gt(F.TEN) ? (n = n.divide(F.TEN), i += 1) : n.lt(F.ONE) && (n = n.multiply(F.TEN), i -= 1);\n for(var o = i + 1, s = new D, a = F.MAX_PRINT_DIGITS - 1, u = 0; u <= a; u++){\n t && u === o && s.append(\".\");\n var l = Math.trunc(n._hi);\n if (l < 0) break;\n var c = !1, p = 0;\n l > 9 ? (c = !0, p = \"9\") : p = \"0\" + l, s.append(p), n = n.subtract(F.valueOf(l)).multiply(F.TEN), c && n.selfAdd(F.TEN);\n var h = !0, f = F.magnitude(n._hi);\n if (f < 0 && Math.abs(f) >= a - u && (h = !1), !h) break;\n }\n return e[0] = i, s.toString();\n }, F.prototype.sqr = function() {\n return this.multiply(this);\n }, F.prototype.doubleValue = function() {\n return this._hi + this._lo;\n }, F.prototype.subtract = function() {\n if (arguments[0] instanceof F) {\n var t = arguments[0];\n return this.add(t.negate());\n }\n if (\"number\" == typeof arguments[0]) {\n var e = arguments[0];\n return this.add(-e);\n }\n }, F.prototype.equals = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n return this._hi === t._hi && this._lo === t._lo;\n }\n }, F.prototype.isZero = function() {\n return 0 === this._hi && 0 === this._lo;\n }, F.prototype.selfSubtract = function() {\n if (arguments[0] instanceof F) {\n var t = arguments[0];\n return this.isNaN() ? this : this.selfAdd(-t._hi, -t._lo);\n }\n if (\"number\" == typeof arguments[0]) {\n var e = arguments[0];\n return this.isNaN() ? this : this.selfAdd(-e, 0);\n }\n }, F.prototype.getSpecialNumberString = function() {\n return this.isZero() ? \"0.0\" : this.isNaN() ? \"NaN \" : null;\n }, F.prototype.min = function(t) {\n return this.le(t) ? this : t;\n }, F.prototype.selfDivide = function() {\n if (1 === arguments.length) {\n if (arguments[0] instanceof F) {\n var t = arguments[0];\n return this.selfDivide(t._hi, t._lo);\n }\n if (\"number\" == typeof arguments[0]) {\n var e = arguments[0];\n return this.selfDivide(e, 0);\n }\n } else if (2 === arguments.length) {\n var n = arguments[0], i = arguments[1], r = null, o = null, s = null, a = null, u = null, l = null, c = null, p = null;\n return u = this._hi / n, l = F.SPLIT * u, r = l - u, p = F.SPLIT * n, r = l - r, o = u - r, s = p - n, c = u * n, s = p - s, a = n - s, p = r * s - c + r * a + o * s + o * a, l = (this._hi - c - p + this._lo - u * i) / n, p = u + l, this._hi = p, this._lo = u - p + l, this;\n }\n }, F.prototype.dump = function() {\n return \"DD<\" + this._hi + \", \" + this._lo + \">\";\n }, F.prototype.divide = function() {\n if (arguments[0] instanceof F) {\n var t = arguments[0], e = null, n = null, i = null, r = null, o = null, s = null, a = null, u = null;\n n = (o = this._hi / t._hi) - (e = (s = F.SPLIT * o) - (e = s - o)), u = e * (i = (u = F.SPLIT * t._hi) - (i = u - t._hi)) - (a = o * t._hi) + e * (r = t._hi - i) + n * i + n * r, s = (this._hi - a - u + this._lo - o * t._lo) / t._hi;\n return new F(u = o + s, o - u + s);\n }\n if (\"number\" == typeof arguments[0]) {\n var l = arguments[0];\n return v.isNaN(l) ? F.createNaN() : F.copy(this).selfDivide(l, 0);\n }\n }, F.prototype.ge = function(t) {\n return (this._hi > t._hi || this._hi === t._hi) && this._lo >= t._lo;\n }, F.prototype.pow = function(t) {\n if (0 === t) return F.valueOf(1);\n var e = new F(this), n = F.valueOf(1), i = Math.abs(t);\n if (i > 1) for(; i > 0;)i % 2 == 1 && n.selfMultiply(e), (i /= 2) > 0 && (e = e.sqr());\n else n = e;\n return t < 0 ? n.reciprocal() : n;\n }, F.prototype.ceil = function() {\n if (this.isNaN()) return F.NaN;\n var t = Math.ceil(this._hi), e = 0;\n return t === this._hi && (e = Math.ceil(this._lo)), new F(t, e);\n }, F.prototype.compareTo = function(t) {\n var e = t;\n return this._hi < e._hi ? -1 : this._hi > e._hi ? 1 : this._lo < e._lo ? -1 : this._lo > e._lo ? 1 : 0;\n }, F.prototype.rint = function() {\n if (this.isNaN()) return this;\n return this.add(.5).floor();\n }, F.prototype.setValue = function() {\n if (arguments[0] instanceof F) {\n var t = arguments[0];\n return this.init(t), this;\n }\n if (\"number\" == typeof arguments[0]) {\n var e = arguments[0];\n return this.init(e), this;\n }\n }, F.prototype.max = function(t) {\n return this.ge(t) ? this : t;\n }, F.prototype.sqrt = function() {\n if (this.isZero()) return F.valueOf(0);\n if (this.isNegative()) return F.NaN;\n var t = 1 / Math.sqrt(this._hi), e = this._hi * t, n = F.valueOf(e), i = this.subtract(n.sqr())._hi * (.5 * t);\n return n.add(i);\n }, F.prototype.selfAdd = function() {\n if (1 === arguments.length) {\n if (arguments[0] instanceof F) {\n var t = arguments[0];\n return this.selfAdd(t._hi, t._lo);\n }\n if (\"number\" == typeof arguments[0]) {\n var e = arguments[0], n = null, i = null, r = null, o = null, s = null, a = null;\n return r = this._hi + e, s = r - this._hi, o = r - s, o = e - s + (this._hi - o), a = o + this._lo, n = r + a, i = a + (r - n), this._hi = n + i, this._lo = i + (n - this._hi), this;\n }\n } else if (2 === arguments.length) {\n var u = arguments[0], l = arguments[1], c = null, p = null, h = null, f = null, g = null, d = null, y = null;\n f = this._hi + u, p = this._lo + l, g = f - (d = f - this._hi), h = p - (y = p - this._lo);\n var _ = (c = f + (d = (g = u - d + (this._hi - g)) + p)) + (d = (h = l - y + (this._lo - h)) + (d + (f - c))), m = d + (c - _);\n return this._hi = _, this._lo = m, this;\n }\n }, F.prototype.selfMultiply = function() {\n if (1 === arguments.length) {\n if (arguments[0] instanceof F) {\n var t = arguments[0];\n return this.selfMultiply(t._hi, t._lo);\n }\n if (\"number\" == typeof arguments[0]) {\n var e = arguments[0];\n return this.selfMultiply(e, 0);\n }\n } else if (2 === arguments.length) {\n var n = arguments[0], i = arguments[1], r = null, o = null, s = null, a = null, u = null, l = null;\n r = (u = F.SPLIT * this._hi) - this._hi, l = F.SPLIT * n, r = u - r, o = this._hi - r, s = l - n;\n var c = (u = this._hi * n) + (l = r * (s = l - s) - u + r * (a = n - s) + o * s + o * a + (this._hi * i + this._lo * n)), p = l + (r = u - c);\n return this._hi = c, this._lo = p, this;\n }\n }, F.prototype.selfSqr = function() {\n return this.selfMultiply(this);\n }, F.prototype.floor = function() {\n if (this.isNaN()) return F.NaN;\n var t = Math.floor(this._hi), e = 0;\n return t === this._hi && (e = Math.floor(this._lo)), new F(t, e);\n }, F.prototype.negate = function() {\n return this.isNaN() ? this : new F(-this._hi, -this._lo);\n }, F.prototype.clone = function() {}, F.prototype.multiply = function() {\n if (arguments[0] instanceof F) {\n var t = arguments[0];\n return t.isNaN() ? F.createNaN() : F.copy(this).selfMultiply(t);\n }\n if (\"number\" == typeof arguments[0]) {\n var e = arguments[0];\n return v.isNaN(e) ? F.createNaN() : F.copy(this).selfMultiply(e, 0);\n }\n }, F.prototype.isNaN = function() {\n return v.isNaN(this._hi);\n }, F.prototype.intValue = function() {\n return Math.trunc(this._hi);\n }, F.prototype.toString = function() {\n var t = F.magnitude(this._hi);\n return t >= -3 && t <= 20 ? this.toStandardNotation() : this.toSciNotation();\n }, F.prototype.toStandardNotation = function() {\n var t = this.getSpecialNumberString();\n if (null !== t) return t;\n var e = new Array(1).fill(null), n = this.extractSignificantDigits(!0, e), i = e[0] + 1, r = n;\n if (\".\" === n.charAt(0)) r = \"0\" + n;\n else if (i < 0) r = \"0.\" + F.stringOfChar(\"0\", -i) + n;\n else if (-1 === n.indexOf(\".\")) {\n var o = i - n.length;\n r = n + F.stringOfChar(\"0\", o) + \".0\";\n }\n return this.isNegative() ? \"-\" + r : r;\n }, F.prototype.reciprocal = function() {\n var t = null, e = null, n = null, i = null, r = null, o = null, s = null, a = null;\n e = (r = 1 / this._hi) - (t = (o = F.SPLIT * r) - (t = o - r)), n = (a = F.SPLIT * this._hi) - this._hi;\n var u = r + (o = (1 - (s = r * this._hi) - (a = t * (n = a - n) - s + t * (i = this._hi - n) + e * n + e * i) - r * this._lo) / this._hi);\n return new F(u, r - u + o);\n }, F.prototype.toSciNotation = function() {\n if (this.isZero()) return F.SCI_NOT_ZERO;\n var t = this.getSpecialNumberString();\n if (null !== t) return t;\n var e = new Array(1).fill(null), n = this.extractSignificantDigits(!1, e), i = F.SCI_NOT_EXPONENT_CHAR + e[0];\n if (\"0\" === n.charAt(0)) throw new Error(\"Found leading zero: \" + n);\n var r = \"\";\n n.length > 1 && (r = n.substring(1));\n var o = n.charAt(0) + \".\" + r;\n return this.isNegative() ? \"-\" + o + i : o + i;\n }, F.prototype.abs = function() {\n return this.isNaN() ? F.NaN : this.isNegative() ? this.negate() : new F(this);\n }, F.prototype.isPositive = function() {\n return (this._hi > 0 || 0 === this._hi) && this._lo > 0;\n }, F.prototype.lt = function(t) {\n return (this._hi < t._hi || this._hi === t._hi) && this._lo < t._lo;\n }, F.prototype.add = function() {\n if (arguments[0] instanceof F) {\n var t = arguments[0];\n return F.copy(this).selfAdd(t);\n }\n if (\"number\" == typeof arguments[0]) {\n var e = arguments[0];\n return F.copy(this).selfAdd(e);\n }\n }, F.prototype.init = function() {\n if (1 === arguments.length) {\n if (\"number\" == typeof arguments[0]) {\n var t = arguments[0];\n this._hi = t, this._lo = 0;\n } else if (arguments[0] instanceof F) {\n var e = arguments[0];\n this._hi = e._hi, this._lo = e._lo;\n }\n } else if (2 === arguments.length) {\n var n = arguments[0], i = arguments[1];\n this._hi = n, this._lo = i;\n }\n }, F.prototype.gt = function(t) {\n return (this._hi > t._hi || this._hi === t._hi) && this._lo > t._lo;\n }, F.prototype.isNegative = function() {\n return (this._hi < 0 || 0 === this._hi) && this._lo < 0;\n }, F.prototype.trunc = function() {\n return this.isNaN() ? F.NaN : this.isPositive() ? this.floor() : this.ceil();\n }, F.prototype.signum = function() {\n return this._hi > 0 ? 1 : this._hi < 0 ? -1 : this._lo > 0 ? 1 : this._lo < 0 ? -1 : 0;\n }, F.prototype.interfaces_ = function() {\n return [\n e,\n E,\n x\n ];\n }, F.prototype.getClass = function() {\n return F;\n }, F.sqr = function(t) {\n return F.valueOf(t).selfMultiply(t);\n }, F.valueOf = function() {\n if (\"string\" == typeof arguments[0]) {\n var t = arguments[0];\n return F.parse(t);\n }\n if (\"number\" == typeof arguments[0]) {\n var e = arguments[0];\n return new F(e);\n }\n }, F.sqrt = function(t) {\n return F.valueOf(t).sqrt();\n }, F.parse = function(t) {\n for(var e = 0, n = t.length; A.isWhitespace(t.charAt(e));)e++;\n var i = !1;\n if (e < n) {\n var r = t.charAt(e);\n \"-\" !== r && \"+\" !== r || (e++, \"-\" === r && (i = !0));\n }\n for(var o = new F, s = 0, a = 0, u = 0; !(e >= n);){\n var l = t.charAt(e);\n if (e++, A.isDigit(l)) {\n var c = l - \"0\";\n o.selfMultiply(F.TEN), o.selfAdd(c), s++;\n } else {\n if (\".\" !== l) {\n if (\"e\" === l || \"E\" === l) {\n var p = t.substring(e);\n try {\n u = M.parseInt(p);\n } catch (e) {\n throw e instanceof Error ? new Error(\"Invalid exponent \" + p + \" in string \" + t) : e;\n }\n break;\n }\n throw new Error(\"Unexpected character '\" + l + \"' at position \" + e + \" in string \" + t);\n }\n a = s;\n }\n }\n var h = o, f = s - a - u;\n if (0 === f) h = o;\n else if (f > 0) {\n var g = F.TEN.pow(f);\n h = o.divide(g);\n } else if (f < 0) {\n var d = F.TEN.pow(-f);\n h = o.multiply(d);\n }\n return i ? h.negate() : h;\n }, F.createNaN = function() {\n return new F(v.NaN, v.NaN);\n }, F.copy = function(t) {\n return new F(t);\n }, F.magnitude = function(t) {\n var e = Math.abs(t), n = Math.log(e) / Math.log(10), i = Math.trunc(Math.floor(n));\n return 10 * Math.pow(10, i) <= e && (i += 1), i;\n }, F.stringOfChar = function(t, e) {\n for(var n = new D, i = 0; i < e; i++)n.append(t);\n return n.toString();\n }, G.PI.get = function() {\n return new F(3.141592653589793, 1.2246467991473532e-16);\n }, G.TWO_PI.get = function() {\n return new F(6.283185307179586, 2.4492935982947064e-16);\n }, G.PI_2.get = function() {\n return new F(1.5707963267948966, 6.123233995736766e-17);\n }, G.E.get = function() {\n return new F(2.718281828459045, 1.4456468917292502e-16);\n }, G.NaN.get = function() {\n return new F(v.NaN, v.NaN);\n }, G.EPS.get = function() {\n return 1.23259516440783e-32;\n }, G.SPLIT.get = function() {\n return 134217729;\n }, G.MAX_PRINT_DIGITS.get = function() {\n return 32;\n }, G.TEN.get = function() {\n return F.valueOf(10);\n }, G.ONE.get = function() {\n return F.valueOf(1);\n }, G.SCI_NOT_EXPONENT_CHAR.get = function() {\n return \"E\";\n }, G.SCI_NOT_ZERO.get = function() {\n return \"0.0E0\";\n }, Object.defineProperties(F, G);\n var q = function() {}, B = {\n DP_SAFE_EPSILON: {\n configurable: !0\n }\n };\n q.prototype.interfaces_ = function() {\n return [];\n }, q.prototype.getClass = function() {\n return q;\n }, q.orientationIndex = function(t, e, n) {\n var i = q.orientationIndexFilter(t, e, n);\n if (i <= 1) return i;\n var r = F.valueOf(e.x).selfAdd(-t.x), o = F.valueOf(e.y).selfAdd(-t.y), s = F.valueOf(n.x).selfAdd(-e.x), a = F.valueOf(n.y).selfAdd(-e.y);\n return r.selfMultiply(a).selfSubtract(o.selfMultiply(s)).signum();\n }, q.signOfDet2x2 = function(t, e, n, i) {\n return t.multiply(i).selfSubtract(e.multiply(n)).signum();\n }, q.intersection = function(t, e, n, i) {\n var r = F.valueOf(i.y).selfSubtract(n.y).selfMultiply(F.valueOf(e.x).selfSubtract(t.x)), o = F.valueOf(i.x).selfSubtract(n.x).selfMultiply(F.valueOf(e.y).selfSubtract(t.y)), s = r.subtract(o), a = F.valueOf(i.x).selfSubtract(n.x).selfMultiply(F.valueOf(t.y).selfSubtract(n.y)), u = F.valueOf(i.y).selfSubtract(n.y).selfMultiply(F.valueOf(t.x).selfSubtract(n.x)), l = a.subtract(u).selfDivide(s).doubleValue(), c = F.valueOf(t.x).selfAdd(F.valueOf(e.x).selfSubtract(t.x).selfMultiply(l)).doubleValue(), p = F.valueOf(e.x).selfSubtract(t.x).selfMultiply(F.valueOf(t.y).selfSubtract(n.y)), h = F.valueOf(e.y).selfSubtract(t.y).selfMultiply(F.valueOf(t.x).selfSubtract(n.x)), f = p.subtract(h).selfDivide(s).doubleValue(), g = F.valueOf(n.y).selfAdd(F.valueOf(i.y).selfSubtract(n.y).selfMultiply(f)).doubleValue();\n return new C(c, g);\n }, q.orientationIndexFilter = function(t, e, n) {\n var i = null, r = (t.x - n.x) * (e.y - n.y), o = (t.y - n.y) * (e.x - n.x), s = r - o;\n if (r > 0) {\n if (o <= 0) return q.signum(s);\n i = r + o;\n } else {\n if (!(r < 0)) return q.signum(s);\n if (o >= 0) return q.signum(s);\n i = -r - o;\n }\n var a = q.DP_SAFE_EPSILON * i;\n return s >= a || -s >= a ? q.signum(s) : 2;\n }, q.signum = function(t) {\n return t > 0 ? 1 : t < 0 ? -1 : 0;\n }, B.DP_SAFE_EPSILON.get = function() {\n return 1e-15;\n }, Object.defineProperties(q, B);\n var V = function() {}, U = {\n X: {\n configurable: !0\n },\n Y: {\n configurable: !0\n },\n Z: {\n configurable: !0\n },\n M: {\n configurable: !0\n }\n };\n U.X.get = function() {\n return 0;\n }, U.Y.get = function() {\n return 1;\n }, U.Z.get = function() {\n return 2;\n }, U.M.get = function() {\n return 3;\n }, V.prototype.setOrdinate = function(t, e, n) {}, V.prototype.size = function() {}, V.prototype.getOrdinate = function(t, e) {}, V.prototype.getCoordinate = function() {}, V.prototype.getCoordinateCopy = function(t) {}, V.prototype.getDimension = function() {}, V.prototype.getX = function(t) {}, V.prototype.clone = function() {}, V.prototype.expandEnvelope = function(t) {}, V.prototype.copy = function() {}, V.prototype.getY = function(t) {}, V.prototype.toCoordinateArray = function() {}, V.prototype.interfaces_ = function() {\n return [\n x\n ];\n }, V.prototype.getClass = function() {\n return V;\n }, Object.defineProperties(V, U);\n var z = function() {}, X = function(t) {\n function e() {\n t.call(this, \"Projective point not representable on the Cartesian plane.\");\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e;\n }(z), Y = function() {};\n Y.arraycopy = function(t, e, n, i, r) {\n for(var o = 0, s = e; s < e + r; s++)n[i + o] = t[s], o++;\n }, Y.getProperty = function(t) {\n return ({\n \"line.separator\": \"\\n\"\n })[t];\n };\n var k = function t() {\n if (this.x = null, this.y = null, this.w = null, 0 === arguments.length) this.x = 0, this.y = 0, this.w = 1;\n else if (1 === arguments.length) {\n var e = arguments[0];\n this.x = e.x, this.y = e.y, this.w = 1;\n } else if (2 === arguments.length) {\n if (\"number\" == typeof arguments[0] && \"number\" == typeof arguments[1]) {\n var n = arguments[0], i = arguments[1];\n this.x = n, this.y = i, this.w = 1;\n } else if (arguments[0] instanceof t && arguments[1] instanceof t) {\n var r = arguments[0], o = arguments[1];\n this.x = r.y * o.w - o.y * r.w, this.y = o.x * r.w - r.x * o.w, this.w = r.x * o.y - o.x * r.y;\n } else if (arguments[0] instanceof C && arguments[1] instanceof C) {\n var s = arguments[0], a = arguments[1];\n this.x = s.y - a.y, this.y = a.x - s.x, this.w = s.x * a.y - a.x * s.y;\n }\n } else if (3 === arguments.length) {\n var u = arguments[0], l = arguments[1], c = arguments[2];\n this.x = u, this.y = l, this.w = c;\n } else if (4 === arguments.length) {\n var p = arguments[0], h = arguments[1], f = arguments[2], g = arguments[3], d = p.y - h.y, y = h.x - p.x, _ = p.x * h.y - h.x * p.y, m = f.y - g.y, v = g.x - f.x, I = f.x * g.y - g.x * f.y;\n this.x = y * I - v * _, this.y = m * _ - d * I, this.w = d * v - m * y;\n }\n };\n k.prototype.getY = function() {\n var t = this.y / this.w;\n if (v.isNaN(t) || v.isInfinite(t)) throw new X;\n return t;\n }, k.prototype.getX = function() {\n var t = this.x / this.w;\n if (v.isNaN(t) || v.isInfinite(t)) throw new X;\n return t;\n }, k.prototype.getCoordinate = function() {\n var t = new C;\n return t.x = this.getX(), t.y = this.getY(), t;\n }, k.prototype.interfaces_ = function() {\n return [];\n }, k.prototype.getClass = function() {\n return k;\n }, k.intersection = function(t, e, n, i) {\n var r = t.y - e.y, o = e.x - t.x, s = t.x * e.y - e.x * t.y, a = n.y - i.y, u = i.x - n.x, l = n.x * i.y - i.x * n.y, c = r * u - a * o, p = (o * l - u * s) / c, h = (a * s - r * l) / c;\n if (v.isNaN(p) || v.isInfinite(p) || v.isNaN(h) || v.isInfinite(h)) throw new X;\n return new C(p, h);\n };\n var j = function t() {\n if (this._minx = null, this._maxx = null, this._miny = null, this._maxy = null, 0 === arguments.length) this.init();\n else if (1 === arguments.length) {\n if (arguments[0] instanceof C) {\n var e = arguments[0];\n this.init(e.x, e.x, e.y, e.y);\n } else if (arguments[0] instanceof t) {\n var n = arguments[0];\n this.init(n);\n }\n } else if (2 === arguments.length) {\n var i = arguments[0], r = arguments[1];\n this.init(i.x, r.x, i.y, r.y);\n } else if (4 === arguments.length) {\n var o = arguments[0], s = arguments[1], a = arguments[2], u = arguments[3];\n this.init(o, s, a, u);\n }\n }, H = {\n serialVersionUID: {\n configurable: !0\n }\n };\n j.prototype.getArea = function() {\n return this.getWidth() * this.getHeight();\n }, j.prototype.equals = function(t) {\n if (!(t instanceof j)) return !1;\n var e = t;\n return this.isNull() ? e.isNull() : this._maxx === e.getMaxX() && this._maxy === e.getMaxY() && this._minx === e.getMinX() && this._miny === e.getMinY();\n }, j.prototype.intersection = function(t) {\n if (this.isNull() || t.isNull() || !this.intersects(t)) return new j;\n var e = this._minx > t._minx ? this._minx : t._minx, n = this._miny > t._miny ? this._miny : t._miny, i = this._maxx < t._maxx ? this._maxx : t._maxx, r = this._maxy < t._maxy ? this._maxy : t._maxy;\n return new j(e, i, n, r);\n }, j.prototype.isNull = function() {\n return this._maxx < this._minx;\n }, j.prototype.getMaxX = function() {\n return this._maxx;\n }, j.prototype.covers = function() {\n if (1 === arguments.length) {\n if (arguments[0] instanceof C) {\n var t = arguments[0];\n return this.covers(t.x, t.y);\n }\n if (arguments[0] instanceof j) {\n var e = arguments[0];\n return !this.isNull() && !e.isNull() && e.getMinX() >= this._minx && e.getMaxX() <= this._maxx && e.getMinY() >= this._miny && e.getMaxY() <= this._maxy;\n }\n } else if (2 === arguments.length) {\n var n = arguments[0], i = arguments[1];\n return !this.isNull() && n >= this._minx && n <= this._maxx && i >= this._miny && i <= this._maxy;\n }\n }, j.prototype.intersects = function() {\n if (1 === arguments.length) {\n if (arguments[0] instanceof j) {\n var t = arguments[0];\n return !this.isNull() && !t.isNull() && !(t._minx > this._maxx || t._maxx < this._minx || t._miny > this._maxy || t._maxy < this._miny);\n }\n if (arguments[0] instanceof C) {\n var e = arguments[0];\n return this.intersects(e.x, e.y);\n }\n } else if (2 === arguments.length) {\n var n = arguments[0], i = arguments[1];\n return !this.isNull() && !(n > this._maxx || n < this._minx || i > this._maxy || i < this._miny);\n }\n }, j.prototype.getMinY = function() {\n return this._miny;\n }, j.prototype.getMinX = function() {\n return this._minx;\n }, j.prototype.expandToInclude = function() {\n if (1 === arguments.length) {\n if (arguments[0] instanceof C) {\n var t = arguments[0];\n this.expandToInclude(t.x, t.y);\n } else if (arguments[0] instanceof j) {\n var e = arguments[0];\n if (e.isNull()) return null;\n this.isNull() ? (this._minx = e.getMinX(), this._maxx = e.getMaxX(), this._miny = e.getMinY(), this._maxy = e.getMaxY()) : (e._minx < this._minx && (this._minx = e._minx), e._maxx > this._maxx && (this._maxx = e._maxx), e._miny < this._miny && (this._miny = e._miny), e._maxy > this._maxy && (this._maxy = e._maxy));\n }\n } else if (2 === arguments.length) {\n var n = arguments[0], i = arguments[1];\n this.isNull() ? (this._minx = n, this._maxx = n, this._miny = i, this._maxy = i) : (n < this._minx && (this._minx = n), n > this._maxx && (this._maxx = n), i < this._miny && (this._miny = i), i > this._maxy && (this._maxy = i));\n }\n }, j.prototype.minExtent = function() {\n if (this.isNull()) return 0;\n var t = this.getWidth(), e = this.getHeight();\n return t < e ? t : e;\n }, j.prototype.getWidth = function() {\n return this.isNull() ? 0 : this._maxx - this._minx;\n }, j.prototype.compareTo = function(t) {\n var e = t;\n return this.isNull() ? e.isNull() ? 0 : -1 : e.isNull() ? 1 : this._minx < e._minx ? -1 : this._minx > e._minx ? 1 : this._miny < e._miny ? -1 : this._miny > e._miny ? 1 : this._maxx < e._maxx ? -1 : this._maxx > e._maxx ? 1 : this._maxy < e._maxy ? -1 : this._maxy > e._maxy ? 1 : 0;\n }, j.prototype.translate = function(t, e) {\n if (this.isNull()) return null;\n this.init(this.getMinX() + t, this.getMaxX() + t, this.getMinY() + e, this.getMaxY() + e);\n }, j.prototype.toString = function() {\n return \"Env[\" + this._minx + \" : \" + this._maxx + \", \" + this._miny + \" : \" + this._maxy + \"]\";\n }, j.prototype.setToNull = function() {\n this._minx = 0, this._maxx = -1, this._miny = 0, this._maxy = -1;\n }, j.prototype.getHeight = function() {\n return this.isNull() ? 0 : this._maxy - this._miny;\n }, j.prototype.maxExtent = function() {\n if (this.isNull()) return 0;\n var t = this.getWidth(), e = this.getHeight();\n return t > e ? t : e;\n }, j.prototype.expandBy = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n this.expandBy(t, t);\n } else if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n if (this.isNull()) return null;\n this._minx -= e, this._maxx += e, this._miny -= n, this._maxy += n, (this._minx > this._maxx || this._miny > this._maxy) && this.setToNull();\n }\n }, j.prototype.contains = function() {\n if (1 === arguments.length) {\n if (arguments[0] instanceof j) {\n var t = arguments[0];\n return this.covers(t);\n }\n if (arguments[0] instanceof C) {\n var e = arguments[0];\n return this.covers(e);\n }\n } else if (2 === arguments.length) {\n var n = arguments[0], i = arguments[1];\n return this.covers(n, i);\n }\n }, j.prototype.centre = function() {\n return this.isNull() ? null : new C((this.getMinX() + this.getMaxX()) / 2, (this.getMinY() + this.getMaxY()) / 2);\n }, j.prototype.init = function() {\n if (0 === arguments.length) this.setToNull();\n else if (1 === arguments.length) {\n if (arguments[0] instanceof C) {\n var t = arguments[0];\n this.init(t.x, t.x, t.y, t.y);\n } else if (arguments[0] instanceof j) {\n var e = arguments[0];\n this._minx = e._minx, this._maxx = e._maxx, this._miny = e._miny, this._maxy = e._maxy;\n }\n } else if (2 === arguments.length) {\n var n = arguments[0], i = arguments[1];\n this.init(n.x, i.x, n.y, i.y);\n } else if (4 === arguments.length) {\n var r = arguments[0], o = arguments[1], s = arguments[2], a = arguments[3];\n r < o ? (this._minx = r, this._maxx = o) : (this._minx = o, this._maxx = r), s < a ? (this._miny = s, this._maxy = a) : (this._miny = a, this._maxy = s);\n }\n }, j.prototype.getMaxY = function() {\n return this._maxy;\n }, j.prototype.distance = function(t) {\n if (this.intersects(t)) return 0;\n var e = 0;\n this._maxx < t._minx ? e = t._minx - this._maxx : this._minx > t._maxx && (e = this._minx - t._maxx);\n var n = 0;\n return this._maxy < t._miny ? n = t._miny - this._maxy : this._miny > t._maxy && (n = this._miny - t._maxy), 0 === e ? n : 0 === n ? e : Math.sqrt(e * e + n * n);\n }, j.prototype.hashCode = function() {\n var t = 17;\n return t = 37 * t + C.hashCode(this._minx), t = 37 * t + C.hashCode(this._maxx), t = 37 * t + C.hashCode(this._miny), t = 37 * t + C.hashCode(this._maxy);\n }, j.prototype.interfaces_ = function() {\n return [\n E,\n e\n ];\n }, j.prototype.getClass = function() {\n return j;\n }, j.intersects = function() {\n if (3 === arguments.length) {\n var t = arguments[0], e = arguments[1], n = arguments[2];\n return n.x >= (t.x < e.x ? t.x : e.x) && n.x <= (t.x > e.x ? t.x : e.x) && n.y >= (t.y < e.y ? t.y : e.y) && n.y <= (t.y > e.y ? t.y : e.y);\n }\n if (4 === arguments.length) {\n var i = arguments[0], r = arguments[1], o = arguments[2], s = arguments[3], a = Math.min(o.x, s.x), u = Math.max(o.x, s.x), l = Math.min(i.x, r.x), c = Math.max(i.x, r.x);\n return !(l > u) && !(c < a) && (a = Math.min(o.y, s.y), u = Math.max(o.y, s.y), l = Math.min(i.y, r.y), c = Math.max(i.y, r.y), !(l > u) && !(c < a));\n }\n }, H.serialVersionUID.get = function() {\n return 0x51845cd552189800;\n }, Object.defineProperties(j, H);\n var W = {\n typeStr: /^\\s*(\\w+)\\s*\\(\\s*(.*)\\s*\\)\\s*$/,\n emptyTypeStr: /^\\s*(\\w+)\\s*EMPTY\\s*$/,\n spaces: /\\s+/,\n parenComma: /\\)\\s*,\\s*\\(/,\n doubleParenComma: /\\)\\s*\\)\\s*,\\s*\\(\\s*\\(/,\n trimParens: /^\\s*\\(?(.*?)\\)?\\s*$/\n }, K = function(t) {\n this.geometryFactory = t || new _e;\n };\n K.prototype.read = function(t) {\n var e, n, i;\n t = t.replace(/[\\n\\r]/g, \" \");\n var r = W.typeStr.exec(t);\n if (-1 !== t.search(\"EMPTY\") && ((r = W.emptyTypeStr.exec(t))[2] = void 0), r && (n = r[1].toLowerCase(), i = r[2], Q[n] && (e = Q[n].apply(this, [\n i\n ]))), void 0 === e) throw new Error(\"Could not parse WKT \" + t);\n return e;\n }, K.prototype.write = function(t) {\n return this.extractGeometry(t);\n }, K.prototype.extractGeometry = function(t) {\n var e = t.getGeometryType().toLowerCase();\n if (!J[e]) return null;\n var n = e.toUpperCase();\n return t.isEmpty() ? n + \" EMPTY\" : n + \"(\" + J[e].apply(this, [\n t\n ]) + \")\";\n };\n var J = {\n coordinate: function(t) {\n return t.x + \" \" + t.y;\n },\n point: function(t) {\n return J.coordinate.call(this, t._coordinates._coordinates[0]);\n },\n multipoint: function(t) {\n for(var e = [], n = 0, i = t._geometries.length; n < i; ++n)e.push(\"(\" + J.point.apply(this, [\n t._geometries[n]\n ]) + \")\");\n return e.join(\",\");\n },\n linestring: function(t) {\n for(var e = [], n = 0, i = t._points._coordinates.length; n < i; ++n)e.push(J.coordinate.apply(this, [\n t._points._coordinates[n]\n ]));\n return e.join(\",\");\n },\n linearring: function(t) {\n for(var e = [], n = 0, i = t._points._coordinates.length; n < i; ++n)e.push(J.coordinate.apply(this, [\n t._points._coordinates[n]\n ]));\n return e.join(\",\");\n },\n multilinestring: function(t) {\n for(var e = [], n = 0, i = t._geometries.length; n < i; ++n)e.push(\"(\" + J.linestring.apply(this, [\n t._geometries[n]\n ]) + \")\");\n return e.join(\",\");\n },\n polygon: function(t) {\n var e = [];\n e.push(\"(\" + J.linestring.apply(this, [\n t._shell\n ]) + \")\");\n for(var n = 0, i = t._holes.length; n < i; ++n)e.push(\"(\" + J.linestring.apply(this, [\n t._holes[n]\n ]) + \")\");\n return e.join(\",\");\n },\n multipolygon: function(t) {\n for(var e = [], n = 0, i = t._geometries.length; n < i; ++n)e.push(\"(\" + J.polygon.apply(this, [\n t._geometries[n]\n ]) + \")\");\n return e.join(\",\");\n },\n geometrycollection: function(t) {\n for(var e = [], n = 0, i = t._geometries.length; n < i; ++n)e.push(this.extractGeometry(t._geometries[n]));\n return e.join(\",\");\n }\n }, Q = {\n point: function(t) {\n if (void 0 === t) return this.geometryFactory.createPoint();\n var e = t.trim().split(W.spaces);\n return this.geometryFactory.createPoint(new C(Number.parseFloat(e[0]), Number.parseFloat(e[1])));\n },\n multipoint: function(t) {\n if (void 0 === t) return this.geometryFactory.createMultiPoint();\n for(var e, n = t.trim().split(\",\"), i = [], r = 0, o = n.length; r < o; ++r)e = n[r].replace(W.trimParens, \"$1\"), i.push(Q.point.apply(this, [\n e\n ]));\n return this.geometryFactory.createMultiPoint(i);\n },\n linestring: function(t) {\n if (void 0 === t) return this.geometryFactory.createLineString();\n for(var e, n = t.trim().split(\",\"), i = [], r = 0, o = n.length; r < o; ++r)e = n[r].trim().split(W.spaces), i.push(new C(Number.parseFloat(e[0]), Number.parseFloat(e[1])));\n return this.geometryFactory.createLineString(i);\n },\n linearring: function(t) {\n if (void 0 === t) return this.geometryFactory.createLinearRing();\n for(var e, n = t.trim().split(\",\"), i = [], r = 0, o = n.length; r < o; ++r)e = n[r].trim().split(W.spaces), i.push(new C(Number.parseFloat(e[0]), Number.parseFloat(e[1])));\n return this.geometryFactory.createLinearRing(i);\n },\n multilinestring: function(t) {\n if (void 0 === t) return this.geometryFactory.createMultiLineString();\n for(var e, n = t.trim().split(W.parenComma), i = [], r = 0, o = n.length; r < o; ++r)e = n[r].replace(W.trimParens, \"$1\"), i.push(Q.linestring.apply(this, [\n e\n ]));\n return this.geometryFactory.createMultiLineString(i);\n },\n polygon: function(t) {\n if (void 0 === t) return this.geometryFactory.createPolygon();\n for(var e, n, i, r, o = t.trim().split(W.parenComma), s = [], a = 0, u = o.length; a < u; ++a)e = o[a].replace(W.trimParens, \"$1\"), n = Q.linestring.apply(this, [\n e\n ]), i = this.geometryFactory.createLinearRing(n._points), 0 === a ? r = i : s.push(i);\n return this.geometryFactory.createPolygon(r, s);\n },\n multipolygon: function(t) {\n if (void 0 === t) return this.geometryFactory.createMultiPolygon();\n for(var e, n = t.trim().split(W.doubleParenComma), i = [], r = 0, o = n.length; r < o; ++r)e = n[r].replace(W.trimParens, \"$1\"), i.push(Q.polygon.apply(this, [\n e\n ]));\n return this.geometryFactory.createMultiPolygon(i);\n },\n geometrycollection: function(t) {\n if (void 0 === t) return this.geometryFactory.createGeometryCollection();\n for(var e = (t = t.replace(/,\\s*([A-Za-z])/g, \"|$1\")).trim().split(\"|\"), n = [], i = 0, r = e.length; i < r; ++i)n.push(this.read(e[i]));\n return this.geometryFactory.createGeometryCollection(n);\n }\n }, Z = function(t) {\n this.parser = new K(t);\n };\n Z.prototype.write = function(t) {\n return this.parser.write(t);\n }, Z.toLineString = function(t, e) {\n if (2 !== arguments.length) throw new Error(\"Not implemented\");\n return \"LINESTRING ( \" + t.x + \" \" + t.y + \", \" + e.x + \" \" + e.y + \" )\";\n };\n var $ = function(t) {\n function e(e) {\n t.call(this, e), this.name = \"RuntimeException\", this.message = e, this.stack = (new t).stack;\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e;\n }(Error), tt = function(t) {\n function e() {\n if (t.call(this), 0 === arguments.length) t.call(this);\n else if (1 === arguments.length) {\n var e = arguments[0];\n t.call(this, e);\n }\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e;\n }($), et = function() {};\n et.prototype.interfaces_ = function() {\n return [];\n }, et.prototype.getClass = function() {\n return et;\n }, et.shouldNeverReachHere = function() {\n if (0 === arguments.length) et.shouldNeverReachHere(null);\n else if (1 === arguments.length) {\n var t = arguments[0];\n throw new tt(\"Should never reach here\" + (null !== t ? \": \" + t : \"\"));\n }\n }, et.isTrue = function() {\n var t, e;\n if (1 === arguments.length) t = arguments[0], et.isTrue(t, null);\n else if (2 === arguments.length && (t = arguments[0], e = arguments[1], !t)) throw null === e ? new tt : new tt(e);\n }, et.equals = function() {\n var t, e, n;\n if (2 === arguments.length) t = arguments[0], e = arguments[1], et.equals(t, e, null);\n else if (3 === arguments.length && (t = arguments[0], e = arguments[1], n = arguments[2], !e.equals(t))) throw new tt(\"Expected \" + t + \" but encountered \" + e + (null !== n ? \": \" + n : \"\"));\n };\n var nt = function() {\n this._result = null, this._inputLines = Array(2).fill().map(function() {\n return Array(2);\n }), this._intPt = new Array(2).fill(null), this._intLineIndex = null, this._isProper = null, this._pa = null, this._pb = null, this._precisionModel = null, this._intPt[0] = new C, this._intPt[1] = new C, this._pa = this._intPt[0], this._pb = this._intPt[1], this._result = 0;\n }, it = {\n DONT_INTERSECT: {\n configurable: !0\n },\n DO_INTERSECT: {\n configurable: !0\n },\n COLLINEAR: {\n configurable: !0\n },\n NO_INTERSECTION: {\n configurable: !0\n },\n POINT_INTERSECTION: {\n configurable: !0\n },\n COLLINEAR_INTERSECTION: {\n configurable: !0\n }\n };\n nt.prototype.getIndexAlongSegment = function(t, e) {\n return this.computeIntLineIndex(), this._intLineIndex[t][e];\n }, nt.prototype.getTopologySummary = function() {\n var t = new D;\n return this.isEndPoint() && t.append(\" endpoint\"), this._isProper && t.append(\" proper\"), this.isCollinear() && t.append(\" collinear\"), t.toString();\n }, nt.prototype.computeIntersection = function(t, e, n, i) {\n this._inputLines[0][0] = t, this._inputLines[0][1] = e, this._inputLines[1][0] = n, this._inputLines[1][1] = i, this._result = this.computeIntersect(t, e, n, i);\n }, nt.prototype.getIntersectionNum = function() {\n return this._result;\n }, nt.prototype.computeIntLineIndex = function() {\n if (0 === arguments.length) null === this._intLineIndex && (this._intLineIndex = Array(2).fill().map(function() {\n return Array(2);\n }), this.computeIntLineIndex(0), this.computeIntLineIndex(1));\n else if (1 === arguments.length) {\n var t = arguments[0];\n this.getEdgeDistance(t, 0) > this.getEdgeDistance(t, 1) ? (this._intLineIndex[t][0] = 0, this._intLineIndex[t][1] = 1) : (this._intLineIndex[t][0] = 1, this._intLineIndex[t][1] = 0);\n }\n }, nt.prototype.isProper = function() {\n return this.hasIntersection() && this._isProper;\n }, nt.prototype.setPrecisionModel = function(t) {\n this._precisionModel = t;\n }, nt.prototype.isInteriorIntersection = function() {\n if (0 === arguments.length) return !!this.isInteriorIntersection(0) || !!this.isInteriorIntersection(1);\n if (1 === arguments.length) {\n for(var t = arguments[0], e = 0; e < this._result; e++)if (!this._intPt[e].equals2D(this._inputLines[t][0]) && !this._intPt[e].equals2D(this._inputLines[t][1])) return !0;\n return !1;\n }\n }, nt.prototype.getIntersection = function(t) {\n return this._intPt[t];\n }, nt.prototype.isEndPoint = function() {\n return this.hasIntersection() && !this._isProper;\n }, nt.prototype.hasIntersection = function() {\n return this._result !== nt.NO_INTERSECTION;\n }, nt.prototype.getEdgeDistance = function(t, e) {\n return nt.computeEdgeDistance(this._intPt[e], this._inputLines[t][0], this._inputLines[t][1]);\n }, nt.prototype.isCollinear = function() {\n return this._result === nt.COLLINEAR_INTERSECTION;\n }, nt.prototype.toString = function() {\n return Z.toLineString(this._inputLines[0][0], this._inputLines[0][1]) + \" - \" + Z.toLineString(this._inputLines[1][0], this._inputLines[1][1]) + this.getTopologySummary();\n }, nt.prototype.getEndpoint = function(t, e) {\n return this._inputLines[t][e];\n }, nt.prototype.isIntersection = function(t) {\n for(var e = 0; e < this._result; e++)if (this._intPt[e].equals2D(t)) return !0;\n return !1;\n }, nt.prototype.getIntersectionAlongSegment = function(t, e) {\n return this.computeIntLineIndex(), this._intPt[this._intLineIndex[t][e]];\n }, nt.prototype.interfaces_ = function() {\n return [];\n }, nt.prototype.getClass = function() {\n return nt;\n }, nt.computeEdgeDistance = function(t, e, n) {\n var i = Math.abs(n.x - e.x), r = Math.abs(n.y - e.y), o = -1;\n if (t.equals(e)) o = 0;\n else if (t.equals(n)) o = i > r ? i : r;\n else {\n var s = Math.abs(t.x - e.x), a = Math.abs(t.y - e.y);\n 0 !== (o = i > r ? s : a) || t.equals(e) || (o = Math.max(s, a));\n }\n return et.isTrue(!(0 === o && !t.equals(e)), \"Bad distance calculation\"), o;\n }, nt.nonRobustComputeEdgeDistance = function(t, e, n) {\n var i = t.x - e.x, r = t.y - e.y, o = Math.sqrt(i * i + r * r);\n return et.isTrue(!(0 === o && !t.equals(e)), \"Invalid distance calculation\"), o;\n }, it.DONT_INTERSECT.get = function() {\n return 0;\n }, it.DO_INTERSECT.get = function() {\n return 1;\n }, it.COLLINEAR.get = function() {\n return 2;\n }, it.NO_INTERSECTION.get = function() {\n return 0;\n }, it.POINT_INTERSECTION.get = function() {\n return 1;\n }, it.COLLINEAR_INTERSECTION.get = function() {\n return 2;\n }, Object.defineProperties(nt, it);\n var rt = function(t) {\n function e() {\n t.apply(this, arguments);\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.isInSegmentEnvelopes = function(t) {\n var e = new j(this._inputLines[0][0], this._inputLines[0][1]), n = new j(this._inputLines[1][0], this._inputLines[1][1]);\n return e.contains(t) && n.contains(t);\n }, e.prototype.computeIntersection = function() {\n if (3 !== arguments.length) return t.prototype.computeIntersection.apply(this, arguments);\n var e = arguments[0], n = arguments[1], i = arguments[2];\n if (this._isProper = !1, j.intersects(n, i, e) && 0 === at.orientationIndex(n, i, e) && 0 === at.orientationIndex(i, n, e)) return this._isProper = !0, (e.equals(n) || e.equals(i)) && (this._isProper = !1), this._result = t.POINT_INTERSECTION, null;\n this._result = t.NO_INTERSECTION;\n }, e.prototype.normalizeToMinimum = function(t, e, n, i, r) {\n r.x = this.smallestInAbsValue(t.x, e.x, n.x, i.x), r.y = this.smallestInAbsValue(t.y, e.y, n.y, i.y), t.x -= r.x, t.y -= r.y, e.x -= r.x, e.y -= r.y, n.x -= r.x, n.y -= r.y, i.x -= r.x, i.y -= r.y;\n }, e.prototype.safeHCoordinateIntersection = function(t, n, i, r) {\n var o = null;\n try {\n o = k.intersection(t, n, i, r);\n } catch (s) {\n if (!(s instanceof X)) throw s;\n o = e.nearestEndpoint(t, n, i, r);\n }\n return o;\n }, e.prototype.intersection = function(t, n, i, r) {\n var o = this.intersectionWithNormalization(t, n, i, r);\n return this.isInSegmentEnvelopes(o) || (o = new C(e.nearestEndpoint(t, n, i, r))), null !== this._precisionModel && this._precisionModel.makePrecise(o), o;\n }, e.prototype.smallestInAbsValue = function(t, e, n, i) {\n var r = t, o = Math.abs(r);\n return Math.abs(e) < o && (r = e, o = Math.abs(e)), Math.abs(n) < o && (r = n, o = Math.abs(n)), Math.abs(i) < o && (r = i), r;\n }, e.prototype.checkDD = function(t, e, n, i, r) {\n var o = q.intersection(t, e, n, i), s = this.isInSegmentEnvelopes(o);\n Y.out.println(\"DD in env = \" + s + \" --------------------- \" + o), r.distance(o) > 1e-4 && Y.out.println(\"Distance = \" + r.distance(o));\n }, e.prototype.intersectionWithNormalization = function(t, e, n, i) {\n var r = new C(t), o = new C(e), s = new C(n), a = new C(i), u = new C;\n this.normalizeToEnvCentre(r, o, s, a, u);\n var l = this.safeHCoordinateIntersection(r, o, s, a);\n return l.x += u.x, l.y += u.y, l;\n }, e.prototype.computeCollinearIntersection = function(e, n, i, r) {\n var o = j.intersects(e, n, i), s = j.intersects(e, n, r), a = j.intersects(i, r, e), u = j.intersects(i, r, n);\n return o && s ? (this._intPt[0] = i, this._intPt[1] = r, t.COLLINEAR_INTERSECTION) : a && u ? (this._intPt[0] = e, this._intPt[1] = n, t.COLLINEAR_INTERSECTION) : o && a ? (this._intPt[0] = i, this._intPt[1] = e, !i.equals(e) || s || u ? t.COLLINEAR_INTERSECTION : t.POINT_INTERSECTION) : o && u ? (this._intPt[0] = i, this._intPt[1] = n, !i.equals(n) || s || a ? t.COLLINEAR_INTERSECTION : t.POINT_INTERSECTION) : s && a ? (this._intPt[0] = r, this._intPt[1] = e, !r.equals(e) || o || u ? t.COLLINEAR_INTERSECTION : t.POINT_INTERSECTION) : s && u ? (this._intPt[0] = r, this._intPt[1] = n, !r.equals(n) || o || a ? t.COLLINEAR_INTERSECTION : t.POINT_INTERSECTION) : t.NO_INTERSECTION;\n }, e.prototype.normalizeToEnvCentre = function(t, e, n, i, r) {\n var o = t.x < e.x ? t.x : e.x, s = t.y < e.y ? t.y : e.y, a = t.x > e.x ? t.x : e.x, u = t.y > e.y ? t.y : e.y, l = n.x < i.x ? n.x : i.x, c = n.y < i.y ? n.y : i.y, p = n.x > i.x ? n.x : i.x, h = n.y > i.y ? n.y : i.y, f = ((o > l ? o : l) + (a < p ? a : p)) / 2, g = ((s > c ? s : c) + (u < h ? u : h)) / 2;\n r.x = f, r.y = g, t.x -= r.x, t.y -= r.y, e.x -= r.x, e.y -= r.y, n.x -= r.x, n.y -= r.y, i.x -= r.x, i.y -= r.y;\n }, e.prototype.computeIntersect = function(e, n, i, r) {\n if (this._isProper = !1, !j.intersects(e, n, i, r)) return t.NO_INTERSECTION;\n var o = at.orientationIndex(e, n, i), s = at.orientationIndex(e, n, r);\n if (o > 0 && s > 0 || o < 0 && s < 0) return t.NO_INTERSECTION;\n var a = at.orientationIndex(i, r, e), u = at.orientationIndex(i, r, n);\n if (a > 0 && u > 0 || a < 0 && u < 0) return t.NO_INTERSECTION;\n return 0 === o && 0 === s && 0 === a && 0 === u ? this.computeCollinearIntersection(e, n, i, r) : (0 === o || 0 === s || 0 === a || 0 === u ? (this._isProper = !1, e.equals2D(i) || e.equals2D(r) ? this._intPt[0] = e : n.equals2D(i) || n.equals2D(r) ? this._intPt[0] = n : 0 === o ? this._intPt[0] = new C(i) : 0 === s ? this._intPt[0] = new C(r) : 0 === a ? this._intPt[0] = new C(e) : 0 === u && (this._intPt[0] = new C(n))) : (this._isProper = !0, this._intPt[0] = this.intersection(e, n, i, r)), t.POINT_INTERSECTION);\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e.nearestEndpoint = function(t, e, n, i) {\n var r = t, o = at.distancePointLine(t, n, i), s = at.distancePointLine(e, n, i);\n return s < o && (o = s, r = e), (s = at.distancePointLine(n, t, e)) < o && (o = s, r = n), (s = at.distancePointLine(i, t, e)) < o && (o = s, r = i), r;\n }, e;\n }(nt), ot = function() {};\n ot.prototype.interfaces_ = function() {\n return [];\n }, ot.prototype.getClass = function() {\n return ot;\n }, ot.orientationIndex = function(t, e, n) {\n var i = e.x - t.x, r = e.y - t.y, o = n.x - e.x, s = n.y - e.y;\n return ot.signOfDet2x2(i, r, o, s);\n }, ot.signOfDet2x2 = function(t, e, n, i) {\n var r = null, o = null, s = null;\n if (r = 1, 0 === t || 0 === i) return 0 === e || 0 === n ? 0 : e > 0 ? n > 0 ? -r : r : n > 0 ? r : -r;\n if (0 === e || 0 === n) return i > 0 ? t > 0 ? r : -r : t > 0 ? -r : r;\n if (e > 0 ? i > 0 ? e <= i || (r = -r, o = t, t = n, n = o, o = e, e = i, i = o) : e <= -i ? (r = -r, n = -n, i = -i) : (o = t, t = -n, n = o, o = e, e = -i, i = o) : i > 0 ? -e <= i ? (r = -r, t = -t, e = -e) : (o = -t, t = n, n = o, o = -e, e = i, i = o) : e >= i ? (t = -t, e = -e, n = -n, i = -i) : (r = -r, o = -t, t = -n, n = o, o = -e, e = -i, i = o), t > 0) {\n if (!(n > 0)) return r;\n if (!(t <= n)) return r;\n } else {\n if (n > 0) return -r;\n if (!(t >= n)) return -r;\n r = -r, t = -t, n = -n;\n }\n for(;;){\n if (s = Math.floor(n / t), n -= s * t, (i -= s * e) < 0) return -r;\n if (i > e) return r;\n if (t > n + n) {\n if (e < i + i) return r;\n } else {\n if (e > i + i) return -r;\n n = t - n, i = e - i, r = -r;\n }\n if (0 === i) return 0 === n ? 0 : -r;\n if (0 === n) return r;\n if (s = Math.floor(t / n), t -= s * n, (e -= s * i) < 0) return r;\n if (e > i) return -r;\n if (n > t + t) {\n if (i < e + e) return -r;\n } else {\n if (i > e + e) return r;\n t = n - t, e = i - e, r = -r;\n }\n if (0 === e) return 0 === t ? 0 : r;\n if (0 === t) return -r;\n }\n };\n var st = function() {\n this._p = null, this._crossingCount = 0, this._isPointOnSegment = !1;\n var t = arguments[0];\n this._p = t;\n };\n st.prototype.countSegment = function(t, e) {\n if (t.x < this._p.x && e.x < this._p.x) return null;\n if (this._p.x === e.x && this._p.y === e.y) return this._isPointOnSegment = !0, null;\n if (t.y === this._p.y && e.y === this._p.y) {\n var n = t.x, i = e.x;\n return n > i && (n = e.x, i = t.x), this._p.x >= n && this._p.x <= i && (this._isPointOnSegment = !0), null;\n }\n if (t.y > this._p.y && e.y <= this._p.y || e.y > this._p.y && t.y <= this._p.y) {\n var r = t.x - this._p.x, o = t.y - this._p.y, s = e.x - this._p.x, a = e.y - this._p.y, u = ot.signOfDet2x2(r, o, s, a);\n if (0 === u) return this._isPointOnSegment = !0, null;\n a < o && (u = -u), u > 0 && this._crossingCount++;\n }\n }, st.prototype.isPointInPolygon = function() {\n return this.getLocation() !== w.EXTERIOR;\n }, st.prototype.getLocation = function() {\n return this._isPointOnSegment ? w.BOUNDARY : this._crossingCount % 2 == 1 ? w.INTERIOR : w.EXTERIOR;\n }, st.prototype.isOnSegment = function() {\n return this._isPointOnSegment;\n }, st.prototype.interfaces_ = function() {\n return [];\n }, st.prototype.getClass = function() {\n return st;\n }, st.locatePointInRing = function() {\n if (arguments[0] instanceof C && T(arguments[1], V)) {\n for(var t = arguments[0], e = arguments[1], n = new st(t), i = new C, r = new C, o = 1; o < e.size(); o++)if (e.getCoordinate(o, i), e.getCoordinate(o - 1, r), n.countSegment(i, r), n.isOnSegment()) return n.getLocation();\n return n.getLocation();\n }\n if (arguments[0] instanceof C && arguments[1] instanceof Array) {\n for(var s = arguments[0], a = arguments[1], u = new st(s), l = 1; l < a.length; l++){\n var c = a[l], p = a[l - 1];\n if (u.countSegment(c, p), u.isOnSegment()) return u.getLocation();\n }\n return u.getLocation();\n }\n };\n var at = function() {}, ut = {\n CLOCKWISE: {\n configurable: !0\n },\n RIGHT: {\n configurable: !0\n },\n COUNTERCLOCKWISE: {\n configurable: !0\n },\n LEFT: {\n configurable: !0\n },\n COLLINEAR: {\n configurable: !0\n },\n STRAIGHT: {\n configurable: !0\n }\n };\n at.prototype.interfaces_ = function() {\n return [];\n }, at.prototype.getClass = function() {\n return at;\n }, at.orientationIndex = function(t, e, n) {\n return q.orientationIndex(t, e, n);\n }, at.signedArea = function() {\n if (arguments[0] instanceof Array) {\n var t = arguments[0];\n if (t.length < 3) return 0;\n for(var e = 0, n = t[0].x, i = 1; i < t.length - 1; i++){\n var r = t[i].x - n, o = t[i + 1].y;\n e += r * (t[i - 1].y - o);\n }\n return e / 2;\n }\n if (T(arguments[0], V)) {\n var s = arguments[0], a = s.size();\n if (a < 3) return 0;\n var u = new C, l = new C, c = new C;\n s.getCoordinate(0, l), s.getCoordinate(1, c);\n var p = l.x;\n c.x -= p;\n for(var h = 0, f = 1; f < a - 1; f++)u.y = l.y, l.x = c.x, l.y = c.y, s.getCoordinate(f + 1, c), c.x -= p, h += l.x * (u.y - c.y);\n return h / 2;\n }\n }, at.distanceLineLine = function(t, e, n, i) {\n if (t.equals(e)) return at.distancePointLine(t, n, i);\n if (n.equals(i)) return at.distancePointLine(i, t, e);\n var r = !1;\n if (j.intersects(t, e, n, i)) {\n var o = (e.x - t.x) * (i.y - n.y) - (e.y - t.y) * (i.x - n.x);\n if (0 === o) r = !0;\n else {\n var s = (t.y - n.y) * (i.x - n.x) - (t.x - n.x) * (i.y - n.y), a = ((t.y - n.y) * (e.x - t.x) - (t.x - n.x) * (e.y - t.y)) / o, u = s / o;\n (u < 0 || u > 1 || a < 0 || a > 1) && (r = !0);\n }\n } else r = !0;\n return r ? R.min(at.distancePointLine(t, n, i), at.distancePointLine(e, n, i), at.distancePointLine(n, t, e), at.distancePointLine(i, t, e)) : 0;\n }, at.isPointInRing = function(t, e) {\n return at.locatePointInRing(t, e) !== w.EXTERIOR;\n }, at.computeLength = function(t) {\n var e = t.size();\n if (e <= 1) return 0;\n var n = 0, i = new C;\n t.getCoordinate(0, i);\n for(var r = i.x, o = i.y, s = 1; s < e; s++){\n t.getCoordinate(s, i);\n var a = i.x, u = i.y, l = a - r, c = u - o;\n n += Math.sqrt(l * l + c * c), r = a, o = u;\n }\n return n;\n }, at.isCCW = function(t) {\n var e = t.length - 1;\n if (e < 3) throw new m(\"Ring has fewer than 4 points, so orientation cannot be determined\");\n for(var n = t[0], i = 0, r = 1; r <= e; r++){\n var o = t[r];\n o.y > n.y && (n = o, i = r);\n }\n var s = i;\n do (s -= 1) < 0 && (s = e);\n while (t[s].equals2D(n) && s !== i);\n var a = i;\n do a = (a + 1) % e;\n while (t[a].equals2D(n) && a !== i);\n var u = t[s], l = t[a];\n if (u.equals2D(n) || l.equals2D(n) || u.equals2D(l)) return !1;\n var c = at.computeOrientation(u, n, l), p = !1;\n return p = 0 === c ? u.x > l.x : c > 0, p;\n }, at.locatePointInRing = function(t, e) {\n return st.locatePointInRing(t, e);\n }, at.distancePointLinePerpendicular = function(t, e, n) {\n var i = (n.x - e.x) * (n.x - e.x) + (n.y - e.y) * (n.y - e.y), r = ((e.y - t.y) * (n.x - e.x) - (e.x - t.x) * (n.y - e.y)) / i;\n return Math.abs(r) * Math.sqrt(i);\n }, at.computeOrientation = function(t, e, n) {\n return at.orientationIndex(t, e, n);\n }, at.distancePointLine = function() {\n if (2 === arguments.length) {\n var t = arguments[0], e = arguments[1];\n if (0 === e.length) throw new m(\"Line array must contain at least one vertex\");\n for(var n = t.distance(e[0]), i = 0; i < e.length - 1; i++){\n var r = at.distancePointLine(t, e[i], e[i + 1]);\n r < n && (n = r);\n }\n return n;\n }\n if (3 === arguments.length) {\n var o = arguments[0], s = arguments[1], a = arguments[2];\n if (s.x === a.x && s.y === a.y) return o.distance(s);\n var u = (a.x - s.x) * (a.x - s.x) + (a.y - s.y) * (a.y - s.y), l = ((o.x - s.x) * (a.x - s.x) + (o.y - s.y) * (a.y - s.y)) / u;\n if (l <= 0) return o.distance(s);\n if (l >= 1) return o.distance(a);\n var c = ((s.y - o.y) * (a.x - s.x) - (s.x - o.x) * (a.y - s.y)) / u;\n return Math.abs(c) * Math.sqrt(u);\n }\n }, at.isOnLine = function(t, e) {\n for(var n = new rt, i = 1; i < e.length; i++){\n var r = e[i - 1], o = e[i];\n if (n.computeIntersection(t, r, o), n.hasIntersection()) return !0;\n }\n return !1;\n }, ut.CLOCKWISE.get = function() {\n return -1;\n }, ut.RIGHT.get = function() {\n return at.CLOCKWISE;\n }, ut.COUNTERCLOCKWISE.get = function() {\n return 1;\n }, ut.LEFT.get = function() {\n return at.COUNTERCLOCKWISE;\n }, ut.COLLINEAR.get = function() {\n return 0;\n }, ut.STRAIGHT.get = function() {\n return at.COLLINEAR;\n }, Object.defineProperties(at, ut);\n var lt = function() {};\n lt.prototype.filter = function(t) {}, lt.prototype.interfaces_ = function() {\n return [];\n }, lt.prototype.getClass = function() {\n return lt;\n };\n var ct = function() {\n var t = arguments[0];\n this._envelope = null, this._factory = null, this._SRID = null, this._userData = null, this._factory = t, this._SRID = t.getSRID();\n }, pt = {\n serialVersionUID: {\n configurable: !0\n },\n SORTINDEX_POINT: {\n configurable: !0\n },\n SORTINDEX_MULTIPOINT: {\n configurable: !0\n },\n SORTINDEX_LINESTRING: {\n configurable: !0\n },\n SORTINDEX_LINEARRING: {\n configurable: !0\n },\n SORTINDEX_MULTILINESTRING: {\n configurable: !0\n },\n SORTINDEX_POLYGON: {\n configurable: !0\n },\n SORTINDEX_MULTIPOLYGON: {\n configurable: !0\n },\n SORTINDEX_GEOMETRYCOLLECTION: {\n configurable: !0\n },\n geometryChangedFilter: {\n configurable: !0\n }\n };\n ct.prototype.isGeometryCollection = function() {\n return this.getSortIndex() === ct.SORTINDEX_GEOMETRYCOLLECTION;\n }, ct.prototype.getFactory = function() {\n return this._factory;\n }, ct.prototype.getGeometryN = function(t) {\n return this;\n }, ct.prototype.getArea = function() {\n return 0;\n }, ct.prototype.isRectangle = function() {\n return !1;\n }, ct.prototype.equals = function() {\n if (arguments[0] instanceof ct) {\n var t = arguments[0];\n return null !== t && this.equalsTopo(t);\n }\n if (arguments[0] instanceof Object) {\n var e = arguments[0];\n if (!(e instanceof ct)) return !1;\n var n = e;\n return this.equalsExact(n);\n }\n }, ct.prototype.equalsExact = function(t) {\n return this === t || this.equalsExact(t, 0);\n }, ct.prototype.geometryChanged = function() {\n this.apply(ct.geometryChangedFilter);\n }, ct.prototype.geometryChangedAction = function() {\n this._envelope = null;\n }, ct.prototype.equalsNorm = function(t) {\n return null !== t && this.norm().equalsExact(t.norm());\n }, ct.prototype.getLength = function() {\n return 0;\n }, ct.prototype.getNumGeometries = function() {\n return 1;\n }, ct.prototype.compareTo = function() {\n if (1 === arguments.length) {\n var t = arguments[0], e = t;\n return this.getSortIndex() !== e.getSortIndex() ? this.getSortIndex() - e.getSortIndex() : this.isEmpty() && e.isEmpty() ? 0 : this.isEmpty() ? -1 : e.isEmpty() ? 1 : this.compareToSameClass(t);\n }\n if (2 === arguments.length) {\n var n = arguments[0], i = arguments[1];\n return this.getSortIndex() !== n.getSortIndex() ? this.getSortIndex() - n.getSortIndex() : this.isEmpty() && n.isEmpty() ? 0 : this.isEmpty() ? -1 : n.isEmpty() ? 1 : this.compareToSameClass(n, i);\n }\n }, ct.prototype.getUserData = function() {\n return this._userData;\n }, ct.prototype.getSRID = function() {\n return this._SRID;\n }, ct.prototype.getEnvelope = function() {\n return this.getFactory().toGeometry(this.getEnvelopeInternal());\n }, ct.prototype.checkNotGeometryCollection = function(t) {\n if (t.getSortIndex() === ct.SORTINDEX_GEOMETRYCOLLECTION) throw new m(\"This method does not support GeometryCollection arguments\");\n }, ct.prototype.equal = function(t, e, n) {\n return 0 === n ? t.equals(e) : t.distance(e) <= n;\n }, ct.prototype.norm = function() {\n var t = this.copy();\n return t.normalize(), t;\n }, ct.prototype.getPrecisionModel = function() {\n return this._factory.getPrecisionModel();\n }, ct.prototype.getEnvelopeInternal = function() {\n return null === this._envelope && (this._envelope = this.computeEnvelopeInternal()), new j(this._envelope);\n }, ct.prototype.setSRID = function(t) {\n this._SRID = t;\n }, ct.prototype.setUserData = function(t) {\n this._userData = t;\n }, ct.prototype.compare = function(t, e) {\n for(var n = t.iterator(), i = e.iterator(); n.hasNext() && i.hasNext();){\n var r = n.next(), o = i.next(), s = r.compareTo(o);\n if (0 !== s) return s;\n }\n return n.hasNext() ? 1 : i.hasNext() ? -1 : 0;\n }, ct.prototype.hashCode = function() {\n return this.getEnvelopeInternal().hashCode();\n }, ct.prototype.isGeometryCollectionOrDerived = function() {\n return this.getSortIndex() === ct.SORTINDEX_GEOMETRYCOLLECTION || this.getSortIndex() === ct.SORTINDEX_MULTIPOINT || this.getSortIndex() === ct.SORTINDEX_MULTILINESTRING || this.getSortIndex() === ct.SORTINDEX_MULTIPOLYGON;\n }, ct.prototype.interfaces_ = function() {\n return [\n x,\n E,\n e\n ];\n }, ct.prototype.getClass = function() {\n return ct;\n }, ct.hasNonEmptyElements = function(t) {\n for(var e = 0; e < t.length; e++)if (!t[e].isEmpty()) return !0;\n return !1;\n }, ct.hasNullElements = function(t) {\n for(var e = 0; e < t.length; e++)if (null === t[e]) return !0;\n return !1;\n }, pt.serialVersionUID.get = function() {\n return 0x799ea46522854c00;\n }, pt.SORTINDEX_POINT.get = function() {\n return 0;\n }, pt.SORTINDEX_MULTIPOINT.get = function() {\n return 1;\n }, pt.SORTINDEX_LINESTRING.get = function() {\n return 2;\n }, pt.SORTINDEX_LINEARRING.get = function() {\n return 3;\n }, pt.SORTINDEX_MULTILINESTRING.get = function() {\n return 4;\n }, pt.SORTINDEX_POLYGON.get = function() {\n return 5;\n }, pt.SORTINDEX_MULTIPOLYGON.get = function() {\n return 6;\n }, pt.SORTINDEX_GEOMETRYCOLLECTION.get = function() {\n return 7;\n }, pt.geometryChangedFilter.get = function() {\n return ht;\n }, Object.defineProperties(ct, pt);\n var ht = function() {};\n ht.interfaces_ = function() {\n return [\n lt\n ];\n }, ht.filter = function(t) {\n t.geometryChangedAction();\n };\n var ft = function() {};\n ft.prototype.filter = function(t) {}, ft.prototype.interfaces_ = function() {\n return [];\n }, ft.prototype.getClass = function() {\n return ft;\n };\n var gt = function() {}, dt = {\n Mod2BoundaryNodeRule: {\n configurable: !0\n },\n EndPointBoundaryNodeRule: {\n configurable: !0\n },\n MultiValentEndPointBoundaryNodeRule: {\n configurable: !0\n },\n MonoValentEndPointBoundaryNodeRule: {\n configurable: !0\n },\n MOD2_BOUNDARY_RULE: {\n configurable: !0\n },\n ENDPOINT_BOUNDARY_RULE: {\n configurable: !0\n },\n MULTIVALENT_ENDPOINT_BOUNDARY_RULE: {\n configurable: !0\n },\n MONOVALENT_ENDPOINT_BOUNDARY_RULE: {\n configurable: !0\n },\n OGC_SFS_BOUNDARY_RULE: {\n configurable: !0\n }\n };\n gt.prototype.isInBoundary = function(t) {}, gt.prototype.interfaces_ = function() {\n return [];\n }, gt.prototype.getClass = function() {\n return gt;\n }, dt.Mod2BoundaryNodeRule.get = function() {\n return yt;\n }, dt.EndPointBoundaryNodeRule.get = function() {\n return _t;\n }, dt.MultiValentEndPointBoundaryNodeRule.get = function() {\n return mt;\n }, dt.MonoValentEndPointBoundaryNodeRule.get = function() {\n return vt;\n }, dt.MOD2_BOUNDARY_RULE.get = function() {\n return new yt;\n }, dt.ENDPOINT_BOUNDARY_RULE.get = function() {\n return new _t;\n }, dt.MULTIVALENT_ENDPOINT_BOUNDARY_RULE.get = function() {\n return new mt;\n }, dt.MONOVALENT_ENDPOINT_BOUNDARY_RULE.get = function() {\n return new vt;\n }, dt.OGC_SFS_BOUNDARY_RULE.get = function() {\n return gt.MOD2_BOUNDARY_RULE;\n }, Object.defineProperties(gt, dt);\n var yt = function() {};\n yt.prototype.isInBoundary = function(t) {\n return t % 2 == 1;\n }, yt.prototype.interfaces_ = function() {\n return [\n gt\n ];\n }, yt.prototype.getClass = function() {\n return yt;\n };\n var _t = function() {};\n _t.prototype.isInBoundary = function(t) {\n return t > 0;\n }, _t.prototype.interfaces_ = function() {\n return [\n gt\n ];\n }, _t.prototype.getClass = function() {\n return _t;\n };\n var mt = function() {};\n mt.prototype.isInBoundary = function(t) {\n return t > 1;\n }, mt.prototype.interfaces_ = function() {\n return [\n gt\n ];\n }, mt.prototype.getClass = function() {\n return mt;\n };\n var vt = function() {};\n vt.prototype.isInBoundary = function(t) {\n return 1 === t;\n }, vt.prototype.interfaces_ = function() {\n return [\n gt\n ];\n }, vt.prototype.getClass = function() {\n return vt;\n };\n var It = function() {};\n It.prototype.add = function() {}, It.prototype.addAll = function() {}, It.prototype.isEmpty = function() {}, It.prototype.iterator = function() {}, It.prototype.size = function() {}, It.prototype.toArray = function() {}, It.prototype.remove = function() {}, (n.prototype = new Error).name = \"IndexOutOfBoundsException\";\n var Et = function() {};\n Et.prototype.hasNext = function() {}, Et.prototype.next = function() {}, Et.prototype.remove = function() {};\n var xt = function(t) {\n function e() {\n t.apply(this, arguments);\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.get = function() {}, e.prototype.set = function() {}, e.prototype.isEmpty = function() {}, e;\n }(It);\n (i.prototype = new Error).name = \"NoSuchElementException\";\n var Nt = function(t) {\n function e() {\n t.call(this), this.array_ = [], arguments[0] instanceof It && this.addAll(arguments[0]);\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.ensureCapacity = function() {}, e.prototype.interfaces_ = function() {\n return [\n t,\n It\n ];\n }, e.prototype.add = function(t) {\n return 1 === arguments.length ? this.array_.push(t) : this.array_.splice(arguments[0], arguments[1]), !0;\n }, e.prototype.clear = function() {\n this.array_ = [];\n }, e.prototype.addAll = function(t) {\n for(var e = t.iterator(); e.hasNext();)this.add(e.next());\n return !0;\n }, e.prototype.set = function(t, e) {\n var n = this.array_[t];\n return this.array_[t] = e, n;\n }, e.prototype.iterator = function() {\n return new Ct(this);\n }, e.prototype.get = function(t) {\n if (t < 0 || t >= this.size()) throw new n;\n return this.array_[t];\n }, e.prototype.isEmpty = function() {\n return 0 === this.array_.length;\n }, e.prototype.size = function() {\n return this.array_.length;\n }, e.prototype.toArray = function() {\n for(var t = [], e = 0, n = this.array_.length; e < n; e++)t.push(this.array_[e]);\n return t;\n }, e.prototype.remove = function(t) {\n for(var e = !1, n = 0, i = this.array_.length; n < i; n++)if (this.array_[n] === t) {\n this.array_.splice(n, 1), e = !0;\n break;\n }\n return e;\n }, e;\n }(xt), Ct = function(t) {\n function e(e) {\n t.call(this), this.arrayList_ = e, this.position_ = 0;\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.next = function() {\n if (this.position_ === this.arrayList_.size()) throw new i;\n return this.arrayList_.get(this.position_++);\n }, e.prototype.hasNext = function() {\n return this.position_ < this.arrayList_.size();\n }, e.prototype.set = function(t) {\n return this.arrayList_.set(this.position_ - 1, t);\n }, e.prototype.remove = function() {\n this.arrayList_.remove(this.arrayList_.get(this.position_));\n }, e;\n }(Et), St = function(t) {\n function e() {\n if (t.call(this), 0 === arguments.length) ;\n else if (1 === arguments.length) {\n var e = arguments[0];\n this.ensureCapacity(e.length), this.add(e, !0);\n } else if (2 === arguments.length) {\n var n = arguments[0], i = arguments[1];\n this.ensureCapacity(n.length), this.add(n, i);\n }\n }\n t && (e.__proto__ = t), (e.prototype = Object.create(t && t.prototype)).constructor = e;\n var n = {\n coordArrayType: {\n configurable: !0\n }\n };\n return n.coordArrayType.get = function() {\n return new Array(0).fill(null);\n }, e.prototype.getCoordinate = function(t) {\n return this.get(t);\n }, e.prototype.addAll = function() {\n if (2 === arguments.length) {\n for(var e = arguments[0], n = arguments[1], i = !1, r = e.iterator(); r.hasNext();)this.add(r.next(), n), i = !0;\n return i;\n }\n return t.prototype.addAll.apply(this, arguments);\n }, e.prototype.clone = function() {\n for(var e = t.prototype.clone.call(this), n = 0; n < this.size(); n++)e.add(n, this.get(n).copy());\n return e;\n }, e.prototype.toCoordinateArray = function() {\n return this.toArray(e.coordArrayType);\n }, e.prototype.add = function() {\n if (1 === arguments.length) {\n var e = arguments[0];\n t.prototype.add.call(this, e);\n } else if (2 === arguments.length) {\n if (arguments[0] instanceof Array && \"boolean\" == typeof arguments[1]) {\n var n = arguments[0], i = arguments[1];\n return this.add(n, i, !0), !0;\n }\n if (arguments[0] instanceof C && \"boolean\" == typeof arguments[1]) {\n var r = arguments[0];\n if (!arguments[1] && this.size() >= 1) {\n if (this.get(this.size() - 1).equals2D(r)) return null;\n }\n t.prototype.add.call(this, r);\n } else if (arguments[0] instanceof Object && \"boolean\" == typeof arguments[1]) {\n var o = arguments[0], s = arguments[1];\n return this.add(o, s), !0;\n }\n } else if (3 === arguments.length) {\n if (\"boolean\" == typeof arguments[2] && arguments[0] instanceof Array && \"boolean\" == typeof arguments[1]) {\n var a = arguments[0], u = arguments[1];\n if (arguments[2]) for(var l = 0; l < a.length; l++)this.add(a[l], u);\n else for(var c = a.length - 1; c >= 0; c--)this.add(a[c], u);\n return !0;\n }\n if (\"boolean\" == typeof arguments[2] && Number.isInteger(arguments[0]) && arguments[1] instanceof C) {\n var p = arguments[0], h = arguments[1];\n if (!arguments[2]) {\n var f = this.size();\n if (f > 0) {\n if (p > 0) {\n if (this.get(p - 1).equals2D(h)) return null;\n }\n if (p < f) {\n if (this.get(p).equals2D(h)) return null;\n }\n }\n }\n t.prototype.add.call(this, p, h);\n }\n } else if (4 === arguments.length) {\n var g = arguments[0], d = arguments[1], y = arguments[2], _ = arguments[3], m = 1;\n y > _ && (m = -1);\n for(var v = y; v !== _; v += m)this.add(g[v], d);\n return !0;\n }\n }, e.prototype.closeRing = function() {\n this.size() > 0 && this.add(new C(this.get(0)), !1);\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, Object.defineProperties(e, n), e;\n }(Nt), Lt = function() {}, bt = {\n ForwardComparator: {\n configurable: !0\n },\n BidirectionalComparator: {\n configurable: !0\n },\n coordArrayType: {\n configurable: !0\n }\n };\n bt.ForwardComparator.get = function() {\n return wt;\n }, bt.BidirectionalComparator.get = function() {\n return Ot;\n }, bt.coordArrayType.get = function() {\n return new Array(0).fill(null);\n }, Lt.prototype.interfaces_ = function() {\n return [];\n }, Lt.prototype.getClass = function() {\n return Lt;\n }, Lt.isRing = function(t) {\n return !(t.length < 4) && !!t[0].equals2D(t[t.length - 1]);\n }, Lt.ptNotInList = function(t, e) {\n for(var n = 0; n < t.length; n++){\n var i = t[n];\n if (Lt.indexOf(i, e) < 0) return i;\n }\n return null;\n }, Lt.scroll = function(t, e) {\n var n = Lt.indexOf(e, t);\n if (n < 0) return null;\n var i = new Array(t.length).fill(null);\n Y.arraycopy(t, n, i, 0, t.length - n), Y.arraycopy(t, 0, i, t.length - n, n), Y.arraycopy(i, 0, t, 0, t.length);\n }, Lt.equals = function() {\n if (2 === arguments.length) {\n var t = arguments[0], e = arguments[1];\n if (t === e) return !0;\n if (null === t || null === e) return !1;\n if (t.length !== e.length) return !1;\n for(var n = 0; n < t.length; n++)if (!t[n].equals(e[n])) return !1;\n return !0;\n }\n if (3 === arguments.length) {\n var i = arguments[0], r = arguments[1], o = arguments[2];\n if (i === r) return !0;\n if (null === i || null === r) return !1;\n if (i.length !== r.length) return !1;\n for(var s = 0; s < i.length; s++)if (0 !== o.compare(i[s], r[s])) return !1;\n return !0;\n }\n }, Lt.intersection = function(t, e) {\n for(var n = new St, i = 0; i < t.length; i++)e.intersects(t[i]) && n.add(t[i], !0);\n return n.toCoordinateArray();\n }, Lt.hasRepeatedPoints = function(t) {\n for(var e = 1; e < t.length; e++)if (t[e - 1].equals(t[e])) return !0;\n return !1;\n }, Lt.removeRepeatedPoints = function(t) {\n if (!Lt.hasRepeatedPoints(t)) return t;\n return new St(t, !1).toCoordinateArray();\n }, Lt.reverse = function(t) {\n for(var e = t.length - 1, n = Math.trunc(e / 2), i = 0; i <= n; i++){\n var r = t[i];\n t[i] = t[e - i], t[e - i] = r;\n }\n }, Lt.removeNull = function(t) {\n for(var e = 0, n = 0; n < t.length; n++)null !== t[n] && e++;\n var i = new Array(e).fill(null);\n if (0 === e) return i;\n for(var r = 0, o = 0; o < t.length; o++)null !== t[o] && (i[r++] = t[o]);\n return i;\n }, Lt.copyDeep = function() {\n if (1 === arguments.length) {\n for(var t = arguments[0], e = new Array(t.length).fill(null), n = 0; n < t.length; n++)e[n] = new C(t[n]);\n return e;\n }\n if (5 === arguments.length) for(var i = arguments[0], r = arguments[1], o = arguments[2], s = arguments[3], a = arguments[4], u = 0; u < a; u++)o[s + u] = new C(i[r + u]);\n }, Lt.isEqualReversed = function(t, e) {\n for(var n = 0; n < t.length; n++){\n var i = t[n], r = e[t.length - n - 1];\n if (0 !== i.compareTo(r)) return !1;\n }\n return !0;\n }, Lt.envelope = function(t) {\n for(var e = new j, n = 0; n < t.length; n++)e.expandToInclude(t[n]);\n return e;\n }, Lt.toCoordinateArray = function(t) {\n return t.toArray(Lt.coordArrayType);\n }, Lt.atLeastNCoordinatesOrNothing = function(t, e) {\n return e.length >= t ? e : [];\n }, Lt.indexOf = function(t, e) {\n for(var n = 0; n < e.length; n++)if (t.equals(e[n])) return n;\n return -1;\n }, Lt.increasingDirection = function(t) {\n for(var e = 0; e < Math.trunc(t.length / 2); e++){\n var n = t.length - 1 - e, i = t[e].compareTo(t[n]);\n if (0 !== i) return i;\n }\n return 1;\n }, Lt.compare = function(t, e) {\n for(var n = 0; n < t.length && n < e.length;){\n var i = t[n].compareTo(e[n]);\n if (0 !== i) return i;\n n++;\n }\n return n < e.length ? -1 : n < t.length ? 1 : 0;\n }, Lt.minCoordinate = function(t) {\n for(var e = null, n = 0; n < t.length; n++)(null === e || e.compareTo(t[n]) > 0) && (e = t[n]);\n return e;\n }, Lt.extract = function(t, e, n) {\n e = R.clamp(e, 0, t.length);\n var i = (n = R.clamp(n, -1, t.length)) - e + 1;\n n < 0 && (i = 0), e >= t.length && (i = 0), n < e && (i = 0);\n var r = new Array(i).fill(null);\n if (0 === i) return r;\n for(var o = 0, s = e; s <= n; s++)r[o++] = t[s];\n return r;\n }, Object.defineProperties(Lt, bt);\n var wt = function() {};\n wt.prototype.compare = function(t, e) {\n return Lt.compare(t, e);\n }, wt.prototype.interfaces_ = function() {\n return [\n N\n ];\n }, wt.prototype.getClass = function() {\n return wt;\n };\n var Ot = function() {};\n Ot.prototype.compare = function(t, e) {\n var n = t, i = e;\n if (n.length < i.length) return -1;\n if (n.length > i.length) return 1;\n if (0 === n.length) return 0;\n var r = Lt.compare(n, i);\n return Lt.isEqualReversed(n, i) ? 0 : r;\n }, Ot.prototype.OLDcompare = function(t, e) {\n var n = t, i = e;\n if (n.length < i.length) return -1;\n if (n.length > i.length) return 1;\n if (0 === n.length) return 0;\n for(var r = Lt.increasingDirection(n), o = Lt.increasingDirection(i), s = r > 0 ? 0 : n.length - 1, a = o > 0 ? 0 : n.length - 1, u = 0; u < n.length; u++){\n var l = n[s].compareTo(i[a]);\n if (0 !== l) return l;\n s += r, a += o;\n }\n return 0;\n }, Ot.prototype.interfaces_ = function() {\n return [\n N\n ];\n }, Ot.prototype.getClass = function() {\n return Ot;\n };\n var Tt = function() {};\n Tt.prototype.get = function() {}, Tt.prototype.put = function() {}, Tt.prototype.size = function() {}, Tt.prototype.values = function() {}, Tt.prototype.entrySet = function() {};\n var Rt = function(t) {\n function e() {\n t.apply(this, arguments);\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e;\n }(Tt);\n (r.prototype = new Error).name = \"OperationNotSupported\", (o.prototype = new It).contains = function() {};\n var Pt = function(t) {\n function e() {\n t.call(this), this.array_ = [], arguments[0] instanceof It && this.addAll(arguments[0]);\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.contains = function(t) {\n for(var e = 0, n = this.array_.length; e < n; e++){\n if (this.array_[e] === t) return !0;\n }\n return !1;\n }, e.prototype.add = function(t) {\n return !this.contains(t) && (this.array_.push(t), !0);\n }, e.prototype.addAll = function(t) {\n for(var e = t.iterator(); e.hasNext();)this.add(e.next());\n return !0;\n }, e.prototype.remove = function(t) {\n throw new Error;\n }, e.prototype.size = function() {\n return this.array_.length;\n }, e.prototype.isEmpty = function() {\n return 0 === this.array_.length;\n }, e.prototype.toArray = function() {\n for(var t = [], e = 0, n = this.array_.length; e < n; e++)t.push(this.array_[e]);\n return t;\n }, e.prototype.iterator = function() {\n return new Dt(this);\n }, e;\n }(o), Dt = function(t) {\n function e(e) {\n t.call(this), this.hashSet_ = e, this.position_ = 0;\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.next = function() {\n if (this.position_ === this.hashSet_.size()) throw new i;\n return this.hashSet_.array_[this.position_++];\n }, e.prototype.hasNext = function() {\n return this.position_ < this.hashSet_.size();\n }, e.prototype.remove = function() {\n throw new r;\n }, e;\n }(Et), Mt = 0;\n (p.prototype = new Rt).get = function(t) {\n for(var e = this.root_; null !== e;){\n var n = t.compareTo(e.key);\n if (n < 0) e = e.left;\n else {\n if (!(n > 0)) return e.value;\n e = e.right;\n }\n }\n return null;\n }, p.prototype.put = function(t, e) {\n if (null === this.root_) return this.root_ = {\n key: t,\n value: e,\n left: null,\n right: null,\n parent: null,\n color: Mt,\n getValue: function() {\n return this.value;\n },\n getKey: function() {\n return this.key;\n }\n }, this.size_ = 1, null;\n var n, i, r = this.root_;\n do if (n = r, (i = t.compareTo(r.key)) < 0) r = r.left;\n else {\n if (!(i > 0)) {\n var o = r.value;\n return r.value = e, o;\n }\n r = r.right;\n }\n while (null !== r);\n var s = {\n key: t,\n left: null,\n right: null,\n value: e,\n parent: n,\n color: Mt,\n getValue: function() {\n return this.value;\n },\n getKey: function() {\n return this.key;\n }\n };\n return i < 0 ? n.left = s : n.right = s, this.fixAfterInsertion(s), this.size_++, null;\n }, p.prototype.fixAfterInsertion = function(t) {\n for(t.color = 1; null != t && t !== this.root_ && 1 === t.parent.color;)if (a(t) === l(a(a(t)))) {\n var e = c(a(a(t)));\n 1 === s(e) ? (u(a(t), Mt), u(e, Mt), u(a(a(t)), 1), t = a(a(t))) : (t === c(a(t)) && (t = a(t), this.rotateLeft(t)), u(a(t), Mt), u(a(a(t)), 1), this.rotateRight(a(a(t))));\n } else {\n var n = l(a(a(t)));\n 1 === s(n) ? (u(a(t), Mt), u(n, Mt), u(a(a(t)), 1), t = a(a(t))) : (t === l(a(t)) && (t = a(t), this.rotateRight(t)), u(a(t), Mt), u(a(a(t)), 1), this.rotateLeft(a(a(t))));\n }\n this.root_.color = Mt;\n }, p.prototype.values = function() {\n var t = new Nt, e = this.getFirstEntry();\n if (null !== e) for(t.add(e.value); null !== (e = p.successor(e));)t.add(e.value);\n return t;\n }, p.prototype.entrySet = function() {\n var t = new Pt, e = this.getFirstEntry();\n if (null !== e) for(t.add(e); null !== (e = p.successor(e));)t.add(e);\n return t;\n }, p.prototype.rotateLeft = function(t) {\n if (null != t) {\n var e = t.right;\n t.right = e.left, null != e.left && (e.left.parent = t), e.parent = t.parent, null === t.parent ? this.root_ = e : t.parent.left === t ? t.parent.left = e : t.parent.right = e, e.left = t, t.parent = e;\n }\n }, p.prototype.rotateRight = function(t) {\n if (null != t) {\n var e = t.left;\n t.left = e.right, null != e.right && (e.right.parent = t), e.parent = t.parent, null === t.parent ? this.root_ = e : t.parent.right === t ? t.parent.right = e : t.parent.left = e, e.right = t, t.parent = e;\n }\n }, p.prototype.getFirstEntry = function() {\n var t = this.root_;\n if (null != t) for(; null != t.left;)t = t.left;\n return t;\n }, p.successor = function(t) {\n if (null === t) return null;\n if (null !== t.right) {\n for(var e = t.right; null !== e.left;)e = e.left;\n return e;\n }\n for(var n = t.parent, i = t; null !== n && i === n.right;)i = n, n = n.parent;\n return n;\n }, p.prototype.size = function() {\n return this.size_;\n };\n var At = function() {};\n At.prototype.interfaces_ = function() {\n return [];\n }, At.prototype.getClass = function() {\n return At;\n }, h.prototype = new o, (f.prototype = new h).contains = function(t) {\n for(var e = 0, n = this.array_.length; e < n; e++){\n if (0 === this.array_[e].compareTo(t)) return !0;\n }\n return !1;\n }, f.prototype.add = function(t) {\n if (this.contains(t)) return !1;\n for(var e = 0, n = this.array_.length; e < n; e++){\n if (1 === this.array_[e].compareTo(t)) return this.array_.splice(e, 0, t), !0;\n }\n return this.array_.push(t), !0;\n }, f.prototype.addAll = function(t) {\n for(var e = t.iterator(); e.hasNext();)this.add(e.next());\n return !0;\n }, f.prototype.remove = function(t) {\n throw new r;\n }, f.prototype.size = function() {\n return this.array_.length;\n }, f.prototype.isEmpty = function() {\n return 0 === this.array_.length;\n }, f.prototype.toArray = function() {\n for(var t = [], e = 0, n = this.array_.length; e < n; e++)t.push(this.array_[e]);\n return t;\n }, f.prototype.iterator = function() {\n return new Ft(this);\n };\n var Ft = function(t) {\n this.treeSet_ = t, this.position_ = 0;\n };\n Ft.prototype.next = function() {\n if (this.position_ === this.treeSet_.size()) throw new i;\n return this.treeSet_.array_[this.position_++];\n }, Ft.prototype.hasNext = function() {\n return this.position_ < this.treeSet_.size();\n }, Ft.prototype.remove = function() {\n throw new r;\n };\n var Gt = function() {};\n Gt.sort = function() {\n var t, e, n, i, r = arguments[0];\n if (1 === arguments.length) i = function(t, e) {\n return t.compareTo(e);\n }, r.sort(i);\n else if (2 === arguments.length) n = arguments[1], i = function(t, e) {\n return n.compare(t, e);\n }, r.sort(i);\n else if (3 === arguments.length) {\n (e = r.slice(arguments[1], arguments[2])).sort();\n var o = r.slice(0, arguments[1]).concat(e, r.slice(arguments[2], r.length));\n for(r.splice(0, r.length), t = 0; t < o.length; t++)r.push(o[t]);\n } else if (4 === arguments.length) for(e = r.slice(arguments[1], arguments[2]), n = arguments[3], i = function(t, e) {\n return n.compare(t, e);\n }, e.sort(i), o = r.slice(0, arguments[1]).concat(e, r.slice(arguments[2], r.length)), r.splice(0, r.length), t = 0; t < o.length; t++)r.push(o[t]);\n }, Gt.asList = function(t) {\n for(var e = new Nt, n = 0, i = t.length; n < i; n++)e.add(t[n]);\n return e;\n };\n var qt = function() {}, Bt = {\n P: {\n configurable: !0\n },\n L: {\n configurable: !0\n },\n A: {\n configurable: !0\n },\n FALSE: {\n configurable: !0\n },\n TRUE: {\n configurable: !0\n },\n DONTCARE: {\n configurable: !0\n },\n SYM_FALSE: {\n configurable: !0\n },\n SYM_TRUE: {\n configurable: !0\n },\n SYM_DONTCARE: {\n configurable: !0\n },\n SYM_P: {\n configurable: !0\n },\n SYM_L: {\n configurable: !0\n },\n SYM_A: {\n configurable: !0\n }\n };\n Bt.P.get = function() {\n return 0;\n }, Bt.L.get = function() {\n return 1;\n }, Bt.A.get = function() {\n return 2;\n }, Bt.FALSE.get = function() {\n return -1;\n }, Bt.TRUE.get = function() {\n return -2;\n }, Bt.DONTCARE.get = function() {\n return -3;\n }, Bt.SYM_FALSE.get = function() {\n return \"F\";\n }, Bt.SYM_TRUE.get = function() {\n return \"T\";\n }, Bt.SYM_DONTCARE.get = function() {\n return \"*\";\n }, Bt.SYM_P.get = function() {\n return \"0\";\n }, Bt.SYM_L.get = function() {\n return \"1\";\n }, Bt.SYM_A.get = function() {\n return \"2\";\n }, qt.prototype.interfaces_ = function() {\n return [];\n }, qt.prototype.getClass = function() {\n return qt;\n }, qt.toDimensionSymbol = function(t) {\n switch(t){\n case qt.FALSE:\n return qt.SYM_FALSE;\n case qt.TRUE:\n return qt.SYM_TRUE;\n case qt.DONTCARE:\n return qt.SYM_DONTCARE;\n case qt.P:\n return qt.SYM_P;\n case qt.L:\n return qt.SYM_L;\n case qt.A:\n return qt.SYM_A;\n }\n throw new m(\"Unknown dimension value: \" + t);\n }, qt.toDimensionValue = function(t) {\n switch(A.toUpperCase(t)){\n case qt.SYM_FALSE:\n return qt.FALSE;\n case qt.SYM_TRUE:\n return qt.TRUE;\n case qt.SYM_DONTCARE:\n return qt.DONTCARE;\n case qt.SYM_P:\n return qt.P;\n case qt.SYM_L:\n return qt.L;\n case qt.SYM_A:\n return qt.A;\n }\n throw new m(\"Unknown dimension symbol: \" + t);\n }, Object.defineProperties(qt, Bt);\n var Vt = function() {};\n Vt.prototype.filter = function(t) {}, Vt.prototype.interfaces_ = function() {\n return [];\n }, Vt.prototype.getClass = function() {\n return Vt;\n };\n var Ut = function() {};\n Ut.prototype.filter = function(t, e) {}, Ut.prototype.isDone = function() {}, Ut.prototype.isGeometryChanged = function() {}, Ut.prototype.interfaces_ = function() {\n return [];\n }, Ut.prototype.getClass = function() {\n return Ut;\n };\n var zt = function(t) {\n function e(e, n) {\n if (t.call(this, n), this._geometries = e || [], t.hasNullElements(this._geometries)) throw new m(\"geometries must not contain null elements\");\n }\n t && (e.__proto__ = t), (e.prototype = Object.create(t && t.prototype)).constructor = e;\n var n = {\n serialVersionUID: {\n configurable: !0\n }\n };\n return e.prototype.computeEnvelopeInternal = function() {\n for(var t = new j, e = 0; e < this._geometries.length; e++)t.expandToInclude(this._geometries[e].getEnvelopeInternal());\n return t;\n }, e.prototype.getGeometryN = function(t) {\n return this._geometries[t];\n }, e.prototype.getSortIndex = function() {\n return t.SORTINDEX_GEOMETRYCOLLECTION;\n }, e.prototype.getCoordinates = function() {\n for(var t = new Array(this.getNumPoints()).fill(null), e = -1, n = 0; n < this._geometries.length; n++)for(var i = this._geometries[n].getCoordinates(), r = 0; r < i.length; r++)t[++e] = i[r];\n return t;\n }, e.prototype.getArea = function() {\n for(var t = 0, e = 0; e < this._geometries.length; e++)t += this._geometries[e].getArea();\n return t;\n }, e.prototype.equalsExact = function() {\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n if (!this.isEquivalentClass(e)) return !1;\n var i = e;\n if (this._geometries.length !== i._geometries.length) return !1;\n for(var r = 0; r < this._geometries.length; r++)if (!this._geometries[r].equalsExact(i._geometries[r], n)) return !1;\n return !0;\n }\n return t.prototype.equalsExact.apply(this, arguments);\n }, e.prototype.normalize = function() {\n for(var t = 0; t < this._geometries.length; t++)this._geometries[t].normalize();\n Gt.sort(this._geometries);\n }, e.prototype.getCoordinate = function() {\n return this.isEmpty() ? null : this._geometries[0].getCoordinate();\n }, e.prototype.getBoundaryDimension = function() {\n for(var t = qt.FALSE, e = 0; e < this._geometries.length; e++)t = Math.max(t, this._geometries[e].getBoundaryDimension());\n return t;\n }, e.prototype.getDimension = function() {\n for(var t = qt.FALSE, e = 0; e < this._geometries.length; e++)t = Math.max(t, this._geometries[e].getDimension());\n return t;\n }, e.prototype.getLength = function() {\n for(var t = 0, e = 0; e < this._geometries.length; e++)t += this._geometries[e].getLength();\n return t;\n }, e.prototype.getNumPoints = function() {\n for(var t = 0, e = 0; e < this._geometries.length; e++)t += this._geometries[e].getNumPoints();\n return t;\n }, e.prototype.getNumGeometries = function() {\n return this._geometries.length;\n }, e.prototype.reverse = function() {\n for(var t = this._geometries.length, e = new Array(t).fill(null), n = 0; n < this._geometries.length; n++)e[n] = this._geometries[n].reverse();\n return this.getFactory().createGeometryCollection(e);\n }, e.prototype.compareToSameClass = function() {\n if (1 === arguments.length) {\n var t = arguments[0], e = new f(Gt.asList(this._geometries)), n = new f(Gt.asList(t._geometries));\n return this.compare(e, n);\n }\n if (2 === arguments.length) {\n for(var i = arguments[0], r = arguments[1], o = i, s = this.getNumGeometries(), a = o.getNumGeometries(), u = 0; u < s && u < a;){\n var l = this.getGeometryN(u), c = o.getGeometryN(u), p = l.compareToSameClass(c, r);\n if (0 !== p) return p;\n u++;\n }\n return u < s ? 1 : u < a ? -1 : 0;\n }\n }, e.prototype.apply = function() {\n if (T(arguments[0], ft)) for(var t = arguments[0], e = 0; e < this._geometries.length; e++)this._geometries[e].apply(t);\n else if (T(arguments[0], Ut)) {\n var n = arguments[0];\n if (0 === this._geometries.length) return null;\n for(var i = 0; i < this._geometries.length && (this._geometries[i].apply(n), !n.isDone()); i++);\n n.isGeometryChanged() && this.geometryChanged();\n } else if (T(arguments[0], Vt)) {\n var r = arguments[0];\n r.filter(this);\n for(var o = 0; o < this._geometries.length; o++)this._geometries[o].apply(r);\n } else if (T(arguments[0], lt)) {\n var s = arguments[0];\n s.filter(this);\n for(var a = 0; a < this._geometries.length; a++)this._geometries[a].apply(s);\n }\n }, e.prototype.getBoundary = function() {\n return this.checkNotGeometryCollection(this), et.shouldNeverReachHere(), null;\n }, e.prototype.clone = function() {\n var e = t.prototype.clone.call(this);\n e._geometries = new Array(this._geometries.length).fill(null);\n for(var n = 0; n < this._geometries.length; n++)e._geometries[n] = this._geometries[n].clone();\n return e;\n }, e.prototype.getGeometryType = function() {\n return \"GeometryCollection\";\n }, e.prototype.copy = function() {\n for(var t = new Array(this._geometries.length).fill(null), n = 0; n < t.length; n++)t[n] = this._geometries[n].copy();\n return new e(t, this._factory);\n }, e.prototype.isEmpty = function() {\n for(var t = 0; t < this._geometries.length; t++)if (!this._geometries[t].isEmpty()) return !1;\n return !0;\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, n.serialVersionUID.get = function() {\n return -5694727726395021000;\n }, Object.defineProperties(e, n), e;\n }(ct), Xt = function(t) {\n function e() {\n t.apply(this, arguments);\n }\n t && (e.__proto__ = t), (e.prototype = Object.create(t && t.prototype)).constructor = e;\n var n = {\n serialVersionUID: {\n configurable: !0\n }\n };\n return e.prototype.getSortIndex = function() {\n return ct.SORTINDEX_MULTILINESTRING;\n }, e.prototype.equalsExact = function() {\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n return !!this.isEquivalentClass(e) && t.prototype.equalsExact.call(this, e, n);\n }\n return t.prototype.equalsExact.apply(this, arguments);\n }, e.prototype.getBoundaryDimension = function() {\n return this.isClosed() ? qt.FALSE : 0;\n }, e.prototype.isClosed = function() {\n if (this.isEmpty()) return !1;\n for(var t = 0; t < this._geometries.length; t++)if (!this._geometries[t].isClosed()) return !1;\n return !0;\n }, e.prototype.getDimension = function() {\n return 1;\n }, e.prototype.reverse = function() {\n for(var t = this._geometries.length, e = new Array(t).fill(null), n = 0; n < this._geometries.length; n++)e[t - 1 - n] = this._geometries[n].reverse();\n return this.getFactory().createMultiLineString(e);\n }, e.prototype.getBoundary = function() {\n return new Yt(this).getBoundary();\n }, e.prototype.getGeometryType = function() {\n return \"MultiLineString\";\n }, e.prototype.copy = function() {\n for(var t = new Array(this._geometries.length).fill(null), n = 0; n < t.length; n++)t[n] = this._geometries[n].copy();\n return new e(t, this._factory);\n }, e.prototype.interfaces_ = function() {\n return [\n At\n ];\n }, e.prototype.getClass = function() {\n return e;\n }, n.serialVersionUID.get = function() {\n return 0x7155d2ab4afa8000;\n }, Object.defineProperties(e, n), e;\n }(zt), Yt = function() {\n if (this._geom = null, this._geomFact = null, this._bnRule = null, this._endpointMap = null, 1 === arguments.length) {\n var t = arguments[0], e = gt.MOD2_BOUNDARY_RULE;\n this._geom = t, this._geomFact = t.getFactory(), this._bnRule = e;\n } else if (2 === arguments.length) {\n var n = arguments[0], i = arguments[1];\n this._geom = n, this._geomFact = n.getFactory(), this._bnRule = i;\n }\n };\n Yt.prototype.boundaryMultiLineString = function(t) {\n if (this._geom.isEmpty()) return this.getEmptyMultiPoint();\n var e = this.computeBoundaryCoordinates(t);\n return 1 === e.length ? this._geomFact.createPoint(e[0]) : this._geomFact.createMultiPointFromCoords(e);\n }, Yt.prototype.getBoundary = function() {\n return this._geom instanceof Kt ? this.boundaryLineString(this._geom) : this._geom instanceof Xt ? this.boundaryMultiLineString(this._geom) : this._geom.getBoundary();\n }, Yt.prototype.boundaryLineString = function(t) {\n if (this._geom.isEmpty()) return this.getEmptyMultiPoint();\n if (t.isClosed()) return this._bnRule.isInBoundary(2) ? t.getStartPoint() : this._geomFact.createMultiPoint();\n return this._geomFact.createMultiPoint([\n t.getStartPoint(),\n t.getEndPoint()\n ]);\n }, Yt.prototype.getEmptyMultiPoint = function() {\n return this._geomFact.createMultiPoint();\n }, Yt.prototype.computeBoundaryCoordinates = function(t) {\n var e = new Nt;\n this._endpointMap = new p;\n for(var n = 0; n < t.getNumGeometries(); n++){\n var i = t.getGeometryN(n);\n 0 !== i.getNumPoints() && (this.addEndpoint(i.getCoordinateN(0)), this.addEndpoint(i.getCoordinateN(i.getNumPoints() - 1)));\n }\n for(var r = this._endpointMap.entrySet().iterator(); r.hasNext();){\n var o = r.next(), s = o.getValue().count;\n this._bnRule.isInBoundary(s) && e.add(o.getKey());\n }\n return Lt.toCoordinateArray(e);\n }, Yt.prototype.addEndpoint = function(t) {\n var e = this._endpointMap.get(t);\n null === e && (e = new kt, this._endpointMap.put(t, e)), e.count++;\n }, Yt.prototype.interfaces_ = function() {\n return [];\n }, Yt.prototype.getClass = function() {\n return Yt;\n }, Yt.getBoundary = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n return new Yt(t).getBoundary();\n }\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n return new Yt(e, n).getBoundary();\n }\n };\n var kt = function() {\n this.count = null;\n };\n kt.prototype.interfaces_ = function() {\n return [];\n }, kt.prototype.getClass = function() {\n return kt;\n };\n var jt = function() {}, Ht = {\n NEWLINE: {\n configurable: !0\n },\n SIMPLE_ORDINATE_FORMAT: {\n configurable: !0\n }\n };\n jt.prototype.interfaces_ = function() {\n return [];\n }, jt.prototype.getClass = function() {\n return jt;\n }, jt.chars = function(t, e) {\n for(var n = new Array(e).fill(null), i = 0; i < e; i++)n[i] = t;\n return String(n);\n }, jt.getStackTrace = function() {\n if (1 === arguments.length) {\n var t = arguments[0], e = new function() {}, n = new function() {}(e);\n return t.printStackTrace(n), e.toString();\n }\n if (2 === arguments.length) {\n for(var i = arguments[0], r = arguments[1], o = \"\", s = new function() {}(new function() {}(jt.getStackTrace(i))), a = 0; a < r; a++)try {\n o += s.readLine() + jt.NEWLINE;\n } catch (t) {\n if (!(t instanceof g)) throw t;\n et.shouldNeverReachHere();\n }\n return o;\n }\n }, jt.split = function(t, e) {\n for(var n = e.length, i = new Nt, r = \"\" + t, o = r.indexOf(e); o >= 0;){\n var s = r.substring(0, o);\n i.add(s), o = (r = r.substring(o + n)).indexOf(e);\n }\n r.length > 0 && i.add(r);\n for(var a = new Array(i.size()).fill(null), u = 0; u < a.length; u++)a[u] = i.get(u);\n return a;\n }, jt.toString = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n return jt.SIMPLE_ORDINATE_FORMAT.format(t);\n }\n }, jt.spaces = function(t) {\n return jt.chars(\" \", t);\n }, Ht.NEWLINE.get = function() {\n return Y.getProperty(\"line.separator\");\n }, Ht.SIMPLE_ORDINATE_FORMAT.get = function() {\n return new function() {}(\"0.#\");\n }, Object.defineProperties(jt, Ht);\n var Wt = function() {};\n Wt.prototype.interfaces_ = function() {\n return [];\n }, Wt.prototype.getClass = function() {\n return Wt;\n }, Wt.copyCoord = function(t, e, n, i) {\n for(var r = Math.min(t.getDimension(), n.getDimension()), o = 0; o < r; o++)n.setOrdinate(i, o, t.getOrdinate(e, o));\n }, Wt.isRing = function(t) {\n var e = t.size();\n return 0 === e || !(e <= 3) && t.getOrdinate(0, V.X) === t.getOrdinate(e - 1, V.X) && t.getOrdinate(0, V.Y) === t.getOrdinate(e - 1, V.Y);\n }, Wt.isEqual = function(t, e) {\n var n = t.size();\n if (n !== e.size()) return !1;\n for(var i = Math.min(t.getDimension(), e.getDimension()), r = 0; r < n; r++)for(var o = 0; o < i; o++){\n var s = t.getOrdinate(r, o), a = e.getOrdinate(r, o);\n if (t.getOrdinate(r, o) !== e.getOrdinate(r, o) && (!v.isNaN(s) || !v.isNaN(a))) return !1;\n }\n return !0;\n }, Wt.extend = function(t, e, n) {\n var i = t.create(n, e.getDimension()), r = e.size();\n if (Wt.copy(e, 0, i, 0, r), r > 0) for(var o = r; o < n; o++)Wt.copy(e, r - 1, i, o, 1);\n return i;\n }, Wt.reverse = function(t) {\n for(var e = t.size() - 1, n = Math.trunc(e / 2), i = 0; i <= n; i++)Wt.swap(t, i, e - i);\n }, Wt.swap = function(t, e, n) {\n if (e === n) return null;\n for(var i = 0; i < t.getDimension(); i++){\n var r = t.getOrdinate(e, i);\n t.setOrdinate(e, i, t.getOrdinate(n, i)), t.setOrdinate(n, i, r);\n }\n }, Wt.copy = function(t, e, n, i, r) {\n for(var o = 0; o < r; o++)Wt.copyCoord(t, e + o, n, i + o);\n }, Wt.toString = function() {\n if (1 === arguments.length) {\n var t = arguments[0], e = t.size();\n if (0 === e) return \"()\";\n var n = t.getDimension(), i = new D;\n i.append(\"(\");\n for(var r = 0; r < e; r++){\n r > 0 && i.append(\" \");\n for(var o = 0; o < n; o++)o > 0 && i.append(\",\"), i.append(jt.toString(t.getOrdinate(r, o)));\n }\n return i.append(\")\"), i.toString();\n }\n }, Wt.ensureValidRing = function(t, e) {\n var n = e.size();\n if (0 === n) return e;\n if (n <= 3) return Wt.createClosedRing(t, e, 4);\n return e.getOrdinate(0, V.X) === e.getOrdinate(n - 1, V.X) && e.getOrdinate(0, V.Y) === e.getOrdinate(n - 1, V.Y) ? e : Wt.createClosedRing(t, e, n + 1);\n }, Wt.createClosedRing = function(t, e, n) {\n var i = t.create(n, e.getDimension()), r = e.size();\n Wt.copy(e, 0, i, 0, r);\n for(var o = r; o < n; o++)Wt.copy(e, 0, i, o, 1);\n return i;\n };\n var Kt = function(t) {\n function e(e, n) {\n t.call(this, n), this._points = null, this.init(e);\n }\n t && (e.__proto__ = t), (e.prototype = Object.create(t && t.prototype)).constructor = e;\n var n = {\n serialVersionUID: {\n configurable: !0\n }\n };\n return e.prototype.computeEnvelopeInternal = function() {\n return this.isEmpty() ? new j : this._points.expandEnvelope(new j);\n }, e.prototype.isRing = function() {\n return this.isClosed() && this.isSimple();\n }, e.prototype.getSortIndex = function() {\n return t.SORTINDEX_LINESTRING;\n }, e.prototype.getCoordinates = function() {\n return this._points.toCoordinateArray();\n }, e.prototype.equalsExact = function() {\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n if (!this.isEquivalentClass(e)) return !1;\n var i = e;\n if (this._points.size() !== i._points.size()) return !1;\n for(var r = 0; r < this._points.size(); r++)if (!this.equal(this._points.getCoordinate(r), i._points.getCoordinate(r), n)) return !1;\n return !0;\n }\n return t.prototype.equalsExact.apply(this, arguments);\n }, e.prototype.normalize = function() {\n for(var t = 0; t < Math.trunc(this._points.size() / 2); t++){\n var e = this._points.size() - 1 - t;\n if (!this._points.getCoordinate(t).equals(this._points.getCoordinate(e))) return this._points.getCoordinate(t).compareTo(this._points.getCoordinate(e)) > 0 && Wt.reverse(this._points), null;\n }\n }, e.prototype.getCoordinate = function() {\n return this.isEmpty() ? null : this._points.getCoordinate(0);\n }, e.prototype.getBoundaryDimension = function() {\n return this.isClosed() ? qt.FALSE : 0;\n }, e.prototype.isClosed = function() {\n return !this.isEmpty() && this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints() - 1));\n }, e.prototype.getEndPoint = function() {\n return this.isEmpty() ? null : this.getPointN(this.getNumPoints() - 1);\n }, e.prototype.getDimension = function() {\n return 1;\n }, e.prototype.getLength = function() {\n return at.computeLength(this._points);\n }, e.prototype.getNumPoints = function() {\n return this._points.size();\n }, e.prototype.reverse = function() {\n var t = this._points.copy();\n Wt.reverse(t);\n return this.getFactory().createLineString(t);\n }, e.prototype.compareToSameClass = function() {\n if (1 === arguments.length) {\n for(var t = arguments[0], e = 0, n = 0; e < this._points.size() && n < t._points.size();){\n var i = this._points.getCoordinate(e).compareTo(t._points.getCoordinate(n));\n if (0 !== i) return i;\n e++, n++;\n }\n return e < this._points.size() ? 1 : n < t._points.size() ? -1 : 0;\n }\n if (2 === arguments.length) {\n var r = arguments[0];\n return arguments[1].compare(this._points, r._points);\n }\n }, e.prototype.apply = function() {\n if (T(arguments[0], ft)) for(var t = arguments[0], e = 0; e < this._points.size(); e++)t.filter(this._points.getCoordinate(e));\n else if (T(arguments[0], Ut)) {\n var n = arguments[0];\n if (0 === this._points.size()) return null;\n for(var i = 0; i < this._points.size() && (n.filter(this._points, i), !n.isDone()); i++);\n n.isGeometryChanged() && this.geometryChanged();\n } else if (T(arguments[0], Vt)) arguments[0].filter(this);\n else if (T(arguments[0], lt)) arguments[0].filter(this);\n }, e.prototype.getBoundary = function() {\n return new Yt(this).getBoundary();\n }, e.prototype.isEquivalentClass = function(t) {\n return t instanceof e;\n }, e.prototype.clone = function() {\n var e = t.prototype.clone.call(this);\n return e._points = this._points.clone(), e;\n }, e.prototype.getCoordinateN = function(t) {\n return this._points.getCoordinate(t);\n }, e.prototype.getGeometryType = function() {\n return \"LineString\";\n }, e.prototype.copy = function() {\n return new e(this._points.copy(), this._factory);\n }, e.prototype.getCoordinateSequence = function() {\n return this._points;\n }, e.prototype.isEmpty = function() {\n return 0 === this._points.size();\n }, e.prototype.init = function(t) {\n if (null === t && (t = this.getFactory().getCoordinateSequenceFactory().create([])), 1 === t.size()) throw new m(\"Invalid number of points in LineString (found \" + t.size() + \" - must be 0 or >= 2)\");\n this._points = t;\n }, e.prototype.isCoordinate = function(t) {\n for(var e = 0; e < this._points.size(); e++)if (this._points.getCoordinate(e).equals(t)) return !0;\n return !1;\n }, e.prototype.getStartPoint = function() {\n return this.isEmpty() ? null : this.getPointN(0);\n }, e.prototype.getPointN = function(t) {\n return this.getFactory().createPoint(this._points.getCoordinate(t));\n }, e.prototype.interfaces_ = function() {\n return [\n At\n ];\n }, e.prototype.getClass = function() {\n return e;\n }, n.serialVersionUID.get = function() {\n return 0x2b2b51ba435c8e00;\n }, Object.defineProperties(e, n), e;\n }(ct), Jt = function() {};\n Jt.prototype.interfaces_ = function() {\n return [];\n }, Jt.prototype.getClass = function() {\n return Jt;\n };\n var Qt = function(t) {\n function e(e, n) {\n t.call(this, n), this._coordinates = e || null, this.init(this._coordinates);\n }\n t && (e.__proto__ = t), (e.prototype = Object.create(t && t.prototype)).constructor = e;\n var n = {\n serialVersionUID: {\n configurable: !0\n }\n };\n return e.prototype.computeEnvelopeInternal = function() {\n if (this.isEmpty()) return new j;\n var t = new j;\n return t.expandToInclude(this._coordinates.getX(0), this._coordinates.getY(0)), t;\n }, e.prototype.getSortIndex = function() {\n return t.SORTINDEX_POINT;\n }, e.prototype.getCoordinates = function() {\n return this.isEmpty() ? [] : [\n this.getCoordinate()\n ];\n }, e.prototype.equalsExact = function() {\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n return !!this.isEquivalentClass(e) && (!(!this.isEmpty() || !e.isEmpty()) || this.isEmpty() === e.isEmpty() && this.equal(e.getCoordinate(), this.getCoordinate(), n));\n }\n return t.prototype.equalsExact.apply(this, arguments);\n }, e.prototype.normalize = function() {}, e.prototype.getCoordinate = function() {\n return 0 !== this._coordinates.size() ? this._coordinates.getCoordinate(0) : null;\n }, e.prototype.getBoundaryDimension = function() {\n return qt.FALSE;\n }, e.prototype.getDimension = function() {\n return 0;\n }, e.prototype.getNumPoints = function() {\n return this.isEmpty() ? 0 : 1;\n }, e.prototype.reverse = function() {\n return this.copy();\n }, e.prototype.getX = function() {\n if (null === this.getCoordinate()) throw new Error(\"getX called on empty Point\");\n return this.getCoordinate().x;\n }, e.prototype.compareToSameClass = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n return this.getCoordinate().compareTo(t.getCoordinate());\n }\n if (2 === arguments.length) {\n var e = arguments[0];\n return arguments[1].compare(this._coordinates, e._coordinates);\n }\n }, e.prototype.apply = function() {\n if (T(arguments[0], ft)) {\n var t = arguments[0];\n if (this.isEmpty()) return null;\n t.filter(this.getCoordinate());\n } else if (T(arguments[0], Ut)) {\n var e = arguments[0];\n if (this.isEmpty()) return null;\n e.filter(this._coordinates, 0), e.isGeometryChanged() && this.geometryChanged();\n } else if (T(arguments[0], Vt)) arguments[0].filter(this);\n else if (T(arguments[0], lt)) arguments[0].filter(this);\n }, e.prototype.getBoundary = function() {\n return this.getFactory().createGeometryCollection(null);\n }, e.prototype.clone = function() {\n var e = t.prototype.clone.call(this);\n return e._coordinates = this._coordinates.clone(), e;\n }, e.prototype.getGeometryType = function() {\n return \"Point\";\n }, e.prototype.copy = function() {\n return new e(this._coordinates.copy(), this._factory);\n }, e.prototype.getCoordinateSequence = function() {\n return this._coordinates;\n }, e.prototype.getY = function() {\n if (null === this.getCoordinate()) throw new Error(\"getY called on empty Point\");\n return this.getCoordinate().y;\n }, e.prototype.isEmpty = function() {\n return 0 === this._coordinates.size();\n }, e.prototype.init = function(t) {\n null === t && (t = this.getFactory().getCoordinateSequenceFactory().create([])), et.isTrue(t.size() <= 1), this._coordinates = t;\n }, e.prototype.isSimple = function() {\n return !0;\n }, e.prototype.interfaces_ = function() {\n return [\n Jt\n ];\n }, e.prototype.getClass = function() {\n return e;\n }, n.serialVersionUID.get = function() {\n return 0x44077bad161cbc00;\n }, Object.defineProperties(e, n), e;\n }(ct), Zt = function() {};\n Zt.prototype.interfaces_ = function() {\n return [];\n }, Zt.prototype.getClass = function() {\n return Zt;\n };\n var $t = function(t) {\n function e(e, n, i) {\n if (t.call(this, i), this._shell = null, this._holes = null, null === e && (e = this.getFactory().createLinearRing()), null === n && (n = []), t.hasNullElements(n)) throw new m(\"holes must not contain null elements\");\n if (e.isEmpty() && t.hasNonEmptyElements(n)) throw new m(\"shell is empty but holes are not\");\n this._shell = e, this._holes = n;\n }\n t && (e.__proto__ = t), (e.prototype = Object.create(t && t.prototype)).constructor = e;\n var n = {\n serialVersionUID: {\n configurable: !0\n }\n };\n return e.prototype.computeEnvelopeInternal = function() {\n return this._shell.getEnvelopeInternal();\n }, e.prototype.getSortIndex = function() {\n return t.SORTINDEX_POLYGON;\n }, e.prototype.getCoordinates = function() {\n if (this.isEmpty()) return [];\n for(var t = new Array(this.getNumPoints()).fill(null), e = -1, n = this._shell.getCoordinates(), i = 0; i < n.length; i++)t[++e] = n[i];\n for(var r = 0; r < this._holes.length; r++)for(var o = this._holes[r].getCoordinates(), s = 0; s < o.length; s++)t[++e] = o[s];\n return t;\n }, e.prototype.getArea = function() {\n var t = 0;\n t += Math.abs(at.signedArea(this._shell.getCoordinateSequence()));\n for(var e = 0; e < this._holes.length; e++)t -= Math.abs(at.signedArea(this._holes[e].getCoordinateSequence()));\n return t;\n }, e.prototype.isRectangle = function() {\n if (0 !== this.getNumInteriorRing()) return !1;\n if (null === this._shell) return !1;\n if (5 !== this._shell.getNumPoints()) return !1;\n for(var t = this._shell.getCoordinateSequence(), e = this.getEnvelopeInternal(), n = 0; n < 5; n++){\n var i = t.getX(n);\n if (i !== e.getMinX() && i !== e.getMaxX()) return !1;\n var r = t.getY(n);\n if (r !== e.getMinY() && r !== e.getMaxY()) return !1;\n }\n for(var o = t.getX(0), s = t.getY(0), a = 1; a <= 4; a++){\n var u = t.getX(a), l = t.getY(a);\n if (u !== o === (l !== s)) return !1;\n o = u, s = l;\n }\n return !0;\n }, e.prototype.equalsExact = function() {\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n if (!this.isEquivalentClass(e)) return !1;\n var i = e, r = this._shell, o = i._shell;\n if (!r.equalsExact(o, n)) return !1;\n if (this._holes.length !== i._holes.length) return !1;\n for(var s = 0; s < this._holes.length; s++)if (!this._holes[s].equalsExact(i._holes[s], n)) return !1;\n return !0;\n }\n return t.prototype.equalsExact.apply(this, arguments);\n }, e.prototype.normalize = function() {\n if (0 === arguments.length) {\n this.normalize(this._shell, !0);\n for(var t = 0; t < this._holes.length; t++)this.normalize(this._holes[t], !1);\n Gt.sort(this._holes);\n } else if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n if (e.isEmpty()) return null;\n var i = new Array(e.getCoordinates().length - 1).fill(null);\n Y.arraycopy(e.getCoordinates(), 0, i, 0, i.length);\n var r = Lt.minCoordinate(e.getCoordinates());\n Lt.scroll(i, r), Y.arraycopy(i, 0, e.getCoordinates(), 0, i.length), e.getCoordinates()[i.length] = i[0], at.isCCW(e.getCoordinates()) === n && Lt.reverse(e.getCoordinates());\n }\n }, e.prototype.getCoordinate = function() {\n return this._shell.getCoordinate();\n }, e.prototype.getNumInteriorRing = function() {\n return this._holes.length;\n }, e.prototype.getBoundaryDimension = function() {\n return 1;\n }, e.prototype.getDimension = function() {\n return 2;\n }, e.prototype.getLength = function() {\n var t = 0;\n t += this._shell.getLength();\n for(var e = 0; e < this._holes.length; e++)t += this._holes[e].getLength();\n return t;\n }, e.prototype.getNumPoints = function() {\n for(var t = this._shell.getNumPoints(), e = 0; e < this._holes.length; e++)t += this._holes[e].getNumPoints();\n return t;\n }, e.prototype.reverse = function() {\n var t = this.copy();\n t._shell = this._shell.copy().reverse(), t._holes = new Array(this._holes.length).fill(null);\n for(var e = 0; e < this._holes.length; e++)t._holes[e] = this._holes[e].copy().reverse();\n return t;\n }, e.prototype.convexHull = function() {\n return this.getExteriorRing().convexHull();\n }, e.prototype.compareToSameClass = function() {\n if (1 === arguments.length) {\n var t = arguments[0], e = this._shell, n = t._shell;\n return e.compareToSameClass(n);\n }\n if (2 === arguments.length) {\n var i = arguments[0], r = arguments[1], o = i, s = this._shell, a = o._shell, u = s.compareToSameClass(a, r);\n if (0 !== u) return u;\n for(var l = this.getNumInteriorRing(), c = o.getNumInteriorRing(), p = 0; p < l && p < c;){\n var h = this.getInteriorRingN(p), f = o.getInteriorRingN(p), g = h.compareToSameClass(f, r);\n if (0 !== g) return g;\n p++;\n }\n return p < l ? 1 : p < c ? -1 : 0;\n }\n }, e.prototype.apply = function(t) {\n if (T(t, ft)) {\n this._shell.apply(t);\n for(var e = 0; e < this._holes.length; e++)this._holes[e].apply(t);\n } else if (T(t, Ut)) {\n if (this._shell.apply(t), !t.isDone()) for(var n = 0; n < this._holes.length && (this._holes[n].apply(t), !t.isDone()); n++);\n t.isGeometryChanged() && this.geometryChanged();\n } else if (T(t, Vt)) t.filter(this);\n else if (T(t, lt)) {\n t.filter(this), this._shell.apply(t);\n for(var i = 0; i < this._holes.length; i++)this._holes[i].apply(t);\n }\n }, e.prototype.getBoundary = function() {\n if (this.isEmpty()) return this.getFactory().createMultiLineString();\n var t = new Array(this._holes.length + 1).fill(null);\n t[0] = this._shell;\n for(var e = 0; e < this._holes.length; e++)t[e + 1] = this._holes[e];\n return t.length <= 1 ? this.getFactory().createLinearRing(t[0].getCoordinateSequence()) : this.getFactory().createMultiLineString(t);\n }, e.prototype.clone = function() {\n var e = t.prototype.clone.call(this);\n e._shell = this._shell.clone(), e._holes = new Array(this._holes.length).fill(null);\n for(var n = 0; n < this._holes.length; n++)e._holes[n] = this._holes[n].clone();\n return e;\n }, e.prototype.getGeometryType = function() {\n return \"Polygon\";\n }, e.prototype.copy = function() {\n for(var t = this._shell.copy(), n = new Array(this._holes.length).fill(null), i = 0; i < n.length; i++)n[i] = this._holes[i].copy();\n return new e(t, n, this._factory);\n }, e.prototype.getExteriorRing = function() {\n return this._shell;\n }, e.prototype.isEmpty = function() {\n return this._shell.isEmpty();\n }, e.prototype.getInteriorRingN = function(t) {\n return this._holes[t];\n }, e.prototype.interfaces_ = function() {\n return [\n Zt\n ];\n }, e.prototype.getClass = function() {\n return e;\n }, n.serialVersionUID.get = function() {\n return -3494792200821764600;\n }, Object.defineProperties(e, n), e;\n }(ct), te = function(t) {\n function e() {\n t.apply(this, arguments);\n }\n t && (e.__proto__ = t), (e.prototype = Object.create(t && t.prototype)).constructor = e;\n var n = {\n serialVersionUID: {\n configurable: !0\n }\n };\n return e.prototype.getSortIndex = function() {\n return ct.SORTINDEX_MULTIPOINT;\n }, e.prototype.isValid = function() {\n return !0;\n }, e.prototype.equalsExact = function() {\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n return !!this.isEquivalentClass(e) && t.prototype.equalsExact.call(this, e, n);\n }\n return t.prototype.equalsExact.apply(this, arguments);\n }, e.prototype.getCoordinate = function() {\n if (1 === arguments.length) {\n var e = arguments[0];\n return this._geometries[e].getCoordinate();\n }\n return t.prototype.getCoordinate.apply(this, arguments);\n }, e.prototype.getBoundaryDimension = function() {\n return qt.FALSE;\n }, e.prototype.getDimension = function() {\n return 0;\n }, e.prototype.getBoundary = function() {\n return this.getFactory().createGeometryCollection(null);\n }, e.prototype.getGeometryType = function() {\n return \"MultiPoint\";\n }, e.prototype.copy = function() {\n for(var t = new Array(this._geometries.length).fill(null), n = 0; n < t.length; n++)t[n] = this._geometries[n].copy();\n return new e(t, this._factory);\n }, e.prototype.interfaces_ = function() {\n return [\n Jt\n ];\n }, e.prototype.getClass = function() {\n return e;\n }, n.serialVersionUID.get = function() {\n return -8048474874175356000;\n }, Object.defineProperties(e, n), e;\n }(zt), ee = function(t) {\n function e(e, n) {\n e instanceof C && n instanceof _e && (e = n.getCoordinateSequenceFactory().create(e)), t.call(this, e, n), this.validateConstruction();\n }\n t && (e.__proto__ = t), (e.prototype = Object.create(t && t.prototype)).constructor = e;\n var n = {\n MINIMUM_VALID_SIZE: {\n configurable: !0\n },\n serialVersionUID: {\n configurable: !0\n }\n };\n return e.prototype.getSortIndex = function() {\n return ct.SORTINDEX_LINEARRING;\n }, e.prototype.getBoundaryDimension = function() {\n return qt.FALSE;\n }, e.prototype.isClosed = function() {\n return !!this.isEmpty() || t.prototype.isClosed.call(this);\n }, e.prototype.reverse = function() {\n var t = this._points.copy();\n Wt.reverse(t);\n return this.getFactory().createLinearRing(t);\n }, e.prototype.validateConstruction = function() {\n if (!this.isEmpty() && !t.prototype.isClosed.call(this)) throw new m(\"Points of LinearRing do not form a closed linestring\");\n if (this.getCoordinateSequence().size() >= 1 && this.getCoordinateSequence().size() < e.MINIMUM_VALID_SIZE) throw new m(\"Invalid number of points in LinearRing (found \" + this.getCoordinateSequence().size() + \" - must be 0 or >= 4)\");\n }, e.prototype.getGeometryType = function() {\n return \"LinearRing\";\n }, e.prototype.copy = function() {\n return new e(this._points.copy(), this._factory);\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, n.MINIMUM_VALID_SIZE.get = function() {\n return 4;\n }, n.serialVersionUID.get = function() {\n return -4261142084085851600;\n }, Object.defineProperties(e, n), e;\n }(Kt), ne = function(t) {\n function e() {\n t.apply(this, arguments);\n }\n t && (e.__proto__ = t), (e.prototype = Object.create(t && t.prototype)).constructor = e;\n var n = {\n serialVersionUID: {\n configurable: !0\n }\n };\n return e.prototype.getSortIndex = function() {\n return ct.SORTINDEX_MULTIPOLYGON;\n }, e.prototype.equalsExact = function() {\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n return !!this.isEquivalentClass(e) && t.prototype.equalsExact.call(this, e, n);\n }\n return t.prototype.equalsExact.apply(this, arguments);\n }, e.prototype.getBoundaryDimension = function() {\n return 1;\n }, e.prototype.getDimension = function() {\n return 2;\n }, e.prototype.reverse = function() {\n for(var t = this._geometries.length, e = new Array(t).fill(null), n = 0; n < this._geometries.length; n++)e[n] = this._geometries[n].reverse();\n return this.getFactory().createMultiPolygon(e);\n }, e.prototype.getBoundary = function() {\n if (this.isEmpty()) return this.getFactory().createMultiLineString();\n for(var t = new Nt, e = 0; e < this._geometries.length; e++)for(var n = this._geometries[e].getBoundary(), i = 0; i < n.getNumGeometries(); i++)t.add(n.getGeometryN(i));\n var r = new Array(t.size()).fill(null);\n return this.getFactory().createMultiLineString(t.toArray(r));\n }, e.prototype.getGeometryType = function() {\n return \"MultiPolygon\";\n }, e.prototype.copy = function() {\n for(var t = new Array(this._geometries.length).fill(null), n = 0; n < t.length; n++)t[n] = this._geometries[n].copy();\n return new e(t, this._factory);\n }, e.prototype.interfaces_ = function() {\n return [\n Zt\n ];\n }, e.prototype.getClass = function() {\n return e;\n }, n.serialVersionUID.get = function() {\n return -551033529766975900;\n }, Object.defineProperties(e, n), e;\n }(zt), ie = function(t) {\n this._factory = t || null, this._isUserDataCopied = !1;\n }, re = {\n NoOpGeometryOperation: {\n configurable: !0\n },\n CoordinateOperation: {\n configurable: !0\n },\n CoordinateSequenceOperation: {\n configurable: !0\n }\n };\n ie.prototype.setCopyUserData = function(t) {\n this._isUserDataCopied = t;\n }, ie.prototype.edit = function(t, e) {\n if (null === t) return null;\n var n = this.editInternal(t, e);\n return this._isUserDataCopied && n.setUserData(t.getUserData()), n;\n }, ie.prototype.editInternal = function(t, e) {\n return null === this._factory && (this._factory = t.getFactory()), t instanceof zt ? this.editGeometryCollection(t, e) : t instanceof $t ? this.editPolygon(t, e) : t instanceof Qt ? e.edit(t, this._factory) : t instanceof Kt ? e.edit(t, this._factory) : (et.shouldNeverReachHere(\"Unsupported Geometry class: \" + t.getClass().getName()), null);\n }, ie.prototype.editGeometryCollection = function(t, e) {\n for(var n = e.edit(t, this._factory), i = new Nt, r = 0; r < n.getNumGeometries(); r++){\n var o = this.edit(n.getGeometryN(r), e);\n null === o || o.isEmpty() || i.add(o);\n }\n return n.getClass() === te ? this._factory.createMultiPoint(i.toArray([])) : n.getClass() === Xt ? this._factory.createMultiLineString(i.toArray([])) : n.getClass() === ne ? this._factory.createMultiPolygon(i.toArray([])) : this._factory.createGeometryCollection(i.toArray([]));\n }, ie.prototype.editPolygon = function(t, e) {\n var n = e.edit(t, this._factory);\n if (null === n && (n = this._factory.createPolygon(null)), n.isEmpty()) return n;\n var i = this.edit(n.getExteriorRing(), e);\n if (null === i || i.isEmpty()) return this._factory.createPolygon();\n for(var r = new Nt, o = 0; o < n.getNumInteriorRing(); o++){\n var s = this.edit(n.getInteriorRingN(o), e);\n null === s || s.isEmpty() || r.add(s);\n }\n return this._factory.createPolygon(i, r.toArray([]));\n }, ie.prototype.interfaces_ = function() {\n return [];\n }, ie.prototype.getClass = function() {\n return ie;\n }, ie.GeometryEditorOperation = function() {}, re.NoOpGeometryOperation.get = function() {\n return oe;\n }, re.CoordinateOperation.get = function() {\n return se;\n }, re.CoordinateSequenceOperation.get = function() {\n return ae;\n }, Object.defineProperties(ie, re);\n var oe = function() {};\n oe.prototype.edit = function(t, e) {\n return t;\n }, oe.prototype.interfaces_ = function() {\n return [\n ie.GeometryEditorOperation\n ];\n }, oe.prototype.getClass = function() {\n return oe;\n };\n var se = function() {};\n se.prototype.edit = function(t, e) {\n var n = this.editCoordinates(t.getCoordinates(), t);\n return null === n ? t : t instanceof ee ? e.createLinearRing(n) : t instanceof Kt ? e.createLineString(n) : t instanceof Qt ? n.length > 0 ? e.createPoint(n[0]) : e.createPoint() : t;\n }, se.prototype.interfaces_ = function() {\n return [\n ie.GeometryEditorOperation\n ];\n }, se.prototype.getClass = function() {\n return se;\n };\n var ae = function() {};\n ae.prototype.edit = function(t, e) {\n return t instanceof ee ? e.createLinearRing(this.edit(t.getCoordinateSequence(), t)) : t instanceof Kt ? e.createLineString(this.edit(t.getCoordinateSequence(), t)) : t instanceof Qt ? e.createPoint(this.edit(t.getCoordinateSequence(), t)) : t;\n }, ae.prototype.interfaces_ = function() {\n return [\n ie.GeometryEditorOperation\n ];\n }, ae.prototype.getClass = function() {\n return ae;\n };\n var ue = function() {\n if (this._dimension = 3, this._coordinates = null, 1 === arguments.length) {\n if (arguments[0] instanceof Array) this._coordinates = arguments[0], this._dimension = 3;\n else if (Number.isInteger(arguments[0])) {\n var t = arguments[0];\n this._coordinates = new Array(t).fill(null);\n for(var e = 0; e < t; e++)this._coordinates[e] = new C;\n } else if (T(arguments[0], V)) {\n var n = arguments[0];\n if (null === n) return this._coordinates = new Array(0).fill(null), null;\n this._dimension = n.getDimension(), this._coordinates = new Array(n.size()).fill(null);\n for(var i = 0; i < this._coordinates.length; i++)this._coordinates[i] = n.getCoordinateCopy(i);\n }\n } else if (2 === arguments.length) {\n if (arguments[0] instanceof Array && Number.isInteger(arguments[1])) {\n var r = arguments[0], o = arguments[1];\n this._coordinates = r, this._dimension = o, null === r && (this._coordinates = new Array(0).fill(null));\n } else if (Number.isInteger(arguments[0]) && Number.isInteger(arguments[1])) {\n var s = arguments[0], a = arguments[1];\n this._coordinates = new Array(s).fill(null), this._dimension = a;\n for(var u = 0; u < s; u++)this._coordinates[u] = new C;\n }\n }\n }, le = {\n serialVersionUID: {\n configurable: !0\n }\n };\n ue.prototype.setOrdinate = function(t, e, n) {\n switch(e){\n case V.X:\n this._coordinates[t].x = n;\n break;\n case V.Y:\n this._coordinates[t].y = n;\n break;\n case V.Z:\n this._coordinates[t].z = n;\n break;\n default:\n throw new m(\"invalid ordinateIndex\");\n }\n }, ue.prototype.size = function() {\n return this._coordinates.length;\n }, ue.prototype.getOrdinate = function(t, e) {\n switch(e){\n case V.X:\n return this._coordinates[t].x;\n case V.Y:\n return this._coordinates[t].y;\n case V.Z:\n return this._coordinates[t].z;\n }\n return v.NaN;\n }, ue.prototype.getCoordinate = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n return this._coordinates[t];\n }\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n n.x = this._coordinates[e].x, n.y = this._coordinates[e].y, n.z = this._coordinates[e].z;\n }\n }, ue.prototype.getCoordinateCopy = function(t) {\n return new C(this._coordinates[t]);\n }, ue.prototype.getDimension = function() {\n return this._dimension;\n }, ue.prototype.getX = function(t) {\n return this._coordinates[t].x;\n }, ue.prototype.clone = function() {\n for(var t = new Array(this.size()).fill(null), e = 0; e < this._coordinates.length; e++)t[e] = this._coordinates[e].clone();\n return new ue(t, this._dimension);\n }, ue.prototype.expandEnvelope = function(t) {\n for(var e = 0; e < this._coordinates.length; e++)t.expandToInclude(this._coordinates[e]);\n return t;\n }, ue.prototype.copy = function() {\n for(var t = new Array(this.size()).fill(null), e = 0; e < this._coordinates.length; e++)t[e] = this._coordinates[e].copy();\n return new ue(t, this._dimension);\n }, ue.prototype.toString = function() {\n if (this._coordinates.length > 0) {\n var t = new D(17 * this._coordinates.length);\n t.append(\"(\"), t.append(this._coordinates[0]);\n for(var e = 1; e < this._coordinates.length; e++)t.append(\", \"), t.append(this._coordinates[e]);\n return t.append(\")\"), t.toString();\n }\n return \"()\";\n }, ue.prototype.getY = function(t) {\n return this._coordinates[t].y;\n }, ue.prototype.toCoordinateArray = function() {\n return this._coordinates;\n }, ue.prototype.interfaces_ = function() {\n return [\n V,\n e\n ];\n }, ue.prototype.getClass = function() {\n return ue;\n }, le.serialVersionUID.get = function() {\n return -915438501601840600;\n }, Object.defineProperties(ue, le);\n var ce = function() {}, pe = {\n serialVersionUID: {\n configurable: !0\n },\n instanceObject: {\n configurable: !0\n }\n };\n ce.prototype.readResolve = function() {\n return ce.instance();\n }, ce.prototype.create = function() {\n if (1 === arguments.length) {\n if (arguments[0] instanceof Array) {\n var t = arguments[0];\n return new ue(t);\n }\n if (T(arguments[0], V)) {\n var e = arguments[0];\n return new ue(e);\n }\n } else if (2 === arguments.length) {\n var n = arguments[0], i = arguments[1];\n return i > 3 && (i = 3), i < 2 ? new ue(n) : new ue(n, i);\n }\n }, ce.prototype.interfaces_ = function() {\n return [\n b,\n e\n ];\n }, ce.prototype.getClass = function() {\n return ce;\n }, ce.instance = function() {\n return ce.instanceObject;\n }, pe.serialVersionUID.get = function() {\n return -4099577099607551500;\n }, pe.instanceObject.get = function() {\n return new ce;\n }, Object.defineProperties(ce, pe);\n var he = function(t) {\n function e() {\n t.call(this), this.map_ = new Map;\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.get = function(t) {\n return this.map_.get(t) || null;\n }, e.prototype.put = function(t, e) {\n return this.map_.set(t, e), e;\n }, e.prototype.values = function() {\n for(var t = new Nt, e = this.map_.values(), n = e.next(); !n.done;)t.add(n.value), n = e.next();\n return t;\n }, e.prototype.entrySet = function() {\n var t = new Pt;\n return this.map_.entries().forEach(function(e) {\n return t.add(e);\n }), t;\n }, e.prototype.size = function() {\n return this.map_.size();\n }, e;\n }(Tt), fe = function t() {\n if (this._modelType = null, this._scale = null, 0 === arguments.length) this._modelType = t.FLOATING;\n else if (1 === arguments.length) {\n if (arguments[0] instanceof de) {\n var e = arguments[0];\n this._modelType = e, e === t.FIXED && this.setScale(1);\n } else if (\"number\" == typeof arguments[0]) {\n var n = arguments[0];\n this._modelType = t.FIXED, this.setScale(n);\n } else if (arguments[0] instanceof t) {\n var i = arguments[0];\n this._modelType = i._modelType, this._scale = i._scale;\n }\n }\n }, ge = {\n serialVersionUID: {\n configurable: !0\n },\n maximumPreciseValue: {\n configurable: !0\n }\n };\n fe.prototype.equals = function(t) {\n if (!(t instanceof fe)) return !1;\n var e = t;\n return this._modelType === e._modelType && this._scale === e._scale;\n }, fe.prototype.compareTo = function(t) {\n var e = t, n = this.getMaximumSignificantDigits(), i = e.getMaximumSignificantDigits();\n return new M(n).compareTo(new M(i));\n }, fe.prototype.getScale = function() {\n return this._scale;\n }, fe.prototype.isFloating = function() {\n return this._modelType === fe.FLOATING || this._modelType === fe.FLOATING_SINGLE;\n }, fe.prototype.getType = function() {\n return this._modelType;\n }, fe.prototype.toString = function() {\n var t = \"UNKNOWN\";\n return this._modelType === fe.FLOATING ? t = \"Floating\" : this._modelType === fe.FLOATING_SINGLE ? t = \"Floating-Single\" : this._modelType === fe.FIXED && (t = \"Fixed (Scale=\" + this.getScale() + \")\"), t;\n }, fe.prototype.makePrecise = function() {\n if (\"number\" == typeof arguments[0]) {\n var t = arguments[0];\n if (v.isNaN(t)) return t;\n if (this._modelType === fe.FLOATING_SINGLE) return t;\n return this._modelType === fe.FIXED ? Math.round(t * this._scale) / this._scale : t;\n }\n if (arguments[0] instanceof C) {\n var e = arguments[0];\n if (this._modelType === fe.FLOATING) return null;\n e.x = this.makePrecise(e.x), e.y = this.makePrecise(e.y);\n }\n }, fe.prototype.getMaximumSignificantDigits = function() {\n var t = 16;\n return this._modelType === fe.FLOATING ? t = 16 : this._modelType === fe.FLOATING_SINGLE ? t = 6 : this._modelType === fe.FIXED && (t = 1 + Math.trunc(Math.ceil(Math.log(this.getScale()) / Math.log(10)))), t;\n }, fe.prototype.setScale = function(t) {\n this._scale = Math.abs(t);\n }, fe.prototype.interfaces_ = function() {\n return [\n e,\n E\n ];\n }, fe.prototype.getClass = function() {\n return fe;\n }, fe.mostPrecise = function(t, e) {\n return t.compareTo(e) >= 0 ? t : e;\n }, ge.serialVersionUID.get = function() {\n return 0x6bee6404e9a25c00;\n }, ge.maximumPreciseValue.get = function() {\n return 9007199254740992;\n }, Object.defineProperties(fe, ge);\n var de = function t(e) {\n this._name = e || null, t.nameToTypeMap.put(e, this);\n }, ye = {\n serialVersionUID: {\n configurable: !0\n },\n nameToTypeMap: {\n configurable: !0\n }\n };\n de.prototype.readResolve = function() {\n return de.nameToTypeMap.get(this._name);\n }, de.prototype.toString = function() {\n return this._name;\n }, de.prototype.interfaces_ = function() {\n return [\n e\n ];\n }, de.prototype.getClass = function() {\n return de;\n }, ye.serialVersionUID.get = function() {\n return -5528602631731590000;\n }, ye.nameToTypeMap.get = function() {\n return new he;\n }, Object.defineProperties(de, ye), fe.Type = de, fe.FIXED = new de(\"FIXED\"), fe.FLOATING = new de(\"FLOATING\"), fe.FLOATING_SINGLE = new de(\"FLOATING SINGLE\");\n var _e = function t() {\n this._precisionModel = new fe, this._SRID = 0, this._coordinateSequenceFactory = t.getDefaultCoordinateSequenceFactory(), 0 === arguments.length || (1 === arguments.length ? T(arguments[0], b) ? this._coordinateSequenceFactory = arguments[0] : arguments[0] instanceof fe && (this._precisionModel = arguments[0]) : 2 === arguments.length ? (this._precisionModel = arguments[0], this._SRID = arguments[1]) : 3 === arguments.length && (this._precisionModel = arguments[0], this._SRID = arguments[1], this._coordinateSequenceFactory = arguments[2]));\n }, me = {\n serialVersionUID: {\n configurable: !0\n }\n };\n _e.prototype.toGeometry = function(t) {\n return t.isNull() ? this.createPoint(null) : t.getMinX() === t.getMaxX() && t.getMinY() === t.getMaxY() ? this.createPoint(new C(t.getMinX(), t.getMinY())) : t.getMinX() === t.getMaxX() || t.getMinY() === t.getMaxY() ? this.createLineString([\n new C(t.getMinX(), t.getMinY()),\n new C(t.getMaxX(), t.getMaxY())\n ]) : this.createPolygon(this.createLinearRing([\n new C(t.getMinX(), t.getMinY()),\n new C(t.getMinX(), t.getMaxY()),\n new C(t.getMaxX(), t.getMaxY()),\n new C(t.getMaxX(), t.getMinY()),\n new C(t.getMinX(), t.getMinY())\n ]), null);\n }, _e.prototype.createLineString = function(t) {\n return t ? t instanceof Array ? new Kt(this.getCoordinateSequenceFactory().create(t), this) : T(t, V) ? new Kt(t, this) : void 0 : new Kt(this.getCoordinateSequenceFactory().create([]), this);\n }, _e.prototype.createMultiLineString = function() {\n if (0 === arguments.length) return new Xt(null, this);\n if (1 === arguments.length) {\n var t = arguments[0];\n return new Xt(t, this);\n }\n }, _e.prototype.buildGeometry = function(t) {\n for(var e = null, n = !1, i = !1, r = t.iterator(); r.hasNext();){\n var o = r.next(), s = o.getClass();\n null === e && (e = s), s !== e && (n = !0), o.isGeometryCollectionOrDerived() && (i = !0);\n }\n if (null === e) return this.createGeometryCollection();\n if (n || i) return this.createGeometryCollection(_e.toGeometryArray(t));\n var a = t.iterator().next();\n if (t.size() > 1) {\n if (a instanceof $t) return this.createMultiPolygon(_e.toPolygonArray(t));\n if (a instanceof Kt) return this.createMultiLineString(_e.toLineStringArray(t));\n if (a instanceof Qt) return this.createMultiPoint(_e.toPointArray(t));\n et.shouldNeverReachHere(\"Unhandled class: \" + a.getClass().getName());\n }\n return a;\n }, _e.prototype.createMultiPointFromCoords = function(t) {\n return this.createMultiPoint(null !== t ? this.getCoordinateSequenceFactory().create(t) : null);\n }, _e.prototype.createPoint = function() {\n if (0 === arguments.length) return this.createPoint(this.getCoordinateSequenceFactory().create([]));\n if (1 === arguments.length) {\n if (arguments[0] instanceof C) {\n var t = arguments[0];\n return this.createPoint(null !== t ? this.getCoordinateSequenceFactory().create([\n t\n ]) : null);\n }\n if (T(arguments[0], V)) {\n var e = arguments[0];\n return new Qt(e, this);\n }\n }\n }, _e.prototype.getCoordinateSequenceFactory = function() {\n return this._coordinateSequenceFactory;\n }, _e.prototype.createPolygon = function() {\n if (0 === arguments.length) return new $t(null, null, this);\n if (1 === arguments.length) {\n if (T(arguments[0], V)) {\n var t = arguments[0];\n return this.createPolygon(this.createLinearRing(t));\n }\n if (arguments[0] instanceof Array) {\n var e = arguments[0];\n return this.createPolygon(this.createLinearRing(e));\n }\n if (arguments[0] instanceof ee) {\n var n = arguments[0];\n return this.createPolygon(n, null);\n }\n } else if (2 === arguments.length) {\n var i = arguments[0], r = arguments[1];\n return new $t(i, r, this);\n }\n }, _e.prototype.getSRID = function() {\n return this._SRID;\n }, _e.prototype.createGeometryCollection = function() {\n if (0 === arguments.length) return new zt(null, this);\n if (1 === arguments.length) {\n var t = arguments[0];\n return new zt(t, this);\n }\n }, _e.prototype.createGeometry = function(t) {\n return new ie(this).edit(t, {\n edit: function() {\n if (2 === arguments.length) {\n var t = arguments[0];\n return this._coordinateSequenceFactory.create(t);\n }\n }\n });\n }, _e.prototype.getPrecisionModel = function() {\n return this._precisionModel;\n }, _e.prototype.createLinearRing = function() {\n if (0 === arguments.length) return this.createLinearRing(this.getCoordinateSequenceFactory().create([]));\n if (1 === arguments.length) {\n if (arguments[0] instanceof Array) {\n var t = arguments[0];\n return this.createLinearRing(null !== t ? this.getCoordinateSequenceFactory().create(t) : null);\n }\n if (T(arguments[0], V)) {\n var e = arguments[0];\n return new ee(e, this);\n }\n }\n }, _e.prototype.createMultiPolygon = function() {\n if (0 === arguments.length) return new ne(null, this);\n if (1 === arguments.length) {\n var t = arguments[0];\n return new ne(t, this);\n }\n }, _e.prototype.createMultiPoint = function() {\n if (0 === arguments.length) return new te(null, this);\n if (1 === arguments.length) {\n if (arguments[0] instanceof Array) {\n var t = arguments[0];\n return new te(t, this);\n }\n if (arguments[0] instanceof Array) {\n var e = arguments[0];\n return this.createMultiPoint(null !== e ? this.getCoordinateSequenceFactory().create(e) : null);\n }\n if (T(arguments[0], V)) {\n var n = arguments[0];\n if (null === n) return this.createMultiPoint(new Array(0).fill(null));\n for(var i = new Array(n.size()).fill(null), r = 0; r < n.size(); r++){\n var o = this.getCoordinateSequenceFactory().create(1, n.getDimension());\n Wt.copy(n, r, o, 0, 1), i[r] = this.createPoint(o);\n }\n return this.createMultiPoint(i);\n }\n }\n }, _e.prototype.interfaces_ = function() {\n return [\n e\n ];\n }, _e.prototype.getClass = function() {\n return _e;\n }, _e.toMultiPolygonArray = function(t) {\n var e = new Array(t.size()).fill(null);\n return t.toArray(e);\n }, _e.toGeometryArray = function(t) {\n if (null === t) return null;\n var e = new Array(t.size()).fill(null);\n return t.toArray(e);\n }, _e.getDefaultCoordinateSequenceFactory = function() {\n return ce.instance();\n }, _e.toMultiLineStringArray = function(t) {\n var e = new Array(t.size()).fill(null);\n return t.toArray(e);\n }, _e.toLineStringArray = function(t) {\n var e = new Array(t.size()).fill(null);\n return t.toArray(e);\n }, _e.toMultiPointArray = function(t) {\n var e = new Array(t.size()).fill(null);\n return t.toArray(e);\n }, _e.toLinearRingArray = function(t) {\n var e = new Array(t.size()).fill(null);\n return t.toArray(e);\n }, _e.toPointArray = function(t) {\n var e = new Array(t.size()).fill(null);\n return t.toArray(e);\n }, _e.toPolygonArray = function(t) {\n var e = new Array(t.size()).fill(null);\n return t.toArray(e);\n }, _e.createPointFromInternalCoord = function(t, e) {\n return e.getPrecisionModel().makePrecise(t), e.getFactory().createPoint(t);\n }, me.serialVersionUID.get = function() {\n return -6820524753094096000;\n }, Object.defineProperties(_e, me);\n var ve = [\n \"Point\",\n \"MultiPoint\",\n \"LineString\",\n \"MultiLineString\",\n \"Polygon\",\n \"MultiPolygon\"\n ], Ie = function(t) {\n this.geometryFactory = t || new _e;\n };\n Ie.prototype.read = function(t) {\n var e, n = (e = \"string\" == typeof t ? JSON.parse(t) : t).type;\n if (!Ee[n]) throw new Error(\"Unknown GeoJSON type: \" + e.type);\n return -1 !== ve.indexOf(n) ? Ee[n].apply(this, [\n e.coordinates\n ]) : \"GeometryCollection\" === n ? Ee[n].apply(this, [\n e.geometries\n ]) : Ee[n].apply(this, [\n e\n ]);\n }, Ie.prototype.write = function(t) {\n var e = t.getGeometryType();\n if (!xe[e]) throw new Error(\"Geometry is not supported\");\n return xe[e].apply(this, [\n t\n ]);\n };\n var Ee = {\n Feature: function(t) {\n var e = {};\n for(var n in t)e[n] = t[n];\n if (t.geometry) {\n var i = t.geometry.type;\n if (!Ee[i]) throw new Error(\"Unknown GeoJSON type: \" + t.type);\n e.geometry = this.read(t.geometry);\n }\n return t.bbox && (e.bbox = Ee.bbox.apply(this, [\n t.bbox\n ])), e;\n },\n FeatureCollection: function(t) {\n var e = {};\n if (t.features) {\n e.features = [];\n for(var n = 0; n < t.features.length; ++n)e.features.push(this.read(t.features[n]));\n }\n return t.bbox && (e.bbox = this.parse.bbox.apply(this, [\n t.bbox\n ])), e;\n },\n coordinates: function(t) {\n for(var e = [], n = 0; n < t.length; ++n){\n var i = t[n];\n e.push(new C(i[0], i[1]));\n }\n return e;\n },\n bbox: function(t) {\n return this.geometryFactory.createLinearRing([\n new C(t[0], t[1]),\n new C(t[2], t[1]),\n new C(t[2], t[3]),\n new C(t[0], t[3]),\n new C(t[0], t[1])\n ]);\n },\n Point: function(t) {\n var e = new C(t[0], t[1]);\n return this.geometryFactory.createPoint(e);\n },\n MultiPoint: function(t) {\n for(var e = [], n = 0; n < t.length; ++n)e.push(Ee.Point.apply(this, [\n t[n]\n ]));\n return this.geometryFactory.createMultiPoint(e);\n },\n LineString: function(t) {\n var e = Ee.coordinates.apply(this, [\n t\n ]);\n return this.geometryFactory.createLineString(e);\n },\n MultiLineString: function(t) {\n for(var e = [], n = 0; n < t.length; ++n)e.push(Ee.LineString.apply(this, [\n t[n]\n ]));\n return this.geometryFactory.createMultiLineString(e);\n },\n Polygon: function(t) {\n for(var e = Ee.coordinates.apply(this, [\n t[0]\n ]), n = this.geometryFactory.createLinearRing(e), i = [], r = 1; r < t.length; ++r){\n var o = t[r], s = Ee.coordinates.apply(this, [\n o\n ]), a = this.geometryFactory.createLinearRing(s);\n i.push(a);\n }\n return this.geometryFactory.createPolygon(n, i);\n },\n MultiPolygon: function(t) {\n for(var e = [], n = 0; n < t.length; ++n){\n var i = t[n];\n e.push(Ee.Polygon.apply(this, [\n i\n ]));\n }\n return this.geometryFactory.createMultiPolygon(e);\n },\n GeometryCollection: function(t) {\n for(var e = [], n = 0; n < t.length; ++n){\n var i = t[n];\n e.push(this.read(i));\n }\n return this.geometryFactory.createGeometryCollection(e);\n }\n }, xe = {\n coordinate: function(t) {\n return [\n t.x,\n t.y\n ];\n },\n Point: function(t) {\n return {\n type: \"Point\",\n coordinates: xe.coordinate.apply(this, [\n t.getCoordinate()\n ])\n };\n },\n MultiPoint: function(t) {\n for(var e = [], n = 0; n < t._geometries.length; ++n){\n var i = t._geometries[n], r = xe.Point.apply(this, [\n i\n ]);\n e.push(r.coordinates);\n }\n return {\n type: \"MultiPoint\",\n coordinates: e\n };\n },\n LineString: function(t) {\n for(var e = [], n = t.getCoordinates(), i = 0; i < n.length; ++i){\n var r = n[i];\n e.push(xe.coordinate.apply(this, [\n r\n ]));\n }\n return {\n type: \"LineString\",\n coordinates: e\n };\n },\n MultiLineString: function(t) {\n for(var e = [], n = 0; n < t._geometries.length; ++n){\n var i = t._geometries[n], r = xe.LineString.apply(this, [\n i\n ]);\n e.push(r.coordinates);\n }\n return {\n type: \"MultiLineString\",\n coordinates: e\n };\n },\n Polygon: function(t) {\n var e = [], n = xe.LineString.apply(this, [\n t._shell\n ]);\n e.push(n.coordinates);\n for(var i = 0; i < t._holes.length; ++i){\n var r = t._holes[i], o = xe.LineString.apply(this, [\n r\n ]);\n e.push(o.coordinates);\n }\n return {\n type: \"Polygon\",\n coordinates: e\n };\n },\n MultiPolygon: function(t) {\n for(var e = [], n = 0; n < t._geometries.length; ++n){\n var i = t._geometries[n], r = xe.Polygon.apply(this, [\n i\n ]);\n e.push(r.coordinates);\n }\n return {\n type: \"MultiPolygon\",\n coordinates: e\n };\n },\n GeometryCollection: function(t) {\n for(var e = [], n = 0; n < t._geometries.length; ++n){\n var i = t._geometries[n], r = i.getGeometryType();\n e.push(xe[r].apply(this, [\n i\n ]));\n }\n return {\n type: \"GeometryCollection\",\n geometries: e\n };\n }\n }, Ne = function(t) {\n this.geometryFactory = t || new _e, this.precisionModel = this.geometryFactory.getPrecisionModel(), this.parser = new Ie(this.geometryFactory);\n };\n Ne.prototype.read = function(t) {\n var e = this.parser.read(t);\n return this.precisionModel.getType() === fe.FIXED && this.reducePrecision(e), e;\n }, Ne.prototype.reducePrecision = function(t) {\n var e, n;\n if (t.coordinate) this.precisionModel.makePrecise(t.coordinate);\n else if (t.points) for(e = 0, n = t.points.length; e < n; e++)this.precisionModel.makePrecise(t.points[e]);\n else if (t.geometries) for(e = 0, n = t.geometries.length; e < n; e++)this.reducePrecision(t.geometries[e]);\n };\n var Ce = function() {\n this.parser = new Ie(this.geometryFactory);\n };\n Ce.prototype.write = function(t) {\n return this.parser.write(t);\n };\n var Se = function() {}, Le = {\n ON: {\n configurable: !0\n },\n LEFT: {\n configurable: !0\n },\n RIGHT: {\n configurable: !0\n }\n };\n Se.prototype.interfaces_ = function() {\n return [];\n }, Se.prototype.getClass = function() {\n return Se;\n }, Se.opposite = function(t) {\n return t === Se.LEFT ? Se.RIGHT : t === Se.RIGHT ? Se.LEFT : t;\n }, Le.ON.get = function() {\n return 0;\n }, Le.LEFT.get = function() {\n return 1;\n }, Le.RIGHT.get = function() {\n return 2;\n }, Object.defineProperties(Se, Le), (d.prototype = new Error).name = \"EmptyStackException\", (y.prototype = new xt).add = function(t) {\n return this.array_.push(t), !0;\n }, y.prototype.get = function(t) {\n if (t < 0 || t >= this.size()) throw new Error;\n return this.array_[t];\n }, y.prototype.push = function(t) {\n return this.array_.push(t), t;\n }, y.prototype.pop = function(t) {\n if (0 === this.array_.length) throw new d;\n return this.array_.pop();\n }, y.prototype.peek = function() {\n if (0 === this.array_.length) throw new d;\n return this.array_[this.array_.length - 1];\n }, y.prototype.empty = function() {\n return 0 === this.array_.length;\n }, y.prototype.isEmpty = function() {\n return this.empty();\n }, y.prototype.search = function(t) {\n return this.array_.indexOf(t);\n }, y.prototype.size = function() {\n return this.array_.length;\n }, y.prototype.toArray = function() {\n for(var t = [], e = 0, n = this.array_.length; e < n; e++)t.push(this.array_[e]);\n return t;\n };\n var be = function() {\n this._minIndex = -1, this._minCoord = null, this._minDe = null, this._orientedDe = null;\n };\n be.prototype.getCoordinate = function() {\n return this._minCoord;\n }, be.prototype.getRightmostSide = function(t, e) {\n var n = this.getRightmostSideOfSegment(t, e);\n return n < 0 && (n = this.getRightmostSideOfSegment(t, e - 1)), n < 0 && (this._minCoord = null, this.checkForRightmostCoordinate(t)), n;\n }, be.prototype.findRightmostEdgeAtVertex = function() {\n var t = this._minDe.getEdge().getCoordinates();\n et.isTrue(this._minIndex > 0 && this._minIndex < t.length, \"rightmost point expected to be interior vertex of edge\");\n var e = t[this._minIndex - 1], n = t[this._minIndex + 1], i = at.computeOrientation(this._minCoord, n, e), r = !1;\n e.y < this._minCoord.y && n.y < this._minCoord.y && i === at.COUNTERCLOCKWISE ? r = !0 : e.y > this._minCoord.y && n.y > this._minCoord.y && i === at.CLOCKWISE && (r = !0), r && (this._minIndex = this._minIndex - 1);\n }, be.prototype.getRightmostSideOfSegment = function(t, e) {\n var n = t.getEdge().getCoordinates();\n if (e < 0 || e + 1 >= n.length) return -1;\n if (n[e].y === n[e + 1].y) return -1;\n var i = Se.LEFT;\n return n[e].y < n[e + 1].y && (i = Se.RIGHT), i;\n }, be.prototype.getEdge = function() {\n return this._orientedDe;\n }, be.prototype.checkForRightmostCoordinate = function(t) {\n for(var e = t.getEdge().getCoordinates(), n = 0; n < e.length - 1; n++)(null === this._minCoord || e[n].x > this._minCoord.x) && (this._minDe = t, this._minIndex = n, this._minCoord = e[n]);\n }, be.prototype.findRightmostEdgeAtNode = function() {\n var t = this._minDe.getNode().getEdges();\n this._minDe = t.getRightmostEdge(), this._minDe.isForward() || (this._minDe = this._minDe.getSym(), this._minIndex = this._minDe.getEdge().getCoordinates().length - 1);\n }, be.prototype.findEdge = function(t) {\n for(var e = t.iterator(); e.hasNext();){\n var n = e.next();\n n.isForward() && this.checkForRightmostCoordinate(n);\n }\n et.isTrue(0 !== this._minIndex || this._minCoord.equals(this._minDe.getCoordinate()), \"inconsistency in rightmost processing\"), 0 === this._minIndex ? this.findRightmostEdgeAtNode() : this.findRightmostEdgeAtVertex(), this._orientedDe = this._minDe;\n this.getRightmostSide(this._minDe, this._minIndex) === Se.LEFT && (this._orientedDe = this._minDe.getSym());\n }, be.prototype.interfaces_ = function() {\n return [];\n }, be.prototype.getClass = function() {\n return be;\n };\n var we = function(t) {\n function e(n, i) {\n t.call(this, e.msgWithCoord(n, i)), this.pt = i ? new C(i) : null, this.name = \"TopologyException\";\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.getCoordinate = function() {\n return this.pt;\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e.msgWithCoord = function(t, e) {\n return e ? t : t + \" [ \" + e + \" ]\";\n }, e;\n }($), Oe = function() {\n this.array_ = [];\n };\n Oe.prototype.addLast = function(t) {\n this.array_.push(t);\n }, Oe.prototype.removeFirst = function() {\n return this.array_.shift();\n }, Oe.prototype.isEmpty = function() {\n return 0 === this.array_.length;\n };\n var Te = function() {\n this._finder = null, this._dirEdgeList = new Nt, this._nodes = new Nt, this._rightMostCoord = null, this._env = null, this._finder = new be;\n };\n Te.prototype.clearVisitedEdges = function() {\n for(var t = this._dirEdgeList.iterator(); t.hasNext();)t.next().setVisited(!1);\n }, Te.prototype.getRightmostCoordinate = function() {\n return this._rightMostCoord;\n }, Te.prototype.computeNodeDepth = function(t) {\n for(var e = null, n = t.getEdges().iterator(); n.hasNext();){\n var i = n.next();\n if (i.isVisited() || i.getSym().isVisited()) {\n e = i;\n break;\n }\n }\n if (null === e) throw new we(\"unable to find edge to compute depths at \" + t.getCoordinate());\n t.getEdges().computeDepths(e);\n for(var r = t.getEdges().iterator(); r.hasNext();){\n var o = r.next();\n o.setVisited(!0), this.copySymDepths(o);\n }\n }, Te.prototype.computeDepth = function(t) {\n this.clearVisitedEdges();\n var e = this._finder.getEdge();\n e.setEdgeDepths(Se.RIGHT, t), this.copySymDepths(e), this.computeDepths(e);\n }, Te.prototype.create = function(t) {\n this.addReachable(t), this._finder.findEdge(this._dirEdgeList), this._rightMostCoord = this._finder.getCoordinate();\n }, Te.prototype.findResultEdges = function() {\n for(var t = this._dirEdgeList.iterator(); t.hasNext();){\n var e = t.next();\n e.getDepth(Se.RIGHT) >= 1 && e.getDepth(Se.LEFT) <= 0 && !e.isInteriorAreaEdge() && e.setInResult(!0);\n }\n }, Te.prototype.computeDepths = function(t) {\n var e = new Pt, n = new Oe, i = t.getNode();\n for(n.addLast(i), e.add(i), t.setVisited(!0); !n.isEmpty();){\n var r = n.removeFirst();\n e.add(r), this.computeNodeDepth(r);\n for(var o = r.getEdges().iterator(); o.hasNext();){\n var s = o.next().getSym();\n if (!s.isVisited()) {\n var a = s.getNode();\n e.contains(a) || (n.addLast(a), e.add(a));\n }\n }\n }\n }, Te.prototype.compareTo = function(t) {\n var e = t;\n return this._rightMostCoord.x < e._rightMostCoord.x ? -1 : this._rightMostCoord.x > e._rightMostCoord.x ? 1 : 0;\n }, Te.prototype.getEnvelope = function() {\n if (null === this._env) {\n for(var t = new j, e = this._dirEdgeList.iterator(); e.hasNext();)for(var n = e.next().getEdge().getCoordinates(), i = 0; i < n.length - 1; i++)t.expandToInclude(n[i]);\n this._env = t;\n }\n return this._env;\n }, Te.prototype.addReachable = function(t) {\n var e = new y;\n for(e.add(t); !e.empty();){\n var n = e.pop();\n this.add(n, e);\n }\n }, Te.prototype.copySymDepths = function(t) {\n var e = t.getSym();\n e.setDepth(Se.LEFT, t.getDepth(Se.RIGHT)), e.setDepth(Se.RIGHT, t.getDepth(Se.LEFT));\n }, Te.prototype.add = function(t, e) {\n t.setVisited(!0), this._nodes.add(t);\n for(var n = t.getEdges().iterator(); n.hasNext();){\n var i = n.next();\n this._dirEdgeList.add(i);\n var r = i.getSym().getNode();\n r.isVisited() || e.push(r);\n }\n }, Te.prototype.getNodes = function() {\n return this._nodes;\n }, Te.prototype.getDirectedEdges = function() {\n return this._dirEdgeList;\n }, Te.prototype.interfaces_ = function() {\n return [\n E\n ];\n }, Te.prototype.getClass = function() {\n return Te;\n };\n var Re = function t() {\n if (this.location = null, 1 === arguments.length) {\n if (arguments[0] instanceof Array) {\n var e = arguments[0];\n this.init(e.length);\n } else if (Number.isInteger(arguments[0])) {\n var n = arguments[0];\n this.init(1), this.location[Se.ON] = n;\n } else if (arguments[0] instanceof t) {\n var i = arguments[0];\n if (this.init(i.location.length), null !== i) for(var r = 0; r < this.location.length; r++)this.location[r] = i.location[r];\n }\n } else if (3 === arguments.length) {\n var o = arguments[0], s = arguments[1], a = arguments[2];\n this.init(3), this.location[Se.ON] = o, this.location[Se.LEFT] = s, this.location[Se.RIGHT] = a;\n }\n };\n Re.prototype.setAllLocations = function(t) {\n for(var e = 0; e < this.location.length; e++)this.location[e] = t;\n }, Re.prototype.isNull = function() {\n for(var t = 0; t < this.location.length; t++)if (this.location[t] !== w.NONE) return !1;\n return !0;\n }, Re.prototype.setAllLocationsIfNull = function(t) {\n for(var e = 0; e < this.location.length; e++)this.location[e] === w.NONE && (this.location[e] = t);\n }, Re.prototype.isLine = function() {\n return 1 === this.location.length;\n }, Re.prototype.merge = function(t) {\n if (t.location.length > this.location.length) {\n var e = new Array(3).fill(null);\n e[Se.ON] = this.location[Se.ON], e[Se.LEFT] = w.NONE, e[Se.RIGHT] = w.NONE, this.location = e;\n }\n for(var n = 0; n < this.location.length; n++)this.location[n] === w.NONE && n < t.location.length && (this.location[n] = t.location[n]);\n }, Re.prototype.getLocations = function() {\n return this.location;\n }, Re.prototype.flip = function() {\n if (this.location.length <= 1) return null;\n var t = this.location[Se.LEFT];\n this.location[Se.LEFT] = this.location[Se.RIGHT], this.location[Se.RIGHT] = t;\n }, Re.prototype.toString = function() {\n var t = new D;\n return this.location.length > 1 && t.append(w.toLocationSymbol(this.location[Se.LEFT])), t.append(w.toLocationSymbol(this.location[Se.ON])), this.location.length > 1 && t.append(w.toLocationSymbol(this.location[Se.RIGHT])), t.toString();\n }, Re.prototype.setLocations = function(t, e, n) {\n this.location[Se.ON] = t, this.location[Se.LEFT] = e, this.location[Se.RIGHT] = n;\n }, Re.prototype.get = function(t) {\n return t < this.location.length ? this.location[t] : w.NONE;\n }, Re.prototype.isArea = function() {\n return this.location.length > 1;\n }, Re.prototype.isAnyNull = function() {\n for(var t = 0; t < this.location.length; t++)if (this.location[t] === w.NONE) return !0;\n return !1;\n }, Re.prototype.setLocation = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n this.setLocation(Se.ON, t);\n } else if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n this.location[e] = n;\n }\n }, Re.prototype.init = function(t) {\n this.location = new Array(t).fill(null), this.setAllLocations(w.NONE);\n }, Re.prototype.isEqualOnSide = function(t, e) {\n return this.location[e] === t.location[e];\n }, Re.prototype.allPositionsEqual = function(t) {\n for(var e = 0; e < this.location.length; e++)if (this.location[e] !== t) return !1;\n return !0;\n }, Re.prototype.interfaces_ = function() {\n return [];\n }, Re.prototype.getClass = function() {\n return Re;\n };\n var Pe = function t() {\n if (this.elt = new Array(2).fill(null), 1 === arguments.length) {\n if (Number.isInteger(arguments[0])) {\n var e = arguments[0];\n this.elt[0] = new Re(e), this.elt[1] = new Re(e);\n } else if (arguments[0] instanceof t) {\n var n = arguments[0];\n this.elt[0] = new Re(n.elt[0]), this.elt[1] = new Re(n.elt[1]);\n }\n } else if (2 === arguments.length) {\n var i = arguments[0], r = arguments[1];\n this.elt[0] = new Re(w.NONE), this.elt[1] = new Re(w.NONE), this.elt[i].setLocation(r);\n } else if (3 === arguments.length) {\n var o = arguments[0], s = arguments[1], a = arguments[2];\n this.elt[0] = new Re(o, s, a), this.elt[1] = new Re(o, s, a);\n } else if (4 === arguments.length) {\n var u = arguments[0], l = arguments[1], c = arguments[2], p = arguments[3];\n this.elt[0] = new Re(w.NONE, w.NONE, w.NONE), this.elt[1] = new Re(w.NONE, w.NONE, w.NONE), this.elt[u].setLocations(l, c, p);\n }\n };\n Pe.prototype.getGeometryCount = function() {\n var t = 0;\n return this.elt[0].isNull() || t++, this.elt[1].isNull() || t++, t;\n }, Pe.prototype.setAllLocations = function(t, e) {\n this.elt[t].setAllLocations(e);\n }, Pe.prototype.isNull = function(t) {\n return this.elt[t].isNull();\n }, Pe.prototype.setAllLocationsIfNull = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n this.setAllLocationsIfNull(0, t), this.setAllLocationsIfNull(1, t);\n } else if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n this.elt[e].setAllLocationsIfNull(n);\n }\n }, Pe.prototype.isLine = function(t) {\n return this.elt[t].isLine();\n }, Pe.prototype.merge = function(t) {\n for(var e = 0; e < 2; e++)null === this.elt[e] && null !== t.elt[e] ? this.elt[e] = new Re(t.elt[e]) : this.elt[e].merge(t.elt[e]);\n }, Pe.prototype.flip = function() {\n this.elt[0].flip(), this.elt[1].flip();\n }, Pe.prototype.getLocation = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n return this.elt[t].get(Se.ON);\n }\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n return this.elt[e].get(n);\n }\n }, Pe.prototype.toString = function() {\n var t = new D;\n return null !== this.elt[0] && (t.append(\"A:\"), t.append(this.elt[0].toString())), null !== this.elt[1] && (t.append(\" B:\"), t.append(this.elt[1].toString())), t.toString();\n }, Pe.prototype.isArea = function() {\n if (0 === arguments.length) return this.elt[0].isArea() || this.elt[1].isArea();\n if (1 === arguments.length) {\n var t = arguments[0];\n return this.elt[t].isArea();\n }\n }, Pe.prototype.isAnyNull = function(t) {\n return this.elt[t].isAnyNull();\n }, Pe.prototype.setLocation = function() {\n if (2 === arguments.length) {\n var t = arguments[0], e = arguments[1];\n this.elt[t].setLocation(Se.ON, e);\n } else if (3 === arguments.length) {\n var n = arguments[0], i = arguments[1], r = arguments[2];\n this.elt[n].setLocation(i, r);\n }\n }, Pe.prototype.isEqualOnSide = function(t, e) {\n return this.elt[0].isEqualOnSide(t.elt[0], e) && this.elt[1].isEqualOnSide(t.elt[1], e);\n }, Pe.prototype.allPositionsEqual = function(t, e) {\n return this.elt[t].allPositionsEqual(e);\n }, Pe.prototype.toLine = function(t) {\n this.elt[t].isArea() && (this.elt[t] = new Re(this.elt[t].location[0]));\n }, Pe.prototype.interfaces_ = function() {\n return [];\n }, Pe.prototype.getClass = function() {\n return Pe;\n }, Pe.toLineLabel = function(t) {\n for(var e = new Pe(w.NONE), n = 0; n < 2; n++)e.setLocation(n, t.getLocation(n));\n return e;\n };\n var De = function() {\n this._startDe = null, this._maxNodeDegree = -1, this._edges = new Nt, this._pts = new Nt, this._label = new Pe(w.NONE), this._ring = null, this._isHole = null, this._shell = null, this._holes = new Nt, this._geometryFactory = null;\n var t = arguments[0], e = arguments[1];\n this._geometryFactory = e, this.computePoints(t), this.computeRing();\n };\n De.prototype.computeRing = function() {\n if (null !== this._ring) return null;\n for(var t = new Array(this._pts.size()).fill(null), e = 0; e < this._pts.size(); e++)t[e] = this._pts.get(e);\n this._ring = this._geometryFactory.createLinearRing(t), this._isHole = at.isCCW(this._ring.getCoordinates());\n }, De.prototype.isIsolated = function() {\n return 1 === this._label.getGeometryCount();\n }, De.prototype.computePoints = function(t) {\n this._startDe = t;\n var e = t, n = !0;\n do {\n if (null === e) throw new we(\"Found null DirectedEdge\");\n if (e.getEdgeRing() === this) throw new we(\"Directed Edge visited twice during ring-building at \" + e.getCoordinate());\n this._edges.add(e);\n var i = e.getLabel();\n et.isTrue(i.isArea()), this.mergeLabel(i), this.addPoints(e.getEdge(), e.isForward(), n), n = !1, this.setEdgeRing(e, this), e = this.getNext(e);\n }while (e !== this._startDe);\n }, De.prototype.getLinearRing = function() {\n return this._ring;\n }, De.prototype.getCoordinate = function(t) {\n return this._pts.get(t);\n }, De.prototype.computeMaxNodeDegree = function() {\n this._maxNodeDegree = 0;\n var t = this._startDe;\n do {\n var e = t.getNode().getEdges().getOutgoingDegree(this);\n e > this._maxNodeDegree && (this._maxNodeDegree = e), t = this.getNext(t);\n }while (t !== this._startDe);\n this._maxNodeDegree *= 2;\n }, De.prototype.addPoints = function(t, e, n) {\n var i = t.getCoordinates();\n if (e) {\n var r = 1;\n n && (r = 0);\n for(var o = r; o < i.length; o++)this._pts.add(i[o]);\n } else {\n var s = i.length - 2;\n n && (s = i.length - 1);\n for(var a = s; a >= 0; a--)this._pts.add(i[a]);\n }\n }, De.prototype.isHole = function() {\n return this._isHole;\n }, De.prototype.setInResult = function() {\n var t = this._startDe;\n do t.getEdge().setInResult(!0), t = t.getNext();\n while (t !== this._startDe);\n }, De.prototype.containsPoint = function(t) {\n var e = this.getLinearRing();\n if (!e.getEnvelopeInternal().contains(t)) return !1;\n if (!at.isPointInRing(t, e.getCoordinates())) return !1;\n for(var n = this._holes.iterator(); n.hasNext();){\n if (n.next().containsPoint(t)) return !1;\n }\n return !0;\n }, De.prototype.addHole = function(t) {\n this._holes.add(t);\n }, De.prototype.isShell = function() {\n return null === this._shell;\n }, De.prototype.getLabel = function() {\n return this._label;\n }, De.prototype.getEdges = function() {\n return this._edges;\n }, De.prototype.getMaxNodeDegree = function() {\n return this._maxNodeDegree < 0 && this.computeMaxNodeDegree(), this._maxNodeDegree;\n }, De.prototype.getShell = function() {\n return this._shell;\n }, De.prototype.mergeLabel = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n this.mergeLabel(t, 0), this.mergeLabel(t, 1);\n } else if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1], i = e.getLocation(n, Se.RIGHT);\n if (i === w.NONE) return null;\n if (this._label.getLocation(n) === w.NONE) return this._label.setLocation(n, i), null;\n }\n }, De.prototype.setShell = function(t) {\n this._shell = t, null !== t && t.addHole(this);\n }, De.prototype.toPolygon = function(t) {\n for(var e = new Array(this._holes.size()).fill(null), n = 0; n < this._holes.size(); n++)e[n] = this._holes.get(n).getLinearRing();\n return t.createPolygon(this.getLinearRing(), e);\n }, De.prototype.interfaces_ = function() {\n return [];\n }, De.prototype.getClass = function() {\n return De;\n };\n var Me = function(t) {\n function e() {\n var e = arguments[0], n = arguments[1];\n t.call(this, e, n);\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.setEdgeRing = function(t, e) {\n t.setMinEdgeRing(e);\n }, e.prototype.getNext = function(t) {\n return t.getNextMin();\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e;\n }(De), Ae = function(t) {\n function e() {\n var e = arguments[0], n = arguments[1];\n t.call(this, e, n);\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.buildMinimalRings = function() {\n var t = new Nt, e = this._startDe;\n do {\n if (null === e.getMinEdgeRing()) {\n var n = new Me(e, this._geometryFactory);\n t.add(n);\n }\n e = e.getNext();\n }while (e !== this._startDe);\n return t;\n }, e.prototype.setEdgeRing = function(t, e) {\n t.setEdgeRing(e);\n }, e.prototype.linkDirectedEdgesForMinimalEdgeRings = function() {\n var t = this._startDe;\n do t.getNode().getEdges().linkMinimalDirectedEdges(this), t = t.getNext();\n while (t !== this._startDe);\n }, e.prototype.getNext = function(t) {\n return t.getNext();\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e;\n }(De), Fe = function() {\n if (this._label = null, this._isInResult = !1, this._isCovered = !1, this._isCoveredSet = !1, this._isVisited = !1, 0 === arguments.length) ;\n else if (1 === arguments.length) {\n var t = arguments[0];\n this._label = t;\n }\n };\n Fe.prototype.setVisited = function(t) {\n this._isVisited = t;\n }, Fe.prototype.setInResult = function(t) {\n this._isInResult = t;\n }, Fe.prototype.isCovered = function() {\n return this._isCovered;\n }, Fe.prototype.isCoveredSet = function() {\n return this._isCoveredSet;\n }, Fe.prototype.setLabel = function(t) {\n this._label = t;\n }, Fe.prototype.getLabel = function() {\n return this._label;\n }, Fe.prototype.setCovered = function(t) {\n this._isCovered = t, this._isCoveredSet = !0;\n }, Fe.prototype.updateIM = function(t) {\n et.isTrue(this._label.getGeometryCount() >= 2, \"found partial label\"), this.computeIM(t);\n }, Fe.prototype.isInResult = function() {\n return this._isInResult;\n }, Fe.prototype.isVisited = function() {\n return this._isVisited;\n }, Fe.prototype.interfaces_ = function() {\n return [];\n }, Fe.prototype.getClass = function() {\n return Fe;\n };\n var Ge = function(t) {\n function e() {\n t.call(this), this._coord = null, this._edges = null;\n var e = arguments[0], n = arguments[1];\n this._coord = e, this._edges = n, this._label = new Pe(0, w.NONE);\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.isIncidentEdgeInResult = function() {\n for(var t = this.getEdges().getEdges().iterator(); t.hasNext();){\n if (t.next().getEdge().isInResult()) return !0;\n }\n return !1;\n }, e.prototype.isIsolated = function() {\n return 1 === this._label.getGeometryCount();\n }, e.prototype.getCoordinate = function() {\n return this._coord;\n }, e.prototype.print = function(t) {\n t.println(\"node \" + this._coord + \" lbl: \" + this._label);\n }, e.prototype.computeIM = function(t) {}, e.prototype.computeMergedLocation = function(t, e) {\n var n = w.NONE;\n if (n = this._label.getLocation(e), !t.isNull(e)) {\n var i = t.getLocation(e);\n n !== w.BOUNDARY && (n = i);\n }\n return n;\n }, e.prototype.setLabel = function() {\n if (2 !== arguments.length) return t.prototype.setLabel.apply(this, arguments);\n var e = arguments[0], n = arguments[1];\n null === this._label ? this._label = new Pe(e, n) : this._label.setLocation(e, n);\n }, e.prototype.getEdges = function() {\n return this._edges;\n }, e.prototype.mergeLabel = function() {\n if (arguments[0] instanceof e) {\n var t = arguments[0];\n this.mergeLabel(t._label);\n } else if (arguments[0] instanceof Pe) for(var n = arguments[0], i = 0; i < 2; i++){\n var r = this.computeMergedLocation(n, i);\n this._label.getLocation(i) === w.NONE && this._label.setLocation(i, r);\n }\n }, e.prototype.add = function(t) {\n this._edges.insert(t), t.setNode(this);\n }, e.prototype.setLabelBoundary = function(t) {\n if (null === this._label) return null;\n var e = w.NONE;\n null !== this._label && (e = this._label.getLocation(t));\n var n = null;\n switch(e){\n case w.BOUNDARY:\n n = w.INTERIOR;\n break;\n case w.INTERIOR:\n default:\n n = w.BOUNDARY;\n }\n this._label.setLocation(t, n);\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e;\n }(Fe), qe = function() {\n this.nodeMap = new p, this.nodeFact = null;\n var t = arguments[0];\n this.nodeFact = t;\n };\n qe.prototype.find = function(t) {\n return this.nodeMap.get(t);\n }, qe.prototype.addNode = function() {\n if (arguments[0] instanceof C) {\n var t = arguments[0], e = this.nodeMap.get(t);\n return null === e && (e = this.nodeFact.createNode(t), this.nodeMap.put(t, e)), e;\n }\n if (arguments[0] instanceof Ge) {\n var n = arguments[0], i = this.nodeMap.get(n.getCoordinate());\n return null === i ? (this.nodeMap.put(n.getCoordinate(), n), n) : (i.mergeLabel(n), i);\n }\n }, qe.prototype.print = function(t) {\n for(var e = this.iterator(); e.hasNext();)e.next().print(t);\n }, qe.prototype.iterator = function() {\n return this.nodeMap.values().iterator();\n }, qe.prototype.values = function() {\n return this.nodeMap.values();\n }, qe.prototype.getBoundaryNodes = function(t) {\n for(var e = new Nt, n = this.iterator(); n.hasNext();){\n var i = n.next();\n i.getLabel().getLocation(t) === w.BOUNDARY && e.add(i);\n }\n return e;\n }, qe.prototype.add = function(t) {\n var e = t.getCoordinate();\n this.addNode(e).add(t);\n }, qe.prototype.interfaces_ = function() {\n return [];\n }, qe.prototype.getClass = function() {\n return qe;\n };\n var Be = function() {}, Ve = {\n NE: {\n configurable: !0\n },\n NW: {\n configurable: !0\n },\n SW: {\n configurable: !0\n },\n SE: {\n configurable: !0\n }\n };\n Be.prototype.interfaces_ = function() {\n return [];\n }, Be.prototype.getClass = function() {\n return Be;\n }, Be.isNorthern = function(t) {\n return t === Be.NE || t === Be.NW;\n }, Be.isOpposite = function(t, e) {\n if (t === e) return !1;\n return 2 === (t - e + 4) % 4;\n }, Be.commonHalfPlane = function(t, e) {\n if (t === e) return t;\n if (2 === (t - e + 4) % 4) return -1;\n var n = t < e ? t : e;\n return 0 === n && 3 === (t > e ? t : e) ? 3 : n;\n }, Be.isInHalfPlane = function(t, e) {\n return e === Be.SE ? t === Be.SE || t === Be.SW : t === e || t === e + 1;\n }, Be.quadrant = function() {\n if (\"number\" == typeof arguments[0] && \"number\" == typeof arguments[1]) {\n var t = arguments[0], e = arguments[1];\n if (0 === t && 0 === e) throw new m(\"Cannot compute the quadrant for point ( \" + t + \", \" + e + \" )\");\n return t >= 0 ? e >= 0 ? Be.NE : Be.SE : e >= 0 ? Be.NW : Be.SW;\n }\n if (arguments[0] instanceof C && arguments[1] instanceof C) {\n var n = arguments[0], i = arguments[1];\n if (i.x === n.x && i.y === n.y) throw new m(\"Cannot compute the quadrant for two identical points \" + n);\n return i.x >= n.x ? i.y >= n.y ? Be.NE : Be.SE : i.y >= n.y ? Be.NW : Be.SW;\n }\n }, Ve.NE.get = function() {\n return 0;\n }, Ve.NW.get = function() {\n return 1;\n }, Ve.SW.get = function() {\n return 2;\n }, Ve.SE.get = function() {\n return 3;\n }, Object.defineProperties(Be, Ve);\n var Ue = function() {\n if (this._edge = null, this._label = null, this._node = null, this._p0 = null, this._p1 = null, this._dx = null, this._dy = null, this._quadrant = null, 1 === arguments.length) {\n var t = arguments[0];\n this._edge = t;\n } else if (3 === arguments.length) {\n var e = arguments[0], n = arguments[1], i = arguments[2];\n this._edge = e, this.init(n, i), this._label = null;\n } else if (4 === arguments.length) {\n var r = arguments[0], o = arguments[1], s = arguments[2], a = arguments[3];\n this._edge = r, this.init(o, s), this._label = a;\n }\n };\n Ue.prototype.compareDirection = function(t) {\n return this._dx === t._dx && this._dy === t._dy ? 0 : this._quadrant > t._quadrant ? 1 : this._quadrant < t._quadrant ? -1 : at.computeOrientation(t._p0, t._p1, this._p1);\n }, Ue.prototype.getDy = function() {\n return this._dy;\n }, Ue.prototype.getCoordinate = function() {\n return this._p0;\n }, Ue.prototype.setNode = function(t) {\n this._node = t;\n }, Ue.prototype.print = function(t) {\n var e = Math.atan2(this._dy, this._dx), n = this.getClass().getName(), i = n.lastIndexOf(\".\"), r = n.substring(i + 1);\n t.print(\" \" + r + \": \" + this._p0 + \" - \" + this._p1 + \" \" + this._quadrant + \":\" + e + \" \" + this._label);\n }, Ue.prototype.compareTo = function(t) {\n var e = t;\n return this.compareDirection(e);\n }, Ue.prototype.getDirectedCoordinate = function() {\n return this._p1;\n }, Ue.prototype.getDx = function() {\n return this._dx;\n }, Ue.prototype.getLabel = function() {\n return this._label;\n }, Ue.prototype.getEdge = function() {\n return this._edge;\n }, Ue.prototype.getQuadrant = function() {\n return this._quadrant;\n }, Ue.prototype.getNode = function() {\n return this._node;\n }, Ue.prototype.toString = function() {\n var t = Math.atan2(this._dy, this._dx), e = this.getClass().getName(), n = e.lastIndexOf(\".\");\n return \" \" + e.substring(n + 1) + \": \" + this._p0 + \" - \" + this._p1 + \" \" + this._quadrant + \":\" + t + \" \" + this._label;\n }, Ue.prototype.computeLabel = function(t) {}, Ue.prototype.init = function(t, e) {\n this._p0 = t, this._p1 = e, this._dx = e.x - t.x, this._dy = e.y - t.y, this._quadrant = Be.quadrant(this._dx, this._dy), et.isTrue(!(0 === this._dx && 0 === this._dy), \"EdgeEnd with identical endpoints found\");\n }, Ue.prototype.interfaces_ = function() {\n return [\n E\n ];\n }, Ue.prototype.getClass = function() {\n return Ue;\n };\n var ze = function(t) {\n function e() {\n var e = arguments[0], n = arguments[1];\n if (t.call(this, e), this._isForward = null, this._isInResult = !1, this._isVisited = !1, this._sym = null, this._next = null, this._nextMin = null, this._edgeRing = null, this._minEdgeRing = null, this._depth = [\n 0,\n -999,\n -999\n ], this._isForward = n, n) this.init(e.getCoordinate(0), e.getCoordinate(1));\n else {\n var i = e.getNumPoints() - 1;\n this.init(e.getCoordinate(i), e.getCoordinate(i - 1));\n }\n this.computeDirectedLabel();\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.getNextMin = function() {\n return this._nextMin;\n }, e.prototype.getDepth = function(t) {\n return this._depth[t];\n }, e.prototype.setVisited = function(t) {\n this._isVisited = t;\n }, e.prototype.computeDirectedLabel = function() {\n this._label = new Pe(this._edge.getLabel()), this._isForward || this._label.flip();\n }, e.prototype.getNext = function() {\n return this._next;\n }, e.prototype.setDepth = function(t, e) {\n if (-999 !== this._depth[t] && this._depth[t] !== e) throw new we(\"assigned depths do not match\", this.getCoordinate());\n this._depth[t] = e;\n }, e.prototype.isInteriorAreaEdge = function() {\n for(var t = !0, e = 0; e < 2; e++)this._label.isArea(e) && this._label.getLocation(e, Se.LEFT) === w.INTERIOR && this._label.getLocation(e, Se.RIGHT) === w.INTERIOR || (t = !1);\n return t;\n }, e.prototype.setNextMin = function(t) {\n this._nextMin = t;\n }, e.prototype.print = function(e) {\n t.prototype.print.call(this, e), e.print(\" \" + this._depth[Se.LEFT] + \"/\" + this._depth[Se.RIGHT]), e.print(\" (\" + this.getDepthDelta() + \")\"), this._isInResult && e.print(\" inResult\");\n }, e.prototype.setMinEdgeRing = function(t) {\n this._minEdgeRing = t;\n }, e.prototype.isLineEdge = function() {\n var t = this._label.isLine(0) || this._label.isLine(1), e = !this._label.isArea(0) || this._label.allPositionsEqual(0, w.EXTERIOR), n = !this._label.isArea(1) || this._label.allPositionsEqual(1, w.EXTERIOR);\n return t && e && n;\n }, e.prototype.setEdgeRing = function(t) {\n this._edgeRing = t;\n }, e.prototype.getMinEdgeRing = function() {\n return this._minEdgeRing;\n }, e.prototype.getDepthDelta = function() {\n var t = this._edge.getDepthDelta();\n return this._isForward || (t = -t), t;\n }, e.prototype.setInResult = function(t) {\n this._isInResult = t;\n }, e.prototype.getSym = function() {\n return this._sym;\n }, e.prototype.isForward = function() {\n return this._isForward;\n }, e.prototype.getEdge = function() {\n return this._edge;\n }, e.prototype.printEdge = function(t) {\n this.print(t), t.print(\" \"), this._isForward ? this._edge.print(t) : this._edge.printReverse(t);\n }, e.prototype.setSym = function(t) {\n this._sym = t;\n }, e.prototype.setVisitedEdge = function(t) {\n this.setVisited(t), this._sym.setVisited(t);\n }, e.prototype.setEdgeDepths = function(t, e) {\n var n = this.getEdge().getDepthDelta();\n this._isForward || (n = -n);\n var i = 1;\n t === Se.LEFT && (i = -1);\n var r = Se.opposite(t), o = e + n * i;\n this.setDepth(t, e), this.setDepth(r, o);\n }, e.prototype.getEdgeRing = function() {\n return this._edgeRing;\n }, e.prototype.isInResult = function() {\n return this._isInResult;\n }, e.prototype.setNext = function(t) {\n this._next = t;\n }, e.prototype.isVisited = function() {\n return this._isVisited;\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e.depthFactor = function(t, e) {\n return t === w.EXTERIOR && e === w.INTERIOR ? 1 : t === w.INTERIOR && e === w.EXTERIOR ? -1 : 0;\n }, e;\n }(Ue), Xe = function() {};\n Xe.prototype.createNode = function(t) {\n return new Ge(t, null);\n }, Xe.prototype.interfaces_ = function() {\n return [];\n }, Xe.prototype.getClass = function() {\n return Xe;\n };\n var Ye = function() {\n if (this._edges = new Nt, this._nodes = null, this._edgeEndList = new Nt, 0 === arguments.length) this._nodes = new qe(new Xe);\n else if (1 === arguments.length) {\n var t = arguments[0];\n this._nodes = new qe(t);\n }\n };\n Ye.prototype.printEdges = function(t) {\n t.println(\"Edges:\");\n for(var e = 0; e < this._edges.size(); e++){\n t.println(\"edge \" + e + \":\");\n var n = this._edges.get(e);\n n.print(t), n.eiList.print(t);\n }\n }, Ye.prototype.find = function(t) {\n return this._nodes.find(t);\n }, Ye.prototype.addNode = function() {\n if (arguments[0] instanceof Ge) {\n var t = arguments[0];\n return this._nodes.addNode(t);\n }\n if (arguments[0] instanceof C) {\n var e = arguments[0];\n return this._nodes.addNode(e);\n }\n }, Ye.prototype.getNodeIterator = function() {\n return this._nodes.iterator();\n }, Ye.prototype.linkResultDirectedEdges = function() {\n for(var t = this._nodes.iterator(); t.hasNext();)t.next().getEdges().linkResultDirectedEdges();\n }, Ye.prototype.debugPrintln = function(t) {\n Y.out.println(t);\n }, Ye.prototype.isBoundaryNode = function(t, e) {\n var n = this._nodes.find(e);\n if (null === n) return !1;\n var i = n.getLabel();\n return null !== i && i.getLocation(t) === w.BOUNDARY;\n }, Ye.prototype.linkAllDirectedEdges = function() {\n for(var t = this._nodes.iterator(); t.hasNext();)t.next().getEdges().linkAllDirectedEdges();\n }, Ye.prototype.matchInSameDirection = function(t, e, n, i) {\n return !!t.equals(n) && at.computeOrientation(t, e, i) === at.COLLINEAR && Be.quadrant(t, e) === Be.quadrant(n, i);\n }, Ye.prototype.getEdgeEnds = function() {\n return this._edgeEndList;\n }, Ye.prototype.debugPrint = function(t) {\n Y.out.print(t);\n }, Ye.prototype.getEdgeIterator = function() {\n return this._edges.iterator();\n }, Ye.prototype.findEdgeInSameDirection = function(t, e) {\n for(var n = 0; n < this._edges.size(); n++){\n var i = this._edges.get(n), r = i.getCoordinates();\n if (this.matchInSameDirection(t, e, r[0], r[1])) return i;\n if (this.matchInSameDirection(t, e, r[r.length - 1], r[r.length - 2])) return i;\n }\n return null;\n }, Ye.prototype.insertEdge = function(t) {\n this._edges.add(t);\n }, Ye.prototype.findEdgeEnd = function(t) {\n for(var e = this.getEdgeEnds().iterator(); e.hasNext();){\n var n = e.next();\n if (n.getEdge() === t) return n;\n }\n return null;\n }, Ye.prototype.addEdges = function(t) {\n for(var e = t.iterator(); e.hasNext();){\n var n = e.next();\n this._edges.add(n);\n var i = new ze(n, !0), r = new ze(n, !1);\n i.setSym(r), r.setSym(i), this.add(i), this.add(r);\n }\n }, Ye.prototype.add = function(t) {\n this._nodes.add(t), this._edgeEndList.add(t);\n }, Ye.prototype.getNodes = function() {\n return this._nodes.values();\n }, Ye.prototype.findEdge = function(t, e) {\n for(var n = 0; n < this._edges.size(); n++){\n var i = this._edges.get(n), r = i.getCoordinates();\n if (t.equals(r[0]) && e.equals(r[1])) return i;\n }\n return null;\n }, Ye.prototype.interfaces_ = function() {\n return [];\n }, Ye.prototype.getClass = function() {\n return Ye;\n }, Ye.linkResultDirectedEdges = function(t) {\n for(var e = t.iterator(); e.hasNext();)e.next().getEdges().linkResultDirectedEdges();\n };\n var ke = function() {\n this._geometryFactory = null, this._shellList = new Nt;\n var t = arguments[0];\n this._geometryFactory = t;\n };\n ke.prototype.sortShellsAndHoles = function(t, e, n) {\n for(var i = t.iterator(); i.hasNext();){\n var r = i.next();\n r.isHole() ? n.add(r) : e.add(r);\n }\n }, ke.prototype.computePolygons = function(t) {\n for(var e = new Nt, n = t.iterator(); n.hasNext();){\n var i = n.next().toPolygon(this._geometryFactory);\n e.add(i);\n }\n return e;\n }, ke.prototype.placeFreeHoles = function(t, e) {\n for(var n = e.iterator(); n.hasNext();){\n var i = n.next();\n if (null === i.getShell()) {\n var r = this.findEdgeRingContaining(i, t);\n if (null === r) throw new we(\"unable to assign hole to a shell\", i.getCoordinate(0));\n i.setShell(r);\n }\n }\n }, ke.prototype.buildMinimalEdgeRings = function(t, e, n) {\n for(var i = new Nt, r = t.iterator(); r.hasNext();){\n var o = r.next();\n if (o.getMaxNodeDegree() > 2) {\n o.linkDirectedEdgesForMinimalEdgeRings();\n var s = o.buildMinimalRings(), a = this.findShell(s);\n null !== a ? (this.placePolygonHoles(a, s), e.add(a)) : n.addAll(s);\n } else i.add(o);\n }\n return i;\n }, ke.prototype.containsPoint = function(t) {\n for(var e = this._shellList.iterator(); e.hasNext();){\n if (e.next().containsPoint(t)) return !0;\n }\n return !1;\n }, ke.prototype.buildMaximalEdgeRings = function(t) {\n for(var e = new Nt, n = t.iterator(); n.hasNext();){\n var i = n.next();\n if (i.isInResult() && i.getLabel().isArea() && null === i.getEdgeRing()) {\n var r = new Ae(i, this._geometryFactory);\n e.add(r), r.setInResult();\n }\n }\n return e;\n }, ke.prototype.placePolygonHoles = function(t, e) {\n for(var n = e.iterator(); n.hasNext();){\n var i = n.next();\n i.isHole() && i.setShell(t);\n }\n }, ke.prototype.getPolygons = function() {\n return this.computePolygons(this._shellList);\n }, ke.prototype.findEdgeRingContaining = function(t, e) {\n for(var n = t.getLinearRing(), i = n.getEnvelopeInternal(), r = n.getCoordinateN(0), o = null, s = null, a = e.iterator(); a.hasNext();){\n var u = a.next(), l = u.getLinearRing(), c = l.getEnvelopeInternal();\n null !== o && (s = o.getLinearRing().getEnvelopeInternal());\n var p = !1;\n c.contains(i) && at.isPointInRing(r, l.getCoordinates()) && (p = !0), p && (null === o || s.contains(c)) && (o = u);\n }\n return o;\n }, ke.prototype.findShell = function(t) {\n for(var e = 0, n = null, i = t.iterator(); i.hasNext();){\n var r = i.next();\n r.isHole() || (n = r, e++);\n }\n return et.isTrue(e <= 1, \"found two shells in MinimalEdgeRing list\"), n;\n }, ke.prototype.add = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n this.add(t.getEdgeEnds(), t.getNodes());\n } else if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n Ye.linkResultDirectedEdges(n);\n var i = this.buildMaximalEdgeRings(e), r = new Nt, o = this.buildMinimalEdgeRings(i, this._shellList, r);\n this.sortShellsAndHoles(o, this._shellList, r), this.placeFreeHoles(this._shellList, r);\n }\n }, ke.prototype.interfaces_ = function() {\n return [];\n }, ke.prototype.getClass = function() {\n return ke;\n };\n var je = function() {};\n je.prototype.getBounds = function() {}, je.prototype.interfaces_ = function() {\n return [];\n }, je.prototype.getClass = function() {\n return je;\n };\n var He = function() {\n this._bounds = null, this._item = null;\n var t = arguments[0], e = arguments[1];\n this._bounds = t, this._item = e;\n };\n He.prototype.getItem = function() {\n return this._item;\n }, He.prototype.getBounds = function() {\n return this._bounds;\n }, He.prototype.interfaces_ = function() {\n return [\n je,\n e\n ];\n }, He.prototype.getClass = function() {\n return He;\n };\n var We = function() {\n this._size = null, this._items = null, this._size = 0, this._items = new Nt, this._items.add(null);\n };\n We.prototype.poll = function() {\n if (this.isEmpty()) return null;\n var t = this._items.get(1);\n return this._items.set(1, this._items.get(this._size)), this._size -= 1, this.reorder(1), t;\n }, We.prototype.size = function() {\n return this._size;\n }, We.prototype.reorder = function(t) {\n for(var e = null, n = this._items.get(t); 2 * t <= this._size && ((e = 2 * t) !== this._size && this._items.get(e + 1).compareTo(this._items.get(e)) < 0 && e++, this._items.get(e).compareTo(n) < 0); t = e)this._items.set(t, this._items.get(e));\n this._items.set(t, n);\n }, We.prototype.clear = function() {\n this._size = 0, this._items.clear();\n }, We.prototype.isEmpty = function() {\n return 0 === this._size;\n }, We.prototype.add = function(t) {\n this._items.add(null), this._size += 1;\n var e = this._size;\n for(this._items.set(0, t); t.compareTo(this._items.get(Math.trunc(e / 2))) < 0; e /= 2)this._items.set(e, this._items.get(Math.trunc(e / 2)));\n this._items.set(e, t);\n }, We.prototype.interfaces_ = function() {\n return [];\n }, We.prototype.getClass = function() {\n return We;\n };\n var Ke = function() {};\n Ke.prototype.visitItem = function(t) {}, Ke.prototype.interfaces_ = function() {\n return [];\n }, Ke.prototype.getClass = function() {\n return Ke;\n };\n var Je = function() {};\n Je.prototype.insert = function(t, e) {}, Je.prototype.remove = function(t, e) {}, Je.prototype.query = function() {}, Je.prototype.interfaces_ = function() {\n return [];\n }, Je.prototype.getClass = function() {\n return Je;\n };\n var Qe = function() {\n if (this._childBoundables = new Nt, this._bounds = null, this._level = null, 0 === arguments.length) ;\n else if (1 === arguments.length) {\n var t = arguments[0];\n this._level = t;\n }\n }, Ze = {\n serialVersionUID: {\n configurable: !0\n }\n };\n Qe.prototype.getLevel = function() {\n return this._level;\n }, Qe.prototype.size = function() {\n return this._childBoundables.size();\n }, Qe.prototype.getChildBoundables = function() {\n return this._childBoundables;\n }, Qe.prototype.addChildBoundable = function(t) {\n et.isTrue(null === this._bounds), this._childBoundables.add(t);\n }, Qe.prototype.isEmpty = function() {\n return this._childBoundables.isEmpty();\n }, Qe.prototype.getBounds = function() {\n return null === this._bounds && (this._bounds = this.computeBounds()), this._bounds;\n }, Qe.prototype.interfaces_ = function() {\n return [\n je,\n e\n ];\n }, Qe.prototype.getClass = function() {\n return Qe;\n }, Ze.serialVersionUID.get = function() {\n return 0x5a1e55ec41369800;\n }, Object.defineProperties(Qe, Ze);\n var $e = function() {};\n $e.reverseOrder = function() {\n return {\n compare: function(t, e) {\n return e.compareTo(t);\n }\n };\n }, $e.min = function(t) {\n return $e.sort(t), t.get(0);\n }, $e.sort = function(t, e) {\n var n = t.toArray();\n e ? Gt.sort(n, e) : Gt.sort(n);\n for(var i = t.iterator(), r = 0, o = n.length; r < o; r++)i.next(), i.set(n[r]);\n }, $e.singletonList = function(t) {\n var e = new Nt;\n return e.add(t), e;\n };\n var tn = function() {\n this._boundable1 = null, this._boundable2 = null, this._distance = null, this._itemDistance = null;\n var t = arguments[0], e = arguments[1], n = arguments[2];\n this._boundable1 = t, this._boundable2 = e, this._itemDistance = n, this._distance = this.distance();\n };\n tn.prototype.expandToQueue = function(t, e) {\n var n = tn.isComposite(this._boundable1), i = tn.isComposite(this._boundable2);\n if (n && i) return tn.area(this._boundable1) > tn.area(this._boundable2) ? (this.expand(this._boundable1, this._boundable2, t, e), null) : (this.expand(this._boundable2, this._boundable1, t, e), null);\n if (n) return this.expand(this._boundable1, this._boundable2, t, e), null;\n if (i) return this.expand(this._boundable2, this._boundable1, t, e), null;\n throw new m(\"neither boundable is composite\");\n }, tn.prototype.isLeaves = function() {\n return !(tn.isComposite(this._boundable1) || tn.isComposite(this._boundable2));\n }, tn.prototype.compareTo = function(t) {\n var e = t;\n return this._distance < e._distance ? -1 : this._distance > e._distance ? 1 : 0;\n }, tn.prototype.expand = function(t, e, n, i) {\n for(var r = t.getChildBoundables().iterator(); r.hasNext();){\n var o = r.next(), s = new tn(o, e, this._itemDistance);\n s.getDistance() < i && n.add(s);\n }\n }, tn.prototype.getBoundable = function(t) {\n return 0 === t ? this._boundable1 : this._boundable2;\n }, tn.prototype.getDistance = function() {\n return this._distance;\n }, tn.prototype.distance = function() {\n return this.isLeaves() ? this._itemDistance.distance(this._boundable1, this._boundable2) : this._boundable1.getBounds().distance(this._boundable2.getBounds());\n }, tn.prototype.interfaces_ = function() {\n return [\n E\n ];\n }, tn.prototype.getClass = function() {\n return tn;\n }, tn.area = function(t) {\n return t.getBounds().getArea();\n }, tn.isComposite = function(t) {\n return t instanceof Qe;\n };\n var en = function t() {\n if (this._root = null, this._built = !1, this._itemBoundables = new Nt, this._nodeCapacity = null, 0 === arguments.length) {\n var e = t.DEFAULT_NODE_CAPACITY;\n this._nodeCapacity = e;\n } else if (1 === arguments.length) {\n var n = arguments[0];\n et.isTrue(n > 1, \"Node capacity must be greater than 1\"), this._nodeCapacity = n;\n }\n }, nn = {\n IntersectsOp: {\n configurable: !0\n },\n serialVersionUID: {\n configurable: !0\n },\n DEFAULT_NODE_CAPACITY: {\n configurable: !0\n }\n };\n en.prototype.getNodeCapacity = function() {\n return this._nodeCapacity;\n }, en.prototype.lastNode = function(t) {\n return t.get(t.size() - 1);\n }, en.prototype.size = function() {\n if (0 === arguments.length) return this.isEmpty() ? 0 : (this.build(), this.size(this._root));\n if (1 === arguments.length) {\n for(var t = 0, e = arguments[0].getChildBoundables().iterator(); e.hasNext();){\n var n = e.next();\n n instanceof Qe ? t += this.size(n) : n instanceof He && (t += 1);\n }\n return t;\n }\n }, en.prototype.removeItem = function(t, e) {\n for(var n = null, i = t.getChildBoundables().iterator(); i.hasNext();){\n var r = i.next();\n r instanceof He && r.getItem() === e && (n = r);\n }\n return null !== n && (t.getChildBoundables().remove(n), !0);\n }, en.prototype.itemsTree = function() {\n if (0 === arguments.length) {\n this.build();\n var t = this.itemsTree(this._root);\n return null === t ? new Nt : t;\n }\n if (1 === arguments.length) {\n for(var e = arguments[0], n = new Nt, i = e.getChildBoundables().iterator(); i.hasNext();){\n var r = i.next();\n if (r instanceof Qe) {\n var o = this.itemsTree(r);\n null !== o && n.add(o);\n } else r instanceof He ? n.add(r.getItem()) : et.shouldNeverReachHere();\n }\n return n.size() <= 0 ? null : n;\n }\n }, en.prototype.insert = function(t, e) {\n et.isTrue(!this._built, \"Cannot insert items into an STR packed R-tree after it has been built.\"), this._itemBoundables.add(new He(t, e));\n }, en.prototype.boundablesAtLevel = function() {\n if (1 === arguments.length) {\n var t = arguments[0], e = new Nt;\n return this.boundablesAtLevel(t, this._root, e), e;\n }\n if (3 === arguments.length) {\n var n = arguments[0], i = arguments[1], r = arguments[2];\n if (et.isTrue(n > -2), i.getLevel() === n) return r.add(i), null;\n for(var o = i.getChildBoundables().iterator(); o.hasNext();){\n var s = o.next();\n s instanceof Qe ? this.boundablesAtLevel(n, s, r) : (et.isTrue(s instanceof He), -1 === n && r.add(s));\n }\n return null;\n }\n }, en.prototype.query = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n this.build();\n var e = new Nt;\n return this.isEmpty() ? e : (this.getIntersectsOp().intersects(this._root.getBounds(), t) && this.query(t, this._root, e), e);\n }\n if (2 === arguments.length) {\n var n = arguments[0], i = arguments[1];\n if (this.build(), this.isEmpty()) return null;\n this.getIntersectsOp().intersects(this._root.getBounds(), n) && this.query(n, this._root, i);\n } else if (3 === arguments.length) {\n if (T(arguments[2], Ke) && arguments[0] instanceof Object && arguments[1] instanceof Qe) for(var r = arguments[0], o = arguments[1], s = arguments[2], a = o.getChildBoundables(), u = 0; u < a.size(); u++){\n var l = a.get(u);\n this.getIntersectsOp().intersects(l.getBounds(), r) && (l instanceof Qe ? this.query(r, l, s) : l instanceof He ? s.visitItem(l.getItem()) : et.shouldNeverReachHere());\n }\n else if (T(arguments[2], xt) && arguments[0] instanceof Object && arguments[1] instanceof Qe) for(var c = arguments[0], p = arguments[1], h = arguments[2], f = p.getChildBoundables(), g = 0; g < f.size(); g++){\n var d = f.get(g);\n this.getIntersectsOp().intersects(d.getBounds(), c) && (d instanceof Qe ? this.query(c, d, h) : d instanceof He ? h.add(d.getItem()) : et.shouldNeverReachHere());\n }\n }\n }, en.prototype.build = function() {\n if (this._built) return null;\n this._root = this._itemBoundables.isEmpty() ? this.createNode(0) : this.createHigherLevels(this._itemBoundables, -1), this._itemBoundables = null, this._built = !0;\n }, en.prototype.getRoot = function() {\n return this.build(), this._root;\n }, en.prototype.remove = function() {\n if (2 === arguments.length) {\n var t = arguments[0], e = arguments[1];\n return this.build(), !!this.getIntersectsOp().intersects(this._root.getBounds(), t) && this.remove(t, this._root, e);\n }\n if (3 === arguments.length) {\n var n = arguments[0], i = arguments[1], r = arguments[2], o = this.removeItem(i, r);\n if (o) return !0;\n for(var s = null, a = i.getChildBoundables().iterator(); a.hasNext();){\n var u = a.next();\n if (this.getIntersectsOp().intersects(u.getBounds(), n) && u instanceof Qe && (o = this.remove(n, u, r))) {\n s = u;\n break;\n }\n }\n return null !== s && s.getChildBoundables().isEmpty() && i.getChildBoundables().remove(s), o;\n }\n }, en.prototype.createHigherLevels = function(t, e) {\n et.isTrue(!t.isEmpty());\n var n = this.createParentBoundables(t, e + 1);\n return 1 === n.size() ? n.get(0) : this.createHigherLevels(n, e + 1);\n }, en.prototype.depth = function() {\n if (0 === arguments.length) return this.isEmpty() ? 0 : (this.build(), this.depth(this._root));\n if (1 === arguments.length) {\n for(var t = 0, e = arguments[0].getChildBoundables().iterator(); e.hasNext();){\n var n = e.next();\n if (n instanceof Qe) {\n var i = this.depth(n);\n i > t && (t = i);\n }\n }\n return t + 1;\n }\n }, en.prototype.createParentBoundables = function(t, e) {\n et.isTrue(!t.isEmpty());\n var n = new Nt;\n n.add(this.createNode(e));\n var i = new Nt(t);\n $e.sort(i, this.getComparator());\n for(var r = i.iterator(); r.hasNext();){\n var o = r.next();\n this.lastNode(n).getChildBoundables().size() === this.getNodeCapacity() && n.add(this.createNode(e)), this.lastNode(n).addChildBoundable(o);\n }\n return n;\n }, en.prototype.isEmpty = function() {\n return this._built ? this._root.isEmpty() : this._itemBoundables.isEmpty();\n }, en.prototype.interfaces_ = function() {\n return [\n e\n ];\n }, en.prototype.getClass = function() {\n return en;\n }, en.compareDoubles = function(t, e) {\n return t > e ? 1 : t < e ? -1 : 0;\n }, nn.IntersectsOp.get = function() {\n return rn;\n }, nn.serialVersionUID.get = function() {\n return -3886435814360241000;\n }, nn.DEFAULT_NODE_CAPACITY.get = function() {\n return 10;\n }, Object.defineProperties(en, nn);\n var rn = function() {}, on = function() {};\n on.prototype.distance = function(t, e) {}, on.prototype.interfaces_ = function() {\n return [];\n }, on.prototype.getClass = function() {\n return on;\n };\n var sn = function(t) {\n function n(e) {\n e = e || n.DEFAULT_NODE_CAPACITY, t.call(this, e);\n }\n t && (n.__proto__ = t), (n.prototype = Object.create(t && t.prototype)).constructor = n;\n var i = {\n STRtreeNode: {\n configurable: !0\n },\n serialVersionUID: {\n configurable: !0\n },\n xComparator: {\n configurable: !0\n },\n yComparator: {\n configurable: !0\n },\n intersectsOp: {\n configurable: !0\n },\n DEFAULT_NODE_CAPACITY: {\n configurable: !0\n }\n };\n return n.prototype.createParentBoundablesFromVerticalSlices = function(t, e) {\n et.isTrue(t.length > 0);\n for(var n = new Nt, i = 0; i < t.length; i++)n.addAll(this.createParentBoundablesFromVerticalSlice(t[i], e));\n return n;\n }, n.prototype.createNode = function(t) {\n return new an(t);\n }, n.prototype.size = function() {\n return 0 === arguments.length ? t.prototype.size.call(this) : t.prototype.size.apply(this, arguments);\n }, n.prototype.insert = function() {\n if (2 !== arguments.length) return t.prototype.insert.apply(this, arguments);\n var e = arguments[0], n = arguments[1];\n if (e.isNull()) return null;\n t.prototype.insert.call(this, e, n);\n }, n.prototype.getIntersectsOp = function() {\n return n.intersectsOp;\n }, n.prototype.verticalSlices = function(t, e) {\n for(var n = Math.trunc(Math.ceil(t.size() / e)), i = new Array(e).fill(null), r = t.iterator(), o = 0; o < e; o++){\n i[o] = new Nt;\n for(var s = 0; r.hasNext() && s < n;){\n var a = r.next();\n i[o].add(a), s++;\n }\n }\n return i;\n }, n.prototype.query = function() {\n if (1 === arguments.length) {\n var e = arguments[0];\n return t.prototype.query.call(this, e);\n }\n if (2 === arguments.length) {\n var n = arguments[0], i = arguments[1];\n t.prototype.query.call(this, n, i);\n } else if (3 === arguments.length) {\n if (T(arguments[2], Ke) && arguments[0] instanceof Object && arguments[1] instanceof Qe) {\n var r = arguments[0], o = arguments[1], s = arguments[2];\n t.prototype.query.call(this, r, o, s);\n } else if (T(arguments[2], xt) && arguments[0] instanceof Object && arguments[1] instanceof Qe) {\n var a = arguments[0], u = arguments[1], l = arguments[2];\n t.prototype.query.call(this, a, u, l);\n }\n }\n }, n.prototype.getComparator = function() {\n return n.yComparator;\n }, n.prototype.createParentBoundablesFromVerticalSlice = function(e, n) {\n return t.prototype.createParentBoundables.call(this, e, n);\n }, n.prototype.remove = function() {\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n return t.prototype.remove.call(this, e, n);\n }\n return t.prototype.remove.apply(this, arguments);\n }, n.prototype.depth = function() {\n return 0 === arguments.length ? t.prototype.depth.call(this) : t.prototype.depth.apply(this, arguments);\n }, n.prototype.createParentBoundables = function(t, e) {\n et.isTrue(!t.isEmpty());\n var i = Math.trunc(Math.ceil(t.size() / this.getNodeCapacity())), r = new Nt(t);\n $e.sort(r, n.xComparator);\n var o = this.verticalSlices(r, Math.trunc(Math.ceil(Math.sqrt(i))));\n return this.createParentBoundablesFromVerticalSlices(o, e);\n }, n.prototype.nearestNeighbour = function() {\n if (1 === arguments.length) {\n if (T(arguments[0], on)) {\n var t = arguments[0], e = new tn(this.getRoot(), this.getRoot(), t);\n return this.nearestNeighbour(e);\n }\n if (arguments[0] instanceof tn) {\n var i = arguments[0];\n return this.nearestNeighbour(i, v.POSITIVE_INFINITY);\n }\n } else if (2 === arguments.length) {\n if (arguments[0] instanceof n && T(arguments[1], on)) {\n var r = arguments[0], o = arguments[1], s = new tn(this.getRoot(), r.getRoot(), o);\n return this.nearestNeighbour(s);\n }\n if (arguments[0] instanceof tn && \"number\" == typeof arguments[1]) {\n var a = arguments[0], u = arguments[1], l = null, c = new We;\n for(c.add(a); !c.isEmpty() && u > 0;){\n var p = c.poll(), h = p.getDistance();\n if (h >= u) break;\n p.isLeaves() ? (u = h, l = p) : p.expandToQueue(c, u);\n }\n return [\n l.getBoundable(0).getItem(),\n l.getBoundable(1).getItem()\n ];\n }\n } else if (3 === arguments.length) {\n var f = arguments[0], g = arguments[1], d = arguments[2], y = new He(f, g), _ = new tn(this.getRoot(), y, d);\n return this.nearestNeighbour(_)[0];\n }\n }, n.prototype.interfaces_ = function() {\n return [\n Je,\n e\n ];\n }, n.prototype.getClass = function() {\n return n;\n }, n.centreX = function(t) {\n return n.avg(t.getMinX(), t.getMaxX());\n }, n.avg = function(t, e) {\n return (t + e) / 2;\n }, n.centreY = function(t) {\n return n.avg(t.getMinY(), t.getMaxY());\n }, i.STRtreeNode.get = function() {\n return an;\n }, i.serialVersionUID.get = function() {\n return 0x39920f7d5f261e0;\n }, i.xComparator.get = function() {\n return {\n interfaces_: function() {\n return [\n N\n ];\n },\n compare: function(e, i) {\n return t.compareDoubles(n.centreX(e.getBounds()), n.centreX(i.getBounds()));\n }\n };\n }, i.yComparator.get = function() {\n return {\n interfaces_: function() {\n return [\n N\n ];\n },\n compare: function(e, i) {\n return t.compareDoubles(n.centreY(e.getBounds()), n.centreY(i.getBounds()));\n }\n };\n }, i.intersectsOp.get = function() {\n return {\n interfaces_: function() {\n return [\n t.IntersectsOp\n ];\n },\n intersects: function(t, e) {\n return t.intersects(e);\n }\n };\n }, i.DEFAULT_NODE_CAPACITY.get = function() {\n return 10;\n }, Object.defineProperties(n, i), n;\n }(en), an = function(t) {\n function e() {\n var e = arguments[0];\n t.call(this, e);\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.computeBounds = function() {\n for(var t = null, e = this.getChildBoundables().iterator(); e.hasNext();){\n var n = e.next();\n null === t ? t = new j(n.getBounds()) : t.expandToInclude(n.getBounds());\n }\n return t;\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e;\n }(Qe), un = function() {};\n un.prototype.interfaces_ = function() {\n return [];\n }, un.prototype.getClass = function() {\n return un;\n }, un.relativeSign = function(t, e) {\n return t < e ? -1 : t > e ? 1 : 0;\n }, un.compare = function(t, e, n) {\n if (e.equals2D(n)) return 0;\n var i = un.relativeSign(e.x, n.x), r = un.relativeSign(e.y, n.y);\n switch(t){\n case 0:\n return un.compareValue(i, r);\n case 1:\n return un.compareValue(r, i);\n case 2:\n return un.compareValue(r, -i);\n case 3:\n return un.compareValue(-i, r);\n case 4:\n return un.compareValue(-i, -r);\n case 5:\n return un.compareValue(-r, -i);\n case 6:\n return un.compareValue(-r, i);\n case 7:\n return un.compareValue(i, -r);\n }\n return et.shouldNeverReachHere(\"invalid octant value\"), 0;\n }, un.compareValue = function(t, e) {\n return t < 0 ? -1 : t > 0 ? 1 : e < 0 ? -1 : e > 0 ? 1 : 0;\n };\n var ln = function() {\n this._segString = null, this.coord = null, this.segmentIndex = null, this._segmentOctant = null, this._isInterior = null;\n var t = arguments[0], e = arguments[1], n = arguments[2], i = arguments[3];\n this._segString = t, this.coord = new C(e), this.segmentIndex = n, this._segmentOctant = i, this._isInterior = !e.equals2D(t.getCoordinate(n));\n };\n ln.prototype.getCoordinate = function() {\n return this.coord;\n }, ln.prototype.print = function(t) {\n t.print(this.coord), t.print(\" seg # = \" + this.segmentIndex);\n }, ln.prototype.compareTo = function(t) {\n var e = t;\n return this.segmentIndex < e.segmentIndex ? -1 : this.segmentIndex > e.segmentIndex ? 1 : this.coord.equals2D(e.coord) ? 0 : un.compare(this._segmentOctant, this.coord, e.coord);\n }, ln.prototype.isEndPoint = function(t) {\n return 0 === this.segmentIndex && !this._isInterior || this.segmentIndex === t;\n }, ln.prototype.isInterior = function() {\n return this._isInterior;\n }, ln.prototype.interfaces_ = function() {\n return [\n E\n ];\n }, ln.prototype.getClass = function() {\n return ln;\n };\n var cn = function() {\n this._nodeMap = new p, this._edge = null;\n var t = arguments[0];\n this._edge = t;\n };\n cn.prototype.getSplitCoordinates = function() {\n var t = new St;\n this.addEndpoints();\n for(var e = this.iterator(), n = e.next(); e.hasNext();){\n var i = e.next();\n this.addEdgeCoordinates(n, i, t), n = i;\n }\n return t.toCoordinateArray();\n }, cn.prototype.addCollapsedNodes = function() {\n var t = new Nt;\n this.findCollapsesFromInsertedNodes(t), this.findCollapsesFromExistingVertices(t);\n for(var e = t.iterator(); e.hasNext();){\n var n = e.next().intValue();\n this.add(this._edge.getCoordinate(n), n);\n }\n }, cn.prototype.print = function(t) {\n t.println(\"Intersections:\");\n for(var e = this.iterator(); e.hasNext();)e.next().print(t);\n }, cn.prototype.findCollapsesFromExistingVertices = function(t) {\n for(var e = 0; e < this._edge.size() - 2; e++){\n var n = this._edge.getCoordinate(e), i = this._edge.getCoordinate(e + 2);\n n.equals2D(i) && t.add(new M(e + 1));\n }\n }, cn.prototype.addEdgeCoordinates = function(t, e, n) {\n var i = this._edge.getCoordinate(e.segmentIndex), r = e.isInterior() || !e.coord.equals2D(i);\n n.add(new C(t.coord), !1);\n for(var o = t.segmentIndex + 1; o <= e.segmentIndex; o++)n.add(this._edge.getCoordinate(o));\n r && n.add(new C(e.coord));\n }, cn.prototype.iterator = function() {\n return this._nodeMap.values().iterator();\n }, cn.prototype.addSplitEdges = function(t) {\n this.addEndpoints(), this.addCollapsedNodes();\n for(var e = this.iterator(), n = e.next(); e.hasNext();){\n var i = e.next(), r = this.createSplitEdge(n, i);\n t.add(r), n = i;\n }\n }, cn.prototype.findCollapseIndex = function(t, e, n) {\n if (!t.coord.equals2D(e.coord)) return !1;\n var i = e.segmentIndex - t.segmentIndex;\n return e.isInterior() || i--, 1 === i && (n[0] = t.segmentIndex + 1, !0);\n }, cn.prototype.findCollapsesFromInsertedNodes = function(t) {\n for(var e = new Array(1).fill(null), n = this.iterator(), i = n.next(); n.hasNext();){\n var r = n.next();\n this.findCollapseIndex(i, r, e) && t.add(new M(e[0])), i = r;\n }\n }, cn.prototype.getEdge = function() {\n return this._edge;\n }, cn.prototype.addEndpoints = function() {\n var t = this._edge.size() - 1;\n this.add(this._edge.getCoordinate(0), 0), this.add(this._edge.getCoordinate(t), t);\n }, cn.prototype.createSplitEdge = function(t, e) {\n var n = e.segmentIndex - t.segmentIndex + 2, i = this._edge.getCoordinate(e.segmentIndex), r = e.isInterior() || !e.coord.equals2D(i);\n r || n--;\n var o = new Array(n).fill(null), s = 0;\n o[s++] = new C(t.coord);\n for(var a = t.segmentIndex + 1; a <= e.segmentIndex; a++)o[s++] = this._edge.getCoordinate(a);\n return r && (o[s] = new C(e.coord)), new gn(o, this._edge.getData());\n }, cn.prototype.add = function(t, e) {\n var n = new ln(this._edge, t, e, this._edge.getSegmentOctant(e)), i = this._nodeMap.get(n);\n return null !== i ? (et.isTrue(i.coord.equals2D(t), \"Found equal nodes with different coordinates\"), i) : (this._nodeMap.put(n, n), n);\n }, cn.prototype.checkSplitEdgesCorrectness = function(t) {\n var e = this._edge.getCoordinates(), n = t.get(0).getCoordinate(0);\n if (!n.equals2D(e[0])) throw new $(\"bad split edge start point at \" + n);\n var i = t.get(t.size() - 1).getCoordinates(), r = i[i.length - 1];\n if (!r.equals2D(e[e.length - 1])) throw new $(\"bad split edge end point at \" + r);\n }, cn.prototype.interfaces_ = function() {\n return [];\n }, cn.prototype.getClass = function() {\n return cn;\n };\n var pn = function() {};\n pn.prototype.interfaces_ = function() {\n return [];\n }, pn.prototype.getClass = function() {\n return pn;\n }, pn.octant = function() {\n if (\"number\" == typeof arguments[0] && \"number\" == typeof arguments[1]) {\n var t = arguments[0], e = arguments[1];\n if (0 === t && 0 === e) throw new m(\"Cannot compute the octant for point ( \" + t + \", \" + e + \" )\");\n var n = Math.abs(t), i = Math.abs(e);\n return t >= 0 ? e >= 0 ? n >= i ? 0 : 1 : n >= i ? 7 : 6 : e >= 0 ? n >= i ? 3 : 2 : n >= i ? 4 : 5;\n }\n if (arguments[0] instanceof C && arguments[1] instanceof C) {\n var r = arguments[0], o = arguments[1], s = o.x - r.x, a = o.y - r.y;\n if (0 === s && 0 === a) throw new m(\"Cannot compute the octant for two identical points \" + r);\n return pn.octant(s, a);\n }\n };\n var hn = function() {};\n hn.prototype.getCoordinates = function() {}, hn.prototype.size = function() {}, hn.prototype.getCoordinate = function(t) {}, hn.prototype.isClosed = function() {}, hn.prototype.setData = function(t) {}, hn.prototype.getData = function() {}, hn.prototype.interfaces_ = function() {\n return [];\n }, hn.prototype.getClass = function() {\n return hn;\n };\n var fn = function() {};\n fn.prototype.addIntersection = function(t, e) {}, fn.prototype.interfaces_ = function() {\n return [\n hn\n ];\n }, fn.prototype.getClass = function() {\n return fn;\n };\n var gn = function() {\n this._nodeList = new cn(this), this._pts = null, this._data = null;\n var t = arguments[0], e = arguments[1];\n this._pts = t, this._data = e;\n };\n gn.prototype.getCoordinates = function() {\n return this._pts;\n }, gn.prototype.size = function() {\n return this._pts.length;\n }, gn.prototype.getCoordinate = function(t) {\n return this._pts[t];\n }, gn.prototype.isClosed = function() {\n return this._pts[0].equals(this._pts[this._pts.length - 1]);\n }, gn.prototype.getSegmentOctant = function(t) {\n return t === this._pts.length - 1 ? -1 : this.safeOctant(this.getCoordinate(t), this.getCoordinate(t + 1));\n }, gn.prototype.setData = function(t) {\n this._data = t;\n }, gn.prototype.safeOctant = function(t, e) {\n return t.equals2D(e) ? 0 : pn.octant(t, e);\n }, gn.prototype.getData = function() {\n return this._data;\n }, gn.prototype.addIntersection = function() {\n if (2 === arguments.length) {\n var t = arguments[0], e = arguments[1];\n this.addIntersectionNode(t, e);\n } else if (4 === arguments.length) {\n var n = arguments[0], i = arguments[1], r = arguments[3], o = new C(n.getIntersection(r));\n this.addIntersection(o, i);\n }\n }, gn.prototype.toString = function() {\n return Z.toLineString(new ue(this._pts));\n }, gn.prototype.getNodeList = function() {\n return this._nodeList;\n }, gn.prototype.addIntersectionNode = function(t, e) {\n var n = e, i = n + 1;\n if (i < this._pts.length) {\n var r = this._pts[i];\n t.equals2D(r) && (n = i);\n }\n return this._nodeList.add(t, n);\n }, gn.prototype.addIntersections = function(t, e, n) {\n for(var i = 0; i < t.getIntersectionNum(); i++)this.addIntersection(t, e, n, i);\n }, gn.prototype.interfaces_ = function() {\n return [\n fn\n ];\n }, gn.prototype.getClass = function() {\n return gn;\n }, gn.getNodedSubstrings = function() {\n if (1 === arguments.length) {\n var t = arguments[0], e = new Nt;\n return gn.getNodedSubstrings(t, e), e;\n }\n if (2 === arguments.length) for(var n = arguments[0], i = arguments[1], r = n.iterator(); r.hasNext();)r.next().getNodeList().addSplitEdges(i);\n };\n var dn = function() {\n if (this.p0 = null, this.p1 = null, 0 === arguments.length) this.p0 = new C, this.p1 = new C;\n else if (1 === arguments.length) {\n var t = arguments[0];\n this.p0 = new C(t.p0), this.p1 = new C(t.p1);\n } else if (2 === arguments.length) this.p0 = arguments[0], this.p1 = arguments[1];\n else if (4 === arguments.length) {\n var e = arguments[0], n = arguments[1], i = arguments[2], r = arguments[3];\n this.p0 = new C(e, n), this.p1 = new C(i, r);\n }\n }, yn = {\n serialVersionUID: {\n configurable: !0\n }\n };\n dn.prototype.minX = function() {\n return Math.min(this.p0.x, this.p1.x);\n }, dn.prototype.orientationIndex = function() {\n if (arguments[0] instanceof dn) {\n var t = arguments[0], e = at.orientationIndex(this.p0, this.p1, t.p0), n = at.orientationIndex(this.p0, this.p1, t.p1);\n return e >= 0 && n >= 0 ? Math.max(e, n) : e <= 0 && n <= 0 ? Math.max(e, n) : 0;\n }\n if (arguments[0] instanceof C) {\n var i = arguments[0];\n return at.orientationIndex(this.p0, this.p1, i);\n }\n }, dn.prototype.toGeometry = function(t) {\n return t.createLineString([\n this.p0,\n this.p1\n ]);\n }, dn.prototype.isVertical = function() {\n return this.p0.x === this.p1.x;\n }, dn.prototype.equals = function(t) {\n if (!(t instanceof dn)) return !1;\n var e = t;\n return this.p0.equals(e.p0) && this.p1.equals(e.p1);\n }, dn.prototype.intersection = function(t) {\n var e = new rt;\n return e.computeIntersection(this.p0, this.p1, t.p0, t.p1), e.hasIntersection() ? e.getIntersection(0) : null;\n }, dn.prototype.project = function() {\n if (arguments[0] instanceof C) {\n var t = arguments[0];\n if (t.equals(this.p0) || t.equals(this.p1)) return new C(t);\n var e = this.projectionFactor(t), n = new C;\n return n.x = this.p0.x + e * (this.p1.x - this.p0.x), n.y = this.p0.y + e * (this.p1.y - this.p0.y), n;\n }\n if (arguments[0] instanceof dn) {\n var i = arguments[0], r = this.projectionFactor(i.p0), o = this.projectionFactor(i.p1);\n if (r >= 1 && o >= 1) return null;\n if (r <= 0 && o <= 0) return null;\n var s = this.project(i.p0);\n r < 0 && (s = this.p0), r > 1 && (s = this.p1);\n var a = this.project(i.p1);\n return o < 0 && (a = this.p0), o > 1 && (a = this.p1), new dn(s, a);\n }\n }, dn.prototype.normalize = function() {\n this.p1.compareTo(this.p0) < 0 && this.reverse();\n }, dn.prototype.angle = function() {\n return Math.atan2(this.p1.y - this.p0.y, this.p1.x - this.p0.x);\n }, dn.prototype.getCoordinate = function(t) {\n return 0 === t ? this.p0 : this.p1;\n }, dn.prototype.distancePerpendicular = function(t) {\n return at.distancePointLinePerpendicular(t, this.p0, this.p1);\n }, dn.prototype.minY = function() {\n return Math.min(this.p0.y, this.p1.y);\n }, dn.prototype.midPoint = function() {\n return dn.midPoint(this.p0, this.p1);\n }, dn.prototype.projectionFactor = function(t) {\n if (t.equals(this.p0)) return 0;\n if (t.equals(this.p1)) return 1;\n var e = this.p1.x - this.p0.x, n = this.p1.y - this.p0.y, i = e * e + n * n;\n if (i <= 0) return v.NaN;\n return ((t.x - this.p0.x) * e + (t.y - this.p0.y) * n) / i;\n }, dn.prototype.closestPoints = function(t) {\n var e = this.intersection(t);\n if (null !== e) return [\n e,\n e\n ];\n var n = new Array(2).fill(null), i = v.MAX_VALUE, r = null, o = this.closestPoint(t.p0);\n i = o.distance(t.p0), n[0] = o, n[1] = t.p0;\n var s = this.closestPoint(t.p1);\n (r = s.distance(t.p1)) < i && (i = r, n[0] = s, n[1] = t.p1);\n var a = t.closestPoint(this.p0);\n (r = a.distance(this.p0)) < i && (i = r, n[0] = this.p0, n[1] = a);\n var u = t.closestPoint(this.p1);\n return (r = u.distance(this.p1)) < i && (i = r, n[0] = this.p1, n[1] = u), n;\n }, dn.prototype.closestPoint = function(t) {\n var e = this.projectionFactor(t);\n if (e > 0 && e < 1) return this.project(t);\n return this.p0.distance(t) < this.p1.distance(t) ? this.p0 : this.p1;\n }, dn.prototype.maxX = function() {\n return Math.max(this.p0.x, this.p1.x);\n }, dn.prototype.getLength = function() {\n return this.p0.distance(this.p1);\n }, dn.prototype.compareTo = function(t) {\n var e = t, n = this.p0.compareTo(e.p0);\n return 0 !== n ? n : this.p1.compareTo(e.p1);\n }, dn.prototype.reverse = function() {\n var t = this.p0;\n this.p0 = this.p1, this.p1 = t;\n }, dn.prototype.equalsTopo = function(t) {\n return this.p0.equals(t.p0) && (this.p1.equals(t.p1) || this.p0.equals(t.p1)) && this.p1.equals(t.p0);\n }, dn.prototype.lineIntersection = function(t) {\n try {\n return k.intersection(this.p0, this.p1, t.p0, t.p1);\n } catch (t) {\n if (!(t instanceof X)) throw t;\n }\n return null;\n }, dn.prototype.maxY = function() {\n return Math.max(this.p0.y, this.p1.y);\n }, dn.prototype.pointAlongOffset = function(t, e) {\n var n = this.p0.x + t * (this.p1.x - this.p0.x), i = this.p0.y + t * (this.p1.y - this.p0.y), r = this.p1.x - this.p0.x, o = this.p1.y - this.p0.y, s = Math.sqrt(r * r + o * o), a = 0, u = 0;\n if (0 !== e) {\n if (s <= 0) throw new Error(\"Cannot compute offset from zero-length line segment\");\n a = e * r / s, u = e * o / s;\n }\n return new C(n - u, i + a);\n }, dn.prototype.setCoordinates = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n this.setCoordinates(t.p0, t.p1);\n } else if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n this.p0.x = e.x, this.p0.y = e.y, this.p1.x = n.x, this.p1.y = n.y;\n }\n }, dn.prototype.segmentFraction = function(t) {\n var e = this.projectionFactor(t);\n return e < 0 ? e = 0 : (e > 1 || v.isNaN(e)) && (e = 1), e;\n }, dn.prototype.toString = function() {\n return \"LINESTRING( \" + this.p0.x + \" \" + this.p0.y + \", \" + this.p1.x + \" \" + this.p1.y + \")\";\n }, dn.prototype.isHorizontal = function() {\n return this.p0.y === this.p1.y;\n }, dn.prototype.distance = function() {\n if (arguments[0] instanceof dn) {\n var t = arguments[0];\n return at.distanceLineLine(this.p0, this.p1, t.p0, t.p1);\n }\n if (arguments[0] instanceof C) {\n var e = arguments[0];\n return at.distancePointLine(e, this.p0, this.p1);\n }\n }, dn.prototype.pointAlong = function(t) {\n var e = new C;\n return e.x = this.p0.x + t * (this.p1.x - this.p0.x), e.y = this.p0.y + t * (this.p1.y - this.p0.y), e;\n }, dn.prototype.hashCode = function() {\n var t = v.doubleToLongBits(this.p0.x);\n t ^= 31 * v.doubleToLongBits(this.p0.y);\n var e = Math.trunc(t) ^ Math.trunc(t >> 32), n = v.doubleToLongBits(this.p1.x);\n n ^= 31 * v.doubleToLongBits(this.p1.y);\n return e ^ (Math.trunc(n) ^ Math.trunc(n >> 32));\n }, dn.prototype.interfaces_ = function() {\n return [\n E,\n e\n ];\n }, dn.prototype.getClass = function() {\n return dn;\n }, dn.midPoint = function(t, e) {\n return new C((t.x + e.x) / 2, (t.y + e.y) / 2);\n }, yn.serialVersionUID.get = function() {\n return 0x2d2172135f411c00;\n }, Object.defineProperties(dn, yn);\n var _n = function() {\n this.tempEnv1 = new j, this.tempEnv2 = new j, this._overlapSeg1 = new dn, this._overlapSeg2 = new dn;\n };\n _n.prototype.overlap = function() {\n if (2 === arguments.length) ;\n else if (4 === arguments.length) {\n var t = arguments[0], e = arguments[1], n = arguments[2], i = arguments[3];\n t.getLineSegment(e, this._overlapSeg1), n.getLineSegment(i, this._overlapSeg2), this.overlap(this._overlapSeg1, this._overlapSeg2);\n }\n }, _n.prototype.interfaces_ = function() {\n return [];\n }, _n.prototype.getClass = function() {\n return _n;\n };\n var mn = function() {\n this._pts = null, this._start = null, this._end = null, this._env = null, this._context = null, this._id = null;\n var t = arguments[0], e = arguments[1], n = arguments[2], i = arguments[3];\n this._pts = t, this._start = e, this._end = n, this._context = i;\n };\n mn.prototype.getLineSegment = function(t, e) {\n e.p0 = this._pts[t], e.p1 = this._pts[t + 1];\n }, mn.prototype.computeSelect = function(t, e, n, i) {\n var r = this._pts[e], o = this._pts[n];\n if (i.tempEnv1.init(r, o), n - e == 1) return i.select(this, e), null;\n if (!t.intersects(i.tempEnv1)) return null;\n var s = Math.trunc((e + n) / 2);\n e < s && this.computeSelect(t, e, s, i), s < n && this.computeSelect(t, s, n, i);\n }, mn.prototype.getCoordinates = function() {\n for(var t = new Array(this._end - this._start + 1).fill(null), e = 0, n = this._start; n <= this._end; n++)t[e++] = this._pts[n];\n return t;\n }, mn.prototype.computeOverlaps = function(t, e) {\n this.computeOverlapsInternal(this._start, this._end, t, t._start, t._end, e);\n }, mn.prototype.setId = function(t) {\n this._id = t;\n }, mn.prototype.select = function(t, e) {\n this.computeSelect(t, this._start, this._end, e);\n }, mn.prototype.getEnvelope = function() {\n if (null === this._env) {\n var t = this._pts[this._start], e = this._pts[this._end];\n this._env = new j(t, e);\n }\n return this._env;\n }, mn.prototype.getEndIndex = function() {\n return this._end;\n }, mn.prototype.getStartIndex = function() {\n return this._start;\n }, mn.prototype.getContext = function() {\n return this._context;\n }, mn.prototype.getId = function() {\n return this._id;\n }, mn.prototype.computeOverlapsInternal = function(t, e, n, i, r, o) {\n var s = this._pts[t], a = this._pts[e], u = n._pts[i], l = n._pts[r];\n if (e - t == 1 && r - i == 1) return o.overlap(this, t, n, i), null;\n if (o.tempEnv1.init(s, a), o.tempEnv2.init(u, l), !o.tempEnv1.intersects(o.tempEnv2)) return null;\n var c = Math.trunc((t + e) / 2), p = Math.trunc((i + r) / 2);\n t < c && (i < p && this.computeOverlapsInternal(t, c, n, i, p, o), p < r && this.computeOverlapsInternal(t, c, n, p, r, o)), c < e && (i < p && this.computeOverlapsInternal(c, e, n, i, p, o), p < r && this.computeOverlapsInternal(c, e, n, p, r, o));\n }, mn.prototype.interfaces_ = function() {\n return [];\n }, mn.prototype.getClass = function() {\n return mn;\n };\n var vn = function() {};\n vn.prototype.interfaces_ = function() {\n return [];\n }, vn.prototype.getClass = function() {\n return vn;\n }, vn.getChainStartIndices = function(t) {\n var e = 0, n = new Nt;\n n.add(new M(e));\n do {\n var i = vn.findChainEnd(t, e);\n n.add(new M(i)), e = i;\n }while (e < t.length - 1);\n return vn.toIntArray(n);\n }, vn.findChainEnd = function(t, e) {\n for(var n = e; n < t.length - 1 && t[n].equals2D(t[n + 1]);)n++;\n if (n >= t.length - 1) return t.length - 1;\n for(var i = Be.quadrant(t[n], t[n + 1]), r = e + 1; r < t.length;){\n if (!t[r - 1].equals2D(t[r])) {\n if (Be.quadrant(t[r - 1], t[r]) !== i) break;\n }\n r++;\n }\n return r - 1;\n }, vn.getChains = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n return vn.getChains(t, null);\n }\n if (2 === arguments.length) {\n for(var e = arguments[0], n = arguments[1], i = new Nt, r = vn.getChainStartIndices(e), o = 0; o < r.length - 1; o++){\n var s = new mn(e, r[o], r[o + 1], n);\n i.add(s);\n }\n return i;\n }\n }, vn.toIntArray = function(t) {\n for(var e = new Array(t.size()).fill(null), n = 0; n < e.length; n++)e[n] = t.get(n).intValue();\n return e;\n };\n var In = function() {};\n In.prototype.computeNodes = function(t) {}, In.prototype.getNodedSubstrings = function() {}, In.prototype.interfaces_ = function() {\n return [];\n }, In.prototype.getClass = function() {\n return In;\n };\n var En = function() {\n if (this._segInt = null, 0 === arguments.length) ;\n else if (1 === arguments.length) {\n var t = arguments[0];\n this.setSegmentIntersector(t);\n }\n };\n En.prototype.setSegmentIntersector = function(t) {\n this._segInt = t;\n }, En.prototype.interfaces_ = function() {\n return [\n In\n ];\n }, En.prototype.getClass = function() {\n return En;\n };\n var xn = function(t) {\n function e(e) {\n e ? t.call(this, e) : t.call(this), this._monoChains = new Nt, this._index = new sn, this._idCounter = 0, this._nodedSegStrings = null, this._nOverlaps = 0;\n }\n t && (e.__proto__ = t), (e.prototype = Object.create(t && t.prototype)).constructor = e;\n var n = {\n SegmentOverlapAction: {\n configurable: !0\n }\n };\n return e.prototype.getMonotoneChains = function() {\n return this._monoChains;\n }, e.prototype.getNodedSubstrings = function() {\n return gn.getNodedSubstrings(this._nodedSegStrings);\n }, e.prototype.getIndex = function() {\n return this._index;\n }, e.prototype.add = function(t) {\n for(var e = vn.getChains(t.getCoordinates(), t).iterator(); e.hasNext();){\n var n = e.next();\n n.setId(this._idCounter++), this._index.insert(n.getEnvelope(), n), this._monoChains.add(n);\n }\n }, e.prototype.computeNodes = function(t) {\n this._nodedSegStrings = t;\n for(var e = t.iterator(); e.hasNext();)this.add(e.next());\n this.intersectChains();\n }, e.prototype.intersectChains = function() {\n for(var t = new Nn(this._segInt), e = this._monoChains.iterator(); e.hasNext();)for(var n = e.next(), i = this._index.query(n.getEnvelope()).iterator(); i.hasNext();){\n var r = i.next();\n if (r.getId() > n.getId() && (n.computeOverlaps(r, t), this._nOverlaps++), this._segInt.isDone()) return null;\n }\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, n.SegmentOverlapAction.get = function() {\n return Nn;\n }, Object.defineProperties(e, n), e;\n }(En), Nn = function(t) {\n function e() {\n t.call(this), this._si = null;\n var e = arguments[0];\n this._si = e;\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.overlap = function() {\n if (4 !== arguments.length) return t.prototype.overlap.apply(this, arguments);\n var e = arguments[0], n = arguments[1], i = arguments[2], r = arguments[3], o = e.getContext(), s = i.getContext();\n this._si.processIntersections(o, n, s, r);\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e;\n }(_n), Cn = function t() {\n if (this._quadrantSegments = t.DEFAULT_QUADRANT_SEGMENTS, this._endCapStyle = t.CAP_ROUND, this._joinStyle = t.JOIN_ROUND, this._mitreLimit = t.DEFAULT_MITRE_LIMIT, this._isSingleSided = !1, this._simplifyFactor = t.DEFAULT_SIMPLIFY_FACTOR, 0 === arguments.length) ;\n else if (1 === arguments.length) {\n var e = arguments[0];\n this.setQuadrantSegments(e);\n } else if (2 === arguments.length) {\n var n = arguments[0], i = arguments[1];\n this.setQuadrantSegments(n), this.setEndCapStyle(i);\n } else if (4 === arguments.length) {\n var r = arguments[0], o = arguments[1], s = arguments[2], a = arguments[3];\n this.setQuadrantSegments(r), this.setEndCapStyle(o), this.setJoinStyle(s), this.setMitreLimit(a);\n }\n }, Sn = {\n CAP_ROUND: {\n configurable: !0\n },\n CAP_FLAT: {\n configurable: !0\n },\n CAP_SQUARE: {\n configurable: !0\n },\n JOIN_ROUND: {\n configurable: !0\n },\n JOIN_MITRE: {\n configurable: !0\n },\n JOIN_BEVEL: {\n configurable: !0\n },\n DEFAULT_QUADRANT_SEGMENTS: {\n configurable: !0\n },\n DEFAULT_MITRE_LIMIT: {\n configurable: !0\n },\n DEFAULT_SIMPLIFY_FACTOR: {\n configurable: !0\n }\n };\n Cn.prototype.getEndCapStyle = function() {\n return this._endCapStyle;\n }, Cn.prototype.isSingleSided = function() {\n return this._isSingleSided;\n }, Cn.prototype.setQuadrantSegments = function(t) {\n this._quadrantSegments = t, 0 === this._quadrantSegments && (this._joinStyle = Cn.JOIN_BEVEL), this._quadrantSegments < 0 && (this._joinStyle = Cn.JOIN_MITRE, this._mitreLimit = Math.abs(this._quadrantSegments)), t <= 0 && (this._quadrantSegments = 1), this._joinStyle !== Cn.JOIN_ROUND && (this._quadrantSegments = Cn.DEFAULT_QUADRANT_SEGMENTS);\n }, Cn.prototype.getJoinStyle = function() {\n return this._joinStyle;\n }, Cn.prototype.setJoinStyle = function(t) {\n this._joinStyle = t;\n }, Cn.prototype.setSimplifyFactor = function(t) {\n this._simplifyFactor = t < 0 ? 0 : t;\n }, Cn.prototype.getSimplifyFactor = function() {\n return this._simplifyFactor;\n }, Cn.prototype.getQuadrantSegments = function() {\n return this._quadrantSegments;\n }, Cn.prototype.setEndCapStyle = function(t) {\n this._endCapStyle = t;\n }, Cn.prototype.getMitreLimit = function() {\n return this._mitreLimit;\n }, Cn.prototype.setMitreLimit = function(t) {\n this._mitreLimit = t;\n }, Cn.prototype.setSingleSided = function(t) {\n this._isSingleSided = t;\n }, Cn.prototype.interfaces_ = function() {\n return [];\n }, Cn.prototype.getClass = function() {\n return Cn;\n }, Cn.bufferDistanceError = function(t) {\n var e = Math.PI / 2 / t;\n return 1 - Math.cos(e / 2);\n }, Sn.CAP_ROUND.get = function() {\n return 1;\n }, Sn.CAP_FLAT.get = function() {\n return 2;\n }, Sn.CAP_SQUARE.get = function() {\n return 3;\n }, Sn.JOIN_ROUND.get = function() {\n return 1;\n }, Sn.JOIN_MITRE.get = function() {\n return 2;\n }, Sn.JOIN_BEVEL.get = function() {\n return 3;\n }, Sn.DEFAULT_QUADRANT_SEGMENTS.get = function() {\n return 8;\n }, Sn.DEFAULT_MITRE_LIMIT.get = function() {\n return 5;\n }, Sn.DEFAULT_SIMPLIFY_FACTOR.get = function() {\n return .01;\n }, Object.defineProperties(Cn, Sn);\n var Ln = function(t) {\n this._distanceTol = null, this._isDeleted = null, this._angleOrientation = at.COUNTERCLOCKWISE, this._inputLine = t || null;\n }, bn = {\n INIT: {\n configurable: !0\n },\n DELETE: {\n configurable: !0\n },\n KEEP: {\n configurable: !0\n },\n NUM_PTS_TO_CHECK: {\n configurable: !0\n }\n };\n Ln.prototype.isDeletable = function(t, e, n, i) {\n var r = this._inputLine[t], o = this._inputLine[e], s = this._inputLine[n];\n return !!this.isConcave(r, o, s) && !!this.isShallow(r, o, s, i) && this.isShallowSampled(r, o, t, n, i);\n }, Ln.prototype.deleteShallowConcavities = function() {\n for(var t = 1, e = this.findNextNonDeletedIndex(t), n = this.findNextNonDeletedIndex(e), i = !1; n < this._inputLine.length;){\n var r = !1;\n this.isDeletable(t, e, n, this._distanceTol) && (this._isDeleted[e] = Ln.DELETE, r = !0, i = !0), t = r ? n : e, e = this.findNextNonDeletedIndex(t), n = this.findNextNonDeletedIndex(e);\n }\n return i;\n }, Ln.prototype.isShallowConcavity = function(t, e, n, i) {\n if (!(at.computeOrientation(t, e, n) === this._angleOrientation)) return !1;\n return at.distancePointLine(e, t, n) < i;\n }, Ln.prototype.isShallowSampled = function(t, e, n, i, r) {\n var o = Math.trunc((i - n) / Ln.NUM_PTS_TO_CHECK);\n o <= 0 && (o = 1);\n for(var s = n; s < i; s += o)if (!this.isShallow(t, e, this._inputLine[s], r)) return !1;\n return !0;\n }, Ln.prototype.isConcave = function(t, e, n) {\n var i = at.computeOrientation(t, e, n) === this._angleOrientation;\n return i;\n }, Ln.prototype.simplify = function(t) {\n this._distanceTol = Math.abs(t), t < 0 && (this._angleOrientation = at.CLOCKWISE), this._isDeleted = new Array(this._inputLine.length).fill(null);\n var e = !1;\n do e = this.deleteShallowConcavities();\n while (e);\n return this.collapseLine();\n }, Ln.prototype.findNextNonDeletedIndex = function(t) {\n for(var e = t + 1; e < this._inputLine.length && this._isDeleted[e] === Ln.DELETE;)e++;\n return e;\n }, Ln.prototype.isShallow = function(t, e, n, i) {\n return at.distancePointLine(e, t, n) < i;\n }, Ln.prototype.collapseLine = function() {\n for(var t = new St, e = 0; e < this._inputLine.length; e++)this._isDeleted[e] !== Ln.DELETE && t.add(this._inputLine[e]);\n return t.toCoordinateArray();\n }, Ln.prototype.interfaces_ = function() {\n return [];\n }, Ln.prototype.getClass = function() {\n return Ln;\n }, Ln.simplify = function(t, e) {\n return new Ln(t).simplify(e);\n }, bn.INIT.get = function() {\n return 0;\n }, bn.DELETE.get = function() {\n return 1;\n }, bn.KEEP.get = function() {\n return 1;\n }, bn.NUM_PTS_TO_CHECK.get = function() {\n return 10;\n }, Object.defineProperties(Ln, bn);\n var wn = function() {\n this._ptList = null, this._precisionModel = null, this._minimimVertexDistance = 0, this._ptList = new Nt;\n }, On = {\n COORDINATE_ARRAY_TYPE: {\n configurable: !0\n }\n };\n wn.prototype.getCoordinates = function() {\n return this._ptList.toArray(wn.COORDINATE_ARRAY_TYPE);\n }, wn.prototype.setPrecisionModel = function(t) {\n this._precisionModel = t;\n }, wn.prototype.addPt = function(t) {\n var e = new C(t);\n if (this._precisionModel.makePrecise(e), this.isRedundant(e)) return null;\n this._ptList.add(e);\n }, wn.prototype.revere = function() {}, wn.prototype.addPts = function(t, e) {\n if (e) for(var n = 0; n < t.length; n++)this.addPt(t[n]);\n else for(var i = t.length - 1; i >= 0; i--)this.addPt(t[i]);\n }, wn.prototype.isRedundant = function(t) {\n if (this._ptList.size() < 1) return !1;\n var e = this._ptList.get(this._ptList.size() - 1);\n return t.distance(e) < this._minimimVertexDistance;\n }, wn.prototype.toString = function() {\n return (new _e).createLineString(this.getCoordinates()).toString();\n }, wn.prototype.closeRing = function() {\n if (this._ptList.size() < 1) return null;\n var t = new C(this._ptList.get(0)), e = this._ptList.get(this._ptList.size() - 1);\n if (t.equals(e)) return null;\n this._ptList.add(t);\n }, wn.prototype.setMinimumVertexDistance = function(t) {\n this._minimimVertexDistance = t;\n }, wn.prototype.interfaces_ = function() {\n return [];\n }, wn.prototype.getClass = function() {\n return wn;\n }, On.COORDINATE_ARRAY_TYPE.get = function() {\n return new Array(0).fill(null);\n }, Object.defineProperties(wn, On);\n var Tn = function() {}, Rn = {\n PI_TIMES_2: {\n configurable: !0\n },\n PI_OVER_2: {\n configurable: !0\n },\n PI_OVER_4: {\n configurable: !0\n },\n COUNTERCLOCKWISE: {\n configurable: !0\n },\n CLOCKWISE: {\n configurable: !0\n },\n NONE: {\n configurable: !0\n }\n };\n Tn.prototype.interfaces_ = function() {\n return [];\n }, Tn.prototype.getClass = function() {\n return Tn;\n }, Tn.toDegrees = function(t) {\n return 180 * t / Math.PI;\n }, Tn.normalize = function(t) {\n for(; t > Math.PI;)t -= Tn.PI_TIMES_2;\n for(; t <= -Math.PI;)t += Tn.PI_TIMES_2;\n return t;\n }, Tn.angle = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n return Math.atan2(t.y, t.x);\n }\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1], i = n.x - e.x, r = n.y - e.y;\n return Math.atan2(r, i);\n }\n }, Tn.isAcute = function(t, e, n) {\n var i = t.x - e.x, r = t.y - e.y;\n return i * (n.x - e.x) + r * (n.y - e.y) > 0;\n }, Tn.isObtuse = function(t, e, n) {\n var i = t.x - e.x, r = t.y - e.y;\n return i * (n.x - e.x) + r * (n.y - e.y) < 0;\n }, Tn.interiorAngle = function(t, e, n) {\n var i = Tn.angle(e, t), r = Tn.angle(e, n);\n return Math.abs(r - i);\n }, Tn.normalizePositive = function(t) {\n if (t < 0) {\n for(; t < 0;)t += Tn.PI_TIMES_2;\n t >= Tn.PI_TIMES_2 && (t = 0);\n } else {\n for(; t >= Tn.PI_TIMES_2;)t -= Tn.PI_TIMES_2;\n t < 0 && (t = 0);\n }\n return t;\n }, Tn.angleBetween = function(t, e, n) {\n var i = Tn.angle(e, t), r = Tn.angle(e, n);\n return Tn.diff(i, r);\n }, Tn.diff = function(t, e) {\n var n = null;\n return (n = t < e ? e - t : t - e) > Math.PI && (n = 2 * Math.PI - n), n;\n }, Tn.toRadians = function(t) {\n return t * Math.PI / 180;\n }, Tn.getTurn = function(t, e) {\n var n = Math.sin(e - t);\n return n > 0 ? Tn.COUNTERCLOCKWISE : n < 0 ? Tn.CLOCKWISE : Tn.NONE;\n }, Tn.angleBetweenOriented = function(t, e, n) {\n var i = Tn.angle(e, t), r = Tn.angle(e, n) - i;\n return r <= -Math.PI ? r + Tn.PI_TIMES_2 : r > Math.PI ? r - Tn.PI_TIMES_2 : r;\n }, Rn.PI_TIMES_2.get = function() {\n return 2 * Math.PI;\n }, Rn.PI_OVER_2.get = function() {\n return Math.PI / 2;\n }, Rn.PI_OVER_4.get = function() {\n return Math.PI / 4;\n }, Rn.COUNTERCLOCKWISE.get = function() {\n return at.COUNTERCLOCKWISE;\n }, Rn.CLOCKWISE.get = function() {\n return at.CLOCKWISE;\n }, Rn.NONE.get = function() {\n return at.COLLINEAR;\n }, Object.defineProperties(Tn, Rn);\n var Pn = function t() {\n this._maxCurveSegmentError = 0, this._filletAngleQuantum = null, this._closingSegLengthFactor = 1, this._segList = null, this._distance = 0, this._precisionModel = null, this._bufParams = null, this._li = null, this._s0 = null, this._s1 = null, this._s2 = null, this._seg0 = new dn, this._seg1 = new dn, this._offset0 = new dn, this._offset1 = new dn, this._side = 0, this._hasNarrowConcaveAngle = !1;\n var e = arguments[0], n = arguments[1], i = arguments[2];\n this._precisionModel = e, this._bufParams = n, this._li = new rt, this._filletAngleQuantum = Math.PI / 2 / n.getQuadrantSegments(), n.getQuadrantSegments() >= 8 && n.getJoinStyle() === Cn.JOIN_ROUND && (this._closingSegLengthFactor = t.MAX_CLOSING_SEG_LEN_FACTOR), this.init(i);\n }, Dn = {\n OFFSET_SEGMENT_SEPARATION_FACTOR: {\n configurable: !0\n },\n INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR: {\n configurable: !0\n },\n CURVE_VERTEX_SNAP_DISTANCE_FACTOR: {\n configurable: !0\n },\n MAX_CLOSING_SEG_LEN_FACTOR: {\n configurable: !0\n }\n };\n Pn.prototype.addNextSegment = function(t, e) {\n if (this._s0 = this._s1, this._s1 = this._s2, this._s2 = t, this._seg0.setCoordinates(this._s0, this._s1), this.computeOffsetSegment(this._seg0, this._side, this._distance, this._offset0), this._seg1.setCoordinates(this._s1, this._s2), this.computeOffsetSegment(this._seg1, this._side, this._distance, this._offset1), this._s1.equals(this._s2)) return null;\n var n = at.computeOrientation(this._s0, this._s1, this._s2), i = n === at.CLOCKWISE && this._side === Se.LEFT || n === at.COUNTERCLOCKWISE && this._side === Se.RIGHT;\n 0 === n ? this.addCollinear(e) : i ? this.addOutsideTurn(n, e) : this.addInsideTurn(n, e);\n }, Pn.prototype.addLineEndCap = function(t, e) {\n var n = new dn(t, e), i = new dn;\n this.computeOffsetSegment(n, Se.LEFT, this._distance, i);\n var r = new dn;\n this.computeOffsetSegment(n, Se.RIGHT, this._distance, r);\n var o = e.x - t.x, s = e.y - t.y, a = Math.atan2(s, o);\n switch(this._bufParams.getEndCapStyle()){\n case Cn.CAP_ROUND:\n this._segList.addPt(i.p1), this.addFilletArc(e, a + Math.PI / 2, a - Math.PI / 2, at.CLOCKWISE, this._distance), this._segList.addPt(r.p1);\n break;\n case Cn.CAP_FLAT:\n this._segList.addPt(i.p1), this._segList.addPt(r.p1);\n break;\n case Cn.CAP_SQUARE:\n var u = new C;\n u.x = Math.abs(this._distance) * Math.cos(a), u.y = Math.abs(this._distance) * Math.sin(a);\n var l = new C(i.p1.x + u.x, i.p1.y + u.y), c = new C(r.p1.x + u.x, r.p1.y + u.y);\n this._segList.addPt(l), this._segList.addPt(c);\n }\n }, Pn.prototype.getCoordinates = function() {\n return this._segList.getCoordinates();\n }, Pn.prototype.addMitreJoin = function(t, e, n, i) {\n var r = !0, o = null;\n try {\n o = k.intersection(e.p0, e.p1, n.p0, n.p1);\n (i <= 0 ? 1 : o.distance(t) / Math.abs(i)) > this._bufParams.getMitreLimit() && (r = !1);\n } catch (t) {\n if (!(t instanceof X)) throw t;\n o = new C(0, 0), r = !1;\n }\n r ? this._segList.addPt(o) : this.addLimitedMitreJoin(e, n, i, this._bufParams.getMitreLimit());\n }, Pn.prototype.addFilletCorner = function(t, e, n, i, r) {\n var o = e.x - t.x, s = e.y - t.y, a = Math.atan2(s, o), u = n.x - t.x, l = n.y - t.y, c = Math.atan2(l, u);\n i === at.CLOCKWISE ? a <= c && (a += 2 * Math.PI) : a >= c && (a -= 2 * Math.PI), this._segList.addPt(e), this.addFilletArc(t, a, c, i, r), this._segList.addPt(n);\n }, Pn.prototype.addOutsideTurn = function(t, e) {\n if (this._offset0.p1.distance(this._offset1.p0) < this._distance * Pn.OFFSET_SEGMENT_SEPARATION_FACTOR) return this._segList.addPt(this._offset0.p1), null;\n this._bufParams.getJoinStyle() === Cn.JOIN_MITRE ? this.addMitreJoin(this._s1, this._offset0, this._offset1, this._distance) : this._bufParams.getJoinStyle() === Cn.JOIN_BEVEL ? this.addBevelJoin(this._offset0, this._offset1) : (e && this._segList.addPt(this._offset0.p1), this.addFilletCorner(this._s1, this._offset0.p1, this._offset1.p0, t, this._distance), this._segList.addPt(this._offset1.p0));\n }, Pn.prototype.createSquare = function(t) {\n this._segList.addPt(new C(t.x + this._distance, t.y + this._distance)), this._segList.addPt(new C(t.x + this._distance, t.y - this._distance)), this._segList.addPt(new C(t.x - this._distance, t.y - this._distance)), this._segList.addPt(new C(t.x - this._distance, t.y + this._distance)), this._segList.closeRing();\n }, Pn.prototype.addSegments = function(t, e) {\n this._segList.addPts(t, e);\n }, Pn.prototype.addFirstSegment = function() {\n this._segList.addPt(this._offset1.p0);\n }, Pn.prototype.addLastSegment = function() {\n this._segList.addPt(this._offset1.p1);\n }, Pn.prototype.initSideSegments = function(t, e, n) {\n this._s1 = t, this._s2 = e, this._side = n, this._seg1.setCoordinates(t, e), this.computeOffsetSegment(this._seg1, n, this._distance, this._offset1);\n }, Pn.prototype.addLimitedMitreJoin = function(t, e, n, i) {\n var r = this._seg0.p1, o = Tn.angle(r, this._seg0.p0), s = Tn.angleBetweenOriented(this._seg0.p0, r, this._seg1.p1) / 2, a = Tn.normalize(o + s), u = Tn.normalize(a + Math.PI), l = i * n, c = n - l * Math.abs(Math.sin(s)), p = r.x + l * Math.cos(u), h = r.y + l * Math.sin(u), f = new C(p, h), g = new dn(r, f), d = g.pointAlongOffset(1, c), y = g.pointAlongOffset(1, -c);\n this._side === Se.LEFT ? (this._segList.addPt(d), this._segList.addPt(y)) : (this._segList.addPt(y), this._segList.addPt(d));\n }, Pn.prototype.computeOffsetSegment = function(t, e, n, i) {\n var r = e === Se.LEFT ? 1 : -1, o = t.p1.x - t.p0.x, s = t.p1.y - t.p0.y, a = Math.sqrt(o * o + s * s), u = r * n * o / a, l = r * n * s / a;\n i.p0.x = t.p0.x - l, i.p0.y = t.p0.y + u, i.p1.x = t.p1.x - l, i.p1.y = t.p1.y + u;\n }, Pn.prototype.addFilletArc = function(t, e, n, i, r) {\n var o = i === at.CLOCKWISE ? -1 : 1, s = Math.abs(e - n), a = Math.trunc(s / this._filletAngleQuantum + .5);\n if (a < 1) return null;\n for(var u = s / a, l = 0, c = new C; l < s;){\n var p = e + o * l;\n c.x = t.x + r * Math.cos(p), c.y = t.y + r * Math.sin(p), this._segList.addPt(c), l += u;\n }\n }, Pn.prototype.addInsideTurn = function(t, e) {\n if (this._li.computeIntersection(this._offset0.p0, this._offset0.p1, this._offset1.p0, this._offset1.p1), this._li.hasIntersection()) this._segList.addPt(this._li.getIntersection(0));\n else if (this._hasNarrowConcaveAngle = !0, this._offset0.p1.distance(this._offset1.p0) < this._distance * Pn.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR) this._segList.addPt(this._offset0.p1);\n else {\n if (this._segList.addPt(this._offset0.p1), this._closingSegLengthFactor > 0) {\n var n = new C((this._closingSegLengthFactor * this._offset0.p1.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset0.p1.y + this._s1.y) / (this._closingSegLengthFactor + 1));\n this._segList.addPt(n);\n var i = new C((this._closingSegLengthFactor * this._offset1.p0.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset1.p0.y + this._s1.y) / (this._closingSegLengthFactor + 1));\n this._segList.addPt(i);\n } else this._segList.addPt(this._s1);\n this._segList.addPt(this._offset1.p0);\n }\n }, Pn.prototype.createCircle = function(t) {\n var e = new C(t.x + this._distance, t.y);\n this._segList.addPt(e), this.addFilletArc(t, 0, 2 * Math.PI, -1, this._distance), this._segList.closeRing();\n }, Pn.prototype.addBevelJoin = function(t, e) {\n this._segList.addPt(t.p1), this._segList.addPt(e.p0);\n }, Pn.prototype.init = function(t) {\n this._distance = t, this._maxCurveSegmentError = t * (1 - Math.cos(this._filletAngleQuantum / 2)), this._segList = new wn, this._segList.setPrecisionModel(this._precisionModel), this._segList.setMinimumVertexDistance(t * Pn.CURVE_VERTEX_SNAP_DISTANCE_FACTOR);\n }, Pn.prototype.addCollinear = function(t) {\n this._li.computeIntersection(this._s0, this._s1, this._s1, this._s2);\n this._li.getIntersectionNum() >= 2 && (this._bufParams.getJoinStyle() === Cn.JOIN_BEVEL || this._bufParams.getJoinStyle() === Cn.JOIN_MITRE ? (t && this._segList.addPt(this._offset0.p1), this._segList.addPt(this._offset1.p0)) : this.addFilletCorner(this._s1, this._offset0.p1, this._offset1.p0, at.CLOCKWISE, this._distance));\n }, Pn.prototype.closeRing = function() {\n this._segList.closeRing();\n }, Pn.prototype.hasNarrowConcaveAngle = function() {\n return this._hasNarrowConcaveAngle;\n }, Pn.prototype.interfaces_ = function() {\n return [];\n }, Pn.prototype.getClass = function() {\n return Pn;\n }, Dn.OFFSET_SEGMENT_SEPARATION_FACTOR.get = function() {\n return .001;\n }, Dn.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR.get = function() {\n return .001;\n }, Dn.CURVE_VERTEX_SNAP_DISTANCE_FACTOR.get = function() {\n return 1e-6;\n }, Dn.MAX_CLOSING_SEG_LEN_FACTOR.get = function() {\n return 80;\n }, Object.defineProperties(Pn, Dn);\n var Mn = function() {\n this._distance = 0, this._precisionModel = null, this._bufParams = null;\n var t = arguments[0], e = arguments[1];\n this._precisionModel = t, this._bufParams = e;\n };\n Mn.prototype.getOffsetCurve = function(t, e) {\n if (this._distance = e, 0 === e) return null;\n var n = e < 0, i = Math.abs(e), r = this.getSegGen(i);\n t.length <= 1 ? this.computePointCurve(t[0], r) : this.computeOffsetCurve(t, n, r);\n var o = r.getCoordinates();\n return n && Lt.reverse(o), o;\n }, Mn.prototype.computeSingleSidedBufferCurve = function(t, e, n) {\n var i = this.simplifyTolerance(this._distance);\n if (e) {\n n.addSegments(t, !0);\n var r = Ln.simplify(t, -i), o = r.length - 1;\n n.initSideSegments(r[o], r[o - 1], Se.LEFT), n.addFirstSegment();\n for(var s = o - 2; s >= 0; s--)n.addNextSegment(r[s], !0);\n } else {\n n.addSegments(t, !1);\n var a = Ln.simplify(t, i), u = a.length - 1;\n n.initSideSegments(a[0], a[1], Se.LEFT), n.addFirstSegment();\n for(var l = 2; l <= u; l++)n.addNextSegment(a[l], !0);\n }\n n.addLastSegment(), n.closeRing();\n }, Mn.prototype.computeRingBufferCurve = function(t, e, n) {\n var i = this.simplifyTolerance(this._distance);\n e === Se.RIGHT && (i = -i);\n var r = Ln.simplify(t, i), o = r.length - 1;\n n.initSideSegments(r[o - 1], r[0], e);\n for(var s = 1; s <= o; s++){\n var a = 1 !== s;\n n.addNextSegment(r[s], a);\n }\n n.closeRing();\n }, Mn.prototype.computeLineBufferCurve = function(t, e) {\n var n = this.simplifyTolerance(this._distance), i = Ln.simplify(t, n), r = i.length - 1;\n e.initSideSegments(i[0], i[1], Se.LEFT);\n for(var o = 2; o <= r; o++)e.addNextSegment(i[o], !0);\n e.addLastSegment(), e.addLineEndCap(i[r - 1], i[r]);\n var s = Ln.simplify(t, -n), a = s.length - 1;\n e.initSideSegments(s[a], s[a - 1], Se.LEFT);\n for(var u = a - 2; u >= 0; u--)e.addNextSegment(s[u], !0);\n e.addLastSegment(), e.addLineEndCap(s[1], s[0]), e.closeRing();\n }, Mn.prototype.computePointCurve = function(t, e) {\n switch(this._bufParams.getEndCapStyle()){\n case Cn.CAP_ROUND:\n e.createCircle(t);\n break;\n case Cn.CAP_SQUARE:\n e.createSquare(t);\n }\n }, Mn.prototype.getLineCurve = function(t, e) {\n if (this._distance = e, e < 0 && !this._bufParams.isSingleSided()) return null;\n if (0 === e) return null;\n var n = Math.abs(e), i = this.getSegGen(n);\n if (t.length <= 1) this.computePointCurve(t[0], i);\n else if (this._bufParams.isSingleSided()) {\n var r = e < 0;\n this.computeSingleSidedBufferCurve(t, r, i);\n } else this.computeLineBufferCurve(t, i);\n return i.getCoordinates();\n }, Mn.prototype.getBufferParameters = function() {\n return this._bufParams;\n }, Mn.prototype.simplifyTolerance = function(t) {\n return t * this._bufParams.getSimplifyFactor();\n }, Mn.prototype.getRingCurve = function(t, e, n) {\n if (this._distance = n, t.length <= 2) return this.getLineCurve(t, n);\n if (0 === n) return Mn.copyCoordinates(t);\n var i = this.getSegGen(n);\n return this.computeRingBufferCurve(t, e, i), i.getCoordinates();\n }, Mn.prototype.computeOffsetCurve = function(t, e, n) {\n var i = this.simplifyTolerance(this._distance);\n if (e) {\n var r = Ln.simplify(t, -i), o = r.length - 1;\n n.initSideSegments(r[o], r[o - 1], Se.LEFT), n.addFirstSegment();\n for(var s = o - 2; s >= 0; s--)n.addNextSegment(r[s], !0);\n } else {\n var a = Ln.simplify(t, i), u = a.length - 1;\n n.initSideSegments(a[0], a[1], Se.LEFT), n.addFirstSegment();\n for(var l = 2; l <= u; l++)n.addNextSegment(a[l], !0);\n }\n n.addLastSegment();\n }, Mn.prototype.getSegGen = function(t) {\n return new Pn(this._precisionModel, this._bufParams, t);\n }, Mn.prototype.interfaces_ = function() {\n return [];\n }, Mn.prototype.getClass = function() {\n return Mn;\n }, Mn.copyCoordinates = function(t) {\n for(var e = new Array(t.length).fill(null), n = 0; n < e.length; n++)e[n] = new C(t[n]);\n return e;\n };\n var An = function() {\n this._subgraphs = null, this._seg = new dn, this._cga = new at;\n var t = arguments[0];\n this._subgraphs = t;\n }, Fn = {\n DepthSegment: {\n configurable: !0\n }\n };\n An.prototype.findStabbedSegments = function() {\n if (1 === arguments.length) {\n for(var t = arguments[0], e = new Nt, n = this._subgraphs.iterator(); n.hasNext();){\n var i = n.next(), r = i.getEnvelope();\n t.y < r.getMinY() || t.y > r.getMaxY() || this.findStabbedSegments(t, i.getDirectedEdges(), e);\n }\n return e;\n }\n if (3 === arguments.length) {\n if (T(arguments[2], xt) && arguments[0] instanceof C && arguments[1] instanceof ze) for(var o = arguments[0], s = arguments[1], a = arguments[2], u = s.getEdge().getCoordinates(), l = 0; l < u.length - 1; l++){\n this._seg.p0 = u[l], this._seg.p1 = u[l + 1], this._seg.p0.y > this._seg.p1.y && this._seg.reverse();\n if (!(Math.max(this._seg.p0.x, this._seg.p1.x) < o.x) && !(this._seg.isHorizontal() || o.y < this._seg.p0.y || o.y > this._seg.p1.y || at.computeOrientation(this._seg.p0, this._seg.p1, o) === at.RIGHT)) {\n var c = s.getDepth(Se.LEFT);\n this._seg.p0.equals(u[l]) || (c = s.getDepth(Se.RIGHT));\n var p = new Gn(this._seg, c);\n a.add(p);\n }\n }\n else if (T(arguments[2], xt) && arguments[0] instanceof C && T(arguments[1], xt)) for(var h = arguments[0], f = arguments[1], g = arguments[2], d = f.iterator(); d.hasNext();){\n var y = d.next();\n y.isForward() && this.findStabbedSegments(h, y, g);\n }\n }\n }, An.prototype.getDepth = function(t) {\n var e = this.findStabbedSegments(t);\n if (0 === e.size()) return 0;\n return $e.min(e)._leftDepth;\n }, An.prototype.interfaces_ = function() {\n return [];\n }, An.prototype.getClass = function() {\n return An;\n }, Fn.DepthSegment.get = function() {\n return Gn;\n }, Object.defineProperties(An, Fn);\n var Gn = function() {\n this._upwardSeg = null, this._leftDepth = null;\n var t = arguments[0], e = arguments[1];\n this._upwardSeg = new dn(t), this._leftDepth = e;\n };\n Gn.prototype.compareTo = function(t) {\n var e = t;\n if (this._upwardSeg.minX() >= e._upwardSeg.maxX()) return 1;\n if (this._upwardSeg.maxX() <= e._upwardSeg.minX()) return -1;\n var n = this._upwardSeg.orientationIndex(e._upwardSeg);\n return 0 !== n ? n : 0 != (n = -1 * e._upwardSeg.orientationIndex(this._upwardSeg)) ? n : this._upwardSeg.compareTo(e._upwardSeg);\n }, Gn.prototype.compareX = function(t, e) {\n var n = t.p0.compareTo(e.p0);\n return 0 !== n ? n : t.p1.compareTo(e.p1);\n }, Gn.prototype.toString = function() {\n return this._upwardSeg.toString();\n }, Gn.prototype.interfaces_ = function() {\n return [\n E\n ];\n }, Gn.prototype.getClass = function() {\n return Gn;\n };\n var qn = function(t, e, n) {\n this.p0 = t || null, this.p1 = e || null, this.p2 = n || null;\n };\n qn.prototype.area = function() {\n return qn.area(this.p0, this.p1, this.p2);\n }, qn.prototype.signedArea = function() {\n return qn.signedArea(this.p0, this.p1, this.p2);\n }, qn.prototype.interpolateZ = function(t) {\n if (null === t) throw new m(\"Supplied point is null.\");\n return qn.interpolateZ(t, this.p0, this.p1, this.p2);\n }, qn.prototype.longestSideLength = function() {\n return qn.longestSideLength(this.p0, this.p1, this.p2);\n }, qn.prototype.isAcute = function() {\n return qn.isAcute(this.p0, this.p1, this.p2);\n }, qn.prototype.circumcentre = function() {\n return qn.circumcentre(this.p0, this.p1, this.p2);\n }, qn.prototype.area3D = function() {\n return qn.area3D(this.p0, this.p1, this.p2);\n }, qn.prototype.centroid = function() {\n return qn.centroid(this.p0, this.p1, this.p2);\n }, qn.prototype.inCentre = function() {\n return qn.inCentre(this.p0, this.p1, this.p2);\n }, qn.prototype.interfaces_ = function() {\n return [];\n }, qn.prototype.getClass = function() {\n return qn;\n }, qn.area = function(t, e, n) {\n return Math.abs(((n.x - t.x) * (e.y - t.y) - (e.x - t.x) * (n.y - t.y)) / 2);\n }, qn.signedArea = function(t, e, n) {\n return ((n.x - t.x) * (e.y - t.y) - (e.x - t.x) * (n.y - t.y)) / 2;\n }, qn.det = function(t, e, n, i) {\n return t * i - e * n;\n }, qn.interpolateZ = function(t, e, n, i) {\n var r = e.x, o = e.y, s = n.x - r, a = i.x - r, u = n.y - o, l = i.y - o, c = s * l - a * u, p = t.x - r, h = t.y - o, f = (l * p - a * h) / c, g = (-u * p + s * h) / c;\n return e.z + f * (n.z - e.z) + g * (i.z - e.z);\n }, qn.longestSideLength = function(t, e, n) {\n var i = t.distance(e), r = e.distance(n), o = n.distance(t), s = i;\n return r > s && (s = r), o > s && (s = o), s;\n }, qn.isAcute = function(t, e, n) {\n return !!Tn.isAcute(t, e, n) && !!Tn.isAcute(e, n, t) && !!Tn.isAcute(n, t, e);\n }, qn.circumcentre = function(t, e, n) {\n var i = n.x, r = n.y, o = t.x - i, s = t.y - r, a = e.x - i, u = e.y - r, l = 2 * qn.det(o, s, a, u), c = qn.det(s, o * o + s * s, u, a * a + u * u), p = qn.det(o, o * o + s * s, a, a * a + u * u);\n return new C(i - c / l, r + p / l);\n }, qn.perpendicularBisector = function(t, e) {\n var n = e.x - t.x, i = e.y - t.y, r = new k(t.x + n / 2, t.y + i / 2, 1), o = new k(t.x - i + n / 2, t.y + n + i / 2, 1);\n return new k(r, o);\n }, qn.angleBisector = function(t, e, n) {\n var i = e.distance(t), r = i / (i + e.distance(n)), o = n.x - t.x, s = n.y - t.y;\n return new C(t.x + r * o, t.y + r * s);\n }, qn.area3D = function(t, e, n) {\n var i = e.x - t.x, r = e.y - t.y, o = e.z - t.z, s = n.x - t.x, a = n.y - t.y, u = n.z - t.z, l = r * u - o * a, c = o * s - i * u, p = i * a - r * s, h = l * l + c * c + p * p, f = Math.sqrt(h) / 2;\n return f;\n }, qn.centroid = function(t, e, n) {\n var i = (t.x + e.x + n.x) / 3, r = (t.y + e.y + n.y) / 3;\n return new C(i, r);\n }, qn.inCentre = function(t, e, n) {\n var i = e.distance(n), r = t.distance(n), o = t.distance(e), s = i + r + o, a = (i * t.x + r * e.x + o * n.x) / s, u = (i * t.y + r * e.y + o * n.y) / s;\n return new C(a, u);\n };\n var Bn = function() {\n this._inputGeom = null, this._distance = null, this._curveBuilder = null, this._curveList = new Nt;\n var t = arguments[0], e = arguments[1], n = arguments[2];\n this._inputGeom = t, this._distance = e, this._curveBuilder = n;\n };\n Bn.prototype.addPoint = function(t) {\n if (this._distance <= 0) return null;\n var e = t.getCoordinates(), n = this._curveBuilder.getLineCurve(e, this._distance);\n this.addCurve(n, w.EXTERIOR, w.INTERIOR);\n }, Bn.prototype.addPolygon = function(t) {\n var e = this._distance, n = Se.LEFT;\n this._distance < 0 && (e = -this._distance, n = Se.RIGHT);\n var i = t.getExteriorRing(), r = Lt.removeRepeatedPoints(i.getCoordinates());\n if (this._distance < 0 && this.isErodedCompletely(i, this._distance)) return null;\n if (this._distance <= 0 && r.length < 3) return null;\n this.addPolygonRing(r, e, n, w.EXTERIOR, w.INTERIOR);\n for(var o = 0; o < t.getNumInteriorRing(); o++){\n var s = t.getInteriorRingN(o), a = Lt.removeRepeatedPoints(s.getCoordinates());\n this._distance > 0 && this.isErodedCompletely(s, -this._distance) || this.addPolygonRing(a, e, Se.opposite(n), w.INTERIOR, w.EXTERIOR);\n }\n }, Bn.prototype.isTriangleErodedCompletely = function(t, e) {\n var n = new qn(t[0], t[1], t[2]), i = n.inCentre();\n return at.distancePointLine(i, n.p0, n.p1) < Math.abs(e);\n }, Bn.prototype.addLineString = function(t) {\n if (this._distance <= 0 && !this._curveBuilder.getBufferParameters().isSingleSided()) return null;\n var e = Lt.removeRepeatedPoints(t.getCoordinates()), n = this._curveBuilder.getLineCurve(e, this._distance);\n this.addCurve(n, w.EXTERIOR, w.INTERIOR);\n }, Bn.prototype.addCurve = function(t, e, n) {\n if (null === t || t.length < 2) return null;\n var i = new gn(t, new Pe(0, w.BOUNDARY, e, n));\n this._curveList.add(i);\n }, Bn.prototype.getCurves = function() {\n return this.add(this._inputGeom), this._curveList;\n }, Bn.prototype.addPolygonRing = function(t, e, n, i, r) {\n if (0 === e && t.length < ee.MINIMUM_VALID_SIZE) return null;\n var o = i, s = r;\n t.length >= ee.MINIMUM_VALID_SIZE && at.isCCW(t) && (o = r, s = i, n = Se.opposite(n));\n var a = this._curveBuilder.getRingCurve(t, n, e);\n this.addCurve(a, o, s);\n }, Bn.prototype.add = function(t) {\n if (t.isEmpty()) return null;\n t instanceof $t ? this.addPolygon(t) : t instanceof Kt ? this.addLineString(t) : t instanceof Qt ? this.addPoint(t) : t instanceof te ? this.addCollection(t) : t instanceof Xt ? this.addCollection(t) : t instanceof ne ? this.addCollection(t) : t instanceof zt && this.addCollection(t);\n }, Bn.prototype.isErodedCompletely = function(t, e) {\n var n = t.getCoordinates();\n if (n.length < 4) return e < 0;\n if (4 === n.length) return this.isTriangleErodedCompletely(n, e);\n var i = t.getEnvelopeInternal(), r = Math.min(i.getHeight(), i.getWidth());\n return e < 0 && 2 * Math.abs(e) > r;\n }, Bn.prototype.addCollection = function(t) {\n for(var e = 0; e < t.getNumGeometries(); e++){\n var n = t.getGeometryN(e);\n this.add(n);\n }\n }, Bn.prototype.interfaces_ = function() {\n return [];\n }, Bn.prototype.getClass = function() {\n return Bn;\n };\n var Vn = function() {};\n Vn.prototype.locate = function(t) {}, Vn.prototype.interfaces_ = function() {\n return [];\n }, Vn.prototype.getClass = function() {\n return Vn;\n };\n var Un = function() {\n this._parent = null, this._atStart = null, this._max = null, this._index = null, this._subcollectionIterator = null;\n var t = arguments[0];\n this._parent = t, this._atStart = !0, this._index = 0, this._max = t.getNumGeometries();\n };\n Un.prototype.next = function() {\n if (this._atStart) return this._atStart = !1, Un.isAtomic(this._parent) && this._index++, this._parent;\n if (null !== this._subcollectionIterator) {\n if (this._subcollectionIterator.hasNext()) return this._subcollectionIterator.next();\n this._subcollectionIterator = null;\n }\n if (this._index >= this._max) throw new i;\n var t = this._parent.getGeometryN(this._index++);\n return t instanceof zt ? (this._subcollectionIterator = new Un(t), this._subcollectionIterator.next()) : t;\n }, Un.prototype.remove = function() {\n throw new Error(this.getClass().getName());\n }, Un.prototype.hasNext = function() {\n if (this._atStart) return !0;\n if (null !== this._subcollectionIterator) {\n if (this._subcollectionIterator.hasNext()) return !0;\n this._subcollectionIterator = null;\n }\n return !(this._index >= this._max);\n }, Un.prototype.interfaces_ = function() {\n return [\n Et\n ];\n }, Un.prototype.getClass = function() {\n return Un;\n }, Un.isAtomic = function(t) {\n return !(t instanceof zt);\n };\n var zn = function() {\n this._geom = null;\n var t = arguments[0];\n this._geom = t;\n };\n zn.prototype.locate = function(t) {\n return zn.locate(t, this._geom);\n }, zn.prototype.interfaces_ = function() {\n return [\n Vn\n ];\n }, zn.prototype.getClass = function() {\n return zn;\n }, zn.isPointInRing = function(t, e) {\n return !!e.getEnvelopeInternal().intersects(t) && at.isPointInRing(t, e.getCoordinates());\n }, zn.containsPointInPolygon = function(t, e) {\n if (e.isEmpty()) return !1;\n var n = e.getExteriorRing();\n if (!zn.isPointInRing(t, n)) return !1;\n for(var i = 0; i < e.getNumInteriorRing(); i++){\n var r = e.getInteriorRingN(i);\n if (zn.isPointInRing(t, r)) return !1;\n }\n return !0;\n }, zn.containsPoint = function(t, e) {\n if (e instanceof $t) return zn.containsPointInPolygon(t, e);\n if (e instanceof zt) for(var n = new Un(e); n.hasNext();){\n var i = n.next();\n if (i !== e && zn.containsPoint(t, i)) return !0;\n }\n return !1;\n }, zn.locate = function(t, e) {\n return e.isEmpty() ? w.EXTERIOR : zn.containsPoint(t, e) ? w.INTERIOR : w.EXTERIOR;\n };\n var Xn = function() {\n this._edgeMap = new p, this._edgeList = null, this._ptInAreaLocation = [\n w.NONE,\n w.NONE\n ];\n };\n Xn.prototype.getNextCW = function(t) {\n this.getEdges();\n var e = this._edgeList.indexOf(t), n = e - 1;\n return 0 === e && (n = this._edgeList.size() - 1), this._edgeList.get(n);\n }, Xn.prototype.propagateSideLabels = function(t) {\n for(var e = w.NONE, n = this.iterator(); n.hasNext();){\n var i = n.next().getLabel();\n i.isArea(t) && i.getLocation(t, Se.LEFT) !== w.NONE && (e = i.getLocation(t, Se.LEFT));\n }\n if (e === w.NONE) return null;\n for(var r = e, o = this.iterator(); o.hasNext();){\n var s = o.next(), a = s.getLabel();\n if (a.getLocation(t, Se.ON) === w.NONE && a.setLocation(t, Se.ON, r), a.isArea(t)) {\n var u = a.getLocation(t, Se.LEFT), l = a.getLocation(t, Se.RIGHT);\n if (l !== w.NONE) {\n if (l !== r) throw new we(\"side location conflict\", s.getCoordinate());\n u === w.NONE && et.shouldNeverReachHere(\"found single null side (at \" + s.getCoordinate() + \")\"), r = u;\n } else et.isTrue(a.getLocation(t, Se.LEFT) === w.NONE, \"found single null side\"), a.setLocation(t, Se.RIGHT, r), a.setLocation(t, Se.LEFT, r);\n }\n }\n }, Xn.prototype.getCoordinate = function() {\n var t = this.iterator();\n if (!t.hasNext()) return null;\n return t.next().getCoordinate();\n }, Xn.prototype.print = function(t) {\n Y.out.println(\"EdgeEndStar: \" + this.getCoordinate());\n for(var e = this.iterator(); e.hasNext();)e.next().print(t);\n }, Xn.prototype.isAreaLabelsConsistent = function(t) {\n return this.computeEdgeEndLabels(t.getBoundaryNodeRule()), this.checkAreaLabelsConsistent(0);\n }, Xn.prototype.checkAreaLabelsConsistent = function(t) {\n var e = this.getEdges();\n if (e.size() <= 0) return !0;\n var n = e.size() - 1, i = e.get(n).getLabel().getLocation(t, Se.LEFT);\n et.isTrue(i !== w.NONE, \"Found unlabelled area edge\");\n for(var r = i, o = this.iterator(); o.hasNext();){\n var s = o.next().getLabel();\n et.isTrue(s.isArea(t), \"Found non-area edge\");\n var a = s.getLocation(t, Se.LEFT), u = s.getLocation(t, Se.RIGHT);\n if (a === u) return !1;\n if (u !== r) return !1;\n r = a;\n }\n return !0;\n }, Xn.prototype.findIndex = function(t) {\n this.iterator();\n for(var e = 0; e < this._edgeList.size(); e++){\n if (this._edgeList.get(e) === t) return e;\n }\n return -1;\n }, Xn.prototype.iterator = function() {\n return this.getEdges().iterator();\n }, Xn.prototype.getEdges = function() {\n return null === this._edgeList && (this._edgeList = new Nt(this._edgeMap.values())), this._edgeList;\n }, Xn.prototype.getLocation = function(t, e, n) {\n return this._ptInAreaLocation[t] === w.NONE && (this._ptInAreaLocation[t] = zn.locate(e, n[t].getGeometry())), this._ptInAreaLocation[t];\n }, Xn.prototype.toString = function() {\n var t = new D;\n t.append(\"EdgeEndStar: \" + this.getCoordinate()), t.append(\"\\n\");\n for(var e = this.iterator(); e.hasNext();){\n var n = e.next();\n t.append(n), t.append(\"\\n\");\n }\n return t.toString();\n }, Xn.prototype.computeEdgeEndLabels = function(t) {\n for(var e = this.iterator(); e.hasNext();)e.next().computeLabel(t);\n }, Xn.prototype.computeLabelling = function(t) {\n this.computeEdgeEndLabels(t[0].getBoundaryNodeRule()), this.propagateSideLabels(0), this.propagateSideLabels(1);\n for(var e = [\n !1,\n !1\n ], n = this.iterator(); n.hasNext();)for(var i = n.next().getLabel(), r = 0; r < 2; r++)i.isLine(r) && i.getLocation(r) === w.BOUNDARY && (e[r] = !0);\n for(var o = this.iterator(); o.hasNext();)for(var s = o.next(), a = s.getLabel(), u = 0; u < 2; u++)if (a.isAnyNull(u)) {\n var l = w.NONE;\n if (e[u]) l = w.EXTERIOR;\n else {\n var c = s.getCoordinate();\n l = this.getLocation(u, c, t);\n }\n a.setAllLocationsIfNull(u, l);\n }\n }, Xn.prototype.getDegree = function() {\n return this._edgeMap.size();\n }, Xn.prototype.insertEdgeEnd = function(t, e) {\n this._edgeMap.put(t, e), this._edgeList = null;\n }, Xn.prototype.interfaces_ = function() {\n return [];\n }, Xn.prototype.getClass = function() {\n return Xn;\n };\n var Yn = function(t) {\n function e() {\n t.call(this), this._resultAreaEdgeList = null, this._label = null, this._SCANNING_FOR_INCOMING = 1, this._LINKING_TO_OUTGOING = 2;\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.linkResultDirectedEdges = function() {\n this.getResultAreaEdges();\n for(var t = null, e = null, n = this._SCANNING_FOR_INCOMING, i = 0; i < this._resultAreaEdgeList.size(); i++){\n var r = this._resultAreaEdgeList.get(i), o = r.getSym();\n if (r.getLabel().isArea()) switch(null === t && r.isInResult() && (t = r), n){\n case this._SCANNING_FOR_INCOMING:\n if (!o.isInResult()) continue;\n e = o, n = this._LINKING_TO_OUTGOING;\n break;\n case this._LINKING_TO_OUTGOING:\n if (!r.isInResult()) continue;\n e.setNext(r), n = this._SCANNING_FOR_INCOMING;\n }\n }\n if (n === this._LINKING_TO_OUTGOING) {\n if (null === t) throw new we(\"no outgoing dirEdge found\", this.getCoordinate());\n et.isTrue(t.isInResult(), \"unable to link last incoming dirEdge\"), e.setNext(t);\n }\n }, e.prototype.insert = function(t) {\n var e = t;\n this.insertEdgeEnd(e, e);\n }, e.prototype.getRightmostEdge = function() {\n var t = this.getEdges(), e = t.size();\n if (e < 1) return null;\n var n = t.get(0);\n if (1 === e) return n;\n var i = t.get(e - 1), r = n.getQuadrant(), o = i.getQuadrant();\n return Be.isNorthern(r) && Be.isNorthern(o) ? n : Be.isNorthern(r) || Be.isNorthern(o) ? 0 !== n.getDy() ? n : 0 !== i.getDy() ? i : (et.shouldNeverReachHere(\"found two horizontal edges incident on node\"), null) : i;\n }, e.prototype.print = function(t) {\n Y.out.println(\"DirectedEdgeStar: \" + this.getCoordinate());\n for(var e = this.iterator(); e.hasNext();){\n var n = e.next();\n t.print(\"out \"), n.print(t), t.println(), t.print(\"in \"), n.getSym().print(t), t.println();\n }\n }, e.prototype.getResultAreaEdges = function() {\n if (null !== this._resultAreaEdgeList) return this._resultAreaEdgeList;\n this._resultAreaEdgeList = new Nt;\n for(var t = this.iterator(); t.hasNext();){\n var e = t.next();\n (e.isInResult() || e.getSym().isInResult()) && this._resultAreaEdgeList.add(e);\n }\n return this._resultAreaEdgeList;\n }, e.prototype.updateLabelling = function(t) {\n for(var e = this.iterator(); e.hasNext();){\n var n = e.next().getLabel();\n n.setAllLocationsIfNull(0, t.getLocation(0)), n.setAllLocationsIfNull(1, t.getLocation(1));\n }\n }, e.prototype.linkAllDirectedEdges = function() {\n this.getEdges();\n for(var t = null, e = null, n = this._edgeList.size() - 1; n >= 0; n--){\n var i = this._edgeList.get(n), r = i.getSym();\n null === e && (e = r), null !== t && r.setNext(t), t = i;\n }\n e.setNext(t);\n }, e.prototype.computeDepths = function() {\n if (1 === arguments.length) {\n var t = arguments[0], e = this.findIndex(t), n = t.getDepth(Se.LEFT), i = t.getDepth(Se.RIGHT), r = this.computeDepths(e + 1, this._edgeList.size(), n);\n if (this.computeDepths(0, e, r) !== i) throw new we(\"depth mismatch at \" + t.getCoordinate());\n } else if (3 === arguments.length) {\n for(var o = arguments[0], s = arguments[1], a = arguments[2], u = o; u < s; u++){\n var l = this._edgeList.get(u);\n l.setEdgeDepths(Se.RIGHT, a), a = l.getDepth(Se.LEFT);\n }\n return a;\n }\n }, e.prototype.mergeSymLabels = function() {\n for(var t = this.iterator(); t.hasNext();){\n var e = t.next();\n e.getLabel().merge(e.getSym().getLabel());\n }\n }, e.prototype.linkMinimalDirectedEdges = function(t) {\n for(var e = null, n = null, i = this._SCANNING_FOR_INCOMING, r = this._resultAreaEdgeList.size() - 1; r >= 0; r--){\n var o = this._resultAreaEdgeList.get(r), s = o.getSym();\n switch(null === e && o.getEdgeRing() === t && (e = o), i){\n case this._SCANNING_FOR_INCOMING:\n if (s.getEdgeRing() !== t) continue;\n n = s, i = this._LINKING_TO_OUTGOING;\n break;\n case this._LINKING_TO_OUTGOING:\n if (o.getEdgeRing() !== t) continue;\n n.setNextMin(o), i = this._SCANNING_FOR_INCOMING;\n }\n }\n i === this._LINKING_TO_OUTGOING && (et.isTrue(null !== e, \"found null for first outgoing dirEdge\"), et.isTrue(e.getEdgeRing() === t, \"unable to link last incoming dirEdge\"), n.setNextMin(e));\n }, e.prototype.getOutgoingDegree = function() {\n if (0 === arguments.length) {\n for(var t = 0, e = this.iterator(); e.hasNext();)e.next().isInResult() && t++;\n return t;\n }\n if (1 === arguments.length) {\n for(var n = arguments[0], i = 0, r = this.iterator(); r.hasNext();)r.next().getEdgeRing() === n && i++;\n return i;\n }\n }, e.prototype.getLabel = function() {\n return this._label;\n }, e.prototype.findCoveredLineEdges = function() {\n for(var t = w.NONE, e = this.iterator(); e.hasNext();){\n var n = e.next(), i = n.getSym();\n if (!n.isLineEdge()) {\n if (n.isInResult()) {\n t = w.INTERIOR;\n break;\n }\n if (i.isInResult()) {\n t = w.EXTERIOR;\n break;\n }\n }\n }\n if (t === w.NONE) return null;\n for(var r = t, o = this.iterator(); o.hasNext();){\n var s = o.next(), a = s.getSym();\n s.isLineEdge() ? s.getEdge().setCovered(r === w.INTERIOR) : (s.isInResult() && (r = w.EXTERIOR), a.isInResult() && (r = w.INTERIOR));\n }\n }, e.prototype.computeLabelling = function(e) {\n t.prototype.computeLabelling.call(this, e), this._label = new Pe(w.NONE);\n for(var n = this.iterator(); n.hasNext();)for(var i = n.next().getEdge().getLabel(), r = 0; r < 2; r++){\n var o = i.getLocation(r);\n o !== w.INTERIOR && o !== w.BOUNDARY || this._label.setLocation(r, w.INTERIOR);\n }\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e;\n }(Xn), kn = function(t) {\n function e() {\n t.apply(this, arguments);\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.createNode = function(t) {\n return new Ge(t, new Yn);\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e;\n }(Xe), jn = function t() {\n this._pts = null, this._orientation = null;\n var e = arguments[0];\n this._pts = e, this._orientation = t.orientation(e);\n };\n jn.prototype.compareTo = function(t) {\n var e = t;\n return jn.compareOriented(this._pts, this._orientation, e._pts, e._orientation);\n }, jn.prototype.interfaces_ = function() {\n return [\n E\n ];\n }, jn.prototype.getClass = function() {\n return jn;\n }, jn.orientation = function(t) {\n return 1 === Lt.increasingDirection(t);\n }, jn.compareOriented = function(t, e, n, i) {\n for(var r = e ? 1 : -1, o = i ? 1 : -1, s = e ? t.length : -1, a = i ? n.length : -1, u = e ? 0 : t.length - 1, l = i ? 0 : n.length - 1;;){\n var c = t[u].compareTo(n[l]);\n if (0 !== c) return c;\n var p = (u += r) === s, h = (l += o) === a;\n if (p && !h) return -1;\n if (!p && h) return 1;\n if (p && h) return 0;\n }\n };\n var Hn = function() {\n this._edges = new Nt, this._ocaMap = new p;\n };\n Hn.prototype.print = function(t) {\n t.print(\"MULTILINESTRING ( \");\n for(var e = 0; e < this._edges.size(); e++){\n var n = this._edges.get(e);\n e > 0 && t.print(\",\"), t.print(\"(\");\n for(var i = n.getCoordinates(), r = 0; r < i.length; r++)r > 0 && t.print(\",\"), t.print(i[r].x + \" \" + i[r].y);\n t.println(\")\");\n }\n t.print(\") \");\n }, Hn.prototype.addAll = function(t) {\n for(var e = t.iterator(); e.hasNext();)this.add(e.next());\n }, Hn.prototype.findEdgeIndex = function(t) {\n for(var e = 0; e < this._edges.size(); e++)if (this._edges.get(e).equals(t)) return e;\n return -1;\n }, Hn.prototype.iterator = function() {\n return this._edges.iterator();\n }, Hn.prototype.getEdges = function() {\n return this._edges;\n }, Hn.prototype.get = function(t) {\n return this._edges.get(t);\n }, Hn.prototype.findEqualEdge = function(t) {\n var e = new jn(t.getCoordinates());\n return this._ocaMap.get(e);\n }, Hn.prototype.add = function(t) {\n this._edges.add(t);\n var e = new jn(t.getCoordinates());\n this._ocaMap.put(e, t);\n }, Hn.prototype.interfaces_ = function() {\n return [];\n }, Hn.prototype.getClass = function() {\n return Hn;\n };\n var Wn = function() {};\n Wn.prototype.processIntersections = function(t, e, n, i) {}, Wn.prototype.isDone = function() {}, Wn.prototype.interfaces_ = function() {\n return [];\n }, Wn.prototype.getClass = function() {\n return Wn;\n };\n var Kn = function() {\n this._hasIntersection = !1, this._hasProper = !1, this._hasProperInterior = !1, this._hasInterior = !1, this._properIntersectionPoint = null, this._li = null, this._isSelfIntersection = null, this.numIntersections = 0, this.numInteriorIntersections = 0, this.numProperIntersections = 0, this.numTests = 0;\n var t = arguments[0];\n this._li = t;\n };\n Kn.prototype.isTrivialIntersection = function(t, e, n, i) {\n if (t === n && 1 === this._li.getIntersectionNum()) {\n if (Kn.isAdjacentSegments(e, i)) return !0;\n if (t.isClosed()) {\n var r = t.size() - 1;\n if (0 === e && i === r || 0 === i && e === r) return !0;\n }\n }\n return !1;\n }, Kn.prototype.getProperIntersectionPoint = function() {\n return this._properIntersectionPoint;\n }, Kn.prototype.hasProperInteriorIntersection = function() {\n return this._hasProperInterior;\n }, Kn.prototype.getLineIntersector = function() {\n return this._li;\n }, Kn.prototype.hasProperIntersection = function() {\n return this._hasProper;\n }, Kn.prototype.processIntersections = function(t, e, n, i) {\n if (t === n && e === i) return null;\n this.numTests++;\n var r = t.getCoordinates()[e], o = t.getCoordinates()[e + 1], s = n.getCoordinates()[i], a = n.getCoordinates()[i + 1];\n this._li.computeIntersection(r, o, s, a), this._li.hasIntersection() && (this.numIntersections++, this._li.isInteriorIntersection() && (this.numInteriorIntersections++, this._hasInterior = !0), this.isTrivialIntersection(t, e, n, i) || (this._hasIntersection = !0, t.addIntersections(this._li, e, 0), n.addIntersections(this._li, i, 1), this._li.isProper() && (this.numProperIntersections++, this._hasProper = !0, this._hasProperInterior = !0)));\n }, Kn.prototype.hasIntersection = function() {\n return this._hasIntersection;\n }, Kn.prototype.isDone = function() {\n return !1;\n }, Kn.prototype.hasInteriorIntersection = function() {\n return this._hasInterior;\n }, Kn.prototype.interfaces_ = function() {\n return [\n Wn\n ];\n }, Kn.prototype.getClass = function() {\n return Kn;\n }, Kn.isAdjacentSegments = function(t, e) {\n return 1 === Math.abs(t - e);\n };\n var Jn = function() {\n this.coord = null, this.segmentIndex = null, this.dist = null;\n var t = arguments[0], e = arguments[1], n = arguments[2];\n this.coord = new C(t), this.segmentIndex = e, this.dist = n;\n };\n Jn.prototype.getSegmentIndex = function() {\n return this.segmentIndex;\n }, Jn.prototype.getCoordinate = function() {\n return this.coord;\n }, Jn.prototype.print = function(t) {\n t.print(this.coord), t.print(\" seg # = \" + this.segmentIndex), t.println(\" dist = \" + this.dist);\n }, Jn.prototype.compareTo = function(t) {\n var e = t;\n return this.compare(e.segmentIndex, e.dist);\n }, Jn.prototype.isEndPoint = function(t) {\n return 0 === this.segmentIndex && 0 === this.dist || this.segmentIndex === t;\n }, Jn.prototype.toString = function() {\n return this.coord + \" seg # = \" + this.segmentIndex + \" dist = \" + this.dist;\n }, Jn.prototype.getDistance = function() {\n return this.dist;\n }, Jn.prototype.compare = function(t, e) {\n return this.segmentIndex < t ? -1 : this.segmentIndex > t ? 1 : this.dist < e ? -1 : this.dist > e ? 1 : 0;\n }, Jn.prototype.interfaces_ = function() {\n return [\n E\n ];\n }, Jn.prototype.getClass = function() {\n return Jn;\n };\n var Qn = function() {\n this._nodeMap = new p, this.edge = null;\n var t = arguments[0];\n this.edge = t;\n };\n Qn.prototype.print = function(t) {\n t.println(\"Intersections:\");\n for(var e = this.iterator(); e.hasNext();)e.next().print(t);\n }, Qn.prototype.iterator = function() {\n return this._nodeMap.values().iterator();\n }, Qn.prototype.addSplitEdges = function(t) {\n this.addEndpoints();\n for(var e = this.iterator(), n = e.next(); e.hasNext();){\n var i = e.next(), r = this.createSplitEdge(n, i);\n t.add(r), n = i;\n }\n }, Qn.prototype.addEndpoints = function() {\n var t = this.edge.pts.length - 1;\n this.add(this.edge.pts[0], 0, 0), this.add(this.edge.pts[t], t, 0);\n }, Qn.prototype.createSplitEdge = function(t, e) {\n var n = e.segmentIndex - t.segmentIndex + 2, i = this.edge.pts[e.segmentIndex], r = e.dist > 0 || !e.coord.equals2D(i);\n r || n--;\n var o = new Array(n).fill(null), s = 0;\n o[s++] = new C(t.coord);\n for(var a = t.segmentIndex + 1; a <= e.segmentIndex; a++)o[s++] = this.edge.pts[a];\n return r && (o[s] = e.coord), new ni(o, new Pe(this.edge._label));\n }, Qn.prototype.add = function(t, e, n) {\n var i = new Jn(t, e, n), r = this._nodeMap.get(i);\n return null !== r ? r : (this._nodeMap.put(i, i), i);\n }, Qn.prototype.isIntersection = function(t) {\n for(var e = this.iterator(); e.hasNext();){\n if (e.next().coord.equals(t)) return !0;\n }\n return !1;\n }, Qn.prototype.interfaces_ = function() {\n return [];\n }, Qn.prototype.getClass = function() {\n return Qn;\n };\n var Zn = function() {};\n Zn.prototype.getChainStartIndices = function(t) {\n var e = 0, n = new Nt;\n n.add(new M(e));\n do {\n var i = this.findChainEnd(t, e);\n n.add(new M(i)), e = i;\n }while (e < t.length - 1);\n return Zn.toIntArray(n);\n }, Zn.prototype.findChainEnd = function(t, e) {\n for(var n = Be.quadrant(t[e], t[e + 1]), i = e + 1; i < t.length;){\n if (Be.quadrant(t[i - 1], t[i]) !== n) break;\n i++;\n }\n return i - 1;\n }, Zn.prototype.interfaces_ = function() {\n return [];\n }, Zn.prototype.getClass = function() {\n return Zn;\n }, Zn.toIntArray = function(t) {\n for(var e = new Array(t.size()).fill(null), n = 0; n < e.length; n++)e[n] = t.get(n).intValue();\n return e;\n };\n var $n = function() {\n this.e = null, this.pts = null, this.startIndex = null, this.env1 = new j, this.env2 = new j;\n var t = arguments[0];\n this.e = t, this.pts = t.getCoordinates();\n var e = new Zn;\n this.startIndex = e.getChainStartIndices(this.pts);\n };\n $n.prototype.getCoordinates = function() {\n return this.pts;\n }, $n.prototype.getMaxX = function(t) {\n var e = this.pts[this.startIndex[t]].x, n = this.pts[this.startIndex[t + 1]].x;\n return e > n ? e : n;\n }, $n.prototype.getMinX = function(t) {\n var e = this.pts[this.startIndex[t]].x, n = this.pts[this.startIndex[t + 1]].x;\n return e < n ? e : n;\n }, $n.prototype.computeIntersectsForChain = function() {\n if (4 === arguments.length) {\n var t = arguments[0], e = arguments[1], n = arguments[2], i = arguments[3];\n this.computeIntersectsForChain(this.startIndex[t], this.startIndex[t + 1], e, e.startIndex[n], e.startIndex[n + 1], i);\n } else if (6 === arguments.length) {\n var r = arguments[0], o = arguments[1], s = arguments[2], a = arguments[3], u = arguments[4], l = arguments[5], c = this.pts[r], p = this.pts[o], h = s.pts[a], f = s.pts[u];\n if (o - r == 1 && u - a == 1) return l.addIntersections(this.e, r, s.e, a), null;\n if (this.env1.init(c, p), this.env2.init(h, f), !this.env1.intersects(this.env2)) return null;\n var g = Math.trunc((r + o) / 2), d = Math.trunc((a + u) / 2);\n r < g && (a < d && this.computeIntersectsForChain(r, g, s, a, d, l), d < u && this.computeIntersectsForChain(r, g, s, d, u, l)), g < o && (a < d && this.computeIntersectsForChain(g, o, s, a, d, l), d < u && this.computeIntersectsForChain(g, o, s, d, u, l));\n }\n }, $n.prototype.getStartIndexes = function() {\n return this.startIndex;\n }, $n.prototype.computeIntersects = function(t, e) {\n for(var n = 0; n < this.startIndex.length - 1; n++)for(var i = 0; i < t.startIndex.length - 1; i++)this.computeIntersectsForChain(n, t, i, e);\n }, $n.prototype.interfaces_ = function() {\n return [];\n }, $n.prototype.getClass = function() {\n return $n;\n };\n var ti = function t() {\n this._depth = Array(2).fill().map(function() {\n return Array(3);\n });\n for(var e = 0; e < 2; e++)for(var n = 0; n < 3; n++)this._depth[e][n] = t.NULL_VALUE;\n }, ei = {\n NULL_VALUE: {\n configurable: !0\n }\n };\n ti.prototype.getDepth = function(t, e) {\n return this._depth[t][e];\n }, ti.prototype.setDepth = function(t, e, n) {\n this._depth[t][e] = n;\n }, ti.prototype.isNull = function() {\n if (0 === arguments.length) {\n for(var t = 0; t < 2; t++)for(var e = 0; e < 3; e++)if (this._depth[t][e] !== ti.NULL_VALUE) return !1;\n return !0;\n }\n if (1 === arguments.length) {\n var n = arguments[0];\n return this._depth[n][1] === ti.NULL_VALUE;\n }\n if (2 === arguments.length) {\n var i = arguments[0], r = arguments[1];\n return this._depth[i][r] === ti.NULL_VALUE;\n }\n }, ti.prototype.normalize = function() {\n for(var t = 0; t < 2; t++)if (!this.isNull(t)) {\n var e = this._depth[t][1];\n this._depth[t][2] < e && (e = this._depth[t][2]), e < 0 && (e = 0);\n for(var n = 1; n < 3; n++){\n var i = 0;\n this._depth[t][n] > e && (i = 1), this._depth[t][n] = i;\n }\n }\n }, ti.prototype.getDelta = function(t) {\n return this._depth[t][Se.RIGHT] - this._depth[t][Se.LEFT];\n }, ti.prototype.getLocation = function(t, e) {\n return this._depth[t][e] <= 0 ? w.EXTERIOR : w.INTERIOR;\n }, ti.prototype.toString = function() {\n return \"A: \" + this._depth[0][1] + \",\" + this._depth[0][2] + \" B: \" + this._depth[1][1] + \",\" + this._depth[1][2];\n }, ti.prototype.add = function() {\n if (1 === arguments.length) for(var t = arguments[0], e = 0; e < 2; e++)for(var n = 1; n < 3; n++){\n var i = t.getLocation(e, n);\n i !== w.EXTERIOR && i !== w.INTERIOR || (this.isNull(e, n) ? this._depth[e][n] = ti.depthAtLocation(i) : this._depth[e][n] += ti.depthAtLocation(i));\n }\n else if (3 === arguments.length) {\n var r = arguments[0], o = arguments[1];\n arguments[2] === w.INTERIOR && this._depth[r][o]++;\n }\n }, ti.prototype.interfaces_ = function() {\n return [];\n }, ti.prototype.getClass = function() {\n return ti;\n }, ti.depthAtLocation = function(t) {\n return t === w.EXTERIOR ? 0 : t === w.INTERIOR ? 1 : ti.NULL_VALUE;\n }, ei.NULL_VALUE.get = function() {\n return -1;\n }, Object.defineProperties(ti, ei);\n var ni = function(t) {\n function e() {\n if (t.call(this), this.pts = null, this._env = null, this.eiList = new Qn(this), this._name = null, this._mce = null, this._isIsolated = !0, this._depth = new ti, this._depthDelta = 0, 1 === arguments.length) {\n var n = arguments[0];\n e.call(this, n, null);\n } else if (2 === arguments.length) {\n var i = arguments[0], r = arguments[1];\n this.pts = i, this._label = r;\n }\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.getDepth = function() {\n return this._depth;\n }, e.prototype.getCollapsedEdge = function() {\n var t = new Array(2).fill(null);\n t[0] = this.pts[0], t[1] = this.pts[1];\n return new e(t, Pe.toLineLabel(this._label));\n }, e.prototype.isIsolated = function() {\n return this._isIsolated;\n }, e.prototype.getCoordinates = function() {\n return this.pts;\n }, e.prototype.setIsolated = function(t) {\n this._isIsolated = t;\n }, e.prototype.setName = function(t) {\n this._name = t;\n }, e.prototype.equals = function(t) {\n if (!(t instanceof e)) return !1;\n var n = t;\n if (this.pts.length !== n.pts.length) return !1;\n for(var i = !0, r = !0, o = this.pts.length, s = 0; s < this.pts.length; s++)if (this.pts[s].equals2D(n.pts[s]) || (i = !1), this.pts[s].equals2D(n.pts[--o]) || (r = !1), !i && !r) return !1;\n return !0;\n }, e.prototype.getCoordinate = function() {\n if (0 === arguments.length) return this.pts.length > 0 ? this.pts[0] : null;\n if (1 === arguments.length) {\n var t = arguments[0];\n return this.pts[t];\n }\n }, e.prototype.print = function(t) {\n t.print(\"edge \" + this._name + \": \"), t.print(\"LINESTRING (\");\n for(var e = 0; e < this.pts.length; e++)e > 0 && t.print(\",\"), t.print(this.pts[e].x + \" \" + this.pts[e].y);\n t.print(\") \" + this._label + \" \" + this._depthDelta);\n }, e.prototype.computeIM = function(t) {\n e.updateIM(this._label, t);\n }, e.prototype.isCollapsed = function() {\n return !!this._label.isArea() && 3 === this.pts.length && !!this.pts[0].equals(this.pts[2]);\n }, e.prototype.isClosed = function() {\n return this.pts[0].equals(this.pts[this.pts.length - 1]);\n }, e.prototype.getMaximumSegmentIndex = function() {\n return this.pts.length - 1;\n }, e.prototype.getDepthDelta = function() {\n return this._depthDelta;\n }, e.prototype.getNumPoints = function() {\n return this.pts.length;\n }, e.prototype.printReverse = function(t) {\n t.print(\"edge \" + this._name + \": \");\n for(var e = this.pts.length - 1; e >= 0; e--)t.print(this.pts[e] + \" \");\n t.println(\"\");\n }, e.prototype.getMonotoneChainEdge = function() {\n return null === this._mce && (this._mce = new $n(this)), this._mce;\n }, e.prototype.getEnvelope = function() {\n if (null === this._env) {\n this._env = new j;\n for(var t = 0; t < this.pts.length; t++)this._env.expandToInclude(this.pts[t]);\n }\n return this._env;\n }, e.prototype.addIntersection = function(t, e, n, i) {\n var r = new C(t.getIntersection(i)), o = e, s = t.getEdgeDistance(n, i), a = o + 1;\n if (a < this.pts.length) {\n var u = this.pts[a];\n r.equals2D(u) && (o = a, s = 0);\n }\n this.eiList.add(r, o, s);\n }, e.prototype.toString = function() {\n var t = new D;\n t.append(\"edge \" + this._name + \": \"), t.append(\"LINESTRING (\");\n for(var e = 0; e < this.pts.length; e++)e > 0 && t.append(\",\"), t.append(this.pts[e].x + \" \" + this.pts[e].y);\n return t.append(\") \" + this._label + \" \" + this._depthDelta), t.toString();\n }, e.prototype.isPointwiseEqual = function(t) {\n if (this.pts.length !== t.pts.length) return !1;\n for(var e = 0; e < this.pts.length; e++)if (!this.pts[e].equals2D(t.pts[e])) return !1;\n return !0;\n }, e.prototype.setDepthDelta = function(t) {\n this._depthDelta = t;\n }, e.prototype.getEdgeIntersectionList = function() {\n return this.eiList;\n }, e.prototype.addIntersections = function(t, e, n) {\n for(var i = 0; i < t.getIntersectionNum(); i++)this.addIntersection(t, e, n, i);\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e.updateIM = function() {\n if (2 !== arguments.length) return t.prototype.updateIM.apply(this, arguments);\n var e = arguments[0], n = arguments[1];\n n.setAtLeastIfValid(e.getLocation(0, Se.ON), e.getLocation(1, Se.ON), 1), e.isArea() && (n.setAtLeastIfValid(e.getLocation(0, Se.LEFT), e.getLocation(1, Se.LEFT), 2), n.setAtLeastIfValid(e.getLocation(0, Se.RIGHT), e.getLocation(1, Se.RIGHT), 2));\n }, e;\n }(Fe), ii = function(t) {\n this._workingPrecisionModel = null, this._workingNoder = null, this._geomFact = null, this._graph = null, this._edgeList = new Hn, this._bufParams = t || null;\n };\n ii.prototype.setWorkingPrecisionModel = function(t) {\n this._workingPrecisionModel = t;\n }, ii.prototype.insertUniqueEdge = function(t) {\n var e = this._edgeList.findEqualEdge(t);\n if (null !== e) {\n var n = e.getLabel(), i = t.getLabel();\n e.isPointwiseEqual(t) || (i = new Pe(t.getLabel())).flip(), n.merge(i);\n var r = ii.depthDelta(i), o = e.getDepthDelta() + r;\n e.setDepthDelta(o);\n } else this._edgeList.add(t), t.setDepthDelta(ii.depthDelta(t.getLabel()));\n }, ii.prototype.buildSubgraphs = function(t, e) {\n for(var n = new Nt, i = t.iterator(); i.hasNext();){\n var r = i.next(), o = r.getRightmostCoordinate(), s = new An(n).getDepth(o);\n r.computeDepth(s), r.findResultEdges(), n.add(r), e.add(r.getDirectedEdges(), r.getNodes());\n }\n }, ii.prototype.createSubgraphs = function(t) {\n for(var e = new Nt, n = t.getNodes().iterator(); n.hasNext();){\n var i = n.next();\n if (!i.isVisited()) {\n var r = new Te;\n r.create(i), e.add(r);\n }\n }\n return $e.sort(e, $e.reverseOrder()), e;\n }, ii.prototype.createEmptyResultGeometry = function() {\n return this._geomFact.createPolygon();\n }, ii.prototype.getNoder = function(t) {\n if (null !== this._workingNoder) return this._workingNoder;\n var e = new xn, n = new rt;\n return n.setPrecisionModel(t), e.setSegmentIntersector(new Kn(n)), e;\n }, ii.prototype.buffer = function(t, e) {\n var n = this._workingPrecisionModel;\n null === n && (n = t.getPrecisionModel()), this._geomFact = t.getFactory();\n var i = new Mn(n, this._bufParams), r = new Bn(t, e, i).getCurves();\n if (r.size() <= 0) return this.createEmptyResultGeometry();\n this.computeNodedEdges(r, n), this._graph = new Ye(new kn), this._graph.addEdges(this._edgeList.getEdges());\n var o = this.createSubgraphs(this._graph), s = new ke(this._geomFact);\n this.buildSubgraphs(o, s);\n var a = s.getPolygons();\n if (a.size() <= 0) return this.createEmptyResultGeometry();\n return this._geomFact.buildGeometry(a);\n }, ii.prototype.computeNodedEdges = function(t, e) {\n var n = this.getNoder(e);\n n.computeNodes(t);\n for(var i = n.getNodedSubstrings().iterator(); i.hasNext();){\n var r = i.next(), o = r.getCoordinates();\n if (2 !== o.length || !o[0].equals2D(o[1])) {\n var s = r.getData(), a = new ni(r.getCoordinates(), new Pe(s));\n this.insertUniqueEdge(a);\n }\n }\n }, ii.prototype.setNoder = function(t) {\n this._workingNoder = t;\n }, ii.prototype.interfaces_ = function() {\n return [];\n }, ii.prototype.getClass = function() {\n return ii;\n }, ii.depthDelta = function(t) {\n var e = t.getLocation(0, Se.LEFT), n = t.getLocation(0, Se.RIGHT);\n return e === w.INTERIOR && n === w.EXTERIOR ? 1 : e === w.EXTERIOR && n === w.INTERIOR ? -1 : 0;\n }, ii.convertSegStrings = function(t) {\n for(var e = new _e, n = new Nt; t.hasNext();){\n var i = t.next(), r = e.createLineString(i.getCoordinates());\n n.add(r);\n }\n return e.buildGeometry(n);\n };\n var ri = function() {\n if (this._noder = null, this._scaleFactor = null, this._offsetX = null, this._offsetY = null, this._isScaled = !1, 2 === arguments.length) {\n var t = arguments[0], e = arguments[1];\n this._noder = t, this._scaleFactor = e, this._offsetX = 0, this._offsetY = 0, this._isScaled = !this.isIntegerPrecision();\n } else if (4 === arguments.length) {\n var n = arguments[0], i = arguments[1], r = arguments[2], o = arguments[3];\n this._noder = n, this._scaleFactor = i, this._offsetX = r, this._offsetY = o, this._isScaled = !this.isIntegerPrecision();\n }\n };\n ri.prototype.rescale = function() {\n if (T(arguments[0], It)) for(var t = arguments[0].iterator(); t.hasNext();){\n var e = t.next();\n this.rescale(e.getCoordinates());\n }\n else if (arguments[0] instanceof Array) {\n for(var n = arguments[0], i = 0; i < n.length; i++)n[i].x = n[i].x / this._scaleFactor + this._offsetX, n[i].y = n[i].y / this._scaleFactor + this._offsetY;\n 2 === n.length && n[0].equals2D(n[1]) && Y.out.println(n);\n }\n }, ri.prototype.scale = function() {\n if (T(arguments[0], It)) {\n for(var t = arguments[0], e = new Nt, n = t.iterator(); n.hasNext();){\n var i = n.next();\n e.add(new gn(this.scale(i.getCoordinates()), i.getData()));\n }\n return e;\n }\n if (arguments[0] instanceof Array) {\n for(var r = arguments[0], o = new Array(r.length).fill(null), s = 0; s < r.length; s++)o[s] = new C(Math.round((r[s].x - this._offsetX) * this._scaleFactor), Math.round((r[s].y - this._offsetY) * this._scaleFactor), r[s].z);\n return Lt.removeRepeatedPoints(o);\n }\n }, ri.prototype.isIntegerPrecision = function() {\n return 1 === this._scaleFactor;\n }, ri.prototype.getNodedSubstrings = function() {\n var t = this._noder.getNodedSubstrings();\n return this._isScaled && this.rescale(t), t;\n }, ri.prototype.computeNodes = function(t) {\n var e = t;\n this._isScaled && (e = this.scale(t)), this._noder.computeNodes(e);\n }, ri.prototype.interfaces_ = function() {\n return [\n In\n ];\n }, ri.prototype.getClass = function() {\n return ri;\n };\n var oi = function() {\n this._li = new rt, this._segStrings = null;\n var t = arguments[0];\n this._segStrings = t;\n }, si = {\n fact: {\n configurable: !0\n }\n };\n oi.prototype.checkEndPtVertexIntersections = function() {\n if (0 === arguments.length) for(var t = this._segStrings.iterator(); t.hasNext();){\n var e = t.next().getCoordinates();\n this.checkEndPtVertexIntersections(e[0], this._segStrings), this.checkEndPtVertexIntersections(e[e.length - 1], this._segStrings);\n }\n else if (2 === arguments.length) {\n for(var n = arguments[0], i = arguments[1].iterator(); i.hasNext();)for(var r = i.next().getCoordinates(), o = 1; o < r.length - 1; o++)if (r[o].equals(n)) throw new $(\"found endpt/interior pt intersection at index \" + o + \" :pt \" + n);\n }\n }, oi.prototype.checkInteriorIntersections = function() {\n if (0 === arguments.length) for(var t = this._segStrings.iterator(); t.hasNext();)for(var e = t.next(), n = this._segStrings.iterator(); n.hasNext();){\n var i = n.next();\n this.checkInteriorIntersections(e, i);\n }\n else if (2 === arguments.length) for(var r = arguments[0], o = arguments[1], s = r.getCoordinates(), a = o.getCoordinates(), u = 0; u < s.length - 1; u++)for(var l = 0; l < a.length - 1; l++)this.checkInteriorIntersections(r, u, o, l);\n else if (4 === arguments.length) {\n var c = arguments[0], p = arguments[1], h = arguments[2], f = arguments[3];\n if (c === h && p === f) return null;\n var g = c.getCoordinates()[p], d = c.getCoordinates()[p + 1], y = h.getCoordinates()[f], _ = h.getCoordinates()[f + 1];\n if (this._li.computeIntersection(g, d, y, _), this._li.hasIntersection() && (this._li.isProper() || this.hasInteriorIntersection(this._li, g, d) || this.hasInteriorIntersection(this._li, y, _))) throw new $(\"found non-noded intersection at \" + g + \"-\" + d + \" and \" + y + \"-\" + _);\n }\n }, oi.prototype.checkValid = function() {\n this.checkEndPtVertexIntersections(), this.checkInteriorIntersections(), this.checkCollapses();\n }, oi.prototype.checkCollapses = function() {\n if (0 === arguments.length) for(var t = this._segStrings.iterator(); t.hasNext();){\n var e = t.next();\n this.checkCollapses(e);\n }\n else if (1 === arguments.length) for(var n = arguments[0].getCoordinates(), i = 0; i < n.length - 2; i++)this.checkCollapse(n[i], n[i + 1], n[i + 2]);\n }, oi.prototype.hasInteriorIntersection = function(t, e, n) {\n for(var i = 0; i < t.getIntersectionNum(); i++){\n var r = t.getIntersection(i);\n if (!r.equals(e) && !r.equals(n)) return !0;\n }\n return !1;\n }, oi.prototype.checkCollapse = function(t, e, n) {\n if (t.equals(n)) throw new $(\"found non-noded collapse at \" + oi.fact.createLineString([\n t,\n e,\n n\n ]));\n }, oi.prototype.interfaces_ = function() {\n return [];\n }, oi.prototype.getClass = function() {\n return oi;\n }, si.fact.get = function() {\n return new _e;\n }, Object.defineProperties(oi, si);\n var ai = function() {\n this._li = null, this._pt = null, this._originalPt = null, this._ptScaled = null, this._p0Scaled = null, this._p1Scaled = null, this._scaleFactor = null, this._minx = null, this._maxx = null, this._miny = null, this._maxy = null, this._corner = new Array(4).fill(null), this._safeEnv = null;\n var t = arguments[0], e = arguments[1], n = arguments[2];\n if (this._originalPt = t, this._pt = t, this._scaleFactor = e, this._li = n, e <= 0) throw new m(\"Scale factor must be non-zero\");\n 1 !== e && (this._pt = new C(this.scale(t.x), this.scale(t.y)), this._p0Scaled = new C, this._p1Scaled = new C), this.initCorners(this._pt);\n }, ui = {\n SAFE_ENV_EXPANSION_FACTOR: {\n configurable: !0\n }\n };\n ai.prototype.intersectsScaled = function(t, e) {\n var n = Math.min(t.x, e.x), i = Math.max(t.x, e.x), r = Math.min(t.y, e.y), o = Math.max(t.y, e.y), s = this._maxx < n || this._minx > i || this._maxy < r || this._miny > o;\n if (s) return !1;\n var a = this.intersectsToleranceSquare(t, e);\n return et.isTrue(!(s && a), \"Found bad envelope test\"), a;\n }, ai.prototype.initCorners = function(t) {\n this._minx = t.x - .5, this._maxx = t.x + .5, this._miny = t.y - .5, this._maxy = t.y + .5, this._corner[0] = new C(this._maxx, this._maxy), this._corner[1] = new C(this._minx, this._maxy), this._corner[2] = new C(this._minx, this._miny), this._corner[3] = new C(this._maxx, this._miny);\n }, ai.prototype.intersects = function(t, e) {\n return 1 === this._scaleFactor ? this.intersectsScaled(t, e) : (this.copyScaled(t, this._p0Scaled), this.copyScaled(e, this._p1Scaled), this.intersectsScaled(this._p0Scaled, this._p1Scaled));\n }, ai.prototype.scale = function(t) {\n return Math.round(t * this._scaleFactor);\n }, ai.prototype.getCoordinate = function() {\n return this._originalPt;\n }, ai.prototype.copyScaled = function(t, e) {\n e.x = this.scale(t.x), e.y = this.scale(t.y);\n }, ai.prototype.getSafeEnvelope = function() {\n if (null === this._safeEnv) {\n var t = ai.SAFE_ENV_EXPANSION_FACTOR / this._scaleFactor;\n this._safeEnv = new j(this._originalPt.x - t, this._originalPt.x + t, this._originalPt.y - t, this._originalPt.y + t);\n }\n return this._safeEnv;\n }, ai.prototype.intersectsPixelClosure = function(t, e) {\n return this._li.computeIntersection(t, e, this._corner[0], this._corner[1]), !!this._li.hasIntersection() || (this._li.computeIntersection(t, e, this._corner[1], this._corner[2]), !!this._li.hasIntersection() || (this._li.computeIntersection(t, e, this._corner[2], this._corner[3]), !!this._li.hasIntersection() || (this._li.computeIntersection(t, e, this._corner[3], this._corner[0]), !!this._li.hasIntersection())));\n }, ai.prototype.intersectsToleranceSquare = function(t, e) {\n var n = !1, i = !1;\n return this._li.computeIntersection(t, e, this._corner[0], this._corner[1]), !!this._li.isProper() || (this._li.computeIntersection(t, e, this._corner[1], this._corner[2]), !!this._li.isProper() || (this._li.hasIntersection() && (n = !0), this._li.computeIntersection(t, e, this._corner[2], this._corner[3]), !!this._li.isProper() || (this._li.hasIntersection() && (i = !0), this._li.computeIntersection(t, e, this._corner[3], this._corner[0]), !!this._li.isProper() || !(!n || !i) || !!t.equals(this._pt) || !!e.equals(this._pt))));\n }, ai.prototype.addSnappedNode = function(t, e) {\n var n = t.getCoordinate(e), i = t.getCoordinate(e + 1);\n return !!this.intersects(n, i) && (t.addIntersection(this.getCoordinate(), e), !0);\n }, ai.prototype.interfaces_ = function() {\n return [];\n }, ai.prototype.getClass = function() {\n return ai;\n }, ui.SAFE_ENV_EXPANSION_FACTOR.get = function() {\n return .75;\n }, Object.defineProperties(ai, ui);\n var li = function() {\n this.tempEnv1 = new j, this.selectedSegment = new dn;\n };\n li.prototype.select = function() {\n if (1 === arguments.length) ;\n else if (2 === arguments.length) {\n var t = arguments[0], e = arguments[1];\n t.getLineSegment(e, this.selectedSegment), this.select(this.selectedSegment);\n }\n }, li.prototype.interfaces_ = function() {\n return [];\n }, li.prototype.getClass = function() {\n return li;\n };\n var ci = function() {\n this._index = null;\n var t = arguments[0];\n this._index = t;\n }, pi = {\n HotPixelSnapAction: {\n configurable: !0\n }\n };\n ci.prototype.snap = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n return this.snap(t, null, -1);\n }\n if (3 === arguments.length) {\n var e = arguments[0], n = arguments[1], i = arguments[2], r = e.getSafeEnvelope(), o = new hi(e, n, i);\n return this._index.query(r, {\n interfaces_: function() {\n return [\n Ke\n ];\n },\n visitItem: function(t) {\n t.select(r, o);\n }\n }), o.isNodeAdded();\n }\n }, ci.prototype.interfaces_ = function() {\n return [];\n }, ci.prototype.getClass = function() {\n return ci;\n }, pi.HotPixelSnapAction.get = function() {\n return hi;\n }, Object.defineProperties(ci, pi);\n var hi = function(t) {\n function e() {\n t.call(this), this._hotPixel = null, this._parentEdge = null, this._hotPixelVertexIndex = null, this._isNodeAdded = !1;\n var e = arguments[0], n = arguments[1], i = arguments[2];\n this._hotPixel = e, this._parentEdge = n, this._hotPixelVertexIndex = i;\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.isNodeAdded = function() {\n return this._isNodeAdded;\n }, e.prototype.select = function() {\n if (2 !== arguments.length) return t.prototype.select.apply(this, arguments);\n var e = arguments[0], n = arguments[1], i = e.getContext();\n if (null !== this._parentEdge && i === this._parentEdge && n === this._hotPixelVertexIndex) return null;\n this._isNodeAdded = this._hotPixel.addSnappedNode(i, n);\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e;\n }(li), fi = function() {\n this._li = null, this._interiorIntersections = null;\n var t = arguments[0];\n this._li = t, this._interiorIntersections = new Nt;\n };\n fi.prototype.processIntersections = function(t, e, n, i) {\n if (t === n && e === i) return null;\n var r = t.getCoordinates()[e], o = t.getCoordinates()[e + 1], s = n.getCoordinates()[i], a = n.getCoordinates()[i + 1];\n if (this._li.computeIntersection(r, o, s, a), this._li.hasIntersection() && this._li.isInteriorIntersection()) {\n for(var u = 0; u < this._li.getIntersectionNum(); u++)this._interiorIntersections.add(this._li.getIntersection(u));\n t.addIntersections(this._li, e, 0), n.addIntersections(this._li, i, 1);\n }\n }, fi.prototype.isDone = function() {\n return !1;\n }, fi.prototype.getInteriorIntersections = function() {\n return this._interiorIntersections;\n }, fi.prototype.interfaces_ = function() {\n return [\n Wn\n ];\n }, fi.prototype.getClass = function() {\n return fi;\n };\n var gi = function() {\n this._pm = null, this._li = null, this._scaleFactor = null, this._noder = null, this._pointSnapper = null, this._nodedSegStrings = null;\n var t = arguments[0];\n this._pm = t, this._li = new rt, this._li.setPrecisionModel(t), this._scaleFactor = t.getScale();\n };\n gi.prototype.checkCorrectness = function(t) {\n var e = gn.getNodedSubstrings(t), n = new oi(e);\n try {\n n.checkValid();\n } catch (t) {\n if (!(t instanceof z)) throw t;\n t.printStackTrace();\n }\n }, gi.prototype.getNodedSubstrings = function() {\n return gn.getNodedSubstrings(this._nodedSegStrings);\n }, gi.prototype.snapRound = function(t, e) {\n var n = this.findInteriorIntersections(t, e);\n this.computeIntersectionSnaps(n), this.computeVertexSnaps(t);\n }, gi.prototype.findInteriorIntersections = function(t, e) {\n var n = new fi(e);\n return this._noder.setSegmentIntersector(n), this._noder.computeNodes(t), n.getInteriorIntersections();\n }, gi.prototype.computeVertexSnaps = function() {\n if (T(arguments[0], It)) for(var t = arguments[0].iterator(); t.hasNext();){\n var e = t.next();\n this.computeVertexSnaps(e);\n }\n else if (arguments[0] instanceof gn) for(var n = arguments[0], i = n.getCoordinates(), r = 0; r < i.length; r++){\n var o = new ai(i[r], this._scaleFactor, this._li);\n this._pointSnapper.snap(o, n, r) && n.addIntersection(i[r], r);\n }\n }, gi.prototype.computeNodes = function(t) {\n this._nodedSegStrings = t, this._noder = new xn, this._pointSnapper = new ci(this._noder.getIndex()), this.snapRound(t, this._li);\n }, gi.prototype.computeIntersectionSnaps = function(t) {\n for(var e = t.iterator(); e.hasNext();){\n var n = e.next(), i = new ai(n, this._scaleFactor, this._li);\n this._pointSnapper.snap(i);\n }\n }, gi.prototype.interfaces_ = function() {\n return [\n In\n ];\n }, gi.prototype.getClass = function() {\n return gi;\n };\n var di = function() {\n if (this._argGeom = null, this._distance = null, this._bufParams = new Cn, this._resultGeometry = null, this._saveException = null, 1 === arguments.length) {\n var t = arguments[0];\n this._argGeom = t;\n } else if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n this._argGeom = e, this._bufParams = n;\n }\n }, yi = {\n CAP_ROUND: {\n configurable: !0\n },\n CAP_BUTT: {\n configurable: !0\n },\n CAP_FLAT: {\n configurable: !0\n },\n CAP_SQUARE: {\n configurable: !0\n },\n MAX_PRECISION_DIGITS: {\n configurable: !0\n }\n };\n di.prototype.bufferFixedPrecision = function(t) {\n var e = new ri(new gi(new fe(1)), t.getScale()), n = new ii(this._bufParams);\n n.setWorkingPrecisionModel(t), n.setNoder(e), this._resultGeometry = n.buffer(this._argGeom, this._distance);\n }, di.prototype.bufferReducedPrecision = function() {\n var t = this;\n if (0 === arguments.length) {\n for(var e = di.MAX_PRECISION_DIGITS; e >= 0; e--){\n try {\n t.bufferReducedPrecision(e);\n } catch (e) {\n if (!(e instanceof we)) throw e;\n t._saveException = e;\n }\n if (null !== t._resultGeometry) return null;\n }\n throw this._saveException;\n }\n if (1 === arguments.length) {\n var n = arguments[0], i = di.precisionScaleFactor(this._argGeom, this._distance, n), r = new fe(i);\n this.bufferFixedPrecision(r);\n }\n }, di.prototype.computeGeometry = function() {\n if (this.bufferOriginalPrecision(), null !== this._resultGeometry) return null;\n var t = this._argGeom.getFactory().getPrecisionModel();\n t.getType() === fe.FIXED ? this.bufferFixedPrecision(t) : this.bufferReducedPrecision();\n }, di.prototype.setQuadrantSegments = function(t) {\n this._bufParams.setQuadrantSegments(t);\n }, di.prototype.bufferOriginalPrecision = function() {\n try {\n var t = new ii(this._bufParams);\n this._resultGeometry = t.buffer(this._argGeom, this._distance);\n } catch (t) {\n if (!(t instanceof $)) throw t;\n this._saveException = t;\n }\n }, di.prototype.getResultGeometry = function(t) {\n return this._distance = t, this.computeGeometry(), this._resultGeometry;\n }, di.prototype.setEndCapStyle = function(t) {\n this._bufParams.setEndCapStyle(t);\n }, di.prototype.interfaces_ = function() {\n return [];\n }, di.prototype.getClass = function() {\n return di;\n }, di.bufferOp = function() {\n if (2 === arguments.length) {\n var t = arguments[0], e = arguments[1];\n return new di(t).getResultGeometry(e);\n }\n if (3 === arguments.length) {\n if (Number.isInteger(arguments[2]) && arguments[0] instanceof ct && \"number\" == typeof arguments[1]) {\n var n = arguments[0], i = arguments[1], r = arguments[2], o = new di(n);\n o.setQuadrantSegments(r);\n return o.getResultGeometry(i);\n }\n if (arguments[2] instanceof Cn && arguments[0] instanceof ct && \"number\" == typeof arguments[1]) {\n var s = arguments[0], a = arguments[1], u = arguments[2];\n return new di(s, u).getResultGeometry(a);\n }\n } else if (4 === arguments.length) {\n var l = arguments[0], c = arguments[1], p = arguments[2], h = arguments[3], f = new di(l);\n f.setQuadrantSegments(p), f.setEndCapStyle(h);\n return f.getResultGeometry(c);\n }\n }, di.precisionScaleFactor = function(t, e, n) {\n var i = t.getEnvelopeInternal(), r = R.max(Math.abs(i.getMaxX()), Math.abs(i.getMaxY()), Math.abs(i.getMinX()), Math.abs(i.getMinY())) + 2 * (e > 0 ? e : 0), o = n - Math.trunc(Math.log(r) / Math.log(10) + 1);\n return Math.pow(10, o);\n }, yi.CAP_ROUND.get = function() {\n return Cn.CAP_ROUND;\n }, yi.CAP_BUTT.get = function() {\n return Cn.CAP_FLAT;\n }, yi.CAP_FLAT.get = function() {\n return Cn.CAP_FLAT;\n }, yi.CAP_SQUARE.get = function() {\n return Cn.CAP_SQUARE;\n }, yi.MAX_PRECISION_DIGITS.get = function() {\n return 12;\n }, Object.defineProperties(di, yi);\n var _i = function() {\n this._pt = [\n new C,\n new C\n ], this._distance = v.NaN, this._isNull = !0;\n };\n _i.prototype.getCoordinates = function() {\n return this._pt;\n }, _i.prototype.getCoordinate = function(t) {\n return this._pt[t];\n }, _i.prototype.setMinimum = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n this.setMinimum(t._pt[0], t._pt[1]);\n } else if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n if (this._isNull) return this.initialize(e, n), null;\n var i = e.distance(n);\n i < this._distance && this.initialize(e, n, i);\n }\n }, _i.prototype.initialize = function() {\n if (0 === arguments.length) this._isNull = !0;\n else if (2 === arguments.length) {\n var t = arguments[0], e = arguments[1];\n this._pt[0].setCoordinate(t), this._pt[1].setCoordinate(e), this._distance = t.distance(e), this._isNull = !1;\n } else if (3 === arguments.length) {\n var n = arguments[0], i = arguments[1], r = arguments[2];\n this._pt[0].setCoordinate(n), this._pt[1].setCoordinate(i), this._distance = r, this._isNull = !1;\n }\n }, _i.prototype.getDistance = function() {\n return this._distance;\n }, _i.prototype.setMaximum = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n this.setMaximum(t._pt[0], t._pt[1]);\n } else if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n if (this._isNull) return this.initialize(e, n), null;\n var i = e.distance(n);\n i > this._distance && this.initialize(e, n, i);\n }\n }, _i.prototype.interfaces_ = function() {\n return [];\n }, _i.prototype.getClass = function() {\n return _i;\n };\n var mi = function() {};\n mi.prototype.interfaces_ = function() {\n return [];\n }, mi.prototype.getClass = function() {\n return mi;\n }, mi.computeDistance = function() {\n if (arguments[2] instanceof _i && arguments[0] instanceof Kt && arguments[1] instanceof C) for(var t = arguments[0], e = arguments[1], n = arguments[2], i = t.getCoordinates(), r = new dn, o = 0; o < i.length - 1; o++){\n r.setCoordinates(i[o], i[o + 1]);\n var s = r.closestPoint(e);\n n.setMinimum(s, e);\n }\n else if (arguments[2] instanceof _i && arguments[0] instanceof $t && arguments[1] instanceof C) {\n var a = arguments[0], u = arguments[1], l = arguments[2];\n mi.computeDistance(a.getExteriorRing(), u, l);\n for(var c = 0; c < a.getNumInteriorRing(); c++)mi.computeDistance(a.getInteriorRingN(c), u, l);\n } else if (arguments[2] instanceof _i && arguments[0] instanceof ct && arguments[1] instanceof C) {\n var p = arguments[0], h = arguments[1], f = arguments[2];\n if (p instanceof Kt) mi.computeDistance(p, h, f);\n else if (p instanceof $t) mi.computeDistance(p, h, f);\n else if (p instanceof zt) for(var g = p, d = 0; d < g.getNumGeometries(); d++){\n var y = g.getGeometryN(d);\n mi.computeDistance(y, h, f);\n }\n else f.setMinimum(p.getCoordinate(), h);\n } else if (arguments[2] instanceof _i && arguments[0] instanceof dn && arguments[1] instanceof C) {\n var _ = arguments[0], m = arguments[1], v = arguments[2], I = _.closestPoint(m);\n v.setMinimum(I, m);\n }\n };\n var vi = function(t) {\n this._maxPtDist = new _i, this._inputGeom = t || null;\n }, Ii = {\n MaxPointDistanceFilter: {\n configurable: !0\n },\n MaxMidpointDistanceFilter: {\n configurable: !0\n }\n };\n vi.prototype.computeMaxMidpointDistance = function(t) {\n var e = new xi(this._inputGeom);\n t.apply(e), this._maxPtDist.setMaximum(e.getMaxPointDistance());\n }, vi.prototype.computeMaxVertexDistance = function(t) {\n var e = new Ei(this._inputGeom);\n t.apply(e), this._maxPtDist.setMaximum(e.getMaxPointDistance());\n }, vi.prototype.findDistance = function(t) {\n return this.computeMaxVertexDistance(t), this.computeMaxMidpointDistance(t), this._maxPtDist.getDistance();\n }, vi.prototype.getDistancePoints = function() {\n return this._maxPtDist;\n }, vi.prototype.interfaces_ = function() {\n return [];\n }, vi.prototype.getClass = function() {\n return vi;\n }, Ii.MaxPointDistanceFilter.get = function() {\n return Ei;\n }, Ii.MaxMidpointDistanceFilter.get = function() {\n return xi;\n }, Object.defineProperties(vi, Ii);\n var Ei = function(t) {\n this._maxPtDist = new _i, this._minPtDist = new _i, this._geom = t || null;\n };\n Ei.prototype.filter = function(t) {\n this._minPtDist.initialize(), mi.computeDistance(this._geom, t, this._minPtDist), this._maxPtDist.setMaximum(this._minPtDist);\n }, Ei.prototype.getMaxPointDistance = function() {\n return this._maxPtDist;\n }, Ei.prototype.interfaces_ = function() {\n return [\n ft\n ];\n }, Ei.prototype.getClass = function() {\n return Ei;\n };\n var xi = function(t) {\n this._maxPtDist = new _i, this._minPtDist = new _i, this._geom = t || null;\n };\n xi.prototype.filter = function(t, e) {\n if (0 === e) return null;\n var n = t.getCoordinate(e - 1), i = t.getCoordinate(e), r = new C((n.x + i.x) / 2, (n.y + i.y) / 2);\n this._minPtDist.initialize(), mi.computeDistance(this._geom, r, this._minPtDist), this._maxPtDist.setMaximum(this._minPtDist);\n }, xi.prototype.isDone = function() {\n return !1;\n }, xi.prototype.isGeometryChanged = function() {\n return !1;\n }, xi.prototype.getMaxPointDistance = function() {\n return this._maxPtDist;\n }, xi.prototype.interfaces_ = function() {\n return [\n Ut\n ];\n }, xi.prototype.getClass = function() {\n return xi;\n };\n var Ni = function(t) {\n this._comps = t || null;\n };\n Ni.prototype.filter = function(t) {\n t instanceof $t && this._comps.add(t);\n }, Ni.prototype.interfaces_ = function() {\n return [\n Vt\n ];\n }, Ni.prototype.getClass = function() {\n return Ni;\n }, Ni.getPolygons = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n return Ni.getPolygons(t, new Nt);\n }\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n return e instanceof $t ? n.add(e) : e instanceof zt && e.apply(new Ni(n)), n;\n }\n };\n var Ci = function() {\n if (this._lines = null, this._isForcedToLineString = !1, 1 === arguments.length) {\n var t = arguments[0];\n this._lines = t;\n } else if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n this._lines = e, this._isForcedToLineString = n;\n }\n };\n Ci.prototype.filter = function(t) {\n if (this._isForcedToLineString && t instanceof ee) {\n var e = t.getFactory().createLineString(t.getCoordinateSequence());\n return this._lines.add(e), null;\n }\n t instanceof Kt && this._lines.add(t);\n }, Ci.prototype.setForceToLineString = function(t) {\n this._isForcedToLineString = t;\n }, Ci.prototype.interfaces_ = function() {\n return [\n lt\n ];\n }, Ci.prototype.getClass = function() {\n return Ci;\n }, Ci.getGeometry = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n return t.getFactory().buildGeometry(Ci.getLines(t));\n }\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n return e.getFactory().buildGeometry(Ci.getLines(e, n));\n }\n }, Ci.getLines = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n return Ci.getLines(t, !1);\n }\n if (2 === arguments.length) {\n if (T(arguments[0], It) && T(arguments[1], It)) {\n for(var e = arguments[0], n = arguments[1], i = e.iterator(); i.hasNext();){\n var r = i.next();\n Ci.getLines(r, n);\n }\n return n;\n }\n if (arguments[0] instanceof ct && \"boolean\" == typeof arguments[1]) {\n var o = arguments[0], s = arguments[1], a = new Nt;\n return o.apply(new Ci(a, s)), a;\n }\n if (arguments[0] instanceof ct && T(arguments[1], It)) {\n var u = arguments[0], l = arguments[1];\n return u instanceof Kt ? l.add(u) : u.apply(new Ci(l)), l;\n }\n } else if (3 === arguments.length) {\n if (\"boolean\" == typeof arguments[2] && T(arguments[0], It) && T(arguments[1], It)) {\n for(var c = arguments[0], p = arguments[1], h = arguments[2], f = c.iterator(); f.hasNext();){\n var g = f.next();\n Ci.getLines(g, p, h);\n }\n return p;\n }\n if (\"boolean\" == typeof arguments[2] && arguments[0] instanceof ct && T(arguments[1], It)) {\n var d = arguments[0], y = arguments[1], _ = arguments[2];\n return d.apply(new Ci(y, _)), y;\n }\n }\n };\n var Si = function() {\n if (this._boundaryRule = gt.OGC_SFS_BOUNDARY_RULE, this._isIn = null, this._numBoundaries = null, 0 === arguments.length) ;\n else if (1 === arguments.length) {\n var t = arguments[0];\n if (null === t) throw new m(\"Rule must be non-null\");\n this._boundaryRule = t;\n }\n };\n Si.prototype.locateInternal = function() {\n if (arguments[0] instanceof C && arguments[1] instanceof $t) {\n var t = arguments[0], e = arguments[1];\n if (e.isEmpty()) return w.EXTERIOR;\n var n = e.getExteriorRing(), i = this.locateInPolygonRing(t, n);\n if (i === w.EXTERIOR) return w.EXTERIOR;\n if (i === w.BOUNDARY) return w.BOUNDARY;\n for(var r = 0; r < e.getNumInteriorRing(); r++){\n var o = e.getInteriorRingN(r), s = this.locateInPolygonRing(t, o);\n if (s === w.INTERIOR) return w.EXTERIOR;\n if (s === w.BOUNDARY) return w.BOUNDARY;\n }\n return w.INTERIOR;\n }\n if (arguments[0] instanceof C && arguments[1] instanceof Kt) {\n var a = arguments[0], u = arguments[1];\n if (!u.getEnvelopeInternal().intersects(a)) return w.EXTERIOR;\n var l = u.getCoordinates();\n return u.isClosed() || !a.equals(l[0]) && !a.equals(l[l.length - 1]) ? at.isOnLine(a, l) ? w.INTERIOR : w.EXTERIOR : w.BOUNDARY;\n }\n if (arguments[0] instanceof C && arguments[1] instanceof Qt) {\n var c = arguments[0];\n return arguments[1].getCoordinate().equals2D(c) ? w.INTERIOR : w.EXTERIOR;\n }\n }, Si.prototype.locateInPolygonRing = function(t, e) {\n return e.getEnvelopeInternal().intersects(t) ? at.locatePointInRing(t, e.getCoordinates()) : w.EXTERIOR;\n }, Si.prototype.intersects = function(t, e) {\n return this.locate(t, e) !== w.EXTERIOR;\n }, Si.prototype.updateLocationInfo = function(t) {\n t === w.INTERIOR && (this._isIn = !0), t === w.BOUNDARY && this._numBoundaries++;\n }, Si.prototype.computeLocation = function(t, e) {\n if (e instanceof Qt && this.updateLocationInfo(this.locateInternal(t, e)), e instanceof Kt) this.updateLocationInfo(this.locateInternal(t, e));\n else if (e instanceof $t) this.updateLocationInfo(this.locateInternal(t, e));\n else if (e instanceof Xt) for(var n = e, i = 0; i < n.getNumGeometries(); i++){\n var r = n.getGeometryN(i);\n this.updateLocationInfo(this.locateInternal(t, r));\n }\n else if (e instanceof ne) for(var o = e, s = 0; s < o.getNumGeometries(); s++){\n var a = o.getGeometryN(s);\n this.updateLocationInfo(this.locateInternal(t, a));\n }\n else if (e instanceof zt) for(var u = new Un(e); u.hasNext();){\n var l = u.next();\n l !== e && this.computeLocation(t, l);\n }\n }, Si.prototype.locate = function(t, e) {\n return e.isEmpty() ? w.EXTERIOR : e instanceof Kt ? this.locateInternal(t, e) : e instanceof $t ? this.locateInternal(t, e) : (this._isIn = !1, this._numBoundaries = 0, this.computeLocation(t, e), this._boundaryRule.isInBoundary(this._numBoundaries) ? w.BOUNDARY : this._numBoundaries > 0 || this._isIn ? w.INTERIOR : w.EXTERIOR);\n }, Si.prototype.interfaces_ = function() {\n return [];\n }, Si.prototype.getClass = function() {\n return Si;\n };\n var Li = function t() {\n if (this._component = null, this._segIndex = null, this._pt = null, 2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n t.call(this, e, t.INSIDE_AREA, n);\n } else if (3 === arguments.length) {\n var i = arguments[0], r = arguments[1], o = arguments[2];\n this._component = i, this._segIndex = r, this._pt = o;\n }\n }, bi = {\n INSIDE_AREA: {\n configurable: !0\n }\n };\n Li.prototype.isInsideArea = function() {\n return this._segIndex === Li.INSIDE_AREA;\n }, Li.prototype.getCoordinate = function() {\n return this._pt;\n }, Li.prototype.getGeometryComponent = function() {\n return this._component;\n }, Li.prototype.getSegmentIndex = function() {\n return this._segIndex;\n }, Li.prototype.interfaces_ = function() {\n return [];\n }, Li.prototype.getClass = function() {\n return Li;\n }, bi.INSIDE_AREA.get = function() {\n return -1;\n }, Object.defineProperties(Li, bi);\n var wi = function(t) {\n this._pts = t || null;\n };\n wi.prototype.filter = function(t) {\n t instanceof Qt && this._pts.add(t);\n }, wi.prototype.interfaces_ = function() {\n return [\n Vt\n ];\n }, wi.prototype.getClass = function() {\n return wi;\n }, wi.getPoints = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n return t instanceof Qt ? $e.singletonList(t) : wi.getPoints(t, new Nt);\n }\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n return e instanceof Qt ? n.add(e) : e instanceof zt && e.apply(new wi(n)), n;\n }\n };\n var Oi = function() {\n this._locations = null;\n var t = arguments[0];\n this._locations = t;\n };\n Oi.prototype.filter = function(t) {\n (t instanceof Qt || t instanceof Kt || t instanceof $t) && this._locations.add(new Li(t, 0, t.getCoordinate()));\n }, Oi.prototype.interfaces_ = function() {\n return [\n Vt\n ];\n }, Oi.prototype.getClass = function() {\n return Oi;\n }, Oi.getLocations = function(t) {\n var e = new Nt;\n return t.apply(new Oi(e)), e;\n };\n var Ti = function() {\n if (this._geom = null, this._terminateDistance = 0, this._ptLocator = new Si, this._minDistanceLocation = null, this._minDistance = v.MAX_VALUE, 2 === arguments.length) {\n var t = arguments[0], e = arguments[1];\n this._geom = [\n t,\n e\n ], this._terminateDistance = 0;\n } else if (3 === arguments.length) {\n var n = arguments[0], i = arguments[1], r = arguments[2];\n this._geom = new Array(2).fill(null), this._geom[0] = n, this._geom[1] = i, this._terminateDistance = r;\n }\n };\n Ti.prototype.computeContainmentDistance = function() {\n if (0 === arguments.length) {\n var t = new Array(2).fill(null);\n if (this.computeContainmentDistance(0, t), this._minDistance <= this._terminateDistance) return null;\n this.computeContainmentDistance(1, t);\n } else if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1], i = 1 - e, r = Ni.getPolygons(this._geom[e]);\n if (r.size() > 0) {\n var o = Oi.getLocations(this._geom[i]);\n if (this.computeContainmentDistance(o, r, n), this._minDistance <= this._terminateDistance) return this._minDistanceLocation[i] = n[0], this._minDistanceLocation[e] = n[1], null;\n }\n } else if (3 === arguments.length) {\n if (arguments[2] instanceof Array && T(arguments[0], xt) && T(arguments[1], xt)) {\n for(var s = arguments[0], a = arguments[1], u = arguments[2], l = 0; l < s.size(); l++)for(var c = s.get(l), p = 0; p < a.size(); p++)if (this.computeContainmentDistance(c, a.get(p), u), this._minDistance <= this._terminateDistance) return null;\n } else if (arguments[2] instanceof Array && arguments[0] instanceof Li && arguments[1] instanceof $t) {\n var h = arguments[0], f = arguments[1], g = arguments[2], d = h.getCoordinate();\n if (w.EXTERIOR !== this._ptLocator.locate(d, f)) return this._minDistance = 0, g[0] = h, g[1] = new Li(f, d), null;\n }\n }\n }, Ti.prototype.computeMinDistanceLinesPoints = function(t, e, n) {\n for(var i = 0; i < t.size(); i++)for(var r = t.get(i), o = 0; o < e.size(); o++){\n var s = e.get(o);\n if (this.computeMinDistance(r, s, n), this._minDistance <= this._terminateDistance) return null;\n }\n }, Ti.prototype.computeFacetDistance = function() {\n var t = new Array(2).fill(null), e = Ci.getLines(this._geom[0]), n = Ci.getLines(this._geom[1]), i = wi.getPoints(this._geom[0]), r = wi.getPoints(this._geom[1]);\n return this.computeMinDistanceLines(e, n, t), this.updateMinDistance(t, !1), this._minDistance <= this._terminateDistance ? null : (t[0] = null, t[1] = null, this.computeMinDistanceLinesPoints(e, r, t), this.updateMinDistance(t, !1), this._minDistance <= this._terminateDistance ? null : (t[0] = null, t[1] = null, this.computeMinDistanceLinesPoints(n, i, t), this.updateMinDistance(t, !0), this._minDistance <= this._terminateDistance ? null : (t[0] = null, t[1] = null, this.computeMinDistancePoints(i, r, t), void this.updateMinDistance(t, !1))));\n }, Ti.prototype.nearestLocations = function() {\n return this.computeMinDistance(), this._minDistanceLocation;\n }, Ti.prototype.updateMinDistance = function(t, e) {\n if (null === t[0]) return null;\n e ? (this._minDistanceLocation[0] = t[1], this._minDistanceLocation[1] = t[0]) : (this._minDistanceLocation[0] = t[0], this._minDistanceLocation[1] = t[1]);\n }, Ti.prototype.nearestPoints = function() {\n this.computeMinDistance();\n return [\n this._minDistanceLocation[0].getCoordinate(),\n this._minDistanceLocation[1].getCoordinate()\n ];\n }, Ti.prototype.computeMinDistance = function() {\n if (0 === arguments.length) {\n if (null !== this._minDistanceLocation) return null;\n if (this._minDistanceLocation = new Array(2).fill(null), this.computeContainmentDistance(), this._minDistance <= this._terminateDistance) return null;\n this.computeFacetDistance();\n } else if (3 === arguments.length) {\n if (arguments[2] instanceof Array && arguments[0] instanceof Kt && arguments[1] instanceof Qt) {\n var t = arguments[0], e = arguments[1], n = arguments[2];\n if (t.getEnvelopeInternal().distance(e.getEnvelopeInternal()) > this._minDistance) return null;\n for(var i = t.getCoordinates(), r = e.getCoordinate(), o = 0; o < i.length - 1; o++){\n var s = at.distancePointLine(r, i[o], i[o + 1]);\n if (s < this._minDistance) {\n this._minDistance = s;\n var a = new dn(i[o], i[o + 1]).closestPoint(r);\n n[0] = new Li(t, o, a), n[1] = new Li(e, 0, r);\n }\n if (this._minDistance <= this._terminateDistance) return null;\n }\n } else if (arguments[2] instanceof Array && arguments[0] instanceof Kt && arguments[1] instanceof Kt) {\n var u = arguments[0], l = arguments[1], c = arguments[2];\n if (u.getEnvelopeInternal().distance(l.getEnvelopeInternal()) > this._minDistance) return null;\n for(var p = u.getCoordinates(), h = l.getCoordinates(), f = 0; f < p.length - 1; f++)for(var g = 0; g < h.length - 1; g++){\n var d = at.distanceLineLine(p[f], p[f + 1], h[g], h[g + 1]);\n if (d < this._minDistance) {\n this._minDistance = d;\n var y = new dn(p[f], p[f + 1]), _ = new dn(h[g], h[g + 1]), m = y.closestPoints(_);\n c[0] = new Li(u, f, m[0]), c[1] = new Li(l, g, m[1]);\n }\n if (this._minDistance <= this._terminateDistance) return null;\n }\n }\n }\n }, Ti.prototype.computeMinDistancePoints = function(t, e, n) {\n for(var i = 0; i < t.size(); i++)for(var r = t.get(i), o = 0; o < e.size(); o++){\n var s = e.get(o), a = r.getCoordinate().distance(s.getCoordinate());\n if (a < this._minDistance && (this._minDistance = a, n[0] = new Li(r, 0, r.getCoordinate()), n[1] = new Li(s, 0, s.getCoordinate())), this._minDistance <= this._terminateDistance) return null;\n }\n }, Ti.prototype.distance = function() {\n if (null === this._geom[0] || null === this._geom[1]) throw new m(\"null geometries are not supported\");\n return this._geom[0].isEmpty() || this._geom[1].isEmpty() ? 0 : (this.computeMinDistance(), this._minDistance);\n }, Ti.prototype.computeMinDistanceLines = function(t, e, n) {\n for(var i = 0; i < t.size(); i++)for(var r = t.get(i), o = 0; o < e.size(); o++){\n var s = e.get(o);\n if (this.computeMinDistance(r, s, n), this._minDistance <= this._terminateDistance) return null;\n }\n }, Ti.prototype.interfaces_ = function() {\n return [];\n }, Ti.prototype.getClass = function() {\n return Ti;\n }, Ti.distance = function(t, e) {\n return new Ti(t, e).distance();\n }, Ti.isWithinDistance = function(t, e, n) {\n return new Ti(t, e, n).distance() <= n;\n }, Ti.nearestPoints = function(t, e) {\n return new Ti(t, e).nearestPoints();\n };\n var Ri = function() {\n this._pt = [\n new C,\n new C\n ], this._distance = v.NaN, this._isNull = !0;\n };\n Ri.prototype.getCoordinates = function() {\n return this._pt;\n }, Ri.prototype.getCoordinate = function(t) {\n return this._pt[t];\n }, Ri.prototype.setMinimum = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n this.setMinimum(t._pt[0], t._pt[1]);\n } else if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n if (this._isNull) return this.initialize(e, n), null;\n var i = e.distance(n);\n i < this._distance && this.initialize(e, n, i);\n }\n }, Ri.prototype.initialize = function() {\n if (0 === arguments.length) this._isNull = !0;\n else if (2 === arguments.length) {\n var t = arguments[0], e = arguments[1];\n this._pt[0].setCoordinate(t), this._pt[1].setCoordinate(e), this._distance = t.distance(e), this._isNull = !1;\n } else if (3 === arguments.length) {\n var n = arguments[0], i = arguments[1], r = arguments[2];\n this._pt[0].setCoordinate(n), this._pt[1].setCoordinate(i), this._distance = r, this._isNull = !1;\n }\n }, Ri.prototype.toString = function() {\n return Z.toLineString(this._pt[0], this._pt[1]);\n }, Ri.prototype.getDistance = function() {\n return this._distance;\n }, Ri.prototype.setMaximum = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n this.setMaximum(t._pt[0], t._pt[1]);\n } else if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n if (this._isNull) return this.initialize(e, n), null;\n var i = e.distance(n);\n i > this._distance && this.initialize(e, n, i);\n }\n }, Ri.prototype.interfaces_ = function() {\n return [];\n }, Ri.prototype.getClass = function() {\n return Ri;\n };\n var Pi = function() {};\n Pi.prototype.interfaces_ = function() {\n return [];\n }, Pi.prototype.getClass = function() {\n return Pi;\n }, Pi.computeDistance = function() {\n if (arguments[2] instanceof Ri && arguments[0] instanceof Kt && arguments[1] instanceof C) for(var t = arguments[0], e = arguments[1], n = arguments[2], i = new dn, r = t.getCoordinates(), o = 0; o < r.length - 1; o++){\n i.setCoordinates(r[o], r[o + 1]);\n var s = i.closestPoint(e);\n n.setMinimum(s, e);\n }\n else if (arguments[2] instanceof Ri && arguments[0] instanceof $t && arguments[1] instanceof C) {\n var a = arguments[0], u = arguments[1], l = arguments[2];\n Pi.computeDistance(a.getExteriorRing(), u, l);\n for(var c = 0; c < a.getNumInteriorRing(); c++)Pi.computeDistance(a.getInteriorRingN(c), u, l);\n } else if (arguments[2] instanceof Ri && arguments[0] instanceof ct && arguments[1] instanceof C) {\n var p = arguments[0], h = arguments[1], f = arguments[2];\n if (p instanceof Kt) Pi.computeDistance(p, h, f);\n else if (p instanceof $t) Pi.computeDistance(p, h, f);\n else if (p instanceof zt) for(var g = p, d = 0; d < g.getNumGeometries(); d++){\n var y = g.getGeometryN(d);\n Pi.computeDistance(y, h, f);\n }\n else f.setMinimum(p.getCoordinate(), h);\n } else if (arguments[2] instanceof Ri && arguments[0] instanceof dn && arguments[1] instanceof C) {\n var _ = arguments[0], m = arguments[1], v = arguments[2], I = _.closestPoint(m);\n v.setMinimum(I, m);\n }\n };\n var Di = function() {\n this._g0 = null, this._g1 = null, this._ptDist = new Ri, this._densifyFrac = 0;\n var t = arguments[0], e = arguments[1];\n this._g0 = t, this._g1 = e;\n }, Mi = {\n MaxPointDistanceFilter: {\n configurable: !0\n },\n MaxDensifiedByFractionDistanceFilter: {\n configurable: !0\n }\n };\n Di.prototype.getCoordinates = function() {\n return this._ptDist.getCoordinates();\n }, Di.prototype.setDensifyFraction = function(t) {\n if (t > 1 || t <= 0) throw new m(\"Fraction is not in range (0.0 - 1.0]\");\n this._densifyFrac = t;\n }, Di.prototype.compute = function(t, e) {\n this.computeOrientedDistance(t, e, this._ptDist), this.computeOrientedDistance(e, t, this._ptDist);\n }, Di.prototype.distance = function() {\n return this.compute(this._g0, this._g1), this._ptDist.getDistance();\n }, Di.prototype.computeOrientedDistance = function(t, e, n) {\n var i = new Ai(e);\n if (t.apply(i), n.setMaximum(i.getMaxPointDistance()), this._densifyFrac > 0) {\n var r = new Fi(e, this._densifyFrac);\n t.apply(r), n.setMaximum(r.getMaxPointDistance());\n }\n }, Di.prototype.orientedDistance = function() {\n return this.computeOrientedDistance(this._g0, this._g1, this._ptDist), this._ptDist.getDistance();\n }, Di.prototype.interfaces_ = function() {\n return [];\n }, Di.prototype.getClass = function() {\n return Di;\n }, Di.distance = function() {\n if (2 === arguments.length) {\n var t = arguments[0], e = arguments[1];\n return new Di(t, e).distance();\n }\n if (3 === arguments.length) {\n var n = arguments[0], i = arguments[1], r = arguments[2], o = new Di(n, i);\n return o.setDensifyFraction(r), o.distance();\n }\n }, Mi.MaxPointDistanceFilter.get = function() {\n return Ai;\n }, Mi.MaxDensifiedByFractionDistanceFilter.get = function() {\n return Fi;\n }, Object.defineProperties(Di, Mi);\n var Ai = function() {\n this._maxPtDist = new Ri, this._minPtDist = new Ri, this._euclideanDist = new Pi, this._geom = null;\n var t = arguments[0];\n this._geom = t;\n };\n Ai.prototype.filter = function(t) {\n this._minPtDist.initialize(), Pi.computeDistance(this._geom, t, this._minPtDist), this._maxPtDist.setMaximum(this._minPtDist);\n }, Ai.prototype.getMaxPointDistance = function() {\n return this._maxPtDist;\n }, Ai.prototype.interfaces_ = function() {\n return [\n ft\n ];\n }, Ai.prototype.getClass = function() {\n return Ai;\n };\n var Fi = function() {\n this._maxPtDist = new Ri, this._minPtDist = new Ri, this._geom = null, this._numSubSegs = 0;\n var t = arguments[0], e = arguments[1];\n this._geom = t, this._numSubSegs = Math.trunc(Math.round(1 / e));\n };\n Fi.prototype.filter = function(t, e) {\n if (0 === e) return null;\n for(var n = t.getCoordinate(e - 1), i = t.getCoordinate(e), r = (i.x - n.x) / this._numSubSegs, o = (i.y - n.y) / this._numSubSegs, s = 0; s < this._numSubSegs; s++){\n var a = n.x + s * r, u = n.y + s * o, l = new C(a, u);\n this._minPtDist.initialize(), Pi.computeDistance(this._geom, l, this._minPtDist), this._maxPtDist.setMaximum(this._minPtDist);\n }\n }, Fi.prototype.isDone = function() {\n return !1;\n }, Fi.prototype.isGeometryChanged = function() {\n return !1;\n }, Fi.prototype.getMaxPointDistance = function() {\n return this._maxPtDist;\n }, Fi.prototype.interfaces_ = function() {\n return [\n Ut\n ];\n }, Fi.prototype.getClass = function() {\n return Fi;\n };\n var Gi = function(t, e, n) {\n this._minValidDistance = null, this._maxValidDistance = null, this._minDistanceFound = null, this._maxDistanceFound = null, this._isValid = !0, this._errMsg = null, this._errorLocation = null, this._errorIndicator = null, this._input = t || null, this._bufDistance = e || null, this._result = n || null;\n }, qi = {\n VERBOSE: {\n configurable: !0\n },\n MAX_DISTANCE_DIFF_FRAC: {\n configurable: !0\n }\n };\n Gi.prototype.checkMaximumDistance = function(t, e, n) {\n var i = new Di(e, t);\n if (i.setDensifyFraction(.25), this._maxDistanceFound = i.orientedDistance(), this._maxDistanceFound > n) {\n this._isValid = !1;\n var r = i.getCoordinates();\n this._errorLocation = r[1], this._errorIndicator = t.getFactory().createLineString(r), this._errMsg = \"Distance between buffer curve and input is too large (\" + this._maxDistanceFound + \" at \" + Z.toLineString(r[0], r[1]) + \")\";\n }\n }, Gi.prototype.isValid = function() {\n var t = Math.abs(this._bufDistance), e = Gi.MAX_DISTANCE_DIFF_FRAC * t;\n return this._minValidDistance = t - e, this._maxValidDistance = t + e, !(!this._input.isEmpty() && !this._result.isEmpty()) || (this._bufDistance > 0 ? this.checkPositiveValid() : this.checkNegativeValid(), Gi.VERBOSE && Y.out.println(\"Min Dist= \" + this._minDistanceFound + \" err= \" + (1 - this._minDistanceFound / this._bufDistance) + \" Max Dist= \" + this._maxDistanceFound + \" err= \" + (this._maxDistanceFound / this._bufDistance - 1)), this._isValid);\n }, Gi.prototype.checkNegativeValid = function() {\n if (!(this._input instanceof $t || this._input instanceof ne || this._input instanceof zt)) return null;\n var t = this.getPolygonLines(this._input);\n if (this.checkMinimumDistance(t, this._result, this._minValidDistance), !this._isValid) return null;\n this.checkMaximumDistance(t, this._result, this._maxValidDistance);\n }, Gi.prototype.getErrorIndicator = function() {\n return this._errorIndicator;\n }, Gi.prototype.checkMinimumDistance = function(t, e, n) {\n var i = new Ti(t, e, n);\n if (this._minDistanceFound = i.distance(), this._minDistanceFound < n) {\n this._isValid = !1;\n var r = i.nearestPoints();\n this._errorLocation = i.nearestPoints()[1], this._errorIndicator = t.getFactory().createLineString(r), this._errMsg = \"Distance between buffer curve and input is too small (\" + this._minDistanceFound + \" at \" + Z.toLineString(r[0], r[1]) + \" )\";\n }\n }, Gi.prototype.checkPositiveValid = function() {\n var t = this._result.getBoundary();\n if (this.checkMinimumDistance(this._input, t, this._minValidDistance), !this._isValid) return null;\n this.checkMaximumDistance(this._input, t, this._maxValidDistance);\n }, Gi.prototype.getErrorLocation = function() {\n return this._errorLocation;\n }, Gi.prototype.getPolygonLines = function(t) {\n for(var e = new Nt, n = new Ci(e), i = Ni.getPolygons(t).iterator(); i.hasNext();)i.next().apply(n);\n return t.getFactory().buildGeometry(e);\n }, Gi.prototype.getErrorMessage = function() {\n return this._errMsg;\n }, Gi.prototype.interfaces_ = function() {\n return [];\n }, Gi.prototype.getClass = function() {\n return Gi;\n }, qi.VERBOSE.get = function() {\n return !1;\n }, qi.MAX_DISTANCE_DIFF_FRAC.get = function() {\n return .012;\n }, Object.defineProperties(Gi, qi);\n var Bi = function(t, e, n) {\n this._isValid = !0, this._errorMsg = null, this._errorLocation = null, this._errorIndicator = null, this._input = t || null, this._distance = e || null, this._result = n || null;\n }, Vi = {\n VERBOSE: {\n configurable: !0\n },\n MAX_ENV_DIFF_FRAC: {\n configurable: !0\n }\n };\n Bi.prototype.isValid = function() {\n return this.checkPolygonal(), this._isValid ? (this.checkExpectedEmpty(), this._isValid ? (this.checkEnvelope(), this._isValid ? (this.checkArea(), this._isValid ? (this.checkDistance(), this._isValid) : this._isValid) : this._isValid) : this._isValid) : this._isValid;\n }, Bi.prototype.checkEnvelope = function() {\n if (this._distance < 0) return null;\n var t = this._distance * Bi.MAX_ENV_DIFF_FRAC;\n 0 === t && (t = .001);\n var e = new j(this._input.getEnvelopeInternal());\n e.expandBy(this._distance);\n var n = new j(this._result.getEnvelopeInternal());\n n.expandBy(t), n.contains(e) || (this._isValid = !1, this._errorMsg = \"Buffer envelope is incorrect\", this._errorIndicator = this._input.getFactory().toGeometry(n)), this.report(\"Envelope\");\n }, Bi.prototype.checkDistance = function() {\n var t = new Gi(this._input, this._distance, this._result);\n t.isValid() || (this._isValid = !1, this._errorMsg = t.getErrorMessage(), this._errorLocation = t.getErrorLocation(), this._errorIndicator = t.getErrorIndicator()), this.report(\"Distance\");\n }, Bi.prototype.checkArea = function() {\n var t = this._input.getArea(), e = this._result.getArea();\n this._distance > 0 && t > e && (this._isValid = !1, this._errorMsg = \"Area of positive buffer is smaller than input\", this._errorIndicator = this._result), this._distance < 0 && t < e && (this._isValid = !1, this._errorMsg = \"Area of negative buffer is larger than input\", this._errorIndicator = this._result), this.report(\"Area\");\n }, Bi.prototype.checkPolygonal = function() {\n this._result instanceof $t || this._result instanceof ne || (this._isValid = !1), this._errorMsg = \"Result is not polygonal\", this._errorIndicator = this._result, this.report(\"Polygonal\");\n }, Bi.prototype.getErrorIndicator = function() {\n return this._errorIndicator;\n }, Bi.prototype.getErrorLocation = function() {\n return this._errorLocation;\n }, Bi.prototype.checkExpectedEmpty = function() {\n return this._input.getDimension() >= 2 ? null : this._distance > 0 ? null : (this._result.isEmpty() || (this._isValid = !1, this._errorMsg = \"Result is non-empty\", this._errorIndicator = this._result), void this.report(\"ExpectedEmpty\"));\n }, Bi.prototype.report = function(t) {\n if (!Bi.VERBOSE) return null;\n Y.out.println(\"Check \" + t + \": \" + (this._isValid ? \"passed\" : \"FAILED\"));\n }, Bi.prototype.getErrorMessage = function() {\n return this._errorMsg;\n }, Bi.prototype.interfaces_ = function() {\n return [];\n }, Bi.prototype.getClass = function() {\n return Bi;\n }, Bi.isValidMsg = function(t, e, n) {\n var i = new Bi(t, e, n);\n return i.isValid() ? null : i.getErrorMessage();\n }, Bi.isValid = function(t, e, n) {\n return !!new Bi(t, e, n).isValid();\n }, Vi.VERBOSE.get = function() {\n return !1;\n }, Vi.MAX_ENV_DIFF_FRAC.get = function() {\n return .012;\n }, Object.defineProperties(Bi, Vi);\n var Ui = function() {\n this._pts = null, this._data = null;\n var t = arguments[0], e = arguments[1];\n this._pts = t, this._data = e;\n };\n Ui.prototype.getCoordinates = function() {\n return this._pts;\n }, Ui.prototype.size = function() {\n return this._pts.length;\n }, Ui.prototype.getCoordinate = function(t) {\n return this._pts[t];\n }, Ui.prototype.isClosed = function() {\n return this._pts[0].equals(this._pts[this._pts.length - 1]);\n }, Ui.prototype.getSegmentOctant = function(t) {\n return t === this._pts.length - 1 ? -1 : pn.octant(this.getCoordinate(t), this.getCoordinate(t + 1));\n }, Ui.prototype.setData = function(t) {\n this._data = t;\n }, Ui.prototype.getData = function() {\n return this._data;\n }, Ui.prototype.toString = function() {\n return Z.toLineString(new ue(this._pts));\n }, Ui.prototype.interfaces_ = function() {\n return [\n hn\n ];\n }, Ui.prototype.getClass = function() {\n return Ui;\n };\n var zi = function() {\n this._findAllIntersections = !1, this._isCheckEndSegmentsOnly = !1, this._li = null, this._interiorIntersection = null, this._intSegments = null, this._intersections = new Nt, this._intersectionCount = 0, this._keepIntersections = !0;\n var t = arguments[0];\n this._li = t, this._interiorIntersection = null;\n };\n zi.prototype.getInteriorIntersection = function() {\n return this._interiorIntersection;\n }, zi.prototype.setCheckEndSegmentsOnly = function(t) {\n this._isCheckEndSegmentsOnly = t;\n }, zi.prototype.getIntersectionSegments = function() {\n return this._intSegments;\n }, zi.prototype.count = function() {\n return this._intersectionCount;\n }, zi.prototype.getIntersections = function() {\n return this._intersections;\n }, zi.prototype.setFindAllIntersections = function(t) {\n this._findAllIntersections = t;\n }, zi.prototype.setKeepIntersections = function(t) {\n this._keepIntersections = t;\n }, zi.prototype.processIntersections = function(t, e, n, i) {\n if (!this._findAllIntersections && this.hasIntersection()) return null;\n if (t === n && e === i) return null;\n if (this._isCheckEndSegmentsOnly) {\n if (!(this.isEndSegment(t, e) || this.isEndSegment(n, i))) return null;\n }\n var r = t.getCoordinates()[e], o = t.getCoordinates()[e + 1], s = n.getCoordinates()[i], a = n.getCoordinates()[i + 1];\n this._li.computeIntersection(r, o, s, a), this._li.hasIntersection() && this._li.isInteriorIntersection() && (this._intSegments = new Array(4).fill(null), this._intSegments[0] = r, this._intSegments[1] = o, this._intSegments[2] = s, this._intSegments[3] = a, this._interiorIntersection = this._li.getIntersection(0), this._keepIntersections && this._intersections.add(this._interiorIntersection), this._intersectionCount++);\n }, zi.prototype.isEndSegment = function(t, e) {\n return 0 === e || e >= t.size() - 2;\n }, zi.prototype.hasIntersection = function() {\n return null !== this._interiorIntersection;\n }, zi.prototype.isDone = function() {\n return !this._findAllIntersections && null !== this._interiorIntersection;\n }, zi.prototype.interfaces_ = function() {\n return [\n Wn\n ];\n }, zi.prototype.getClass = function() {\n return zi;\n }, zi.createAllIntersectionsFinder = function(t) {\n var e = new zi(t);\n return e.setFindAllIntersections(!0), e;\n }, zi.createAnyIntersectionFinder = function(t) {\n return new zi(t);\n }, zi.createIntersectionCounter = function(t) {\n var e = new zi(t);\n return e.setFindAllIntersections(!0), e.setKeepIntersections(!1), e;\n };\n var Xi = function() {\n this._li = new rt, this._segStrings = null, this._findAllIntersections = !1, this._segInt = null, this._isValid = !0;\n var t = arguments[0];\n this._segStrings = t;\n };\n Xi.prototype.execute = function() {\n if (null !== this._segInt) return null;\n this.checkInteriorIntersections();\n }, Xi.prototype.getIntersections = function() {\n return this._segInt.getIntersections();\n }, Xi.prototype.isValid = function() {\n return this.execute(), this._isValid;\n }, Xi.prototype.setFindAllIntersections = function(t) {\n this._findAllIntersections = t;\n }, Xi.prototype.checkInteriorIntersections = function() {\n this._isValid = !0, this._segInt = new zi(this._li), this._segInt.setFindAllIntersections(this._findAllIntersections);\n var t = new xn;\n if (t.setSegmentIntersector(this._segInt), t.computeNodes(this._segStrings), this._segInt.hasIntersection()) return this._isValid = !1, null;\n }, Xi.prototype.checkValid = function() {\n if (this.execute(), !this._isValid) throw new we(this.getErrorMessage(), this._segInt.getInteriorIntersection());\n }, Xi.prototype.getErrorMessage = function() {\n if (this._isValid) return \"no intersections found\";\n var t = this._segInt.getIntersectionSegments();\n return \"found non-noded intersection between \" + Z.toLineString(t[0], t[1]) + \" and \" + Z.toLineString(t[2], t[3]);\n }, Xi.prototype.interfaces_ = function() {\n return [];\n }, Xi.prototype.getClass = function() {\n return Xi;\n }, Xi.computeIntersections = function(t) {\n var e = new Xi(t);\n return e.setFindAllIntersections(!0), e.isValid(), e.getIntersections();\n };\n var Yi = function t() {\n this._nv = null;\n var e = arguments[0];\n this._nv = new Xi(t.toSegmentStrings(e));\n };\n Yi.prototype.checkValid = function() {\n this._nv.checkValid();\n }, Yi.prototype.interfaces_ = function() {\n return [];\n }, Yi.prototype.getClass = function() {\n return Yi;\n }, Yi.toSegmentStrings = function(t) {\n for(var e = new Nt, n = t.iterator(); n.hasNext();){\n var i = n.next();\n e.add(new Ui(i.getCoordinates(), i));\n }\n return e;\n }, Yi.checkValid = function(t) {\n new Yi(t).checkValid();\n };\n var ki = function(t) {\n this._mapOp = t;\n };\n ki.prototype.map = function(t) {\n for(var e = new Nt, n = 0; n < t.getNumGeometries(); n++){\n var i = this._mapOp.map(t.getGeometryN(n));\n i.isEmpty() || e.add(i);\n }\n return t.getFactory().createGeometryCollection(_e.toGeometryArray(e));\n }, ki.prototype.interfaces_ = function() {\n return [];\n }, ki.prototype.getClass = function() {\n return ki;\n }, ki.map = function(t, e) {\n return new ki(e).map(t);\n };\n var ji = function() {\n this._op = null, this._geometryFactory = null, this._ptLocator = null, this._lineEdgesList = new Nt, this._resultLineList = new Nt;\n var t = arguments[0], e = arguments[1], n = arguments[2];\n this._op = t, this._geometryFactory = e, this._ptLocator = n;\n };\n ji.prototype.collectLines = function(t) {\n for(var e = this._op.getGraph().getEdgeEnds().iterator(); e.hasNext();){\n var n = e.next();\n this.collectLineEdge(n, t, this._lineEdgesList), this.collectBoundaryTouchEdge(n, t, this._lineEdgesList);\n }\n }, ji.prototype.labelIsolatedLine = function(t, e) {\n var n = this._ptLocator.locate(t.getCoordinate(), this._op.getArgGeometry(e));\n t.getLabel().setLocation(e, n);\n }, ji.prototype.build = function(t) {\n return this.findCoveredLineEdges(), this.collectLines(t), this.buildLines(t), this._resultLineList;\n }, ji.prototype.collectLineEdge = function(t, e, n) {\n var i = t.getLabel(), r = t.getEdge();\n t.isLineEdge() && (t.isVisited() || !Lr.isResultOfOp(i, e) || r.isCovered() || (n.add(r), t.setVisitedEdge(!0)));\n }, ji.prototype.findCoveredLineEdges = function() {\n for(var t = this._op.getGraph().getNodes().iterator(); t.hasNext();)t.next().getEdges().findCoveredLineEdges();\n for(var e = this._op.getGraph().getEdgeEnds().iterator(); e.hasNext();){\n var n = e.next(), i = n.getEdge();\n if (n.isLineEdge() && !i.isCoveredSet()) {\n var r = this._op.isCoveredByA(n.getCoordinate());\n i.setCovered(r);\n }\n }\n }, ji.prototype.labelIsolatedLines = function(t) {\n for(var e = t.iterator(); e.hasNext();){\n var n = e.next(), i = n.getLabel();\n n.isIsolated() && (i.isNull(0) ? this.labelIsolatedLine(n, 0) : this.labelIsolatedLine(n, 1));\n }\n }, ji.prototype.buildLines = function(t) {\n for(var e = this._lineEdgesList.iterator(); e.hasNext();){\n var n = e.next(), i = this._geometryFactory.createLineString(n.getCoordinates());\n this._resultLineList.add(i), n.setInResult(!0);\n }\n }, ji.prototype.collectBoundaryTouchEdge = function(t, e, n) {\n var i = t.getLabel();\n return t.isLineEdge() ? null : t.isVisited() ? null : t.isInteriorAreaEdge() ? null : t.getEdge().isInResult() ? null : (et.isTrue(!(t.isInResult() || t.getSym().isInResult()) || !t.getEdge().isInResult()), void (Lr.isResultOfOp(i, e) && e === Lr.INTERSECTION && (n.add(t.getEdge()), t.setVisitedEdge(!0))));\n }, ji.prototype.interfaces_ = function() {\n return [];\n }, ji.prototype.getClass = function() {\n return ji;\n };\n var Hi = function() {\n this._op = null, this._geometryFactory = null, this._resultPointList = new Nt;\n var t = arguments[0], e = arguments[1];\n this._op = t, this._geometryFactory = e;\n };\n Hi.prototype.filterCoveredNodeToPoint = function(t) {\n var e = t.getCoordinate();\n if (!this._op.isCoveredByLA(e)) {\n var n = this._geometryFactory.createPoint(e);\n this._resultPointList.add(n);\n }\n }, Hi.prototype.extractNonCoveredResultNodes = function(t) {\n for(var e = this._op.getGraph().getNodes().iterator(); e.hasNext();){\n var n = e.next();\n if (!n.isInResult() && !n.isIncidentEdgeInResult() && (0 === n.getEdges().getDegree() || t === Lr.INTERSECTION)) {\n var i = n.getLabel();\n Lr.isResultOfOp(i, t) && this.filterCoveredNodeToPoint(n);\n }\n }\n }, Hi.prototype.build = function(t) {\n return this.extractNonCoveredResultNodes(t), this._resultPointList;\n }, Hi.prototype.interfaces_ = function() {\n return [];\n }, Hi.prototype.getClass = function() {\n return Hi;\n };\n var Wi = function() {\n this._inputGeom = null, this._factory = null, this._pruneEmptyGeometry = !0, this._preserveGeometryCollectionType = !0, this._preserveCollections = !1, this._preserveType = !1;\n };\n Wi.prototype.transformPoint = function(t, e) {\n return this._factory.createPoint(this.transformCoordinates(t.getCoordinateSequence(), t));\n }, Wi.prototype.transformPolygon = function(t, e) {\n var n = !0, i = this.transformLinearRing(t.getExteriorRing(), t);\n null !== i && i instanceof ee && !i.isEmpty() || (n = !1);\n for(var r = new Nt, o = 0; o < t.getNumInteriorRing(); o++){\n var s = this.transformLinearRing(t.getInteriorRingN(o), t);\n null === s || s.isEmpty() || (s instanceof ee || (n = !1), r.add(s));\n }\n if (n) return this._factory.createPolygon(i, r.toArray([]));\n var a = new Nt;\n return null !== i && a.add(i), a.addAll(r), this._factory.buildGeometry(a);\n }, Wi.prototype.createCoordinateSequence = function(t) {\n return this._factory.getCoordinateSequenceFactory().create(t);\n }, Wi.prototype.getInputGeometry = function() {\n return this._inputGeom;\n }, Wi.prototype.transformMultiLineString = function(t, e) {\n for(var n = new Nt, i = 0; i < t.getNumGeometries(); i++){\n var r = this.transformLineString(t.getGeometryN(i), t);\n null !== r && (r.isEmpty() || n.add(r));\n }\n return this._factory.buildGeometry(n);\n }, Wi.prototype.transformCoordinates = function(t, e) {\n return this.copy(t);\n }, Wi.prototype.transformLineString = function(t, e) {\n return this._factory.createLineString(this.transformCoordinates(t.getCoordinateSequence(), t));\n }, Wi.prototype.transformMultiPoint = function(t, e) {\n for(var n = new Nt, i = 0; i < t.getNumGeometries(); i++){\n var r = this.transformPoint(t.getGeometryN(i), t);\n null !== r && (r.isEmpty() || n.add(r));\n }\n return this._factory.buildGeometry(n);\n }, Wi.prototype.transformMultiPolygon = function(t, e) {\n for(var n = new Nt, i = 0; i < t.getNumGeometries(); i++){\n var r = this.transformPolygon(t.getGeometryN(i), t);\n null !== r && (r.isEmpty() || n.add(r));\n }\n return this._factory.buildGeometry(n);\n }, Wi.prototype.copy = function(t) {\n return t.copy();\n }, Wi.prototype.transformGeometryCollection = function(t, e) {\n for(var n = new Nt, i = 0; i < t.getNumGeometries(); i++){\n var r = this.transform(t.getGeometryN(i));\n null !== r && (this._pruneEmptyGeometry && r.isEmpty() || n.add(r));\n }\n return this._preserveGeometryCollectionType ? this._factory.createGeometryCollection(_e.toGeometryArray(n)) : this._factory.buildGeometry(n);\n }, Wi.prototype.transform = function(t) {\n if (this._inputGeom = t, this._factory = t.getFactory(), t instanceof Qt) return this.transformPoint(t, null);\n if (t instanceof te) return this.transformMultiPoint(t, null);\n if (t instanceof ee) return this.transformLinearRing(t, null);\n if (t instanceof Kt) return this.transformLineString(t, null);\n if (t instanceof Xt) return this.transformMultiLineString(t, null);\n if (t instanceof $t) return this.transformPolygon(t, null);\n if (t instanceof ne) return this.transformMultiPolygon(t, null);\n if (t instanceof zt) return this.transformGeometryCollection(t, null);\n throw new m(\"Unknown Geometry subtype: \" + t.getClass().getName());\n }, Wi.prototype.transformLinearRing = function(t, e) {\n var n = this.transformCoordinates(t.getCoordinateSequence(), t);\n if (null === n) return this._factory.createLinearRing(null);\n var i = n.size();\n return i > 0 && i < 4 && !this._preserveType ? this._factory.createLineString(n) : this._factory.createLinearRing(n);\n }, Wi.prototype.interfaces_ = function() {\n return [];\n }, Wi.prototype.getClass = function() {\n return Wi;\n };\n var Ki = function t() {\n if (this._snapTolerance = 0, this._srcPts = null, this._seg = new dn, this._allowSnappingToSourceVertices = !1, this._isClosed = !1, arguments[0] instanceof Kt && \"number\" == typeof arguments[1]) {\n var e = arguments[0], n = arguments[1];\n t.call(this, e.getCoordinates(), n);\n } else if (arguments[0] instanceof Array && \"number\" == typeof arguments[1]) {\n var i = arguments[0], r = arguments[1];\n this._srcPts = i, this._isClosed = t.isClosed(i), this._snapTolerance = r;\n }\n };\n Ki.prototype.snapVertices = function(t, e) {\n for(var n = this._isClosed ? t.size() - 1 : t.size(), i = 0; i < n; i++){\n var r = t.get(i), o = this.findSnapForVertex(r, e);\n null !== o && (t.set(i, new C(o)), 0 === i && this._isClosed && t.set(t.size() - 1, new C(o)));\n }\n }, Ki.prototype.findSnapForVertex = function(t, e) {\n for(var n = 0; n < e.length; n++){\n if (t.equals2D(e[n])) return null;\n if (t.distance(e[n]) < this._snapTolerance) return e[n];\n }\n return null;\n }, Ki.prototype.snapTo = function(t) {\n var e = new St(this._srcPts);\n this.snapVertices(e, t), this.snapSegments(e, t);\n return e.toCoordinateArray();\n }, Ki.prototype.snapSegments = function(t, e) {\n if (0 === e.length) return null;\n var n = e.length;\n e[0].equals2D(e[e.length - 1]) && (n = e.length - 1);\n for(var i = 0; i < n; i++){\n var r = e[i], o = this.findSegmentIndexToSnap(r, t);\n o >= 0 && t.add(o + 1, new C(r), !1);\n }\n }, Ki.prototype.findSegmentIndexToSnap = function(t, e) {\n for(var n = v.MAX_VALUE, i = -1, r = 0; r < e.size() - 1; r++){\n if (this._seg.p0 = e.get(r), this._seg.p1 = e.get(r + 1), this._seg.p0.equals2D(t) || this._seg.p1.equals2D(t)) {\n if (this._allowSnappingToSourceVertices) continue;\n return -1;\n }\n var o = this._seg.distance(t);\n o < this._snapTolerance && o < n && (n = o, i = r);\n }\n return i;\n }, Ki.prototype.setAllowSnappingToSourceVertices = function(t) {\n this._allowSnappingToSourceVertices = t;\n }, Ki.prototype.interfaces_ = function() {\n return [];\n }, Ki.prototype.getClass = function() {\n return Ki;\n }, Ki.isClosed = function(t) {\n return !(t.length <= 1) && t[0].equals2D(t[t.length - 1]);\n };\n var Ji = function(t) {\n this._srcGeom = t || null;\n }, Qi = {\n SNAP_PRECISION_FACTOR: {\n configurable: !0\n }\n };\n Ji.prototype.snapTo = function(t, e) {\n var n = this.extractTargetCoordinates(t);\n return new Zi(e, n).transform(this._srcGeom);\n }, Ji.prototype.snapToSelf = function(t, e) {\n var n = this.extractTargetCoordinates(this._srcGeom), i = new Zi(t, n, !0).transform(this._srcGeom), r = i;\n return e && T(r, Zt) && (r = i.buffer(0)), r;\n }, Ji.prototype.computeSnapTolerance = function(t) {\n return this.computeMinimumSegmentLength(t) / 10;\n }, Ji.prototype.extractTargetCoordinates = function(t) {\n for(var e = new f, n = t.getCoordinates(), i = 0; i < n.length; i++)e.add(n[i]);\n return e.toArray(new Array(0).fill(null));\n }, Ji.prototype.computeMinimumSegmentLength = function(t) {\n for(var e = v.MAX_VALUE, n = 0; n < t.length - 1; n++){\n var i = t[n].distance(t[n + 1]);\n i < e && (e = i);\n }\n return e;\n }, Ji.prototype.interfaces_ = function() {\n return [];\n }, Ji.prototype.getClass = function() {\n return Ji;\n }, Ji.snap = function(t, e, n) {\n var i = new Array(2).fill(null), r = new Ji(t);\n i[0] = r.snapTo(e, n);\n var o = new Ji(e);\n return i[1] = o.snapTo(i[0], n), i;\n }, Ji.computeOverlaySnapTolerance = function() {\n if (1 === arguments.length) {\n var t = arguments[0], e = Ji.computeSizeBasedSnapTolerance(t), n = t.getPrecisionModel();\n if (n.getType() === fe.FIXED) {\n var i = 1 / n.getScale() * 2 / 1.415;\n i > e && (e = i);\n }\n return e;\n }\n if (2 === arguments.length) {\n var r = arguments[0], o = arguments[1];\n return Math.min(Ji.computeOverlaySnapTolerance(r), Ji.computeOverlaySnapTolerance(o));\n }\n }, Ji.computeSizeBasedSnapTolerance = function(t) {\n var e = t.getEnvelopeInternal();\n return Math.min(e.getHeight(), e.getWidth()) * Ji.SNAP_PRECISION_FACTOR;\n }, Ji.snapToSelf = function(t, e, n) {\n return new Ji(t).snapToSelf(e, n);\n }, Qi.SNAP_PRECISION_FACTOR.get = function() {\n return 1e-9;\n }, Object.defineProperties(Ji, Qi);\n var Zi = function(t) {\n function e(e, n, i) {\n t.call(this), this._snapTolerance = e || null, this._snapPts = n || null, this._isSelfSnap = void 0 !== i && i;\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.snapLine = function(t, e) {\n var n = new Ki(t, this._snapTolerance);\n return n.setAllowSnappingToSourceVertices(this._isSelfSnap), n.snapTo(e);\n }, e.prototype.transformCoordinates = function(t, e) {\n var n = t.toCoordinateArray(), i = this.snapLine(n, this._snapPts);\n return this._factory.getCoordinateSequenceFactory().create(i);\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e;\n }(Wi), $i = function() {\n this._isFirst = !0, this._commonMantissaBitsCount = 53, this._commonBits = 0, this._commonSignExp = null;\n };\n $i.prototype.getCommon = function() {\n return v.longBitsToDouble(this._commonBits);\n }, $i.prototype.add = function(t) {\n var e = v.doubleToLongBits(t);\n if (this._isFirst) return this._commonBits = e, this._commonSignExp = $i.signExpBits(this._commonBits), this._isFirst = !1, null;\n if ($i.signExpBits(e) !== this._commonSignExp) return this._commonBits = 0, null;\n this._commonMantissaBitsCount = $i.numCommonMostSigMantissaBits(this._commonBits, e), this._commonBits = $i.zeroLowerBits(this._commonBits, 64 - (12 + this._commonMantissaBitsCount));\n }, $i.prototype.toString = function() {\n if (1 === arguments.length) {\n var t = arguments[0], e = v.longBitsToDouble(t), n = \"0000000000000000000000000000000000000000000000000000000000000000\" + v.toBinaryString(t), i = n.substring(n.length - 64);\n return i.substring(0, 1) + \" \" + i.substring(1, 12) + \"(exp) \" + i.substring(12) + \" [ \" + e + \" ]\";\n }\n }, $i.prototype.interfaces_ = function() {\n return [];\n }, $i.prototype.getClass = function() {\n return $i;\n }, $i.getBit = function(t, e) {\n return 0 != (t & 1 << e) ? 1 : 0;\n }, $i.signExpBits = function(t) {\n return t >> 52;\n }, $i.zeroLowerBits = function(t, e) {\n return t & ~((1 << e) - 1);\n }, $i.numCommonMostSigMantissaBits = function(t, e) {\n for(var n = 0, i = 52; i >= 0; i--){\n if ($i.getBit(t, i) !== $i.getBit(e, i)) return n;\n n++;\n }\n return 52;\n };\n var tr = function() {\n this._commonCoord = null, this._ccFilter = new nr;\n }, er = {\n CommonCoordinateFilter: {\n configurable: !0\n },\n Translater: {\n configurable: !0\n }\n };\n tr.prototype.addCommonBits = function(t) {\n var e = new ir(this._commonCoord);\n t.apply(e), t.geometryChanged();\n }, tr.prototype.removeCommonBits = function(t) {\n if (0 === this._commonCoord.x && 0 === this._commonCoord.y) return t;\n var e = new C(this._commonCoord);\n e.x = -e.x, e.y = -e.y;\n var n = new ir(e);\n return t.apply(n), t.geometryChanged(), t;\n }, tr.prototype.getCommonCoordinate = function() {\n return this._commonCoord;\n }, tr.prototype.add = function(t) {\n t.apply(this._ccFilter), this._commonCoord = this._ccFilter.getCommonCoordinate();\n }, tr.prototype.interfaces_ = function() {\n return [];\n }, tr.prototype.getClass = function() {\n return tr;\n }, er.CommonCoordinateFilter.get = function() {\n return nr;\n }, er.Translater.get = function() {\n return ir;\n }, Object.defineProperties(tr, er);\n var nr = function() {\n this._commonBitsX = new $i, this._commonBitsY = new $i;\n };\n nr.prototype.filter = function(t) {\n this._commonBitsX.add(t.x), this._commonBitsY.add(t.y);\n }, nr.prototype.getCommonCoordinate = function() {\n return new C(this._commonBitsX.getCommon(), this._commonBitsY.getCommon());\n }, nr.prototype.interfaces_ = function() {\n return [\n ft\n ];\n }, nr.prototype.getClass = function() {\n return nr;\n };\n var ir = function() {\n this.trans = null;\n var t = arguments[0];\n this.trans = t;\n };\n ir.prototype.filter = function(t, e) {\n var n = t.getOrdinate(e, 0) + this.trans.x, i = t.getOrdinate(e, 1) + this.trans.y;\n t.setOrdinate(e, 0, n), t.setOrdinate(e, 1, i);\n }, ir.prototype.isDone = function() {\n return !1;\n }, ir.prototype.isGeometryChanged = function() {\n return !0;\n }, ir.prototype.interfaces_ = function() {\n return [\n Ut\n ];\n }, ir.prototype.getClass = function() {\n return ir;\n };\n var rr = function(t, e) {\n this._geom = new Array(2).fill(null), this._snapTolerance = null, this._cbr = null, this._geom[0] = t, this._geom[1] = e, this.computeSnapTolerance();\n };\n rr.prototype.selfSnap = function(t) {\n return new Ji(t).snapTo(t, this._snapTolerance);\n }, rr.prototype.removeCommonBits = function(t) {\n this._cbr = new tr, this._cbr.add(t[0]), this._cbr.add(t[1]);\n var e = new Array(2).fill(null);\n return e[0] = this._cbr.removeCommonBits(t[0].copy()), e[1] = this._cbr.removeCommonBits(t[1].copy()), e;\n }, rr.prototype.prepareResult = function(t) {\n return this._cbr.addCommonBits(t), t;\n }, rr.prototype.getResultGeometry = function(t) {\n var e = this.snap(this._geom), n = Lr.overlayOp(e[0], e[1], t);\n return this.prepareResult(n);\n }, rr.prototype.checkValid = function(t) {\n t.isValid() || Y.out.println(\"Snapped geometry is invalid\");\n }, rr.prototype.computeSnapTolerance = function() {\n this._snapTolerance = Ji.computeOverlaySnapTolerance(this._geom[0], this._geom[1]);\n }, rr.prototype.snap = function(t) {\n var e = this.removeCommonBits(t);\n return Ji.snap(e[0], e[1], this._snapTolerance);\n }, rr.prototype.interfaces_ = function() {\n return [];\n }, rr.prototype.getClass = function() {\n return rr;\n }, rr.overlayOp = function(t, e, n) {\n return new rr(t, e).getResultGeometry(n);\n }, rr.union = function(t, e) {\n return rr.overlayOp(t, e, Lr.UNION);\n }, rr.intersection = function(t, e) {\n return rr.overlayOp(t, e, Lr.INTERSECTION);\n }, rr.symDifference = function(t, e) {\n return rr.overlayOp(t, e, Lr.SYMDIFFERENCE);\n }, rr.difference = function(t, e) {\n return rr.overlayOp(t, e, Lr.DIFFERENCE);\n };\n var or = function(t, e) {\n this._geom = new Array(2).fill(null), this._geom[0] = t, this._geom[1] = e;\n };\n or.prototype.getResultGeometry = function(t) {\n var e = null, n = !1, i = null;\n try {\n e = Lr.overlayOp(this._geom[0], this._geom[1], t);\n n = !0;\n } catch (t) {\n if (!(t instanceof $)) throw t;\n i = t;\n }\n if (!n) try {\n e = rr.overlayOp(this._geom[0], this._geom[1], t);\n } catch (t) {\n throw t instanceof $ ? i : t;\n }\n return e;\n }, or.prototype.interfaces_ = function() {\n return [];\n }, or.prototype.getClass = function() {\n return or;\n }, or.overlayOp = function(t, e, n) {\n return new or(t, e).getResultGeometry(n);\n }, or.union = function(t, e) {\n return or.overlayOp(t, e, Lr.UNION);\n }, or.intersection = function(t, e) {\n return or.overlayOp(t, e, Lr.INTERSECTION);\n }, or.symDifference = function(t, e) {\n return or.overlayOp(t, e, Lr.SYMDIFFERENCE);\n }, or.difference = function(t, e) {\n return or.overlayOp(t, e, Lr.DIFFERENCE);\n };\n var sr = function() {\n this.mce = null, this.chainIndex = null;\n var t = arguments[0], e = arguments[1];\n this.mce = t, this.chainIndex = e;\n };\n sr.prototype.computeIntersections = function(t, e) {\n this.mce.computeIntersectsForChain(this.chainIndex, t.mce, t.chainIndex, e);\n }, sr.prototype.interfaces_ = function() {\n return [];\n }, sr.prototype.getClass = function() {\n return sr;\n };\n var ar = function t() {\n if (this._label = null, this._xValue = null, this._eventType = null, this._insertEvent = null, this._deleteEventIndex = null, this._obj = null, 2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n this._eventType = t.DELETE, this._xValue = e, this._insertEvent = n;\n } else if (3 === arguments.length) {\n var i = arguments[0], r = arguments[1], o = arguments[2];\n this._eventType = t.INSERT, this._label = i, this._xValue = r, this._obj = o;\n }\n }, ur = {\n INSERT: {\n configurable: !0\n },\n DELETE: {\n configurable: !0\n }\n };\n ar.prototype.isDelete = function() {\n return this._eventType === ar.DELETE;\n }, ar.prototype.setDeleteEventIndex = function(t) {\n this._deleteEventIndex = t;\n }, ar.prototype.getObject = function() {\n return this._obj;\n }, ar.prototype.compareTo = function(t) {\n var e = t;\n return this._xValue < e._xValue ? -1 : this._xValue > e._xValue ? 1 : this._eventType < e._eventType ? -1 : this._eventType > e._eventType ? 1 : 0;\n }, ar.prototype.getInsertEvent = function() {\n return this._insertEvent;\n }, ar.prototype.isInsert = function() {\n return this._eventType === ar.INSERT;\n }, ar.prototype.isSameLabel = function(t) {\n return null !== this._label && this._label === t._label;\n }, ar.prototype.getDeleteEventIndex = function() {\n return this._deleteEventIndex;\n }, ar.prototype.interfaces_ = function() {\n return [\n E\n ];\n }, ar.prototype.getClass = function() {\n return ar;\n }, ur.INSERT.get = function() {\n return 1;\n }, ur.DELETE.get = function() {\n return 2;\n }, Object.defineProperties(ar, ur);\n var lr = function() {};\n lr.prototype.interfaces_ = function() {\n return [];\n }, lr.prototype.getClass = function() {\n return lr;\n };\n var cr = function() {\n this._hasIntersection = !1, this._hasProper = !1, this._hasProperInterior = !1, this._properIntersectionPoint = null, this._li = null, this._includeProper = null, this._recordIsolated = null, this._isSelfIntersection = null, this._numIntersections = 0, this.numTests = 0, this._bdyNodes = null, this._isDone = !1, this._isDoneWhenProperInt = !1;\n var t = arguments[0], e = arguments[1], n = arguments[2];\n this._li = t, this._includeProper = e, this._recordIsolated = n;\n };\n cr.prototype.isTrivialIntersection = function(t, e, n, i) {\n if (t === n && 1 === this._li.getIntersectionNum()) {\n if (cr.isAdjacentSegments(e, i)) return !0;\n if (t.isClosed()) {\n var r = t.getNumPoints() - 1;\n if (0 === e && i === r || 0 === i && e === r) return !0;\n }\n }\n return !1;\n }, cr.prototype.getProperIntersectionPoint = function() {\n return this._properIntersectionPoint;\n }, cr.prototype.setIsDoneIfProperInt = function(t) {\n this._isDoneWhenProperInt = t;\n }, cr.prototype.hasProperInteriorIntersection = function() {\n return this._hasProperInterior;\n }, cr.prototype.isBoundaryPointInternal = function(t, e) {\n for(var n = e.iterator(); n.hasNext();){\n var i = n.next().getCoordinate();\n if (t.isIntersection(i)) return !0;\n }\n return !1;\n }, cr.prototype.hasProperIntersection = function() {\n return this._hasProper;\n }, cr.prototype.hasIntersection = function() {\n return this._hasIntersection;\n }, cr.prototype.isDone = function() {\n return this._isDone;\n }, cr.prototype.isBoundaryPoint = function(t, e) {\n return null !== e && (!!this.isBoundaryPointInternal(t, e[0]) || !!this.isBoundaryPointInternal(t, e[1]));\n }, cr.prototype.setBoundaryNodes = function(t, e) {\n this._bdyNodes = new Array(2).fill(null), this._bdyNodes[0] = t, this._bdyNodes[1] = e;\n }, cr.prototype.addIntersections = function(t, e, n, i) {\n if (t === n && e === i) return null;\n this.numTests++;\n var r = t.getCoordinates()[e], o = t.getCoordinates()[e + 1], s = n.getCoordinates()[i], a = n.getCoordinates()[i + 1];\n this._li.computeIntersection(r, o, s, a), this._li.hasIntersection() && (this._recordIsolated && (t.setIsolated(!1), n.setIsolated(!1)), this._numIntersections++, this.isTrivialIntersection(t, e, n, i) || (this._hasIntersection = !0, !this._includeProper && this._li.isProper() || (t.addIntersections(this._li, e, 0), n.addIntersections(this._li, i, 1)), this._li.isProper() && (this._properIntersectionPoint = this._li.getIntersection(0).copy(), this._hasProper = !0, this._isDoneWhenProperInt && (this._isDone = !0), this.isBoundaryPoint(this._li, this._bdyNodes) || (this._hasProperInterior = !0))));\n }, cr.prototype.interfaces_ = function() {\n return [];\n }, cr.prototype.getClass = function() {\n return cr;\n }, cr.isAdjacentSegments = function(t, e) {\n return 1 === Math.abs(t - e);\n };\n var pr = function(t) {\n function e() {\n t.call(this), this.events = new Nt, this.nOverlaps = null;\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.prepareEvents = function() {\n $e.sort(this.events);\n for(var t = 0; t < this.events.size(); t++){\n var e = this.events.get(t);\n e.isDelete() && e.getInsertEvent().setDeleteEventIndex(t);\n }\n }, e.prototype.computeIntersections = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n this.nOverlaps = 0, this.prepareEvents();\n for(var e = 0; e < this.events.size(); e++){\n var n = this.events.get(e);\n if (n.isInsert() && this.processOverlaps(e, n.getDeleteEventIndex(), n, t), t.isDone()) break;\n }\n } else if (3 === arguments.length) {\n if (arguments[2] instanceof cr && T(arguments[0], xt) && T(arguments[1], xt)) {\n var i = arguments[0], r = arguments[1], o = arguments[2];\n this.addEdges(i, i), this.addEdges(r, r), this.computeIntersections(o);\n } else if (\"boolean\" == typeof arguments[2] && T(arguments[0], xt) && arguments[1] instanceof cr) {\n var s = arguments[0], a = arguments[1];\n arguments[2] ? this.addEdges(s, null) : this.addEdges(s), this.computeIntersections(a);\n }\n }\n }, e.prototype.addEdge = function(t, e) {\n for(var n = t.getMonotoneChainEdge(), i = n.getStartIndexes(), r = 0; r < i.length - 1; r++){\n var o = new sr(n, r), s = new ar(e, n.getMinX(r), o);\n this.events.add(s), this.events.add(new ar(n.getMaxX(r), s));\n }\n }, e.prototype.processOverlaps = function(t, e, n, i) {\n for(var r = n.getObject(), o = t; o < e; o++){\n var s = this.events.get(o);\n if (s.isInsert()) {\n var a = s.getObject();\n n.isSameLabel(s) || (r.computeIntersections(a, i), this.nOverlaps++);\n }\n }\n }, e.prototype.addEdges = function() {\n if (1 === arguments.length) for(var t = arguments[0].iterator(); t.hasNext();){\n var e = t.next();\n this.addEdge(e, e);\n }\n else if (2 === arguments.length) for(var n = arguments[0], i = arguments[1], r = n.iterator(); r.hasNext();){\n var o = r.next();\n this.addEdge(o, i);\n }\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e;\n }(lr), hr = function() {\n this._min = v.POSITIVE_INFINITY, this._max = v.NEGATIVE_INFINITY;\n }, fr = {\n NodeComparator: {\n configurable: !0\n }\n };\n hr.prototype.getMin = function() {\n return this._min;\n }, hr.prototype.intersects = function(t, e) {\n return !(this._min > e || this._max < t);\n }, hr.prototype.getMax = function() {\n return this._max;\n }, hr.prototype.toString = function() {\n return Z.toLineString(new C(this._min, 0), new C(this._max, 0));\n }, hr.prototype.interfaces_ = function() {\n return [];\n }, hr.prototype.getClass = function() {\n return hr;\n }, fr.NodeComparator.get = function() {\n return gr;\n }, Object.defineProperties(hr, fr);\n var gr = function() {};\n gr.prototype.compare = function(t, e) {\n var n = t, i = e, r = (n._min + n._max) / 2, o = (i._min + i._max) / 2;\n return r < o ? -1 : r > o ? 1 : 0;\n }, gr.prototype.interfaces_ = function() {\n return [\n N\n ];\n }, gr.prototype.getClass = function() {\n return gr;\n };\n var dr = function(t) {\n function e() {\n t.call(this), this._item = null;\n var e = arguments[0], n = arguments[1], i = arguments[2];\n this._min = e, this._max = n, this._item = i;\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.query = function(t, e, n) {\n if (!this.intersects(t, e)) return null;\n n.visitItem(this._item);\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e;\n }(hr), yr = function(t) {\n function e() {\n t.call(this), this._node1 = null, this._node2 = null;\n var e = arguments[0], n = arguments[1];\n this._node1 = e, this._node2 = n, this.buildExtent(this._node1, this._node2);\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.buildExtent = function(t, e) {\n this._min = Math.min(t._min, e._min), this._max = Math.max(t._max, e._max);\n }, e.prototype.query = function(t, e, n) {\n if (!this.intersects(t, e)) return null;\n null !== this._node1 && this._node1.query(t, e, n), null !== this._node2 && this._node2.query(t, e, n);\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e;\n }(hr), _r = function() {\n this._leaves = new Nt, this._root = null, this._level = 0;\n };\n _r.prototype.buildTree = function() {\n $e.sort(this._leaves, new hr.NodeComparator);\n for(var t = this._leaves, e = null, n = new Nt;;){\n if (this.buildLevel(t, n), 1 === n.size()) return n.get(0);\n e = t, t = n, n = e;\n }\n }, _r.prototype.insert = function(t, e, n) {\n if (null !== this._root) throw new Error(\"Index cannot be added to once it has been queried\");\n this._leaves.add(new dr(t, e, n));\n }, _r.prototype.query = function(t, e, n) {\n this.init(), this._root.query(t, e, n);\n }, _r.prototype.buildRoot = function() {\n if (null !== this._root) return null;\n this._root = this.buildTree();\n }, _r.prototype.printNode = function(t) {\n Y.out.println(Z.toLineString(new C(t._min, this._level), new C(t._max, this._level)));\n }, _r.prototype.init = function() {\n if (null !== this._root) return null;\n this.buildRoot();\n }, _r.prototype.buildLevel = function(t, e) {\n this._level++, e.clear();\n for(var n = 0; n < t.size(); n += 2){\n var i = t.get(n);\n if (null === (n + 1 < t.size() ? t.get(n) : null)) e.add(i);\n else {\n var r = new yr(t.get(n), t.get(n + 1));\n e.add(r);\n }\n }\n }, _r.prototype.interfaces_ = function() {\n return [];\n }, _r.prototype.getClass = function() {\n return _r;\n };\n var mr = function() {\n this._items = new Nt;\n };\n mr.prototype.visitItem = function(t) {\n this._items.add(t);\n }, mr.prototype.getItems = function() {\n return this._items;\n }, mr.prototype.interfaces_ = function() {\n return [\n Ke\n ];\n }, mr.prototype.getClass = function() {\n return mr;\n };\n var vr = function() {\n this._index = null;\n var t = arguments[0];\n if (!T(t, Zt)) throw new m(\"Argument must be Polygonal\");\n this._index = new xr(t);\n }, Ir = {\n SegmentVisitor: {\n configurable: !0\n },\n IntervalIndexedGeometry: {\n configurable: !0\n }\n };\n vr.prototype.locate = function(t) {\n var e = new st(t), n = new Er(e);\n return this._index.query(t.y, t.y, n), e.getLocation();\n }, vr.prototype.interfaces_ = function() {\n return [\n Vn\n ];\n }, vr.prototype.getClass = function() {\n return vr;\n }, Ir.SegmentVisitor.get = function() {\n return Er;\n }, Ir.IntervalIndexedGeometry.get = function() {\n return xr;\n }, Object.defineProperties(vr, Ir);\n var Er = function() {\n this._counter = null;\n var t = arguments[0];\n this._counter = t;\n };\n Er.prototype.visitItem = function(t) {\n var e = t;\n this._counter.countSegment(e.getCoordinate(0), e.getCoordinate(1));\n }, Er.prototype.interfaces_ = function() {\n return [\n Ke\n ];\n }, Er.prototype.getClass = function() {\n return Er;\n };\n var xr = function() {\n this._index = new _r;\n var t = arguments[0];\n this.init(t);\n };\n xr.prototype.init = function(t) {\n for(var e = Ci.getLines(t).iterator(); e.hasNext();){\n var n = e.next().getCoordinates();\n this.addLine(n);\n }\n }, xr.prototype.addLine = function(t) {\n for(var e = 1; e < t.length; e++){\n var n = new dn(t[e - 1], t[e]), i = Math.min(n.p0.y, n.p1.y), r = Math.max(n.p0.y, n.p1.y);\n this._index.insert(i, r, n);\n }\n }, xr.prototype.query = function() {\n if (2 === arguments.length) {\n var t = arguments[0], e = arguments[1], n = new mr;\n return this._index.query(t, e, n), n.getItems();\n }\n if (3 === arguments.length) {\n var i = arguments[0], r = arguments[1], o = arguments[2];\n this._index.query(i, r, o);\n }\n }, xr.prototype.interfaces_ = function() {\n return [];\n }, xr.prototype.getClass = function() {\n return xr;\n };\n var Nr = function(t) {\n function e() {\n if (t.call(this), this._parentGeom = null, this._lineEdgeMap = new he, this._boundaryNodeRule = null, this._useBoundaryDeterminationRule = !0, this._argIndex = null, this._boundaryNodes = null, this._hasTooFewPoints = !1, this._invalidPoint = null, this._areaPtLocator = null, this._ptLocator = new Si, 2 === arguments.length) {\n var e = arguments[0], n = arguments[1], i = gt.OGC_SFS_BOUNDARY_RULE;\n this._argIndex = e, this._parentGeom = n, this._boundaryNodeRule = i, null !== n && this.add(n);\n } else if (3 === arguments.length) {\n var r = arguments[0], o = arguments[1], s = arguments[2];\n this._argIndex = r, this._parentGeom = o, this._boundaryNodeRule = s, null !== o && this.add(o);\n }\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.insertBoundaryPoint = function(t, n) {\n var i = this._nodes.addNode(n).getLabel(), r = 1;\n w.NONE;\n i.getLocation(t, Se.ON) === w.BOUNDARY && r++;\n var o = e.determineBoundary(this._boundaryNodeRule, r);\n i.setLocation(t, o);\n }, e.prototype.computeSelfNodes = function() {\n if (2 === arguments.length) {\n var t = arguments[0], e = arguments[1];\n return this.computeSelfNodes(t, e, !1);\n }\n if (3 === arguments.length) {\n var n = arguments[0], i = arguments[1], r = arguments[2], o = new cr(n, !0, !1);\n o.setIsDoneIfProperInt(r);\n var s = this.createEdgeSetIntersector(), a = this._parentGeom instanceof ee || this._parentGeom instanceof $t || this._parentGeom instanceof ne, u = i || !a;\n return s.computeIntersections(this._edges, o, u), this.addSelfIntersectionNodes(this._argIndex), o;\n }\n }, e.prototype.computeSplitEdges = function(t) {\n for(var e = this._edges.iterator(); e.hasNext();)e.next().eiList.addSplitEdges(t);\n }, e.prototype.computeEdgeIntersections = function(t, e, n) {\n var i = new cr(e, n, !0);\n i.setBoundaryNodes(this.getBoundaryNodes(), t.getBoundaryNodes());\n return this.createEdgeSetIntersector().computeIntersections(this._edges, t._edges, i), i;\n }, e.prototype.getGeometry = function() {\n return this._parentGeom;\n }, e.prototype.getBoundaryNodeRule = function() {\n return this._boundaryNodeRule;\n }, e.prototype.hasTooFewPoints = function() {\n return this._hasTooFewPoints;\n }, e.prototype.addPoint = function() {\n if (arguments[0] instanceof Qt) {\n var t = arguments[0].getCoordinate();\n this.insertPoint(this._argIndex, t, w.INTERIOR);\n } else if (arguments[0] instanceof C) {\n var e = arguments[0];\n this.insertPoint(this._argIndex, e, w.INTERIOR);\n }\n }, e.prototype.addPolygon = function(t) {\n this.addPolygonRing(t.getExteriorRing(), w.EXTERIOR, w.INTERIOR);\n for(var e = 0; e < t.getNumInteriorRing(); e++){\n var n = t.getInteriorRingN(e);\n this.addPolygonRing(n, w.INTERIOR, w.EXTERIOR);\n }\n }, e.prototype.addEdge = function(t) {\n this.insertEdge(t);\n var e = t.getCoordinates();\n this.insertPoint(this._argIndex, e[0], w.BOUNDARY), this.insertPoint(this._argIndex, e[e.length - 1], w.BOUNDARY);\n }, e.prototype.addLineString = function(t) {\n var e = Lt.removeRepeatedPoints(t.getCoordinates());\n if (e.length < 2) return this._hasTooFewPoints = !0, this._invalidPoint = e[0], null;\n var n = new ni(e, new Pe(this._argIndex, w.INTERIOR));\n this._lineEdgeMap.put(t, n), this.insertEdge(n), et.isTrue(e.length >= 2, \"found LineString with single point\"), this.insertBoundaryPoint(this._argIndex, e[0]), this.insertBoundaryPoint(this._argIndex, e[e.length - 1]);\n }, e.prototype.getInvalidPoint = function() {\n return this._invalidPoint;\n }, e.prototype.getBoundaryPoints = function() {\n for(var t = this.getBoundaryNodes(), e = new Array(t.size()).fill(null), n = 0, i = t.iterator(); i.hasNext();){\n var r = i.next();\n e[n++] = r.getCoordinate().copy();\n }\n return e;\n }, e.prototype.getBoundaryNodes = function() {\n return null === this._boundaryNodes && (this._boundaryNodes = this._nodes.getBoundaryNodes(this._argIndex)), this._boundaryNodes;\n }, e.prototype.addSelfIntersectionNode = function(t, e, n) {\n if (this.isBoundaryNode(t, e)) return null;\n n === w.BOUNDARY && this._useBoundaryDeterminationRule ? this.insertBoundaryPoint(t, e) : this.insertPoint(t, e, n);\n }, e.prototype.addPolygonRing = function(t, e, n) {\n if (t.isEmpty()) return null;\n var i = Lt.removeRepeatedPoints(t.getCoordinates());\n if (i.length < 4) return this._hasTooFewPoints = !0, this._invalidPoint = i[0], null;\n var r = e, o = n;\n at.isCCW(i) && (r = n, o = e);\n var s = new ni(i, new Pe(this._argIndex, w.BOUNDARY, r, o));\n this._lineEdgeMap.put(t, s), this.insertEdge(s), this.insertPoint(this._argIndex, i[0], w.BOUNDARY);\n }, e.prototype.insertPoint = function(t, e, n) {\n var i = this._nodes.addNode(e), r = i.getLabel();\n null === r ? i._label = new Pe(t, n) : r.setLocation(t, n);\n }, e.prototype.createEdgeSetIntersector = function() {\n return new pr;\n }, e.prototype.addSelfIntersectionNodes = function(t) {\n for(var e = this._edges.iterator(); e.hasNext();)for(var n = e.next(), i = n.getLabel().getLocation(t), r = n.eiList.iterator(); r.hasNext();){\n var o = r.next();\n this.addSelfIntersectionNode(t, o.coord, i);\n }\n }, e.prototype.add = function() {\n if (1 !== arguments.length) return t.prototype.add.apply(this, arguments);\n var e = arguments[0];\n if (e.isEmpty()) return null;\n if (e instanceof ne && (this._useBoundaryDeterminationRule = !1), e instanceof $t) this.addPolygon(e);\n else if (e instanceof Kt) this.addLineString(e);\n else if (e instanceof Qt) this.addPoint(e);\n else if (e instanceof te) this.addCollection(e);\n else if (e instanceof Xt) this.addCollection(e);\n else if (e instanceof ne) this.addCollection(e);\n else {\n if (!(e instanceof zt)) throw new Error(e.getClass().getName());\n this.addCollection(e);\n }\n }, e.prototype.addCollection = function(t) {\n for(var e = 0; e < t.getNumGeometries(); e++){\n var n = t.getGeometryN(e);\n this.add(n);\n }\n }, e.prototype.locate = function(t) {\n return T(this._parentGeom, Zt) && this._parentGeom.getNumGeometries() > 50 ? (null === this._areaPtLocator && (this._areaPtLocator = new vr(this._parentGeom)), this._areaPtLocator.locate(t)) : this._ptLocator.locate(t, this._parentGeom);\n }, e.prototype.findEdge = function() {\n if (1 === arguments.length) {\n var e = arguments[0];\n return this._lineEdgeMap.get(e);\n }\n return t.prototype.findEdge.apply(this, arguments);\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e.determineBoundary = function(t, e) {\n return t.isInBoundary(e) ? w.BOUNDARY : w.INTERIOR;\n }, e;\n }(Ye), Cr = function() {\n if (this._li = new rt, this._resultPrecisionModel = null, this._arg = null, 1 === arguments.length) {\n var t = arguments[0];\n this.setComputationPrecision(t.getPrecisionModel()), this._arg = new Array(1).fill(null), this._arg[0] = new Nr(0, t);\n } else if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1], i = gt.OGC_SFS_BOUNDARY_RULE;\n e.getPrecisionModel().compareTo(n.getPrecisionModel()) >= 0 ? this.setComputationPrecision(e.getPrecisionModel()) : this.setComputationPrecision(n.getPrecisionModel()), this._arg = new Array(2).fill(null), this._arg[0] = new Nr(0, e, i), this._arg[1] = new Nr(1, n, i);\n } else if (3 === arguments.length) {\n var r = arguments[0], o = arguments[1], s = arguments[2];\n r.getPrecisionModel().compareTo(o.getPrecisionModel()) >= 0 ? this.setComputationPrecision(r.getPrecisionModel()) : this.setComputationPrecision(o.getPrecisionModel()), this._arg = new Array(2).fill(null), this._arg[0] = new Nr(0, r, s), this._arg[1] = new Nr(1, o, s);\n }\n };\n Cr.prototype.getArgGeometry = function(t) {\n return this._arg[t].getGeometry();\n }, Cr.prototype.setComputationPrecision = function(t) {\n this._resultPrecisionModel = t, this._li.setPrecisionModel(this._resultPrecisionModel);\n }, Cr.prototype.interfaces_ = function() {\n return [];\n }, Cr.prototype.getClass = function() {\n return Cr;\n };\n var Sr = function() {};\n Sr.prototype.interfaces_ = function() {\n return [];\n }, Sr.prototype.getClass = function() {\n return Sr;\n }, Sr.map = function() {\n if (arguments[0] instanceof ct && T(arguments[1], Sr.MapOp)) {\n for(var t = arguments[0], e = arguments[1], n = new Nt, i = 0; i < t.getNumGeometries(); i++){\n var r = e.map(t.getGeometryN(i));\n null !== r && n.add(r);\n }\n return t.getFactory().buildGeometry(n);\n }\n if (T(arguments[0], It) && T(arguments[1], Sr.MapOp)) {\n for(var o = arguments[0], s = arguments[1], a = new Nt, u = o.iterator(); u.hasNext();){\n var l = u.next(), c = s.map(l);\n null !== c && a.add(c);\n }\n return a;\n }\n }, Sr.MapOp = function() {};\n var Lr = function(t) {\n function e() {\n var e = arguments[0], n = arguments[1];\n t.call(this, e, n), this._ptLocator = new Si, this._geomFact = null, this._resultGeom = null, this._graph = null, this._edgeList = new Hn, this._resultPolyList = new Nt, this._resultLineList = new Nt, this._resultPointList = new Nt, this._graph = new Ye(new kn), this._geomFact = e.getFactory();\n }\n return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.insertUniqueEdge = function(t) {\n var e = this._edgeList.findEqualEdge(t);\n if (null !== e) {\n var n = e.getLabel(), i = t.getLabel();\n e.isPointwiseEqual(t) || (i = new Pe(t.getLabel())).flip();\n var r = e.getDepth();\n r.isNull() && r.add(n), r.add(i), n.merge(i);\n } else this._edgeList.add(t);\n }, e.prototype.getGraph = function() {\n return this._graph;\n }, e.prototype.cancelDuplicateResultEdges = function() {\n for(var t = this._graph.getEdgeEnds().iterator(); t.hasNext();){\n var e = t.next(), n = e.getSym();\n e.isInResult() && n.isInResult() && (e.setInResult(!1), n.setInResult(!1));\n }\n }, e.prototype.isCoveredByLA = function(t) {\n return !!this.isCovered(t, this._resultLineList) || !!this.isCovered(t, this._resultPolyList);\n }, e.prototype.computeGeometry = function(t, n, i, r) {\n var o = new Nt;\n return o.addAll(t), o.addAll(n), o.addAll(i), o.isEmpty() ? e.createEmptyResult(r, this._arg[0].getGeometry(), this._arg[1].getGeometry(), this._geomFact) : this._geomFact.buildGeometry(o);\n }, e.prototype.mergeSymLabels = function() {\n for(var t = this._graph.getNodes().iterator(); t.hasNext();)t.next().getEdges().mergeSymLabels();\n }, e.prototype.isCovered = function(t, e) {\n for(var n = e.iterator(); n.hasNext();){\n var i = n.next();\n if (this._ptLocator.locate(t, i) !== w.EXTERIOR) return !0;\n }\n return !1;\n }, e.prototype.replaceCollapsedEdges = function() {\n for(var t = new Nt, e = this._edgeList.iterator(); e.hasNext();){\n var n = e.next();\n n.isCollapsed() && (e.remove(), t.add(n.getCollapsedEdge()));\n }\n this._edgeList.addAll(t);\n }, e.prototype.updateNodeLabelling = function() {\n for(var t = this._graph.getNodes().iterator(); t.hasNext();){\n var e = t.next(), n = e.getEdges().getLabel();\n e.getLabel().merge(n);\n }\n }, e.prototype.getResultGeometry = function(t) {\n return this.computeOverlay(t), this._resultGeom;\n }, e.prototype.insertUniqueEdges = function(t) {\n for(var e = t.iterator(); e.hasNext();){\n var n = e.next();\n this.insertUniqueEdge(n);\n }\n }, e.prototype.computeOverlay = function(t) {\n this.copyPoints(0), this.copyPoints(1), this._arg[0].computeSelfNodes(this._li, !1), this._arg[1].computeSelfNodes(this._li, !1), this._arg[0].computeEdgeIntersections(this._arg[1], this._li, !0);\n var e = new Nt;\n this._arg[0].computeSplitEdges(e), this._arg[1].computeSplitEdges(e), this.insertUniqueEdges(e), this.computeLabelsFromDepths(), this.replaceCollapsedEdges(), Yi.checkValid(this._edgeList.getEdges()), this._graph.addEdges(this._edgeList.getEdges()), this.computeLabelling(), this.labelIncompleteNodes(), this.findResultAreaEdges(t), this.cancelDuplicateResultEdges();\n var n = new ke(this._geomFact);\n n.add(this._graph), this._resultPolyList = n.getPolygons();\n var i = new ji(this, this._geomFact, this._ptLocator);\n this._resultLineList = i.build(t);\n var r = new Hi(this, this._geomFact, this._ptLocator);\n this._resultPointList = r.build(t), this._resultGeom = this.computeGeometry(this._resultPointList, this._resultLineList, this._resultPolyList, t);\n }, e.prototype.labelIncompleteNode = function(t, e) {\n var n = this._ptLocator.locate(t.getCoordinate(), this._arg[e].getGeometry());\n t.getLabel().setLocation(e, n);\n }, e.prototype.copyPoints = function(t) {\n for(var e = this._arg[t].getNodeIterator(); e.hasNext();){\n var n = e.next();\n this._graph.addNode(n.getCoordinate()).setLabel(t, n.getLabel().getLocation(t));\n }\n }, e.prototype.findResultAreaEdges = function(t) {\n for(var n = this._graph.getEdgeEnds().iterator(); n.hasNext();){\n var i = n.next(), r = i.getLabel();\n r.isArea() && !i.isInteriorAreaEdge() && e.isResultOfOp(r.getLocation(0, Se.RIGHT), r.getLocation(1, Se.RIGHT), t) && i.setInResult(!0);\n }\n }, e.prototype.computeLabelsFromDepths = function() {\n for(var t = this._edgeList.iterator(); t.hasNext();){\n var e = t.next(), n = e.getLabel(), i = e.getDepth();\n if (!i.isNull()) {\n i.normalize();\n for(var r = 0; r < 2; r++)n.isNull(r) || !n.isArea() || i.isNull(r) || (0 === i.getDelta(r) ? n.toLine(r) : (et.isTrue(!i.isNull(r, Se.LEFT), \"depth of LEFT side has not been initialized\"), n.setLocation(r, Se.LEFT, i.getLocation(r, Se.LEFT)), et.isTrue(!i.isNull(r, Se.RIGHT), \"depth of RIGHT side has not been initialized\"), n.setLocation(r, Se.RIGHT, i.getLocation(r, Se.RIGHT))));\n }\n }\n }, e.prototype.computeLabelling = function() {\n for(var t = this._graph.getNodes().iterator(); t.hasNext();)t.next().getEdges().computeLabelling(this._arg);\n this.mergeSymLabels(), this.updateNodeLabelling();\n }, e.prototype.labelIncompleteNodes = function() {\n for(var t = this._graph.getNodes().iterator(); t.hasNext();){\n var e = t.next(), n = e.getLabel();\n e.isIsolated() && (n.isNull(0) ? this.labelIncompleteNode(e, 0) : this.labelIncompleteNode(e, 1)), e.getEdges().updateLabelling(n);\n }\n }, e.prototype.isCoveredByA = function(t) {\n return !!this.isCovered(t, this._resultPolyList);\n }, e.prototype.interfaces_ = function() {\n return [];\n }, e.prototype.getClass = function() {\n return e;\n }, e;\n }(Cr);\n Lr.overlayOp = function(t, e, n) {\n return new Lr(t, e).getResultGeometry(n);\n }, Lr.intersection = function(t, e) {\n if (t.isEmpty() || e.isEmpty()) return Lr.createEmptyResult(Lr.INTERSECTION, t, e, t.getFactory());\n if (t.isGeometryCollection()) {\n var n = e;\n return ki.map(t, {\n interfaces_: function() {\n return [\n Sr.MapOp\n ];\n },\n map: function(t) {\n return t.intersection(n);\n }\n });\n }\n return t.checkNotGeometryCollection(t), t.checkNotGeometryCollection(e), or.overlayOp(t, e, Lr.INTERSECTION);\n }, Lr.symDifference = function(t, e) {\n if (t.isEmpty() || e.isEmpty()) {\n if (t.isEmpty() && e.isEmpty()) return Lr.createEmptyResult(Lr.SYMDIFFERENCE, t, e, t.getFactory());\n if (t.isEmpty()) return e.copy();\n if (e.isEmpty()) return t.copy();\n }\n return t.checkNotGeometryCollection(t), t.checkNotGeometryCollection(e), or.overlayOp(t, e, Lr.SYMDIFFERENCE);\n }, Lr.resultDimension = function(t, e, n) {\n var i = e.getDimension(), r = n.getDimension(), o = -1;\n switch(t){\n case Lr.INTERSECTION:\n o = Math.min(i, r);\n break;\n case Lr.UNION:\n o = Math.max(i, r);\n break;\n case Lr.DIFFERENCE:\n o = i;\n break;\n case Lr.SYMDIFFERENCE:\n o = Math.max(i, r);\n }\n return o;\n }, Lr.createEmptyResult = function(t, e, n, i) {\n var r = null;\n switch(Lr.resultDimension(t, e, n)){\n case -1:\n r = i.createGeometryCollection(new Array(0).fill(null));\n break;\n case 0:\n r = i.createPoint();\n break;\n case 1:\n r = i.createLineString();\n break;\n case 2:\n r = i.createPolygon();\n }\n return r;\n }, Lr.difference = function(t, e) {\n return t.isEmpty() ? Lr.createEmptyResult(Lr.DIFFERENCE, t, e, t.getFactory()) : e.isEmpty() ? t.copy() : (t.checkNotGeometryCollection(t), t.checkNotGeometryCollection(e), or.overlayOp(t, e, Lr.DIFFERENCE));\n }, Lr.isResultOfOp = function() {\n if (2 === arguments.length) {\n var t = arguments[0], e = arguments[1], n = t.getLocation(0), i = t.getLocation(1);\n return Lr.isResultOfOp(n, i, e);\n }\n if (3 === arguments.length) {\n var r = arguments[0], o = arguments[1], s = arguments[2];\n switch(r === w.BOUNDARY && (r = w.INTERIOR), o === w.BOUNDARY && (o = w.INTERIOR), s){\n case Lr.INTERSECTION:\n return r === w.INTERIOR && o === w.INTERIOR;\n case Lr.UNION:\n return r === w.INTERIOR || o === w.INTERIOR;\n case Lr.DIFFERENCE:\n return r === w.INTERIOR && o !== w.INTERIOR;\n case Lr.SYMDIFFERENCE:\n return r === w.INTERIOR && o !== w.INTERIOR || r !== w.INTERIOR && o === w.INTERIOR;\n }\n return !1;\n }\n }, Lr.INTERSECTION = 1, Lr.UNION = 2, Lr.DIFFERENCE = 3, Lr.SYMDIFFERENCE = 4;\n var br = function() {\n this._g = null, this._boundaryDistanceTolerance = null, this._linework = null, this._ptLocator = new Si, this._seg = new dn;\n var t = arguments[0], e = arguments[1];\n this._g = t, this._boundaryDistanceTolerance = e, this._linework = this.extractLinework(t);\n };\n br.prototype.isWithinToleranceOfBoundary = function(t) {\n for(var e = 0; e < this._linework.getNumGeometries(); e++)for(var n = this._linework.getGeometryN(e).getCoordinateSequence(), i = 0; i < n.size() - 1; i++){\n n.getCoordinate(i, this._seg.p0), n.getCoordinate(i + 1, this._seg.p1);\n if (this._seg.distance(t) <= this._boundaryDistanceTolerance) return !0;\n }\n return !1;\n }, br.prototype.getLocation = function(t) {\n return this.isWithinToleranceOfBoundary(t) ? w.BOUNDARY : this._ptLocator.locate(t, this._g);\n }, br.prototype.extractLinework = function(t) {\n var e = new wr;\n t.apply(e);\n var n = e.getLinework(), i = _e.toLineStringArray(n);\n return t.getFactory().createMultiLineString(i);\n }, br.prototype.interfaces_ = function() {\n return [];\n }, br.prototype.getClass = function() {\n return br;\n };\n var wr = function() {\n this._linework = null, this._linework = new Nt;\n };\n wr.prototype.getLinework = function() {\n return this._linework;\n }, wr.prototype.filter = function(t) {\n if (t instanceof $t) {\n var e = t;\n this._linework.add(e.getExteriorRing());\n for(var n = 0; n < e.getNumInteriorRing(); n++)this._linework.add(e.getInteriorRingN(n));\n }\n }, wr.prototype.interfaces_ = function() {\n return [\n Vt\n ];\n }, wr.prototype.getClass = function() {\n return wr;\n };\n var Or = function() {\n this._g = null, this._doLeft = !0, this._doRight = !0;\n var t = arguments[0];\n this._g = t;\n };\n Or.prototype.extractPoints = function(t, e, n) {\n for(var i = t.getCoordinates(), r = 0; r < i.length - 1; r++)this.computeOffsetPoints(i[r], i[r + 1], e, n);\n }, Or.prototype.setSidesToGenerate = function(t, e) {\n this._doLeft = t, this._doRight = e;\n }, Or.prototype.getPoints = function(t) {\n for(var e = new Nt, n = Ci.getLines(this._g).iterator(); n.hasNext();){\n var i = n.next();\n this.extractPoints(i, t, e);\n }\n return e;\n }, Or.prototype.computeOffsetPoints = function(t, e, n, i) {\n var r = e.x - t.x, o = e.y - t.y, s = Math.sqrt(r * r + o * o), a = n * r / s, u = n * o / s, l = (e.x + t.x) / 2, c = (e.y + t.y) / 2;\n if (this._doLeft) {\n var p = new C(l - u, c + a);\n i.add(p);\n }\n if (this._doRight) {\n var h = new C(l + u, c - a);\n i.add(h);\n }\n }, Or.prototype.interfaces_ = function() {\n return [];\n }, Or.prototype.getClass = function() {\n return Or;\n };\n var Tr = function t() {\n this._geom = null, this._locFinder = null, this._location = new Array(3).fill(null), this._invalidLocation = null, this._boundaryDistanceTolerance = t.TOLERANCE, this._testCoords = new Nt;\n var e = arguments[0], n = arguments[1], i = arguments[2];\n this._boundaryDistanceTolerance = t.computeBoundaryDistanceTolerance(e, n), this._geom = [\n e,\n n,\n i\n ], this._locFinder = [\n new br(this._geom[0], this._boundaryDistanceTolerance),\n new br(this._geom[1], this._boundaryDistanceTolerance),\n new br(this._geom[2], this._boundaryDistanceTolerance)\n ];\n }, Rr = {\n TOLERANCE: {\n configurable: !0\n }\n };\n Tr.prototype.reportResult = function(t, e, n) {\n Y.out.println(\"Overlay result invalid - A:\" + w.toLocationSymbol(e[0]) + \" B:\" + w.toLocationSymbol(e[1]) + \" expected:\" + (n ? \"i\" : \"e\") + \" actual:\" + w.toLocationSymbol(e[2]));\n }, Tr.prototype.isValid = function(t) {\n this.addTestPts(this._geom[0]), this.addTestPts(this._geom[1]);\n var e = this.checkValid(t);\n return e;\n }, Tr.prototype.checkValid = function() {\n if (1 === arguments.length) {\n for(var t = arguments[0], e = 0; e < this._testCoords.size(); e++){\n var n = this._testCoords.get(e);\n if (!this.checkValid(t, n)) return this._invalidLocation = n, !1;\n }\n return !0;\n }\n if (2 === arguments.length) {\n var i = arguments[0], r = arguments[1];\n return this._location[0] = this._locFinder[0].getLocation(r), this._location[1] = this._locFinder[1].getLocation(r), this._location[2] = this._locFinder[2].getLocation(r), !!Tr.hasLocation(this._location, w.BOUNDARY) || this.isValidResult(i, this._location);\n }\n }, Tr.prototype.addTestPts = function(t) {\n var e = new Or(t);\n this._testCoords.addAll(e.getPoints(5 * this._boundaryDistanceTolerance));\n }, Tr.prototype.isValidResult = function(t, e) {\n var n = Lr.isResultOfOp(e[0], e[1], t), i = !(n ^ e[2] === w.INTERIOR);\n return i || this.reportResult(t, e, n), i;\n }, Tr.prototype.getInvalidLocation = function() {\n return this._invalidLocation;\n }, Tr.prototype.interfaces_ = function() {\n return [];\n }, Tr.prototype.getClass = function() {\n return Tr;\n }, Tr.hasLocation = function(t, e) {\n for(var n = 0; n < 3; n++)if (t[n] === e) return !0;\n return !1;\n }, Tr.computeBoundaryDistanceTolerance = function(t, e) {\n return Math.min(Ji.computeSizeBasedSnapTolerance(t), Ji.computeSizeBasedSnapTolerance(e));\n }, Tr.isValid = function(t, e, n, i) {\n return new Tr(t, e, i).isValid(n);\n }, Rr.TOLERANCE.get = function() {\n return 1e-6;\n }, Object.defineProperties(Tr, Rr);\n var Pr = function t(e) {\n this._geomFactory = null, this._skipEmpty = !1, this._inputGeoms = null, this._geomFactory = t.extractFactory(e), this._inputGeoms = e;\n };\n Pr.prototype.extractElements = function(t, e) {\n if (null === t) return null;\n for(var n = 0; n < t.getNumGeometries(); n++){\n var i = t.getGeometryN(n);\n this._skipEmpty && i.isEmpty() || e.add(i);\n }\n }, Pr.prototype.combine = function() {\n for(var t = new Nt, e = this._inputGeoms.iterator(); e.hasNext();){\n var n = e.next();\n this.extractElements(n, t);\n }\n return 0 === t.size() ? null !== this._geomFactory ? this._geomFactory.createGeometryCollection(null) : null : this._geomFactory.buildGeometry(t);\n }, Pr.prototype.interfaces_ = function() {\n return [];\n }, Pr.prototype.getClass = function() {\n return Pr;\n }, Pr.combine = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n return new Pr(t).combine();\n }\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n return new Pr(Pr.createList(e, n)).combine();\n }\n if (3 === arguments.length) {\n var i = arguments[0], r = arguments[1], o = arguments[2];\n return new Pr(Pr.createList(i, r, o)).combine();\n }\n }, Pr.extractFactory = function(t) {\n return t.isEmpty() ? null : t.iterator().next().getFactory();\n }, Pr.createList = function() {\n if (2 === arguments.length) {\n var t = arguments[0], e = arguments[1], n = new Nt;\n return n.add(t), n.add(e), n;\n }\n if (3 === arguments.length) {\n var i = arguments[0], r = arguments[1], o = arguments[2], s = new Nt;\n return s.add(i), s.add(r), s.add(o), s;\n }\n };\n var Dr = function() {\n this._inputPolys = null, this._geomFactory = null;\n var t = arguments[0];\n this._inputPolys = t, null === this._inputPolys && (this._inputPolys = new Nt);\n }, Mr = {\n STRTREE_NODE_CAPACITY: {\n configurable: !0\n }\n };\n Dr.prototype.reduceToGeometries = function(t) {\n for(var e = new Nt, n = t.iterator(); n.hasNext();){\n var i = n.next(), r = null;\n T(i, xt) ? r = this.unionTree(i) : i instanceof ct && (r = i), e.add(r);\n }\n return e;\n }, Dr.prototype.extractByEnvelope = function(t, e, n) {\n for(var i = new Nt, r = 0; r < e.getNumGeometries(); r++){\n var o = e.getGeometryN(r);\n o.getEnvelopeInternal().intersects(t) ? i.add(o) : n.add(o);\n }\n return this._geomFactory.buildGeometry(i);\n }, Dr.prototype.unionOptimized = function(t, e) {\n var n = t.getEnvelopeInternal(), i = e.getEnvelopeInternal();\n if (!n.intersects(i)) return Pr.combine(t, e);\n if (t.getNumGeometries() <= 1 && e.getNumGeometries() <= 1) return this.unionActual(t, e);\n var r = n.intersection(i);\n return this.unionUsingEnvelopeIntersection(t, e, r);\n }, Dr.prototype.union = function() {\n if (null === this._inputPolys) throw new Error(\"union() method cannot be called twice\");\n if (this._inputPolys.isEmpty()) return null;\n this._geomFactory = this._inputPolys.iterator().next().getFactory();\n for(var t = new sn(Dr.STRTREE_NODE_CAPACITY), e = this._inputPolys.iterator(); e.hasNext();){\n var n = e.next();\n t.insert(n.getEnvelopeInternal(), n);\n }\n this._inputPolys = null;\n var i = t.itemsTree();\n return this.unionTree(i);\n }, Dr.prototype.binaryUnion = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n return this.binaryUnion(t, 0, t.size());\n }\n if (3 === arguments.length) {\n var e = arguments[0], n = arguments[1], i = arguments[2];\n if (i - n <= 1) {\n var r = Dr.getGeometry(e, n);\n return this.unionSafe(r, null);\n }\n if (i - n == 2) return this.unionSafe(Dr.getGeometry(e, n), Dr.getGeometry(e, n + 1));\n var o = Math.trunc((i + n) / 2), s = this.binaryUnion(e, n, o), a = this.binaryUnion(e, o, i);\n return this.unionSafe(s, a);\n }\n }, Dr.prototype.repeatedUnion = function(t) {\n for(var e = null, n = t.iterator(); n.hasNext();){\n var i = n.next();\n e = null === e ? i.copy() : e.union(i);\n }\n return e;\n }, Dr.prototype.unionSafe = function(t, e) {\n return null === t && null === e ? null : null === t ? e.copy() : null === e ? t.copy() : this.unionOptimized(t, e);\n }, Dr.prototype.unionActual = function(t, e) {\n return Dr.restrictToPolygons(t.union(e));\n }, Dr.prototype.unionTree = function(t) {\n var e = this.reduceToGeometries(t);\n return this.binaryUnion(e);\n }, Dr.prototype.unionUsingEnvelopeIntersection = function(t, e, n) {\n var i = new Nt, r = this.extractByEnvelope(n, t, i), o = this.extractByEnvelope(n, e, i), s = this.unionActual(r, o);\n i.add(s);\n return Pr.combine(i);\n }, Dr.prototype.bufferUnion = function() {\n if (1 === arguments.length) {\n var t = arguments[0];\n return t.get(0).getFactory().buildGeometry(t).buffer(0);\n }\n if (2 === arguments.length) {\n var e = arguments[0], n = arguments[1];\n return e.getFactory().createGeometryCollection([\n e,\n n\n ]).buffer(0);\n }\n }, Dr.prototype.interfaces_ = function() {\n return [];\n }, Dr.prototype.getClass = function() {\n return Dr;\n }, Dr.restrictToPolygons = function(t) {\n if (T(t, Zt)) return t;\n var e = Ni.getPolygons(t);\n return 1 === e.size() ? e.get(0) : t.getFactory().createMultiPolygon(_e.toPolygonArray(e));\n }, Dr.getGeometry = function(t, e) {\n return e >= t.size() ? null : t.get(e);\n }, Dr.union = function(t) {\n return new Dr(t).union();\n }, Mr.STRTREE_NODE_CAPACITY.get = function() {\n return 4;\n }, Object.defineProperties(Dr, Mr);\n var Ar = function() {};\n Ar.prototype.interfaces_ = function() {\n return [];\n }, Ar.prototype.getClass = function() {\n return Ar;\n }, Ar.union = function(t, e) {\n if (t.isEmpty() || e.isEmpty()) {\n if (t.isEmpty() && e.isEmpty()) return Lr.createEmptyResult(Lr.UNION, t, e, t.getFactory());\n if (t.isEmpty()) return e.copy();\n if (e.isEmpty()) return t.copy();\n }\n return t.checkNotGeometryCollection(t), t.checkNotGeometryCollection(e), or.overlayOp(t, e, Lr.UNION);\n }, t.GeoJSONReader = Ne, t.GeoJSONWriter = Ce, t.OverlayOp = Lr, t.UnionOp = Ar, t.BufferOp = di, Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n});\n\n});\n\nparcelRegister(\"l1DKV\", function(module, exports) {\n\n$parcel$export(module.exports, \"toMercator\", function () { return $f4e887aae2cc16af$export$421b346f8b34c98c; });\n$parcel$export(module.exports, \"toWgs84\", function () { return $f4e887aae2cc16af$export$60dece424ca09436; });\n\nvar $HcJdv = parcelRequire(\"HcJdv\");\n\nvar $brFkQ = parcelRequire(\"brFkQ\");\n\nvar $asTyQ = parcelRequire(\"asTyQ\");\n/**\n * Converts a WGS84 GeoJSON object into Mercator (EPSG:900913) projection\n *\n * @name toMercator\n * @param {GeoJSON|Position} geojson WGS84 GeoJSON object\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} true/false\n * @example\n * var pt = turf.point([-71,41]);\n * var converted = turf.toMercator(pt);\n *\n * //addToMap\n * var addToMap = [pt, converted];\n */ function $f4e887aae2cc16af$export$421b346f8b34c98c(geojson, options) {\n return $f4e887aae2cc16af$var$convert(geojson, \"mercator\", options);\n}\n/**\n * Converts a Mercator (EPSG:900913) GeoJSON object into WGS84 projection\n *\n * @name toWgs84\n * @param {GeoJSON|Position} geojson Mercator GeoJSON object\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} true/false\n * @example\n * var pt = turf.point([-7903683.846322424, 5012341.663847514]);\n * var converted = turf.toWgs84(pt);\n *\n * //addToMap\n * var addToMap = [pt, converted];\n */ function $f4e887aae2cc16af$export$60dece424ca09436(geojson, options) {\n return $f4e887aae2cc16af$var$convert(geojson, \"wgs84\", options);\n}\n/**\n * Converts a GeoJSON coordinates to the defined `projection`\n *\n * @private\n * @param {GeoJSON} geojson GeoJSON Feature or Geometry\n * @param {string} projection defines the projection system to convert the coordinates to\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} true/false\n */ function $f4e887aae2cc16af$var$convert(geojson, projection, options) {\n // Optional parameters\n options = options || {};\n if (!(0, $brFkQ.isObject)(options)) throw new Error(\"options is invalid\");\n var mutate = options.mutate;\n // Validation\n if (!geojson) throw new Error(\"geojson is required\");\n // Handle Position\n if (Array.isArray(geojson) && (0, $brFkQ.isNumber)(geojson[0])) geojson = projection === \"mercator\" ? $f4e887aae2cc16af$var$convertToMercator(geojson) : $f4e887aae2cc16af$var$convertToWgs84(geojson);\n else {\n // Handle possible data mutation\n if (mutate !== true) geojson = (0, $asTyQ.default)(geojson);\n (0, $HcJdv.coordEach)(geojson, function(coord) {\n var newCoord = projection === \"mercator\" ? $f4e887aae2cc16af$var$convertToMercator(coord) : $f4e887aae2cc16af$var$convertToWgs84(coord);\n coord[0] = newCoord[0];\n coord[1] = newCoord[1];\n });\n }\n return geojson;\n}\n/**\n * Convert lon/lat values to 900913 x/y.\n * (from https://github.com/mapbox/sphericalmercator)\n *\n * @private\n * @param {Array} lonLat WGS84 point\n * @returns {Array} Mercator [x, y] point\n */ function $f4e887aae2cc16af$var$convertToMercator(lonLat) {\n var D2R = Math.PI / 180, // 900913 properties\n A = 6378137.0, MAXEXTENT = 20037508.342789244;\n // compensate longitudes passing the 180th meridian\n // from https://github.com/proj4js/proj4js/blob/master/lib/common/adjust_lon.js\n var adjusted = Math.abs(lonLat[0]) <= 180 ? lonLat[0] : lonLat[0] - $f4e887aae2cc16af$var$sign(lonLat[0]) * 360;\n var xy = [\n A * adjusted * D2R,\n A * Math.log(Math.tan(Math.PI * 0.25 + 0.5 * lonLat[1] * D2R))\n ];\n // if xy value is beyond maxextent (e.g. poles), return maxextent\n if (xy[0] > MAXEXTENT) xy[0] = MAXEXTENT;\n if (xy[0] < -MAXEXTENT) xy[0] = -MAXEXTENT;\n if (xy[1] > MAXEXTENT) xy[1] = MAXEXTENT;\n if (xy[1] < -MAXEXTENT) xy[1] = -MAXEXTENT;\n return xy;\n}\n/**\n * Convert 900913 x/y values to lon/lat.\n * (from https://github.com/mapbox/sphericalmercator)\n *\n * @private\n * @param {Array} xy Mercator [x, y] point\n * @returns {Array} WGS84 [lon, lat] point\n */ function $f4e887aae2cc16af$var$convertToWgs84(xy) {\n // 900913 properties.\n var R2D = 180 / Math.PI;\n var A = 6378137.0;\n return [\n xy[0] * R2D / A,\n (Math.PI * 0.5 - 2.0 * Math.atan(Math.exp(-xy[1] / A))) * R2D\n ];\n}\n/**\n * Returns the sign of the input, or zero\n *\n * @private\n * @param {number} x input\n * @returns {number} -1|0|1 output\n */ function $f4e887aae2cc16af$var$sign(x) {\n return x < 0 ? -1 : x > 0 ? 1 : 0;\n}\n\n});\nparcelRegister(\"asTyQ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $79e79e2bfc164fd2$export$2e2bcd8739ae039; });\n/**\n * Returns a cloned copy of the passed GeoJSON Object, including possible 'Foreign Members'.\n * ~3-5x faster than the common JSON.parse + JSON.stringify combo method.\n *\n * @name clone\n * @param {GeoJSON} geojson GeoJSON Object\n * @returns {GeoJSON} cloned GeoJSON Object\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]], {color: 'red'});\n *\n * var lineCloned = turf.clone(line);\n */ function $79e79e2bfc164fd2$var$clone(geojson) {\n if (!geojson) throw new Error(\"geojson is required\");\n switch(geojson.type){\n case \"Feature\":\n return $79e79e2bfc164fd2$var$cloneFeature(geojson);\n case \"FeatureCollection\":\n return $79e79e2bfc164fd2$var$cloneFeatureCollection(geojson);\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n case \"MultiPoint\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n case \"GeometryCollection\":\n return $79e79e2bfc164fd2$var$cloneGeometry(geojson);\n default:\n throw new Error(\"unknown GeoJSON type\");\n }\n}\n/**\n * Clone Feature\n *\n * @private\n * @param {Feature} geojson GeoJSON Feature\n * @returns {Feature} cloned Feature\n */ function $79e79e2bfc164fd2$var$cloneFeature(geojson) {\n var cloned = {\n type: \"Feature\"\n };\n // Preserve Foreign Members\n Object.keys(geojson).forEach(function(key) {\n switch(key){\n case \"type\":\n case \"properties\":\n case \"geometry\":\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n // Add properties & geometry last\n cloned.properties = $79e79e2bfc164fd2$var$cloneProperties(geojson.properties);\n cloned.geometry = $79e79e2bfc164fd2$var$cloneGeometry(geojson.geometry);\n return cloned;\n}\n/**\n * Clone Properties\n *\n * @private\n * @param {Object} properties GeoJSON Properties\n * @returns {Object} cloned Properties\n */ function $79e79e2bfc164fd2$var$cloneProperties(properties) {\n var cloned = {};\n if (!properties) return cloned;\n Object.keys(properties).forEach(function(key) {\n var value = properties[key];\n if (typeof value === \"object\") {\n if (value === null) // handle null\n cloned[key] = null;\n else if (value.length) // handle Array\n cloned[key] = value.map(function(item) {\n return item;\n });\n else // handle generic Object\n cloned[key] = $79e79e2bfc164fd2$var$cloneProperties(value);\n } else cloned[key] = value;\n });\n return cloned;\n}\n/**\n * Clone Feature Collection\n *\n * @private\n * @param {FeatureCollection} geojson GeoJSON Feature Collection\n * @returns {FeatureCollection} cloned Feature Collection\n */ function $79e79e2bfc164fd2$var$cloneFeatureCollection(geojson) {\n var cloned = {\n type: \"FeatureCollection\"\n };\n // Preserve Foreign Members\n Object.keys(geojson).forEach(function(key) {\n switch(key){\n case \"type\":\n case \"features\":\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n // Add features\n cloned.features = geojson.features.map(function(feature) {\n return $79e79e2bfc164fd2$var$cloneFeature(feature);\n });\n return cloned;\n}\n/**\n * Clone Geometry\n *\n * @private\n * @param {Geometry} geometry GeoJSON Geometry\n * @returns {Geometry} cloned Geometry\n */ function $79e79e2bfc164fd2$var$cloneGeometry(geometry) {\n var geom = {\n type: geometry.type\n };\n if (geometry.bbox) geom.bbox = geometry.bbox;\n if (geometry.type === \"GeometryCollection\") {\n geom.geometries = geometry.geometries.map(function(geom) {\n return $79e79e2bfc164fd2$var$cloneGeometry(geom);\n });\n return geom;\n }\n geom.coordinates = $79e79e2bfc164fd2$var$deepSlice(geometry.coordinates);\n return geom;\n}\n/**\n * Deep Slice coordinates\n *\n * @private\n * @param {Coordinates} coords Coordinates\n * @returns {Coordinates} all coordinates sliced\n */ function $79e79e2bfc164fd2$var$deepSlice(coords) {\n if (typeof coords[0] !== \"object\") return coords.slice();\n return coords.map(function(coord) {\n return $79e79e2bfc164fd2$var$deepSlice(coord);\n });\n}\nvar $79e79e2bfc164fd2$export$2e2bcd8739ae039 = $79e79e2bfc164fd2$var$clone;\n\n});\n\n\nparcelRegister(\"ixaKI\", function(module, exports) {\n\n$parcel$export(module.exports, \"geoTransverseMercator\", function () { return (parcelRequire(\"c1N6T\")).default; });\n\nvar $cOqkX = parcelRequire(\"cOqkX\");\n\nvar $5XobB = parcelRequire(\"5XobB\");\n\nvar $kWgmR = parcelRequire(\"kWgmR\");\n\nvar $dWoD6 = parcelRequire(\"dWoD6\");\n\nvar $83woy = parcelRequire(\"83woy\");\n\nvar $9mLIr = parcelRequire(\"9mLIr\");\n\nvar $gJwx7 = parcelRequire(\"gJwx7\");\n\nvar $52geN = parcelRequire(\"52geN\");\n\nvar $3v7c1 = parcelRequire(\"3v7c1\");\n\nvar $ck2S5 = parcelRequire(\"ck2S5\");\n\nvar $6k2uT = parcelRequire(\"6k2uT\");\n\nvar $hsQTR = parcelRequire(\"hsQTR\");\n\nvar $jogIs = parcelRequire(\"jogIs\");\n\nvar $bzumx = parcelRequire(\"bzumx\");\n\nvar $1Vrzy = parcelRequire(\"1Vrzy\");\n\nvar $8ZZJ4 = parcelRequire(\"8ZZJ4\");\n\nvar $hFcZE = parcelRequire(\"hFcZE\");\n\nvar $cMbuW = parcelRequire(\"cMbuW\");\n\nvar $bmox2 = parcelRequire(\"bmox2\");\n\nvar $10MQ7 = parcelRequire(\"10MQ7\");\n\nvar $8wmcz = parcelRequire(\"8wmcz\");\n\nvar $lsk55 = parcelRequire(\"lsk55\");\n\nvar $6ckYb = parcelRequire(\"6ckYb\");\n\nvar $epVV2 = parcelRequire(\"epVV2\");\n\nvar $iHocG = parcelRequire(\"iHocG\");\n\nvar $jiCae = parcelRequire(\"jiCae\");\n\nvar $c1N6T = parcelRequire(\"c1N6T\");\n\nvar $hRYfY = parcelRequire(\"hRYfY\");\n\nvar $jRJb9 = parcelRequire(\"jRJb9\");\n\nvar $eNZUM = parcelRequire(\"eNZUM\");\n\n});\nparcelRegister(\"cOqkX\", function(module, exports) {\n\n$parcel$export(module.exports, \"areaRingSum\", function () { return $953e9584a5393f6f$export$bf8f994332070c7f; });\n$parcel$export(module.exports, \"areaStream\", function () { return $953e9584a5393f6f$export$cb67cfa750ae69dc; });\n\nvar $kC5ta = parcelRequire(\"kC5ta\");\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $6cZzT = parcelRequire(\"6cZzT\");\n\nvar $jRJb9 = parcelRequire(\"jRJb9\");\nvar $953e9584a5393f6f$export$bf8f994332070c7f = (0, $kC5ta.default)();\nvar $953e9584a5393f6f$var$areaSum = (0, $kC5ta.default)(), $953e9584a5393f6f$var$lambda00, $953e9584a5393f6f$var$phi00, $953e9584a5393f6f$var$lambda0, $953e9584a5393f6f$var$cosPhi0, $953e9584a5393f6f$var$sinPhi0;\nvar $953e9584a5393f6f$export$cb67cfa750ae69dc = {\n point: (0, $6cZzT.default),\n lineStart: (0, $6cZzT.default),\n lineEnd: (0, $6cZzT.default),\n polygonStart: function() {\n $953e9584a5393f6f$export$bf8f994332070c7f.reset();\n $953e9584a5393f6f$export$cb67cfa750ae69dc.lineStart = $953e9584a5393f6f$var$areaRingStart;\n $953e9584a5393f6f$export$cb67cfa750ae69dc.lineEnd = $953e9584a5393f6f$var$areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +$953e9584a5393f6f$export$bf8f994332070c7f;\n $953e9584a5393f6f$var$areaSum.add(areaRing < 0 ? (0, $kNUN7.tau) + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = (0, $6cZzT.default);\n },\n sphere: function() {\n $953e9584a5393f6f$var$areaSum.add((0, $kNUN7.tau));\n }\n};\nfunction $953e9584a5393f6f$var$areaRingStart() {\n $953e9584a5393f6f$export$cb67cfa750ae69dc.point = $953e9584a5393f6f$var$areaPointFirst;\n}\nfunction $953e9584a5393f6f$var$areaRingEnd() {\n $953e9584a5393f6f$var$areaPoint($953e9584a5393f6f$var$lambda00, $953e9584a5393f6f$var$phi00);\n}\nfunction $953e9584a5393f6f$var$areaPointFirst(lambda, phi) {\n $953e9584a5393f6f$export$cb67cfa750ae69dc.point = $953e9584a5393f6f$var$areaPoint;\n $953e9584a5393f6f$var$lambda00 = lambda, $953e9584a5393f6f$var$phi00 = phi;\n lambda *= (0, $kNUN7.radians), phi *= (0, $kNUN7.radians);\n $953e9584a5393f6f$var$lambda0 = lambda, $953e9584a5393f6f$var$cosPhi0 = (0, $kNUN7.cos)(phi = phi / 2 + (0, $kNUN7.quarterPi)), $953e9584a5393f6f$var$sinPhi0 = (0, $kNUN7.sin)(phi);\n}\nfunction $953e9584a5393f6f$var$areaPoint(lambda, phi) {\n lambda *= (0, $kNUN7.radians), phi *= (0, $kNUN7.radians);\n phi = phi / 2 + (0, $kNUN7.quarterPi); // half the angular distance from south pole\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - $953e9584a5393f6f$var$lambda0, sdLambda = dLambda >= 0 ? 1 : -1, adLambda = sdLambda * dLambda, cosPhi = (0, $kNUN7.cos)(phi), sinPhi = (0, $kNUN7.sin)(phi), k = $953e9584a5393f6f$var$sinPhi0 * sinPhi, u = $953e9584a5393f6f$var$cosPhi0 * cosPhi + k * (0, $kNUN7.cos)(adLambda), v = k * sdLambda * (0, $kNUN7.sin)(adLambda);\n $953e9584a5393f6f$export$bf8f994332070c7f.add((0, $kNUN7.atan2)(v, u));\n // Advance the previous points.\n $953e9584a5393f6f$var$lambda0 = lambda, $953e9584a5393f6f$var$cosPhi0 = cosPhi, $953e9584a5393f6f$var$sinPhi0 = sinPhi;\n}\nfunction $953e9584a5393f6f$export$2e2bcd8739ae039(object) {\n $953e9584a5393f6f$var$areaSum.reset();\n (0, $jRJb9.default)(object, $953e9584a5393f6f$export$cb67cfa750ae69dc);\n return $953e9584a5393f6f$var$areaSum * 2;\n}\n\n});\nparcelRegister(\"kC5ta\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $f01b995a1154a1e5$export$2e2bcd8739ae039; });\n// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\nfunction $f01b995a1154a1e5$export$2e2bcd8739ae039() {\n return new $f01b995a1154a1e5$var$Adder;\n}\nfunction $f01b995a1154a1e5$var$Adder() {\n this.reset();\n}\n$f01b995a1154a1e5$var$Adder.prototype = {\n constructor: $f01b995a1154a1e5$var$Adder,\n reset: function() {\n this.s = this.t = 0; // exact error\n },\n add: function(y) {\n $f01b995a1154a1e5$var$add($f01b995a1154a1e5$var$temp, y, this.t);\n $f01b995a1154a1e5$var$add(this, $f01b995a1154a1e5$var$temp.s, this.s);\n if (this.s) this.t += $f01b995a1154a1e5$var$temp.t;\n else this.s = $f01b995a1154a1e5$var$temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\nvar $f01b995a1154a1e5$var$temp = new $f01b995a1154a1e5$var$Adder;\nfunction $f01b995a1154a1e5$var$add(adder, a, b) {\n var x = adder.s = a + b, bv = x - a, av = x - bv;\n adder.t = a - av + (b - bv);\n}\n\n});\n\nparcelRegister(\"kNUN7\", function(module, exports) {\n\n$parcel$export(module.exports, \"epsilon\", function () { return $f2546fc8dd756024$export$6c421550c66a327d; });\n$parcel$export(module.exports, \"epsilon2\", function () { return $f2546fc8dd756024$export$92c06fba281fe81b; });\n$parcel$export(module.exports, \"pi\", function () { return $f2546fc8dd756024$export$18c7bea995a110f; });\n$parcel$export(module.exports, \"halfPi\", function () { return $f2546fc8dd756024$export$e51408a300e8929a; });\n$parcel$export(module.exports, \"quarterPi\", function () { return $f2546fc8dd756024$export$c39a5cba78ea0fc2; });\n$parcel$export(module.exports, \"tau\", function () { return $f2546fc8dd756024$export$a4b4b4d4d776fe92; });\n$parcel$export(module.exports, \"degrees\", function () { return $f2546fc8dd756024$export$41fc368e1a942b97; });\n$parcel$export(module.exports, \"radians\", function () { return $f2546fc8dd756024$export$8449e153fbd325fc; });\n$parcel$export(module.exports, \"abs\", function () { return $f2546fc8dd756024$export$2335f513bbd82c6d; });\n$parcel$export(module.exports, \"atan\", function () { return $f2546fc8dd756024$export$628dc4eed22b0fbd; });\n$parcel$export(module.exports, \"atan2\", function () { return $f2546fc8dd756024$export$b8b770ee6a0d9760; });\n$parcel$export(module.exports, \"cos\", function () { return $f2546fc8dd756024$export$50d414a77b60d802; });\n$parcel$export(module.exports, \"ceil\", function () { return $f2546fc8dd756024$export$803ce6b71a0a94b2; });\n$parcel$export(module.exports, \"exp\", function () { return $f2546fc8dd756024$export$b310ec824aaee37f; });\n$parcel$export(module.exports, \"log\", function () { return $f2546fc8dd756024$export$bef1f36f5486a6a3; });\n$parcel$export(module.exports, \"pow\", function () { return $f2546fc8dd756024$export$9c297f60e22e3389; });\n$parcel$export(module.exports, \"sin\", function () { return $f2546fc8dd756024$export$5de3937cb4b592ed; });\n$parcel$export(module.exports, \"sign\", function () { return $f2546fc8dd756024$export$c5552dfdbc7cec71; });\n$parcel$export(module.exports, \"sqrt\", function () { return $f2546fc8dd756024$export$eba8049fb5020b81; });\n$parcel$export(module.exports, \"tan\", function () { return $f2546fc8dd756024$export$fcdd3b0b3246a325; });\n$parcel$export(module.exports, \"acos\", function () { return $f2546fc8dd756024$export$fd6306be3fde5b04; });\n$parcel$export(module.exports, \"asin\", function () { return $f2546fc8dd756024$export$41726bdb1fc63f; });\n$parcel$export(module.exports, \"haversin\", function () { return $f2546fc8dd756024$export$e808712c2966e662; });\nvar $f2546fc8dd756024$export$6c421550c66a327d = 1e-6;\nvar $f2546fc8dd756024$export$92c06fba281fe81b = 1e-12;\nvar $f2546fc8dd756024$export$18c7bea995a110f = Math.PI;\nvar $f2546fc8dd756024$export$e51408a300e8929a = $f2546fc8dd756024$export$18c7bea995a110f / 2;\nvar $f2546fc8dd756024$export$c39a5cba78ea0fc2 = $f2546fc8dd756024$export$18c7bea995a110f / 4;\nvar $f2546fc8dd756024$export$a4b4b4d4d776fe92 = $f2546fc8dd756024$export$18c7bea995a110f * 2;\nvar $f2546fc8dd756024$export$41fc368e1a942b97 = 180 / $f2546fc8dd756024$export$18c7bea995a110f;\nvar $f2546fc8dd756024$export$8449e153fbd325fc = $f2546fc8dd756024$export$18c7bea995a110f / 180;\nvar $f2546fc8dd756024$export$2335f513bbd82c6d = Math.abs;\nvar $f2546fc8dd756024$export$628dc4eed22b0fbd = Math.atan;\nvar $f2546fc8dd756024$export$b8b770ee6a0d9760 = Math.atan2;\nvar $f2546fc8dd756024$export$50d414a77b60d802 = Math.cos;\nvar $f2546fc8dd756024$export$803ce6b71a0a94b2 = Math.ceil;\nvar $f2546fc8dd756024$export$b310ec824aaee37f = Math.exp;\nvar $f2546fc8dd756024$export$a3fe094919f356fd = Math.floor;\nvar $f2546fc8dd756024$export$bef1f36f5486a6a3 = Math.log;\nvar $f2546fc8dd756024$export$9c297f60e22e3389 = Math.pow;\nvar $f2546fc8dd756024$export$5de3937cb4b592ed = Math.sin;\nvar $f2546fc8dd756024$export$c5552dfdbc7cec71 = Math.sign || function(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n};\nvar $f2546fc8dd756024$export$eba8049fb5020b81 = Math.sqrt;\nvar $f2546fc8dd756024$export$fcdd3b0b3246a325 = Math.tan;\nfunction $f2546fc8dd756024$export$fd6306be3fde5b04(x) {\n return x > 1 ? 0 : x < -1 ? $f2546fc8dd756024$export$18c7bea995a110f : Math.acos(x);\n}\nfunction $f2546fc8dd756024$export$41726bdb1fc63f(x) {\n return x > 1 ? $f2546fc8dd756024$export$e51408a300e8929a : x < -1 ? -$f2546fc8dd756024$export$e51408a300e8929a : Math.asin(x);\n}\nfunction $f2546fc8dd756024$export$e808712c2966e662(x) {\n return (x = $f2546fc8dd756024$export$5de3937cb4b592ed(x / 2)) * x;\n}\n\n});\n\nparcelRegister(\"6cZzT\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $4853a128abbc899f$export$2e2bcd8739ae039; });\nfunction $4853a128abbc899f$export$2e2bcd8739ae039() {}\n\n});\n\nparcelRegister(\"jRJb9\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $e766031f6cae3a00$export$2e2bcd8739ae039; });\nfunction $e766031f6cae3a00$var$streamGeometry(geometry, stream) {\n if (geometry && $e766031f6cae3a00$var$streamGeometryType.hasOwnProperty(geometry.type)) $e766031f6cae3a00$var$streamGeometryType[geometry.type](geometry, stream);\n}\nvar $e766031f6cae3a00$var$streamObjectType = {\n Feature: function(object, stream) {\n $e766031f6cae3a00$var$streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while(++i < n)$e766031f6cae3a00$var$streamGeometry(features[i].geometry, stream);\n }\n};\nvar $e766031f6cae3a00$var$streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while(++i < n)object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n $e766031f6cae3a00$var$streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while(++i < n)$e766031f6cae3a00$var$streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n $e766031f6cae3a00$var$streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while(++i < n)$e766031f6cae3a00$var$streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while(++i < n)$e766031f6cae3a00$var$streamGeometry(geometries[i], stream);\n }\n};\nfunction $e766031f6cae3a00$var$streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while(++i < n)coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\nfunction $e766031f6cae3a00$var$streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while(++i < n)$e766031f6cae3a00$var$streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\nfunction $e766031f6cae3a00$export$2e2bcd8739ae039(object, stream) {\n if (object && $e766031f6cae3a00$var$streamObjectType.hasOwnProperty(object.type)) $e766031f6cae3a00$var$streamObjectType[object.type](object, stream);\n else $e766031f6cae3a00$var$streamGeometry(object, stream);\n}\n\n});\n\n\nparcelRegister(\"5XobB\", function(module, exports) {\n\nvar $kC5ta = parcelRequire(\"kC5ta\");\n\nvar $cOqkX = parcelRequire(\"cOqkX\");\n\nvar $8mHes = parcelRequire(\"8mHes\");\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $jRJb9 = parcelRequire(\"jRJb9\");\nvar $4565394bb4cda60a$var$lambda0, $4565394bb4cda60a$var$phi0, $4565394bb4cda60a$var$lambda1, $4565394bb4cda60a$var$phi1, $4565394bb4cda60a$var$lambda2, $4565394bb4cda60a$var$lambda00, $4565394bb4cda60a$var$phi00, $4565394bb4cda60a$var$p0, $4565394bb4cda60a$var$deltaSum = (0, $kC5ta.default)(), $4565394bb4cda60a$var$ranges, $4565394bb4cda60a$var$range;\nvar $4565394bb4cda60a$var$boundsStream = {\n point: $4565394bb4cda60a$var$boundsPoint,\n lineStart: $4565394bb4cda60a$var$boundsLineStart,\n lineEnd: $4565394bb4cda60a$var$boundsLineEnd,\n polygonStart: function() {\n $4565394bb4cda60a$var$boundsStream.point = $4565394bb4cda60a$var$boundsRingPoint;\n $4565394bb4cda60a$var$boundsStream.lineStart = $4565394bb4cda60a$var$boundsRingStart;\n $4565394bb4cda60a$var$boundsStream.lineEnd = $4565394bb4cda60a$var$boundsRingEnd;\n $4565394bb4cda60a$var$deltaSum.reset();\n (0, $cOqkX.areaStream).polygonStart();\n },\n polygonEnd: function() {\n (0, $cOqkX.areaStream).polygonEnd();\n $4565394bb4cda60a$var$boundsStream.point = $4565394bb4cda60a$var$boundsPoint;\n $4565394bb4cda60a$var$boundsStream.lineStart = $4565394bb4cda60a$var$boundsLineStart;\n $4565394bb4cda60a$var$boundsStream.lineEnd = $4565394bb4cda60a$var$boundsLineEnd;\n if ((0, $cOqkX.areaRingSum) < 0) $4565394bb4cda60a$var$lambda0 = -($4565394bb4cda60a$var$lambda1 = 180), $4565394bb4cda60a$var$phi0 = -($4565394bb4cda60a$var$phi1 = 90);\n else if ($4565394bb4cda60a$var$deltaSum > (0, $kNUN7.epsilon)) $4565394bb4cda60a$var$phi1 = 90;\n else if ($4565394bb4cda60a$var$deltaSum < -(0, $kNUN7.epsilon)) $4565394bb4cda60a$var$phi0 = -90;\n $4565394bb4cda60a$var$range[0] = $4565394bb4cda60a$var$lambda0, $4565394bb4cda60a$var$range[1] = $4565394bb4cda60a$var$lambda1;\n }\n};\nfunction $4565394bb4cda60a$var$boundsPoint(lambda, phi) {\n $4565394bb4cda60a$var$ranges.push($4565394bb4cda60a$var$range = [\n $4565394bb4cda60a$var$lambda0 = lambda,\n $4565394bb4cda60a$var$lambda1 = lambda\n ]);\n if (phi < $4565394bb4cda60a$var$phi0) $4565394bb4cda60a$var$phi0 = phi;\n if (phi > $4565394bb4cda60a$var$phi1) $4565394bb4cda60a$var$phi1 = phi;\n}\nfunction $4565394bb4cda60a$var$linePoint(lambda, phi) {\n var p = (0, $8mHes.cartesian)([\n lambda * (0, $kNUN7.radians),\n phi * (0, $kNUN7.radians)\n ]);\n if ($4565394bb4cda60a$var$p0) {\n var normal = (0, $8mHes.cartesianCross)($4565394bb4cda60a$var$p0, p), equatorial = [\n normal[1],\n -normal[0],\n 0\n ], inflection = (0, $8mHes.cartesianCross)(equatorial, normal);\n (0, $8mHes.cartesianNormalizeInPlace)(inflection);\n inflection = (0, $8mHes.spherical)(inflection);\n var delta = lambda - $4565394bb4cda60a$var$lambda2, sign = delta > 0 ? 1 : -1, lambdai = inflection[0] * (0, $kNUN7.degrees) * sign, phii, antimeridian = (0, $kNUN7.abs)(delta) > 180;\n if (antimeridian ^ (sign * $4565394bb4cda60a$var$lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * (0, $kNUN7.degrees);\n if (phii > $4565394bb4cda60a$var$phi1) $4565394bb4cda60a$var$phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * $4565394bb4cda60a$var$lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * (0, $kNUN7.degrees);\n if (phii < $4565394bb4cda60a$var$phi0) $4565394bb4cda60a$var$phi0 = phii;\n } else {\n if (phi < $4565394bb4cda60a$var$phi0) $4565394bb4cda60a$var$phi0 = phi;\n if (phi > $4565394bb4cda60a$var$phi1) $4565394bb4cda60a$var$phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < $4565394bb4cda60a$var$lambda2) {\n if ($4565394bb4cda60a$var$angle($4565394bb4cda60a$var$lambda0, lambda) > $4565394bb4cda60a$var$angle($4565394bb4cda60a$var$lambda0, $4565394bb4cda60a$var$lambda1)) $4565394bb4cda60a$var$lambda1 = lambda;\n } else if ($4565394bb4cda60a$var$angle(lambda, $4565394bb4cda60a$var$lambda1) > $4565394bb4cda60a$var$angle($4565394bb4cda60a$var$lambda0, $4565394bb4cda60a$var$lambda1)) $4565394bb4cda60a$var$lambda0 = lambda;\n } else if ($4565394bb4cda60a$var$lambda1 >= $4565394bb4cda60a$var$lambda0) {\n if (lambda < $4565394bb4cda60a$var$lambda0) $4565394bb4cda60a$var$lambda0 = lambda;\n if (lambda > $4565394bb4cda60a$var$lambda1) $4565394bb4cda60a$var$lambda1 = lambda;\n } else {\n if (lambda > $4565394bb4cda60a$var$lambda2) {\n if ($4565394bb4cda60a$var$angle($4565394bb4cda60a$var$lambda0, lambda) > $4565394bb4cda60a$var$angle($4565394bb4cda60a$var$lambda0, $4565394bb4cda60a$var$lambda1)) $4565394bb4cda60a$var$lambda1 = lambda;\n } else if ($4565394bb4cda60a$var$angle(lambda, $4565394bb4cda60a$var$lambda1) > $4565394bb4cda60a$var$angle($4565394bb4cda60a$var$lambda0, $4565394bb4cda60a$var$lambda1)) $4565394bb4cda60a$var$lambda0 = lambda;\n }\n } else $4565394bb4cda60a$var$ranges.push($4565394bb4cda60a$var$range = [\n $4565394bb4cda60a$var$lambda0 = lambda,\n $4565394bb4cda60a$var$lambda1 = lambda\n ]);\n if (phi < $4565394bb4cda60a$var$phi0) $4565394bb4cda60a$var$phi0 = phi;\n if (phi > $4565394bb4cda60a$var$phi1) $4565394bb4cda60a$var$phi1 = phi;\n $4565394bb4cda60a$var$p0 = p, $4565394bb4cda60a$var$lambda2 = lambda;\n}\nfunction $4565394bb4cda60a$var$boundsLineStart() {\n $4565394bb4cda60a$var$boundsStream.point = $4565394bb4cda60a$var$linePoint;\n}\nfunction $4565394bb4cda60a$var$boundsLineEnd() {\n $4565394bb4cda60a$var$range[0] = $4565394bb4cda60a$var$lambda0, $4565394bb4cda60a$var$range[1] = $4565394bb4cda60a$var$lambda1;\n $4565394bb4cda60a$var$boundsStream.point = $4565394bb4cda60a$var$boundsPoint;\n $4565394bb4cda60a$var$p0 = null;\n}\nfunction $4565394bb4cda60a$var$boundsRingPoint(lambda, phi) {\n if ($4565394bb4cda60a$var$p0) {\n var delta = lambda - $4565394bb4cda60a$var$lambda2;\n $4565394bb4cda60a$var$deltaSum.add((0, $kNUN7.abs)(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else $4565394bb4cda60a$var$lambda00 = lambda, $4565394bb4cda60a$var$phi00 = phi;\n (0, $cOqkX.areaStream).point(lambda, phi);\n $4565394bb4cda60a$var$linePoint(lambda, phi);\n}\nfunction $4565394bb4cda60a$var$boundsRingStart() {\n (0, $cOqkX.areaStream).lineStart();\n}\nfunction $4565394bb4cda60a$var$boundsRingEnd() {\n $4565394bb4cda60a$var$boundsRingPoint($4565394bb4cda60a$var$lambda00, $4565394bb4cda60a$var$phi00);\n (0, $cOqkX.areaStream).lineEnd();\n if ((0, $kNUN7.abs)($4565394bb4cda60a$var$deltaSum) > (0, $kNUN7.epsilon)) $4565394bb4cda60a$var$lambda0 = -($4565394bb4cda60a$var$lambda1 = 180);\n $4565394bb4cda60a$var$range[0] = $4565394bb4cda60a$var$lambda0, $4565394bb4cda60a$var$range[1] = $4565394bb4cda60a$var$lambda1;\n $4565394bb4cda60a$var$p0 = null;\n}\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction $4565394bb4cda60a$var$angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\nfunction $4565394bb4cda60a$var$rangeCompare(a, b) {\n return a[0] - b[0];\n}\nfunction $4565394bb4cda60a$var$rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\nfunction $4565394bb4cda60a$export$2e2bcd8739ae039(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n $4565394bb4cda60a$var$phi1 = $4565394bb4cda60a$var$lambda1 = -($4565394bb4cda60a$var$lambda0 = $4565394bb4cda60a$var$phi0 = Infinity);\n $4565394bb4cda60a$var$ranges = [];\n (0, $jRJb9.default)(feature, $4565394bb4cda60a$var$boundsStream);\n // First, sort ranges by their minimum longitudes.\n if (n = $4565394bb4cda60a$var$ranges.length) {\n $4565394bb4cda60a$var$ranges.sort($4565394bb4cda60a$var$rangeCompare);\n // Then, merge any ranges that overlap.\n for(i = 1, a = $4565394bb4cda60a$var$ranges[0], merged = [\n a\n ]; i < n; ++i){\n b = $4565394bb4cda60a$var$ranges[i];\n if ($4565394bb4cda60a$var$rangeContains(a, b[0]) || $4565394bb4cda60a$var$rangeContains(a, b[1])) {\n if ($4565394bb4cda60a$var$angle(a[0], b[1]) > $4565394bb4cda60a$var$angle(a[0], a[1])) a[1] = b[1];\n if ($4565394bb4cda60a$var$angle(b[0], a[1]) > $4565394bb4cda60a$var$angle(a[0], a[1])) a[0] = b[0];\n } else merged.push(a = b);\n }\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for(deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i){\n b = merged[i];\n if ((delta = $4565394bb4cda60a$var$angle(a[1], b[0])) > deltaMax) deltaMax = delta, $4565394bb4cda60a$var$lambda0 = b[0], $4565394bb4cda60a$var$lambda1 = a[1];\n }\n }\n $4565394bb4cda60a$var$ranges = $4565394bb4cda60a$var$range = null;\n return $4565394bb4cda60a$var$lambda0 === Infinity || $4565394bb4cda60a$var$phi0 === Infinity ? [\n [\n NaN,\n NaN\n ],\n [\n NaN,\n NaN\n ]\n ] : [\n [\n $4565394bb4cda60a$var$lambda0,\n $4565394bb4cda60a$var$phi0\n ],\n [\n $4565394bb4cda60a$var$lambda1,\n $4565394bb4cda60a$var$phi1\n ]\n ];\n}\n\n});\nparcelRegister(\"8mHes\", function(module, exports) {\n\n$parcel$export(module.exports, \"spherical\", function () { return $6171e9cc3315a8a4$export$12f9ad44fe773943; });\n$parcel$export(module.exports, \"cartesian\", function () { return $6171e9cc3315a8a4$export$6e6697ef026a96; });\n$parcel$export(module.exports, \"cartesianDot\", function () { return $6171e9cc3315a8a4$export$2ef80f51436a9de9; });\n$parcel$export(module.exports, \"cartesianCross\", function () { return $6171e9cc3315a8a4$export$4763f5351b14293f; });\n$parcel$export(module.exports, \"cartesianAddInPlace\", function () { return $6171e9cc3315a8a4$export$e62eba72fc898eae; });\n$parcel$export(module.exports, \"cartesianScale\", function () { return $6171e9cc3315a8a4$export$52d0ee3fc868d452; });\n$parcel$export(module.exports, \"cartesianNormalizeInPlace\", function () { return $6171e9cc3315a8a4$export$6789498aec2cb34b; });\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\nfunction $6171e9cc3315a8a4$export$12f9ad44fe773943(cartesian) {\n return [\n (0, $kNUN7.atan2)(cartesian[1], cartesian[0]),\n (0, $kNUN7.asin)(cartesian[2])\n ];\n}\nfunction $6171e9cc3315a8a4$export$6e6697ef026a96(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = (0, $kNUN7.cos)(phi);\n return [\n cosPhi * (0, $kNUN7.cos)(lambda),\n cosPhi * (0, $kNUN7.sin)(lambda),\n (0, $kNUN7.sin)(phi)\n ];\n}\nfunction $6171e9cc3315a8a4$export$2ef80f51436a9de9(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\nfunction $6171e9cc3315a8a4$export$4763f5351b14293f(a, b) {\n return [\n a[1] * b[2] - a[2] * b[1],\n a[2] * b[0] - a[0] * b[2],\n a[0] * b[1] - a[1] * b[0]\n ];\n}\nfunction $6171e9cc3315a8a4$export$e62eba72fc898eae(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\nfunction $6171e9cc3315a8a4$export$52d0ee3fc868d452(vector, k) {\n return [\n vector[0] * k,\n vector[1] * k,\n vector[2] * k\n ];\n}\nfunction $6171e9cc3315a8a4$export$6789498aec2cb34b(d) {\n var l = (0, $kNUN7.sqrt)(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n\n});\n\n\nparcelRegister(\"kWgmR\", function(module, exports) {\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $6cZzT = parcelRequire(\"6cZzT\");\n\nvar $jRJb9 = parcelRequire(\"jRJb9\");\nvar $f3e5ebb6982a61b3$var$W0, $f3e5ebb6982a61b3$var$W1, $f3e5ebb6982a61b3$var$X0, $f3e5ebb6982a61b3$var$Y0, $f3e5ebb6982a61b3$var$Z0, $f3e5ebb6982a61b3$var$X1, $f3e5ebb6982a61b3$var$Y1, $f3e5ebb6982a61b3$var$Z1, $f3e5ebb6982a61b3$var$X2, $f3e5ebb6982a61b3$var$Y2, $f3e5ebb6982a61b3$var$Z2, $f3e5ebb6982a61b3$var$lambda00, $f3e5ebb6982a61b3$var$phi00, $f3e5ebb6982a61b3$var$x0, $f3e5ebb6982a61b3$var$y0, $f3e5ebb6982a61b3$var$z0; // previous point\nvar $f3e5ebb6982a61b3$var$centroidStream = {\n sphere: (0, $6cZzT.default),\n point: $f3e5ebb6982a61b3$var$centroidPoint,\n lineStart: $f3e5ebb6982a61b3$var$centroidLineStart,\n lineEnd: $f3e5ebb6982a61b3$var$centroidLineEnd,\n polygonStart: function() {\n $f3e5ebb6982a61b3$var$centroidStream.lineStart = $f3e5ebb6982a61b3$var$centroidRingStart;\n $f3e5ebb6982a61b3$var$centroidStream.lineEnd = $f3e5ebb6982a61b3$var$centroidRingEnd;\n },\n polygonEnd: function() {\n $f3e5ebb6982a61b3$var$centroidStream.lineStart = $f3e5ebb6982a61b3$var$centroidLineStart;\n $f3e5ebb6982a61b3$var$centroidStream.lineEnd = $f3e5ebb6982a61b3$var$centroidLineEnd;\n }\n};\n// Arithmetic mean of Cartesian vectors.\nfunction $f3e5ebb6982a61b3$var$centroidPoint(lambda, phi) {\n lambda *= (0, $kNUN7.radians), phi *= (0, $kNUN7.radians);\n var cosPhi = (0, $kNUN7.cos)(phi);\n $f3e5ebb6982a61b3$var$centroidPointCartesian(cosPhi * (0, $kNUN7.cos)(lambda), cosPhi * (0, $kNUN7.sin)(lambda), (0, $kNUN7.sin)(phi));\n}\nfunction $f3e5ebb6982a61b3$var$centroidPointCartesian(x, y, z) {\n ++$f3e5ebb6982a61b3$var$W0;\n $f3e5ebb6982a61b3$var$X0 += (x - $f3e5ebb6982a61b3$var$X0) / $f3e5ebb6982a61b3$var$W0;\n $f3e5ebb6982a61b3$var$Y0 += (y - $f3e5ebb6982a61b3$var$Y0) / $f3e5ebb6982a61b3$var$W0;\n $f3e5ebb6982a61b3$var$Z0 += (z - $f3e5ebb6982a61b3$var$Z0) / $f3e5ebb6982a61b3$var$W0;\n}\nfunction $f3e5ebb6982a61b3$var$centroidLineStart() {\n $f3e5ebb6982a61b3$var$centroidStream.point = $f3e5ebb6982a61b3$var$centroidLinePointFirst;\n}\nfunction $f3e5ebb6982a61b3$var$centroidLinePointFirst(lambda, phi) {\n lambda *= (0, $kNUN7.radians), phi *= (0, $kNUN7.radians);\n var cosPhi = (0, $kNUN7.cos)(phi);\n $f3e5ebb6982a61b3$var$x0 = cosPhi * (0, $kNUN7.cos)(lambda);\n $f3e5ebb6982a61b3$var$y0 = cosPhi * (0, $kNUN7.sin)(lambda);\n $f3e5ebb6982a61b3$var$z0 = (0, $kNUN7.sin)(phi);\n $f3e5ebb6982a61b3$var$centroidStream.point = $f3e5ebb6982a61b3$var$centroidLinePoint;\n $f3e5ebb6982a61b3$var$centroidPointCartesian($f3e5ebb6982a61b3$var$x0, $f3e5ebb6982a61b3$var$y0, $f3e5ebb6982a61b3$var$z0);\n}\nfunction $f3e5ebb6982a61b3$var$centroidLinePoint(lambda, phi) {\n lambda *= (0, $kNUN7.radians), phi *= (0, $kNUN7.radians);\n var cosPhi = (0, $kNUN7.cos)(phi), x = cosPhi * (0, $kNUN7.cos)(lambda), y = cosPhi * (0, $kNUN7.sin)(lambda), z = (0, $kNUN7.sin)(phi), w = (0, $kNUN7.atan2)((0, $kNUN7.sqrt)((w = $f3e5ebb6982a61b3$var$y0 * z - $f3e5ebb6982a61b3$var$z0 * y) * w + (w = $f3e5ebb6982a61b3$var$z0 * x - $f3e5ebb6982a61b3$var$x0 * z) * w + (w = $f3e5ebb6982a61b3$var$x0 * y - $f3e5ebb6982a61b3$var$y0 * x) * w), $f3e5ebb6982a61b3$var$x0 * x + $f3e5ebb6982a61b3$var$y0 * y + $f3e5ebb6982a61b3$var$z0 * z);\n $f3e5ebb6982a61b3$var$W1 += w;\n $f3e5ebb6982a61b3$var$X1 += w * ($f3e5ebb6982a61b3$var$x0 + ($f3e5ebb6982a61b3$var$x0 = x));\n $f3e5ebb6982a61b3$var$Y1 += w * ($f3e5ebb6982a61b3$var$y0 + ($f3e5ebb6982a61b3$var$y0 = y));\n $f3e5ebb6982a61b3$var$Z1 += w * ($f3e5ebb6982a61b3$var$z0 + ($f3e5ebb6982a61b3$var$z0 = z));\n $f3e5ebb6982a61b3$var$centroidPointCartesian($f3e5ebb6982a61b3$var$x0, $f3e5ebb6982a61b3$var$y0, $f3e5ebb6982a61b3$var$z0);\n}\nfunction $f3e5ebb6982a61b3$var$centroidLineEnd() {\n $f3e5ebb6982a61b3$var$centroidStream.point = $f3e5ebb6982a61b3$var$centroidPoint;\n}\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction $f3e5ebb6982a61b3$var$centroidRingStart() {\n $f3e5ebb6982a61b3$var$centroidStream.point = $f3e5ebb6982a61b3$var$centroidRingPointFirst;\n}\nfunction $f3e5ebb6982a61b3$var$centroidRingEnd() {\n $f3e5ebb6982a61b3$var$centroidRingPoint($f3e5ebb6982a61b3$var$lambda00, $f3e5ebb6982a61b3$var$phi00);\n $f3e5ebb6982a61b3$var$centroidStream.point = $f3e5ebb6982a61b3$var$centroidPoint;\n}\nfunction $f3e5ebb6982a61b3$var$centroidRingPointFirst(lambda, phi) {\n $f3e5ebb6982a61b3$var$lambda00 = lambda, $f3e5ebb6982a61b3$var$phi00 = phi;\n lambda *= (0, $kNUN7.radians), phi *= (0, $kNUN7.radians);\n $f3e5ebb6982a61b3$var$centroidStream.point = $f3e5ebb6982a61b3$var$centroidRingPoint;\n var cosPhi = (0, $kNUN7.cos)(phi);\n $f3e5ebb6982a61b3$var$x0 = cosPhi * (0, $kNUN7.cos)(lambda);\n $f3e5ebb6982a61b3$var$y0 = cosPhi * (0, $kNUN7.sin)(lambda);\n $f3e5ebb6982a61b3$var$z0 = (0, $kNUN7.sin)(phi);\n $f3e5ebb6982a61b3$var$centroidPointCartesian($f3e5ebb6982a61b3$var$x0, $f3e5ebb6982a61b3$var$y0, $f3e5ebb6982a61b3$var$z0);\n}\nfunction $f3e5ebb6982a61b3$var$centroidRingPoint(lambda, phi) {\n lambda *= (0, $kNUN7.radians), phi *= (0, $kNUN7.radians);\n var cosPhi = (0, $kNUN7.cos)(phi), x = cosPhi * (0, $kNUN7.cos)(lambda), y = cosPhi * (0, $kNUN7.sin)(lambda), z = (0, $kNUN7.sin)(phi), cx = $f3e5ebb6982a61b3$var$y0 * z - $f3e5ebb6982a61b3$var$z0 * y, cy = $f3e5ebb6982a61b3$var$z0 * x - $f3e5ebb6982a61b3$var$x0 * z, cz = $f3e5ebb6982a61b3$var$x0 * y - $f3e5ebb6982a61b3$var$y0 * x, m = (0, $kNUN7.sqrt)(cx * cx + cy * cy + cz * cz), w = (0, $kNUN7.asin)(m), v = m && -w / m; // area weight multiplier\n $f3e5ebb6982a61b3$var$X2 += v * cx;\n $f3e5ebb6982a61b3$var$Y2 += v * cy;\n $f3e5ebb6982a61b3$var$Z2 += v * cz;\n $f3e5ebb6982a61b3$var$W1 += w;\n $f3e5ebb6982a61b3$var$X1 += w * ($f3e5ebb6982a61b3$var$x0 + ($f3e5ebb6982a61b3$var$x0 = x));\n $f3e5ebb6982a61b3$var$Y1 += w * ($f3e5ebb6982a61b3$var$y0 + ($f3e5ebb6982a61b3$var$y0 = y));\n $f3e5ebb6982a61b3$var$Z1 += w * ($f3e5ebb6982a61b3$var$z0 + ($f3e5ebb6982a61b3$var$z0 = z));\n $f3e5ebb6982a61b3$var$centroidPointCartesian($f3e5ebb6982a61b3$var$x0, $f3e5ebb6982a61b3$var$y0, $f3e5ebb6982a61b3$var$z0);\n}\nfunction $f3e5ebb6982a61b3$export$2e2bcd8739ae039(object) {\n $f3e5ebb6982a61b3$var$W0 = $f3e5ebb6982a61b3$var$W1 = $f3e5ebb6982a61b3$var$X0 = $f3e5ebb6982a61b3$var$Y0 = $f3e5ebb6982a61b3$var$Z0 = $f3e5ebb6982a61b3$var$X1 = $f3e5ebb6982a61b3$var$Y1 = $f3e5ebb6982a61b3$var$Z1 = $f3e5ebb6982a61b3$var$X2 = $f3e5ebb6982a61b3$var$Y2 = $f3e5ebb6982a61b3$var$Z2 = 0;\n (0, $jRJb9.default)(object, $f3e5ebb6982a61b3$var$centroidStream);\n var x = $f3e5ebb6982a61b3$var$X2, y = $f3e5ebb6982a61b3$var$Y2, z = $f3e5ebb6982a61b3$var$Z2, m = x * x + y * y + z * z;\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < (0, $kNUN7.epsilon2)) {\n x = $f3e5ebb6982a61b3$var$X1, y = $f3e5ebb6982a61b3$var$Y1, z = $f3e5ebb6982a61b3$var$Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if ($f3e5ebb6982a61b3$var$W1 < (0, $kNUN7.epsilon)) x = $f3e5ebb6982a61b3$var$X0, y = $f3e5ebb6982a61b3$var$Y0, z = $f3e5ebb6982a61b3$var$Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < (0, $kNUN7.epsilon2)) return [\n NaN,\n NaN\n ];\n }\n return [\n (0, $kNUN7.atan2)(y, x) * (0, $kNUN7.degrees),\n (0, $kNUN7.asin)(z / (0, $kNUN7.sqrt)(m)) * (0, $kNUN7.degrees)\n ];\n}\n\n});\n\nparcelRegister(\"dWoD6\", function(module, exports) {\n\n$parcel$export(module.exports, \"circleStream\", function () { return $a263cc14d3773331$export$b5441eb324cd8d4e; });\n\nvar $8mHes = parcelRequire(\"8mHes\");\n\nvar $7w4IM = parcelRequire(\"7w4IM\");\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $hRYfY = parcelRequire(\"hRYfY\");\nfunction $a263cc14d3773331$export$b5441eb324cd8d4e(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = (0, $kNUN7.cos)(radius), sinRadius = (0, $kNUN7.sin)(radius), step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * (0, $kNUN7.tau);\n t1 = radius - step / 2;\n } else {\n t0 = $a263cc14d3773331$var$circleRadius(cosRadius, t0);\n t1 = $a263cc14d3773331$var$circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * (0, $kNUN7.tau);\n }\n for(var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step){\n point = (0, $8mHes.spherical)([\n cosRadius,\n -sinRadius * (0, $kNUN7.cos)(t),\n -sinRadius * (0, $kNUN7.sin)(t)\n ]);\n stream.point(point[0], point[1]);\n }\n}\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction $a263cc14d3773331$var$circleRadius(cosRadius, point) {\n point = (0, $8mHes.cartesian)(point), point[0] -= cosRadius;\n (0, $8mHes.cartesianNormalizeInPlace)(point);\n var radius = (0, $kNUN7.acos)(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + (0, $kNUN7.tau) - (0, $kNUN7.epsilon)) % (0, $kNUN7.tau);\n}\nfunction $a263cc14d3773331$export$2e2bcd8739ae039() {\n var center = (0, $7w4IM.default)([\n 0,\n 0\n ]), radius = (0, $7w4IM.default)(90), precision = (0, $7w4IM.default)(6), ring, rotate, stream = {\n point: point\n };\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= (0, $kNUN7.degrees), x[1] *= (0, $kNUN7.degrees);\n }\n function circle() {\n var c = center.apply(this, arguments), r = radius.apply(this, arguments) * (0, $kNUN7.radians), p = precision.apply(this, arguments) * (0, $kNUN7.radians);\n ring = [];\n rotate = (0, $hRYfY.rotateRadians)(-c[0] * (0, $kNUN7.radians), -c[1] * (0, $kNUN7.radians), 0).invert;\n $a263cc14d3773331$export$b5441eb324cd8d4e(stream, r, p, 1);\n c = {\n type: \"Polygon\",\n coordinates: [\n ring\n ]\n };\n ring = rotate = null;\n return c;\n }\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : (0, $7w4IM.default)([\n +_[0],\n +_[1]\n ]), circle) : center;\n };\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : (0, $7w4IM.default)(+_), circle) : radius;\n };\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : (0, $7w4IM.default)(+_), circle) : precision;\n };\n return circle;\n}\n\n});\nparcelRegister(\"7w4IM\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $578f2f1d4eca48ec$export$2e2bcd8739ae039; });\nfunction $578f2f1d4eca48ec$export$2e2bcd8739ae039(x) {\n return function() {\n return x;\n };\n}\n\n});\n\nparcelRegister(\"hRYfY\", function(module, exports) {\n\n$parcel$export(module.exports, \"rotateRadians\", function () { return $d0262097f9bc899c$export$a2ba89726971a90f; });\n$parcel$export(module.exports, \"default\", function () { return $d0262097f9bc899c$export$2e2bcd8739ae039; });\n\nvar $k5uhq = parcelRequire(\"k5uhq\");\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\nfunction $d0262097f9bc899c$var$rotationIdentity(lambda, phi) {\n return [\n lambda > (0, $kNUN7.pi) ? lambda - (0, $kNUN7.tau) : lambda < -(0, $kNUN7.pi) ? lambda + (0, $kNUN7.tau) : lambda,\n phi\n ];\n}\n$d0262097f9bc899c$var$rotationIdentity.invert = $d0262097f9bc899c$var$rotationIdentity;\nfunction $d0262097f9bc899c$export$a2ba89726971a90f(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= (0, $kNUN7.tau)) ? deltaPhi || deltaGamma ? (0, $k5uhq.default)($d0262097f9bc899c$var$rotationLambda(deltaLambda), $d0262097f9bc899c$var$rotationPhiGamma(deltaPhi, deltaGamma)) : $d0262097f9bc899c$var$rotationLambda(deltaLambda) : deltaPhi || deltaGamma ? $d0262097f9bc899c$var$rotationPhiGamma(deltaPhi, deltaGamma) : $d0262097f9bc899c$var$rotationIdentity;\n}\nfunction $d0262097f9bc899c$var$forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [\n lambda > (0, $kNUN7.pi) ? lambda - (0, $kNUN7.tau) : lambda < -(0, $kNUN7.pi) ? lambda + (0, $kNUN7.tau) : lambda,\n phi\n ];\n };\n}\nfunction $d0262097f9bc899c$var$rotationLambda(deltaLambda) {\n var rotation = $d0262097f9bc899c$var$forwardRotationLambda(deltaLambda);\n rotation.invert = $d0262097f9bc899c$var$forwardRotationLambda(-deltaLambda);\n return rotation;\n}\nfunction $d0262097f9bc899c$var$rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = (0, $kNUN7.cos)(deltaPhi), sinDeltaPhi = (0, $kNUN7.sin)(deltaPhi), cosDeltaGamma = (0, $kNUN7.cos)(deltaGamma), sinDeltaGamma = (0, $kNUN7.sin)(deltaGamma);\n function rotation(lambda, phi) {\n var cosPhi = (0, $kNUN7.cos)(phi), x = (0, $kNUN7.cos)(lambda) * cosPhi, y = (0, $kNUN7.sin)(lambda) * cosPhi, z = (0, $kNUN7.sin)(phi), k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n (0, $kNUN7.atan2)(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n (0, $kNUN7.asin)(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n rotation.invert = function(lambda, phi) {\n var cosPhi = (0, $kNUN7.cos)(phi), x = (0, $kNUN7.cos)(lambda) * cosPhi, y = (0, $kNUN7.sin)(lambda) * cosPhi, z = (0, $kNUN7.sin)(phi), k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n (0, $kNUN7.atan2)(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n (0, $kNUN7.asin)(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n return rotation;\n}\nfunction $d0262097f9bc899c$export$2e2bcd8739ae039(rotate) {\n rotate = $d0262097f9bc899c$export$a2ba89726971a90f(rotate[0] * (0, $kNUN7.radians), rotate[1] * (0, $kNUN7.radians), rotate.length > 2 ? rotate[2] * (0, $kNUN7.radians) : 0);\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * (0, $kNUN7.radians), coordinates[1] * (0, $kNUN7.radians));\n return coordinates[0] *= (0, $kNUN7.degrees), coordinates[1] *= (0, $kNUN7.degrees), coordinates;\n }\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * (0, $kNUN7.radians), coordinates[1] * (0, $kNUN7.radians));\n return coordinates[0] *= (0, $kNUN7.degrees), coordinates[1] *= (0, $kNUN7.degrees), coordinates;\n };\n return forward;\n}\n\n});\nparcelRegister(\"k5uhq\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $e9fbc347a1e0a276$export$2e2bcd8739ae039; });\nfunction $e9fbc347a1e0a276$export$2e2bcd8739ae039(a, b) {\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n return compose;\n}\n\n});\n\n\n\nparcelRegister(\"83woy\", function(module, exports) {\n\n$parcel$export(module.exports, \"clipExtent\", function () { return $5dd7bb83dce5f6bf$export$8948798bfea5de4f; });\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $NR8uS = parcelRequire(\"NR8uS\");\n\nvar $gewek = parcelRequire(\"gewek\");\n\nvar $lvgUr = parcelRequire(\"lvgUr\");\nparcelRequire(\"9rNoJ\");\nvar $2W2qM = parcelRequire(\"2W2qM\");\nvar $5dd7bb83dce5f6bf$var$clipMax = 1e9, $5dd7bb83dce5f6bf$var$clipMin = -$5dd7bb83dce5f6bf$var$clipMax;\nfunction $5dd7bb83dce5f6bf$export$8948798bfea5de4f(x0, y0, x1, y1) {\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoint(from, to) < 0 ^ direction > 0) do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n else stream.point(to[0], to[1]);\n }\n function corner(p, direction) {\n return (0, $kNUN7.abs)(p[0] - x0) < (0, $kNUN7.epsilon) ? direction > 0 ? 0 : 3 : (0, $kNUN7.abs)(p[0] - x1) < (0, $kNUN7.epsilon) ? direction > 0 ? 2 : 1 : (0, $kNUN7.abs)(p[1] - y0) < (0, $kNUN7.epsilon) ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n function comparePoint(a, b) {\n var ca = corner(a, 1), cb = corner(b, 1);\n return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n }\n return function(stream) {\n var activeStream = stream, bufferStream = (0, $NR8uS.default)(), segments, polygon, ring, x__, y__, v__, x_, y_, v_, first, clean;\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n function polygonInside() {\n var winding = 0;\n for(var i = 0, n = polygon.length; i < n; ++i)for(var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j){\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) {\n if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding;\n } else if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding;\n }\n return winding;\n }\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n function polygonEnd() {\n var startInside = polygonInside(), cleanInside = clean && startInside, visible = (segments = (0, $2W2qM.default)(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) (0, $lvgUr.default)(segments, compareIntersection, startInside, interpolate, stream);\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([\n x,\n y\n ]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else if (v && v_) activeStream.point(x, y);\n else {\n var a = [\n x_ = Math.max($5dd7bb83dce5f6bf$var$clipMin, Math.min($5dd7bb83dce5f6bf$var$clipMax, x_)),\n y_ = Math.max($5dd7bb83dce5f6bf$var$clipMin, Math.min($5dd7bb83dce5f6bf$var$clipMax, y_))\n ], b = [\n x = Math.max($5dd7bb83dce5f6bf$var$clipMin, Math.min($5dd7bb83dce5f6bf$var$clipMax, x)),\n y = Math.max($5dd7bb83dce5f6bf$var$clipMin, Math.min($5dd7bb83dce5f6bf$var$clipMax, y))\n ];\n if ((0, $gewek.default)(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n return clipStream;\n };\n}\nfunction $5dd7bb83dce5f6bf$export$2e2bcd8739ae039() {\n var x0 = 0, y0 = 0, x1 = 960, y1 = 500, cache, cacheStream, clip;\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = $5dd7bb83dce5f6bf$export$8948798bfea5de4f(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [\n [\n x0,\n y0\n ],\n [\n x1,\n y1\n ]\n ];\n }\n };\n}\n\n});\nparcelRegister(\"NR8uS\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $095dcb6e1778883a$export$2e2bcd8739ae039; });\n\nvar $6cZzT = parcelRequire(\"6cZzT\");\nfunction $095dcb6e1778883a$export$2e2bcd8739ae039() {\n var lines = [], line;\n return {\n point: function(x, y) {\n line.push([\n x,\n y\n ]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: (0, $6cZzT.default),\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n\n});\n\nparcelRegister(\"gewek\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $bd16f462304a1528$export$2e2bcd8739ae039; });\nfunction $bd16f462304a1528$export$2e2bcd8739ae039(a, b, x0, y0, x1, y1) {\n var ax = a[0], ay = a[1], bx = b[0], by = b[1], t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n\n});\n\nparcelRegister(\"lvgUr\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $fa799c0eeae6fefa$export$2e2bcd8739ae039; });\n\nvar $eIArd = parcelRequire(\"eIArd\");\nfunction $fa799c0eeae6fefa$var$Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\nfunction $fa799c0eeae6fefa$export$2e2bcd8739ae039(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [], clip = [], i, n;\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n // If the first and last points of a segment are coincident, then treat as a\n // closed ring. TODO if all rings are closed, then the winding order of the\n // exterior ring should be checked.\n if ((0, $eIArd.default)(p0, p1)) {\n stream.lineStart();\n for(i = 0; i < n; ++i)stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n subject.push(x = new $fa799c0eeae6fefa$var$Intersection(p0, segment, null, true));\n clip.push(x.o = new $fa799c0eeae6fefa$var$Intersection(p0, null, x, false));\n subject.push(x = new $fa799c0eeae6fefa$var$Intersection(p1, segment, null, false));\n clip.push(x.o = new $fa799c0eeae6fefa$var$Intersection(p1, null, x, true));\n });\n if (!subject.length) return;\n clip.sort(compareIntersection);\n $fa799c0eeae6fefa$var$link(subject);\n $fa799c0eeae6fefa$var$link(clip);\n for(i = 0, n = clip.length; i < n; ++i)clip[i].e = startInside = !startInside;\n var start = subject[0], points, point;\n while(true){\n // Find first unvisited intersection.\n var current = start, isSubject = true;\n while(current.v)if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) for(i = 0, n = points.length; i < n; ++i)stream.point((point = points[i])[0], point[1]);\n else interpolate(current.x, current.n.x, 1, stream);\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for(i = points.length - 1; i >= 0; --i)stream.point((point = points[i])[0], point[1]);\n } else interpolate(current.x, current.p.x, -1, stream);\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n }while (!current.v);\n stream.lineEnd();\n }\n}\nfunction $fa799c0eeae6fefa$var$link(array) {\n if (!(n = array.length)) return;\n var n, i = 0, a = array[0], b;\n while(++i < n){\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n\n});\nparcelRegister(\"eIArd\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ab71708d3928f132$export$2e2bcd8739ae039; });\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\nfunction $ab71708d3928f132$export$2e2bcd8739ae039(a, b) {\n return (0, $kNUN7.abs)(a[0] - b[0]) < (0, $kNUN7.epsilon) && (0, $kNUN7.abs)(a[1] - b[1]) < (0, $kNUN7.epsilon);\n}\n\n});\n\n\nparcelRegister(\"9rNoJ\", function(module, exports) {\n\n$parcel$export(module.exports, \"merge\", function () { return (parcelRequire(\"2W2qM\")).default; });\n$parcel$export(module.exports, \"range\", function () { return (parcelRequire(\"9hcBA\")).default; });\n\nvar $bDw63 = parcelRequire(\"bDw63\");\n\nvar $40GcE = parcelRequire(\"40GcE\");\n\nvar $f086o = parcelRequire(\"f086o\");\n\nvar $ePxPG = parcelRequire(\"ePxPG\");\n\nvar $wUqCQ = parcelRequire(\"wUqCQ\");\n\nvar $54eX2 = parcelRequire(\"54eX2\");\n\nvar $izvMs = parcelRequire(\"izvMs\");\n\nvar $6oqH5 = parcelRequire(\"6oqH5\");\n\nvar $ihlZ0 = parcelRequire(\"ihlZ0\");\n\nvar $jaNtf = parcelRequire(\"jaNtf\");\n\nvar $8UuS6 = parcelRequire(\"8UuS6\");\n\nvar $QJsTD = parcelRequire(\"QJsTD\");\n\nvar $cbJNW = parcelRequire(\"cbJNW\");\n\nvar $bewbD = parcelRequire(\"bewbD\");\n\nvar $2W2qM = parcelRequire(\"2W2qM\");\n\nvar $8Zi0Y = parcelRequire(\"8Zi0Y\");\n\nvar $2YPap = parcelRequire(\"2YPap\");\n\nvar $ldhtE = parcelRequire(\"ldhtE\");\n\nvar $1TY76 = parcelRequire(\"1TY76\");\n\nvar $9hcBA = parcelRequire(\"9hcBA\");\n\nvar $4WAEx = parcelRequire(\"4WAEx\");\n\nvar $8XG1E = parcelRequire(\"8XG1E\");\n\nvar $kJeYz = parcelRequire(\"kJeYz\");\n\nvar $aUb2r = parcelRequire(\"aUb2r\");\n\nvar $6DsKJ = parcelRequire(\"6DsKJ\");\n\nvar $gInKO = parcelRequire(\"gInKO\");\n\nvar $4QI4x = parcelRequire(\"4QI4x\");\n\n});\nparcelRegister(\"bDw63\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $878c3bede43841c0$export$2e2bcd8739ae039; });\n\nvar $40GcE = parcelRequire(\"40GcE\");\n\nvar $f086o = parcelRequire(\"f086o\");\nvar $878c3bede43841c0$var$ascendingBisect = (0, $f086o.default)((0, $40GcE.default));\nvar $878c3bede43841c0$export$4d945ad3ad5751b0 = $878c3bede43841c0$var$ascendingBisect.right;\nvar $878c3bede43841c0$export$df7d25c84ebd12a5 = $878c3bede43841c0$var$ascendingBisect.left;\nvar $878c3bede43841c0$export$2e2bcd8739ae039 = $878c3bede43841c0$export$4d945ad3ad5751b0;\n\n});\nparcelRegister(\"40GcE\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $2eb7e622c972179f$export$2e2bcd8739ae039; });\nfunction $2eb7e622c972179f$export$2e2bcd8739ae039(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\n});\n\nparcelRegister(\"f086o\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $aebd2409b55bec32$export$2e2bcd8739ae039; });\n\nvar $40GcE = parcelRequire(\"40GcE\");\nfunction $aebd2409b55bec32$export$2e2bcd8739ae039(compare) {\n if (compare.length === 1) compare = $aebd2409b55bec32$var$ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while(lo < hi){\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while(lo < hi){\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\nfunction $aebd2409b55bec32$var$ascendingComparator(f) {\n return function(d, x) {\n return (0, $40GcE.default)(f(d), x);\n };\n}\n\n});\n\n\nparcelRegister(\"ePxPG\", function(module, exports) {\n\nvar $2YPap = parcelRequire(\"2YPap\");\nfunction $acc0128ad48ae4a0$export$2e2bcd8739ae039(values0, values1, reduce) {\n var n0 = values0.length, n1 = values1.length, values = new Array(n0 * n1), i0, i1, i, value0;\n if (reduce == null) reduce = (0, $2YPap.pair);\n for(i0 = i = 0; i0 < n0; ++i0)for(value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i)values[i] = reduce(value0, values1[i1]);\n return values;\n}\n\n});\nparcelRegister(\"2YPap\", function(module, exports) {\n\n$parcel$export(module.exports, \"pair\", function () { return $22b8e00d64d412a2$export$a04cb3fe8b81dd; });\nfunction $22b8e00d64d412a2$export$2e2bcd8739ae039(array, f) {\n if (f == null) f = $22b8e00d64d412a2$export$a04cb3fe8b81dd;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while(i < n)pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\nfunction $22b8e00d64d412a2$export$a04cb3fe8b81dd(a, b) {\n return [\n a,\n b\n ];\n}\n\n});\n\n\nparcelRegister(\"wUqCQ\", function(module, exports) {\nfunction $062ec2c967580cb1$export$2e2bcd8739ae039(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n\n});\n\nparcelRegister(\"54eX2\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $3b08ec7542d28c2c$export$2e2bcd8739ae039; });\n\nvar $gInKO = parcelRequire(\"gInKO\");\nfunction $3b08ec7542d28c2c$export$2e2bcd8739ae039(array, f) {\n var v = (0, $gInKO.default)(array, f);\n return v ? Math.sqrt(v) : v;\n}\n\n});\nparcelRegister(\"gInKO\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c2b32e7818532eff$export$2e2bcd8739ae039; });\n\nvar $2uWCs = parcelRequire(\"2uWCs\");\nfunction $c2b32e7818532eff$export$2e2bcd8739ae039(values, valueof) {\n var n = values.length, m = 0, i = -1, mean = 0, value, delta, sum = 0;\n if (valueof == null) {\n while(++i < n)if (!isNaN(value = (0, $2uWCs.default)(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n } else {\n while(++i < n)if (!isNaN(value = (0, $2uWCs.default)(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n if (m > 1) return sum / (m - 1);\n}\n\n});\nparcelRegister(\"2uWCs\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $1d1bdaa89db4759d$export$2e2bcd8739ae039; });\nfunction $1d1bdaa89db4759d$export$2e2bcd8739ae039(x) {\n return x === null ? NaN : +x;\n}\n\n});\n\n\n\nparcelRegister(\"izvMs\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $d85425d89a565530$export$2e2bcd8739ae039; });\nfunction $d85425d89a565530$export$2e2bcd8739ae039(values, valueof) {\n var n = values.length, i = -1, value, min, max;\n if (valueof == null) {\n while(++i < n)if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while(++i < n)if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n } else {\n while(++i < n)if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while(++i < n)if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n return [\n min,\n max\n ];\n}\n\n});\n\nparcelRegister(\"6oqH5\", function(module, exports) {\n\nvar $liBpW = parcelRequire(\"liBpW\");\n\nvar $bDw63 = parcelRequire(\"bDw63\");\n\nvar $3UMcr = parcelRequire(\"3UMcr\");\n\nvar $izvMs = parcelRequire(\"izvMs\");\n\nvar $x5a1L = parcelRequire(\"x5a1L\");\n\nvar $9hcBA = parcelRequire(\"9hcBA\");\n\nvar $aUb2r = parcelRequire(\"aUb2r\");\n\nvar $8UuS6 = parcelRequire(\"8UuS6\");\nfunction $4a79b0d442a450f9$export$2e2bcd8739ae039() {\n var value = (0, $x5a1L.default), domain = (0, $izvMs.default), threshold = (0, $8UuS6.default);\n function histogram(data) {\n var i, n = data.length, x, values = new Array(n);\n for(i = 0; i < n; ++i)values[i] = value(data[i], i, data);\n var xz = domain(values), x0 = xz[0], x1 = xz[1], tz = threshold(values, x0, x1);\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = (0, $aUb2r.tickStep)(x0, x1, tz);\n tz = (0, $9hcBA.default)(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while(tz[0] <= x0)tz.shift(), --m;\n while(tz[m - 1] > x1)tz.pop(), --m;\n var bins = new Array(m + 1), bin;\n // Initialize bins.\n for(i = 0; i <= m; ++i){\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n // Assign data to bins by value, ignoring any outside the domain.\n for(i = 0; i < n; ++i){\n x = values[i];\n if (x0 <= x && x <= x1) bins[(0, $bDw63.default)(tz, x, 0, m)].push(data[i]);\n }\n return bins;\n }\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : (0, $3UMcr.default)(_), histogram) : value;\n };\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : (0, $3UMcr.default)([\n _[0],\n _[1]\n ]), histogram) : domain;\n };\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? (0, $3UMcr.default)((0, $liBpW.slice).call(_)) : (0, $3UMcr.default)(_), histogram) : threshold;\n };\n return histogram;\n}\n\n});\nparcelRegister(\"liBpW\", function(module, exports) {\n\n$parcel$export(module.exports, \"slice\", function () { return $f8184db68dcf7c32$export$58adb3bec8346d0f; });\n$parcel$export(module.exports, \"map\", function () { return $f8184db68dcf7c32$export$871de8747c9eaa88; });\nvar $f8184db68dcf7c32$var$array = Array.prototype;\nvar $f8184db68dcf7c32$export$58adb3bec8346d0f = $f8184db68dcf7c32$var$array.slice;\nvar $f8184db68dcf7c32$export$871de8747c9eaa88 = $f8184db68dcf7c32$var$array.map;\n\n});\n\nparcelRegister(\"3UMcr\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $2d9bfd82977eb220$export$2e2bcd8739ae039; });\nfunction $2d9bfd82977eb220$export$2e2bcd8739ae039(x) {\n return function() {\n return x;\n };\n}\n\n});\n\nparcelRegister(\"x5a1L\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $063715feeea4f627$export$2e2bcd8739ae039; });\nfunction $063715feeea4f627$export$2e2bcd8739ae039(x) {\n return x;\n}\n\n});\n\nparcelRegister(\"9hcBA\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6c0f7abd208d5cc7$export$2e2bcd8739ae039; });\nfunction $6c0f7abd208d5cc7$export$2e2bcd8739ae039(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n var i = -1, n = Math.max(0, Math.ceil((stop - start) / step)) | 0, range = new Array(n);\n while(++i < n)range[i] = start + i * step;\n return range;\n}\n\n});\n\nparcelRegister(\"aUb2r\", function(module, exports) {\n\n$parcel$export(module.exports, \"tickStep\", function () { return $7f07b259815417aa$export$81087d9b915d4ede; });\nvar $7f07b259815417aa$var$e10 = Math.sqrt(50), $7f07b259815417aa$var$e5 = Math.sqrt(10), $7f07b259815417aa$var$e2 = Math.sqrt(2);\nfunction $7f07b259815417aa$export$2e2bcd8739ae039(start, stop, count) {\n var reverse, i = -1, n, ticks, step;\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [\n start\n ];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = $7f07b259815417aa$export$bc64d00cc98e7e95(start, stop, count)) === 0 || !isFinite(step)) return [];\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while(++i < n)ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while(++i < n)ticks[i] = (start - i) / step;\n }\n if (reverse) ticks.reverse();\n return ticks;\n}\nfunction $7f07b259815417aa$export$bc64d00cc98e7e95(start, stop, count) {\n var step = (stop - start) / Math.max(0, count), power = Math.floor(Math.log(step) / Math.LN10), error = step / Math.pow(10, power);\n return power >= 0 ? (error >= $7f07b259815417aa$var$e10 ? 10 : error >= $7f07b259815417aa$var$e5 ? 5 : error >= $7f07b259815417aa$var$e2 ? 2 : 1) * Math.pow(10, power) : -Math.pow(10, -power) / (error >= $7f07b259815417aa$var$e10 ? 10 : error >= $7f07b259815417aa$var$e5 ? 5 : error >= $7f07b259815417aa$var$e2 ? 2 : 1);\n}\nfunction $7f07b259815417aa$export$81087d9b915d4ede(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count), step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)), error = step0 / step1;\n if (error >= $7f07b259815417aa$var$e10) step1 *= 10;\n else if (error >= $7f07b259815417aa$var$e5) step1 *= 5;\n else if (error >= $7f07b259815417aa$var$e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n\n});\n\nparcelRegister(\"8UuS6\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $67cb802c1678fa20$export$2e2bcd8739ae039; });\nfunction $67cb802c1678fa20$export$2e2bcd8739ae039(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n\n});\n\n\nparcelRegister(\"ihlZ0\", function(module, exports) {\n\nvar $liBpW = parcelRequire(\"liBpW\");\n\nvar $40GcE = parcelRequire(\"40GcE\");\n\nvar $2uWCs = parcelRequire(\"2uWCs\");\n\nvar $1TY76 = parcelRequire(\"1TY76\");\nfunction $d4eadde7233fb523$export$2e2bcd8739ae039(values, min, max) {\n values = (0, $liBpW.map).call(values, (0, $2uWCs.default)).sort((0, $40GcE.default));\n return Math.ceil((max - min) / (2 * ((0, $1TY76.default)(values, 0.75) - (0, $1TY76.default)(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n\n});\nparcelRegister(\"1TY76\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $16298ed11602fce6$export$2e2bcd8739ae039; });\n\nvar $2uWCs = parcelRequire(\"2uWCs\");\nfunction $16298ed11602fce6$export$2e2bcd8739ae039(values, p, valueof) {\n if (valueof == null) valueof = (0, $2uWCs.default);\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n, i = (n - 1) * p, i0 = Math.floor(i), value0 = +valueof(values[i0], i0, values), value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\n});\n\n\nparcelRegister(\"jaNtf\", function(module, exports) {\n\nvar $54eX2 = parcelRequire(\"54eX2\");\nfunction $df55535c5c15baab$export$2e2bcd8739ae039(values, min, max) {\n return Math.ceil((max - min) / (3.5 * (0, $54eX2.default)(values) * Math.pow(values.length, -1 / 3)));\n}\n\n});\n\nparcelRegister(\"QJsTD\", function(module, exports) {\nfunction $09e81fdbe6fc95d2$export$2e2bcd8739ae039(values, valueof) {\n var n = values.length, i = -1, value, max;\n if (valueof == null) {\n while(++i < n)if ((value = values[i]) != null && value >= value) {\n max = value;\n while(++i < n)if ((value = values[i]) != null && value > max) max = value;\n }\n } else {\n while(++i < n)if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while(++i < n)if ((value = valueof(values[i], i, values)) != null && value > max) max = value;\n }\n }\n return max;\n}\n\n});\n\nparcelRegister(\"cbJNW\", function(module, exports) {\n\nvar $2uWCs = parcelRequire(\"2uWCs\");\nfunction $024a39fba1ffdb4f$export$2e2bcd8739ae039(values, valueof) {\n var n = values.length, m = n, i = -1, value, sum = 0;\n if (valueof == null) {\n while(++i < n)if (!isNaN(value = (0, $2uWCs.default)(values[i]))) sum += value;\n else --m;\n } else {\n while(++i < n)if (!isNaN(value = (0, $2uWCs.default)(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n if (m) return sum / m;\n}\n\n});\n\nparcelRegister(\"bewbD\", function(module, exports) {\n\nvar $40GcE = parcelRequire(\"40GcE\");\n\nvar $2uWCs = parcelRequire(\"2uWCs\");\n\nvar $1TY76 = parcelRequire(\"1TY76\");\nfunction $82d9f81cc2eec440$export$2e2bcd8739ae039(values, valueof) {\n var n = values.length, i = -1, value, numbers = [];\n if (valueof == null) {\n while(++i < n)if (!isNaN(value = (0, $2uWCs.default)(values[i]))) numbers.push(value);\n } else {\n while(++i < n)if (!isNaN(value = (0, $2uWCs.default)(valueof(values[i], i, values)))) numbers.push(value);\n }\n return (0, $1TY76.default)(numbers.sort((0, $40GcE.default)), 0.5);\n}\n\n});\n\nparcelRegister(\"2W2qM\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $2232e2439c911213$export$2e2bcd8739ae039; });\nfunction $2232e2439c911213$export$2e2bcd8739ae039(arrays) {\n var n = arrays.length, m, i = -1, j = 0, merged, array;\n while(++i < n)j += arrays[i].length;\n merged = new Array(j);\n while(--n >= 0){\n array = arrays[n];\n m = array.length;\n while(--m >= 0)merged[--j] = array[m];\n }\n return merged;\n}\n\n});\n\nparcelRegister(\"8Zi0Y\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $68b1fe94f59af1cc$export$2e2bcd8739ae039; });\nfunction $68b1fe94f59af1cc$export$2e2bcd8739ae039(values, valueof) {\n var n = values.length, i = -1, value, min;\n if (valueof == null) {\n while(++i < n)if ((value = values[i]) != null && value >= value) {\n min = value;\n while(++i < n)if ((value = values[i]) != null && min > value) min = value;\n }\n } else {\n while(++i < n)if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while(++i < n)if ((value = valueof(values[i], i, values)) != null && min > value) min = value;\n }\n }\n return min;\n}\n\n});\n\nparcelRegister(\"ldhtE\", function(module, exports) {\nfunction $f7185e79cd845c09$export$2e2bcd8739ae039(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while(i--)permutes[i] = array[indexes[i]];\n return permutes;\n}\n\n});\n\nparcelRegister(\"4WAEx\", function(module, exports) {\n\nvar $40GcE = parcelRequire(\"40GcE\");\nfunction $399902b0ffe27a26$export$2e2bcd8739ae039(values, compare) {\n if (!(n = values.length)) return;\n var n, i = 0, j = 0, xi, xj = values[j];\n if (compare == null) compare = (0, $40GcE.default);\n while(++i < n)if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) xj = xi, j = i;\n if (compare(xj, xj) === 0) return j;\n}\n\n});\n\nparcelRegister(\"8XG1E\", function(module, exports) {\nfunction $68646ed35f42f1c8$export$2e2bcd8739ae039(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0), t, i;\n while(m){\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n return array;\n}\n\n});\n\nparcelRegister(\"kJeYz\", function(module, exports) {\nfunction $f173a08d64c048ea$export$2e2bcd8739ae039(values, valueof) {\n var n = values.length, i = -1, value, sum = 0;\n if (valueof == null) {\n while(++i < n)if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n } else {\n while(++i < n)if (value = +valueof(values[i], i, values)) sum += value;\n }\n return sum;\n}\n\n});\n\nparcelRegister(\"6DsKJ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $4d4cb05052933ac6$export$2e2bcd8739ae039; });\n\nvar $8Zi0Y = parcelRequire(\"8Zi0Y\");\nfunction $4d4cb05052933ac6$export$2e2bcd8739ae039(matrix) {\n if (!(n = matrix.length)) return [];\n for(var i = -1, m = (0, $8Zi0Y.default)(matrix, $4d4cb05052933ac6$var$length), transpose = new Array(m); ++i < m;)for(var j = -1, n, row = transpose[i] = new Array(n); ++j < n;)row[j] = matrix[j][i];\n return transpose;\n}\nfunction $4d4cb05052933ac6$var$length(d) {\n return d.length;\n}\n\n});\n\nparcelRegister(\"4QI4x\", function(module, exports) {\n\nvar $6DsKJ = parcelRequire(\"6DsKJ\");\nfunction $387e348d20a73154$export$2e2bcd8739ae039() {\n return (0, $6DsKJ.default)(arguments);\n}\n\n});\n\n\n\nparcelRegister(\"9mLIr\", function(module, exports) {\n\nvar $fcrWr = parcelRequire(\"fcrWr\");\n\nvar $gJwx7 = parcelRequire(\"gJwx7\");\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\nvar $01c280bfe2effd37$var$containsObjectType = {\n Feature: function(object, point) {\n return $01c280bfe2effd37$var$containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while(++i < n)if ($01c280bfe2effd37$var$containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\nvar $01c280bfe2effd37$var$containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return $01c280bfe2effd37$var$containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while(++i < n)if ($01c280bfe2effd37$var$containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return $01c280bfe2effd37$var$containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while(++i < n)if ($01c280bfe2effd37$var$containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return $01c280bfe2effd37$var$containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while(++i < n)if ($01c280bfe2effd37$var$containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while(++i < n)if ($01c280bfe2effd37$var$containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\nfunction $01c280bfe2effd37$var$containsGeometry(geometry, point) {\n return geometry && $01c280bfe2effd37$var$containsGeometryType.hasOwnProperty(geometry.type) ? $01c280bfe2effd37$var$containsGeometryType[geometry.type](geometry, point) : false;\n}\nfunction $01c280bfe2effd37$var$containsPoint(coordinates, point) {\n return (0, $gJwx7.default)(coordinates, point) === 0;\n}\nfunction $01c280bfe2effd37$var$containsLine(coordinates, point) {\n var ab = (0, $gJwx7.default)(coordinates[0], coordinates[1]), ao = (0, $gJwx7.default)(coordinates[0], point), ob = (0, $gJwx7.default)(point, coordinates[1]);\n return ao + ob <= ab + (0, $kNUN7.epsilon);\n}\nfunction $01c280bfe2effd37$var$containsPolygon(coordinates, point) {\n return !!(0, $fcrWr.default)(coordinates.map($01c280bfe2effd37$var$ringRadians), $01c280bfe2effd37$var$pointRadians(point));\n}\nfunction $01c280bfe2effd37$var$ringRadians(ring) {\n return ring = ring.map($01c280bfe2effd37$var$pointRadians), ring.pop(), ring;\n}\nfunction $01c280bfe2effd37$var$pointRadians(point) {\n return [\n point[0] * (0, $kNUN7.radians),\n point[1] * (0, $kNUN7.radians)\n ];\n}\nfunction $01c280bfe2effd37$export$2e2bcd8739ae039(object, point) {\n return (object && $01c280bfe2effd37$var$containsObjectType.hasOwnProperty(object.type) ? $01c280bfe2effd37$var$containsObjectType[object.type] : $01c280bfe2effd37$var$containsGeometry)(object, point);\n}\n\n});\nparcelRegister(\"fcrWr\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b10da69cbe71e520$export$2e2bcd8739ae039; });\n\nvar $kC5ta = parcelRequire(\"kC5ta\");\n\nvar $8mHes = parcelRequire(\"8mHes\");\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\nvar $b10da69cbe71e520$var$sum = (0, $kC5ta.default)();\nfunction $b10da69cbe71e520$export$2e2bcd8739ae039(polygon, point) {\n var lambda = point[0], phi = point[1], normal = [\n (0, $kNUN7.sin)(lambda),\n -(0, $kNUN7.cos)(lambda),\n 0\n ], angle = 0, winding = 0;\n $b10da69cbe71e520$var$sum.reset();\n for(var i = 0, n = polygon.length; i < n; ++i){\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring, m, point0 = ring[m - 1], lambda0 = point0[0], phi0 = point0[1] / 2 + (0, $kNUN7.quarterPi), sinPhi0 = (0, $kNUN7.sin)(phi0), cosPhi0 = (0, $kNUN7.cos)(phi0);\n for(var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1){\n var point1 = ring[j], lambda1 = point1[0], phi1 = point1[1] / 2 + (0, $kNUN7.quarterPi), sinPhi1 = (0, $kNUN7.sin)(phi1), cosPhi1 = (0, $kNUN7.cos)(phi1), delta = lambda1 - lambda0, sign = delta >= 0 ? 1 : -1, absDelta = sign * delta, antimeridian = absDelta > (0, $kNUN7.pi), k = sinPhi0 * sinPhi1;\n $b10da69cbe71e520$var$sum.add((0, $kNUN7.atan2)(k * sign * (0, $kNUN7.sin)(absDelta), cosPhi0 * cosPhi1 + k * (0, $kNUN7.cos)(absDelta)));\n angle += antimeridian ? delta + sign * (0, $kNUN7.tau) : delta;\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = (0, $8mHes.cartesianCross)((0, $8mHes.cartesian)(point0), (0, $8mHes.cartesian)(point1));\n (0, $8mHes.cartesianNormalizeInPlace)(arc);\n var intersection = (0, $8mHes.cartesianCross)(normal, arc);\n (0, $8mHes.cartesianNormalizeInPlace)(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * (0, $kNUN7.asin)(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n return (angle < -(0, $kNUN7.epsilon) || angle < (0, $kNUN7.epsilon) && $b10da69cbe71e520$var$sum < -(0, $kNUN7.epsilon)) ^ winding & 1;\n}\n\n});\n\nparcelRegister(\"gJwx7\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c2ea15b2230370c4$export$2e2bcd8739ae039; });\n\nvar $ck2S5 = parcelRequire(\"ck2S5\");\nvar $c2ea15b2230370c4$var$coordinates = [\n null,\n null\n], $c2ea15b2230370c4$var$object = {\n type: \"LineString\",\n coordinates: $c2ea15b2230370c4$var$coordinates\n};\nfunction $c2ea15b2230370c4$export$2e2bcd8739ae039(a, b) {\n $c2ea15b2230370c4$var$coordinates[0] = a;\n $c2ea15b2230370c4$var$coordinates[1] = b;\n return (0, $ck2S5.default)($c2ea15b2230370c4$var$object);\n}\n\n});\nparcelRegister(\"ck2S5\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $8f89947849e919fb$export$2e2bcd8739ae039; });\n\nvar $kC5ta = parcelRequire(\"kC5ta\");\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $6cZzT = parcelRequire(\"6cZzT\");\n\nvar $jRJb9 = parcelRequire(\"jRJb9\");\nvar $8f89947849e919fb$var$lengthSum = (0, $kC5ta.default)(), $8f89947849e919fb$var$lambda0, $8f89947849e919fb$var$sinPhi0, $8f89947849e919fb$var$cosPhi0;\nvar $8f89947849e919fb$var$lengthStream = {\n sphere: (0, $6cZzT.default),\n point: (0, $6cZzT.default),\n lineStart: $8f89947849e919fb$var$lengthLineStart,\n lineEnd: (0, $6cZzT.default),\n polygonStart: (0, $6cZzT.default),\n polygonEnd: (0, $6cZzT.default)\n};\nfunction $8f89947849e919fb$var$lengthLineStart() {\n $8f89947849e919fb$var$lengthStream.point = $8f89947849e919fb$var$lengthPointFirst;\n $8f89947849e919fb$var$lengthStream.lineEnd = $8f89947849e919fb$var$lengthLineEnd;\n}\nfunction $8f89947849e919fb$var$lengthLineEnd() {\n $8f89947849e919fb$var$lengthStream.point = $8f89947849e919fb$var$lengthStream.lineEnd = (0, $6cZzT.default);\n}\nfunction $8f89947849e919fb$var$lengthPointFirst(lambda, phi) {\n lambda *= (0, $kNUN7.radians), phi *= (0, $kNUN7.radians);\n $8f89947849e919fb$var$lambda0 = lambda, $8f89947849e919fb$var$sinPhi0 = (0, $kNUN7.sin)(phi), $8f89947849e919fb$var$cosPhi0 = (0, $kNUN7.cos)(phi);\n $8f89947849e919fb$var$lengthStream.point = $8f89947849e919fb$var$lengthPoint;\n}\nfunction $8f89947849e919fb$var$lengthPoint(lambda, phi) {\n lambda *= (0, $kNUN7.radians), phi *= (0, $kNUN7.radians);\n var sinPhi = (0, $kNUN7.sin)(phi), cosPhi = (0, $kNUN7.cos)(phi), delta = (0, $kNUN7.abs)(lambda - $8f89947849e919fb$var$lambda0), cosDelta = (0, $kNUN7.cos)(delta), sinDelta = (0, $kNUN7.sin)(delta), x = cosPhi * sinDelta, y = $8f89947849e919fb$var$cosPhi0 * sinPhi - $8f89947849e919fb$var$sinPhi0 * cosPhi * cosDelta, z = $8f89947849e919fb$var$sinPhi0 * sinPhi + $8f89947849e919fb$var$cosPhi0 * cosPhi * cosDelta;\n $8f89947849e919fb$var$lengthSum.add((0, $kNUN7.atan2)((0, $kNUN7.sqrt)(x * x + y * y), z));\n $8f89947849e919fb$var$lambda0 = lambda, $8f89947849e919fb$var$sinPhi0 = sinPhi, $8f89947849e919fb$var$cosPhi0 = cosPhi;\n}\nfunction $8f89947849e919fb$export$2e2bcd8739ae039(object) {\n $8f89947849e919fb$var$lengthSum.reset();\n (0, $jRJb9.default)(object, $8f89947849e919fb$var$lengthStream);\n return +$8f89947849e919fb$var$lengthSum;\n}\n\n});\n\n\n\nparcelRegister(\"52geN\", function(module, exports) {\nparcelRequire(\"9rNoJ\");\nvar $9hcBA = parcelRequire(\"9hcBA\");\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\nfunction $3aa9bc1f4463ff7e$var$graticuleX(y0, y1, dy) {\n var y = (0, $9hcBA.default)(y0, y1 - (0, $kNUN7.epsilon), dy).concat(y1);\n return function(x) {\n return y.map(function(y) {\n return [\n x,\n y\n ];\n });\n };\n}\nfunction $3aa9bc1f4463ff7e$var$graticuleY(x0, x1, dx) {\n var x = (0, $9hcBA.default)(x0, x1 - (0, $kNUN7.epsilon), dx).concat(x1);\n return function(y) {\n return x.map(function(x) {\n return [\n x,\n y\n ];\n });\n };\n}\nfunction $3aa9bc1f4463ff7e$export$2e2bcd8739ae039() {\n var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n function graticule() {\n return {\n type: \"MultiLineString\",\n coordinates: lines()\n };\n }\n function lines() {\n return (0, $9hcBA.default)((0, $kNUN7.ceil)(X0 / DX) * DX, X1, DX).map(X).concat((0, $9hcBA.default)((0, $kNUN7.ceil)(Y0 / DY) * DY, Y1, DY).map(Y)).concat((0, $9hcBA.default)((0, $kNUN7.ceil)(x0 / dx) * dx, x1, dx).filter(function(x) {\n return (0, $kNUN7.abs)(x % DX) > (0, $kNUN7.epsilon);\n }).map(x)).concat((0, $9hcBA.default)((0, $kNUN7.ceil)(y0 / dy) * dy, y1, dy).filter(function(y) {\n return (0, $kNUN7.abs)(y % DY) > (0, $kNUN7.epsilon);\n }).map(y));\n }\n graticule.lines = function() {\n return lines().map(function(coordinates) {\n return {\n type: \"LineString\",\n coordinates: coordinates\n };\n });\n };\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1))\n ]\n };\n };\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [\n [\n X0,\n Y0\n ],\n [\n X1,\n Y1\n ]\n ];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [\n [\n x0,\n y0\n ],\n [\n x1,\n y1\n ]\n ];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [\n DX,\n DY\n ];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [\n dx,\n dy\n ];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = $3aa9bc1f4463ff7e$var$graticuleX(y0, y1, 90);\n y = $3aa9bc1f4463ff7e$var$graticuleY(x0, x1, precision);\n X = $3aa9bc1f4463ff7e$var$graticuleX(Y0, Y1, 90);\n Y = $3aa9bc1f4463ff7e$var$graticuleY(X0, X1, precision);\n return graticule;\n };\n return graticule.extentMajor([\n [\n -180,\n -90 + (0, $kNUN7.epsilon)\n ],\n [\n 180,\n 90 - (0, $kNUN7.epsilon)\n ]\n ]).extentMinor([\n [\n -180,\n -80 - (0, $kNUN7.epsilon)\n ],\n [\n 180,\n 80 + (0, $kNUN7.epsilon)\n ]\n ]);\n}\nfunction $3aa9bc1f4463ff7e$export$b8db4e9403a5b6f1() {\n return $3aa9bc1f4463ff7e$export$2e2bcd8739ae039()();\n}\n\n});\n\nparcelRegister(\"3v7c1\", function(module, exports) {\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\nfunction $28c9d8b73efb28b2$export$2e2bcd8739ae039(a, b) {\n var x0 = a[0] * (0, $kNUN7.radians), y0 = a[1] * (0, $kNUN7.radians), x1 = b[0] * (0, $kNUN7.radians), y1 = b[1] * (0, $kNUN7.radians), cy0 = (0, $kNUN7.cos)(y0), sy0 = (0, $kNUN7.sin)(y0), cy1 = (0, $kNUN7.cos)(y1), sy1 = (0, $kNUN7.sin)(y1), kx0 = cy0 * (0, $kNUN7.cos)(x0), ky0 = cy0 * (0, $kNUN7.sin)(x0), kx1 = cy1 * (0, $kNUN7.cos)(x1), ky1 = cy1 * (0, $kNUN7.sin)(x1), d = 2 * (0, $kNUN7.asin)((0, $kNUN7.sqrt)((0, $kNUN7.haversin)(y1 - y0) + cy0 * cy1 * (0, $kNUN7.haversin)(x1 - x0))), k = (0, $kNUN7.sin)(d);\n var interpolate = d ? function(t) {\n var B = (0, $kNUN7.sin)(t *= d) / k, A = (0, $kNUN7.sin)(d - t) / k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n return [\n (0, $kNUN7.atan2)(y, x) * (0, $kNUN7.degrees),\n (0, $kNUN7.atan2)(z, (0, $kNUN7.sqrt)(x * x + y * y)) * (0, $kNUN7.degrees)\n ];\n } : function() {\n return [\n x0 * (0, $kNUN7.degrees),\n y0 * (0, $kNUN7.degrees)\n ];\n };\n interpolate.distance = d;\n return interpolate;\n}\n\n});\n\nparcelRegister(\"6k2uT\", function(module, exports) {\n\nvar $1XGJc = parcelRequire(\"1XGJc\");\n\nvar $jRJb9 = parcelRequire(\"jRJb9\");\n\nvar $e8M5r = parcelRequire(\"e8M5r\");\n\nvar $2yZKa = parcelRequire(\"2yZKa\");\n\nvar $fT3Kv = parcelRequire(\"fT3Kv\");\n\nvar $dyqRH = parcelRequire(\"dyqRH\");\n\nvar $4XB0S = parcelRequire(\"4XB0S\");\n\nvar $8NKQb = parcelRequire(\"8NKQb\");\nfunction $49a68c4291bdecab$export$2e2bcd8739ae039(projection, context) {\n var pointRadius = 4.5, projectionStream, contextStream;\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n (0, $jRJb9.default)(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n path.area = function(object) {\n (0, $jRJb9.default)(object, projectionStream((0, $e8M5r.default)));\n return (0, $e8M5r.default).result();\n };\n path.measure = function(object) {\n (0, $jRJb9.default)(object, projectionStream((0, $4XB0S.default)));\n return (0, $4XB0S.default).result();\n };\n path.bounds = function(object) {\n (0, $jRJb9.default)(object, projectionStream((0, $2yZKa.default)));\n return (0, $2yZKa.default).result();\n };\n path.centroid = function(object) {\n (0, $jRJb9.default)(object, projectionStream((0, $fT3Kv.default)));\n return (0, $fT3Kv.default).result();\n };\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, $1XGJc.default) : (projection = _).stream, path) : projection;\n };\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new (0, $8NKQb.default)) : new (0, $dyqRH.default)(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n return path.projection(projection).context(context);\n}\n\n});\nparcelRegister(\"1XGJc\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $16dc7209a57bf038$export$2e2bcd8739ae039; });\nfunction $16dc7209a57bf038$export$2e2bcd8739ae039(x) {\n return x;\n}\n\n});\n\nparcelRegister(\"e8M5r\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $a4b71d118c12fc80$export$2e2bcd8739ae039; });\n\nvar $kC5ta = parcelRequire(\"kC5ta\");\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $6cZzT = parcelRequire(\"6cZzT\");\nvar $a4b71d118c12fc80$var$areaSum = (0, $kC5ta.default)(), $a4b71d118c12fc80$var$areaRingSum = (0, $kC5ta.default)(), $a4b71d118c12fc80$var$x00, $a4b71d118c12fc80$var$y00, $a4b71d118c12fc80$var$x0, $a4b71d118c12fc80$var$y0;\nvar $a4b71d118c12fc80$var$areaStream = {\n point: (0, $6cZzT.default),\n lineStart: (0, $6cZzT.default),\n lineEnd: (0, $6cZzT.default),\n polygonStart: function() {\n $a4b71d118c12fc80$var$areaStream.lineStart = $a4b71d118c12fc80$var$areaRingStart;\n $a4b71d118c12fc80$var$areaStream.lineEnd = $a4b71d118c12fc80$var$areaRingEnd;\n },\n polygonEnd: function() {\n $a4b71d118c12fc80$var$areaStream.lineStart = $a4b71d118c12fc80$var$areaStream.lineEnd = $a4b71d118c12fc80$var$areaStream.point = (0, $6cZzT.default);\n $a4b71d118c12fc80$var$areaSum.add((0, $kNUN7.abs)($a4b71d118c12fc80$var$areaRingSum));\n $a4b71d118c12fc80$var$areaRingSum.reset();\n },\n result: function() {\n var area = $a4b71d118c12fc80$var$areaSum / 2;\n $a4b71d118c12fc80$var$areaSum.reset();\n return area;\n }\n};\nfunction $a4b71d118c12fc80$var$areaRingStart() {\n $a4b71d118c12fc80$var$areaStream.point = $a4b71d118c12fc80$var$areaPointFirst;\n}\nfunction $a4b71d118c12fc80$var$areaPointFirst(x, y) {\n $a4b71d118c12fc80$var$areaStream.point = $a4b71d118c12fc80$var$areaPoint;\n $a4b71d118c12fc80$var$x00 = $a4b71d118c12fc80$var$x0 = x, $a4b71d118c12fc80$var$y00 = $a4b71d118c12fc80$var$y0 = y;\n}\nfunction $a4b71d118c12fc80$var$areaPoint(x, y) {\n $a4b71d118c12fc80$var$areaRingSum.add($a4b71d118c12fc80$var$y0 * x - $a4b71d118c12fc80$var$x0 * y);\n $a4b71d118c12fc80$var$x0 = x, $a4b71d118c12fc80$var$y0 = y;\n}\nfunction $a4b71d118c12fc80$var$areaRingEnd() {\n $a4b71d118c12fc80$var$areaPoint($a4b71d118c12fc80$var$x00, $a4b71d118c12fc80$var$y00);\n}\nvar $a4b71d118c12fc80$export$2e2bcd8739ae039 = $a4b71d118c12fc80$var$areaStream;\n\n});\n\nparcelRegister(\"2yZKa\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $1ddea6c5649c8653$export$2e2bcd8739ae039; });\n\nvar $6cZzT = parcelRequire(\"6cZzT\");\nvar $1ddea6c5649c8653$var$x0 = Infinity, $1ddea6c5649c8653$var$y0 = $1ddea6c5649c8653$var$x0, $1ddea6c5649c8653$var$x1 = -$1ddea6c5649c8653$var$x0, $1ddea6c5649c8653$var$y1 = $1ddea6c5649c8653$var$x1;\nvar $1ddea6c5649c8653$var$boundsStream = {\n point: $1ddea6c5649c8653$var$boundsPoint,\n lineStart: (0, $6cZzT.default),\n lineEnd: (0, $6cZzT.default),\n polygonStart: (0, $6cZzT.default),\n polygonEnd: (0, $6cZzT.default),\n result: function() {\n var bounds = [\n [\n $1ddea6c5649c8653$var$x0,\n $1ddea6c5649c8653$var$y0\n ],\n [\n $1ddea6c5649c8653$var$x1,\n $1ddea6c5649c8653$var$y1\n ]\n ];\n $1ddea6c5649c8653$var$x1 = $1ddea6c5649c8653$var$y1 = -($1ddea6c5649c8653$var$y0 = $1ddea6c5649c8653$var$x0 = Infinity);\n return bounds;\n }\n};\nfunction $1ddea6c5649c8653$var$boundsPoint(x, y) {\n if (x < $1ddea6c5649c8653$var$x0) $1ddea6c5649c8653$var$x0 = x;\n if (x > $1ddea6c5649c8653$var$x1) $1ddea6c5649c8653$var$x1 = x;\n if (y < $1ddea6c5649c8653$var$y0) $1ddea6c5649c8653$var$y0 = y;\n if (y > $1ddea6c5649c8653$var$y1) $1ddea6c5649c8653$var$y1 = y;\n}\nvar $1ddea6c5649c8653$export$2e2bcd8739ae039 = $1ddea6c5649c8653$var$boundsStream;\n\n});\n\nparcelRegister(\"fT3Kv\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b90ee695979e5878$export$2e2bcd8739ae039; });\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n// TODO Enforce positive area for exterior, negative area for interior?\nvar $b90ee695979e5878$var$X0 = 0, $b90ee695979e5878$var$Y0 = 0, $b90ee695979e5878$var$Z0 = 0, $b90ee695979e5878$var$X1 = 0, $b90ee695979e5878$var$Y1 = 0, $b90ee695979e5878$var$Z1 = 0, $b90ee695979e5878$var$X2 = 0, $b90ee695979e5878$var$Y2 = 0, $b90ee695979e5878$var$Z2 = 0, $b90ee695979e5878$var$x00, $b90ee695979e5878$var$y00, $b90ee695979e5878$var$x0, $b90ee695979e5878$var$y0;\nvar $b90ee695979e5878$var$centroidStream = {\n point: $b90ee695979e5878$var$centroidPoint,\n lineStart: $b90ee695979e5878$var$centroidLineStart,\n lineEnd: $b90ee695979e5878$var$centroidLineEnd,\n polygonStart: function() {\n $b90ee695979e5878$var$centroidStream.lineStart = $b90ee695979e5878$var$centroidRingStart;\n $b90ee695979e5878$var$centroidStream.lineEnd = $b90ee695979e5878$var$centroidRingEnd;\n },\n polygonEnd: function() {\n $b90ee695979e5878$var$centroidStream.point = $b90ee695979e5878$var$centroidPoint;\n $b90ee695979e5878$var$centroidStream.lineStart = $b90ee695979e5878$var$centroidLineStart;\n $b90ee695979e5878$var$centroidStream.lineEnd = $b90ee695979e5878$var$centroidLineEnd;\n },\n result: function() {\n var centroid = $b90ee695979e5878$var$Z2 ? [\n $b90ee695979e5878$var$X2 / $b90ee695979e5878$var$Z2,\n $b90ee695979e5878$var$Y2 / $b90ee695979e5878$var$Z2\n ] : $b90ee695979e5878$var$Z1 ? [\n $b90ee695979e5878$var$X1 / $b90ee695979e5878$var$Z1,\n $b90ee695979e5878$var$Y1 / $b90ee695979e5878$var$Z1\n ] : $b90ee695979e5878$var$Z0 ? [\n $b90ee695979e5878$var$X0 / $b90ee695979e5878$var$Z0,\n $b90ee695979e5878$var$Y0 / $b90ee695979e5878$var$Z0\n ] : [\n NaN,\n NaN\n ];\n $b90ee695979e5878$var$X0 = $b90ee695979e5878$var$Y0 = $b90ee695979e5878$var$Z0 = $b90ee695979e5878$var$X1 = $b90ee695979e5878$var$Y1 = $b90ee695979e5878$var$Z1 = $b90ee695979e5878$var$X2 = $b90ee695979e5878$var$Y2 = $b90ee695979e5878$var$Z2 = 0;\n return centroid;\n }\n};\nfunction $b90ee695979e5878$var$centroidPoint(x, y) {\n $b90ee695979e5878$var$X0 += x;\n $b90ee695979e5878$var$Y0 += y;\n ++$b90ee695979e5878$var$Z0;\n}\nfunction $b90ee695979e5878$var$centroidLineStart() {\n $b90ee695979e5878$var$centroidStream.point = $b90ee695979e5878$var$centroidPointFirstLine;\n}\nfunction $b90ee695979e5878$var$centroidPointFirstLine(x, y) {\n $b90ee695979e5878$var$centroidStream.point = $b90ee695979e5878$var$centroidPointLine;\n $b90ee695979e5878$var$centroidPoint($b90ee695979e5878$var$x0 = x, $b90ee695979e5878$var$y0 = y);\n}\nfunction $b90ee695979e5878$var$centroidPointLine(x, y) {\n var dx = x - $b90ee695979e5878$var$x0, dy = y - $b90ee695979e5878$var$y0, z = (0, $kNUN7.sqrt)(dx * dx + dy * dy);\n $b90ee695979e5878$var$X1 += z * ($b90ee695979e5878$var$x0 + x) / 2;\n $b90ee695979e5878$var$Y1 += z * ($b90ee695979e5878$var$y0 + y) / 2;\n $b90ee695979e5878$var$Z1 += z;\n $b90ee695979e5878$var$centroidPoint($b90ee695979e5878$var$x0 = x, $b90ee695979e5878$var$y0 = y);\n}\nfunction $b90ee695979e5878$var$centroidLineEnd() {\n $b90ee695979e5878$var$centroidStream.point = $b90ee695979e5878$var$centroidPoint;\n}\nfunction $b90ee695979e5878$var$centroidRingStart() {\n $b90ee695979e5878$var$centroidStream.point = $b90ee695979e5878$var$centroidPointFirstRing;\n}\nfunction $b90ee695979e5878$var$centroidRingEnd() {\n $b90ee695979e5878$var$centroidPointRing($b90ee695979e5878$var$x00, $b90ee695979e5878$var$y00);\n}\nfunction $b90ee695979e5878$var$centroidPointFirstRing(x, y) {\n $b90ee695979e5878$var$centroidStream.point = $b90ee695979e5878$var$centroidPointRing;\n $b90ee695979e5878$var$centroidPoint($b90ee695979e5878$var$x00 = $b90ee695979e5878$var$x0 = x, $b90ee695979e5878$var$y00 = $b90ee695979e5878$var$y0 = y);\n}\nfunction $b90ee695979e5878$var$centroidPointRing(x, y) {\n var dx = x - $b90ee695979e5878$var$x0, dy = y - $b90ee695979e5878$var$y0, z = (0, $kNUN7.sqrt)(dx * dx + dy * dy);\n $b90ee695979e5878$var$X1 += z * ($b90ee695979e5878$var$x0 + x) / 2;\n $b90ee695979e5878$var$Y1 += z * ($b90ee695979e5878$var$y0 + y) / 2;\n $b90ee695979e5878$var$Z1 += z;\n z = $b90ee695979e5878$var$y0 * x - $b90ee695979e5878$var$x0 * y;\n $b90ee695979e5878$var$X2 += z * ($b90ee695979e5878$var$x0 + x);\n $b90ee695979e5878$var$Y2 += z * ($b90ee695979e5878$var$y0 + y);\n $b90ee695979e5878$var$Z2 += z * 3;\n $b90ee695979e5878$var$centroidPoint($b90ee695979e5878$var$x0 = x, $b90ee695979e5878$var$y0 = y);\n}\nvar $b90ee695979e5878$export$2e2bcd8739ae039 = $b90ee695979e5878$var$centroidStream;\n\n});\n\nparcelRegister(\"dyqRH\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9de34a2fbba8059e$export$2e2bcd8739ae039; });\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $6cZzT = parcelRequire(\"6cZzT\");\nfunction $9de34a2fbba8059e$export$2e2bcd8739ae039(context) {\n this._context = context;\n}\n$9de34a2fbba8059e$export$2e2bcd8739ae039.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch(this._point){\n case 0:\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n case 1:\n this._context.lineTo(x, y);\n break;\n default:\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, (0, $kNUN7.tau));\n break;\n }\n },\n result: (0, $6cZzT.default)\n};\n\n});\n\nparcelRegister(\"4XB0S\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $39c9622086d25e6b$export$2e2bcd8739ae039; });\n\nvar $kC5ta = parcelRequire(\"kC5ta\");\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $6cZzT = parcelRequire(\"6cZzT\");\nvar $39c9622086d25e6b$var$lengthSum = (0, $kC5ta.default)(), $39c9622086d25e6b$var$lengthRing, $39c9622086d25e6b$var$x00, $39c9622086d25e6b$var$y00, $39c9622086d25e6b$var$x0, $39c9622086d25e6b$var$y0;\nvar $39c9622086d25e6b$var$lengthStream = {\n point: (0, $6cZzT.default),\n lineStart: function() {\n $39c9622086d25e6b$var$lengthStream.point = $39c9622086d25e6b$var$lengthPointFirst;\n },\n lineEnd: function() {\n if ($39c9622086d25e6b$var$lengthRing) $39c9622086d25e6b$var$lengthPoint($39c9622086d25e6b$var$x00, $39c9622086d25e6b$var$y00);\n $39c9622086d25e6b$var$lengthStream.point = (0, $6cZzT.default);\n },\n polygonStart: function() {\n $39c9622086d25e6b$var$lengthRing = true;\n },\n polygonEnd: function() {\n $39c9622086d25e6b$var$lengthRing = null;\n },\n result: function() {\n var length = +$39c9622086d25e6b$var$lengthSum;\n $39c9622086d25e6b$var$lengthSum.reset();\n return length;\n }\n};\nfunction $39c9622086d25e6b$var$lengthPointFirst(x, y) {\n $39c9622086d25e6b$var$lengthStream.point = $39c9622086d25e6b$var$lengthPoint;\n $39c9622086d25e6b$var$x00 = $39c9622086d25e6b$var$x0 = x, $39c9622086d25e6b$var$y00 = $39c9622086d25e6b$var$y0 = y;\n}\nfunction $39c9622086d25e6b$var$lengthPoint(x, y) {\n $39c9622086d25e6b$var$x0 -= x, $39c9622086d25e6b$var$y0 -= y;\n $39c9622086d25e6b$var$lengthSum.add((0, $kNUN7.sqrt)($39c9622086d25e6b$var$x0 * $39c9622086d25e6b$var$x0 + $39c9622086d25e6b$var$y0 * $39c9622086d25e6b$var$y0));\n $39c9622086d25e6b$var$x0 = x, $39c9622086d25e6b$var$y0 = y;\n}\nvar $39c9622086d25e6b$export$2e2bcd8739ae039 = $39c9622086d25e6b$var$lengthStream;\n\n});\n\nparcelRegister(\"8NKQb\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $66873be98112e204$export$2e2bcd8739ae039; });\nfunction $66873be98112e204$export$2e2bcd8739ae039() {\n this._string = [];\n}\n$66873be98112e204$export$2e2bcd8739ae039.prototype = {\n _radius: 4.5,\n _circle: $66873be98112e204$var$circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch(this._point){\n case 0:\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n case 1:\n this._string.push(\"L\", x, \",\", y);\n break;\n default:\n if (this._circle == null) this._circle = $66873be98112e204$var$circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else return null;\n }\n};\nfunction $66873be98112e204$var$circle(radius) {\n return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n}\n\n});\n\n\nparcelRegister(\"hsQTR\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $cb6e16006ca41d13$export$2e2bcd8739ae039; });\n\nvar $hFcZE = parcelRequire(\"hFcZE\");\nfunction $cb6e16006ca41d13$export$2e2bcd8739ae039() {\n return (0, $hFcZE.default)().parallels([\n 29.5,\n 45.5\n ]).scale(1070).translate([\n 480,\n 250\n ]).rotate([\n 96,\n 0\n ]).center([\n -0.6,\n 38.7\n ]);\n}\n\n});\nparcelRegister(\"hFcZE\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $cdc05832f650b5f5$export$2e2bcd8739ae039; });\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $lrO5L = parcelRequire(\"lrO5L\");\n\nvar $2GFZa = parcelRequire(\"2GFZa\");\nfunction $cdc05832f650b5f5$export$75409dad1c406288(y0, y1) {\n var sy0 = (0, $kNUN7.sin)(y0), n = (sy0 + (0, $kNUN7.sin)(y1)) / 2;\n // Are the parallels symmetrical around the Equator?\n if ((0, $kNUN7.abs)(n) < (0, $kNUN7.epsilon)) return (0, $2GFZa.cylindricalEqualAreaRaw)(y0);\n var c = 1 + sy0 * (2 * n - sy0), r0 = (0, $kNUN7.sqrt)(c) / n;\n function project(x, y) {\n var r = (0, $kNUN7.sqrt)(c - 2 * n * (0, $kNUN7.sin)(y)) / n;\n return [\n r * (0, $kNUN7.sin)(x *= n),\n r0 - r * (0, $kNUN7.cos)(x)\n ];\n }\n project.invert = function(x, y) {\n var r0y = r0 - y;\n return [\n (0, $kNUN7.atan2)(x, (0, $kNUN7.abs)(r0y)) / n * (0, $kNUN7.sign)(r0y),\n (0, $kNUN7.asin)((c - (x * x + r0y * r0y) * n * n) / (2 * n))\n ];\n };\n return project;\n}\nfunction $cdc05832f650b5f5$export$2e2bcd8739ae039() {\n return (0, $lrO5L.conicProjection)($cdc05832f650b5f5$export$75409dad1c406288).scale(155.424).center([\n 0,\n 33.6442\n ]);\n}\n\n});\nparcelRegister(\"lrO5L\", function(module, exports) {\n\n$parcel$export(module.exports, \"conicProjection\", function () { return $f9d2f9cc685bec3e$export$228272587c4d24d8; });\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $lsk55 = parcelRequire(\"lsk55\");\nfunction $f9d2f9cc685bec3e$export$228272587c4d24d8(projectAt) {\n var phi0 = 0, phi1 = (0, $kNUN7.pi) / 3, m = (0, $lsk55.projectionMutator)(projectAt), p = m(phi0, phi1);\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * (0, $kNUN7.radians), phi1 = _[1] * (0, $kNUN7.radians)) : [\n phi0 * (0, $kNUN7.degrees),\n phi1 * (0, $kNUN7.degrees)\n ];\n };\n return p;\n}\n\n});\nparcelRegister(\"lsk55\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $f9ebca31f374881f$export$2e2bcd8739ae039; });\n$parcel$export(module.exports, \"projectionMutator\", function () { return $f9ebca31f374881f$export$155d5a6fa6fddeba; });\n\nvar $fmMcy = parcelRequire(\"fmMcy\");\n\nvar $9Muut = parcelRequire(\"9Muut\");\n\nvar $83woy = parcelRequire(\"83woy\");\n\nvar $k5uhq = parcelRequire(\"k5uhq\");\n\nvar $1XGJc = parcelRequire(\"1XGJc\");\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $hRYfY = parcelRequire(\"hRYfY\");\n\nvar $eNZUM = parcelRequire(\"eNZUM\");\n\nvar $aDqKD = parcelRequire(\"aDqKD\");\n\nvar $8GI4N = parcelRequire(\"8GI4N\");\nvar $f9ebca31f374881f$var$transformRadians = (0, $eNZUM.transformer)({\n point: function(x, y) {\n this.stream.point(x * (0, $kNUN7.radians), y * (0, $kNUN7.radians));\n }\n});\nfunction $f9ebca31f374881f$export$2e2bcd8739ae039(project) {\n return $f9ebca31f374881f$export$155d5a6fa6fddeba(function() {\n return project;\n })();\n}\nfunction $f9ebca31f374881f$export$155d5a6fa6fddeba(projectAt) {\n var project, k = 150, x = 480, y = 250, dx, dy, lambda = 0, phi = 0, deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, projectRotate, theta = null, preclip = (0, $fmMcy.default), x0 = null, y0, x1, y1, postclip = (0, $1XGJc.default), delta2 = 0.5, projectResample = (0, $8GI4N.default)(projectTransform, delta2), cache, cacheStream;\n function projection(point) {\n point = projectRotate(point[0] * (0, $kNUN7.radians), point[1] * (0, $kNUN7.radians));\n return [\n point[0] * k + dx,\n dy - point[1] * k\n ];\n }\n function invert(point) {\n point = projectRotate.invert((point[0] - dx) / k, (dy - point[1]) / k);\n return point && [\n point[0] * (0, $kNUN7.degrees),\n point[1] * (0, $kNUN7.degrees)\n ];\n }\n function projectTransform(x, y) {\n return x = project(x, y), [\n x[0] * k + dx,\n dy - x[1] * k\n ];\n }\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = $f9ebca31f374881f$var$transformRadians(preclip(rotate, projectResample(postclip(cacheStream = stream))));\n };\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? (0, $9Muut.default)(theta = _ * (0, $kNUN7.radians), 6 * (0, $kNUN7.radians)) : (theta = null, $fmMcy.default), reset()) : theta * (0, $kNUN7.degrees);\n };\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, $1XGJc.default) : (0, $83woy.clipExtent)(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [\n [\n x0,\n y0\n ],\n [\n x1,\n y1\n ]\n ];\n };\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [\n x,\n y\n ];\n };\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * (0, $kNUN7.radians), phi = _[1] % 360 * (0, $kNUN7.radians), recenter()) : [\n lambda * (0, $kNUN7.degrees),\n phi * (0, $kNUN7.degrees)\n ];\n };\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * (0, $kNUN7.radians), deltaPhi = _[1] % 360 * (0, $kNUN7.radians), deltaGamma = _.length > 2 ? _[2] % 360 * (0, $kNUN7.radians) : 0, recenter()) : [\n deltaLambda * (0, $kNUN7.degrees),\n deltaPhi * (0, $kNUN7.degrees),\n deltaGamma * (0, $kNUN7.degrees)\n ];\n };\n projection.precision = function(_) {\n return arguments.length ? (projectResample = (0, $8GI4N.default)(projectTransform, delta2 = _ * _), reset()) : (0, $kNUN7.sqrt)(delta2);\n };\n projection.fitExtent = function(extent, object) {\n return (0, $aDqKD.fitExtent)(projection, extent, object);\n };\n projection.fitSize = function(size, object) {\n return (0, $aDqKD.fitSize)(projection, size, object);\n };\n function recenter() {\n projectRotate = (0, $k5uhq.default)(rotate = (0, $hRYfY.rotateRadians)(deltaLambda, deltaPhi, deltaGamma), project);\n var center = project(lambda, phi);\n dx = x - center[0] * k;\n dy = y + center[1] * k;\n return reset();\n }\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n\n});\nparcelRegister(\"fmMcy\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b2fe4ce63b5b5d2a$export$2e2bcd8739ae039; });\n\nvar $gqdzD = parcelRequire(\"gqdzD\");\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\nvar $b2fe4ce63b5b5d2a$export$2e2bcd8739ae039 = (0, $gqdzD.default)(function() {\n return true;\n}, $b2fe4ce63b5b5d2a$var$clipAntimeridianLine, $b2fe4ce63b5b5d2a$var$clipAntimeridianInterpolate, [\n -(0, $kNUN7.pi),\n -(0, $kNUN7.halfPi)\n]);\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction $b2fe4ce63b5b5d2a$var$clipAntimeridianLine(stream) {\n var lambda0 = NaN, phi0 = NaN, sign0 = NaN, clean; // no intersections\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? (0, $kNUN7.pi) : -(0, $kNUN7.pi), delta = (0, $kNUN7.abs)(lambda1 - lambda0);\n if ((0, $kNUN7.abs)(delta - (0, $kNUN7.pi)) < (0, $kNUN7.epsilon)) {\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? (0, $kNUN7.halfPi) : -(0, $kNUN7.halfPi));\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= (0, $kNUN7.pi)) {\n if ((0, $kNUN7.abs)(lambda0 - sign0) < (0, $kNUN7.epsilon)) lambda0 -= sign0 * (0, $kNUN7.epsilon); // handle degeneracies\n if ((0, $kNUN7.abs)(lambda1 - sign1) < (0, $kNUN7.epsilon)) lambda1 -= sign1 * (0, $kNUN7.epsilon);\n phi0 = $b2fe4ce63b5b5d2a$var$clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\nfunction $b2fe4ce63b5b5d2a$var$clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0, cosPhi1, sinLambda0Lambda1 = (0, $kNUN7.sin)(lambda0 - lambda1);\n return (0, $kNUN7.abs)(sinLambda0Lambda1) > (0, $kNUN7.epsilon) ? (0, $kNUN7.atan)(((0, $kNUN7.sin)(phi0) * (cosPhi1 = (0, $kNUN7.cos)(phi1)) * (0, $kNUN7.sin)(lambda1) - (0, $kNUN7.sin)(phi1) * (cosPhi0 = (0, $kNUN7.cos)(phi0)) * (0, $kNUN7.sin)(lambda0)) / (cosPhi0 * cosPhi1 * sinLambda0Lambda1)) : (phi0 + phi1) / 2;\n}\nfunction $b2fe4ce63b5b5d2a$var$clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * (0, $kNUN7.halfPi);\n stream.point(-(0, $kNUN7.pi), phi);\n stream.point(0, phi);\n stream.point((0, $kNUN7.pi), phi);\n stream.point((0, $kNUN7.pi), 0);\n stream.point((0, $kNUN7.pi), -phi);\n stream.point(0, -phi);\n stream.point(-(0, $kNUN7.pi), -phi);\n stream.point(-(0, $kNUN7.pi), 0);\n stream.point(-(0, $kNUN7.pi), phi);\n } else if ((0, $kNUN7.abs)(from[0] - to[0]) > (0, $kNUN7.epsilon)) {\n var lambda = from[0] < to[0] ? (0, $kNUN7.pi) : -(0, $kNUN7.pi);\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else stream.point(to[0], to[1]);\n}\n\n});\nparcelRegister(\"gqdzD\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $bf499a80d612b792$export$2e2bcd8739ae039; });\n\nvar $NR8uS = parcelRequire(\"NR8uS\");\n\nvar $lvgUr = parcelRequire(\"lvgUr\");\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $fcrWr = parcelRequire(\"fcrWr\");\nparcelRequire(\"9rNoJ\");\nvar $2W2qM = parcelRequire(\"2W2qM\");\nfunction $bf499a80d612b792$export$2e2bcd8739ae039(pointVisible, clipLine, interpolate, start) {\n return function(rotate, sink) {\n var line = clipLine(sink), rotatedStart = rotate.invert(start[0], start[1]), ringBuffer = (0, $NR8uS.default)(), ringSink = clipLine(ringBuffer), polygonStarted = false, polygon, segments, ring;\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = (0, $2W2qM.default)(segments);\n var startInside = (0, $fcrWr.default)(polygon, rotatedStart);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n (0, $lvgUr.default)(segments, $bf499a80d612b792$var$compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n function point(lambda, phi) {\n var point = rotate(lambda, phi);\n if (pointVisible(lambda = point[0], phi = point[1])) sink.point(lambda, phi);\n }\n function pointLine(lambda, phi) {\n var point = rotate(lambda, phi);\n line.point(point[0], point[1]);\n }\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n function pointRing(lambda, phi) {\n ring.push([\n lambda,\n phi\n ]);\n var point = rotate(lambda, phi);\n ringSink.point(point[0], point[1]);\n }\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n var clean = ringSink.clean(), ringSegments = ringBuffer.result(), i, n = ringSegments.length, m, segment, point;\n ring.pop();\n polygon.push(ring);\n ring = null;\n if (!n) return;\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for(i = 0; i < m; ++i)sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n segments.push(ringSegments.filter($bf499a80d612b792$var$validSegment));\n }\n return clip;\n };\n}\nfunction $bf499a80d612b792$var$validSegment(segment) {\n return segment.length > 1;\n}\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction $bf499a80d612b792$var$compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - (0, $kNUN7.halfPi) - (0, $kNUN7.epsilon) : (0, $kNUN7.halfPi) - a[1]) - ((b = b.x)[0] < 0 ? b[1] - (0, $kNUN7.halfPi) - (0, $kNUN7.epsilon) : (0, $kNUN7.halfPi) - b[1]);\n}\n\n});\n\n\nparcelRegister(\"9Muut\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $71f03f8b67c08e51$export$2e2bcd8739ae039; });\n\nvar $8mHes = parcelRequire(\"8mHes\");\n\nvar $dWoD6 = parcelRequire(\"dWoD6\");\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $eIArd = parcelRequire(\"eIArd\");\n\nvar $gqdzD = parcelRequire(\"gqdzD\");\nfunction $71f03f8b67c08e51$export$2e2bcd8739ae039(radius, delta) {\n var cr = (0, $kNUN7.cos)(radius), smallRadius = cr > 0, notHemisphere = (0, $kNUN7.abs)(cr) > (0, $kNUN7.epsilon); // TODO optimise for this common case\n function interpolate(from, to, direction, stream) {\n (0, $dWoD6.circleStream)(stream, radius, delta, direction, from, to);\n }\n function visible(lambda, phi) {\n return (0, $kNUN7.cos)(lambda) * (0, $kNUN7.cos)(phi) > cr;\n }\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, c0, v0, v00, clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [\n lambda,\n phi\n ], point2, v = visible(lambda, phi), c = smallRadius ? v ? 0 : code(lambda, phi) : v ? code(lambda + (lambda < 0 ? (0, $kNUN7.pi) : -(0, $kNUN7.pi)), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n // Handle degeneracies.\n // TODO ignore if not clipping polygons.\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || (0, $eIArd.default)(point0, point2) || (0, $eIArd.default)(point1, point2)) {\n point1[0] += (0, $kNUN7.epsilon);\n point1[1] += (0, $kNUN7.epsilon);\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1]);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !(0, $eIArd.default)(point0, point1))) stream.point(point1[0], point1[1]);\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | (v00 && v0) << 1;\n }\n };\n }\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = (0, $8mHes.cartesian)(a), pb = (0, $8mHes.cartesian)(b);\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [\n 1,\n 0,\n 0\n ], n2 = (0, $8mHes.cartesianCross)(pa, pb), n2n2 = (0, $8mHes.cartesianDot)(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n // Two polar points.\n if (!determinant) return !two && a;\n var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = (0, $8mHes.cartesianCross)(n1, n2), A = (0, $8mHes.cartesianScale)(n1, c1), B = (0, $8mHes.cartesianScale)(n2, c2);\n (0, $8mHes.cartesianAddInPlace)(A, B);\n // Solve |p(t)|^2 = 1.\n var u = n1xn2, w = (0, $8mHes.cartesianDot)(A, u), uu = (0, $8mHes.cartesianDot)(u, u), t2 = w * w - uu * ((0, $8mHes.cartesianDot)(A, A) - 1);\n if (t2 < 0) return;\n var t = (0, $kNUN7.sqrt)(t2), q = (0, $8mHes.cartesianScale)(u, (-w - t) / uu);\n (0, $8mHes.cartesianAddInPlace)(q, A);\n q = (0, $8mHes.spherical)(q);\n if (!two) return q;\n // Two intersection points.\n var lambda0 = a[0], lambda1 = b[0], phi0 = a[1], phi1 = b[1], z;\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n var delta = lambda1 - lambda0, polar = (0, $kNUN7.abs)(delta - (0, $kNUN7.pi)) < (0, $kNUN7.epsilon), meridian = polar || delta < (0, $kNUN7.epsilon);\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n // Check that the first point is between a and b.\n if (meridian ? polar ? phi0 + phi1 > 0 ^ q[1] < ((0, $kNUN7.abs)(q[0] - lambda0) < (0, $kNUN7.epsilon) ? phi0 : phi1) : phi0 <= q[1] && q[1] <= phi1 : delta > (0, $kNUN7.pi) ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = (0, $8mHes.cartesianScale)(u, (-w + t) / uu);\n (0, $8mHes.cartesianAddInPlace)(q1, A);\n return [\n q,\n (0, $8mHes.spherical)(q1)\n ];\n }\n }\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : (0, $kNUN7.pi) - radius, code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n return (0, $gqdzD.default)(visible, clipLine, interpolate, smallRadius ? [\n 0,\n -radius\n ] : [\n -(0, $kNUN7.pi),\n radius - (0, $kNUN7.pi)\n ]);\n}\n\n});\n\nparcelRegister(\"eNZUM\", function(module, exports) {\n\n$parcel$export(module.exports, \"transformer\", function () { return $ac75ab434ac8c5d7$export$6b468dcfb64c653c; });\nfunction $ac75ab434ac8c5d7$export$2e2bcd8739ae039(methods) {\n return {\n stream: $ac75ab434ac8c5d7$export$6b468dcfb64c653c(methods)\n };\n}\nfunction $ac75ab434ac8c5d7$export$6b468dcfb64c653c(methods) {\n return function(stream) {\n var s = new $ac75ab434ac8c5d7$var$TransformStream;\n for(var key in methods)s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\nfunction $ac75ab434ac8c5d7$var$TransformStream() {}\n$ac75ab434ac8c5d7$var$TransformStream.prototype = {\n constructor: $ac75ab434ac8c5d7$var$TransformStream,\n point: function(x, y) {\n this.stream.point(x, y);\n },\n sphere: function() {\n this.stream.sphere();\n },\n lineStart: function() {\n this.stream.lineStart();\n },\n lineEnd: function() {\n this.stream.lineEnd();\n },\n polygonStart: function() {\n this.stream.polygonStart();\n },\n polygonEnd: function() {\n this.stream.polygonEnd();\n }\n};\n\n});\n\nparcelRegister(\"aDqKD\", function(module, exports) {\n\n$parcel$export(module.exports, \"fitExtent\", function () { return $7be24c22a7e4806f$export$e450184041869e7f; });\n$parcel$export(module.exports, \"fitSize\", function () { return $7be24c22a7e4806f$export$33a367fa1728c3ba; });\n\nvar $jRJb9 = parcelRequire(\"jRJb9\");\n\nvar $2yZKa = parcelRequire(\"2yZKa\");\nfunction $7be24c22a7e4806f$export$e450184041869e7f(projection, extent, object) {\n var w = extent[1][0] - extent[0][0], h = extent[1][1] - extent[0][1], clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([\n 0,\n 0\n ]);\n if (clip != null) projection.clipExtent(null);\n (0, $jRJb9.default)(object, projection.stream((0, $2yZKa.default)));\n var b = (0, $2yZKa.default).result(), k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])), x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2, y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n if (clip != null) projection.clipExtent(clip);\n return projection.scale(k * 150).translate([\n x,\n y\n ]);\n}\nfunction $7be24c22a7e4806f$export$33a367fa1728c3ba(projection, size, object) {\n return $7be24c22a7e4806f$export$e450184041869e7f(projection, [\n [\n 0,\n 0\n ],\n size\n ], object);\n}\n\n});\n\nparcelRegister(\"8GI4N\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $65346fa279e22248$export$2e2bcd8739ae039; });\n\nvar $8mHes = parcelRequire(\"8mHes\");\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $eNZUM = parcelRequire(\"eNZUM\");\nvar $65346fa279e22248$var$maxDepth = 16, $65346fa279e22248$var$cosMinDistance = (0, $kNUN7.cos)(30 * (0, $kNUN7.radians)); // cos(minimum angular distance)\nfunction $65346fa279e22248$export$2e2bcd8739ae039(project, delta2) {\n return +delta2 ? $65346fa279e22248$var$resample(project, delta2) : $65346fa279e22248$var$resampleNone(project);\n}\nfunction $65346fa279e22248$var$resampleNone(project) {\n return (0, $eNZUM.transformer)({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\nfunction $65346fa279e22248$var$resample(project, delta2) {\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = (0, $kNUN7.sqrt)(a * a + b * b + c * c), phi2 = (0, $kNUN7.asin)(c /= m), lambda2 = (0, $kNUN7.abs)((0, $kNUN7.abs)(c) - 1) < (0, $kNUN7.epsilon) || (0, $kNUN7.abs)(lambda0 - lambda1) < (0, $kNUN7.epsilon) ? (lambda0 + lambda1) / 2 : (0, $kNUN7.atan2)(b, a), p = project(lambda2, phi2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || (0, $kNUN7.abs)((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < $65346fa279e22248$var$cosMinDistance) {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, lambda0, x0, y0, a0, b0, c0; // previous point\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.polygonStart();\n resampleStream.lineStart = ringStart;\n },\n polygonEnd: function() {\n stream.polygonEnd();\n resampleStream.lineStart = lineStart;\n }\n };\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n function linePoint(lambda, phi) {\n var c = (0, $8mHes.cartesian)([\n lambda,\n phi\n ]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], $65346fa279e22248$var$maxDepth, stream);\n stream.point(x0, y0);\n }\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, $65346fa279e22248$var$maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n return resampleStream;\n };\n}\n\n});\n\n\n\nparcelRegister(\"2GFZa\", function(module, exports) {\n\n$parcel$export(module.exports, \"cylindricalEqualAreaRaw\", function () { return $1f50127aba24e26a$export$ae68c6db8b65046a; });\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\nfunction $1f50127aba24e26a$export$ae68c6db8b65046a(phi0) {\n var cosPhi0 = (0, $kNUN7.cos)(phi0);\n function forward(lambda, phi) {\n return [\n lambda * cosPhi0,\n (0, $kNUN7.sin)(phi) / cosPhi0\n ];\n }\n forward.invert = function(x, y) {\n return [\n x / cosPhi0,\n (0, $kNUN7.asin)(y * cosPhi0)\n ];\n };\n return forward;\n}\n\n});\n\n\n\nparcelRegister(\"jogIs\", function(module, exports) {\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $hsQTR = parcelRequire(\"hsQTR\");\n\nvar $hFcZE = parcelRequire(\"hFcZE\");\n\nvar $aDqKD = parcelRequire(\"aDqKD\");\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction $e1dd39b145bd3daa$var$multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) {\n var i = -1;\n while(++i < n)streams[i].point(x, y);\n },\n sphere: function() {\n var i = -1;\n while(++i < n)streams[i].sphere();\n },\n lineStart: function() {\n var i = -1;\n while(++i < n)streams[i].lineStart();\n },\n lineEnd: function() {\n var i = -1;\n while(++i < n)streams[i].lineEnd();\n },\n polygonStart: function() {\n var i = -1;\n while(++i < n)streams[i].polygonStart();\n },\n polygonEnd: function() {\n var i = -1;\n while(++i < n)streams[i].polygonEnd();\n }\n };\n}\nfunction $e1dd39b145bd3daa$export$2e2bcd8739ae039() {\n var cache, cacheStream, lower48 = (0, $hsQTR.default)(), lower48Point, alaska = (0, $hFcZE.default)().rotate([\n 154,\n 0\n ]).center([\n -2,\n 58.5\n ]).parallels([\n 55,\n 65\n ]), alaskaPoint, hawaii = (0, $hFcZE.default)().rotate([\n 157,\n 0\n ]).center([\n -3,\n 19.9\n ]).parallels([\n 8,\n 18\n ]), hawaiiPoint, point, pointStream = {\n point: function(x, y) {\n point = [\n x,\n y\n ];\n }\n };\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null, (lower48Point.point(x, y), point) || (alaskaPoint.point(x, y), point) || (hawaiiPoint.point(x, y), point);\n }\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii : lower48).invert(coordinates);\n };\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = $e1dd39b145bd3daa$var$multiplex([\n lower48.stream(cacheStream = stream),\n alaska.stream(stream),\n hawaii.stream(stream)\n ]);\n };\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n lower48Point = lower48.translate(_).clipExtent([\n [\n x - 0.455 * k,\n y - 0.238 * k\n ],\n [\n x + 0.455 * k,\n y + 0.238 * k\n ]\n ]).stream(pointStream);\n alaskaPoint = alaska.translate([\n x - 0.307 * k,\n y + 0.201 * k\n ]).clipExtent([\n [\n x - 0.425 * k + (0, $kNUN7.epsilon),\n y + 0.120 * k + (0, $kNUN7.epsilon)\n ],\n [\n x - 0.214 * k - (0, $kNUN7.epsilon),\n y + 0.234 * k - (0, $kNUN7.epsilon)\n ]\n ]).stream(pointStream);\n hawaiiPoint = hawaii.translate([\n x - 0.205 * k,\n y + 0.212 * k\n ]).clipExtent([\n [\n x - 0.214 * k + (0, $kNUN7.epsilon),\n y + 0.166 * k + (0, $kNUN7.epsilon)\n ],\n [\n x - 0.115 * k - (0, $kNUN7.epsilon),\n y + 0.234 * k - (0, $kNUN7.epsilon)\n ]\n ]).stream(pointStream);\n return reset();\n };\n albersUsa.fitExtent = function(extent, object) {\n return (0, $aDqKD.fitExtent)(albersUsa, extent, object);\n };\n albersUsa.fitSize = function(size, object) {\n return (0, $aDqKD.fitSize)(albersUsa, size, object);\n };\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n return albersUsa.scale(1070);\n}\n\n});\n\nparcelRegister(\"bzumx\", function(module, exports) {\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $eoCMd = parcelRequire(\"eoCMd\");\n\nvar $lsk55 = parcelRequire(\"lsk55\");\nvar $86ca83f1da8ae91d$export$5e11f94fc4a8d2c6 = (0, $eoCMd.azimuthalRaw)(function(cxcy) {\n return (0, $kNUN7.sqrt)(2 / (1 + cxcy));\n});\n$86ca83f1da8ae91d$export$5e11f94fc4a8d2c6.invert = (0, $eoCMd.azimuthalInvert)(function(z) {\n return 2 * (0, $kNUN7.asin)(z / 2);\n});\nfunction $86ca83f1da8ae91d$export$2e2bcd8739ae039() {\n return (0, $lsk55.default)($86ca83f1da8ae91d$export$5e11f94fc4a8d2c6).scale(124.75).clipAngle(179.999);\n}\n\n});\nparcelRegister(\"eoCMd\", function(module, exports) {\n\n$parcel$export(module.exports, \"azimuthalRaw\", function () { return $a7b162d52f6c1bca$export$f1211ac1bdb0796; });\n$parcel$export(module.exports, \"azimuthalInvert\", function () { return $a7b162d52f6c1bca$export$3cee429f13e44eac; });\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\nfunction $a7b162d52f6c1bca$export$f1211ac1bdb0796(scale) {\n return function(x, y) {\n var cx = (0, $kNUN7.cos)(x), cy = (0, $kNUN7.cos)(y), k = scale(cx * cy);\n return [\n k * cy * (0, $kNUN7.sin)(x),\n k * (0, $kNUN7.sin)(y)\n ];\n };\n}\nfunction $a7b162d52f6c1bca$export$3cee429f13e44eac(angle) {\n return function(x, y) {\n var z = (0, $kNUN7.sqrt)(x * x + y * y), c = angle(z), sc = (0, $kNUN7.sin)(c), cc = (0, $kNUN7.cos)(c);\n return [\n (0, $kNUN7.atan2)(x * sc, z * cc),\n (0, $kNUN7.asin)(z && y * sc / z)\n ];\n };\n}\n\n});\n\n\nparcelRegister(\"1Vrzy\", function(module, exports) {\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $eoCMd = parcelRequire(\"eoCMd\");\n\nvar $lsk55 = parcelRequire(\"lsk55\");\nvar $167080a6c21f0a54$export$b94a4d6aa3dd25c = (0, $eoCMd.azimuthalRaw)(function(c) {\n return (c = (0, $kNUN7.acos)(c)) && c / (0, $kNUN7.sin)(c);\n});\n$167080a6c21f0a54$export$b94a4d6aa3dd25c.invert = (0, $eoCMd.azimuthalInvert)(function(z) {\n return z;\n});\nfunction $167080a6c21f0a54$export$2e2bcd8739ae039() {\n return (0, $lsk55.default)($167080a6c21f0a54$export$b94a4d6aa3dd25c).scale(79.4188).clipAngle(179.999);\n}\n\n});\n\nparcelRegister(\"8ZZJ4\", function(module, exports) {\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $lrO5L = parcelRequire(\"lrO5L\");\n\nvar $6ckYb = parcelRequire(\"6ckYb\");\nfunction $68d3e6b7326440e6$var$tany(y) {\n return (0, $kNUN7.tan)(((0, $kNUN7.halfPi) + y) / 2);\n}\nfunction $68d3e6b7326440e6$export$2b1bc913962ed170(y0, y1) {\n var cy0 = (0, $kNUN7.cos)(y0), n = y0 === y1 ? (0, $kNUN7.sin)(y0) : (0, $kNUN7.log)(cy0 / (0, $kNUN7.cos)(y1)) / (0, $kNUN7.log)($68d3e6b7326440e6$var$tany(y1) / $68d3e6b7326440e6$var$tany(y0)), f = cy0 * (0, $kNUN7.pow)($68d3e6b7326440e6$var$tany(y0), n) / n;\n if (!n) return 0, $6ckYb.mercatorRaw;\n function project(x, y) {\n if (f > 0) {\n if (y < -(0, $kNUN7.halfPi) + (0, $kNUN7.epsilon)) y = -(0, $kNUN7.halfPi) + (0, $kNUN7.epsilon);\n } else if (y > (0, $kNUN7.halfPi) - (0, $kNUN7.epsilon)) y = (0, $kNUN7.halfPi) - (0, $kNUN7.epsilon);\n var r = f / (0, $kNUN7.pow)($68d3e6b7326440e6$var$tany(y), n);\n return [\n r * (0, $kNUN7.sin)(n * x),\n f - r * (0, $kNUN7.cos)(n * x)\n ];\n }\n project.invert = function(x, y) {\n var fy = f - y, r = (0, $kNUN7.sign)(n) * (0, $kNUN7.sqrt)(x * x + fy * fy);\n return [\n (0, $kNUN7.atan2)(x, (0, $kNUN7.abs)(fy)) / n * (0, $kNUN7.sign)(fy),\n 2 * (0, $kNUN7.atan)((0, $kNUN7.pow)(f / r, 1 / n)) - (0, $kNUN7.halfPi)\n ];\n };\n return project;\n}\nfunction $68d3e6b7326440e6$export$2e2bcd8739ae039() {\n return (0, $lrO5L.conicProjection)($68d3e6b7326440e6$export$2b1bc913962ed170).scale(109.5).parallels([\n 30,\n 30\n ]);\n}\n\n});\nparcelRegister(\"6ckYb\", function(module, exports) {\n\n$parcel$export(module.exports, \"mercatorRaw\", function () { return $483421377f1a6961$export$94ff8a57e9b91cc3; });\n$parcel$export(module.exports, \"mercatorProjection\", function () { return $483421377f1a6961$export$44b9b66a01f2127b; });\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $hRYfY = parcelRequire(\"hRYfY\");\n\nvar $lsk55 = parcelRequire(\"lsk55\");\nfunction $483421377f1a6961$export$94ff8a57e9b91cc3(lambda, phi) {\n return [\n lambda,\n (0, $kNUN7.log)((0, $kNUN7.tan)(((0, $kNUN7.halfPi) + phi) / 2))\n ];\n}\n$483421377f1a6961$export$94ff8a57e9b91cc3.invert = function(x, y) {\n return [\n x,\n 2 * (0, $kNUN7.atan)((0, $kNUN7.exp)(y)) - (0, $kNUN7.halfPi)\n ];\n};\nfunction $483421377f1a6961$export$2e2bcd8739ae039() {\n return $483421377f1a6961$export$44b9b66a01f2127b($483421377f1a6961$export$94ff8a57e9b91cc3).scale(961 / (0, $kNUN7.tau));\n}\nfunction $483421377f1a6961$export$44b9b66a01f2127b(project) {\n var m = (0, $lsk55.default)(project), center = m.center, scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, x0 = null, y0, x1, y1; // clip extent\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n m.clipExtent = function(_) {\n return arguments.length ? (_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reclip()) : x0 == null ? null : [\n [\n x0,\n y0\n ],\n [\n x1,\n y1\n ]\n ];\n };\n function reclip() {\n var k = (0, $kNUN7.pi) * scale(), t = m((0, $hRYfY.default)(m.rotate()).invert([\n 0,\n 0\n ]));\n return clipExtent(x0 == null ? [\n [\n t[0] - k,\n t[1] - k\n ],\n [\n t[0] + k,\n t[1] + k\n ]\n ] : project === $483421377f1a6961$export$94ff8a57e9b91cc3 ? [\n [\n Math.max(t[0] - k, x0),\n y0\n ],\n [\n Math.min(t[0] + k, x1),\n y1\n ]\n ] : [\n [\n x0,\n Math.max(t[1] - k, y0)\n ],\n [\n x1,\n Math.min(t[1] + k, y1)\n ]\n ]);\n }\n return reclip();\n}\n\n});\n\n\nparcelRegister(\"cMbuW\", function(module, exports) {\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $lrO5L = parcelRequire(\"lrO5L\");\n\nvar $bmox2 = parcelRequire(\"bmox2\");\nfunction $94d2e2fab8c2fd69$export$24f604fe80e5f192(y0, y1) {\n var cy0 = (0, $kNUN7.cos)(y0), n = y0 === y1 ? (0, $kNUN7.sin)(y0) : (cy0 - (0, $kNUN7.cos)(y1)) / (y1 - y0), g = cy0 / n + y0;\n if ((0, $kNUN7.abs)(n) < (0, $kNUN7.epsilon)) return 0, $bmox2.equirectangularRaw;\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [\n gy * (0, $kNUN7.sin)(nx),\n g - gy * (0, $kNUN7.cos)(nx)\n ];\n }\n project.invert = function(x, y) {\n var gy = g - y;\n return [\n (0, $kNUN7.atan2)(x, (0, $kNUN7.abs)(gy)) / n * (0, $kNUN7.sign)(gy),\n g - (0, $kNUN7.sign)(n) * (0, $kNUN7.sqrt)(x * x + gy * gy)\n ];\n };\n return project;\n}\nfunction $94d2e2fab8c2fd69$export$2e2bcd8739ae039() {\n return (0, $lrO5L.conicProjection)($94d2e2fab8c2fd69$export$24f604fe80e5f192).scale(131.154).center([\n 0,\n 13.9389\n ]);\n}\n\n});\nparcelRegister(\"bmox2\", function(module, exports) {\n\n$parcel$export(module.exports, \"equirectangularRaw\", function () { return $8454c7538000e064$export$f5fee52180f2f058; });\n\nvar $lsk55 = parcelRequire(\"lsk55\");\nfunction $8454c7538000e064$export$f5fee52180f2f058(lambda, phi) {\n return [\n lambda,\n phi\n ];\n}\n$8454c7538000e064$export$f5fee52180f2f058.invert = $8454c7538000e064$export$f5fee52180f2f058;\nfunction $8454c7538000e064$export$2e2bcd8739ae039() {\n return (0, $lsk55.default)($8454c7538000e064$export$f5fee52180f2f058).scale(152.63);\n}\n\n});\n\n\nparcelRegister(\"10MQ7\", function(module, exports) {\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $eoCMd = parcelRequire(\"eoCMd\");\n\nvar $lsk55 = parcelRequire(\"lsk55\");\nfunction $0bcbad1561355a0f$export$dc8c6ddfc8b22c85(x, y) {\n var cy = (0, $kNUN7.cos)(y), k = (0, $kNUN7.cos)(x) * cy;\n return [\n cy * (0, $kNUN7.sin)(x) / k,\n (0, $kNUN7.sin)(y) / k\n ];\n}\n$0bcbad1561355a0f$export$dc8c6ddfc8b22c85.invert = (0, $eoCMd.azimuthalInvert)((0, $kNUN7.atan));\nfunction $0bcbad1561355a0f$export$2e2bcd8739ae039() {\n return (0, $lsk55.default)($0bcbad1561355a0f$export$dc8c6ddfc8b22c85).scale(144.049).clipAngle(60);\n}\n\n});\n\nparcelRegister(\"8wmcz\", function(module, exports) {\n\nvar $83woy = parcelRequire(\"83woy\");\n\nvar $1XGJc = parcelRequire(\"1XGJc\");\n\nvar $eNZUM = parcelRequire(\"eNZUM\");\n\nvar $aDqKD = parcelRequire(\"aDqKD\");\nfunction $634288b127505a72$var$scaleTranslate(kx, ky, tx, ty) {\n return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? (0, $1XGJc.default) : (0, $eNZUM.transformer)({\n point: function(x, y) {\n this.stream.point(x * kx + tx, y * ky + ty);\n }\n });\n}\nfunction $634288b127505a72$export$2e2bcd8739ae039() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = (0, $1XGJc.default), x0 = null, y0, x1, y1, clip = (0, $1XGJc.default), cache, cacheStream, projection;\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n return projection = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(clip(cacheStream = stream));\n },\n clipExtent: function(_) {\n return arguments.length ? (clip = _ == null ? (x0 = y0 = x1 = y1 = null, $1XGJc.default) : (0, $83woy.clipExtent)(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [\n [\n x0,\n y0\n ],\n [\n x1,\n y1\n ]\n ];\n },\n scale: function(_) {\n return arguments.length ? (transform = $634288b127505a72$var$scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;\n },\n translate: function(_) {\n return arguments.length ? (transform = $634288b127505a72$var$scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [\n tx,\n ty\n ];\n },\n reflectX: function(_) {\n return arguments.length ? (transform = $634288b127505a72$var$scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;\n },\n reflectY: function(_) {\n return arguments.length ? (transform = $634288b127505a72$var$scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;\n },\n fitExtent: function(extent, object) {\n return (0, $aDqKD.fitExtent)(projection, extent, object);\n },\n fitSize: function(size, object) {\n return (0, $aDqKD.fitSize)(projection, size, object);\n }\n };\n}\n\n});\n\nparcelRegister(\"epVV2\", function(module, exports) {\n\nvar $lsk55 = parcelRequire(\"lsk55\");\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\nfunction $a7f053fdf3ac2060$export$acb6def22fe878e6(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n$a7f053fdf3ac2060$export$acb6def22fe878e6.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) / (1.007226 + phi2 * (0.045255 + phi4 * (-0.311325 + 0.259866 * phi2 - 0.005916 * 11 * phi4)));\n }while ((0, $kNUN7.abs)(delta) > (0, $kNUN7.epsilon) && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\nfunction $a7f053fdf3ac2060$export$2e2bcd8739ae039() {\n return (0, $lsk55.default)($a7f053fdf3ac2060$export$acb6def22fe878e6).scale(175.295);\n}\n\n});\n\nparcelRegister(\"iHocG\", function(module, exports) {\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $eoCMd = parcelRequire(\"eoCMd\");\n\nvar $lsk55 = parcelRequire(\"lsk55\");\nfunction $d9cf047cb72a3aa3$export$1cd9c2eb846182a(x, y) {\n return [\n (0, $kNUN7.cos)(y) * (0, $kNUN7.sin)(x),\n (0, $kNUN7.sin)(y)\n ];\n}\n$d9cf047cb72a3aa3$export$1cd9c2eb846182a.invert = (0, $eoCMd.azimuthalInvert)((0, $kNUN7.asin));\nfunction $d9cf047cb72a3aa3$export$2e2bcd8739ae039() {\n return (0, $lsk55.default)($d9cf047cb72a3aa3$export$1cd9c2eb846182a).scale(249.5).clipAngle(90 + (0, $kNUN7.epsilon));\n}\n\n});\n\nparcelRegister(\"jiCae\", function(module, exports) {\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $eoCMd = parcelRequire(\"eoCMd\");\n\nvar $lsk55 = parcelRequire(\"lsk55\");\nfunction $e0cd4d52928d1d61$export$f9ccbb0dcb3dcd2b(x, y) {\n var cy = (0, $kNUN7.cos)(y), k = 1 + (0, $kNUN7.cos)(x) * cy;\n return [\n cy * (0, $kNUN7.sin)(x) / k,\n (0, $kNUN7.sin)(y) / k\n ];\n}\n$e0cd4d52928d1d61$export$f9ccbb0dcb3dcd2b.invert = (0, $eoCMd.azimuthalInvert)(function(z) {\n return 2 * (0, $kNUN7.atan)(z);\n});\nfunction $e0cd4d52928d1d61$export$2e2bcd8739ae039() {\n return (0, $lsk55.default)($e0cd4d52928d1d61$export$f9ccbb0dcb3dcd2b).scale(250).clipAngle(142);\n}\n\n});\n\nparcelRegister(\"c1N6T\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $8c1bac4d8b1af34a$export$2e2bcd8739ae039; });\n\nvar $kNUN7 = parcelRequire(\"kNUN7\");\n\nvar $6ckYb = parcelRequire(\"6ckYb\");\nfunction $8c1bac4d8b1af34a$export$e84942adec6de533(lambda, phi) {\n return [\n (0, $kNUN7.log)((0, $kNUN7.tan)(((0, $kNUN7.halfPi) + phi) / 2)),\n -lambda\n ];\n}\n$8c1bac4d8b1af34a$export$e84942adec6de533.invert = function(x, y) {\n return [\n -y,\n 2 * (0, $kNUN7.atan)((0, $kNUN7.exp)(x)) - (0, $kNUN7.halfPi)\n ];\n};\nfunction $8c1bac4d8b1af34a$export$2e2bcd8739ae039() {\n var m = (0, $6ckYb.mercatorProjection)($8c1bac4d8b1af34a$export$e84942adec6de533), center = m.center, rotate = m.rotate;\n m.center = function(_) {\n return arguments.length ? center([\n -_[1],\n _[0]\n ]) : (_ = center(), [\n _[1],\n -_[0]\n ]);\n };\n m.rotate = function(_) {\n return arguments.length ? rotate([\n _[0],\n _[1],\n _.length > 2 ? _[2] + 90 : 90\n ]) : (_ = rotate(), [\n _[0],\n _[1],\n _[2] - 90\n ]);\n };\n return rotate([\n 0,\n 0,\n 90\n ]).scale(159.155);\n}\n\n});\n\n\n\nparcelRegister(\"gZv4c\", function(module, exports) {\n\n$parcel$defineInteropFlag(module.exports);\n\n$parcel$export(module.exports, \"default\", function () { return $084b6a00fd8fcf8a$export$2e2bcd8739ae039; });\n\nvar $ahY8G = parcelRequire(\"ahY8G\");\n\nvar $2kUns = parcelRequire(\"2kUns\");\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $8abqV = parcelRequire(\"8abqV\");\n\nvar $7aiSl = parcelRequire(\"7aiSl\");\n/**\r\n * Finds the difference between two {@link Polygon|polygons} by clipping the second polygon from the first.\r\n *\r\n * @name difference\r\n * @param {Feature} polygon1 input Polygon feature\r\n * @param {Feature} polygon2 Polygon feature to difference from polygon1\r\n * @returns {Feature|null} a Polygon or MultiPolygon feature showing the area of `polygon1` excluding the area of `polygon2` (if empty returns `null`)\r\n * @example\r\n * var polygon1 = turf.polygon([[\r\n * [128, -26],\r\n * [141, -26],\r\n * [141, -21],\r\n * [128, -21],\r\n * [128, -26]\r\n * ]], {\r\n * \"fill\": \"#F00\",\r\n * \"fill-opacity\": 0.1\r\n * });\r\n * var polygon2 = turf.polygon([[\r\n * [126, -28],\r\n * [140, -28],\r\n * [140, -20],\r\n * [126, -20],\r\n * [126, -28]\r\n * ]], {\r\n * \"fill\": \"#00F\",\r\n * \"fill-opacity\": 0.1\r\n * });\r\n *\r\n * var difference = turf.difference(polygon1, polygon2);\r\n *\r\n * //addToMap\r\n * var addToMap = [polygon1, polygon2, difference];\r\n */ function $084b6a00fd8fcf8a$var$difference(polygon1, polygon2) {\n var geom1 = (0, $8abqV.getGeom)(polygon1);\n var geom2 = (0, $8abqV.getGeom)(polygon2);\n var properties = polygon1.properties || {};\n // Issue #721 - JSTS/Martinez can't handle empty polygons\n geom1 = $084b6a00fd8fcf8a$var$removeEmptyPolygon(geom1);\n geom2 = $084b6a00fd8fcf8a$var$removeEmptyPolygon(geom2);\n if (!geom1) return null;\n if (!geom2) return (0, $7GKQS.feature)(geom1, properties);\n var differenced = $ahY8G.diff(geom1.coordinates, geom2.coordinates);\n if (differenced.length === 0) return null;\n if (differenced.length === 1) return (0, $7GKQS.polygon)(differenced[0], properties);\n return (0, $7GKQS.multiPolygon)(differenced, properties);\n}\n/**\r\n * Detect Empty Polygon\r\n *\r\n * @private\r\n * @param {Geometry} geom Geometry Object\r\n * @returns {Geometry|null} removed any polygons with no areas\r\n */ function $084b6a00fd8fcf8a$var$removeEmptyPolygon(geom) {\n switch(geom.type){\n case \"Polygon\":\n if ((0, (/*@__PURE__*/$parcel$interopDefault($2kUns)))(geom) > 1) return geom;\n return null;\n case \"MultiPolygon\":\n var coordinates = [];\n (0, $7aiSl.flattenEach)(geom, function(feature) {\n if ((0, (/*@__PURE__*/$parcel$interopDefault($2kUns)))(feature) > 1) coordinates.push(feature.geometry.coordinates);\n });\n if (coordinates.length) return {\n type: \"MultiPolygon\",\n coordinates: coordinates\n };\n }\n}\nvar $084b6a00fd8fcf8a$export$2e2bcd8739ae039 = $084b6a00fd8fcf8a$var$difference;\n\n});\nparcelRegister(\"ahY8G\", function(module, exports) {\n/**\n * martinez v0.4.3\n * Martinez polygon clipping algorithm, does boolean operation on polygons (multipolygons, polygons with holes etc): intersection, union, difference, xor\n *\n * @author Alex Milevski \n * @license MIT\n * @preserve\n */ (function(global, factory) {\n factory(module.exports);\n})(module.exports, function(exports1) {\n \"use strict\";\n function DEFAULT_COMPARE(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n var SplayTree = function SplayTree(compare, noDuplicates) {\n if (compare === void 0) compare = DEFAULT_COMPARE;\n if (noDuplicates === void 0) noDuplicates = false;\n this._compare = compare;\n this._root = null;\n this._size = 0;\n this._noDuplicates = !!noDuplicates;\n };\n var prototypeAccessors = {\n size: {\n configurable: true\n }\n };\n SplayTree.prototype.rotateLeft = function rotateLeft(x) {\n var y = x.right;\n if (y) {\n x.right = y.left;\n if (y.left) y.left.parent = x;\n y.parent = x.parent;\n }\n if (!x.parent) this._root = y;\n else if (x === x.parent.left) x.parent.left = y;\n else x.parent.right = y;\n if (y) y.left = x;\n x.parent = y;\n };\n SplayTree.prototype.rotateRight = function rotateRight(x) {\n var y = x.left;\n if (y) {\n x.left = y.right;\n if (y.right) y.right.parent = x;\n y.parent = x.parent;\n }\n if (!x.parent) this._root = y;\n else if (x === x.parent.left) x.parent.left = y;\n else x.parent.right = y;\n if (y) y.right = x;\n x.parent = y;\n };\n SplayTree.prototype._splay = function _splay(x) {\n var this$1 = this;\n while(x.parent){\n var p = x.parent;\n if (!p.parent) {\n if (p.left === x) this$1.rotateRight(p);\n else this$1.rotateLeft(p);\n } else if (p.left === x && p.parent.left === p) {\n this$1.rotateRight(p.parent);\n this$1.rotateRight(p);\n } else if (p.right === x && p.parent.right === p) {\n this$1.rotateLeft(p.parent);\n this$1.rotateLeft(p);\n } else if (p.left === x && p.parent.right === p) {\n this$1.rotateRight(p);\n this$1.rotateLeft(p);\n } else {\n this$1.rotateLeft(p);\n this$1.rotateRight(p);\n }\n }\n };\n SplayTree.prototype.splay = function splay(x) {\n var this$1 = this;\n var p, gp, ggp, l, r;\n while(x.parent){\n p = x.parent;\n gp = p.parent;\n if (gp && gp.parent) {\n ggp = gp.parent;\n if (ggp.left === gp) ggp.left = x;\n else ggp.right = x;\n x.parent = ggp;\n } else {\n x.parent = null;\n this$1._root = x;\n }\n l = x.left;\n r = x.right;\n if (x === p.left) {\n if (gp) {\n if (gp.left === p) {\n /* zig-zig */ if (p.right) {\n gp.left = p.right;\n gp.left.parent = gp;\n } else gp.left = null;\n p.right = gp;\n gp.parent = p;\n } else {\n /* zig-zag */ if (l) {\n gp.right = l;\n l.parent = gp;\n } else gp.right = null;\n x.left = gp;\n gp.parent = x;\n }\n }\n if (r) {\n p.left = r;\n r.parent = p;\n } else p.left = null;\n x.right = p;\n p.parent = x;\n } else {\n if (gp) {\n if (gp.right === p) {\n /* zig-zig */ if (p.left) {\n gp.right = p.left;\n gp.right.parent = gp;\n } else gp.right = null;\n p.left = gp;\n gp.parent = p;\n } else {\n /* zig-zag */ if (r) {\n gp.left = r;\n r.parent = gp;\n } else gp.left = null;\n x.right = gp;\n gp.parent = x;\n }\n }\n if (l) {\n p.right = l;\n l.parent = p;\n } else p.right = null;\n x.left = p;\n p.parent = x;\n }\n }\n };\n SplayTree.prototype.replace = function replace(u, v) {\n if (!u.parent) this._root = v;\n else if (u === u.parent.left) u.parent.left = v;\n else u.parent.right = v;\n if (v) v.parent = u.parent;\n };\n SplayTree.prototype.minNode = function minNode(u) {\n if (u === void 0) u = this._root;\n if (u) while(u.left)u = u.left;\n return u;\n };\n SplayTree.prototype.maxNode = function maxNode(u) {\n if (u === void 0) u = this._root;\n if (u) while(u.right)u = u.right;\n return u;\n };\n SplayTree.prototype.insert = function insert(key, data) {\n var z = this._root;\n var p = null;\n var comp = this._compare;\n var cmp;\n if (this._noDuplicates) while(z){\n p = z;\n cmp = comp(z.key, key);\n if (cmp === 0) return;\n else if (comp(z.key, key) < 0) z = z.right;\n else z = z.left;\n }\n else while(z){\n p = z;\n if (comp(z.key, key) < 0) z = z.right;\n else z = z.left;\n }\n z = {\n key: key,\n data: data,\n left: null,\n right: null,\n parent: p\n };\n if (!p) this._root = z;\n else if (comp(p.key, z.key) < 0) p.right = z;\n else p.left = z;\n this.splay(z);\n this._size++;\n return z;\n };\n SplayTree.prototype.find = function find(key) {\n var z = this._root;\n var comp = this._compare;\n while(z){\n var cmp = comp(z.key, key);\n if (cmp < 0) z = z.right;\n else if (cmp > 0) z = z.left;\n else return z;\n }\n return null;\n };\n /**\n * Whether the tree contains a node with the given key\n * @param{Key} key\n * @return {boolean} true/false\n */ SplayTree.prototype.contains = function contains(key) {\n var node = this._root;\n var comparator = this._compare;\n while(node){\n var cmp = comparator(key, node.key);\n if (cmp === 0) return true;\n else if (cmp < 0) node = node.left;\n else node = node.right;\n }\n return false;\n };\n SplayTree.prototype.remove = function remove(key) {\n var z = this.find(key);\n if (!z) return false;\n this.splay(z);\n if (!z.left) this.replace(z, z.right);\n else if (!z.right) this.replace(z, z.left);\n else {\n var y = this.minNode(z.right);\n if (y.parent !== z) {\n this.replace(y, y.right);\n y.right = z.right;\n y.right.parent = y;\n }\n this.replace(z, y);\n y.left = z.left;\n y.left.parent = y;\n }\n this._size--;\n return true;\n };\n SplayTree.prototype.removeNode = function removeNode(z) {\n if (!z) return false;\n this.splay(z);\n if (!z.left) this.replace(z, z.right);\n else if (!z.right) this.replace(z, z.left);\n else {\n var y = this.minNode(z.right);\n if (y.parent !== z) {\n this.replace(y, y.right);\n y.right = z.right;\n y.right.parent = y;\n }\n this.replace(z, y);\n y.left = z.left;\n y.left.parent = y;\n }\n this._size--;\n return true;\n };\n SplayTree.prototype.erase = function erase(key) {\n var z = this.find(key);\n if (!z) return;\n this.splay(z);\n var s = z.left;\n var t = z.right;\n var sMax = null;\n if (s) {\n s.parent = null;\n sMax = this.maxNode(s);\n this.splay(sMax);\n this._root = sMax;\n }\n if (t) {\n if (s) sMax.right = t;\n else this._root = t;\n t.parent = sMax;\n }\n this._size--;\n };\n /**\n * Removes and returns the node with smallest key\n * @return {?Node}\n */ SplayTree.prototype.pop = function pop() {\n var node = this._root, returnValue = null;\n if (node) {\n while(node.left)node = node.left;\n returnValue = {\n key: node.key,\n data: node.data\n };\n this.remove(node.key);\n }\n return returnValue;\n };\n /* eslint-disable class-methods-use-this */ /**\n * Successor node\n * @param{Node} node\n * @return {?Node}\n */ SplayTree.prototype.next = function next(node) {\n var successor = node;\n if (successor) {\n if (successor.right) {\n successor = successor.right;\n while(successor && successor.left)successor = successor.left;\n } else {\n successor = node.parent;\n while(successor && successor.right === node){\n node = successor;\n successor = successor.parent;\n }\n }\n }\n return successor;\n };\n /**\n * Predecessor node\n * @param{Node} node\n * @return {?Node}\n */ SplayTree.prototype.prev = function prev(node) {\n var predecessor = node;\n if (predecessor) {\n if (predecessor.left) {\n predecessor = predecessor.left;\n while(predecessor && predecessor.right)predecessor = predecessor.right;\n } else {\n predecessor = node.parent;\n while(predecessor && predecessor.left === node){\n node = predecessor;\n predecessor = predecessor.parent;\n }\n }\n }\n return predecessor;\n };\n /* eslint-enable class-methods-use-this */ /**\n * @param{forEachCallback} callback\n * @return {SplayTree}\n */ SplayTree.prototype.forEach = function forEach(callback) {\n var current = this._root;\n var s = [], done = false, i = 0;\n while(!done){\n // Reach the left most Node of the current Node\n if (current) {\n // Place pointer to a tree node on the stack\n // before traversing the node's left subtree\n s.push(current);\n current = current.left;\n } else // BackTrack from the empty subtree and visit the Node\n // at the top of the stack; however, if the stack is\n // empty you are done\n if (s.length > 0) {\n current = s.pop();\n callback(current, i++);\n // We have visited the node and its left\n // subtree. Now, it's right subtree's turn\n current = current.right;\n } else done = true;\n }\n return this;\n };\n /**\n * Walk key range from `low` to `high`. Stops if `fn` returns a value.\n * @param{Key} low\n * @param{Key} high\n * @param{Function} fn\n * @param{*?} ctx\n * @return {SplayTree}\n */ SplayTree.prototype.range = function range(low, high, fn, ctx) {\n var this$1 = this;\n var Q = [];\n var compare = this._compare;\n var node = this._root, cmp;\n while(Q.length !== 0 || node)if (node) {\n Q.push(node);\n node = node.left;\n } else {\n node = Q.pop();\n cmp = compare(node.key, high);\n if (cmp > 0) break;\n else if (compare(node.key, low) >= 0) {\n if (fn.call(ctx, node)) return this$1;\n // stop if smth is returned\n }\n node = node.right;\n }\n return this;\n };\n /**\n * Returns all keys in order\n * @return {Array}\n */ SplayTree.prototype.keys = function keys() {\n var current = this._root;\n var s = [], r = [], done = false;\n while(!done){\n if (current) {\n s.push(current);\n current = current.left;\n } else if (s.length > 0) {\n current = s.pop();\n r.push(current.key);\n current = current.right;\n } else done = true;\n }\n return r;\n };\n /**\n * Returns `data` fields of all nodes in order.\n * @return {Array}\n */ SplayTree.prototype.values = function values() {\n var current = this._root;\n var s = [], r = [], done = false;\n while(!done){\n if (current) {\n s.push(current);\n current = current.left;\n } else if (s.length > 0) {\n current = s.pop();\n r.push(current.data);\n current = current.right;\n } else done = true;\n }\n return r;\n };\n /**\n * Returns node at given index\n * @param{number} index\n * @return {?Node}\n */ SplayTree.prototype.at = function at(index) {\n // removed after a consideration, more misleading than useful\n // index = index % this.size;\n // if (index < 0) index = this.size - index;\n var current = this._root;\n var s = [], done = false, i = 0;\n while(!done){\n if (current) {\n s.push(current);\n current = current.left;\n } else if (s.length > 0) {\n current = s.pop();\n if (i === index) return current;\n i++;\n current = current.right;\n } else done = true;\n }\n return null;\n };\n /**\n * Bulk-load items. Both array have to be same size\n * @param{Array} keys\n * @param{Array}[values]\n * @param{Boolean} [presort=false] Pre-sort keys and values, using\n * tree's comparator. Sorting is done\n * in-place\n * @return {AVLTree}\n */ SplayTree.prototype.load = function load(keys, values, presort) {\n if (keys === void 0) keys = [];\n if (values === void 0) values = [];\n if (presort === void 0) presort = false;\n if (this._size !== 0) throw new Error(\"bulk-load: tree is not empty\");\n var size = keys.length;\n if (presort) sort(keys, values, 0, size - 1, this._compare);\n this._root = loadRecursive(null, keys, values, 0, size);\n this._size = size;\n return this;\n };\n SplayTree.prototype.min = function min() {\n var node = this.minNode(this._root);\n if (node) return node.key;\n else return null;\n };\n SplayTree.prototype.max = function max() {\n var node = this.maxNode(this._root);\n if (node) return node.key;\n else return null;\n };\n SplayTree.prototype.isEmpty = function isEmpty() {\n return this._root === null;\n };\n prototypeAccessors.size.get = function() {\n return this._size;\n };\n /**\n * Create a tree and load it with items\n * @param{Array} keys\n * @param{Array?} [values]\n\n * @param{Function?} [comparator]\n * @param{Boolean?} [presort=false] Pre-sort keys and values, using\n * tree's comparator. Sorting is done\n * in-place\n * @param{Boolean?} [noDuplicates=false] Allow duplicates\n * @return {SplayTree}\n */ SplayTree.createTree = function createTree(keys, values, comparator, presort, noDuplicates) {\n return new SplayTree(comparator, noDuplicates).load(keys, values, presort);\n };\n Object.defineProperties(SplayTree.prototype, prototypeAccessors);\n function loadRecursive(parent, keys, values, start, end) {\n var size = end - start;\n if (size > 0) {\n var middle = start + Math.floor(size / 2);\n var key = keys[middle];\n var data = values[middle];\n var node = {\n key: key,\n data: data,\n parent: parent\n };\n node.left = loadRecursive(node, keys, values, start, middle);\n node.right = loadRecursive(node, keys, values, middle + 1, end);\n return node;\n }\n return null;\n }\n function sort(keys, values, left, right, compare) {\n if (left >= right) return;\n var pivot = keys[left + right >> 1];\n var i = left - 1;\n var j = right + 1;\n while(true){\n do i++;\n while (compare(keys[i], pivot) < 0);\n do j--;\n while (compare(keys[j], pivot) > 0);\n if (i >= j) break;\n var tmp = keys[i];\n keys[i] = keys[j];\n keys[j] = tmp;\n tmp = values[i];\n values[i] = values[j];\n values[j] = tmp;\n }\n sort(keys, values, left, j, compare);\n sort(keys, values, j + 1, right, compare);\n }\n var NORMAL = 0;\n var NON_CONTRIBUTING = 1;\n var SAME_TRANSITION = 2;\n var DIFFERENT_TRANSITION = 3;\n var INTERSECTION = 0;\n var UNION = 1;\n var DIFFERENCE = 2;\n var XOR = 3;\n /**\n * @param {SweepEvent} event\n * @param {SweepEvent} prev\n * @param {Operation} operation\n */ function computeFields(event, prev, operation) {\n // compute inOut and otherInOut fields\n if (prev === null) {\n event.inOut = false;\n event.otherInOut = true;\n // previous line segment in sweepline belongs to the same polygon\n } else {\n if (event.isSubject === prev.isSubject) {\n event.inOut = !prev.inOut;\n event.otherInOut = prev.otherInOut;\n // previous line segment in sweepline belongs to the clipping polygon\n } else {\n event.inOut = !prev.otherInOut;\n event.otherInOut = prev.isVertical() ? !prev.inOut : prev.inOut;\n }\n // compute prevInResult field\n if (prev) event.prevInResult = !inResult(prev, operation) || prev.isVertical() ? prev.prevInResult : prev;\n }\n // check if the line segment belongs to the Boolean operation\n event.inResult = inResult(event, operation);\n }\n /* eslint-disable indent */ function inResult(event, operation) {\n switch(event.type){\n case NORMAL:\n switch(operation){\n case INTERSECTION:\n return !event.otherInOut;\n case UNION:\n return event.otherInOut;\n case DIFFERENCE:\n // return (event.isSubject && !event.otherInOut) ||\n // (!event.isSubject && event.otherInOut);\n return event.isSubject && event.otherInOut || !event.isSubject && !event.otherInOut;\n case XOR:\n return true;\n }\n break;\n case SAME_TRANSITION:\n return operation === INTERSECTION || operation === UNION;\n case DIFFERENT_TRANSITION:\n return operation === DIFFERENCE;\n case NON_CONTRIBUTING:\n return false;\n }\n return false;\n }\n /* eslint-enable indent */ var SweepEvent = function SweepEvent(point, left, otherEvent, isSubject, edgeType) {\n /**\n * Is left endpoint?\n * @type {Boolean}\n */ this.left = left;\n /**\n * @type {Array.}\n */ this.point = point;\n /**\n * Other edge reference\n * @type {SweepEvent}\n */ this.otherEvent = otherEvent;\n /**\n * Belongs to source or clipping polygon\n * @type {Boolean}\n */ this.isSubject = isSubject;\n /**\n * Edge contribution type\n * @type {Number}\n */ this.type = edgeType || NORMAL;\n /**\n * In-out transition for the sweepline crossing polygon\n * @type {Boolean}\n */ this.inOut = false;\n /**\n * @type {Boolean}\n */ this.otherInOut = false;\n /**\n * Previous event in result?\n * @type {SweepEvent}\n */ this.prevInResult = null;\n /**\n * Does event belong to result?\n * @type {Boolean}\n */ this.inResult = false;\n // connection step\n /**\n * @type {Boolean}\n */ this.resultInOut = false;\n this.isExteriorRing = true;\n };\n /**\n * @param{Array.}p\n * @return {Boolean}\n */ SweepEvent.prototype.isBelow = function isBelow(p) {\n var p0 = this.point, p1 = this.otherEvent.point;\n return this.left ? (p0[0] - p[0]) * (p1[1] - p[1]) - (p1[0] - p[0]) * (p0[1] - p[1]) > 0 : (p1[0] - p[0]) * (p0[1] - p[1]) - (p0[0] - p[0]) * (p1[1] - p[1]) > 0;\n //signedArea(this.otherEvent.point, this.point, p) > 0;\n };\n /**\n * @param{Array.}p\n * @return {Boolean}\n */ SweepEvent.prototype.isAbove = function isAbove(p) {\n return !this.isBelow(p);\n };\n /**\n * @return {Boolean}\n */ SweepEvent.prototype.isVertical = function isVertical() {\n return this.point[0] === this.otherEvent.point[0];\n };\n SweepEvent.prototype.clone = function clone() {\n var copy = new SweepEvent(this.point, this.left, this.otherEvent, this.isSubject, this.type);\n copy.inResult = this.inResult;\n copy.prevInResult = this.prevInResult;\n copy.isExteriorRing = this.isExteriorRing;\n copy.inOut = this.inOut;\n copy.otherInOut = this.otherInOut;\n return copy;\n };\n function equals(p1, p2) {\n if (p1[0] === p2[0]) {\n if (p1[1] === p2[1]) return true;\n else return false;\n }\n return false;\n }\n // const EPSILON = 1e-9;\n // const abs = Math.abs;\n // TODO https://github.com/w8r/martinez/issues/6#issuecomment-262847164\n // Precision problem.\n //\n // module.exports = function equals(p1, p2) {\n // return abs(p1[0] - p2[0]) <= EPSILON && abs(p1[1] - p2[1]) <= EPSILON;\n // };\n /**\n * Signed area of the triangle (p0, p1, p2)\n * @param {Array.} p0\n * @param {Array.} p1\n * @param {Array.} p2\n * @return {Number}\n */ function signedArea(p0, p1, p2) {\n return (p0[0] - p2[0]) * (p1[1] - p2[1]) - (p1[0] - p2[0]) * (p0[1] - p2[1]);\n }\n /**\n * @param {SweepEvent} e1\n * @param {SweepEvent} e2\n * @return {Number}\n */ function compareEvents(e1, e2) {\n var p1 = e1.point;\n var p2 = e2.point;\n // Different x-coordinate\n if (p1[0] > p2[0]) return 1;\n if (p1[0] < p2[0]) return -1;\n // Different points, but same x-coordinate\n // Event with lower y-coordinate is processed first\n if (p1[1] !== p2[1]) return p1[1] > p2[1] ? 1 : -1;\n return specialCases(e1, e2, p1, p2);\n }\n /* eslint-disable no-unused-vars */ function specialCases(e1, e2, p1, p2) {\n // Same coordinates, but one is a left endpoint and the other is\n // a right endpoint. The right endpoint is processed first\n if (e1.left !== e2.left) return e1.left ? 1 : -1;\n // const p2 = e1.otherEvent.point, p3 = e2.otherEvent.point;\n // const sa = (p1[0] - p3[0]) * (p2[1] - p3[1]) - (p2[0] - p3[0]) * (p1[1] - p3[1])\n // Same coordinates, both events\n // are left endpoints or right endpoints.\n // not collinear\n if (signedArea(p1, e1.otherEvent.point, e2.otherEvent.point) !== 0) // the event associate to the bottom segment is processed first\n return !e1.isBelow(e2.otherEvent.point) ? 1 : -1;\n return !e1.isSubject && e2.isSubject ? 1 : -1;\n }\n /* eslint-enable no-unused-vars */ /**\n * @param {SweepEvent} se\n * @param {Array.} p\n * @param {Queue} queue\n * @return {Queue}\n */ function divideSegment(se, p, queue) {\n var r = new SweepEvent(p, false, se, se.isSubject);\n var l = new SweepEvent(p, true, se.otherEvent, se.isSubject);\n /* eslint-disable no-console */ if (equals(se.point, se.otherEvent.point)) console.warn(\"what is that, a collapsed segment?\", se);\n /* eslint-enable no-console */ r.contourId = l.contourId = se.contourId;\n // avoid a rounding error. The left event would be processed after the right event\n if (compareEvents(l, se.otherEvent) > 0) {\n se.otherEvent.left = true;\n l.left = false;\n }\n // avoid a rounding error. The left event would be processed after the right event\n // if (compareEvents(se, r) > 0) {}\n se.otherEvent.otherEvent = l;\n se.otherEvent = r;\n queue.push(l);\n queue.push(r);\n return queue;\n }\n //const EPS = 1e-9;\n /**\n * Finds the magnitude of the cross product of two vectors (if we pretend\n * they're in three dimensions)\n *\n * @param {Object} a First vector\n * @param {Object} b Second vector\n * @private\n * @returns {Number} The magnitude of the cross product\n */ function crossProduct(a, b) {\n return a[0] * b[1] - a[1] * b[0];\n }\n /**\n * Finds the dot product of two vectors.\n *\n * @param {Object} a First vector\n * @param {Object} b Second vector\n * @private\n * @returns {Number} The dot product\n */ function dotProduct(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n }\n /**\n * Finds the intersection (if any) between two line segments a and b, given the\n * line segments' end points a1, a2 and b1, b2.\n *\n * This algorithm is based on Schneider and Eberly.\n * http://www.cimec.org.ar/~ncalvo/Schneider_Eberly.pdf\n * Page 244.\n *\n * @param {Array.} a1 point of first line\n * @param {Array.} a2 point of first line\n * @param {Array.} b1 point of second line\n * @param {Array.} b2 point of second line\n * @param {Boolean=} noEndpointTouch whether to skip single touchpoints\n * (meaning connected segments) as\n * intersections\n * @returns {Array.>|Null} If the lines intersect, the point of\n * intersection. If they overlap, the two end points of the overlapping segment.\n * Otherwise, null.\n */ function intersection(a1, a2, b1, b2, noEndpointTouch) {\n // The algorithm expects our lines in the form P + sd, where P is a point,\n // s is on the interval [0, 1], and d is a vector.\n // We are passed two points. P can be the first point of each pair. The\n // vector, then, could be thought of as the distance (in x and y components)\n // from the first point to the second point.\n // So first, let's make our vectors:\n var va = [\n a2[0] - a1[0],\n a2[1] - a1[1]\n ];\n var vb = [\n b2[0] - b1[0],\n b2[1] - b1[1]\n ];\n // We also define a function to convert back to regular point form:\n /* eslint-disable arrow-body-style */ function toPoint(p, s, d) {\n return [\n p[0] + s * d[0],\n p[1] + s * d[1]\n ];\n }\n /* eslint-enable arrow-body-style */ // The rest is pretty much a straight port of the algorithm.\n var e = [\n b1[0] - a1[0],\n b1[1] - a1[1]\n ];\n var kross = crossProduct(va, vb);\n var sqrKross = kross * kross;\n var sqrLenA = dotProduct(va, va);\n //const sqrLenB = dotProduct(vb, vb);\n // Check for line intersection. This works because of the properties of the\n // cross product -- specifically, two vectors are parallel if and only if the\n // cross product is the 0 vector. The full calculation involves relative error\n // to account for possible very small line segments. See Schneider & Eberly\n // for details.\n if (sqrKross > 0 /* EPS * sqrLenB * sqLenA */ ) {\n // If they're not parallel, then (because these are line segments) they\n // still might not actually intersect. This code checks that the\n // intersection point of the lines is actually on both line segments.\n var s = crossProduct(e, vb) / kross;\n if (s < 0 || s > 1) // not on line segment a\n return null;\n var t = crossProduct(e, va) / kross;\n if (t < 0 || t > 1) // not on line segment b\n return null;\n if (s === 0 || s === 1) // on an endpoint of line segment a\n return noEndpointTouch ? null : [\n toPoint(a1, s, va)\n ];\n if (t === 0 || t === 1) // on an endpoint of line segment b\n return noEndpointTouch ? null : [\n toPoint(b1, t, vb)\n ];\n return [\n toPoint(a1, s, va)\n ];\n }\n // If we've reached this point, then the lines are either parallel or the\n // same, but the segments could overlap partially or fully, or not at all.\n // So we need to find the overlap, if any. To do that, we can use e, which is\n // the (vector) difference between the two initial points. If this is parallel\n // with the line itself, then the two lines are the same line, and there will\n // be overlap.\n //const sqrLenE = dotProduct(e, e);\n kross = crossProduct(e, va);\n sqrKross = kross * kross;\n if (sqrKross > 0 /* EPS * sqLenB * sqLenE */ ) // Lines are just parallel, not the same. No overlap.\n return null;\n var sa = dotProduct(va, e) / sqrLenA;\n var sb = sa + dotProduct(va, vb) / sqrLenA;\n var smin = Math.min(sa, sb);\n var smax = Math.max(sa, sb);\n // this is, essentially, the FindIntersection acting on floats from\n // Schneider & Eberly, just inlined into this function.\n if (smin <= 1 && smax >= 0) {\n // overlap on an end point\n if (smin === 1) return noEndpointTouch ? null : [\n toPoint(a1, smin > 0 ? smin : 0, va)\n ];\n if (smax === 0) return noEndpointTouch ? null : [\n toPoint(a1, smax < 1 ? smax : 1, va)\n ];\n if (noEndpointTouch && smin === 0 && smax === 1) return null;\n // There's overlap on a segment -- two points of intersection. Return both.\n return [\n toPoint(a1, smin > 0 ? smin : 0, va),\n toPoint(a1, smax < 1 ? smax : 1, va)\n ];\n }\n return null;\n }\n /**\n * @param {SweepEvent} se1\n * @param {SweepEvent} se2\n * @param {Queue} queue\n * @return {Number}\n */ function possibleIntersection(se1, se2, queue) {\n // that disallows self-intersecting polygons,\n // did cost us half a day, so I'll leave it\n // out of respect\n // if (se1.isSubject === se2.isSubject) return;\n var inter = intersection(se1.point, se1.otherEvent.point, se2.point, se2.otherEvent.point);\n var nintersections = inter ? inter.length : 0;\n if (nintersections === 0) return 0;\n // no intersection\n // the line segments intersect at an endpoint of both line segments\n if (nintersections === 1 && (equals(se1.point, se2.point) || equals(se1.otherEvent.point, se2.otherEvent.point))) return 0;\n if (nintersections === 2 && se1.isSubject === se2.isSubject) // if(se1.contourId === se2.contourId){\n // console.warn('Edges of the same polygon overlap',\n // se1.point, se1.otherEvent.point, se2.point, se2.otherEvent.point);\n // }\n //throw new Error('Edges of the same polygon overlap');\n return 0;\n // The line segments associated to se1 and se2 intersect\n if (nintersections === 1) {\n // if the intersection point is not an endpoint of se1\n if (!equals(se1.point, inter[0]) && !equals(se1.otherEvent.point, inter[0])) divideSegment(se1, inter[0], queue);\n // if the intersection point is not an endpoint of se2\n if (!equals(se2.point, inter[0]) && !equals(se2.otherEvent.point, inter[0])) divideSegment(se2, inter[0], queue);\n return 1;\n }\n // The line segments associated to se1 and se2 overlap\n var events = [];\n var leftCoincide = false;\n var rightCoincide = false;\n if (equals(se1.point, se2.point)) leftCoincide = true; // linked\n else if (compareEvents(se1, se2) === 1) events.push(se2, se1);\n else events.push(se1, se2);\n if (equals(se1.otherEvent.point, se2.otherEvent.point)) rightCoincide = true;\n else if (compareEvents(se1.otherEvent, se2.otherEvent) === 1) events.push(se2.otherEvent, se1.otherEvent);\n else events.push(se1.otherEvent, se2.otherEvent);\n if (leftCoincide && rightCoincide || leftCoincide) {\n // both line segments are equal or share the left endpoint\n se2.type = NON_CONTRIBUTING;\n se1.type = se2.inOut === se1.inOut ? SAME_TRANSITION : DIFFERENT_TRANSITION;\n if (leftCoincide && !rightCoincide) // honestly no idea, but changing events selection from [2, 1]\n // to [0, 1] fixes the overlapping self-intersecting polygons issue\n divideSegment(events[1].otherEvent, events[0].point, queue);\n return 2;\n }\n // the line segments share the right endpoint\n if (rightCoincide) {\n divideSegment(events[0], events[1].point, queue);\n return 3;\n }\n // no line segment includes totally the other one\n if (events[0] !== events[3].otherEvent) {\n divideSegment(events[0], events[1].point, queue);\n divideSegment(events[1], events[2].point, queue);\n return 3;\n }\n // one line segment includes the other one\n divideSegment(events[0], events[1].point, queue);\n divideSegment(events[3].otherEvent, events[2].point, queue);\n return 3;\n }\n /**\n * @param {SweepEvent} le1\n * @param {SweepEvent} le2\n * @return {Number}\n */ function compareSegments(le1, le2) {\n if (le1 === le2) return 0;\n // Segments are not collinear\n if (signedArea(le1.point, le1.otherEvent.point, le2.point) !== 0 || signedArea(le1.point, le1.otherEvent.point, le2.otherEvent.point) !== 0) {\n // If they share their left endpoint use the right endpoint to sort\n if (equals(le1.point, le2.point)) return le1.isBelow(le2.otherEvent.point) ? -1 : 1;\n // Different left endpoint: use the left endpoint to sort\n if (le1.point[0] === le2.point[0]) return le1.point[1] < le2.point[1] ? -1 : 1;\n // has the line segment associated to e1 been inserted\n // into S after the line segment associated to e2 ?\n if (compareEvents(le1, le2) === 1) return le2.isAbove(le1.point) ? -1 : 1;\n // The line segment associated to e2 has been inserted\n // into S after the line segment associated to e1\n return le1.isBelow(le2.point) ? -1 : 1;\n }\n if (le1.isSubject === le2.isSubject) {\n var p1 = le1.point, p2 = le2.point;\n if (p1[0] === p2[0] && p1[1] === p2[1]) {\n p1 = le1.otherEvent.point;\n p2 = le2.otherEvent.point;\n if (p1[0] === p2[0] && p1[1] === p2[1]) return 0;\n else return le1.contourId > le2.contourId ? 1 : -1;\n }\n } else return le1.isSubject ? -1 : 1;\n return compareEvents(le1, le2) === 1 ? 1 : -1;\n }\n function subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation) {\n var sweepLine = new SplayTree(compareSegments);\n var sortedEvents = [];\n var rightbound = Math.min(sbbox[2], cbbox[2]);\n var prev, next, begin;\n while(eventQueue.length !== 0){\n var event = eventQueue.pop();\n sortedEvents.push(event);\n // optimization by bboxes for intersection and difference goes here\n if (operation === INTERSECTION && event.point[0] > rightbound || operation === DIFFERENCE && event.point[0] > sbbox[2]) break;\n if (event.left) {\n next = prev = sweepLine.insert(event);\n begin = sweepLine.minNode();\n if (prev !== begin) prev = sweepLine.prev(prev);\n else prev = null;\n next = sweepLine.next(next);\n var prevEvent = prev ? prev.key : null;\n var prevprevEvent = void 0;\n computeFields(event, prevEvent, operation);\n if (next) {\n if (possibleIntersection(event, next.key, eventQueue) === 2) {\n computeFields(event, prevEvent, operation);\n computeFields(event, next.key, operation);\n }\n }\n if (prev) {\n if (possibleIntersection(prev.key, event, eventQueue) === 2) {\n var prevprev = prev;\n if (prevprev !== begin) prevprev = sweepLine.prev(prevprev);\n else prevprev = null;\n prevprevEvent = prevprev ? prevprev.key : null;\n computeFields(prevEvent, prevprevEvent, operation);\n computeFields(event, prevEvent, operation);\n }\n }\n } else {\n event = event.otherEvent;\n next = prev = sweepLine.find(event);\n if (prev && next) {\n if (prev !== begin) prev = sweepLine.prev(prev);\n else prev = null;\n next = sweepLine.next(next);\n sweepLine.remove(event);\n if (next && prev) possibleIntersection(prev.key, next.key, eventQueue);\n }\n }\n }\n return sortedEvents;\n }\n /**\n * @param {Array.} sortedEvents\n * @return {Array.}\n */ function orderEvents(sortedEvents) {\n var event, i, len, tmp;\n var resultEvents = [];\n for(i = 0, len = sortedEvents.length; i < len; i++){\n event = sortedEvents[i];\n if (event.left && event.inResult || !event.left && event.otherEvent.inResult) resultEvents.push(event);\n }\n // Due to overlapping edges the resultEvents array can be not wholly sorted\n var sorted = false;\n while(!sorted){\n sorted = true;\n for(i = 0, len = resultEvents.length; i < len; i++)if (i + 1 < len && compareEvents(resultEvents[i], resultEvents[i + 1]) === 1) {\n tmp = resultEvents[i];\n resultEvents[i] = resultEvents[i + 1];\n resultEvents[i + 1] = tmp;\n sorted = false;\n }\n }\n for(i = 0, len = resultEvents.length; i < len; i++){\n event = resultEvents[i];\n event.pos = i;\n }\n // imagine, the right event is found in the beginning of the queue,\n // when his left counterpart is not marked yet\n for(i = 0, len = resultEvents.length; i < len; i++){\n event = resultEvents[i];\n if (!event.left) {\n tmp = event.pos;\n event.pos = event.otherEvent.pos;\n event.otherEvent.pos = tmp;\n }\n }\n return resultEvents;\n }\n /**\n * @param {Number} pos\n * @param {Array.} resultEvents\n * @param {Object>} processed\n * @return {Number}\n */ function nextPos(pos, resultEvents, processed, origIndex) {\n var newPos = pos + 1;\n var length = resultEvents.length;\n if (newPos > length - 1) return pos - 1;\n var p = resultEvents[pos].point;\n var p1 = resultEvents[newPos].point;\n // while in range and not the current one by value\n while(newPos < length && p1[0] === p[0] && p1[1] === p[1]){\n if (!processed[newPos]) return newPos;\n else newPos++;\n p1 = resultEvents[newPos].point;\n }\n newPos = pos - 1;\n while(processed[newPos] && newPos >= origIndex)newPos--;\n return newPos;\n }\n /**\n * @param {Array.} sortedEvents\n * @return {Array.<*>} polygons\n */ function connectEdges(sortedEvents, operation) {\n var i, len;\n var resultEvents = orderEvents(sortedEvents);\n // \"false\"-filled array\n var processed = {};\n var result = [];\n var event;\n for(i = 0, len = resultEvents.length; i < len; i++){\n if (processed[i]) continue;\n var contour = [\n []\n ];\n if (!resultEvents[i].isExteriorRing) {\n if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length === 0) result.push(contour);\n else if (result.length === 0) result.push([\n [\n contour\n ]\n ]);\n else result[result.length - 1].push(contour[0]);\n } else if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length > 1) result[result.length - 1].push(contour[0]);\n else result.push(contour);\n var ringId = result.length - 1;\n var pos = i;\n var initial = resultEvents[i].point;\n contour[0].push(initial);\n while(pos >= i){\n event = resultEvents[pos];\n processed[pos] = true;\n if (event.left) {\n event.resultInOut = false;\n event.contourId = ringId;\n } else {\n event.otherEvent.resultInOut = true;\n event.otherEvent.contourId = ringId;\n }\n pos = event.pos;\n processed[pos] = true;\n contour[0].push(resultEvents[pos].point);\n pos = nextPos(pos, resultEvents, processed, i);\n }\n pos = pos === -1 ? i : pos;\n event = resultEvents[pos];\n processed[pos] = processed[event.pos] = true;\n event.otherEvent.resultInOut = true;\n event.otherEvent.contourId = ringId;\n }\n // Handle if the result is a polygon (eg not multipoly)\n // Commented it again, let's see what do we mean by that\n // if (result.length === 1) result = result[0];\n return result;\n }\n var tinyqueue = TinyQueue;\n var default_1 = TinyQueue;\n function TinyQueue(data, compare) {\n var this$1 = this;\n if (!(this instanceof TinyQueue)) return new TinyQueue(data, compare);\n this.data = data || [];\n this.length = this.data.length;\n this.compare = compare || defaultCompare;\n if (this.length > 0) for(var i = (this.length >> 1) - 1; i >= 0; i--)this$1._down(i);\n }\n function defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n }\n TinyQueue.prototype = {\n push: function(item) {\n this.data.push(item);\n this.length++;\n this._up(this.length - 1);\n },\n pop: function() {\n if (this.length === 0) return undefined;\n var top = this.data[0];\n this.length--;\n if (this.length > 0) {\n this.data[0] = this.data[this.length];\n this._down(0);\n }\n this.data.pop();\n return top;\n },\n peek: function() {\n return this.data[0];\n },\n _up: function(pos) {\n var data = this.data;\n var compare = this.compare;\n var item = data[pos];\n while(pos > 0){\n var parent = pos - 1 >> 1;\n var current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n data[pos] = item;\n },\n _down: function(pos) {\n var this$1 = this;\n var data = this.data;\n var compare = this.compare;\n var halfLength = this.length >> 1;\n var item = data[pos];\n while(pos < halfLength){\n var left = (pos << 1) + 1;\n var right = left + 1;\n var best = data[left];\n if (right < this$1.length && compare(data[right], best) < 0) {\n left = right;\n best = data[right];\n }\n if (compare(best, item) >= 0) break;\n data[pos] = best;\n pos = left;\n }\n data[pos] = item;\n }\n };\n tinyqueue.default = default_1;\n var max = Math.max;\n var min = Math.min;\n var contourId = 0;\n function processPolygon(contourOrHole, isSubject, depth, Q, bbox, isExteriorRing) {\n var i, len, s1, s2, e1, e2;\n for(i = 0, len = contourOrHole.length - 1; i < len; i++){\n s1 = contourOrHole[i];\n s2 = contourOrHole[i + 1];\n e1 = new SweepEvent(s1, false, undefined, isSubject);\n e2 = new SweepEvent(s2, false, e1, isSubject);\n e1.otherEvent = e2;\n if (s1[0] === s2[0] && s1[1] === s2[1]) continue; // skip collapsed edges, or it breaks\n e1.contourId = e2.contourId = depth;\n if (!isExteriorRing) {\n e1.isExteriorRing = false;\n e2.isExteriorRing = false;\n }\n if (compareEvents(e1, e2) > 0) e2.left = true;\n else e1.left = true;\n var x = s1[0], y = s1[1];\n bbox[0] = min(bbox[0], x);\n bbox[1] = min(bbox[1], y);\n bbox[2] = max(bbox[2], x);\n bbox[3] = max(bbox[3], y);\n // Pushing it so the queue is sorted from left to right,\n // with object on the left having the highest priority.\n Q.push(e1);\n Q.push(e2);\n }\n }\n function fillQueue(subject, clipping, sbbox, cbbox, operation) {\n var eventQueue = new tinyqueue(null, compareEvents);\n var polygonSet, isExteriorRing, i, ii, j, jj; //, k, kk;\n for(i = 0, ii = subject.length; i < ii; i++){\n polygonSet = subject[i];\n for(j = 0, jj = polygonSet.length; j < jj; j++){\n isExteriorRing = j === 0;\n if (isExteriorRing) contourId++;\n processPolygon(polygonSet[j], true, contourId, eventQueue, sbbox, isExteriorRing);\n }\n }\n for(i = 0, ii = clipping.length; i < ii; i++){\n polygonSet = clipping[i];\n for(j = 0, jj = polygonSet.length; j < jj; j++){\n isExteriorRing = j === 0;\n if (operation === DIFFERENCE) isExteriorRing = false;\n if (isExteriorRing) contourId++;\n processPolygon(polygonSet[j], false, contourId, eventQueue, cbbox, isExteriorRing);\n }\n }\n return eventQueue;\n }\n var EMPTY = [];\n function trivialOperation(subject, clipping, operation) {\n var result = null;\n if (subject.length * clipping.length === 0) {\n if (operation === INTERSECTION) result = EMPTY;\n else if (operation === DIFFERENCE) result = subject;\n else if (operation === UNION || operation === XOR) result = subject.length === 0 ? clipping : subject;\n }\n return result;\n }\n function compareBBoxes(subject, clipping, sbbox, cbbox, operation) {\n var result = null;\n if (sbbox[0] > cbbox[2] || cbbox[0] > sbbox[2] || sbbox[1] > cbbox[3] || cbbox[1] > sbbox[3]) {\n if (operation === INTERSECTION) result = EMPTY;\n else if (operation === DIFFERENCE) result = subject;\n else if (operation === UNION || operation === XOR) result = subject.concat(clipping);\n }\n return result;\n }\n function boolean(subject, clipping, operation) {\n if (typeof subject[0][0][0] === \"number\") subject = [\n subject\n ];\n if (typeof clipping[0][0][0] === \"number\") clipping = [\n clipping\n ];\n var trivial = trivialOperation(subject, clipping, operation);\n if (trivial) return trivial === EMPTY ? null : trivial;\n var sbbox = [\n Infinity,\n Infinity,\n -Infinity,\n -Infinity\n ];\n var cbbox = [\n Infinity,\n Infinity,\n -Infinity,\n -Infinity\n ];\n //console.time('fill queue');\n var eventQueue = fillQueue(subject, clipping, sbbox, cbbox, operation);\n //console.timeEnd('fill queue');\n trivial = compareBBoxes(subject, clipping, sbbox, cbbox, operation);\n if (trivial) return trivial === EMPTY ? null : trivial;\n //console.time('subdivide edges');\n var sortedEvents = subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation);\n //console.timeEnd('subdivide edges');\n //console.time('connect vertices');\n var result = connectEdges(sortedEvents, operation);\n //console.timeEnd('connect vertices');\n return result;\n }\n function union(subject, clipping) {\n return boolean(subject, clipping, UNION);\n }\n function diff(subject, clipping) {\n return boolean(subject, clipping, DIFFERENCE);\n }\n function xor(subject, clipping) {\n return boolean(subject, clipping, XOR);\n }\n function intersection$1(subject, clipping) {\n return boolean(subject, clipping, INTERSECTION);\n }\n /**\n * @enum {Number}\n */ var operations = {\n UNION: UNION,\n DIFFERENCE: DIFFERENCE,\n INTERSECTION: INTERSECTION,\n XOR: XOR\n };\n exports1.union = union;\n exports1.diff = diff;\n exports1.xor = xor;\n exports1.intersection = intersection$1;\n exports1.operations = operations;\n Object.defineProperty(exports1, \"__esModule\", {\n value: true\n });\n});\n\n});\n\nparcelRegister(\"2kUns\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $7aiSl = parcelRequire(\"7aiSl\");\n// Note: change RADIUS => earthRadius\nvar $1b392e605c187d92$var$RADIUS = 6378137;\n/**\n * Takes one or more features and returns their area in square meters.\n *\n * @name area\n * @param {GeoJSON} geojson input GeoJSON feature(s)\n * @returns {number} area in square meters\n * @example\n * var polygon = turf.polygon([[[125, -15], [113, -22], [154, -27], [144, -15], [125, -15]]]);\n *\n * var area = turf.area(polygon);\n *\n * //addToMap\n * var addToMap = [polygon]\n * polygon.properties.area = area\n */ function $1b392e605c187d92$var$area(geojson) {\n return $7aiSl.geomReduce(geojson, function(value, geom) {\n return value + $1b392e605c187d92$var$calculateArea(geom);\n }, 0);\n}\nmodule.exports.default = $1b392e605c187d92$var$area;\n/**\n * Calculate Area\n *\n * @private\n * @param {Geometry} geom GeoJSON Geometries\n * @returns {number} area\n */ function $1b392e605c187d92$var$calculateArea(geom) {\n var total = 0;\n var i;\n switch(geom.type){\n case \"Polygon\":\n return $1b392e605c187d92$var$polygonArea(geom.coordinates);\n case \"MultiPolygon\":\n for(i = 0; i < geom.coordinates.length; i++)total += $1b392e605c187d92$var$polygonArea(geom.coordinates[i]);\n return total;\n case \"Point\":\n case \"MultiPoint\":\n case \"LineString\":\n case \"MultiLineString\":\n return 0;\n }\n return 0;\n}\nfunction $1b392e605c187d92$var$polygonArea(coords) {\n var total = 0;\n if (coords && coords.length > 0) {\n total += Math.abs($1b392e605c187d92$var$ringArea(coords[0]));\n for(var i = 1; i < coords.length; i++)total -= Math.abs($1b392e605c187d92$var$ringArea(coords[i]));\n }\n return total;\n}\n/**\n * @private\n * Calculate the approximate area of the polygon were it projected onto the earth.\n * Note that this area will be positive if ring is oriented clockwise, otherwise it will be negative.\n *\n * Reference:\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for Polygons on a Sphere\",\n * JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007 http://trs-new.jpl.nasa.gov/dspace/handle/2014/40409\n *\n * @param {Array>} coords Ring Coordinates\n * @returns {number} The approximate signed geodesic area of the polygon in square meters.\n */ function $1b392e605c187d92$var$ringArea(coords) {\n var p1;\n var p2;\n var p3;\n var lowerIndex;\n var middleIndex;\n var upperIndex;\n var i;\n var total = 0;\n var coordsLength = coords.length;\n if (coordsLength > 2) {\n for(i = 0; i < coordsLength; i++){\n if (i === coordsLength - 2) {\n lowerIndex = coordsLength - 2;\n middleIndex = coordsLength - 1;\n upperIndex = 0;\n } else if (i === coordsLength - 1) {\n lowerIndex = coordsLength - 1;\n middleIndex = 0;\n upperIndex = 1;\n } else {\n lowerIndex = i;\n middleIndex = i + 1;\n upperIndex = i + 2;\n }\n p1 = coords[lowerIndex];\n p2 = coords[middleIndex];\n p3 = coords[upperIndex];\n total += ($1b392e605c187d92$var$rad(p3[0]) - $1b392e605c187d92$var$rad(p1[0])) * Math.sin($1b392e605c187d92$var$rad(p2[1]));\n }\n total = total * $1b392e605c187d92$var$RADIUS * $1b392e605c187d92$var$RADIUS / 2;\n }\n return total;\n}\nfunction $1b392e605c187d92$var$rad(num) {\n return num * Math.PI / 180;\n}\n\n});\n\nparcelRegister(\"8abqV\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n/**\r\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\r\n *\r\n * @name getCoord\r\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\r\n * @returns {Array} coordinates\r\n * @example\r\n * var pt = turf.point([10, 10]);\r\n *\r\n * var coord = turf.getCoord(pt);\r\n * //= [10, 10]\r\n */ function $5f18204a67f20acc$var$getCoord(coord) {\n if (!coord) throw new Error(\"coord is required\");\n if (!Array.isArray(coord)) {\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") return coord.geometry.coordinates;\n if (coord.type === \"Point\") return coord.coordinates;\n }\n if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) return coord;\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nmodule.exports.getCoord = $5f18204a67f20acc$var$getCoord;\n/**\r\n * Unwrap coordinates from a Feature, Geometry Object or an Array\r\n *\r\n * @name getCoords\r\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\r\n * @returns {Array} coordinates\r\n * @example\r\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\r\n *\r\n * var coords = turf.getCoords(poly);\r\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\r\n */ function $5f18204a67f20acc$var$getCoords(coords) {\n if (Array.isArray(coords)) return coords;\n // Feature\n if (coords.type === \"Feature\") {\n if (coords.geometry !== null) return coords.geometry.coordinates;\n } else {\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n }\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nmodule.exports.getCoords = $5f18204a67f20acc$var$getCoords;\n/**\r\n * Checks if coordinates contains a number\r\n *\r\n * @name containsNumber\r\n * @param {Array} coordinates GeoJSON Coordinates\r\n * @returns {boolean} true if Array contains a number\r\n */ function $5f18204a67f20acc$var$containsNumber(coordinates) {\n if (coordinates.length > 1 && $7GKQS.isNumber(coordinates[0]) && $7GKQS.isNumber(coordinates[1])) return true;\n if (Array.isArray(coordinates[0]) && coordinates[0].length) return $5f18204a67f20acc$var$containsNumber(coordinates[0]);\n throw new Error(\"coordinates must only contain numbers\");\n}\nmodule.exports.containsNumber = $5f18204a67f20acc$var$containsNumber;\n/**\r\n * Enforce expectations about types of GeoJSON objects for Turf.\r\n *\r\n * @name geojsonType\r\n * @param {GeoJSON} value any GeoJSON object\r\n * @param {string} type expected GeoJSON type\r\n * @param {string} name name of calling function\r\n * @throws {Error} if value is not the expected type.\r\n */ function $5f18204a67f20acc$var$geojsonType(value, type, name) {\n if (!type || !name) throw new Error(\"type and name required\");\n if (!value || value.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type);\n}\nmodule.exports.geojsonType = $5f18204a67f20acc$var$geojsonType;\n/**\r\n * Enforce expectations about types of {@link Feature} inputs for Turf.\r\n * Internally this uses {@link geojsonType} to judge geometry types.\r\n *\r\n * @name featureOf\r\n * @param {Feature} feature a feature with an expected geometry type\r\n * @param {string} type expected GeoJSON type\r\n * @param {string} name name of calling function\r\n * @throws {Error} error if value is not the expected type.\r\n */ function $5f18204a67f20acc$var$featureOf(feature, type, name) {\n if (!feature) throw new Error(\"No feature passed\");\n if (!name) throw new Error(\".featureOf() requires a name\");\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n}\nmodule.exports.featureOf = $5f18204a67f20acc$var$featureOf;\n/**\r\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\r\n * Internally this uses {@link geojsonType} to judge geometry types.\r\n *\r\n * @name collectionOf\r\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\r\n * @param {string} type expected GeoJSON type\r\n * @param {string} name name of calling function\r\n * @throws {Error} if value is not the expected type.\r\n */ function $5f18204a67f20acc$var$collectionOf(featureCollection, type, name) {\n if (!featureCollection) throw new Error(\"No featureCollection passed\");\n if (!name) throw new Error(\".collectionOf() requires a name\");\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n for(var _i = 0, _a = featureCollection.features; _i < _a.length; _i++){\n var feature = _a[_i];\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n }\n}\nmodule.exports.collectionOf = $5f18204a67f20acc$var$collectionOf;\n/**\r\n * Get Geometry from Feature or Geometry Object\r\n *\r\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\r\n * @returns {Geometry|null} GeoJSON Geometry Object\r\n * @throws {Error} if geojson is not a Feature or Geometry Object\r\n * @example\r\n * var point = {\r\n * \"type\": \"Feature\",\r\n * \"properties\": {},\r\n * \"geometry\": {\r\n * \"type\": \"Point\",\r\n * \"coordinates\": [110, 40]\r\n * }\r\n * }\r\n * var geom = turf.getGeom(point)\r\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\r\n */ function $5f18204a67f20acc$var$getGeom(geojson) {\n if (geojson.type === \"Feature\") return geojson.geometry;\n return geojson;\n}\nmodule.exports.getGeom = $5f18204a67f20acc$var$getGeom;\n/**\r\n * Get GeoJSON object's type, Geometry type is prioritize.\r\n *\r\n * @param {GeoJSON} geojson GeoJSON object\r\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\r\n * @returns {string} GeoJSON type\r\n * @example\r\n * var point = {\r\n * \"type\": \"Feature\",\r\n * \"properties\": {},\r\n * \"geometry\": {\r\n * \"type\": \"Point\",\r\n * \"coordinates\": [110, 40]\r\n * }\r\n * }\r\n * var geom = turf.getType(point)\r\n * //=\"Point\"\r\n */ function $5f18204a67f20acc$var$getType(geojson, name) {\n if (geojson.type === \"FeatureCollection\") return \"FeatureCollection\";\n if (geojson.type === \"GeometryCollection\") return \"GeometryCollection\";\n if (geojson.type === \"Feature\" && geojson.geometry !== null) return geojson.geometry.type;\n return geojson.type;\n}\nmodule.exports.getType = $5f18204a67f20acc$var$getType;\n\n});\n\n\nparcelRegister(\"b5wF2\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $8abqV = parcelRequire(\"8abqV\");\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Calculates the distance between two {@link Point|points} in degrees, radians, miles, or kilometers.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name distance\n * @param {Coord} from origin point\n * @param {Coord} to destination point\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.distance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */ function $81297f1aedde94fd$var$distance(from, to, options) {\n if (options === void 0) options = {};\n var coordinates1 = $8abqV.getCoord(from);\n var coordinates2 = $8abqV.getCoord(to);\n var dLat = $7GKQS.degreesToRadians(coordinates2[1] - coordinates1[1]);\n var dLon = $7GKQS.degreesToRadians(coordinates2[0] - coordinates1[0]);\n var lat1 = $7GKQS.degreesToRadians(coordinates1[1]);\n var lat2 = $7GKQS.degreesToRadians(coordinates2[1]);\n var a = Math.pow(Math.sin(dLat / 2), 2) + Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n return $7GKQS.radiansToLength(2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)), options.units);\n}\nmodule.exports.default = $81297f1aedde94fd$var$distance;\n\n});\n\n\nparcelRegister(\"c2GPt\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\nfunction $8c46e4e9ec718846$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $8c46e4e9ec718846$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $8c46e4e9ec718846$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $8c46e4e9ec718846$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $8c46e4e9ec718846$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $8c46e4e9ec718846$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $8c46e4e9ec718846$var$Feature = /*#__PURE__*/ function() {\n // geo json coordinates\n function Feature(geoJson, style) {\n var original = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var metadata = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n $8c46e4e9ec718846$var$_classCallCheck(this, Feature);\n $8c46e4e9ec718846$var$_defineProperty(this, \"geoJson\", void 0);\n $8c46e4e9ec718846$var$_defineProperty(this, \"style\", void 0);\n $8c46e4e9ec718846$var$_defineProperty(this, \"original\", void 0);\n $8c46e4e9ec718846$var$_defineProperty(this, \"metadata\", void 0);\n this.geoJson = geoJson;\n this.style = style;\n this.original = original;\n this.metadata = metadata;\n }\n $8c46e4e9ec718846$var$_createClass(Feature, [\n {\n key: \"getCoords\",\n value: function getCoords() {\n // @ts-ignore\n return this.geoJson.geometry.coordinates;\n }\n }\n ]);\n return Feature;\n}();\nmodule.exports[\"default\"] = $8c46e4e9ec718846$var$Feature;\n\n});\n\nparcelRegister(\"iXJhp\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\nfunction $dce0dc4eb1f5625e$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $dce0dc4eb1f5625e$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $dce0dc4eb1f5625e$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $dce0dc4eb1f5625e$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $dce0dc4eb1f5625e$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $dce0dc4eb1f5625e$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $dce0dc4eb1f5625e$var$LayerMouseEvent = /*#__PURE__*/ function() {\n // original item that this event is related to\n // internal nebula info about the object\n // the mouse [lng,lat] raycasted onto the ground\n // browser event\n // reference to nebula\n function LayerMouseEvent(nativeEvent, _ref) {\n var data = _ref.data, groundPoint = _ref.groundPoint, nebula = _ref.nebula, metadata = _ref.metadata;\n $dce0dc4eb1f5625e$var$_classCallCheck(this, LayerMouseEvent);\n $dce0dc4eb1f5625e$var$_defineProperty(this, \"canceled\", void 0);\n $dce0dc4eb1f5625e$var$_defineProperty(this, \"data\", void 0);\n $dce0dc4eb1f5625e$var$_defineProperty(this, \"metadata\", void 0);\n $dce0dc4eb1f5625e$var$_defineProperty(this, \"groundPoint\", void 0);\n $dce0dc4eb1f5625e$var$_defineProperty(this, \"nativeEvent\", void 0);\n $dce0dc4eb1f5625e$var$_defineProperty(this, \"nebula\", void 0);\n this.nativeEvent = nativeEvent;\n this.data = data;\n this.groundPoint = groundPoint;\n this.nebula = nebula;\n this.metadata = metadata;\n }\n $dce0dc4eb1f5625e$var$_createClass(LayerMouseEvent, [\n {\n key: \"stopPropagation\",\n value: function stopPropagation() {\n this.nativeEvent.stopPropagation();\n this.canceled = true;\n }\n }\n ]);\n return LayerMouseEvent;\n}();\nmodule.exports[\"default\"] = $dce0dc4eb1f5625e$var$LayerMouseEvent;\n\n});\n\nparcelRegister(\"7uZXb\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\n\nvar $575b646c50bb7391$var$_events = $575b646c50bb7391$var$_interopRequireDefault((parcelRequire(\"8nJ5N\")));\n\nvar $eiPsc = parcelRequire(\"eiPsc\");\nfunction $575b646c50bb7391$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $575b646c50bb7391$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $575b646c50bb7391$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $575b646c50bb7391$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $575b646c50bb7391$var$_typeof(obj);\n}\nfunction $575b646c50bb7391$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $575b646c50bb7391$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $575b646c50bb7391$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $575b646c50bb7391$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $575b646c50bb7391$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $575b646c50bb7391$var$_createSuper(Derived) {\n return function() {\n var Super = $575b646c50bb7391$var$_getPrototypeOf(Derived), result;\n if ($575b646c50bb7391$var$_isNativeReflectConstruct()) {\n var NewTarget = $575b646c50bb7391$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $575b646c50bb7391$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $575b646c50bb7391$var$_possibleConstructorReturn(self, call) {\n if (call && ($575b646c50bb7391$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $575b646c50bb7391$var$_assertThisInitialized(self);\n}\nfunction $575b646c50bb7391$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $575b646c50bb7391$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $575b646c50bb7391$var$_getPrototypeOf(o) {\n $575b646c50bb7391$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $575b646c50bb7391$var$_getPrototypeOf(o);\n}\nfunction $575b646c50bb7391$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $575b646c50bb7391$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $575b646c50bb7391$var$_setPrototypeOf(o, p) {\n $575b646c50bb7391$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $575b646c50bb7391$var$_setPrototypeOf(o, p);\n}\nfunction $575b646c50bb7391$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $575b646c50bb7391$var$NebulaLayer = /*#__PURE__*/ function(_Event$EventEmitter) {\n $575b646c50bb7391$var$_inherits(NebulaLayer, _Event$EventEmitter);\n var _super = $575b646c50bb7391$var$_createSuper(NebulaLayer);\n // flags\n //\n function NebulaLayer(_ref) {\n var _this;\n var getData = _ref.getData, on = _ref.on, toNebulaFeature = _ref.toNebulaFeature;\n $575b646c50bb7391$var$_classCallCheck(this, NebulaLayer);\n _this = _super.call(this);\n $575b646c50bb7391$var$_defineProperty($575b646c50bb7391$var$_assertThisInitialized(_this), \"getData\", void 0);\n $575b646c50bb7391$var$_defineProperty($575b646c50bb7391$var$_assertThisInitialized(_this), \"toNebulaFeature\", void 0);\n $575b646c50bb7391$var$_defineProperty($575b646c50bb7391$var$_assertThisInitialized(_this), \"id\", void 0);\n $575b646c50bb7391$var$_defineProperty($575b646c50bb7391$var$_assertThisInitialized(_this), \"helperLayers\", void 0);\n $575b646c50bb7391$var$_defineProperty($575b646c50bb7391$var$_assertThisInitialized(_this), \"usesMapEvents\", false);\n $575b646c50bb7391$var$_defineProperty($575b646c50bb7391$var$_assertThisInitialized(_this), \"enablePicking\", false);\n $575b646c50bb7391$var$_defineProperty($575b646c50bb7391$var$_assertThisInitialized(_this), \"enableSelection\", false);\n _this.id = (0, $eiPsc.default)();\n _this.getData = getData;\n _this.toNebulaFeature = toNebulaFeature;\n _this.helperLayers = [];\n if (on) // @ts-ignore\n Object.keys(on).forEach(function(key) {\n return _this.on(key, on[key]);\n });\n return _this;\n }\n $575b646c50bb7391$var$_createClass(NebulaLayer, [\n {\n key: \"render\",\n value: function render(config) {\n return null;\n }\n }\n ]);\n return NebulaLayer;\n}($575b646c50bb7391$var$_events[\"default\"].EventEmitter);\nmodule.exports[\"default\"] = $575b646c50bb7391$var$NebulaLayer;\n\n});\nparcelRegister(\"8nJ5N\", function(module, exports) {\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\"use strict\";\nvar $61a3731f6cdd44eb$var$R = typeof Reflect === \"object\" ? Reflect : null;\nvar $61a3731f6cdd44eb$var$ReflectApply = $61a3731f6cdd44eb$var$R && typeof $61a3731f6cdd44eb$var$R.apply === \"function\" ? $61a3731f6cdd44eb$var$R.apply : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n};\nvar $61a3731f6cdd44eb$var$ReflectOwnKeys;\nif ($61a3731f6cdd44eb$var$R && typeof $61a3731f6cdd44eb$var$R.ownKeys === \"function\") $61a3731f6cdd44eb$var$ReflectOwnKeys = $61a3731f6cdd44eb$var$R.ownKeys;\nelse if (Object.getOwnPropertySymbols) $61a3731f6cdd44eb$var$ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));\n};\nelse $61a3731f6cdd44eb$var$ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n};\nfunction $61a3731f6cdd44eb$var$ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\nvar $61a3731f6cdd44eb$var$NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n};\nfunction $61a3731f6cdd44eb$var$EventEmitter() {\n $61a3731f6cdd44eb$var$EventEmitter.init.call(this);\n}\nmodule.exports = $61a3731f6cdd44eb$var$EventEmitter;\nmodule.exports.once = $61a3731f6cdd44eb$var$once;\n// Backwards-compat with node 0.10.x\n$61a3731f6cdd44eb$var$EventEmitter.EventEmitter = $61a3731f6cdd44eb$var$EventEmitter;\n$61a3731f6cdd44eb$var$EventEmitter.prototype._events = undefined;\n$61a3731f6cdd44eb$var$EventEmitter.prototype._eventsCount = 0;\n$61a3731f6cdd44eb$var$EventEmitter.prototype._maxListeners = undefined;\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar $61a3731f6cdd44eb$var$defaultMaxListeners = 10;\nfunction $61a3731f6cdd44eb$var$checkListener(listener) {\n if (typeof listener !== \"function\") throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n}\nObject.defineProperty($61a3731f6cdd44eb$var$EventEmitter, \"defaultMaxListeners\", {\n enumerable: true,\n get: function() {\n return $61a3731f6cdd44eb$var$defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== \"number\" || arg < 0 || $61a3731f6cdd44eb$var$NumberIsNaN(arg)) throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + \".\");\n $61a3731f6cdd44eb$var$defaultMaxListeners = arg;\n }\n});\n$61a3731f6cdd44eb$var$EventEmitter.init = function() {\n if (this._events === undefined || this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n this._maxListeners = this._maxListeners || undefined;\n};\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\n$61a3731f6cdd44eb$var$EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== \"number\" || n < 0 || $61a3731f6cdd44eb$var$NumberIsNaN(n)) throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + \".\");\n this._maxListeners = n;\n return this;\n};\nfunction $61a3731f6cdd44eb$var$_getMaxListeners(that) {\n if (that._maxListeners === undefined) return $61a3731f6cdd44eb$var$EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n$61a3731f6cdd44eb$var$EventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $61a3731f6cdd44eb$var$_getMaxListeners(this);\n};\n$61a3731f6cdd44eb$var$EventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for(var i = 1; i < arguments.length; i++)args.push(arguments[i]);\n var doError = type === \"error\";\n var events = this._events;\n if (events !== undefined) doError = doError && events.error === undefined;\n else if (!doError) return false;\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0) er = args[0];\n if (er instanceof Error) // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n // At least give some kind of context to the user\n var err = new Error(\"Unhandled error.\" + (er ? \" (\" + er.message + \")\" : \"\"));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n var handler = events[type];\n if (handler === undefined) return false;\n if (typeof handler === \"function\") $61a3731f6cdd44eb$var$ReflectApply(handler, this, args);\n else {\n var len = handler.length;\n var listeners = $61a3731f6cdd44eb$var$arrayClone(handler, len);\n for(var i = 0; i < len; ++i)$61a3731f6cdd44eb$var$ReflectApply(listeners[i], this, args);\n }\n return true;\n};\nfunction $61a3731f6cdd44eb$var$_addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n $61a3731f6cdd44eb$var$checkListener(listener);\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit(\"newListener\", type, listener.listener ? listener.listener : listener);\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === \"function\") // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [\n listener,\n existing\n ] : [\n existing,\n listener\n ];\n else if (prepend) existing.unshift(listener);\n else existing.push(listener);\n // Check for listener leak\n m = $61a3731f6cdd44eb$var$_getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error(\"Possible EventEmitter memory leak detected. \" + existing.length + \" \" + String(type) + \" listeners \" + \"added. Use emitter.setMaxListeners() to \" + \"increase limit\");\n w.name = \"MaxListenersExceededWarning\";\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n $61a3731f6cdd44eb$var$ProcessEmitWarning(w);\n }\n }\n return target;\n}\n$61a3731f6cdd44eb$var$EventEmitter.prototype.addListener = function addListener(type, listener) {\n return $61a3731f6cdd44eb$var$_addListener(this, type, listener, false);\n};\n$61a3731f6cdd44eb$var$EventEmitter.prototype.on = $61a3731f6cdd44eb$var$EventEmitter.prototype.addListener;\n$61a3731f6cdd44eb$var$EventEmitter.prototype.prependListener = function prependListener(type, listener) {\n return $61a3731f6cdd44eb$var$_addListener(this, type, listener, true);\n};\nfunction $61a3731f6cdd44eb$var$onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0) return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\nfunction $61a3731f6cdd44eb$var$_onceWrap(target, type, listener) {\n var state = {\n fired: false,\n wrapFn: undefined,\n target: target,\n type: type,\n listener: listener\n };\n var wrapped = $61a3731f6cdd44eb$var$onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n$61a3731f6cdd44eb$var$EventEmitter.prototype.once = function once(type, listener) {\n $61a3731f6cdd44eb$var$checkListener(listener);\n this.on(type, $61a3731f6cdd44eb$var$_onceWrap(this, type, listener));\n return this;\n};\n$61a3731f6cdd44eb$var$EventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) {\n $61a3731f6cdd44eb$var$checkListener(listener);\n this.prependListener(type, $61a3731f6cdd44eb$var$_onceWrap(this, type, listener));\n return this;\n};\n// Emits a 'removeListener' event if and only if the listener was removed.\n$61a3731f6cdd44eb$var$EventEmitter.prototype.removeListener = function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n $61a3731f6cdd44eb$var$checkListener(listener);\n events = this._events;\n if (events === undefined) return this;\n list = events[type];\n if (list === undefined) return this;\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0) this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener) this.emit(\"removeListener\", type, list.listener || listener);\n }\n } else if (typeof list !== \"function\") {\n position = -1;\n for(i = list.length - 1; i >= 0; i--)if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n if (position < 0) return this;\n if (position === 0) list.shift();\n else $61a3731f6cdd44eb$var$spliceOne(list, position);\n if (list.length === 1) events[type] = list[0];\n if (events.removeListener !== undefined) this.emit(\"removeListener\", type, originalListener || listener);\n }\n return this;\n};\n$61a3731f6cdd44eb$var$EventEmitter.prototype.off = $61a3731f6cdd44eb$var$EventEmitter.prototype.removeListener;\n$61a3731f6cdd44eb$var$EventEmitter.prototype.removeAllListeners = function removeAllListeners(type) {\n var listeners, events, i;\n events = this._events;\n if (events === undefined) return this;\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0) this._events = Object.create(null);\n else delete events[type];\n }\n return this;\n }\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for(i = 0; i < keys.length; ++i){\n key = keys[i];\n if (key === \"removeListener\") continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners(\"removeListener\");\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n listeners = events[type];\n if (typeof listeners === \"function\") this.removeListener(type, listeners);\n else if (listeners !== undefined) // LIFO order\n for(i = listeners.length - 1; i >= 0; i--)this.removeListener(type, listeners[i]);\n return this;\n};\nfunction $61a3731f6cdd44eb$var$_listeners(target, type, unwrap) {\n var events = target._events;\n if (events === undefined) return [];\n var evlistener = events[type];\n if (evlistener === undefined) return [];\n if (typeof evlistener === \"function\") return unwrap ? [\n evlistener.listener || evlistener\n ] : [\n evlistener\n ];\n return unwrap ? $61a3731f6cdd44eb$var$unwrapListeners(evlistener) : $61a3731f6cdd44eb$var$arrayClone(evlistener, evlistener.length);\n}\n$61a3731f6cdd44eb$var$EventEmitter.prototype.listeners = function listeners(type) {\n return $61a3731f6cdd44eb$var$_listeners(this, type, true);\n};\n$61a3731f6cdd44eb$var$EventEmitter.prototype.rawListeners = function rawListeners(type) {\n return $61a3731f6cdd44eb$var$_listeners(this, type, false);\n};\n$61a3731f6cdd44eb$var$EventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === \"function\") return emitter.listenerCount(type);\n else return $61a3731f6cdd44eb$var$listenerCount.call(emitter, type);\n};\n$61a3731f6cdd44eb$var$EventEmitter.prototype.listenerCount = $61a3731f6cdd44eb$var$listenerCount;\nfunction $61a3731f6cdd44eb$var$listenerCount(type) {\n var events = this._events;\n if (events !== undefined) {\n var evlistener = events[type];\n if (typeof evlistener === \"function\") return 1;\n else if (evlistener !== undefined) return evlistener.length;\n }\n return 0;\n}\n$61a3731f6cdd44eb$var$EventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? $61a3731f6cdd44eb$var$ReflectOwnKeys(this._events) : [];\n};\nfunction $61a3731f6cdd44eb$var$arrayClone(arr, n) {\n var copy = new Array(n);\n for(var i = 0; i < n; ++i)copy[i] = arr[i];\n return copy;\n}\nfunction $61a3731f6cdd44eb$var$spliceOne(list, index) {\n for(; index + 1 < list.length; index++)list[index] = list[index + 1];\n list.pop();\n}\nfunction $61a3731f6cdd44eb$var$unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for(var i = 0; i < ret.length; ++i)ret[i] = arr[i].listener || arr[i];\n return ret;\n}\nfunction $61a3731f6cdd44eb$var$once(emitter, name) {\n return new Promise(function(resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n function resolver() {\n if (typeof emitter.removeListener === \"function\") emitter.removeListener(\"error\", errorListener);\n resolve([].slice.call(arguments));\n }\n $61a3731f6cdd44eb$var$eventTargetAgnosticAddListener(emitter, name, resolver, {\n once: true\n });\n if (name !== \"error\") $61a3731f6cdd44eb$var$addErrorHandlerIfEventEmitter(emitter, errorListener, {\n once: true\n });\n });\n}\nfunction $61a3731f6cdd44eb$var$addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === \"function\") $61a3731f6cdd44eb$var$eventTargetAgnosticAddListener(emitter, \"error\", handler, flags);\n}\nfunction $61a3731f6cdd44eb$var$eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === \"function\") {\n if (flags.once) emitter.once(name, listener);\n else emitter.on(name, listener);\n } else if (typeof emitter.addEventListener === \"function\") // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) emitter.removeEventListener(name, wrapListener);\n listener(arg);\n });\n else throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n}\n\n});\n\nparcelRegister(\"eiPsc\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $a69aa8cab7633cac$export$2e2bcd8739ae039; });\n\nvar $8xMbH = parcelRequire(\"8xMbH\");\n\nvar $4NkLK = parcelRequire(\"4NkLK\");\nfunction $a69aa8cab7633cac$var$v4(options, buf, offset) {\n var i = buf && offset || 0;\n if (typeof options == \"string\") {\n buf = options === \"binary\" ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n var rnds = options.random || (options.rng || (0, $8xMbH.default))(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n if (buf) for(var ii = 0; ii < 16; ++ii)buf[i + ii] = rnds[ii];\n return buf || (0, $4NkLK.default)(rnds);\n}\nvar $a69aa8cab7633cac$export$2e2bcd8739ae039 = $a69aa8cab7633cac$var$v4;\n\n});\nparcelRegister(\"8xMbH\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6386c8e1b9cbe6bc$export$2e2bcd8739ae039; });\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\nvar $6386c8e1b9cbe6bc$var$getRandomValues = typeof crypto != \"undefined\" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != \"undefined\" && typeof msCrypto.getRandomValues == \"function\" && msCrypto.getRandomValues.bind(msCrypto);\nvar $6386c8e1b9cbe6bc$var$rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\nfunction $6386c8e1b9cbe6bc$export$2e2bcd8739ae039() {\n if (!$6386c8e1b9cbe6bc$var$getRandomValues) throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");\n return $6386c8e1b9cbe6bc$var$getRandomValues($6386c8e1b9cbe6bc$var$rnds8);\n}\n\n});\n\nparcelRegister(\"4NkLK\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $37dbd9598c955d8d$export$2e2bcd8739ae039; });\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */ var $37dbd9598c955d8d$var$byteToHex = [];\nfor(var $37dbd9598c955d8d$var$i = 0; $37dbd9598c955d8d$var$i < 256; ++$37dbd9598c955d8d$var$i)$37dbd9598c955d8d$var$byteToHex[$37dbd9598c955d8d$var$i] = ($37dbd9598c955d8d$var$i + 0x100).toString(16).substr(1);\nfunction $37dbd9598c955d8d$var$bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = $37dbd9598c955d8d$var$byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return [\n bth[buf[i++]],\n bth[buf[i++]],\n bth[buf[i++]],\n bth[buf[i++]],\n \"-\",\n bth[buf[i++]],\n bth[buf[i++]],\n \"-\",\n bth[buf[i++]],\n bth[buf[i++]],\n \"-\",\n bth[buf[i++]],\n bth[buf[i++]],\n \"-\",\n bth[buf[i++]],\n bth[buf[i++]],\n bth[buf[i++]],\n bth[buf[i++]],\n bth[buf[i++]],\n bth[buf[i++]]\n ].join(\"\");\n}\nvar $37dbd9598c955d8d$export$2e2bcd8739ae039 = $37dbd9598c955d8d$var$bytesToUuid;\n\n});\n\n\n\nparcelRegister(\"faO1n\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\n\nvar $4agoo = parcelRequire(\"4agoo\");\n\nvar $b0be975ce9f04685$var$_nebulaLayer = $b0be975ce9f04685$var$_interopRequireDefault((parcelRequire(\"7uZXb\")));\n\nvar $h5pu5 = parcelRequire(\"h5pu5\");\n\nvar $b0be975ce9f04685$var$_deckCache = $b0be975ce9f04685$var$_interopRequireDefault((parcelRequire(\"pgVSk\")));\nfunction $b0be975ce9f04685$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $b0be975ce9f04685$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $b0be975ce9f04685$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $b0be975ce9f04685$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $b0be975ce9f04685$var$_typeof(obj);\n}\nfunction $b0be975ce9f04685$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $b0be975ce9f04685$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $b0be975ce9f04685$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $b0be975ce9f04685$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $b0be975ce9f04685$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $b0be975ce9f04685$var$_createSuper(Derived) {\n return function() {\n var Super = $b0be975ce9f04685$var$_getPrototypeOf(Derived), result;\n if ($b0be975ce9f04685$var$_isNativeReflectConstruct()) {\n var NewTarget = $b0be975ce9f04685$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $b0be975ce9f04685$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $b0be975ce9f04685$var$_possibleConstructorReturn(self, call) {\n if (call && ($b0be975ce9f04685$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $b0be975ce9f04685$var$_assertThisInitialized(self);\n}\nfunction $b0be975ce9f04685$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $b0be975ce9f04685$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $b0be975ce9f04685$var$_getPrototypeOf(o) {\n $b0be975ce9f04685$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $b0be975ce9f04685$var$_getPrototypeOf(o);\n}\nfunction $b0be975ce9f04685$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $b0be975ce9f04685$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $b0be975ce9f04685$var$_setPrototypeOf(o, p) {\n $b0be975ce9f04685$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $b0be975ce9f04685$var$_setPrototypeOf(o, p);\n}\nfunction $b0be975ce9f04685$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $b0be975ce9f04685$var$JunctionsLayer = /*#__PURE__*/ function(_NebulaLayer) {\n $b0be975ce9f04685$var$_inherits(JunctionsLayer, _NebulaLayer);\n var _super = $b0be975ce9f04685$var$_createSuper(JunctionsLayer);\n function JunctionsLayer(config) {\n var _this;\n $b0be975ce9f04685$var$_classCallCheck(this, JunctionsLayer);\n _this = _super.call(this, config);\n $b0be975ce9f04685$var$_defineProperty($b0be975ce9f04685$var$_assertThisInitialized(_this), \"deckCache\", void 0);\n _this.deckCache = new $b0be975ce9f04685$var$_deckCache[\"default\"](config.getData, function(data) {\n return config.toNebulaFeature(data);\n });\n _this.enablePicking = true;\n return _this;\n }\n $b0be975ce9f04685$var$_createClass(JunctionsLayer, [\n {\n key: \"render\",\n value: function render(_ref) {\n var nebula = _ref.nebula;\n var defaultColor = [\n 0x0,\n 0x0,\n 0x0,\n 0xff\n ];\n var _this$deckCache = this.deckCache, objects = _this$deckCache.objects, updateTrigger = _this$deckCache.updateTrigger;\n return new $4agoo.JunctionScatterplotLayer({\n id: \"junctions-\".concat(this.id),\n data: objects,\n opacity: 1,\n // @ts-ignore\n fp64: false,\n pickable: true,\n getPosition: function getPosition(nf) {\n return nf.geoJson.geometry.coordinates;\n },\n getFillColor: function getFillColor(nf) {\n return (0, $h5pu5.toDeckColor)(nf.style.fillColor) || defaultColor;\n },\n getStrokeColor: function getStrokeColor(nf) {\n return (0, $h5pu5.toDeckColor)(nf.style.outlineColor) || (0, $h5pu5.toDeckColor)(nf.style.fillColor) || defaultColor;\n },\n getRadius: function getRadius(nf) {\n return nf.style.pointRadiusMeters + nf.style.outlineRadiusMeters || 1;\n },\n getInnerRadius: function getInnerRadius(nf) {\n return nf.style.pointRadiusMeters || 0.5;\n },\n parameters: {\n depthTest: false,\n blend: false\n },\n updateTriggers: {\n all: updateTrigger\n },\n nebulaLayer: this\n });\n }\n }\n ]);\n return JunctionsLayer;\n}($b0be975ce9f04685$var$_nebulaLayer[\"default\"]);\nmodule.exports[\"default\"] = $b0be975ce9f04685$var$JunctionsLayer;\n\n});\nparcelRegister(\"4agoo\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(module.exports, \"ArrowStyles\", {\n enumerable: true,\n get: function get() {\n return $5eHNu.ArrowStyles;\n }\n});\nObject.defineProperty(module.exports, \"DEFAULT_ARROWS\", {\n enumerable: true,\n get: function get() {\n return $5eHNu.DEFAULT_ARROWS;\n }\n});\nObject.defineProperty(module.exports, \"MAX_ARROWS\", {\n enumerable: true,\n get: function get() {\n return $5eHNu.MAX_ARROWS;\n }\n});\nObject.defineProperty(module.exports, \"EditableGeoJsonLayer\", {\n enumerable: true,\n get: function get() {\n return $3084cfcdfe53debb$var$_editableGeojsonLayer[\"default\"];\n }\n});\nObject.defineProperty(module.exports, \"EditableH3ClusterLayer\", {\n enumerable: true,\n get: function get() {\n return $3084cfcdfe53debb$var$_editableH3ClusterLayer[\"default\"];\n }\n});\nObject.defineProperty(module.exports, \"SelectionLayer\", {\n enumerable: true,\n get: function get() {\n return $3084cfcdfe53debb$var$_selectionLayer[\"default\"];\n }\n});\nObject.defineProperty(module.exports, \"ElevatedEditHandleLayer\", {\n enumerable: true,\n get: function get() {\n return $3084cfcdfe53debb$var$_elevatedEditHandleLayer[\"default\"];\n }\n});\nObject.defineProperty(module.exports, \"PathOutlineLayer\", {\n enumerable: true,\n get: function get() {\n return $3084cfcdfe53debb$var$_pathOutlineLayer[\"default\"];\n }\n});\nObject.defineProperty(module.exports, \"PathMarkerLayer\", {\n enumerable: true,\n get: function get() {\n return $3084cfcdfe53debb$var$_pathMarkerLayer[\"default\"];\n }\n});\nObject.defineProperty(module.exports, \"JunctionScatterplotLayer\", {\n enumerable: true,\n get: function get() {\n return $3084cfcdfe53debb$var$_junctionScatterplotLayer[\"default\"];\n }\n});\nObject.defineProperty(module.exports, \"toDeckColor\", {\n enumerable: true,\n get: function get() {\n return $b3BRI.toDeckColor;\n }\n});\n\nvar $5eHNu = parcelRequire(\"5eHNu\");\n\nvar $3084cfcdfe53debb$var$_editableGeojsonLayer = $3084cfcdfe53debb$var$_interopRequireDefault((parcelRequire(\"lHhsg\")));\n\nvar $3084cfcdfe53debb$var$_editableH3ClusterLayer = $3084cfcdfe53debb$var$_interopRequireDefault((parcelRequire(\"QQWRf\")));\n\nvar $3084cfcdfe53debb$var$_selectionLayer = $3084cfcdfe53debb$var$_interopRequireDefault((parcelRequire(\"7Umyz\")));\n\nvar $3084cfcdfe53debb$var$_elevatedEditHandleLayer = $3084cfcdfe53debb$var$_interopRequireDefault((parcelRequire(\"5p6F6\")));\n\nvar $3084cfcdfe53debb$var$_pathOutlineLayer = $3084cfcdfe53debb$var$_interopRequireDefault((parcelRequire(\"hwgS8\")));\n\nvar $3084cfcdfe53debb$var$_pathMarkerLayer = $3084cfcdfe53debb$var$_interopRequireDefault((parcelRequire(\"ctByJ\")));\n\nvar $3084cfcdfe53debb$var$_junctionScatterplotLayer = $3084cfcdfe53debb$var$_interopRequireDefault((parcelRequire(\"gi8jT\")));\n\nvar $b3BRI = parcelRequire(\"b3BRI\");\nfunction $3084cfcdfe53debb$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\n});\nparcelRegister(\"5eHNu\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.MAX_ARROWS = module.exports.DEFAULT_ARROWS = module.exports.ArrowStyles = void 0;\n// Describes the arrow style of polylines\nvar $3d003bc0222b5192$var$ArrowStyles = {\n NONE: 0,\n FORWARD: 1,\n BACKWARD: 2,\n BOTH: 3\n};\nmodule.exports.ArrowStyles = $3d003bc0222b5192$var$ArrowStyles;\nvar $3d003bc0222b5192$var$DEFAULT_ARROWS = 1;\nmodule.exports.DEFAULT_ARROWS = $3d003bc0222b5192$var$DEFAULT_ARROWS;\nvar $3d003bc0222b5192$var$MAX_ARROWS = 3;\nmodule.exports.MAX_ARROWS = $3d003bc0222b5192$var$MAX_ARROWS;\n\n});\n\nparcelRegister(\"lHhsg\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\n\nvar $ee5EG = parcelRequire(\"ee5EG\");\nvar $h685K = parcelRequire(\"h685K\");\nvar $cYQ5y = parcelRequire(\"cYQ5y\");\nvar $9pc7R = parcelRequire(\"9pc7R\");\n\nvar $cQSdn = parcelRequire(\"cQSdn\");\n\nvar $9brng = parcelRequire(\"9brng\");\n\nvar $fcbb27514d9ea607$var$_editableLayer = $fcbb27514d9ea607$var$_interopRequireDefault((parcelRequire(\"7epLg\")));\n\nvar $fcbb27514d9ea607$var$_editablePathLayer = $fcbb27514d9ea607$var$_interopRequireDefault((parcelRequire(\"aQ3Iz\")));\nfunction $fcbb27514d9ea607$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $fcbb27514d9ea607$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $fcbb27514d9ea607$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $fcbb27514d9ea607$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $fcbb27514d9ea607$var$_typeof(obj);\n}\nfunction $fcbb27514d9ea607$var$ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction $fcbb27514d9ea607$var$_objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) $fcbb27514d9ea607$var$ownKeys(Object(source), true).forEach(function(key) {\n $fcbb27514d9ea607$var$_defineProperty(target, key, source[key]);\n });\n else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n else $fcbb27514d9ea607$var$ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction $fcbb27514d9ea607$var$_createForOfIteratorHelper(o) {\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = $fcbb27514d9ea607$var$_unsupportedIterableToArray(o))) {\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var it, normalCompletion = true, didErr = false, err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally{\n if (didErr) throw err;\n }\n }\n };\n}\nfunction $fcbb27514d9ea607$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $fcbb27514d9ea607$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $fcbb27514d9ea607$var$_arrayLikeToArray(o, minLen);\n}\nfunction $fcbb27514d9ea607$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $fcbb27514d9ea607$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $fcbb27514d9ea607$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $fcbb27514d9ea607$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $fcbb27514d9ea607$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $fcbb27514d9ea607$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $fcbb27514d9ea607$var$_get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) $fcbb27514d9ea607$var$_get = Reflect.get;\n else $fcbb27514d9ea607$var$_get = function _get(target, property, receiver) {\n var base = $fcbb27514d9ea607$var$_superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) return desc.get.call(receiver);\n return desc.value;\n };\n return $fcbb27514d9ea607$var$_get(target, property, receiver || target);\n}\nfunction $fcbb27514d9ea607$var$_superPropBase(object, property) {\n while(!Object.prototype.hasOwnProperty.call(object, property)){\n object = $fcbb27514d9ea607$var$_getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nfunction $fcbb27514d9ea607$var$_createSuper(Derived) {\n return function() {\n var Super = $fcbb27514d9ea607$var$_getPrototypeOf(Derived), result;\n if ($fcbb27514d9ea607$var$_isNativeReflectConstruct()) {\n var NewTarget = $fcbb27514d9ea607$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $fcbb27514d9ea607$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $fcbb27514d9ea607$var$_possibleConstructorReturn(self, call) {\n if (call && ($fcbb27514d9ea607$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $fcbb27514d9ea607$var$_assertThisInitialized(self);\n}\nfunction $fcbb27514d9ea607$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $fcbb27514d9ea607$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $fcbb27514d9ea607$var$_getPrototypeOf(o) {\n $fcbb27514d9ea607$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $fcbb27514d9ea607$var$_getPrototypeOf(o);\n}\nfunction $fcbb27514d9ea607$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $fcbb27514d9ea607$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $fcbb27514d9ea607$var$_setPrototypeOf(o, p) {\n $fcbb27514d9ea607$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $fcbb27514d9ea607$var$_setPrototypeOf(o, p);\n}\nfunction $fcbb27514d9ea607$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $fcbb27514d9ea607$var$DEFAULT_LINE_COLOR = [\n 0x0,\n 0x0,\n 0x0,\n 0x99\n];\nvar $fcbb27514d9ea607$var$DEFAULT_FILL_COLOR = [\n 0x0,\n 0x0,\n 0x0,\n 0x90\n];\nvar $fcbb27514d9ea607$var$DEFAULT_SELECTED_LINE_COLOR = [\n 0x0,\n 0x0,\n 0x0,\n 0xff\n];\nvar $fcbb27514d9ea607$var$DEFAULT_SELECTED_FILL_COLOR = [\n 0x0,\n 0x0,\n 0x90,\n 0x90\n];\nvar $fcbb27514d9ea607$var$DEFAULT_TENTATIVE_LINE_COLOR = [\n 0x90,\n 0x90,\n 0x90,\n 0xff\n];\nvar $fcbb27514d9ea607$var$DEFAULT_TENTATIVE_FILL_COLOR = [\n 0x90,\n 0x90,\n 0x90,\n 0x90\n];\nvar $fcbb27514d9ea607$var$DEFAULT_EDITING_EXISTING_POINT_COLOR = [\n 0xc0,\n 0x0,\n 0x0,\n 0xff\n];\nvar $fcbb27514d9ea607$var$DEFAULT_EDITING_INTERMEDIATE_POINT_COLOR = [\n 0x0,\n 0x0,\n 0x0,\n 0x80\n];\nvar $fcbb27514d9ea607$var$DEFAULT_EDITING_SNAP_POINT_COLOR = [\n 0x7c,\n 0x00,\n 0xc0,\n 0xff\n];\nvar $fcbb27514d9ea607$var$DEFAULT_EDITING_POINT_OUTLINE_COLOR = [\n 0xff,\n 0xff,\n 0xff,\n 0xff\n];\nvar $fcbb27514d9ea607$var$DEFAULT_EDITING_EXISTING_POINT_RADIUS = 5;\nvar $fcbb27514d9ea607$var$DEFAULT_EDITING_INTERMEDIATE_POINT_RADIUS = 3;\nvar $fcbb27514d9ea607$var$DEFAULT_EDITING_SNAP_POINT_RADIUS = 7;\nvar $fcbb27514d9ea607$var$DEFAULT_TOOLTIP_FONT_SIZE = 32 * $9brng.PROJECTED_PIXEL_SIZE_MULTIPLIER;\nvar $fcbb27514d9ea607$var$DEFAULT_EDIT_MODE = $cQSdn.DrawPolygonMode;\nfunction $fcbb27514d9ea607$var$guideAccessor(accessor) {\n if (!accessor || typeof accessor !== \"function\") return accessor;\n return function(guideMaybeWrapped) {\n return accessor($fcbb27514d9ea607$var$unwrapGuide(guideMaybeWrapped));\n };\n} // The object handed to us from deck.gl is different depending on the version of deck.gl used, unwrap as necessary\nfunction $fcbb27514d9ea607$var$unwrapGuide(guideMaybeWrapped) {\n if (guideMaybeWrapped.__source) return guideMaybeWrapped.__source.object;\n else if (guideMaybeWrapped.sourceFeature) return guideMaybeWrapped.sourceFeature.feature;\n // It is not wrapped, return as is\n return guideMaybeWrapped;\n}\nfunction $fcbb27514d9ea607$var$getEditHandleColor(handle) {\n switch(handle.properties.editHandleType){\n case \"existing\":\n return $fcbb27514d9ea607$var$DEFAULT_EDITING_EXISTING_POINT_COLOR;\n case \"snap-source\":\n return $fcbb27514d9ea607$var$DEFAULT_EDITING_SNAP_POINT_COLOR;\n case \"intermediate\":\n default:\n return $fcbb27514d9ea607$var$DEFAULT_EDITING_INTERMEDIATE_POINT_COLOR;\n }\n}\nfunction $fcbb27514d9ea607$var$getEditHandleOutlineColor(handle) {\n return $fcbb27514d9ea607$var$DEFAULT_EDITING_POINT_OUTLINE_COLOR;\n}\nfunction $fcbb27514d9ea607$var$getEditHandleRadius(handle) {\n switch(handle.properties.editHandleType){\n case \"existing\":\n return $fcbb27514d9ea607$var$DEFAULT_EDITING_EXISTING_POINT_RADIUS;\n case \"snap\":\n return $fcbb27514d9ea607$var$DEFAULT_EDITING_SNAP_POINT_RADIUS;\n case \"intermediate\":\n default:\n return $fcbb27514d9ea607$var$DEFAULT_EDITING_INTERMEDIATE_POINT_RADIUS;\n }\n}\nvar $fcbb27514d9ea607$var$defaultProps = {\n mode: $fcbb27514d9ea607$var$DEFAULT_EDIT_MODE,\n // Edit and interaction events\n onEdit: function onEdit() {},\n pickable: true,\n pickingRadius: 10,\n pickingDepth: 5,\n fp64: false,\n filled: true,\n stroked: true,\n lineWidthScale: $9brng.PROJECTED_PIXEL_SIZE_MULTIPLIER,\n lineWidthMinPixels: 1,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n pickingLineWidthExtraPixels: 0,\n lineWidthUnits: \"pixels\",\n lineJointRounded: false,\n lineCapRounded: false,\n lineMiterLimit: 4,\n pointRadiusScale: 1,\n pointRadiusMinPixels: 2,\n pointRadiusMaxPixels: Number.MAX_SAFE_INTEGER,\n getLineColor: function getLineColor(feature, isSelected, mode) {\n return isSelected ? $fcbb27514d9ea607$var$DEFAULT_SELECTED_LINE_COLOR : $fcbb27514d9ea607$var$DEFAULT_LINE_COLOR;\n },\n getFillColor: function getFillColor(feature, isSelected, mode) {\n return isSelected ? $fcbb27514d9ea607$var$DEFAULT_SELECTED_FILL_COLOR : $fcbb27514d9ea607$var$DEFAULT_FILL_COLOR;\n },\n getRadius: function getRadius(f) {\n return f && f.properties && f.properties.radius || f && f.properties && f.properties.size || 1;\n },\n getLineWidth: function getLineWidth(f) {\n return f && f.properties && f.properties.lineWidth || 3;\n },\n // Tentative feature rendering\n getTentativeLineColor: function getTentativeLineColor(f) {\n return $fcbb27514d9ea607$var$DEFAULT_TENTATIVE_LINE_COLOR;\n },\n getTentativeFillColor: function getTentativeFillColor(f) {\n return $fcbb27514d9ea607$var$DEFAULT_TENTATIVE_FILL_COLOR;\n },\n getTentativeLineWidth: function getTentativeLineWidth(f) {\n return f && f.properties && f.properties.lineWidth || 3;\n },\n editHandleType: \"point\",\n // point handles\n editHandlePointRadiusScale: 1,\n editHandlePointOutline: true,\n editHandlePointStrokeWidth: 2,\n editHandlePointRadiusUnits: \"pixels\",\n editHandlePointRadiusMinPixels: 4,\n editHandlePointRadiusMaxPixels: 8,\n getEditHandlePointColor: $fcbb27514d9ea607$var$getEditHandleColor,\n getEditHandlePointOutlineColor: $fcbb27514d9ea607$var$getEditHandleOutlineColor,\n getEditHandlePointRadius: $fcbb27514d9ea607$var$getEditHandleRadius,\n // icon handles\n editHandleIconAtlas: null,\n editHandleIconMapping: null,\n editHandleIconSizeScale: 1,\n editHandleIconSizeUnits: \"pixels\",\n getEditHandleIcon: function getEditHandleIcon(handle) {\n return handle.properties.editHandleType;\n },\n getEditHandleIconSize: 10,\n getEditHandleIconColor: $fcbb27514d9ea607$var$getEditHandleColor,\n getEditHandleIconAngle: 0,\n // misc\n billboard: true\n}; // Mapping of mode name to mode class (for legacy purposes)\nvar $fcbb27514d9ea607$var$modeNameMapping = {\n view: $cQSdn.ViewMode,\n // Alter modes\n modify: $cQSdn.ModifyMode,\n translate: new $cQSdn.SnappableMode(new $cQSdn.TranslateMode()),\n transform: new $cQSdn.SnappableMode(new $cQSdn.TransformMode()),\n scale: $cQSdn.ScaleMode,\n rotate: $cQSdn.RotateMode,\n duplicate: $cQSdn.DuplicateMode,\n split: $cQSdn.SplitPolygonMode,\n extrude: $cQSdn.ExtrudeMode,\n elevation: $cQSdn.ElevationMode,\n // Draw modes\n drawPoint: $cQSdn.DrawPointMode,\n drawLineString: $cQSdn.DrawLineStringMode,\n drawPolygon: $cQSdn.DrawPolygonMode,\n drawRectangle: $cQSdn.DrawRectangleMode,\n drawSquare: $cQSdn.DrawSquareMode,\n drawRectangleFromCenter: $cQSdn.DrawRectangleFromCenterMode,\n drawSquareFromCenter: $cQSdn.DrawSquareFromCenterMode,\n drawCircleFromCenter: $cQSdn.DrawCircleFromCenterMode,\n drawCircleByBoundingBox: $cQSdn.DrawCircleByDiameterMode,\n drawEllipseByBoundingBox: $cQSdn.DrawEllipseByBoundingBoxMode,\n drawRectangleUsing3Points: $cQSdn.DrawRectangleUsingThreePointsMode,\n drawEllipseUsing3Points: $cQSdn.DrawEllipseUsingThreePointsMode,\n draw90DegreePolygon: $cQSdn.Draw90DegreePolygonMode,\n drawPolygonByDragging: $cQSdn.DrawPolygonByDraggingMode\n}; // type State = {\n// mode: GeoJsonEditMode,\n// tentativeFeature: ?Feature,\n// editHandles: any[],\n// selectedFeatures: Feature[]\n// };\nvar $fcbb27514d9ea607$var$EditableGeoJsonLayer = /*#__PURE__*/ function(_EditableLayer) {\n $fcbb27514d9ea607$var$_inherits(EditableGeoJsonLayer, _EditableLayer);\n var _super = $fcbb27514d9ea607$var$_createSuper(EditableGeoJsonLayer);\n function EditableGeoJsonLayer() {\n $fcbb27514d9ea607$var$_classCallCheck(this, EditableGeoJsonLayer);\n return _super.apply(this, arguments);\n }\n $fcbb27514d9ea607$var$_createClass(EditableGeoJsonLayer, [\n {\n key: \"renderLayers\",\n // setState: ($Shape) => void;\n value: function renderLayers() {\n var subLayerProps = this.getSubLayerProps({\n id: \"geojson\",\n // Proxy most GeoJsonLayer props as-is\n data: this.props.data,\n fp64: this.props.fp64,\n filled: this.props.filled,\n stroked: this.props.stroked,\n lineWidthScale: this.props.lineWidthScale,\n lineWidthMinPixels: this.props.lineWidthMinPixels,\n lineWidthMaxPixels: this.props.lineWidthMaxPixels,\n lineWidthUnits: this.props.lineWidthUnits,\n lineJointRounded: this.props.lineJointRounded,\n lineCapRounded: this.props.lineCapRounded,\n lineMiterLimit: this.props.lineMiterLimit,\n pointRadiusScale: this.props.pointRadiusScale,\n pointRadiusMinPixels: this.props.pointRadiusMinPixels,\n pointRadiusMaxPixels: this.props.pointRadiusMaxPixels,\n getLineColor: this.selectionAwareAccessor(this.props.getLineColor),\n getFillColor: this.selectionAwareAccessor(this.props.getFillColor),\n getPointRadius: this.selectionAwareAccessor(this.props.getRadius),\n getLineWidth: this.selectionAwareAccessor(this.props.getLineWidth),\n _subLayerProps: {\n linestrings: {\n billboard: this.props.billboard,\n updateTriggers: {\n // required to update dashed array attribute\n all: [\n this.props.selectedFeatureIndexes,\n this.props.mode\n ]\n }\n },\n \"polygons-stroke\": {\n billboard: this.props.billboard,\n pickingLineWidthExtraPixels: this.props.pickingLineWidthExtraPixels,\n type: $fcbb27514d9ea607$var$_editablePathLayer[\"default\"],\n updateTriggers: {\n // required to update dashed array attribute\n all: [\n this.props.selectedFeatureIndexes,\n this.props.mode\n ]\n }\n }\n },\n updateTriggers: {\n getLineColor: [\n this.props.selectedFeatureIndexes,\n this.props.mode\n ],\n getFillColor: [\n this.props.selectedFeatureIndexes,\n this.props.mode\n ],\n getPointRadius: [\n this.props.selectedFeatureIndexes,\n this.props.mode\n ],\n getLineWidth: [\n this.props.selectedFeatureIndexes,\n this.props.mode\n ]\n }\n });\n var layers = [\n new $ee5EG.default(subLayerProps)\n ];\n layers = layers.concat(this.createGuidesLayers(), this.createTooltipsLayers());\n return layers;\n }\n },\n {\n key: \"initializeState\",\n value: function initializeState() {\n $fcbb27514d9ea607$var$_get($fcbb27514d9ea607$var$_getPrototypeOf(EditableGeoJsonLayer.prototype), \"initializeState\", this).call(this);\n this.setState({\n selectedFeatures: [],\n editHandles: []\n });\n } // TODO: is this the best way to properly update state from an outside event handler?\n },\n {\n key: \"shouldUpdateState\",\n value: function shouldUpdateState(opts) {\n // console.log(\n // 'shouldUpdateState',\n // opts.changeFlags.propsOrDataChanged,\n // opts.changeFlags.stateChanged\n // );\n return $fcbb27514d9ea607$var$_get($fcbb27514d9ea607$var$_getPrototypeOf(EditableGeoJsonLayer.prototype), \"shouldUpdateState\", this).call(this, opts) || opts.changeFlags.stateChanged;\n }\n },\n {\n key: \"updateState\",\n value: function updateState(_ref) {\n var props = _ref.props, oldProps = _ref.oldProps, changeFlags = _ref.changeFlags, context = _ref.context;\n $fcbb27514d9ea607$var$_get($fcbb27514d9ea607$var$_getPrototypeOf(EditableGeoJsonLayer.prototype), \"updateState\", this).call(this, {\n oldProps: oldProps,\n props: props,\n changeFlags: changeFlags,\n context: context\n });\n if (changeFlags.propsOrDataChanged) {\n var modePropChanged = Object.keys(oldProps).length === 0 || props.mode !== oldProps.mode;\n if (modePropChanged) {\n var _mode;\n if (typeof props.mode === \"function\") {\n // They passed a constructor/class, so new it up\n var ModeConstructor = props.mode;\n _mode = new ModeConstructor();\n } else if (typeof props.mode === \"string\") {\n // Lookup the mode based on its name (for backwards compatibility)\n _mode = $fcbb27514d9ea607$var$modeNameMapping[props.mode]; // eslint-disable-next-line no-console\n console.warn(\"Deprecated use of passing `mode` as a string. Pass the mode's class constructor instead.\");\n } else // Should be an instance of EditMode in this case\n _mode = props.mode;\n if (!_mode) {\n console.warn(\"No mode configured for \".concat(String(props.mode))); // eslint-disable-line no-console,no-undef\n // Use default mode\n _mode = new $fcbb27514d9ea607$var$DEFAULT_EDIT_MODE();\n }\n if (_mode !== this.state.mode) this.setState({\n mode: _mode,\n cursor: null\n });\n }\n }\n var selectedFeatures = [];\n if (Array.isArray(props.selectedFeatureIndexes)) // TODO: needs improved testing, i.e. checking for duplicates, NaNs, out of range numbers, ...\n selectedFeatures = props.selectedFeatureIndexes.map(function(elem) {\n return props.data.features[elem];\n });\n this.setState({\n selectedFeatures: selectedFeatures\n });\n }\n },\n {\n key: \"getModeProps\",\n value: function getModeProps(props) {\n var _this = this;\n return {\n modeConfig: props.modeConfig,\n data: props.data,\n selectedIndexes: props.selectedFeatureIndexes,\n lastPointerMoveEvent: this.state.lastPointerMoveEvent,\n cursor: this.state.cursor,\n onEdit: function onEdit(editAction) {\n // Force a re-render\n // This supports double-click where we need to ensure that there's a re-render between the two clicks\n // even though the data wasn't changed, just the internal tentative feature.\n _this.setNeedsUpdate();\n props.onEdit(editAction);\n },\n onUpdateCursor: function onUpdateCursor(cursor) {\n _this.setState({\n cursor: cursor\n });\n }\n };\n }\n },\n {\n key: \"selectionAwareAccessor\",\n value: function selectionAwareAccessor(accessor) {\n var _this2 = this;\n if (typeof accessor !== \"function\") return accessor;\n return function(feature) {\n return accessor(feature, _this2.isFeatureSelected(feature), _this2.props.mode);\n };\n }\n },\n {\n key: \"isFeatureSelected\",\n value: function isFeatureSelected(feature) {\n if (!this.props.data || !this.props.selectedFeatureIndexes) return false;\n if (!this.props.selectedFeatureIndexes.length) return false;\n var featureIndex = this.props.data.features.indexOf(feature);\n return this.props.selectedFeatureIndexes.includes(featureIndex);\n }\n },\n {\n key: \"getPickingInfo\",\n value: function getPickingInfo(_ref2) {\n var info = _ref2.info, sourceLayer = _ref2.sourceLayer;\n if (sourceLayer.id.endsWith(\"guides\")) // If user is picking an editing handle, add additional data to the info\n info.isGuide = true;\n return info;\n }\n },\n {\n key: \"_updateAutoHighlight\",\n value: function _updateAutoHighlight(info) {\n // Extra handling for guides\n if (info === null || info === void 0 ? void 0 : info.sourceLayer) {\n if (info.isGuide) {\n var _iterator = $fcbb27514d9ea607$var$_createForOfIteratorHelper(info.sourceLayer.getSubLayers()), _step;\n try {\n for(_iterator.s(); !(_step = _iterator.n()).done;){\n var layer = _step.value;\n layer.updateAutoHighlight(info);\n }\n } catch (err) {\n _iterator.e(err);\n } finally{\n _iterator.f();\n }\n } else info.sourceLayer.updateAutoHighlight(info);\n }\n }\n },\n {\n key: \"createGuidesLayers\",\n value: function createGuidesLayers() {\n var mode = this.getActiveMode();\n var guides = mode.getGuides(this.getModeProps(this.props));\n if (!guides || !guides.features.length) return [];\n var subLayerProps = {\n linestrings: {\n billboard: this.props.billboard,\n autoHighlight: false\n },\n \"polygons-fill\": {\n autoHighlight: false\n },\n \"polygons-stroke\": {\n billboard: this.props.billboard\n }\n };\n if (this.props.editHandleType === \"icon\") subLayerProps[\"points-icon\"] = {\n type: $h685K.default,\n iconAtlas: this.props.editHandleIconAtlas,\n iconMapping: this.props.editHandleIconMapping,\n sizeUnits: this.props.editHandleIconSizeUnits,\n sizeScale: this.props.editHandleIconSizeScale,\n getIcon: $fcbb27514d9ea607$var$guideAccessor(this.props.getEditHandleIcon),\n getSize: $fcbb27514d9ea607$var$guideAccessor(this.props.getEditHandleIconSize),\n getColor: $fcbb27514d9ea607$var$guideAccessor(this.props.getEditHandleIconColor),\n getAngle: $fcbb27514d9ea607$var$guideAccessor(this.props.getEditHandleIconAngle)\n };\n else subLayerProps[\"points-circle\"] = {\n type: $cYQ5y.default,\n radiusScale: this.props.editHandlePointRadiusScale,\n stroked: this.props.editHandlePointOutline,\n getLineWidth: this.props.editHandlePointStrokeWidth,\n radiusUnits: this.props.editHandlePointRadiusUnits,\n radiusMinPixels: this.props.editHandlePointRadiusMinPixels,\n radiusMaxPixels: this.props.editHandlePointRadiusMaxPixels,\n getRadius: $fcbb27514d9ea607$var$guideAccessor(this.props.getEditHandlePointRadius),\n getFillColor: $fcbb27514d9ea607$var$guideAccessor(this.props.getEditHandlePointColor),\n getLineColor: $fcbb27514d9ea607$var$guideAccessor(this.props.getEditHandlePointOutlineColor)\n };\n var layer = new $ee5EG.default(this.getSubLayerProps({\n id: \"guides\",\n data: guides,\n fp64: this.props.fp64,\n _subLayerProps: subLayerProps,\n lineWidthScale: this.props.lineWidthScale,\n lineWidthMinPixels: this.props.lineWidthMinPixels,\n lineWidthMaxPixels: this.props.lineWidthMaxPixels,\n lineWidthUnits: this.props.lineWidthUnits,\n lineJointRounded: this.props.lineJointRounded,\n lineCapRounded: this.props.lineCapRounded,\n lineMiterLimit: this.props.lineMiterLimit,\n getLineColor: $fcbb27514d9ea607$var$guideAccessor(this.props.getTentativeLineColor),\n getLineWidth: $fcbb27514d9ea607$var$guideAccessor(this.props.getTentativeLineWidth),\n getFillColor: $fcbb27514d9ea607$var$guideAccessor(this.props.getTentativeFillColor),\n pointType: this.props.editHandleType === \"icon\" ? \"icon\" : \"circle\",\n iconAtlas: this.props.editHandleIconAtlas\n }));\n return [\n layer\n ];\n }\n },\n {\n key: \"createTooltipsLayers\",\n value: function createTooltipsLayers() {\n var mode = this.getActiveMode();\n var tooltips = mode.getTooltips(this.getModeProps(this.props));\n var layer = new $9pc7R.default($fcbb27514d9ea607$var$_objectSpread({\n getSize: $fcbb27514d9ea607$var$DEFAULT_TOOLTIP_FONT_SIZE\n }, this.getSubLayerProps({\n id: \"tooltips\",\n data: tooltips\n })));\n return [\n layer\n ];\n }\n },\n {\n key: \"onLayerClick\",\n value: function onLayerClick(event) {\n this.getActiveMode().handleClick(event, this.getModeProps(this.props));\n }\n },\n {\n key: \"onLayerKeyUp\",\n value: function onLayerKeyUp(event) {\n this.getActiveMode().handleKeyUp(event, this.getModeProps(this.props));\n }\n },\n {\n key: \"onStartDragging\",\n value: function onStartDragging(event) {\n this.getActiveMode().handleStartDragging(event, this.getModeProps(this.props));\n }\n },\n {\n key: \"onDragging\",\n value: function onDragging(event) {\n this.getActiveMode().handleDragging(event, this.getModeProps(this.props));\n }\n },\n {\n key: \"onStopDragging\",\n value: function onStopDragging(event) {\n this.getActiveMode().handleStopDragging(event, this.getModeProps(this.props));\n }\n },\n {\n key: \"onPointerMove\",\n value: function onPointerMove(event) {\n this.setState({\n lastPointerMoveEvent: event\n });\n this.getActiveMode().handlePointerMove(event, this.getModeProps(this.props));\n }\n },\n {\n key: \"getCursor\",\n value: function getCursor(_ref3) {\n var isDragging = _ref3.isDragging;\n if (this.state === null || this.state === undefined) // Layer in 'Awaiting state'\n return null;\n var cursor = this.state.cursor;\n if (!cursor) // default cursor\n cursor = isDragging ? \"grabbing\" : \"grab\";\n return cursor;\n }\n },\n {\n key: \"getActiveMode\",\n value: function getActiveMode() {\n return this.state.mode;\n }\n }\n ]);\n return EditableGeoJsonLayer;\n}($fcbb27514d9ea607$var$_editableLayer[\"default\"]);\nmodule.exports[\"default\"] = $fcbb27514d9ea607$var$EditableGeoJsonLayer;\n$fcbb27514d9ea607$var$_defineProperty($fcbb27514d9ea607$var$EditableGeoJsonLayer, \"layerName\", \"EditableGeoJsonLayer\");\n$fcbb27514d9ea607$var$_defineProperty($fcbb27514d9ea607$var$EditableGeoJsonLayer, \"defaultProps\", $fcbb27514d9ea607$var$defaultProps);\n\n});\nparcelRegister(\"ee5EG\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $a5b6c2842af299e1$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $bmkEq = parcelRequire(\"bmkEq\");\n\nvar $lEQUF = parcelRequire(\"lEQUF\");\n\nvar $coXLq = parcelRequire(\"coXLq\");\n\nvar $cNqHj = parcelRequire(\"cNqHj\");\n\nvar $cyxHD = parcelRequire(\"cyxHD\");\n\nvar $fzdNr = parcelRequire(\"fzdNr\");\n\nvar $hf80Y = parcelRequire(\"hf80Y\");\n\nvar $8rldy = parcelRequire(\"8rldy\");\nconst $a5b6c2842af299e1$var$FEATURE_TYPES = [\n \"points\",\n \"linestrings\",\n \"polygons\"\n];\nconst $a5b6c2842af299e1$var$defaultProps = (0, $edHbI._)((0, $2QP2i._)({}, (0, $fzdNr.getDefaultProps)((0, $fzdNr.POINT_LAYER).circle), (0, $fzdNr.getDefaultProps)((0, $fzdNr.POINT_LAYER).icon), (0, $fzdNr.getDefaultProps)((0, $fzdNr.POINT_LAYER).text), (0, $fzdNr.getDefaultProps)((0, $fzdNr.LINE_LAYER)), (0, $fzdNr.getDefaultProps)((0, $fzdNr.POLYGON_LAYER))), {\n stroked: true,\n filled: true,\n extruded: false,\n wireframe: false,\n _full3d: false,\n iconAtlas: {\n type: \"object\",\n value: null\n },\n iconMapping: {\n type: \"object\",\n value: {}\n },\n getIcon: {\n type: \"accessor\",\n value: (f)=>f.properties.icon\n },\n getText: {\n type: \"accessor\",\n value: (f)=>f.properties.text\n },\n pointType: \"circle\",\n getRadius: {\n deprecatedFor: \"getPointRadius\"\n }\n});\nclass $a5b6c2842af299e1$export$2e2bcd8739ae039 extends (0, $coXLq.default) {\n initializeState() {\n this.state = {\n layerProps: {},\n features: {}\n };\n }\n updateState({ props: props, changeFlags: changeFlags }) {\n if (!changeFlags.dataChanged) return;\n const { data: data } = this.props;\n const binary = data && \"points\" in data && \"polygons\" in data && \"lines\" in data;\n this.setState({\n binary: binary\n });\n if (binary) this._updateStateBinary({\n props: props,\n changeFlags: changeFlags\n });\n else this._updateStateJSON({\n props: props,\n changeFlags: changeFlags\n });\n }\n _updateStateBinary({ props: props, changeFlags: changeFlags }) {\n const layerProps = (0, $8rldy.createLayerPropsFromBinary)(props.data, this.encodePickingColor);\n this.setState({\n layerProps: layerProps\n });\n }\n _updateStateJSON({ props: props, changeFlags: changeFlags }) {\n const features = (0, $hf80Y.getGeojsonFeatures)(props.data);\n const wrapFeature = this.getSubLayerRow.bind(this);\n let newFeatures = {};\n const featuresDiff = {};\n if (Array.isArray(changeFlags.dataChanged)) {\n const oldFeatures = this.state.features;\n for(const key in oldFeatures){\n newFeatures[key] = oldFeatures[key].slice();\n featuresDiff[key] = [];\n }\n for (const dataRange of changeFlags.dataChanged){\n const partialFeatures = (0, $hf80Y.separateGeojsonFeatures)(features, wrapFeature, dataRange);\n for(const key in oldFeatures)featuresDiff[key].push((0, $cNqHj.replaceInRange)({\n data: newFeatures[key],\n getIndex: (f)=>f.__source.index,\n dataRange: dataRange,\n replace: partialFeatures[key]\n }));\n }\n } else newFeatures = (0, $hf80Y.separateGeojsonFeatures)(features, wrapFeature);\n const layerProps = (0, $8rldy.createLayerPropsFromFeatures)(newFeatures, featuresDiff);\n this.setState({\n features: newFeatures,\n featuresDiff: featuresDiff,\n layerProps: layerProps\n });\n }\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n const { index: index, sourceLayer: sourceLayer } = info;\n info.featureType = $a5b6c2842af299e1$var$FEATURE_TYPES.find((ft)=>sourceLayer.id.startsWith(\"\".concat(this.id, \"-\").concat(ft, \"-\")));\n if (index >= 0 && sourceLayer.id.startsWith(\"\".concat(this.id, \"-points-text\")) && this.state.binary) info.index = this.props.data.points.globalFeatureIds.value[index];\n return info;\n }\n _updateAutoHighlight(info) {\n const pointLayerIdPrefix = \"\".concat(this.id, \"-points-\");\n const sourceIsPoints = info.featureType === \"points\";\n for (const layer of this.getSubLayers())if (layer.id.startsWith(pointLayerIdPrefix) === sourceIsPoints) layer.updateAutoHighlight(info);\n }\n _renderPolygonLayer() {\n const { extruded: extruded, wireframe: wireframe } = this.props;\n const { layerProps: layerProps } = this.state;\n const id = \"polygons-fill\";\n const PolygonFillLayer = this.shouldRenderSubLayer(id, layerProps.polygons.data) && this.getSubLayerClass(id, (0, $fzdNr.POLYGON_LAYER).type);\n if (PolygonFillLayer) {\n const forwardedProps = (0, $fzdNr.forwardProps)(this, (0, $fzdNr.POLYGON_LAYER).props);\n const useLineColor = extruded && wireframe;\n if (!useLineColor) delete forwardedProps.getLineColor;\n forwardedProps.updateTriggers.lineColors = useLineColor;\n return new PolygonFillLayer(forwardedProps, this.getSubLayerProps({\n id: id,\n updateTriggers: forwardedProps.updateTriggers\n }), layerProps.polygons);\n }\n return null;\n }\n _renderLineLayers() {\n const { extruded: extruded, stroked: stroked } = this.props;\n const { layerProps: layerProps } = this.state;\n const polygonStrokeLayerId = \"polygons-stroke\";\n const lineStringsLayerId = \"linestrings\";\n const PolygonStrokeLayer = !extruded && stroked && this.shouldRenderSubLayer(polygonStrokeLayerId, layerProps.polygonsOutline.data) && this.getSubLayerClass(polygonStrokeLayerId, (0, $fzdNr.LINE_LAYER).type);\n const LineStringsLayer = this.shouldRenderSubLayer(lineStringsLayerId, layerProps.lines.data) && this.getSubLayerClass(lineStringsLayerId, (0, $fzdNr.LINE_LAYER).type);\n if (PolygonStrokeLayer || LineStringsLayer) {\n const forwardedProps = (0, $fzdNr.forwardProps)(this, (0, $fzdNr.LINE_LAYER).props);\n return [\n PolygonStrokeLayer && new PolygonStrokeLayer(forwardedProps, this.getSubLayerProps({\n id: polygonStrokeLayerId,\n updateTriggers: forwardedProps.updateTriggers\n }), layerProps.polygonsOutline),\n LineStringsLayer && new LineStringsLayer(forwardedProps, this.getSubLayerProps({\n id: lineStringsLayerId,\n updateTriggers: forwardedProps.updateTriggers\n }), layerProps.lines)\n ];\n }\n return null;\n }\n _renderPointLayers() {\n const { pointType: pointType } = this.props;\n const { layerProps: layerProps, binary: binary } = this.state;\n let { highlightedObjectIndex: highlightedObjectIndex } = this.props;\n if (!binary && Number.isFinite(highlightedObjectIndex)) highlightedObjectIndex = layerProps.points.data.findIndex((d)=>d.__source.index === highlightedObjectIndex);\n const types = new Set(pointType.split(\"+\"));\n const pointLayers = [];\n for (const _ref of types){\n let type = _ref;\n const id = \"points-\".concat(type);\n const PointLayerMapping = (0, $fzdNr.POINT_LAYER)[type];\n const PointsLayer = PointLayerMapping && this.shouldRenderSubLayer(id, layerProps.points.data) && this.getSubLayerClass(id, PointLayerMapping.type);\n if (PointsLayer) {\n const forwardedProps = (0, $fzdNr.forwardProps)(this, PointLayerMapping.props);\n let pointsLayerProps = layerProps.points;\n if (type === \"text\" && binary) {\n const _pointsLayerProps_data_attributes = pointsLayerProps.data.attributes, { instancePickingColors: instancePickingColors } = _pointsLayerProps_data_attributes, rest = (0, $bmkEq._)(_pointsLayerProps_data_attributes, [\n \"instancePickingColors\"\n ]);\n pointsLayerProps = (0, $edHbI._)((0, $2QP2i._)({}, pointsLayerProps), {\n data: (0, $edHbI._)((0, $2QP2i._)({}, pointsLayerProps.data), {\n attributes: rest\n })\n });\n }\n pointLayers.push(new PointsLayer(forwardedProps, this.getSubLayerProps({\n id: id,\n updateTriggers: forwardedProps.updateTriggers,\n highlightedObjectIndex: highlightedObjectIndex\n }), pointsLayerProps));\n }\n }\n return pointLayers;\n }\n renderLayers() {\n const { extruded: extruded } = this.props;\n const polygonFillLayer = this._renderPolygonLayer();\n const lineLayers = this._renderLineLayers();\n const pointLayers = this._renderPointLayers();\n return [\n !extruded && polygonFillLayer,\n lineLayers,\n pointLayers,\n extruded && polygonFillLayer\n ];\n }\n getSubLayerAccessor(accessor) {\n const { binary: binary } = this.state;\n if (!binary || typeof accessor !== \"function\") return super.getSubLayerAccessor(accessor);\n return (object, info)=>{\n const { data: data, index: index } = info;\n const feature = (0, $cyxHD.binaryToFeatureForAccesor)(data, index);\n return accessor(feature, info);\n };\n }\n}\n(0, $lEQUF.default)($a5b6c2842af299e1$export$2e2bcd8739ae039, \"layerName\", \"GeoJsonLayer\");\n(0, $lEQUF.default)($a5b6c2842af299e1$export$2e2bcd8739ae039, \"defaultProps\", $a5b6c2842af299e1$var$defaultProps);\n\n});\nparcelRegister(\"cyxHD\", function(module, exports) {\n\n$parcel$export(module.exports, \"binaryToFeatureForAccesor\", function () { return $9242cdb25de9fdae$export$f7eb00e06514ba7d; });\n$parcel$export(module.exports, \"calculatePickingColors\", function () { return $9242cdb25de9fdae$export$af2f79e75e2a44d; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\nfunction $9242cdb25de9fdae$export$f7eb00e06514ba7d(data, index) {\n if (!data) return null;\n const featureIndex = \"startIndices\" in data ? data.startIndices[index] : index;\n const geometryIndex = data.featureIds.value[featureIndex];\n if (featureIndex !== -1) return $9242cdb25de9fdae$var$getPropertiesForIndex(data, geometryIndex, featureIndex);\n return null;\n}\nfunction $9242cdb25de9fdae$var$getPropertiesForIndex(data, propertiesIndex, numericPropsIndex) {\n const feature = {\n properties: (0, $2QP2i._)({}, data.properties[propertiesIndex])\n };\n for(const prop in data.numericProps)feature.properties[prop] = data.numericProps[prop].value[numericPropsIndex];\n return feature;\n}\nfunction $9242cdb25de9fdae$export$af2f79e75e2a44d(geojsonBinary, encodePickingColor) {\n const pickingColors = {\n points: null,\n lines: null,\n polygons: null\n };\n for(const key in pickingColors){\n const featureIds = geojsonBinary[key].globalFeatureIds.value;\n pickingColors[key] = new Uint8ClampedArray(featureIds.length * 3);\n const pickingColor = [];\n for(let i = 0; i < featureIds.length; i++){\n encodePickingColor(featureIds[i], pickingColor);\n pickingColors[key][i * 3 + 0] = pickingColor[0];\n pickingColors[key][i * 3 + 1] = pickingColor[1];\n pickingColors[key][i * 3 + 2] = pickingColor[2];\n }\n }\n return pickingColors;\n}\n\n});\n\nparcelRegister(\"fzdNr\", function(module, exports) {\n\n$parcel$export(module.exports, \"POINT_LAYER\", function () { return $b554d391c3e3c9d4$export$e6c9a6d53fb57183; });\n$parcel$export(module.exports, \"LINE_LAYER\", function () { return $b554d391c3e3c9d4$export$24275b3ba67f8f2c; });\n$parcel$export(module.exports, \"POLYGON_LAYER\", function () { return $b554d391c3e3c9d4$export$963b4667f7006262; });\n$parcel$export(module.exports, \"getDefaultProps\", function () { return $b554d391c3e3c9d4$export$61b94149aeb1f59; });\n$parcel$export(module.exports, \"forwardProps\", function () { return $b554d391c3e3c9d4$export$fa20a0db85fc7ff2; });\n\nvar $h685K = parcelRequire(\"h685K\");\n\nvar $cYQ5y = parcelRequire(\"cYQ5y\");\n\nvar $9pc7R = parcelRequire(\"9pc7R\");\n\nvar $lzW2S = parcelRequire(\"lzW2S\");\n\nvar $7VEAA = parcelRequire(\"7VEAA\");\nconst $b554d391c3e3c9d4$export$e6c9a6d53fb57183 = {\n circle: {\n type: (0, $cYQ5y.default),\n props: {\n filled: \"filled\",\n stroked: \"stroked\",\n lineWidthMaxPixels: \"lineWidthMaxPixels\",\n lineWidthMinPixels: \"lineWidthMinPixels\",\n lineWidthScale: \"lineWidthScale\",\n lineWidthUnits: \"lineWidthUnits\",\n pointRadiusMaxPixels: \"radiusMaxPixels\",\n pointRadiusMinPixels: \"radiusMinPixels\",\n pointRadiusScale: \"radiusScale\",\n pointRadiusUnits: \"radiusUnits\",\n pointAntialiasing: \"antialiasing\",\n pointBillboard: \"billboard\",\n getFillColor: \"getFillColor\",\n getLineColor: \"getLineColor\",\n getLineWidth: \"getLineWidth\",\n getPointRadius: \"getRadius\"\n }\n },\n icon: {\n type: (0, $h685K.default),\n props: {\n iconAtlas: \"iconAtlas\",\n iconMapping: \"iconMapping\",\n iconSizeMaxPixels: \"sizeMaxPixels\",\n iconSizeMinPixels: \"sizeMinPixels\",\n iconSizeScale: \"sizeScale\",\n iconSizeUnits: \"sizeUnits\",\n iconAlphaCutoff: \"alphaCutoff\",\n iconBillboard: \"billboard\",\n getIcon: \"getIcon\",\n getIconAngle: \"getAngle\",\n getIconColor: \"getColor\",\n getIconPixelOffset: \"getPixelOffset\",\n getIconSize: \"getSize\"\n }\n },\n text: {\n type: (0, $9pc7R.default),\n props: {\n textSizeMaxPixels: \"sizeMaxPixels\",\n textSizeMinPixels: \"sizeMinPixels\",\n textSizeScale: \"sizeScale\",\n textSizeUnits: \"sizeUnits\",\n textBackground: \"background\",\n textBackgroundPadding: \"backgroundPadding\",\n textFontFamily: \"fontFamily\",\n textFontWeight: \"fontWeight\",\n textLineHeight: \"lineHeight\",\n textMaxWidth: \"maxWidth\",\n textOutlineColor: \"outlineColor\",\n textOutlineWidth: \"outlineWidth\",\n textWordBreak: \"wordBreak\",\n textCharacterSet: \"characterSet\",\n textBillboard: \"billboard\",\n textFontSettings: \"fontSettings\",\n getText: \"getText\",\n getTextAngle: \"getAngle\",\n getTextColor: \"getColor\",\n getTextPixelOffset: \"getPixelOffset\",\n getTextSize: \"getSize\",\n getTextAnchor: \"getTextAnchor\",\n getTextAlignmentBaseline: \"getAlignmentBaseline\",\n getTextBackgroundColor: \"getBackgroundColor\",\n getTextBorderColor: \"getBorderColor\",\n getTextBorderWidth: \"getBorderWidth\"\n }\n }\n};\nconst $b554d391c3e3c9d4$export$24275b3ba67f8f2c = {\n type: (0, $lzW2S.default),\n props: {\n lineWidthUnits: \"widthUnits\",\n lineWidthScale: \"widthScale\",\n lineWidthMinPixels: \"widthMinPixels\",\n lineWidthMaxPixels: \"widthMaxPixels\",\n lineJointRounded: \"jointRounded\",\n lineCapRounded: \"capRounded\",\n lineMiterLimit: \"miterLimit\",\n lineBillboard: \"billboard\",\n getLineColor: \"getColor\",\n getLineWidth: \"getWidth\"\n }\n};\nconst $b554d391c3e3c9d4$export$963b4667f7006262 = {\n type: (0, $7VEAA.default),\n props: {\n extruded: \"extruded\",\n filled: \"filled\",\n wireframe: \"wireframe\",\n elevationScale: \"elevationScale\",\n material: \"material\",\n _full3d: \"_full3d\",\n getElevation: \"getElevation\",\n getFillColor: \"getFillColor\",\n getLineColor: \"getLineColor\"\n }\n};\nfunction $b554d391c3e3c9d4$export$61b94149aeb1f59({ type: type, props: props }) {\n const result = {};\n for(const key in props)result[key] = type.defaultProps[props[key]];\n return result;\n}\nfunction $b554d391c3e3c9d4$export$fa20a0db85fc7ff2(layer, mapping) {\n const { transitions: transitions, updateTriggers: updateTriggers } = layer.props;\n const result = {\n updateTriggers: {},\n transitions: transitions && {\n getPosition: transitions.geometry\n }\n };\n for(const sourceKey in mapping){\n const targetKey = mapping[sourceKey];\n let value = layer.props[sourceKey];\n if (sourceKey.startsWith(\"get\")) {\n value = layer.getSubLayerAccessor(value);\n result.updateTriggers[targetKey] = updateTriggers[sourceKey];\n if (transitions) result.transitions[targetKey] = transitions[sourceKey];\n }\n result[targetKey] = value;\n }\n return result;\n}\n\n});\nparcelRegister(\"h685K\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c72946135ca1cedd$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $lEQUF = parcelRequire(\"lEQUF\");\n\nvar $i46md = parcelRequire(\"i46md\");\nvar $4VQgq = parcelRequire(\"4VQgq\");\nvar $7UxuR = parcelRequire(\"7UxuR\");\nvar $jRSMz = parcelRequire(\"jRSMz\");\nvar $7gQQK = parcelRequire(\"7gQQK\");\n\nvar $cxTxU = parcelRequire(\"cxTxU\");\nvar $b2F4S = parcelRequire(\"b2F4S\");\n\nvar $hcGz1 = parcelRequire(\"hcGz1\");\n\nvar $2fpBy = parcelRequire(\"2fpBy\");\n\nvar $fAO6S = parcelRequire(\"fAO6S\");\nconst $c72946135ca1cedd$var$DEFAULT_COLOR = [\n 0,\n 0,\n 0,\n 255\n];\nconst $c72946135ca1cedd$var$defaultProps = {\n iconAtlas: {\n type: \"image\",\n value: null,\n async: true\n },\n iconMapping: {\n type: \"object\",\n value: {},\n async: true\n },\n sizeScale: {\n type: \"number\",\n value: 1,\n min: 0\n },\n billboard: true,\n sizeUnits: \"pixels\",\n sizeMinPixels: {\n type: \"number\",\n min: 0,\n value: 0\n },\n sizeMaxPixels: {\n type: \"number\",\n min: 0,\n value: Number.MAX_SAFE_INTEGER\n },\n alphaCutoff: {\n type: \"number\",\n value: 0.05,\n min: 0,\n max: 1\n },\n getPosition: {\n type: \"accessor\",\n value: (x)=>x.position\n },\n getIcon: {\n type: \"accessor\",\n value: (x)=>x.icon\n },\n getColor: {\n type: \"accessor\",\n value: $c72946135ca1cedd$var$DEFAULT_COLOR\n },\n getSize: {\n type: \"accessor\",\n value: 1\n },\n getAngle: {\n type: \"accessor\",\n value: 0\n },\n getPixelOffset: {\n type: \"accessor\",\n value: [\n 0,\n 0\n ]\n },\n onIconError: {\n type: \"function\",\n value: null,\n optional: true\n },\n textureParameters: {\n type: \"object\",\n ignore: true\n }\n};\nclass $c72946135ca1cedd$export$2e2bcd8739ae039 extends (0, $i46md.default) {\n getShaders() {\n return super.getShaders({\n vs: $hcGz1.default,\n fs: $2fpBy.default,\n modules: [\n (0, $jRSMz.default),\n (0, $7UxuR.default)\n ]\n });\n }\n initializeState() {\n this.state = {\n iconManager: new (0, $fAO6S.default)(this.context.gl, {\n onUpdate: this._onUpdate.bind(this),\n onError: this._onError.bind(this)\n })\n };\n const attributeManager = this.getAttributeManager();\n attributeManager.addInstanced({\n instancePositions: {\n size: 3,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: \"getPosition\"\n },\n instanceSizes: {\n size: 1,\n transition: true,\n accessor: \"getSize\",\n defaultValue: 1\n },\n instanceOffsets: {\n size: 2,\n accessor: \"getIcon\",\n transform: this.getInstanceOffset\n },\n instanceIconFrames: {\n size: 4,\n accessor: \"getIcon\",\n transform: this.getInstanceIconFrame\n },\n instanceColorModes: {\n size: 1,\n type: 5121,\n accessor: \"getIcon\",\n transform: this.getInstanceColorMode\n },\n instanceColors: {\n size: this.props.colorFormat.length,\n type: 5121,\n normalized: true,\n transition: true,\n accessor: \"getColor\",\n defaultValue: $c72946135ca1cedd$var$DEFAULT_COLOR\n },\n instanceAngles: {\n size: 1,\n transition: true,\n accessor: \"getAngle\"\n },\n instancePixelOffset: {\n size: 2,\n transition: true,\n accessor: \"getPixelOffset\"\n }\n });\n }\n updateState(params) {\n super.updateState(params);\n const { props: props, oldProps: oldProps, changeFlags: changeFlags } = params;\n const attributeManager = this.getAttributeManager();\n const { iconAtlas: iconAtlas, iconMapping: iconMapping, data: data, getIcon: getIcon, textureParameters: textureParameters } = props;\n const { iconManager: iconManager } = this.state;\n const prePacked = iconAtlas || this.internalState.isAsyncPropLoading(\"iconAtlas\");\n iconManager.setProps({\n loadOptions: props.loadOptions,\n autoPacking: !prePacked,\n iconAtlas: iconAtlas,\n iconMapping: prePacked ? iconMapping : null,\n textureParameters: textureParameters\n });\n if (prePacked) {\n if (oldProps.iconMapping !== props.iconMapping) attributeManager.invalidate(\"getIcon\");\n } else if (changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getIcon)) iconManager.packIcons(data, getIcon);\n if (changeFlags.extensionsChanged) {\n var _this$state$model;\n const { gl: gl } = this.context;\n (_this$state$model = this.state.model) === null || _this$state$model === void 0 || _this$state$model.delete();\n this.state.model = this._getModel(gl);\n attributeManager.invalidateAll();\n }\n }\n get isLoaded() {\n return super.isLoaded && this.state.iconManager.isLoaded;\n }\n finalizeState(context) {\n super.finalizeState(context);\n this.state.iconManager.finalize();\n }\n draw({ uniforms: uniforms }) {\n const { sizeScale: sizeScale, sizeMinPixels: sizeMinPixels, sizeMaxPixels: sizeMaxPixels, sizeUnits: sizeUnits, billboard: billboard, alphaCutoff: alphaCutoff } = this.props;\n const { iconManager: iconManager } = this.state;\n const iconsTexture = iconManager.getTexture();\n if (iconsTexture) this.state.model.setUniforms(uniforms).setUniforms({\n iconsTexture: iconsTexture,\n iconsTextureDim: [\n iconsTexture.width,\n iconsTexture.height\n ],\n sizeUnits: (0, $7gQQK.UNIT)[sizeUnits],\n sizeScale: sizeScale,\n sizeMinPixels: sizeMinPixels,\n sizeMaxPixels: sizeMaxPixels,\n billboard: billboard,\n alphaCutoff: alphaCutoff\n }).draw();\n }\n _getModel(gl) {\n const positions = [\n -1,\n -1,\n -1,\n 1,\n 1,\n 1,\n 1,\n -1\n ];\n return new (0, $b2F4S.default)(gl, (0, $edHbI._)((0, $2QP2i._)({}, this.getShaders()), {\n id: this.props.id,\n geometry: new (0, $cxTxU.default)({\n drawMode: 6,\n attributes: {\n positions: {\n size: 2,\n value: new Float32Array(positions)\n }\n }\n }),\n isInstanced: true\n }));\n }\n _onUpdate() {\n this.setNeedsRedraw();\n }\n _onError(evt) {\n var _this$getCurrentLayer;\n const onIconError = (_this$getCurrentLayer = this.getCurrentLayer()) === null || _this$getCurrentLayer === void 0 ? void 0 : _this$getCurrentLayer.props.onIconError;\n if (onIconError) onIconError(evt);\n else (0, $4VQgq.default).error(evt.error.message)();\n }\n getInstanceOffset(icon) {\n const { width: width, height: height, anchorX: anchorX = width / 2, anchorY: anchorY = height / 2 } = this.state.iconManager.getIconMapping(icon);\n return [\n width / 2 - anchorX,\n height / 2 - anchorY\n ];\n }\n getInstanceColorMode(icon) {\n const mapping = this.state.iconManager.getIconMapping(icon);\n return mapping.mask ? 1 : 0;\n }\n getInstanceIconFrame(icon) {\n const { x: x, y: y, width: width, height: height } = this.state.iconManager.getIconMapping(icon);\n return [\n x,\n y,\n width,\n height\n ];\n }\n constructor(...args){\n super(...args);\n (0, $lEQUF.default)(this, \"state\", void 0);\n }\n}\n(0, $lEQUF.default)($c72946135ca1cedd$export$2e2bcd8739ae039, \"defaultProps\", $c72946135ca1cedd$var$defaultProps);\n(0, $lEQUF.default)($c72946135ca1cedd$export$2e2bcd8739ae039, \"layerName\", \"IconLayer\");\n\n});\nparcelRegister(\"hcGz1\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c86492f040cb4b2b$export$2e2bcd8739ae039; });\nvar $c86492f040cb4b2b$export$2e2bcd8739ae039 = \"#define SHADER_NAME icon-layer-vertex-shader\\n\\nattribute vec2 positions;\\n\\nattribute vec3 instancePositions;\\nattribute vec3 instancePositions64Low;\\nattribute float instanceSizes;\\nattribute float instanceAngles;\\nattribute vec4 instanceColors;\\nattribute vec3 instancePickingColors;\\nattribute vec4 instanceIconFrames;\\nattribute float instanceColorModes;\\nattribute vec2 instanceOffsets;\\nattribute vec2 instancePixelOffset;\\n\\nuniform float sizeScale;\\nuniform vec2 iconsTextureDim;\\nuniform float sizeMinPixels;\\nuniform float sizeMaxPixels;\\nuniform bool billboard;\\nuniform int sizeUnits;\\n\\nvarying float vColorMode;\\nvarying vec4 vColor;\\nvarying vec2 vTextureCoords;\\nvarying vec2 uv;\\n\\nvec2 rotate_by_angle(vec2 vertex, float angle) {\\n float angle_radian = angle * PI / 180.0;\\n float cos_angle = cos(angle_radian);\\n float sin_angle = sin(angle_radian);\\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\\n return rotationMatrix * vertex;\\n}\\n\\nvoid main(void) {\\n geometry.worldPosition = instancePositions;\\n geometry.uv = positions;\\n geometry.pickingColor = instancePickingColors;\\n uv = positions;\\n\\n vec2 iconSize = instanceIconFrames.zw;\\n float sizePixels = clamp(\\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits), \\n sizeMinPixels, sizeMaxPixels\\n );\\n float instanceScale = iconSize.y == 0.0 ? 0.0 : sizePixels / iconSize.y;\\n vec2 pixelOffset = positions / 2.0 * iconSize + instanceOffsets;\\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles) * instanceScale;\\n pixelOffset += instancePixelOffset;\\n pixelOffset.y *= -1.0;\\n\\n if (billboard) {\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n vec3 offset = vec3(pixelOffset, 0.0);\\n DECKGL_FILTER_SIZE(offset, geometry);\\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\\n\\n } else {\\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\\n DECKGL_FILTER_SIZE(offset_common, geometry);\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position); \\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n }\\n\\n vTextureCoords = mix(\\n instanceIconFrames.xy,\\n instanceIconFrames.xy + iconSize,\\n (positions.xy + 1.0) / 2.0\\n ) / iconsTextureDim;\\n\\n vColor = instanceColors;\\n DECKGL_FILTER_COLOR(vColor, geometry);\\n\\n vColorMode = instanceColorModes;\\n}\\n\";\n\n});\n\nparcelRegister(\"2fpBy\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $1a30d80b67a076f3$export$2e2bcd8739ae039; });\nvar $1a30d80b67a076f3$export$2e2bcd8739ae039 = \"#define SHADER_NAME icon-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform float opacity;\\nuniform sampler2D iconsTexture;\\nuniform float alphaCutoff;\\n\\nvarying float vColorMode;\\nvarying vec4 vColor;\\nvarying vec2 vTextureCoords;\\nvarying vec2 uv;\\n\\nvoid main(void) {\\n geometry.uv = uv;\\n\\n vec4 texColor = texture2D(iconsTexture, vTextureCoords);\\n vec3 color = mix(texColor.rgb, vColor.rgb, vColorMode);\\n float a = texColor.a * opacity * vColor.a;\\n\\n if (a < alphaCutoff) {\\n discard;\\n }\\n\\n gl_FragColor = vec4(color, a);\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n\n});\n\nparcelRegister(\"fAO6S\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b5a11694de6165eb$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $lEQUF = parcelRequire(\"lEQUF\");\n\nvar $2YUMm = parcelRequire(\"2YUMm\");\nvar $7lUAH = parcelRequire(\"7lUAH\");\n\nvar $hGAZG = parcelRequire(\"hGAZG\");\n\nvar $abpME = parcelRequire(\"abpME\");\nconst $b5a11694de6165eb$var$DEFAULT_CANVAS_WIDTH = 1024;\nconst $b5a11694de6165eb$var$DEFAULT_BUFFER = 4;\nconst $b5a11694de6165eb$var$noop = ()=>{};\nconst $b5a11694de6165eb$var$DEFAULT_TEXTURE_PARAMETERS = {\n [10241]: 9987,\n [10240]: 9729,\n [10242]: 33071,\n [10243]: 33071\n};\nfunction $b5a11694de6165eb$var$nextPowOfTwo(number) {\n return Math.pow(2, Math.ceil(Math.log2(number)));\n}\nfunction $b5a11694de6165eb$var$resizeImage(ctx, imageData, maxWidth, maxHeight) {\n const resizeRatio = Math.min(maxWidth / imageData.width, maxHeight / imageData.height);\n const width = Math.floor(imageData.width * resizeRatio);\n const height = Math.floor(imageData.height * resizeRatio);\n if (resizeRatio === 1) return {\n data: imageData,\n width: width,\n height: height\n };\n ctx.canvas.height = height;\n ctx.canvas.width = width;\n ctx.clearRect(0, 0, width, height);\n ctx.drawImage(imageData, 0, 0, imageData.width, imageData.height, 0, 0, width, height);\n return {\n data: ctx.canvas,\n width: width,\n height: height\n };\n}\nfunction $b5a11694de6165eb$var$getIconId(icon) {\n return icon && (icon.id || icon.url);\n}\nfunction $b5a11694de6165eb$var$resizeTexture(texture, width, height, parameters) {\n const oldWidth = texture.width;\n const oldHeight = texture.height;\n const newTexture = new (0, $7lUAH.default)(texture.gl, {\n width: width,\n height: height,\n parameters: parameters\n });\n (0, $2YUMm.copyToTexture)(texture, newTexture, {\n targetY: 0,\n width: oldWidth,\n height: oldHeight\n });\n texture.delete();\n return newTexture;\n}\nfunction $b5a11694de6165eb$var$buildRowMapping(mapping, columns, yOffset) {\n for(let i = 0; i < columns.length; i++){\n const { icon: icon, xOffset: xOffset } = columns[i];\n const id = $b5a11694de6165eb$var$getIconId(icon);\n mapping[id] = (0, $edHbI._)((0, $2QP2i._)({}, icon), {\n x: xOffset,\n y: yOffset\n });\n }\n}\nfunction $b5a11694de6165eb$export$a868857fc20192e3({ icons: icons, buffer: buffer, mapping: mapping = {}, xOffset: xOffset = 0, yOffset: yOffset = 0, rowHeight: rowHeight = 0, canvasWidth: canvasWidth }) {\n let columns = [];\n for(let i = 0; i < icons.length; i++){\n const icon = icons[i];\n const id = $b5a11694de6165eb$var$getIconId(icon);\n if (!mapping[id]) {\n const { height: height, width: width } = icon;\n if (xOffset + width + buffer > canvasWidth) {\n $b5a11694de6165eb$var$buildRowMapping(mapping, columns, yOffset);\n xOffset = 0;\n yOffset = rowHeight + yOffset + buffer;\n rowHeight = 0;\n columns = [];\n }\n columns.push({\n icon: icon,\n xOffset: xOffset\n });\n xOffset = xOffset + width + buffer;\n rowHeight = Math.max(rowHeight, height);\n }\n }\n if (columns.length > 0) $b5a11694de6165eb$var$buildRowMapping(mapping, columns, yOffset);\n return {\n mapping: mapping,\n rowHeight: rowHeight,\n xOffset: xOffset,\n yOffset: yOffset,\n canvasWidth: canvasWidth,\n canvasHeight: $b5a11694de6165eb$var$nextPowOfTwo(rowHeight + yOffset + buffer)\n };\n}\nfunction $b5a11694de6165eb$export$2f9aa8236f3bd1fa(data, getIcon, cachedIcons) {\n if (!data || !getIcon) return null;\n cachedIcons = cachedIcons || {};\n const icons = {};\n const { iterable: iterable, objectInfo: objectInfo } = (0, $abpME.createIterable)(data);\n for (const object of iterable){\n objectInfo.index++;\n const icon = getIcon(object, objectInfo);\n const id = $b5a11694de6165eb$var$getIconId(icon);\n if (!icon) throw new Error(\"Icon is missing.\");\n if (!icon.url) throw new Error(\"Icon url is missing.\");\n if (!icons[id] && (!cachedIcons[id] || icon.url !== cachedIcons[id].url)) icons[id] = (0, $edHbI._)((0, $2QP2i._)({}, icon), {\n source: object,\n sourceIndex: objectInfo.index\n });\n }\n return icons;\n}\nclass $b5a11694de6165eb$export$2e2bcd8739ae039 {\n finalize() {\n var _this$_texture;\n (_this$_texture = this._texture) === null || _this$_texture === void 0 || _this$_texture.delete();\n }\n getTexture() {\n return this._texture || this._externalTexture;\n }\n getIconMapping(icon) {\n const id = this._autoPacking ? $b5a11694de6165eb$var$getIconId(icon) : icon;\n return this._mapping[id] || {};\n }\n setProps({ loadOptions: loadOptions, autoPacking: autoPacking, iconAtlas: iconAtlas, iconMapping: iconMapping, textureParameters: textureParameters }) {\n if (loadOptions) this._loadOptions = loadOptions;\n if (autoPacking !== undefined) this._autoPacking = autoPacking;\n if (iconMapping) this._mapping = iconMapping;\n if (iconAtlas) {\n var _this$_texture2;\n (_this$_texture2 = this._texture) === null || _this$_texture2 === void 0 || _this$_texture2.delete();\n this._texture = null;\n this._externalTexture = iconAtlas;\n }\n if (textureParameters) this._textureParameters = textureParameters;\n }\n get isLoaded() {\n return this._pendingCount === 0;\n }\n packIcons(data, getIcon) {\n if (!this._autoPacking || typeof document === \"undefined\") return;\n const icons = Object.values($b5a11694de6165eb$export$2f9aa8236f3bd1fa(data, getIcon, this._mapping) || {});\n if (icons.length > 0) {\n const { mapping: mapping, xOffset: xOffset, yOffset: yOffset, rowHeight: rowHeight, canvasHeight: canvasHeight } = $b5a11694de6165eb$export$a868857fc20192e3({\n icons: icons,\n buffer: this._buffer,\n canvasWidth: this._canvasWidth,\n mapping: this._mapping,\n rowHeight: this._rowHeight,\n xOffset: this._xOffset,\n yOffset: this._yOffset\n });\n this._rowHeight = rowHeight;\n this._mapping = mapping;\n this._xOffset = xOffset;\n this._yOffset = yOffset;\n this._canvasHeight = canvasHeight;\n if (!this._texture) this._texture = new (0, $7lUAH.default)(this.gl, {\n width: this._canvasWidth,\n height: this._canvasHeight,\n parameters: this._textureParameters || $b5a11694de6165eb$var$DEFAULT_TEXTURE_PARAMETERS\n });\n if (this._texture.height !== this._canvasHeight) this._texture = $b5a11694de6165eb$var$resizeTexture(this._texture, this._canvasWidth, this._canvasHeight, this._textureParameters || $b5a11694de6165eb$var$DEFAULT_TEXTURE_PARAMETERS);\n this.onUpdate();\n this._canvas = this._canvas || document.createElement(\"canvas\");\n this._loadIcons(icons);\n }\n }\n _loadIcons(icons) {\n const ctx = this._canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n for (const icon of icons){\n this._pendingCount++;\n (0, $hGAZG.load)(icon.url, this._loadOptions).then((imageData)=>{\n const id = $b5a11694de6165eb$var$getIconId(icon);\n const iconDef = this._mapping[id];\n const { x: x, y: y, width: maxWidth, height: maxHeight } = iconDef;\n const { data: data, width: width, height: height } = $b5a11694de6165eb$var$resizeImage(ctx, imageData, maxWidth, maxHeight);\n this._texture.setSubImageData({\n data: data,\n x: x + (maxWidth - width) / 2,\n y: y + (maxHeight - height) / 2,\n width: width,\n height: height\n });\n iconDef.width = width;\n iconDef.height = height;\n this._texture.generateMipmap();\n this.onUpdate();\n }).catch((error)=>{\n this.onError({\n url: icon.url,\n source: icon.source,\n sourceIndex: icon.sourceIndex,\n loadOptions: this._loadOptions,\n error: error\n });\n }).finally(()=>{\n this._pendingCount--;\n });\n }\n }\n constructor(gl, { onUpdate: onUpdate = $b5a11694de6165eb$var$noop, onError: onError = $b5a11694de6165eb$var$noop }){\n (0, $lEQUF.default)(this, \"gl\", void 0);\n (0, $lEQUF.default)(this, \"onUpdate\", void 0);\n (0, $lEQUF.default)(this, \"onError\", void 0);\n (0, $lEQUF.default)(this, \"_loadOptions\", null);\n (0, $lEQUF.default)(this, \"_texture\", null);\n (0, $lEQUF.default)(this, \"_externalTexture\", null);\n (0, $lEQUF.default)(this, \"_mapping\", {});\n (0, $lEQUF.default)(this, \"_textureParameters\", null);\n (0, $lEQUF.default)(this, \"_pendingCount\", 0);\n (0, $lEQUF.default)(this, \"_autoPacking\", false);\n (0, $lEQUF.default)(this, \"_xOffset\", 0);\n (0, $lEQUF.default)(this, \"_yOffset\", 0);\n (0, $lEQUF.default)(this, \"_rowHeight\", 0);\n (0, $lEQUF.default)(this, \"_buffer\", $b5a11694de6165eb$var$DEFAULT_BUFFER);\n (0, $lEQUF.default)(this, \"_canvasWidth\", $b5a11694de6165eb$var$DEFAULT_CANVAS_WIDTH);\n (0, $lEQUF.default)(this, \"_canvasHeight\", 0);\n (0, $lEQUF.default)(this, \"_canvas\", null);\n this.gl = gl;\n this.onUpdate = onUpdate;\n this.onError = onError;\n }\n}\n\n});\nparcelRegister(\"hGAZG\", function(module, exports) {\n\n$parcel$export(module.exports, \"load\", function () { return $ce030e1c2e626152$export$11e63f7b0f3d9900; });\n\nvar $e1wxv = parcelRequire(\"e1wxv\");\n\nvar $ejAXt = parcelRequire(\"ejAXt\");\n\nvar $bT4Nz = parcelRequire(\"bT4Nz\");\n\nvar $dNJQA = parcelRequire(\"dNJQA\");\nasync function $ce030e1c2e626152$export$11e63f7b0f3d9900(url, loaders, options, context) {\n if (!Array.isArray(loaders) && !(0, $ejAXt.isLoaderObject)(loaders)) {\n context = undefined;\n options = loaders;\n loaders = undefined;\n }\n const fetch = (0, $bT4Nz.getFetchFunction)(options);\n let data = url;\n if (typeof url === \"string\") data = await fetch(url);\n if ((0, $e1wxv.isBlob)(url)) data = await fetch(url);\n return await (0, $dNJQA.parse)(data, loaders, options);\n}\n\n});\nparcelRegister(\"e1wxv\", function(module, exports) {\n\n$parcel$export(module.exports, \"isObject\", function () { return $a35a6651eb30d797$export$a6cdc56e425d0d0a; });\n$parcel$export(module.exports, \"isPureObject\", function () { return $a35a6651eb30d797$export$e219791d2b49856; });\n$parcel$export(module.exports, \"isIterable\", function () { return $a35a6651eb30d797$export$9652023d9040757; });\n$parcel$export(module.exports, \"isAsyncIterable\", function () { return $a35a6651eb30d797$export$edb10ab8dd75a915; });\n$parcel$export(module.exports, \"isIterator\", function () { return $a35a6651eb30d797$export$50db6e277db66ea0; });\n$parcel$export(module.exports, \"isResponse\", function () { return $a35a6651eb30d797$export$3f1eb41d9a6a6a27; });\n$parcel$export(module.exports, \"isBlob\", function () { return $a35a6651eb30d797$export$5bcd6e94ed871c88; });\n$parcel$export(module.exports, \"isBuffer\", function () { return $a35a6651eb30d797$export$a7884ebc965f8f54; });\n$parcel$export(module.exports, \"isReadableStream\", function () { return $a35a6651eb30d797$export$ac613ff475b69d05; });\nconst $a35a6651eb30d797$var$isBoolean = (x)=>typeof x === \"boolean\";\nconst $a35a6651eb30d797$var$isFunction = (x)=>typeof x === \"function\";\nconst $a35a6651eb30d797$export$a6cdc56e425d0d0a = (x)=>x !== null && typeof x === \"object\";\nconst $a35a6651eb30d797$export$e219791d2b49856 = (x)=>$a35a6651eb30d797$export$a6cdc56e425d0d0a(x) && x.constructor === ({}).constructor;\nconst $a35a6651eb30d797$export$4369c812aac99591 = (x)=>$a35a6651eb30d797$export$a6cdc56e425d0d0a(x) && $a35a6651eb30d797$var$isFunction(x.then);\nconst $a35a6651eb30d797$export$9652023d9040757 = (x)=>x && typeof x[Symbol.iterator] === \"function\";\nconst $a35a6651eb30d797$export$edb10ab8dd75a915 = (x)=>x && typeof x[Symbol.asyncIterator] === \"function\";\nconst $a35a6651eb30d797$export$50db6e277db66ea0 = (x)=>x && $a35a6651eb30d797$var$isFunction(x.next);\nconst $a35a6651eb30d797$export$3f1eb41d9a6a6a27 = (x)=>typeof Response !== \"undefined\" && x instanceof Response || x && x.arrayBuffer && x.text && x.json;\nconst $a35a6651eb30d797$export$be78b3111c50efdd = (x)=>typeof File !== \"undefined\" && x instanceof File;\nconst $a35a6651eb30d797$export$5bcd6e94ed871c88 = (x)=>typeof Blob !== \"undefined\" && x instanceof Blob;\nconst $a35a6651eb30d797$export$a7884ebc965f8f54 = (x)=>x && typeof x === \"object\" && x.isBuffer;\nconst $a35a6651eb30d797$export$5536d41d90245d51 = (x)=>$a35a6651eb30d797$export$a6cdc56e425d0d0a(x) && $a35a6651eb30d797$var$isFunction(x.abort) && $a35a6651eb30d797$var$isFunction(x.getWriter);\nconst $a35a6651eb30d797$export$f8bb1f6b773199b7 = (x)=>typeof ReadableStream !== \"undefined\" && x instanceof ReadableStream || $a35a6651eb30d797$export$a6cdc56e425d0d0a(x) && $a35a6651eb30d797$var$isFunction(x.tee) && $a35a6651eb30d797$var$isFunction(x.cancel) && $a35a6651eb30d797$var$isFunction(x.getReader);\nconst $a35a6651eb30d797$export$eec1f46c8eef21a4 = (x)=>$a35a6651eb30d797$export$a6cdc56e425d0d0a(x) && $a35a6651eb30d797$var$isFunction(x.end) && $a35a6651eb30d797$var$isFunction(x.write) && $a35a6651eb30d797$var$isBoolean(x.writable);\nconst $a35a6651eb30d797$export$2940183a2d5db90f = (x)=>$a35a6651eb30d797$export$a6cdc56e425d0d0a(x) && $a35a6651eb30d797$var$isFunction(x.read) && $a35a6651eb30d797$var$isFunction(x.pipe) && $a35a6651eb30d797$var$isBoolean(x.readable);\nconst $a35a6651eb30d797$export$ac613ff475b69d05 = (x)=>$a35a6651eb30d797$export$f8bb1f6b773199b7(x) || $a35a6651eb30d797$export$2940183a2d5db90f(x);\nconst $a35a6651eb30d797$export$b58a61c52edb4f66 = (x)=>$a35a6651eb30d797$export$5536d41d90245d51(x) || $a35a6651eb30d797$export$eec1f46c8eef21a4(x);\n\n});\n\nparcelRegister(\"ejAXt\", function(module, exports) {\n\n$parcel$export(module.exports, \"isLoaderObject\", function () { return $a6bf8226ff587011$export$2db07da082dd07a7; });\n$parcel$export(module.exports, \"normalizeLoader\", function () { return $a6bf8226ff587011$export$a19b0af95f3585f1; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $8LMZY = parcelRequire(\"8LMZY\");\nfunction $a6bf8226ff587011$export$2db07da082dd07a7(loader) {\n var _loader;\n if (!loader) return false;\n if (Array.isArray(loader)) loader = loader[0];\n const hasExtensions = Array.isArray((_loader = loader) === null || _loader === void 0 ? void 0 : _loader.extensions);\n return hasExtensions;\n}\nfunction $a6bf8226ff587011$export$a19b0af95f3585f1(loader) {\n var _loader2, _loader3;\n (0, $8LMZY.assert)(loader, \"null loader\");\n (0, $8LMZY.assert)($a6bf8226ff587011$export$2db07da082dd07a7(loader), \"invalid loader\");\n let options;\n if (Array.isArray(loader)) {\n options = loader[1];\n loader = loader[0];\n loader = (0, $edHbI._)((0, $2QP2i._)({}, loader), {\n options: (0, $2QP2i._)({}, loader.options, options)\n });\n }\n if ((_loader2 = loader) !== null && _loader2 !== void 0 && _loader2.parseTextSync || (_loader3 = loader) !== null && _loader3 !== void 0 && _loader3.parseText) loader.text = true;\n if (!loader.text) loader.binary = true;\n return loader;\n}\n\n});\nparcelRegister(\"8LMZY\", function(module, exports) {\n\n$parcel$export(module.exports, \"assert\", function () { return $6628b8a26d337056$export$a7a9523472993e97; });\nfunction $6628b8a26d337056$export$a7a9523472993e97(condition, message) {\n if (!condition) throw new Error(message || \"loader assertion failed.\");\n}\n\n});\n\n\nparcelRegister(\"bT4Nz\", function(module, exports) {\n\n$parcel$export(module.exports, \"getGlobalLoaderState\", function () { return $8a788da837da1f1f$export$2a5c5f9d1a96dd63; });\n$parcel$export(module.exports, \"normalizeOptions\", function () { return $8a788da837da1f1f$export$eb806c0b85b62f7a; });\n$parcel$export(module.exports, \"getFetchFunction\", function () { return $8a788da837da1f1f$export$9b973e0eff85009f; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $e1wxv = parcelRequire(\"e1wxv\");\n\nvar $2NmWy = parcelRequire(\"2NmWy\");\n\nvar $iTzee = parcelRequire(\"iTzee\");\n\nvar $crAh0 = parcelRequire(\"crAh0\");\nfunction $8a788da837da1f1f$export$2a5c5f9d1a96dd63() {\n globalThis.loaders = globalThis.loaders || {};\n const { loaders: loaders } = globalThis;\n loaders._state = loaders._state || {};\n return loaders._state;\n}\nconst $8a788da837da1f1f$var$getGlobalLoaderOptions = ()=>{\n const state = $8a788da837da1f1f$export$2a5c5f9d1a96dd63();\n state.globalOptions = state.globalOptions || (0, $2QP2i._)({}, (0, $crAh0.DEFAULT_LOADER_OPTIONS));\n return state.globalOptions;\n};\nfunction $8a788da837da1f1f$export$545eb931aeddfa08(options) {\n const state = $8a788da837da1f1f$export$2a5c5f9d1a96dd63();\n const globalOptions = $8a788da837da1f1f$var$getGlobalLoaderOptions();\n state.globalOptions = $8a788da837da1f1f$var$normalizeOptionsInternal(globalOptions, options);\n}\nfunction $8a788da837da1f1f$export$eb806c0b85b62f7a(options, loader, loaders, url) {\n loaders = loaders || [];\n loaders = Array.isArray(loaders) ? loaders : [\n loaders\n ];\n $8a788da837da1f1f$var$validateOptions(options, loaders);\n return $8a788da837da1f1f$var$normalizeOptionsInternal(loader, options, url);\n}\nfunction $8a788da837da1f1f$export$9b973e0eff85009f(options, context) {\n const globalOptions = $8a788da837da1f1f$var$getGlobalLoaderOptions();\n const fetchOptions = options || globalOptions;\n if (typeof fetchOptions.fetch === \"function\") return fetchOptions.fetch;\n if ((0, $e1wxv.isObject)(fetchOptions.fetch)) return (url)=>(0, $2NmWy.fetchFile)(url, fetchOptions);\n if (context !== null && context !== void 0 && context.fetch) return context === null || context === void 0 ? void 0 : context.fetch;\n return 0, $2NmWy.fetchFile;\n}\nfunction $8a788da837da1f1f$var$validateOptions(options, loaders) {\n $8a788da837da1f1f$var$validateOptionsObject(options, null, (0, $crAh0.DEFAULT_LOADER_OPTIONS), (0, $crAh0.REMOVED_LOADER_OPTIONS), loaders);\n for (const loader of loaders){\n const idOptions = options && options[loader.id] || {};\n const loaderOptions = loader.options && loader.options[loader.id] || {};\n const deprecatedOptions = loader.deprecatedOptions && loader.deprecatedOptions[loader.id] || {};\n $8a788da837da1f1f$var$validateOptionsObject(idOptions, loader.id, loaderOptions, deprecatedOptions, loaders);\n }\n}\nfunction $8a788da837da1f1f$var$validateOptionsObject(options, id, defaultOptions, deprecatedOptions, loaders) {\n const loaderName = id || \"Top level\";\n const prefix = id ? `${id}.` : \"\";\n for(const key in options){\n const isSubOptions = !id && (0, $e1wxv.isObject)(options[key]);\n const isBaseUriOption = key === \"baseUri\" && !id;\n const isWorkerUrlOption = key === \"workerUrl\" && id;\n if (!(key in defaultOptions) && !isBaseUriOption && !isWorkerUrlOption) {\n if (key in deprecatedOptions) (0, $iTzee.probeLog).warn(`${loaderName} loader option \\'${prefix}${key}\\' no longer supported, use \\'${deprecatedOptions[key]}\\'`)();\n else if (!isSubOptions) {\n const suggestion = $8a788da837da1f1f$var$findSimilarOption(key, loaders);\n (0, $iTzee.probeLog).warn(`${loaderName} loader option \\'${prefix}${key}\\' not recognized. ${suggestion}`)();\n }\n }\n }\n}\nfunction $8a788da837da1f1f$var$findSimilarOption(optionKey, loaders) {\n const lowerCaseOptionKey = optionKey.toLowerCase();\n let bestSuggestion = \"\";\n for (const loader of loaders)for(const key in loader.options){\n if (optionKey === key) return `Did you mean \\'${loader.id}.${key}\\'?`;\n const lowerCaseKey = key.toLowerCase();\n const isPartialMatch = lowerCaseOptionKey.startsWith(lowerCaseKey) || lowerCaseKey.startsWith(lowerCaseOptionKey);\n if (isPartialMatch) bestSuggestion = bestSuggestion || `Did you mean \\'${loader.id}.${key}\\'?`;\n }\n return bestSuggestion;\n}\nfunction $8a788da837da1f1f$var$normalizeOptionsInternal(loader, options, url) {\n const loaderDefaultOptions = loader.options || {};\n const mergedOptions = (0, $2QP2i._)({}, loaderDefaultOptions);\n $8a788da837da1f1f$var$addUrlOptions(mergedOptions, url);\n if (mergedOptions.log === null) mergedOptions.log = new (0, $iTzee.NullLog)();\n $8a788da837da1f1f$var$mergeNestedFields(mergedOptions, $8a788da837da1f1f$var$getGlobalLoaderOptions());\n $8a788da837da1f1f$var$mergeNestedFields(mergedOptions, options);\n return mergedOptions;\n}\nfunction $8a788da837da1f1f$var$mergeNestedFields(mergedOptions, options) {\n for(const key in options)if (key in options) {\n const value = options[key];\n if ((0, $e1wxv.isPureObject)(value) && (0, $e1wxv.isPureObject)(mergedOptions[key])) mergedOptions[key] = (0, $2QP2i._)({}, mergedOptions[key], options[key]);\n else mergedOptions[key] = options[key];\n }\n}\nfunction $8a788da837da1f1f$var$addUrlOptions(options, url) {\n if (url && !(\"baseUri\" in options)) options.baseUri = url;\n}\n\n});\nparcelRegister(\"2NmWy\", function(module, exports) {\n\n$parcel$export(module.exports, \"fetchFile\", function () { return $2091f47518b99d4f$export$d965bcb23f9d06c5; });\n\nvar $3RzUk = parcelRequire(\"3RzUk\");\n\nvar $dadEq = parcelRequire(\"dadEq\");\nasync function $2091f47518b99d4f$export$d965bcb23f9d06c5(url, options) {\n if (typeof url === \"string\") {\n url = (0, $3RzUk.resolvePath)(url);\n let fetchOptions = options;\n if (options !== null && options !== void 0 && options.fetch && typeof (options === null || options === void 0 ? void 0 : options.fetch) !== \"function\") fetchOptions = options.fetch;\n return await fetch(url, fetchOptions);\n }\n return await (0, $dadEq.makeResponse)(url);\n}\n\n});\nparcelRegister(\"3RzUk\", function(module, exports) {\n\n$parcel$export(module.exports, \"resolvePath\", function () { return $2d022cd4cd84a1b6$export$b09f2ff0bbcb43c7; });\nlet $2d022cd4cd84a1b6$var$pathPrefix = \"\";\nconst $2d022cd4cd84a1b6$var$fileAliases = {};\nfunction $2d022cd4cd84a1b6$export$fa7cbeea6a0f8cd3(prefix) {\n $2d022cd4cd84a1b6$var$pathPrefix = prefix;\n}\nfunction $2d022cd4cd84a1b6$export$e21ff368c7512d8e() {\n return $2d022cd4cd84a1b6$var$pathPrefix;\n}\nfunction $2d022cd4cd84a1b6$export$65b32f70101f5674(aliases) {\n Object.assign($2d022cd4cd84a1b6$var$fileAliases, aliases);\n}\nfunction $2d022cd4cd84a1b6$export$b09f2ff0bbcb43c7(filename) {\n for(const alias in $2d022cd4cd84a1b6$var$fileAliases)if (filename.startsWith(alias)) {\n const replacement = $2d022cd4cd84a1b6$var$fileAliases[alias];\n filename = filename.replace(alias, replacement);\n }\n if (!filename.startsWith(\"http://\") && !filename.startsWith(\"https://\")) filename = `${$2d022cd4cd84a1b6$var$pathPrefix}${filename}`;\n return filename;\n}\n\n});\n\nparcelRegister(\"dadEq\", function(module, exports) {\n\n$parcel$export(module.exports, \"makeResponse\", function () { return $9956cc5ca40856c5$export$16d84ad959da5112; });\n$parcel$export(module.exports, \"checkResponse\", function () { return $9956cc5ca40856c5$export$5db0ad607ce3410b; });\n\nvar $e1wxv = parcelRequire(\"e1wxv\");\n\nvar $5Tper = parcelRequire(\"5Tper\");\nasync function $9956cc5ca40856c5$export$16d84ad959da5112(resource) {\n if ((0, $e1wxv.isResponse)(resource)) return resource;\n const headers = {};\n const contentLength = (0, $5Tper.getResourceContentLength)(resource);\n if (contentLength >= 0) headers[\"content-length\"] = String(contentLength);\n const { url: url, type: type } = (0, $5Tper.getResourceUrlAndType)(resource);\n if (type) headers[\"content-type\"] = type;\n const initialDataUrl = await $9956cc5ca40856c5$var$getInitialDataUrl(resource);\n if (initialDataUrl) headers[\"x-first-bytes\"] = initialDataUrl;\n if (typeof resource === \"string\") resource = new TextEncoder().encode(resource);\n const response = new Response(resource, {\n headers: headers\n });\n Object.defineProperty(response, \"url\", {\n value: url\n });\n return response;\n}\nasync function $9956cc5ca40856c5$export$5db0ad607ce3410b(response) {\n if (!response.ok) {\n const message = await $9956cc5ca40856c5$var$getResponseError(response);\n throw new Error(message);\n }\n}\nfunction $9956cc5ca40856c5$export$ef46f094beca181f(response) {\n if (!response.ok) {\n let message = `${response.status} ${response.statusText}`;\n message = message.length > 60 ? `${message.slice(60)}...` : message;\n throw new Error(message);\n }\n}\nasync function $9956cc5ca40856c5$var$getResponseError(response) {\n let message = `Failed to fetch resource ${response.url} (${response.status}): `;\n try {\n const contentType = response.headers.get(\"Content-Type\");\n let text = response.statusText;\n if (contentType.includes(\"application/json\")) text += ` ${await response.text()}`;\n message += text;\n message = message.length > 60 ? `${message.slice(60)}...` : message;\n } catch (error) {}\n return message;\n}\nasync function $9956cc5ca40856c5$var$getInitialDataUrl(resource) {\n const INITIAL_DATA_LENGTH = 5;\n if (typeof resource === \"string\") return `data:,${resource.slice(0, INITIAL_DATA_LENGTH)}`;\n if (resource instanceof Blob) {\n const blobSlice = resource.slice(0, 5);\n return await new Promise((resolve)=>{\n const reader = new FileReader();\n reader.onload = (event)=>{\n var _event$target;\n return resolve(event === null || event === void 0 ? void 0 : (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.result);\n };\n reader.readAsDataURL(blobSlice);\n });\n }\n if (resource instanceof ArrayBuffer) {\n const slice = resource.slice(0, INITIAL_DATA_LENGTH);\n const base64 = $9956cc5ca40856c5$var$arrayBufferToBase64(slice);\n return `data:base64,${base64}`;\n }\n return null;\n}\nfunction $9956cc5ca40856c5$var$arrayBufferToBase64(buffer) {\n let binary = \"\";\n const bytes = new Uint8Array(buffer);\n for(let i = 0; i < bytes.byteLength; i++)binary += String.fromCharCode(bytes[i]);\n return btoa(binary);\n}\n\n});\nparcelRegister(\"5Tper\", function(module, exports) {\n\n$parcel$export(module.exports, \"getResourceUrlAndType\", function () { return $44a5a95c9800610f$export$62b93576035b31a0; });\n$parcel$export(module.exports, \"getResourceContentLength\", function () { return $44a5a95c9800610f$export$795ad0074e2d4d36; });\n\nvar $e1wxv = parcelRequire(\"e1wxv\");\n\nvar $hCL4l = parcelRequire(\"hCL4l\");\nconst $44a5a95c9800610f$var$QUERY_STRING_PATTERN = /\\?.*/;\nfunction $44a5a95c9800610f$export$62b93576035b31a0(resource) {\n if ((0, $e1wxv.isResponse)(resource)) {\n const url = $44a5a95c9800610f$var$stripQueryString(resource.url || \"\");\n const contentTypeHeader = resource.headers.get(\"content-type\") || \"\";\n return {\n url: url,\n type: (0, $hCL4l.parseMIMEType)(contentTypeHeader) || (0, $hCL4l.parseMIMETypeFromURL)(url)\n };\n }\n if ((0, $e1wxv.isBlob)(resource)) return {\n url: $44a5a95c9800610f$var$stripQueryString(resource.name || \"\"),\n type: resource.type || \"\"\n };\n if (typeof resource === \"string\") return {\n url: $44a5a95c9800610f$var$stripQueryString(resource),\n type: (0, $hCL4l.parseMIMETypeFromURL)(resource)\n };\n return {\n url: \"\",\n type: \"\"\n };\n}\nfunction $44a5a95c9800610f$export$795ad0074e2d4d36(resource) {\n if ((0, $e1wxv.isResponse)(resource)) return resource.headers[\"content-length\"] || -1;\n if ((0, $e1wxv.isBlob)(resource)) return resource.size;\n if (typeof resource === \"string\") return resource.length;\n if (resource instanceof ArrayBuffer) return resource.byteLength;\n if (ArrayBuffer.isView(resource)) return resource.byteLength;\n return -1;\n}\nfunction $44a5a95c9800610f$var$stripQueryString(url) {\n return url.replace($44a5a95c9800610f$var$QUERY_STRING_PATTERN, \"\");\n}\n\n});\nparcelRegister(\"hCL4l\", function(module, exports) {\n\n$parcel$export(module.exports, \"parseMIMEType\", function () { return $cd4a7f3db6caf304$export$85e6adb445fa3ef0; });\n$parcel$export(module.exports, \"parseMIMETypeFromURL\", function () { return $cd4a7f3db6caf304$export$a8aa3005f5e6c533; });\nconst $cd4a7f3db6caf304$var$DATA_URL_PATTERN = /^data:([-\\w.]+\\/[-\\w.+]+)(;|,)/;\nconst $cd4a7f3db6caf304$var$MIME_TYPE_PATTERN = /^([-\\w.]+\\/[-\\w.+]+)/;\nfunction $cd4a7f3db6caf304$export$85e6adb445fa3ef0(mimeString) {\n const matches = $cd4a7f3db6caf304$var$MIME_TYPE_PATTERN.exec(mimeString);\n if (matches) return matches[1];\n return mimeString;\n}\nfunction $cd4a7f3db6caf304$export$a8aa3005f5e6c533(url) {\n const matches = $cd4a7f3db6caf304$var$DATA_URL_PATTERN.exec(url);\n if (matches) return matches[1];\n return \"\";\n}\n\n});\n\n\n\n\nparcelRegister(\"iTzee\", function(module, exports) {\n\n$parcel$export(module.exports, \"probeLog\", function () { return $dc18b0b488f292dc$export$775acaacb88283c4; });\n$parcel$export(module.exports, \"NullLog\", function () { return $dc18b0b488f292dc$export$c8151b0a106d0aae; });\n$parcel$export(module.exports, \"ConsoleLog\", function () { return $dc18b0b488f292dc$export$b0d7de77e5ad708; });\n\nvar $1F5uH = parcelRequire(\"1F5uH\");\nparcelRequire(\"e4611\");\nvar $2P1GV = parcelRequire(\"2P1GV\");\nconst $dc18b0b488f292dc$export$775acaacb88283c4 = new (0, $2P1GV.default)({\n id: \"loaders.gl\"\n});\nclass $dc18b0b488f292dc$export$c8151b0a106d0aae {\n log() {\n return ()=>{};\n }\n info() {\n return ()=>{};\n }\n warn() {\n return ()=>{};\n }\n error() {\n return ()=>{};\n }\n}\nclass $dc18b0b488f292dc$export$b0d7de77e5ad708 {\n log(...args) {\n return this.console.log.bind(this.console, ...args);\n }\n info(...args) {\n return this.console.info.bind(this.console, ...args);\n }\n warn(...args) {\n return this.console.warn.bind(this.console, ...args);\n }\n error(...args) {\n return this.console.error.bind(this.console, ...args);\n }\n constructor(){\n (0, $1F5uH.default)(this, \"console\", void 0);\n this.console = console;\n }\n}\n\n});\nparcelRegister(\"e4611\", function(module, exports) {\n\n$parcel$export(module.exports, \"Log\", function () { return (parcelRequire(\"2P1GV\")).default; });\n\n\nvar $2P1GV = parcelRequire(\"2P1GV\");\n\n\n\n\n\n\n\n\n\n\n\nparcelRequire(\"6CIYR\");\nvar $azAHT = parcelRequire(\"azAHT\");\nvar $biFr5 = parcelRequire(\"biFr5\");\nvar $a3d61af2324ac8d7$export$2e2bcd8739ae039 = new (0, $2P1GV.default)({\n id: \"probe.gl\"\n});\n\n});\nparcelRegister(\"2P1GV\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $20e1a814bed818df$export$2e2bcd8739ae039; });\n\nvar $6mcwc = parcelRequire(\"6mcwc\");\n\nvar $2wUTt = parcelRequire(\"2wUTt\");\n\nvar $fQWC8 = parcelRequire(\"fQWC8\");\n\nvar $4d7hv = parcelRequire(\"4d7hv\");\n\nvar $3NdId = parcelRequire(\"3NdId\");\n\nvar $113Uv = parcelRequire(\"113Uv\");\n\nvar $blCq0 = parcelRequire(\"blCq0\");\nconst $20e1a814bed818df$var$originalConsole = {\n debug: (0, $6mcwc.isBrowser) ? console.debug || console.log : console.log,\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error\n};\nconst $20e1a814bed818df$var$DEFAULT_SETTINGS = {\n enabled: true,\n level: 0\n};\nfunction $20e1a814bed818df$var$noop() {}\nconst $20e1a814bed818df$var$cache = {};\nconst $20e1a814bed818df$var$ONCE = {\n once: true\n};\nfunction $20e1a814bed818df$var$getTableHeader(table) {\n for(const key in table){\n for(const title in table[key])return title || \"untitled\";\n }\n return \"empty\";\n}\nclass $20e1a814bed818df$export$2e2bcd8739ae039 {\n set level(newLevel) {\n this.setLevel(newLevel);\n }\n get level() {\n return this.getLevel();\n }\n isEnabled() {\n return this._storage.config.enabled;\n }\n getLevel() {\n return this._storage.config.level;\n }\n getTotal() {\n return Number(((0, $blCq0.default)() - this._startTs).toPrecision(10));\n }\n getDelta() {\n return Number(((0, $blCq0.default)() - this._deltaTs).toPrecision(10));\n }\n set priority(newPriority) {\n this.level = newPriority;\n }\n get priority() {\n return this.level;\n }\n getPriority() {\n return this.level;\n }\n enable(enabled = true) {\n this._storage.updateConfiguration({\n enabled: enabled\n });\n return this;\n }\n setLevel(level) {\n this._storage.updateConfiguration({\n level: level\n });\n return this;\n }\n assert(condition, message) {\n (0, $113Uv.default)(condition, message);\n }\n warn(message) {\n return this._getLogFunction(0, message, $20e1a814bed818df$var$originalConsole.warn, arguments, $20e1a814bed818df$var$ONCE);\n }\n error(message) {\n return this._getLogFunction(0, message, $20e1a814bed818df$var$originalConsole.error, arguments);\n }\n deprecated(oldUsage, newUsage) {\n return this.warn(\"`\".concat(oldUsage, \"` is deprecated and will be removed in a later version. Use `\").concat(newUsage, \"` instead\"));\n }\n removed(oldUsage, newUsage) {\n return this.error(\"`\".concat(oldUsage, \"` has been removed. Use `\").concat(newUsage, \"` instead\"));\n }\n probe(logLevel, message) {\n return this._getLogFunction(logLevel, message, $20e1a814bed818df$var$originalConsole.log, arguments, {\n time: true,\n once: true\n });\n }\n log(logLevel, message) {\n return this._getLogFunction(logLevel, message, $20e1a814bed818df$var$originalConsole.debug, arguments);\n }\n info(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.info, arguments);\n }\n once(logLevel, message) {\n return this._getLogFunction(logLevel, message, $20e1a814bed818df$var$originalConsole.debug || $20e1a814bed818df$var$originalConsole.info, arguments, $20e1a814bed818df$var$ONCE);\n }\n table(logLevel, table, columns) {\n if (table) return this._getLogFunction(logLevel, table, console.table || $20e1a814bed818df$var$noop, columns && [\n columns\n ], {\n tag: $20e1a814bed818df$var$getTableHeader(table)\n });\n return $20e1a814bed818df$var$noop;\n }\n image({ logLevel: logLevel, priority: priority, image: image, message: message = \"\", scale: scale = 1 }) {\n if (!this._shouldLog(logLevel || priority)) return $20e1a814bed818df$var$noop;\n return (0, $6mcwc.isBrowser) ? $20e1a814bed818df$var$logImageInBrowser({\n image: image,\n message: message,\n scale: scale\n }) : $20e1a814bed818df$var$logImageInNode({\n image: image,\n message: message,\n scale: scale\n });\n }\n settings() {\n if (console.table) console.table(this._storage.config);\n else console.log(this._storage.config);\n }\n get(setting) {\n return this._storage.config[setting];\n }\n set(setting, value) {\n this._storage.updateConfiguration({\n [setting]: value\n });\n }\n time(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);\n }\n timeEnd(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeEnd ? console.timeEnd : console.info);\n }\n timeStamp(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeStamp || $20e1a814bed818df$var$noop);\n }\n group(logLevel, message, opts = {\n collapsed: false\n }) {\n opts = $20e1a814bed818df$export$abc60e668512edf9({\n logLevel: logLevel,\n message: message,\n opts: opts\n });\n const { collapsed: collapsed } = opts;\n opts.method = (collapsed ? console.groupCollapsed : console.group) || console.info;\n return this._getLogFunction(opts);\n }\n groupCollapsed(logLevel, message, opts = {}) {\n return this.group(logLevel, message, Object.assign({}, opts, {\n collapsed: true\n }));\n }\n groupEnd(logLevel) {\n return this._getLogFunction(logLevel, \"\", console.groupEnd || $20e1a814bed818df$var$noop);\n }\n withGroup(logLevel, message, func) {\n this.group(logLevel, message)();\n try {\n func();\n } finally{\n this.groupEnd(logLevel)();\n }\n }\n trace() {\n if (console.trace) console.trace();\n }\n _shouldLog(logLevel) {\n return this.isEnabled() && this.getLevel() >= $20e1a814bed818df$var$normalizeLogLevel(logLevel);\n }\n _getLogFunction(logLevel, message, method, args = [], opts) {\n if (this._shouldLog(logLevel)) {\n opts = $20e1a814bed818df$export$abc60e668512edf9({\n logLevel: logLevel,\n message: message,\n args: args,\n opts: opts\n });\n method = method || opts.method;\n (0, $113Uv.default)(method);\n opts.total = this.getTotal();\n opts.delta = this.getDelta();\n this._deltaTs = (0, $blCq0.default)();\n const tag = opts.tag || opts.message;\n if (opts.once) {\n if (!$20e1a814bed818df$var$cache[tag]) $20e1a814bed818df$var$cache[tag] = (0, $blCq0.default)();\n else return $20e1a814bed818df$var$noop;\n }\n message = $20e1a814bed818df$var$decorateMessage(this.id, opts.message, opts);\n return method.bind(console, message, ...opts.args);\n }\n return $20e1a814bed818df$var$noop;\n }\n constructor({ id: id } = {\n id: \"\"\n }){\n this.id = id;\n this.VERSION = (0, $6mcwc.VERSION);\n this._startTs = (0, $blCq0.default)();\n this._deltaTs = (0, $blCq0.default)();\n this.LOG_THROTTLE_TIMEOUT = 0;\n this._storage = new (0, $2wUTt.default)(\"__probe-\".concat(this.id, \"__\"), $20e1a814bed818df$var$DEFAULT_SETTINGS);\n this.userData = {};\n this.timeStamp(\"\".concat(this.id, \" started\"));\n (0, $3NdId.autobind)(this);\n Object.seal(this);\n }\n}\n$20e1a814bed818df$export$2e2bcd8739ae039.VERSION = (0, $6mcwc.VERSION);\nfunction $20e1a814bed818df$var$normalizeLogLevel(logLevel) {\n if (!logLevel) return 0;\n let resolvedLevel;\n switch(typeof logLevel){\n case \"number\":\n resolvedLevel = logLevel;\n break;\n case \"object\":\n resolvedLevel = logLevel.logLevel || logLevel.priority || 0;\n break;\n default:\n return 0;\n }\n (0, $113Uv.default)(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);\n return resolvedLevel;\n}\nfunction $20e1a814bed818df$export$abc60e668512edf9(opts) {\n const { logLevel: logLevel, message: message } = opts;\n opts.logLevel = $20e1a814bed818df$var$normalizeLogLevel(logLevel);\n const args = opts.args ? Array.from(opts.args) : [];\n while(args.length && args.shift() !== message);\n opts.args = args;\n switch(typeof logLevel){\n case \"string\":\n case \"function\":\n if (message !== undefined) args.unshift(message);\n opts.message = logLevel;\n break;\n case \"object\":\n Object.assign(opts, logLevel);\n break;\n default:\n }\n if (typeof opts.message === \"function\") opts.message = opts.message();\n const messageType = typeof opts.message;\n (0, $113Uv.default)(messageType === \"string\" || messageType === \"object\");\n return Object.assign(opts, opts.opts);\n}\nfunction $20e1a814bed818df$var$decorateMessage(id, message, opts) {\n if (typeof message === \"string\") {\n const time = opts.time ? (0, $fQWC8.leftPad)((0, $fQWC8.formatTime)(opts.total)) : \"\";\n message = opts.time ? \"\".concat(id, \": \").concat(time, \" \").concat(message) : \"\".concat(id, \": \").concat(message);\n message = (0, $4d7hv.addColor)(message, opts.color, opts.background);\n }\n return message;\n}\n\nfunction $20e1a814bed818df$var$logImageInNode({ image: image, message: message = \"\", scale: scale = 1 }) {\n let asciify = null;\n try {\n asciify = (parcelRequire(\"5tWFo\"));\n } catch (error) {}\n if (asciify) return ()=>asciify(image, {\n fit: \"box\",\n width: \"\".concat(Math.round(80 * scale), \"%\")\n }).then((data)=>console.log(data));\n return $20e1a814bed818df$var$noop;\n}\nfunction $20e1a814bed818df$var$logImageInBrowser({ image: image, message: message = \"\", scale: scale = 1 }) {\n if (typeof image === \"string\") {\n const img = new Image();\n img.onload = ()=>{\n const args = (0, $fQWC8.formatImage)(img, message, scale);\n console.log(...args);\n };\n img.src = image;\n return $20e1a814bed818df$var$noop;\n }\n const element = image.nodeName || \"\";\n if (element.toLowerCase() === \"img\") {\n console.log(...(0, $fQWC8.formatImage)(image, message, scale));\n return $20e1a814bed818df$var$noop;\n }\n if (element.toLowerCase() === \"canvas\") {\n const img = new Image();\n img.onload = ()=>console.log(...(0, $fQWC8.formatImage)(img, message, scale));\n img.src = image.toDataURL();\n return $20e1a814bed818df$var$noop;\n }\n return $20e1a814bed818df$var$noop;\n}\n\n});\nparcelRegister(\"6mcwc\", function(module, exports) {\n\n$parcel$export(module.exports, \"VERSION\", function () { return $4a0e820c3db1fa54$export$a4ad2735b021c132; });\n$parcel$export(module.exports, \"isBrowser\", function () { return $4a0e820c3db1fa54$export$4e09c449d6c407f7; });\n\nvar $gSC7V = parcelRequire(\"gSC7V\");\n\nvar $bSvGO = parcelRequire(\"bSvGO\");\nconst $4a0e820c3db1fa54$export$a4ad2735b021c132 = typeof __VERSION__ !== \"undefined\" ? __VERSION__ : \"untranspiled source\";\nconst $4a0e820c3db1fa54$export$4e09c449d6c407f7 = (0, $gSC7V.default)();\n\n});\nparcelRegister(\"gSC7V\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c49f43b062fa7b91$export$2e2bcd8739ae039; });\n\nvar $6Ltw5 = parcelRequire(\"6Ltw5\");\n\nvar $95Bnk = parcelRequire(\"95Bnk\");\nfunction $c49f43b062fa7b91$export$2e2bcd8739ae039() {\n const isNode = typeof $95Bnk === \"object\" && String($95Bnk) === \"[object process]\" && false;\n return !isNode || (0, $6Ltw5.default)();\n}\nfunction $c49f43b062fa7b91$export$fb09d24fafba666a() {\n return $c49f43b062fa7b91$export$2e2bcd8739ae039() && typeof document !== \"undefined\";\n}\n\n});\nparcelRegister(\"6Ltw5\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $4ece0738232bb513$export$2e2bcd8739ae039; });\n\nvar $95Bnk = parcelRequire(\"95Bnk\");\nfunction $4ece0738232bb513$export$2e2bcd8739ae039(mockUserAgent) {\n if (typeof window !== \"undefined\" && typeof window.process === \"object\" && window.process.type === \"renderer\") return true;\n if (typeof $95Bnk !== \"undefined\" && typeof $95Bnk.versions === \"object\" && Boolean($95Bnk.versions.electron)) return true;\n const realUserAgent = typeof navigator === \"object\" && typeof navigator.userAgent === \"string\" && navigator.userAgent;\n const userAgent = mockUserAgent || realUserAgent;\n if (userAgent && userAgent.indexOf(\"Electron\") >= 0) return true;\n return false;\n}\n\n});\n\n\nparcelRegister(\"bSvGO\", function(module, exports) {\n\n$parcel$export(module.exports, \"window\", function () { return $8a5d51c0e7483c64$export$8291e5b88f90ce4; });\n$parcel$export(module.exports, \"process\", function () { return $8a5d51c0e7483c64$export$e54fe5b0f43758f7; });\n\nvar $95Bnk = parcelRequire(\"95Bnk\");\nconst $8a5d51c0e7483c64$var$globals = {\n self: typeof self !== \"undefined\" && self,\n window: typeof window !== \"undefined\" && window,\n global: typeof $parcel$global !== \"undefined\" && $parcel$global,\n document: typeof document !== \"undefined\" && document,\n process: typeof $95Bnk === \"object\" && $95Bnk\n};\nconst $8a5d51c0e7483c64$export$82c2e460fb230c2a = $8a5d51c0e7483c64$var$globals.self || $8a5d51c0e7483c64$var$globals.window || $8a5d51c0e7483c64$var$globals.global;\nconst $8a5d51c0e7483c64$export$8291e5b88f90ce4 = $8a5d51c0e7483c64$var$globals.window || $8a5d51c0e7483c64$var$globals.self || $8a5d51c0e7483c64$var$globals.global;\nconst $8a5d51c0e7483c64$export$90b4d2ff6acb88af = $8a5d51c0e7483c64$var$globals.global || $8a5d51c0e7483c64$var$globals.self || $8a5d51c0e7483c64$var$globals.window;\nconst $8a5d51c0e7483c64$export$5a7bfc01df82fcd1 = $8a5d51c0e7483c64$var$globals.document || {};\nconst $8a5d51c0e7483c64$export$e54fe5b0f43758f7 = $8a5d51c0e7483c64$var$globals.process || {};\nconst $8a5d51c0e7483c64$export$e896d9a1b4631fa1 = console;\n\n});\n\n\nparcelRegister(\"2wUTt\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $1d7ab3dd97b18254$export$2e2bcd8739ae039; });\nfunction $1d7ab3dd97b18254$var$getStorage(type) {\n try {\n const storage = window[type];\n const x = \"__storage_test__\";\n storage.setItem(x, x);\n storage.removeItem(x);\n return storage;\n } catch (e) {\n return null;\n }\n}\nclass $1d7ab3dd97b18254$export$2e2bcd8739ae039 {\n getConfiguration() {\n return this.config;\n }\n setConfiguration(configuration) {\n this.config = {};\n return this.updateConfiguration(configuration);\n }\n updateConfiguration(configuration) {\n Object.assign(this.config, configuration);\n if (this.storage) {\n const serialized = JSON.stringify(this.config);\n this.storage.setItem(this.id, serialized);\n }\n return this;\n }\n _loadConfiguration() {\n let configuration = {};\n if (this.storage) {\n const serializedConfiguration = this.storage.getItem(this.id);\n configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};\n }\n Object.assign(this.config, configuration);\n return this;\n }\n constructor(id, defaultSettings, type = \"sessionStorage\"){\n this.storage = $1d7ab3dd97b18254$var$getStorage(type);\n this.id = id;\n this.config = {};\n Object.assign(this.config, defaultSettings);\n this._loadConfiguration();\n }\n}\n\n});\n\nparcelRegister(\"fQWC8\", function(module, exports) {\n\n$parcel$export(module.exports, \"formatTime\", function () { return $b8a92de46cb0b972$export$3203edd9e5edd663; });\n$parcel$export(module.exports, \"leftPad\", function () { return $b8a92de46cb0b972$export$cbb503201166aab7; });\n$parcel$export(module.exports, \"formatImage\", function () { return $b8a92de46cb0b972$export$9171d83acafa047c; });\nfunction $b8a92de46cb0b972$export$3203edd9e5edd663(ms) {\n let formatted;\n if (ms < 10) formatted = \"\".concat(ms.toFixed(2), \"ms\");\n else if (ms < 100) formatted = \"\".concat(ms.toFixed(1), \"ms\");\n else if (ms < 1000) formatted = \"\".concat(ms.toFixed(0), \"ms\");\n else formatted = \"\".concat((ms / 1000).toFixed(2), \"s\");\n return formatted;\n}\nfunction $b8a92de46cb0b972$export$cbb503201166aab7(string, length = 8) {\n const padLength = Math.max(length - string.length, 0);\n return \"\".concat(\" \".repeat(padLength)).concat(string);\n}\nfunction $b8a92de46cb0b972$export$390245bab32fb60f(string, length = 8) {\n const padLength = Math.max(length - string.length, 0);\n return \"\".concat(string).concat(\" \".repeat(padLength));\n}\nfunction $b8a92de46cb0b972$export$7c4d25c0c3217d8c(v, opts = {}) {\n const EPSILON = 1e-16;\n const { isInteger: isInteger = false } = opts;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) return $b8a92de46cb0b972$var$formatArrayValue(v, opts);\n if (!Number.isFinite(v)) return String(v);\n if (Math.abs(v) < EPSILON) return isInteger ? \"0\" : \"0.\";\n if (isInteger) return v.toFixed(0);\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) return v.toFixed(0);\n const string = v.toPrecision(2);\n const decimal = string.indexOf(\".0\");\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\nfunction $b8a92de46cb0b972$var$formatArrayValue(v, opts) {\n const { maxElts: maxElts = 16, size: size = 1 } = opts;\n let string = \"[\";\n for(let i = 0; i < v.length && i < maxElts; ++i){\n if (i > 0) string += \",\".concat(i % size === 0 ? \" \" : \"\");\n string += $b8a92de46cb0b972$export$7c4d25c0c3217d8c(v[i], opts);\n }\n const terminator = v.length > maxElts ? \"...\" : \"]\";\n return \"\".concat(string).concat(terminator);\n}\nfunction $b8a92de46cb0b972$export$9171d83acafa047c(image, message, scale, maxWidth = 600) {\n const imageUrl = image.src.replace(/\\(/g, \"%28\").replace(/\\)/g, \"%29\");\n if (image.width > maxWidth) scale = Math.min(scale, maxWidth / image.width);\n const width = image.width * scale;\n const height = image.height * scale;\n const style = [\n \"font-size:1px;\",\n \"padding:\".concat(Math.floor(height / 2), \"px \").concat(Math.floor(width / 2), \"px;\"),\n \"line-height:\".concat(height, \"px;\"),\n \"background:url(\".concat(imageUrl, \");\"),\n \"background-size:\".concat(width, \"px \").concat(height, \"px;\"),\n \"color:transparent;\"\n ].join(\"\");\n return [\n \"\".concat(message, \" %c+\"),\n style\n ];\n}\n\n});\n\nparcelRegister(\"4d7hv\", function(module, exports) {\n\n$parcel$export(module.exports, \"addColor\", function () { return $310e063b9305036e$export$4c4d9288a45f1fb3; });\n\nvar $6mcwc = parcelRequire(\"6mcwc\");\nconst $310e063b9305036e$export$9b982809044276a6 = {\n BLACK: 30,\n RED: 31,\n GREEN: 32,\n YELLOW: 33,\n BLUE: 34,\n MAGENTA: 35,\n CYAN: 36,\n WHITE: 37,\n BRIGHT_BLACK: 90,\n BRIGHT_RED: 91,\n BRIGHT_GREEN: 92,\n BRIGHT_YELLOW: 93,\n BRIGHT_BLUE: 94,\n BRIGHT_MAGENTA: 95,\n BRIGHT_CYAN: 96,\n BRIGHT_WHITE: 97\n};\nfunction $310e063b9305036e$var$getColor(color) {\n return typeof color === \"string\" ? $310e063b9305036e$export$9b982809044276a6[color.toUpperCase()] || $310e063b9305036e$export$9b982809044276a6.WHITE : color;\n}\nfunction $310e063b9305036e$export$4c4d9288a45f1fb3(string, color, background) {\n if (!(0, $6mcwc.isBrowser) && typeof string === \"string\") {\n if (color) {\n color = $310e063b9305036e$var$getColor(color);\n string = \"\\x1b[\".concat(color, \"m\").concat(string, \"\\x1b[39m\");\n }\n if (background) {\n color = $310e063b9305036e$var$getColor(background);\n string = \"\\x1b[\".concat(background + 10, \"m\").concat(string, \"\\x1b[49m\");\n }\n }\n return string;\n}\n\n});\n\nparcelRegister(\"3NdId\", function(module, exports) {\n\n$parcel$export(module.exports, \"autobind\", function () { return $2c3095a9f1e08e59$export$f648f36420f83db; });\nfunction $2c3095a9f1e08e59$export$f648f36420f83db(obj, predefined = [\n \"constructor\"\n]) {\n const proto = Object.getPrototypeOf(obj);\n const propNames = Object.getOwnPropertyNames(proto);\n for (const key of propNames){\n if (typeof obj[key] === \"function\") {\n if (!predefined.find((name)=>key === name)) obj[key] = obj[key].bind(obj);\n }\n }\n}\n\n});\n\nparcelRegister(\"113Uv\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $0bd8eaf37056fb34$export$2e2bcd8739ae039; });\nfunction $0bd8eaf37056fb34$export$2e2bcd8739ae039(condition, message) {\n if (!condition) throw new Error(message || \"Assertion failed\");\n}\n\n});\n\nparcelRegister(\"blCq0\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $842f74f93f1cab4e$export$2e2bcd8739ae039; });\n\nvar $6mcwc = parcelRequire(\"6mcwc\");\nvar $bSvGO = parcelRequire(\"bSvGO\");\nfunction $842f74f93f1cab4e$export$2e2bcd8739ae039() {\n let timestamp;\n if ((0, $6mcwc.isBrowser) && (0, $bSvGO.window).performance) timestamp = (0, $bSvGO.window).performance.now();\n else if ((0, $bSvGO.process).hrtime) {\n const timeParts = (0, $bSvGO.process).hrtime();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else timestamp = Date.now();\n return timestamp;\n}\n\n});\n\nparcelRegister(\"5tWFo\", function(module, exports) {\n\"use strict\";\n\n});\n\n\nparcelRegister(\"6CIYR\", function(module, exports) {\n\nvar $azAHT = parcelRequire(\"azAHT\");\n\nvar $biFr5 = parcelRequire(\"biFr5\");\n\nvar $kiwvU = parcelRequire(\"kiwvU\");\n\n});\nparcelRegister(\"azAHT\", function(module, exports) {\n\nvar $biFr5 = parcelRequire(\"biFr5\");\nclass $7b29a586296b1dc0$export$2e2bcd8739ae039 {\n get(name, type = \"count\") {\n return this._getOrCreate({\n name: name,\n type: type\n });\n }\n get size() {\n return Object.keys(this.stats).length;\n }\n reset() {\n for(const key in this.stats)this.stats[key].reset();\n return this;\n }\n forEach(fn) {\n for(const key in this.stats)fn(this.stats[key]);\n }\n getTable() {\n const table = {};\n this.forEach((stat)=>{\n table[stat.name] = {\n time: stat.time || 0,\n count: stat.count || 0,\n average: stat.getAverageTime() || 0,\n hz: stat.getHz() || 0\n };\n });\n return table;\n }\n _initializeStats(stats = []) {\n stats.forEach((stat)=>this._getOrCreate(stat));\n }\n _getOrCreate(stat) {\n if (!stat || !stat.name) return null;\n const { name: name, type: type } = stat;\n if (!this.stats[name]) {\n if (stat instanceof (0, $biFr5.default)) this.stats[name] = stat;\n else this.stats[name] = new (0, $biFr5.default)(name, type);\n }\n return this.stats[name];\n }\n constructor({ id: id, stats: stats }){\n this.id = id;\n this.stats = {};\n this._initializeStats(stats);\n Object.seal(this);\n }\n}\n\n});\nparcelRegister(\"biFr5\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $83a18470c8564281$export$2e2bcd8739ae039; });\n\nvar $kiwvU = parcelRequire(\"kiwvU\");\nclass $83a18470c8564281$export$2e2bcd8739ae039 {\n setSampleSize(samples) {\n this.sampleSize = samples;\n return this;\n }\n incrementCount() {\n this.addCount(1);\n return this;\n }\n decrementCount() {\n this.subtractCount(1);\n return this;\n }\n addCount(value) {\n this._count += value;\n this._samples++;\n this._checkSampling();\n return this;\n }\n subtractCount(value) {\n this._count -= value;\n this._samples++;\n this._checkSampling();\n return this;\n }\n addTime(time) {\n this._time += time;\n this.lastTiming = time;\n this._samples++;\n this._checkSampling();\n return this;\n }\n timeStart() {\n this._startTime = (0, $kiwvU.default)();\n this._timerPending = true;\n return this;\n }\n timeEnd() {\n if (!this._timerPending) return this;\n this.addTime((0, $kiwvU.default)() - this._startTime);\n this._timerPending = false;\n this._checkSampling();\n return this;\n }\n getSampleAverageCount() {\n return this.sampleSize > 0 ? this.lastSampleCount / this.sampleSize : 0;\n }\n getSampleAverageTime() {\n return this.sampleSize > 0 ? this.lastSampleTime / this.sampleSize : 0;\n }\n getSampleHz() {\n return this.lastSampleTime > 0 ? this.sampleSize / (this.lastSampleTime / 1000) : 0;\n }\n getAverageCount() {\n return this.samples > 0 ? this.count / this.samples : 0;\n }\n getAverageTime() {\n return this.samples > 0 ? this.time / this.samples : 0;\n }\n getHz() {\n return this.time > 0 ? this.samples / (this.time / 1000) : 0;\n }\n reset() {\n this.time = 0;\n this.count = 0;\n this.samples = 0;\n this.lastTiming = 0;\n this.lastSampleTime = 0;\n this.lastSampleCount = 0;\n this._count = 0;\n this._time = 0;\n this._samples = 0;\n this._startTime = 0;\n this._timerPending = false;\n return this;\n }\n _checkSampling() {\n if (this._samples === this.sampleSize) {\n this.lastSampleTime = this._time;\n this.lastSampleCount = this._count;\n this.count += this._count;\n this.time += this._time;\n this.samples += this._samples;\n this._time = 0;\n this._count = 0;\n this._samples = 0;\n }\n }\n constructor(name, type){\n this.name = name;\n this.type = type;\n this.sampleSize = 1;\n this.reset();\n }\n}\n\n});\nparcelRegister(\"kiwvU\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ec6eb59df0773912$export$2e2bcd8739ae039; });\n\nvar $95Bnk = parcelRequire(\"95Bnk\");\nfunction $ec6eb59df0773912$export$2e2bcd8739ae039() {\n let timestamp;\n if (typeof window !== \"undefined\" && window.performance) timestamp = window.performance.now();\n else if (typeof $95Bnk !== \"undefined\" && $95Bnk.hrtime) {\n const timeParts = $95Bnk.hrtime();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else timestamp = Date.now();\n return timestamp;\n}\n\n});\n\n\n\n\n\n\nparcelRegister(\"crAh0\", function(module, exports) {\n\n$parcel$export(module.exports, \"DEFAULT_LOADER_OPTIONS\", function () { return $90f424c47befe55f$export$9e68d151f40453e2; });\n$parcel$export(module.exports, \"REMOVED_LOADER_OPTIONS\", function () { return $90f424c47befe55f$export$1bd820ce6d516afc; });\n\nvar $iTzee = parcelRequire(\"iTzee\");\nconst $90f424c47befe55f$export$9e68d151f40453e2 = {\n fetch: null,\n mimeType: undefined,\n nothrow: false,\n log: new (0, $iTzee.ConsoleLog)(),\n CDN: \"https://unpkg.com/@loaders.gl\",\n worker: true,\n maxConcurrency: 3,\n maxMobileConcurrency: 1,\n reuseWorkers: true,\n _workerType: \"\",\n limit: 0,\n _limitMB: 0,\n batchSize: \"auto\",\n batchDebounceMs: 0,\n metadata: false,\n transforms: []\n};\nconst $90f424c47befe55f$export$1bd820ce6d516afc = {\n throws: \"nothrow\",\n dataType: \"(no longer used)\",\n uri: \"baseUri\",\n method: \"fetch.method\",\n headers: \"fetch.headers\",\n body: \"fetch.body\",\n mode: \"fetch.mode\",\n credentials: \"fetch.credentials\",\n cache: \"fetch.cache\",\n redirect: \"fetch.redirect\",\n referrer: \"fetch.referrer\",\n referrerPolicy: \"fetch.referrerPolicy\",\n integrity: \"fetch.integrity\",\n keepalive: \"fetch.keepalive\",\n signal: \"fetch.signal\"\n};\n\n});\n\n\nparcelRegister(\"dNJQA\", function(module, exports) {\n\n$parcel$export(module.exports, \"parse\", function () { return $a0c36a44ecfd763d$export$98e6a39c04603d36; });\n\nvar $4knIj = parcelRequire(\"4knIj\");\nvar $jzxj2 = parcelRequire(\"jzxj2\");\n\nvar $eZcKF = parcelRequire(\"eZcKF\");\n\nvar $ejAXt = parcelRequire(\"ejAXt\");\n\nvar $bT4Nz = parcelRequire(\"bT4Nz\");\n\nvar $8c4WA = parcelRequire(\"8c4WA\");\n\nvar $nVzgc = parcelRequire(\"nVzgc\");\n\nvar $5Tper = parcelRequire(\"5Tper\");\n\nvar $h45pu = parcelRequire(\"h45pu\");\nasync function $a0c36a44ecfd763d$export$98e6a39c04603d36(data, loaders, options, context) {\n (0, $4knIj.assert)(!context || typeof context === \"object\");\n if (loaders && !Array.isArray(loaders) && !(0, $ejAXt.isLoaderObject)(loaders)) {\n context = undefined;\n options = loaders;\n loaders = undefined;\n }\n data = await data;\n options = options || {};\n const { url: url } = (0, $5Tper.getResourceUrlAndType)(data);\n const typedLoaders = loaders;\n const candidateLoaders = (0, $nVzgc.getLoadersFromContext)(typedLoaders, context);\n const loader = await (0, $h45pu.selectLoader)(data, candidateLoaders, options);\n if (!loader) return null;\n options = (0, $bT4Nz.normalizeOptions)(options, loader, candidateLoaders, url);\n context = (0, $nVzgc.getLoaderContext)({\n url: url,\n parse: $a0c36a44ecfd763d$export$98e6a39c04603d36,\n loaders: candidateLoaders\n }, options, context);\n return await $a0c36a44ecfd763d$var$parseWithLoader(loader, data, options, context);\n}\nasync function $a0c36a44ecfd763d$var$parseWithLoader(loader, data, options, context) {\n (0, $jzxj2.validateWorkerVersion)(loader);\n data = await (0, $8c4WA.getArrayBufferOrStringFromData)(data, loader, options);\n if (loader.parseTextSync && typeof data === \"string\") {\n options.dataType = \"text\";\n return loader.parseTextSync(data, options, context, loader);\n }\n if ((0, $eZcKF.canParseWithWorker)(loader, options)) return await (0, $eZcKF.parseWithWorker)(loader, data, options, context, $a0c36a44ecfd763d$export$98e6a39c04603d36);\n if (loader.parseText && typeof data === \"string\") return await loader.parseText(data, options, context, loader);\n if (loader.parse) return await loader.parse(data, options, context, loader);\n (0, $4knIj.assert)(!loader.parseSync);\n throw new Error(`${loader.id} loader - no parser found and worker is disabled`);\n}\n\n});\nparcelRegister(\"4knIj\", function(module, exports) {\n\n$parcel$export(module.exports, \"assert\", function () { return $326b6cb7998e5361$export$a7a9523472993e97; });\nfunction $326b6cb7998e5361$export$a7a9523472993e97(condition, message) {\n if (!condition) throw new Error(message || \"loaders.gl assertion failed.\");\n}\n\n});\n\nparcelRegister(\"jzxj2\", function(module, exports) {\n\n$parcel$export(module.exports, \"validateWorkerVersion\", function () { return $e3fb1f189bd07783$export$95e2ee179a5692d5; });\n\nvar $4knIj = parcelRequire(\"4knIj\");\n\nvar $fHbuA = parcelRequire(\"fHbuA\");\nfunction $e3fb1f189bd07783$export$95e2ee179a5692d5(worker, coreVersion = (0, $fHbuA.VERSION)) {\n (0, $4knIj.assert)(worker, \"no worker provided\");\n const workerVersion = worker.version;\n if (!coreVersion || !workerVersion) return false;\n return true;\n}\nfunction $e3fb1f189bd07783$var$parseVersion(version) {\n const parts = version.split(\".\").map(Number);\n return {\n major: parts[0],\n minor: parts[1]\n };\n}\n\n});\nparcelRegister(\"fHbuA\", function(module, exports) {\n\n$parcel$export(module.exports, \"VERSION\", function () { return $b6d3c94ce2d3655e$export$a4ad2735b021c132; });\nconst $b6d3c94ce2d3655e$var$DEFAULT_VERSION = \"beta\";\nconst $b6d3c94ce2d3655e$export$a4ad2735b021c132 = \"3.1.0-alpha.4\";\n\n});\n\n\nparcelRegister(\"eZcKF\", function(module, exports) {\n\n$parcel$export(module.exports, \"canParseWithWorker\", function () { return $ae90a76eaa49bbee$export$d28453530d9dde76; });\n$parcel$export(module.exports, \"parseWithWorker\", function () { return $ae90a76eaa49bbee$export$5fc1ede2a33af3b1; });\n\nvar $hSD1w = parcelRequire(\"hSD1w\");\nvar $4shBS = parcelRequire(\"4shBS\");\nfunction $ae90a76eaa49bbee$export$d28453530d9dde76(loader, options) {\n if (!(0, $4shBS.default).isSupported()) return false;\n return loader.worker && (options === null || options === void 0 ? void 0 : options.worker);\n}\nasync function $ae90a76eaa49bbee$export$5fc1ede2a33af3b1(loader, data, options, context, parseOnMainThread) {\n const name = loader.id;\n const url = (0, $hSD1w.getWorkerURL)(loader, options);\n const workerFarm = (0, $4shBS.default).getWorkerFarm(options);\n const workerPool = workerFarm.getWorkerPool({\n name: name,\n url: url\n });\n options = JSON.parse(JSON.stringify(options));\n const job = await workerPool.startJob(\"process-on-worker\", $ae90a76eaa49bbee$var$onMessage.bind(null, parseOnMainThread));\n job.postMessage(\"process\", {\n input: data,\n options: options\n });\n const result = await job.result;\n return await result.result;\n}\nasync function $ae90a76eaa49bbee$var$onMessage(parseOnMainThread, job, type, payload) {\n switch(type){\n case \"done\":\n job.done(payload);\n break;\n case \"error\":\n job.error(payload.error);\n break;\n case \"process\":\n const { id: id, input: input, options: options } = payload;\n try {\n const result = await parseOnMainThread(input, options);\n job.postMessage(\"done\", {\n id: id,\n result: result\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : \"unknown error\";\n job.postMessage(\"error\", {\n id: id,\n error: message\n });\n }\n break;\n default:\n console.warn(`parse-with-worker unknown message ${type}`);\n }\n}\n\n});\nparcelRegister(\"hSD1w\", function(module, exports) {\n\n$parcel$export(module.exports, \"getWorkerURL\", function () { return $d045c01391b473fb$export$959914ac3383a118; });\n\nvar $4knIj = parcelRequire(\"4knIj\");\n\nconst $d045c01391b473fb$var$NPM_TAG = \"beta\";\nconst $d045c01391b473fb$var$VERSION = \"3.1.0-alpha.4\";\nfunction $d045c01391b473fb$export$72db835c4de3b02e(worker) {\n const warning = worker.version !== $d045c01391b473fb$var$VERSION ? ` (worker-utils@${$d045c01391b473fb$var$VERSION})` : \"\";\n return `${worker.name}@${worker.version}${warning}`;\n}\nfunction $d045c01391b473fb$export$959914ac3383a118(worker, options = {}) {\n const workerOptions = options[worker.id] || {};\n const workerFile = `${worker.id}-worker.js`;\n let url = workerOptions.workerUrl;\n if (options._workerType === \"test\") url = `modules/${worker.module}/dist/${workerFile}`;\n if (!url) {\n let version = worker.version;\n if (version === \"latest\") version = $d045c01391b473fb$var$NPM_TAG;\n const versionTag = version ? `@${version}` : \"\";\n url = `https://unpkg.com/@loaders.gl/${worker.module}${versionTag}/dist/${workerFile}`;\n }\n (0, $4knIj.assert)(url);\n return url;\n}\n\n});\n\nparcelRegister(\"4shBS\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $33e76fe81fecd943$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $1F5uH = parcelRequire(\"1F5uH\");\n\nvar $d3BJj = parcelRequire(\"d3BJj\");\n\nvar $fc8VP = parcelRequire(\"fc8VP\");\nconst $33e76fe81fecd943$var$DEFAULT_PROPS = {\n maxConcurrency: 3,\n maxMobileConcurrency: 1,\n onDebug: ()=>{},\n reuseWorkers: true\n};\nclass $33e76fe81fecd943$export$2e2bcd8739ae039 {\n static isSupported() {\n return (0, $fc8VP.default).isSupported();\n }\n static getWorkerFarm(props = {}) {\n $33e76fe81fecd943$export$2e2bcd8739ae039._workerFarm = $33e76fe81fecd943$export$2e2bcd8739ae039._workerFarm || new $33e76fe81fecd943$export$2e2bcd8739ae039({});\n $33e76fe81fecd943$export$2e2bcd8739ae039._workerFarm.setProps(props);\n return $33e76fe81fecd943$export$2e2bcd8739ae039._workerFarm;\n }\n destroy() {\n for (const workerPool of this.workerPools.values())workerPool.destroy();\n }\n setProps(props) {\n this.props = (0, $2QP2i._)({}, this.props, props);\n for (const workerPool of this.workerPools.values())workerPool.setProps(this._getWorkerPoolProps());\n }\n getWorkerPool(options) {\n const { name: name, source: source, url: url } = options;\n let workerPool = this.workerPools.get(name);\n if (!workerPool) {\n workerPool = new (0, $d3BJj.default)({\n name: name,\n source: source,\n url: url\n });\n workerPool.setProps(this._getWorkerPoolProps());\n this.workerPools.set(name, workerPool);\n }\n return workerPool;\n }\n _getWorkerPoolProps() {\n return {\n maxConcurrency: this.props.maxConcurrency,\n maxMobileConcurrency: this.props.maxMobileConcurrency,\n reuseWorkers: this.props.reuseWorkers,\n onDebug: this.props.onDebug\n };\n }\n constructor(props){\n (0, $1F5uH.default)(this, \"props\", void 0);\n (0, $1F5uH.default)(this, \"workerPools\", new Map());\n this.props = (0, $2QP2i._)({}, $33e76fe81fecd943$var$DEFAULT_PROPS);\n this.setProps(props);\n this.workerPools = new Map();\n }\n}\n(0, $1F5uH.default)($33e76fe81fecd943$export$2e2bcd8739ae039, \"_workerFarm\", void 0);\n\n});\nparcelRegister(\"d3BJj\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9818d28f3ed44e4d$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $1F5uH = parcelRequire(\"1F5uH\");\n\nvar $gWMc6 = parcelRequire(\"gWMc6\");\n\nvar $fc8VP = parcelRequire(\"fc8VP\");\n\nvar $gDL4a = parcelRequire(\"gDL4a\");\nclass $9818d28f3ed44e4d$export$2e2bcd8739ae039 {\n destroy() {\n this.idleQueue.forEach((worker)=>worker.destroy());\n this.isDestroyed = true;\n }\n setProps(props) {\n this.props = (0, $2QP2i._)({}, this.props, props);\n if (props.name !== undefined) this.name = props.name;\n if (props.maxConcurrency !== undefined) this.maxConcurrency = props.maxConcurrency;\n if (props.maxMobileConcurrency !== undefined) this.maxMobileConcurrency = props.maxMobileConcurrency;\n if (props.reuseWorkers !== undefined) this.reuseWorkers = props.reuseWorkers;\n if (props.onDebug !== undefined) this.onDebug = props.onDebug;\n }\n async startJob(name, onMessage = (job, type, data)=>job.done(data), onError = (job, error)=>job.error(error)) {\n const startPromise = new Promise((onStart)=>{\n this.jobQueue.push({\n name: name,\n onMessage: onMessage,\n onError: onError,\n onStart: onStart\n });\n return this;\n });\n this._startQueuedJob();\n return await startPromise;\n }\n async _startQueuedJob() {\n if (!this.jobQueue.length) return;\n const workerThread = this._getAvailableWorker();\n if (!workerThread) return;\n const queuedJob = this.jobQueue.shift();\n if (queuedJob) {\n this.onDebug({\n message: \"Starting job\",\n name: queuedJob.name,\n workerThread: workerThread,\n backlog: this.jobQueue.length\n });\n const job = new (0, $gDL4a.default)(queuedJob.name, workerThread);\n workerThread.onMessage = (data)=>queuedJob.onMessage(job, data.type, data.payload);\n workerThread.onError = (error)=>queuedJob.onError(job, error);\n queuedJob.onStart(job);\n try {\n await job.result;\n } finally{\n this.returnWorkerToQueue(workerThread);\n }\n }\n }\n returnWorkerToQueue(worker) {\n const shouldDestroyWorker = this.isDestroyed || !this.reuseWorkers || this.count > this._getMaxConcurrency();\n if (shouldDestroyWorker) {\n worker.destroy();\n this.count--;\n } else this.idleQueue.push(worker);\n if (!this.isDestroyed) this._startQueuedJob();\n }\n _getAvailableWorker() {\n if (this.idleQueue.length > 0) return this.idleQueue.shift() || null;\n if (this.count < this._getMaxConcurrency()) {\n this.count++;\n const name = `${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`;\n return new (0, $fc8VP.default)({\n name: name,\n source: this.source,\n url: this.url\n });\n }\n return null;\n }\n _getMaxConcurrency() {\n return (0, $gWMc6.isMobile) ? this.maxMobileConcurrency : this.maxConcurrency;\n }\n constructor(props){\n (0, $1F5uH.default)(this, \"name\", \"unnamed\");\n (0, $1F5uH.default)(this, \"source\", void 0);\n (0, $1F5uH.default)(this, \"url\", void 0);\n (0, $1F5uH.default)(this, \"maxConcurrency\", 1);\n (0, $1F5uH.default)(this, \"maxMobileConcurrency\", 1);\n (0, $1F5uH.default)(this, \"onDebug\", ()=>{});\n (0, $1F5uH.default)(this, \"reuseWorkers\", true);\n (0, $1F5uH.default)(this, \"props\", {});\n (0, $1F5uH.default)(this, \"jobQueue\", []);\n (0, $1F5uH.default)(this, \"idleQueue\", []);\n (0, $1F5uH.default)(this, \"count\", 0);\n (0, $1F5uH.default)(this, \"isDestroyed\", false);\n this.source = props.source;\n this.url = props.url;\n this.setProps(props);\n }\n}\n\n});\nparcelRegister(\"gWMc6\", function(module, exports) {\n\n$parcel$export(module.exports, \"isMobile\", function () { return $c56772821db9c297$export$d0a8044dce8ff2fc; });\n\nvar $95Bnk = parcelRequire(\"95Bnk\");\nconst $c56772821db9c297$var$globals = {\n self: typeof self !== \"undefined\" && self,\n window: typeof window !== \"undefined\" && window,\n global: typeof $parcel$global !== \"undefined\" && $parcel$global,\n document: typeof document !== \"undefined\" && document\n};\nconst $c56772821db9c297$export$82c2e460fb230c2a = $c56772821db9c297$var$globals.self || $c56772821db9c297$var$globals.window || $c56772821db9c297$var$globals.global || {};\nconst $c56772821db9c297$export$8291e5b88f90ce4 = $c56772821db9c297$var$globals.window || $c56772821db9c297$var$globals.self || $c56772821db9c297$var$globals.global || {};\nconst $c56772821db9c297$export$90b4d2ff6acb88af = $c56772821db9c297$var$globals.global || $c56772821db9c297$var$globals.self || $c56772821db9c297$var$globals.window || {};\nconst $c56772821db9c297$export$5a7bfc01df82fcd1 = $c56772821db9c297$var$globals.document || {};\nconst $c56772821db9c297$export$4e09c449d6c407f7 = typeof $95Bnk !== \"object\" || String($95Bnk) !== \"[object process]\" || true;\nconst $c56772821db9c297$export$3c901a5f01941a06 = typeof importScripts === \"function\";\nconst $c56772821db9c297$export$d0a8044dce8ff2fc = typeof window !== \"undefined\" && typeof window.orientation !== \"undefined\";\nconst $c56772821db9c297$var$matches = typeof $95Bnk !== \"undefined\" && $95Bnk.version && /v([0-9]*)/.exec($95Bnk.version);\nconst $c56772821db9c297$export$168db21d314844a8 = $c56772821db9c297$var$matches && parseFloat($c56772821db9c297$var$matches[1]) || 0;\n\n});\n\nparcelRegister(\"fc8VP\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b0fee7acd17b8ba1$export$2e2bcd8739ae039; });\n\nvar $1F5uH = parcelRequire(\"1F5uH\");\n\nvar $4knIj = parcelRequire(\"4knIj\");\n\nvar $fNd67 = parcelRequire(\"fNd67\");\n\nvar $eHZ5m = parcelRequire(\"eHZ5m\");\nconst $b0fee7acd17b8ba1$var$NOOP = ()=>{};\nclass $b0fee7acd17b8ba1$export$2e2bcd8739ae039 {\n static isSupported() {\n return typeof Worker !== \"undefined\";\n }\n destroy() {\n this.onMessage = $b0fee7acd17b8ba1$var$NOOP;\n this.onError = $b0fee7acd17b8ba1$var$NOOP;\n this.worker.terminate();\n this.terminated = true;\n }\n get isRunning() {\n return Boolean(this.onMessage);\n }\n postMessage(data, transferList) {\n transferList = transferList || (0, $eHZ5m.getTransferList)(data);\n this.worker.postMessage(data, transferList);\n }\n _getErrorFromErrorEvent(event) {\n let message = \"Failed to load \";\n message += `worker ${this.name} from ${this.url}. `;\n if (event.message) message += `${event.message} in `;\n if (event.lineno) message += `:${event.lineno}:${event.colno}`;\n return new Error(message);\n }\n _createBrowserWorker() {\n this._loadableURL = (0, $fNd67.getLoadableWorkerURL)({\n source: this.source,\n url: this.url\n });\n const worker = new Worker(this._loadableURL, {\n name: this.name\n });\n worker.onmessage = (event)=>{\n if (!event.data) this.onError(new Error(\"No data received\"));\n else this.onMessage(event.data);\n };\n worker.onerror = (error)=>{\n this.onError(this._getErrorFromErrorEvent(error));\n this.terminated = true;\n };\n worker.onmessageerror = (event)=>console.error(event);\n return worker;\n }\n constructor(props){\n (0, $1F5uH.default)(this, \"name\", void 0);\n (0, $1F5uH.default)(this, \"source\", void 0);\n (0, $1F5uH.default)(this, \"url\", void 0);\n (0, $1F5uH.default)(this, \"terminated\", false);\n (0, $1F5uH.default)(this, \"worker\", void 0);\n (0, $1F5uH.default)(this, \"onMessage\", void 0);\n (0, $1F5uH.default)(this, \"onError\", void 0);\n (0, $1F5uH.default)(this, \"_loadableURL\", \"\");\n const { name: name, source: source, url: url } = props;\n (0, $4knIj.assert)(source || url);\n this.name = name;\n this.source = source;\n this.url = url;\n this.onMessage = $b0fee7acd17b8ba1$var$NOOP;\n this.onError = (error)=>console.log(error);\n this.worker = this._createBrowserWorker();\n }\n}\n\n});\nparcelRegister(\"fNd67\", function(module, exports) {\n\n$parcel$export(module.exports, \"getLoadableWorkerURL\", function () { return $b7f59791a28ec5c9$export$fb15ef3d6a383f22; });\n\nvar $4knIj = parcelRequire(\"4knIj\");\nconst $b7f59791a28ec5c9$var$workerURLCache = new Map();\nfunction $b7f59791a28ec5c9$export$fb15ef3d6a383f22(props) {\n (0, $4knIj.assert)(props.source && !props.url || !props.source && props.url);\n let workerURL = $b7f59791a28ec5c9$var$workerURLCache.get(props.source || props.url);\n if (!workerURL) {\n if (props.url) {\n workerURL = $b7f59791a28ec5c9$var$getLoadableWorkerURLFromURL(props.url);\n $b7f59791a28ec5c9$var$workerURLCache.set(props.url, workerURL);\n }\n if (props.source) {\n workerURL = $b7f59791a28ec5c9$var$getLoadableWorkerURLFromSource(props.source);\n $b7f59791a28ec5c9$var$workerURLCache.set(props.source, workerURL);\n }\n }\n (0, $4knIj.assert)(workerURL);\n return workerURL;\n}\nfunction $b7f59791a28ec5c9$var$getLoadableWorkerURLFromURL(url) {\n if (!url.startsWith(\"http\")) return url;\n const workerSource = $b7f59791a28ec5c9$var$buildScriptSource(url);\n return $b7f59791a28ec5c9$var$getLoadableWorkerURLFromSource(workerSource);\n}\nfunction $b7f59791a28ec5c9$var$getLoadableWorkerURLFromSource(workerSource) {\n const blob = new Blob([\n workerSource\n ], {\n type: \"application/javascript\"\n });\n return URL.createObjectURL(blob);\n}\nfunction $b7f59791a28ec5c9$var$buildScriptSource(workerUrl) {\n return `\\\ntry {\n importScripts('${workerUrl}');\n} catch (error) {\n console.error(error);\n throw error;\n}`;\n}\n\n});\n\nparcelRegister(\"eHZ5m\", function(module, exports) {\n\n$parcel$export(module.exports, \"getTransferList\", function () { return $ab54772494f18c38$export$6464150b0a96b310; });\nfunction $ab54772494f18c38$export$6464150b0a96b310(object, recursive = true, transfers) {\n const transfersSet = transfers || new Set();\n if (!object) ;\n else if ($ab54772494f18c38$var$isTransferable(object)) transfersSet.add(object);\n else if ($ab54772494f18c38$var$isTransferable(object.buffer)) transfersSet.add(object.buffer);\n else if (ArrayBuffer.isView(object)) ;\n else if (recursive && typeof object === \"object\") for(const key in object)$ab54772494f18c38$export$6464150b0a96b310(object[key], recursive, transfersSet);\n return transfers === undefined ? Array.from(transfersSet) : [];\n}\nfunction $ab54772494f18c38$var$isTransferable(object) {\n if (!object) return false;\n if (object instanceof ArrayBuffer) return true;\n if (typeof MessagePort !== \"undefined\" && object instanceof MessagePort) return true;\n if (typeof ImageBitmap !== \"undefined\" && object instanceof ImageBitmap) return true;\n if (typeof OffscreenCanvas !== \"undefined\" && object instanceof OffscreenCanvas) return true;\n return false;\n}\n\n});\n\n\nparcelRegister(\"gDL4a\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c1d4cc3c34e56460$export$2e2bcd8739ae039; });\n\nvar $1F5uH = parcelRequire(\"1F5uH\");\n\nvar $4knIj = parcelRequire(\"4knIj\");\nclass $c1d4cc3c34e56460$export$2e2bcd8739ae039 {\n postMessage(type, payload) {\n this.workerThread.postMessage({\n source: \"loaders.gl\",\n type: type,\n payload: payload\n });\n }\n done(value) {\n (0, $4knIj.assert)(this.isRunning);\n this.isRunning = false;\n this._resolve(value);\n }\n error(error) {\n (0, $4knIj.assert)(this.isRunning);\n this.isRunning = false;\n this._reject(error);\n }\n constructor(jobName, workerThread){\n (0, $1F5uH.default)(this, \"name\", void 0);\n (0, $1F5uH.default)(this, \"workerThread\", void 0);\n (0, $1F5uH.default)(this, \"isRunning\", void 0);\n (0, $1F5uH.default)(this, \"result\", void 0);\n (0, $1F5uH.default)(this, \"_resolve\", void 0);\n (0, $1F5uH.default)(this, \"_reject\", void 0);\n this.name = jobName;\n this.workerThread = workerThread;\n this.isRunning = true;\n this._resolve = ()=>{};\n this._reject = ()=>{};\n this.result = new Promise((resolve, reject)=>{\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n}\n\n});\n\n\n\n\nparcelRegister(\"8c4WA\", function(module, exports) {\n\n$parcel$export(module.exports, \"getArrayBufferOrStringFromData\", function () { return $5f734777b7e3b2b2$export$8f911a3af008501e; });\n\nvar $4cPcI = parcelRequire(\"4cPcI\");\n\nvar $e1wxv = parcelRequire(\"e1wxv\");\n\nvar $gG5Rn = parcelRequire(\"gG5Rn\");\n\nvar $dadEq = parcelRequire(\"dadEq\");\nconst $5f734777b7e3b2b2$var$ERR_DATA = \"Cannot convert supplied data type\";\nfunction $5f734777b7e3b2b2$export$1bdaa95e029beec8(data, loader, options) {\n if (loader.text && typeof data === \"string\") return data;\n if ((0, $e1wxv.isBuffer)(data)) data = data.buffer;\n if (data instanceof ArrayBuffer) {\n const arrayBuffer = data;\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder(\"utf8\");\n return textDecoder.decode(arrayBuffer);\n }\n return arrayBuffer;\n }\n if (ArrayBuffer.isView(data)) {\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder(\"utf8\");\n return textDecoder.decode(data);\n }\n let arrayBuffer = data.buffer;\n const byteLength = data.byteLength || data.length;\n if (data.byteOffset !== 0 || byteLength !== arrayBuffer.byteLength) arrayBuffer = arrayBuffer.slice(data.byteOffset, data.byteOffset + byteLength);\n return arrayBuffer;\n }\n throw new Error($5f734777b7e3b2b2$var$ERR_DATA);\n}\nasync function $5f734777b7e3b2b2$export$8f911a3af008501e(data, loader, options) {\n const isArrayBuffer = data instanceof ArrayBuffer || ArrayBuffer.isView(data);\n if (typeof data === \"string\" || isArrayBuffer) return $5f734777b7e3b2b2$export$1bdaa95e029beec8(data, loader, options);\n if ((0, $e1wxv.isBlob)(data)) data = await (0, $dadEq.makeResponse)(data);\n if ((0, $e1wxv.isResponse)(data)) {\n const response = data;\n await (0, $dadEq.checkResponse)(response);\n return loader.binary ? await response.arrayBuffer() : await response.text();\n }\n if ((0, $e1wxv.isReadableStream)(data)) data = (0, $gG5Rn.makeIterator)(data, options);\n if ((0, $e1wxv.isIterable)(data) || (0, $e1wxv.isAsyncIterable)(data)) return (0, $4cPcI.concatenateArrayBuffersAsync)(data);\n throw new Error($5f734777b7e3b2b2$var$ERR_DATA);\n}\nasync function $5f734777b7e3b2b2$export$439b9c71d78e9e91(data, options) {\n if ((0, $e1wxv.isIterator)(data)) return data;\n if ((0, $e1wxv.isResponse)(data)) {\n const response = data;\n await (0, $dadEq.checkResponse)(response);\n const body = await response.body;\n return (0, $gG5Rn.makeIterator)(body, options);\n }\n if ((0, $e1wxv.isBlob)(data) || (0, $e1wxv.isReadableStream)(data)) return (0, $gG5Rn.makeIterator)(data, options);\n if ((0, $e1wxv.isAsyncIterable)(data)) return data[Symbol.asyncIterator]();\n return $5f734777b7e3b2b2$var$getIterableFromData(data);\n}\nasync function $5f734777b7e3b2b2$export$fcaec59c9cf8d502(data) {\n if ((0, $e1wxv.isReadableStream)(data)) return data;\n if ((0, $e1wxv.isResponse)(data)) return data.body;\n const response = await (0, $dadEq.makeResponse)(data);\n return response.body;\n}\nfunction $5f734777b7e3b2b2$var$getIterableFromData(data) {\n if (ArrayBuffer.isView(data)) return function* oneChunk() {\n yield data.buffer;\n }();\n if (data instanceof ArrayBuffer) return function* oneChunk() {\n yield data;\n }();\n if ((0, $e1wxv.isIterator)(data)) return data;\n if ((0, $e1wxv.isIterable)(data)) return data[Symbol.iterator]();\n throw new Error($5f734777b7e3b2b2$var$ERR_DATA);\n}\n\n});\nparcelRegister(\"4cPcI\", function(module, exports) {\n\n$parcel$export(module.exports, \"concatenateArrayBuffersAsync\", function () { return $310000745b13889a$export$b56e0390cdc1b1ca; });\n\nvar $fG4p0 = parcelRequire(\"fG4p0\");\nasync function $310000745b13889a$export$4b80e395e36b5a56(iterator, visitor) {\n while(true){\n const { done: done, value: value } = await iterator.next();\n if (done) {\n iterator.return();\n return;\n }\n const cancel = visitor(value);\n if (cancel) return;\n }\n}\nasync function $310000745b13889a$export$b56e0390cdc1b1ca(asyncIterator) {\n const arrayBuffers = [];\n for await (const chunk of asyncIterator)arrayBuffers.push(chunk);\n return (0, $fG4p0.concatenateArrayBuffers)(...arrayBuffers);\n}\nasync function $310000745b13889a$export$8a08e0b4be2e1c13(asyncIterator) {\n const strings = [];\n for await (const chunk of asyncIterator)strings.push(chunk);\n return strings.join(\"\");\n}\n\n});\nparcelRegister(\"fG4p0\", function(module, exports) {\n\n$parcel$export(module.exports, \"toArrayBuffer\", function () { return $b69e317688ecdfb1$export$8b22b05f429b130c; });\n$parcel$export(module.exports, \"compareArrayBuffers\", function () { return $b69e317688ecdfb1$export$a21c1249ab709443; });\n$parcel$export(module.exports, \"concatenateArrayBuffers\", function () { return $b69e317688ecdfb1$export$9a3e9c78eb778da8; });\n\nvar $aFb0J = parcelRequire(\"aFb0J\");\nfunction $b69e317688ecdfb1$export$8b22b05f429b130c(data) {\n if ((0, $aFb0J.isBuffer)(data)) return (0, $aFb0J.bufferToArrayBuffer)(data);\n if (data instanceof ArrayBuffer) return data;\n if (ArrayBuffer.isView(data)) {\n if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) return data.buffer;\n return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);\n }\n if (typeof data === \"string\") {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n if (data && typeof data === \"object\" && data._toArrayBuffer) return data._toArrayBuffer();\n throw new Error(\"toArrayBuffer\");\n}\nfunction $b69e317688ecdfb1$export$a21c1249ab709443(arrayBuffer1, arrayBuffer2, byteLength) {\n byteLength = byteLength || arrayBuffer1.byteLength;\n if (arrayBuffer1.byteLength < byteLength || arrayBuffer2.byteLength < byteLength) return false;\n const array1 = new Uint8Array(arrayBuffer1);\n const array2 = new Uint8Array(arrayBuffer2);\n for(let i = 0; i < array1.length; ++i){\n if (array1[i] !== array2[i]) return false;\n }\n return true;\n}\nfunction $b69e317688ecdfb1$export$9a3e9c78eb778da8(...sources) {\n const sourceArrays = sources.map((source2)=>source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2);\n const byteLength = sourceArrays.reduce((length, typedArray)=>length + typedArray.byteLength, 0);\n const result = new Uint8Array(byteLength);\n let offset = 0;\n for (const sourceArray of sourceArrays){\n result.set(sourceArray, offset);\n offset += sourceArray.byteLength;\n }\n return result.buffer;\n}\nfunction $b69e317688ecdfb1$export$b9f790e5e2031778(...typedArrays) {\n const arrays = typedArrays;\n const TypedArrayConstructor = arrays && arrays.length > 1 && arrays[0].constructor || null;\n if (!TypedArrayConstructor) throw new Error('\"concatenateTypedArrays\" - incorrect quantity of arguments or arguments have incompatible data types');\n const sumLength = arrays.reduce((acc, value)=>acc + value.length, 0);\n const result = new TypedArrayConstructor(sumLength);\n let offset = 0;\n for (const array of arrays){\n result.set(array, offset);\n offset += array.length;\n }\n return result;\n}\nfunction $b69e317688ecdfb1$export$1c6babfc8b593386(arrayBuffer, byteOffset, byteLength) {\n const subArray = byteLength !== undefined ? new Uint8Array(arrayBuffer).subarray(byteOffset, byteOffset + byteLength) : new Uint8Array(arrayBuffer).subarray(byteOffset);\n const arrayCopy = new Uint8Array(subArray);\n return arrayCopy.buffer;\n}\n\n});\nparcelRegister(\"aFb0J\", function(module, exports) {\n\n$parcel$export(module.exports, \"isBuffer\", function () { return $0200e019cd059283$export$a7884ebc965f8f54; });\n$parcel$export(module.exports, \"bufferToArrayBuffer\", function () { return $0200e019cd059283$export$1a478f4dd664a01f; });\n\nvar $5tWFo = parcelRequire(\"5tWFo\");\nfunction $0200e019cd059283$export$a7884ebc965f8f54(value) {\n return value && typeof value === \"object\" && value.isBuffer;\n}\nfunction $0200e019cd059283$export$fc336dbfaf62f18f(data) {\n return $5tWFo.toBuffer ? $5tWFo.toBuffer(data) : data;\n}\nfunction $0200e019cd059283$export$1a478f4dd664a01f(buffer) {\n if ($0200e019cd059283$export$a7884ebc965f8f54(buffer)) {\n const typedArray = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.length);\n return typedArray.slice().buffer;\n }\n return buffer;\n}\n\n});\n\n\n\nparcelRegister(\"gG5Rn\", function(module, exports) {\n\n$parcel$export(module.exports, \"makeIterator\", function () { return $c2451d3bf8665ce8$export$81c40ebfe660d3ca; });\n\nvar $4S9mD = parcelRequire(\"4S9mD\");\n\nvar $lJdwb = parcelRequire(\"lJdwb\");\n\nvar $5TZKQ = parcelRequire(\"5TZKQ\");\n\nvar $34TQj = parcelRequire(\"34TQj\");\n\nvar $e1wxv = parcelRequire(\"e1wxv\");\nfunction $c2451d3bf8665ce8$export$81c40ebfe660d3ca(data, options) {\n if (typeof data === \"string\") return (0, $4S9mD.makeStringIterator)(data, options);\n if (data instanceof ArrayBuffer) return (0, $lJdwb.makeArrayBufferIterator)(data, options);\n if ((0, $e1wxv.isBlob)(data)) return (0, $5TZKQ.makeBlobIterator)(data, options);\n if ((0, $e1wxv.isReadableStream)(data)) return (0, $34TQj.makeStreamIterator)(data, options);\n if ((0, $e1wxv.isResponse)(data)) {\n const response = data;\n return (0, $34TQj.makeStreamIterator)(response.body, options);\n }\n throw new Error(\"makeIterator\");\n}\n\n});\nparcelRegister(\"4S9mD\", function(module, exports) {\n\n$parcel$export(module.exports, \"makeStringIterator\", function () { return $38c37819c1c2be14$export$c51500126ec60dd4; });\nconst $38c37819c1c2be14$var$DEFAULT_CHUNK_SIZE = 262144;\nfunction* $38c37819c1c2be14$export$c51500126ec60dd4(string, options) {\n const chunkSize = (options === null || options === void 0 ? void 0 : options.chunkSize) || $38c37819c1c2be14$var$DEFAULT_CHUNK_SIZE;\n let offset = 0;\n const textEncoder = new TextEncoder();\n while(offset < string.length){\n const chunkLength = Math.min(string.length - offset, chunkSize);\n const chunk = string.slice(offset, offset + chunkLength);\n offset += chunkLength;\n yield textEncoder.encode(chunk);\n }\n}\n\n});\n\nparcelRegister(\"lJdwb\", function(module, exports) {\n\n$parcel$export(module.exports, \"makeArrayBufferIterator\", function () { return $fd18495c415b4159$export$257e4501e13446d3; });\nconst $fd18495c415b4159$var$DEFAULT_CHUNK_SIZE = 262144;\nfunction* $fd18495c415b4159$export$257e4501e13446d3(arrayBuffer, options = {}) {\n const { chunkSize: chunkSize = $fd18495c415b4159$var$DEFAULT_CHUNK_SIZE } = options;\n let byteOffset = 0;\n while(byteOffset < arrayBuffer.byteLength){\n const chunkByteLength = Math.min(arrayBuffer.byteLength - byteOffset, chunkSize);\n const chunk = new ArrayBuffer(chunkByteLength);\n const sourceArray = new Uint8Array(arrayBuffer, byteOffset, chunkByteLength);\n const chunkArray = new Uint8Array(chunk);\n chunkArray.set(sourceArray);\n byteOffset += chunkByteLength;\n yield chunk;\n }\n}\n\n});\n\nparcelRegister(\"5TZKQ\", function(module, exports) {\n\n$parcel$export(module.exports, \"makeBlobIterator\", function () { return $44c1fdfd3b98fdd3$export$97cfd032a0f445d2; });\nconst $44c1fdfd3b98fdd3$var$DEFAULT_CHUNK_SIZE = 1048576;\nasync function* $44c1fdfd3b98fdd3$export$97cfd032a0f445d2(blob, options) {\n const chunkSize = (options === null || options === void 0 ? void 0 : options.chunkSize) || $44c1fdfd3b98fdd3$var$DEFAULT_CHUNK_SIZE;\n let offset = 0;\n while(offset < blob.size){\n const end = offset + chunkSize;\n const chunk = await blob.slice(offset, end).arrayBuffer();\n offset = end;\n yield chunk;\n }\n}\n\n});\n\nparcelRegister(\"34TQj\", function(module, exports) {\n\n$parcel$export(module.exports, \"makeStreamIterator\", function () { return $23dd1009e1ce72a2$export$80460602c027534f; });\n\nvar $8Iogt = parcelRequire(\"8Iogt\");\nvar $fG4p0 = parcelRequire(\"fG4p0\");\nfunction $23dd1009e1ce72a2$export$80460602c027534f(stream, options) {\n return (0, $8Iogt.isBrowser) ? $23dd1009e1ce72a2$var$makeBrowserStreamIterator(stream, options) : $23dd1009e1ce72a2$var$makeNodeStreamIterator(stream, options);\n}\nasync function* $23dd1009e1ce72a2$var$makeBrowserStreamIterator(stream, options) {\n const reader = stream.getReader();\n let nextBatchPromise;\n try {\n while(true){\n const currentBatchPromise = nextBatchPromise || reader.read();\n if (options !== null && options !== void 0 && options._streamReadAhead) nextBatchPromise = reader.read();\n const { done: done, value: value } = await currentBatchPromise;\n if (done) return;\n yield (0, $fG4p0.toArrayBuffer)(value);\n }\n } catch (error) {\n reader.releaseLock();\n }\n}\nasync function* $23dd1009e1ce72a2$var$makeNodeStreamIterator(stream, options) {\n for await (const chunk of stream)yield (0, $fG4p0.toArrayBuffer)(chunk);\n}\n\n});\nparcelRegister(\"8Iogt\", function(module, exports) {\n\n$parcel$export(module.exports, \"isBrowser\", function () { return $65854146007758e4$export$4e09c449d6c407f7; });\n\nvar $95Bnk = parcelRequire(\"95Bnk\");\nconst $65854146007758e4$var$globals = {\n self: typeof self !== \"undefined\" && self,\n window: typeof window !== \"undefined\" && window,\n global: typeof $parcel$global !== \"undefined\" && $parcel$global,\n document: typeof document !== \"undefined\" && document\n};\nconst $65854146007758e4$export$82c2e460fb230c2a = $65854146007758e4$var$globals.self || $65854146007758e4$var$globals.window || $65854146007758e4$var$globals.global || {};\nconst $65854146007758e4$export$8291e5b88f90ce4 = $65854146007758e4$var$globals.window || $65854146007758e4$var$globals.self || $65854146007758e4$var$globals.global || {};\nconst $65854146007758e4$export$90b4d2ff6acb88af = $65854146007758e4$var$globals.global || $65854146007758e4$var$globals.self || $65854146007758e4$var$globals.window || {};\nconst $65854146007758e4$export$5a7bfc01df82fcd1 = $65854146007758e4$var$globals.document || {};\nconst $65854146007758e4$export$4e09c449d6c407f7 = Boolean(typeof $95Bnk !== \"object\" || String($95Bnk) !== \"[object process]\" || true);\nconst $65854146007758e4$export$3c901a5f01941a06 = typeof importScripts === \"function\";\nconst $65854146007758e4$var$matches = typeof $95Bnk !== \"undefined\" && $95Bnk.version && /v([0-9]*)/.exec($95Bnk.version);\nconst $65854146007758e4$export$168db21d314844a8 = $65854146007758e4$var$matches && parseFloat($65854146007758e4$var$matches[1]) || 0;\n\n});\n\n\n\n\nparcelRegister(\"nVzgc\", function(module, exports) {\n\n$parcel$export(module.exports, \"getLoaderContext\", function () { return $047ecdd8a4c5ec07$export$c9fdcdb31d4bf289; });\n$parcel$export(module.exports, \"getLoadersFromContext\", function () { return $047ecdd8a4c5ec07$export$f7bef68ca326d506; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $bT4Nz = parcelRequire(\"bT4Nz\");\nfunction $047ecdd8a4c5ec07$export$c9fdcdb31d4bf289(context, options, previousContext = null) {\n if (previousContext) return previousContext;\n const resolvedContext = (0, $2QP2i._)({\n fetch: (0, $bT4Nz.getFetchFunction)(options, context)\n }, context);\n if (!Array.isArray(resolvedContext.loaders)) resolvedContext.loaders = null;\n return resolvedContext;\n}\nfunction $047ecdd8a4c5ec07$export$f7bef68ca326d506(loaders, context) {\n if (!context && loaders && !Array.isArray(loaders)) return loaders;\n let candidateLoaders;\n if (loaders) candidateLoaders = Array.isArray(loaders) ? loaders : [\n loaders\n ];\n if (context && context.loaders) {\n const contextLoaders = Array.isArray(context.loaders) ? context.loaders : [\n context.loaders\n ];\n candidateLoaders = candidateLoaders ? [\n ...candidateLoaders,\n ...contextLoaders\n ] : contextLoaders;\n }\n return candidateLoaders && candidateLoaders.length ? candidateLoaders : null;\n}\n\n});\n\nparcelRegister(\"h45pu\", function(module, exports) {\n\n$parcel$export(module.exports, \"selectLoader\", function () { return $c6c701b825ea89d0$export$c633f22f376a9a73; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $fG4p0 = parcelRequire(\"fG4p0\");\nvar $7peSl = parcelRequire(\"7peSl\");\n\nvar $ejAXt = parcelRequire(\"ejAXt\");\n\nvar $5Tper = parcelRequire(\"5Tper\");\n\nvar $aZt53 = parcelRequire(\"aZt53\");\n\nvar $e1wxv = parcelRequire(\"e1wxv\");\nconst $c6c701b825ea89d0$var$EXT_PATTERN = /\\.([^.]+)$/;\nasync function $c6c701b825ea89d0$export$c633f22f376a9a73(data, loaders = [], options, context) {\n if (!$c6c701b825ea89d0$var$validHTTPResponse(data)) return null;\n let loader = $c6c701b825ea89d0$export$27c49426aa5beb44(data, loaders, (0, $edHbI._)((0, $2QP2i._)({}, options), {\n nothrow: true\n }), context);\n if (loader) return loader;\n if ((0, $e1wxv.isBlob)(data)) {\n data = await data.slice(0, 10).arrayBuffer();\n loader = $c6c701b825ea89d0$export$27c49426aa5beb44(data, loaders, options, context);\n }\n if (!loader && !(options !== null && options !== void 0 && options.nothrow)) throw new Error($c6c701b825ea89d0$var$getNoValidLoaderMessage(data));\n return loader;\n}\nfunction $c6c701b825ea89d0$export$27c49426aa5beb44(data, loaders = [], options, context) {\n if (!$c6c701b825ea89d0$var$validHTTPResponse(data)) return null;\n if (loaders && !Array.isArray(loaders)) return (0, $ejAXt.normalizeLoader)(loaders);\n let candidateLoaders = [];\n if (loaders) candidateLoaders = candidateLoaders.concat(loaders);\n if (!(options !== null && options !== void 0 && options.ignoreRegisteredLoaders)) candidateLoaders.push(...(0, $aZt53.getRegisteredLoaders)());\n $c6c701b825ea89d0$var$normalizeLoaders(candidateLoaders);\n const loader = $c6c701b825ea89d0$var$selectLoaderInternal(data, candidateLoaders, options, context);\n if (!loader && !(options !== null && options !== void 0 && options.nothrow)) throw new Error($c6c701b825ea89d0$var$getNoValidLoaderMessage(data));\n return loader;\n}\nfunction $c6c701b825ea89d0$var$selectLoaderInternal(data, loaders, options, context) {\n const { url: url, type: type } = (0, $5Tper.getResourceUrlAndType)(data);\n const testUrl = url || (context === null || context === void 0 ? void 0 : context.url);\n let loader = null;\n if (options !== null && options !== void 0 && options.mimeType) loader = $c6c701b825ea89d0$var$findLoaderByMIMEType(loaders, options === null || options === void 0 ? void 0 : options.mimeType);\n loader = loader || $c6c701b825ea89d0$var$findLoaderByUrl(loaders, testUrl);\n loader = loader || $c6c701b825ea89d0$var$findLoaderByMIMEType(loaders, type);\n loader = loader || $c6c701b825ea89d0$var$findLoaderByInitialBytes(loaders, data);\n loader = loader || $c6c701b825ea89d0$var$findLoaderByMIMEType(loaders, options === null || options === void 0 ? void 0 : options.fallbackMimeType);\n return loader;\n}\nfunction $c6c701b825ea89d0$var$validHTTPResponse(data) {\n if (data instanceof Response) {\n if (data.status === 204) return false;\n }\n return true;\n}\nfunction $c6c701b825ea89d0$var$getNoValidLoaderMessage(data) {\n const { url: url, type: type } = (0, $5Tper.getResourceUrlAndType)(data);\n let message = \"No valid loader found (\";\n message += url ? `${(0, $7peSl).filename(url)}, ` : \"no url provided, \";\n message += `MIME type: ${type ? `\"${type}\"` : \"not provided\"}, `;\n const firstCharacters = data ? $c6c701b825ea89d0$var$getFirstCharacters(data) : \"\";\n message += firstCharacters ? ` first bytes: \"${firstCharacters}\"` : \"first bytes: not available\";\n message += \")\";\n return message;\n}\nfunction $c6c701b825ea89d0$var$normalizeLoaders(loaders) {\n for (const loader of loaders)(0, $ejAXt.normalizeLoader)(loader);\n}\nfunction $c6c701b825ea89d0$var$findLoaderByUrl(loaders, url) {\n const match = url && $c6c701b825ea89d0$var$EXT_PATTERN.exec(url);\n const extension = match && match[1];\n return extension ? $c6c701b825ea89d0$var$findLoaderByExtension(loaders, extension) : null;\n}\nfunction $c6c701b825ea89d0$var$findLoaderByExtension(loaders, extension) {\n extension = extension.toLowerCase();\n for (const loader of loaders)for (const loaderExtension of loader.extensions){\n if (loaderExtension.toLowerCase() === extension) return loader;\n }\n return null;\n}\nfunction $c6c701b825ea89d0$var$findLoaderByMIMEType(loaders, mimeType) {\n for (const loader of loaders){\n if (loader.mimeTypes && loader.mimeTypes.includes(mimeType)) return loader;\n if (mimeType === `application/x.${loader.id}`) return loader;\n }\n return null;\n}\nfunction $c6c701b825ea89d0$var$findLoaderByInitialBytes(loaders, data) {\n if (!data) return null;\n for (const loader of loaders){\n if (typeof data === \"string\") {\n if ($c6c701b825ea89d0$var$testDataAgainstText(data, loader)) return loader;\n } else if (ArrayBuffer.isView(data)) {\n if ($c6c701b825ea89d0$var$testDataAgainstBinary(data.buffer, data.byteOffset, loader)) return loader;\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n if ($c6c701b825ea89d0$var$testDataAgainstBinary(data, byteOffset, loader)) return loader;\n }\n }\n return null;\n}\nfunction $c6c701b825ea89d0$var$testDataAgainstText(data, loader) {\n if (loader.testText) return loader.testText(data);\n const tests = Array.isArray(loader.tests) ? loader.tests : [\n loader.tests\n ];\n return tests.some((test)=>data.startsWith(test));\n}\nfunction $c6c701b825ea89d0$var$testDataAgainstBinary(data, byteOffset, loader) {\n const tests = Array.isArray(loader.tests) ? loader.tests : [\n loader.tests\n ];\n return tests.some((test)=>$c6c701b825ea89d0$var$testBinary(data, byteOffset, loader, test));\n}\nfunction $c6c701b825ea89d0$var$testBinary(data, byteOffset, loader, test) {\n if (test instanceof ArrayBuffer) return (0, $fG4p0.compareArrayBuffers)(test, data, test.byteLength);\n switch(typeof test){\n case \"function\":\n return test(data, loader);\n case \"string\":\n const magic = $c6c701b825ea89d0$var$getMagicString(data, byteOffset, test.length);\n return test === magic;\n default:\n return false;\n }\n}\nfunction $c6c701b825ea89d0$var$getFirstCharacters(data, length = 5) {\n if (typeof data === \"string\") return data.slice(0, length);\n else if (ArrayBuffer.isView(data)) return $c6c701b825ea89d0$var$getMagicString(data.buffer, data.byteOffset, length);\n else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n return $c6c701b825ea89d0$var$getMagicString(data, byteOffset, length);\n }\n return \"\";\n}\nfunction $c6c701b825ea89d0$var$getMagicString(arrayBuffer, byteOffset, length) {\n if (arrayBuffer.byteLength < byteOffset + length) return \"\";\n const dataView = new DataView(arrayBuffer);\n let magic = \"\";\n for(let i = 0; i < length; i++)magic += String.fromCharCode(dataView.getUint8(byteOffset + i));\n return magic;\n}\n\n});\nparcelRegister(\"7peSl\", function(module, exports) {\n\n$parcel$export(module.exports, \"filename\", function () { return $56466828b6733385$export$f9107b66120eb036; });\n$parcel$export(module.exports, \"dirname\", function () { return $56466828b6733385$export$7f7b8152cc673abe; });\n$parcel$export(module.exports, \"join\", function () { return $56466828b6733385$export$f7e2c8231c57a8bd; });\nfunction $56466828b6733385$export$f9107b66120eb036(url) {\n const slashIndex = url && url.lastIndexOf(\"/\");\n return slashIndex >= 0 ? url.substr(slashIndex + 1) : \"\";\n}\nfunction $56466828b6733385$export$7f7b8152cc673abe(url) {\n const slashIndex = url && url.lastIndexOf(\"/\");\n return slashIndex >= 0 ? url.substr(0, slashIndex) : \"\";\n}\nfunction $56466828b6733385$export$f7e2c8231c57a8bd(...parts) {\n const separator = \"/\";\n parts = parts.map((part, index)=>{\n if (index) part = part.replace(new RegExp(`^${separator}`), \"\");\n if (index !== parts.length - 1) part = part.replace(new RegExp(`${separator}$`), \"\");\n return part;\n });\n return parts.join(separator);\n}\n\n});\n\nparcelRegister(\"aZt53\", function(module, exports) {\n\n$parcel$export(module.exports, \"registerLoaders\", function () { return $02109d8f267461b1$export$74069a1a10fa28e5; });\n$parcel$export(module.exports, \"getRegisteredLoaders\", function () { return $02109d8f267461b1$export$8fa02447f82aef84; });\n\nvar $ejAXt = parcelRequire(\"ejAXt\");\n\nvar $bT4Nz = parcelRequire(\"bT4Nz\");\nconst $02109d8f267461b1$var$getGlobalLoaderRegistry = ()=>{\n const state = (0, $bT4Nz.getGlobalLoaderState)();\n state.loaderRegistry = state.loaderRegistry || [];\n return state.loaderRegistry;\n};\nfunction $02109d8f267461b1$export$74069a1a10fa28e5(loaders) {\n const loaderRegistry = $02109d8f267461b1$var$getGlobalLoaderRegistry();\n loaders = Array.isArray(loaders) ? loaders : [\n loaders\n ];\n for (const loader of loaders){\n const normalizedLoader = (0, $ejAXt.normalizeLoader)(loader);\n if (!loaderRegistry.find((registeredLoader)=>normalizedLoader === registeredLoader)) loaderRegistry.unshift(normalizedLoader);\n }\n}\nfunction $02109d8f267461b1$export$8fa02447f82aef84() {\n return $02109d8f267461b1$var$getGlobalLoaderRegistry();\n}\nfunction $02109d8f267461b1$export$a20f34177d9a64c6() {\n const state = (0, $bT4Nz.getGlobalLoaderState)();\n state.loaderRegistry = [];\n}\n\n});\n\n\n\n\n\n\nparcelRegister(\"cYQ5y\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $97337e5d8e12d3ff$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $lEQUF = parcelRequire(\"lEQUF\");\n\nvar $i46md = parcelRequire(\"i46md\");\nvar $7UxuR = parcelRequire(\"7UxuR\");\nvar $jRSMz = parcelRequire(\"jRSMz\");\nvar $7gQQK = parcelRequire(\"7gQQK\");\n\nvar $cxTxU = parcelRequire(\"cxTxU\");\nvar $b2F4S = parcelRequire(\"b2F4S\");\n\nvar $h0OZb = parcelRequire(\"h0OZb\");\n\nvar $dNjAg = parcelRequire(\"dNjAg\");\nconst $97337e5d8e12d3ff$var$DEFAULT_COLOR = [\n 0,\n 0,\n 0,\n 255\n];\nconst $97337e5d8e12d3ff$var$defaultProps = {\n radiusUnits: \"meters\",\n radiusScale: {\n type: \"number\",\n min: 0,\n value: 1\n },\n radiusMinPixels: {\n type: \"number\",\n min: 0,\n value: 0\n },\n radiusMaxPixels: {\n type: \"number\",\n min: 0,\n value: Number.MAX_SAFE_INTEGER\n },\n lineWidthUnits: \"meters\",\n lineWidthScale: {\n type: \"number\",\n min: 0,\n value: 1\n },\n lineWidthMinPixels: {\n type: \"number\",\n min: 0,\n value: 0\n },\n lineWidthMaxPixels: {\n type: \"number\",\n min: 0,\n value: Number.MAX_SAFE_INTEGER\n },\n stroked: false,\n filled: true,\n billboard: false,\n antialiasing: true,\n getPosition: {\n type: \"accessor\",\n value: (x)=>x.position\n },\n getRadius: {\n type: \"accessor\",\n value: 1\n },\n getFillColor: {\n type: \"accessor\",\n value: $97337e5d8e12d3ff$var$DEFAULT_COLOR\n },\n getLineColor: {\n type: \"accessor\",\n value: $97337e5d8e12d3ff$var$DEFAULT_COLOR\n },\n getLineWidth: {\n type: \"accessor\",\n value: 1\n },\n strokeWidth: {\n deprecatedFor: \"getLineWidth\"\n },\n outline: {\n deprecatedFor: \"stroked\"\n },\n getColor: {\n deprecatedFor: [\n \"getFillColor\",\n \"getLineColor\"\n ]\n }\n};\nclass $97337e5d8e12d3ff$export$2e2bcd8739ae039 extends (0, $i46md.default) {\n getShaders() {\n return super.getShaders({\n vs: $h0OZb.default,\n fs: $dNjAg.default,\n modules: [\n (0, $jRSMz.default),\n (0, $7UxuR.default)\n ]\n });\n }\n initializeState() {\n this.getAttributeManager().addInstanced({\n instancePositions: {\n size: 3,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: \"getPosition\"\n },\n instanceRadius: {\n size: 1,\n transition: true,\n accessor: \"getRadius\",\n defaultValue: 1\n },\n instanceFillColors: {\n size: this.props.colorFormat.length,\n transition: true,\n normalized: true,\n type: 5121,\n accessor: \"getFillColor\",\n defaultValue: [\n 0,\n 0,\n 0,\n 255\n ]\n },\n instanceLineColors: {\n size: this.props.colorFormat.length,\n transition: true,\n normalized: true,\n type: 5121,\n accessor: \"getLineColor\",\n defaultValue: [\n 0,\n 0,\n 0,\n 255\n ]\n },\n instanceLineWidths: {\n size: 1,\n transition: true,\n accessor: \"getLineWidth\",\n defaultValue: 1\n }\n });\n }\n updateState(params) {\n super.updateState(params);\n if (params.changeFlags.extensionsChanged) {\n var _this$state$model;\n const { gl: gl } = this.context;\n (_this$state$model = this.state.model) === null || _this$state$model === void 0 || _this$state$model.delete();\n this.state.model = this._getModel(gl);\n this.getAttributeManager().invalidateAll();\n }\n }\n draw({ uniforms: uniforms }) {\n const { radiusUnits: radiusUnits, radiusScale: radiusScale, radiusMinPixels: radiusMinPixels, radiusMaxPixels: radiusMaxPixels, stroked: stroked, filled: filled, billboard: billboard, antialiasing: antialiasing, lineWidthUnits: lineWidthUnits, lineWidthScale: lineWidthScale, lineWidthMinPixels: lineWidthMinPixels, lineWidthMaxPixels: lineWidthMaxPixels } = this.props;\n this.state.model.setUniforms(uniforms).setUniforms({\n stroked: stroked ? 1 : 0,\n filled: filled,\n billboard: billboard,\n antialiasing: antialiasing,\n radiusUnits: (0, $7gQQK.UNIT)[radiusUnits],\n radiusScale: radiusScale,\n radiusMinPixels: radiusMinPixels,\n radiusMaxPixels: radiusMaxPixels,\n lineWidthUnits: (0, $7gQQK.UNIT)[lineWidthUnits],\n lineWidthScale: lineWidthScale,\n lineWidthMinPixels: lineWidthMinPixels,\n lineWidthMaxPixels: lineWidthMaxPixels\n }).draw();\n }\n _getModel(gl) {\n const positions = [\n -1,\n -1,\n 0,\n 1,\n -1,\n 0,\n 1,\n 1,\n 0,\n -1,\n 1,\n 0\n ];\n return new (0, $b2F4S.default)(gl, (0, $edHbI._)((0, $2QP2i._)({}, this.getShaders()), {\n id: this.props.id,\n geometry: new (0, $cxTxU.default)({\n drawMode: 6,\n vertexCount: 4,\n attributes: {\n positions: {\n size: 3,\n value: new Float32Array(positions)\n }\n }\n }),\n isInstanced: true\n }));\n }\n}\n(0, $lEQUF.default)($97337e5d8e12d3ff$export$2e2bcd8739ae039, \"defaultProps\", $97337e5d8e12d3ff$var$defaultProps);\n(0, $lEQUF.default)($97337e5d8e12d3ff$export$2e2bcd8739ae039, \"layerName\", \"ScatterplotLayer\");\n\n});\nparcelRegister(\"h0OZb\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c629fc7f5bde3113$export$2e2bcd8739ae039; });\nvar $c629fc7f5bde3113$export$2e2bcd8739ae039 = \"#define SHADER_NAME scatterplot-layer-vertex-shader\\n\\nattribute vec3 positions;\\n\\nattribute vec3 instancePositions;\\nattribute vec3 instancePositions64Low;\\nattribute float instanceRadius;\\nattribute float instanceLineWidths;\\nattribute vec4 instanceFillColors;\\nattribute vec4 instanceLineColors;\\nattribute vec3 instancePickingColors;\\n\\nuniform float opacity;\\nuniform float radiusScale;\\nuniform float radiusMinPixels;\\nuniform float radiusMaxPixels;\\nuniform float lineWidthScale;\\nuniform float lineWidthMinPixels;\\nuniform float lineWidthMaxPixels;\\nuniform float stroked;\\nuniform bool filled;\\nuniform bool antialiasing;\\nuniform bool billboard;\\nuniform int radiusUnits;\\nuniform int lineWidthUnits;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying vec2 unitPosition;\\nvarying float innerUnitRadius;\\nvarying float outerRadiusPixels;\\n\\n\\nvoid main(void) {\\n geometry.worldPosition = instancePositions;\\n outerRadiusPixels = clamp(\\n project_size_to_pixel(radiusScale * instanceRadius, radiusUnits),\\n radiusMinPixels, radiusMaxPixels\\n );\\n float lineWidthPixels = clamp(\\n project_size_to_pixel(lineWidthScale * instanceLineWidths, lineWidthUnits),\\n lineWidthMinPixels, lineWidthMaxPixels\\n );\\n outerRadiusPixels += stroked * lineWidthPixels / 2.0;\\n float edgePadding = antialiasing ? (outerRadiusPixels + SMOOTH_EDGE_RADIUS) / outerRadiusPixels : 1.0;\\n unitPosition = edgePadding * positions.xy;\\n geometry.uv = unitPosition;\\n geometry.pickingColor = instancePickingColors;\\n\\n innerUnitRadius = 1.0 - stroked * lineWidthPixels / outerRadiusPixels;\\n \\n if (billboard) {\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n vec3 offset = edgePadding * positions * outerRadiusPixels;\\n DECKGL_FILTER_SIZE(offset, geometry);\\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\\n } else {\\n vec3 offset = edgePadding * positions * project_pixel_size(outerRadiusPixels);\\n DECKGL_FILTER_SIZE(offset, geometry);\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position);\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n }\\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\\n DECKGL_FILTER_COLOR(vFillColor, geometry);\\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\\n DECKGL_FILTER_COLOR(vLineColor, geometry);\\n}\\n\";\n\n});\n\nparcelRegister(\"dNjAg\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $a0af0ae7d30a5aa2$export$2e2bcd8739ae039; });\nvar $a0af0ae7d30a5aa2$export$2e2bcd8739ae039 = \"#define SHADER_NAME scatterplot-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform bool filled;\\nuniform float stroked;\\nuniform bool antialiasing;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying vec2 unitPosition;\\nvarying float innerUnitRadius;\\nvarying float outerRadiusPixels;\\n\\nvoid main(void) {\\n geometry.uv = unitPosition;\\n\\n float distToCenter = length(unitPosition) * outerRadiusPixels;\\n float inCircle = antialiasing ? \\n smoothedge(distToCenter, outerRadiusPixels) : \\n step(distToCenter, outerRadiusPixels);\\n\\n if (inCircle == 0.0) {\\n discard;\\n }\\n\\n if (stroked > 0.5) {\\n float isLine = antialiasing ? \\n smoothedge(innerUnitRadius * outerRadiusPixels, distToCenter) :\\n step(innerUnitRadius * outerRadiusPixels, distToCenter);\\n\\n if (filled) {\\n gl_FragColor = mix(vFillColor, vLineColor, isLine);\\n } else {\\n if (isLine == 0.0) {\\n discard;\\n }\\n gl_FragColor = vec4(vLineColor.rgb, vLineColor.a * isLine);\\n }\\n } else if (!filled) {\\n discard;\\n } else {\\n gl_FragColor = vFillColor;\\n }\\n\\n gl_FragColor.a *= inCircle;\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n\n});\n\n\nparcelRegister(\"9pc7R\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6d8fdac97b4123f8$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $lEQUF = parcelRequire(\"lEQUF\");\n\nvar $coXLq = parcelRequire(\"coXLq\");\nvar $abpME = parcelRequire(\"abpME\");\nvar $4VQgq = parcelRequire(\"4VQgq\");\n\nvar $32r5R = parcelRequire(\"32r5R\");\n\nvar $7wR39 = parcelRequire(\"7wR39\");\n\nvar $2hbs4 = parcelRequire(\"2hbs4\");\n\nvar $1xAPT = parcelRequire(\"1xAPT\");\nconst $6d8fdac97b4123f8$var$TEXT_ANCHOR = {\n start: 1,\n middle: 0,\n end: -1\n};\nconst $6d8fdac97b4123f8$var$ALIGNMENT_BASELINE = {\n top: 1,\n center: 0,\n bottom: -1\n};\nconst $6d8fdac97b4123f8$var$DEFAULT_COLOR = [\n 0,\n 0,\n 0,\n 255\n];\nconst $6d8fdac97b4123f8$var$DEFAULT_LINE_HEIGHT = 1.0;\nconst $6d8fdac97b4123f8$var$defaultProps = {\n billboard: true,\n sizeScale: 1,\n sizeUnits: \"pixels\",\n sizeMinPixels: 0,\n sizeMaxPixels: Number.MAX_SAFE_INTEGER,\n background: false,\n getBackgroundColor: {\n type: \"accessor\",\n value: [\n 255,\n 255,\n 255,\n 255\n ]\n },\n getBorderColor: {\n type: \"accessor\",\n value: $6d8fdac97b4123f8$var$DEFAULT_COLOR\n },\n getBorderWidth: {\n type: \"accessor\",\n value: 0\n },\n backgroundPadding: {\n type: \"array\",\n value: [\n 0,\n 0,\n 0,\n 0\n ]\n },\n characterSet: {\n type: \"object\",\n value: (0, $7wR39.DEFAULT_FONT_SETTINGS).characterSet\n },\n fontFamily: (0, $7wR39.DEFAULT_FONT_SETTINGS).fontFamily,\n fontWeight: (0, $7wR39.DEFAULT_FONT_SETTINGS).fontWeight,\n lineHeight: $6d8fdac97b4123f8$var$DEFAULT_LINE_HEIGHT,\n outlineWidth: {\n type: \"number\",\n value: 0,\n min: 0\n },\n outlineColor: {\n type: \"color\",\n value: $6d8fdac97b4123f8$var$DEFAULT_COLOR\n },\n fontSettings: {\n type: \"object\",\n value: {},\n compare: 1\n },\n wordBreak: \"break-word\",\n maxWidth: {\n type: \"number\",\n value: -1\n },\n getText: {\n type: \"accessor\",\n value: (x)=>x.text\n },\n getPosition: {\n type: \"accessor\",\n value: (x)=>x.position\n },\n getColor: {\n type: \"accessor\",\n value: $6d8fdac97b4123f8$var$DEFAULT_COLOR\n },\n getSize: {\n type: \"accessor\",\n value: 32\n },\n getAngle: {\n type: \"accessor\",\n value: 0\n },\n getTextAnchor: {\n type: \"accessor\",\n value: \"middle\"\n },\n getAlignmentBaseline: {\n type: \"accessor\",\n value: \"center\"\n },\n getPixelOffset: {\n type: \"accessor\",\n value: [\n 0,\n 0\n ]\n },\n backgroundColor: {\n deprecatedFor: [\n \"background\",\n \"getBackgroundColor\"\n ]\n }\n};\nclass $6d8fdac97b4123f8$export$2e2bcd8739ae039 extends (0, $coXLq.default) {\n initializeState() {\n this.state = {\n styleVersion: 0,\n fontAtlasManager: new (0, $7wR39.default)()\n };\n if (this.props.maxWidth > 0) (0, $4VQgq.default).warn(\"v8.9 breaking change: TextLayer maxWidth is now relative to text size\")();\n }\n updateState(params) {\n const { props: props, oldProps: oldProps, changeFlags: changeFlags } = params;\n const textChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getText);\n if (textChanged) this._updateText();\n const fontChanged = this._updateFontAtlas();\n const styleChanged = fontChanged || props.lineHeight !== oldProps.lineHeight || props.wordBreak !== oldProps.wordBreak || props.maxWidth !== oldProps.maxWidth;\n if (styleChanged) this.setState({\n styleVersion: this.state.styleVersion + 1\n });\n }\n getPickingInfo({ info: info }) {\n info.object = info.index >= 0 ? this.props.data[info.index] : null;\n return info;\n }\n _updateFontAtlas() {\n const { fontSettings: fontSettings, fontFamily: fontFamily, fontWeight: fontWeight } = this.props;\n const { fontAtlasManager: fontAtlasManager, characterSet: characterSet } = this.state;\n const fontProps = (0, $edHbI._)((0, $2QP2i._)({}, fontSettings), {\n characterSet: characterSet,\n fontFamily: fontFamily,\n fontWeight: fontWeight\n });\n if (!fontAtlasManager.mapping) {\n fontAtlasManager.setProps(fontProps);\n return true;\n }\n for(const key in fontProps)if (fontProps[key] !== fontAtlasManager.props[key]) {\n fontAtlasManager.setProps(fontProps);\n return true;\n }\n return false;\n }\n _updateText() {\n var _attributes;\n const { data: data, characterSet: characterSet } = this.props;\n const textBuffer = (_attributes = data.attributes) === null || _attributes === void 0 ? void 0 : _attributes.getText;\n let { getText: getText } = this.props;\n let startIndices = data.startIndices;\n let numInstances;\n const autoCharacterSet = characterSet === \"auto\" && new Set();\n if (textBuffer && startIndices) {\n const { texts: texts, characterCount: characterCount } = (0, $2hbs4.getTextFromBuffer)((0, $edHbI._)((0, $2QP2i._)({}, ArrayBuffer.isView(textBuffer) ? {\n value: textBuffer\n } : textBuffer), {\n length: data.length,\n startIndices: startIndices,\n characterSet: autoCharacterSet\n }));\n numInstances = characterCount;\n getText = (_, { index: index })=>texts[index];\n } else {\n const { iterable: iterable, objectInfo: objectInfo } = (0, $abpME.createIterable)(data);\n startIndices = [\n 0\n ];\n numInstances = 0;\n for (const object of iterable){\n objectInfo.index++;\n const text = Array.from(getText(object, objectInfo) || \"\");\n if (autoCharacterSet) text.forEach(autoCharacterSet.add, autoCharacterSet);\n numInstances += text.length;\n startIndices.push(numInstances);\n }\n }\n this.setState({\n getText: getText,\n startIndices: startIndices,\n numInstances: numInstances,\n characterSet: autoCharacterSet || characterSet\n });\n }\n transformParagraph(object, objectInfo) {\n const { fontAtlasManager: fontAtlasManager } = this.state;\n const iconMapping = fontAtlasManager.mapping;\n const getText = this.state.getText;\n const { wordBreak: wordBreak, lineHeight: lineHeight, maxWidth: maxWidth } = this.props;\n const paragraph = getText(object, objectInfo) || \"\";\n return (0, $2hbs4.transformParagraph)(paragraph, lineHeight, wordBreak, maxWidth * fontAtlasManager.props.fontSize, iconMapping);\n }\n renderLayers() {\n const { startIndices: startIndices, numInstances: numInstances, getText: getText, fontAtlasManager: { scale: scale, texture: texture, mapping: mapping }, styleVersion: styleVersion } = this.state;\n const { data: data, _dataDiff: _dataDiff, getPosition: getPosition, getColor: getColor, getSize: getSize, getAngle: getAngle, getPixelOffset: getPixelOffset, getBackgroundColor: getBackgroundColor, getBorderColor: getBorderColor, getBorderWidth: getBorderWidth, backgroundPadding: backgroundPadding, background: background, billboard: billboard, fontSettings: fontSettings, outlineWidth: outlineWidth, outlineColor: outlineColor, sizeScale: sizeScale, sizeUnits: sizeUnits, sizeMinPixels: sizeMinPixels, sizeMaxPixels: sizeMaxPixels, transitions: transitions, updateTriggers: updateTriggers } = this.props;\n const CharactersLayerClass = this.getSubLayerClass(\"characters\", (0, $32r5R.default));\n const BackgroundLayerClass = this.getSubLayerClass(\"background\", (0, $1xAPT.default));\n return [\n background && new BackgroundLayerClass({\n getFillColor: getBackgroundColor,\n getLineColor: getBorderColor,\n getLineWidth: getBorderWidth,\n padding: backgroundPadding,\n getPosition: getPosition,\n getSize: getSize,\n getAngle: getAngle,\n getPixelOffset: getPixelOffset,\n billboard: billboard,\n sizeScale: sizeScale,\n sizeUnits: sizeUnits,\n sizeMinPixels: sizeMinPixels,\n sizeMaxPixels: sizeMaxPixels,\n transitions: transitions && {\n getPosition: transitions.getPosition,\n getAngle: transitions.getAngle,\n getSize: transitions.getSize,\n getFillColor: transitions.getBackgroundColor,\n getLineColor: transitions.getBorderColor,\n getLineWidth: transitions.getBorderWidth,\n getPixelOffset: transitions.getPixelOffset\n }\n }, this.getSubLayerProps({\n id: \"background\",\n updateTriggers: {\n getPosition: updateTriggers.getPosition,\n getAngle: updateTriggers.getAngle,\n getSize: updateTriggers.getSize,\n getFillColor: updateTriggers.getBackgroundColor,\n getLineColor: updateTriggers.getBorderColor,\n getLineWidth: updateTriggers.getBorderWidth,\n getPixelOffset: updateTriggers.getPixelOffset,\n getBoundingRect: {\n getText: updateTriggers.getText,\n getTextAnchor: updateTriggers.getTextAnchor,\n getAlignmentBaseline: updateTriggers.getAlignmentBaseline,\n styleVersion: styleVersion\n }\n }\n }), {\n data: data.attributes && data.attributes.background ? {\n length: data.length,\n attributes: data.attributes.background\n } : data,\n _dataDiff: _dataDiff,\n autoHighlight: false,\n getBoundingRect: this.getBoundingRect\n }),\n new CharactersLayerClass({\n sdf: fontSettings.sdf,\n smoothing: Number.isFinite(fontSettings.smoothing) ? fontSettings.smoothing : (0, $7wR39.DEFAULT_FONT_SETTINGS).smoothing,\n outlineWidth: outlineWidth / (fontSettings.radius || (0, $7wR39.DEFAULT_FONT_SETTINGS).radius),\n outlineColor: outlineColor,\n iconAtlas: texture,\n iconMapping: mapping,\n getPosition: getPosition,\n getColor: getColor,\n getSize: getSize,\n getAngle: getAngle,\n getPixelOffset: getPixelOffset,\n billboard: billboard,\n sizeScale: sizeScale * scale,\n sizeUnits: sizeUnits,\n sizeMinPixels: sizeMinPixels * scale,\n sizeMaxPixels: sizeMaxPixels * scale,\n transitions: transitions && {\n getPosition: transitions.getPosition,\n getAngle: transitions.getAngle,\n getColor: transitions.getColor,\n getSize: transitions.getSize,\n getPixelOffset: transitions.getPixelOffset\n }\n }, this.getSubLayerProps({\n id: \"characters\",\n updateTriggers: {\n all: updateTriggers.getText,\n getPosition: updateTriggers.getPosition,\n getAngle: updateTriggers.getAngle,\n getColor: updateTriggers.getColor,\n getSize: updateTriggers.getSize,\n getPixelOffset: updateTriggers.getPixelOffset,\n getIconOffsets: {\n getTextAnchor: updateTriggers.getTextAnchor,\n getAlignmentBaseline: updateTriggers.getAlignmentBaseline,\n styleVersion: styleVersion\n }\n }\n }), {\n data: data,\n _dataDiff: _dataDiff,\n startIndices: startIndices,\n numInstances: numInstances,\n getIconOffsets: this.getIconOffsets,\n getIcon: getText\n })\n ];\n }\n static set fontAtlasCacheLimit(limit) {\n (0, $7wR39.setFontAtlasCacheLimit)(limit);\n }\n constructor(...args){\n super(...args);\n (0, $lEQUF.default)(this, \"state\", void 0);\n (0, $lEQUF.default)(this, \"getBoundingRect\", (object, objectInfo)=>{\n let { size: [width, height] } = this.transformParagraph(object, objectInfo);\n const { fontSize: fontSize } = this.state.fontAtlasManager.props;\n width /= fontSize;\n height /= fontSize;\n const { getTextAnchor: getTextAnchor, getAlignmentBaseline: getAlignmentBaseline } = this.props;\n const anchorX = $6d8fdac97b4123f8$var$TEXT_ANCHOR[typeof getTextAnchor === \"function\" ? getTextAnchor(object, objectInfo) : getTextAnchor];\n const anchorY = $6d8fdac97b4123f8$var$ALIGNMENT_BASELINE[typeof getAlignmentBaseline === \"function\" ? getAlignmentBaseline(object, objectInfo) : getAlignmentBaseline];\n return [\n (anchorX - 1) * width / 2,\n (anchorY - 1) * height / 2,\n width,\n height\n ];\n });\n (0, $lEQUF.default)(this, \"getIconOffsets\", (object, objectInfo)=>{\n const { getTextAnchor: getTextAnchor, getAlignmentBaseline: getAlignmentBaseline } = this.props;\n const { x: x, y: y, rowWidth: rowWidth, size: [width, height] } = this.transformParagraph(object, objectInfo);\n const anchorX = $6d8fdac97b4123f8$var$TEXT_ANCHOR[typeof getTextAnchor === \"function\" ? getTextAnchor(object, objectInfo) : getTextAnchor];\n const anchorY = $6d8fdac97b4123f8$var$ALIGNMENT_BASELINE[typeof getAlignmentBaseline === \"function\" ? getAlignmentBaseline(object, objectInfo) : getAlignmentBaseline];\n const numCharacters = x.length;\n const offsets = new Array(numCharacters * 2);\n let index = 0;\n for(let i = 0; i < numCharacters; i++){\n const rowOffset = (1 - anchorX) * (width - rowWidth[i]) / 2;\n offsets[index++] = (anchorX - 1) * width / 2 + rowOffset + x[i];\n offsets[index++] = (anchorY - 1) * height / 2 + y[i];\n }\n return offsets;\n });\n }\n}\n(0, $lEQUF.default)($6d8fdac97b4123f8$export$2e2bcd8739ae039, \"defaultProps\", $6d8fdac97b4123f8$var$defaultProps);\n(0, $lEQUF.default)($6d8fdac97b4123f8$export$2e2bcd8739ae039, \"layerName\", \"TextLayer\");\n\n});\nparcelRegister(\"32r5R\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $2366933a1579e576$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $lEQUF = parcelRequire(\"lEQUF\");\n\nvar $4VQgq = parcelRequire(\"4VQgq\");\n\nvar $h685K = parcelRequire(\"h685K\");\n\nvar $lakAP = parcelRequire(\"lakAP\");\nconst $2366933a1579e576$var$DEFAULT_BUFFER = 0.75;\nconst $2366933a1579e576$var$EMPTY_ARRAY = [];\nconst $2366933a1579e576$var$defaultProps = {\n getIconOffsets: {\n type: \"accessor\",\n value: (x)=>x.offsets\n },\n alphaCutoff: 0.001,\n smoothing: 0.1,\n outlineWidth: 0,\n outlineColor: {\n type: \"color\",\n value: [\n 0,\n 0,\n 0,\n 255\n ]\n }\n};\nclass $2366933a1579e576$export$2e2bcd8739ae039 extends (0, $h685K.default) {\n getShaders() {\n return (0, $edHbI._)((0, $2QP2i._)({}, super.getShaders()), {\n fs: $lakAP.default\n });\n }\n initializeState() {\n super.initializeState();\n const attributeManager = this.getAttributeManager();\n attributeManager.addInstanced({\n instanceOffsets: {\n size: 2,\n accessor: \"getIconOffsets\"\n },\n instancePickingColors: {\n type: 5121,\n size: 3,\n accessor: (object, { index: index, target: value })=>this.encodePickingColor(index, value)\n }\n });\n }\n updateState(params) {\n super.updateState(params);\n const { props: props, oldProps: oldProps } = params;\n let { outlineColor: outlineColor } = props;\n if (outlineColor !== oldProps.outlineColor) {\n outlineColor = outlineColor.map((x)=>x / 255);\n outlineColor[3] = Number.isFinite(outlineColor[3]) ? outlineColor[3] : 1;\n this.setState({\n outlineColor: outlineColor\n });\n }\n if (!props.sdf && props.outlineWidth) (0, $4VQgq.default).warn(\"\".concat(this.id, \": fontSettings.sdf is required to render outline\"))();\n }\n draw(params) {\n const { sdf: sdf, smoothing: smoothing, outlineWidth: outlineWidth } = this.props;\n const { outlineColor: outlineColor } = this.state;\n const outlineBuffer = outlineWidth ? Math.max(smoothing, $2366933a1579e576$var$DEFAULT_BUFFER * (1 - outlineWidth)) : -1;\n params.uniforms = (0, $edHbI._)((0, $2QP2i._)({}, params.uniforms), {\n sdfBuffer: $2366933a1579e576$var$DEFAULT_BUFFER,\n outlineBuffer: outlineBuffer,\n gamma: smoothing,\n sdf: Boolean(sdf),\n outlineColor: outlineColor\n });\n super.draw(params);\n if (sdf && outlineWidth) {\n const { iconManager: iconManager } = this.state;\n const iconsTexture = iconManager.getTexture();\n if (iconsTexture) this.state.model.draw({\n uniforms: {\n outlineBuffer: $2366933a1579e576$var$DEFAULT_BUFFER\n }\n });\n }\n }\n getInstanceOffset(icons) {\n return icons ? Array.from(icons).flatMap((icon)=>super.getInstanceOffset(icon)) : $2366933a1579e576$var$EMPTY_ARRAY;\n }\n getInstanceColorMode(icons) {\n return 1;\n }\n getInstanceIconFrame(icons) {\n return icons ? Array.from(icons).flatMap((icon)=>super.getInstanceIconFrame(icon)) : $2366933a1579e576$var$EMPTY_ARRAY;\n }\n constructor(...args){\n super(...args);\n (0, $lEQUF.default)(this, \"state\", void 0);\n }\n}\n(0, $lEQUF.default)($2366933a1579e576$export$2e2bcd8739ae039, \"defaultProps\", $2366933a1579e576$var$defaultProps);\n(0, $lEQUF.default)($2366933a1579e576$export$2e2bcd8739ae039, \"layerName\", \"MultiIconLayer\");\n\n});\nparcelRegister(\"lakAP\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $f68a8178c4383b53$export$2e2bcd8739ae039; });\nvar $f68a8178c4383b53$export$2e2bcd8739ae039 = \"#define SHADER_NAME multi-icon-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform float opacity;\\nuniform sampler2D iconsTexture;\\nuniform float gamma;\\nuniform bool sdf;\\nuniform float alphaCutoff;\\nuniform float sdfBuffer;\\nuniform float outlineBuffer;\\nuniform vec4 outlineColor;\\n\\nvarying vec4 vColor;\\nvarying vec2 vTextureCoords;\\nvarying vec2 uv;\\n\\nvoid main(void) {\\n geometry.uv = uv;\\n\\n if (!picking_uActive) {\\n float alpha = texture2D(iconsTexture, vTextureCoords).a;\\n vec4 color = vColor;\\n if (sdf) {\\n float distance = alpha;\\n alpha = smoothstep(sdfBuffer - gamma, sdfBuffer + gamma, distance);\\n\\n if (outlineBuffer > 0.0) {\\n float inFill = alpha;\\n float inBorder = smoothstep(outlineBuffer - gamma, outlineBuffer + gamma, distance);\\n color = mix(outlineColor, vColor, inFill);\\n alpha = inBorder;\\n }\\n }\\n float a = alpha * color.a;\\n \\n if (a < alphaCutoff) {\\n discard;\\n }\\n\\n gl_FragColor = vec4(color.rgb, a * opacity);\\n }\\n\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n\n});\n\n\nparcelRegister(\"7wR39\", function(module, exports) {\n\n$parcel$export(module.exports, \"DEFAULT_FONT_SETTINGS\", function () { return $57b4ac2ca71db903$export$ed0f3a73a3e52a5; });\n$parcel$export(module.exports, \"setFontAtlasCacheLimit\", function () { return $57b4ac2ca71db903$export$1ff3beb648c640c1; });\n$parcel$export(module.exports, \"default\", function () { return $57b4ac2ca71db903$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $lEQUF = parcelRequire(\"lEQUF\");\n\nvar $5POoC = parcelRequire(\"5POoC\");\n\nvar $4VQgq = parcelRequire(\"4VQgq\");\n\nvar $2hbs4 = parcelRequire(\"2hbs4\");\n\nvar $1Kynu = parcelRequire(\"1Kynu\");\nfunction $57b4ac2ca71db903$var$getDefaultCharacterSet() {\n const charSet = [];\n for(let i = 32; i < 128; i++)charSet.push(String.fromCharCode(i));\n return charSet;\n}\nconst $57b4ac2ca71db903$export$ed0f3a73a3e52a5 = {\n fontFamily: \"Monaco, monospace\",\n fontWeight: \"normal\",\n characterSet: $57b4ac2ca71db903$var$getDefaultCharacterSet(),\n fontSize: 64,\n buffer: 4,\n sdf: false,\n cutoff: 0.25,\n radius: 12,\n smoothing: 0.1\n};\nconst $57b4ac2ca71db903$var$MAX_CANVAS_WIDTH = 1024;\nconst $57b4ac2ca71db903$var$BASELINE_SCALE = 0.9;\nconst $57b4ac2ca71db903$var$HEIGHT_SCALE = 1.2;\nconst $57b4ac2ca71db903$var$CACHE_LIMIT = 3;\nlet $57b4ac2ca71db903$var$cache = new (0, $1Kynu.default)($57b4ac2ca71db903$var$CACHE_LIMIT);\nfunction $57b4ac2ca71db903$var$getNewChars(cacheKey, characterSet) {\n let newCharSet;\n if (typeof characterSet === \"string\") newCharSet = new Set(Array.from(characterSet));\n else newCharSet = new Set(characterSet);\n const cachedFontAtlas = $57b4ac2ca71db903$var$cache.get(cacheKey);\n if (!cachedFontAtlas) return newCharSet;\n for(const char in cachedFontAtlas.mapping)if (newCharSet.has(char)) newCharSet.delete(char);\n return newCharSet;\n}\nfunction $57b4ac2ca71db903$var$populateAlphaChannel(alphaChannel, imageData) {\n for(let i = 0; i < alphaChannel.length; i++)imageData.data[4 * i + 3] = alphaChannel[i];\n}\nfunction $57b4ac2ca71db903$var$setTextStyle(ctx, fontFamily, fontSize, fontWeight) {\n ctx.font = \"\".concat(fontWeight, \" \").concat(fontSize, \"px \").concat(fontFamily);\n ctx.fillStyle = \"#000\";\n ctx.textBaseline = \"alphabetic\";\n ctx.textAlign = \"left\";\n}\nfunction $57b4ac2ca71db903$export$1ff3beb648c640c1(limit) {\n (0, $4VQgq.default).assert(Number.isFinite(limit) && limit >= $57b4ac2ca71db903$var$CACHE_LIMIT, \"Invalid cache limit\");\n $57b4ac2ca71db903$var$cache = new (0, $1Kynu.default)(limit);\n}\nclass $57b4ac2ca71db903$export$2e2bcd8739ae039 {\n get texture() {\n return this._atlas;\n }\n get mapping() {\n return this._atlas && this._atlas.mapping;\n }\n get scale() {\n const { fontSize: fontSize, buffer: buffer } = this.props;\n return (fontSize * $57b4ac2ca71db903$var$HEIGHT_SCALE + buffer * 2) / fontSize;\n }\n setProps(props = {}) {\n Object.assign(this.props, props);\n this._key = this._getKey();\n const charSet = $57b4ac2ca71db903$var$getNewChars(this._key, this.props.characterSet);\n const cachedFontAtlas = $57b4ac2ca71db903$var$cache.get(this._key);\n if (cachedFontAtlas && charSet.size === 0) {\n if (this._atlas !== cachedFontAtlas) this._atlas = cachedFontAtlas;\n return;\n }\n const fontAtlas = this._generateFontAtlas(charSet, cachedFontAtlas);\n this._atlas = fontAtlas;\n $57b4ac2ca71db903$var$cache.set(this._key, fontAtlas);\n }\n _generateFontAtlas(characterSet, cachedFontAtlas) {\n const { fontFamily: fontFamily, fontWeight: fontWeight, fontSize: fontSize, buffer: buffer, sdf: sdf, radius: radius, cutoff: cutoff } = this.props;\n let canvas = cachedFontAtlas && cachedFontAtlas.data;\n if (!canvas) {\n canvas = document.createElement(\"canvas\");\n canvas.width = $57b4ac2ca71db903$var$MAX_CANVAS_WIDTH;\n }\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n $57b4ac2ca71db903$var$setTextStyle(ctx, fontFamily, fontSize, fontWeight);\n const { mapping: mapping, canvasHeight: canvasHeight, xOffset: xOffset, yOffset: yOffset } = (0, $2hbs4.buildMapping)((0, $2QP2i._)({\n getFontWidth: (char)=>ctx.measureText(char).width,\n fontHeight: fontSize * $57b4ac2ca71db903$var$HEIGHT_SCALE,\n buffer: buffer,\n characterSet: characterSet,\n maxCanvasWidth: $57b4ac2ca71db903$var$MAX_CANVAS_WIDTH\n }, cachedFontAtlas && {\n mapping: cachedFontAtlas.mapping,\n xOffset: cachedFontAtlas.xOffset,\n yOffset: cachedFontAtlas.yOffset\n }));\n if (canvas.height !== canvasHeight) {\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n canvas.height = canvasHeight;\n ctx.putImageData(imageData, 0, 0);\n }\n $57b4ac2ca71db903$var$setTextStyle(ctx, fontFamily, fontSize, fontWeight);\n if (sdf) {\n const tinySDF = new (0, $5POoC.default)({\n fontSize: fontSize,\n buffer: buffer,\n radius: radius,\n cutoff: cutoff,\n fontFamily: fontFamily,\n fontWeight: \"\".concat(fontWeight)\n });\n for (const char of characterSet){\n const { data: data, width: width, height: height, glyphTop: glyphTop } = tinySDF.draw(char);\n mapping[char].width = width;\n mapping[char].layoutOffsetY = fontSize * $57b4ac2ca71db903$var$BASELINE_SCALE - glyphTop;\n const imageData = ctx.createImageData(width, height);\n $57b4ac2ca71db903$var$populateAlphaChannel(data, imageData);\n ctx.putImageData(imageData, mapping[char].x, mapping[char].y);\n }\n } else for (const char of characterSet)ctx.fillText(char, mapping[char].x, mapping[char].y + buffer + fontSize * $57b4ac2ca71db903$var$BASELINE_SCALE);\n return {\n xOffset: xOffset,\n yOffset: yOffset,\n mapping: mapping,\n data: canvas,\n width: canvas.width,\n height: canvas.height\n };\n }\n _getKey() {\n const { fontFamily: fontFamily, fontWeight: fontWeight, fontSize: fontSize, buffer: buffer, sdf: sdf, radius: radius, cutoff: cutoff } = this.props;\n if (sdf) return \"\".concat(fontFamily, \" \").concat(fontWeight, \" \").concat(fontSize, \" \").concat(buffer, \" \").concat(radius, \" \").concat(cutoff);\n return \"\".concat(fontFamily, \" \").concat(fontWeight, \" \").concat(fontSize, \" \").concat(buffer);\n }\n constructor(){\n (0, $lEQUF.default)(this, \"props\", (0, $2QP2i._)({}, $57b4ac2ca71db903$export$ed0f3a73a3e52a5));\n (0, $lEQUF.default)(this, \"_key\", void 0);\n (0, $lEQUF.default)(this, \"_atlas\", void 0);\n }\n}\n\n});\nparcelRegister(\"5POoC\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $43f8cec4dd2e8653$export$2e2bcd8739ae039; });\nconst $43f8cec4dd2e8653$var$INF = 1e20;\nclass $43f8cec4dd2e8653$export$2e2bcd8739ae039 {\n _createCanvas(size) {\n const canvas = document.createElement(\"canvas\");\n canvas.width = canvas.height = size;\n return canvas;\n }\n draw(char) {\n const { width: glyphAdvance, actualBoundingBoxAscent: actualBoundingBoxAscent, actualBoundingBoxDescent: actualBoundingBoxDescent, actualBoundingBoxLeft: actualBoundingBoxLeft, actualBoundingBoxRight: actualBoundingBoxRight } = this.ctx.measureText(char);\n // The integer/pixel part of the top alignment is encoded in metrics.glyphTop\n // The remainder is implicitly encoded in the rasterization\n const glyphTop = Math.ceil(actualBoundingBoxAscent);\n const glyphLeft = 0;\n // If the glyph overflows the canvas size, it will be clipped at the bottom/right\n const glyphWidth = Math.max(0, Math.min(this.size - this.buffer, Math.ceil(actualBoundingBoxRight - actualBoundingBoxLeft)));\n const glyphHeight = Math.min(this.size - this.buffer, glyphTop + Math.ceil(actualBoundingBoxDescent));\n const width = glyphWidth + 2 * this.buffer;\n const height = glyphHeight + 2 * this.buffer;\n const len = Math.max(width * height, 0);\n const data = new Uint8ClampedArray(len);\n const glyph = {\n data: data,\n width: width,\n height: height,\n glyphWidth: glyphWidth,\n glyphHeight: glyphHeight,\n glyphTop: glyphTop,\n glyphLeft: glyphLeft,\n glyphAdvance: glyphAdvance\n };\n if (glyphWidth === 0 || glyphHeight === 0) return glyph;\n const { ctx: ctx, buffer: buffer, gridInner: gridInner, gridOuter: gridOuter } = this;\n ctx.clearRect(buffer, buffer, glyphWidth, glyphHeight);\n ctx.fillText(char, buffer, buffer + glyphTop);\n const imgData = ctx.getImageData(buffer, buffer, glyphWidth, glyphHeight);\n // Initialize grids outside the glyph range to alpha 0\n gridOuter.fill($43f8cec4dd2e8653$var$INF, 0, len);\n gridInner.fill(0, 0, len);\n for(let y = 0; y < glyphHeight; y++)for(let x = 0; x < glyphWidth; x++){\n const a = imgData.data[4 * (y * glyphWidth + x) + 3] / 255; // alpha value\n if (a === 0) continue; // empty pixels\n const j = (y + buffer) * width + x + buffer;\n if (a === 1) {\n gridOuter[j] = 0;\n gridInner[j] = $43f8cec4dd2e8653$var$INF;\n } else {\n const d = 0.5 - a;\n gridOuter[j] = d > 0 ? d * d : 0;\n gridInner[j] = d < 0 ? d * d : 0;\n }\n }\n $43f8cec4dd2e8653$var$edt(gridOuter, 0, 0, width, height, width, this.f, this.v, this.z);\n $43f8cec4dd2e8653$var$edt(gridInner, buffer, buffer, glyphWidth, glyphHeight, width, this.f, this.v, this.z);\n for(let i = 0; i < len; i++){\n const d = Math.sqrt(gridOuter[i]) - Math.sqrt(gridInner[i]);\n data[i] = Math.round(255 - 255 * (d / this.radius + this.cutoff));\n }\n return glyph;\n }\n constructor({ fontSize: fontSize = 24, buffer: buffer = 3, radius: radius = 8, cutoff: cutoff = 0.25, fontFamily: fontFamily = \"sans-serif\", fontWeight: fontWeight = \"normal\", fontStyle: fontStyle = \"normal\" } = {}){\n this.buffer = buffer;\n this.cutoff = cutoff;\n this.radius = radius;\n // make the canvas size big enough to both have the specified buffer around the glyph\n // for \"halo\", and account for some glyphs possibly being larger than their font size\n const size = this.size = fontSize + buffer * 4;\n const canvas = this._createCanvas(size);\n const ctx = this.ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n ctx.textBaseline = \"alphabetic\";\n ctx.textAlign = \"left\"; // Necessary so that RTL text doesn't have different alignment\n ctx.fillStyle = \"black\";\n // temporary arrays for the distance transform\n this.gridOuter = new Float64Array(size * size);\n this.gridInner = new Float64Array(size * size);\n this.f = new Float64Array(size);\n this.z = new Float64Array(size + 1);\n this.v = new Uint16Array(size);\n }\n}\n// 2D Euclidean squared distance transform by Felzenszwalb & Huttenlocher https://cs.brown.edu/~pff/papers/dt-final.pdf\nfunction $43f8cec4dd2e8653$var$edt(data, x0, y0, width, height, gridSize, f, v, z) {\n for(let x = x0; x < x0 + width; x++)$43f8cec4dd2e8653$var$edt1d(data, y0 * gridSize + x, gridSize, height, f, v, z);\n for(let y = y0; y < y0 + height; y++)$43f8cec4dd2e8653$var$edt1d(data, y * gridSize + x0, 1, width, f, v, z);\n}\n// 1D squared distance transform\nfunction $43f8cec4dd2e8653$var$edt1d(grid, offset, stride, length, f, v, z) {\n v[0] = 0;\n z[0] = -$43f8cec4dd2e8653$var$INF;\n z[1] = $43f8cec4dd2e8653$var$INF;\n f[0] = grid[offset];\n for(let q = 1, k = 0, s = 0; q < length; q++){\n f[q] = grid[offset + q * stride];\n const q2 = q * q;\n do {\n const r = v[k];\n s = (f[q] - f[r] + q2 - r * r) / (q - r) / 2;\n }while (s <= z[k] && --k > -1);\n k++;\n v[k] = q;\n z[k] = s;\n z[k + 1] = $43f8cec4dd2e8653$var$INF;\n }\n for(let q = 0, k = 0; q < length; q++){\n while(z[k + 1] < q)k++;\n const r = v[k];\n const qr = q - r;\n grid[offset + q * stride] = f[r] + qr * qr;\n }\n}\n\n});\n\nparcelRegister(\"2hbs4\", function(module, exports) {\n\n$parcel$export(module.exports, \"buildMapping\", function () { return $1a860d6580fd8805$export$a868857fc20192e3; });\n$parcel$export(module.exports, \"transformParagraph\", function () { return $1a860d6580fd8805$export$1fa0b59a8da5a8b8; });\n$parcel$export(module.exports, \"getTextFromBuffer\", function () { return $1a860d6580fd8805$export$ec514602ef54b577; });\n\nvar $4VQgq = parcelRequire(\"4VQgq\");\nconst $1a860d6580fd8805$var$MISSING_CHAR_WIDTH = 32;\nconst $1a860d6580fd8805$var$SINGLE_LINE = [];\nfunction $1a860d6580fd8805$export$dbdf0b374a78effc(number) {\n return Math.pow(2, Math.ceil(Math.log2(number)));\n}\nfunction $1a860d6580fd8805$export$a868857fc20192e3({ characterSet: characterSet, getFontWidth: getFontWidth, fontHeight: fontHeight, buffer: buffer, maxCanvasWidth: maxCanvasWidth, mapping: mapping = {}, xOffset: xOffset = 0, yOffset: yOffset = 0 }) {\n let row = 0;\n let x = xOffset;\n const rowHeight = fontHeight + buffer * 2;\n for (const char of characterSet)if (!mapping[char]) {\n const width = getFontWidth(char);\n if (x + width + buffer * 2 > maxCanvasWidth) {\n x = 0;\n row++;\n }\n mapping[char] = {\n x: x + buffer,\n y: yOffset + row * rowHeight + buffer,\n width: width,\n height: rowHeight,\n layoutWidth: width,\n layoutHeight: fontHeight\n };\n x += width + buffer * 2;\n }\n return {\n mapping: mapping,\n xOffset: x,\n yOffset: yOffset + row * rowHeight,\n canvasHeight: $1a860d6580fd8805$export$dbdf0b374a78effc(yOffset + (row + 1) * rowHeight)\n };\n}\nfunction $1a860d6580fd8805$var$getTextWidth(text, startIndex, endIndex, mapping) {\n let width = 0;\n for(let i = startIndex; i < endIndex; i++){\n var _mapping$character;\n const character = text[i];\n width += ((_mapping$character = mapping[character]) === null || _mapping$character === void 0 ? void 0 : _mapping$character.layoutWidth) || 0;\n }\n return width;\n}\nfunction $1a860d6580fd8805$var$breakAll(text, startIndex, endIndex, maxWidth, iconMapping, target) {\n let rowStartCharIndex = startIndex;\n let rowOffsetLeft = 0;\n for(let i = startIndex; i < endIndex; i++){\n const textWidth = $1a860d6580fd8805$var$getTextWidth(text, i, i + 1, iconMapping);\n if (rowOffsetLeft + textWidth > maxWidth) {\n if (rowStartCharIndex < i) target.push(i);\n rowStartCharIndex = i;\n rowOffsetLeft = 0;\n }\n rowOffsetLeft += textWidth;\n }\n return rowOffsetLeft;\n}\nfunction $1a860d6580fd8805$var$breakWord(text, startIndex, endIndex, maxWidth, iconMapping, target) {\n let rowStartCharIndex = startIndex;\n let groupStartCharIndex = startIndex;\n let groupEndCharIndex = startIndex;\n let rowOffsetLeft = 0;\n for(let i = startIndex; i < endIndex; i++){\n if (text[i] === \" \") groupEndCharIndex = i + 1;\n else if (text[i + 1] === \" \" || i + 1 === endIndex) groupEndCharIndex = i + 1;\n if (groupEndCharIndex > groupStartCharIndex) {\n let groupWidth = $1a860d6580fd8805$var$getTextWidth(text, groupStartCharIndex, groupEndCharIndex, iconMapping);\n if (rowOffsetLeft + groupWidth > maxWidth) {\n if (rowStartCharIndex < groupStartCharIndex) {\n target.push(groupStartCharIndex);\n rowStartCharIndex = groupStartCharIndex;\n rowOffsetLeft = 0;\n }\n if (groupWidth > maxWidth) {\n groupWidth = $1a860d6580fd8805$var$breakAll(text, groupStartCharIndex, groupEndCharIndex, maxWidth, iconMapping, target);\n rowStartCharIndex = target[target.length - 1];\n }\n }\n groupStartCharIndex = groupEndCharIndex;\n rowOffsetLeft += groupWidth;\n }\n }\n return rowOffsetLeft;\n}\nfunction $1a860d6580fd8805$export$4e7f5b633f31f273(text, wordBreak, maxWidth, iconMapping, startIndex = 0, endIndex) {\n if (endIndex === undefined) endIndex = text.length;\n const result = [];\n if (wordBreak === \"break-all\") $1a860d6580fd8805$var$breakAll(text, startIndex, endIndex, maxWidth, iconMapping, result);\n else $1a860d6580fd8805$var$breakWord(text, startIndex, endIndex, maxWidth, iconMapping, result);\n return result;\n}\nfunction $1a860d6580fd8805$var$transformRow(line, startIndex, endIndex, iconMapping, leftOffsets, rowSize) {\n let x = 0;\n let rowHeight = 0;\n for(let i = startIndex; i < endIndex; i++){\n const character = line[i];\n const frame = iconMapping[character];\n if (frame) {\n if (!rowHeight) rowHeight = frame.layoutHeight;\n leftOffsets[i] = x + frame.layoutWidth / 2;\n x += frame.layoutWidth;\n } else {\n (0, $4VQgq.default).warn(\"Missing character: \".concat(character, \" (\").concat(character.codePointAt(0), \")\"))();\n leftOffsets[i] = x;\n x += $1a860d6580fd8805$var$MISSING_CHAR_WIDTH;\n }\n }\n rowSize[0] = x;\n rowSize[1] = rowHeight;\n}\nfunction $1a860d6580fd8805$export$1fa0b59a8da5a8b8(paragraph, lineHeight, wordBreak, maxWidth, iconMapping) {\n const characters = Array.from(paragraph);\n const numCharacters = characters.length;\n const x = new Array(numCharacters);\n const y = new Array(numCharacters);\n const rowWidth = new Array(numCharacters);\n const autoWrappingEnabled = (wordBreak === \"break-word\" || wordBreak === \"break-all\") && isFinite(maxWidth) && maxWidth > 0;\n const size = [\n 0,\n 0\n ];\n const rowSize = [\n 0,\n 0\n ];\n let rowOffsetTop = 0;\n let lineStartIndex = 0;\n let lineEndIndex = 0;\n for(let i = 0; i <= numCharacters; i++){\n const char = characters[i];\n if (char === \"\\n\" || i === numCharacters) lineEndIndex = i;\n if (lineEndIndex > lineStartIndex) {\n const rows = autoWrappingEnabled ? $1a860d6580fd8805$export$4e7f5b633f31f273(characters, wordBreak, maxWidth, iconMapping, lineStartIndex, lineEndIndex) : $1a860d6580fd8805$var$SINGLE_LINE;\n for(let rowIndex = 0; rowIndex <= rows.length; rowIndex++){\n const rowStart = rowIndex === 0 ? lineStartIndex : rows[rowIndex - 1];\n const rowEnd = rowIndex < rows.length ? rows[rowIndex] : lineEndIndex;\n $1a860d6580fd8805$var$transformRow(characters, rowStart, rowEnd, iconMapping, x, rowSize);\n for(let j = rowStart; j < rowEnd; j++){\n var _iconMapping$char;\n const char = characters[j];\n const layoutOffsetY = ((_iconMapping$char = iconMapping[char]) === null || _iconMapping$char === void 0 ? void 0 : _iconMapping$char.layoutOffsetY) || 0;\n y[j] = rowOffsetTop + rowSize[1] / 2 + layoutOffsetY;\n rowWidth[j] = rowSize[0];\n }\n rowOffsetTop = rowOffsetTop + rowSize[1] * lineHeight;\n size[0] = Math.max(size[0], rowSize[0]);\n }\n lineStartIndex = lineEndIndex;\n }\n if (char === \"\\n\") {\n x[lineStartIndex] = 0;\n y[lineStartIndex] = 0;\n rowWidth[lineStartIndex] = 0;\n lineStartIndex++;\n }\n }\n size[1] = rowOffsetTop;\n return {\n x: x,\n y: y,\n rowWidth: rowWidth,\n size: size\n };\n}\nfunction $1a860d6580fd8805$export$ec514602ef54b577({ value: value, length: length, stride: stride, offset: offset, startIndices: startIndices, characterSet: characterSet }) {\n const bytesPerElement = value.BYTES_PER_ELEMENT;\n const elementStride = stride ? stride / bytesPerElement : 1;\n const elementOffset = offset ? offset / bytesPerElement : 0;\n const characterCount = startIndices[length] || Math.ceil((value.length - elementOffset) / elementStride);\n const autoCharacterSet = characterSet && new Set();\n const texts = new Array(length);\n let codes = value;\n if (elementStride > 1 || elementOffset > 0) {\n const ArrayType = value.constructor;\n codes = new ArrayType(characterCount);\n for(let i = 0; i < characterCount; i++)codes[i] = value[i * elementStride + elementOffset];\n }\n for(let index = 0; index < length; index++){\n const startIndex = startIndices[index];\n const endIndex = startIndices[index + 1] || characterCount;\n const codesAtIndex = codes.subarray(startIndex, endIndex);\n texts[index] = String.fromCodePoint.apply(null, codesAtIndex);\n if (autoCharacterSet) codesAtIndex.forEach(autoCharacterSet.add, autoCharacterSet);\n }\n if (autoCharacterSet) for (const charCode of autoCharacterSet)characterSet.add(String.fromCodePoint(charCode));\n return {\n texts: texts,\n characterCount: characterCount\n };\n}\n\n});\n\nparcelRegister(\"1Kynu\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $1464c10b4afb5ee4$export$2e2bcd8739ae039; });\n\nvar $lEQUF = parcelRequire(\"lEQUF\");\nclass $1464c10b4afb5ee4$export$2e2bcd8739ae039 {\n get(key) {\n const value = this._cache[key];\n if (value) {\n this._deleteOrder(key);\n this._appendOrder(key);\n }\n return value;\n }\n set(key, value) {\n if (!this._cache[key]) {\n if (Object.keys(this._cache).length === this.limit) this.delete(this._order[0]);\n this._cache[key] = value;\n this._appendOrder(key);\n } else {\n this.delete(key);\n this._cache[key] = value;\n this._appendOrder(key);\n }\n }\n delete(key) {\n const value = this._cache[key];\n if (value) {\n delete this._cache[key];\n this._deleteOrder(key);\n }\n }\n _deleteOrder(key) {\n const index = this._order.indexOf(key);\n if (index >= 0) this._order.splice(index, 1);\n }\n _appendOrder(key) {\n this._order.push(key);\n }\n constructor(limit = 5){\n (0, $lEQUF.default)(this, \"limit\", void 0);\n (0, $lEQUF.default)(this, \"_cache\", {});\n (0, $lEQUF.default)(this, \"_order\", []);\n this.limit = limit;\n }\n}\n\n});\n\n\nparcelRegister(\"1xAPT\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $11f5725f748aea46$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $lEQUF = parcelRequire(\"lEQUF\");\n\nvar $i46md = parcelRequire(\"i46md\");\nvar $7UxuR = parcelRequire(\"7UxuR\");\nvar $jRSMz = parcelRequire(\"jRSMz\");\nvar $7gQQK = parcelRequire(\"7gQQK\");\n\nvar $cxTxU = parcelRequire(\"cxTxU\");\nvar $b2F4S = parcelRequire(\"b2F4S\");\n\nvar $hhaan = parcelRequire(\"hhaan\");\n\nvar $3ih6r = parcelRequire(\"3ih6r\");\nconst $11f5725f748aea46$var$defaultProps = {\n billboard: true,\n sizeScale: 1,\n sizeUnits: \"pixels\",\n sizeMinPixels: 0,\n sizeMaxPixels: Number.MAX_SAFE_INTEGER,\n padding: {\n type: \"array\",\n value: [\n 0,\n 0,\n 0,\n 0\n ]\n },\n getPosition: {\n type: \"accessor\",\n value: (x)=>x.position\n },\n getSize: {\n type: \"accessor\",\n value: 1\n },\n getAngle: {\n type: \"accessor\",\n value: 0\n },\n getPixelOffset: {\n type: \"accessor\",\n value: [\n 0,\n 0\n ]\n },\n getBoundingRect: {\n type: \"accessor\",\n value: [\n 0,\n 0,\n 0,\n 0\n ]\n },\n getFillColor: {\n type: \"accessor\",\n value: [\n 0,\n 0,\n 0,\n 255\n ]\n },\n getLineColor: {\n type: \"accessor\",\n value: [\n 0,\n 0,\n 0,\n 255\n ]\n },\n getLineWidth: {\n type: \"accessor\",\n value: 1\n }\n};\nclass $11f5725f748aea46$export$2e2bcd8739ae039 extends (0, $i46md.default) {\n getShaders() {\n return super.getShaders({\n vs: $hhaan.default,\n fs: $3ih6r.default,\n modules: [\n (0, $jRSMz.default),\n (0, $7UxuR.default)\n ]\n });\n }\n initializeState() {\n this.getAttributeManager().addInstanced({\n instancePositions: {\n size: 3,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: \"getPosition\"\n },\n instanceSizes: {\n size: 1,\n transition: true,\n accessor: \"getSize\",\n defaultValue: 1\n },\n instanceAngles: {\n size: 1,\n transition: true,\n accessor: \"getAngle\"\n },\n instanceRects: {\n size: 4,\n accessor: \"getBoundingRect\"\n },\n instancePixelOffsets: {\n size: 2,\n transition: true,\n accessor: \"getPixelOffset\"\n },\n instanceFillColors: {\n size: 4,\n transition: true,\n normalized: true,\n type: 5121,\n accessor: \"getFillColor\",\n defaultValue: [\n 0,\n 0,\n 0,\n 255\n ]\n },\n instanceLineColors: {\n size: 4,\n transition: true,\n normalized: true,\n type: 5121,\n accessor: \"getLineColor\",\n defaultValue: [\n 0,\n 0,\n 0,\n 255\n ]\n },\n instanceLineWidths: {\n size: 1,\n transition: true,\n accessor: \"getLineWidth\",\n defaultValue: 1\n }\n });\n }\n updateState(params) {\n super.updateState(params);\n const { changeFlags: changeFlags } = params;\n if (changeFlags.extensionsChanged) {\n var _this$state$model;\n const { gl: gl } = this.context;\n (_this$state$model = this.state.model) === null || _this$state$model === void 0 || _this$state$model.delete();\n this.state.model = this._getModel(gl);\n this.getAttributeManager().invalidateAll();\n }\n }\n draw({ uniforms: uniforms }) {\n const { billboard: billboard, sizeScale: sizeScale, sizeUnits: sizeUnits, sizeMinPixels: sizeMinPixels, sizeMaxPixels: sizeMaxPixels, getLineWidth: getLineWidth } = this.props;\n let { padding: padding } = this.props;\n if (padding.length < 4) padding = [\n padding[0],\n padding[1],\n padding[0],\n padding[1]\n ];\n this.state.model.setUniforms(uniforms).setUniforms({\n billboard: billboard,\n stroked: Boolean(getLineWidth),\n padding: padding,\n sizeUnits: (0, $7gQQK.UNIT)[sizeUnits],\n sizeScale: sizeScale,\n sizeMinPixels: sizeMinPixels,\n sizeMaxPixels: sizeMaxPixels\n }).draw();\n }\n _getModel(gl) {\n const positions = [\n 0,\n 0,\n 1,\n 0,\n 1,\n 1,\n 0,\n 1\n ];\n return new (0, $b2F4S.default)(gl, (0, $edHbI._)((0, $2QP2i._)({}, this.getShaders()), {\n id: this.props.id,\n geometry: new (0, $cxTxU.default)({\n drawMode: 6,\n vertexCount: 4,\n attributes: {\n positions: {\n size: 2,\n value: new Float32Array(positions)\n }\n }\n }),\n isInstanced: true\n }));\n }\n constructor(...args){\n super(...args);\n (0, $lEQUF.default)(this, \"state\", void 0);\n }\n}\n(0, $lEQUF.default)($11f5725f748aea46$export$2e2bcd8739ae039, \"defaultProps\", $11f5725f748aea46$var$defaultProps);\n(0, $lEQUF.default)($11f5725f748aea46$export$2e2bcd8739ae039, \"layerName\", \"TextBackgroundLayer\");\n\n});\nparcelRegister(\"hhaan\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c93be90768b1913a$export$2e2bcd8739ae039; });\nvar $c93be90768b1913a$export$2e2bcd8739ae039 = \"#define SHADER_NAME text-background-layer-vertex-shader\\n\\nattribute vec2 positions;\\n\\nattribute vec3 instancePositions;\\nattribute vec3 instancePositions64Low;\\nattribute vec4 instanceRects;\\nattribute float instanceSizes;\\nattribute float instanceAngles;\\nattribute vec2 instancePixelOffsets;\\nattribute float instanceLineWidths;\\nattribute vec4 instanceFillColors;\\nattribute vec4 instanceLineColors;\\nattribute vec3 instancePickingColors;\\n\\nuniform bool billboard;\\nuniform float opacity;\\nuniform float sizeScale;\\nuniform float sizeMinPixels;\\nuniform float sizeMaxPixels;\\nuniform vec4 padding;\\nuniform int sizeUnits;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying float vLineWidth;\\nvarying vec2 uv;\\nvarying vec2 dimensions;\\n\\nvec2 rotate_by_angle(vec2 vertex, float angle) {\\n float angle_radian = radians(angle);\\n float cos_angle = cos(angle_radian);\\n float sin_angle = sin(angle_radian);\\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\\n return rotationMatrix * vertex;\\n}\\n\\nvoid main(void) {\\n geometry.worldPosition = instancePositions;\\n geometry.uv = positions;\\n geometry.pickingColor = instancePickingColors;\\n uv = positions;\\n vLineWidth = instanceLineWidths;\\n float sizePixels = clamp(\\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits),\\n sizeMinPixels, sizeMaxPixels\\n );\\n\\n dimensions = instanceRects.zw * sizePixels + padding.xy + padding.zw;\\n\\n vec2 pixelOffset = (positions * instanceRects.zw + instanceRects.xy) * sizePixels + mix(-padding.xy, padding.zw, positions);\\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles);\\n pixelOffset += instancePixelOffsets;\\n pixelOffset.y *= -1.0;\\n\\n if (billboard) {\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n vec3 offset = vec3(pixelOffset, 0.0);\\n DECKGL_FILTER_SIZE(offset, geometry);\\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\\n } else {\\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\\n DECKGL_FILTER_SIZE(offset_common, geometry);\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position);\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n }\\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\\n DECKGL_FILTER_COLOR(vFillColor, geometry);\\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\\n DECKGL_FILTER_COLOR(vLineColor, geometry);\\n}\\n\";\n\n});\n\nparcelRegister(\"3ih6r\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $266051d5b1c39edb$export$2e2bcd8739ae039; });\nvar $266051d5b1c39edb$export$2e2bcd8739ae039 = \"#define SHADER_NAME text-background-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform bool stroked;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying float vLineWidth;\\nvarying vec2 uv;\\nvarying vec2 dimensions;\\n\\nvoid main(void) {\\n geometry.uv = uv;\\n\\n vec2 pixelPosition = uv * dimensions;\\n if (stroked) {\\n float distToEdge = min(\\n min(pixelPosition.x, dimensions.x - pixelPosition.x),\\n min(pixelPosition.y, dimensions.y - pixelPosition.y)\\n );\\n float isBorder = smoothedge(distToEdge, vLineWidth);\\n gl_FragColor = mix(vFillColor, vLineColor, isBorder);\\n } else {\\n gl_FragColor = vFillColor;\\n }\\n\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n\n});\n\n\n\n\nparcelRegister(\"hf80Y\", function(module, exports) {\n\n$parcel$export(module.exports, \"getGeojsonFeatures\", function () { return $c8da0df440d93107$export$216216e94774cbbf; });\n$parcel$export(module.exports, \"separateGeojsonFeatures\", function () { return $c8da0df440d93107$export$990901b6a075c7ff; });\n\nvar $4VQgq = parcelRequire(\"4VQgq\");\nfunction $c8da0df440d93107$export$216216e94774cbbf(geojson) {\n if (Array.isArray(geojson)) return geojson;\n (0, $4VQgq.default).assert(geojson.type, \"GeoJSON does not have type\");\n switch(geojson.type){\n case \"Feature\":\n return [\n geojson\n ];\n case \"FeatureCollection\":\n (0, $4VQgq.default).assert(Array.isArray(geojson.features), \"GeoJSON does not have features array\");\n return geojson.features;\n default:\n return [\n {\n geometry: geojson\n }\n ];\n }\n}\nfunction $c8da0df440d93107$export$990901b6a075c7ff(features, wrapFeature, dataRange = {}) {\n const separated = {\n pointFeatures: [],\n lineFeatures: [],\n polygonFeatures: [],\n polygonOutlineFeatures: []\n };\n const { startRow: startRow = 0, endRow: endRow = features.length } = dataRange;\n for(let featureIndex = startRow; featureIndex < endRow; featureIndex++){\n const feature = features[featureIndex];\n const { geometry: geometry } = feature;\n if (!geometry) continue;\n if (geometry.type === \"GeometryCollection\") {\n (0, $4VQgq.default).assert(Array.isArray(geometry.geometries), \"GeoJSON does not have geometries array\");\n const { geometries: geometries } = geometry;\n for(let i = 0; i < geometries.length; i++){\n const subGeometry = geometries[i];\n $c8da0df440d93107$var$separateGeometry(subGeometry, separated, wrapFeature, feature, featureIndex);\n }\n } else $c8da0df440d93107$var$separateGeometry(geometry, separated, wrapFeature, feature, featureIndex);\n }\n return separated;\n}\nfunction $c8da0df440d93107$var$separateGeometry(geometry, separated, wrapFeature, sourceFeature, sourceFeatureIndex) {\n const { type: type, coordinates: coordinates } = geometry;\n const { pointFeatures: pointFeatures, lineFeatures: lineFeatures, polygonFeatures: polygonFeatures, polygonOutlineFeatures: polygonOutlineFeatures } = separated;\n if (!$c8da0df440d93107$export$29eaf29d02a6830c(type, coordinates)) {\n (0, $4VQgq.default).warn(\"\".concat(type, \" coordinates are malformed\"))();\n return;\n }\n switch(type){\n case \"Point\":\n pointFeatures.push(wrapFeature({\n geometry: geometry\n }, sourceFeature, sourceFeatureIndex));\n break;\n case \"MultiPoint\":\n coordinates.forEach((point)=>{\n pointFeatures.push(wrapFeature({\n geometry: {\n type: \"Point\",\n coordinates: point\n }\n }, sourceFeature, sourceFeatureIndex));\n });\n break;\n case \"LineString\":\n lineFeatures.push(wrapFeature({\n geometry: geometry\n }, sourceFeature, sourceFeatureIndex));\n break;\n case \"MultiLineString\":\n coordinates.forEach((path)=>{\n lineFeatures.push(wrapFeature({\n geometry: {\n type: \"LineString\",\n coordinates: path\n }\n }, sourceFeature, sourceFeatureIndex));\n });\n break;\n case \"Polygon\":\n polygonFeatures.push(wrapFeature({\n geometry: geometry\n }, sourceFeature, sourceFeatureIndex));\n coordinates.forEach((path)=>{\n polygonOutlineFeatures.push(wrapFeature({\n geometry: {\n type: \"LineString\",\n coordinates: path\n }\n }, sourceFeature, sourceFeatureIndex));\n });\n break;\n case \"MultiPolygon\":\n coordinates.forEach((polygon)=>{\n polygonFeatures.push(wrapFeature({\n geometry: {\n type: \"Polygon\",\n coordinates: polygon\n }\n }, sourceFeature, sourceFeatureIndex));\n polygon.forEach((path)=>{\n polygonOutlineFeatures.push(wrapFeature({\n geometry: {\n type: \"LineString\",\n coordinates: path\n }\n }, sourceFeature, sourceFeatureIndex));\n });\n });\n break;\n default:\n }\n}\nconst $c8da0df440d93107$var$COORDINATE_NEST_LEVEL = {\n Point: 1,\n MultiPoint: 2,\n LineString: 2,\n MultiLineString: 3,\n Polygon: 3,\n MultiPolygon: 4\n};\nfunction $c8da0df440d93107$export$29eaf29d02a6830c(type, coordinates) {\n let nestLevel = $c8da0df440d93107$var$COORDINATE_NEST_LEVEL[type];\n (0, $4VQgq.default).assert(nestLevel, \"Unknown GeoJSON type \".concat(type));\n while(coordinates && --nestLevel > 0)coordinates = coordinates[0];\n return coordinates && Number.isFinite(coordinates[0]);\n}\n\n});\n\nparcelRegister(\"8rldy\", function(module, exports) {\n\n$parcel$export(module.exports, \"createLayerPropsFromFeatures\", function () { return $62514db782e6c447$export$3dfb2307ba5294fe; });\n$parcel$export(module.exports, \"createLayerPropsFromBinary\", function () { return $62514db782e6c447$export$4b887125b3ad5b1b; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $cyxHD = parcelRequire(\"cyxHD\");\nfunction $62514db782e6c447$var$createEmptyLayerProps() {\n return {\n points: {},\n lines: {},\n polygons: {},\n polygonsOutline: {}\n };\n}\nfunction $62514db782e6c447$var$getCoordinates(f) {\n return f.geometry.coordinates;\n}\nfunction $62514db782e6c447$export$3dfb2307ba5294fe(features, featuresDiff) {\n const layerProps = $62514db782e6c447$var$createEmptyLayerProps();\n const { pointFeatures: pointFeatures, lineFeatures: lineFeatures, polygonFeatures: polygonFeatures, polygonOutlineFeatures: polygonOutlineFeatures } = features;\n layerProps.points.data = pointFeatures;\n layerProps.points._dataDiff = featuresDiff.pointFeatures && (()=>featuresDiff.pointFeatures);\n layerProps.points.getPosition = $62514db782e6c447$var$getCoordinates;\n layerProps.lines.data = lineFeatures;\n layerProps.lines._dataDiff = featuresDiff.lineFeatures && (()=>featuresDiff.lineFeatures);\n layerProps.lines.getPath = $62514db782e6c447$var$getCoordinates;\n layerProps.polygons.data = polygonFeatures;\n layerProps.polygons._dataDiff = featuresDiff.polygonFeatures && (()=>featuresDiff.polygonFeatures);\n layerProps.polygons.getPolygon = $62514db782e6c447$var$getCoordinates;\n layerProps.polygonsOutline.data = polygonOutlineFeatures;\n layerProps.polygonsOutline._dataDiff = featuresDiff.polygonOutlineFeatures && (()=>featuresDiff.polygonOutlineFeatures);\n layerProps.polygonsOutline.getPath = $62514db782e6c447$var$getCoordinates;\n return layerProps;\n}\nfunction $62514db782e6c447$export$4b887125b3ad5b1b(geojsonBinary, encodePickingColor) {\n const layerProps = $62514db782e6c447$var$createEmptyLayerProps();\n const { points: points, lines: lines, polygons: polygons } = geojsonBinary;\n const customPickingColors = (0, $cyxHD.calculatePickingColors)(geojsonBinary, encodePickingColor);\n layerProps.points.data = {\n length: points.positions.value.length / points.positions.size,\n attributes: (0, $edHbI._)((0, $2QP2i._)({}, points.attributes), {\n getPosition: points.positions,\n instancePickingColors: {\n size: 3,\n value: customPickingColors.points\n }\n }),\n properties: points.properties,\n numericProps: points.numericProps,\n featureIds: points.featureIds\n };\n layerProps.lines.data = {\n length: lines.pathIndices.value.length - 1,\n startIndices: lines.pathIndices.value,\n attributes: (0, $edHbI._)((0, $2QP2i._)({}, lines.attributes), {\n getPath: lines.positions,\n instancePickingColors: {\n size: 3,\n value: customPickingColors.lines\n }\n }),\n properties: lines.properties,\n numericProps: lines.numericProps,\n featureIds: lines.featureIds\n };\n layerProps.lines._pathType = \"open\";\n layerProps.polygons.data = {\n length: polygons.polygonIndices.value.length - 1,\n startIndices: polygons.polygonIndices.value,\n attributes: (0, $edHbI._)((0, $2QP2i._)({}, polygons.attributes), {\n getPolygon: polygons.positions,\n pickingColors: {\n size: 3,\n value: customPickingColors.polygons\n }\n }),\n properties: polygons.properties,\n numericProps: polygons.numericProps,\n featureIds: polygons.featureIds\n };\n layerProps.polygons._normalize = false;\n if (polygons.triangles) layerProps.polygons.data.attributes.indices = polygons.triangles.value;\n layerProps.polygonsOutline.data = {\n length: polygons.primitivePolygonIndices.value.length - 1,\n startIndices: polygons.primitivePolygonIndices.value,\n attributes: (0, $edHbI._)((0, $2QP2i._)({}, polygons.attributes), {\n getPath: polygons.positions,\n instancePickingColors: {\n size: 3,\n value: customPickingColors.polygons\n }\n }),\n properties: polygons.properties,\n numericProps: polygons.numericProps,\n featureIds: polygons.featureIds\n };\n layerProps.polygonsOutline._pathType = \"open\";\n return layerProps;\n}\n\n});\n\n\nparcelRegister(\"cQSdn\", function(module, exports) {\n\"use strict\";\nfunction $95b465442bbdc135$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $95b465442bbdc135$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $95b465442bbdc135$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $95b465442bbdc135$var$_typeof(obj);\n}\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(module.exports, \"GeoJsonEditMode\", {\n enumerable: true,\n get: function get() {\n return $1tPZO.GeoJsonEditMode;\n }\n});\nObject.defineProperty(module.exports, \"ModifyMode\", {\n enumerable: true,\n get: function get() {\n return $gFC9Z.ModifyMode;\n }\n});\nObject.defineProperty(module.exports, \"ResizeCircleMode\", {\n enumerable: true,\n get: function get() {\n return $dm5qM.ResizeCircleMode;\n }\n});\nObject.defineProperty(module.exports, \"TranslateMode\", {\n enumerable: true,\n get: function get() {\n return $lWzrG.TranslateMode;\n }\n});\nObject.defineProperty(module.exports, \"ScaleMode\", {\n enumerable: true,\n get: function get() {\n return $ljwRq.ScaleMode;\n }\n});\nObject.defineProperty(module.exports, \"RotateMode\", {\n enumerable: true,\n get: function get() {\n return $cjd37.RotateMode;\n }\n});\nObject.defineProperty(module.exports, \"DuplicateMode\", {\n enumerable: true,\n get: function get() {\n return $44vWS.DuplicateMode;\n }\n});\nObject.defineProperty(module.exports, \"ExtendLineStringMode\", {\n enumerable: true,\n get: function get() {\n return $iS49Q.ExtendLineStringMode;\n }\n});\nObject.defineProperty(module.exports, \"SplitPolygonMode\", {\n enumerable: true,\n get: function get() {\n return $jW3FH.SplitPolygonMode;\n }\n});\nObject.defineProperty(module.exports, \"ExtrudeMode\", {\n enumerable: true,\n get: function get() {\n return $8Gejd.ExtrudeMode;\n }\n});\nObject.defineProperty(module.exports, \"ElevationMode\", {\n enumerable: true,\n get: function get() {\n return $bmi4Q.ElevationMode;\n }\n});\nObject.defineProperty(module.exports, \"TransformMode\", {\n enumerable: true,\n get: function get() {\n return $8dTIP.TransformMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawPointMode\", {\n enumerable: true,\n get: function get() {\n return $8Vy0o.DrawPointMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawLineStringMode\", {\n enumerable: true,\n get: function get() {\n return $4qOqT.DrawLineStringMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawPolygonMode\", {\n enumerable: true,\n get: function get() {\n return $fVfme.DrawPolygonMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawRectangleMode\", {\n enumerable: true,\n get: function get() {\n return $4pNaf.DrawRectangleMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawSquareMode\", {\n enumerable: true,\n get: function get() {\n return $87lGF.DrawSquareMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawRectangleFromCenterMode\", {\n enumerable: true,\n get: function get() {\n return $clLbb.DrawRectangleFromCenterMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawSquareFromCenterMode\", {\n enumerable: true,\n get: function get() {\n return $iMVab.DrawSquareFromCenterMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawCircleByDiameterMode\", {\n enumerable: true,\n get: function get() {\n return $aS0fb.DrawCircleByDiameterMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawCircleFromCenterMode\", {\n enumerable: true,\n get: function get() {\n return $ca4GA.DrawCircleFromCenterMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawEllipseByBoundingBoxMode\", {\n enumerable: true,\n get: function get() {\n return $7sSbx.DrawEllipseByBoundingBoxMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawEllipseUsingThreePointsMode\", {\n enumerable: true,\n get: function get() {\n return $eypkN.DrawEllipseUsingThreePointsMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawRectangleUsingThreePointsMode\", {\n enumerable: true,\n get: function get() {\n return $9wvMY.DrawRectangleUsingThreePointsMode;\n }\n});\nObject.defineProperty(module.exports, \"Draw90DegreePolygonMode\", {\n enumerable: true,\n get: function get() {\n return $9qPDu.Draw90DegreePolygonMode;\n }\n});\nObject.defineProperty(module.exports, \"DrawPolygonByDraggingMode\", {\n enumerable: true,\n get: function get() {\n return $kfRKf.DrawPolygonByDraggingMode;\n }\n});\nObject.defineProperty(module.exports, \"ImmutableFeatureCollection\", {\n enumerable: true,\n get: function get() {\n return $eJgQU.ImmutableFeatureCollection;\n }\n});\nObject.defineProperty(module.exports, \"ViewMode\", {\n enumerable: true,\n get: function get() {\n return $ksxR2.ViewMode;\n }\n});\nObject.defineProperty(module.exports, \"MeasureDistanceMode\", {\n enumerable: true,\n get: function get() {\n return $hva1l.MeasureDistanceMode;\n }\n});\nObject.defineProperty(module.exports, \"MeasureAreaMode\", {\n enumerable: true,\n get: function get() {\n return $dZhwn.MeasureAreaMode;\n }\n});\nObject.defineProperty(module.exports, \"MeasureAngleMode\", {\n enumerable: true,\n get: function get() {\n return $h2dZX.MeasureAngleMode;\n }\n});\nObject.defineProperty(module.exports, \"CompositeMode\", {\n enumerable: true,\n get: function get() {\n return $6J4Ij.CompositeMode;\n }\n});\nObject.defineProperty(module.exports, \"SnappableMode\", {\n enumerable: true,\n get: function get() {\n return $enK8I.SnappableMode;\n }\n});\nObject.defineProperty(module.exports, \"_memoize\", {\n enumerable: true,\n get: function get() {\n return $95b465442bbdc135$var$_memoize[\"default\"];\n }\n});\nmodule.exports.utils = void 0;\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\n\nvar $gFC9Z = parcelRequire(\"gFC9Z\");\n\nvar $dm5qM = parcelRequire(\"dm5qM\");\n\nvar $lWzrG = parcelRequire(\"lWzrG\");\n\nvar $ljwRq = parcelRequire(\"ljwRq\");\n\nvar $cjd37 = parcelRequire(\"cjd37\");\n\nvar $44vWS = parcelRequire(\"44vWS\");\n\nvar $iS49Q = parcelRequire(\"iS49Q\");\n\nvar $jW3FH = parcelRequire(\"jW3FH\");\n\nvar $8Gejd = parcelRequire(\"8Gejd\");\n\nvar $bmi4Q = parcelRequire(\"bmi4Q\");\n\nvar $8dTIP = parcelRequire(\"8dTIP\");\n\nvar $8Vy0o = parcelRequire(\"8Vy0o\");\n\nvar $4qOqT = parcelRequire(\"4qOqT\");\n\nvar $fVfme = parcelRequire(\"fVfme\");\n\nvar $4pNaf = parcelRequire(\"4pNaf\");\n\nvar $87lGF = parcelRequire(\"87lGF\");\n\nvar $clLbb = parcelRequire(\"clLbb\");\n\nvar $iMVab = parcelRequire(\"iMVab\");\n\nvar $aS0fb = parcelRequire(\"aS0fb\");\n\nvar $ca4GA = parcelRequire(\"ca4GA\");\n\nvar $7sSbx = parcelRequire(\"7sSbx\");\n\nvar $eypkN = parcelRequire(\"eypkN\");\n\nvar $9wvMY = parcelRequire(\"9wvMY\");\n\nvar $9qPDu = parcelRequire(\"9qPDu\");\n\nvar $kfRKf = parcelRequire(\"kfRKf\");\n\nvar $eJgQU = parcelRequire(\"eJgQU\");\n\nvar $ksxR2 = parcelRequire(\"ksxR2\");\n\nvar $hva1l = parcelRequire(\"hva1l\");\n\nvar $dZhwn = parcelRequire(\"dZhwn\");\n\nvar $h2dZX = parcelRequire(\"h2dZX\");\n\nvar $6J4Ij = parcelRequire(\"6J4Ij\");\n\nvar $enK8I = parcelRequire(\"enK8I\");\n\nvar $95b465442bbdc135$var$_memoize = $95b465442bbdc135$var$_interopRequireDefault((parcelRequire(\"7zWhR\")));\n\nvar $95b465442bbdc135$var$utils = $95b465442bbdc135$var$_interopRequireWildcard((parcelRequire(\"hs5Hv\")));\nmodule.exports.utils = $95b465442bbdc135$var$utils;\nfunction $95b465442bbdc135$var$_getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n $95b465442bbdc135$var$_getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n return cache;\n}\nfunction $95b465442bbdc135$var$_interopRequireWildcard(obj) {\n if (obj && obj.__esModule) return obj;\n if (obj === null || $95b465442bbdc135$var$_typeof(obj) !== \"object\" && typeof obj !== \"function\") return {\n \"default\": obj\n };\n var cache = $95b465442bbdc135$var$_getRequireWildcardCache();\n if (cache && cache.has(obj)) return cache.get(obj);\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj)if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);\n else newObj[key] = obj[key];\n }\n newObj[\"default\"] = obj;\n if (cache) cache.set(obj, newObj);\n return newObj;\n}\nfunction $95b465442bbdc135$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\n});\nparcelRegister(\"1tPZO\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.getIntermediatePosition = $1140d53340a523c6$var$getIntermediatePosition;\nmodule.exports.GeoJsonEditMode = void 0;\n\nvar $1140d53340a523c6$var$_union = $1140d53340a523c6$var$_interopRequireDefault((parcelRequire(\"3lP9u\")));\n\nvar $1140d53340a523c6$var$_difference = $1140d53340a523c6$var$_interopRequireDefault((parcelRequire(\"gZv4c\")));\n\nvar $1140d53340a523c6$var$_intersect = $1140d53340a523c6$var$_interopRequireDefault((parcelRequire(\"bQG2Y\")));\n\nvar $1140d53340a523c6$var$_rewind = $1140d53340a523c6$var$_interopRequireDefault((parcelRequire(\"6Jlxv\")));\n\nvar $hs5Hv = parcelRequire(\"hs5Hv\");\n\nvar $eJgQU = parcelRequire(\"eJgQU\");\nfunction $1140d53340a523c6$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $1140d53340a523c6$var$_createForOfIteratorHelper(o) {\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = $1140d53340a523c6$var$_unsupportedIterableToArray(o))) {\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var it, normalCompletion = true, didErr = false, err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally{\n if (didErr) throw err;\n }\n }\n };\n}\nfunction $1140d53340a523c6$var$_toConsumableArray(arr) {\n return $1140d53340a523c6$var$_arrayWithoutHoles(arr) || $1140d53340a523c6$var$_iterableToArray(arr) || $1140d53340a523c6$var$_unsupportedIterableToArray(arr) || $1140d53340a523c6$var$_nonIterableSpread();\n}\nfunction $1140d53340a523c6$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $1140d53340a523c6$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $1140d53340a523c6$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $1140d53340a523c6$var$_arrayLikeToArray(o, minLen);\n}\nfunction $1140d53340a523c6$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $1140d53340a523c6$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $1140d53340a523c6$var$_arrayLikeToArray(arr);\n}\nfunction $1140d53340a523c6$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $1140d53340a523c6$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $1140d53340a523c6$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $1140d53340a523c6$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $1140d53340a523c6$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $1140d53340a523c6$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $1140d53340a523c6$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $1140d53340a523c6$var$DEFAULT_GUIDES = {\n type: \"FeatureCollection\",\n features: []\n};\nvar $1140d53340a523c6$var$DEFAULT_TOOLTIPS = []; // Main interface for `EditMode`s that edit GeoJSON\nvar $1140d53340a523c6$var$GeoJsonEditMode = /*#__PURE__*/ function() {\n function GeoJsonEditMode() {\n $1140d53340a523c6$var$_classCallCheck(this, GeoJsonEditMode);\n $1140d53340a523c6$var$_defineProperty(this, \"_clickSequence\", []);\n }\n $1140d53340a523c6$var$_createClass(GeoJsonEditMode, [\n {\n key: \"getGuides\",\n value: function getGuides(props) {\n return $1140d53340a523c6$var$DEFAULT_GUIDES;\n }\n },\n {\n key: \"getTooltips\",\n value: function getTooltips(props) {\n return $1140d53340a523c6$var$DEFAULT_TOOLTIPS;\n }\n },\n {\n key: \"getSelectedFeature\",\n value: function getSelectedFeature(props) {\n if (props.selectedIndexes.length === 1) return props.data.features[props.selectedIndexes[0]];\n return null;\n }\n },\n {\n key: \"getSelectedGeometry\",\n value: function getSelectedGeometry(props) {\n var feature = this.getSelectedFeature(props);\n if (feature) return feature.geometry;\n return null;\n }\n },\n {\n key: \"getSelectedFeaturesAsFeatureCollection\",\n value: function getSelectedFeaturesAsFeatureCollection(props) {\n var features = props.data.features;\n var selectedFeatures = props.selectedIndexes.map(function(selectedIndex) {\n return features[selectedIndex];\n });\n return {\n type: \"FeatureCollection\",\n features: selectedFeatures\n };\n }\n },\n {\n key: \"getClickSequence\",\n value: function getClickSequence() {\n return this._clickSequence;\n }\n },\n {\n key: \"addClickSequence\",\n value: function addClickSequence(_ref) {\n var mapCoords = _ref.mapCoords;\n this._clickSequence.push(mapCoords);\n }\n },\n {\n key: \"resetClickSequence\",\n value: function resetClickSequence() {\n this._clickSequence = [];\n }\n },\n {\n key: \"getTentativeGuide\",\n value: function getTentativeGuide(props) {\n var guides = this.getGuides(props); // @ts-ignore\n return guides.features.find(function(f) {\n return f.properties && f.properties.guideType === \"tentative\";\n });\n }\n },\n {\n key: \"isSelectionPicked\",\n value: function isSelectionPicked(picks, props) {\n if (!picks.length) return false;\n var pickedFeatures = (0, $hs5Hv.getNonGuidePicks)(picks).map(function(_ref2) {\n var index = _ref2.index;\n return index;\n });\n var pickedHandles = (0, $hs5Hv.getPickedEditHandles)(picks).map(function(_ref3) {\n var properties = _ref3.properties;\n return properties.featureIndex;\n });\n var pickedIndexes = new Set([].concat($1140d53340a523c6$var$_toConsumableArray(pickedFeatures), $1140d53340a523c6$var$_toConsumableArray(pickedHandles)));\n return props.selectedIndexes.some(function(index) {\n return pickedIndexes.has(index);\n });\n }\n },\n {\n key: \"rewindPolygon\",\n value: function rewindPolygon(feature) {\n var geometry = feature.geometry;\n var isPolygonal = geometry.type === \"Polygon\" || geometry.type === \"MultiPolygon\";\n if (isPolygonal) // @ts-ignore\n return (0, $1140d53340a523c6$var$_rewind[\"default\"])(feature);\n return feature;\n }\n },\n {\n key: \"getAddFeatureAction\",\n value: function getAddFeatureAction(featureOrGeometry, features) {\n // Unsure why flow can't deal with Geometry type, but there I fixed it\n var featureOrGeometryAsAny = featureOrGeometry;\n var feature = featureOrGeometryAsAny.type === \"Feature\" ? featureOrGeometryAsAny : {\n type: \"Feature\",\n properties: {},\n geometry: featureOrGeometryAsAny\n };\n var rewindFeature = this.rewindPolygon(feature);\n var updatedData = new $eJgQU.ImmutableFeatureCollection(features).addFeature(rewindFeature).getObject();\n return {\n updatedData: updatedData,\n editType: \"addFeature\",\n editContext: {\n featureIndexes: [\n updatedData.features.length - 1\n ]\n }\n };\n }\n },\n {\n key: \"getAddManyFeaturesAction\",\n value: function getAddManyFeaturesAction(_ref4, features) {\n var featuresToAdd = _ref4.features;\n var updatedData = new $eJgQU.ImmutableFeatureCollection(features);\n var initialIndex = updatedData.getObject().features.length;\n var updatedIndexes = [];\n var _iterator = $1140d53340a523c6$var$_createForOfIteratorHelper(featuresToAdd), _step;\n try {\n for(_iterator.s(); !(_step = _iterator.n()).done;){\n var feature = _step.value;\n var properties = feature.properties, geometry = feature.geometry;\n var geometryAsAny = geometry;\n updatedData = updatedData.addFeature({\n type: \"Feature\",\n properties: properties,\n geometry: geometryAsAny\n });\n updatedIndexes.push(initialIndex + updatedIndexes.length);\n }\n } catch (err) {\n _iterator.e(err);\n } finally{\n _iterator.f();\n }\n return {\n updatedData: updatedData.getObject(),\n editType: \"addFeature\",\n editContext: {\n featureIndexes: updatedIndexes\n }\n };\n }\n },\n {\n key: \"getAddFeatureOrBooleanPolygonAction\",\n value: function getAddFeatureOrBooleanPolygonAction(featureOrGeometry, props) {\n var featureOrGeometryAsAny = featureOrGeometry;\n var selectedFeature = this.getSelectedFeature(props);\n var modeConfig = props.modeConfig;\n if (modeConfig && modeConfig.booleanOperation) {\n if (!selectedFeature || selectedFeature.geometry.type !== \"Polygon\" && selectedFeature.geometry.type !== \"MultiPolygon\") {\n // eslint-disable-next-line no-console,no-undef\n console.warn(\"booleanOperation only supported for single Polygon or MultiPolygon selection\");\n return null;\n }\n var feature = featureOrGeometryAsAny.type === \"Feature\" ? featureOrGeometryAsAny : {\n type: \"Feature\",\n geometry: featureOrGeometryAsAny\n };\n var updatedGeometry;\n if (modeConfig.booleanOperation === \"union\") updatedGeometry = (0, $1140d53340a523c6$var$_union[\"default\"])(selectedFeature, feature);\n else if (modeConfig.booleanOperation === \"difference\") // @ts-ignore\n updatedGeometry = (0, $1140d53340a523c6$var$_difference[\"default\"])(selectedFeature, feature);\n else if (modeConfig.booleanOperation === \"intersection\") // @ts-ignore\n updatedGeometry = (0, $1140d53340a523c6$var$_intersect[\"default\"])(selectedFeature, feature);\n else {\n // eslint-disable-next-line no-console,no-undef\n console.warn(\"Invalid booleanOperation \".concat(modeConfig.booleanOperation));\n return null;\n }\n if (!updatedGeometry) {\n // eslint-disable-next-line no-console,no-undef\n console.warn(\"Canceling edit. Boolean operation erased entire polygon.\");\n return null;\n }\n var featureIndex = props.selectedIndexes[0];\n var updatedData = new $eJgQU.ImmutableFeatureCollection(props.data).replaceGeometry(featureIndex, updatedGeometry.geometry).getObject();\n var editAction = {\n updatedData: updatedData,\n editType: \"unionGeometry\",\n editContext: {\n featureIndexes: [\n featureIndex\n ]\n }\n };\n return editAction;\n }\n return this.getAddFeatureAction(featureOrGeometry, props.data);\n }\n },\n {\n key: \"createTentativeFeature\",\n value: function createTentativeFeature(props) {\n return null;\n }\n },\n {\n key: \"handleClick\",\n value: function handleClick(event, props) {}\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n var tentativeFeature = this.createTentativeFeature(props);\n if (tentativeFeature) props.onEdit({\n updatedData: props.data,\n editType: \"updateTentativeFeature\",\n editContext: {\n feature: tentativeFeature\n }\n });\n }\n },\n {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {}\n },\n {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {}\n },\n {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {}\n },\n {\n key: \"handleKeyUp\",\n value: function handleKeyUp(event, props) {\n if (event.key === \"Escape\") {\n this.resetClickSequence();\n props.onEdit({\n // Because the new drawing feature is dropped, so the data will keep as the same.\n updatedData: props.data,\n editType: \"cancelFeature\",\n editContext: {}\n });\n }\n }\n }\n ]);\n return GeoJsonEditMode;\n}();\nmodule.exports.GeoJsonEditMode = $1140d53340a523c6$var$GeoJsonEditMode;\nfunction $1140d53340a523c6$var$getIntermediatePosition(position1, position2) {\n var intermediatePosition = [\n (position1[0] + position2[0]) / 2.0,\n (position1[1] + position2[1]) / 2.0\n ]; // @ts-ignore\n return intermediatePosition;\n}\n\n});\nparcelRegister(\"3lP9u\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $ahY8G = parcelRequire(\"ahY8G\");\n\nvar $8abqV = parcelRequire(\"8abqV\");\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n/**\r\n * Takes two {@link (Multi)Polygon(s)} and returns a combined polygon. If the input polygons are not contiguous, this function returns a {@link MultiPolygon} feature.\r\n *\r\n * @name union\r\n * @param {Feature} polygon1 input Polygon feature\r\n * @param {Feature} polygon2 Polygon feature to difference from polygon1\r\n * @param {Object} [options={}] Optional Parameters\r\n * @param {Object} [options.properties={}] Translate Properties to output Feature\r\n * @returns {Feature<(Polygon|MultiPolygon)>} a combined {@link Polygon} or {@link MultiPolygon} feature\r\n * @example\r\n * var poly1 = turf.polygon([[\r\n * [-82.574787, 35.594087],\r\n * [-82.574787, 35.615581],\r\n * [-82.545261, 35.615581],\r\n * [-82.545261, 35.594087],\r\n * [-82.574787, 35.594087]\r\n * ]], {\"fill\": \"#0f0\"});\r\n * var poly2 = turf.polygon([[\r\n * [-82.560024, 35.585153],\r\n * [-82.560024, 35.602602],\r\n * [-82.52964, 35.602602],\r\n * [-82.52964, 35.585153],\r\n * [-82.560024, 35.585153]\r\n * ]], {\"fill\": \"#00f\"});\r\n *\r\n * var union = turf.union(poly1, poly2);\r\n *\r\n * //addToMap\r\n * var addToMap = [poly1, poly2, union];\r\n */ function $270b02fea83b1911$var$union(polygon1, polygon2, options) {\n if (options === void 0) options = {};\n var coords1 = $8abqV.getGeom(polygon1).coordinates;\n var coords2 = $8abqV.getGeom(polygon2).coordinates;\n var unioned = $ahY8G.union(coords1, coords2);\n if (unioned.length === 0) return null;\n if (unioned.length === 1) return $7GKQS.polygon(unioned[0], options.properties);\n else return $7GKQS.multiPolygon(unioned, options.properties);\n}\nmodule.exports.default = $270b02fea83b1911$var$union;\n\n});\n\nparcelRegister(\"bQG2Y\", function(module, exports) {\n\"use strict\";\nvar $8a052aabd7f0cd40$var$__importStar = module.exports && module.exports.__importStar || function(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) {\n for(var k in mod)if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n }\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $8abqV = parcelRequire(\"8abqV\");\n\nvar $8a052aabd7f0cd40$var$martinez = $8a052aabd7f0cd40$var$__importStar((parcelRequire(\"ahY8G\")));\n/**\r\n * Takes two {@link Polygon|polygon} or {@link MultiPolygon|multi-polygon} geometries and\r\n * finds their polygonal intersection. If they don't intersect, returns null.\r\n *\r\n * @name intersect\r\n * @param {Feature} poly1 the first polygon or multipolygon\r\n * @param {Feature} poly2 the second polygon or multipolygon\r\n * @param {Object} [options={}] Optional Parameters\r\n * @param {Object} [options.properties={}] Translate GeoJSON Properties to Feature\r\n * @returns {Feature|null} returns a feature representing the area they share (either a {@link Polygon} or\r\n * {@link MultiPolygon}). If they do not share any area, returns `null`.\r\n * @example\r\n * var poly1 = turf.polygon([[\r\n * [-122.801742, 45.48565],\r\n * [-122.801742, 45.60491],\r\n * [-122.584762, 45.60491],\r\n * [-122.584762, 45.48565],\r\n * [-122.801742, 45.48565]\r\n * ]]);\r\n *\r\n * var poly2 = turf.polygon([[\r\n * [-122.520217, 45.535693],\r\n * [-122.64038, 45.553967],\r\n * [-122.720031, 45.526554],\r\n * [-122.669906, 45.507309],\r\n * [-122.723464, 45.446643],\r\n * [-122.532577, 45.408574],\r\n * [-122.487258, 45.477466],\r\n * [-122.520217, 45.535693]\r\n * ]]);\r\n *\r\n * var intersection = turf.intersect(poly1, poly2);\r\n *\r\n * //addToMap\r\n * var addToMap = [poly1, poly2, intersection];\r\n */ function $8a052aabd7f0cd40$var$intersect(poly1, poly2, options) {\n if (options === void 0) options = {};\n var geom1 = $8abqV.getGeom(poly1);\n var geom2 = $8abqV.getGeom(poly2);\n if (geom1.type === \"Polygon\" && geom2.type === \"Polygon\") {\n var intersection = $8a052aabd7f0cd40$var$martinez.intersection(geom1.coordinates, geom2.coordinates);\n if (intersection === null || intersection.length === 0) return null;\n if (intersection.length === 1) {\n var start = intersection[0][0][0];\n var end = intersection[0][0][intersection[0][0].length - 1];\n if (start[0] === end[0] && start[1] === end[1]) return $7GKQS.polygon(intersection[0], options.properties);\n return null;\n }\n return $7GKQS.multiPolygon(intersection, options.properties);\n } else if (geom1.type === \"MultiPolygon\") {\n var resultCoords = [];\n // iterate through the polygon and run intersect with each part, adding to the resultCoords.\n for(var _i = 0, _a = geom1.coordinates; _i < _a.length; _i++){\n var coords = _a[_i];\n var subGeom = $8abqV.getGeom($7GKQS.polygon(coords));\n var subIntersection = $8a052aabd7f0cd40$var$intersect(subGeom, geom2);\n if (subIntersection) {\n var subIntGeom = $8abqV.getGeom(subIntersection);\n if (subIntGeom.type === \"Polygon\") resultCoords.push(subIntGeom.coordinates);\n else if (subIntGeom.type === \"MultiPolygon\") resultCoords = resultCoords.concat(subIntGeom.coordinates);\n else throw new Error(\"intersection is invalid\");\n }\n }\n // Make a polygon with the result\n if (resultCoords.length === 0) return null;\n if (resultCoords.length === 1) return $7GKQS.polygon(resultCoords[0], options.properties);\n else return $7GKQS.multiPolygon(resultCoords, options.properties);\n } else if (geom2.type === \"MultiPolygon\") // geom1 is a polygon and geom2 a multiPolygon,\n // put the multiPolygon first and fallback to the previous case.\n return $8a052aabd7f0cd40$var$intersect(geom2, geom1);\n else // handle invalid geometry types\n throw new Error(\"poly1 and poly2 must be either polygons or multiPolygons\");\n}\nmodule.exports.default = $8a052aabd7f0cd40$var$intersect;\n\n});\n\nparcelRegister(\"6Jlxv\", function(module, exports) {\n\n$parcel$defineInteropFlag(module.exports);\n\n$parcel$export(module.exports, \"default\", function () { return $4e67a75176238153$export$2e2bcd8739ae039; });\n\nvar $asTyQ = parcelRequire(\"asTyQ\");\n\nvar $54sVM = parcelRequire(\"54sVM\");\n\nvar $f8xmd = parcelRequire(\"f8xmd\");\n\nvar $gtJiw = parcelRequire(\"gtJiw\");\n\nvar $bcb8J = parcelRequire(\"bcb8J\");\n/**\n * Rewind {@link LineString|(Multi)LineString} or {@link Polygon|(Multi)Polygon} outer ring counterclockwise and inner rings clockwise (Uses {@link http://en.wikipedia.org/wiki/Shoelace_formula|Shoelace Formula}).\n *\n * @name rewind\n * @param {GeoJSON} geojson input GeoJSON Polygon\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.reverse=false] enable reverse winding\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} rewind Polygon\n * @example\n * var polygon = turf.polygon([[[121, -29], [138, -29], [138, -18], [121, -18], [121, -29]]]);\n *\n * var rewind = turf.rewind(polygon);\n *\n * //addToMap\n * var addToMap = [rewind];\n */ function $4e67a75176238153$var$rewind(geojson, options) {\n // Optional parameters\n options = options || {};\n if (!(0, $bcb8J.isObject)(options)) throw new Error(\"options is invalid\");\n var reverse = options.reverse || false;\n var mutate = options.mutate || false;\n // validation\n if (!geojson) throw new Error(\" is required\");\n if (typeof reverse !== \"boolean\") throw new Error(\" must be a boolean\");\n if (typeof mutate !== \"boolean\") throw new Error(\" must be a boolean\");\n // prevent input mutation\n if (mutate === false) geojson = (0, $asTyQ.default)(geojson);\n // Support Feature Collection or Geometry Collection\n var results = [];\n switch(geojson.type){\n case \"GeometryCollection\":\n (0, $f8xmd.geomEach)(geojson, function(geometry) {\n $4e67a75176238153$var$rewindFeature(geometry, reverse);\n });\n return geojson;\n case \"FeatureCollection\":\n (0, $f8xmd.featureEach)(geojson, function(feature) {\n (0, $f8xmd.featureEach)($4e67a75176238153$var$rewindFeature(feature, reverse), function(result) {\n results.push(result);\n });\n });\n return (0, $bcb8J.featureCollection)(results);\n }\n // Support Feature or Geometry Objects\n return $4e67a75176238153$var$rewindFeature(geojson, reverse);\n}\n/**\n * Rewind\n *\n * @private\n * @param {Geometry|Feature} geojson Geometry or Feature\n * @param {Boolean} [reverse=false] enable reverse winding\n * @returns {Geometry|Feature} rewind Geometry or Feature\n */ function $4e67a75176238153$var$rewindFeature(geojson, reverse) {\n var type = geojson.type === \"Feature\" ? geojson.geometry.type : geojson.type;\n // Support all GeoJSON Geometry Objects\n switch(type){\n case \"GeometryCollection\":\n (0, $f8xmd.geomEach)(geojson, function(geometry) {\n $4e67a75176238153$var$rewindFeature(geometry, reverse);\n });\n return geojson;\n case \"LineString\":\n $4e67a75176238153$var$rewindLineString((0, $gtJiw.getCoords)(geojson), reverse);\n return geojson;\n case \"Polygon\":\n $4e67a75176238153$var$rewindPolygon((0, $gtJiw.getCoords)(geojson), reverse);\n return geojson;\n case \"MultiLineString\":\n (0, $gtJiw.getCoords)(geojson).forEach(function(lineCoords) {\n $4e67a75176238153$var$rewindLineString(lineCoords, reverse);\n });\n return geojson;\n case \"MultiPolygon\":\n (0, $gtJiw.getCoords)(geojson).forEach(function(lineCoords) {\n $4e67a75176238153$var$rewindPolygon(lineCoords, reverse);\n });\n return geojson;\n case \"Point\":\n case \"MultiPoint\":\n return geojson;\n }\n}\n/**\n * Rewind LineString - outer ring clockwise\n *\n * @private\n * @param {Array>} coords GeoJSON LineString geometry coordinates\n * @param {Boolean} [reverse=false] enable reverse winding\n * @returns {void} mutates coordinates\n */ function $4e67a75176238153$var$rewindLineString(coords, reverse) {\n if ((0, $54sVM.default)(coords) === reverse) coords.reverse();\n}\n/**\n * Rewind Polygon - outer ring counterclockwise and inner rings clockwise.\n *\n * @private\n * @param {Array>>} coords GeoJSON Polygon geometry coordinates\n * @param {Boolean} [reverse=false] enable reverse winding\n * @returns {void} mutates coordinates\n */ function $4e67a75176238153$var$rewindPolygon(coords, reverse) {\n // outer ring\n if ((0, $54sVM.default)(coords[0]) !== reverse) coords[0].reverse();\n // inner rings\n for(var i = 1; i < coords.length; i++)if ((0, $54sVM.default)(coords[i]) === reverse) coords[i].reverse();\n}\nvar $4e67a75176238153$export$2e2bcd8739ae039 = $4e67a75176238153$var$rewind;\n\n});\nparcelRegister(\"54sVM\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $3b13c48c1bf7f489$export$2e2bcd8739ae039; });\n\nvar $buBa6 = parcelRequire(\"buBa6\");\n/**\n * Takes a ring and return true or false whether or not the ring is clockwise or counter-clockwise.\n *\n * @name booleanClockwise\n * @param {Feature} line to be evaluated\n * @returns {boolean} true/false\n * @example\n * var clockwiseRing = turf.lineString([[0,0],[1,1],[1,0],[0,0]]);\n * var counterClockwiseRing = turf.lineString([[0,0],[1,0],[1,1],[0,0]]);\n *\n * turf.booleanClockwise(clockwiseRing)\n * //=true\n * turf.booleanClockwise(counterClockwiseRing)\n * //=false\n */ function $3b13c48c1bf7f489$var$booleanClockwise(line) {\n // validation\n if (!line) throw new Error(\"line is required\");\n var type = line.geometry ? line.geometry.type : line.type;\n if (!Array.isArray(line) && type !== \"LineString\") throw new Error(\"geometry must be a LineString\");\n var ring = (0, $buBa6.getCoords)(line);\n var sum = 0;\n var i = 1;\n var prev, cur;\n while(i < ring.length){\n prev = cur || ring[0];\n cur = ring[i];\n sum += (cur[0] - prev[0]) * (cur[1] + prev[1]);\n i++;\n }\n return sum > 0;\n}\nvar $3b13c48c1bf7f489$export$2e2bcd8739ae039 = $3b13c48c1bf7f489$var$booleanClockwise;\n\n});\nparcelRegister(\"buBa6\", function(module, exports) {\n\n$parcel$export(module.exports, \"getCoords\", function () { return $85df529e29000ac3$export$39e042fd83f1b62e; });\n\nvar $lPkUu = parcelRequire(\"lPkUu\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */ function $85df529e29000ac3$export$b4663c6e64a770bc(coord) {\n if (!coord) throw new Error(\"coord is required\");\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") return coord.geometry.coordinates;\n if (coord.type === \"Point\") return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */ function $85df529e29000ac3$export$39e042fd83f1b62e(coords) {\n if (!coords) throw new Error(\"coords is required\");\n // Feature\n if (coords.type === \"Feature\" && coords.geometry !== null) return coords.geometry.coordinates;\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */ function $85df529e29000ac3$export$ab82360ed81b09b9(coordinates) {\n if (coordinates.length > 1 && (0, $lPkUu.isNumber)(coordinates[0]) && (0, $lPkUu.isNumber)(coordinates[1])) return true;\n if (Array.isArray(coordinates[0]) && coordinates[0].length) return $85df529e29000ac3$export$ab82360ed81b09b9(coordinates[0]);\n throw new Error(\"coordinates must only contain numbers\");\n}\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $85df529e29000ac3$export$329ecc560bd873a7(value, type, name) {\n if (!type || !name) throw new Error(\"type and name required\");\n if (!value || value.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type);\n}\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */ function $85df529e29000ac3$export$8b96d9ca92084402(feature, type, name) {\n if (!feature) throw new Error(\"No feature passed\");\n if (!name) throw new Error(\".featureOf() requires a name\");\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n}\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $85df529e29000ac3$export$bcf04c9d01e728b6(featureCollection, type, name) {\n if (!featureCollection) throw new Error(\"No featureCollection passed\");\n if (!name) throw new Error(\".collectionOf() requires a name\");\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n for(var i = 0; i < featureCollection.features.length; i++){\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n }\n}\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */ function $85df529e29000ac3$export$b8f320eb9549c8fd(geojson) {\n if (!geojson) throw new Error(\"geojson is required\");\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error(\"geojson must be a valid Feature or Geometry Object\");\n}\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */ function $85df529e29000ac3$export$cf92de84f30da2c5() {\n throw new Error(\"invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType\");\n}\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */ function $85df529e29000ac3$export$e2b5c5db9e2009fd(geojson, name) {\n if (!geojson) throw new Error((name || \"geojson\") + \" is required\");\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || \"geojson\") + \" is invalid\");\n}\n\n});\nparcelRegister(\"lPkUu\", function(module, exports) {\n\n$parcel$export(module.exports, \"isNumber\", function () { return $fe3e94ba5cfe9b9d$export$7e4aa119212bc614; });\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */ var $fe3e94ba5cfe9b9d$export$e3a1ee0e9945697f = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */ var $fe3e94ba5cfe9b9d$export$f929e47acbed771a = {\n meters: $fe3e94ba5cfe9b9d$export$e3a1ee0e9945697f,\n metres: $fe3e94ba5cfe9b9d$export$e3a1ee0e9945697f,\n millimeters: $fe3e94ba5cfe9b9d$export$e3a1ee0e9945697f * 1000,\n millimetres: $fe3e94ba5cfe9b9d$export$e3a1ee0e9945697f * 1000,\n centimeters: $fe3e94ba5cfe9b9d$export$e3a1ee0e9945697f * 100,\n centimetres: $fe3e94ba5cfe9b9d$export$e3a1ee0e9945697f * 100,\n kilometers: $fe3e94ba5cfe9b9d$export$e3a1ee0e9945697f / 1000,\n kilometres: $fe3e94ba5cfe9b9d$export$e3a1ee0e9945697f / 1000,\n miles: $fe3e94ba5cfe9b9d$export$e3a1ee0e9945697f / 1609.344,\n nauticalmiles: $fe3e94ba5cfe9b9d$export$e3a1ee0e9945697f / 1852,\n inches: $fe3e94ba5cfe9b9d$export$e3a1ee0e9945697f * 39.370,\n yards: $fe3e94ba5cfe9b9d$export$e3a1ee0e9945697f / 1.0936,\n feet: $fe3e94ba5cfe9b9d$export$e3a1ee0e9945697f * 3.28084,\n radians: 1,\n degrees: $fe3e94ba5cfe9b9d$export$e3a1ee0e9945697f / 111325\n};\n/**\n * Units of measurement factors based on 1 meter.\n */ var $fe3e94ba5cfe9b9d$export$95cef4899be7420 = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 0.001,\n kilometres: 0.001,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / $fe3e94ba5cfe9b9d$export$e3a1ee0e9945697f,\n degrees: 1 / 111325\n};\n/**\n * Area of measurement factors based on 1 square meter.\n */ var $fe3e94ba5cfe9b9d$export$44665ce4f7f4c82b = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */ function $fe3e94ba5cfe9b9d$export$ced6ed16dfd6a264(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!$fe3e94ba5cfe9b9d$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (geometry === undefined) throw new Error(\"geometry is required\");\n if (properties && properties.constructor !== Object) throw new Error(\"properties must be an Object\");\n if (bbox) $fe3e94ba5cfe9b9d$export$28ac7bb8f5309bea(bbox);\n if (id) $fe3e94ba5cfe9b9d$export$f35f128fd59ea256(id);\n // Main\n var feat = {\n type: \"Feature\"\n };\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */ function $fe3e94ba5cfe9b9d$export$42a7622cbf932bb(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!$fe3e94ba5cfe9b9d$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n // Validation\n if (!type) throw new Error(\"type is required\");\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (bbox) $fe3e94ba5cfe9b9d$export$28ac7bb8f5309bea(bbox);\n // Main\n var geom;\n switch(type){\n case \"Point\":\n geom = $fe3e94ba5cfe9b9d$export$105684a3041cb6f3(coordinates).geometry;\n break;\n case \"LineString\":\n geom = $fe3e94ba5cfe9b9d$export$98ec381bb06902c3(coordinates).geometry;\n break;\n case \"Polygon\":\n geom = $fe3e94ba5cfe9b9d$export$b7b19aa0ee06c73(coordinates).geometry;\n break;\n case \"MultiPoint\":\n geom = $fe3e94ba5cfe9b9d$export$335fc20ed6b6dbb6(coordinates).geometry;\n break;\n case \"MultiLineString\":\n geom = $fe3e94ba5cfe9b9d$export$bd735230309493da(coordinates).geometry;\n break;\n case \"MultiPolygon\":\n geom = $fe3e94ba5cfe9b9d$export$79bd594da96638d3(coordinates).geometry;\n break;\n default:\n throw new Error(type + \" is invalid\");\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */ function $fe3e94ba5cfe9b9d$export$105684a3041cb6f3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be at least 2 numbers long\");\n if (!$fe3e94ba5cfe9b9d$export$7e4aa119212bc614(coordinates[0]) || !$fe3e94ba5cfe9b9d$export$7e4aa119212bc614(coordinates[1])) throw new Error(\"coordinates must contain numbers\");\n return $fe3e94ba5cfe9b9d$export$ced6ed16dfd6a264({\n type: \"Point\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */ function $fe3e94ba5cfe9b9d$export$9f048bf86ee2e9d2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $fe3e94ba5cfe9b9d$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $fe3e94ba5cfe9b9d$export$105684a3041cb6f3(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */ function $fe3e94ba5cfe9b9d$export$b7b19aa0ee06c73(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n for(var i = 0; i < coordinates.length; i++){\n var ring = coordinates[i];\n if (ring.length < 4) throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n for(var j = 0; j < ring[ring.length - 1].length; j++){\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !$fe3e94ba5cfe9b9d$export$7e4aa119212bc614(ring[0][0]) || !$fe3e94ba5cfe9b9d$export$7e4aa119212bc614(ring[0][1])) throw new Error(\"coordinates must contain numbers\");\n if (ring[ring.length - 1][j] !== ring[0][j]) throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n return $fe3e94ba5cfe9b9d$export$ced6ed16dfd6a264({\n type: \"Polygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */ function $fe3e94ba5cfe9b9d$export$8869eb68a940f9c2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $fe3e94ba5cfe9b9d$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $fe3e94ba5cfe9b9d$export$b7b19aa0ee06c73(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */ function $fe3e94ba5cfe9b9d$export$98ec381bb06902c3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be an array of two or more positions\");\n // Check if first point of LineString contains two numbers\n if (!$fe3e94ba5cfe9b9d$export$7e4aa119212bc614(coordinates[0][1]) || !$fe3e94ba5cfe9b9d$export$7e4aa119212bc614(coordinates[0][1])) throw new Error(\"coordinates must contain numbers\");\n return $fe3e94ba5cfe9b9d$export$ced6ed16dfd6a264({\n type: \"LineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */ function $fe3e94ba5cfe9b9d$export$74f7306c35db993f(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $fe3e94ba5cfe9b9d$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $fe3e94ba5cfe9b9d$export$98ec381bb06902c3(coords, properties);\n }), options);\n}\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */ function $fe3e94ba5cfe9b9d$export$4717c67ac3e5e04d(features, options) {\n // Optional Parameters\n options = options || {};\n if (!$fe3e94ba5cfe9b9d$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (!features) throw new Error(\"No features passed\");\n if (!Array.isArray(features)) throw new Error(\"features must be an Array\");\n if (bbox) $fe3e94ba5cfe9b9d$export$28ac7bb8f5309bea(bbox);\n if (id) $fe3e94ba5cfe9b9d$export$f35f128fd59ea256(id);\n // Main\n var fc = {\n type: \"FeatureCollection\"\n };\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */ function $fe3e94ba5cfe9b9d$export$bd735230309493da(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $fe3e94ba5cfe9b9d$export$ced6ed16dfd6a264({\n type: \"MultiLineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */ function $fe3e94ba5cfe9b9d$export$335fc20ed6b6dbb6(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $fe3e94ba5cfe9b9d$export$ced6ed16dfd6a264({\n type: \"MultiPoint\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */ function $fe3e94ba5cfe9b9d$export$79bd594da96638d3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $fe3e94ba5cfe9b9d$export$ced6ed16dfd6a264({\n type: \"MultiPolygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */ function $fe3e94ba5cfe9b9d$export$9242f1e18250422a(geometries, properties, options) {\n if (!geometries) throw new Error(\"geometries is required\");\n if (!Array.isArray(geometries)) throw new Error(\"geometries must be an Array\");\n return $fe3e94ba5cfe9b9d$export$ced6ed16dfd6a264({\n type: \"GeometryCollection\",\n geometries: geometries\n }, properties, options);\n}\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */ function $fe3e94ba5cfe9b9d$export$2077e0241d6afd3c(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error(\"num is required\");\n if (precision && !(precision >= 0)) throw new Error(\"precision must be a positive number\");\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */ function $fe3e94ba5cfe9b9d$export$f234631d6a2eedf8(radians, units) {\n if (radians === undefined || radians === null) throw new Error(\"radians is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $fe3e94ba5cfe9b9d$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return radians * factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */ function $fe3e94ba5cfe9b9d$export$a2280f7debae8f10(distance, units) {\n if (distance === undefined || distance === null) throw new Error(\"distance is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $fe3e94ba5cfe9b9d$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return distance / factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */ function $fe3e94ba5cfe9b9d$export$c7a138e00a89bd01(distance, units) {\n return $fe3e94ba5cfe9b9d$export$c41dd2a8460d3196($fe3e94ba5cfe9b9d$export$a2280f7debae8f10(distance, units));\n}\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */ function $fe3e94ba5cfe9b9d$export$f2077d29c73b33ec(bearing) {\n if (bearing === null || bearing === undefined) throw new Error(\"bearing is required\");\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */ function $fe3e94ba5cfe9b9d$export$c41dd2a8460d3196(radians) {\n if (radians === null || radians === undefined) throw new Error(\"radians is required\");\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */ function $fe3e94ba5cfe9b9d$export$c9fcf1a7df975d78(degrees) {\n if (degrees === null || degrees === undefined) throw new Error(\"degrees is required\");\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */ function $fe3e94ba5cfe9b9d$export$ea1536a749e80563(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error(\"length is required\");\n if (!(length >= 0)) throw new Error(\"length must be a positive number\");\n return $fe3e94ba5cfe9b9d$export$f234631d6a2eedf8($fe3e94ba5cfe9b9d$export$a2280f7debae8f10(length, originalUnit), finalUnit || \"kilometers\");\n}\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */ function $fe3e94ba5cfe9b9d$export$2e65e2c759f7e341(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error(\"area is required\");\n if (!(area >= 0)) throw new Error(\"area must be a positive number\");\n var startFactor = $fe3e94ba5cfe9b9d$export$44665ce4f7f4c82b[originalUnit || \"meters\"];\n if (!startFactor) throw new Error(\"invalid original units\");\n var finalFactor = $fe3e94ba5cfe9b9d$export$44665ce4f7f4c82b[finalUnit || \"kilometers\"];\n if (!finalFactor) throw new Error(\"invalid final units\");\n return area / startFactor * finalFactor;\n}\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */ function $fe3e94ba5cfe9b9d$export$7e4aa119212bc614(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */ function $fe3e94ba5cfe9b9d$export$a6cdc56e425d0d0a(input) {\n return !!input && input.constructor === Object;\n}\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */ function $fe3e94ba5cfe9b9d$export$28ac7bb8f5309bea(bbox) {\n if (!bbox) throw new Error(\"bbox is required\");\n if (!Array.isArray(bbox)) throw new Error(\"bbox must be an Array\");\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n bbox.forEach(function(num) {\n if (!$fe3e94ba5cfe9b9d$export$7e4aa119212bc614(num)) throw new Error(\"bbox must only contain numbers\");\n });\n}\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */ function $fe3e94ba5cfe9b9d$export$f35f128fd59ea256(id) {\n if (!id) throw new Error(\"id is required\");\n if ([\n \"string\",\n \"number\"\n ].indexOf(typeof id) === -1) throw new Error(\"id must be a number or a string\");\n}\n// Deprecated methods\nfunction $fe3e94ba5cfe9b9d$export$b7eac44a74fbbf44() {\n throw new Error(\"method has been renamed to `radiansToDegrees`\");\n}\nfunction $fe3e94ba5cfe9b9d$export$429f6664de4d6783() {\n throw new Error(\"method has been renamed to `degreesToRadians`\");\n}\nfunction $fe3e94ba5cfe9b9d$export$682f47d8f6f8f330() {\n throw new Error(\"method has been renamed to `lengthToDegrees`\");\n}\nfunction $fe3e94ba5cfe9b9d$export$8fc0c652b1df31fd() {\n throw new Error(\"method has been renamed to `lengthToRadians`\");\n}\nfunction $fe3e94ba5cfe9b9d$export$dc0d90c052e1e7ea() {\n throw new Error(\"method has been renamed to `radiansToLength`\");\n}\nfunction $fe3e94ba5cfe9b9d$export$97a5bf601f8e0e61() {\n throw new Error(\"method has been renamed to `bearingToAzimuth`\");\n}\nfunction $fe3e94ba5cfe9b9d$export$1d848d23272abfae() {\n throw new Error(\"method has been renamed to `convertLength`\");\n}\n\n});\n\n\n\nparcelRegister(\"f8xmd\", function(module, exports) {\n\n$parcel$export(module.exports, \"featureEach\", function () { return $b0517a6c610a2d01$export$45a31c4de8035258; });\n$parcel$export(module.exports, \"geomEach\", function () { return $b0517a6c610a2d01$export$d2d248a56672ab3d; });\n\nvar $bcb8J = parcelRequire(\"bcb8J\");\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */ /**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */ function $b0517a6c610a2d01$export$6e011439fde007ae(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for(var featureIndex = 0; featureIndex < stop; featureIndex++){\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for(var geomIndex = 0; geomIndex < stopG; geomIndex++){\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch(geomType){\n case null:\n break;\n case \"Point\":\n if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for(j = 0; j < coords.length; j++){\n if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for(j = 0; j < coords.length; j++){\n for(k = 0; k < coords[j].length - wrapShrink; k++){\n if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for(j = 0; j < coords.length; j++){\n if (geomType === \"MultiPolygon\") geometryIndex = 0;\n for(k = 0; k < coords[j].length; k++){\n for(l = 0; l < coords[j][k].length - wrapShrink; l++){\n if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for(j = 0; j < geometry.geometries.length; j++)if ($b0517a6c610a2d01$export$6e011439fde007ae(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */ /**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */ function $b0517a6c610a2d01$export$6f96eac39184ffe9(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n $b0517a6c610a2d01$export$6e011439fde007ae(geojson, function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n }, excludeWrapCoord);\n return previousValue;\n}\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */ function $b0517a6c610a2d01$export$9d63c695566dbaa3(geojson, callback) {\n var i;\n switch(geojson.type){\n case \"FeatureCollection\":\n for(i = 0; i < geojson.features.length; i++){\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */ function $b0517a6c610a2d01$export$7ff6f75e5ef85a65(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $b0517a6c610a2d01$export$9d63c695566dbaa3(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n else previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */ function $b0517a6c610a2d01$export$45a31c4de8035258(geojson, callback) {\n if (geojson.type === \"Feature\") callback(geojson, 0);\n else if (geojson.type === \"FeatureCollection\") for(var i = 0; i < geojson.features.length; i++){\n if (callback(geojson.features[i], i) === false) break;\n }\n}\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */ function $b0517a6c610a2d01$export$b18fee751b10b055(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $b0517a6c610a2d01$export$45a31c4de8035258(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */ function $b0517a6c610a2d01$export$5485820fc560fe4e(geojson) {\n var coords = [];\n $b0517a6c610a2d01$export$6e011439fde007ae(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */ /**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */ function $b0517a6c610a2d01$export$d2d248a56672ab3d(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for(i = 0; i < stop; i++){\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : undefined;\n featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : undefined;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for(g = 0; g < stopG; g++){\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n // Handle null Geometry\n if (geometry === null) {\n if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n continue;\n }\n switch(geometry.type){\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n break;\n case \"GeometryCollection\":\n for(j = 0; j < geometry.geometries.length; j++){\n if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n }\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */ /**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */ function $b0517a6c610a2d01$export$30055ae7bd157809(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $b0517a6c610a2d01$export$d2d248a56672ab3d(geojson, function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n });\n return previousValue;\n}\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */ /**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */ function $b0517a6c610a2d01$export$12cba8b31beb353b(geojson, callback) {\n $b0517a6c610a2d01$export$d2d248a56672ab3d(geojson, function(geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = geometry === null ? null : geometry.type;\n switch(type){\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback((0, $bcb8J.feature)(geometry, properties, {\n bbox: bbox,\n id: id\n }), featureIndex, 0) === false) return false;\n return;\n }\n var geomType;\n // Callback for multi-geometry\n switch(type){\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for(var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++){\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback((0, $bcb8J.feature)(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n }\n });\n}\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */ /**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */ function $b0517a6c610a2d01$export$af6f15fec62b5d18(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $b0517a6c610a2d01$export$12cba8b31beb353b(geojson, function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n });\n return previousValue;\n}\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */ /**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */ function $b0517a6c610a2d01$export$d3ecc1efb2be121e(geojson, callback) {\n $b0517a6c610a2d01$export$12cba8b31beb353b(geojson, function(feature$$1, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n // Exclude null Geometries\n if (!feature$$1.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature$$1.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n // Generate 2-vertex line segments\n var previousCoords;\n if ($b0517a6c610a2d01$export$6e011439fde007ae(feature$$1, function(currentCoord, coordIndex, featureIndexCoord, mutliPartIndexCoord, geometryIndex) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (previousCoords === undefined) {\n previousCoords = currentCoord;\n return;\n }\n var currentSegment = (0, $bcb8J.lineString)([\n previousCoords,\n currentCoord\n ], feature$$1.properties);\n if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }) === false) return false;\n });\n}\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */ /**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentInex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */ function $b0517a6c610a2d01$export$eec78cdd4d343a79(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n $b0517a6c610a2d01$export$d3ecc1efb2be121e(geojson, function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === undefined) previousValue = currentSegment;\n else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n started = true;\n });\n return previousValue;\n}\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */ /**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */ function $b0517a6c610a2d01$export$985a91771cfc783d(geojson, callback) {\n // validation\n if (!geojson) throw new Error(\"geojson is required\");\n $b0517a6c610a2d01$export$12cba8b31beb353b(geojson, function(feature$$1, featureIndex, multiFeatureIndex) {\n if (feature$$1.geometry === null) return;\n var type = feature$$1.geometry.type;\n var coords = feature$$1.geometry.coordinates;\n switch(type){\n case \"LineString\":\n if (callback(feature$$1, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n break;\n case \"Polygon\":\n for(var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++){\n if (callback((0, $bcb8J.lineString)(coords[geometryIndex], feature$$1.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n }\n break;\n }\n });\n}\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */ /**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */ function $b0517a6c610a2d01$export$a150e51c8ec9198a(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $b0517a6c610a2d01$export$985a91771cfc783d(geojson, function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n });\n return previousValue;\n}\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature>\n */ function $b0517a6c610a2d01$export$2b6ba91fd8680d67(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!(0, $bcb8J.isObject)(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n switch(geojson.type){\n case \"FeatureCollection\":\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch(geometry.type){\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return (0, $bcb8J.lineString)([\n coords[segmentIndex],\n coords[segmentIndex + 1]\n ], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return (0, $bcb8J.lineString)([\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1]\n ], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return (0, $bcb8J.lineString)([\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1]\n ], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return (0, $bcb8J.lineString)([\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ], properties, options);\n }\n throw new Error(\"geojson is invalid\");\n}\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature>\n */ function $b0517a6c610a2d01$export$ed60ae5df1bac687(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!(0, $bcb8J.isObject)(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n switch(geojson.type){\n case \"FeatureCollection\":\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch(geometry.type){\n case \"Point\":\n return (0, $bcb8J.point)(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n return (0, $bcb8J.point)(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return (0, $bcb8J.point)(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n return (0, $bcb8J.point)(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return (0, $bcb8J.point)(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return (0, $bcb8J.point)(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n }\n throw new Error(\"geojson is invalid\");\n}\n\n});\nparcelRegister(\"bcb8J\", function(module, exports) {\n\n$parcel$export(module.exports, \"feature\", function () { return $826974d85cf5abd4$export$ced6ed16dfd6a264; });\n$parcel$export(module.exports, \"isObject\", function () { return $826974d85cf5abd4$export$a6cdc56e425d0d0a; });\n$parcel$export(module.exports, \"point\", function () { return $826974d85cf5abd4$export$105684a3041cb6f3; });\n$parcel$export(module.exports, \"lineString\", function () { return $826974d85cf5abd4$export$98ec381bb06902c3; });\n$parcel$export(module.exports, \"isNumber\", function () { return $826974d85cf5abd4$export$7e4aa119212bc614; });\n$parcel$export(module.exports, \"featureCollection\", function () { return $826974d85cf5abd4$export$4717c67ac3e5e04d; });\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */ var $826974d85cf5abd4$export$e3a1ee0e9945697f = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */ var $826974d85cf5abd4$export$f929e47acbed771a = {\n meters: $826974d85cf5abd4$export$e3a1ee0e9945697f,\n metres: $826974d85cf5abd4$export$e3a1ee0e9945697f,\n millimeters: $826974d85cf5abd4$export$e3a1ee0e9945697f * 1000,\n millimetres: $826974d85cf5abd4$export$e3a1ee0e9945697f * 1000,\n centimeters: $826974d85cf5abd4$export$e3a1ee0e9945697f * 100,\n centimetres: $826974d85cf5abd4$export$e3a1ee0e9945697f * 100,\n kilometers: $826974d85cf5abd4$export$e3a1ee0e9945697f / 1000,\n kilometres: $826974d85cf5abd4$export$e3a1ee0e9945697f / 1000,\n miles: $826974d85cf5abd4$export$e3a1ee0e9945697f / 1609.344,\n nauticalmiles: $826974d85cf5abd4$export$e3a1ee0e9945697f / 1852,\n inches: $826974d85cf5abd4$export$e3a1ee0e9945697f * 39.370,\n yards: $826974d85cf5abd4$export$e3a1ee0e9945697f / 1.0936,\n feet: $826974d85cf5abd4$export$e3a1ee0e9945697f * 3.28084,\n radians: 1,\n degrees: $826974d85cf5abd4$export$e3a1ee0e9945697f / 111325\n};\n/**\n * Units of measurement factors based on 1 meter.\n */ var $826974d85cf5abd4$export$95cef4899be7420 = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 0.001,\n kilometres: 0.001,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / $826974d85cf5abd4$export$e3a1ee0e9945697f,\n degrees: 1 / 111325\n};\n/**\n * Area of measurement factors based on 1 square meter.\n */ var $826974d85cf5abd4$export$44665ce4f7f4c82b = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */ function $826974d85cf5abd4$export$ced6ed16dfd6a264(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!$826974d85cf5abd4$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (geometry === undefined) throw new Error(\"geometry is required\");\n if (properties && properties.constructor !== Object) throw new Error(\"properties must be an Object\");\n if (bbox) $826974d85cf5abd4$export$28ac7bb8f5309bea(bbox);\n if (id) $826974d85cf5abd4$export$f35f128fd59ea256(id);\n // Main\n var feat = {\n type: \"Feature\"\n };\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */ function $826974d85cf5abd4$export$42a7622cbf932bb(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!$826974d85cf5abd4$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n // Validation\n if (!type) throw new Error(\"type is required\");\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (bbox) $826974d85cf5abd4$export$28ac7bb8f5309bea(bbox);\n // Main\n var geom;\n switch(type){\n case \"Point\":\n geom = $826974d85cf5abd4$export$105684a3041cb6f3(coordinates).geometry;\n break;\n case \"LineString\":\n geom = $826974d85cf5abd4$export$98ec381bb06902c3(coordinates).geometry;\n break;\n case \"Polygon\":\n geom = $826974d85cf5abd4$export$b7b19aa0ee06c73(coordinates).geometry;\n break;\n case \"MultiPoint\":\n geom = $826974d85cf5abd4$export$335fc20ed6b6dbb6(coordinates).geometry;\n break;\n case \"MultiLineString\":\n geom = $826974d85cf5abd4$export$bd735230309493da(coordinates).geometry;\n break;\n case \"MultiPolygon\":\n geom = $826974d85cf5abd4$export$79bd594da96638d3(coordinates).geometry;\n break;\n default:\n throw new Error(type + \" is invalid\");\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */ function $826974d85cf5abd4$export$105684a3041cb6f3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be at least 2 numbers long\");\n if (!$826974d85cf5abd4$export$7e4aa119212bc614(coordinates[0]) || !$826974d85cf5abd4$export$7e4aa119212bc614(coordinates[1])) throw new Error(\"coordinates must contain numbers\");\n return $826974d85cf5abd4$export$ced6ed16dfd6a264({\n type: \"Point\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */ function $826974d85cf5abd4$export$9f048bf86ee2e9d2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $826974d85cf5abd4$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $826974d85cf5abd4$export$105684a3041cb6f3(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */ function $826974d85cf5abd4$export$b7b19aa0ee06c73(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n for(var i = 0; i < coordinates.length; i++){\n var ring = coordinates[i];\n if (ring.length < 4) throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n for(var j = 0; j < ring[ring.length - 1].length; j++){\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !$826974d85cf5abd4$export$7e4aa119212bc614(ring[0][0]) || !$826974d85cf5abd4$export$7e4aa119212bc614(ring[0][1])) throw new Error(\"coordinates must contain numbers\");\n if (ring[ring.length - 1][j] !== ring[0][j]) throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n return $826974d85cf5abd4$export$ced6ed16dfd6a264({\n type: \"Polygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */ function $826974d85cf5abd4$export$8869eb68a940f9c2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $826974d85cf5abd4$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $826974d85cf5abd4$export$b7b19aa0ee06c73(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */ function $826974d85cf5abd4$export$98ec381bb06902c3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be an array of two or more positions\");\n // Check if first point of LineString contains two numbers\n if (!$826974d85cf5abd4$export$7e4aa119212bc614(coordinates[0][1]) || !$826974d85cf5abd4$export$7e4aa119212bc614(coordinates[0][1])) throw new Error(\"coordinates must contain numbers\");\n return $826974d85cf5abd4$export$ced6ed16dfd6a264({\n type: \"LineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */ function $826974d85cf5abd4$export$74f7306c35db993f(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $826974d85cf5abd4$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $826974d85cf5abd4$export$98ec381bb06902c3(coords, properties);\n }), options);\n}\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */ function $826974d85cf5abd4$export$4717c67ac3e5e04d(features, options) {\n // Optional Parameters\n options = options || {};\n if (!$826974d85cf5abd4$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (!features) throw new Error(\"No features passed\");\n if (!Array.isArray(features)) throw new Error(\"features must be an Array\");\n if (bbox) $826974d85cf5abd4$export$28ac7bb8f5309bea(bbox);\n if (id) $826974d85cf5abd4$export$f35f128fd59ea256(id);\n // Main\n var fc = {\n type: \"FeatureCollection\"\n };\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */ function $826974d85cf5abd4$export$bd735230309493da(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $826974d85cf5abd4$export$ced6ed16dfd6a264({\n type: \"MultiLineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */ function $826974d85cf5abd4$export$335fc20ed6b6dbb6(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $826974d85cf5abd4$export$ced6ed16dfd6a264({\n type: \"MultiPoint\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */ function $826974d85cf5abd4$export$79bd594da96638d3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $826974d85cf5abd4$export$ced6ed16dfd6a264({\n type: \"MultiPolygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */ function $826974d85cf5abd4$export$9242f1e18250422a(geometries, properties, options) {\n if (!geometries) throw new Error(\"geometries is required\");\n if (!Array.isArray(geometries)) throw new Error(\"geometries must be an Array\");\n return $826974d85cf5abd4$export$ced6ed16dfd6a264({\n type: \"GeometryCollection\",\n geometries: geometries\n }, properties, options);\n}\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */ function $826974d85cf5abd4$export$2077e0241d6afd3c(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error(\"num is required\");\n if (precision && !(precision >= 0)) throw new Error(\"precision must be a positive number\");\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */ function $826974d85cf5abd4$export$f234631d6a2eedf8(radians, units) {\n if (radians === undefined || radians === null) throw new Error(\"radians is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $826974d85cf5abd4$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return radians * factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */ function $826974d85cf5abd4$export$a2280f7debae8f10(distance, units) {\n if (distance === undefined || distance === null) throw new Error(\"distance is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $826974d85cf5abd4$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return distance / factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */ function $826974d85cf5abd4$export$c7a138e00a89bd01(distance, units) {\n return $826974d85cf5abd4$export$c41dd2a8460d3196($826974d85cf5abd4$export$a2280f7debae8f10(distance, units));\n}\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */ function $826974d85cf5abd4$export$f2077d29c73b33ec(bearing) {\n if (bearing === null || bearing === undefined) throw new Error(\"bearing is required\");\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */ function $826974d85cf5abd4$export$c41dd2a8460d3196(radians) {\n if (radians === null || radians === undefined) throw new Error(\"radians is required\");\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */ function $826974d85cf5abd4$export$c9fcf1a7df975d78(degrees) {\n if (degrees === null || degrees === undefined) throw new Error(\"degrees is required\");\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */ function $826974d85cf5abd4$export$ea1536a749e80563(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error(\"length is required\");\n if (!(length >= 0)) throw new Error(\"length must be a positive number\");\n return $826974d85cf5abd4$export$f234631d6a2eedf8($826974d85cf5abd4$export$a2280f7debae8f10(length, originalUnit), finalUnit || \"kilometers\");\n}\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */ function $826974d85cf5abd4$export$2e65e2c759f7e341(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error(\"area is required\");\n if (!(area >= 0)) throw new Error(\"area must be a positive number\");\n var startFactor = $826974d85cf5abd4$export$44665ce4f7f4c82b[originalUnit || \"meters\"];\n if (!startFactor) throw new Error(\"invalid original units\");\n var finalFactor = $826974d85cf5abd4$export$44665ce4f7f4c82b[finalUnit || \"kilometers\"];\n if (!finalFactor) throw new Error(\"invalid final units\");\n return area / startFactor * finalFactor;\n}\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */ function $826974d85cf5abd4$export$7e4aa119212bc614(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */ function $826974d85cf5abd4$export$a6cdc56e425d0d0a(input) {\n return !!input && input.constructor === Object;\n}\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */ function $826974d85cf5abd4$export$28ac7bb8f5309bea(bbox) {\n if (!bbox) throw new Error(\"bbox is required\");\n if (!Array.isArray(bbox)) throw new Error(\"bbox must be an Array\");\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n bbox.forEach(function(num) {\n if (!$826974d85cf5abd4$export$7e4aa119212bc614(num)) throw new Error(\"bbox must only contain numbers\");\n });\n}\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */ function $826974d85cf5abd4$export$f35f128fd59ea256(id) {\n if (!id) throw new Error(\"id is required\");\n if ([\n \"string\",\n \"number\"\n ].indexOf(typeof id) === -1) throw new Error(\"id must be a number or a string\");\n}\n// Deprecated methods\nfunction $826974d85cf5abd4$export$b7eac44a74fbbf44() {\n throw new Error(\"method has been renamed to `radiansToDegrees`\");\n}\nfunction $826974d85cf5abd4$export$429f6664de4d6783() {\n throw new Error(\"method has been renamed to `degreesToRadians`\");\n}\nfunction $826974d85cf5abd4$export$682f47d8f6f8f330() {\n throw new Error(\"method has been renamed to `lengthToDegrees`\");\n}\nfunction $826974d85cf5abd4$export$8fc0c652b1df31fd() {\n throw new Error(\"method has been renamed to `lengthToRadians`\");\n}\nfunction $826974d85cf5abd4$export$dc0d90c052e1e7ea() {\n throw new Error(\"method has been renamed to `radiansToLength`\");\n}\nfunction $826974d85cf5abd4$export$97a5bf601f8e0e61() {\n throw new Error(\"method has been renamed to `bearingToAzimuth`\");\n}\nfunction $826974d85cf5abd4$export$1d848d23272abfae() {\n throw new Error(\"method has been renamed to `convertLength`\");\n}\n\n});\n\n\nparcelRegister(\"gtJiw\", function(module, exports) {\n\n$parcel$export(module.exports, \"getCoords\", function () { return $bff27df390727b17$export$39e042fd83f1b62e; });\n\nvar $bcb8J = parcelRequire(\"bcb8J\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */ function $bff27df390727b17$export$b4663c6e64a770bc(coord) {\n if (!coord) throw new Error(\"coord is required\");\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") return coord.geometry.coordinates;\n if (coord.type === \"Point\") return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */ function $bff27df390727b17$export$39e042fd83f1b62e(coords) {\n if (!coords) throw new Error(\"coords is required\");\n // Feature\n if (coords.type === \"Feature\" && coords.geometry !== null) return coords.geometry.coordinates;\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */ function $bff27df390727b17$export$ab82360ed81b09b9(coordinates) {\n if (coordinates.length > 1 && (0, $bcb8J.isNumber)(coordinates[0]) && (0, $bcb8J.isNumber)(coordinates[1])) return true;\n if (Array.isArray(coordinates[0]) && coordinates[0].length) return $bff27df390727b17$export$ab82360ed81b09b9(coordinates[0]);\n throw new Error(\"coordinates must only contain numbers\");\n}\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $bff27df390727b17$export$329ecc560bd873a7(value, type, name) {\n if (!type || !name) throw new Error(\"type and name required\");\n if (!value || value.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type);\n}\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */ function $bff27df390727b17$export$8b96d9ca92084402(feature, type, name) {\n if (!feature) throw new Error(\"No feature passed\");\n if (!name) throw new Error(\".featureOf() requires a name\");\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n}\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $bff27df390727b17$export$bcf04c9d01e728b6(featureCollection, type, name) {\n if (!featureCollection) throw new Error(\"No featureCollection passed\");\n if (!name) throw new Error(\".collectionOf() requires a name\");\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n for(var i = 0; i < featureCollection.features.length; i++){\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n }\n}\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */ function $bff27df390727b17$export$b8f320eb9549c8fd(geojson) {\n if (!geojson) throw new Error(\"geojson is required\");\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error(\"geojson must be a valid Feature or Geometry Object\");\n}\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */ function $bff27df390727b17$export$cf92de84f30da2c5() {\n throw new Error(\"invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType\");\n}\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */ function $bff27df390727b17$export$e2b5c5db9e2009fd(geojson, name) {\n if (!geojson) throw new Error((name || \"geojson\") + \" is required\");\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || \"geojson\") + \" is invalid\");\n}\n\n});\n\n\nparcelRegister(\"hs5Hv\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.toDeckColor = $cb497939a269a2bd$var$toDeckColor;\nmodule.exports.recursivelyTraverseNestedArrays = $cb497939a269a2bd$var$recursivelyTraverseNestedArrays;\nmodule.exports.generatePointsParallelToLinePoints = $cb497939a269a2bd$var$generatePointsParallelToLinePoints;\nmodule.exports.distance2d = $cb497939a269a2bd$var$distance2d;\nmodule.exports.mix = $cb497939a269a2bd$var$mix;\nmodule.exports.nearestPointOnProjectedLine = $cb497939a269a2bd$var$nearestPointOnProjectedLine;\nmodule.exports.nearestPointOnLine = $cb497939a269a2bd$var$nearestPointOnLine;\nmodule.exports.getPickedEditHandle = $cb497939a269a2bd$var$getPickedEditHandle;\nmodule.exports.getPickedSnapSourceEditHandle = $cb497939a269a2bd$var$getPickedSnapSourceEditHandle;\nmodule.exports.getNonGuidePicks = $cb497939a269a2bd$var$getNonGuidePicks;\nmodule.exports.getPickedExistingEditHandle = $cb497939a269a2bd$var$getPickedExistingEditHandle;\nmodule.exports.getPickedIntermediateEditHandle = $cb497939a269a2bd$var$getPickedIntermediateEditHandle;\nmodule.exports.getPickedEditHandles = $cb497939a269a2bd$var$getPickedEditHandles;\nmodule.exports.getEditHandlesForGeometry = $cb497939a269a2bd$var$getEditHandlesForGeometry;\nmodule.exports.updateRectanglePosition = $cb497939a269a2bd$var$updateRectanglePosition;\nmodule.exports.mapCoords = $cb497939a269a2bd$var$mapCoords;\n\nvar $cb497939a269a2bd$var$_destination = $cb497939a269a2bd$var$_interopRequireDefault((parcelRequire(\"1UAWS\")));\n\nvar $cb497939a269a2bd$var$_bearing = $cb497939a269a2bd$var$_interopRequireDefault((parcelRequire(\"aDE4l\")));\n\nvar $cb497939a269a2bd$var$_pointToLineDistance = $cb497939a269a2bd$var$_interopRequireDefault((parcelRequire(\"3OoMQ\")));\n\nvar $cJNDJ = parcelRequire(\"cJNDJ\");\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $8abqV = parcelRequire(\"8abqV\");\n\nvar $cb497939a269a2bd$var$_viewportMercatorProject = $cb497939a269a2bd$var$_interopRequireDefault((parcelRequire(\"1LAFs\")));\nfunction $cb497939a269a2bd$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $cb497939a269a2bd$var$_slicedToArray(arr, i) {\n return $cb497939a269a2bd$var$_arrayWithHoles(arr) || $cb497939a269a2bd$var$_iterableToArrayLimit(arr, i) || $cb497939a269a2bd$var$_unsupportedIterableToArray(arr, i) || $cb497939a269a2bd$var$_nonIterableRest();\n}\nfunction $cb497939a269a2bd$var$_nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $cb497939a269a2bd$var$_iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for(var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction $cb497939a269a2bd$var$_arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction $cb497939a269a2bd$var$_toConsumableArray(arr) {\n return $cb497939a269a2bd$var$_arrayWithoutHoles(arr) || $cb497939a269a2bd$var$_iterableToArray(arr) || $cb497939a269a2bd$var$_unsupportedIterableToArray(arr) || $cb497939a269a2bd$var$_nonIterableSpread();\n}\nfunction $cb497939a269a2bd$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $cb497939a269a2bd$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $cb497939a269a2bd$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $cb497939a269a2bd$var$_arrayLikeToArray(o, minLen);\n}\nfunction $cb497939a269a2bd$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $cb497939a269a2bd$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $cb497939a269a2bd$var$_arrayLikeToArray(arr);\n}\nfunction $cb497939a269a2bd$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $cb497939a269a2bd$var$toDeckColor(color) {\n var defaultColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [\n 255,\n 0,\n 0,\n 255\n ];\n if (!Array.isArray(color)) return defaultColor;\n return [\n color[0] * 255,\n color[1] * 255,\n color[2] * 255,\n color[3] * 255\n ];\n} //\n// a GeoJSON helper function that calls the provided function with\n// an argument that is the most deeply-nested array having elements\n// that are arrays of primitives as an argument, e.g.\n//\n// {\n// \"type\": \"MultiPolygon\",\n// \"coordinates\": [\n// [\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n// ],\n// [\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n// ]\n// ]\n// }\n//\n// the function would be called on:\n//\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n//\n// and\n//\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n//\nfunction $cb497939a269a2bd$var$recursivelyTraverseNestedArrays(array, prefix, fn) {\n if (!Array.isArray(array[0])) return true;\n for(var i = 0; i < array.length; i++)if ($cb497939a269a2bd$var$recursivelyTraverseNestedArrays(array[i], [].concat($cb497939a269a2bd$var$_toConsumableArray(prefix), [\n i\n ]), fn)) {\n fn(array, prefix);\n break;\n }\n return false;\n}\nfunction $cb497939a269a2bd$var$generatePointsParallelToLinePoints(p1, p2, mapCoords) {\n var lineString = {\n type: \"LineString\",\n coordinates: [\n p1,\n p2\n ]\n };\n var pt = (0, $7GKQS.point)(mapCoords);\n var ddistance = (0, $cb497939a269a2bd$var$_pointToLineDistance[\"default\"])(pt, lineString);\n var lineBearing = (0, $cb497939a269a2bd$var$_bearing[\"default\"])(p1, p2); // Check if current point is to the left or right of line\n // Line from A=(x1,y1) to B=(x2,y2) a point P=(x,y)\n // then (x−x1)(y2−y1)−(y−y1)(x2−x1)\n var isPointToLeftOfLine = (mapCoords[0] - p1[0]) * (p2[1] - p1[1]) - (mapCoords[1] - p1[1]) * (p2[0] - p1[0]); // Bearing to draw perpendicular to the line string\n var orthogonalBearing = isPointToLeftOfLine < 0 ? lineBearing - 90 : lineBearing - 270; // Get coordinates for the point p3 and p4 which are perpendicular to the lineString\n // Add the distance as the current position moves away from the lineString\n var p3 = (0, $cb497939a269a2bd$var$_destination[\"default\"])(p2, ddistance, orthogonalBearing);\n var p4 = (0, $cb497939a269a2bd$var$_destination[\"default\"])(p1, ddistance, orthogonalBearing);\n return [\n p3.geometry.coordinates,\n p4.geometry.coordinates\n ];\n}\nfunction $cb497939a269a2bd$var$distance2d(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\nfunction $cb497939a269a2bd$var$mix(a, b, ratio) {\n return b * ratio + a * (1 - ratio);\n}\nfunction $cb497939a269a2bd$var$nearestPointOnProjectedLine(line, inPoint, viewport) {\n var wmViewport = new $cb497939a269a2bd$var$_viewportMercatorProject[\"default\"](viewport); // Project the line to viewport, then find the nearest point\n var coordinates = line.geometry.coordinates;\n var projectedCoords = coordinates.map(function(_ref) {\n var _ref2 = $cb497939a269a2bd$var$_slicedToArray(_ref, 3), x = _ref2[0], y = _ref2[1], _ref2$ = _ref2[2], z = _ref2$ === void 0 ? 0 : _ref2$;\n return wmViewport.project([\n x,\n y,\n z\n ]);\n }); // @ts-ignore\n var _wmViewport$project = wmViewport.project(inPoint.geometry.coordinates), _wmViewport$project2 = $cb497939a269a2bd$var$_slicedToArray(_wmViewport$project, 2), x = _wmViewport$project2[0], y = _wmViewport$project2[1]; // console.log('projectedCoords', JSON.stringify(projectedCoords));\n var minDistance = Infinity;\n var minPointInfo = {};\n projectedCoords.forEach(function(_ref3, index) {\n var _ref4 = $cb497939a269a2bd$var$_slicedToArray(_ref3, 2), x2 = _ref4[0], y2 = _ref4[1];\n if (index === 0) return;\n var _projectedCoords = $cb497939a269a2bd$var$_slicedToArray(projectedCoords[index - 1], 2), x1 = _projectedCoords[0], y1 = _projectedCoords[1]; // line from projectedCoords[index - 1] to projectedCoords[index]\n // convert to Ax + By + C = 0\n var A = y1 - y2;\n var B = x2 - x1;\n var C = x1 * y2 - x2 * y1; // https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line\n var div = A * A + B * B;\n var distance = Math.abs(A * x + B * y + C) / Math.sqrt(div); // TODO: Check if inside bounds\n if (distance < minDistance) {\n minDistance = distance;\n minPointInfo = {\n index: index,\n x0: (B * (B * x - A * y) - A * C) / div,\n y0: (A * (-B * x + A * y) - B * C) / div\n };\n }\n }); // @ts-ignore\n var _minPointInfo = minPointInfo, index = _minPointInfo.index, x0 = _minPointInfo.x0, y0 = _minPointInfo.y0;\n var _projectedCoords2 = $cb497939a269a2bd$var$_slicedToArray(projectedCoords[index - 1], 3), x1 = _projectedCoords2[0], y1 = _projectedCoords2[1], _projectedCoords2$ = _projectedCoords2[2], z1 = _projectedCoords2$ === void 0 ? 0 : _projectedCoords2$;\n var _projectedCoords$inde = $cb497939a269a2bd$var$_slicedToArray(projectedCoords[index], 3), x2 = _projectedCoords$inde[0], y2 = _projectedCoords$inde[1], _projectedCoords$inde2 = _projectedCoords$inde[2], z2 = _projectedCoords$inde2 === void 0 ? 0 : _projectedCoords$inde2; // calculate what ratio of the line we are on to find the proper z\n var lineLength = $cb497939a269a2bd$var$distance2d(x1, y1, x2, y2);\n var startToPointLength = $cb497939a269a2bd$var$distance2d(x1, y1, x0, y0);\n var ratio = startToPointLength / lineLength;\n var z0 = $cb497939a269a2bd$var$mix(z1, z2, ratio);\n return {\n type: \"Feature\",\n geometry: {\n type: \"Point\",\n coordinates: wmViewport.unproject([\n x0,\n y0,\n z0\n ])\n },\n properties: {\n // TODO: calculate the distance in proper units\n dist: minDistance,\n index: index - 1\n }\n };\n}\nfunction $cb497939a269a2bd$var$nearestPointOnLine(lines, inPoint, viewport) {\n var _lines$geometry, _lines$geometry2;\n var mercator;\n if (viewport) mercator = new $cb497939a269a2bd$var$_viewportMercatorProject[\"default\"](viewport);\n var closestPoint = (0, $7GKQS.point)([\n Infinity,\n Infinity\n ], {\n dist: Infinity\n });\n if (!((_lines$geometry = lines.geometry) === null || _lines$geometry === void 0 ? void 0 : _lines$geometry.coordinates.length) || ((_lines$geometry2 = lines.geometry) === null || _lines$geometry2 === void 0 ? void 0 : _lines$geometry2.coordinates.length) < 2) return closestPoint;\n // @ts-ignore\n (0, $cJNDJ.flattenEach)(lines, function(line) {\n var coords = (0, $8abqV.getCoords)(line); // @ts-ignore\n var pointCoords = (0, $8abqV.getCoords)(inPoint);\n var minDist;\n var to;\n var from;\n var x;\n var y;\n var segmentIdx;\n var dist;\n if (coords.length > 1 && pointCoords.length) {\n var lineCoordinates;\n var pointCoordinate; // If viewport is given, then translate these coordinates to pixels to increase precision\n if (mercator) {\n lineCoordinates = coords.map(function(lineCoordinate) {\n return mercator.project(lineCoordinate);\n });\n pointCoordinate = mercator.project(pointCoords);\n } else {\n lineCoordinates = coords;\n pointCoordinate = pointCoords;\n }\n for(var n = 1; n < lineCoordinates.length; n++){\n if (lineCoordinates[n][0] !== lineCoordinates[n - 1][0]) {\n var slope = (lineCoordinates[n][1] - lineCoordinates[n - 1][1]) / (lineCoordinates[n][0] - lineCoordinates[n - 1][0]);\n var inverseSlope = lineCoordinates[n][1] - slope * lineCoordinates[n][0];\n dist = Math.abs(slope * pointCoordinate[0] + inverseSlope - pointCoordinate[1]) / Math.sqrt(slope * slope + 1);\n } else dist = Math.abs(pointCoordinate[0] - lineCoordinates[n][0]); // length^2 of line segment\n var rl2 = Math.pow(lineCoordinates[n][1] - lineCoordinates[n - 1][1], 2) + Math.pow(lineCoordinates[n][0] - lineCoordinates[n - 1][0], 2); // distance^2 of pt to end line segment\n var ln2 = Math.pow(lineCoordinates[n][1] - pointCoordinate[1], 2) + Math.pow(lineCoordinates[n][0] - pointCoordinate[0], 2); // distance^2 of pt to begin line segment\n var lnm12 = Math.pow(lineCoordinates[n - 1][1] - pointCoordinate[1], 2) + Math.pow(lineCoordinates[n - 1][0] - pointCoordinate[0], 2); // minimum distance^2 of pt to infinite line\n var dist2 = Math.pow(dist, 2); // calculated length^2 of line segment\n var calcrl2 = ln2 - dist2 + lnm12 - dist2; // redefine minimum distance to line segment (not infinite line) if necessary\n if (calcrl2 > rl2) dist = Math.sqrt(Math.min(ln2, lnm12));\n if (minDist === null || minDist === undefined || minDist > dist) {\n // eslint-disable-next-line max-depth\n if (calcrl2 > rl2) {\n // eslint-disable-next-line max-depth\n if (lnm12 < ln2) {\n to = 0; // nearer to previous point\n from = 1;\n } else {\n from = 0; // nearer to current point\n to = 1;\n }\n } else {\n // perpendicular from point intersects line segment\n to = Math.sqrt(lnm12 - dist2) / Math.sqrt(rl2);\n from = Math.sqrt(ln2 - dist2) / Math.sqrt(rl2);\n }\n minDist = dist;\n segmentIdx = n;\n }\n }\n var dx = lineCoordinates[segmentIdx - 1][0] - lineCoordinates[segmentIdx][0];\n var dy = lineCoordinates[segmentIdx - 1][1] - lineCoordinates[segmentIdx][1];\n x = lineCoordinates[segmentIdx - 1][0] - dx * to;\n y = lineCoordinates[segmentIdx - 1][1] - dy * to;\n } // index needs to be -1 because we have to account for the shift from initial backscan\n var snapPoint = {\n x: x,\n y: y,\n idx: segmentIdx - 1,\n to: to,\n from: from\n };\n if (mercator) {\n var pixelToLatLong = mercator.unproject([\n snapPoint.x,\n snapPoint.y\n ]);\n snapPoint = {\n x: pixelToLatLong[0],\n y: pixelToLatLong[1],\n idx: segmentIdx - 1,\n to: to,\n from: from\n };\n }\n closestPoint = (0, $7GKQS.point)([\n snapPoint.x,\n snapPoint.y\n ], {\n dist: Math.abs(snapPoint.from - snapPoint.to),\n index: snapPoint.idx\n });\n });\n return closestPoint;\n}\nfunction $cb497939a269a2bd$var$getPickedEditHandle(picks) {\n var handles = $cb497939a269a2bd$var$getPickedEditHandles(picks);\n return handles.length ? handles[0] : null;\n}\nfunction $cb497939a269a2bd$var$getPickedSnapSourceEditHandle(picks) {\n var handles = $cb497939a269a2bd$var$getPickedEditHandles(picks);\n return handles.find(function(handle) {\n return handle.properties.editHandleType === \"snap-source\";\n });\n}\nfunction $cb497939a269a2bd$var$getNonGuidePicks(picks) {\n return picks && picks.filter(function(pick) {\n return !pick.isGuide;\n });\n}\nfunction $cb497939a269a2bd$var$getPickedExistingEditHandle(picks) {\n var handles = $cb497939a269a2bd$var$getPickedEditHandles(picks);\n return handles.find(function(_ref5) {\n var properties = _ref5.properties;\n return properties.featureIndex >= 0 && properties.editHandleType === \"existing\";\n });\n}\nfunction $cb497939a269a2bd$var$getPickedIntermediateEditHandle(picks) {\n var handles = $cb497939a269a2bd$var$getPickedEditHandles(picks);\n return handles.find(function(_ref6) {\n var properties = _ref6.properties;\n return properties.featureIndex >= 0 && properties.editHandleType === \"intermediate\";\n });\n}\nfunction $cb497939a269a2bd$var$getPickedEditHandles(picks) {\n var handles = picks && picks.filter(function(pick) {\n return pick.isGuide && pick.object.properties.guideType === \"editHandle\";\n }).map(function(pick) {\n return pick.object;\n }) || [];\n return handles;\n}\nfunction $cb497939a269a2bd$var$getEditHandlesForGeometry(geometry, featureIndex) {\n var editHandleType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"existing\";\n var handles = [];\n switch(geometry.type){\n case \"Point\":\n // positions are not nested\n handles = [\n {\n type: \"Feature\",\n properties: {\n guideType: \"editHandle\",\n editHandleType: editHandleType,\n positionIndexes: [],\n featureIndex: featureIndex\n },\n geometry: {\n type: \"Point\",\n coordinates: geometry.coordinates\n }\n }\n ];\n break;\n case \"MultiPoint\":\n case \"LineString\":\n // positions are nested 1 level\n handles = handles.concat($cb497939a269a2bd$var$getEditHandlesForCoordinates(geometry.coordinates, [], featureIndex, editHandleType));\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n // positions are nested 2 levels\n for(var a = 0; a < geometry.coordinates.length; a++){\n handles = handles.concat($cb497939a269a2bd$var$getEditHandlesForCoordinates(geometry.coordinates[a], [\n a\n ], featureIndex, editHandleType));\n if (geometry.type === \"Polygon\") // Don't repeat the first/last handle for Polygons\n handles = handles.slice(0, -1);\n }\n break;\n case \"MultiPolygon\":\n // positions are nested 3 levels\n for(var _a = 0; _a < geometry.coordinates.length; _a++)for(var b = 0; b < geometry.coordinates[_a].length; b++){\n handles = handles.concat($cb497939a269a2bd$var$getEditHandlesForCoordinates(geometry.coordinates[_a][b], [\n _a,\n b\n ], featureIndex, editHandleType)); // Don't repeat the first/last handle for Polygons\n handles = handles.slice(0, -1);\n }\n break;\n default:\n // @ts-ignore\n throw Error(\"Unhandled geometry type: \".concat(geometry.type));\n }\n return handles;\n}\nfunction $cb497939a269a2bd$var$getEditHandlesForCoordinates(coordinates, positionIndexPrefix, featureIndex) {\n var editHandleType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"existing\";\n var editHandles = [];\n for(var i = 0; i < coordinates.length; i++){\n var position = coordinates[i];\n editHandles.push({\n type: \"Feature\",\n properties: {\n guideType: \"editHandle\",\n positionIndexes: [].concat($cb497939a269a2bd$var$_toConsumableArray(positionIndexPrefix), [\n i\n ]),\n featureIndex: featureIndex,\n editHandleType: editHandleType\n },\n geometry: {\n type: \"Point\",\n coordinates: position\n }\n });\n }\n return editHandles;\n}\n/**\n * Calculates coordinates for a feature preserving rectangular shape.\n * @param feature Feature before modification.\n * @param editHandleIndex Index of the point to modify.\n * @param mapCoords New position for the point.\n * @returns Updated coordinates.\n */ function $cb497939a269a2bd$var$updateRectanglePosition(feature, editHandleIndex, mapCoords) {\n var coordinates = feature.geometry.coordinates;\n if (!coordinates) return null;\n var points = coordinates[0].slice(0, 4);\n points[editHandleIndex % 4] = mapCoords;\n var p0 = points[(editHandleIndex + 2) % 4];\n var p2 = points[editHandleIndex % 4];\n points[(editHandleIndex + 1) % 4] = [\n p2[0],\n p0[1]\n ];\n points[(editHandleIndex + 3) % 4] = [\n p0[0],\n p2[1]\n ];\n return [\n [].concat($cb497939a269a2bd$var$_toConsumableArray(points), [\n points[0]\n ])\n ];\n}\n/** Creates a copy of feature's coordinates.\n * Each position in coordinates is transformed by calling the provided function.\n * @param coords Coordinates of a feature.\n * @param callback A function to transform each coordinate.\n * @retuns Transformed coordinates.\n */ function $cb497939a269a2bd$var$mapCoords(coords, callback) {\n if (typeof coords[0] === \"number\") {\n if (!isNaN(coords[0]) && isFinite(coords[0])) return callback(coords);\n return coords;\n }\n return coords.map(function(coord) {\n return $cb497939a269a2bd$var$mapCoords(coord, callback);\n }).filter(Boolean);\n}\n\n});\nparcelRegister(\"1UAWS\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $8abqV = parcelRequire(\"8abqV\");\n/**\n * Takes a {@link Point} and calculates the location of a destination point given a distance in\n * degrees, radians, miles, or kilometers; and bearing in degrees.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name destination\n * @param {Coord} origin starting point\n * @param {number} distance distance from the origin point\n * @param {number} bearing ranging from -180 to 180\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians\n * @param {Object} [options.properties={}] Translate properties to Point\n * @returns {Feature} destination point\n * @example\n * var point = turf.point([-75.343, 39.984]);\n * var distance = 50;\n * var bearing = 90;\n * var options = {units: 'miles'};\n *\n * var destination = turf.destination(point, distance, bearing, options);\n *\n * //addToMap\n * var addToMap = [point, destination]\n * destination.properties['marker-color'] = '#f00';\n * point.properties['marker-color'] = '#0f0';\n */ function $1647aea68aba4095$var$destination(origin, distance, bearing, options) {\n if (options === void 0) options = {};\n // Handle input\n var coordinates1 = $8abqV.getCoord(origin);\n var longitude1 = $7GKQS.degreesToRadians(coordinates1[0]);\n var latitude1 = $7GKQS.degreesToRadians(coordinates1[1]);\n var bearingRad = $7GKQS.degreesToRadians(bearing);\n var radians = $7GKQS.lengthToRadians(distance, options.units);\n // Main\n var latitude2 = Math.asin(Math.sin(latitude1) * Math.cos(radians) + Math.cos(latitude1) * Math.sin(radians) * Math.cos(bearingRad));\n var longitude2 = longitude1 + Math.atan2(Math.sin(bearingRad) * Math.sin(radians) * Math.cos(latitude1), Math.cos(radians) - Math.sin(latitude1) * Math.sin(latitude2));\n var lng = $7GKQS.radiansToDegrees(longitude2);\n var lat = $7GKQS.radiansToDegrees(latitude2);\n return $7GKQS.point([\n lng,\n lat\n ], options.properties);\n}\nmodule.exports.default = $1647aea68aba4095$var$destination;\n\n});\n\nparcelRegister(\"aDE4l\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $8abqV = parcelRequire(\"8abqV\");\n// http://en.wikipedia.org/wiki/Haversine_formula\n// http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Takes two {@link Point|points} and finds the geographic bearing between them,\n * i.e. the angle measured in degrees from the north line (0 degrees)\n *\n * @name bearing\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.final=false] calculates the final bearing if true\n * @returns {number} bearing in decimal degrees, between -180 and 180 degrees (positive clockwise)\n * @example\n * var point1 = turf.point([-75.343, 39.984]);\n * var point2 = turf.point([-75.534, 39.123]);\n *\n * var bearing = turf.bearing(point1, point2);\n *\n * //addToMap\n * var addToMap = [point1, point2]\n * point1.properties['marker-color'] = '#f00'\n * point2.properties['marker-color'] = '#0f0'\n * point1.properties.bearing = bearing\n */ function $7beca0c55060dc11$var$bearing(start, end, options) {\n if (options === void 0) options = {};\n // Reverse calculation\n if (options.final === true) return $7beca0c55060dc11$var$calculateFinalBearing(start, end);\n var coordinates1 = $8abqV.getCoord(start);\n var coordinates2 = $8abqV.getCoord(end);\n var lon1 = $7GKQS.degreesToRadians(coordinates1[0]);\n var lon2 = $7GKQS.degreesToRadians(coordinates2[0]);\n var lat1 = $7GKQS.degreesToRadians(coordinates1[1]);\n var lat2 = $7GKQS.degreesToRadians(coordinates2[1]);\n var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n var b = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n return $7GKQS.radiansToDegrees(Math.atan2(a, b));\n}\n/**\n * Calculates Final Bearing\n *\n * @private\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @returns {number} bearing\n */ function $7beca0c55060dc11$var$calculateFinalBearing(start, end) {\n // Swap start & end\n var bear = $7beca0c55060dc11$var$bearing(end, start);\n bear = (bear + 180) % 360;\n return bear;\n}\nmodule.exports.default = $7beca0c55060dc11$var$bearing;\n\n});\n\nparcelRegister(\"3OoMQ\", function(module, exports) {\n\"use strict\";\nvar $2c6944c4589193ef$var$__importDefault = module.exports && module.exports.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\n// Taken from http://geomalgorithms.com/a02-_lines.html\nvar $2c6944c4589193ef$var$distance_1 = $2c6944c4589193ef$var$__importDefault((parcelRequire(\"b5wF2\")));\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $8abqV = parcelRequire(\"8abqV\");\n\nvar $7aiSl = parcelRequire(\"7aiSl\");\n\nvar $2c6944c4589193ef$var$rhumb_distance_1 = $2c6944c4589193ef$var$__importDefault((parcelRequire(\"jcSlP\")));\n/**\n * Returns the minimum distance between a {@link Point} and a {@link LineString}, being the distance from a line the\n * minimum distance between the point and any segment of the `LineString`.\n *\n * @name pointToLineDistance\n * @param {Feature|Array} pt Feature or Geometry\n * @param {Feature} line GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units=\"kilometers\"] can be anything supported by turf/convertLength\n * (ex: degrees, radians, miles, or kilometers)\n * @param {string} [options.method=\"geodesic\"] wether to calculate the distance based on geodesic (spheroid) or\n * planar (flat) method. Valid options are 'geodesic' or 'planar'.\n * @returns {number} distance between point and line\n * @example\n * var pt = turf.point([0, 0]);\n * var line = turf.lineString([[1, 1],[-1, 1]]);\n *\n * var distance = turf.pointToLineDistance(pt, line, {units: 'miles'});\n * //=69.11854715938406\n */ function $2c6944c4589193ef$var$pointToLineDistance(pt, line, options) {\n if (options === void 0) options = {};\n // Optional parameters\n if (!options.method) options.method = \"geodesic\";\n if (!options.units) options.units = \"kilometers\";\n // validation\n if (!pt) throw new Error(\"pt is required\");\n if (Array.isArray(pt)) pt = $7GKQS.point(pt);\n else if (pt.type === \"Point\") pt = $7GKQS.feature(pt);\n else $8abqV.featureOf(pt, \"Point\", \"point\");\n if (!line) throw new Error(\"line is required\");\n if (Array.isArray(line)) line = $7GKQS.lineString(line);\n else if (line.type === \"LineString\") line = $7GKQS.feature(line);\n else $8abqV.featureOf(line, \"LineString\", \"line\");\n var distance = Infinity;\n var p = pt.geometry.coordinates;\n $7aiSl.segmentEach(line, function(segment) {\n var a = segment.geometry.coordinates[0];\n var b = segment.geometry.coordinates[1];\n var d = $2c6944c4589193ef$var$distanceToSegment(p, a, b, options);\n if (d < distance) distance = d;\n });\n return $7GKQS.convertLength(distance, \"degrees\", options.units);\n}\n/**\n * Returns the distance between a point P on a segment AB.\n *\n * @private\n * @param {Array} p external point\n * @param {Array} a first segment point\n * @param {Array} b second segment point\n * @param {Object} [options={}] Optional parameters\n * @returns {number} distance\n */ function $2c6944c4589193ef$var$distanceToSegment(p, a, b, options) {\n var v = [\n b[0] - a[0],\n b[1] - a[1]\n ];\n var w = [\n p[0] - a[0],\n p[1] - a[1]\n ];\n var c1 = $2c6944c4589193ef$var$dot(w, v);\n if (c1 <= 0) return $2c6944c4589193ef$var$calcDistance(p, a, {\n method: options.method,\n units: \"degrees\"\n });\n var c2 = $2c6944c4589193ef$var$dot(v, v);\n if (c2 <= c1) return $2c6944c4589193ef$var$calcDistance(p, b, {\n method: options.method,\n units: \"degrees\"\n });\n var b2 = c1 / c2;\n var Pb = [\n a[0] + b2 * v[0],\n a[1] + b2 * v[1]\n ];\n return $2c6944c4589193ef$var$calcDistance(p, Pb, {\n method: options.method,\n units: \"degrees\"\n });\n}\nfunction $2c6944c4589193ef$var$dot(u, v) {\n return u[0] * v[0] + u[1] * v[1];\n}\nfunction $2c6944c4589193ef$var$calcDistance(a, b, options) {\n return options.method === \"planar\" ? $2c6944c4589193ef$var$rhumb_distance_1.default(a, b, options) : $2c6944c4589193ef$var$distance_1.default(a, b, options);\n}\nmodule.exports.default = $2c6944c4589193ef$var$pointToLineDistance;\n\n});\nparcelRegister(\"jcSlP\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $8abqV = parcelRequire(\"8abqV\");\n/**\n * Calculates the distance along a rhumb line between two {@link Point|points} in degrees, radians,\n * miles, or kilometers.\n *\n * @name rhumbDistance\n * @param {Coord} from origin point\n * @param {Coord} to destination point\n * @param {Object} [options] Optional parameters\n * @param {string} [options.units=\"kilometers\"] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.rhumbDistance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */ function $dfb94c52071aaa01$var$rhumbDistance(from, to, options) {\n if (options === void 0) options = {};\n var origin = $8abqV.getCoord(from);\n var destination = $8abqV.getCoord(to);\n // compensate the crossing of the 180th meridian (https://macwright.org/2016/09/26/the-180th-meridian.html)\n // solution from https://github.com/mapbox/mapbox-gl-js/issues/3250#issuecomment-294887678\n destination[0] += destination[0] - origin[0] > 180 ? -360 : origin[0] - destination[0] > 180 ? 360 : 0;\n var distanceInMeters = $dfb94c52071aaa01$var$calculateRhumbDistance(origin, destination);\n var distance = $7GKQS.convertLength(distanceInMeters, \"meters\", options.units);\n return distance;\n}\n/**\n * Returns the distance travelling from ‘this’ point to destination point along a rhumb line.\n * Adapted from Geodesy: https://github.com/chrisveness/geodesy/blob/master/latlon-spherical.js\n *\n * @private\n * @param {Array} origin point.\n * @param {Array} destination point.\n * @param {number} [radius=6371e3] - (Mean) radius of earth (defaults to radius in metres).\n * @returns {number} Distance in km between this point and destination point (same units as radius).\n *\n * @example\n * var p1 = new LatLon(51.127, 1.338);\n * var p2 = new LatLon(50.964, 1.853);\n * var d = p1.distanceTo(p2); // 40.31 km\n */ function $dfb94c52071aaa01$var$calculateRhumbDistance(origin, destination, radius) {\n // φ => phi\n // λ => lambda\n // ψ => psi\n // Δ => Delta\n // δ => delta\n // θ => theta\n radius = radius === undefined ? $7GKQS.earthRadius : Number(radius);\n // see www.edwilliams.org/avform.htm#Rhumb\n var R = radius;\n var phi1 = origin[1] * Math.PI / 180;\n var phi2 = destination[1] * Math.PI / 180;\n var DeltaPhi = phi2 - phi1;\n var DeltaLambda = Math.abs(destination[0] - origin[0]) * Math.PI / 180;\n // if dLon over 180° take shorter rhumb line across the anti-meridian:\n if (DeltaLambda > Math.PI) DeltaLambda -= 2 * Math.PI;\n // on Mercator projection, longitude distances shrink by latitude; q is the 'stretch factor'\n // q becomes ill-conditioned along E-W line (0/0); use empirical tolerance to avoid it\n var DeltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));\n var q = Math.abs(DeltaPsi) > 10e-12 ? DeltaPhi / DeltaPsi : Math.cos(phi1);\n // distance is pythagoras on 'stretched' Mercator projection\n var delta = Math.sqrt(DeltaPhi * DeltaPhi + q * q * DeltaLambda * DeltaLambda); // angular distance in radians\n var dist = delta * R;\n return dist;\n}\nmodule.exports.default = $dfb94c52071aaa01$var$rhumbDistance;\n\n});\n\n\nparcelRegister(\"cJNDJ\", function(module, exports) {\n\n$parcel$export(module.exports, \"coordEach\", function () { return $9460316bfb92eba0$export$6e011439fde007ae; });\n$parcel$export(module.exports, \"geomReduce\", function () { return $9460316bfb92eba0$export$30055ae7bd157809; });\n$parcel$export(module.exports, \"flattenEach\", function () { return $9460316bfb92eba0$export$12cba8b31beb353b; });\n\nvar $ekY0d = parcelRequire(\"ekY0d\");\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */ /**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */ function $9460316bfb92eba0$export$6e011439fde007ae(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for(var featureIndex = 0; featureIndex < stop; featureIndex++){\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for(var geomIndex = 0; geomIndex < stopG; geomIndex++){\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch(geomType){\n case null:\n break;\n case \"Point\":\n if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for(j = 0; j < coords.length; j++){\n if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for(j = 0; j < coords.length; j++){\n for(k = 0; k < coords[j].length - wrapShrink; k++){\n if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for(j = 0; j < coords.length; j++){\n geometryIndex = 0;\n for(k = 0; k < coords[j].length; k++){\n for(l = 0; l < coords[j][k].length - wrapShrink; l++){\n if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for(j = 0; j < geometry.geometries.length; j++)if ($9460316bfb92eba0$export$6e011439fde007ae(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */ /**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */ function $9460316bfb92eba0$export$6f96eac39184ffe9(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n $9460316bfb92eba0$export$6e011439fde007ae(geojson, function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n }, excludeWrapCoord);\n return previousValue;\n}\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */ function $9460316bfb92eba0$export$9d63c695566dbaa3(geojson, callback) {\n var i;\n switch(geojson.type){\n case \"FeatureCollection\":\n for(i = 0; i < geojson.features.length; i++){\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */ function $9460316bfb92eba0$export$7ff6f75e5ef85a65(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $9460316bfb92eba0$export$9d63c695566dbaa3(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n else previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */ function $9460316bfb92eba0$export$45a31c4de8035258(geojson, callback) {\n if (geojson.type === \"Feature\") callback(geojson, 0);\n else if (geojson.type === \"FeatureCollection\") for(var i = 0; i < geojson.features.length; i++){\n if (callback(geojson.features[i], i) === false) break;\n }\n}\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */ function $9460316bfb92eba0$export$b18fee751b10b055(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $9460316bfb92eba0$export$45a31c4de8035258(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */ function $9460316bfb92eba0$export$5485820fc560fe4e(geojson) {\n var coords = [];\n $9460316bfb92eba0$export$6e011439fde007ae(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */ /**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */ function $9460316bfb92eba0$export$d2d248a56672ab3d(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for(i = 0; i < stop; i++){\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : undefined;\n featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : undefined;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for(g = 0; g < stopG; g++){\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n // Handle null Geometry\n if (geometry === null) {\n if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n continue;\n }\n switch(geometry.type){\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n break;\n case \"GeometryCollection\":\n for(j = 0; j < geometry.geometries.length; j++){\n if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n }\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */ /**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */ function $9460316bfb92eba0$export$30055ae7bd157809(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $9460316bfb92eba0$export$d2d248a56672ab3d(geojson, function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n });\n return previousValue;\n}\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */ /**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */ function $9460316bfb92eba0$export$12cba8b31beb353b(geojson, callback) {\n $9460316bfb92eba0$export$d2d248a56672ab3d(geojson, function(geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = geometry === null ? null : geometry.type;\n switch(type){\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback((0, $ekY0d.feature)(geometry, properties, {\n bbox: bbox,\n id: id\n }), featureIndex, 0) === false) return false;\n return;\n }\n var geomType;\n // Callback for multi-geometry\n switch(type){\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for(var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++){\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback((0, $ekY0d.feature)(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n }\n });\n}\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */ /**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */ function $9460316bfb92eba0$export$af6f15fec62b5d18(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $9460316bfb92eba0$export$12cba8b31beb353b(geojson, function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n });\n return previousValue;\n}\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */ /**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */ function $9460316bfb92eba0$export$d3ecc1efb2be121e(geojson, callback) {\n $9460316bfb92eba0$export$12cba8b31beb353b(geojson, function(feature, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n // Exclude null Geometries\n if (!feature.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n // Generate 2-vertex line segments\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if ($9460316bfb92eba0$export$6e011439fde007ae(feature, function(currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (previousCoords === undefined || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = (0, $ekY0d.lineString)([\n previousCoords,\n currentCoord\n ], feature.properties);\n if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }) === false) return false;\n });\n}\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */ /**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentIndex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */ function $9460316bfb92eba0$export$eec78cdd4d343a79(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n $9460316bfb92eba0$export$d3ecc1efb2be121e(geojson, function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === undefined) previousValue = currentSegment;\n else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n started = true;\n });\n return previousValue;\n}\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */ /**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */ function $9460316bfb92eba0$export$985a91771cfc783d(geojson, callback) {\n // validation\n if (!geojson) throw new Error(\"geojson is required\");\n $9460316bfb92eba0$export$12cba8b31beb353b(geojson, function(feature, featureIndex, multiFeatureIndex) {\n if (feature.geometry === null) return;\n var type = feature.geometry.type;\n var coords = feature.geometry.coordinates;\n switch(type){\n case \"LineString\":\n if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n break;\n case \"Polygon\":\n for(var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++){\n if (callback((0, $ekY0d.lineString)(coords[geometryIndex], feature.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n }\n break;\n }\n });\n}\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */ /**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */ function $9460316bfb92eba0$export$a150e51c8ec9198a(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $9460316bfb92eba0$export$985a91771cfc783d(geojson, function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n });\n return previousValue;\n}\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature>\n */ function $9460316bfb92eba0$export$2b6ba91fd8680d67(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!(0, $ekY0d.isObject)(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n switch(geojson.type){\n case \"FeatureCollection\":\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch(geometry.type){\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return (0, $ekY0d.lineString)([\n coords[segmentIndex],\n coords[segmentIndex + 1]\n ], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return (0, $ekY0d.lineString)([\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1]\n ], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return (0, $ekY0d.lineString)([\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1]\n ], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return (0, $ekY0d.lineString)([\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ], properties, options);\n }\n throw new Error(\"geojson is invalid\");\n}\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature>\n */ function $9460316bfb92eba0$export$ed60ae5df1bac687(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!(0, $ekY0d.isObject)(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n switch(geojson.type){\n case \"FeatureCollection\":\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch(geometry.type){\n case \"Point\":\n return (0, $ekY0d.point)(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n return (0, $ekY0d.point)(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return (0, $ekY0d.point)(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n return (0, $ekY0d.point)(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return (0, $ekY0d.point)(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return (0, $ekY0d.point)(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n }\n throw new Error(\"geojson is invalid\");\n}\n\n});\nparcelRegister(\"ekY0d\", function(module, exports) {\n\n$parcel$export(module.exports, \"feature\", function () { return $a7017a2dca8a70e0$export$ced6ed16dfd6a264; });\n$parcel$export(module.exports, \"point\", function () { return $a7017a2dca8a70e0$export$105684a3041cb6f3; });\n$parcel$export(module.exports, \"lineString\", function () { return $a7017a2dca8a70e0$export$98ec381bb06902c3; });\n$parcel$export(module.exports, \"isObject\", function () { return $a7017a2dca8a70e0$export$a6cdc56e425d0d0a; });\n/**\n * @module helpers\n */ /**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */ var $a7017a2dca8a70e0$export$e3a1ee0e9945697f = 6371008.8;\nvar $a7017a2dca8a70e0$export$f929e47acbed771a = {\n centimeters: $a7017a2dca8a70e0$export$e3a1ee0e9945697f * 100,\n centimetres: $a7017a2dca8a70e0$export$e3a1ee0e9945697f * 100,\n degrees: $a7017a2dca8a70e0$export$e3a1ee0e9945697f / 111325,\n feet: $a7017a2dca8a70e0$export$e3a1ee0e9945697f * 3.28084,\n inches: $a7017a2dca8a70e0$export$e3a1ee0e9945697f * 39.37,\n kilometers: $a7017a2dca8a70e0$export$e3a1ee0e9945697f / 1000,\n kilometres: $a7017a2dca8a70e0$export$e3a1ee0e9945697f / 1000,\n meters: $a7017a2dca8a70e0$export$e3a1ee0e9945697f,\n metres: $a7017a2dca8a70e0$export$e3a1ee0e9945697f,\n miles: $a7017a2dca8a70e0$export$e3a1ee0e9945697f / 1609.344,\n millimeters: $a7017a2dca8a70e0$export$e3a1ee0e9945697f * 1000,\n millimetres: $a7017a2dca8a70e0$export$e3a1ee0e9945697f * 1000,\n nauticalmiles: $a7017a2dca8a70e0$export$e3a1ee0e9945697f / 1852,\n radians: 1,\n yards: $a7017a2dca8a70e0$export$e3a1ee0e9945697f * 1.0936\n};\nvar $a7017a2dca8a70e0$export$95cef4899be7420 = {\n centimeters: 100,\n centimetres: 100,\n degrees: 1 / 111325,\n feet: 3.28084,\n inches: 39.37,\n kilometers: 0.001,\n kilometres: 0.001,\n meters: 1,\n metres: 1,\n miles: 1 / 1609.344,\n millimeters: 1000,\n millimetres: 1000,\n nauticalmiles: 1 / 1852,\n radians: 1 / $a7017a2dca8a70e0$export$e3a1ee0e9945697f,\n yards: 1.0936133\n};\nvar $a7017a2dca8a70e0$export$44665ce4f7f4c82b = {\n acres: 0.000247105,\n centimeters: 10000,\n centimetres: 10000,\n feet: 10.763910417,\n hectares: 0.0001,\n inches: 1550.003100006,\n kilometers: 0.000001,\n kilometres: 0.000001,\n meters: 1,\n metres: 1,\n miles: 3.86e-7,\n millimeters: 1000000,\n millimetres: 1000000,\n yards: 1.195990046\n};\nfunction $a7017a2dca8a70e0$export$ced6ed16dfd6a264(geom, properties, options) {\n if (options === void 0) options = {};\n var feat = {\n type: \"Feature\"\n };\n if (options.id === 0 || options.id) feat.id = options.id;\n if (options.bbox) feat.bbox = options.bbox;\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nfunction $a7017a2dca8a70e0$export$42a7622cbf932bb(type, coordinates, _options) {\n if (_options === void 0) _options = {};\n switch(type){\n case \"Point\":\n return $a7017a2dca8a70e0$export$105684a3041cb6f3(coordinates).geometry;\n case \"LineString\":\n return $a7017a2dca8a70e0$export$98ec381bb06902c3(coordinates).geometry;\n case \"Polygon\":\n return $a7017a2dca8a70e0$export$b7b19aa0ee06c73(coordinates).geometry;\n case \"MultiPoint\":\n return $a7017a2dca8a70e0$export$335fc20ed6b6dbb6(coordinates).geometry;\n case \"MultiLineString\":\n return $a7017a2dca8a70e0$export$bd735230309493da(coordinates).geometry;\n case \"MultiPolygon\":\n return $a7017a2dca8a70e0$export$79bd594da96638d3(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\nfunction $a7017a2dca8a70e0$export$105684a3041cb6f3(coordinates, properties, options) {\n if (options === void 0) options = {};\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be at least 2 numbers long\");\n if (!$a7017a2dca8a70e0$export$7e4aa119212bc614(coordinates[0]) || !$a7017a2dca8a70e0$export$7e4aa119212bc614(coordinates[1])) throw new Error(\"coordinates must contain numbers\");\n var geom = {\n type: \"Point\",\n coordinates: coordinates\n };\n return $a7017a2dca8a70e0$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $a7017a2dca8a70e0$export$9f048bf86ee2e9d2(coordinates, properties, options) {\n if (options === void 0) options = {};\n return $a7017a2dca8a70e0$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $a7017a2dca8a70e0$export$105684a3041cb6f3(coords, properties);\n }), options);\n}\nfunction $a7017a2dca8a70e0$export$b7b19aa0ee06c73(coordinates, properties, options) {\n if (options === void 0) options = {};\n for(var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++){\n var ring = coordinates_1[_i];\n if (ring.length < 4) throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n for(var j = 0; j < ring[ring.length - 1].length; j++){\n // Check if first point of Polygon contains two numbers\n if (ring[ring.length - 1][j] !== ring[0][j]) throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n var geom = {\n type: \"Polygon\",\n coordinates: coordinates\n };\n return $a7017a2dca8a70e0$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $a7017a2dca8a70e0$export$8869eb68a940f9c2(coordinates, properties, options) {\n if (options === void 0) options = {};\n return $a7017a2dca8a70e0$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $a7017a2dca8a70e0$export$b7b19aa0ee06c73(coords, properties);\n }), options);\n}\nfunction $a7017a2dca8a70e0$export$98ec381bb06902c3(coordinates, properties, options) {\n if (options === void 0) options = {};\n if (coordinates.length < 2) throw new Error(\"coordinates must be an array of two or more positions\");\n var geom = {\n type: \"LineString\",\n coordinates: coordinates\n };\n return $a7017a2dca8a70e0$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $a7017a2dca8a70e0$export$74f7306c35db993f(coordinates, properties, options) {\n if (options === void 0) options = {};\n return $a7017a2dca8a70e0$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $a7017a2dca8a70e0$export$98ec381bb06902c3(coords, properties);\n }), options);\n}\nfunction $a7017a2dca8a70e0$export$4717c67ac3e5e04d(features, options) {\n if (options === void 0) options = {};\n var fc = {\n type: \"FeatureCollection\"\n };\n if (options.id) fc.id = options.id;\n if (options.bbox) fc.bbox = options.bbox;\n fc.features = features;\n return fc;\n}\nfunction $a7017a2dca8a70e0$export$bd735230309493da(coordinates, properties, options) {\n if (options === void 0) options = {};\n var geom = {\n type: \"MultiLineString\",\n coordinates: coordinates\n };\n return $a7017a2dca8a70e0$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $a7017a2dca8a70e0$export$335fc20ed6b6dbb6(coordinates, properties, options) {\n if (options === void 0) options = {};\n var geom = {\n type: \"MultiPoint\",\n coordinates: coordinates\n };\n return $a7017a2dca8a70e0$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $a7017a2dca8a70e0$export$79bd594da96638d3(coordinates, properties, options) {\n if (options === void 0) options = {};\n var geom = {\n type: \"MultiPolygon\",\n coordinates: coordinates\n };\n return $a7017a2dca8a70e0$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $a7017a2dca8a70e0$export$9242f1e18250422a(geometries, properties, options) {\n if (options === void 0) options = {};\n var geom = {\n type: \"GeometryCollection\",\n geometries: geometries\n };\n return $a7017a2dca8a70e0$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $a7017a2dca8a70e0$export$2077e0241d6afd3c(num, precision) {\n if (precision === void 0) precision = 0;\n if (precision && !(precision >= 0)) throw new Error(\"precision must be a positive number\");\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nfunction $a7017a2dca8a70e0$export$f234631d6a2eedf8(radians, units) {\n if (units === void 0) units = \"kilometers\";\n var factor = $a7017a2dca8a70e0$export$f929e47acbed771a[units];\n if (!factor) throw new Error(units + \" units is invalid\");\n return radians * factor;\n}\nfunction $a7017a2dca8a70e0$export$a2280f7debae8f10(distance, units) {\n if (units === void 0) units = \"kilometers\";\n var factor = $a7017a2dca8a70e0$export$f929e47acbed771a[units];\n if (!factor) throw new Error(units + \" units is invalid\");\n return distance / factor;\n}\nfunction $a7017a2dca8a70e0$export$c7a138e00a89bd01(distance, units) {\n return $a7017a2dca8a70e0$export$c41dd2a8460d3196($a7017a2dca8a70e0$export$a2280f7debae8f10(distance, units));\n}\nfunction $a7017a2dca8a70e0$export$f2077d29c73b33ec(bearing) {\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\nfunction $a7017a2dca8a70e0$export$c41dd2a8460d3196(radians) {\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\nfunction $a7017a2dca8a70e0$export$c9fcf1a7df975d78(degrees) {\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\nfunction $a7017a2dca8a70e0$export$ea1536a749e80563(length, originalUnit, finalUnit) {\n if (originalUnit === void 0) originalUnit = \"kilometers\";\n if (finalUnit === void 0) finalUnit = \"kilometers\";\n if (!(length >= 0)) throw new Error(\"length must be a positive number\");\n return $a7017a2dca8a70e0$export$f234631d6a2eedf8($a7017a2dca8a70e0$export$a2280f7debae8f10(length, originalUnit), finalUnit);\n}\nfunction $a7017a2dca8a70e0$export$2e65e2c759f7e341(area, originalUnit, finalUnit) {\n if (originalUnit === void 0) originalUnit = \"meters\";\n if (finalUnit === void 0) finalUnit = \"kilometers\";\n if (!(area >= 0)) throw new Error(\"area must be a positive number\");\n var startFactor = $a7017a2dca8a70e0$export$44665ce4f7f4c82b[originalUnit];\n if (!startFactor) throw new Error(\"invalid original units\");\n var finalFactor = $a7017a2dca8a70e0$export$44665ce4f7f4c82b[finalUnit];\n if (!finalFactor) throw new Error(\"invalid final units\");\n return area / startFactor * finalFactor;\n}\nfunction $a7017a2dca8a70e0$export$7e4aa119212bc614(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nfunction $a7017a2dca8a70e0$export$a6cdc56e425d0d0a(input) {\n return !!input && input.constructor === Object;\n}\nfunction $a7017a2dca8a70e0$export$28ac7bb8f5309bea(bbox) {\n if (!bbox) throw new Error(\"bbox is required\");\n if (!Array.isArray(bbox)) throw new Error(\"bbox must be an Array\");\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n bbox.forEach(function(num) {\n if (!$a7017a2dca8a70e0$export$7e4aa119212bc614(num)) throw new Error(\"bbox must only contain numbers\");\n });\n}\nfunction $a7017a2dca8a70e0$export$f35f128fd59ea256(id) {\n if (!id) throw new Error(\"id is required\");\n if ([\n \"string\",\n \"number\"\n ].indexOf(typeof id) === -1) throw new Error(\"id must be a number or a string\");\n}\n\n});\n\n\nparcelRegister(\"1LAFs\", function(module, exports) {\n\n$parcel$defineInteropFlag(module.exports);\n\n$parcel$export(module.exports, \"default\", function () { return (parcelRequire(\"2NnPF\")).default; });\nparcelRequire(\"dsJSX\");\nvar $2NnPF = parcelRequire(\"2NnPF\");\nvar $dsJSX = parcelRequire(\"dsJSX\");\n$parcel$exportWildcard(module.exports, $dsJSX);\n\n});\nparcelRegister(\"dsJSX\", function(module, exports) {\n\n$parcel$defineInteropFlag(module.exports);\n\n$parcel$export(module.exports, \"default\", function () { return (parcelRequire(\"2NnPF\")).default; });\n$parcel$export(module.exports, \"WebMercatorViewport\", function () { return (parcelRequire(\"2NnPF\")).default; });\n$parcel$export(module.exports, \"fitBounds\", function () { return (parcelRequire(\"8fo7C\")).default; });\n$parcel$export(module.exports, \"normalizeViewportProps\", function () { return (parcelRequire(\"2wWtu\")).default; });\n$parcel$export(module.exports, \"flyToViewport\", function () { return (parcelRequire(\"czbEE\")).default; });\n$parcel$export(module.exports, \"getFlyToDuration\", function () { return (parcelRequire(\"czbEE\")).getFlyToDuration; });\n$parcel$export(module.exports, \"lngLatToWorld\", function () { return (parcelRequire(\"kwLGk\")).lngLatToWorld; });\n$parcel$export(module.exports, \"worldToLngLat\", function () { return (parcelRequire(\"kwLGk\")).worldToLngLat; });\n$parcel$export(module.exports, \"worldToPixels\", function () { return (parcelRequire(\"kwLGk\")).worldToPixels; });\n$parcel$export(module.exports, \"pixelsToWorld\", function () { return (parcelRequire(\"kwLGk\")).pixelsToWorld; });\n$parcel$export(module.exports, \"zoomToScale\", function () { return (parcelRequire(\"kwLGk\")).zoomToScale; });\n$parcel$export(module.exports, \"scaleToZoom\", function () { return (parcelRequire(\"kwLGk\")).scaleToZoom; });\n$parcel$export(module.exports, \"getMeterZoom\", function () { return (parcelRequire(\"kwLGk\")).getMeterZoom; });\n$parcel$export(module.exports, \"getDistanceScales\", function () { return (parcelRequire(\"kwLGk\")).getDistanceScales; });\n$parcel$export(module.exports, \"addMetersToLngLat\", function () { return (parcelRequire(\"kwLGk\")).addMetersToLngLat; });\n$parcel$export(module.exports, \"getViewMatrix\", function () { return (parcelRequire(\"kwLGk\")).getViewMatrix; });\n$parcel$export(module.exports, \"getProjectionMatrix\", function () { return (parcelRequire(\"kwLGk\")).getProjectionMatrix; });\n$parcel$export(module.exports, \"getProjectionParameters\", function () { return (parcelRequire(\"kwLGk\")).getProjectionParameters; });\n\nvar $2NnPF = parcelRequire(\"2NnPF\");\n\nvar $8fo7C = parcelRequire(\"8fo7C\");\n\nvar $2wWtu = parcelRequire(\"2wWtu\");\n\nvar $czbEE = parcelRequire(\"czbEE\");\n\nvar $kwLGk = parcelRequire(\"kwLGk\");\n\n});\nparcelRegister(\"2NnPF\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $2092a5003543a5d1$export$2e2bcd8739ae039; });\n\nvar $dYxCI = parcelRequire(\"dYxCI\");\n\nvar $16cE9 = parcelRequire(\"16cE9\");\n\nvar $7BQbw = parcelRequire(\"7BQbw\");\n\nvar $02VYc = parcelRequire(\"02VYc\");\n\nvar $bqRYk = parcelRequire(\"bqRYk\");\n\nvar $59aVE = parcelRequire(\"59aVE\");\n\nvar $7KSX8 = parcelRequire(\"7KSX8\");\n\nvar $kwLGk = parcelRequire(\"kwLGk\");\n\nvar $8fo7C = parcelRequire(\"8fo7C\");\n\nvar $2SWep = parcelRequire(\"2SWep\");\nvar $2092a5003543a5d1$export$2e2bcd8739ae039 = function(_Viewport) {\n (0, $59aVE.default)(WebMercatorViewport, _Viewport);\n function WebMercatorViewport() {\n var _this;\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, width = _ref.width, height = _ref.height, _ref$latitude = _ref.latitude, latitude = _ref$latitude === void 0 ? 0 : _ref$latitude, _ref$longitude = _ref.longitude, longitude = _ref$longitude === void 0 ? 0 : _ref$longitude, _ref$zoom = _ref.zoom, zoom = _ref$zoom === void 0 ? 0 : _ref$zoom, _ref$pitch = _ref.pitch, pitch = _ref$pitch === void 0 ? 0 : _ref$pitch, _ref$bearing = _ref.bearing, bearing = _ref$bearing === void 0 ? 0 : _ref$bearing, _ref$altitude = _ref.altitude, altitude = _ref$altitude === void 0 ? 1.5 : _ref$altitude, _ref$nearZMultiplier = _ref.nearZMultiplier, nearZMultiplier = _ref$nearZMultiplier === void 0 ? 0.02 : _ref$nearZMultiplier, _ref$farZMultiplier = _ref.farZMultiplier, farZMultiplier = _ref$farZMultiplier === void 0 ? 1.01 : _ref$farZMultiplier;\n (0, $dYxCI.default)(this, WebMercatorViewport);\n width = width || 1;\n height = height || 1;\n var scale = (0, $kwLGk.zoomToScale)(zoom);\n altitude = Math.max(0.75, altitude);\n var center = (0, $kwLGk.lngLatToWorld)([\n longitude,\n latitude\n ]);\n center[2] = 0;\n var projectionMatrix = (0, $kwLGk.getProjectionMatrix)({\n width: width,\n height: height,\n pitch: pitch,\n bearing: bearing,\n altitude: altitude,\n nearZMultiplier: nearZMultiplier,\n farZMultiplier: farZMultiplier\n });\n var viewMatrix = (0, $kwLGk.getViewMatrix)({\n height: height,\n scale: scale,\n center: center,\n pitch: pitch,\n bearing: bearing,\n altitude: altitude\n });\n _this = (0, $7BQbw.default)(this, (0, $02VYc.default)(WebMercatorViewport).call(this, {\n width: width,\n height: height,\n scale: scale,\n viewMatrix: viewMatrix,\n projectionMatrix: projectionMatrix\n }));\n _this.latitude = latitude;\n _this.longitude = longitude;\n _this.zoom = zoom;\n _this.pitch = pitch;\n _this.bearing = bearing;\n _this.altitude = altitude;\n _this.center = center;\n _this.unitsPerMeter = (0, $kwLGk.getDistanceScales)((0, $bqRYk.default)(_this)).unitsPerMeter[2];\n Object.freeze((0, $bqRYk.default)(_this));\n return _this;\n }\n (0, $16cE9.default)(WebMercatorViewport, [\n {\n key: \"projectFlat\",\n value: function projectFlat(lngLat) {\n return (0, $kwLGk.lngLatToWorld)(lngLat);\n }\n },\n {\n key: \"unprojectFlat\",\n value: function unprojectFlat(xy) {\n return (0, $kwLGk.worldToLngLat)(xy);\n }\n },\n {\n key: \"getMapCenterByLngLatPosition\",\n value: function getMapCenterByLngLatPosition(_ref2) {\n var lngLat = _ref2.lngLat, pos = _ref2.pos;\n var fromLocation = (0, $kwLGk.pixelsToWorld)(pos, this.pixelUnprojectionMatrix);\n var toLocation = (0, $kwLGk.lngLatToWorld)(lngLat);\n var translate = $2SWep.add([], toLocation, $2SWep.negate([], fromLocation));\n var newCenter = $2SWep.add([], this.center, translate);\n return (0, $kwLGk.worldToLngLat)(newCenter, this.scale);\n }\n },\n {\n key: \"getLocationAtPoint\",\n value: function getLocationAtPoint(_ref3) {\n var lngLat = _ref3.lngLat, pos = _ref3.pos;\n return this.getMapCenterByLngLatPosition({\n lngLat: lngLat,\n pos: pos\n });\n }\n },\n {\n key: \"fitBounds\",\n value: function fitBounds(bounds) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = this.width, height = this.height;\n var _fitBounds2 = (0, $8fo7C.default)(Object.assign({\n width: width,\n height: height,\n bounds: bounds\n }, options)), longitude = _fitBounds2.longitude, latitude = _fitBounds2.latitude, zoom = _fitBounds2.zoom;\n return new WebMercatorViewport({\n width: width,\n height: height,\n longitude: longitude,\n latitude: latitude,\n zoom: zoom\n });\n }\n }\n ]);\n return WebMercatorViewport;\n}((0, $7KSX8.default));\n\n});\nparcelRegister(\"dYxCI\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $a2caf5e003e8c581$export$2e2bcd8739ae039; });\nfunction $a2caf5e003e8c581$export$2e2bcd8739ae039(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\n\n});\n\nparcelRegister(\"16cE9\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $0cd0295bab3691a5$export$2e2bcd8739ae039; });\nfunction $0cd0295bab3691a5$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $0cd0295bab3691a5$export$2e2bcd8739ae039(Constructor, protoProps, staticProps) {\n if (protoProps) $0cd0295bab3691a5$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $0cd0295bab3691a5$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\n});\n\nparcelRegister(\"7BQbw\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $58a477ebbc7a3ace$export$2e2bcd8739ae039; });\n\nvar $94j5f = parcelRequire(\"94j5f\");\n\nvar $bqRYk = parcelRequire(\"bqRYk\");\nfunction $58a477ebbc7a3ace$export$2e2bcd8739ae039(self, call) {\n if (call && ((0, $94j5f.default)(call) === \"object\" || typeof call === \"function\")) return call;\n return (0, $bqRYk.default)(self);\n}\n\n});\nparcelRegister(\"94j5f\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $69a34a5f06e77f7a$export$2e2bcd8739ae039; });\nfunction $69a34a5f06e77f7a$export$2e2bcd8739ae039(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $69a34a5f06e77f7a$export$2e2bcd8739ae039 = function _typeof(obj) {\n return typeof obj;\n };\n else $69a34a5f06e77f7a$export$2e2bcd8739ae039 = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $69a34a5f06e77f7a$export$2e2bcd8739ae039(obj);\n}\n\n});\n\nparcelRegister(\"bqRYk\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $852bfd241f2b403e$export$2e2bcd8739ae039; });\nfunction $852bfd241f2b403e$export$2e2bcd8739ae039(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\n\n});\n\n\nparcelRegister(\"02VYc\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $008d27aa72bdac94$export$2e2bcd8739ae039; });\nfunction $008d27aa72bdac94$export$2e2bcd8739ae039(o) {\n $008d27aa72bdac94$export$2e2bcd8739ae039 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $008d27aa72bdac94$export$2e2bcd8739ae039(o);\n}\n\n});\n\nparcelRegister(\"59aVE\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $3bf64541cd3d1b83$export$2e2bcd8739ae039; });\n\nvar $1kHih = parcelRequire(\"1kHih\");\nfunction $3bf64541cd3d1b83$export$2e2bcd8739ae039(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) (0, $1kHih.default)(subClass, superClass);\n}\n\n});\nparcelRegister(\"1kHih\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $0f893df7fba7b0f2$export$2e2bcd8739ae039; });\nfunction $0f893df7fba7b0f2$export$2e2bcd8739ae039(o, p) {\n $0f893df7fba7b0f2$export$2e2bcd8739ae039 = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $0f893df7fba7b0f2$export$2e2bcd8739ae039(o, p);\n}\n\n});\n\n\nparcelRegister(\"7KSX8\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $5a5774bdec835d33$export$2e2bcd8739ae039; });\n\nvar $kkBq7 = parcelRequire(\"kkBq7\");\n\nvar $dYxCI = parcelRequire(\"dYxCI\");\n\nvar $16cE9 = parcelRequire(\"16cE9\");\n\nvar $8Ke6L = parcelRequire(\"8Ke6L\");\n\nvar $kwLGk = parcelRequire(\"kwLGk\");\n\nvar $9SfcV = parcelRequire(\"9SfcV\");\nvar $5a5774bdec835d33$var$IDENTITY = (0, $8Ke6L.createMat4)();\nvar $5a5774bdec835d33$export$2e2bcd8739ae039 = function() {\n function Viewport() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, width = _ref.width, height = _ref.height, scale = _ref.scale, _ref$viewMatrix = _ref.viewMatrix, viewMatrix = _ref$viewMatrix === void 0 ? $5a5774bdec835d33$var$IDENTITY : _ref$viewMatrix, _ref$projectionMatrix = _ref.projectionMatrix, projectionMatrix = _ref$projectionMatrix === void 0 ? $5a5774bdec835d33$var$IDENTITY : _ref$projectionMatrix;\n (0, $dYxCI.default)(this, Viewport);\n this.width = width || 1;\n this.height = height || 1;\n this.scale = scale;\n this.unitsPerMeter = 1;\n this.viewMatrix = viewMatrix;\n this.projectionMatrix = projectionMatrix;\n var vpm = (0, $8Ke6L.createMat4)();\n $9SfcV.multiply(vpm, vpm, this.projectionMatrix);\n $9SfcV.multiply(vpm, vpm, this.viewMatrix);\n this.viewProjectionMatrix = vpm;\n var m = (0, $8Ke6L.createMat4)();\n $9SfcV.scale(m, m, [\n this.width / 2,\n -this.height / 2,\n 1\n ]);\n $9SfcV.translate(m, m, [\n 1,\n -1,\n 0\n ]);\n $9SfcV.multiply(m, m, this.viewProjectionMatrix);\n var mInverse = $9SfcV.invert((0, $8Ke6L.createMat4)(), m);\n if (!mInverse) throw new Error(\"Pixel project matrix not invertible\");\n this.pixelProjectionMatrix = m;\n this.pixelUnprojectionMatrix = mInverse;\n this.equals = this.equals.bind(this);\n this.project = this.project.bind(this);\n this.unproject = this.unproject.bind(this);\n this.projectPosition = this.projectPosition.bind(this);\n this.unprojectPosition = this.unprojectPosition.bind(this);\n this.projectFlat = this.projectFlat.bind(this);\n this.unprojectFlat = this.unprojectFlat.bind(this);\n }\n (0, $16cE9.default)(Viewport, [\n {\n key: \"equals\",\n value: function equals(viewport) {\n if (!(viewport instanceof Viewport)) return false;\n return viewport.width === this.width && viewport.height === this.height && $9SfcV.equals(viewport.projectionMatrix, this.projectionMatrix) && $9SfcV.equals(viewport.viewMatrix, this.viewMatrix);\n }\n },\n {\n key: \"project\",\n value: function project(xyz) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, _ref2$topLeft = _ref2.topLeft, topLeft = _ref2$topLeft === void 0 ? true : _ref2$topLeft;\n var worldPosition = this.projectPosition(xyz);\n var coord = (0, $kwLGk.worldToPixels)(worldPosition, this.pixelProjectionMatrix);\n var _coord = (0, $kkBq7.default)(coord, 2), x = _coord[0], y = _coord[1];\n var y2 = topLeft ? y : this.height - y;\n return xyz.length === 2 ? [\n x,\n y2\n ] : [\n x,\n y2,\n coord[2]\n ];\n }\n },\n {\n key: \"unproject\",\n value: function unproject(xyz) {\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, _ref3$topLeft = _ref3.topLeft, topLeft = _ref3$topLeft === void 0 ? true : _ref3$topLeft, targetZ = _ref3.targetZ;\n var _xyz = (0, $kkBq7.default)(xyz, 3), x = _xyz[0], y = _xyz[1], z = _xyz[2];\n var y2 = topLeft ? y : this.height - y;\n var targetZWorld = targetZ && targetZ * this.unitsPerMeter;\n var coord = (0, $kwLGk.pixelsToWorld)([\n x,\n y2,\n z\n ], this.pixelUnprojectionMatrix, targetZWorld);\n var _this$unprojectPositi = this.unprojectPosition(coord), _this$unprojectPositi2 = (0, $kkBq7.default)(_this$unprojectPositi, 3), X = _this$unprojectPositi2[0], Y = _this$unprojectPositi2[1], Z = _this$unprojectPositi2[2];\n if (Number.isFinite(z)) return [\n X,\n Y,\n Z\n ];\n return Number.isFinite(targetZ) ? [\n X,\n Y,\n targetZ\n ] : [\n X,\n Y\n ];\n }\n },\n {\n key: \"projectPosition\",\n value: function projectPosition(xyz) {\n var _this$projectFlat = this.projectFlat(xyz), _this$projectFlat2 = (0, $kkBq7.default)(_this$projectFlat, 2), X = _this$projectFlat2[0], Y = _this$projectFlat2[1];\n var Z = (xyz[2] || 0) * this.unitsPerMeter;\n return [\n X,\n Y,\n Z\n ];\n }\n },\n {\n key: \"unprojectPosition\",\n value: function unprojectPosition(xyz) {\n var _this$unprojectFlat = this.unprojectFlat(xyz), _this$unprojectFlat2 = (0, $kkBq7.default)(_this$unprojectFlat, 2), X = _this$unprojectFlat2[0], Y = _this$unprojectFlat2[1];\n var Z = (xyz[2] || 0) / this.unitsPerMeter;\n return [\n X,\n Y,\n Z\n ];\n }\n },\n {\n key: \"projectFlat\",\n value: function projectFlat(xyz) {\n var scale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.scale;\n return xyz;\n }\n },\n {\n key: \"unprojectFlat\",\n value: function unprojectFlat(xyz) {\n var scale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.scale;\n return xyz;\n }\n }\n ]);\n return Viewport;\n}();\n\n});\nparcelRegister(\"kkBq7\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ecd2b3c76fb94345$export$2e2bcd8739ae039; });\n\nvar $eGfCf = parcelRequire(\"eGfCf\");\n\nvar $hr5VG = parcelRequire(\"hr5VG\");\n\nvar $jlviv = parcelRequire(\"jlviv\");\n\nvar $f0MNS = parcelRequire(\"f0MNS\");\nfunction $ecd2b3c76fb94345$export$2e2bcd8739ae039(arr, i) {\n return (0, $eGfCf.default)(arr) || (0, $hr5VG.default)(arr, i) || (0, $jlviv.default)(arr, i) || (0, $f0MNS.default)();\n}\n\n});\nparcelRegister(\"eGfCf\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ab0119f132be4533$export$2e2bcd8739ae039; });\nfunction $ab0119f132be4533$export$2e2bcd8739ae039(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\n});\n\nparcelRegister(\"hr5VG\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $cb198ebf5d450510$export$2e2bcd8739ae039; });\nfunction $cb198ebf5d450510$export$2e2bcd8739ae039(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for(var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\n\n});\n\nparcelRegister(\"jlviv\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $e1584180bebf7e16$export$2e2bcd8739ae039; });\n\nvar $lAFYl = parcelRequire(\"lAFYl\");\nfunction $e1584180bebf7e16$export$2e2bcd8739ae039(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return (0, $lAFYl.default)(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return (0, $lAFYl.default)(o, minLen);\n}\n\n});\nparcelRegister(\"lAFYl\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $fb7d8492755baaa1$export$2e2bcd8739ae039; });\nfunction $fb7d8492755baaa1$export$2e2bcd8739ae039(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\n\n});\n\n\nparcelRegister(\"f0MNS\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $aedcb6730bbdd7a0$export$2e2bcd8739ae039; });\nfunction $aedcb6730bbdd7a0$export$2e2bcd8739ae039() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n});\n\n\nparcelRegister(\"8Ke6L\", function(module, exports) {\n\n$parcel$export(module.exports, \"createMat4\", function () { return $65dd9033e92b6a5a$export$1a9a28cade4dcdc4; });\n$parcel$export(module.exports, \"transformVector\", function () { return $65dd9033e92b6a5a$export$8248199402822036; });\n$parcel$export(module.exports, \"mod\", function () { return $65dd9033e92b6a5a$export$842a2cf37af977e1; });\n$parcel$export(module.exports, \"lerp\", function () { return $65dd9033e92b6a5a$export$3a89f8d6f6bf6c9f; });\n\nvar $ecdDb = parcelRequire(\"ecdDb\");\nfunction $65dd9033e92b6a5a$export$1a9a28cade4dcdc4() {\n return [\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ];\n}\nfunction $65dd9033e92b6a5a$export$8248199402822036(matrix, vector) {\n var result = $ecdDb.transformMat4([], vector, matrix);\n $ecdDb.scale(result, result, 1 / result[3]);\n return result;\n}\nfunction $65dd9033e92b6a5a$export$842a2cf37af977e1(value, divisor) {\n var modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\nfunction $65dd9033e92b6a5a$export$3a89f8d6f6bf6c9f(start, end, step) {\n return step * end + (1 - step) * start;\n}\n\n});\nparcelRegister(\"ecdDb\", function(module, exports) {\n\n$parcel$export(module.exports, \"scale\", function () { return $a55cc2826f401162$export$dcdf75081b88279d; });\n$parcel$export(module.exports, \"transformMat4\", function () { return $a55cc2826f401162$export$5ffbd13800309d59; });\n\nvar $9lyvx = parcelRequire(\"9lyvx\");\nfunction $a55cc2826f401162$export$185802fd694ee1f5() {\n var out = new $9lyvx.ARRAY_TYPE(4);\n if ($9lyvx.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n return out;\n}\nfunction $a55cc2826f401162$export$9cd59f9826255e47(a) {\n var out = new $9lyvx.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\nfunction $a55cc2826f401162$export$a82be99ed2a44a7d(x, y, z, w) {\n var out = new $9lyvx.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\nfunction $a55cc2826f401162$export$784d13d8ee351f07(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\nfunction $a55cc2826f401162$export$adaa4cf7ef1b65be(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\nfunction $a55cc2826f401162$export$e16d8520af44a096(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\nfunction $a55cc2826f401162$export$4e2d2ead65e5f7e3(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\nfunction $a55cc2826f401162$export$2060d2db72cce88f(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\nfunction $a55cc2826f401162$export$cd007d971a5a2143(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\nfunction $a55cc2826f401162$export$803ce6b71a0a94b2(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\nfunction $a55cc2826f401162$export$a3fe094919f356fd(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\nfunction $a55cc2826f401162$export$96ec731ed4dcb222(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\nfunction $a55cc2826f401162$export$8960430cfd85939f(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\nfunction $a55cc2826f401162$export$2077e0241d6afd3c(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\nfunction $a55cc2826f401162$export$dcdf75081b88279d(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\nfunction $a55cc2826f401162$export$19cedf1da84ba854(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\nfunction $a55cc2826f401162$export$9f17032d917177de(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\nfunction $a55cc2826f401162$export$88e6ebb4fe54f538(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\nfunction $a55cc2826f401162$export$f24224f1c91d8156(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\nfunction $a55cc2826f401162$export$ab44e1323ffc8376(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\nfunction $a55cc2826f401162$export$aef51622e549b8b0(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\nfunction $a55cc2826f401162$export$70ae2c07e401031b(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\nfunction $a55cc2826f401162$export$a3295358bff77e(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n if (len > 0) len = 1 / Math.sqrt(len);\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\nfunction $a55cc2826f401162$export$94132a0e348806d4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\nfunction $a55cc2826f401162$export$bb646b20bb93d339(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0], B = v[0] * w[2] - v[2] * w[0], C = v[0] * w[3] - v[3] * w[0], D = v[1] * w[2] - v[2] * w[1], E = v[1] * w[3] - v[3] * w[1], F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\nfunction $a55cc2826f401162$export$3a89f8d6f6bf6c9f(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\nfunction $a55cc2826f401162$export$4385e60b38654f68(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n var v1, v2, v3, v4;\n var s1, s2;\n do {\n v1 = $9lyvx.RANDOM() * 2 - 1;\n v2 = $9lyvx.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n }while (s1 >= 1);\n do {\n v3 = $9lyvx.RANDOM() * 2 - 1;\n v4 = $9lyvx.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n }while (s2 >= 1);\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\nfunction $a55cc2826f401162$export$5ffbd13800309d59(out, a, m) {\n var x = a[0], y = a[1], z = a[2], w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\nfunction $a55cc2826f401162$export$c32adef9e939ce85(out, a, q) {\n var x = a[0], y = a[1], z = a[2];\n var qx = q[0], qy = q[1], qz = q[2], qw = q[3]; // calculate quat * vec\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\nfunction $a55cc2826f401162$export$7f9972325ebfd559(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\nfunction $a55cc2826f401162$export$42d51816ce590c93(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\nfunction $a55cc2826f401162$export$f2599a5cf1109d8(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\nfunction $a55cc2826f401162$export$e9bab7fafb253603(a, b) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n return Math.abs(a0 - b0) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\nvar $a55cc2826f401162$export$f93b5905241a7cca = $a55cc2826f401162$export$4e2d2ead65e5f7e3;\nvar $a55cc2826f401162$export$6e3a27864ab166fe = $a55cc2826f401162$export$2060d2db72cce88f;\nvar $a55cc2826f401162$export$159d9494db57879b = $a55cc2826f401162$export$cd007d971a5a2143;\nvar $a55cc2826f401162$export$6c4a311cc157c764 = $a55cc2826f401162$export$9f17032d917177de;\nvar $a55cc2826f401162$export$2422cd6c492a8b3a = $a55cc2826f401162$export$88e6ebb4fe54f538;\nvar $a55cc2826f401162$export$fc1400facf92c78 = $a55cc2826f401162$export$f24224f1c91d8156;\nvar $a55cc2826f401162$export$99d8dd3f32a3435 = $a55cc2826f401162$export$ab44e1323ffc8376;\nvar $a55cc2826f401162$export$4b80e395e36b5a56 = function() {\n var vec = $a55cc2826f401162$export$185802fd694ee1f5();\n return function(a, stride, offset, count, fn, arg) {\n var i, l;\n if (!stride) stride = 4;\n if (!offset) offset = 0;\n if (count) l = Math.min(count * stride + offset, a.length);\n else l = a.length;\n for(i = offset; i < l; i += stride){\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n return a;\n };\n}();\n\n});\nparcelRegister(\"9lyvx\", function(module, exports) {\n\n$parcel$export(module.exports, \"EPSILON\", function () { return $6ce0d7bdb6009507$export$fd293b15f47e270; });\n$parcel$export(module.exports, \"ARRAY_TYPE\", function () { return $6ce0d7bdb6009507$export$b67359430d3b1b2; });\n$parcel$export(module.exports, \"RANDOM\", function () { return $6ce0d7bdb6009507$export$5ada478c8a628231; });\n/**\r\n * Common utilities\r\n * @module glMatrix\r\n */ // Configuration Constants\nvar $6ce0d7bdb6009507$export$fd293b15f47e270 = 0.000001;\nvar $6ce0d7bdb6009507$export$b67359430d3b1b2 = typeof Float32Array !== \"undefined\" ? Float32Array : Array;\nvar $6ce0d7bdb6009507$export$5ada478c8a628231 = Math.random;\nfunction $6ce0d7bdb6009507$export$cb2c0eb57f5e532c(type) {\n $6ce0d7bdb6009507$export$b67359430d3b1b2 = type;\n}\nvar $6ce0d7bdb6009507$var$degree = Math.PI / 180;\nfunction $6ce0d7bdb6009507$export$408b8ee5959eefd5(a) {\n return a * $6ce0d7bdb6009507$var$degree;\n}\nfunction $6ce0d7bdb6009507$export$e9bab7fafb253603(a, b) {\n return Math.abs(a - b) <= $6ce0d7bdb6009507$export$fd293b15f47e270 * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function() {\n var y = 0, i = arguments.length;\n while(i--)y += arguments[i] * arguments[i];\n return Math.sqrt(y);\n};\n\n});\n\n\n\nparcelRegister(\"kwLGk\", function(module, exports) {\n\n$parcel$export(module.exports, \"zoomToScale\", function () { return $ef1bc868ec4f3759$export$eda81de7742ad8e7; });\n$parcel$export(module.exports, \"scaleToZoom\", function () { return $ef1bc868ec4f3759$export$6e08c044660f3e30; });\n$parcel$export(module.exports, \"lngLatToWorld\", function () { return $ef1bc868ec4f3759$export$4a0e8ea52607cc9b; });\n$parcel$export(module.exports, \"worldToLngLat\", function () { return $ef1bc868ec4f3759$export$66ee0abd8a6a9660; });\n$parcel$export(module.exports, \"getMeterZoom\", function () { return $ef1bc868ec4f3759$export$f4aaab1d865abddd; });\n$parcel$export(module.exports, \"getDistanceScales\", function () { return $ef1bc868ec4f3759$export$14a522c4e7772100; });\n$parcel$export(module.exports, \"addMetersToLngLat\", function () { return $ef1bc868ec4f3759$export$86ab4399faf187a8; });\n$parcel$export(module.exports, \"getViewMatrix\", function () { return $ef1bc868ec4f3759$export$a4dee078b9284944; });\n$parcel$export(module.exports, \"getProjectionParameters\", function () { return $ef1bc868ec4f3759$export$3debb7b92b597428; });\n$parcel$export(module.exports, \"getProjectionMatrix\", function () { return $ef1bc868ec4f3759$export$1d64991cd669ebf9; });\n$parcel$export(module.exports, \"worldToPixels\", function () { return $ef1bc868ec4f3759$export$46d0dd92e8f9a0db; });\n$parcel$export(module.exports, \"pixelsToWorld\", function () { return $ef1bc868ec4f3759$export$d0eff18eb06add5f; });\n\nvar $kkBq7 = parcelRequire(\"kkBq7\");\n\nvar $8Ke6L = parcelRequire(\"8Ke6L\");\n\nvar $9SfcV = parcelRequire(\"9SfcV\");\n\nvar $2SWep = parcelRequire(\"2SWep\");\n\nvar $b4Q0K = parcelRequire(\"b4Q0K\");\n\nvar $9rQ4F = parcelRequire(\"9rQ4F\");\nvar $ef1bc868ec4f3759$var$PI = Math.PI;\nvar $ef1bc868ec4f3759$var$PI_4 = $ef1bc868ec4f3759$var$PI / 4;\nvar $ef1bc868ec4f3759$var$DEGREES_TO_RADIANS = $ef1bc868ec4f3759$var$PI / 180;\nvar $ef1bc868ec4f3759$var$RADIANS_TO_DEGREES = 180 / $ef1bc868ec4f3759$var$PI;\nvar $ef1bc868ec4f3759$var$TILE_SIZE = 512;\nvar $ef1bc868ec4f3759$var$EARTH_CIRCUMFERENCE = 40.03e6;\nvar $ef1bc868ec4f3759$var$DEFAULT_ALTITUDE = 1.5;\nfunction $ef1bc868ec4f3759$export$eda81de7742ad8e7(zoom) {\n return Math.pow(2, zoom);\n}\nfunction $ef1bc868ec4f3759$export$6e08c044660f3e30(scale) {\n return Math.log2(scale);\n}\nfunction $ef1bc868ec4f3759$export$4a0e8ea52607cc9b(_ref) {\n var _ref2 = (0, $kkBq7.default)(_ref, 2), lng = _ref2[0], lat = _ref2[1];\n (0, $9rQ4F.default)(Number.isFinite(lng));\n (0, $9rQ4F.default)(Number.isFinite(lat) && lat >= -90 && lat <= 90, \"invalid latitude\");\n var lambda2 = lng * $ef1bc868ec4f3759$var$DEGREES_TO_RADIANS;\n var phi2 = lat * $ef1bc868ec4f3759$var$DEGREES_TO_RADIANS;\n var x = $ef1bc868ec4f3759$var$TILE_SIZE * (lambda2 + $ef1bc868ec4f3759$var$PI) / (2 * $ef1bc868ec4f3759$var$PI);\n var y = $ef1bc868ec4f3759$var$TILE_SIZE * ($ef1bc868ec4f3759$var$PI + Math.log(Math.tan($ef1bc868ec4f3759$var$PI_4 + phi2 * 0.5))) / (2 * $ef1bc868ec4f3759$var$PI);\n return [\n x,\n y\n ];\n}\nfunction $ef1bc868ec4f3759$export$66ee0abd8a6a9660(_ref3) {\n var _ref4 = (0, $kkBq7.default)(_ref3, 2), x = _ref4[0], y = _ref4[1];\n var lambda2 = x / $ef1bc868ec4f3759$var$TILE_SIZE * (2 * $ef1bc868ec4f3759$var$PI) - $ef1bc868ec4f3759$var$PI;\n var phi2 = 2 * (Math.atan(Math.exp(y / $ef1bc868ec4f3759$var$TILE_SIZE * (2 * $ef1bc868ec4f3759$var$PI) - $ef1bc868ec4f3759$var$PI)) - $ef1bc868ec4f3759$var$PI_4);\n return [\n lambda2 * $ef1bc868ec4f3759$var$RADIANS_TO_DEGREES,\n phi2 * $ef1bc868ec4f3759$var$RADIANS_TO_DEGREES\n ];\n}\nfunction $ef1bc868ec4f3759$export$f4aaab1d865abddd(_ref5) {\n var latitude = _ref5.latitude;\n (0, $9rQ4F.default)(Number.isFinite(latitude));\n var latCosine = Math.cos(latitude * $ef1bc868ec4f3759$var$DEGREES_TO_RADIANS);\n return $ef1bc868ec4f3759$export$6e08c044660f3e30($ef1bc868ec4f3759$var$EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\nfunction $ef1bc868ec4f3759$export$14a522c4e7772100(_ref6) {\n var latitude = _ref6.latitude, longitude = _ref6.longitude, _ref6$highPrecision = _ref6.highPrecision, highPrecision = _ref6$highPrecision === void 0 ? false : _ref6$highPrecision;\n (0, $9rQ4F.default)(Number.isFinite(latitude) && Number.isFinite(longitude));\n var result = {};\n var worldSize = $ef1bc868ec4f3759$var$TILE_SIZE;\n var latCosine = Math.cos(latitude * $ef1bc868ec4f3759$var$DEGREES_TO_RADIANS);\n var unitsPerDegreeX = worldSize / 360;\n var unitsPerDegreeY = unitsPerDegreeX / latCosine;\n var altUnitsPerMeter = worldSize / $ef1bc868ec4f3759$var$EARTH_CIRCUMFERENCE / latCosine;\n result.unitsPerMeter = [\n altUnitsPerMeter,\n altUnitsPerMeter,\n altUnitsPerMeter\n ];\n result.metersPerUnit = [\n 1 / altUnitsPerMeter,\n 1 / altUnitsPerMeter,\n 1 / altUnitsPerMeter\n ];\n result.unitsPerDegree = [\n unitsPerDegreeX,\n unitsPerDegreeY,\n altUnitsPerMeter\n ];\n result.degreesPerUnit = [\n 1 / unitsPerDegreeX,\n 1 / unitsPerDegreeY,\n 1 / altUnitsPerMeter\n ];\n if (highPrecision) {\n var latCosine2 = $ef1bc868ec4f3759$var$DEGREES_TO_RADIANS * Math.tan(latitude * $ef1bc868ec4f3759$var$DEGREES_TO_RADIANS) / latCosine;\n var unitsPerDegreeY2 = unitsPerDegreeX * latCosine2 / 2;\n var altUnitsPerDegree2 = worldSize / $ef1bc868ec4f3759$var$EARTH_CIRCUMFERENCE * latCosine2;\n var altUnitsPerMeter2 = altUnitsPerDegree2 / unitsPerDegreeY * altUnitsPerMeter;\n result.unitsPerDegree2 = [\n 0,\n unitsPerDegreeY2,\n altUnitsPerDegree2\n ];\n result.unitsPerMeter2 = [\n altUnitsPerMeter2,\n 0,\n altUnitsPerMeter2\n ];\n }\n return result;\n}\nfunction $ef1bc868ec4f3759$export$86ab4399faf187a8(lngLatZ, xyz) {\n var _lngLatZ = (0, $kkBq7.default)(lngLatZ, 3), longitude = _lngLatZ[0], latitude = _lngLatZ[1], z0 = _lngLatZ[2];\n var _xyz = (0, $kkBq7.default)(xyz, 3), x = _xyz[0], y = _xyz[1], z = _xyz[2];\n var _getDistanceScales = $ef1bc868ec4f3759$export$14a522c4e7772100({\n longitude: longitude,\n latitude: latitude,\n highPrecision: true\n }), unitsPerMeter = _getDistanceScales.unitsPerMeter, unitsPerMeter2 = _getDistanceScales.unitsPerMeter2;\n var worldspace = $ef1bc868ec4f3759$export$4a0e8ea52607cc9b(lngLatZ);\n worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n var newLngLat = $ef1bc868ec4f3759$export$66ee0abd8a6a9660(worldspace);\n var newZ = (z0 || 0) + (z || 0);\n return Number.isFinite(z0) || Number.isFinite(z) ? [\n newLngLat[0],\n newLngLat[1],\n newZ\n ] : newLngLat;\n}\nfunction $ef1bc868ec4f3759$export$a4dee078b9284944(_ref7) {\n var height = _ref7.height, pitch = _ref7.pitch, bearing = _ref7.bearing, altitude = _ref7.altitude, scale = _ref7.scale, _ref7$center = _ref7.center, center = _ref7$center === void 0 ? null : _ref7$center;\n var vm = (0, $8Ke6L.createMat4)();\n $9SfcV.translate(vm, vm, [\n 0,\n 0,\n -altitude\n ]);\n $9SfcV.rotateX(vm, vm, -pitch * $ef1bc868ec4f3759$var$DEGREES_TO_RADIANS);\n $9SfcV.rotateZ(vm, vm, bearing * $ef1bc868ec4f3759$var$DEGREES_TO_RADIANS);\n scale /= height;\n $9SfcV.scale(vm, vm, [\n scale,\n scale,\n scale\n ]);\n if (center) $9SfcV.translate(vm, vm, $b4Q0K.negate([], center));\n return vm;\n}\nfunction $ef1bc868ec4f3759$export$3debb7b92b597428(_ref8) {\n var width = _ref8.width, height = _ref8.height, _ref8$altitude = _ref8.altitude, altitude = _ref8$altitude === void 0 ? $ef1bc868ec4f3759$var$DEFAULT_ALTITUDE : _ref8$altitude, _ref8$pitch = _ref8.pitch, pitch = _ref8$pitch === void 0 ? 0 : _ref8$pitch, _ref8$nearZMultiplier = _ref8.nearZMultiplier, nearZMultiplier = _ref8$nearZMultiplier === void 0 ? 1 : _ref8$nearZMultiplier, _ref8$farZMultiplier = _ref8.farZMultiplier, farZMultiplier = _ref8$farZMultiplier === void 0 ? 1 : _ref8$farZMultiplier;\n var pitchRadians = pitch * $ef1bc868ec4f3759$var$DEGREES_TO_RADIANS;\n var halfFov = Math.atan(0.5 / altitude);\n var topHalfSurfaceDistance = Math.sin(halfFov) * altitude / Math.sin(Math.PI / 2 - pitchRadians - halfFov);\n var farZ = Math.cos(Math.PI / 2 - pitchRadians) * topHalfSurfaceDistance + altitude;\n return {\n fov: 2 * halfFov,\n aspect: width / height,\n focalDistance: altitude,\n near: nearZMultiplier,\n far: farZ * farZMultiplier\n };\n}\nfunction $ef1bc868ec4f3759$export$1d64991cd669ebf9(_ref9) {\n var width = _ref9.width, height = _ref9.height, pitch = _ref9.pitch, altitude = _ref9.altitude, nearZMultiplier = _ref9.nearZMultiplier, farZMultiplier = _ref9.farZMultiplier;\n var _getProjectionParamet = $ef1bc868ec4f3759$export$3debb7b92b597428({\n width: width,\n height: height,\n altitude: altitude,\n pitch: pitch,\n nearZMultiplier: nearZMultiplier,\n farZMultiplier: farZMultiplier\n }), fov = _getProjectionParamet.fov, aspect = _getProjectionParamet.aspect, near = _getProjectionParamet.near, far = _getProjectionParamet.far;\n var projectionMatrix = $9SfcV.perspective([], fov, aspect, near, far);\n return projectionMatrix;\n}\nfunction $ef1bc868ec4f3759$export$46d0dd92e8f9a0db(xyz, pixelProjectionMatrix) {\n var _xyz2 = (0, $kkBq7.default)(xyz, 3), x = _xyz2[0], y = _xyz2[1], _xyz2$ = _xyz2[2], z = _xyz2$ === void 0 ? 0 : _xyz2$;\n (0, $9rQ4F.default)(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n return (0, $8Ke6L.transformVector)(pixelProjectionMatrix, [\n x,\n y,\n z,\n 1\n ]);\n}\nfunction $ef1bc868ec4f3759$export$d0eff18eb06add5f(xyz, pixelUnprojectionMatrix) {\n var targetZ = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var _xyz3 = (0, $kkBq7.default)(xyz, 3), x = _xyz3[0], y = _xyz3[1], z = _xyz3[2];\n (0, $9rQ4F.default)(Number.isFinite(x) && Number.isFinite(y), \"invalid pixel coordinate\");\n if (Number.isFinite(z)) {\n var coord = (0, $8Ke6L.transformVector)(pixelUnprojectionMatrix, [\n x,\n y,\n z,\n 1\n ]);\n return coord;\n }\n var coord0 = (0, $8Ke6L.transformVector)(pixelUnprojectionMatrix, [\n x,\n y,\n 0,\n 1\n ]);\n var coord1 = (0, $8Ke6L.transformVector)(pixelUnprojectionMatrix, [\n x,\n y,\n 1,\n 1\n ]);\n var z0 = coord0[2];\n var z1 = coord1[2];\n var t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n return $2SWep.lerp([], coord0, coord1, t);\n}\n\n});\nparcelRegister(\"9SfcV\", function(module, exports) {\n\n$parcel$export(module.exports, \"invert\", function () { return $7304f41566363639$export$6897c284b6f9f4dc; });\n$parcel$export(module.exports, \"multiply\", function () { return $7304f41566363639$export$2060d2db72cce88f; });\n$parcel$export(module.exports, \"translate\", function () { return $7304f41566363639$export$d73ee8ef04f5226a; });\n$parcel$export(module.exports, \"scale\", function () { return $7304f41566363639$export$dcdf75081b88279d; });\n$parcel$export(module.exports, \"rotateX\", function () { return $7304f41566363639$export$a59c8716592e09af; });\n$parcel$export(module.exports, \"rotateZ\", function () { return $7304f41566363639$export$ea6eae3365de5b9c; });\n$parcel$export(module.exports, \"perspective\", function () { return $7304f41566363639$export$541149539f3a4684; });\n$parcel$export(module.exports, \"equals\", function () { return $7304f41566363639$export$e9bab7fafb253603; });\n\nvar $9lyvx = parcelRequire(\"9lyvx\");\nfunction $7304f41566363639$export$185802fd694ee1f5() {\n var out = new $9lyvx.ARRAY_TYPE(16);\n if ($9lyvx.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\nfunction $7304f41566363639$export$9cd59f9826255e47(a) {\n var out = new $9lyvx.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\nfunction $7304f41566363639$export$784d13d8ee351f07(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\nfunction $7304f41566363639$export$a82be99ed2a44a7d(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new $9lyvx.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\nfunction $7304f41566363639$export$adaa4cf7ef1b65be(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\nfunction $7304f41566363639$export$f0954fd7d5368655(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $7304f41566363639$export$9cb09a71b7d66923(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1], a02 = a[2], a03 = a[3];\n var a12 = a[6], a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n return out;\n}\nfunction $7304f41566363639$export$6897c284b6f9f4dc(out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n if (!det) return null;\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\nfunction $7304f41566363639$export$33f3c024b4ae00a1(out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\nfunction $7304f41566363639$export$a04698f914c55ed9(a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\nfunction $7304f41566363639$export$2060d2db72cce88f(out, a, b) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; // Cache only the current line of the second matrix\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\nfunction $7304f41566363639$export$d73ee8ef04f5226a(out, a, v) {\n var x = v[0], y = v[1], z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n return out;\n}\nfunction $7304f41566363639$export$dcdf75081b88279d(out, a, v) {\n var x = v[0], y = v[1], z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\nfunction $7304f41566363639$export$bb628a54ab399bc9(out, a, rad, axis) {\n var x = axis[0], y = axis[1], z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n if (len < $9lyvx.EPSILON) return null;\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n return out;\n}\nfunction $7304f41566363639$export$a59c8716592e09af(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\nfunction $7304f41566363639$export$cf71e4d4ca4d1cfd(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\nfunction $7304f41566363639$export$ea6eae3365de5b9c(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\nfunction $7304f41566363639$export$bc9e79e74e9fddf6(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\nfunction $7304f41566363639$export$832ca188ffb1955d(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $7304f41566363639$export$926fc125ff3c666c(out, rad, axis) {\n var x = axis[0], y = axis[1], z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n if (len < $9lyvx.EPSILON) return null;\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $7304f41566363639$export$dd47cc2f828c32ef(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $7304f41566363639$export$7dc997d67d2b7f33(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $7304f41566363639$export$ad5ddaedc8f405df(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $7304f41566363639$export$9545ac307f2a256b(out, q, v) {\n // Quaternion math\n var x = q[0], y = q[1], z = q[2], w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\nfunction $7304f41566363639$export$ff497f2be31cc6a(out, a) {\n var translation = new $9lyvx.ARRAY_TYPE(3);\n var bx = -a[0], by = -a[1], bz = -a[2], bw = a[3], ax = a[4], ay = a[5], az = a[6], aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n $7304f41566363639$export$9545ac307f2a256b(out, a, translation);\n return out;\n}\nfunction $7304f41566363639$export$202e99f82f7f0395(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\nfunction $7304f41566363639$export$71dc54d92bd04b57(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\nfunction $7304f41566363639$export$df3937d3b537df0a(out, mat) {\n var scaling = new $9lyvx.ARRAY_TYPE(3);\n $7304f41566363639$export$71dc54d92bd04b57(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n return out;\n}\nfunction $7304f41566363639$export$ddf9c55c9f2be172(out, q, v, s) {\n // Quaternion math\n var x = q[0], y = q[1], z = q[2], w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\nfunction $7304f41566363639$export$1def1f860edc4b1f(out, q, v, s, o) {\n // Quaternion math\n var x = q[0], y = q[1], z = q[2], w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\nfunction $7304f41566363639$export$2ff2bbe382249af7(out, q) {\n var x = q[0], y = q[1], z = q[2], w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\nfunction $7304f41566363639$export$89b5708c387cac6c(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\nfunction $7304f41566363639$export$541149539f3a4684(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2), nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n return out;\n}\nfunction $7304f41566363639$export$58ae211c788e338f(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\nfunction $7304f41566363639$export$4f2167e613cfc87b(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\nfunction $7304f41566363639$export$d924e14fd6d9aa66(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n if (Math.abs(eyex - centerx) < $9lyvx.EPSILON && Math.abs(eyey - centery) < $9lyvx.EPSILON && Math.abs(eyez - centerz) < $9lyvx.EPSILON) return $7304f41566363639$export$f0954fd7d5368655(out);\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\nfunction $7304f41566363639$export$aa67782f4dc9e52c(out, eye, target, up) {\n var eyex = eye[0], eyey = eye[1], eyez = eye[2], upx = up[0], upy = up[1], upz = up[2];\n var z0 = eyex - target[0], z1 = eyey - target[1], z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n var x0 = upy * z2 - upz * z1, x1 = upz * z0 - upx * z2, x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\nfunction $7304f41566363639$export$42d51816ce590c93(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\nfunction $7304f41566363639$export$326827e8268e9cdb(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\nfunction $7304f41566363639$export$e16d8520af44a096(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\nfunction $7304f41566363639$export$4e2d2ead65e5f7e3(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\nfunction $7304f41566363639$export$c697bed75648cdb7(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\nfunction $7304f41566363639$export$553579f63bdd7137(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\nfunction $7304f41566363639$export$f2599a5cf1109d8(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\nfunction $7304f41566363639$export$e9bab7fafb253603(a, b) {\n var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n var a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7];\n var a8 = a[8], a9 = a[9], a10 = a[10], a11 = a[11];\n var a12 = a[12], a13 = a[13], a14 = a[14], a15 = a[15];\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n var b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7];\n var b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11];\n var b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n return Math.abs(a0 - b0) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\nvar $7304f41566363639$export$6e3a27864ab166fe = $7304f41566363639$export$2060d2db72cce88f;\nvar $7304f41566363639$export$f93b5905241a7cca = $7304f41566363639$export$4e2d2ead65e5f7e3;\n\n});\n\nparcelRegister(\"2SWep\", function(module, exports) {\n\n$parcel$export(module.exports, \"add\", function () { return $219dcb74654080fe$export$e16d8520af44a096; });\n$parcel$export(module.exports, \"scale\", function () { return $219dcb74654080fe$export$dcdf75081b88279d; });\n$parcel$export(module.exports, \"length\", function () { return $219dcb74654080fe$export$f24224f1c91d8156; });\n$parcel$export(module.exports, \"negate\", function () { return $219dcb74654080fe$export$aef51622e549b8b0; });\n$parcel$export(module.exports, \"lerp\", function () { return $219dcb74654080fe$export$3a89f8d6f6bf6c9f; });\n$parcel$export(module.exports, \"sub\", function () { return $219dcb74654080fe$export$f93b5905241a7cca; });\n\nvar $9lyvx = parcelRequire(\"9lyvx\");\nfunction $219dcb74654080fe$export$185802fd694ee1f5() {\n var out = new $9lyvx.ARRAY_TYPE(2);\n if ($9lyvx.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n return out;\n}\nfunction $219dcb74654080fe$export$9cd59f9826255e47(a) {\n var out = new $9lyvx.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\nfunction $219dcb74654080fe$export$a82be99ed2a44a7d(x, y) {\n var out = new $9lyvx.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\nfunction $219dcb74654080fe$export$784d13d8ee351f07(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\nfunction $219dcb74654080fe$export$adaa4cf7ef1b65be(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\nfunction $219dcb74654080fe$export$e16d8520af44a096(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\nfunction $219dcb74654080fe$export$4e2d2ead65e5f7e3(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\nfunction $219dcb74654080fe$export$2060d2db72cce88f(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\nfunction $219dcb74654080fe$export$cd007d971a5a2143(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\nfunction $219dcb74654080fe$export$803ce6b71a0a94b2(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\nfunction $219dcb74654080fe$export$a3fe094919f356fd(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\nfunction $219dcb74654080fe$export$96ec731ed4dcb222(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\nfunction $219dcb74654080fe$export$8960430cfd85939f(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\nfunction $219dcb74654080fe$export$2077e0241d6afd3c(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\nfunction $219dcb74654080fe$export$dcdf75081b88279d(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\nfunction $219dcb74654080fe$export$19cedf1da84ba854(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\nfunction $219dcb74654080fe$export$9f17032d917177de(a, b) {\n var x = b[0] - a[0], y = b[1] - a[1];\n return Math.hypot(x, y);\n}\nfunction $219dcb74654080fe$export$88e6ebb4fe54f538(a, b) {\n var x = b[0] - a[0], y = b[1] - a[1];\n return x * x + y * y;\n}\nfunction $219dcb74654080fe$export$f24224f1c91d8156(a) {\n var x = a[0], y = a[1];\n return Math.hypot(x, y);\n}\nfunction $219dcb74654080fe$export$ab44e1323ffc8376(a) {\n var x = a[0], y = a[1];\n return x * x + y * y;\n}\nfunction $219dcb74654080fe$export$aef51622e549b8b0(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\nfunction $219dcb74654080fe$export$70ae2c07e401031b(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\nfunction $219dcb74654080fe$export$a3295358bff77e(out, a) {\n var x = a[0], y = a[1];\n var len = x * x + y * y;\n if (len > 0) //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\nfunction $219dcb74654080fe$export$94132a0e348806d4(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\nfunction $219dcb74654080fe$export$bb646b20bb93d339(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\nfunction $219dcb74654080fe$export$3a89f8d6f6bf6c9f(out, a, b, t) {\n var ax = a[0], ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\nfunction $219dcb74654080fe$export$4385e60b38654f68(out, scale) {\n scale = scale || 1.0;\n var r = $9lyvx.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\nfunction $219dcb74654080fe$export$b732428d73874bfc(out, a, m) {\n var x = a[0], y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\nfunction $219dcb74654080fe$export$3e55bc4b3707dfd3(out, a, m) {\n var x = a[0], y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\nfunction $219dcb74654080fe$export$f0bfa0a0024626ee(out, a, m) {\n var x = a[0], y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\nfunction $219dcb74654080fe$export$5ffbd13800309d59(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\nfunction $219dcb74654080fe$export$bb628a54ab399bc9(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0], p1 = a[1] - b[1], sinC = Math.sin(rad), cosC = Math.cos(rad); //perform rotation and translate to correct position\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\nfunction $219dcb74654080fe$export$944b09d2ad10b378(a, b) {\n var x1 = a[0], y1 = a[1], x2 = b[0], y2 = b[1], // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2), // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\nfunction $219dcb74654080fe$export$7f9972325ebfd559(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\nfunction $219dcb74654080fe$export$42d51816ce590c93(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\nfunction $219dcb74654080fe$export$f2599a5cf1109d8(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\nfunction $219dcb74654080fe$export$e9bab7fafb253603(a, b) {\n var a0 = a[0], a1 = a[1];\n var b0 = b[0], b1 = b[1];\n return Math.abs(a0 - b0) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\nvar $219dcb74654080fe$export$fc1400facf92c78 = $219dcb74654080fe$export$f24224f1c91d8156;\nvar $219dcb74654080fe$export$f93b5905241a7cca = $219dcb74654080fe$export$4e2d2ead65e5f7e3;\nvar $219dcb74654080fe$export$6e3a27864ab166fe = $219dcb74654080fe$export$2060d2db72cce88f;\nvar $219dcb74654080fe$export$159d9494db57879b = $219dcb74654080fe$export$cd007d971a5a2143;\nvar $219dcb74654080fe$export$6c4a311cc157c764 = $219dcb74654080fe$export$9f17032d917177de;\nvar $219dcb74654080fe$export$2422cd6c492a8b3a = $219dcb74654080fe$export$88e6ebb4fe54f538;\nvar $219dcb74654080fe$export$99d8dd3f32a3435 = $219dcb74654080fe$export$ab44e1323ffc8376;\nvar $219dcb74654080fe$export$4b80e395e36b5a56 = function() {\n var vec = $219dcb74654080fe$export$185802fd694ee1f5();\n return function(a, stride, offset, count, fn, arg) {\n var i, l;\n if (!stride) stride = 2;\n if (!offset) offset = 0;\n if (count) l = Math.min(count * stride + offset, a.length);\n else l = a.length;\n for(i = offset; i < l; i += stride){\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n return a;\n };\n}();\n\n});\n\nparcelRegister(\"b4Q0K\", function(module, exports) {\n\n$parcel$export(module.exports, \"negate\", function () { return $810869c39f835e02$export$aef51622e549b8b0; });\n\nvar $9lyvx = parcelRequire(\"9lyvx\");\nfunction $810869c39f835e02$export$185802fd694ee1f5() {\n var out = new $9lyvx.ARRAY_TYPE(3);\n if ($9lyvx.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n return out;\n}\nfunction $810869c39f835e02$export$9cd59f9826255e47(a) {\n var out = new $9lyvx.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\nfunction $810869c39f835e02$export$f24224f1c91d8156(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\nfunction $810869c39f835e02$export$a82be99ed2a44a7d(x, y, z) {\n var out = new $9lyvx.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\nfunction $810869c39f835e02$export$784d13d8ee351f07(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\nfunction $810869c39f835e02$export$adaa4cf7ef1b65be(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\nfunction $810869c39f835e02$export$e16d8520af44a096(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\nfunction $810869c39f835e02$export$4e2d2ead65e5f7e3(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\nfunction $810869c39f835e02$export$2060d2db72cce88f(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\nfunction $810869c39f835e02$export$cd007d971a5a2143(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\nfunction $810869c39f835e02$export$803ce6b71a0a94b2(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\nfunction $810869c39f835e02$export$a3fe094919f356fd(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\nfunction $810869c39f835e02$export$96ec731ed4dcb222(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\nfunction $810869c39f835e02$export$8960430cfd85939f(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\nfunction $810869c39f835e02$export$2077e0241d6afd3c(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\nfunction $810869c39f835e02$export$dcdf75081b88279d(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\nfunction $810869c39f835e02$export$19cedf1da84ba854(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\nfunction $810869c39f835e02$export$9f17032d917177de(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\nfunction $810869c39f835e02$export$88e6ebb4fe54f538(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\nfunction $810869c39f835e02$export$ab44e1323ffc8376(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\nfunction $810869c39f835e02$export$aef51622e549b8b0(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\nfunction $810869c39f835e02$export$70ae2c07e401031b(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\nfunction $810869c39f835e02$export$a3295358bff77e(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n if (len > 0) //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\nfunction $810869c39f835e02$export$94132a0e348806d4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\nfunction $810869c39f835e02$export$bb646b20bb93d339(out, a, b) {\n var ax = a[0], ay = a[1], az = a[2];\n var bx = b[0], by = b[1], bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\nfunction $810869c39f835e02$export$3a89f8d6f6bf6c9f(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\nfunction $810869c39f835e02$export$ae8865616f30561c(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\nfunction $810869c39f835e02$export$b9c5f84610baddaf(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\nfunction $810869c39f835e02$export$4385e60b38654f68(out, scale) {\n scale = scale || 1.0;\n var r = $9lyvx.RANDOM() * 2.0 * Math.PI;\n var z = $9lyvx.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\nfunction $810869c39f835e02$export$5ffbd13800309d59(out, a, m) {\n var x = a[0], y = a[1], z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\nfunction $810869c39f835e02$export$f0bfa0a0024626ee(out, a, m) {\n var x = a[0], y = a[1], z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\nfunction $810869c39f835e02$export$c32adef9e939ce85(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0], qy = q[1], qz = q[2], qw = q[3];\n var x = a[0], y = a[1], z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n var uvx = qy * z - qz * y, uvy = qz * x - qx * z, uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n var uuvx = qy * uvz - qz * uvy, uuvy = qz * uvx - qx * uvz, uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\nfunction $810869c39f835e02$export$a59c8716592e09af(out, a, b, rad) {\n var p = [], r = []; //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\nfunction $810869c39f835e02$export$cf71e4d4ca4d1cfd(out, a, b, rad) {\n var p = [], r = []; //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\nfunction $810869c39f835e02$export$ea6eae3365de5b9c(out, a, b, rad) {\n var p = [], r = []; //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\nfunction $810869c39f835e02$export$944b09d2ad10b378(a, b) {\n var ax = a[0], ay = a[1], az = a[2], bx = b[0], by = b[1], bz = b[2], mag1 = Math.sqrt(ax * ax + ay * ay + az * az), mag2 = Math.sqrt(bx * bx + by * by + bz * bz), mag = mag1 * mag2, cosine = mag && $810869c39f835e02$export$94132a0e348806d4(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\nfunction $810869c39f835e02$export$7f9972325ebfd559(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\nfunction $810869c39f835e02$export$42d51816ce590c93(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\nfunction $810869c39f835e02$export$f2599a5cf1109d8(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\nfunction $810869c39f835e02$export$e9bab7fafb253603(a, b) {\n var a0 = a[0], a1 = a[1], a2 = a[2];\n var b0 = b[0], b1 = b[1], b2 = b[2];\n return Math.abs(a0 - b0) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= $9lyvx.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\nvar $810869c39f835e02$export$f93b5905241a7cca = $810869c39f835e02$export$4e2d2ead65e5f7e3;\nvar $810869c39f835e02$export$6e3a27864ab166fe = $810869c39f835e02$export$2060d2db72cce88f;\nvar $810869c39f835e02$export$159d9494db57879b = $810869c39f835e02$export$cd007d971a5a2143;\nvar $810869c39f835e02$export$6c4a311cc157c764 = $810869c39f835e02$export$9f17032d917177de;\nvar $810869c39f835e02$export$2422cd6c492a8b3a = $810869c39f835e02$export$88e6ebb4fe54f538;\nvar $810869c39f835e02$export$fc1400facf92c78 = $810869c39f835e02$export$f24224f1c91d8156;\nvar $810869c39f835e02$export$99d8dd3f32a3435 = $810869c39f835e02$export$ab44e1323ffc8376;\nvar $810869c39f835e02$export$4b80e395e36b5a56 = function() {\n var vec = $810869c39f835e02$export$185802fd694ee1f5();\n return function(a, stride, offset, count, fn, arg) {\n var i, l;\n if (!stride) stride = 3;\n if (!offset) offset = 0;\n if (count) l = Math.min(count * stride + offset, a.length);\n else l = a.length;\n for(i = offset; i < l; i += stride){\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n return a;\n };\n}();\n\n});\n\nparcelRegister(\"9rQ4F\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6e0f078cef3edca2$export$2e2bcd8739ae039; });\nfunction $6e0f078cef3edca2$export$2e2bcd8739ae039(condition, message) {\n if (!condition) throw new Error(message || \"@math.gl/web-mercator: assertion failed.\");\n}\n\n});\n\n\n\nparcelRegister(\"8fo7C\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $60126f8c1083e194$export$2e2bcd8739ae039; });\n\nvar $kkBq7 = parcelRequire(\"kkBq7\");\n\nvar $2NnPF = parcelRequire(\"2NnPF\");\n\nvar $9rQ4F = parcelRequire(\"9rQ4F\");\nfunction $60126f8c1083e194$export$2e2bcd8739ae039(_ref) {\n var width = _ref.width, height = _ref.height, bounds = _ref.bounds, _ref$minExtent = _ref.minExtent, minExtent = _ref$minExtent === void 0 ? 0 : _ref$minExtent, _ref$maxZoom = _ref.maxZoom, maxZoom = _ref$maxZoom === void 0 ? 24 : _ref$maxZoom, _ref$padding = _ref.padding, padding = _ref$padding === void 0 ? 0 : _ref$padding, _ref$offset = _ref.offset, offset = _ref$offset === void 0 ? [\n 0,\n 0\n ] : _ref$offset;\n var _bounds = (0, $kkBq7.default)(bounds, 2), _bounds$ = (0, $kkBq7.default)(_bounds[0], 2), west = _bounds$[0], south = _bounds$[1], _bounds$2 = (0, $kkBq7.default)(_bounds[1], 2), east = _bounds$2[0], north = _bounds$2[1];\n if (Number.isFinite(padding)) {\n var p = padding;\n padding = {\n top: p,\n bottom: p,\n left: p,\n right: p\n };\n } else (0, $9rQ4F.default)(Number.isFinite(padding.top) && Number.isFinite(padding.bottom) && Number.isFinite(padding.left) && Number.isFinite(padding.right));\n var viewport = new (0, $2NnPF.default)({\n width: width,\n height: height,\n longitude: 0,\n latitude: 0,\n zoom: 0\n });\n var nw = viewport.project([\n west,\n north\n ]);\n var se = viewport.project([\n east,\n south\n ]);\n var size = [\n Math.max(Math.abs(se[0] - nw[0]), minExtent),\n Math.max(Math.abs(se[1] - nw[1]), minExtent)\n ];\n var targetSize = [\n width - padding.left - padding.right - Math.abs(offset[0]) * 2,\n height - padding.top - padding.bottom - Math.abs(offset[1]) * 2\n ];\n (0, $9rQ4F.default)(targetSize[0] > 0 && targetSize[1] > 0);\n var scaleX = targetSize[0] / size[0];\n var scaleY = targetSize[1] / size[1];\n var offsetX = (padding.right - padding.left) / 2 / scaleX;\n var offsetY = (padding.bottom - padding.top) / 2 / scaleY;\n var center = [\n (se[0] + nw[0]) / 2 + offsetX,\n (se[1] + nw[1]) / 2 + offsetY\n ];\n var centerLngLat = viewport.unproject(center);\n var zoom = Math.min(maxZoom, viewport.zoom + Math.log2(Math.abs(Math.min(scaleX, scaleY))));\n (0, $9rQ4F.default)(Number.isFinite(zoom));\n return {\n longitude: centerLngLat[0],\n latitude: centerLngLat[1],\n zoom: zoom\n };\n}\n\n});\n\n\nparcelRegister(\"2wWtu\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $1d7bedcb4945700f$export$2e2bcd8739ae039; });\n\nvar $2NnPF = parcelRequire(\"2NnPF\");\n\nvar $8Ke6L = parcelRequire(\"8Ke6L\");\nvar $1d7bedcb4945700f$var$MAX_LATITUDE = 85.05113;\nvar $1d7bedcb4945700f$var$MIN_LATITUDE = -85.05113;\nfunction $1d7bedcb4945700f$export$2e2bcd8739ae039(_ref) {\n var width = _ref.width, height = _ref.height, longitude = _ref.longitude, latitude = _ref.latitude, zoom = _ref.zoom, _ref$pitch = _ref.pitch, pitch = _ref$pitch === void 0 ? 0 : _ref$pitch, _ref$bearing = _ref.bearing, bearing = _ref$bearing === void 0 ? 0 : _ref$bearing;\n if (longitude < -180 || longitude > 180) longitude = (0, $8Ke6L.mod)(longitude + 180, 360) - 180;\n if (bearing < -180 || bearing > 180) bearing = (0, $8Ke6L.mod)(bearing + 180, 360) - 180;\n var flatViewport = new (0, $2NnPF.default)({\n width: width,\n height: height,\n longitude: longitude,\n latitude: latitude,\n zoom: zoom\n });\n var topY = flatViewport.project([\n longitude,\n $1d7bedcb4945700f$var$MAX_LATITUDE\n ])[1];\n var bottomY = flatViewport.project([\n longitude,\n $1d7bedcb4945700f$var$MIN_LATITUDE\n ])[1];\n var shiftY = 0;\n if (bottomY - topY < height) {\n zoom += Math.log2(height / (bottomY - topY));\n flatViewport = new (0, $2NnPF.default)({\n width: width,\n height: height,\n longitude: longitude,\n latitude: latitude,\n zoom: zoom\n });\n topY = flatViewport.project([\n longitude,\n $1d7bedcb4945700f$var$MAX_LATITUDE\n ])[1];\n bottomY = flatViewport.project([\n longitude,\n $1d7bedcb4945700f$var$MIN_LATITUDE\n ])[1];\n }\n if (topY > 0) shiftY = topY;\n else if (bottomY < height) shiftY = bottomY - height;\n if (shiftY) latitude = flatViewport.unproject([\n width / 2,\n height / 2 + shiftY\n ])[1];\n return {\n width: width,\n height: height,\n longitude: longitude,\n latitude: latitude,\n zoom: zoom,\n pitch: pitch,\n bearing: bearing\n };\n}\n\n});\n\nparcelRegister(\"czbEE\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9261cb47f99281d9$export$2e2bcd8739ae039; });\n$parcel$export(module.exports, \"getFlyToDuration\", function () { return $9261cb47f99281d9$export$1d42c64f84307be3; });\n\nvar $8Ke6L = parcelRequire(\"8Ke6L\");\n\nvar $kwLGk = parcelRequire(\"kwLGk\");\n\nvar $2SWep = parcelRequire(\"2SWep\");\nvar $9261cb47f99281d9$var$EPSILON = 0.01;\nvar $9261cb47f99281d9$var$VIEWPORT_TRANSITION_PROPS = [\n \"longitude\",\n \"latitude\",\n \"zoom\"\n];\nvar $9261cb47f99281d9$var$DEFAULT_OPTS = {\n curve: 1.414,\n speed: 1.2\n};\nfunction $9261cb47f99281d9$export$2e2bcd8739ae039(startProps, endProps, t) {\n var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var viewport = {};\n var _getFlyToTransitionPa = $9261cb47f99281d9$var$getFlyToTransitionParams(startProps, endProps, opts), startZoom = _getFlyToTransitionPa.startZoom, startCenterXY = _getFlyToTransitionPa.startCenterXY, uDelta = _getFlyToTransitionPa.uDelta, w0 = _getFlyToTransitionPa.w0, u1 = _getFlyToTransitionPa.u1, S = _getFlyToTransitionPa.S, rho = _getFlyToTransitionPa.rho, rho2 = _getFlyToTransitionPa.rho2, r0 = _getFlyToTransitionPa.r0;\n if (u1 < $9261cb47f99281d9$var$EPSILON) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n try {\n for(var _iterator = $9261cb47f99281d9$var$VIEWPORT_TRANSITION_PROPS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n var startValue = startProps[key];\n var endValue = endProps[key];\n viewport[key] = (0, $8Ke6L.lerp)(startValue, endValue, t);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) _iterator[\"return\"]();\n } finally{\n if (_didIteratorError) throw _iteratorError;\n }\n }\n return viewport;\n }\n var s = t * S;\n var w = Math.cosh(r0) / Math.cosh(r0 + rho * s);\n var u = w0 * ((Math.cosh(r0) * Math.tanh(r0 + rho * s) - Math.sinh(r0)) / rho2) / u1;\n var scaleIncrement = 1 / w;\n var newZoom = startZoom + (0, $kwLGk.scaleToZoom)(scaleIncrement);\n var newCenterWorld = $2SWep.scale([], uDelta, u);\n $2SWep.add(newCenterWorld, newCenterWorld, startCenterXY);\n var newCenter = (0, $kwLGk.worldToLngLat)(newCenterWorld);\n viewport.longitude = newCenter[0];\n viewport.latitude = newCenter[1];\n viewport.zoom = newZoom;\n return viewport;\n}\nfunction $9261cb47f99281d9$export$1d42c64f84307be3(startProps, endProps) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts = Object.assign({}, $9261cb47f99281d9$var$DEFAULT_OPTS, opts);\n var _opts = opts, screenSpeed = _opts.screenSpeed, speed = _opts.speed, maxDuration = _opts.maxDuration;\n var _getFlyToTransitionPa2 = $9261cb47f99281d9$var$getFlyToTransitionParams(startProps, endProps, opts), S = _getFlyToTransitionPa2.S, rho = _getFlyToTransitionPa2.rho;\n var length = 1000 * S;\n var duration;\n if (Number.isFinite(screenSpeed)) duration = length / (screenSpeed / rho);\n else duration = length / speed;\n return Number.isFinite(maxDuration) && duration > maxDuration ? 0 : duration;\n}\nfunction $9261cb47f99281d9$var$getFlyToTransitionParams(startProps, endProps, opts) {\n opts = Object.assign({}, $9261cb47f99281d9$var$DEFAULT_OPTS, opts);\n var rho = opts.curve;\n var startZoom = startProps.zoom;\n var startCenter = [\n startProps.longitude,\n startProps.latitude\n ];\n var startScale = (0, $kwLGk.zoomToScale)(startZoom);\n var endZoom = endProps.zoom;\n var endCenter = [\n endProps.longitude,\n endProps.latitude\n ];\n var scale = (0, $kwLGk.zoomToScale)(endZoom - startZoom);\n var startCenterXY = (0, $kwLGk.lngLatToWorld)(startCenter);\n var endCenterXY = (0, $kwLGk.lngLatToWorld)(endCenter);\n var uDelta = $2SWep.sub([], endCenterXY, startCenterXY);\n var w0 = Math.max(startProps.width, startProps.height);\n var w1 = w0 / scale;\n var u1 = $2SWep.length(uDelta) * startScale;\n var _u1 = Math.max(u1, $9261cb47f99281d9$var$EPSILON);\n var rho2 = rho * rho;\n var b0 = (w1 * w1 - w0 * w0 + rho2 * rho2 * _u1 * _u1) / (2 * w0 * rho2 * _u1);\n var b1 = (w1 * w1 - w0 * w0 - rho2 * rho2 * _u1 * _u1) / (2 * w1 * rho2 * _u1);\n var r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0);\n var r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n var S = (r1 - r0) / rho;\n return {\n startZoom: startZoom,\n startCenterXY: startCenterXY,\n uDelta: uDelta,\n w0: w0,\n u1: u1,\n S: S,\n rho: rho,\n rho2: rho2,\n r0: r0,\n r1: r1\n };\n}\n\n});\n\n\n\n\nparcelRegister(\"eJgQU\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.ImmutableFeatureCollection = void 0;\nfunction $ab9257319456f908$var$_toConsumableArray(arr) {\n return $ab9257319456f908$var$_arrayWithoutHoles(arr) || $ab9257319456f908$var$_iterableToArray(arr) || $ab9257319456f908$var$_unsupportedIterableToArray(arr) || $ab9257319456f908$var$_nonIterableSpread();\n}\nfunction $ab9257319456f908$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $ab9257319456f908$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $ab9257319456f908$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $ab9257319456f908$var$_arrayLikeToArray(o, minLen);\n}\nfunction $ab9257319456f908$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $ab9257319456f908$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $ab9257319456f908$var$_arrayLikeToArray(arr);\n}\nfunction $ab9257319456f908$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $ab9257319456f908$var$ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction $ab9257319456f908$var$_objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) $ab9257319456f908$var$ownKeys(Object(source), true).forEach(function(key) {\n $ab9257319456f908$var$_defineProperty(target, key, source[key]);\n });\n else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n else $ab9257319456f908$var$ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction $ab9257319456f908$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $ab9257319456f908$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $ab9257319456f908$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $ab9257319456f908$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $ab9257319456f908$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $ab9257319456f908$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $ab9257319456f908$var$ImmutableFeatureCollection = /*#__PURE__*/ function() {\n function ImmutableFeatureCollection(featureCollection) {\n $ab9257319456f908$var$_classCallCheck(this, ImmutableFeatureCollection);\n $ab9257319456f908$var$_defineProperty(this, \"featureCollection\", void 0);\n this.featureCollection = featureCollection;\n }\n $ab9257319456f908$var$_createClass(ImmutableFeatureCollection, [\n {\n key: \"getObject\",\n value: function getObject() {\n return this.featureCollection;\n }\n },\n {\n key: \"replacePosition\",\n value: function replacePosition(featureIndex, positionIndexes, updatedPosition) {\n var geometry = this.featureCollection.features[featureIndex].geometry;\n var isPolygonal = geometry.type === \"Polygon\" || geometry.type === \"MultiPolygon\";\n var updatedGeometry = $ab9257319456f908$var$_objectSpread({}, geometry, {\n coordinates: $ab9257319456f908$var$immutablyReplacePosition(geometry.coordinates, positionIndexes, updatedPosition, isPolygonal)\n });\n return this.replaceGeometry(featureIndex, updatedGeometry);\n }\n },\n {\n key: \"removePosition\",\n value: function removePosition(featureIndex, positionIndexes) {\n var geometry = this.featureCollection.features[featureIndex].geometry;\n if (geometry.type === \"Point\") throw Error(\"Can't remove a position from a Point or there'd be nothing left\");\n if (geometry.type === \"MultiPoint\" && // only 1 point left\n geometry.coordinates.length < 2) throw Error(\"Can't remove the last point of a MultiPoint or there'd be nothing left\");\n if (geometry.type === \"LineString\" && // only 2 positions\n geometry.coordinates.length < 3) throw Error(\"Can't remove position. LineString must have at least two positions\");\n if (geometry.type === \"Polygon\" && // outer ring is a triangle\n geometry.coordinates[0].length < 5 && Array.isArray(positionIndexes) && // trying to remove from outer ring\n positionIndexes[0] === 0) throw Error(\"Can't remove position. Polygon's outer ring must have at least four positions\");\n if (geometry.type === \"MultiLineString\" && // only 1 LineString left\n geometry.coordinates.length === 1 && // only 2 positions\n geometry.coordinates[0].length < 3) throw Error(\"Can't remove position. MultiLineString must have at least two positions\");\n if (geometry.type === \"MultiPolygon\" && // only 1 polygon left\n geometry.coordinates.length === 1 && // outer ring is a triangle\n geometry.coordinates[0][0].length < 5 && Array.isArray(positionIndexes) && // trying to remove from first polygon\n positionIndexes[0] === 0 && // trying to remove from outer ring\n positionIndexes[1] === 0) throw Error(\"Can't remove position. MultiPolygon's outer ring must have at least four positions\");\n var isPolygonal = geometry.type === \"Polygon\" || geometry.type === \"MultiPolygon\";\n var updatedGeometry = $ab9257319456f908$var$_objectSpread({}, geometry, {\n coordinates: $ab9257319456f908$var$immutablyRemovePosition(geometry.coordinates, positionIndexes, isPolygonal)\n }); // Handle cases where incomplete geometries need pruned (e.g. holes that were triangles)\n $ab9257319456f908$var$pruneGeometryIfNecessary(updatedGeometry);\n return this.replaceGeometry(featureIndex, updatedGeometry);\n }\n },\n {\n key: \"addPosition\",\n value: function addPosition(featureIndex, positionIndexes, positionToAdd) {\n var geometry = this.featureCollection.features[featureIndex].geometry;\n if (geometry.type === \"Point\") throw new Error(\"Unable to add a position to a Point feature\");\n var isPolygonal = geometry.type === \"Polygon\" || geometry.type === \"MultiPolygon\";\n var updatedGeometry = $ab9257319456f908$var$_objectSpread({}, geometry, {\n coordinates: $ab9257319456f908$var$immutablyAddPosition(geometry.coordinates, positionIndexes, positionToAdd, isPolygonal)\n });\n return this.replaceGeometry(featureIndex, updatedGeometry);\n }\n },\n {\n key: \"replaceGeometry\",\n value: function replaceGeometry(featureIndex, geometry) {\n var updatedFeature = $ab9257319456f908$var$_objectSpread({}, this.featureCollection.features[featureIndex], {\n geometry: geometry\n });\n var updatedFeatureCollection = $ab9257319456f908$var$_objectSpread({}, this.featureCollection, {\n features: [].concat($ab9257319456f908$var$_toConsumableArray(this.featureCollection.features.slice(0, featureIndex)), [\n updatedFeature\n ], $ab9257319456f908$var$_toConsumableArray(this.featureCollection.features.slice(featureIndex + 1)))\n });\n return new ImmutableFeatureCollection(updatedFeatureCollection);\n }\n },\n {\n key: \"addFeature\",\n value: function addFeature(feature) {\n return this.addFeatures([\n feature\n ]);\n }\n },\n {\n key: \"addFeatures\",\n value: function addFeatures(features) {\n var updatedFeatureCollection = $ab9257319456f908$var$_objectSpread({}, this.featureCollection, {\n features: [].concat($ab9257319456f908$var$_toConsumableArray(this.featureCollection.features), $ab9257319456f908$var$_toConsumableArray(features))\n });\n return new ImmutableFeatureCollection(updatedFeatureCollection);\n }\n },\n {\n key: \"deleteFeature\",\n value: function deleteFeature(featureIndex) {\n return this.deleteFeatures([\n featureIndex\n ]);\n }\n },\n {\n key: \"deleteFeatures\",\n value: function deleteFeatures(featureIndexes) {\n var features = $ab9257319456f908$var$_toConsumableArray(this.featureCollection.features);\n featureIndexes.sort();\n for(var i = featureIndexes.length - 1; i >= 0; i--){\n var featureIndex = featureIndexes[i];\n if (featureIndex >= 0 && featureIndex < features.length) features.splice(featureIndex, 1);\n }\n var updatedFeatureCollection = $ab9257319456f908$var$_objectSpread({}, this.featureCollection, {\n features: features\n });\n return new ImmutableFeatureCollection(updatedFeatureCollection);\n }\n }\n ]);\n return ImmutableFeatureCollection;\n}();\nmodule.exports.ImmutableFeatureCollection = $ab9257319456f908$var$ImmutableFeatureCollection;\nfunction $ab9257319456f908$var$getUpdatedPosition(updatedPosition, previousPosition) {\n // This function checks if the updatedPosition is missing elevation\n // and copies it from previousPosition\n if (updatedPosition.length === 2 && previousPosition.length === 3) {\n var elevation = previousPosition[2];\n return [\n updatedPosition[0],\n updatedPosition[1],\n elevation\n ];\n }\n return updatedPosition;\n}\nfunction $ab9257319456f908$var$immutablyReplacePosition(coordinates, positionIndexes, updatedPosition, isPolygonal) {\n if (!positionIndexes) return coordinates;\n if (positionIndexes.length === 0) return $ab9257319456f908$var$getUpdatedPosition(updatedPosition, coordinates);\n if (positionIndexes.length === 1) {\n var updated = [].concat($ab9257319456f908$var$_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [\n $ab9257319456f908$var$getUpdatedPosition(updatedPosition, coordinates[positionIndexes[0]])\n ], $ab9257319456f908$var$_toConsumableArray(coordinates.slice(positionIndexes[0] + 1)));\n if (isPolygonal && (positionIndexes[0] === 0 || positionIndexes[0] === coordinates.length - 1)) {\n // for polygons, the first point is repeated at the end of the array\n // so, update it on both ends of the array\n updated[0] = $ab9257319456f908$var$getUpdatedPosition(updatedPosition, coordinates[0]);\n updated[coordinates.length - 1] = $ab9257319456f908$var$getUpdatedPosition(updatedPosition, coordinates[0]);\n }\n return updated;\n } // recursively update inner array\n return [].concat($ab9257319456f908$var$_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [\n $ab9257319456f908$var$immutablyReplacePosition(coordinates[positionIndexes[0]], positionIndexes.slice(1, positionIndexes.length), updatedPosition, isPolygonal)\n ], $ab9257319456f908$var$_toConsumableArray(coordinates.slice(positionIndexes[0] + 1)));\n}\nfunction $ab9257319456f908$var$immutablyRemovePosition(coordinates, positionIndexes, isPolygonal) {\n if (!positionIndexes) return coordinates;\n if (positionIndexes.length === 0) throw Error(\"Must specify the index of the position to remove\");\n if (positionIndexes.length === 1) {\n var updated = [].concat($ab9257319456f908$var$_toConsumableArray(coordinates.slice(0, positionIndexes[0])), $ab9257319456f908$var$_toConsumableArray(coordinates.slice(positionIndexes[0] + 1)));\n if (isPolygonal && (positionIndexes[0] === 0 || positionIndexes[0] === coordinates.length - 1)) {\n // for polygons, the first point is repeated at the end of the array\n // so, if the first/last coordinate is to be removed, coordinates[1] will be the new first/last coordinate\n if (positionIndexes[0] === 0) // change the last to be the same as the first\n updated[updated.length - 1] = updated[0];\n else if (positionIndexes[0] === coordinates.length - 1) // change the first to be the same as the last\n updated[0] = updated[updated.length - 1];\n }\n return updated;\n } // recursively update inner array\n return [].concat($ab9257319456f908$var$_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [\n $ab9257319456f908$var$immutablyRemovePosition(coordinates[positionIndexes[0]], positionIndexes.slice(1, positionIndexes.length), isPolygonal)\n ], $ab9257319456f908$var$_toConsumableArray(coordinates.slice(positionIndexes[0] + 1)));\n}\nfunction $ab9257319456f908$var$immutablyAddPosition(coordinates, positionIndexes, positionToAdd, isPolygonal) {\n if (!positionIndexes) return coordinates;\n if (positionIndexes.length === 0) throw Error(\"Must specify the index of the position to remove\");\n if (positionIndexes.length === 1) {\n var updated = [].concat($ab9257319456f908$var$_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [\n positionToAdd\n ], $ab9257319456f908$var$_toConsumableArray(coordinates.slice(positionIndexes[0])));\n return updated;\n } // recursively update inner array\n return [].concat($ab9257319456f908$var$_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [\n $ab9257319456f908$var$immutablyAddPosition(coordinates[positionIndexes[0]], positionIndexes.slice(1, positionIndexes.length), positionToAdd, isPolygonal)\n ], $ab9257319456f908$var$_toConsumableArray(coordinates.slice(positionIndexes[0] + 1)));\n}\nfunction $ab9257319456f908$var$pruneGeometryIfNecessary(geometry) {\n switch(geometry.type){\n case \"Polygon\":\n $ab9257319456f908$var$prunePolygonIfNecessary(geometry);\n break;\n case \"MultiLineString\":\n $ab9257319456f908$var$pruneMultiLineStringIfNecessary(geometry);\n break;\n case \"MultiPolygon\":\n $ab9257319456f908$var$pruneMultiPolygonIfNecessary(geometry);\n break;\n default:\n break;\n }\n}\nfunction $ab9257319456f908$var$prunePolygonIfNecessary(geometry) {\n var polygon = geometry.coordinates; // If any hole is no longer a polygon, remove the hole entirely\n for(var holeIndex = 1; holeIndex < polygon.length; holeIndex++)if ($ab9257319456f908$var$removeHoleIfNecessary(polygon, holeIndex)) // It was removed, so keep the index the same\n holeIndex--;\n}\nfunction $ab9257319456f908$var$pruneMultiLineStringIfNecessary(geometry) {\n for(var lineStringIndex = 0; lineStringIndex < geometry.coordinates.length; lineStringIndex++){\n var lineString = geometry.coordinates[lineStringIndex];\n if (lineString.length === 1) {\n // Only a single position left on this LineString, so remove it (can't have Point in MultiLineString)\n geometry.coordinates.splice(lineStringIndex, 1); // Keep the index the same\n lineStringIndex--;\n }\n }\n}\nfunction $ab9257319456f908$var$pruneMultiPolygonIfNecessary(geometry) {\n for(var polygonIndex = 0; polygonIndex < geometry.coordinates.length; polygonIndex++){\n var polygon = geometry.coordinates[polygonIndex];\n var outerRing = polygon[0]; // If the outer ring is no longer a polygon, remove the whole polygon\n if (outerRing.length <= 3) {\n geometry.coordinates.splice(polygonIndex, 1); // It was removed, so keep the index the same\n polygonIndex--;\n }\n for(var holeIndex = 1; holeIndex < polygon.length; holeIndex++)if ($ab9257319456f908$var$removeHoleIfNecessary(polygon, holeIndex)) // It was removed, so keep the index the same\n holeIndex--;\n }\n}\nfunction $ab9257319456f908$var$removeHoleIfNecessary(polygon, holeIndex) {\n var hole = polygon[holeIndex];\n if (hole.length <= 3) {\n polygon.splice(holeIndex, 1);\n return true;\n }\n return false;\n}\n\n});\n\n\nparcelRegister(\"gFC9Z\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.ModifyMode = void 0;\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $hs5Hv = parcelRequire(\"hs5Hv\");\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\n\nvar $eJgQU = parcelRequire(\"eJgQU\");\nfunction $c22e137e708ef0c9$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $c22e137e708ef0c9$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $c22e137e708ef0c9$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $c22e137e708ef0c9$var$_typeof(obj);\n}\nfunction $c22e137e708ef0c9$var$_toConsumableArray(arr) {\n return $c22e137e708ef0c9$var$_arrayWithoutHoles(arr) || $c22e137e708ef0c9$var$_iterableToArray(arr) || $c22e137e708ef0c9$var$_unsupportedIterableToArray(arr) || $c22e137e708ef0c9$var$_nonIterableSpread();\n}\nfunction $c22e137e708ef0c9$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $c22e137e708ef0c9$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $c22e137e708ef0c9$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $c22e137e708ef0c9$var$_arrayLikeToArray(arr);\n}\nfunction $c22e137e708ef0c9$var$_createForOfIteratorHelper(o) {\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = $c22e137e708ef0c9$var$_unsupportedIterableToArray(o))) {\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var it, normalCompletion = true, didErr = false, err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally{\n if (didErr) throw err;\n }\n }\n };\n}\nfunction $c22e137e708ef0c9$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $c22e137e708ef0c9$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $c22e137e708ef0c9$var$_arrayLikeToArray(o, minLen);\n}\nfunction $c22e137e708ef0c9$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $c22e137e708ef0c9$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $c22e137e708ef0c9$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $c22e137e708ef0c9$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $c22e137e708ef0c9$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $c22e137e708ef0c9$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $c22e137e708ef0c9$var$_createSuper(Derived) {\n return function() {\n var Super = $c22e137e708ef0c9$var$_getPrototypeOf(Derived), result;\n if ($c22e137e708ef0c9$var$_isNativeReflectConstruct()) {\n var NewTarget = $c22e137e708ef0c9$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $c22e137e708ef0c9$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $c22e137e708ef0c9$var$_possibleConstructorReturn(self, call) {\n if (call && ($c22e137e708ef0c9$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $c22e137e708ef0c9$var$_assertThisInitialized(self);\n}\nfunction $c22e137e708ef0c9$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $c22e137e708ef0c9$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $c22e137e708ef0c9$var$_getPrototypeOf(o) {\n $c22e137e708ef0c9$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $c22e137e708ef0c9$var$_getPrototypeOf(o);\n}\nfunction $c22e137e708ef0c9$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $c22e137e708ef0c9$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $c22e137e708ef0c9$var$_setPrototypeOf(o, p) {\n $c22e137e708ef0c9$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $c22e137e708ef0c9$var$_setPrototypeOf(o, p);\n}\nvar $c22e137e708ef0c9$var$ModifyMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $c22e137e708ef0c9$var$_inherits(ModifyMode, _GeoJsonEditMode);\n var _super = $c22e137e708ef0c9$var$_createSuper(ModifyMode);\n function ModifyMode() {\n $c22e137e708ef0c9$var$_classCallCheck(this, ModifyMode);\n return _super.apply(this, arguments);\n }\n $c22e137e708ef0c9$var$_createClass(ModifyMode, [\n {\n key: \"getGuides\",\n value: function getGuides(props) {\n var _this = this;\n var handles = [];\n var data = props.data, lastPointerMoveEvent = props.lastPointerMoveEvent;\n var features = data.features;\n var picks = lastPointerMoveEvent && lastPointerMoveEvent.picks;\n var mapCoords = lastPointerMoveEvent && lastPointerMoveEvent.mapCoords;\n var _iterator = $c22e137e708ef0c9$var$_createForOfIteratorHelper(props.selectedIndexes), _step;\n try {\n for(_iterator.s(); !(_step = _iterator.n()).done;){\n var _index = _step.value;\n if (_index < features.length) {\n var geometry = features[_index].geometry;\n handles.push.apply(handles, $c22e137e708ef0c9$var$_toConsumableArray((0, $hs5Hv.getEditHandlesForGeometry)(geometry, _index)));\n } else console.warn(\"selectedFeatureIndexes out of range \".concat(_index)); // eslint-disable-line no-console,no-undef\n } // intermediate edit handle\n } catch (err) {\n _iterator.e(err);\n } finally{\n _iterator.f();\n }\n if (picks && picks.length && mapCoords) {\n var _props$modeConfig;\n var existingEditHandle = (0, $hs5Hv.getPickedExistingEditHandle)(picks); // don't show intermediate point when too close to an existing edit handle\n var featureAsPick = !existingEditHandle && picks.find(function(pick) {\n return !pick.isGuide;\n }); // is the feature in the pick selected\n if (featureAsPick && !featureAsPick.object.geometry.type.includes(\"Point\") && !(((_props$modeConfig = props.modeConfig) === null || _props$modeConfig === void 0 ? void 0 : _props$modeConfig.lockRectangles) && featureAsPick.object.properties.shape === \"Rectangle\") && props.selectedIndexes.includes(featureAsPick.index)) {\n var intermediatePoint = null;\n var positionIndexPrefix = [];\n var referencePoint = (0, $7GKQS.point)(mapCoords); // process all lines of the (single) feature\n (0, $hs5Hv.recursivelyTraverseNestedArrays)(featureAsPick.object.geometry.coordinates, [], function(lineString, prefix) {\n var lineStringFeature = (0, $7GKQS.lineString)(lineString);\n var candidateIntermediatePoint = _this.getNearestPoint(lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport);\n if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) {\n intermediatePoint = candidateIntermediatePoint;\n positionIndexPrefix = prefix;\n }\n }); // tack on the lone intermediate point to the set of handles\n if (intermediatePoint) {\n var _intermediatePoint = intermediatePoint, position = _intermediatePoint.geometry.coordinates, index = _intermediatePoint.properties.index;\n handles.push({\n type: \"Feature\",\n properties: {\n guideType: \"editHandle\",\n editHandleType: \"intermediate\",\n featureIndex: featureAsPick.index,\n positionIndexes: [].concat($c22e137e708ef0c9$var$_toConsumableArray(positionIndexPrefix), [\n index + 1\n ])\n },\n geometry: {\n type: \"Point\",\n coordinates: position\n }\n });\n }\n }\n }\n return {\n type: \"FeatureCollection\",\n features: handles\n };\n } // turf.js does not support elevation for nearestPointOnLine\n },\n {\n key: \"getNearestPoint\",\n value: function getNearestPoint(line, inPoint, viewport) {\n var coordinates = line.geometry.coordinates;\n if (coordinates.some(function(coord) {\n return coord.length > 2;\n })) {\n if (viewport) // This line has elevation, we need to use alternative algorithm\n return (0, $hs5Hv.nearestPointOnProjectedLine)(line, inPoint, viewport);\n // eslint-disable-next-line no-console,no-undef\n console.log(\"Editing 3D point but modeConfig.viewport not provided. Falling back to 2D logic.\");\n }\n return (0, $hs5Hv.nearestPointOnLine)(line, inPoint, viewport);\n }\n },\n {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n var pickedExistingHandle = (0, $hs5Hv.getPickedExistingEditHandle)(event.picks);\n var pickedIntermediateHandle = (0, $hs5Hv.getPickedIntermediateEditHandle)(event.picks);\n if (pickedExistingHandle) {\n var _pickedExistingHandle = pickedExistingHandle.properties, featureIndex = _pickedExistingHandle.featureIndex, positionIndexes = _pickedExistingHandle.positionIndexes;\n var updatedData;\n try {\n updatedData = new $eJgQU.ImmutableFeatureCollection(props.data).removePosition(featureIndex, positionIndexes).getObject();\n } catch (ignored) {}\n if (updatedData) props.onEdit({\n updatedData: updatedData,\n editType: \"removePosition\",\n editContext: {\n featureIndexes: [\n featureIndex\n ],\n positionIndexes: positionIndexes,\n position: pickedExistingHandle.geometry.coordinates\n }\n });\n } else if (pickedIntermediateHandle) {\n var _props$modeConfig2;\n var _pickedIntermediateHa = pickedIntermediateHandle.properties, _featureIndex = _pickedIntermediateHa.featureIndex, _positionIndexes = _pickedIntermediateHa.positionIndexes;\n var feature = props.data.features[_featureIndex];\n var canAddPosition = !(((_props$modeConfig2 = props.modeConfig) === null || _props$modeConfig2 === void 0 ? void 0 : _props$modeConfig2.lockRectangles) && (feature === null || feature === void 0 ? void 0 : feature.properties.shape) === \"Rectangle\");\n if (canAddPosition) {\n var _updatedData = new $eJgQU.ImmutableFeatureCollection(props.data).addPosition(_featureIndex, _positionIndexes, pickedIntermediateHandle.geometry.coordinates).getObject();\n if (_updatedData) props.onEdit({\n updatedData: _updatedData,\n editType: \"addPosition\",\n editContext: {\n featureIndexes: [\n _featureIndex\n ],\n positionIndexes: _positionIndexes,\n position: pickedIntermediateHandle.geometry.coordinates\n }\n });\n }\n }\n }\n },\n {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n var editHandle = (0, $hs5Hv.getPickedEditHandle)(event.pointerDownPicks);\n if (editHandle) {\n // Cancel map panning if pointer went down on an edit handle\n event.cancelPan();\n this._dragEditHandle(\"movePosition\", props, editHandle, event);\n }\n }\n },\n {\n key: \"_dragEditHandle\",\n value: function _dragEditHandle(editType, props, editHandle, event) {\n var _props$modeConfig3;\n var editHandleProperties = editHandle.properties;\n var editedFeature = props.data.features[editHandleProperties.featureIndex];\n var updatedData;\n if (((_props$modeConfig3 = props.modeConfig) === null || _props$modeConfig3 === void 0 ? void 0 : _props$modeConfig3.lockRectangles) && editedFeature.properties.shape === \"Rectangle\") {\n var coordinates = (0, $hs5Hv.updateRectanglePosition)(editedFeature, editHandleProperties.positionIndexes[1], event.mapCoords);\n updatedData = new $eJgQU.ImmutableFeatureCollection(props.data).replaceGeometry(editHandleProperties.featureIndex, {\n coordinates: coordinates,\n type: \"Polygon\"\n }).getObject();\n } else updatedData = new $eJgQU.ImmutableFeatureCollection(props.data).replacePosition(editHandleProperties.featureIndex, editHandleProperties.positionIndexes, event.mapCoords).getObject();\n props.onEdit({\n updatedData: updatedData,\n editType: editType,\n editContext: {\n featureIndexes: [\n editHandleProperties.featureIndex\n ],\n positionIndexes: editHandleProperties.positionIndexes,\n position: event.mapCoords\n }\n });\n }\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n var cursor = this.getCursor(event);\n props.onUpdateCursor(cursor);\n }\n },\n {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n var selectedFeatureIndexes = props.selectedIndexes;\n var editHandle = (0, $hs5Hv.getPickedIntermediateEditHandle)(event.picks);\n if (selectedFeatureIndexes.length && editHandle) {\n var editHandleProperties = editHandle.properties;\n var updatedData = new $eJgQU.ImmutableFeatureCollection(props.data).addPosition(editHandleProperties.featureIndex, editHandleProperties.positionIndexes, event.mapCoords).getObject();\n props.onEdit({\n updatedData: updatedData,\n editType: \"addPosition\",\n editContext: {\n featureIndexes: [\n editHandleProperties.featureIndex\n ],\n positionIndexes: editHandleProperties.positionIndexes,\n position: event.mapCoords\n }\n });\n }\n }\n },\n {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n var selectedFeatureIndexes = props.selectedIndexes;\n var editHandle = (0, $hs5Hv.getPickedEditHandle)(event.picks);\n if (selectedFeatureIndexes.length && editHandle) this._dragEditHandle(\"finishMovePosition\", props, editHandle, event);\n }\n },\n {\n key: \"getCursor\",\n value: function getCursor(event) {\n var picks = event && event.picks || [];\n var handlesPicked = (0, $hs5Hv.getPickedEditHandles)(picks);\n if (handlesPicked.length) return \"cell\";\n return null;\n }\n }\n ]);\n return ModifyMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.ModifyMode = $c22e137e708ef0c9$var$ModifyMode;\n\n});\n\nparcelRegister(\"dm5qM\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.ResizeCircleMode = void 0;\n\nvar $9b918ae6c41f6e4f$var$_nearestPointOnLine = $9b918ae6c41f6e4f$var$_interopRequireDefault((parcelRequire(\"ecyJ3\")));\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $9b918ae6c41f6e4f$var$_circle = $9b918ae6c41f6e4f$var$_interopRequireDefault((parcelRequire(\"lzQHn\")));\n\nvar $9b918ae6c41f6e4f$var$_distance = $9b918ae6c41f6e4f$var$_interopRequireDefault((parcelRequire(\"b5wF2\")));\n\nvar $9b918ae6c41f6e4f$var$_center = $9b918ae6c41f6e4f$var$_interopRequireDefault((parcelRequire(\"4B93b\")));\n\nvar $hs5Hv = parcelRequire(\"hs5Hv\");\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\n\nvar $eJgQU = parcelRequire(\"eJgQU\");\nfunction $9b918ae6c41f6e4f$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $9b918ae6c41f6e4f$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $9b918ae6c41f6e4f$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $9b918ae6c41f6e4f$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $9b918ae6c41f6e4f$var$_typeof(obj);\n}\nfunction $9b918ae6c41f6e4f$var$_toConsumableArray(arr) {\n return $9b918ae6c41f6e4f$var$_arrayWithoutHoles(arr) || $9b918ae6c41f6e4f$var$_iterableToArray(arr) || $9b918ae6c41f6e4f$var$_unsupportedIterableToArray(arr) || $9b918ae6c41f6e4f$var$_nonIterableSpread();\n}\nfunction $9b918ae6c41f6e4f$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $9b918ae6c41f6e4f$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $9b918ae6c41f6e4f$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $9b918ae6c41f6e4f$var$_arrayLikeToArray(o, minLen);\n}\nfunction $9b918ae6c41f6e4f$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $9b918ae6c41f6e4f$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $9b918ae6c41f6e4f$var$_arrayLikeToArray(arr);\n}\nfunction $9b918ae6c41f6e4f$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $9b918ae6c41f6e4f$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $9b918ae6c41f6e4f$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $9b918ae6c41f6e4f$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $9b918ae6c41f6e4f$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $9b918ae6c41f6e4f$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $9b918ae6c41f6e4f$var$_createSuper(Derived) {\n return function() {\n var Super = $9b918ae6c41f6e4f$var$_getPrototypeOf(Derived), result;\n if ($9b918ae6c41f6e4f$var$_isNativeReflectConstruct()) {\n var NewTarget = $9b918ae6c41f6e4f$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $9b918ae6c41f6e4f$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $9b918ae6c41f6e4f$var$_possibleConstructorReturn(self, call) {\n if (call && ($9b918ae6c41f6e4f$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $9b918ae6c41f6e4f$var$_assertThisInitialized(self);\n}\nfunction $9b918ae6c41f6e4f$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $9b918ae6c41f6e4f$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $9b918ae6c41f6e4f$var$_getPrototypeOf(o) {\n $9b918ae6c41f6e4f$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $9b918ae6c41f6e4f$var$_getPrototypeOf(o);\n}\nfunction $9b918ae6c41f6e4f$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $9b918ae6c41f6e4f$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $9b918ae6c41f6e4f$var$_setPrototypeOf(o, p) {\n $9b918ae6c41f6e4f$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $9b918ae6c41f6e4f$var$_setPrototypeOf(o, p);\n}\nfunction $9b918ae6c41f6e4f$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $9b918ae6c41f6e4f$var$ResizeCircleMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $9b918ae6c41f6e4f$var$_inherits(ResizeCircleMode, _GeoJsonEditMode);\n var _super = $9b918ae6c41f6e4f$var$_createSuper(ResizeCircleMode);\n function ResizeCircleMode() {\n var _this;\n $9b918ae6c41f6e4f$var$_classCallCheck(this, ResizeCircleMode);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n _this = _super.call.apply(_super, [\n this\n ].concat(args));\n $9b918ae6c41f6e4f$var$_defineProperty($9b918ae6c41f6e4f$var$_assertThisInitialized(_this), \"_selectedEditHandle\", void 0);\n $9b918ae6c41f6e4f$var$_defineProperty($9b918ae6c41f6e4f$var$_assertThisInitialized(_this), \"_isResizing\", false);\n return _this;\n }\n $9b918ae6c41f6e4f$var$_createClass(ResizeCircleMode, [\n {\n key: \"getGuides\",\n value: function getGuides(props) {\n var _this2 = this;\n var handles = [];\n var selectedFeatureIndexes = props.selectedIndexes;\n var lastPointerMoveEvent = props.lastPointerMoveEvent;\n var picks = lastPointerMoveEvent && lastPointerMoveEvent.picks;\n var mapCoords = lastPointerMoveEvent && lastPointerMoveEvent.mapCoords; // intermediate edit handle\n if (picks && picks.length && mapCoords && selectedFeatureIndexes.length === 1 && !this._isResizing) {\n var featureAsPick = picks.find(function(pick) {\n return !pick.isGuide;\n }); // is the feature in the pick selected\n if (featureAsPick && featureAsPick.object.properties.shape && featureAsPick.object.properties.shape.includes(\"Circle\") && props.selectedIndexes.includes(featureAsPick.index)) {\n var intermediatePoint = null;\n var positionIndexPrefix = [];\n var referencePoint = (0, $7GKQS.point)(mapCoords); // process all lines of the (single) feature\n (0, $hs5Hv.recursivelyTraverseNestedArrays)(featureAsPick.object.geometry.coordinates, [], function(lineString, prefix) {\n var lineStringFeature = (0, $7GKQS.lineString)(lineString);\n var candidateIntermediatePoint = _this2.getNearestPoint(lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport);\n if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) {\n intermediatePoint = candidateIntermediatePoint;\n positionIndexPrefix = prefix;\n }\n }); // tack on the lone intermediate point to the set of handles\n if (intermediatePoint) {\n var _intermediatePoint = intermediatePoint, position = _intermediatePoint.geometry.coordinates, index = _intermediatePoint.properties.index;\n handles.push({\n type: \"Feature\",\n properties: {\n guideType: \"editHandle\",\n editHandleType: \"intermediate\",\n featureIndex: featureAsPick.index,\n positionIndexes: [].concat($9b918ae6c41f6e4f$var$_toConsumableArray(positionIndexPrefix), [\n index + 1\n ])\n },\n geometry: {\n type: \"Point\",\n coordinates: position\n }\n });\n }\n }\n }\n return {\n type: \"FeatureCollection\",\n features: handles\n };\n } // turf.js does not support elevation for nearestPointOnLine\n },\n {\n key: \"getNearestPoint\",\n value: function getNearestPoint(line, inPoint, viewport) {\n var coordinates = line.geometry.coordinates;\n if (coordinates.some(function(coord) {\n return coord.length > 2;\n })) {\n if (viewport) // This line has elevation, we need to use alternative algorithm\n return (0, $hs5Hv.nearestPointOnProjectedLine)(line, inPoint, viewport);\n // eslint-disable-next-line no-console,no-undef\n console.log(\"Editing 3D point but modeConfig.viewport not provided. Falling back to 2D logic.\");\n }\n return (0, $9b918ae6c41f6e4f$var$_nearestPointOnLine[\"default\"])(line, inPoint);\n }\n },\n {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n var editHandle = (0, $hs5Hv.getPickedEditHandle)(event.pointerDownPicks);\n if (editHandle) {\n // Cancel map panning if pointer went down on an edit handle\n event.cancelPan();\n var editHandleProperties = editHandle.properties;\n var feature = this.getSelectedFeature(props);\n var center = (0, $9b918ae6c41f6e4f$var$_center[\"default\"])(feature).geometry.coordinates;\n var numberOfSteps = Object.entries(feature.geometry.coordinates[0]).length - 1;\n var radius = Math.max((0, $9b918ae6c41f6e4f$var$_distance[\"default\"])(center, event.mapCoords), 0.001);\n var _ref = {}, _ref$steps = _ref.steps, steps = _ref$steps === void 0 ? numberOfSteps : _ref$steps;\n var options = {\n steps: steps\n };\n var updatedFeature = (0, $9b918ae6c41f6e4f$var$_circle[\"default\"])(center, radius, options);\n var geometry = updatedFeature.geometry;\n var updatedData = new $eJgQU.ImmutableFeatureCollection(props.data).replaceGeometry(editHandleProperties.featureIndex, geometry).getObject();\n props.onEdit({\n updatedData: updatedData,\n editType: \"unionGeometry\",\n editContext: {\n featureIndexes: [\n editHandleProperties.featureIndex\n ]\n }\n });\n }\n }\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n if (!this._isResizing) {\n var selectedEditHandle = (0, $hs5Hv.getPickedEditHandle)(event.picks);\n this._selectedEditHandle = selectedEditHandle && selectedEditHandle.properties.editHandleType === \"intermediate\" ? selectedEditHandle : null;\n }\n var cursor = this.getCursor(event);\n props.onUpdateCursor(cursor);\n }\n },\n {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n if (this._selectedEditHandle) this._isResizing = true;\n }\n },\n {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n if (this._isResizing) {\n this._selectedEditHandle = null;\n this._isResizing = false;\n }\n }\n },\n {\n key: \"getCursor\",\n value: function getCursor(event) {\n var picks = event && event.picks || [];\n var handlesPicked = (0, $hs5Hv.getPickedEditHandles)(picks);\n if (handlesPicked.length) return \"cell\";\n return null;\n }\n }\n ]);\n return ResizeCircleMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.ResizeCircleMode = $9b918ae6c41f6e4f$var$ResizeCircleMode;\n\n});\nparcelRegister(\"ecyJ3\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $aDE4l = parcelRequire(\"aDE4l\");\n\nvar $b5wF2 = parcelRequire(\"b5wF2\");\n\nvar $1UAWS = parcelRequire(\"1UAWS\");\n\nvar $iXvoQ = parcelRequire(\"iXvoQ\");\n\nvar $7aiSl = parcelRequire(\"7aiSl\");\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $8abqV = parcelRequire(\"8abqV\");\n/**\n * Takes a {@link Point} and a {@link LineString} and calculates the closest Point on the (Multi)LineString.\n *\n * @name nearestPointOnLine\n * @param {Geometry|Feature} lines lines to snap to\n * @param {Geometry|Feature|number[]} pt point to snap from\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {Feature} closest point on the `line` to `point`. The properties object will contain three values: `index`: closest point was found on nth line part, `dist`: distance between pt and the closest point, `location`: distance along the line between start and the closest point.\n * @example\n * var line = turf.lineString([\n * [-77.031669, 38.878605],\n * [-77.029609, 38.881946],\n * [-77.020339, 38.884084],\n * [-77.025661, 38.885821],\n * [-77.021884, 38.889563],\n * [-77.019824, 38.892368]\n * ]);\n * var pt = turf.point([-77.037076, 38.884017]);\n *\n * var snapped = turf.nearestPointOnLine(line, pt, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [line, pt, snapped];\n * snapped.properties['marker-color'] = '#00f';\n */ function $a56d1f7e3beb6b48$var$nearestPointOnLine(lines, pt, options) {\n if (options === void 0) options = {};\n var closestPt = $7GKQS.point([\n Infinity,\n Infinity\n ], {\n dist: Infinity\n });\n var length = 0.0;\n $7aiSl.flattenEach(lines, function(line) {\n var coords = $8abqV.getCoords(line);\n for(var i = 0; i < coords.length - 1; i++){\n //start\n var start = $7GKQS.point(coords[i]);\n start.properties.dist = $b5wF2.default(pt, start, options);\n //stop\n var stop_1 = $7GKQS.point(coords[i + 1]);\n stop_1.properties.dist = $b5wF2.default(pt, stop_1, options);\n // sectionLength\n var sectionLength = $b5wF2.default(start, stop_1, options);\n //perpendicular\n var heightDistance = Math.max(start.properties.dist, stop_1.properties.dist);\n var direction = $aDE4l.default(start, stop_1);\n var perpendicularPt1 = $1UAWS.default(pt, heightDistance, direction + 90, options);\n var perpendicularPt2 = $1UAWS.default(pt, heightDistance, direction - 90, options);\n var intersect = $iXvoQ.default($7GKQS.lineString([\n perpendicularPt1.geometry.coordinates,\n perpendicularPt2.geometry.coordinates\n ]), $7GKQS.lineString([\n start.geometry.coordinates,\n stop_1.geometry.coordinates\n ]));\n var intersectPt = null;\n if (intersect.features.length > 0) {\n intersectPt = intersect.features[0];\n intersectPt.properties.dist = $b5wF2.default(pt, intersectPt, options);\n intersectPt.properties.location = length + $b5wF2.default(start, intersectPt, options);\n }\n if (start.properties.dist < closestPt.properties.dist) {\n closestPt = start;\n closestPt.properties.index = i;\n closestPt.properties.location = length;\n }\n if (stop_1.properties.dist < closestPt.properties.dist) {\n closestPt = stop_1;\n closestPt.properties.index = i + 1;\n closestPt.properties.location = length + sectionLength;\n }\n if (intersectPt && intersectPt.properties.dist < closestPt.properties.dist) {\n closestPt = intersectPt;\n closestPt.properties.index = i;\n }\n // update length\n length += sectionLength;\n }\n });\n return closestPt;\n}\nmodule.exports.default = $a56d1f7e3beb6b48$var$nearestPointOnLine;\n\n});\nparcelRegister(\"iXvoQ\", function(module, exports) {\n\"use strict\";\nvar $dcd617ffcca28111$var$__importDefault = module.exports && module.exports.__importDefault || function(mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $8abqV = parcelRequire(\"8abqV\");\n\nvar $dcd617ffcca28111$var$line_segment_1 = $dcd617ffcca28111$var$__importDefault((parcelRequire(\"9dq48\")));\n\nvar $7aiSl = parcelRequire(\"7aiSl\");\n\nvar $dcd617ffcca28111$var$geojson_rbush_1 = $dcd617ffcca28111$var$__importDefault((parcelRequire(\"gvVG2\")));\n/**\n * Takes any LineString or Polygon GeoJSON and returns the intersecting point(s).\n *\n * @name lineIntersect\n * @param {GeoJSON} line1 any LineString or Polygon\n * @param {GeoJSON} line2 any LineString or Polygon\n * @returns {FeatureCollection} point(s) that intersect both\n * @example\n * var line1 = turf.lineString([[126, -11], [129, -21]]);\n * var line2 = turf.lineString([[123, -18], [131, -14]]);\n * var intersects = turf.lineIntersect(line1, line2);\n *\n * //addToMap\n * var addToMap = [line1, line2, intersects]\n */ function $dcd617ffcca28111$var$lineIntersect(line1, line2) {\n var unique = {};\n var results = [];\n // First, normalize geometries to features\n // Then, handle simple 2-vertex segments\n if (line1.type === \"LineString\") line1 = $7GKQS.feature(line1);\n if (line2.type === \"LineString\") line2 = $7GKQS.feature(line2);\n if (line1.type === \"Feature\" && line2.type === \"Feature\" && line1.geometry !== null && line2.geometry !== null && line1.geometry.type === \"LineString\" && line2.geometry.type === \"LineString\" && line1.geometry.coordinates.length === 2 && line2.geometry.coordinates.length === 2) {\n var intersect = $dcd617ffcca28111$var$intersects(line1, line2);\n if (intersect) results.push(intersect);\n return $7GKQS.featureCollection(results);\n }\n // Handles complex GeoJSON Geometries\n var tree = $dcd617ffcca28111$var$geojson_rbush_1.default();\n tree.load($dcd617ffcca28111$var$line_segment_1.default(line2));\n $7aiSl.featureEach($dcd617ffcca28111$var$line_segment_1.default(line1), function(segment) {\n $7aiSl.featureEach(tree.search(segment), function(match) {\n var intersect = $dcd617ffcca28111$var$intersects(segment, match);\n if (intersect) {\n // prevent duplicate points https://github.com/Turfjs/turf/issues/688\n var key = $8abqV.getCoords(intersect).join(\",\");\n if (!unique[key]) {\n unique[key] = true;\n results.push(intersect);\n }\n }\n });\n });\n return $7GKQS.featureCollection(results);\n}\n/**\n * Find a point that intersects LineStrings with two coordinates each\n *\n * @private\n * @param {Feature} line1 GeoJSON LineString (Must only contain 2 coordinates)\n * @param {Feature} line2 GeoJSON LineString (Must only contain 2 coordinates)\n * @returns {Feature} intersecting GeoJSON Point\n */ function $dcd617ffcca28111$var$intersects(line1, line2) {\n var coords1 = $8abqV.getCoords(line1);\n var coords2 = $8abqV.getCoords(line2);\n if (coords1.length !== 2) throw new Error(\" line1 must only contain 2 coordinates\");\n if (coords2.length !== 2) throw new Error(\" line2 must only contain 2 coordinates\");\n var x1 = coords1[0][0];\n var y1 = coords1[0][1];\n var x2 = coords1[1][0];\n var y2 = coords1[1][1];\n var x3 = coords2[0][0];\n var y3 = coords2[0][1];\n var x4 = coords2[1][0];\n var y4 = coords2[1][1];\n var denom = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);\n var numeA = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3);\n var numeB = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3);\n if (denom === 0) {\n if (numeA === 0 && numeB === 0) return null;\n return null;\n }\n var uA = numeA / denom;\n var uB = numeB / denom;\n if (uA >= 0 && uA <= 1 && uB >= 0 && uB <= 1) {\n var x = x1 + uA * (x2 - x1);\n var y = y1 + uA * (y2 - y1);\n return $7GKQS.point([\n x,\n y\n ]);\n }\n return null;\n}\nmodule.exports.default = $dcd617ffcca28111$var$lineIntersect;\n\n});\nparcelRegister(\"9dq48\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $8abqV = parcelRequire(\"8abqV\");\n\nvar $7aiSl = parcelRequire(\"7aiSl\");\n/**\n * Creates a {@link FeatureCollection} of 2-vertex {@link LineString} segments from a\n * {@link LineString|(Multi)LineString} or {@link Polygon|(Multi)Polygon}.\n *\n * @name lineSegment\n * @param {GeoJSON} geojson GeoJSON Polygon or LineString\n * @returns {FeatureCollection} 2-vertex line segments\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n * var segments = turf.lineSegment(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, segments]\n */ function $6b598c09e02e4426$var$lineSegment(geojson) {\n if (!geojson) throw new Error(\"geojson is required\");\n var results = [];\n $7aiSl.flattenEach(geojson, function(feature) {\n $6b598c09e02e4426$var$lineSegmentFeature(feature, results);\n });\n return $7GKQS.featureCollection(results);\n}\n/**\n * Line Segment\n *\n * @private\n * @param {Feature} geojson Line or polygon feature\n * @param {Array} results push to results\n * @returns {void}\n */ function $6b598c09e02e4426$var$lineSegmentFeature(geojson, results) {\n var coords = [];\n var geometry = geojson.geometry;\n if (geometry !== null) {\n switch(geometry.type){\n case \"Polygon\":\n coords = $8abqV.getCoords(geometry);\n break;\n case \"LineString\":\n coords = [\n $8abqV.getCoords(geometry)\n ];\n }\n coords.forEach(function(coord) {\n var segments = $6b598c09e02e4426$var$createSegments(coord, geojson.properties);\n segments.forEach(function(segment) {\n segment.id = results.length;\n results.push(segment);\n });\n });\n }\n}\n/**\n * Create Segments from LineString coordinates\n *\n * @private\n * @param {Array>} coords LineString coordinates\n * @param {*} properties GeoJSON properties\n * @returns {Array>} line segments\n */ function $6b598c09e02e4426$var$createSegments(coords, properties) {\n var segments = [];\n coords.reduce(function(previousCoords, currentCoords) {\n var segment = $7GKQS.lineString([\n previousCoords,\n currentCoords\n ], properties);\n segment.bbox = $6b598c09e02e4426$var$bbox(previousCoords, currentCoords);\n segments.push(segment);\n return currentCoords;\n });\n return segments;\n}\n/**\n * Create BBox between two coordinates (faster than @turf/bbox)\n *\n * @private\n * @param {Array} coords1 Point coordinate\n * @param {Array} coords2 Point coordinate\n * @returns {BBox} [west, south, east, north]\n */ function $6b598c09e02e4426$var$bbox(coords1, coords2) {\n var x1 = coords1[0];\n var y1 = coords1[1];\n var x2 = coords2[0];\n var y2 = coords2[1];\n var west = x1 < x2 ? x1 : x2;\n var south = y1 < y2 ? y1 : y2;\n var east = x1 > x2 ? x1 : x2;\n var north = y1 > y2 ? y1 : y2;\n return [\n west,\n south,\n east,\n north\n ];\n}\nmodule.exports.default = $6b598c09e02e4426$var$lineSegment;\n\n});\n\nparcelRegister(\"gvVG2\", function(module, exports) {\n\nvar $euGzP = parcelRequire(\"euGzP\");\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $7aiSl = parcelRequire(\"7aiSl\");\n\nvar $lX3Ya = parcelRequire(\"lX3Ya\");\nvar $c05c480d27922c9a$require$turfBBox = $lX3Ya.default;\nvar $c05c480d27922c9a$var$featureEach = $7aiSl.featureEach;\nvar $c05c480d27922c9a$var$coordEach = $7aiSl.coordEach;\nvar $c05c480d27922c9a$var$polygon = $7GKQS.polygon;\nvar $c05c480d27922c9a$var$featureCollection = $7GKQS.featureCollection;\n/**\n * GeoJSON implementation of [RBush](https://github.com/mourner/rbush#rbush) spatial index.\n *\n * @name rbush\n * @param {number} [maxEntries=9] defines the maximum number of entries in a tree node. 9 (used by default) is a\n * reasonable choice for most applications. Higher value means faster insertion and slower search, and vice versa.\n * @returns {RBush} GeoJSON RBush\n * @example\n * var geojsonRbush = require('geojson-rbush').default;\n * var tree = geojsonRbush();\n */ function $c05c480d27922c9a$var$geojsonRbush(maxEntries) {\n var tree = $euGzP(maxEntries);\n /**\n * [insert](https://github.com/mourner/rbush#data-format)\n *\n * @param {Feature} feature insert single GeoJSON Feature\n * @returns {RBush} GeoJSON RBush\n * @example\n * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n * tree.insert(poly)\n */ tree.insert = function(feature) {\n if (feature.type !== \"Feature\") throw new Error(\"invalid feature\");\n feature.bbox = feature.bbox ? feature.bbox : $c05c480d27922c9a$require$turfBBox(feature);\n return $euGzP.prototype.insert.call(this, feature);\n };\n /**\n * [load](https://github.com/mourner/rbush#bulk-inserting-data)\n *\n * @param {FeatureCollection|Array} features load entire GeoJSON FeatureCollection\n * @returns {RBush} GeoJSON RBush\n * @example\n * var polys = turf.polygons([\n * [[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]],\n * [[[-93, 32], [-83, 32], [-83, 39], [-93, 39], [-93, 32]]]\n * ]);\n * tree.load(polys);\n */ tree.load = function(features) {\n var load = [];\n // Load an Array of Features\n if (Array.isArray(features)) features.forEach(function(feature) {\n if (feature.type !== \"Feature\") throw new Error(\"invalid features\");\n feature.bbox = feature.bbox ? feature.bbox : $c05c480d27922c9a$require$turfBBox(feature);\n load.push(feature);\n });\n else // Load a FeatureCollection\n $c05c480d27922c9a$var$featureEach(features, function(feature) {\n if (feature.type !== \"Feature\") throw new Error(\"invalid features\");\n feature.bbox = feature.bbox ? feature.bbox : $c05c480d27922c9a$require$turfBBox(feature);\n load.push(feature);\n });\n return $euGzP.prototype.load.call(this, load);\n };\n /**\n * [remove](https://github.com/mourner/rbush#removing-data)\n *\n * @param {Feature} feature remove single GeoJSON Feature\n * @param {Function} equals Pass a custom equals function to compare by value for removal.\n * @returns {RBush} GeoJSON RBush\n * @example\n * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n *\n * tree.remove(poly);\n */ tree.remove = function(feature, equals) {\n if (feature.type !== \"Feature\") throw new Error(\"invalid feature\");\n feature.bbox = feature.bbox ? feature.bbox : $c05c480d27922c9a$require$turfBBox(feature);\n return $euGzP.prototype.remove.call(this, feature, equals);\n };\n /**\n * [clear](https://github.com/mourner/rbush#removing-data)\n *\n * @returns {RBush} GeoJSON Rbush\n * @example\n * tree.clear()\n */ tree.clear = function() {\n return $euGzP.prototype.clear.call(this);\n };\n /**\n * [search](https://github.com/mourner/rbush#search)\n *\n * @param {BBox|FeatureCollection|Feature} geojson search with GeoJSON\n * @returns {FeatureCollection} all features that intersects with the given GeoJSON.\n * @example\n * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n *\n * tree.search(poly);\n */ tree.search = function(geojson) {\n var features = $euGzP.prototype.search.call(this, this.toBBox(geojson));\n return $c05c480d27922c9a$var$featureCollection(features);\n };\n /**\n * [collides](https://github.com/mourner/rbush#collisions)\n *\n * @param {BBox|FeatureCollection|Feature} geojson collides with GeoJSON\n * @returns {boolean} true if there are any items intersecting the given GeoJSON, otherwise false.\n * @example\n * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n *\n * tree.collides(poly);\n */ tree.collides = function(geojson) {\n return $euGzP.prototype.collides.call(this, this.toBBox(geojson));\n };\n /**\n * [all](https://github.com/mourner/rbush#search)\n *\n * @returns {FeatureCollection} all the features in RBush\n * @example\n * tree.all()\n */ tree.all = function() {\n var features = $euGzP.prototype.all.call(this);\n return $c05c480d27922c9a$var$featureCollection(features);\n };\n /**\n * [toJSON](https://github.com/mourner/rbush#export-and-import)\n *\n * @returns {any} export data as JSON object\n * @example\n * var exported = tree.toJSON()\n */ tree.toJSON = function() {\n return $euGzP.prototype.toJSON.call(this);\n };\n /**\n * [fromJSON](https://github.com/mourner/rbush#export-and-import)\n *\n * @param {any} json import previously exported data\n * @returns {RBush} GeoJSON RBush\n * @example\n * var exported = {\n * \"children\": [\n * {\n * \"type\": \"Feature\",\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * },\n * \"properties\": {},\n * \"bbox\": [110, 50, 110, 50]\n * }\n * ],\n * \"height\": 1,\n * \"leaf\": true,\n * \"minX\": 110,\n * \"minY\": 50,\n * \"maxX\": 110,\n * \"maxY\": 50\n * }\n * tree.fromJSON(exported)\n */ tree.fromJSON = function(json) {\n return $euGzP.prototype.fromJSON.call(this, json);\n };\n /**\n * Converts GeoJSON to {minX, minY, maxX, maxY} schema\n *\n * @private\n * @param {BBox|FeatureCollection|Feature} geojson feature(s) to retrieve BBox from\n * @returns {Object} converted to {minX, minY, maxX, maxY}\n */ tree.toBBox = function(geojson) {\n var bbox;\n if (geojson.bbox) bbox = geojson.bbox;\n else if (Array.isArray(geojson) && geojson.length === 4) bbox = geojson;\n else if (Array.isArray(geojson) && geojson.length === 6) bbox = [\n geojson[0],\n geojson[1],\n geojson[3],\n geojson[4]\n ];\n else if (geojson.type === \"Feature\") bbox = $c05c480d27922c9a$require$turfBBox(geojson);\n else if (geojson.type === \"FeatureCollection\") bbox = $c05c480d27922c9a$require$turfBBox(geojson);\n else throw new Error(\"invalid geojson\");\n return {\n minX: bbox[0],\n minY: bbox[1],\n maxX: bbox[2],\n maxY: bbox[3]\n };\n };\n return tree;\n}\nmodule.exports = $c05c480d27922c9a$var$geojsonRbush;\nmodule.exports.default = $c05c480d27922c9a$var$geojsonRbush;\n\n});\nparcelRegister(\"euGzP\", function(module, exports) {\n\"use strict\";\nmodule.exports = $a8d4e4ef6b2c428a$var$rbush;\nmodule.exports.default = $a8d4e4ef6b2c428a$var$rbush;\n\nvar $g1Wnf = parcelRequire(\"g1Wnf\");\nfunction $a8d4e4ef6b2c428a$var$rbush(maxEntries, format) {\n if (!(this instanceof $a8d4e4ef6b2c428a$var$rbush)) return new $a8d4e4ef6b2c428a$var$rbush(maxEntries, format);\n // max entries in a node is 9 by default; min node fill is 40% for best performance\n this._maxEntries = Math.max(4, maxEntries || 9);\n this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));\n if (format) this._initFormat(format);\n this.clear();\n}\n$a8d4e4ef6b2c428a$var$rbush.prototype = {\n all: function() {\n return this._all(this.data, []);\n },\n search: function(bbox) {\n var node = this.data, result = [], toBBox = this.toBBox;\n if (!$a8d4e4ef6b2c428a$var$intersects(bbox, node)) return result;\n var nodesToSearch = [], i, len, child, childBBox;\n while(node){\n for(i = 0, len = node.children.length; i < len; i++){\n child = node.children[i];\n childBBox = node.leaf ? toBBox(child) : child;\n if ($a8d4e4ef6b2c428a$var$intersects(bbox, childBBox)) {\n if (node.leaf) result.push(child);\n else if ($a8d4e4ef6b2c428a$var$contains(bbox, childBBox)) this._all(child, result);\n else nodesToSearch.push(child);\n }\n }\n node = nodesToSearch.pop();\n }\n return result;\n },\n collides: function(bbox) {\n var node = this.data, toBBox = this.toBBox;\n if (!$a8d4e4ef6b2c428a$var$intersects(bbox, node)) return false;\n var nodesToSearch = [], i, len, child, childBBox;\n while(node){\n for(i = 0, len = node.children.length; i < len; i++){\n child = node.children[i];\n childBBox = node.leaf ? toBBox(child) : child;\n if ($a8d4e4ef6b2c428a$var$intersects(bbox, childBBox)) {\n if (node.leaf || $a8d4e4ef6b2c428a$var$contains(bbox, childBBox)) return true;\n nodesToSearch.push(child);\n }\n }\n node = nodesToSearch.pop();\n }\n return false;\n },\n load: function(data) {\n if (!(data && data.length)) return this;\n if (data.length < this._minEntries) {\n for(var i = 0, len = data.length; i < len; i++)this.insert(data[i]);\n return this;\n }\n // recursively build the tree with the given data from scratch using OMT algorithm\n var node = this._build(data.slice(), 0, data.length - 1, 0);\n if (!this.data.children.length) // save as is if tree is empty\n this.data = node;\n else if (this.data.height === node.height) // split root if trees have the same height\n this._splitRoot(this.data, node);\n else {\n if (this.data.height < node.height) {\n // swap trees if inserted one is bigger\n var tmpNode = this.data;\n this.data = node;\n node = tmpNode;\n }\n // insert the small tree into the large tree at appropriate level\n this._insert(node, this.data.height - node.height - 1, true);\n }\n return this;\n },\n insert: function(item) {\n if (item) this._insert(item, this.data.height - 1);\n return this;\n },\n clear: function() {\n this.data = $a8d4e4ef6b2c428a$var$createNode([]);\n return this;\n },\n remove: function(item, equalsFn) {\n if (!item) return this;\n var node = this.data, bbox = this.toBBox(item), path = [], indexes = [], i, parent, index, goingUp;\n // depth-first iterative tree traversal\n while(node || path.length){\n if (!node) {\n node = path.pop();\n parent = path[path.length - 1];\n i = indexes.pop();\n goingUp = true;\n }\n if (node.leaf) {\n index = $a8d4e4ef6b2c428a$var$findItem(item, node.children, equalsFn);\n if (index !== -1) {\n // item found, remove the item and condense tree upwards\n node.children.splice(index, 1);\n path.push(node);\n this._condense(path);\n return this;\n }\n }\n if (!goingUp && !node.leaf && $a8d4e4ef6b2c428a$var$contains(node, bbox)) {\n path.push(node);\n indexes.push(i);\n i = 0;\n parent = node;\n node = node.children[0];\n } else if (parent) {\n i++;\n node = parent.children[i];\n goingUp = false;\n } else node = null; // nothing found\n }\n return this;\n },\n toBBox: function(item) {\n return item;\n },\n compareMinX: $a8d4e4ef6b2c428a$var$compareNodeMinX,\n compareMinY: $a8d4e4ef6b2c428a$var$compareNodeMinY,\n toJSON: function() {\n return this.data;\n },\n fromJSON: function(data) {\n this.data = data;\n return this;\n },\n _all: function(node, result) {\n var nodesToSearch = [];\n while(node){\n if (node.leaf) result.push.apply(result, node.children);\n else nodesToSearch.push.apply(nodesToSearch, node.children);\n node = nodesToSearch.pop();\n }\n return result;\n },\n _build: function(items, left, right, height) {\n var N = right - left + 1, M = this._maxEntries, node;\n if (N <= M) {\n // reached leaf level; return leaf\n node = $a8d4e4ef6b2c428a$var$createNode(items.slice(left, right + 1));\n $a8d4e4ef6b2c428a$var$calcBBox(node, this.toBBox);\n return node;\n }\n if (!height) {\n // target height of the bulk-loaded tree\n height = Math.ceil(Math.log(N) / Math.log(M));\n // target number of root entries to maximize storage utilization\n M = Math.ceil(N / Math.pow(M, height - 1));\n }\n node = $a8d4e4ef6b2c428a$var$createNode([]);\n node.leaf = false;\n node.height = height;\n // split the items into M mostly square tiles\n var N2 = Math.ceil(N / M), N1 = N2 * Math.ceil(Math.sqrt(M)), i, j, right2, right3;\n $a8d4e4ef6b2c428a$var$multiSelect(items, left, right, N1, this.compareMinX);\n for(i = left; i <= right; i += N1){\n right2 = Math.min(i + N1 - 1, right);\n $a8d4e4ef6b2c428a$var$multiSelect(items, i, right2, N2, this.compareMinY);\n for(j = i; j <= right2; j += N2){\n right3 = Math.min(j + N2 - 1, right2);\n // pack each entry recursively\n node.children.push(this._build(items, j, right3, height - 1));\n }\n }\n $a8d4e4ef6b2c428a$var$calcBBox(node, this.toBBox);\n return node;\n },\n _chooseSubtree: function(bbox, node, level, path) {\n var i, len, child, targetNode, area, enlargement, minArea, minEnlargement;\n while(true){\n path.push(node);\n if (node.leaf || path.length - 1 === level) break;\n minArea = minEnlargement = Infinity;\n for(i = 0, len = node.children.length; i < len; i++){\n child = node.children[i];\n area = $a8d4e4ef6b2c428a$var$bboxArea(child);\n enlargement = $a8d4e4ef6b2c428a$var$enlargedArea(bbox, child) - area;\n // choose entry with the least area enlargement\n if (enlargement < minEnlargement) {\n minEnlargement = enlargement;\n minArea = area < minArea ? area : minArea;\n targetNode = child;\n } else if (enlargement === minEnlargement) // otherwise choose one with the smallest area\n {\n if (area < minArea) {\n minArea = area;\n targetNode = child;\n }\n }\n }\n node = targetNode || node.children[0];\n }\n return node;\n },\n _insert: function(item, level, isNode) {\n var toBBox = this.toBBox, bbox = isNode ? item : toBBox(item), insertPath = [];\n // find the best node for accommodating the item, saving all nodes along the path too\n var node = this._chooseSubtree(bbox, this.data, level, insertPath);\n // put the item into the node\n node.children.push(item);\n $a8d4e4ef6b2c428a$var$extend(node, bbox);\n // split on node overflow; propagate upwards if necessary\n while(level >= 0){\n if (insertPath[level].children.length > this._maxEntries) {\n this._split(insertPath, level);\n level--;\n } else break;\n }\n // adjust bboxes along the insertion path\n this._adjustParentBBoxes(bbox, insertPath, level);\n },\n // split overflowed node into two\n _split: function(insertPath, level) {\n var node = insertPath[level], M = node.children.length, m = this._minEntries;\n this._chooseSplitAxis(node, m, M);\n var splitIndex = this._chooseSplitIndex(node, m, M);\n var newNode = $a8d4e4ef6b2c428a$var$createNode(node.children.splice(splitIndex, node.children.length - splitIndex));\n newNode.height = node.height;\n newNode.leaf = node.leaf;\n $a8d4e4ef6b2c428a$var$calcBBox(node, this.toBBox);\n $a8d4e4ef6b2c428a$var$calcBBox(newNode, this.toBBox);\n if (level) insertPath[level - 1].children.push(newNode);\n else this._splitRoot(node, newNode);\n },\n _splitRoot: function(node, newNode) {\n // split root node\n this.data = $a8d4e4ef6b2c428a$var$createNode([\n node,\n newNode\n ]);\n this.data.height = node.height + 1;\n this.data.leaf = false;\n $a8d4e4ef6b2c428a$var$calcBBox(this.data, this.toBBox);\n },\n _chooseSplitIndex: function(node, m, M) {\n var i, bbox1, bbox2, overlap, area, minOverlap, minArea, index;\n minOverlap = minArea = Infinity;\n for(i = m; i <= M - m; i++){\n bbox1 = $a8d4e4ef6b2c428a$var$distBBox(node, 0, i, this.toBBox);\n bbox2 = $a8d4e4ef6b2c428a$var$distBBox(node, i, M, this.toBBox);\n overlap = $a8d4e4ef6b2c428a$var$intersectionArea(bbox1, bbox2);\n area = $a8d4e4ef6b2c428a$var$bboxArea(bbox1) + $a8d4e4ef6b2c428a$var$bboxArea(bbox2);\n // choose distribution with minimum overlap\n if (overlap < minOverlap) {\n minOverlap = overlap;\n index = i;\n minArea = area < minArea ? area : minArea;\n } else if (overlap === minOverlap) // otherwise choose distribution with minimum area\n {\n if (area < minArea) {\n minArea = area;\n index = i;\n }\n }\n }\n return index;\n },\n // sorts node children by the best axis for split\n _chooseSplitAxis: function(node, m, M) {\n var compareMinX = node.leaf ? this.compareMinX : $a8d4e4ef6b2c428a$var$compareNodeMinX, compareMinY = node.leaf ? this.compareMinY : $a8d4e4ef6b2c428a$var$compareNodeMinY, xMargin = this._allDistMargin(node, m, M, compareMinX), yMargin = this._allDistMargin(node, m, M, compareMinY);\n // if total distributions margin value is minimal for x, sort by minX,\n // otherwise it's already sorted by minY\n if (xMargin < yMargin) node.children.sort(compareMinX);\n },\n // total margin of all possible split distributions where each node is at least m full\n _allDistMargin: function(node, m, M, compare) {\n node.children.sort(compare);\n var toBBox = this.toBBox, leftBBox = $a8d4e4ef6b2c428a$var$distBBox(node, 0, m, toBBox), rightBBox = $a8d4e4ef6b2c428a$var$distBBox(node, M - m, M, toBBox), margin = $a8d4e4ef6b2c428a$var$bboxMargin(leftBBox) + $a8d4e4ef6b2c428a$var$bboxMargin(rightBBox), i, child;\n for(i = m; i < M - m; i++){\n child = node.children[i];\n $a8d4e4ef6b2c428a$var$extend(leftBBox, node.leaf ? toBBox(child) : child);\n margin += $a8d4e4ef6b2c428a$var$bboxMargin(leftBBox);\n }\n for(i = M - m - 1; i >= m; i--){\n child = node.children[i];\n $a8d4e4ef6b2c428a$var$extend(rightBBox, node.leaf ? toBBox(child) : child);\n margin += $a8d4e4ef6b2c428a$var$bboxMargin(rightBBox);\n }\n return margin;\n },\n _adjustParentBBoxes: function(bbox, path, level) {\n // adjust bboxes along the given tree path\n for(var i = level; i >= 0; i--)$a8d4e4ef6b2c428a$var$extend(path[i], bbox);\n },\n _condense: function(path) {\n // go through the path, removing empty nodes and updating bboxes\n for(var i = path.length - 1, siblings; i >= 0; i--)if (path[i].children.length === 0) {\n if (i > 0) {\n siblings = path[i - 1].children;\n siblings.splice(siblings.indexOf(path[i]), 1);\n } else this.clear();\n } else $a8d4e4ef6b2c428a$var$calcBBox(path[i], this.toBBox);\n },\n _initFormat: function(format) {\n // data format (minX, minY, maxX, maxY accessors)\n // uses eval-type function compilation instead of just accepting a toBBox function\n // because the algorithms are very sensitive to sorting functions performance,\n // so they should be dead simple and without inner calls\n var compareArr = [\n \"return a\",\n \" - b\",\n \";\"\n ];\n this.compareMinX = new Function(\"a\", \"b\", compareArr.join(format[0]));\n this.compareMinY = new Function(\"a\", \"b\", compareArr.join(format[1]));\n this.toBBox = new Function(\"a\", \"return {minX: a\" + format[0] + \", minY: a\" + format[1] + \", maxX: a\" + format[2] + \", maxY: a\" + format[3] + \"};\");\n }\n};\nfunction $a8d4e4ef6b2c428a$var$findItem(item, items, equalsFn) {\n if (!equalsFn) return items.indexOf(item);\n for(var i = 0; i < items.length; i++){\n if (equalsFn(item, items[i])) return i;\n }\n return -1;\n}\n// calculate node's bbox from bboxes of its children\nfunction $a8d4e4ef6b2c428a$var$calcBBox(node, toBBox) {\n $a8d4e4ef6b2c428a$var$distBBox(node, 0, node.children.length, toBBox, node);\n}\n// min bounding rectangle of node children from k to p-1\nfunction $a8d4e4ef6b2c428a$var$distBBox(node, k, p, toBBox, destNode) {\n if (!destNode) destNode = $a8d4e4ef6b2c428a$var$createNode(null);\n destNode.minX = Infinity;\n destNode.minY = Infinity;\n destNode.maxX = -Infinity;\n destNode.maxY = -Infinity;\n for(var i = k, child; i < p; i++){\n child = node.children[i];\n $a8d4e4ef6b2c428a$var$extend(destNode, node.leaf ? toBBox(child) : child);\n }\n return destNode;\n}\nfunction $a8d4e4ef6b2c428a$var$extend(a, b) {\n a.minX = Math.min(a.minX, b.minX);\n a.minY = Math.min(a.minY, b.minY);\n a.maxX = Math.max(a.maxX, b.maxX);\n a.maxY = Math.max(a.maxY, b.maxY);\n return a;\n}\nfunction $a8d4e4ef6b2c428a$var$compareNodeMinX(a, b) {\n return a.minX - b.minX;\n}\nfunction $a8d4e4ef6b2c428a$var$compareNodeMinY(a, b) {\n return a.minY - b.minY;\n}\nfunction $a8d4e4ef6b2c428a$var$bboxArea(a) {\n return (a.maxX - a.minX) * (a.maxY - a.minY);\n}\nfunction $a8d4e4ef6b2c428a$var$bboxMargin(a) {\n return a.maxX - a.minX + (a.maxY - a.minY);\n}\nfunction $a8d4e4ef6b2c428a$var$enlargedArea(a, b) {\n return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) * (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY));\n}\nfunction $a8d4e4ef6b2c428a$var$intersectionArea(a, b) {\n var minX = Math.max(a.minX, b.minX), minY = Math.max(a.minY, b.minY), maxX = Math.min(a.maxX, b.maxX), maxY = Math.min(a.maxY, b.maxY);\n return Math.max(0, maxX - minX) * Math.max(0, maxY - minY);\n}\nfunction $a8d4e4ef6b2c428a$var$contains(a, b) {\n return a.minX <= b.minX && a.minY <= b.minY && b.maxX <= a.maxX && b.maxY <= a.maxY;\n}\nfunction $a8d4e4ef6b2c428a$var$intersects(a, b) {\n return b.minX <= a.maxX && b.minY <= a.maxY && b.maxX >= a.minX && b.maxY >= a.minY;\n}\nfunction $a8d4e4ef6b2c428a$var$createNode(children) {\n return {\n children: children,\n height: 1,\n leaf: true,\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity\n };\n}\n// sort an array so that items come in groups of n unsorted items, with groups sorted between each other;\n// combines selection algorithm with binary divide & conquer approach\nfunction $a8d4e4ef6b2c428a$var$multiSelect(arr, left, right, n, compare) {\n var stack = [\n left,\n right\n ], mid;\n while(stack.length){\n right = stack.pop();\n left = stack.pop();\n if (right - left <= n) continue;\n mid = left + Math.ceil((right - left) / n / 2) * n;\n $g1Wnf(arr, mid, left, right, compare);\n stack.push(left, mid, mid, right);\n }\n}\n\n});\nparcelRegister(\"g1Wnf\", function(module, exports) {\n(function(global, factory) {\n module.exports = factory();\n})(module.exports, function() {\n \"use strict\";\n function quickselect(arr, k, left, right, compare) {\n quickselectStep(arr, k, left || 0, right || arr.length - 1, compare || defaultCompare);\n }\n function quickselectStep(arr, k, left, right, compare) {\n while(right > left){\n if (right - left > 600) {\n var n = right - left + 1;\n var m = k - left + 1;\n var z = Math.log(n);\n var s = 0.5 * Math.exp(2 * z / 3);\n var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselectStep(arr, k, newLeft, newRight, compare);\n }\n var t = arr[k];\n var i = left;\n var j = right;\n swap(arr, left, k);\n if (compare(arr[right], t) > 0) swap(arr, left, right);\n while(i < j){\n swap(arr, i, j);\n i++;\n j--;\n while(compare(arr[i], t) < 0)i++;\n while(compare(arr[j], t) > 0)j--;\n }\n if (compare(arr[left], t) === 0) swap(arr, left, j);\n else {\n j++;\n swap(arr, j, right);\n }\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n }\n function swap(arr, i, j) {\n var tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n }\n function defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n }\n return quickselect;\n});\n\n});\n\n\n\n\n\nparcelRegister(\"lzQHn\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $1UAWS = parcelRequire(\"1UAWS\");\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n/**\n * Takes a {@link Point} and calculates the circle polygon given a radius in degrees, radians, miles, or kilometers; and steps for precision.\n *\n * @name circle\n * @param {Feature|number[]} center center point\n * @param {number} radius radius of the circle\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.steps=64] number of steps\n * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians\n * @param {Object} [options.properties={}] properties\n * @returns {Feature} circle polygon\n * @example\n * var center = [-75.343, 39.984];\n * var radius = 5;\n * var options = {steps: 10, units: 'kilometers', properties: {foo: 'bar'}};\n * var circle = turf.circle(center, radius, options);\n *\n * //addToMap\n * var addToMap = [turf.point(center), circle]\n */ function $fb55beb0eb8f96f2$var$circle(center, radius, options) {\n if (options === void 0) options = {};\n // default params\n var steps = options.steps || 64;\n var properties = options.properties ? options.properties : !Array.isArray(center) && center.type === \"Feature\" && center.properties ? center.properties : {};\n // main\n var coordinates = [];\n for(var i = 0; i < steps; i++)coordinates.push($1UAWS.default(center, radius, i * -360 / steps, options).geometry.coordinates);\n coordinates.push(coordinates[0]);\n return $7GKQS.polygon([\n coordinates\n ], properties);\n}\nmodule.exports.default = $fb55beb0eb8f96f2$var$circle;\n\n});\n\nparcelRegister(\"4B93b\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $lX3Ya = parcelRequire(\"lX3Ya\");\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n/**\n * Takes a {@link Feature} or {@link FeatureCollection} and returns the absolute center point of all features.\n *\n * @name center\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] Translate GeoJSON Properties to Point\n * @param {Object} [options.bbox={}] Translate GeoJSON BBox to Point\n * @param {Object} [options.id={}] Translate GeoJSON Id to Point\n * @returns {Feature} a Point feature at the absolute center point of all input features\n * @example\n * var features = turf.points([\n * [-97.522259, 35.4691],\n * [-97.502754, 35.463455],\n * [-97.508269, 35.463245]\n * ]);\n *\n * var center = turf.center(features);\n *\n * //addToMap\n * var addToMap = [features, center]\n * center.properties['marker-size'] = 'large';\n * center.properties['marker-color'] = '#000';\n */ function $3591a35128f0f03e$var$center(geojson, options) {\n if (options === void 0) options = {};\n var ext = $lX3Ya.default(geojson);\n var x = (ext[0] + ext[2]) / 2;\n var y = (ext[1] + ext[3]) / 2;\n return $7GKQS.point([\n x,\n y\n ], options.properties, options);\n}\nmodule.exports.default = $3591a35128f0f03e$var$center;\n\n});\n\n\nparcelRegister(\"lWzrG\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.TranslateMode = void 0;\n\nvar $ff9a827959d738b1$var$_bearing = $ff9a827959d738b1$var$_interopRequireDefault((parcelRequire(\"aDE4l\")));\n\nvar $ff9a827959d738b1$var$_distance = $ff9a827959d738b1$var$_interopRequireDefault((parcelRequire(\"b5wF2\")));\n\nvar $ff9a827959d738b1$var$_transformTranslate = $ff9a827959d738b1$var$_interopRequireDefault((parcelRequire(\"6QfJH\")));\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $ff9a827959d738b1$var$_viewportMercatorProject = $ff9a827959d738b1$var$_interopRequireDefault((parcelRequire(\"1LAFs\")));\n\nvar $hs5Hv = parcelRequire(\"hs5Hv\");\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\n\nvar $eJgQU = parcelRequire(\"eJgQU\");\nfunction $ff9a827959d738b1$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $ff9a827959d738b1$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $ff9a827959d738b1$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $ff9a827959d738b1$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $ff9a827959d738b1$var$_typeof(obj);\n}\nfunction $ff9a827959d738b1$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $ff9a827959d738b1$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $ff9a827959d738b1$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $ff9a827959d738b1$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $ff9a827959d738b1$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $ff9a827959d738b1$var$_createSuper(Derived) {\n return function() {\n var Super = $ff9a827959d738b1$var$_getPrototypeOf(Derived), result;\n if ($ff9a827959d738b1$var$_isNativeReflectConstruct()) {\n var NewTarget = $ff9a827959d738b1$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $ff9a827959d738b1$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $ff9a827959d738b1$var$_possibleConstructorReturn(self, call) {\n if (call && ($ff9a827959d738b1$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $ff9a827959d738b1$var$_assertThisInitialized(self);\n}\nfunction $ff9a827959d738b1$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $ff9a827959d738b1$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $ff9a827959d738b1$var$_getPrototypeOf(o) {\n $ff9a827959d738b1$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $ff9a827959d738b1$var$_getPrototypeOf(o);\n}\nfunction $ff9a827959d738b1$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $ff9a827959d738b1$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $ff9a827959d738b1$var$_setPrototypeOf(o, p) {\n $ff9a827959d738b1$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $ff9a827959d738b1$var$_setPrototypeOf(o, p);\n}\nfunction $ff9a827959d738b1$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $ff9a827959d738b1$var$TranslateMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $ff9a827959d738b1$var$_inherits(TranslateMode, _GeoJsonEditMode);\n var _super = $ff9a827959d738b1$var$_createSuper(TranslateMode);\n function TranslateMode() {\n var _this;\n $ff9a827959d738b1$var$_classCallCheck(this, TranslateMode);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n _this = _super.call.apply(_super, [\n this\n ].concat(args));\n $ff9a827959d738b1$var$_defineProperty($ff9a827959d738b1$var$_assertThisInitialized(_this), \"_geometryBeforeTranslate\", void 0);\n $ff9a827959d738b1$var$_defineProperty($ff9a827959d738b1$var$_assertThisInitialized(_this), \"_isTranslatable\", void 0);\n return _this;\n }\n $ff9a827959d738b1$var$_createClass(TranslateMode, [\n {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n if (!this._isTranslatable) // Nothing to do\n return;\n if (this._geometryBeforeTranslate) {\n // Translate the geometry\n var editAction = this.getTranslateAction(event.pointerDownMapCoords, event.mapCoords, \"translating\", props);\n if (editAction) props.onEdit(editAction);\n } // cancel map panning\n event.cancelPan();\n }\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n this._isTranslatable = this.isSelectionPicked(event.pointerDownPicks || event.picks, props);\n this.updateCursor(props);\n }\n },\n {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n if (!this._isTranslatable) return;\n this._geometryBeforeTranslate = this.getSelectedFeaturesAsFeatureCollection(props);\n }\n },\n {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n if (this._geometryBeforeTranslate) {\n // Translate the geometry\n var editAction = this.getTranslateAction(event.pointerDownMapCoords, event.mapCoords, \"translated\", props);\n if (editAction) props.onEdit(editAction);\n this._geometryBeforeTranslate = null;\n }\n }\n },\n {\n key: \"updateCursor\",\n value: function updateCursor(props) {\n if (this._isTranslatable) props.onUpdateCursor(\"move\");\n else props.onUpdateCursor(null);\n }\n },\n {\n key: \"getTranslateAction\",\n value: function getTranslateAction(startDragPoint, currentPoint, editType, props) {\n var _this2 = this;\n if (!this._geometryBeforeTranslate) return null;\n var updatedData = new $eJgQU.ImmutableFeatureCollection(props.data);\n var selectedIndexes = props.selectedIndexes;\n var _ref = props.modeConfig || {}, viewportDesc = _ref.viewport, screenSpace = _ref.screenSpace;\n if (viewportDesc && screenSpace) (function() {\n var viewport = viewportDesc.project ? viewportDesc : new $ff9a827959d738b1$var$_viewportMercatorProject[\"default\"](viewportDesc);\n var from = viewport.project(startDragPoint);\n var to = viewport.project(currentPoint);\n var dx = to[0] - from[0];\n var dy = to[1] - from[1];\n for(var i = 0; i < selectedIndexes.length; i++){\n var selectedIndex = selectedIndexes[i];\n var feature = _this2._geometryBeforeTranslate.features[i];\n var coordinates = feature.geometry.coordinates;\n if (coordinates) {\n coordinates = (0, $hs5Hv.mapCoords)(coordinates, function(coord) {\n var pixels = viewport.project(coord);\n if (pixels) {\n pixels[0] += dx;\n pixels[1] += dy;\n return viewport.unproject(pixels);\n }\n return null;\n }); // @ts-ignore\n updatedData = updatedData.replaceGeometry(selectedIndex, {\n type: feature.geometry.type,\n coordinates: coordinates\n });\n }\n }\n })();\n else {\n var p1 = (0, $7GKQS.point)(startDragPoint);\n var p2 = (0, $7GKQS.point)(currentPoint);\n var distanceMoved = (0, $ff9a827959d738b1$var$_distance[\"default\"])(p1, p2);\n var direction = (0, $ff9a827959d738b1$var$_bearing[\"default\"])(p1, p2);\n var movedFeatures = (0, $ff9a827959d738b1$var$_transformTranslate[\"default\"])(this._geometryBeforeTranslate, distanceMoved, direction);\n for(var i = 0; i < selectedIndexes.length; i++){\n var selectedIndex = selectedIndexes[i];\n var movedFeature = movedFeatures.features[i];\n updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry);\n }\n }\n return {\n updatedData: updatedData.getObject(),\n editType: editType,\n editContext: {\n featureIndexes: selectedIndexes\n }\n };\n }\n }\n ]);\n return TranslateMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.TranslateMode = $ff9a827959d738b1$var$TranslateMode;\n\n});\nparcelRegister(\"6QfJH\", function(module, exports) {\n\n$parcel$defineInteropFlag(module.exports);\n\n$parcel$export(module.exports, \"default\", function () { return $4fb3ce49b5617949$export$2e2bcd8739ae039; });\n\nvar $7Lf5N = parcelRequire(\"7Lf5N\");\n\nvar $2HWCK = parcelRequire(\"2HWCK\");\n\nvar $aCDhp = parcelRequire(\"aCDhp\");\n\nvar $asTyQ = parcelRequire(\"asTyQ\");\n\nvar $35NAj = parcelRequire(\"35NAj\");\n/**\n * Moves any geojson Feature or Geometry of a specified distance along a Rhumb Line\n * on the provided direction angle.\n *\n * @name transformTranslate\n * @param {GeoJSON} geojson object to be translated\n * @param {number} distance length of the motion; negative values determine motion in opposite direction\n * @param {number} direction of the motion; angle from North in decimal degrees, positive clockwise\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] in which `distance` will be express; miles, kilometers, degrees, or radians\n * @param {number} [options.zTranslation=0] length of the vertical motion, same unit of distance\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} the translated GeoJSON object\n * @example\n * var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);\n * var translatedPoly = turf.transformTranslate(poly, 100, 35);\n *\n * //addToMap\n * var addToMap = [poly, translatedPoly];\n * translatedPoly.properties = {stroke: '#F00', 'stroke-width': 4};\n */ function $4fb3ce49b5617949$var$transformTranslate(geojson, distance, direction, options) {\n // Optional parameters\n options = options || {};\n if (!(0, $2HWCK.isObject)(options)) throw new Error(\"options is invalid\");\n var units = options.units;\n var zTranslation = options.zTranslation;\n var mutate = options.mutate;\n // Input validation\n if (!geojson) throw new Error(\"geojson is required\");\n if (distance === undefined || distance === null || isNaN(distance)) throw new Error(\"distance is required\");\n if (zTranslation && typeof zTranslation !== \"number\" && isNaN(zTranslation)) throw new Error(\"zTranslation is not a number\");\n // Shortcut no-motion\n zTranslation = zTranslation !== undefined ? zTranslation : 0;\n if (distance === 0 && zTranslation === 0) return geojson;\n if (direction === undefined || direction === null || isNaN(direction)) throw new Error(\"direction is required\");\n // Invert with negative distances\n if (distance < 0) {\n distance = -distance;\n direction = -direction;\n }\n // Clone geojson to avoid side effects\n if (mutate === false || mutate === undefined) geojson = (0, $asTyQ.default)(geojson);\n // Translate each coordinate\n (0, $7Lf5N.coordEach)(geojson, function(pointCoords) {\n var newCoords = (0, $aCDhp.getCoords)((0, $35NAj.default)(pointCoords, distance, direction, {\n units: units\n }));\n pointCoords[0] = newCoords[0];\n pointCoords[1] = newCoords[1];\n if (zTranslation && pointCoords.length === 3) pointCoords[2] += zTranslation;\n });\n return geojson;\n}\nvar $4fb3ce49b5617949$export$2e2bcd8739ae039 = $4fb3ce49b5617949$var$transformTranslate;\n\n});\nparcelRegister(\"7Lf5N\", function(module, exports) {\n\n$parcel$export(module.exports, \"coordEach\", function () { return $5a68a13b21e38b8a$export$6e011439fde007ae; });\n\nvar $2HWCK = parcelRequire(\"2HWCK\");\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */ /**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */ function $5a68a13b21e38b8a$export$6e011439fde007ae(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for(var featureIndex = 0; featureIndex < stop; featureIndex++){\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for(var geomIndex = 0; geomIndex < stopG; geomIndex++){\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch(geomType){\n case null:\n break;\n case \"Point\":\n if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for(j = 0; j < coords.length; j++){\n if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for(j = 0; j < coords.length; j++){\n for(k = 0; k < coords[j].length - wrapShrink; k++){\n if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for(j = 0; j < coords.length; j++){\n if (geomType === \"MultiPolygon\") geometryIndex = 0;\n for(k = 0; k < coords[j].length; k++){\n for(l = 0; l < coords[j][k].length - wrapShrink; l++){\n if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for(j = 0; j < geometry.geometries.length; j++)if ($5a68a13b21e38b8a$export$6e011439fde007ae(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */ /**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */ function $5a68a13b21e38b8a$export$6f96eac39184ffe9(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n $5a68a13b21e38b8a$export$6e011439fde007ae(geojson, function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n }, excludeWrapCoord);\n return previousValue;\n}\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */ function $5a68a13b21e38b8a$export$9d63c695566dbaa3(geojson, callback) {\n var i;\n switch(geojson.type){\n case \"FeatureCollection\":\n for(i = 0; i < geojson.features.length; i++){\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */ function $5a68a13b21e38b8a$export$7ff6f75e5ef85a65(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $5a68a13b21e38b8a$export$9d63c695566dbaa3(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n else previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */ function $5a68a13b21e38b8a$export$45a31c4de8035258(geojson, callback) {\n if (geojson.type === \"Feature\") callback(geojson, 0);\n else if (geojson.type === \"FeatureCollection\") for(var i = 0; i < geojson.features.length; i++){\n if (callback(geojson.features[i], i) === false) break;\n }\n}\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */ function $5a68a13b21e38b8a$export$b18fee751b10b055(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $5a68a13b21e38b8a$export$45a31c4de8035258(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */ function $5a68a13b21e38b8a$export$5485820fc560fe4e(geojson) {\n var coords = [];\n $5a68a13b21e38b8a$export$6e011439fde007ae(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */ /**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */ function $5a68a13b21e38b8a$export$d2d248a56672ab3d(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for(i = 0; i < stop; i++){\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : undefined;\n featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : undefined;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for(g = 0; g < stopG; g++){\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n // Handle null Geometry\n if (geometry === null) {\n if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n continue;\n }\n switch(geometry.type){\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n break;\n case \"GeometryCollection\":\n for(j = 0; j < geometry.geometries.length; j++){\n if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n }\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */ /**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */ function $5a68a13b21e38b8a$export$30055ae7bd157809(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $5a68a13b21e38b8a$export$d2d248a56672ab3d(geojson, function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n });\n return previousValue;\n}\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */ /**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */ function $5a68a13b21e38b8a$export$12cba8b31beb353b(geojson, callback) {\n $5a68a13b21e38b8a$export$d2d248a56672ab3d(geojson, function(geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = geometry === null ? null : geometry.type;\n switch(type){\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback((0, $2HWCK.feature)(geometry, properties, {\n bbox: bbox,\n id: id\n }), featureIndex, 0) === false) return false;\n return;\n }\n var geomType;\n // Callback for multi-geometry\n switch(type){\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for(var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++){\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback((0, $2HWCK.feature)(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n }\n });\n}\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */ /**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */ function $5a68a13b21e38b8a$export$af6f15fec62b5d18(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $5a68a13b21e38b8a$export$12cba8b31beb353b(geojson, function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n });\n return previousValue;\n}\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */ /**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */ function $5a68a13b21e38b8a$export$d3ecc1efb2be121e(geojson, callback) {\n $5a68a13b21e38b8a$export$12cba8b31beb353b(geojson, function(feature$$1, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n // Exclude null Geometries\n if (!feature$$1.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature$$1.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n // Generate 2-vertex line segments\n var previousCoords;\n if ($5a68a13b21e38b8a$export$6e011439fde007ae(feature$$1, function(currentCoord, coordIndex, featureIndexCoord, mutliPartIndexCoord, geometryIndex) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (previousCoords === undefined) {\n previousCoords = currentCoord;\n return;\n }\n var currentSegment = (0, $2HWCK.lineString)([\n previousCoords,\n currentCoord\n ], feature$$1.properties);\n if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }) === false) return false;\n });\n}\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */ /**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentInex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */ function $5a68a13b21e38b8a$export$eec78cdd4d343a79(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n $5a68a13b21e38b8a$export$d3ecc1efb2be121e(geojson, function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === undefined) previousValue = currentSegment;\n else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n started = true;\n });\n return previousValue;\n}\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */ /**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */ function $5a68a13b21e38b8a$export$985a91771cfc783d(geojson, callback) {\n // validation\n if (!geojson) throw new Error(\"geojson is required\");\n $5a68a13b21e38b8a$export$12cba8b31beb353b(geojson, function(feature$$1, featureIndex, multiFeatureIndex) {\n if (feature$$1.geometry === null) return;\n var type = feature$$1.geometry.type;\n var coords = feature$$1.geometry.coordinates;\n switch(type){\n case \"LineString\":\n if (callback(feature$$1, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n break;\n case \"Polygon\":\n for(var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++){\n if (callback((0, $2HWCK.lineString)(coords[geometryIndex], feature$$1.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n }\n break;\n }\n });\n}\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */ /**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */ function $5a68a13b21e38b8a$export$a150e51c8ec9198a(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $5a68a13b21e38b8a$export$985a91771cfc783d(geojson, function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n });\n return previousValue;\n}\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature>\n */ function $5a68a13b21e38b8a$export$2b6ba91fd8680d67(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!(0, $2HWCK.isObject)(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n switch(geojson.type){\n case \"FeatureCollection\":\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch(geometry.type){\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return (0, $2HWCK.lineString)([\n coords[segmentIndex],\n coords[segmentIndex + 1]\n ], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return (0, $2HWCK.lineString)([\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1]\n ], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return (0, $2HWCK.lineString)([\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1]\n ], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return (0, $2HWCK.lineString)([\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ], properties, options);\n }\n throw new Error(\"geojson is invalid\");\n}\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature>\n */ function $5a68a13b21e38b8a$export$ed60ae5df1bac687(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!(0, $2HWCK.isObject)(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n switch(geojson.type){\n case \"FeatureCollection\":\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch(geometry.type){\n case \"Point\":\n return (0, $2HWCK.point)(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n return (0, $2HWCK.point)(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return (0, $2HWCK.point)(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n return (0, $2HWCK.point)(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return (0, $2HWCK.point)(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return (0, $2HWCK.point)(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n }\n throw new Error(\"geojson is invalid\");\n}\n\n});\nparcelRegister(\"2HWCK\", function(module, exports) {\n\n$parcel$export(module.exports, \"feature\", function () { return $1f8d1265c89b392b$export$ced6ed16dfd6a264; });\n$parcel$export(module.exports, \"isObject\", function () { return $1f8d1265c89b392b$export$a6cdc56e425d0d0a; });\n$parcel$export(module.exports, \"point\", function () { return $1f8d1265c89b392b$export$105684a3041cb6f3; });\n$parcel$export(module.exports, \"lineString\", function () { return $1f8d1265c89b392b$export$98ec381bb06902c3; });\n$parcel$export(module.exports, \"isNumber\", function () { return $1f8d1265c89b392b$export$7e4aa119212bc614; });\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */ var $1f8d1265c89b392b$export$e3a1ee0e9945697f = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */ var $1f8d1265c89b392b$export$f929e47acbed771a = {\n meters: $1f8d1265c89b392b$export$e3a1ee0e9945697f,\n metres: $1f8d1265c89b392b$export$e3a1ee0e9945697f,\n millimeters: $1f8d1265c89b392b$export$e3a1ee0e9945697f * 1000,\n millimetres: $1f8d1265c89b392b$export$e3a1ee0e9945697f * 1000,\n centimeters: $1f8d1265c89b392b$export$e3a1ee0e9945697f * 100,\n centimetres: $1f8d1265c89b392b$export$e3a1ee0e9945697f * 100,\n kilometers: $1f8d1265c89b392b$export$e3a1ee0e9945697f / 1000,\n kilometres: $1f8d1265c89b392b$export$e3a1ee0e9945697f / 1000,\n miles: $1f8d1265c89b392b$export$e3a1ee0e9945697f / 1609.344,\n nauticalmiles: $1f8d1265c89b392b$export$e3a1ee0e9945697f / 1852,\n inches: $1f8d1265c89b392b$export$e3a1ee0e9945697f * 39.370,\n yards: $1f8d1265c89b392b$export$e3a1ee0e9945697f / 1.0936,\n feet: $1f8d1265c89b392b$export$e3a1ee0e9945697f * 3.28084,\n radians: 1,\n degrees: $1f8d1265c89b392b$export$e3a1ee0e9945697f / 111325\n};\n/**\n * Units of measurement factors based on 1 meter.\n */ var $1f8d1265c89b392b$export$95cef4899be7420 = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 0.001,\n kilometres: 0.001,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / $1f8d1265c89b392b$export$e3a1ee0e9945697f,\n degrees: 1 / 111325\n};\n/**\n * Area of measurement factors based on 1 square meter.\n */ var $1f8d1265c89b392b$export$44665ce4f7f4c82b = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */ function $1f8d1265c89b392b$export$ced6ed16dfd6a264(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!$1f8d1265c89b392b$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (geometry === undefined) throw new Error(\"geometry is required\");\n if (properties && properties.constructor !== Object) throw new Error(\"properties must be an Object\");\n if (bbox) $1f8d1265c89b392b$export$28ac7bb8f5309bea(bbox);\n if (id) $1f8d1265c89b392b$export$f35f128fd59ea256(id);\n // Main\n var feat = {\n type: \"Feature\"\n };\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */ function $1f8d1265c89b392b$export$42a7622cbf932bb(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!$1f8d1265c89b392b$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n // Validation\n if (!type) throw new Error(\"type is required\");\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (bbox) $1f8d1265c89b392b$export$28ac7bb8f5309bea(bbox);\n // Main\n var geom;\n switch(type){\n case \"Point\":\n geom = $1f8d1265c89b392b$export$105684a3041cb6f3(coordinates).geometry;\n break;\n case \"LineString\":\n geom = $1f8d1265c89b392b$export$98ec381bb06902c3(coordinates).geometry;\n break;\n case \"Polygon\":\n geom = $1f8d1265c89b392b$export$b7b19aa0ee06c73(coordinates).geometry;\n break;\n case \"MultiPoint\":\n geom = $1f8d1265c89b392b$export$335fc20ed6b6dbb6(coordinates).geometry;\n break;\n case \"MultiLineString\":\n geom = $1f8d1265c89b392b$export$bd735230309493da(coordinates).geometry;\n break;\n case \"MultiPolygon\":\n geom = $1f8d1265c89b392b$export$79bd594da96638d3(coordinates).geometry;\n break;\n default:\n throw new Error(type + \" is invalid\");\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */ function $1f8d1265c89b392b$export$105684a3041cb6f3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be at least 2 numbers long\");\n if (!$1f8d1265c89b392b$export$7e4aa119212bc614(coordinates[0]) || !$1f8d1265c89b392b$export$7e4aa119212bc614(coordinates[1])) throw new Error(\"coordinates must contain numbers\");\n return $1f8d1265c89b392b$export$ced6ed16dfd6a264({\n type: \"Point\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */ function $1f8d1265c89b392b$export$9f048bf86ee2e9d2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $1f8d1265c89b392b$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $1f8d1265c89b392b$export$105684a3041cb6f3(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */ function $1f8d1265c89b392b$export$b7b19aa0ee06c73(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n for(var i = 0; i < coordinates.length; i++){\n var ring = coordinates[i];\n if (ring.length < 4) throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n for(var j = 0; j < ring[ring.length - 1].length; j++){\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !$1f8d1265c89b392b$export$7e4aa119212bc614(ring[0][0]) || !$1f8d1265c89b392b$export$7e4aa119212bc614(ring[0][1])) throw new Error(\"coordinates must contain numbers\");\n if (ring[ring.length - 1][j] !== ring[0][j]) throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n return $1f8d1265c89b392b$export$ced6ed16dfd6a264({\n type: \"Polygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */ function $1f8d1265c89b392b$export$8869eb68a940f9c2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $1f8d1265c89b392b$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $1f8d1265c89b392b$export$b7b19aa0ee06c73(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */ function $1f8d1265c89b392b$export$98ec381bb06902c3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be an array of two or more positions\");\n // Check if first point of LineString contains two numbers\n if (!$1f8d1265c89b392b$export$7e4aa119212bc614(coordinates[0][1]) || !$1f8d1265c89b392b$export$7e4aa119212bc614(coordinates[0][1])) throw new Error(\"coordinates must contain numbers\");\n return $1f8d1265c89b392b$export$ced6ed16dfd6a264({\n type: \"LineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */ function $1f8d1265c89b392b$export$74f7306c35db993f(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $1f8d1265c89b392b$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $1f8d1265c89b392b$export$98ec381bb06902c3(coords, properties);\n }), options);\n}\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */ function $1f8d1265c89b392b$export$4717c67ac3e5e04d(features, options) {\n // Optional Parameters\n options = options || {};\n if (!$1f8d1265c89b392b$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (!features) throw new Error(\"No features passed\");\n if (!Array.isArray(features)) throw new Error(\"features must be an Array\");\n if (bbox) $1f8d1265c89b392b$export$28ac7bb8f5309bea(bbox);\n if (id) $1f8d1265c89b392b$export$f35f128fd59ea256(id);\n // Main\n var fc = {\n type: \"FeatureCollection\"\n };\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */ function $1f8d1265c89b392b$export$bd735230309493da(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $1f8d1265c89b392b$export$ced6ed16dfd6a264({\n type: \"MultiLineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */ function $1f8d1265c89b392b$export$335fc20ed6b6dbb6(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $1f8d1265c89b392b$export$ced6ed16dfd6a264({\n type: \"MultiPoint\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */ function $1f8d1265c89b392b$export$79bd594da96638d3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $1f8d1265c89b392b$export$ced6ed16dfd6a264({\n type: \"MultiPolygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */ function $1f8d1265c89b392b$export$9242f1e18250422a(geometries, properties, options) {\n if (!geometries) throw new Error(\"geometries is required\");\n if (!Array.isArray(geometries)) throw new Error(\"geometries must be an Array\");\n return $1f8d1265c89b392b$export$ced6ed16dfd6a264({\n type: \"GeometryCollection\",\n geometries: geometries\n }, properties, options);\n}\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */ function $1f8d1265c89b392b$export$2077e0241d6afd3c(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error(\"num is required\");\n if (precision && !(precision >= 0)) throw new Error(\"precision must be a positive number\");\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */ function $1f8d1265c89b392b$export$f234631d6a2eedf8(radians, units) {\n if (radians === undefined || radians === null) throw new Error(\"radians is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $1f8d1265c89b392b$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return radians * factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */ function $1f8d1265c89b392b$export$a2280f7debae8f10(distance, units) {\n if (distance === undefined || distance === null) throw new Error(\"distance is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $1f8d1265c89b392b$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return distance / factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */ function $1f8d1265c89b392b$export$c7a138e00a89bd01(distance, units) {\n return $1f8d1265c89b392b$export$c41dd2a8460d3196($1f8d1265c89b392b$export$a2280f7debae8f10(distance, units));\n}\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */ function $1f8d1265c89b392b$export$f2077d29c73b33ec(bearing) {\n if (bearing === null || bearing === undefined) throw new Error(\"bearing is required\");\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */ function $1f8d1265c89b392b$export$c41dd2a8460d3196(radians) {\n if (radians === null || radians === undefined) throw new Error(\"radians is required\");\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */ function $1f8d1265c89b392b$export$c9fcf1a7df975d78(degrees) {\n if (degrees === null || degrees === undefined) throw new Error(\"degrees is required\");\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */ function $1f8d1265c89b392b$export$ea1536a749e80563(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error(\"length is required\");\n if (!(length >= 0)) throw new Error(\"length must be a positive number\");\n return $1f8d1265c89b392b$export$f234631d6a2eedf8($1f8d1265c89b392b$export$a2280f7debae8f10(length, originalUnit), finalUnit || \"kilometers\");\n}\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */ function $1f8d1265c89b392b$export$2e65e2c759f7e341(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error(\"area is required\");\n if (!(area >= 0)) throw new Error(\"area must be a positive number\");\n var startFactor = $1f8d1265c89b392b$export$44665ce4f7f4c82b[originalUnit || \"meters\"];\n if (!startFactor) throw new Error(\"invalid original units\");\n var finalFactor = $1f8d1265c89b392b$export$44665ce4f7f4c82b[finalUnit || \"kilometers\"];\n if (!finalFactor) throw new Error(\"invalid final units\");\n return area / startFactor * finalFactor;\n}\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */ function $1f8d1265c89b392b$export$7e4aa119212bc614(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */ function $1f8d1265c89b392b$export$a6cdc56e425d0d0a(input) {\n return !!input && input.constructor === Object;\n}\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */ function $1f8d1265c89b392b$export$28ac7bb8f5309bea(bbox) {\n if (!bbox) throw new Error(\"bbox is required\");\n if (!Array.isArray(bbox)) throw new Error(\"bbox must be an Array\");\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n bbox.forEach(function(num) {\n if (!$1f8d1265c89b392b$export$7e4aa119212bc614(num)) throw new Error(\"bbox must only contain numbers\");\n });\n}\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */ function $1f8d1265c89b392b$export$f35f128fd59ea256(id) {\n if (!id) throw new Error(\"id is required\");\n if ([\n \"string\",\n \"number\"\n ].indexOf(typeof id) === -1) throw new Error(\"id must be a number or a string\");\n}\n// Deprecated methods\nfunction $1f8d1265c89b392b$export$b7eac44a74fbbf44() {\n throw new Error(\"method has been renamed to `radiansToDegrees`\");\n}\nfunction $1f8d1265c89b392b$export$429f6664de4d6783() {\n throw new Error(\"method has been renamed to `degreesToRadians`\");\n}\nfunction $1f8d1265c89b392b$export$682f47d8f6f8f330() {\n throw new Error(\"method has been renamed to `lengthToDegrees`\");\n}\nfunction $1f8d1265c89b392b$export$8fc0c652b1df31fd() {\n throw new Error(\"method has been renamed to `lengthToRadians`\");\n}\nfunction $1f8d1265c89b392b$export$dc0d90c052e1e7ea() {\n throw new Error(\"method has been renamed to `radiansToLength`\");\n}\nfunction $1f8d1265c89b392b$export$97a5bf601f8e0e61() {\n throw new Error(\"method has been renamed to `bearingToAzimuth`\");\n}\nfunction $1f8d1265c89b392b$export$1d848d23272abfae() {\n throw new Error(\"method has been renamed to `convertLength`\");\n}\n\n});\n\n\nparcelRegister(\"aCDhp\", function(module, exports) {\n\n$parcel$export(module.exports, \"getCoords\", function () { return $7bbbec1f72658b64$export$39e042fd83f1b62e; });\n\nvar $2HWCK = parcelRequire(\"2HWCK\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */ function $7bbbec1f72658b64$export$b4663c6e64a770bc(coord) {\n if (!coord) throw new Error(\"coord is required\");\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") return coord.geometry.coordinates;\n if (coord.type === \"Point\") return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */ function $7bbbec1f72658b64$export$39e042fd83f1b62e(coords) {\n if (!coords) throw new Error(\"coords is required\");\n // Feature\n if (coords.type === \"Feature\" && coords.geometry !== null) return coords.geometry.coordinates;\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */ function $7bbbec1f72658b64$export$ab82360ed81b09b9(coordinates) {\n if (coordinates.length > 1 && (0, $2HWCK.isNumber)(coordinates[0]) && (0, $2HWCK.isNumber)(coordinates[1])) return true;\n if (Array.isArray(coordinates[0]) && coordinates[0].length) return $7bbbec1f72658b64$export$ab82360ed81b09b9(coordinates[0]);\n throw new Error(\"coordinates must only contain numbers\");\n}\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $7bbbec1f72658b64$export$329ecc560bd873a7(value, type, name) {\n if (!type || !name) throw new Error(\"type and name required\");\n if (!value || value.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type);\n}\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */ function $7bbbec1f72658b64$export$8b96d9ca92084402(feature, type, name) {\n if (!feature) throw new Error(\"No feature passed\");\n if (!name) throw new Error(\".featureOf() requires a name\");\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n}\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $7bbbec1f72658b64$export$bcf04c9d01e728b6(featureCollection, type, name) {\n if (!featureCollection) throw new Error(\"No featureCollection passed\");\n if (!name) throw new Error(\".collectionOf() requires a name\");\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n for(var i = 0; i < featureCollection.features.length; i++){\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n }\n}\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */ function $7bbbec1f72658b64$export$b8f320eb9549c8fd(geojson) {\n if (!geojson) throw new Error(\"geojson is required\");\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error(\"geojson must be a valid Feature or Geometry Object\");\n}\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */ function $7bbbec1f72658b64$export$cf92de84f30da2c5() {\n throw new Error(\"invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType\");\n}\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */ function $7bbbec1f72658b64$export$e2b5c5db9e2009fd(geojson, name) {\n if (!geojson) throw new Error((name || \"geojson\") + \" is required\");\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || \"geojson\") + \" is invalid\");\n}\n\n});\n\nparcelRegister(\"35NAj\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $24084d39202eb3c6$export$2e2bcd8739ae039; });\n\nvar $csOZg = parcelRequire(\"csOZg\");\n\nvar $aNgeK = parcelRequire(\"aNgeK\");\n// https://en.wikipedia.org/wiki/Rhumb_line\n/**\n * Returns the destination {@link Point} having travelled the given distance along a Rhumb line from the\n * origin Point with the (varant) given bearing.\n *\n * @name rhumbDestination\n * @param {Coord} origin starting point\n * @param {number} distance distance from the starting point\n * @param {number} bearing varant bearing angle ranging from -180 to 180 degrees from north\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @param {Object} [options.properties={}] translate properties to destination point\n * @returns {Feature} Destination point.\n * @example\n * var pt = turf.point([-75.343, 39.984], {\"marker-color\": \"F00\"});\n * var distance = 50;\n * var bearing = 90;\n * var options = {units: 'miles'};\n *\n * var destination = turf.rhumbDestination(pt, distance, bearing, options);\n *\n * //addToMap\n * var addToMap = [pt, destination]\n * destination.properties['marker-color'] = '#00F';\n */ function $24084d39202eb3c6$var$rhumbDestination(origin, distance, bearing, options) {\n // Optional parameters\n options = options || {};\n if (!(0, $csOZg.isObject)(options)) throw new Error(\"options is invalid\");\n var units = options.units;\n var properties = options.properties;\n // validation\n if (!origin) throw new Error(\"origin is required\");\n if (distance === undefined || distance === null) throw new Error(\"distance is required\");\n if (bearing === undefined || bearing === null) throw new Error(\"bearing is required\");\n if (!(distance >= 0)) throw new Error(\"distance must be greater than 0\");\n var distanceInMeters = (0, $csOZg.convertLength)(distance, units, \"meters\");\n var coords = (0, $aNgeK.getCoord)(origin);\n var destination = $24084d39202eb3c6$var$calculateRhumbDestination(coords, distanceInMeters, bearing);\n // compensate the crossing of the 180th meridian (https://macwright.org/2016/09/26/the-180th-meridian.html)\n // solution from https://github.com/mapbox/mapbox-gl-js/issues/3250#issuecomment-294887678\n destination[0] += destination[0] - coords[0] > 180 ? -360 : coords[0] - destination[0] > 180 ? 360 : 0;\n return (0, $csOZg.point)(destination, properties);\n}\n/**\n * Returns the destination point having travelled along a rhumb line from origin point the given\n * distance on the given bearing.\n * Adapted from Geodesy: http://www.movable-type.co.uk/scripts/latlong.html#rhumblines\n *\n * @private\n * @param {Array} origin - point\n * @param {number} distance - Distance travelled, in same units as earth radius (default: metres).\n * @param {number} bearing - Bearing in degrees from north.\n * @param {number} [radius=6371e3] - (Mean) radius of earth (defaults to radius in metres).\n * @returns {Array} Destination point.\n */ function $24084d39202eb3c6$var$calculateRhumbDestination(origin, distance, bearing, radius) {\n // φ => phi\n // λ => lambda\n // ψ => psi\n // Δ => Delta\n // δ => delta\n // θ => theta\n radius = radius === undefined ? (0, $csOZg.earthRadius) : Number(radius);\n var delta = distance / radius; // angular distance in radians\n var lambda1 = origin[0] * Math.PI / 180; // to radians, but without normalize to 𝜋\n var phi1 = (0, $csOZg.degreesToRadians)(origin[1]);\n var theta = (0, $csOZg.degreesToRadians)(bearing);\n var DeltaPhi = delta * Math.cos(theta);\n var phi2 = phi1 + DeltaPhi;\n // check for some daft bugger going past the pole, normalise latitude if so\n if (Math.abs(phi2) > Math.PI / 2) phi2 = phi2 > 0 ? Math.PI - phi2 : -Math.PI - phi2;\n var DeltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));\n var q = Math.abs(DeltaPsi) > 10e-12 ? DeltaPhi / DeltaPsi : Math.cos(phi1); // E-W course becomes ill-conditioned with 0/0\n var DeltaLambda = delta * Math.sin(theta) / q;\n var lambda2 = lambda1 + DeltaLambda;\n return [\n (lambda2 * 180 / Math.PI + 540) % 360 - 180,\n phi2 * 180 / Math.PI\n ]; // normalise to −180..+180°\n}\nvar $24084d39202eb3c6$export$2e2bcd8739ae039 = $24084d39202eb3c6$var$rhumbDestination;\n\n});\nparcelRegister(\"csOZg\", function(module, exports) {\n\n$parcel$export(module.exports, \"earthRadius\", function () { return $912fa68bd3d0db4e$export$e3a1ee0e9945697f; });\n$parcel$export(module.exports, \"isObject\", function () { return $912fa68bd3d0db4e$export$a6cdc56e425d0d0a; });\n$parcel$export(module.exports, \"point\", function () { return $912fa68bd3d0db4e$export$105684a3041cb6f3; });\n$parcel$export(module.exports, \"isNumber\", function () { return $912fa68bd3d0db4e$export$7e4aa119212bc614; });\n$parcel$export(module.exports, \"degreesToRadians\", function () { return $912fa68bd3d0db4e$export$c9fcf1a7df975d78; });\n$parcel$export(module.exports, \"convertLength\", function () { return $912fa68bd3d0db4e$export$ea1536a749e80563; });\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */ var $912fa68bd3d0db4e$export$e3a1ee0e9945697f = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */ var $912fa68bd3d0db4e$export$f929e47acbed771a = {\n meters: $912fa68bd3d0db4e$export$e3a1ee0e9945697f,\n metres: $912fa68bd3d0db4e$export$e3a1ee0e9945697f,\n millimeters: $912fa68bd3d0db4e$export$e3a1ee0e9945697f * 1000,\n millimetres: $912fa68bd3d0db4e$export$e3a1ee0e9945697f * 1000,\n centimeters: $912fa68bd3d0db4e$export$e3a1ee0e9945697f * 100,\n centimetres: $912fa68bd3d0db4e$export$e3a1ee0e9945697f * 100,\n kilometers: $912fa68bd3d0db4e$export$e3a1ee0e9945697f / 1000,\n kilometres: $912fa68bd3d0db4e$export$e3a1ee0e9945697f / 1000,\n miles: $912fa68bd3d0db4e$export$e3a1ee0e9945697f / 1609.344,\n nauticalmiles: $912fa68bd3d0db4e$export$e3a1ee0e9945697f / 1852,\n inches: $912fa68bd3d0db4e$export$e3a1ee0e9945697f * 39.370,\n yards: $912fa68bd3d0db4e$export$e3a1ee0e9945697f / 1.0936,\n feet: $912fa68bd3d0db4e$export$e3a1ee0e9945697f * 3.28084,\n radians: 1,\n degrees: $912fa68bd3d0db4e$export$e3a1ee0e9945697f / 111325\n};\n/**\n * Units of measurement factors based on 1 meter.\n */ var $912fa68bd3d0db4e$export$95cef4899be7420 = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 0.001,\n kilometres: 0.001,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / $912fa68bd3d0db4e$export$e3a1ee0e9945697f,\n degrees: 1 / 111325\n};\n/**\n * Area of measurement factors based on 1 square meter.\n */ var $912fa68bd3d0db4e$export$44665ce4f7f4c82b = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */ function $912fa68bd3d0db4e$export$ced6ed16dfd6a264(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!$912fa68bd3d0db4e$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (geometry === undefined) throw new Error(\"geometry is required\");\n if (properties && properties.constructor !== Object) throw new Error(\"properties must be an Object\");\n if (bbox) $912fa68bd3d0db4e$export$28ac7bb8f5309bea(bbox);\n if (id) $912fa68bd3d0db4e$export$f35f128fd59ea256(id);\n // Main\n var feat = {\n type: \"Feature\"\n };\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */ function $912fa68bd3d0db4e$export$42a7622cbf932bb(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!$912fa68bd3d0db4e$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n // Validation\n if (!type) throw new Error(\"type is required\");\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (bbox) $912fa68bd3d0db4e$export$28ac7bb8f5309bea(bbox);\n // Main\n var geom;\n switch(type){\n case \"Point\":\n geom = $912fa68bd3d0db4e$export$105684a3041cb6f3(coordinates).geometry;\n break;\n case \"LineString\":\n geom = $912fa68bd3d0db4e$export$98ec381bb06902c3(coordinates).geometry;\n break;\n case \"Polygon\":\n geom = $912fa68bd3d0db4e$export$b7b19aa0ee06c73(coordinates).geometry;\n break;\n case \"MultiPoint\":\n geom = $912fa68bd3d0db4e$export$335fc20ed6b6dbb6(coordinates).geometry;\n break;\n case \"MultiLineString\":\n geom = $912fa68bd3d0db4e$export$bd735230309493da(coordinates).geometry;\n break;\n case \"MultiPolygon\":\n geom = $912fa68bd3d0db4e$export$79bd594da96638d3(coordinates).geometry;\n break;\n default:\n throw new Error(type + \" is invalid\");\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */ function $912fa68bd3d0db4e$export$105684a3041cb6f3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be at least 2 numbers long\");\n if (!$912fa68bd3d0db4e$export$7e4aa119212bc614(coordinates[0]) || !$912fa68bd3d0db4e$export$7e4aa119212bc614(coordinates[1])) throw new Error(\"coordinates must contain numbers\");\n return $912fa68bd3d0db4e$export$ced6ed16dfd6a264({\n type: \"Point\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */ function $912fa68bd3d0db4e$export$9f048bf86ee2e9d2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $912fa68bd3d0db4e$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $912fa68bd3d0db4e$export$105684a3041cb6f3(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */ function $912fa68bd3d0db4e$export$b7b19aa0ee06c73(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n for(var i = 0; i < coordinates.length; i++){\n var ring = coordinates[i];\n if (ring.length < 4) throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n for(var j = 0; j < ring[ring.length - 1].length; j++){\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !$912fa68bd3d0db4e$export$7e4aa119212bc614(ring[0][0]) || !$912fa68bd3d0db4e$export$7e4aa119212bc614(ring[0][1])) throw new Error(\"coordinates must contain numbers\");\n if (ring[ring.length - 1][j] !== ring[0][j]) throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n return $912fa68bd3d0db4e$export$ced6ed16dfd6a264({\n type: \"Polygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */ function $912fa68bd3d0db4e$export$8869eb68a940f9c2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $912fa68bd3d0db4e$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $912fa68bd3d0db4e$export$b7b19aa0ee06c73(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */ function $912fa68bd3d0db4e$export$98ec381bb06902c3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be an array of two or more positions\");\n // Check if first point of LineString contains two numbers\n if (!$912fa68bd3d0db4e$export$7e4aa119212bc614(coordinates[0][1]) || !$912fa68bd3d0db4e$export$7e4aa119212bc614(coordinates[0][1])) throw new Error(\"coordinates must contain numbers\");\n return $912fa68bd3d0db4e$export$ced6ed16dfd6a264({\n type: \"LineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */ function $912fa68bd3d0db4e$export$74f7306c35db993f(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $912fa68bd3d0db4e$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $912fa68bd3d0db4e$export$98ec381bb06902c3(coords, properties);\n }), options);\n}\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */ function $912fa68bd3d0db4e$export$4717c67ac3e5e04d(features, options) {\n // Optional Parameters\n options = options || {};\n if (!$912fa68bd3d0db4e$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (!features) throw new Error(\"No features passed\");\n if (!Array.isArray(features)) throw new Error(\"features must be an Array\");\n if (bbox) $912fa68bd3d0db4e$export$28ac7bb8f5309bea(bbox);\n if (id) $912fa68bd3d0db4e$export$f35f128fd59ea256(id);\n // Main\n var fc = {\n type: \"FeatureCollection\"\n };\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */ function $912fa68bd3d0db4e$export$bd735230309493da(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $912fa68bd3d0db4e$export$ced6ed16dfd6a264({\n type: \"MultiLineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */ function $912fa68bd3d0db4e$export$335fc20ed6b6dbb6(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $912fa68bd3d0db4e$export$ced6ed16dfd6a264({\n type: \"MultiPoint\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */ function $912fa68bd3d0db4e$export$79bd594da96638d3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $912fa68bd3d0db4e$export$ced6ed16dfd6a264({\n type: \"MultiPolygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */ function $912fa68bd3d0db4e$export$9242f1e18250422a(geometries, properties, options) {\n if (!geometries) throw new Error(\"geometries is required\");\n if (!Array.isArray(geometries)) throw new Error(\"geometries must be an Array\");\n return $912fa68bd3d0db4e$export$ced6ed16dfd6a264({\n type: \"GeometryCollection\",\n geometries: geometries\n }, properties, options);\n}\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */ function $912fa68bd3d0db4e$export$2077e0241d6afd3c(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error(\"num is required\");\n if (precision && !(precision >= 0)) throw new Error(\"precision must be a positive number\");\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */ function $912fa68bd3d0db4e$export$f234631d6a2eedf8(radians, units) {\n if (radians === undefined || radians === null) throw new Error(\"radians is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $912fa68bd3d0db4e$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return radians * factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */ function $912fa68bd3d0db4e$export$a2280f7debae8f10(distance, units) {\n if (distance === undefined || distance === null) throw new Error(\"distance is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $912fa68bd3d0db4e$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return distance / factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */ function $912fa68bd3d0db4e$export$c7a138e00a89bd01(distance, units) {\n return $912fa68bd3d0db4e$export$c41dd2a8460d3196($912fa68bd3d0db4e$export$a2280f7debae8f10(distance, units));\n}\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */ function $912fa68bd3d0db4e$export$f2077d29c73b33ec(bearing) {\n if (bearing === null || bearing === undefined) throw new Error(\"bearing is required\");\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */ function $912fa68bd3d0db4e$export$c41dd2a8460d3196(radians) {\n if (radians === null || radians === undefined) throw new Error(\"radians is required\");\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */ function $912fa68bd3d0db4e$export$c9fcf1a7df975d78(degrees) {\n if (degrees === null || degrees === undefined) throw new Error(\"degrees is required\");\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */ function $912fa68bd3d0db4e$export$ea1536a749e80563(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error(\"length is required\");\n if (!(length >= 0)) throw new Error(\"length must be a positive number\");\n return $912fa68bd3d0db4e$export$f234631d6a2eedf8($912fa68bd3d0db4e$export$a2280f7debae8f10(length, originalUnit), finalUnit || \"kilometers\");\n}\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */ function $912fa68bd3d0db4e$export$2e65e2c759f7e341(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error(\"area is required\");\n if (!(area >= 0)) throw new Error(\"area must be a positive number\");\n var startFactor = $912fa68bd3d0db4e$export$44665ce4f7f4c82b[originalUnit || \"meters\"];\n if (!startFactor) throw new Error(\"invalid original units\");\n var finalFactor = $912fa68bd3d0db4e$export$44665ce4f7f4c82b[finalUnit || \"kilometers\"];\n if (!finalFactor) throw new Error(\"invalid final units\");\n return area / startFactor * finalFactor;\n}\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */ function $912fa68bd3d0db4e$export$7e4aa119212bc614(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */ function $912fa68bd3d0db4e$export$a6cdc56e425d0d0a(input) {\n return !!input && input.constructor === Object;\n}\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */ function $912fa68bd3d0db4e$export$28ac7bb8f5309bea(bbox) {\n if (!bbox) throw new Error(\"bbox is required\");\n if (!Array.isArray(bbox)) throw new Error(\"bbox must be an Array\");\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n bbox.forEach(function(num) {\n if (!$912fa68bd3d0db4e$export$7e4aa119212bc614(num)) throw new Error(\"bbox must only contain numbers\");\n });\n}\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */ function $912fa68bd3d0db4e$export$f35f128fd59ea256(id) {\n if (!id) throw new Error(\"id is required\");\n if ([\n \"string\",\n \"number\"\n ].indexOf(typeof id) === -1) throw new Error(\"id must be a number or a string\");\n}\n// Deprecated methods\nfunction $912fa68bd3d0db4e$export$b7eac44a74fbbf44() {\n throw new Error(\"method has been renamed to `radiansToDegrees`\");\n}\nfunction $912fa68bd3d0db4e$export$429f6664de4d6783() {\n throw new Error(\"method has been renamed to `degreesToRadians`\");\n}\nfunction $912fa68bd3d0db4e$export$682f47d8f6f8f330() {\n throw new Error(\"method has been renamed to `lengthToDegrees`\");\n}\nfunction $912fa68bd3d0db4e$export$8fc0c652b1df31fd() {\n throw new Error(\"method has been renamed to `lengthToRadians`\");\n}\nfunction $912fa68bd3d0db4e$export$dc0d90c052e1e7ea() {\n throw new Error(\"method has been renamed to `radiansToLength`\");\n}\nfunction $912fa68bd3d0db4e$export$97a5bf601f8e0e61() {\n throw new Error(\"method has been renamed to `bearingToAzimuth`\");\n}\nfunction $912fa68bd3d0db4e$export$1d848d23272abfae() {\n throw new Error(\"method has been renamed to `convertLength`\");\n}\n\n});\n\nparcelRegister(\"aNgeK\", function(module, exports) {\n\n$parcel$export(module.exports, \"getCoord\", function () { return $7dbb134aa98666a9$export$b4663c6e64a770bc; });\n\nvar $csOZg = parcelRequire(\"csOZg\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */ function $7dbb134aa98666a9$export$b4663c6e64a770bc(coord) {\n if (!coord) throw new Error(\"coord is required\");\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") return coord.geometry.coordinates;\n if (coord.type === \"Point\") return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */ function $7dbb134aa98666a9$export$39e042fd83f1b62e(coords) {\n if (!coords) throw new Error(\"coords is required\");\n // Feature\n if (coords.type === \"Feature\" && coords.geometry !== null) return coords.geometry.coordinates;\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */ function $7dbb134aa98666a9$export$ab82360ed81b09b9(coordinates) {\n if (coordinates.length > 1 && (0, $csOZg.isNumber)(coordinates[0]) && (0, $csOZg.isNumber)(coordinates[1])) return true;\n if (Array.isArray(coordinates[0]) && coordinates[0].length) return $7dbb134aa98666a9$export$ab82360ed81b09b9(coordinates[0]);\n throw new Error(\"coordinates must only contain numbers\");\n}\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $7dbb134aa98666a9$export$329ecc560bd873a7(value, type, name) {\n if (!type || !name) throw new Error(\"type and name required\");\n if (!value || value.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type);\n}\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */ function $7dbb134aa98666a9$export$8b96d9ca92084402(feature, type, name) {\n if (!feature) throw new Error(\"No feature passed\");\n if (!name) throw new Error(\".featureOf() requires a name\");\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n}\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $7dbb134aa98666a9$export$bcf04c9d01e728b6(featureCollection, type, name) {\n if (!featureCollection) throw new Error(\"No featureCollection passed\");\n if (!name) throw new Error(\".collectionOf() requires a name\");\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n for(var i = 0; i < featureCollection.features.length; i++){\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n }\n}\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */ function $7dbb134aa98666a9$export$b8f320eb9549c8fd(geojson) {\n if (!geojson) throw new Error(\"geojson is required\");\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error(\"geojson must be a valid Feature or Geometry Object\");\n}\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */ function $7dbb134aa98666a9$export$cf92de84f30da2c5() {\n throw new Error(\"invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType\");\n}\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */ function $7dbb134aa98666a9$export$e2b5c5db9e2009fd(geojson, name) {\n if (!geojson) throw new Error((name || \"geojson\") + \" is required\");\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || \"geojson\") + \" is invalid\");\n}\n\n});\n\n\n\n\nparcelRegister(\"ljwRq\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.ScaleMode = void 0;\n\nvar $f844dcc60d4a8003$var$_bbox = $f844dcc60d4a8003$var$_interopRequireDefault((parcelRequire(\"lX3Ya\")));\n\nvar $f844dcc60d4a8003$var$_centroid = $f844dcc60d4a8003$var$_interopRequireDefault((parcelRequire(\"d9r3a\")));\n\nvar $f844dcc60d4a8003$var$_bearing = $f844dcc60d4a8003$var$_interopRequireDefault((parcelRequire(\"aDE4l\")));\n\nvar $f844dcc60d4a8003$var$_bboxPolygon = $f844dcc60d4a8003$var$_interopRequireDefault((parcelRequire(\"e9fnE\")));\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $f844dcc60d4a8003$var$_polygonToLine = $f844dcc60d4a8003$var$_interopRequireDefault((parcelRequire(\"eGOxi\")));\n\nvar $cJNDJ = parcelRequire(\"cJNDJ\");\n\nvar $f844dcc60d4a8003$var$_distance = $f844dcc60d4a8003$var$_interopRequireDefault((parcelRequire(\"b5wF2\")));\n\nvar $f844dcc60d4a8003$var$_transformScale = $f844dcc60d4a8003$var$_interopRequireDefault((parcelRequire(\"kYjHo\")));\n\nvar $8abqV = parcelRequire(\"8abqV\");\n\nvar $hs5Hv = parcelRequire(\"hs5Hv\");\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\n\nvar $eJgQU = parcelRequire(\"eJgQU\");\nfunction $f844dcc60d4a8003$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $f844dcc60d4a8003$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $f844dcc60d4a8003$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $f844dcc60d4a8003$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $f844dcc60d4a8003$var$_typeof(obj);\n}\nfunction $f844dcc60d4a8003$var$_toConsumableArray(arr) {\n return $f844dcc60d4a8003$var$_arrayWithoutHoles(arr) || $f844dcc60d4a8003$var$_iterableToArray(arr) || $f844dcc60d4a8003$var$_unsupportedIterableToArray(arr) || $f844dcc60d4a8003$var$_nonIterableSpread();\n}\nfunction $f844dcc60d4a8003$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $f844dcc60d4a8003$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $f844dcc60d4a8003$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $f844dcc60d4a8003$var$_arrayLikeToArray(o, minLen);\n}\nfunction $f844dcc60d4a8003$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $f844dcc60d4a8003$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $f844dcc60d4a8003$var$_arrayLikeToArray(arr);\n}\nfunction $f844dcc60d4a8003$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $f844dcc60d4a8003$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $f844dcc60d4a8003$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $f844dcc60d4a8003$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $f844dcc60d4a8003$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $f844dcc60d4a8003$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $f844dcc60d4a8003$var$_createSuper(Derived) {\n return function() {\n var Super = $f844dcc60d4a8003$var$_getPrototypeOf(Derived), result;\n if ($f844dcc60d4a8003$var$_isNativeReflectConstruct()) {\n var NewTarget = $f844dcc60d4a8003$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $f844dcc60d4a8003$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $f844dcc60d4a8003$var$_possibleConstructorReturn(self, call) {\n if (call && ($f844dcc60d4a8003$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $f844dcc60d4a8003$var$_assertThisInitialized(self);\n}\nfunction $f844dcc60d4a8003$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $f844dcc60d4a8003$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $f844dcc60d4a8003$var$_getPrototypeOf(o) {\n $f844dcc60d4a8003$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $f844dcc60d4a8003$var$_getPrototypeOf(o);\n}\nfunction $f844dcc60d4a8003$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $f844dcc60d4a8003$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $f844dcc60d4a8003$var$_setPrototypeOf(o, p) {\n $f844dcc60d4a8003$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $f844dcc60d4a8003$var$_setPrototypeOf(o, p);\n}\nfunction $f844dcc60d4a8003$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $f844dcc60d4a8003$var$ScaleMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $f844dcc60d4a8003$var$_inherits(ScaleMode, _GeoJsonEditMode);\n var _super = $f844dcc60d4a8003$var$_createSuper(ScaleMode);\n function ScaleMode() {\n var _this;\n $f844dcc60d4a8003$var$_classCallCheck(this, ScaleMode);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n _this = _super.call.apply(_super, [\n this\n ].concat(args));\n $f844dcc60d4a8003$var$_defineProperty($f844dcc60d4a8003$var$_assertThisInitialized(_this), \"_geometryBeingScaled\", void 0);\n $f844dcc60d4a8003$var$_defineProperty($f844dcc60d4a8003$var$_assertThisInitialized(_this), \"_selectedEditHandle\", void 0);\n $f844dcc60d4a8003$var$_defineProperty($f844dcc60d4a8003$var$_assertThisInitialized(_this), \"_cornerGuidePoints\", void 0);\n $f844dcc60d4a8003$var$_defineProperty($f844dcc60d4a8003$var$_assertThisInitialized(_this), \"_cursor\", void 0);\n $f844dcc60d4a8003$var$_defineProperty($f844dcc60d4a8003$var$_assertThisInitialized(_this), \"_isScaling\", false);\n $f844dcc60d4a8003$var$_defineProperty($f844dcc60d4a8003$var$_assertThisInitialized(_this), \"_isSinglePointGeometrySelected\", function(geometry) {\n var _ref = geometry || {}, features = _ref.features;\n if (Array.isArray(features) && features.length === 1) {\n // @ts-ignore\n var _getGeom = (0, $8abqV.getGeom)(features[0]), type = _getGeom.type;\n return type === \"Point\";\n }\n return false;\n });\n $f844dcc60d4a8003$var$_defineProperty($f844dcc60d4a8003$var$_assertThisInitialized(_this), \"_getOppositeScaleHandle\", function(selectedHandle) {\n var selectedHandleIndex = selectedHandle && selectedHandle.properties && Array.isArray(selectedHandle.properties.positionIndexes) && selectedHandle.properties.positionIndexes[0];\n if (typeof selectedHandleIndex !== \"number\") return null;\n var guidePointCount = _this._cornerGuidePoints.length;\n var oppositeIndex = (selectedHandleIndex + guidePointCount / 2) % guidePointCount;\n return _this._cornerGuidePoints.find(function(p) {\n if (!Array.isArray(p.properties.positionIndexes)) return false;\n return p.properties.positionIndexes[0] === oppositeIndex;\n });\n });\n $f844dcc60d4a8003$var$_defineProperty($f844dcc60d4a8003$var$_assertThisInitialized(_this), \"_getUpdatedData\", function(props, editedData) {\n var updatedData = new $eJgQU.ImmutableFeatureCollection(props.data);\n var selectedIndexes = props.selectedIndexes;\n for(var i = 0; i < selectedIndexes.length; i++){\n var selectedIndex = selectedIndexes[i];\n var movedFeature = editedData.features[i];\n updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry);\n }\n return updatedData.getObject();\n });\n $f844dcc60d4a8003$var$_defineProperty($f844dcc60d4a8003$var$_assertThisInitialized(_this), \"isEditHandleSelected\", function() {\n return Boolean(_this._selectedEditHandle);\n });\n $f844dcc60d4a8003$var$_defineProperty($f844dcc60d4a8003$var$_assertThisInitialized(_this), \"getScaleAction\", function(startDragPoint, currentPoint, editType, props) {\n if (!_this._selectedEditHandle) return null;\n var oppositeHandle = _this._getOppositeScaleHandle(_this._selectedEditHandle);\n var origin = (0, $8abqV.getCoord)(oppositeHandle); // @ts-ignore\n var scaleFactor = $f844dcc60d4a8003$var$getScaleFactor(origin, startDragPoint, currentPoint); // @ts-ignore\n var scaledFeatures = (0, $f844dcc60d4a8003$var$_transformScale[\"default\"])(_this._geometryBeingScaled, scaleFactor, {\n origin: origin\n });\n return {\n updatedData: _this._getUpdatedData(props, scaledFeatures),\n editType: editType,\n editContext: {\n featureIndexes: props.selectedIndexes\n }\n };\n });\n $f844dcc60d4a8003$var$_defineProperty($f844dcc60d4a8003$var$_assertThisInitialized(_this), \"updateCursor\", function(props) {\n if (_this._selectedEditHandle) {\n if (_this._cursor) props.onUpdateCursor(_this._cursor);\n var cursorGeometry = _this.getSelectedFeaturesAsFeatureCollection(props); // Get resize cursor direction from the hovered scale editHandle (e.g. nesw or nwse)\n var centroid = (0, $f844dcc60d4a8003$var$_centroid[\"default\"])(cursorGeometry);\n var bearing = (0, $f844dcc60d4a8003$var$_bearing[\"default\"])(centroid, _this._selectedEditHandle);\n var positiveBearing = bearing < 0 ? bearing + 180 : bearing;\n if (positiveBearing >= 0 && positiveBearing <= 90 || positiveBearing >= 180 && positiveBearing <= 270) {\n _this._cursor = \"nesw-resize\";\n props.onUpdateCursor(\"nesw-resize\");\n } else {\n _this._cursor = \"nwse-resize\";\n props.onUpdateCursor(\"nwse-resize\");\n }\n } else {\n props.onUpdateCursor(null);\n _this._cursor = null;\n }\n });\n return _this;\n }\n $f844dcc60d4a8003$var$_createClass(ScaleMode, [\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n if (!this._isScaling) {\n var selectedEditHandle = (0, $hs5Hv.getPickedEditHandle)(event.picks);\n this._selectedEditHandle = selectedEditHandle && selectedEditHandle.properties.editHandleType === \"scale\" ? selectedEditHandle : null;\n this.updateCursor(props);\n }\n }\n },\n {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n if (this._selectedEditHandle) {\n this._isScaling = true;\n this._geometryBeingScaled = this.getSelectedFeaturesAsFeatureCollection(props);\n }\n }\n },\n {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n if (!this._isScaling) return;\n props.onUpdateCursor(this._cursor);\n var scaleAction = this.getScaleAction(event.pointerDownMapCoords, event.mapCoords, \"scaling\", props);\n if (scaleAction) props.onEdit(scaleAction);\n event.cancelPan();\n }\n },\n {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n if (this._isScaling) {\n // Scale the geometry\n var scaleAction = this.getScaleAction(event.pointerDownMapCoords, event.mapCoords, \"scaled\", props);\n if (scaleAction) props.onEdit(scaleAction);\n props.onUpdateCursor(null);\n this._geometryBeingScaled = null;\n this._selectedEditHandle = null;\n this._cursor = null;\n this._isScaling = false;\n }\n }\n },\n {\n key: \"getGuides\",\n value: function getGuides(props) {\n this._cornerGuidePoints = [];\n var selectedGeometry = this.getSelectedFeaturesAsFeatureCollection(props); // Add buffer to the enveloping box if a single Point feature is selected\n if (this._isSinglePointGeometrySelected(selectedGeometry)) return {\n type: \"FeatureCollection\",\n features: []\n };\n var boundingBox = (0, $f844dcc60d4a8003$var$_bboxPolygon[\"default\"])((0, $f844dcc60d4a8003$var$_bbox[\"default\"])(selectedGeometry));\n boundingBox.properties.mode = \"scale\";\n var cornerGuidePoints = [];\n (0, $cJNDJ.coordEach)(boundingBox, function(coord, coordIndex) {\n if (coordIndex < 4) {\n // Get corner midpoint guides from the enveloping box\n var cornerPoint = (0, $7GKQS.point)(coord, {\n guideType: \"editHandle\",\n editHandleType: \"scale\",\n positionIndexes: [\n coordIndex\n ]\n });\n cornerGuidePoints.push(cornerPoint);\n }\n });\n this._cornerGuidePoints = cornerGuidePoints; // @ts-ignore\n return (0, $7GKQS.featureCollection)([\n (0, $f844dcc60d4a8003$var$_polygonToLine[\"default\"])(boundingBox)\n ].concat($f844dcc60d4a8003$var$_toConsumableArray(this._cornerGuidePoints)));\n }\n }\n ]);\n return ScaleMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.ScaleMode = $f844dcc60d4a8003$var$ScaleMode;\nfunction $f844dcc60d4a8003$var$getScaleFactor(centroid, startDragPoint, currentPoint) {\n var startDistance = (0, $f844dcc60d4a8003$var$_distance[\"default\"])(centroid, startDragPoint);\n var endDistance = (0, $f844dcc60d4a8003$var$_distance[\"default\"])(centroid, currentPoint);\n return endDistance / startDistance;\n}\n\n});\nparcelRegister(\"d9r3a\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $7aiSl = parcelRequire(\"7aiSl\");\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n/**\n * Takes one or more features and calculates the centroid using the mean of all vertices.\n * This lessens the effect of small islands and artifacts when calculating the centroid of a set of polygons.\n *\n * @name centroid\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional Parameters\n * @param {Object} [options.properties={}] an Object that is used as the {@link Feature}'s properties\n * @returns {Feature} the centroid of the input features\n * @example\n * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);\n *\n * var centroid = turf.centroid(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, centroid]\n */ function $99311931cfda31eb$var$centroid(geojson, options) {\n if (options === void 0) options = {};\n var xSum = 0;\n var ySum = 0;\n var len = 0;\n $7aiSl.coordEach(geojson, function(coord) {\n xSum += coord[0];\n ySum += coord[1];\n len++;\n });\n return $7GKQS.point([\n xSum / len,\n ySum / len\n ], options.properties);\n}\nmodule.exports.default = $99311931cfda31eb$var$centroid;\n\n});\n\nparcelRegister(\"eGOxi\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $8abqV = parcelRequire(\"8abqV\");\n/**\n * Converts a {@link Polygon} to {@link LineString|(Multi)LineString} or {@link MultiPolygon} to a\n * {@link FeatureCollection} of {@link LineString|(Multi)LineString}.\n *\n * @name polygonToLine\n * @param {Feature} poly Feature to convert\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] translates GeoJSON properties to Feature\n * @returns {FeatureCollection|Feature} converted (Multi)Polygon to (Multi)LineString\n * @example\n * var poly = turf.polygon([[[125, -30], [145, -30], [145, -20], [125, -20], [125, -30]]]);\n *\n * var line = turf.polygonToLine(poly);\n *\n * //addToMap\n * var addToMap = [line];\n */ function $ab1c305148a056ec$var$default_1(poly, options) {\n if (options === void 0) options = {};\n var geom = $8abqV.getGeom(poly);\n if (!options.properties && poly.type === \"Feature\") options.properties = poly.properties;\n switch(geom.type){\n case \"Polygon\":\n return $ab1c305148a056ec$var$polygonToLine(geom, options);\n case \"MultiPolygon\":\n return $ab1c305148a056ec$var$multiPolygonToLine(geom, options);\n default:\n throw new Error(\"invalid poly\");\n }\n}\nmodule.exports.default = $ab1c305148a056ec$var$default_1;\n/**\n * @private\n */ function $ab1c305148a056ec$var$polygonToLine(poly, options) {\n if (options === void 0) options = {};\n var geom = $8abqV.getGeom(poly);\n var type = geom.type;\n var coords = geom.coordinates;\n var properties = options.properties ? options.properties : poly.type === \"Feature\" ? poly.properties : {};\n return $ab1c305148a056ec$var$coordsToLine(coords, properties);\n}\nmodule.exports.polygonToLine = $ab1c305148a056ec$var$polygonToLine;\n/**\n * @private\n */ function $ab1c305148a056ec$var$multiPolygonToLine(multiPoly, options) {\n if (options === void 0) options = {};\n var geom = $8abqV.getGeom(multiPoly);\n var type = geom.type;\n var coords = geom.coordinates;\n var properties = options.properties ? options.properties : multiPoly.type === \"Feature\" ? multiPoly.properties : {};\n var lines = [];\n coords.forEach(function(coord) {\n lines.push($ab1c305148a056ec$var$coordsToLine(coord, properties));\n });\n return $7GKQS.featureCollection(lines);\n}\nmodule.exports.multiPolygonToLine = $ab1c305148a056ec$var$multiPolygonToLine;\n/**\n * @private\n */ function $ab1c305148a056ec$var$coordsToLine(coords, properties) {\n if (coords.length > 1) return $7GKQS.multiLineString(coords, properties);\n return $7GKQS.lineString(coords[0], properties);\n}\nmodule.exports.coordsToLine = $ab1c305148a056ec$var$coordsToLine;\n\n});\n\nparcelRegister(\"kYjHo\", function(module, exports) {\n\n$parcel$defineInteropFlag(module.exports);\n\n$parcel$export(module.exports, \"default\", function () { return $f448b1056658201d$export$2e2bcd8739ae039; });\n\nvar $asTyQ = parcelRequire(\"asTyQ\");\n\nvar $ceONs = parcelRequire(\"ceONs\");\n\nvar $2U63x = parcelRequire(\"2U63x\");\n\nvar $8dXS4 = parcelRequire(\"8dXS4\");\n\nvar $9QF0q = parcelRequire(\"9QF0q\");\n\nvar $kYTRt = parcelRequire(\"kYTRt\");\n\nvar $35NAj = parcelRequire(\"35NAj\");\n\nvar $1Kxcv = parcelRequire(\"1Kxcv\");\n\nvar $ulOUz = parcelRequire(\"ulOUz\");\n\nvar $jNIoO = parcelRequire(\"jNIoO\");\n/**\n * Scale a GeoJSON from a given point by a factor of scaling (ex: factor=2 would make the GeoJSON 200% larger).\n * If a FeatureCollection is provided, the origin point will be calculated based on each individual Feature.\n *\n * @name transformScale\n * @param {GeoJSON} geojson GeoJSON to be scaled\n * @param {number} factor of scaling, positive or negative values greater than 0\n * @param {Object} [options={}] Optional parameters\n * @param {string|Coord} [options.origin='centroid'] Point from which the scaling will occur (string options: sw/se/nw/ne/center/centroid)\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} scaled GeoJSON\n * @example\n * var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);\n * var scaledPoly = turf.transformScale(poly, 3);\n *\n * //addToMap\n * var addToMap = [poly, scaledPoly];\n * scaledPoly.properties = {stroke: '#F00', 'stroke-width': 4};\n */ function $f448b1056658201d$var$transformScale(geojson, factor, options) {\n // Optional parameters\n options = options || {};\n if (!(0, $ulOUz.isObject)(options)) throw new Error(\"options is invalid\");\n var origin = options.origin;\n var mutate = options.mutate;\n // Input validation\n if (!geojson) throw new Error(\"geojson required\");\n if (typeof factor !== \"number\" || factor === 0) throw new Error(\"invalid factor\");\n var originIsPoint = Array.isArray(origin) || typeof origin === \"object\";\n // Clone geojson to avoid side effects\n if (mutate !== true) geojson = (0, $asTyQ.default)(geojson);\n // Scale each Feature separately\n if (geojson.type === \"FeatureCollection\" && !originIsPoint) {\n (0, $1Kxcv.featureEach)(geojson, function(feature, index) {\n geojson.features[index] = $f448b1056658201d$var$scale(feature, factor, origin);\n });\n return geojson;\n }\n // Scale Feature/Geometry\n return $f448b1056658201d$var$scale(geojson, factor, origin);\n}\n/**\n * Scale Feature/Geometry\n *\n * @private\n * @param {Feature|Geometry} feature GeoJSON Feature/Geometry\n * @param {number} factor of scaling, positive or negative values greater than 0\n * @param {string|Coord} [origin=\"centroid\"] Point from which the scaling will occur (string options: sw/se/nw/ne/center/centroid)\n * @returns {Feature|Geometry} scaled GeoJSON Feature/Geometry\n */ function $f448b1056658201d$var$scale(feature, factor, origin) {\n // Default params\n var isPoint = (0, $jNIoO.getType)(feature) === \"Point\";\n origin = $f448b1056658201d$var$defineOrigin(feature, origin);\n // Shortcut no-scaling\n if (factor === 1 || isPoint) return feature;\n // Scale each coordinate\n (0, $1Kxcv.coordEach)(feature, function(coord) {\n var originalDistance = (0, $kYTRt.default)(origin, coord);\n var bearing = (0, $9QF0q.default)(origin, coord);\n var newDistance = originalDistance * factor;\n var newCoord = (0, $jNIoO.getCoords)((0, $35NAj.default)(origin, newDistance, bearing));\n coord[0] = newCoord[0];\n coord[1] = newCoord[1];\n if (coord.length === 3) coord[2] *= factor;\n });\n return feature;\n}\n/**\n * Define Origin\n *\n * @private\n * @param {GeoJSON} geojson GeoJSON\n * @param {string|Coord} origin sw/se/nw/ne/center/centroid\n * @returns {Feature} Point origin\n */ function $f448b1056658201d$var$defineOrigin(geojson, origin) {\n // Default params\n if (origin === undefined || origin === null) origin = \"centroid\";\n // Input Coord\n if (Array.isArray(origin) || typeof origin === \"object\") return (0, $jNIoO.getCoord)(origin);\n // Define BBox\n var bbox = geojson.bbox ? geojson.bbox : (0, $8dXS4.default)(geojson);\n var west = bbox[0];\n var south = bbox[1];\n var east = bbox[2];\n var north = bbox[3];\n switch(origin){\n case \"sw\":\n case \"southwest\":\n case \"westsouth\":\n case \"bottomleft\":\n return (0, $ulOUz.point)([\n west,\n south\n ]);\n case \"se\":\n case \"southeast\":\n case \"eastsouth\":\n case \"bottomright\":\n return (0, $ulOUz.point)([\n east,\n south\n ]);\n case \"nw\":\n case \"northwest\":\n case \"westnorth\":\n case \"topleft\":\n return (0, $ulOUz.point)([\n west,\n north\n ]);\n case \"ne\":\n case \"northeast\":\n case \"eastnorth\":\n case \"topright\":\n return (0, $ulOUz.point)([\n east,\n north\n ]);\n case \"center\":\n return (0, $ceONs.default)(geojson);\n case undefined:\n case null:\n case \"centroid\":\n return (0, $2U63x.default)(geojson);\n default:\n throw new Error(\"invalid origin\");\n }\n}\nvar $f448b1056658201d$export$2e2bcd8739ae039 = $f448b1056658201d$var$transformScale;\n\n});\nparcelRegister(\"ceONs\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $8e8e31fdd4103f45$export$2e2bcd8739ae039; });\n\nvar $8dXS4 = parcelRequire(\"8dXS4\");\n\nvar $ulOUz = parcelRequire(\"ulOUz\");\n/**\n * Takes a {@link Feature} or {@link FeatureCollection} and returns the absolute center point of all features.\n *\n * @name center\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] an Object that is used as the {@link Feature}'s properties\n * @returns {Feature} a Point feature at the absolute center point of all input features\n * @example\n * var features = turf.featureCollection([\n * turf.point( [-97.522259, 35.4691]),\n * turf.point( [-97.502754, 35.463455]),\n * turf.point( [-97.508269, 35.463245])\n * ]);\n *\n * var center = turf.center(features);\n *\n * //addToMap\n * var addToMap = [features, center]\n * center.properties['marker-size'] = 'large';\n * center.properties['marker-color'] = '#000';\n */ function $8e8e31fdd4103f45$var$center(geojson, options) {\n // Optional parameters\n options = options || {};\n if (!(0, $ulOUz.isObject)(options)) throw new Error(\"options is invalid\");\n var properties = options.properties;\n // Input validation\n if (!geojson) throw new Error(\"geojson is required\");\n var ext = (0, $8dXS4.default)(geojson);\n var x = (ext[0] + ext[2]) / 2;\n var y = (ext[1] + ext[3]) / 2;\n return (0, $ulOUz.point)([\n x,\n y\n ], properties);\n}\nvar $8e8e31fdd4103f45$export$2e2bcd8739ae039 = $8e8e31fdd4103f45$var$center;\n\n});\nparcelRegister(\"8dXS4\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $5fcdfac6c7690a60$export$2e2bcd8739ae039; });\n\nvar $1Kxcv = parcelRequire(\"1Kxcv\");\n/**\n * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.\n *\n * @name bbox\n * @param {GeoJSON} geojson any GeoJSON object\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);\n * var bbox = turf.bbox(line);\n * var bboxPolygon = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [line, bboxPolygon]\n */ function $5fcdfac6c7690a60$var$bbox(geojson) {\n var BBox = [\n Infinity,\n Infinity,\n -Infinity,\n -Infinity\n ];\n (0, $1Kxcv.coordEach)(geojson, function(coord) {\n if (BBox[0] > coord[0]) BBox[0] = coord[0];\n if (BBox[1] > coord[1]) BBox[1] = coord[1];\n if (BBox[2] < coord[0]) BBox[2] = coord[0];\n if (BBox[3] < coord[1]) BBox[3] = coord[1];\n });\n return BBox;\n}\nvar $5fcdfac6c7690a60$export$2e2bcd8739ae039 = $5fcdfac6c7690a60$var$bbox;\n\n});\nparcelRegister(\"1Kxcv\", function(module, exports) {\n\n$parcel$export(module.exports, \"coordEach\", function () { return $1463d750ae67dc8e$export$6e011439fde007ae; });\n$parcel$export(module.exports, \"featureEach\", function () { return $1463d750ae67dc8e$export$45a31c4de8035258; });\n\nvar $ulOUz = parcelRequire(\"ulOUz\");\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */ /**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */ function $1463d750ae67dc8e$export$6e011439fde007ae(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for(var featureIndex = 0; featureIndex < stop; featureIndex++){\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for(var geomIndex = 0; geomIndex < stopG; geomIndex++){\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch(geomType){\n case null:\n break;\n case \"Point\":\n if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for(j = 0; j < coords.length; j++){\n if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for(j = 0; j < coords.length; j++){\n for(k = 0; k < coords[j].length - wrapShrink; k++){\n if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for(j = 0; j < coords.length; j++){\n if (geomType === \"MultiPolygon\") geometryIndex = 0;\n for(k = 0; k < coords[j].length; k++){\n for(l = 0; l < coords[j][k].length - wrapShrink; l++){\n if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for(j = 0; j < geometry.geometries.length; j++)if ($1463d750ae67dc8e$export$6e011439fde007ae(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */ /**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */ function $1463d750ae67dc8e$export$6f96eac39184ffe9(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n $1463d750ae67dc8e$export$6e011439fde007ae(geojson, function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n }, excludeWrapCoord);\n return previousValue;\n}\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */ function $1463d750ae67dc8e$export$9d63c695566dbaa3(geojson, callback) {\n var i;\n switch(geojson.type){\n case \"FeatureCollection\":\n for(i = 0; i < geojson.features.length; i++){\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */ function $1463d750ae67dc8e$export$7ff6f75e5ef85a65(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $1463d750ae67dc8e$export$9d63c695566dbaa3(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n else previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */ function $1463d750ae67dc8e$export$45a31c4de8035258(geojson, callback) {\n if (geojson.type === \"Feature\") callback(geojson, 0);\n else if (geojson.type === \"FeatureCollection\") for(var i = 0; i < geojson.features.length; i++){\n if (callback(geojson.features[i], i) === false) break;\n }\n}\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */ function $1463d750ae67dc8e$export$b18fee751b10b055(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $1463d750ae67dc8e$export$45a31c4de8035258(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */ function $1463d750ae67dc8e$export$5485820fc560fe4e(geojson) {\n var coords = [];\n $1463d750ae67dc8e$export$6e011439fde007ae(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */ /**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */ function $1463d750ae67dc8e$export$d2d248a56672ab3d(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for(i = 0; i < stop; i++){\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : undefined;\n featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : undefined;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for(g = 0; g < stopG; g++){\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n // Handle null Geometry\n if (geometry === null) {\n if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n continue;\n }\n switch(geometry.type){\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n break;\n case \"GeometryCollection\":\n for(j = 0; j < geometry.geometries.length; j++){\n if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n }\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */ /**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */ function $1463d750ae67dc8e$export$30055ae7bd157809(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $1463d750ae67dc8e$export$d2d248a56672ab3d(geojson, function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n });\n return previousValue;\n}\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */ /**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */ function $1463d750ae67dc8e$export$12cba8b31beb353b(geojson, callback) {\n $1463d750ae67dc8e$export$d2d248a56672ab3d(geojson, function(geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = geometry === null ? null : geometry.type;\n switch(type){\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback((0, $ulOUz.feature)(geometry, properties, {\n bbox: bbox,\n id: id\n }), featureIndex, 0) === false) return false;\n return;\n }\n var geomType;\n // Callback for multi-geometry\n switch(type){\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for(var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++){\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback((0, $ulOUz.feature)(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n }\n });\n}\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */ /**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */ function $1463d750ae67dc8e$export$af6f15fec62b5d18(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $1463d750ae67dc8e$export$12cba8b31beb353b(geojson, function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n });\n return previousValue;\n}\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */ /**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */ function $1463d750ae67dc8e$export$d3ecc1efb2be121e(geojson, callback) {\n $1463d750ae67dc8e$export$12cba8b31beb353b(geojson, function(feature$$1, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n // Exclude null Geometries\n if (!feature$$1.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature$$1.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n // Generate 2-vertex line segments\n var previousCoords;\n if ($1463d750ae67dc8e$export$6e011439fde007ae(feature$$1, function(currentCoord, coordIndex, featureIndexCoord, mutliPartIndexCoord, geometryIndex) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (previousCoords === undefined) {\n previousCoords = currentCoord;\n return;\n }\n var currentSegment = (0, $ulOUz.lineString)([\n previousCoords,\n currentCoord\n ], feature$$1.properties);\n if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }) === false) return false;\n });\n}\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */ /**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentInex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */ function $1463d750ae67dc8e$export$eec78cdd4d343a79(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n $1463d750ae67dc8e$export$d3ecc1efb2be121e(geojson, function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === undefined) previousValue = currentSegment;\n else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n started = true;\n });\n return previousValue;\n}\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */ /**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */ function $1463d750ae67dc8e$export$985a91771cfc783d(geojson, callback) {\n // validation\n if (!geojson) throw new Error(\"geojson is required\");\n $1463d750ae67dc8e$export$12cba8b31beb353b(geojson, function(feature$$1, featureIndex, multiFeatureIndex) {\n if (feature$$1.geometry === null) return;\n var type = feature$$1.geometry.type;\n var coords = feature$$1.geometry.coordinates;\n switch(type){\n case \"LineString\":\n if (callback(feature$$1, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n break;\n case \"Polygon\":\n for(var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++){\n if (callback((0, $ulOUz.lineString)(coords[geometryIndex], feature$$1.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n }\n break;\n }\n });\n}\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */ /**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */ function $1463d750ae67dc8e$export$a150e51c8ec9198a(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $1463d750ae67dc8e$export$985a91771cfc783d(geojson, function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n });\n return previousValue;\n}\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature>\n */ function $1463d750ae67dc8e$export$2b6ba91fd8680d67(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!(0, $ulOUz.isObject)(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n switch(geojson.type){\n case \"FeatureCollection\":\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch(geometry.type){\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return (0, $ulOUz.lineString)([\n coords[segmentIndex],\n coords[segmentIndex + 1]\n ], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return (0, $ulOUz.lineString)([\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1]\n ], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return (0, $ulOUz.lineString)([\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1]\n ], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return (0, $ulOUz.lineString)([\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ], properties, options);\n }\n throw new Error(\"geojson is invalid\");\n}\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature>\n */ function $1463d750ae67dc8e$export$ed60ae5df1bac687(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!(0, $ulOUz.isObject)(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n switch(geojson.type){\n case \"FeatureCollection\":\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch(geometry.type){\n case \"Point\":\n return (0, $ulOUz.point)(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n return (0, $ulOUz.point)(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return (0, $ulOUz.point)(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n return (0, $ulOUz.point)(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return (0, $ulOUz.point)(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return (0, $ulOUz.point)(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n }\n throw new Error(\"geojson is invalid\");\n}\n\n});\nparcelRegister(\"ulOUz\", function(module, exports) {\n\n$parcel$export(module.exports, \"feature\", function () { return $05b3ba7bfb64fcde$export$ced6ed16dfd6a264; });\n$parcel$export(module.exports, \"isObject\", function () { return $05b3ba7bfb64fcde$export$a6cdc56e425d0d0a; });\n$parcel$export(module.exports, \"point\", function () { return $05b3ba7bfb64fcde$export$105684a3041cb6f3; });\n$parcel$export(module.exports, \"lineString\", function () { return $05b3ba7bfb64fcde$export$98ec381bb06902c3; });\n$parcel$export(module.exports, \"isNumber\", function () { return $05b3ba7bfb64fcde$export$7e4aa119212bc614; });\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */ var $05b3ba7bfb64fcde$export$e3a1ee0e9945697f = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */ var $05b3ba7bfb64fcde$export$f929e47acbed771a = {\n meters: $05b3ba7bfb64fcde$export$e3a1ee0e9945697f,\n metres: $05b3ba7bfb64fcde$export$e3a1ee0e9945697f,\n millimeters: $05b3ba7bfb64fcde$export$e3a1ee0e9945697f * 1000,\n millimetres: $05b3ba7bfb64fcde$export$e3a1ee0e9945697f * 1000,\n centimeters: $05b3ba7bfb64fcde$export$e3a1ee0e9945697f * 100,\n centimetres: $05b3ba7bfb64fcde$export$e3a1ee0e9945697f * 100,\n kilometers: $05b3ba7bfb64fcde$export$e3a1ee0e9945697f / 1000,\n kilometres: $05b3ba7bfb64fcde$export$e3a1ee0e9945697f / 1000,\n miles: $05b3ba7bfb64fcde$export$e3a1ee0e9945697f / 1609.344,\n nauticalmiles: $05b3ba7bfb64fcde$export$e3a1ee0e9945697f / 1852,\n inches: $05b3ba7bfb64fcde$export$e3a1ee0e9945697f * 39.370,\n yards: $05b3ba7bfb64fcde$export$e3a1ee0e9945697f / 1.0936,\n feet: $05b3ba7bfb64fcde$export$e3a1ee0e9945697f * 3.28084,\n radians: 1,\n degrees: $05b3ba7bfb64fcde$export$e3a1ee0e9945697f / 111325\n};\n/**\n * Units of measurement factors based on 1 meter.\n */ var $05b3ba7bfb64fcde$export$95cef4899be7420 = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 0.001,\n kilometres: 0.001,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / $05b3ba7bfb64fcde$export$e3a1ee0e9945697f,\n degrees: 1 / 111325\n};\n/**\n * Area of measurement factors based on 1 square meter.\n */ var $05b3ba7bfb64fcde$export$44665ce4f7f4c82b = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */ function $05b3ba7bfb64fcde$export$ced6ed16dfd6a264(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!$05b3ba7bfb64fcde$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (geometry === undefined) throw new Error(\"geometry is required\");\n if (properties && properties.constructor !== Object) throw new Error(\"properties must be an Object\");\n if (bbox) $05b3ba7bfb64fcde$export$28ac7bb8f5309bea(bbox);\n if (id) $05b3ba7bfb64fcde$export$f35f128fd59ea256(id);\n // Main\n var feat = {\n type: \"Feature\"\n };\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */ function $05b3ba7bfb64fcde$export$42a7622cbf932bb(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!$05b3ba7bfb64fcde$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n // Validation\n if (!type) throw new Error(\"type is required\");\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (bbox) $05b3ba7bfb64fcde$export$28ac7bb8f5309bea(bbox);\n // Main\n var geom;\n switch(type){\n case \"Point\":\n geom = $05b3ba7bfb64fcde$export$105684a3041cb6f3(coordinates).geometry;\n break;\n case \"LineString\":\n geom = $05b3ba7bfb64fcde$export$98ec381bb06902c3(coordinates).geometry;\n break;\n case \"Polygon\":\n geom = $05b3ba7bfb64fcde$export$b7b19aa0ee06c73(coordinates).geometry;\n break;\n case \"MultiPoint\":\n geom = $05b3ba7bfb64fcde$export$335fc20ed6b6dbb6(coordinates).geometry;\n break;\n case \"MultiLineString\":\n geom = $05b3ba7bfb64fcde$export$bd735230309493da(coordinates).geometry;\n break;\n case \"MultiPolygon\":\n geom = $05b3ba7bfb64fcde$export$79bd594da96638d3(coordinates).geometry;\n break;\n default:\n throw new Error(type + \" is invalid\");\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */ function $05b3ba7bfb64fcde$export$105684a3041cb6f3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be at least 2 numbers long\");\n if (!$05b3ba7bfb64fcde$export$7e4aa119212bc614(coordinates[0]) || !$05b3ba7bfb64fcde$export$7e4aa119212bc614(coordinates[1])) throw new Error(\"coordinates must contain numbers\");\n return $05b3ba7bfb64fcde$export$ced6ed16dfd6a264({\n type: \"Point\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */ function $05b3ba7bfb64fcde$export$9f048bf86ee2e9d2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $05b3ba7bfb64fcde$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $05b3ba7bfb64fcde$export$105684a3041cb6f3(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */ function $05b3ba7bfb64fcde$export$b7b19aa0ee06c73(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n for(var i = 0; i < coordinates.length; i++){\n var ring = coordinates[i];\n if (ring.length < 4) throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n for(var j = 0; j < ring[ring.length - 1].length; j++){\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !$05b3ba7bfb64fcde$export$7e4aa119212bc614(ring[0][0]) || !$05b3ba7bfb64fcde$export$7e4aa119212bc614(ring[0][1])) throw new Error(\"coordinates must contain numbers\");\n if (ring[ring.length - 1][j] !== ring[0][j]) throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n return $05b3ba7bfb64fcde$export$ced6ed16dfd6a264({\n type: \"Polygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */ function $05b3ba7bfb64fcde$export$8869eb68a940f9c2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $05b3ba7bfb64fcde$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $05b3ba7bfb64fcde$export$b7b19aa0ee06c73(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */ function $05b3ba7bfb64fcde$export$98ec381bb06902c3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be an array of two or more positions\");\n // Check if first point of LineString contains two numbers\n if (!$05b3ba7bfb64fcde$export$7e4aa119212bc614(coordinates[0][1]) || !$05b3ba7bfb64fcde$export$7e4aa119212bc614(coordinates[0][1])) throw new Error(\"coordinates must contain numbers\");\n return $05b3ba7bfb64fcde$export$ced6ed16dfd6a264({\n type: \"LineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */ function $05b3ba7bfb64fcde$export$74f7306c35db993f(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $05b3ba7bfb64fcde$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $05b3ba7bfb64fcde$export$98ec381bb06902c3(coords, properties);\n }), options);\n}\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */ function $05b3ba7bfb64fcde$export$4717c67ac3e5e04d(features, options) {\n // Optional Parameters\n options = options || {};\n if (!$05b3ba7bfb64fcde$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (!features) throw new Error(\"No features passed\");\n if (!Array.isArray(features)) throw new Error(\"features must be an Array\");\n if (bbox) $05b3ba7bfb64fcde$export$28ac7bb8f5309bea(bbox);\n if (id) $05b3ba7bfb64fcde$export$f35f128fd59ea256(id);\n // Main\n var fc = {\n type: \"FeatureCollection\"\n };\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */ function $05b3ba7bfb64fcde$export$bd735230309493da(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $05b3ba7bfb64fcde$export$ced6ed16dfd6a264({\n type: \"MultiLineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */ function $05b3ba7bfb64fcde$export$335fc20ed6b6dbb6(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $05b3ba7bfb64fcde$export$ced6ed16dfd6a264({\n type: \"MultiPoint\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */ function $05b3ba7bfb64fcde$export$79bd594da96638d3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $05b3ba7bfb64fcde$export$ced6ed16dfd6a264({\n type: \"MultiPolygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */ function $05b3ba7bfb64fcde$export$9242f1e18250422a(geometries, properties, options) {\n if (!geometries) throw new Error(\"geometries is required\");\n if (!Array.isArray(geometries)) throw new Error(\"geometries must be an Array\");\n return $05b3ba7bfb64fcde$export$ced6ed16dfd6a264({\n type: \"GeometryCollection\",\n geometries: geometries\n }, properties, options);\n}\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */ function $05b3ba7bfb64fcde$export$2077e0241d6afd3c(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error(\"num is required\");\n if (precision && !(precision >= 0)) throw new Error(\"precision must be a positive number\");\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */ function $05b3ba7bfb64fcde$export$f234631d6a2eedf8(radians, units) {\n if (radians === undefined || radians === null) throw new Error(\"radians is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $05b3ba7bfb64fcde$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return radians * factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */ function $05b3ba7bfb64fcde$export$a2280f7debae8f10(distance, units) {\n if (distance === undefined || distance === null) throw new Error(\"distance is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $05b3ba7bfb64fcde$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return distance / factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */ function $05b3ba7bfb64fcde$export$c7a138e00a89bd01(distance, units) {\n return $05b3ba7bfb64fcde$export$c41dd2a8460d3196($05b3ba7bfb64fcde$export$a2280f7debae8f10(distance, units));\n}\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */ function $05b3ba7bfb64fcde$export$f2077d29c73b33ec(bearing) {\n if (bearing === null || bearing === undefined) throw new Error(\"bearing is required\");\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */ function $05b3ba7bfb64fcde$export$c41dd2a8460d3196(radians) {\n if (radians === null || radians === undefined) throw new Error(\"radians is required\");\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */ function $05b3ba7bfb64fcde$export$c9fcf1a7df975d78(degrees) {\n if (degrees === null || degrees === undefined) throw new Error(\"degrees is required\");\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */ function $05b3ba7bfb64fcde$export$ea1536a749e80563(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error(\"length is required\");\n if (!(length >= 0)) throw new Error(\"length must be a positive number\");\n return $05b3ba7bfb64fcde$export$f234631d6a2eedf8($05b3ba7bfb64fcde$export$a2280f7debae8f10(length, originalUnit), finalUnit || \"kilometers\");\n}\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */ function $05b3ba7bfb64fcde$export$2e65e2c759f7e341(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error(\"area is required\");\n if (!(area >= 0)) throw new Error(\"area must be a positive number\");\n var startFactor = $05b3ba7bfb64fcde$export$44665ce4f7f4c82b[originalUnit || \"meters\"];\n if (!startFactor) throw new Error(\"invalid original units\");\n var finalFactor = $05b3ba7bfb64fcde$export$44665ce4f7f4c82b[finalUnit || \"kilometers\"];\n if (!finalFactor) throw new Error(\"invalid final units\");\n return area / startFactor * finalFactor;\n}\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */ function $05b3ba7bfb64fcde$export$7e4aa119212bc614(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */ function $05b3ba7bfb64fcde$export$a6cdc56e425d0d0a(input) {\n return !!input && input.constructor === Object;\n}\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */ function $05b3ba7bfb64fcde$export$28ac7bb8f5309bea(bbox) {\n if (!bbox) throw new Error(\"bbox is required\");\n if (!Array.isArray(bbox)) throw new Error(\"bbox must be an Array\");\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n bbox.forEach(function(num) {\n if (!$05b3ba7bfb64fcde$export$7e4aa119212bc614(num)) throw new Error(\"bbox must only contain numbers\");\n });\n}\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */ function $05b3ba7bfb64fcde$export$f35f128fd59ea256(id) {\n if (!id) throw new Error(\"id is required\");\n if ([\n \"string\",\n \"number\"\n ].indexOf(typeof id) === -1) throw new Error(\"id must be a number or a string\");\n}\n// Deprecated methods\nfunction $05b3ba7bfb64fcde$export$b7eac44a74fbbf44() {\n throw new Error(\"method has been renamed to `radiansToDegrees`\");\n}\nfunction $05b3ba7bfb64fcde$export$429f6664de4d6783() {\n throw new Error(\"method has been renamed to `degreesToRadians`\");\n}\nfunction $05b3ba7bfb64fcde$export$682f47d8f6f8f330() {\n throw new Error(\"method has been renamed to `lengthToDegrees`\");\n}\nfunction $05b3ba7bfb64fcde$export$8fc0c652b1df31fd() {\n throw new Error(\"method has been renamed to `lengthToRadians`\");\n}\nfunction $05b3ba7bfb64fcde$export$dc0d90c052e1e7ea() {\n throw new Error(\"method has been renamed to `radiansToLength`\");\n}\nfunction $05b3ba7bfb64fcde$export$97a5bf601f8e0e61() {\n throw new Error(\"method has been renamed to `bearingToAzimuth`\");\n}\nfunction $05b3ba7bfb64fcde$export$1d848d23272abfae() {\n throw new Error(\"method has been renamed to `convertLength`\");\n}\n\n});\n\n\n\n\nparcelRegister(\"2U63x\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $21d582520d741123$export$2e2bcd8739ae039; });\n\nvar $1Kxcv = parcelRequire(\"1Kxcv\");\n\nvar $ulOUz = parcelRequire(\"ulOUz\");\n/**\n * Takes one or more features and calculates the centroid using the mean of all vertices.\n * This lessens the effect of small islands and artifacts when calculating the centroid of a set of polygons.\n *\n * @name centroid\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [properties={}] an Object that is used as the {@link Feature}'s properties\n * @returns {Feature} the centroid of the input features\n * @example\n * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);\n *\n * var centroid = turf.centroid(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, centroid]\n */ function $21d582520d741123$var$centroid(geojson, properties) {\n var xSum = 0;\n var ySum = 0;\n var len = 0;\n (0, $1Kxcv.coordEach)(geojson, function(coord) {\n xSum += coord[0];\n ySum += coord[1];\n len++;\n }, true);\n return (0, $ulOUz.point)([\n xSum / len,\n ySum / len\n ], properties);\n}\nvar $21d582520d741123$export$2e2bcd8739ae039 = $21d582520d741123$var$centroid;\n\n});\n\nparcelRegister(\"9QF0q\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $72b8c751bc9305a8$export$2e2bcd8739ae039; });\n\nvar $cmN1X = parcelRequire(\"cmN1X\");\n\nvar $ie4KC = parcelRequire(\"ie4KC\");\n// https://en.wikipedia.org/wiki/Rhumb_line\n/**\n * Takes two {@link Point|points} and finds the bearing angle between them along a Rhumb line\n * i.e. the angle measured in degrees start the north line (0 degrees)\n *\n * @name rhumbBearing\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.final=false] calculates the final bearing if true\n * @returns {number} bearing from north in decimal degrees, between -180 and 180 degrees (positive clockwise)\n * @example\n * var point1 = turf.point([-75.343, 39.984], {\"marker-color\": \"#F00\"});\n * var point2 = turf.point([-75.534, 39.123], {\"marker-color\": \"#00F\"});\n *\n * var bearing = turf.rhumbBearing(point1, point2);\n *\n * //addToMap\n * var addToMap = [point1, point2];\n * point1.properties.bearing = bearing;\n * point2.properties.bearing = bearing;\n */ function $72b8c751bc9305a8$var$rhumbBearing(start, end, options) {\n // Optional parameters\n options = options || {};\n if (!(0, $ie4KC.isObject)(options)) throw new Error(\"options is invalid\");\n var final = options.final;\n // validation\n if (!start) throw new Error(\"start point is required\");\n if (!end) throw new Error(\"end point is required\");\n var bear360;\n if (final) bear360 = $72b8c751bc9305a8$var$calculateRhumbBearing((0, $cmN1X.getCoord)(end), (0, $cmN1X.getCoord)(start));\n else bear360 = $72b8c751bc9305a8$var$calculateRhumbBearing((0, $cmN1X.getCoord)(start), (0, $cmN1X.getCoord)(end));\n var bear180 = bear360 > 180 ? -(360 - bear360) : bear360;\n return bear180;\n}\n/**\n * Returns the bearing from ‘this’ point to destination point along a rhumb line.\n * Adapted from Geodesy: https://github.com/chrisveness/geodesy/blob/master/latlon-spherical.js\n *\n * @private\n * @param {Array} from - origin point.\n * @param {Array} to - destination point.\n * @returns {number} Bearing in degrees from north.\n * @example\n * var p1 = new LatLon(51.127, 1.338);\n * var p2 = new LatLon(50.964, 1.853);\n * var d = p1.rhumbBearingTo(p2); // 116.7 m\n */ function $72b8c751bc9305a8$var$calculateRhumbBearing(from, to) {\n // φ => phi\n // Δλ => deltaLambda\n // Δψ => deltaPsi\n // θ => theta\n var phi1 = (0, $ie4KC.degreesToRadians)(from[1]);\n var phi2 = (0, $ie4KC.degreesToRadians)(to[1]);\n var deltaLambda = (0, $ie4KC.degreesToRadians)(to[0] - from[0]);\n // if deltaLambdaon over 180° take shorter rhumb line across the anti-meridian:\n if (deltaLambda > Math.PI) deltaLambda -= 2 * Math.PI;\n if (deltaLambda < -Math.PI) deltaLambda += 2 * Math.PI;\n var deltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));\n var theta = Math.atan2(deltaLambda, deltaPsi);\n return ((0, $ie4KC.radiansToDegrees)(theta) + 360) % 360;\n}\nvar $72b8c751bc9305a8$export$2e2bcd8739ae039 = $72b8c751bc9305a8$var$rhumbBearing;\n\n});\nparcelRegister(\"cmN1X\", function(module, exports) {\n\n$parcel$export(module.exports, \"getCoord\", function () { return $900d9291beba929e$export$b4663c6e64a770bc; });\n\nvar $ie4KC = parcelRequire(\"ie4KC\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */ function $900d9291beba929e$export$b4663c6e64a770bc(coord) {\n if (!coord) throw new Error(\"coord is required\");\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") return coord.geometry.coordinates;\n if (coord.type === \"Point\") return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */ function $900d9291beba929e$export$39e042fd83f1b62e(coords) {\n if (!coords) throw new Error(\"coords is required\");\n // Feature\n if (coords.type === \"Feature\" && coords.geometry !== null) return coords.geometry.coordinates;\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */ function $900d9291beba929e$export$ab82360ed81b09b9(coordinates) {\n if (coordinates.length > 1 && (0, $ie4KC.isNumber)(coordinates[0]) && (0, $ie4KC.isNumber)(coordinates[1])) return true;\n if (Array.isArray(coordinates[0]) && coordinates[0].length) return $900d9291beba929e$export$ab82360ed81b09b9(coordinates[0]);\n throw new Error(\"coordinates must only contain numbers\");\n}\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $900d9291beba929e$export$329ecc560bd873a7(value, type, name) {\n if (!type || !name) throw new Error(\"type and name required\");\n if (!value || value.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type);\n}\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */ function $900d9291beba929e$export$8b96d9ca92084402(feature, type, name) {\n if (!feature) throw new Error(\"No feature passed\");\n if (!name) throw new Error(\".featureOf() requires a name\");\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n}\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $900d9291beba929e$export$bcf04c9d01e728b6(featureCollection, type, name) {\n if (!featureCollection) throw new Error(\"No featureCollection passed\");\n if (!name) throw new Error(\".collectionOf() requires a name\");\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n for(var i = 0; i < featureCollection.features.length; i++){\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n }\n}\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */ function $900d9291beba929e$export$b8f320eb9549c8fd(geojson) {\n if (!geojson) throw new Error(\"geojson is required\");\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error(\"geojson must be a valid Feature or Geometry Object\");\n}\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */ function $900d9291beba929e$export$cf92de84f30da2c5() {\n throw new Error(\"invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType\");\n}\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */ function $900d9291beba929e$export$e2b5c5db9e2009fd(geojson, name) {\n if (!geojson) throw new Error((name || \"geojson\") + \" is required\");\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || \"geojson\") + \" is invalid\");\n}\n\n});\nparcelRegister(\"ie4KC\", function(module, exports) {\n\n$parcel$export(module.exports, \"isObject\", function () { return $d44d383889ae1f54$export$a6cdc56e425d0d0a; });\n$parcel$export(module.exports, \"isNumber\", function () { return $d44d383889ae1f54$export$7e4aa119212bc614; });\n$parcel$export(module.exports, \"radiansToDegrees\", function () { return $d44d383889ae1f54$export$c41dd2a8460d3196; });\n$parcel$export(module.exports, \"degreesToRadians\", function () { return $d44d383889ae1f54$export$c9fcf1a7df975d78; });\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */ var $d44d383889ae1f54$export$e3a1ee0e9945697f = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */ var $d44d383889ae1f54$export$f929e47acbed771a = {\n meters: $d44d383889ae1f54$export$e3a1ee0e9945697f,\n metres: $d44d383889ae1f54$export$e3a1ee0e9945697f,\n millimeters: $d44d383889ae1f54$export$e3a1ee0e9945697f * 1000,\n millimetres: $d44d383889ae1f54$export$e3a1ee0e9945697f * 1000,\n centimeters: $d44d383889ae1f54$export$e3a1ee0e9945697f * 100,\n centimetres: $d44d383889ae1f54$export$e3a1ee0e9945697f * 100,\n kilometers: $d44d383889ae1f54$export$e3a1ee0e9945697f / 1000,\n kilometres: $d44d383889ae1f54$export$e3a1ee0e9945697f / 1000,\n miles: $d44d383889ae1f54$export$e3a1ee0e9945697f / 1609.344,\n nauticalmiles: $d44d383889ae1f54$export$e3a1ee0e9945697f / 1852,\n inches: $d44d383889ae1f54$export$e3a1ee0e9945697f * 39.370,\n yards: $d44d383889ae1f54$export$e3a1ee0e9945697f / 1.0936,\n feet: $d44d383889ae1f54$export$e3a1ee0e9945697f * 3.28084,\n radians: 1,\n degrees: $d44d383889ae1f54$export$e3a1ee0e9945697f / 111325\n};\n/**\n * Units of measurement factors based on 1 meter.\n */ var $d44d383889ae1f54$export$95cef4899be7420 = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 0.001,\n kilometres: 0.001,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / $d44d383889ae1f54$export$e3a1ee0e9945697f,\n degrees: 1 / 111325\n};\n/**\n * Area of measurement factors based on 1 square meter.\n */ var $d44d383889ae1f54$export$44665ce4f7f4c82b = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */ function $d44d383889ae1f54$export$ced6ed16dfd6a264(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!$d44d383889ae1f54$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (geometry === undefined) throw new Error(\"geometry is required\");\n if (properties && properties.constructor !== Object) throw new Error(\"properties must be an Object\");\n if (bbox) $d44d383889ae1f54$export$28ac7bb8f5309bea(bbox);\n if (id) $d44d383889ae1f54$export$f35f128fd59ea256(id);\n // Main\n var feat = {\n type: \"Feature\"\n };\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */ function $d44d383889ae1f54$export$42a7622cbf932bb(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!$d44d383889ae1f54$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n // Validation\n if (!type) throw new Error(\"type is required\");\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (bbox) $d44d383889ae1f54$export$28ac7bb8f5309bea(bbox);\n // Main\n var geom;\n switch(type){\n case \"Point\":\n geom = $d44d383889ae1f54$export$105684a3041cb6f3(coordinates).geometry;\n break;\n case \"LineString\":\n geom = $d44d383889ae1f54$export$98ec381bb06902c3(coordinates).geometry;\n break;\n case \"Polygon\":\n geom = $d44d383889ae1f54$export$b7b19aa0ee06c73(coordinates).geometry;\n break;\n case \"MultiPoint\":\n geom = $d44d383889ae1f54$export$335fc20ed6b6dbb6(coordinates).geometry;\n break;\n case \"MultiLineString\":\n geom = $d44d383889ae1f54$export$bd735230309493da(coordinates).geometry;\n break;\n case \"MultiPolygon\":\n geom = $d44d383889ae1f54$export$79bd594da96638d3(coordinates).geometry;\n break;\n default:\n throw new Error(type + \" is invalid\");\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */ function $d44d383889ae1f54$export$105684a3041cb6f3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be at least 2 numbers long\");\n if (!$d44d383889ae1f54$export$7e4aa119212bc614(coordinates[0]) || !$d44d383889ae1f54$export$7e4aa119212bc614(coordinates[1])) throw new Error(\"coordinates must contain numbers\");\n return $d44d383889ae1f54$export$ced6ed16dfd6a264({\n type: \"Point\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */ function $d44d383889ae1f54$export$9f048bf86ee2e9d2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $d44d383889ae1f54$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $d44d383889ae1f54$export$105684a3041cb6f3(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */ function $d44d383889ae1f54$export$b7b19aa0ee06c73(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n for(var i = 0; i < coordinates.length; i++){\n var ring = coordinates[i];\n if (ring.length < 4) throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n for(var j = 0; j < ring[ring.length - 1].length; j++){\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !$d44d383889ae1f54$export$7e4aa119212bc614(ring[0][0]) || !$d44d383889ae1f54$export$7e4aa119212bc614(ring[0][1])) throw new Error(\"coordinates must contain numbers\");\n if (ring[ring.length - 1][j] !== ring[0][j]) throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n return $d44d383889ae1f54$export$ced6ed16dfd6a264({\n type: \"Polygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */ function $d44d383889ae1f54$export$8869eb68a940f9c2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $d44d383889ae1f54$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $d44d383889ae1f54$export$b7b19aa0ee06c73(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */ function $d44d383889ae1f54$export$98ec381bb06902c3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be an array of two or more positions\");\n // Check if first point of LineString contains two numbers\n if (!$d44d383889ae1f54$export$7e4aa119212bc614(coordinates[0][1]) || !$d44d383889ae1f54$export$7e4aa119212bc614(coordinates[0][1])) throw new Error(\"coordinates must contain numbers\");\n return $d44d383889ae1f54$export$ced6ed16dfd6a264({\n type: \"LineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */ function $d44d383889ae1f54$export$74f7306c35db993f(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $d44d383889ae1f54$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $d44d383889ae1f54$export$98ec381bb06902c3(coords, properties);\n }), options);\n}\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */ function $d44d383889ae1f54$export$4717c67ac3e5e04d(features, options) {\n // Optional Parameters\n options = options || {};\n if (!$d44d383889ae1f54$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (!features) throw new Error(\"No features passed\");\n if (!Array.isArray(features)) throw new Error(\"features must be an Array\");\n if (bbox) $d44d383889ae1f54$export$28ac7bb8f5309bea(bbox);\n if (id) $d44d383889ae1f54$export$f35f128fd59ea256(id);\n // Main\n var fc = {\n type: \"FeatureCollection\"\n };\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */ function $d44d383889ae1f54$export$bd735230309493da(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $d44d383889ae1f54$export$ced6ed16dfd6a264({\n type: \"MultiLineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */ function $d44d383889ae1f54$export$335fc20ed6b6dbb6(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $d44d383889ae1f54$export$ced6ed16dfd6a264({\n type: \"MultiPoint\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */ function $d44d383889ae1f54$export$79bd594da96638d3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $d44d383889ae1f54$export$ced6ed16dfd6a264({\n type: \"MultiPolygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */ function $d44d383889ae1f54$export$9242f1e18250422a(geometries, properties, options) {\n if (!geometries) throw new Error(\"geometries is required\");\n if (!Array.isArray(geometries)) throw new Error(\"geometries must be an Array\");\n return $d44d383889ae1f54$export$ced6ed16dfd6a264({\n type: \"GeometryCollection\",\n geometries: geometries\n }, properties, options);\n}\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */ function $d44d383889ae1f54$export$2077e0241d6afd3c(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error(\"num is required\");\n if (precision && !(precision >= 0)) throw new Error(\"precision must be a positive number\");\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */ function $d44d383889ae1f54$export$f234631d6a2eedf8(radians, units) {\n if (radians === undefined || radians === null) throw new Error(\"radians is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $d44d383889ae1f54$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return radians * factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */ function $d44d383889ae1f54$export$a2280f7debae8f10(distance, units) {\n if (distance === undefined || distance === null) throw new Error(\"distance is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $d44d383889ae1f54$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return distance / factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */ function $d44d383889ae1f54$export$c7a138e00a89bd01(distance, units) {\n return $d44d383889ae1f54$export$c41dd2a8460d3196($d44d383889ae1f54$export$a2280f7debae8f10(distance, units));\n}\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */ function $d44d383889ae1f54$export$f2077d29c73b33ec(bearing) {\n if (bearing === null || bearing === undefined) throw new Error(\"bearing is required\");\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */ function $d44d383889ae1f54$export$c41dd2a8460d3196(radians) {\n if (radians === null || radians === undefined) throw new Error(\"radians is required\");\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */ function $d44d383889ae1f54$export$c9fcf1a7df975d78(degrees) {\n if (degrees === null || degrees === undefined) throw new Error(\"degrees is required\");\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */ function $d44d383889ae1f54$export$ea1536a749e80563(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error(\"length is required\");\n if (!(length >= 0)) throw new Error(\"length must be a positive number\");\n return $d44d383889ae1f54$export$f234631d6a2eedf8($d44d383889ae1f54$export$a2280f7debae8f10(length, originalUnit), finalUnit || \"kilometers\");\n}\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */ function $d44d383889ae1f54$export$2e65e2c759f7e341(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error(\"area is required\");\n if (!(area >= 0)) throw new Error(\"area must be a positive number\");\n var startFactor = $d44d383889ae1f54$export$44665ce4f7f4c82b[originalUnit || \"meters\"];\n if (!startFactor) throw new Error(\"invalid original units\");\n var finalFactor = $d44d383889ae1f54$export$44665ce4f7f4c82b[finalUnit || \"kilometers\"];\n if (!finalFactor) throw new Error(\"invalid final units\");\n return area / startFactor * finalFactor;\n}\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */ function $d44d383889ae1f54$export$7e4aa119212bc614(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */ function $d44d383889ae1f54$export$a6cdc56e425d0d0a(input) {\n return !!input && input.constructor === Object;\n}\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */ function $d44d383889ae1f54$export$28ac7bb8f5309bea(bbox) {\n if (!bbox) throw new Error(\"bbox is required\");\n if (!Array.isArray(bbox)) throw new Error(\"bbox must be an Array\");\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n bbox.forEach(function(num) {\n if (!$d44d383889ae1f54$export$7e4aa119212bc614(num)) throw new Error(\"bbox must only contain numbers\");\n });\n}\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */ function $d44d383889ae1f54$export$f35f128fd59ea256(id) {\n if (!id) throw new Error(\"id is required\");\n if ([\n \"string\",\n \"number\"\n ].indexOf(typeof id) === -1) throw new Error(\"id must be a number or a string\");\n}\n// Deprecated methods\nfunction $d44d383889ae1f54$export$b7eac44a74fbbf44() {\n throw new Error(\"method has been renamed to `radiansToDegrees`\");\n}\nfunction $d44d383889ae1f54$export$429f6664de4d6783() {\n throw new Error(\"method has been renamed to `degreesToRadians`\");\n}\nfunction $d44d383889ae1f54$export$682f47d8f6f8f330() {\n throw new Error(\"method has been renamed to `lengthToDegrees`\");\n}\nfunction $d44d383889ae1f54$export$8fc0c652b1df31fd() {\n throw new Error(\"method has been renamed to `lengthToRadians`\");\n}\nfunction $d44d383889ae1f54$export$dc0d90c052e1e7ea() {\n throw new Error(\"method has been renamed to `radiansToLength`\");\n}\nfunction $d44d383889ae1f54$export$97a5bf601f8e0e61() {\n throw new Error(\"method has been renamed to `bearingToAzimuth`\");\n}\nfunction $d44d383889ae1f54$export$1d848d23272abfae() {\n throw new Error(\"method has been renamed to `convertLength`\");\n}\n\n});\n\n\n\nparcelRegister(\"kYTRt\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $f464be2eac77db8e$export$2e2bcd8739ae039; });\n\nvar $4hSRO = parcelRequire(\"4hSRO\");\n\nvar $g4VP6 = parcelRequire(\"g4VP6\");\n// https://en.wikipedia.org/wiki/Rhumb_line\n/**\n * Calculates the distance along a rhumb line between two {@link Point|points} in degrees, radians,\n * miles, or kilometers.\n *\n * @name rhumbDistance\n * @param {Coord} from origin point\n * @param {Coord} to destination point\n * @param {Object} [options] Optional parameters\n * @param {string} [options.units=\"kilometers\"] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.rhumbDistance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */ function $f464be2eac77db8e$var$rhumbDistance(from, to, options) {\n // Optional parameters\n options = options || {};\n if (!(0, $4hSRO.isObject)(options)) throw new Error(\"options is invalid\");\n var units = options.units;\n // validation\n if (!from) throw new Error(\"from point is required\");\n if (!to) throw new Error(\"to point is required\");\n var origin = (0, $g4VP6.getCoord)(from);\n var destination = (0, $g4VP6.getCoord)(to);\n // compensate the crossing of the 180th meridian (https://macwright.org/2016/09/26/the-180th-meridian.html)\n // solution from https://github.com/mapbox/mapbox-gl-js/issues/3250#issuecomment-294887678\n destination[0] += destination[0] - origin[0] > 180 ? -360 : origin[0] - destination[0] > 180 ? 360 : 0;\n var distanceInMeters = $f464be2eac77db8e$var$calculateRhumbDistance(origin, destination);\n var distance = (0, $4hSRO.convertLength)(distanceInMeters, \"meters\", units);\n return distance;\n}\n/**\n * Returns the distance travelling from ‘this’ point to destination point along a rhumb line.\n * Adapted from Geodesy: https://github.com/chrisveness/geodesy/blob/master/latlon-spherical.js\n *\n * @private\n * @param {Array} origin point.\n * @param {Array} destination point.\n * @param {number} [radius=6371e3] - (Mean) radius of earth (defaults to radius in metres).\n * @returns {number} Distance in km between this point and destination point (same units as radius).\n *\n * @example\n * var p1 = new LatLon(51.127, 1.338);\n * var p2 = new LatLon(50.964, 1.853);\n * var d = p1.distanceTo(p2); // 40.31 km\n */ function $f464be2eac77db8e$var$calculateRhumbDistance(origin, destination, radius) {\n // φ => phi\n // λ => lambda\n // ψ => psi\n // Δ => Delta\n // δ => delta\n // θ => theta\n radius = radius === undefined ? (0, $4hSRO.earthRadius) : Number(radius);\n // see www.edwilliams.org/avform.htm#Rhumb\n var R = radius;\n var phi1 = origin[1] * Math.PI / 180;\n var phi2 = destination[1] * Math.PI / 180;\n var DeltaPhi = phi2 - phi1;\n var DeltaLambda = Math.abs(destination[0] - origin[0]) * Math.PI / 180;\n // if dLon over 180° take shorter rhumb line across the anti-meridian:\n if (DeltaLambda > Math.PI) DeltaLambda -= 2 * Math.PI;\n // on Mercator projection, longitude distances shrink by latitude; q is the 'stretch factor'\n // q becomes ill-conditioned along E-W line (0/0); use empirical tolerance to avoid it\n var DeltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));\n var q = Math.abs(DeltaPsi) > 10e-12 ? DeltaPhi / DeltaPsi : Math.cos(phi1);\n // distance is pythagoras on 'stretched' Mercator projection\n var delta = Math.sqrt(DeltaPhi * DeltaPhi + q * q * DeltaLambda * DeltaLambda); // angular distance in radians\n var dist = delta * R;\n return dist;\n}\nvar $f464be2eac77db8e$export$2e2bcd8739ae039 = $f464be2eac77db8e$var$rhumbDistance;\n\n});\nparcelRegister(\"4hSRO\", function(module, exports) {\n\n$parcel$export(module.exports, \"earthRadius\", function () { return $31f34f5dc68b727e$export$e3a1ee0e9945697f; });\n$parcel$export(module.exports, \"isObject\", function () { return $31f34f5dc68b727e$export$a6cdc56e425d0d0a; });\n$parcel$export(module.exports, \"isNumber\", function () { return $31f34f5dc68b727e$export$7e4aa119212bc614; });\n$parcel$export(module.exports, \"convertLength\", function () { return $31f34f5dc68b727e$export$ea1536a749e80563; });\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */ var $31f34f5dc68b727e$export$e3a1ee0e9945697f = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */ var $31f34f5dc68b727e$export$f929e47acbed771a = {\n meters: $31f34f5dc68b727e$export$e3a1ee0e9945697f,\n metres: $31f34f5dc68b727e$export$e3a1ee0e9945697f,\n millimeters: $31f34f5dc68b727e$export$e3a1ee0e9945697f * 1000,\n millimetres: $31f34f5dc68b727e$export$e3a1ee0e9945697f * 1000,\n centimeters: $31f34f5dc68b727e$export$e3a1ee0e9945697f * 100,\n centimetres: $31f34f5dc68b727e$export$e3a1ee0e9945697f * 100,\n kilometers: $31f34f5dc68b727e$export$e3a1ee0e9945697f / 1000,\n kilometres: $31f34f5dc68b727e$export$e3a1ee0e9945697f / 1000,\n miles: $31f34f5dc68b727e$export$e3a1ee0e9945697f / 1609.344,\n nauticalmiles: $31f34f5dc68b727e$export$e3a1ee0e9945697f / 1852,\n inches: $31f34f5dc68b727e$export$e3a1ee0e9945697f * 39.370,\n yards: $31f34f5dc68b727e$export$e3a1ee0e9945697f / 1.0936,\n feet: $31f34f5dc68b727e$export$e3a1ee0e9945697f * 3.28084,\n radians: 1,\n degrees: $31f34f5dc68b727e$export$e3a1ee0e9945697f / 111325\n};\n/**\n * Units of measurement factors based on 1 meter.\n */ var $31f34f5dc68b727e$export$95cef4899be7420 = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 0.001,\n kilometres: 0.001,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / $31f34f5dc68b727e$export$e3a1ee0e9945697f,\n degrees: 1 / 111325\n};\n/**\n * Area of measurement factors based on 1 square meter.\n */ var $31f34f5dc68b727e$export$44665ce4f7f4c82b = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */ function $31f34f5dc68b727e$export$ced6ed16dfd6a264(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!$31f34f5dc68b727e$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (geometry === undefined) throw new Error(\"geometry is required\");\n if (properties && properties.constructor !== Object) throw new Error(\"properties must be an Object\");\n if (bbox) $31f34f5dc68b727e$export$28ac7bb8f5309bea(bbox);\n if (id) $31f34f5dc68b727e$export$f35f128fd59ea256(id);\n // Main\n var feat = {\n type: \"Feature\"\n };\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */ function $31f34f5dc68b727e$export$42a7622cbf932bb(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!$31f34f5dc68b727e$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n // Validation\n if (!type) throw new Error(\"type is required\");\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (bbox) $31f34f5dc68b727e$export$28ac7bb8f5309bea(bbox);\n // Main\n var geom;\n switch(type){\n case \"Point\":\n geom = $31f34f5dc68b727e$export$105684a3041cb6f3(coordinates).geometry;\n break;\n case \"LineString\":\n geom = $31f34f5dc68b727e$export$98ec381bb06902c3(coordinates).geometry;\n break;\n case \"Polygon\":\n geom = $31f34f5dc68b727e$export$b7b19aa0ee06c73(coordinates).geometry;\n break;\n case \"MultiPoint\":\n geom = $31f34f5dc68b727e$export$335fc20ed6b6dbb6(coordinates).geometry;\n break;\n case \"MultiLineString\":\n geom = $31f34f5dc68b727e$export$bd735230309493da(coordinates).geometry;\n break;\n case \"MultiPolygon\":\n geom = $31f34f5dc68b727e$export$79bd594da96638d3(coordinates).geometry;\n break;\n default:\n throw new Error(type + \" is invalid\");\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */ function $31f34f5dc68b727e$export$105684a3041cb6f3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be at least 2 numbers long\");\n if (!$31f34f5dc68b727e$export$7e4aa119212bc614(coordinates[0]) || !$31f34f5dc68b727e$export$7e4aa119212bc614(coordinates[1])) throw new Error(\"coordinates must contain numbers\");\n return $31f34f5dc68b727e$export$ced6ed16dfd6a264({\n type: \"Point\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */ function $31f34f5dc68b727e$export$9f048bf86ee2e9d2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $31f34f5dc68b727e$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $31f34f5dc68b727e$export$105684a3041cb6f3(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */ function $31f34f5dc68b727e$export$b7b19aa0ee06c73(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n for(var i = 0; i < coordinates.length; i++){\n var ring = coordinates[i];\n if (ring.length < 4) throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n for(var j = 0; j < ring[ring.length - 1].length; j++){\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !$31f34f5dc68b727e$export$7e4aa119212bc614(ring[0][0]) || !$31f34f5dc68b727e$export$7e4aa119212bc614(ring[0][1])) throw new Error(\"coordinates must contain numbers\");\n if (ring[ring.length - 1][j] !== ring[0][j]) throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n return $31f34f5dc68b727e$export$ced6ed16dfd6a264({\n type: \"Polygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */ function $31f34f5dc68b727e$export$8869eb68a940f9c2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $31f34f5dc68b727e$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $31f34f5dc68b727e$export$b7b19aa0ee06c73(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */ function $31f34f5dc68b727e$export$98ec381bb06902c3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be an array of two or more positions\");\n // Check if first point of LineString contains two numbers\n if (!$31f34f5dc68b727e$export$7e4aa119212bc614(coordinates[0][1]) || !$31f34f5dc68b727e$export$7e4aa119212bc614(coordinates[0][1])) throw new Error(\"coordinates must contain numbers\");\n return $31f34f5dc68b727e$export$ced6ed16dfd6a264({\n type: \"LineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */ function $31f34f5dc68b727e$export$74f7306c35db993f(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $31f34f5dc68b727e$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $31f34f5dc68b727e$export$98ec381bb06902c3(coords, properties);\n }), options);\n}\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */ function $31f34f5dc68b727e$export$4717c67ac3e5e04d(features, options) {\n // Optional Parameters\n options = options || {};\n if (!$31f34f5dc68b727e$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (!features) throw new Error(\"No features passed\");\n if (!Array.isArray(features)) throw new Error(\"features must be an Array\");\n if (bbox) $31f34f5dc68b727e$export$28ac7bb8f5309bea(bbox);\n if (id) $31f34f5dc68b727e$export$f35f128fd59ea256(id);\n // Main\n var fc = {\n type: \"FeatureCollection\"\n };\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */ function $31f34f5dc68b727e$export$bd735230309493da(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $31f34f5dc68b727e$export$ced6ed16dfd6a264({\n type: \"MultiLineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */ function $31f34f5dc68b727e$export$335fc20ed6b6dbb6(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $31f34f5dc68b727e$export$ced6ed16dfd6a264({\n type: \"MultiPoint\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */ function $31f34f5dc68b727e$export$79bd594da96638d3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $31f34f5dc68b727e$export$ced6ed16dfd6a264({\n type: \"MultiPolygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */ function $31f34f5dc68b727e$export$9242f1e18250422a(geometries, properties, options) {\n if (!geometries) throw new Error(\"geometries is required\");\n if (!Array.isArray(geometries)) throw new Error(\"geometries must be an Array\");\n return $31f34f5dc68b727e$export$ced6ed16dfd6a264({\n type: \"GeometryCollection\",\n geometries: geometries\n }, properties, options);\n}\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */ function $31f34f5dc68b727e$export$2077e0241d6afd3c(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error(\"num is required\");\n if (precision && !(precision >= 0)) throw new Error(\"precision must be a positive number\");\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */ function $31f34f5dc68b727e$export$f234631d6a2eedf8(radians, units) {\n if (radians === undefined || radians === null) throw new Error(\"radians is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $31f34f5dc68b727e$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return radians * factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */ function $31f34f5dc68b727e$export$a2280f7debae8f10(distance, units) {\n if (distance === undefined || distance === null) throw new Error(\"distance is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $31f34f5dc68b727e$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return distance / factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */ function $31f34f5dc68b727e$export$c7a138e00a89bd01(distance, units) {\n return $31f34f5dc68b727e$export$c41dd2a8460d3196($31f34f5dc68b727e$export$a2280f7debae8f10(distance, units));\n}\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */ function $31f34f5dc68b727e$export$f2077d29c73b33ec(bearing) {\n if (bearing === null || bearing === undefined) throw new Error(\"bearing is required\");\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */ function $31f34f5dc68b727e$export$c41dd2a8460d3196(radians) {\n if (radians === null || radians === undefined) throw new Error(\"radians is required\");\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */ function $31f34f5dc68b727e$export$c9fcf1a7df975d78(degrees) {\n if (degrees === null || degrees === undefined) throw new Error(\"degrees is required\");\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */ function $31f34f5dc68b727e$export$ea1536a749e80563(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error(\"length is required\");\n if (!(length >= 0)) throw new Error(\"length must be a positive number\");\n return $31f34f5dc68b727e$export$f234631d6a2eedf8($31f34f5dc68b727e$export$a2280f7debae8f10(length, originalUnit), finalUnit || \"kilometers\");\n}\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */ function $31f34f5dc68b727e$export$2e65e2c759f7e341(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error(\"area is required\");\n if (!(area >= 0)) throw new Error(\"area must be a positive number\");\n var startFactor = $31f34f5dc68b727e$export$44665ce4f7f4c82b[originalUnit || \"meters\"];\n if (!startFactor) throw new Error(\"invalid original units\");\n var finalFactor = $31f34f5dc68b727e$export$44665ce4f7f4c82b[finalUnit || \"kilometers\"];\n if (!finalFactor) throw new Error(\"invalid final units\");\n return area / startFactor * finalFactor;\n}\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */ function $31f34f5dc68b727e$export$7e4aa119212bc614(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */ function $31f34f5dc68b727e$export$a6cdc56e425d0d0a(input) {\n return !!input && input.constructor === Object;\n}\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */ function $31f34f5dc68b727e$export$28ac7bb8f5309bea(bbox) {\n if (!bbox) throw new Error(\"bbox is required\");\n if (!Array.isArray(bbox)) throw new Error(\"bbox must be an Array\");\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n bbox.forEach(function(num) {\n if (!$31f34f5dc68b727e$export$7e4aa119212bc614(num)) throw new Error(\"bbox must only contain numbers\");\n });\n}\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */ function $31f34f5dc68b727e$export$f35f128fd59ea256(id) {\n if (!id) throw new Error(\"id is required\");\n if ([\n \"string\",\n \"number\"\n ].indexOf(typeof id) === -1) throw new Error(\"id must be a number or a string\");\n}\n// Deprecated methods\nfunction $31f34f5dc68b727e$export$b7eac44a74fbbf44() {\n throw new Error(\"method has been renamed to `radiansToDegrees`\");\n}\nfunction $31f34f5dc68b727e$export$429f6664de4d6783() {\n throw new Error(\"method has been renamed to `degreesToRadians`\");\n}\nfunction $31f34f5dc68b727e$export$682f47d8f6f8f330() {\n throw new Error(\"method has been renamed to `lengthToDegrees`\");\n}\nfunction $31f34f5dc68b727e$export$8fc0c652b1df31fd() {\n throw new Error(\"method has been renamed to `lengthToRadians`\");\n}\nfunction $31f34f5dc68b727e$export$dc0d90c052e1e7ea() {\n throw new Error(\"method has been renamed to `radiansToLength`\");\n}\nfunction $31f34f5dc68b727e$export$97a5bf601f8e0e61() {\n throw new Error(\"method has been renamed to `bearingToAzimuth`\");\n}\nfunction $31f34f5dc68b727e$export$1d848d23272abfae() {\n throw new Error(\"method has been renamed to `convertLength`\");\n}\n\n});\n\nparcelRegister(\"g4VP6\", function(module, exports) {\n\n$parcel$export(module.exports, \"getCoord\", function () { return $bb49df88c3a6a43c$export$b4663c6e64a770bc; });\n\nvar $4hSRO = parcelRequire(\"4hSRO\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */ function $bb49df88c3a6a43c$export$b4663c6e64a770bc(coord) {\n if (!coord) throw new Error(\"coord is required\");\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") return coord.geometry.coordinates;\n if (coord.type === \"Point\") return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */ function $bb49df88c3a6a43c$export$39e042fd83f1b62e(coords) {\n if (!coords) throw new Error(\"coords is required\");\n // Feature\n if (coords.type === \"Feature\" && coords.geometry !== null) return coords.geometry.coordinates;\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */ function $bb49df88c3a6a43c$export$ab82360ed81b09b9(coordinates) {\n if (coordinates.length > 1 && (0, $4hSRO.isNumber)(coordinates[0]) && (0, $4hSRO.isNumber)(coordinates[1])) return true;\n if (Array.isArray(coordinates[0]) && coordinates[0].length) return $bb49df88c3a6a43c$export$ab82360ed81b09b9(coordinates[0]);\n throw new Error(\"coordinates must only contain numbers\");\n}\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $bb49df88c3a6a43c$export$329ecc560bd873a7(value, type, name) {\n if (!type || !name) throw new Error(\"type and name required\");\n if (!value || value.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type);\n}\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */ function $bb49df88c3a6a43c$export$8b96d9ca92084402(feature, type, name) {\n if (!feature) throw new Error(\"No feature passed\");\n if (!name) throw new Error(\".featureOf() requires a name\");\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n}\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $bb49df88c3a6a43c$export$bcf04c9d01e728b6(featureCollection, type, name) {\n if (!featureCollection) throw new Error(\"No featureCollection passed\");\n if (!name) throw new Error(\".collectionOf() requires a name\");\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n for(var i = 0; i < featureCollection.features.length; i++){\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n }\n}\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */ function $bb49df88c3a6a43c$export$b8f320eb9549c8fd(geojson) {\n if (!geojson) throw new Error(\"geojson is required\");\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error(\"geojson must be a valid Feature or Geometry Object\");\n}\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */ function $bb49df88c3a6a43c$export$cf92de84f30da2c5() {\n throw new Error(\"invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType\");\n}\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */ function $bb49df88c3a6a43c$export$e2b5c5db9e2009fd(geojson, name) {\n if (!geojson) throw new Error((name || \"geojson\") + \" is required\");\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || \"geojson\") + \" is invalid\");\n}\n\n});\n\n\nparcelRegister(\"jNIoO\", function(module, exports) {\n\n$parcel$export(module.exports, \"getCoord\", function () { return $e6a508b41b165edb$export$b4663c6e64a770bc; });\n$parcel$export(module.exports, \"getCoords\", function () { return $e6a508b41b165edb$export$39e042fd83f1b62e; });\n$parcel$export(module.exports, \"getType\", function () { return $e6a508b41b165edb$export$e2b5c5db9e2009fd; });\n\nvar $ulOUz = parcelRequire(\"ulOUz\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */ function $e6a508b41b165edb$export$b4663c6e64a770bc(coord) {\n if (!coord) throw new Error(\"coord is required\");\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") return coord.geometry.coordinates;\n if (coord.type === \"Point\") return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */ function $e6a508b41b165edb$export$39e042fd83f1b62e(coords) {\n if (!coords) throw new Error(\"coords is required\");\n // Feature\n if (coords.type === \"Feature\" && coords.geometry !== null) return coords.geometry.coordinates;\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */ function $e6a508b41b165edb$export$ab82360ed81b09b9(coordinates) {\n if (coordinates.length > 1 && (0, $ulOUz.isNumber)(coordinates[0]) && (0, $ulOUz.isNumber)(coordinates[1])) return true;\n if (Array.isArray(coordinates[0]) && coordinates[0].length) return $e6a508b41b165edb$export$ab82360ed81b09b9(coordinates[0]);\n throw new Error(\"coordinates must only contain numbers\");\n}\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $e6a508b41b165edb$export$329ecc560bd873a7(value, type, name) {\n if (!type || !name) throw new Error(\"type and name required\");\n if (!value || value.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type);\n}\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */ function $e6a508b41b165edb$export$8b96d9ca92084402(feature, type, name) {\n if (!feature) throw new Error(\"No feature passed\");\n if (!name) throw new Error(\".featureOf() requires a name\");\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n}\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $e6a508b41b165edb$export$bcf04c9d01e728b6(featureCollection, type, name) {\n if (!featureCollection) throw new Error(\"No featureCollection passed\");\n if (!name) throw new Error(\".collectionOf() requires a name\");\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n for(var i = 0; i < featureCollection.features.length; i++){\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n }\n}\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */ function $e6a508b41b165edb$export$b8f320eb9549c8fd(geojson) {\n if (!geojson) throw new Error(\"geojson is required\");\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error(\"geojson must be a valid Feature or Geometry Object\");\n}\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */ function $e6a508b41b165edb$export$cf92de84f30da2c5() {\n throw new Error(\"invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType\");\n}\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */ function $e6a508b41b165edb$export$e2b5c5db9e2009fd(geojson, name) {\n if (!geojson) throw new Error((name || \"geojson\") + \" is required\");\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || \"geojson\") + \" is invalid\");\n}\n\n});\n\n\n\nparcelRegister(\"cjd37\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.RotateMode = void 0;\n\nvar $8f6161b0b1fb2a2e$var$_bbox = $8f6161b0b1fb2a2e$var$_interopRequireDefault((parcelRequire(\"lX3Ya\")));\n\nvar $8f6161b0b1fb2a2e$var$_centroid = $8f6161b0b1fb2a2e$var$_interopRequireDefault((parcelRequire(\"d9r3a\")));\n\nvar $8f6161b0b1fb2a2e$var$_bearing = $8f6161b0b1fb2a2e$var$_interopRequireDefault((parcelRequire(\"aDE4l\")));\n\nvar $8f6161b0b1fb2a2e$var$_bboxPolygon = $8f6161b0b1fb2a2e$var$_interopRequireDefault((parcelRequire(\"e9fnE\")));\n\nvar $8f6161b0b1fb2a2e$var$_distance = $8f6161b0b1fb2a2e$var$_interopRequireDefault((parcelRequire(\"b5wF2\")));\n\nvar $cJNDJ = parcelRequire(\"cJNDJ\");\n\nvar $8abqV = parcelRequire(\"8abqV\");\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $8f6161b0b1fb2a2e$var$_transformRotate = $8f6161b0b1fb2a2e$var$_interopRequireDefault((parcelRequire(\"j6dRg\")));\n\nvar $8f6161b0b1fb2a2e$var$_polygonToLine = $8f6161b0b1fb2a2e$var$_interopRequireDefault((parcelRequire(\"eGOxi\")));\n\nvar $hs5Hv = parcelRequire(\"hs5Hv\");\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\n\nvar $eJgQU = parcelRequire(\"eJgQU\");\nfunction $8f6161b0b1fb2a2e$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $8f6161b0b1fb2a2e$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $8f6161b0b1fb2a2e$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $8f6161b0b1fb2a2e$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $8f6161b0b1fb2a2e$var$_typeof(obj);\n}\nfunction $8f6161b0b1fb2a2e$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $8f6161b0b1fb2a2e$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $8f6161b0b1fb2a2e$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $8f6161b0b1fb2a2e$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $8f6161b0b1fb2a2e$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $8f6161b0b1fb2a2e$var$_createSuper(Derived) {\n return function() {\n var Super = $8f6161b0b1fb2a2e$var$_getPrototypeOf(Derived), result;\n if ($8f6161b0b1fb2a2e$var$_isNativeReflectConstruct()) {\n var NewTarget = $8f6161b0b1fb2a2e$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $8f6161b0b1fb2a2e$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $8f6161b0b1fb2a2e$var$_possibleConstructorReturn(self, call) {\n if (call && ($8f6161b0b1fb2a2e$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $8f6161b0b1fb2a2e$var$_assertThisInitialized(self);\n}\nfunction $8f6161b0b1fb2a2e$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $8f6161b0b1fb2a2e$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $8f6161b0b1fb2a2e$var$_getPrototypeOf(o) {\n $8f6161b0b1fb2a2e$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $8f6161b0b1fb2a2e$var$_getPrototypeOf(o);\n}\nfunction $8f6161b0b1fb2a2e$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $8f6161b0b1fb2a2e$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $8f6161b0b1fb2a2e$var$_setPrototypeOf(o, p) {\n $8f6161b0b1fb2a2e$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $8f6161b0b1fb2a2e$var$_setPrototypeOf(o, p);\n}\nfunction $8f6161b0b1fb2a2e$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $8f6161b0b1fb2a2e$var$RotateMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $8f6161b0b1fb2a2e$var$_inherits(RotateMode, _GeoJsonEditMode);\n var _super = $8f6161b0b1fb2a2e$var$_createSuper(RotateMode);\n function RotateMode() {\n var _this;\n $8f6161b0b1fb2a2e$var$_classCallCheck(this, RotateMode);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n _this = _super.call.apply(_super, [\n this\n ].concat(args));\n $8f6161b0b1fb2a2e$var$_defineProperty($8f6161b0b1fb2a2e$var$_assertThisInitialized(_this), \"_selectedEditHandle\", void 0);\n $8f6161b0b1fb2a2e$var$_defineProperty($8f6161b0b1fb2a2e$var$_assertThisInitialized(_this), \"_geometryBeingRotated\", void 0);\n $8f6161b0b1fb2a2e$var$_defineProperty($8f6161b0b1fb2a2e$var$_assertThisInitialized(_this), \"_isRotating\", false);\n $8f6161b0b1fb2a2e$var$_defineProperty($8f6161b0b1fb2a2e$var$_assertThisInitialized(_this), \"_isSinglePointGeometrySelected\", function(geometry) {\n var _ref = geometry || {}, features = _ref.features;\n if (Array.isArray(features) && features.length === 1) {\n // @ts-ignore\n var _getGeom = (0, $8abqV.getGeom)(features[0]), type = _getGeom.type;\n return type === \"Point\";\n }\n return false;\n });\n $8f6161b0b1fb2a2e$var$_defineProperty($8f6161b0b1fb2a2e$var$_assertThisInitialized(_this), \"getIsRotating\", function() {\n return _this._isRotating;\n });\n return _this;\n }\n $8f6161b0b1fb2a2e$var$_createClass(RotateMode, [\n {\n key: \"getGuides\",\n value: function getGuides(props) {\n var selectedGeometry = this._geometryBeingRotated || this.getSelectedFeaturesAsFeatureCollection(props);\n if (this._isSinglePointGeometrySelected(selectedGeometry)) return {\n type: \"FeatureCollection\",\n features: []\n };\n if (this._isRotating) // Display rotate pivot\n return (0, $7GKQS.featureCollection)([\n (0, $8f6161b0b1fb2a2e$var$_centroid[\"default\"])(selectedGeometry)\n ]);\n var boundingBox = (0, $8f6161b0b1fb2a2e$var$_bboxPolygon[\"default\"])((0, $8f6161b0b1fb2a2e$var$_bbox[\"default\"])(selectedGeometry));\n var previousCoord = null;\n var topEdgeMidpointCoords = null;\n var longestEdgeLength = 0;\n (0, $cJNDJ.coordEach)(boundingBox, function(coord) {\n if (previousCoord) {\n // @ts-ignore\n var edgeMidpoint = (0, $1tPZO.getIntermediatePosition)(coord, previousCoord);\n if (!topEdgeMidpointCoords || edgeMidpoint[1] > topEdgeMidpointCoords[1]) // Get the top edge midpoint of the enveloping box\n topEdgeMidpointCoords = edgeMidpoint;\n // Get the length of the longest edge of the enveloping box\n var edgeDistance = (0, $8f6161b0b1fb2a2e$var$_distance[\"default\"])(coord, previousCoord);\n longestEdgeLength = Math.max(longestEdgeLength, edgeDistance);\n }\n previousCoord = coord;\n }); // Scale the length of the line between the rotate handler and the enveloping box\n // relative to the length of the longest edge of the enveloping box\n var rotateHandleCoords = topEdgeMidpointCoords && [\n topEdgeMidpointCoords[0],\n topEdgeMidpointCoords[1] + longestEdgeLength / 1000\n ];\n var lineFromEnvelopeToRotateHandle = (0, $7GKQS.lineString)([\n topEdgeMidpointCoords,\n rotateHandleCoords\n ]);\n var rotateHandle = (0, $7GKQS.point)(rotateHandleCoords, {\n guideType: \"editHandle\",\n editHandleType: \"rotate\"\n }); // @ts-ignore\n return (0, $7GKQS.featureCollection)([\n (0, $8f6161b0b1fb2a2e$var$_polygonToLine[\"default\"])(boundingBox),\n rotateHandle,\n lineFromEnvelopeToRotateHandle\n ]);\n }\n },\n {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n if (!this._isRotating) return;\n var rotateAction = this.getRotateAction(event.pointerDownMapCoords, event.mapCoords, \"rotating\", props);\n if (rotateAction) props.onEdit(rotateAction);\n event.cancelPan();\n }\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n if (!this._isRotating) {\n var selectedEditHandle = (0, $hs5Hv.getPickedEditHandle)(event.picks);\n this._selectedEditHandle = selectedEditHandle && selectedEditHandle.properties.editHandleType === \"rotate\" ? selectedEditHandle : null;\n }\n this.updateCursor(props);\n }\n },\n {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n if (this._selectedEditHandle) {\n this._isRotating = true;\n this._geometryBeingRotated = this.getSelectedFeaturesAsFeatureCollection(props);\n }\n }\n },\n {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n if (this._isRotating) {\n // Rotate the geometry\n var rotateAction = this.getRotateAction(event.pointerDownMapCoords, event.mapCoords, \"rotated\", props);\n if (rotateAction) props.onEdit(rotateAction);\n this._geometryBeingRotated = null;\n this._selectedEditHandle = null;\n this._isRotating = false;\n }\n }\n },\n {\n key: \"updateCursor\",\n value: function updateCursor(props) {\n if (this._selectedEditHandle) // TODO: look at doing SVG cursors to get a better \"rotate\" cursor\n props.onUpdateCursor(\"crosshair\");\n else props.onUpdateCursor(null);\n }\n },\n {\n key: \"getRotateAction\",\n value: function getRotateAction(startDragPoint, currentPoint, editType, props) {\n if (!this._geometryBeingRotated) return null;\n var centroid = (0, $8f6161b0b1fb2a2e$var$_centroid[\"default\"])(this._geometryBeingRotated);\n var angle = $8f6161b0b1fb2a2e$var$getRotationAngle(centroid, startDragPoint, currentPoint); // @ts-ignore\n var rotatedFeatures = (0, $8f6161b0b1fb2a2e$var$_transformRotate[\"default\"])(this._geometryBeingRotated, angle, {\n pivot: centroid\n });\n var updatedData = new $eJgQU.ImmutableFeatureCollection(props.data);\n var selectedIndexes = props.selectedIndexes;\n for(var i = 0; i < selectedIndexes.length; i++){\n var selectedIndex = selectedIndexes[i];\n var movedFeature = rotatedFeatures.features[i];\n updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry);\n }\n return {\n updatedData: updatedData.getObject(),\n editType: editType,\n editContext: {\n featureIndexes: selectedIndexes\n }\n };\n }\n }\n ]);\n return RotateMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.RotateMode = $8f6161b0b1fb2a2e$var$RotateMode;\nfunction $8f6161b0b1fb2a2e$var$getRotationAngle(centroid, startDragPoint, currentPoint) {\n var bearing1 = (0, $8f6161b0b1fb2a2e$var$_bearing[\"default\"])(centroid, startDragPoint);\n var bearing2 = (0, $8f6161b0b1fb2a2e$var$_bearing[\"default\"])(centroid, currentPoint);\n return bearing2 - bearing1;\n}\n\n});\nparcelRegister(\"j6dRg\", function(module, exports) {\n\n$parcel$defineInteropFlag(module.exports);\n\n$parcel$export(module.exports, \"default\", function () { return $03969a202747da77$export$2e2bcd8739ae039; });\n\nvar $lBPns = parcelRequire(\"lBPns\");\n\nvar $9QF0q = parcelRequire(\"9QF0q\");\n\nvar $kYTRt = parcelRequire(\"kYTRt\");\n\nvar $35NAj = parcelRequire(\"35NAj\");\n\nvar $asTyQ = parcelRequire(\"asTyQ\");\n\nvar $h0rmX = parcelRequire(\"h0rmX\");\n\nvar $4OmLb = parcelRequire(\"4OmLb\");\n\nvar $4THjE = parcelRequire(\"4THjE\");\n/**\n * Rotates any geojson Feature or Geometry of a specified angle, around its `centroid` or a given `pivot` point;\n * all rotations follow the right-hand rule: https://en.wikipedia.org/wiki/Right-hand_rule\n *\n * @name transformRotate\n * @param {GeoJSON} geojson object to be rotated\n * @param {number} angle of rotation (along the vertical axis), from North in decimal degrees, negative clockwise\n * @param {Object} [options={}] Optional parameters\n * @param {Coord} [options.pivot='centroid'] point around which the rotation will be performed\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} the rotated GeoJSON feature\n * @example\n * var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);\n * var options = {pivot: [0, 25]};\n * var rotatedPoly = turf.transformRotate(poly, 10, options);\n *\n * //addToMap\n * var addToMap = [poly, rotatedPoly];\n * rotatedPoly.properties = {stroke: '#F00', 'stroke-width': 4};\n */ function $03969a202747da77$var$transformRotate(geojson, angle, options) {\n // Optional parameters\n options = options || {};\n if (!(0, $4THjE.isObject)(options)) throw new Error(\"options is invalid\");\n var pivot = options.pivot;\n var mutate = options.mutate;\n // Input validation\n if (!geojson) throw new Error(\"geojson is required\");\n if (angle === undefined || angle === null || isNaN(angle)) throw new Error(\"angle is required\");\n // Shortcut no-rotation\n if (angle === 0) return geojson;\n // Use centroid of GeoJSON if pivot is not provided\n if (!pivot) pivot = (0, $lBPns.default)(geojson);\n // Clone geojson to avoid side effects\n if (mutate === false || mutate === undefined) geojson = (0, $asTyQ.default)(geojson);\n // Rotate each coordinate\n (0, $h0rmX.coordEach)(geojson, function(pointCoords) {\n var initialAngle = (0, $9QF0q.default)(pivot, pointCoords);\n var finalAngle = initialAngle + angle;\n var distance = (0, $kYTRt.default)(pivot, pointCoords);\n var newCoords = (0, $4OmLb.getCoords)((0, $35NAj.default)(pivot, distance, finalAngle));\n pointCoords[0] = newCoords[0];\n pointCoords[1] = newCoords[1];\n });\n return geojson;\n}\nvar $03969a202747da77$export$2e2bcd8739ae039 = $03969a202747da77$var$transformRotate;\n\n});\nparcelRegister(\"lBPns\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $fbb4e82a421a41d7$export$2e2bcd8739ae039; });\n\nvar $h0rmX = parcelRequire(\"h0rmX\");\n\nvar $4THjE = parcelRequire(\"4THjE\");\n/**\n * Takes one or more features and calculates the centroid using the mean of all vertices.\n * This lessens the effect of small islands and artifacts when calculating the centroid of a set of polygons.\n *\n * @name centroid\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [properties={}] an Object that is used as the {@link Feature}'s properties\n * @returns {Feature} the centroid of the input features\n * @example\n * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);\n *\n * var centroid = turf.centroid(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, centroid]\n */ function $fbb4e82a421a41d7$var$centroid(geojson, properties) {\n var xSum = 0;\n var ySum = 0;\n var len = 0;\n (0, $h0rmX.coordEach)(geojson, function(coord) {\n xSum += coord[0];\n ySum += coord[1];\n len++;\n }, true);\n return (0, $4THjE.point)([\n xSum / len,\n ySum / len\n ], properties);\n}\nvar $fbb4e82a421a41d7$export$2e2bcd8739ae039 = $fbb4e82a421a41d7$var$centroid;\n\n});\nparcelRegister(\"h0rmX\", function(module, exports) {\n\n$parcel$export(module.exports, \"coordEach\", function () { return $c617aab8255d729d$export$6e011439fde007ae; });\n\nvar $4THjE = parcelRequire(\"4THjE\");\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */ /**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */ function $c617aab8255d729d$export$6e011439fde007ae(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for(var featureIndex = 0; featureIndex < stop; featureIndex++){\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for(var geomIndex = 0; geomIndex < stopG; geomIndex++){\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch(geomType){\n case null:\n break;\n case \"Point\":\n if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for(j = 0; j < coords.length; j++){\n if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for(j = 0; j < coords.length; j++){\n for(k = 0; k < coords[j].length - wrapShrink; k++){\n if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for(j = 0; j < coords.length; j++){\n if (geomType === \"MultiPolygon\") geometryIndex = 0;\n for(k = 0; k < coords[j].length; k++){\n for(l = 0; l < coords[j][k].length - wrapShrink; l++){\n if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for(j = 0; j < geometry.geometries.length; j++)if ($c617aab8255d729d$export$6e011439fde007ae(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */ /**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */ function $c617aab8255d729d$export$6f96eac39184ffe9(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n $c617aab8255d729d$export$6e011439fde007ae(geojson, function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n }, excludeWrapCoord);\n return previousValue;\n}\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */ function $c617aab8255d729d$export$9d63c695566dbaa3(geojson, callback) {\n var i;\n switch(geojson.type){\n case \"FeatureCollection\":\n for(i = 0; i < geojson.features.length; i++){\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */ function $c617aab8255d729d$export$7ff6f75e5ef85a65(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $c617aab8255d729d$export$9d63c695566dbaa3(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n else previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */ function $c617aab8255d729d$export$45a31c4de8035258(geojson, callback) {\n if (geojson.type === \"Feature\") callback(geojson, 0);\n else if (geojson.type === \"FeatureCollection\") for(var i = 0; i < geojson.features.length; i++){\n if (callback(geojson.features[i], i) === false) break;\n }\n}\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */ /**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */ function $c617aab8255d729d$export$b18fee751b10b055(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $c617aab8255d729d$export$45a31c4de8035258(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */ function $c617aab8255d729d$export$5485820fc560fe4e(geojson) {\n var coords = [];\n $c617aab8255d729d$export$6e011439fde007ae(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */ /**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */ function $c617aab8255d729d$export$d2d248a56672ab3d(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for(i = 0; i < stop; i++){\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : undefined;\n featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : undefined;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for(g = 0; g < stopG; g++){\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n // Handle null Geometry\n if (geometry === null) {\n if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n continue;\n }\n switch(geometry.type){\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n break;\n case \"GeometryCollection\":\n for(j = 0; j < geometry.geometries.length; j++){\n if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n }\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */ /**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */ function $c617aab8255d729d$export$30055ae7bd157809(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $c617aab8255d729d$export$d2d248a56672ab3d(geojson, function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n });\n return previousValue;\n}\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */ /**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */ function $c617aab8255d729d$export$12cba8b31beb353b(geojson, callback) {\n $c617aab8255d729d$export$d2d248a56672ab3d(geojson, function(geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = geometry === null ? null : geometry.type;\n switch(type){\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback((0, $4THjE.feature)(geometry, properties, {\n bbox: bbox,\n id: id\n }), featureIndex, 0) === false) return false;\n return;\n }\n var geomType;\n // Callback for multi-geometry\n switch(type){\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for(var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++){\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback((0, $4THjE.feature)(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n }\n });\n}\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */ /**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */ function $c617aab8255d729d$export$af6f15fec62b5d18(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $c617aab8255d729d$export$12cba8b31beb353b(geojson, function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n });\n return previousValue;\n}\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */ /**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */ function $c617aab8255d729d$export$d3ecc1efb2be121e(geojson, callback) {\n $c617aab8255d729d$export$12cba8b31beb353b(geojson, function(feature$$1, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n // Exclude null Geometries\n if (!feature$$1.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature$$1.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n // Generate 2-vertex line segments\n var previousCoords;\n if ($c617aab8255d729d$export$6e011439fde007ae(feature$$1, function(currentCoord, coordIndex, featureIndexCoord, mutliPartIndexCoord, geometryIndex) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (previousCoords === undefined) {\n previousCoords = currentCoord;\n return;\n }\n var currentSegment = (0, $4THjE.lineString)([\n previousCoords,\n currentCoord\n ], feature$$1.properties);\n if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }) === false) return false;\n });\n}\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */ /**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentInex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */ function $c617aab8255d729d$export$eec78cdd4d343a79(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n $c617aab8255d729d$export$d3ecc1efb2be121e(geojson, function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === undefined) previousValue = currentSegment;\n else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n started = true;\n });\n return previousValue;\n}\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */ /**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */ function $c617aab8255d729d$export$985a91771cfc783d(geojson, callback) {\n // validation\n if (!geojson) throw new Error(\"geojson is required\");\n $c617aab8255d729d$export$12cba8b31beb353b(geojson, function(feature$$1, featureIndex, multiFeatureIndex) {\n if (feature$$1.geometry === null) return;\n var type = feature$$1.geometry.type;\n var coords = feature$$1.geometry.coordinates;\n switch(type){\n case \"LineString\":\n if (callback(feature$$1, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n break;\n case \"Polygon\":\n for(var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++){\n if (callback((0, $4THjE.lineString)(coords[geometryIndex], feature$$1.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n }\n break;\n }\n });\n}\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */ /**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */ function $c617aab8255d729d$export$a150e51c8ec9198a(geojson, callback, initialValue) {\n var previousValue = initialValue;\n $c617aab8255d729d$export$985a91771cfc783d(geojson, function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n });\n return previousValue;\n}\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature>\n */ function $c617aab8255d729d$export$2b6ba91fd8680d67(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!(0, $4THjE.isObject)(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n switch(geojson.type){\n case \"FeatureCollection\":\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch(geometry.type){\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return (0, $4THjE.lineString)([\n coords[segmentIndex],\n coords[segmentIndex + 1]\n ], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return (0, $4THjE.lineString)([\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1]\n ], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return (0, $4THjE.lineString)([\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1]\n ], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return (0, $4THjE.lineString)([\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ], properties, options);\n }\n throw new Error(\"geojson is invalid\");\n}\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature>\n */ function $c617aab8255d729d$export$ed60ae5df1bac687(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!(0, $4THjE.isObject)(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n switch(geojson.type){\n case \"FeatureCollection\":\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch(geometry.type){\n case \"Point\":\n return (0, $4THjE.point)(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n return (0, $4THjE.point)(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return (0, $4THjE.point)(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n return (0, $4THjE.point)(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return (0, $4THjE.point)(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return (0, $4THjE.point)(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n }\n throw new Error(\"geojson is invalid\");\n}\n\n});\nparcelRegister(\"4THjE\", function(module, exports) {\n\n$parcel$export(module.exports, \"feature\", function () { return $390de6263a9949cf$export$ced6ed16dfd6a264; });\n$parcel$export(module.exports, \"isObject\", function () { return $390de6263a9949cf$export$a6cdc56e425d0d0a; });\n$parcel$export(module.exports, \"point\", function () { return $390de6263a9949cf$export$105684a3041cb6f3; });\n$parcel$export(module.exports, \"lineString\", function () { return $390de6263a9949cf$export$98ec381bb06902c3; });\n$parcel$export(module.exports, \"isNumber\", function () { return $390de6263a9949cf$export$7e4aa119212bc614; });\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */ var $390de6263a9949cf$export$e3a1ee0e9945697f = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */ var $390de6263a9949cf$export$f929e47acbed771a = {\n meters: $390de6263a9949cf$export$e3a1ee0e9945697f,\n metres: $390de6263a9949cf$export$e3a1ee0e9945697f,\n millimeters: $390de6263a9949cf$export$e3a1ee0e9945697f * 1000,\n millimetres: $390de6263a9949cf$export$e3a1ee0e9945697f * 1000,\n centimeters: $390de6263a9949cf$export$e3a1ee0e9945697f * 100,\n centimetres: $390de6263a9949cf$export$e3a1ee0e9945697f * 100,\n kilometers: $390de6263a9949cf$export$e3a1ee0e9945697f / 1000,\n kilometres: $390de6263a9949cf$export$e3a1ee0e9945697f / 1000,\n miles: $390de6263a9949cf$export$e3a1ee0e9945697f / 1609.344,\n nauticalmiles: $390de6263a9949cf$export$e3a1ee0e9945697f / 1852,\n inches: $390de6263a9949cf$export$e3a1ee0e9945697f * 39.370,\n yards: $390de6263a9949cf$export$e3a1ee0e9945697f / 1.0936,\n feet: $390de6263a9949cf$export$e3a1ee0e9945697f * 3.28084,\n radians: 1,\n degrees: $390de6263a9949cf$export$e3a1ee0e9945697f / 111325\n};\n/**\n * Units of measurement factors based on 1 meter.\n */ var $390de6263a9949cf$export$95cef4899be7420 = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 0.001,\n kilometres: 0.001,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / $390de6263a9949cf$export$e3a1ee0e9945697f,\n degrees: 1 / 111325\n};\n/**\n * Area of measurement factors based on 1 square meter.\n */ var $390de6263a9949cf$export$44665ce4f7f4c82b = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */ function $390de6263a9949cf$export$ced6ed16dfd6a264(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!$390de6263a9949cf$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (geometry === undefined) throw new Error(\"geometry is required\");\n if (properties && properties.constructor !== Object) throw new Error(\"properties must be an Object\");\n if (bbox) $390de6263a9949cf$export$28ac7bb8f5309bea(bbox);\n if (id) $390de6263a9949cf$export$f35f128fd59ea256(id);\n // Main\n var feat = {\n type: \"Feature\"\n };\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */ function $390de6263a9949cf$export$42a7622cbf932bb(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!$390de6263a9949cf$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n // Validation\n if (!type) throw new Error(\"type is required\");\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (bbox) $390de6263a9949cf$export$28ac7bb8f5309bea(bbox);\n // Main\n var geom;\n switch(type){\n case \"Point\":\n geom = $390de6263a9949cf$export$105684a3041cb6f3(coordinates).geometry;\n break;\n case \"LineString\":\n geom = $390de6263a9949cf$export$98ec381bb06902c3(coordinates).geometry;\n break;\n case \"Polygon\":\n geom = $390de6263a9949cf$export$b7b19aa0ee06c73(coordinates).geometry;\n break;\n case \"MultiPoint\":\n geom = $390de6263a9949cf$export$335fc20ed6b6dbb6(coordinates).geometry;\n break;\n case \"MultiLineString\":\n geom = $390de6263a9949cf$export$bd735230309493da(coordinates).geometry;\n break;\n case \"MultiPolygon\":\n geom = $390de6263a9949cf$export$79bd594da96638d3(coordinates).geometry;\n break;\n default:\n throw new Error(type + \" is invalid\");\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */ function $390de6263a9949cf$export$105684a3041cb6f3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be at least 2 numbers long\");\n if (!$390de6263a9949cf$export$7e4aa119212bc614(coordinates[0]) || !$390de6263a9949cf$export$7e4aa119212bc614(coordinates[1])) throw new Error(\"coordinates must contain numbers\");\n return $390de6263a9949cf$export$ced6ed16dfd6a264({\n type: \"Point\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */ function $390de6263a9949cf$export$9f048bf86ee2e9d2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $390de6263a9949cf$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $390de6263a9949cf$export$105684a3041cb6f3(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */ function $390de6263a9949cf$export$b7b19aa0ee06c73(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n for(var i = 0; i < coordinates.length; i++){\n var ring = coordinates[i];\n if (ring.length < 4) throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n for(var j = 0; j < ring[ring.length - 1].length; j++){\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !$390de6263a9949cf$export$7e4aa119212bc614(ring[0][0]) || !$390de6263a9949cf$export$7e4aa119212bc614(ring[0][1])) throw new Error(\"coordinates must contain numbers\");\n if (ring[ring.length - 1][j] !== ring[0][j]) throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n return $390de6263a9949cf$export$ced6ed16dfd6a264({\n type: \"Polygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */ function $390de6263a9949cf$export$8869eb68a940f9c2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $390de6263a9949cf$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $390de6263a9949cf$export$b7b19aa0ee06c73(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */ function $390de6263a9949cf$export$98ec381bb06902c3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be an array of two or more positions\");\n // Check if first point of LineString contains two numbers\n if (!$390de6263a9949cf$export$7e4aa119212bc614(coordinates[0][1]) || !$390de6263a9949cf$export$7e4aa119212bc614(coordinates[0][1])) throw new Error(\"coordinates must contain numbers\");\n return $390de6263a9949cf$export$ced6ed16dfd6a264({\n type: \"LineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */ function $390de6263a9949cf$export$74f7306c35db993f(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $390de6263a9949cf$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $390de6263a9949cf$export$98ec381bb06902c3(coords, properties);\n }), options);\n}\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */ function $390de6263a9949cf$export$4717c67ac3e5e04d(features, options) {\n // Optional Parameters\n options = options || {};\n if (!$390de6263a9949cf$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (!features) throw new Error(\"No features passed\");\n if (!Array.isArray(features)) throw new Error(\"features must be an Array\");\n if (bbox) $390de6263a9949cf$export$28ac7bb8f5309bea(bbox);\n if (id) $390de6263a9949cf$export$f35f128fd59ea256(id);\n // Main\n var fc = {\n type: \"FeatureCollection\"\n };\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */ function $390de6263a9949cf$export$bd735230309493da(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $390de6263a9949cf$export$ced6ed16dfd6a264({\n type: \"MultiLineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */ function $390de6263a9949cf$export$335fc20ed6b6dbb6(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $390de6263a9949cf$export$ced6ed16dfd6a264({\n type: \"MultiPoint\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */ function $390de6263a9949cf$export$79bd594da96638d3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $390de6263a9949cf$export$ced6ed16dfd6a264({\n type: \"MultiPolygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */ function $390de6263a9949cf$export$9242f1e18250422a(geometries, properties, options) {\n if (!geometries) throw new Error(\"geometries is required\");\n if (!Array.isArray(geometries)) throw new Error(\"geometries must be an Array\");\n return $390de6263a9949cf$export$ced6ed16dfd6a264({\n type: \"GeometryCollection\",\n geometries: geometries\n }, properties, options);\n}\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */ function $390de6263a9949cf$export$2077e0241d6afd3c(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error(\"num is required\");\n if (precision && !(precision >= 0)) throw new Error(\"precision must be a positive number\");\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */ function $390de6263a9949cf$export$f234631d6a2eedf8(radians, units) {\n if (radians === undefined || radians === null) throw new Error(\"radians is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $390de6263a9949cf$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return radians * factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */ function $390de6263a9949cf$export$a2280f7debae8f10(distance, units) {\n if (distance === undefined || distance === null) throw new Error(\"distance is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $390de6263a9949cf$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return distance / factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */ function $390de6263a9949cf$export$c7a138e00a89bd01(distance, units) {\n return $390de6263a9949cf$export$c41dd2a8460d3196($390de6263a9949cf$export$a2280f7debae8f10(distance, units));\n}\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */ function $390de6263a9949cf$export$f2077d29c73b33ec(bearing) {\n if (bearing === null || bearing === undefined) throw new Error(\"bearing is required\");\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */ function $390de6263a9949cf$export$c41dd2a8460d3196(radians) {\n if (radians === null || radians === undefined) throw new Error(\"radians is required\");\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */ function $390de6263a9949cf$export$c9fcf1a7df975d78(degrees) {\n if (degrees === null || degrees === undefined) throw new Error(\"degrees is required\");\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */ function $390de6263a9949cf$export$ea1536a749e80563(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error(\"length is required\");\n if (!(length >= 0)) throw new Error(\"length must be a positive number\");\n return $390de6263a9949cf$export$f234631d6a2eedf8($390de6263a9949cf$export$a2280f7debae8f10(length, originalUnit), finalUnit || \"kilometers\");\n}\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */ function $390de6263a9949cf$export$2e65e2c759f7e341(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error(\"area is required\");\n if (!(area >= 0)) throw new Error(\"area must be a positive number\");\n var startFactor = $390de6263a9949cf$export$44665ce4f7f4c82b[originalUnit || \"meters\"];\n if (!startFactor) throw new Error(\"invalid original units\");\n var finalFactor = $390de6263a9949cf$export$44665ce4f7f4c82b[finalUnit || \"kilometers\"];\n if (!finalFactor) throw new Error(\"invalid final units\");\n return area / startFactor * finalFactor;\n}\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */ function $390de6263a9949cf$export$7e4aa119212bc614(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */ function $390de6263a9949cf$export$a6cdc56e425d0d0a(input) {\n return !!input && input.constructor === Object;\n}\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */ function $390de6263a9949cf$export$28ac7bb8f5309bea(bbox) {\n if (!bbox) throw new Error(\"bbox is required\");\n if (!Array.isArray(bbox)) throw new Error(\"bbox must be an Array\");\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n bbox.forEach(function(num) {\n if (!$390de6263a9949cf$export$7e4aa119212bc614(num)) throw new Error(\"bbox must only contain numbers\");\n });\n}\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */ function $390de6263a9949cf$export$f35f128fd59ea256(id) {\n if (!id) throw new Error(\"id is required\");\n if ([\n \"string\",\n \"number\"\n ].indexOf(typeof id) === -1) throw new Error(\"id must be a number or a string\");\n}\n// Deprecated methods\nfunction $390de6263a9949cf$export$b7eac44a74fbbf44() {\n throw new Error(\"method has been renamed to `radiansToDegrees`\");\n}\nfunction $390de6263a9949cf$export$429f6664de4d6783() {\n throw new Error(\"method has been renamed to `degreesToRadians`\");\n}\nfunction $390de6263a9949cf$export$682f47d8f6f8f330() {\n throw new Error(\"method has been renamed to `lengthToDegrees`\");\n}\nfunction $390de6263a9949cf$export$8fc0c652b1df31fd() {\n throw new Error(\"method has been renamed to `lengthToRadians`\");\n}\nfunction $390de6263a9949cf$export$dc0d90c052e1e7ea() {\n throw new Error(\"method has been renamed to `radiansToLength`\");\n}\nfunction $390de6263a9949cf$export$97a5bf601f8e0e61() {\n throw new Error(\"method has been renamed to `bearingToAzimuth`\");\n}\nfunction $390de6263a9949cf$export$1d848d23272abfae() {\n throw new Error(\"method has been renamed to `convertLength`\");\n}\n\n});\n\n\n\nparcelRegister(\"4OmLb\", function(module, exports) {\n\n$parcel$export(module.exports, \"getCoords\", function () { return $380d7c958fe06b23$export$39e042fd83f1b62e; });\n\nvar $4THjE = parcelRequire(\"4THjE\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */ function $380d7c958fe06b23$export$b4663c6e64a770bc(coord) {\n if (!coord) throw new Error(\"coord is required\");\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") return coord.geometry.coordinates;\n if (coord.type === \"Point\") return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */ function $380d7c958fe06b23$export$39e042fd83f1b62e(coords) {\n if (!coords) throw new Error(\"coords is required\");\n // Feature\n if (coords.type === \"Feature\" && coords.geometry !== null) return coords.geometry.coordinates;\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */ function $380d7c958fe06b23$export$ab82360ed81b09b9(coordinates) {\n if (coordinates.length > 1 && (0, $4THjE.isNumber)(coordinates[0]) && (0, $4THjE.isNumber)(coordinates[1])) return true;\n if (Array.isArray(coordinates[0]) && coordinates[0].length) return $380d7c958fe06b23$export$ab82360ed81b09b9(coordinates[0]);\n throw new Error(\"coordinates must only contain numbers\");\n}\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $380d7c958fe06b23$export$329ecc560bd873a7(value, type, name) {\n if (!type || !name) throw new Error(\"type and name required\");\n if (!value || value.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type);\n}\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */ function $380d7c958fe06b23$export$8b96d9ca92084402(feature, type, name) {\n if (!feature) throw new Error(\"No feature passed\");\n if (!name) throw new Error(\".featureOf() requires a name\");\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n}\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $380d7c958fe06b23$export$bcf04c9d01e728b6(featureCollection, type, name) {\n if (!featureCollection) throw new Error(\"No featureCollection passed\");\n if (!name) throw new Error(\".collectionOf() requires a name\");\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n for(var i = 0; i < featureCollection.features.length; i++){\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n }\n}\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */ function $380d7c958fe06b23$export$b8f320eb9549c8fd(geojson) {\n if (!geojson) throw new Error(\"geojson is required\");\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error(\"geojson must be a valid Feature or Geometry Object\");\n}\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */ function $380d7c958fe06b23$export$cf92de84f30da2c5() {\n throw new Error(\"invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType\");\n}\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */ function $380d7c958fe06b23$export$e2b5c5db9e2009fd(geojson, name) {\n if (!geojson) throw new Error((name || \"geojson\") + \" is required\");\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || \"geojson\") + \" is invalid\");\n}\n\n});\n\n\n\nparcelRegister(\"44vWS\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.DuplicateMode = void 0;\n\nvar $lWzrG = parcelRequire(\"lWzrG\");\nfunction $2f70517a7f5bb8b4$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $2f70517a7f5bb8b4$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $2f70517a7f5bb8b4$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $2f70517a7f5bb8b4$var$_typeof(obj);\n}\nfunction $2f70517a7f5bb8b4$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $2f70517a7f5bb8b4$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $2f70517a7f5bb8b4$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $2f70517a7f5bb8b4$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $2f70517a7f5bb8b4$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $2f70517a7f5bb8b4$var$_get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) $2f70517a7f5bb8b4$var$_get = Reflect.get;\n else $2f70517a7f5bb8b4$var$_get = function _get(target, property, receiver) {\n var base = $2f70517a7f5bb8b4$var$_superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) return desc.get.call(receiver);\n return desc.value;\n };\n return $2f70517a7f5bb8b4$var$_get(target, property, receiver || target);\n}\nfunction $2f70517a7f5bb8b4$var$_superPropBase(object, property) {\n while(!Object.prototype.hasOwnProperty.call(object, property)){\n object = $2f70517a7f5bb8b4$var$_getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nfunction $2f70517a7f5bb8b4$var$_createSuper(Derived) {\n return function() {\n var Super = $2f70517a7f5bb8b4$var$_getPrototypeOf(Derived), result;\n if ($2f70517a7f5bb8b4$var$_isNativeReflectConstruct()) {\n var NewTarget = $2f70517a7f5bb8b4$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $2f70517a7f5bb8b4$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $2f70517a7f5bb8b4$var$_possibleConstructorReturn(self, call) {\n if (call && ($2f70517a7f5bb8b4$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $2f70517a7f5bb8b4$var$_assertThisInitialized(self);\n}\nfunction $2f70517a7f5bb8b4$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $2f70517a7f5bb8b4$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $2f70517a7f5bb8b4$var$_getPrototypeOf(o) {\n $2f70517a7f5bb8b4$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $2f70517a7f5bb8b4$var$_getPrototypeOf(o);\n}\nfunction $2f70517a7f5bb8b4$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $2f70517a7f5bb8b4$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $2f70517a7f5bb8b4$var$_setPrototypeOf(o, p) {\n $2f70517a7f5bb8b4$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $2f70517a7f5bb8b4$var$_setPrototypeOf(o, p);\n}\nvar $2f70517a7f5bb8b4$var$DuplicateMode = /*#__PURE__*/ function(_TranslateMode) {\n $2f70517a7f5bb8b4$var$_inherits(DuplicateMode, _TranslateMode);\n var _super = $2f70517a7f5bb8b4$var$_createSuper(DuplicateMode);\n function DuplicateMode() {\n $2f70517a7f5bb8b4$var$_classCallCheck(this, DuplicateMode);\n return _super.apply(this, arguments);\n }\n $2f70517a7f5bb8b4$var$_createClass(DuplicateMode, [\n {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n $2f70517a7f5bb8b4$var$_get($2f70517a7f5bb8b4$var$_getPrototypeOf(DuplicateMode.prototype), \"handleStartDragging\", this).call(this, event, props);\n if (this._geometryBeforeTranslate) props.onEdit(this.getAddManyFeaturesAction(this._geometryBeforeTranslate, props.data));\n }\n },\n {\n key: \"updateCursor\",\n value: function updateCursor(props) {\n if (this._isTranslatable) props.onUpdateCursor(\"copy\");\n else props.onUpdateCursor(null);\n }\n }\n ]);\n return DuplicateMode;\n}($lWzrG.TranslateMode);\nmodule.exports.DuplicateMode = $2f70517a7f5bb8b4$var$DuplicateMode;\n\n});\n\nparcelRegister(\"iS49Q\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.ExtendLineStringMode = void 0;\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\n\nvar $eJgQU = parcelRequire(\"eJgQU\");\nfunction $dbd07eca1b13c5a6$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $dbd07eca1b13c5a6$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $dbd07eca1b13c5a6$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $dbd07eca1b13c5a6$var$_typeof(obj);\n}\nfunction $dbd07eca1b13c5a6$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $dbd07eca1b13c5a6$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $dbd07eca1b13c5a6$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $dbd07eca1b13c5a6$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $dbd07eca1b13c5a6$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $dbd07eca1b13c5a6$var$_createSuper(Derived) {\n return function() {\n var Super = $dbd07eca1b13c5a6$var$_getPrototypeOf(Derived), result;\n if ($dbd07eca1b13c5a6$var$_isNativeReflectConstruct()) {\n var NewTarget = $dbd07eca1b13c5a6$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $dbd07eca1b13c5a6$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $dbd07eca1b13c5a6$var$_possibleConstructorReturn(self, call) {\n if (call && ($dbd07eca1b13c5a6$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $dbd07eca1b13c5a6$var$_assertThisInitialized(self);\n}\nfunction $dbd07eca1b13c5a6$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $dbd07eca1b13c5a6$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $dbd07eca1b13c5a6$var$_getPrototypeOf(o) {\n $dbd07eca1b13c5a6$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $dbd07eca1b13c5a6$var$_getPrototypeOf(o);\n}\nfunction $dbd07eca1b13c5a6$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $dbd07eca1b13c5a6$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $dbd07eca1b13c5a6$var$_setPrototypeOf(o, p) {\n $dbd07eca1b13c5a6$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $dbd07eca1b13c5a6$var$_setPrototypeOf(o, p);\n}\nvar $dbd07eca1b13c5a6$var$ExtendLineStringMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $dbd07eca1b13c5a6$var$_inherits(ExtendLineStringMode, _GeoJsonEditMode);\n var _super = $dbd07eca1b13c5a6$var$_createSuper(ExtendLineStringMode);\n function ExtendLineStringMode() {\n $dbd07eca1b13c5a6$var$_classCallCheck(this, ExtendLineStringMode);\n return _super.apply(this, arguments);\n }\n $dbd07eca1b13c5a6$var$_createClass(ExtendLineStringMode, [\n {\n key: \"getSingleSelectedLineString\",\n value: function getSingleSelectedLineString(props) {\n var selectedGeometry = this.getSelectedGeometry(props);\n if (selectedGeometry && selectedGeometry.type === \"LineString\") return selectedGeometry;\n return null;\n }\n },\n {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n var selectedIndexes = props.selectedIndexes;\n var selectedLineString = this.getSingleSelectedLineString(props);\n if (!selectedLineString) {\n console.warn(\"ExtendLineStringMode only supported for single LineString selection\"); // eslint-disable-line\n return;\n } // Extend the LineString\n var positionIndexes = [\n selectedLineString.coordinates.length\n ];\n var modeConfig = props.modeConfig;\n if (modeConfig && modeConfig.drawAtFront) positionIndexes = [\n 0\n ];\n var featureIndex = selectedIndexes[0];\n var updatedData = new $eJgQU.ImmutableFeatureCollection(props.data).addPosition(featureIndex, positionIndexes, event.mapCoords).getObject();\n props.onEdit({\n updatedData: updatedData,\n editType: \"addPosition\",\n editContext: {\n featureIndexes: [\n featureIndex\n ],\n positionIndexes: positionIndexes,\n position: event.mapCoords\n }\n });\n }\n },\n {\n key: \"getGuides\",\n value: function getGuides(props) {\n var guides = {\n type: \"FeatureCollection\",\n features: []\n };\n var selectedLineString = this.getSingleSelectedLineString(props);\n if (!selectedLineString) // nothing to do\n // @ts-ignore\n return guides;\n var mapCoords = props.lastPointerMoveEvent && props.lastPointerMoveEvent.mapCoords; // Draw an extension line starting from one end of the selected LineString to the cursor\n var startPosition = null;\n var modeConfig = props.modeConfig;\n if (modeConfig && modeConfig.drawAtFront) startPosition = selectedLineString.coordinates[0];\n else startPosition = selectedLineString.coordinates[selectedLineString.coordinates.length - 1];\n guides.features.push({\n type: \"Feature\",\n properties: {\n guideType: \"tentative\"\n },\n geometry: {\n type: \"LineString\",\n coordinates: [\n startPosition,\n mapCoords\n ]\n }\n }); // @ts-ignore\n return guides;\n }\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor(\"cell\");\n }\n }\n ]);\n return ExtendLineStringMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.ExtendLineStringMode = $dbd07eca1b13c5a6$var$ExtendLineStringMode;\n\n});\n\nparcelRegister(\"jW3FH\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.SplitPolygonMode = void 0;\n\nvar $e836482f156ba68c$var$_booleanPointInPolygon = $e836482f156ba68c$var$_interopRequireDefault((parcelRequire(\"fAAQU\")));\n\nvar $e836482f156ba68c$var$_difference = $e836482f156ba68c$var$_interopRequireDefault((parcelRequire(\"gZv4c\")));\n\nvar $e836482f156ba68c$var$_buffer = $e836482f156ba68c$var$_interopRequireDefault((parcelRequire(\"3qree\")));\n\nvar $e836482f156ba68c$var$_lineIntersect = $e836482f156ba68c$var$_interopRequireDefault((parcelRequire(\"iXvoQ\")));\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $e836482f156ba68c$var$_bearing = $e836482f156ba68c$var$_interopRequireDefault((parcelRequire(\"aDE4l\")));\n\nvar $e836482f156ba68c$var$_distance = $e836482f156ba68c$var$_interopRequireDefault((parcelRequire(\"b5wF2\")));\n\nvar $e836482f156ba68c$var$_destination = $e836482f156ba68c$var$_interopRequireDefault((parcelRequire(\"1UAWS\")));\n\nvar $e836482f156ba68c$var$_polygonToLine = $e836482f156ba68c$var$_interopRequireDefault((parcelRequire(\"eGOxi\")));\n\nvar $e836482f156ba68c$var$_nearestPointOnLine = $e836482f156ba68c$var$_interopRequireDefault((parcelRequire(\"ecyJ3\")));\n\nvar $hs5Hv = parcelRequire(\"hs5Hv\");\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\n\nvar $eJgQU = parcelRequire(\"eJgQU\");\nfunction $e836482f156ba68c$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $e836482f156ba68c$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $e836482f156ba68c$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $e836482f156ba68c$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $e836482f156ba68c$var$_typeof(obj);\n}\nfunction $e836482f156ba68c$var$_toConsumableArray(arr) {\n return $e836482f156ba68c$var$_arrayWithoutHoles(arr) || $e836482f156ba68c$var$_iterableToArray(arr) || $e836482f156ba68c$var$_unsupportedIterableToArray(arr) || $e836482f156ba68c$var$_nonIterableSpread();\n}\nfunction $e836482f156ba68c$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $e836482f156ba68c$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $e836482f156ba68c$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $e836482f156ba68c$var$_arrayLikeToArray(arr);\n}\nfunction $e836482f156ba68c$var$_slicedToArray(arr, i) {\n return $e836482f156ba68c$var$_arrayWithHoles(arr) || $e836482f156ba68c$var$_iterableToArrayLimit(arr, i) || $e836482f156ba68c$var$_unsupportedIterableToArray(arr, i) || $e836482f156ba68c$var$_nonIterableRest();\n}\nfunction $e836482f156ba68c$var$_nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $e836482f156ba68c$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $e836482f156ba68c$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $e836482f156ba68c$var$_arrayLikeToArray(o, minLen);\n}\nfunction $e836482f156ba68c$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $e836482f156ba68c$var$_iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for(var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction $e836482f156ba68c$var$_arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction $e836482f156ba68c$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $e836482f156ba68c$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $e836482f156ba68c$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $e836482f156ba68c$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $e836482f156ba68c$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $e836482f156ba68c$var$_createSuper(Derived) {\n return function() {\n var Super = $e836482f156ba68c$var$_getPrototypeOf(Derived), result;\n if ($e836482f156ba68c$var$_isNativeReflectConstruct()) {\n var NewTarget = $e836482f156ba68c$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $e836482f156ba68c$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $e836482f156ba68c$var$_possibleConstructorReturn(self, call) {\n if (call && ($e836482f156ba68c$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $e836482f156ba68c$var$_assertThisInitialized(self);\n}\nfunction $e836482f156ba68c$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $e836482f156ba68c$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $e836482f156ba68c$var$_getPrototypeOf(o) {\n $e836482f156ba68c$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $e836482f156ba68c$var$_getPrototypeOf(o);\n}\nfunction $e836482f156ba68c$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $e836482f156ba68c$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $e836482f156ba68c$var$_setPrototypeOf(o, p) {\n $e836482f156ba68c$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $e836482f156ba68c$var$_setPrototypeOf(o, p);\n}\nvar $e836482f156ba68c$var$SplitPolygonMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $e836482f156ba68c$var$_inherits(SplitPolygonMode, _GeoJsonEditMode);\n var _super = $e836482f156ba68c$var$_createSuper(SplitPolygonMode);\n function SplitPolygonMode() {\n $e836482f156ba68c$var$_classCallCheck(this, SplitPolygonMode);\n return _super.apply(this, arguments);\n }\n $e836482f156ba68c$var$_createClass(SplitPolygonMode, [\n {\n key: \"calculateMapCoords\",\n value: function calculateMapCoords(clickSequence, mapCoords, props) {\n var modeConfig = props.modeConfig;\n if (!modeConfig || !modeConfig.lock90Degree || !clickSequence.length) return mapCoords;\n if (clickSequence.length === 1) {\n // if first point is clicked, then find closest polygon point and build ~90deg vector\n var firstPoint = clickSequence[0];\n var selectedGeometry = this.getSelectedGeometry(props); // @ts-ignore\n var feature = (0, $e836482f156ba68c$var$_polygonToLine[\"default\"])(selectedGeometry);\n var lines = feature.type === \"FeatureCollection\" ? feature.features : [\n feature\n ];\n var minDistance = Number.MAX_SAFE_INTEGER;\n var closestPoint = null; // If Multipolygon, then we should find nearest polygon line and stick split to it.\n lines.forEach(function(line) {\n var snapPoint = (0, $e836482f156ba68c$var$_nearestPointOnLine[\"default\"])(line, firstPoint);\n var distanceFromOrigin = (0, $e836482f156ba68c$var$_distance[\"default\"])(snapPoint, firstPoint);\n if (minDistance > distanceFromOrigin) {\n minDistance = distanceFromOrigin;\n closestPoint = snapPoint;\n }\n });\n if (closestPoint) {\n // closest point is used as 90degree entry to the polygon\n var lastBearing = (0, $e836482f156ba68c$var$_bearing[\"default\"])(firstPoint, closestPoint);\n var currentDistance = (0, $e836482f156ba68c$var$_distance[\"default\"])(firstPoint, mapCoords, {\n units: \"meters\"\n });\n return (0, $e836482f156ba68c$var$_destination[\"default\"])(firstPoint, currentDistance, lastBearing, {\n units: \"meters\"\n }).geometry.coordinates;\n }\n return mapCoords;\n } // Allow only 90 degree turns\n var lastPoint = clickSequence[clickSequence.length - 1];\n var _generatePointsParall = (0, $hs5Hv.generatePointsParallelToLinePoints)(clickSequence[clickSequence.length - 2], lastPoint, mapCoords), _generatePointsParall2 = $e836482f156ba68c$var$_slicedToArray(_generatePointsParall, 1), approximatePoint = _generatePointsParall2[0]; // align point with current ground\n var nearestPt = (0, $e836482f156ba68c$var$_nearestPointOnLine[\"default\"])((0, $7GKQS.lineString)([\n lastPoint,\n approximatePoint\n ]), mapCoords).geometry.coordinates;\n return nearestPt;\n }\n },\n {\n key: \"getGuides\",\n value: function getGuides(props) {\n var clickSequence = this.getClickSequence();\n var guides = {\n type: \"FeatureCollection\",\n features: []\n };\n if (clickSequence.length === 0 || !props.lastPointerMoveEvent) // nothing to do yet\n return guides;\n var mapCoords = props.lastPointerMoveEvent.mapCoords;\n guides.features.push({\n type: \"Feature\",\n properties: {\n guideType: \"tentative\"\n },\n geometry: {\n type: \"LineString\",\n coordinates: [].concat($e836482f156ba68c$var$_toConsumableArray(clickSequence), [\n this.calculateMapCoords(clickSequence, mapCoords, props)\n ])\n }\n });\n return guides;\n }\n },\n {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n var tentativeFeature = this.getTentativeGuide(props);\n var selectedGeometry = this.getSelectedGeometry(props);\n if (!selectedGeometry) {\n // eslint-disable-next-line no-console,no-undef\n console.warn(\"A polygon must be selected for splitting\");\n return;\n }\n var clickSequence = this.getClickSequence();\n if (tentativeFeature && tentativeFeature.geometry.type === \"LineString\") clickSequence.push(tentativeFeature.geometry.coordinates[tentativeFeature.geometry.coordinates.length - 1]);\n else this.addClickSequence(event);\n var pt = {\n type: \"Point\",\n coordinates: clickSequence[clickSequence.length - 1]\n }; // @ts-ignore\n var isPointInPolygon = (0, $e836482f156ba68c$var$_booleanPointInPolygon[\"default\"])(pt, selectedGeometry);\n if (clickSequence.length > 1 && tentativeFeature && !isPointInPolygon) {\n this.resetClickSequence(); // @ts-ignore\n var isLineInterectingWithPolygon = (0, $e836482f156ba68c$var$_lineIntersect[\"default\"])(tentativeFeature, selectedGeometry);\n if (isLineInterectingWithPolygon.features.length === 0) return;\n var editAction = this.splitPolygon(tentativeFeature, props);\n if (editAction) props.onEdit(editAction);\n }\n }\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor(\"cell\");\n }\n },\n {\n key: \"splitPolygon\",\n value: function splitPolygon(tentativeFeature, props) {\n var selectedGeometry = this.getSelectedGeometry(props);\n var featureIndex = props.selectedIndexes[0];\n var modeConfig = props.modeConfig || {}; // Default gap in between the polygon\n var _modeConfig$gap = modeConfig.gap, gap = _modeConfig$gap === void 0 ? 0.1 : _modeConfig$gap, _modeConfig$units = modeConfig.units, units = _modeConfig$units === void 0 ? \"centimeters\" : _modeConfig$units;\n if (gap === 0) {\n gap = 0.1;\n units = \"centimeters\";\n }\n var buffer = (0, $e836482f156ba68c$var$_buffer[\"default\"])(tentativeFeature, gap, {\n units: units\n }); // @ts-ignore\n var updatedGeometry = (0, $e836482f156ba68c$var$_difference[\"default\"])(selectedGeometry, buffer);\n if (!updatedGeometry) {\n // eslint-disable-next-line no-console,no-undef\n console.warn(\"Canceling edit. Split Polygon erased\");\n return null;\n }\n var _updatedGeometry$geom = updatedGeometry.geometry, type = _updatedGeometry$geom.type, coordinates = _updatedGeometry$geom.coordinates;\n var updatedCoordinates = [];\n if (type === \"Polygon\") // Update the coordinates as per Multipolygon\n // @ts-ignore\n updatedCoordinates = coordinates.map(function(c) {\n return [\n c\n ];\n });\n else // Handle Case when Multipolygon has holes\n // @ts-ignore\n updatedCoordinates = coordinates.reduce(function(agg, prev) {\n prev.forEach(function(p) {\n agg.push([\n p\n ]);\n });\n return agg;\n }, []);\n // Update the type to Mulitpolygon\n var updatedData = new $eJgQU.ImmutableFeatureCollection(props.data).replaceGeometry(featureIndex, {\n type: \"MultiPolygon\",\n coordinates: updatedCoordinates\n });\n var editAction = {\n updatedData: updatedData.getObject(),\n editType: \"split\",\n editContext: {\n featureIndexes: [\n featureIndex\n ]\n }\n };\n return editAction;\n }\n }\n ]);\n return SplitPolygonMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.SplitPolygonMode = $e836482f156ba68c$var$SplitPolygonMode;\n\n});\nparcelRegister(\"fAAQU\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\n\nvar $8abqV = parcelRequire(\"8abqV\");\n// http://en.wikipedia.org/wiki/Even%E2%80%93odd_rule\n// modified from: https://github.com/substack/point-in-polygon/blob/master/index.js\n// which was modified from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n/**\n * Takes a {@link Point} and a {@link Polygon} or {@link MultiPolygon} and determines if the point\n * resides inside the polygon. The polygon can be convex or concave. The function accounts for holes.\n *\n * @name booleanPointInPolygon\n * @param {Coord} point input point\n * @param {Feature} polygon input polygon or multipolygon\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.ignoreBoundary=false] True if polygon boundary should be ignored when determining if\n * the point is inside the polygon otherwise false.\n * @returns {boolean} `true` if the Point is inside the Polygon; `false` if the Point is not inside the Polygon\n * @example\n * var pt = turf.point([-77, 44]);\n * var poly = turf.polygon([[\n * [-81, 41],\n * [-81, 47],\n * [-72, 47],\n * [-72, 41],\n * [-81, 41]\n * ]]);\n *\n * turf.booleanPointInPolygon(pt, poly);\n * //= true\n */ function $b596cdec7d82c4c3$var$booleanPointInPolygon(point, polygon, options) {\n if (options === void 0) options = {};\n // validation\n if (!point) throw new Error(\"point is required\");\n if (!polygon) throw new Error(\"polygon is required\");\n var pt = $8abqV.getCoord(point);\n var geom = $8abqV.getGeom(polygon);\n var type = geom.type;\n var bbox = polygon.bbox;\n var polys = geom.coordinates;\n // Quick elimination if point is not inside bbox\n if (bbox && $b596cdec7d82c4c3$var$inBBox(pt, bbox) === false) return false;\n // normalize to multipolygon\n if (type === \"Polygon\") polys = [\n polys\n ];\n var insidePoly = false;\n for(var i = 0; i < polys.length && !insidePoly; i++)// check if it is in the outer ring first\n if ($b596cdec7d82c4c3$var$inRing(pt, polys[i][0], options.ignoreBoundary)) {\n var inHole = false;\n var k = 1;\n // check for the point in any of the holes\n while(k < polys[i].length && !inHole){\n if ($b596cdec7d82c4c3$var$inRing(pt, polys[i][k], !options.ignoreBoundary)) inHole = true;\n k++;\n }\n if (!inHole) insidePoly = true;\n }\n return insidePoly;\n}\nmodule.exports.default = $b596cdec7d82c4c3$var$booleanPointInPolygon;\n/**\n * inRing\n *\n * @private\n * @param {Array} pt [x,y]\n * @param {Array>} ring [[x,y], [x,y],..]\n * @param {boolean} ignoreBoundary ignoreBoundary\n * @returns {boolean} inRing\n */ function $b596cdec7d82c4c3$var$inRing(pt, ring, ignoreBoundary) {\n var isInside = false;\n if (ring[0][0] === ring[ring.length - 1][0] && ring[0][1] === ring[ring.length - 1][1]) ring = ring.slice(0, ring.length - 1);\n for(var i = 0, j = ring.length - 1; i < ring.length; j = i++){\n var xi = ring[i][0];\n var yi = ring[i][1];\n var xj = ring[j][0];\n var yj = ring[j][1];\n var onBoundary = pt[1] * (xi - xj) + yi * (xj - pt[0]) + yj * (pt[0] - xi) === 0 && (xi - pt[0]) * (xj - pt[0]) <= 0 && (yi - pt[1]) * (yj - pt[1]) <= 0;\n if (onBoundary) return !ignoreBoundary;\n var intersect = yi > pt[1] !== yj > pt[1] && pt[0] < (xj - xi) * (pt[1] - yi) / (yj - yi) + xi;\n if (intersect) isInside = !isInside;\n }\n return isInside;\n}\n/**\n * inBBox\n *\n * @private\n * @param {Position} pt point [x,y]\n * @param {BBox} bbox BBox [west, south, east, north]\n * @returns {boolean} true/false if point is inside BBox\n */ function $b596cdec7d82c4c3$var$inBBox(pt, bbox) {\n return bbox[0] <= pt[0] && bbox[1] <= pt[1] && bbox[2] >= pt[0] && bbox[3] >= pt[1];\n}\n\n});\n\n\nparcelRegister(\"8Gejd\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.ExtrudeMode = void 0;\n\nvar $651d586e4a8ec60f$var$_bearing = $651d586e4a8ec60f$var$_interopRequireDefault((parcelRequire(\"aDE4l\")));\n\nvar $hs5Hv = parcelRequire(\"hs5Hv\");\n\nvar $gFC9Z = parcelRequire(\"gFC9Z\");\n\nvar $eJgQU = parcelRequire(\"eJgQU\");\nfunction $651d586e4a8ec60f$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $651d586e4a8ec60f$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $651d586e4a8ec60f$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $651d586e4a8ec60f$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $651d586e4a8ec60f$var$_typeof(obj);\n}\nfunction $651d586e4a8ec60f$var$_toConsumableArray(arr) {\n return $651d586e4a8ec60f$var$_arrayWithoutHoles(arr) || $651d586e4a8ec60f$var$_iterableToArray(arr) || $651d586e4a8ec60f$var$_unsupportedIterableToArray(arr) || $651d586e4a8ec60f$var$_nonIterableSpread();\n}\nfunction $651d586e4a8ec60f$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $651d586e4a8ec60f$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $651d586e4a8ec60f$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $651d586e4a8ec60f$var$_arrayLikeToArray(arr);\n}\nfunction $651d586e4a8ec60f$var$_slicedToArray(arr, i) {\n return $651d586e4a8ec60f$var$_arrayWithHoles(arr) || $651d586e4a8ec60f$var$_iterableToArrayLimit(arr, i) || $651d586e4a8ec60f$var$_unsupportedIterableToArray(arr, i) || $651d586e4a8ec60f$var$_nonIterableRest();\n}\nfunction $651d586e4a8ec60f$var$_nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $651d586e4a8ec60f$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $651d586e4a8ec60f$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $651d586e4a8ec60f$var$_arrayLikeToArray(o, minLen);\n}\nfunction $651d586e4a8ec60f$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $651d586e4a8ec60f$var$_iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for(var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction $651d586e4a8ec60f$var$_arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction $651d586e4a8ec60f$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $651d586e4a8ec60f$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $651d586e4a8ec60f$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $651d586e4a8ec60f$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $651d586e4a8ec60f$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $651d586e4a8ec60f$var$_createSuper(Derived) {\n return function() {\n var Super = $651d586e4a8ec60f$var$_getPrototypeOf(Derived), result;\n if ($651d586e4a8ec60f$var$_isNativeReflectConstruct()) {\n var NewTarget = $651d586e4a8ec60f$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $651d586e4a8ec60f$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $651d586e4a8ec60f$var$_possibleConstructorReturn(self, call) {\n if (call && ($651d586e4a8ec60f$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $651d586e4a8ec60f$var$_assertThisInitialized(self);\n}\nfunction $651d586e4a8ec60f$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $651d586e4a8ec60f$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $651d586e4a8ec60f$var$_getPrototypeOf(o) {\n $651d586e4a8ec60f$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $651d586e4a8ec60f$var$_getPrototypeOf(o);\n}\nfunction $651d586e4a8ec60f$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $651d586e4a8ec60f$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $651d586e4a8ec60f$var$_setPrototypeOf(o, p) {\n $651d586e4a8ec60f$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $651d586e4a8ec60f$var$_setPrototypeOf(o, p);\n}\nfunction $651d586e4a8ec60f$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $651d586e4a8ec60f$var$ExtrudeMode = /*#__PURE__*/ function(_ModifyMode) {\n $651d586e4a8ec60f$var$_inherits(ExtrudeMode, _ModifyMode);\n var _super = $651d586e4a8ec60f$var$_createSuper(ExtrudeMode);\n function ExtrudeMode() {\n var _this;\n $651d586e4a8ec60f$var$_classCallCheck(this, ExtrudeMode);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n _this = _super.call.apply(_super, [\n this\n ].concat(args));\n $651d586e4a8ec60f$var$_defineProperty($651d586e4a8ec60f$var$_assertThisInitialized(_this), \"isPointAdded\", false);\n return _this;\n }\n $651d586e4a8ec60f$var$_createClass(ExtrudeMode, [\n {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n var editHandle = (0, $hs5Hv.getPickedEditHandle)(event.pointerDownPicks);\n if (editHandle) {\n var featureIndex = editHandle.properties.featureIndex;\n var positionIndexes = editHandle.properties.positionIndexes;\n var size = this.coordinatesSize(positionIndexes, featureIndex, props.data);\n positionIndexes = this.isPointAdded ? this.nextPositionIndexes(positionIndexes, size) : positionIndexes; // p1 and p1 are end points for edge\n var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, props.data);\n var p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data);\n if (p1 && p2) {\n // p3 and p4 are end points for moving (extruding) edge\n var _generatePointsParall = (0, $hs5Hv.generatePointsParallelToLinePoints)(p1, p2, event.mapCoords), _generatePointsParall2 = $651d586e4a8ec60f$var$_slicedToArray(_generatePointsParall, 2), p3 = _generatePointsParall2[0], p4 = _generatePointsParall2[1];\n var updatedData = new $eJgQU.ImmutableFeatureCollection(props.data).replacePosition(featureIndex, this.prevPositionIndexes(positionIndexes, size), p4).replacePosition(featureIndex, positionIndexes, p3).getObject();\n props.onEdit({\n updatedData: updatedData,\n editType: \"extruding\",\n editContext: {\n featureIndexes: [\n featureIndex\n ],\n positionIndexes: this.nextPositionIndexes(positionIndexes, size),\n position: p3\n }\n });\n event.cancelPan();\n }\n }\n }\n },\n {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n var selectedFeatureIndexes = props.selectedIndexes;\n var editHandle = (0, $hs5Hv.getPickedIntermediateEditHandle)(event.picks);\n if (selectedFeatureIndexes.length && editHandle) {\n var _editHandle$propertie = editHandle.properties, positionIndexes = _editHandle$propertie.positionIndexes, featureIndex = _editHandle$propertie.featureIndex;\n var size = this.coordinatesSize(positionIndexes, featureIndex, props.data); // p1 and p1 are end points for edge\n var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, props.data);\n var p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data);\n if (p1 && p2) {\n var updatedData = new $eJgQU.ImmutableFeatureCollection(props.data);\n if (!this.isOrthogonal(positionIndexes, featureIndex, size, props.data)) updatedData = updatedData.addPosition(featureIndex, positionIndexes, p2);\n if (!this.isOrthogonal(this.prevPositionIndexes(positionIndexes, size), featureIndex, size, props.data)) {\n updatedData = updatedData.addPosition(featureIndex, positionIndexes, p1);\n this.isPointAdded = true;\n }\n props.onEdit({\n updatedData: updatedData.getObject(),\n editType: \"startExtruding\",\n editContext: {\n featureIndexes: [\n featureIndex\n ],\n positionIndexes: positionIndexes,\n position: p1\n }\n });\n }\n }\n }\n },\n {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n var selectedFeatureIndexes = props.selectedIndexes;\n var editHandle = (0, $hs5Hv.getPickedEditHandle)(event.pointerDownPicks);\n if (selectedFeatureIndexes.length && editHandle) {\n var featureIndex = editHandle.properties.featureIndex;\n var positionIndexes = editHandle.properties.positionIndexes;\n var size = this.coordinatesSize(positionIndexes, featureIndex, props.data);\n positionIndexes = this.isPointAdded ? this.nextPositionIndexes(positionIndexes, size) : positionIndexes; // p1 and p1 are end points for edge\n var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, props.data);\n var p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data);\n if (p1 && p2) {\n // p3 and p4 are end points for new moved (extruded) edge\n var _generatePointsParall3 = (0, $hs5Hv.generatePointsParallelToLinePoints)(p1, p2, event.mapCoords), _generatePointsParall4 = $651d586e4a8ec60f$var$_slicedToArray(_generatePointsParall3, 2), p3 = _generatePointsParall4[0], p4 = _generatePointsParall4[1];\n var updatedData = new $eJgQU.ImmutableFeatureCollection(props.data).replacePosition(featureIndex, this.prevPositionIndexes(positionIndexes, size), p4).replacePosition(featureIndex, positionIndexes, p3).getObject();\n props.onEdit({\n updatedData: updatedData,\n editType: \"extruded\",\n editContext: {\n featureIndexes: [\n featureIndex\n ],\n positionIndexes: positionIndexes,\n position: p3\n }\n });\n }\n }\n this.isPointAdded = false;\n }\n },\n {\n key: \"coordinatesSize\",\n value: function coordinatesSize(positionIndexes, featureIndex, _ref) {\n var features = _ref.features;\n var size = 0;\n if (Array.isArray(positionIndexes)) {\n var feature = features[featureIndex];\n var coordinates = feature.geometry.coordinates; // for Multi polygons, length will be 3\n if (positionIndexes.length === 3) {\n var _positionIndexes = $651d586e4a8ec60f$var$_slicedToArray(positionIndexes, 2), a = _positionIndexes[0], b = _positionIndexes[1];\n if (coordinates.length && coordinates[a].length) size = coordinates[a][b].length;\n } else {\n var _positionIndexes2 = $651d586e4a8ec60f$var$_slicedToArray(positionIndexes, 1), _b = _positionIndexes2[0];\n if (coordinates.length && coordinates[_b].length) size = coordinates[_b].length;\n }\n }\n return size;\n }\n },\n {\n key: \"getBearing\",\n value: function getBearing(p1, p2) {\n var angle = (0, $651d586e4a8ec60f$var$_bearing[\"default\"])(p1, p2);\n if (angle < 0) return Math.floor(360 + angle);\n return Math.floor(angle);\n }\n },\n {\n key: \"isOrthogonal\",\n value: function isOrthogonal(positionIndexes, featureIndex, size, features) {\n if (!Array.isArray(positionIndexes)) return false;\n if (positionIndexes[positionIndexes.length - 1] === size - 1) positionIndexes[positionIndexes.length - 1] = 0;\n var prevPoint = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, features);\n var nextPoint = this.getPointForPositionIndexes(this.nextPositionIndexes(positionIndexes, size), featureIndex, features);\n var currentPoint = this.getPointForPositionIndexes(positionIndexes, featureIndex, features);\n var prevAngle = this.getBearing(currentPoint, prevPoint);\n var nextAngle = this.getBearing(currentPoint, nextPoint);\n return [\n 89,\n 90,\n 91,\n 269,\n 270,\n 271\n ].includes(Math.abs(prevAngle - nextAngle));\n }\n },\n {\n key: \"nextPositionIndexes\",\n value: function nextPositionIndexes(positionIndexes, size) {\n if (!Array.isArray(positionIndexes)) return [];\n var next = $651d586e4a8ec60f$var$_toConsumableArray(positionIndexes);\n if (next.length) next[next.length - 1] = next[next.length - 1] === size - 1 ? 0 : next[next.length - 1] + 1;\n return next;\n }\n },\n {\n key: \"prevPositionIndexes\",\n value: function prevPositionIndexes(positionIndexes, size) {\n if (!Array.isArray(positionIndexes)) return [];\n var prev = $651d586e4a8ec60f$var$_toConsumableArray(positionIndexes);\n if (prev.length) prev[prev.length - 1] = prev[prev.length - 1] === 0 ? size - 2 : prev[prev.length - 1] - 1;\n return prev;\n }\n },\n {\n key: \"getPointForPositionIndexes\",\n value: function getPointForPositionIndexes(positionIndexes, featureIndex, _ref2) {\n var features = _ref2.features;\n var p1;\n if (Array.isArray(positionIndexes)) {\n var feature = features[featureIndex];\n var coordinates = feature.geometry.coordinates; // for Multi polygons, length will be 3\n if (positionIndexes.length === 3) {\n var _positionIndexes3 = $651d586e4a8ec60f$var$_slicedToArray(positionIndexes, 3), a = _positionIndexes3[0], b = _positionIndexes3[1], c = _positionIndexes3[2];\n if (coordinates.length && coordinates[a].length) p1 = coordinates[a][b][c];\n } else {\n var _positionIndexes4 = $651d586e4a8ec60f$var$_slicedToArray(positionIndexes, 2), _b2 = _positionIndexes4[0], _c = _positionIndexes4[1];\n if (coordinates.length && coordinates[_b2].length) p1 = coordinates[_b2][_c];\n }\n }\n return p1;\n }\n }\n ]);\n return ExtrudeMode;\n}($gFC9Z.ModifyMode);\nmodule.exports.ExtrudeMode = $651d586e4a8ec60f$var$ExtrudeMode;\n\n});\n\nparcelRegister(\"bmi4Q\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.ElevationMode = void 0;\n\nvar $hs5Hv = parcelRequire(\"hs5Hv\");\n\nvar $gFC9Z = parcelRequire(\"gFC9Z\");\nfunction $844fc58390bd0d81$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $844fc58390bd0d81$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $844fc58390bd0d81$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $844fc58390bd0d81$var$_typeof(obj);\n}\nfunction $844fc58390bd0d81$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $844fc58390bd0d81$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $844fc58390bd0d81$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $844fc58390bd0d81$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $844fc58390bd0d81$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $844fc58390bd0d81$var$_get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) $844fc58390bd0d81$var$_get = Reflect.get;\n else $844fc58390bd0d81$var$_get = function _get(target, property, receiver) {\n var base = $844fc58390bd0d81$var$_superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) return desc.get.call(receiver);\n return desc.value;\n };\n return $844fc58390bd0d81$var$_get(target, property, receiver || target);\n}\nfunction $844fc58390bd0d81$var$_superPropBase(object, property) {\n while(!Object.prototype.hasOwnProperty.call(object, property)){\n object = $844fc58390bd0d81$var$_getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nfunction $844fc58390bd0d81$var$_createSuper(Derived) {\n return function() {\n var Super = $844fc58390bd0d81$var$_getPrototypeOf(Derived), result;\n if ($844fc58390bd0d81$var$_isNativeReflectConstruct()) {\n var NewTarget = $844fc58390bd0d81$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $844fc58390bd0d81$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $844fc58390bd0d81$var$_possibleConstructorReturn(self, call) {\n if (call && ($844fc58390bd0d81$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $844fc58390bd0d81$var$_assertThisInitialized(self);\n}\nfunction $844fc58390bd0d81$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $844fc58390bd0d81$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $844fc58390bd0d81$var$_getPrototypeOf(o) {\n $844fc58390bd0d81$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $844fc58390bd0d81$var$_getPrototypeOf(o);\n}\nfunction $844fc58390bd0d81$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $844fc58390bd0d81$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $844fc58390bd0d81$var$_setPrototypeOf(o, p) {\n $844fc58390bd0d81$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $844fc58390bd0d81$var$_setPrototypeOf(o, p);\n}\nfunction $844fc58390bd0d81$var$defaultCalculateElevationChange(_ref) {\n var pointerDownScreenCoords = _ref.pointerDownScreenCoords, screenCoords = _ref.screenCoords;\n return 10 * (pointerDownScreenCoords[1] - screenCoords[1]);\n}\nvar $844fc58390bd0d81$var$ElevationMode = /*#__PURE__*/ function(_ModifyMode) {\n $844fc58390bd0d81$var$_inherits(ElevationMode, _ModifyMode);\n var _super = $844fc58390bd0d81$var$_createSuper(ElevationMode);\n function ElevationMode() {\n $844fc58390bd0d81$var$_classCallCheck(this, ElevationMode);\n return _super.apply(this, arguments);\n }\n $844fc58390bd0d81$var$_createClass(ElevationMode, [\n {\n key: \"makeElevatedEvent\",\n value: function makeElevatedEvent(event, position, props) {\n var _ref2 = props.modeConfig || {}, _ref2$minElevation = _ref2.minElevation, minElevation = _ref2$minElevation === void 0 ? 0 : _ref2$minElevation, _ref2$maxElevation = _ref2.maxElevation, maxElevation = _ref2$maxElevation === void 0 ? 20000 : _ref2$maxElevation, _ref2$calculateElevat = _ref2.calculateElevationChange, calculateElevationChange = _ref2$calculateElevat === void 0 ? $844fc58390bd0d81$var$defaultCalculateElevationChange : _ref2$calculateElevat;\n if (!event.pointerDownScreenCoords) return event;\n // $FlowFixMe - really, I know it has something at index 2\n var elevation = position.length === 3 ? position[2] : 0; // calculateElevationChange is configurable because (at this time) modes are not aware of the viewport\n elevation += calculateElevationChange({\n pointerDownScreenCoords: event.pointerDownScreenCoords,\n screenCoords: event.screenCoords\n });\n elevation = Math.min(elevation, maxElevation);\n elevation = Math.max(elevation, minElevation);\n return Object.assign({}, event, {\n mapCoords: [\n position[0],\n position[1],\n elevation\n ]\n });\n }\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n var editHandle = (0, $hs5Hv.getPickedEditHandle)(event.pointerDownPicks);\n var position = editHandle ? editHandle.geometry.coordinates : event.mapCoords; // @ts-ignore\n $844fc58390bd0d81$var$_get($844fc58390bd0d81$var$_getPrototypeOf(ElevationMode.prototype), \"handlePointerMove\", this).call(this, this.makeElevatedEvent(event, position, props), props);\n }\n },\n {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n var editHandle = (0, $hs5Hv.getPickedEditHandle)(event.picks);\n var position = editHandle ? editHandle.geometry.coordinates : event.mapCoords; // @ts-ignore\n $844fc58390bd0d81$var$_get($844fc58390bd0d81$var$_getPrototypeOf(ElevationMode.prototype), \"handleStopDragging\", this).call(this, this.makeElevatedEvent(event, position, props), props);\n }\n },\n {\n key: \"getCursor\",\n value: function getCursor(event) {\n var cursor = $844fc58390bd0d81$var$_get($844fc58390bd0d81$var$_getPrototypeOf(ElevationMode.prototype), \"getCursor\", this).call(this, event);\n if (cursor === \"cell\") cursor = \"ns-resize\";\n return cursor;\n }\n }\n ], [\n {\n key: \"calculateElevationChangeWithViewport\",\n value: function calculateElevationChangeWithViewport(viewport, _ref3) {\n var pointerDownScreenCoords = _ref3.pointerDownScreenCoords, screenCoords = _ref3.screenCoords;\n // Source: https://gis.stackexchange.com/a/127949/111804\n var metersPerPixel = 156543.03392 * Math.cos(viewport.latitude * Math.PI / 180) / Math.pow(2, viewport.zoom);\n return metersPerPixel * (pointerDownScreenCoords[1] - screenCoords[1]) / 2;\n }\n }\n ]);\n return ElevationMode;\n}($gFC9Z.ModifyMode);\nmodule.exports.ElevationMode = $844fc58390bd0d81$var$ElevationMode;\n\n});\n\nparcelRegister(\"8dTIP\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.TransformMode = void 0;\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $lWzrG = parcelRequire(\"lWzrG\");\n\nvar $ljwRq = parcelRequire(\"ljwRq\");\n\nvar $cjd37 = parcelRequire(\"cjd37\");\n\nvar $6J4Ij = parcelRequire(\"6J4Ij\");\nfunction $5fcac2d6e2d15b27$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $5fcac2d6e2d15b27$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $5fcac2d6e2d15b27$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $5fcac2d6e2d15b27$var$_typeof(obj);\n}\nfunction $5fcac2d6e2d15b27$var$ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction $5fcac2d6e2d15b27$var$_objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) $5fcac2d6e2d15b27$var$ownKeys(Object(source), true).forEach(function(key) {\n $5fcac2d6e2d15b27$var$_defineProperty(target, key, source[key]);\n });\n else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n else $5fcac2d6e2d15b27$var$ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction $5fcac2d6e2d15b27$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nfunction $5fcac2d6e2d15b27$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $5fcac2d6e2d15b27$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $5fcac2d6e2d15b27$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $5fcac2d6e2d15b27$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $5fcac2d6e2d15b27$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $5fcac2d6e2d15b27$var$_get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) $5fcac2d6e2d15b27$var$_get = Reflect.get;\n else $5fcac2d6e2d15b27$var$_get = function _get(target, property, receiver) {\n var base = $5fcac2d6e2d15b27$var$_superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) return desc.get.call(receiver);\n return desc.value;\n };\n return $5fcac2d6e2d15b27$var$_get(target, property, receiver || target);\n}\nfunction $5fcac2d6e2d15b27$var$_superPropBase(object, property) {\n while(!Object.prototype.hasOwnProperty.call(object, property)){\n object = $5fcac2d6e2d15b27$var$_getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nfunction $5fcac2d6e2d15b27$var$_createSuper(Derived) {\n return function() {\n var Super = $5fcac2d6e2d15b27$var$_getPrototypeOf(Derived), result;\n if ($5fcac2d6e2d15b27$var$_isNativeReflectConstruct()) {\n var NewTarget = $5fcac2d6e2d15b27$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $5fcac2d6e2d15b27$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $5fcac2d6e2d15b27$var$_possibleConstructorReturn(self, call) {\n if (call && ($5fcac2d6e2d15b27$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $5fcac2d6e2d15b27$var$_assertThisInitialized(self);\n}\nfunction $5fcac2d6e2d15b27$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $5fcac2d6e2d15b27$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $5fcac2d6e2d15b27$var$_getPrototypeOf(o) {\n $5fcac2d6e2d15b27$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $5fcac2d6e2d15b27$var$_getPrototypeOf(o);\n}\nfunction $5fcac2d6e2d15b27$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $5fcac2d6e2d15b27$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $5fcac2d6e2d15b27$var$_setPrototypeOf(o, p) {\n $5fcac2d6e2d15b27$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $5fcac2d6e2d15b27$var$_setPrototypeOf(o, p);\n}\nvar $5fcac2d6e2d15b27$var$TransformMode = /*#__PURE__*/ function(_CompositeMode) {\n $5fcac2d6e2d15b27$var$_inherits(TransformMode, _CompositeMode);\n var _super = $5fcac2d6e2d15b27$var$_createSuper(TransformMode);\n function TransformMode() {\n $5fcac2d6e2d15b27$var$_classCallCheck(this, TransformMode);\n return _super.call(this, [\n new $lWzrG.TranslateMode(),\n new $ljwRq.ScaleMode(),\n new $cjd37.RotateMode()\n ]);\n }\n $5fcac2d6e2d15b27$var$_createClass(TransformMode, [\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n var updatedCursor = null;\n $5fcac2d6e2d15b27$var$_get($5fcac2d6e2d15b27$var$_getPrototypeOf(TransformMode.prototype), \"handlePointerMove\", this).call(this, event, $5fcac2d6e2d15b27$var$_objectSpread({}, props, {\n onUpdateCursor: function onUpdateCursor(cursor) {\n updatedCursor = cursor || updatedCursor;\n }\n }));\n props.onUpdateCursor(updatedCursor);\n }\n },\n {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n var scaleMode = null;\n var translateMode = null;\n var filteredModes = []; // If the user selects a scaling edit handle that overlaps with part of the selected feature,\n // it is possible for both scale and translate actions to be triggered. This logic prevents\n // this simultaneous action trigger from happening by putting a higher priority on scaling\n // since the user needs to be more precise to hover over a scaling edit handle.\n this._modes.forEach(function(mode) {\n if (mode instanceof $lWzrG.TranslateMode) translateMode = mode;\n else {\n if (mode instanceof $ljwRq.ScaleMode) scaleMode = mode;\n filteredModes.push(mode);\n }\n });\n if (scaleMode instanceof $ljwRq.ScaleMode && !scaleMode.isEditHandleSelected()) filteredModes.push(translateMode);\n filteredModes.filter(Boolean).forEach(function(mode) {\n return mode.handleStartDragging(event, props);\n });\n }\n },\n {\n key: \"getGuides\",\n value: function getGuides(props) {\n var compositeGuides = $5fcac2d6e2d15b27$var$_get($5fcac2d6e2d15b27$var$_getPrototypeOf(TransformMode.prototype), \"getGuides\", this).call(this, props);\n var rotateMode = (this._modes || []).find(function(mode) {\n return mode instanceof $cjd37.RotateMode;\n });\n if (rotateMode instanceof $cjd37.RotateMode) {\n var nonEnvelopeGuides = compositeGuides.features.filter(function(guide) {\n var _ref = guide.properties || {}, editHandleType = _ref.editHandleType, mode = _ref.mode; // Both scale and rotate modes have the same enveloping box as a guide - only need one\n var guidesToFilterOut = [\n mode\n ]; // Do not render scaling edit handles if rotating\n if (rotateMode.getIsRotating()) guidesToFilterOut.push(editHandleType);\n return !guidesToFilterOut.includes(\"scale\");\n }); // @ts-ignore\n compositeGuides = (0, $7GKQS.featureCollection)(nonEnvelopeGuides);\n }\n return compositeGuides;\n }\n }\n ]);\n return TransformMode;\n}($6J4Ij.CompositeMode);\nmodule.exports.TransformMode = $5fcac2d6e2d15b27$var$TransformMode;\n\n});\nparcelRegister(\"6J4Ij\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.CompositeMode = void 0;\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\nfunction $4e5a9a17f03a35c9$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $4e5a9a17f03a35c9$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $4e5a9a17f03a35c9$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $4e5a9a17f03a35c9$var$_typeof(obj);\n}\nfunction $4e5a9a17f03a35c9$var$_toConsumableArray(arr) {\n return $4e5a9a17f03a35c9$var$_arrayWithoutHoles(arr) || $4e5a9a17f03a35c9$var$_iterableToArray(arr) || $4e5a9a17f03a35c9$var$_unsupportedIterableToArray(arr) || $4e5a9a17f03a35c9$var$_nonIterableSpread();\n}\nfunction $4e5a9a17f03a35c9$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $4e5a9a17f03a35c9$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $4e5a9a17f03a35c9$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $4e5a9a17f03a35c9$var$_arrayLikeToArray(arr);\n}\nfunction $4e5a9a17f03a35c9$var$_createForOfIteratorHelper(o) {\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = $4e5a9a17f03a35c9$var$_unsupportedIterableToArray(o))) {\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var it, normalCompletion = true, didErr = false, err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally{\n if (didErr) throw err;\n }\n }\n };\n}\nfunction $4e5a9a17f03a35c9$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $4e5a9a17f03a35c9$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $4e5a9a17f03a35c9$var$_arrayLikeToArray(o, minLen);\n}\nfunction $4e5a9a17f03a35c9$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $4e5a9a17f03a35c9$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $4e5a9a17f03a35c9$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $4e5a9a17f03a35c9$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $4e5a9a17f03a35c9$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $4e5a9a17f03a35c9$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $4e5a9a17f03a35c9$var$_createSuper(Derived) {\n return function() {\n var Super = $4e5a9a17f03a35c9$var$_getPrototypeOf(Derived), result;\n if ($4e5a9a17f03a35c9$var$_isNativeReflectConstruct()) {\n var NewTarget = $4e5a9a17f03a35c9$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $4e5a9a17f03a35c9$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $4e5a9a17f03a35c9$var$_possibleConstructorReturn(self, call) {\n if (call && ($4e5a9a17f03a35c9$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $4e5a9a17f03a35c9$var$_assertThisInitialized(self);\n}\nfunction $4e5a9a17f03a35c9$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $4e5a9a17f03a35c9$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $4e5a9a17f03a35c9$var$_getPrototypeOf(o) {\n $4e5a9a17f03a35c9$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $4e5a9a17f03a35c9$var$_getPrototypeOf(o);\n}\nfunction $4e5a9a17f03a35c9$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $4e5a9a17f03a35c9$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $4e5a9a17f03a35c9$var$_setPrototypeOf(o, p) {\n $4e5a9a17f03a35c9$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $4e5a9a17f03a35c9$var$_setPrototypeOf(o, p);\n}\nfunction $4e5a9a17f03a35c9$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $4e5a9a17f03a35c9$var$CompositeMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $4e5a9a17f03a35c9$var$_inherits(CompositeMode, _GeoJsonEditMode);\n var _super = $4e5a9a17f03a35c9$var$_createSuper(CompositeMode);\n function CompositeMode(modes) {\n var _this;\n $4e5a9a17f03a35c9$var$_classCallCheck(this, CompositeMode);\n _this = _super.call(this);\n $4e5a9a17f03a35c9$var$_defineProperty($4e5a9a17f03a35c9$var$_assertThisInitialized(_this), \"_modes\", void 0);\n _this._modes = modes;\n return _this;\n }\n $4e5a9a17f03a35c9$var$_createClass(CompositeMode, [\n {\n key: \"_coalesce\",\n value: function _coalesce(callback) {\n var resultEval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var result;\n for(var i = 0; i < this._modes.length; i++){\n result = callback(this._modes[i]);\n if (resultEval ? resultEval(result) : result) break;\n }\n return result;\n }\n },\n {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n this._coalesce(function(handler) {\n return handler.handleClick(event, props);\n });\n }\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n return this._coalesce(function(handler) {\n return handler.handlePointerMove(event, props);\n });\n }\n },\n {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n return this._coalesce(function(handler) {\n return handler.handleStartDragging(event, props);\n });\n }\n },\n {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n return this._coalesce(function(handler) {\n return handler.handleStopDragging(event, props);\n });\n }\n },\n {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n return this._coalesce(function(handler) {\n return handler.handleDragging(event, props);\n });\n }\n },\n {\n key: \"getGuides\",\n value: function getGuides(props) {\n // TODO: Combine the guides *BUT* make sure if none of the results have\n // changed to return the same object so that \"guides !== this.state.guides\"\n // in editable-geojson-layer works.\n var allGuides = [];\n var _iterator = $4e5a9a17f03a35c9$var$_createForOfIteratorHelper(this._modes), _step;\n try {\n for(_iterator.s(); !(_step = _iterator.n()).done;){\n var mode = _step.value;\n allGuides.push.apply(allGuides, $4e5a9a17f03a35c9$var$_toConsumableArray(mode.getGuides(props).features));\n }\n } catch (err) {\n _iterator.e(err);\n } finally{\n _iterator.f();\n }\n return {\n type: \"FeatureCollection\",\n features: allGuides\n };\n }\n }\n ]);\n return CompositeMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.CompositeMode = $4e5a9a17f03a35c9$var$CompositeMode;\n\n});\n\n\nparcelRegister(\"8Vy0o\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.DrawPointMode = void 0;\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\nfunction $67fe065d9ee8b737$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $67fe065d9ee8b737$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $67fe065d9ee8b737$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $67fe065d9ee8b737$var$_typeof(obj);\n}\nfunction $67fe065d9ee8b737$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $67fe065d9ee8b737$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $67fe065d9ee8b737$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $67fe065d9ee8b737$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $67fe065d9ee8b737$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $67fe065d9ee8b737$var$_get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) $67fe065d9ee8b737$var$_get = Reflect.get;\n else $67fe065d9ee8b737$var$_get = function _get(target, property, receiver) {\n var base = $67fe065d9ee8b737$var$_superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) return desc.get.call(receiver);\n return desc.value;\n };\n return $67fe065d9ee8b737$var$_get(target, property, receiver || target);\n}\nfunction $67fe065d9ee8b737$var$_superPropBase(object, property) {\n while(!Object.prototype.hasOwnProperty.call(object, property)){\n object = $67fe065d9ee8b737$var$_getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nfunction $67fe065d9ee8b737$var$_createSuper(Derived) {\n return function() {\n var Super = $67fe065d9ee8b737$var$_getPrototypeOf(Derived), result;\n if ($67fe065d9ee8b737$var$_isNativeReflectConstruct()) {\n var NewTarget = $67fe065d9ee8b737$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $67fe065d9ee8b737$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $67fe065d9ee8b737$var$_possibleConstructorReturn(self, call) {\n if (call && ($67fe065d9ee8b737$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $67fe065d9ee8b737$var$_assertThisInitialized(self);\n}\nfunction $67fe065d9ee8b737$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $67fe065d9ee8b737$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $67fe065d9ee8b737$var$_getPrototypeOf(o) {\n $67fe065d9ee8b737$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $67fe065d9ee8b737$var$_getPrototypeOf(o);\n}\nfunction $67fe065d9ee8b737$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $67fe065d9ee8b737$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $67fe065d9ee8b737$var$_setPrototypeOf(o, p) {\n $67fe065d9ee8b737$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $67fe065d9ee8b737$var$_setPrototypeOf(o, p);\n}\nvar $67fe065d9ee8b737$var$DrawPointMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $67fe065d9ee8b737$var$_inherits(DrawPointMode, _GeoJsonEditMode);\n var _super = $67fe065d9ee8b737$var$_createSuper(DrawPointMode);\n function DrawPointMode() {\n $67fe065d9ee8b737$var$_classCallCheck(this, DrawPointMode);\n return _super.apply(this, arguments);\n }\n $67fe065d9ee8b737$var$_createClass(DrawPointMode, [\n {\n key: \"createTentativeFeature\",\n value: function createTentativeFeature(props) {\n var lastPointerMoveEvent = props.lastPointerMoveEvent;\n var lastCoords = lastPointerMoveEvent ? [\n lastPointerMoveEvent.mapCoords\n ] : [];\n return {\n type: \"Feature\",\n properties: {\n guideType: \"tentative\"\n },\n geometry: {\n type: \"Point\",\n coordinates: lastCoords[0]\n }\n };\n }\n },\n {\n key: \"handleClick\",\n value: function handleClick(_ref, props) {\n var mapCoords = _ref.mapCoords;\n var geometry = {\n type: \"Point\",\n coordinates: mapCoords\n }; // @ts-ignore\n props.onEdit(this.getAddFeatureAction(geometry, props.data));\n }\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor(\"cell\");\n $67fe065d9ee8b737$var$_get($67fe065d9ee8b737$var$_getPrototypeOf(DrawPointMode.prototype), \"handlePointerMove\", this).call(this, event, props);\n }\n }\n ]);\n return DrawPointMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.DrawPointMode = $67fe065d9ee8b737$var$DrawPointMode;\n\n});\n\nparcelRegister(\"4qOqT\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.DrawLineStringMode = void 0;\n\nvar $hs5Hv = parcelRequire(\"hs5Hv\");\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\nfunction $33a0b604068aedff$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $33a0b604068aedff$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $33a0b604068aedff$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $33a0b604068aedff$var$_typeof(obj);\n}\nfunction $33a0b604068aedff$var$_toConsumableArray(arr) {\n return $33a0b604068aedff$var$_arrayWithoutHoles(arr) || $33a0b604068aedff$var$_iterableToArray(arr) || $33a0b604068aedff$var$_unsupportedIterableToArray(arr) || $33a0b604068aedff$var$_nonIterableSpread();\n}\nfunction $33a0b604068aedff$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $33a0b604068aedff$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $33a0b604068aedff$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $33a0b604068aedff$var$_arrayLikeToArray(o, minLen);\n}\nfunction $33a0b604068aedff$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $33a0b604068aedff$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $33a0b604068aedff$var$_arrayLikeToArray(arr);\n}\nfunction $33a0b604068aedff$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $33a0b604068aedff$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $33a0b604068aedff$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $33a0b604068aedff$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $33a0b604068aedff$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $33a0b604068aedff$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $33a0b604068aedff$var$_createSuper(Derived) {\n return function() {\n var Super = $33a0b604068aedff$var$_getPrototypeOf(Derived), result;\n if ($33a0b604068aedff$var$_isNativeReflectConstruct()) {\n var NewTarget = $33a0b604068aedff$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $33a0b604068aedff$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $33a0b604068aedff$var$_possibleConstructorReturn(self, call) {\n if (call && ($33a0b604068aedff$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $33a0b604068aedff$var$_assertThisInitialized(self);\n}\nfunction $33a0b604068aedff$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $33a0b604068aedff$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $33a0b604068aedff$var$_getPrototypeOf(o) {\n $33a0b604068aedff$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $33a0b604068aedff$var$_getPrototypeOf(o);\n}\nfunction $33a0b604068aedff$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $33a0b604068aedff$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $33a0b604068aedff$var$_setPrototypeOf(o, p) {\n $33a0b604068aedff$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $33a0b604068aedff$var$_setPrototypeOf(o, p);\n}\nvar $33a0b604068aedff$var$DrawLineStringMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $33a0b604068aedff$var$_inherits(DrawLineStringMode, _GeoJsonEditMode);\n var _super = $33a0b604068aedff$var$_createSuper(DrawLineStringMode);\n function DrawLineStringMode() {\n $33a0b604068aedff$var$_classCallCheck(this, DrawLineStringMode);\n return _super.apply(this, arguments);\n }\n $33a0b604068aedff$var$_createClass(DrawLineStringMode, [\n {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n var picks = event.picks;\n var clickedEditHandle = (0, $hs5Hv.getPickedEditHandle)(picks);\n var positionAdded = false;\n if (!clickedEditHandle) {\n // Don't add another point right next to an existing one\n this.addClickSequence(event);\n positionAdded = true;\n }\n var clickSequence = this.getClickSequence();\n if (clickSequence.length > 1 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1) {\n // They clicked the last point (or double-clicked), so add the LineString\n var lineStringToAdd = {\n type: \"LineString\",\n coordinates: $33a0b604068aedff$var$_toConsumableArray(clickSequence)\n };\n this.resetClickSequence();\n var editAction = this.getAddFeatureAction(lineStringToAdd, props.data);\n if (editAction) props.onEdit(editAction);\n } else if (positionAdded) // new tentative point\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: \"addTentativePosition\",\n editContext: {\n position: event.mapCoords\n }\n });\n }\n },\n {\n key: \"handleKeyUp\",\n value: function handleKeyUp(event, props) {\n var key = event.key;\n if (key === \"Enter\") {\n var clickSequence = this.getClickSequence();\n if (clickSequence.length > 1) {\n var lineStringToAdd = {\n type: \"LineString\",\n coordinates: $33a0b604068aedff$var$_toConsumableArray(clickSequence)\n };\n this.resetClickSequence();\n var editAction = this.getAddFeatureAction(lineStringToAdd, props.data);\n if (editAction) props.onEdit(editAction);\n }\n }\n }\n },\n {\n key: \"getGuides\",\n value: function getGuides(props) {\n var _guides$features;\n var lastPointerMoveEvent = props.lastPointerMoveEvent;\n var clickSequence = this.getClickSequence();\n var lastCoords = lastPointerMoveEvent ? [\n lastPointerMoveEvent.mapCoords\n ] : [];\n var guides = {\n type: \"FeatureCollection\",\n features: []\n };\n var tentativeFeature;\n if (clickSequence.length > 0) tentativeFeature = {\n type: \"Feature\",\n properties: {\n guideType: \"tentative\"\n },\n geometry: {\n type: \"LineString\",\n coordinates: [].concat($33a0b604068aedff$var$_toConsumableArray(clickSequence), lastCoords)\n }\n };\n if (tentativeFeature) guides.features.push(tentativeFeature);\n var editHandles = clickSequence.map(function(clickedCoord, index) {\n return {\n type: \"Feature\",\n properties: {\n guideType: \"editHandle\",\n editHandleType: \"existing\",\n featureIndex: -1,\n positionIndexes: [\n index\n ]\n },\n geometry: {\n type: \"Point\",\n coordinates: clickedCoord\n }\n };\n });\n (_guides$features = guides.features).push.apply(_guides$features, $33a0b604068aedff$var$_toConsumableArray(editHandles)); // @ts-ignore\n return guides;\n }\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor(\"cell\");\n }\n }\n ]);\n return DrawLineStringMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.DrawLineStringMode = $33a0b604068aedff$var$DrawLineStringMode;\n\n});\n\nparcelRegister(\"fVfme\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.DrawPolygonMode = void 0;\n\nvar $b9781794dbbee251$var$_lineIntersect = $b9781794dbbee251$var$_interopRequireDefault((parcelRequire(\"iXvoQ\")));\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $hs5Hv = parcelRequire(\"hs5Hv\");\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\nfunction $b9781794dbbee251$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $b9781794dbbee251$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $b9781794dbbee251$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $b9781794dbbee251$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $b9781794dbbee251$var$_typeof(obj);\n}\nfunction $b9781794dbbee251$var$_toConsumableArray(arr) {\n return $b9781794dbbee251$var$_arrayWithoutHoles(arr) || $b9781794dbbee251$var$_iterableToArray(arr) || $b9781794dbbee251$var$_unsupportedIterableToArray(arr) || $b9781794dbbee251$var$_nonIterableSpread();\n}\nfunction $b9781794dbbee251$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $b9781794dbbee251$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $b9781794dbbee251$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $b9781794dbbee251$var$_arrayLikeToArray(o, minLen);\n}\nfunction $b9781794dbbee251$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $b9781794dbbee251$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $b9781794dbbee251$var$_arrayLikeToArray(arr);\n}\nfunction $b9781794dbbee251$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $b9781794dbbee251$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $b9781794dbbee251$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $b9781794dbbee251$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $b9781794dbbee251$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $b9781794dbbee251$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $b9781794dbbee251$var$_get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) $b9781794dbbee251$var$_get = Reflect.get;\n else $b9781794dbbee251$var$_get = function _get(target, property, receiver) {\n var base = $b9781794dbbee251$var$_superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) return desc.get.call(receiver);\n return desc.value;\n };\n return $b9781794dbbee251$var$_get(target, property, receiver || target);\n}\nfunction $b9781794dbbee251$var$_superPropBase(object, property) {\n while(!Object.prototype.hasOwnProperty.call(object, property)){\n object = $b9781794dbbee251$var$_getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nfunction $b9781794dbbee251$var$_createSuper(Derived) {\n return function() {\n var Super = $b9781794dbbee251$var$_getPrototypeOf(Derived), result;\n if ($b9781794dbbee251$var$_isNativeReflectConstruct()) {\n var NewTarget = $b9781794dbbee251$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $b9781794dbbee251$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $b9781794dbbee251$var$_possibleConstructorReturn(self, call) {\n if (call && ($b9781794dbbee251$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $b9781794dbbee251$var$_assertThisInitialized(self);\n}\nfunction $b9781794dbbee251$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $b9781794dbbee251$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $b9781794dbbee251$var$_getPrototypeOf(o) {\n $b9781794dbbee251$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $b9781794dbbee251$var$_getPrototypeOf(o);\n}\nfunction $b9781794dbbee251$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $b9781794dbbee251$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $b9781794dbbee251$var$_setPrototypeOf(o, p) {\n $b9781794dbbee251$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $b9781794dbbee251$var$_setPrototypeOf(o, p);\n}\nvar $b9781794dbbee251$var$DrawPolygonMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $b9781794dbbee251$var$_inherits(DrawPolygonMode, _GeoJsonEditMode);\n var _super = $b9781794dbbee251$var$_createSuper(DrawPolygonMode);\n function DrawPolygonMode() {\n $b9781794dbbee251$var$_classCallCheck(this, DrawPolygonMode);\n return _super.apply(this, arguments);\n }\n $b9781794dbbee251$var$_createClass(DrawPolygonMode, [\n {\n key: \"createTentativeFeature\",\n value: function createTentativeFeature(props) {\n var lastPointerMoveEvent = props.lastPointerMoveEvent;\n var clickSequence = this.getClickSequence();\n var lastCoords = lastPointerMoveEvent ? [\n lastPointerMoveEvent.mapCoords\n ] : [];\n var tentativeFeature;\n if (clickSequence.length === 1 || clickSequence.length === 2) tentativeFeature = {\n type: \"Feature\",\n properties: {\n guideType: \"tentative\"\n },\n geometry: {\n type: \"LineString\",\n coordinates: [].concat($b9781794dbbee251$var$_toConsumableArray(clickSequence), lastCoords)\n }\n };\n else if (clickSequence.length > 2) tentativeFeature = {\n type: \"Feature\",\n properties: {\n guideType: \"tentative\"\n },\n geometry: {\n type: \"Polygon\",\n coordinates: [\n [].concat($b9781794dbbee251$var$_toConsumableArray(clickSequence), lastCoords, [\n clickSequence[0]\n ])\n ]\n }\n };\n return tentativeFeature;\n }\n },\n {\n key: \"getGuides\",\n value: function getGuides(props) {\n var _guides$features;\n var clickSequence = this.getClickSequence();\n var guides = {\n type: \"FeatureCollection\",\n features: []\n };\n var tentativeFeature = this.createTentativeFeature(props);\n if (tentativeFeature) guides.features.push(tentativeFeature);\n var editHandles = clickSequence.map(function(clickedCoord, index) {\n return {\n type: \"Feature\",\n properties: {\n guideType: \"editHandle\",\n editHandleType: \"existing\",\n featureIndex: -1,\n positionIndexes: [\n index\n ]\n },\n geometry: {\n type: \"Point\",\n coordinates: clickedCoord\n }\n };\n });\n (_guides$features = guides.features).push.apply(_guides$features, $b9781794dbbee251$var$_toConsumableArray(editHandles)); // @ts-ignore\n return guides;\n }\n },\n {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n var picks = event.picks;\n var clickedEditHandle = (0, $hs5Hv.getPickedEditHandle)(picks);\n var clickSequence = this.getClickSequence();\n var overlappingLines = false;\n if (clickSequence.length > 2 && props.modeConfig && props.modeConfig.preventOverlappingLines) {\n var currentLine = (0, $7GKQS.lineString)([\n clickSequence[clickSequence.length - 1],\n event.mapCoords\n ]);\n var otherLines = (0, $7GKQS.lineString)($b9781794dbbee251$var$_toConsumableArray(clickSequence.slice(0, clickSequence.length - 1)));\n var intersectingPoints = (0, $b9781794dbbee251$var$_lineIntersect[\"default\"])(currentLine, otherLines);\n if (intersectingPoints.features.length > 0) overlappingLines = true;\n }\n var positionAdded = false;\n if (!clickedEditHandle && !overlappingLines) {\n // Don't add another point right next to an existing one\n this.addClickSequence(event);\n positionAdded = true;\n }\n if (clickSequence.length > 2 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[0] === 0 || clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1)) {\n // They clicked the first or last point (or double-clicked), so complete the polygon\n // Remove the hovered position\n var polygonToAdd = {\n type: \"Polygon\",\n coordinates: [\n [].concat($b9781794dbbee251$var$_toConsumableArray(clickSequence), [\n clickSequence[0]\n ])\n ]\n };\n this.resetClickSequence();\n var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);\n if (editAction) props.onEdit(editAction);\n } else if (positionAdded) // new tentative point\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: \"addTentativePosition\",\n editContext: {\n position: event.mapCoords\n }\n });\n }\n },\n {\n key: \"handleKeyUp\",\n value: function handleKeyUp(event, props) {\n if (event.key === \"Enter\") {\n var clickSequence = this.getClickSequence();\n if (clickSequence.length > 2) {\n var polygonToAdd = {\n type: \"Polygon\",\n coordinates: [\n [].concat($b9781794dbbee251$var$_toConsumableArray(clickSequence), [\n clickSequence[0]\n ])\n ]\n };\n this.resetClickSequence();\n var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);\n if (editAction) props.onEdit(editAction);\n }\n }\n }\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor(\"cell\");\n $b9781794dbbee251$var$_get($b9781794dbbee251$var$_getPrototypeOf(DrawPolygonMode.prototype), \"handlePointerMove\", this).call(this, event, props);\n }\n }\n ]);\n return DrawPolygonMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.DrawPolygonMode = $b9781794dbbee251$var$DrawPolygonMode;\n\n});\n\nparcelRegister(\"4pNaf\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.DrawRectangleMode = void 0;\n\nvar $336fa23499c19762$var$_bboxPolygon = $336fa23499c19762$var$_interopRequireDefault((parcelRequire(\"e9fnE\")));\n\nvar $74Uyk = parcelRequire(\"74Uyk\");\nfunction $336fa23499c19762$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $336fa23499c19762$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $336fa23499c19762$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $336fa23499c19762$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $336fa23499c19762$var$_typeof(obj);\n}\nfunction $336fa23499c19762$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $336fa23499c19762$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $336fa23499c19762$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $336fa23499c19762$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $336fa23499c19762$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $336fa23499c19762$var$_createSuper(Derived) {\n return function() {\n var Super = $336fa23499c19762$var$_getPrototypeOf(Derived), result;\n if ($336fa23499c19762$var$_isNativeReflectConstruct()) {\n var NewTarget = $336fa23499c19762$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $336fa23499c19762$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $336fa23499c19762$var$_possibleConstructorReturn(self, call) {\n if (call && ($336fa23499c19762$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $336fa23499c19762$var$_assertThisInitialized(self);\n}\nfunction $336fa23499c19762$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $336fa23499c19762$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $336fa23499c19762$var$_getPrototypeOf(o) {\n $336fa23499c19762$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $336fa23499c19762$var$_getPrototypeOf(o);\n}\nfunction $336fa23499c19762$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $336fa23499c19762$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $336fa23499c19762$var$_setPrototypeOf(o, p) {\n $336fa23499c19762$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $336fa23499c19762$var$_setPrototypeOf(o, p);\n}\nvar $336fa23499c19762$var$DrawRectangleMode = /*#__PURE__*/ function(_TwoClickPolygonMode) {\n $336fa23499c19762$var$_inherits(DrawRectangleMode, _TwoClickPolygonMode);\n var _super = $336fa23499c19762$var$_createSuper(DrawRectangleMode);\n function DrawRectangleMode() {\n $336fa23499c19762$var$_classCallCheck(this, DrawRectangleMode);\n return _super.apply(this, arguments);\n }\n $336fa23499c19762$var$_createClass(DrawRectangleMode, [\n {\n key: \"getTwoClickPolygon\",\n value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n var rectangle = (0, $336fa23499c19762$var$_bboxPolygon[\"default\"])([\n coord1[0],\n coord1[1],\n coord2[0],\n coord2[1]\n ]);\n rectangle.properties = rectangle.properties || {};\n rectangle.properties.shape = \"Rectangle\"; // @ts-ignore\n return rectangle;\n }\n }\n ]);\n return DrawRectangleMode;\n}($74Uyk.TwoClickPolygonMode);\nmodule.exports.DrawRectangleMode = $336fa23499c19762$var$DrawRectangleMode;\n\n});\nparcelRegister(\"74Uyk\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.TwoClickPolygonMode = void 0;\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\nfunction $5274c6547d82efaf$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $5274c6547d82efaf$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $5274c6547d82efaf$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $5274c6547d82efaf$var$_typeof(obj);\n}\nfunction $5274c6547d82efaf$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $5274c6547d82efaf$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $5274c6547d82efaf$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $5274c6547d82efaf$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $5274c6547d82efaf$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $5274c6547d82efaf$var$_get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) $5274c6547d82efaf$var$_get = Reflect.get;\n else $5274c6547d82efaf$var$_get = function _get(target, property, receiver) {\n var base = $5274c6547d82efaf$var$_superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) return desc.get.call(receiver);\n return desc.value;\n };\n return $5274c6547d82efaf$var$_get(target, property, receiver || target);\n}\nfunction $5274c6547d82efaf$var$_superPropBase(object, property) {\n while(!Object.prototype.hasOwnProperty.call(object, property)){\n object = $5274c6547d82efaf$var$_getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nfunction $5274c6547d82efaf$var$_createSuper(Derived) {\n return function() {\n var Super = $5274c6547d82efaf$var$_getPrototypeOf(Derived), result;\n if ($5274c6547d82efaf$var$_isNativeReflectConstruct()) {\n var NewTarget = $5274c6547d82efaf$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $5274c6547d82efaf$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $5274c6547d82efaf$var$_possibleConstructorReturn(self, call) {\n if (call && ($5274c6547d82efaf$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $5274c6547d82efaf$var$_assertThisInitialized(self);\n}\nfunction $5274c6547d82efaf$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $5274c6547d82efaf$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $5274c6547d82efaf$var$_getPrototypeOf(o) {\n $5274c6547d82efaf$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $5274c6547d82efaf$var$_getPrototypeOf(o);\n}\nfunction $5274c6547d82efaf$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $5274c6547d82efaf$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $5274c6547d82efaf$var$_setPrototypeOf(o, p) {\n $5274c6547d82efaf$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $5274c6547d82efaf$var$_setPrototypeOf(o, p);\n}\nvar $5274c6547d82efaf$var$TwoClickPolygonMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $5274c6547d82efaf$var$_inherits(TwoClickPolygonMode, _GeoJsonEditMode);\n var _super = $5274c6547d82efaf$var$_createSuper(TwoClickPolygonMode);\n function TwoClickPolygonMode() {\n $5274c6547d82efaf$var$_classCallCheck(this, TwoClickPolygonMode);\n return _super.apply(this, arguments);\n }\n $5274c6547d82efaf$var$_createClass(TwoClickPolygonMode, [\n {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n if (props.modeConfig && props.modeConfig.dragToDraw) // handled in drag handlers\n return;\n this.addClickSequence(event);\n this.checkAndFinishPolygon(props);\n }\n },\n {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n if (!props.modeConfig || !props.modeConfig.dragToDraw) // handled in click handlers\n return;\n this.addClickSequence(event);\n event.cancelPan();\n }\n },\n {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n if (!props.modeConfig || !props.modeConfig.dragToDraw) // handled in click handlers\n return;\n this.addClickSequence(event);\n this.checkAndFinishPolygon(props);\n }\n },\n {\n key: \"checkAndFinishPolygon\",\n value: function checkAndFinishPolygon(props) {\n var clickSequence = this.getClickSequence();\n var tentativeFeature = this.getTentativeGuide(props);\n if (clickSequence.length > 1 && tentativeFeature && tentativeFeature.geometry.type === \"Polygon\") {\n var feature = {\n type: \"Feature\",\n properties: {\n shape: tentativeFeature.properties.shape\n },\n geometry: {\n type: \"Polygon\",\n coordinates: tentativeFeature.geometry.coordinates\n }\n };\n var editAction = this.getAddFeatureOrBooleanPolygonAction(feature, props);\n this.resetClickSequence();\n if (editAction) props.onEdit(editAction);\n }\n }\n },\n {\n key: \"getGuides\",\n value: function getGuides(props) {\n var lastPointerMoveEvent = props.lastPointerMoveEvent, modeConfig = props.modeConfig;\n var clickSequence = this.getClickSequence();\n var guides = {\n type: \"FeatureCollection\",\n features: []\n };\n if (clickSequence.length === 0) // nothing to do yet\n return guides;\n var corner1 = clickSequence[0];\n var corner2 = lastPointerMoveEvent.mapCoords;\n var polygon = this.getTwoClickPolygon(corner1, corner2, modeConfig);\n if (polygon) guides.features.push({\n type: \"Feature\",\n properties: {\n shape: polygon.properties && polygon.properties.shape,\n guideType: \"tentative\"\n },\n geometry: polygon.geometry\n });\n return guides;\n }\n },\n {\n key: \"getTwoClickPolygon\",\n value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n return null;\n }\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor(\"cell\");\n $5274c6547d82efaf$var$_get($5274c6547d82efaf$var$_getPrototypeOf(TwoClickPolygonMode.prototype), \"handlePointerMove\", this).call(this, event, props);\n }\n },\n {\n key: \"createTentativeFeature\",\n value: function createTentativeFeature(props) {\n var lastPointerMoveEvent = props.lastPointerMoveEvent;\n var clickSequence = this.getClickSequence();\n var lastCoords = lastPointerMoveEvent ? [\n lastPointerMoveEvent.mapCoords\n ] : [];\n var tentativeFeature;\n if (clickSequence.length === 1) tentativeFeature = this.getTwoClickPolygon(clickSequence[0], lastCoords[0], props.modeConfig);\n return tentativeFeature;\n }\n }\n ]);\n return TwoClickPolygonMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.TwoClickPolygonMode = $5274c6547d82efaf$var$TwoClickPolygonMode;\n\n});\n\n\nparcelRegister(\"87lGF\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.DrawSquareMode = void 0;\n\nvar $5e8fcccd569d17b3$var$_bboxPolygon = $5e8fcccd569d17b3$var$_interopRequireDefault((parcelRequire(\"e9fnE\")));\n\nvar $5e8fcccd569d17b3$var$_distance = $5e8fcccd569d17b3$var$_interopRequireDefault((parcelRequire(\"b5wF2\")));\n\nvar $5e8fcccd569d17b3$var$_along = $5e8fcccd569d17b3$var$_interopRequireDefault((parcelRequire(\"ekWQM\")));\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $74Uyk = parcelRequire(\"74Uyk\");\nfunction $5e8fcccd569d17b3$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $5e8fcccd569d17b3$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $5e8fcccd569d17b3$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $5e8fcccd569d17b3$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $5e8fcccd569d17b3$var$_typeof(obj);\n}\nfunction $5e8fcccd569d17b3$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $5e8fcccd569d17b3$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $5e8fcccd569d17b3$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $5e8fcccd569d17b3$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $5e8fcccd569d17b3$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $5e8fcccd569d17b3$var$_createSuper(Derived) {\n return function() {\n var Super = $5e8fcccd569d17b3$var$_getPrototypeOf(Derived), result;\n if ($5e8fcccd569d17b3$var$_isNativeReflectConstruct()) {\n var NewTarget = $5e8fcccd569d17b3$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $5e8fcccd569d17b3$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $5e8fcccd569d17b3$var$_possibleConstructorReturn(self, call) {\n if (call && ($5e8fcccd569d17b3$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $5e8fcccd569d17b3$var$_assertThisInitialized(self);\n}\nfunction $5e8fcccd569d17b3$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $5e8fcccd569d17b3$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $5e8fcccd569d17b3$var$_getPrototypeOf(o) {\n $5e8fcccd569d17b3$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $5e8fcccd569d17b3$var$_getPrototypeOf(o);\n}\nfunction $5e8fcccd569d17b3$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $5e8fcccd569d17b3$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $5e8fcccd569d17b3$var$_setPrototypeOf(o, p) {\n $5e8fcccd569d17b3$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $5e8fcccd569d17b3$var$_setPrototypeOf(o, p);\n}\nvar $5e8fcccd569d17b3$var$DrawSquareMode = /*#__PURE__*/ function(_TwoClickPolygonMode) {\n $5e8fcccd569d17b3$var$_inherits(DrawSquareMode, _TwoClickPolygonMode);\n var _super = $5e8fcccd569d17b3$var$_createSuper(DrawSquareMode);\n function DrawSquareMode() {\n $5e8fcccd569d17b3$var$_classCallCheck(this, DrawSquareMode);\n return _super.apply(this, arguments);\n }\n $5e8fcccd569d17b3$var$_createClass(DrawSquareMode, [\n {\n key: \"getTwoClickPolygon\",\n value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n // get the coordinates of the other two rectangle vertices\n var coord3 = [\n coord2[0],\n coord1[1]\n ];\n var coord4 = [\n coord1[0],\n coord2[1]\n ]; // determine the shortest distance to the origin, which will be the length of each square side\n var distance1 = (0, $5e8fcccd569d17b3$var$_distance[\"default\"])((0, $7GKQS.point)(coord3), (0, $7GKQS.point)(coord1));\n var distance2 = (0, $5e8fcccd569d17b3$var$_distance[\"default\"])((0, $7GKQS.point)(coord4), (0, $7GKQS.point)(coord1));\n var shortestDistance = distance1 <= distance2 ? distance1 : distance2; // determine which coordinate pair of the two is closest to the origin\n var closestPoint = distance1 <= distance2 ? coord3 : coord4; // create a linestring which will used to locate the second square vertex\n var line = (0, $7GKQS.lineString)([\n closestPoint,\n coord2\n ]); // get the coordinates of the second square vertex\n var newPoint = (0, $5e8fcccd569d17b3$var$_along[\"default\"])(line, shortestDistance);\n var corner = newPoint.geometry.coordinates;\n var square = (0, $5e8fcccd569d17b3$var$_bboxPolygon[\"default\"])([\n coord1[0],\n coord1[1],\n corner[0],\n corner[1]\n ]);\n square.properties = square.properties || {};\n square.properties.shape = \"Square\"; // @ts-ignore\n return square;\n }\n }\n ]);\n return DrawSquareMode;\n}($74Uyk.TwoClickPolygonMode);\nmodule.exports.DrawSquareMode = $5e8fcccd569d17b3$var$DrawSquareMode;\n\n});\nparcelRegister(\"ekWQM\", function(module, exports) {\n\n$parcel$defineInteropFlag(module.exports);\n\n$parcel$export(module.exports, \"default\", function () { return $a70095645efd1544$export$2e2bcd8739ae039; });\n\nvar $g8zlF = parcelRequire(\"g8zlF\");\n\nvar $eVN5t = parcelRequire(\"eVN5t\");\n\nvar $lghTP = parcelRequire(\"lghTP\");\n\nvar $geeei = parcelRequire(\"geeei\");\n\nvar $4ILYg = parcelRequire(\"4ILYg\");\nfunction $a70095645efd1544$export$2e2bcd8739ae039(line, distance, options) {\n if (options === void 0) options = {};\n // Get Coords\n var geom = (0, $4ILYg.getGeom)(line);\n var coords = geom.coordinates;\n var travelled = 0;\n for(var i = 0; i < coords.length; i++){\n if (distance >= travelled && i === coords.length - 1) break;\n else if (travelled >= distance) {\n var overshot = distance - travelled;\n if (!overshot) return (0, $geeei.point)(coords[i]);\n else {\n var direction = (0, $g8zlF.default)(coords[i], coords[i - 1]) - 180;\n var interpolated = (0, $eVN5t.default)(coords[i], overshot, direction, options);\n return interpolated;\n }\n } else travelled += (0, $lghTP.default)(coords[i], coords[i + 1], options);\n }\n return (0, $geeei.point)(coords[coords.length - 1]);\n}\n\n});\nparcelRegister(\"g8zlF\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $bbf8d02eba7f0737$export$2e2bcd8739ae039; });\n\nvar $geeei = parcelRequire(\"geeei\");\n\nvar $4ILYg = parcelRequire(\"4ILYg\");\nfunction $bbf8d02eba7f0737$export$2e2bcd8739ae039(start, end, options) {\n if (options === void 0) options = {};\n // Reverse calculation\n if (options.final === true) return $bbf8d02eba7f0737$var$calculateFinalBearing(start, end);\n var coordinates1 = (0, $4ILYg.getCoord)(start);\n var coordinates2 = (0, $4ILYg.getCoord)(end);\n var lon1 = (0, $geeei.degreesToRadians)(coordinates1[0]);\n var lon2 = (0, $geeei.degreesToRadians)(coordinates2[0]);\n var lat1 = (0, $geeei.degreesToRadians)(coordinates1[1]);\n var lat2 = (0, $geeei.degreesToRadians)(coordinates2[1]);\n var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n var b = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n return (0, $geeei.radiansToDegrees)(Math.atan2(a, b));\n}\n/**\n * Calculates Final Bearing\n *\n * @private\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @returns {number} bearing\n */ function $bbf8d02eba7f0737$var$calculateFinalBearing(start, end) {\n // Swap start & end\n var bear = $bbf8d02eba7f0737$export$2e2bcd8739ae039(end, start);\n bear = (bear + 180) % 360;\n return bear;\n}\n\n});\nparcelRegister(\"geeei\", function(module, exports) {\n\n$parcel$export(module.exports, \"point\", function () { return $bd08fddf02b8d754$export$105684a3041cb6f3; });\n$parcel$export(module.exports, \"isNumber\", function () { return $bd08fddf02b8d754$export$7e4aa119212bc614; });\n$parcel$export(module.exports, \"radiansToLength\", function () { return $bd08fddf02b8d754$export$f234631d6a2eedf8; });\n$parcel$export(module.exports, \"lengthToRadians\", function () { return $bd08fddf02b8d754$export$a2280f7debae8f10; });\n$parcel$export(module.exports, \"radiansToDegrees\", function () { return $bd08fddf02b8d754$export$c41dd2a8460d3196; });\n$parcel$export(module.exports, \"degreesToRadians\", function () { return $bd08fddf02b8d754$export$c9fcf1a7df975d78; });\n/**\n * @module helpers\n */ /**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */ var $bd08fddf02b8d754$export$e3a1ee0e9945697f = 6371008.8;\nvar $bd08fddf02b8d754$export$f929e47acbed771a = {\n centimeters: $bd08fddf02b8d754$export$e3a1ee0e9945697f * 100,\n centimetres: $bd08fddf02b8d754$export$e3a1ee0e9945697f * 100,\n degrees: $bd08fddf02b8d754$export$e3a1ee0e9945697f / 111325,\n feet: $bd08fddf02b8d754$export$e3a1ee0e9945697f * 3.28084,\n inches: $bd08fddf02b8d754$export$e3a1ee0e9945697f * 39.37,\n kilometers: $bd08fddf02b8d754$export$e3a1ee0e9945697f / 1000,\n kilometres: $bd08fddf02b8d754$export$e3a1ee0e9945697f / 1000,\n meters: $bd08fddf02b8d754$export$e3a1ee0e9945697f,\n metres: $bd08fddf02b8d754$export$e3a1ee0e9945697f,\n miles: $bd08fddf02b8d754$export$e3a1ee0e9945697f / 1609.344,\n millimeters: $bd08fddf02b8d754$export$e3a1ee0e9945697f * 1000,\n millimetres: $bd08fddf02b8d754$export$e3a1ee0e9945697f * 1000,\n nauticalmiles: $bd08fddf02b8d754$export$e3a1ee0e9945697f / 1852,\n radians: 1,\n yards: $bd08fddf02b8d754$export$e3a1ee0e9945697f * 1.0936\n};\nvar $bd08fddf02b8d754$export$95cef4899be7420 = {\n centimeters: 100,\n centimetres: 100,\n degrees: 1 / 111325,\n feet: 3.28084,\n inches: 39.37,\n kilometers: 0.001,\n kilometres: 0.001,\n meters: 1,\n metres: 1,\n miles: 1 / 1609.344,\n millimeters: 1000,\n millimetres: 1000,\n nauticalmiles: 1 / 1852,\n radians: 1 / $bd08fddf02b8d754$export$e3a1ee0e9945697f,\n yards: 1.0936133\n};\nvar $bd08fddf02b8d754$export$44665ce4f7f4c82b = {\n acres: 0.000247105,\n centimeters: 10000,\n centimetres: 10000,\n feet: 10.763910417,\n hectares: 0.0001,\n inches: 1550.003100006,\n kilometers: 0.000001,\n kilometres: 0.000001,\n meters: 1,\n metres: 1,\n miles: 3.86e-7,\n millimeters: 1000000,\n millimetres: 1000000,\n yards: 1.195990046\n};\nfunction $bd08fddf02b8d754$export$ced6ed16dfd6a264(geom, properties, options) {\n if (options === void 0) options = {};\n var feat = {\n type: \"Feature\"\n };\n if (options.id === 0 || options.id) feat.id = options.id;\n if (options.bbox) feat.bbox = options.bbox;\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nfunction $bd08fddf02b8d754$export$42a7622cbf932bb(type, coordinates, _options) {\n if (_options === void 0) _options = {};\n switch(type){\n case \"Point\":\n return $bd08fddf02b8d754$export$105684a3041cb6f3(coordinates).geometry;\n case \"LineString\":\n return $bd08fddf02b8d754$export$98ec381bb06902c3(coordinates).geometry;\n case \"Polygon\":\n return $bd08fddf02b8d754$export$b7b19aa0ee06c73(coordinates).geometry;\n case \"MultiPoint\":\n return $bd08fddf02b8d754$export$335fc20ed6b6dbb6(coordinates).geometry;\n case \"MultiLineString\":\n return $bd08fddf02b8d754$export$bd735230309493da(coordinates).geometry;\n case \"MultiPolygon\":\n return $bd08fddf02b8d754$export$79bd594da96638d3(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\nfunction $bd08fddf02b8d754$export$105684a3041cb6f3(coordinates, properties, options) {\n if (options === void 0) options = {};\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be at least 2 numbers long\");\n if (!$bd08fddf02b8d754$export$7e4aa119212bc614(coordinates[0]) || !$bd08fddf02b8d754$export$7e4aa119212bc614(coordinates[1])) throw new Error(\"coordinates must contain numbers\");\n var geom = {\n type: \"Point\",\n coordinates: coordinates\n };\n return $bd08fddf02b8d754$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $bd08fddf02b8d754$export$9f048bf86ee2e9d2(coordinates, properties, options) {\n if (options === void 0) options = {};\n return $bd08fddf02b8d754$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $bd08fddf02b8d754$export$105684a3041cb6f3(coords, properties);\n }), options);\n}\nfunction $bd08fddf02b8d754$export$b7b19aa0ee06c73(coordinates, properties, options) {\n if (options === void 0) options = {};\n for(var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++){\n var ring = coordinates_1[_i];\n if (ring.length < 4) throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n for(var j = 0; j < ring[ring.length - 1].length; j++){\n // Check if first point of Polygon contains two numbers\n if (ring[ring.length - 1][j] !== ring[0][j]) throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n var geom = {\n type: \"Polygon\",\n coordinates: coordinates\n };\n return $bd08fddf02b8d754$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $bd08fddf02b8d754$export$8869eb68a940f9c2(coordinates, properties, options) {\n if (options === void 0) options = {};\n return $bd08fddf02b8d754$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $bd08fddf02b8d754$export$b7b19aa0ee06c73(coords, properties);\n }), options);\n}\nfunction $bd08fddf02b8d754$export$98ec381bb06902c3(coordinates, properties, options) {\n if (options === void 0) options = {};\n if (coordinates.length < 2) throw new Error(\"coordinates must be an array of two or more positions\");\n var geom = {\n type: \"LineString\",\n coordinates: coordinates\n };\n return $bd08fddf02b8d754$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $bd08fddf02b8d754$export$74f7306c35db993f(coordinates, properties, options) {\n if (options === void 0) options = {};\n return $bd08fddf02b8d754$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $bd08fddf02b8d754$export$98ec381bb06902c3(coords, properties);\n }), options);\n}\nfunction $bd08fddf02b8d754$export$4717c67ac3e5e04d(features, options) {\n if (options === void 0) options = {};\n var fc = {\n type: \"FeatureCollection\"\n };\n if (options.id) fc.id = options.id;\n if (options.bbox) fc.bbox = options.bbox;\n fc.features = features;\n return fc;\n}\nfunction $bd08fddf02b8d754$export$bd735230309493da(coordinates, properties, options) {\n if (options === void 0) options = {};\n var geom = {\n type: \"MultiLineString\",\n coordinates: coordinates\n };\n return $bd08fddf02b8d754$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $bd08fddf02b8d754$export$335fc20ed6b6dbb6(coordinates, properties, options) {\n if (options === void 0) options = {};\n var geom = {\n type: \"MultiPoint\",\n coordinates: coordinates\n };\n return $bd08fddf02b8d754$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $bd08fddf02b8d754$export$79bd594da96638d3(coordinates, properties, options) {\n if (options === void 0) options = {};\n var geom = {\n type: \"MultiPolygon\",\n coordinates: coordinates\n };\n return $bd08fddf02b8d754$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $bd08fddf02b8d754$export$9242f1e18250422a(geometries, properties, options) {\n if (options === void 0) options = {};\n var geom = {\n type: \"GeometryCollection\",\n geometries: geometries\n };\n return $bd08fddf02b8d754$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $bd08fddf02b8d754$export$2077e0241d6afd3c(num, precision) {\n if (precision === void 0) precision = 0;\n if (precision && !(precision >= 0)) throw new Error(\"precision must be a positive number\");\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nfunction $bd08fddf02b8d754$export$f234631d6a2eedf8(radians, units) {\n if (units === void 0) units = \"kilometers\";\n var factor = $bd08fddf02b8d754$export$f929e47acbed771a[units];\n if (!factor) throw new Error(units + \" units is invalid\");\n return radians * factor;\n}\nfunction $bd08fddf02b8d754$export$a2280f7debae8f10(distance, units) {\n if (units === void 0) units = \"kilometers\";\n var factor = $bd08fddf02b8d754$export$f929e47acbed771a[units];\n if (!factor) throw new Error(units + \" units is invalid\");\n return distance / factor;\n}\nfunction $bd08fddf02b8d754$export$c7a138e00a89bd01(distance, units) {\n return $bd08fddf02b8d754$export$c41dd2a8460d3196($bd08fddf02b8d754$export$a2280f7debae8f10(distance, units));\n}\nfunction $bd08fddf02b8d754$export$f2077d29c73b33ec(bearing) {\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\nfunction $bd08fddf02b8d754$export$c41dd2a8460d3196(radians) {\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\nfunction $bd08fddf02b8d754$export$c9fcf1a7df975d78(degrees) {\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\nfunction $bd08fddf02b8d754$export$ea1536a749e80563(length, originalUnit, finalUnit) {\n if (originalUnit === void 0) originalUnit = \"kilometers\";\n if (finalUnit === void 0) finalUnit = \"kilometers\";\n if (!(length >= 0)) throw new Error(\"length must be a positive number\");\n return $bd08fddf02b8d754$export$f234631d6a2eedf8($bd08fddf02b8d754$export$a2280f7debae8f10(length, originalUnit), finalUnit);\n}\nfunction $bd08fddf02b8d754$export$2e65e2c759f7e341(area, originalUnit, finalUnit) {\n if (originalUnit === void 0) originalUnit = \"meters\";\n if (finalUnit === void 0) finalUnit = \"kilometers\";\n if (!(area >= 0)) throw new Error(\"area must be a positive number\");\n var startFactor = $bd08fddf02b8d754$export$44665ce4f7f4c82b[originalUnit];\n if (!startFactor) throw new Error(\"invalid original units\");\n var finalFactor = $bd08fddf02b8d754$export$44665ce4f7f4c82b[finalUnit];\n if (!finalFactor) throw new Error(\"invalid final units\");\n return area / startFactor * finalFactor;\n}\nfunction $bd08fddf02b8d754$export$7e4aa119212bc614(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nfunction $bd08fddf02b8d754$export$a6cdc56e425d0d0a(input) {\n return !!input && input.constructor === Object;\n}\nfunction $bd08fddf02b8d754$export$28ac7bb8f5309bea(bbox) {\n if (!bbox) throw new Error(\"bbox is required\");\n if (!Array.isArray(bbox)) throw new Error(\"bbox must be an Array\");\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n bbox.forEach(function(num) {\n if (!$bd08fddf02b8d754$export$7e4aa119212bc614(num)) throw new Error(\"bbox must only contain numbers\");\n });\n}\nfunction $bd08fddf02b8d754$export$f35f128fd59ea256(id) {\n if (!id) throw new Error(\"id is required\");\n if ([\n \"string\",\n \"number\"\n ].indexOf(typeof id) === -1) throw new Error(\"id must be a number or a string\");\n}\n\n});\n\nparcelRegister(\"4ILYg\", function(module, exports) {\n\n$parcel$export(module.exports, \"getCoord\", function () { return $37007b88e54f38f3$export$b4663c6e64a770bc; });\n$parcel$export(module.exports, \"getGeom\", function () { return $37007b88e54f38f3$export$b8f320eb9549c8fd; });\n\nvar $geeei = parcelRequire(\"geeei\");\nfunction $37007b88e54f38f3$export$b4663c6e64a770bc(coord) {\n if (!coord) throw new Error(\"coord is required\");\n if (!Array.isArray(coord)) {\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") return coord.geometry.coordinates;\n if (coord.type === \"Point\") return coord.coordinates;\n }\n if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) return coord;\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nfunction $37007b88e54f38f3$export$39e042fd83f1b62e(coords) {\n if (Array.isArray(coords)) return coords;\n // Feature\n if (coords.type === \"Feature\") {\n if (coords.geometry !== null) return coords.geometry.coordinates;\n } else {\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n }\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nfunction $37007b88e54f38f3$export$ab82360ed81b09b9(coordinates) {\n if (coordinates.length > 1 && (0, $geeei.isNumber)(coordinates[0]) && (0, $geeei.isNumber)(coordinates[1])) return true;\n if (Array.isArray(coordinates[0]) && coordinates[0].length) return $37007b88e54f38f3$export$ab82360ed81b09b9(coordinates[0]);\n throw new Error(\"coordinates must only contain numbers\");\n}\nfunction $37007b88e54f38f3$export$329ecc560bd873a7(value, type, name) {\n if (!type || !name) throw new Error(\"type and name required\");\n if (!value || value.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type);\n}\nfunction $37007b88e54f38f3$export$8b96d9ca92084402(feature, type, name) {\n if (!feature) throw new Error(\"No feature passed\");\n if (!name) throw new Error(\".featureOf() requires a name\");\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n}\nfunction $37007b88e54f38f3$export$bcf04c9d01e728b6(featureCollection, type, name) {\n if (!featureCollection) throw new Error(\"No featureCollection passed\");\n if (!name) throw new Error(\".collectionOf() requires a name\");\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n for(var _i = 0, _a = featureCollection.features; _i < _a.length; _i++){\n var feature = _a[_i];\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n }\n}\nfunction $37007b88e54f38f3$export$b8f320eb9549c8fd(geojson) {\n if (geojson.type === \"Feature\") return geojson.geometry;\n return geojson;\n}\nfunction $37007b88e54f38f3$export$e2b5c5db9e2009fd(geojson, _name) {\n if (geojson.type === \"FeatureCollection\") return \"FeatureCollection\";\n if (geojson.type === \"GeometryCollection\") return \"GeometryCollection\";\n if (geojson.type === \"Feature\" && geojson.geometry !== null) return geojson.geometry.type;\n return geojson.type;\n}\n\n});\n\n\nparcelRegister(\"eVN5t\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $adec774a48c34f45$export$2e2bcd8739ae039; });\n// http://en.wikipedia.org/wiki/Haversine_formula\n// http://www.movable-type.co.uk/scripts/latlong.html\n\nvar $geeei = parcelRequire(\"geeei\");\n\nvar $4ILYg = parcelRequire(\"4ILYg\");\nfunction $adec774a48c34f45$export$2e2bcd8739ae039(origin, distance, bearing, options) {\n if (options === void 0) options = {};\n // Handle input\n var coordinates1 = (0, $4ILYg.getCoord)(origin);\n var longitude1 = (0, $geeei.degreesToRadians)(coordinates1[0]);\n var latitude1 = (0, $geeei.degreesToRadians)(coordinates1[1]);\n var bearingRad = (0, $geeei.degreesToRadians)(bearing);\n var radians = (0, $geeei.lengthToRadians)(distance, options.units);\n // Main\n var latitude2 = Math.asin(Math.sin(latitude1) * Math.cos(radians) + Math.cos(latitude1) * Math.sin(radians) * Math.cos(bearingRad));\n var longitude2 = longitude1 + Math.atan2(Math.sin(bearingRad) * Math.sin(radians) * Math.cos(latitude1), Math.cos(radians) - Math.sin(latitude1) * Math.sin(latitude2));\n var lng = (0, $geeei.radiansToDegrees)(longitude2);\n var lat = (0, $geeei.radiansToDegrees)(latitude2);\n return (0, $geeei.point)([\n lng,\n lat\n ], options.properties);\n}\n\n});\n\nparcelRegister(\"lghTP\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $f7a8fa08ee1d17e2$export$2e2bcd8739ae039; });\n\nvar $4ILYg = parcelRequire(\"4ILYg\");\n\nvar $geeei = parcelRequire(\"geeei\");\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Calculates the distance between two {@link Point|points} in degrees, radians, miles, or kilometers.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name distance\n * @param {Coord | Point} from origin point or coordinate\n * @param {Coord | Point} to destination point or coordinate\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.distance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */ function $f7a8fa08ee1d17e2$var$distance(from, to, options) {\n if (options === void 0) options = {};\n var coordinates1 = (0, $4ILYg.getCoord)(from);\n var coordinates2 = (0, $4ILYg.getCoord)(to);\n var dLat = (0, $geeei.degreesToRadians)(coordinates2[1] - coordinates1[1]);\n var dLon = (0, $geeei.degreesToRadians)(coordinates2[0] - coordinates1[0]);\n var lat1 = (0, $geeei.degreesToRadians)(coordinates1[1]);\n var lat2 = (0, $geeei.degreesToRadians)(coordinates2[1]);\n var a = Math.pow(Math.sin(dLat / 2), 2) + Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n return (0, $geeei.radiansToLength)(2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)), options.units);\n}\nvar $f7a8fa08ee1d17e2$export$2e2bcd8739ae039 = $f7a8fa08ee1d17e2$var$distance;\n\n});\n\n\n\nparcelRegister(\"clLbb\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.DrawRectangleFromCenterMode = void 0;\n\nvar $8fdc0b10d34aad2c$var$_bboxPolygon = $8fdc0b10d34aad2c$var$_interopRequireDefault((parcelRequire(\"e9fnE\")));\n\nvar $74Uyk = parcelRequire(\"74Uyk\");\nfunction $8fdc0b10d34aad2c$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $8fdc0b10d34aad2c$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $8fdc0b10d34aad2c$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $8fdc0b10d34aad2c$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $8fdc0b10d34aad2c$var$_typeof(obj);\n}\nfunction $8fdc0b10d34aad2c$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $8fdc0b10d34aad2c$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $8fdc0b10d34aad2c$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $8fdc0b10d34aad2c$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $8fdc0b10d34aad2c$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $8fdc0b10d34aad2c$var$_createSuper(Derived) {\n return function() {\n var Super = $8fdc0b10d34aad2c$var$_getPrototypeOf(Derived), result;\n if ($8fdc0b10d34aad2c$var$_isNativeReflectConstruct()) {\n var NewTarget = $8fdc0b10d34aad2c$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $8fdc0b10d34aad2c$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $8fdc0b10d34aad2c$var$_possibleConstructorReturn(self, call) {\n if (call && ($8fdc0b10d34aad2c$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $8fdc0b10d34aad2c$var$_assertThisInitialized(self);\n}\nfunction $8fdc0b10d34aad2c$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $8fdc0b10d34aad2c$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $8fdc0b10d34aad2c$var$_getPrototypeOf(o) {\n $8fdc0b10d34aad2c$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $8fdc0b10d34aad2c$var$_getPrototypeOf(o);\n}\nfunction $8fdc0b10d34aad2c$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $8fdc0b10d34aad2c$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $8fdc0b10d34aad2c$var$_setPrototypeOf(o, p) {\n $8fdc0b10d34aad2c$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $8fdc0b10d34aad2c$var$_setPrototypeOf(o, p);\n}\nvar $8fdc0b10d34aad2c$var$DrawRectangleFromCenterMode = /*#__PURE__*/ function(_TwoClickPolygonMode) {\n $8fdc0b10d34aad2c$var$_inherits(DrawRectangleFromCenterMode, _TwoClickPolygonMode);\n var _super = $8fdc0b10d34aad2c$var$_createSuper(DrawRectangleFromCenterMode);\n function DrawRectangleFromCenterMode() {\n $8fdc0b10d34aad2c$var$_classCallCheck(this, DrawRectangleFromCenterMode);\n return _super.apply(this, arguments);\n }\n $8fdc0b10d34aad2c$var$_createClass(DrawRectangleFromCenterMode, [\n {\n key: \"getTwoClickPolygon\",\n value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n var longitude = coord1[0] > coord2[0] ? coord1[0] + Math.abs(coord1[0] - coord2[0]) : coord1[0] - Math.abs(coord1[0] - coord2[0]);\n var latitude = coord1[1] > coord2[1] ? coord1[1] + Math.abs(coord1[1] - coord2[1]) : coord1[1] - Math.abs(coord1[1] - coord2[1]);\n var rectangle = (0, $8fdc0b10d34aad2c$var$_bboxPolygon[\"default\"])([\n longitude,\n latitude,\n coord2[0],\n coord2[1]\n ]);\n rectangle.properties = rectangle.properties || {};\n rectangle.properties.shape = \"Rectangle\"; // @ts-ignore\n return rectangle;\n }\n }\n ]);\n return DrawRectangleFromCenterMode;\n}($74Uyk.TwoClickPolygonMode);\nmodule.exports.DrawRectangleFromCenterMode = $8fdc0b10d34aad2c$var$DrawRectangleFromCenterMode;\n\n});\n\nparcelRegister(\"iMVab\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.DrawSquareFromCenterMode = void 0;\n\nvar $dad90d1ab40ac83e$var$_bboxPolygon = $dad90d1ab40ac83e$var$_interopRequireDefault((parcelRequire(\"e9fnE\")));\n\nvar $dad90d1ab40ac83e$var$_distance = $dad90d1ab40ac83e$var$_interopRequireDefault((parcelRequire(\"b5wF2\")));\n\nvar $dad90d1ab40ac83e$var$_along = $dad90d1ab40ac83e$var$_interopRequireDefault((parcelRequire(\"ekWQM\")));\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $74Uyk = parcelRequire(\"74Uyk\");\nfunction $dad90d1ab40ac83e$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $dad90d1ab40ac83e$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $dad90d1ab40ac83e$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $dad90d1ab40ac83e$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $dad90d1ab40ac83e$var$_typeof(obj);\n}\nfunction $dad90d1ab40ac83e$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $dad90d1ab40ac83e$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $dad90d1ab40ac83e$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $dad90d1ab40ac83e$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $dad90d1ab40ac83e$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $dad90d1ab40ac83e$var$_createSuper(Derived) {\n return function() {\n var Super = $dad90d1ab40ac83e$var$_getPrototypeOf(Derived), result;\n if ($dad90d1ab40ac83e$var$_isNativeReflectConstruct()) {\n var NewTarget = $dad90d1ab40ac83e$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $dad90d1ab40ac83e$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $dad90d1ab40ac83e$var$_possibleConstructorReturn(self, call) {\n if (call && ($dad90d1ab40ac83e$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $dad90d1ab40ac83e$var$_assertThisInitialized(self);\n}\nfunction $dad90d1ab40ac83e$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $dad90d1ab40ac83e$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $dad90d1ab40ac83e$var$_getPrototypeOf(o) {\n $dad90d1ab40ac83e$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $dad90d1ab40ac83e$var$_getPrototypeOf(o);\n}\nfunction $dad90d1ab40ac83e$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $dad90d1ab40ac83e$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $dad90d1ab40ac83e$var$_setPrototypeOf(o, p) {\n $dad90d1ab40ac83e$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $dad90d1ab40ac83e$var$_setPrototypeOf(o, p);\n}\nvar $dad90d1ab40ac83e$var$DrawSquareFromCenterMode = /*#__PURE__*/ function(_TwoClickPolygonMode) {\n $dad90d1ab40ac83e$var$_inherits(DrawSquareFromCenterMode, _TwoClickPolygonMode);\n var _super = $dad90d1ab40ac83e$var$_createSuper(DrawSquareFromCenterMode);\n function DrawSquareFromCenterMode() {\n $dad90d1ab40ac83e$var$_classCallCheck(this, DrawSquareFromCenterMode);\n return _super.apply(this, arguments);\n }\n $dad90d1ab40ac83e$var$_createClass(DrawSquareFromCenterMode, [\n {\n key: \"getTwoClickPolygon\",\n value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n // get the coordinates of the other two rectangle vertices\n var coord3 = [\n coord2[0],\n coord1[1]\n ];\n var coord4 = [\n coord1[0],\n coord2[1]\n ]; // determine the shortest distance to the origin, which will be the length of each square side\n var distance1 = (0, $dad90d1ab40ac83e$var$_distance[\"default\"])((0, $7GKQS.point)(coord3), (0, $7GKQS.point)(coord1));\n var distance2 = (0, $dad90d1ab40ac83e$var$_distance[\"default\"])((0, $7GKQS.point)(coord4), (0, $7GKQS.point)(coord1));\n var shortestDistance = distance1 <= distance2 ? distance1 : distance2; // determine which coordinate pair of the two is closest to the origin\n var closestPoint = distance1 <= distance2 ? coord3 : coord4; // create a linestring which will used to locate the second square vertex\n var line = (0, $7GKQS.lineString)([\n closestPoint,\n coord2\n ]); // get the coordinates of the second square vertex\n var newPoint = (0, $dad90d1ab40ac83e$var$_along[\"default\"])(line, shortestDistance);\n var corner = newPoint.geometry.coordinates; // determine the longitude and latitude values of the opposite corner\n var longitude = coord1[0] > corner[0] ? coord1[0] + Math.abs(coord1[0] - corner[0]) : coord1[0] - Math.abs(coord1[0] - corner[0]);\n var latitude = coord1[1] > corner[1] ? coord1[1] + Math.abs(coord1[1] - corner[1]) : coord1[1] - Math.abs(coord1[1] - corner[1]);\n var square = (0, $dad90d1ab40ac83e$var$_bboxPolygon[\"default\"])([\n longitude,\n latitude,\n corner[0],\n corner[1]\n ]);\n square.properties = square.properties || {};\n square.properties.shape = \"Square\"; // @ts-ignore\n return square;\n }\n }\n ]);\n return DrawSquareFromCenterMode;\n}($74Uyk.TwoClickPolygonMode);\nmodule.exports.DrawSquareFromCenterMode = $dad90d1ab40ac83e$var$DrawSquareFromCenterMode;\n\n});\n\nparcelRegister(\"aS0fb\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.DrawCircleByDiameterMode = void 0;\n\nvar $7e9f22f624527ff4$var$_circle = $7e9f22f624527ff4$var$_interopRequireDefault((parcelRequire(\"lzQHn\")));\n\nvar $7e9f22f624527ff4$var$_distance = $7e9f22f624527ff4$var$_interopRequireDefault((parcelRequire(\"b5wF2\")));\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\n\nvar $74Uyk = parcelRequire(\"74Uyk\");\nfunction $7e9f22f624527ff4$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $7e9f22f624527ff4$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $7e9f22f624527ff4$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $7e9f22f624527ff4$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $7e9f22f624527ff4$var$_typeof(obj);\n}\nfunction $7e9f22f624527ff4$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $7e9f22f624527ff4$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $7e9f22f624527ff4$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $7e9f22f624527ff4$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $7e9f22f624527ff4$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $7e9f22f624527ff4$var$_createSuper(Derived) {\n return function() {\n var Super = $7e9f22f624527ff4$var$_getPrototypeOf(Derived), result;\n if ($7e9f22f624527ff4$var$_isNativeReflectConstruct()) {\n var NewTarget = $7e9f22f624527ff4$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $7e9f22f624527ff4$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $7e9f22f624527ff4$var$_possibleConstructorReturn(self, call) {\n if (call && ($7e9f22f624527ff4$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $7e9f22f624527ff4$var$_assertThisInitialized(self);\n}\nfunction $7e9f22f624527ff4$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $7e9f22f624527ff4$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $7e9f22f624527ff4$var$_getPrototypeOf(o) {\n $7e9f22f624527ff4$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $7e9f22f624527ff4$var$_getPrototypeOf(o);\n}\nfunction $7e9f22f624527ff4$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $7e9f22f624527ff4$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $7e9f22f624527ff4$var$_setPrototypeOf(o, p) {\n $7e9f22f624527ff4$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $7e9f22f624527ff4$var$_setPrototypeOf(o, p);\n}\nvar $7e9f22f624527ff4$var$DrawCircleByDiameterMode = /*#__PURE__*/ function(_TwoClickPolygonMode) {\n $7e9f22f624527ff4$var$_inherits(DrawCircleByDiameterMode, _TwoClickPolygonMode);\n var _super = $7e9f22f624527ff4$var$_createSuper(DrawCircleByDiameterMode);\n function DrawCircleByDiameterMode() {\n $7e9f22f624527ff4$var$_classCallCheck(this, DrawCircleByDiameterMode);\n return _super.apply(this, arguments);\n }\n $7e9f22f624527ff4$var$_createClass(DrawCircleByDiameterMode, [\n {\n key: \"getTwoClickPolygon\",\n value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n // Default turf value for circle is 64\n var _ref = modeConfig || {}, _ref$steps = _ref.steps, steps = _ref$steps === void 0 ? 64 : _ref$steps;\n var options = {\n steps: steps\n };\n if (steps < 4) {\n console.warn(\"Minimum steps to draw a circle is 4 \"); // eslint-disable-line no-console,no-undef\n options.steps = 4;\n }\n var centerCoordinates = (0, $1tPZO.getIntermediatePosition)(coord1, coord2);\n var radius = Math.max((0, $7e9f22f624527ff4$var$_distance[\"default\"])(coord1, centerCoordinates), 0.001);\n var geometry = (0, $7e9f22f624527ff4$var$_circle[\"default\"])(centerCoordinates, radius, options);\n geometry.properties = geometry.properties || {};\n geometry.properties.shape = \"Circle\";\n return geometry;\n }\n }\n ]);\n return DrawCircleByDiameterMode;\n}($74Uyk.TwoClickPolygonMode);\nmodule.exports.DrawCircleByDiameterMode = $7e9f22f624527ff4$var$DrawCircleByDiameterMode;\n\n});\n\nparcelRegister(\"ca4GA\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.DrawCircleFromCenterMode = void 0;\n\nvar $8daa0db6ba896d05$var$_circle = $8daa0db6ba896d05$var$_interopRequireDefault((parcelRequire(\"lzQHn\")));\n\nvar $8daa0db6ba896d05$var$_distance = $8daa0db6ba896d05$var$_interopRequireDefault((parcelRequire(\"b5wF2\")));\n\nvar $74Uyk = parcelRequire(\"74Uyk\");\nfunction $8daa0db6ba896d05$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $8daa0db6ba896d05$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $8daa0db6ba896d05$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $8daa0db6ba896d05$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $8daa0db6ba896d05$var$_typeof(obj);\n}\nfunction $8daa0db6ba896d05$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $8daa0db6ba896d05$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $8daa0db6ba896d05$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $8daa0db6ba896d05$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $8daa0db6ba896d05$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $8daa0db6ba896d05$var$_createSuper(Derived) {\n return function() {\n var Super = $8daa0db6ba896d05$var$_getPrototypeOf(Derived), result;\n if ($8daa0db6ba896d05$var$_isNativeReflectConstruct()) {\n var NewTarget = $8daa0db6ba896d05$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $8daa0db6ba896d05$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $8daa0db6ba896d05$var$_possibleConstructorReturn(self, call) {\n if (call && ($8daa0db6ba896d05$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $8daa0db6ba896d05$var$_assertThisInitialized(self);\n}\nfunction $8daa0db6ba896d05$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $8daa0db6ba896d05$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $8daa0db6ba896d05$var$_getPrototypeOf(o) {\n $8daa0db6ba896d05$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $8daa0db6ba896d05$var$_getPrototypeOf(o);\n}\nfunction $8daa0db6ba896d05$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $8daa0db6ba896d05$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $8daa0db6ba896d05$var$_setPrototypeOf(o, p) {\n $8daa0db6ba896d05$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $8daa0db6ba896d05$var$_setPrototypeOf(o, p);\n}\nvar $8daa0db6ba896d05$var$DrawCircleFromCenterMode = /*#__PURE__*/ function(_TwoClickPolygonMode) {\n $8daa0db6ba896d05$var$_inherits(DrawCircleFromCenterMode, _TwoClickPolygonMode);\n var _super = $8daa0db6ba896d05$var$_createSuper(DrawCircleFromCenterMode);\n function DrawCircleFromCenterMode() {\n $8daa0db6ba896d05$var$_classCallCheck(this, DrawCircleFromCenterMode);\n return _super.apply(this, arguments);\n }\n $8daa0db6ba896d05$var$_createClass(DrawCircleFromCenterMode, [\n {\n key: \"getTwoClickPolygon\",\n value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n // Default turf value for circle is 64\n var _ref = modeConfig || {}, _ref$steps = _ref.steps, steps = _ref$steps === void 0 ? 64 : _ref$steps;\n var options = {\n steps: steps\n };\n if (steps < 4) {\n console.warn(\"Minimum steps to draw a circle is 4 \"); // eslint-disable-line no-console,no-undef\n options.steps = 4;\n }\n var radius = Math.max((0, $8daa0db6ba896d05$var$_distance[\"default\"])(coord1, coord2), 0.001);\n var geometry = (0, $8daa0db6ba896d05$var$_circle[\"default\"])(coord1, radius, options);\n geometry.properties = geometry.properties || {};\n geometry.properties.shape = \"Circle\";\n return geometry;\n }\n }\n ]);\n return DrawCircleFromCenterMode;\n}($74Uyk.TwoClickPolygonMode);\nmodule.exports.DrawCircleFromCenterMode = $8daa0db6ba896d05$var$DrawCircleFromCenterMode;\n\n});\n\nparcelRegister(\"7sSbx\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.DrawEllipseByBoundingBoxMode = void 0;\n\nvar $56f52df8a7a124b7$var$_bboxPolygon = $56f52df8a7a124b7$var$_interopRequireDefault((parcelRequire(\"e9fnE\")));\n\nvar $56f52df8a7a124b7$var$_distance = $56f52df8a7a124b7$var$_interopRequireDefault((parcelRequire(\"b5wF2\")));\n\nvar $56f52df8a7a124b7$var$_ellipse = $56f52df8a7a124b7$var$_interopRequireDefault((parcelRequire(\"6dYcK\")));\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\n\nvar $74Uyk = parcelRequire(\"74Uyk\");\nfunction $56f52df8a7a124b7$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $56f52df8a7a124b7$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $56f52df8a7a124b7$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $56f52df8a7a124b7$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $56f52df8a7a124b7$var$_typeof(obj);\n}\nfunction $56f52df8a7a124b7$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $56f52df8a7a124b7$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $56f52df8a7a124b7$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $56f52df8a7a124b7$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $56f52df8a7a124b7$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $56f52df8a7a124b7$var$_createSuper(Derived) {\n return function() {\n var Super = $56f52df8a7a124b7$var$_getPrototypeOf(Derived), result;\n if ($56f52df8a7a124b7$var$_isNativeReflectConstruct()) {\n var NewTarget = $56f52df8a7a124b7$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $56f52df8a7a124b7$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $56f52df8a7a124b7$var$_possibleConstructorReturn(self, call) {\n if (call && ($56f52df8a7a124b7$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $56f52df8a7a124b7$var$_assertThisInitialized(self);\n}\nfunction $56f52df8a7a124b7$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $56f52df8a7a124b7$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $56f52df8a7a124b7$var$_getPrototypeOf(o) {\n $56f52df8a7a124b7$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $56f52df8a7a124b7$var$_getPrototypeOf(o);\n}\nfunction $56f52df8a7a124b7$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $56f52df8a7a124b7$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $56f52df8a7a124b7$var$_setPrototypeOf(o, p) {\n $56f52df8a7a124b7$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $56f52df8a7a124b7$var$_setPrototypeOf(o, p);\n}\nvar $56f52df8a7a124b7$var$DrawEllipseByBoundingBoxMode = /*#__PURE__*/ function(_TwoClickPolygonMode) {\n $56f52df8a7a124b7$var$_inherits(DrawEllipseByBoundingBoxMode, _TwoClickPolygonMode);\n var _super = $56f52df8a7a124b7$var$_createSuper(DrawEllipseByBoundingBoxMode);\n function DrawEllipseByBoundingBoxMode() {\n $56f52df8a7a124b7$var$_classCallCheck(this, DrawEllipseByBoundingBoxMode);\n return _super.apply(this, arguments);\n }\n $56f52df8a7a124b7$var$_createClass(DrawEllipseByBoundingBoxMode, [\n {\n key: \"getTwoClickPolygon\",\n value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n var minX = Math.min(coord1[0], coord2[0]);\n var minY = Math.min(coord1[1], coord2[1]);\n var maxX = Math.max(coord1[0], coord2[0]);\n var maxY = Math.max(coord1[1], coord2[1]);\n var polygonPoints = (0, $56f52df8a7a124b7$var$_bboxPolygon[\"default\"])([\n minX,\n minY,\n maxX,\n maxY\n ]).geometry.coordinates[0];\n var centerCoordinates = (0, $1tPZO.getIntermediatePosition)(coord1, coord2);\n var xSemiAxis = Math.max((0, $56f52df8a7a124b7$var$_distance[\"default\"])((0, $7GKQS.point)(polygonPoints[0]), (0, $7GKQS.point)(polygonPoints[1])), 0.001);\n var ySemiAxis = Math.max((0, $56f52df8a7a124b7$var$_distance[\"default\"])((0, $7GKQS.point)(polygonPoints[0]), (0, $7GKQS.point)(polygonPoints[3])), 0.001); // @ts-ignore\n return (0, $56f52df8a7a124b7$var$_ellipse[\"default\"])(centerCoordinates, xSemiAxis, ySemiAxis);\n }\n }\n ]);\n return DrawEllipseByBoundingBoxMode;\n}($74Uyk.TwoClickPolygonMode);\nmodule.exports.DrawEllipseByBoundingBoxMode = $56f52df8a7a124b7$var$DrawEllipseByBoundingBoxMode;\n\n});\nparcelRegister(\"6dYcK\", function(module, exports) {\n\n$parcel$defineInteropFlag(module.exports);\n\n$parcel$export(module.exports, \"default\", function () { return $4882a861852a1e88$export$2e2bcd8739ae039; });\n\nvar $kTfmD = parcelRequire(\"kTfmD\");\n\nvar $35NAj = parcelRequire(\"35NAj\");\n\nvar $j6dRg = parcelRequire(\"j6dRg\");\n\nvar $kbGTO = parcelRequire(\"kbGTO\");\n/**\n * Takes a {@link Point} and calculates the ellipse polygon given two semi-axes expressed in variable units and steps for precision.\n *\n * @param {Coord} center center point\n * @param {number} xSemiAxis semi (major) axis of the ellipse along the x-axis\n * @param {number} ySemiAxis semi (minor) axis of the ellipse along the y-axis\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.angle=0] angle of rotation (along the vertical axis), from North in decimal degrees, negative clockwise\n * @param {Coord} [options.pivot='origin'] point around which the rotation will be performed\n * @param {number} [options.steps=64] number of steps\n * @param {string} [options.units='kilometers'] unit of measurement for axes\n * @param {Object} [options.properties={}] properties\n * @returns {Feature} ellipse polygon\n * @example\n * var center = [-75, 40];\n * var xSemiAxis = 5;\n * var ySemiAxis = 2;\n * var ellipse = turf.ellipse(center, xSemiAxis, ySemiAxis);\n *\n * //addToMap\n * var addToMap = [turf.point(center), ellipse]\n */ function $4882a861852a1e88$var$ellipse(center, xSemiAxis, ySemiAxis, options) {\n // Optional params\n options = options || {};\n var steps = options.steps || 64;\n var units = options.units || \"kilometers\";\n var angle = options.angle || 0;\n var pivot = options.pivot || center;\n var properties = options.properties || center.properties || {};\n // validation\n if (!center) throw new Error(\"center is required\");\n if (!xSemiAxis) throw new Error(\"xSemiAxis is required\");\n if (!ySemiAxis) throw new Error(\"ySemiAxis is required\");\n if (!(0, $kTfmD.isObject)(options)) throw new Error(\"options must be an object\");\n if (!(0, $kTfmD.isNumber)(steps)) throw new Error(\"steps must be a number\");\n if (!(0, $kTfmD.isNumber)(angle)) throw new Error(\"angle must be a number\");\n var centerCoords = (0, $kbGTO.getCoord)(center);\n if (units === \"degrees\") var angleRad = (0, $kTfmD.degreesToRadians)(angle);\n else {\n xSemiAxis = (0, $35NAj.default)(center, xSemiAxis, 90, {\n units: units\n });\n ySemiAxis = (0, $35NAj.default)(center, ySemiAxis, 0, {\n units: units\n });\n xSemiAxis = (0, $kbGTO.getCoord)(xSemiAxis)[0] - centerCoords[0];\n ySemiAxis = (0, $kbGTO.getCoord)(ySemiAxis)[1] - centerCoords[1];\n }\n var coordinates = [];\n for(var i = 0; i < steps; i += 1){\n var stepAngle = i * -360 / steps;\n var x = xSemiAxis * ySemiAxis / Math.sqrt(Math.pow(ySemiAxis, 2) + Math.pow(xSemiAxis, 2) * Math.pow($4882a861852a1e88$var$getTanDeg(stepAngle), 2));\n var y = xSemiAxis * ySemiAxis / Math.sqrt(Math.pow(xSemiAxis, 2) + Math.pow(ySemiAxis, 2) / Math.pow($4882a861852a1e88$var$getTanDeg(stepAngle), 2));\n if (stepAngle < -90 && stepAngle >= -270) x = -x;\n if (stepAngle < -180 && stepAngle >= -360) y = -y;\n if (units === \"degrees\") {\n var newx = x * Math.cos(angleRad) + y * Math.sin(angleRad);\n var newy = y * Math.cos(angleRad) - x * Math.sin(angleRad);\n x = newx;\n y = newy;\n }\n coordinates.push([\n x + centerCoords[0],\n y + centerCoords[1]\n ]);\n }\n coordinates.push(coordinates[0]);\n if (units === \"degrees\") return (0, $kTfmD.polygon)([\n coordinates\n ], properties);\n else return (0, $j6dRg.default)((0, $kTfmD.polygon)([\n coordinates\n ], properties), angle, {\n pivot: pivot\n });\n}\n/**\n * Get Tan Degrees\n *\n * @private\n * @param {number} deg Degrees\n * @returns {number} Tan Degrees\n */ function $4882a861852a1e88$var$getTanDeg(deg) {\n var rad = deg * Math.PI / 180;\n return Math.tan(rad);\n}\nvar $4882a861852a1e88$export$2e2bcd8739ae039 = $4882a861852a1e88$var$ellipse;\n\n});\nparcelRegister(\"kTfmD\", function(module, exports) {\n\n$parcel$export(module.exports, \"isObject\", function () { return $f354dcb01154eb28$export$a6cdc56e425d0d0a; });\n$parcel$export(module.exports, \"polygon\", function () { return $f354dcb01154eb28$export$b7b19aa0ee06c73; });\n$parcel$export(module.exports, \"isNumber\", function () { return $f354dcb01154eb28$export$7e4aa119212bc614; });\n$parcel$export(module.exports, \"degreesToRadians\", function () { return $f354dcb01154eb28$export$c9fcf1a7df975d78; });\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */ var $f354dcb01154eb28$export$e3a1ee0e9945697f = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */ var $f354dcb01154eb28$export$f929e47acbed771a = {\n meters: $f354dcb01154eb28$export$e3a1ee0e9945697f,\n metres: $f354dcb01154eb28$export$e3a1ee0e9945697f,\n millimeters: $f354dcb01154eb28$export$e3a1ee0e9945697f * 1000,\n millimetres: $f354dcb01154eb28$export$e3a1ee0e9945697f * 1000,\n centimeters: $f354dcb01154eb28$export$e3a1ee0e9945697f * 100,\n centimetres: $f354dcb01154eb28$export$e3a1ee0e9945697f * 100,\n kilometers: $f354dcb01154eb28$export$e3a1ee0e9945697f / 1000,\n kilometres: $f354dcb01154eb28$export$e3a1ee0e9945697f / 1000,\n miles: $f354dcb01154eb28$export$e3a1ee0e9945697f / 1609.344,\n nauticalmiles: $f354dcb01154eb28$export$e3a1ee0e9945697f / 1852,\n inches: $f354dcb01154eb28$export$e3a1ee0e9945697f * 39.370,\n yards: $f354dcb01154eb28$export$e3a1ee0e9945697f / 1.0936,\n feet: $f354dcb01154eb28$export$e3a1ee0e9945697f * 3.28084,\n radians: 1,\n degrees: $f354dcb01154eb28$export$e3a1ee0e9945697f / 111325\n};\n/**\n * Units of measurement factors based on 1 meter.\n */ var $f354dcb01154eb28$export$95cef4899be7420 = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 0.001,\n kilometres: 0.001,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / $f354dcb01154eb28$export$e3a1ee0e9945697f,\n degrees: 1 / 111325\n};\n/**\n * Area of measurement factors based on 1 square meter.\n */ var $f354dcb01154eb28$export$44665ce4f7f4c82b = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */ function $f354dcb01154eb28$export$ced6ed16dfd6a264(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!$f354dcb01154eb28$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (geometry === undefined) throw new Error(\"geometry is required\");\n if (properties && properties.constructor !== Object) throw new Error(\"properties must be an Object\");\n if (bbox) $f354dcb01154eb28$export$28ac7bb8f5309bea(bbox);\n if (id) $f354dcb01154eb28$export$f35f128fd59ea256(id);\n // Main\n var feat = {\n type: \"Feature\"\n };\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */ function $f354dcb01154eb28$export$42a7622cbf932bb(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!$f354dcb01154eb28$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n // Validation\n if (!type) throw new Error(\"type is required\");\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (bbox) $f354dcb01154eb28$export$28ac7bb8f5309bea(bbox);\n // Main\n var geom;\n switch(type){\n case \"Point\":\n geom = $f354dcb01154eb28$export$105684a3041cb6f3(coordinates).geometry;\n break;\n case \"LineString\":\n geom = $f354dcb01154eb28$export$98ec381bb06902c3(coordinates).geometry;\n break;\n case \"Polygon\":\n geom = $f354dcb01154eb28$export$b7b19aa0ee06c73(coordinates).geometry;\n break;\n case \"MultiPoint\":\n geom = $f354dcb01154eb28$export$335fc20ed6b6dbb6(coordinates).geometry;\n break;\n case \"MultiLineString\":\n geom = $f354dcb01154eb28$export$bd735230309493da(coordinates).geometry;\n break;\n case \"MultiPolygon\":\n geom = $f354dcb01154eb28$export$79bd594da96638d3(coordinates).geometry;\n break;\n default:\n throw new Error(type + \" is invalid\");\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */ function $f354dcb01154eb28$export$105684a3041cb6f3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be at least 2 numbers long\");\n if (!$f354dcb01154eb28$export$7e4aa119212bc614(coordinates[0]) || !$f354dcb01154eb28$export$7e4aa119212bc614(coordinates[1])) throw new Error(\"coordinates must contain numbers\");\n return $f354dcb01154eb28$export$ced6ed16dfd6a264({\n type: \"Point\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */ function $f354dcb01154eb28$export$9f048bf86ee2e9d2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $f354dcb01154eb28$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $f354dcb01154eb28$export$105684a3041cb6f3(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */ function $f354dcb01154eb28$export$b7b19aa0ee06c73(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n for(var i = 0; i < coordinates.length; i++){\n var ring = coordinates[i];\n if (ring.length < 4) throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n for(var j = 0; j < ring[ring.length - 1].length; j++){\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !$f354dcb01154eb28$export$7e4aa119212bc614(ring[0][0]) || !$f354dcb01154eb28$export$7e4aa119212bc614(ring[0][1])) throw new Error(\"coordinates must contain numbers\");\n if (ring[ring.length - 1][j] !== ring[0][j]) throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n return $f354dcb01154eb28$export$ced6ed16dfd6a264({\n type: \"Polygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */ function $f354dcb01154eb28$export$8869eb68a940f9c2(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $f354dcb01154eb28$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $f354dcb01154eb28$export$b7b19aa0ee06c73(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */ function $f354dcb01154eb28$export$98ec381bb06902c3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be an array of two or more positions\");\n // Check if first point of LineString contains two numbers\n if (!$f354dcb01154eb28$export$7e4aa119212bc614(coordinates[0][1]) || !$f354dcb01154eb28$export$7e4aa119212bc614(coordinates[0][1])) throw new Error(\"coordinates must contain numbers\");\n return $f354dcb01154eb28$export$ced6ed16dfd6a264({\n type: \"LineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */ function $f354dcb01154eb28$export$74f7306c35db993f(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n return $f354dcb01154eb28$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $f354dcb01154eb28$export$98ec381bb06902c3(coords, properties);\n }), options);\n}\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */ function $f354dcb01154eb28$export$4717c67ac3e5e04d(features, options) {\n // Optional Parameters\n options = options || {};\n if (!$f354dcb01154eb28$export$a6cdc56e425d0d0a(options)) throw new Error(\"options is invalid\");\n var bbox = options.bbox;\n var id = options.id;\n // Validation\n if (!features) throw new Error(\"No features passed\");\n if (!Array.isArray(features)) throw new Error(\"features must be an Array\");\n if (bbox) $f354dcb01154eb28$export$28ac7bb8f5309bea(bbox);\n if (id) $f354dcb01154eb28$export$f35f128fd59ea256(id);\n // Main\n var fc = {\n type: \"FeatureCollection\"\n };\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */ function $f354dcb01154eb28$export$bd735230309493da(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $f354dcb01154eb28$export$ced6ed16dfd6a264({\n type: \"MultiLineString\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */ function $f354dcb01154eb28$export$335fc20ed6b6dbb6(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $f354dcb01154eb28$export$ced6ed16dfd6a264({\n type: \"MultiPoint\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */ function $f354dcb01154eb28$export$79bd594da96638d3(coordinates, properties, options) {\n if (!coordinates) throw new Error(\"coordinates is required\");\n return $f354dcb01154eb28$export$ced6ed16dfd6a264({\n type: \"MultiPolygon\",\n coordinates: coordinates\n }, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */ function $f354dcb01154eb28$export$9242f1e18250422a(geometries, properties, options) {\n if (!geometries) throw new Error(\"geometries is required\");\n if (!Array.isArray(geometries)) throw new Error(\"geometries must be an Array\");\n return $f354dcb01154eb28$export$ced6ed16dfd6a264({\n type: \"GeometryCollection\",\n geometries: geometries\n }, properties, options);\n}\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */ function $f354dcb01154eb28$export$2077e0241d6afd3c(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error(\"num is required\");\n if (precision && !(precision >= 0)) throw new Error(\"precision must be a positive number\");\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */ function $f354dcb01154eb28$export$f234631d6a2eedf8(radians, units) {\n if (radians === undefined || radians === null) throw new Error(\"radians is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $f354dcb01154eb28$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return radians * factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */ function $f354dcb01154eb28$export$a2280f7debae8f10(distance, units) {\n if (distance === undefined || distance === null) throw new Error(\"distance is required\");\n if (units && typeof units !== \"string\") throw new Error(\"units must be a string\");\n var factor = $f354dcb01154eb28$export$f929e47acbed771a[units || \"kilometers\"];\n if (!factor) throw new Error(units + \" units is invalid\");\n return distance / factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */ function $f354dcb01154eb28$export$c7a138e00a89bd01(distance, units) {\n return $f354dcb01154eb28$export$c41dd2a8460d3196($f354dcb01154eb28$export$a2280f7debae8f10(distance, units));\n}\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */ function $f354dcb01154eb28$export$f2077d29c73b33ec(bearing) {\n if (bearing === null || bearing === undefined) throw new Error(\"bearing is required\");\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */ function $f354dcb01154eb28$export$c41dd2a8460d3196(radians) {\n if (radians === null || radians === undefined) throw new Error(\"radians is required\");\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */ function $f354dcb01154eb28$export$c9fcf1a7df975d78(degrees) {\n if (degrees === null || degrees === undefined) throw new Error(\"degrees is required\");\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */ function $f354dcb01154eb28$export$ea1536a749e80563(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error(\"length is required\");\n if (!(length >= 0)) throw new Error(\"length must be a positive number\");\n return $f354dcb01154eb28$export$f234631d6a2eedf8($f354dcb01154eb28$export$a2280f7debae8f10(length, originalUnit), finalUnit || \"kilometers\");\n}\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */ function $f354dcb01154eb28$export$2e65e2c759f7e341(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error(\"area is required\");\n if (!(area >= 0)) throw new Error(\"area must be a positive number\");\n var startFactor = $f354dcb01154eb28$export$44665ce4f7f4c82b[originalUnit || \"meters\"];\n if (!startFactor) throw new Error(\"invalid original units\");\n var finalFactor = $f354dcb01154eb28$export$44665ce4f7f4c82b[finalUnit || \"kilometers\"];\n if (!finalFactor) throw new Error(\"invalid final units\");\n return area / startFactor * finalFactor;\n}\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */ function $f354dcb01154eb28$export$7e4aa119212bc614(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */ function $f354dcb01154eb28$export$a6cdc56e425d0d0a(input) {\n return !!input && input.constructor === Object;\n}\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */ function $f354dcb01154eb28$export$28ac7bb8f5309bea(bbox) {\n if (!bbox) throw new Error(\"bbox is required\");\n if (!Array.isArray(bbox)) throw new Error(\"bbox must be an Array\");\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n bbox.forEach(function(num) {\n if (!$f354dcb01154eb28$export$7e4aa119212bc614(num)) throw new Error(\"bbox must only contain numbers\");\n });\n}\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */ function $f354dcb01154eb28$export$f35f128fd59ea256(id) {\n if (!id) throw new Error(\"id is required\");\n if ([\n \"string\",\n \"number\"\n ].indexOf(typeof id) === -1) throw new Error(\"id must be a number or a string\");\n}\n// Deprecated methods\nfunction $f354dcb01154eb28$export$b7eac44a74fbbf44() {\n throw new Error(\"method has been renamed to `radiansToDegrees`\");\n}\nfunction $f354dcb01154eb28$export$429f6664de4d6783() {\n throw new Error(\"method has been renamed to `degreesToRadians`\");\n}\nfunction $f354dcb01154eb28$export$682f47d8f6f8f330() {\n throw new Error(\"method has been renamed to `lengthToDegrees`\");\n}\nfunction $f354dcb01154eb28$export$8fc0c652b1df31fd() {\n throw new Error(\"method has been renamed to `lengthToRadians`\");\n}\nfunction $f354dcb01154eb28$export$dc0d90c052e1e7ea() {\n throw new Error(\"method has been renamed to `radiansToLength`\");\n}\nfunction $f354dcb01154eb28$export$97a5bf601f8e0e61() {\n throw new Error(\"method has been renamed to `bearingToAzimuth`\");\n}\nfunction $f354dcb01154eb28$export$1d848d23272abfae() {\n throw new Error(\"method has been renamed to `convertLength`\");\n}\n\n});\n\nparcelRegister(\"kbGTO\", function(module, exports) {\n\n$parcel$export(module.exports, \"getCoord\", function () { return $eb261ca02a4a3cd9$export$b4663c6e64a770bc; });\n\nvar $kTfmD = parcelRequire(\"kTfmD\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */ function $eb261ca02a4a3cd9$export$b4663c6e64a770bc(coord) {\n if (!coord) throw new Error(\"coord is required\");\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") return coord.geometry.coordinates;\n if (coord.type === \"Point\") return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */ function $eb261ca02a4a3cd9$export$39e042fd83f1b62e(coords) {\n if (!coords) throw new Error(\"coords is required\");\n // Feature\n if (coords.type === \"Feature\" && coords.geometry !== null) return coords.geometry.coordinates;\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */ function $eb261ca02a4a3cd9$export$ab82360ed81b09b9(coordinates) {\n if (coordinates.length > 1 && (0, $kTfmD.isNumber)(coordinates[0]) && (0, $kTfmD.isNumber)(coordinates[1])) return true;\n if (Array.isArray(coordinates[0]) && coordinates[0].length) return $eb261ca02a4a3cd9$export$ab82360ed81b09b9(coordinates[0]);\n throw new Error(\"coordinates must only contain numbers\");\n}\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $eb261ca02a4a3cd9$export$329ecc560bd873a7(value, type, name) {\n if (!type || !name) throw new Error(\"type and name required\");\n if (!value || value.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type);\n}\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */ function $eb261ca02a4a3cd9$export$8b96d9ca92084402(feature, type, name) {\n if (!feature) throw new Error(\"No feature passed\");\n if (!name) throw new Error(\".featureOf() requires a name\");\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n}\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */ function $eb261ca02a4a3cd9$export$bcf04c9d01e728b6(featureCollection, type, name) {\n if (!featureCollection) throw new Error(\"No featureCollection passed\");\n if (!name) throw new Error(\".collectionOf() requires a name\");\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n for(var i = 0; i < featureCollection.features.length; i++){\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n }\n}\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */ function $eb261ca02a4a3cd9$export$b8f320eb9549c8fd(geojson) {\n if (!geojson) throw new Error(\"geojson is required\");\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error(\"geojson must be a valid Feature or Geometry Object\");\n}\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */ function $eb261ca02a4a3cd9$export$cf92de84f30da2c5() {\n throw new Error(\"invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType\");\n}\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */ function $eb261ca02a4a3cd9$export$e2b5c5db9e2009fd(geojson, name) {\n if (!geojson) throw new Error((name || \"geojson\") + \" is required\");\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || \"geojson\") + \" is invalid\");\n}\n\n});\n\n\n\nparcelRegister(\"eypkN\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.DrawEllipseUsingThreePointsMode = void 0;\n\nvar $a987e48fffaf6536$var$_distance = $a987e48fffaf6536$var$_interopRequireDefault((parcelRequire(\"b5wF2\")));\n\nvar $a987e48fffaf6536$var$_ellipse = $a987e48fffaf6536$var$_interopRequireDefault((parcelRequire(\"6dYcK\")));\n\nvar $a987e48fffaf6536$var$_bearing = $a987e48fffaf6536$var$_interopRequireDefault((parcelRequire(\"aDE4l\")));\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\n\nvar $lQYvW = parcelRequire(\"lQYvW\");\nfunction $a987e48fffaf6536$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $a987e48fffaf6536$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $a987e48fffaf6536$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $a987e48fffaf6536$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $a987e48fffaf6536$var$_typeof(obj);\n}\nfunction $a987e48fffaf6536$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $a987e48fffaf6536$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $a987e48fffaf6536$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $a987e48fffaf6536$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $a987e48fffaf6536$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $a987e48fffaf6536$var$_createSuper(Derived) {\n return function() {\n var Super = $a987e48fffaf6536$var$_getPrototypeOf(Derived), result;\n if ($a987e48fffaf6536$var$_isNativeReflectConstruct()) {\n var NewTarget = $a987e48fffaf6536$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $a987e48fffaf6536$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $a987e48fffaf6536$var$_possibleConstructorReturn(self, call) {\n if (call && ($a987e48fffaf6536$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $a987e48fffaf6536$var$_assertThisInitialized(self);\n}\nfunction $a987e48fffaf6536$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $a987e48fffaf6536$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $a987e48fffaf6536$var$_getPrototypeOf(o) {\n $a987e48fffaf6536$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $a987e48fffaf6536$var$_getPrototypeOf(o);\n}\nfunction $a987e48fffaf6536$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $a987e48fffaf6536$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $a987e48fffaf6536$var$_setPrototypeOf(o, p) {\n $a987e48fffaf6536$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $a987e48fffaf6536$var$_setPrototypeOf(o, p);\n}\nvar $a987e48fffaf6536$var$DrawEllipseUsingThreePointsMode = /*#__PURE__*/ function(_ThreeClickPolygonMod) {\n $a987e48fffaf6536$var$_inherits(DrawEllipseUsingThreePointsMode, _ThreeClickPolygonMod);\n var _super = $a987e48fffaf6536$var$_createSuper(DrawEllipseUsingThreePointsMode);\n function DrawEllipseUsingThreePointsMode() {\n $a987e48fffaf6536$var$_classCallCheck(this, DrawEllipseUsingThreePointsMode);\n return _super.apply(this, arguments);\n }\n $a987e48fffaf6536$var$_createClass(DrawEllipseUsingThreePointsMode, [\n {\n key: \"getThreeClickPolygon\",\n value: function getThreeClickPolygon(coord1, coord2, coord3, modeConfig) {\n var centerCoordinates = (0, $1tPZO.getIntermediatePosition)(coord1, coord2);\n var xSemiAxis = Math.max((0, $a987e48fffaf6536$var$_distance[\"default\"])(centerCoordinates, (0, $7GKQS.point)(coord3)), 0.001);\n var ySemiAxis = Math.max((0, $a987e48fffaf6536$var$_distance[\"default\"])(coord1, coord2), 0.001) / 2;\n var options = {\n angle: (0, $a987e48fffaf6536$var$_bearing[\"default\"])(coord1, coord2)\n }; // @ts-ignore\n return (0, $a987e48fffaf6536$var$_ellipse[\"default\"])(centerCoordinates, xSemiAxis, ySemiAxis, options);\n }\n }\n ]);\n return DrawEllipseUsingThreePointsMode;\n}($lQYvW.ThreeClickPolygonMode);\nmodule.exports.DrawEllipseUsingThreePointsMode = $a987e48fffaf6536$var$DrawEllipseUsingThreePointsMode;\n\n});\nparcelRegister(\"lQYvW\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.ThreeClickPolygonMode = void 0;\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\nfunction $fe8d652587427aa1$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $fe8d652587427aa1$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $fe8d652587427aa1$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $fe8d652587427aa1$var$_typeof(obj);\n}\nfunction $fe8d652587427aa1$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $fe8d652587427aa1$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $fe8d652587427aa1$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $fe8d652587427aa1$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $fe8d652587427aa1$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $fe8d652587427aa1$var$_get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) $fe8d652587427aa1$var$_get = Reflect.get;\n else $fe8d652587427aa1$var$_get = function _get(target, property, receiver) {\n var base = $fe8d652587427aa1$var$_superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) return desc.get.call(receiver);\n return desc.value;\n };\n return $fe8d652587427aa1$var$_get(target, property, receiver || target);\n}\nfunction $fe8d652587427aa1$var$_superPropBase(object, property) {\n while(!Object.prototype.hasOwnProperty.call(object, property)){\n object = $fe8d652587427aa1$var$_getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nfunction $fe8d652587427aa1$var$_createSuper(Derived) {\n return function() {\n var Super = $fe8d652587427aa1$var$_getPrototypeOf(Derived), result;\n if ($fe8d652587427aa1$var$_isNativeReflectConstruct()) {\n var NewTarget = $fe8d652587427aa1$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $fe8d652587427aa1$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $fe8d652587427aa1$var$_possibleConstructorReturn(self, call) {\n if (call && ($fe8d652587427aa1$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $fe8d652587427aa1$var$_assertThisInitialized(self);\n}\nfunction $fe8d652587427aa1$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $fe8d652587427aa1$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $fe8d652587427aa1$var$_getPrototypeOf(o) {\n $fe8d652587427aa1$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $fe8d652587427aa1$var$_getPrototypeOf(o);\n}\nfunction $fe8d652587427aa1$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $fe8d652587427aa1$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $fe8d652587427aa1$var$_setPrototypeOf(o, p) {\n $fe8d652587427aa1$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $fe8d652587427aa1$var$_setPrototypeOf(o, p);\n}\nvar $fe8d652587427aa1$var$ThreeClickPolygonMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $fe8d652587427aa1$var$_inherits(ThreeClickPolygonMode, _GeoJsonEditMode);\n var _super = $fe8d652587427aa1$var$_createSuper(ThreeClickPolygonMode);\n function ThreeClickPolygonMode() {\n $fe8d652587427aa1$var$_classCallCheck(this, ThreeClickPolygonMode);\n return _super.apply(this, arguments);\n }\n $fe8d652587427aa1$var$_createClass(ThreeClickPolygonMode, [\n {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n this.addClickSequence(event);\n var clickSequence = this.getClickSequence();\n var tentativeFeature = this.getTentativeGuide(props);\n if (clickSequence.length > 2 && tentativeFeature && tentativeFeature.geometry.type === \"Polygon\") {\n var editAction = this.getAddFeatureOrBooleanPolygonAction(tentativeFeature.geometry, props);\n this.resetClickSequence();\n if (editAction) props.onEdit(editAction);\n }\n }\n },\n {\n key: \"getGuides\",\n value: function getGuides(props) {\n var lastPointerMoveEvent = props.lastPointerMoveEvent, modeConfig = props.modeConfig;\n var clickSequence = this.getClickSequence();\n var guides = {\n type: \"FeatureCollection\",\n features: []\n };\n if (clickSequence.length === 0) // nothing to do yet\n return guides;\n var hoveredCoord = lastPointerMoveEvent.mapCoords;\n if (clickSequence.length === 1) guides.features.push({\n type: \"Feature\",\n properties: {\n guideType: \"tentative\"\n },\n geometry: {\n type: \"LineString\",\n coordinates: [\n clickSequence[0],\n hoveredCoord\n ]\n }\n });\n else {\n var polygon = this.getThreeClickPolygon(clickSequence[0], clickSequence[1], hoveredCoord, modeConfig);\n if (polygon) guides.features.push({\n type: \"Feature\",\n properties: {\n guideType: \"tentative\"\n },\n geometry: polygon.geometry\n });\n }\n return guides;\n }\n },\n {\n key: \"getThreeClickPolygon\",\n value: function getThreeClickPolygon(coord1, coord2, coord3, modeConfig) {\n return null;\n }\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor(\"cell\");\n $fe8d652587427aa1$var$_get($fe8d652587427aa1$var$_getPrototypeOf(ThreeClickPolygonMode.prototype), \"handlePointerMove\", this).call(this, event, props);\n }\n },\n {\n key: \"createTentativeFeature\",\n value: function createTentativeFeature(props) {\n var lastPointerMoveEvent = props.lastPointerMoveEvent;\n var clickSequence = this.getClickSequence();\n var lastCoords = lastPointerMoveEvent ? [\n lastPointerMoveEvent.mapCoords\n ] : [];\n var tentativeFeature;\n if (clickSequence.length === 2) tentativeFeature = this.getThreeClickPolygon(clickSequence[0], clickSequence[1], lastCoords[0], props.modeConfig);\n return tentativeFeature;\n }\n }\n ]);\n return ThreeClickPolygonMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.ThreeClickPolygonMode = $fe8d652587427aa1$var$ThreeClickPolygonMode;\n\n});\n\n\nparcelRegister(\"9wvMY\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.DrawRectangleUsingThreePointsMode = void 0;\n\nvar $hs5Hv = parcelRequire(\"hs5Hv\");\n\nvar $lQYvW = parcelRequire(\"lQYvW\");\nfunction $6eefc2d0db21dcfe$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $6eefc2d0db21dcfe$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $6eefc2d0db21dcfe$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $6eefc2d0db21dcfe$var$_typeof(obj);\n}\nfunction $6eefc2d0db21dcfe$var$_slicedToArray(arr, i) {\n return $6eefc2d0db21dcfe$var$_arrayWithHoles(arr) || $6eefc2d0db21dcfe$var$_iterableToArrayLimit(arr, i) || $6eefc2d0db21dcfe$var$_unsupportedIterableToArray(arr, i) || $6eefc2d0db21dcfe$var$_nonIterableRest();\n}\nfunction $6eefc2d0db21dcfe$var$_nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $6eefc2d0db21dcfe$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $6eefc2d0db21dcfe$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $6eefc2d0db21dcfe$var$_arrayLikeToArray(o, minLen);\n}\nfunction $6eefc2d0db21dcfe$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $6eefc2d0db21dcfe$var$_iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for(var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction $6eefc2d0db21dcfe$var$_arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction $6eefc2d0db21dcfe$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $6eefc2d0db21dcfe$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $6eefc2d0db21dcfe$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $6eefc2d0db21dcfe$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $6eefc2d0db21dcfe$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $6eefc2d0db21dcfe$var$_createSuper(Derived) {\n return function() {\n var Super = $6eefc2d0db21dcfe$var$_getPrototypeOf(Derived), result;\n if ($6eefc2d0db21dcfe$var$_isNativeReflectConstruct()) {\n var NewTarget = $6eefc2d0db21dcfe$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $6eefc2d0db21dcfe$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $6eefc2d0db21dcfe$var$_possibleConstructorReturn(self, call) {\n if (call && ($6eefc2d0db21dcfe$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $6eefc2d0db21dcfe$var$_assertThisInitialized(self);\n}\nfunction $6eefc2d0db21dcfe$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $6eefc2d0db21dcfe$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $6eefc2d0db21dcfe$var$_getPrototypeOf(o) {\n $6eefc2d0db21dcfe$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $6eefc2d0db21dcfe$var$_getPrototypeOf(o);\n}\nfunction $6eefc2d0db21dcfe$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $6eefc2d0db21dcfe$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $6eefc2d0db21dcfe$var$_setPrototypeOf(o, p) {\n $6eefc2d0db21dcfe$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $6eefc2d0db21dcfe$var$_setPrototypeOf(o, p);\n}\nvar $6eefc2d0db21dcfe$var$DrawRectangleUsingThreePointsMode = /*#__PURE__*/ function(_ThreeClickPolygonMod) {\n $6eefc2d0db21dcfe$var$_inherits(DrawRectangleUsingThreePointsMode, _ThreeClickPolygonMod);\n var _super = $6eefc2d0db21dcfe$var$_createSuper(DrawRectangleUsingThreePointsMode);\n function DrawRectangleUsingThreePointsMode() {\n $6eefc2d0db21dcfe$var$_classCallCheck(this, DrawRectangleUsingThreePointsMode);\n return _super.apply(this, arguments);\n }\n $6eefc2d0db21dcfe$var$_createClass(DrawRectangleUsingThreePointsMode, [\n {\n key: \"getThreeClickPolygon\",\n value: function getThreeClickPolygon(coord1, coord2, coord3, modeConfig) {\n var _generatePointsParall = (0, $hs5Hv.generatePointsParallelToLinePoints)(coord1, coord2, coord3), _generatePointsParall2 = $6eefc2d0db21dcfe$var$_slicedToArray(_generatePointsParall, 2), p3 = _generatePointsParall2[0], p4 = _generatePointsParall2[1];\n return {\n type: \"Feature\",\n properties: {\n shape: \"Rectangle\"\n },\n geometry: {\n type: \"Polygon\",\n coordinates: [\n [\n // then the points orthogonal to the lineString,\n // then back to the starting position\n coord1,\n coord2,\n p3,\n p4,\n coord1\n ]\n ]\n }\n };\n }\n }\n ]);\n return DrawRectangleUsingThreePointsMode;\n}($lQYvW.ThreeClickPolygonMode);\nmodule.exports.DrawRectangleUsingThreePointsMode = $6eefc2d0db21dcfe$var$DrawRectangleUsingThreePointsMode;\n\n});\n\nparcelRegister(\"9qPDu\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.Draw90DegreePolygonMode = void 0;\n\nvar $6dde9895d5d6c828$var$_destination = $6dde9895d5d6c828$var$_interopRequireDefault((parcelRequire(\"1UAWS\")));\n\nvar $6dde9895d5d6c828$var$_bearing = $6dde9895d5d6c828$var$_interopRequireDefault((parcelRequire(\"aDE4l\")));\n\nvar $6dde9895d5d6c828$var$_lineIntersect = $6dde9895d5d6c828$var$_interopRequireDefault((parcelRequire(\"iXvoQ\")));\n\nvar $6dde9895d5d6c828$var$_distance = $6dde9895d5d6c828$var$_interopRequireDefault((parcelRequire(\"b5wF2\")));\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $hs5Hv = parcelRequire(\"hs5Hv\");\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\nfunction $6dde9895d5d6c828$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $6dde9895d5d6c828$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $6dde9895d5d6c828$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $6dde9895d5d6c828$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $6dde9895d5d6c828$var$_typeof(obj);\n}\nfunction $6dde9895d5d6c828$var$_toConsumableArray(arr) {\n return $6dde9895d5d6c828$var$_arrayWithoutHoles(arr) || $6dde9895d5d6c828$var$_iterableToArray(arr) || $6dde9895d5d6c828$var$_unsupportedIterableToArray(arr) || $6dde9895d5d6c828$var$_nonIterableSpread();\n}\nfunction $6dde9895d5d6c828$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $6dde9895d5d6c828$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $6dde9895d5d6c828$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $6dde9895d5d6c828$var$_arrayLikeToArray(arr);\n}\nfunction $6dde9895d5d6c828$var$_slicedToArray(arr, i) {\n return $6dde9895d5d6c828$var$_arrayWithHoles(arr) || $6dde9895d5d6c828$var$_iterableToArrayLimit(arr, i) || $6dde9895d5d6c828$var$_unsupportedIterableToArray(arr, i) || $6dde9895d5d6c828$var$_nonIterableRest();\n}\nfunction $6dde9895d5d6c828$var$_nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $6dde9895d5d6c828$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $6dde9895d5d6c828$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $6dde9895d5d6c828$var$_arrayLikeToArray(o, minLen);\n}\nfunction $6dde9895d5d6c828$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $6dde9895d5d6c828$var$_iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for(var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction $6dde9895d5d6c828$var$_arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction $6dde9895d5d6c828$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $6dde9895d5d6c828$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $6dde9895d5d6c828$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $6dde9895d5d6c828$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $6dde9895d5d6c828$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $6dde9895d5d6c828$var$_get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) $6dde9895d5d6c828$var$_get = Reflect.get;\n else $6dde9895d5d6c828$var$_get = function _get(target, property, receiver) {\n var base = $6dde9895d5d6c828$var$_superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) return desc.get.call(receiver);\n return desc.value;\n };\n return $6dde9895d5d6c828$var$_get(target, property, receiver || target);\n}\nfunction $6dde9895d5d6c828$var$_superPropBase(object, property) {\n while(!Object.prototype.hasOwnProperty.call(object, property)){\n object = $6dde9895d5d6c828$var$_getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nfunction $6dde9895d5d6c828$var$_createSuper(Derived) {\n return function() {\n var Super = $6dde9895d5d6c828$var$_getPrototypeOf(Derived), result;\n if ($6dde9895d5d6c828$var$_isNativeReflectConstruct()) {\n var NewTarget = $6dde9895d5d6c828$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $6dde9895d5d6c828$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $6dde9895d5d6c828$var$_possibleConstructorReturn(self, call) {\n if (call && ($6dde9895d5d6c828$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $6dde9895d5d6c828$var$_assertThisInitialized(self);\n}\nfunction $6dde9895d5d6c828$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $6dde9895d5d6c828$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $6dde9895d5d6c828$var$_getPrototypeOf(o) {\n $6dde9895d5d6c828$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $6dde9895d5d6c828$var$_getPrototypeOf(o);\n}\nfunction $6dde9895d5d6c828$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $6dde9895d5d6c828$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $6dde9895d5d6c828$var$_setPrototypeOf(o, p) {\n $6dde9895d5d6c828$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $6dde9895d5d6c828$var$_setPrototypeOf(o, p);\n}\nvar $6dde9895d5d6c828$var$Draw90DegreePolygonMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $6dde9895d5d6c828$var$_inherits(Draw90DegreePolygonMode, _GeoJsonEditMode);\n var _super = $6dde9895d5d6c828$var$_createSuper(Draw90DegreePolygonMode);\n function Draw90DegreePolygonMode() {\n $6dde9895d5d6c828$var$_classCallCheck(this, Draw90DegreePolygonMode);\n return _super.apply(this, arguments);\n }\n $6dde9895d5d6c828$var$_createClass(Draw90DegreePolygonMode, [\n {\n key: \"createTentativeFeature\",\n value: function createTentativeFeature(props) {\n var clickSequence = this.getClickSequence();\n var mapCoords = props.lastPointerMoveEvent.mapCoords;\n var p3;\n if (clickSequence.length === 1) p3 = mapCoords;\n else {\n var p1 = clickSequence[clickSequence.length - 2];\n var p2 = clickSequence[clickSequence.length - 1];\n var _generatePointsParall = (0, $hs5Hv.generatePointsParallelToLinePoints)(p1, p2, mapCoords);\n var _generatePointsParall2 = $6dde9895d5d6c828$var$_slicedToArray(_generatePointsParall, 1);\n p3 = _generatePointsParall2[0];\n }\n var tentativeFeature;\n if (clickSequence.length < 3) // Draw a LineString connecting all the clicked points with the hovered point\n tentativeFeature = {\n type: \"Feature\",\n properties: {\n guideType: \"tentative\"\n },\n geometry: {\n type: \"LineString\",\n coordinates: [].concat($6dde9895d5d6c828$var$_toConsumableArray(clickSequence), [\n p3\n ])\n }\n };\n else // Draw a Polygon connecting all the clicked points with the hovered point\n tentativeFeature = {\n type: \"Feature\",\n properties: {\n guideType: \"tentative\"\n },\n geometry: {\n type: \"Polygon\",\n coordinates: [\n [].concat($6dde9895d5d6c828$var$_toConsumableArray(clickSequence), [\n p3,\n clickSequence[0]\n ])\n ]\n }\n };\n return tentativeFeature;\n }\n },\n {\n key: \"getGuides\",\n value: function getGuides(props) {\n var guides = {\n type: \"FeatureCollection\",\n features: []\n };\n var clickSequence = this.getClickSequence();\n if (clickSequence.length === 0 || !props.lastPointerMoveEvent) return guides;\n var tentativeFeature = this.createTentativeFeature(props);\n guides.features.push(tentativeFeature);\n guides.features = guides.features.concat((0, $hs5Hv.getEditHandlesForGeometry)(tentativeFeature.geometry, -1)); // Slice off the handles that are are next to the pointer\n guides.features = guides.features.slice(0, -1);\n return guides;\n }\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor(\"cell\");\n $6dde9895d5d6c828$var$_get($6dde9895d5d6c828$var$_getPrototypeOf(Draw90DegreePolygonMode.prototype), \"handlePointerMove\", this).call(this, event, props);\n }\n },\n {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n var picks = event.picks;\n var tentativeFeature = this.getTentativeGuide(props);\n this.addClickSequence(event);\n var clickSequence = this.getClickSequence();\n if (!tentativeFeature) // nothing else to do\n return;\n if (clickSequence.length === 3 && tentativeFeature.geometry.type === \"LineString\") {\n var lineString = tentativeFeature.geometry; // Tweak the clicked position to be the snapped 90 degree point along the polygon\n clickSequence[clickSequence.length - 1] = lineString.coordinates[lineString.coordinates.length - 1];\n } else if (clickSequence.length > 3 && tentativeFeature.geometry.type === \"Polygon\") {\n var polygon = tentativeFeature.geometry; // Tweak the clicked position to be the snapped 90 degree point along the polygon\n clickSequence[clickSequence.length - 1] = polygon.coordinates[0][polygon.coordinates[0].length - 2];\n var clickedEditHandle = (0, $hs5Hv.getPickedEditHandle)(picks);\n if (clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[1] === 0 || clickedEditHandle.properties.positionIndexes[1] === polygon.coordinates[0].length - 3)) {\n // They clicked the first or last point (or double-clicked), so complete the polygon\n var polygonToAdd = {\n type: \"Polygon\",\n coordinates: this.finalizedCoordinates($6dde9895d5d6c828$var$_toConsumableArray(polygon.coordinates[0]))\n };\n this.resetClickSequence();\n var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);\n if (editAction) props.onEdit(editAction);\n }\n } // Trigger pointer move right away in order for it to update edit handles (to support double-click)\n var fakePointerMoveEvent = {\n screenCoords: [\n -1,\n -1\n ],\n mapCoords: event.mapCoords,\n picks: [],\n pointerDownPicks: null,\n pointerDownScreenCoords: null,\n pointerDownMapCoords: null,\n cancelPan: function cancelPan() {},\n sourceEvent: null\n };\n this.handlePointerMove(fakePointerMoveEvent, props);\n }\n },\n {\n key: \"finalizedCoordinates\",\n value: function finalizedCoordinates(coords) {\n // Remove the hovered position\n var coordinates = [\n [].concat($6dde9895d5d6c828$var$_toConsumableArray(coords.slice(0, -2)), [\n coords[0]\n ])\n ];\n var pt = this.getIntermediatePoint($6dde9895d5d6c828$var$_toConsumableArray(coords));\n if (!pt) {\n // if intermediate point with 90 degree not available\n // try remove the last clicked point and get the intermediate point.\n var tc = $6dde9895d5d6c828$var$_toConsumableArray(coords);\n tc.splice(-3, 1);\n pt = this.getIntermediatePoint($6dde9895d5d6c828$var$_toConsumableArray(tc));\n if (pt) coordinates = [\n [].concat($6dde9895d5d6c828$var$_toConsumableArray(coords.slice(0, -3)), [\n pt,\n coords[0]\n ])\n ];\n } else coordinates = [\n [].concat($6dde9895d5d6c828$var$_toConsumableArray(coords.slice(0, -2)), [\n pt,\n coords[0]\n ])\n ];\n return coordinates;\n }\n },\n {\n key: \"getIntermediatePoint\",\n value: function getIntermediatePoint(coordinates) {\n var pt;\n if (coordinates.length > 4) {\n var _ref = $6dde9895d5d6c828$var$_toConsumableArray(coordinates), p1 = _ref[0], p2 = _ref[1];\n var angle1 = (0, $6dde9895d5d6c828$var$_bearing[\"default\"])(p1, p2);\n var p3 = coordinates[coordinates.length - 3];\n var p4 = coordinates[coordinates.length - 4];\n var angle2 = (0, $6dde9895d5d6c828$var$_bearing[\"default\"])(p3, p4);\n var angles = {\n first: [],\n second: []\n }; // calculate 3 right angle points for first and last points in lineString\n [\n 1,\n 2,\n 3\n ].forEach(function(factor) {\n var newAngle1 = angle1 + factor * 90; // convert angles to 0 to -180 for anti-clock and 0 to 180 for clock wise\n angles.first.push(newAngle1 > 180 ? newAngle1 - 360 : newAngle1);\n var newAngle2 = angle2 + factor * 90;\n angles.second.push(newAngle2 > 180 ? newAngle2 - 360 : newAngle2);\n });\n var distance = (0, $6dde9895d5d6c828$var$_distance[\"default\"])((0, $7GKQS.point)(p1), (0, $7GKQS.point)(p3)); // Draw imaginary right angle lines for both first and last points in lineString\n // If there is intersection point for any 2 lines, will be the 90 degree point.\n [\n 0,\n 1,\n 2\n ].forEach(function(indexFirst) {\n var line1 = (0, $7GKQS.lineString)([\n p1,\n (0, $6dde9895d5d6c828$var$_destination[\"default\"])(p1, distance, angles.first[indexFirst]).geometry.coordinates\n ]);\n [\n 0,\n 1,\n 2\n ].forEach(function(indexSecond) {\n var line2 = (0, $7GKQS.lineString)([\n p3,\n (0, $6dde9895d5d6c828$var$_destination[\"default\"])(p3, distance, angles.second[indexSecond]).geometry.coordinates\n ]);\n var fc = (0, $6dde9895d5d6c828$var$_lineIntersect[\"default\"])(line1, line2);\n if (fc && fc.features.length) // found the intersect point\n pt = fc.features[0].geometry.coordinates;\n });\n });\n }\n return pt;\n }\n }\n ]);\n return Draw90DegreePolygonMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.Draw90DegreePolygonMode = $6dde9895d5d6c828$var$Draw90DegreePolygonMode;\n\n});\n\nparcelRegister(\"kfRKf\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.DrawPolygonByDraggingMode = void 0;\n\nvar $ebeee5f81c1adf90$var$_lodash = $ebeee5f81c1adf90$var$_interopRequireDefault((parcelRequire(\"3DqGr\")));\n\nvar $hs5Hv = parcelRequire(\"hs5Hv\");\n\nvar $fVfme = parcelRequire(\"fVfme\");\nfunction $ebeee5f81c1adf90$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $ebeee5f81c1adf90$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $ebeee5f81c1adf90$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $ebeee5f81c1adf90$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $ebeee5f81c1adf90$var$_typeof(obj);\n}\nfunction $ebeee5f81c1adf90$var$_toConsumableArray(arr) {\n return $ebeee5f81c1adf90$var$_arrayWithoutHoles(arr) || $ebeee5f81c1adf90$var$_iterableToArray(arr) || $ebeee5f81c1adf90$var$_unsupportedIterableToArray(arr) || $ebeee5f81c1adf90$var$_nonIterableSpread();\n}\nfunction $ebeee5f81c1adf90$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $ebeee5f81c1adf90$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $ebeee5f81c1adf90$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $ebeee5f81c1adf90$var$_arrayLikeToArray(o, minLen);\n}\nfunction $ebeee5f81c1adf90$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $ebeee5f81c1adf90$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $ebeee5f81c1adf90$var$_arrayLikeToArray(arr);\n}\nfunction $ebeee5f81c1adf90$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $ebeee5f81c1adf90$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $ebeee5f81c1adf90$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $ebeee5f81c1adf90$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $ebeee5f81c1adf90$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $ebeee5f81c1adf90$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $ebeee5f81c1adf90$var$_createSuper(Derived) {\n return function() {\n var Super = $ebeee5f81c1adf90$var$_getPrototypeOf(Derived), result;\n if ($ebeee5f81c1adf90$var$_isNativeReflectConstruct()) {\n var NewTarget = $ebeee5f81c1adf90$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $ebeee5f81c1adf90$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $ebeee5f81c1adf90$var$_possibleConstructorReturn(self, call) {\n if (call && ($ebeee5f81c1adf90$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $ebeee5f81c1adf90$var$_assertThisInitialized(self);\n}\nfunction $ebeee5f81c1adf90$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $ebeee5f81c1adf90$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $ebeee5f81c1adf90$var$_getPrototypeOf(o) {\n $ebeee5f81c1adf90$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $ebeee5f81c1adf90$var$_getPrototypeOf(o);\n}\nfunction $ebeee5f81c1adf90$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $ebeee5f81c1adf90$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $ebeee5f81c1adf90$var$_setPrototypeOf(o, p) {\n $ebeee5f81c1adf90$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $ebeee5f81c1adf90$var$_setPrototypeOf(o, p);\n}\nfunction $ebeee5f81c1adf90$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $ebeee5f81c1adf90$var$DrawPolygonByDraggingMode = /*#__PURE__*/ function(_DrawPolygonMode) {\n $ebeee5f81c1adf90$var$_inherits(DrawPolygonByDraggingMode, _DrawPolygonMode);\n var _super = $ebeee5f81c1adf90$var$_createSuper(DrawPolygonByDraggingMode);\n function DrawPolygonByDraggingMode() {\n var _this;\n $ebeee5f81c1adf90$var$_classCallCheck(this, DrawPolygonByDraggingMode);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n _this = _super.call.apply(_super, [\n this\n ].concat(args));\n $ebeee5f81c1adf90$var$_defineProperty($ebeee5f81c1adf90$var$_assertThisInitialized(_this), \"handleDraggingThrottled\", null);\n return _this;\n }\n $ebeee5f81c1adf90$var$_createClass(DrawPolygonByDraggingMode, [\n {\n key: \"handleClick\",\n value: function handleClick(event, props) {}\n },\n {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n event.cancelPan();\n if (props.modeConfig && props.modeConfig.throttleMs) this.handleDraggingThrottled = (0, $ebeee5f81c1adf90$var$_lodash[\"default\"])(this.handleDraggingAux, props.modeConfig.throttleMs);\n else this.handleDraggingThrottled = this.handleDraggingAux;\n }\n },\n {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n this.addClickSequence(event);\n var clickSequence = this.getClickSequence(); // @ts-ignore\n if (this.handleDraggingThrottled && this.handleDraggingThrottled.cancel) // @ts-ignore\n this.handleDraggingThrottled.cancel();\n if (clickSequence.length > 2) {\n // Complete the polygon.\n var polygonToAdd = {\n type: \"Polygon\",\n coordinates: [\n [].concat($ebeee5f81c1adf90$var$_toConsumableArray(clickSequence), [\n clickSequence[0]\n ])\n ]\n };\n this.resetClickSequence();\n var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);\n if (editAction) props.onEdit(editAction);\n }\n }\n },\n {\n key: \"handleDraggingAux\",\n value: function handleDraggingAux(event, props) {\n var picks = event.picks;\n var clickedEditHandle = (0, $hs5Hv.getPickedEditHandle)(picks);\n if (!clickedEditHandle) // Don't add another point right next to an existing one.\n this.addClickSequence(event);\n }\n },\n {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n if (this.handleDraggingThrottled) this.handleDraggingThrottled(event, props);\n }\n }\n ]);\n return DrawPolygonByDraggingMode;\n}($fVfme.DrawPolygonMode);\nmodule.exports.DrawPolygonByDraggingMode = $ebeee5f81c1adf90$var$DrawPolygonByDraggingMode;\n\n});\nparcelRegister(\"3DqGr\", function(module, exports) {\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */ /** Used as the `TypeError` message for \"Functions\" methods. */ var $2a59b66d4da7b2c1$var$FUNC_ERROR_TEXT = \"Expected a function\";\n/** Used as references for various `Number` constants. */ var $2a59b66d4da7b2c1$var$NAN = 0 / 0;\n/** `Object#toString` result references. */ var $2a59b66d4da7b2c1$var$symbolTag = \"[object Symbol]\";\n/** Used to match leading and trailing whitespace. */ var $2a59b66d4da7b2c1$var$reTrim = /^\\s+|\\s+$/g;\n/** Used to detect bad signed hexadecimal string values. */ var $2a59b66d4da7b2c1$var$reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n/** Used to detect binary string values. */ var $2a59b66d4da7b2c1$var$reIsBinary = /^0b[01]+$/i;\n/** Used to detect octal string values. */ var $2a59b66d4da7b2c1$var$reIsOctal = /^0o[0-7]+$/i;\n/** Built-in method references without a dependency on `root`. */ var $2a59b66d4da7b2c1$var$freeParseInt = parseInt;\n/** Detect free variable `global` from Node.js. */ var $2a59b66d4da7b2c1$var$freeGlobal = typeof $parcel$global == \"object\" && $parcel$global && $parcel$global.Object === Object && $parcel$global;\n/** Detect free variable `self`. */ var $2a59b66d4da7b2c1$var$freeSelf = typeof self == \"object\" && self && self.Object === Object && self;\n/** Used as a reference to the global object. */ var $2a59b66d4da7b2c1$var$root = $2a59b66d4da7b2c1$var$freeGlobal || $2a59b66d4da7b2c1$var$freeSelf || Function(\"return this\")();\n/** Used for built-in method references. */ var $2a59b66d4da7b2c1$var$objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */ var $2a59b66d4da7b2c1$var$objectToString = $2a59b66d4da7b2c1$var$objectProto.toString;\n/* Built-in method references for those with the same name as other `lodash` methods. */ var $2a59b66d4da7b2c1$var$nativeMax = Math.max, $2a59b66d4da7b2c1$var$nativeMin = Math.min;\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */ var $2a59b66d4da7b2c1$var$now = function() {\n return $2a59b66d4da7b2c1$var$root.Date.now();\n};\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */ function $2a59b66d4da7b2c1$var$debounce(func, wait, options) {\n var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;\n if (typeof func != \"function\") throw new TypeError($2a59b66d4da7b2c1$var$FUNC_ERROR_TEXT);\n wait = $2a59b66d4da7b2c1$var$toNumber(wait) || 0;\n if ($2a59b66d4da7b2c1$var$isObject(options)) {\n leading = !!options.leading;\n maxing = \"maxWait\" in options;\n maxWait = maxing ? $2a59b66d4da7b2c1$var$nativeMax($2a59b66d4da7b2c1$var$toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = \"trailing\" in options ? !!options.trailing : trailing;\n }\n function invokeFunc(time) {\n var args = lastArgs, thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, result = wait - timeSinceLastCall;\n return maxing ? $2a59b66d4da7b2c1$var$nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n function timerExpired() {\n var time = $2a59b66d4da7b2c1$var$now();\n if (shouldInvoke(time)) return trailingEdge(time);\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n function trailingEdge(time) {\n timerId = undefined;\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) return invokeFunc(time);\n lastArgs = lastThis = undefined;\n return result;\n }\n function cancel() {\n if (timerId !== undefined) clearTimeout(timerId);\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n function flush() {\n return timerId === undefined ? result : trailingEdge($2a59b66d4da7b2c1$var$now());\n }\n function debounced() {\n var time = $2a59b66d4da7b2c1$var$now(), isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === undefined) return leadingEdge(lastCallTime);\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) timerId = setTimeout(timerExpired, wait);\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */ function $2a59b66d4da7b2c1$var$throttle(func, wait, options) {\n var leading = true, trailing = true;\n if (typeof func != \"function\") throw new TypeError($2a59b66d4da7b2c1$var$FUNC_ERROR_TEXT);\n if ($2a59b66d4da7b2c1$var$isObject(options)) {\n leading = \"leading\" in options ? !!options.leading : leading;\n trailing = \"trailing\" in options ? !!options.trailing : trailing;\n }\n return $2a59b66d4da7b2c1$var$debounce(func, wait, {\n \"leading\": leading,\n \"maxWait\": wait,\n \"trailing\": trailing\n });\n}\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */ function $2a59b66d4da7b2c1$var$isObject(value) {\n var type = typeof value;\n return !!value && (type == \"object\" || type == \"function\");\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */ function $2a59b66d4da7b2c1$var$isObjectLike(value) {\n return !!value && typeof value == \"object\";\n}\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */ function $2a59b66d4da7b2c1$var$isSymbol(value) {\n return typeof value == \"symbol\" || $2a59b66d4da7b2c1$var$isObjectLike(value) && $2a59b66d4da7b2c1$var$objectToString.call(value) == $2a59b66d4da7b2c1$var$symbolTag;\n}\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */ function $2a59b66d4da7b2c1$var$toNumber(value) {\n if (typeof value == \"number\") return value;\n if ($2a59b66d4da7b2c1$var$isSymbol(value)) return $2a59b66d4da7b2c1$var$NAN;\n if ($2a59b66d4da7b2c1$var$isObject(value)) {\n var other = typeof value.valueOf == \"function\" ? value.valueOf() : value;\n value = $2a59b66d4da7b2c1$var$isObject(other) ? other + \"\" : other;\n }\n if (typeof value != \"string\") return value === 0 ? value : +value;\n value = value.replace($2a59b66d4da7b2c1$var$reTrim, \"\");\n var isBinary = $2a59b66d4da7b2c1$var$reIsBinary.test(value);\n return isBinary || $2a59b66d4da7b2c1$var$reIsOctal.test(value) ? $2a59b66d4da7b2c1$var$freeParseInt(value.slice(2), isBinary ? 2 : 8) : $2a59b66d4da7b2c1$var$reIsBadHex.test(value) ? $2a59b66d4da7b2c1$var$NAN : +value;\n}\nmodule.exports = $2a59b66d4da7b2c1$var$throttle;\n\n});\n\n\nparcelRegister(\"ksxR2\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.ViewMode = void 0;\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\nfunction $ee50aef087047888$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $ee50aef087047888$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $ee50aef087047888$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $ee50aef087047888$var$_typeof(obj);\n}\nfunction $ee50aef087047888$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $ee50aef087047888$var$_createSuper(Derived) {\n return function() {\n var Super = $ee50aef087047888$var$_getPrototypeOf(Derived), result;\n if ($ee50aef087047888$var$_isNativeReflectConstruct()) {\n var NewTarget = $ee50aef087047888$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $ee50aef087047888$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $ee50aef087047888$var$_possibleConstructorReturn(self, call) {\n if (call && ($ee50aef087047888$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $ee50aef087047888$var$_assertThisInitialized(self);\n}\nfunction $ee50aef087047888$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $ee50aef087047888$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $ee50aef087047888$var$_getPrototypeOf(o) {\n $ee50aef087047888$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $ee50aef087047888$var$_getPrototypeOf(o);\n}\nfunction $ee50aef087047888$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $ee50aef087047888$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $ee50aef087047888$var$_setPrototypeOf(o, p) {\n $ee50aef087047888$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $ee50aef087047888$var$_setPrototypeOf(o, p);\n}\nvar $ee50aef087047888$var$ViewMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $ee50aef087047888$var$_inherits(ViewMode, _GeoJsonEditMode);\n var _super = $ee50aef087047888$var$_createSuper(ViewMode);\n function ViewMode() {\n $ee50aef087047888$var$_classCallCheck(this, ViewMode);\n return _super.apply(this, arguments);\n }\n return ViewMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.ViewMode = $ee50aef087047888$var$ViewMode;\n\n});\n\nparcelRegister(\"hva1l\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.MeasureDistanceMode = void 0;\n\nvar $cbdd1ad6c7eac60d$var$_distance = $cbdd1ad6c7eac60d$var$_interopRequireDefault((parcelRequire(\"b5wF2\")));\n\nvar $cbdd1ad6c7eac60d$var$_midpoint = $cbdd1ad6c7eac60d$var$_interopRequireDefault((parcelRequire(\"k2FWh\")));\n\nvar $hs5Hv = parcelRequire(\"hs5Hv\");\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\nfunction $cbdd1ad6c7eac60d$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $cbdd1ad6c7eac60d$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $cbdd1ad6c7eac60d$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $cbdd1ad6c7eac60d$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $cbdd1ad6c7eac60d$var$_typeof(obj);\n}\nfunction $cbdd1ad6c7eac60d$var$_toConsumableArray(arr) {\n return $cbdd1ad6c7eac60d$var$_arrayWithoutHoles(arr) || $cbdd1ad6c7eac60d$var$_iterableToArray(arr) || $cbdd1ad6c7eac60d$var$_unsupportedIterableToArray(arr) || $cbdd1ad6c7eac60d$var$_nonIterableSpread();\n}\nfunction $cbdd1ad6c7eac60d$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $cbdd1ad6c7eac60d$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $cbdd1ad6c7eac60d$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $cbdd1ad6c7eac60d$var$_arrayLikeToArray(o, minLen);\n}\nfunction $cbdd1ad6c7eac60d$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $cbdd1ad6c7eac60d$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $cbdd1ad6c7eac60d$var$_arrayLikeToArray(arr);\n}\nfunction $cbdd1ad6c7eac60d$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $cbdd1ad6c7eac60d$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $cbdd1ad6c7eac60d$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $cbdd1ad6c7eac60d$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $cbdd1ad6c7eac60d$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $cbdd1ad6c7eac60d$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $cbdd1ad6c7eac60d$var$_createSuper(Derived) {\n return function() {\n var Super = $cbdd1ad6c7eac60d$var$_getPrototypeOf(Derived), result;\n if ($cbdd1ad6c7eac60d$var$_isNativeReflectConstruct()) {\n var NewTarget = $cbdd1ad6c7eac60d$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $cbdd1ad6c7eac60d$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $cbdd1ad6c7eac60d$var$_possibleConstructorReturn(self, call) {\n if (call && ($cbdd1ad6c7eac60d$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $cbdd1ad6c7eac60d$var$_assertThisInitialized(self);\n}\nfunction $cbdd1ad6c7eac60d$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $cbdd1ad6c7eac60d$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $cbdd1ad6c7eac60d$var$_getPrototypeOf(o) {\n $cbdd1ad6c7eac60d$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $cbdd1ad6c7eac60d$var$_getPrototypeOf(o);\n}\nfunction $cbdd1ad6c7eac60d$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $cbdd1ad6c7eac60d$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $cbdd1ad6c7eac60d$var$_setPrototypeOf(o, p) {\n $cbdd1ad6c7eac60d$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $cbdd1ad6c7eac60d$var$_setPrototypeOf(o, p);\n}\nfunction $cbdd1ad6c7eac60d$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $cbdd1ad6c7eac60d$var$MeasureDistanceMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $cbdd1ad6c7eac60d$var$_inherits(MeasureDistanceMode, _GeoJsonEditMode);\n var _super = $cbdd1ad6c7eac60d$var$_createSuper(MeasureDistanceMode);\n function MeasureDistanceMode() {\n var _this;\n $cbdd1ad6c7eac60d$var$_classCallCheck(this, MeasureDistanceMode);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n _this = _super.call.apply(_super, [\n this\n ].concat(args));\n $cbdd1ad6c7eac60d$var$_defineProperty($cbdd1ad6c7eac60d$var$_assertThisInitialized(_this), \"_isMeasuringSessionFinished\", false);\n $cbdd1ad6c7eac60d$var$_defineProperty($cbdd1ad6c7eac60d$var$_assertThisInitialized(_this), \"_currentTooltips\", []);\n $cbdd1ad6c7eac60d$var$_defineProperty($cbdd1ad6c7eac60d$var$_assertThisInitialized(_this), \"_currentDistance\", 0);\n $cbdd1ad6c7eac60d$var$_defineProperty($cbdd1ad6c7eac60d$var$_assertThisInitialized(_this), \"_calculateDistanceForTooltip\", function(_ref) {\n var positionA = _ref.positionA, positionB = _ref.positionB, modeConfig = _ref.modeConfig;\n var _ref2 = modeConfig || {}, turfOptions = _ref2.turfOptions, measurementCallback = _ref2.measurementCallback;\n var distance = (0, $cbdd1ad6c7eac60d$var$_distance[\"default\"])(positionA, positionB, turfOptions);\n if (measurementCallback) measurementCallback(distance);\n return distance;\n });\n return _this;\n }\n $cbdd1ad6c7eac60d$var$_createClass(MeasureDistanceMode, [\n {\n key: \"_formatTooltip\",\n value: function _formatTooltip(distance, modeConfig) {\n var _ref3 = modeConfig || {}, formatTooltip = _ref3.formatTooltip, turfOptions = _ref3.turfOptions;\n var units = turfOptions && turfOptions.units || \"kilometers\";\n var text;\n if (formatTooltip) text = formatTooltip(distance);\n else // By default, round to 2 decimal places and append units\n text = \"\".concat(parseFloat(distance).toFixed(2), \" \").concat(units);\n return text;\n }\n },\n {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n var modeConfig = props.modeConfig, data = props.data, onEdit = props.onEdit;\n var _ref4 = modeConfig || {}, _ref4$centerTooltipsO = _ref4.centerTooltipsOnLine, centerTooltipsOnLine = _ref4$centerTooltipsO === void 0 ? false : _ref4$centerTooltipsO; // restart measuring session\n if (this._isMeasuringSessionFinished) {\n this._isMeasuringSessionFinished = false;\n this.resetClickSequence();\n this._currentTooltips = [];\n this._currentDistance = 0;\n }\n var picks = event.picks;\n var clickedEditHandle = (0, $hs5Hv.getPickedEditHandle)(picks);\n var positionAdded = false;\n if (!clickedEditHandle) {\n // Don't add another point right next to an existing one\n this.addClickSequence(event);\n positionAdded = true;\n }\n var clickSequence = this.getClickSequence();\n if (clickSequence.length > 1 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1) // They clicked the last point (or double-clicked), so add the LineString\n this._isMeasuringSessionFinished = true;\n else if (positionAdded) {\n if (clickSequence.length > 1) {\n this._currentDistance += this._calculateDistanceForTooltip({\n positionA: clickSequence[clickSequence.length - 2],\n positionB: clickSequence[clickSequence.length - 1],\n modeConfig: modeConfig\n });\n var tooltipPosition = centerTooltipsOnLine ? (0, $cbdd1ad6c7eac60d$var$_midpoint[\"default\"])(clickSequence[clickSequence.length - 2], clickSequence[clickSequence.length - 1]).geometry.coordinates : event.mapCoords;\n this._currentTooltips.push({\n position: tooltipPosition,\n text: this._formatTooltip(this._currentDistance, modeConfig)\n });\n } // new tentative point\n onEdit({\n // data is the same\n updatedData: data,\n editType: \"addTentativePosition\",\n editContext: {\n position: event.mapCoords\n }\n });\n }\n }\n },\n {\n key: \"handleKeyUp\",\n value: function handleKeyUp(event, props) {\n if (this._isMeasuringSessionFinished) return;\n event.stopPropagation();\n var key = event.key;\n var clickSequenceLength = this.getClickSequence().length;\n switch(key){\n case \"Escape\":\n this._isMeasuringSessionFinished = true;\n if (clickSequenceLength === 1) {\n this.resetClickSequence();\n this._currentTooltips = [];\n } // force update drawings\n props.onUpdateCursor(\"cell\");\n break;\n case \"Enter\":\n this.handleClick(props.lastPointerMoveEvent, props);\n this._isMeasuringSessionFinished = true;\n break;\n default:\n break;\n }\n }\n },\n {\n key: \"getGuides\",\n value: function getGuides(props) {\n var _guides$features;\n var lastPointerMoveEvent = props.lastPointerMoveEvent;\n var clickSequence = this.getClickSequence();\n var lastCoords = lastPointerMoveEvent && !this._isMeasuringSessionFinished ? [\n lastPointerMoveEvent.mapCoords\n ] : [];\n var guides = {\n type: \"FeatureCollection\",\n features: []\n };\n if (clickSequence.length > 0) guides.features.push({\n type: \"Feature\",\n properties: {\n guideType: \"tentative\"\n },\n geometry: {\n type: \"LineString\",\n coordinates: [].concat($cbdd1ad6c7eac60d$var$_toConsumableArray(clickSequence), lastCoords)\n }\n });\n var editHandles = clickSequence.map(function(clickedCoord, index) {\n return {\n type: \"Feature\",\n properties: {\n guideType: \"editHandle\",\n editHandleType: \"existing\",\n featureIndex: -1,\n positionIndexes: [\n index\n ]\n },\n geometry: {\n type: \"Point\",\n coordinates: clickedCoord\n }\n };\n });\n (_guides$features = guides.features).push.apply(_guides$features, $cbdd1ad6c7eac60d$var$_toConsumableArray(editHandles)); // @ts-ignore\n return guides;\n }\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor(\"cell\");\n }\n },\n {\n key: \"getTooltips\",\n value: function getTooltips(props) {\n var lastPointerMoveEvent = props.lastPointerMoveEvent, modeConfig = props.modeConfig;\n var _ref5 = modeConfig || {}, _ref5$centerTooltipsO = _ref5.centerTooltipsOnLine, centerTooltipsOnLine = _ref5$centerTooltipsO === void 0 ? false : _ref5$centerTooltipsO;\n var positions = this.getClickSequence();\n if (positions.length > 0 && lastPointerMoveEvent && !this._isMeasuringSessionFinished) {\n var distance = this._calculateDistanceForTooltip({\n positionA: positions[positions.length - 1],\n positionB: lastPointerMoveEvent.mapCoords,\n modeConfig: props.modeConfig\n });\n var tooltipPosition = centerTooltipsOnLine ? (0, $cbdd1ad6c7eac60d$var$_midpoint[\"default\"])(positions[positions.length - 1], lastPointerMoveEvent.mapCoords).geometry.coordinates : lastPointerMoveEvent.mapCoords;\n return [].concat($cbdd1ad6c7eac60d$var$_toConsumableArray(this._currentTooltips), [\n {\n position: tooltipPosition,\n text: this._formatTooltip(this._currentDistance + distance, modeConfig)\n }\n ]);\n }\n return this._currentTooltips;\n }\n }\n ]);\n return MeasureDistanceMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.MeasureDistanceMode = $cbdd1ad6c7eac60d$var$MeasureDistanceMode;\n\n});\nparcelRegister(\"k2FWh\", function(module, exports) {\n\n$parcel$defineInteropFlag(module.exports);\n\n$parcel$export(module.exports, \"default\", function () { return $03c3f1a83bad9469$export$2e2bcd8739ae039; });\n\nvar $fIrif = parcelRequire(\"fIrif\");\n\nvar $6mkzC = parcelRequire(\"6mkzC\");\n\nvar $3mqzs = parcelRequire(\"3mqzs\");\n/**\n * Takes two {@link Point|points} and returns a point midway between them.\n * The midpoint is calculated geodesically, meaning the curvature of the earth is taken into account.\n *\n * @name midpoint\n * @param {Coord} point1 first point\n * @param {Coord} point2 second point\n * @returns {Feature} a point midway between `pt1` and `pt2`\n * @example\n * var point1 = turf.point([144.834823, -37.771257]);\n * var point2 = turf.point([145.14244, -37.830937]);\n *\n * var midpoint = turf.midpoint(point1, point2);\n *\n * //addToMap\n * var addToMap = [point1, point2, midpoint];\n * midpoint.properties['marker-color'] = '#f00';\n */ function $03c3f1a83bad9469$var$midpoint(point1, point2) {\n var dist = (0, $3mqzs.default)(point1, point2);\n var heading = (0, $fIrif.default)(point1, point2);\n var midpoint = (0, $6mkzC.default)(point1, dist / 2, heading);\n return midpoint;\n}\nvar $03c3f1a83bad9469$export$2e2bcd8739ae039 = $03c3f1a83bad9469$var$midpoint;\n\n});\nparcelRegister(\"fIrif\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b71022f5333f7ca3$export$2e2bcd8739ae039; });\n\nvar $jTOKR = parcelRequire(\"jTOKR\");\n\nvar $56tzG = parcelRequire(\"56tzG\");\nfunction $b71022f5333f7ca3$export$2e2bcd8739ae039(start, end, options) {\n if (options === void 0) options = {};\n // Reverse calculation\n if (options.final === true) return $b71022f5333f7ca3$var$calculateFinalBearing(start, end);\n var coordinates1 = (0, $56tzG.getCoord)(start);\n var coordinates2 = (0, $56tzG.getCoord)(end);\n var lon1 = (0, $jTOKR.degreesToRadians)(coordinates1[0]);\n var lon2 = (0, $jTOKR.degreesToRadians)(coordinates2[0]);\n var lat1 = (0, $jTOKR.degreesToRadians)(coordinates1[1]);\n var lat2 = (0, $jTOKR.degreesToRadians)(coordinates2[1]);\n var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n var b = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n return (0, $jTOKR.radiansToDegrees)(Math.atan2(a, b));\n}\n/**\n * Calculates Final Bearing\n *\n * @private\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @returns {number} bearing\n */ function $b71022f5333f7ca3$var$calculateFinalBearing(start, end) {\n // Swap start & end\n var bear = $b71022f5333f7ca3$export$2e2bcd8739ae039(end, start);\n bear = (bear + 180) % 360;\n return bear;\n}\n\n});\nparcelRegister(\"jTOKR\", function(module, exports) {\n\n$parcel$export(module.exports, \"point\", function () { return $e7ca863dd06c8a84$export$105684a3041cb6f3; });\n$parcel$export(module.exports, \"isNumber\", function () { return $e7ca863dd06c8a84$export$7e4aa119212bc614; });\n$parcel$export(module.exports, \"radiansToLength\", function () { return $e7ca863dd06c8a84$export$f234631d6a2eedf8; });\n$parcel$export(module.exports, \"lengthToRadians\", function () { return $e7ca863dd06c8a84$export$a2280f7debae8f10; });\n$parcel$export(module.exports, \"radiansToDegrees\", function () { return $e7ca863dd06c8a84$export$c41dd2a8460d3196; });\n$parcel$export(module.exports, \"degreesToRadians\", function () { return $e7ca863dd06c8a84$export$c9fcf1a7df975d78; });\n/**\n * @module helpers\n */ /**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */ var $e7ca863dd06c8a84$export$e3a1ee0e9945697f = 6371008.8;\nvar $e7ca863dd06c8a84$export$f929e47acbed771a = {\n centimeters: $e7ca863dd06c8a84$export$e3a1ee0e9945697f * 100,\n centimetres: $e7ca863dd06c8a84$export$e3a1ee0e9945697f * 100,\n degrees: $e7ca863dd06c8a84$export$e3a1ee0e9945697f / 111325,\n feet: $e7ca863dd06c8a84$export$e3a1ee0e9945697f * 3.28084,\n inches: $e7ca863dd06c8a84$export$e3a1ee0e9945697f * 39.37,\n kilometers: $e7ca863dd06c8a84$export$e3a1ee0e9945697f / 1000,\n kilometres: $e7ca863dd06c8a84$export$e3a1ee0e9945697f / 1000,\n meters: $e7ca863dd06c8a84$export$e3a1ee0e9945697f,\n metres: $e7ca863dd06c8a84$export$e3a1ee0e9945697f,\n miles: $e7ca863dd06c8a84$export$e3a1ee0e9945697f / 1609.344,\n millimeters: $e7ca863dd06c8a84$export$e3a1ee0e9945697f * 1000,\n millimetres: $e7ca863dd06c8a84$export$e3a1ee0e9945697f * 1000,\n nauticalmiles: $e7ca863dd06c8a84$export$e3a1ee0e9945697f / 1852,\n radians: 1,\n yards: $e7ca863dd06c8a84$export$e3a1ee0e9945697f * 1.0936\n};\nvar $e7ca863dd06c8a84$export$95cef4899be7420 = {\n centimeters: 100,\n centimetres: 100,\n degrees: 1 / 111325,\n feet: 3.28084,\n inches: 39.37,\n kilometers: 0.001,\n kilometres: 0.001,\n meters: 1,\n metres: 1,\n miles: 1 / 1609.344,\n millimeters: 1000,\n millimetres: 1000,\n nauticalmiles: 1 / 1852,\n radians: 1 / $e7ca863dd06c8a84$export$e3a1ee0e9945697f,\n yards: 1.0936133\n};\nvar $e7ca863dd06c8a84$export$44665ce4f7f4c82b = {\n acres: 0.000247105,\n centimeters: 10000,\n centimetres: 10000,\n feet: 10.763910417,\n hectares: 0.0001,\n inches: 1550.003100006,\n kilometers: 0.000001,\n kilometres: 0.000001,\n meters: 1,\n metres: 1,\n miles: 3.86e-7,\n millimeters: 1000000,\n millimetres: 1000000,\n yards: 1.195990046\n};\nfunction $e7ca863dd06c8a84$export$ced6ed16dfd6a264(geom, properties, options) {\n if (options === void 0) options = {};\n var feat = {\n type: \"Feature\"\n };\n if (options.id === 0 || options.id) feat.id = options.id;\n if (options.bbox) feat.bbox = options.bbox;\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nfunction $e7ca863dd06c8a84$export$42a7622cbf932bb(type, coordinates, _options) {\n if (_options === void 0) _options = {};\n switch(type){\n case \"Point\":\n return $e7ca863dd06c8a84$export$105684a3041cb6f3(coordinates).geometry;\n case \"LineString\":\n return $e7ca863dd06c8a84$export$98ec381bb06902c3(coordinates).geometry;\n case \"Polygon\":\n return $e7ca863dd06c8a84$export$b7b19aa0ee06c73(coordinates).geometry;\n case \"MultiPoint\":\n return $e7ca863dd06c8a84$export$335fc20ed6b6dbb6(coordinates).geometry;\n case \"MultiLineString\":\n return $e7ca863dd06c8a84$export$bd735230309493da(coordinates).geometry;\n case \"MultiPolygon\":\n return $e7ca863dd06c8a84$export$79bd594da96638d3(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\nfunction $e7ca863dd06c8a84$export$105684a3041cb6f3(coordinates, properties, options) {\n if (options === void 0) options = {};\n if (!coordinates) throw new Error(\"coordinates is required\");\n if (!Array.isArray(coordinates)) throw new Error(\"coordinates must be an Array\");\n if (coordinates.length < 2) throw new Error(\"coordinates must be at least 2 numbers long\");\n if (!$e7ca863dd06c8a84$export$7e4aa119212bc614(coordinates[0]) || !$e7ca863dd06c8a84$export$7e4aa119212bc614(coordinates[1])) throw new Error(\"coordinates must contain numbers\");\n var geom = {\n type: \"Point\",\n coordinates: coordinates\n };\n return $e7ca863dd06c8a84$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $e7ca863dd06c8a84$export$9f048bf86ee2e9d2(coordinates, properties, options) {\n if (options === void 0) options = {};\n return $e7ca863dd06c8a84$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $e7ca863dd06c8a84$export$105684a3041cb6f3(coords, properties);\n }), options);\n}\nfunction $e7ca863dd06c8a84$export$b7b19aa0ee06c73(coordinates, properties, options) {\n if (options === void 0) options = {};\n for(var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++){\n var ring = coordinates_1[_i];\n if (ring.length < 4) throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n for(var j = 0; j < ring[ring.length - 1].length; j++){\n // Check if first point of Polygon contains two numbers\n if (ring[ring.length - 1][j] !== ring[0][j]) throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n var geom = {\n type: \"Polygon\",\n coordinates: coordinates\n };\n return $e7ca863dd06c8a84$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $e7ca863dd06c8a84$export$8869eb68a940f9c2(coordinates, properties, options) {\n if (options === void 0) options = {};\n return $e7ca863dd06c8a84$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $e7ca863dd06c8a84$export$b7b19aa0ee06c73(coords, properties);\n }), options);\n}\nfunction $e7ca863dd06c8a84$export$98ec381bb06902c3(coordinates, properties, options) {\n if (options === void 0) options = {};\n if (coordinates.length < 2) throw new Error(\"coordinates must be an array of two or more positions\");\n var geom = {\n type: \"LineString\",\n coordinates: coordinates\n };\n return $e7ca863dd06c8a84$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $e7ca863dd06c8a84$export$74f7306c35db993f(coordinates, properties, options) {\n if (options === void 0) options = {};\n return $e7ca863dd06c8a84$export$4717c67ac3e5e04d(coordinates.map(function(coords) {\n return $e7ca863dd06c8a84$export$98ec381bb06902c3(coords, properties);\n }), options);\n}\nfunction $e7ca863dd06c8a84$export$4717c67ac3e5e04d(features, options) {\n if (options === void 0) options = {};\n var fc = {\n type: \"FeatureCollection\"\n };\n if (options.id) fc.id = options.id;\n if (options.bbox) fc.bbox = options.bbox;\n fc.features = features;\n return fc;\n}\nfunction $e7ca863dd06c8a84$export$bd735230309493da(coordinates, properties, options) {\n if (options === void 0) options = {};\n var geom = {\n type: \"MultiLineString\",\n coordinates: coordinates\n };\n return $e7ca863dd06c8a84$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $e7ca863dd06c8a84$export$335fc20ed6b6dbb6(coordinates, properties, options) {\n if (options === void 0) options = {};\n var geom = {\n type: \"MultiPoint\",\n coordinates: coordinates\n };\n return $e7ca863dd06c8a84$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $e7ca863dd06c8a84$export$79bd594da96638d3(coordinates, properties, options) {\n if (options === void 0) options = {};\n var geom = {\n type: \"MultiPolygon\",\n coordinates: coordinates\n };\n return $e7ca863dd06c8a84$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $e7ca863dd06c8a84$export$9242f1e18250422a(geometries, properties, options) {\n if (options === void 0) options = {};\n var geom = {\n type: \"GeometryCollection\",\n geometries: geometries\n };\n return $e7ca863dd06c8a84$export$ced6ed16dfd6a264(geom, properties, options);\n}\nfunction $e7ca863dd06c8a84$export$2077e0241d6afd3c(num, precision) {\n if (precision === void 0) precision = 0;\n if (precision && !(precision >= 0)) throw new Error(\"precision must be a positive number\");\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nfunction $e7ca863dd06c8a84$export$f234631d6a2eedf8(radians, units) {\n if (units === void 0) units = \"kilometers\";\n var factor = $e7ca863dd06c8a84$export$f929e47acbed771a[units];\n if (!factor) throw new Error(units + \" units is invalid\");\n return radians * factor;\n}\nfunction $e7ca863dd06c8a84$export$a2280f7debae8f10(distance, units) {\n if (units === void 0) units = \"kilometers\";\n var factor = $e7ca863dd06c8a84$export$f929e47acbed771a[units];\n if (!factor) throw new Error(units + \" units is invalid\");\n return distance / factor;\n}\nfunction $e7ca863dd06c8a84$export$c7a138e00a89bd01(distance, units) {\n return $e7ca863dd06c8a84$export$c41dd2a8460d3196($e7ca863dd06c8a84$export$a2280f7debae8f10(distance, units));\n}\nfunction $e7ca863dd06c8a84$export$f2077d29c73b33ec(bearing) {\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\nfunction $e7ca863dd06c8a84$export$c41dd2a8460d3196(radians) {\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\nfunction $e7ca863dd06c8a84$export$c9fcf1a7df975d78(degrees) {\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\nfunction $e7ca863dd06c8a84$export$ea1536a749e80563(length, originalUnit, finalUnit) {\n if (originalUnit === void 0) originalUnit = \"kilometers\";\n if (finalUnit === void 0) finalUnit = \"kilometers\";\n if (!(length >= 0)) throw new Error(\"length must be a positive number\");\n return $e7ca863dd06c8a84$export$f234631d6a2eedf8($e7ca863dd06c8a84$export$a2280f7debae8f10(length, originalUnit), finalUnit);\n}\nfunction $e7ca863dd06c8a84$export$2e65e2c759f7e341(area, originalUnit, finalUnit) {\n if (originalUnit === void 0) originalUnit = \"meters\";\n if (finalUnit === void 0) finalUnit = \"kilometers\";\n if (!(area >= 0)) throw new Error(\"area must be a positive number\");\n var startFactor = $e7ca863dd06c8a84$export$44665ce4f7f4c82b[originalUnit];\n if (!startFactor) throw new Error(\"invalid original units\");\n var finalFactor = $e7ca863dd06c8a84$export$44665ce4f7f4c82b[finalUnit];\n if (!finalFactor) throw new Error(\"invalid final units\");\n return area / startFactor * finalFactor;\n}\nfunction $e7ca863dd06c8a84$export$7e4aa119212bc614(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nfunction $e7ca863dd06c8a84$export$a6cdc56e425d0d0a(input) {\n return !!input && input.constructor === Object;\n}\nfunction $e7ca863dd06c8a84$export$28ac7bb8f5309bea(bbox) {\n if (!bbox) throw new Error(\"bbox is required\");\n if (!Array.isArray(bbox)) throw new Error(\"bbox must be an Array\");\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n bbox.forEach(function(num) {\n if (!$e7ca863dd06c8a84$export$7e4aa119212bc614(num)) throw new Error(\"bbox must only contain numbers\");\n });\n}\nfunction $e7ca863dd06c8a84$export$f35f128fd59ea256(id) {\n if (!id) throw new Error(\"id is required\");\n if ([\n \"string\",\n \"number\"\n ].indexOf(typeof id) === -1) throw new Error(\"id must be a number or a string\");\n}\n\n});\n\nparcelRegister(\"56tzG\", function(module, exports) {\n\n$parcel$export(module.exports, \"getCoord\", function () { return $3b74742ca348be90$export$b4663c6e64a770bc; });\n\nvar $jTOKR = parcelRequire(\"jTOKR\");\nfunction $3b74742ca348be90$export$b4663c6e64a770bc(coord) {\n if (!coord) throw new Error(\"coord is required\");\n if (!Array.isArray(coord)) {\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") return coord.geometry.coordinates;\n if (coord.type === \"Point\") return coord.coordinates;\n }\n if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) return coord;\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nfunction $3b74742ca348be90$export$39e042fd83f1b62e(coords) {\n if (Array.isArray(coords)) return coords;\n // Feature\n if (coords.type === \"Feature\") {\n if (coords.geometry !== null) return coords.geometry.coordinates;\n } else {\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n }\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nfunction $3b74742ca348be90$export$ab82360ed81b09b9(coordinates) {\n if (coordinates.length > 1 && (0, $jTOKR.isNumber)(coordinates[0]) && (0, $jTOKR.isNumber)(coordinates[1])) return true;\n if (Array.isArray(coordinates[0]) && coordinates[0].length) return $3b74742ca348be90$export$ab82360ed81b09b9(coordinates[0]);\n throw new Error(\"coordinates must only contain numbers\");\n}\nfunction $3b74742ca348be90$export$329ecc560bd873a7(value, type, name) {\n if (!type || !name) throw new Error(\"type and name required\");\n if (!value || value.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type);\n}\nfunction $3b74742ca348be90$export$8b96d9ca92084402(feature, type, name) {\n if (!feature) throw new Error(\"No feature passed\");\n if (!name) throw new Error(\".featureOf() requires a name\");\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n}\nfunction $3b74742ca348be90$export$bcf04c9d01e728b6(featureCollection, type, name) {\n if (!featureCollection) throw new Error(\"No featureCollection passed\");\n if (!name) throw new Error(\".collectionOf() requires a name\");\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n for(var _i = 0, _a = featureCollection.features; _i < _a.length; _i++){\n var feature = _a[_i];\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n if (!feature.geometry || feature.geometry.type !== type) throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\n }\n}\nfunction $3b74742ca348be90$export$b8f320eb9549c8fd(geojson) {\n if (geojson.type === \"Feature\") return geojson.geometry;\n return geojson;\n}\nfunction $3b74742ca348be90$export$e2b5c5db9e2009fd(geojson, _name) {\n if (geojson.type === \"FeatureCollection\") return \"FeatureCollection\";\n if (geojson.type === \"GeometryCollection\") return \"GeometryCollection\";\n if (geojson.type === \"Feature\" && geojson.geometry !== null) return geojson.geometry.type;\n return geojson.type;\n}\n\n});\n\n\nparcelRegister(\"6mkzC\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $4a14c1a4dad10688$export$2e2bcd8739ae039; });\n// http://en.wikipedia.org/wiki/Haversine_formula\n// http://www.movable-type.co.uk/scripts/latlong.html\n\nvar $jTOKR = parcelRequire(\"jTOKR\");\n\nvar $56tzG = parcelRequire(\"56tzG\");\nfunction $4a14c1a4dad10688$export$2e2bcd8739ae039(origin, distance, bearing, options) {\n if (options === void 0) options = {};\n // Handle input\n var coordinates1 = (0, $56tzG.getCoord)(origin);\n var longitude1 = (0, $jTOKR.degreesToRadians)(coordinates1[0]);\n var latitude1 = (0, $jTOKR.degreesToRadians)(coordinates1[1]);\n var bearingRad = (0, $jTOKR.degreesToRadians)(bearing);\n var radians = (0, $jTOKR.lengthToRadians)(distance, options.units);\n // Main\n var latitude2 = Math.asin(Math.sin(latitude1) * Math.cos(radians) + Math.cos(latitude1) * Math.sin(radians) * Math.cos(bearingRad));\n var longitude2 = longitude1 + Math.atan2(Math.sin(bearingRad) * Math.sin(radians) * Math.cos(latitude1), Math.cos(radians) - Math.sin(latitude1) * Math.sin(latitude2));\n var lng = (0, $jTOKR.radiansToDegrees)(longitude2);\n var lat = (0, $jTOKR.radiansToDegrees)(latitude2);\n return (0, $jTOKR.point)([\n lng,\n lat\n ], options.properties);\n}\n\n});\n\nparcelRegister(\"3mqzs\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $2728099f4843c338$export$2e2bcd8739ae039; });\n\nvar $56tzG = parcelRequire(\"56tzG\");\n\nvar $jTOKR = parcelRequire(\"jTOKR\");\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Calculates the distance between two {@link Point|points} in degrees, radians, miles, or kilometers.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name distance\n * @param {Coord | Point} from origin point or coordinate\n * @param {Coord | Point} to destination point or coordinate\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.distance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */ function $2728099f4843c338$var$distance(from, to, options) {\n if (options === void 0) options = {};\n var coordinates1 = (0, $56tzG.getCoord)(from);\n var coordinates2 = (0, $56tzG.getCoord)(to);\n var dLat = (0, $jTOKR.degreesToRadians)(coordinates2[1] - coordinates1[1]);\n var dLon = (0, $jTOKR.degreesToRadians)(coordinates2[0] - coordinates1[0]);\n var lat1 = (0, $jTOKR.degreesToRadians)(coordinates1[1]);\n var lat2 = (0, $jTOKR.degreesToRadians)(coordinates2[1]);\n var a = Math.pow(Math.sin(dLat / 2), 2) + Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n return (0, $jTOKR.radiansToLength)(2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)), options.units);\n}\nvar $2728099f4843c338$export$2e2bcd8739ae039 = $2728099f4843c338$var$distance;\n\n});\n\n\n\nparcelRegister(\"dZhwn\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.MeasureAreaMode = void 0;\n\nvar $a2ee90377a4a1953$var$_area = $a2ee90377a4a1953$var$_interopRequireDefault((parcelRequire(\"lSVDw\")));\n\nvar $a2ee90377a4a1953$var$_centroid = $a2ee90377a4a1953$var$_interopRequireDefault((parcelRequire(\"d9r3a\")));\n\nvar $fVfme = parcelRequire(\"fVfme\");\nfunction $a2ee90377a4a1953$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $a2ee90377a4a1953$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $a2ee90377a4a1953$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $a2ee90377a4a1953$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $a2ee90377a4a1953$var$_typeof(obj);\n}\nfunction $a2ee90377a4a1953$var$ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction $a2ee90377a4a1953$var$_objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) $a2ee90377a4a1953$var$ownKeys(Object(source), true).forEach(function(key) {\n $a2ee90377a4a1953$var$_defineProperty(target, key, source[key]);\n });\n else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n else $a2ee90377a4a1953$var$ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction $a2ee90377a4a1953$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nfunction $a2ee90377a4a1953$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $a2ee90377a4a1953$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $a2ee90377a4a1953$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $a2ee90377a4a1953$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $a2ee90377a4a1953$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $a2ee90377a4a1953$var$_get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) $a2ee90377a4a1953$var$_get = Reflect.get;\n else $a2ee90377a4a1953$var$_get = function _get(target, property, receiver) {\n var base = $a2ee90377a4a1953$var$_superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) return desc.get.call(receiver);\n return desc.value;\n };\n return $a2ee90377a4a1953$var$_get(target, property, receiver || target);\n}\nfunction $a2ee90377a4a1953$var$_superPropBase(object, property) {\n while(!Object.prototype.hasOwnProperty.call(object, property)){\n object = $a2ee90377a4a1953$var$_getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nfunction $a2ee90377a4a1953$var$_createSuper(Derived) {\n return function() {\n var Super = $a2ee90377a4a1953$var$_getPrototypeOf(Derived), result;\n if ($a2ee90377a4a1953$var$_isNativeReflectConstruct()) {\n var NewTarget = $a2ee90377a4a1953$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $a2ee90377a4a1953$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $a2ee90377a4a1953$var$_possibleConstructorReturn(self, call) {\n if (call && ($a2ee90377a4a1953$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $a2ee90377a4a1953$var$_assertThisInitialized(self);\n}\nfunction $a2ee90377a4a1953$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $a2ee90377a4a1953$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $a2ee90377a4a1953$var$_getPrototypeOf(o) {\n $a2ee90377a4a1953$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $a2ee90377a4a1953$var$_getPrototypeOf(o);\n}\nfunction $a2ee90377a4a1953$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $a2ee90377a4a1953$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $a2ee90377a4a1953$var$_setPrototypeOf(o, p) {\n $a2ee90377a4a1953$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $a2ee90377a4a1953$var$_setPrototypeOf(o, p);\n}\nvar $a2ee90377a4a1953$var$DEFAULT_TOOLTIPS = [];\nvar $a2ee90377a4a1953$var$MeasureAreaMode = /*#__PURE__*/ function(_DrawPolygonMode) {\n $a2ee90377a4a1953$var$_inherits(MeasureAreaMode, _DrawPolygonMode);\n var _super = $a2ee90377a4a1953$var$_createSuper(MeasureAreaMode);\n function MeasureAreaMode() {\n $a2ee90377a4a1953$var$_classCallCheck(this, MeasureAreaMode);\n return _super.apply(this, arguments);\n }\n $a2ee90377a4a1953$var$_createClass(MeasureAreaMode, [\n {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n var propsWithoutEdit = $a2ee90377a4a1953$var$_objectSpread({}, props, {\n // @ts-ignore\n onEdit: function onEdit() {}\n });\n $a2ee90377a4a1953$var$_get($a2ee90377a4a1953$var$_getPrototypeOf(MeasureAreaMode.prototype), \"handleClick\", this).call(this, event, propsWithoutEdit);\n }\n },\n {\n key: \"getTooltips\",\n value: function getTooltips(props) {\n var tentativeGuide = this.getTentativeGuide(props);\n if (tentativeGuide && tentativeGuide.geometry.type === \"Polygon\") {\n var modeConfig = props.modeConfig;\n var _ref = modeConfig || {}, formatTooltip = _ref.formatTooltip, measurementCallback = _ref.measurementCallback;\n var units = \"sq. m\";\n var centroid = (0, $a2ee90377a4a1953$var$_centroid[\"default\"])(tentativeGuide);\n var area = (0, $a2ee90377a4a1953$var$_area[\"default\"])(tentativeGuide);\n var text;\n if (formatTooltip) text = formatTooltip(area);\n else // By default, round to 2 decimal places and append units\n // @ts-ignore\n text = \"\".concat(parseFloat(area).toFixed(2), \" \").concat(units);\n if (measurementCallback) measurementCallback(area);\n return [\n {\n position: centroid.geometry.coordinates,\n text: text\n }\n ];\n }\n return $a2ee90377a4a1953$var$DEFAULT_TOOLTIPS;\n }\n }\n ]);\n return MeasureAreaMode;\n}($fVfme.DrawPolygonMode);\nmodule.exports.MeasureAreaMode = $a2ee90377a4a1953$var$MeasureAreaMode;\n\n});\nparcelRegister(\"lSVDw\", function(module, exports) {\n\n$parcel$defineInteropFlag(module.exports);\n\n$parcel$export(module.exports, \"default\", function () { return $feeb598a6a7bc109$export$2e2bcd8739ae039; });\n\nvar $cJNDJ = parcelRequire(\"cJNDJ\");\n// Note: change RADIUS => earthRadius\nvar $feeb598a6a7bc109$var$RADIUS = 6378137;\nfunction $feeb598a6a7bc109$export$2e2bcd8739ae039(geojson) {\n return (0, $cJNDJ.geomReduce)(geojson, function(value, geom) {\n return value + $feeb598a6a7bc109$var$calculateArea(geom);\n }, 0);\n}\n/**\n * Calculate Area\n *\n * @private\n * @param {Geometry} geom GeoJSON Geometries\n * @returns {number} area\n */ function $feeb598a6a7bc109$var$calculateArea(geom) {\n var total = 0;\n var i;\n switch(geom.type){\n case \"Polygon\":\n return $feeb598a6a7bc109$var$polygonArea(geom.coordinates);\n case \"MultiPolygon\":\n for(i = 0; i < geom.coordinates.length; i++)total += $feeb598a6a7bc109$var$polygonArea(geom.coordinates[i]);\n return total;\n case \"Point\":\n case \"MultiPoint\":\n case \"LineString\":\n case \"MultiLineString\":\n return 0;\n }\n return 0;\n}\nfunction $feeb598a6a7bc109$var$polygonArea(coords) {\n var total = 0;\n if (coords && coords.length > 0) {\n total += Math.abs($feeb598a6a7bc109$var$ringArea(coords[0]));\n for(var i = 1; i < coords.length; i++)total -= Math.abs($feeb598a6a7bc109$var$ringArea(coords[i]));\n }\n return total;\n}\n/**\n * @private\n * Calculate the approximate area of the polygon were it projected onto the earth.\n * Note that this area will be positive if ring is oriented clockwise, otherwise it will be negative.\n *\n * Reference:\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for Polygons on a Sphere\",\n * JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007 https://trs.jpl.nasa.gov/handle/2014/40409\n *\n * @param {Array>} coords Ring Coordinates\n * @returns {number} The approximate signed geodesic area of the polygon in square meters.\n */ function $feeb598a6a7bc109$var$ringArea(coords) {\n var p1;\n var p2;\n var p3;\n var lowerIndex;\n var middleIndex;\n var upperIndex;\n var i;\n var total = 0;\n var coordsLength = coords.length;\n if (coordsLength > 2) {\n for(i = 0; i < coordsLength; i++){\n if (i === coordsLength - 2) {\n // i = N-2\n lowerIndex = coordsLength - 2;\n middleIndex = coordsLength - 1;\n upperIndex = 0;\n } else if (i === coordsLength - 1) {\n // i = N-1\n lowerIndex = coordsLength - 1;\n middleIndex = 0;\n upperIndex = 1;\n } else {\n // i = 0 to N-3\n lowerIndex = i;\n middleIndex = i + 1;\n upperIndex = i + 2;\n }\n p1 = coords[lowerIndex];\n p2 = coords[middleIndex];\n p3 = coords[upperIndex];\n total += ($feeb598a6a7bc109$var$rad(p3[0]) - $feeb598a6a7bc109$var$rad(p1[0])) * Math.sin($feeb598a6a7bc109$var$rad(p2[1]));\n }\n total = total * $feeb598a6a7bc109$var$RADIUS * $feeb598a6a7bc109$var$RADIUS / 2;\n }\n return total;\n}\nfunction $feeb598a6a7bc109$var$rad(num) {\n return num * Math.PI / 180;\n}\n\n});\n\n\nparcelRegister(\"h2dZX\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.MeasureAngleMode = void 0;\n\nvar $c66d7b575bd3dd12$var$_bearing = $c66d7b575bd3dd12$var$_interopRequireDefault((parcelRequire(\"aDE4l\")));\n\nvar $c66d7b575bd3dd12$var$_center = $c66d7b575bd3dd12$var$_interopRequireDefault((parcelRequire(\"4B93b\")));\n\nvar $c66d7b575bd3dd12$var$_memoize = $c66d7b575bd3dd12$var$_interopRequireDefault((parcelRequire(\"7zWhR\")));\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\nfunction $c66d7b575bd3dd12$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $c66d7b575bd3dd12$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $c66d7b575bd3dd12$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $c66d7b575bd3dd12$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $c66d7b575bd3dd12$var$_typeof(obj);\n}\nfunction $c66d7b575bd3dd12$var$_toConsumableArray(arr) {\n return $c66d7b575bd3dd12$var$_arrayWithoutHoles(arr) || $c66d7b575bd3dd12$var$_iterableToArray(arr) || $c66d7b575bd3dd12$var$_unsupportedIterableToArray(arr) || $c66d7b575bd3dd12$var$_nonIterableSpread();\n}\nfunction $c66d7b575bd3dd12$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $c66d7b575bd3dd12$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $c66d7b575bd3dd12$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $c66d7b575bd3dd12$var$_arrayLikeToArray(o, minLen);\n}\nfunction $c66d7b575bd3dd12$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $c66d7b575bd3dd12$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $c66d7b575bd3dd12$var$_arrayLikeToArray(arr);\n}\nfunction $c66d7b575bd3dd12$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $c66d7b575bd3dd12$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $c66d7b575bd3dd12$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $c66d7b575bd3dd12$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $c66d7b575bd3dd12$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $c66d7b575bd3dd12$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $c66d7b575bd3dd12$var$_createSuper(Derived) {\n return function() {\n var Super = $c66d7b575bd3dd12$var$_getPrototypeOf(Derived), result;\n if ($c66d7b575bd3dd12$var$_isNativeReflectConstruct()) {\n var NewTarget = $c66d7b575bd3dd12$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $c66d7b575bd3dd12$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $c66d7b575bd3dd12$var$_possibleConstructorReturn(self, call) {\n if (call && ($c66d7b575bd3dd12$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $c66d7b575bd3dd12$var$_assertThisInitialized(self);\n}\nfunction $c66d7b575bd3dd12$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $c66d7b575bd3dd12$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $c66d7b575bd3dd12$var$_getPrototypeOf(o) {\n $c66d7b575bd3dd12$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $c66d7b575bd3dd12$var$_getPrototypeOf(o);\n}\nfunction $c66d7b575bd3dd12$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $c66d7b575bd3dd12$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $c66d7b575bd3dd12$var$_setPrototypeOf(o, p) {\n $c66d7b575bd3dd12$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $c66d7b575bd3dd12$var$_setPrototypeOf(o, p);\n}\nfunction $c66d7b575bd3dd12$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $c66d7b575bd3dd12$var$DEFAULT_TOOLTIPS = [];\nvar $c66d7b575bd3dd12$var$MeasureAngleMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $c66d7b575bd3dd12$var$_inherits(MeasureAngleMode, _GeoJsonEditMode);\n var _super = $c66d7b575bd3dd12$var$_createSuper(MeasureAngleMode);\n function MeasureAngleMode() {\n var _this;\n $c66d7b575bd3dd12$var$_classCallCheck(this, MeasureAngleMode);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n _this = _super.call.apply(_super, [\n this\n ].concat(args));\n $c66d7b575bd3dd12$var$_defineProperty($c66d7b575bd3dd12$var$_assertThisInitialized(_this), \"_getTooltips\", (0, $c66d7b575bd3dd12$var$_memoize[\"default\"])(function(_ref) {\n var modeConfig = _ref.modeConfig, vertex = _ref.vertex, point1 = _ref.point1, point2 = _ref.point2;\n var tooltips = $c66d7b575bd3dd12$var$DEFAULT_TOOLTIPS;\n if (vertex && point1 && point2) {\n var _ref2 = modeConfig || {}, formatTooltip = _ref2.formatTooltip, measurementCallback = _ref2.measurementCallback;\n var units = \"deg\";\n var angle1 = (0, $c66d7b575bd3dd12$var$_bearing[\"default\"])(vertex, point1);\n var angle2 = (0, $c66d7b575bd3dd12$var$_bearing[\"default\"])(vertex, point2);\n var angle = Math.abs(angle1 - angle2);\n if (angle > 180) angle = 360 - angle;\n var text;\n if (formatTooltip) text = formatTooltip(angle);\n else // By default, round to 2 decimal places and append units\n // @ts-ignore\n text = \"\".concat(parseFloat(angle).toFixed(2), \" \").concat(units);\n if (measurementCallback) measurementCallback(angle);\n var position = (0, $c66d7b575bd3dd12$var$_center[\"default\"])({\n type: \"FeatureCollection\",\n features: [\n point1,\n point2\n ].map(function(p) {\n return {\n type: \"Feature\",\n geometry: {\n type: \"Point\",\n coordinates: p\n }\n };\n })\n }).geometry.coordinates;\n tooltips = [\n {\n position: position,\n text: text\n }\n ];\n }\n return tooltips;\n }));\n return _this;\n }\n $c66d7b575bd3dd12$var$_createClass(MeasureAngleMode, [\n {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n if (this.getClickSequence().length >= 3) this.resetClickSequence();\n this.addClickSequence(event);\n } // Called when the pointer moved, regardless of whether the pointer is down, up, and whether something was picked\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor(\"cell\");\n }\n },\n {\n key: \"getPoints\",\n value: function getPoints(props) {\n var clickSequence = this.getClickSequence();\n var points = $c66d7b575bd3dd12$var$_toConsumableArray(clickSequence);\n if (clickSequence.length < 3 && props.lastPointerMoveEvent) points.push(props.lastPointerMoveEvent.mapCoords);\n return points;\n } // Return features that can be used as a guide for editing the data\n },\n {\n key: \"getGuides\",\n value: function getGuides(props) {\n var guides = {\n type: \"FeatureCollection\",\n features: []\n };\n var features = guides.features;\n var points = this.getPoints(props);\n if (points.length > 2) features.push({\n type: \"Feature\",\n properties: {\n guideType: \"tentative\"\n },\n geometry: {\n type: \"LineString\",\n coordinates: [\n points[1],\n points[0],\n points[2]\n ]\n }\n });\n else if (points.length > 1) features.push({\n type: \"Feature\",\n properties: {\n guideType: \"tentative\"\n },\n geometry: {\n type: \"LineString\",\n coordinates: [\n points[1],\n points[0]\n ]\n }\n });\n return guides;\n }\n },\n {\n key: \"getTooltips\",\n value: function getTooltips(props) {\n var points = this.getPoints(props);\n return this._getTooltips({\n modeConfig: props.modeConfig,\n vertex: points[0],\n point1: points[1],\n point2: points[2]\n });\n }\n }\n ]);\n return MeasureAngleMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.MeasureAngleMode = $c66d7b575bd3dd12$var$MeasureAngleMode;\n\n});\nparcelRegister(\"7zWhR\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = $584903e32bf1406a$var$memoize;\n// port from @deck.gl/core\nfunction $584903e32bf1406a$var$isEqual(a, b) {\n if (a === b) return true;\n if (Array.isArray(a)) {\n // Special treatment for arrays: compare 1-level deep\n // This is to support equality of matrix/coordinate props\n var len = a.length;\n if (!b || b.length !== len) return false;\n for(var i = 0; i < len; i++){\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n return false;\n}\n/**\n * Speed up consecutive function calls by caching the result of calls with identical input\n * https://en.wikipedia.org/wiki/Memoization\n * @param {function} compute - the function to be memoized\n */ function $584903e32bf1406a$var$memoize(compute) {\n var cachedArgs = {};\n var cachedResult;\n return function(args) {\n for(var key in args)if (!$584903e32bf1406a$var$isEqual(args[key], cachedArgs[key])) {\n cachedResult = compute(args);\n cachedArgs = args;\n break;\n }\n return cachedResult;\n };\n}\n\n});\n\n\nparcelRegister(\"enK8I\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.SnappableMode = void 0;\n\nvar $hs5Hv = parcelRequire(\"hs5Hv\");\n\nvar $1tPZO = parcelRequire(\"1tPZO\");\nfunction $a787010dc91c18c7$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $a787010dc91c18c7$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $a787010dc91c18c7$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $a787010dc91c18c7$var$_typeof(obj);\n}\nfunction $a787010dc91c18c7$var$_createForOfIteratorHelper(o) {\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = $a787010dc91c18c7$var$_unsupportedIterableToArray(o))) {\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var it, normalCompletion = true, didErr = false, err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally{\n if (didErr) throw err;\n }\n }\n };\n}\nfunction $a787010dc91c18c7$var$_toConsumableArray(arr) {\n return $a787010dc91c18c7$var$_arrayWithoutHoles(arr) || $a787010dc91c18c7$var$_iterableToArray(arr) || $a787010dc91c18c7$var$_unsupportedIterableToArray(arr) || $a787010dc91c18c7$var$_nonIterableSpread();\n}\nfunction $a787010dc91c18c7$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $a787010dc91c18c7$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $a787010dc91c18c7$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $a787010dc91c18c7$var$_arrayLikeToArray(o, minLen);\n}\nfunction $a787010dc91c18c7$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $a787010dc91c18c7$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $a787010dc91c18c7$var$_arrayLikeToArray(arr);\n}\nfunction $a787010dc91c18c7$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $a787010dc91c18c7$var$ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction $a787010dc91c18c7$var$_objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) $a787010dc91c18c7$var$ownKeys(Object(source), true).forEach(function(key) {\n $a787010dc91c18c7$var$_defineProperty(target, key, source[key]);\n });\n else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n else $a787010dc91c18c7$var$ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction $a787010dc91c18c7$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $a787010dc91c18c7$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $a787010dc91c18c7$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $a787010dc91c18c7$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $a787010dc91c18c7$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $a787010dc91c18c7$var$_createSuper(Derived) {\n return function() {\n var Super = $a787010dc91c18c7$var$_getPrototypeOf(Derived), result;\n if ($a787010dc91c18c7$var$_isNativeReflectConstruct()) {\n var NewTarget = $a787010dc91c18c7$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $a787010dc91c18c7$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $a787010dc91c18c7$var$_possibleConstructorReturn(self, call) {\n if (call && ($a787010dc91c18c7$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $a787010dc91c18c7$var$_assertThisInitialized(self);\n}\nfunction $a787010dc91c18c7$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $a787010dc91c18c7$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $a787010dc91c18c7$var$_getPrototypeOf(o) {\n $a787010dc91c18c7$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $a787010dc91c18c7$var$_getPrototypeOf(o);\n}\nfunction $a787010dc91c18c7$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $a787010dc91c18c7$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $a787010dc91c18c7$var$_setPrototypeOf(o, p) {\n $a787010dc91c18c7$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $a787010dc91c18c7$var$_setPrototypeOf(o, p);\n}\nfunction $a787010dc91c18c7$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $a787010dc91c18c7$var$SnappableMode = /*#__PURE__*/ function(_GeoJsonEditMode) {\n $a787010dc91c18c7$var$_inherits(SnappableMode, _GeoJsonEditMode);\n var _super = $a787010dc91c18c7$var$_createSuper(SnappableMode);\n function SnappableMode(handler) {\n var _this;\n $a787010dc91c18c7$var$_classCallCheck(this, SnappableMode);\n _this = _super.call(this);\n $a787010dc91c18c7$var$_defineProperty($a787010dc91c18c7$var$_assertThisInitialized(_this), \"_handler\", void 0);\n _this._handler = handler;\n return _this;\n }\n $a787010dc91c18c7$var$_createClass(SnappableMode, [\n {\n key: \"_getSnappedMouseEvent\",\n value: function _getSnappedMouseEvent(event, snapSource, snapTarget) {\n return Object.assign(event, {\n mapCoords: snapTarget.geometry.coordinates,\n pointerDownMapCoords: snapSource && snapSource.geometry.coordinates\n });\n }\n },\n {\n key: \"_getPickedSnapTarget\",\n value: function _getPickedSnapTarget(picks) {\n return (0, $hs5Hv.getPickedEditHandles)(picks).find(function(handle) {\n return handle.properties.editHandleType === \"snap-target\";\n });\n }\n },\n {\n key: \"_getPickedSnapSource\",\n value: function _getPickedSnapSource(pointerDownPicks) {\n return (0, $hs5Hv.getPickedSnapSourceEditHandle)(pointerDownPicks);\n }\n },\n {\n key: \"_getUpdatedSnapSourceHandle\",\n value: function _getUpdatedSnapSourceHandle(snapSourceHandle, data) {\n var _snapSourceHandle$pro = snapSourceHandle.properties, featureIndex = _snapSourceHandle$pro.featureIndex, positionIndexes = _snapSourceHandle$pro.positionIndexes;\n if (!Array.isArray(positionIndexes)) return snapSourceHandle;\n var snapSourceFeature = data.features[featureIndex]; // $FlowFixMe\n var snapSourceCoordinates = positionIndexes.reduce(function(a, b) {\n return a[b];\n }, snapSourceFeature.geometry.coordinates);\n return $a787010dc91c18c7$var$_objectSpread({}, snapSourceHandle, {\n geometry: {\n type: \"Point\",\n coordinates: snapSourceCoordinates\n }\n });\n } // If additionalSnapTargets is present in modeConfig and is populated, this\n },\n {\n key: \"_getSnapTargets\",\n value: function _getSnapTargets(props) {\n var _ref = props.modeConfig || {}, additionalSnapTargets = _ref.additionalSnapTargets;\n additionalSnapTargets = additionalSnapTargets || [];\n var features = [].concat($a787010dc91c18c7$var$_toConsumableArray(props.data.features), $a787010dc91c18c7$var$_toConsumableArray(additionalSnapTargets));\n return features;\n }\n },\n {\n key: \"_getSnapTargetHandles\",\n value: function _getSnapTargetHandles(props) {\n var handles = [];\n var features = this._getSnapTargets(props);\n for(var i = 0; i < features.length; i++){\n // Filter out the currently selected feature(s)\n var isCurrentIndexFeatureNotSelected = !props.selectedIndexes.includes(i);\n if (isCurrentIndexFeatureNotSelected) {\n var geometry = features[i].geometry;\n handles.push.apply(handles, $a787010dc91c18c7$var$_toConsumableArray((0, $hs5Hv.getEditHandlesForGeometry)(geometry, i, \"snap-target\")));\n }\n }\n return handles;\n } // If no snap handle has been picked, only display the edit handles of the\n },\n {\n key: \"getGuides\",\n value: function getGuides(props) {\n var modeConfig = props.modeConfig, lastPointerMoveEvent = props.lastPointerMoveEvent;\n var _ref2 = modeConfig || {}, enableSnapping = _ref2.enableSnapping;\n var guides = {\n type: \"FeatureCollection\",\n features: $a787010dc91c18c7$var$_toConsumableArray(this._handler.getGuides(props).features)\n };\n if (!enableSnapping) return guides;\n var snapSourceHandle = lastPointerMoveEvent && this._getPickedSnapSource(lastPointerMoveEvent.pointerDownPicks); // They started dragging a handle\n // So render the picked handle (in its updated location) and all possible snap targets\n if (snapSourceHandle) {\n var _guides$features;\n (_guides$features = guides.features).push.apply(_guides$features, $a787010dc91c18c7$var$_toConsumableArray(this._getSnapTargetHandles(props)).concat([\n this._getUpdatedSnapSourceHandle(snapSourceHandle, props.data)\n ]));\n return guides;\n } // Render the possible snap source handles\n var features = props.data.features;\n var _iterator = $a787010dc91c18c7$var$_createForOfIteratorHelper(props.selectedIndexes), _step;\n try {\n for(_iterator.s(); !(_step = _iterator.n()).done;){\n var index = _step.value;\n if (index < features.length) {\n var _guides$features2;\n var geometry = features[index].geometry;\n (_guides$features2 = guides.features).push.apply(_guides$features2, $a787010dc91c18c7$var$_toConsumableArray((0, $hs5Hv.getEditHandlesForGeometry)(geometry, index, \"snap-source\")));\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally{\n _iterator.f();\n }\n return guides;\n }\n },\n {\n key: \"_getSnapAwareEvent\",\n value: function _getSnapAwareEvent(event, props) {\n var snapSource = this._getPickedSnapSource(props.lastPointerMoveEvent.pointerDownPicks);\n var snapTarget = this._getPickedSnapTarget(event.picks);\n return snapSource && snapTarget ? this._getSnappedMouseEvent(event, snapSource, snapTarget) : event;\n }\n },\n {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n this._handler.handleStartDragging(event, props);\n }\n },\n {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n this._handler.handleStopDragging(this._getSnapAwareEvent(event, props), props);\n }\n },\n {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n this._handler.handleDragging(this._getSnapAwareEvent(event, props), props);\n }\n },\n {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n this._handler.handlePointerMove(this._getSnapAwareEvent(event, props), props);\n }\n }\n ]);\n return SnappableMode;\n}($1tPZO.GeoJsonEditMode);\nmodule.exports.SnappableMode = $a787010dc91c18c7$var$SnappableMode;\n\n});\n\n\nparcelRegister(\"9brng\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.UNIT = module.exports.PROJECTED_PIXEL_SIZE_MULTIPLIER = void 0;\n/**\n * A multiplier for screen-space width/scale for Arc, Line, Icon and Text layers.\n * Required in order to maintain the same appearance after upgrading to deck.gl v8.5.\n * https://github.com/visgl/deck.gl/blob/master/docs/upgrade-guide.md\n */ var $6afa6014874935db$var$PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;\n/**\n * Unit literal to shader unit number conversion.\n */ module.exports.PROJECTED_PIXEL_SIZE_MULTIPLIER = $6afa6014874935db$var$PROJECTED_PIXEL_SIZE_MULTIPLIER;\nvar $6afa6014874935db$var$UNIT = {\n common: 0,\n meters: 1,\n pixels: 2\n};\nmodule.exports.UNIT = $6afa6014874935db$var$UNIT;\n\n});\n\nparcelRegister(\"7epLg\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\n\nvar $coXLq = parcelRequire(\"coXLq\");\nfunction $543dd2e3fbf800bb$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $543dd2e3fbf800bb$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $543dd2e3fbf800bb$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $543dd2e3fbf800bb$var$_typeof(obj);\n}\nfunction $543dd2e3fbf800bb$var$ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction $543dd2e3fbf800bb$var$_objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) $543dd2e3fbf800bb$var$ownKeys(Object(source), true).forEach(function(key) {\n $543dd2e3fbf800bb$var$_defineProperty(target, key, source[key]);\n });\n else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n else $543dd2e3fbf800bb$var$ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction $543dd2e3fbf800bb$var$_createForOfIteratorHelper(o) {\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = $543dd2e3fbf800bb$var$_unsupportedIterableToArray(o))) {\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var it, normalCompletion = true, didErr = false, err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally{\n if (didErr) throw err;\n }\n }\n };\n}\nfunction $543dd2e3fbf800bb$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $543dd2e3fbf800bb$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $543dd2e3fbf800bb$var$_arrayLikeToArray(o, minLen);\n}\nfunction $543dd2e3fbf800bb$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $543dd2e3fbf800bb$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $543dd2e3fbf800bb$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $543dd2e3fbf800bb$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $543dd2e3fbf800bb$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $543dd2e3fbf800bb$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $543dd2e3fbf800bb$var$_createSuper(Derived) {\n return function() {\n var Super = $543dd2e3fbf800bb$var$_getPrototypeOf(Derived), result;\n if ($543dd2e3fbf800bb$var$_isNativeReflectConstruct()) {\n var NewTarget = $543dd2e3fbf800bb$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $543dd2e3fbf800bb$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $543dd2e3fbf800bb$var$_possibleConstructorReturn(self, call) {\n if (call && ($543dd2e3fbf800bb$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $543dd2e3fbf800bb$var$_assertThisInitialized(self);\n}\nfunction $543dd2e3fbf800bb$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $543dd2e3fbf800bb$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $543dd2e3fbf800bb$var$_getPrototypeOf(o) {\n $543dd2e3fbf800bb$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $543dd2e3fbf800bb$var$_getPrototypeOf(o);\n}\nfunction $543dd2e3fbf800bb$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $543dd2e3fbf800bb$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $543dd2e3fbf800bb$var$_setPrototypeOf(o, p) {\n $543dd2e3fbf800bb$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $543dd2e3fbf800bb$var$_setPrototypeOf(o, p);\n}\nfunction $543dd2e3fbf800bb$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $543dd2e3fbf800bb$var$EVENT_TYPES = [\n \"anyclick\",\n \"pointermove\",\n \"panstart\",\n \"panmove\",\n \"panend\",\n \"keyup\"\n];\nvar $543dd2e3fbf800bb$var$EditableLayer = /*#__PURE__*/ function(_CompositeLayer) {\n $543dd2e3fbf800bb$var$_inherits(EditableLayer, _CompositeLayer);\n var _super = $543dd2e3fbf800bb$var$_createSuper(EditableLayer);\n function EditableLayer() {\n $543dd2e3fbf800bb$var$_classCallCheck(this, EditableLayer);\n return _super.apply(this, arguments);\n }\n $543dd2e3fbf800bb$var$_createClass(EditableLayer, [\n {\n key: \"onLayerClick\",\n // Overridable interaction event handlers\n value: function onLayerClick(event) {}\n },\n {\n key: \"onStartDragging\",\n value: function onStartDragging(event) {}\n },\n {\n key: \"onStopDragging\",\n value: function onStopDragging(event) {}\n },\n {\n key: \"onDragging\",\n value: function onDragging(event) {}\n },\n {\n key: \"onPointerMove\",\n value: function onPointerMove(event) {}\n },\n {\n key: \"onLayerKeyUp\",\n value: function onLayerKeyUp(event) {} // default implementation - do nothing;\n },\n {\n key: \"initializeState\",\n value: function initializeState() {\n this.setState({\n _editableLayerState: {\n // Picked objects at the time the pointer went down\n pointerDownPicks: null,\n // Screen coordinates where the pointer went down\n pointerDownScreenCoords: null,\n // Ground coordinates where the pointer went down\n pointerDownMapCoords: null,\n // Keep track of the mjolnir.js event handler so it can be deregistered\n eventHandler: this._forwardEventToCurrentLayer.bind(this)\n }\n });\n this._addEventHandlers();\n }\n },\n {\n key: \"finalizeState\",\n value: function finalizeState() {\n this._removeEventHandlers();\n }\n },\n {\n key: \"_addEventHandlers\",\n value: function _addEventHandlers() {\n // @ts-ignore\n var eventManager = this.context.deck.eventManager;\n var eventHandler = this.state._editableLayerState.eventHandler;\n var _iterator = $543dd2e3fbf800bb$var$_createForOfIteratorHelper($543dd2e3fbf800bb$var$EVENT_TYPES), _step;\n try {\n for(_iterator.s(); !(_step = _iterator.n()).done;){\n var eventType = _step.value;\n eventManager.on(eventType, eventHandler, {\n // give nebula a higher priority so that it can stop propagation to deck.gl's map panning handlers\n priority: 100\n });\n }\n } catch (err) {\n _iterator.e(err);\n } finally{\n _iterator.f();\n }\n }\n },\n {\n key: \"_removeEventHandlers\",\n value: function _removeEventHandlers() {\n // @ts-ignore\n var eventManager = this.context.deck.eventManager;\n var eventHandler = this.state._editableLayerState.eventHandler;\n var _iterator2 = $543dd2e3fbf800bb$var$_createForOfIteratorHelper($543dd2e3fbf800bb$var$EVENT_TYPES), _step2;\n try {\n for(_iterator2.s(); !(_step2 = _iterator2.n()).done;){\n var eventType = _step2.value;\n eventManager.off(eventType, eventHandler);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally{\n _iterator2.f();\n }\n } // A new layer instance is created on every render, so forward the event to the current layer\n },\n {\n key: \"_forwardEventToCurrentLayer\",\n value: function _forwardEventToCurrentLayer(event) {\n var currentLayer = this.getCurrentLayer(); // Use a naming convention to find the event handling function for this event type\n var func = currentLayer[\"_on\".concat(event.type)].bind(currentLayer);\n if (!func) {\n console.warn(\"no handler for mjolnir.js event \".concat(event.type)); // eslint-disable-line\n return;\n }\n func(event);\n }\n },\n {\n key: \"_onanyclick\",\n value: function _onanyclick(_ref) {\n var srcEvent = _ref.srcEvent;\n var screenCoords = this.getScreenCoords(srcEvent);\n var mapCoords = this.getMapCoords(screenCoords); // @ts-ignore\n var picks = this.getPicks(screenCoords);\n this.onLayerClick({\n mapCoords: mapCoords,\n // @ts-ignore\n screenCoords: screenCoords,\n picks: picks,\n sourceEvent: srcEvent\n });\n }\n },\n {\n key: \"_onkeyup\",\n value: function _onkeyup(_ref2) {\n var srcEvent = _ref2.srcEvent;\n this.onLayerKeyUp(srcEvent);\n }\n },\n {\n key: \"_onpanstart\",\n value: function _onpanstart(event) {\n var screenCoords = this.getScreenCoords(event.srcEvent);\n var mapCoords = this.getMapCoords(screenCoords); // @ts-ignore\n var picks = this.getPicks(screenCoords);\n this.setState({\n _editableLayerState: $543dd2e3fbf800bb$var$_objectSpread({}, this.state._editableLayerState, {\n pointerDownScreenCoords: screenCoords,\n pointerDownMapCoords: mapCoords,\n pointerDownPicks: picks\n })\n });\n this.onStartDragging({\n picks: picks,\n // @ts-ignore\n screenCoords: screenCoords,\n // @ts-ignore\n mapCoords: mapCoords,\n // @ts-ignore\n pointerDownScreenCoords: screenCoords,\n pointerDownMapCoords: mapCoords,\n cancelPan: event.stopImmediatePropagation,\n sourceEvent: event.srcEvent\n });\n }\n },\n {\n key: \"_onpanmove\",\n value: function _onpanmove(event) {\n var srcEvent = event.srcEvent;\n var screenCoords = this.getScreenCoords(srcEvent);\n var mapCoords = this.getMapCoords(screenCoords);\n var _this$state$_editable = this.state._editableLayerState, pointerDownPicks = _this$state$_editable.pointerDownPicks, pointerDownScreenCoords = _this$state$_editable.pointerDownScreenCoords, pointerDownMapCoords = _this$state$_editable.pointerDownMapCoords; // @ts-ignore\n var picks = this.getPicks(screenCoords);\n this.onDragging({\n // @ts-ignore\n screenCoords: screenCoords,\n mapCoords: mapCoords,\n picks: picks,\n pointerDownPicks: pointerDownPicks,\n pointerDownScreenCoords: pointerDownScreenCoords,\n pointerDownMapCoords: pointerDownMapCoords,\n sourceEvent: srcEvent,\n cancelPan: event.stopImmediatePropagation // another (hacky) approach for cancelling map panning\n });\n }\n },\n {\n key: \"_onpanend\",\n value: function _onpanend(_ref3) {\n var srcEvent = _ref3.srcEvent;\n var screenCoords = this.getScreenCoords(srcEvent);\n var mapCoords = this.getMapCoords(screenCoords);\n var _this$state$_editable2 = this.state._editableLayerState, pointerDownPicks = _this$state$_editable2.pointerDownPicks, pointerDownScreenCoords = _this$state$_editable2.pointerDownScreenCoords, pointerDownMapCoords = _this$state$_editable2.pointerDownMapCoords; // @ts-ignore\n var picks = this.getPicks(screenCoords);\n this.onStopDragging({\n picks: picks,\n // @ts-ignore\n screenCoords: screenCoords,\n mapCoords: mapCoords,\n pointerDownPicks: pointerDownPicks,\n pointerDownScreenCoords: pointerDownScreenCoords,\n pointerDownMapCoords: pointerDownMapCoords,\n sourceEvent: srcEvent\n });\n this.setState({\n _editableLayerState: $543dd2e3fbf800bb$var$_objectSpread({}, this.state._editableLayerState, {\n pointerDownScreenCoords: null,\n pointerDownMapCoords: null,\n pointerDownPicks: null\n })\n });\n }\n },\n {\n key: \"_onpointermove\",\n value: function _onpointermove(event) {\n var srcEvent = event.srcEvent;\n var screenCoords = this.getScreenCoords(srcEvent);\n var mapCoords = this.getMapCoords(screenCoords);\n var _this$state$_editable3 = this.state._editableLayerState, pointerDownPicks = _this$state$_editable3.pointerDownPicks, pointerDownScreenCoords = _this$state$_editable3.pointerDownScreenCoords, pointerDownMapCoords = _this$state$_editable3.pointerDownMapCoords; // @ts-ignore\n var picks = this.getPicks(screenCoords);\n this.onPointerMove({\n // @ts-ignore\n screenCoords: screenCoords,\n mapCoords: mapCoords,\n picks: picks,\n pointerDownPicks: pointerDownPicks,\n pointerDownScreenCoords: pointerDownScreenCoords,\n pointerDownMapCoords: pointerDownMapCoords,\n sourceEvent: srcEvent\n });\n }\n },\n {\n key: \"getPicks\",\n value: function getPicks(screenCoords) {\n // @ts-ignore\n return this.context.deck.pickMultipleObjects({\n x: screenCoords[0],\n y: screenCoords[1],\n layerIds: [\n this.props.id\n ],\n radius: this.props.pickingRadius,\n depth: this.props.pickingDepth\n });\n }\n },\n {\n key: \"getScreenCoords\",\n value: function getScreenCoords(pointerEvent) {\n return [\n pointerEvent.clientX - this.context.gl.canvas.getBoundingClientRect().left,\n pointerEvent.clientY - this.context.gl.canvas.getBoundingClientRect().top\n ];\n }\n },\n {\n key: \"getMapCoords\",\n value: function getMapCoords(screenCoords) {\n // @ts-ignore\n return this.context.viewport.unproject([\n screenCoords[0],\n screenCoords[1]\n ]);\n }\n }\n ]);\n return EditableLayer;\n}($coXLq.default);\nmodule.exports[\"default\"] = $543dd2e3fbf800bb$var$EditableLayer;\n$543dd2e3fbf800bb$var$_defineProperty($543dd2e3fbf800bb$var$EditableLayer, \"layerName\", \"EditableLayer\");\n\n});\n\nparcelRegister(\"aQ3Iz\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\n\nvar $lzW2S = parcelRequire(\"lzW2S\");\n\nvar $b3BRI = parcelRequire(\"b3BRI\");\nfunction $7e41a4fc2954488d$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $7e41a4fc2954488d$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $7e41a4fc2954488d$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $7e41a4fc2954488d$var$_typeof(obj);\n}\nfunction $7e41a4fc2954488d$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $7e41a4fc2954488d$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $7e41a4fc2954488d$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $7e41a4fc2954488d$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $7e41a4fc2954488d$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $7e41a4fc2954488d$var$_get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) $7e41a4fc2954488d$var$_get = Reflect.get;\n else $7e41a4fc2954488d$var$_get = function _get(target, property, receiver) {\n var base = $7e41a4fc2954488d$var$_superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) return desc.get.call(receiver);\n return desc.value;\n };\n return $7e41a4fc2954488d$var$_get(target, property, receiver || target);\n}\nfunction $7e41a4fc2954488d$var$_superPropBase(object, property) {\n while(!Object.prototype.hasOwnProperty.call(object, property)){\n object = $7e41a4fc2954488d$var$_getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nfunction $7e41a4fc2954488d$var$_createSuper(Derived) {\n return function() {\n var Super = $7e41a4fc2954488d$var$_getPrototypeOf(Derived), result;\n if ($7e41a4fc2954488d$var$_isNativeReflectConstruct()) {\n var NewTarget = $7e41a4fc2954488d$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $7e41a4fc2954488d$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $7e41a4fc2954488d$var$_possibleConstructorReturn(self, call) {\n if (call && ($7e41a4fc2954488d$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $7e41a4fc2954488d$var$_assertThisInitialized(self);\n}\nfunction $7e41a4fc2954488d$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $7e41a4fc2954488d$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $7e41a4fc2954488d$var$_getPrototypeOf(o) {\n $7e41a4fc2954488d$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $7e41a4fc2954488d$var$_getPrototypeOf(o);\n}\nfunction $7e41a4fc2954488d$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $7e41a4fc2954488d$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $7e41a4fc2954488d$var$_setPrototypeOf(o, p) {\n $7e41a4fc2954488d$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $7e41a4fc2954488d$var$_setPrototypeOf(o, p);\n}\nfunction $7e41a4fc2954488d$var$ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction $7e41a4fc2954488d$var$_objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) $7e41a4fc2954488d$var$ownKeys(Object(source), true).forEach(function(key) {\n $7e41a4fc2954488d$var$_defineProperty(target, key, source[key]);\n });\n else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n else $7e41a4fc2954488d$var$ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction $7e41a4fc2954488d$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $7e41a4fc2954488d$var$defaultProps = $7e41a4fc2954488d$var$_objectSpread({}, $lzW2S.default.defaultProps, {\n pickingLineWidthExtraPixels: {\n type: \"number\",\n min: 0,\n value: Number.MAX_SAFE_INTEGER\n }\n});\nvar $7e41a4fc2954488d$var$EditablePathLayer = /*#__PURE__*/ function(_PathLayer) {\n $7e41a4fc2954488d$var$_inherits(EditablePathLayer, _PathLayer);\n var _super = $7e41a4fc2954488d$var$_createSuper(EditablePathLayer);\n function EditablePathLayer() {\n $7e41a4fc2954488d$var$_classCallCheck(this, EditablePathLayer);\n return _super.apply(this, arguments);\n }\n $7e41a4fc2954488d$var$_createClass(EditablePathLayer, [\n {\n key: \"getShaders\",\n value: function getShaders() {\n var _shaders$inject;\n var shaders = $7e41a4fc2954488d$var$_get($7e41a4fc2954488d$var$_getPrototypeOf(EditablePathLayer.prototype), \"getShaders\", this).call(this);\n shaders.vs = (0, $b3BRI.insertBefore)(shaders.vs, \"vec3 width;\", \"\\n if(picking_uActive){\\n widthPixels.xy += pickingLineWidthExtraPixels;\\n }\\n \");\n return $7e41a4fc2954488d$var$_objectSpread({}, shaders, {\n inject: $7e41a4fc2954488d$var$_objectSpread({}, shaders.inject || {}, {\n \"vs:#decl\": (((_shaders$inject = shaders.inject) === null || _shaders$inject === void 0 ? void 0 : _shaders$inject[\"vs:#decl\"]) || \"\").concat(\"uniform float pickingLineWidthExtraPixels;\")\n })\n });\n }\n },\n {\n key: \"draw\",\n value: function draw(props) {\n $7e41a4fc2954488d$var$_get($7e41a4fc2954488d$var$_getPrototypeOf(EditablePathLayer.prototype), \"draw\", this).call(this, $7e41a4fc2954488d$var$_objectSpread({}, props, {\n uniforms: $7e41a4fc2954488d$var$_objectSpread({}, props.uniforms, {\n pickingLineWidthExtraPixels: this.props.pickingLineWidthExtraPixels\n })\n }));\n }\n }\n ]);\n return EditablePathLayer;\n}($lzW2S.default);\nmodule.exports[\"default\"] = $7e41a4fc2954488d$var$EditablePathLayer;\n$7e41a4fc2954488d$var$EditablePathLayer.defaultProps = $7e41a4fc2954488d$var$defaultProps;\n$7e41a4fc2954488d$var$EditablePathLayer.layerName = \"EditablePathLayer\";\n\n});\nparcelRegister(\"b3BRI\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.toDeckColor = $80cd58cec7d40001$var$toDeckColor;\nmodule.exports.recursivelyTraverseNestedArrays = $80cd58cec7d40001$var$recursivelyTraverseNestedArrays;\nmodule.exports.generatePointsParallelToLinePoints = $80cd58cec7d40001$var$generatePointsParallelToLinePoints;\nmodule.exports.distance2d = $80cd58cec7d40001$var$distance2d;\nmodule.exports.mix = $80cd58cec7d40001$var$mix;\nmodule.exports.nearestPointOnProjectedLine = $80cd58cec7d40001$var$nearestPointOnProjectedLine;\nmodule.exports.insertBefore = $80cd58cec7d40001$var$insertBefore;\n\nvar $80cd58cec7d40001$var$_destination = $80cd58cec7d40001$var$_interopRequireDefault((parcelRequire(\"1UAWS\")));\n\nvar $80cd58cec7d40001$var$_bearing = $80cd58cec7d40001$var$_interopRequireDefault((parcelRequire(\"aDE4l\")));\n\nvar $80cd58cec7d40001$var$_pointToLineDistance = $80cd58cec7d40001$var$_interopRequireDefault((parcelRequire(\"3OoMQ\")));\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $80cd58cec7d40001$var$_viewportMercatorProject = $80cd58cec7d40001$var$_interopRequireDefault((parcelRequire(\"1LAFs\")));\nfunction $80cd58cec7d40001$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $80cd58cec7d40001$var$_slicedToArray(arr, i) {\n return $80cd58cec7d40001$var$_arrayWithHoles(arr) || $80cd58cec7d40001$var$_iterableToArrayLimit(arr, i) || $80cd58cec7d40001$var$_unsupportedIterableToArray(arr, i) || $80cd58cec7d40001$var$_nonIterableRest();\n}\nfunction $80cd58cec7d40001$var$_nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $80cd58cec7d40001$var$_iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for(var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction $80cd58cec7d40001$var$_arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction $80cd58cec7d40001$var$_toConsumableArray(arr) {\n return $80cd58cec7d40001$var$_arrayWithoutHoles(arr) || $80cd58cec7d40001$var$_iterableToArray(arr) || $80cd58cec7d40001$var$_unsupportedIterableToArray(arr) || $80cd58cec7d40001$var$_nonIterableSpread();\n}\nfunction $80cd58cec7d40001$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $80cd58cec7d40001$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $80cd58cec7d40001$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $80cd58cec7d40001$var$_arrayLikeToArray(o, minLen);\n}\nfunction $80cd58cec7d40001$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $80cd58cec7d40001$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $80cd58cec7d40001$var$_arrayLikeToArray(arr);\n}\nfunction $80cd58cec7d40001$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $80cd58cec7d40001$var$toDeckColor(color) {\n var defaultColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [\n 255,\n 0,\n 0,\n 255\n ];\n if (!Array.isArray(color)) return defaultColor;\n return [\n color[0] * 255,\n color[1] * 255,\n color[2] * 255,\n color[3] * 255\n ];\n} //\n// a GeoJSON helper function that calls the provided function with\n// an argument that is the most deeply-nested array having elements\n// that are arrays of primitives as an argument, e.g.\n//\n// {\n// \"type\": \"MultiPolygon\",\n// \"coordinates\": [\n// [\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n// ],\n// [\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n// ]\n// ]\n// }\n//\n// the function would be called on:\n//\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n//\n// and\n//\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n//\nfunction $80cd58cec7d40001$var$recursivelyTraverseNestedArrays(array, prefix, fn) {\n if (!Array.isArray(array[0])) return true;\n for(var i = 0; i < array.length; i++)if ($80cd58cec7d40001$var$recursivelyTraverseNestedArrays(array[i], [].concat($80cd58cec7d40001$var$_toConsumableArray(prefix), [\n i\n ]), fn)) {\n fn(array, prefix);\n break;\n }\n return false;\n}\nfunction $80cd58cec7d40001$var$generatePointsParallelToLinePoints(p1, p2, groundCoords) {\n var lineString = {\n type: \"LineString\",\n coordinates: [\n p1,\n p2\n ]\n };\n var pt = (0, $7GKQS.point)(groundCoords);\n var ddistance = (0, $80cd58cec7d40001$var$_pointToLineDistance[\"default\"])(pt, lineString);\n var lineBearing = (0, $80cd58cec7d40001$var$_bearing[\"default\"])(p1, p2); // Check if current point is to the left or right of line\n // Line from A=(x1,y1) to B=(x2,y2) a point P=(x,y)\n // then (x−x1)(y2−y1)−(y−y1)(x2−x1)\n var isPointToLeftOfLine = (groundCoords[0] - p1[0]) * (p2[1] - p1[1]) - (groundCoords[1] - p1[1]) * (p2[0] - p1[0]); // Bearing to draw perpendicular to the line string\n var orthogonalBearing = isPointToLeftOfLine < 0 ? lineBearing - 90 : lineBearing - 270; // Get coordinates for the point p3 and p4 which are perpendicular to the lineString\n // Add the distance as the current position moves away from the lineString\n var p3 = (0, $80cd58cec7d40001$var$_destination[\"default\"])(p2, ddistance, orthogonalBearing);\n var p4 = (0, $80cd58cec7d40001$var$_destination[\"default\"])(p1, ddistance, orthogonalBearing); //@ts-ignore\n return [\n p3.geometry.coordinates,\n p4.geometry.coordinates\n ];\n}\nfunction $80cd58cec7d40001$var$distance2d(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\nfunction $80cd58cec7d40001$var$mix(a, b, ratio) {\n return b * ratio + a * (1 - ratio);\n}\nfunction $80cd58cec7d40001$var$nearestPointOnProjectedLine(line, inPoint, viewport) {\n var wmViewport = new $80cd58cec7d40001$var$_viewportMercatorProject[\"default\"](viewport); // Project the line to viewport, then find the nearest point\n var coordinates = line.geometry.coordinates;\n var projectedCoords = coordinates.map(function(_ref) {\n var _ref2 = $80cd58cec7d40001$var$_slicedToArray(_ref, 3), x = _ref2[0], y = _ref2[1], _ref2$ = _ref2[2], z = _ref2$ === void 0 ? 0 : _ref2$;\n return wmViewport.project([\n x,\n y,\n z\n ]);\n }); //@ts-ignore\n var _wmViewport$project = wmViewport.project(inPoint.geometry.coordinates), _wmViewport$project2 = $80cd58cec7d40001$var$_slicedToArray(_wmViewport$project, 2), x = _wmViewport$project2[0], y = _wmViewport$project2[1]; // console.log('projectedCoords', JSON.stringify(projectedCoords));\n var minDistance = Infinity;\n var minPointInfo = {};\n projectedCoords.forEach(function(_ref3, index) {\n var _ref4 = $80cd58cec7d40001$var$_slicedToArray(_ref3, 2), x2 = _ref4[0], y2 = _ref4[1];\n if (index === 0) return;\n var _projectedCoords = $80cd58cec7d40001$var$_slicedToArray(projectedCoords[index - 1], 2), x1 = _projectedCoords[0], y1 = _projectedCoords[1]; // line from projectedCoords[index - 1] to projectedCoords[index]\n // convert to Ax + By + C = 0\n var A = y1 - y2;\n var B = x2 - x1;\n var C = x1 * y2 - x2 * y1; // https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line\n var div = A * A + B * B;\n var distance = Math.abs(A * x + B * y + C) / Math.sqrt(div); // TODO: Check if inside bounds\n if (distance < minDistance) {\n minDistance = distance;\n minPointInfo = {\n index: index,\n x0: (B * (B * x - A * y) - A * C) / div,\n y0: (A * (-B * x + A * y) - B * C) / div\n };\n }\n }); //@ts-ignore\n var _minPointInfo = minPointInfo, index = _minPointInfo.index, x0 = _minPointInfo.x0, y0 = _minPointInfo.y0;\n var _projectedCoords2 = $80cd58cec7d40001$var$_slicedToArray(projectedCoords[index - 1], 3), x1 = _projectedCoords2[0], y1 = _projectedCoords2[1], _projectedCoords2$ = _projectedCoords2[2], z1 = _projectedCoords2$ === void 0 ? 0 : _projectedCoords2$;\n var _projectedCoords$inde = $80cd58cec7d40001$var$_slicedToArray(projectedCoords[index], 3), x2 = _projectedCoords$inde[0], y2 = _projectedCoords$inde[1], _projectedCoords$inde2 = _projectedCoords$inde[2], z2 = _projectedCoords$inde2 === void 0 ? 0 : _projectedCoords$inde2; // calculate what ratio of the line we are on to find the proper z\n var lineLength = $80cd58cec7d40001$var$distance2d(x1, y1, x2, y2);\n var startToPointLength = $80cd58cec7d40001$var$distance2d(x1, y1, x0, y0);\n var ratio = startToPointLength / lineLength;\n var z0 = $80cd58cec7d40001$var$mix(z1, z2, ratio);\n return {\n type: \"Feature\",\n geometry: {\n type: \"Point\",\n coordinates: wmViewport.unproject([\n x0,\n y0,\n z0\n ])\n },\n properties: {\n // TODO: calculate the distance in proper units\n dist: minDistance,\n index: index - 1\n }\n };\n}\n/**\n * Inserts toInsert string into base string before insertBefore string.\n * @param base A string to insert into.\n * @param insertBefore A sub string in `base` string to insert before.\n * @param toInsert A string to insert.\n * @returns Combined string. `base` string if `insertBefore` string isn't found.\n */ function $80cd58cec7d40001$var$insertBefore(base, insertBefore, toInsert) {\n var at = base.indexOf(insertBefore);\n if (at < 0) return base;\n return base.slice(0, at) + toInsert + base.slice(at);\n}\n\n});\n\n\n\nparcelRegister(\"QQWRf\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\n\nvar $bYQax = parcelRequire(\"bYQax\");\n\nvar $cQSdn = parcelRequire(\"cQSdn\");\n\nvar $1LI2z = parcelRequire(\"1LI2z\");\n\nvar $9brng = parcelRequire(\"9brng\");\n\nvar $09edede0906ccc60$var$_editableGeojsonLayer = $09edede0906ccc60$var$_interopRequireDefault((parcelRequire(\"lHhsg\")));\n\nvar $09edede0906ccc60$var$_editableLayer = $09edede0906ccc60$var$_interopRequireDefault((parcelRequire(\"7epLg\")));\nfunction $09edede0906ccc60$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $09edede0906ccc60$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $09edede0906ccc60$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $09edede0906ccc60$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $09edede0906ccc60$var$_typeof(obj);\n}\nfunction $09edede0906ccc60$var$_toConsumableArray(arr) {\n return $09edede0906ccc60$var$_arrayWithoutHoles(arr) || $09edede0906ccc60$var$_iterableToArray(arr) || $09edede0906ccc60$var$_unsupportedIterableToArray(arr) || $09edede0906ccc60$var$_nonIterableSpread();\n}\nfunction $09edede0906ccc60$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $09edede0906ccc60$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $09edede0906ccc60$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $09edede0906ccc60$var$_arrayLikeToArray(o, minLen);\n}\nfunction $09edede0906ccc60$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $09edede0906ccc60$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $09edede0906ccc60$var$_arrayLikeToArray(arr);\n}\nfunction $09edede0906ccc60$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $09edede0906ccc60$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $09edede0906ccc60$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $09edede0906ccc60$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $09edede0906ccc60$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $09edede0906ccc60$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $09edede0906ccc60$var$_get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) $09edede0906ccc60$var$_get = Reflect.get;\n else $09edede0906ccc60$var$_get = function _get(target, property, receiver) {\n var base = $09edede0906ccc60$var$_superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) return desc.get.call(receiver);\n return desc.value;\n };\n return $09edede0906ccc60$var$_get(target, property, receiver || target);\n}\nfunction $09edede0906ccc60$var$_superPropBase(object, property) {\n while(!Object.prototype.hasOwnProperty.call(object, property)){\n object = $09edede0906ccc60$var$_getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nfunction $09edede0906ccc60$var$_createSuper(Derived) {\n return function() {\n var Super = $09edede0906ccc60$var$_getPrototypeOf(Derived), result;\n if ($09edede0906ccc60$var$_isNativeReflectConstruct()) {\n var NewTarget = $09edede0906ccc60$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $09edede0906ccc60$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $09edede0906ccc60$var$_possibleConstructorReturn(self, call) {\n if (call && ($09edede0906ccc60$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $09edede0906ccc60$var$_assertThisInitialized(self);\n}\nfunction $09edede0906ccc60$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $09edede0906ccc60$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $09edede0906ccc60$var$_getPrototypeOf(o) {\n $09edede0906ccc60$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $09edede0906ccc60$var$_getPrototypeOf(o);\n}\nfunction $09edede0906ccc60$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $09edede0906ccc60$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $09edede0906ccc60$var$_setPrototypeOf(o, p) {\n $09edede0906ccc60$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $09edede0906ccc60$var$_setPrototypeOf(o, p);\n}\nfunction $09edede0906ccc60$var$ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction $09edede0906ccc60$var$_objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) $09edede0906ccc60$var$ownKeys(Object(source), true).forEach(function(key) {\n $09edede0906ccc60$var$_defineProperty(target, key, source[key]);\n });\n else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n else $09edede0906ccc60$var$ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction $09edede0906ccc60$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $09edede0906ccc60$var$DEFAULT_EDIT_MODE = $cQSdn.ViewMode;\nvar $09edede0906ccc60$var$DEFAULT_H3_RESOLUTION = 9;\nvar $09edede0906ccc60$var$EMPTY_FEATURE_COLLECTION = {\n type: \"FeatureCollection\",\n features: []\n};\nvar $09edede0906ccc60$var$defaultProps = $09edede0906ccc60$var$_objectSpread({\n mode: $09edede0906ccc60$var$DEFAULT_EDIT_MODE\n}, $09edede0906ccc60$var$_editableGeojsonLayer[\"default\"].defaultProps, {\n // h3 layer\n data: [],\n selectedIndexes: [],\n filled: false,\n stroked: true,\n lineWidthScale: $9brng.PROJECTED_PIXEL_SIZE_MULTIPLIER,\n lineWidthMinPixels: 1,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n lineWidthUnits: \"pixels\",\n getHexagons: function getHexagons(d) {\n return d.hexIds;\n },\n getEditedCluster: function getEditedCluster(updatedHexagons, existingCluster) {\n if (existingCluster) return $09edede0906ccc60$var$_objectSpread({}, existingCluster, {\n hexIds: updatedHexagons\n });\n return {\n hexIds: updatedHexagons\n };\n },\n resolution: $09edede0906ccc60$var$DEFAULT_H3_RESOLUTION\n});\nvar $09edede0906ccc60$var$EditableH3ClusterLayer = /*#__PURE__*/ function(_EditableLayer) {\n $09edede0906ccc60$var$_inherits(EditableH3ClusterLayer, _EditableLayer);\n var _super = $09edede0906ccc60$var$_createSuper(EditableH3ClusterLayer);\n function EditableH3ClusterLayer() {\n $09edede0906ccc60$var$_classCallCheck(this, EditableH3ClusterLayer);\n return _super.apply(this, arguments);\n }\n $09edede0906ccc60$var$_createClass(EditableH3ClusterLayer, [\n {\n key: \"initializeState\",\n value: function initializeState() {\n $09edede0906ccc60$var$_get($09edede0906ccc60$var$_getPrototypeOf(EditableH3ClusterLayer.prototype), \"initializeState\", this).call(this);\n this.setState({\n tentativeHexagonIDs: []\n });\n } // convert array of (lng, lat) coords to cluster of hexes\n },\n {\n key: \"getDerivedHexagonIDs\",\n value: function getDerivedHexagonIDs(coords) {\n return (0, $1LI2z.polyfill)(coords, this.props.resolution, true);\n } // convert pair of (lng, lat) coords into single hex\n },\n {\n key: \"getDerivedHexagonID\",\n value: function getDerivedHexagonID(coords) {\n return (0, $1LI2z.geoToH3)(coords[1], coords[0], this.props.resolution);\n }\n },\n {\n key: \"renderLayers\",\n value: function renderLayers() {\n var _this = this;\n var layers = [\n new $09edede0906ccc60$var$_editableGeojsonLayer[\"default\"](this.getSubLayerProps({\n id: \"editable-geojson\",\n mode: this.props.mode,\n data: $09edede0906ccc60$var$EMPTY_FEATURE_COLLECTION,\n selectedFeatureIndexes: [],\n onEdit: function onEdit(editAction) {\n var editType = editAction.editType, editContext = editAction.editContext;\n switch(editType){\n case \"updateTentativeFeature\":\n // tentative feature updates, updated on every pointer move\n if (editContext.feature.geometry.type === \"Polygon\") {\n var coords = editContext.feature.geometry.coordinates;\n var hexIDs = _this.getDerivedHexagonIDs(coords);\n _this.setState({\n tentativeHexagonIDs: hexIDs\n });\n } else if (editContext.feature.geometry.type === \"Point\") {\n var _coords = editContext.feature.geometry.coordinates;\n var hexID = _this.getDerivedHexagonID(_coords);\n _this.setState({\n tentativeHexagonIDs: [\n hexID\n ]\n });\n }\n break;\n case \"addFeature\":\n var _updatedData = $09edede0906ccc60$var$_toConsumableArray(_this.props.data);\n var modeConfig = _this.props.modeConfig;\n if (!modeConfig || !modeConfig.booleanOperation) // add new h3 cluster\n _updatedData.push(_this.props.getEditedCluster(_this.state.tentativeHexagonIDs, null));\n else if (_this.props.selectedIndexes.length !== 1) // eslint-disable-next-line no-console,no-undef\n console.warn(\"booleanOperation only supported for single cluster selection\");\n else {\n // they're affecting a selected cluster\n var finalHexagonIDs;\n var committedHexagonIDs = new Set(_this.getSelectedHexIDs());\n var tentativeHexagonIDs = new Set(_this.state.tentativeHexagonIDs);\n switch(modeConfig.booleanOperation){\n case \"union\":\n default:\n finalHexagonIDs = $09edede0906ccc60$var$_toConsumableArray(new Set([].concat($09edede0906ccc60$var$_toConsumableArray(committedHexagonIDs), $09edede0906ccc60$var$_toConsumableArray(tentativeHexagonIDs))));\n break;\n case \"intersection\":\n finalHexagonIDs = $09edede0906ccc60$var$_toConsumableArray(committedHexagonIDs).filter(function(hexID) {\n return tentativeHexagonIDs.has(hexID);\n });\n break;\n case \"difference\":\n finalHexagonIDs = $09edede0906ccc60$var$_toConsumableArray(committedHexagonIDs).filter(function(hexID) {\n return !tentativeHexagonIDs.has(hexID);\n });\n break;\n }\n var selectedIndex = _this.props.selectedIndexes[0];\n var _existingCluster = _this.props.data[selectedIndex];\n _updatedData[selectedIndex] = _this.props.getEditedCluster(finalHexagonIDs, _existingCluster);\n }\n _this.setState({\n tentativeHexagonIDs: []\n });\n _this.props.onEdit({\n updatedData: _updatedData\n });\n break;\n default:\n break;\n }\n }\n })),\n new $bYQax.default(this.getSubLayerProps({\n id: \"hexagons\",\n data: this.props.data,\n getHexagons: this.props.getHexagons\n })),\n new $bYQax.default(this.getSubLayerProps({\n id: \"tentative-hexagons\",\n data: [\n {\n hexIds: this.state.tentativeHexagonIDs\n }\n ],\n getHexagons: function getHexagons(d) {\n return d.hexIds;\n }\n }))\n ];\n return layers;\n } // because data is an array of hexagon data, we take the cumulative of all selected indexes,\n },\n {\n key: \"getSelectedHexIDs\",\n value: function getSelectedHexIDs() {\n var _this2 = this;\n var cumulativeHexIDs = [];\n this.props.selectedIndexes.forEach(function(index) {\n var selectedCluster = _this2.props.data[index];\n var hexIDs = _this2.props.getHexagons(selectedCluster);\n cumulativeHexIDs = cumulativeHexIDs.concat(hexIDs);\n });\n return cumulativeHexIDs;\n }\n },\n {\n key: \"getCursor\",\n value: function getCursor(_ref) {\n var isDragging = _ref.isDragging;\n var _ref2 = this.state || {}, cursor = _ref2.cursor;\n if (!cursor) // default cursor\n cursor = isDragging ? \"grabbing\" : \"grab\";\n return cursor;\n }\n }\n ]);\n return EditableH3ClusterLayer;\n}($09edede0906ccc60$var$_editableLayer[\"default\"]);\nmodule.exports[\"default\"] = $09edede0906ccc60$var$EditableH3ClusterLayer;\n$09edede0906ccc60$var$_defineProperty($09edede0906ccc60$var$EditableH3ClusterLayer, \"layerName\", \"EditableH3ClusterLayer\");\n$09edede0906ccc60$var$_defineProperty($09edede0906ccc60$var$EditableH3ClusterLayer, \"defaultProps\", $09edede0906ccc60$var$defaultProps);\n\n});\nparcelRegister(\"bYQax\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $8b8dc3f3e74d7364$export$2e2bcd8739ae039; });\n\nvar $fsooW = parcelRequire(\"fsooW\");\n\nvar $aC2tH = parcelRequire(\"aC2tH\");\n\nvar $abpME = parcelRequire(\"abpME\");\n\nvar $7Nl5T = parcelRequire(\"7Nl5T\");\n\nvar $gpJBL = parcelRequire(\"gpJBL\");\nconst $8b8dc3f3e74d7364$var$defaultProps = {\n getHexagons: {\n type: \"accessor\",\n value: (d)=>d.hexagons\n }\n};\nclass $8b8dc3f3e74d7364$export$2e2bcd8739ae039 extends (0, $gpJBL.default) {\n initializeState() {\n (0, $7Nl5T.default)._checkH3Lib();\n }\n updateState({ props: props, changeFlags: changeFlags }) {\n if (changeFlags.dataChanged || changeFlags.updateTriggersChanged && changeFlags.updateTriggersChanged.getHexagons) {\n const { data: data, getHexagons: getHexagons } = props;\n const polygons = [];\n const { iterable: iterable, objectInfo: objectInfo } = (0, $abpME.createIterable)(data);\n for (const object of iterable){\n objectInfo.index++;\n const hexagons = getHexagons(object, objectInfo);\n const multiPolygon = (0, $aC2tH.h3SetToMultiPolygon)(hexagons, true);\n for (const polygon of multiPolygon)polygons.push(this.getSubLayerRow({\n polygon: polygon\n }, object, objectInfo.index));\n }\n this.setState({\n polygons: polygons\n });\n }\n }\n indexToBounds() {\n const { getElevation: getElevation, getFillColor: getFillColor, getLineColor: getLineColor, getLineWidth: getLineWidth } = this.props;\n return {\n data: this.state.polygons,\n getPolygon: (d)=>d.polygon,\n getElevation: this.getSubLayerAccessor(getElevation),\n getFillColor: this.getSubLayerAccessor(getFillColor),\n getLineColor: this.getSubLayerAccessor(getLineColor),\n getLineWidth: this.getSubLayerAccessor(getLineWidth)\n };\n }\n}\n(0, $fsooW.default)($8b8dc3f3e74d7364$export$2e2bcd8739ae039, \"layerName\", \"H3ClusterLayer\");\n(0, $fsooW.default)($8b8dc3f3e74d7364$export$2e2bcd8739ae039, \"defaultProps\", $8b8dc3f3e74d7364$var$defaultProps);\n\n});\nparcelRegister(\"fsooW\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b40c661e338907f3$export$2e2bcd8739ae039; });\nfunction $b40c661e338907f3$export$2e2bcd8739ae039(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\n\n});\n\nparcelRegister(\"aC2tH\", function(module, exports) {\n\n$parcel$export(module.exports, \"h3IsPentagon\", function () { return $7b9f60117f9c280b$export$9e7403b9b01e136f; });\n$parcel$export(module.exports, \"h3GetResolution\", function () { return $7b9f60117f9c280b$export$6827467f3394e8f4; });\n$parcel$export(module.exports, \"geoToH3\", function () { return $7b9f60117f9c280b$export$24131a74a154ec65; });\n$parcel$export(module.exports, \"h3ToGeo\", function () { return $7b9f60117f9c280b$export$317dd65f3721e7c4; });\n$parcel$export(module.exports, \"h3ToGeoBoundary\", function () { return $7b9f60117f9c280b$export$c87d5f55314c67cf; });\n$parcel$export(module.exports, \"h3SetToMultiPolygon\", function () { return $7b9f60117f9c280b$export$911a0c41d9f5c4ed; });\n$parcel$export(module.exports, \"h3Distance\", function () { return $7b9f60117f9c280b$export$f56b06aabd98a7d0; });\n$parcel$export(module.exports, \"edgeLength\", function () { return $7b9f60117f9c280b$export$f9bb3d14d246c386; });\nvar $7b9f60117f9c280b$var$libh3 = function(libh3) {\n libh3 = libh3 || {};\n var Module = typeof libh3 !== \"undefined\" ? libh3 : {};\n var moduleOverrides = {};\n var key;\n for(key in Module)if (Module.hasOwnProperty(key)) moduleOverrides[key] = Module[key];\n var arguments_ = [];\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module[\"locateFile\"]) return Module[\"locateFile\"](path, scriptDirectory);\n return scriptDirectory + path;\n }\n var readAsync;\n if (document.currentScript) scriptDirectory = document.currentScript.src;\n if (scriptDirectory.indexOf(\"blob:\") !== 0) scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf(\"/\") + 1);\n else scriptDirectory = \"\";\n readAsync = function readAsync(url, onload, onerror) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = function xhr_onload() {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n var data = tryParseAsDataURI(url);\n if (data) {\n onload(data.buffer);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n for(key in moduleOverrides)if (moduleOverrides.hasOwnProperty(key)) Module[key] = moduleOverrides[key];\n moduleOverrides = null;\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n var tempRet0 = 0;\n var setTempRet0 = function(value) {\n tempRet0 = value;\n };\n var getTempRet0 = function() {\n return tempRet0;\n };\n var GLOBAL_BASE = 8;\n function setValue(ptr, value, type, noSafe) {\n type = type || \"i8\";\n if (type.charAt(type.length - 1) === \"*\") type = \"i32\";\n switch(type){\n case \"i1\":\n HEAP8[ptr >> 0] = value;\n break;\n case \"i8\":\n HEAP8[ptr >> 0] = value;\n break;\n case \"i16\":\n HEAP16[ptr >> 1] = value;\n break;\n case \"i32\":\n HEAP32[ptr >> 2] = value;\n break;\n case \"i64\":\n tempI64 = [\n value >>> 0,\n (tempDouble = value, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];\n break;\n case \"float\":\n HEAPF32[ptr >> 2] = value;\n break;\n case \"double\":\n HEAPF64[ptr >> 3] = value;\n break;\n default:\n abort(\"invalid type for setValue: \" + type);\n }\n }\n function getValue(ptr, type, noSafe) {\n type = type || \"i8\";\n if (type.charAt(type.length - 1) === \"*\") type = \"i32\";\n switch(type){\n case \"i1\":\n return HEAP8[ptr >> 0];\n case \"i8\":\n return HEAP8[ptr >> 0];\n case \"i16\":\n return HEAP16[ptr >> 1];\n case \"i32\":\n return HEAP32[ptr >> 2];\n case \"i64\":\n return HEAP32[ptr >> 2];\n case \"float\":\n return HEAPF32[ptr >> 2];\n case \"double\":\n return HEAPF64[ptr >> 3];\n default:\n abort(\"invalid type for getValue: \" + type);\n }\n return null;\n }\n var ABORT = false;\n function assert(condition, text) {\n if (!condition) abort(\"Assertion failed: \" + text);\n }\n function getCFunc(ident) {\n var func = Module[\"_\" + ident];\n assert(func, \"Cannot call unknown function \" + ident + \", make sure it is exported\");\n return func;\n }\n function ccall(ident, returnType, argTypes, args, opts) {\n var toC = {\n \"string\": function(str) {\n var ret = 0;\n if (str !== null && str !== undefined && str !== 0) {\n var len = (str.length << 2) + 1;\n ret = stackAlloc(len);\n stringToUTF8(str, ret, len);\n }\n return ret;\n },\n \"array\": function(arr) {\n var ret = stackAlloc(arr.length);\n writeArrayToMemory(arr, ret);\n return ret;\n }\n };\n function convertReturnValue(ret) {\n if (returnType === \"string\") return UTF8ToString(ret);\n if (returnType === \"boolean\") return Boolean(ret);\n return ret;\n }\n var func = getCFunc(ident);\n var cArgs = [];\n var stack = 0;\n if (args) for(var i = 0; i < args.length; i++){\n var converter = toC[argTypes[i]];\n if (converter) {\n if (stack === 0) stack = stackSave();\n cArgs[i] = converter(args[i]);\n } else cArgs[i] = args[i];\n }\n var ret = func.apply(null, cArgs);\n ret = convertReturnValue(ret);\n if (stack !== 0) stackRestore(stack);\n return ret;\n }\n function cwrap(ident, returnType, argTypes, opts) {\n argTypes = argTypes || [];\n var numericArgs = argTypes.every(function(type) {\n return type === \"number\";\n });\n var numericRet = returnType !== \"string\";\n if (numericRet && numericArgs && !opts) return getCFunc(ident);\n return function() {\n return ccall(ident, returnType, argTypes, arguments, opts);\n };\n }\n var UTF8Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf8\") : undefined;\n function UTF8ArrayToString(u8Array, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while(u8Array[endPtr] && !(endPtr >= endIdx))++endPtr;\n if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));\n else {\n var str = \"\";\n while(idx < endPtr){\n var u0 = u8Array[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = u8Array[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n var u2 = u8Array[idx++] & 63;\n if ((u0 & 240) == 224) u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n else u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u8Array[idx++] & 63;\n if (u0 < 65536) str += String.fromCharCode(u0);\n else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n }\n return str;\n }\n function UTF8ToString(ptr, maxBytesToRead) {\n return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n }\n function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for(var i = 0; i < str.length; ++i){\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n outU8Array[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n outU8Array[outIdx++] = 192 | u >> 6;\n outU8Array[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n outU8Array[outIdx++] = 224 | u >> 12;\n outU8Array[outIdx++] = 128 | u >> 6 & 63;\n outU8Array[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n outU8Array[outIdx++] = 240 | u >> 18;\n outU8Array[outIdx++] = 128 | u >> 12 & 63;\n outU8Array[outIdx++] = 128 | u >> 6 & 63;\n outU8Array[outIdx++] = 128 | u & 63;\n }\n }\n outU8Array[outIdx] = 0;\n return outIdx - startIdx;\n }\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n var UTF16Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf-16le\") : undefined;\n function writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n }\n function alignUp(x, multiple) {\n if (x % multiple > 0) x += multiple - x % multiple;\n return x;\n }\n var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateGlobalBufferAndViews(buf) {\n buffer = buf;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(buf);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(buf);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(buf);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(buf);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(buf);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(buf);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(buf);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(buf);\n }\n var DYNAMIC_BASE = 5266928, DYNAMICTOP_PTR = 24016;\n var INITIAL_TOTAL_MEMORY = Module[\"TOTAL_MEMORY\"] || 33554432;\n if (Module[\"buffer\"]) buffer = Module[\"buffer\"];\n else buffer = new ArrayBuffer(INITIAL_TOTAL_MEMORY);\n INITIAL_TOTAL_MEMORY = buffer.byteLength;\n updateGlobalBufferAndViews(buffer);\n HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;\n function callRuntimeCallbacks(callbacks) {\n while(callbacks.length > 0){\n var callback = callbacks.shift();\n if (typeof callback == \"function\") {\n callback();\n continue;\n }\n var func = callback.func;\n if (typeof func === \"number\") {\n if (callback.arg === undefined) Module[\"dynCall_v\"](func);\n else Module[\"dynCall_vi\"](func, callback.arg);\n } else func(callback.arg === undefined ? null : callback.arg);\n }\n }\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATPOSTRUN__ = [];\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [\n Module[\"preRun\"]\n ];\n while(Module[\"preRun\"].length)addOnPreRun(Module[\"preRun\"].shift());\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n callRuntimeCallbacks(__ATINIT__);\n }\n function preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [\n Module[\"postRun\"]\n ];\n while(Module[\"postRun\"].length)addOnPostRun(Module[\"postRun\"].shift());\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var Math_abs = Math.abs;\n var Math_ceil = Math.ceil;\n var Math_floor = Math.floor;\n var Math_min = Math.min;\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n }\n function removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n Module[\"preloadedImages\"] = {};\n Module[\"preloadedAudios\"] = {};\n var memoryInitializer = null;\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n function isDataURI(filename) {\n return String.prototype.startsWith ? filename.startsWith(dataURIPrefix) : filename.indexOf(dataURIPrefix) === 0;\n }\n var tempDouble;\n var tempI64;\n memoryInitializer = \"data:application/octet-stream;base64,AAAAAAAAAAACAAAAAwAAAAEAAAAFAAAABAAAAAYAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAABAAAAAMAAAAGAAAABQAAAAIAAAAAAAAAAgAAAAMAAAABAAAABAAAAAYAAAAAAAAABQAAAAMAAAAGAAAABAAAAAUAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAABAAAABQAAAAIAAAAAAAAAAQAAAAMAAAAGAAAABAAAAAYAAAAAAAAABQAAAAIAAAABAAAABAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABgAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAABgAAAAAAAAADAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAUAAAAEAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAEAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAACAAAABAAAAAMAAAAIAAAAAQAAAAcAAAAGAAAACQAAAAAAAAADAAAAAgAAAAIAAAAGAAAACgAAAAsAAAAAAAAAAQAAAAUAAAADAAAADQAAAAEAAAAHAAAABAAAAAwAAAAAAAAABAAAAH8AAAAPAAAACAAAAAMAAAAAAAAADAAAAAUAAAACAAAAEgAAAAoAAAAIAAAAAAAAABAAAAAGAAAADgAAAAsAAAARAAAAAQAAAAkAAAACAAAABwAAABUAAAAJAAAAEwAAAAMAAAANAAAAAQAAAAgAAAAFAAAAFgAAABAAAAAEAAAAAAAAAA8AAAAJAAAAEwAAAA4AAAAUAAAAAQAAAAcAAAAGAAAACgAAAAsAAAAYAAAAFwAAAAUAAAACAAAAEgAAAAsAAAARAAAAFwAAABkAAAACAAAABgAAAAoAAAAMAAAAHAAAAA0AAAAaAAAABAAAAA8AAAADAAAADQAAABoAAAAVAAAAHQAAAAMAAAAMAAAABwAAAA4AAAB/AAAAEQAAABsAAAAJAAAAFAAAAAYAAAAPAAAAFgAAABwAAAAfAAAABAAAAAgAAAAMAAAAEAAAABIAAAAhAAAAHgAAAAgAAAAFAAAAFgAAABEAAAALAAAADgAAAAYAAAAjAAAAGQAAABsAAAASAAAAGAAAAB4AAAAgAAAABQAAAAoAAAAQAAAAEwAAACIAAAAUAAAAJAAAAAcAAAAVAAAACQAAABQAAAAOAAAAEwAAAAkAAAAoAAAAGwAAACQAAAAVAAAAJgAAABMAAAAiAAAADQAAAB0AAAAHAAAAFgAAABAAAAApAAAAIQAAAA8AAAAIAAAAHwAAABcAAAAYAAAACwAAAAoAAAAnAAAAJQAAABkAAAAYAAAAfwAAACAAAAAlAAAACgAAABcAAAASAAAAGQAAABcAAAARAAAACwAAAC0AAAAnAAAAIwAAABoAAAAqAAAAHQAAACsAAAAMAAAAHAAAAA0AAAAbAAAAKAAAACMAAAAuAAAADgAAABQAAAARAAAAHAAAAB8AAAAqAAAALAAAAAwAAAAPAAAAGgAAAB0AAAArAAAAJgAAAC8AAAANAAAAGgAAABUAAAAeAAAAIAAAADAAAAAyAAAAEAAAABIAAAAhAAAAHwAAACkAAAAsAAAANQAAAA8AAAAWAAAAHAAAACAAAAAeAAAAGAAAABIAAAA0AAAAMgAAACUAAAAhAAAAHgAAADEAAAAwAAAAFgAAABAAAAApAAAAIgAAABMAAAAmAAAAFQAAADYAAAAkAAAAMwAAACMAAAAuAAAALQAAADgAAAARAAAAGwAAABkAAAAkAAAAFAAAACIAAAATAAAANwAAACgAAAA2AAAAJQAAACcAAAA0AAAAOQAAABgAAAAXAAAAIAAAACYAAAB/AAAAIgAAADMAAAAdAAAALwAAABUAAAAnAAAAJQAAABkAAAAXAAAAOwAAADkAAAAtAAAAKAAAABsAAAAkAAAAFAAAADwAAAAuAAAANwAAACkAAAAxAAAANQAAAD0AAAAWAAAAIQAAAB8AAAAqAAAAOgAAACsAAAA+AAAAHAAAACwAAAAaAAAAKwAAAD4AAAAvAAAAQAAAABoAAAAqAAAAHQAAACwAAAA1AAAAOgAAAEEAAAAcAAAAHwAAACoAAAAtAAAAJwAAACMAAAAZAAAAPwAAADsAAAA4AAAALgAAADwAAAA4AAAARAAAABsAAAAoAAAAIwAAAC8AAAAmAAAAKwAAAB0AAABFAAAAMwAAAEAAAAAwAAAAMQAAAB4AAAAhAAAAQwAAAEIAAAAyAAAAMQAAAH8AAAA9AAAAQgAAACEAAAAwAAAAKQAAADIAAAAwAAAAIAAAAB4AAABGAAAAQwAAADQAAAAzAAAARQAAADYAAABHAAAAJgAAAC8AAAAiAAAANAAAADkAAABGAAAASgAAACAAAAAlAAAAMgAAADUAAAA9AAAAQQAAAEsAAAAfAAAAKQAAACwAAAA2AAAARwAAADcAAABJAAAAIgAAADMAAAAkAAAANwAAACgAAAA2AAAAJAAAAEgAAAA8AAAASQAAADgAAABEAAAAPwAAAE0AAAAjAAAALgAAAC0AAAA5AAAAOwAAAEoAAABOAAAAJQAAACcAAAA0AAAAOgAAAH8AAAA+AAAATAAAACwAAABBAAAAKgAAADsAAAA/AAAATgAAAE8AAAAnAAAALQAAADkAAAA8AAAASAAAAEQAAABQAAAAKAAAADcAAAAuAAAAPQAAADUAAAAxAAAAKQAAAFEAAABLAAAAQgAAAD4AAAArAAAAOgAAACoAAABSAAAAQAAAAEwAAAA/AAAAfwAAADgAAAAtAAAATwAAADsAAABNAAAAQAAAAC8AAAA+AAAAKwAAAFQAAABFAAAAUgAAAEEAAAA6AAAANQAAACwAAABWAAAATAAAAEsAAABCAAAAQwAAAFEAAABVAAAAMQAAADAAAAA9AAAAQwAAAEIAAAAyAAAAMAAAAFcAAABVAAAARgAAAEQAAAA4AAAAPAAAAC4AAABaAAAATQAAAFAAAABFAAAAMwAAAEAAAAAvAAAAWQAAAEcAAABUAAAARgAAAEMAAAA0AAAAMgAAAFMAAABXAAAASgAAAEcAAABZAAAASQAAAFsAAAAzAAAARQAAADYAAABIAAAAfwAAAEkAAAA3AAAAUAAAADwAAABYAAAASQAAAFsAAABIAAAAWAAAADYAAABHAAAANwAAAEoAAABOAAAAUwAAAFwAAAA0AAAAOQAAAEYAAABLAAAAQQAAAD0AAAA1AAAAXgAAAFYAAABRAAAATAAAAFYAAABSAAAAYAAAADoAAABBAAAAPgAAAE0AAAA/AAAARAAAADgAAABdAAAATwAAAFoAAABOAAAASgAAADsAAAA5AAAAXwAAAFwAAABPAAAATwAAAE4AAAA/AAAAOwAAAF0AAABfAAAATQAAAFAAAABEAAAASAAAADwAAABjAAAAWgAAAFgAAABRAAAAVQAAAF4AAABlAAAAPQAAAEIAAABLAAAAUgAAAGAAAABUAAAAYgAAAD4AAABMAAAAQAAAAFMAAAB/AAAASgAAAEYAAABkAAAAVwAAAFwAAABUAAAARQAAAFIAAABAAAAAYQAAAFkAAABiAAAAVQAAAFcAAABlAAAAZgAAAEIAAABDAAAAUQAAAFYAAABMAAAASwAAAEEAAABoAAAAYAAAAF4AAABXAAAAUwAAAGYAAABkAAAAQwAAAEYAAABVAAAAWAAAAEgAAABbAAAASQAAAGMAAABQAAAAaQAAAFkAAABhAAAAWwAAAGcAAABFAAAAVAAAAEcAAABaAAAATQAAAFAAAABEAAAAagAAAF0AAABjAAAAWwAAAEkAAABZAAAARwAAAGkAAABYAAAAZwAAAFwAAABTAAAATgAAAEoAAABsAAAAZAAAAF8AAABdAAAATwAAAFoAAABNAAAAbQAAAF8AAABqAAAAXgAAAFYAAABRAAAASwAAAGsAAABoAAAAZQAAAF8AAABcAAAATwAAAE4AAABtAAAAbAAAAF0AAABgAAAAaAAAAGIAAABuAAAATAAAAFYAAABSAAAAYQAAAH8AAABiAAAAVAAAAGcAAABZAAAAbwAAAGIAAABuAAAAYQAAAG8AAABSAAAAYAAAAFQAAABjAAAAUAAAAGkAAABYAAAAagAAAFoAAABxAAAAZAAAAGYAAABTAAAAVwAAAGwAAAByAAAAXAAAAGUAAABmAAAAawAAAHAAAABRAAAAVQAAAF4AAABmAAAAZQAAAFcAAABVAAAAcgAAAHAAAABkAAAAZwAAAFsAAABhAAAAWQAAAHQAAABpAAAAbwAAAGgAAABrAAAAbgAAAHMAAABWAAAAXgAAAGAAAABpAAAAWAAAAGcAAABbAAAAcQAAAGMAAAB0AAAAagAAAF0AAABjAAAAWgAAAHUAAABtAAAAcQAAAGsAAAB/AAAAZQAAAF4AAABzAAAAaAAAAHAAAABsAAAAZAAAAF8AAABcAAAAdgAAAHIAAABtAAAAbQAAAGwAAABdAAAAXwAAAHUAAAB2AAAAagAAAG4AAABiAAAAaAAAAGAAAAB3AAAAbwAAAHMAAABvAAAAYQAAAG4AAABiAAAAdAAAAGcAAAB3AAAAcAAAAGsAAABmAAAAZQAAAHgAAABzAAAAcgAAAHEAAABjAAAAdAAAAGkAAAB1AAAAagAAAHkAAAByAAAAcAAAAGQAAABmAAAAdgAAAHgAAABsAAAAcwAAAG4AAABrAAAAaAAAAHgAAAB3AAAAcAAAAHQAAABnAAAAdwAAAG8AAABxAAAAaQAAAHkAAAB1AAAAfwAAAG0AAAB2AAAAcQAAAHkAAABqAAAAdgAAAHgAAABsAAAAcgAAAHUAAAB5AAAAbQAAAHcAAABvAAAAcwAAAG4AAAB5AAAAdAAAAHgAAAB4AAAAcwAAAHIAAABwAAAAeQAAAHcAAAB2AAAAeQAAAHQAAAB4AAAAdwAAAHUAAABxAAAAdgAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAEAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAIAAAAFAAAAAQAAAAAAAAD/////AQAAAAAAAAADAAAABAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAQAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAADAAAABQAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAABQAAAAUAAAAAAAAAAAAAAP////8BAAAAAAAAAAMAAAAEAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAABQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAQAAAP//////////AQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAIAAAAAAAAAAAAAAAEAAAACAAAABgAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAoAAAACAAAAAAAAAAAAAAABAAAAAQAAAAUAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAIAAAAAAAAAAAAAAAEAAAADAAAABwAAAAYAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAJAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAgAAAAAAAAAAAAAAAQAAAAQAAAAIAAAACgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAACAAAAAAAAAAAAAAABAAAACwAAAA8AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAgAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAACAAAAAAAAAAAAAAABAAAADAAAABAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAEAAAAKAAAAEwAAAAgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAgAAAAAAAAAAAAAAAQAAAA0AAAARAAAADQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAAAAAAAAAAAAAEAAAAOAAAAEgAAAA8AAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABMAAAACAAAAAAAAAAAAAAABAAAA//////////8TAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABIAAAAAAAAAGAAAAAAAAAAhAAAAAAAAAB4AAAAAAAAAIAAAAAMAAAAxAAAAAQAAADAAAAADAAAAMgAAAAMAAAAIAAAAAAAAAAUAAAAFAAAACgAAAAUAAAAWAAAAAAAAABAAAAAAAAAAEgAAAAAAAAApAAAAAQAAACEAAAAAAAAAHgAAAAAAAAAEAAAAAAAAAAAAAAAFAAAAAgAAAAUAAAAPAAAAAQAAAAgAAAAAAAAABQAAAAUAAAAfAAAAAQAAABYAAAAAAAAAEAAAAAAAAAACAAAAAAAAAAYAAAAAAAAADgAAAAAAAAAKAAAAAAAAAAsAAAAAAAAAEQAAAAMAAAAYAAAAAQAAABcAAAADAAAAGQAAAAMAAAAAAAAAAAAAAAEAAAAFAAAACQAAAAUAAAAFAAAAAAAAAAIAAAAAAAAABgAAAAAAAAASAAAAAQAAAAoAAAAAAAAACwAAAAAAAAAEAAAAAQAAAAMAAAAFAAAABwAAAAUAAAAIAAAAAQAAAAAAAAAAAAAAAQAAAAUAAAAQAAAAAQAAAAUAAAAAAAAAAgAAAAAAAAAHAAAAAAAAABUAAAAAAAAAJgAAAAAAAAAJAAAAAAAAABMAAAAAAAAAIgAAAAMAAAAOAAAAAQAAABQAAAADAAAAJAAAAAMAAAADAAAAAAAAAA0AAAAFAAAAHQAAAAUAAAABAAAAAAAAAAcAAAAAAAAAFQAAAAAAAAAGAAAA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74auECWhw7+cjSACjzniv8CZ+wUhN9I/1uGEKzup6z+/GYr/04bavwmkNHp7xee/F2NMZVAA1z+82s+x2BLivwr2ytbJ9em/KwEH1sMS1r8yp/2LhTfev81i5RexJsy/BlIKPVwR5b95Wyu0/Qjnv5DjoT7YYcs/nBhKZ6zrwr8wRYS7Nebuv3OW6geh+Lu/SLrixebL3j+pcyymN9Xrv8rHIFfWehZAMBwUdlo0DECTUc17EOb2PxpVB1SWChdAzjbhb9pTDUDQhmdvECX5P9FlMKCC9+g/IIAzjELgE0DajDngMv8GQFhWDmDPjNs/y1guLh96EkAxPi8k7DIEQJCc4URlhRhA3eLKKLwkEECqpNAyTBD/P6xpjXcDiwVAFtl//cQm4z+Ibt3XKiYTQM7mCLUb3QdAoM1t8yVv7D8aLZv2Nk8UQEAJPV5nQwxAtSsfTCoE9z9TPjXLXIIWQBVanC5W9AtAYM3d7Adm9j++5mQz1FoWQBUThyaVBghAwH5muQsV7T89Q1qv82MUQJoWGOfNuBdAzrkClkmwDkDQjKq77t37Py+g0dtitsE/ZwAMTwVPEUBojepluNwBQGYbtuW+t9w/HNWIJs6MEkDTNuQUSlgEQKxktPP5TcQ/ixbLB8JjEUCwuWjXMQYCQAS/R09FkRdAowpiZjhhDkB7LmlczD/7P01iQmhhsAVAnrtTwDy84z/Z6jfQ2TgTQChOCXMnWwpAhrW3daoz8z/HYJvVPI4VQLT3ik5FcA5Angi7LOZd+z+NNVzDy5gXQBXdvVTFUA1AYNMgOeYe+T8+qHXGCwkXQKQTOKwa5AJA8gFVoEMW0T+FwzJyttIRQAEAAAD/////BwAAAP////8xAAAA/////1cBAAD/////YQkAAP////+nQQAA/////5HLAQD/////95AMAP/////B9lcAAAAAAAAAAAAAAAAAAgAAAP////8OAAAA/////2IAAAD/////rgIAAP/////CEgAA/////06DAAD/////IpcDAP/////uIRkA/////4LtrwAAAAAAAAAAAAAAAAAAAAAAAgAAAP//////////AQAAAAMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////wIAAAD//////////wEAAAAAAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA/////////////////////wEAAAD///////////////8CAAAA////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD///////////////////////////////8CAAAA////////////////AQAAAP////////////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAAAQAAAP//////////AgAAAP//////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAAEAAAD//////////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAQAAAAEAAAACAAAAAgAAAAAAAAAFAAAABQAAAAAAAAACAAAAAgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAABAAAAAgAAAAIAAAACAAAAAAAAAAUAAAAGAAAAAAAAAAIAAAACAAAAAwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAgAAAAEAAAADAAAAAgAAAAIAAAAAAAAABQAAAAcAAAAAAAAAAgAAAAIAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAACAAAAAQAAAAQAAAACAAAAAgAAAAAAAAAFAAAACAAAAAAAAAACAAAAAgAAAAMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAACAAAAAAAAAAUAAAAJAAAAAAAAAAIAAAACAAAAAwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAIAAAACAAAAAAAAAAMAAAAOAAAAAgAAAAAAAAACAAAAAwAAAAAAAAAAAAAAAgAAAAIAAAADAAAABgAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAgAAAAIAAAAAAAAAAwAAAAoAAAACAAAAAAAAAAIAAAADAAAAAQAAAAAAAAACAAAAAgAAAAMAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAgAAAAAAAAADAAAACwAAAAIAAAAAAAAAAgAAAAMAAAACAAAAAAAAAAIAAAACAAAAAwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAACAAAAAAAAAAMAAAAMAAAAAgAAAAAAAAACAAAAAwAAAAMAAAAAAAAAAgAAAAIAAAADAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAIAAAAAAAAAAwAAAA0AAAACAAAAAAAAAAIAAAADAAAABAAAAAAAAAACAAAAAgAAAAMAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAgAAAAAAAAADAAAABgAAAAIAAAAAAAAAAgAAAAMAAAAPAAAAAAAAAAIAAAACAAAAAwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAIAAAACAAAAAAAAAAMAAAAHAAAAAgAAAAAAAAACAAAAAwAAABAAAAAAAAAAAgAAAAIAAAADAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAIAAAAAAAAAAwAAAAgAAAACAAAAAAAAAAIAAAADAAAAEQAAAAAAAAACAAAAAgAAAAMAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAACAAAAAgAAAAAAAAADAAAACQAAAAIAAAAAAAAAAgAAAAMAAAASAAAAAAAAAAIAAAACAAAAAwAAAA4AAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAACAAAAAAAAAAMAAAAFAAAAAgAAAAAAAAACAAAAAwAAABMAAAAAAAAAAgAAAAIAAAADAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAABAAEAAAEBAAAAAAABAAAAAQAAAAEAAQAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAAAAQAAAAMAAAAOAAAABgAAAAsAAAACAAAABwAAAAEAAAAYAAAABQAAAAoAAAABAAAABgAAAAAAAAAmAAAABwAAAAwAAAADAAAACAAAAAIAAAAxAAAACQAAAA4AAAAAAAAABQAAAAQAAAA6AAAACAAAAA0AAAAEAAAACQAAAAMAAAA/AAAACwAAAAYAAAAPAAAACgAAABAAAABIAAAADAAAAAcAAAAQAAAACwAAABEAAABTAAAACgAAAAUAAAATAAAADgAAAA8AAABhAAAADQAAAAgAAAARAAAADAAAABIAAABrAAAADgAAAAkAAAASAAAADQAAABMAAAB1AAAADwAAABMAAAARAAAAEgAAABAAAAAHAAAABwAAAAEAAAACAAAABAAAAAMAAAAAAAAAAAAAAAcAAAADAAAAAQAAAAIAAAAFAAAABAAAAAAAAAAAAAAAYWxnb3MuYwBfcG9seWZpbGxJbnRlcm5hbABhZGphY2VudEZhY2VEaXJbdG1wRmlqay5mYWNlXVtmaWprLmZhY2VdID09IEtJAGZhY2VpamsuYwBfZmFjZUlqa1BlbnRUb0dlb0JvdW5kYXJ5AGFkamFjZW50RmFjZURpcltjZW50ZXJJSksuZmFjZV1bZmFjZTJdID09IEtJAF9mYWNlSWprVG9HZW9Cb3VuZGFyeQBwb2x5Z29uLT5uZXh0ID09IE5VTEwAbGlua2VkR2VvLmMAYWRkTmV3TGlua2VkUG9seWdvbgBuZXh0ICE9IE5VTEwAbG9vcCAhPSBOVUxMAGFkZE5ld0xpbmtlZExvb3AAcG9seWdvbi0+Zmlyc3QgPT0gTlVMTABhZGRMaW5rZWRMb29wAGNvb3JkICE9IE5VTEwAYWRkTGlua2VkQ29vcmQAbG9vcC0+Zmlyc3QgPT0gTlVMTABpbm5lckxvb3BzICE9IE5VTEwAbm9ybWFsaXplTXVsdGlQb2x5Z29uAGJib3hlcyAhPSBOVUxMAGNhbmRpZGF0ZXMgIT0gTlVMTABmaW5kUG9seWdvbkZvckhvbGUAY2FuZGlkYXRlQkJveGVzICE9IE5VTEwAcmV2RGlyICE9IElOVkFMSURfRElHSVQAbG9jYWxpai5jAGgzVG9Mb2NhbElqawBiYXNlQ2VsbCAhPSBvcmlnaW5CYXNlQ2VsbAAhKG9yaWdpbk9uUGVudCAmJiBpbmRleE9uUGVudCkAcGVudGFnb25Sb3RhdGlvbnMgPj0gMABkaXJlY3Rpb25Sb3RhdGlvbnMgPj0gMABiYXNlQ2VsbCA9PSBvcmlnaW5CYXNlQ2VsbABiYXNlQ2VsbCAhPSBJTlZBTElEX0JBU0VfQ0VMTABsb2NhbElqa1RvSDMAIV9pc0Jhc2VDZWxsUGVudGFnb24oYmFzZUNlbGwpAGJhc2VDZWxsUm90YXRpb25zID49IDAAd2l0aGluUGVudGFnb25Sb3RhdGlvbnMgPj0gMABncmFwaC0+YnVja2V0cyAhPSBOVUxMAHZlcnRleEdyYXBoLmMAaW5pdFZlcnRleEdyYXBoAG5vZGUgIT0gTlVMTABhZGRWZXJ0ZXhOb2Rl\";\n var tempDoublePtr = 24032;\n function demangle(func) {\n return func;\n }\n function demangleAll(text) {\n var regex = /\\b__Z[\\w\\d_]+/g;\n return text.replace(regex, function(x) {\n var y = demangle(x);\n return x === y ? x : y + \" [\" + x + \"]\";\n });\n }\n function jsStackTrace() {\n var err = new Error();\n if (!err.stack) {\n try {\n throw new Error(0);\n } catch (e) {\n err = e;\n }\n if (!err.stack) return \"(no stack trace available)\";\n }\n return err.stack.toString();\n }\n function stackTrace() {\n var js = jsStackTrace();\n if (Module[\"extraStackTrace\"]) js += \"\\n\" + Module[\"extraStackTrace\"]();\n return demangleAll(js);\n }\n function ___assert_fail(condition, filename, line, func) {\n abort(\"Assertion failed: \" + UTF8ToString(condition) + \", at: \" + [\n filename ? UTF8ToString(filename) : \"unknown filename\",\n line,\n func ? UTF8ToString(func) : \"unknown function\"\n ]);\n }\n function _emscripten_get_heap_size() {\n return HEAP8.length;\n }\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.set(HEAPU8.subarray(src, src + num), dest);\n }\n function ___setErrNo(value) {\n if (Module[\"___errno_location\"]) HEAP32[Module[\"___errno_location\"]() >> 2] = value;\n return value;\n }\n function abortOnCannotGrowMemory(requestedSize) {\n abort(\"OOM\");\n }\n function emscripten_realloc_buffer(size) {\n try {\n var newBuffer = new ArrayBuffer(size);\n if (newBuffer.byteLength != size) return;\n new Int8Array(newBuffer).set(HEAP8);\n _emscripten_replace_memory(newBuffer);\n updateGlobalBufferAndViews(newBuffer);\n return 1;\n } catch (e) {}\n }\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = _emscripten_get_heap_size();\n var PAGE_MULTIPLE = 16777216;\n var LIMIT = 2147483648 - PAGE_MULTIPLE;\n if (requestedSize > LIMIT) return false;\n var MIN_TOTAL_MEMORY = 16777216;\n var newSize = Math.max(oldSize, MIN_TOTAL_MEMORY);\n while(newSize < requestedSize)if (newSize <= 536870912) newSize = alignUp(2 * newSize, PAGE_MULTIPLE);\n else newSize = Math.min(alignUp((3 * newSize + 2147483648) / 4, PAGE_MULTIPLE), LIMIT);\n var replacement = emscripten_realloc_buffer(newSize);\n if (!replacement) return false;\n return true;\n }\n var decodeBase64 = typeof atob === \"function\" ? atob : function(input) {\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var output = \"\";\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0;\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n do {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = enc1 << 2 | enc2 >> 4;\n chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n chr3 = (enc3 & 3) << 6 | enc4;\n output = output + String.fromCharCode(chr1);\n if (enc3 !== 64) output = output + String.fromCharCode(chr2);\n if (enc4 !== 64) output = output + String.fromCharCode(chr3);\n }while (i < input.length);\n return output;\n };\n function intArrayFromBase64(s) {\n try {\n var decoded = decodeBase64(s);\n var bytes = new Uint8Array(decoded.length);\n for(var i = 0; i < decoded.length; ++i)bytes[i] = decoded.charCodeAt(i);\n return bytes;\n } catch (_) {\n throw new Error(\"Converting base64 string to bytes failed.\");\n }\n }\n function tryParseAsDataURI(filename) {\n if (!isDataURI(filename)) return;\n return intArrayFromBase64(filename.slice(dataURIPrefix.length));\n }\n var asmGlobalArg = {\n \"Math\": Math,\n \"Int8Array\": Int8Array,\n \"Int32Array\": Int32Array,\n \"Uint8Array\": Uint8Array,\n \"Float32Array\": Float32Array,\n \"Float64Array\": Float64Array\n };\n var asmLibraryArg = {\n \"a\": abort,\n \"b\": setTempRet0,\n \"c\": getTempRet0,\n \"d\": ___assert_fail,\n \"e\": ___setErrNo,\n \"f\": _emscripten_get_heap_size,\n \"g\": _emscripten_memcpy_big,\n \"h\": _emscripten_resize_heap,\n \"i\": abortOnCannotGrowMemory,\n \"j\": demangle,\n \"k\": demangleAll,\n \"l\": emscripten_realloc_buffer,\n \"m\": jsStackTrace,\n \"n\": stackTrace,\n \"o\": tempDoublePtr,\n \"p\": DYNAMICTOP_PTR\n }; // EMSCRIPTEN_START_ASM\n var asm = /** @suppress {uselessCode} */ function(global, env, buffer) {\n \"almost asm\";\n var a = new global.Int8Array(buffer), b = new global.Int32Array(buffer), c = new global.Uint8Array(buffer), d = new global.Float32Array(buffer), e = new global.Float64Array(buffer), g = env.p | 0, p = global.Math.floor, q = global.Math.abs, r = global.Math.sqrt, s = global.Math.pow, t = global.Math.cos, u = global.Math.sin, v = global.Math.tan, w = global.Math.acos, x = global.Math.asin, y = global.Math.atan, z = global.Math.atan2, A = global.Math.ceil, B = global.Math.imul, C = global.Math.min, D = global.Math.clz32, F = env.b, G = env.c, H = env.d, I = env.e, J = env.f, K = env.g, L = env.h, M = env.i, S = 24048;\n function V(newBuffer) {\n a = new Int8Array(newBuffer);\n c = new Uint8Array(newBuffer);\n b = new Int32Array(newBuffer);\n d = new Float32Array(newBuffer);\n e = new Float64Array(newBuffer);\n buffer = newBuffer;\n return true;\n } // EMSCRIPTEN_START_FUNCS\n function W(a) {\n a = a | 0;\n var b = 0;\n b = S;\n S = S + a | 0;\n S = S + 15 & -16;\n return b | 0;\n }\n function X() {\n return S | 0;\n }\n function Y(a) {\n a = a | 0;\n S = a;\n }\n function Z(a, b) {\n a = a | 0;\n b = b | 0;\n S = a;\n }\n function _(a) {\n a = a | 0;\n return (B(a * 3 | 0, a + 1 | 0) | 0) + 1 | 0;\n }\n function $(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0;\n if (!(ba(a, b, c, d, 0) | 0)) return;\n f = (B(c * 3 | 0, c + 1 | 0) | 0) + 1 | 0;\n hd(d | 0, 0, f << 3 | 0);\n e = Yc(f, 4) | 0;\n if (!e) return;\n ca(a, b, c, d, e, f, 0);\n Xc(e);\n return;\n }\n function aa(a, b, c, d, e) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0;\n if (!(ba(a, b, c, d, e) | 0)) return;\n f = (B(c * 3 | 0, c + 1 | 0) | 0) + 1 | 0;\n hd(d | 0, 0, f << 3 | 0);\n if (e | 0) {\n hd(e | 0, 0, f << 2 | 0);\n ca(a, b, c, d, e, f, 0);\n return;\n }\n e = Yc(f, 4) | 0;\n if (!e) return;\n ca(a, b, c, d, e, f, 0);\n Xc(e);\n return;\n }\n function ba(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0;\n o = S;\n S = S + 16 | 0;\n n = o;\n g = e;\n b[g >> 2] = a;\n b[g + 4 >> 2] = c;\n g = (f | 0) != 0;\n if (g) b[f >> 2] = 0;\n if (Fb(a, c) | 0) {\n n = 1;\n S = o;\n return n | 0;\n }\n b[n >> 2] = 0;\n a: do if ((d | 0) >= 1) {\n if (g) {\n k = 0;\n l = 1;\n m = 1;\n h = 0;\n g = a;\n while(true){\n if (!(h | k)) {\n g = da(g, c, 4, n) | 0;\n c = G() | 0;\n if ((g | 0) == 0 & (c | 0) == 0) {\n g = 2;\n break a;\n }\n if (Fb(g, c) | 0) {\n g = 1;\n break a;\n }\n }\n g = da(g, c, b[16 + (k << 2) >> 2] | 0, n) | 0;\n c = G() | 0;\n if ((g | 0) == 0 & (c | 0) == 0) {\n g = 2;\n break a;\n }\n a = e + (m << 3) | 0;\n b[a >> 2] = g;\n b[a + 4 >> 2] = c;\n b[f + (m << 2) >> 2] = l;\n h = h + 1 | 0;\n a = (h | 0) == (l | 0);\n i = k + 1 | 0;\n j = (i | 0) == 6;\n if (Fb(g, c) | 0) {\n g = 1;\n break a;\n }\n l = l + (j & a & 1) | 0;\n if ((l | 0) > (d | 0)) {\n g = 0;\n break;\n } else {\n k = a ? j ? 0 : i : k;\n m = m + 1 | 0;\n h = a ? 0 : h;\n }\n }\n } else {\n k = 0;\n l = 1;\n m = 1;\n h = 0;\n g = a;\n while(true){\n if (!(h | k)) {\n g = da(g, c, 4, n) | 0;\n c = G() | 0;\n if ((g | 0) == 0 & (c | 0) == 0) {\n g = 2;\n break a;\n }\n if (Fb(g, c) | 0) {\n g = 1;\n break a;\n }\n }\n g = da(g, c, b[16 + (k << 2) >> 2] | 0, n) | 0;\n c = G() | 0;\n if ((g | 0) == 0 & (c | 0) == 0) {\n g = 2;\n break a;\n }\n a = e + (m << 3) | 0;\n b[a >> 2] = g;\n b[a + 4 >> 2] = c;\n h = h + 1 | 0;\n a = (h | 0) == (l | 0);\n i = k + 1 | 0;\n j = (i | 0) == 6;\n if (Fb(g, c) | 0) {\n g = 1;\n break a;\n }\n l = l + (j & a & 1) | 0;\n if ((l | 0) > (d | 0)) {\n g = 0;\n break;\n } else {\n k = a ? j ? 0 : i : k;\n m = m + 1 | 0;\n h = a ? 0 : h;\n }\n }\n }\n } else g = 0;\n while (0);\n n = g;\n S = o;\n return n | 0;\n }\n function ca(a, c, d, e, f, g, h) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n g = g | 0;\n h = h | 0;\n var i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0;\n m = S;\n S = S + 16 | 0;\n l = m;\n if ((a | 0) == 0 & (c | 0) == 0) {\n S = m;\n return;\n }\n i = bd(a | 0, c | 0, g | 0, ((g | 0) < 0) << 31 >> 31 | 0) | 0;\n G();\n j = e + (i << 3) | 0;\n n = j;\n o = b[n >> 2] | 0;\n n = b[n + 4 >> 2] | 0;\n k = (o | 0) == (a | 0) & (n | 0) == (c | 0);\n if (!((o | 0) == 0 & (n | 0) == 0 | k)) do {\n i = (i + 1 | 0) % (g | 0) | 0;\n j = e + (i << 3) | 0;\n o = j;\n n = b[o >> 2] | 0;\n o = b[o + 4 >> 2] | 0;\n k = (n | 0) == (a | 0) & (o | 0) == (c | 0);\n }while (!((n | 0) == 0 & (o | 0) == 0 | k));\n i = f + (i << 2) | 0;\n if (k ? (b[i >> 2] | 0) <= (h | 0) : 0) {\n S = m;\n return;\n }\n o = j;\n b[o >> 2] = a;\n b[o + 4 >> 2] = c;\n b[i >> 2] = h;\n if ((h | 0) >= (d | 0)) {\n S = m;\n return;\n }\n o = h + 1 | 0;\n b[l >> 2] = 0;\n n = da(a, c, 2, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 3, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 1, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 5, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 4, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 6, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n S = m;\n return;\n }\n function da(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0;\n if ((b[e >> 2] | 0) > 0) {\n f = 0;\n do {\n d = Pa(d) | 0;\n f = f + 1 | 0;\n }while ((f | 0) < (b[e >> 2] | 0));\n }\n i = cd(a | 0, c | 0, 45) | 0;\n G();\n j = i & 127;\n g = Lb(a, c) | 0;\n f = cd(a | 0, c | 0, 52) | 0;\n G();\n f = f & 15;\n a: do {\n if (!f) h = 6;\n else while(true){\n m = (15 - f | 0) * 3 | 0;\n n = cd(a | 0, c | 0, m | 0) | 0;\n G();\n n = n & 7;\n o = (Rb(f) | 0) == 0;\n f = f + -1 | 0;\n l = dd(7, 0, m | 0) | 0;\n c = c & ~(G() | 0);\n m = dd(b[(o ? 464 : 48) + (n * 28 | 0) + (d << 2) >> 2] | 0, 0, m | 0) | 0;\n k = G() | 0;\n d = b[(o ? 672 : 256) + (n * 28 | 0) + (d << 2) >> 2] | 0;\n a = m | a & ~l;\n c = k | c;\n if (!d) {\n d = 0;\n break a;\n }\n if (!f) {\n h = 6;\n break;\n }\n }\n }while (0);\n if ((h | 0) == 6) {\n o = b[880 + (j * 28 | 0) + (d << 2) >> 2] | 0;\n n = dd(o | 0, 0, 45) | 0;\n a = n | a;\n c = G() | 0 | c & -1040385;\n d = b[4304 + (j * 28 | 0) + (d << 2) >> 2] | 0;\n if ((o & 127 | 0) == 127) {\n o = dd(b[880 + (j * 28 | 0) + 20 >> 2] | 0, 0, 45) | 0;\n c = G() | 0 | c & -1040385;\n d = b[4304 + (j * 28 | 0) + 20 >> 2] | 0;\n a = Nb(o | a, c) | 0;\n c = G() | 0;\n b[e >> 2] = (b[e >> 2] | 0) + 1;\n }\n }\n h = cd(a | 0, c | 0, 45) | 0;\n G();\n h = h & 127;\n b: do {\n if (!(la(h) | 0)) {\n if ((d | 0) > 0) {\n f = 0;\n do {\n a = Nb(a, c) | 0;\n c = G() | 0;\n f = f + 1 | 0;\n }while ((f | 0) != (d | 0));\n }\n } else {\n c: do if ((Lb(a, c) | 0) == 1) {\n if ((j | 0) != (h | 0)) {\n if (ra(h, b[7728 + (j * 28 | 0) >> 2] | 0) | 0) {\n a = Pb(a, c) | 0;\n g = 1;\n c = G() | 0;\n break;\n } else {\n a = Nb(a, c) | 0;\n g = 1;\n c = G() | 0;\n break;\n }\n }\n switch(g | 0){\n case 5:\n a = Pb(a, c) | 0;\n c = G() | 0;\n b[e >> 2] = (b[e >> 2] | 0) + 5;\n g = 0;\n break c;\n case 3:\n a = Nb(a, c) | 0;\n c = G() | 0;\n b[e >> 2] = (b[e >> 2] | 0) + 1;\n g = 0;\n break c;\n default:\n n = 0;\n o = 0;\n F(n | 0);\n return o | 0;\n }\n } else g = 0;\n while (0);\n if ((d | 0) > 0) {\n f = 0;\n do {\n a = Mb(a, c) | 0;\n c = G() | 0;\n f = f + 1 | 0;\n }while ((f | 0) != (d | 0));\n }\n if ((j | 0) != (h | 0)) {\n if (!(ma(h) | 0)) {\n if ((g | 0) != 0 | (Lb(a, c) | 0) != 5) break;\n b[e >> 2] = (b[e >> 2] | 0) + 1;\n break;\n }\n switch(i & 127){\n case 8:\n case 118:\n break b;\n default:\n }\n if ((Lb(a, c) | 0) != 3) b[e >> 2] = (b[e >> 2] | 0) + 1;\n }\n }\n }while (0);\n b[e >> 2] = ((b[e >> 2] | 0) + d | 0) % 6 | 0;\n n = c;\n o = a;\n F(n | 0);\n return o | 0;\n }\n function ea(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0;\n m = S;\n S = S + 16 | 0;\n l = m;\n if (!d) {\n l = e;\n b[l >> 2] = a;\n b[l + 4 >> 2] = c;\n l = 0;\n S = m;\n return l | 0;\n }\n b[l >> 2] = 0;\n a: do if (!(Fb(a, c) | 0)) {\n g = (d | 0) > 0;\n if (g) {\n f = 0;\n k = a;\n do {\n k = da(k, c, 4, l) | 0;\n c = G() | 0;\n if ((k | 0) == 0 & (c | 0) == 0) {\n a = 2;\n break a;\n }\n f = f + 1 | 0;\n if (Fb(k, c) | 0) {\n a = 1;\n break a;\n }\n }while ((f | 0) < (d | 0));\n j = e;\n b[j >> 2] = k;\n b[j + 4 >> 2] = c;\n j = d + -1 | 0;\n if (g) {\n g = 0;\n h = 1;\n f = k;\n a = c;\n do {\n f = da(f, a, 2, l) | 0;\n a = G() | 0;\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n i = e + (h << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n h = h + 1 | 0;\n if (Fb(f, a) | 0) {\n a = 1;\n break a;\n }\n g = g + 1 | 0;\n }while ((g | 0) < (d | 0));\n i = 0;\n g = h;\n do {\n f = da(f, a, 3, l) | 0;\n a = G() | 0;\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n h = e + (g << 3) | 0;\n b[h >> 2] = f;\n b[h + 4 >> 2] = a;\n g = g + 1 | 0;\n if (Fb(f, a) | 0) {\n a = 1;\n break a;\n }\n i = i + 1 | 0;\n }while ((i | 0) < (d | 0));\n h = 0;\n do {\n f = da(f, a, 1, l) | 0;\n a = G() | 0;\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n i = e + (g << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n g = g + 1 | 0;\n if (Fb(f, a) | 0) {\n a = 1;\n break a;\n }\n h = h + 1 | 0;\n }while ((h | 0) < (d | 0));\n h = 0;\n do {\n f = da(f, a, 5, l) | 0;\n a = G() | 0;\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n i = e + (g << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n g = g + 1 | 0;\n if (Fb(f, a) | 0) {\n a = 1;\n break a;\n }\n h = h + 1 | 0;\n }while ((h | 0) < (d | 0));\n h = 0;\n do {\n f = da(f, a, 4, l) | 0;\n a = G() | 0;\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n i = e + (g << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n g = g + 1 | 0;\n if (Fb(f, a) | 0) {\n a = 1;\n break a;\n }\n h = h + 1 | 0;\n }while ((h | 0) < (d | 0));\n h = 0;\n while(true){\n f = da(f, a, 6, l) | 0;\n a = G() | 0;\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n if ((h | 0) != (j | 0)) {\n i = e + (g << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n if (!(Fb(f, a) | 0)) g = g + 1 | 0;\n else {\n a = 1;\n break a;\n }\n }\n h = h + 1 | 0;\n if ((h | 0) >= (d | 0)) {\n h = k;\n g = c;\n break;\n }\n }\n } else {\n h = k;\n f = k;\n g = c;\n a = c;\n }\n } else {\n h = e;\n b[h >> 2] = a;\n b[h + 4 >> 2] = c;\n h = a;\n f = a;\n g = c;\n a = c;\n }\n a = ((h | 0) != (f | 0) | (g | 0) != (a | 0)) & 1;\n } else a = 1;\n while (0);\n l = a;\n S = m;\n return l | 0;\n }\n function fa(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n g = S;\n S = S + 48 | 0;\n f = g + 8 | 0;\n e = g;\n i = a;\n h = b[i + 4 >> 2] | 0;\n d = e;\n b[d >> 2] = b[i >> 2];\n b[d + 4 >> 2] = h;\n vc(e, f);\n f = ya(f, c) | 0;\n c = b[e >> 2] | 0;\n e = b[a + 8 >> 2] | 0;\n if ((e | 0) <= 0) {\n i = c;\n h = (f | 0) < (i | 0);\n i = h ? i : f;\n i = i + 12 | 0;\n S = g;\n return i | 0;\n }\n d = b[a + 12 >> 2] | 0;\n a = 0;\n do {\n c = (b[d + (a << 3) >> 2] | 0) + c | 0;\n a = a + 1 | 0;\n }while ((a | 0) < (e | 0));\n i = (f | 0) < (c | 0);\n i = i ? c : f;\n i = i + 12 | 0;\n S = g;\n return i | 0;\n }\n function ga(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0;\n i = S;\n S = S + 48 | 0;\n e = i + 8 | 0;\n f = i;\n if (!(ha(a, c, d) | 0)) {\n S = i;\n return;\n }\n j = a;\n g = b[j + 4 >> 2] | 0;\n h = f;\n b[h >> 2] = b[j >> 2];\n b[h + 4 >> 2] = g;\n vc(f, e);\n h = ya(e, c) | 0;\n c = b[f >> 2] | 0;\n g = b[a + 8 >> 2] | 0;\n if ((g | 0) > 0) {\n f = b[a + 12 >> 2] | 0;\n e = 0;\n do {\n c = (b[f + (e << 3) >> 2] | 0) + c | 0;\n e = e + 1 | 0;\n }while ((e | 0) != (g | 0));\n }\n c = (h | 0) < (c | 0) ? c : h;\n if ((c | 0) <= -12) {\n S = i;\n return;\n }\n j = c + 11 | 0;\n hd(d | 0, 0, (((j | 0) > 0 ? j : 0) << 3) + 8 | 0);\n S = i;\n return;\n }\n function ha(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, I = 0, J = 0;\n J = S;\n S = S + 112 | 0;\n D = J + 80 | 0;\n j = J + 72 | 0;\n E = J;\n F = J + 56 | 0;\n k = a + 8 | 0;\n I = Wc((b[k >> 2] << 5) + 32 | 0) | 0;\n if (!I) H(22848, 22448, 800, 22456);\n wc(a, I);\n g = a;\n e = b[g + 4 >> 2] | 0;\n i = j;\n b[i >> 2] = b[g >> 2];\n b[i + 4 >> 2] = e;\n vc(j, D);\n i = ya(D, c) | 0;\n e = b[j >> 2] | 0;\n g = b[k >> 2] | 0;\n if ((g | 0) > 0) {\n h = b[a + 12 >> 2] | 0;\n f = 0;\n do {\n e = (b[h + (f << 3) >> 2] | 0) + e | 0;\n f = f + 1 | 0;\n }while ((f | 0) != (g | 0));\n }\n i = (i | 0) < (e | 0) ? e : i;\n C = i + 12 | 0;\n f = Yc(C, 8) | 0;\n l = Yc(C, 8) | 0;\n b[D >> 2] = 0;\n A = a;\n B = b[A + 4 >> 2] | 0;\n e = j;\n b[e >> 2] = b[A >> 2];\n b[e + 4 >> 2] = B;\n e = ia(j, C, c, D, f, l) | 0;\n if (e | 0) {\n Xc(f);\n Xc(l);\n Xc(I);\n I = e;\n S = J;\n return I | 0;\n }\n a: do if ((b[k >> 2] | 0) > 0) {\n g = a + 12 | 0;\n e = 0;\n while(true){\n h = ia((b[g >> 2] | 0) + (e << 3) | 0, C, c, D, f, l) | 0;\n e = e + 1 | 0;\n if (h | 0) break;\n if ((e | 0) >= (b[k >> 2] | 0)) break a;\n }\n Xc(f);\n Xc(l);\n Xc(I);\n I = h;\n S = J;\n return I | 0;\n }\n while (0);\n if ((i | 0) > -12) hd(l | 0, 0, ((C | 0) > 1 ? C : 1) << 3 | 0);\n b: do if ((b[D >> 2] | 0) > 0) {\n B = ((C | 0) < 0) << 31 >> 31;\n v = f;\n w = l;\n x = f;\n y = f;\n z = l;\n A = f;\n e = f;\n r = f;\n s = l;\n t = l;\n u = l;\n f = l;\n c: while(true){\n q = b[D >> 2] | 0;\n o = 0;\n p = 0;\n g = 0;\n while(true){\n h = E;\n i = h + 56 | 0;\n do {\n b[h >> 2] = 0;\n h = h + 4 | 0;\n }while ((h | 0) < (i | 0));\n c = v + (o << 3) | 0;\n j = b[c >> 2] | 0;\n c = b[c + 4 >> 2] | 0;\n if (ba(j, c, 1, E, 0) | 0) {\n h = E;\n i = h + 56 | 0;\n do {\n b[h >> 2] = 0;\n h = h + 4 | 0;\n }while ((h | 0) < (i | 0));\n h = Yc(7, 4) | 0;\n if (h | 0) {\n ca(j, c, 1, E, h, 7, 0);\n Xc(h);\n }\n }\n n = 0;\n do {\n m = E + (n << 3) | 0;\n l = b[m >> 2] | 0;\n m = b[m + 4 >> 2] | 0;\n d: do if (!((l | 0) == 0 & (m | 0) == 0)) {\n j = bd(l | 0, m | 0, C | 0, B | 0) | 0;\n G();\n h = d + (j << 3) | 0;\n i = h;\n c = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n if (!((c | 0) == 0 & (i | 0) == 0)) {\n k = 0;\n while(true){\n if ((k | 0) > (C | 0)) break c;\n if ((c | 0) == (l | 0) & (i | 0) == (m | 0)) break d;\n j = (j + 1 | 0) % (C | 0) | 0;\n h = d + (j << 3) | 0;\n i = h;\n c = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n if ((c | 0) == 0 & (i | 0) == 0) break;\n else k = k + 1 | 0;\n }\n }\n if (!((l | 0) == 0 & (m | 0) == 0)) {\n Vb(l, m, F);\n if (xc(a, I, F) | 0) {\n k = h;\n b[k >> 2] = l;\n b[k + 4 >> 2] = m;\n k = w + (g << 3) | 0;\n b[k >> 2] = l;\n b[k + 4 >> 2] = m;\n g = g + 1 | 0;\n }\n }\n }\n while (0);\n n = n + 1 | 0;\n }while (n >>> 0 < 7);\n p = p + 1 | 0;\n if ((p | 0) >= (q | 0)) break;\n else o = o + 1 | 0;\n }\n if ((q | 0) > 0) hd(x | 0, 0, q << 3 | 0);\n b[D >> 2] = g;\n if ((g | 0) > 0) {\n l = f;\n m = u;\n n = A;\n o = t;\n p = s;\n q = w;\n f = r;\n u = e;\n t = y;\n s = x;\n r = l;\n e = m;\n A = z;\n z = n;\n y = o;\n x = p;\n w = v;\n v = q;\n } else break b;\n }\n Xc(y);\n Xc(z);\n Xc(I);\n I = -1;\n S = J;\n return I | 0;\n } else e = l;\n while (0);\n Xc(I);\n Xc(f);\n Xc(e);\n I = 0;\n S = J;\n return I | 0;\n }\n function ia(a, c, d, f, g, h) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n h = h | 0;\n var i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0.0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0.0, E = 0.0;\n C = S;\n S = S + 48 | 0;\n y = C + 32 | 0;\n z = C + 16 | 0;\n A = C;\n i = b[a >> 2] | 0;\n if ((i | 0) <= 0) {\n B = 0;\n S = C;\n return B | 0;\n }\n t = a + 4 | 0;\n u = y + 8 | 0;\n v = z + 8 | 0;\n w = A + 8 | 0;\n x = ((c | 0) < 0) << 31 >> 31;\n s = 0;\n a: while(true){\n j = b[t >> 2] | 0;\n q = j + (s << 4) | 0;\n b[y >> 2] = b[q >> 2];\n b[y + 4 >> 2] = b[q + 4 >> 2];\n b[y + 8 >> 2] = b[q + 8 >> 2];\n b[y + 12 >> 2] = b[q + 12 >> 2];\n if ((s | 0) == (i + -1 | 0)) {\n b[z >> 2] = b[j >> 2];\n b[z + 4 >> 2] = b[j + 4 >> 2];\n b[z + 8 >> 2] = b[j + 8 >> 2];\n b[z + 12 >> 2] = b[j + 12 >> 2];\n } else {\n q = j + (s + 1 << 4) | 0;\n b[z >> 2] = b[q >> 2];\n b[z + 4 >> 2] = b[q + 4 >> 2];\n b[z + 8 >> 2] = b[q + 8 >> 2];\n b[z + 12 >> 2] = b[q + 12 >> 2];\n }\n q = za(y, z, d) | 0;\n b: do if ((q | 0) > 0) {\n r = +(q | 0);\n p = 0;\n c: while(true){\n E = +(q - p | 0);\n D = +(p | 0);\n e[A >> 3] = +e[y >> 3] * E / r + +e[z >> 3] * D / r;\n e[w >> 3] = +e[u >> 3] * E / r + +e[v >> 3] * D / r;\n n = Sb(A, d) | 0;\n o = G() | 0;\n j = bd(n | 0, o | 0, c | 0, x | 0) | 0;\n G();\n i = h + (j << 3) | 0;\n k = i;\n l = b[k >> 2] | 0;\n k = b[k + 4 >> 2] | 0;\n d: do if ((l | 0) == 0 & (k | 0) == 0) B = 14;\n else {\n m = 0;\n while(true){\n if ((m | 0) > (c | 0)) {\n i = 1;\n break d;\n }\n if ((l | 0) == (n | 0) & (k | 0) == (o | 0)) {\n i = 7;\n break d;\n }\n j = (j + 1 | 0) % (c | 0) | 0;\n i = h + (j << 3) | 0;\n k = i;\n l = b[k >> 2] | 0;\n k = b[k + 4 >> 2] | 0;\n if ((l | 0) == 0 & (k | 0) == 0) {\n B = 14;\n break;\n } else m = m + 1 | 0;\n }\n }\n while (0);\n if ((B | 0) == 14) {\n B = 0;\n if ((n | 0) == 0 & (o | 0) == 0) i = 7;\n else {\n b[i >> 2] = n;\n b[i + 4 >> 2] = o;\n i = b[f >> 2] | 0;\n m = g + (i << 3) | 0;\n b[m >> 2] = n;\n b[m + 4 >> 2] = o;\n b[f >> 2] = i + 1;\n i = 0;\n }\n }\n switch(i & 7){\n case 7:\n case 0:\n break;\n default:\n break c;\n }\n p = p + 1 | 0;\n if ((q | 0) <= (p | 0)) {\n B = 8;\n break b;\n }\n }\n if (i | 0) {\n i = -1;\n B = 20;\n break a;\n }\n } else B = 8;\n while (0);\n if ((B | 0) == 8) B = 0;\n s = s + 1 | 0;\n i = b[a >> 2] | 0;\n if ((s | 0) >= (i | 0)) {\n i = 0;\n B = 20;\n break;\n }\n }\n if ((B | 0) == 20) {\n S = C;\n return i | 0;\n }\n return 0;\n }\n function ja(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0;\n k = S;\n S = S + 176 | 0;\n j = k;\n if ((c | 0) < 1) {\n Mc(d, 0, 0);\n S = k;\n return;\n }\n h = a;\n h = cd(b[h >> 2] | 0, b[h + 4 >> 2] | 0, 52) | 0;\n G();\n Mc(d, (c | 0) > 6 ? c : 6, h & 15);\n h = 0;\n do {\n e = a + (h << 3) | 0;\n Wb(b[e >> 2] | 0, b[e + 4 >> 2] | 0, j);\n e = b[j >> 2] | 0;\n if ((e | 0) > 0) {\n i = 0;\n do {\n g = j + 8 + (i << 4) | 0;\n i = i + 1 | 0;\n e = j + 8 + (((i | 0) % (e | 0) | 0) << 4) | 0;\n f = Rc(d, e, g) | 0;\n if (!f) Qc(d, g, e);\n else Pc(d, f);\n e = b[j >> 2] | 0;\n }while ((i | 0) < (e | 0));\n }\n h = h + 1 | 0;\n }while ((h | 0) != (c | 0));\n S = k;\n return;\n }\n function ka(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0;\n g = S;\n S = S + 32 | 0;\n e = g;\n f = g + 16 | 0;\n ja(a, c, f);\n b[d >> 2] = 0;\n b[d + 4 >> 2] = 0;\n b[d + 8 >> 2] = 0;\n a = Oc(f) | 0;\n if (!a) {\n kc(d);\n Nc(f);\n S = g;\n return;\n }\n do {\n c = hc(d) | 0;\n do {\n ic(c, a);\n h = a + 16 | 0;\n b[e >> 2] = b[h >> 2];\n b[e + 4 >> 2] = b[h + 4 >> 2];\n b[e + 8 >> 2] = b[h + 8 >> 2];\n b[e + 12 >> 2] = b[h + 12 >> 2];\n Pc(f, a);\n a = Sc(f, e) | 0;\n }while ((a | 0) != 0);\n a = Oc(f) | 0;\n }while ((a | 0) != 0);\n kc(d);\n Nc(f);\n S = g;\n return;\n }\n function la(a) {\n a = a | 0;\n return b[7728 + (a * 28 | 0) + 16 >> 2] | 0;\n }\n function ma(a) {\n a = a | 0;\n return (a | 0) == 4 | (a | 0) == 117 | 0;\n }\n function na(a) {\n a = a | 0;\n return b[11152 + ((b[a >> 2] | 0) * 216 | 0) + ((b[a + 4 >> 2] | 0) * 72 | 0) + ((b[a + 8 >> 2] | 0) * 24 | 0) + (b[a + 12 >> 2] << 3) >> 2] | 0;\n }\n function oa(a) {\n a = a | 0;\n return b[11152 + ((b[a >> 2] | 0) * 216 | 0) + ((b[a + 4 >> 2] | 0) * 72 | 0) + ((b[a + 8 >> 2] | 0) * 24 | 0) + (b[a + 12 >> 2] << 3) + 4 >> 2] | 0;\n }\n function pa(a, c) {\n a = a | 0;\n c = c | 0;\n a = 7728 + (a * 28 | 0) | 0;\n b[c >> 2] = b[a >> 2];\n b[c + 4 >> 2] = b[a + 4 >> 2];\n b[c + 8 >> 2] = b[a + 8 >> 2];\n b[c + 12 >> 2] = b[a + 12 >> 2];\n return;\n }\n function qa(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0;\n if (c >>> 0 > 20) {\n c = -1;\n return c | 0;\n }\n do if ((b[11152 + (c * 216 | 0) >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 8 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 16 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 24 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 32 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 40 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 48 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 56 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 64 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 72 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 80 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 88 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 96 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 104 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 112 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 120 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 128 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 136 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 1;\n e = 2;\n } else {\n if ((b[11152 + (c * 216 | 0) + 144 >> 2] | 0) == (a | 0)) {\n a = 0;\n d = 2;\n e = 0;\n break;\n }\n if ((b[11152 + (c * 216 | 0) + 152 >> 2] | 0) == (a | 0)) {\n a = 0;\n d = 2;\n e = 1;\n break;\n }\n if ((b[11152 + (c * 216 | 0) + 160 >> 2] | 0) == (a | 0)) {\n a = 0;\n d = 2;\n e = 2;\n break;\n }\n if ((b[11152 + (c * 216 | 0) + 168 >> 2] | 0) == (a | 0)) {\n a = 1;\n d = 2;\n e = 0;\n break;\n }\n if ((b[11152 + (c * 216 | 0) + 176 >> 2] | 0) == (a | 0)) {\n a = 1;\n d = 2;\n e = 1;\n break;\n }\n if ((b[11152 + (c * 216 | 0) + 184 >> 2] | 0) == (a | 0)) {\n a = 1;\n d = 2;\n e = 2;\n break;\n }\n if ((b[11152 + (c * 216 | 0) + 192 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 2;\n e = 0;\n break;\n }\n if ((b[11152 + (c * 216 | 0) + 200 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 2;\n e = 1;\n break;\n }\n if ((b[11152 + (c * 216 | 0) + 208 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 2;\n e = 2;\n break;\n } else a = -1;\n return a | 0;\n }\n } else {\n a = 2;\n d = 1;\n e = 1;\n }\n } else {\n a = 2;\n d = 1;\n e = 0;\n }\n } else {\n a = 1;\n d = 1;\n e = 2;\n }\n } else {\n a = 1;\n d = 1;\n e = 1;\n }\n } else {\n a = 1;\n d = 1;\n e = 0;\n }\n } else {\n a = 0;\n d = 1;\n e = 2;\n }\n } else {\n a = 0;\n d = 1;\n e = 1;\n }\n } else {\n a = 0;\n d = 1;\n e = 0;\n }\n } else {\n a = 2;\n d = 0;\n e = 2;\n }\n } else {\n a = 2;\n d = 0;\n e = 1;\n }\n } else {\n a = 2;\n d = 0;\n e = 0;\n }\n } else {\n a = 1;\n d = 0;\n e = 2;\n }\n } else {\n a = 1;\n d = 0;\n e = 1;\n }\n } else {\n a = 1;\n d = 0;\n e = 0;\n }\n } else {\n a = 0;\n d = 0;\n e = 2;\n }\n } else {\n a = 0;\n d = 0;\n e = 1;\n }\n } else {\n a = 0;\n d = 0;\n e = 0;\n }\n while (0);\n c = b[11152 + (c * 216 | 0) + (d * 72 | 0) + (a * 24 | 0) + (e << 3) + 4 >> 2] | 0;\n return c | 0;\n }\n function ra(a, c) {\n a = a | 0;\n c = c | 0;\n if ((b[7728 + (a * 28 | 0) + 20 >> 2] | 0) == (c | 0)) {\n c = 1;\n return c | 0;\n }\n c = (b[7728 + (a * 28 | 0) + 24 >> 2] | 0) == (c | 0);\n return c | 0;\n }\n function sa(a, c) {\n a = a | 0;\n c = c | 0;\n return b[880 + (a * 28 | 0) + (c << 2) >> 2] | 0;\n }\n function ta(a, c) {\n a = a | 0;\n c = c | 0;\n if ((b[880 + (a * 28 | 0) >> 2] | 0) == (c | 0)) {\n c = 0;\n return c | 0;\n }\n if ((b[880 + (a * 28 | 0) + 4 >> 2] | 0) == (c | 0)) {\n c = 1;\n return c | 0;\n }\n if ((b[880 + (a * 28 | 0) + 8 >> 2] | 0) == (c | 0)) {\n c = 2;\n return c | 0;\n }\n if ((b[880 + (a * 28 | 0) + 12 >> 2] | 0) == (c | 0)) {\n c = 3;\n return c | 0;\n }\n if ((b[880 + (a * 28 | 0) + 16 >> 2] | 0) == (c | 0)) {\n c = 4;\n return c | 0;\n }\n if ((b[880 + (a * 28 | 0) + 20 >> 2] | 0) == (c | 0)) {\n c = 5;\n return c | 0;\n } else return ((b[880 + (a * 28 | 0) + 24 >> 2] | 0) == (c | 0) ? 6 : 7) | 0;\n return 0;\n }\n function ua() {\n return 122;\n }\n function va(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0;\n c = 0;\n do {\n dd(c | 0, 0, 45);\n e = G() | 134225919;\n d = a + (c << 3) | 0;\n b[d >> 2] = -1;\n b[d + 4 >> 2] = e;\n c = c + 1 | 0;\n }while ((c | 0) != 122);\n return;\n }\n function wa(a) {\n a = a | 0;\n return +e[a + 16 >> 3] < +e[a + 24 >> 3] | 0;\n }\n function xa(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0, d = 0.0, f = 0.0;\n c = +e[b >> 3];\n if (!(c >= +e[a + 8 >> 3])) {\n b = 0;\n return b | 0;\n }\n if (!(c <= +e[a >> 3])) {\n b = 0;\n return b | 0;\n }\n d = +e[a + 16 >> 3];\n c = +e[a + 24 >> 3];\n f = +e[b + 8 >> 3];\n b = f >= c;\n a = f <= d & 1;\n if (d < c) {\n if (b) a = 1;\n } else if (!b) a = 0;\n b = (a | 0) != 0;\n return b | 0;\n }\n function ya(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0.0, l = 0.0;\n i = S;\n S = S + 288 | 0;\n d = i + 264 | 0;\n f = i + 96 | 0;\n g = i;\n h = g;\n j = h + 96 | 0;\n do {\n b[h >> 2] = 0;\n h = h + 4 | 0;\n }while ((h | 0) < (j | 0));\n _b(c, g);\n h = g;\n j = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n Vb(j, h, d);\n Wb(j, h, f);\n k = +jb(d, f + 8 | 0);\n e[d >> 3] = +e[a >> 3];\n h = d + 8 | 0;\n e[h >> 3] = +e[a + 16 >> 3];\n e[f >> 3] = +e[a + 8 >> 3];\n j = f + 8 | 0;\n e[j >> 3] = +e[a + 24 >> 3];\n l = +jb(d, f);\n j = ~~+A(+(l * l / +ed(+ +q(+((+e[h >> 3] - +e[j >> 3]) / (+e[d >> 3] - +e[f >> 3]))), 3.0) / (k * (k * 2.59807621135) * .8)));\n S = i;\n return ((j | 0) == 0 ? 1 : j) | 0;\n }\n function za(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0.0;\n i = S;\n S = S + 288 | 0;\n e = i + 264 | 0;\n f = i + 96 | 0;\n g = i;\n h = g;\n j = h + 96 | 0;\n do {\n b[h >> 2] = 0;\n h = h + 4 | 0;\n }while ((h | 0) < (j | 0));\n _b(d, g);\n j = g;\n h = b[j >> 2] | 0;\n j = b[j + 4 >> 2] | 0;\n Vb(h, j, e);\n Wb(h, j, f);\n k = +jb(e, f + 8 | 0);\n j = ~~+A(+(+jb(a, c) / (k * 2.0)));\n S = i;\n return ((j | 0) == 0 ? 1 : j) | 0;\n }\n function Aa(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n b[a >> 2] = c;\n b[a + 4 >> 2] = d;\n b[a + 8 >> 2] = e;\n return;\n }\n function Ba(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, f = 0, g = 0, h = 0, i = 0.0, j = 0.0, k = 0.0, l = 0.0, m = 0, n = 0, o = 0.0;\n n = c + 8 | 0;\n b[n >> 2] = 0;\n k = +e[a >> 3];\n i = +q(+k);\n l = +e[a + 8 >> 3];\n j = +q(+l) / .8660254037844386;\n i = i + j * .5;\n d = ~~i;\n a = ~~j;\n i = i - +(d | 0);\n j = j - +(a | 0);\n do if (i < .5) {\n if (i < .3333333333333333) {\n b[c >> 2] = d;\n if (j < (i + 1.0) * .5) {\n b[c + 4 >> 2] = a;\n break;\n } else {\n a = a + 1 | 0;\n b[c + 4 >> 2] = a;\n break;\n }\n } else {\n o = 1.0 - i;\n a = (!(j < o) & 1) + a | 0;\n b[c + 4 >> 2] = a;\n if (o <= j & j < i * 2.0) {\n d = d + 1 | 0;\n b[c >> 2] = d;\n break;\n } else {\n b[c >> 2] = d;\n break;\n }\n }\n } else {\n if (!(i < .6666666666666666)) {\n d = d + 1 | 0;\n b[c >> 2] = d;\n if (j < i * .5) {\n b[c + 4 >> 2] = a;\n break;\n } else {\n a = a + 1 | 0;\n b[c + 4 >> 2] = a;\n break;\n }\n }\n if (j < 1.0 - i) {\n b[c + 4 >> 2] = a;\n if (i * 2.0 + -1 < j) {\n b[c >> 2] = d;\n break;\n }\n } else {\n a = a + 1 | 0;\n b[c + 4 >> 2] = a;\n }\n d = d + 1 | 0;\n b[c >> 2] = d;\n }\n while (0);\n do if (k < 0.0) {\n if (!(a & 1)) {\n m = (a | 0) / 2 | 0;\n m = _c(d | 0, ((d | 0) < 0) << 31 >> 31 | 0, m | 0, ((m | 0) < 0) << 31 >> 31 | 0) | 0;\n d = ~~(+(d | 0) - (+(m >>> 0) + 4294967296.0 * +(G() | 0)) * 2.0);\n b[c >> 2] = d;\n break;\n } else {\n m = (a + 1 | 0) / 2 | 0;\n m = _c(d | 0, ((d | 0) < 0) << 31 >> 31 | 0, m | 0, ((m | 0) < 0) << 31 >> 31 | 0) | 0;\n d = ~~(+(d | 0) - ((+(m >>> 0) + 4294967296.0 * +(G() | 0)) * 2.0 + 1.0));\n b[c >> 2] = d;\n break;\n }\n }\n while (0);\n m = c + 4 | 0;\n if (l < 0.0) {\n d = d - ((a << 1 | 1) / 2 | 0) | 0;\n b[c >> 2] = d;\n a = 0 - a | 0;\n b[m >> 2] = a;\n }\n f = a - d | 0;\n if ((d | 0) < 0) {\n g = 0 - d | 0;\n b[m >> 2] = f;\n b[n >> 2] = g;\n b[c >> 2] = 0;\n a = f;\n d = 0;\n } else g = 0;\n if ((a | 0) < 0) {\n d = d - a | 0;\n b[c >> 2] = d;\n g = g - a | 0;\n b[n >> 2] = g;\n b[m >> 2] = 0;\n a = 0;\n }\n h = d - g | 0;\n f = a - g | 0;\n if ((g | 0) < 0) {\n b[c >> 2] = h;\n b[m >> 2] = f;\n b[n >> 2] = 0;\n a = f;\n d = h;\n g = 0;\n }\n f = (a | 0) < (d | 0) ? a : d;\n f = (g | 0) < (f | 0) ? g : f;\n if ((f | 0) <= 0) return;\n b[c >> 2] = d - f;\n b[m >> 2] = a - f;\n b[n >> 2] = g - f;\n return;\n }\n function Ca(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n d = b[h >> 2] | 0;\n if ((c | 0) < 0) {\n d = d - c | 0;\n b[h >> 2] = d;\n g = a + 8 | 0;\n b[g >> 2] = (b[g >> 2] | 0) - c;\n b[a >> 2] = 0;\n c = 0;\n }\n if ((d | 0) < 0) {\n c = c - d | 0;\n b[a >> 2] = c;\n g = a + 8 | 0;\n f = (b[g >> 2] | 0) - d | 0;\n b[g >> 2] = f;\n b[h >> 2] = 0;\n d = 0;\n } else {\n f = a + 8 | 0;\n g = f;\n f = b[f >> 2] | 0;\n }\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[a >> 2] = c;\n d = d - f | 0;\n b[h >> 2] = d;\n b[g >> 2] = 0;\n f = 0;\n }\n e = (d | 0) < (c | 0) ? d : c;\n e = (f | 0) < (e | 0) ? f : e;\n if ((e | 0) <= 0) return;\n b[a >> 2] = c - e;\n b[h >> 2] = d - e;\n b[g >> 2] = f - e;\n return;\n }\n function Da(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0, f = 0;\n f = b[a + 8 >> 2] | 0;\n d = +((b[a + 4 >> 2] | 0) - f | 0);\n e[c >> 3] = +((b[a >> 2] | 0) - f | 0) - d * .5;\n e[c + 8 >> 3] = d * .8660254037844386;\n return;\n }\n function Ea(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n b[d >> 2] = (b[c >> 2] | 0) + (b[a >> 2] | 0);\n b[d + 4 >> 2] = (b[c + 4 >> 2] | 0) + (b[a + 4 >> 2] | 0);\n b[d + 8 >> 2] = (b[c + 8 >> 2] | 0) + (b[a + 8 >> 2] | 0);\n return;\n }\n function Fa(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n b[d >> 2] = (b[a >> 2] | 0) - (b[c >> 2] | 0);\n b[d + 4 >> 2] = (b[a + 4 >> 2] | 0) - (b[c + 4 >> 2] | 0);\n b[d + 8 >> 2] = (b[a + 8 >> 2] | 0) - (b[c + 8 >> 2] | 0);\n return;\n }\n function Ga(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0;\n d = B(b[a >> 2] | 0, c) | 0;\n b[a >> 2] = d;\n d = a + 4 | 0;\n e = B(b[d >> 2] | 0, c) | 0;\n b[d >> 2] = e;\n a = a + 8 | 0;\n c = B(b[a >> 2] | 0, c) | 0;\n b[a >> 2] = c;\n return;\n }\n function Ha(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n h = b[a >> 2] | 0;\n i = (h | 0) < 0;\n e = (b[a + 4 >> 2] | 0) - (i ? h : 0) | 0;\n g = (e | 0) < 0;\n f = (g ? 0 - e | 0 : 0) + ((b[a + 8 >> 2] | 0) - (i ? h : 0)) | 0;\n d = (f | 0) < 0;\n a = d ? 0 : f;\n c = (g ? 0 : e) - (d ? f : 0) | 0;\n f = (i ? 0 : h) - (g ? e : 0) - (d ? f : 0) | 0;\n d = (c | 0) < (f | 0) ? c : f;\n d = (a | 0) < (d | 0) ? a : d;\n e = (d | 0) > 0;\n a = a - (e ? d : 0) | 0;\n c = c - (e ? d : 0) | 0;\n a: do switch(f - (e ? d : 0) | 0){\n case 0:\n switch(c | 0){\n case 0:\n i = (a | 0) == 0 ? 0 : (a | 0) == 1 ? 1 : 7;\n return i | 0;\n case 1:\n i = (a | 0) == 0 ? 2 : (a | 0) == 1 ? 3 : 7;\n return i | 0;\n default:\n break a;\n }\n case 1:\n switch(c | 0){\n case 0:\n i = (a | 0) == 0 ? 4 : (a | 0) == 1 ? 5 : 7;\n return i | 0;\n case 1:\n if (!a) a = 6;\n else break a;\n return a | 0;\n default:\n break a;\n }\n default:\n }\n while (0);\n i = 7;\n return i | 0;\n }\n function Ia(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n h = a + 8 | 0;\n d = b[h >> 2] | 0;\n c = (b[a >> 2] | 0) - d | 0;\n i = a + 4 | 0;\n d = (b[i >> 2] | 0) - d | 0;\n e = Vc(+((c * 3 | 0) - d | 0) / 7.0) | 0;\n b[a >> 2] = e;\n c = Vc(+((d << 1) + c | 0) / 7.0) | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = c - e | 0;\n if ((e | 0) < 0) {\n g = 0 - e | 0;\n b[i >> 2] = d;\n b[h >> 2] = g;\n b[a >> 2] = 0;\n c = d;\n e = 0;\n d = g;\n } else d = 0;\n if ((c | 0) < 0) {\n e = e - c | 0;\n b[a >> 2] = e;\n d = d - c | 0;\n b[h >> 2] = d;\n b[i >> 2] = 0;\n c = 0;\n }\n g = e - d | 0;\n f = c - d | 0;\n if ((d | 0) < 0) {\n b[a >> 2] = g;\n b[i >> 2] = f;\n b[h >> 2] = 0;\n c = f;\n f = g;\n d = 0;\n } else f = e;\n e = (c | 0) < (f | 0) ? c : f;\n e = (d | 0) < (e | 0) ? d : e;\n if ((e | 0) <= 0) return;\n b[a >> 2] = f - e;\n b[i >> 2] = c - e;\n b[h >> 2] = d - e;\n return;\n }\n function Ja(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n h = a + 8 | 0;\n d = b[h >> 2] | 0;\n c = (b[a >> 2] | 0) - d | 0;\n i = a + 4 | 0;\n d = (b[i >> 2] | 0) - d | 0;\n e = Vc(+((c << 1) + d | 0) / 7.0) | 0;\n b[a >> 2] = e;\n c = Vc(+((d * 3 | 0) - c | 0) / 7.0) | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = c - e | 0;\n if ((e | 0) < 0) {\n g = 0 - e | 0;\n b[i >> 2] = d;\n b[h >> 2] = g;\n b[a >> 2] = 0;\n c = d;\n e = 0;\n d = g;\n } else d = 0;\n if ((c | 0) < 0) {\n e = e - c | 0;\n b[a >> 2] = e;\n d = d - c | 0;\n b[h >> 2] = d;\n b[i >> 2] = 0;\n c = 0;\n }\n g = e - d | 0;\n f = c - d | 0;\n if ((d | 0) < 0) {\n b[a >> 2] = g;\n b[i >> 2] = f;\n b[h >> 2] = 0;\n c = f;\n f = g;\n d = 0;\n } else f = e;\n e = (c | 0) < (f | 0) ? c : f;\n e = (d | 0) < (e | 0) ? d : e;\n if ((e | 0) <= 0) return;\n b[a >> 2] = f - e;\n b[i >> 2] = c - e;\n b[h >> 2] = d - e;\n return;\n }\n function Ka(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n d = b[h >> 2] | 0;\n i = a + 8 | 0;\n e = b[i >> 2] | 0;\n f = d + (c * 3 | 0) | 0;\n b[a >> 2] = f;\n d = e + (d * 3 | 0) | 0;\n b[h >> 2] = d;\n c = (e * 3 | 0) + c | 0;\n b[i >> 2] = c;\n e = d - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = e;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n d = e;\n e = 0;\n } else e = f;\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = e - c | 0;\n f = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else f = d;\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) return;\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n function La(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n f = b[a >> 2] | 0;\n h = a + 4 | 0;\n c = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n e = (c * 3 | 0) + f | 0;\n f = d + (f * 3 | 0) | 0;\n b[a >> 2] = f;\n b[h >> 2] = e;\n c = (d * 3 | 0) + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n f = 0;\n } else d = e;\n if ((d | 0) < 0) {\n f = f - d | 0;\n b[a >> 2] = f;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = f - c | 0;\n e = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = e;\n b[i >> 2] = 0;\n f = g;\n c = 0;\n } else e = d;\n d = (e | 0) < (f | 0) ? e : f;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) return;\n b[a >> 2] = f - d;\n b[h >> 2] = e - d;\n b[i >> 2] = c - d;\n return;\n }\n function Ma(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n if ((c + -1 | 0) >>> 0 >= 6) return;\n f = (b[15472 + (c * 12 | 0) >> 2] | 0) + (b[a >> 2] | 0) | 0;\n b[a >> 2] = f;\n i = a + 4 | 0;\n e = (b[15472 + (c * 12 | 0) + 4 >> 2] | 0) + (b[i >> 2] | 0) | 0;\n b[i >> 2] = e;\n h = a + 8 | 0;\n c = (b[15472 + (c * 12 | 0) + 8 >> 2] | 0) + (b[h >> 2] | 0) | 0;\n b[h >> 2] = c;\n d = e - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[i >> 2] = d;\n b[h >> 2] = c;\n b[a >> 2] = 0;\n e = 0;\n } else {\n d = e;\n e = f;\n }\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[h >> 2] = c;\n b[i >> 2] = 0;\n d = 0;\n }\n g = e - c | 0;\n f = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[i >> 2] = f;\n b[h >> 2] = 0;\n e = g;\n c = 0;\n } else f = d;\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) return;\n b[a >> 2] = e - d;\n b[i >> 2] = f - d;\n b[h >> 2] = c - d;\n return;\n }\n function Na(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n f = b[a >> 2] | 0;\n h = a + 4 | 0;\n c = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n e = c + f | 0;\n f = d + f | 0;\n b[a >> 2] = f;\n b[h >> 2] = e;\n c = d + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n e = 0;\n } else {\n d = e;\n e = f;\n }\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = e - c | 0;\n f = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else f = d;\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) return;\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n function Oa(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n e = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n f = e + c | 0;\n b[a >> 2] = f;\n e = d + e | 0;\n b[h >> 2] = e;\n c = d + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n e = 0;\n } else {\n d = e;\n e = f;\n }\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = e - c | 0;\n f = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else f = d;\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) return;\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n function Pa(a) {\n a = a | 0;\n switch(a | 0){\n case 1:\n a = 5;\n break;\n case 5:\n a = 4;\n break;\n case 4:\n a = 6;\n break;\n case 6:\n a = 2;\n break;\n case 2:\n a = 3;\n break;\n case 3:\n a = 1;\n break;\n default:\n }\n return a | 0;\n }\n function Qa(a) {\n a = a | 0;\n switch(a | 0){\n case 1:\n a = 3;\n break;\n case 3:\n a = 2;\n break;\n case 2:\n a = 6;\n break;\n case 6:\n a = 4;\n break;\n case 4:\n a = 5;\n break;\n case 5:\n a = 1;\n break;\n default:\n }\n return a | 0;\n }\n function Ra(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n d = b[h >> 2] | 0;\n i = a + 8 | 0;\n e = b[i >> 2] | 0;\n f = d + (c << 1) | 0;\n b[a >> 2] = f;\n d = e + (d << 1) | 0;\n b[h >> 2] = d;\n c = (e << 1) + c | 0;\n b[i >> 2] = c;\n e = d - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = e;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n d = e;\n e = 0;\n } else e = f;\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = e - c | 0;\n f = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else f = d;\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) return;\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n function Sa(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n f = b[a >> 2] | 0;\n h = a + 4 | 0;\n c = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n e = (c << 1) + f | 0;\n f = d + (f << 1) | 0;\n b[a >> 2] = f;\n b[h >> 2] = e;\n c = (d << 1) + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n f = 0;\n } else d = e;\n if ((d | 0) < 0) {\n f = f - d | 0;\n b[a >> 2] = f;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = f - c | 0;\n e = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = e;\n b[i >> 2] = 0;\n f = g;\n c = 0;\n } else e = d;\n d = (e | 0) < (f | 0) ? e : f;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) return;\n b[a >> 2] = f - d;\n b[h >> 2] = e - d;\n b[i >> 2] = c - d;\n return;\n }\n function Ta(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n h = (b[a >> 2] | 0) - (b[c >> 2] | 0) | 0;\n i = (h | 0) < 0;\n e = (b[a + 4 >> 2] | 0) - (b[c + 4 >> 2] | 0) - (i ? h : 0) | 0;\n g = (e | 0) < 0;\n f = (i ? 0 - h | 0 : 0) + (b[a + 8 >> 2] | 0) - (b[c + 8 >> 2] | 0) + (g ? 0 - e | 0 : 0) | 0;\n a = (f | 0) < 0;\n c = a ? 0 : f;\n d = (g ? 0 : e) - (a ? f : 0) | 0;\n f = (i ? 0 : h) - (g ? e : 0) - (a ? f : 0) | 0;\n a = (d | 0) < (f | 0) ? d : f;\n a = (c | 0) < (a | 0) ? c : a;\n e = (a | 0) > 0;\n c = c - (e ? a : 0) | 0;\n d = d - (e ? a : 0) | 0;\n a = f - (e ? a : 0) | 0;\n a = (a | 0) > -1 ? a : 0 - a | 0;\n d = (d | 0) > -1 ? d : 0 - d | 0;\n c = (c | 0) > -1 ? c : 0 - c | 0;\n c = (d | 0) > (c | 0) ? d : c;\n return ((a | 0) > (c | 0) ? a : c) | 0;\n }\n function Ua(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0;\n d = b[a + 8 >> 2] | 0;\n b[c >> 2] = (b[a >> 2] | 0) - d;\n b[c + 4 >> 2] = (b[a + 4 >> 2] | 0) - d;\n return;\n }\n function Va(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n e = b[a >> 2] | 0;\n b[c >> 2] = e;\n a = b[a + 4 >> 2] | 0;\n h = c + 4 | 0;\n b[h >> 2] = a;\n i = c + 8 | 0;\n b[i >> 2] = 0;\n d = a - e | 0;\n if ((e | 0) < 0) {\n a = 0 - e | 0;\n b[h >> 2] = d;\n b[i >> 2] = a;\n b[c >> 2] = 0;\n e = 0;\n } else {\n d = a;\n a = 0;\n }\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[c >> 2] = e;\n a = a - d | 0;\n b[i >> 2] = a;\n b[h >> 2] = 0;\n d = 0;\n }\n g = e - a | 0;\n f = d - a | 0;\n if ((a | 0) < 0) {\n b[c >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n d = f;\n f = g;\n a = 0;\n } else f = e;\n e = (d | 0) < (f | 0) ? d : f;\n e = (a | 0) < (e | 0) ? a : e;\n if ((e | 0) <= 0) return;\n b[c >> 2] = f - e;\n b[h >> 2] = d - e;\n b[i >> 2] = a - e;\n return;\n }\n function Wa(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0;\n c = a + 8 | 0;\n f = b[c >> 2] | 0;\n d = f - (b[a >> 2] | 0) | 0;\n b[a >> 2] = d;\n e = a + 4 | 0;\n a = (b[e >> 2] | 0) - f | 0;\n b[e >> 2] = a;\n b[c >> 2] = 0 - (a + d);\n return;\n }\n function Xa(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n d = b[a >> 2] | 0;\n c = 0 - d | 0;\n b[a >> 2] = c;\n h = a + 8 | 0;\n b[h >> 2] = 0;\n i = a + 4 | 0;\n e = b[i >> 2] | 0;\n f = e + d | 0;\n if ((d | 0) > 0) {\n b[i >> 2] = f;\n b[h >> 2] = d;\n b[a >> 2] = 0;\n c = 0;\n e = f;\n } else d = 0;\n if ((e | 0) < 0) {\n g = c - e | 0;\n b[a >> 2] = g;\n d = d - e | 0;\n b[h >> 2] = d;\n b[i >> 2] = 0;\n f = g - d | 0;\n c = 0 - d | 0;\n if ((d | 0) < 0) {\n b[a >> 2] = f;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n e = c;\n d = 0;\n } else {\n e = 0;\n f = g;\n }\n } else f = c;\n c = (e | 0) < (f | 0) ? e : f;\n c = (d | 0) < (c | 0) ? d : c;\n if ((c | 0) <= 0) return;\n b[a >> 2] = f - c;\n b[i >> 2] = e - c;\n b[h >> 2] = d - c;\n return;\n }\n function Ya(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0, e = 0;\n d = S;\n S = S + 16 | 0;\n e = d;\n Za(a, b, c, e);\n Ba(e, c + 4 | 0);\n S = d;\n return;\n }\n function Za(a, c, d, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n var g = 0.0, h = 0, i = 0.0, j = 0.0, k = 0;\n k = S;\n S = S + 32 | 0;\n h = k;\n Jc(a, h);\n b[d >> 2] = 0;\n g = +Ic(15888, h);\n i = +Ic(15912, h);\n if (i < g) {\n b[d >> 2] = 1;\n g = i;\n }\n i = +Ic(15936, h);\n if (i < g) {\n b[d >> 2] = 2;\n g = i;\n }\n i = +Ic(15960, h);\n if (i < g) {\n b[d >> 2] = 3;\n g = i;\n }\n i = +Ic(15984, h);\n if (i < g) {\n b[d >> 2] = 4;\n g = i;\n }\n i = +Ic(16008, h);\n if (i < g) {\n b[d >> 2] = 5;\n g = i;\n }\n i = +Ic(16032, h);\n if (i < g) {\n b[d >> 2] = 6;\n g = i;\n }\n i = +Ic(16056, h);\n if (i < g) {\n b[d >> 2] = 7;\n g = i;\n }\n i = +Ic(16080, h);\n if (i < g) {\n b[d >> 2] = 8;\n g = i;\n }\n i = +Ic(16104, h);\n if (i < g) {\n b[d >> 2] = 9;\n g = i;\n }\n i = +Ic(16128, h);\n if (i < g) {\n b[d >> 2] = 10;\n g = i;\n }\n i = +Ic(16152, h);\n if (i < g) {\n b[d >> 2] = 11;\n g = i;\n }\n i = +Ic(16176, h);\n if (i < g) {\n b[d >> 2] = 12;\n g = i;\n }\n i = +Ic(16200, h);\n if (i < g) {\n b[d >> 2] = 13;\n g = i;\n }\n i = +Ic(16224, h);\n if (i < g) {\n b[d >> 2] = 14;\n g = i;\n }\n i = +Ic(16248, h);\n if (i < g) {\n b[d >> 2] = 15;\n g = i;\n }\n i = +Ic(16272, h);\n if (i < g) {\n b[d >> 2] = 16;\n g = i;\n }\n i = +Ic(16296, h);\n if (i < g) {\n b[d >> 2] = 17;\n g = i;\n }\n i = +Ic(16320, h);\n if (i < g) {\n b[d >> 2] = 18;\n g = i;\n }\n i = +Ic(16344, h);\n if (i < g) {\n b[d >> 2] = 19;\n g = i;\n }\n i = +w(+(1.0 - g * .5));\n if (i < 1.0e-16) {\n b[f >> 2] = 0;\n b[f + 4 >> 2] = 0;\n b[f + 8 >> 2] = 0;\n b[f + 12 >> 2] = 0;\n S = k;\n return;\n }\n d = b[d >> 2] | 0;\n g = +e[16368 + (d * 24 | 0) >> 3];\n g = +gb(g - +gb(+lb(15568 + (d << 4) | 0, a)));\n if (!(Rb(c) | 0)) j = g;\n else j = +gb(g + -0.3334731722518321);\n g = +v(+i) / .381966011250105;\n if ((c | 0) > 0) {\n h = 0;\n do {\n g = g * 2.6457513110645907;\n h = h + 1 | 0;\n }while ((h | 0) != (c | 0));\n }\n i = +t(+j) * g;\n e[f >> 3] = i;\n j = +u(+j) * g;\n e[f + 8 >> 3] = j;\n S = k;\n return;\n }\n function _a(a, c, d, f, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n var h = 0.0, i = 0.0;\n h = +Fc(a);\n if (h < 1.0e-16) {\n c = 15568 + (c << 4) | 0;\n b[g >> 2] = b[c >> 2];\n b[g + 4 >> 2] = b[c + 4 >> 2];\n b[g + 8 >> 2] = b[c + 8 >> 2];\n b[g + 12 >> 2] = b[c + 12 >> 2];\n return;\n }\n i = +z(+ +e[a + 8 >> 3], + +e[a >> 3]);\n if ((d | 0) > 0) {\n a = 0;\n do {\n h = h / 2.6457513110645907;\n a = a + 1 | 0;\n }while ((a | 0) != (d | 0));\n }\n if (!f) {\n h = +y(+(h * .381966011250105));\n if (Rb(d) | 0) i = +gb(i + .3334731722518321);\n } else {\n h = h / 3.0;\n d = (Rb(d) | 0) == 0;\n h = +y(+((d ? h : h / 2.6457513110645907) * .381966011250105));\n }\n mb(15568 + (c << 4) | 0, +gb(+e[16368 + (c * 24 | 0) >> 3] - i), h, g);\n return;\n }\n function $a(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0;\n e = S;\n S = S + 16 | 0;\n f = e;\n Da(a + 4 | 0, f);\n _a(f, b[a >> 2] | 0, c, 0, d);\n S = e;\n return;\n }\n function ab(a, c, d, f, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n var h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, I = 0.0, J = 0.0;\n G = S;\n S = S + 272 | 0;\n h = G + 256 | 0;\n u = G + 240 | 0;\n D = G;\n E = G + 224 | 0;\n F = G + 208 | 0;\n v = G + 176 | 0;\n w = G + 160 | 0;\n x = G + 192 | 0;\n y = G + 144 | 0;\n z = G + 128 | 0;\n A = G + 112 | 0;\n B = G + 96 | 0;\n C = G + 80 | 0;\n b[h >> 2] = c;\n b[u >> 2] = b[a >> 2];\n b[u + 4 >> 2] = b[a + 4 >> 2];\n b[u + 8 >> 2] = b[a + 8 >> 2];\n b[u + 12 >> 2] = b[a + 12 >> 2];\n bb(u, h, D);\n b[g >> 2] = 0;\n u = f + d + ((f | 0) == 5 & 1) | 0;\n if ((u | 0) <= (d | 0)) {\n S = G;\n return;\n }\n k = b[h >> 2] | 0;\n l = E + 4 | 0;\n m = v + 4 | 0;\n n = d + 5 | 0;\n o = 16848 + (k << 2) | 0;\n p = 16928 + (k << 2) | 0;\n q = z + 8 | 0;\n r = A + 8 | 0;\n s = B + 8 | 0;\n t = F + 4 | 0;\n j = d;\n a: while(true){\n i = D + (((j | 0) % 5 | 0) << 4) | 0;\n b[F >> 2] = b[i >> 2];\n b[F + 4 >> 2] = b[i + 4 >> 2];\n b[F + 8 >> 2] = b[i + 8 >> 2];\n b[F + 12 >> 2] = b[i + 12 >> 2];\n do ;\n while ((cb(F, k, 0, 1) | 0) == 2);\n if ((j | 0) > (d | 0) & (Rb(c) | 0) != 0) {\n b[v >> 2] = b[F >> 2];\n b[v + 4 >> 2] = b[F + 4 >> 2];\n b[v + 8 >> 2] = b[F + 8 >> 2];\n b[v + 12 >> 2] = b[F + 12 >> 2];\n Da(l, w);\n f = b[v >> 2] | 0;\n h = b[17008 + (f * 80 | 0) + (b[E >> 2] << 2) >> 2] | 0;\n b[v >> 2] = b[18608 + (f * 80 | 0) + (h * 20 | 0) >> 2];\n i = b[18608 + (f * 80 | 0) + (h * 20 | 0) + 16 >> 2] | 0;\n if ((i | 0) > 0) {\n a = 0;\n do {\n Na(m);\n a = a + 1 | 0;\n }while ((a | 0) < (i | 0));\n }\n i = 18608 + (f * 80 | 0) + (h * 20 | 0) + 4 | 0;\n b[x >> 2] = b[i >> 2];\n b[x + 4 >> 2] = b[i + 4 >> 2];\n b[x + 8 >> 2] = b[i + 8 >> 2];\n Ga(x, (b[o >> 2] | 0) * 3 | 0);\n Ea(m, x, m);\n Ca(m);\n Da(m, y);\n I = +(b[p >> 2] | 0);\n e[z >> 3] = I * 3.0;\n e[q >> 3] = 0.0;\n J = I * -1.5;\n e[A >> 3] = J;\n e[r >> 3] = I * 2.598076211353316;\n e[B >> 3] = J;\n e[s >> 3] = I * -2.598076211353316;\n switch(b[17008 + ((b[v >> 2] | 0) * 80 | 0) + (b[F >> 2] << 2) >> 2] | 0){\n case 1:\n a = A;\n f = z;\n break;\n case 3:\n a = B;\n f = A;\n break;\n case 2:\n a = z;\n f = B;\n break;\n default:\n a = 12;\n break a;\n }\n Gc(w, y, f, a, C);\n _a(C, b[v >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n if ((j | 0) < (n | 0)) {\n Da(t, v);\n _a(v, b[F >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n b[E >> 2] = b[F >> 2];\n b[E + 4 >> 2] = b[F + 4 >> 2];\n b[E + 8 >> 2] = b[F + 8 >> 2];\n b[E + 12 >> 2] = b[F + 12 >> 2];\n j = j + 1 | 0;\n if ((j | 0) >= (u | 0)) {\n a = 3;\n break;\n }\n }\n if ((a | 0) == 3) {\n S = G;\n return;\n } else if ((a | 0) == 12) H(22474, 22521, 581, 22531);\n }\n function bb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0;\n j = S;\n S = S + 128 | 0;\n e = j + 64 | 0;\n f = j;\n g = e;\n h = 20208;\n i = g + 60 | 0;\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n }while ((g | 0) < (i | 0));\n g = f;\n h = 20272;\n i = g + 60 | 0;\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n }while ((g | 0) < (i | 0));\n i = (Rb(b[c >> 2] | 0) | 0) == 0;\n e = i ? e : f;\n f = a + 4 | 0;\n Ra(f);\n Sa(f);\n if (Rb(b[c >> 2] | 0) | 0) {\n La(f);\n b[c >> 2] = (b[c >> 2] | 0) + 1;\n }\n b[d >> 2] = b[a >> 2];\n c = d + 4 | 0;\n Ea(f, e, c);\n Ca(c);\n b[d + 16 >> 2] = b[a >> 2];\n c = d + 20 | 0;\n Ea(f, e + 12 | 0, c);\n Ca(c);\n b[d + 32 >> 2] = b[a >> 2];\n c = d + 36 | 0;\n Ea(f, e + 24 | 0, c);\n Ca(c);\n b[d + 48 >> 2] = b[a >> 2];\n c = d + 52 | 0;\n Ea(f, e + 36 | 0, c);\n Ca(c);\n b[d + 64 >> 2] = b[a >> 2];\n d = d + 68 | 0;\n Ea(f, e + 48 | 0, d);\n Ca(d);\n S = j;\n return;\n }\n function cb(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0;\n p = S;\n S = S + 32 | 0;\n n = p + 12 | 0;\n i = p;\n o = a + 4 | 0;\n m = b[16928 + (c << 2) >> 2] | 0;\n l = (e | 0) != 0;\n m = l ? m * 3 | 0 : m;\n f = b[o >> 2] | 0;\n k = a + 8 | 0;\n h = b[k >> 2] | 0;\n if (l) {\n g = a + 12 | 0;\n e = b[g >> 2] | 0;\n f = h + f + e | 0;\n if ((f | 0) == (m | 0)) {\n o = 1;\n S = p;\n return o | 0;\n } else j = g;\n } else {\n j = a + 12 | 0;\n e = b[j >> 2] | 0;\n f = h + f + e | 0;\n }\n if ((f | 0) <= (m | 0)) {\n o = 0;\n S = p;\n return o | 0;\n }\n do if ((e | 0) > 0) {\n e = b[a >> 2] | 0;\n if ((h | 0) > 0) {\n g = 18608 + (e * 80 | 0) + 60 | 0;\n e = a;\n break;\n }\n e = 18608 + (e * 80 | 0) + 40 | 0;\n if (!d) {\n g = e;\n e = a;\n } else {\n Aa(n, m, 0, 0);\n Fa(o, n, i);\n Oa(i);\n Ea(i, n, o);\n g = e;\n e = a;\n }\n } else {\n g = 18608 + ((b[a >> 2] | 0) * 80 | 0) + 20 | 0;\n e = a;\n }\n while (0);\n b[e >> 2] = b[g >> 2];\n f = g + 16 | 0;\n if ((b[f >> 2] | 0) > 0) {\n e = 0;\n do {\n Na(o);\n e = e + 1 | 0;\n }while ((e | 0) < (b[f >> 2] | 0));\n }\n a = g + 4 | 0;\n b[n >> 2] = b[a >> 2];\n b[n + 4 >> 2] = b[a + 4 >> 2];\n b[n + 8 >> 2] = b[a + 8 >> 2];\n c = b[16848 + (c << 2) >> 2] | 0;\n Ga(n, l ? c * 3 | 0 : c);\n Ea(o, n, o);\n Ca(o);\n if (l) e = ((b[k >> 2] | 0) + (b[o >> 2] | 0) + (b[j >> 2] | 0) | 0) == (m | 0) ? 1 : 2;\n else e = 2;\n o = e;\n S = p;\n return o | 0;\n }\n function db(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n do c = cb(a, b, 0, 1) | 0;\n while ((c | 0) == 2);\n return c | 0;\n }\n function eb(a, c, d, f, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n var h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0.0, D = 0.0;\n B = S;\n S = S + 240 | 0;\n h = B + 224 | 0;\n x = B + 208 | 0;\n y = B;\n z = B + 192 | 0;\n A = B + 176 | 0;\n s = B + 160 | 0;\n t = B + 144 | 0;\n u = B + 128 | 0;\n v = B + 112 | 0;\n w = B + 96 | 0;\n b[h >> 2] = c;\n b[x >> 2] = b[a >> 2];\n b[x + 4 >> 2] = b[a + 4 >> 2];\n b[x + 8 >> 2] = b[a + 8 >> 2];\n b[x + 12 >> 2] = b[a + 12 >> 2];\n fb(x, h, y);\n b[g >> 2] = 0;\n r = f + d + ((f | 0) == 6 & 1) | 0;\n if ((r | 0) <= (d | 0)) {\n S = B;\n return;\n }\n k = b[h >> 2] | 0;\n l = d + 6 | 0;\n m = 16928 + (k << 2) | 0;\n n = t + 8 | 0;\n o = u + 8 | 0;\n p = v + 8 | 0;\n q = z + 4 | 0;\n i = 0;\n j = d;\n f = -1;\n a: while(true){\n h = (j | 0) % 6 | 0;\n a = y + (h << 4) | 0;\n b[z >> 2] = b[a >> 2];\n b[z + 4 >> 2] = b[a + 4 >> 2];\n b[z + 8 >> 2] = b[a + 8 >> 2];\n b[z + 12 >> 2] = b[a + 12 >> 2];\n a = i;\n i = cb(z, k, 0, 1) | 0;\n if ((j | 0) > (d | 0) & (Rb(c) | 0) != 0 ? (a | 0) != 1 ? (b[z >> 2] | 0) != (f | 0) : 0 : 0) {\n Da(y + (((h + 5 | 0) % 6 | 0) << 4) + 4 | 0, A);\n Da(y + (h << 4) + 4 | 0, s);\n C = +(b[m >> 2] | 0);\n e[t >> 3] = C * 3.0;\n e[n >> 3] = 0.0;\n D = C * -1.5;\n e[u >> 3] = D;\n e[o >> 3] = C * 2.598076211353316;\n e[v >> 3] = D;\n e[p >> 3] = C * -2.598076211353316;\n h = b[x >> 2] | 0;\n switch(b[17008 + (h * 80 | 0) + (((f | 0) == (h | 0) ? b[z >> 2] | 0 : f) << 2) >> 2] | 0){\n case 1:\n a = u;\n f = t;\n break;\n case 3:\n a = v;\n f = u;\n break;\n case 2:\n a = t;\n f = v;\n break;\n default:\n a = 8;\n break a;\n }\n Gc(A, s, f, a, w);\n if (!(Hc(A, w) | 0) ? !(Hc(s, w) | 0) : 0) {\n _a(w, b[x >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n }\n if ((j | 0) < (l | 0)) {\n Da(q, A);\n _a(A, b[z >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n j = j + 1 | 0;\n if ((j | 0) >= (r | 0)) {\n a = 3;\n break;\n } else f = b[z >> 2] | 0;\n }\n if ((a | 0) == 3) {\n S = B;\n return;\n } else if ((a | 0) == 8) H(22557, 22521, 746, 22602);\n }\n function fb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0;\n j = S;\n S = S + 160 | 0;\n e = j + 80 | 0;\n f = j;\n g = e;\n h = 20336;\n i = g + 72 | 0;\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n }while ((g | 0) < (i | 0));\n g = f;\n h = 20416;\n i = g + 72 | 0;\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n }while ((g | 0) < (i | 0));\n i = (Rb(b[c >> 2] | 0) | 0) == 0;\n e = i ? e : f;\n f = a + 4 | 0;\n Ra(f);\n Sa(f);\n if (Rb(b[c >> 2] | 0) | 0) {\n La(f);\n b[c >> 2] = (b[c >> 2] | 0) + 1;\n }\n b[d >> 2] = b[a >> 2];\n c = d + 4 | 0;\n Ea(f, e, c);\n Ca(c);\n b[d + 16 >> 2] = b[a >> 2];\n c = d + 20 | 0;\n Ea(f, e + 12 | 0, c);\n Ca(c);\n b[d + 32 >> 2] = b[a >> 2];\n c = d + 36 | 0;\n Ea(f, e + 24 | 0, c);\n Ca(c);\n b[d + 48 >> 2] = b[a >> 2];\n c = d + 52 | 0;\n Ea(f, e + 36 | 0, c);\n Ca(c);\n b[d + 64 >> 2] = b[a >> 2];\n c = d + 68 | 0;\n Ea(f, e + 48 | 0, c);\n Ca(c);\n b[d + 80 >> 2] = b[a >> 2];\n d = d + 84 | 0;\n Ea(f, e + 60 | 0, d);\n Ca(d);\n S = j;\n return;\n }\n function gb(a) {\n a = +a;\n var b = 0.0;\n b = a < 0.0 ? a + 6.283185307179586 : a;\n return +(!(a >= 6.283185307179586) ? b : b + -6.283185307179586);\n }\n function hb(a, b) {\n a = a | 0;\n b = b | 0;\n if (!(+q(+(+e[a >> 3] - +e[b >> 3])) < 1.7453292519943298e-11)) {\n b = 0;\n return b | 0;\n }\n b = +q(+(+e[a + 8 >> 3] - +e[b + 8 >> 3])) < 1.7453292519943298e-11;\n return b | 0;\n }\n function ib(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0, d = 0.0, f = 0.0, g = 0.0;\n f = +e[b >> 3];\n d = +e[a >> 3];\n g = +u(+((f - d) * .5));\n c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n c = g * g + c * (+t(+f) * +t(+d) * c);\n return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 2.0);\n }\n function jb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0, d = 0.0, f = 0.0, g = 0.0;\n f = +e[b >> 3];\n d = +e[a >> 3];\n g = +u(+((f - d) * .5));\n c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n c = g * g + c * (+t(+f) * +t(+d) * c);\n return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 12742.01436183695);\n }\n function kb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0, d = 0.0, f = 0.0, g = 0.0;\n f = +e[b >> 3];\n d = +e[a >> 3];\n g = +u(+((f - d) * .5));\n c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n c = g * g + c * (+t(+f) * +t(+d) * c);\n return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 12742014.36183695);\n }\n function lb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0, d = 0.0, f = 0.0, g = 0.0, h = 0.0;\n g = +e[b >> 3];\n d = +t(+g);\n f = +e[b + 8 >> 3] - +e[a + 8 >> 3];\n h = d * +u(+f);\n c = +e[a >> 3];\n return + +z(+h, +(+u(+g) * +t(+c) - +t(+f) * (d * +u(+c))));\n }\n function mb(a, c, d, f) {\n a = a | 0;\n c = +c;\n d = +d;\n f = f | 0;\n var g = 0, h = 0.0, i = 0.0, j = 0.0;\n if (d < 1.0e-16) {\n b[f >> 2] = b[a >> 2];\n b[f + 4 >> 2] = b[a + 4 >> 2];\n b[f + 8 >> 2] = b[a + 8 >> 2];\n b[f + 12 >> 2] = b[a + 12 >> 2];\n return;\n }\n h = c < 0.0 ? c + 6.283185307179586 : c;\n h = !(c >= 6.283185307179586) ? h : h + -6.283185307179586;\n do if (h < 1.0e-16) {\n c = +e[a >> 3] + d;\n e[f >> 3] = c;\n g = f;\n } else {\n g = +q(+(h + -3.141592653589793)) < 1.0e-16;\n c = +e[a >> 3];\n if (g) {\n c = c - d;\n e[f >> 3] = c;\n g = f;\n break;\n }\n i = +t(+d);\n d = +u(+d);\n c = i * +u(+c) + +t(+h) * (d * +t(+c));\n c = c > 1.0 ? 1.0 : c;\n c = +x(+(c < -1 ? -1 : c));\n e[f >> 3] = c;\n if (+q(+(c + -1.5707963267948966)) < 1.0e-16) {\n e[f >> 3] = 1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n if (+q(+(c + 1.5707963267948966)) < 1.0e-16) {\n e[f >> 3] = -1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n j = +t(+c);\n h = d * +u(+h) / j;\n d = +e[a >> 3];\n c = (i - +u(+c) * +u(+d)) / +t(+d) / j;\n i = h > 1.0 ? 1.0 : h;\n c = c > 1.0 ? 1.0 : c;\n c = +e[a + 8 >> 3] + +z(+(i < -1 ? -1 : i), +(c < -1 ? -1 : c));\n if (c > 3.141592653589793) do c = c + -6.283185307179586;\n while (c > 3.141592653589793);\n if (c < -3.141592653589793) do c = c + 6.283185307179586;\n while (c < -3.141592653589793);\n e[f + 8 >> 3] = c;\n return;\n }\n while (0);\n if (+q(+(c + -1.5707963267948966)) < 1.0e-16) {\n e[g >> 3] = 1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n if (+q(+(c + 1.5707963267948966)) < 1.0e-16) {\n e[g >> 3] = -1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n c = +e[a + 8 >> 3];\n if (c > 3.141592653589793) do c = c + -6.283185307179586;\n while (c > 3.141592653589793);\n if (c < -3.141592653589793) do c = c + 6.283185307179586;\n while (c < -3.141592653589793);\n e[f + 8 >> 3] = c;\n return;\n }\n function nb(a) {\n a = a | 0;\n return + +e[20496 + (a << 3) >> 3];\n }\n function ob(a) {\n a = a | 0;\n return + +e[20624 + (a << 3) >> 3];\n }\n function pb(a) {\n a = a | 0;\n return + +e[20752 + (a << 3) >> 3];\n }\n function qb(a) {\n a = a | 0;\n return + +e[20880 + (a << 3) >> 3];\n }\n function rb(a) {\n a = a | 0;\n var c = 0;\n c = 21008 + (a << 3) | 0;\n a = b[c >> 2] | 0;\n F(b[c + 4 >> 2] | 0);\n return a | 0;\n }\n function sb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0.0, f = 0.0, g = 0.0, h = 0.0, i = 0.0, j = 0.0, k = 0.0, l = 0.0, m = 0.0, n = 0.0;\n n = +e[b >> 3];\n l = +e[a >> 3];\n j = +u(+((n - l) * .5));\n g = +e[b + 8 >> 3];\n k = +e[a + 8 >> 3];\n h = +u(+((g - k) * .5));\n i = +t(+l);\n m = +t(+n);\n h = j * j + h * (m * i * h);\n h = +z(+ +r(+h), + +r(+(1.0 - h))) * 2.0;\n j = +e[c >> 3];\n n = +u(+((j - n) * .5));\n d = +e[c + 8 >> 3];\n g = +u(+((d - g) * .5));\n f = +t(+j);\n g = n * n + g * (m * f * g);\n g = +z(+ +r(+g), + +r(+(1.0 - g))) * 2.0;\n j = +u(+((l - j) * .5));\n d = +u(+((k - d) * .5));\n d = j * j + d * (i * f * d);\n d = +z(+ +r(+d), + +r(+(1.0 - d))) * 2.0;\n f = (h + g + d) * .5;\n return +(+y(+ +r(+(+v(+(f * .5)) * +v(+((f - h) * .5)) * +v(+((f - g) * .5)) * +v(+((f - d) * .5))))) * 4.0);\n }\n function tb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0, e = 0, f = 0, g = 0, h = 0;\n g = S;\n S = S + 192 | 0;\n e = g + 168 | 0;\n f = g;\n Vb(a, c, e);\n Wb(a, c, f);\n c = b[f >> 2] | 0;\n if ((c | 0) <= 0) {\n d = 0.0;\n S = g;\n return +d;\n }\n d = +sb(f + 8 | 0, f + 8 + (((c | 0) != 1 & 1) << 4) | 0, e) + 0.0;\n if ((c | 0) == 1) {\n S = g;\n return +d;\n }\n a = 1;\n do {\n h = a;\n a = a + 1 | 0;\n d = d + +sb(f + 8 + (h << 4) | 0, f + 8 + (((a | 0) % (c | 0) | 0) << 4) | 0, e);\n }while ((a | 0) < (c | 0));\n S = g;\n return +d;\n }\n function ub(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0, e = 0, f = 0, g = 0, h = 0;\n g = S;\n S = S + 192 | 0;\n e = g + 168 | 0;\n f = g;\n Vb(a, c, e);\n Wb(a, c, f);\n c = b[f >> 2] | 0;\n if ((c | 0) > 0) {\n d = +sb(f + 8 | 0, f + 8 + (((c | 0) != 1 & 1) << 4) | 0, e) + 0.0;\n if ((c | 0) != 1) {\n a = 1;\n do {\n h = a;\n a = a + 1 | 0;\n d = d + +sb(f + 8 + (h << 4) | 0, f + 8 + (((a | 0) % (c | 0) | 0) << 4) | 0, e);\n }while ((a | 0) < (c | 0));\n }\n } else d = 0.0;\n S = g;\n return +(d * 40589732.49931477);\n }\n function vb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0, e = 0, f = 0, g = 0, h = 0;\n g = S;\n S = S + 192 | 0;\n e = g + 168 | 0;\n f = g;\n Vb(a, c, e);\n Wb(a, c, f);\n c = b[f >> 2] | 0;\n if ((c | 0) > 0) {\n d = +sb(f + 8 | 0, f + 8 + (((c | 0) != 1 & 1) << 4) | 0, e) + 0.0;\n if ((c | 0) != 1) {\n a = 1;\n do {\n h = a;\n a = a + 1 | 0;\n d = d + +sb(f + 8 + (h << 4) | 0, f + 8 + (((a | 0) % (c | 0) | 0) << 4) | 0, e);\n }while ((a | 0) < (c | 0));\n }\n } else d = 0.0;\n S = g;\n return +(d * 40589732499314.77);\n }\n function wb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0, f = 0.0, g = 0.0, h = 0, i = 0, j = 0.0, k = 0.0, l = 0.0;\n i = S;\n S = S + 176 | 0;\n h = i;\n gc(a, c, h);\n a = b[h >> 2] | 0;\n if ((a | 0) <= 1) {\n g = 0.0;\n S = i;\n return +g;\n }\n c = a + -1 | 0;\n a = 0;\n d = 0.0;\n f = +e[h + 8 >> 3];\n g = +e[h + 16 >> 3];\n do {\n a = a + 1 | 0;\n k = f;\n f = +e[h + 8 + (a << 4) >> 3];\n l = +u(+((f - k) * .5));\n j = g;\n g = +e[h + 8 + (a << 4) + 8 >> 3];\n j = +u(+((g - j) * .5));\n j = l * l + j * (+t(+f) * +t(+k) * j);\n d = d + +z(+ +r(+j), + +r(+(1.0 - j))) * 2.0;\n }while ((a | 0) < (c | 0));\n S = i;\n return +d;\n }\n function xb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0, f = 0.0, g = 0.0, h = 0, i = 0, j = 0.0, k = 0.0, l = 0.0;\n i = S;\n S = S + 176 | 0;\n h = i;\n gc(a, c, h);\n a = b[h >> 2] | 0;\n if ((a | 0) <= 1) {\n g = 0.0;\n S = i;\n return +g;\n }\n c = a + -1 | 0;\n a = 0;\n d = 0.0;\n f = +e[h + 8 >> 3];\n g = +e[h + 16 >> 3];\n do {\n a = a + 1 | 0;\n k = f;\n f = +e[h + 8 + (a << 4) >> 3];\n l = +u(+((f - k) * .5));\n j = g;\n g = +e[h + 8 + (a << 4) + 8 >> 3];\n j = +u(+((g - j) * .5));\n j = l * l + j * (+t(+k) * +t(+f) * j);\n d = d + +z(+ +r(+j), + +r(+(1.0 - j))) * 2.0;\n }while ((a | 0) != (c | 0));\n l = d * 6371.007180918475;\n S = i;\n return +l;\n }\n function yb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0, f = 0.0, g = 0.0, h = 0, i = 0, j = 0.0, k = 0.0, l = 0.0;\n i = S;\n S = S + 176 | 0;\n h = i;\n gc(a, c, h);\n a = b[h >> 2] | 0;\n if ((a | 0) <= 1) {\n g = 0.0;\n S = i;\n return +g;\n }\n c = a + -1 | 0;\n a = 0;\n d = 0.0;\n f = +e[h + 8 >> 3];\n g = +e[h + 16 >> 3];\n do {\n a = a + 1 | 0;\n k = f;\n f = +e[h + 8 + (a << 4) >> 3];\n l = +u(+((f - k) * .5));\n j = g;\n g = +e[h + 8 + (a << 4) + 8 >> 3];\n j = +u(+((g - j) * .5));\n j = l * l + j * (+t(+k) * +t(+f) * j);\n d = d + +z(+ +r(+j), + +r(+(1.0 - j))) * 2.0;\n }while ((a | 0) != (c | 0));\n l = d * 6371007.180918475;\n S = i;\n return +l;\n }\n function zb(a, b) {\n a = a | 0;\n b = b | 0;\n b = cd(a | 0, b | 0, 52) | 0;\n G();\n return b & 15 | 0;\n }\n function Ab(a, b) {\n a = a | 0;\n b = b | 0;\n b = cd(a | 0, b | 0, 45) | 0;\n G();\n return b & 127 | 0;\n }\n function Bb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0;\n if (!(true & (b & -16777216 | 0) == 134217728)) {\n b = 0;\n return b | 0;\n }\n g = cd(a | 0, b | 0, 45) | 0;\n G();\n g = g & 127;\n if (g >>> 0 > 121) {\n b = 0;\n return b | 0;\n }\n c = cd(a | 0, b | 0, 52) | 0;\n G();\n c = c & 15;\n do if (c | 0) {\n e = 1;\n d = 0;\n while(true){\n f = cd(a | 0, b | 0, (15 - e | 0) * 3 | 0) | 0;\n G();\n f = f & 7;\n if ((f | 0) != 0 & (d ^ 1)) {\n if ((f | 0) == 1 & (la(g) | 0) != 0) {\n h = 0;\n d = 13;\n break;\n } else d = 1;\n }\n if ((f | 0) == 7) {\n h = 0;\n d = 13;\n break;\n }\n if (e >>> 0 < c >>> 0) e = e + 1 | 0;\n else {\n d = 9;\n break;\n }\n }\n if ((d | 0) == 9) {\n if ((c | 0) == 15) h = 1;\n else break;\n return h | 0;\n } else if ((d | 0) == 13) return h | 0;\n }\n while (0);\n while(true){\n h = cd(a | 0, b | 0, (14 - c | 0) * 3 | 0) | 0;\n G();\n if (!((h & 7 | 0) == 7 & true)) {\n h = 0;\n d = 13;\n break;\n }\n if (c >>> 0 < 14) c = c + 1 | 0;\n else {\n h = 1;\n d = 13;\n break;\n }\n }\n if ((d | 0) == 13) return h | 0;\n return 0;\n }\n function Cb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0, e = 0;\n d = cd(a | 0, b | 0, 52) | 0;\n G();\n d = d & 15;\n if ((d | 0) >= (c | 0)) {\n if ((d | 0) != (c | 0)) {\n if (c >>> 0 <= 15) {\n e = dd(c | 0, 0, 52) | 0;\n a = e | a;\n b = G() | 0 | b & -15728641;\n if ((d | 0) > (c | 0)) do {\n e = dd(7, 0, (14 - c | 0) * 3 | 0) | 0;\n c = c + 1 | 0;\n a = e | a;\n b = G() | 0 | b;\n }while ((c | 0) < (d | 0));\n } else {\n b = 0;\n a = 0;\n }\n }\n } else {\n b = 0;\n a = 0;\n }\n F(b | 0);\n return a | 0;\n }\n function Db(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n a = cd(a | 0, b | 0, 52) | 0;\n G();\n a = a & 15;\n if (!((c | 0) < 16 & (a | 0) <= (c | 0))) {\n c = 0;\n return c | 0;\n }\n c = tc(7, c - a | 0) | 0;\n return c | 0;\n }\n function Eb(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0;\n h = cd(a | 0, c | 0, 52) | 0;\n G();\n h = h & 15;\n if (!((d | 0) < 16 & (h | 0) <= (d | 0))) return;\n if ((h | 0) == (d | 0)) {\n d = e;\n b[d >> 2] = a;\n b[d + 4 >> 2] = c;\n return;\n }\n j = tc(7, d - h | 0) | 0;\n k = (j | 0) / 7 | 0;\n i = cd(a | 0, c | 0, 45) | 0;\n G();\n if (!(la(i & 127) | 0)) g = 0;\n else {\n a: do if (!h) f = 0;\n else {\n g = 1;\n while(true){\n f = cd(a | 0, c | 0, (15 - g | 0) * 3 | 0) | 0;\n G();\n f = f & 7;\n if (f | 0) break a;\n if (g >>> 0 < h >>> 0) g = g + 1 | 0;\n else {\n f = 0;\n break;\n }\n }\n }\n while (0);\n g = (f | 0) == 0;\n }\n l = dd(h + 1 | 0, 0, 52) | 0;\n f = G() | 0 | c & -15728641;\n i = (14 - h | 0) * 3 | 0;\n c = dd(7, 0, i | 0) | 0;\n c = (l | a) & ~c;\n h = f & ~(G() | 0);\n Eb(c, h, d, e);\n f = e + (k << 3) | 0;\n if (!g) {\n l = dd(1, 0, i | 0) | 0;\n Eb(l | c, G() | 0 | h, d, f);\n l = f + (k << 3) | 0;\n j = dd(2, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = dd(3, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = dd(4, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = dd(5, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l);\n j = dd(6, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l + (k << 3) | 0);\n return;\n }\n g = f + (k << 3) | 0;\n if ((j | 0) > 6) {\n j = f + 8 | 0;\n l = (g >>> 0 > j >>> 0 ? g : j) + -1 + (0 - f) | 0;\n hd(f | 0, 0, l + 8 & -8 | 0);\n f = j + (l >>> 3 << 3) | 0;\n }\n l = dd(2, 0, i | 0) | 0;\n Eb(l | c, G() | 0 | h, d, f);\n l = f + (k << 3) | 0;\n j = dd(3, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = dd(4, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = dd(5, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l);\n j = dd(6, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l + (k << 3) | 0);\n return;\n }\n function Fb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0, d = 0, e = 0;\n e = cd(a | 0, b | 0, 45) | 0;\n G();\n if (!(la(e & 127) | 0)) {\n e = 0;\n return e | 0;\n }\n e = cd(a | 0, b | 0, 52) | 0;\n G();\n e = e & 15;\n a: do if (!e) c = 0;\n else {\n d = 1;\n while(true){\n c = cd(a | 0, b | 0, (15 - d | 0) * 3 | 0) | 0;\n G();\n c = c & 7;\n if (c | 0) break a;\n if (d >>> 0 < e >>> 0) d = d + 1 | 0;\n else {\n c = 0;\n break;\n }\n }\n }\n while (0);\n e = (c | 0) == 0 & 1;\n return e | 0;\n }\n function Gb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0, e = 0;\n d = cd(a | 0, b | 0, 52) | 0;\n G();\n d = d & 15;\n if ((c | 0) < 16 & (d | 0) <= (c | 0)) {\n if ((d | 0) != (c | 0)) {\n e = dd(c | 0, 0, 52) | 0;\n a = e | a;\n b = G() | 0 | b & -15728641;\n if ((d | 0) < (c | 0)) do {\n e = dd(7, 0, (14 - d | 0) * 3 | 0) | 0;\n d = d + 1 | 0;\n a = a & ~e;\n b = b & ~(G() | 0);\n }while ((d | 0) < (c | 0));\n }\n } else {\n b = 0;\n a = 0;\n }\n F(b | 0);\n return a | 0;\n }\n function Hb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0;\n if (!d) {\n y = 0;\n return y | 0;\n }\n f = a;\n e = b[f >> 2] | 0;\n f = b[f + 4 >> 2] | 0;\n if (true & (f & 15728640 | 0) == 0) {\n if ((d | 0) <= 0) {\n y = 0;\n return y | 0;\n }\n y = c;\n b[y >> 2] = e;\n b[y + 4 >> 2] = f;\n if ((d | 0) == 1) {\n y = 0;\n return y | 0;\n }\n e = 1;\n do {\n w = a + (e << 3) | 0;\n x = b[w + 4 >> 2] | 0;\n y = c + (e << 3) | 0;\n b[y >> 2] = b[w >> 2];\n b[y + 4 >> 2] = x;\n e = e + 1 | 0;\n }while ((e | 0) != (d | 0));\n e = 0;\n return e | 0;\n }\n w = d << 3;\n x = Wc(w) | 0;\n if (!x) {\n y = -3;\n return y | 0;\n }\n gd(x | 0, a | 0, w | 0);\n v = Yc(d, 8) | 0;\n if (!v) {\n Xc(x);\n y = -3;\n return y | 0;\n }\n e = d;\n a: while(true){\n h = x;\n l = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n t = cd(l | 0, h | 0, 52) | 0;\n G();\n t = t & 15;\n u = t + -1 | 0;\n s = (e | 0) > 0;\n b: do if (s) {\n r = ((e | 0) < 0) << 31 >> 31;\n p = dd(u | 0, 0, 52) | 0;\n q = G() | 0;\n if (u >>> 0 > 15) {\n f = 0;\n a = l;\n d = h;\n while(true){\n if (!((a | 0) == 0 & (d | 0) == 0)) {\n g = cd(a | 0, d | 0, 52) | 0;\n G();\n g = g & 15;\n i = (g | 0) < (u | 0);\n g = (g | 0) == (u | 0);\n k = i ? 0 : g ? a : 0;\n a = i ? 0 : g ? d : 0;\n d = bd(k | 0, a | 0, e | 0, r | 0) | 0;\n G();\n g = v + (d << 3) | 0;\n i = g;\n j = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n if ((j | 0) == 0 & (i | 0) == 0) d = k;\n else {\n p = 0;\n o = d;\n n = i;\n d = k;\n while(true){\n if ((p | 0) > (e | 0)) {\n y = 41;\n break a;\n }\n if ((j | 0) == (d | 0) & (n & -117440513 | 0) == (a | 0)) {\n k = cd(j | 0, n | 0, 56) | 0;\n G();\n k = k & 7;\n m = k + 1 | 0;\n q = cd(j | 0, n | 0, 45) | 0;\n G();\n c: do if (!(la(q & 127) | 0)) i = 7;\n else {\n j = cd(j | 0, n | 0, 52) | 0;\n G();\n j = j & 15;\n if (!j) {\n i = 6;\n break;\n }\n i = 1;\n while(true){\n q = dd(7, 0, (15 - i | 0) * 3 | 0) | 0;\n if (!((q & d | 0) == 0 & ((G() | 0) & a | 0) == 0)) {\n i = 7;\n break c;\n }\n if (i >>> 0 < j >>> 0) i = i + 1 | 0;\n else {\n i = 6;\n break;\n }\n }\n }\n while (0);\n if ((k + 2 | 0) >>> 0 > i >>> 0) {\n y = 51;\n break a;\n }\n q = dd(m | 0, 0, 56) | 0;\n a = G() | 0 | a & -117440513;\n i = g;\n b[i >> 2] = 0;\n b[i + 4 >> 2] = 0;\n i = o;\n d = q | d;\n } else i = (o + 1 | 0) % (e | 0) | 0;\n g = v + (i << 3) | 0;\n n = g;\n j = b[n >> 2] | 0;\n n = b[n + 4 >> 2] | 0;\n if ((j | 0) == 0 & (n | 0) == 0) break;\n else {\n p = p + 1 | 0;\n o = i;\n }\n }\n }\n q = g;\n b[q >> 2] = d;\n b[q + 4 >> 2] = a;\n }\n f = f + 1 | 0;\n if ((f | 0) >= (e | 0)) break b;\n d = x + (f << 3) | 0;\n a = b[d >> 2] | 0;\n d = b[d + 4 >> 2] | 0;\n }\n }\n f = 0;\n a = l;\n d = h;\n while(true){\n if (!((a | 0) == 0 & (d | 0) == 0)) {\n i = cd(a | 0, d | 0, 52) | 0;\n G();\n i = i & 15;\n if ((i | 0) >= (u | 0)) {\n if ((i | 0) != (u | 0)) {\n a = a | p;\n d = d & -15728641 | q;\n if (i >>> 0 >= t >>> 0) {\n g = u;\n do {\n o = dd(7, 0, (14 - g | 0) * 3 | 0) | 0;\n g = g + 1 | 0;\n a = o | a;\n d = G() | 0 | d;\n }while (g >>> 0 < i >>> 0);\n }\n }\n } else {\n a = 0;\n d = 0;\n }\n i = bd(a | 0, d | 0, e | 0, r | 0) | 0;\n G();\n g = v + (i << 3) | 0;\n j = g;\n k = b[j >> 2] | 0;\n j = b[j + 4 >> 2] | 0;\n if (!((k | 0) == 0 & (j | 0) == 0)) {\n o = 0;\n while(true){\n if ((o | 0) > (e | 0)) {\n y = 41;\n break a;\n }\n if ((k | 0) == (a | 0) & (j & -117440513 | 0) == (d | 0)) {\n m = cd(k | 0, j | 0, 56) | 0;\n G();\n m = m & 7;\n n = m + 1 | 0;\n z = cd(k | 0, j | 0, 45) | 0;\n G();\n d: do if (!(la(z & 127) | 0)) j = 7;\n else {\n k = cd(k | 0, j | 0, 52) | 0;\n G();\n k = k & 15;\n if (!k) {\n j = 6;\n break;\n }\n j = 1;\n while(true){\n z = dd(7, 0, (15 - j | 0) * 3 | 0) | 0;\n if (!((z & a | 0) == 0 & ((G() | 0) & d | 0) == 0)) {\n j = 7;\n break d;\n }\n if (j >>> 0 < k >>> 0) j = j + 1 | 0;\n else {\n j = 6;\n break;\n }\n }\n }\n while (0);\n if ((m + 2 | 0) >>> 0 > j >>> 0) {\n y = 51;\n break a;\n }\n z = dd(n | 0, 0, 56) | 0;\n d = G() | 0 | d & -117440513;\n n = g;\n b[n >> 2] = 0;\n b[n + 4 >> 2] = 0;\n a = z | a;\n } else i = (i + 1 | 0) % (e | 0) | 0;\n g = v + (i << 3) | 0;\n j = g;\n k = b[j >> 2] | 0;\n j = b[j + 4 >> 2] | 0;\n if ((k | 0) == 0 & (j | 0) == 0) break;\n else o = o + 1 | 0;\n }\n }\n z = g;\n b[z >> 2] = a;\n b[z + 4 >> 2] = d;\n }\n f = f + 1 | 0;\n if ((f | 0) >= (e | 0)) break b;\n d = x + (f << 3) | 0;\n a = b[d >> 2] | 0;\n d = b[d + 4 >> 2] | 0;\n }\n }\n while (0);\n if ((e + 5 | 0) >>> 0 < 11) {\n y = 99;\n break;\n }\n q = Yc((e | 0) / 6 | 0, 8) | 0;\n if (!q) {\n y = 58;\n break;\n }\n e: do if (s) {\n o = 0;\n n = 0;\n do {\n i = v + (o << 3) | 0;\n a = i;\n f = b[a >> 2] | 0;\n a = b[a + 4 >> 2] | 0;\n if (!((f | 0) == 0 & (a | 0) == 0)) {\n j = cd(f | 0, a | 0, 56) | 0;\n G();\n j = j & 7;\n d = j + 1 | 0;\n k = a & -117440513;\n z = cd(f | 0, a | 0, 45) | 0;\n G();\n f: do if (la(z & 127) | 0) {\n m = cd(f | 0, a | 0, 52) | 0;\n G();\n m = m & 15;\n if (m | 0) {\n g = 1;\n while(true){\n z = dd(7, 0, (15 - g | 0) * 3 | 0) | 0;\n if (!((f & z | 0) == 0 & (k & (G() | 0) | 0) == 0)) break f;\n if (g >>> 0 < m >>> 0) g = g + 1 | 0;\n else break;\n }\n }\n a = dd(d | 0, 0, 56) | 0;\n f = a | f;\n a = G() | 0 | k;\n d = i;\n b[d >> 2] = f;\n b[d + 4 >> 2] = a;\n d = j + 2 | 0;\n }\n while (0);\n if ((d | 0) == 7) {\n z = q + (n << 3) | 0;\n b[z >> 2] = f;\n b[z + 4 >> 2] = a & -117440513;\n n = n + 1 | 0;\n }\n }\n o = o + 1 | 0;\n }while ((o | 0) != (e | 0));\n if (s) {\n p = ((e | 0) < 0) << 31 >> 31;\n m = dd(u | 0, 0, 52) | 0;\n o = G() | 0;\n if (u >>> 0 > 15) {\n a = 0;\n f = 0;\n while(true){\n do if (!((l | 0) == 0 & (h | 0) == 0)) {\n j = cd(l | 0, h | 0, 52) | 0;\n G();\n j = j & 15;\n g = (j | 0) < (u | 0);\n j = (j | 0) == (u | 0);\n i = g ? 0 : j ? l : 0;\n j = g ? 0 : j ? h : 0;\n g = bd(i | 0, j | 0, e | 0, p | 0) | 0;\n G();\n d = 0;\n while(true){\n if ((d | 0) > (e | 0)) {\n y = 98;\n break a;\n }\n z = v + (g << 3) | 0;\n k = b[z + 4 >> 2] | 0;\n if ((k & -117440513 | 0) == (j | 0) ? (b[z >> 2] | 0) == (i | 0) : 0) {\n y = 70;\n break;\n }\n g = (g + 1 | 0) % (e | 0) | 0;\n z = v + (g << 3) | 0;\n if ((b[z >> 2] | 0) == (i | 0) ? (b[z + 4 >> 2] | 0) == (j | 0) : 0) break;\n else d = d + 1 | 0;\n }\n if ((y | 0) == 70 ? (y = 0, true & (k & 117440512 | 0) == 100663296) : 0) break;\n z = c + (f << 3) | 0;\n b[z >> 2] = l;\n b[z + 4 >> 2] = h;\n f = f + 1 | 0;\n }\n while (0);\n a = a + 1 | 0;\n if ((a | 0) >= (e | 0)) {\n e = n;\n break e;\n }\n h = x + (a << 3) | 0;\n l = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n }\n }\n a = 0;\n f = 0;\n while(true){\n do if (!((l | 0) == 0 & (h | 0) == 0)) {\n j = cd(l | 0, h | 0, 52) | 0;\n G();\n j = j & 15;\n if ((j | 0) >= (u | 0)) {\n if ((j | 0) != (u | 0)) {\n d = l | m;\n g = h & -15728641 | o;\n if (j >>> 0 < t >>> 0) j = g;\n else {\n i = u;\n do {\n z = dd(7, 0, (14 - i | 0) * 3 | 0) | 0;\n i = i + 1 | 0;\n d = z | d;\n g = G() | 0 | g;\n }while (i >>> 0 < j >>> 0);\n j = g;\n }\n } else {\n d = l;\n j = h;\n }\n } else {\n d = 0;\n j = 0;\n }\n i = bd(d | 0, j | 0, e | 0, p | 0) | 0;\n G();\n g = 0;\n while(true){\n if ((g | 0) > (e | 0)) {\n y = 98;\n break a;\n }\n z = v + (i << 3) | 0;\n k = b[z + 4 >> 2] | 0;\n if ((k & -117440513 | 0) == (j | 0) ? (b[z >> 2] | 0) == (d | 0) : 0) {\n y = 93;\n break;\n }\n i = (i + 1 | 0) % (e | 0) | 0;\n z = v + (i << 3) | 0;\n if ((b[z >> 2] | 0) == (d | 0) ? (b[z + 4 >> 2] | 0) == (j | 0) : 0) break;\n else g = g + 1 | 0;\n }\n if ((y | 0) == 93 ? (y = 0, true & (k & 117440512 | 0) == 100663296) : 0) break;\n z = c + (f << 3) | 0;\n b[z >> 2] = l;\n b[z + 4 >> 2] = h;\n f = f + 1 | 0;\n }\n while (0);\n a = a + 1 | 0;\n if ((a | 0) >= (e | 0)) {\n e = n;\n break e;\n }\n h = x + (a << 3) | 0;\n l = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n }\n } else {\n f = 0;\n e = n;\n }\n } else {\n f = 0;\n e = 0;\n }\n while (0);\n hd(v | 0, 0, w | 0);\n gd(x | 0, q | 0, e << 3 | 0);\n Xc(q);\n if (!e) break;\n else c = c + (f << 3) | 0;\n }\n if ((y | 0) == 41) {\n Xc(x);\n Xc(v);\n z = -1;\n return z | 0;\n } else if ((y | 0) == 51) {\n Xc(x);\n Xc(v);\n z = -2;\n return z | 0;\n } else if ((y | 0) == 58) {\n Xc(x);\n Xc(v);\n z = -3;\n return z | 0;\n } else if ((y | 0) == 98) {\n Xc(q);\n Xc(x);\n Xc(v);\n z = -1;\n return z | 0;\n } else if ((y | 0) == 99) gd(c | 0, x | 0, e << 3 | 0);\n Xc(x);\n Xc(v);\n z = 0;\n return z | 0;\n }\n function Ib(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0;\n if ((c | 0) <= 0) {\n f = 0;\n return f | 0;\n }\n if ((f | 0) >= 16) {\n g = 0;\n while(true){\n l = a + (g << 3) | 0;\n if (!((b[l >> 2] | 0) == 0 & (b[l + 4 >> 2] | 0) == 0)) {\n g = 14;\n break;\n }\n g = g + 1 | 0;\n if ((g | 0) >= (c | 0)) {\n h = 0;\n g = 16;\n break;\n }\n }\n if ((g | 0) == 14) return ((e | 0) > 0 ? -2 : -1) | 0;\n else if ((g | 0) == 16) return h | 0;\n }\n g = 0;\n l = 0;\n a: while(true){\n k = a + (l << 3) | 0;\n i = k;\n h = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n do if (!((h | 0) == 0 & (i | 0) == 0)) {\n if ((g | 0) >= (e | 0)) {\n h = -1;\n g = 16;\n break a;\n }\n j = cd(h | 0, i | 0, 52) | 0;\n G();\n j = j & 15;\n if ((j | 0) > (f | 0)) {\n h = -2;\n g = 16;\n break a;\n }\n if ((j | 0) == (f | 0)) {\n k = d + (g << 3) | 0;\n b[k >> 2] = h;\n b[k + 4 >> 2] = i;\n g = g + 1 | 0;\n break;\n }\n h = (tc(7, f - j | 0) | 0) + g | 0;\n if ((h | 0) > (e | 0)) {\n h = -1;\n g = 16;\n break a;\n }\n Eb(b[k >> 2] | 0, b[k + 4 >> 2] | 0, f, d + (g << 3) | 0);\n g = h;\n }\n while (0);\n l = l + 1 | 0;\n if ((l | 0) >= (c | 0)) {\n h = 0;\n g = 16;\n break;\n }\n }\n if ((g | 0) == 16) return h | 0;\n return 0;\n }\n function Jb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0;\n if ((c | 0) <= 0) {\n d = 0;\n return d | 0;\n }\n if ((d | 0) >= 16) {\n e = 0;\n while(true){\n h = a + (e << 3) | 0;\n if (!((b[h >> 2] | 0) == 0 & (b[h + 4 >> 2] | 0) == 0)) {\n e = -1;\n f = 13;\n break;\n }\n e = e + 1 | 0;\n if ((e | 0) >= (c | 0)) {\n e = 0;\n f = 13;\n break;\n }\n }\n if ((f | 0) == 13) return e | 0;\n }\n e = 0;\n h = 0;\n a: while(true){\n f = a + (h << 3) | 0;\n g = b[f >> 2] | 0;\n f = b[f + 4 >> 2] | 0;\n do if (!((g | 0) == 0 & (f | 0) == 0)) {\n f = cd(g | 0, f | 0, 52) | 0;\n G();\n f = f & 15;\n if ((f | 0) > (d | 0)) {\n e = -1;\n f = 13;\n break a;\n }\n if ((f | 0) == (d | 0)) {\n e = e + 1 | 0;\n break;\n } else {\n e = (tc(7, d - f | 0) | 0) + e | 0;\n break;\n }\n }\n while (0);\n h = h + 1 | 0;\n if ((h | 0) >= (c | 0)) {\n f = 13;\n break;\n }\n }\n if ((f | 0) == 13) return e | 0;\n return 0;\n }\n function Kb(a, b) {\n a = a | 0;\n b = b | 0;\n b = cd(a | 0, b | 0, 52) | 0;\n G();\n return b & 1 | 0;\n }\n function Lb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0, d = 0, e = 0;\n e = cd(a | 0, b | 0, 52) | 0;\n G();\n e = e & 15;\n if (!e) {\n e = 0;\n return e | 0;\n }\n d = 1;\n while(true){\n c = cd(a | 0, b | 0, (15 - d | 0) * 3 | 0) | 0;\n G();\n c = c & 7;\n if (c | 0) {\n d = 5;\n break;\n }\n if (d >>> 0 < e >>> 0) d = d + 1 | 0;\n else {\n c = 0;\n d = 5;\n break;\n }\n }\n if ((d | 0) == 5) return c | 0;\n return 0;\n }\n function Mb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n i = cd(a | 0, b | 0, 52) | 0;\n G();\n i = i & 15;\n if (!i) {\n h = b;\n i = a;\n F(h | 0);\n return i | 0;\n }\n h = 1;\n c = 0;\n while(true){\n f = (15 - h | 0) * 3 | 0;\n d = dd(7, 0, f | 0) | 0;\n e = G() | 0;\n g = cd(a | 0, b | 0, f | 0) | 0;\n G();\n f = dd(Pa(g & 7) | 0, 0, f | 0) | 0;\n g = G() | 0;\n a = f | a & ~d;\n b = g | b & ~e;\n a: do if (!c) {\n if (!((f & d | 0) == 0 & (g & e | 0) == 0)) {\n d = cd(a | 0, b | 0, 52) | 0;\n G();\n d = d & 15;\n if (!d) c = 1;\n else {\n c = 1;\n b: while(true){\n g = cd(a | 0, b | 0, (15 - c | 0) * 3 | 0) | 0;\n G();\n switch(g & 7){\n case 1:\n break b;\n case 0:\n break;\n default:\n c = 1;\n break a;\n }\n if (c >>> 0 < d >>> 0) c = c + 1 | 0;\n else {\n c = 1;\n break a;\n }\n }\n c = 1;\n while(true){\n g = (15 - c | 0) * 3 | 0;\n e = cd(a | 0, b | 0, g | 0) | 0;\n G();\n f = dd(7, 0, g | 0) | 0;\n b = b & ~(G() | 0);\n g = dd(Pa(e & 7) | 0, 0, g | 0) | 0;\n a = a & ~f | g;\n b = b | (G() | 0);\n if (c >>> 0 < d >>> 0) c = c + 1 | 0;\n else {\n c = 1;\n break;\n }\n }\n }\n } else c = 0;\n }\n while (0);\n if (h >>> 0 < i >>> 0) h = h + 1 | 0;\n else break;\n }\n F(b | 0);\n return a | 0;\n }\n function Nb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0;\n d = cd(a | 0, b | 0, 52) | 0;\n G();\n d = d & 15;\n if (!d) {\n c = b;\n d = a;\n F(c | 0);\n return d | 0;\n }\n c = 1;\n while(true){\n f = (15 - c | 0) * 3 | 0;\n g = cd(a | 0, b | 0, f | 0) | 0;\n G();\n e = dd(7, 0, f | 0) | 0;\n b = b & ~(G() | 0);\n f = dd(Pa(g & 7) | 0, 0, f | 0) | 0;\n a = f | a & ~e;\n b = G() | 0 | b;\n if (c >>> 0 < d >>> 0) c = c + 1 | 0;\n else break;\n }\n F(b | 0);\n return a | 0;\n }\n function Ob(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n i = cd(a | 0, b | 0, 52) | 0;\n G();\n i = i & 15;\n if (!i) {\n h = b;\n i = a;\n F(h | 0);\n return i | 0;\n }\n h = 1;\n c = 0;\n while(true){\n f = (15 - h | 0) * 3 | 0;\n d = dd(7, 0, f | 0) | 0;\n e = G() | 0;\n g = cd(a | 0, b | 0, f | 0) | 0;\n G();\n f = dd(Qa(g & 7) | 0, 0, f | 0) | 0;\n g = G() | 0;\n a = f | a & ~d;\n b = g | b & ~e;\n a: do if (!c) {\n if (!((f & d | 0) == 0 & (g & e | 0) == 0)) {\n d = cd(a | 0, b | 0, 52) | 0;\n G();\n d = d & 15;\n if (!d) c = 1;\n else {\n c = 1;\n b: while(true){\n g = cd(a | 0, b | 0, (15 - c | 0) * 3 | 0) | 0;\n G();\n switch(g & 7){\n case 1:\n break b;\n case 0:\n break;\n default:\n c = 1;\n break a;\n }\n if (c >>> 0 < d >>> 0) c = c + 1 | 0;\n else {\n c = 1;\n break a;\n }\n }\n c = 1;\n while(true){\n e = (15 - c | 0) * 3 | 0;\n f = dd(7, 0, e | 0) | 0;\n g = b & ~(G() | 0);\n b = cd(a | 0, b | 0, e | 0) | 0;\n G();\n b = dd(Qa(b & 7) | 0, 0, e | 0) | 0;\n a = a & ~f | b;\n b = g | (G() | 0);\n if (c >>> 0 < d >>> 0) c = c + 1 | 0;\n else {\n c = 1;\n break;\n }\n }\n }\n } else c = 0;\n }\n while (0);\n if (h >>> 0 < i >>> 0) h = h + 1 | 0;\n else break;\n }\n F(b | 0);\n return a | 0;\n }\n function Pb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0;\n d = cd(a | 0, b | 0, 52) | 0;\n G();\n d = d & 15;\n if (!d) {\n c = b;\n d = a;\n F(c | 0);\n return d | 0;\n }\n c = 1;\n while(true){\n g = (15 - c | 0) * 3 | 0;\n f = dd(7, 0, g | 0) | 0;\n e = b & ~(G() | 0);\n b = cd(a | 0, b | 0, g | 0) | 0;\n G();\n b = dd(Qa(b & 7) | 0, 0, g | 0) | 0;\n a = b | a & ~f;\n b = G() | 0 | e;\n if (c >>> 0 < d >>> 0) c = c + 1 | 0;\n else break;\n }\n F(b | 0);\n return a | 0;\n }\n function Qb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0;\n j = S;\n S = S + 64 | 0;\n i = j + 40 | 0;\n e = j + 24 | 0;\n f = j + 12 | 0;\n g = j;\n dd(c | 0, 0, 52);\n d = G() | 134225919;\n if (!c) {\n if ((b[a + 4 >> 2] | 0) > 2) {\n h = 0;\n i = 0;\n F(h | 0);\n S = j;\n return i | 0;\n }\n if ((b[a + 8 >> 2] | 0) > 2) {\n h = 0;\n i = 0;\n F(h | 0);\n S = j;\n return i | 0;\n }\n if ((b[a + 12 >> 2] | 0) > 2) {\n h = 0;\n i = 0;\n F(h | 0);\n S = j;\n return i | 0;\n }\n dd(na(a) | 0, 0, 45);\n h = G() | 0 | d;\n i = -1;\n F(h | 0);\n S = j;\n return i | 0;\n }\n b[i >> 2] = b[a >> 2];\n b[i + 4 >> 2] = b[a + 4 >> 2];\n b[i + 8 >> 2] = b[a + 8 >> 2];\n b[i + 12 >> 2] = b[a + 12 >> 2];\n h = i + 4 | 0;\n if ((c | 0) > 0) {\n a = -1;\n while(true){\n b[e >> 2] = b[h >> 2];\n b[e + 4 >> 2] = b[h + 4 >> 2];\n b[e + 8 >> 2] = b[h + 8 >> 2];\n if (!(c & 1)) {\n Ja(h);\n b[f >> 2] = b[h >> 2];\n b[f + 4 >> 2] = b[h + 4 >> 2];\n b[f + 8 >> 2] = b[h + 8 >> 2];\n La(f);\n } else {\n Ia(h);\n b[f >> 2] = b[h >> 2];\n b[f + 4 >> 2] = b[h + 4 >> 2];\n b[f + 8 >> 2] = b[h + 8 >> 2];\n Ka(f);\n }\n Fa(e, f, g);\n Ca(g);\n l = (15 - c | 0) * 3 | 0;\n k = dd(7, 0, l | 0) | 0;\n d = d & ~(G() | 0);\n l = dd(Ha(g) | 0, 0, l | 0) | 0;\n a = l | a & ~k;\n d = G() | 0 | d;\n if ((c | 0) > 1) c = c + -1 | 0;\n else break;\n }\n } else a = -1;\n a: do if (((b[h >> 2] | 0) <= 2 ? (b[i + 8 >> 2] | 0) <= 2 : 0) ? (b[i + 12 >> 2] | 0) <= 2 : 0) {\n e = na(i) | 0;\n c = dd(e | 0, 0, 45) | 0;\n c = c | a;\n a = G() | 0 | d & -1040385;\n g = oa(i) | 0;\n if (!(la(e) | 0)) {\n if ((g | 0) <= 0) break;\n f = 0;\n while(true){\n e = cd(c | 0, a | 0, 52) | 0;\n G();\n e = e & 15;\n if (e) {\n d = 1;\n while(true){\n l = (15 - d | 0) * 3 | 0;\n i = cd(c | 0, a | 0, l | 0) | 0;\n G();\n k = dd(7, 0, l | 0) | 0;\n a = a & ~(G() | 0);\n l = dd(Pa(i & 7) | 0, 0, l | 0) | 0;\n c = c & ~k | l;\n a = a | (G() | 0);\n if (d >>> 0 < e >>> 0) d = d + 1 | 0;\n else break;\n }\n }\n f = f + 1 | 0;\n if ((f | 0) == (g | 0)) break a;\n }\n }\n f = cd(c | 0, a | 0, 52) | 0;\n G();\n f = f & 15;\n b: do if (f) {\n d = 1;\n c: while(true){\n l = cd(c | 0, a | 0, (15 - d | 0) * 3 | 0) | 0;\n G();\n switch(l & 7){\n case 1:\n break c;\n case 0:\n break;\n default:\n break b;\n }\n if (d >>> 0 < f >>> 0) d = d + 1 | 0;\n else break b;\n }\n if (ra(e, b[i >> 2] | 0) | 0) {\n d = 1;\n while(true){\n i = (15 - d | 0) * 3 | 0;\n k = dd(7, 0, i | 0) | 0;\n l = a & ~(G() | 0);\n a = cd(c | 0, a | 0, i | 0) | 0;\n G();\n a = dd(Qa(a & 7) | 0, 0, i | 0) | 0;\n c = c & ~k | a;\n a = l | (G() | 0);\n if (d >>> 0 < f >>> 0) d = d + 1 | 0;\n else break;\n }\n } else {\n d = 1;\n while(true){\n l = (15 - d | 0) * 3 | 0;\n i = cd(c | 0, a | 0, l | 0) | 0;\n G();\n k = dd(7, 0, l | 0) | 0;\n a = a & ~(G() | 0);\n l = dd(Pa(i & 7) | 0, 0, l | 0) | 0;\n c = c & ~k | l;\n a = a | (G() | 0);\n if (d >>> 0 < f >>> 0) d = d + 1 | 0;\n else break;\n }\n }\n }\n while (0);\n if ((g | 0) > 0) {\n d = 0;\n do {\n c = Mb(c, a) | 0;\n a = G() | 0;\n d = d + 1 | 0;\n }while ((d | 0) != (g | 0));\n }\n } else {\n c = 0;\n a = 0;\n }\n while (0);\n k = a;\n l = c;\n F(k | 0);\n S = j;\n return l | 0;\n }\n function Rb(a) {\n a = a | 0;\n return (a | 0) % 2 | 0;\n }\n function Sb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0;\n e = S;\n S = S + 16 | 0;\n d = e;\n if ((c >>> 0 <= 15 ? !((b[a + 4 >> 2] & 2146435072 | 0) == 2146435072) : 0) ? !((b[a + 8 + 4 >> 2] & 2146435072 | 0) == 2146435072) : 0) {\n Ya(a, c, d);\n c = Qb(d, c) | 0;\n a = G() | 0;\n } else {\n a = 0;\n c = 0;\n }\n F(a | 0);\n S = e;\n return c | 0;\n }\n function Tb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0;\n f = d + 4 | 0;\n g = cd(a | 0, c | 0, 52) | 0;\n G();\n g = g & 15;\n h = cd(a | 0, c | 0, 45) | 0;\n G();\n e = (g | 0) == 0;\n if (!(la(h & 127) | 0)) {\n if (e) {\n h = 0;\n return h | 0;\n }\n if ((b[f >> 2] | 0) == 0 ? (b[d + 8 >> 2] | 0) == 0 : 0) e = (b[d + 12 >> 2] | 0) != 0 & 1;\n else e = 1;\n } else if (e) {\n h = 1;\n return h | 0;\n } else e = 1;\n d = 1;\n while(true){\n if (!(d & 1)) La(f);\n else Ka(f);\n h = cd(a | 0, c | 0, (15 - d | 0) * 3 | 0) | 0;\n G();\n Ma(f, h & 7);\n if (d >>> 0 < g >>> 0) d = d + 1 | 0;\n else break;\n }\n return e | 0;\n }\n function Ub(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0;\n l = S;\n S = S + 16 | 0;\n j = l;\n k = cd(a | 0, c | 0, 45) | 0;\n G();\n k = k & 127;\n a: do if ((la(k) | 0) != 0 ? (g = cd(a | 0, c | 0, 52) | 0, G(), g = g & 15, (g | 0) != 0) : 0) {\n e = 1;\n b: while(true){\n i = cd(a | 0, c | 0, (15 - e | 0) * 3 | 0) | 0;\n G();\n switch(i & 7){\n case 5:\n break b;\n case 0:\n break;\n default:\n e = c;\n break a;\n }\n if (e >>> 0 < g >>> 0) e = e + 1 | 0;\n else {\n e = c;\n break a;\n }\n }\n f = 1;\n e = c;\n while(true){\n c = (15 - f | 0) * 3 | 0;\n h = dd(7, 0, c | 0) | 0;\n i = e & ~(G() | 0);\n e = cd(a | 0, e | 0, c | 0) | 0;\n G();\n e = dd(Qa(e & 7) | 0, 0, c | 0) | 0;\n a = a & ~h | e;\n e = i | (G() | 0);\n if (f >>> 0 < g >>> 0) f = f + 1 | 0;\n else break;\n }\n } else e = c;\n while (0);\n i = 7728 + (k * 28 | 0) | 0;\n b[d >> 2] = b[i >> 2];\n b[d + 4 >> 2] = b[i + 4 >> 2];\n b[d + 8 >> 2] = b[i + 8 >> 2];\n b[d + 12 >> 2] = b[i + 12 >> 2];\n if (!(Tb(a, e, d) | 0)) {\n S = l;\n return;\n }\n h = d + 4 | 0;\n b[j >> 2] = b[h >> 2];\n b[j + 4 >> 2] = b[h + 4 >> 2];\n b[j + 8 >> 2] = b[h + 8 >> 2];\n g = cd(a | 0, e | 0, 52) | 0;\n G();\n i = g & 15;\n if (!(g & 1)) g = i;\n else {\n La(h);\n g = i + 1 | 0;\n }\n if (!(la(k) | 0)) e = 0;\n else {\n c: do if (!i) e = 0;\n else {\n c = 1;\n while(true){\n f = cd(a | 0, e | 0, (15 - c | 0) * 3 | 0) | 0;\n G();\n f = f & 7;\n if (f | 0) {\n e = f;\n break c;\n }\n if (c >>> 0 < i >>> 0) c = c + 1 | 0;\n else {\n e = 0;\n break;\n }\n }\n }\n while (0);\n e = (e | 0) == 4 & 1;\n }\n if (!(cb(d, g, e, 0) | 0)) {\n if ((g | 0) != (i | 0)) {\n b[h >> 2] = b[j >> 2];\n b[h + 4 >> 2] = b[j + 4 >> 2];\n b[h + 8 >> 2] = b[j + 8 >> 2];\n }\n } else {\n if (la(k) | 0) {\n do ;\n while ((cb(d, g, 0, 0) | 0) != 0);\n }\n if ((g | 0) != (i | 0)) Ja(h);\n }\n S = l;\n return;\n }\n function Vb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0, e = 0;\n d = S;\n S = S + 16 | 0;\n e = d;\n Ub(a, b, e);\n b = cd(a | 0, b | 0, 52) | 0;\n G();\n $a(e, b & 15, c);\n S = d;\n return;\n }\n function Wb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0, g = 0, h = 0;\n g = S;\n S = S + 16 | 0;\n f = g;\n Ub(a, b, f);\n d = cd(a | 0, b | 0, 45) | 0;\n G();\n d = (la(d & 127) | 0) == 0;\n e = cd(a | 0, b | 0, 52) | 0;\n G();\n e = e & 15;\n a: do if (!d) {\n if (e | 0) {\n d = 1;\n while(true){\n h = dd(7, 0, (15 - d | 0) * 3 | 0) | 0;\n if (!((h & a | 0) == 0 & ((G() | 0) & b | 0) == 0)) break a;\n if (d >>> 0 < e >>> 0) d = d + 1 | 0;\n else break;\n }\n }\n ab(f, e, 0, 5, c);\n S = g;\n return;\n }\n while (0);\n eb(f, e, 0, 6, c);\n S = g;\n return;\n }\n function Xb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0, d = 0, e = 0;\n d = cd(a | 0, b | 0, 45) | 0;\n G();\n if (!(la(d & 127) | 0)) {\n d = 2;\n return d | 0;\n }\n d = cd(a | 0, b | 0, 52) | 0;\n G();\n d = d & 15;\n if (!d) {\n d = 5;\n return d | 0;\n }\n c = 1;\n while(true){\n e = dd(7, 0, (15 - c | 0) * 3 | 0) | 0;\n if (!((e & a | 0) == 0 & ((G() | 0) & b | 0) == 0)) {\n c = 2;\n a = 6;\n break;\n }\n if (c >>> 0 < d >>> 0) c = c + 1 | 0;\n else {\n c = 5;\n a = 6;\n break;\n }\n }\n if ((a | 0) == 6) return c | 0;\n return 0;\n }\n function Yb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0;\n m = S;\n S = S + 128 | 0;\n k = m + 112 | 0;\n g = m + 96 | 0;\n l = m;\n f = cd(a | 0, c | 0, 52) | 0;\n G();\n i = f & 15;\n b[k >> 2] = i;\n h = cd(a | 0, c | 0, 45) | 0;\n G();\n h = h & 127;\n a: do if (la(h) | 0) {\n if (i | 0) {\n e = 1;\n while(true){\n j = dd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n if (!((j & a | 0) == 0 & ((G() | 0) & c | 0) == 0)) {\n f = 0;\n break a;\n }\n if (e >>> 0 < i >>> 0) e = e + 1 | 0;\n else break;\n }\n }\n if (!(f & 1)) {\n j = dd(i + 1 | 0, 0, 52) | 0;\n l = G() | 0 | c & -15728641;\n k = dd(7, 0, (14 - i | 0) * 3 | 0) | 0;\n Yb((j | a) & ~k, l & ~(G() | 0), d);\n S = m;\n return;\n } else f = 1;\n } else f = 0;\n while (0);\n Ub(a, c, g);\n if (f) {\n bb(g, k, l);\n j = 5;\n } else {\n fb(g, k, l);\n j = 6;\n }\n b: do if (la(h) | 0) {\n if (!i) e = 20;\n else {\n e = 1;\n while(true){\n h = dd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n if (!((h & a | 0) == 0 & ((G() | 0) & c | 0) == 0)) {\n e = 8;\n break b;\n }\n if (e >>> 0 < i >>> 0) e = e + 1 | 0;\n else {\n e = 20;\n break;\n }\n }\n }\n } else e = 8;\n while (0);\n hd(d | 0, -1, e | 0);\n if (f) {\n f = 0;\n do {\n g = l + (f << 4) | 0;\n db(g, b[k >> 2] | 0);\n g = b[g >> 2] | 0;\n e = 0;\n while(true){\n h = d + (e << 2) | 0;\n i = b[h >> 2] | 0;\n if ((i | 0) == -1 | (i | 0) == (g | 0)) break;\n else e = e + 1 | 0;\n }\n b[h >> 2] = g;\n f = f + 1 | 0;\n }while ((f | 0) != (j | 0));\n } else {\n f = 0;\n do {\n g = l + (f << 4) | 0;\n cb(g, b[k >> 2] | 0, 0, 1);\n g = b[g >> 2] | 0;\n e = 0;\n while(true){\n h = d + (e << 2) | 0;\n i = b[h >> 2] | 0;\n if ((i | 0) == -1 | (i | 0) == (g | 0)) break;\n else e = e + 1 | 0;\n }\n b[h >> 2] = g;\n f = f + 1 | 0;\n }while ((f | 0) != (j | 0));\n }\n S = m;\n return;\n }\n function Zb() {\n return 12;\n }\n function _b(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0;\n dd(a | 0, 0, 52);\n i = G() | 134225919;\n if ((a | 0) < 1) {\n e = 0;\n d = 0;\n do {\n if (la(e) | 0) {\n dd(e | 0, 0, 45);\n h = i | (G() | 0);\n a = c + (d << 3) | 0;\n b[a >> 2] = -1;\n b[a + 4 >> 2] = h;\n d = d + 1 | 0;\n }\n e = e + 1 | 0;\n }while ((e | 0) != 122);\n return;\n }\n h = 0;\n d = 0;\n do {\n if (la(h) | 0) {\n dd(h | 0, 0, 45);\n e = 1;\n f = -1;\n g = i | (G() | 0);\n while(true){\n j = dd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n f = f & ~j;\n g = g & ~(G() | 0);\n if ((e | 0) == (a | 0)) break;\n else e = e + 1 | 0;\n }\n j = c + (d << 3) | 0;\n b[j >> 2] = f;\n b[j + 4 >> 2] = g;\n d = d + 1 | 0;\n }\n h = h + 1 | 0;\n }while ((h | 0) != 122);\n return;\n }\n function $b(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0;\n i = S;\n S = S + 64 | 0;\n h = i;\n if ((a | 0) == (d | 0) & (c | 0) == (e | 0) | (false | (c & 2013265920 | 0) != 134217728 | (false | (e & 2013265920 | 0) != 134217728))) {\n h = 0;\n S = i;\n return h | 0;\n }\n f = cd(a | 0, c | 0, 52) | 0;\n G();\n f = f & 15;\n g = cd(d | 0, e | 0, 52) | 0;\n G();\n if ((f | 0) != (g & 15 | 0)) {\n h = 0;\n S = i;\n return h | 0;\n }\n g = f + -1 | 0;\n if (f >>> 0 > 1 ? (k = Cb(a, c, g) | 0, j = G() | 0, g = Cb(d, e, g) | 0, (k | 0) == (g | 0) & (j | 0) == (G() | 0)) : 0) {\n g = (f ^ 15) * 3 | 0;\n f = cd(a | 0, c | 0, g | 0) | 0;\n G();\n f = f & 7;\n g = cd(d | 0, e | 0, g | 0) | 0;\n G();\n g = g & 7;\n if ((f | 0) == 0 | (g | 0) == 0) {\n k = 1;\n S = i;\n return k | 0;\n }\n if ((b[21136 + (f << 2) >> 2] | 0) == (g | 0)) {\n k = 1;\n S = i;\n return k | 0;\n }\n if ((b[21168 + (f << 2) >> 2] | 0) == (g | 0)) {\n k = 1;\n S = i;\n return k | 0;\n }\n }\n f = h;\n g = f + 56 | 0;\n do {\n b[f >> 2] = 0;\n f = f + 4 | 0;\n }while ((f | 0) < (g | 0));\n $(a, c, 1, h);\n k = h;\n if (((((!((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0) ? (k = h + 8 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 16 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 24 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 32 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 40 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) {\n f = h + 48 | 0;\n f = ((b[f >> 2] | 0) == (d | 0) ? (b[f + 4 >> 2] | 0) == (e | 0) : 0) & 1;\n } else f = 1;\n k = f;\n S = i;\n return k | 0;\n }\n function ac(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0;\n k = S;\n S = S + 16 | 0;\n h = k;\n if (!($b(a, c, d, e) | 0)) {\n i = 0;\n j = 0;\n F(i | 0);\n S = k;\n return j | 0;\n }\n i = c & -2130706433;\n f = (Fb(a, c) | 0) == 0;\n f = f ? 1 : 2;\n while(true){\n b[h >> 2] = 0;\n l = da(a, c, f, h) | 0;\n g = f + 1 | 0;\n if ((l | 0) == (d | 0) & (G() | 0) == (e | 0)) break;\n if (g >>> 0 < 7) f = g;\n else {\n f = 0;\n a = 0;\n j = 6;\n break;\n }\n }\n if ((j | 0) == 6) {\n F(f | 0);\n S = k;\n return a | 0;\n }\n l = dd(f | 0, 0, 56) | 0;\n j = i | (G() | 0) | 268435456;\n l = a | l;\n F(j | 0);\n S = k;\n return l | 0;\n }\n function bc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n c = true & (b & 2013265920 | 0) == 268435456;\n F((c ? b & -2130706433 | 134217728 : 0) | 0);\n return (c ? a : 0) | 0;\n }\n function cc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0;\n e = S;\n S = S + 16 | 0;\n d = e;\n if (!(true & (c & 2013265920 | 0) == 268435456)) {\n c = 0;\n d = 0;\n F(c | 0);\n S = e;\n return d | 0;\n }\n f = cd(a | 0, c | 0, 56) | 0;\n G();\n b[d >> 2] = 0;\n d = da(a, c & -2130706433 | 134217728, f & 7, d) | 0;\n c = G() | 0;\n F(c | 0);\n S = e;\n return d | 0;\n }\n function dc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n if (!(true & (b & 2013265920 | 0) == 268435456)) {\n c = 0;\n return c | 0;\n }\n c = cd(a | 0, b | 0, 56) | 0;\n G();\n switch(c & 7){\n case 0:\n case 7:\n c = 0;\n return c | 0;\n default:\n }\n c = b & -2130706433 | 134217728;\n if (true & (b & 117440512 | 0) == 16777216 & (Fb(a, c) | 0) != 0) {\n c = 0;\n return c | 0;\n }\n c = Bb(a, c) | 0;\n return c | 0;\n }\n function ec(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0;\n g = S;\n S = S + 16 | 0;\n e = g;\n h = true & (c & 2013265920 | 0) == 268435456;\n f = c & -2130706433 | 134217728;\n i = d;\n b[i >> 2] = h ? a : 0;\n b[i + 4 >> 2] = h ? f : 0;\n if (h) {\n c = cd(a | 0, c | 0, 56) | 0;\n G();\n b[e >> 2] = 0;\n a = da(a, f, c & 7, e) | 0;\n c = G() | 0;\n } else {\n a = 0;\n c = 0;\n }\n i = d + 8 | 0;\n b[i >> 2] = a;\n b[i + 4 >> 2] = c;\n S = g;\n return;\n }\n function fc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0;\n f = (Fb(a, c) | 0) == 0;\n c = c & -2130706433;\n e = d;\n b[e >> 2] = f ? a : 0;\n b[e + 4 >> 2] = f ? c | 285212672 : 0;\n e = d + 8 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 301989888;\n e = d + 16 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 318767104;\n e = d + 24 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 335544320;\n e = d + 32 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 352321536;\n d = d + 40 | 0;\n b[d >> 2] = a;\n b[d + 4 >> 2] = c | 369098752;\n return;\n }\n function gc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0;\n h = S;\n S = S + 16 | 0;\n g = h;\n e = cd(a | 0, c | 0, 56) | 0;\n G();\n i = true & (c & 2013265920 | 0) == 268435456;\n f = i ? a : 0;\n a = i ? c & -2130706433 | 134217728 : 0;\n c = Lc(f, a, e & 7) | 0;\n if ((c | 0) == -1) {\n b[d >> 2] = 0;\n S = h;\n return;\n }\n Ub(f, a, g);\n e = cd(f | 0, a | 0, 52) | 0;\n G();\n e = e & 15;\n if (!(Fb(f, a) | 0)) eb(g, e, c, 2, d);\n else ab(g, e, c, 2, d);\n S = h;\n return;\n }\n function hc(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0;\n c = Yc(1, 12) | 0;\n if (!c) H(22691, 22646, 49, 22704);\n d = a + 4 | 0;\n e = b[d >> 2] | 0;\n if (e | 0) {\n e = e + 8 | 0;\n b[e >> 2] = c;\n b[d >> 2] = c;\n return c | 0;\n }\n if (b[a >> 2] | 0) H(22721, 22646, 61, 22744);\n e = a;\n b[e >> 2] = c;\n b[d >> 2] = c;\n return c | 0;\n }\n function ic(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0;\n e = Wc(24) | 0;\n if (!e) H(22758, 22646, 78, 22772);\n b[e >> 2] = b[c >> 2];\n b[e + 4 >> 2] = b[c + 4 >> 2];\n b[e + 8 >> 2] = b[c + 8 >> 2];\n b[e + 12 >> 2] = b[c + 12 >> 2];\n b[e + 16 >> 2] = 0;\n c = a + 4 | 0;\n d = b[c >> 2] | 0;\n if (d | 0) {\n b[d + 16 >> 2] = e;\n b[c >> 2] = e;\n return e | 0;\n }\n if (b[a >> 2] | 0) H(22787, 22646, 82, 22772);\n b[a >> 2] = e;\n b[c >> 2] = e;\n return e | 0;\n }\n function jc(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0;\n if (!a) return;\n e = 1;\n while(true){\n c = b[a >> 2] | 0;\n if (c | 0) do {\n d = b[c >> 2] | 0;\n if (d | 0) do {\n f = d;\n d = b[d + 16 >> 2] | 0;\n Xc(f);\n }while ((d | 0) != 0);\n f = c;\n c = b[c + 8 >> 2] | 0;\n Xc(f);\n }while ((c | 0) != 0);\n c = a;\n a = b[a + 8 >> 2] | 0;\n if (!e) Xc(c);\n if (!a) break;\n else e = 0;\n }\n return;\n }\n function kc(a) {\n a = a | 0;\n var c = 0, d = 0, f = 0, g = 0, h = 0.0, i = 0, j = 0.0, k = 0.0, l = 0, m = 0, n = 0, o = 0, p = 0, r = 0, s = 0.0, t = 0.0, u = 0.0, v = 0.0, w = 0.0, x = 0.0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, I = 0, J = 0, K = 0;\n g = a + 8 | 0;\n if (b[g >> 2] | 0) {\n K = 1;\n return K | 0;\n }\n f = b[a >> 2] | 0;\n if (!f) {\n K = 0;\n return K | 0;\n }\n c = f;\n d = 0;\n do {\n d = d + 1 | 0;\n c = b[c + 8 >> 2] | 0;\n }while ((c | 0) != 0);\n if (d >>> 0 < 2) {\n K = 0;\n return K | 0;\n }\n I = Wc(d << 2) | 0;\n if (!I) H(22807, 22646, 317, 22826);\n G = Wc(d << 5) | 0;\n if (!G) H(22848, 22646, 321, 22826);\n b[a >> 2] = 0;\n z = a + 4 | 0;\n b[z >> 2] = 0;\n b[g >> 2] = 0;\n d = 0;\n F = 0;\n y = 0;\n n = 0;\n a: while(true){\n m = b[f >> 2] | 0;\n if (m) {\n h = 0.0;\n i = m;\n do {\n k = +e[i + 8 >> 3];\n c = i;\n i = b[i + 16 >> 2] | 0;\n l = (i | 0) == 0;\n g = l ? m : i;\n j = +e[g + 8 >> 3];\n if (+q(+(k - j)) > 3.141592653589793) {\n K = 14;\n break;\n }\n h = h + (j - k) * (+e[c >> 3] + +e[g >> 3]);\n }while (!l);\n if ((K | 0) == 14) {\n K = 0;\n h = 0.0;\n c = m;\n do {\n x = +e[c + 8 >> 3];\n E = c + 16 | 0;\n D = b[E >> 2] | 0;\n D = (D | 0) == 0 ? m : D;\n w = +e[D + 8 >> 3];\n h = h + (+e[c >> 3] + +e[D >> 3]) * ((w < 0.0 ? w + 6.283185307179586 : w) - (x < 0.0 ? x + 6.283185307179586 : x));\n c = b[((c | 0) == 0 ? f : E) >> 2] | 0;\n }while ((c | 0) != 0);\n }\n if (h > 0.0) {\n b[I + (F << 2) >> 2] = f;\n F = F + 1 | 0;\n g = y;\n c = n;\n } else K = 19;\n } else K = 19;\n if ((K | 0) == 19) {\n K = 0;\n do if (!d) {\n if (!n) {\n if (!(b[a >> 2] | 0)) {\n g = z;\n i = a;\n c = f;\n d = a;\n break;\n } else {\n K = 27;\n break a;\n }\n } else {\n g = z;\n i = n + 8 | 0;\n c = f;\n d = a;\n break;\n }\n } else {\n c = d + 8 | 0;\n if (b[c >> 2] | 0) {\n K = 21;\n break a;\n }\n d = Yc(1, 12) | 0;\n if (!d) {\n K = 23;\n break a;\n }\n b[c >> 2] = d;\n g = d + 4 | 0;\n i = d;\n c = n;\n }\n while (0);\n b[i >> 2] = f;\n b[g >> 2] = f;\n i = G + (y << 5) | 0;\n l = b[f >> 2] | 0;\n if (l) {\n m = G + (y << 5) + 8 | 0;\n e[m >> 3] = 1797693134862315708145274.0e284;\n n = G + (y << 5) + 24 | 0;\n e[n >> 3] = 1797693134862315708145274.0e284;\n e[i >> 3] = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n o = G + (y << 5) + 16 | 0;\n e[o >> 3] = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n u = 1797693134862315708145274.0e284;\n v = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n g = 0;\n p = l;\n k = 1797693134862315708145274.0e284;\n s = 1797693134862315708145274.0e284;\n t = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n j = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n while(true){\n h = +e[p >> 3];\n x = +e[p + 8 >> 3];\n p = b[p + 16 >> 2] | 0;\n r = (p | 0) == 0;\n w = +e[(r ? l : p) + 8 >> 3];\n if (h < k) {\n e[m >> 3] = h;\n k = h;\n }\n if (x < s) {\n e[n >> 3] = x;\n s = x;\n }\n if (h > t) e[i >> 3] = h;\n else h = t;\n if (x > j) {\n e[o >> 3] = x;\n j = x;\n }\n u = x > 0.0 & x < u ? x : u;\n v = x < 0.0 & x > v ? x : v;\n g = g | +q(+(x - w)) > 3.141592653589793;\n if (r) break;\n else t = h;\n }\n if (g) {\n e[o >> 3] = v;\n e[n >> 3] = u;\n }\n } else {\n b[i >> 2] = 0;\n b[i + 4 >> 2] = 0;\n b[i + 8 >> 2] = 0;\n b[i + 12 >> 2] = 0;\n b[i + 16 >> 2] = 0;\n b[i + 20 >> 2] = 0;\n b[i + 24 >> 2] = 0;\n b[i + 28 >> 2] = 0;\n }\n g = y + 1 | 0;\n }\n E = f + 8 | 0;\n f = b[E >> 2] | 0;\n b[E >> 2] = 0;\n if (!f) {\n K = 45;\n break;\n } else {\n y = g;\n n = c;\n }\n }\n if ((K | 0) == 21) H(22624, 22646, 35, 22658);\n else if ((K | 0) == 23) H(22678, 22646, 37, 22658);\n else if ((K | 0) == 27) H(22721, 22646, 61, 22744);\n else if ((K | 0) == 45) {\n b: do if ((F | 0) > 0) {\n E = (g | 0) == 0;\n C = g << 2;\n D = (a | 0) == 0;\n B = 0;\n c = 0;\n while(true){\n A = b[I + (B << 2) >> 2] | 0;\n if (!E) {\n y = Wc(C) | 0;\n if (!y) {\n K = 50;\n break;\n }\n z = Wc(C) | 0;\n if (!z) {\n K = 52;\n break;\n }\n c: do if (!D) {\n g = 0;\n d = 0;\n i = a;\n while(true){\n f = G + (g << 5) | 0;\n if (lc(b[i >> 2] | 0, f, b[A >> 2] | 0) | 0) {\n b[y + (d << 2) >> 2] = i;\n b[z + (d << 2) >> 2] = f;\n r = d + 1 | 0;\n } else r = d;\n i = b[i + 8 >> 2] | 0;\n if (!i) break;\n else {\n g = g + 1 | 0;\n d = r;\n }\n }\n if ((r | 0) > 0) {\n f = b[y >> 2] | 0;\n if ((r | 0) == 1) d = f;\n else {\n o = 0;\n p = -1;\n d = f;\n n = f;\n while(true){\n l = b[n >> 2] | 0;\n f = 0;\n i = 0;\n while(true){\n g = b[b[y + (i << 2) >> 2] >> 2] | 0;\n if ((g | 0) == (l | 0)) m = f;\n else m = f + ((lc(g, b[z + (i << 2) >> 2] | 0, b[l >> 2] | 0) | 0) & 1) | 0;\n i = i + 1 | 0;\n if ((i | 0) == (r | 0)) break;\n else f = m;\n }\n g = (m | 0) > (p | 0);\n d = g ? n : d;\n f = o + 1 | 0;\n if ((f | 0) == (r | 0)) break c;\n o = f;\n p = g ? m : p;\n n = b[y + (f << 2) >> 2] | 0;\n }\n }\n } else d = 0;\n } else d = 0;\n while (0);\n Xc(y);\n Xc(z);\n if (d) {\n g = d + 4 | 0;\n f = b[g >> 2] | 0;\n if (!f) {\n if (b[d >> 2] | 0) {\n K = 70;\n break;\n }\n } else d = f + 8 | 0;\n b[d >> 2] = A;\n b[g >> 2] = A;\n } else K = 73;\n } else K = 73;\n if ((K | 0) == 73) {\n K = 0;\n c = b[A >> 2] | 0;\n if (c | 0) do {\n z = c;\n c = b[c + 16 >> 2] | 0;\n Xc(z);\n }while ((c | 0) != 0);\n Xc(A);\n c = 2;\n }\n B = B + 1 | 0;\n if ((B | 0) >= (F | 0)) {\n J = c;\n break b;\n }\n }\n if ((K | 0) == 50) H(22863, 22646, 249, 22882);\n else if ((K | 0) == 52) H(22901, 22646, 252, 22882);\n else if ((K | 0) == 70) H(22721, 22646, 61, 22744);\n } else J = 0;\n while (0);\n Xc(I);\n Xc(G);\n K = J;\n return K | 0;\n }\n return 0;\n }\n function lc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0.0, g = 0.0, h = 0.0, i = 0.0, j = 0.0, k = 0.0, l = 0.0, m = 0;\n if (!(xa(c, d) | 0)) {\n a = 0;\n return a | 0;\n }\n c = wa(c) | 0;\n l = +e[d >> 3];\n f = +e[d + 8 >> 3];\n f = c & f < 0.0 ? f + 6.283185307179586 : f;\n a = b[a >> 2] | 0;\n if (!a) {\n a = 0;\n return a | 0;\n }\n if (c) {\n c = 0;\n d = a;\n a: while(true){\n while(true){\n i = +e[d >> 3];\n k = +e[d + 8 >> 3];\n d = d + 16 | 0;\n m = b[d >> 2] | 0;\n m = (m | 0) == 0 ? a : m;\n h = +e[m >> 3];\n g = +e[m + 8 >> 3];\n if (i > h) {\n j = i;\n i = k;\n } else {\n j = h;\n h = i;\n i = g;\n g = k;\n }\n if (!(l < h | l > j)) break;\n d = b[d >> 2] | 0;\n if (!d) {\n d = 22;\n break a;\n }\n }\n k = g < 0.0 ? g + 6.283185307179586 : g;\n i = i < 0.0 ? i + 6.283185307179586 : i;\n f = i == f | k == f ? f + -0.0000000000000002220446049250313 : f;\n k = k + (l - h) / (j - h) * (i - k);\n if ((k < 0.0 ? k + 6.283185307179586 : k) > f) c = c ^ 1;\n d = b[d >> 2] | 0;\n if (!d) {\n d = 22;\n break;\n }\n }\n if ((d | 0) == 22) return c | 0;\n } else {\n c = 0;\n d = a;\n b: while(true){\n while(true){\n i = +e[d >> 3];\n k = +e[d + 8 >> 3];\n d = d + 16 | 0;\n m = b[d >> 2] | 0;\n m = (m | 0) == 0 ? a : m;\n h = +e[m >> 3];\n g = +e[m + 8 >> 3];\n if (i > h) {\n j = i;\n i = k;\n } else {\n j = h;\n h = i;\n i = g;\n g = k;\n }\n if (!(l < h | l > j)) break;\n d = b[d >> 2] | 0;\n if (!d) {\n d = 22;\n break b;\n }\n }\n f = i == f | g == f ? f + -0.0000000000000002220446049250313 : f;\n if (g + (l - h) / (j - h) * (i - g) > f) c = c ^ 1;\n d = b[d >> 2] | 0;\n if (!d) {\n d = 22;\n break;\n }\n }\n if ((d | 0) == 22) return c | 0;\n }\n return 0;\n }\n function mc(c, d, e, f, g) {\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n g = g | 0;\n var h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0;\n u = S;\n S = S + 32 | 0;\n t = u + 16 | 0;\n s = u;\n h = cd(c | 0, d | 0, 52) | 0;\n G();\n h = h & 15;\n p = cd(e | 0, f | 0, 52) | 0;\n G();\n if ((h | 0) != (p & 15 | 0)) {\n t = 1;\n S = u;\n return t | 0;\n }\n l = cd(c | 0, d | 0, 45) | 0;\n G();\n l = l & 127;\n m = cd(e | 0, f | 0, 45) | 0;\n G();\n m = m & 127;\n p = (l | 0) != (m | 0);\n if (p) {\n j = ta(l, m) | 0;\n if ((j | 0) == 7) {\n t = 2;\n S = u;\n return t | 0;\n }\n k = ta(m, l) | 0;\n if ((k | 0) == 7) H(22925, 22949, 151, 22959);\n else {\n q = j;\n i = k;\n }\n } else {\n q = 0;\n i = 0;\n }\n n = la(l) | 0;\n o = la(m) | 0;\n b[t >> 2] = 0;\n b[t + 4 >> 2] = 0;\n b[t + 8 >> 2] = 0;\n b[t + 12 >> 2] = 0;\n do if (!q) {\n Tb(e, f, t);\n if ((n | 0) != 0 & (o | 0) != 0) {\n if ((m | 0) != (l | 0)) H(23077, 22949, 243, 22959);\n i = Lb(c, d) | 0;\n h = Lb(e, f) | 0;\n if (!(a[22032 + (i * 7 | 0) + h >> 0] | 0)) {\n i = b[21200 + (i * 28 | 0) + (h << 2) >> 2] | 0;\n if ((i | 0) > 0) {\n j = t + 4 | 0;\n h = 0;\n do {\n Oa(j);\n h = h + 1 | 0;\n }while ((h | 0) != (i | 0));\n r = 50;\n } else r = 50;\n } else h = 5;\n } else r = 50;\n } else {\n m = b[4304 + (l * 28 | 0) + (q << 2) >> 2] | 0;\n j = (m | 0) > 0;\n if (!o) {\n if (j) {\n l = 0;\n k = e;\n j = f;\n do {\n k = Pb(k, j) | 0;\n j = G() | 0;\n i = Qa(i) | 0;\n l = l + 1 | 0;\n }while ((l | 0) != (m | 0));\n m = i;\n l = k;\n k = j;\n } else {\n m = i;\n l = e;\n k = f;\n }\n } else if (j) {\n l = 0;\n k = e;\n j = f;\n do {\n k = Ob(k, j) | 0;\n j = G() | 0;\n i = Qa(i) | 0;\n if ((i | 0) == 1) i = Qa(1) | 0;\n l = l + 1 | 0;\n }while ((l | 0) != (m | 0));\n m = i;\n l = k;\n k = j;\n } else {\n m = i;\n l = e;\n k = f;\n }\n Tb(l, k, t);\n if (!p) H(22972, 22949, 181, 22959);\n j = (n | 0) != 0;\n i = (o | 0) != 0;\n if (j & i) H(22999, 22949, 182, 22959);\n if (!j) {\n if (i) {\n i = Lb(l, k) | 0;\n if (a[22032 + (i * 7 | 0) + m >> 0] | 0) {\n h = 4;\n break;\n }\n l = 0;\n k = b[21200 + (m * 28 | 0) + (i << 2) >> 2] | 0;\n r = 26;\n } else i = 0;\n } else {\n i = Lb(c, d) | 0;\n if (a[22032 + (i * 7 | 0) + q >> 0] | 0) {\n h = 3;\n break;\n }\n k = b[21200 + (i * 28 | 0) + (q << 2) >> 2] | 0;\n l = k;\n r = 26;\n }\n if ((r | 0) == 26) {\n if ((k | 0) <= -1) H(23030, 22949, 212, 22959);\n if ((l | 0) <= -1) H(23053, 22949, 213, 22959);\n if ((k | 0) > 0) {\n j = t + 4 | 0;\n i = 0;\n do {\n Oa(j);\n i = i + 1 | 0;\n }while ((i | 0) != (k | 0));\n i = l;\n } else i = l;\n }\n b[s >> 2] = 0;\n b[s + 4 >> 2] = 0;\n b[s + 8 >> 2] = 0;\n Ma(s, q);\n if (h | 0) while(true){\n if (!(Rb(h) | 0)) La(s);\n else Ka(s);\n if ((h | 0) > 1) h = h + -1 | 0;\n else break;\n }\n if ((i | 0) > 0) {\n h = 0;\n do {\n Oa(s);\n h = h + 1 | 0;\n }while ((h | 0) != (i | 0));\n }\n r = t + 4 | 0;\n Ea(r, s, r);\n Ca(r);\n r = 50;\n }\n while (0);\n if ((r | 0) == 50) {\n h = t + 4 | 0;\n b[g >> 2] = b[h >> 2];\n b[g + 4 >> 2] = b[h + 4 >> 2];\n b[g + 8 >> 2] = b[h + 8 >> 2];\n h = 0;\n }\n t = h;\n S = u;\n return t | 0;\n }\n function nc(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0;\n p = S;\n S = S + 48 | 0;\n h = p + 36 | 0;\n i = p + 24 | 0;\n j = p + 12 | 0;\n k = p;\n g = cd(a | 0, c | 0, 52) | 0;\n G();\n g = g & 15;\n n = cd(a | 0, c | 0, 45) | 0;\n G();\n n = n & 127;\n l = la(n) | 0;\n dd(g | 0, 0, 52);\n r = G() | 134225919;\n q = e;\n b[q >> 2] = -1;\n b[q + 4 >> 2] = r;\n if (!g) {\n if ((b[d >> 2] | 0) > 1) {\n r = 1;\n S = p;\n return r | 0;\n }\n if ((b[d + 4 >> 2] | 0) > 1) {\n r = 1;\n S = p;\n return r | 0;\n }\n if ((b[d + 8 >> 2] | 0) > 1) {\n r = 1;\n S = p;\n return r | 0;\n }\n f = sa(n, Ha(d) | 0) | 0;\n if ((f | 0) == 127) {\n r = 1;\n S = p;\n return r | 0;\n }\n o = dd(f | 0, 0, 45) | 0;\n q = G() | 0;\n n = e;\n q = b[n + 4 >> 2] & -1040385 | q;\n r = e;\n b[r >> 2] = b[n >> 2] | o;\n b[r + 4 >> 2] = q;\n r = 0;\n S = p;\n return r | 0;\n }\n b[h >> 2] = b[d >> 2];\n b[h + 4 >> 2] = b[d + 4 >> 2];\n b[h + 8 >> 2] = b[d + 8 >> 2];\n while(true){\n b[i >> 2] = b[h >> 2];\n b[i + 4 >> 2] = b[h + 4 >> 2];\n b[i + 8 >> 2] = b[h + 8 >> 2];\n if (!(Rb(g) | 0)) {\n Ja(h);\n b[j >> 2] = b[h >> 2];\n b[j + 4 >> 2] = b[h + 4 >> 2];\n b[j + 8 >> 2] = b[h + 8 >> 2];\n La(j);\n } else {\n Ia(h);\n b[j >> 2] = b[h >> 2];\n b[j + 4 >> 2] = b[h + 4 >> 2];\n b[j + 8 >> 2] = b[h + 8 >> 2];\n Ka(j);\n }\n Fa(i, j, k);\n Ca(k);\n q = e;\n s = b[q >> 2] | 0;\n q = b[q + 4 >> 2] | 0;\n t = (15 - g | 0) * 3 | 0;\n d = dd(7, 0, t | 0) | 0;\n q = q & ~(G() | 0);\n t = dd(Ha(k) | 0, 0, t | 0) | 0;\n q = G() | 0 | q;\n r = e;\n b[r >> 2] = t | s & ~d;\n b[r + 4 >> 2] = q;\n if ((g | 0) > 1) g = g + -1 | 0;\n else break;\n }\n a: do if (((b[h >> 2] | 0) <= 1 ? (b[h + 4 >> 2] | 0) <= 1 : 0) ? (b[h + 8 >> 2] | 0) <= 1 : 0) {\n g = Ha(h) | 0;\n i = sa(n, g) | 0;\n if ((i | 0) == 127) k = 0;\n else k = la(i) | 0;\n b: do if (!g) {\n if ((l | 0) != 0 & (k | 0) != 0) {\n t = Lb(a, c) | 0;\n g = e;\n g = 21408 + (t * 28 | 0) + ((Lb(b[g >> 2] | 0, b[g + 4 >> 2] | 0) | 0) << 2) | 0;\n g = b[g >> 2] | 0;\n if ((g | 0) <= -1) H(23201, 22949, 433, 23134);\n if (!g) {\n f = i;\n g = 55;\n } else {\n h = e;\n f = 0;\n d = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n do {\n d = Nb(d, h) | 0;\n h = G() | 0;\n t = e;\n b[t >> 2] = d;\n b[t + 4 >> 2] = h;\n f = f + 1 | 0;\n }while ((f | 0) < (g | 0));\n f = i;\n g = 54;\n }\n } else {\n f = i;\n g = 54;\n }\n } else {\n if (l) {\n h = 21408 + ((Lb(a, c) | 0) * 28 | 0) + (g << 2) | 0;\n h = b[h >> 2] | 0;\n if ((h | 0) > 0) {\n d = 0;\n do {\n g = Pa(g) | 0;\n d = d + 1 | 0;\n }while ((d | 0) != (h | 0));\n }\n if ((g | 0) == 1) {\n f = 3;\n break a;\n }\n d = sa(n, g) | 0;\n if ((d | 0) == 127) H(23104, 22949, 376, 23134);\n if (!(la(d) | 0)) {\n o = h;\n m = g;\n f = d;\n } else H(23147, 22949, 377, 23134);\n } else {\n o = 0;\n m = g;\n f = i;\n }\n j = b[4304 + (n * 28 | 0) + (m << 2) >> 2] | 0;\n if ((j | 0) <= -1) H(23178, 22949, 384, 23134);\n if (!k) {\n if ((o | 0) <= -1) H(23030, 22949, 417, 23134);\n if (o | 0) {\n h = e;\n g = 0;\n d = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n do {\n d = Nb(d, h) | 0;\n h = G() | 0;\n t = e;\n b[t >> 2] = d;\n b[t + 4 >> 2] = h;\n g = g + 1 | 0;\n }while ((g | 0) < (o | 0));\n }\n if ((j | 0) <= 0) {\n g = 54;\n break;\n }\n h = e;\n g = 0;\n d = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n while(true){\n d = Nb(d, h) | 0;\n h = G() | 0;\n t = e;\n b[t >> 2] = d;\n b[t + 4 >> 2] = h;\n g = g + 1 | 0;\n if ((g | 0) == (j | 0)) {\n g = 54;\n break b;\n }\n }\n }\n i = ta(f, n) | 0;\n if ((i | 0) == 7) H(22925, 22949, 393, 23134);\n g = e;\n d = b[g >> 2] | 0;\n g = b[g + 4 >> 2] | 0;\n if ((j | 0) > 0) {\n h = 0;\n do {\n d = Nb(d, g) | 0;\n g = G() | 0;\n t = e;\n b[t >> 2] = d;\n b[t + 4 >> 2] = g;\n h = h + 1 | 0;\n }while ((h | 0) != (j | 0));\n }\n d = Lb(d, g) | 0;\n t = ma(f) | 0;\n d = b[(t ? 21824 : 21616) + (i * 28 | 0) + (d << 2) >> 2] | 0;\n if ((d | 0) <= -1) H(23030, 22949, 412, 23134);\n if (!d) g = 54;\n else {\n i = e;\n g = 0;\n h = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n do {\n h = Mb(h, i) | 0;\n i = G() | 0;\n t = e;\n b[t >> 2] = h;\n b[t + 4 >> 2] = i;\n g = g + 1 | 0;\n }while ((g | 0) < (d | 0));\n g = 54;\n }\n }\n while (0);\n if ((g | 0) == 54) {\n if (k) g = 55;\n }\n if ((g | 0) == 55) {\n t = e;\n if ((Lb(b[t >> 2] | 0, b[t + 4 >> 2] | 0) | 0) == 1) {\n f = 4;\n break;\n }\n }\n t = e;\n r = b[t >> 2] | 0;\n t = b[t + 4 >> 2] & -1040385;\n s = dd(f | 0, 0, 45) | 0;\n t = t | (G() | 0);\n f = e;\n b[f >> 2] = r | s;\n b[f + 4 >> 2] = t;\n f = 0;\n } else f = 2;\n while (0);\n t = f;\n S = p;\n return t | 0;\n }\n function oc(a, b, c, d, e) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0;\n g = S;\n S = S + 16 | 0;\n f = g;\n a = mc(a, b, c, d, f) | 0;\n if (!a) {\n Ua(f, e);\n a = 0;\n }\n S = g;\n return a | 0;\n }\n function pc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0;\n e = S;\n S = S + 16 | 0;\n f = e;\n Va(c, f);\n d = nc(a, b, f, d) | 0;\n S = e;\n return d | 0;\n }\n function qc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0;\n g = S;\n S = S + 32 | 0;\n e = g + 12 | 0;\n f = g;\n if ((mc(a, b, a, b, e) | 0) == 0 ? (mc(a, b, c, d, f) | 0) == 0 : 0) a = Ta(e, f) | 0;\n else a = -1;\n S = g;\n return a | 0;\n }\n function rc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0;\n g = S;\n S = S + 32 | 0;\n e = g + 12 | 0;\n f = g;\n if ((mc(a, b, a, b, e) | 0) == 0 ? (mc(a, b, c, d, f) | 0) == 0 : 0) a = Ta(e, f) | 0;\n else a = -1;\n S = g;\n return (a >>> 31 ^ 1) + a | 0;\n }\n function sc(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0, h = 0, i = 0.0, j = 0.0, k = 0, l = 0, m = 0, n = 0, o = 0.0, p = 0.0, r = 0.0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0.0;\n x = S;\n S = S + 48 | 0;\n g = x + 24 | 0;\n h = x + 12 | 0;\n w = x;\n if ((mc(a, c, a, c, g) | 0) == 0 ? (mc(a, c, d, e, h) | 0) == 0 : 0) {\n v = Ta(g, h) | 0;\n if ((v | 0) < 0) {\n w = v;\n S = x;\n return w | 0;\n }\n b[g >> 2] = 0;\n b[g + 4 >> 2] = 0;\n b[g + 8 >> 2] = 0;\n b[h >> 2] = 0;\n b[h + 4 >> 2] = 0;\n b[h + 8 >> 2] = 0;\n mc(a, c, a, c, g);\n mc(a, c, d, e, h);\n Wa(g);\n Wa(h);\n if (!v) {\n e = g + 4 | 0;\n n = g + 8 | 0;\n s = e;\n t = n;\n u = g;\n d = b[g >> 2] | 0;\n e = b[e >> 2] | 0;\n g = b[n >> 2] | 0;\n p = 0.0;\n r = 0.0;\n o = 0.0;\n } else {\n l = b[g >> 2] | 0;\n o = +(v | 0);\n s = g + 4 | 0;\n m = b[s >> 2] | 0;\n t = g + 8 | 0;\n n = b[t >> 2] | 0;\n u = g;\n d = l;\n e = m;\n g = n;\n p = +((b[h >> 2] | 0) - l | 0) / o;\n r = +((b[h + 4 >> 2] | 0) - m | 0) / o;\n o = +((b[h + 8 >> 2] | 0) - n | 0) / o;\n }\n b[w >> 2] = d;\n n = w + 4 | 0;\n b[n >> 2] = e;\n m = w + 8 | 0;\n b[m >> 2] = g;\n l = 0;\n while(true){\n j = +(l | 0);\n y = p * j + +(d | 0);\n i = r * j + +(b[s >> 2] | 0);\n j = o * j + +(b[t >> 2] | 0);\n e = ~~+fd(+y);\n h = ~~+fd(+i);\n d = ~~+fd(+j);\n y = +q(+(+(e | 0) - y));\n i = +q(+(+(h | 0) - i));\n j = +q(+(+(d | 0) - j));\n do if (!(y > i & y > j)) {\n k = 0 - e | 0;\n if (i > j) {\n g = k - d | 0;\n break;\n } else {\n g = h;\n d = k - h | 0;\n break;\n }\n } else {\n e = 0 - (h + d) | 0;\n g = h;\n }\n while (0);\n b[w >> 2] = e;\n b[n >> 2] = g;\n b[m >> 2] = d;\n Xa(w);\n nc(a, c, w, f + (l << 3) | 0);\n if ((l | 0) == (v | 0)) break;\n l = l + 1 | 0;\n d = b[u >> 2] | 0;\n }\n w = 0;\n S = x;\n return w | 0;\n }\n w = -1;\n S = x;\n return w | 0;\n }\n function tc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n if (!b) {\n c = 1;\n return c | 0;\n }\n c = a;\n a = 1;\n do {\n a = B((b & 1 | 0) == 0 ? 1 : c, a) | 0;\n b = b >> 1;\n c = B(c, c) | 0;\n }while ((b | 0) != 0);\n return a | 0;\n }\n function uc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0.0, g = 0.0, h = 0.0, i = 0.0, j = 0.0, k = 0.0, l = 0, m = 0, n = 0, o = 0.0;\n if (!(xa(c, d) | 0)) {\n n = 0;\n return n | 0;\n }\n c = wa(c) | 0;\n o = +e[d >> 3];\n f = +e[d + 8 >> 3];\n f = c & f < 0.0 ? f + 6.283185307179586 : f;\n n = b[a >> 2] | 0;\n if ((n | 0) <= 0) {\n n = 0;\n return n | 0;\n }\n m = b[a + 4 >> 2] | 0;\n if (c) {\n c = 0;\n d = -1;\n a = 0;\n a: while(true){\n l = a;\n while(true){\n i = +e[m + (l << 4) >> 3];\n k = +e[m + (l << 4) + 8 >> 3];\n a = (d + 2 | 0) % (n | 0) | 0;\n h = +e[m + (a << 4) >> 3];\n g = +e[m + (a << 4) + 8 >> 3];\n if (i > h) {\n j = i;\n i = k;\n } else {\n j = h;\n h = i;\n i = g;\n g = k;\n }\n if (!(o < h | o > j)) break;\n d = l + 1 | 0;\n if ((d | 0) < (n | 0)) {\n a = l;\n l = d;\n d = a;\n } else {\n d = 22;\n break a;\n }\n }\n k = g < 0.0 ? g + 6.283185307179586 : g;\n i = i < 0.0 ? i + 6.283185307179586 : i;\n f = i == f | k == f ? f + -0.0000000000000002220446049250313 : f;\n k = k + (o - h) / (j - h) * (i - k);\n if ((k < 0.0 ? k + 6.283185307179586 : k) > f) c = c ^ 1;\n a = l + 1 | 0;\n if ((a | 0) >= (n | 0)) {\n d = 22;\n break;\n } else d = l;\n }\n if ((d | 0) == 22) return c | 0;\n } else {\n c = 0;\n d = -1;\n a = 0;\n b: while(true){\n l = a;\n while(true){\n i = +e[m + (l << 4) >> 3];\n k = +e[m + (l << 4) + 8 >> 3];\n a = (d + 2 | 0) % (n | 0) | 0;\n h = +e[m + (a << 4) >> 3];\n g = +e[m + (a << 4) + 8 >> 3];\n if (i > h) {\n j = i;\n i = k;\n } else {\n j = h;\n h = i;\n i = g;\n g = k;\n }\n if (!(o < h | o > j)) break;\n d = l + 1 | 0;\n if ((d | 0) < (n | 0)) {\n a = l;\n l = d;\n d = a;\n } else {\n d = 22;\n break b;\n }\n }\n f = i == f | g == f ? f + -0.0000000000000002220446049250313 : f;\n if (g + (o - h) / (j - h) * (i - g) > f) c = c ^ 1;\n a = l + 1 | 0;\n if ((a | 0) >= (n | 0)) {\n d = 22;\n break;\n } else d = l;\n }\n if ((d | 0) == 22) return c | 0;\n }\n return 0;\n }\n function vc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0, f = 0.0, g = 0.0, h = 0.0, i = 0.0, j = 0.0, k = 0.0, l = 0.0, m = 0.0, n = 0, o = 0, p = 0, r = 0, s = 0, t = 0, u = 0, v = 0;\n r = b[a >> 2] | 0;\n if (!r) {\n b[c >> 2] = 0;\n b[c + 4 >> 2] = 0;\n b[c + 8 >> 2] = 0;\n b[c + 12 >> 2] = 0;\n b[c + 16 >> 2] = 0;\n b[c + 20 >> 2] = 0;\n b[c + 24 >> 2] = 0;\n b[c + 28 >> 2] = 0;\n return;\n }\n s = c + 8 | 0;\n e[s >> 3] = 1797693134862315708145274.0e284;\n t = c + 24 | 0;\n e[t >> 3] = 1797693134862315708145274.0e284;\n e[c >> 3] = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n u = c + 16 | 0;\n e[u >> 3] = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n if ((r | 0) <= 0) return;\n o = b[a + 4 >> 2] | 0;\n l = 1797693134862315708145274.0e284;\n m = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n n = 0;\n a = -1;\n h = 1797693134862315708145274.0e284;\n i = 1797693134862315708145274.0e284;\n k = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n f = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n p = 0;\n while(true){\n d = +e[o + (p << 4) >> 3];\n j = +e[o + (p << 4) + 8 >> 3];\n a = a + 2 | 0;\n g = +e[o + (((a | 0) == (r | 0) ? 0 : a) << 4) + 8 >> 3];\n if (d < h) {\n e[s >> 3] = d;\n h = d;\n }\n if (j < i) {\n e[t >> 3] = j;\n i = j;\n }\n if (d > k) e[c >> 3] = d;\n else d = k;\n if (j > f) {\n e[u >> 3] = j;\n f = j;\n }\n l = j > 0.0 & j < l ? j : l;\n m = j < 0.0 & j > m ? j : m;\n n = n | +q(+(j - g)) > 3.141592653589793;\n a = p + 1 | 0;\n if ((a | 0) == (r | 0)) break;\n else {\n v = p;\n k = d;\n p = a;\n a = v;\n }\n }\n if (!n) return;\n e[u >> 3] = m;\n e[t >> 3] = l;\n return;\n }\n function wc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, f = 0, g = 0, h = 0.0, i = 0.0, j = 0.0, k = 0.0, l = 0.0, m = 0.0, n = 0.0, o = 0.0, p = 0.0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0;\n r = b[a >> 2] | 0;\n if (r) {\n s = c + 8 | 0;\n e[s >> 3] = 1797693134862315708145274.0e284;\n t = c + 24 | 0;\n e[t >> 3] = 1797693134862315708145274.0e284;\n e[c >> 3] = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n u = c + 16 | 0;\n e[u >> 3] = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n if ((r | 0) > 0) {\n g = b[a + 4 >> 2] | 0;\n o = 1797693134862315708145274.0e284;\n p = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n f = 0;\n d = -1;\n k = 1797693134862315708145274.0e284;\n l = 1797693134862315708145274.0e284;\n n = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n i = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n v = 0;\n while(true){\n h = +e[g + (v << 4) >> 3];\n m = +e[g + (v << 4) + 8 >> 3];\n z = d + 2 | 0;\n j = +e[g + (((z | 0) == (r | 0) ? 0 : z) << 4) + 8 >> 3];\n if (h < k) {\n e[s >> 3] = h;\n k = h;\n }\n if (m < l) {\n e[t >> 3] = m;\n l = m;\n }\n if (h > n) e[c >> 3] = h;\n else h = n;\n if (m > i) {\n e[u >> 3] = m;\n i = m;\n }\n o = m > 0.0 & m < o ? m : o;\n p = m < 0.0 & m > p ? m : p;\n f = f | +q(+(m - j)) > 3.141592653589793;\n d = v + 1 | 0;\n if ((d | 0) == (r | 0)) break;\n else {\n z = v;\n n = h;\n v = d;\n d = z;\n }\n }\n if (f) {\n e[u >> 3] = p;\n e[t >> 3] = o;\n }\n }\n } else {\n b[c >> 2] = 0;\n b[c + 4 >> 2] = 0;\n b[c + 8 >> 2] = 0;\n b[c + 12 >> 2] = 0;\n b[c + 16 >> 2] = 0;\n b[c + 20 >> 2] = 0;\n b[c + 24 >> 2] = 0;\n b[c + 28 >> 2] = 0;\n }\n z = a + 8 | 0;\n d = b[z >> 2] | 0;\n if ((d | 0) <= 0) return;\n y = a + 12 | 0;\n x = 0;\n do {\n g = b[y >> 2] | 0;\n f = x;\n x = x + 1 | 0;\n t = c + (x << 5) | 0;\n u = b[g + (f << 3) >> 2] | 0;\n if (u) {\n v = c + (x << 5) + 8 | 0;\n e[v >> 3] = 1797693134862315708145274.0e284;\n a = c + (x << 5) + 24 | 0;\n e[a >> 3] = 1797693134862315708145274.0e284;\n e[t >> 3] = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n w = c + (x << 5) + 16 | 0;\n e[w >> 3] = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n if ((u | 0) > 0) {\n r = b[g + (f << 3) + 4 >> 2] | 0;\n o = 1797693134862315708145274.0e284;\n p = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n g = 0;\n f = -1;\n s = 0;\n k = 1797693134862315708145274.0e284;\n l = 1797693134862315708145274.0e284;\n m = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n i = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n while(true){\n h = +e[r + (s << 4) >> 3];\n n = +e[r + (s << 4) + 8 >> 3];\n f = f + 2 | 0;\n j = +e[r + (((f | 0) == (u | 0) ? 0 : f) << 4) + 8 >> 3];\n if (h < k) {\n e[v >> 3] = h;\n k = h;\n }\n if (n < l) {\n e[a >> 3] = n;\n l = n;\n }\n if (h > m) e[t >> 3] = h;\n else h = m;\n if (n > i) {\n e[w >> 3] = n;\n i = n;\n }\n o = n > 0.0 & n < o ? n : o;\n p = n < 0.0 & n > p ? n : p;\n g = g | +q(+(n - j)) > 3.141592653589793;\n f = s + 1 | 0;\n if ((f | 0) == (u | 0)) break;\n else {\n A = s;\n s = f;\n m = h;\n f = A;\n }\n }\n if (g) {\n e[w >> 3] = p;\n e[a >> 3] = o;\n }\n }\n } else {\n b[t >> 2] = 0;\n b[t + 4 >> 2] = 0;\n b[t + 8 >> 2] = 0;\n b[t + 12 >> 2] = 0;\n b[t + 16 >> 2] = 0;\n b[t + 20 >> 2] = 0;\n b[t + 24 >> 2] = 0;\n b[t + 28 >> 2] = 0;\n d = b[z >> 2] | 0;\n }\n }while ((x | 0) < (d | 0));\n return;\n }\n function xc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0;\n if (!(uc(a, c, d) | 0)) {\n f = 0;\n return f | 0;\n }\n f = a + 8 | 0;\n if ((b[f >> 2] | 0) <= 0) {\n f = 1;\n return f | 0;\n }\n e = a + 12 | 0;\n a = 0;\n while(true){\n g = a;\n a = a + 1 | 0;\n if (uc((b[e >> 2] | 0) + (g << 3) | 0, c + (a << 5) | 0, d) | 0) {\n a = 0;\n e = 6;\n break;\n }\n if ((a | 0) >= (b[f >> 2] | 0)) {\n a = 1;\n e = 6;\n break;\n }\n }\n if ((e | 0) == 6) return a | 0;\n return 0;\n }\n function yc() {\n return 8;\n }\n function zc() {\n return 16;\n }\n function Ac() {\n return 168;\n }\n function Bc() {\n return 8;\n }\n function Cc() {\n return 16;\n }\n function Dc() {\n return 12;\n }\n function Ec() {\n return 8;\n }\n function Fc(a) {\n a = a | 0;\n var b = 0.0, c = 0.0;\n c = +e[a >> 3];\n b = +e[a + 8 >> 3];\n return + +r(+(c * c + b * b));\n }\n function Gc(a, b, c, d, f) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n var g = 0.0, h = 0.0, i = 0.0, j = 0.0, k = 0.0, l = 0.0, m = 0.0, n = 0.0;\n k = +e[a >> 3];\n j = +e[b >> 3] - k;\n i = +e[a + 8 >> 3];\n h = +e[b + 8 >> 3] - i;\n m = +e[c >> 3];\n g = +e[d >> 3] - m;\n n = +e[c + 8 >> 3];\n l = +e[d + 8 >> 3] - n;\n g = (g * (i - n) - (k - m) * l) / (j * l - h * g);\n e[f >> 3] = k + j * g;\n e[f + 8 >> 3] = i + h * g;\n return;\n }\n function Hc(a, b) {\n a = a | 0;\n b = b | 0;\n if (!(+e[a >> 3] == +e[b >> 3])) {\n b = 0;\n return b | 0;\n }\n b = +e[a + 8 >> 3] == +e[b + 8 >> 3];\n return b | 0;\n }\n function Ic(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0, d = 0.0, f = 0.0;\n f = +e[a >> 3] - +e[b >> 3];\n d = +e[a + 8 >> 3] - +e[b + 8 >> 3];\n c = +e[a + 16 >> 3] - +e[b + 16 >> 3];\n return +(f * f + d * d + c * c);\n }\n function Jc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0, d = 0.0, f = 0.0;\n c = +e[a >> 3];\n d = +t(+c);\n c = +u(+c);\n e[b + 16 >> 3] = c;\n c = +e[a + 8 >> 3];\n f = d * +t(+c);\n e[b >> 3] = f;\n c = d * +u(+c);\n e[b + 8 >> 3] = c;\n return;\n }\n function Kc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0;\n k = S;\n S = S + 32 | 0;\n f = k + 16 | 0;\n g = k;\n Ub(a, c, f);\n h = Ab(a, c) | 0;\n j = Lb(a, c) | 0;\n pa(h, g);\n c = qa(h, b[f >> 2] | 0) | 0;\n if (!(la(h) | 0)) {\n j = c;\n S = k;\n return j | 0;\n }\n do switch(h | 0){\n case 4:\n a = 0;\n d = 14;\n break;\n case 14:\n a = 1;\n d = 14;\n break;\n case 24:\n a = 2;\n d = 14;\n break;\n case 38:\n a = 3;\n d = 14;\n break;\n case 49:\n a = 4;\n d = 14;\n break;\n case 58:\n a = 5;\n d = 14;\n break;\n case 63:\n a = 6;\n d = 14;\n break;\n case 72:\n a = 7;\n d = 14;\n break;\n case 83:\n a = 8;\n d = 14;\n break;\n case 97:\n a = 9;\n d = 14;\n break;\n case 107:\n a = 10;\n d = 14;\n break;\n case 117:\n a = 11;\n d = 14;\n break;\n default:\n i = 0;\n e = 0;\n }\n while (0);\n if ((d | 0) == 14) {\n i = b[22096 + (a * 24 | 0) + 8 >> 2] | 0;\n e = b[22096 + (a * 24 | 0) + 16 >> 2] | 0;\n }\n a = b[f >> 2] | 0;\n if ((a | 0) != (b[g >> 2] | 0)) {\n h = ma(h) | 0;\n a = b[f >> 2] | 0;\n if (h | (a | 0) == (e | 0)) c = (c + 1 | 0) % 6 | 0;\n }\n if ((j | 0) == 3 & (a | 0) == (e | 0)) {\n j = (c + 5 | 0) % 6 | 0;\n S = k;\n return j | 0;\n }\n if (!((j | 0) == 5 & (a | 0) == (i | 0))) {\n j = c;\n S = k;\n return j | 0;\n }\n j = (c + 1 | 0) % 6 | 0;\n S = k;\n return j | 0;\n }\n function Lc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0;\n e = Fb(a, c) | 0;\n if ((d + -1 | 0) >>> 0 > 5) {\n d = -1;\n return d | 0;\n }\n f = (e | 0) != 0;\n if ((d | 0) == 1 & f) {\n d = -1;\n return d | 0;\n }\n e = Kc(a, c) | 0;\n if (f) {\n d = (5 - e + (b[22384 + (d << 2) >> 2] | 0) | 0) % 5 | 0;\n return d | 0;\n } else {\n d = (6 - e + (b[22416 + (d << 2) >> 2] | 0) | 0) % 6 | 0;\n return d | 0;\n }\n return 0;\n }\n function Mc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0;\n if ((c | 0) > 0) {\n e = Yc(c, 4) | 0;\n b[a >> 2] = e;\n if (!e) H(23230, 23253, 40, 23267);\n } else b[a >> 2] = 0;\n b[a + 4 >> 2] = c;\n b[a + 8 >> 2] = 0;\n b[a + 12 >> 2] = d;\n return;\n }\n function Nc(a) {\n a = a | 0;\n var c = 0, d = 0, f = 0, g = 0, h = 0, i = 0, j = 0;\n g = a + 4 | 0;\n h = a + 12 | 0;\n i = a + 8 | 0;\n a: while(true){\n d = b[g >> 2] | 0;\n c = 0;\n while(true){\n if ((c | 0) >= (d | 0)) break a;\n f = b[a >> 2] | 0;\n j = b[f + (c << 2) >> 2] | 0;\n if (!j) c = c + 1 | 0;\n else break;\n }\n c = f + (~~(+q(+(+s(10.0, + +(15 - (b[h >> 2] | 0) | 0)) * (+e[j >> 3] + +e[j + 8 >> 3]))) % +(d | 0)) >>> 0 << 2) | 0;\n d = b[c >> 2] | 0;\n b: do if (d | 0) {\n f = j + 32 | 0;\n if ((d | 0) == (j | 0)) b[c >> 2] = b[f >> 2];\n else {\n d = d + 32 | 0;\n c = b[d >> 2] | 0;\n if (!c) break;\n while(true){\n if ((c | 0) == (j | 0)) break;\n d = c + 32 | 0;\n c = b[d >> 2] | 0;\n if (!c) break b;\n }\n b[d >> 2] = b[f >> 2];\n }\n Xc(j);\n b[i >> 2] = (b[i >> 2] | 0) + -1;\n }\n while (0);\n }\n Xc(b[a >> 2] | 0);\n return;\n }\n function Oc(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0;\n e = b[a + 4 >> 2] | 0;\n d = 0;\n while(true){\n if ((d | 0) >= (e | 0)) {\n c = 0;\n d = 4;\n break;\n }\n c = b[(b[a >> 2] | 0) + (d << 2) >> 2] | 0;\n if (!c) d = d + 1 | 0;\n else {\n d = 4;\n break;\n }\n }\n if ((d | 0) == 4) return c | 0;\n return 0;\n }\n function Pc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, f = 0, g = 0, h = 0;\n d = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n d = (b[a >> 2] | 0) + (d << 2) | 0;\n f = b[d >> 2] | 0;\n if (!f) {\n h = 1;\n return h | 0;\n }\n h = c + 32 | 0;\n do if ((f | 0) != (c | 0)) {\n d = b[f + 32 >> 2] | 0;\n if (!d) {\n h = 1;\n return h | 0;\n }\n g = d;\n while(true){\n if ((g | 0) == (c | 0)) {\n g = 8;\n break;\n }\n d = b[g + 32 >> 2] | 0;\n if (!d) {\n d = 1;\n g = 10;\n break;\n } else {\n f = g;\n g = d;\n }\n }\n if ((g | 0) == 8) {\n b[f + 32 >> 2] = b[h >> 2];\n break;\n } else if ((g | 0) == 10) return d | 0;\n } else b[d >> 2] = b[h >> 2];\n while (0);\n Xc(c);\n h = a + 8 | 0;\n b[h >> 2] = (b[h >> 2] | 0) + -1;\n h = 0;\n return h | 0;\n }\n function Qc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0, g = 0, h = 0, i = 0;\n h = Wc(40) | 0;\n if (!h) H(23283, 23253, 98, 23296);\n b[h >> 2] = b[c >> 2];\n b[h + 4 >> 2] = b[c + 4 >> 2];\n b[h + 8 >> 2] = b[c + 8 >> 2];\n b[h + 12 >> 2] = b[c + 12 >> 2];\n g = h + 16 | 0;\n b[g >> 2] = b[d >> 2];\n b[g + 4 >> 2] = b[d + 4 >> 2];\n b[g + 8 >> 2] = b[d + 8 >> 2];\n b[g + 12 >> 2] = b[d + 12 >> 2];\n b[h + 32 >> 2] = 0;\n g = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n g = (b[a >> 2] | 0) + (g << 2) | 0;\n f = b[g >> 2] | 0;\n do if (!f) b[g >> 2] = h;\n else {\n while(true){\n if (hb(f, c) | 0 ? hb(f + 16 | 0, d) | 0 : 0) break;\n g = b[f + 32 >> 2] | 0;\n f = (g | 0) == 0 ? f : g;\n if (!(b[f + 32 >> 2] | 0)) {\n i = 10;\n break;\n }\n }\n if ((i | 0) == 10) {\n b[f + 32 >> 2] = h;\n break;\n }\n Xc(h);\n i = f;\n return i | 0;\n }\n while (0);\n i = a + 8 | 0;\n b[i >> 2] = (b[i >> 2] | 0) + 1;\n i = h;\n return i | 0;\n }\n function Rc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0, g = 0;\n g = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n g = b[(b[a >> 2] | 0) + (g << 2) >> 2] | 0;\n if (!g) {\n d = 0;\n return d | 0;\n }\n if (!d) {\n a = g;\n while(true){\n if (hb(a, c) | 0) {\n f = 10;\n break;\n }\n a = b[a + 32 >> 2] | 0;\n if (!a) {\n a = 0;\n f = 10;\n break;\n }\n }\n if ((f | 0) == 10) return a | 0;\n }\n a = g;\n while(true){\n if (hb(a, c) | 0 ? hb(a + 16 | 0, d) | 0 : 0) {\n f = 10;\n break;\n }\n a = b[a + 32 >> 2] | 0;\n if (!a) {\n a = 0;\n f = 10;\n break;\n }\n }\n if ((f | 0) == 10) return a | 0;\n return 0;\n }\n function Sc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0;\n d = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n a = b[(b[a >> 2] | 0) + (d << 2) >> 2] | 0;\n if (!a) {\n d = 0;\n return d | 0;\n }\n while(true){\n if (hb(a, c) | 0) {\n c = 5;\n break;\n }\n a = b[a + 32 >> 2] | 0;\n if (!a) {\n a = 0;\n c = 5;\n break;\n }\n }\n if ((c | 0) == 5) return a | 0;\n return 0;\n }\n function Tc() {\n return 23312;\n }\n function Uc(a) {\n a = +a;\n return + +id(+a);\n }\n function Vc(a) {\n a = +a;\n return ~~+Uc(a) | 0;\n }\n function Wc(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0;\n w = S;\n S = S + 16 | 0;\n n = w;\n do {\n if (a >>> 0 < 245) {\n k = a >>> 0 < 11 ? 16 : a + 11 & -8;\n a = k >>> 3;\n m = b[5829] | 0;\n d = m >>> a;\n if (d & 3 | 0) {\n c = (d & 1 ^ 1) + a | 0;\n a = 23356 + (c << 1 << 2) | 0;\n d = a + 8 | 0;\n e = b[d >> 2] | 0;\n f = e + 8 | 0;\n g = b[f >> 2] | 0;\n if ((g | 0) == (a | 0)) b[5829] = m & ~(1 << c);\n else {\n b[g + 12 >> 2] = a;\n b[d >> 2] = g;\n }\n v = c << 3;\n b[e + 4 >> 2] = v | 3;\n v = e + v + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n v = f;\n S = w;\n return v | 0;\n }\n l = b[5831] | 0;\n if (k >>> 0 > l >>> 0) {\n if (d | 0) {\n c = 2 << a;\n c = d << a & (c | 0 - c);\n c = (c & 0 - c) + -1 | 0;\n i = c >>> 12 & 16;\n c = c >>> i;\n d = c >>> 5 & 8;\n c = c >>> d;\n g = c >>> 2 & 4;\n c = c >>> g;\n a = c >>> 1 & 2;\n c = c >>> a;\n e = c >>> 1 & 1;\n e = (d | i | g | a | e) + (c >>> e) | 0;\n c = 23356 + (e << 1 << 2) | 0;\n a = c + 8 | 0;\n g = b[a >> 2] | 0;\n i = g + 8 | 0;\n d = b[i >> 2] | 0;\n if ((d | 0) == (c | 0)) {\n a = m & ~(1 << e);\n b[5829] = a;\n } else {\n b[d + 12 >> 2] = c;\n b[a >> 2] = d;\n a = m;\n }\n v = e << 3;\n h = v - k | 0;\n b[g + 4 >> 2] = k | 3;\n f = g + k | 0;\n b[f + 4 >> 2] = h | 1;\n b[g + v >> 2] = h;\n if (l | 0) {\n e = b[5834] | 0;\n c = l >>> 3;\n d = 23356 + (c << 1 << 2) | 0;\n c = 1 << c;\n if (!(a & c)) {\n b[5829] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n b[a >> 2] = e;\n b[c + 12 >> 2] = e;\n b[e + 8 >> 2] = c;\n b[e + 12 >> 2] = d;\n }\n b[5831] = h;\n b[5834] = f;\n v = i;\n S = w;\n return v | 0;\n }\n g = b[5830] | 0;\n if (g) {\n d = (g & 0 - g) + -1 | 0;\n f = d >>> 12 & 16;\n d = d >>> f;\n e = d >>> 5 & 8;\n d = d >>> e;\n h = d >>> 2 & 4;\n d = d >>> h;\n i = d >>> 1 & 2;\n d = d >>> i;\n j = d >>> 1 & 1;\n j = b[23620 + ((e | f | h | i | j) + (d >>> j) << 2) >> 2] | 0;\n d = j;\n i = j;\n j = (b[j + 4 >> 2] & -8) - k | 0;\n while(true){\n a = b[d + 16 >> 2] | 0;\n if (!a) {\n a = b[d + 20 >> 2] | 0;\n if (!a) break;\n }\n h = (b[a + 4 >> 2] & -8) - k | 0;\n f = h >>> 0 < j >>> 0;\n d = a;\n i = f ? a : i;\n j = f ? h : j;\n }\n h = i + k | 0;\n if (h >>> 0 > i >>> 0) {\n f = b[i + 24 >> 2] | 0;\n c = b[i + 12 >> 2] | 0;\n do if ((c | 0) == (i | 0)) {\n a = i + 20 | 0;\n c = b[a >> 2] | 0;\n if (!c) {\n a = i + 16 | 0;\n c = b[a >> 2] | 0;\n if (!c) {\n d = 0;\n break;\n }\n }\n while(true){\n e = c + 20 | 0;\n d = b[e >> 2] | 0;\n if (!d) {\n e = c + 16 | 0;\n d = b[e >> 2] | 0;\n if (!d) break;\n else {\n c = d;\n a = e;\n }\n } else {\n c = d;\n a = e;\n }\n }\n b[a >> 2] = 0;\n d = c;\n } else {\n d = b[i + 8 >> 2] | 0;\n b[d + 12 >> 2] = c;\n b[c + 8 >> 2] = d;\n d = c;\n }\n while (0);\n do if (f | 0) {\n c = b[i + 28 >> 2] | 0;\n a = 23620 + (c << 2) | 0;\n if ((i | 0) == (b[a >> 2] | 0)) {\n b[a >> 2] = d;\n if (!d) {\n b[5830] = g & ~(1 << c);\n break;\n }\n } else {\n v = f + 16 | 0;\n b[((b[v >> 2] | 0) == (i | 0) ? v : f + 20 | 0) >> 2] = d;\n if (!d) break;\n }\n b[d + 24 >> 2] = f;\n c = b[i + 16 >> 2] | 0;\n if (c | 0) {\n b[d + 16 >> 2] = c;\n b[c + 24 >> 2] = d;\n }\n c = b[i + 20 >> 2] | 0;\n if (c | 0) {\n b[d + 20 >> 2] = c;\n b[c + 24 >> 2] = d;\n }\n }\n while (0);\n if (j >>> 0 < 16) {\n v = j + k | 0;\n b[i + 4 >> 2] = v | 3;\n v = i + v + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n } else {\n b[i + 4 >> 2] = k | 3;\n b[h + 4 >> 2] = j | 1;\n b[h + j >> 2] = j;\n if (l | 0) {\n e = b[5834] | 0;\n c = l >>> 3;\n d = 23356 + (c << 1 << 2) | 0;\n c = 1 << c;\n if (!(c & m)) {\n b[5829] = c | m;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n b[a >> 2] = e;\n b[c + 12 >> 2] = e;\n b[e + 8 >> 2] = c;\n b[e + 12 >> 2] = d;\n }\n b[5831] = j;\n b[5834] = h;\n }\n v = i + 8 | 0;\n S = w;\n return v | 0;\n } else m = k;\n } else m = k;\n } else m = k;\n } else if (a >>> 0 <= 4294967231) {\n a = a + 11 | 0;\n k = a & -8;\n e = b[5830] | 0;\n if (e) {\n f = 0 - k | 0;\n a = a >>> 8;\n if (a) {\n if (k >>> 0 > 16777215) j = 31;\n else {\n m = (a + 1048320 | 0) >>> 16 & 8;\n q = a << m;\n i = (q + 520192 | 0) >>> 16 & 4;\n q = q << i;\n j = (q + 245760 | 0) >>> 16 & 2;\n j = 14 - (i | m | j) + (q << j >>> 15) | 0;\n j = k >>> (j + 7 | 0) & 1 | j << 1;\n }\n } else j = 0;\n d = b[23620 + (j << 2) >> 2] | 0;\n a: do if (!d) {\n d = 0;\n a = 0;\n q = 61;\n } else {\n a = 0;\n i = k << ((j | 0) == 31 ? 0 : 25 - (j >>> 1) | 0);\n g = 0;\n while(true){\n h = (b[d + 4 >> 2] & -8) - k | 0;\n if (h >>> 0 < f >>> 0) {\n if (!h) {\n a = d;\n f = 0;\n q = 65;\n break a;\n } else {\n a = d;\n f = h;\n }\n }\n q = b[d + 20 >> 2] | 0;\n d = b[d + 16 + (i >>> 31 << 2) >> 2] | 0;\n g = (q | 0) == 0 | (q | 0) == (d | 0) ? g : q;\n if (!d) {\n d = g;\n q = 61;\n break;\n } else i = i << 1;\n }\n }\n while (0);\n if ((q | 0) == 61) {\n if ((d | 0) == 0 & (a | 0) == 0) {\n a = 2 << j;\n a = (a | 0 - a) & e;\n if (!a) {\n m = k;\n break;\n }\n m = (a & 0 - a) + -1 | 0;\n h = m >>> 12 & 16;\n m = m >>> h;\n g = m >>> 5 & 8;\n m = m >>> g;\n i = m >>> 2 & 4;\n m = m >>> i;\n j = m >>> 1 & 2;\n m = m >>> j;\n d = m >>> 1 & 1;\n a = 0;\n d = b[23620 + ((g | h | i | j | d) + (m >>> d) << 2) >> 2] | 0;\n }\n if (!d) {\n i = a;\n h = f;\n } else q = 65;\n }\n if ((q | 0) == 65) {\n g = d;\n while(true){\n m = (b[g + 4 >> 2] & -8) - k | 0;\n d = m >>> 0 < f >>> 0;\n f = d ? m : f;\n a = d ? g : a;\n d = b[g + 16 >> 2] | 0;\n if (!d) d = b[g + 20 >> 2] | 0;\n if (!d) {\n i = a;\n h = f;\n break;\n } else g = d;\n }\n }\n if (((i | 0) != 0 ? h >>> 0 < ((b[5831] | 0) - k | 0) >>> 0 : 0) ? (l = i + k | 0, l >>> 0 > i >>> 0) : 0) {\n g = b[i + 24 >> 2] | 0;\n c = b[i + 12 >> 2] | 0;\n do if ((c | 0) == (i | 0)) {\n a = i + 20 | 0;\n c = b[a >> 2] | 0;\n if (!c) {\n a = i + 16 | 0;\n c = b[a >> 2] | 0;\n if (!c) {\n c = 0;\n break;\n }\n }\n while(true){\n f = c + 20 | 0;\n d = b[f >> 2] | 0;\n if (!d) {\n f = c + 16 | 0;\n d = b[f >> 2] | 0;\n if (!d) break;\n else {\n c = d;\n a = f;\n }\n } else {\n c = d;\n a = f;\n }\n }\n b[a >> 2] = 0;\n } else {\n v = b[i + 8 >> 2] | 0;\n b[v + 12 >> 2] = c;\n b[c + 8 >> 2] = v;\n }\n while (0);\n do if (g) {\n a = b[i + 28 >> 2] | 0;\n d = 23620 + (a << 2) | 0;\n if ((i | 0) == (b[d >> 2] | 0)) {\n b[d >> 2] = c;\n if (!c) {\n e = e & ~(1 << a);\n b[5830] = e;\n break;\n }\n } else {\n v = g + 16 | 0;\n b[((b[v >> 2] | 0) == (i | 0) ? v : g + 20 | 0) >> 2] = c;\n if (!c) break;\n }\n b[c + 24 >> 2] = g;\n a = b[i + 16 >> 2] | 0;\n if (a | 0) {\n b[c + 16 >> 2] = a;\n b[a + 24 >> 2] = c;\n }\n a = b[i + 20 >> 2] | 0;\n if (a) {\n b[c + 20 >> 2] = a;\n b[a + 24 >> 2] = c;\n }\n }\n while (0);\n b: do if (h >>> 0 < 16) {\n v = h + k | 0;\n b[i + 4 >> 2] = v | 3;\n v = i + v + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n } else {\n b[i + 4 >> 2] = k | 3;\n b[l + 4 >> 2] = h | 1;\n b[l + h >> 2] = h;\n c = h >>> 3;\n if (h >>> 0 < 256) {\n d = 23356 + (c << 1 << 2) | 0;\n a = b[5829] | 0;\n c = 1 << c;\n if (!(a & c)) {\n b[5829] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n b[a >> 2] = l;\n b[c + 12 >> 2] = l;\n b[l + 8 >> 2] = c;\n b[l + 12 >> 2] = d;\n break;\n }\n c = h >>> 8;\n if (c) {\n if (h >>> 0 > 16777215) d = 31;\n else {\n u = (c + 1048320 | 0) >>> 16 & 8;\n v = c << u;\n t = (v + 520192 | 0) >>> 16 & 4;\n v = v << t;\n d = (v + 245760 | 0) >>> 16 & 2;\n d = 14 - (t | u | d) + (v << d >>> 15) | 0;\n d = h >>> (d + 7 | 0) & 1 | d << 1;\n }\n } else d = 0;\n c = 23620 + (d << 2) | 0;\n b[l + 28 >> 2] = d;\n a = l + 16 | 0;\n b[a + 4 >> 2] = 0;\n b[a >> 2] = 0;\n a = 1 << d;\n if (!(e & a)) {\n b[5830] = e | a;\n b[c >> 2] = l;\n b[l + 24 >> 2] = c;\n b[l + 12 >> 2] = l;\n b[l + 8 >> 2] = l;\n break;\n }\n c = b[c >> 2] | 0;\n c: do if ((b[c + 4 >> 2] & -8 | 0) != (h | 0)) {\n e = h << ((d | 0) == 31 ? 0 : 25 - (d >>> 1) | 0);\n while(true){\n d = c + 16 + (e >>> 31 << 2) | 0;\n a = b[d >> 2] | 0;\n if (!a) break;\n if ((b[a + 4 >> 2] & -8 | 0) == (h | 0)) {\n c = a;\n break c;\n } else {\n e = e << 1;\n c = a;\n }\n }\n b[d >> 2] = l;\n b[l + 24 >> 2] = c;\n b[l + 12 >> 2] = l;\n b[l + 8 >> 2] = l;\n break b;\n }\n while (0);\n u = c + 8 | 0;\n v = b[u >> 2] | 0;\n b[v + 12 >> 2] = l;\n b[u >> 2] = l;\n b[l + 8 >> 2] = v;\n b[l + 12 >> 2] = c;\n b[l + 24 >> 2] = 0;\n }\n while (0);\n v = i + 8 | 0;\n S = w;\n return v | 0;\n } else m = k;\n } else m = k;\n } else m = -1;\n }while (0);\n d = b[5831] | 0;\n if (d >>> 0 >= m >>> 0) {\n c = d - m | 0;\n a = b[5834] | 0;\n if (c >>> 0 > 15) {\n v = a + m | 0;\n b[5834] = v;\n b[5831] = c;\n b[v + 4 >> 2] = c | 1;\n b[a + d >> 2] = c;\n b[a + 4 >> 2] = m | 3;\n } else {\n b[5831] = 0;\n b[5834] = 0;\n b[a + 4 >> 2] = d | 3;\n v = a + d + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n }\n v = a + 8 | 0;\n S = w;\n return v | 0;\n }\n h = b[5832] | 0;\n if (h >>> 0 > m >>> 0) {\n t = h - m | 0;\n b[5832] = t;\n v = b[5835] | 0;\n u = v + m | 0;\n b[5835] = u;\n b[u + 4 >> 2] = t | 1;\n b[v + 4 >> 2] = m | 3;\n v = v + 8 | 0;\n S = w;\n return v | 0;\n }\n if (!(b[5947] | 0)) {\n b[5949] = 4096;\n b[5948] = 4096;\n b[5950] = -1;\n b[5951] = -1;\n b[5952] = 0;\n b[5940] = 0;\n b[5947] = n & -16 ^ 1431655768;\n a = 4096;\n } else a = b[5949] | 0;\n i = m + 48 | 0;\n j = m + 47 | 0;\n g = a + j | 0;\n f = 0 - a | 0;\n k = g & f;\n if (k >>> 0 <= m >>> 0) {\n v = 0;\n S = w;\n return v | 0;\n }\n a = b[5939] | 0;\n if (a | 0 ? (l = b[5937] | 0, n = l + k | 0, n >>> 0 <= l >>> 0 | n >>> 0 > a >>> 0) : 0) {\n v = 0;\n S = w;\n return v | 0;\n }\n d: do if (!(b[5940] & 4)) {\n d = b[5835] | 0;\n e: do if (d) {\n e = 23764;\n while(true){\n n = b[e >> 2] | 0;\n if (n >>> 0 <= d >>> 0 ? (n + (b[e + 4 >> 2] | 0) | 0) >>> 0 > d >>> 0 : 0) break;\n a = b[e + 8 >> 2] | 0;\n if (!a) {\n q = 128;\n break e;\n } else e = a;\n }\n c = g - h & f;\n if (c >>> 0 < 2147483647) {\n a = jd(c | 0) | 0;\n if ((a | 0) == ((b[e >> 2] | 0) + (b[e + 4 >> 2] | 0) | 0)) {\n if ((a | 0) != -1) {\n h = c;\n g = a;\n q = 145;\n break d;\n }\n } else {\n e = a;\n q = 136;\n }\n } else c = 0;\n } else q = 128;\n while (0);\n do if ((q | 0) == 128) {\n d = jd(0) | 0;\n if ((d | 0) != -1 ? (c = d, o = b[5948] | 0, p = o + -1 | 0, c = ((p & c | 0) == 0 ? 0 : (p + c & 0 - o) - c | 0) + k | 0, o = b[5937] | 0, p = c + o | 0, c >>> 0 > m >>> 0 & c >>> 0 < 2147483647) : 0) {\n n = b[5939] | 0;\n if (n | 0 ? p >>> 0 <= o >>> 0 | p >>> 0 > n >>> 0 : 0) {\n c = 0;\n break;\n }\n a = jd(c | 0) | 0;\n if ((a | 0) == (d | 0)) {\n h = c;\n g = d;\n q = 145;\n break d;\n } else {\n e = a;\n q = 136;\n }\n } else c = 0;\n }\n while (0);\n do if ((q | 0) == 136) {\n d = 0 - c | 0;\n if (!(i >>> 0 > c >>> 0 & (c >>> 0 < 2147483647 & (e | 0) != -1))) {\n if ((e | 0) == -1) {\n c = 0;\n break;\n } else {\n h = c;\n g = e;\n q = 145;\n break d;\n }\n }\n a = b[5949] | 0;\n a = j - c + a & 0 - a;\n if (a >>> 0 >= 2147483647) {\n h = c;\n g = e;\n q = 145;\n break d;\n }\n if ((jd(a | 0) | 0) == -1) {\n jd(d | 0);\n c = 0;\n break;\n } else {\n h = a + c | 0;\n g = e;\n q = 145;\n break d;\n }\n }\n while (0);\n b[5940] = b[5940] | 4;\n q = 143;\n } else {\n c = 0;\n q = 143;\n }\n while (0);\n if (((q | 0) == 143 ? k >>> 0 < 2147483647 : 0) ? (t = jd(k | 0) | 0, p = jd(0) | 0, r = p - t | 0, s = r >>> 0 > (m + 40 | 0) >>> 0, !((t | 0) == -1 | s ^ 1 | t >>> 0 < p >>> 0 & ((t | 0) != -1 & (p | 0) != -1) ^ 1)) : 0) {\n h = s ? r : c;\n g = t;\n q = 145;\n }\n if ((q | 0) == 145) {\n c = (b[5937] | 0) + h | 0;\n b[5937] = c;\n if (c >>> 0 > (b[5938] | 0) >>> 0) b[5938] = c;\n j = b[5835] | 0;\n f: do if (j) {\n c = 23764;\n while(true){\n a = b[c >> 2] | 0;\n d = b[c + 4 >> 2] | 0;\n if ((g | 0) == (a + d | 0)) {\n q = 154;\n break;\n }\n e = b[c + 8 >> 2] | 0;\n if (!e) break;\n else c = e;\n }\n if (((q | 0) == 154 ? (u = c + 4 | 0, (b[c + 12 >> 2] & 8 | 0) == 0) : 0) ? g >>> 0 > j >>> 0 & a >>> 0 <= j >>> 0 : 0) {\n b[u >> 2] = d + h;\n v = (b[5832] | 0) + h | 0;\n t = j + 8 | 0;\n t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n u = j + t | 0;\n t = v - t | 0;\n b[5835] = u;\n b[5832] = t;\n b[u + 4 >> 2] = t | 1;\n b[j + v + 4 >> 2] = 40;\n b[5836] = b[5951];\n break;\n }\n if (g >>> 0 < (b[5833] | 0) >>> 0) b[5833] = g;\n d = g + h | 0;\n c = 23764;\n while(true){\n if ((b[c >> 2] | 0) == (d | 0)) {\n q = 162;\n break;\n }\n a = b[c + 8 >> 2] | 0;\n if (!a) break;\n else c = a;\n }\n if ((q | 0) == 162 ? (b[c + 12 >> 2] & 8 | 0) == 0 : 0) {\n b[c >> 2] = g;\n l = c + 4 | 0;\n b[l >> 2] = (b[l >> 2] | 0) + h;\n l = g + 8 | 0;\n l = g + ((l & 7 | 0) == 0 ? 0 : 0 - l & 7) | 0;\n c = d + 8 | 0;\n c = d + ((c & 7 | 0) == 0 ? 0 : 0 - c & 7) | 0;\n k = l + m | 0;\n i = c - l - m | 0;\n b[l + 4 >> 2] = m | 3;\n g: do if ((j | 0) == (c | 0)) {\n v = (b[5832] | 0) + i | 0;\n b[5832] = v;\n b[5835] = k;\n b[k + 4 >> 2] = v | 1;\n } else {\n if ((b[5834] | 0) == (c | 0)) {\n v = (b[5831] | 0) + i | 0;\n b[5831] = v;\n b[5834] = k;\n b[k + 4 >> 2] = v | 1;\n b[k + v >> 2] = v;\n break;\n }\n a = b[c + 4 >> 2] | 0;\n if ((a & 3 | 0) == 1) {\n h = a & -8;\n e = a >>> 3;\n h: do if (a >>> 0 < 256) {\n a = b[c + 8 >> 2] | 0;\n d = b[c + 12 >> 2] | 0;\n if ((d | 0) == (a | 0)) {\n b[5829] = b[5829] & ~(1 << e);\n break;\n } else {\n b[a + 12 >> 2] = d;\n b[d + 8 >> 2] = a;\n break;\n }\n } else {\n g = b[c + 24 >> 2] | 0;\n a = b[c + 12 >> 2] | 0;\n do if ((a | 0) == (c | 0)) {\n d = c + 16 | 0;\n e = d + 4 | 0;\n a = b[e >> 2] | 0;\n if (!a) {\n a = b[d >> 2] | 0;\n if (!a) {\n a = 0;\n break;\n }\n } else d = e;\n while(true){\n f = a + 20 | 0;\n e = b[f >> 2] | 0;\n if (!e) {\n f = a + 16 | 0;\n e = b[f >> 2] | 0;\n if (!e) break;\n else {\n a = e;\n d = f;\n }\n } else {\n a = e;\n d = f;\n }\n }\n b[d >> 2] = 0;\n } else {\n v = b[c + 8 >> 2] | 0;\n b[v + 12 >> 2] = a;\n b[a + 8 >> 2] = v;\n }\n while (0);\n if (!g) break;\n d = b[c + 28 >> 2] | 0;\n e = 23620 + (d << 2) | 0;\n do if ((b[e >> 2] | 0) != (c | 0)) {\n v = g + 16 | 0;\n b[((b[v >> 2] | 0) == (c | 0) ? v : g + 20 | 0) >> 2] = a;\n if (!a) break h;\n } else {\n b[e >> 2] = a;\n if (a | 0) break;\n b[5830] = b[5830] & ~(1 << d);\n break h;\n }\n while (0);\n b[a + 24 >> 2] = g;\n d = c + 16 | 0;\n e = b[d >> 2] | 0;\n if (e | 0) {\n b[a + 16 >> 2] = e;\n b[e + 24 >> 2] = a;\n }\n d = b[d + 4 >> 2] | 0;\n if (!d) break;\n b[a + 20 >> 2] = d;\n b[d + 24 >> 2] = a;\n }\n while (0);\n c = c + h | 0;\n f = h + i | 0;\n } else f = i;\n c = c + 4 | 0;\n b[c >> 2] = b[c >> 2] & -2;\n b[k + 4 >> 2] = f | 1;\n b[k + f >> 2] = f;\n c = f >>> 3;\n if (f >>> 0 < 256) {\n d = 23356 + (c << 1 << 2) | 0;\n a = b[5829] | 0;\n c = 1 << c;\n if (!(a & c)) {\n b[5829] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n b[a >> 2] = k;\n b[c + 12 >> 2] = k;\n b[k + 8 >> 2] = c;\n b[k + 12 >> 2] = d;\n break;\n }\n c = f >>> 8;\n do if (!c) e = 0;\n else {\n if (f >>> 0 > 16777215) {\n e = 31;\n break;\n }\n u = (c + 1048320 | 0) >>> 16 & 8;\n v = c << u;\n t = (v + 520192 | 0) >>> 16 & 4;\n v = v << t;\n e = (v + 245760 | 0) >>> 16 & 2;\n e = 14 - (t | u | e) + (v << e >>> 15) | 0;\n e = f >>> (e + 7 | 0) & 1 | e << 1;\n }\n while (0);\n c = 23620 + (e << 2) | 0;\n b[k + 28 >> 2] = e;\n a = k + 16 | 0;\n b[a + 4 >> 2] = 0;\n b[a >> 2] = 0;\n a = b[5830] | 0;\n d = 1 << e;\n if (!(a & d)) {\n b[5830] = a | d;\n b[c >> 2] = k;\n b[k + 24 >> 2] = c;\n b[k + 12 >> 2] = k;\n b[k + 8 >> 2] = k;\n break;\n }\n c = b[c >> 2] | 0;\n i: do if ((b[c + 4 >> 2] & -8 | 0) != (f | 0)) {\n e = f << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n while(true){\n d = c + 16 + (e >>> 31 << 2) | 0;\n a = b[d >> 2] | 0;\n if (!a) break;\n if ((b[a + 4 >> 2] & -8 | 0) == (f | 0)) {\n c = a;\n break i;\n } else {\n e = e << 1;\n c = a;\n }\n }\n b[d >> 2] = k;\n b[k + 24 >> 2] = c;\n b[k + 12 >> 2] = k;\n b[k + 8 >> 2] = k;\n break g;\n }\n while (0);\n u = c + 8 | 0;\n v = b[u >> 2] | 0;\n b[v + 12 >> 2] = k;\n b[u >> 2] = k;\n b[k + 8 >> 2] = v;\n b[k + 12 >> 2] = c;\n b[k + 24 >> 2] = 0;\n }\n while (0);\n v = l + 8 | 0;\n S = w;\n return v | 0;\n }\n c = 23764;\n while(true){\n a = b[c >> 2] | 0;\n if (a >>> 0 <= j >>> 0 ? (v = a + (b[c + 4 >> 2] | 0) | 0, v >>> 0 > j >>> 0) : 0) break;\n c = b[c + 8 >> 2] | 0;\n }\n f = v + -47 | 0;\n a = f + 8 | 0;\n a = f + ((a & 7 | 0) == 0 ? 0 : 0 - a & 7) | 0;\n f = j + 16 | 0;\n a = a >>> 0 < f >>> 0 ? j : a;\n c = a + 8 | 0;\n d = h + -40 | 0;\n t = g + 8 | 0;\n t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n u = g + t | 0;\n t = d - t | 0;\n b[5835] = u;\n b[5832] = t;\n b[u + 4 >> 2] = t | 1;\n b[g + d + 4 >> 2] = 40;\n b[5836] = b[5951];\n d = a + 4 | 0;\n b[d >> 2] = 27;\n b[c >> 2] = b[5941];\n b[c + 4 >> 2] = b[5942];\n b[c + 8 >> 2] = b[5943];\n b[c + 12 >> 2] = b[5944];\n b[5941] = g;\n b[5942] = h;\n b[5944] = 0;\n b[5943] = c;\n c = a + 24 | 0;\n do {\n u = c;\n c = c + 4 | 0;\n b[c >> 2] = 7;\n }while ((u + 8 | 0) >>> 0 < v >>> 0);\n if ((a | 0) != (j | 0)) {\n g = a - j | 0;\n b[d >> 2] = b[d >> 2] & -2;\n b[j + 4 >> 2] = g | 1;\n b[a >> 2] = g;\n c = g >>> 3;\n if (g >>> 0 < 256) {\n d = 23356 + (c << 1 << 2) | 0;\n a = b[5829] | 0;\n c = 1 << c;\n if (!(a & c)) {\n b[5829] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n b[a >> 2] = j;\n b[c + 12 >> 2] = j;\n b[j + 8 >> 2] = c;\n b[j + 12 >> 2] = d;\n break;\n }\n c = g >>> 8;\n if (c) {\n if (g >>> 0 > 16777215) e = 31;\n else {\n u = (c + 1048320 | 0) >>> 16 & 8;\n v = c << u;\n t = (v + 520192 | 0) >>> 16 & 4;\n v = v << t;\n e = (v + 245760 | 0) >>> 16 & 2;\n e = 14 - (t | u | e) + (v << e >>> 15) | 0;\n e = g >>> (e + 7 | 0) & 1 | e << 1;\n }\n } else e = 0;\n d = 23620 + (e << 2) | 0;\n b[j + 28 >> 2] = e;\n b[j + 20 >> 2] = 0;\n b[f >> 2] = 0;\n c = b[5830] | 0;\n a = 1 << e;\n if (!(c & a)) {\n b[5830] = c | a;\n b[d >> 2] = j;\n b[j + 24 >> 2] = d;\n b[j + 12 >> 2] = j;\n b[j + 8 >> 2] = j;\n break;\n }\n c = b[d >> 2] | 0;\n j: do if ((b[c + 4 >> 2] & -8 | 0) != (g | 0)) {\n e = g << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n while(true){\n d = c + 16 + (e >>> 31 << 2) | 0;\n a = b[d >> 2] | 0;\n if (!a) break;\n if ((b[a + 4 >> 2] & -8 | 0) == (g | 0)) {\n c = a;\n break j;\n } else {\n e = e << 1;\n c = a;\n }\n }\n b[d >> 2] = j;\n b[j + 24 >> 2] = c;\n b[j + 12 >> 2] = j;\n b[j + 8 >> 2] = j;\n break f;\n }\n while (0);\n u = c + 8 | 0;\n v = b[u >> 2] | 0;\n b[v + 12 >> 2] = j;\n b[u >> 2] = j;\n b[j + 8 >> 2] = v;\n b[j + 12 >> 2] = c;\n b[j + 24 >> 2] = 0;\n }\n } else {\n v = b[5833] | 0;\n if ((v | 0) == 0 | g >>> 0 < v >>> 0) b[5833] = g;\n b[5941] = g;\n b[5942] = h;\n b[5944] = 0;\n b[5838] = b[5947];\n b[5837] = -1;\n b[5842] = 23356;\n b[5841] = 23356;\n b[5844] = 23364;\n b[5843] = 23364;\n b[5846] = 23372;\n b[5845] = 23372;\n b[5848] = 23380;\n b[5847] = 23380;\n b[5850] = 23388;\n b[5849] = 23388;\n b[5852] = 23396;\n b[5851] = 23396;\n b[5854] = 23404;\n b[5853] = 23404;\n b[5856] = 23412;\n b[5855] = 23412;\n b[5858] = 23420;\n b[5857] = 23420;\n b[5860] = 23428;\n b[5859] = 23428;\n b[5862] = 23436;\n b[5861] = 23436;\n b[5864] = 23444;\n b[5863] = 23444;\n b[5866] = 23452;\n b[5865] = 23452;\n b[5868] = 23460;\n b[5867] = 23460;\n b[5870] = 23468;\n b[5869] = 23468;\n b[5872] = 23476;\n b[5871] = 23476;\n b[5874] = 23484;\n b[5873] = 23484;\n b[5876] = 23492;\n b[5875] = 23492;\n b[5878] = 23500;\n b[5877] = 23500;\n b[5880] = 23508;\n b[5879] = 23508;\n b[5882] = 23516;\n b[5881] = 23516;\n b[5884] = 23524;\n b[5883] = 23524;\n b[5886] = 23532;\n b[5885] = 23532;\n b[5888] = 23540;\n b[5887] = 23540;\n b[5890] = 23548;\n b[5889] = 23548;\n b[5892] = 23556;\n b[5891] = 23556;\n b[5894] = 23564;\n b[5893] = 23564;\n b[5896] = 23572;\n b[5895] = 23572;\n b[5898] = 23580;\n b[5897] = 23580;\n b[5900] = 23588;\n b[5899] = 23588;\n b[5902] = 23596;\n b[5901] = 23596;\n b[5904] = 23604;\n b[5903] = 23604;\n v = h + -40 | 0;\n t = g + 8 | 0;\n t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n u = g + t | 0;\n t = v - t | 0;\n b[5835] = u;\n b[5832] = t;\n b[u + 4 >> 2] = t | 1;\n b[g + v + 4 >> 2] = 40;\n b[5836] = b[5951];\n }\n while (0);\n c = b[5832] | 0;\n if (c >>> 0 > m >>> 0) {\n t = c - m | 0;\n b[5832] = t;\n v = b[5835] | 0;\n u = v + m | 0;\n b[5835] = u;\n b[u + 4 >> 2] = t | 1;\n b[v + 4 >> 2] = m | 3;\n v = v + 8 | 0;\n S = w;\n return v | 0;\n }\n }\n v = Tc() | 0;\n b[v >> 2] = 12;\n v = 0;\n S = w;\n return v | 0;\n }\n function Xc(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0;\n if (!a) return;\n d = a + -8 | 0;\n f = b[5833] | 0;\n a = b[a + -4 >> 2] | 0;\n c = a & -8;\n j = d + c | 0;\n do if (!(a & 1)) {\n e = b[d >> 2] | 0;\n if (!(a & 3)) return;\n h = d + (0 - e) | 0;\n g = e + c | 0;\n if (h >>> 0 < f >>> 0) return;\n if ((b[5834] | 0) == (h | 0)) {\n a = j + 4 | 0;\n c = b[a >> 2] | 0;\n if ((c & 3 | 0) != 3) {\n i = h;\n c = g;\n break;\n }\n b[5831] = g;\n b[a >> 2] = c & -2;\n b[h + 4 >> 2] = g | 1;\n b[h + g >> 2] = g;\n return;\n }\n d = e >>> 3;\n if (e >>> 0 < 256) {\n a = b[h + 8 >> 2] | 0;\n c = b[h + 12 >> 2] | 0;\n if ((c | 0) == (a | 0)) {\n b[5829] = b[5829] & ~(1 << d);\n i = h;\n c = g;\n break;\n } else {\n b[a + 12 >> 2] = c;\n b[c + 8 >> 2] = a;\n i = h;\n c = g;\n break;\n }\n }\n f = b[h + 24 >> 2] | 0;\n a = b[h + 12 >> 2] | 0;\n do if ((a | 0) == (h | 0)) {\n c = h + 16 | 0;\n d = c + 4 | 0;\n a = b[d >> 2] | 0;\n if (!a) {\n a = b[c >> 2] | 0;\n if (!a) {\n a = 0;\n break;\n }\n } else c = d;\n while(true){\n e = a + 20 | 0;\n d = b[e >> 2] | 0;\n if (!d) {\n e = a + 16 | 0;\n d = b[e >> 2] | 0;\n if (!d) break;\n else {\n a = d;\n c = e;\n }\n } else {\n a = d;\n c = e;\n }\n }\n b[c >> 2] = 0;\n } else {\n i = b[h + 8 >> 2] | 0;\n b[i + 12 >> 2] = a;\n b[a + 8 >> 2] = i;\n }\n while (0);\n if (f) {\n c = b[h + 28 >> 2] | 0;\n d = 23620 + (c << 2) | 0;\n if ((b[d >> 2] | 0) == (h | 0)) {\n b[d >> 2] = a;\n if (!a) {\n b[5830] = b[5830] & ~(1 << c);\n i = h;\n c = g;\n break;\n }\n } else {\n i = f + 16 | 0;\n b[((b[i >> 2] | 0) == (h | 0) ? i : f + 20 | 0) >> 2] = a;\n if (!a) {\n i = h;\n c = g;\n break;\n }\n }\n b[a + 24 >> 2] = f;\n c = h + 16 | 0;\n d = b[c >> 2] | 0;\n if (d | 0) {\n b[a + 16 >> 2] = d;\n b[d + 24 >> 2] = a;\n }\n c = b[c + 4 >> 2] | 0;\n if (c) {\n b[a + 20 >> 2] = c;\n b[c + 24 >> 2] = a;\n i = h;\n c = g;\n } else {\n i = h;\n c = g;\n }\n } else {\n i = h;\n c = g;\n }\n } else {\n i = d;\n h = d;\n }\n while (0);\n if (h >>> 0 >= j >>> 0) return;\n a = j + 4 | 0;\n e = b[a >> 2] | 0;\n if (!(e & 1)) return;\n if (!(e & 2)) {\n if ((b[5835] | 0) == (j | 0)) {\n j = (b[5832] | 0) + c | 0;\n b[5832] = j;\n b[5835] = i;\n b[i + 4 >> 2] = j | 1;\n if ((i | 0) != (b[5834] | 0)) return;\n b[5834] = 0;\n b[5831] = 0;\n return;\n }\n if ((b[5834] | 0) == (j | 0)) {\n j = (b[5831] | 0) + c | 0;\n b[5831] = j;\n b[5834] = h;\n b[i + 4 >> 2] = j | 1;\n b[h + j >> 2] = j;\n return;\n }\n f = (e & -8) + c | 0;\n d = e >>> 3;\n do if (e >>> 0 < 256) {\n c = b[j + 8 >> 2] | 0;\n a = b[j + 12 >> 2] | 0;\n if ((a | 0) == (c | 0)) {\n b[5829] = b[5829] & ~(1 << d);\n break;\n } else {\n b[c + 12 >> 2] = a;\n b[a + 8 >> 2] = c;\n break;\n }\n } else {\n g = b[j + 24 >> 2] | 0;\n a = b[j + 12 >> 2] | 0;\n do if ((a | 0) == (j | 0)) {\n c = j + 16 | 0;\n d = c + 4 | 0;\n a = b[d >> 2] | 0;\n if (!a) {\n a = b[c >> 2] | 0;\n if (!a) {\n d = 0;\n break;\n }\n } else c = d;\n while(true){\n e = a + 20 | 0;\n d = b[e >> 2] | 0;\n if (!d) {\n e = a + 16 | 0;\n d = b[e >> 2] | 0;\n if (!d) break;\n else {\n a = d;\n c = e;\n }\n } else {\n a = d;\n c = e;\n }\n }\n b[c >> 2] = 0;\n d = a;\n } else {\n d = b[j + 8 >> 2] | 0;\n b[d + 12 >> 2] = a;\n b[a + 8 >> 2] = d;\n d = a;\n }\n while (0);\n if (g | 0) {\n a = b[j + 28 >> 2] | 0;\n c = 23620 + (a << 2) | 0;\n if ((b[c >> 2] | 0) == (j | 0)) {\n b[c >> 2] = d;\n if (!d) {\n b[5830] = b[5830] & ~(1 << a);\n break;\n }\n } else {\n e = g + 16 | 0;\n b[((b[e >> 2] | 0) == (j | 0) ? e : g + 20 | 0) >> 2] = d;\n if (!d) break;\n }\n b[d + 24 >> 2] = g;\n a = j + 16 | 0;\n c = b[a >> 2] | 0;\n if (c | 0) {\n b[d + 16 >> 2] = c;\n b[c + 24 >> 2] = d;\n }\n a = b[a + 4 >> 2] | 0;\n if (a | 0) {\n b[d + 20 >> 2] = a;\n b[a + 24 >> 2] = d;\n }\n }\n }\n while (0);\n b[i + 4 >> 2] = f | 1;\n b[h + f >> 2] = f;\n if ((i | 0) == (b[5834] | 0)) {\n b[5831] = f;\n return;\n }\n } else {\n b[a >> 2] = e & -2;\n b[i + 4 >> 2] = c | 1;\n b[h + c >> 2] = c;\n f = c;\n }\n a = f >>> 3;\n if (f >>> 0 < 256) {\n d = 23356 + (a << 1 << 2) | 0;\n c = b[5829] | 0;\n a = 1 << a;\n if (!(c & a)) {\n b[5829] = c | a;\n a = d;\n c = d + 8 | 0;\n } else {\n c = d + 8 | 0;\n a = b[c >> 2] | 0;\n }\n b[c >> 2] = i;\n b[a + 12 >> 2] = i;\n b[i + 8 >> 2] = a;\n b[i + 12 >> 2] = d;\n return;\n }\n a = f >>> 8;\n if (a) {\n if (f >>> 0 > 16777215) e = 31;\n else {\n h = (a + 1048320 | 0) >>> 16 & 8;\n j = a << h;\n g = (j + 520192 | 0) >>> 16 & 4;\n j = j << g;\n e = (j + 245760 | 0) >>> 16 & 2;\n e = 14 - (g | h | e) + (j << e >>> 15) | 0;\n e = f >>> (e + 7 | 0) & 1 | e << 1;\n }\n } else e = 0;\n a = 23620 + (e << 2) | 0;\n b[i + 28 >> 2] = e;\n b[i + 20 >> 2] = 0;\n b[i + 16 >> 2] = 0;\n c = b[5830] | 0;\n d = 1 << e;\n a: do if (!(c & d)) {\n b[5830] = c | d;\n b[a >> 2] = i;\n b[i + 24 >> 2] = a;\n b[i + 12 >> 2] = i;\n b[i + 8 >> 2] = i;\n } else {\n a = b[a >> 2] | 0;\n b: do if ((b[a + 4 >> 2] & -8 | 0) != (f | 0)) {\n e = f << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n while(true){\n d = a + 16 + (e >>> 31 << 2) | 0;\n c = b[d >> 2] | 0;\n if (!c) break;\n if ((b[c + 4 >> 2] & -8 | 0) == (f | 0)) {\n a = c;\n break b;\n } else {\n e = e << 1;\n a = c;\n }\n }\n b[d >> 2] = i;\n b[i + 24 >> 2] = a;\n b[i + 12 >> 2] = i;\n b[i + 8 >> 2] = i;\n break a;\n }\n while (0);\n h = a + 8 | 0;\n j = b[h >> 2] | 0;\n b[j + 12 >> 2] = i;\n b[h >> 2] = i;\n b[i + 8 >> 2] = j;\n b[i + 12 >> 2] = a;\n b[i + 24 >> 2] = 0;\n }\n while (0);\n j = (b[5837] | 0) + -1 | 0;\n b[5837] = j;\n if (j | 0) return;\n a = 23772;\n while(true){\n a = b[a >> 2] | 0;\n if (!a) break;\n else a = a + 8 | 0;\n }\n b[5837] = -1;\n return;\n }\n function Yc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0;\n if (a) {\n d = B(c, a) | 0;\n if ((c | a) >>> 0 > 65535) d = ((d >>> 0) / (a >>> 0) | 0) == (c | 0) ? d : -1;\n } else d = 0;\n a = Wc(d) | 0;\n if (!a) return a | 0;\n if (!(b[a + -4 >> 2] & 3)) return a | 0;\n hd(a | 0, 0, d | 0);\n return a | 0;\n }\n function Zc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n c = a + c >>> 0;\n return (F(b + d + (c >>> 0 < a >>> 0 | 0) >>> 0 | 0), c | 0) | 0;\n }\n function _c(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n d = b - d - (c >>> 0 > a >>> 0 | 0) >>> 0;\n return (F(d | 0), a - c >>> 0 | 0) | 0;\n }\n function $c(a) {\n a = a | 0;\n return (a ? 31 - (D(a ^ a - 1) | 0) | 0 : 32) | 0;\n }\n function ad(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0;\n l = a;\n j = c;\n k = j;\n h = d;\n n = e;\n i = n;\n if (!k) {\n g = (f | 0) != 0;\n if (!i) {\n if (g) {\n b[f >> 2] = (l >>> 0) % (h >>> 0);\n b[f + 4 >> 2] = 0;\n }\n n = 0;\n f = (l >>> 0) / (h >>> 0) >>> 0;\n return (F(n | 0), f) | 0;\n } else {\n if (!g) {\n n = 0;\n f = 0;\n return (F(n | 0), f) | 0;\n }\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = c & 0;\n n = 0;\n f = 0;\n return (F(n | 0), f) | 0;\n }\n }\n g = (i | 0) == 0;\n do if (h) {\n if (!g) {\n g = (D(i | 0) | 0) - (D(k | 0) | 0) | 0;\n if (g >>> 0 <= 31) {\n m = g + 1 | 0;\n i = 31 - g | 0;\n c = g - 31 >> 31;\n h = m;\n a = l >>> (m >>> 0) & c | k << i;\n c = k >>> (m >>> 0) & c;\n g = 0;\n i = l << i;\n break;\n }\n if (!f) {\n n = 0;\n f = 0;\n return (F(n | 0), f) | 0;\n }\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = j | c & 0;\n n = 0;\n f = 0;\n return (F(n | 0), f) | 0;\n }\n g = h - 1 | 0;\n if (g & h | 0) {\n i = (D(h | 0) | 0) + 33 - (D(k | 0) | 0) | 0;\n p = 64 - i | 0;\n m = 32 - i | 0;\n j = m >> 31;\n o = i - 32 | 0;\n c = o >> 31;\n h = i;\n a = m - 1 >> 31 & k >>> (o >>> 0) | (k << m | l >>> (i >>> 0)) & c;\n c = c & k >>> (i >>> 0);\n g = l << p & j;\n i = (k << p | l >>> (o >>> 0)) & j | l << m & i - 33 >> 31;\n break;\n }\n if (f | 0) {\n b[f >> 2] = g & l;\n b[f + 4 >> 2] = 0;\n }\n if ((h | 0) == 1) {\n o = j | c & 0;\n p = a | 0;\n return (F(o | 0), p) | 0;\n } else {\n p = $c(h | 0) | 0;\n o = k >>> (p >>> 0) | 0;\n p = k << 32 - p | l >>> (p >>> 0) | 0;\n return (F(o | 0), p) | 0;\n }\n } else {\n if (g) {\n if (f | 0) {\n b[f >> 2] = (k >>> 0) % (h >>> 0);\n b[f + 4 >> 2] = 0;\n }\n o = 0;\n p = (k >>> 0) / (h >>> 0) >>> 0;\n return (F(o | 0), p) | 0;\n }\n if (!l) {\n if (f | 0) {\n b[f >> 2] = 0;\n b[f + 4 >> 2] = (k >>> 0) % (i >>> 0);\n }\n o = 0;\n p = (k >>> 0) / (i >>> 0) >>> 0;\n return (F(o | 0), p) | 0;\n }\n g = i - 1 | 0;\n if (!(g & i)) {\n if (f | 0) {\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = g & k | c & 0;\n }\n o = 0;\n p = k >>> (($c(i | 0) | 0) >>> 0);\n return (F(o | 0), p) | 0;\n }\n g = (D(i | 0) | 0) - (D(k | 0) | 0) | 0;\n if (g >>> 0 <= 30) {\n c = g + 1 | 0;\n i = 31 - g | 0;\n h = c;\n a = k << i | l >>> (c >>> 0);\n c = k >>> (c >>> 0);\n g = 0;\n i = l << i;\n break;\n }\n if (!f) {\n o = 0;\n p = 0;\n return (F(o | 0), p) | 0;\n }\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = j | c & 0;\n o = 0;\n p = 0;\n return (F(o | 0), p) | 0;\n }\n while (0);\n if (!h) {\n k = i;\n j = 0;\n i = 0;\n } else {\n m = d | 0;\n l = n | e & 0;\n k = Zc(m | 0, l | 0, -1, -1) | 0;\n d = G() | 0;\n j = i;\n i = 0;\n do {\n e = j;\n j = g >>> 31 | j << 1;\n g = i | g << 1;\n e = a << 1 | e >>> 31 | 0;\n n = a >>> 31 | c << 1 | 0;\n _c(k | 0, d | 0, e | 0, n | 0);\n p = G() | 0;\n o = p >> 31 | ((p | 0) < 0 ? -1 : 0) << 1;\n i = o & 1;\n a = _c(e | 0, n | 0, o & m | 0, (((p | 0) < 0 ? -1 : 0) >> 31 | ((p | 0) < 0 ? -1 : 0) << 1) & l | 0) | 0;\n c = G() | 0;\n h = h - 1 | 0;\n }while ((h | 0) != 0);\n k = j;\n j = 0;\n }\n h = 0;\n if (f | 0) {\n b[f >> 2] = a;\n b[f + 4 >> 2] = c;\n }\n o = (g | 0) >>> 31 | (k | h) << 1 | (h << 1 | g >>> 31) & 0 | j;\n p = (g << 1 | 0) & -2 | i;\n return (F(o | 0), p) | 0;\n }\n function bd(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0;\n g = S;\n S = S + 16 | 0;\n f = g | 0;\n ad(a, c, d, e, f);\n S = g;\n return (F(b[f + 4 >> 2] | 0), b[f >> 2] | 0) | 0;\n }\n function cd(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n if ((c | 0) < 32) {\n F(b >>> c | 0);\n return a >>> c | (b & (1 << c) - 1) << 32 - c;\n }\n F(0);\n return b >>> c - 32 | 0;\n }\n function dd(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n if ((c | 0) < 32) {\n F(b << c | (a & (1 << c) - 1 << 32 - c) >>> 32 - c | 0);\n return a << c;\n }\n F(a << c - 32 | 0);\n return 0;\n }\n function ed(a, b) {\n a = +a;\n b = +b;\n if (a != a) return +b;\n if (b != b) return +a;\n return +C(+a, +b);\n }\n function fd(a) {\n a = +a;\n return a >= 0.0 ? +p(a + .5) : +A(a - .5);\n }\n function gd(c, d, e) {\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0;\n if ((e | 0) >= 8192) {\n K(c | 0, d | 0, e | 0);\n return c | 0;\n }\n h = c | 0;\n g = c + e | 0;\n if ((c & 3) == (d & 3)) {\n while(c & 3){\n if (!e) return h | 0;\n a[c >> 0] = a[d >> 0] | 0;\n c = c + 1 | 0;\n d = d + 1 | 0;\n e = e - 1 | 0;\n }\n e = g & -4 | 0;\n f = e - 64 | 0;\n while((c | 0) <= (f | 0)){\n b[c >> 2] = b[d >> 2];\n b[c + 4 >> 2] = b[d + 4 >> 2];\n b[c + 8 >> 2] = b[d + 8 >> 2];\n b[c + 12 >> 2] = b[d + 12 >> 2];\n b[c + 16 >> 2] = b[d + 16 >> 2];\n b[c + 20 >> 2] = b[d + 20 >> 2];\n b[c + 24 >> 2] = b[d + 24 >> 2];\n b[c + 28 >> 2] = b[d + 28 >> 2];\n b[c + 32 >> 2] = b[d + 32 >> 2];\n b[c + 36 >> 2] = b[d + 36 >> 2];\n b[c + 40 >> 2] = b[d + 40 >> 2];\n b[c + 44 >> 2] = b[d + 44 >> 2];\n b[c + 48 >> 2] = b[d + 48 >> 2];\n b[c + 52 >> 2] = b[d + 52 >> 2];\n b[c + 56 >> 2] = b[d + 56 >> 2];\n b[c + 60 >> 2] = b[d + 60 >> 2];\n c = c + 64 | 0;\n d = d + 64 | 0;\n }\n while((c | 0) < (e | 0)){\n b[c >> 2] = b[d >> 2];\n c = c + 4 | 0;\n d = d + 4 | 0;\n }\n } else {\n e = g - 4 | 0;\n while((c | 0) < (e | 0)){\n a[c >> 0] = a[d >> 0] | 0;\n a[c + 1 >> 0] = a[d + 1 >> 0] | 0;\n a[c + 2 >> 0] = a[d + 2 >> 0] | 0;\n a[c + 3 >> 0] = a[d + 3 >> 0] | 0;\n c = c + 4 | 0;\n d = d + 4 | 0;\n }\n }\n while((c | 0) < (g | 0)){\n a[c >> 0] = a[d >> 0] | 0;\n c = c + 1 | 0;\n d = d + 1 | 0;\n }\n return h | 0;\n }\n function hd(c, d, e) {\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0, i = 0;\n h = c + e | 0;\n d = d & 255;\n if ((e | 0) >= 67) {\n while(c & 3){\n a[c >> 0] = d;\n c = c + 1 | 0;\n }\n f = h & -4 | 0;\n i = d | d << 8 | d << 16 | d << 24;\n g = f - 64 | 0;\n while((c | 0) <= (g | 0)){\n b[c >> 2] = i;\n b[c + 4 >> 2] = i;\n b[c + 8 >> 2] = i;\n b[c + 12 >> 2] = i;\n b[c + 16 >> 2] = i;\n b[c + 20 >> 2] = i;\n b[c + 24 >> 2] = i;\n b[c + 28 >> 2] = i;\n b[c + 32 >> 2] = i;\n b[c + 36 >> 2] = i;\n b[c + 40 >> 2] = i;\n b[c + 44 >> 2] = i;\n b[c + 48 >> 2] = i;\n b[c + 52 >> 2] = i;\n b[c + 56 >> 2] = i;\n b[c + 60 >> 2] = i;\n c = c + 64 | 0;\n }\n while((c | 0) < (f | 0)){\n b[c >> 2] = i;\n c = c + 4 | 0;\n }\n }\n while((c | 0) < (h | 0)){\n a[c >> 0] = d;\n c = c + 1 | 0;\n }\n return h - e | 0;\n }\n function id(a) {\n a = +a;\n return a >= 0.0 ? +p(a + .5) : +A(a - .5);\n }\n function jd(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0;\n e = J() | 0;\n d = b[g >> 2] | 0;\n c = d + a | 0;\n if ((a | 0) > 0 & (c | 0) < (d | 0) | (c | 0) < 0) {\n M(c | 0);\n I(12);\n return -1;\n }\n if ((c | 0) > (e | 0)) {\n if (!(L(c | 0) | 0)) {\n I(12);\n return -1;\n }\n }\n b[g >> 2] = c;\n return d | 0;\n } // EMSCRIPTEN_END_FUNCS\n return {\n ___uremdi3: bd,\n _bitshift64Lshr: cd,\n _bitshift64Shl: dd,\n _calloc: Yc,\n _cellAreaKm2: ub,\n _cellAreaM2: vb,\n _cellAreaRads2: tb,\n _compact: Hb,\n _destroyLinkedPolygon: jc,\n _edgeLengthKm: pb,\n _edgeLengthM: qb,\n _emscripten_replace_memory: V,\n _exactEdgeLengthKm: xb,\n _exactEdgeLengthM: yb,\n _exactEdgeLengthRads: wb,\n _experimentalH3ToLocalIj: oc,\n _experimentalLocalIjToH3: pc,\n _free: Xc,\n _geoToH3: Sb,\n _getDestinationH3IndexFromUnidirectionalEdge: cc,\n _getH3IndexesFromUnidirectionalEdge: ec,\n _getH3UnidirectionalEdge: ac,\n _getH3UnidirectionalEdgeBoundary: gc,\n _getH3UnidirectionalEdgesFromHexagon: fc,\n _getOriginH3IndexFromUnidirectionalEdge: bc,\n _getPentagonIndexes: _b,\n _getRes0Indexes: va,\n _h3Distance: qc,\n _h3GetBaseCell: Ab,\n _h3GetFaces: Yb,\n _h3GetResolution: zb,\n _h3IndexesAreNeighbors: $b,\n _h3IsPentagon: Fb,\n _h3IsResClassIII: Kb,\n _h3IsValid: Bb,\n _h3Line: sc,\n _h3LineSize: rc,\n _h3SetToLinkedGeo: ka,\n _h3ToCenterChild: Gb,\n _h3ToChildren: Eb,\n _h3ToGeo: Vb,\n _h3ToGeoBoundary: Wb,\n _h3ToParent: Cb,\n _h3UnidirectionalEdgeIsValid: dc,\n _hexAreaKm2: nb,\n _hexAreaM2: ob,\n _hexRing: ea,\n _i64Subtract: _c,\n _kRing: $,\n _kRingDistances: aa,\n _llvm_minnum_f64: ed,\n _llvm_round_f64: fd,\n _malloc: Wc,\n _maxFaceCount: Xb,\n _maxH3ToChildrenSize: Db,\n _maxKringSize: _,\n _maxPolyfillSize: fa,\n _maxUncompactSize: Jb,\n _memcpy: gd,\n _memset: hd,\n _numHexagons: rb,\n _pentagonIndexCount: Zb,\n _pointDistKm: jb,\n _pointDistM: kb,\n _pointDistRads: ib,\n _polyfill: ga,\n _res0IndexCount: ua,\n _round: id,\n _sbrk: jd,\n _sizeOfCoordIJ: Ec,\n _sizeOfGeoBoundary: Ac,\n _sizeOfGeoCoord: zc,\n _sizeOfGeoPolygon: Cc,\n _sizeOfGeofence: Bc,\n _sizeOfH3Index: yc,\n _sizeOfLinkedGeoPolygon: Dc,\n _uncompact: Ib,\n establishStackSpace: Z,\n stackAlloc: W,\n stackRestore: Y,\n stackSave: X\n };\n }(asmGlobalArg, asmLibraryArg, buffer);\n var ___uremdi3 = Module[\"___uremdi3\"] = asm[\"___uremdi3\"];\n var _bitshift64Lshr = Module[\"_bitshift64Lshr\"] = asm[\"_bitshift64Lshr\"];\n var _bitshift64Shl = Module[\"_bitshift64Shl\"] = asm[\"_bitshift64Shl\"];\n var _calloc = Module[\"_calloc\"] = asm[\"_calloc\"];\n var _cellAreaKm2 = Module[\"_cellAreaKm2\"] = asm[\"_cellAreaKm2\"];\n var _cellAreaM2 = Module[\"_cellAreaM2\"] = asm[\"_cellAreaM2\"];\n var _cellAreaRads2 = Module[\"_cellAreaRads2\"] = asm[\"_cellAreaRads2\"];\n var _compact = Module[\"_compact\"] = asm[\"_compact\"];\n var _destroyLinkedPolygon = Module[\"_destroyLinkedPolygon\"] = asm[\"_destroyLinkedPolygon\"];\n var _edgeLengthKm = Module[\"_edgeLengthKm\"] = asm[\"_edgeLengthKm\"];\n var _edgeLengthM = Module[\"_edgeLengthM\"] = asm[\"_edgeLengthM\"];\n var _emscripten_replace_memory = Module[\"_emscripten_replace_memory\"] = asm[\"_emscripten_replace_memory\"];\n var _exactEdgeLengthKm = Module[\"_exactEdgeLengthKm\"] = asm[\"_exactEdgeLengthKm\"];\n var _exactEdgeLengthM = Module[\"_exactEdgeLengthM\"] = asm[\"_exactEdgeLengthM\"];\n var _exactEdgeLengthRads = Module[\"_exactEdgeLengthRads\"] = asm[\"_exactEdgeLengthRads\"];\n var _experimentalH3ToLocalIj = Module[\"_experimentalH3ToLocalIj\"] = asm[\"_experimentalH3ToLocalIj\"];\n var _experimentalLocalIjToH3 = Module[\"_experimentalLocalIjToH3\"] = asm[\"_experimentalLocalIjToH3\"];\n var _free = Module[\"_free\"] = asm[\"_free\"];\n var _geoToH3 = Module[\"_geoToH3\"] = asm[\"_geoToH3\"];\n var _getDestinationH3IndexFromUnidirectionalEdge = Module[\"_getDestinationH3IndexFromUnidirectionalEdge\"] = asm[\"_getDestinationH3IndexFromUnidirectionalEdge\"];\n var _getH3IndexesFromUnidirectionalEdge = Module[\"_getH3IndexesFromUnidirectionalEdge\"] = asm[\"_getH3IndexesFromUnidirectionalEdge\"];\n var _getH3UnidirectionalEdge = Module[\"_getH3UnidirectionalEdge\"] = asm[\"_getH3UnidirectionalEdge\"];\n var _getH3UnidirectionalEdgeBoundary = Module[\"_getH3UnidirectionalEdgeBoundary\"] = asm[\"_getH3UnidirectionalEdgeBoundary\"];\n var _getH3UnidirectionalEdgesFromHexagon = Module[\"_getH3UnidirectionalEdgesFromHexagon\"] = asm[\"_getH3UnidirectionalEdgesFromHexagon\"];\n var _getOriginH3IndexFromUnidirectionalEdge = Module[\"_getOriginH3IndexFromUnidirectionalEdge\"] = asm[\"_getOriginH3IndexFromUnidirectionalEdge\"];\n var _getPentagonIndexes = Module[\"_getPentagonIndexes\"] = asm[\"_getPentagonIndexes\"];\n var _getRes0Indexes = Module[\"_getRes0Indexes\"] = asm[\"_getRes0Indexes\"];\n var _h3Distance = Module[\"_h3Distance\"] = asm[\"_h3Distance\"];\n var _h3GetBaseCell = Module[\"_h3GetBaseCell\"] = asm[\"_h3GetBaseCell\"];\n var _h3GetFaces = Module[\"_h3GetFaces\"] = asm[\"_h3GetFaces\"];\n var _h3GetResolution = Module[\"_h3GetResolution\"] = asm[\"_h3GetResolution\"];\n var _h3IndexesAreNeighbors = Module[\"_h3IndexesAreNeighbors\"] = asm[\"_h3IndexesAreNeighbors\"];\n var _h3IsPentagon = Module[\"_h3IsPentagon\"] = asm[\"_h3IsPentagon\"];\n var _h3IsResClassIII = Module[\"_h3IsResClassIII\"] = asm[\"_h3IsResClassIII\"];\n var _h3IsValid = Module[\"_h3IsValid\"] = asm[\"_h3IsValid\"];\n var _h3Line = Module[\"_h3Line\"] = asm[\"_h3Line\"];\n var _h3LineSize = Module[\"_h3LineSize\"] = asm[\"_h3LineSize\"];\n var _h3SetToLinkedGeo = Module[\"_h3SetToLinkedGeo\"] = asm[\"_h3SetToLinkedGeo\"];\n var _h3ToCenterChild = Module[\"_h3ToCenterChild\"] = asm[\"_h3ToCenterChild\"];\n var _h3ToChildren = Module[\"_h3ToChildren\"] = asm[\"_h3ToChildren\"];\n var _h3ToGeo = Module[\"_h3ToGeo\"] = asm[\"_h3ToGeo\"];\n var _h3ToGeoBoundary = Module[\"_h3ToGeoBoundary\"] = asm[\"_h3ToGeoBoundary\"];\n var _h3ToParent = Module[\"_h3ToParent\"] = asm[\"_h3ToParent\"];\n var _h3UnidirectionalEdgeIsValid = Module[\"_h3UnidirectionalEdgeIsValid\"] = asm[\"_h3UnidirectionalEdgeIsValid\"];\n var _hexAreaKm2 = Module[\"_hexAreaKm2\"] = asm[\"_hexAreaKm2\"];\n var _hexAreaM2 = Module[\"_hexAreaM2\"] = asm[\"_hexAreaM2\"];\n var _hexRing = Module[\"_hexRing\"] = asm[\"_hexRing\"];\n var _i64Subtract = Module[\"_i64Subtract\"] = asm[\"_i64Subtract\"];\n var _kRing = Module[\"_kRing\"] = asm[\"_kRing\"];\n var _kRingDistances = Module[\"_kRingDistances\"] = asm[\"_kRingDistances\"];\n var _llvm_minnum_f64 = Module[\"_llvm_minnum_f64\"] = asm[\"_llvm_minnum_f64\"];\n var _llvm_round_f64 = Module[\"_llvm_round_f64\"] = asm[\"_llvm_round_f64\"];\n var _malloc = Module[\"_malloc\"] = asm[\"_malloc\"];\n var _maxFaceCount = Module[\"_maxFaceCount\"] = asm[\"_maxFaceCount\"];\n var _maxH3ToChildrenSize = Module[\"_maxH3ToChildrenSize\"] = asm[\"_maxH3ToChildrenSize\"];\n var _maxKringSize = Module[\"_maxKringSize\"] = asm[\"_maxKringSize\"];\n var _maxPolyfillSize = Module[\"_maxPolyfillSize\"] = asm[\"_maxPolyfillSize\"];\n var _maxUncompactSize = Module[\"_maxUncompactSize\"] = asm[\"_maxUncompactSize\"];\n var _memcpy = Module[\"_memcpy\"] = asm[\"_memcpy\"];\n var _memset = Module[\"_memset\"] = asm[\"_memset\"];\n var _numHexagons = Module[\"_numHexagons\"] = asm[\"_numHexagons\"];\n var _pentagonIndexCount = Module[\"_pentagonIndexCount\"] = asm[\"_pentagonIndexCount\"];\n var _pointDistKm = Module[\"_pointDistKm\"] = asm[\"_pointDistKm\"];\n var _pointDistM = Module[\"_pointDistM\"] = asm[\"_pointDistM\"];\n var _pointDistRads = Module[\"_pointDistRads\"] = asm[\"_pointDistRads\"];\n var _polyfill = Module[\"_polyfill\"] = asm[\"_polyfill\"];\n var _res0IndexCount = Module[\"_res0IndexCount\"] = asm[\"_res0IndexCount\"];\n var _round = Module[\"_round\"] = asm[\"_round\"];\n var _sbrk = Module[\"_sbrk\"] = asm[\"_sbrk\"];\n var _sizeOfCoordIJ = Module[\"_sizeOfCoordIJ\"] = asm[\"_sizeOfCoordIJ\"];\n var _sizeOfGeoBoundary = Module[\"_sizeOfGeoBoundary\"] = asm[\"_sizeOfGeoBoundary\"];\n var _sizeOfGeoCoord = Module[\"_sizeOfGeoCoord\"] = asm[\"_sizeOfGeoCoord\"];\n var _sizeOfGeoPolygon = Module[\"_sizeOfGeoPolygon\"] = asm[\"_sizeOfGeoPolygon\"];\n var _sizeOfGeofence = Module[\"_sizeOfGeofence\"] = asm[\"_sizeOfGeofence\"];\n var _sizeOfH3Index = Module[\"_sizeOfH3Index\"] = asm[\"_sizeOfH3Index\"];\n var _sizeOfLinkedGeoPolygon = Module[\"_sizeOfLinkedGeoPolygon\"] = asm[\"_sizeOfLinkedGeoPolygon\"];\n var _uncompact = Module[\"_uncompact\"] = asm[\"_uncompact\"];\n var establishStackSpace = Module[\"establishStackSpace\"] = asm[\"establishStackSpace\"];\n var stackAlloc = Module[\"stackAlloc\"] = asm[\"stackAlloc\"];\n var stackRestore = Module[\"stackRestore\"] = asm[\"stackRestore\"];\n var stackSave = Module[\"stackSave\"] = asm[\"stackSave\"];\n Module[\"asm\"] = asm;\n Module[\"cwrap\"] = cwrap;\n Module[\"setValue\"] = setValue;\n Module[\"getValue\"] = getValue;\n Module[\"getTempRet0\"] = getTempRet0;\n if (memoryInitializer) {\n if (!isDataURI(memoryInitializer)) memoryInitializer = locateFile(memoryInitializer);\n addRunDependency(\"memory initializer\");\n var applyMemoryInitializer = function(data) {\n if (data.byteLength) data = new Uint8Array(data);\n HEAPU8.set(data, GLOBAL_BASE);\n if (Module[\"memoryInitializerRequest\"]) delete Module[\"memoryInitializerRequest\"].response;\n removeRunDependency(\"memory initializer\");\n };\n var doBrowserLoad = function() {\n readAsync(memoryInitializer, applyMemoryInitializer, function() {\n throw \"could not load memory initializer \" + memoryInitializer;\n });\n };\n var memoryInitializerBytes = tryParseAsDataURI(memoryInitializer);\n if (memoryInitializerBytes) applyMemoryInitializer(memoryInitializerBytes.buffer);\n else if (Module[\"memoryInitializerRequest\"]) {\n var useRequest = function() {\n var request = Module[\"memoryInitializerRequest\"];\n var response = request.response;\n if (request.status !== 200 && request.status !== 0) {\n var data = tryParseAsDataURI(Module[\"memoryInitializerRequestURL\"]);\n if (data) response = data.buffer;\n else {\n console.warn(\"a problem seems to have happened with Module.memoryInitializerRequest, status: \" + request.status + \", retrying \" + memoryInitializer);\n doBrowserLoad();\n return;\n }\n }\n applyMemoryInitializer(response);\n };\n if (Module[\"memoryInitializerRequest\"].response) setTimeout(useRequest, 0);\n else Module[\"memoryInitializerRequest\"].addEventListener(\"load\", useRequest);\n } else doBrowserLoad();\n }\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n function run(args) {\n args = args || arguments_;\n if (runDependencies > 0) return;\n preRun();\n if (runDependencies > 0) return;\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else doRun();\n }\n Module[\"run\"] = run;\n function abort(what) {\n if (Module[\"onAbort\"]) Module[\"onAbort\"](what);\n what += \"\";\n out(what);\n err(what);\n ABORT = true;\n throw \"abort(\" + what + \"). Build with -s ASSERTIONS=1 for more info.\";\n }\n Module[\"abort\"] = abort;\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [\n Module[\"preInit\"]\n ];\n while(Module[\"preInit\"].length > 0)Module[\"preInit\"].pop()();\n }\n run();\n return libh3;\n}(typeof $7b9f60117f9c280b$var$libh3 === \"object\" ? $7b9f60117f9c280b$var$libh3 : {});\n/*\n * Copyright 2018-2019 Uber Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ // Define the C bindings for the h3 library\n// Add some aliases to make the function definitions more intelligible\nvar $7b9f60117f9c280b$var$NUMBER = \"number\";\nvar $7b9f60117f9c280b$var$BOOLEAN = $7b9f60117f9c280b$var$NUMBER;\nvar $7b9f60117f9c280b$var$H3_LOWER = $7b9f60117f9c280b$var$NUMBER;\nvar $7b9f60117f9c280b$var$H3_UPPER = $7b9f60117f9c280b$var$NUMBER;\nvar $7b9f60117f9c280b$var$RESOLUTION = $7b9f60117f9c280b$var$NUMBER;\nvar $7b9f60117f9c280b$var$POINTER = $7b9f60117f9c280b$var$NUMBER; // Define the bindings to functions in the C lib. Functions are defined as\n// [name, return type, [arg types]]. You must run `npm run build-emscripten`\n// before new functions added here will be available.\nvar $7b9f60117f9c280b$var$BINDINGS = [\n [\n \"sizeOfH3Index\",\n $7b9f60117f9c280b$var$NUMBER\n ],\n [\n \"sizeOfGeoCoord\",\n $7b9f60117f9c280b$var$NUMBER\n ],\n [\n \"sizeOfGeoBoundary\",\n $7b9f60117f9c280b$var$NUMBER\n ],\n [\n \"sizeOfGeoPolygon\",\n $7b9f60117f9c280b$var$NUMBER\n ],\n [\n \"sizeOfGeofence\",\n $7b9f60117f9c280b$var$NUMBER\n ],\n [\n \"sizeOfLinkedGeoPolygon\",\n $7b9f60117f9c280b$var$NUMBER\n ],\n [\n \"sizeOfCoordIJ\",\n $7b9f60117f9c280b$var$NUMBER\n ],\n [\n \"h3IsValid\",\n $7b9f60117f9c280b$var$BOOLEAN,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"geoToH3\",\n $7b9f60117f9c280b$var$H3_LOWER,\n [\n $7b9f60117f9c280b$var$NUMBER,\n $7b9f60117f9c280b$var$NUMBER,\n $7b9f60117f9c280b$var$RESOLUTION\n ]\n ],\n [\n \"h3ToGeo\",\n null,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"h3ToGeoBoundary\",\n null,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"maxKringSize\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$NUMBER\n ]\n ],\n [\n \"kRing\",\n null,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$NUMBER,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"kRingDistances\",\n null,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$NUMBER,\n $7b9f60117f9c280b$var$POINTER,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"hexRing\",\n null,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$NUMBER,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"maxPolyfillSize\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$POINTER,\n $7b9f60117f9c280b$var$RESOLUTION\n ]\n ],\n [\n \"polyfill\",\n null,\n [\n $7b9f60117f9c280b$var$POINTER,\n $7b9f60117f9c280b$var$RESOLUTION,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"h3SetToLinkedGeo\",\n null,\n [\n $7b9f60117f9c280b$var$POINTER,\n $7b9f60117f9c280b$var$NUMBER,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"destroyLinkedPolygon\",\n null,\n [\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"compact\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$POINTER,\n $7b9f60117f9c280b$var$POINTER,\n $7b9f60117f9c280b$var$NUMBER\n ]\n ],\n [\n \"uncompact\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$POINTER,\n $7b9f60117f9c280b$var$NUMBER,\n $7b9f60117f9c280b$var$POINTER,\n $7b9f60117f9c280b$var$NUMBER,\n $7b9f60117f9c280b$var$RESOLUTION\n ]\n ],\n [\n \"maxUncompactSize\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$POINTER,\n $7b9f60117f9c280b$var$NUMBER,\n $7b9f60117f9c280b$var$RESOLUTION\n ]\n ],\n [\n \"h3IsPentagon\",\n $7b9f60117f9c280b$var$BOOLEAN,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"h3IsResClassIII\",\n $7b9f60117f9c280b$var$BOOLEAN,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"h3GetBaseCell\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"h3GetResolution\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"maxFaceCount\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"h3GetFaces\",\n null,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"h3ToParent\",\n $7b9f60117f9c280b$var$H3_LOWER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$RESOLUTION\n ]\n ],\n [\n \"h3ToChildren\",\n null,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$RESOLUTION,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"h3ToCenterChild\",\n $7b9f60117f9c280b$var$H3_LOWER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$RESOLUTION\n ]\n ],\n [\n \"maxH3ToChildrenSize\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$RESOLUTION\n ]\n ],\n [\n \"h3IndexesAreNeighbors\",\n $7b9f60117f9c280b$var$BOOLEAN,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"getH3UnidirectionalEdge\",\n $7b9f60117f9c280b$var$H3_LOWER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"getOriginH3IndexFromUnidirectionalEdge\",\n $7b9f60117f9c280b$var$H3_LOWER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"getDestinationH3IndexFromUnidirectionalEdge\",\n $7b9f60117f9c280b$var$H3_LOWER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"h3UnidirectionalEdgeIsValid\",\n $7b9f60117f9c280b$var$BOOLEAN,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"getH3IndexesFromUnidirectionalEdge\",\n null,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"getH3UnidirectionalEdgesFromHexagon\",\n null,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"getH3UnidirectionalEdgeBoundary\",\n null,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"h3Distance\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"h3Line\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"h3LineSize\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"experimentalH3ToLocalIj\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"experimentalLocalIjToH3\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER,\n $7b9f60117f9c280b$var$POINTER,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"hexAreaM2\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$RESOLUTION\n ]\n ],\n [\n \"hexAreaKm2\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$RESOLUTION\n ]\n ],\n [\n \"edgeLengthM\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$RESOLUTION\n ]\n ],\n [\n \"edgeLengthKm\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$RESOLUTION\n ]\n ],\n [\n \"pointDistM\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$POINTER,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"pointDistKm\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$POINTER,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"pointDistRads\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$POINTER,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"cellAreaM2\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"cellAreaKm2\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"cellAreaRads2\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"exactEdgeLengthM\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"exactEdgeLengthKm\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"exactEdgeLengthRads\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$H3_LOWER,\n $7b9f60117f9c280b$var$H3_UPPER\n ]\n ],\n [\n \"numHexagons\",\n $7b9f60117f9c280b$var$NUMBER,\n [\n $7b9f60117f9c280b$var$RESOLUTION\n ]\n ],\n [\n \"getRes0Indexes\",\n null,\n [\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"res0IndexCount\",\n $7b9f60117f9c280b$var$NUMBER\n ],\n [\n \"getPentagonIndexes\",\n null,\n [\n $7b9f60117f9c280b$var$NUMBER,\n $7b9f60117f9c280b$var$POINTER\n ]\n ],\n [\n \"pentagonIndexCount\",\n $7b9f60117f9c280b$var$NUMBER\n ]\n];\n/*\n * Copyright 2018-2019 Uber Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ var $7b9f60117f9c280b$var$H3 = {}; // Create the bound functions themselves\n$7b9f60117f9c280b$var$BINDINGS.forEach(function bind(def) {\n $7b9f60117f9c280b$var$H3[def[0]] = $7b9f60117f9c280b$var$libh3.cwrap.apply($7b9f60117f9c280b$var$libh3, def);\n}); // Alias the hexidecimal base for legibility\nvar $7b9f60117f9c280b$var$BASE_16 = 16; // ----------------------------------------------------------------------------\n// Byte size imports\nvar $7b9f60117f9c280b$var$SZ_INT = 4;\nvar $7b9f60117f9c280b$var$SZ_PTR = 4;\nvar $7b9f60117f9c280b$var$SZ_DBL = 8;\nvar $7b9f60117f9c280b$var$SZ_H3INDEX = $7b9f60117f9c280b$var$H3.sizeOfH3Index();\nvar $7b9f60117f9c280b$var$SZ_GEOCOORD = $7b9f60117f9c280b$var$H3.sizeOfGeoCoord();\nvar $7b9f60117f9c280b$var$SZ_GEOBOUNDARY = $7b9f60117f9c280b$var$H3.sizeOfGeoBoundary();\nvar $7b9f60117f9c280b$var$SZ_GEOPOLYGON = $7b9f60117f9c280b$var$H3.sizeOfGeoPolygon();\nvar $7b9f60117f9c280b$var$SZ_GEOFENCE = $7b9f60117f9c280b$var$H3.sizeOfGeofence();\nvar $7b9f60117f9c280b$var$SZ_LINKED_GEOPOLYGON = $7b9f60117f9c280b$var$H3.sizeOfLinkedGeoPolygon();\nvar $7b9f60117f9c280b$var$SZ_COORDIJ = $7b9f60117f9c280b$var$H3.sizeOfCoordIJ(); // ----------------------------------------------------------------------------\n// Custom types\n/**\n * 64-bit hexidecimal string representation of an H3 index\n * @static\n * @typedef {string} H3Index\n */ /**\n * 64-bit hexidecimal string representation of an H3 index,\n * or two 32-bit integers in little endian order in an array.\n * @static\n * @typedef {string | number[]} H3IndexInput\n */ /**\n * Coordinates as an `{i, j}` pair\n * @static\n * @typedef CoordIJ\n * @type {Object}\n * @property {number} i\n * @property {number} j\n */ // ----------------------------------------------------------------------------\n// Unit constants\n/**\n * Length/Area units\n * @static\n * @typedef UNITS\n * @type {Object}\n * @property {string} m\n * @property {string} m2\n * @property {string} km\n * @property {string} km2\n * @property {string} rads\n * @property {string} rads2\n */ var $7b9f60117f9c280b$export$a037d132965e1c9f = {\n m: \"m\",\n m2: \"m2\",\n km: \"km\",\n km2: \"km2\",\n rads: \"rads\",\n rads2: \"rads2\"\n}; // ----------------------------------------------------------------------------\n// Utilities and helpers\n/**\n * Validate a resolution, throwing an error if invalid\n * @private\n * @param {mixed} res Value to validate\n * @throws {Error} Error if invalid\n */ function $7b9f60117f9c280b$var$validateRes(res) {\n if (typeof res !== \"number\" || res < 0 || res > 15 || Math.floor(res) !== res) throw new Error(\"Invalid resolution: \" + res);\n}\nvar $7b9f60117f9c280b$var$INVALID_HEXIDECIMAL_CHAR = /[^0-9a-fA-F]/;\n/**\n * Convert an H3 index (64-bit hexidecimal string) into a \"split long\" - a pair of 32-bit ints\n * @private\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {number[]} A two-element array with 32 lower bits and 32 upper bits\n */ function $7b9f60117f9c280b$export$746fb3599c285d6a(h3Index) {\n if (Array.isArray(h3Index) && h3Index.length === 2 && Number.isInteger(h3Index[0]) && Number.isInteger(h3Index[1])) return h3Index;\n if (typeof h3Index !== \"string\" || $7b9f60117f9c280b$var$INVALID_HEXIDECIMAL_CHAR.test(h3Index)) return [\n 0,\n 0\n ];\n var upper = parseInt(h3Index.substring(0, h3Index.length - 8), $7b9f60117f9c280b$var$BASE_16);\n var lower = parseInt(h3Index.substring(h3Index.length - 8), $7b9f60117f9c280b$var$BASE_16);\n return [\n lower,\n upper\n ];\n}\n/**\n * Convert a 32-bit int to a hexdecimal string\n * @private\n * @param {number} num Integer to convert\n * @return {H3Index} Hexidecimal string\n */ function $7b9f60117f9c280b$var$hexFrom32Bit(num) {\n if (num >= 0) return num.toString($7b9f60117f9c280b$var$BASE_16);\n // Handle negative numbers\n num = num & 0x7fffffff;\n var tempStr = $7b9f60117f9c280b$var$zeroPad(8, num.toString($7b9f60117f9c280b$var$BASE_16));\n var topNum = (parseInt(tempStr[0], $7b9f60117f9c280b$var$BASE_16) + 8).toString($7b9f60117f9c280b$var$BASE_16);\n tempStr = topNum + tempStr.substring(1);\n return tempStr;\n}\n/**\n * Get a H3 index from a split long (pair of 32-bit ints)\n * @private\n * @param {number} lower Lower 32 bits\n * @param {number} upper Upper 32 bits\n * @return {H3Index} H3 index\n */ function $7b9f60117f9c280b$export$94dcc16939fe0462(lower, upper) {\n return $7b9f60117f9c280b$var$hexFrom32Bit(upper) + $7b9f60117f9c280b$var$zeroPad(8, $7b9f60117f9c280b$var$hexFrom32Bit(lower));\n}\n/**\n * Zero-pad a string to a given length\n * @private\n * @param {number} fullLen Target length\n * @param {string} numStr String to zero-pad\n * @return {string} Zero-padded string\n */ function $7b9f60117f9c280b$var$zeroPad(fullLen, numStr) {\n var numZeroes = fullLen - numStr.length;\n var outStr = \"\";\n for(var i = 0; i < numZeroes; i++)outStr += \"0\";\n outStr = outStr + numStr;\n return outStr;\n}\n/**\n * Populate a C-appropriate Geofence struct from a polygon array\n * @private\n * @param {Array[]} polygonArray Polygon, as an array of coordinate pairs\n * @param {number} geofence C pointer to a Geofence struct\n * @param {boolean} isGeoJson Whether coordinates are in [lng, lat] order per GeoJSON spec\n * @return {number} C pointer to populated Geofence struct\n */ function $7b9f60117f9c280b$var$polygonArrayToGeofence(polygonArray, geofence, isGeoJson) {\n var numVerts = polygonArray.length;\n var geoCoordArray = $7b9f60117f9c280b$var$libh3._calloc(numVerts, $7b9f60117f9c280b$var$SZ_GEOCOORD); // Support [lng, lat] pairs if GeoJSON is specified\n var latIndex = isGeoJson ? 1 : 0;\n var lngIndex = isGeoJson ? 0 : 1;\n for(var i = 0; i < numVerts * 2; i += 2)$7b9f60117f9c280b$var$libh3.HEAPF64.set([\n polygonArray[i / 2][latIndex],\n polygonArray[i / 2][lngIndex]\n ].map($7b9f60117f9c280b$export$18f2af2888c1a46b), geoCoordArray / $7b9f60117f9c280b$var$SZ_DBL + i);\n $7b9f60117f9c280b$var$libh3.HEAPU32.set([\n numVerts,\n geoCoordArray\n ], geofence / $7b9f60117f9c280b$var$SZ_INT);\n return geofence;\n}\n/**\n * Create a C-appropriate GeoPolygon struct from an array of polygons\n * @private\n * @param {Array[]} coordinates Array of polygons, each an array of coordinate pairs\n * @param {boolean} isGeoJson Whether coordinates are in [lng, lat] order per GeoJSON spec\n * @return {number} C pointer to populated GeoPolygon struct\n */ function $7b9f60117f9c280b$var$coordinatesToGeoPolygon(coordinates, isGeoJson) {\n // Any loops beyond the first loop are holes\n var numHoles = coordinates.length - 1;\n var geoPolygon = $7b9f60117f9c280b$var$libh3._calloc($7b9f60117f9c280b$var$SZ_GEOPOLYGON); // Byte positions within the struct\n var geofenceOffset = 0;\n var numHolesOffset = geofenceOffset + $7b9f60117f9c280b$var$SZ_GEOFENCE;\n var holesOffset = numHolesOffset + $7b9f60117f9c280b$var$SZ_INT; // geofence is first part of struct\n $7b9f60117f9c280b$var$polygonArrayToGeofence(coordinates[0], geoPolygon + geofenceOffset, isGeoJson);\n var holes;\n if (numHoles > 0) {\n holes = $7b9f60117f9c280b$var$libh3._calloc(numHoles, $7b9f60117f9c280b$var$SZ_GEOFENCE);\n for(var i = 0; i < numHoles; i++)$7b9f60117f9c280b$var$polygonArrayToGeofence(coordinates[i + 1], holes + $7b9f60117f9c280b$var$SZ_GEOFENCE * i, isGeoJson);\n }\n $7b9f60117f9c280b$var$libh3.setValue(geoPolygon + numHolesOffset, numHoles, \"i32\");\n $7b9f60117f9c280b$var$libh3.setValue(geoPolygon + holesOffset, holes, \"i32\");\n return geoPolygon;\n}\n/**\n * Free memory allocated for a GeoPolygon struct. It is an error to access the struct\n * after passing it to this method.\n * @private\n * @return {number} geoPolygon C pointer to populated GeoPolygon struct\n */ function $7b9f60117f9c280b$var$destroyGeoPolygon(geoPolygon) {\n // Byte positions within the struct\n var geofenceOffset = 0;\n var numHolesOffset = geofenceOffset + $7b9f60117f9c280b$var$SZ_GEOFENCE;\n var holesOffset = numHolesOffset + $7b9f60117f9c280b$var$SZ_INT; // Offset of the geofence vertex array pointer within the Geofence struct\n var geofenceArrayOffset = $7b9f60117f9c280b$var$SZ_INT; // Free the outer vertex array\n $7b9f60117f9c280b$var$libh3._free($7b9f60117f9c280b$var$libh3.getValue(geoPolygon + geofenceOffset + geofenceArrayOffset, \"i8*\")); // Free the vertex array for the holes, if any\n var numHoles = $7b9f60117f9c280b$var$libh3.getValue(geoPolygon + numHolesOffset, \"i32\");\n if (numHoles > 0) {\n var holes = $7b9f60117f9c280b$var$libh3.getValue(geoPolygon + holesOffset, \"i32\");\n for(var i = 0; i < numHoles; i++)$7b9f60117f9c280b$var$libh3._free($7b9f60117f9c280b$var$libh3.getValue(holes + $7b9f60117f9c280b$var$SZ_GEOFENCE * i + geofenceArrayOffset, \"i8*\"));\n $7b9f60117f9c280b$var$libh3._free(holes);\n }\n $7b9f60117f9c280b$var$libh3._free(geoPolygon);\n}\n/**\n * Read a long value, returning the lower and upper portions as separate 32-bit integers.\n * Because the upper bits are returned via side effect, the argument to this function is\n * intended to be the invocation that caused the side effect, e.g. readLong(H3.getSomeLong())\n * @private\n * @param {number} invocation Invoked function returning a long value. The actual return\n * value of these functions is a 32-bit integer.\n * @return {number} Long value as a [lower, upper] pair\n */ function $7b9f60117f9c280b$var$readLong(invocation) {\n // Upper 32-bits of the long set via side-effect\n var upper = $7b9f60117f9c280b$var$libh3.getTempRet0();\n return [\n invocation,\n upper\n ];\n}\n/**\n * Read an H3 index from a C return value. As with readLong, the argument to this function\n * is intended to be an invocation, e.g. readH3Index(H3.getSomeAddress()), to help ensure that\n * the temp value storing the upper bits of the long is still set.\n * @private\n * @param {number} invocation Invoked function returning a single H3 index\n * @return {H3Index} H3 index, or null if index was invalid\n */ function $7b9f60117f9c280b$var$readH3Index(invocation) {\n var ref = $7b9f60117f9c280b$var$readLong(invocation);\n var lower = ref[0];\n var upper = ref[1]; // The lower bits are allowed to be 0s, but if the upper bits are 0\n // this represents an invalid H3 index\n return upper ? $7b9f60117f9c280b$export$94dcc16939fe0462(lower, upper) : null;\n}\n/**\n * Read an H3 index from a pointer to C memory.\n * @private\n * @param {number} cAddress Pointer to allocated C memory\n * @param {number} offset Offset, in number of H3 indexes, in case we're\n * reading an array\n * @return {H3Index} H3 index, or null if index was invalid\n */ function $7b9f60117f9c280b$var$readH3IndexFromPointer(cAddress, offset) {\n if (offset === void 0) offset = 0;\n var lower = $7b9f60117f9c280b$var$libh3.getValue(cAddress + $7b9f60117f9c280b$var$SZ_INT * offset * 2, \"i32\");\n var upper = $7b9f60117f9c280b$var$libh3.getValue(cAddress + $7b9f60117f9c280b$var$SZ_INT * (offset * 2 + 1), \"i32\"); // The lower bits are allowed to be 0s, but if the upper bits are 0\n // this represents an invalid H3 index\n return upper ? $7b9f60117f9c280b$export$94dcc16939fe0462(lower, upper) : null;\n}\n/**\n * Store an H3 index in C memory. Primarily used as an efficient way to\n * write sets of hexagons.\n * @private\n * @param {H3IndexInput} h3Index H3 index to store\n * @param {number} cAddress Pointer to allocated C memory\n * @param {number} offset Offset, in number of H3 indexes from beginning\n * of the current array\n */ function $7b9f60117f9c280b$var$storeH3Index(h3Index, cAddress, offset) {\n // HEAPU32 is a typed array projection on the index space\n // as unsigned 32-bit integers. This means the index needs\n // to be divided by SZ_INT (4) to access correctly. Also,\n // the H3 index is 64 bits, so we skip by twos as we're writing\n // to 32-bit integers in the proper order.\n $7b9f60117f9c280b$var$libh3.HEAPU32.set($7b9f60117f9c280b$export$746fb3599c285d6a(h3Index), cAddress / $7b9f60117f9c280b$var$SZ_INT + 2 * offset);\n}\n/**\n * Read an array of 64-bit H3 indexes from C and convert to a JS array of\n * H3 index strings\n * @private\n * @param {number} cAddress Pointer to C ouput array\n * @param {number} maxCount Max number of hexagons in array. Hexagons with\n * the value 0 will be skipped, so this isn't\n * necessarily the length of the output array.\n * @return {H3Index[]} Array of H3 indexes\n */ function $7b9f60117f9c280b$var$readArrayOfHexagons(cAddress, maxCount) {\n var out = [];\n for(var i = 0; i < maxCount; i++){\n var h3Index = $7b9f60117f9c280b$var$readH3IndexFromPointer(cAddress, i);\n if (h3Index !== null) out.push(h3Index);\n }\n return out;\n}\n/**\n * Store an array of H3 index strings as a C array of 64-bit integers.\n * @private\n * @param {number} cAddress Pointer to C input array\n * @param {H3IndexInput[]} hexagons H3 indexes to pass to the C lib\n */ function $7b9f60117f9c280b$var$storeArrayOfHexagons(cAddress, hexagons) {\n // Assuming the cAddress points to an already appropriately\n // allocated space\n var count = hexagons.length;\n for(var i = 0; i < count; i++)$7b9f60117f9c280b$var$storeH3Index(hexagons[i], cAddress, i);\n}\n/**\n * Populate a C-appropriate GeoCoord struct from a [lat, lng] array\n * @private\n * @param {number} lat Coordinate latitude\n * @param {number} lng Coordinate longitude\n * @return {number} C pointer to populated GeoCoord struct\n */ function $7b9f60117f9c280b$var$storeGeoCoord(lat, lng) {\n var geoCoord = $7b9f60117f9c280b$var$libh3._calloc(1, $7b9f60117f9c280b$var$SZ_GEOCOORD);\n $7b9f60117f9c280b$var$libh3.HEAPF64.set([\n lat,\n lng\n ].map($7b9f60117f9c280b$export$18f2af2888c1a46b), geoCoord / $7b9f60117f9c280b$var$SZ_DBL);\n return geoCoord;\n}\nfunction $7b9f60117f9c280b$var$readSingleCoord(cAddress) {\n return $7b9f60117f9c280b$export$3eb27537c08caf0f($7b9f60117f9c280b$var$libh3.getValue(cAddress, \"double\"));\n}\n/**\n * Read a GeoCoord from C and return a [lat, lng] pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {number[]} [lat, lng] pair\n */ function $7b9f60117f9c280b$var$readGeoCoord(cAddress) {\n return [\n $7b9f60117f9c280b$var$readSingleCoord(cAddress),\n $7b9f60117f9c280b$var$readSingleCoord(cAddress + $7b9f60117f9c280b$var$SZ_DBL)\n ];\n}\n/**\n * Read a GeoCoord from C and return a GeoJSON-style [lng, lat] pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {number[]} [lng, lat] pair\n */ function $7b9f60117f9c280b$var$readGeoCoordGeoJson(cAddress) {\n return [\n $7b9f60117f9c280b$var$readSingleCoord(cAddress + $7b9f60117f9c280b$var$SZ_DBL),\n $7b9f60117f9c280b$var$readSingleCoord(cAddress)\n ];\n}\n/**\n * Read the GeoBoundary structure into a list of geo coordinate pairs\n * @private\n * @param {number} geoBoundary C pointer to GeoBoundary struct\n * @param {boolean} geoJsonCoords Whether to provide GeoJSON coordinate order: [lng, lat]\n * @param {boolean} closedLoop Whether to close the loop\n * @return {Array[]} Array of geo coordinate pairs\n */ function $7b9f60117f9c280b$var$readGeoBoundary(geoBoundary, geoJsonCoords, closedLoop) {\n var numVerts = $7b9f60117f9c280b$var$libh3.getValue(geoBoundary, \"i32\"); // Note that though numVerts is an int, the coordinate doubles have to be\n // aligned to 8 bytes, hence the 8-byte offset here\n var vertsPos = geoBoundary + $7b9f60117f9c280b$var$SZ_DBL;\n var out = []; // Support [lng, lat] pairs if GeoJSON is specified\n var readCoord = geoJsonCoords ? $7b9f60117f9c280b$var$readGeoCoordGeoJson : $7b9f60117f9c280b$var$readGeoCoord;\n for(var i = 0; i < numVerts * 2; i += 2)out.push(readCoord(vertsPos + $7b9f60117f9c280b$var$SZ_DBL * i));\n if (closedLoop) // Close loop if GeoJSON is specified\n out.push(out[0]);\n return out;\n}\n/**\n * Read the LinkedGeoPolygon structure into a nested array of MultiPolygon coordinates\n * @private\n * @param {number} polygon C pointer to LinkedGeoPolygon struct\n * @param {boolean} formatAsGeoJson Whether to provide GeoJSON output: [lng, lat], closed loops\n * @return {number[][][][]} MultiPolygon-style output.\n */ function $7b9f60117f9c280b$var$readMultiPolygon(polygon, formatAsGeoJson) {\n var output = [];\n var readCoord = formatAsGeoJson ? $7b9f60117f9c280b$var$readGeoCoordGeoJson : $7b9f60117f9c280b$var$readGeoCoord;\n var loops;\n var loop;\n var coords;\n var coord; // Loop through the linked structure, building the output\n while(polygon){\n output.push(loops = []); // Follow ->first pointer\n loop = $7b9f60117f9c280b$var$libh3.getValue(polygon, \"i8*\");\n while(loop){\n loops.push(coords = []); // Follow ->first pointer\n coord = $7b9f60117f9c280b$var$libh3.getValue(loop, \"i8*\");\n while(coord){\n coords.push(readCoord(coord)); // Follow ->next pointer\n coord = $7b9f60117f9c280b$var$libh3.getValue(coord + $7b9f60117f9c280b$var$SZ_DBL * 2, \"i8*\");\n }\n if (formatAsGeoJson) // Close loop if GeoJSON is requested\n coords.push(coords[0]);\n // Follow ->next pointer\n loop = $7b9f60117f9c280b$var$libh3.getValue(loop + $7b9f60117f9c280b$var$SZ_PTR * 2, \"i8*\");\n } // Follow ->next pointer\n polygon = $7b9f60117f9c280b$var$libh3.getValue(polygon + $7b9f60117f9c280b$var$SZ_PTR * 2, \"i8*\");\n }\n return output;\n}\n/**\n * Read a CoordIJ from C and return an {i, j} pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {CoordIJ} {i, j} pair\n */ function $7b9f60117f9c280b$var$readCoordIJ(cAddress) {\n return {\n i: $7b9f60117f9c280b$var$libh3.getValue(cAddress, \"i32\"),\n j: $7b9f60117f9c280b$var$libh3.getValue(cAddress + $7b9f60117f9c280b$var$SZ_INT, \"i32\")\n };\n}\n/**\n * Store an {i, j} pair to a C CoordIJ struct.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {CoordIJ} {i, j} pair\n */ function $7b9f60117f9c280b$var$storeCoordIJ(cAddress, ref) {\n var i = ref.i;\n var j = ref.j;\n $7b9f60117f9c280b$var$libh3.setValue(cAddress, i, \"i32\");\n $7b9f60117f9c280b$var$libh3.setValue(cAddress + $7b9f60117f9c280b$var$SZ_INT, j, \"i32\");\n}\n/**\n * Read an array of positive integers array from C. Negative\n * values are considered invalid and ignored in output.\n * @private\n * @param {number} cAddress Pointer to C array\n * @param {number} count Length of C array\n * @return {number[]} Javascript integer array\n */ function $7b9f60117f9c280b$var$readArrayOfPositiveIntegers(cAddress, count) {\n var out = [];\n for(var i = 0; i < count; i++){\n var int = $7b9f60117f9c280b$var$libh3.getValue(cAddress + $7b9f60117f9c280b$var$SZ_INT * i, \"i32\");\n if (int >= 0) out.push(int);\n }\n return out;\n} // ----------------------------------------------------------------------------\n// Public API functions: Core\n/**\n * Whether a given string represents a valid H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} Whether the index is valid\n */ function $7b9f60117f9c280b$export$c1faec3db2fca891(h3Index) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean($7b9f60117f9c280b$var$H3.h3IsValid(lower, upper));\n}\n/**\n * Whether the given H3 index is a pentagon\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} isPentagon\n */ function $7b9f60117f9c280b$export$9e7403b9b01e136f(h3Index) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean($7b9f60117f9c280b$var$H3.h3IsPentagon(lower, upper));\n}\n/**\n * Whether the given H3 index is in a Class III resolution (rotated versus\n * the icosahedron and subject to shape distortion adding extra points on\n * icosahedron edges, making them not true hexagons).\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} isResClassIII\n */ function $7b9f60117f9c280b$export$6019beb3542e7aad(h3Index) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean($7b9f60117f9c280b$var$H3.h3IsResClassIII(lower, upper));\n}\n/**\n * Get the number of the base cell for a given H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get the base cell for\n * @return {number} Index of the base cell (0-121)\n */ function $7b9f60117f9c280b$export$558febf58c7ab0b8(h3Index) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return $7b9f60117f9c280b$var$H3.h3GetBaseCell(lower, upper);\n}\n/**\n * Get the indices of all icosahedron faces intersected by a given H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get faces for\n * @return {number[]} Indices (0-19) of all intersected faces\n */ function $7b9f60117f9c280b$export$d1cf4a12a694db3a(h3Index) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var count = $7b9f60117f9c280b$var$H3.maxFaceCount(lower, upper);\n var faces = $7b9f60117f9c280b$var$libh3._malloc($7b9f60117f9c280b$var$SZ_INT * count);\n $7b9f60117f9c280b$var$H3.h3GetFaces(lower, upper, faces);\n var out = $7b9f60117f9c280b$var$readArrayOfPositiveIntegers(faces, count);\n $7b9f60117f9c280b$var$libh3._free(faces);\n return out;\n}\n/**\n * Returns the resolution of an H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get resolution\n * @return {number} The number (0-15) resolution, or -1 if invalid\n */ function $7b9f60117f9c280b$export$6827467f3394e8f4(h3Index) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n if (!$7b9f60117f9c280b$var$H3.h3IsValid(lower, upper)) // Compatability with stated API\n return -1;\n return $7b9f60117f9c280b$var$H3.h3GetResolution(lower, upper);\n}\n/**\n * Get the hexagon containing a lat,lon point\n * @static\n * @param {number} lat Latitude of point\n * @param {number} lng Longtitude of point\n * @param {number} res Resolution of hexagons to return\n * @return {H3Index} H3 index\n */ function $7b9f60117f9c280b$export$24131a74a154ec65(lat, lng, res) {\n var latlng = $7b9f60117f9c280b$var$libh3._malloc($7b9f60117f9c280b$var$SZ_GEOCOORD); // Slightly more efficient way to set the memory\n $7b9f60117f9c280b$var$libh3.HEAPF64.set([\n lat,\n lng\n ].map($7b9f60117f9c280b$export$18f2af2888c1a46b), latlng / $7b9f60117f9c280b$var$SZ_DBL); // Read value as a split long\n var h3Index = $7b9f60117f9c280b$var$readH3Index($7b9f60117f9c280b$var$H3.geoToH3(latlng, res));\n $7b9f60117f9c280b$var$libh3._free(latlng);\n return h3Index;\n}\n/**\n * Get the lat,lon center of a given hexagon\n * @static\n * @param {H3IndexInput} h3Index H3 index\n * @return {number[]} Point as a [lat, lng] pair\n */ function $7b9f60117f9c280b$export$317dd65f3721e7c4(h3Index) {\n var latlng = $7b9f60117f9c280b$var$libh3._malloc($7b9f60117f9c280b$var$SZ_GEOCOORD);\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n $7b9f60117f9c280b$var$H3.h3ToGeo(lower, upper, latlng);\n var out = $7b9f60117f9c280b$var$readGeoCoord(latlng);\n $7b9f60117f9c280b$var$libh3._free(latlng);\n return out;\n}\n/**\n * Get the vertices of a given hexagon (or pentagon), as an array of [lat, lng]\n * points. For pentagons and hexagons on the edge of an icosahedron face, this\n * function may return up to 10 vertices.\n * @static\n * @param {H3Index} h3Index H3 index\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat], closed loops\n * @return {number[][]} Array of [lat, lng] pairs\n */ function $7b9f60117f9c280b$export$c87d5f55314c67cf(h3Index, formatAsGeoJson) {\n var geoBoundary = $7b9f60117f9c280b$var$libh3._malloc($7b9f60117f9c280b$var$SZ_GEOBOUNDARY);\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n $7b9f60117f9c280b$var$H3.h3ToGeoBoundary(lower, upper, geoBoundary);\n var out = $7b9f60117f9c280b$var$readGeoBoundary(geoBoundary, formatAsGeoJson, formatAsGeoJson);\n $7b9f60117f9c280b$var$libh3._free(geoBoundary);\n return out;\n} // ----------------------------------------------------------------------------\n// Public API functions: Algorithms\n/**\n * Get the parent of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get parent for\n * @param {number} res Resolution of hexagon to return\n * @return {H3Index} H3 index of parent, or null for invalid input\n */ function $7b9f60117f9c280b$export$6e83bc1001b134db(h3Index, res) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return $7b9f60117f9c280b$var$readH3Index($7b9f60117f9c280b$var$H3.h3ToParent(lower, upper, res));\n}\n/**\n * Get the children/descendents of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get children for\n * @param {number} res Resolution of hexagons to return\n * @return {H3Index[]} H3 indexes of children, or empty array for invalid input\n */ function $7b9f60117f9c280b$export$e8b20439271d254c(h3Index, res) {\n // Bad input in this case can potentially result in high computation volume\n // using the current C algorithm. Validate and return an empty array on failure.\n if (!$7b9f60117f9c280b$export$c1faec3db2fca891(h3Index)) return [];\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var maxCount = $7b9f60117f9c280b$var$H3.maxH3ToChildrenSize(lower, upper, res);\n var hexagons = $7b9f60117f9c280b$var$libh3._calloc(maxCount, $7b9f60117f9c280b$var$SZ_H3INDEX);\n $7b9f60117f9c280b$var$H3.h3ToChildren(lower, upper, res, hexagons);\n var out = $7b9f60117f9c280b$var$readArrayOfHexagons(hexagons, maxCount);\n $7b9f60117f9c280b$var$libh3._free(hexagons);\n return out;\n}\n/**\n * Get the center child of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get center child for\n * @param {number} res Resolution of hexagon to return\n * @return {H3Index} H3 index of child, or null for invalid input\n */ function $7b9f60117f9c280b$export$6db75718879de215(h3Index, res) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return $7b9f60117f9c280b$var$readH3Index($7b9f60117f9c280b$var$H3.h3ToCenterChild(lower, upper, res));\n}\n/**\n * Get all hexagons in a k-ring around a given center. The order of the hexagons is undefined.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of k-ring\n * @return {H3Index[]} H3 indexes for all hexagons in ring\n */ function $7b9f60117f9c280b$export$36e8217e0351e612(h3Index, ringSize) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var maxCount = $7b9f60117f9c280b$var$H3.maxKringSize(ringSize);\n var hexagons = $7b9f60117f9c280b$var$libh3._calloc(maxCount, $7b9f60117f9c280b$var$SZ_H3INDEX);\n $7b9f60117f9c280b$var$H3.kRing(lower, upper, ringSize, hexagons);\n var out = $7b9f60117f9c280b$var$readArrayOfHexagons(hexagons, maxCount);\n $7b9f60117f9c280b$var$libh3._free(hexagons);\n return out;\n}\n/**\n * Get all hexagons in a k-ring around a given center, in an array of arrays\n * ordered by distance from the origin. The order of the hexagons within each ring is undefined.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of k-ring\n * @return {H3Index[][]} Array of arrays with H3 indexes for all hexagons each ring\n */ function $7b9f60117f9c280b$export$501db62b56874355(h3Index, ringSize) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var maxCount = $7b9f60117f9c280b$var$H3.maxKringSize(ringSize);\n var kRings = $7b9f60117f9c280b$var$libh3._calloc(maxCount, $7b9f60117f9c280b$var$SZ_H3INDEX);\n var distances = $7b9f60117f9c280b$var$libh3._calloc(maxCount, $7b9f60117f9c280b$var$SZ_INT);\n $7b9f60117f9c280b$var$H3.kRingDistances(lower, upper, ringSize, kRings, distances); // Create an array of empty arrays to hold the output\n var out = [];\n for(var i = 0; i < ringSize + 1; i++)out.push([]);\n // Read the array of hexagons, putting them into the appropriate rings\n for(var i$1 = 0; i$1 < maxCount * 2; i$1 += 2){\n var hexLower = $7b9f60117f9c280b$var$libh3.getValue(kRings + $7b9f60117f9c280b$var$SZ_INT * i$1, \"i32\");\n var hexUpper = $7b9f60117f9c280b$var$libh3.getValue(kRings + $7b9f60117f9c280b$var$SZ_INT * (i$1 + 1), \"i32\");\n var index = $7b9f60117f9c280b$var$libh3.getValue(distances + $7b9f60117f9c280b$var$SZ_INT * (i$1 / 2), \"i32\");\n if (hexLower !== 0 || hexUpper !== 0) out[index].push($7b9f60117f9c280b$export$94dcc16939fe0462(hexLower, hexUpper));\n }\n $7b9f60117f9c280b$var$libh3._free(kRings);\n $7b9f60117f9c280b$var$libh3._free(distances);\n return out;\n}\n/**\n * Get all hexagons in a hollow hexagonal ring centered at origin with sides of a given length.\n * Unlike kRing, this function will throw an error if there is a pentagon anywhere in the ring.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of ring\n * @return {H3Index[]} H3 indexes for all hexagons in ring\n * @throws {Error} If the algorithm could not calculate the ring\n */ function $7b9f60117f9c280b$export$496038b5ca9585a1(h3Index, ringSize) {\n var maxCount = ringSize === 0 ? 1 : 6 * ringSize;\n var hexagons = $7b9f60117f9c280b$var$libh3._calloc(maxCount, $7b9f60117f9c280b$var$SZ_H3INDEX);\n var retVal = $7b9f60117f9c280b$var$H3.hexRing.apply($7b9f60117f9c280b$var$H3, $7b9f60117f9c280b$export$746fb3599c285d6a(h3Index).concat([\n ringSize\n ], [\n hexagons\n ]));\n if (retVal !== 0) {\n $7b9f60117f9c280b$var$libh3._free(hexagons);\n throw new Error(\"Failed to get hexRing (encountered a pentagon?)\");\n }\n var out = $7b9f60117f9c280b$var$readArrayOfHexagons(hexagons, maxCount);\n $7b9f60117f9c280b$var$libh3._free(hexagons);\n return out;\n}\n/**\n * Get all hexagons with centers contained in a given polygon. The polygon\n * is specified with GeoJson semantics as an array of loops. Each loop is\n * an array of [lat, lng] pairs (or [lng, lat] if isGeoJson is specified).\n * The first loop is the perimeter of the polygon, and subsequent loops are\n * expected to be holes.\n * @static\n * @param {number[][] | number[][][]} coordinates\n * Array of loops, or a single loop\n * @param {number} res Resolution of hexagons to return\n * @param {boolean} [isGeoJson] Whether to expect GeoJson-style [lng, lat]\n * pairs instead of [lat, lng]\n * @return {H3Index[]} H3 indexes for all hexagons in polygon\n */ function $7b9f60117f9c280b$export$cea1c58a6db52bca(coordinates, res, isGeoJson) {\n $7b9f60117f9c280b$var$validateRes(res);\n isGeoJson = Boolean(isGeoJson); // Guard against empty input\n if (coordinates.length === 0 || coordinates[0].length === 0) return [];\n // Wrap to expected format if a single loop is provided\n if (typeof coordinates[0][0] === \"number\") coordinates = [\n coordinates\n ];\n var geoPolygon = $7b9f60117f9c280b$var$coordinatesToGeoPolygon(coordinates, isGeoJson);\n var arrayLen = $7b9f60117f9c280b$var$H3.maxPolyfillSize(geoPolygon, res);\n var hexagons = $7b9f60117f9c280b$var$libh3._calloc(arrayLen, $7b9f60117f9c280b$var$SZ_H3INDEX);\n $7b9f60117f9c280b$var$H3.polyfill(geoPolygon, res, hexagons);\n var out = $7b9f60117f9c280b$var$readArrayOfHexagons(hexagons, arrayLen);\n $7b9f60117f9c280b$var$libh3._free(hexagons);\n $7b9f60117f9c280b$var$destroyGeoPolygon(geoPolygon);\n return out;\n}\n/**\n * Get the outlines of a set of H3 hexagons, returned in GeoJSON MultiPolygon\n * format (an array of polygons, each with an array of loops, each an array of\n * coordinates). Coordinates are returned as [lat, lng] pairs unless GeoJSON\n * is requested.\n *\n * It is the responsibility of the caller to ensure that all hexagons in the\n * set have the same resolution and that the set contains no duplicates. Behavior\n * is undefined if duplicates or multiple resolutions are present, and the\n * algorithm may produce unexpected or invalid polygons.\n *\n * @static\n * @param {H3IndexInput[]} h3Indexes H3 indexes to get outlines for\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output:\n * [lng, lat], closed loops\n * @return {number[][][][]} MultiPolygon-style output.\n */ function $7b9f60117f9c280b$export$911a0c41d9f5c4ed(h3Indexes, formatAsGeoJson) {\n // Early exit on empty input\n if (!h3Indexes || !h3Indexes.length) return [];\n // Set up input set\n var indexCount = h3Indexes.length;\n var set = $7b9f60117f9c280b$var$libh3._calloc(indexCount, $7b9f60117f9c280b$var$SZ_H3INDEX);\n $7b9f60117f9c280b$var$storeArrayOfHexagons(set, h3Indexes); // Allocate memory for output linked polygon\n var polygon = $7b9f60117f9c280b$var$libh3._calloc($7b9f60117f9c280b$var$SZ_LINKED_GEOPOLYGON); // Store a reference to the first polygon - that's the one we need for\n // memory deallocation\n var originalPolygon = polygon;\n $7b9f60117f9c280b$var$H3.h3SetToLinkedGeo(set, indexCount, polygon);\n var multiPolygon = $7b9f60117f9c280b$var$readMultiPolygon(polygon, formatAsGeoJson); // Clean up\n $7b9f60117f9c280b$var$H3.destroyLinkedPolygon(originalPolygon);\n $7b9f60117f9c280b$var$libh3._free(originalPolygon);\n $7b9f60117f9c280b$var$libh3._free(set);\n return multiPolygon;\n}\n/**\n * Compact a set of hexagons of the same resolution into a set of hexagons across\n * multiple levels that represents the same area.\n * @static\n * @param {H3IndexInput[]} h3Set H3 indexes to compact\n * @return {H3Index[]} Compacted H3 indexes\n * @throws {Error} If the input is invalid (e.g. duplicate hexagons)\n */ function $7b9f60117f9c280b$export$8e16b83750b44988(h3Set) {\n if (!h3Set || !h3Set.length) return [];\n // Set up input set\n var count = h3Set.length;\n var set = $7b9f60117f9c280b$var$libh3._calloc(count, $7b9f60117f9c280b$var$SZ_H3INDEX);\n $7b9f60117f9c280b$var$storeArrayOfHexagons(set, h3Set); // Allocate memory for compacted hexagons, worst-case is no compaction\n var compactedSet = $7b9f60117f9c280b$var$libh3._calloc(count, $7b9f60117f9c280b$var$SZ_H3INDEX);\n var retVal = $7b9f60117f9c280b$var$H3.compact(set, compactedSet, count);\n if (retVal !== 0) {\n $7b9f60117f9c280b$var$libh3._free(set);\n $7b9f60117f9c280b$var$libh3._free(compactedSet);\n throw new Error(\"Failed to compact, malformed input data (duplicate hexagons?)\");\n }\n var out = $7b9f60117f9c280b$var$readArrayOfHexagons(compactedSet, count);\n $7b9f60117f9c280b$var$libh3._free(set);\n $7b9f60117f9c280b$var$libh3._free(compactedSet);\n return out;\n}\n/**\n * Uncompact a compacted set of hexagons to hexagons of the same resolution\n * @static\n * @param {H3IndexInput[]} compactedSet H3 indexes to uncompact\n * @param {number} res The resolution to uncompact to\n * @return {H3Index[]} The uncompacted H3 indexes\n * @throws {Error} If the input is invalid (e.g. invalid resolution)\n */ function $7b9f60117f9c280b$export$da59f65535392b73(compactedSet, res) {\n $7b9f60117f9c280b$var$validateRes(res);\n if (!compactedSet || !compactedSet.length) return [];\n // Set up input set\n var count = compactedSet.length;\n var set = $7b9f60117f9c280b$var$libh3._calloc(count, $7b9f60117f9c280b$var$SZ_H3INDEX);\n $7b9f60117f9c280b$var$storeArrayOfHexagons(set, compactedSet); // Estimate how many hexagons we need (always overestimates if in error)\n var maxUncompactedNum = $7b9f60117f9c280b$var$H3.maxUncompactSize(set, count, res); // Allocate memory for uncompacted hexagons\n var uncompactedSet = $7b9f60117f9c280b$var$libh3._calloc(maxUncompactedNum, $7b9f60117f9c280b$var$SZ_H3INDEX);\n var retVal = $7b9f60117f9c280b$var$H3.uncompact(set, count, uncompactedSet, maxUncompactedNum, res);\n if (retVal !== 0) {\n $7b9f60117f9c280b$var$libh3._free(set);\n $7b9f60117f9c280b$var$libh3._free(uncompactedSet);\n throw new Error(\"Failed to uncompact (bad resolution?)\");\n }\n var out = $7b9f60117f9c280b$var$readArrayOfHexagons(uncompactedSet, maxUncompactedNum);\n $7b9f60117f9c280b$var$libh3._free(set);\n $7b9f60117f9c280b$var$libh3._free(uncompactedSet);\n return out;\n} // ----------------------------------------------------------------------------\n// Public API functions: Unidirectional edges\n/**\n * Whether two H3 indexes are neighbors (share an edge)\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {boolean} Whether the hexagons share an edge\n */ function $7b9f60117f9c280b$export$eb50eb4056349f0e(origin, destination) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = $7b9f60117f9c280b$export$746fb3599c285d6a(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n return Boolean($7b9f60117f9c280b$var$H3.h3IndexesAreNeighbors(oLower, oUpper, dLower, dUpper));\n}\n/**\n * Get an H3 index representing a unidirectional edge for a given origin and destination\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {H3Index} H3 index of the edge, or null if no edge is shared\n */ function $7b9f60117f9c280b$export$b89869ac33946464(origin, destination) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = $7b9f60117f9c280b$export$746fb3599c285d6a(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n return $7b9f60117f9c280b$var$readH3Index($7b9f60117f9c280b$var$H3.getH3UnidirectionalEdge(oLower, oUpper, dLower, dUpper));\n}\n/**\n * Get the origin hexagon from an H3 index representing a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index} H3 index of the edge origin\n */ function $7b9f60117f9c280b$export$13279f23c835bdb8(edgeIndex) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n return $7b9f60117f9c280b$var$readH3Index($7b9f60117f9c280b$var$H3.getOriginH3IndexFromUnidirectionalEdge(lower, upper));\n}\n/**\n * Get the destination hexagon from an H3 index representing a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index} H3 index of the edge destination\n */ function $7b9f60117f9c280b$export$100636a95be53c47(edgeIndex) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n return $7b9f60117f9c280b$var$readH3Index($7b9f60117f9c280b$var$H3.getDestinationH3IndexFromUnidirectionalEdge(lower, upper));\n}\n/**\n * Whether the input is a valid unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {boolean} Whether the index is valid\n */ function $7b9f60117f9c280b$export$7ba0147f717e0e86(edgeIndex) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean($7b9f60117f9c280b$var$H3.h3UnidirectionalEdgeIsValid(lower, upper));\n}\n/**\n * Get the [origin, destination] pair represented by a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index[]} [origin, destination] pair as H3 indexes\n */ function $7b9f60117f9c280b$export$baea9ec8d71e57f1(edgeIndex) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n var count = 2;\n var hexagons = $7b9f60117f9c280b$var$libh3._calloc(count, $7b9f60117f9c280b$var$SZ_H3INDEX);\n $7b9f60117f9c280b$var$H3.getH3IndexesFromUnidirectionalEdge(lower, upper, hexagons);\n var out = $7b9f60117f9c280b$var$readArrayOfHexagons(hexagons, count);\n $7b9f60117f9c280b$var$libh3._free(hexagons);\n return out;\n}\n/**\n * Get all of the unidirectional edges with the given H3 index as the origin (i.e. an edge to\n * every neighbor)\n * @static\n * @param {H3IndexInput} h3Index H3 index of the origin hexagon\n * @return {H3Index[]} List of unidirectional edges\n */ function $7b9f60117f9c280b$export$30e11ffcf56640f3(h3Index) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var count = 6;\n var edges = $7b9f60117f9c280b$var$libh3._calloc(count, $7b9f60117f9c280b$var$SZ_H3INDEX);\n $7b9f60117f9c280b$var$H3.getH3UnidirectionalEdgesFromHexagon(lower, upper, edges);\n var out = $7b9f60117f9c280b$var$readArrayOfHexagons(edges, count);\n $7b9f60117f9c280b$var$libh3._free(edges);\n return out;\n}\n/**\n * Get the vertices of a given edge as an array of [lat, lng] points. Note that for edges that\n * cross the edge of an icosahedron face, this may return 3 coordinates.\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat]\n * @return {number[][]} Array of geo coordinate pairs\n */ function $7b9f60117f9c280b$export$6b2ac03a6029686(edgeIndex, formatAsGeoJson) {\n var geoBoundary = $7b9f60117f9c280b$var$libh3._malloc($7b9f60117f9c280b$var$SZ_GEOBOUNDARY);\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n $7b9f60117f9c280b$var$H3.getH3UnidirectionalEdgeBoundary(lower, upper, geoBoundary);\n var out = $7b9f60117f9c280b$var$readGeoBoundary(geoBoundary, formatAsGeoJson);\n $7b9f60117f9c280b$var$libh3._free(geoBoundary);\n return out;\n}\n/**\n * Get the grid distance between two hex indexes. This function may fail\n * to find the distance between two indexes if they are very far apart or\n * on opposite sides of a pentagon.\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {number} Distance between hexagons, or a negative\n * number if the distance could not be computed\n */ function $7b9f60117f9c280b$export$f56b06aabd98a7d0(origin, destination) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = $7b9f60117f9c280b$export$746fb3599c285d6a(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n return $7b9f60117f9c280b$var$H3.h3Distance(oLower, oUpper, dLower, dUpper);\n}\n/**\n * Given two H3 indexes, return the line of indexes between them (inclusive).\n *\n * This function may fail to find the line between two indexes, for\n * example if they are very far apart. It may also fail when finding\n * distances for indexes on opposite sides of a pentagon.\n *\n * Notes:\n *\n * - The specific output of this function should not be considered stable\n * across library versions. The only guarantees the library provides are\n * that the line length will be `h3Distance(start, end) + 1` and that\n * every index in the line will be a neighbor of the preceding index.\n * - Lines are drawn in grid space, and may not correspond exactly to either\n * Cartesian lines or great arcs.\n *\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {H3Index[]} H3 indexes connecting origin and destination\n * @throws {Error} If the line cannot be calculated\n */ function $7b9f60117f9c280b$export$3c4374231d75ac73(origin, destination) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = $7b9f60117f9c280b$export$746fb3599c285d6a(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n var count = $7b9f60117f9c280b$var$H3.h3LineSize(oLower, oUpper, dLower, dUpper);\n if (count < 0) // We can't get the specific error code here - may be any of\n // the errors possible in experimentalH3ToLocalIj\n throw new Error(\"Line cannot be calculated\");\n var hexagons = $7b9f60117f9c280b$var$libh3._calloc(count, $7b9f60117f9c280b$var$SZ_H3INDEX);\n $7b9f60117f9c280b$var$H3.h3Line(oLower, oUpper, dLower, dUpper, hexagons);\n var out = $7b9f60117f9c280b$var$readArrayOfHexagons(hexagons, count);\n $7b9f60117f9c280b$var$libh3._free(hexagons);\n return out;\n}\n/**\n * Produces IJ coordinates for an H3 index anchored by an origin.\n *\n * - The coordinate space used by this function may have deleted\n * regions or warping due to pentagonal distortion.\n * - Coordinates are only comparable if they come from the same\n * origin index.\n * - Failure may occur if the index is too far away from the origin\n * or if the index is on the other side of a pentagon.\n * - This function is experimental, and its output is not guaranteed\n * to be compatible across different versions of H3.\n * @static\n * @param {H3IndexInput} origin Origin H3 index\n * @param {H3IndexInput} destination H3 index for which to find relative coordinates\n * @return {CoordIJ} Coordinates as an `{i, j}` pair\n * @throws {Error} If the IJ coordinates cannot be calculated\n */ function $7b9f60117f9c280b$export$f5137e86c7310bce(origin, destination) {\n var ij = $7b9f60117f9c280b$var$libh3._malloc($7b9f60117f9c280b$var$SZ_COORDIJ);\n var retVal = $7b9f60117f9c280b$var$H3.experimentalH3ToLocalIj.apply($7b9f60117f9c280b$var$H3, $7b9f60117f9c280b$export$746fb3599c285d6a(origin).concat($7b9f60117f9c280b$export$746fb3599c285d6a(destination), [\n ij\n ]));\n var coords = $7b9f60117f9c280b$var$readCoordIJ(ij);\n $7b9f60117f9c280b$var$libh3._free(ij); // Return the pair, or throw if an error code was returned.\n // Switch statement and error codes cribbed from h3-java's implementation.\n switch(retVal){\n case 0:\n return coords;\n case 1:\n throw new Error(\"Incompatible origin and index.\");\n case 2:\n default:\n throw new Error(\"Local IJ coordinates undefined for this origin and index pair. The index may be too far from the origin.\");\n case 3:\n case 4:\n case 5:\n throw new Error(\"Encountered possible pentagon distortion\");\n }\n}\n/**\n * Produces an H3 index for IJ coordinates anchored by an origin.\n *\n * - The coordinate space used by this function may have deleted\n * regions or warping due to pentagonal distortion.\n * - Coordinates are only comparable if they come from the same\n * origin index.\n * - Failure may occur if the index is too far away from the origin\n * or if the index is on the other side of a pentagon.\n * - This function is experimental, and its output is not guaranteed\n * to be compatible across different versions of H3.\n * @static\n * @param {H3IndexInput} origin Origin H3 index\n * @param {CoordIJ} coords Coordinates as an `{i, j}` pair\n * @return {H3Index} H3 index at the relative coordinates\n * @throws {Error} If the H3 index cannot be calculated\n */ function $7b9f60117f9c280b$export$699ec478a27688ea(origin, coords) {\n // Validate input coords\n if (!coords || typeof coords.i !== \"number\" || typeof coords.j !== \"number\") throw new Error(\"Coordinates must be provided as an {i, j} object\");\n // Allocate memory for the CoordIJ struct and an H3 index to hold the return value\n var ij = $7b9f60117f9c280b$var$libh3._malloc($7b9f60117f9c280b$var$SZ_COORDIJ);\n var out = $7b9f60117f9c280b$var$libh3._malloc($7b9f60117f9c280b$var$SZ_H3INDEX);\n $7b9f60117f9c280b$var$storeCoordIJ(ij, coords);\n var retVal = $7b9f60117f9c280b$var$H3.experimentalLocalIjToH3.apply($7b9f60117f9c280b$var$H3, $7b9f60117f9c280b$export$746fb3599c285d6a(origin).concat([\n ij\n ], [\n out\n ]));\n var h3Index = $7b9f60117f9c280b$var$readH3IndexFromPointer(out);\n $7b9f60117f9c280b$var$libh3._free(ij);\n $7b9f60117f9c280b$var$libh3._free(out);\n if (retVal !== 0) throw new Error(\"Index not defined for this origin and IJ coordinates pair. IJ coordinates may be too far from origin, or a pentagon distortion was encountered.\");\n return h3Index;\n} // ----------------------------------------------------------------------------\n// Public API functions: Distance/area utilities\n/**\n * Great circle distance between two geo points. This is not specific to H3,\n * but is implemented in the library and provided here as a convenience.\n * @static\n * @param {number[]} latlng1 Origin coordinate as [lat, lng]\n * @param {number[]} latlng2 Destination coordinate as [lat, lng]\n * @param {string} unit Distance unit (either UNITS.m or UNITS.km)\n * @return {number} Great circle distance\n * @throws {Error} If the unit is invalid\n */ function $7b9f60117f9c280b$export$f091827d0d13bea5(latlng1, latlng2, unit) {\n var coord1 = $7b9f60117f9c280b$var$storeGeoCoord(latlng1[0], latlng1[1]);\n var coord2 = $7b9f60117f9c280b$var$storeGeoCoord(latlng2[0], latlng2[1]);\n var result;\n switch(unit){\n case $7b9f60117f9c280b$export$a037d132965e1c9f.m:\n result = $7b9f60117f9c280b$var$H3.pointDistM(coord1, coord2);\n break;\n case $7b9f60117f9c280b$export$a037d132965e1c9f.km:\n result = $7b9f60117f9c280b$var$H3.pointDistKm(coord1, coord2);\n break;\n case $7b9f60117f9c280b$export$a037d132965e1c9f.rads:\n result = $7b9f60117f9c280b$var$H3.pointDistRads(coord1, coord2);\n break;\n default:\n result = null;\n }\n $7b9f60117f9c280b$var$libh3._free(coord1);\n $7b9f60117f9c280b$var$libh3._free(coord2);\n if (result === null) throw new Error(\"Unknown unit: \" + unit);\n return result;\n}\n/**\n * Exact area of a given cell\n * @static\n * @param {H3Index} h3Index H3 index of the hexagon to measure\n * @param {string} unit Distance unit (either UNITS.m2 or UNITS.km2)\n * @return {number} Cell area\n * @throws {Error} If the unit is invalid\n */ function $7b9f60117f9c280b$export$dd1eba531ccc01d(h3Index, unit) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n switch(unit){\n case $7b9f60117f9c280b$export$a037d132965e1c9f.m2:\n return $7b9f60117f9c280b$var$H3.cellAreaM2(lower, upper);\n case $7b9f60117f9c280b$export$a037d132965e1c9f.km2:\n return $7b9f60117f9c280b$var$H3.cellAreaKm2(lower, upper);\n case $7b9f60117f9c280b$export$a037d132965e1c9f.rads2:\n return $7b9f60117f9c280b$var$H3.cellAreaRads2(lower, upper);\n default:\n throw new Error(\"Unknown unit: \" + unit);\n }\n}\n/**\n * Exact length of a given unidirectional edge\n * @static\n * @param {H3Index} edge H3 index of the edge to measure\n * @param {string} unit Distance unit (either UNITS.m, UNITS.km, or UNITS.rads)\n * @return {number} Cell area\n * @throws {Error} If the unit is invalid\n */ function $7b9f60117f9c280b$export$27082d4db7c8790c(edge, unit) {\n var ref = $7b9f60117f9c280b$export$746fb3599c285d6a(edge);\n var lower = ref[0];\n var upper = ref[1];\n switch(unit){\n case $7b9f60117f9c280b$export$a037d132965e1c9f.m:\n return $7b9f60117f9c280b$var$H3.exactEdgeLengthM(lower, upper);\n case $7b9f60117f9c280b$export$a037d132965e1c9f.km:\n return $7b9f60117f9c280b$var$H3.exactEdgeLengthKm(lower, upper);\n case $7b9f60117f9c280b$export$a037d132965e1c9f.rads:\n return $7b9f60117f9c280b$var$H3.exactEdgeLengthRads(lower, upper);\n default:\n throw new Error(\"Unknown unit: \" + unit);\n }\n}\n/**\n * Average hexagon area at a given resolution\n * @static\n * @param {number} res Hexagon resolution\n * @param {string} unit Area unit (either UNITS.m2, UNITS.km2, or UNITS.rads2)\n * @return {number} Average area\n * @throws {Error} If the unit is invalid\n */ function $7b9f60117f9c280b$export$597dd479d4cc1bc9(res, unit) {\n $7b9f60117f9c280b$var$validateRes(res);\n switch(unit){\n case $7b9f60117f9c280b$export$a037d132965e1c9f.m2:\n return $7b9f60117f9c280b$var$H3.hexAreaM2(res);\n case $7b9f60117f9c280b$export$a037d132965e1c9f.km2:\n return $7b9f60117f9c280b$var$H3.hexAreaKm2(res);\n default:\n throw new Error(\"Unknown unit: \" + unit);\n }\n}\n/**\n * Average hexagon edge length at a given resolution\n * @static\n * @param {number} res Hexagon resolution\n * @param {string} unit Distance unit (either UNITS.m, UNITS.km, or UNITS.rads)\n * @return {number} Average edge length\n * @throws {Error} If the unit is invalid\n */ function $7b9f60117f9c280b$export$f9bb3d14d246c386(res, unit) {\n $7b9f60117f9c280b$var$validateRes(res);\n switch(unit){\n case $7b9f60117f9c280b$export$a037d132965e1c9f.m:\n return $7b9f60117f9c280b$var$H3.edgeLengthM(res);\n case $7b9f60117f9c280b$export$a037d132965e1c9f.km:\n return $7b9f60117f9c280b$var$H3.edgeLengthKm(res);\n default:\n throw new Error(\"Unknown unit: \" + unit);\n }\n} // ----------------------------------------------------------------------------\n// Public informational utilities\n/**\n * The total count of hexagons in the world at a given resolution. Note that above\n * resolution 8 the exact count cannot be represented in a JavaScript 32-bit number,\n * so consumers should use caution when applying further operations to the output.\n * @static\n * @param {number} res Hexagon resolution\n * @return {number} Count\n */ function $7b9f60117f9c280b$export$fb1fbf4925957012(res) {\n $7b9f60117f9c280b$var$validateRes(res); // Get number as a long value\n var ref = $7b9f60117f9c280b$var$readLong($7b9f60117f9c280b$var$H3.numHexagons(res));\n var lower = ref[0];\n var upper = ref[1]; // If we're using <= 32 bits we can use normal JS numbers\n if (!upper) return lower;\n // Above 32 bit, make a JS number that's correct in order of magnitude\n return upper * Math.pow(2, 32) + lower;\n}\n/**\n * Get all H3 indexes at resolution 0. As every index at every resolution > 0 is\n * the descendant of a res 0 index, this can be used with h3ToChildren to iterate\n * over H3 indexes at any resolution.\n * @static\n * @return {H3Index[]} All H3 indexes at res 0\n */ function $7b9f60117f9c280b$export$c6297e04da1d9191() {\n var count = $7b9f60117f9c280b$var$H3.res0IndexCount();\n var hexagons = $7b9f60117f9c280b$var$libh3._malloc($7b9f60117f9c280b$var$SZ_H3INDEX * count);\n $7b9f60117f9c280b$var$H3.getRes0Indexes(hexagons);\n var out = $7b9f60117f9c280b$var$readArrayOfHexagons(hexagons, count);\n $7b9f60117f9c280b$var$libh3._free(hexagons);\n return out;\n}\n/**\n * Get the twelve pentagon indexes at a given resolution.\n * @static\n * @param {number} res Hexagon resolution\n * @return {H3Index[]} All H3 pentagon indexes at res\n */ function $7b9f60117f9c280b$export$ecc8411f8c9b1ec1(res) {\n $7b9f60117f9c280b$var$validateRes(res);\n var count = $7b9f60117f9c280b$var$H3.pentagonIndexCount();\n var hexagons = $7b9f60117f9c280b$var$libh3._malloc($7b9f60117f9c280b$var$SZ_H3INDEX * count);\n $7b9f60117f9c280b$var$H3.getPentagonIndexes(res, hexagons);\n var out = $7b9f60117f9c280b$var$readArrayOfHexagons(hexagons, count);\n $7b9f60117f9c280b$var$libh3._free(hexagons);\n return out;\n}\n/**\n * Convert degrees to radians\n * @static\n * @param {number} deg Value in degrees\n * @return {number} Value in radians\n */ function $7b9f60117f9c280b$export$18f2af2888c1a46b(deg) {\n return deg * Math.PI / 180;\n}\n/**\n * Convert radians to degrees\n * @static\n * @param {number} rad Value in radians\n * @return {number} Value in degrees\n */ function $7b9f60117f9c280b$export$3eb27537c08caf0f(rad) {\n return rad * 180 / Math.PI;\n}\n\n});\n\nparcelRegister(\"7Nl5T\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $5acd78db0a0647e6$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $fsooW = parcelRequire(\"fsooW\");\n\nvar $aC2tH = parcelRequire(\"aC2tH\");\n\nvar $cwF9s = parcelRequire(\"cwF9s\");\n\nvar $coXLq = parcelRequire(\"coXLq\");\nvar $abpME = parcelRequire(\"abpME\");\n\nvar $WRwuG = parcelRequire(\"WRwuG\");\nvar $6ey8i = parcelRequire(\"6ey8i\");\nconst $5acd78db0a0647e6$var$UPDATE_THRESHOLD_KM = 10;\nfunction $5acd78db0a0647e6$export$e871080d474bbdcf(vertices, refLng) {\n refLng = refLng === undefined ? vertices[0][0] : refLng;\n for (const pt of vertices){\n const deltaLng = pt[0] - refLng;\n if (deltaLng > 180) pt[0] -= 360;\n else if (deltaLng < -180) pt[0] += 360;\n }\n}\nfunction $5acd78db0a0647e6$export$b32c4d26933d0880(hexId, vertices, factor) {\n const [lat, lng] = (0, $aC2tH.h3ToGeo)(hexId);\n const actualCount = vertices.length;\n $5acd78db0a0647e6$export$e871080d474bbdcf(vertices, lng);\n const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;\n for(let i = 0; i < vertexCount; i++){\n vertices[i][0] = (0, $cwF9s.lerp)(lng, vertices[i][0], factor);\n vertices[i][1] = (0, $cwF9s.lerp)(lat, vertices[i][1], factor);\n }\n}\nfunction $5acd78db0a0647e6$var$getHexagonCentroid(getHexagon, object, objectInfo) {\n const hexagonId = getHexagon(object, objectInfo);\n const [lat, lng] = (0, $aC2tH.h3ToGeo)(hexagonId);\n return [\n lng,\n lat\n ];\n}\nfunction $5acd78db0a0647e6$var$h3ToPolygon(hexId, coverage = 1) {\n const vertices = (0, $aC2tH.h3ToGeoBoundary)(hexId, true);\n if (coverage !== 1) $5acd78db0a0647e6$export$b32c4d26933d0880(hexId, vertices, coverage);\n else $5acd78db0a0647e6$export$e871080d474bbdcf(vertices);\n return vertices;\n}\nfunction $5acd78db0a0647e6$var$flattenPolygon(vertices) {\n const positions = new Float64Array(vertices.length * 2);\n let i = 0;\n for (const pt of vertices){\n positions[i++] = pt[0];\n positions[i++] = pt[1];\n }\n return positions;\n}\nfunction $5acd78db0a0647e6$var$mergeTriggers(getHexagon, coverage) {\n let trigger;\n if (getHexagon === undefined || getHexagon === null) trigger = coverage;\n else if (typeof getHexagon === \"object\") trigger = (0, $edHbI._)((0, $2QP2i._)({}, getHexagon), {\n coverage: coverage\n });\n else trigger = {\n getHexagon: getHexagon,\n coverage: coverage\n };\n return trigger;\n}\nconst $5acd78db0a0647e6$var$defaultProps = (0, $edHbI._)((0, $2QP2i._)({}, (0, $6ey8i.default).defaultProps), {\n highPrecision: \"auto\",\n coverage: {\n type: \"number\",\n min: 0,\n max: 1,\n value: 1\n },\n centerHexagon: null,\n getHexagon: {\n type: \"accessor\",\n value: (x)=>x.hexagon\n },\n extruded: true\n});\nclass $5acd78db0a0647e6$export$2e2bcd8739ae039 extends (0, $coXLq.default) {\n initializeState() {\n $5acd78db0a0647e6$export$2e2bcd8739ae039._checkH3Lib();\n this.state = {\n edgeLengthKM: 0,\n resolution: -1\n };\n }\n shouldUpdateState({ changeFlags: changeFlags }) {\n return this._shouldUseHighPrecision() ? changeFlags.propsOrDataChanged : changeFlags.somethingChanged;\n }\n updateState({ props: props, changeFlags: changeFlags }) {\n if (props.highPrecision !== true && (changeFlags.dataChanged || changeFlags.updateTriggersChanged && changeFlags.updateTriggersChanged.getHexagon)) {\n const dataProps = this._calculateH3DataProps();\n this.setState(dataProps);\n }\n this._updateVertices(this.context.viewport);\n }\n _calculateH3DataProps() {\n let resolution = -1;\n let hasPentagon = false;\n let hasMultipleRes = false;\n const { iterable: iterable, objectInfo: objectInfo } = (0, $abpME.createIterable)(this.props.data);\n for (const object of iterable){\n objectInfo.index++;\n const hexId = this.props.getHexagon(object, objectInfo);\n const hexResolution = (0, $aC2tH.h3GetResolution)(hexId);\n if (resolution < 0) {\n resolution = hexResolution;\n if (!this.props.highPrecision) break;\n } else if (resolution !== hexResolution) {\n hasMultipleRes = true;\n break;\n }\n if ((0, $aC2tH.h3IsPentagon)(hexId)) {\n hasPentagon = true;\n break;\n }\n }\n return {\n resolution: resolution,\n edgeLengthKM: resolution >= 0 ? (0, $aC2tH.edgeLength)(resolution, \"km\") : 0,\n hasMultipleRes: hasMultipleRes,\n hasPentagon: hasPentagon\n };\n }\n _shouldUseHighPrecision() {\n if (this.props.highPrecision === \"auto\") {\n const { resolution: resolution, hasPentagon: hasPentagon, hasMultipleRes: hasMultipleRes } = this.state;\n const { viewport: viewport } = this.context;\n return Boolean(viewport === null || viewport === void 0 ? void 0 : viewport.resolution) || hasMultipleRes || hasPentagon || resolution >= 0 && resolution <= 5;\n }\n return this.props.highPrecision;\n }\n _updateVertices(viewport) {\n if (this._shouldUseHighPrecision()) return;\n const { resolution: resolution, edgeLengthKM: edgeLengthKM, centerHex: centerHex } = this.state;\n if (resolution < 0) return;\n const hex = this.props.centerHexagon || (0, $aC2tH.geoToH3)(viewport.latitude, viewport.longitude, resolution);\n if (centerHex === hex) return;\n if (centerHex) {\n const distance = (0, $aC2tH.h3Distance)(centerHex, hex);\n if (distance >= 0 && distance * edgeLengthKM < $5acd78db0a0647e6$var$UPDATE_THRESHOLD_KM) return;\n }\n const { unitsPerMeter: unitsPerMeter } = viewport.distanceScales;\n let vertices = $5acd78db0a0647e6$var$h3ToPolygon(hex);\n const [centerLat, centerLng] = (0, $aC2tH.h3ToGeo)(hex);\n const [centerX, centerY] = viewport.projectFlat([\n centerLng,\n centerLat\n ]);\n vertices = vertices.map((p)=>{\n const worldPosition = viewport.projectFlat(p);\n return [\n (worldPosition[0] - centerX) / unitsPerMeter[0],\n (worldPosition[1] - centerY) / unitsPerMeter[1]\n ];\n });\n this.setState({\n centerHex: hex,\n vertices: vertices\n });\n }\n renderLayers() {\n return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();\n }\n _getForwardProps() {\n const { elevationScale: elevationScale, material: material, coverage: coverage, extruded: extruded, wireframe: wireframe, stroked: stroked, filled: filled, lineWidthUnits: lineWidthUnits, lineWidthScale: lineWidthScale, lineWidthMinPixels: lineWidthMinPixels, lineWidthMaxPixels: lineWidthMaxPixels, getFillColor: getFillColor, getElevation: getElevation, getLineColor: getLineColor, getLineWidth: getLineWidth, transitions: transitions, updateTriggers: updateTriggers } = this.props;\n return {\n elevationScale: elevationScale,\n extruded: extruded,\n coverage: coverage,\n wireframe: wireframe,\n stroked: stroked,\n filled: filled,\n lineWidthUnits: lineWidthUnits,\n lineWidthScale: lineWidthScale,\n lineWidthMinPixels: lineWidthMinPixels,\n lineWidthMaxPixels: lineWidthMaxPixels,\n material: material,\n getElevation: getElevation,\n getFillColor: getFillColor,\n getLineColor: getLineColor,\n getLineWidth: getLineWidth,\n transitions: transitions,\n updateTriggers: {\n getFillColor: updateTriggers.getFillColor,\n getElevation: updateTriggers.getElevation,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n }\n };\n }\n _renderPolygonLayer() {\n const { data: data, getHexagon: getHexagon, updateTriggers: updateTriggers, coverage: coverage } = this.props;\n const SubLayerClass = this.getSubLayerClass(\"hexagon-cell-hifi\", (0, $6ey8i.default));\n const forwardProps = this._getForwardProps();\n forwardProps.updateTriggers.getPolygon = $5acd78db0a0647e6$var$mergeTriggers(updateTriggers.getHexagon, coverage);\n return new SubLayerClass(forwardProps, this.getSubLayerProps({\n id: \"hexagon-cell-hifi\",\n updateTriggers: forwardProps.updateTriggers\n }), {\n data: data,\n _normalize: false,\n _windingOrder: \"CCW\",\n positionFormat: \"XY\",\n getPolygon: (object, objectInfo)=>{\n const hexagonId = getHexagon(object, objectInfo);\n return $5acd78db0a0647e6$var$flattenPolygon($5acd78db0a0647e6$var$h3ToPolygon(hexagonId, coverage));\n }\n });\n }\n _renderColumnLayer() {\n const { data: data, getHexagon: getHexagon, updateTriggers: updateTriggers } = this.props;\n const SubLayerClass = this.getSubLayerClass(\"hexagon-cell\", (0, $WRwuG.default));\n const forwardProps = this._getForwardProps();\n forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;\n return new SubLayerClass(forwardProps, this.getSubLayerProps({\n id: \"hexagon-cell\",\n flatShading: true,\n updateTriggers: forwardProps.updateTriggers\n }), {\n data: data,\n diskResolution: 6,\n radius: 1,\n vertices: this.state.vertices,\n getPosition: $5acd78db0a0647e6$var$getHexagonCentroid.bind(null, getHexagon)\n });\n }\n constructor(...args){\n super(...args);\n (0, $fsooW.default)(this, \"state\", void 0);\n }\n}\n(0, $fsooW.default)($5acd78db0a0647e6$export$2e2bcd8739ae039, \"defaultProps\", $5acd78db0a0647e6$var$defaultProps);\n(0, $fsooW.default)($5acd78db0a0647e6$export$2e2bcd8739ae039, \"layerName\", \"H3HexagonLayer\");\n(0, $fsooW.default)($5acd78db0a0647e6$export$2e2bcd8739ae039, \"_checkH3Lib\", ()=>{});\n\n});\nparcelRegister(\"WRwuG\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $0b0eef7759c953e9$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $lEQUF = parcelRequire(\"lEQUF\");\n\nvar $b8HWT = parcelRequire(\"b8HWT\");\nvar $i46md = parcelRequire(\"i46md\");\nvar $7UxuR = parcelRequire(\"7UxuR\");\nvar $jRSMz = parcelRequire(\"jRSMz\");\nvar $7gQQK = parcelRequire(\"7gQQK\");\n\nvar $68aPy = parcelRequire(\"68aPy\");\nvar $tIWfJ = parcelRequire(\"tIWfJ\");parcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\nvar $b2F4S = parcelRequire(\"b2F4S\");\n\nvar $XMj3k = parcelRequire(\"XMj3k\");\n\nvar $jPf8H = parcelRequire(\"jPf8H\");\n\nvar $c3KZe = parcelRequire(\"c3KZe\");\nconst $0b0eef7759c953e9$var$DEFAULT_COLOR = [\n 0,\n 0,\n 0,\n 255\n];\nconst $0b0eef7759c953e9$var$defaultProps = {\n diskResolution: {\n type: \"number\",\n min: 4,\n value: 20\n },\n vertices: null,\n radius: {\n type: \"number\",\n min: 0,\n value: 1000\n },\n angle: {\n type: \"number\",\n value: 0\n },\n offset: {\n type: \"array\",\n value: [\n 0,\n 0\n ]\n },\n coverage: {\n type: \"number\",\n min: 0,\n max: 1,\n value: 1\n },\n elevationScale: {\n type: \"number\",\n min: 0,\n value: 1\n },\n radiusUnits: \"meters\",\n lineWidthUnits: \"meters\",\n lineWidthScale: 1,\n lineWidthMinPixels: 0,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n extruded: true,\n wireframe: false,\n filled: true,\n stroked: false,\n getPosition: {\n type: \"accessor\",\n value: (x)=>x.position\n },\n getFillColor: {\n type: \"accessor\",\n value: $0b0eef7759c953e9$var$DEFAULT_COLOR\n },\n getLineColor: {\n type: \"accessor\",\n value: $0b0eef7759c953e9$var$DEFAULT_COLOR\n },\n getLineWidth: {\n type: \"accessor\",\n value: 1\n },\n getElevation: {\n type: \"accessor\",\n value: 1000\n },\n material: true,\n getColor: {\n deprecatedFor: [\n \"getFillColor\",\n \"getLineColor\"\n ]\n }\n};\nclass $0b0eef7759c953e9$export$2e2bcd8739ae039 extends (0, $i46md.default) {\n getShaders() {\n const { gl: gl } = this.context;\n const transpileToGLSL100 = !(0, $8HKWo.isWebGL2)(gl);\n const defines = {};\n const useDerivatives = this.props.flatShading && (0, $tIWfJ.hasFeature)(gl, (0, $68aPy.FEATURES).GLSL_DERIVATIVES);\n if (useDerivatives) defines.FLAT_SHADING = 1;\n return super.getShaders({\n vs: $jPf8H.default,\n fs: $c3KZe.default,\n defines: defines,\n transpileToGLSL100: transpileToGLSL100,\n modules: [\n (0, $jRSMz.default),\n useDerivatives ? (0, $b8HWT.phongLighting) : (0, $b8HWT.gouraudLighting),\n (0, $7UxuR.default)\n ]\n });\n }\n initializeState() {\n const attributeManager = this.getAttributeManager();\n attributeManager.addInstanced({\n instancePositions: {\n size: 3,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: \"getPosition\"\n },\n instanceElevations: {\n size: 1,\n transition: true,\n accessor: \"getElevation\"\n },\n instanceFillColors: {\n size: this.props.colorFormat.length,\n type: 5121,\n normalized: true,\n transition: true,\n accessor: \"getFillColor\",\n defaultValue: $0b0eef7759c953e9$var$DEFAULT_COLOR\n },\n instanceLineColors: {\n size: this.props.colorFormat.length,\n type: 5121,\n normalized: true,\n transition: true,\n accessor: \"getLineColor\",\n defaultValue: $0b0eef7759c953e9$var$DEFAULT_COLOR\n },\n instanceStrokeWidths: {\n size: 1,\n accessor: \"getLineWidth\",\n transition: true\n }\n });\n }\n updateState(params) {\n super.updateState(params);\n const { props: props, oldProps: oldProps, changeFlags: changeFlags } = params;\n const regenerateModels = changeFlags.extensionsChanged || props.flatShading !== oldProps.flatShading;\n if (regenerateModels) {\n var _this$state$model;\n const { gl: gl } = this.context;\n (_this$state$model = this.state.model) === null || _this$state$model === void 0 || _this$state$model.delete();\n this.state.model = this._getModel(gl);\n this.getAttributeManager().invalidateAll();\n }\n if (regenerateModels || props.diskResolution !== oldProps.diskResolution || props.vertices !== oldProps.vertices || (props.extruded || props.stroked) !== (oldProps.extruded || oldProps.stroked)) this._updateGeometry(props);\n }\n getGeometry(diskResolution, vertices, hasThinkness) {\n const geometry = new (0, $XMj3k.default)({\n radius: 1,\n height: hasThinkness ? 2 : 0,\n vertices: vertices,\n nradial: diskResolution\n });\n let meanVertexDistance = 0;\n if (vertices) for(let i = 0; i < diskResolution; i++){\n const p = vertices[i];\n const d = Math.sqrt(p[0] * p[0] + p[1] * p[1]);\n meanVertexDistance += d / diskResolution;\n }\n else meanVertexDistance = 1;\n this.setState({\n edgeDistance: Math.cos(Math.PI / diskResolution) * meanVertexDistance\n });\n return geometry;\n }\n _getModel(gl) {\n return new (0, $b2F4S.default)(gl, (0, $edHbI._)((0, $2QP2i._)({}, this.getShaders()), {\n id: this.props.id,\n isInstanced: true\n }));\n }\n _updateGeometry({ diskResolution: diskResolution, vertices: vertices, extruded: extruded, stroked: stroked }) {\n const geometry = this.getGeometry(diskResolution, vertices, extruded || stroked);\n this.setState({\n fillVertexCount: geometry.attributes.POSITION.value.length / 3,\n wireframeVertexCount: geometry.indices.value.length\n });\n this.state.model.setProps({\n geometry: geometry\n });\n }\n draw({ uniforms: uniforms }) {\n const { lineWidthUnits: lineWidthUnits, lineWidthScale: lineWidthScale, lineWidthMinPixels: lineWidthMinPixels, lineWidthMaxPixels: lineWidthMaxPixels, radiusUnits: radiusUnits, elevationScale: elevationScale, extruded: extruded, filled: filled, stroked: stroked, wireframe: wireframe, offset: offset, coverage: coverage, radius: radius, angle: angle } = this.props;\n const { model: model, fillVertexCount: fillVertexCount, wireframeVertexCount: wireframeVertexCount, edgeDistance: edgeDistance } = this.state;\n model.setUniforms(uniforms).setUniforms({\n radius: radius,\n angle: angle / 180 * Math.PI,\n offset: offset,\n extruded: extruded,\n stroked: stroked,\n coverage: coverage,\n elevationScale: elevationScale,\n edgeDistance: edgeDistance,\n radiusUnits: (0, $7gQQK.UNIT)[radiusUnits],\n widthUnits: (0, $7gQQK.UNIT)[lineWidthUnits],\n widthScale: lineWidthScale,\n widthMinPixels: lineWidthMinPixels,\n widthMaxPixels: lineWidthMaxPixels\n });\n if (extruded && wireframe) {\n model.setProps({\n isIndexed: true\n });\n model.setVertexCount(wireframeVertexCount).setDrawMode(1).setUniforms({\n isStroke: true\n }).draw();\n }\n if (filled) {\n model.setProps({\n isIndexed: false\n });\n model.setVertexCount(fillVertexCount).setDrawMode(5).setUniforms({\n isStroke: false\n }).draw();\n }\n if (!extruded && stroked) {\n model.setProps({\n isIndexed: false\n });\n model.setVertexCount(fillVertexCount * 2 / 3).setDrawMode(5).setUniforms({\n isStroke: true\n }).draw();\n }\n }\n}\n(0, $lEQUF.default)($0b0eef7759c953e9$export$2e2bcd8739ae039, \"layerName\", \"ColumnLayer\");\n(0, $lEQUF.default)($0b0eef7759c953e9$export$2e2bcd8739ae039, \"defaultProps\", $0b0eef7759c953e9$var$defaultProps);\n\n});\nparcelRegister(\"XMj3k\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $0b3afb6da2751738$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $4VQgq = parcelRequire(\"4VQgq\");\n\nvar $cxTxU = parcelRequire(\"cxTxU\");\nvar $iljOc = parcelRequire(\"iljOc\");\nparcelRequire(\"b5AlO\");\nvar $2d6CO = parcelRequire(\"2d6CO\");\nclass $0b3afb6da2751738$export$2e2bcd8739ae039 extends (0, $cxTxU.default) {\n constructor(props){\n const { id: id = (0, $iljOc.uid)(\"column-geometry\") } = props;\n const { indices: indices, attributes: attributes } = $0b3afb6da2751738$var$tesselateColumn(props);\n super((0, $edHbI._)((0, $2QP2i._)({}, props), {\n id: id,\n indices: indices,\n attributes: attributes\n }));\n }\n}\nfunction $0b3afb6da2751738$var$tesselateColumn(props) {\n const { radius: radius, height: height = 1, nradial: nradial = 10 } = props;\n let { vertices: vertices } = props;\n if (vertices) {\n (0, $4VQgq.default).assert(vertices.length >= nradial);\n vertices = vertices.flatMap((v)=>[\n v[0],\n v[1]\n ]);\n (0, $2d6CO.modifyPolygonWindingDirection)(vertices, (0, $2d6CO.WINDING).COUNTER_CLOCKWISE);\n }\n const isExtruded = height > 0;\n const vertsAroundEdge = nradial + 1;\n const numVertices = isExtruded ? vertsAroundEdge * 3 + 1 : nradial;\n const stepAngle = Math.PI * 2 / nradial;\n const indices = new Uint16Array(isExtruded ? nradial * 6 : 0);\n const positions = new Float32Array(numVertices * 3);\n const normals = new Float32Array(numVertices * 3);\n let i = 0;\n if (isExtruded) {\n for(let j = 0; j < vertsAroundEdge; j++){\n const a = j * stepAngle;\n const vertexIndex = j % nradial;\n const sin = Math.sin(a);\n const cos = Math.cos(a);\n for(let k = 0; k < 2; k++){\n positions[i + 0] = vertices ? vertices[vertexIndex * 2] : cos * radius;\n positions[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin * radius;\n positions[i + 2] = (0.5 - k) * height;\n normals[i + 0] = vertices ? vertices[vertexIndex * 2] : cos;\n normals[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin;\n i += 3;\n }\n }\n positions[i + 0] = positions[i - 3];\n positions[i + 1] = positions[i - 2];\n positions[i + 2] = positions[i - 1];\n i += 3;\n }\n for(let j = isExtruded ? 0 : 1; j < vertsAroundEdge; j++){\n const v = Math.floor(j / 2) * Math.sign(0.5 - j % 2);\n const a = v * stepAngle;\n const vertexIndex = (v + nradial) % nradial;\n const sin = Math.sin(a);\n const cos = Math.cos(a);\n positions[i + 0] = vertices ? vertices[vertexIndex * 2] : cos * radius;\n positions[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin * radius;\n positions[i + 2] = height / 2;\n normals[i + 2] = 1;\n i += 3;\n }\n if (isExtruded) {\n let index = 0;\n for(let j = 0; j < nradial; j++){\n indices[index++] = j * 2 + 0;\n indices[index++] = j * 2 + 2;\n indices[index++] = j * 2 + 0;\n indices[index++] = j * 2 + 1;\n indices[index++] = j * 2 + 1;\n indices[index++] = j * 2 + 3;\n }\n }\n return {\n indices: indices,\n attributes: {\n POSITION: {\n size: 3,\n value: positions\n },\n NORMAL: {\n size: 3,\n value: normals\n }\n }\n };\n}\n\n});\n\nparcelRegister(\"jPf8H\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $e6ee861d981f4086$export$2e2bcd8739ae039; });\nvar $e6ee861d981f4086$export$2e2bcd8739ae039 = \"#version 300 es\\n\\n#define SHADER_NAME column-layer-vertex-shader\\n\\nin vec3 positions;\\nin vec3 normals;\\n\\nin vec3 instancePositions;\\nin float instanceElevations;\\nin vec3 instancePositions64Low;\\nin vec4 instanceFillColors;\\nin vec4 instanceLineColors;\\nin float instanceStrokeWidths;\\n\\nin vec3 instancePickingColors;\\nuniform float opacity;\\nuniform float radius;\\nuniform float angle;\\nuniform vec2 offset;\\nuniform bool extruded;\\nuniform bool stroked;\\nuniform bool isStroke;\\nuniform float coverage;\\nuniform float elevationScale;\\nuniform float edgeDistance;\\nuniform float widthScale;\\nuniform float widthMinPixels;\\nuniform float widthMaxPixels;\\nuniform int radiusUnits;\\nuniform int widthUnits;\\nout vec4 vColor;\\n#ifdef FLAT_SHADING\\nout vec4 position_commonspace;\\n#endif\\n\\nvoid main(void) {\\n geometry.worldPosition = instancePositions;\\n\\n vec4 color = isStroke ? instanceLineColors : instanceFillColors;\\n mat2 rotationMatrix = mat2(cos(angle), sin(angle), -sin(angle), cos(angle));\\n float elevation = 0.0;\\n float strokeOffsetRatio = 1.0;\\n\\n if (extruded) {\\n elevation = instanceElevations * (positions.z + 1.0) / 2.0 * elevationScale;\\n } else if (stroked) {\\n float widthPixels = clamp(\\n project_size_to_pixel(instanceStrokeWidths * widthScale, widthUnits),\\n widthMinPixels, widthMaxPixels) / 2.0;\\n float halfOffset = project_pixel_size(widthPixels) / project_size(edgeDistance * coverage * radius);\\n if (isStroke) {\\n strokeOffsetRatio -= sign(positions.z) * halfOffset;\\n } else {\\n strokeOffsetRatio -= halfOffset;\\n }\\n }\\n float shouldRender = float(color.a > 0.0 && instanceElevations >= 0.0);\\n float dotRadius = radius * coverage * shouldRender;\\n\\n geometry.pickingColor = instancePickingColors;\\n vec3 centroidPosition = vec3(instancePositions.xy, instancePositions.z + elevation);\\n vec3 centroidPosition64Low = instancePositions64Low;\\n vec2 offset = (rotationMatrix * positions.xy * strokeOffsetRatio + offset) * dotRadius;\\n if (radiusUnits == UNIT_METERS) {\\n offset = project_size(offset);\\n }\\n vec3 pos = vec3(offset, 0.);\\n DECKGL_FILTER_SIZE(pos, geometry);\\n\\n gl_Position = project_position_to_clipspace(centroidPosition, centroidPosition64Low, pos, geometry.position);\\n geometry.normal = project_normal(vec3(rotationMatrix * normals.xy, normals.z));\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n if (extruded && !isStroke) {\\n#ifdef FLAT_SHADING\\n position_commonspace = geometry.position;\\n vColor = vec4(color.rgb, color.a * opacity);\\n#else\\n vec3 lightColor = lighting_getLightColor(color.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);\\n vColor = vec4(lightColor, color.a * opacity);\\n#endif\\n } else {\\n vColor = vec4(color.rgb, color.a * opacity);\\n }\\n DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n\n});\n\nparcelRegister(\"c3KZe\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $8c7a3669e1f85a24$export$2e2bcd8739ae039; });\nvar $8c7a3669e1f85a24$export$2e2bcd8739ae039 = \"#version 300 es\\n#define SHADER_NAME column-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform vec3 project_uCameraPosition;\\nuniform bool extruded;\\nuniform bool isStroke;\\n\\nout vec4 fragColor;\\n\\nin vec4 vColor;\\n#ifdef FLAT_SHADING\\nin vec4 position_commonspace;\\n#endif\\n\\nvoid main(void) {\\n fragColor = vColor;\\n#ifdef FLAT_SHADING\\n if (extruded && !isStroke && !picking_uActive) {\\n vec3 normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\\n fragColor.rgb = lighting_getLightColor(vColor.rgb, project_uCameraPosition, position_commonspace.xyz, normal);\\n }\\n#endif\\n DECKGL_FILTER_COLOR(fragColor, geometry);\\n}\\n\";\n\n});\n\n\n\nparcelRegister(\"gpJBL\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $bf325bf6469f0f15$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $bmkEq = parcelRequire(\"bmkEq\");\n\nvar $fsooW = parcelRequire(\"fsooW\");\n\nvar $coXLq = parcelRequire(\"coXLq\");\n\nvar $6ey8i = parcelRequire(\"6ey8i\");\nconst $bf325bf6469f0f15$var$defaultProps = (0, $2QP2i._)({}, (0, $6ey8i.default).defaultProps);\nclass $bf325bf6469f0f15$export$2e2bcd8739ae039 extends (0, $coXLq.default) {\n indexToBounds() {\n return null;\n }\n renderLayers() {\n const { elevationScale: elevationScale, extruded: extruded, wireframe: wireframe, filled: filled, stroked: stroked, lineWidthUnits: lineWidthUnits, lineWidthScale: lineWidthScale, lineWidthMinPixels: lineWidthMinPixels, lineWidthMaxPixels: lineWidthMaxPixels, lineJointRounded: lineJointRounded, lineMiterLimit: lineMiterLimit, lineDashJustified: lineDashJustified, getElevation: getElevation, getFillColor: getFillColor, getLineColor: getLineColor, getLineWidth: getLineWidth } = this.props;\n const { updateTriggers: updateTriggers, material: material, transitions: transitions } = this.props;\n const CellLayer = this.getSubLayerClass(\"cell\", (0, $6ey8i.default));\n const _ref = this.indexToBounds() || {}, { updateTriggers: boundsUpdateTriggers } = _ref, boundsProps = (0, $bmkEq._)(_ref, [\n \"updateTriggers\"\n ]);\n return new CellLayer({\n filled: filled,\n wireframe: wireframe,\n extruded: extruded,\n elevationScale: elevationScale,\n stroked: stroked,\n lineWidthUnits: lineWidthUnits,\n lineWidthScale: lineWidthScale,\n lineWidthMinPixels: lineWidthMinPixels,\n lineWidthMaxPixels: lineWidthMaxPixels,\n lineJointRounded: lineJointRounded,\n lineMiterLimit: lineMiterLimit,\n lineDashJustified: lineDashJustified,\n material: material,\n transitions: transitions,\n getElevation: getElevation,\n getFillColor: getFillColor,\n getLineColor: getLineColor,\n getLineWidth: getLineWidth\n }, this.getSubLayerProps({\n id: \"cell\",\n updateTriggers: updateTriggers && (0, $edHbI._)((0, $2QP2i._)({}, boundsUpdateTriggers), {\n getElevation: updateTriggers.getElevation,\n getFillColor: updateTriggers.getFillColor,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n })\n }), boundsProps);\n }\n}\n(0, $fsooW.default)($bf325bf6469f0f15$export$2e2bcd8739ae039, \"layerName\", \"GeoCellLayer\");\n(0, $fsooW.default)($bf325bf6469f0f15$export$2e2bcd8739ae039, \"defaultProps\", $bf325bf6469f0f15$var$defaultProps);\n\n});\n\n\nparcelRegister(\"1LI2z\", function(module, exports) {\n\n$parcel$export(module.exports, \"geoToH3\", function () { return $149c57bfd39d3746$export$24131a74a154ec65; });\n$parcel$export(module.exports, \"polyfill\", function () { return $149c57bfd39d3746$export$cea1c58a6db52bca; });\nvar $149c57bfd39d3746$var$libh3 = function(libh3) {\n libh3 = libh3 || {};\n var Module = typeof libh3 !== \"undefined\" ? libh3 : {};\n var moduleOverrides = {};\n var key;\n for(key in Module)if (Module.hasOwnProperty(key)) moduleOverrides[key] = Module[key];\n var arguments_ = [];\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module[\"locateFile\"]) return Module[\"locateFile\"](path, scriptDirectory);\n return scriptDirectory + path;\n }\n var readAsync;\n if (document.currentScript) scriptDirectory = document.currentScript.src;\n if (scriptDirectory.indexOf(\"blob:\") !== 0) scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf(\"/\") + 1);\n else scriptDirectory = \"\";\n readAsync = function readAsync(url, onload, onerror) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = function xhr_onload() {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n var data = tryParseAsDataURI(url);\n if (data) {\n onload(data.buffer);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n for(key in moduleOverrides)if (moduleOverrides.hasOwnProperty(key)) Module[key] = moduleOverrides[key];\n moduleOverrides = null;\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n var tempRet0 = 0;\n var setTempRet0 = function(value) {\n tempRet0 = value;\n };\n var getTempRet0 = function() {\n return tempRet0;\n };\n var GLOBAL_BASE = 8;\n function setValue(ptr, value, type, noSafe) {\n type = type || \"i8\";\n if (type.charAt(type.length - 1) === \"*\") type = \"i32\";\n switch(type){\n case \"i1\":\n HEAP8[ptr >> 0] = value;\n break;\n case \"i8\":\n HEAP8[ptr >> 0] = value;\n break;\n case \"i16\":\n HEAP16[ptr >> 1] = value;\n break;\n case \"i32\":\n HEAP32[ptr >> 2] = value;\n break;\n case \"i64\":\n tempI64 = [\n value >>> 0,\n (tempDouble = value, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)\n ], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];\n break;\n case \"float\":\n HEAPF32[ptr >> 2] = value;\n break;\n case \"double\":\n HEAPF64[ptr >> 3] = value;\n break;\n default:\n abort(\"invalid type for setValue: \" + type);\n }\n }\n function getValue(ptr, type, noSafe) {\n type = type || \"i8\";\n if (type.charAt(type.length - 1) === \"*\") type = \"i32\";\n switch(type){\n case \"i1\":\n return HEAP8[ptr >> 0];\n case \"i8\":\n return HEAP8[ptr >> 0];\n case \"i16\":\n return HEAP16[ptr >> 1];\n case \"i32\":\n return HEAP32[ptr >> 2];\n case \"i64\":\n return HEAP32[ptr >> 2];\n case \"float\":\n return HEAPF32[ptr >> 2];\n case \"double\":\n return HEAPF64[ptr >> 3];\n default:\n abort(\"invalid type for getValue: \" + type);\n }\n return null;\n }\n var ABORT = false;\n function assert(condition, text) {\n if (!condition) abort(\"Assertion failed: \" + text);\n }\n function getCFunc(ident) {\n var func = Module[\"_\" + ident];\n assert(func, \"Cannot call unknown function \" + ident + \", make sure it is exported\");\n return func;\n }\n function ccall(ident, returnType, argTypes, args, opts) {\n var toC = {\n \"string\": function(str) {\n var ret = 0;\n if (str !== null && str !== undefined && str !== 0) {\n var len = (str.length << 2) + 1;\n ret = stackAlloc(len);\n stringToUTF8(str, ret, len);\n }\n return ret;\n },\n \"array\": function(arr) {\n var ret = stackAlloc(arr.length);\n writeArrayToMemory(arr, ret);\n return ret;\n }\n };\n function convertReturnValue(ret) {\n if (returnType === \"string\") return UTF8ToString(ret);\n if (returnType === \"boolean\") return Boolean(ret);\n return ret;\n }\n var func = getCFunc(ident);\n var cArgs = [];\n var stack = 0;\n if (args) for(var i = 0; i < args.length; i++){\n var converter = toC[argTypes[i]];\n if (converter) {\n if (stack === 0) stack = stackSave();\n cArgs[i] = converter(args[i]);\n } else cArgs[i] = args[i];\n }\n var ret = func.apply(null, cArgs);\n ret = convertReturnValue(ret);\n if (stack !== 0) stackRestore(stack);\n return ret;\n }\n function cwrap(ident, returnType, argTypes, opts) {\n argTypes = argTypes || [];\n var numericArgs = argTypes.every(function(type) {\n return type === \"number\";\n });\n var numericRet = returnType !== \"string\";\n if (numericRet && numericArgs && !opts) return getCFunc(ident);\n return function() {\n return ccall(ident, returnType, argTypes, arguments, opts);\n };\n }\n var UTF8Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf8\") : undefined;\n function UTF8ArrayToString(u8Array, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while(u8Array[endPtr] && !(endPtr >= endIdx))++endPtr;\n if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));\n else {\n var str = \"\";\n while(idx < endPtr){\n var u0 = u8Array[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = u8Array[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n var u2 = u8Array[idx++] & 63;\n if ((u0 & 240) == 224) u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n else u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u8Array[idx++] & 63;\n if (u0 < 65536) str += String.fromCharCode(u0);\n else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n }\n return str;\n }\n function UTF8ToString(ptr, maxBytesToRead) {\n return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n }\n function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for(var i = 0; i < str.length; ++i){\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n outU8Array[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n outU8Array[outIdx++] = 192 | u >> 6;\n outU8Array[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n outU8Array[outIdx++] = 224 | u >> 12;\n outU8Array[outIdx++] = 128 | u >> 6 & 63;\n outU8Array[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n outU8Array[outIdx++] = 240 | u >> 18;\n outU8Array[outIdx++] = 128 | u >> 12 & 63;\n outU8Array[outIdx++] = 128 | u >> 6 & 63;\n outU8Array[outIdx++] = 128 | u & 63;\n }\n }\n outU8Array[outIdx] = 0;\n return outIdx - startIdx;\n }\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n var UTF16Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf-16le\") : undefined;\n function writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n }\n function alignUp(x, multiple) {\n if (x % multiple > 0) x += multiple - x % multiple;\n return x;\n }\n var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n function updateGlobalBufferAndViews(buf) {\n buffer = buf;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(buf);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(buf);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(buf);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(buf);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(buf);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(buf);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(buf);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(buf);\n }\n var DYNAMIC_BASE = 5266928, DYNAMICTOP_PTR = 24016;\n var INITIAL_TOTAL_MEMORY = Module[\"TOTAL_MEMORY\"] || 33554432;\n if (Module[\"buffer\"]) buffer = Module[\"buffer\"];\n else buffer = new ArrayBuffer(INITIAL_TOTAL_MEMORY);\n INITIAL_TOTAL_MEMORY = buffer.byteLength;\n updateGlobalBufferAndViews(buffer);\n HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;\n function callRuntimeCallbacks(callbacks) {\n while(callbacks.length > 0){\n var callback = callbacks.shift();\n if (typeof callback == \"function\") {\n callback();\n continue;\n }\n var func = callback.func;\n if (typeof func === \"number\") {\n if (callback.arg === undefined) Module[\"dynCall_v\"](func);\n else Module[\"dynCall_vi\"](func, callback.arg);\n } else func(callback.arg === undefined ? null : callback.arg);\n }\n }\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATPOSTRUN__ = [];\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [\n Module[\"preRun\"]\n ];\n while(Module[\"preRun\"].length)addOnPreRun(Module[\"preRun\"].shift());\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n callRuntimeCallbacks(__ATINIT__);\n }\n function preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n }\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [\n Module[\"postRun\"]\n ];\n while(Module[\"postRun\"].length)addOnPostRun(Module[\"postRun\"].shift());\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var Math_abs = Math.abs;\n var Math_ceil = Math.ceil;\n var Math_floor = Math.floor;\n var Math_min = Math.min;\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n }\n function removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) Module[\"monitorRunDependencies\"](runDependencies);\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n Module[\"preloadedImages\"] = {};\n Module[\"preloadedAudios\"] = {};\n var memoryInitializer = null;\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n function isDataURI(filename) {\n return String.prototype.startsWith ? filename.startsWith(dataURIPrefix) : filename.indexOf(dataURIPrefix) === 0;\n }\n var tempDouble;\n var tempI64;\n memoryInitializer = \"data:application/octet-stream;base64,AAAAAAAAAAACAAAAAwAAAAEAAAAFAAAABAAAAAYAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAABAAAAAMAAAAGAAAABQAAAAIAAAAAAAAAAgAAAAMAAAABAAAABAAAAAYAAAAAAAAABQAAAAMAAAAGAAAABAAAAAUAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAABAAAABQAAAAIAAAAAAAAAAQAAAAMAAAAGAAAABAAAAAYAAAAAAAAABQAAAAIAAAABAAAABAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABgAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAABgAAAAAAAAADAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAUAAAAEAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAEAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAACAAAABAAAAAMAAAAIAAAAAQAAAAcAAAAGAAAACQAAAAAAAAADAAAAAgAAAAIAAAAGAAAACgAAAAsAAAAAAAAAAQAAAAUAAAADAAAADQAAAAEAAAAHAAAABAAAAAwAAAAAAAAABAAAAH8AAAAPAAAACAAAAAMAAAAAAAAADAAAAAUAAAACAAAAEgAAAAoAAAAIAAAAAAAAABAAAAAGAAAADgAAAAsAAAARAAAAAQAAAAkAAAACAAAABwAAABUAAAAJAAAAEwAAAAMAAAANAAAAAQAAAAgAAAAFAAAAFgAAABAAAAAEAAAAAAAAAA8AAAAJAAAAEwAAAA4AAAAUAAAAAQAAAAcAAAAGAAAACgAAAAsAAAAYAAAAFwAAAAUAAAACAAAAEgAAAAsAAAARAAAAFwAAABkAAAACAAAABgAAAAoAAAAMAAAAHAAAAA0AAAAaAAAABAAAAA8AAAADAAAADQAAABoAAAAVAAAAHQAAAAMAAAAMAAAABwAAAA4AAAB/AAAAEQAAABsAAAAJAAAAFAAAAAYAAAAPAAAAFgAAABwAAAAfAAAABAAAAAgAAAAMAAAAEAAAABIAAAAhAAAAHgAAAAgAAAAFAAAAFgAAABEAAAALAAAADgAAAAYAAAAjAAAAGQAAABsAAAASAAAAGAAAAB4AAAAgAAAABQAAAAoAAAAQAAAAEwAAACIAAAAUAAAAJAAAAAcAAAAVAAAACQAAABQAAAAOAAAAEwAAAAkAAAAoAAAAGwAAACQAAAAVAAAAJgAAABMAAAAiAAAADQAAAB0AAAAHAAAAFgAAABAAAAApAAAAIQAAAA8AAAAIAAAAHwAAABcAAAAYAAAACwAAAAoAAAAnAAAAJQAAABkAAAAYAAAAfwAAACAAAAAlAAAACgAAABcAAAASAAAAGQAAABcAAAARAAAACwAAAC0AAAAnAAAAIwAAABoAAAAqAAAAHQAAACsAAAAMAAAAHAAAAA0AAAAbAAAAKAAAACMAAAAuAAAADgAAABQAAAARAAAAHAAAAB8AAAAqAAAALAAAAAwAAAAPAAAAGgAAAB0AAAArAAAAJgAAAC8AAAANAAAAGgAAABUAAAAeAAAAIAAAADAAAAAyAAAAEAAAABIAAAAhAAAAHwAAACkAAAAsAAAANQAAAA8AAAAWAAAAHAAAACAAAAAeAAAAGAAAABIAAAA0AAAAMgAAACUAAAAhAAAAHgAAADEAAAAwAAAAFgAAABAAAAApAAAAIgAAABMAAAAmAAAAFQAAADYAAAAkAAAAMwAAACMAAAAuAAAALQAAADgAAAARAAAAGwAAABkAAAAkAAAAFAAAACIAAAATAAAANwAAACgAAAA2AAAAJQAAACcAAAA0AAAAOQAAABgAAAAXAAAAIAAAACYAAAB/AAAAIgAAADMAAAAdAAAALwAAABUAAAAnAAAAJQAAABkAAAAXAAAAOwAAADkAAAAtAAAAKAAAABsAAAAkAAAAFAAAADwAAAAuAAAANwAAACkAAAAxAAAANQAAAD0AAAAWAAAAIQAAAB8AAAAqAAAAOgAAACsAAAA+AAAAHAAAACwAAAAaAAAAKwAAAD4AAAAvAAAAQAAAABoAAAAqAAAAHQAAACwAAAA1AAAAOgAAAEEAAAAcAAAAHwAAACoAAAAtAAAAJwAAACMAAAAZAAAAPwAAADsAAAA4AAAALgAAADwAAAA4AAAARAAAABsAAAAoAAAAIwAAAC8AAAAmAAAAKwAAAB0AAABFAAAAMwAAAEAAAAAwAAAAMQAAAB4AAAAhAAAAQwAAAEIAAAAyAAAAMQAAAH8AAAA9AAAAQgAAACEAAAAwAAAAKQAAADIAAAAwAAAAIAAAAB4AAABGAAAAQwAAADQAAAAzAAAARQAAADYAAABHAAAAJgAAAC8AAAAiAAAANAAAADkAAABGAAAASgAAACAAAAAlAAAAMgAAADUAAAA9AAAAQQAAAEsAAAAfAAAAKQAAACwAAAA2AAAARwAAADcAAABJAAAAIgAAADMAAAAkAAAANwAAACgAAAA2AAAAJAAAAEgAAAA8AAAASQAAADgAAABEAAAAPwAAAE0AAAAjAAAALgAAAC0AAAA5AAAAOwAAAEoAAABOAAAAJQAAACcAAAA0AAAAOgAAAH8AAAA+AAAATAAAACwAAABBAAAAKgAAADsAAAA/AAAATgAAAE8AAAAnAAAALQAAADkAAAA8AAAASAAAAEQAAABQAAAAKAAAADcAAAAuAAAAPQAAADUAAAAxAAAAKQAAAFEAAABLAAAAQgAAAD4AAAArAAAAOgAAACoAAABSAAAAQAAAAEwAAAA/AAAAfwAAADgAAAAtAAAATwAAADsAAABNAAAAQAAAAC8AAAA+AAAAKwAAAFQAAABFAAAAUgAAAEEAAAA6AAAANQAAACwAAABWAAAATAAAAEsAAABCAAAAQwAAAFEAAABVAAAAMQAAADAAAAA9AAAAQwAAAEIAAAAyAAAAMAAAAFcAAABVAAAARgAAAEQAAAA4AAAAPAAAAC4AAABaAAAATQAAAFAAAABFAAAAMwAAAEAAAAAvAAAAWQAAAEcAAABUAAAARgAAAEMAAAA0AAAAMgAAAFMAAABXAAAASgAAAEcAAABZAAAASQAAAFsAAAAzAAAARQAAADYAAABIAAAAfwAAAEkAAAA3AAAAUAAAADwAAABYAAAASQAAAFsAAABIAAAAWAAAADYAAABHAAAANwAAAEoAAABOAAAAUwAAAFwAAAA0AAAAOQAAAEYAAABLAAAAQQAAAD0AAAA1AAAAXgAAAFYAAABRAAAATAAAAFYAAABSAAAAYAAAADoAAABBAAAAPgAAAE0AAAA/AAAARAAAADgAAABdAAAATwAAAFoAAABOAAAASgAAADsAAAA5AAAAXwAAAFwAAABPAAAATwAAAE4AAAA/AAAAOwAAAF0AAABfAAAATQAAAFAAAABEAAAASAAAADwAAABjAAAAWgAAAFgAAABRAAAAVQAAAF4AAABlAAAAPQAAAEIAAABLAAAAUgAAAGAAAABUAAAAYgAAAD4AAABMAAAAQAAAAFMAAAB/AAAASgAAAEYAAABkAAAAVwAAAFwAAABUAAAARQAAAFIAAABAAAAAYQAAAFkAAABiAAAAVQAAAFcAAABlAAAAZgAAAEIAAABDAAAAUQAAAFYAAABMAAAASwAAAEEAAABoAAAAYAAAAF4AAABXAAAAUwAAAGYAAABkAAAAQwAAAEYAAABVAAAAWAAAAEgAAABbAAAASQAAAGMAAABQAAAAaQAAAFkAAABhAAAAWwAAAGcAAABFAAAAVAAAAEcAAABaAAAATQAAAFAAAABEAAAAagAAAF0AAABjAAAAWwAAAEkAAABZAAAARwAAAGkAAABYAAAAZwAAAFwAAABTAAAATgAAAEoAAABsAAAAZAAAAF8AAABdAAAATwAAAFoAAABNAAAAbQAAAF8AAABqAAAAXgAAAFYAAABRAAAASwAAAGsAAABoAAAAZQAAAF8AAABcAAAATwAAAE4AAABtAAAAbAAAAF0AAABgAAAAaAAAAGIAAABuAAAATAAAAFYAAABSAAAAYQAAAH8AAABiAAAAVAAAAGcAAABZAAAAbwAAAGIAAABuAAAAYQAAAG8AAABSAAAAYAAAAFQAAABjAAAAUAAAAGkAAABYAAAAagAAAFoAAABxAAAAZAAAAGYAAABTAAAAVwAAAGwAAAByAAAAXAAAAGUAAABmAAAAawAAAHAAAABRAAAAVQAAAF4AAABmAAAAZQAAAFcAAABVAAAAcgAAAHAAAABkAAAAZwAAAFsAAABhAAAAWQAAAHQAAABpAAAAbwAAAGgAAABrAAAAbgAAAHMAAABWAAAAXgAAAGAAAABpAAAAWAAAAGcAAABbAAAAcQAAAGMAAAB0AAAAagAAAF0AAABjAAAAWgAAAHUAAABtAAAAcQAAAGsAAAB/AAAAZQAAAF4AAABzAAAAaAAAAHAAAABsAAAAZAAAAF8AAABcAAAAdgAAAHIAAABtAAAAbQAAAGwAAABdAAAAXwAAAHUAAAB2AAAAagAAAG4AAABiAAAAaAAAAGAAAAB3AAAAbwAAAHMAAABvAAAAYQAAAG4AAABiAAAAdAAAAGcAAAB3AAAAcAAAAGsAAABmAAAAZQAAAHgAAABzAAAAcgAAAHEAAABjAAAAdAAAAGkAAAB1AAAAagAAAHkAAAByAAAAcAAAAGQAAABmAAAAdgAAAHgAAABsAAAAcwAAAG4AAABrAAAAaAAAAHgAAAB3AAAAcAAAAHQAAABnAAAAdwAAAG8AAABxAAAAaQAAAHkAAAB1AAAAfwAAAG0AAAB2AAAAcQAAAHkAAABqAAAAdgAAAHgAAABsAAAAcgAAAHUAAAB5AAAAbQAAAHcAAABvAAAAcwAAAG4AAAB5AAAAdAAAAHgAAAB4AAAAcwAAAHIAAABwAAAAeQAAAHcAAAB2AAAAeQAAAHQAAAB4AAAAdwAAAHUAAABxAAAAdgAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAEAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAIAAAAFAAAAAQAAAAAAAAD/////AQAAAAAAAAADAAAABAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAQAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAADAAAABQAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAABQAAAAUAAAAAAAAAAAAAAP////8BAAAAAAAAAAMAAAAEAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAABQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAQAAAP//////////AQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAIAAAAAAAAAAAAAAAEAAAACAAAABgAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAoAAAACAAAAAAAAAAAAAAABAAAAAQAAAAUAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAIAAAAAAAAAAAAAAAEAAAADAAAABwAAAAYAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAJAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAgAAAAAAAAAAAAAAAQAAAAQAAAAIAAAACgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAACAAAAAAAAAAAAAAABAAAACwAAAA8AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAgAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAACAAAAAAAAAAAAAAABAAAADAAAABAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAEAAAAKAAAAEwAAAAgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAgAAAAAAAAAAAAAAAQAAAA0AAAARAAAADQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAAAAAAAAAAAAAEAAAAOAAAAEgAAAA8AAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABMAAAACAAAAAAAAAAAAAAABAAAA//////////8TAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABIAAAAAAAAAGAAAAAAAAAAhAAAAAAAAAB4AAAAAAAAAIAAAAAMAAAAxAAAAAQAAADAAAAADAAAAMgAAAAMAAAAIAAAAAAAAAAUAAAAFAAAACgAAAAUAAAAWAAAAAAAAABAAAAAAAAAAEgAAAAAAAAApAAAAAQAAACEAAAAAAAAAHgAAAAAAAAAEAAAAAAAAAAAAAAAFAAAAAgAAAAUAAAAPAAAAAQAAAAgAAAAAAAAABQAAAAUAAAAfAAAAAQAAABYAAAAAAAAAEAAAAAAAAAACAAAAAAAAAAYAAAAAAAAADgAAAAAAAAAKAAAAAAAAAAsAAAAAAAAAEQAAAAMAAAAYAAAAAQAAABcAAAADAAAAGQAAAAMAAAAAAAAAAAAAAAEAAAAFAAAACQAAAAUAAAAFAAAAAAAAAAIAAAAAAAAABgAAAAAAAAASAAAAAQAAAAoAAAAAAAAACwAAAAAAAAAEAAAAAQAAAAMAAAAFAAAABwAAAAUAAAAIAAAAAQAAAAAAAAAAAAAAAQAAAAUAAAAQAAAAAQAAAAUAAAAAAAAAAgAAAAAAAAAHAAAAAAAAABUAAAAAAAAAJgAAAAAAAAAJAAAAAAAAABMAAAAAAAAAIgAAAAMAAAAOAAAAAQAAABQAAAADAAAAJAAAAAMAAAADAAAAAAAAAA0AAAAFAAAAHQAAAAUAAAABAAAAAAAAAAcAAAAAAAAAFQAAAAAAAAAGAAAA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74auECWhw7+cjSACjzniv8CZ+wUhN9I/1uGEKzup6z+/GYr/04bavwmkNHp7xee/F2NMZVAA1z+82s+x2BLivwr2ytbJ9em/KwEH1sMS1r8yp/2LhTfev81i5RexJsy/BlIKPVwR5b95Wyu0/Qjnv5DjoT7YYcs/nBhKZ6zrwr8wRYS7Nebuv3OW6geh+Lu/SLrixebL3j+pcyymN9Xrv8rHIFfWehZAMBwUdlo0DECTUc17EOb2PxpVB1SWChdAzjbhb9pTDUDQhmdvECX5P9FlMKCC9+g/IIAzjELgE0DajDngMv8GQFhWDmDPjNs/y1guLh96EkAxPi8k7DIEQJCc4URlhRhA3eLKKLwkEECqpNAyTBD/P6xpjXcDiwVAFtl//cQm4z+Ibt3XKiYTQM7mCLUb3QdAoM1t8yVv7D8aLZv2Nk8UQEAJPV5nQwxAtSsfTCoE9z9TPjXLXIIWQBVanC5W9AtAYM3d7Adm9j++5mQz1FoWQBUThyaVBghAwH5muQsV7T89Q1qv82MUQJoWGOfNuBdAzrkClkmwDkDQjKq77t37Py+g0dtitsE/ZwAMTwVPEUBojepluNwBQGYbtuW+t9w/HNWIJs6MEkDTNuQUSlgEQKxktPP5TcQ/ixbLB8JjEUCwuWjXMQYCQAS/R09FkRdAowpiZjhhDkB7LmlczD/7P01iQmhhsAVAnrtTwDy84z/Z6jfQ2TgTQChOCXMnWwpAhrW3daoz8z/HYJvVPI4VQLT3ik5FcA5Angi7LOZd+z+NNVzDy5gXQBXdvVTFUA1AYNMgOeYe+T8+qHXGCwkXQKQTOKwa5AJA8gFVoEMW0T+FwzJyttIRQAEAAAD/////BwAAAP////8xAAAA/////1cBAAD/////YQkAAP////+nQQAA/////5HLAQD/////95AMAP/////B9lcAAAAAAAAAAAAAAAAAAgAAAP////8OAAAA/////2IAAAD/////rgIAAP/////CEgAA/////06DAAD/////IpcDAP/////uIRkA/////4LtrwAAAAAAAAAAAAAAAAAAAAAAAgAAAP//////////AQAAAAMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////wIAAAD//////////wEAAAAAAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA/////////////////////wEAAAD///////////////8CAAAA////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD///////////////////////////////8CAAAA////////////////AQAAAP////////////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAAAQAAAP//////////AgAAAP//////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAAEAAAD//////////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAQAAAAEAAAACAAAAAgAAAAAAAAAFAAAABQAAAAAAAAACAAAAAgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAABAAAAAgAAAAIAAAACAAAAAAAAAAUAAAAGAAAAAAAAAAIAAAACAAAAAwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAgAAAAEAAAADAAAAAgAAAAIAAAAAAAAABQAAAAcAAAAAAAAAAgAAAAIAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAACAAAAAQAAAAQAAAACAAAAAgAAAAAAAAAFAAAACAAAAAAAAAACAAAAAgAAAAMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAACAAAAAAAAAAUAAAAJAAAAAAAAAAIAAAACAAAAAwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAIAAAACAAAAAAAAAAMAAAAOAAAAAgAAAAAAAAACAAAAAwAAAAAAAAAAAAAAAgAAAAIAAAADAAAABgAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAgAAAAIAAAAAAAAAAwAAAAoAAAACAAAAAAAAAAIAAAADAAAAAQAAAAAAAAACAAAAAgAAAAMAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAgAAAAAAAAADAAAACwAAAAIAAAAAAAAAAgAAAAMAAAACAAAAAAAAAAIAAAACAAAAAwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAACAAAAAAAAAAMAAAAMAAAAAgAAAAAAAAACAAAAAwAAAAMAAAAAAAAAAgAAAAIAAAADAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAIAAAAAAAAAAwAAAA0AAAACAAAAAAAAAAIAAAADAAAABAAAAAAAAAACAAAAAgAAAAMAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAgAAAAAAAAADAAAABgAAAAIAAAAAAAAAAgAAAAMAAAAPAAAAAAAAAAIAAAACAAAAAwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAIAAAACAAAAAAAAAAMAAAAHAAAAAgAAAAAAAAACAAAAAwAAABAAAAAAAAAAAgAAAAIAAAADAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAIAAAAAAAAAAwAAAAgAAAACAAAAAAAAAAIAAAADAAAAEQAAAAAAAAACAAAAAgAAAAMAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAACAAAAAgAAAAAAAAADAAAACQAAAAIAAAAAAAAAAgAAAAMAAAASAAAAAAAAAAIAAAACAAAAAwAAAA4AAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAACAAAAAAAAAAMAAAAFAAAAAgAAAAAAAAACAAAAAwAAABMAAAAAAAAAAgAAAAIAAAADAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAABAAEAAAEBAAAAAAABAAAAAQAAAAEAAQAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAAAAQAAAAMAAAAOAAAABgAAAAsAAAACAAAABwAAAAEAAAAYAAAABQAAAAoAAAABAAAABgAAAAAAAAAmAAAABwAAAAwAAAADAAAACAAAAAIAAAAxAAAACQAAAA4AAAAAAAAABQAAAAQAAAA6AAAACAAAAA0AAAAEAAAACQAAAAMAAAA/AAAACwAAAAYAAAAPAAAACgAAABAAAABIAAAADAAAAAcAAAAQAAAACwAAABEAAABTAAAACgAAAAUAAAATAAAADgAAAA8AAABhAAAADQAAAAgAAAARAAAADAAAABIAAABrAAAADgAAAAkAAAASAAAADQAAABMAAAB1AAAADwAAABMAAAARAAAAEgAAABAAAAAHAAAABwAAAAEAAAACAAAABAAAAAMAAAAAAAAAAAAAAAcAAAADAAAAAQAAAAIAAAAFAAAABAAAAAAAAAAAAAAAYWxnb3MuYwBfcG9seWZpbGxJbnRlcm5hbABhZGphY2VudEZhY2VEaXJbdG1wRmlqay5mYWNlXVtmaWprLmZhY2VdID09IEtJAGZhY2VpamsuYwBfZmFjZUlqa1BlbnRUb0dlb0JvdW5kYXJ5AGFkamFjZW50RmFjZURpcltjZW50ZXJJSksuZmFjZV1bZmFjZTJdID09IEtJAF9mYWNlSWprVG9HZW9Cb3VuZGFyeQBwb2x5Z29uLT5uZXh0ID09IE5VTEwAbGlua2VkR2VvLmMAYWRkTmV3TGlua2VkUG9seWdvbgBuZXh0ICE9IE5VTEwAbG9vcCAhPSBOVUxMAGFkZE5ld0xpbmtlZExvb3AAcG9seWdvbi0+Zmlyc3QgPT0gTlVMTABhZGRMaW5rZWRMb29wAGNvb3JkICE9IE5VTEwAYWRkTGlua2VkQ29vcmQAbG9vcC0+Zmlyc3QgPT0gTlVMTABpbm5lckxvb3BzICE9IE5VTEwAbm9ybWFsaXplTXVsdGlQb2x5Z29uAGJib3hlcyAhPSBOVUxMAGNhbmRpZGF0ZXMgIT0gTlVMTABmaW5kUG9seWdvbkZvckhvbGUAY2FuZGlkYXRlQkJveGVzICE9IE5VTEwAcmV2RGlyICE9IElOVkFMSURfRElHSVQAbG9jYWxpai5jAGgzVG9Mb2NhbElqawBiYXNlQ2VsbCAhPSBvcmlnaW5CYXNlQ2VsbAAhKG9yaWdpbk9uUGVudCAmJiBpbmRleE9uUGVudCkAcGVudGFnb25Sb3RhdGlvbnMgPj0gMABkaXJlY3Rpb25Sb3RhdGlvbnMgPj0gMABiYXNlQ2VsbCA9PSBvcmlnaW5CYXNlQ2VsbABiYXNlQ2VsbCAhPSBJTlZBTElEX0JBU0VfQ0VMTABsb2NhbElqa1RvSDMAIV9pc0Jhc2VDZWxsUGVudGFnb24oYmFzZUNlbGwpAGJhc2VDZWxsUm90YXRpb25zID49IDAAd2l0aGluUGVudGFnb25Sb3RhdGlvbnMgPj0gMABncmFwaC0+YnVja2V0cyAhPSBOVUxMAHZlcnRleEdyYXBoLmMAaW5pdFZlcnRleEdyYXBoAG5vZGUgIT0gTlVMTABhZGRWZXJ0ZXhOb2Rl\";\n var tempDoublePtr = 24032;\n function demangle(func) {\n return func;\n }\n function demangleAll(text) {\n var regex = /\\b__Z[\\w\\d_]+/g;\n return text.replace(regex, function(x) {\n var y = demangle(x);\n return x === y ? x : y + \" [\" + x + \"]\";\n });\n }\n function jsStackTrace() {\n var err = new Error();\n if (!err.stack) {\n try {\n throw new Error(0);\n } catch (e) {\n err = e;\n }\n if (!err.stack) return \"(no stack trace available)\";\n }\n return err.stack.toString();\n }\n function stackTrace() {\n var js = jsStackTrace();\n if (Module[\"extraStackTrace\"]) js += \"\\n\" + Module[\"extraStackTrace\"]();\n return demangleAll(js);\n }\n function ___assert_fail(condition, filename, line, func) {\n abort(\"Assertion failed: \" + UTF8ToString(condition) + \", at: \" + [\n filename ? UTF8ToString(filename) : \"unknown filename\",\n line,\n func ? UTF8ToString(func) : \"unknown function\"\n ]);\n }\n function _emscripten_get_heap_size() {\n return HEAP8.length;\n }\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.set(HEAPU8.subarray(src, src + num), dest);\n }\n function ___setErrNo(value) {\n if (Module[\"___errno_location\"]) HEAP32[Module[\"___errno_location\"]() >> 2] = value;\n return value;\n }\n function abortOnCannotGrowMemory(requestedSize) {\n abort(\"OOM\");\n }\n function emscripten_realloc_buffer(size) {\n try {\n var newBuffer = new ArrayBuffer(size);\n if (newBuffer.byteLength != size) return;\n new Int8Array(newBuffer).set(HEAP8);\n _emscripten_replace_memory(newBuffer);\n updateGlobalBufferAndViews(newBuffer);\n return 1;\n } catch (e) {}\n }\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = _emscripten_get_heap_size();\n var PAGE_MULTIPLE = 16777216;\n var LIMIT = 2147483648 - PAGE_MULTIPLE;\n if (requestedSize > LIMIT) return false;\n var MIN_TOTAL_MEMORY = 16777216;\n var newSize = Math.max(oldSize, MIN_TOTAL_MEMORY);\n while(newSize < requestedSize)if (newSize <= 536870912) newSize = alignUp(2 * newSize, PAGE_MULTIPLE);\n else newSize = Math.min(alignUp((3 * newSize + 2147483648) / 4, PAGE_MULTIPLE), LIMIT);\n var replacement = emscripten_realloc_buffer(newSize);\n if (!replacement) return false;\n return true;\n }\n var decodeBase64 = typeof atob === \"function\" ? atob : function(input) {\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var output = \"\";\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0;\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n do {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = enc1 << 2 | enc2 >> 4;\n chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n chr3 = (enc3 & 3) << 6 | enc4;\n output = output + String.fromCharCode(chr1);\n if (enc3 !== 64) output = output + String.fromCharCode(chr2);\n if (enc4 !== 64) output = output + String.fromCharCode(chr3);\n }while (i < input.length);\n return output;\n };\n function intArrayFromBase64(s) {\n try {\n var decoded = decodeBase64(s);\n var bytes = new Uint8Array(decoded.length);\n for(var i = 0; i < decoded.length; ++i)bytes[i] = decoded.charCodeAt(i);\n return bytes;\n } catch (_) {\n throw new Error(\"Converting base64 string to bytes failed.\");\n }\n }\n function tryParseAsDataURI(filename) {\n if (!isDataURI(filename)) return;\n return intArrayFromBase64(filename.slice(dataURIPrefix.length));\n }\n var asmGlobalArg = {\n \"Math\": Math,\n \"Int8Array\": Int8Array,\n \"Int32Array\": Int32Array,\n \"Uint8Array\": Uint8Array,\n \"Float32Array\": Float32Array,\n \"Float64Array\": Float64Array\n };\n var asmLibraryArg = {\n \"a\": abort,\n \"b\": setTempRet0,\n \"c\": getTempRet0,\n \"d\": ___assert_fail,\n \"e\": ___setErrNo,\n \"f\": _emscripten_get_heap_size,\n \"g\": _emscripten_memcpy_big,\n \"h\": _emscripten_resize_heap,\n \"i\": abortOnCannotGrowMemory,\n \"j\": demangle,\n \"k\": demangleAll,\n \"l\": emscripten_realloc_buffer,\n \"m\": jsStackTrace,\n \"n\": stackTrace,\n \"o\": tempDoublePtr,\n \"p\": DYNAMICTOP_PTR\n }; // EMSCRIPTEN_START_ASM\n var asm = /** @suppress {uselessCode} */ function(global, env, buffer) {\n \"almost asm\";\n var a = new global.Int8Array(buffer), b = new global.Int32Array(buffer), c = new global.Uint8Array(buffer), d = new global.Float32Array(buffer), e = new global.Float64Array(buffer), g = env.p | 0, p = global.Math.floor, q = global.Math.abs, r = global.Math.sqrt, s = global.Math.pow, t = global.Math.cos, u = global.Math.sin, v = global.Math.tan, w = global.Math.acos, x = global.Math.asin, y = global.Math.atan, z = global.Math.atan2, A = global.Math.ceil, B = global.Math.imul, C = global.Math.min, D = global.Math.clz32, F = env.b, G = env.c, H = env.d, I = env.e, J = env.f, K = env.g, L = env.h, M = env.i, S = 24048;\n function V(newBuffer) {\n a = new Int8Array(newBuffer);\n c = new Uint8Array(newBuffer);\n b = new Int32Array(newBuffer);\n d = new Float32Array(newBuffer);\n e = new Float64Array(newBuffer);\n buffer = newBuffer;\n return true;\n } // EMSCRIPTEN_START_FUNCS\n function W(a) {\n a = a | 0;\n var b = 0;\n b = S;\n S = S + a | 0;\n S = S + 15 & -16;\n return b | 0;\n }\n function X() {\n return S | 0;\n }\n function Y(a) {\n a = a | 0;\n S = a;\n }\n function Z(a, b) {\n a = a | 0;\n b = b | 0;\n S = a;\n }\n function _(a) {\n a = a | 0;\n return (B(a * 3 | 0, a + 1 | 0) | 0) + 1 | 0;\n }\n function $(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0;\n if (!(ba(a, b, c, d, 0) | 0)) return;\n f = (B(c * 3 | 0, c + 1 | 0) | 0) + 1 | 0;\n gd(d | 0, 0, f << 3 | 0);\n e = Xc(f, 4) | 0;\n if (!e) return;\n ca(a, b, c, d, e, f, 0);\n Wc(e);\n return;\n }\n function aa(a, b, c, d, e) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0;\n if (!(ba(a, b, c, d, e) | 0)) return;\n f = (B(c * 3 | 0, c + 1 | 0) | 0) + 1 | 0;\n gd(d | 0, 0, f << 3 | 0);\n if (e | 0) {\n gd(e | 0, 0, f << 2 | 0);\n ca(a, b, c, d, e, f, 0);\n return;\n }\n e = Xc(f, 4) | 0;\n if (!e) return;\n ca(a, b, c, d, e, f, 0);\n Wc(e);\n return;\n }\n function ba(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0;\n o = S;\n S = S + 16 | 0;\n n = o;\n g = e;\n b[g >> 2] = a;\n b[g + 4 >> 2] = c;\n g = (f | 0) != 0;\n if (g) b[f >> 2] = 0;\n if (Eb(a, c) | 0) {\n n = 1;\n S = o;\n return n | 0;\n }\n b[n >> 2] = 0;\n a: do if ((d | 0) >= 1) {\n if (g) {\n k = 0;\n l = 1;\n m = 1;\n h = 0;\n g = a;\n while(true){\n if (!(h | k)) {\n g = da(g, c, 4, n) | 0;\n c = G() | 0;\n if ((g | 0) == 0 & (c | 0) == 0) {\n g = 2;\n break a;\n }\n if (Eb(g, c) | 0) {\n g = 1;\n break a;\n }\n }\n g = da(g, c, b[16 + (k << 2) >> 2] | 0, n) | 0;\n c = G() | 0;\n if ((g | 0) == 0 & (c | 0) == 0) {\n g = 2;\n break a;\n }\n a = e + (m << 3) | 0;\n b[a >> 2] = g;\n b[a + 4 >> 2] = c;\n b[f + (m << 2) >> 2] = l;\n h = h + 1 | 0;\n a = (h | 0) == (l | 0);\n i = k + 1 | 0;\n j = (i | 0) == 6;\n if (Eb(g, c) | 0) {\n g = 1;\n break a;\n }\n l = l + (j & a & 1) | 0;\n if ((l | 0) > (d | 0)) {\n g = 0;\n break;\n } else {\n k = a ? j ? 0 : i : k;\n m = m + 1 | 0;\n h = a ? 0 : h;\n }\n }\n } else {\n k = 0;\n l = 1;\n m = 1;\n h = 0;\n g = a;\n while(true){\n if (!(h | k)) {\n g = da(g, c, 4, n) | 0;\n c = G() | 0;\n if ((g | 0) == 0 & (c | 0) == 0) {\n g = 2;\n break a;\n }\n if (Eb(g, c) | 0) {\n g = 1;\n break a;\n }\n }\n g = da(g, c, b[16 + (k << 2) >> 2] | 0, n) | 0;\n c = G() | 0;\n if ((g | 0) == 0 & (c | 0) == 0) {\n g = 2;\n break a;\n }\n a = e + (m << 3) | 0;\n b[a >> 2] = g;\n b[a + 4 >> 2] = c;\n h = h + 1 | 0;\n a = (h | 0) == (l | 0);\n i = k + 1 | 0;\n j = (i | 0) == 6;\n if (Eb(g, c) | 0) {\n g = 1;\n break a;\n }\n l = l + (j & a & 1) | 0;\n if ((l | 0) > (d | 0)) {\n g = 0;\n break;\n } else {\n k = a ? j ? 0 : i : k;\n m = m + 1 | 0;\n h = a ? 0 : h;\n }\n }\n }\n } else g = 0;\n while (0);\n n = g;\n S = o;\n return n | 0;\n }\n function ca(a, c, d, e, f, g, h) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n g = g | 0;\n h = h | 0;\n var i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0;\n m = S;\n S = S + 16 | 0;\n l = m;\n if ((a | 0) == 0 & (c | 0) == 0) {\n S = m;\n return;\n }\n i = ad(a | 0, c | 0, g | 0, ((g | 0) < 0) << 31 >> 31 | 0) | 0;\n G();\n j = e + (i << 3) | 0;\n n = j;\n o = b[n >> 2] | 0;\n n = b[n + 4 >> 2] | 0;\n k = (o | 0) == (a | 0) & (n | 0) == (c | 0);\n if (!((o | 0) == 0 & (n | 0) == 0 | k)) do {\n i = (i + 1 | 0) % (g | 0) | 0;\n j = e + (i << 3) | 0;\n o = j;\n n = b[o >> 2] | 0;\n o = b[o + 4 >> 2] | 0;\n k = (n | 0) == (a | 0) & (o | 0) == (c | 0);\n }while (!((n | 0) == 0 & (o | 0) == 0 | k));\n i = f + (i << 2) | 0;\n if (k ? (b[i >> 2] | 0) <= (h | 0) : 0) {\n S = m;\n return;\n }\n o = j;\n b[o >> 2] = a;\n b[o + 4 >> 2] = c;\n b[i >> 2] = h;\n if ((h | 0) >= (d | 0)) {\n S = m;\n return;\n }\n o = h + 1 | 0;\n b[l >> 2] = 0;\n n = da(a, c, 2, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 3, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 1, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 5, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 4, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 6, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n S = m;\n return;\n }\n function da(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0;\n if ((b[e >> 2] | 0) > 0) {\n f = 0;\n do {\n d = Pa(d) | 0;\n f = f + 1 | 0;\n }while ((f | 0) < (b[e >> 2] | 0));\n }\n i = bd(a | 0, c | 0, 45) | 0;\n G();\n j = i & 127;\n g = Kb(a, c) | 0;\n f = bd(a | 0, c | 0, 52) | 0;\n G();\n f = f & 15;\n a: do {\n if (!f) h = 6;\n else while(true){\n m = (15 - f | 0) * 3 | 0;\n n = bd(a | 0, c | 0, m | 0) | 0;\n G();\n n = n & 7;\n o = (Qb(f) | 0) == 0;\n f = f + -1 | 0;\n l = cd(7, 0, m | 0) | 0;\n c = c & ~(G() | 0);\n m = cd(b[(o ? 464 : 48) + (n * 28 | 0) + (d << 2) >> 2] | 0, 0, m | 0) | 0;\n k = G() | 0;\n d = b[(o ? 672 : 256) + (n * 28 | 0) + (d << 2) >> 2] | 0;\n a = m | a & ~l;\n c = k | c;\n if (!d) {\n d = 0;\n break a;\n }\n if (!f) {\n h = 6;\n break;\n }\n }\n }while (0);\n if ((h | 0) == 6) {\n o = b[880 + (j * 28 | 0) + (d << 2) >> 2] | 0;\n n = cd(o | 0, 0, 45) | 0;\n a = n | a;\n c = G() | 0 | c & -1040385;\n d = b[4304 + (j * 28 | 0) + (d << 2) >> 2] | 0;\n if ((o & 127 | 0) == 127) {\n o = cd(b[880 + (j * 28 | 0) + 20 >> 2] | 0, 0, 45) | 0;\n c = G() | 0 | c & -1040385;\n d = b[4304 + (j * 28 | 0) + 20 >> 2] | 0;\n a = Mb(o | a, c) | 0;\n c = G() | 0;\n b[e >> 2] = (b[e >> 2] | 0) + 1;\n }\n }\n h = bd(a | 0, c | 0, 45) | 0;\n G();\n h = h & 127;\n b: do {\n if (!(la(h) | 0)) {\n if ((d | 0) > 0) {\n f = 0;\n do {\n a = Mb(a, c) | 0;\n c = G() | 0;\n f = f + 1 | 0;\n }while ((f | 0) != (d | 0));\n }\n } else {\n c: do if ((Kb(a, c) | 0) == 1) {\n if ((j | 0) != (h | 0)) {\n if (ra(h, b[7728 + (j * 28 | 0) >> 2] | 0) | 0) {\n a = Ob(a, c) | 0;\n g = 1;\n c = G() | 0;\n break;\n } else {\n a = Mb(a, c) | 0;\n g = 1;\n c = G() | 0;\n break;\n }\n }\n switch(g | 0){\n case 5:\n a = Ob(a, c) | 0;\n c = G() | 0;\n b[e >> 2] = (b[e >> 2] | 0) + 5;\n g = 0;\n break c;\n case 3:\n a = Mb(a, c) | 0;\n c = G() | 0;\n b[e >> 2] = (b[e >> 2] | 0) + 1;\n g = 0;\n break c;\n default:\n n = 0;\n o = 0;\n F(n | 0);\n return o | 0;\n }\n } else g = 0;\n while (0);\n if ((d | 0) > 0) {\n f = 0;\n do {\n a = Lb(a, c) | 0;\n c = G() | 0;\n f = f + 1 | 0;\n }while ((f | 0) != (d | 0));\n }\n if ((j | 0) != (h | 0)) {\n if (!(ma(h) | 0)) {\n if ((g | 0) != 0 | (Kb(a, c) | 0) != 5) break;\n b[e >> 2] = (b[e >> 2] | 0) + 1;\n break;\n }\n switch(i & 127){\n case 8:\n case 118:\n break b;\n default:\n }\n if ((Kb(a, c) | 0) != 3) b[e >> 2] = (b[e >> 2] | 0) + 1;\n }\n }\n }while (0);\n b[e >> 2] = ((b[e >> 2] | 0) + d | 0) % 6 | 0;\n n = c;\n o = a;\n F(n | 0);\n return o | 0;\n }\n function ea(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0;\n m = S;\n S = S + 16 | 0;\n l = m;\n if (!d) {\n l = e;\n b[l >> 2] = a;\n b[l + 4 >> 2] = c;\n l = 0;\n S = m;\n return l | 0;\n }\n b[l >> 2] = 0;\n a: do if (!(Eb(a, c) | 0)) {\n g = (d | 0) > 0;\n if (g) {\n f = 0;\n k = a;\n do {\n k = da(k, c, 4, l) | 0;\n c = G() | 0;\n if ((k | 0) == 0 & (c | 0) == 0) {\n a = 2;\n break a;\n }\n f = f + 1 | 0;\n if (Eb(k, c) | 0) {\n a = 1;\n break a;\n }\n }while ((f | 0) < (d | 0));\n j = e;\n b[j >> 2] = k;\n b[j + 4 >> 2] = c;\n j = d + -1 | 0;\n if (g) {\n g = 0;\n h = 1;\n f = k;\n a = c;\n do {\n f = da(f, a, 2, l) | 0;\n a = G() | 0;\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n i = e + (h << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n h = h + 1 | 0;\n if (Eb(f, a) | 0) {\n a = 1;\n break a;\n }\n g = g + 1 | 0;\n }while ((g | 0) < (d | 0));\n i = 0;\n g = h;\n do {\n f = da(f, a, 3, l) | 0;\n a = G() | 0;\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n h = e + (g << 3) | 0;\n b[h >> 2] = f;\n b[h + 4 >> 2] = a;\n g = g + 1 | 0;\n if (Eb(f, a) | 0) {\n a = 1;\n break a;\n }\n i = i + 1 | 0;\n }while ((i | 0) < (d | 0));\n h = 0;\n do {\n f = da(f, a, 1, l) | 0;\n a = G() | 0;\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n i = e + (g << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n g = g + 1 | 0;\n if (Eb(f, a) | 0) {\n a = 1;\n break a;\n }\n h = h + 1 | 0;\n }while ((h | 0) < (d | 0));\n h = 0;\n do {\n f = da(f, a, 5, l) | 0;\n a = G() | 0;\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n i = e + (g << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n g = g + 1 | 0;\n if (Eb(f, a) | 0) {\n a = 1;\n break a;\n }\n h = h + 1 | 0;\n }while ((h | 0) < (d | 0));\n h = 0;\n do {\n f = da(f, a, 4, l) | 0;\n a = G() | 0;\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n i = e + (g << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n g = g + 1 | 0;\n if (Eb(f, a) | 0) {\n a = 1;\n break a;\n }\n h = h + 1 | 0;\n }while ((h | 0) < (d | 0));\n h = 0;\n while(true){\n f = da(f, a, 6, l) | 0;\n a = G() | 0;\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n if ((h | 0) != (j | 0)) {\n i = e + (g << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n if (!(Eb(f, a) | 0)) g = g + 1 | 0;\n else {\n a = 1;\n break a;\n }\n }\n h = h + 1 | 0;\n if ((h | 0) >= (d | 0)) {\n h = k;\n g = c;\n break;\n }\n }\n } else {\n h = k;\n f = k;\n g = c;\n a = c;\n }\n } else {\n h = e;\n b[h >> 2] = a;\n b[h + 4 >> 2] = c;\n h = a;\n f = a;\n g = c;\n a = c;\n }\n a = ((h | 0) != (f | 0) | (g | 0) != (a | 0)) & 1;\n } else a = 1;\n while (0);\n l = a;\n S = m;\n return l | 0;\n }\n function fa(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n g = S;\n S = S + 48 | 0;\n f = g + 8 | 0;\n e = g;\n i = a;\n h = b[i + 4 >> 2] | 0;\n d = e;\n b[d >> 2] = b[i >> 2];\n b[d + 4 >> 2] = h;\n uc(e, f);\n f = ya(f, c) | 0;\n c = b[e >> 2] | 0;\n e = b[a + 8 >> 2] | 0;\n if ((e | 0) <= 0) {\n i = c;\n h = (f | 0) < (i | 0);\n i = h ? i : f;\n i = i + 12 | 0;\n S = g;\n return i | 0;\n }\n d = b[a + 12 >> 2] | 0;\n a = 0;\n do {\n c = (b[d + (a << 3) >> 2] | 0) + c | 0;\n a = a + 1 | 0;\n }while ((a | 0) < (e | 0));\n i = (f | 0) < (c | 0);\n i = i ? c : f;\n i = i + 12 | 0;\n S = g;\n return i | 0;\n }\n function ga(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0;\n i = S;\n S = S + 48 | 0;\n e = i + 8 | 0;\n f = i;\n if (!(ha(a, c, d) | 0)) {\n S = i;\n return;\n }\n j = a;\n g = b[j + 4 >> 2] | 0;\n h = f;\n b[h >> 2] = b[j >> 2];\n b[h + 4 >> 2] = g;\n uc(f, e);\n h = ya(e, c) | 0;\n c = b[f >> 2] | 0;\n g = b[a + 8 >> 2] | 0;\n if ((g | 0) > 0) {\n f = b[a + 12 >> 2] | 0;\n e = 0;\n do {\n c = (b[f + (e << 3) >> 2] | 0) + c | 0;\n e = e + 1 | 0;\n }while ((e | 0) != (g | 0));\n }\n c = (h | 0) < (c | 0) ? c : h;\n if ((c | 0) <= -12) {\n S = i;\n return;\n }\n j = c + 11 | 0;\n gd(d | 0, 0, (((j | 0) > 0 ? j : 0) << 3) + 8 | 0);\n S = i;\n return;\n }\n function ha(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, I = 0, J = 0;\n J = S;\n S = S + 112 | 0;\n D = J + 80 | 0;\n j = J + 72 | 0;\n E = J;\n F = J + 56 | 0;\n k = a + 8 | 0;\n I = Vc((b[k >> 2] << 5) + 32 | 0) | 0;\n if (!I) H(22848, 22448, 800, 22456);\n vc(a, I);\n g = a;\n e = b[g + 4 >> 2] | 0;\n i = j;\n b[i >> 2] = b[g >> 2];\n b[i + 4 >> 2] = e;\n uc(j, D);\n i = ya(D, c) | 0;\n e = b[j >> 2] | 0;\n g = b[k >> 2] | 0;\n if ((g | 0) > 0) {\n h = b[a + 12 >> 2] | 0;\n f = 0;\n do {\n e = (b[h + (f << 3) >> 2] | 0) + e | 0;\n f = f + 1 | 0;\n }while ((f | 0) != (g | 0));\n }\n i = (i | 0) < (e | 0) ? e : i;\n C = i + 12 | 0;\n f = Xc(C, 8) | 0;\n l = Xc(C, 8) | 0;\n b[D >> 2] = 0;\n A = a;\n B = b[A + 4 >> 2] | 0;\n e = j;\n b[e >> 2] = b[A >> 2];\n b[e + 4 >> 2] = B;\n e = ia(j, C, c, D, f, l) | 0;\n if (e | 0) {\n Wc(f);\n Wc(l);\n Wc(I);\n I = e;\n S = J;\n return I | 0;\n }\n a: do if ((b[k >> 2] | 0) > 0) {\n g = a + 12 | 0;\n e = 0;\n while(true){\n h = ia((b[g >> 2] | 0) + (e << 3) | 0, C, c, D, f, l) | 0;\n e = e + 1 | 0;\n if (h | 0) break;\n if ((e | 0) >= (b[k >> 2] | 0)) break a;\n }\n Wc(f);\n Wc(l);\n Wc(I);\n I = h;\n S = J;\n return I | 0;\n }\n while (0);\n if ((i | 0) > -12) gd(l | 0, 0, ((C | 0) > 1 ? C : 1) << 3 | 0);\n b: do if ((b[D >> 2] | 0) > 0) {\n B = ((C | 0) < 0) << 31 >> 31;\n v = f;\n w = l;\n x = f;\n y = f;\n z = l;\n A = f;\n e = f;\n r = f;\n s = l;\n t = l;\n u = l;\n f = l;\n c: while(true){\n q = b[D >> 2] | 0;\n o = 0;\n p = 0;\n g = 0;\n while(true){\n h = E;\n i = h + 56 | 0;\n do {\n b[h >> 2] = 0;\n h = h + 4 | 0;\n }while ((h | 0) < (i | 0));\n c = v + (o << 3) | 0;\n j = b[c >> 2] | 0;\n c = b[c + 4 >> 2] | 0;\n if (ba(j, c, 1, E, 0) | 0) {\n h = E;\n i = h + 56 | 0;\n do {\n b[h >> 2] = 0;\n h = h + 4 | 0;\n }while ((h | 0) < (i | 0));\n h = Xc(7, 4) | 0;\n if (h | 0) {\n ca(j, c, 1, E, h, 7, 0);\n Wc(h);\n }\n }\n n = 0;\n do {\n m = E + (n << 3) | 0;\n l = b[m >> 2] | 0;\n m = b[m + 4 >> 2] | 0;\n d: do if (!((l | 0) == 0 & (m | 0) == 0)) {\n j = ad(l | 0, m | 0, C | 0, B | 0) | 0;\n G();\n h = d + (j << 3) | 0;\n i = h;\n c = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n if (!((c | 0) == 0 & (i | 0) == 0)) {\n k = 0;\n while(true){\n if ((k | 0) > (C | 0)) break c;\n if ((c | 0) == (l | 0) & (i | 0) == (m | 0)) break d;\n j = (j + 1 | 0) % (C | 0) | 0;\n h = d + (j << 3) | 0;\n i = h;\n c = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n if ((c | 0) == 0 & (i | 0) == 0) break;\n else k = k + 1 | 0;\n }\n }\n if (!((l | 0) == 0 & (m | 0) == 0)) {\n Ub(l, m, F);\n if (wc(a, I, F) | 0) {\n k = h;\n b[k >> 2] = l;\n b[k + 4 >> 2] = m;\n k = w + (g << 3) | 0;\n b[k >> 2] = l;\n b[k + 4 >> 2] = m;\n g = g + 1 | 0;\n }\n }\n }\n while (0);\n n = n + 1 | 0;\n }while (n >>> 0 < 7);\n p = p + 1 | 0;\n if ((p | 0) >= (q | 0)) break;\n else o = o + 1 | 0;\n }\n if ((q | 0) > 0) gd(x | 0, 0, q << 3 | 0);\n b[D >> 2] = g;\n if ((g | 0) > 0) {\n l = f;\n m = u;\n n = A;\n o = t;\n p = s;\n q = w;\n f = r;\n u = e;\n t = y;\n s = x;\n r = l;\n e = m;\n A = z;\n z = n;\n y = o;\n x = p;\n w = v;\n v = q;\n } else break b;\n }\n Wc(y);\n Wc(z);\n Wc(I);\n I = -1;\n S = J;\n return I | 0;\n } else e = l;\n while (0);\n Wc(I);\n Wc(f);\n Wc(e);\n I = 0;\n S = J;\n return I | 0;\n }\n function ia(a, c, d, f, g, h) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n h = h | 0;\n var i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0.0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0.0, E = 0.0;\n C = S;\n S = S + 48 | 0;\n y = C + 32 | 0;\n z = C + 16 | 0;\n A = C;\n i = b[a >> 2] | 0;\n if ((i | 0) <= 0) {\n B = 0;\n S = C;\n return B | 0;\n }\n t = a + 4 | 0;\n u = y + 8 | 0;\n v = z + 8 | 0;\n w = A + 8 | 0;\n x = ((c | 0) < 0) << 31 >> 31;\n s = 0;\n a: while(true){\n j = b[t >> 2] | 0;\n q = j + (s << 4) | 0;\n b[y >> 2] = b[q >> 2];\n b[y + 4 >> 2] = b[q + 4 >> 2];\n b[y + 8 >> 2] = b[q + 8 >> 2];\n b[y + 12 >> 2] = b[q + 12 >> 2];\n if ((s | 0) == (i + -1 | 0)) {\n b[z >> 2] = b[j >> 2];\n b[z + 4 >> 2] = b[j + 4 >> 2];\n b[z + 8 >> 2] = b[j + 8 >> 2];\n b[z + 12 >> 2] = b[j + 12 >> 2];\n } else {\n q = j + (s + 1 << 4) | 0;\n b[z >> 2] = b[q >> 2];\n b[z + 4 >> 2] = b[q + 4 >> 2];\n b[z + 8 >> 2] = b[q + 8 >> 2];\n b[z + 12 >> 2] = b[q + 12 >> 2];\n }\n q = za(y, z, d) | 0;\n b: do if ((q | 0) > 0) {\n r = +(q | 0);\n p = 0;\n c: while(true){\n E = +(q - p | 0);\n D = +(p | 0);\n e[A >> 3] = +e[y >> 3] * E / r + +e[z >> 3] * D / r;\n e[w >> 3] = +e[u >> 3] * E / r + +e[v >> 3] * D / r;\n n = Rb(A, d) | 0;\n o = G() | 0;\n j = ad(n | 0, o | 0, c | 0, x | 0) | 0;\n G();\n i = h + (j << 3) | 0;\n k = i;\n l = b[k >> 2] | 0;\n k = b[k + 4 >> 2] | 0;\n d: do if ((l | 0) == 0 & (k | 0) == 0) B = 14;\n else {\n m = 0;\n while(true){\n if ((m | 0) > (c | 0)) {\n i = 1;\n break d;\n }\n if ((l | 0) == (n | 0) & (k | 0) == (o | 0)) {\n i = 7;\n break d;\n }\n j = (j + 1 | 0) % (c | 0) | 0;\n i = h + (j << 3) | 0;\n k = i;\n l = b[k >> 2] | 0;\n k = b[k + 4 >> 2] | 0;\n if ((l | 0) == 0 & (k | 0) == 0) {\n B = 14;\n break;\n } else m = m + 1 | 0;\n }\n }\n while (0);\n if ((B | 0) == 14) {\n B = 0;\n if ((n | 0) == 0 & (o | 0) == 0) i = 7;\n else {\n b[i >> 2] = n;\n b[i + 4 >> 2] = o;\n i = b[f >> 2] | 0;\n m = g + (i << 3) | 0;\n b[m >> 2] = n;\n b[m + 4 >> 2] = o;\n b[f >> 2] = i + 1;\n i = 0;\n }\n }\n switch(i & 7){\n case 7:\n case 0:\n break;\n default:\n break c;\n }\n p = p + 1 | 0;\n if ((q | 0) <= (p | 0)) {\n B = 8;\n break b;\n }\n }\n if (i | 0) {\n i = -1;\n B = 20;\n break a;\n }\n } else B = 8;\n while (0);\n if ((B | 0) == 8) B = 0;\n s = s + 1 | 0;\n i = b[a >> 2] | 0;\n if ((s | 0) >= (i | 0)) {\n i = 0;\n B = 20;\n break;\n }\n }\n if ((B | 0) == 20) {\n S = C;\n return i | 0;\n }\n return 0;\n }\n function ja(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0;\n k = S;\n S = S + 176 | 0;\n j = k;\n if ((c | 0) < 1) {\n Lc(d, 0, 0);\n S = k;\n return;\n }\n h = a;\n h = bd(b[h >> 2] | 0, b[h + 4 >> 2] | 0, 52) | 0;\n G();\n Lc(d, (c | 0) > 6 ? c : 6, h & 15);\n h = 0;\n do {\n e = a + (h << 3) | 0;\n Vb(b[e >> 2] | 0, b[e + 4 >> 2] | 0, j);\n e = b[j >> 2] | 0;\n if ((e | 0) > 0) {\n i = 0;\n do {\n g = j + 8 + (i << 4) | 0;\n i = i + 1 | 0;\n e = j + 8 + (((i | 0) % (e | 0) | 0) << 4) | 0;\n f = Qc(d, e, g) | 0;\n if (!f) Pc(d, g, e);\n else Oc(d, f);\n e = b[j >> 2] | 0;\n }while ((i | 0) < (e | 0));\n }\n h = h + 1 | 0;\n }while ((h | 0) != (c | 0));\n S = k;\n return;\n }\n function ka(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0;\n g = S;\n S = S + 32 | 0;\n e = g;\n f = g + 16 | 0;\n ja(a, c, f);\n b[d >> 2] = 0;\n b[d + 4 >> 2] = 0;\n b[d + 8 >> 2] = 0;\n a = Nc(f) | 0;\n if (!a) {\n jc(d);\n Mc(f);\n S = g;\n return;\n }\n do {\n c = gc(d) | 0;\n do {\n hc(c, a);\n h = a + 16 | 0;\n b[e >> 2] = b[h >> 2];\n b[e + 4 >> 2] = b[h + 4 >> 2];\n b[e + 8 >> 2] = b[h + 8 >> 2];\n b[e + 12 >> 2] = b[h + 12 >> 2];\n Oc(f, a);\n a = Rc(f, e) | 0;\n }while ((a | 0) != 0);\n a = Nc(f) | 0;\n }while ((a | 0) != 0);\n jc(d);\n Mc(f);\n S = g;\n return;\n }\n function la(a) {\n a = a | 0;\n return b[7728 + (a * 28 | 0) + 16 >> 2] | 0;\n }\n function ma(a) {\n a = a | 0;\n return (a | 0) == 4 | (a | 0) == 117 | 0;\n }\n function na(a) {\n a = a | 0;\n return b[11152 + ((b[a >> 2] | 0) * 216 | 0) + ((b[a + 4 >> 2] | 0) * 72 | 0) + ((b[a + 8 >> 2] | 0) * 24 | 0) + (b[a + 12 >> 2] << 3) >> 2] | 0;\n }\n function oa(a) {\n a = a | 0;\n return b[11152 + ((b[a >> 2] | 0) * 216 | 0) + ((b[a + 4 >> 2] | 0) * 72 | 0) + ((b[a + 8 >> 2] | 0) * 24 | 0) + (b[a + 12 >> 2] << 3) + 4 >> 2] | 0;\n }\n function pa(a, c) {\n a = a | 0;\n c = c | 0;\n a = 7728 + (a * 28 | 0) | 0;\n b[c >> 2] = b[a >> 2];\n b[c + 4 >> 2] = b[a + 4 >> 2];\n b[c + 8 >> 2] = b[a + 8 >> 2];\n b[c + 12 >> 2] = b[a + 12 >> 2];\n return;\n }\n function qa(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0;\n if (c >>> 0 > 20) {\n c = -1;\n return c | 0;\n }\n do if ((b[11152 + (c * 216 | 0) >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 8 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 16 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 24 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 32 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 40 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 48 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 56 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 64 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 72 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 80 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 88 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 96 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 104 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 112 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 120 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 128 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 136 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 1;\n e = 2;\n } else {\n if ((b[11152 + (c * 216 | 0) + 144 >> 2] | 0) == (a | 0)) {\n a = 0;\n d = 2;\n e = 0;\n break;\n }\n if ((b[11152 + (c * 216 | 0) + 152 >> 2] | 0) == (a | 0)) {\n a = 0;\n d = 2;\n e = 1;\n break;\n }\n if ((b[11152 + (c * 216 | 0) + 160 >> 2] | 0) == (a | 0)) {\n a = 0;\n d = 2;\n e = 2;\n break;\n }\n if ((b[11152 + (c * 216 | 0) + 168 >> 2] | 0) == (a | 0)) {\n a = 1;\n d = 2;\n e = 0;\n break;\n }\n if ((b[11152 + (c * 216 | 0) + 176 >> 2] | 0) == (a | 0)) {\n a = 1;\n d = 2;\n e = 1;\n break;\n }\n if ((b[11152 + (c * 216 | 0) + 184 >> 2] | 0) == (a | 0)) {\n a = 1;\n d = 2;\n e = 2;\n break;\n }\n if ((b[11152 + (c * 216 | 0) + 192 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 2;\n e = 0;\n break;\n }\n if ((b[11152 + (c * 216 | 0) + 200 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 2;\n e = 1;\n break;\n }\n if ((b[11152 + (c * 216 | 0) + 208 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 2;\n e = 2;\n break;\n } else a = -1;\n return a | 0;\n }\n } else {\n a = 2;\n d = 1;\n e = 1;\n }\n } else {\n a = 2;\n d = 1;\n e = 0;\n }\n } else {\n a = 1;\n d = 1;\n e = 2;\n }\n } else {\n a = 1;\n d = 1;\n e = 1;\n }\n } else {\n a = 1;\n d = 1;\n e = 0;\n }\n } else {\n a = 0;\n d = 1;\n e = 2;\n }\n } else {\n a = 0;\n d = 1;\n e = 1;\n }\n } else {\n a = 0;\n d = 1;\n e = 0;\n }\n } else {\n a = 2;\n d = 0;\n e = 2;\n }\n } else {\n a = 2;\n d = 0;\n e = 1;\n }\n } else {\n a = 2;\n d = 0;\n e = 0;\n }\n } else {\n a = 1;\n d = 0;\n e = 2;\n }\n } else {\n a = 1;\n d = 0;\n e = 1;\n }\n } else {\n a = 1;\n d = 0;\n e = 0;\n }\n } else {\n a = 0;\n d = 0;\n e = 2;\n }\n } else {\n a = 0;\n d = 0;\n e = 1;\n }\n } else {\n a = 0;\n d = 0;\n e = 0;\n }\n while (0);\n c = b[11152 + (c * 216 | 0) + (d * 72 | 0) + (a * 24 | 0) + (e << 3) + 4 >> 2] | 0;\n return c | 0;\n }\n function ra(a, c) {\n a = a | 0;\n c = c | 0;\n if ((b[7728 + (a * 28 | 0) + 20 >> 2] | 0) == (c | 0)) {\n c = 1;\n return c | 0;\n }\n c = (b[7728 + (a * 28 | 0) + 24 >> 2] | 0) == (c | 0);\n return c | 0;\n }\n function sa(a, c) {\n a = a | 0;\n c = c | 0;\n return b[880 + (a * 28 | 0) + (c << 2) >> 2] | 0;\n }\n function ta(a, c) {\n a = a | 0;\n c = c | 0;\n if ((b[880 + (a * 28 | 0) >> 2] | 0) == (c | 0)) {\n c = 0;\n return c | 0;\n }\n if ((b[880 + (a * 28 | 0) + 4 >> 2] | 0) == (c | 0)) {\n c = 1;\n return c | 0;\n }\n if ((b[880 + (a * 28 | 0) + 8 >> 2] | 0) == (c | 0)) {\n c = 2;\n return c | 0;\n }\n if ((b[880 + (a * 28 | 0) + 12 >> 2] | 0) == (c | 0)) {\n c = 3;\n return c | 0;\n }\n if ((b[880 + (a * 28 | 0) + 16 >> 2] | 0) == (c | 0)) {\n c = 4;\n return c | 0;\n }\n if ((b[880 + (a * 28 | 0) + 20 >> 2] | 0) == (c | 0)) {\n c = 5;\n return c | 0;\n } else return ((b[880 + (a * 28 | 0) + 24 >> 2] | 0) == (c | 0) ? 6 : 7) | 0;\n return 0;\n }\n function ua() {\n return 122;\n }\n function va(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0;\n c = 0;\n do {\n cd(c | 0, 0, 45);\n e = G() | 134225919;\n d = a + (c << 3) | 0;\n b[d >> 2] = -1;\n b[d + 4 >> 2] = e;\n c = c + 1 | 0;\n }while ((c | 0) != 122);\n return;\n }\n function wa(a) {\n a = a | 0;\n return +e[a + 16 >> 3] < +e[a + 24 >> 3] | 0;\n }\n function xa(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0, d = 0.0, f = 0.0;\n c = +e[b >> 3];\n if (!(c >= +e[a + 8 >> 3])) {\n b = 0;\n return b | 0;\n }\n if (!(c <= +e[a >> 3])) {\n b = 0;\n return b | 0;\n }\n d = +e[a + 16 >> 3];\n c = +e[a + 24 >> 3];\n f = +e[b + 8 >> 3];\n b = f >= c;\n a = f <= d & 1;\n if (d < c) {\n if (b) a = 1;\n } else if (!b) a = 0;\n b = (a | 0) != 0;\n return b | 0;\n }\n function ya(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0.0, l = 0.0;\n i = S;\n S = S + 288 | 0;\n d = i + 264 | 0;\n f = i + 96 | 0;\n g = i;\n h = g;\n j = h + 96 | 0;\n do {\n b[h >> 2] = 0;\n h = h + 4 | 0;\n }while ((h | 0) < (j | 0));\n Zb(c, g);\n h = g;\n j = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n Ub(j, h, d);\n Vb(j, h, f);\n k = +jb(d, f + 8 | 0);\n e[d >> 3] = +e[a >> 3];\n h = d + 8 | 0;\n e[h >> 3] = +e[a + 16 >> 3];\n e[f >> 3] = +e[a + 8 >> 3];\n j = f + 8 | 0;\n e[j >> 3] = +e[a + 24 >> 3];\n l = +jb(d, f);\n j = ~~+A(+(l * l / +dd(+ +q(+((+e[h >> 3] - +e[j >> 3]) / (+e[d >> 3] - +e[f >> 3]))), 3.0) / (k * (k * 2.59807621135) * .8)));\n S = i;\n return ((j | 0) == 0 ? 1 : j) | 0;\n }\n function za(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0.0;\n i = S;\n S = S + 288 | 0;\n e = i + 264 | 0;\n f = i + 96 | 0;\n g = i;\n h = g;\n j = h + 96 | 0;\n do {\n b[h >> 2] = 0;\n h = h + 4 | 0;\n }while ((h | 0) < (j | 0));\n Zb(d, g);\n j = g;\n h = b[j >> 2] | 0;\n j = b[j + 4 >> 2] | 0;\n Ub(h, j, e);\n Vb(h, j, f);\n k = +jb(e, f + 8 | 0);\n j = ~~+A(+(+jb(a, c) / (k * 2.0)));\n S = i;\n return ((j | 0) == 0 ? 1 : j) | 0;\n }\n function Aa(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n b[a >> 2] = c;\n b[a + 4 >> 2] = d;\n b[a + 8 >> 2] = e;\n return;\n }\n function Ba(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, f = 0, g = 0, h = 0, i = 0.0, j = 0.0, k = 0.0, l = 0.0, m = 0, n = 0, o = 0.0;\n n = c + 8 | 0;\n b[n >> 2] = 0;\n k = +e[a >> 3];\n i = +q(+k);\n l = +e[a + 8 >> 3];\n j = +q(+l) / .8660254037844386;\n i = i + j * .5;\n d = ~~i;\n a = ~~j;\n i = i - +(d | 0);\n j = j - +(a | 0);\n do if (i < .5) {\n if (i < .3333333333333333) {\n b[c >> 2] = d;\n if (j < (i + 1.0) * .5) {\n b[c + 4 >> 2] = a;\n break;\n } else {\n a = a + 1 | 0;\n b[c + 4 >> 2] = a;\n break;\n }\n } else {\n o = 1.0 - i;\n a = (!(j < o) & 1) + a | 0;\n b[c + 4 >> 2] = a;\n if (o <= j & j < i * 2.0) {\n d = d + 1 | 0;\n b[c >> 2] = d;\n break;\n } else {\n b[c >> 2] = d;\n break;\n }\n }\n } else {\n if (!(i < .6666666666666666)) {\n d = d + 1 | 0;\n b[c >> 2] = d;\n if (j < i * .5) {\n b[c + 4 >> 2] = a;\n break;\n } else {\n a = a + 1 | 0;\n b[c + 4 >> 2] = a;\n break;\n }\n }\n if (j < 1.0 - i) {\n b[c + 4 >> 2] = a;\n if (i * 2.0 + -1 < j) {\n b[c >> 2] = d;\n break;\n }\n } else {\n a = a + 1 | 0;\n b[c + 4 >> 2] = a;\n }\n d = d + 1 | 0;\n b[c >> 2] = d;\n }\n while (0);\n do if (k < 0.0) {\n if (!(a & 1)) {\n m = (a | 0) / 2 | 0;\n m = Zc(d | 0, ((d | 0) < 0) << 31 >> 31 | 0, m | 0, ((m | 0) < 0) << 31 >> 31 | 0) | 0;\n d = ~~(+(d | 0) - (+(m >>> 0) + 4294967296.0 * +(G() | 0)) * 2.0);\n b[c >> 2] = d;\n break;\n } else {\n m = (a + 1 | 0) / 2 | 0;\n m = Zc(d | 0, ((d | 0) < 0) << 31 >> 31 | 0, m | 0, ((m | 0) < 0) << 31 >> 31 | 0) | 0;\n d = ~~(+(d | 0) - ((+(m >>> 0) + 4294967296.0 * +(G() | 0)) * 2.0 + 1.0));\n b[c >> 2] = d;\n break;\n }\n }\n while (0);\n m = c + 4 | 0;\n if (l < 0.0) {\n d = d - ((a << 1 | 1) / 2 | 0) | 0;\n b[c >> 2] = d;\n a = 0 - a | 0;\n b[m >> 2] = a;\n }\n f = a - d | 0;\n if ((d | 0) < 0) {\n g = 0 - d | 0;\n b[m >> 2] = f;\n b[n >> 2] = g;\n b[c >> 2] = 0;\n a = f;\n d = 0;\n } else g = 0;\n if ((a | 0) < 0) {\n d = d - a | 0;\n b[c >> 2] = d;\n g = g - a | 0;\n b[n >> 2] = g;\n b[m >> 2] = 0;\n a = 0;\n }\n h = d - g | 0;\n f = a - g | 0;\n if ((g | 0) < 0) {\n b[c >> 2] = h;\n b[m >> 2] = f;\n b[n >> 2] = 0;\n a = f;\n d = h;\n g = 0;\n }\n f = (a | 0) < (d | 0) ? a : d;\n f = (g | 0) < (f | 0) ? g : f;\n if ((f | 0) <= 0) return;\n b[c >> 2] = d - f;\n b[m >> 2] = a - f;\n b[n >> 2] = g - f;\n return;\n }\n function Ca(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n d = b[h >> 2] | 0;\n if ((c | 0) < 0) {\n d = d - c | 0;\n b[h >> 2] = d;\n g = a + 8 | 0;\n b[g >> 2] = (b[g >> 2] | 0) - c;\n b[a >> 2] = 0;\n c = 0;\n }\n if ((d | 0) < 0) {\n c = c - d | 0;\n b[a >> 2] = c;\n g = a + 8 | 0;\n f = (b[g >> 2] | 0) - d | 0;\n b[g >> 2] = f;\n b[h >> 2] = 0;\n d = 0;\n } else {\n f = a + 8 | 0;\n g = f;\n f = b[f >> 2] | 0;\n }\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[a >> 2] = c;\n d = d - f | 0;\n b[h >> 2] = d;\n b[g >> 2] = 0;\n f = 0;\n }\n e = (d | 0) < (c | 0) ? d : c;\n e = (f | 0) < (e | 0) ? f : e;\n if ((e | 0) <= 0) return;\n b[a >> 2] = c - e;\n b[h >> 2] = d - e;\n b[g >> 2] = f - e;\n return;\n }\n function Da(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0, f = 0;\n f = b[a + 8 >> 2] | 0;\n d = +((b[a + 4 >> 2] | 0) - f | 0);\n e[c >> 3] = +((b[a >> 2] | 0) - f | 0) - d * .5;\n e[c + 8 >> 3] = d * .8660254037844386;\n return;\n }\n function Ea(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n b[d >> 2] = (b[c >> 2] | 0) + (b[a >> 2] | 0);\n b[d + 4 >> 2] = (b[c + 4 >> 2] | 0) + (b[a + 4 >> 2] | 0);\n b[d + 8 >> 2] = (b[c + 8 >> 2] | 0) + (b[a + 8 >> 2] | 0);\n return;\n }\n function Fa(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n b[d >> 2] = (b[a >> 2] | 0) - (b[c >> 2] | 0);\n b[d + 4 >> 2] = (b[a + 4 >> 2] | 0) - (b[c + 4 >> 2] | 0);\n b[d + 8 >> 2] = (b[a + 8 >> 2] | 0) - (b[c + 8 >> 2] | 0);\n return;\n }\n function Ga(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0;\n d = B(b[a >> 2] | 0, c) | 0;\n b[a >> 2] = d;\n d = a + 4 | 0;\n e = B(b[d >> 2] | 0, c) | 0;\n b[d >> 2] = e;\n a = a + 8 | 0;\n c = B(b[a >> 2] | 0, c) | 0;\n b[a >> 2] = c;\n return;\n }\n function Ha(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n h = b[a >> 2] | 0;\n i = (h | 0) < 0;\n e = (b[a + 4 >> 2] | 0) - (i ? h : 0) | 0;\n g = (e | 0) < 0;\n f = (g ? 0 - e | 0 : 0) + ((b[a + 8 >> 2] | 0) - (i ? h : 0)) | 0;\n d = (f | 0) < 0;\n a = d ? 0 : f;\n c = (g ? 0 : e) - (d ? f : 0) | 0;\n f = (i ? 0 : h) - (g ? e : 0) - (d ? f : 0) | 0;\n d = (c | 0) < (f | 0) ? c : f;\n d = (a | 0) < (d | 0) ? a : d;\n e = (d | 0) > 0;\n a = a - (e ? d : 0) | 0;\n c = c - (e ? d : 0) | 0;\n a: do switch(f - (e ? d : 0) | 0){\n case 0:\n switch(c | 0){\n case 0:\n i = (a | 0) == 0 ? 0 : (a | 0) == 1 ? 1 : 7;\n return i | 0;\n case 1:\n i = (a | 0) == 0 ? 2 : (a | 0) == 1 ? 3 : 7;\n return i | 0;\n default:\n break a;\n }\n case 1:\n switch(c | 0){\n case 0:\n i = (a | 0) == 0 ? 4 : (a | 0) == 1 ? 5 : 7;\n return i | 0;\n case 1:\n if (!a) a = 6;\n else break a;\n return a | 0;\n default:\n break a;\n }\n default:\n }\n while (0);\n i = 7;\n return i | 0;\n }\n function Ia(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n h = a + 8 | 0;\n d = b[h >> 2] | 0;\n c = (b[a >> 2] | 0) - d | 0;\n i = a + 4 | 0;\n d = (b[i >> 2] | 0) - d | 0;\n e = Uc(+((c * 3 | 0) - d | 0) / 7.0) | 0;\n b[a >> 2] = e;\n c = Uc(+((d << 1) + c | 0) / 7.0) | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = c - e | 0;\n if ((e | 0) < 0) {\n g = 0 - e | 0;\n b[i >> 2] = d;\n b[h >> 2] = g;\n b[a >> 2] = 0;\n c = d;\n e = 0;\n d = g;\n } else d = 0;\n if ((c | 0) < 0) {\n e = e - c | 0;\n b[a >> 2] = e;\n d = d - c | 0;\n b[h >> 2] = d;\n b[i >> 2] = 0;\n c = 0;\n }\n g = e - d | 0;\n f = c - d | 0;\n if ((d | 0) < 0) {\n b[a >> 2] = g;\n b[i >> 2] = f;\n b[h >> 2] = 0;\n c = f;\n f = g;\n d = 0;\n } else f = e;\n e = (c | 0) < (f | 0) ? c : f;\n e = (d | 0) < (e | 0) ? d : e;\n if ((e | 0) <= 0) return;\n b[a >> 2] = f - e;\n b[i >> 2] = c - e;\n b[h >> 2] = d - e;\n return;\n }\n function Ja(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n h = a + 8 | 0;\n d = b[h >> 2] | 0;\n c = (b[a >> 2] | 0) - d | 0;\n i = a + 4 | 0;\n d = (b[i >> 2] | 0) - d | 0;\n e = Uc(+((c << 1) + d | 0) / 7.0) | 0;\n b[a >> 2] = e;\n c = Uc(+((d * 3 | 0) - c | 0) / 7.0) | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = c - e | 0;\n if ((e | 0) < 0) {\n g = 0 - e | 0;\n b[i >> 2] = d;\n b[h >> 2] = g;\n b[a >> 2] = 0;\n c = d;\n e = 0;\n d = g;\n } else d = 0;\n if ((c | 0) < 0) {\n e = e - c | 0;\n b[a >> 2] = e;\n d = d - c | 0;\n b[h >> 2] = d;\n b[i >> 2] = 0;\n c = 0;\n }\n g = e - d | 0;\n f = c - d | 0;\n if ((d | 0) < 0) {\n b[a >> 2] = g;\n b[i >> 2] = f;\n b[h >> 2] = 0;\n c = f;\n f = g;\n d = 0;\n } else f = e;\n e = (c | 0) < (f | 0) ? c : f;\n e = (d | 0) < (e | 0) ? d : e;\n if ((e | 0) <= 0) return;\n b[a >> 2] = f - e;\n b[i >> 2] = c - e;\n b[h >> 2] = d - e;\n return;\n }\n function Ka(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n d = b[h >> 2] | 0;\n i = a + 8 | 0;\n e = b[i >> 2] | 0;\n f = d + (c * 3 | 0) | 0;\n b[a >> 2] = f;\n d = e + (d * 3 | 0) | 0;\n b[h >> 2] = d;\n c = (e * 3 | 0) + c | 0;\n b[i >> 2] = c;\n e = d - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = e;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n d = e;\n e = 0;\n } else e = f;\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = e - c | 0;\n f = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else f = d;\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) return;\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n function La(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n f = b[a >> 2] | 0;\n h = a + 4 | 0;\n c = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n e = (c * 3 | 0) + f | 0;\n f = d + (f * 3 | 0) | 0;\n b[a >> 2] = f;\n b[h >> 2] = e;\n c = (d * 3 | 0) + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n f = 0;\n } else d = e;\n if ((d | 0) < 0) {\n f = f - d | 0;\n b[a >> 2] = f;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = f - c | 0;\n e = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = e;\n b[i >> 2] = 0;\n f = g;\n c = 0;\n } else e = d;\n d = (e | 0) < (f | 0) ? e : f;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) return;\n b[a >> 2] = f - d;\n b[h >> 2] = e - d;\n b[i >> 2] = c - d;\n return;\n }\n function Ma(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n if ((c + -1 | 0) >>> 0 >= 6) return;\n f = (b[15472 + (c * 12 | 0) >> 2] | 0) + (b[a >> 2] | 0) | 0;\n b[a >> 2] = f;\n i = a + 4 | 0;\n e = (b[15472 + (c * 12 | 0) + 4 >> 2] | 0) + (b[i >> 2] | 0) | 0;\n b[i >> 2] = e;\n h = a + 8 | 0;\n c = (b[15472 + (c * 12 | 0) + 8 >> 2] | 0) + (b[h >> 2] | 0) | 0;\n b[h >> 2] = c;\n d = e - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[i >> 2] = d;\n b[h >> 2] = c;\n b[a >> 2] = 0;\n e = 0;\n } else {\n d = e;\n e = f;\n }\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[h >> 2] = c;\n b[i >> 2] = 0;\n d = 0;\n }\n g = e - c | 0;\n f = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[i >> 2] = f;\n b[h >> 2] = 0;\n e = g;\n c = 0;\n } else f = d;\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) return;\n b[a >> 2] = e - d;\n b[i >> 2] = f - d;\n b[h >> 2] = c - d;\n return;\n }\n function Na(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n f = b[a >> 2] | 0;\n h = a + 4 | 0;\n c = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n e = c + f | 0;\n f = d + f | 0;\n b[a >> 2] = f;\n b[h >> 2] = e;\n c = d + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n e = 0;\n } else {\n d = e;\n e = f;\n }\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = e - c | 0;\n f = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else f = d;\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) return;\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n function Oa(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n e = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n f = e + c | 0;\n b[a >> 2] = f;\n e = d + e | 0;\n b[h >> 2] = e;\n c = d + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n e = 0;\n } else {\n d = e;\n e = f;\n }\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = e - c | 0;\n f = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else f = d;\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) return;\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n function Pa(a) {\n a = a | 0;\n switch(a | 0){\n case 1:\n a = 5;\n break;\n case 5:\n a = 4;\n break;\n case 4:\n a = 6;\n break;\n case 6:\n a = 2;\n break;\n case 2:\n a = 3;\n break;\n case 3:\n a = 1;\n break;\n default:\n }\n return a | 0;\n }\n function Qa(a) {\n a = a | 0;\n switch(a | 0){\n case 1:\n a = 3;\n break;\n case 3:\n a = 2;\n break;\n case 2:\n a = 6;\n break;\n case 6:\n a = 4;\n break;\n case 4:\n a = 5;\n break;\n case 5:\n a = 1;\n break;\n default:\n }\n return a | 0;\n }\n function Ra(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n d = b[h >> 2] | 0;\n i = a + 8 | 0;\n e = b[i >> 2] | 0;\n f = d + (c << 1) | 0;\n b[a >> 2] = f;\n d = e + (d << 1) | 0;\n b[h >> 2] = d;\n c = (e << 1) + c | 0;\n b[i >> 2] = c;\n e = d - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = e;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n d = e;\n e = 0;\n } else e = f;\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = e - c | 0;\n f = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else f = d;\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) return;\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n function Sa(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n f = b[a >> 2] | 0;\n h = a + 4 | 0;\n c = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n e = (c << 1) + f | 0;\n f = d + (f << 1) | 0;\n b[a >> 2] = f;\n b[h >> 2] = e;\n c = (d << 1) + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n f = 0;\n } else d = e;\n if ((d | 0) < 0) {\n f = f - d | 0;\n b[a >> 2] = f;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n g = f - c | 0;\n e = d - c | 0;\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = e;\n b[i >> 2] = 0;\n f = g;\n c = 0;\n } else e = d;\n d = (e | 0) < (f | 0) ? e : f;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) return;\n b[a >> 2] = f - d;\n b[h >> 2] = e - d;\n b[i >> 2] = c - d;\n return;\n }\n function Ta(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n h = (b[a >> 2] | 0) - (b[c >> 2] | 0) | 0;\n i = (h | 0) < 0;\n e = (b[a + 4 >> 2] | 0) - (b[c + 4 >> 2] | 0) - (i ? h : 0) | 0;\n g = (e | 0) < 0;\n f = (i ? 0 - h | 0 : 0) + (b[a + 8 >> 2] | 0) - (b[c + 8 >> 2] | 0) + (g ? 0 - e | 0 : 0) | 0;\n a = (f | 0) < 0;\n c = a ? 0 : f;\n d = (g ? 0 : e) - (a ? f : 0) | 0;\n f = (i ? 0 : h) - (g ? e : 0) - (a ? f : 0) | 0;\n a = (d | 0) < (f | 0) ? d : f;\n a = (c | 0) < (a | 0) ? c : a;\n e = (a | 0) > 0;\n c = c - (e ? a : 0) | 0;\n d = d - (e ? a : 0) | 0;\n a = f - (e ? a : 0) | 0;\n a = (a | 0) > -1 ? a : 0 - a | 0;\n d = (d | 0) > -1 ? d : 0 - d | 0;\n c = (c | 0) > -1 ? c : 0 - c | 0;\n c = (d | 0) > (c | 0) ? d : c;\n return ((a | 0) > (c | 0) ? a : c) | 0;\n }\n function Ua(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0;\n d = b[a + 8 >> 2] | 0;\n b[c >> 2] = (b[a >> 2] | 0) - d;\n b[c + 4 >> 2] = (b[a + 4 >> 2] | 0) - d;\n return;\n }\n function Va(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n e = b[a >> 2] | 0;\n b[c >> 2] = e;\n a = b[a + 4 >> 2] | 0;\n h = c + 4 | 0;\n b[h >> 2] = a;\n i = c + 8 | 0;\n b[i >> 2] = 0;\n d = a - e | 0;\n if ((e | 0) < 0) {\n a = 0 - e | 0;\n b[h >> 2] = d;\n b[i >> 2] = a;\n b[c >> 2] = 0;\n e = 0;\n } else {\n d = a;\n a = 0;\n }\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[c >> 2] = e;\n a = a - d | 0;\n b[i >> 2] = a;\n b[h >> 2] = 0;\n d = 0;\n }\n g = e - a | 0;\n f = d - a | 0;\n if ((a | 0) < 0) {\n b[c >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n d = f;\n f = g;\n a = 0;\n } else f = e;\n e = (d | 0) < (f | 0) ? d : f;\n e = (a | 0) < (e | 0) ? a : e;\n if ((e | 0) <= 0) return;\n b[c >> 2] = f - e;\n b[h >> 2] = d - e;\n b[i >> 2] = a - e;\n return;\n }\n function Wa(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0;\n c = a + 8 | 0;\n f = b[c >> 2] | 0;\n d = f - (b[a >> 2] | 0) | 0;\n b[a >> 2] = d;\n e = a + 4 | 0;\n a = (b[e >> 2] | 0) - f | 0;\n b[e >> 2] = a;\n b[c >> 2] = 0 - (a + d);\n return;\n }\n function Xa(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n d = b[a >> 2] | 0;\n c = 0 - d | 0;\n b[a >> 2] = c;\n h = a + 8 | 0;\n b[h >> 2] = 0;\n i = a + 4 | 0;\n e = b[i >> 2] | 0;\n f = e + d | 0;\n if ((d | 0) > 0) {\n b[i >> 2] = f;\n b[h >> 2] = d;\n b[a >> 2] = 0;\n c = 0;\n e = f;\n } else d = 0;\n if ((e | 0) < 0) {\n g = c - e | 0;\n b[a >> 2] = g;\n d = d - e | 0;\n b[h >> 2] = d;\n b[i >> 2] = 0;\n f = g - d | 0;\n c = 0 - d | 0;\n if ((d | 0) < 0) {\n b[a >> 2] = f;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n e = c;\n d = 0;\n } else {\n e = 0;\n f = g;\n }\n } else f = c;\n c = (e | 0) < (f | 0) ? e : f;\n c = (d | 0) < (c | 0) ? d : c;\n if ((c | 0) <= 0) return;\n b[a >> 2] = f - c;\n b[i >> 2] = e - c;\n b[h >> 2] = d - c;\n return;\n }\n function Ya(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0, e = 0;\n d = S;\n S = S + 16 | 0;\n e = d;\n Za(a, b, c, e);\n Ba(e, c + 4 | 0);\n S = d;\n return;\n }\n function Za(a, c, d, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n var g = 0.0, h = 0, i = 0.0, j = 0.0, k = 0;\n k = S;\n S = S + 32 | 0;\n h = k;\n Ic(a, h);\n b[d >> 2] = 0;\n g = +Hc(15888, h);\n i = +Hc(15912, h);\n if (i < g) {\n b[d >> 2] = 1;\n g = i;\n }\n i = +Hc(15936, h);\n if (i < g) {\n b[d >> 2] = 2;\n g = i;\n }\n i = +Hc(15960, h);\n if (i < g) {\n b[d >> 2] = 3;\n g = i;\n }\n i = +Hc(15984, h);\n if (i < g) {\n b[d >> 2] = 4;\n g = i;\n }\n i = +Hc(16008, h);\n if (i < g) {\n b[d >> 2] = 5;\n g = i;\n }\n i = +Hc(16032, h);\n if (i < g) {\n b[d >> 2] = 6;\n g = i;\n }\n i = +Hc(16056, h);\n if (i < g) {\n b[d >> 2] = 7;\n g = i;\n }\n i = +Hc(16080, h);\n if (i < g) {\n b[d >> 2] = 8;\n g = i;\n }\n i = +Hc(16104, h);\n if (i < g) {\n b[d >> 2] = 9;\n g = i;\n }\n i = +Hc(16128, h);\n if (i < g) {\n b[d >> 2] = 10;\n g = i;\n }\n i = +Hc(16152, h);\n if (i < g) {\n b[d >> 2] = 11;\n g = i;\n }\n i = +Hc(16176, h);\n if (i < g) {\n b[d >> 2] = 12;\n g = i;\n }\n i = +Hc(16200, h);\n if (i < g) {\n b[d >> 2] = 13;\n g = i;\n }\n i = +Hc(16224, h);\n if (i < g) {\n b[d >> 2] = 14;\n g = i;\n }\n i = +Hc(16248, h);\n if (i < g) {\n b[d >> 2] = 15;\n g = i;\n }\n i = +Hc(16272, h);\n if (i < g) {\n b[d >> 2] = 16;\n g = i;\n }\n i = +Hc(16296, h);\n if (i < g) {\n b[d >> 2] = 17;\n g = i;\n }\n i = +Hc(16320, h);\n if (i < g) {\n b[d >> 2] = 18;\n g = i;\n }\n i = +Hc(16344, h);\n if (i < g) {\n b[d >> 2] = 19;\n g = i;\n }\n i = +w(+(1.0 - g * .5));\n if (i < 1.0e-16) {\n b[f >> 2] = 0;\n b[f + 4 >> 2] = 0;\n b[f + 8 >> 2] = 0;\n b[f + 12 >> 2] = 0;\n S = k;\n return;\n }\n d = b[d >> 2] | 0;\n g = +e[16368 + (d * 24 | 0) >> 3];\n g = +gb(g - +gb(+lb(15568 + (d << 4) | 0, a)));\n if (!(Qb(c) | 0)) j = g;\n else j = +gb(g + -0.3334731722518321);\n g = +v(+i) / .381966011250105;\n if ((c | 0) > 0) {\n h = 0;\n do {\n g = g * 2.6457513110645907;\n h = h + 1 | 0;\n }while ((h | 0) != (c | 0));\n }\n i = +t(+j) * g;\n e[f >> 3] = i;\n j = +u(+j) * g;\n e[f + 8 >> 3] = j;\n S = k;\n return;\n }\n function _a(a, c, d, f, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n var h = 0.0, i = 0.0;\n h = +Ec(a);\n if (h < 1.0e-16) {\n c = 15568 + (c << 4) | 0;\n b[g >> 2] = b[c >> 2];\n b[g + 4 >> 2] = b[c + 4 >> 2];\n b[g + 8 >> 2] = b[c + 8 >> 2];\n b[g + 12 >> 2] = b[c + 12 >> 2];\n return;\n }\n i = +z(+ +e[a + 8 >> 3], + +e[a >> 3]);\n if ((d | 0) > 0) {\n a = 0;\n do {\n h = h / 2.6457513110645907;\n a = a + 1 | 0;\n }while ((a | 0) != (d | 0));\n }\n if (!f) {\n h = +y(+(h * .381966011250105));\n if (Qb(d) | 0) i = +gb(i + .3334731722518321);\n } else {\n h = h / 3.0;\n d = (Qb(d) | 0) == 0;\n h = +y(+((d ? h : h / 2.6457513110645907) * .381966011250105));\n }\n mb(15568 + (c << 4) | 0, +gb(+e[16368 + (c * 24 | 0) >> 3] - i), h, g);\n return;\n }\n function $a(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0;\n e = S;\n S = S + 16 | 0;\n f = e;\n Da(a + 4 | 0, f);\n _a(f, b[a >> 2] | 0, c, 0, d);\n S = e;\n return;\n }\n function ab(a, c, d, f, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n var h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, I = 0.0, J = 0.0;\n G = S;\n S = S + 272 | 0;\n h = G + 256 | 0;\n u = G + 240 | 0;\n D = G;\n E = G + 224 | 0;\n F = G + 208 | 0;\n v = G + 176 | 0;\n w = G + 160 | 0;\n x = G + 192 | 0;\n y = G + 144 | 0;\n z = G + 128 | 0;\n A = G + 112 | 0;\n B = G + 96 | 0;\n C = G + 80 | 0;\n b[h >> 2] = c;\n b[u >> 2] = b[a >> 2];\n b[u + 4 >> 2] = b[a + 4 >> 2];\n b[u + 8 >> 2] = b[a + 8 >> 2];\n b[u + 12 >> 2] = b[a + 12 >> 2];\n bb(u, h, D);\n b[g >> 2] = 0;\n u = f + d + ((f | 0) == 5 & 1) | 0;\n if ((u | 0) <= (d | 0)) {\n S = G;\n return;\n }\n k = b[h >> 2] | 0;\n l = E + 4 | 0;\n m = v + 4 | 0;\n n = d + 5 | 0;\n o = 16848 + (k << 2) | 0;\n p = 16928 + (k << 2) | 0;\n q = z + 8 | 0;\n r = A + 8 | 0;\n s = B + 8 | 0;\n t = F + 4 | 0;\n j = d;\n a: while(true){\n i = D + (((j | 0) % 5 | 0) << 4) | 0;\n b[F >> 2] = b[i >> 2];\n b[F + 4 >> 2] = b[i + 4 >> 2];\n b[F + 8 >> 2] = b[i + 8 >> 2];\n b[F + 12 >> 2] = b[i + 12 >> 2];\n do ;\n while ((cb(F, k, 0, 1) | 0) == 2);\n if ((j | 0) > (d | 0) & (Qb(c) | 0) != 0) {\n b[v >> 2] = b[F >> 2];\n b[v + 4 >> 2] = b[F + 4 >> 2];\n b[v + 8 >> 2] = b[F + 8 >> 2];\n b[v + 12 >> 2] = b[F + 12 >> 2];\n Da(l, w);\n f = b[v >> 2] | 0;\n h = b[17008 + (f * 80 | 0) + (b[E >> 2] << 2) >> 2] | 0;\n b[v >> 2] = b[18608 + (f * 80 | 0) + (h * 20 | 0) >> 2];\n i = b[18608 + (f * 80 | 0) + (h * 20 | 0) + 16 >> 2] | 0;\n if ((i | 0) > 0) {\n a = 0;\n do {\n Na(m);\n a = a + 1 | 0;\n }while ((a | 0) < (i | 0));\n }\n i = 18608 + (f * 80 | 0) + (h * 20 | 0) + 4 | 0;\n b[x >> 2] = b[i >> 2];\n b[x + 4 >> 2] = b[i + 4 >> 2];\n b[x + 8 >> 2] = b[i + 8 >> 2];\n Ga(x, (b[o >> 2] | 0) * 3 | 0);\n Ea(m, x, m);\n Ca(m);\n Da(m, y);\n I = +(b[p >> 2] | 0);\n e[z >> 3] = I * 3.0;\n e[q >> 3] = 0.0;\n J = I * -1.5;\n e[A >> 3] = J;\n e[r >> 3] = I * 2.598076211353316;\n e[B >> 3] = J;\n e[s >> 3] = I * -2.598076211353316;\n switch(b[17008 + ((b[v >> 2] | 0) * 80 | 0) + (b[F >> 2] << 2) >> 2] | 0){\n case 1:\n a = A;\n f = z;\n break;\n case 3:\n a = B;\n f = A;\n break;\n case 2:\n a = z;\n f = B;\n break;\n default:\n a = 12;\n break a;\n }\n Fc(w, y, f, a, C);\n _a(C, b[v >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n if ((j | 0) < (n | 0)) {\n Da(t, v);\n _a(v, b[F >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n b[E >> 2] = b[F >> 2];\n b[E + 4 >> 2] = b[F + 4 >> 2];\n b[E + 8 >> 2] = b[F + 8 >> 2];\n b[E + 12 >> 2] = b[F + 12 >> 2];\n j = j + 1 | 0;\n if ((j | 0) >= (u | 0)) {\n a = 3;\n break;\n }\n }\n if ((a | 0) == 3) {\n S = G;\n return;\n } else if ((a | 0) == 12) H(22474, 22521, 581, 22531);\n }\n function bb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0;\n j = S;\n S = S + 128 | 0;\n e = j + 64 | 0;\n f = j;\n g = e;\n h = 20208;\n i = g + 60 | 0;\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n }while ((g | 0) < (i | 0));\n g = f;\n h = 20272;\n i = g + 60 | 0;\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n }while ((g | 0) < (i | 0));\n i = (Qb(b[c >> 2] | 0) | 0) == 0;\n e = i ? e : f;\n f = a + 4 | 0;\n Ra(f);\n Sa(f);\n if (Qb(b[c >> 2] | 0) | 0) {\n La(f);\n b[c >> 2] = (b[c >> 2] | 0) + 1;\n }\n b[d >> 2] = b[a >> 2];\n c = d + 4 | 0;\n Ea(f, e, c);\n Ca(c);\n b[d + 16 >> 2] = b[a >> 2];\n c = d + 20 | 0;\n Ea(f, e + 12 | 0, c);\n Ca(c);\n b[d + 32 >> 2] = b[a >> 2];\n c = d + 36 | 0;\n Ea(f, e + 24 | 0, c);\n Ca(c);\n b[d + 48 >> 2] = b[a >> 2];\n c = d + 52 | 0;\n Ea(f, e + 36 | 0, c);\n Ca(c);\n b[d + 64 >> 2] = b[a >> 2];\n d = d + 68 | 0;\n Ea(f, e + 48 | 0, d);\n Ca(d);\n S = j;\n return;\n }\n function cb(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0;\n p = S;\n S = S + 32 | 0;\n n = p + 12 | 0;\n i = p;\n o = a + 4 | 0;\n m = b[16928 + (c << 2) >> 2] | 0;\n l = (e | 0) != 0;\n m = l ? m * 3 | 0 : m;\n f = b[o >> 2] | 0;\n k = a + 8 | 0;\n h = b[k >> 2] | 0;\n if (l) {\n g = a + 12 | 0;\n e = b[g >> 2] | 0;\n f = h + f + e | 0;\n if ((f | 0) == (m | 0)) {\n o = 1;\n S = p;\n return o | 0;\n } else j = g;\n } else {\n j = a + 12 | 0;\n e = b[j >> 2] | 0;\n f = h + f + e | 0;\n }\n if ((f | 0) <= (m | 0)) {\n o = 0;\n S = p;\n return o | 0;\n }\n do if ((e | 0) > 0) {\n e = b[a >> 2] | 0;\n if ((h | 0) > 0) {\n g = 18608 + (e * 80 | 0) + 60 | 0;\n e = a;\n break;\n }\n e = 18608 + (e * 80 | 0) + 40 | 0;\n if (!d) {\n g = e;\n e = a;\n } else {\n Aa(n, m, 0, 0);\n Fa(o, n, i);\n Oa(i);\n Ea(i, n, o);\n g = e;\n e = a;\n }\n } else {\n g = 18608 + ((b[a >> 2] | 0) * 80 | 0) + 20 | 0;\n e = a;\n }\n while (0);\n b[e >> 2] = b[g >> 2];\n f = g + 16 | 0;\n if ((b[f >> 2] | 0) > 0) {\n e = 0;\n do {\n Na(o);\n e = e + 1 | 0;\n }while ((e | 0) < (b[f >> 2] | 0));\n }\n a = g + 4 | 0;\n b[n >> 2] = b[a >> 2];\n b[n + 4 >> 2] = b[a + 4 >> 2];\n b[n + 8 >> 2] = b[a + 8 >> 2];\n c = b[16848 + (c << 2) >> 2] | 0;\n Ga(n, l ? c * 3 | 0 : c);\n Ea(o, n, o);\n Ca(o);\n if (l) e = ((b[k >> 2] | 0) + (b[o >> 2] | 0) + (b[j >> 2] | 0) | 0) == (m | 0) ? 1 : 2;\n else e = 2;\n o = e;\n S = p;\n return o | 0;\n }\n function db(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n do c = cb(a, b, 0, 1) | 0;\n while ((c | 0) == 2);\n return c | 0;\n }\n function eb(a, c, d, f, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n var h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0.0, D = 0.0;\n B = S;\n S = S + 240 | 0;\n h = B + 224 | 0;\n x = B + 208 | 0;\n y = B;\n z = B + 192 | 0;\n A = B + 176 | 0;\n s = B + 160 | 0;\n t = B + 144 | 0;\n u = B + 128 | 0;\n v = B + 112 | 0;\n w = B + 96 | 0;\n b[h >> 2] = c;\n b[x >> 2] = b[a >> 2];\n b[x + 4 >> 2] = b[a + 4 >> 2];\n b[x + 8 >> 2] = b[a + 8 >> 2];\n b[x + 12 >> 2] = b[a + 12 >> 2];\n fb(x, h, y);\n b[g >> 2] = 0;\n r = f + d + ((f | 0) == 6 & 1) | 0;\n if ((r | 0) <= (d | 0)) {\n S = B;\n return;\n }\n k = b[h >> 2] | 0;\n l = d + 6 | 0;\n m = 16928 + (k << 2) | 0;\n n = t + 8 | 0;\n o = u + 8 | 0;\n p = v + 8 | 0;\n q = z + 4 | 0;\n i = 0;\n j = d;\n f = -1;\n a: while(true){\n h = (j | 0) % 6 | 0;\n a = y + (h << 4) | 0;\n b[z >> 2] = b[a >> 2];\n b[z + 4 >> 2] = b[a + 4 >> 2];\n b[z + 8 >> 2] = b[a + 8 >> 2];\n b[z + 12 >> 2] = b[a + 12 >> 2];\n a = i;\n i = cb(z, k, 0, 1) | 0;\n if ((j | 0) > (d | 0) & (Qb(c) | 0) != 0 ? (a | 0) != 1 ? (b[z >> 2] | 0) != (f | 0) : 0 : 0) {\n Da(y + (((h + 5 | 0) % 6 | 0) << 4) + 4 | 0, A);\n Da(y + (h << 4) + 4 | 0, s);\n C = +(b[m >> 2] | 0);\n e[t >> 3] = C * 3.0;\n e[n >> 3] = 0.0;\n D = C * -1.5;\n e[u >> 3] = D;\n e[o >> 3] = C * 2.598076211353316;\n e[v >> 3] = D;\n e[p >> 3] = C * -2.598076211353316;\n h = b[x >> 2] | 0;\n switch(b[17008 + (h * 80 | 0) + (((f | 0) == (h | 0) ? b[z >> 2] | 0 : f) << 2) >> 2] | 0){\n case 1:\n a = u;\n f = t;\n break;\n case 3:\n a = v;\n f = u;\n break;\n case 2:\n a = t;\n f = v;\n break;\n default:\n a = 8;\n break a;\n }\n Fc(A, s, f, a, w);\n if (!(Gc(A, w) | 0) ? !(Gc(s, w) | 0) : 0) {\n _a(w, b[x >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n }\n if ((j | 0) < (l | 0)) {\n Da(q, A);\n _a(A, b[z >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n j = j + 1 | 0;\n if ((j | 0) >= (r | 0)) {\n a = 3;\n break;\n } else f = b[z >> 2] | 0;\n }\n if ((a | 0) == 3) {\n S = B;\n return;\n } else if ((a | 0) == 8) H(22557, 22521, 746, 22602);\n }\n function fb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0;\n j = S;\n S = S + 160 | 0;\n e = j + 80 | 0;\n f = j;\n g = e;\n h = 20336;\n i = g + 72 | 0;\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n }while ((g | 0) < (i | 0));\n g = f;\n h = 20416;\n i = g + 72 | 0;\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n }while ((g | 0) < (i | 0));\n i = (Qb(b[c >> 2] | 0) | 0) == 0;\n e = i ? e : f;\n f = a + 4 | 0;\n Ra(f);\n Sa(f);\n if (Qb(b[c >> 2] | 0) | 0) {\n La(f);\n b[c >> 2] = (b[c >> 2] | 0) + 1;\n }\n b[d >> 2] = b[a >> 2];\n c = d + 4 | 0;\n Ea(f, e, c);\n Ca(c);\n b[d + 16 >> 2] = b[a >> 2];\n c = d + 20 | 0;\n Ea(f, e + 12 | 0, c);\n Ca(c);\n b[d + 32 >> 2] = b[a >> 2];\n c = d + 36 | 0;\n Ea(f, e + 24 | 0, c);\n Ca(c);\n b[d + 48 >> 2] = b[a >> 2];\n c = d + 52 | 0;\n Ea(f, e + 36 | 0, c);\n Ca(c);\n b[d + 64 >> 2] = b[a >> 2];\n c = d + 68 | 0;\n Ea(f, e + 48 | 0, c);\n Ca(c);\n b[d + 80 >> 2] = b[a >> 2];\n d = d + 84 | 0;\n Ea(f, e + 60 | 0, d);\n Ca(d);\n S = j;\n return;\n }\n function gb(a) {\n a = +a;\n var b = 0.0;\n b = a < 0.0 ? a + 6.283185307179586 : a;\n return +(!(a >= 6.283185307179586) ? b : b + -6.283185307179586);\n }\n function hb(a, b) {\n a = a | 0;\n b = b | 0;\n if (!(+q(+(+e[a >> 3] - +e[b >> 3])) < 1.7453292519943298e-11)) {\n b = 0;\n return b | 0;\n }\n b = +q(+(+e[a + 8 >> 3] - +e[b + 8 >> 3])) < 1.7453292519943298e-11;\n return b | 0;\n }\n function ib(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0, d = 0.0, f = 0.0, g = 0.0;\n f = +e[b >> 3];\n d = +e[a >> 3];\n g = +u(+((f - d) * .5));\n c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n c = g * g + c * (+t(+f) * +t(+d) * c);\n return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 2.0);\n }\n function jb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0, d = 0.0, f = 0.0, g = 0.0;\n f = +e[b >> 3];\n d = +e[a >> 3];\n g = +u(+((f - d) * .5));\n c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n c = g * g + c * (+t(+f) * +t(+d) * c);\n return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 12742.01436183695);\n }\n function kb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0, d = 0.0, f = 0.0, g = 0.0;\n f = +e[b >> 3];\n d = +e[a >> 3];\n g = +u(+((f - d) * .5));\n c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n c = g * g + c * (+t(+f) * +t(+d) * c);\n return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 12742014.36183695);\n }\n function lb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0, d = 0.0, f = 0.0, g = 0.0, h = 0.0;\n g = +e[b >> 3];\n d = +t(+g);\n f = +e[b + 8 >> 3] - +e[a + 8 >> 3];\n h = d * +u(+f);\n c = +e[a >> 3];\n return + +z(+h, +(+u(+g) * +t(+c) - +t(+f) * (d * +u(+c))));\n }\n function mb(a, c, d, f) {\n a = a | 0;\n c = +c;\n d = +d;\n f = f | 0;\n var g = 0, h = 0.0, i = 0.0, j = 0.0;\n if (d < 1.0e-16) {\n b[f >> 2] = b[a >> 2];\n b[f + 4 >> 2] = b[a + 4 >> 2];\n b[f + 8 >> 2] = b[a + 8 >> 2];\n b[f + 12 >> 2] = b[a + 12 >> 2];\n return;\n }\n h = c < 0.0 ? c + 6.283185307179586 : c;\n h = !(c >= 6.283185307179586) ? h : h + -6.283185307179586;\n do if (h < 1.0e-16) {\n c = +e[a >> 3] + d;\n e[f >> 3] = c;\n g = f;\n } else {\n g = +q(+(h + -3.141592653589793)) < 1.0e-16;\n c = +e[a >> 3];\n if (g) {\n c = c - d;\n e[f >> 3] = c;\n g = f;\n break;\n }\n i = +t(+d);\n d = +u(+d);\n c = i * +u(+c) + +t(+h) * (d * +t(+c));\n c = c > 1.0 ? 1.0 : c;\n c = +x(+(c < -1 ? -1 : c));\n e[f >> 3] = c;\n if (+q(+(c + -1.5707963267948966)) < 1.0e-16) {\n e[f >> 3] = 1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n if (+q(+(c + 1.5707963267948966)) < 1.0e-16) {\n e[f >> 3] = -1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n j = +t(+c);\n h = d * +u(+h) / j;\n d = +e[a >> 3];\n c = (i - +u(+c) * +u(+d)) / +t(+d) / j;\n i = h > 1.0 ? 1.0 : h;\n c = c > 1.0 ? 1.0 : c;\n c = +e[a + 8 >> 3] + +z(+(i < -1 ? -1 : i), +(c < -1 ? -1 : c));\n if (c > 3.141592653589793) do c = c + -6.283185307179586;\n while (c > 3.141592653589793);\n if (c < -3.141592653589793) do c = c + 6.283185307179586;\n while (c < -3.141592653589793);\n e[f + 8 >> 3] = c;\n return;\n }\n while (0);\n if (+q(+(c + -1.5707963267948966)) < 1.0e-16) {\n e[g >> 3] = 1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n if (+q(+(c + 1.5707963267948966)) < 1.0e-16) {\n e[g >> 3] = -1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n c = +e[a + 8 >> 3];\n if (c > 3.141592653589793) do c = c + -6.283185307179586;\n while (c > 3.141592653589793);\n if (c < -3.141592653589793) do c = c + 6.283185307179586;\n while (c < -3.141592653589793);\n e[f + 8 >> 3] = c;\n return;\n }\n function nb(a) {\n a = a | 0;\n return + +e[20496 + (a << 3) >> 3];\n }\n function ob(a) {\n a = a | 0;\n return + +e[20624 + (a << 3) >> 3];\n }\n function pb(a) {\n a = a | 0;\n return + +e[20752 + (a << 3) >> 3];\n }\n function qb(a) {\n a = a | 0;\n return + +e[20880 + (a << 3) >> 3];\n }\n function rb(a) {\n a = a | 0;\n var c = 0;\n c = 21008 + (a << 3) | 0;\n a = b[c >> 2] | 0;\n F(b[c + 4 >> 2] | 0);\n return a | 0;\n }\n function sb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0.0, f = 0.0, g = 0.0, h = 0.0, i = 0.0, j = 0.0, k = 0.0, l = 0.0, m = 0.0, n = 0.0;\n n = +e[b >> 3];\n l = +e[a >> 3];\n j = +u(+((n - l) * .5));\n g = +e[b + 8 >> 3];\n k = +e[a + 8 >> 3];\n h = +u(+((g - k) * .5));\n i = +t(+l);\n m = +t(+n);\n h = j * j + h * (m * i * h);\n h = +z(+ +r(+h), + +r(+(1.0 - h))) * 2.0;\n j = +e[c >> 3];\n n = +u(+((j - n) * .5));\n d = +e[c + 8 >> 3];\n g = +u(+((d - g) * .5));\n f = +t(+j);\n g = n * n + g * (m * f * g);\n g = +z(+ +r(+g), + +r(+(1.0 - g))) * 2.0;\n j = +u(+((l - j) * .5));\n d = +u(+((k - d) * .5));\n d = j * j + d * (i * f * d);\n d = +z(+ +r(+d), + +r(+(1.0 - d))) * 2.0;\n f = (h + g + d) * .5;\n return +(+y(+ +r(+(+v(+(f * .5)) * +v(+((f - h) * .5)) * +v(+((f - g) * .5)) * +v(+((f - d) * .5))))) * 4.0);\n }\n function tb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0, e = 0, f = 0, g = 0, h = 0;\n g = S;\n S = S + 192 | 0;\n e = g + 168 | 0;\n f = g;\n Ub(a, c, e);\n Vb(a, c, f);\n c = b[f >> 2] | 0;\n if ((c | 0) <= 0) {\n d = 0.0;\n S = g;\n return +d;\n }\n d = +sb(f + 8 | 0, f + 8 + (((c | 0) != 1 & 1) << 4) | 0, e) + 0.0;\n if ((c | 0) == 1) {\n S = g;\n return +d;\n }\n a = 1;\n do {\n h = a;\n a = a + 1 | 0;\n d = d + +sb(f + 8 + (h << 4) | 0, f + 8 + (((a | 0) % (c | 0) | 0) << 4) | 0, e);\n }while ((a | 0) < (c | 0));\n S = g;\n return +d;\n }\n function ub(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0, e = 0, f = 0, g = 0, h = 0;\n g = S;\n S = S + 192 | 0;\n e = g + 168 | 0;\n f = g;\n Ub(a, c, e);\n Vb(a, c, f);\n c = b[f >> 2] | 0;\n if ((c | 0) > 0) {\n d = +sb(f + 8 | 0, f + 8 + (((c | 0) != 1 & 1) << 4) | 0, e) + 0.0;\n if ((c | 0) != 1) {\n a = 1;\n do {\n h = a;\n a = a + 1 | 0;\n d = d + +sb(f + 8 + (h << 4) | 0, f + 8 + (((a | 0) % (c | 0) | 0) << 4) | 0, e);\n }while ((a | 0) < (c | 0));\n }\n } else d = 0.0;\n S = g;\n return +(d * 40589732.49931477);\n }\n function vb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0, e = 0, f = 0, g = 0, h = 0;\n g = S;\n S = S + 192 | 0;\n e = g + 168 | 0;\n f = g;\n Ub(a, c, e);\n Vb(a, c, f);\n c = b[f >> 2] | 0;\n if ((c | 0) > 0) {\n d = +sb(f + 8 | 0, f + 8 + (((c | 0) != 1 & 1) << 4) | 0, e) + 0.0;\n if ((c | 0) != 1) {\n a = 1;\n do {\n h = a;\n a = a + 1 | 0;\n d = d + +sb(f + 8 + (h << 4) | 0, f + 8 + (((a | 0) % (c | 0) | 0) << 4) | 0, e);\n }while ((a | 0) < (c | 0));\n }\n } else d = 0.0;\n S = g;\n return +(d * 40589732499314.77);\n }\n function wb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0, f = 0.0, g = 0.0, h = 0, i = 0, j = 0.0, k = 0.0, l = 0.0;\n i = S;\n S = S + 176 | 0;\n h = i;\n fc(a, c, h);\n a = b[h >> 2] | 0;\n if ((a | 0) <= 1) {\n g = 0.0;\n S = i;\n return +g;\n }\n c = a + -1 | 0;\n a = 0;\n d = 0.0;\n f = +e[h + 8 >> 3];\n g = +e[h + 16 >> 3];\n do {\n a = a + 1 | 0;\n k = f;\n f = +e[h + 8 + (a << 4) >> 3];\n l = +u(+((f - k) * .5));\n j = g;\n g = +e[h + 8 + (a << 4) + 8 >> 3];\n j = +u(+((g - j) * .5));\n j = l * l + j * (+t(+f) * +t(+k) * j);\n d = d + +z(+ +r(+j), + +r(+(1.0 - j))) * 2.0;\n }while ((a | 0) < (c | 0));\n S = i;\n return +d;\n }\n function xb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0, f = 0.0, g = 0.0, h = 0, i = 0, j = 0.0, k = 0.0, l = 0.0;\n i = S;\n S = S + 176 | 0;\n h = i;\n fc(a, c, h);\n a = b[h >> 2] | 0;\n if ((a | 0) <= 1) {\n g = 0.0;\n S = i;\n return +g;\n }\n c = a + -1 | 0;\n a = 0;\n d = 0.0;\n f = +e[h + 8 >> 3];\n g = +e[h + 16 >> 3];\n do {\n a = a + 1 | 0;\n k = f;\n f = +e[h + 8 + (a << 4) >> 3];\n l = +u(+((f - k) * .5));\n j = g;\n g = +e[h + 8 + (a << 4) + 8 >> 3];\n j = +u(+((g - j) * .5));\n j = l * l + j * (+t(+k) * +t(+f) * j);\n d = d + +z(+ +r(+j), + +r(+(1.0 - j))) * 2.0;\n }while ((a | 0) != (c | 0));\n l = d * 6371.007180918475;\n S = i;\n return +l;\n }\n function yb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0, f = 0.0, g = 0.0, h = 0, i = 0, j = 0.0, k = 0.0, l = 0.0;\n i = S;\n S = S + 176 | 0;\n h = i;\n fc(a, c, h);\n a = b[h >> 2] | 0;\n if ((a | 0) <= 1) {\n g = 0.0;\n S = i;\n return +g;\n }\n c = a + -1 | 0;\n a = 0;\n d = 0.0;\n f = +e[h + 8 >> 3];\n g = +e[h + 16 >> 3];\n do {\n a = a + 1 | 0;\n k = f;\n f = +e[h + 8 + (a << 4) >> 3];\n l = +u(+((f - k) * .5));\n j = g;\n g = +e[h + 8 + (a << 4) + 8 >> 3];\n j = +u(+((g - j) * .5));\n j = l * l + j * (+t(+k) * +t(+f) * j);\n d = d + +z(+ +r(+j), + +r(+(1.0 - j))) * 2.0;\n }while ((a | 0) != (c | 0));\n l = d * 6371007.180918475;\n S = i;\n return +l;\n }\n function zb(a, b) {\n a = a | 0;\n b = b | 0;\n b = bd(a | 0, b | 0, 45) | 0;\n G();\n return b & 127 | 0;\n }\n function Ab(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0;\n if (!(true & (b & -16777216 | 0) == 134217728)) {\n b = 0;\n return b | 0;\n }\n g = bd(a | 0, b | 0, 45) | 0;\n G();\n g = g & 127;\n if (g >>> 0 > 121) {\n b = 0;\n return b | 0;\n }\n c = bd(a | 0, b | 0, 52) | 0;\n G();\n c = c & 15;\n do if (c | 0) {\n e = 1;\n d = 0;\n while(true){\n f = bd(a | 0, b | 0, (15 - e | 0) * 3 | 0) | 0;\n G();\n f = f & 7;\n if ((f | 0) != 0 & (d ^ 1)) {\n if ((f | 0) == 1 & (la(g) | 0) != 0) {\n h = 0;\n d = 13;\n break;\n } else d = 1;\n }\n if ((f | 0) == 7) {\n h = 0;\n d = 13;\n break;\n }\n if (e >>> 0 < c >>> 0) e = e + 1 | 0;\n else {\n d = 9;\n break;\n }\n }\n if ((d | 0) == 9) {\n if ((c | 0) == 15) h = 1;\n else break;\n return h | 0;\n } else if ((d | 0) == 13) return h | 0;\n }\n while (0);\n while(true){\n h = bd(a | 0, b | 0, (14 - c | 0) * 3 | 0) | 0;\n G();\n if (!((h & 7 | 0) == 7 & true)) {\n h = 0;\n d = 13;\n break;\n }\n if (c >>> 0 < 14) c = c + 1 | 0;\n else {\n h = 1;\n d = 13;\n break;\n }\n }\n if ((d | 0) == 13) return h | 0;\n return 0;\n }\n function Bb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0, e = 0;\n d = bd(a | 0, b | 0, 52) | 0;\n G();\n d = d & 15;\n if ((d | 0) >= (c | 0)) {\n if ((d | 0) != (c | 0)) {\n if (c >>> 0 <= 15) {\n e = cd(c | 0, 0, 52) | 0;\n a = e | a;\n b = G() | 0 | b & -15728641;\n if ((d | 0) > (c | 0)) do {\n e = cd(7, 0, (14 - c | 0) * 3 | 0) | 0;\n c = c + 1 | 0;\n a = e | a;\n b = G() | 0 | b;\n }while ((c | 0) < (d | 0));\n } else {\n b = 0;\n a = 0;\n }\n }\n } else {\n b = 0;\n a = 0;\n }\n F(b | 0);\n return a | 0;\n }\n function Cb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n a = bd(a | 0, b | 0, 52) | 0;\n G();\n a = a & 15;\n if (!((c | 0) < 16 & (a | 0) <= (c | 0))) {\n c = 0;\n return c | 0;\n }\n c = sc(7, c - a | 0) | 0;\n return c | 0;\n }\n function Db(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0;\n h = bd(a | 0, c | 0, 52) | 0;\n G();\n h = h & 15;\n if (!((d | 0) < 16 & (h | 0) <= (d | 0))) return;\n if ((h | 0) == (d | 0)) {\n d = e;\n b[d >> 2] = a;\n b[d + 4 >> 2] = c;\n return;\n }\n j = sc(7, d - h | 0) | 0;\n k = (j | 0) / 7 | 0;\n i = bd(a | 0, c | 0, 45) | 0;\n G();\n if (!(la(i & 127) | 0)) g = 0;\n else {\n a: do if (!h) f = 0;\n else {\n g = 1;\n while(true){\n f = bd(a | 0, c | 0, (15 - g | 0) * 3 | 0) | 0;\n G();\n f = f & 7;\n if (f | 0) break a;\n if (g >>> 0 < h >>> 0) g = g + 1 | 0;\n else {\n f = 0;\n break;\n }\n }\n }\n while (0);\n g = (f | 0) == 0;\n }\n l = cd(h + 1 | 0, 0, 52) | 0;\n f = G() | 0 | c & -15728641;\n i = (14 - h | 0) * 3 | 0;\n c = cd(7, 0, i | 0) | 0;\n c = (l | a) & ~c;\n h = f & ~(G() | 0);\n Db(c, h, d, e);\n f = e + (k << 3) | 0;\n if (!g) {\n l = cd(1, 0, i | 0) | 0;\n Db(l | c, G() | 0 | h, d, f);\n l = f + (k << 3) | 0;\n j = cd(2, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = cd(3, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = cd(4, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = cd(5, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l);\n j = cd(6, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l + (k << 3) | 0);\n return;\n }\n g = f + (k << 3) | 0;\n if ((j | 0) > 6) {\n j = f + 8 | 0;\n l = (g >>> 0 > j >>> 0 ? g : j) + -1 + (0 - f) | 0;\n gd(f | 0, 0, l + 8 & -8 | 0);\n f = j + (l >>> 3 << 3) | 0;\n }\n l = cd(2, 0, i | 0) | 0;\n Db(l | c, G() | 0 | h, d, f);\n l = f + (k << 3) | 0;\n j = cd(3, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = cd(4, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = cd(5, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l);\n j = cd(6, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l + (k << 3) | 0);\n return;\n }\n function Eb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0, d = 0, e = 0;\n e = bd(a | 0, b | 0, 45) | 0;\n G();\n if (!(la(e & 127) | 0)) {\n e = 0;\n return e | 0;\n }\n e = bd(a | 0, b | 0, 52) | 0;\n G();\n e = e & 15;\n a: do if (!e) c = 0;\n else {\n d = 1;\n while(true){\n c = bd(a | 0, b | 0, (15 - d | 0) * 3 | 0) | 0;\n G();\n c = c & 7;\n if (c | 0) break a;\n if (d >>> 0 < e >>> 0) d = d + 1 | 0;\n else {\n c = 0;\n break;\n }\n }\n }\n while (0);\n e = (c | 0) == 0 & 1;\n return e | 0;\n }\n function Fb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0, e = 0;\n d = bd(a | 0, b | 0, 52) | 0;\n G();\n d = d & 15;\n if ((c | 0) < 16 & (d | 0) <= (c | 0)) {\n if ((d | 0) != (c | 0)) {\n e = cd(c | 0, 0, 52) | 0;\n a = e | a;\n b = G() | 0 | b & -15728641;\n if ((d | 0) < (c | 0)) do {\n e = cd(7, 0, (14 - d | 0) * 3 | 0) | 0;\n d = d + 1 | 0;\n a = a & ~e;\n b = b & ~(G() | 0);\n }while ((d | 0) < (c | 0));\n }\n } else {\n b = 0;\n a = 0;\n }\n F(b | 0);\n return a | 0;\n }\n function Gb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0;\n if (!d) {\n y = 0;\n return y | 0;\n }\n f = a;\n e = b[f >> 2] | 0;\n f = b[f + 4 >> 2] | 0;\n if (true & (f & 15728640 | 0) == 0) {\n if ((d | 0) <= 0) {\n y = 0;\n return y | 0;\n }\n y = c;\n b[y >> 2] = e;\n b[y + 4 >> 2] = f;\n if ((d | 0) == 1) {\n y = 0;\n return y | 0;\n }\n e = 1;\n do {\n w = a + (e << 3) | 0;\n x = b[w + 4 >> 2] | 0;\n y = c + (e << 3) | 0;\n b[y >> 2] = b[w >> 2];\n b[y + 4 >> 2] = x;\n e = e + 1 | 0;\n }while ((e | 0) != (d | 0));\n e = 0;\n return e | 0;\n }\n w = d << 3;\n x = Vc(w) | 0;\n if (!x) {\n y = -3;\n return y | 0;\n }\n fd(x | 0, a | 0, w | 0);\n v = Xc(d, 8) | 0;\n if (!v) {\n Wc(x);\n y = -3;\n return y | 0;\n }\n e = d;\n a: while(true){\n h = x;\n l = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n t = bd(l | 0, h | 0, 52) | 0;\n G();\n t = t & 15;\n u = t + -1 | 0;\n s = (e | 0) > 0;\n b: do if (s) {\n r = ((e | 0) < 0) << 31 >> 31;\n p = cd(u | 0, 0, 52) | 0;\n q = G() | 0;\n if (u >>> 0 > 15) {\n f = 0;\n a = l;\n d = h;\n while(true){\n if (!((a | 0) == 0 & (d | 0) == 0)) {\n g = bd(a | 0, d | 0, 52) | 0;\n G();\n g = g & 15;\n i = (g | 0) < (u | 0);\n g = (g | 0) == (u | 0);\n k = i ? 0 : g ? a : 0;\n a = i ? 0 : g ? d : 0;\n d = ad(k | 0, a | 0, e | 0, r | 0) | 0;\n G();\n g = v + (d << 3) | 0;\n i = g;\n j = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n if ((j | 0) == 0 & (i | 0) == 0) d = k;\n else {\n p = 0;\n o = d;\n n = i;\n d = k;\n while(true){\n if ((p | 0) > (e | 0)) {\n y = 41;\n break a;\n }\n if ((j | 0) == (d | 0) & (n & -117440513 | 0) == (a | 0)) {\n k = bd(j | 0, n | 0, 56) | 0;\n G();\n k = k & 7;\n m = k + 1 | 0;\n q = bd(j | 0, n | 0, 45) | 0;\n G();\n c: do if (!(la(q & 127) | 0)) i = 7;\n else {\n j = bd(j | 0, n | 0, 52) | 0;\n G();\n j = j & 15;\n if (!j) {\n i = 6;\n break;\n }\n i = 1;\n while(true){\n q = cd(7, 0, (15 - i | 0) * 3 | 0) | 0;\n if (!((q & d | 0) == 0 & ((G() | 0) & a | 0) == 0)) {\n i = 7;\n break c;\n }\n if (i >>> 0 < j >>> 0) i = i + 1 | 0;\n else {\n i = 6;\n break;\n }\n }\n }\n while (0);\n if ((k + 2 | 0) >>> 0 > i >>> 0) {\n y = 51;\n break a;\n }\n q = cd(m | 0, 0, 56) | 0;\n a = G() | 0 | a & -117440513;\n i = g;\n b[i >> 2] = 0;\n b[i + 4 >> 2] = 0;\n i = o;\n d = q | d;\n } else i = (o + 1 | 0) % (e | 0) | 0;\n g = v + (i << 3) | 0;\n n = g;\n j = b[n >> 2] | 0;\n n = b[n + 4 >> 2] | 0;\n if ((j | 0) == 0 & (n | 0) == 0) break;\n else {\n p = p + 1 | 0;\n o = i;\n }\n }\n }\n q = g;\n b[q >> 2] = d;\n b[q + 4 >> 2] = a;\n }\n f = f + 1 | 0;\n if ((f | 0) >= (e | 0)) break b;\n d = x + (f << 3) | 0;\n a = b[d >> 2] | 0;\n d = b[d + 4 >> 2] | 0;\n }\n }\n f = 0;\n a = l;\n d = h;\n while(true){\n if (!((a | 0) == 0 & (d | 0) == 0)) {\n i = bd(a | 0, d | 0, 52) | 0;\n G();\n i = i & 15;\n if ((i | 0) >= (u | 0)) {\n if ((i | 0) != (u | 0)) {\n a = a | p;\n d = d & -15728641 | q;\n if (i >>> 0 >= t >>> 0) {\n g = u;\n do {\n o = cd(7, 0, (14 - g | 0) * 3 | 0) | 0;\n g = g + 1 | 0;\n a = o | a;\n d = G() | 0 | d;\n }while (g >>> 0 < i >>> 0);\n }\n }\n } else {\n a = 0;\n d = 0;\n }\n i = ad(a | 0, d | 0, e | 0, r | 0) | 0;\n G();\n g = v + (i << 3) | 0;\n j = g;\n k = b[j >> 2] | 0;\n j = b[j + 4 >> 2] | 0;\n if (!((k | 0) == 0 & (j | 0) == 0)) {\n o = 0;\n while(true){\n if ((o | 0) > (e | 0)) {\n y = 41;\n break a;\n }\n if ((k | 0) == (a | 0) & (j & -117440513 | 0) == (d | 0)) {\n m = bd(k | 0, j | 0, 56) | 0;\n G();\n m = m & 7;\n n = m + 1 | 0;\n z = bd(k | 0, j | 0, 45) | 0;\n G();\n d: do if (!(la(z & 127) | 0)) j = 7;\n else {\n k = bd(k | 0, j | 0, 52) | 0;\n G();\n k = k & 15;\n if (!k) {\n j = 6;\n break;\n }\n j = 1;\n while(true){\n z = cd(7, 0, (15 - j | 0) * 3 | 0) | 0;\n if (!((z & a | 0) == 0 & ((G() | 0) & d | 0) == 0)) {\n j = 7;\n break d;\n }\n if (j >>> 0 < k >>> 0) j = j + 1 | 0;\n else {\n j = 6;\n break;\n }\n }\n }\n while (0);\n if ((m + 2 | 0) >>> 0 > j >>> 0) {\n y = 51;\n break a;\n }\n z = cd(n | 0, 0, 56) | 0;\n d = G() | 0 | d & -117440513;\n n = g;\n b[n >> 2] = 0;\n b[n + 4 >> 2] = 0;\n a = z | a;\n } else i = (i + 1 | 0) % (e | 0) | 0;\n g = v + (i << 3) | 0;\n j = g;\n k = b[j >> 2] | 0;\n j = b[j + 4 >> 2] | 0;\n if ((k | 0) == 0 & (j | 0) == 0) break;\n else o = o + 1 | 0;\n }\n }\n z = g;\n b[z >> 2] = a;\n b[z + 4 >> 2] = d;\n }\n f = f + 1 | 0;\n if ((f | 0) >= (e | 0)) break b;\n d = x + (f << 3) | 0;\n a = b[d >> 2] | 0;\n d = b[d + 4 >> 2] | 0;\n }\n }\n while (0);\n if ((e + 5 | 0) >>> 0 < 11) {\n y = 99;\n break;\n }\n q = Xc((e | 0) / 6 | 0, 8) | 0;\n if (!q) {\n y = 58;\n break;\n }\n e: do if (s) {\n o = 0;\n n = 0;\n do {\n i = v + (o << 3) | 0;\n a = i;\n f = b[a >> 2] | 0;\n a = b[a + 4 >> 2] | 0;\n if (!((f | 0) == 0 & (a | 0) == 0)) {\n j = bd(f | 0, a | 0, 56) | 0;\n G();\n j = j & 7;\n d = j + 1 | 0;\n k = a & -117440513;\n z = bd(f | 0, a | 0, 45) | 0;\n G();\n f: do if (la(z & 127) | 0) {\n m = bd(f | 0, a | 0, 52) | 0;\n G();\n m = m & 15;\n if (m | 0) {\n g = 1;\n while(true){\n z = cd(7, 0, (15 - g | 0) * 3 | 0) | 0;\n if (!((f & z | 0) == 0 & (k & (G() | 0) | 0) == 0)) break f;\n if (g >>> 0 < m >>> 0) g = g + 1 | 0;\n else break;\n }\n }\n a = cd(d | 0, 0, 56) | 0;\n f = a | f;\n a = G() | 0 | k;\n d = i;\n b[d >> 2] = f;\n b[d + 4 >> 2] = a;\n d = j + 2 | 0;\n }\n while (0);\n if ((d | 0) == 7) {\n z = q + (n << 3) | 0;\n b[z >> 2] = f;\n b[z + 4 >> 2] = a & -117440513;\n n = n + 1 | 0;\n }\n }\n o = o + 1 | 0;\n }while ((o | 0) != (e | 0));\n if (s) {\n p = ((e | 0) < 0) << 31 >> 31;\n m = cd(u | 0, 0, 52) | 0;\n o = G() | 0;\n if (u >>> 0 > 15) {\n a = 0;\n f = 0;\n while(true){\n do if (!((l | 0) == 0 & (h | 0) == 0)) {\n j = bd(l | 0, h | 0, 52) | 0;\n G();\n j = j & 15;\n g = (j | 0) < (u | 0);\n j = (j | 0) == (u | 0);\n i = g ? 0 : j ? l : 0;\n j = g ? 0 : j ? h : 0;\n g = ad(i | 0, j | 0, e | 0, p | 0) | 0;\n G();\n d = 0;\n while(true){\n if ((d | 0) > (e | 0)) {\n y = 98;\n break a;\n }\n z = v + (g << 3) | 0;\n k = b[z + 4 >> 2] | 0;\n if ((k & -117440513 | 0) == (j | 0) ? (b[z >> 2] | 0) == (i | 0) : 0) {\n y = 70;\n break;\n }\n g = (g + 1 | 0) % (e | 0) | 0;\n z = v + (g << 3) | 0;\n if ((b[z >> 2] | 0) == (i | 0) ? (b[z + 4 >> 2] | 0) == (j | 0) : 0) break;\n else d = d + 1 | 0;\n }\n if ((y | 0) == 70 ? (y = 0, true & (k & 117440512 | 0) == 100663296) : 0) break;\n z = c + (f << 3) | 0;\n b[z >> 2] = l;\n b[z + 4 >> 2] = h;\n f = f + 1 | 0;\n }\n while (0);\n a = a + 1 | 0;\n if ((a | 0) >= (e | 0)) {\n e = n;\n break e;\n }\n h = x + (a << 3) | 0;\n l = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n }\n }\n a = 0;\n f = 0;\n while(true){\n do if (!((l | 0) == 0 & (h | 0) == 0)) {\n j = bd(l | 0, h | 0, 52) | 0;\n G();\n j = j & 15;\n if ((j | 0) >= (u | 0)) {\n if ((j | 0) != (u | 0)) {\n d = l | m;\n g = h & -15728641 | o;\n if (j >>> 0 < t >>> 0) j = g;\n else {\n i = u;\n do {\n z = cd(7, 0, (14 - i | 0) * 3 | 0) | 0;\n i = i + 1 | 0;\n d = z | d;\n g = G() | 0 | g;\n }while (i >>> 0 < j >>> 0);\n j = g;\n }\n } else {\n d = l;\n j = h;\n }\n } else {\n d = 0;\n j = 0;\n }\n i = ad(d | 0, j | 0, e | 0, p | 0) | 0;\n G();\n g = 0;\n while(true){\n if ((g | 0) > (e | 0)) {\n y = 98;\n break a;\n }\n z = v + (i << 3) | 0;\n k = b[z + 4 >> 2] | 0;\n if ((k & -117440513 | 0) == (j | 0) ? (b[z >> 2] | 0) == (d | 0) : 0) {\n y = 93;\n break;\n }\n i = (i + 1 | 0) % (e | 0) | 0;\n z = v + (i << 3) | 0;\n if ((b[z >> 2] | 0) == (d | 0) ? (b[z + 4 >> 2] | 0) == (j | 0) : 0) break;\n else g = g + 1 | 0;\n }\n if ((y | 0) == 93 ? (y = 0, true & (k & 117440512 | 0) == 100663296) : 0) break;\n z = c + (f << 3) | 0;\n b[z >> 2] = l;\n b[z + 4 >> 2] = h;\n f = f + 1 | 0;\n }\n while (0);\n a = a + 1 | 0;\n if ((a | 0) >= (e | 0)) {\n e = n;\n break e;\n }\n h = x + (a << 3) | 0;\n l = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n }\n } else {\n f = 0;\n e = n;\n }\n } else {\n f = 0;\n e = 0;\n }\n while (0);\n gd(v | 0, 0, w | 0);\n fd(x | 0, q | 0, e << 3 | 0);\n Wc(q);\n if (!e) break;\n else c = c + (f << 3) | 0;\n }\n if ((y | 0) == 41) {\n Wc(x);\n Wc(v);\n z = -1;\n return z | 0;\n } else if ((y | 0) == 51) {\n Wc(x);\n Wc(v);\n z = -2;\n return z | 0;\n } else if ((y | 0) == 58) {\n Wc(x);\n Wc(v);\n z = -3;\n return z | 0;\n } else if ((y | 0) == 98) {\n Wc(q);\n Wc(x);\n Wc(v);\n z = -1;\n return z | 0;\n } else if ((y | 0) == 99) fd(c | 0, x | 0, e << 3 | 0);\n Wc(x);\n Wc(v);\n z = 0;\n return z | 0;\n }\n function Hb(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0;\n if ((c | 0) <= 0) {\n f = 0;\n return f | 0;\n }\n if ((f | 0) >= 16) {\n g = 0;\n while(true){\n l = a + (g << 3) | 0;\n if (!((b[l >> 2] | 0) == 0 & (b[l + 4 >> 2] | 0) == 0)) {\n g = 14;\n break;\n }\n g = g + 1 | 0;\n if ((g | 0) >= (c | 0)) {\n h = 0;\n g = 16;\n break;\n }\n }\n if ((g | 0) == 14) return ((e | 0) > 0 ? -2 : -1) | 0;\n else if ((g | 0) == 16) return h | 0;\n }\n g = 0;\n l = 0;\n a: while(true){\n k = a + (l << 3) | 0;\n i = k;\n h = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n do if (!((h | 0) == 0 & (i | 0) == 0)) {\n if ((g | 0) >= (e | 0)) {\n h = -1;\n g = 16;\n break a;\n }\n j = bd(h | 0, i | 0, 52) | 0;\n G();\n j = j & 15;\n if ((j | 0) > (f | 0)) {\n h = -2;\n g = 16;\n break a;\n }\n if ((j | 0) == (f | 0)) {\n k = d + (g << 3) | 0;\n b[k >> 2] = h;\n b[k + 4 >> 2] = i;\n g = g + 1 | 0;\n break;\n }\n h = (sc(7, f - j | 0) | 0) + g | 0;\n if ((h | 0) > (e | 0)) {\n h = -1;\n g = 16;\n break a;\n }\n Db(b[k >> 2] | 0, b[k + 4 >> 2] | 0, f, d + (g << 3) | 0);\n g = h;\n }\n while (0);\n l = l + 1 | 0;\n if ((l | 0) >= (c | 0)) {\n h = 0;\n g = 16;\n break;\n }\n }\n if ((g | 0) == 16) return h | 0;\n return 0;\n }\n function Ib(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0;\n if ((c | 0) <= 0) {\n d = 0;\n return d | 0;\n }\n if ((d | 0) >= 16) {\n e = 0;\n while(true){\n h = a + (e << 3) | 0;\n if (!((b[h >> 2] | 0) == 0 & (b[h + 4 >> 2] | 0) == 0)) {\n e = -1;\n f = 13;\n break;\n }\n e = e + 1 | 0;\n if ((e | 0) >= (c | 0)) {\n e = 0;\n f = 13;\n break;\n }\n }\n if ((f | 0) == 13) return e | 0;\n }\n e = 0;\n h = 0;\n a: while(true){\n f = a + (h << 3) | 0;\n g = b[f >> 2] | 0;\n f = b[f + 4 >> 2] | 0;\n do if (!((g | 0) == 0 & (f | 0) == 0)) {\n f = bd(g | 0, f | 0, 52) | 0;\n G();\n f = f & 15;\n if ((f | 0) > (d | 0)) {\n e = -1;\n f = 13;\n break a;\n }\n if ((f | 0) == (d | 0)) {\n e = e + 1 | 0;\n break;\n } else {\n e = (sc(7, d - f | 0) | 0) + e | 0;\n break;\n }\n }\n while (0);\n h = h + 1 | 0;\n if ((h | 0) >= (c | 0)) {\n f = 13;\n break;\n }\n }\n if ((f | 0) == 13) return e | 0;\n return 0;\n }\n function Jb(a, b) {\n a = a | 0;\n b = b | 0;\n b = bd(a | 0, b | 0, 52) | 0;\n G();\n return b & 1 | 0;\n }\n function Kb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0, d = 0, e = 0;\n e = bd(a | 0, b | 0, 52) | 0;\n G();\n e = e & 15;\n if (!e) {\n e = 0;\n return e | 0;\n }\n d = 1;\n while(true){\n c = bd(a | 0, b | 0, (15 - d | 0) * 3 | 0) | 0;\n G();\n c = c & 7;\n if (c | 0) {\n d = 5;\n break;\n }\n if (d >>> 0 < e >>> 0) d = d + 1 | 0;\n else {\n c = 0;\n d = 5;\n break;\n }\n }\n if ((d | 0) == 5) return c | 0;\n return 0;\n }\n function Lb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n i = bd(a | 0, b | 0, 52) | 0;\n G();\n i = i & 15;\n if (!i) {\n h = b;\n i = a;\n F(h | 0);\n return i | 0;\n }\n h = 1;\n c = 0;\n while(true){\n f = (15 - h | 0) * 3 | 0;\n d = cd(7, 0, f | 0) | 0;\n e = G() | 0;\n g = bd(a | 0, b | 0, f | 0) | 0;\n G();\n f = cd(Pa(g & 7) | 0, 0, f | 0) | 0;\n g = G() | 0;\n a = f | a & ~d;\n b = g | b & ~e;\n a: do if (!c) {\n if (!((f & d | 0) == 0 & (g & e | 0) == 0)) {\n d = bd(a | 0, b | 0, 52) | 0;\n G();\n d = d & 15;\n if (!d) c = 1;\n else {\n c = 1;\n b: while(true){\n g = bd(a | 0, b | 0, (15 - c | 0) * 3 | 0) | 0;\n G();\n switch(g & 7){\n case 1:\n break b;\n case 0:\n break;\n default:\n c = 1;\n break a;\n }\n if (c >>> 0 < d >>> 0) c = c + 1 | 0;\n else {\n c = 1;\n break a;\n }\n }\n c = 1;\n while(true){\n g = (15 - c | 0) * 3 | 0;\n e = bd(a | 0, b | 0, g | 0) | 0;\n G();\n f = cd(7, 0, g | 0) | 0;\n b = b & ~(G() | 0);\n g = cd(Pa(e & 7) | 0, 0, g | 0) | 0;\n a = a & ~f | g;\n b = b | (G() | 0);\n if (c >>> 0 < d >>> 0) c = c + 1 | 0;\n else {\n c = 1;\n break;\n }\n }\n }\n } else c = 0;\n }\n while (0);\n if (h >>> 0 < i >>> 0) h = h + 1 | 0;\n else break;\n }\n F(b | 0);\n return a | 0;\n }\n function Mb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0;\n d = bd(a | 0, b | 0, 52) | 0;\n G();\n d = d & 15;\n if (!d) {\n c = b;\n d = a;\n F(c | 0);\n return d | 0;\n }\n c = 1;\n while(true){\n f = (15 - c | 0) * 3 | 0;\n g = bd(a | 0, b | 0, f | 0) | 0;\n G();\n e = cd(7, 0, f | 0) | 0;\n b = b & ~(G() | 0);\n f = cd(Pa(g & 7) | 0, 0, f | 0) | 0;\n a = f | a & ~e;\n b = G() | 0 | b;\n if (c >>> 0 < d >>> 0) c = c + 1 | 0;\n else break;\n }\n F(b | 0);\n return a | 0;\n }\n function Nb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;\n i = bd(a | 0, b | 0, 52) | 0;\n G();\n i = i & 15;\n if (!i) {\n h = b;\n i = a;\n F(h | 0);\n return i | 0;\n }\n h = 1;\n c = 0;\n while(true){\n f = (15 - h | 0) * 3 | 0;\n d = cd(7, 0, f | 0) | 0;\n e = G() | 0;\n g = bd(a | 0, b | 0, f | 0) | 0;\n G();\n f = cd(Qa(g & 7) | 0, 0, f | 0) | 0;\n g = G() | 0;\n a = f | a & ~d;\n b = g | b & ~e;\n a: do if (!c) {\n if (!((f & d | 0) == 0 & (g & e | 0) == 0)) {\n d = bd(a | 0, b | 0, 52) | 0;\n G();\n d = d & 15;\n if (!d) c = 1;\n else {\n c = 1;\n b: while(true){\n g = bd(a | 0, b | 0, (15 - c | 0) * 3 | 0) | 0;\n G();\n switch(g & 7){\n case 1:\n break b;\n case 0:\n break;\n default:\n c = 1;\n break a;\n }\n if (c >>> 0 < d >>> 0) c = c + 1 | 0;\n else {\n c = 1;\n break a;\n }\n }\n c = 1;\n while(true){\n e = (15 - c | 0) * 3 | 0;\n f = cd(7, 0, e | 0) | 0;\n g = b & ~(G() | 0);\n b = bd(a | 0, b | 0, e | 0) | 0;\n G();\n b = cd(Qa(b & 7) | 0, 0, e | 0) | 0;\n a = a & ~f | b;\n b = g | (G() | 0);\n if (c >>> 0 < d >>> 0) c = c + 1 | 0;\n else {\n c = 1;\n break;\n }\n }\n }\n } else c = 0;\n }\n while (0);\n if (h >>> 0 < i >>> 0) h = h + 1 | 0;\n else break;\n }\n F(b | 0);\n return a | 0;\n }\n function Ob(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0;\n d = bd(a | 0, b | 0, 52) | 0;\n G();\n d = d & 15;\n if (!d) {\n c = b;\n d = a;\n F(c | 0);\n return d | 0;\n }\n c = 1;\n while(true){\n g = (15 - c | 0) * 3 | 0;\n f = cd(7, 0, g | 0) | 0;\n e = b & ~(G() | 0);\n b = bd(a | 0, b | 0, g | 0) | 0;\n G();\n b = cd(Qa(b & 7) | 0, 0, g | 0) | 0;\n a = b | a & ~f;\n b = G() | 0 | e;\n if (c >>> 0 < d >>> 0) c = c + 1 | 0;\n else break;\n }\n F(b | 0);\n return a | 0;\n }\n function Pb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0;\n j = S;\n S = S + 64 | 0;\n i = j + 40 | 0;\n e = j + 24 | 0;\n f = j + 12 | 0;\n g = j;\n cd(c | 0, 0, 52);\n d = G() | 134225919;\n if (!c) {\n if ((b[a + 4 >> 2] | 0) > 2) {\n h = 0;\n i = 0;\n F(h | 0);\n S = j;\n return i | 0;\n }\n if ((b[a + 8 >> 2] | 0) > 2) {\n h = 0;\n i = 0;\n F(h | 0);\n S = j;\n return i | 0;\n }\n if ((b[a + 12 >> 2] | 0) > 2) {\n h = 0;\n i = 0;\n F(h | 0);\n S = j;\n return i | 0;\n }\n cd(na(a) | 0, 0, 45);\n h = G() | 0 | d;\n i = -1;\n F(h | 0);\n S = j;\n return i | 0;\n }\n b[i >> 2] = b[a >> 2];\n b[i + 4 >> 2] = b[a + 4 >> 2];\n b[i + 8 >> 2] = b[a + 8 >> 2];\n b[i + 12 >> 2] = b[a + 12 >> 2];\n h = i + 4 | 0;\n if ((c | 0) > 0) {\n a = -1;\n while(true){\n b[e >> 2] = b[h >> 2];\n b[e + 4 >> 2] = b[h + 4 >> 2];\n b[e + 8 >> 2] = b[h + 8 >> 2];\n if (!(c & 1)) {\n Ja(h);\n b[f >> 2] = b[h >> 2];\n b[f + 4 >> 2] = b[h + 4 >> 2];\n b[f + 8 >> 2] = b[h + 8 >> 2];\n La(f);\n } else {\n Ia(h);\n b[f >> 2] = b[h >> 2];\n b[f + 4 >> 2] = b[h + 4 >> 2];\n b[f + 8 >> 2] = b[h + 8 >> 2];\n Ka(f);\n }\n Fa(e, f, g);\n Ca(g);\n l = (15 - c | 0) * 3 | 0;\n k = cd(7, 0, l | 0) | 0;\n d = d & ~(G() | 0);\n l = cd(Ha(g) | 0, 0, l | 0) | 0;\n a = l | a & ~k;\n d = G() | 0 | d;\n if ((c | 0) > 1) c = c + -1 | 0;\n else break;\n }\n } else a = -1;\n a: do if (((b[h >> 2] | 0) <= 2 ? (b[i + 8 >> 2] | 0) <= 2 : 0) ? (b[i + 12 >> 2] | 0) <= 2 : 0) {\n e = na(i) | 0;\n c = cd(e | 0, 0, 45) | 0;\n c = c | a;\n a = G() | 0 | d & -1040385;\n g = oa(i) | 0;\n if (!(la(e) | 0)) {\n if ((g | 0) <= 0) break;\n f = 0;\n while(true){\n e = bd(c | 0, a | 0, 52) | 0;\n G();\n e = e & 15;\n if (e) {\n d = 1;\n while(true){\n l = (15 - d | 0) * 3 | 0;\n i = bd(c | 0, a | 0, l | 0) | 0;\n G();\n k = cd(7, 0, l | 0) | 0;\n a = a & ~(G() | 0);\n l = cd(Pa(i & 7) | 0, 0, l | 0) | 0;\n c = c & ~k | l;\n a = a | (G() | 0);\n if (d >>> 0 < e >>> 0) d = d + 1 | 0;\n else break;\n }\n }\n f = f + 1 | 0;\n if ((f | 0) == (g | 0)) break a;\n }\n }\n f = bd(c | 0, a | 0, 52) | 0;\n G();\n f = f & 15;\n b: do if (f) {\n d = 1;\n c: while(true){\n l = bd(c | 0, a | 0, (15 - d | 0) * 3 | 0) | 0;\n G();\n switch(l & 7){\n case 1:\n break c;\n case 0:\n break;\n default:\n break b;\n }\n if (d >>> 0 < f >>> 0) d = d + 1 | 0;\n else break b;\n }\n if (ra(e, b[i >> 2] | 0) | 0) {\n d = 1;\n while(true){\n i = (15 - d | 0) * 3 | 0;\n k = cd(7, 0, i | 0) | 0;\n l = a & ~(G() | 0);\n a = bd(c | 0, a | 0, i | 0) | 0;\n G();\n a = cd(Qa(a & 7) | 0, 0, i | 0) | 0;\n c = c & ~k | a;\n a = l | (G() | 0);\n if (d >>> 0 < f >>> 0) d = d + 1 | 0;\n else break;\n }\n } else {\n d = 1;\n while(true){\n l = (15 - d | 0) * 3 | 0;\n i = bd(c | 0, a | 0, l | 0) | 0;\n G();\n k = cd(7, 0, l | 0) | 0;\n a = a & ~(G() | 0);\n l = cd(Pa(i & 7) | 0, 0, l | 0) | 0;\n c = c & ~k | l;\n a = a | (G() | 0);\n if (d >>> 0 < f >>> 0) d = d + 1 | 0;\n else break;\n }\n }\n }\n while (0);\n if ((g | 0) > 0) {\n d = 0;\n do {\n c = Lb(c, a) | 0;\n a = G() | 0;\n d = d + 1 | 0;\n }while ((d | 0) != (g | 0));\n }\n } else {\n c = 0;\n a = 0;\n }\n while (0);\n k = a;\n l = c;\n F(k | 0);\n S = j;\n return l | 0;\n }\n function Qb(a) {\n a = a | 0;\n return (a | 0) % 2 | 0;\n }\n function Rb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0;\n e = S;\n S = S + 16 | 0;\n d = e;\n if ((c >>> 0 <= 15 ? !((b[a + 4 >> 2] & 2146435072 | 0) == 2146435072) : 0) ? !((b[a + 8 + 4 >> 2] & 2146435072 | 0) == 2146435072) : 0) {\n Ya(a, c, d);\n c = Pb(d, c) | 0;\n a = G() | 0;\n } else {\n a = 0;\n c = 0;\n }\n F(a | 0);\n S = e;\n return c | 0;\n }\n function Sb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0;\n f = d + 4 | 0;\n g = bd(a | 0, c | 0, 52) | 0;\n G();\n g = g & 15;\n h = bd(a | 0, c | 0, 45) | 0;\n G();\n e = (g | 0) == 0;\n if (!(la(h & 127) | 0)) {\n if (e) {\n h = 0;\n return h | 0;\n }\n if ((b[f >> 2] | 0) == 0 ? (b[d + 8 >> 2] | 0) == 0 : 0) e = (b[d + 12 >> 2] | 0) != 0 & 1;\n else e = 1;\n } else if (e) {\n h = 1;\n return h | 0;\n } else e = 1;\n d = 1;\n while(true){\n if (!(d & 1)) La(f);\n else Ka(f);\n h = bd(a | 0, c | 0, (15 - d | 0) * 3 | 0) | 0;\n G();\n Ma(f, h & 7);\n if (d >>> 0 < g >>> 0) d = d + 1 | 0;\n else break;\n }\n return e | 0;\n }\n function Tb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0;\n l = S;\n S = S + 16 | 0;\n j = l;\n k = bd(a | 0, c | 0, 45) | 0;\n G();\n k = k & 127;\n a: do if ((la(k) | 0) != 0 ? (g = bd(a | 0, c | 0, 52) | 0, G(), g = g & 15, (g | 0) != 0) : 0) {\n e = 1;\n b: while(true){\n i = bd(a | 0, c | 0, (15 - e | 0) * 3 | 0) | 0;\n G();\n switch(i & 7){\n case 5:\n break b;\n case 0:\n break;\n default:\n e = c;\n break a;\n }\n if (e >>> 0 < g >>> 0) e = e + 1 | 0;\n else {\n e = c;\n break a;\n }\n }\n f = 1;\n e = c;\n while(true){\n c = (15 - f | 0) * 3 | 0;\n h = cd(7, 0, c | 0) | 0;\n i = e & ~(G() | 0);\n e = bd(a | 0, e | 0, c | 0) | 0;\n G();\n e = cd(Qa(e & 7) | 0, 0, c | 0) | 0;\n a = a & ~h | e;\n e = i | (G() | 0);\n if (f >>> 0 < g >>> 0) f = f + 1 | 0;\n else break;\n }\n } else e = c;\n while (0);\n i = 7728 + (k * 28 | 0) | 0;\n b[d >> 2] = b[i >> 2];\n b[d + 4 >> 2] = b[i + 4 >> 2];\n b[d + 8 >> 2] = b[i + 8 >> 2];\n b[d + 12 >> 2] = b[i + 12 >> 2];\n if (!(Sb(a, e, d) | 0)) {\n S = l;\n return;\n }\n h = d + 4 | 0;\n b[j >> 2] = b[h >> 2];\n b[j + 4 >> 2] = b[h + 4 >> 2];\n b[j + 8 >> 2] = b[h + 8 >> 2];\n g = bd(a | 0, e | 0, 52) | 0;\n G();\n i = g & 15;\n if (!(g & 1)) g = i;\n else {\n La(h);\n g = i + 1 | 0;\n }\n if (!(la(k) | 0)) e = 0;\n else {\n c: do if (!i) e = 0;\n else {\n c = 1;\n while(true){\n f = bd(a | 0, e | 0, (15 - c | 0) * 3 | 0) | 0;\n G();\n f = f & 7;\n if (f | 0) {\n e = f;\n break c;\n }\n if (c >>> 0 < i >>> 0) c = c + 1 | 0;\n else {\n e = 0;\n break;\n }\n }\n }\n while (0);\n e = (e | 0) == 4 & 1;\n }\n if (!(cb(d, g, e, 0) | 0)) {\n if ((g | 0) != (i | 0)) {\n b[h >> 2] = b[j >> 2];\n b[h + 4 >> 2] = b[j + 4 >> 2];\n b[h + 8 >> 2] = b[j + 8 >> 2];\n }\n } else {\n if (la(k) | 0) {\n do ;\n while ((cb(d, g, 0, 0) | 0) != 0);\n }\n if ((g | 0) != (i | 0)) Ja(h);\n }\n S = l;\n return;\n }\n function Ub(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0, e = 0;\n d = S;\n S = S + 16 | 0;\n e = d;\n Tb(a, b, e);\n b = bd(a | 0, b | 0, 52) | 0;\n G();\n $a(e, b & 15, c);\n S = d;\n return;\n }\n function Vb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0, g = 0, h = 0;\n g = S;\n S = S + 16 | 0;\n f = g;\n Tb(a, b, f);\n d = bd(a | 0, b | 0, 45) | 0;\n G();\n d = (la(d & 127) | 0) == 0;\n e = bd(a | 0, b | 0, 52) | 0;\n G();\n e = e & 15;\n a: do if (!d) {\n if (e | 0) {\n d = 1;\n while(true){\n h = cd(7, 0, (15 - d | 0) * 3 | 0) | 0;\n if (!((h & a | 0) == 0 & ((G() | 0) & b | 0) == 0)) break a;\n if (d >>> 0 < e >>> 0) d = d + 1 | 0;\n else break;\n }\n }\n ab(f, e, 0, 5, c);\n S = g;\n return;\n }\n while (0);\n eb(f, e, 0, 6, c);\n S = g;\n return;\n }\n function Wb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0, d = 0, e = 0;\n d = bd(a | 0, b | 0, 45) | 0;\n G();\n if (!(la(d & 127) | 0)) {\n d = 2;\n return d | 0;\n }\n d = bd(a | 0, b | 0, 52) | 0;\n G();\n d = d & 15;\n if (!d) {\n d = 5;\n return d | 0;\n }\n c = 1;\n while(true){\n e = cd(7, 0, (15 - c | 0) * 3 | 0) | 0;\n if (!((e & a | 0) == 0 & ((G() | 0) & b | 0) == 0)) {\n c = 2;\n a = 6;\n break;\n }\n if (c >>> 0 < d >>> 0) c = c + 1 | 0;\n else {\n c = 5;\n a = 6;\n break;\n }\n }\n if ((a | 0) == 6) return c | 0;\n return 0;\n }\n function Xb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0;\n m = S;\n S = S + 128 | 0;\n k = m + 112 | 0;\n g = m + 96 | 0;\n l = m;\n f = bd(a | 0, c | 0, 52) | 0;\n G();\n i = f & 15;\n b[k >> 2] = i;\n h = bd(a | 0, c | 0, 45) | 0;\n G();\n h = h & 127;\n a: do if (la(h) | 0) {\n if (i | 0) {\n e = 1;\n while(true){\n j = cd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n if (!((j & a | 0) == 0 & ((G() | 0) & c | 0) == 0)) {\n f = 0;\n break a;\n }\n if (e >>> 0 < i >>> 0) e = e + 1 | 0;\n else break;\n }\n }\n if (!(f & 1)) {\n j = cd(i + 1 | 0, 0, 52) | 0;\n l = G() | 0 | c & -15728641;\n k = cd(7, 0, (14 - i | 0) * 3 | 0) | 0;\n Xb((j | a) & ~k, l & ~(G() | 0), d);\n S = m;\n return;\n } else f = 1;\n } else f = 0;\n while (0);\n Tb(a, c, g);\n if (f) {\n bb(g, k, l);\n j = 5;\n } else {\n fb(g, k, l);\n j = 6;\n }\n b: do if (la(h) | 0) {\n if (!i) e = 20;\n else {\n e = 1;\n while(true){\n h = cd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n if (!((h & a | 0) == 0 & ((G() | 0) & c | 0) == 0)) {\n e = 8;\n break b;\n }\n if (e >>> 0 < i >>> 0) e = e + 1 | 0;\n else {\n e = 20;\n break;\n }\n }\n }\n } else e = 8;\n while (0);\n gd(d | 0, -1, e | 0);\n if (f) {\n f = 0;\n do {\n g = l + (f << 4) | 0;\n db(g, b[k >> 2] | 0);\n g = b[g >> 2] | 0;\n e = 0;\n while(true){\n h = d + (e << 2) | 0;\n i = b[h >> 2] | 0;\n if ((i | 0) == -1 | (i | 0) == (g | 0)) break;\n else e = e + 1 | 0;\n }\n b[h >> 2] = g;\n f = f + 1 | 0;\n }while ((f | 0) != (j | 0));\n } else {\n f = 0;\n do {\n g = l + (f << 4) | 0;\n cb(g, b[k >> 2] | 0, 0, 1);\n g = b[g >> 2] | 0;\n e = 0;\n while(true){\n h = d + (e << 2) | 0;\n i = b[h >> 2] | 0;\n if ((i | 0) == -1 | (i | 0) == (g | 0)) break;\n else e = e + 1 | 0;\n }\n b[h >> 2] = g;\n f = f + 1 | 0;\n }while ((f | 0) != (j | 0));\n }\n S = m;\n return;\n }\n function Yb() {\n return 12;\n }\n function Zb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0;\n cd(a | 0, 0, 52);\n i = G() | 134225919;\n if ((a | 0) < 1) {\n e = 0;\n d = 0;\n do {\n if (la(e) | 0) {\n cd(e | 0, 0, 45);\n h = i | (G() | 0);\n a = c + (d << 3) | 0;\n b[a >> 2] = -1;\n b[a + 4 >> 2] = h;\n d = d + 1 | 0;\n }\n e = e + 1 | 0;\n }while ((e | 0) != 122);\n return;\n }\n h = 0;\n d = 0;\n do {\n if (la(h) | 0) {\n cd(h | 0, 0, 45);\n e = 1;\n f = -1;\n g = i | (G() | 0);\n while(true){\n j = cd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n f = f & ~j;\n g = g & ~(G() | 0);\n if ((e | 0) == (a | 0)) break;\n else e = e + 1 | 0;\n }\n j = c + (d << 3) | 0;\n b[j >> 2] = f;\n b[j + 4 >> 2] = g;\n d = d + 1 | 0;\n }\n h = h + 1 | 0;\n }while ((h | 0) != 122);\n return;\n }\n function _b(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0;\n i = S;\n S = S + 64 | 0;\n h = i;\n if ((a | 0) == (d | 0) & (c | 0) == (e | 0) | (false | (c & 2013265920 | 0) != 134217728 | (false | (e & 2013265920 | 0) != 134217728))) {\n h = 0;\n S = i;\n return h | 0;\n }\n f = bd(a | 0, c | 0, 52) | 0;\n G();\n f = f & 15;\n g = bd(d | 0, e | 0, 52) | 0;\n G();\n if ((f | 0) != (g & 15 | 0)) {\n h = 0;\n S = i;\n return h | 0;\n }\n g = f + -1 | 0;\n if (f >>> 0 > 1 ? (k = Bb(a, c, g) | 0, j = G() | 0, g = Bb(d, e, g) | 0, (k | 0) == (g | 0) & (j | 0) == (G() | 0)) : 0) {\n g = (f ^ 15) * 3 | 0;\n f = bd(a | 0, c | 0, g | 0) | 0;\n G();\n f = f & 7;\n g = bd(d | 0, e | 0, g | 0) | 0;\n G();\n g = g & 7;\n if ((f | 0) == 0 | (g | 0) == 0) {\n k = 1;\n S = i;\n return k | 0;\n }\n if ((b[21136 + (f << 2) >> 2] | 0) == (g | 0)) {\n k = 1;\n S = i;\n return k | 0;\n }\n if ((b[21168 + (f << 2) >> 2] | 0) == (g | 0)) {\n k = 1;\n S = i;\n return k | 0;\n }\n }\n f = h;\n g = f + 56 | 0;\n do {\n b[f >> 2] = 0;\n f = f + 4 | 0;\n }while ((f | 0) < (g | 0));\n $(a, c, 1, h);\n k = h;\n if (((((!((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0) ? (k = h + 8 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 16 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 24 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 32 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 40 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) {\n f = h + 48 | 0;\n f = ((b[f >> 2] | 0) == (d | 0) ? (b[f + 4 >> 2] | 0) == (e | 0) : 0) & 1;\n } else f = 1;\n k = f;\n S = i;\n return k | 0;\n }\n function $b(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0;\n k = S;\n S = S + 16 | 0;\n h = k;\n if (!(_b(a, c, d, e) | 0)) {\n i = 0;\n j = 0;\n F(i | 0);\n S = k;\n return j | 0;\n }\n i = c & -2130706433;\n f = (Eb(a, c) | 0) == 0;\n f = f ? 1 : 2;\n while(true){\n b[h >> 2] = 0;\n l = da(a, c, f, h) | 0;\n g = f + 1 | 0;\n if ((l | 0) == (d | 0) & (G() | 0) == (e | 0)) break;\n if (g >>> 0 < 7) f = g;\n else {\n f = 0;\n a = 0;\n j = 6;\n break;\n }\n }\n if ((j | 0) == 6) {\n F(f | 0);\n S = k;\n return a | 0;\n }\n l = cd(f | 0, 0, 56) | 0;\n j = i | (G() | 0) | 268435456;\n l = a | l;\n F(j | 0);\n S = k;\n return l | 0;\n }\n function ac(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n c = true & (b & 2013265920 | 0) == 268435456;\n F((c ? b & -2130706433 | 134217728 : 0) | 0);\n return (c ? a : 0) | 0;\n }\n function bc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0;\n e = S;\n S = S + 16 | 0;\n d = e;\n if (!(true & (c & 2013265920 | 0) == 268435456)) {\n c = 0;\n d = 0;\n F(c | 0);\n S = e;\n return d | 0;\n }\n f = bd(a | 0, c | 0, 56) | 0;\n G();\n b[d >> 2] = 0;\n d = da(a, c & -2130706433 | 134217728, f & 7, d) | 0;\n c = G() | 0;\n F(c | 0);\n S = e;\n return d | 0;\n }\n function cc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n if (!(true & (b & 2013265920 | 0) == 268435456)) {\n c = 0;\n return c | 0;\n }\n c = bd(a | 0, b | 0, 56) | 0;\n G();\n switch(c & 7){\n case 0:\n case 7:\n c = 0;\n return c | 0;\n default:\n }\n c = b & -2130706433 | 134217728;\n if (true & (b & 117440512 | 0) == 16777216 & (Eb(a, c) | 0) != 0) {\n c = 0;\n return c | 0;\n }\n c = Ab(a, c) | 0;\n return c | 0;\n }\n function dc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0;\n g = S;\n S = S + 16 | 0;\n e = g;\n h = true & (c & 2013265920 | 0) == 268435456;\n f = c & -2130706433 | 134217728;\n i = d;\n b[i >> 2] = h ? a : 0;\n b[i + 4 >> 2] = h ? f : 0;\n if (h) {\n c = bd(a | 0, c | 0, 56) | 0;\n G();\n b[e >> 2] = 0;\n a = da(a, f, c & 7, e) | 0;\n c = G() | 0;\n } else {\n a = 0;\n c = 0;\n }\n i = d + 8 | 0;\n b[i >> 2] = a;\n b[i + 4 >> 2] = c;\n S = g;\n return;\n }\n function ec(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0;\n f = (Eb(a, c) | 0) == 0;\n c = c & -2130706433;\n e = d;\n b[e >> 2] = f ? a : 0;\n b[e + 4 >> 2] = f ? c | 285212672 : 0;\n e = d + 8 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 301989888;\n e = d + 16 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 318767104;\n e = d + 24 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 335544320;\n e = d + 32 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 352321536;\n d = d + 40 | 0;\n b[d >> 2] = a;\n b[d + 4 >> 2] = c | 369098752;\n return;\n }\n function fc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0, h = 0, i = 0;\n h = S;\n S = S + 16 | 0;\n g = h;\n e = bd(a | 0, c | 0, 56) | 0;\n G();\n i = true & (c & 2013265920 | 0) == 268435456;\n f = i ? a : 0;\n a = i ? c & -2130706433 | 134217728 : 0;\n c = Kc(f, a, e & 7) | 0;\n if ((c | 0) == -1) {\n b[d >> 2] = 0;\n S = h;\n return;\n }\n Tb(f, a, g);\n e = bd(f | 0, a | 0, 52) | 0;\n G();\n e = e & 15;\n if (!(Eb(f, a) | 0)) eb(g, e, c, 2, d);\n else ab(g, e, c, 2, d);\n S = h;\n return;\n }\n function gc(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0;\n c = Xc(1, 12) | 0;\n if (!c) H(22691, 22646, 49, 22704);\n d = a + 4 | 0;\n e = b[d >> 2] | 0;\n if (e | 0) {\n e = e + 8 | 0;\n b[e >> 2] = c;\n b[d >> 2] = c;\n return c | 0;\n }\n if (b[a >> 2] | 0) H(22721, 22646, 61, 22744);\n e = a;\n b[e >> 2] = c;\n b[d >> 2] = c;\n return c | 0;\n }\n function hc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0;\n e = Vc(24) | 0;\n if (!e) H(22758, 22646, 78, 22772);\n b[e >> 2] = b[c >> 2];\n b[e + 4 >> 2] = b[c + 4 >> 2];\n b[e + 8 >> 2] = b[c + 8 >> 2];\n b[e + 12 >> 2] = b[c + 12 >> 2];\n b[e + 16 >> 2] = 0;\n c = a + 4 | 0;\n d = b[c >> 2] | 0;\n if (d | 0) {\n b[d + 16 >> 2] = e;\n b[c >> 2] = e;\n return e | 0;\n }\n if (b[a >> 2] | 0) H(22787, 22646, 82, 22772);\n b[a >> 2] = e;\n b[c >> 2] = e;\n return e | 0;\n }\n function ic(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0;\n if (!a) return;\n e = 1;\n while(true){\n c = b[a >> 2] | 0;\n if (c | 0) do {\n d = b[c >> 2] | 0;\n if (d | 0) do {\n f = d;\n d = b[d + 16 >> 2] | 0;\n Wc(f);\n }while ((d | 0) != 0);\n f = c;\n c = b[c + 8 >> 2] | 0;\n Wc(f);\n }while ((c | 0) != 0);\n c = a;\n a = b[a + 8 >> 2] | 0;\n if (!e) Wc(c);\n if (!a) break;\n else e = 0;\n }\n return;\n }\n function jc(a) {\n a = a | 0;\n var c = 0, d = 0, f = 0, g = 0, h = 0.0, i = 0, j = 0.0, k = 0.0, l = 0, m = 0, n = 0, o = 0, p = 0, r = 0, s = 0.0, t = 0.0, u = 0.0, v = 0.0, w = 0.0, x = 0.0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, I = 0, J = 0, K = 0;\n g = a + 8 | 0;\n if (b[g >> 2] | 0) {\n K = 1;\n return K | 0;\n }\n f = b[a >> 2] | 0;\n if (!f) {\n K = 0;\n return K | 0;\n }\n c = f;\n d = 0;\n do {\n d = d + 1 | 0;\n c = b[c + 8 >> 2] | 0;\n }while ((c | 0) != 0);\n if (d >>> 0 < 2) {\n K = 0;\n return K | 0;\n }\n I = Vc(d << 2) | 0;\n if (!I) H(22807, 22646, 317, 22826);\n G = Vc(d << 5) | 0;\n if (!G) H(22848, 22646, 321, 22826);\n b[a >> 2] = 0;\n z = a + 4 | 0;\n b[z >> 2] = 0;\n b[g >> 2] = 0;\n d = 0;\n F = 0;\n y = 0;\n n = 0;\n a: while(true){\n m = b[f >> 2] | 0;\n if (m) {\n h = 0.0;\n i = m;\n do {\n k = +e[i + 8 >> 3];\n c = i;\n i = b[i + 16 >> 2] | 0;\n l = (i | 0) == 0;\n g = l ? m : i;\n j = +e[g + 8 >> 3];\n if (+q(+(k - j)) > 3.141592653589793) {\n K = 14;\n break;\n }\n h = h + (j - k) * (+e[c >> 3] + +e[g >> 3]);\n }while (!l);\n if ((K | 0) == 14) {\n K = 0;\n h = 0.0;\n c = m;\n do {\n x = +e[c + 8 >> 3];\n E = c + 16 | 0;\n D = b[E >> 2] | 0;\n D = (D | 0) == 0 ? m : D;\n w = +e[D + 8 >> 3];\n h = h + (+e[c >> 3] + +e[D >> 3]) * ((w < 0.0 ? w + 6.283185307179586 : w) - (x < 0.0 ? x + 6.283185307179586 : x));\n c = b[((c | 0) == 0 ? f : E) >> 2] | 0;\n }while ((c | 0) != 0);\n }\n if (h > 0.0) {\n b[I + (F << 2) >> 2] = f;\n F = F + 1 | 0;\n g = y;\n c = n;\n } else K = 19;\n } else K = 19;\n if ((K | 0) == 19) {\n K = 0;\n do if (!d) {\n if (!n) {\n if (!(b[a >> 2] | 0)) {\n g = z;\n i = a;\n c = f;\n d = a;\n break;\n } else {\n K = 27;\n break a;\n }\n } else {\n g = z;\n i = n + 8 | 0;\n c = f;\n d = a;\n break;\n }\n } else {\n c = d + 8 | 0;\n if (b[c >> 2] | 0) {\n K = 21;\n break a;\n }\n d = Xc(1, 12) | 0;\n if (!d) {\n K = 23;\n break a;\n }\n b[c >> 2] = d;\n g = d + 4 | 0;\n i = d;\n c = n;\n }\n while (0);\n b[i >> 2] = f;\n b[g >> 2] = f;\n i = G + (y << 5) | 0;\n l = b[f >> 2] | 0;\n if (l) {\n m = G + (y << 5) + 8 | 0;\n e[m >> 3] = 1797693134862315708145274.0e284;\n n = G + (y << 5) + 24 | 0;\n e[n >> 3] = 1797693134862315708145274.0e284;\n e[i >> 3] = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n o = G + (y << 5) + 16 | 0;\n e[o >> 3] = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n u = 1797693134862315708145274.0e284;\n v = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n g = 0;\n p = l;\n k = 1797693134862315708145274.0e284;\n s = 1797693134862315708145274.0e284;\n t = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n j = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n while(true){\n h = +e[p >> 3];\n x = +e[p + 8 >> 3];\n p = b[p + 16 >> 2] | 0;\n r = (p | 0) == 0;\n w = +e[(r ? l : p) + 8 >> 3];\n if (h < k) {\n e[m >> 3] = h;\n k = h;\n }\n if (x < s) {\n e[n >> 3] = x;\n s = x;\n }\n if (h > t) e[i >> 3] = h;\n else h = t;\n if (x > j) {\n e[o >> 3] = x;\n j = x;\n }\n u = x > 0.0 & x < u ? x : u;\n v = x < 0.0 & x > v ? x : v;\n g = g | +q(+(x - w)) > 3.141592653589793;\n if (r) break;\n else t = h;\n }\n if (g) {\n e[o >> 3] = v;\n e[n >> 3] = u;\n }\n } else {\n b[i >> 2] = 0;\n b[i + 4 >> 2] = 0;\n b[i + 8 >> 2] = 0;\n b[i + 12 >> 2] = 0;\n b[i + 16 >> 2] = 0;\n b[i + 20 >> 2] = 0;\n b[i + 24 >> 2] = 0;\n b[i + 28 >> 2] = 0;\n }\n g = y + 1 | 0;\n }\n E = f + 8 | 0;\n f = b[E >> 2] | 0;\n b[E >> 2] = 0;\n if (!f) {\n K = 45;\n break;\n } else {\n y = g;\n n = c;\n }\n }\n if ((K | 0) == 21) H(22624, 22646, 35, 22658);\n else if ((K | 0) == 23) H(22678, 22646, 37, 22658);\n else if ((K | 0) == 27) H(22721, 22646, 61, 22744);\n else if ((K | 0) == 45) {\n b: do if ((F | 0) > 0) {\n E = (g | 0) == 0;\n C = g << 2;\n D = (a | 0) == 0;\n B = 0;\n c = 0;\n while(true){\n A = b[I + (B << 2) >> 2] | 0;\n if (!E) {\n y = Vc(C) | 0;\n if (!y) {\n K = 50;\n break;\n }\n z = Vc(C) | 0;\n if (!z) {\n K = 52;\n break;\n }\n c: do if (!D) {\n g = 0;\n d = 0;\n i = a;\n while(true){\n f = G + (g << 5) | 0;\n if (kc(b[i >> 2] | 0, f, b[A >> 2] | 0) | 0) {\n b[y + (d << 2) >> 2] = i;\n b[z + (d << 2) >> 2] = f;\n r = d + 1 | 0;\n } else r = d;\n i = b[i + 8 >> 2] | 0;\n if (!i) break;\n else {\n g = g + 1 | 0;\n d = r;\n }\n }\n if ((r | 0) > 0) {\n f = b[y >> 2] | 0;\n if ((r | 0) == 1) d = f;\n else {\n o = 0;\n p = -1;\n d = f;\n n = f;\n while(true){\n l = b[n >> 2] | 0;\n f = 0;\n i = 0;\n while(true){\n g = b[b[y + (i << 2) >> 2] >> 2] | 0;\n if ((g | 0) == (l | 0)) m = f;\n else m = f + ((kc(g, b[z + (i << 2) >> 2] | 0, b[l >> 2] | 0) | 0) & 1) | 0;\n i = i + 1 | 0;\n if ((i | 0) == (r | 0)) break;\n else f = m;\n }\n g = (m | 0) > (p | 0);\n d = g ? n : d;\n f = o + 1 | 0;\n if ((f | 0) == (r | 0)) break c;\n o = f;\n p = g ? m : p;\n n = b[y + (f << 2) >> 2] | 0;\n }\n }\n } else d = 0;\n } else d = 0;\n while (0);\n Wc(y);\n Wc(z);\n if (d) {\n g = d + 4 | 0;\n f = b[g >> 2] | 0;\n if (!f) {\n if (b[d >> 2] | 0) {\n K = 70;\n break;\n }\n } else d = f + 8 | 0;\n b[d >> 2] = A;\n b[g >> 2] = A;\n } else K = 73;\n } else K = 73;\n if ((K | 0) == 73) {\n K = 0;\n c = b[A >> 2] | 0;\n if (c | 0) do {\n z = c;\n c = b[c + 16 >> 2] | 0;\n Wc(z);\n }while ((c | 0) != 0);\n Wc(A);\n c = 2;\n }\n B = B + 1 | 0;\n if ((B | 0) >= (F | 0)) {\n J = c;\n break b;\n }\n }\n if ((K | 0) == 50) H(22863, 22646, 249, 22882);\n else if ((K | 0) == 52) H(22901, 22646, 252, 22882);\n else if ((K | 0) == 70) H(22721, 22646, 61, 22744);\n } else J = 0;\n while (0);\n Wc(I);\n Wc(G);\n K = J;\n return K | 0;\n }\n return 0;\n }\n function kc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0.0, g = 0.0, h = 0.0, i = 0.0, j = 0.0, k = 0.0, l = 0.0, m = 0;\n if (!(xa(c, d) | 0)) {\n a = 0;\n return a | 0;\n }\n c = wa(c) | 0;\n l = +e[d >> 3];\n f = +e[d + 8 >> 3];\n f = c & f < 0.0 ? f + 6.283185307179586 : f;\n a = b[a >> 2] | 0;\n if (!a) {\n a = 0;\n return a | 0;\n }\n if (c) {\n c = 0;\n d = a;\n a: while(true){\n while(true){\n i = +e[d >> 3];\n k = +e[d + 8 >> 3];\n d = d + 16 | 0;\n m = b[d >> 2] | 0;\n m = (m | 0) == 0 ? a : m;\n h = +e[m >> 3];\n g = +e[m + 8 >> 3];\n if (i > h) {\n j = i;\n i = k;\n } else {\n j = h;\n h = i;\n i = g;\n g = k;\n }\n if (!(l < h | l > j)) break;\n d = b[d >> 2] | 0;\n if (!d) {\n d = 22;\n break a;\n }\n }\n k = g < 0.0 ? g + 6.283185307179586 : g;\n i = i < 0.0 ? i + 6.283185307179586 : i;\n f = i == f | k == f ? f + -0.0000000000000002220446049250313 : f;\n k = k + (l - h) / (j - h) * (i - k);\n if ((k < 0.0 ? k + 6.283185307179586 : k) > f) c = c ^ 1;\n d = b[d >> 2] | 0;\n if (!d) {\n d = 22;\n break;\n }\n }\n if ((d | 0) == 22) return c | 0;\n } else {\n c = 0;\n d = a;\n b: while(true){\n while(true){\n i = +e[d >> 3];\n k = +e[d + 8 >> 3];\n d = d + 16 | 0;\n m = b[d >> 2] | 0;\n m = (m | 0) == 0 ? a : m;\n h = +e[m >> 3];\n g = +e[m + 8 >> 3];\n if (i > h) {\n j = i;\n i = k;\n } else {\n j = h;\n h = i;\n i = g;\n g = k;\n }\n if (!(l < h | l > j)) break;\n d = b[d >> 2] | 0;\n if (!d) {\n d = 22;\n break b;\n }\n }\n f = i == f | g == f ? f + -0.0000000000000002220446049250313 : f;\n if (g + (l - h) / (j - h) * (i - g) > f) c = c ^ 1;\n d = b[d >> 2] | 0;\n if (!d) {\n d = 22;\n break;\n }\n }\n if ((d | 0) == 22) return c | 0;\n }\n return 0;\n }\n function lc(c, d, e, f, g) {\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n g = g | 0;\n var h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0;\n u = S;\n S = S + 32 | 0;\n t = u + 16 | 0;\n s = u;\n h = bd(c | 0, d | 0, 52) | 0;\n G();\n h = h & 15;\n p = bd(e | 0, f | 0, 52) | 0;\n G();\n if ((h | 0) != (p & 15 | 0)) {\n t = 1;\n S = u;\n return t | 0;\n }\n l = bd(c | 0, d | 0, 45) | 0;\n G();\n l = l & 127;\n m = bd(e | 0, f | 0, 45) | 0;\n G();\n m = m & 127;\n p = (l | 0) != (m | 0);\n if (p) {\n j = ta(l, m) | 0;\n if ((j | 0) == 7) {\n t = 2;\n S = u;\n return t | 0;\n }\n k = ta(m, l) | 0;\n if ((k | 0) == 7) H(22925, 22949, 151, 22959);\n else {\n q = j;\n i = k;\n }\n } else {\n q = 0;\n i = 0;\n }\n n = la(l) | 0;\n o = la(m) | 0;\n b[t >> 2] = 0;\n b[t + 4 >> 2] = 0;\n b[t + 8 >> 2] = 0;\n b[t + 12 >> 2] = 0;\n do if (!q) {\n Sb(e, f, t);\n if ((n | 0) != 0 & (o | 0) != 0) {\n if ((m | 0) != (l | 0)) H(23077, 22949, 243, 22959);\n i = Kb(c, d) | 0;\n h = Kb(e, f) | 0;\n if (!(a[22032 + (i * 7 | 0) + h >> 0] | 0)) {\n i = b[21200 + (i * 28 | 0) + (h << 2) >> 2] | 0;\n if ((i | 0) > 0) {\n j = t + 4 | 0;\n h = 0;\n do {\n Oa(j);\n h = h + 1 | 0;\n }while ((h | 0) != (i | 0));\n r = 50;\n } else r = 50;\n } else h = 5;\n } else r = 50;\n } else {\n m = b[4304 + (l * 28 | 0) + (q << 2) >> 2] | 0;\n j = (m | 0) > 0;\n if (!o) {\n if (j) {\n l = 0;\n k = e;\n j = f;\n do {\n k = Ob(k, j) | 0;\n j = G() | 0;\n i = Qa(i) | 0;\n l = l + 1 | 0;\n }while ((l | 0) != (m | 0));\n m = i;\n l = k;\n k = j;\n } else {\n m = i;\n l = e;\n k = f;\n }\n } else if (j) {\n l = 0;\n k = e;\n j = f;\n do {\n k = Nb(k, j) | 0;\n j = G() | 0;\n i = Qa(i) | 0;\n if ((i | 0) == 1) i = Qa(1) | 0;\n l = l + 1 | 0;\n }while ((l | 0) != (m | 0));\n m = i;\n l = k;\n k = j;\n } else {\n m = i;\n l = e;\n k = f;\n }\n Sb(l, k, t);\n if (!p) H(22972, 22949, 181, 22959);\n j = (n | 0) != 0;\n i = (o | 0) != 0;\n if (j & i) H(22999, 22949, 182, 22959);\n if (!j) {\n if (i) {\n i = Kb(l, k) | 0;\n if (a[22032 + (i * 7 | 0) + m >> 0] | 0) {\n h = 4;\n break;\n }\n l = 0;\n k = b[21200 + (m * 28 | 0) + (i << 2) >> 2] | 0;\n r = 26;\n } else i = 0;\n } else {\n i = Kb(c, d) | 0;\n if (a[22032 + (i * 7 | 0) + q >> 0] | 0) {\n h = 3;\n break;\n }\n k = b[21200 + (i * 28 | 0) + (q << 2) >> 2] | 0;\n l = k;\n r = 26;\n }\n if ((r | 0) == 26) {\n if ((k | 0) <= -1) H(23030, 22949, 212, 22959);\n if ((l | 0) <= -1) H(23053, 22949, 213, 22959);\n if ((k | 0) > 0) {\n j = t + 4 | 0;\n i = 0;\n do {\n Oa(j);\n i = i + 1 | 0;\n }while ((i | 0) != (k | 0));\n i = l;\n } else i = l;\n }\n b[s >> 2] = 0;\n b[s + 4 >> 2] = 0;\n b[s + 8 >> 2] = 0;\n Ma(s, q);\n if (h | 0) while(true){\n if (!(Qb(h) | 0)) La(s);\n else Ka(s);\n if ((h | 0) > 1) h = h + -1 | 0;\n else break;\n }\n if ((i | 0) > 0) {\n h = 0;\n do {\n Oa(s);\n h = h + 1 | 0;\n }while ((h | 0) != (i | 0));\n }\n r = t + 4 | 0;\n Ea(r, s, r);\n Ca(r);\n r = 50;\n }\n while (0);\n if ((r | 0) == 50) {\n h = t + 4 | 0;\n b[g >> 2] = b[h >> 2];\n b[g + 4 >> 2] = b[h + 4 >> 2];\n b[g + 8 >> 2] = b[h + 8 >> 2];\n h = 0;\n }\n t = h;\n S = u;\n return t | 0;\n }\n function mc(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0;\n p = S;\n S = S + 48 | 0;\n h = p + 36 | 0;\n i = p + 24 | 0;\n j = p + 12 | 0;\n k = p;\n g = bd(a | 0, c | 0, 52) | 0;\n G();\n g = g & 15;\n n = bd(a | 0, c | 0, 45) | 0;\n G();\n n = n & 127;\n l = la(n) | 0;\n cd(g | 0, 0, 52);\n r = G() | 134225919;\n q = e;\n b[q >> 2] = -1;\n b[q + 4 >> 2] = r;\n if (!g) {\n if ((b[d >> 2] | 0) > 1) {\n r = 1;\n S = p;\n return r | 0;\n }\n if ((b[d + 4 >> 2] | 0) > 1) {\n r = 1;\n S = p;\n return r | 0;\n }\n if ((b[d + 8 >> 2] | 0) > 1) {\n r = 1;\n S = p;\n return r | 0;\n }\n f = sa(n, Ha(d) | 0) | 0;\n if ((f | 0) == 127) {\n r = 1;\n S = p;\n return r | 0;\n }\n o = cd(f | 0, 0, 45) | 0;\n q = G() | 0;\n n = e;\n q = b[n + 4 >> 2] & -1040385 | q;\n r = e;\n b[r >> 2] = b[n >> 2] | o;\n b[r + 4 >> 2] = q;\n r = 0;\n S = p;\n return r | 0;\n }\n b[h >> 2] = b[d >> 2];\n b[h + 4 >> 2] = b[d + 4 >> 2];\n b[h + 8 >> 2] = b[d + 8 >> 2];\n while(true){\n b[i >> 2] = b[h >> 2];\n b[i + 4 >> 2] = b[h + 4 >> 2];\n b[i + 8 >> 2] = b[h + 8 >> 2];\n if (!(Qb(g) | 0)) {\n Ja(h);\n b[j >> 2] = b[h >> 2];\n b[j + 4 >> 2] = b[h + 4 >> 2];\n b[j + 8 >> 2] = b[h + 8 >> 2];\n La(j);\n } else {\n Ia(h);\n b[j >> 2] = b[h >> 2];\n b[j + 4 >> 2] = b[h + 4 >> 2];\n b[j + 8 >> 2] = b[h + 8 >> 2];\n Ka(j);\n }\n Fa(i, j, k);\n Ca(k);\n q = e;\n s = b[q >> 2] | 0;\n q = b[q + 4 >> 2] | 0;\n t = (15 - g | 0) * 3 | 0;\n d = cd(7, 0, t | 0) | 0;\n q = q & ~(G() | 0);\n t = cd(Ha(k) | 0, 0, t | 0) | 0;\n q = G() | 0 | q;\n r = e;\n b[r >> 2] = t | s & ~d;\n b[r + 4 >> 2] = q;\n if ((g | 0) > 1) g = g + -1 | 0;\n else break;\n }\n a: do if (((b[h >> 2] | 0) <= 1 ? (b[h + 4 >> 2] | 0) <= 1 : 0) ? (b[h + 8 >> 2] | 0) <= 1 : 0) {\n g = Ha(h) | 0;\n i = sa(n, g) | 0;\n if ((i | 0) == 127) k = 0;\n else k = la(i) | 0;\n b: do if (!g) {\n if ((l | 0) != 0 & (k | 0) != 0) {\n t = Kb(a, c) | 0;\n g = e;\n g = 21408 + (t * 28 | 0) + ((Kb(b[g >> 2] | 0, b[g + 4 >> 2] | 0) | 0) << 2) | 0;\n g = b[g >> 2] | 0;\n if ((g | 0) <= -1) H(23201, 22949, 433, 23134);\n if (!g) {\n f = i;\n g = 55;\n } else {\n h = e;\n f = 0;\n d = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n do {\n d = Mb(d, h) | 0;\n h = G() | 0;\n t = e;\n b[t >> 2] = d;\n b[t + 4 >> 2] = h;\n f = f + 1 | 0;\n }while ((f | 0) < (g | 0));\n f = i;\n g = 54;\n }\n } else {\n f = i;\n g = 54;\n }\n } else {\n if (l) {\n h = 21408 + ((Kb(a, c) | 0) * 28 | 0) + (g << 2) | 0;\n h = b[h >> 2] | 0;\n if ((h | 0) > 0) {\n d = 0;\n do {\n g = Pa(g) | 0;\n d = d + 1 | 0;\n }while ((d | 0) != (h | 0));\n }\n if ((g | 0) == 1) {\n f = 3;\n break a;\n }\n d = sa(n, g) | 0;\n if ((d | 0) == 127) H(23104, 22949, 376, 23134);\n if (!(la(d) | 0)) {\n o = h;\n m = g;\n f = d;\n } else H(23147, 22949, 377, 23134);\n } else {\n o = 0;\n m = g;\n f = i;\n }\n j = b[4304 + (n * 28 | 0) + (m << 2) >> 2] | 0;\n if ((j | 0) <= -1) H(23178, 22949, 384, 23134);\n if (!k) {\n if ((o | 0) <= -1) H(23030, 22949, 417, 23134);\n if (o | 0) {\n h = e;\n g = 0;\n d = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n do {\n d = Mb(d, h) | 0;\n h = G() | 0;\n t = e;\n b[t >> 2] = d;\n b[t + 4 >> 2] = h;\n g = g + 1 | 0;\n }while ((g | 0) < (o | 0));\n }\n if ((j | 0) <= 0) {\n g = 54;\n break;\n }\n h = e;\n g = 0;\n d = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n while(true){\n d = Mb(d, h) | 0;\n h = G() | 0;\n t = e;\n b[t >> 2] = d;\n b[t + 4 >> 2] = h;\n g = g + 1 | 0;\n if ((g | 0) == (j | 0)) {\n g = 54;\n break b;\n }\n }\n }\n i = ta(f, n) | 0;\n if ((i | 0) == 7) H(22925, 22949, 393, 23134);\n g = e;\n d = b[g >> 2] | 0;\n g = b[g + 4 >> 2] | 0;\n if ((j | 0) > 0) {\n h = 0;\n do {\n d = Mb(d, g) | 0;\n g = G() | 0;\n t = e;\n b[t >> 2] = d;\n b[t + 4 >> 2] = g;\n h = h + 1 | 0;\n }while ((h | 0) != (j | 0));\n }\n d = Kb(d, g) | 0;\n t = ma(f) | 0;\n d = b[(t ? 21824 : 21616) + (i * 28 | 0) + (d << 2) >> 2] | 0;\n if ((d | 0) <= -1) H(23030, 22949, 412, 23134);\n if (!d) g = 54;\n else {\n i = e;\n g = 0;\n h = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n do {\n h = Lb(h, i) | 0;\n i = G() | 0;\n t = e;\n b[t >> 2] = h;\n b[t + 4 >> 2] = i;\n g = g + 1 | 0;\n }while ((g | 0) < (d | 0));\n g = 54;\n }\n }\n while (0);\n if ((g | 0) == 54) {\n if (k) g = 55;\n }\n if ((g | 0) == 55) {\n t = e;\n if ((Kb(b[t >> 2] | 0, b[t + 4 >> 2] | 0) | 0) == 1) {\n f = 4;\n break;\n }\n }\n t = e;\n r = b[t >> 2] | 0;\n t = b[t + 4 >> 2] & -1040385;\n s = cd(f | 0, 0, 45) | 0;\n t = t | (G() | 0);\n f = e;\n b[f >> 2] = r | s;\n b[f + 4 >> 2] = t;\n f = 0;\n } else f = 2;\n while (0);\n t = f;\n S = p;\n return t | 0;\n }\n function nc(a, b, c, d, e) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0;\n g = S;\n S = S + 16 | 0;\n f = g;\n a = lc(a, b, c, d, f) | 0;\n if (!a) {\n Ua(f, e);\n a = 0;\n }\n S = g;\n return a | 0;\n }\n function oc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0;\n e = S;\n S = S + 16 | 0;\n f = e;\n Va(c, f);\n d = mc(a, b, f, d) | 0;\n S = e;\n return d | 0;\n }\n function pc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0;\n g = S;\n S = S + 32 | 0;\n e = g + 12 | 0;\n f = g;\n if ((lc(a, b, a, b, e) | 0) == 0 ? (lc(a, b, c, d, f) | 0) == 0 : 0) a = Ta(e, f) | 0;\n else a = -1;\n S = g;\n return a | 0;\n }\n function qc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0;\n g = S;\n S = S + 32 | 0;\n e = g + 12 | 0;\n f = g;\n if ((lc(a, b, a, b, e) | 0) == 0 ? (lc(a, b, c, d, f) | 0) == 0 : 0) a = Ta(e, f) | 0;\n else a = -1;\n S = g;\n return (a >>> 31 ^ 1) + a | 0;\n }\n function rc(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0, h = 0, i = 0.0, j = 0.0, k = 0, l = 0, m = 0, n = 0, o = 0.0, p = 0.0, r = 0.0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0.0;\n x = S;\n S = S + 48 | 0;\n g = x + 24 | 0;\n h = x + 12 | 0;\n w = x;\n if ((lc(a, c, a, c, g) | 0) == 0 ? (lc(a, c, d, e, h) | 0) == 0 : 0) {\n v = Ta(g, h) | 0;\n if ((v | 0) < 0) {\n w = v;\n S = x;\n return w | 0;\n }\n b[g >> 2] = 0;\n b[g + 4 >> 2] = 0;\n b[g + 8 >> 2] = 0;\n b[h >> 2] = 0;\n b[h + 4 >> 2] = 0;\n b[h + 8 >> 2] = 0;\n lc(a, c, a, c, g);\n lc(a, c, d, e, h);\n Wa(g);\n Wa(h);\n if (!v) {\n e = g + 4 | 0;\n n = g + 8 | 0;\n s = e;\n t = n;\n u = g;\n d = b[g >> 2] | 0;\n e = b[e >> 2] | 0;\n g = b[n >> 2] | 0;\n p = 0.0;\n r = 0.0;\n o = 0.0;\n } else {\n l = b[g >> 2] | 0;\n o = +(v | 0);\n s = g + 4 | 0;\n m = b[s >> 2] | 0;\n t = g + 8 | 0;\n n = b[t >> 2] | 0;\n u = g;\n d = l;\n e = m;\n g = n;\n p = +((b[h >> 2] | 0) - l | 0) / o;\n r = +((b[h + 4 >> 2] | 0) - m | 0) / o;\n o = +((b[h + 8 >> 2] | 0) - n | 0) / o;\n }\n b[w >> 2] = d;\n n = w + 4 | 0;\n b[n >> 2] = e;\n m = w + 8 | 0;\n b[m >> 2] = g;\n l = 0;\n while(true){\n j = +(l | 0);\n y = p * j + +(d | 0);\n i = r * j + +(b[s >> 2] | 0);\n j = o * j + +(b[t >> 2] | 0);\n e = ~~+ed(+y);\n h = ~~+ed(+i);\n d = ~~+ed(+j);\n y = +q(+(+(e | 0) - y));\n i = +q(+(+(h | 0) - i));\n j = +q(+(+(d | 0) - j));\n do if (!(y > i & y > j)) {\n k = 0 - e | 0;\n if (i > j) {\n g = k - d | 0;\n break;\n } else {\n g = h;\n d = k - h | 0;\n break;\n }\n } else {\n e = 0 - (h + d) | 0;\n g = h;\n }\n while (0);\n b[w >> 2] = e;\n b[n >> 2] = g;\n b[m >> 2] = d;\n Xa(w);\n mc(a, c, w, f + (l << 3) | 0);\n if ((l | 0) == (v | 0)) break;\n l = l + 1 | 0;\n d = b[u >> 2] | 0;\n }\n w = 0;\n S = x;\n return w | 0;\n }\n w = -1;\n S = x;\n return w | 0;\n }\n function sc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n if (!b) {\n c = 1;\n return c | 0;\n }\n c = a;\n a = 1;\n do {\n a = B((b & 1 | 0) == 0 ? 1 : c, a) | 0;\n b = b >> 1;\n c = B(c, c) | 0;\n }while ((b | 0) != 0);\n return a | 0;\n }\n function tc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0.0, g = 0.0, h = 0.0, i = 0.0, j = 0.0, k = 0.0, l = 0, m = 0, n = 0, o = 0.0;\n if (!(xa(c, d) | 0)) {\n n = 0;\n return n | 0;\n }\n c = wa(c) | 0;\n o = +e[d >> 3];\n f = +e[d + 8 >> 3];\n f = c & f < 0.0 ? f + 6.283185307179586 : f;\n n = b[a >> 2] | 0;\n if ((n | 0) <= 0) {\n n = 0;\n return n | 0;\n }\n m = b[a + 4 >> 2] | 0;\n if (c) {\n c = 0;\n d = -1;\n a = 0;\n a: while(true){\n l = a;\n while(true){\n i = +e[m + (l << 4) >> 3];\n k = +e[m + (l << 4) + 8 >> 3];\n a = (d + 2 | 0) % (n | 0) | 0;\n h = +e[m + (a << 4) >> 3];\n g = +e[m + (a << 4) + 8 >> 3];\n if (i > h) {\n j = i;\n i = k;\n } else {\n j = h;\n h = i;\n i = g;\n g = k;\n }\n if (!(o < h | o > j)) break;\n d = l + 1 | 0;\n if ((d | 0) < (n | 0)) {\n a = l;\n l = d;\n d = a;\n } else {\n d = 22;\n break a;\n }\n }\n k = g < 0.0 ? g + 6.283185307179586 : g;\n i = i < 0.0 ? i + 6.283185307179586 : i;\n f = i == f | k == f ? f + -0.0000000000000002220446049250313 : f;\n k = k + (o - h) / (j - h) * (i - k);\n if ((k < 0.0 ? k + 6.283185307179586 : k) > f) c = c ^ 1;\n a = l + 1 | 0;\n if ((a | 0) >= (n | 0)) {\n d = 22;\n break;\n } else d = l;\n }\n if ((d | 0) == 22) return c | 0;\n } else {\n c = 0;\n d = -1;\n a = 0;\n b: while(true){\n l = a;\n while(true){\n i = +e[m + (l << 4) >> 3];\n k = +e[m + (l << 4) + 8 >> 3];\n a = (d + 2 | 0) % (n | 0) | 0;\n h = +e[m + (a << 4) >> 3];\n g = +e[m + (a << 4) + 8 >> 3];\n if (i > h) {\n j = i;\n i = k;\n } else {\n j = h;\n h = i;\n i = g;\n g = k;\n }\n if (!(o < h | o > j)) break;\n d = l + 1 | 0;\n if ((d | 0) < (n | 0)) {\n a = l;\n l = d;\n d = a;\n } else {\n d = 22;\n break b;\n }\n }\n f = i == f | g == f ? f + -0.0000000000000002220446049250313 : f;\n if (g + (o - h) / (j - h) * (i - g) > f) c = c ^ 1;\n a = l + 1 | 0;\n if ((a | 0) >= (n | 0)) {\n d = 22;\n break;\n } else d = l;\n }\n if ((d | 0) == 22) return c | 0;\n }\n return 0;\n }\n function uc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0, f = 0.0, g = 0.0, h = 0.0, i = 0.0, j = 0.0, k = 0.0, l = 0.0, m = 0.0, n = 0, o = 0, p = 0, r = 0, s = 0, t = 0, u = 0, v = 0;\n r = b[a >> 2] | 0;\n if (!r) {\n b[c >> 2] = 0;\n b[c + 4 >> 2] = 0;\n b[c + 8 >> 2] = 0;\n b[c + 12 >> 2] = 0;\n b[c + 16 >> 2] = 0;\n b[c + 20 >> 2] = 0;\n b[c + 24 >> 2] = 0;\n b[c + 28 >> 2] = 0;\n return;\n }\n s = c + 8 | 0;\n e[s >> 3] = 1797693134862315708145274.0e284;\n t = c + 24 | 0;\n e[t >> 3] = 1797693134862315708145274.0e284;\n e[c >> 3] = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n u = c + 16 | 0;\n e[u >> 3] = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n if ((r | 0) <= 0) return;\n o = b[a + 4 >> 2] | 0;\n l = 1797693134862315708145274.0e284;\n m = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n n = 0;\n a = -1;\n h = 1797693134862315708145274.0e284;\n i = 1797693134862315708145274.0e284;\n k = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n f = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n p = 0;\n while(true){\n d = +e[o + (p << 4) >> 3];\n j = +e[o + (p << 4) + 8 >> 3];\n a = a + 2 | 0;\n g = +e[o + (((a | 0) == (r | 0) ? 0 : a) << 4) + 8 >> 3];\n if (d < h) {\n e[s >> 3] = d;\n h = d;\n }\n if (j < i) {\n e[t >> 3] = j;\n i = j;\n }\n if (d > k) e[c >> 3] = d;\n else d = k;\n if (j > f) {\n e[u >> 3] = j;\n f = j;\n }\n l = j > 0.0 & j < l ? j : l;\n m = j < 0.0 & j > m ? j : m;\n n = n | +q(+(j - g)) > 3.141592653589793;\n a = p + 1 | 0;\n if ((a | 0) == (r | 0)) break;\n else {\n v = p;\n k = d;\n p = a;\n a = v;\n }\n }\n if (!n) return;\n e[u >> 3] = m;\n e[t >> 3] = l;\n return;\n }\n function vc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, f = 0, g = 0, h = 0.0, i = 0.0, j = 0.0, k = 0.0, l = 0.0, m = 0.0, n = 0.0, o = 0.0, p = 0.0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0;\n r = b[a >> 2] | 0;\n if (r) {\n s = c + 8 | 0;\n e[s >> 3] = 1797693134862315708145274.0e284;\n t = c + 24 | 0;\n e[t >> 3] = 1797693134862315708145274.0e284;\n e[c >> 3] = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n u = c + 16 | 0;\n e[u >> 3] = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n if ((r | 0) > 0) {\n g = b[a + 4 >> 2] | 0;\n o = 1797693134862315708145274.0e284;\n p = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n f = 0;\n d = -1;\n k = 1797693134862315708145274.0e284;\n l = 1797693134862315708145274.0e284;\n n = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n i = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n v = 0;\n while(true){\n h = +e[g + (v << 4) >> 3];\n m = +e[g + (v << 4) + 8 >> 3];\n z = d + 2 | 0;\n j = +e[g + (((z | 0) == (r | 0) ? 0 : z) << 4) + 8 >> 3];\n if (h < k) {\n e[s >> 3] = h;\n k = h;\n }\n if (m < l) {\n e[t >> 3] = m;\n l = m;\n }\n if (h > n) e[c >> 3] = h;\n else h = n;\n if (m > i) {\n e[u >> 3] = m;\n i = m;\n }\n o = m > 0.0 & m < o ? m : o;\n p = m < 0.0 & m > p ? m : p;\n f = f | +q(+(m - j)) > 3.141592653589793;\n d = v + 1 | 0;\n if ((d | 0) == (r | 0)) break;\n else {\n z = v;\n n = h;\n v = d;\n d = z;\n }\n }\n if (f) {\n e[u >> 3] = p;\n e[t >> 3] = o;\n }\n }\n } else {\n b[c >> 2] = 0;\n b[c + 4 >> 2] = 0;\n b[c + 8 >> 2] = 0;\n b[c + 12 >> 2] = 0;\n b[c + 16 >> 2] = 0;\n b[c + 20 >> 2] = 0;\n b[c + 24 >> 2] = 0;\n b[c + 28 >> 2] = 0;\n }\n z = a + 8 | 0;\n d = b[z >> 2] | 0;\n if ((d | 0) <= 0) return;\n y = a + 12 | 0;\n x = 0;\n do {\n g = b[y >> 2] | 0;\n f = x;\n x = x + 1 | 0;\n t = c + (x << 5) | 0;\n u = b[g + (f << 3) >> 2] | 0;\n if (u) {\n v = c + (x << 5) + 8 | 0;\n e[v >> 3] = 1797693134862315708145274.0e284;\n a = c + (x << 5) + 24 | 0;\n e[a >> 3] = 1797693134862315708145274.0e284;\n e[t >> 3] = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n w = c + (x << 5) + 16 | 0;\n e[w >> 3] = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n if ((u | 0) > 0) {\n r = b[g + (f << 3) + 4 >> 2] | 0;\n o = 1797693134862315708145274.0e284;\n p = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n g = 0;\n f = -1;\n s = 0;\n k = 1797693134862315708145274.0e284;\n l = 1797693134862315708145274.0e284;\n m = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n i = -179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;\n while(true){\n h = +e[r + (s << 4) >> 3];\n n = +e[r + (s << 4) + 8 >> 3];\n f = f + 2 | 0;\n j = +e[r + (((f | 0) == (u | 0) ? 0 : f) << 4) + 8 >> 3];\n if (h < k) {\n e[v >> 3] = h;\n k = h;\n }\n if (n < l) {\n e[a >> 3] = n;\n l = n;\n }\n if (h > m) e[t >> 3] = h;\n else h = m;\n if (n > i) {\n e[w >> 3] = n;\n i = n;\n }\n o = n > 0.0 & n < o ? n : o;\n p = n < 0.0 & n > p ? n : p;\n g = g | +q(+(n - j)) > 3.141592653589793;\n f = s + 1 | 0;\n if ((f | 0) == (u | 0)) break;\n else {\n A = s;\n s = f;\n m = h;\n f = A;\n }\n }\n if (g) {\n e[w >> 3] = p;\n e[a >> 3] = o;\n }\n }\n } else {\n b[t >> 2] = 0;\n b[t + 4 >> 2] = 0;\n b[t + 8 >> 2] = 0;\n b[t + 12 >> 2] = 0;\n b[t + 16 >> 2] = 0;\n b[t + 20 >> 2] = 0;\n b[t + 24 >> 2] = 0;\n b[t + 28 >> 2] = 0;\n d = b[z >> 2] | 0;\n }\n }while ((x | 0) < (d | 0));\n return;\n }\n function wc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0, g = 0;\n if (!(tc(a, c, d) | 0)) {\n f = 0;\n return f | 0;\n }\n f = a + 8 | 0;\n if ((b[f >> 2] | 0) <= 0) {\n f = 1;\n return f | 0;\n }\n e = a + 12 | 0;\n a = 0;\n while(true){\n g = a;\n a = a + 1 | 0;\n if (tc((b[e >> 2] | 0) + (g << 3) | 0, c + (a << 5) | 0, d) | 0) {\n a = 0;\n e = 6;\n break;\n }\n if ((a | 0) >= (b[f >> 2] | 0)) {\n a = 1;\n e = 6;\n break;\n }\n }\n if ((e | 0) == 6) return a | 0;\n return 0;\n }\n function xc() {\n return 8;\n }\n function yc() {\n return 16;\n }\n function zc() {\n return 168;\n }\n function Ac() {\n return 8;\n }\n function Bc() {\n return 16;\n }\n function Cc() {\n return 12;\n }\n function Dc() {\n return 8;\n }\n function Ec(a) {\n a = a | 0;\n var b = 0.0, c = 0.0;\n c = +e[a >> 3];\n b = +e[a + 8 >> 3];\n return + +r(+(c * c + b * b));\n }\n function Fc(a, b, c, d, f) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n var g = 0.0, h = 0.0, i = 0.0, j = 0.0, k = 0.0, l = 0.0, m = 0.0, n = 0.0;\n k = +e[a >> 3];\n j = +e[b >> 3] - k;\n i = +e[a + 8 >> 3];\n h = +e[b + 8 >> 3] - i;\n m = +e[c >> 3];\n g = +e[d >> 3] - m;\n n = +e[c + 8 >> 3];\n l = +e[d + 8 >> 3] - n;\n g = (g * (i - n) - (k - m) * l) / (j * l - h * g);\n e[f >> 3] = k + j * g;\n e[f + 8 >> 3] = i + h * g;\n return;\n }\n function Gc(a, b) {\n a = a | 0;\n b = b | 0;\n if (!(+e[a >> 3] == +e[b >> 3])) {\n b = 0;\n return b | 0;\n }\n b = +e[a + 8 >> 3] == +e[b + 8 >> 3];\n return b | 0;\n }\n function Hc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0, d = 0.0, f = 0.0;\n f = +e[a >> 3] - +e[b >> 3];\n d = +e[a + 8 >> 3] - +e[b + 8 >> 3];\n c = +e[a + 16 >> 3] - +e[b + 16 >> 3];\n return +(f * f + d * d + c * c);\n }\n function Ic(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0, d = 0.0, f = 0.0;\n c = +e[a >> 3];\n d = +t(+c);\n c = +u(+c);\n e[b + 16 >> 3] = c;\n c = +e[a + 8 >> 3];\n f = d * +t(+c);\n e[b >> 3] = f;\n c = d * +u(+c);\n e[b + 8 >> 3] = c;\n return;\n }\n function Jc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0;\n k = S;\n S = S + 32 | 0;\n f = k + 16 | 0;\n g = k;\n Tb(a, c, f);\n h = zb(a, c) | 0;\n j = Kb(a, c) | 0;\n pa(h, g);\n c = qa(h, b[f >> 2] | 0) | 0;\n if (!(la(h) | 0)) {\n j = c;\n S = k;\n return j | 0;\n }\n do switch(h | 0){\n case 4:\n a = 0;\n d = 14;\n break;\n case 14:\n a = 1;\n d = 14;\n break;\n case 24:\n a = 2;\n d = 14;\n break;\n case 38:\n a = 3;\n d = 14;\n break;\n case 49:\n a = 4;\n d = 14;\n break;\n case 58:\n a = 5;\n d = 14;\n break;\n case 63:\n a = 6;\n d = 14;\n break;\n case 72:\n a = 7;\n d = 14;\n break;\n case 83:\n a = 8;\n d = 14;\n break;\n case 97:\n a = 9;\n d = 14;\n break;\n case 107:\n a = 10;\n d = 14;\n break;\n case 117:\n a = 11;\n d = 14;\n break;\n default:\n i = 0;\n e = 0;\n }\n while (0);\n if ((d | 0) == 14) {\n i = b[22096 + (a * 24 | 0) + 8 >> 2] | 0;\n e = b[22096 + (a * 24 | 0) + 16 >> 2] | 0;\n }\n a = b[f >> 2] | 0;\n if ((a | 0) != (b[g >> 2] | 0)) {\n h = ma(h) | 0;\n a = b[f >> 2] | 0;\n if (h | (a | 0) == (e | 0)) c = (c + 1 | 0) % 6 | 0;\n }\n if ((j | 0) == 3 & (a | 0) == (e | 0)) {\n j = (c + 5 | 0) % 6 | 0;\n S = k;\n return j | 0;\n }\n if (!((j | 0) == 5 & (a | 0) == (i | 0))) {\n j = c;\n S = k;\n return j | 0;\n }\n j = (c + 1 | 0) % 6 | 0;\n S = k;\n return j | 0;\n }\n function Kc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0, f = 0;\n e = Eb(a, c) | 0;\n if ((d + -1 | 0) >>> 0 > 5) {\n d = -1;\n return d | 0;\n }\n f = (e | 0) != 0;\n if ((d | 0) == 1 & f) {\n d = -1;\n return d | 0;\n }\n e = Jc(a, c) | 0;\n if (f) {\n d = (5 - e + (b[22384 + (d << 2) >> 2] | 0) | 0) % 5 | 0;\n return d | 0;\n } else {\n d = (6 - e + (b[22416 + (d << 2) >> 2] | 0) | 0) % 6 | 0;\n return d | 0;\n }\n return 0;\n }\n function Lc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0;\n if ((c | 0) > 0) {\n e = Xc(c, 4) | 0;\n b[a >> 2] = e;\n if (!e) H(23230, 23253, 40, 23267);\n } else b[a >> 2] = 0;\n b[a + 4 >> 2] = c;\n b[a + 8 >> 2] = 0;\n b[a + 12 >> 2] = d;\n return;\n }\n function Mc(a) {\n a = a | 0;\n var c = 0, d = 0, f = 0, g = 0, h = 0, i = 0, j = 0;\n g = a + 4 | 0;\n h = a + 12 | 0;\n i = a + 8 | 0;\n a: while(true){\n d = b[g >> 2] | 0;\n c = 0;\n while(true){\n if ((c | 0) >= (d | 0)) break a;\n f = b[a >> 2] | 0;\n j = b[f + (c << 2) >> 2] | 0;\n if (!j) c = c + 1 | 0;\n else break;\n }\n c = f + (~~(+q(+(+s(10.0, + +(15 - (b[h >> 2] | 0) | 0)) * (+e[j >> 3] + +e[j + 8 >> 3]))) % +(d | 0)) >>> 0 << 2) | 0;\n d = b[c >> 2] | 0;\n b: do if (d | 0) {\n f = j + 32 | 0;\n if ((d | 0) == (j | 0)) b[c >> 2] = b[f >> 2];\n else {\n d = d + 32 | 0;\n c = b[d >> 2] | 0;\n if (!c) break;\n while(true){\n if ((c | 0) == (j | 0)) break;\n d = c + 32 | 0;\n c = b[d >> 2] | 0;\n if (!c) break b;\n }\n b[d >> 2] = b[f >> 2];\n }\n Wc(j);\n b[i >> 2] = (b[i >> 2] | 0) + -1;\n }\n while (0);\n }\n Wc(b[a >> 2] | 0);\n return;\n }\n function Nc(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0;\n e = b[a + 4 >> 2] | 0;\n d = 0;\n while(true){\n if ((d | 0) >= (e | 0)) {\n c = 0;\n d = 4;\n break;\n }\n c = b[(b[a >> 2] | 0) + (d << 2) >> 2] | 0;\n if (!c) d = d + 1 | 0;\n else {\n d = 4;\n break;\n }\n }\n if ((d | 0) == 4) return c | 0;\n return 0;\n }\n function Oc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0, f = 0, g = 0, h = 0;\n d = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n d = (b[a >> 2] | 0) + (d << 2) | 0;\n f = b[d >> 2] | 0;\n if (!f) {\n h = 1;\n return h | 0;\n }\n h = c + 32 | 0;\n do if ((f | 0) != (c | 0)) {\n d = b[f + 32 >> 2] | 0;\n if (!d) {\n h = 1;\n return h | 0;\n }\n g = d;\n while(true){\n if ((g | 0) == (c | 0)) {\n g = 8;\n break;\n }\n d = b[g + 32 >> 2] | 0;\n if (!d) {\n d = 1;\n g = 10;\n break;\n } else {\n f = g;\n g = d;\n }\n }\n if ((g | 0) == 8) {\n b[f + 32 >> 2] = b[h >> 2];\n break;\n } else if ((g | 0) == 10) return d | 0;\n } else b[d >> 2] = b[h >> 2];\n while (0);\n Wc(c);\n h = a + 8 | 0;\n b[h >> 2] = (b[h >> 2] | 0) + -1;\n h = 0;\n return h | 0;\n }\n function Pc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0, g = 0, h = 0, i = 0;\n h = Vc(40) | 0;\n if (!h) H(23283, 23253, 98, 23296);\n b[h >> 2] = b[c >> 2];\n b[h + 4 >> 2] = b[c + 4 >> 2];\n b[h + 8 >> 2] = b[c + 8 >> 2];\n b[h + 12 >> 2] = b[c + 12 >> 2];\n g = h + 16 | 0;\n b[g >> 2] = b[d >> 2];\n b[g + 4 >> 2] = b[d + 4 >> 2];\n b[g + 8 >> 2] = b[d + 8 >> 2];\n b[g + 12 >> 2] = b[d + 12 >> 2];\n b[h + 32 >> 2] = 0;\n g = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n g = (b[a >> 2] | 0) + (g << 2) | 0;\n f = b[g >> 2] | 0;\n do if (!f) b[g >> 2] = h;\n else {\n while(true){\n if (hb(f, c) | 0 ? hb(f + 16 | 0, d) | 0 : 0) break;\n g = b[f + 32 >> 2] | 0;\n f = (g | 0) == 0 ? f : g;\n if (!(b[f + 32 >> 2] | 0)) {\n i = 10;\n break;\n }\n }\n if ((i | 0) == 10) {\n b[f + 32 >> 2] = h;\n break;\n }\n Wc(h);\n i = f;\n return i | 0;\n }\n while (0);\n i = a + 8 | 0;\n b[i >> 2] = (b[i >> 2] | 0) + 1;\n i = h;\n return i | 0;\n }\n function Qc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0, g = 0;\n g = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n g = b[(b[a >> 2] | 0) + (g << 2) >> 2] | 0;\n if (!g) {\n d = 0;\n return d | 0;\n }\n if (!d) {\n a = g;\n while(true){\n if (hb(a, c) | 0) {\n f = 10;\n break;\n }\n a = b[a + 32 >> 2] | 0;\n if (!a) {\n a = 0;\n f = 10;\n break;\n }\n }\n if ((f | 0) == 10) return a | 0;\n }\n a = g;\n while(true){\n if (hb(a, c) | 0 ? hb(a + 16 | 0, d) | 0 : 0) {\n f = 10;\n break;\n }\n a = b[a + 32 >> 2] | 0;\n if (!a) {\n a = 0;\n f = 10;\n break;\n }\n }\n if ((f | 0) == 10) return a | 0;\n return 0;\n }\n function Rc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0;\n d = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n a = b[(b[a >> 2] | 0) + (d << 2) >> 2] | 0;\n if (!a) {\n d = 0;\n return d | 0;\n }\n while(true){\n if (hb(a, c) | 0) {\n c = 5;\n break;\n }\n a = b[a + 32 >> 2] | 0;\n if (!a) {\n a = 0;\n c = 5;\n break;\n }\n }\n if ((c | 0) == 5) return a | 0;\n return 0;\n }\n function Sc() {\n return 23312;\n }\n function Tc(a) {\n a = +a;\n return + +hd(+a);\n }\n function Uc(a) {\n a = +a;\n return ~~+Tc(a) | 0;\n }\n function Vc(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0;\n w = S;\n S = S + 16 | 0;\n n = w;\n do {\n if (a >>> 0 < 245) {\n k = a >>> 0 < 11 ? 16 : a + 11 & -8;\n a = k >>> 3;\n m = b[5829] | 0;\n d = m >>> a;\n if (d & 3 | 0) {\n c = (d & 1 ^ 1) + a | 0;\n a = 23356 + (c << 1 << 2) | 0;\n d = a + 8 | 0;\n e = b[d >> 2] | 0;\n f = e + 8 | 0;\n g = b[f >> 2] | 0;\n if ((g | 0) == (a | 0)) b[5829] = m & ~(1 << c);\n else {\n b[g + 12 >> 2] = a;\n b[d >> 2] = g;\n }\n v = c << 3;\n b[e + 4 >> 2] = v | 3;\n v = e + v + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n v = f;\n S = w;\n return v | 0;\n }\n l = b[5831] | 0;\n if (k >>> 0 > l >>> 0) {\n if (d | 0) {\n c = 2 << a;\n c = d << a & (c | 0 - c);\n c = (c & 0 - c) + -1 | 0;\n i = c >>> 12 & 16;\n c = c >>> i;\n d = c >>> 5 & 8;\n c = c >>> d;\n g = c >>> 2 & 4;\n c = c >>> g;\n a = c >>> 1 & 2;\n c = c >>> a;\n e = c >>> 1 & 1;\n e = (d | i | g | a | e) + (c >>> e) | 0;\n c = 23356 + (e << 1 << 2) | 0;\n a = c + 8 | 0;\n g = b[a >> 2] | 0;\n i = g + 8 | 0;\n d = b[i >> 2] | 0;\n if ((d | 0) == (c | 0)) {\n a = m & ~(1 << e);\n b[5829] = a;\n } else {\n b[d + 12 >> 2] = c;\n b[a >> 2] = d;\n a = m;\n }\n v = e << 3;\n h = v - k | 0;\n b[g + 4 >> 2] = k | 3;\n f = g + k | 0;\n b[f + 4 >> 2] = h | 1;\n b[g + v >> 2] = h;\n if (l | 0) {\n e = b[5834] | 0;\n c = l >>> 3;\n d = 23356 + (c << 1 << 2) | 0;\n c = 1 << c;\n if (!(a & c)) {\n b[5829] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n b[a >> 2] = e;\n b[c + 12 >> 2] = e;\n b[e + 8 >> 2] = c;\n b[e + 12 >> 2] = d;\n }\n b[5831] = h;\n b[5834] = f;\n v = i;\n S = w;\n return v | 0;\n }\n g = b[5830] | 0;\n if (g) {\n d = (g & 0 - g) + -1 | 0;\n f = d >>> 12 & 16;\n d = d >>> f;\n e = d >>> 5 & 8;\n d = d >>> e;\n h = d >>> 2 & 4;\n d = d >>> h;\n i = d >>> 1 & 2;\n d = d >>> i;\n j = d >>> 1 & 1;\n j = b[23620 + ((e | f | h | i | j) + (d >>> j) << 2) >> 2] | 0;\n d = j;\n i = j;\n j = (b[j + 4 >> 2] & -8) - k | 0;\n while(true){\n a = b[d + 16 >> 2] | 0;\n if (!a) {\n a = b[d + 20 >> 2] | 0;\n if (!a) break;\n }\n h = (b[a + 4 >> 2] & -8) - k | 0;\n f = h >>> 0 < j >>> 0;\n d = a;\n i = f ? a : i;\n j = f ? h : j;\n }\n h = i + k | 0;\n if (h >>> 0 > i >>> 0) {\n f = b[i + 24 >> 2] | 0;\n c = b[i + 12 >> 2] | 0;\n do if ((c | 0) == (i | 0)) {\n a = i + 20 | 0;\n c = b[a >> 2] | 0;\n if (!c) {\n a = i + 16 | 0;\n c = b[a >> 2] | 0;\n if (!c) {\n d = 0;\n break;\n }\n }\n while(true){\n e = c + 20 | 0;\n d = b[e >> 2] | 0;\n if (!d) {\n e = c + 16 | 0;\n d = b[e >> 2] | 0;\n if (!d) break;\n else {\n c = d;\n a = e;\n }\n } else {\n c = d;\n a = e;\n }\n }\n b[a >> 2] = 0;\n d = c;\n } else {\n d = b[i + 8 >> 2] | 0;\n b[d + 12 >> 2] = c;\n b[c + 8 >> 2] = d;\n d = c;\n }\n while (0);\n do if (f | 0) {\n c = b[i + 28 >> 2] | 0;\n a = 23620 + (c << 2) | 0;\n if ((i | 0) == (b[a >> 2] | 0)) {\n b[a >> 2] = d;\n if (!d) {\n b[5830] = g & ~(1 << c);\n break;\n }\n } else {\n v = f + 16 | 0;\n b[((b[v >> 2] | 0) == (i | 0) ? v : f + 20 | 0) >> 2] = d;\n if (!d) break;\n }\n b[d + 24 >> 2] = f;\n c = b[i + 16 >> 2] | 0;\n if (c | 0) {\n b[d + 16 >> 2] = c;\n b[c + 24 >> 2] = d;\n }\n c = b[i + 20 >> 2] | 0;\n if (c | 0) {\n b[d + 20 >> 2] = c;\n b[c + 24 >> 2] = d;\n }\n }\n while (0);\n if (j >>> 0 < 16) {\n v = j + k | 0;\n b[i + 4 >> 2] = v | 3;\n v = i + v + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n } else {\n b[i + 4 >> 2] = k | 3;\n b[h + 4 >> 2] = j | 1;\n b[h + j >> 2] = j;\n if (l | 0) {\n e = b[5834] | 0;\n c = l >>> 3;\n d = 23356 + (c << 1 << 2) | 0;\n c = 1 << c;\n if (!(c & m)) {\n b[5829] = c | m;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n b[a >> 2] = e;\n b[c + 12 >> 2] = e;\n b[e + 8 >> 2] = c;\n b[e + 12 >> 2] = d;\n }\n b[5831] = j;\n b[5834] = h;\n }\n v = i + 8 | 0;\n S = w;\n return v | 0;\n } else m = k;\n } else m = k;\n } else m = k;\n } else if (a >>> 0 <= 4294967231) {\n a = a + 11 | 0;\n k = a & -8;\n e = b[5830] | 0;\n if (e) {\n f = 0 - k | 0;\n a = a >>> 8;\n if (a) {\n if (k >>> 0 > 16777215) j = 31;\n else {\n m = (a + 1048320 | 0) >>> 16 & 8;\n q = a << m;\n i = (q + 520192 | 0) >>> 16 & 4;\n q = q << i;\n j = (q + 245760 | 0) >>> 16 & 2;\n j = 14 - (i | m | j) + (q << j >>> 15) | 0;\n j = k >>> (j + 7 | 0) & 1 | j << 1;\n }\n } else j = 0;\n d = b[23620 + (j << 2) >> 2] | 0;\n a: do if (!d) {\n d = 0;\n a = 0;\n q = 61;\n } else {\n a = 0;\n i = k << ((j | 0) == 31 ? 0 : 25 - (j >>> 1) | 0);\n g = 0;\n while(true){\n h = (b[d + 4 >> 2] & -8) - k | 0;\n if (h >>> 0 < f >>> 0) {\n if (!h) {\n a = d;\n f = 0;\n q = 65;\n break a;\n } else {\n a = d;\n f = h;\n }\n }\n q = b[d + 20 >> 2] | 0;\n d = b[d + 16 + (i >>> 31 << 2) >> 2] | 0;\n g = (q | 0) == 0 | (q | 0) == (d | 0) ? g : q;\n if (!d) {\n d = g;\n q = 61;\n break;\n } else i = i << 1;\n }\n }\n while (0);\n if ((q | 0) == 61) {\n if ((d | 0) == 0 & (a | 0) == 0) {\n a = 2 << j;\n a = (a | 0 - a) & e;\n if (!a) {\n m = k;\n break;\n }\n m = (a & 0 - a) + -1 | 0;\n h = m >>> 12 & 16;\n m = m >>> h;\n g = m >>> 5 & 8;\n m = m >>> g;\n i = m >>> 2 & 4;\n m = m >>> i;\n j = m >>> 1 & 2;\n m = m >>> j;\n d = m >>> 1 & 1;\n a = 0;\n d = b[23620 + ((g | h | i | j | d) + (m >>> d) << 2) >> 2] | 0;\n }\n if (!d) {\n i = a;\n h = f;\n } else q = 65;\n }\n if ((q | 0) == 65) {\n g = d;\n while(true){\n m = (b[g + 4 >> 2] & -8) - k | 0;\n d = m >>> 0 < f >>> 0;\n f = d ? m : f;\n a = d ? g : a;\n d = b[g + 16 >> 2] | 0;\n if (!d) d = b[g + 20 >> 2] | 0;\n if (!d) {\n i = a;\n h = f;\n break;\n } else g = d;\n }\n }\n if (((i | 0) != 0 ? h >>> 0 < ((b[5831] | 0) - k | 0) >>> 0 : 0) ? (l = i + k | 0, l >>> 0 > i >>> 0) : 0) {\n g = b[i + 24 >> 2] | 0;\n c = b[i + 12 >> 2] | 0;\n do if ((c | 0) == (i | 0)) {\n a = i + 20 | 0;\n c = b[a >> 2] | 0;\n if (!c) {\n a = i + 16 | 0;\n c = b[a >> 2] | 0;\n if (!c) {\n c = 0;\n break;\n }\n }\n while(true){\n f = c + 20 | 0;\n d = b[f >> 2] | 0;\n if (!d) {\n f = c + 16 | 0;\n d = b[f >> 2] | 0;\n if (!d) break;\n else {\n c = d;\n a = f;\n }\n } else {\n c = d;\n a = f;\n }\n }\n b[a >> 2] = 0;\n } else {\n v = b[i + 8 >> 2] | 0;\n b[v + 12 >> 2] = c;\n b[c + 8 >> 2] = v;\n }\n while (0);\n do if (g) {\n a = b[i + 28 >> 2] | 0;\n d = 23620 + (a << 2) | 0;\n if ((i | 0) == (b[d >> 2] | 0)) {\n b[d >> 2] = c;\n if (!c) {\n e = e & ~(1 << a);\n b[5830] = e;\n break;\n }\n } else {\n v = g + 16 | 0;\n b[((b[v >> 2] | 0) == (i | 0) ? v : g + 20 | 0) >> 2] = c;\n if (!c) break;\n }\n b[c + 24 >> 2] = g;\n a = b[i + 16 >> 2] | 0;\n if (a | 0) {\n b[c + 16 >> 2] = a;\n b[a + 24 >> 2] = c;\n }\n a = b[i + 20 >> 2] | 0;\n if (a) {\n b[c + 20 >> 2] = a;\n b[a + 24 >> 2] = c;\n }\n }\n while (0);\n b: do if (h >>> 0 < 16) {\n v = h + k | 0;\n b[i + 4 >> 2] = v | 3;\n v = i + v + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n } else {\n b[i + 4 >> 2] = k | 3;\n b[l + 4 >> 2] = h | 1;\n b[l + h >> 2] = h;\n c = h >>> 3;\n if (h >>> 0 < 256) {\n d = 23356 + (c << 1 << 2) | 0;\n a = b[5829] | 0;\n c = 1 << c;\n if (!(a & c)) {\n b[5829] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n b[a >> 2] = l;\n b[c + 12 >> 2] = l;\n b[l + 8 >> 2] = c;\n b[l + 12 >> 2] = d;\n break;\n }\n c = h >>> 8;\n if (c) {\n if (h >>> 0 > 16777215) d = 31;\n else {\n u = (c + 1048320 | 0) >>> 16 & 8;\n v = c << u;\n t = (v + 520192 | 0) >>> 16 & 4;\n v = v << t;\n d = (v + 245760 | 0) >>> 16 & 2;\n d = 14 - (t | u | d) + (v << d >>> 15) | 0;\n d = h >>> (d + 7 | 0) & 1 | d << 1;\n }\n } else d = 0;\n c = 23620 + (d << 2) | 0;\n b[l + 28 >> 2] = d;\n a = l + 16 | 0;\n b[a + 4 >> 2] = 0;\n b[a >> 2] = 0;\n a = 1 << d;\n if (!(e & a)) {\n b[5830] = e | a;\n b[c >> 2] = l;\n b[l + 24 >> 2] = c;\n b[l + 12 >> 2] = l;\n b[l + 8 >> 2] = l;\n break;\n }\n c = b[c >> 2] | 0;\n c: do if ((b[c + 4 >> 2] & -8 | 0) != (h | 0)) {\n e = h << ((d | 0) == 31 ? 0 : 25 - (d >>> 1) | 0);\n while(true){\n d = c + 16 + (e >>> 31 << 2) | 0;\n a = b[d >> 2] | 0;\n if (!a) break;\n if ((b[a + 4 >> 2] & -8 | 0) == (h | 0)) {\n c = a;\n break c;\n } else {\n e = e << 1;\n c = a;\n }\n }\n b[d >> 2] = l;\n b[l + 24 >> 2] = c;\n b[l + 12 >> 2] = l;\n b[l + 8 >> 2] = l;\n break b;\n }\n while (0);\n u = c + 8 | 0;\n v = b[u >> 2] | 0;\n b[v + 12 >> 2] = l;\n b[u >> 2] = l;\n b[l + 8 >> 2] = v;\n b[l + 12 >> 2] = c;\n b[l + 24 >> 2] = 0;\n }\n while (0);\n v = i + 8 | 0;\n S = w;\n return v | 0;\n } else m = k;\n } else m = k;\n } else m = -1;\n }while (0);\n d = b[5831] | 0;\n if (d >>> 0 >= m >>> 0) {\n c = d - m | 0;\n a = b[5834] | 0;\n if (c >>> 0 > 15) {\n v = a + m | 0;\n b[5834] = v;\n b[5831] = c;\n b[v + 4 >> 2] = c | 1;\n b[a + d >> 2] = c;\n b[a + 4 >> 2] = m | 3;\n } else {\n b[5831] = 0;\n b[5834] = 0;\n b[a + 4 >> 2] = d | 3;\n v = a + d + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n }\n v = a + 8 | 0;\n S = w;\n return v | 0;\n }\n h = b[5832] | 0;\n if (h >>> 0 > m >>> 0) {\n t = h - m | 0;\n b[5832] = t;\n v = b[5835] | 0;\n u = v + m | 0;\n b[5835] = u;\n b[u + 4 >> 2] = t | 1;\n b[v + 4 >> 2] = m | 3;\n v = v + 8 | 0;\n S = w;\n return v | 0;\n }\n if (!(b[5947] | 0)) {\n b[5949] = 4096;\n b[5948] = 4096;\n b[5950] = -1;\n b[5951] = -1;\n b[5952] = 0;\n b[5940] = 0;\n b[5947] = n & -16 ^ 1431655768;\n a = 4096;\n } else a = b[5949] | 0;\n i = m + 48 | 0;\n j = m + 47 | 0;\n g = a + j | 0;\n f = 0 - a | 0;\n k = g & f;\n if (k >>> 0 <= m >>> 0) {\n v = 0;\n S = w;\n return v | 0;\n }\n a = b[5939] | 0;\n if (a | 0 ? (l = b[5937] | 0, n = l + k | 0, n >>> 0 <= l >>> 0 | n >>> 0 > a >>> 0) : 0) {\n v = 0;\n S = w;\n return v | 0;\n }\n d: do if (!(b[5940] & 4)) {\n d = b[5835] | 0;\n e: do if (d) {\n e = 23764;\n while(true){\n n = b[e >> 2] | 0;\n if (n >>> 0 <= d >>> 0 ? (n + (b[e + 4 >> 2] | 0) | 0) >>> 0 > d >>> 0 : 0) break;\n a = b[e + 8 >> 2] | 0;\n if (!a) {\n q = 128;\n break e;\n } else e = a;\n }\n c = g - h & f;\n if (c >>> 0 < 2147483647) {\n a = id(c | 0) | 0;\n if ((a | 0) == ((b[e >> 2] | 0) + (b[e + 4 >> 2] | 0) | 0)) {\n if ((a | 0) != -1) {\n h = c;\n g = a;\n q = 145;\n break d;\n }\n } else {\n e = a;\n q = 136;\n }\n } else c = 0;\n } else q = 128;\n while (0);\n do if ((q | 0) == 128) {\n d = id(0) | 0;\n if ((d | 0) != -1 ? (c = d, o = b[5948] | 0, p = o + -1 | 0, c = ((p & c | 0) == 0 ? 0 : (p + c & 0 - o) - c | 0) + k | 0, o = b[5937] | 0, p = c + o | 0, c >>> 0 > m >>> 0 & c >>> 0 < 2147483647) : 0) {\n n = b[5939] | 0;\n if (n | 0 ? p >>> 0 <= o >>> 0 | p >>> 0 > n >>> 0 : 0) {\n c = 0;\n break;\n }\n a = id(c | 0) | 0;\n if ((a | 0) == (d | 0)) {\n h = c;\n g = d;\n q = 145;\n break d;\n } else {\n e = a;\n q = 136;\n }\n } else c = 0;\n }\n while (0);\n do if ((q | 0) == 136) {\n d = 0 - c | 0;\n if (!(i >>> 0 > c >>> 0 & (c >>> 0 < 2147483647 & (e | 0) != -1))) {\n if ((e | 0) == -1) {\n c = 0;\n break;\n } else {\n h = c;\n g = e;\n q = 145;\n break d;\n }\n }\n a = b[5949] | 0;\n a = j - c + a & 0 - a;\n if (a >>> 0 >= 2147483647) {\n h = c;\n g = e;\n q = 145;\n break d;\n }\n if ((id(a | 0) | 0) == -1) {\n id(d | 0);\n c = 0;\n break;\n } else {\n h = a + c | 0;\n g = e;\n q = 145;\n break d;\n }\n }\n while (0);\n b[5940] = b[5940] | 4;\n q = 143;\n } else {\n c = 0;\n q = 143;\n }\n while (0);\n if (((q | 0) == 143 ? k >>> 0 < 2147483647 : 0) ? (t = id(k | 0) | 0, p = id(0) | 0, r = p - t | 0, s = r >>> 0 > (m + 40 | 0) >>> 0, !((t | 0) == -1 | s ^ 1 | t >>> 0 < p >>> 0 & ((t | 0) != -1 & (p | 0) != -1) ^ 1)) : 0) {\n h = s ? r : c;\n g = t;\n q = 145;\n }\n if ((q | 0) == 145) {\n c = (b[5937] | 0) + h | 0;\n b[5937] = c;\n if (c >>> 0 > (b[5938] | 0) >>> 0) b[5938] = c;\n j = b[5835] | 0;\n f: do if (j) {\n c = 23764;\n while(true){\n a = b[c >> 2] | 0;\n d = b[c + 4 >> 2] | 0;\n if ((g | 0) == (a + d | 0)) {\n q = 154;\n break;\n }\n e = b[c + 8 >> 2] | 0;\n if (!e) break;\n else c = e;\n }\n if (((q | 0) == 154 ? (u = c + 4 | 0, (b[c + 12 >> 2] & 8 | 0) == 0) : 0) ? g >>> 0 > j >>> 0 & a >>> 0 <= j >>> 0 : 0) {\n b[u >> 2] = d + h;\n v = (b[5832] | 0) + h | 0;\n t = j + 8 | 0;\n t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n u = j + t | 0;\n t = v - t | 0;\n b[5835] = u;\n b[5832] = t;\n b[u + 4 >> 2] = t | 1;\n b[j + v + 4 >> 2] = 40;\n b[5836] = b[5951];\n break;\n }\n if (g >>> 0 < (b[5833] | 0) >>> 0) b[5833] = g;\n d = g + h | 0;\n c = 23764;\n while(true){\n if ((b[c >> 2] | 0) == (d | 0)) {\n q = 162;\n break;\n }\n a = b[c + 8 >> 2] | 0;\n if (!a) break;\n else c = a;\n }\n if ((q | 0) == 162 ? (b[c + 12 >> 2] & 8 | 0) == 0 : 0) {\n b[c >> 2] = g;\n l = c + 4 | 0;\n b[l >> 2] = (b[l >> 2] | 0) + h;\n l = g + 8 | 0;\n l = g + ((l & 7 | 0) == 0 ? 0 : 0 - l & 7) | 0;\n c = d + 8 | 0;\n c = d + ((c & 7 | 0) == 0 ? 0 : 0 - c & 7) | 0;\n k = l + m | 0;\n i = c - l - m | 0;\n b[l + 4 >> 2] = m | 3;\n g: do if ((j | 0) == (c | 0)) {\n v = (b[5832] | 0) + i | 0;\n b[5832] = v;\n b[5835] = k;\n b[k + 4 >> 2] = v | 1;\n } else {\n if ((b[5834] | 0) == (c | 0)) {\n v = (b[5831] | 0) + i | 0;\n b[5831] = v;\n b[5834] = k;\n b[k + 4 >> 2] = v | 1;\n b[k + v >> 2] = v;\n break;\n }\n a = b[c + 4 >> 2] | 0;\n if ((a & 3 | 0) == 1) {\n h = a & -8;\n e = a >>> 3;\n h: do if (a >>> 0 < 256) {\n a = b[c + 8 >> 2] | 0;\n d = b[c + 12 >> 2] | 0;\n if ((d | 0) == (a | 0)) {\n b[5829] = b[5829] & ~(1 << e);\n break;\n } else {\n b[a + 12 >> 2] = d;\n b[d + 8 >> 2] = a;\n break;\n }\n } else {\n g = b[c + 24 >> 2] | 0;\n a = b[c + 12 >> 2] | 0;\n do if ((a | 0) == (c | 0)) {\n d = c + 16 | 0;\n e = d + 4 | 0;\n a = b[e >> 2] | 0;\n if (!a) {\n a = b[d >> 2] | 0;\n if (!a) {\n a = 0;\n break;\n }\n } else d = e;\n while(true){\n f = a + 20 | 0;\n e = b[f >> 2] | 0;\n if (!e) {\n f = a + 16 | 0;\n e = b[f >> 2] | 0;\n if (!e) break;\n else {\n a = e;\n d = f;\n }\n } else {\n a = e;\n d = f;\n }\n }\n b[d >> 2] = 0;\n } else {\n v = b[c + 8 >> 2] | 0;\n b[v + 12 >> 2] = a;\n b[a + 8 >> 2] = v;\n }\n while (0);\n if (!g) break;\n d = b[c + 28 >> 2] | 0;\n e = 23620 + (d << 2) | 0;\n do if ((b[e >> 2] | 0) != (c | 0)) {\n v = g + 16 | 0;\n b[((b[v >> 2] | 0) == (c | 0) ? v : g + 20 | 0) >> 2] = a;\n if (!a) break h;\n } else {\n b[e >> 2] = a;\n if (a | 0) break;\n b[5830] = b[5830] & ~(1 << d);\n break h;\n }\n while (0);\n b[a + 24 >> 2] = g;\n d = c + 16 | 0;\n e = b[d >> 2] | 0;\n if (e | 0) {\n b[a + 16 >> 2] = e;\n b[e + 24 >> 2] = a;\n }\n d = b[d + 4 >> 2] | 0;\n if (!d) break;\n b[a + 20 >> 2] = d;\n b[d + 24 >> 2] = a;\n }\n while (0);\n c = c + h | 0;\n f = h + i | 0;\n } else f = i;\n c = c + 4 | 0;\n b[c >> 2] = b[c >> 2] & -2;\n b[k + 4 >> 2] = f | 1;\n b[k + f >> 2] = f;\n c = f >>> 3;\n if (f >>> 0 < 256) {\n d = 23356 + (c << 1 << 2) | 0;\n a = b[5829] | 0;\n c = 1 << c;\n if (!(a & c)) {\n b[5829] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n b[a >> 2] = k;\n b[c + 12 >> 2] = k;\n b[k + 8 >> 2] = c;\n b[k + 12 >> 2] = d;\n break;\n }\n c = f >>> 8;\n do if (!c) e = 0;\n else {\n if (f >>> 0 > 16777215) {\n e = 31;\n break;\n }\n u = (c + 1048320 | 0) >>> 16 & 8;\n v = c << u;\n t = (v + 520192 | 0) >>> 16 & 4;\n v = v << t;\n e = (v + 245760 | 0) >>> 16 & 2;\n e = 14 - (t | u | e) + (v << e >>> 15) | 0;\n e = f >>> (e + 7 | 0) & 1 | e << 1;\n }\n while (0);\n c = 23620 + (e << 2) | 0;\n b[k + 28 >> 2] = e;\n a = k + 16 | 0;\n b[a + 4 >> 2] = 0;\n b[a >> 2] = 0;\n a = b[5830] | 0;\n d = 1 << e;\n if (!(a & d)) {\n b[5830] = a | d;\n b[c >> 2] = k;\n b[k + 24 >> 2] = c;\n b[k + 12 >> 2] = k;\n b[k + 8 >> 2] = k;\n break;\n }\n c = b[c >> 2] | 0;\n i: do if ((b[c + 4 >> 2] & -8 | 0) != (f | 0)) {\n e = f << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n while(true){\n d = c + 16 + (e >>> 31 << 2) | 0;\n a = b[d >> 2] | 0;\n if (!a) break;\n if ((b[a + 4 >> 2] & -8 | 0) == (f | 0)) {\n c = a;\n break i;\n } else {\n e = e << 1;\n c = a;\n }\n }\n b[d >> 2] = k;\n b[k + 24 >> 2] = c;\n b[k + 12 >> 2] = k;\n b[k + 8 >> 2] = k;\n break g;\n }\n while (0);\n u = c + 8 | 0;\n v = b[u >> 2] | 0;\n b[v + 12 >> 2] = k;\n b[u >> 2] = k;\n b[k + 8 >> 2] = v;\n b[k + 12 >> 2] = c;\n b[k + 24 >> 2] = 0;\n }\n while (0);\n v = l + 8 | 0;\n S = w;\n return v | 0;\n }\n c = 23764;\n while(true){\n a = b[c >> 2] | 0;\n if (a >>> 0 <= j >>> 0 ? (v = a + (b[c + 4 >> 2] | 0) | 0, v >>> 0 > j >>> 0) : 0) break;\n c = b[c + 8 >> 2] | 0;\n }\n f = v + -47 | 0;\n a = f + 8 | 0;\n a = f + ((a & 7 | 0) == 0 ? 0 : 0 - a & 7) | 0;\n f = j + 16 | 0;\n a = a >>> 0 < f >>> 0 ? j : a;\n c = a + 8 | 0;\n d = h + -40 | 0;\n t = g + 8 | 0;\n t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n u = g + t | 0;\n t = d - t | 0;\n b[5835] = u;\n b[5832] = t;\n b[u + 4 >> 2] = t | 1;\n b[g + d + 4 >> 2] = 40;\n b[5836] = b[5951];\n d = a + 4 | 0;\n b[d >> 2] = 27;\n b[c >> 2] = b[5941];\n b[c + 4 >> 2] = b[5942];\n b[c + 8 >> 2] = b[5943];\n b[c + 12 >> 2] = b[5944];\n b[5941] = g;\n b[5942] = h;\n b[5944] = 0;\n b[5943] = c;\n c = a + 24 | 0;\n do {\n u = c;\n c = c + 4 | 0;\n b[c >> 2] = 7;\n }while ((u + 8 | 0) >>> 0 < v >>> 0);\n if ((a | 0) != (j | 0)) {\n g = a - j | 0;\n b[d >> 2] = b[d >> 2] & -2;\n b[j + 4 >> 2] = g | 1;\n b[a >> 2] = g;\n c = g >>> 3;\n if (g >>> 0 < 256) {\n d = 23356 + (c << 1 << 2) | 0;\n a = b[5829] | 0;\n c = 1 << c;\n if (!(a & c)) {\n b[5829] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n b[a >> 2] = j;\n b[c + 12 >> 2] = j;\n b[j + 8 >> 2] = c;\n b[j + 12 >> 2] = d;\n break;\n }\n c = g >>> 8;\n if (c) {\n if (g >>> 0 > 16777215) e = 31;\n else {\n u = (c + 1048320 | 0) >>> 16 & 8;\n v = c << u;\n t = (v + 520192 | 0) >>> 16 & 4;\n v = v << t;\n e = (v + 245760 | 0) >>> 16 & 2;\n e = 14 - (t | u | e) + (v << e >>> 15) | 0;\n e = g >>> (e + 7 | 0) & 1 | e << 1;\n }\n } else e = 0;\n d = 23620 + (e << 2) | 0;\n b[j + 28 >> 2] = e;\n b[j + 20 >> 2] = 0;\n b[f >> 2] = 0;\n c = b[5830] | 0;\n a = 1 << e;\n if (!(c & a)) {\n b[5830] = c | a;\n b[d >> 2] = j;\n b[j + 24 >> 2] = d;\n b[j + 12 >> 2] = j;\n b[j + 8 >> 2] = j;\n break;\n }\n c = b[d >> 2] | 0;\n j: do if ((b[c + 4 >> 2] & -8 | 0) != (g | 0)) {\n e = g << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n while(true){\n d = c + 16 + (e >>> 31 << 2) | 0;\n a = b[d >> 2] | 0;\n if (!a) break;\n if ((b[a + 4 >> 2] & -8 | 0) == (g | 0)) {\n c = a;\n break j;\n } else {\n e = e << 1;\n c = a;\n }\n }\n b[d >> 2] = j;\n b[j + 24 >> 2] = c;\n b[j + 12 >> 2] = j;\n b[j + 8 >> 2] = j;\n break f;\n }\n while (0);\n u = c + 8 | 0;\n v = b[u >> 2] | 0;\n b[v + 12 >> 2] = j;\n b[u >> 2] = j;\n b[j + 8 >> 2] = v;\n b[j + 12 >> 2] = c;\n b[j + 24 >> 2] = 0;\n }\n } else {\n v = b[5833] | 0;\n if ((v | 0) == 0 | g >>> 0 < v >>> 0) b[5833] = g;\n b[5941] = g;\n b[5942] = h;\n b[5944] = 0;\n b[5838] = b[5947];\n b[5837] = -1;\n b[5842] = 23356;\n b[5841] = 23356;\n b[5844] = 23364;\n b[5843] = 23364;\n b[5846] = 23372;\n b[5845] = 23372;\n b[5848] = 23380;\n b[5847] = 23380;\n b[5850] = 23388;\n b[5849] = 23388;\n b[5852] = 23396;\n b[5851] = 23396;\n b[5854] = 23404;\n b[5853] = 23404;\n b[5856] = 23412;\n b[5855] = 23412;\n b[5858] = 23420;\n b[5857] = 23420;\n b[5860] = 23428;\n b[5859] = 23428;\n b[5862] = 23436;\n b[5861] = 23436;\n b[5864] = 23444;\n b[5863] = 23444;\n b[5866] = 23452;\n b[5865] = 23452;\n b[5868] = 23460;\n b[5867] = 23460;\n b[5870] = 23468;\n b[5869] = 23468;\n b[5872] = 23476;\n b[5871] = 23476;\n b[5874] = 23484;\n b[5873] = 23484;\n b[5876] = 23492;\n b[5875] = 23492;\n b[5878] = 23500;\n b[5877] = 23500;\n b[5880] = 23508;\n b[5879] = 23508;\n b[5882] = 23516;\n b[5881] = 23516;\n b[5884] = 23524;\n b[5883] = 23524;\n b[5886] = 23532;\n b[5885] = 23532;\n b[5888] = 23540;\n b[5887] = 23540;\n b[5890] = 23548;\n b[5889] = 23548;\n b[5892] = 23556;\n b[5891] = 23556;\n b[5894] = 23564;\n b[5893] = 23564;\n b[5896] = 23572;\n b[5895] = 23572;\n b[5898] = 23580;\n b[5897] = 23580;\n b[5900] = 23588;\n b[5899] = 23588;\n b[5902] = 23596;\n b[5901] = 23596;\n b[5904] = 23604;\n b[5903] = 23604;\n v = h + -40 | 0;\n t = g + 8 | 0;\n t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n u = g + t | 0;\n t = v - t | 0;\n b[5835] = u;\n b[5832] = t;\n b[u + 4 >> 2] = t | 1;\n b[g + v + 4 >> 2] = 40;\n b[5836] = b[5951];\n }\n while (0);\n c = b[5832] | 0;\n if (c >>> 0 > m >>> 0) {\n t = c - m | 0;\n b[5832] = t;\n v = b[5835] | 0;\n u = v + m | 0;\n b[5835] = u;\n b[u + 4 >> 2] = t | 1;\n b[v + 4 >> 2] = m | 3;\n v = v + 8 | 0;\n S = w;\n return v | 0;\n }\n }\n v = Sc() | 0;\n b[v >> 2] = 12;\n v = 0;\n S = w;\n return v | 0;\n }\n function Wc(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0;\n if (!a) return;\n d = a + -8 | 0;\n f = b[5833] | 0;\n a = b[a + -4 >> 2] | 0;\n c = a & -8;\n j = d + c | 0;\n do if (!(a & 1)) {\n e = b[d >> 2] | 0;\n if (!(a & 3)) return;\n h = d + (0 - e) | 0;\n g = e + c | 0;\n if (h >>> 0 < f >>> 0) return;\n if ((b[5834] | 0) == (h | 0)) {\n a = j + 4 | 0;\n c = b[a >> 2] | 0;\n if ((c & 3 | 0) != 3) {\n i = h;\n c = g;\n break;\n }\n b[5831] = g;\n b[a >> 2] = c & -2;\n b[h + 4 >> 2] = g | 1;\n b[h + g >> 2] = g;\n return;\n }\n d = e >>> 3;\n if (e >>> 0 < 256) {\n a = b[h + 8 >> 2] | 0;\n c = b[h + 12 >> 2] | 0;\n if ((c | 0) == (a | 0)) {\n b[5829] = b[5829] & ~(1 << d);\n i = h;\n c = g;\n break;\n } else {\n b[a + 12 >> 2] = c;\n b[c + 8 >> 2] = a;\n i = h;\n c = g;\n break;\n }\n }\n f = b[h + 24 >> 2] | 0;\n a = b[h + 12 >> 2] | 0;\n do if ((a | 0) == (h | 0)) {\n c = h + 16 | 0;\n d = c + 4 | 0;\n a = b[d >> 2] | 0;\n if (!a) {\n a = b[c >> 2] | 0;\n if (!a) {\n a = 0;\n break;\n }\n } else c = d;\n while(true){\n e = a + 20 | 0;\n d = b[e >> 2] | 0;\n if (!d) {\n e = a + 16 | 0;\n d = b[e >> 2] | 0;\n if (!d) break;\n else {\n a = d;\n c = e;\n }\n } else {\n a = d;\n c = e;\n }\n }\n b[c >> 2] = 0;\n } else {\n i = b[h + 8 >> 2] | 0;\n b[i + 12 >> 2] = a;\n b[a + 8 >> 2] = i;\n }\n while (0);\n if (f) {\n c = b[h + 28 >> 2] | 0;\n d = 23620 + (c << 2) | 0;\n if ((b[d >> 2] | 0) == (h | 0)) {\n b[d >> 2] = a;\n if (!a) {\n b[5830] = b[5830] & ~(1 << c);\n i = h;\n c = g;\n break;\n }\n } else {\n i = f + 16 | 0;\n b[((b[i >> 2] | 0) == (h | 0) ? i : f + 20 | 0) >> 2] = a;\n if (!a) {\n i = h;\n c = g;\n break;\n }\n }\n b[a + 24 >> 2] = f;\n c = h + 16 | 0;\n d = b[c >> 2] | 0;\n if (d | 0) {\n b[a + 16 >> 2] = d;\n b[d + 24 >> 2] = a;\n }\n c = b[c + 4 >> 2] | 0;\n if (c) {\n b[a + 20 >> 2] = c;\n b[c + 24 >> 2] = a;\n i = h;\n c = g;\n } else {\n i = h;\n c = g;\n }\n } else {\n i = h;\n c = g;\n }\n } else {\n i = d;\n h = d;\n }\n while (0);\n if (h >>> 0 >= j >>> 0) return;\n a = j + 4 | 0;\n e = b[a >> 2] | 0;\n if (!(e & 1)) return;\n if (!(e & 2)) {\n if ((b[5835] | 0) == (j | 0)) {\n j = (b[5832] | 0) + c | 0;\n b[5832] = j;\n b[5835] = i;\n b[i + 4 >> 2] = j | 1;\n if ((i | 0) != (b[5834] | 0)) return;\n b[5834] = 0;\n b[5831] = 0;\n return;\n }\n if ((b[5834] | 0) == (j | 0)) {\n j = (b[5831] | 0) + c | 0;\n b[5831] = j;\n b[5834] = h;\n b[i + 4 >> 2] = j | 1;\n b[h + j >> 2] = j;\n return;\n }\n f = (e & -8) + c | 0;\n d = e >>> 3;\n do if (e >>> 0 < 256) {\n c = b[j + 8 >> 2] | 0;\n a = b[j + 12 >> 2] | 0;\n if ((a | 0) == (c | 0)) {\n b[5829] = b[5829] & ~(1 << d);\n break;\n } else {\n b[c + 12 >> 2] = a;\n b[a + 8 >> 2] = c;\n break;\n }\n } else {\n g = b[j + 24 >> 2] | 0;\n a = b[j + 12 >> 2] | 0;\n do if ((a | 0) == (j | 0)) {\n c = j + 16 | 0;\n d = c + 4 | 0;\n a = b[d >> 2] | 0;\n if (!a) {\n a = b[c >> 2] | 0;\n if (!a) {\n d = 0;\n break;\n }\n } else c = d;\n while(true){\n e = a + 20 | 0;\n d = b[e >> 2] | 0;\n if (!d) {\n e = a + 16 | 0;\n d = b[e >> 2] | 0;\n if (!d) break;\n else {\n a = d;\n c = e;\n }\n } else {\n a = d;\n c = e;\n }\n }\n b[c >> 2] = 0;\n d = a;\n } else {\n d = b[j + 8 >> 2] | 0;\n b[d + 12 >> 2] = a;\n b[a + 8 >> 2] = d;\n d = a;\n }\n while (0);\n if (g | 0) {\n a = b[j + 28 >> 2] | 0;\n c = 23620 + (a << 2) | 0;\n if ((b[c >> 2] | 0) == (j | 0)) {\n b[c >> 2] = d;\n if (!d) {\n b[5830] = b[5830] & ~(1 << a);\n break;\n }\n } else {\n e = g + 16 | 0;\n b[((b[e >> 2] | 0) == (j | 0) ? e : g + 20 | 0) >> 2] = d;\n if (!d) break;\n }\n b[d + 24 >> 2] = g;\n a = j + 16 | 0;\n c = b[a >> 2] | 0;\n if (c | 0) {\n b[d + 16 >> 2] = c;\n b[c + 24 >> 2] = d;\n }\n a = b[a + 4 >> 2] | 0;\n if (a | 0) {\n b[d + 20 >> 2] = a;\n b[a + 24 >> 2] = d;\n }\n }\n }\n while (0);\n b[i + 4 >> 2] = f | 1;\n b[h + f >> 2] = f;\n if ((i | 0) == (b[5834] | 0)) {\n b[5831] = f;\n return;\n }\n } else {\n b[a >> 2] = e & -2;\n b[i + 4 >> 2] = c | 1;\n b[h + c >> 2] = c;\n f = c;\n }\n a = f >>> 3;\n if (f >>> 0 < 256) {\n d = 23356 + (a << 1 << 2) | 0;\n c = b[5829] | 0;\n a = 1 << a;\n if (!(c & a)) {\n b[5829] = c | a;\n a = d;\n c = d + 8 | 0;\n } else {\n c = d + 8 | 0;\n a = b[c >> 2] | 0;\n }\n b[c >> 2] = i;\n b[a + 12 >> 2] = i;\n b[i + 8 >> 2] = a;\n b[i + 12 >> 2] = d;\n return;\n }\n a = f >>> 8;\n if (a) {\n if (f >>> 0 > 16777215) e = 31;\n else {\n h = (a + 1048320 | 0) >>> 16 & 8;\n j = a << h;\n g = (j + 520192 | 0) >>> 16 & 4;\n j = j << g;\n e = (j + 245760 | 0) >>> 16 & 2;\n e = 14 - (g | h | e) + (j << e >>> 15) | 0;\n e = f >>> (e + 7 | 0) & 1 | e << 1;\n }\n } else e = 0;\n a = 23620 + (e << 2) | 0;\n b[i + 28 >> 2] = e;\n b[i + 20 >> 2] = 0;\n b[i + 16 >> 2] = 0;\n c = b[5830] | 0;\n d = 1 << e;\n a: do if (!(c & d)) {\n b[5830] = c | d;\n b[a >> 2] = i;\n b[i + 24 >> 2] = a;\n b[i + 12 >> 2] = i;\n b[i + 8 >> 2] = i;\n } else {\n a = b[a >> 2] | 0;\n b: do if ((b[a + 4 >> 2] & -8 | 0) != (f | 0)) {\n e = f << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n while(true){\n d = a + 16 + (e >>> 31 << 2) | 0;\n c = b[d >> 2] | 0;\n if (!c) break;\n if ((b[c + 4 >> 2] & -8 | 0) == (f | 0)) {\n a = c;\n break b;\n } else {\n e = e << 1;\n a = c;\n }\n }\n b[d >> 2] = i;\n b[i + 24 >> 2] = a;\n b[i + 12 >> 2] = i;\n b[i + 8 >> 2] = i;\n break a;\n }\n while (0);\n h = a + 8 | 0;\n j = b[h >> 2] | 0;\n b[j + 12 >> 2] = i;\n b[h >> 2] = i;\n b[i + 8 >> 2] = j;\n b[i + 12 >> 2] = a;\n b[i + 24 >> 2] = 0;\n }\n while (0);\n j = (b[5837] | 0) + -1 | 0;\n b[5837] = j;\n if (j | 0) return;\n a = 23772;\n while(true){\n a = b[a >> 2] | 0;\n if (!a) break;\n else a = a + 8 | 0;\n }\n b[5837] = -1;\n return;\n }\n function Xc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0;\n if (a) {\n d = B(c, a) | 0;\n if ((c | a) >>> 0 > 65535) d = ((d >>> 0) / (a >>> 0) | 0) == (c | 0) ? d : -1;\n } else d = 0;\n a = Vc(d) | 0;\n if (!a) return a | 0;\n if (!(b[a + -4 >> 2] & 3)) return a | 0;\n gd(a | 0, 0, d | 0);\n return a | 0;\n }\n function Yc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n c = a + c >>> 0;\n return (F(b + d + (c >>> 0 < a >>> 0 | 0) >>> 0 | 0), c | 0) | 0;\n }\n function Zc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n d = b - d - (c >>> 0 > a >>> 0 | 0) >>> 0;\n return (F(d | 0), a - c >>> 0 | 0) | 0;\n }\n function _c(a) {\n a = a | 0;\n return (a ? 31 - (D(a ^ a - 1) | 0) | 0 : 32) | 0;\n }\n function $c(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0;\n l = a;\n j = c;\n k = j;\n h = d;\n n = e;\n i = n;\n if (!k) {\n g = (f | 0) != 0;\n if (!i) {\n if (g) {\n b[f >> 2] = (l >>> 0) % (h >>> 0);\n b[f + 4 >> 2] = 0;\n }\n n = 0;\n f = (l >>> 0) / (h >>> 0) >>> 0;\n return (F(n | 0), f) | 0;\n } else {\n if (!g) {\n n = 0;\n f = 0;\n return (F(n | 0), f) | 0;\n }\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = c & 0;\n n = 0;\n f = 0;\n return (F(n | 0), f) | 0;\n }\n }\n g = (i | 0) == 0;\n do if (h) {\n if (!g) {\n g = (D(i | 0) | 0) - (D(k | 0) | 0) | 0;\n if (g >>> 0 <= 31) {\n m = g + 1 | 0;\n i = 31 - g | 0;\n c = g - 31 >> 31;\n h = m;\n a = l >>> (m >>> 0) & c | k << i;\n c = k >>> (m >>> 0) & c;\n g = 0;\n i = l << i;\n break;\n }\n if (!f) {\n n = 0;\n f = 0;\n return (F(n | 0), f) | 0;\n }\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = j | c & 0;\n n = 0;\n f = 0;\n return (F(n | 0), f) | 0;\n }\n g = h - 1 | 0;\n if (g & h | 0) {\n i = (D(h | 0) | 0) + 33 - (D(k | 0) | 0) | 0;\n p = 64 - i | 0;\n m = 32 - i | 0;\n j = m >> 31;\n o = i - 32 | 0;\n c = o >> 31;\n h = i;\n a = m - 1 >> 31 & k >>> (o >>> 0) | (k << m | l >>> (i >>> 0)) & c;\n c = c & k >>> (i >>> 0);\n g = l << p & j;\n i = (k << p | l >>> (o >>> 0)) & j | l << m & i - 33 >> 31;\n break;\n }\n if (f | 0) {\n b[f >> 2] = g & l;\n b[f + 4 >> 2] = 0;\n }\n if ((h | 0) == 1) {\n o = j | c & 0;\n p = a | 0;\n return (F(o | 0), p) | 0;\n } else {\n p = _c(h | 0) | 0;\n o = k >>> (p >>> 0) | 0;\n p = k << 32 - p | l >>> (p >>> 0) | 0;\n return (F(o | 0), p) | 0;\n }\n } else {\n if (g) {\n if (f | 0) {\n b[f >> 2] = (k >>> 0) % (h >>> 0);\n b[f + 4 >> 2] = 0;\n }\n o = 0;\n p = (k >>> 0) / (h >>> 0) >>> 0;\n return (F(o | 0), p) | 0;\n }\n if (!l) {\n if (f | 0) {\n b[f >> 2] = 0;\n b[f + 4 >> 2] = (k >>> 0) % (i >>> 0);\n }\n o = 0;\n p = (k >>> 0) / (i >>> 0) >>> 0;\n return (F(o | 0), p) | 0;\n }\n g = i - 1 | 0;\n if (!(g & i)) {\n if (f | 0) {\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = g & k | c & 0;\n }\n o = 0;\n p = k >>> ((_c(i | 0) | 0) >>> 0);\n return (F(o | 0), p) | 0;\n }\n g = (D(i | 0) | 0) - (D(k | 0) | 0) | 0;\n if (g >>> 0 <= 30) {\n c = g + 1 | 0;\n i = 31 - g | 0;\n h = c;\n a = k << i | l >>> (c >>> 0);\n c = k >>> (c >>> 0);\n g = 0;\n i = l << i;\n break;\n }\n if (!f) {\n o = 0;\n p = 0;\n return (F(o | 0), p) | 0;\n }\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = j | c & 0;\n o = 0;\n p = 0;\n return (F(o | 0), p) | 0;\n }\n while (0);\n if (!h) {\n k = i;\n j = 0;\n i = 0;\n } else {\n m = d | 0;\n l = n | e & 0;\n k = Yc(m | 0, l | 0, -1, -1) | 0;\n d = G() | 0;\n j = i;\n i = 0;\n do {\n e = j;\n j = g >>> 31 | j << 1;\n g = i | g << 1;\n e = a << 1 | e >>> 31 | 0;\n n = a >>> 31 | c << 1 | 0;\n Zc(k | 0, d | 0, e | 0, n | 0);\n p = G() | 0;\n o = p >> 31 | ((p | 0) < 0 ? -1 : 0) << 1;\n i = o & 1;\n a = Zc(e | 0, n | 0, o & m | 0, (((p | 0) < 0 ? -1 : 0) >> 31 | ((p | 0) < 0 ? -1 : 0) << 1) & l | 0) | 0;\n c = G() | 0;\n h = h - 1 | 0;\n }while ((h | 0) != 0);\n k = j;\n j = 0;\n }\n h = 0;\n if (f | 0) {\n b[f >> 2] = a;\n b[f + 4 >> 2] = c;\n }\n o = (g | 0) >>> 31 | (k | h) << 1 | (h << 1 | g >>> 31) & 0 | j;\n p = (g << 1 | 0) & -2 | i;\n return (F(o | 0), p) | 0;\n }\n function ad(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0;\n g = S;\n S = S + 16 | 0;\n f = g | 0;\n $c(a, c, d, e, f);\n S = g;\n return (F(b[f + 4 >> 2] | 0), b[f >> 2] | 0) | 0;\n }\n function bd(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n if ((c | 0) < 32) {\n F(b >>> c | 0);\n return a >>> c | (b & (1 << c) - 1) << 32 - c;\n }\n F(0);\n return b >>> c - 32 | 0;\n }\n function cd(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n if ((c | 0) < 32) {\n F(b << c | (a & (1 << c) - 1 << 32 - c) >>> 32 - c | 0);\n return a << c;\n }\n F(a << c - 32 | 0);\n return 0;\n }\n function dd(a, b) {\n a = +a;\n b = +b;\n if (a != a) return +b;\n if (b != b) return +a;\n return +C(+a, +b);\n }\n function ed(a) {\n a = +a;\n return a >= 0.0 ? +p(a + .5) : +A(a - .5);\n }\n function fd(c, d, e) {\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0;\n if ((e | 0) >= 8192) {\n K(c | 0, d | 0, e | 0);\n return c | 0;\n }\n h = c | 0;\n g = c + e | 0;\n if ((c & 3) == (d & 3)) {\n while(c & 3){\n if (!e) return h | 0;\n a[c >> 0] = a[d >> 0] | 0;\n c = c + 1 | 0;\n d = d + 1 | 0;\n e = e - 1 | 0;\n }\n e = g & -4 | 0;\n f = e - 64 | 0;\n while((c | 0) <= (f | 0)){\n b[c >> 2] = b[d >> 2];\n b[c + 4 >> 2] = b[d + 4 >> 2];\n b[c + 8 >> 2] = b[d + 8 >> 2];\n b[c + 12 >> 2] = b[d + 12 >> 2];\n b[c + 16 >> 2] = b[d + 16 >> 2];\n b[c + 20 >> 2] = b[d + 20 >> 2];\n b[c + 24 >> 2] = b[d + 24 >> 2];\n b[c + 28 >> 2] = b[d + 28 >> 2];\n b[c + 32 >> 2] = b[d + 32 >> 2];\n b[c + 36 >> 2] = b[d + 36 >> 2];\n b[c + 40 >> 2] = b[d + 40 >> 2];\n b[c + 44 >> 2] = b[d + 44 >> 2];\n b[c + 48 >> 2] = b[d + 48 >> 2];\n b[c + 52 >> 2] = b[d + 52 >> 2];\n b[c + 56 >> 2] = b[d + 56 >> 2];\n b[c + 60 >> 2] = b[d + 60 >> 2];\n c = c + 64 | 0;\n d = d + 64 | 0;\n }\n while((c | 0) < (e | 0)){\n b[c >> 2] = b[d >> 2];\n c = c + 4 | 0;\n d = d + 4 | 0;\n }\n } else {\n e = g - 4 | 0;\n while((c | 0) < (e | 0)){\n a[c >> 0] = a[d >> 0] | 0;\n a[c + 1 >> 0] = a[d + 1 >> 0] | 0;\n a[c + 2 >> 0] = a[d + 2 >> 0] | 0;\n a[c + 3 >> 0] = a[d + 3 >> 0] | 0;\n c = c + 4 | 0;\n d = d + 4 | 0;\n }\n }\n while((c | 0) < (g | 0)){\n a[c >> 0] = a[d >> 0] | 0;\n c = c + 1 | 0;\n d = d + 1 | 0;\n }\n return h | 0;\n }\n function gd(c, d, e) {\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0, g = 0, h = 0, i = 0;\n h = c + e | 0;\n d = d & 255;\n if ((e | 0) >= 67) {\n while(c & 3){\n a[c >> 0] = d;\n c = c + 1 | 0;\n }\n f = h & -4 | 0;\n i = d | d << 8 | d << 16 | d << 24;\n g = f - 64 | 0;\n while((c | 0) <= (g | 0)){\n b[c >> 2] = i;\n b[c + 4 >> 2] = i;\n b[c + 8 >> 2] = i;\n b[c + 12 >> 2] = i;\n b[c + 16 >> 2] = i;\n b[c + 20 >> 2] = i;\n b[c + 24 >> 2] = i;\n b[c + 28 >> 2] = i;\n b[c + 32 >> 2] = i;\n b[c + 36 >> 2] = i;\n b[c + 40 >> 2] = i;\n b[c + 44 >> 2] = i;\n b[c + 48 >> 2] = i;\n b[c + 52 >> 2] = i;\n b[c + 56 >> 2] = i;\n b[c + 60 >> 2] = i;\n c = c + 64 | 0;\n }\n while((c | 0) < (f | 0)){\n b[c >> 2] = i;\n c = c + 4 | 0;\n }\n }\n while((c | 0) < (h | 0)){\n a[c >> 0] = d;\n c = c + 1 | 0;\n }\n return h - e | 0;\n }\n function hd(a) {\n a = +a;\n return a >= 0.0 ? +p(a + .5) : +A(a - .5);\n }\n function id(a) {\n a = a | 0;\n var c = 0, d = 0, e = 0;\n e = J() | 0;\n d = b[g >> 2] | 0;\n c = d + a | 0;\n if ((a | 0) > 0 & (c | 0) < (d | 0) | (c | 0) < 0) {\n M(c | 0);\n I(12);\n return -1;\n }\n if ((c | 0) > (e | 0)) {\n if (!(L(c | 0) | 0)) {\n I(12);\n return -1;\n }\n }\n b[g >> 2] = c;\n return d | 0;\n } // EMSCRIPTEN_END_FUNCS\n return {\n ___uremdi3: ad,\n _bitshift64Lshr: bd,\n _bitshift64Shl: cd,\n _calloc: Xc,\n _cellAreaKm2: ub,\n _cellAreaM2: vb,\n _cellAreaRads2: tb,\n _compact: Gb,\n _destroyLinkedPolygon: ic,\n _edgeLengthKm: pb,\n _edgeLengthM: qb,\n _emscripten_replace_memory: V,\n _exactEdgeLengthKm: xb,\n _exactEdgeLengthM: yb,\n _exactEdgeLengthRads: wb,\n _experimentalH3ToLocalIj: nc,\n _experimentalLocalIjToH3: oc,\n _free: Wc,\n _geoToH3: Rb,\n _getDestinationH3IndexFromUnidirectionalEdge: bc,\n _getH3IndexesFromUnidirectionalEdge: dc,\n _getH3UnidirectionalEdge: $b,\n _getH3UnidirectionalEdgeBoundary: fc,\n _getH3UnidirectionalEdgesFromHexagon: ec,\n _getOriginH3IndexFromUnidirectionalEdge: ac,\n _getPentagonIndexes: Zb,\n _getRes0Indexes: va,\n _h3Distance: pc,\n _h3GetBaseCell: zb,\n _h3GetFaces: Xb,\n _h3IndexesAreNeighbors: _b,\n _h3IsPentagon: Eb,\n _h3IsResClassIII: Jb,\n _h3IsValid: Ab,\n _h3Line: rc,\n _h3LineSize: qc,\n _h3SetToLinkedGeo: ka,\n _h3ToCenterChild: Fb,\n _h3ToChildren: Db,\n _h3ToGeo: Ub,\n _h3ToGeoBoundary: Vb,\n _h3ToParent: Bb,\n _h3UnidirectionalEdgeIsValid: cc,\n _hexAreaKm2: nb,\n _hexAreaM2: ob,\n _hexRing: ea,\n _i64Subtract: Zc,\n _kRing: $,\n _kRingDistances: aa,\n _llvm_minnum_f64: dd,\n _llvm_round_f64: ed,\n _malloc: Vc,\n _maxFaceCount: Wb,\n _maxH3ToChildrenSize: Cb,\n _maxKringSize: _,\n _maxPolyfillSize: fa,\n _maxUncompactSize: Ib,\n _memcpy: fd,\n _memset: gd,\n _numHexagons: rb,\n _pentagonIndexCount: Yb,\n _pointDistKm: jb,\n _pointDistM: kb,\n _pointDistRads: ib,\n _polyfill: ga,\n _res0IndexCount: ua,\n _round: hd,\n _sbrk: id,\n _sizeOfCoordIJ: Dc,\n _sizeOfGeoBoundary: zc,\n _sizeOfGeoCoord: yc,\n _sizeOfGeoPolygon: Bc,\n _sizeOfGeofence: Ac,\n _sizeOfH3Index: xc,\n _sizeOfLinkedGeoPolygon: Cc,\n _uncompact: Hb,\n establishStackSpace: Z,\n stackAlloc: W,\n stackRestore: Y,\n stackSave: X\n };\n }(asmGlobalArg, asmLibraryArg, buffer);\n var ___uremdi3 = Module[\"___uremdi3\"] = asm[\"___uremdi3\"];\n var _bitshift64Lshr = Module[\"_bitshift64Lshr\"] = asm[\"_bitshift64Lshr\"];\n var _bitshift64Shl = Module[\"_bitshift64Shl\"] = asm[\"_bitshift64Shl\"];\n var _calloc = Module[\"_calloc\"] = asm[\"_calloc\"];\n var _cellAreaKm2 = Module[\"_cellAreaKm2\"] = asm[\"_cellAreaKm2\"];\n var _cellAreaM2 = Module[\"_cellAreaM2\"] = asm[\"_cellAreaM2\"];\n var _cellAreaRads2 = Module[\"_cellAreaRads2\"] = asm[\"_cellAreaRads2\"];\n var _compact = Module[\"_compact\"] = asm[\"_compact\"];\n var _destroyLinkedPolygon = Module[\"_destroyLinkedPolygon\"] = asm[\"_destroyLinkedPolygon\"];\n var _edgeLengthKm = Module[\"_edgeLengthKm\"] = asm[\"_edgeLengthKm\"];\n var _edgeLengthM = Module[\"_edgeLengthM\"] = asm[\"_edgeLengthM\"];\n var _emscripten_replace_memory = Module[\"_emscripten_replace_memory\"] = asm[\"_emscripten_replace_memory\"];\n var _exactEdgeLengthKm = Module[\"_exactEdgeLengthKm\"] = asm[\"_exactEdgeLengthKm\"];\n var _exactEdgeLengthM = Module[\"_exactEdgeLengthM\"] = asm[\"_exactEdgeLengthM\"];\n var _exactEdgeLengthRads = Module[\"_exactEdgeLengthRads\"] = asm[\"_exactEdgeLengthRads\"];\n var _experimentalH3ToLocalIj = Module[\"_experimentalH3ToLocalIj\"] = asm[\"_experimentalH3ToLocalIj\"];\n var _experimentalLocalIjToH3 = Module[\"_experimentalLocalIjToH3\"] = asm[\"_experimentalLocalIjToH3\"];\n var _free = Module[\"_free\"] = asm[\"_free\"];\n var _geoToH3 = Module[\"_geoToH3\"] = asm[\"_geoToH3\"];\n var _getDestinationH3IndexFromUnidirectionalEdge = Module[\"_getDestinationH3IndexFromUnidirectionalEdge\"] = asm[\"_getDestinationH3IndexFromUnidirectionalEdge\"];\n var _getH3IndexesFromUnidirectionalEdge = Module[\"_getH3IndexesFromUnidirectionalEdge\"] = asm[\"_getH3IndexesFromUnidirectionalEdge\"];\n var _getH3UnidirectionalEdge = Module[\"_getH3UnidirectionalEdge\"] = asm[\"_getH3UnidirectionalEdge\"];\n var _getH3UnidirectionalEdgeBoundary = Module[\"_getH3UnidirectionalEdgeBoundary\"] = asm[\"_getH3UnidirectionalEdgeBoundary\"];\n var _getH3UnidirectionalEdgesFromHexagon = Module[\"_getH3UnidirectionalEdgesFromHexagon\"] = asm[\"_getH3UnidirectionalEdgesFromHexagon\"];\n var _getOriginH3IndexFromUnidirectionalEdge = Module[\"_getOriginH3IndexFromUnidirectionalEdge\"] = asm[\"_getOriginH3IndexFromUnidirectionalEdge\"];\n var _getPentagonIndexes = Module[\"_getPentagonIndexes\"] = asm[\"_getPentagonIndexes\"];\n var _getRes0Indexes = Module[\"_getRes0Indexes\"] = asm[\"_getRes0Indexes\"];\n var _h3Distance = Module[\"_h3Distance\"] = asm[\"_h3Distance\"];\n var _h3GetBaseCell = Module[\"_h3GetBaseCell\"] = asm[\"_h3GetBaseCell\"];\n var _h3GetFaces = Module[\"_h3GetFaces\"] = asm[\"_h3GetFaces\"];\n var _h3IndexesAreNeighbors = Module[\"_h3IndexesAreNeighbors\"] = asm[\"_h3IndexesAreNeighbors\"];\n var _h3IsPentagon = Module[\"_h3IsPentagon\"] = asm[\"_h3IsPentagon\"];\n var _h3IsResClassIII = Module[\"_h3IsResClassIII\"] = asm[\"_h3IsResClassIII\"];\n var _h3IsValid = Module[\"_h3IsValid\"] = asm[\"_h3IsValid\"];\n var _h3Line = Module[\"_h3Line\"] = asm[\"_h3Line\"];\n var _h3LineSize = Module[\"_h3LineSize\"] = asm[\"_h3LineSize\"];\n var _h3SetToLinkedGeo = Module[\"_h3SetToLinkedGeo\"] = asm[\"_h3SetToLinkedGeo\"];\n var _h3ToCenterChild = Module[\"_h3ToCenterChild\"] = asm[\"_h3ToCenterChild\"];\n var _h3ToChildren = Module[\"_h3ToChildren\"] = asm[\"_h3ToChildren\"];\n var _h3ToGeo = Module[\"_h3ToGeo\"] = asm[\"_h3ToGeo\"];\n var _h3ToGeoBoundary = Module[\"_h3ToGeoBoundary\"] = asm[\"_h3ToGeoBoundary\"];\n var _h3ToParent = Module[\"_h3ToParent\"] = asm[\"_h3ToParent\"];\n var _h3UnidirectionalEdgeIsValid = Module[\"_h3UnidirectionalEdgeIsValid\"] = asm[\"_h3UnidirectionalEdgeIsValid\"];\n var _hexAreaKm2 = Module[\"_hexAreaKm2\"] = asm[\"_hexAreaKm2\"];\n var _hexAreaM2 = Module[\"_hexAreaM2\"] = asm[\"_hexAreaM2\"];\n var _hexRing = Module[\"_hexRing\"] = asm[\"_hexRing\"];\n var _i64Subtract = Module[\"_i64Subtract\"] = asm[\"_i64Subtract\"];\n var _kRing = Module[\"_kRing\"] = asm[\"_kRing\"];\n var _kRingDistances = Module[\"_kRingDistances\"] = asm[\"_kRingDistances\"];\n var _llvm_minnum_f64 = Module[\"_llvm_minnum_f64\"] = asm[\"_llvm_minnum_f64\"];\n var _llvm_round_f64 = Module[\"_llvm_round_f64\"] = asm[\"_llvm_round_f64\"];\n var _malloc = Module[\"_malloc\"] = asm[\"_malloc\"];\n var _maxFaceCount = Module[\"_maxFaceCount\"] = asm[\"_maxFaceCount\"];\n var _maxH3ToChildrenSize = Module[\"_maxH3ToChildrenSize\"] = asm[\"_maxH3ToChildrenSize\"];\n var _maxKringSize = Module[\"_maxKringSize\"] = asm[\"_maxKringSize\"];\n var _maxPolyfillSize = Module[\"_maxPolyfillSize\"] = asm[\"_maxPolyfillSize\"];\n var _maxUncompactSize = Module[\"_maxUncompactSize\"] = asm[\"_maxUncompactSize\"];\n var _memcpy = Module[\"_memcpy\"] = asm[\"_memcpy\"];\n var _memset = Module[\"_memset\"] = asm[\"_memset\"];\n var _numHexagons = Module[\"_numHexagons\"] = asm[\"_numHexagons\"];\n var _pentagonIndexCount = Module[\"_pentagonIndexCount\"] = asm[\"_pentagonIndexCount\"];\n var _pointDistKm = Module[\"_pointDistKm\"] = asm[\"_pointDistKm\"];\n var _pointDistM = Module[\"_pointDistM\"] = asm[\"_pointDistM\"];\n var _pointDistRads = Module[\"_pointDistRads\"] = asm[\"_pointDistRads\"];\n var _polyfill = Module[\"_polyfill\"] = asm[\"_polyfill\"];\n var _res0IndexCount = Module[\"_res0IndexCount\"] = asm[\"_res0IndexCount\"];\n var _round = Module[\"_round\"] = asm[\"_round\"];\n var _sbrk = Module[\"_sbrk\"] = asm[\"_sbrk\"];\n var _sizeOfCoordIJ = Module[\"_sizeOfCoordIJ\"] = asm[\"_sizeOfCoordIJ\"];\n var _sizeOfGeoBoundary = Module[\"_sizeOfGeoBoundary\"] = asm[\"_sizeOfGeoBoundary\"];\n var _sizeOfGeoCoord = Module[\"_sizeOfGeoCoord\"] = asm[\"_sizeOfGeoCoord\"];\n var _sizeOfGeoPolygon = Module[\"_sizeOfGeoPolygon\"] = asm[\"_sizeOfGeoPolygon\"];\n var _sizeOfGeofence = Module[\"_sizeOfGeofence\"] = asm[\"_sizeOfGeofence\"];\n var _sizeOfH3Index = Module[\"_sizeOfH3Index\"] = asm[\"_sizeOfH3Index\"];\n var _sizeOfLinkedGeoPolygon = Module[\"_sizeOfLinkedGeoPolygon\"] = asm[\"_sizeOfLinkedGeoPolygon\"];\n var _uncompact = Module[\"_uncompact\"] = asm[\"_uncompact\"];\n var establishStackSpace = Module[\"establishStackSpace\"] = asm[\"establishStackSpace\"];\n var stackAlloc = Module[\"stackAlloc\"] = asm[\"stackAlloc\"];\n var stackRestore = Module[\"stackRestore\"] = asm[\"stackRestore\"];\n var stackSave = Module[\"stackSave\"] = asm[\"stackSave\"];\n Module[\"asm\"] = asm;\n Module[\"cwrap\"] = cwrap;\n Module[\"setValue\"] = setValue;\n Module[\"getValue\"] = getValue;\n Module[\"getTempRet0\"] = getTempRet0;\n if (memoryInitializer) {\n if (!isDataURI(memoryInitializer)) memoryInitializer = locateFile(memoryInitializer);\n addRunDependency(\"memory initializer\");\n var applyMemoryInitializer = function(data) {\n if (data.byteLength) data = new Uint8Array(data);\n HEAPU8.set(data, GLOBAL_BASE);\n if (Module[\"memoryInitializerRequest\"]) delete Module[\"memoryInitializerRequest\"].response;\n removeRunDependency(\"memory initializer\");\n };\n var doBrowserLoad = function() {\n readAsync(memoryInitializer, applyMemoryInitializer, function() {\n throw \"could not load memory initializer \" + memoryInitializer;\n });\n };\n var memoryInitializerBytes = tryParseAsDataURI(memoryInitializer);\n if (memoryInitializerBytes) applyMemoryInitializer(memoryInitializerBytes.buffer);\n else if (Module[\"memoryInitializerRequest\"]) {\n var useRequest = function() {\n var request = Module[\"memoryInitializerRequest\"];\n var response = request.response;\n if (request.status !== 200 && request.status !== 0) {\n var data = tryParseAsDataURI(Module[\"memoryInitializerRequestURL\"]);\n if (data) response = data.buffer;\n else {\n console.warn(\"a problem seems to have happened with Module.memoryInitializerRequest, status: \" + request.status + \", retrying \" + memoryInitializer);\n doBrowserLoad();\n return;\n }\n }\n applyMemoryInitializer(response);\n };\n if (Module[\"memoryInitializerRequest\"].response) setTimeout(useRequest, 0);\n else Module[\"memoryInitializerRequest\"].addEventListener(\"load\", useRequest);\n } else doBrowserLoad();\n }\n var calledRun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n function run(args) {\n args = args || arguments_;\n if (runDependencies > 0) return;\n preRun();\n if (runDependencies > 0) return;\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else doRun();\n }\n Module[\"run\"] = run;\n function abort(what) {\n if (Module[\"onAbort\"]) Module[\"onAbort\"](what);\n what += \"\";\n out(what);\n err(what);\n ABORT = true;\n throw \"abort(\" + what + \"). Build with -s ASSERTIONS=1 for more info.\";\n }\n Module[\"abort\"] = abort;\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [\n Module[\"preInit\"]\n ];\n while(Module[\"preInit\"].length > 0)Module[\"preInit\"].pop()();\n }\n run();\n return libh3;\n}(typeof $149c57bfd39d3746$var$libh3 === \"object\" ? $149c57bfd39d3746$var$libh3 : {});\n/*\n * Copyright 2018-2019 Uber Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ // Define the C bindings for the h3 library\n// Add some aliases to make the function definitions more intelligible\nvar $149c57bfd39d3746$var$NUMBER = \"number\";\nvar $149c57bfd39d3746$var$BOOLEAN = $149c57bfd39d3746$var$NUMBER;\nvar $149c57bfd39d3746$var$H3_LOWER = $149c57bfd39d3746$var$NUMBER;\nvar $149c57bfd39d3746$var$H3_UPPER = $149c57bfd39d3746$var$NUMBER;\nvar $149c57bfd39d3746$var$RESOLUTION = $149c57bfd39d3746$var$NUMBER;\nvar $149c57bfd39d3746$var$POINTER = $149c57bfd39d3746$var$NUMBER; // Define the bindings to functions in the C lib. Functions are defined as\n// [name, return type, [arg types]]. You must run `npm run build-emscripten`\n// before new functions added here will be available.\nvar $149c57bfd39d3746$var$BINDINGS = [\n [\n \"sizeOfH3Index\",\n $149c57bfd39d3746$var$NUMBER\n ],\n [\n \"sizeOfGeoCoord\",\n $149c57bfd39d3746$var$NUMBER\n ],\n [\n \"sizeOfGeoBoundary\",\n $149c57bfd39d3746$var$NUMBER\n ],\n [\n \"sizeOfGeoPolygon\",\n $149c57bfd39d3746$var$NUMBER\n ],\n [\n \"sizeOfGeofence\",\n $149c57bfd39d3746$var$NUMBER\n ],\n [\n \"sizeOfLinkedGeoPolygon\",\n $149c57bfd39d3746$var$NUMBER\n ],\n [\n \"sizeOfCoordIJ\",\n $149c57bfd39d3746$var$NUMBER\n ],\n [\n \"h3IsValid\",\n $149c57bfd39d3746$var$BOOLEAN,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"geoToH3\",\n $149c57bfd39d3746$var$H3_LOWER,\n [\n $149c57bfd39d3746$var$NUMBER,\n $149c57bfd39d3746$var$NUMBER,\n $149c57bfd39d3746$var$RESOLUTION\n ]\n ],\n [\n \"h3ToGeo\",\n null,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"h3ToGeoBoundary\",\n null,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"maxKringSize\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$NUMBER\n ]\n ],\n [\n \"kRing\",\n null,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$NUMBER,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"kRingDistances\",\n null,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$NUMBER,\n $149c57bfd39d3746$var$POINTER,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"hexRing\",\n null,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$NUMBER,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"maxPolyfillSize\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$POINTER,\n $149c57bfd39d3746$var$RESOLUTION\n ]\n ],\n [\n \"polyfill\",\n null,\n [\n $149c57bfd39d3746$var$POINTER,\n $149c57bfd39d3746$var$RESOLUTION,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"h3SetToLinkedGeo\",\n null,\n [\n $149c57bfd39d3746$var$POINTER,\n $149c57bfd39d3746$var$NUMBER,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"destroyLinkedPolygon\",\n null,\n [\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"compact\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$POINTER,\n $149c57bfd39d3746$var$POINTER,\n $149c57bfd39d3746$var$NUMBER\n ]\n ],\n [\n \"uncompact\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$POINTER,\n $149c57bfd39d3746$var$NUMBER,\n $149c57bfd39d3746$var$POINTER,\n $149c57bfd39d3746$var$NUMBER,\n $149c57bfd39d3746$var$RESOLUTION\n ]\n ],\n [\n \"maxUncompactSize\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$POINTER,\n $149c57bfd39d3746$var$NUMBER,\n $149c57bfd39d3746$var$RESOLUTION\n ]\n ],\n [\n \"h3IsPentagon\",\n $149c57bfd39d3746$var$BOOLEAN,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"h3IsResClassIII\",\n $149c57bfd39d3746$var$BOOLEAN,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"h3GetBaseCell\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"maxFaceCount\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"h3GetFaces\",\n null,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"h3ToParent\",\n $149c57bfd39d3746$var$H3_LOWER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$RESOLUTION\n ]\n ],\n [\n \"h3ToChildren\",\n null,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$RESOLUTION,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"h3ToCenterChild\",\n $149c57bfd39d3746$var$H3_LOWER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$RESOLUTION\n ]\n ],\n [\n \"maxH3ToChildrenSize\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$RESOLUTION\n ]\n ],\n [\n \"h3IndexesAreNeighbors\",\n $149c57bfd39d3746$var$BOOLEAN,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"getH3UnidirectionalEdge\",\n $149c57bfd39d3746$var$H3_LOWER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"getOriginH3IndexFromUnidirectionalEdge\",\n $149c57bfd39d3746$var$H3_LOWER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"getDestinationH3IndexFromUnidirectionalEdge\",\n $149c57bfd39d3746$var$H3_LOWER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"h3UnidirectionalEdgeIsValid\",\n $149c57bfd39d3746$var$BOOLEAN,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"getH3IndexesFromUnidirectionalEdge\",\n null,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"getH3UnidirectionalEdgesFromHexagon\",\n null,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"getH3UnidirectionalEdgeBoundary\",\n null,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"h3Distance\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"h3Line\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"h3LineSize\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"experimentalH3ToLocalIj\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"experimentalLocalIjToH3\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER,\n $149c57bfd39d3746$var$POINTER,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"hexAreaM2\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$RESOLUTION\n ]\n ],\n [\n \"hexAreaKm2\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$RESOLUTION\n ]\n ],\n [\n \"edgeLengthM\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$RESOLUTION\n ]\n ],\n [\n \"edgeLengthKm\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$RESOLUTION\n ]\n ],\n [\n \"pointDistM\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$POINTER,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"pointDistKm\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$POINTER,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"pointDistRads\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$POINTER,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"cellAreaM2\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"cellAreaKm2\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"cellAreaRads2\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"exactEdgeLengthM\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"exactEdgeLengthKm\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"exactEdgeLengthRads\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$H3_LOWER,\n $149c57bfd39d3746$var$H3_UPPER\n ]\n ],\n [\n \"numHexagons\",\n $149c57bfd39d3746$var$NUMBER,\n [\n $149c57bfd39d3746$var$RESOLUTION\n ]\n ],\n [\n \"getRes0Indexes\",\n null,\n [\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"res0IndexCount\",\n $149c57bfd39d3746$var$NUMBER\n ],\n [\n \"getPentagonIndexes\",\n null,\n [\n $149c57bfd39d3746$var$NUMBER,\n $149c57bfd39d3746$var$POINTER\n ]\n ],\n [\n \"pentagonIndexCount\",\n $149c57bfd39d3746$var$NUMBER\n ]\n];\n/*\n * Copyright 2018-2019 Uber Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ var $149c57bfd39d3746$var$H3 = {}; // Create the bound functions themselves\n$149c57bfd39d3746$var$BINDINGS.forEach(function bind(def) {\n $149c57bfd39d3746$var$H3[def[0]] = $149c57bfd39d3746$var$libh3.cwrap.apply($149c57bfd39d3746$var$libh3, def);\n}); // Alias the hexidecimal base for legibility\nvar $149c57bfd39d3746$var$BASE_16 = 16; // ----------------------------------------------------------------------------\n// Byte size imports\nvar $149c57bfd39d3746$var$SZ_INT = 4;\nvar $149c57bfd39d3746$var$SZ_PTR = 4;\nvar $149c57bfd39d3746$var$SZ_DBL = 8;\nvar $149c57bfd39d3746$var$SZ_H3INDEX = $149c57bfd39d3746$var$H3.sizeOfH3Index();\nvar $149c57bfd39d3746$var$SZ_GEOCOORD = $149c57bfd39d3746$var$H3.sizeOfGeoCoord();\nvar $149c57bfd39d3746$var$SZ_GEOBOUNDARY = $149c57bfd39d3746$var$H3.sizeOfGeoBoundary();\nvar $149c57bfd39d3746$var$SZ_GEOPOLYGON = $149c57bfd39d3746$var$H3.sizeOfGeoPolygon();\nvar $149c57bfd39d3746$var$SZ_GEOFENCE = $149c57bfd39d3746$var$H3.sizeOfGeofence();\nvar $149c57bfd39d3746$var$SZ_LINKED_GEOPOLYGON = $149c57bfd39d3746$var$H3.sizeOfLinkedGeoPolygon();\nvar $149c57bfd39d3746$var$SZ_COORDIJ = $149c57bfd39d3746$var$H3.sizeOfCoordIJ(); // ----------------------------------------------------------------------------\n// Custom types\n/**\n * 64-bit hexidecimal string representation of an H3 index\n * @static\n * @typedef {string} H3Index\n */ /**\n * 64-bit hexidecimal string representation of an H3 index,\n * or two 32-bit integers in little endian order in an array.\n * @static\n * @typedef {string | number[]} H3IndexInput\n */ /**\n * Coordinates as an `{i, j}` pair\n * @static\n * @typedef CoordIJ\n * @type {Object}\n * @property {number} i\n * @property {number} j\n */ // ----------------------------------------------------------------------------\n// Unit constants\n/**\n * Length/Area units\n * @static\n * @typedef UNITS\n * @type {Object}\n * @property {string} m\n * @property {string} m2\n * @property {string} km\n * @property {string} km2\n * @property {string} rads\n * @property {string} rads2\n */ var $149c57bfd39d3746$export$a037d132965e1c9f = {\n m: \"m\",\n m2: \"m2\",\n km: \"km\",\n km2: \"km2\",\n rads: \"rads\",\n rads2: \"rads2\"\n}; // ----------------------------------------------------------------------------\n// Utilities and helpers\n/**\n * Validate a resolution, throwing an error if invalid\n * @private\n * @param {mixed} res Value to validate\n * @throws {Error} Error if invalid\n */ function $149c57bfd39d3746$var$validateRes(res) {\n if (typeof res !== \"number\" || res < 0 || res > 15 || Math.floor(res) !== res) throw new Error(\"Invalid resolution: \" + res);\n}\nvar $149c57bfd39d3746$var$INVALID_HEXIDECIMAL_CHAR = /[^0-9a-fA-F]/;\n/**\n * Convert an H3 index (64-bit hexidecimal string) into a \"split long\" - a pair of 32-bit ints\n * @private\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {number[]} A two-element array with 32 lower bits and 32 upper bits\n */ function $149c57bfd39d3746$var$h3IndexToSplitLong(h3Index) {\n if (Array.isArray(h3Index) && h3Index.length === 2 && Number.isInteger(h3Index[0]) && Number.isInteger(h3Index[1])) return h3Index;\n if (typeof h3Index !== \"string\" || $149c57bfd39d3746$var$INVALID_HEXIDECIMAL_CHAR.test(h3Index)) return [\n 0,\n 0\n ];\n var upper = parseInt(h3Index.substring(0, h3Index.length - 8), $149c57bfd39d3746$var$BASE_16);\n var lower = parseInt(h3Index.substring(h3Index.length - 8), $149c57bfd39d3746$var$BASE_16);\n return [\n lower,\n upper\n ];\n}\n/**\n * Convert a 32-bit int to a hexdecimal string\n * @private\n * @param {number} num Integer to convert\n * @return {H3Index} Hexidecimal string\n */ function $149c57bfd39d3746$var$hexFrom32Bit(num) {\n if (num >= 0) return num.toString($149c57bfd39d3746$var$BASE_16);\n // Handle negative numbers\n num = num & 0x7fffffff;\n var tempStr = $149c57bfd39d3746$var$zeroPad(8, num.toString($149c57bfd39d3746$var$BASE_16));\n var topNum = (parseInt(tempStr[0], $149c57bfd39d3746$var$BASE_16) + 8).toString($149c57bfd39d3746$var$BASE_16);\n tempStr = topNum + tempStr.substring(1);\n return tempStr;\n}\n/**\n * Get a H3 index from a split long (pair of 32-bit ints)\n * @private\n * @param {number} lower Lower 32 bits\n * @param {number} upper Upper 32 bits\n * @return {H3Index} H3 index\n */ function $149c57bfd39d3746$var$splitLongToh3Index(lower, upper) {\n return $149c57bfd39d3746$var$hexFrom32Bit(upper) + $149c57bfd39d3746$var$zeroPad(8, $149c57bfd39d3746$var$hexFrom32Bit(lower));\n}\n/**\n * Zero-pad a string to a given length\n * @private\n * @param {number} fullLen Target length\n * @param {string} numStr String to zero-pad\n * @return {string} Zero-padded string\n */ function $149c57bfd39d3746$var$zeroPad(fullLen, numStr) {\n var numZeroes = fullLen - numStr.length;\n var outStr = \"\";\n for(var i = 0; i < numZeroes; i++)outStr += \"0\";\n outStr = outStr + numStr;\n return outStr;\n}\n/**\n * Populate a C-appropriate Geofence struct from a polygon array\n * @private\n * @param {Array[]} polygonArray Polygon, as an array of coordinate pairs\n * @param {number} geofence C pointer to a Geofence struct\n * @param {boolean} isGeoJson Whether coordinates are in [lng, lat] order per GeoJSON spec\n * @return {number} C pointer to populated Geofence struct\n */ function $149c57bfd39d3746$var$polygonArrayToGeofence(polygonArray, geofence, isGeoJson) {\n var numVerts = polygonArray.length;\n var geoCoordArray = $149c57bfd39d3746$var$libh3._calloc(numVerts, $149c57bfd39d3746$var$SZ_GEOCOORD); // Support [lng, lat] pairs if GeoJSON is specified\n var latIndex = isGeoJson ? 1 : 0;\n var lngIndex = isGeoJson ? 0 : 1;\n for(var i = 0; i < numVerts * 2; i += 2)$149c57bfd39d3746$var$libh3.HEAPF64.set([\n polygonArray[i / 2][latIndex],\n polygonArray[i / 2][lngIndex]\n ].map($149c57bfd39d3746$export$18f2af2888c1a46b), geoCoordArray / $149c57bfd39d3746$var$SZ_DBL + i);\n $149c57bfd39d3746$var$libh3.HEAPU32.set([\n numVerts,\n geoCoordArray\n ], geofence / $149c57bfd39d3746$var$SZ_INT);\n return geofence;\n}\n/**\n * Create a C-appropriate GeoPolygon struct from an array of polygons\n * @private\n * @param {Array[]} coordinates Array of polygons, each an array of coordinate pairs\n * @param {boolean} isGeoJson Whether coordinates are in [lng, lat] order per GeoJSON spec\n * @return {number} C pointer to populated GeoPolygon struct\n */ function $149c57bfd39d3746$var$coordinatesToGeoPolygon(coordinates, isGeoJson) {\n // Any loops beyond the first loop are holes\n var numHoles = coordinates.length - 1;\n var geoPolygon = $149c57bfd39d3746$var$libh3._calloc($149c57bfd39d3746$var$SZ_GEOPOLYGON); // Byte positions within the struct\n var geofenceOffset = 0;\n var numHolesOffset = geofenceOffset + $149c57bfd39d3746$var$SZ_GEOFENCE;\n var holesOffset = numHolesOffset + $149c57bfd39d3746$var$SZ_INT; // geofence is first part of struct\n $149c57bfd39d3746$var$polygonArrayToGeofence(coordinates[0], geoPolygon + geofenceOffset, isGeoJson);\n var holes;\n if (numHoles > 0) {\n holes = $149c57bfd39d3746$var$libh3._calloc(numHoles, $149c57bfd39d3746$var$SZ_GEOFENCE);\n for(var i = 0; i < numHoles; i++)$149c57bfd39d3746$var$polygonArrayToGeofence(coordinates[i + 1], holes + $149c57bfd39d3746$var$SZ_GEOFENCE * i, isGeoJson);\n }\n $149c57bfd39d3746$var$libh3.setValue(geoPolygon + numHolesOffset, numHoles, \"i32\");\n $149c57bfd39d3746$var$libh3.setValue(geoPolygon + holesOffset, holes, \"i32\");\n return geoPolygon;\n}\n/**\n * Free memory allocated for a GeoPolygon struct. It is an error to access the struct\n * after passing it to this method.\n * @private\n * @return {number} geoPolygon C pointer to populated GeoPolygon struct\n */ function $149c57bfd39d3746$var$destroyGeoPolygon(geoPolygon) {\n // Byte positions within the struct\n var geofenceOffset = 0;\n var numHolesOffset = geofenceOffset + $149c57bfd39d3746$var$SZ_GEOFENCE;\n var holesOffset = numHolesOffset + $149c57bfd39d3746$var$SZ_INT; // Free the outer loop\n $149c57bfd39d3746$var$libh3._free($149c57bfd39d3746$var$libh3.getValue(geoPolygon + geofenceOffset, \"i8*\")); // Free the holes, if any\n var numHoles = $149c57bfd39d3746$var$libh3.getValue(geoPolygon + numHolesOffset, \"i32\");\n for(var i = 0; i < numHoles; i++)$149c57bfd39d3746$var$libh3._free($149c57bfd39d3746$var$libh3.getValue(geoPolygon + holesOffset + $149c57bfd39d3746$var$SZ_GEOFENCE * i, \"i8*\"));\n $149c57bfd39d3746$var$libh3._free(geoPolygon);\n}\n/**\n * Read a long value, returning the lower and upper portions as separate 32-bit integers.\n * Because the upper bits are returned via side effect, the argument to this function is\n * intended to be the invocation that caused the side effect, e.g. readLong(H3.getSomeLong())\n * @private\n * @param {number} invocation Invoked function returning a long value. The actual return\n * value of these functions is a 32-bit integer.\n * @return {number} Long value as a [lower, upper] pair\n */ function $149c57bfd39d3746$var$readLong(invocation) {\n // Upper 32-bits of the long set via side-effect\n var upper = $149c57bfd39d3746$var$libh3.getTempRet0();\n return [\n invocation,\n upper\n ];\n}\n/**\n * Read an H3 index from a C return value. As with readLong, the argument to this function\n * is intended to be an invocation, e.g. readH3Index(H3.getSomeAddress()), to help ensure that\n * the temp value storing the upper bits of the long is still set.\n * @private\n * @param {number} invocation Invoked function returning a single H3 index\n * @return {H3Index} H3 index, or null if index was invalid\n */ function $149c57bfd39d3746$var$readH3Index(invocation) {\n var ref = $149c57bfd39d3746$var$readLong(invocation);\n var lower = ref[0];\n var upper = ref[1]; // The lower bits are allowed to be 0s, but if the upper bits are 0\n // this represents an invalid H3 index\n return upper ? $149c57bfd39d3746$var$splitLongToh3Index(lower, upper) : null;\n}\n/**\n * Read an H3 index from a pointer to C memory.\n * @private\n * @param {number} cAddress Pointer to allocated C memory\n * @param {number} offset Offset, in number of H3 indexes, in case we're\n * reading an array\n * @return {H3Index} H3 index, or null if index was invalid\n */ function $149c57bfd39d3746$var$readH3IndexFromPointer(cAddress, offset) {\n if (offset === void 0) offset = 0;\n var lower = $149c57bfd39d3746$var$libh3.getValue(cAddress + $149c57bfd39d3746$var$SZ_INT * offset * 2, \"i32\");\n var upper = $149c57bfd39d3746$var$libh3.getValue(cAddress + $149c57bfd39d3746$var$SZ_INT * (offset * 2 + 1), \"i32\"); // The lower bits are allowed to be 0s, but if the upper bits are 0\n // this represents an invalid H3 index\n return upper ? $149c57bfd39d3746$var$splitLongToh3Index(lower, upper) : null;\n}\n/**\n * Store an H3 index in C memory. Primarily used as an efficient way to\n * write sets of hexagons.\n * @private\n * @param {H3IndexInput} h3Index H3 index to store\n * @param {number} cAddress Pointer to allocated C memory\n * @param {number} offset Offset, in number of H3 indexes from beginning\n * of the current array\n */ function $149c57bfd39d3746$var$storeH3Index(h3Index, cAddress, offset) {\n // HEAPU32 is a typed array projection on the index space\n // as unsigned 32-bit integers. This means the index needs\n // to be divided by SZ_INT (4) to access correctly. Also,\n // the H3 index is 64 bits, so we skip by twos as we're writing\n // to 32-bit integers in the proper order.\n $149c57bfd39d3746$var$libh3.HEAPU32.set($149c57bfd39d3746$var$h3IndexToSplitLong(h3Index), cAddress / $149c57bfd39d3746$var$SZ_INT + 2 * offset);\n}\n/**\n * Read an array of 64-bit H3 indexes from C and convert to a JS array of\n * H3 index strings\n * @private\n * @param {number} cAddress Pointer to C ouput array\n * @param {number} maxCount Max number of hexagons in array. Hexagons with\n * the value 0 will be skipped, so this isn't\n * necessarily the length of the output array.\n * @return {H3Index[]} Array of H3 indexes\n */ function $149c57bfd39d3746$var$readArrayOfHexagons(cAddress, maxCount) {\n var out = [];\n for(var i = 0; i < maxCount; i++){\n var h3Index = $149c57bfd39d3746$var$readH3IndexFromPointer(cAddress, i);\n if (h3Index !== null) out.push(h3Index);\n }\n return out;\n}\n/**\n * Store an array of H3 index strings as a C array of 64-bit integers.\n * @private\n * @param {number} cAddress Pointer to C input array\n * @param {H3IndexInput[]} hexagons H3 indexes to pass to the C lib\n */ function $149c57bfd39d3746$var$storeArrayOfHexagons(cAddress, hexagons) {\n // Assuming the cAddress points to an already appropriately\n // allocated space\n var count = hexagons.length;\n for(var i = 0; i < count; i++)$149c57bfd39d3746$var$storeH3Index(hexagons[i], cAddress, i);\n}\n/**\n * Populate a C-appropriate GeoCoord struct from a [lat, lng] array\n * @private\n * @param {number} lat Coordinate latitude\n * @param {number} lng Coordinate longitude\n * @return {number} C pointer to populated GeoCoord struct\n */ function $149c57bfd39d3746$var$storeGeoCoord(lat, lng) {\n var geoCoord = $149c57bfd39d3746$var$libh3._calloc(1, $149c57bfd39d3746$var$SZ_GEOCOORD);\n $149c57bfd39d3746$var$libh3.HEAPF64.set([\n lat,\n lng\n ].map($149c57bfd39d3746$export$18f2af2888c1a46b), geoCoord / $149c57bfd39d3746$var$SZ_DBL);\n return geoCoord;\n}\nfunction $149c57bfd39d3746$var$readSingleCoord(cAddress) {\n return $149c57bfd39d3746$export$3eb27537c08caf0f($149c57bfd39d3746$var$libh3.getValue(cAddress, \"double\"));\n}\n/**\n * Read a GeoCoord from C and return a [lat, lng] pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {number[]} [lat, lng] pair\n */ function $149c57bfd39d3746$var$readGeoCoord(cAddress) {\n return [\n $149c57bfd39d3746$var$readSingleCoord(cAddress),\n $149c57bfd39d3746$var$readSingleCoord(cAddress + $149c57bfd39d3746$var$SZ_DBL)\n ];\n}\n/**\n * Read a GeoCoord from C and return a GeoJSON-style [lng, lat] pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {number[]} [lng, lat] pair\n */ function $149c57bfd39d3746$var$readGeoCoordGeoJson(cAddress) {\n return [\n $149c57bfd39d3746$var$readSingleCoord(cAddress + $149c57bfd39d3746$var$SZ_DBL),\n $149c57bfd39d3746$var$readSingleCoord(cAddress)\n ];\n}\n/**\n * Read the GeoBoundary structure into a list of geo coordinate pairs\n * @private\n * @param {number} geoBoundary C pointer to GeoBoundary struct\n * @param {boolean} geoJsonCoords Whether to provide GeoJSON coordinate order: [lng, lat]\n * @param {boolean} closedLoop Whether to close the loop\n * @return {Array[]} Array of geo coordinate pairs\n */ function $149c57bfd39d3746$var$readGeoBoundary(geoBoundary, geoJsonCoords, closedLoop) {\n var numVerts = $149c57bfd39d3746$var$libh3.getValue(geoBoundary, \"i32\"); // Note that though numVerts is an int, the coordinate doubles have to be\n // aligned to 8 bytes, hence the 8-byte offset here\n var vertsPos = geoBoundary + $149c57bfd39d3746$var$SZ_DBL;\n var out = []; // Support [lng, lat] pairs if GeoJSON is specified\n var readCoord = geoJsonCoords ? $149c57bfd39d3746$var$readGeoCoordGeoJson : $149c57bfd39d3746$var$readGeoCoord;\n for(var i = 0; i < numVerts * 2; i += 2)out.push(readCoord(vertsPos + $149c57bfd39d3746$var$SZ_DBL * i));\n if (closedLoop) // Close loop if GeoJSON is specified\n out.push(out[0]);\n return out;\n}\n/**\n * Read the LinkedGeoPolygon structure into a nested array of MultiPolygon coordinates\n * @private\n * @param {number} polygon C pointer to LinkedGeoPolygon struct\n * @param {boolean} formatAsGeoJson Whether to provide GeoJSON output: [lng, lat], closed loops\n * @return {number[][][][]} MultiPolygon-style output.\n */ function $149c57bfd39d3746$var$readMultiPolygon(polygon, formatAsGeoJson) {\n var output = [];\n var readCoord = formatAsGeoJson ? $149c57bfd39d3746$var$readGeoCoordGeoJson : $149c57bfd39d3746$var$readGeoCoord;\n var loops;\n var loop;\n var coords;\n var coord; // Loop through the linked structure, building the output\n while(polygon){\n output.push(loops = []); // Follow ->first pointer\n loop = $149c57bfd39d3746$var$libh3.getValue(polygon, \"i8*\");\n while(loop){\n loops.push(coords = []); // Follow ->first pointer\n coord = $149c57bfd39d3746$var$libh3.getValue(loop, \"i8*\");\n while(coord){\n coords.push(readCoord(coord)); // Follow ->next pointer\n coord = $149c57bfd39d3746$var$libh3.getValue(coord + $149c57bfd39d3746$var$SZ_DBL * 2, \"i8*\");\n }\n if (formatAsGeoJson) // Close loop if GeoJSON is requested\n coords.push(coords[0]);\n // Follow ->next pointer\n loop = $149c57bfd39d3746$var$libh3.getValue(loop + $149c57bfd39d3746$var$SZ_PTR * 2, \"i8*\");\n } // Follow ->next pointer\n polygon = $149c57bfd39d3746$var$libh3.getValue(polygon + $149c57bfd39d3746$var$SZ_PTR * 2, \"i8*\");\n }\n return output;\n}\n/**\n * Read a CoordIJ from C and return an {i, j} pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {CoordIJ} {i, j} pair\n */ function $149c57bfd39d3746$var$readCoordIJ(cAddress) {\n return {\n i: $149c57bfd39d3746$var$libh3.getValue(cAddress, \"i32\"),\n j: $149c57bfd39d3746$var$libh3.getValue(cAddress + $149c57bfd39d3746$var$SZ_INT, \"i32\")\n };\n}\n/**\n * Store an {i, j} pair to a C CoordIJ struct.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {CoordIJ} {i, j} pair\n */ function $149c57bfd39d3746$var$storeCoordIJ(cAddress, ref) {\n var i = ref.i;\n var j = ref.j;\n $149c57bfd39d3746$var$libh3.setValue(cAddress, i, \"i32\");\n $149c57bfd39d3746$var$libh3.setValue(cAddress + $149c57bfd39d3746$var$SZ_INT, j, \"i32\");\n}\n/**\n * Read an array of positive integers array from C. Negative\n * values are considered invalid and ignored in output.\n * @private\n * @param {number} cAddress Pointer to C array\n * @param {number} count Length of C array\n * @return {number[]} Javascript integer array\n */ function $149c57bfd39d3746$var$readArrayOfPositiveIntegers(cAddress, count) {\n var out = [];\n for(var i = 0; i < count; i++){\n var int = $149c57bfd39d3746$var$libh3.getValue(cAddress + $149c57bfd39d3746$var$SZ_INT * i, \"i32\");\n if (int >= 0) out.push(int);\n }\n return out;\n} // ----------------------------------------------------------------------------\n// Public API functions: Core\n/**\n * Whether a given string represents a valid H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} Whether the index is valid\n */ function $149c57bfd39d3746$export$c1faec3db2fca891(h3Index) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean($149c57bfd39d3746$var$H3.h3IsValid(lower, upper));\n}\n/**\n * Whether the given H3 index is a pentagon\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} isPentagon\n */ function $149c57bfd39d3746$export$9e7403b9b01e136f(h3Index) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean($149c57bfd39d3746$var$H3.h3IsPentagon(lower, upper));\n}\n/**\n * Whether the given H3 index is in a Class III resolution (rotated versus\n * the icosahedron and subject to shape distortion adding extra points on\n * icosahedron edges, making them not true hexagons).\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} isResClassIII\n */ function $149c57bfd39d3746$export$6019beb3542e7aad(h3Index) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean($149c57bfd39d3746$var$H3.h3IsResClassIII(lower, upper));\n}\n/**\n * Get the number of the base cell for a given H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get the base cell for\n * @return {number} Index of the base cell (0-121)\n */ function $149c57bfd39d3746$export$558febf58c7ab0b8(h3Index) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return $149c57bfd39d3746$var$H3.h3GetBaseCell(lower, upper);\n}\n/**\n * Get the indices of all icosahedron faces intersected by a given H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get faces for\n * @return {number[]} Indices (0-19) of all intersected faces\n */ function $149c57bfd39d3746$export$d1cf4a12a694db3a(h3Index) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var count = $149c57bfd39d3746$var$H3.maxFaceCount(lower, upper);\n var faces = $149c57bfd39d3746$var$libh3._malloc($149c57bfd39d3746$var$SZ_INT * count);\n $149c57bfd39d3746$var$H3.h3GetFaces(lower, upper, faces);\n var out = $149c57bfd39d3746$var$readArrayOfPositiveIntegers(faces, count);\n $149c57bfd39d3746$var$libh3._free(faces);\n return out;\n}\n/**\n * Returns the resolution of an H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get resolution\n * @return {number} The number (0-15) resolution, or -1 if invalid\n */ function $149c57bfd39d3746$export$6827467f3394e8f4(h3Index) {\n if (typeof h3Index !== \"string\") return -1;\n return parseInt(h3Index.charAt(1), $149c57bfd39d3746$var$BASE_16);\n}\n/**\n * Get the hexagon containing a lat,lon point\n * @static\n * @param {number} lat Latitude of point\n * @param {number} lng Longtitude of point\n * @param {number} res Resolution of hexagons to return\n * @return {H3Index} H3 index\n */ function $149c57bfd39d3746$export$24131a74a154ec65(lat, lng, res) {\n var latlng = $149c57bfd39d3746$var$libh3._malloc($149c57bfd39d3746$var$SZ_GEOCOORD); // Slightly more efficient way to set the memory\n $149c57bfd39d3746$var$libh3.HEAPF64.set([\n lat,\n lng\n ].map($149c57bfd39d3746$export$18f2af2888c1a46b), latlng / $149c57bfd39d3746$var$SZ_DBL); // Read value as a split long\n var h3Index = $149c57bfd39d3746$var$readH3Index($149c57bfd39d3746$var$H3.geoToH3(latlng, res));\n $149c57bfd39d3746$var$libh3._free(latlng);\n return h3Index;\n}\n/**\n * Get the lat,lon center of a given hexagon\n * @static\n * @param {H3IndexInput} h3Index H3 index\n * @return {number[]} Point as a [lat, lng] pair\n */ function $149c57bfd39d3746$export$317dd65f3721e7c4(h3Index) {\n var latlng = $149c57bfd39d3746$var$libh3._malloc($149c57bfd39d3746$var$SZ_GEOCOORD);\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n $149c57bfd39d3746$var$H3.h3ToGeo(lower, upper, latlng);\n var out = $149c57bfd39d3746$var$readGeoCoord(latlng);\n $149c57bfd39d3746$var$libh3._free(latlng);\n return out;\n}\n/**\n * Get the vertices of a given hexagon (or pentagon), as an array of [lat, lng]\n * points. For pentagons and hexagons on the edge of an icosahedron face, this\n * function may return up to 10 vertices.\n * @static\n * @param {H3Index} h3Index H3 index\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat], closed loops\n * @return {number[][]} Array of [lat, lng] pairs\n */ function $149c57bfd39d3746$export$c87d5f55314c67cf(h3Index, formatAsGeoJson) {\n var geoBoundary = $149c57bfd39d3746$var$libh3._malloc($149c57bfd39d3746$var$SZ_GEOBOUNDARY);\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n $149c57bfd39d3746$var$H3.h3ToGeoBoundary(lower, upper, geoBoundary);\n var out = $149c57bfd39d3746$var$readGeoBoundary(geoBoundary, formatAsGeoJson, formatAsGeoJson);\n $149c57bfd39d3746$var$libh3._free(geoBoundary);\n return out;\n} // ----------------------------------------------------------------------------\n// Public API functions: Algorithms\n/**\n * Get the parent of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get parent for\n * @param {number} res Resolution of hexagon to return\n * @return {H3Index} H3 index of parent, or null for invalid input\n */ function $149c57bfd39d3746$export$6e83bc1001b134db(h3Index, res) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return $149c57bfd39d3746$var$readH3Index($149c57bfd39d3746$var$H3.h3ToParent(lower, upper, res));\n}\n/**\n * Get the children/descendents of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get children for\n * @param {number} res Resolution of hexagons to return\n * @return {H3Index[]} H3 indexes of children, or empty array for invalid input\n */ function $149c57bfd39d3746$export$e8b20439271d254c(h3Index, res) {\n // Bad input in this case can potentially result in high computation volume\n // using the current C algorithm. Validate and return an empty array on failure.\n if (!$149c57bfd39d3746$export$c1faec3db2fca891(h3Index)) return [];\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var maxCount = $149c57bfd39d3746$var$H3.maxH3ToChildrenSize(lower, upper, res);\n var hexagons = $149c57bfd39d3746$var$libh3._calloc(maxCount, $149c57bfd39d3746$var$SZ_H3INDEX);\n $149c57bfd39d3746$var$H3.h3ToChildren(lower, upper, res, hexagons);\n var out = $149c57bfd39d3746$var$readArrayOfHexagons(hexagons, maxCount);\n $149c57bfd39d3746$var$libh3._free(hexagons);\n return out;\n}\n/**\n * Get the center child of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get center child for\n * @param {number} res Resolution of hexagon to return\n * @return {H3Index} H3 index of child, or null for invalid input\n */ function $149c57bfd39d3746$export$6db75718879de215(h3Index, res) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return $149c57bfd39d3746$var$readH3Index($149c57bfd39d3746$var$H3.h3ToCenterChild(lower, upper, res));\n}\n/**\n * Get all hexagons in a k-ring around a given center. The order of the hexagons is undefined.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of k-ring\n * @return {H3Index[]} H3 indexes for all hexagons in ring\n */ function $149c57bfd39d3746$export$36e8217e0351e612(h3Index, ringSize) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var maxCount = $149c57bfd39d3746$var$H3.maxKringSize(ringSize);\n var hexagons = $149c57bfd39d3746$var$libh3._calloc(maxCount, $149c57bfd39d3746$var$SZ_H3INDEX);\n $149c57bfd39d3746$var$H3.kRing(lower, upper, ringSize, hexagons);\n var out = $149c57bfd39d3746$var$readArrayOfHexagons(hexagons, maxCount);\n $149c57bfd39d3746$var$libh3._free(hexagons);\n return out;\n}\n/**\n * Get all hexagons in a k-ring around a given center, in an array of arrays\n * ordered by distance from the origin. The order of the hexagons within each ring is undefined.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of k-ring\n * @return {H3Index[][]} Array of arrays with H3 indexes for all hexagons each ring\n */ function $149c57bfd39d3746$export$501db62b56874355(h3Index, ringSize) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var maxCount = $149c57bfd39d3746$var$H3.maxKringSize(ringSize);\n var kRings = $149c57bfd39d3746$var$libh3._calloc(maxCount, $149c57bfd39d3746$var$SZ_H3INDEX);\n var distances = $149c57bfd39d3746$var$libh3._calloc(maxCount, $149c57bfd39d3746$var$SZ_INT);\n $149c57bfd39d3746$var$H3.kRingDistances(lower, upper, ringSize, kRings, distances); // Create an array of empty arrays to hold the output\n var out = [];\n for(var i = 0; i < ringSize + 1; i++)out.push([]);\n // Read the array of hexagons, putting them into the appropriate rings\n for(var i$1 = 0; i$1 < maxCount * 2; i$1 += 2){\n var hexLower = $149c57bfd39d3746$var$libh3.getValue(kRings + $149c57bfd39d3746$var$SZ_INT * i$1, \"i32\");\n var hexUpper = $149c57bfd39d3746$var$libh3.getValue(kRings + $149c57bfd39d3746$var$SZ_INT * (i$1 + 1), \"i32\");\n var index = $149c57bfd39d3746$var$libh3.getValue(distances + $149c57bfd39d3746$var$SZ_INT * (i$1 / 2), \"i32\");\n if (hexLower !== 0 || hexUpper !== 0) out[index].push($149c57bfd39d3746$var$splitLongToh3Index(hexLower, hexUpper));\n }\n $149c57bfd39d3746$var$libh3._free(kRings);\n $149c57bfd39d3746$var$libh3._free(distances);\n return out;\n}\n/**\n * Get all hexagons in a hollow hexagonal ring centered at origin with sides of a given length.\n * Unlike kRing, this function will throw an error if there is a pentagon anywhere in the ring.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of ring\n * @return {H3Index[]} H3 indexes for all hexagons in ring\n * @throws {Error} If the algorithm could not calculate the ring\n */ function $149c57bfd39d3746$export$496038b5ca9585a1(h3Index, ringSize) {\n var maxCount = ringSize === 0 ? 1 : 6 * ringSize;\n var hexagons = $149c57bfd39d3746$var$libh3._calloc(maxCount, $149c57bfd39d3746$var$SZ_H3INDEX);\n var retVal = $149c57bfd39d3746$var$H3.hexRing.apply($149c57bfd39d3746$var$H3, $149c57bfd39d3746$var$h3IndexToSplitLong(h3Index).concat([\n ringSize\n ], [\n hexagons\n ]));\n if (retVal !== 0) {\n $149c57bfd39d3746$var$libh3._free(hexagons);\n throw new Error(\"Failed to get hexRing (encountered a pentagon?)\");\n }\n var out = $149c57bfd39d3746$var$readArrayOfHexagons(hexagons, maxCount);\n $149c57bfd39d3746$var$libh3._free(hexagons);\n return out;\n}\n/**\n * Get all hexagons with centers contained in a given polygon. The polygon\n * is specified with GeoJson semantics as an array of loops. Each loop is\n * an array of [lat, lng] pairs (or [lng, lat] if isGeoJson is specified).\n * The first loop is the perimeter of the polygon, and subsequent loops are\n * expected to be holes.\n * @static\n * @param {number[][] | number[][][]} coordinates\n * Array of loops, or a single loop\n * @param {number} res Resolution of hexagons to return\n * @param {boolean} [isGeoJson] Whether to expect GeoJson-style [lng, lat]\n * pairs instead of [lat, lng]\n * @return {H3Index[]} H3 indexes for all hexagons in polygon\n */ function $149c57bfd39d3746$export$cea1c58a6db52bca(coordinates, res, isGeoJson) {\n $149c57bfd39d3746$var$validateRes(res);\n isGeoJson = Boolean(isGeoJson); // Guard against empty input\n if (coordinates.length === 0 || coordinates[0].length === 0) return [];\n // Wrap to expected format if a single loop is provided\n if (typeof coordinates[0][0] === \"number\") coordinates = [\n coordinates\n ];\n var geoPolygon = $149c57bfd39d3746$var$coordinatesToGeoPolygon(coordinates, isGeoJson);\n var arrayLen = $149c57bfd39d3746$var$H3.maxPolyfillSize(geoPolygon, res);\n var hexagons = $149c57bfd39d3746$var$libh3._calloc(arrayLen, $149c57bfd39d3746$var$SZ_H3INDEX);\n $149c57bfd39d3746$var$H3.polyfill(geoPolygon, res, hexagons);\n var out = $149c57bfd39d3746$var$readArrayOfHexagons(hexagons, arrayLen);\n $149c57bfd39d3746$var$libh3._free(hexagons);\n $149c57bfd39d3746$var$destroyGeoPolygon(geoPolygon);\n return out;\n}\n/**\n * Get the outlines of a set of H3 hexagons, returned in GeoJSON MultiPolygon\n * format (an array of polygons, each with an array of loops, each an array of\n * coordinates). Coordinates are returned as [lat, lng] pairs unless GeoJSON\n * is requested.\n *\n * It is the responsibility of the caller to ensure that all hexagons in the\n * set have the same resolution and that the set contains no duplicates. Behavior\n * is undefined if duplicates or multiple resolutions are present, and the\n * algorithm may produce unexpected or invalid polygons.\n *\n * @static\n * @param {H3IndexInput[]} h3Indexes H3 indexes to get outlines for\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output:\n * [lng, lat], closed loops\n * @return {number[][][][]} MultiPolygon-style output.\n */ function $149c57bfd39d3746$export$911a0c41d9f5c4ed(h3Indexes, formatAsGeoJson) {\n // Early exit on empty input\n if (!h3Indexes || !h3Indexes.length) return [];\n // Set up input set\n var indexCount = h3Indexes.length;\n var set = $149c57bfd39d3746$var$libh3._calloc(indexCount, $149c57bfd39d3746$var$SZ_H3INDEX);\n $149c57bfd39d3746$var$storeArrayOfHexagons(set, h3Indexes); // Allocate memory for output linked polygon\n var polygon = $149c57bfd39d3746$var$libh3._calloc($149c57bfd39d3746$var$SZ_LINKED_GEOPOLYGON); // Store a reference to the first polygon - that's the one we need for\n // memory deallocation\n var originalPolygon = polygon;\n $149c57bfd39d3746$var$H3.h3SetToLinkedGeo(set, indexCount, polygon);\n var multiPolygon = $149c57bfd39d3746$var$readMultiPolygon(polygon, formatAsGeoJson); // Clean up\n $149c57bfd39d3746$var$H3.destroyLinkedPolygon(originalPolygon);\n $149c57bfd39d3746$var$libh3._free(originalPolygon);\n $149c57bfd39d3746$var$libh3._free(set);\n return multiPolygon;\n}\n/**\n * Compact a set of hexagons of the same resolution into a set of hexagons across\n * multiple levels that represents the same area.\n * @static\n * @param {H3IndexInput[]} h3Set H3 indexes to compact\n * @return {H3Index[]} Compacted H3 indexes\n * @throws {Error} If the input is invalid (e.g. duplicate hexagons)\n */ function $149c57bfd39d3746$export$8e16b83750b44988(h3Set) {\n if (!h3Set || !h3Set.length) return [];\n // Set up input set\n var count = h3Set.length;\n var set = $149c57bfd39d3746$var$libh3._calloc(count, $149c57bfd39d3746$var$SZ_H3INDEX);\n $149c57bfd39d3746$var$storeArrayOfHexagons(set, h3Set); // Allocate memory for compacted hexagons, worst-case is no compaction\n var compactedSet = $149c57bfd39d3746$var$libh3._calloc(count, $149c57bfd39d3746$var$SZ_H3INDEX);\n var retVal = $149c57bfd39d3746$var$H3.compact(set, compactedSet, count);\n if (retVal !== 0) {\n $149c57bfd39d3746$var$libh3._free(set);\n $149c57bfd39d3746$var$libh3._free(compactedSet);\n throw new Error(\"Failed to compact, malformed input data (duplicate hexagons?)\");\n }\n var out = $149c57bfd39d3746$var$readArrayOfHexagons(compactedSet, count);\n $149c57bfd39d3746$var$libh3._free(set);\n $149c57bfd39d3746$var$libh3._free(compactedSet);\n return out;\n}\n/**\n * Uncompact a compacted set of hexagons to hexagons of the same resolution\n * @static\n * @param {H3IndexInput[]} compactedSet H3 indexes to uncompact\n * @param {number} res The resolution to uncompact to\n * @return {H3Index[]} The uncompacted H3 indexes\n * @throws {Error} If the input is invalid (e.g. invalid resolution)\n */ function $149c57bfd39d3746$export$da59f65535392b73(compactedSet, res) {\n $149c57bfd39d3746$var$validateRes(res);\n if (!compactedSet || !compactedSet.length) return [];\n // Set up input set\n var count = compactedSet.length;\n var set = $149c57bfd39d3746$var$libh3._calloc(count, $149c57bfd39d3746$var$SZ_H3INDEX);\n $149c57bfd39d3746$var$storeArrayOfHexagons(set, compactedSet); // Estimate how many hexagons we need (always overestimates if in error)\n var maxUncompactedNum = $149c57bfd39d3746$var$H3.maxUncompactSize(set, count, res); // Allocate memory for uncompacted hexagons\n var uncompactedSet = $149c57bfd39d3746$var$libh3._calloc(maxUncompactedNum, $149c57bfd39d3746$var$SZ_H3INDEX);\n var retVal = $149c57bfd39d3746$var$H3.uncompact(set, count, uncompactedSet, maxUncompactedNum, res);\n if (retVal !== 0) {\n $149c57bfd39d3746$var$libh3._free(set);\n $149c57bfd39d3746$var$libh3._free(uncompactedSet);\n throw new Error(\"Failed to uncompact (bad resolution?)\");\n }\n var out = $149c57bfd39d3746$var$readArrayOfHexagons(uncompactedSet, maxUncompactedNum);\n $149c57bfd39d3746$var$libh3._free(set);\n $149c57bfd39d3746$var$libh3._free(uncompactedSet);\n return out;\n} // ----------------------------------------------------------------------------\n// Public API functions: Unidirectional edges\n/**\n * Whether two H3 indexes are neighbors (share an edge)\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {boolean} Whether the hexagons share an edge\n */ function $149c57bfd39d3746$export$eb50eb4056349f0e(origin, destination) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = $149c57bfd39d3746$var$h3IndexToSplitLong(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n return Boolean($149c57bfd39d3746$var$H3.h3IndexesAreNeighbors(oLower, oUpper, dLower, dUpper));\n}\n/**\n * Get an H3 index representing a unidirectional edge for a given origin and destination\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {H3Index} H3 index of the edge, or null if no edge is shared\n */ function $149c57bfd39d3746$export$b89869ac33946464(origin, destination) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = $149c57bfd39d3746$var$h3IndexToSplitLong(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n return $149c57bfd39d3746$var$readH3Index($149c57bfd39d3746$var$H3.getH3UnidirectionalEdge(oLower, oUpper, dLower, dUpper));\n}\n/**\n * Get the origin hexagon from an H3 index representing a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index} H3 index of the edge origin\n */ function $149c57bfd39d3746$export$13279f23c835bdb8(edgeIndex) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n return $149c57bfd39d3746$var$readH3Index($149c57bfd39d3746$var$H3.getOriginH3IndexFromUnidirectionalEdge(lower, upper));\n}\n/**\n * Get the destination hexagon from an H3 index representing a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index} H3 index of the edge destination\n */ function $149c57bfd39d3746$export$100636a95be53c47(edgeIndex) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n return $149c57bfd39d3746$var$readH3Index($149c57bfd39d3746$var$H3.getDestinationH3IndexFromUnidirectionalEdge(lower, upper));\n}\n/**\n * Whether the input is a valid unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {boolean} Whether the index is valid\n */ function $149c57bfd39d3746$export$7ba0147f717e0e86(edgeIndex) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean($149c57bfd39d3746$var$H3.h3UnidirectionalEdgeIsValid(lower, upper));\n}\n/**\n * Get the [origin, destination] pair represented by a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index[]} [origin, destination] pair as H3 indexes\n */ function $149c57bfd39d3746$export$baea9ec8d71e57f1(edgeIndex) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n var count = 2;\n var hexagons = $149c57bfd39d3746$var$libh3._calloc(count, $149c57bfd39d3746$var$SZ_H3INDEX);\n $149c57bfd39d3746$var$H3.getH3IndexesFromUnidirectionalEdge(lower, upper, hexagons);\n var out = $149c57bfd39d3746$var$readArrayOfHexagons(hexagons, count);\n $149c57bfd39d3746$var$libh3._free(hexagons);\n return out;\n}\n/**\n * Get all of the unidirectional edges with the given H3 index as the origin (i.e. an edge to\n * every neighbor)\n * @static\n * @param {H3IndexInput} h3Index H3 index of the origin hexagon\n * @return {H3Index[]} List of unidirectional edges\n */ function $149c57bfd39d3746$export$30e11ffcf56640f3(h3Index) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var count = 6;\n var edges = $149c57bfd39d3746$var$libh3._calloc(count, $149c57bfd39d3746$var$SZ_H3INDEX);\n $149c57bfd39d3746$var$H3.getH3UnidirectionalEdgesFromHexagon(lower, upper, edges);\n var out = $149c57bfd39d3746$var$readArrayOfHexagons(edges, count);\n $149c57bfd39d3746$var$libh3._free(edges);\n return out;\n}\n/**\n * Get the vertices of a given edge as an array of [lat, lng] points. Note that for edges that\n * cross the edge of an icosahedron face, this may return 3 coordinates.\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat]\n * @return {number[][]} Array of geo coordinate pairs\n */ function $149c57bfd39d3746$export$6b2ac03a6029686(edgeIndex, formatAsGeoJson) {\n var geoBoundary = $149c57bfd39d3746$var$libh3._malloc($149c57bfd39d3746$var$SZ_GEOBOUNDARY);\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n $149c57bfd39d3746$var$H3.getH3UnidirectionalEdgeBoundary(lower, upper, geoBoundary);\n var out = $149c57bfd39d3746$var$readGeoBoundary(geoBoundary, formatAsGeoJson);\n $149c57bfd39d3746$var$libh3._free(geoBoundary);\n return out;\n}\n/**\n * Get the grid distance between two hex indexes. This function may fail\n * to find the distance between two indexes if they are very far apart or\n * on opposite sides of a pentagon.\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {number} Distance between hexagons, or a negative\n * number if the distance could not be computed\n */ function $149c57bfd39d3746$export$f56b06aabd98a7d0(origin, destination) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = $149c57bfd39d3746$var$h3IndexToSplitLong(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n return $149c57bfd39d3746$var$H3.h3Distance(oLower, oUpper, dLower, dUpper);\n}\n/**\n * Given two H3 indexes, return the line of indexes between them (inclusive).\n *\n * This function may fail to find the line between two indexes, for\n * example if they are very far apart. It may also fail when finding\n * distances for indexes on opposite sides of a pentagon.\n *\n * Notes:\n *\n * - The specific output of this function should not be considered stable\n * across library versions. The only guarantees the library provides are\n * that the line length will be `h3Distance(start, end) + 1` and that\n * every index in the line will be a neighbor of the preceding index.\n * - Lines are drawn in grid space, and may not correspond exactly to either\n * Cartesian lines or great arcs.\n *\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {H3Index[]} H3 indexes connecting origin and destination\n * @throws {Error} If the line cannot be calculated\n */ function $149c57bfd39d3746$export$3c4374231d75ac73(origin, destination) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = $149c57bfd39d3746$var$h3IndexToSplitLong(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n var count = $149c57bfd39d3746$var$H3.h3LineSize(oLower, oUpper, dLower, dUpper);\n if (count < 0) // We can't get the specific error code here - may be any of\n // the errors possible in experimentalH3ToLocalIj\n throw new Error(\"Line cannot be calculated\");\n var hexagons = $149c57bfd39d3746$var$libh3._calloc(count, $149c57bfd39d3746$var$SZ_H3INDEX);\n $149c57bfd39d3746$var$H3.h3Line(oLower, oUpper, dLower, dUpper, hexagons);\n var out = $149c57bfd39d3746$var$readArrayOfHexagons(hexagons, count);\n $149c57bfd39d3746$var$libh3._free(hexagons);\n return out;\n}\n/**\n * Produces IJ coordinates for an H3 index anchored by an origin.\n *\n * - The coordinate space used by this function may have deleted\n * regions or warping due to pentagonal distortion.\n * - Coordinates are only comparable if they come from the same\n * origin index.\n * - Failure may occur if the index is too far away from the origin\n * or if the index is on the other side of a pentagon.\n * - This function is experimental, and its output is not guaranteed\n * to be compatible across different versions of H3.\n * @static\n * @param {H3IndexInput} origin Origin H3 index\n * @param {H3IndexInput} destination H3 index for which to find relative coordinates\n * @return {CoordIJ} Coordinates as an `{i, j}` pair\n * @throws {Error} If the IJ coordinates cannot be calculated\n */ function $149c57bfd39d3746$export$f5137e86c7310bce(origin, destination) {\n var ij = $149c57bfd39d3746$var$libh3._malloc($149c57bfd39d3746$var$SZ_COORDIJ);\n var retVal = $149c57bfd39d3746$var$H3.experimentalH3ToLocalIj.apply($149c57bfd39d3746$var$H3, $149c57bfd39d3746$var$h3IndexToSplitLong(origin).concat($149c57bfd39d3746$var$h3IndexToSplitLong(destination), [\n ij\n ]));\n var coords = $149c57bfd39d3746$var$readCoordIJ(ij);\n $149c57bfd39d3746$var$libh3._free(ij); // Return the pair, or throw if an error code was returned.\n // Switch statement and error codes cribbed from h3-java's implementation.\n switch(retVal){\n case 0:\n return coords;\n case 1:\n throw new Error(\"Incompatible origin and index.\");\n case 2:\n default:\n throw new Error(\"Local IJ coordinates undefined for this origin and index pair. The index may be too far from the origin.\");\n case 3:\n case 4:\n case 5:\n throw new Error(\"Encountered possible pentagon distortion\");\n }\n}\n/**\n * Produces an H3 index for IJ coordinates anchored by an origin.\n *\n * - The coordinate space used by this function may have deleted\n * regions or warping due to pentagonal distortion.\n * - Coordinates are only comparable if they come from the same\n * origin index.\n * - Failure may occur if the index is too far away from the origin\n * or if the index is on the other side of a pentagon.\n * - This function is experimental, and its output is not guaranteed\n * to be compatible across different versions of H3.\n * @static\n * @param {H3IndexInput} origin Origin H3 index\n * @param {CoordIJ} coords Coordinates as an `{i, j}` pair\n * @return {H3Index} H3 index at the relative coordinates\n * @throws {Error} If the H3 index cannot be calculated\n */ function $149c57bfd39d3746$export$699ec478a27688ea(origin, coords) {\n // Validate input coords\n if (!coords || typeof coords.i !== \"number\" || typeof coords.j !== \"number\") throw new Error(\"Coordinates must be provided as an {i, j} object\");\n // Allocate memory for the CoordIJ struct and an H3 index to hold the return value\n var ij = $149c57bfd39d3746$var$libh3._malloc($149c57bfd39d3746$var$SZ_COORDIJ);\n var out = $149c57bfd39d3746$var$libh3._malloc($149c57bfd39d3746$var$SZ_H3INDEX);\n $149c57bfd39d3746$var$storeCoordIJ(ij, coords);\n var retVal = $149c57bfd39d3746$var$H3.experimentalLocalIjToH3.apply($149c57bfd39d3746$var$H3, $149c57bfd39d3746$var$h3IndexToSplitLong(origin).concat([\n ij\n ], [\n out\n ]));\n var h3Index = $149c57bfd39d3746$var$readH3IndexFromPointer(out);\n $149c57bfd39d3746$var$libh3._free(ij);\n $149c57bfd39d3746$var$libh3._free(out);\n if (retVal !== 0) throw new Error(\"Index not defined for this origin and IJ coordinates pair. IJ coordinates may be too far from origin, or a pentagon distortion was encountered.\");\n return h3Index;\n} // ----------------------------------------------------------------------------\n// Public API functions: Distance/area utilities\n/**\n * Great circle distance between two geo points. This is not specific to H3,\n * but is implemented in the library and provided here as a convenience.\n * @static\n * @param {number[]} latlng1 Origin coordinate as [lat, lng]\n * @param {number[]} latlng2 Destination coordinate as [lat, lng]\n * @param {string} unit Distance unit (either UNITS.m or UNITS.km)\n * @return {number} Great circle distance\n * @throws {Error} If the unit is invalid\n */ function $149c57bfd39d3746$export$f091827d0d13bea5(latlng1, latlng2, unit) {\n var coord1 = $149c57bfd39d3746$var$storeGeoCoord(latlng1[0], latlng1[1]);\n var coord2 = $149c57bfd39d3746$var$storeGeoCoord(latlng2[0], latlng2[1]);\n var result;\n switch(unit){\n case $149c57bfd39d3746$export$a037d132965e1c9f.m:\n result = $149c57bfd39d3746$var$H3.pointDistM(coord1, coord2);\n break;\n case $149c57bfd39d3746$export$a037d132965e1c9f.km:\n result = $149c57bfd39d3746$var$H3.pointDistKm(coord1, coord2);\n break;\n case $149c57bfd39d3746$export$a037d132965e1c9f.rads:\n result = $149c57bfd39d3746$var$H3.pointDistRads(coord1, coord2);\n break;\n default:\n result = null;\n }\n $149c57bfd39d3746$var$libh3._free(coord1);\n $149c57bfd39d3746$var$libh3._free(coord2);\n if (result === null) throw new Error(\"Unknown unit: \" + unit);\n return result;\n}\n/**\n * Exact area of a given cell\n * @static\n * @param {H3Index} h3Index H3 index of the hexagon to measure\n * @param {string} unit Distance unit (either UNITS.m2 or UNITS.km2)\n * @return {number} Cell area\n * @throws {Error} If the unit is invalid\n */ function $149c57bfd39d3746$export$dd1eba531ccc01d(h3Index, unit) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n switch(unit){\n case $149c57bfd39d3746$export$a037d132965e1c9f.m2:\n return $149c57bfd39d3746$var$H3.cellAreaM2(lower, upper);\n case $149c57bfd39d3746$export$a037d132965e1c9f.km2:\n return $149c57bfd39d3746$var$H3.cellAreaKm2(lower, upper);\n case $149c57bfd39d3746$export$a037d132965e1c9f.rads2:\n return $149c57bfd39d3746$var$H3.cellAreaRads2(lower, upper);\n default:\n throw new Error(\"Unknown unit: \" + unit);\n }\n}\n/**\n * Exact length of a given unidirectional edge\n * @static\n * @param {H3Index} edge H3 index of the edge to measure\n * @param {string} unit Distance unit (either UNITS.m, UNITS.km, or UNITS.rads)\n * @return {number} Cell area\n * @throws {Error} If the unit is invalid\n */ function $149c57bfd39d3746$export$27082d4db7c8790c(edge, unit) {\n var ref = $149c57bfd39d3746$var$h3IndexToSplitLong(edge);\n var lower = ref[0];\n var upper = ref[1];\n switch(unit){\n case $149c57bfd39d3746$export$a037d132965e1c9f.m:\n return $149c57bfd39d3746$var$H3.exactEdgeLengthM(lower, upper);\n case $149c57bfd39d3746$export$a037d132965e1c9f.km:\n return $149c57bfd39d3746$var$H3.exactEdgeLengthKm(lower, upper);\n case $149c57bfd39d3746$export$a037d132965e1c9f.rads:\n return $149c57bfd39d3746$var$H3.exactEdgeLengthRads(lower, upper);\n default:\n throw new Error(\"Unknown unit: \" + unit);\n }\n}\n/**\n * Average hexagon area at a given resolution\n * @static\n * @param {number} res Hexagon resolution\n * @param {string} unit Area unit (either UNITS.m2, UNITS.km2, or UNITS.rads2)\n * @return {number} Average area\n * @throws {Error} If the unit is invalid\n */ function $149c57bfd39d3746$export$597dd479d4cc1bc9(res, unit) {\n $149c57bfd39d3746$var$validateRes(res);\n switch(unit){\n case $149c57bfd39d3746$export$a037d132965e1c9f.m2:\n return $149c57bfd39d3746$var$H3.hexAreaM2(res);\n case $149c57bfd39d3746$export$a037d132965e1c9f.km2:\n return $149c57bfd39d3746$var$H3.hexAreaKm2(res);\n default:\n throw new Error(\"Unknown unit: \" + unit);\n }\n}\n/**\n * Average hexagon edge length at a given resolution\n * @static\n * @param {number} res Hexagon resolution\n * @param {string} unit Distance unit (either UNITS.m, UNITS.km, or UNITS.rads)\n * @return {number} Average edge length\n * @throws {Error} If the unit is invalid\n */ function $149c57bfd39d3746$export$f9bb3d14d246c386(res, unit) {\n $149c57bfd39d3746$var$validateRes(res);\n switch(unit){\n case $149c57bfd39d3746$export$a037d132965e1c9f.m:\n return $149c57bfd39d3746$var$H3.edgeLengthM(res);\n case $149c57bfd39d3746$export$a037d132965e1c9f.km:\n return $149c57bfd39d3746$var$H3.edgeLengthKm(res);\n default:\n throw new Error(\"Unknown unit: \" + unit);\n }\n} // ----------------------------------------------------------------------------\n// Public informational utilities\n/**\n * The total count of hexagons in the world at a given resolution. Note that above\n * resolution 8 the exact count cannot be represented in a JavaScript 32-bit number,\n * so consumers should use caution when applying further operations to the output.\n * @static\n * @param {number} res Hexagon resolution\n * @return {number} Count\n */ function $149c57bfd39d3746$export$fb1fbf4925957012(res) {\n $149c57bfd39d3746$var$validateRes(res); // Get number as a long value\n var ref = $149c57bfd39d3746$var$readLong($149c57bfd39d3746$var$H3.numHexagons(res));\n var lower = ref[0];\n var upper = ref[1]; // If we're using <= 32 bits we can use normal JS numbers\n if (!upper) return lower;\n // Above 32 bit, make a JS number that's correct in order of magnitude\n return upper * Math.pow(2, 32) + lower;\n}\n/**\n * Get all H3 indexes at resolution 0. As every index at every resolution > 0 is\n * the descendant of a res 0 index, this can be used with h3ToChildren to iterate\n * over H3 indexes at any resolution.\n * @static\n * @return {H3Index[]} All H3 indexes at res 0\n */ function $149c57bfd39d3746$export$c6297e04da1d9191() {\n var count = $149c57bfd39d3746$var$H3.res0IndexCount();\n var hexagons = $149c57bfd39d3746$var$libh3._malloc($149c57bfd39d3746$var$SZ_H3INDEX * count);\n $149c57bfd39d3746$var$H3.getRes0Indexes(hexagons);\n var out = $149c57bfd39d3746$var$readArrayOfHexagons(hexagons, count);\n $149c57bfd39d3746$var$libh3._free(hexagons);\n return out;\n}\n/**\n * Get the twelve pentagon indexes at a given resolution.\n * @static\n * @param {number} res Hexagon resolution\n * @return {H3Index[]} All H3 pentagon indexes at res\n */ function $149c57bfd39d3746$export$ecc8411f8c9b1ec1(res) {\n $149c57bfd39d3746$var$validateRes(res);\n var count = $149c57bfd39d3746$var$H3.pentagonIndexCount();\n var hexagons = $149c57bfd39d3746$var$libh3._malloc($149c57bfd39d3746$var$SZ_H3INDEX * count);\n $149c57bfd39d3746$var$H3.getPentagonIndexes(res, hexagons);\n var out = $149c57bfd39d3746$var$readArrayOfHexagons(hexagons, count);\n $149c57bfd39d3746$var$libh3._free(hexagons);\n return out;\n}\n/**\n * Convert degrees to radians\n * @static\n * @param {number} deg Value in degrees\n * @return {number} Value in radians\n */ function $149c57bfd39d3746$export$18f2af2888c1a46b(deg) {\n return deg * Math.PI / 180;\n}\n/**\n * Convert radians to degrees\n * @static\n * @param {number} rad Value in radians\n * @return {number} Value in degrees\n */ function $149c57bfd39d3746$export$3eb27537c08caf0f(rad) {\n return rad * 180 / Math.PI;\n}\n\n});\n\n\nparcelRegister(\"7Umyz\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = module.exports.SELECTION_TYPE = void 0;\n\nvar $coXLq = parcelRequire(\"coXLq\");\n\nvar $6ey8i = parcelRequire(\"6ey8i\");\n\nvar $7GKQS = parcelRequire(\"7GKQS\");\n\nvar $5c1f429e0d20adef$var$_buffer = $5c1f429e0d20adef$var$_interopRequireDefault((parcelRequire(\"3qree\")));\n\nvar $5c1f429e0d20adef$var$_difference = $5c1f429e0d20adef$var$_interopRequireDefault((parcelRequire(\"gZv4c\")));\n\nvar $cQSdn = parcelRequire(\"cQSdn\");\n\nvar $5c1f429e0d20adef$var$_editableGeojsonLayer = $5c1f429e0d20adef$var$_interopRequireDefault((parcelRequire(\"lHhsg\")));\nvar $5c1f429e0d20adef$var$_MODE_MAP;\nfunction $5c1f429e0d20adef$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $5c1f429e0d20adef$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $5c1f429e0d20adef$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $5c1f429e0d20adef$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $5c1f429e0d20adef$var$_typeof(obj);\n}\nfunction $5c1f429e0d20adef$var$ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction $5c1f429e0d20adef$var$_objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) $5c1f429e0d20adef$var$ownKeys(Object(source), true).forEach(function(key) {\n $5c1f429e0d20adef$var$_defineProperty(target, key, source[key]);\n });\n else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n else $5c1f429e0d20adef$var$ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction $5c1f429e0d20adef$var$_toConsumableArray(arr) {\n return $5c1f429e0d20adef$var$_arrayWithoutHoles(arr) || $5c1f429e0d20adef$var$_iterableToArray(arr) || $5c1f429e0d20adef$var$_unsupportedIterableToArray(arr) || $5c1f429e0d20adef$var$_nonIterableSpread();\n}\nfunction $5c1f429e0d20adef$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $5c1f429e0d20adef$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $5c1f429e0d20adef$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $5c1f429e0d20adef$var$_arrayLikeToArray(arr);\n}\nfunction $5c1f429e0d20adef$var$_slicedToArray(arr, i) {\n return $5c1f429e0d20adef$var$_arrayWithHoles(arr) || $5c1f429e0d20adef$var$_iterableToArrayLimit(arr, i) || $5c1f429e0d20adef$var$_unsupportedIterableToArray(arr, i) || $5c1f429e0d20adef$var$_nonIterableRest();\n}\nfunction $5c1f429e0d20adef$var$_nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $5c1f429e0d20adef$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $5c1f429e0d20adef$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $5c1f429e0d20adef$var$_arrayLikeToArray(o, minLen);\n}\nfunction $5c1f429e0d20adef$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $5c1f429e0d20adef$var$_iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for(var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction $5c1f429e0d20adef$var$_arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction $5c1f429e0d20adef$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $5c1f429e0d20adef$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $5c1f429e0d20adef$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $5c1f429e0d20adef$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $5c1f429e0d20adef$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $5c1f429e0d20adef$var$_createSuper(Derived) {\n return function() {\n var Super = $5c1f429e0d20adef$var$_getPrototypeOf(Derived), result;\n if ($5c1f429e0d20adef$var$_isNativeReflectConstruct()) {\n var NewTarget = $5c1f429e0d20adef$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $5c1f429e0d20adef$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $5c1f429e0d20adef$var$_possibleConstructorReturn(self, call) {\n if (call && ($5c1f429e0d20adef$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $5c1f429e0d20adef$var$_assertThisInitialized(self);\n}\nfunction $5c1f429e0d20adef$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $5c1f429e0d20adef$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $5c1f429e0d20adef$var$_getPrototypeOf(o) {\n $5c1f429e0d20adef$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $5c1f429e0d20adef$var$_getPrototypeOf(o);\n}\nfunction $5c1f429e0d20adef$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $5c1f429e0d20adef$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $5c1f429e0d20adef$var$_setPrototypeOf(o, p) {\n $5c1f429e0d20adef$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $5c1f429e0d20adef$var$_setPrototypeOf(o, p);\n}\nfunction $5c1f429e0d20adef$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $5c1f429e0d20adef$var$SELECTION_TYPE = {\n NONE: null,\n RECTANGLE: \"rectangle\",\n POLYGON: \"polygon\"\n};\nmodule.exports.SELECTION_TYPE = $5c1f429e0d20adef$var$SELECTION_TYPE;\nvar $5c1f429e0d20adef$var$MODE_MAP = ($5c1f429e0d20adef$var$_MODE_MAP = {}, $5c1f429e0d20adef$var$_defineProperty($5c1f429e0d20adef$var$_MODE_MAP, $5c1f429e0d20adef$var$SELECTION_TYPE.RECTANGLE, $cQSdn.DrawRectangleMode), $5c1f429e0d20adef$var$_defineProperty($5c1f429e0d20adef$var$_MODE_MAP, $5c1f429e0d20adef$var$SELECTION_TYPE.POLYGON, $cQSdn.DrawPolygonMode), $5c1f429e0d20adef$var$_MODE_MAP);\nvar $5c1f429e0d20adef$var$MODE_CONFIG_MAP = $5c1f429e0d20adef$var$_defineProperty({}, $5c1f429e0d20adef$var$SELECTION_TYPE.RECTANGLE, {\n dragToDraw: true\n});\nvar $5c1f429e0d20adef$var$defaultProps = {\n selectionType: $5c1f429e0d20adef$var$SELECTION_TYPE.RECTANGLE,\n layerIds: [],\n onSelect: function onSelect() {}\n};\nvar $5c1f429e0d20adef$var$EMPTY_DATA = {\n type: \"FeatureCollection\",\n features: []\n};\nvar $5c1f429e0d20adef$var$EXPANSION_KM = 50;\nvar $5c1f429e0d20adef$var$LAYER_ID_GEOJSON = \"selection-geojson\";\nvar $5c1f429e0d20adef$var$LAYER_ID_BLOCKER = \"selection-blocker\";\nvar $5c1f429e0d20adef$var$PASS_THROUGH_PROPS = [\n \"lineWidthScale\",\n \"lineWidthMinPixels\",\n \"lineWidthMaxPixels\",\n \"lineWidthUnits\",\n \"lineJointRounded\",\n \"lineCapRounded\",\n \"lineMiterLimit\",\n \"pointRadiusScale\",\n \"pointRadiusMinPixels\",\n \"pointRadiusMaxPixels\",\n \"lineDashJustified\",\n \"getLineColor\",\n \"getFillColor\",\n \"getRadius\",\n \"getLineWidth\",\n \"getLineDashArray\",\n \"getTentativeLineDashArray\",\n \"getTentativeLineColor\",\n \"getTentativeFillColor\",\n \"getTentativeLineWidth\"\n];\nvar $5c1f429e0d20adef$var$SelectionLayer = /*#__PURE__*/ function(_CompositeLayer) {\n $5c1f429e0d20adef$var$_inherits(SelectionLayer, _CompositeLayer);\n var _super = $5c1f429e0d20adef$var$_createSuper(SelectionLayer);\n function SelectionLayer() {\n $5c1f429e0d20adef$var$_classCallCheck(this, SelectionLayer);\n return _super.apply(this, arguments);\n }\n $5c1f429e0d20adef$var$_createClass(SelectionLayer, [\n {\n key: \"_selectRectangleObjects\",\n value: function _selectRectangleObjects(coordinates) {\n var _this$props = this.props, layerIds = _this$props.layerIds, onSelect = _this$props.onSelect; // @ts-ignore\n var _this$context$viewpor = this.context.viewport.project(coordinates[0][0]), _this$context$viewpor2 = $5c1f429e0d20adef$var$_slicedToArray(_this$context$viewpor, 2), x1 = _this$context$viewpor2[0], y1 = _this$context$viewpor2[1]; // @ts-ignore\n var _this$context$viewpor3 = this.context.viewport.project(coordinates[0][2]), _this$context$viewpor4 = $5c1f429e0d20adef$var$_slicedToArray(_this$context$viewpor3, 2), x2 = _this$context$viewpor4[0], y2 = _this$context$viewpor4[1]; // @ts-ignore\n var pickingInfos = this.context.deck.pickObjects({\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1),\n layerIds: layerIds\n });\n onSelect({\n pickingInfos: pickingInfos\n });\n }\n },\n {\n key: \"_selectPolygonObjects\",\n value: function _selectPolygonObjects(coordinates) {\n var _this = this;\n var _this$props2 = this.props, layerIds = _this$props2.layerIds, onSelect = _this$props2.onSelect; // @ts-ignore\n var mousePoints = coordinates[0].map(function(c) {\n return _this.context.viewport.project(c);\n });\n var allX = mousePoints.map(function(mousePoint) {\n return mousePoint[0];\n });\n var allY = mousePoints.map(function(mousePoint) {\n return mousePoint[1];\n });\n var x = Math.min.apply(Math, $5c1f429e0d20adef$var$_toConsumableArray(allX));\n var y = Math.min.apply(Math, $5c1f429e0d20adef$var$_toConsumableArray(allY));\n var maxX = Math.max.apply(Math, $5c1f429e0d20adef$var$_toConsumableArray(allX));\n var maxY = Math.max.apply(Math, $5c1f429e0d20adef$var$_toConsumableArray(allY)); // Use a polygon to hide the outside, because pickObjects()\n // does not support polygons\n var landPointsPoly = (0, $7GKQS.polygon)(coordinates);\n var bigBuffer = (0, $5c1f429e0d20adef$var$_buffer[\"default\"])(landPointsPoly, $5c1f429e0d20adef$var$EXPANSION_KM);\n var bigPolygon;\n try {\n // turfDifference throws an exception if the polygon\n // intersects with itself (TODO: check if true in all versions)\n bigPolygon = (0, $5c1f429e0d20adef$var$_difference[\"default\"])(bigBuffer, landPointsPoly);\n } catch (e) {\n // invalid selection polygon\n console.log(\"turfDifference() error\", e); // eslint-disable-line\n return;\n }\n this.setState({\n pendingPolygonSelection: {\n bigPolygon: bigPolygon\n }\n });\n var blockerId = \"\".concat(this.props.id, \"-\").concat($5c1f429e0d20adef$var$LAYER_ID_BLOCKER); // HACK, find a better way\n setTimeout(function() {\n // @ts-ignore\n var pickingInfos = _this.context.deck.pickObjects({\n x: x,\n y: y,\n width: maxX - x,\n height: maxY - y,\n layerIds: [\n blockerId\n ].concat($5c1f429e0d20adef$var$_toConsumableArray(layerIds))\n });\n onSelect({\n pickingInfos: pickingInfos.filter(function(item) {\n return item.layer.id !== _this.props.id;\n })\n });\n }, 250);\n }\n },\n {\n key: \"renderLayers\",\n value: function renderLayers() {\n var _this2 = this;\n var pendingPolygonSelection = this.state.pendingPolygonSelection;\n var mode = $5c1f429e0d20adef$var$MODE_MAP[this.props.selectionType] || $cQSdn.ViewMode;\n var modeConfig = $5c1f429e0d20adef$var$MODE_CONFIG_MAP[this.props.selectionType];\n var inheritedProps = {};\n $5c1f429e0d20adef$var$PASS_THROUGH_PROPS.forEach(function(p) {\n if (_this2.props[p] !== undefined) inheritedProps[p] = _this2.props[p];\n });\n var layers = [\n new $5c1f429e0d20adef$var$_editableGeojsonLayer[\"default\"](this.getSubLayerProps($5c1f429e0d20adef$var$_objectSpread({\n id: $5c1f429e0d20adef$var$LAYER_ID_GEOJSON,\n pickable: true,\n mode: mode,\n modeConfig: modeConfig,\n selectedFeatureIndexes: [],\n data: $5c1f429e0d20adef$var$EMPTY_DATA,\n onEdit: function onEdit(_ref) {\n var updatedData = _ref.updatedData, editType = _ref.editType;\n if (editType === \"addFeature\") {\n var coordinates = updatedData.features[0].geometry.coordinates;\n if (_this2.props.selectionType === $5c1f429e0d20adef$var$SELECTION_TYPE.RECTANGLE) _this2._selectRectangleObjects(coordinates);\n else if (_this2.props.selectionType === $5c1f429e0d20adef$var$SELECTION_TYPE.POLYGON) _this2._selectPolygonObjects(coordinates);\n }\n }\n }, inheritedProps)))\n ];\n if (pendingPolygonSelection) {\n var bigPolygon = pendingPolygonSelection.bigPolygon;\n layers.push(new $6ey8i.default(this.getSubLayerProps({\n id: $5c1f429e0d20adef$var$LAYER_ID_BLOCKER,\n pickable: true,\n stroked: false,\n opacity: 1.0,\n data: [\n bigPolygon\n ],\n getLineColor: function getLineColor(obj) {\n return [\n 0,\n 0,\n 0,\n 1\n ];\n },\n getFillColor: function getFillColor(obj) {\n return [\n 0,\n 0,\n 0,\n 1\n ];\n },\n getPolygon: function getPolygon(o) {\n return o.geometry.coordinates;\n }\n })));\n }\n return layers;\n }\n },\n {\n key: \"shouldUpdateState\",\n value: function shouldUpdateState(_ref2) {\n var _ref2$changeFlags = _ref2.changeFlags, stateChanged = _ref2$changeFlags.stateChanged, propsOrDataChanged = _ref2$changeFlags.propsOrDataChanged;\n return stateChanged || propsOrDataChanged;\n }\n }\n ]);\n return SelectionLayer;\n}($coXLq.default);\nmodule.exports[\"default\"] = $5c1f429e0d20adef$var$SelectionLayer;\n$5c1f429e0d20adef$var$_defineProperty($5c1f429e0d20adef$var$SelectionLayer, \"layerName\", \"SelectionLayer\");\n$5c1f429e0d20adef$var$_defineProperty($5c1f429e0d20adef$var$SelectionLayer, \"defaultProps\", $5c1f429e0d20adef$var$defaultProps);\n\n});\n\nparcelRegister(\"5p6F6\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\n\nvar $coXLq = parcelRequire(\"coXLq\");\n\nvar $h7vzQ = parcelRequire(\"h7vzQ\");\nvar $cYQ5y = parcelRequire(\"cYQ5y\");\nfunction $3ef4747b9a071852$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $3ef4747b9a071852$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $3ef4747b9a071852$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $3ef4747b9a071852$var$_typeof(obj);\n}\nfunction $3ef4747b9a071852$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $3ef4747b9a071852$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $3ef4747b9a071852$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $3ef4747b9a071852$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $3ef4747b9a071852$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $3ef4747b9a071852$var$_createSuper(Derived) {\n return function() {\n var Super = $3ef4747b9a071852$var$_getPrototypeOf(Derived), result;\n if ($3ef4747b9a071852$var$_isNativeReflectConstruct()) {\n var NewTarget = $3ef4747b9a071852$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $3ef4747b9a071852$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $3ef4747b9a071852$var$_possibleConstructorReturn(self, call) {\n if (call && ($3ef4747b9a071852$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $3ef4747b9a071852$var$_assertThisInitialized(self);\n}\nfunction $3ef4747b9a071852$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $3ef4747b9a071852$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $3ef4747b9a071852$var$_getPrototypeOf(o) {\n $3ef4747b9a071852$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $3ef4747b9a071852$var$_getPrototypeOf(o);\n}\nfunction $3ef4747b9a071852$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $3ef4747b9a071852$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $3ef4747b9a071852$var$_setPrototypeOf(o, p) {\n $3ef4747b9a071852$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $3ef4747b9a071852$var$_setPrototypeOf(o, p);\n}\nfunction $3ef4747b9a071852$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $3ef4747b9a071852$var$defaultProps = {};\nvar $3ef4747b9a071852$var$ElevatedEditHandleLayer = /*#__PURE__*/ function(_CompositeLayer) {\n $3ef4747b9a071852$var$_inherits(ElevatedEditHandleLayer, _CompositeLayer);\n var _super = $3ef4747b9a071852$var$_createSuper(ElevatedEditHandleLayer);\n function ElevatedEditHandleLayer() {\n $3ef4747b9a071852$var$_classCallCheck(this, ElevatedEditHandleLayer);\n return _super.apply(this, arguments);\n }\n $3ef4747b9a071852$var$_createClass(ElevatedEditHandleLayer, [\n {\n key: \"renderLayers\",\n value: function renderLayers() {\n var handles = new $cYQ5y.default(Object.assign({}, this.props, {\n id: \"\".concat(this.props.id, \"-ScatterplotLayer\"),\n data: this.props.data\n }));\n var lines = new $h7vzQ.default(Object.assign({}, this.props, {\n id: \"\".concat(this.props.id, \"-LineLayer\"),\n data: this.props.data,\n pickable: false,\n getSourcePosition: function getSourcePosition(_ref) {\n var position = _ref.position;\n return [\n position[0],\n position[1],\n 0\n ];\n },\n getTargetPosition: function getTargetPosition(_ref2) {\n var position = _ref2.position;\n return [\n position[0],\n position[1],\n position[2] || 0\n ];\n },\n getColor: [\n 150,\n 150,\n 150,\n 200\n ],\n getStrokeWidth: 3\n }));\n return [\n handles,\n lines\n ];\n }\n }\n ]);\n return ElevatedEditHandleLayer;\n}($coXLq.default);\nmodule.exports[\"default\"] = $3ef4747b9a071852$var$ElevatedEditHandleLayer;\n$3ef4747b9a071852$var$_defineProperty($3ef4747b9a071852$var$ElevatedEditHandleLayer, \"layerName\", \"ElevatedEditHandleLayer\");\n$3ef4747b9a071852$var$_defineProperty($3ef4747b9a071852$var$ElevatedEditHandleLayer, \"defaultProps\", $3ef4747b9a071852$var$defaultProps);\n\n});\nparcelRegister(\"h7vzQ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c76b95a99c2450eb$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $lEQUF = parcelRequire(\"lEQUF\");\n\nvar $i46md = parcelRequire(\"i46md\");\nvar $7UxuR = parcelRequire(\"7UxuR\");\nvar $jRSMz = parcelRequire(\"jRSMz\");\nvar $7gQQK = parcelRequire(\"7gQQK\");\n\nvar $cxTxU = parcelRequire(\"cxTxU\");\nvar $b2F4S = parcelRequire(\"b2F4S\");\n\nvar $liSuz = parcelRequire(\"liSuz\");\n\nvar $bzPIt = parcelRequire(\"bzPIt\");\nconst $c76b95a99c2450eb$var$DEFAULT_COLOR = [\n 0,\n 0,\n 0,\n 255\n];\nconst $c76b95a99c2450eb$var$defaultProps = {\n getSourcePosition: {\n type: \"accessor\",\n value: (x)=>x.sourcePosition\n },\n getTargetPosition: {\n type: \"accessor\",\n value: (x)=>x.targetPosition\n },\n getColor: {\n type: \"accessor\",\n value: $c76b95a99c2450eb$var$DEFAULT_COLOR\n },\n getWidth: {\n type: \"accessor\",\n value: 1\n },\n widthUnits: \"pixels\",\n widthScale: {\n type: \"number\",\n value: 1,\n min: 0\n },\n widthMinPixels: {\n type: \"number\",\n value: 0,\n min: 0\n },\n widthMaxPixels: {\n type: \"number\",\n value: Number.MAX_SAFE_INTEGER,\n min: 0\n }\n};\nclass $c76b95a99c2450eb$export$2e2bcd8739ae039 extends (0, $i46md.default) {\n getBounds() {\n var _this$getAttributeMan;\n return (_this$getAttributeMan = this.getAttributeManager()) === null || _this$getAttributeMan === void 0 ? void 0 : _this$getAttributeMan.getBounds([\n \"instanceSourcePositions\",\n \"instanceTargetPositions\"\n ]);\n }\n getShaders() {\n return super.getShaders({\n vs: $liSuz.default,\n fs: $bzPIt.default,\n modules: [\n (0, $jRSMz.default),\n (0, $7UxuR.default)\n ]\n });\n }\n get wrapLongitude() {\n return false;\n }\n initializeState() {\n const attributeManager = this.getAttributeManager();\n attributeManager.addInstanced({\n instanceSourcePositions: {\n size: 3,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: \"getSourcePosition\"\n },\n instanceTargetPositions: {\n size: 3,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: \"getTargetPosition\"\n },\n instanceColors: {\n size: this.props.colorFormat.length,\n type: 5121,\n normalized: true,\n transition: true,\n accessor: \"getColor\",\n defaultValue: [\n 0,\n 0,\n 0,\n 255\n ]\n },\n instanceWidths: {\n size: 1,\n transition: true,\n accessor: \"getWidth\",\n defaultValue: 1\n }\n });\n }\n updateState(params) {\n super.updateState(params);\n if (params.changeFlags.extensionsChanged) {\n var _this$state$model;\n const { gl: gl } = this.context;\n (_this$state$model = this.state.model) === null || _this$state$model === void 0 || _this$state$model.delete();\n this.state.model = this._getModel(gl);\n this.getAttributeManager().invalidateAll();\n }\n }\n draw({ uniforms: uniforms }) {\n const { widthUnits: widthUnits, widthScale: widthScale, widthMinPixels: widthMinPixels, widthMaxPixels: widthMaxPixels, wrapLongitude: wrapLongitude } = this.props;\n this.state.model.setUniforms(uniforms).setUniforms({\n widthUnits: (0, $7gQQK.UNIT)[widthUnits],\n widthScale: widthScale,\n widthMinPixels: widthMinPixels,\n widthMaxPixels: widthMaxPixels,\n useShortestPath: wrapLongitude ? 1 : 0\n }).draw();\n if (wrapLongitude) this.state.model.setUniforms({\n useShortestPath: -1\n }).draw();\n }\n _getModel(gl) {\n const positions = [\n 0,\n -1,\n 0,\n 0,\n 1,\n 0,\n 1,\n -1,\n 0,\n 1,\n 1,\n 0\n ];\n return new (0, $b2F4S.default)(gl, (0, $edHbI._)((0, $2QP2i._)({}, this.getShaders()), {\n id: this.props.id,\n geometry: new (0, $cxTxU.default)({\n drawMode: 5,\n attributes: {\n positions: new Float32Array(positions)\n }\n }),\n isInstanced: true\n }));\n }\n}\n(0, $lEQUF.default)($c76b95a99c2450eb$export$2e2bcd8739ae039, \"layerName\", \"LineLayer\");\n(0, $lEQUF.default)($c76b95a99c2450eb$export$2e2bcd8739ae039, \"defaultProps\", $c76b95a99c2450eb$var$defaultProps);\n\n});\nparcelRegister(\"liSuz\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $f8258c66d18bab63$export$2e2bcd8739ae039; });\nvar $f8258c66d18bab63$export$2e2bcd8739ae039 = \"#define SHADER_NAME line-layer-vertex-shader\\n\\nattribute vec3 positions;\\nattribute vec3 instanceSourcePositions;\\nattribute vec3 instanceTargetPositions;\\nattribute vec3 instanceSourcePositions64Low;\\nattribute vec3 instanceTargetPositions64Low;\\nattribute vec4 instanceColors;\\nattribute vec3 instancePickingColors;\\nattribute float instanceWidths;\\n\\nuniform float opacity;\\nuniform float widthScale;\\nuniform float widthMinPixels;\\nuniform float widthMaxPixels;\\nuniform float useShortestPath;\\nuniform int widthUnits;\\n\\nvarying vec4 vColor;\\nvarying vec2 uv;\\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) {\\n vec2 dir_screenspace = normalize(line_clipspace * project_uViewportSize);\\n dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\\n\\n return dir_screenspace * offset_direction * width / 2.0;\\n}\\n\\nvec3 splitLine(vec3 a, vec3 b, float x) {\\n float t = (x - a.x) / (b.x - a.x);\\n return vec3(x, mix(a.yz, b.yz, t));\\n}\\n\\nvoid main(void) {\\n geometry.worldPosition = instanceSourcePositions;\\n geometry.worldPositionAlt = instanceTargetPositions;\\n\\n vec3 source_world = instanceSourcePositions;\\n vec3 target_world = instanceTargetPositions;\\n vec3 source_world_64low = instanceSourcePositions64Low;\\n vec3 target_world_64low = instanceTargetPositions64Low;\\n\\n if (useShortestPath > 0.5 || useShortestPath < -0.5) {\\n source_world.x = mod(source_world.x + 180., 360.0) - 180.;\\n target_world.x = mod(target_world.x + 180., 360.0) - 180.;\\n float deltaLng = target_world.x - source_world.x;\\n\\n if (deltaLng * useShortestPath > 180.) {\\n source_world.x += 360. * useShortestPath;\\n source_world = splitLine(source_world, target_world, 180. * useShortestPath);\\n source_world_64low = vec3(0.0);\\n } else if (deltaLng * useShortestPath < -180.) {\\n target_world.x += 360. * useShortestPath;\\n target_world = splitLine(source_world, target_world, 180. * useShortestPath);\\n target_world_64low = vec3(0.0);\\n } else if (useShortestPath < 0.) {\\n gl_Position = vec4(0.);\\n return;\\n }\\n }\\n vec4 source_commonspace;\\n vec4 target_commonspace;\\n vec4 source = project_position_to_clipspace(source_world, source_world_64low, vec3(0.), source_commonspace);\\n vec4 target = project_position_to_clipspace(target_world, target_world_64low, vec3(0.), target_commonspace);\\n float segmentIndex = positions.x;\\n vec4 p = mix(source, target, segmentIndex);\\n geometry.position = mix(source_commonspace, target_commonspace, segmentIndex);\\n uv = positions.xy;\\n geometry.uv = uv;\\n geometry.pickingColor = instancePickingColors;\\n float widthPixels = clamp(\\n project_size_to_pixel(instanceWidths * widthScale, widthUnits),\\n widthMinPixels, widthMaxPixels\\n );\\n vec3 offset = vec3(\\n getExtrusionOffset(target.xy - source.xy, positions.y, widthPixels),\\n 0.0);\\n DECKGL_FILTER_SIZE(offset, geometry);\\n DECKGL_FILTER_GL_POSITION(p, geometry);\\n gl_Position = p + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0);\\n vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\\n DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n\n});\n\nparcelRegister(\"bzPIt\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $86db145e4f5b9bc6$export$2e2bcd8739ae039; });\nvar $86db145e4f5b9bc6$export$2e2bcd8739ae039 = \"#define SHADER_NAME line-layer-fragment-shader\\n\\nprecision highp float;\\n\\nvarying vec4 vColor;\\nvarying vec2 uv;\\n\\nvoid main(void) {\\n geometry.uv = uv;\\n\\n gl_FragColor = vColor;\\n\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n\n});\n\n\n\nparcelRegister(\"hwgS8\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\n\nvar $lzW2S = parcelRequire(\"lzW2S\");\n\nvar $cc12834887805e55$var$_constants = $cc12834887805e55$var$_interopRequireDefault((parcelRequire(\"6ZpD9\")));\n\nvar $cJo7e = parcelRequire(\"cJo7e\");\nvar $7lUAH = parcelRequire(\"7lUAH\");\n\nvar $cc12834887805e55$var$_outline = $cc12834887805e55$var$_interopRequireDefault((parcelRequire(\"jT2Ca\")));\n\nvar $9brng = parcelRequire(\"9brng\");\nfunction $cc12834887805e55$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $cc12834887805e55$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $cc12834887805e55$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $cc12834887805e55$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $cc12834887805e55$var$_typeof(obj);\n}\nfunction $cc12834887805e55$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $cc12834887805e55$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $cc12834887805e55$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $cc12834887805e55$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $cc12834887805e55$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $cc12834887805e55$var$_get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) $cc12834887805e55$var$_get = Reflect.get;\n else $cc12834887805e55$var$_get = function _get(target, property, receiver) {\n var base = $cc12834887805e55$var$_superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) return desc.get.call(receiver);\n return desc.value;\n };\n return $cc12834887805e55$var$_get(target, property, receiver || target);\n}\nfunction $cc12834887805e55$var$_superPropBase(object, property) {\n while(!Object.prototype.hasOwnProperty.call(object, property)){\n object = $cc12834887805e55$var$_getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nfunction $cc12834887805e55$var$_createSuper(Derived) {\n return function() {\n var Super = $cc12834887805e55$var$_getPrototypeOf(Derived), result;\n if ($cc12834887805e55$var$_isNativeReflectConstruct()) {\n var NewTarget = $cc12834887805e55$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $cc12834887805e55$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $cc12834887805e55$var$_possibleConstructorReturn(self, call) {\n if (call && ($cc12834887805e55$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $cc12834887805e55$var$_assertThisInitialized(self);\n}\nfunction $cc12834887805e55$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $cc12834887805e55$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $cc12834887805e55$var$_getPrototypeOf(o) {\n $cc12834887805e55$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $cc12834887805e55$var$_getPrototypeOf(o);\n}\nfunction $cc12834887805e55$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $cc12834887805e55$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $cc12834887805e55$var$_setPrototypeOf(o, p) {\n $cc12834887805e55$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $cc12834887805e55$var$_setPrototypeOf(o, p);\n}\nfunction $cc12834887805e55$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\n// TODO - this should be built into assembleShaders\nfunction $cc12834887805e55$var$injectShaderCode(_ref) {\n var source = _ref.source, _ref$code = _ref.code, code = _ref$code === void 0 ? \"\" : _ref$code;\n var INJECT_CODE = /}[^{}]*$/;\n return source.replace(INJECT_CODE, code.concat(\"\\n}\\n\"));\n}\nvar $cc12834887805e55$var$VS_CODE = \" outline_setUV(gl_Position);\\n outline_setZLevel(instanceZLevel);\\n\";\nvar $cc12834887805e55$var$FS_CODE = \" gl_FragColor = outline_filterColor(gl_FragColor);\\n\";\nvar $cc12834887805e55$var$defaultProps = {\n getZLevel: function getZLevel() {\n return 0;\n }\n};\nvar $cc12834887805e55$var$PathOutlineLayer = /*#__PURE__*/ function(_PathLayer) {\n $cc12834887805e55$var$_inherits(PathOutlineLayer, _PathLayer);\n var _super = $cc12834887805e55$var$_createSuper(PathOutlineLayer);\n function PathOutlineLayer() {\n $cc12834887805e55$var$_classCallCheck(this, PathOutlineLayer);\n return _super.apply(this, arguments);\n }\n $cc12834887805e55$var$_createClass(PathOutlineLayer, [\n {\n key: \"getShaders\",\n // Override getShaders to inject the outline module\n value: function getShaders() {\n var shaders = $cc12834887805e55$var$_get($cc12834887805e55$var$_getPrototypeOf(PathOutlineLayer.prototype), \"getShaders\", this).call(this);\n return Object.assign({}, shaders, {\n modules: shaders.modules.concat([\n $cc12834887805e55$var$_outline[\"default\"]\n ]),\n vs: $cc12834887805e55$var$injectShaderCode({\n source: shaders.vs,\n code: $cc12834887805e55$var$VS_CODE\n }),\n fs: $cc12834887805e55$var$injectShaderCode({\n source: shaders.fs,\n code: $cc12834887805e55$var$FS_CODE\n })\n });\n }\n },\n {\n key: \"initializeState\",\n value: function initializeState(context) {\n $cc12834887805e55$var$_get($cc12834887805e55$var$_getPrototypeOf(PathOutlineLayer.prototype), \"initializeState\", this).call(this, context); // Create an outline \"shadow\" map\n // TODO - we should create a single outlineMap for all layers\n this.setState({\n outlineFramebuffer: new $cJo7e.default(context.gl),\n dummyTexture: new $7lUAH.default(context.gl)\n }); // Create an attribute manager\n this.state.attributeManager.addInstanced({\n instanceZLevel: {\n size: 1,\n type: $cc12834887805e55$var$_constants[\"default\"].UNSIGNED_BYTE,\n accessor: \"getZLevel\"\n }\n });\n } // Override draw to add render module\n },\n {\n key: \"draw\",\n value: function draw(_ref2) {\n var _ref2$moduleParameter = _ref2.moduleParameters, moduleParameters = _ref2$moduleParameter === void 0 ? {} : _ref2$moduleParameter, parameters = _ref2.parameters, uniforms = _ref2.uniforms, context = _ref2.context;\n // Need to calculate same uniforms as base layer\n var _this$props = this.props, jointRounded = _this$props.jointRounded, capRounded = _this$props.capRounded, billboard = _this$props.billboard, miterLimit = _this$props.miterLimit, widthUnits = _this$props.widthUnits, widthScale = _this$props.widthScale, widthMinPixels = _this$props.widthMinPixels, widthMaxPixels = _this$props.widthMaxPixels;\n uniforms = Object.assign({}, uniforms, {\n jointType: Number(jointRounded),\n capType: Number(capRounded),\n billboard: billboard,\n widthUnits: $9brng.UNIT[widthUnits],\n widthScale: widthScale,\n miterLimit: miterLimit,\n widthMinPixels: widthMinPixels,\n widthMaxPixels: widthMaxPixels\n }); // Render the outline shadowmap (based on segment z orders)\n var _this$state = this.state, outlineFramebuffer = _this$state.outlineFramebuffer, dummyTexture = _this$state.dummyTexture;\n outlineFramebuffer.resize();\n outlineFramebuffer.clear({\n color: true,\n depth: true\n });\n this.state.model.updateModuleSettings({\n outlineEnabled: true,\n outlineRenderShadowmap: true,\n outlineShadowmap: dummyTexture\n });\n this.state.model.draw({\n uniforms: Object.assign({}, uniforms, {\n jointType: 0,\n widthScale: this.props.widthScale * 1.3\n }),\n parameters: {\n depthTest: false,\n // Biggest value needs to go into buffer\n blendEquation: $cc12834887805e55$var$_constants[\"default\"].MAX\n },\n framebuffer: outlineFramebuffer\n }); // Now use the outline shadowmap to render the lines (with outlines)\n this.state.model.updateModuleSettings({\n outlineEnabled: true,\n outlineRenderShadowmap: false,\n outlineShadowmap: outlineFramebuffer\n });\n this.state.model.draw({\n uniforms: Object.assign({}, uniforms, {\n jointType: Number(jointRounded),\n capType: Number(capRounded),\n widthScale: this.props.widthScale\n }),\n parameters: {\n depthTest: false\n }\n });\n }\n }\n ]);\n return PathOutlineLayer;\n}($lzW2S.default);\nmodule.exports[\"default\"] = $cc12834887805e55$var$PathOutlineLayer;\n$cc12834887805e55$var$_defineProperty($cc12834887805e55$var$PathOutlineLayer, \"layerName\", \"PathOutlineLayer\");\n$cc12834887805e55$var$_defineProperty($cc12834887805e55$var$PathOutlineLayer, \"defaultProps\", $cc12834887805e55$var$defaultProps);\n\n});\nparcelRegister(\"6ZpD9\", function(module, exports) {\n\n$parcel$defineInteropFlag(module.exports);\n\n$parcel$export(module.exports, \"default\", function () { return $516c5244f4abe995$export$2e2bcd8739ae039; });\nvar $516c5244f4abe995$export$2e2bcd8739ae039 = {\n DEPTH_BUFFER_BIT: 0x00000100,\n STENCIL_BUFFER_BIT: 0x00000400,\n COLOR_BUFFER_BIT: 0x00004000,\n POINTS: 0x0000,\n LINES: 0x0001,\n LINE_LOOP: 0x0002,\n LINE_STRIP: 0x0003,\n TRIANGLES: 0x0004,\n TRIANGLE_STRIP: 0x0005,\n TRIANGLE_FAN: 0x0006,\n ZERO: 0,\n ONE: 1,\n SRC_COLOR: 0x0300,\n ONE_MINUS_SRC_COLOR: 0x0301,\n SRC_ALPHA: 0x0302,\n ONE_MINUS_SRC_ALPHA: 0x0303,\n DST_ALPHA: 0x0304,\n ONE_MINUS_DST_ALPHA: 0x0305,\n DST_COLOR: 0x0306,\n ONE_MINUS_DST_COLOR: 0x0307,\n SRC_ALPHA_SATURATE: 0x0308,\n CONSTANT_COLOR: 0x8001,\n ONE_MINUS_CONSTANT_COLOR: 0x8002,\n CONSTANT_ALPHA: 0x8003,\n ONE_MINUS_CONSTANT_ALPHA: 0x8004,\n FUNC_ADD: 0x8006,\n FUNC_SUBTRACT: 0x800a,\n FUNC_REVERSE_SUBTRACT: 0x800b,\n BLEND_EQUATION: 0x8009,\n BLEND_EQUATION_RGB: 0x8009,\n BLEND_EQUATION_ALPHA: 0x883d,\n BLEND_DST_RGB: 0x80c8,\n BLEND_SRC_RGB: 0x80c9,\n BLEND_DST_ALPHA: 0x80ca,\n BLEND_SRC_ALPHA: 0x80cb,\n BLEND_COLOR: 0x8005,\n ARRAY_BUFFER_BINDING: 0x8894,\n ELEMENT_ARRAY_BUFFER_BINDING: 0x8895,\n LINE_WIDTH: 0x0b21,\n ALIASED_POINT_SIZE_RANGE: 0x846d,\n ALIASED_LINE_WIDTH_RANGE: 0x846e,\n CULL_FACE_MODE: 0x0b45,\n FRONT_FACE: 0x0b46,\n DEPTH_RANGE: 0x0b70,\n DEPTH_WRITEMASK: 0x0b72,\n DEPTH_CLEAR_VALUE: 0x0b73,\n DEPTH_FUNC: 0x0b74,\n STENCIL_CLEAR_VALUE: 0x0b91,\n STENCIL_FUNC: 0x0b92,\n STENCIL_FAIL: 0x0b94,\n STENCIL_PASS_DEPTH_FAIL: 0x0b95,\n STENCIL_PASS_DEPTH_PASS: 0x0b96,\n STENCIL_REF: 0x0b97,\n STENCIL_VALUE_MASK: 0x0b93,\n STENCIL_WRITEMASK: 0x0b98,\n STENCIL_BACK_FUNC: 0x8800,\n STENCIL_BACK_FAIL: 0x8801,\n STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802,\n STENCIL_BACK_PASS_DEPTH_PASS: 0x8803,\n STENCIL_BACK_REF: 0x8ca3,\n STENCIL_BACK_VALUE_MASK: 0x8ca4,\n STENCIL_BACK_WRITEMASK: 0x8ca5,\n VIEWPORT: 0x0ba2,\n SCISSOR_BOX: 0x0c10,\n COLOR_CLEAR_VALUE: 0x0c22,\n COLOR_WRITEMASK: 0x0c23,\n UNPACK_ALIGNMENT: 0x0cf5,\n PACK_ALIGNMENT: 0x0d05,\n MAX_TEXTURE_SIZE: 0x0d33,\n MAX_VIEWPORT_DIMS: 0x0d3a,\n SUBPIXEL_BITS: 0x0d50,\n RED_BITS: 0x0d52,\n GREEN_BITS: 0x0d53,\n BLUE_BITS: 0x0d54,\n ALPHA_BITS: 0x0d55,\n DEPTH_BITS: 0x0d56,\n STENCIL_BITS: 0x0d57,\n POLYGON_OFFSET_UNITS: 0x2a00,\n POLYGON_OFFSET_FACTOR: 0x8038,\n TEXTURE_BINDING_2D: 0x8069,\n SAMPLE_BUFFERS: 0x80a8,\n SAMPLES: 0x80a9,\n SAMPLE_COVERAGE_VALUE: 0x80aa,\n SAMPLE_COVERAGE_INVERT: 0x80ab,\n COMPRESSED_TEXTURE_FORMATS: 0x86a3,\n VENDOR: 0x1f00,\n RENDERER: 0x1f01,\n VERSION: 0x1f02,\n IMPLEMENTATION_COLOR_READ_TYPE: 0x8b9a,\n IMPLEMENTATION_COLOR_READ_FORMAT: 0x8b9b,\n BROWSER_DEFAULT_WEBGL: 0x9244,\n STATIC_DRAW: 0x88e4,\n STREAM_DRAW: 0x88e0,\n DYNAMIC_DRAW: 0x88e8,\n ARRAY_BUFFER: 0x8892,\n ELEMENT_ARRAY_BUFFER: 0x8893,\n BUFFER_SIZE: 0x8764,\n BUFFER_USAGE: 0x8765,\n CURRENT_VERTEX_ATTRIB: 0x8626,\n VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622,\n VERTEX_ATTRIB_ARRAY_SIZE: 0x8623,\n VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624,\n VERTEX_ATTRIB_ARRAY_TYPE: 0x8625,\n VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886a,\n VERTEX_ATTRIB_ARRAY_POINTER: 0x8645,\n VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889f,\n CULL_FACE: 0x0b44,\n FRONT: 0x0404,\n BACK: 0x0405,\n FRONT_AND_BACK: 0x0408,\n BLEND: 0x0be2,\n DEPTH_TEST: 0x0b71,\n DITHER: 0x0bd0,\n POLYGON_OFFSET_FILL: 0x8037,\n SAMPLE_ALPHA_TO_COVERAGE: 0x809e,\n SAMPLE_COVERAGE: 0x80a0,\n SCISSOR_TEST: 0x0c11,\n STENCIL_TEST: 0x0b90,\n NO_ERROR: 0,\n INVALID_ENUM: 0x0500,\n INVALID_VALUE: 0x0501,\n INVALID_OPERATION: 0x0502,\n OUT_OF_MEMORY: 0x0505,\n CONTEXT_LOST_WEBGL: 0x9242,\n CW: 0x0900,\n CCW: 0x0901,\n DONT_CARE: 0x1100,\n FASTEST: 0x1101,\n NICEST: 0x1102,\n GENERATE_MIPMAP_HINT: 0x8192,\n BYTE: 0x1400,\n UNSIGNED_BYTE: 0x1401,\n SHORT: 0x1402,\n UNSIGNED_SHORT: 0x1403,\n INT: 0x1404,\n UNSIGNED_INT: 0x1405,\n FLOAT: 0x1406,\n DOUBLE: 0x140a,\n DEPTH_COMPONENT: 0x1902,\n ALPHA: 0x1906,\n RGB: 0x1907,\n RGBA: 0x1908,\n LUMINANCE: 0x1909,\n LUMINANCE_ALPHA: 0x190a,\n UNSIGNED_SHORT_4_4_4_4: 0x8033,\n UNSIGNED_SHORT_5_5_5_1: 0x8034,\n UNSIGNED_SHORT_5_6_5: 0x8363,\n FRAGMENT_SHADER: 0x8b30,\n VERTEX_SHADER: 0x8b31,\n COMPILE_STATUS: 0x8b81,\n DELETE_STATUS: 0x8b80,\n LINK_STATUS: 0x8b82,\n VALIDATE_STATUS: 0x8b83,\n ATTACHED_SHADERS: 0x8b85,\n ACTIVE_ATTRIBUTES: 0x8b89,\n ACTIVE_UNIFORMS: 0x8b86,\n MAX_VERTEX_ATTRIBS: 0x8869,\n MAX_VERTEX_UNIFORM_VECTORS: 0x8dfb,\n MAX_VARYING_VECTORS: 0x8dfc,\n MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8b4d,\n MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8b4c,\n MAX_TEXTURE_IMAGE_UNITS: 0x8872,\n MAX_FRAGMENT_UNIFORM_VECTORS: 0x8dfd,\n SHADER_TYPE: 0x8b4f,\n SHADING_LANGUAGE_VERSION: 0x8b8c,\n CURRENT_PROGRAM: 0x8b8d,\n NEVER: 0x0200,\n ALWAYS: 0x0207,\n LESS: 0x0201,\n EQUAL: 0x0202,\n LEQUAL: 0x0203,\n GREATER: 0x0204,\n GEQUAL: 0x0206,\n NOTEQUAL: 0x0205,\n KEEP: 0x1e00,\n REPLACE: 0x1e01,\n INCR: 0x1e02,\n DECR: 0x1e03,\n INVERT: 0x150a,\n INCR_WRAP: 0x8507,\n DECR_WRAP: 0x8508,\n NEAREST: 0x2600,\n LINEAR: 0x2601,\n NEAREST_MIPMAP_NEAREST: 0x2700,\n LINEAR_MIPMAP_NEAREST: 0x2701,\n NEAREST_MIPMAP_LINEAR: 0x2702,\n LINEAR_MIPMAP_LINEAR: 0x2703,\n TEXTURE_MAG_FILTER: 0x2800,\n TEXTURE_MIN_FILTER: 0x2801,\n TEXTURE_WRAP_S: 0x2802,\n TEXTURE_WRAP_T: 0x2803,\n TEXTURE_2D: 0x0de1,\n TEXTURE: 0x1702,\n TEXTURE_CUBE_MAP: 0x8513,\n TEXTURE_BINDING_CUBE_MAP: 0x8514,\n TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515,\n TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516,\n TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517,\n TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518,\n TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519,\n TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851a,\n MAX_CUBE_MAP_TEXTURE_SIZE: 0x851c,\n TEXTURE0: 0x84c0,\n ACTIVE_TEXTURE: 0x84e0,\n REPEAT: 0x2901,\n CLAMP_TO_EDGE: 0x812f,\n MIRRORED_REPEAT: 0x8370,\n TEXTURE_WIDTH: 0x1000,\n TEXTURE_HEIGHT: 0x1001,\n FLOAT_VEC2: 0x8b50,\n FLOAT_VEC3: 0x8b51,\n FLOAT_VEC4: 0x8b52,\n INT_VEC2: 0x8b53,\n INT_VEC3: 0x8b54,\n INT_VEC4: 0x8b55,\n BOOL: 0x8b56,\n BOOL_VEC2: 0x8b57,\n BOOL_VEC3: 0x8b58,\n BOOL_VEC4: 0x8b59,\n FLOAT_MAT2: 0x8b5a,\n FLOAT_MAT3: 0x8b5b,\n FLOAT_MAT4: 0x8b5c,\n SAMPLER_2D: 0x8b5e,\n SAMPLER_CUBE: 0x8b60,\n LOW_FLOAT: 0x8df0,\n MEDIUM_FLOAT: 0x8df1,\n HIGH_FLOAT: 0x8df2,\n LOW_INT: 0x8df3,\n MEDIUM_INT: 0x8df4,\n HIGH_INT: 0x8df5,\n FRAMEBUFFER: 0x8d40,\n RENDERBUFFER: 0x8d41,\n RGBA4: 0x8056,\n RGB5_A1: 0x8057,\n RGB565: 0x8d62,\n DEPTH_COMPONENT16: 0x81a5,\n STENCIL_INDEX: 0x1901,\n STENCIL_INDEX8: 0x8d48,\n DEPTH_STENCIL: 0x84f9,\n RENDERBUFFER_WIDTH: 0x8d42,\n RENDERBUFFER_HEIGHT: 0x8d43,\n RENDERBUFFER_INTERNAL_FORMAT: 0x8d44,\n RENDERBUFFER_RED_SIZE: 0x8d50,\n RENDERBUFFER_GREEN_SIZE: 0x8d51,\n RENDERBUFFER_BLUE_SIZE: 0x8d52,\n RENDERBUFFER_ALPHA_SIZE: 0x8d53,\n RENDERBUFFER_DEPTH_SIZE: 0x8d54,\n RENDERBUFFER_STENCIL_SIZE: 0x8d55,\n FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8cd0,\n FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8cd1,\n FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8cd2,\n FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8cd3,\n COLOR_ATTACHMENT0: 0x8ce0,\n DEPTH_ATTACHMENT: 0x8d00,\n STENCIL_ATTACHMENT: 0x8d20,\n DEPTH_STENCIL_ATTACHMENT: 0x821a,\n NONE: 0,\n FRAMEBUFFER_COMPLETE: 0x8cd5,\n FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8cd6,\n FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8cd7,\n FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8cd9,\n FRAMEBUFFER_UNSUPPORTED: 0x8cdd,\n FRAMEBUFFER_BINDING: 0x8ca6,\n RENDERBUFFER_BINDING: 0x8ca7,\n READ_FRAMEBUFFER: 0x8ca8,\n DRAW_FRAMEBUFFER: 0x8ca9,\n MAX_RENDERBUFFER_SIZE: 0x84e8,\n INVALID_FRAMEBUFFER_OPERATION: 0x0506,\n UNPACK_FLIP_Y_WEBGL: 0x9240,\n UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241,\n UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243,\n READ_BUFFER: 0x0c02,\n UNPACK_ROW_LENGTH: 0x0cf2,\n UNPACK_SKIP_ROWS: 0x0cf3,\n UNPACK_SKIP_PIXELS: 0x0cf4,\n PACK_ROW_LENGTH: 0x0d02,\n PACK_SKIP_ROWS: 0x0d03,\n PACK_SKIP_PIXELS: 0x0d04,\n TEXTURE_BINDING_3D: 0x806a,\n UNPACK_SKIP_IMAGES: 0x806d,\n UNPACK_IMAGE_HEIGHT: 0x806e,\n MAX_3D_TEXTURE_SIZE: 0x8073,\n MAX_ELEMENTS_VERTICES: 0x80e8,\n MAX_ELEMENTS_INDICES: 0x80e9,\n MAX_TEXTURE_LOD_BIAS: 0x84fd,\n MAX_FRAGMENT_UNIFORM_COMPONENTS: 0x8b49,\n MAX_VERTEX_UNIFORM_COMPONENTS: 0x8b4a,\n MAX_ARRAY_TEXTURE_LAYERS: 0x88ff,\n MIN_PROGRAM_TEXEL_OFFSET: 0x8904,\n MAX_PROGRAM_TEXEL_OFFSET: 0x8905,\n MAX_VARYING_COMPONENTS: 0x8b4b,\n FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8b8b,\n RASTERIZER_DISCARD: 0x8c89,\n VERTEX_ARRAY_BINDING: 0x85b5,\n MAX_VERTEX_OUTPUT_COMPONENTS: 0x9122,\n MAX_FRAGMENT_INPUT_COMPONENTS: 0x9125,\n MAX_SERVER_WAIT_TIMEOUT: 0x9111,\n MAX_ELEMENT_INDEX: 0x8d6b,\n RED: 0x1903,\n RGB8: 0x8051,\n RGBA8: 0x8058,\n RGB10_A2: 0x8059,\n TEXTURE_3D: 0x806f,\n TEXTURE_WRAP_R: 0x8072,\n TEXTURE_MIN_LOD: 0x813a,\n TEXTURE_MAX_LOD: 0x813b,\n TEXTURE_BASE_LEVEL: 0x813c,\n TEXTURE_MAX_LEVEL: 0x813d,\n TEXTURE_COMPARE_MODE: 0x884c,\n TEXTURE_COMPARE_FUNC: 0x884d,\n SRGB: 0x8c40,\n SRGB8: 0x8c41,\n SRGB8_ALPHA8: 0x8c43,\n COMPARE_REF_TO_TEXTURE: 0x884e,\n RGBA32F: 0x8814,\n RGB32F: 0x8815,\n RGBA16F: 0x881a,\n RGB16F: 0x881b,\n TEXTURE_2D_ARRAY: 0x8c1a,\n TEXTURE_BINDING_2D_ARRAY: 0x8c1d,\n R11F_G11F_B10F: 0x8c3a,\n RGB9_E5: 0x8c3d,\n RGBA32UI: 0x8d70,\n RGB32UI: 0x8d71,\n RGBA16UI: 0x8d76,\n RGB16UI: 0x8d77,\n RGBA8UI: 0x8d7c,\n RGB8UI: 0x8d7d,\n RGBA32I: 0x8d82,\n RGB32I: 0x8d83,\n RGBA16I: 0x8d88,\n RGB16I: 0x8d89,\n RGBA8I: 0x8d8e,\n RGB8I: 0x8d8f,\n RED_INTEGER: 0x8d94,\n RGB_INTEGER: 0x8d98,\n RGBA_INTEGER: 0x8d99,\n R8: 0x8229,\n RG8: 0x822b,\n R16F: 0x822d,\n R32F: 0x822e,\n RG16F: 0x822f,\n RG32F: 0x8230,\n R8I: 0x8231,\n R8UI: 0x8232,\n R16I: 0x8233,\n R16UI: 0x8234,\n R32I: 0x8235,\n R32UI: 0x8236,\n RG8I: 0x8237,\n RG8UI: 0x8238,\n RG16I: 0x8239,\n RG16UI: 0x823a,\n RG32I: 0x823b,\n RG32UI: 0x823c,\n R8_SNORM: 0x8f94,\n RG8_SNORM: 0x8f95,\n RGB8_SNORM: 0x8f96,\n RGBA8_SNORM: 0x8f97,\n RGB10_A2UI: 0x906f,\n TEXTURE_IMMUTABLE_FORMAT: 0x912f,\n TEXTURE_IMMUTABLE_LEVELS: 0x82df,\n UNSIGNED_INT_2_10_10_10_REV: 0x8368,\n UNSIGNED_INT_10F_11F_11F_REV: 0x8c3b,\n UNSIGNED_INT_5_9_9_9_REV: 0x8c3e,\n FLOAT_32_UNSIGNED_INT_24_8_REV: 0x8dad,\n UNSIGNED_INT_24_8: 0x84fa,\n HALF_FLOAT: 0x140b,\n RG: 0x8227,\n RG_INTEGER: 0x8228,\n INT_2_10_10_10_REV: 0x8d9f,\n CURRENT_QUERY: 0x8865,\n QUERY_RESULT: 0x8866,\n QUERY_RESULT_AVAILABLE: 0x8867,\n ANY_SAMPLES_PASSED: 0x8c2f,\n ANY_SAMPLES_PASSED_CONSERVATIVE: 0x8d6a,\n MAX_DRAW_BUFFERS: 0x8824,\n DRAW_BUFFER0: 0x8825,\n DRAW_BUFFER1: 0x8826,\n DRAW_BUFFER2: 0x8827,\n DRAW_BUFFER3: 0x8828,\n DRAW_BUFFER4: 0x8829,\n DRAW_BUFFER5: 0x882a,\n DRAW_BUFFER6: 0x882b,\n DRAW_BUFFER7: 0x882c,\n DRAW_BUFFER8: 0x882d,\n DRAW_BUFFER9: 0x882e,\n DRAW_BUFFER10: 0x882f,\n DRAW_BUFFER11: 0x8830,\n DRAW_BUFFER12: 0x8831,\n DRAW_BUFFER13: 0x8832,\n DRAW_BUFFER14: 0x8833,\n DRAW_BUFFER15: 0x8834,\n MAX_COLOR_ATTACHMENTS: 0x8cdf,\n COLOR_ATTACHMENT1: 0x8ce1,\n COLOR_ATTACHMENT2: 0x8ce2,\n COLOR_ATTACHMENT3: 0x8ce3,\n COLOR_ATTACHMENT4: 0x8ce4,\n COLOR_ATTACHMENT5: 0x8ce5,\n COLOR_ATTACHMENT6: 0x8ce6,\n COLOR_ATTACHMENT7: 0x8ce7,\n COLOR_ATTACHMENT8: 0x8ce8,\n COLOR_ATTACHMENT9: 0x8ce9,\n COLOR_ATTACHMENT10: 0x8cea,\n COLOR_ATTACHMENT11: 0x8ceb,\n COLOR_ATTACHMENT12: 0x8cec,\n COLOR_ATTACHMENT13: 0x8ced,\n COLOR_ATTACHMENT14: 0x8cee,\n COLOR_ATTACHMENT15: 0x8cef,\n SAMPLER_3D: 0x8b5f,\n SAMPLER_2D_SHADOW: 0x8b62,\n SAMPLER_2D_ARRAY: 0x8dc1,\n SAMPLER_2D_ARRAY_SHADOW: 0x8dc4,\n SAMPLER_CUBE_SHADOW: 0x8dc5,\n INT_SAMPLER_2D: 0x8dca,\n INT_SAMPLER_3D: 0x8dcb,\n INT_SAMPLER_CUBE: 0x8dcc,\n INT_SAMPLER_2D_ARRAY: 0x8dcf,\n UNSIGNED_INT_SAMPLER_2D: 0x8dd2,\n UNSIGNED_INT_SAMPLER_3D: 0x8dd3,\n UNSIGNED_INT_SAMPLER_CUBE: 0x8dd4,\n UNSIGNED_INT_SAMPLER_2D_ARRAY: 0x8dd7,\n MAX_SAMPLES: 0x8d57,\n SAMPLER_BINDING: 0x8919,\n PIXEL_PACK_BUFFER: 0x88eb,\n PIXEL_UNPACK_BUFFER: 0x88ec,\n PIXEL_PACK_BUFFER_BINDING: 0x88ed,\n PIXEL_UNPACK_BUFFER_BINDING: 0x88ef,\n COPY_READ_BUFFER: 0x8f36,\n COPY_WRITE_BUFFER: 0x8f37,\n COPY_READ_BUFFER_BINDING: 0x8f36,\n COPY_WRITE_BUFFER_BINDING: 0x8f37,\n FLOAT_MAT2x3: 0x8b65,\n FLOAT_MAT2x4: 0x8b66,\n FLOAT_MAT3x2: 0x8b67,\n FLOAT_MAT3x4: 0x8b68,\n FLOAT_MAT4x2: 0x8b69,\n FLOAT_MAT4x3: 0x8b6a,\n UNSIGNED_INT_VEC2: 0x8dc6,\n UNSIGNED_INT_VEC3: 0x8dc7,\n UNSIGNED_INT_VEC4: 0x8dc8,\n UNSIGNED_NORMALIZED: 0x8c17,\n SIGNED_NORMALIZED: 0x8f9c,\n VERTEX_ATTRIB_ARRAY_INTEGER: 0x88fd,\n VERTEX_ATTRIB_ARRAY_DIVISOR: 0x88fe,\n TRANSFORM_FEEDBACK_BUFFER_MODE: 0x8c7f,\n MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 0x8c80,\n TRANSFORM_FEEDBACK_VARYINGS: 0x8c83,\n TRANSFORM_FEEDBACK_BUFFER_START: 0x8c84,\n TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8c85,\n TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 0x8c88,\n MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 0x8c8a,\n MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 0x8c8b,\n INTERLEAVED_ATTRIBS: 0x8c8c,\n SEPARATE_ATTRIBS: 0x8c8d,\n TRANSFORM_FEEDBACK_BUFFER: 0x8c8e,\n TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8c8f,\n TRANSFORM_FEEDBACK: 0x8e22,\n TRANSFORM_FEEDBACK_PAUSED: 0x8e23,\n TRANSFORM_FEEDBACK_ACTIVE: 0x8e24,\n TRANSFORM_FEEDBACK_BINDING: 0x8e25,\n FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 0x8210,\n FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 0x8211,\n FRAMEBUFFER_ATTACHMENT_RED_SIZE: 0x8212,\n FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 0x8213,\n FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 0x8214,\n FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 0x8215,\n FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 0x8216,\n FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 0x8217,\n FRAMEBUFFER_DEFAULT: 0x8218,\n DEPTH24_STENCIL8: 0x88f0,\n DRAW_FRAMEBUFFER_BINDING: 0x8ca6,\n READ_FRAMEBUFFER_BINDING: 0x8caa,\n RENDERBUFFER_SAMPLES: 0x8cab,\n FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 0x8cd4,\n FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 0x8d56,\n UNIFORM_BUFFER: 0x8a11,\n UNIFORM_BUFFER_BINDING: 0x8a28,\n UNIFORM_BUFFER_START: 0x8a29,\n UNIFORM_BUFFER_SIZE: 0x8a2a,\n MAX_VERTEX_UNIFORM_BLOCKS: 0x8a2b,\n MAX_FRAGMENT_UNIFORM_BLOCKS: 0x8a2d,\n MAX_COMBINED_UNIFORM_BLOCKS: 0x8a2e,\n MAX_UNIFORM_BUFFER_BINDINGS: 0x8a2f,\n MAX_UNIFORM_BLOCK_SIZE: 0x8a30,\n MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 0x8a31,\n MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 0x8a33,\n UNIFORM_BUFFER_OFFSET_ALIGNMENT: 0x8a34,\n ACTIVE_UNIFORM_BLOCKS: 0x8a36,\n UNIFORM_TYPE: 0x8a37,\n UNIFORM_SIZE: 0x8a38,\n UNIFORM_BLOCK_INDEX: 0x8a3a,\n UNIFORM_OFFSET: 0x8a3b,\n UNIFORM_ARRAY_STRIDE: 0x8a3c,\n UNIFORM_MATRIX_STRIDE: 0x8a3d,\n UNIFORM_IS_ROW_MAJOR: 0x8a3e,\n UNIFORM_BLOCK_BINDING: 0x8a3f,\n UNIFORM_BLOCK_DATA_SIZE: 0x8a40,\n UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8a42,\n UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8a43,\n UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8a44,\n UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8a46,\n OBJECT_TYPE: 0x9112,\n SYNC_CONDITION: 0x9113,\n SYNC_STATUS: 0x9114,\n SYNC_FLAGS: 0x9115,\n SYNC_FENCE: 0x9116,\n SYNC_GPU_COMMANDS_COMPLETE: 0x9117,\n UNSIGNALED: 0x9118,\n SIGNALED: 0x9119,\n ALREADY_SIGNALED: 0x911a,\n TIMEOUT_EXPIRED: 0x911b,\n CONDITION_SATISFIED: 0x911c,\n WAIT_FAILED: 0x911d,\n SYNC_FLUSH_COMMANDS_BIT: 0x00000001,\n COLOR: 0x1800,\n DEPTH: 0x1801,\n STENCIL: 0x1802,\n MIN: 0x8007,\n MAX: 0x8008,\n DEPTH_COMPONENT24: 0x81a6,\n STREAM_READ: 0x88e1,\n STREAM_COPY: 0x88e2,\n STATIC_READ: 0x88e5,\n STATIC_COPY: 0x88e6,\n DYNAMIC_READ: 0x88e9,\n DYNAMIC_COPY: 0x88ea,\n DEPTH_COMPONENT32F: 0x8cac,\n DEPTH32F_STENCIL8: 0x8cad,\n INVALID_INDEX: 0xffffffff,\n TIMEOUT_IGNORED: -1,\n MAX_CLIENT_WAIT_TIMEOUT_WEBGL: 0x9247,\n VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: 0x88fe,\n UNMASKED_VENDOR_WEBGL: 0x9245,\n UNMASKED_RENDERER_WEBGL: 0x9246,\n MAX_TEXTURE_MAX_ANISOTROPY_EXT: 0x84ff,\n TEXTURE_MAX_ANISOTROPY_EXT: 0x84fe,\n COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83f0,\n COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83f1,\n COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83f2,\n COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83f3,\n COMPRESSED_R11_EAC: 0x9270,\n COMPRESSED_SIGNED_R11_EAC: 0x9271,\n COMPRESSED_RG11_EAC: 0x9272,\n COMPRESSED_SIGNED_RG11_EAC: 0x9273,\n COMPRESSED_RGB8_ETC2: 0x9274,\n COMPRESSED_RGBA8_ETC2_EAC: 0x9275,\n COMPRESSED_SRGB8_ETC2: 0x9276,\n COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 0x9277,\n COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9278,\n COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9279,\n COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 0x8c00,\n COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 0x8c02,\n COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 0x8c01,\n COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 0x8c03,\n COMPRESSED_RGB_ETC1_WEBGL: 0x8d64,\n COMPRESSED_RGB_ATC_WEBGL: 0x8c92,\n COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 0x8c92,\n COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 0x87ee,\n UNSIGNED_INT_24_8_WEBGL: 0x84fa,\n HALF_FLOAT_OES: 0x8d61,\n RGBA32F_EXT: 0x8814,\n RGB32F_EXT: 0x8815,\n FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: 0x8211,\n UNSIGNED_NORMALIZED_EXT: 0x8c17,\n MIN_EXT: 0x8007,\n MAX_EXT: 0x8008,\n SRGB_EXT: 0x8c40,\n SRGB_ALPHA_EXT: 0x8c42,\n SRGB8_ALPHA8_EXT: 0x8c43,\n FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: 0x8210,\n FRAGMENT_SHADER_DERIVATIVE_HINT_OES: 0x8b8b,\n COLOR_ATTACHMENT0_WEBGL: 0x8ce0,\n COLOR_ATTACHMENT1_WEBGL: 0x8ce1,\n COLOR_ATTACHMENT2_WEBGL: 0x8ce2,\n COLOR_ATTACHMENT3_WEBGL: 0x8ce3,\n COLOR_ATTACHMENT4_WEBGL: 0x8ce4,\n COLOR_ATTACHMENT5_WEBGL: 0x8ce5,\n COLOR_ATTACHMENT6_WEBGL: 0x8ce6,\n COLOR_ATTACHMENT7_WEBGL: 0x8ce7,\n COLOR_ATTACHMENT8_WEBGL: 0x8ce8,\n COLOR_ATTACHMENT9_WEBGL: 0x8ce9,\n COLOR_ATTACHMENT10_WEBGL: 0x8cea,\n COLOR_ATTACHMENT11_WEBGL: 0x8ceb,\n COLOR_ATTACHMENT12_WEBGL: 0x8cec,\n COLOR_ATTACHMENT13_WEBGL: 0x8ced,\n COLOR_ATTACHMENT14_WEBGL: 0x8cee,\n COLOR_ATTACHMENT15_WEBGL: 0x8cef,\n DRAW_BUFFER0_WEBGL: 0x8825,\n DRAW_BUFFER1_WEBGL: 0x8826,\n DRAW_BUFFER2_WEBGL: 0x8827,\n DRAW_BUFFER3_WEBGL: 0x8828,\n DRAW_BUFFER4_WEBGL: 0x8829,\n DRAW_BUFFER5_WEBGL: 0x882a,\n DRAW_BUFFER6_WEBGL: 0x882b,\n DRAW_BUFFER7_WEBGL: 0x882c,\n DRAW_BUFFER8_WEBGL: 0x882d,\n DRAW_BUFFER9_WEBGL: 0x882e,\n DRAW_BUFFER10_WEBGL: 0x882f,\n DRAW_BUFFER11_WEBGL: 0x8830,\n DRAW_BUFFER12_WEBGL: 0x8831,\n DRAW_BUFFER13_WEBGL: 0x8832,\n DRAW_BUFFER14_WEBGL: 0x8833,\n DRAW_BUFFER15_WEBGL: 0x8834,\n MAX_COLOR_ATTACHMENTS_WEBGL: 0x8cdf,\n MAX_DRAW_BUFFERS_WEBGL: 0x8824,\n VERTEX_ARRAY_BINDING_OES: 0x85b5,\n QUERY_COUNTER_BITS_EXT: 0x8864,\n CURRENT_QUERY_EXT: 0x8865,\n QUERY_RESULT_EXT: 0x8866,\n QUERY_RESULT_AVAILABLE_EXT: 0x8867,\n TIME_ELAPSED_EXT: 0x88bf,\n TIMESTAMP_EXT: 0x8e28,\n GPU_DISJOINT_EXT: 0x8fbb\n};\n\n});\n\nparcelRegister(\"jT2Ca\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\n/* eslint-disable camelcase */ var $e7a52e95fe0ce428$var$INITIAL_STATE = {\n outlineEnabled: false,\n outlineRenderShadowmap: false,\n outlineShadowmap: null\n};\nfunction $e7a52e95fe0ce428$var$getUniforms() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : $e7a52e95fe0ce428$var$INITIAL_STATE, outlineEnabled = _ref.outlineEnabled, outlineRenderShadowmap = _ref.outlineRenderShadowmap, outlineShadowmap = _ref.outlineShadowmap;\n var uniforms = {};\n if (outlineEnabled !== undefined) // ? 1.0 : 0.0;\n uniforms.outline_uEnabled = outlineEnabled;\n if (outlineRenderShadowmap !== undefined) // ? 1.0 : 0.0;\n uniforms.outline_uRenderOutlines = outlineRenderShadowmap;\n if (outlineShadowmap !== undefined) uniforms.outline_uShadowmap = outlineShadowmap;\n return uniforms;\n}\nvar $e7a52e95fe0ce428$var$vs = \"attribute float instanceZLevel;\\nvarying float outline_vzLevel;\\nvarying vec4 outline_vPosition;\\n\\n// Set the z level for the outline shadowmap rendering\\nvoid outline_setZLevel(float zLevel) {\\n outline_vzLevel = zLevel;\\n}\\n\\n// Store an adjusted position for texture2DProj\\nvoid outline_setUV(vec4 position) {\\n // mat4(\\n // 0.5, 0.0, 0.0, 0.0,\\n // 0.0, 0.5, 0.0, 0.0,\\n // 0.0, 0.0, 0.5, 0.0,\\n // 0.5, 0.5, 0.5, 1.0\\n // ) * position;\\n outline_vPosition = vec4(position.xyz * 0.5 + position.w * 0.5, position.w);\\n}\\n\";\nvar $e7a52e95fe0ce428$var$fs = \"uniform bool outline_uEnabled;\\nuniform bool outline_uRenderOutlines;\\nuniform sampler2D outline_uShadowmap;\\n\\nvarying float outline_vzLevel;\\n// varying vec2 outline_vUV;\\nvarying vec4 outline_vPosition;\\n\\nconst float OUTLINE_Z_LEVEL_ERROR = 0.01;\\n\\n// Return a darker color in shadowmap\\nvec4 outline_filterShadowColor(vec4 color) {\\n return vec4(outline_vzLevel / 255., outline_vzLevel / 255., outline_vzLevel / 255., 1.);\\n}\\n\\n// Return a darker color if in shadowmap\\nvec4 outline_filterDarkenColor(vec4 color) {\\n if (outline_uEnabled) {\\n float maxZLevel;\\n if (outline_vPosition.q > 0.0) {\\n maxZLevel = texture2DProj(outline_uShadowmap, outline_vPosition).r * 255.;\\n } else {\\n discard;\\n }\\n if (maxZLevel < outline_vzLevel + OUTLINE_Z_LEVEL_ERROR) {\\n vec4(color.rgb * 0.5, color.a);\\n } else {\\n discard;\\n }\\n }\\n return color;\\n}\\n\\n// if enabled and rendering outlines - Render depth to shadowmap\\n// if enabled and rendering colors - Return a darker color if in shadowmap\\n// if disabled, just return color\\nvec4 outline_filterColor(vec4 color) {\\n if (outline_uEnabled) {\\n return outline_uRenderOutlines ?\\n outline_filterShadowColor(color) :\\n outline_filterDarkenColor(color);\\n }\\n return color;\\n}\\n\";\nvar $e7a52e95fe0ce428$var$_default = {\n name: \"outline\",\n vs: $e7a52e95fe0ce428$var$vs,\n fs: $e7a52e95fe0ce428$var$fs,\n getUniforms: $e7a52e95fe0ce428$var$getUniforms\n};\nmodule.exports[\"default\"] = $e7a52e95fe0ce428$var$_default;\n\n});\n\n\nparcelRegister(\"ctByJ\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\n\nvar $coXLq = parcelRequire(\"coXLq\");\nvar $7gQQK = parcelRequire(\"7gQQK\");\n\nvar $cYQ5y = parcelRequire(\"cYQ5y\");\n\nvar $cNooP = parcelRequire(\"cNooP\");\n\nvar $915553ed5370bf6e$var$_pathOutlineLayer = $915553ed5370bf6e$var$_interopRequireDefault((parcelRequire(\"hwgS8\")));\n\nvar $915553ed5370bf6e$var$_arrow2dGeometry = $915553ed5370bf6e$var$_interopRequireDefault((parcelRequire(\"kdbZI\")));\n\nvar $915553ed5370bf6e$var$_createPathMarkers = $915553ed5370bf6e$var$_interopRequireDefault((parcelRequire(\"ckc25\")));\n\nvar $9HybI = parcelRequire(\"9HybI\");\nfunction $915553ed5370bf6e$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $915553ed5370bf6e$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $915553ed5370bf6e$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $915553ed5370bf6e$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $915553ed5370bf6e$var$_typeof(obj);\n}\nfunction $915553ed5370bf6e$var$_slicedToArray(arr, i) {\n return $915553ed5370bf6e$var$_arrayWithHoles(arr) || $915553ed5370bf6e$var$_iterableToArrayLimit(arr, i) || $915553ed5370bf6e$var$_unsupportedIterableToArray(arr, i) || $915553ed5370bf6e$var$_nonIterableRest();\n}\nfunction $915553ed5370bf6e$var$_nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $915553ed5370bf6e$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $915553ed5370bf6e$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $915553ed5370bf6e$var$_arrayLikeToArray(o, minLen);\n}\nfunction $915553ed5370bf6e$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $915553ed5370bf6e$var$_iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for(var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction $915553ed5370bf6e$var$_arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction $915553ed5370bf6e$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $915553ed5370bf6e$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $915553ed5370bf6e$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $915553ed5370bf6e$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $915553ed5370bf6e$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $915553ed5370bf6e$var$_createSuper(Derived) {\n return function() {\n var Super = $915553ed5370bf6e$var$_getPrototypeOf(Derived), result;\n if ($915553ed5370bf6e$var$_isNativeReflectConstruct()) {\n var NewTarget = $915553ed5370bf6e$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $915553ed5370bf6e$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $915553ed5370bf6e$var$_possibleConstructorReturn(self, call) {\n if (call && ($915553ed5370bf6e$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $915553ed5370bf6e$var$_assertThisInitialized(self);\n}\nfunction $915553ed5370bf6e$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $915553ed5370bf6e$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $915553ed5370bf6e$var$_getPrototypeOf(o) {\n $915553ed5370bf6e$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $915553ed5370bf6e$var$_getPrototypeOf(o);\n}\nfunction $915553ed5370bf6e$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $915553ed5370bf6e$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $915553ed5370bf6e$var$_setPrototypeOf(o, p) {\n $915553ed5370bf6e$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $915553ed5370bf6e$var$_setPrototypeOf(o, p);\n}\nfunction $915553ed5370bf6e$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $915553ed5370bf6e$var$DISTANCE_FOR_MULTI_ARROWS = 0.1;\nvar $915553ed5370bf6e$var$ARROW_HEAD_SIZE = 0.2;\nvar $915553ed5370bf6e$var$ARROW_TAIL_WIDTH = 0.05; // const ARROW_CENTER_ADJUST = -0.8;\nvar $915553ed5370bf6e$var$DEFAULT_MARKER_LAYER = $cNooP.default;\nvar $915553ed5370bf6e$var$DEFAULT_MARKER_LAYER_PROPS = {\n mesh: new $915553ed5370bf6e$var$_arrow2dGeometry[\"default\"]({\n headSize: $915553ed5370bf6e$var$ARROW_HEAD_SIZE,\n tailWidth: $915553ed5370bf6e$var$ARROW_TAIL_WIDTH\n })\n};\nvar $915553ed5370bf6e$var$defaultProps = Object.assign({}, $915553ed5370bf6e$var$_pathOutlineLayer[\"default\"].defaultProps, {\n MarkerLayer: $915553ed5370bf6e$var$DEFAULT_MARKER_LAYER,\n markerLayerProps: $915553ed5370bf6e$var$DEFAULT_MARKER_LAYER_PROPS,\n sizeScale: 100,\n fp64: false,\n highlightIndex: -1,\n highlightPoint: null,\n getPath: function getPath(x) {\n return x.path;\n },\n getColor: function getColor(x) {\n return x.color;\n },\n getMarkerColor: function getMarkerColor(x) {\n return [\n 0,\n 0,\n 0,\n 255\n ];\n },\n getDirection: function getDirection(x) {\n return x.direction;\n },\n getMarkerPercentages: function getMarkerPercentages(object, _ref) {\n var lineLength = _ref.lineLength;\n return lineLength > $915553ed5370bf6e$var$DISTANCE_FOR_MULTI_ARROWS ? [\n 0.25,\n 0.5,\n 0.75\n ] : [\n 0.5\n ];\n }\n});\nvar $915553ed5370bf6e$var$PathMarkerLayer = /*#__PURE__*/ function(_CompositeLayer) {\n $915553ed5370bf6e$var$_inherits(PathMarkerLayer, _CompositeLayer);\n var _super = $915553ed5370bf6e$var$_createSuper(PathMarkerLayer);\n function PathMarkerLayer() {\n $915553ed5370bf6e$var$_classCallCheck(this, PathMarkerLayer);\n return _super.apply(this, arguments);\n }\n $915553ed5370bf6e$var$_createClass(PathMarkerLayer, [\n {\n key: \"initializeState\",\n value: function initializeState() {\n this.state = {\n markers: [],\n mesh: new $915553ed5370bf6e$var$_arrow2dGeometry[\"default\"]({\n headSize: $915553ed5370bf6e$var$ARROW_HEAD_SIZE,\n tailWidth: $915553ed5370bf6e$var$ARROW_TAIL_WIDTH\n }),\n closestPoint: null\n };\n } // @ts-ignore\n },\n {\n key: \"projectFlat\",\n value: function projectFlat(xyz, viewport, coordinateSystem, coordinateOrigin) {\n if (coordinateSystem === $7gQQK.COORDINATE_SYSTEM.METER_OFFSETS) {\n var _viewport$metersToLng = viewport.metersToLngLatDelta(xyz), _viewport$metersToLng2 = $915553ed5370bf6e$var$_slicedToArray(_viewport$metersToLng, 2), dx = _viewport$metersToLng2[0], dy = _viewport$metersToLng2[1];\n var _coordinateOrigin = $915553ed5370bf6e$var$_slicedToArray(coordinateOrigin, 2), _x = _coordinateOrigin[0], y = _coordinateOrigin[1];\n return viewport.projectFlat([\n _x + dx,\n dy + y\n ]);\n } else if (coordinateSystem === $7gQQK.COORDINATE_SYSTEM.LNGLAT_OFFSETS) {\n var _xyz = $915553ed5370bf6e$var$_slicedToArray(xyz, 2), _dx = _xyz[0], _dy = _xyz[1];\n var _coordinateOrigin2 = $915553ed5370bf6e$var$_slicedToArray(coordinateOrigin, 2), _x2 = _coordinateOrigin2[0], _y = _coordinateOrigin2[1];\n return viewport.projectFlat([\n _x2 + _dx,\n _dy + _y\n ]);\n }\n return viewport.projectFlat(xyz);\n }\n },\n {\n key: \"updateState\",\n value: function updateState(_ref2) {\n var _this = this;\n var props = _ref2.props, oldProps = _ref2.oldProps, changeFlags = _ref2.changeFlags;\n if (changeFlags.dataChanged || changeFlags.updateTriggersChanged) {\n var _this$props = this.props, data = _this$props.data, getPath = _this$props.getPath, getDirection = _this$props.getDirection, getMarkerColor = _this$props.getMarkerColor, getMarkerPercentages = _this$props.getMarkerPercentages, coordinateSystem = _this$props.coordinateSystem, coordinateOrigin = _this$props.coordinateOrigin; // @ts-ignore\n var viewport = this.context.viewport;\n var projectFlat = function projectFlat(o) {\n return _this.projectFlat(o, viewport, coordinateSystem, coordinateOrigin);\n };\n this.state.markers = (0, $915553ed5370bf6e$var$_createPathMarkers[\"default\"])({\n data: data,\n getPath: getPath,\n getDirection: getDirection,\n getColor: getMarkerColor,\n getMarkerPercentages: getMarkerPercentages,\n projectFlat: projectFlat\n });\n this._recalculateClosestPoint();\n }\n if (changeFlags.propsChanged) {\n if (props.point !== oldProps.point) this._recalculateClosestPoint();\n }\n }\n },\n {\n key: \"_recalculateClosestPoint\",\n value: function _recalculateClosestPoint() {\n var _this$props2 = this.props, highlightPoint = _this$props2.highlightPoint, highlightIndex = _this$props2.highlightIndex;\n if (highlightPoint && highlightIndex >= 0) {\n var object = this.props.data[highlightIndex];\n var points = this.props.getPath(object);\n var _getClosestPointOnPol = (0, $9HybI.getClosestPointOnPolyline)({\n points: points,\n p: highlightPoint\n }), point = _getClosestPointOnPol.point;\n this.state.closestPoints = [\n {\n position: point\n }\n ];\n } else this.state.closestPoints = [];\n }\n },\n {\n key: \"getPickingInfo\",\n value: function getPickingInfo(_ref3) {\n var info = _ref3.info;\n return Object.assign(info, {\n // override object with picked feature\n object: info.object && info.object.path || info.object\n });\n }\n },\n {\n key: \"renderLayers\",\n value: function renderLayers() {\n return [\n new $915553ed5370bf6e$var$_pathOutlineLayer[\"default\"](this.props, this.getSubLayerProps({\n id: \"paths\",\n // Note: data has to be passed explicitly like this to avoid being empty\n data: this.props.data\n })),\n new this.props.MarkerLayer(this.getSubLayerProps(Object.assign({}, this.props.markerLayerProps, {\n id: \"markers\",\n data: this.state.markers,\n getOrientation: function getOrientation(x) {\n return [\n 0,\n -x.angle,\n 0\n ];\n },\n getColor: function getColor(x) {\n return x.color;\n },\n sizeScale: this.props.sizeScale,\n fp64: this.props.fp64,\n pickable: false,\n parameters: {\n blend: false,\n depthTest: false\n }\n }))),\n this.state.closestPoints && new $cYQ5y.default({\n id: \"\".concat(this.props.id, \"-highlight\"),\n data: this.state.closestPoints,\n // @ts-ignore\n fp64: this.props.fp64\n })\n ];\n }\n }\n ]);\n return PathMarkerLayer;\n}($coXLq.default);\nmodule.exports[\"default\"] = $915553ed5370bf6e$var$PathMarkerLayer;\n$915553ed5370bf6e$var$_defineProperty($915553ed5370bf6e$var$PathMarkerLayer, \"layerName\", \"PathMarkerLayer\");\n$915553ed5370bf6e$var$_defineProperty($915553ed5370bf6e$var$PathMarkerLayer, \"defaultProps\", $915553ed5370bf6e$var$defaultProps);\n\n});\nparcelRegister(\"cNooP\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $950cfce1f41765ca$export$2e2bcd8739ae039; });\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $hAx0Q = parcelRequire(\"hAx0Q\");\n\nvar $i46md = parcelRequire(\"i46md\");\nvar $4VQgq = parcelRequire(\"4VQgq\");\nvar $b8HWT = parcelRequire(\"b8HWT\");\nvar $7UxuR = parcelRequire(\"7UxuR\");\nvar $jRSMz = parcelRequire(\"jRSMz\");\n\nvar $cxTxU = parcelRequire(\"cxTxU\");parcelRequire(\"73UuK\");\nvar $8HKWo = parcelRequire(\"8HKWo\");\nvar $b2F4S = parcelRequire(\"b2F4S\");\nvar $7lUAH = parcelRequire(\"7lUAH\");\n\nvar $68aPy = parcelRequire(\"68aPy\");\nvar $tIWfJ = parcelRequire(\"tIWfJ\");\n\nvar $2mgFj = parcelRequire(\"2mgFj\");\n\nvar $lU3dn = parcelRequire(\"lU3dn\");\n\nvar $9aGRS = parcelRequire(\"9aGRS\");\n\nvar $ksLIL = parcelRequire(\"ksLIL\");\nfunction $950cfce1f41765ca$var$validateGeometryAttributes(attributes, useMeshColors) {\n const hasColorAttribute = attributes.COLOR_0 || attributes.colors;\n const useColorAttribute = hasColorAttribute && useMeshColors;\n if (!useColorAttribute) attributes.colors = {\n constant: true,\n value: new Float32Array([\n 1,\n 1,\n 1\n ])\n };\n (0, $4VQgq.default).assert(attributes.positions || attributes.POSITION, 'no \"postions\" or \"POSITION\" attribute in mesh');\n}\nfunction $950cfce1f41765ca$var$getGeometry(data, useMeshColors) {\n if (data.attributes) {\n $950cfce1f41765ca$var$validateGeometryAttributes(data.attributes, useMeshColors);\n if (data instanceof (0, $cxTxU.default)) return data;\n else return new (0, $cxTxU.default)(data);\n } else if (data.positions || data.POSITION) {\n $950cfce1f41765ca$var$validateGeometryAttributes(data, useMeshColors);\n return new (0, $cxTxU.default)({\n attributes: data\n });\n }\n throw Error(\"Invalid mesh\");\n}\nconst $950cfce1f41765ca$var$DEFAULT_COLOR = [\n 0,\n 0,\n 0,\n 255\n];\nconst $950cfce1f41765ca$var$defaultProps = {\n mesh: {\n type: \"object\",\n value: null,\n async: true\n },\n texture: {\n type: \"image\",\n value: null,\n async: true\n },\n sizeScale: {\n type: \"number\",\n value: 1,\n min: 0\n },\n _useMeshColors: {\n type: \"boolean\",\n value: false\n },\n _instanced: true,\n wireframe: false,\n material: true,\n getPosition: {\n type: \"accessor\",\n value: (x)=>x.position\n },\n getColor: {\n type: \"accessor\",\n value: $950cfce1f41765ca$var$DEFAULT_COLOR\n },\n getOrientation: {\n type: \"accessor\",\n value: [\n 0,\n 0,\n 0\n ]\n },\n getScale: {\n type: \"accessor\",\n value: [\n 1,\n 1,\n 1\n ]\n },\n getTranslation: {\n type: \"accessor\",\n value: [\n 0,\n 0,\n 0\n ]\n },\n getTransformMatrix: {\n type: \"accessor\",\n value: []\n },\n textureParameters: {\n type: \"object\",\n ignore: true\n }\n};\nclass $950cfce1f41765ca$export$2e2bcd8739ae039 extends (0, $i46md.default) {\n getShaders() {\n const transpileToGLSL100 = !(0, $8HKWo.isWebGL2)(this.context.gl);\n const defines = {};\n if ((0, $tIWfJ.hasFeature)(this.context.gl, (0, $68aPy.FEATURES).GLSL_DERIVATIVES)) defines.DERIVATIVES_AVAILABLE = 1;\n return super.getShaders({\n vs: $lU3dn.default,\n fs: $9aGRS.default,\n modules: [\n (0, $jRSMz.default),\n (0, $b8HWT.phongLighting),\n (0, $7UxuR.default)\n ],\n transpileToGLSL100: transpileToGLSL100,\n defines: defines\n });\n }\n getBounds() {\n var _mesh$header;\n if (this.props._instanced) return super.getBounds();\n let result = this.state.positionBounds;\n if (result) return result;\n const { mesh: mesh } = this.props;\n if (!mesh) return null;\n result = (_mesh$header = mesh.header) === null || _mesh$header === void 0 ? void 0 : _mesh$header.boundingBox;\n if (!result) {\n const { attributes: attributes } = $950cfce1f41765ca$var$getGeometry(mesh, this.props._useMeshColors);\n attributes.POSITION = attributes.POSITION || attributes.positions;\n result = (0, $ksLIL.getMeshBoundingBox)(attributes);\n }\n this.state.positionBounds = result;\n return result;\n }\n initializeState() {\n const attributeManager = this.getAttributeManager();\n attributeManager.addInstanced({\n instancePositions: {\n transition: true,\n type: 5130,\n fp64: this.use64bitPositions(),\n size: 3,\n accessor: \"getPosition\"\n },\n instanceColors: {\n type: 5121,\n transition: true,\n size: this.props.colorFormat.length,\n normalized: true,\n accessor: \"getColor\",\n defaultValue: [\n 0,\n 0,\n 0,\n 255\n ]\n },\n instanceModelMatrix: (0, $2mgFj.MATRIX_ATTRIBUTES)\n });\n this.setState({\n emptyTexture: new (0, $7lUAH.default)(this.context.gl, {\n data: new Uint8Array(4),\n width: 1,\n height: 1\n })\n });\n }\n updateState(params) {\n super.updateState(params);\n const { props: props, oldProps: oldProps, changeFlags: changeFlags } = params;\n if (props.mesh !== oldProps.mesh || changeFlags.extensionsChanged) {\n var _this$state$model;\n this.state.positionBounds = null;\n (_this$state$model = this.state.model) === null || _this$state$model === void 0 || _this$state$model.delete();\n if (props.mesh) {\n this.state.model = this.getModel(props.mesh);\n const attributes = props.mesh.attributes || props.mesh;\n this.setState({\n hasNormals: Boolean(attributes.NORMAL || attributes.normals)\n });\n }\n this.getAttributeManager().invalidateAll();\n }\n if (props.texture !== oldProps.texture) this.setTexture(props.texture);\n if (this.state.model) this.state.model.setDrawMode(this.props.wireframe ? 3 : 4);\n }\n finalizeState(context) {\n super.finalizeState(context);\n this.state.emptyTexture.delete();\n }\n draw({ uniforms: uniforms }) {\n if (!this.state.model) return;\n const { viewport: viewport } = this.context;\n const { sizeScale: sizeScale, coordinateSystem: coordinateSystem, _instanced: _instanced } = this.props;\n this.state.model.setUniforms(uniforms).setUniforms({\n sizeScale: sizeScale,\n composeModelMatrix: !_instanced || (0, $2mgFj.shouldComposeModelMatrix)(viewport, coordinateSystem),\n flatShading: !this.state.hasNormals\n }).draw();\n }\n get isLoaded() {\n var _this$state;\n return ((_this$state = this.state) === null || _this$state === void 0 ? void 0 : _this$state.model) && super.isLoaded;\n }\n getModel(mesh) {\n const model = new (0, $b2F4S.default)(this.context.gl, (0, $edHbI._)((0, $2QP2i._)({}, this.getShaders()), {\n id: this.props.id,\n geometry: $950cfce1f41765ca$var$getGeometry(mesh, this.props._useMeshColors),\n isInstanced: true\n }));\n const { texture: texture } = this.props;\n const { emptyTexture: emptyTexture } = this.state;\n model.setUniforms({\n sampler: texture || emptyTexture,\n hasTexture: Boolean(texture)\n });\n return model;\n }\n setTexture(texture) {\n const { emptyTexture: emptyTexture, model: model } = this.state;\n if (model) model.setUniforms({\n sampler: texture || emptyTexture,\n hasTexture: Boolean(texture)\n });\n }\n constructor(...args){\n super(...args);\n (0, $hAx0Q.default)(this, \"state\", void 0);\n }\n}\n(0, $hAx0Q.default)($950cfce1f41765ca$export$2e2bcd8739ae039, \"defaultProps\", $950cfce1f41765ca$var$defaultProps);\n(0, $hAx0Q.default)($950cfce1f41765ca$export$2e2bcd8739ae039, \"layerName\", \"SimpleMeshLayer\");\n\n});\nparcelRegister(\"hAx0Q\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ccdf6816ede45a05$export$2e2bcd8739ae039; });\nfunction $ccdf6816ede45a05$export$2e2bcd8739ae039(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\n\n});\n\nparcelRegister(\"2mgFj\", function(module, exports) {\n\n$parcel$export(module.exports, \"MATRIX_ATTRIBUTES\", function () { return $1b7a903a353ecd86$export$71da704eccf80df1; });\n$parcel$export(module.exports, \"shouldComposeModelMatrix\", function () { return $1b7a903a353ecd86$export$920b8d6af485174f; });\n\nvar $7gQQK = parcelRequire(\"7gQQK\");\nvar $abpME = parcelRequire(\"abpME\");\nconst $1b7a903a353ecd86$var$RADIAN_PER_DEGREE = Math.PI / 180;\nconst $1b7a903a353ecd86$var$modelMatrix = new Float32Array(16);\nconst $1b7a903a353ecd86$var$valueArray = new Float32Array(12);\nfunction $1b7a903a353ecd86$var$calculateTransformMatrix(targetMatrix, orientation, scale) {\n const pitch = orientation[0] * $1b7a903a353ecd86$var$RADIAN_PER_DEGREE;\n const yaw = orientation[1] * $1b7a903a353ecd86$var$RADIAN_PER_DEGREE;\n const roll = orientation[2] * $1b7a903a353ecd86$var$RADIAN_PER_DEGREE;\n const sr = Math.sin(roll);\n const sp = Math.sin(pitch);\n const sw = Math.sin(yaw);\n const cr = Math.cos(roll);\n const cp = Math.cos(pitch);\n const cw = Math.cos(yaw);\n const scx = scale[0];\n const scy = scale[1];\n const scz = scale[2];\n targetMatrix[0] = scx * cw * cp;\n targetMatrix[1] = scx * sw * cp;\n targetMatrix[2] = scx * -sp;\n targetMatrix[3] = scy * (-sw * cr + cw * sp * sr);\n targetMatrix[4] = scy * (cw * cr + sw * sp * sr);\n targetMatrix[5] = scy * cp * sr;\n targetMatrix[6] = scz * (sw * sr + cw * sp * cr);\n targetMatrix[7] = scz * (-cw * sr + sw * sp * cr);\n targetMatrix[8] = scz * cp * cr;\n}\nfunction $1b7a903a353ecd86$var$getExtendedMat3FromMat4(mat4) {\n mat4[0] = mat4[0];\n mat4[1] = mat4[1];\n mat4[2] = mat4[2];\n mat4[3] = mat4[4];\n mat4[4] = mat4[5];\n mat4[5] = mat4[6];\n mat4[6] = mat4[8];\n mat4[7] = mat4[9];\n mat4[8] = mat4[10];\n mat4[9] = mat4[12];\n mat4[10] = mat4[13];\n mat4[11] = mat4[14];\n return mat4.subarray(0, 12);\n}\nconst $1b7a903a353ecd86$export$71da704eccf80df1 = {\n size: 12,\n accessor: [\n \"getOrientation\",\n \"getScale\",\n \"getTranslation\",\n \"getTransformMatrix\"\n ],\n shaderAttributes: {\n instanceModelMatrix__LOCATION_0: {\n size: 3,\n elementOffset: 0\n },\n instanceModelMatrix__LOCATION_1: {\n size: 3,\n elementOffset: 3\n },\n instanceModelMatrix__LOCATION_2: {\n size: 3,\n elementOffset: 6\n },\n instanceTranslation: {\n size: 3,\n elementOffset: 9\n }\n },\n update (attribute, { startRow: startRow, endRow: endRow }) {\n const { data: data, getOrientation: getOrientation, getScale: getScale, getTranslation: getTranslation, getTransformMatrix: getTransformMatrix } = this.props;\n const arrayMatrix = Array.isArray(getTransformMatrix);\n const constantMatrix = arrayMatrix && getTransformMatrix.length === 16;\n const constantScale = Array.isArray(getScale);\n const constantOrientation = Array.isArray(getOrientation);\n const constantTranslation = Array.isArray(getTranslation);\n const hasMatrix = constantMatrix || !arrayMatrix && Boolean(getTransformMatrix(data[0]));\n if (hasMatrix) attribute.constant = constantMatrix;\n else attribute.constant = constantOrientation && constantScale && constantTranslation;\n const instanceModelMatrixData = attribute.value;\n if (attribute.constant) {\n let matrix;\n if (hasMatrix) {\n $1b7a903a353ecd86$var$modelMatrix.set(getTransformMatrix);\n matrix = $1b7a903a353ecd86$var$getExtendedMat3FromMat4($1b7a903a353ecd86$var$modelMatrix);\n } else {\n matrix = $1b7a903a353ecd86$var$valueArray;\n const orientation = getOrientation;\n const scale = getScale;\n $1b7a903a353ecd86$var$calculateTransformMatrix(matrix, orientation, scale);\n matrix.set(getTranslation, 9);\n }\n attribute.value = new Float32Array(matrix);\n } else {\n let i = startRow * attribute.size;\n const { iterable: iterable, objectInfo: objectInfo } = (0, $abpME.createIterable)(data, startRow, endRow);\n for (const object of iterable){\n objectInfo.index++;\n let matrix;\n if (hasMatrix) {\n $1b7a903a353ecd86$var$modelMatrix.set(constantMatrix ? getTransformMatrix : getTransformMatrix(object, objectInfo));\n matrix = $1b7a903a353ecd86$var$getExtendedMat3FromMat4($1b7a903a353ecd86$var$modelMatrix);\n } else {\n matrix = $1b7a903a353ecd86$var$valueArray;\n const orientation = constantOrientation ? getOrientation : getOrientation(object, objectInfo);\n const scale = constantScale ? getScale : getScale(object, objectInfo);\n $1b7a903a353ecd86$var$calculateTransformMatrix(matrix, orientation, scale);\n matrix.set(constantTranslation ? getTranslation : getTranslation(object, objectInfo), 9);\n }\n instanceModelMatrixData[i++] = matrix[0];\n instanceModelMatrixData[i++] = matrix[1];\n instanceModelMatrixData[i++] = matrix[2];\n instanceModelMatrixData[i++] = matrix[3];\n instanceModelMatrixData[i++] = matrix[4];\n instanceModelMatrixData[i++] = matrix[5];\n instanceModelMatrixData[i++] = matrix[6];\n instanceModelMatrixData[i++] = matrix[7];\n instanceModelMatrixData[i++] = matrix[8];\n instanceModelMatrixData[i++] = matrix[9];\n instanceModelMatrixData[i++] = matrix[10];\n instanceModelMatrixData[i++] = matrix[11];\n }\n }\n }\n};\nfunction $1b7a903a353ecd86$export$920b8d6af485174f(viewport, coordinateSystem) {\n return coordinateSystem === (0, $7gQQK.COORDINATE_SYSTEM).CARTESIAN || coordinateSystem === (0, $7gQQK.COORDINATE_SYSTEM).METER_OFFSETS || coordinateSystem === (0, $7gQQK.COORDINATE_SYSTEM).DEFAULT && !viewport.isGeospatial;\n}\n\n});\n\nparcelRegister(\"lU3dn\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ff21524f774927b7$export$2e2bcd8739ae039; });\nvar $ff21524f774927b7$export$2e2bcd8739ae039 = \"#version 300 es\\n#define SHADER_NAME simple-mesh-layer-vs\\nuniform float sizeScale;\\nuniform bool composeModelMatrix;\\nin vec3 positions;\\nin vec3 normals;\\nin vec3 colors;\\nin vec2 texCoords;\\nin vec3 instancePositions;\\nin vec3 instancePositions64Low;\\nin vec4 instanceColors;\\nin vec3 instancePickingColors;\\nin mat3 instanceModelMatrix;\\nin vec3 instanceTranslation;\\nout vec2 vTexCoord;\\nout vec3 cameraPosition;\\nout vec3 normals_commonspace;\\nout vec4 position_commonspace;\\nout vec4 vColor;\\n\\nvoid main(void) {\\n geometry.worldPosition = instancePositions;\\n geometry.uv = texCoords;\\n geometry.pickingColor = instancePickingColors;\\n\\n vTexCoord = texCoords;\\n cameraPosition = project_uCameraPosition;\\n vColor = vec4(colors * instanceColors.rgb, instanceColors.a);\\n\\n vec3 pos = (instanceModelMatrix * positions) * sizeScale + instanceTranslation;\\n\\n if (composeModelMatrix) {\\n DECKGL_FILTER_SIZE(pos, geometry);\\n normals_commonspace = project_normal(instanceModelMatrix * normals);\\n geometry.worldPosition += pos;\\n gl_Position = project_position_to_clipspace(pos + instancePositions, instancePositions64Low, vec3(0.0), position_commonspace);\\n geometry.position = position_commonspace;\\n }\\n else {\\n pos = project_size(pos);\\n DECKGL_FILTER_SIZE(pos, geometry);\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, pos, position_commonspace);\\n geometry.position = position_commonspace;\\n normals_commonspace = project_normal(instanceModelMatrix * normals);\\n }\\n\\n geometry.normal = normals_commonspace;\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n\n});\n\nparcelRegister(\"9aGRS\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6ad64ce654e56711$export$2e2bcd8739ae039; });\nvar $6ad64ce654e56711$export$2e2bcd8739ae039 = \"#version 300 es\\n#define SHADER_NAME simple-mesh-layer-fs\\n\\nprecision highp float;\\n\\nuniform bool hasTexture;\\nuniform sampler2D sampler;\\nuniform bool flatShading;\\nuniform float opacity;\\n\\nin vec2 vTexCoord;\\nin vec3 cameraPosition;\\nin vec3 normals_commonspace;\\nin vec4 position_commonspace;\\nin vec4 vColor;\\n\\nout vec4 fragColor;\\n\\nvoid main(void) {\\n geometry.uv = vTexCoord;\\n\\n vec3 normal;\\n if (flatShading) {\\n#ifdef DERIVATIVES_AVAILABLE\\n normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\\n#else\\n normal = vec3(0.0, 0.0, 1.0);\\n#endif\\n } else {\\n normal = normals_commonspace;\\n }\\n\\n vec4 color = hasTexture ? texture(sampler, vTexCoord) : vColor;\\n DECKGL_FILTER_COLOR(color, geometry);\\n\\n vec3 lightColor = lighting_getLightColor(color.rgb, cameraPosition, position_commonspace.xyz, normal);\\n fragColor = vec4(lightColor, color.a * opacity);\\n}\\n\";\n\n});\n\nparcelRegister(\"ksLIL\", function(module, exports) {\n\n$parcel$export(module.exports, \"getMeshBoundingBox\", function () { return $ee5b7095d0db1e4f$export$190511c0a5f57f36; });\nfunction $ee5b7095d0db1e4f$export$2c3cef6f832db216(attributes) {\n let size = 0;\n for(const attributeName in attributes){\n const attribute = attributes[attributeName];\n if (ArrayBuffer.isView(attribute)) size += attribute.byteLength * attribute.BYTES_PER_ELEMENT;\n }\n return size;\n}\nfunction $ee5b7095d0db1e4f$export$190511c0a5f57f36(attributes) {\n let minX = Infinity;\n let minY = Infinity;\n let minZ = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n let maxZ = -Infinity;\n const positions = attributes.POSITION ? attributes.POSITION.value : [];\n const len = positions && positions.length;\n for(let i = 0; i < len; i += 3){\n const x = positions[i];\n const y = positions[i + 1];\n const z = positions[i + 2];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n minZ = z < minZ ? z : minZ;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n maxZ = z > maxZ ? z : maxZ;\n }\n return [\n [\n minX,\n minY,\n minZ\n ],\n [\n maxX,\n maxY,\n maxZ\n ]\n ];\n}\n\n});\n\n\nparcelRegister(\"kdbZI\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\n\nvar $cxTxU = parcelRequire(\"cxTxU\");\nfunction $eb6e5363a77c8ff9$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $eb6e5363a77c8ff9$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $eb6e5363a77c8ff9$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $eb6e5363a77c8ff9$var$_typeof(obj);\n}\nfunction $eb6e5363a77c8ff9$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $eb6e5363a77c8ff9$var$_createSuper(Derived) {\n return function() {\n var Super = $eb6e5363a77c8ff9$var$_getPrototypeOf(Derived), result;\n if ($eb6e5363a77c8ff9$var$_isNativeReflectConstruct()) {\n var NewTarget = $eb6e5363a77c8ff9$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $eb6e5363a77c8ff9$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $eb6e5363a77c8ff9$var$_possibleConstructorReturn(self, call) {\n if (call && ($eb6e5363a77c8ff9$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $eb6e5363a77c8ff9$var$_assertThisInitialized(self);\n}\nfunction $eb6e5363a77c8ff9$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $eb6e5363a77c8ff9$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $eb6e5363a77c8ff9$var$_getPrototypeOf(o) {\n $eb6e5363a77c8ff9$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $eb6e5363a77c8ff9$var$_getPrototypeOf(o);\n}\nfunction $eb6e5363a77c8ff9$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $eb6e5363a77c8ff9$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $eb6e5363a77c8ff9$var$_setPrototypeOf(o, p) {\n $eb6e5363a77c8ff9$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $eb6e5363a77c8ff9$var$_setPrototypeOf(o, p);\n}\nvar $eb6e5363a77c8ff9$var$Arrow2DGeometry = /*#__PURE__*/ function(_Geometry) {\n $eb6e5363a77c8ff9$var$_inherits(Arrow2DGeometry, _Geometry);\n var _super = $eb6e5363a77c8ff9$var$_createSuper(Arrow2DGeometry);\n function Arrow2DGeometry() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n $eb6e5363a77c8ff9$var$_classCallCheck(this, Arrow2DGeometry);\n return _super.call(this, Object.assign({}, opts, {\n attributes: $eb6e5363a77c8ff9$var$getArrowAttributes(opts)\n }));\n }\n return Arrow2DGeometry;\n}($cxTxU.default);\nmodule.exports[\"default\"] = $eb6e5363a77c8ff9$var$Arrow2DGeometry;\nfunction $eb6e5363a77c8ff9$var$getArrowAttributes(_ref) {\n var _ref$length = _ref.length, length = _ref$length === void 0 ? 1 : _ref$length, _ref$headSize = _ref.headSize, headSize = _ref$headSize === void 0 ? 0.2 : _ref$headSize, _ref$tailWidth = _ref.tailWidth, tailWidth = _ref$tailWidth === void 0 ? 0.05 : _ref$tailWidth, _ref$tailStart = _ref.tailStart, tailStart = _ref$tailStart === void 0 ? 0.05 : _ref$tailStart;\n var texCoords = [\n 0.5,\n 1.0,\n 0,\n 0.5 - headSize / 2,\n 1.0 - headSize,\n 0,\n 0.5 + headSize / 2,\n 1.0 - headSize,\n 0,\n 0.5 - tailWidth / 2,\n tailStart,\n 0,\n 0.5 + tailWidth / 2,\n 1.0 - headSize,\n 0,\n 0.5 + tailWidth / 2,\n tailStart,\n 0,\n 0.5 - tailWidth / 2,\n tailStart,\n 0,\n 0.5 - tailWidth / 2,\n 1.0 - headSize,\n 0,\n 0.5 + tailWidth / 2,\n 1.0 - headSize,\n 0\n ];\n var normals = [\n 0,\n 0,\n 1,\n 0,\n 0,\n 1,\n 0,\n 0,\n 1,\n 0,\n 0,\n 1,\n 0,\n 0,\n 1,\n 0,\n 0,\n 1,\n 0,\n 0,\n 1,\n 0,\n 0,\n 1,\n 0,\n 0,\n 1\n ]; // Center and scale\n var positions = new Array(texCoords.length);\n for(var i = 0; i < texCoords.length / 3; i++){\n var i3 = i * 3;\n positions[i3 + 0] = (texCoords[i3 + 0] - 0.5) * length;\n positions[i3 + 1] = (texCoords[i3 + 1] - 0.5) * length;\n positions[i3 + 2] = 0;\n }\n return {\n positions: new Float32Array(positions),\n normals: new Float32Array(normals),\n texCoords: new Float32Array(texCoords)\n };\n}\n\n});\n\nparcelRegister(\"ckc25\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = $8f90afbe7dd3767e$var$createPathMarkers;\nparcelRequire(\"cO3S1\");\nvar $SuJmn = parcelRequire(\"SuJmn\");\nfunction $8f90afbe7dd3767e$var$_createForOfIteratorHelper(o) {\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = $8f90afbe7dd3767e$var$_unsupportedIterableToArray(o))) {\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var it, normalCompletion = true, didErr = false, err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally{\n if (didErr) throw err;\n }\n }\n };\n}\nfunction $8f90afbe7dd3767e$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $8f90afbe7dd3767e$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $8f90afbe7dd3767e$var$_arrayLikeToArray(o, minLen);\n}\nfunction $8f90afbe7dd3767e$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $8f90afbe7dd3767e$var$getLineLength(vPoints) {\n // calculate total length\n var lineLength = 0;\n for(var i = 0; i < vPoints.length - 1; i++)lineLength += vPoints[i].distance(vPoints[i + 1]);\n return lineLength;\n}\nvar $8f90afbe7dd3767e$var$DEFAULT_COLOR = [\n 0,\n 0,\n 0,\n 255\n];\nvar $8f90afbe7dd3767e$var$DEFAULT_DIRECTION = {\n forward: true,\n backward: false\n};\nfunction $8f90afbe7dd3767e$var$createPathMarkers(_ref) {\n var data = _ref.data, _ref$getPath = _ref.getPath, getPath = _ref$getPath === void 0 ? function(x) {\n return x.path;\n } : _ref$getPath, _ref$getDirection = _ref.getDirection, getDirection = _ref$getDirection === void 0 ? function(x) {\n return x.direction;\n } : _ref$getDirection, _ref$getColor = _ref.getColor, getColor = _ref$getColor === void 0 ? function(x) {\n return $8f90afbe7dd3767e$var$DEFAULT_COLOR;\n } : _ref$getColor, _ref$getMarkerPercent = _ref.getMarkerPercentages, getMarkerPercentages = _ref$getMarkerPercent === void 0 ? function(x, info) {\n return [\n 0.5\n ];\n } : _ref$getMarkerPercent, projectFlat = _ref.projectFlat;\n var markers = [];\n var _iterator = $8f90afbe7dd3767e$var$_createForOfIteratorHelper(data), _step;\n try {\n for(_iterator.s(); !(_step = _iterator.n()).done;){\n var object = _step.value;\n var path = getPath(object);\n var direction = getDirection(object) || $8f90afbe7dd3767e$var$DEFAULT_DIRECTION;\n var color = getColor(object);\n var vPoints = path.map(function(p) {\n return new $SuJmn.default(p);\n });\n var vPointsReverse = vPoints.slice(0).reverse(); // calculate total length\n var lineLength = $8f90afbe7dd3767e$var$getLineLength(vPoints); // Ask for where to put markers\n // @ts-ignore\n var percentages = getMarkerPercentages(object, {\n lineLength: lineLength\n }); // Create the markers\n var _iterator2 = $8f90afbe7dd3767e$var$_createForOfIteratorHelper(percentages), _step2;\n try {\n for(_iterator2.s(); !(_step2 = _iterator2.n()).done;){\n var percentage = _step2.value;\n if (direction.forward) {\n var marker = $8f90afbe7dd3767e$var$createMarkerAlongPath({\n path: vPoints,\n percentage: percentage,\n lineLength: lineLength,\n color: color,\n object: object,\n projectFlat: projectFlat\n });\n markers.push(marker);\n }\n if (direction.backward) {\n var _marker = $8f90afbe7dd3767e$var$createMarkerAlongPath({\n path: vPointsReverse,\n percentage: percentage,\n lineLength: lineLength,\n color: color,\n object: object,\n projectFlat: projectFlat\n });\n markers.push(_marker);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally{\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally{\n _iterator.f();\n }\n return markers;\n}\nfunction $8f90afbe7dd3767e$var$createMarkerAlongPath(_ref2) {\n var path = _ref2.path, percentage = _ref2.percentage, lineLength = _ref2.lineLength, color = _ref2.color, object = _ref2.object, projectFlat = _ref2.projectFlat;\n var distanceAlong = lineLength * percentage;\n var currentDistance = 0;\n var previousDistance = 0;\n var i = 0;\n for(i = 0; i < path.length - 1; i++){\n currentDistance += path[i].distance(path[i + 1]);\n if (currentDistance > distanceAlong) break;\n previousDistance = currentDistance;\n } // If reached the end of the loop without exiting early,\n // undo the final increment to avoid a null-pointer exception\n if (i === path.length - 1) i -= 1;\n var vDirection = path[i + 1].clone().subtract(path[i]).normalize();\n var along = distanceAlong - previousDistance;\n var vCenter = vDirection.clone().multiply(new $SuJmn.default(along, along)).add(path[i]);\n var vDirection2 = new $SuJmn.default(projectFlat(path[i + 1])).subtract(projectFlat(path[i]));\n var angle = vDirection2.verticalAngle() * 180 / Math.PI;\n return {\n position: [\n vCenter.x,\n vCenter.y,\n 0\n ],\n angle: angle,\n color: color,\n object: object\n };\n}\n\n});\nparcelRegister(\"cO3S1\", function(module, exports) {\n$parcel$export(module.exports, \"clamp\", function () { return (parcelRequire(\"cwF9s\")).clamp; });\n\n$parcel$export(module.exports, \"Vector2\", function () { return (parcelRequire(\"SuJmn\")).default; });\n$parcel$export(module.exports, \"Vector3\", function () { return (parcelRequire(\"cKS36\")).default; });\nparcelRequire(\"cwF9s\");\nvar $SuJmn = parcelRequire(\"SuJmn\");\nvar $cKS36 = parcelRequire(\"cKS36\");\n\n});\nparcelRegister(\"SuJmn\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $0a3ce1b84b0c9d9c$export$2e2bcd8739ae039; });\n\nvar $3nAvB = parcelRequire(\"3nAvB\");\n\nvar $cwF9s = parcelRequire(\"cwF9s\");\n\nvar $j8wyT = parcelRequire(\"j8wyT\");\n\nvar $autGx = parcelRequire(\"autGx\");\n\nvar $idCXM = parcelRequire(\"idCXM\");\nclass $0a3ce1b84b0c9d9c$export$2e2bcd8739ae039 extends (0, $3nAvB.default) {\n set(x, y) {\n this[0] = x;\n this[1] = y;\n return this.check();\n }\n copy(array) {\n this[0] = array[0];\n this[1] = array[1];\n return this.check();\n }\n fromObject(object) {\n if ((0, $cwF9s.config).debug) {\n (0, $j8wyT.checkNumber)(object.x);\n (0, $j8wyT.checkNumber)(object.y);\n }\n this[0] = object.x;\n this[1] = object.y;\n return this.check();\n }\n toObject(object) {\n object.x = this[0];\n object.y = this[1];\n return object;\n }\n get ELEMENTS() {\n return 2;\n }\n horizontalAngle() {\n return Math.atan2(this.y, this.x);\n }\n verticalAngle() {\n return Math.atan2(this.x, this.y);\n }\n transform(matrix4) {\n return this.transformAsPoint(matrix4);\n }\n transformAsPoint(matrix4) {\n $autGx.transformMat4(this, this, matrix4);\n return this.check();\n }\n transformAsVector(matrix4) {\n (0, $idCXM.vec2_transformMat4AsVector)(this, this, matrix4);\n return this.check();\n }\n transformByMatrix3(matrix3) {\n $autGx.transformMat3(this, this, matrix3);\n return this.check();\n }\n transformByMatrix2x3(matrix2x3) {\n $autGx.transformMat2d(this, this, matrix2x3);\n return this.check();\n }\n transformByMatrix2(matrix2) {\n $autGx.transformMat2(this, this, matrix2);\n return this.check();\n }\n constructor(x = 0, y = 0){\n super(2);\n if ((0, $cwF9s.isArray)(x) && arguments.length === 1) this.copy(x);\n else {\n if ((0, $cwF9s.config).debug) {\n (0, $j8wyT.checkNumber)(x);\n (0, $j8wyT.checkNumber)(y);\n }\n this[0] = x;\n this[1] = y;\n }\n }\n}\n\n});\n\n\n\nparcelRegister(\"9HybI\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.getClosestPointOnLine = $7102a63c24b5352b$var$getClosestPointOnLine;\nmodule.exports.getClosestPointOnPolyline = $7102a63c24b5352b$var$getClosestPointOnPolyline;\nparcelRequire(\"cO3S1\");\nvar $cwF9s = parcelRequire(\"cwF9s\");\nvar $cKS36 = parcelRequire(\"cKS36\");\n// Return the closest point on a line segment\nfunction $7102a63c24b5352b$var$getClosestPointOnLine(_ref) {\n var p = _ref.p, p1 = _ref.p1, p2 = _ref.p2, _ref$clampToLine = _ref.clampToLine, clampToLine = _ref$clampToLine === void 0 ? true : _ref$clampToLine;\n var lineVector = new $cKS36.default(p2).subtract(p1);\n var pointVector = new $cKS36.default(p).subtract(p1);\n var dotProduct = lineVector.dot(pointVector);\n if (clampToLine) dotProduct = (0, $cwF9s.clamp)(dotProduct, 0, 1);\n // @ts-ignore\n return lineVector.lerp(dotProduct);\n} // Return the closest point on a line segment\nfunction $7102a63c24b5352b$var$getClosestPointOnPolyline(_ref2) {\n var p = _ref2.p, points = _ref2.points;\n p = new $cKS36.default(p);\n var pClosest = null;\n var distanceSquared = Infinity;\n var index = -1;\n for(var i = 0; i < points.length - 1; ++i){\n var p1 = points[i];\n var p2 = points[i + 1];\n var pClosestOnLine = $7102a63c24b5352b$var$getClosestPointOnLine({\n p: p,\n p1: p1,\n p2: p2\n });\n var distanceToLineSquared = p.distanceSquared(pClosestOnLine);\n if (distanceToLineSquared < distanceSquared) {\n distanceSquared = distanceToLineSquared;\n pClosest = pClosestOnLine;\n index = i;\n }\n }\n return {\n point: pClosest,\n index: index,\n p1: points[index],\n p2: points[index + 1],\n distanceSquared: distanceSquared,\n distance: Math.sqrt(distanceSquared)\n };\n}\n\n});\n\n\nparcelRegister(\"gi8jT\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\n\nvar $coXLq = parcelRequire(\"coXLq\");\n\nvar $cYQ5y = parcelRequire(\"cYQ5y\");\nfunction $bdc4c7f085a94789$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $bdc4c7f085a94789$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $bdc4c7f085a94789$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $bdc4c7f085a94789$var$_typeof(obj);\n}\nfunction $bdc4c7f085a94789$var$ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction $bdc4c7f085a94789$var$_objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) $bdc4c7f085a94789$var$ownKeys(Object(source), true).forEach(function(key) {\n $bdc4c7f085a94789$var$_defineProperty(target, key, source[key]);\n });\n else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n else $bdc4c7f085a94789$var$ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction $bdc4c7f085a94789$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $bdc4c7f085a94789$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $bdc4c7f085a94789$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $bdc4c7f085a94789$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $bdc4c7f085a94789$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $bdc4c7f085a94789$var$_createSuper(Derived) {\n return function() {\n var Super = $bdc4c7f085a94789$var$_getPrototypeOf(Derived), result;\n if ($bdc4c7f085a94789$var$_isNativeReflectConstruct()) {\n var NewTarget = $bdc4c7f085a94789$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $bdc4c7f085a94789$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $bdc4c7f085a94789$var$_possibleConstructorReturn(self, call) {\n if (call && ($bdc4c7f085a94789$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $bdc4c7f085a94789$var$_assertThisInitialized(self);\n}\nfunction $bdc4c7f085a94789$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $bdc4c7f085a94789$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $bdc4c7f085a94789$var$_getPrototypeOf(o) {\n $bdc4c7f085a94789$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $bdc4c7f085a94789$var$_getPrototypeOf(o);\n}\nfunction $bdc4c7f085a94789$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $bdc4c7f085a94789$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $bdc4c7f085a94789$var$_setPrototypeOf(o, p) {\n $bdc4c7f085a94789$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $bdc4c7f085a94789$var$_setPrototypeOf(o, p);\n}\nfunction $bdc4c7f085a94789$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $bdc4c7f085a94789$var$JunctionScatterplotLayer = /*#__PURE__*/ function(_CompositeLayer) {\n $bdc4c7f085a94789$var$_inherits(JunctionScatterplotLayer, _CompositeLayer);\n var _super = $bdc4c7f085a94789$var$_createSuper(JunctionScatterplotLayer);\n function JunctionScatterplotLayer() {\n $bdc4c7f085a94789$var$_classCallCheck(this, JunctionScatterplotLayer);\n return _super.apply(this, arguments);\n }\n $bdc4c7f085a94789$var$_createClass(JunctionScatterplotLayer, [\n {\n key: \"renderLayers\",\n value: function renderLayers() {\n var _this$props = this.props, id = _this$props.id, getFillColor = _this$props.getFillColor, getStrokeColor = _this$props.getStrokeColor, getInnerRadius = _this$props.getInnerRadius, updateTriggers = _this$props.updateTriggers; // data needs to be passed explicitly after deck.gl 5.3\n return [\n new $cYQ5y.default($bdc4c7f085a94789$var$_objectSpread({}, this.props, {\n id: \"\".concat(id, \"-full\"),\n data: this.props.data,\n getLineColor: getStrokeColor,\n updateTriggers: $bdc4c7f085a94789$var$_objectSpread({}, updateTriggers, {\n getStrokeColor: updateTriggers.getStrokeColor\n })\n })),\n new $cYQ5y.default($bdc4c7f085a94789$var$_objectSpread({}, this.props, {\n id: \"\".concat(id, \"-inner\"),\n data: this.props.data,\n getFillColor: getFillColor,\n getRadius: getInnerRadius,\n pickable: false,\n updateTriggers: $bdc4c7f085a94789$var$_objectSpread({}, updateTriggers, {\n getFillColor: updateTriggers.getFillColor,\n getRadius: updateTriggers.getInnerRadius\n })\n }))\n ];\n }\n }\n ]);\n return JunctionScatterplotLayer;\n}($coXLq.default);\nmodule.exports[\"default\"] = $bdc4c7f085a94789$var$JunctionScatterplotLayer;\n$bdc4c7f085a94789$var$_defineProperty($bdc4c7f085a94789$var$JunctionScatterplotLayer, \"layerName\", \"JunctionScatterplotLayer\");\n$bdc4c7f085a94789$var$_defineProperty($bdc4c7f085a94789$var$JunctionScatterplotLayer, \"defaultProps\", $bdc4c7f085a94789$var$_objectSpread({}, $cYQ5y.default.defaultProps, {\n getFillColor: function getFillColor(d) {\n return [\n 0,\n 0,\n 0,\n 255\n ];\n },\n getStrokeColor: function getStrokeColor(d) {\n return [\n 255,\n 255,\n 255,\n 255\n ];\n },\n getInnerRadius: function getInnerRadius(d) {\n return 1;\n }\n}));\n\n});\n\n\nparcelRegister(\"h5pu5\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.toDeckColor = $c706abeed9ed1bf8$var$toDeckColor;\nmodule.exports.recursivelyTraverseNestedArrays = $c706abeed9ed1bf8$var$recursivelyTraverseNestedArrays;\nfunction $c706abeed9ed1bf8$var$_toConsumableArray(arr) {\n return $c706abeed9ed1bf8$var$_arrayWithoutHoles(arr) || $c706abeed9ed1bf8$var$_iterableToArray(arr) || $c706abeed9ed1bf8$var$_unsupportedIterableToArray(arr) || $c706abeed9ed1bf8$var$_nonIterableSpread();\n}\nfunction $c706abeed9ed1bf8$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $c706abeed9ed1bf8$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $c706abeed9ed1bf8$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $c706abeed9ed1bf8$var$_arrayLikeToArray(o, minLen);\n}\nfunction $c706abeed9ed1bf8$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $c706abeed9ed1bf8$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $c706abeed9ed1bf8$var$_arrayLikeToArray(arr);\n}\nfunction $c706abeed9ed1bf8$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $c706abeed9ed1bf8$var$toDeckColor(color) {\n var defaultColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [\n 255,\n 0,\n 0,\n 255\n ];\n if (!Array.isArray(color)) return defaultColor;\n return [\n color[0] * 255,\n color[1] * 255,\n color[2] * 255,\n color[3] * 255\n ];\n} //\n// a GeoJSON helper function that calls the provided function with\n// an argument that is the most deeply-nested array having elements\n// that are arrays of primitives as an argument, e.g.\n//\n// {\n// \"type\": \"MultiPolygon\",\n// \"coordinates\": [\n// [\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n// ],\n// [\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n// ]\n// ]\n// }\n//\n// the function would be called on:\n//\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n//\n// and\n//\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n//\nfunction $c706abeed9ed1bf8$var$recursivelyTraverseNestedArrays(array, prefix, fn) {\n if (!Array.isArray(array[0])) return true;\n for(var i = 0; i < array.length; i++)if ($c706abeed9ed1bf8$var$recursivelyTraverseNestedArrays(array[i], [].concat($c706abeed9ed1bf8$var$_toConsumableArray(prefix), [\n i\n ]), fn)) {\n fn(array, prefix);\n break;\n }\n return false;\n}\n\n});\n\nparcelRegister(\"pgVSk\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\nfunction $04bf7859a38934d4$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $04bf7859a38934d4$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $04bf7859a38934d4$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $04bf7859a38934d4$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $04bf7859a38934d4$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $04bf7859a38934d4$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $04bf7859a38934d4$var$DeckCache = /*#__PURE__*/ function() {\n function DeckCache(getData, convert) {\n $04bf7859a38934d4$var$_classCallCheck(this, DeckCache);\n $04bf7859a38934d4$var$_defineProperty(this, \"objects\", void 0);\n $04bf7859a38934d4$var$_defineProperty(this, \"originals\", void 0);\n $04bf7859a38934d4$var$_defineProperty(this, \"updateTrigger\", void 0);\n $04bf7859a38934d4$var$_defineProperty(this, \"_idToPosition\", void 0);\n $04bf7859a38934d4$var$_defineProperty(this, \"_getData\", void 0);\n $04bf7859a38934d4$var$_defineProperty(this, \"_convert\", void 0);\n this.objects = [];\n this.originals = [];\n this.updateTrigger = 0;\n this._idToPosition = new Map();\n this._getData = getData;\n this._convert = convert;\n }\n $04bf7859a38934d4$var$_createClass(DeckCache, [\n {\n key: \"updateAllDeckObjects\",\n value: function updateAllDeckObjects() {\n var _this = this;\n if (!this._getData || !this._convert) return;\n this.originals.length = 0;\n this.objects.length = 0;\n this._idToPosition.clear();\n this._getData().forEach(function(d) {\n _this._idToPosition.set(d.id, _this.objects.length);\n _this.originals.push(d);\n _this.objects.push(_this._convert(d));\n });\n this.triggerUpdate();\n }\n },\n {\n key: \"updateDeckObjectsByIds\",\n value: function updateDeckObjectsByIds(ids) {\n var _this2 = this;\n if (!this._getData || !this._convert) return;\n ids.forEach(function(id) {\n var p = _this2._idToPosition.get(id);\n if (p !== undefined) _this2.objects[p] = _this2._convert(_this2.originals[p]);\n });\n this.triggerUpdate();\n }\n },\n {\n key: \"triggerUpdate\",\n value: function triggerUpdate() {\n this.updateTrigger++;\n }\n },\n {\n key: \"getDeckObjectById\",\n value: function getDeckObjectById(id) {\n var p = this._idToPosition.get(id);\n return p !== undefined ? this.objects[p] : null;\n }\n },\n {\n key: \"getOriginalById\",\n value: function getOriginalById(id) {\n var p = this._idToPosition.get(id);\n return p !== undefined ? this.originals[p] : null;\n }\n }\n ]);\n return DeckCache;\n}();\nmodule.exports[\"default\"] = $04bf7859a38934d4$var$DeckCache;\n\n});\n\n\nparcelRegister(\"cWVMd\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\n\nvar $9pc7R = parcelRequire(\"9pc7R\");\n\nvar $96d7b80ecefdbb97$var$_nebulaLayer = $96d7b80ecefdbb97$var$_interopRequireDefault((parcelRequire(\"7uZXb\")));\n\nvar $h5pu5 = parcelRequire(\"h5pu5\");\n\nvar $bEXHX = parcelRequire(\"bEXHX\");\n\nvar $96d7b80ecefdbb97$var$_deckCache = $96d7b80ecefdbb97$var$_interopRequireDefault((parcelRequire(\"pgVSk\")));\nfunction $96d7b80ecefdbb97$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $96d7b80ecefdbb97$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $96d7b80ecefdbb97$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $96d7b80ecefdbb97$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $96d7b80ecefdbb97$var$_typeof(obj);\n}\nfunction $96d7b80ecefdbb97$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $96d7b80ecefdbb97$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $96d7b80ecefdbb97$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $96d7b80ecefdbb97$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $96d7b80ecefdbb97$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $96d7b80ecefdbb97$var$_createSuper(Derived) {\n return function() {\n var Super = $96d7b80ecefdbb97$var$_getPrototypeOf(Derived), result;\n if ($96d7b80ecefdbb97$var$_isNativeReflectConstruct()) {\n var NewTarget = $96d7b80ecefdbb97$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $96d7b80ecefdbb97$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $96d7b80ecefdbb97$var$_possibleConstructorReturn(self, call) {\n if (call && ($96d7b80ecefdbb97$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $96d7b80ecefdbb97$var$_assertThisInitialized(self);\n}\nfunction $96d7b80ecefdbb97$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $96d7b80ecefdbb97$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $96d7b80ecefdbb97$var$_getPrototypeOf(o) {\n $96d7b80ecefdbb97$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $96d7b80ecefdbb97$var$_getPrototypeOf(o);\n}\nfunction $96d7b80ecefdbb97$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $96d7b80ecefdbb97$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $96d7b80ecefdbb97$var$_setPrototypeOf(o, p) {\n $96d7b80ecefdbb97$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $96d7b80ecefdbb97$var$_setPrototypeOf(o, p);\n}\nfunction $96d7b80ecefdbb97$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $96d7b80ecefdbb97$var$TextsLayer = /*#__PURE__*/ function(_NebulaLayer) {\n $96d7b80ecefdbb97$var$_inherits(TextsLayer, _NebulaLayer);\n var _super = $96d7b80ecefdbb97$var$_createSuper(TextsLayer);\n function TextsLayer(config) {\n var _this;\n $96d7b80ecefdbb97$var$_classCallCheck(this, TextsLayer);\n _this = _super.call(this, config);\n $96d7b80ecefdbb97$var$_defineProperty($96d7b80ecefdbb97$var$_assertThisInitialized(_this), \"deckCache\", void 0);\n _this.deckCache = new $96d7b80ecefdbb97$var$_deckCache[\"default\"](config.getData, function(data) {\n return config.toNebulaFeature(data);\n });\n return _this;\n }\n $96d7b80ecefdbb97$var$_createClass(TextsLayer, [\n {\n key: \"render\",\n value: function render(_ref) {\n var nebula = _ref.nebula;\n var defaultColor = [\n 0x0,\n 0x0,\n 0x0,\n 0xff\n ];\n var _this$deckCache = this.deckCache, objects = _this$deckCache.objects, updateTrigger = _this$deckCache.updateTrigger;\n var zoom = nebula.props.viewport.zoom;\n return new $9pc7R.default({\n id: \"texts-\".concat(this.id),\n data: objects,\n opacity: 1,\n fp64: false,\n pickable: false,\n // @ts-ignore\n getText: function getText(nf) {\n return nf.style.text;\n },\n // @ts-ignore\n getPosition: function getPosition(nf) {\n return nf.geoJson.geometry.coordinates;\n },\n // @ts-ignore\n getColor: function getColor(nf) {\n return (0, $h5pu5.toDeckColor)(nf.style.fillColor) || defaultColor;\n },\n // TODO: layer should offer option to scale with zoom\n sizeScale: 1 / Math.pow(2, 20 - zoom),\n getSize: $bEXHX.PROJECTED_PIXEL_SIZE_MULTIPLIER,\n updateTriggers: {\n all: updateTrigger\n },\n nebulaLayer: this\n });\n }\n }\n ]);\n return TextsLayer;\n}($96d7b80ecefdbb97$var$_nebulaLayer[\"default\"]);\nmodule.exports[\"default\"] = $96d7b80ecefdbb97$var$TextsLayer;\n\n});\nparcelRegister(\"bEXHX\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.PROJECTED_PIXEL_SIZE_MULTIPLIER = void 0;\n/**\n * A multiplier for screen-space width/scale for Arc, Line, Icon and Text layers.\n * Required in order to maintain the same appearance after upgrading to deck.gl v8.5.\n * https://github.com/visgl/deck.gl/blob/master/docs/upgrade-guide.md\n */ var $87d1bee9911d11f9$var$PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;\nmodule.exports.PROJECTED_PIXEL_SIZE_MULTIPLIER = $87d1bee9911d11f9$var$PROJECTED_PIXEL_SIZE_MULTIPLIER;\n\n});\n\n\nparcelRegister(\"cIeIZ\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\n\nvar $4agoo = parcelRequire(\"4agoo\");\n\nvar $9415041b4eaa9f0d$var$_constants = $9415041b4eaa9f0d$var$_interopRequireDefault((parcelRequire(\"6ZpD9\")));\n\nvar $4TuXT = parcelRequire(\"4TuXT\");\n\nvar $9415041b4eaa9f0d$var$_nebulaLayer = $9415041b4eaa9f0d$var$_interopRequireDefault((parcelRequire(\"7uZXb\")));\n\nvar $h5pu5 = parcelRequire(\"h5pu5\");\n\nvar $9415041b4eaa9f0d$var$_deckCache = $9415041b4eaa9f0d$var$_interopRequireDefault((parcelRequire(\"pgVSk\")));\nvar $9415041b4eaa9f0d$var$_NEBULA_TO_DECK_DIREC;\nfunction $9415041b4eaa9f0d$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $9415041b4eaa9f0d$var$_typeof(obj) {\n \"@babel/helpers - typeof\";\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $9415041b4eaa9f0d$var$_typeof = function _typeof(obj) {\n return typeof obj;\n };\n else $9415041b4eaa9f0d$var$_typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n return $9415041b4eaa9f0d$var$_typeof(obj);\n}\nfunction $9415041b4eaa9f0d$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $9415041b4eaa9f0d$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $9415041b4eaa9f0d$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $9415041b4eaa9f0d$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $9415041b4eaa9f0d$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $9415041b4eaa9f0d$var$_createSuper(Derived) {\n return function() {\n var Super = $9415041b4eaa9f0d$var$_getPrototypeOf(Derived), result;\n if ($9415041b4eaa9f0d$var$_isNativeReflectConstruct()) {\n var NewTarget = $9415041b4eaa9f0d$var$_getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else result = Super.apply(this, arguments);\n return $9415041b4eaa9f0d$var$_possibleConstructorReturn(this, result);\n };\n}\nfunction $9415041b4eaa9f0d$var$_possibleConstructorReturn(self, call) {\n if (call && ($9415041b4eaa9f0d$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n return $9415041b4eaa9f0d$var$_assertThisInitialized(self);\n}\nfunction $9415041b4eaa9f0d$var$_assertThisInitialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction $9415041b4eaa9f0d$var$_isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction $9415041b4eaa9f0d$var$_getPrototypeOf(o) {\n $9415041b4eaa9f0d$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return $9415041b4eaa9f0d$var$_getPrototypeOf(o);\n}\nfunction $9415041b4eaa9f0d$var$_inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) $9415041b4eaa9f0d$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $9415041b4eaa9f0d$var$_setPrototypeOf(o, p) {\n $9415041b4eaa9f0d$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $9415041b4eaa9f0d$var$_setPrototypeOf(o, p);\n}\nfunction $9415041b4eaa9f0d$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $9415041b4eaa9f0d$var$NEBULA_TO_DECK_DIRECTIONS = ($9415041b4eaa9f0d$var$_NEBULA_TO_DECK_DIREC = {}, $9415041b4eaa9f0d$var$_defineProperty($9415041b4eaa9f0d$var$_NEBULA_TO_DECK_DIREC, $4TuXT.ArrowStyles.NONE, {\n forward: false,\n backward: false\n}), $9415041b4eaa9f0d$var$_defineProperty($9415041b4eaa9f0d$var$_NEBULA_TO_DECK_DIREC, $4TuXT.ArrowStyles.FORWARD, {\n forward: true,\n backward: false\n}), $9415041b4eaa9f0d$var$_defineProperty($9415041b4eaa9f0d$var$_NEBULA_TO_DECK_DIREC, $4TuXT.ArrowStyles.BACKWARD, {\n forward: false,\n backward: true\n}), $9415041b4eaa9f0d$var$_defineProperty($9415041b4eaa9f0d$var$_NEBULA_TO_DECK_DIREC, $4TuXT.ArrowStyles.BOTH, {\n forward: true,\n backward: true\n}), $9415041b4eaa9f0d$var$_NEBULA_TO_DECK_DIREC);\nvar $9415041b4eaa9f0d$var$SegmentsLayer = /*#__PURE__*/ function(_NebulaLayer) {\n $9415041b4eaa9f0d$var$_inherits(SegmentsLayer, _NebulaLayer);\n var _super = $9415041b4eaa9f0d$var$_createSuper(SegmentsLayer);\n function SegmentsLayer(config) {\n var _this;\n $9415041b4eaa9f0d$var$_classCallCheck(this, SegmentsLayer);\n _this = _super.call(this, config);\n $9415041b4eaa9f0d$var$_defineProperty($9415041b4eaa9f0d$var$_assertThisInitialized(_this), \"deckCache\", void 0);\n $9415041b4eaa9f0d$var$_defineProperty($9415041b4eaa9f0d$var$_assertThisInitialized(_this), \"noBlend\", void 0);\n $9415041b4eaa9f0d$var$_defineProperty($9415041b4eaa9f0d$var$_assertThisInitialized(_this), \"highlightColor\", void 0);\n $9415041b4eaa9f0d$var$_defineProperty($9415041b4eaa9f0d$var$_assertThisInitialized(_this), \"arrowSize\", void 0);\n $9415041b4eaa9f0d$var$_defineProperty($9415041b4eaa9f0d$var$_assertThisInitialized(_this), \"jointRounded\", void 0);\n $9415041b4eaa9f0d$var$_defineProperty($9415041b4eaa9f0d$var$_assertThisInitialized(_this), \"capRounded\", void 0);\n $9415041b4eaa9f0d$var$_defineProperty($9415041b4eaa9f0d$var$_assertThisInitialized(_this), \"dashed\", void 0);\n $9415041b4eaa9f0d$var$_defineProperty($9415041b4eaa9f0d$var$_assertThisInitialized(_this), \"markerLayerProps\", void 0);\n _this.deckCache = new $9415041b4eaa9f0d$var$_deckCache[\"default\"](config.getData, function(data) {\n return config.toNebulaFeature(data);\n });\n _this.enableSelection = true;\n var _config$enablePicking = config.enablePicking, enablePicking = _config$enablePicking === void 0 ? true : _config$enablePicking, _config$noBlend = config.noBlend, noBlend = _config$noBlend === void 0 ? false : _config$noBlend, _config$jointRounded = config.jointRounded, jointRounded = _config$jointRounded === void 0 ? true : _config$jointRounded, _config$capRounded = config.capRounded, capRounded = _config$capRounded === void 0 ? true : _config$capRounded, _config$dashed = config.dashed, dashed = _config$dashed === void 0 ? false : _config$dashed, _config$markerLayerPr = config.markerLayerProps, markerLayerProps = _config$markerLayerPr === void 0 ? null : _config$markerLayerPr;\n Object.assign($9415041b4eaa9f0d$var$_assertThisInitialized(_this), {\n enablePicking: enablePicking,\n noBlend: noBlend,\n jointRounded: jointRounded,\n capRounded: capRounded,\n dashed: dashed,\n markerLayerProps: markerLayerProps\n });\n return _this;\n }\n $9415041b4eaa9f0d$var$_createClass(SegmentsLayer, [\n {\n key: \"getMouseOverSegment\",\n value: function getMouseOverSegment() {\n // TODO: remove references\n return null;\n }\n },\n {\n key: \"_calcMarkerPercentages\",\n value: function _calcMarkerPercentages(nf) {\n var arrowPercentages = nf.style.arrowPercentages;\n if (arrowPercentages) return arrowPercentages;\n var arrowStyle = nf.style.arrowStyle || $4TuXT.DEFAULT_STYLE.arrowStyle;\n if (arrowStyle === $4TuXT.ArrowStyles.NONE) return [];\n var arrowCount = Math.min(nf.style.arrowCount || $4TuXT.DEFAULT_STYLE.arrowCount, $4TuXT.MAX_ARROWS);\n return [\n [\n 0.5\n ],\n [\n 0.33,\n 0.66\n ],\n [\n 0.25,\n 0.5,\n 0.75\n ]\n ][arrowCount - 1];\n }\n },\n {\n key: \"_getHighlightedObjectIndex\",\n value: function _getHighlightedObjectIndex(_ref) {\n var nebula = _ref.nebula;\n var deckglMouseOverInfo = nebula.deckglMouseOverInfo;\n if (deckglMouseOverInfo) {\n var originalLayer = deckglMouseOverInfo.originalLayer, index = deckglMouseOverInfo.index;\n if (originalLayer === this) return index;\n } // no object\n return -1;\n }\n },\n {\n key: \"render\",\n value: function render(_ref2) {\n var nebula = _ref2.nebula;\n var defaultColor = [\n 0x0,\n 0x0,\n 0x0,\n 0xff\n ];\n var _this$deckCache = this.deckCache, objects = _this$deckCache.objects, updateTrigger = _this$deckCache.updateTrigger;\n return new $4agoo.PathMarkerLayer({\n id: \"segments-\".concat(this.id),\n data: objects,\n opacity: 1,\n fp64: false,\n jointRounded: this.jointRounded,\n capRounded: this.capRounded,\n pickable: true,\n sizeScale: this.arrowSize || 6,\n parameters: {\n depthTest: false,\n blend: !this.noBlend,\n blendEquation: $9415041b4eaa9f0d$var$_constants[\"default\"].MAX\n },\n getPath: function getPath(nf) {\n return nf.geoJson.geometry.coordinates;\n },\n getColor: function getColor(nf) {\n return (0, $h5pu5.toDeckColor)(nf.style.lineColor, defaultColor);\n },\n getWidth: function getWidth(nf) {\n return nf.style.lineWidthMeters || 1;\n },\n getZLevel: function getZLevel(nf) {\n return nf.style.zLevel * 255;\n },\n getDirection: function getDirection(nf) {\n return $9415041b4eaa9f0d$var$NEBULA_TO_DECK_DIRECTIONS[nf.style.arrowStyle];\n },\n getMarkerColor: function getMarkerColor(nf) {\n return (0, $h5pu5.toDeckColor)(nf.style.arrowColor, defaultColor);\n },\n getMarkerPercentages: this._calcMarkerPercentages,\n updateTriggers: {\n all: updateTrigger\n },\n highlightedObjectIndex: this._getHighlightedObjectIndex({\n nebula: nebula\n }),\n highlightColor: (0, $h5pu5.toDeckColor)(this.highlightColor),\n dashJustified: this.dashed,\n getDashArray: this.dashed ? function(nf) {\n return nf.style.dashArray;\n } : null,\n markerLayerProps: this.markerLayerProps || $4agoo.PathMarkerLayer.defaultProps.markerLayerProps,\n nebulaLayer: this\n });\n }\n }\n ]);\n return SegmentsLayer;\n}($9415041b4eaa9f0d$var$_nebulaLayer[\"default\"]);\nmodule.exports[\"default\"] = $9415041b4eaa9f0d$var$SegmentsLayer;\n\n});\n\nparcelRegister(\"afly2\", function(module, exports) {\n\"use strict\";\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports[\"default\"] = void 0;\n\nvar $8nJ5N = parcelRequire(\"8nJ5N\");\n\nvar $775c05120235343a$var$_document = $775c05120235343a$var$_interopRequireDefault((parcelRequire(\"f6y2O\")));\n\nvar $gwLQV = parcelRequire(\"gwLQV\");\n\nvar $775c05120235343a$var$_deckDrawer = $775c05120235343a$var$_interopRequireDefault((parcelRequire(\"cY7II\")));\n\nvar $775c05120235343a$var$_layerMouseEvent = $775c05120235343a$var$_interopRequireDefault((parcelRequire(\"iXJhp\")));\n\nvar $775c05120235343a$var$_nebulaLayer = $775c05120235343a$var$_interopRequireDefault((parcelRequire(\"7uZXb\")));\nfunction $775c05120235343a$var$_interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction $775c05120235343a$var$_toConsumableArray(arr) {\n return $775c05120235343a$var$_arrayWithoutHoles(arr) || $775c05120235343a$var$_iterableToArray(arr) || $775c05120235343a$var$_unsupportedIterableToArray(arr) || $775c05120235343a$var$_nonIterableSpread();\n}\nfunction $775c05120235343a$var$_nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $775c05120235343a$var$_unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return $775c05120235343a$var$_arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $775c05120235343a$var$_arrayLikeToArray(o, minLen);\n}\nfunction $775c05120235343a$var$_iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $775c05120235343a$var$_arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return $775c05120235343a$var$_arrayLikeToArray(arr);\n}\nfunction $775c05120235343a$var$_arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction $775c05120235343a$var$_classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $775c05120235343a$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $775c05120235343a$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $775c05120235343a$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $775c05120235343a$var$_defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction $775c05120235343a$var$_defineProperty(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\nvar $775c05120235343a$var$LOGGER_PREFIX = \"Nebula: \";\nvar $775c05120235343a$var$Nebula = /*#__PURE__*/ function() {\n function Nebula() {\n var _this = this;\n $775c05120235343a$var$_classCallCheck(this, Nebula);\n $775c05120235343a$var$_defineProperty(this, \"props\", void 0);\n $775c05120235343a$var$_defineProperty(this, \"deckgl\", void 0);\n $775c05120235343a$var$_defineProperty(this, \"mainContainer\", void 0);\n $775c05120235343a$var$_defineProperty(this, \"deckglMouseOverInfo\", void 0);\n $775c05120235343a$var$_defineProperty(this, \"_deckDrawer\", void 0);\n $775c05120235343a$var$_defineProperty(this, \"_mouseWasDown\", void 0);\n $775c05120235343a$var$_defineProperty(this, \"wmViewport\", void 0);\n $775c05120235343a$var$_defineProperty(this, \"queryObjectEvents\", new $8nJ5N.EventEmitter());\n $775c05120235343a$var$_defineProperty(this, \"forceUpdate\", void 0);\n $775c05120235343a$var$_defineProperty(this, \"inited\", void 0);\n $775c05120235343a$var$_defineProperty(this, \"_onMouseEvent\", function(event) {\n if (!_this._isNebulaEvent(event)) return;\n if (event.type === \"mousedown\") _this._mouseWasDown = true;\n // offsetX/Y of the MouseEvent provides the offset in the X/Y coordinate\n // of the mouse pointer between that event and the padding edge of the target node.\n // We set our listener to document so we need to adjust offsetX/Y\n // in case the target is not be our WebGL canvas.\n var _ref = _this.mainContainer ? _this.mainContainer.getBoundingClientRect() : {}, _ref$top = _ref.top, top = _ref$top === void 0 ? 0 : _ref$top, _ref$left = _ref.left, left = _ref$left === void 0 ? 0 : _ref$left;\n var proxyEvent = new Proxy(event, {\n get: function get(original, propertyName) {\n if (propertyName === \"offsetX\") return original.pageX - left;\n if (propertyName === \"offsetY\") return original.pageY - top;\n // TODO: Properly use pointer events\n if (propertyName === \"type\") return original.type.replace(\"pointer\", \"mouse\");\n var result = original[propertyName];\n if (typeof result === \"function\") return result.bind(original);\n return result;\n }\n });\n _this._handleDeckGLEvent(proxyEvent);\n });\n }\n $775c05120235343a$var$_createClass(Nebula, [\n {\n key: \"init\",\n value: function init(props) {\n var _this2 = this;\n this.props = props;\n this.wmViewport = new $gwLQV.default(this.props.viewport); // TODO: Properly use pointer events: ['click', 'pointermove', 'pointerup', 'pointerdown']\n [\n \"click\",\n \"mousemove\",\n \"mouseup\",\n \"mousedown\"\n ].forEach(function(name) {\n return $775c05120235343a$var$_document[\"default\"].addEventListener(name, _this2._onMouseEvent, true);\n });\n }\n },\n {\n key: \"detach\",\n value: function detach() {\n var _this3 = this;\n // TODO: Properly use pointer events: ['click', 'pointermove', 'pointerup', 'pointerdown']\n [\n \"click\",\n \"mousemove\",\n \"mouseup\",\n \"mousedown\"\n ].forEach(function(name) {\n return $775c05120235343a$var$_document[\"default\"].removeEventListener(name, _this3._onMouseEvent, true);\n });\n }\n },\n {\n key: \"updateProps\",\n value: function updateProps(newProps) {\n this.props = newProps;\n var viewport = this.props.viewport;\n this.wmViewport = new $gwLQV.default(viewport);\n }\n },\n {\n key: \"log\",\n value: function log(message) {\n var logger = this.props.logger;\n if (logger && logger.info) logger.info($775c05120235343a$var$LOGGER_PREFIX + message);\n }\n },\n {\n key: \"updateAllDeckObjects\",\n value: function updateAllDeckObjects() {\n this.getAllLayers().forEach(function(layer) {\n if (layer && layer.deckCache) layer.deckCache.updateAllDeckObjects();\n });\n this.forceUpdate();\n }\n },\n {\n key: \"updateDeckObjectsByIds\",\n value: function updateDeckObjectsByIds(ids) {\n this.getAllLayers().forEach(function(layer) {\n if (layer && layer.deckCache) layer.deckCache.updateDeckObjectsByIds(ids);\n });\n this.forceUpdate();\n }\n },\n {\n key: \"rerenderLayers\",\n value: function rerenderLayers() {\n this.updateAllDeckObjects();\n }\n },\n {\n key: \"_isNebulaEvent\",\n value: function _isNebulaEvent(_ref2) {\n var buttons = _ref2.buttons, target = _ref2.target, type = _ref2.type;\n var viewport = this.props.viewport; // allow mouseup event aggressively to cancel drag properly\n // TODO: use pointer capture setPointerCapture() to capture mouseup properly after deckgl\n if (this._mouseWasDown && type === \"mouseup\") {\n this._mouseWasDown = false;\n return true;\n } // allow mousemove event while dragging\n if (type === \"mousemove\" && buttons > 0) return true;\n if (!target.getBoundingClientRect) return false;\n var rect = target.getBoundingClientRect(); // Only listen to events coming from the basemap\n // identified by the canvas of the same size as viewport.\n // Need to round the rect dimension as some monitors\n // have some sub-pixel difference with viewport.\n return Math.round(rect.width) === Math.round(viewport.width) && Math.round(rect.height) === Math.round(viewport.height);\n }\n },\n {\n key: \"getMouseGroundPosition\",\n value: function getMouseGroundPosition(event) {\n return this.wmViewport.unproject([\n event.offsetX,\n event.offsetY\n ]);\n }\n },\n {\n key: \"unprojectMousePosition\",\n value: function unprojectMousePosition(mousePosition) {\n // @ts-ignore\n return this.wmViewport.unproject(mousePosition);\n }\n },\n {\n key: \"_handleDeckGLEvent\",\n value: function _handleDeckGLEvent(event) {\n var deckgl = this.deckgl, _this$props = this.props, onMapMouseEvent = _this$props.onMapMouseEvent, selectionType = _this$props.selectionType, eventFilter = _this$props.eventFilter;\n var sendMapEvent = true;\n var cursor = \"auto\";\n if (event && deckgl && selectionType) {\n if (!this._deckDrawer) this._deckDrawer = new $775c05120235343a$var$_deckDrawer[\"default\"](this);\n var lngLat = this.getMouseGroundPosition(event);\n if (eventFilter && !eventFilter(lngLat, event)) return; // @ts-ignore\n var drawerResult = this._deckDrawer.handleEvent(event, lngLat, selectionType);\n if (drawerResult.redraw) this.forceUpdate();\n return;\n }\n if (event && deckgl && (!event.buttons || event.type !== \"mousemove\")) {\n // TODO: sort by mouse priority\n var layerIds = deckgl.props.layers.filter(function(l) {\n return l && l.props && l.props.nebulaLayer && l.props.nebulaLayer.enablePicking;\n }).map(function(l) {\n return l.id;\n });\n var pickingInfo = deckgl.pickObject({\n x: event.offsetX,\n y: event.offsetY,\n radius: 5,\n layerIds: layerIds\n });\n this.queryObjectEvents.emit(\"pick\", {\n event: event,\n pickingInfo: pickingInfo\n });\n if (pickingInfo) {\n sendMapEvent = false;\n var index = pickingInfo.index, _lngLat = pickingInfo.lngLat;\n if (eventFilter && !eventFilter(_lngLat, event)) return;\n var deckLayer = pickingInfo.layer, object = pickingInfo.object;\n if (deckLayer && deckLayer.props && deckLayer.props.nebulaLayer && deckLayer.props.nebulaLayer.eventHandler) deckLayer.props.nebulaLayer.eventHandler(event, pickingInfo);\n var original = object.original || deckLayer.props.nebulaLayer && deckLayer.props.nebulaLayer.deckCache && deckLayer.props.nebulaLayer.deckCache.originals[index];\n if (original) {\n this.deckglMouseOverInfo = {\n originalLayer: deckLayer.props.nebulaLayer,\n index: index\n }; // @ts-ignore\n var nebulaMouseEvent = new $775c05120235343a$var$_layerMouseEvent[\"default\"](event, {\n data: original,\n metadata: object.metadata,\n groundPoint: _lngLat,\n nebula: this\n });\n deckLayer.props.nebulaLayer.emit(event.type, nebulaMouseEvent);\n this.forceUpdate();\n }\n cursor = \"pointer\";\n }\n }\n if ($775c05120235343a$var$_document[\"default\"].documentElement) $775c05120235343a$var$_document[\"default\"].documentElement.style.cursor = cursor;\n if (sendMapEvent) {\n this.deckglMouseOverInfo = null;\n var _lngLat2 = this.getMouseGroundPosition(event);\n if (eventFilter && !eventFilter(_lngLat2, event)) return; // send to layers first\n // @ts-ignore\n var _nebulaMouseEvent = new $775c05120235343a$var$_layerMouseEvent[\"default\"](event, {\n groundPoint: _lngLat2,\n nebula: this\n });\n this.getAllLayers().filter(function(layer) {\n return layer && layer.usesMapEvents;\n }).forEach(function(layer) {\n return layer.emit(\"mapMouseEvent\", _nebulaMouseEvent);\n });\n this.getAllLayers().filter(function(layer) {\n return layer && layer.props && layer.props.nebulaLayer && layer.props.nebulaLayer.mapMouseEvent;\n }).forEach(function(layer) {\n return layer.props.nebulaLayer.mapMouseEvent(_nebulaMouseEvent, layer);\n });\n if (onMapMouseEvent) onMapMouseEvent(event, _lngLat2);\n }\n }\n },\n {\n key: \"getExtraDeckLayers\",\n value: function getExtraDeckLayers() {\n var result = [];\n if (this._deckDrawer) result.push.apply(result, $775c05120235343a$var$_toConsumableArray(this._deckDrawer.render()));\n return result;\n }\n },\n {\n key: \"renderDeckLayers\",\n value: function renderDeckLayers() {\n var _this4 = this;\n return this.getAllLayers().map(function(layer) {\n return layer instanceof $775c05120235343a$var$_nebulaLayer[\"default\"] ? layer.render({\n nebula: _this4\n }) : layer;\n }).filter(Boolean);\n }\n },\n {\n key: \"getAllLayers\",\n value: function getAllLayers() {\n var result = [];\n this.props.layers.filter(Boolean).forEach(function(layer) {\n result.push(layer); // Only NebulaLayers have helpers, Deck GL layers don't.\n if (layer instanceof $775c05120235343a$var$_nebulaLayer[\"default\"]) result.push.apply(result, $775c05120235343a$var$_toConsumableArray(layer.helperLayers));\n });\n return result.filter(Boolean);\n }\n },\n {\n key: \"getRenderedLayers\",\n value: function getRenderedLayers() {\n return [].concat($775c05120235343a$var$_toConsumableArray(this.renderDeckLayers()), $775c05120235343a$var$_toConsumableArray(this.getExtraDeckLayers()));\n }\n },\n {\n key: \"updateAndGetRenderedLayers\",\n value: function updateAndGetRenderedLayers(layers, viewport, container) {\n if (this.inited) {\n this.updateProps({\n layers: layers,\n viewport: viewport\n });\n this.forceUpdate = function() {\n return container.forceUpdate();\n };\n } else {\n this.inited = true;\n this.init({\n layers: layers,\n viewport: viewport\n });\n this.forceUpdate = function() {\n return container.forceUpdate();\n };\n this.updateAllDeckObjects();\n }\n return this.getRenderedLayers();\n }\n },\n {\n key: \"setDeck\",\n value: function setDeck(deckgl) {\n if (deckgl) this.deckgl = deckgl;\n }\n },\n {\n key: \"setMainContainer\",\n value: function setMainContainer(mainContainer) {\n if (mainContainer) this.mainContainer = mainContainer;\n }\n }\n ]);\n return Nebula;\n}();\nmodule.exports[\"default\"] = $775c05120235343a$var$Nebula;\n\n});\nparcelRegister(\"f6y2O\", function(module, exports) {\nvar $aff1d311f28a6c5c$var$topLevel = typeof $parcel$global !== \"undefined\" ? $parcel$global : typeof window !== \"undefined\" ? window : {};\n\nvar $5tWFo = parcelRequire(\"5tWFo\");\nvar $aff1d311f28a6c5c$var$doccy;\nif (typeof document !== \"undefined\") $aff1d311f28a6c5c$var$doccy = document;\nelse {\n $aff1d311f28a6c5c$var$doccy = $aff1d311f28a6c5c$var$topLevel[\"__GLOBAL_DOCUMENT_CACHE@4\"];\n if (!$aff1d311f28a6c5c$var$doccy) $aff1d311f28a6c5c$var$doccy = $aff1d311f28a6c5c$var$topLevel[\"__GLOBAL_DOCUMENT_CACHE@4\"] = $5tWFo;\n}\nmodule.exports = $aff1d311f28a6c5c$var$doccy;\n\n});\n\n\n\n\nparcelRegister(\"gABF7\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c13d391174fda24e$export$2e2bcd8739ae039; });\n\nvar $cr2GM = parcelRequire(\"cr2GM\");\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $fBBlk = parcelRequire(\"fBBlk\");\n\nvar $9O4Sc = parcelRequire(\"9O4Sc\");\n\nvar $iuVwc = parcelRequire(\"iuVwc\");\n\nvar $lxEiN = parcelRequire(\"lxEiN\");\n\nvar $fuiMG = parcelRequire(\"fuiMG\");\nclass $c13d391174fda24e$var$FeatureSettingsStore {\n setProperty(id, field, value) {\n const newProperties = [\n ...this.properties\n ];\n const idx = newProperties.findIndex((item)=>item.id === id);\n if (idx !== -1) {\n if (field === \"name\") newProperties[idx].name = value;\n else if (field === \"value\") newProperties[idx].value = value;\n else newProperties[idx].value = value;\n } else if ([\n \"_opacity\"\n ].includes(id)) newProperties.push({\n value: value,\n id: id,\n name: id\n });\n this.properties = newProperties;\n }\n get isBuilding() {\n var _this_id;\n return (_this_id = this.id) === null || _this_id === void 0 ? void 0 : _this_id.startsWith(\"pb_\");\n }\n get heightInFeet() {\n return Math.round(this.height * 3.28084);\n }\n get elevationInFeet() {\n return Math.round(this.elevation * 3.28084);\n }\n get selectedColor() {\n const { color: color, allColors: allColors } = this;\n const item = allColors.find((c)=>color.slice(0, 3).join() === c.rgb.join());\n return item;\n }\n get opacityPercentage() {\n const value = Math.round(this.color[3] / 255 * 100);\n return value;\n }\n get elevation() {\n return (0, $fuiMG.getElevationFromGeometry)(this.geometry);\n }\n get geoJSON() {\n var _this_layer;\n const properties = [\n ...this.properties\n ].reduce((acc, prop)=>{\n acc[prop.name] = prop.value;\n return acc;\n }, {});\n const feature = {\n id: this.id,\n name: this.name,\n height: this.height,\n color: this.color,\n layer_id: (_this_layer = this.layer) === null || _this_layer === void 0 ? void 0 : _this_layer.id,\n icon: this.icon,\n stroke_width: this.strokeWidth,\n angle: this.angle,\n scale: this.scale,\n geometry: this.geometry,\n properties: properties\n };\n return feature;\n }\n constructor(){\n (0, $cr2GM._)(this, \"id\", null);\n (0, $cr2GM._)(this, \"properties\", []);\n (0, $cr2GM._)(this, \"metadata\", []);\n (0, $cr2GM._)(this, \"dataset\", null);\n (0, $cr2GM._)(this, \"layer\", null);\n (0, $cr2GM._)(this, \"name\", null);\n (0, $cr2GM._)(this, \"height\", 0);\n (0, $cr2GM._)(this, \"scale\", 1);\n (0, $cr2GM._)(this, \"strokeWidth\", 1);\n (0, $cr2GM._)(this, \"color\", [\n 0,\n 112,\n 255,\n 255\n ]);\n (0, $cr2GM._)(this, \"icon\", null);\n (0, $cr2GM._)(this, \"layerId\", null);\n (0, $cr2GM._)(this, \"isLoading\", true);\n (0, $cr2GM._)(this, \"geometry\", null);\n (0, $cr2GM._)(this, \"angle\", 0);\n (0, $cr2GM._)(this, \"bbox\", null);\n (0, $cr2GM._)(this, \"allColors\", Object.entries($9O4Sc).reduce((acc, [key, val])=>{\n if (key === \"common\") return acc;\n if (key.split(/(?=[A-Z])/).length > 1) return acc;\n const label = key.charAt(0).toUpperCase() + key.slice(1);\n const value = val[400];\n const rgb = (0, $fuiMG.hexToRgb)(value);\n if (rgb) acc.push({\n label: label,\n value: value,\n rgb: rgb\n });\n return acc;\n }, [\n {\n label: \"Dark Blue (Default)\",\n value: \"#0070FF\",\n rgb: (0, $fuiMG.hexToRgb)(\"#0070FF\")\n },\n {\n label: \"Orange (CHP)\",\n value: \"#ff6c00\",\n rgb: (0, $fuiMG.hexToRgb)(\"#ff6c00\")\n },\n {\n label: \"Blue (Fuel Cell)\",\n value: \"#01A3FF\",\n rgb: (0, $fuiMG.hexToRgb)(\"#01A3FF\")\n },\n {\n label: \"Green (Storage)\",\n value: \"#05D748\",\n rgb: (0, $fuiMG.hexToRgb)(\"#05D748\")\n },\n {\n label: \"Yellow (Solar)\",\n value: \"#FFBC00\",\n rgb: (0, $fuiMG.hexToRgb)(\"#FFBC00\")\n }\n ]));\n (0, $cr2GM._)(this, \"loadFeature\", async (datasetId, featureId)=>{\n var _response_data, _EditorStore_currentDataset, _feature_dataset, _EditorStore_currentLayer, _feature_layer;\n this.isLoading = true;\n this.id = null;\n this.strokeWidth = 1;\n this.angle = 0;\n this.scale = 1;\n this.name = null;\n this.dataset = null;\n this.geometry = null;\n this.icon = null;\n this.layer = null;\n this.color = [\n 0,\n 112,\n 255,\n 255\n ];\n this.height = 1;\n this.layerId = null;\n this.layer = null;\n this.bbox = null;\n this.properties = [];\n this.metadata = [];\n if (datasetId === null) {\n this.isLoading = false;\n return;\n }\n const response = await (0, $lxEiN.default).Dataset.getFeature(datasetId, featureId);\n const feature = (_response_data = response.data) === null || _response_data === void 0 ? void 0 : _response_data.data;\n if (!feature) {\n console.error(`No Feature Found`);\n return;\n }\n this.dataset = feature.dataset;\n this.layer = feature.layer;\n this.bbox = feature.bbox;\n this.name = feature.name;\n this.layer = feature.layer;\n this.icon = feature.icon;\n this.strokeWidth = feature.stroke_width;\n this.angle = feature.angle || 0;\n this.scale = feature.scale || 1;\n this.height = feature.height || 0;\n if (feature.color) this.color = feature.color;\n if (((_EditorStore_currentDataset = (0, $iuVwc.default).currentDataset) === null || _EditorStore_currentDataset === void 0 ? void 0 : _EditorStore_currentDataset.id) !== ((_feature_dataset = feature.dataset) === null || _feature_dataset === void 0 ? void 0 : _feature_dataset.id)) (0, $iuVwc.default).currentDataset = feature.dataset;\n if (((_EditorStore_currentLayer = (0, $iuVwc.default).currentLayer) === null || _EditorStore_currentLayer === void 0 ? void 0 : _EditorStore_currentLayer.id) !== ((_feature_layer = feature.layer) === null || _feature_layer === void 0 ? void 0 : _feature_layer.id)) (0, $iuVwc.default).currentLayer = feature.layer;\n this.geometry = feature.geometry;\n this.properties = Object.entries(feature.properties).reduce((acc, kv, idx)=>{\n const [name, value] = kv;\n const id = `${idx + 1}`;\n acc.push({\n id: id,\n name: name,\n value: value\n });\n return acc;\n }, []);\n if (feature.properties.project_id) this.projectId = feature.properties.project_id;\n this.id = feature.id;\n this.layerId = feature.layer_id;\n // this.setProperties(properties);\n this.isLoading = false;\n return response.data.data;\n });\n (0, $cr2GM._)(this, \"addProperty\", ()=>{\n const row = {\n id: `${this.properties.length + 2}`,\n name: \"\",\n val: \"\"\n };\n this.properties = [\n ...this.properties,\n row\n ];\n });\n (0, $cr2GM._)(this, \"setLayer\", async (layer)=>{\n this.layer = layer;\n // update layer immediately since layer feature count depends on it\n await this.update();\n (0, $iuVwc.default).getDatasetFeatures();\n (0, $iuVwc.default).getLayers();\n });\n (0, $cr2GM._)(this, \"setHeight\", (value)=>{\n this.height = value;\n });\n (0, $cr2GM._)(this, \"setIcon\", (value)=>{\n this.icon = value;\n });\n (0, $cr2GM._)(this, \"setOpacity\", (value)=>{\n this.color = [\n ...this.color.slice(0, 3),\n value\n ];\n });\n (0, $cr2GM._)(this, \"setStrokeWidth\", (value)=>{\n this.strokeWidth = value;\n });\n (0, $cr2GM._)(this, \"setElevation\", (value)=>{\n this.geometry = (0, $fuiMG.elevateGeometry)(this.geometry, value);\n });\n (0, $cr2GM._)(this, \"setName\", (name)=>{\n this.name = name;\n });\n (0, $cr2GM._)(this, \"setScale\", (scale)=>{\n this.scale = scale;\n });\n (0, $cr2GM._)(this, \"setColor\", (value)=>{\n let rgb = value;\n if (value.startsWith(\"#\")) rgb = (0, $fuiMG.hexToRgb)(value);\n this.color = [\n ...rgb,\n this.color[3]\n ];\n });\n (0, $cr2GM._)(this, \"update\", async ()=>{\n const feature = this.geoJSON;\n try {\n var _res_data_data, _res_data;\n const res = await (0, $lxEiN.default).Dataset.updateFeature(this.dataset.id, feature);\n if ((_res_data = res.data) === null || _res_data === void 0 ? void 0 : (_res_data_data = _res_data.data) === null || _res_data_data === void 0 ? void 0 : _res_data_data.area_in_sq_meters) {\n const area = res.data.data.area_in_sq_meters;\n const areaInSqFeet = (area * 10.76391).toFixed(2);\n // const areaInSqMetersIndex = this.metadata.findIndex(\n // item => item.label === 'area in sq meters'\n // );\n const areaInSqFeetIndex = this.metadata.findIndex((item)=>item.label === \"Area\");\n // if (areaInSqMetersIndex !== -1) {\n // this.metadata[areaInSqMetersIndex].value = area;\n // } else {\n // this.metadata.push({\n // label: 'area in sq meters',\n // value: area\n // });\n // }\n if (areaInSqFeetIndex !== -1) this.metadata[areaInSqFeetIndex].value = areaInSqFeet;\n else this.metadata.push({\n label: \"Area\",\n value: `${areaInSqFeet} ft\\xb2`\n });\n }\n } catch (error) {\n console.error(error);\n }\n });\n (0, $cr2GM._)(this, \"deleteProperty\", (itemId)=>{\n const newProperties = [\n ...this.properties\n ].filter((item)=>item.id !== itemId);\n this.properties = newProperties;\n });\n (0, $cr2GM._)(this, \"setGeometry\", (geometry)=>{\n this.geometry = geometry;\n });\n (0, $cr2GM._)(this, \"setAngle\", (angle)=>{\n this.angle = angle;\n });\n (0, $cr2GM._)(this, \"getProperties\", ()=>{\n return this.properties.reduce((acc, val)=>{\n acc[val.name] = val.value;\n return acc;\n }, {});\n });\n (0, $cr2GM._)(this, \"deleteFeature\", async ()=>{\n // this.features.delete(featureId);\n // agent.Dataset.deleteFeature(this.dataset.id, this.id);\n await (0, $iuVwc.default).deleteFeature(this.id);\n this.loadFeature(null);\n });\n (0, $cr2GM._)(this, \"getId\", ()=>{\n return this.id;\n });\n (0, $cr2GM._)(this, \"duplicate\", async ()=>{\n const feature = this.geoJSON;\n const response = await (0, $lxEiN.default).Dataset.createFeature(this.dataset.id, (0, $edHbI._)((0, $2QP2i._)({}, feature), {\n id: null\n }));\n const { id: id } = response.data.data;\n return id;\n });\n (0, $gOgWf.makeObservable)(this, {\n id: (0, $gOgWf.observable),\n properties: (0, $gOgWf.observable),\n metadata: (0, $gOgWf.observable),\n dataset: (0, $gOgWf.observable),\n layer: (0, $gOgWf.observable),\n name: (0, $gOgWf.observable),\n height: (0, $gOgWf.observable),\n scale: (0, $gOgWf.observable),\n strokeWidth: (0, $gOgWf.observable),\n angle: (0, $gOgWf.observable),\n color: (0, $gOgWf.observable),\n icon: (0, $gOgWf.observable),\n layerId: (0, $gOgWf.observable),\n isLoading: (0, $gOgWf.observable),\n geometry: (0, $gOgWf.observable),\n bbox: (0, $gOgWf.observable),\n loadFeature: (0, $gOgWf.action),\n setProperty: (0, $gOgWf.action),\n addProperty: (0, $gOgWf.action),\n setLayer: (0, $gOgWf.action),\n setHeight: (0, $gOgWf.action),\n setIcon: (0, $gOgWf.action),\n setOpacity: (0, $gOgWf.action),\n setStrokeWidth: (0, $gOgWf.action),\n setElevation: (0, $gOgWf.action),\n setName: (0, $gOgWf.action),\n setScale: (0, $gOgWf.action),\n setColor: (0, $gOgWf.action),\n isBuilding: (0, $gOgWf.computed),\n heightInFeet: (0, $gOgWf.computed),\n elevationInFeet: (0, $gOgWf.computed),\n selectedColor: (0, $gOgWf.computed),\n opacityPercentage: (0, $gOgWf.computed),\n elevation: (0, $gOgWf.computed),\n geoJSON: (0, $gOgWf.computed),\n update: (0, $gOgWf.action),\n deleteProperty: (0, $gOgWf.action),\n setGeometry: (0, $gOgWf.action),\n getProperties: (0, $gOgWf.action),\n deleteFeature: (0, $gOgWf.action),\n getId: (0, $gOgWf.action),\n duplicate: (0, $gOgWf.action)\n });\n }\n}\nconst $c13d391174fda24e$var$store = new $c13d391174fda24e$var$FeatureSettingsStore();\nconst $c13d391174fda24e$var$debouncedUpdate = (0, $fBBlk.debounce)($c13d391174fda24e$var$store.update, 200);\n(0, $gOgWf.reaction)(()=>JSON.stringify([\n $c13d391174fda24e$var$store.color,\n $c13d391174fda24e$var$store.icon,\n $c13d391174fda24e$var$store.height,\n $c13d391174fda24e$var$store.properties,\n $c13d391174fda24e$var$store.strokeWidth,\n $c13d391174fda24e$var$store.name,\n $c13d391174fda24e$var$store.geometry,\n $c13d391174fda24e$var$store.scale,\n $c13d391174fda24e$var$store.angle\n ]), ()=>{\n if ($c13d391174fda24e$var$store.id && !$c13d391174fda24e$var$store.isLoading) $c13d391174fda24e$var$debouncedUpdate();\n});\nvar $c13d391174fda24e$export$2e2bcd8739ae039 = $c13d391174fda24e$var$store;\n\n});\nparcelRegister(\"9O4Sc\", function(module, exports) {\n\n$parcel$export(module.exports, \"common\", function () { return (parcelRequire(\"AC97U\")).default; });\n$parcel$export(module.exports, \"red\", function () { return (parcelRequire(\"d39yA\")).default; });\n$parcel$export(module.exports, \"pink\", function () { return (parcelRequire(\"gffu7\")).default; });\n$parcel$export(module.exports, \"purple\", function () { return (parcelRequire(\"jibMW\")).default; });\n$parcel$export(module.exports, \"deepPurple\", function () { return (parcelRequire(\"1YKA1\")).default; });\n$parcel$export(module.exports, \"indigo\", function () { return (parcelRequire(\"hpUOc\")).default; });\n$parcel$export(module.exports, \"blue\", function () { return (parcelRequire(\"aXDgw\")).default; });\n$parcel$export(module.exports, \"lightBlue\", function () { return (parcelRequire(\"8mydd\")).default; });\n$parcel$export(module.exports, \"cyan\", function () { return (parcelRequire(\"dl52B\")).default; });\n$parcel$export(module.exports, \"teal\", function () { return (parcelRequire(\"7Pmfg\")).default; });\n$parcel$export(module.exports, \"green\", function () { return (parcelRequire(\"du1yB\")).default; });\n$parcel$export(module.exports, \"lightGreen\", function () { return (parcelRequire(\"16VSS\")).default; });\n$parcel$export(module.exports, \"lime\", function () { return (parcelRequire(\"hd6af\")).default; });\n$parcel$export(module.exports, \"yellow\", function () { return (parcelRequire(\"hpI6i\")).default; });\n$parcel$export(module.exports, \"amber\", function () { return (parcelRequire(\"j2BR8\")).default; });\n$parcel$export(module.exports, \"orange\", function () { return (parcelRequire(\"1QBMq\")).default; });\n$parcel$export(module.exports, \"deepOrange\", function () { return (parcelRequire(\"i0zMe\")).default; });\n$parcel$export(module.exports, \"brown\", function () { return (parcelRequire(\"gs1fu\")).default; });\n$parcel$export(module.exports, \"grey\", function () { return (parcelRequire(\"eYsCg\")).default; });\n$parcel$export(module.exports, \"blueGrey\", function () { return (parcelRequire(\"d9jmQ\")).default; });\n\nvar $AC97U = parcelRequire(\"AC97U\");\n\nvar $d39yA = parcelRequire(\"d39yA\");\n\nvar $gffu7 = parcelRequire(\"gffu7\");\n\nvar $jibMW = parcelRequire(\"jibMW\");\n\nvar $1YKA1 = parcelRequire(\"1YKA1\");\n\nvar $hpUOc = parcelRequire(\"hpUOc\");\n\nvar $aXDgw = parcelRequire(\"aXDgw\");\n\nvar $8mydd = parcelRequire(\"8mydd\");\n\nvar $dl52B = parcelRequire(\"dl52B\");\n\nvar $7Pmfg = parcelRequire(\"7Pmfg\");\n\nvar $du1yB = parcelRequire(\"du1yB\");\n\nvar $16VSS = parcelRequire(\"16VSS\");\n\nvar $hd6af = parcelRequire(\"hd6af\");\n\nvar $hpI6i = parcelRequire(\"hpI6i\");\n\nvar $j2BR8 = parcelRequire(\"j2BR8\");\n\nvar $1QBMq = parcelRequire(\"1QBMq\");\n\nvar $i0zMe = parcelRequire(\"i0zMe\");\n\nvar $gs1fu = parcelRequire(\"gs1fu\");\n\nvar $eYsCg = parcelRequire(\"eYsCg\");\n\nvar $d9jmQ = parcelRequire(\"d9jmQ\");\n\n});\nparcelRegister(\"gffu7\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $bd3a0f013ffc105e$export$2e2bcd8739ae039; });\nconst $bd3a0f013ffc105e$var$pink = {\n 50: \"#fce4ec\",\n 100: \"#f8bbd0\",\n 200: \"#f48fb1\",\n 300: \"#f06292\",\n 400: \"#ec407a\",\n 500: \"#e91e63\",\n 600: \"#d81b60\",\n 700: \"#c2185b\",\n 800: \"#ad1457\",\n 900: \"#880e4f\",\n A100: \"#ff80ab\",\n A200: \"#ff4081\",\n A400: \"#f50057\",\n A700: \"#c51162\"\n};\nvar $bd3a0f013ffc105e$export$2e2bcd8739ae039 = $bd3a0f013ffc105e$var$pink;\n\n});\n\nparcelRegister(\"1YKA1\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $170f86d891dbc44b$export$2e2bcd8739ae039; });\nconst $170f86d891dbc44b$var$deepPurple = {\n 50: \"#ede7f6\",\n 100: \"#d1c4e9\",\n 200: \"#b39ddb\",\n 300: \"#9575cd\",\n 400: \"#7e57c2\",\n 500: \"#673ab7\",\n 600: \"#5e35b1\",\n 700: \"#512da8\",\n 800: \"#4527a0\",\n 900: \"#311b92\",\n A100: \"#b388ff\",\n A200: \"#7c4dff\",\n A400: \"#651fff\",\n A700: \"#6200ea\"\n};\nvar $170f86d891dbc44b$export$2e2bcd8739ae039 = $170f86d891dbc44b$var$deepPurple;\n\n});\n\nparcelRegister(\"hpUOc\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $cae0d67dfcbfd89c$export$2e2bcd8739ae039; });\nconst $cae0d67dfcbfd89c$var$indigo = {\n 50: \"#e8eaf6\",\n 100: \"#c5cae9\",\n 200: \"#9fa8da\",\n 300: \"#7986cb\",\n 400: \"#5c6bc0\",\n 500: \"#3f51b5\",\n 600: \"#3949ab\",\n 700: \"#303f9f\",\n 800: \"#283593\",\n 900: \"#1a237e\",\n A100: \"#8c9eff\",\n A200: \"#536dfe\",\n A400: \"#3d5afe\",\n A700: \"#304ffe\"\n};\nvar $cae0d67dfcbfd89c$export$2e2bcd8739ae039 = $cae0d67dfcbfd89c$var$indigo;\n\n});\n\nparcelRegister(\"dl52B\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9b61258ef475f839$export$2e2bcd8739ae039; });\nconst $9b61258ef475f839$var$cyan = {\n 50: \"#e0f7fa\",\n 100: \"#b2ebf2\",\n 200: \"#80deea\",\n 300: \"#4dd0e1\",\n 400: \"#26c6da\",\n 500: \"#00bcd4\",\n 600: \"#00acc1\",\n 700: \"#0097a7\",\n 800: \"#00838f\",\n 900: \"#006064\",\n A100: \"#84ffff\",\n A200: \"#18ffff\",\n A400: \"#00e5ff\",\n A700: \"#00b8d4\"\n};\nvar $9b61258ef475f839$export$2e2bcd8739ae039 = $9b61258ef475f839$var$cyan;\n\n});\n\nparcelRegister(\"7Pmfg\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $5b2e8d455d49ac36$export$2e2bcd8739ae039; });\nconst $5b2e8d455d49ac36$var$teal = {\n 50: \"#e0f2f1\",\n 100: \"#b2dfdb\",\n 200: \"#80cbc4\",\n 300: \"#4db6ac\",\n 400: \"#26a69a\",\n 500: \"#009688\",\n 600: \"#00897b\",\n 700: \"#00796b\",\n 800: \"#00695c\",\n 900: \"#004d40\",\n A100: \"#a7ffeb\",\n A200: \"#64ffda\",\n A400: \"#1de9b6\",\n A700: \"#00bfa5\"\n};\nvar $5b2e8d455d49ac36$export$2e2bcd8739ae039 = $5b2e8d455d49ac36$var$teal;\n\n});\n\nparcelRegister(\"16VSS\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $0cf340949fa0ec51$export$2e2bcd8739ae039; });\nconst $0cf340949fa0ec51$var$lightGreen = {\n 50: \"#f1f8e9\",\n 100: \"#dcedc8\",\n 200: \"#c5e1a5\",\n 300: \"#aed581\",\n 400: \"#9ccc65\",\n 500: \"#8bc34a\",\n 600: \"#7cb342\",\n 700: \"#689f38\",\n 800: \"#558b2f\",\n 900: \"#33691e\",\n A100: \"#ccff90\",\n A200: \"#b2ff59\",\n A400: \"#76ff03\",\n A700: \"#64dd17\"\n};\nvar $0cf340949fa0ec51$export$2e2bcd8739ae039 = $0cf340949fa0ec51$var$lightGreen;\n\n});\n\nparcelRegister(\"hd6af\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c8786ea9df4c5900$export$2e2bcd8739ae039; });\nconst $c8786ea9df4c5900$var$lime = {\n 50: \"#f9fbe7\",\n 100: \"#f0f4c3\",\n 200: \"#e6ee9c\",\n 300: \"#dce775\",\n 400: \"#d4e157\",\n 500: \"#cddc39\",\n 600: \"#c0ca33\",\n 700: \"#afb42b\",\n 800: \"#9e9d24\",\n 900: \"#827717\",\n A100: \"#f4ff81\",\n A200: \"#eeff41\",\n A400: \"#c6ff00\",\n A700: \"#aeea00\"\n};\nvar $c8786ea9df4c5900$export$2e2bcd8739ae039 = $c8786ea9df4c5900$var$lime;\n\n});\n\nparcelRegister(\"hpI6i\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $cad6fae92a8b2f5e$export$2e2bcd8739ae039; });\nconst $cad6fae92a8b2f5e$var$yellow = {\n 50: \"#fffde7\",\n 100: \"#fff9c4\",\n 200: \"#fff59d\",\n 300: \"#fff176\",\n 400: \"#ffee58\",\n 500: \"#ffeb3b\",\n 600: \"#fdd835\",\n 700: \"#fbc02d\",\n 800: \"#f9a825\",\n 900: \"#f57f17\",\n A100: \"#ffff8d\",\n A200: \"#ffff00\",\n A400: \"#ffea00\",\n A700: \"#ffd600\"\n};\nvar $cad6fae92a8b2f5e$export$2e2bcd8739ae039 = $cad6fae92a8b2f5e$var$yellow;\n\n});\n\nparcelRegister(\"j2BR8\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ddcb919f8af9f3d4$export$2e2bcd8739ae039; });\nconst $ddcb919f8af9f3d4$var$amber = {\n 50: \"#fff8e1\",\n 100: \"#ffecb3\",\n 200: \"#ffe082\",\n 300: \"#ffd54f\",\n 400: \"#ffca28\",\n 500: \"#ffc107\",\n 600: \"#ffb300\",\n 700: \"#ffa000\",\n 800: \"#ff8f00\",\n 900: \"#ff6f00\",\n A100: \"#ffe57f\",\n A200: \"#ffd740\",\n A400: \"#ffc400\",\n A700: \"#ffab00\"\n};\nvar $ddcb919f8af9f3d4$export$2e2bcd8739ae039 = $ddcb919f8af9f3d4$var$amber;\n\n});\n\nparcelRegister(\"i0zMe\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $d1c3faa83bee7597$export$2e2bcd8739ae039; });\nconst $d1c3faa83bee7597$var$deepOrange = {\n 50: \"#fbe9e7\",\n 100: \"#ffccbc\",\n 200: \"#ffab91\",\n 300: \"#ff8a65\",\n 400: \"#ff7043\",\n 500: \"#ff5722\",\n 600: \"#f4511e\",\n 700: \"#e64a19\",\n 800: \"#d84315\",\n 900: \"#bf360c\",\n A100: \"#ff9e80\",\n A200: \"#ff6e40\",\n A400: \"#ff3d00\",\n A700: \"#dd2c00\"\n};\nvar $d1c3faa83bee7597$export$2e2bcd8739ae039 = $d1c3faa83bee7597$var$deepOrange;\n\n});\n\nparcelRegister(\"gs1fu\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $bfa03ad691edecab$export$2e2bcd8739ae039; });\nconst $bfa03ad691edecab$var$brown = {\n 50: \"#efebe9\",\n 100: \"#d7ccc8\",\n 200: \"#bcaaa4\",\n 300: \"#a1887f\",\n 400: \"#8d6e63\",\n 500: \"#795548\",\n 600: \"#6d4c41\",\n 700: \"#5d4037\",\n 800: \"#4e342e\",\n 900: \"#3e2723\",\n A100: \"#d7ccc8\",\n A200: \"#bcaaa4\",\n A400: \"#8d6e63\",\n A700: \"#5d4037\"\n};\nvar $bfa03ad691edecab$export$2e2bcd8739ae039 = $bfa03ad691edecab$var$brown;\n\n});\n\nparcelRegister(\"d9jmQ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $992b2396cafaf48b$export$2e2bcd8739ae039; });\nconst $992b2396cafaf48b$var$blueGrey = {\n 50: \"#eceff1\",\n 100: \"#cfd8dc\",\n 200: \"#b0bec5\",\n 300: \"#90a4ae\",\n 400: \"#78909c\",\n 500: \"#607d8b\",\n 600: \"#546e7a\",\n 700: \"#455a64\",\n 800: \"#37474f\",\n 900: \"#263238\",\n A100: \"#cfd8dc\",\n A200: \"#b0bec5\",\n A400: \"#78909c\",\n A700: \"#455a64\"\n};\nvar $992b2396cafaf48b$export$2e2bcd8739ae039 = $992b2396cafaf48b$var$blueGrey;\n\n});\n\n\n\n\n\nparcelRegister(\"7zM2h\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $5841103569e05b41$export$2e2bcd8739ae039; });\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\nvar $gjktY = parcelRequire(\"gjktY\");\n\nvar $8dWxZ = parcelRequire(\"8dWxZ\");\n\nvar $6LrsC = parcelRequire(\"6LrsC\");\n\nvar $71Pr4 = parcelRequire(\"71Pr4\");\n\nvar $2mnfJ = parcelRequire(\"2mnfJ\");\n\nvar $cNmNk = parcelRequire(\"cNmNk\");\n\nvar $duaP9 = parcelRequire(\"duaP9\");\n\nvar $aAAPW = parcelRequire(\"aAAPW\");\n\nvar $54wpe = parcelRequire(\"54wpe\");\n\nvar $fTbhH = parcelRequire(\"fTbhH\");\n\nvar $1bnPO = parcelRequire(\"1bnPO\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nconst $5841103569e05b41$var$_excluded = [\n \"onEnter\",\n \"onExited\"\n], $5841103569e05b41$var$_excluded2 = [\n \"action\",\n \"anchorOrigin\",\n \"autoHideDuration\",\n \"children\",\n \"className\",\n \"ClickAwayListenerProps\",\n \"ContentProps\",\n \"disableWindowBlurListener\",\n \"message\",\n \"onBlur\",\n \"onClose\",\n \"onFocus\",\n \"onMouseEnter\",\n \"onMouseLeave\",\n \"open\",\n \"resumeHideDuration\",\n \"TransitionComponent\",\n \"transitionDuration\",\n \"TransitionProps\"\n];\nconst $5841103569e05b41$var$useUtilityClasses = (ownerState)=>{\n const { classes: classes, anchorOrigin: anchorOrigin } = ownerState;\n const slots = {\n root: [\n \"root\",\n `anchorOrigin${(0, $aAAPW.default)(anchorOrigin.vertical)}${(0, $aAAPW.default)(anchorOrigin.horizontal)}`\n ]\n };\n return (0, $8dWxZ.default)(slots, (0, $1bnPO.getSnackbarUtilityClass), classes);\n};\nconst $5841103569e05b41$var$SnackbarRoot = (0, $71Pr4.default)(\"div\", {\n name: \"MuiSnackbar\",\n slot: \"Root\",\n overridesResolver: (props, styles)=>{\n const { ownerState: ownerState } = props;\n return [\n styles.root,\n styles[`anchorOrigin${(0, $aAAPW.default)(ownerState.anchorOrigin.vertical)}${(0, $aAAPW.default)(ownerState.anchorOrigin.horizontal)}`]\n ];\n }\n})(({ theme: theme, ownerState: ownerState })=>{\n const center = (0, $20MOv.default)({}, !ownerState.isRtl && {\n left: \"50%\",\n right: \"auto\",\n transform: \"translateX(-50%)\"\n }, ownerState.isRtl && {\n right: \"50%\",\n left: \"auto\",\n transform: \"translateX(50%)\"\n });\n return (0, $20MOv.default)({\n zIndex: theme.zIndex.snackbar,\n position: \"fixed\",\n display: \"flex\",\n left: 8,\n right: 8,\n justifyContent: \"center\",\n alignItems: \"center\"\n }, ownerState.anchorOrigin.vertical === \"top\" ? {\n top: 8\n } : {\n bottom: 8\n }, ownerState.anchorOrigin.horizontal === \"left\" && {\n justifyContent: \"flex-start\"\n }, ownerState.anchorOrigin.horizontal === \"right\" && {\n justifyContent: \"flex-end\"\n }, {\n [theme.breakpoints.up(\"sm\")]: (0, $20MOv.default)({}, ownerState.anchorOrigin.vertical === \"top\" ? {\n top: 24\n } : {\n bottom: 24\n }, ownerState.anchorOrigin.horizontal === \"center\" && center, ownerState.anchorOrigin.horizontal === \"left\" && (0, $20MOv.default)({}, !ownerState.isRtl && {\n left: 24,\n right: \"auto\"\n }, ownerState.isRtl && {\n right: 24,\n left: \"auto\"\n }), ownerState.anchorOrigin.horizontal === \"right\" && (0, $20MOv.default)({}, !ownerState.isRtl && {\n right: 24,\n left: \"auto\"\n }, ownerState.isRtl && {\n left: 24,\n right: \"auto\"\n }))\n });\n});\nconst $5841103569e05b41$var$Snackbar = /*#__PURE__*/ $70fFQ.forwardRef(function Snackbar(inProps, ref) {\n const props = (0, $cNmNk.default)({\n props: inProps,\n name: \"MuiSnackbar\"\n });\n const theme = (0, $2mnfJ.default)();\n const defaultTransitionDuration = {\n enter: theme.transitions.duration.enteringScreen,\n exit: theme.transitions.duration.leavingScreen\n };\n const { action: action, anchorOrigin: { vertical: vertical, horizontal: horizontal } = {\n vertical: \"bottom\",\n horizontal: \"left\"\n }, autoHideDuration: autoHideDuration = null, children: children, className: className, ClickAwayListenerProps: ClickAwayListenerProps, ContentProps: ContentProps, disableWindowBlurListener: disableWindowBlurListener = false, message: message, onBlur: onBlur, onClose: onClose, onFocus: onFocus, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, open: open, resumeHideDuration: resumeHideDuration, TransitionComponent: TransitionComponent = (0, $54wpe.default), transitionDuration: transitionDuration = defaultTransitionDuration, TransitionProps: { onEnter: onEnter, onExited: onExited } = {} } = props, TransitionProps = (0, $79yYo.default)(props.TransitionProps, $5841103569e05b41$var$_excluded), other = (0, $79yYo.default)(props, $5841103569e05b41$var$_excluded2);\n const isRtl = theme.direction === \"rtl\";\n const ownerState = (0, $20MOv.default)({}, props, {\n anchorOrigin: {\n vertical: vertical,\n horizontal: horizontal\n },\n isRtl: isRtl\n });\n const classes = $5841103569e05b41$var$useUtilityClasses(ownerState);\n const timerAutoHide = $70fFQ.useRef();\n const [exited, setExited] = $70fFQ.useState(true);\n const handleClose = (0, $duaP9.default)((...args)=>{\n if (onClose) onClose(...args);\n });\n const setAutoHideTimer = (0, $duaP9.default)((autoHideDurationParam)=>{\n if (!onClose || autoHideDurationParam == null) return;\n clearTimeout(timerAutoHide.current);\n timerAutoHide.current = setTimeout(()=>{\n handleClose(null, \"timeout\");\n }, autoHideDurationParam);\n });\n $70fFQ.useEffect(()=>{\n if (open) setAutoHideTimer(autoHideDuration);\n return ()=>{\n clearTimeout(timerAutoHide.current);\n };\n }, [\n open,\n autoHideDuration,\n setAutoHideTimer\n ]); // Pause the timer when the user is interacting with the Snackbar\n // or when the user hide the window.\n const handlePause = ()=>{\n clearTimeout(timerAutoHide.current);\n }; // Restart the timer when the user is no longer interacting with the Snackbar\n // or when the window is shown back.\n const handleResume = $70fFQ.useCallback(()=>{\n if (autoHideDuration != null) setAutoHideTimer(resumeHideDuration != null ? resumeHideDuration : autoHideDuration * 0.5);\n }, [\n autoHideDuration,\n resumeHideDuration,\n setAutoHideTimer\n ]);\n const handleFocus = (event)=>{\n if (onFocus) onFocus(event);\n handlePause();\n };\n const handleMouseEnter = (event)=>{\n if (onMouseEnter) onMouseEnter(event);\n handlePause();\n };\n const handleBlur = (event)=>{\n if (onBlur) onBlur(event);\n handleResume();\n };\n const handleMouseLeave = (event)=>{\n if (onMouseLeave) onMouseLeave(event);\n handleResume();\n };\n const handleClickAway = (event)=>{\n if (onClose) onClose(event, \"clickaway\");\n };\n const handleExited = (node)=>{\n setExited(true);\n if (onExited) onExited(node);\n };\n const handleEnter = (node, isAppearing)=>{\n setExited(false);\n if (onEnter) onEnter(node, isAppearing);\n };\n $70fFQ.useEffect(()=>{\n // TODO: window global should be refactored here\n if (!disableWindowBlurListener && open) {\n window.addEventListener(\"focus\", handleResume);\n window.addEventListener(\"blur\", handlePause);\n return ()=>{\n window.removeEventListener(\"focus\", handleResume);\n window.removeEventListener(\"blur\", handlePause);\n };\n }\n return undefined;\n }, [\n disableWindowBlurListener,\n handleResume,\n open\n ]);\n $70fFQ.useEffect(()=>{\n if (!open) return undefined;\n /**\n * @param {KeyboardEvent} nativeEvent\n */ function handleKeyDown(nativeEvent) {\n if (!nativeEvent.defaultPrevented) {\n // IE11, Edge (prior to using Bink?) use 'Esc'\n if (nativeEvent.key === \"Escape\" || nativeEvent.key === \"Esc\") // not calling `preventDefault` since we don't know if people may ignore this event e.g. a permanently open snackbar\n {\n if (onClose) onClose(nativeEvent, \"escapeKeyDown\");\n }\n }\n }\n document.addEventListener(\"keydown\", handleKeyDown);\n return ()=>{\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [\n exited,\n open,\n onClose\n ]); // So we only render active snackbars.\n if (!open && exited) return null;\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $6LrsC.default), (0, $20MOv.default)({\n onClickAway: handleClickAway\n }, ClickAwayListenerProps, {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)($5841103569e05b41$var$SnackbarRoot, (0, $20MOv.default)({\n className: (0, $gjktY.default)(classes.root, className),\n onBlur: handleBlur,\n onFocus: handleFocus,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n ownerState: ownerState,\n ref: ref // ClickAwayListener adds an `onClick` prop which results in the alert not being announced.\n ,\n role: \"presentation\"\n }, other, {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)(TransitionComponent, (0, $20MOv.default)({\n appear: true,\n in: open,\n timeout: transitionDuration,\n direction: vertical === \"top\" ? \"down\" : \"up\",\n onEnter: handleEnter,\n onExited: handleExited\n }, TransitionProps, {\n children: children || /*#__PURE__*/ (0, $4x3bm.jsx)((0, $fTbhH.default), (0, $20MOv.default)({\n message: message,\n action: action\n }, ContentProps))\n }))\n }))\n }));\n});\nvar $5841103569e05b41$export$2e2bcd8739ae039 = $5841103569e05b41$var$Snackbar;\n\n});\nparcelRegister(\"gjktY\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $bdfe4f154ca8ef7d$export$2e2bcd8739ae039; });\nfunction $bdfe4f154ca8ef7d$var$toVal(mix) {\n var k, y, str = \"\";\n if (typeof mix === \"string\" || typeof mix === \"number\") str += mix;\n else if (typeof mix === \"object\") {\n if (Array.isArray(mix)) for(k = 0; k < mix.length; k++){\n if (mix[k]) {\n if (y = $bdfe4f154ca8ef7d$var$toVal(mix[k])) {\n str && (str += \" \");\n str += y;\n }\n }\n }\n else {\n for(k in mix)if (mix[k]) {\n str && (str += \" \");\n str += k;\n }\n }\n }\n return str;\n}\nfunction $bdfe4f154ca8ef7d$export$2e2bcd8739ae039() {\n var i = 0, tmp, x, str = \"\";\n while(i < arguments.length){\n if (tmp = arguments[i++]) {\n if (x = $bdfe4f154ca8ef7d$var$toVal(tmp)) {\n str && (str += \" \");\n str += x;\n }\n }\n }\n return str;\n}\n\n});\n\nparcelRegister(\"8dWxZ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $5fccf3e7863e4fd1$export$2e2bcd8739ae039; });\nfunction $5fccf3e7863e4fd1$export$2e2bcd8739ae039(slots, getUtilityClass, classes) {\n const output = {};\n Object.keys(slots).forEach(// @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n (slot)=>{\n output[slot] = slots[slot].reduce((acc, key)=>{\n if (key) {\n if (classes && classes[key]) acc.push(classes[key]);\n acc.push(getUtilityClass(key));\n }\n return acc;\n }, []).join(\" \");\n });\n return output;\n}\n\n});\n\nparcelRegister(\"6LrsC\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $4ecc6ef49a2f625b$export$2e2bcd8739ae039; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\nvar $iMBVa = parcelRequire(\"iMBVa\");\nvar $3Fato = parcelRequire(\"3Fato\");\nvar $4Rshd = parcelRequire(\"4Rshd\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nfunction $4ecc6ef49a2f625b$var$mapEventPropToEvent(eventProp) {\n return eventProp.substring(2).toLowerCase();\n}\nfunction $4ecc6ef49a2f625b$var$clickedRootScrollbar(event, doc) {\n return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click Away Listener](https://mui.com/components/click-away-listener/)\n * - [Menus](https://mui.com/components/menus/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/api/click-away-listener/)\n */ function $4ecc6ef49a2f625b$var$ClickAwayListener(props) {\n const { children: children, disableReactTree: disableReactTree = false, mouseEvent: mouseEvent = \"onClick\", onClickAway: onClickAway, touchEvent: touchEvent = \"onTouchEnd\" } = props;\n const movedRef = $70fFQ.useRef(false);\n const nodeRef = $70fFQ.useRef(null);\n const activatedRef = $70fFQ.useRef(false);\n const syntheticEventRef = $70fFQ.useRef(false);\n $70fFQ.useEffect(()=>{\n // Ensure that this component is not \"activated\" synchronously.\n // https://github.com/facebook/react/issues/20074\n setTimeout(()=>{\n activatedRef.current = true;\n }, 0);\n return ()=>{\n activatedRef.current = false;\n };\n }, []);\n const handleRef = (0, $4Rshd.default)(children.ref, nodeRef); // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviors like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n const handleClickAway = (0, $3Fato.default)((event)=>{\n // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n const insideReactTree = syntheticEventRef.current;\n syntheticEventRef.current = false;\n const doc = (0, $iMBVa.default)(nodeRef.current); // 1. IE11 support, which trigger the handleClickAway even after the unbind\n // 2. The child might render null.\n // 3. Behave like a blur listener.\n if (!activatedRef.current || !nodeRef.current || \"clientX\" in event && $4ecc6ef49a2f625b$var$clickedRootScrollbar(event, doc)) return;\n // Do not act if user performed touchmove\n if (movedRef.current) {\n movedRef.current = false;\n return;\n }\n let insideDOM; // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n if (event.composedPath) insideDOM = event.composedPath().indexOf(nodeRef.current) > -1;\n else insideDOM = !doc.documentElement.contains(event.target) || nodeRef.current.contains(event.target);\n if (!insideDOM && (disableReactTree || !insideReactTree)) onClickAway(event);\n }); // Keep track of mouse/touch events that bubbled up through the portal.\n const createHandleSynthetic = (handlerName)=>(event)=>{\n syntheticEventRef.current = true;\n const childrenPropsHandler = children.props[handlerName];\n if (childrenPropsHandler) childrenPropsHandler(event);\n };\n const childrenProps = {\n ref: handleRef\n };\n if (touchEvent !== false) childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n $70fFQ.useEffect(()=>{\n if (touchEvent !== false) {\n const mappedTouchEvent = $4ecc6ef49a2f625b$var$mapEventPropToEvent(touchEvent);\n const doc = (0, $iMBVa.default)(nodeRef.current);\n const handleTouchMove = ()=>{\n movedRef.current = true;\n };\n doc.addEventListener(mappedTouchEvent, handleClickAway);\n doc.addEventListener(\"touchmove\", handleTouchMove);\n return ()=>{\n doc.removeEventListener(mappedTouchEvent, handleClickAway);\n doc.removeEventListener(\"touchmove\", handleTouchMove);\n };\n }\n return undefined;\n }, [\n handleClickAway,\n touchEvent\n ]);\n if (mouseEvent !== false) childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n $70fFQ.useEffect(()=>{\n if (mouseEvent !== false) {\n const mappedMouseEvent = $4ecc6ef49a2f625b$var$mapEventPropToEvent(mouseEvent);\n const doc = (0, $iMBVa.default)(nodeRef.current);\n doc.addEventListener(mappedMouseEvent, handleClickAway);\n return ()=>{\n doc.removeEventListener(mappedMouseEvent, handleClickAway);\n };\n }\n return undefined;\n }, [\n handleClickAway,\n mouseEvent\n ]);\n return /*#__PURE__*/ (0, $4x3bm.jsx)($70fFQ.Fragment, {\n children: /*#__PURE__*/ $70fFQ.cloneElement(children, childrenProps)\n });\n}\nvar $4ecc6ef49a2f625b$export$2e2bcd8739ae039 = $4ecc6ef49a2f625b$var$ClickAwayListener;\n\n});\nparcelRegister(\"iMBVa\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $daca2002b98a27df$export$2e2bcd8739ae039; });\nfunction $daca2002b98a27df$export$2e2bcd8739ae039(node) {\n return node && node.ownerDocument || document;\n}\n\n});\n\nparcelRegister(\"3Fato\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $2aad532a0a761544$export$2e2bcd8739ae039; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $qEgbK = parcelRequire(\"qEgbK\");\nfunction $2aad532a0a761544$export$2e2bcd8739ae039(fn) {\n const ref = $70fFQ.useRef(fn);\n (0, $qEgbK.default)(()=>{\n ref.current = fn;\n });\n return $70fFQ.useCallback((...args)=>// tslint:disable-next-line:ban-comma-operator\n (0, ref.current)(...args), []);\n}\n\n});\nparcelRegister(\"qEgbK\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $0501a8a415b03ebe$export$2e2bcd8739ae039; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\nconst $0501a8a415b03ebe$var$useEnhancedEffect = typeof window !== \"undefined\" ? $70fFQ.useLayoutEffect : $70fFQ.useEffect;\nvar $0501a8a415b03ebe$export$2e2bcd8739ae039 = $0501a8a415b03ebe$var$useEnhancedEffect;\n\n});\n\n\nparcelRegister(\"4Rshd\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $38a20bd12982da9e$export$2e2bcd8739ae039; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $eSJYK = parcelRequire(\"eSJYK\");\nfunction $38a20bd12982da9e$export$2e2bcd8739ae039(refA, refB) {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */ return $70fFQ.useMemo(()=>{\n if (refA == null && refB == null) return null;\n return (refValue)=>{\n (0, $eSJYK.default)(refA, refValue);\n (0, $eSJYK.default)(refB, refValue);\n };\n }, [\n refA,\n refB\n ]);\n}\n\n});\nparcelRegister(\"eSJYK\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ad59c641d95a91b2$export$2e2bcd8739ae039; });\n/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */ function $ad59c641d95a91b2$export$2e2bcd8739ae039(ref, value) {\n if (typeof ref === \"function\") ref(value);\n else if (ref) ref.current = value;\n}\n\n});\n\n\n\nparcelRegister(\"71Pr4\", function(module, exports) {\n\n$parcel$export(module.exports, \"rootShouldForwardProp\", function () { return $51e08670a2a83030$export$effb20ecdbf4d6aa; });\n$parcel$export(module.exports, \"slotShouldForwardProp\", function () { return $51e08670a2a83030$export$f10c5a10d27438e5; });\n$parcel$export(module.exports, \"default\", function () { return $51e08670a2a83030$export$2e2bcd8739ae039; });\n\nvar $X2XUj = parcelRequire(\"X2XUj\");\n\nvar $7Rxn3 = parcelRequire(\"7Rxn3\");\nconst $51e08670a2a83030$export$effb20ecdbf4d6aa = (prop)=>(0, $X2XUj.shouldForwardProp)(prop) && prop !== \"classes\";\nconst $51e08670a2a83030$export$f10c5a10d27438e5 = (0, $X2XUj.shouldForwardProp);\nconst $51e08670a2a83030$var$styled = (0, $X2XUj.default)({\n defaultTheme: $7Rxn3.default,\n rootShouldForwardProp: $51e08670a2a83030$export$effb20ecdbf4d6aa\n});\nvar $51e08670a2a83030$export$2e2bcd8739ae039 = $51e08670a2a83030$var$styled;\n\n});\nparcelRegister(\"X2XUj\", function(module, exports) {\n\n$parcel$export(module.exports, \"shouldForwardProp\", function () { return $0b17cfa38c1b3ae4$export$3ba67b570e26eea0; });\n$parcel$export(module.exports, \"default\", function () { return $0b17cfa38c1b3ae4$export$2e2bcd8739ae039; });\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $iGWDe = parcelRequire(\"iGWDe\");\n\n\nvar $ketPc = parcelRequire(\"ketPc\");\n\nvar $4MfEP = parcelRequire(\"4MfEP\");\n\nvar $5CMDM = parcelRequire(\"5CMDM\");\nconst $0b17cfa38c1b3ae4$var$_excluded = [\n \"name\",\n \"slot\",\n \"skipVariantsResolver\",\n \"skipSx\",\n \"overridesResolver\"\n], $0b17cfa38c1b3ae4$var$_excluded2 = [\n \"theme\"\n], $0b17cfa38c1b3ae4$var$_excluded3 = [\n \"theme\"\n];\nfunction $0b17cfa38c1b3ae4$var$isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nconst $0b17cfa38c1b3ae4$var$getStyleOverrides = (name, theme)=>{\n if (theme.components && theme.components[name] && theme.components[name].styleOverrides) return theme.components[name].styleOverrides;\n return null;\n};\nconst $0b17cfa38c1b3ae4$var$getVariantStyles = (name, theme)=>{\n let variants = [];\n if (theme && theme.components && theme.components[name] && theme.components[name].variants) variants = theme.components[name].variants;\n const variantsStyles = {};\n variants.forEach((definition)=>{\n const key = (0, $4MfEP.default)(definition.props);\n variantsStyles[key] = definition.style;\n });\n return variantsStyles;\n};\nconst $0b17cfa38c1b3ae4$var$variantsResolver = (props, styles, theme, name)=>{\n var _theme$components, _theme$components$nam;\n const { ownerState: ownerState = {} } = props;\n const variantsStyles = [];\n const themeVariants = theme == null ? void 0 : (_theme$components = theme.components) == null ? void 0 : (_theme$components$nam = _theme$components[name]) == null ? void 0 : _theme$components$nam.variants;\n if (themeVariants) themeVariants.forEach((themeVariant)=>{\n let isMatch = true;\n Object.keys(themeVariant.props).forEach((key)=>{\n if (ownerState[key] !== themeVariant.props[key] && props[key] !== themeVariant.props[key]) isMatch = false;\n });\n if (isMatch) variantsStyles.push(styles[(0, $4MfEP.default)(themeVariant.props)]);\n });\n return variantsStyles;\n}; // Update /system/styled/#api in case if this changes\nfunction $0b17cfa38c1b3ae4$export$3ba67b570e26eea0(prop) {\n return prop !== \"ownerState\" && prop !== \"theme\" && prop !== \"sx\" && prop !== \"as\";\n}\nconst $0b17cfa38c1b3ae4$export$35e57303dbd8a66 = (0, $ketPc.default)();\nconst $0b17cfa38c1b3ae4$var$lowercaseFirstLetter = (string)=>{\n return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction $0b17cfa38c1b3ae4$export$2e2bcd8739ae039(input = {}) {\n const { defaultTheme: defaultTheme = $0b17cfa38c1b3ae4$export$35e57303dbd8a66, rootShouldForwardProp: rootShouldForwardProp = $0b17cfa38c1b3ae4$export$3ba67b570e26eea0, slotShouldForwardProp: slotShouldForwardProp = $0b17cfa38c1b3ae4$export$3ba67b570e26eea0, styleFunctionSx: styleFunctionSx = (0, $5CMDM.default) } = input;\n return (tag, inputOptions = {})=>{\n const { name: componentName, slot: componentSlot, skipVariantsResolver: inputSkipVariantsResolver, skipSx: inputSkipSx, overridesResolver: overridesResolver } = inputOptions, options = (0, $79yYo.default)(inputOptions, $0b17cfa38c1b3ae4$var$_excluded); // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver : componentSlot && componentSlot !== \"Root\" || false;\n const skipSx = inputSkipSx || false;\n let label;\n let shouldForwardPropOption = $0b17cfa38c1b3ae4$export$3ba67b570e26eea0;\n if (componentSlot === \"Root\") shouldForwardPropOption = rootShouldForwardProp;\n else if (componentSlot) // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n const defaultStyledResolver = (0, $iGWDe.default)(tag, (0, $20MOv.default)({\n shouldForwardProp: shouldForwardPropOption,\n label: label\n }, options));\n const muiStyledResolver = (styleArg, ...expressions)=>{\n const expressionsWithDefaultTheme = expressions ? expressions.map((stylesArg)=>{\n // On the server emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n // eslint-disable-next-line no-underscore-dangle\n return typeof stylesArg === \"function\" && stylesArg.__emotion_real !== stylesArg ? (_ref)=>{\n let { theme: themeInput } = _ref, other = (0, $79yYo.default)(_ref, $0b17cfa38c1b3ae4$var$_excluded2);\n return stylesArg((0, $20MOv.default)({\n theme: $0b17cfa38c1b3ae4$var$isEmpty(themeInput) ? defaultTheme : themeInput\n }, other));\n } : stylesArg;\n }) : [];\n let transformedStyleArg = styleArg;\n if (componentName && overridesResolver) expressionsWithDefaultTheme.push((props)=>{\n const theme = $0b17cfa38c1b3ae4$var$isEmpty(props.theme) ? defaultTheme : props.theme;\n const styleOverrides = $0b17cfa38c1b3ae4$var$getStyleOverrides(componentName, theme);\n if (styleOverrides) {\n const resolvedStyleOverrides = {};\n Object.entries(styleOverrides).forEach(([slotKey, slotStyle])=>{\n resolvedStyleOverrides[slotKey] = typeof slotStyle === \"function\" ? slotStyle(props) : slotStyle;\n });\n return overridesResolver(props, resolvedStyleOverrides);\n }\n return null;\n });\n if (componentName && !skipVariantsResolver) expressionsWithDefaultTheme.push((props)=>{\n const theme = $0b17cfa38c1b3ae4$var$isEmpty(props.theme) ? defaultTheme : props.theme;\n return $0b17cfa38c1b3ae4$var$variantsResolver(props, $0b17cfa38c1b3ae4$var$getVariantStyles(componentName, theme), theme, componentName);\n });\n if (!skipSx) expressionsWithDefaultTheme.push((props)=>{\n const theme = $0b17cfa38c1b3ae4$var$isEmpty(props.theme) ? defaultTheme : props.theme;\n return styleFunctionSx((0, $20MOv.default)({}, props, {\n theme: theme\n }));\n });\n const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n const placeholders = new Array(numOfCustomFnsApplied).fill(\"\"); // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n transformedStyleArg = [\n ...styleArg,\n ...placeholders\n ];\n transformedStyleArg.raw = [\n ...styleArg.raw,\n ...placeholders\n ];\n } else if (typeof styleArg === \"function\" && // On the server emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n // eslint-disable-next-line no-underscore-dangle\n styleArg.__emotion_real !== styleArg) // If the type is function, we need to define the default theme.\n transformedStyleArg = (_ref2)=>{\n let { theme: themeInput } = _ref2, other = (0, $79yYo.default)(_ref2, $0b17cfa38c1b3ae4$var$_excluded3);\n return styleArg((0, $20MOv.default)({\n theme: $0b17cfa38c1b3ae4$var$isEmpty(themeInput) ? defaultTheme : themeInput\n }, other));\n };\n const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n return Component;\n };\n if (defaultStyledResolver.withConfig) muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n return muiStyledResolver;\n };\n}\n\n});\nparcelRegister(\"iGWDe\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $d9b9a14886b55763$export$2e2bcd8739ae039; });\n/** @license MUI v5.5.2\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */ \nvar $2ptPP = parcelRequire(\"2ptPP\");\n\nvar $l1z3A = parcelRequire(\"l1z3A\");\nvar $e5Z97 = parcelRequire(\"e5Z97\");\n\nvar $lM6lR = parcelRequire(\"lM6lR\");\n\nvar $lpQxs = parcelRequire(\"lpQxs\");\nfunction $d9b9a14886b55763$export$2e2bcd8739ae039(tag, options) {\n const stylesFactory = (0, $2ptPP.default)(tag, options);\n var styles, style;\n return stylesFactory;\n}\n\n});\nparcelRegister(\"2ptPP\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $1c150f2cead177ea$export$2e2bcd8739ae039; });\nparcelRequire(\"2i5nE\");\nparcelRequire(\"70fFQ\");\nparcelRequire(\"2YPJB\");\n\nvar $3iac0 = parcelRequire(\"3iac0\");\n\nparcelRequire(\"jJpXM\");\nparcelRequire(\"asszK\");\nvar $1c150f2cead177ea$var$tags = [\n \"a\",\n \"abbr\",\n \"address\",\n \"area\",\n \"article\",\n \"aside\",\n \"audio\",\n \"b\",\n \"base\",\n \"bdi\",\n \"bdo\",\n \"big\",\n \"blockquote\",\n \"body\",\n \"br\",\n \"button\",\n \"canvas\",\n \"caption\",\n \"cite\",\n \"code\",\n \"col\",\n \"colgroup\",\n \"data\",\n \"datalist\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"dialog\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"embed\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"head\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"html\",\n \"i\",\n \"iframe\",\n \"img\",\n \"input\",\n \"ins\",\n \"kbd\",\n \"keygen\",\n \"label\",\n \"legend\",\n \"li\",\n \"link\",\n \"main\",\n \"map\",\n \"mark\",\n \"marquee\",\n \"menu\",\n \"menuitem\",\n \"meta\",\n \"meter\",\n \"nav\",\n \"noscript\",\n \"object\",\n \"ol\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"p\",\n \"param\",\n \"picture\",\n \"pre\",\n \"progress\",\n \"q\",\n \"rp\",\n \"rt\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"script\",\n \"section\",\n \"select\",\n \"small\",\n \"source\",\n \"span\",\n \"strong\",\n \"style\",\n \"sub\",\n \"summary\",\n \"sup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"textarea\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"title\",\n \"tr\",\n \"track\",\n \"u\",\n \"ul\",\n \"var\",\n \"video\",\n \"wbr\",\n \"circle\",\n \"clipPath\",\n \"defs\",\n \"ellipse\",\n \"foreignObject\",\n \"g\",\n \"image\",\n \"line\",\n \"linearGradient\",\n \"mask\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"radialGradient\",\n \"rect\",\n \"stop\",\n \"svg\",\n \"text\",\n \"tspan\"\n];\nvar $1c150f2cead177ea$var$newStyled = (0, $3iac0.default).bind();\n$1c150f2cead177ea$var$tags.forEach(function(tagName) {\n // $FlowFixMe: we can ignore this because its exposed type is defined by the CreateStyled type\n $1c150f2cead177ea$var$newStyled[tagName] = $1c150f2cead177ea$var$newStyled(tagName);\n});\nvar $1c150f2cead177ea$export$2e2bcd8739ae039 = $1c150f2cead177ea$var$newStyled;\n\n});\nparcelRegister(\"2YPJB\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $22b950c0141a4b00$export$2e2bcd8739ae039; });\n\nvar $fWAyu = parcelRequire(\"fWAyu\");\nvar $22b950c0141a4b00$var$reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\nvar $22b950c0141a4b00$var$isPropValid = /* #__PURE__ */ (0, $fWAyu.default)(function(prop) {\n return $22b950c0141a4b00$var$reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91;\n});\nvar $22b950c0141a4b00$export$2e2bcd8739ae039 = $22b950c0141a4b00$var$isPropValid;\n\n});\n\nparcelRegister(\"3iac0\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $265af59acc099ace$export$2e2bcd8739ae039; });\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $2YPJB = parcelRequire(\"2YPJB\");\nparcelRequire(\"l1z3A\");\nvar $e5Z97 = parcelRequire(\"e5Z97\");\n\nvar $jJpXM = parcelRequire(\"jJpXM\");\n\nvar $asszK = parcelRequire(\"asszK\");\nvar $265af59acc099ace$var$testOmitPropsOnStringTag = (0, $2YPJB.default);\nvar $265af59acc099ace$var$testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n return key !== \"theme\";\n};\nvar $265af59acc099ace$var$getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n return typeof tag === \"string\" && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? $265af59acc099ace$var$testOmitPropsOnStringTag : $265af59acc099ace$var$testOmitPropsOnComponent;\n};\nvar $265af59acc099ace$var$composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n var shouldForwardProp;\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function(propName) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n if (typeof shouldForwardProp !== \"function\" && isReal) shouldForwardProp = tag.__emotion_forwardProp;\n return shouldForwardProp;\n};\nvar $265af59acc099ace$var$useInsertionEffect = $70fFQ.useInsertionEffect ? $70fFQ.useInsertionEffect : function useInsertionEffect(create) {\n create();\n};\nfunction $265af59acc099ace$var$useInsertionEffectMaybe(create) {\n $265af59acc099ace$var$useInsertionEffect(create);\n}\nvar $265af59acc099ace$var$ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar $265af59acc099ace$var$Insertion = function Insertion(_ref) {\n var cache = _ref.cache, serialized = _ref.serialized, isStringTag = _ref.isStringTag;\n (0, $jJpXM.registerStyles)(cache, serialized, isStringTag);\n var rules = $265af59acc099ace$var$useInsertionEffectMaybe(function() {\n return (0, $jJpXM.insertStyles)(cache, serialized, isStringTag);\n });\n return null;\n};\nvar $265af59acc099ace$var$createStyled = function createStyled(tag, options) {\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n var shouldForwardProp = $265af59acc099ace$var$composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || $265af59acc099ace$var$getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp(\"as\");\n return function() {\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n if (identifierName !== undefined) styles.push(\"label:\" + identifierName + \";\");\n if (args[0] == null || args[0].raw === undefined) styles.push.apply(styles, args);\n else {\n styles.push(args[0][0]);\n var len = args.length;\n var i = 1;\n for(; i < len; i++)styles.push(args[i], args[0][i]);\n } // $FlowFixMe: we need to cast StatelessFunctionalComponent to our PrivateStyledComponent class\n var Styled = (0, $e5Z97.w)(function(props, cache, ref) {\n var FinalTag = shouldUseAs && props.as || baseTag;\n var className = \"\";\n var classInterpolations = [];\n var mergedProps = props;\n if (props.theme == null) {\n mergedProps = {};\n for(var key in props)mergedProps[key] = props[key];\n mergedProps.theme = (0, $70fFQ.useContext)((0, $e5Z97.T));\n }\n if (typeof props.className === \"string\") className = (0, $jJpXM.getRegisteredStyles)(cache.registered, classInterpolations, props.className);\n else if (props.className != null) className = props.className + \" \";\n var serialized = (0, $asszK.serializeStyles)(styles.concat(classInterpolations), cache.registered, mergedProps);\n className += cache.key + \"-\" + serialized.name;\n if (targetClassName !== undefined) className += \" \" + targetClassName;\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? $265af59acc099ace$var$getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n var newProps = {};\n for(var _key in props){\n if (shouldUseAs && _key === \"as\") continue;\n if (finalShouldForwardProp(_key)) newProps[_key] = props[_key];\n }\n newProps.className = className;\n newProps.ref = ref;\n return /*#__PURE__*/ (0, $70fFQ.createElement)((0, $70fFQ.Fragment), null, /*#__PURE__*/ (0, $70fFQ.createElement)($265af59acc099ace$var$Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof FinalTag === \"string\"\n }), /*#__PURE__*/ (0, $70fFQ.createElement)(FinalTag, newProps));\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === \"string\" ? baseTag : baseTag.displayName || baseTag.name || \"Component\") + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, \"toString\", {\n value: function value() {\n return \".\" + targetClassName;\n }\n });\n Styled.withComponent = function(nextTag, nextOptions) {\n return createStyled(nextTag, (0, $20MOv.default)({}, options, nextOptions, {\n shouldForwardProp: $265af59acc099ace$var$composeShouldForwardProps(Styled, nextOptions, true)\n })).apply(void 0, styles);\n };\n return Styled;\n };\n};\nvar $265af59acc099ace$export$2e2bcd8739ae039 = $265af59acc099ace$var$createStyled;\n\n});\n\n\nparcelRegister(\"lpQxs\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $f974afd82160e271$export$2e2bcd8739ae039; });\nparcelRequire(\"70fFQ\");\n\n\nvar $l1z3A = parcelRequire(\"l1z3A\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nfunction $f974afd82160e271$var$isEmpty(obj) {\n return obj === undefined || obj === null || Object.keys(obj).length === 0;\n}\nfunction $f974afd82160e271$export$2e2bcd8739ae039(props) {\n const { styles: styles, defaultTheme: defaultTheme = {} } = props;\n const globalStyles = typeof styles === \"function\" ? (themeInput)=>styles($f974afd82160e271$var$isEmpty(themeInput) ? defaultTheme : themeInput) : styles;\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $l1z3A.Global), {\n styles: globalStyles\n });\n}\n\n});\n\n\nparcelRegister(\"4MfEP\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $37a7ca5daa74389e$export$2e2bcd8739ae039; });\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $9vGQi = parcelRequire(\"9vGQi\");\nconst $37a7ca5daa74389e$var$_excluded = [\n \"variant\"\n];\nfunction $37a7ca5daa74389e$var$isEmpty(string) {\n return string.length === 0;\n}\nfunction $37a7ca5daa74389e$export$2e2bcd8739ae039(props) {\n const { variant: variant } = props, other = (0, $79yYo.default)(props, $37a7ca5daa74389e$var$_excluded);\n let classKey = variant || \"\";\n Object.keys(other).sort().forEach((key)=>{\n if (key === \"color\") classKey += $37a7ca5daa74389e$var$isEmpty(classKey) ? props[key] : (0, $9vGQi.default)(props[key]);\n else classKey += `${$37a7ca5daa74389e$var$isEmpty(classKey) ? key : (0, $9vGQi.default)(key)}${(0, $9vGQi.default)(props[key].toString())}`;\n });\n return classKey;\n}\n\n});\n\nparcelRegister(\"5CMDM\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $41863b62c58fb8f2$export$2e2bcd8739ae039; });\n\nvar $bs0XL = parcelRequire(\"bs0XL\");\n\nvar $eiC3N = parcelRequire(\"eiC3N\");\n\nvar $bXmqm = parcelRequire(\"bXmqm\");\nfunction $41863b62c58fb8f2$var$objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object)=>keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every((object)=>union.size === Object.keys(object).length);\n}\nfunction $41863b62c58fb8f2$var$callIfFn(maybeFn, arg) {\n return typeof maybeFn === \"function\" ? maybeFn(arg) : maybeFn;\n} // eslint-disable-next-line @typescript-eslint/naming-convention\nfunction $41863b62c58fb8f2$export$7d53d8bf2911e013(styleFunctionMapping = (0, $eiC3N.styleFunctionMapping)) {\n const propToStyleFunction = Object.keys(styleFunctionMapping).reduce((acc, styleFnName)=>{\n styleFunctionMapping[styleFnName].filterProps.forEach((propName)=>{\n acc[propName] = styleFunctionMapping[styleFnName];\n });\n return acc;\n }, {});\n function getThemeValue(prop, value, theme) {\n const inputProps = {\n [prop]: value,\n theme: theme\n };\n const styleFunction = propToStyleFunction[prop];\n return styleFunction ? styleFunction(inputProps) : {\n [prop]: value\n };\n }\n function styleFunctionSx(props) {\n const { sx: sx, theme: theme = {} } = props || {};\n if (!sx) return null; // emotion & styled-components will neglect null\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */ function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === \"function\") sxObject = sxInput(theme);\n else if (typeof sxInput !== \"object\") // value\n return sxInput;\n if (!sxObject) return null;\n const emptyBreakpoints = (0, $bXmqm.createEmptyBreakpointObject)(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach((styleKey)=>{\n const value = $41863b62c58fb8f2$var$callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === \"object\") {\n if (propToStyleFunction[styleKey]) css = (0, $bs0XL.default)(css, getThemeValue(styleKey, value, theme));\n else {\n const breakpointsValues = (0, $bXmqm.handleBreakpoints)({\n theme: theme\n }, value, (x)=>({\n [styleKey]: x\n }));\n if ($41863b62c58fb8f2$var$objectsHaveSameKeys(breakpointsValues, value)) css[styleKey] = styleFunctionSx({\n sx: value,\n theme: theme\n });\n else css = (0, $bs0XL.default)(css, breakpointsValues);\n }\n } else css = (0, $bs0XL.default)(css, getThemeValue(styleKey, value, theme));\n }\n });\n return (0, $bXmqm.removeUnusedBreakpoints)(breakpointsKeys, css);\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst $41863b62c58fb8f2$var$styleFunctionSx = $41863b62c58fb8f2$export$7d53d8bf2911e013();\n$41863b62c58fb8f2$var$styleFunctionSx.filterProps = [\n \"sx\"\n];\nvar $41863b62c58fb8f2$export$2e2bcd8739ae039 = $41863b62c58fb8f2$var$styleFunctionSx;\n\n});\nparcelRegister(\"eiC3N\", function(module, exports) {\n\n$parcel$export(module.exports, \"styleFunctionMapping\", function () { return $a690451f7002e152$export$40acc74e51be579a; });\n$parcel$export(module.exports, \"propToStyleFunction\", function () { return $a690451f7002e152$export$2ec640062268c7c4; });\n\nvar $97tH1 = parcelRequire(\"97tH1\");\n\nvar $ik28E = parcelRequire(\"ik28E\");\n\nvar $iODQ9 = parcelRequire(\"iODQ9\");\n\nvar $1qnM1 = parcelRequire(\"1qnM1\");\n\nvar $fJcR6 = parcelRequire(\"fJcR6\");\n\nvar $8zwD3 = parcelRequire(\"8zwD3\");\n\nvar $4pbgV = parcelRequire(\"4pbgV\");\n\nvar $28fpZ = parcelRequire(\"28fpZ\");\n\nvar $eHQ84 = parcelRequire(\"eHQ84\");\n\nvar $YcRIZ = parcelRequire(\"YcRIZ\");\nconst $a690451f7002e152$var$filterPropsMapping = {\n borders: (0, $97tH1.default).filterProps,\n display: (0, $ik28E.default).filterProps,\n flexbox: (0, $iODQ9.default).filterProps,\n grid: (0, $1qnM1.default).filterProps,\n positions: (0, $fJcR6.default).filterProps,\n palette: (0, $8zwD3.default).filterProps,\n shadows: (0, $4pbgV.default).filterProps,\n sizing: (0, $28fpZ.default).filterProps,\n spacing: (0, $eHQ84.default).filterProps,\n typography: (0, $YcRIZ.default).filterProps\n};\nconst $a690451f7002e152$export$40acc74e51be579a = {\n borders: $97tH1.default,\n display: $ik28E.default,\n flexbox: $iODQ9.default,\n grid: $1qnM1.default,\n positions: $fJcR6.default,\n palette: $8zwD3.default,\n shadows: $4pbgV.default,\n sizing: $28fpZ.default,\n spacing: $eHQ84.default,\n typography: $YcRIZ.default\n};\nconst $a690451f7002e152$export$2ec640062268c7c4 = Object.keys($a690451f7002e152$var$filterPropsMapping).reduce((acc, styleFnName)=>{\n $a690451f7002e152$var$filterPropsMapping[styleFnName].forEach((propName)=>{\n acc[propName] = $a690451f7002e152$export$40acc74e51be579a[styleFnName];\n });\n return acc;\n}, {});\nfunction $a690451f7002e152$var$getThemeValue(prop, value, theme) {\n const inputProps = {\n [prop]: value,\n theme: theme\n };\n const styleFunction = $a690451f7002e152$export$2ec640062268c7c4[prop];\n return styleFunction ? styleFunction(inputProps) : {\n [prop]: value\n };\n}\nvar $a690451f7002e152$export$2e2bcd8739ae039 = $a690451f7002e152$var$getThemeValue;\n\n});\nparcelRegister(\"97tH1\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6a3bcce8c57e9eef$export$2e2bcd8739ae039; });\n\n\nvar $1sJkf = parcelRequire(\"1sJkf\");\n\nvar $aia9M = parcelRequire(\"aia9M\");\n\nvar $eHQ84 = parcelRequire(\"eHQ84\");\n\nvar $bXmqm = parcelRequire(\"bXmqm\");\nfunction $6a3bcce8c57e9eef$var$getBorder(value) {\n if (typeof value !== \"number\") return value;\n return `${value}px solid`;\n}\nconst $6a3bcce8c57e9eef$export$1edee58a52776cd9 = (0, $1sJkf.default)({\n prop: \"border\",\n themeKey: \"borders\",\n transform: $6a3bcce8c57e9eef$var$getBorder\n});\nconst $6a3bcce8c57e9eef$export$f9a7b6bd24892946 = (0, $1sJkf.default)({\n prop: \"borderTop\",\n themeKey: \"borders\",\n transform: $6a3bcce8c57e9eef$var$getBorder\n});\nconst $6a3bcce8c57e9eef$export$5abca33e6be905d2 = (0, $1sJkf.default)({\n prop: \"borderRight\",\n themeKey: \"borders\",\n transform: $6a3bcce8c57e9eef$var$getBorder\n});\nconst $6a3bcce8c57e9eef$export$e2ce9f12a980a822 = (0, $1sJkf.default)({\n prop: \"borderBottom\",\n themeKey: \"borders\",\n transform: $6a3bcce8c57e9eef$var$getBorder\n});\nconst $6a3bcce8c57e9eef$export$47658cca1a909427 = (0, $1sJkf.default)({\n prop: \"borderLeft\",\n themeKey: \"borders\",\n transform: $6a3bcce8c57e9eef$var$getBorder\n});\nconst $6a3bcce8c57e9eef$export$e7fb0694ba2404fc = (0, $1sJkf.default)({\n prop: \"borderColor\",\n themeKey: \"palette\"\n});\nconst $6a3bcce8c57e9eef$export$126a92c968acdb85 = (0, $1sJkf.default)({\n prop: \"borderTopColor\",\n themeKey: \"palette\"\n});\nconst $6a3bcce8c57e9eef$export$85cc51cb8fbb8c0e = (0, $1sJkf.default)({\n prop: \"borderRightColor\",\n themeKey: \"palette\"\n});\nconst $6a3bcce8c57e9eef$export$340b0327727f6d1a = (0, $1sJkf.default)({\n prop: \"borderBottomColor\",\n themeKey: \"palette\"\n});\nconst $6a3bcce8c57e9eef$export$60beef91a985b4bf = (0, $1sJkf.default)({\n prop: \"borderLeftColor\",\n themeKey: \"palette\"\n});\nconst $6a3bcce8c57e9eef$export$7a57f79000377ca2 = (props)=>{\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = (0, $eHQ84.createUnaryUnit)(props.theme, \"shape.borderRadius\", 4, \"borderRadius\");\n const styleFromPropValue = (propValue)=>({\n borderRadius: (0, $eHQ84.getValue)(transformer, propValue)\n });\n return (0, $bXmqm.handleBreakpoints)(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\n$6a3bcce8c57e9eef$export$7a57f79000377ca2.propTypes = {};\n$6a3bcce8c57e9eef$export$7a57f79000377ca2.filterProps = [\n \"borderRadius\"\n];\nconst $6a3bcce8c57e9eef$var$borders = (0, $aia9M.default)($6a3bcce8c57e9eef$export$1edee58a52776cd9, $6a3bcce8c57e9eef$export$f9a7b6bd24892946, $6a3bcce8c57e9eef$export$5abca33e6be905d2, $6a3bcce8c57e9eef$export$e2ce9f12a980a822, $6a3bcce8c57e9eef$export$47658cca1a909427, $6a3bcce8c57e9eef$export$e7fb0694ba2404fc, $6a3bcce8c57e9eef$export$126a92c968acdb85, $6a3bcce8c57e9eef$export$85cc51cb8fbb8c0e, $6a3bcce8c57e9eef$export$340b0327727f6d1a, $6a3bcce8c57e9eef$export$60beef91a985b4bf, $6a3bcce8c57e9eef$export$7a57f79000377ca2);\nvar $6a3bcce8c57e9eef$export$2e2bcd8739ae039 = $6a3bcce8c57e9eef$var$borders;\n\n});\nparcelRegister(\"aia9M\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $77e376bf8c5246b9$export$2e2bcd8739ae039; });\n\nvar $bs0XL = parcelRequire(\"bs0XL\");\nfunction $77e376bf8c5246b9$var$compose(...styles) {\n const handlers = styles.reduce((acc, style)=>{\n style.filterProps.forEach((prop)=>{\n acc[prop] = style;\n });\n return acc;\n }, {});\n const fn = (props)=>{\n return Object.keys(props).reduce((acc, prop)=>{\n if (handlers[prop]) return (0, $bs0XL.default)(acc, handlers[prop](props));\n return acc;\n }, {});\n };\n fn.propTypes = {};\n fn.filterProps = styles.reduce((acc, style)=>acc.concat(style.filterProps), []);\n return fn;\n}\nvar $77e376bf8c5246b9$export$2e2bcd8739ae039 = $77e376bf8c5246b9$var$compose;\n\n});\n\n\nparcelRegister(\"ik28E\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $d56bc0f1765d1a28$export$2e2bcd8739ae039; });\n\nvar $1sJkf = parcelRequire(\"1sJkf\");\n\nvar $aia9M = parcelRequire(\"aia9M\");\nconst $d56bc0f1765d1a28$export$95a5c40fb210fe3e = (0, $1sJkf.default)({\n prop: \"displayPrint\",\n cssProperty: false,\n transform: (value)=>({\n \"@media print\": {\n display: value\n }\n })\n});\nconst $d56bc0f1765d1a28$export$e5efd59aba9975ad = (0, $1sJkf.default)({\n prop: \"display\"\n});\nconst $d56bc0f1765d1a28$export$f6530fb6e67e00bd = (0, $1sJkf.default)({\n prop: \"overflow\"\n});\nconst $d56bc0f1765d1a28$export$f00f69a6f0e8c5b6 = (0, $1sJkf.default)({\n prop: \"textOverflow\"\n});\nconst $d56bc0f1765d1a28$export$91fa9ac3f4021ce4 = (0, $1sJkf.default)({\n prop: \"visibility\"\n});\nconst $d56bc0f1765d1a28$export$9ef81298ca34ad41 = (0, $1sJkf.default)({\n prop: \"whiteSpace\"\n});\nvar $d56bc0f1765d1a28$export$2e2bcd8739ae039 = (0, $aia9M.default)($d56bc0f1765d1a28$export$95a5c40fb210fe3e, $d56bc0f1765d1a28$export$e5efd59aba9975ad, $d56bc0f1765d1a28$export$f6530fb6e67e00bd, $d56bc0f1765d1a28$export$f00f69a6f0e8c5b6, $d56bc0f1765d1a28$export$91fa9ac3f4021ce4, $d56bc0f1765d1a28$export$9ef81298ca34ad41);\n\n});\n\nparcelRegister(\"iODQ9\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $db2bccf38673e184$export$2e2bcd8739ae039; });\n\nvar $1sJkf = parcelRequire(\"1sJkf\");\n\nvar $aia9M = parcelRequire(\"aia9M\");\nconst $db2bccf38673e184$export$d2ad290394bbc49d = (0, $1sJkf.default)({\n prop: \"flexBasis\"\n});\nconst $db2bccf38673e184$export$84c3c16c9ed6c908 = (0, $1sJkf.default)({\n prop: \"flexDirection\"\n});\nconst $db2bccf38673e184$export$9a4bcd01f5c204bc = (0, $1sJkf.default)({\n prop: \"flexWrap\"\n});\nconst $db2bccf38673e184$export$8dea3061ba53bfd1 = (0, $1sJkf.default)({\n prop: \"justifyContent\"\n});\nconst $db2bccf38673e184$export$898d9006406726bd = (0, $1sJkf.default)({\n prop: \"alignItems\"\n});\nconst $db2bccf38673e184$export$38c32c6918694134 = (0, $1sJkf.default)({\n prop: \"alignContent\"\n});\nconst $db2bccf38673e184$export$aaaeab0fac9a3ccb = (0, $1sJkf.default)({\n prop: \"order\"\n});\nconst $db2bccf38673e184$export$97691fbb80847c19 = (0, $1sJkf.default)({\n prop: \"flex\"\n});\nconst $db2bccf38673e184$export$36c65c169152373d = (0, $1sJkf.default)({\n prop: \"flexGrow\"\n});\nconst $db2bccf38673e184$export$2670ac60b02109d2 = (0, $1sJkf.default)({\n prop: \"flexShrink\"\n});\nconst $db2bccf38673e184$export$4545dd3632cb520b = (0, $1sJkf.default)({\n prop: \"alignSelf\"\n});\nconst $db2bccf38673e184$export$55e6b7a7f0eaa3ff = (0, $1sJkf.default)({\n prop: \"justifyItems\"\n});\nconst $db2bccf38673e184$export$d012640ac9a6446f = (0, $1sJkf.default)({\n prop: \"justifySelf\"\n});\nconst $db2bccf38673e184$var$flexbox = (0, $aia9M.default)($db2bccf38673e184$export$d2ad290394bbc49d, $db2bccf38673e184$export$84c3c16c9ed6c908, $db2bccf38673e184$export$9a4bcd01f5c204bc, $db2bccf38673e184$export$8dea3061ba53bfd1, $db2bccf38673e184$export$898d9006406726bd, $db2bccf38673e184$export$38c32c6918694134, $db2bccf38673e184$export$aaaeab0fac9a3ccb, $db2bccf38673e184$export$97691fbb80847c19, $db2bccf38673e184$export$36c65c169152373d, $db2bccf38673e184$export$2670ac60b02109d2, $db2bccf38673e184$export$4545dd3632cb520b, $db2bccf38673e184$export$55e6b7a7f0eaa3ff, $db2bccf38673e184$export$d012640ac9a6446f);\nvar $db2bccf38673e184$export$2e2bcd8739ae039 = $db2bccf38673e184$var$flexbox;\n\n});\n\nparcelRegister(\"1qnM1\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $109aa9177f13fd8f$export$2e2bcd8739ae039; });\n\nvar $1sJkf = parcelRequire(\"1sJkf\");\n\nvar $aia9M = parcelRequire(\"aia9M\");\n\nvar $eHQ84 = parcelRequire(\"eHQ84\");\n\nvar $bXmqm = parcelRequire(\"bXmqm\");\n\nconst $109aa9177f13fd8f$export$5df9adcb0db95e1e = (props)=>{\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = (0, $eHQ84.createUnaryUnit)(props.theme, \"spacing\", 8, \"gap\");\n const styleFromPropValue = (propValue)=>({\n gap: (0, $eHQ84.getValue)(transformer, propValue)\n });\n return (0, $bXmqm.handleBreakpoints)(props, props.gap, styleFromPropValue);\n }\n return null;\n};\n$109aa9177f13fd8f$export$5df9adcb0db95e1e.propTypes = {};\n$109aa9177f13fd8f$export$5df9adcb0db95e1e.filterProps = [\n \"gap\"\n];\nconst $109aa9177f13fd8f$export$ec60d70ff941a580 = (props)=>{\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = (0, $eHQ84.createUnaryUnit)(props.theme, \"spacing\", 8, \"columnGap\");\n const styleFromPropValue = (propValue)=>({\n columnGap: (0, $eHQ84.getValue)(transformer, propValue)\n });\n return (0, $bXmqm.handleBreakpoints)(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\n$109aa9177f13fd8f$export$ec60d70ff941a580.propTypes = {};\n$109aa9177f13fd8f$export$ec60d70ff941a580.filterProps = [\n \"columnGap\"\n];\nconst $109aa9177f13fd8f$export$8a833ffa5f5dbeda = (props)=>{\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = (0, $eHQ84.createUnaryUnit)(props.theme, \"spacing\", 8, \"rowGap\");\n const styleFromPropValue = (propValue)=>({\n rowGap: (0, $eHQ84.getValue)(transformer, propValue)\n });\n return (0, $bXmqm.handleBreakpoints)(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\n$109aa9177f13fd8f$export$8a833ffa5f5dbeda.propTypes = {};\n$109aa9177f13fd8f$export$8a833ffa5f5dbeda.filterProps = [\n \"rowGap\"\n];\nconst $109aa9177f13fd8f$export$baf44164ca3a34e8 = (0, $1sJkf.default)({\n prop: \"gridColumn\"\n});\nconst $109aa9177f13fd8f$export$8f7213a1cd01e832 = (0, $1sJkf.default)({\n prop: \"gridRow\"\n});\nconst $109aa9177f13fd8f$export$b0e0abbc49ba668 = (0, $1sJkf.default)({\n prop: \"gridAutoFlow\"\n});\nconst $109aa9177f13fd8f$export$bcd8b929d4b4142 = (0, $1sJkf.default)({\n prop: \"gridAutoColumns\"\n});\nconst $109aa9177f13fd8f$export$e5039a674e14c828 = (0, $1sJkf.default)({\n prop: \"gridAutoRows\"\n});\nconst $109aa9177f13fd8f$export$42bd9088661ffb03 = (0, $1sJkf.default)({\n prop: \"gridTemplateColumns\"\n});\nconst $109aa9177f13fd8f$export$920682ae05b999bc = (0, $1sJkf.default)({\n prop: \"gridTemplateRows\"\n});\nconst $109aa9177f13fd8f$export$1b88fbdd482fd33a = (0, $1sJkf.default)({\n prop: \"gridTemplateAreas\"\n});\nconst $109aa9177f13fd8f$export$bdb486e40d52d26f = (0, $1sJkf.default)({\n prop: \"gridArea\"\n});\nconst $109aa9177f13fd8f$var$grid = (0, $aia9M.default)($109aa9177f13fd8f$export$5df9adcb0db95e1e, $109aa9177f13fd8f$export$ec60d70ff941a580, $109aa9177f13fd8f$export$8a833ffa5f5dbeda, $109aa9177f13fd8f$export$baf44164ca3a34e8, $109aa9177f13fd8f$export$8f7213a1cd01e832, $109aa9177f13fd8f$export$b0e0abbc49ba668, $109aa9177f13fd8f$export$bcd8b929d4b4142, $109aa9177f13fd8f$export$e5039a674e14c828, $109aa9177f13fd8f$export$42bd9088661ffb03, $109aa9177f13fd8f$export$920682ae05b999bc, $109aa9177f13fd8f$export$1b88fbdd482fd33a, $109aa9177f13fd8f$export$bdb486e40d52d26f);\nvar $109aa9177f13fd8f$export$2e2bcd8739ae039 = $109aa9177f13fd8f$var$grid;\n\n});\n\nparcelRegister(\"fJcR6\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b73507d607106f66$export$2e2bcd8739ae039; });\n\nvar $1sJkf = parcelRequire(\"1sJkf\");\n\nvar $aia9M = parcelRequire(\"aia9M\");\nconst $b73507d607106f66$export$5880b8b5730aff45 = (0, $1sJkf.default)({\n prop: \"position\"\n});\nconst $b73507d607106f66$export$56446adcecbeec34 = (0, $1sJkf.default)({\n prop: \"zIndex\",\n themeKey: \"zIndex\"\n});\nconst $b73507d607106f66$export$1e95b668f3b82d = (0, $1sJkf.default)({\n prop: \"top\"\n});\nconst $b73507d607106f66$export$79ffe56a765070d2 = (0, $1sJkf.default)({\n prop: \"right\"\n});\nconst $b73507d607106f66$export$40e543e69a8b3fbb = (0, $1sJkf.default)({\n prop: \"bottom\"\n});\nconst $b73507d607106f66$export$eabcd2c8791e7bf4 = (0, $1sJkf.default)({\n prop: \"left\"\n});\nvar $b73507d607106f66$export$2e2bcd8739ae039 = (0, $aia9M.default)($b73507d607106f66$export$5880b8b5730aff45, $b73507d607106f66$export$56446adcecbeec34, $b73507d607106f66$export$1e95b668f3b82d, $b73507d607106f66$export$79ffe56a765070d2, $b73507d607106f66$export$40e543e69a8b3fbb, $b73507d607106f66$export$eabcd2c8791e7bf4);\n\n});\n\nparcelRegister(\"8zwD3\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $63dae70d0592896c$export$2e2bcd8739ae039; });\n\nvar $1sJkf = parcelRequire(\"1sJkf\");\n\nvar $aia9M = parcelRequire(\"aia9M\");\nconst $63dae70d0592896c$export$35e9368ef982300f = (0, $1sJkf.default)({\n prop: \"color\",\n themeKey: \"palette\"\n});\nconst $63dae70d0592896c$export$2506f56c10355b33 = (0, $1sJkf.default)({\n prop: \"bgcolor\",\n cssProperty: \"backgroundColor\",\n themeKey: \"palette\"\n});\nconst $63dae70d0592896c$export$8c5a050822fd698c = (0, $1sJkf.default)({\n prop: \"backgroundColor\",\n themeKey: \"palette\"\n});\nconst $63dae70d0592896c$var$palette = (0, $aia9M.default)($63dae70d0592896c$export$35e9368ef982300f, $63dae70d0592896c$export$2506f56c10355b33, $63dae70d0592896c$export$8c5a050822fd698c);\nvar $63dae70d0592896c$export$2e2bcd8739ae039 = $63dae70d0592896c$var$palette;\n\n});\n\nparcelRegister(\"4pbgV\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $33523d97c85915a3$export$2e2bcd8739ae039; });\n\nvar $1sJkf = parcelRequire(\"1sJkf\");\nconst $33523d97c85915a3$var$boxShadow = (0, $1sJkf.default)({\n prop: \"boxShadow\",\n themeKey: \"shadows\"\n});\nvar $33523d97c85915a3$export$2e2bcd8739ae039 = $33523d97c85915a3$var$boxShadow;\n\n});\n\nparcelRegister(\"28fpZ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $18d849dcf70f4699$export$2e2bcd8739ae039; });\n\nvar $1sJkf = parcelRequire(\"1sJkf\");\n\nvar $aia9M = parcelRequire(\"aia9M\");\n\nvar $bXmqm = parcelRequire(\"bXmqm\");\nfunction $18d849dcf70f4699$var$transform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nconst $18d849dcf70f4699$export$7e3df82ee760448c = (0, $1sJkf.default)({\n prop: \"width\",\n transform: $18d849dcf70f4699$var$transform\n});\nconst $18d849dcf70f4699$export$488fda99655ff65a = (props)=>{\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = (propValue)=>{\n var _props$theme, _props$theme$breakpoi, _props$theme$breakpoi2;\n const breakpoint = ((_props$theme = props.theme) == null ? void 0 : (_props$theme$breakpoi = _props$theme.breakpoints) == null ? void 0 : (_props$theme$breakpoi2 = _props$theme$breakpoi.values) == null ? void 0 : _props$theme$breakpoi2[propValue]) || (0, $bXmqm.values)[propValue];\n return {\n maxWidth: breakpoint || $18d849dcf70f4699$var$transform(propValue)\n };\n };\n return (0, $bXmqm.handleBreakpoints)(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\n$18d849dcf70f4699$export$488fda99655ff65a.filterProps = [\n \"maxWidth\"\n];\nconst $18d849dcf70f4699$export$ee148fbbe8357dd2 = (0, $1sJkf.default)({\n prop: \"minWidth\",\n transform: $18d849dcf70f4699$var$transform\n});\nconst $18d849dcf70f4699$export$ac607276a8fe9f0a = (0, $1sJkf.default)({\n prop: \"height\",\n transform: $18d849dcf70f4699$var$transform\n});\nconst $18d849dcf70f4699$export$dc0d8bd0b94f8570 = (0, $1sJkf.default)({\n prop: \"maxHeight\",\n transform: $18d849dcf70f4699$var$transform\n});\nconst $18d849dcf70f4699$export$a43cf604e12f3b17 = (0, $1sJkf.default)({\n prop: \"minHeight\",\n transform: $18d849dcf70f4699$var$transform\n});\nconst $18d849dcf70f4699$export$ffed9f14fb65e276 = (0, $1sJkf.default)({\n prop: \"size\",\n cssProperty: \"width\",\n transform: $18d849dcf70f4699$var$transform\n});\nconst $18d849dcf70f4699$export$905076ed6620e671 = (0, $1sJkf.default)({\n prop: \"size\",\n cssProperty: \"height\",\n transform: $18d849dcf70f4699$var$transform\n});\nconst $18d849dcf70f4699$export$6ccc93f785106a58 = (0, $1sJkf.default)({\n prop: \"boxSizing\"\n});\nconst $18d849dcf70f4699$var$sizing = (0, $aia9M.default)($18d849dcf70f4699$export$7e3df82ee760448c, $18d849dcf70f4699$export$488fda99655ff65a, $18d849dcf70f4699$export$ee148fbbe8357dd2, $18d849dcf70f4699$export$ac607276a8fe9f0a, $18d849dcf70f4699$export$dc0d8bd0b94f8570, $18d849dcf70f4699$export$a43cf604e12f3b17, $18d849dcf70f4699$export$6ccc93f785106a58);\nvar $18d849dcf70f4699$export$2e2bcd8739ae039 = $18d849dcf70f4699$var$sizing;\n\n});\n\nparcelRegister(\"YcRIZ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $0b4f95897bfa58fd$export$2e2bcd8739ae039; });\n\nvar $1sJkf = parcelRequire(\"1sJkf\");\n\nvar $aia9M = parcelRequire(\"aia9M\");\nconst $0b4f95897bfa58fd$export$a5975749f0374264 = (0, $1sJkf.default)({\n prop: \"fontFamily\",\n themeKey: \"typography\"\n});\nconst $0b4f95897bfa58fd$export$85e3c3ca0c6fb93 = (0, $1sJkf.default)({\n prop: \"fontSize\",\n themeKey: \"typography\"\n});\nconst $0b4f95897bfa58fd$export$a827189a08c5a3a3 = (0, $1sJkf.default)({\n prop: \"fontStyle\",\n themeKey: \"typography\"\n});\nconst $0b4f95897bfa58fd$export$bc0b29e67df3229e = (0, $1sJkf.default)({\n prop: \"fontWeight\",\n themeKey: \"typography\"\n});\nconst $0b4f95897bfa58fd$export$3eb52878e4502ad1 = (0, $1sJkf.default)({\n prop: \"letterSpacing\"\n});\nconst $0b4f95897bfa58fd$export$d1b52fec4405b471 = (0, $1sJkf.default)({\n prop: \"textTransform\"\n});\nconst $0b4f95897bfa58fd$export$c9b91427b594e14 = (0, $1sJkf.default)({\n prop: \"lineHeight\"\n});\nconst $0b4f95897bfa58fd$export$a87999391cd10ae9 = (0, $1sJkf.default)({\n prop: \"textAlign\"\n});\nconst $0b4f95897bfa58fd$export$60b2982fc282cca6 = (0, $1sJkf.default)({\n prop: \"typography\",\n cssProperty: false,\n themeKey: \"typography\"\n});\nconst $0b4f95897bfa58fd$var$typography = (0, $aia9M.default)($0b4f95897bfa58fd$export$60b2982fc282cca6, $0b4f95897bfa58fd$export$a5975749f0374264, $0b4f95897bfa58fd$export$85e3c3ca0c6fb93, $0b4f95897bfa58fd$export$a827189a08c5a3a3, $0b4f95897bfa58fd$export$bc0b29e67df3229e, $0b4f95897bfa58fd$export$3eb52878e4502ad1, $0b4f95897bfa58fd$export$c9b91427b594e14, $0b4f95897bfa58fd$export$a87999391cd10ae9, $0b4f95897bfa58fd$export$d1b52fec4405b471);\nvar $0b4f95897bfa58fd$export$2e2bcd8739ae039 = $0b4f95897bfa58fd$var$typography;\n\n});\n\n\n\n\n\nparcelRegister(\"2mnfJ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $1b7fac55b9a74292$export$2e2bcd8739ae039; });\nparcelRequire(\"70fFQ\");\n\nvar $3yh9K = parcelRequire(\"3yh9K\");\n\nvar $7Rxn3 = parcelRequire(\"7Rxn3\");\nfunction $1b7fac55b9a74292$export$2e2bcd8739ae039() {\n const theme = (0, $3yh9K.default)((0, $7Rxn3.default));\n return theme;\n}\n\n});\n\nparcelRegister(\"duaP9\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9d16791b876690e2$export$2e2bcd8739ae039; });\n\nvar $3Fato = parcelRequire(\"3Fato\");\nvar $9d16791b876690e2$export$2e2bcd8739ae039 = (0, $3Fato.default);\n\n});\n\nparcelRegister(\"aAAPW\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $7b59d732bf33d3a1$export$2e2bcd8739ae039; });\n\nvar $9vGQi = parcelRequire(\"9vGQi\");\nvar $7b59d732bf33d3a1$export$2e2bcd8739ae039 = (0, $9vGQi.default);\n\n});\n\nparcelRegister(\"54wpe\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $3b1676a4d56f489b$export$2e2bcd8739ae039; });\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\n\nvar $dxolJ = parcelRequire(\"dxolJ\");\n\nvar $2mnfJ = parcelRequire(\"2mnfJ\");\n\nvar $ceSe6 = parcelRequire(\"ceSe6\");\n\nvar $5Up1l = parcelRequire(\"5Up1l\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nconst $3b1676a4d56f489b$var$_excluded = [\n \"addEndListener\",\n \"appear\",\n \"children\",\n \"easing\",\n \"in\",\n \"onEnter\",\n \"onEntered\",\n \"onEntering\",\n \"onExit\",\n \"onExited\",\n \"onExiting\",\n \"style\",\n \"timeout\",\n \"TransitionComponent\"\n];\nfunction $3b1676a4d56f489b$var$getScale(value) {\n return `scale(${value}, ${value ** 2})`;\n}\nconst $3b1676a4d56f489b$var$styles = {\n entering: {\n opacity: 1,\n transform: $3b1676a4d56f489b$var$getScale(1)\n },\n entered: {\n opacity: 1,\n transform: \"none\"\n }\n};\n/**\n * The Grow transition is used by the [Tooltip](/components/tooltips/) and\n * [Popover](/components/popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */ const $3b1676a4d56f489b$var$Grow = /*#__PURE__*/ $70fFQ.forwardRef(function Grow(props, ref) {\n const { addEndListener: addEndListener, appear: appear = true, children: children, easing: easing, in: inProp, onEnter: onEnter, onEntered: onEntered, onEntering: onEntering, onExit: onExit, onExited: onExited, onExiting: onExiting, style: style, timeout: timeout = \"auto\", TransitionComponent: // eslint-disable-next-line react/prop-types\n TransitionComponent = (0, $dxolJ.default) } = props, other = (0, $79yYo.default)(props, $3b1676a4d56f489b$var$_excluded);\n const timer = $70fFQ.useRef();\n const autoTimeout = $70fFQ.useRef();\n const theme = (0, $2mnfJ.default)();\n const nodeRef = $70fFQ.useRef(null);\n const foreignRef = (0, $5Up1l.default)(children.ref, ref);\n const handleRef = (0, $5Up1l.default)(nodeRef, foreignRef);\n const normalizedTransitionCallback = (callback)=>(maybeIsAppearing)=>{\n if (callback) {\n const node = nodeRef.current; // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) callback(node);\n else callback(node, maybeIsAppearing);\n }\n };\n const handleEntering = normalizedTransitionCallback(onEntering);\n const handleEnter = normalizedTransitionCallback((node, isAppearing)=>{\n (0, $ceSe6.reflow)(node); // So the animation always start from the start.\n const { duration: transitionDuration, delay: delay, easing: transitionTimingFunction } = (0, $ceSe6.getTransitionProps)({\n style: style,\n timeout: timeout,\n easing: easing\n }, {\n mode: \"enter\"\n });\n let duration;\n if (timeout === \"auto\") {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else duration = transitionDuration;\n node.style.transition = [\n theme.transitions.create(\"opacity\", {\n duration: duration,\n delay: delay\n }),\n theme.transitions.create(\"transform\", {\n duration: duration * 0.666,\n delay: delay,\n easing: transitionTimingFunction\n })\n ].join(\",\");\n if (onEnter) onEnter(node, isAppearing);\n });\n const handleEntered = normalizedTransitionCallback(onEntered);\n const handleExiting = normalizedTransitionCallback(onExiting);\n const handleExit = normalizedTransitionCallback((node)=>{\n const { duration: transitionDuration, delay: delay, easing: transitionTimingFunction } = (0, $ceSe6.getTransitionProps)({\n style: style,\n timeout: timeout,\n easing: easing\n }, {\n mode: \"exit\"\n });\n let duration;\n if (timeout === \"auto\") {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else duration = transitionDuration;\n node.style.transition = [\n theme.transitions.create(\"opacity\", {\n duration: duration,\n delay: delay\n }),\n theme.transitions.create(\"transform\", {\n duration: duration * 0.666,\n delay: delay || duration * 0.333,\n easing: transitionTimingFunction\n })\n ].join(\",\");\n node.style.opacity = \"0\";\n node.style.transform = $3b1676a4d56f489b$var$getScale(0.75);\n if (onExit) onExit(node);\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleAddEndListener = (next)=>{\n if (timeout === \"auto\") timer.current = setTimeout(next, autoTimeout.current || 0);\n if (addEndListener) // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n };\n $70fFQ.useEffect(()=>{\n return ()=>{\n clearTimeout(timer.current);\n };\n }, []);\n return /*#__PURE__*/ (0, $4x3bm.jsx)(TransitionComponent, (0, $20MOv.default)({\n appear: appear,\n in: inProp,\n nodeRef: nodeRef,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n timeout: timeout === \"auto\" ? null : timeout\n }, other, {\n children: (state, childProps)=>{\n return /*#__PURE__*/ $70fFQ.cloneElement(children, (0, $20MOv.default)({\n style: (0, $20MOv.default)({\n opacity: 0,\n transform: $3b1676a4d56f489b$var$getScale(0.75),\n visibility: state === \"exited\" && !inProp ? \"hidden\" : undefined\n }, $3b1676a4d56f489b$var$styles[state], style, children.props.style),\n ref: handleRef\n }, childProps));\n }\n }));\n});\n$3b1676a4d56f489b$var$Grow.muiSupportAuto = true;\nvar $3b1676a4d56f489b$export$2e2bcd8739ae039 = $3b1676a4d56f489b$var$Grow;\n\n});\nparcelRegister(\"dxolJ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9db13ec28496ca72$export$2e2bcd8739ae039; });\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $b0Bcw = parcelRequire(\"b0Bcw\");\n\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $3glZ1 = parcelRequire(\"3glZ1\");\n\nvar $fbeMJ = parcelRequire(\"fbeMJ\");\n\n\nvar $kZNVB = parcelRequire(\"kZNVB\");\nvar $9db13ec28496ca72$export$bb38bb9a1161268 = \"unmounted\";\nvar $9db13ec28496ca72$export$84cbff306f539230 = \"exited\";\nvar $9db13ec28496ca72$export$df38205c966be359 = \"entering\";\nvar $9db13ec28496ca72$export$78e9e6e3e014d60a = \"entered\";\nvar $9db13ec28496ca72$export$4aacc83d4d59139f = \"exiting\";\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */ var $9db13ec28496ca72$var$Transition = /*#__PURE__*/ function(_React$Component) {\n (0, $b0Bcw.default)(Transition, _React$Component);\n function Transition(props, context) {\n var _this;\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n if (props.in) {\n if (appear) {\n initialStatus = $9db13ec28496ca72$export$84cbff306f539230;\n _this.appearStatus = $9db13ec28496ca72$export$df38205c966be359;\n } else initialStatus = $9db13ec28496ca72$export$78e9e6e3e014d60a;\n } else if (props.unmountOnExit || props.mountOnEnter) initialStatus = $9db13ec28496ca72$export$bb38bb9a1161268;\n else initialStatus = $9db13ec28496ca72$export$84cbff306f539230;\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n if (nextIn && prevState.status === $9db13ec28496ca72$export$bb38bb9a1161268) return {\n status: $9db13ec28496ca72$export$84cbff306f539230\n };\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n ;\n var _proto = Transition.prototype;\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n if (prevProps !== this.props) {\n var status = this.state.status;\n if (this.props.in) {\n if (status !== $9db13ec28496ca72$export$df38205c966be359 && status !== $9db13ec28496ca72$export$78e9e6e3e014d60a) nextStatus = $9db13ec28496ca72$export$df38205c966be359;\n } else if (status === $9db13ec28496ca72$export$df38205c966be359 || status === $9db13ec28496ca72$export$78e9e6e3e014d60a) nextStatus = $9db13ec28496ca72$export$4aacc83d4d59139f;\n }\n this.updateStatus(false, nextStatus);\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n if (timeout != null && typeof timeout !== \"number\") {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) mounting = false;\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n if (nextStatus === $9db13ec28496ca72$export$df38205c966be359) this.performEnter(mounting);\n else this.performExit();\n } else if (this.props.unmountOnExit && this.state.status === $9db13ec28496ca72$export$84cbff306f539230) this.setState({\n status: $9db13ec28496ca72$export$bb38bb9a1161268\n });\n };\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n var _ref2 = this.props.nodeRef ? [\n appearing\n ] : [\n (0, (/*@__PURE__*/$parcel$interopDefault($3glZ1))).findDOMNode(this),\n appearing\n ], maybeNode = _ref2[0], maybeAppearing = _ref2[1];\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n if (!mounting && !enter || (0, $fbeMJ.default).disabled) {\n this.safeSetState({\n status: $9db13ec28496ca72$export$78e9e6e3e014d60a\n }, function() {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: $9db13ec28496ca72$export$df38205c966be359\n }, function() {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n _this2.onTransitionEnd(enterTimeout, function() {\n _this2.safeSetState({\n status: $9db13ec28496ca72$export$78e9e6e3e014d60a\n }, function() {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n _proto.performExit = function performExit() {\n var _this3 = this;\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : (0, (/*@__PURE__*/$parcel$interopDefault($3glZ1))).findDOMNode(this); // no exit animation skip right to EXITED\n if (!exit || (0, $fbeMJ.default).disabled) {\n this.safeSetState({\n status: $9db13ec28496ca72$export$84cbff306f539230\n }, function() {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: $9db13ec28496ca72$export$4aacc83d4d59139f\n }, function() {\n _this3.props.onExiting(maybeNode);\n _this3.onTransitionEnd(timeouts.exit, function() {\n _this3.safeSetState({\n status: $9db13ec28496ca72$export$84cbff306f539230\n }, function() {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n var active = true;\n this.nextCallback = function(event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n this.nextCallback.cancel = function() {\n active = false;\n };\n return this.nextCallback;\n };\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : (0, (/*@__PURE__*/$parcel$interopDefault($3glZ1))).findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [\n this.nextCallback\n ] : [\n node,\n this.nextCallback\n ], maybeNode = _ref3[0], maybeNextCallback = _ref3[1];\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n if (timeout != null) setTimeout(this.nextCallback, timeout);\n };\n _proto.render = function render() {\n var status = this.state.status;\n if (status === $9db13ec28496ca72$export$bb38bb9a1161268) return null;\n var _this$props = this.props, children = _this$props.children, _in = _this$props.in, _mountOnEnter = _this$props.mountOnEnter, _unmountOnExit = _this$props.unmountOnExit, _appear = _this$props.appear, _enter = _this$props.enter, _exit = _this$props.exit, _timeout = _this$props.timeout, _addEndListener = _this$props.addEndListener, _onEnter = _this$props.onEnter, _onEntering = _this$props.onEntering, _onEntered = _this$props.onEntered, _onExit = _this$props.onExit, _onExiting = _this$props.onExiting, _onExited = _this$props.onExited, _nodeRef = _this$props.nodeRef, childProps = (0, $79yYo.default)(_this$props, [\n \"children\",\n \"in\",\n \"mountOnEnter\",\n \"unmountOnExit\",\n \"appear\",\n \"enter\",\n \"exit\",\n \"timeout\",\n \"addEndListener\",\n \"onEnter\",\n \"onEntering\",\n \"onEntered\",\n \"onExit\",\n \"onExiting\",\n \"onExited\",\n \"nodeRef\"\n ]);\n return(/*#__PURE__*/ // allows for nested Transitions\n (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement((0, $kZNVB.default).Provider, {\n value: null\n }, typeof children === \"function\" ? children(status, childProps) : (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).cloneElement((0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).Children.only(children), childProps)));\n };\n return Transition;\n}((0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).Component);\n$9db13ec28496ca72$var$Transition.contextType = (0, $kZNVB.default);\n$9db13ec28496ca72$var$Transition.propTypes = {}; // Name the function so it is clearer in the documentation\nfunction $9db13ec28496ca72$var$noop() {}\n$9db13ec28496ca72$var$Transition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: $9db13ec28496ca72$var$noop,\n onEntering: $9db13ec28496ca72$var$noop,\n onEntered: $9db13ec28496ca72$var$noop,\n onExit: $9db13ec28496ca72$var$noop,\n onExiting: $9db13ec28496ca72$var$noop,\n onExited: $9db13ec28496ca72$var$noop\n};\n$9db13ec28496ca72$var$Transition.UNMOUNTED = $9db13ec28496ca72$export$bb38bb9a1161268;\n$9db13ec28496ca72$var$Transition.EXITED = $9db13ec28496ca72$export$84cbff306f539230;\n$9db13ec28496ca72$var$Transition.ENTERING = $9db13ec28496ca72$export$df38205c966be359;\n$9db13ec28496ca72$var$Transition.ENTERED = $9db13ec28496ca72$export$78e9e6e3e014d60a;\n$9db13ec28496ca72$var$Transition.EXITING = $9db13ec28496ca72$export$4aacc83d4d59139f;\nvar $9db13ec28496ca72$export$2e2bcd8739ae039 = $9db13ec28496ca72$var$Transition;\n\n});\nparcelRegister(\"b0Bcw\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $803c8d214cd5af94$export$2e2bcd8739ae039; });\n\nvar $bREB1 = parcelRequire(\"bREB1\");\nfunction $803c8d214cd5af94$export$2e2bcd8739ae039(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n (0, $bREB1.default)(subClass, superClass);\n}\n\n});\nparcelRegister(\"bREB1\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $8a34227ecc16a73c$export$2e2bcd8739ae039; });\nfunction $8a34227ecc16a73c$export$2e2bcd8739ae039(o, p) {\n $8a34227ecc16a73c$export$2e2bcd8739ae039 = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return $8a34227ecc16a73c$export$2e2bcd8739ae039(o, p);\n}\n\n});\n\n\nparcelRegister(\"fbeMJ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b0d35a19ac8db1d9$export$2e2bcd8739ae039; });\nvar $b0d35a19ac8db1d9$export$2e2bcd8739ae039 = {\n disabled: false\n};\n\n});\n\nparcelRegister(\"kZNVB\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $f4903bd70f38464d$export$2e2bcd8739ae039; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\nvar $f4903bd70f38464d$export$2e2bcd8739ae039 = (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createContext(null);\n\n});\n\n\nparcelRegister(\"ceSe6\", function(module, exports) {\n\n$parcel$export(module.exports, \"reflow\", function () { return $8e90db129429ecba$export$b7a864e1eaef9de5; });\n$parcel$export(module.exports, \"getTransitionProps\", function () { return $8e90db129429ecba$export$8cb1e9b404609ae9; });\nconst $8e90db129429ecba$export$b7a864e1eaef9de5 = (node)=>node.scrollTop;\nfunction $8e90db129429ecba$export$8cb1e9b404609ae9(props, options) {\n var _style$transitionDura, _style$transitionTimi;\n const { timeout: timeout, easing: easing, style: style = {} } = props;\n return {\n duration: (_style$transitionDura = style.transitionDuration) != null ? _style$transitionDura : typeof timeout === \"number\" ? timeout : timeout[options.mode] || 0,\n easing: (_style$transitionTimi = style.transitionTimingFunction) != null ? _style$transitionTimi : typeof easing === \"object\" ? easing[options.mode] : easing,\n delay: style.transitionDelay\n };\n}\n\n});\n\nparcelRegister(\"5Up1l\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $44d5974cfa9f5a1a$export$2e2bcd8739ae039; });\n\nvar $4Rshd = parcelRequire(\"4Rshd\");\nvar $44d5974cfa9f5a1a$export$2e2bcd8739ae039 = (0, $4Rshd.default);\n\n});\n\n\nparcelRegister(\"fTbhH\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b914bee8273c38c1$export$2e2bcd8739ae039; });\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\nvar $gjktY = parcelRequire(\"gjktY\");\n\nvar $8dWxZ = parcelRequire(\"8dWxZ\");\n\nvar $bFVgt = parcelRequire(\"bFVgt\");\n\nvar $71Pr4 = parcelRequire(\"71Pr4\");\n\nvar $cNmNk = parcelRequire(\"cNmNk\");\n\nvar $1mImZ = parcelRequire(\"1mImZ\");\n\nvar $14olw = parcelRequire(\"14olw\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nconst $b914bee8273c38c1$var$_excluded = [\n \"action\",\n \"className\",\n \"message\",\n \"role\"\n];\nconst $b914bee8273c38c1$var$useUtilityClasses = (ownerState)=>{\n const { classes: classes } = ownerState;\n const slots = {\n root: [\n \"root\"\n ],\n action: [\n \"action\"\n ],\n message: [\n \"message\"\n ]\n };\n return (0, $8dWxZ.default)(slots, (0, $14olw.getSnackbarContentUtilityClass), classes);\n};\nconst $b914bee8273c38c1$var$SnackbarContentRoot = (0, $71Pr4.default)((0, $1mImZ.default), {\n name: \"MuiSnackbarContent\",\n slot: \"Root\",\n overridesResolver: (props, styles)=>styles.root\n})(({ theme: theme })=>{\n const emphasis = theme.palette.mode === \"light\" ? 0.8 : 0.98;\n const backgroundColor = (0, $bFVgt.emphasize)(theme.palette.background.default, emphasis);\n return (0, $20MOv.default)({}, theme.typography.body2, {\n color: theme.palette.getContrastText(backgroundColor),\n backgroundColor: backgroundColor,\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n padding: \"6px 16px\",\n borderRadius: theme.shape.borderRadius,\n flexGrow: 1,\n [theme.breakpoints.up(\"sm\")]: {\n flexGrow: \"initial\",\n minWidth: 288\n }\n });\n});\nconst $b914bee8273c38c1$var$SnackbarContentMessage = (0, $71Pr4.default)(\"div\", {\n name: \"MuiSnackbarContent\",\n slot: \"Message\",\n overridesResolver: (props, styles)=>styles.message\n})({\n padding: \"8px 0\"\n});\nconst $b914bee8273c38c1$var$SnackbarContentAction = (0, $71Pr4.default)(\"div\", {\n name: \"MuiSnackbarContent\",\n slot: \"Action\",\n overridesResolver: (props, styles)=>styles.action\n})({\n display: \"flex\",\n alignItems: \"center\",\n marginLeft: \"auto\",\n paddingLeft: 16,\n marginRight: -8\n});\nconst $b914bee8273c38c1$var$SnackbarContent = /*#__PURE__*/ $70fFQ.forwardRef(function SnackbarContent(inProps, ref) {\n const props = (0, $cNmNk.default)({\n props: inProps,\n name: \"MuiSnackbarContent\"\n });\n const { action: action, className: className, message: message, role: role = \"alert\" } = props, other = (0, $79yYo.default)(props, $b914bee8273c38c1$var$_excluded);\n const ownerState = props;\n const classes = $b914bee8273c38c1$var$useUtilityClasses(ownerState);\n return /*#__PURE__*/ (0, $4x3bm.jsxs)($b914bee8273c38c1$var$SnackbarContentRoot, (0, $20MOv.default)({\n role: role,\n square: true,\n elevation: 6,\n className: (0, $gjktY.default)(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)($b914bee8273c38c1$var$SnackbarContentMessage, {\n className: classes.message,\n ownerState: ownerState,\n children: message\n }),\n action ? /*#__PURE__*/ (0, $4x3bm.jsx)($b914bee8273c38c1$var$SnackbarContentAction, {\n className: classes.action,\n ownerState: ownerState,\n children: action\n }) : null\n ]\n }));\n});\nvar $b914bee8273c38c1$export$2e2bcd8739ae039 = $b914bee8273c38c1$var$SnackbarContent;\n\n});\nparcelRegister(\"1mImZ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $0fea436a9a933368$export$2e2bcd8739ae039; });\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\nvar $gjktY = parcelRequire(\"gjktY\");\n\n\nvar $8dWxZ = parcelRequire(\"8dWxZ\");\n\nvar $bFVgt = parcelRequire(\"bFVgt\");\n\nvar $71Pr4 = parcelRequire(\"71Pr4\");\n\nvar $cNmNk = parcelRequire(\"cNmNk\");\n\n\nvar $4qR8t = parcelRequire(\"4qR8t\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nconst $0fea436a9a933368$var$_excluded = [\n \"className\",\n \"component\",\n \"elevation\",\n \"square\",\n \"variant\"\n];\nconst $0fea436a9a933368$var$getOverlayAlpha = (elevation)=>{\n let alphaValue;\n if (elevation < 1) alphaValue = 5.11916 * elevation ** 2;\n else alphaValue = 4.5 * Math.log(elevation + 1) + 2;\n return (alphaValue / 100).toFixed(2);\n};\nconst $0fea436a9a933368$var$useUtilityClasses = (ownerState)=>{\n const { square: square, elevation: elevation, variant: variant, classes: classes } = ownerState;\n const slots = {\n root: [\n \"root\",\n variant,\n !square && \"rounded\",\n variant === \"elevation\" && `elevation${elevation}`\n ]\n };\n return (0, $8dWxZ.default)(slots, (0, $4qR8t.getPaperUtilityClass), classes);\n};\nconst $0fea436a9a933368$var$PaperRoot = (0, $71Pr4.default)(\"div\", {\n name: \"MuiPaper\",\n slot: \"Root\",\n overridesResolver: (props, styles)=>{\n const { ownerState: ownerState } = props;\n return [\n styles.root,\n styles[ownerState.variant],\n !ownerState.square && styles.rounded,\n ownerState.variant === \"elevation\" && styles[`elevation${ownerState.elevation}`]\n ];\n }\n})(({ theme: theme, ownerState: ownerState })=>(0, $20MOv.default)({\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n transition: theme.transitions.create(\"box-shadow\")\n }, !ownerState.square && {\n borderRadius: theme.shape.borderRadius\n }, ownerState.variant === \"outlined\" && {\n border: `1px solid ${theme.palette.divider}`\n }, ownerState.variant === \"elevation\" && (0, $20MOv.default)({\n boxShadow: theme.shadows[ownerState.elevation]\n }, theme.palette.mode === \"dark\" && {\n backgroundImage: `linear-gradient(${(0, $bFVgt.alpha)(\"#fff\", $0fea436a9a933368$var$getOverlayAlpha(ownerState.elevation))}, ${(0, $bFVgt.alpha)(\"#fff\", $0fea436a9a933368$var$getOverlayAlpha(ownerState.elevation))})`\n })));\nconst $0fea436a9a933368$var$Paper = /*#__PURE__*/ $70fFQ.forwardRef(function Paper(inProps, ref) {\n const props = (0, $cNmNk.default)({\n props: inProps,\n name: \"MuiPaper\"\n });\n const { className: className, component: component = \"div\", elevation: elevation = 1, square: square = false, variant: variant = \"elevation\" } = props, other = (0, $79yYo.default)(props, $0fea436a9a933368$var$_excluded);\n const ownerState = (0, $20MOv.default)({}, props, {\n component: component,\n elevation: elevation,\n square: square,\n variant: variant\n });\n const classes = $0fea436a9a933368$var$useUtilityClasses(ownerState);\n return /*#__PURE__*/ (0, $4x3bm.jsx)($0fea436a9a933368$var$PaperRoot, (0, $20MOv.default)({\n as: component,\n ownerState: ownerState,\n className: (0, $gjktY.default)(classes.root, className),\n ref: ref\n }, other));\n});\nvar $0fea436a9a933368$export$2e2bcd8739ae039 = $0fea436a9a933368$var$Paper;\n\n});\nparcelRegister(\"4qR8t\", function(module, exports) {\n\n$parcel$export(module.exports, \"getPaperUtilityClass\", function () { return $33a2cec8ff59aa37$export$29cdb466b9b6f20b; });\n\nvar $dtsUs = parcelRequire(\"dtsUs\");\nvar $jLqVN = parcelRequire(\"jLqVN\");\nfunction $33a2cec8ff59aa37$export$29cdb466b9b6f20b(slot) {\n return (0, $dtsUs.default)(\"MuiPaper\", slot);\n}\nconst $33a2cec8ff59aa37$var$paperClasses = (0, $jLqVN.default)(\"MuiPaper\", [\n \"root\",\n \"rounded\",\n \"outlined\",\n \"elevation\",\n \"elevation0\",\n \"elevation1\",\n \"elevation2\",\n \"elevation3\",\n \"elevation4\",\n \"elevation5\",\n \"elevation6\",\n \"elevation7\",\n \"elevation8\",\n \"elevation9\",\n \"elevation10\",\n \"elevation11\",\n \"elevation12\",\n \"elevation13\",\n \"elevation14\",\n \"elevation15\",\n \"elevation16\",\n \"elevation17\",\n \"elevation18\",\n \"elevation19\",\n \"elevation20\",\n \"elevation21\",\n \"elevation22\",\n \"elevation23\",\n \"elevation24\"\n]);\nvar $33a2cec8ff59aa37$export$2e2bcd8739ae039 = $33a2cec8ff59aa37$var$paperClasses;\n\n});\nparcelRegister(\"dtsUs\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9cf468a9723d94da$export$2e2bcd8739ae039; });\n\nvar $kZEgR = parcelRequire(\"kZEgR\");\nconst $9cf468a9723d94da$var$globalStateClassesMapping = {\n active: \"Mui-active\",\n checked: \"Mui-checked\",\n completed: \"Mui-completed\",\n disabled: \"Mui-disabled\",\n error: \"Mui-error\",\n expanded: \"Mui-expanded\",\n focused: \"Mui-focused\",\n focusVisible: \"Mui-focusVisible\",\n required: \"Mui-required\",\n selected: \"Mui-selected\"\n};\nfunction $9cf468a9723d94da$export$2e2bcd8739ae039(componentName, slot) {\n const globalStateClass = $9cf468a9723d94da$var$globalStateClassesMapping[slot];\n return globalStateClass || `${(0, $kZEgR.default).generate(componentName)}-${slot}`;\n}\n\n});\nparcelRegister(\"kZEgR\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $f488be1aa2aca3a6$export$2e2bcd8739ae039; });\nconst $f488be1aa2aca3a6$var$defaultGenerator = (componentName)=>componentName;\nconst $f488be1aa2aca3a6$var$createClassNameGenerator = ()=>{\n let generate = $f488be1aa2aca3a6$var$defaultGenerator;\n return {\n configure (generator) {\n generate = generator;\n },\n generate (componentName) {\n return generate(componentName);\n },\n reset () {\n generate = $f488be1aa2aca3a6$var$defaultGenerator;\n }\n };\n};\nconst $f488be1aa2aca3a6$var$ClassNameGenerator = $f488be1aa2aca3a6$var$createClassNameGenerator();\nvar $f488be1aa2aca3a6$export$2e2bcd8739ae039 = $f488be1aa2aca3a6$var$ClassNameGenerator;\n\n});\n\n\nparcelRegister(\"jLqVN\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $e6374c162e5db52c$export$2e2bcd8739ae039; });\n\nvar $dtsUs = parcelRequire(\"dtsUs\");\nfunction $e6374c162e5db52c$export$2e2bcd8739ae039(componentName, slots) {\n const result = {};\n slots.forEach((slot)=>{\n result[slot] = (0, $dtsUs.default)(componentName, slot);\n });\n return result;\n}\n\n});\n\n\n\nparcelRegister(\"14olw\", function(module, exports) {\n\n$parcel$export(module.exports, \"getSnackbarContentUtilityClass\", function () { return $0c790cceb9a44f43$export$def81488db1a3216; });\n\nvar $dtsUs = parcelRequire(\"dtsUs\");\nvar $jLqVN = parcelRequire(\"jLqVN\");\nfunction $0c790cceb9a44f43$export$def81488db1a3216(slot) {\n return (0, $dtsUs.default)(\"MuiSnackbarContent\", slot);\n}\nconst $0c790cceb9a44f43$var$snackbarContentClasses = (0, $jLqVN.default)(\"MuiSnackbarContent\", [\n \"root\",\n \"message\",\n \"action\"\n]);\nvar $0c790cceb9a44f43$export$2e2bcd8739ae039 = $0c790cceb9a44f43$var$snackbarContentClasses;\n\n});\n\n\nparcelRegister(\"1bnPO\", function(module, exports) {\n\n$parcel$export(module.exports, \"getSnackbarUtilityClass\", function () { return $0dc94e92eff900db$export$6cb096457f5926f4; });\n\nvar $dtsUs = parcelRequire(\"dtsUs\");\nvar $jLqVN = parcelRequire(\"jLqVN\");\nfunction $0dc94e92eff900db$export$6cb096457f5926f4(slot) {\n return (0, $dtsUs.default)(\"MuiSnackbar\", slot);\n}\nconst $0dc94e92eff900db$var$snackbarClasses = (0, $jLqVN.default)(\"MuiSnackbar\", [\n \"root\",\n \"anchorOriginTopCenter\",\n \"anchorOriginBottomCenter\",\n \"anchorOriginTopRight\",\n \"anchorOriginBottomRight\",\n \"anchorOriginTopLeft\",\n \"anchorOriginBottomLeft\"\n]);\nvar $0dc94e92eff900db$export$2e2bcd8739ae039 = $0dc94e92eff900db$var$snackbarClasses;\n\n});\n\n\nparcelRegister(\"27ZKj\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $18cc21b0f0979073$export$2e2bcd8739ae039; });\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\nvar $gjktY = parcelRequire(\"gjktY\");\n\nvar $859H5 = parcelRequire(\"859H5\");\n\nvar $8dWxZ = parcelRequire(\"8dWxZ\");\n\nvar $71Pr4 = parcelRequire(\"71Pr4\");\n\nvar $cNmNk = parcelRequire(\"cNmNk\");\n\nvar $aAAPW = parcelRequire(\"aAAPW\");\n\nvar $5aaio = parcelRequire(\"5aaio\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nconst $18cc21b0f0979073$var$_excluded = [\n \"align\",\n \"className\",\n \"component\",\n \"gutterBottom\",\n \"noWrap\",\n \"paragraph\",\n \"variant\",\n \"variantMapping\"\n];\nconst $18cc21b0f0979073$var$useUtilityClasses = (ownerState)=>{\n const { align: align, gutterBottom: gutterBottom, noWrap: noWrap, paragraph: paragraph, variant: variant, classes: classes } = ownerState;\n const slots = {\n root: [\n \"root\",\n variant,\n ownerState.align !== \"inherit\" && `align${(0, $aAAPW.default)(align)}`,\n gutterBottom && \"gutterBottom\",\n noWrap && \"noWrap\",\n paragraph && \"paragraph\"\n ]\n };\n return (0, $8dWxZ.default)(slots, (0, $5aaio.getTypographyUtilityClass), classes);\n};\nconst $18cc21b0f0979073$export$140e2f5526d3cad8 = (0, $71Pr4.default)(\"span\", {\n name: \"MuiTypography\",\n slot: \"Root\",\n overridesResolver: (props, styles)=>{\n const { ownerState: ownerState } = props;\n return [\n styles.root,\n ownerState.variant && styles[ownerState.variant],\n ownerState.align !== \"inherit\" && styles[`align${(0, $aAAPW.default)(ownerState.align)}`],\n ownerState.noWrap && styles.noWrap,\n ownerState.gutterBottom && styles.gutterBottom,\n ownerState.paragraph && styles.paragraph\n ];\n }\n})(({ theme: theme, ownerState: ownerState })=>(0, $20MOv.default)({\n margin: 0\n }, ownerState.variant && theme.typography[ownerState.variant], ownerState.align !== \"inherit\" && {\n textAlign: ownerState.align\n }, ownerState.noWrap && {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\"\n }, ownerState.gutterBottom && {\n marginBottom: \"0.35em\"\n }, ownerState.paragraph && {\n marginBottom: 16\n }));\nconst $18cc21b0f0979073$var$defaultVariantMapping = {\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n h5: \"h5\",\n h6: \"h6\",\n subtitle1: \"h6\",\n subtitle2: \"h6\",\n body1: \"p\",\n body2: \"p\",\n inherit: \"p\"\n}; // TODO v6: deprecate these color values in v5.x and remove the transformation in v6\nconst $18cc21b0f0979073$var$colorTransformations = {\n primary: \"primary.main\",\n textPrimary: \"text.primary\",\n secondary: \"secondary.main\",\n textSecondary: \"text.secondary\",\n error: \"error.main\"\n};\nconst $18cc21b0f0979073$var$transformDeprecatedColors = (color)=>{\n return $18cc21b0f0979073$var$colorTransformations[color] || color;\n};\nconst $18cc21b0f0979073$var$Typography = /*#__PURE__*/ $70fFQ.forwardRef(function Typography(inProps, ref) {\n const themeProps = (0, $cNmNk.default)({\n props: inProps,\n name: \"MuiTypography\"\n });\n const color = $18cc21b0f0979073$var$transformDeprecatedColors(themeProps.color);\n const props = (0, $859H5.default)((0, $20MOv.default)({}, themeProps, {\n color: color\n }));\n const { align: align = \"inherit\", className: className, component: component, gutterBottom: gutterBottom = false, noWrap: noWrap = false, paragraph: paragraph = false, variant: variant = \"body1\", variantMapping: variantMapping = $18cc21b0f0979073$var$defaultVariantMapping } = props, other = (0, $79yYo.default)(props, $18cc21b0f0979073$var$_excluded);\n const ownerState = (0, $20MOv.default)({}, props, {\n align: align,\n color: color,\n className: className,\n component: component,\n gutterBottom: gutterBottom,\n noWrap: noWrap,\n paragraph: paragraph,\n variant: variant,\n variantMapping: variantMapping\n });\n const Component = component || (paragraph ? \"p\" : variantMapping[variant] || $18cc21b0f0979073$var$defaultVariantMapping[variant]) || \"span\";\n const classes = $18cc21b0f0979073$var$useUtilityClasses(ownerState);\n return /*#__PURE__*/ (0, $4x3bm.jsx)($18cc21b0f0979073$export$140e2f5526d3cad8, (0, $20MOv.default)({\n as: Component,\n ref: ref,\n ownerState: ownerState,\n className: (0, $gjktY.default)(classes.root, className)\n }, other));\n});\nvar $18cc21b0f0979073$export$2e2bcd8739ae039 = $18cc21b0f0979073$var$Typography;\n\n});\nparcelRegister(\"859H5\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $5e264f5f8308376f$export$2e2bcd8739ae039; });\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $jWrHX = parcelRequire(\"jWrHX\");\n\nvar $eiC3N = parcelRequire(\"eiC3N\");\nconst $5e264f5f8308376f$var$_excluded = [\n \"sx\"\n];\nconst $5e264f5f8308376f$var$splitProps = (props)=>{\n const result = {\n systemProps: {},\n otherProps: {}\n };\n Object.keys(props).forEach((prop)=>{\n if ((0, $eiC3N.propToStyleFunction)[prop]) result.systemProps[prop] = props[prop];\n else result.otherProps[prop] = props[prop];\n });\n return result;\n};\nfunction $5e264f5f8308376f$export$2e2bcd8739ae039(props) {\n const { sx: inSx } = props, other = (0, $79yYo.default)(props, $5e264f5f8308376f$var$_excluded);\n const { systemProps: systemProps, otherProps: otherProps } = $5e264f5f8308376f$var$splitProps(other);\n let finalSx;\n if (Array.isArray(inSx)) finalSx = [\n systemProps,\n ...inSx\n ];\n else if (typeof inSx === \"function\") finalSx = (...args)=>{\n const result = inSx(...args);\n if (!(0, $jWrHX.isPlainObject)(result)) return systemProps;\n return (0, $20MOv.default)({}, systemProps, result);\n };\n else finalSx = (0, $20MOv.default)({}, systemProps, inSx);\n return (0, $20MOv.default)({}, otherProps, {\n sx: finalSx\n });\n}\n\n});\n\nparcelRegister(\"5aaio\", function(module, exports) {\n\n$parcel$export(module.exports, \"getTypographyUtilityClass\", function () { return $3c25df6d9f61048f$export$24c1f8f60cbac79e; });\n\nvar $dtsUs = parcelRequire(\"dtsUs\");\nvar $jLqVN = parcelRequire(\"jLqVN\");\nfunction $3c25df6d9f61048f$export$24c1f8f60cbac79e(slot) {\n return (0, $dtsUs.default)(\"MuiTypography\", slot);\n}\nconst $3c25df6d9f61048f$var$typographyClasses = (0, $jLqVN.default)(\"MuiTypography\", [\n \"root\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"subtitle1\",\n \"subtitle2\",\n \"body1\",\n \"body2\",\n \"inherit\",\n \"button\",\n \"caption\",\n \"overline\",\n \"alignLeft\",\n \"alignRight\",\n \"alignCenter\",\n \"alignJustify\",\n \"noWrap\",\n \"gutterBottom\",\n \"paragraph\"\n]);\nvar $3c25df6d9f61048f$export$2e2bcd8739ae039 = $3c25df6d9f61048f$var$typographyClasses;\n\n});\n\n\nparcelRegister(\"bdM1R\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $82b62a26c616bf31$export$2e2bcd8739ae039; });\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\nparcelRequire(\"8q2ES\");\n\n\nvar $gjktY = parcelRequire(\"gjktY\");\n\n\nvar $8dWxZ = parcelRequire(\"8dWxZ\");\n\nvar $71Pr4 = parcelRequire(\"71Pr4\");\n\nvar $cNmNk = parcelRequire(\"cNmNk\");\n\nvar $ko2mC = parcelRequire(\"ko2mC\");\n\nvar $1mImZ = parcelRequire(\"1mImZ\");\n\nvar $frduM = parcelRequire(\"frduM\");\n\nvar $6Apvh = parcelRequire(\"6Apvh\");\n\nvar $gCG2L = parcelRequire(\"gCG2L\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nconst $82b62a26c616bf31$var$_excluded = [\n \"children\",\n \"className\",\n \"defaultExpanded\",\n \"disabled\",\n \"disableGutters\",\n \"expanded\",\n \"onChange\",\n \"square\",\n \"TransitionComponent\",\n \"TransitionProps\"\n];\nconst $82b62a26c616bf31$var$useUtilityClasses = (ownerState)=>{\n const { classes: classes, square: square, expanded: expanded, disabled: disabled, disableGutters: disableGutters } = ownerState;\n const slots = {\n root: [\n \"root\",\n !square && \"rounded\",\n expanded && \"expanded\",\n disabled && \"disabled\",\n !disableGutters && \"gutters\"\n ],\n region: [\n \"region\"\n ]\n };\n return (0, $8dWxZ.default)(slots, (0, $gCG2L.getAccordionUtilityClass), classes);\n};\nconst $82b62a26c616bf31$var$AccordionRoot = (0, $71Pr4.default)((0, $1mImZ.default), {\n name: \"MuiAccordion\",\n slot: \"Root\",\n overridesResolver: (props, styles)=>{\n const { ownerState: ownerState } = props;\n return [\n {\n [`& .${(0, $gCG2L.default).region}`]: styles.region\n },\n styles.root,\n !ownerState.square && styles.rounded,\n !ownerState.disableGutters && styles.gutters\n ];\n }\n})(({ theme: theme })=>{\n const transition = {\n duration: theme.transitions.duration.shortest\n };\n return {\n position: \"relative\",\n transition: theme.transitions.create([\n \"margin\"\n ], transition),\n overflowAnchor: \"none\",\n // Keep the same scrolling position\n \"&:before\": {\n position: \"absolute\",\n left: 0,\n top: -1,\n right: 0,\n height: 1,\n content: '\"\"',\n opacity: 1,\n backgroundColor: theme.palette.divider,\n transition: theme.transitions.create([\n \"opacity\",\n \"background-color\"\n ], transition)\n },\n \"&:first-of-type\": {\n \"&:before\": {\n display: \"none\"\n }\n },\n [`&.${(0, $gCG2L.default).expanded}`]: {\n \"&:before\": {\n opacity: 0\n },\n \"&:first-of-type\": {\n marginTop: 0\n },\n \"&:last-of-type\": {\n marginBottom: 0\n },\n \"& + &\": {\n \"&:before\": {\n display: \"none\"\n }\n }\n },\n [`&.${(0, $gCG2L.default).disabled}`]: {\n backgroundColor: theme.palette.action.disabledBackground\n }\n };\n}, ({ theme: theme, ownerState: ownerState })=>(0, $20MOv.default)({}, !ownerState.square && {\n borderRadius: 0,\n \"&:first-of-type\": {\n borderTopLeftRadius: theme.shape.borderRadius,\n borderTopRightRadius: theme.shape.borderRadius\n },\n \"&:last-of-type\": {\n borderBottomLeftRadius: theme.shape.borderRadius,\n borderBottomRightRadius: theme.shape.borderRadius,\n // Fix a rendering issue on Edge\n \"@supports (-ms-ime-align: auto)\": {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }\n }\n }, !ownerState.disableGutters && {\n [`&.${(0, $gCG2L.default).expanded}`]: {\n margin: \"16px 0\"\n }\n }));\nconst $82b62a26c616bf31$var$Accordion = /*#__PURE__*/ $70fFQ.forwardRef(function Accordion(inProps, ref) {\n const props = (0, $cNmNk.default)({\n props: inProps,\n name: \"MuiAccordion\"\n });\n const { children: childrenProp, className: className, defaultExpanded: defaultExpanded = false, disabled: disabled = false, disableGutters: disableGutters = false, expanded: expandedProp, onChange: onChange, square: square = false, TransitionComponent: TransitionComponent = (0, $ko2mC.default), TransitionProps: TransitionProps } = props, other = (0, $79yYo.default)(props, $82b62a26c616bf31$var$_excluded);\n const [expanded, setExpandedState] = (0, $6Apvh.default)({\n controlled: expandedProp,\n default: defaultExpanded,\n name: \"Accordion\",\n state: \"expanded\"\n });\n const handleChange = $70fFQ.useCallback((event)=>{\n setExpandedState(!expanded);\n if (onChange) onChange(event, !expanded);\n }, [\n expanded,\n onChange,\n setExpandedState\n ]);\n const [summary, ...children] = $70fFQ.Children.toArray(childrenProp);\n const contextValue = $70fFQ.useMemo(()=>({\n expanded: expanded,\n disabled: disabled,\n disableGutters: disableGutters,\n toggle: handleChange\n }), [\n expanded,\n disabled,\n disableGutters,\n handleChange\n ]);\n const ownerState = (0, $20MOv.default)({}, props, {\n square: square,\n disabled: disabled,\n disableGutters: disableGutters,\n expanded: expanded\n });\n const classes = $82b62a26c616bf31$var$useUtilityClasses(ownerState);\n return /*#__PURE__*/ (0, $4x3bm.jsxs)($82b62a26c616bf31$var$AccordionRoot, (0, $20MOv.default)({\n className: (0, $gjktY.default)(classes.root, className),\n ref: ref,\n ownerState: ownerState,\n square: square\n }, other, {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $frduM.default).Provider, {\n value: contextValue,\n children: summary\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)(TransitionComponent, (0, $20MOv.default)({\n in: expanded,\n timeout: \"auto\"\n }, TransitionProps, {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n \"aria-labelledby\": summary.props.id,\n id: summary.props[\"aria-controls\"],\n role: \"region\",\n className: classes.region,\n children: children\n })\n }))\n ]\n }));\n});\nvar $82b62a26c616bf31$export$2e2bcd8739ae039 = $82b62a26c616bf31$var$Accordion;\n\n});\nparcelRegister(\"8q2ES\", function(module, exports) {\n\"use strict\";\n\nmodule.exports = (parcelRequire(\"huhRz\"));\n\n});\nparcelRegister(\"huhRz\", function(module, exports) {\n\n$parcel$export(module.exports, \"ContextConsumer\", function () { return $cbb31839606066a8$export$a7c73072b1a182ae; }, function (v) { return $cbb31839606066a8$export$a7c73072b1a182ae = v; });\n$parcel$export(module.exports, \"ContextProvider\", function () { return $cbb31839606066a8$export$9f27bc3417b4524d; }, function (v) { return $cbb31839606066a8$export$9f27bc3417b4524d = v; });\n$parcel$export(module.exports, \"Element\", function () { return $cbb31839606066a8$export$db77ccec0bb4ccac; }, function (v) { return $cbb31839606066a8$export$db77ccec0bb4ccac = v; });\n$parcel$export(module.exports, \"ForwardRef\", function () { return $cbb31839606066a8$export$8392c0c9d3dcbd35; }, function (v) { return $cbb31839606066a8$export$8392c0c9d3dcbd35 = v; });\n$parcel$export(module.exports, \"Fragment\", function () { return $cbb31839606066a8$export$ffb0004e005737fa; }, function (v) { return $cbb31839606066a8$export$ffb0004e005737fa = v; });\n$parcel$export(module.exports, \"Lazy\", function () { return $cbb31839606066a8$export$b624eff549462981; }, function (v) { return $cbb31839606066a8$export$b624eff549462981 = v; });\n$parcel$export(module.exports, \"Memo\", function () { return $cbb31839606066a8$export$7897aa7841a5380c; }, function (v) { return $cbb31839606066a8$export$7897aa7841a5380c = v; });\n$parcel$export(module.exports, \"Portal\", function () { return $cbb31839606066a8$export$602eac185826482c; }, function (v) { return $cbb31839606066a8$export$602eac185826482c = v; });\n$parcel$export(module.exports, \"Profiler\", function () { return $cbb31839606066a8$export$e2c29f18771995cb; }, function (v) { return $cbb31839606066a8$export$e2c29f18771995cb = v; });\n$parcel$export(module.exports, \"StrictMode\", function () { return $cbb31839606066a8$export$5f8d39834fd61797; }, function (v) { return $cbb31839606066a8$export$5f8d39834fd61797 = v; });\n$parcel$export(module.exports, \"Suspense\", function () { return $cbb31839606066a8$export$74bf444e3cd11ea5; }, function (v) { return $cbb31839606066a8$export$74bf444e3cd11ea5 = v; });\n$parcel$export(module.exports, \"isAsyncMode\", function () { return $cbb31839606066a8$export$92387174baf9b227; }, function (v) { return $cbb31839606066a8$export$92387174baf9b227 = v; });\n$parcel$export(module.exports, \"isConcurrentMode\", function () { return $cbb31839606066a8$export$ec112efeb987d9c6; }, function (v) { return $cbb31839606066a8$export$ec112efeb987d9c6 = v; });\n$parcel$export(module.exports, \"isContextConsumer\", function () { return $cbb31839606066a8$export$b706b080d889d2c9; }, function (v) { return $cbb31839606066a8$export$b706b080d889d2c9 = v; });\n$parcel$export(module.exports, \"isContextProvider\", function () { return $cbb31839606066a8$export$5be5a87408f70ddc; }, function (v) { return $cbb31839606066a8$export$5be5a87408f70ddc = v; });\n$parcel$export(module.exports, \"isElement\", function () { return $cbb31839606066a8$export$45a5e7f76e0caa8d; }, function (v) { return $cbb31839606066a8$export$45a5e7f76e0caa8d = v; });\n$parcel$export(module.exports, \"isForwardRef\", function () { return $cbb31839606066a8$export$455c2e768291efa6; }, function (v) { return $cbb31839606066a8$export$455c2e768291efa6 = v; });\n$parcel$export(module.exports, \"isFragment\", function () { return $cbb31839606066a8$export$9522e17588c12572; }, function (v) { return $cbb31839606066a8$export$9522e17588c12572 = v; });\n$parcel$export(module.exports, \"isLazy\", function () { return $cbb31839606066a8$export$2110ac352bb060b9; }, function (v) { return $cbb31839606066a8$export$2110ac352bb060b9 = v; });\n$parcel$export(module.exports, \"isMemo\", function () { return $cbb31839606066a8$export$56885ab8b9c456ab; }, function (v) { return $cbb31839606066a8$export$56885ab8b9c456ab = v; });\n$parcel$export(module.exports, \"isPortal\", function () { return $cbb31839606066a8$export$d927fcb6adf8f9de; }, function (v) { return $cbb31839606066a8$export$d927fcb6adf8f9de = v; });\n$parcel$export(module.exports, \"isProfiler\", function () { return $cbb31839606066a8$export$b82d16f27459e05a; }, function (v) { return $cbb31839606066a8$export$b82d16f27459e05a = v; });\n$parcel$export(module.exports, \"isStrictMode\", function () { return $cbb31839606066a8$export$522c17b4f5e123e8; }, function (v) { return $cbb31839606066a8$export$522c17b4f5e123e8 = v; });\n$parcel$export(module.exports, \"isSuspense\", function () { return $cbb31839606066a8$export$1aabd8a0274ecfd6; }, function (v) { return $cbb31839606066a8$export$1aabd8a0274ecfd6 = v; });\n$parcel$export(module.exports, \"isValidElementType\", function () { return $cbb31839606066a8$export$9b621391a187a31a; }, function (v) { return $cbb31839606066a8$export$9b621391a187a31a = v; });\n$parcel$export(module.exports, \"typeOf\", function () { return $cbb31839606066a8$export$f5bbd400c2f4426f; }, function (v) { return $cbb31839606066a8$export$f5bbd400c2f4426f = v; });\n/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */ var $cbb31839606066a8$export$a7c73072b1a182ae;\nvar $cbb31839606066a8$export$9f27bc3417b4524d;\nvar $cbb31839606066a8$export$db77ccec0bb4ccac;\nvar $cbb31839606066a8$export$8392c0c9d3dcbd35;\nvar $cbb31839606066a8$export$ffb0004e005737fa;\nvar $cbb31839606066a8$export$b624eff549462981;\nvar $cbb31839606066a8$export$7897aa7841a5380c;\nvar $cbb31839606066a8$export$602eac185826482c;\nvar $cbb31839606066a8$export$e2c29f18771995cb;\nvar $cbb31839606066a8$export$5f8d39834fd61797;\nvar $cbb31839606066a8$export$74bf444e3cd11ea5;\nvar $cbb31839606066a8$export$92387174baf9b227;\nvar $cbb31839606066a8$export$ec112efeb987d9c6;\nvar $cbb31839606066a8$export$b706b080d889d2c9;\nvar $cbb31839606066a8$export$5be5a87408f70ddc;\nvar $cbb31839606066a8$export$45a5e7f76e0caa8d;\nvar $cbb31839606066a8$export$455c2e768291efa6;\nvar $cbb31839606066a8$export$9522e17588c12572;\nvar $cbb31839606066a8$export$2110ac352bb060b9;\nvar $cbb31839606066a8$export$56885ab8b9c456ab;\nvar $cbb31839606066a8$export$d927fcb6adf8f9de;\nvar $cbb31839606066a8$export$b82d16f27459e05a;\nvar $cbb31839606066a8$export$522c17b4f5e123e8;\nvar $cbb31839606066a8$export$1aabd8a0274ecfd6;\nvar $cbb31839606066a8$export$9b621391a187a31a;\nvar $cbb31839606066a8$export$f5bbd400c2f4426f;\n\"use strict\";\nvar $cbb31839606066a8$var$b = 60103, $cbb31839606066a8$var$c = 60106, $cbb31839606066a8$var$d = 60107, $cbb31839606066a8$var$e = 60108, $cbb31839606066a8$var$f = 60114, $cbb31839606066a8$var$g = 60109, $cbb31839606066a8$var$h = 60110, $cbb31839606066a8$var$k = 60112, $cbb31839606066a8$var$l = 60113, $cbb31839606066a8$var$m = 60120, $cbb31839606066a8$var$n = 60115, $cbb31839606066a8$var$p = 60116, $cbb31839606066a8$var$q = 60121, $cbb31839606066a8$var$r = 60122, $cbb31839606066a8$var$u = 60117, $cbb31839606066a8$var$v = 60129, $cbb31839606066a8$var$w = 60131;\nif (\"function\" === typeof Symbol && Symbol.for) {\n var $cbb31839606066a8$var$x = Symbol.for;\n $cbb31839606066a8$var$b = $cbb31839606066a8$var$x(\"react.element\");\n $cbb31839606066a8$var$c = $cbb31839606066a8$var$x(\"react.portal\");\n $cbb31839606066a8$var$d = $cbb31839606066a8$var$x(\"react.fragment\");\n $cbb31839606066a8$var$e = $cbb31839606066a8$var$x(\"react.strict_mode\");\n $cbb31839606066a8$var$f = $cbb31839606066a8$var$x(\"react.profiler\");\n $cbb31839606066a8$var$g = $cbb31839606066a8$var$x(\"react.provider\");\n $cbb31839606066a8$var$h = $cbb31839606066a8$var$x(\"react.context\");\n $cbb31839606066a8$var$k = $cbb31839606066a8$var$x(\"react.forward_ref\");\n $cbb31839606066a8$var$l = $cbb31839606066a8$var$x(\"react.suspense\");\n $cbb31839606066a8$var$m = $cbb31839606066a8$var$x(\"react.suspense_list\");\n $cbb31839606066a8$var$n = $cbb31839606066a8$var$x(\"react.memo\");\n $cbb31839606066a8$var$p = $cbb31839606066a8$var$x(\"react.lazy\");\n $cbb31839606066a8$var$q = $cbb31839606066a8$var$x(\"react.block\");\n $cbb31839606066a8$var$r = $cbb31839606066a8$var$x(\"react.server.block\");\n $cbb31839606066a8$var$u = $cbb31839606066a8$var$x(\"react.fundamental\");\n $cbb31839606066a8$var$v = $cbb31839606066a8$var$x(\"react.debug_trace_mode\");\n $cbb31839606066a8$var$w = $cbb31839606066a8$var$x(\"react.legacy_hidden\");\n}\nfunction $cbb31839606066a8$var$y(a) {\n if (\"object\" === typeof a && null !== a) {\n var t = a.$$typeof;\n switch(t){\n case $cbb31839606066a8$var$b:\n switch(a = a.type, a){\n case $cbb31839606066a8$var$d:\n case $cbb31839606066a8$var$f:\n case $cbb31839606066a8$var$e:\n case $cbb31839606066a8$var$l:\n case $cbb31839606066a8$var$m:\n return a;\n default:\n switch(a = a && a.$$typeof, a){\n case $cbb31839606066a8$var$h:\n case $cbb31839606066a8$var$k:\n case $cbb31839606066a8$var$p:\n case $cbb31839606066a8$var$n:\n case $cbb31839606066a8$var$g:\n return a;\n default:\n return t;\n }\n }\n case $cbb31839606066a8$var$c:\n return t;\n }\n }\n}\nvar $cbb31839606066a8$var$z = $cbb31839606066a8$var$g, $cbb31839606066a8$var$A = $cbb31839606066a8$var$b, $cbb31839606066a8$var$B = $cbb31839606066a8$var$k, $cbb31839606066a8$var$C = $cbb31839606066a8$var$d, $cbb31839606066a8$var$D = $cbb31839606066a8$var$p, $cbb31839606066a8$var$E = $cbb31839606066a8$var$n, $cbb31839606066a8$var$F = $cbb31839606066a8$var$c, $cbb31839606066a8$var$G = $cbb31839606066a8$var$f, $cbb31839606066a8$var$H = $cbb31839606066a8$var$e, $cbb31839606066a8$var$I = $cbb31839606066a8$var$l;\n$cbb31839606066a8$export$a7c73072b1a182ae = $cbb31839606066a8$var$h;\n$cbb31839606066a8$export$9f27bc3417b4524d = $cbb31839606066a8$var$z;\n$cbb31839606066a8$export$db77ccec0bb4ccac = $cbb31839606066a8$var$A;\n$cbb31839606066a8$export$8392c0c9d3dcbd35 = $cbb31839606066a8$var$B;\n$cbb31839606066a8$export$ffb0004e005737fa = $cbb31839606066a8$var$C;\n$cbb31839606066a8$export$b624eff549462981 = $cbb31839606066a8$var$D;\n$cbb31839606066a8$export$7897aa7841a5380c = $cbb31839606066a8$var$E;\n$cbb31839606066a8$export$602eac185826482c = $cbb31839606066a8$var$F;\n$cbb31839606066a8$export$e2c29f18771995cb = $cbb31839606066a8$var$G;\n$cbb31839606066a8$export$5f8d39834fd61797 = $cbb31839606066a8$var$H;\n$cbb31839606066a8$export$74bf444e3cd11ea5 = $cbb31839606066a8$var$I;\n$cbb31839606066a8$export$92387174baf9b227 = function() {\n return !1;\n};\n$cbb31839606066a8$export$ec112efeb987d9c6 = function() {\n return !1;\n};\n$cbb31839606066a8$export$b706b080d889d2c9 = function(a) {\n return $cbb31839606066a8$var$y(a) === $cbb31839606066a8$var$h;\n};\n$cbb31839606066a8$export$5be5a87408f70ddc = function(a) {\n return $cbb31839606066a8$var$y(a) === $cbb31839606066a8$var$g;\n};\n$cbb31839606066a8$export$45a5e7f76e0caa8d = function(a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === $cbb31839606066a8$var$b;\n};\n$cbb31839606066a8$export$455c2e768291efa6 = function(a) {\n return $cbb31839606066a8$var$y(a) === $cbb31839606066a8$var$k;\n};\n$cbb31839606066a8$export$9522e17588c12572 = function(a) {\n return $cbb31839606066a8$var$y(a) === $cbb31839606066a8$var$d;\n};\n$cbb31839606066a8$export$2110ac352bb060b9 = function(a) {\n return $cbb31839606066a8$var$y(a) === $cbb31839606066a8$var$p;\n};\n$cbb31839606066a8$export$56885ab8b9c456ab = function(a) {\n return $cbb31839606066a8$var$y(a) === $cbb31839606066a8$var$n;\n};\n$cbb31839606066a8$export$d927fcb6adf8f9de = function(a) {\n return $cbb31839606066a8$var$y(a) === $cbb31839606066a8$var$c;\n};\n$cbb31839606066a8$export$b82d16f27459e05a = function(a) {\n return $cbb31839606066a8$var$y(a) === $cbb31839606066a8$var$f;\n};\n$cbb31839606066a8$export$522c17b4f5e123e8 = function(a) {\n return $cbb31839606066a8$var$y(a) === $cbb31839606066a8$var$e;\n};\n$cbb31839606066a8$export$1aabd8a0274ecfd6 = function(a) {\n return $cbb31839606066a8$var$y(a) === $cbb31839606066a8$var$l;\n};\n$cbb31839606066a8$export$9b621391a187a31a = function(a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === $cbb31839606066a8$var$d || a === $cbb31839606066a8$var$f || a === $cbb31839606066a8$var$v || a === $cbb31839606066a8$var$e || a === $cbb31839606066a8$var$l || a === $cbb31839606066a8$var$m || a === $cbb31839606066a8$var$w || \"object\" === typeof a && null !== a && (a.$$typeof === $cbb31839606066a8$var$p || a.$$typeof === $cbb31839606066a8$var$n || a.$$typeof === $cbb31839606066a8$var$g || a.$$typeof === $cbb31839606066a8$var$h || a.$$typeof === $cbb31839606066a8$var$k || a.$$typeof === $cbb31839606066a8$var$u || a.$$typeof === $cbb31839606066a8$var$q || a[0] === $cbb31839606066a8$var$r) ? !0 : !1;\n};\n$cbb31839606066a8$export$f5bbd400c2f4426f = $cbb31839606066a8$var$y;\n\n});\n\n\nparcelRegister(\"ko2mC\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $03d483a4f287dd31$export$2e2bcd8739ae039; });\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $gjktY = parcelRequire(\"gjktY\");\n\n\nvar $dxolJ = parcelRequire(\"dxolJ\");\n\n\nvar $8dWxZ = parcelRequire(\"8dWxZ\");\n\nvar $71Pr4 = parcelRequire(\"71Pr4\");\n\nvar $cNmNk = parcelRequire(\"cNmNk\");\n\nvar $a3nje = parcelRequire(\"a3nje\");\n\nvar $ceSe6 = parcelRequire(\"ceSe6\");\n\nvar $2mnfJ = parcelRequire(\"2mnfJ\");\n\nvar $5Up1l = parcelRequire(\"5Up1l\");\n\nvar $8zTpR = parcelRequire(\"8zTpR\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nconst $03d483a4f287dd31$var$_excluded = [\n \"addEndListener\",\n \"children\",\n \"className\",\n \"collapsedSize\",\n \"component\",\n \"easing\",\n \"in\",\n \"onEnter\",\n \"onEntered\",\n \"onEntering\",\n \"onExit\",\n \"onExited\",\n \"onExiting\",\n \"orientation\",\n \"style\",\n \"timeout\",\n \"TransitionComponent\"\n];\nconst $03d483a4f287dd31$var$useUtilityClasses = (ownerState)=>{\n const { orientation: orientation, classes: classes } = ownerState;\n const slots = {\n root: [\n \"root\",\n `${orientation}`\n ],\n entered: [\n \"entered\"\n ],\n hidden: [\n \"hidden\"\n ],\n wrapper: [\n \"wrapper\",\n `${orientation}`\n ],\n wrapperInner: [\n \"wrapperInner\",\n `${orientation}`\n ]\n };\n return (0, $8dWxZ.default)(slots, (0, $8zTpR.getCollapseUtilityClass), classes);\n};\nconst $03d483a4f287dd31$var$CollapseRoot = (0, $71Pr4.default)(\"div\", {\n name: \"MuiCollapse\",\n slot: \"Root\",\n overridesResolver: (props, styles)=>{\n const { ownerState: ownerState } = props;\n return [\n styles.root,\n styles[ownerState.orientation],\n ownerState.state === \"entered\" && styles.entered,\n ownerState.state === \"exited\" && !ownerState.in && ownerState.collapsedSize === \"0px\" && styles.hidden\n ];\n }\n})(({ theme: theme, ownerState: ownerState })=>(0, $20MOv.default)({\n height: 0,\n overflow: \"hidden\",\n transition: theme.transitions.create(\"height\")\n }, ownerState.orientation === \"horizontal\" && {\n height: \"auto\",\n width: 0,\n transition: theme.transitions.create(\"width\")\n }, ownerState.state === \"entered\" && (0, $20MOv.default)({\n height: \"auto\",\n overflow: \"visible\"\n }, ownerState.orientation === \"horizontal\" && {\n width: \"auto\"\n }), ownerState.state === \"exited\" && !ownerState.in && ownerState.collapsedSize === \"0px\" && {\n visibility: \"hidden\"\n }));\nconst $03d483a4f287dd31$var$CollapseWrapper = (0, $71Pr4.default)(\"div\", {\n name: \"MuiCollapse\",\n slot: \"Wrapper\",\n overridesResolver: (props, styles)=>styles.wrapper\n})(({ ownerState: ownerState })=>(0, $20MOv.default)({\n // Hack to get children with a negative margin to not falsify the height computation.\n display: \"flex\",\n width: \"100%\"\n }, ownerState.orientation === \"horizontal\" && {\n width: \"auto\",\n height: \"100%\"\n }));\nconst $03d483a4f287dd31$var$CollapseWrapperInner = (0, $71Pr4.default)(\"div\", {\n name: \"MuiCollapse\",\n slot: \"WrapperInner\",\n overridesResolver: (props, styles)=>styles.wrapperInner\n})(({ ownerState: ownerState })=>(0, $20MOv.default)({\n width: \"100%\"\n }, ownerState.orientation === \"horizontal\" && {\n width: \"auto\",\n height: \"100%\"\n }));\n/**\n * The Collapse transition is used by the\n * [Vertical Stepper](/components/steppers/#vertical-stepper) StepContent component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */ const $03d483a4f287dd31$var$Collapse = /*#__PURE__*/ $70fFQ.forwardRef(function Collapse(inProps, ref) {\n const props = (0, $cNmNk.default)({\n props: inProps,\n name: \"MuiCollapse\"\n });\n const { addEndListener: addEndListener, children: children, className: className, collapsedSize: collapsedSizeProp = \"0px\", component: component, easing: easing, in: inProp, onEnter: onEnter, onEntered: onEntered, onEntering: onEntering, onExit: onExit, onExited: onExited, onExiting: onExiting, orientation: orientation = \"vertical\", style: style, timeout: timeout = (0, $a3nje.duration).standard, TransitionComponent: // eslint-disable-next-line react/prop-types\n TransitionComponent = (0, $dxolJ.default) } = props, other = (0, $79yYo.default)(props, $03d483a4f287dd31$var$_excluded);\n const ownerState = (0, $20MOv.default)({}, props, {\n orientation: orientation,\n collapsedSize: collapsedSizeProp\n });\n const classes = $03d483a4f287dd31$var$useUtilityClasses(ownerState);\n const theme = (0, $2mnfJ.default)();\n const timer = $70fFQ.useRef();\n const wrapperRef = $70fFQ.useRef(null);\n const autoTransitionDuration = $70fFQ.useRef();\n const collapsedSize = typeof collapsedSizeProp === \"number\" ? `${collapsedSizeProp}px` : collapsedSizeProp;\n const isHorizontal = orientation === \"horizontal\";\n const size = isHorizontal ? \"width\" : \"height\";\n $70fFQ.useEffect(()=>{\n return ()=>{\n clearTimeout(timer.current);\n };\n }, []);\n const nodeRef = $70fFQ.useRef(null);\n const handleRef = (0, $5Up1l.default)(ref, nodeRef);\n const normalizedTransitionCallback = (callback)=>(maybeIsAppearing)=>{\n if (callback) {\n const node = nodeRef.current; // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) callback(node);\n else callback(node, maybeIsAppearing);\n }\n };\n const getWrapperSize = ()=>wrapperRef.current ? wrapperRef.current[isHorizontal ? \"clientWidth\" : \"clientHeight\"] : 0;\n const handleEnter = normalizedTransitionCallback((node, isAppearing)=>{\n if (wrapperRef.current && isHorizontal) // Set absolute position to get the size of collapsed content\n wrapperRef.current.style.position = \"absolute\";\n node.style[size] = collapsedSize;\n if (onEnter) onEnter(node, isAppearing);\n });\n const handleEntering = normalizedTransitionCallback((node, isAppearing)=>{\n const wrapperSize = getWrapperSize();\n if (wrapperRef.current && isHorizontal) // After the size is read reset the position back to default\n wrapperRef.current.style.position = \"\";\n const { duration: transitionDuration, easing: transitionTimingFunction } = (0, $ceSe6.getTransitionProps)({\n style: style,\n timeout: timeout,\n easing: easing\n }, {\n mode: \"enter\"\n });\n if (timeout === \"auto\") {\n const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else node.style.transitionDuration = typeof transitionDuration === \"string\" ? transitionDuration : `${transitionDuration}ms`;\n node.style[size] = `${wrapperSize}px`;\n node.style.transitionTimingFunction = transitionTimingFunction;\n if (onEntering) onEntering(node, isAppearing);\n });\n const handleEntered = normalizedTransitionCallback((node, isAppearing)=>{\n node.style[size] = \"auto\";\n if (onEntered) onEntered(node, isAppearing);\n });\n const handleExit = normalizedTransitionCallback((node)=>{\n node.style[size] = `${getWrapperSize()}px`;\n if (onExit) onExit(node);\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleExiting = normalizedTransitionCallback((node)=>{\n const wrapperSize = getWrapperSize();\n const { duration: transitionDuration, easing: transitionTimingFunction } = (0, $ceSe6.getTransitionProps)({\n style: style,\n timeout: timeout,\n easing: easing\n }, {\n mode: \"exit\"\n });\n if (timeout === \"auto\") {\n // TODO: rename getAutoHeightDuration to something more generic (width support)\n // Actually it just calculates animation duration based on size\n const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else node.style.transitionDuration = typeof transitionDuration === \"string\" ? transitionDuration : `${transitionDuration}ms`;\n node.style[size] = collapsedSize;\n node.style.transitionTimingFunction = transitionTimingFunction;\n if (onExiting) onExiting(node);\n });\n const handleAddEndListener = (next)=>{\n if (timeout === \"auto\") timer.current = setTimeout(next, autoTransitionDuration.current || 0);\n if (addEndListener) // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n };\n return /*#__PURE__*/ (0, $4x3bm.jsx)(TransitionComponent, (0, $20MOv.default)({\n in: inProp,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n nodeRef: nodeRef,\n timeout: timeout === \"auto\" ? null : timeout\n }, other, {\n children: (state, childProps)=>/*#__PURE__*/ (0, $4x3bm.jsx)($03d483a4f287dd31$var$CollapseRoot, (0, $20MOv.default)({\n as: component,\n className: (0, $gjktY.default)(classes.root, className, {\n \"entered\": classes.entered,\n \"exited\": !inProp && collapsedSize === \"0px\" && classes.hidden\n }[state]),\n style: (0, $20MOv.default)({\n [isHorizontal ? \"minWidth\" : \"minHeight\"]: collapsedSize\n }, style),\n ownerState: (0, $20MOv.default)({}, ownerState, {\n state: state\n }),\n ref: handleRef\n }, childProps, {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)($03d483a4f287dd31$var$CollapseWrapper, {\n ownerState: (0, $20MOv.default)({}, ownerState, {\n state: state\n }),\n className: classes.wrapper,\n ref: wrapperRef,\n children: /*#__PURE__*/ (0, $4x3bm.jsx)($03d483a4f287dd31$var$CollapseWrapperInner, {\n ownerState: (0, $20MOv.default)({}, ownerState, {\n state: state\n }),\n className: classes.wrapperInner,\n children: children\n })\n })\n }))\n }));\n});\n$03d483a4f287dd31$var$Collapse.muiSupportAuto = true;\nvar $03d483a4f287dd31$export$2e2bcd8739ae039 = $03d483a4f287dd31$var$Collapse;\n\n});\nparcelRegister(\"8zTpR\", function(module, exports) {\n\n$parcel$export(module.exports, \"getCollapseUtilityClass\", function () { return $63ec941ec5c4d901$export$5162da8f798e0959; });\n\nvar $dtsUs = parcelRequire(\"dtsUs\");\nvar $jLqVN = parcelRequire(\"jLqVN\");\nfunction $63ec941ec5c4d901$export$5162da8f798e0959(slot) {\n return (0, $dtsUs.default)(\"MuiCollapse\", slot);\n}\nconst $63ec941ec5c4d901$var$collapseClasses = (0, $jLqVN.default)(\"MuiCollapse\", [\n \"root\",\n \"horizontal\",\n \"vertical\",\n \"entered\",\n \"hidden\",\n \"wrapper\",\n \"wrapperInner\"\n]);\nvar $63ec941ec5c4d901$export$2e2bcd8739ae039 = $63ec941ec5c4d901$var$collapseClasses;\n\n});\n\n\nparcelRegister(\"frduM\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b3d3d891f1e4c580$export$2e2bcd8739ae039; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n/**\n * @ignore - internal component.\n * @type {React.Context<{} | {expanded: boolean, disabled: boolean, toggle: () => void}>}\n */ const $b3d3d891f1e4c580$var$AccordionContext = /*#__PURE__*/ $70fFQ.createContext({});\nvar $b3d3d891f1e4c580$export$2e2bcd8739ae039 = $b3d3d891f1e4c580$var$AccordionContext;\n\n});\n\nparcelRegister(\"6Apvh\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $4cb9e358b67aff39$export$2e2bcd8739ae039; });\n\nvar $dyLoc = parcelRequire(\"dyLoc\");\nvar $4cb9e358b67aff39$export$2e2bcd8739ae039 = (0, $dyLoc.default);\n\n});\nparcelRegister(\"dyLoc\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9df335d84ec252be$export$2e2bcd8739ae039; });\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */ \nvar $70fFQ = parcelRequire(\"70fFQ\");\nfunction $9df335d84ec252be$export$2e2bcd8739ae039({ controlled: controlled, default: defaultProp, name: name, state: state = \"value\" }) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const { current: isControlled } = $70fFQ.useRef(controlled !== undefined);\n const [valueState, setValue] = $70fFQ.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n const setValueIfUncontrolled = $70fFQ.useCallback((newValue)=>{\n if (!isControlled) setValue(newValue);\n }, []);\n return [\n value,\n setValueIfUncontrolled\n ];\n}\n\n});\n\n\nparcelRegister(\"gCG2L\", function(module, exports) {\n\n$parcel$export(module.exports, \"getAccordionUtilityClass\", function () { return $c1a0cef05ccc1c00$export$80fb6a2cb3f13b8b; });\n$parcel$export(module.exports, \"default\", function () { return $c1a0cef05ccc1c00$export$2e2bcd8739ae039; });\n\nvar $dtsUs = parcelRequire(\"dtsUs\");\nvar $jLqVN = parcelRequire(\"jLqVN\");\nfunction $c1a0cef05ccc1c00$export$80fb6a2cb3f13b8b(slot) {\n return (0, $dtsUs.default)(\"MuiAccordion\", slot);\n}\nconst $c1a0cef05ccc1c00$var$accordionClasses = (0, $jLqVN.default)(\"MuiAccordion\", [\n \"root\",\n \"rounded\",\n \"expanded\",\n \"disabled\",\n \"gutters\",\n \"region\"\n]);\nvar $c1a0cef05ccc1c00$export$2e2bcd8739ae039 = $c1a0cef05ccc1c00$var$accordionClasses;\n\n});\n\n\nparcelRegister(\"fRNcc\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $b8d1f787a316c909$export$2e2bcd8739ae039; });\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\nvar $gjktY = parcelRequire(\"gjktY\");\n\nvar $8dWxZ = parcelRequire(\"8dWxZ\");\n\nvar $71Pr4 = parcelRequire(\"71Pr4\");\n\nvar $cNmNk = parcelRequire(\"cNmNk\");\n\nvar $dAAhM = parcelRequire(\"dAAhM\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nconst $b8d1f787a316c909$var$_excluded = [\n \"className\"\n];\nconst $b8d1f787a316c909$var$useUtilityClasses = (ownerState)=>{\n const { classes: classes } = ownerState;\n const slots = {\n root: [\n \"root\"\n ]\n };\n return (0, $8dWxZ.default)(slots, (0, $dAAhM.getAccordionDetailsUtilityClass), classes);\n};\nconst $b8d1f787a316c909$var$AccordionDetailsRoot = (0, $71Pr4.default)(\"div\", {\n name: \"MuiAccordionDetails\",\n slot: \"Root\",\n overridesResolver: (props, styles)=>styles.root\n})(({ theme: theme })=>({\n padding: theme.spacing(1, 2, 2)\n }));\nconst $b8d1f787a316c909$var$AccordionDetails = /*#__PURE__*/ $70fFQ.forwardRef(function AccordionDetails(inProps, ref) {\n const props = (0, $cNmNk.default)({\n props: inProps,\n name: \"MuiAccordionDetails\"\n });\n const { className: className } = props, other = (0, $79yYo.default)(props, $b8d1f787a316c909$var$_excluded);\n const ownerState = props;\n const classes = $b8d1f787a316c909$var$useUtilityClasses(ownerState);\n return /*#__PURE__*/ (0, $4x3bm.jsx)($b8d1f787a316c909$var$AccordionDetailsRoot, (0, $20MOv.default)({\n className: (0, $gjktY.default)(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nvar $b8d1f787a316c909$export$2e2bcd8739ae039 = $b8d1f787a316c909$var$AccordionDetails;\n\n});\nparcelRegister(\"dAAhM\", function(module, exports) {\n\n$parcel$export(module.exports, \"getAccordionDetailsUtilityClass\", function () { return $9e4ac8c044a25bd8$export$a6afb527becfac26; });\n\nvar $dtsUs = parcelRequire(\"dtsUs\");\nvar $jLqVN = parcelRequire(\"jLqVN\");\nfunction $9e4ac8c044a25bd8$export$a6afb527becfac26(slot) {\n return (0, $dtsUs.default)(\"MuiAccordionDetails\", slot);\n}\nconst $9e4ac8c044a25bd8$var$accordionDetailsClasses = (0, $jLqVN.default)(\"MuiAccordionDetails\", [\n \"root\"\n]);\nvar $9e4ac8c044a25bd8$export$2e2bcd8739ae039 = $9e4ac8c044a25bd8$var$accordionDetailsClasses;\n\n});\n\n\nparcelRegister(\"3PGZI\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $2ca77c537e9f6ce2$export$2e2bcd8739ae039; });\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\nvar $gjktY = parcelRequire(\"gjktY\");\n\nvar $8dWxZ = parcelRequire(\"8dWxZ\");\n\nvar $71Pr4 = parcelRequire(\"71Pr4\");\n\nvar $cNmNk = parcelRequire(\"cNmNk\");\n\nvar $eGmvM = parcelRequire(\"eGmvM\");\n\nvar $frduM = parcelRequire(\"frduM\");\n\nvar $1q7Zr = parcelRequire(\"1q7Zr\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nconst $2ca77c537e9f6ce2$var$_excluded = [\n \"children\",\n \"className\",\n \"expandIcon\",\n \"focusVisibleClassName\",\n \"onClick\"\n];\nconst $2ca77c537e9f6ce2$var$useUtilityClasses = (ownerState)=>{\n const { classes: classes, expanded: expanded, disabled: disabled, disableGutters: disableGutters } = ownerState;\n const slots = {\n root: [\n \"root\",\n expanded && \"expanded\",\n disabled && \"disabled\",\n !disableGutters && \"gutters\"\n ],\n focusVisible: [\n \"focusVisible\"\n ],\n content: [\n \"content\",\n expanded && \"expanded\",\n !disableGutters && \"contentGutters\"\n ],\n expandIconWrapper: [\n \"expandIconWrapper\",\n expanded && \"expanded\"\n ]\n };\n return (0, $8dWxZ.default)(slots, (0, $1q7Zr.getAccordionSummaryUtilityClass), classes);\n};\nconst $2ca77c537e9f6ce2$var$AccordionSummaryRoot = (0, $71Pr4.default)((0, $eGmvM.default), {\n name: \"MuiAccordionSummary\",\n slot: \"Root\",\n overridesResolver: (props, styles)=>styles.root\n})(({ theme: theme, ownerState: ownerState })=>{\n const transition = {\n duration: theme.transitions.duration.shortest\n };\n return (0, $20MOv.default)({\n display: \"flex\",\n minHeight: 48,\n padding: theme.spacing(0, 2),\n transition: theme.transitions.create([\n \"min-height\",\n \"background-color\"\n ], transition),\n [`&.${(0, $1q7Zr.default).focusVisible}`]: {\n backgroundColor: theme.palette.action.focus\n },\n [`&.${(0, $1q7Zr.default).disabled}`]: {\n opacity: theme.palette.action.disabledOpacity\n },\n [`&:hover:not(.${(0, $1q7Zr.default).disabled})`]: {\n cursor: \"pointer\"\n }\n }, !ownerState.disableGutters && {\n [`&.${(0, $1q7Zr.default).expanded}`]: {\n minHeight: 64\n }\n });\n});\nconst $2ca77c537e9f6ce2$var$AccordionSummaryContent = (0, $71Pr4.default)(\"div\", {\n name: \"MuiAccordionSummary\",\n slot: \"Content\",\n overridesResolver: (props, styles)=>styles.content\n})(({ theme: theme, ownerState: ownerState })=>(0, $20MOv.default)({\n display: \"flex\",\n flexGrow: 1,\n margin: \"12px 0\"\n }, !ownerState.disableGutters && {\n transition: theme.transitions.create([\n \"margin\"\n ], {\n duration: theme.transitions.duration.shortest\n }),\n [`&.${(0, $1q7Zr.default).expanded}`]: {\n margin: \"20px 0\"\n }\n }));\nconst $2ca77c537e9f6ce2$var$AccordionSummaryExpandIconWrapper = (0, $71Pr4.default)(\"div\", {\n name: \"MuiAccordionSummary\",\n slot: \"ExpandIconWrapper\",\n overridesResolver: (props, styles)=>styles.expandIconWrapper\n})(({ theme: theme })=>({\n display: \"flex\",\n color: theme.palette.action.active,\n transform: \"rotate(0deg)\",\n transition: theme.transitions.create(\"transform\", {\n duration: theme.transitions.duration.shortest\n }),\n [`&.${(0, $1q7Zr.default).expanded}`]: {\n transform: \"rotate(180deg)\"\n }\n }));\nconst $2ca77c537e9f6ce2$var$AccordionSummary = /*#__PURE__*/ $70fFQ.forwardRef(function AccordionSummary(inProps, ref) {\n const props = (0, $cNmNk.default)({\n props: inProps,\n name: \"MuiAccordionSummary\"\n });\n const { children: children, className: className, expandIcon: expandIcon, focusVisibleClassName: focusVisibleClassName, onClick: onClick } = props, other = (0, $79yYo.default)(props, $2ca77c537e9f6ce2$var$_excluded);\n const { disabled: disabled = false, disableGutters: disableGutters, expanded: expanded, toggle: toggle } = $70fFQ.useContext((0, $frduM.default));\n const handleChange = (event)=>{\n if (toggle) toggle(event);\n if (onClick) onClick(event);\n };\n const ownerState = (0, $20MOv.default)({}, props, {\n expanded: expanded,\n disabled: disabled,\n disableGutters: disableGutters\n });\n const classes = $2ca77c537e9f6ce2$var$useUtilityClasses(ownerState);\n return /*#__PURE__*/ (0, $4x3bm.jsxs)($2ca77c537e9f6ce2$var$AccordionSummaryRoot, (0, $20MOv.default)({\n focusRipple: false,\n disableRipple: true,\n disabled: disabled,\n component: \"div\",\n \"aria-expanded\": expanded,\n className: (0, $gjktY.default)(classes.root, className),\n focusVisibleClassName: (0, $gjktY.default)(classes.focusVisible, focusVisibleClassName),\n onClick: handleChange,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)($2ca77c537e9f6ce2$var$AccordionSummaryContent, {\n className: classes.content,\n ownerState: ownerState,\n children: children\n }),\n expandIcon && /*#__PURE__*/ (0, $4x3bm.jsx)($2ca77c537e9f6ce2$var$AccordionSummaryExpandIconWrapper, {\n className: classes.expandIconWrapper,\n ownerState: ownerState,\n children: expandIcon\n })\n ]\n }));\n});\nvar $2ca77c537e9f6ce2$export$2e2bcd8739ae039 = $2ca77c537e9f6ce2$var$AccordionSummary;\n\n});\nparcelRegister(\"eGmvM\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $ab06733fd85b95ce$export$2e2bcd8739ae039; });\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\nvar $gjktY = parcelRequire(\"gjktY\");\n\n\nvar $8dWxZ = parcelRequire(\"8dWxZ\");\n\nvar $71Pr4 = parcelRequire(\"71Pr4\");\n\nvar $cNmNk = parcelRequire(\"cNmNk\");\n\nvar $5Up1l = parcelRequire(\"5Up1l\");\n\nvar $duaP9 = parcelRequire(\"duaP9\");\n\nvar $kdx2B = parcelRequire(\"kdx2B\");\n\nvar $8BDmq = parcelRequire(\"8BDmq\");\n\nvar $4J5F2 = parcelRequire(\"4J5F2\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nconst $ab06733fd85b95ce$var$_excluded = [\n \"action\",\n \"centerRipple\",\n \"children\",\n \"className\",\n \"component\",\n \"disabled\",\n \"disableRipple\",\n \"disableTouchRipple\",\n \"focusRipple\",\n \"focusVisibleClassName\",\n \"LinkComponent\",\n \"onBlur\",\n \"onClick\",\n \"onContextMenu\",\n \"onDragLeave\",\n \"onFocus\",\n \"onFocusVisible\",\n \"onKeyDown\",\n \"onKeyUp\",\n \"onMouseDown\",\n \"onMouseLeave\",\n \"onMouseUp\",\n \"onTouchEnd\",\n \"onTouchMove\",\n \"onTouchStart\",\n \"tabIndex\",\n \"TouchRippleProps\",\n \"touchRippleRef\",\n \"type\"\n];\nconst $ab06733fd85b95ce$var$useUtilityClasses = (ownerState)=>{\n const { disabled: disabled, focusVisible: focusVisible, focusVisibleClassName: focusVisibleClassName, classes: classes } = ownerState;\n const slots = {\n root: [\n \"root\",\n disabled && \"disabled\",\n focusVisible && \"focusVisible\"\n ]\n };\n const composedClasses = (0, $8dWxZ.default)(slots, (0, $4J5F2.getButtonBaseUtilityClass), classes);\n if (focusVisible && focusVisibleClassName) composedClasses.root += ` ${focusVisibleClassName}`;\n return composedClasses;\n};\nconst $ab06733fd85b95ce$export$7ec0dcc5e3cdcd36 = (0, $71Pr4.default)(\"button\", {\n name: \"MuiButtonBase\",\n slot: \"Root\",\n overridesResolver: (props, styles)=>styles.root\n})({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"relative\",\n boxSizing: \"border-box\",\n WebkitTapHighlightColor: \"transparent\",\n backgroundColor: \"transparent\",\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: \"pointer\",\n userSelect: \"none\",\n verticalAlign: \"middle\",\n MozAppearance: \"none\",\n // Reset\n WebkitAppearance: \"none\",\n // Reset\n textDecoration: \"none\",\n // So we take precedent over the style of a native
element.\n color: \"inherit\",\n \"&::-moz-focus-inner\": {\n borderStyle: \"none\" // Remove Firefox dotted outline.\n },\n [`&.${(0, $4J5F2.default).disabled}`]: {\n pointerEvents: \"none\",\n // Disable link interactions\n cursor: \"default\"\n },\n \"@media print\": {\n colorAdjust: \"exact\"\n }\n});\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */ const $ab06733fd85b95ce$var$ButtonBase = /*#__PURE__*/ $70fFQ.forwardRef(function ButtonBase(inProps, ref) {\n const props = (0, $cNmNk.default)({\n props: inProps,\n name: \"MuiButtonBase\"\n });\n const { action: action, centerRipple: centerRipple = false, children: children, className: className, component: component = \"button\", disabled: disabled = false, disableRipple: disableRipple = false, disableTouchRipple: disableTouchRipple = false, focusRipple: focusRipple = false, LinkComponent: LinkComponent = \"a\", onBlur: onBlur, onClick: onClick, onContextMenu: onContextMenu, onDragLeave: onDragLeave, onFocus: onFocus, onFocusVisible: onFocusVisible, onKeyDown: onKeyDown, onKeyUp: onKeyUp, onMouseDown: onMouseDown, onMouseLeave: onMouseLeave, onMouseUp: onMouseUp, onTouchEnd: onTouchEnd, onTouchMove: onTouchMove, onTouchStart: onTouchStart, tabIndex: tabIndex = 0, TouchRippleProps: TouchRippleProps, touchRippleRef: touchRippleRef, type: type } = props, other = (0, $79yYo.default)(props, $ab06733fd85b95ce$var$_excluded);\n const buttonRef = $70fFQ.useRef(null);\n const rippleRef = $70fFQ.useRef(null);\n const handleRippleRef = (0, $5Up1l.default)(rippleRef, touchRippleRef);\n const { isFocusVisibleRef: isFocusVisibleRef, onFocus: handleFocusVisible, onBlur: handleBlurVisible, ref: focusVisibleRef } = (0, $kdx2B.default)();\n const [focusVisible, setFocusVisible] = $70fFQ.useState(false);\n if (disabled && focusVisible) setFocusVisible(false);\n $70fFQ.useImperativeHandle(action, ()=>({\n focusVisible: ()=>{\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n }), []);\n $70fFQ.useEffect(()=>{\n if (focusVisible && focusRipple && !disableRipple) rippleRef.current.pulsate();\n }, [\n disableRipple,\n focusRipple,\n focusVisible\n ]);\n function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) {\n return (0, $duaP9.default)((event)=>{\n if (eventCallback) eventCallback(event);\n const ignore = skipRippleAction;\n if (!ignore && rippleRef.current) rippleRef.current[rippleAction](event);\n return true;\n });\n }\n const handleMouseDown = useRippleHandler(\"start\", onMouseDown);\n const handleContextMenu = useRippleHandler(\"stop\", onContextMenu);\n const handleDragLeave = useRippleHandler(\"stop\", onDragLeave);\n const handleMouseUp = useRippleHandler(\"stop\", onMouseUp);\n const handleMouseLeave = useRippleHandler(\"stop\", (event)=>{\n if (focusVisible) event.preventDefault();\n if (onMouseLeave) onMouseLeave(event);\n });\n const handleTouchStart = useRippleHandler(\"start\", onTouchStart);\n const handleTouchEnd = useRippleHandler(\"stop\", onTouchEnd);\n const handleTouchMove = useRippleHandler(\"stop\", onTouchMove);\n const handleBlur = useRippleHandler(\"stop\", (event)=>{\n handleBlurVisible(event);\n if (isFocusVisibleRef.current === false) setFocusVisible(false);\n if (onBlur) onBlur(event);\n }, false);\n const handleFocus = (0, $duaP9.default)((event)=>{\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) buttonRef.current = event.currentTarget;\n handleFocusVisible(event);\n if (isFocusVisibleRef.current === true) {\n setFocusVisible(true);\n if (onFocusVisible) onFocusVisible(event);\n }\n if (onFocus) onFocus(event);\n });\n const isNonNativeButton = ()=>{\n const button = buttonRef.current;\n return component && component !== \"button\" && !(button.tagName === \"A\" && button.href);\n };\n /**\n * IE11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */ const keydownRef = $70fFQ.useRef(false);\n const handleKeyDown = (0, $duaP9.default)((event)=>{\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === \" \") {\n keydownRef.current = true;\n rippleRef.current.stop(event, ()=>{\n rippleRef.current.start(event);\n });\n }\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === \" \") event.preventDefault();\n if (onKeyDown) onKeyDown(event);\n // Keyboard accessibility for non interactive elements\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === \"Enter\" && !disabled) {\n event.preventDefault();\n if (onClick) onClick(event);\n }\n });\n const handleKeyUp = (0, $duaP9.default)((event)=>{\n // calling preventDefault in keyUp on a \n * \n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */ var $6bc9fa60c26b2976$var$CSSTransition = /*#__PURE__*/ function(_React$Component) {\n (0, $7PKwc.default)(CSSTransition, _React$Component);\n function CSSTransition() {\n var _this;\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n _this = _React$Component.call.apply(_React$Component, [\n this\n ].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n _this.onEnter = function(node, appearing) {\n _this.removeClasses(node, \"exit\");\n _this.addClass(node, appearing ? \"appear\" : \"enter\", \"base\");\n if (_this.props.onEnter) _this.props.onEnter(node, appearing);\n };\n _this.onEntering = function(node, appearing) {\n var type = appearing ? \"appear\" : \"enter\";\n _this.addClass(node, type, \"active\");\n if (_this.props.onEntering) _this.props.onEntering(node, appearing);\n };\n _this.onEntered = function(node, appearing) {\n var type = appearing ? \"appear\" : \"enter\";\n _this.removeClasses(node, type);\n _this.addClass(node, type, \"done\");\n if (_this.props.onEntered) _this.props.onEntered(node, appearing);\n };\n _this.onExit = function(node) {\n _this.removeClasses(node, \"appear\");\n _this.removeClasses(node, \"enter\");\n _this.addClass(node, \"exit\", \"base\");\n if (_this.props.onExit) _this.props.onExit(node);\n };\n _this.onExiting = function(node) {\n _this.addClass(node, \"exit\", \"active\");\n if (_this.props.onExiting) _this.props.onExiting(node);\n };\n _this.onExited = function(node) {\n _this.removeClasses(node, \"exit\");\n _this.addClass(node, \"exit\", \"done\");\n if (_this.props.onExited) _this.props.onExited(node);\n };\n _this.getClassNames = function(type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === \"string\";\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : \"\";\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n return _this;\n }\n var _proto = CSSTransition.prototype;\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n if (type === \"appear\" && phase === \"done\") className += \" \" + this.getClassNames(\"enter\").doneClassName;\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n if (phase === \"active\") /* eslint-disable no-unused-expressions */ node && node.scrollTop;\n this.appliedClasses[type][phase] = className;\n $6bc9fa60c26b2976$var$_addClass(node, className);\n };\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type], baseClassName = _this$appliedClasses$.base, activeClassName = _this$appliedClasses$.active, doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n if (baseClassName) $6bc9fa60c26b2976$var$removeClass(node, baseClassName);\n if (activeClassName) $6bc9fa60c26b2976$var$removeClass(node, activeClassName);\n if (doneClassName) $6bc9fa60c26b2976$var$removeClass(node, doneClassName);\n };\n _proto.render = function render() {\n var _this$props = this.props, _ = _this$props.classNames, props = (0, $2D2PK.default)(_this$props, [\n \"classNames\"\n ]);\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement((0, $k9fXo.default), (0, $7ZhC4.default)({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n return CSSTransition;\n}((0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).Component);\n$6bc9fa60c26b2976$var$CSSTransition.defaultProps = {\n classNames: \"\"\n};\n$6bc9fa60c26b2976$var$CSSTransition.propTypes = {};\nvar $6bc9fa60c26b2976$export$2e2bcd8739ae039 = $6bc9fa60c26b2976$var$CSSTransition;\n\n});\nparcelRegister(\"7ZhC4\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $5d0be481cc0ae9e2$export$2e2bcd8739ae039; });\nfunction $5d0be481cc0ae9e2$export$2e2bcd8739ae039() {\n $5d0be481cc0ae9e2$export$2e2bcd8739ae039 = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n return target;\n };\n return $5d0be481cc0ae9e2$export$2e2bcd8739ae039.apply(this, arguments);\n}\n\n});\n\nparcelRegister(\"2D2PK\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $1ea16c00aabc307f$export$2e2bcd8739ae039; });\nfunction $1ea16c00aabc307f$export$2e2bcd8739ae039(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\n});\n\nparcelRegister(\"7PKwc\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $5b41616057824375$export$2e2bcd8739ae039; });\nfunction $5b41616057824375$export$2e2bcd8739ae039(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\n});\n\nparcelRegister(\"j16lN\", function(module, exports) {\n\"use strict\";\n\nvar $lvhY9 = parcelRequire(\"lvhY9\");\nmodule.exports.__esModule = true;\nmodule.exports.default = $dd8309651a57028f$var$addClass;\n\nvar $dd8309651a57028f$var$_hasClass = $lvhY9((parcelRequire(\"hhZ5h\")));\nfunction $dd8309651a57028f$var$addClass(element, className) {\n if (element.classList) element.classList.add(className);\n else if (!(0, $dd8309651a57028f$var$_hasClass.default)(element, className)) {\n if (typeof element.className === \"string\") element.className = element.className + \" \" + className;\n else element.setAttribute(\"class\", (element.className && element.className.baseVal || \"\") + \" \" + className);\n }\n}\nmodule.exports = module.exports[\"default\"];\n\n});\nparcelRegister(\"hhZ5h\", function(module, exports) {\n\"use strict\";\nmodule.exports.__esModule = true;\nmodule.exports.default = $c96368430d400a21$var$hasClass;\nfunction $c96368430d400a21$var$hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\nmodule.exports = module.exports[\"default\"];\n\n});\n\n\nparcelRegister(\"4R4FF\", function(module, exports) {\n\"use strict\";\nfunction $388fbc425d3929cb$var$replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", \"g\"), \"$1\").replace(/\\s+/g, \" \").replace(/^\\s*|\\s*$/g, \"\");\n}\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);\n else if (typeof element.className === \"string\") element.className = $388fbc425d3929cb$var$replaceClassName(element.className, className);\n else element.setAttribute(\"class\", $388fbc425d3929cb$var$replaceClassName(element.className && element.className.baseVal || \"\", className));\n};\n\n});\n\nparcelRegister(\"k9fXo\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $eab1069f2d35a284$export$2e2bcd8739ae039; });\n\nvar $2D2PK = parcelRequire(\"2D2PK\");\n\nvar $7PKwc = parcelRequire(\"7PKwc\");\n\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $3glZ1 = parcelRequire(\"3glZ1\");\n\nvar $h8FmF = parcelRequire(\"h8FmF\");\n\n\nvar $4qVLt = parcelRequire(\"4qVLt\");\nvar $eab1069f2d35a284$export$bb38bb9a1161268 = \"unmounted\";\nvar $eab1069f2d35a284$export$84cbff306f539230 = \"exited\";\nvar $eab1069f2d35a284$export$df38205c966be359 = \"entering\";\nvar $eab1069f2d35a284$export$78e9e6e3e014d60a = \"entered\";\nvar $eab1069f2d35a284$export$4aacc83d4d59139f = \"exiting\";\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */ var $eab1069f2d35a284$var$Transition = /*#__PURE__*/ function(_React$Component) {\n (0, $7PKwc.default)(Transition, _React$Component);\n function Transition(props, context) {\n var _this;\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n if (props.in) {\n if (appear) {\n initialStatus = $eab1069f2d35a284$export$84cbff306f539230;\n _this.appearStatus = $eab1069f2d35a284$export$df38205c966be359;\n } else initialStatus = $eab1069f2d35a284$export$78e9e6e3e014d60a;\n } else if (props.unmountOnExit || props.mountOnEnter) initialStatus = $eab1069f2d35a284$export$bb38bb9a1161268;\n else initialStatus = $eab1069f2d35a284$export$84cbff306f539230;\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n if (nextIn && prevState.status === $eab1069f2d35a284$export$bb38bb9a1161268) return {\n status: $eab1069f2d35a284$export$84cbff306f539230\n };\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n var _proto = Transition.prototype;\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n if (prevProps !== this.props) {\n var status = this.state.status;\n if (this.props.in) {\n if (status !== $eab1069f2d35a284$export$df38205c966be359 && status !== $eab1069f2d35a284$export$78e9e6e3e014d60a) nextStatus = $eab1069f2d35a284$export$df38205c966be359;\n } else if (status === $eab1069f2d35a284$export$df38205c966be359 || status === $eab1069f2d35a284$export$78e9e6e3e014d60a) nextStatus = $eab1069f2d35a284$export$4aacc83d4d59139f;\n }\n this.updateStatus(false, nextStatus);\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n if (timeout != null && typeof timeout !== \"number\") {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) mounting = false;\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n var node = (0, (/*@__PURE__*/$parcel$interopDefault($3glZ1))).findDOMNode(this);\n if (nextStatus === $eab1069f2d35a284$export$df38205c966be359) this.performEnter(node, mounting);\n else this.performExit(node);\n } else if (this.props.unmountOnExit && this.state.status === $eab1069f2d35a284$export$84cbff306f539230) this.setState({\n status: $eab1069f2d35a284$export$bb38bb9a1161268\n });\n };\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n if (!mounting && !enter || (0, $h8FmF.default).disabled) {\n this.safeSetState({\n status: $eab1069f2d35a284$export$78e9e6e3e014d60a\n }, function() {\n _this2.props.onEntered(node);\n });\n return;\n }\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: $eab1069f2d35a284$export$df38205c966be359\n }, function() {\n _this2.props.onEntering(node, appearing);\n _this2.onTransitionEnd(node, enterTimeout, function() {\n _this2.safeSetState({\n status: $eab1069f2d35a284$export$78e9e6e3e014d60a\n }, function() {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n if (!exit || (0, $h8FmF.default).disabled) {\n this.safeSetState({\n status: $eab1069f2d35a284$export$84cbff306f539230\n }, function() {\n _this3.props.onExited(node);\n });\n return;\n }\n this.props.onExit(node);\n this.safeSetState({\n status: $eab1069f2d35a284$export$4aacc83d4d59139f\n }, function() {\n _this3.props.onExiting(node);\n _this3.onTransitionEnd(node, timeouts.exit, function() {\n _this3.safeSetState({\n status: $eab1069f2d35a284$export$84cbff306f539230\n }, function() {\n _this3.props.onExited(node);\n });\n });\n });\n };\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n var active = true;\n this.nextCallback = function(event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n this.nextCallback.cancel = function() {\n active = false;\n };\n return this.nextCallback;\n };\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n if (this.props.addEndListener) this.props.addEndListener(node, this.nextCallback);\n if (timeout != null) setTimeout(this.nextCallback, timeout);\n };\n _proto.render = function render() {\n var status = this.state.status;\n if (status === $eab1069f2d35a284$export$bb38bb9a1161268) return null;\n var _this$props = this.props, children = _this$props.children, childProps = (0, $2D2PK.default)(_this$props, [\n \"children\"\n ]); // filter props for Transtition\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n if (typeof children === \"function\") // allows for nested Transitions\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement((0, $4qVLt.default).Provider, {\n value: null\n }, children(status, childProps));\n var child = (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).Children.only(children);\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement((0, $4qVLt.default).Provider, {\n value: null\n }, (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).cloneElement(child, childProps));\n };\n return Transition;\n}((0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).Component);\n$eab1069f2d35a284$var$Transition.contextType = (0, $4qVLt.default);\n$eab1069f2d35a284$var$Transition.propTypes = {};\nfunction $eab1069f2d35a284$var$noop() {}\n$eab1069f2d35a284$var$Transition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: $eab1069f2d35a284$var$noop,\n onEntering: $eab1069f2d35a284$var$noop,\n onEntered: $eab1069f2d35a284$var$noop,\n onExit: $eab1069f2d35a284$var$noop,\n onExiting: $eab1069f2d35a284$var$noop,\n onExited: $eab1069f2d35a284$var$noop\n};\n$eab1069f2d35a284$var$Transition.UNMOUNTED = 0;\n$eab1069f2d35a284$var$Transition.EXITED = 1;\n$eab1069f2d35a284$var$Transition.ENTERING = 2;\n$eab1069f2d35a284$var$Transition.ENTERED = 3;\n$eab1069f2d35a284$var$Transition.EXITING = 4;\nvar $eab1069f2d35a284$export$2e2bcd8739ae039 = $eab1069f2d35a284$var$Transition;\n\n});\nparcelRegister(\"h8FmF\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $c7a34531073c5216$export$2e2bcd8739ae039; });\nvar $c7a34531073c5216$export$2e2bcd8739ae039 = {\n disabled: false\n};\n\n});\n\nparcelRegister(\"4qVLt\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $33a66605070563c4$export$2e2bcd8739ae039; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\nvar $33a66605070563c4$export$2e2bcd8739ae039 = (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createContext(null);\n\n});\n\n\n\nparcelRegister(\"9alAF\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6ac5cba62b059f30$export$2e2bcd8739ae039; });\n\nvar $2D2PK = parcelRequire(\"2D2PK\");\n\nvar $7ZhC4 = parcelRequire(\"7ZhC4\");\n\nvar $7PKwc = parcelRequire(\"7PKwc\");\n\nvar $4DTSS = parcelRequire(\"4DTSS\");\n\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $4qVLt = parcelRequire(\"4qVLt\");\n\nvar $27NWn = parcelRequire(\"27NWn\");\nvar $6ac5cba62b059f30$var$values = Object.values || function(obj) {\n return Object.keys(obj).map(function(k) {\n return obj[k];\n });\n};\nvar $6ac5cba62b059f30$var$defaultProps = {\n component: \"div\",\n childFactory: function childFactory(child) {\n return child;\n }\n};\nvar $6ac5cba62b059f30$var$TransitionGroup = /*#__PURE__*/ function(_React$Component) {\n (0, $7PKwc.default)(TransitionGroup, _React$Component);\n function TransitionGroup(props, context) {\n var _this;\n _this = _React$Component.call(this, props, context) || this;\n var handleExited = _this.handleExited.bind((0, $4DTSS.default)((0, $4DTSS.default)(_this))); // Initial children should all be entering, dependent on appear\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n var _proto = TransitionGroup.prototype;\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children, handleExited = _ref.handleExited, firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, $27NWn.getInitialChildMapping)(nextProps, handleExited) : (0, $27NWn.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, $27NWn.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n if (child.props.onExited) child.props.onExited(node);\n if (this.mounted) this.setState(function(state) {\n var children = (0, $7ZhC4.default)({}, state.children);\n delete children[child.key];\n return {\n children: children\n };\n });\n };\n _proto.render = function render() {\n var _this$props = this.props, Component = _this$props.component, childFactory = _this$props.childFactory, props = (0, $2D2PK.default)(_this$props, [\n \"component\",\n \"childFactory\"\n ]);\n var contextValue = this.state.contextValue;\n var children = $6ac5cba62b059f30$var$values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n if (Component === null) return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement((0, $4qVLt.default).Provider, {\n value: contextValue\n }, children);\n return (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement((0, $4qVLt.default).Provider, {\n value: contextValue\n }, (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).createElement(Component, props, children));\n };\n return TransitionGroup;\n}((0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).Component);\n$6ac5cba62b059f30$var$TransitionGroup.propTypes = {};\n$6ac5cba62b059f30$var$TransitionGroup.defaultProps = $6ac5cba62b059f30$var$defaultProps;\nvar $6ac5cba62b059f30$export$2e2bcd8739ae039 = $6ac5cba62b059f30$var$TransitionGroup;\n\n});\nparcelRegister(\"4DTSS\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $361627601b79af25$export$2e2bcd8739ae039; });\nfunction $361627601b79af25$export$2e2bcd8739ae039(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\n\n});\n\nparcelRegister(\"27NWn\", function(module, exports) {\n\n$parcel$export(module.exports, \"getChildMapping\", function () { return $18c2f95c83e72740$export$bbc8a025727ea824; });\n$parcel$export(module.exports, \"getInitialChildMapping\", function () { return $18c2f95c83e72740$export$fa71e2345c31d7a2; });\n$parcel$export(module.exports, \"getNextChildMapping\", function () { return $18c2f95c83e72740$export$36fd1af28d383ec0; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\nfunction $18c2f95c83e72740$export$bbc8a025727ea824(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && (0, $70fFQ.isValidElement)(child) ? mapFn(child) : child;\n };\n var result = Object.create(null);\n if (children) (0, $70fFQ.Children).map(children, function(c) {\n return c;\n }).forEach(function(child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\nfunction $18c2f95c83e72740$export$7a874f95ccf533dd(prev, next) {\n prev = prev || {};\n next = next || {};\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n for(var prevKey in prev){\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else pendingKeys.push(prevKey);\n }\n var i;\n var childMapping = {};\n for(var nextKey in next){\n if (nextKeysPending[nextKey]) for(i = 0; i < nextKeysPending[nextKey].length; i++){\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n for(i = 0; i < pendingKeys.length; i++)childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n return childMapping;\n}\nfunction $18c2f95c83e72740$var$getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\nfunction $18c2f95c83e72740$export$fa71e2345c31d7a2(props, onExited) {\n return $18c2f95c83e72740$export$bbc8a025727ea824(props.children, function(child) {\n return (0, $70fFQ.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: $18c2f95c83e72740$var$getProp(child, \"appear\", props),\n enter: $18c2f95c83e72740$var$getProp(child, \"enter\", props),\n exit: $18c2f95c83e72740$var$getProp(child, \"exit\", props)\n });\n });\n}\nfunction $18c2f95c83e72740$export$36fd1af28d383ec0(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = $18c2f95c83e72740$export$bbc8a025727ea824(nextProps.children);\n var children = $18c2f95c83e72740$export$7a874f95ccf533dd(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function(key) {\n var child = children[key];\n if (!(0, $70fFQ.isValidElement)(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = (0, $70fFQ.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n if (hasNext && (!hasPrev || isLeaving)) // console.log('entering', key)\n children[key] = (0, $70fFQ.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: $18c2f95c83e72740$var$getProp(child, \"exit\", nextProps),\n enter: $18c2f95c83e72740$var$getProp(child, \"enter\", nextProps)\n });\n else if (!hasNext && hasPrev && !isLeaving) // item is old (exiting)\n // console.log('leaving', key)\n children[key] = (0, $70fFQ.cloneElement)(child, {\n in: false\n });\n else if (hasNext && hasPrev && (0, $70fFQ.isValidElement)(prevChild)) // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = (0, $70fFQ.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: $18c2f95c83e72740$var$getProp(child, \"exit\", nextProps),\n enter: $18c2f95c83e72740$var$getProp(child, \"enter\", nextProps)\n });\n });\n return children;\n}\n\n});\n\n\n\nparcelRegister(\"7pHcK\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $565c61c0888a77b3$export$2e2bcd8739ae039; });\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nparcelRequire(\"70fFQ\");\n\nvar $8VJ2N = parcelRequire(\"8VJ2N\");\nvar $1mImZ = parcelRequire(\"1mImZ\");\n\nvar $awtVx = parcelRequire(\"awtVx\");\nfunction $565c61c0888a77b3$export$2e2bcd8739ae039({ children: children, header: header }) {\n return /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $1mImZ.default), {\n sx: {\n overflow: \"auto\"\n },\n className: \"layout--panel\",\n elevation: 0,\n square: true,\n children: [\n header && /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $8VJ2N.default), {\n alignItems: \"center\",\n className: \"header\",\n container: true,\n spacing: 0,\n wrap: \"nowrap\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $8VJ2N.default), {\n item: true,\n xs: \"auto\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $awtVx.default), {})\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $8VJ2N.default), {\n item: true,\n xs: true,\n children: header\n })\n ]\n }),\n children\n ]\n });\n}\n\n});\nparcelRegister(\"awtVx\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $7a941b6b0237c0a9$export$2e2bcd8739ae039; });\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nparcelRequire(\"70fFQ\");\n\nvar $cGU07 = parcelRequire(\"cGU07\");\n\nvar $8r5DD = parcelRequire(\"8r5DD\");\n\nvar $iWaGk = parcelRequire(\"iWaGk\");\nconst $7a941b6b0237c0a9$var$SidebarToggle = ()=>{\n const { uiStore: uiStore } = (0, $iWaGk.default)();\n const handleExpand = ()=>{\n uiStore.setSidebarExpanded(!uiStore.sidebarExpanded);\n };\n const handleBlur = (event)=>{\n var _event_relatedTarget;\n const id = event === null || event === void 0 ? void 0 : (_event_relatedTarget = event.relatedTarget) === null || _event_relatedTarget === void 0 ? void 0 : _event_relatedTarget.id;\n if ([\n \"group-name\",\n \"switch-group\"\n ].includes(id)) return;\n uiStore.setSidebarExpanded(false);\n };\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $cGU07.default), {\n id: \"nav-sidebar-toggle\",\n className: \"sidebar--toggle\",\n \"aria-label\": \"Menu\",\n onBlur: handleBlur,\n onClick: handleExpand,\n size: \"large\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $8r5DD.default), {})\n });\n};\nvar $7a941b6b0237c0a9$export$2e2bcd8739ae039 = $7a941b6b0237c0a9$var$SidebarToggle;\n\n});\nparcelRegister(\"8r5DD\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $624537fc8511f176$export$2e2bcd8739ae039; });\n\nvar $fKdUq = parcelRequire(\"fKdUq\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $624537fc8511f176$export$2e2bcd8739ae039 = (0, $fKdUq.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"\n}), \"Menu\");\n\n});\n\n\n\nparcelRegister(\"4Ghcg\", function(module, exports) {\n\n$parcel$export(module.exports, \"useSelectedBuilding\", function () { return $36886c956e39f87b$export$84b4e7aacf64381a; });\n$parcel$export(module.exports, \"SelectedBuildingProvider\", function () { return $36886c956e39f87b$export$2283a83df7c01d8e; });\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\nconst $36886c956e39f87b$var$SelectedBuildingContext = /*#__PURE__*/ (0, $70fFQ.createContext)();\nconst $36886c956e39f87b$export$84b4e7aacf64381a = ()=>(0, $70fFQ.useContext)($36886c956e39f87b$var$SelectedBuildingContext);\nconst $36886c956e39f87b$export$2283a83df7c01d8e = ({ children: children })=>{\n const [selectedBuilding, setSelectedBuilding] = (0, $70fFQ.useState)(null);\n return /*#__PURE__*/ (0, $4x3bm.jsx)($36886c956e39f87b$var$SelectedBuildingContext.Provider, {\n value: {\n selectedBuilding: selectedBuilding,\n setSelectedBuilding: setSelectedBuilding\n },\n children: children\n });\n};\n\n});\n\nparcelRegister(\"jOtOD\", function(module, exports) {\n\n\n\n\n\n\nmodule.exports = Promise.all([\n (parcelRequire(\"31nVF\"))((parcelRequire(\"c1lIA\")).resolve(\"kiiv1\")),\n (parcelRequire(\"hPc3f\"))((parcelRequire(\"c1lIA\")).resolve(\"6UvQe\")),\n (parcelRequire(\"hPc3f\"))((parcelRequire(\"c1lIA\")).resolve(\"2i8bu\"))\n]).then(()=>parcelRequire(\"5Wt4I\"));\n\n});\n\nparcelRegister(\"6jag2\", function(module, exports) {\n\n\n\n\n\n\n\n\nmodule.exports = Promise.all([\n (parcelRequire(\"31nVF\"))((parcelRequire(\"c1lIA\")).resolve(\"cvSyY\")),\n (parcelRequire(\"hPc3f\"))((parcelRequire(\"c1lIA\")).resolve(\"cYqwX\")),\n (parcelRequire(\"hPc3f\"))((parcelRequire(\"c1lIA\")).resolve(\"616JI\")),\n (parcelRequire(\"hPc3f\"))((parcelRequire(\"c1lIA\")).resolve(\"3XmT6\"))\n]).then(()=>parcelRequire(\"4cmvu\"));\n\n});\n\nparcelRegister(\"991y0\", function(module, exports) {\n\n\n\n\n\n\n\n\nmodule.exports = Promise.all([\n (parcelRequire(\"31nVF\"))((parcelRequire(\"c1lIA\")).resolve(\"fOAr7\")),\n (parcelRequire(\"hPc3f\"))((parcelRequire(\"c1lIA\")).resolve(\"eEl6C\")),\n (parcelRequire(\"hPc3f\"))((parcelRequire(\"c1lIA\")).resolve(\"cYqwX\")),\n (parcelRequire(\"hPc3f\"))((parcelRequire(\"c1lIA\")).resolve(\"ablVK\"))\n]).then(()=>parcelRequire(\"6aTpT\"));\n\n});\n\nparcelRegister(\"cLQwS\", function(module, exports) {\n\n\n\n\n\n\n\n\n\n\n\n\nmodule.exports = Promise.all([\n (parcelRequire(\"31nVF\"))((parcelRequire(\"c1lIA\")).resolve(\"iovf3\")),\n (parcelRequire(\"hPc3f\"))((parcelRequire(\"c1lIA\")).resolve(\"eEl6C\")),\n (parcelRequire(\"hPc3f\"))((parcelRequire(\"c1lIA\")).resolve(\"cYqwX\")),\n (parcelRequire(\"hPc3f\"))((parcelRequire(\"c1lIA\")).resolve(\"616JI\")),\n (parcelRequire(\"hPc3f\"))((parcelRequire(\"c1lIA\")).resolve(\"6UvQe\")),\n (parcelRequire(\"hPc3f\"))((parcelRequire(\"c1lIA\")).resolve(\"6eC7B\"))\n]).then(()=>parcelRequire(\"f1DqQ\"));\n\n});\n\nparcelRegister(\"cFp2b\", function(module, exports) {\n\n\nmodule.exports = (parcelRequire(\"hPc3f\"))((parcelRequire(\"c1lIA\")).resolve(\"1iwPP\")).then(()=>parcelRequire(\"34apt\"));\n\n});\n\nparcelRegister(\"ld7Nh\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $03fc2492d2b6f52e$export$2e2bcd8739ae039; });\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\nvar $gjktY = parcelRequire(\"gjktY\");\n\n\nvar $8dWxZ = parcelRequire(\"8dWxZ\");\n\nvar $1mImZ = parcelRequire(\"1mImZ\");\n\nvar $aAAPW = parcelRequire(\"aAAPW\");\n\nvar $bVfKY = parcelRequire(\"bVfKY\");\n\nvar $cNmNk = parcelRequire(\"cNmNk\");\n\nvar $71Pr4 = parcelRequire(\"71Pr4\");\n\nvar $d0h6u = parcelRequire(\"d0h6u\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nconst $03fc2492d2b6f52e$var$_excluded = [\n \"activeStep\",\n \"backButton\",\n \"className\",\n \"LinearProgressProps\",\n \"nextButton\",\n \"position\",\n \"steps\",\n \"variant\"\n];\nconst $03fc2492d2b6f52e$var$useUtilityClasses = (ownerState)=>{\n const { classes: classes, position: position } = ownerState;\n const slots = {\n root: [\n \"root\",\n `position${(0, $aAAPW.default)(position)}`\n ],\n dots: [\n \"dots\"\n ],\n dot: [\n \"dot\"\n ],\n dotActive: [\n \"dotActive\"\n ],\n progress: [\n \"progress\"\n ]\n };\n return (0, $8dWxZ.default)(slots, (0, $d0h6u.getMobileStepperUtilityClass), classes);\n};\nconst $03fc2492d2b6f52e$var$MobileStepperRoot = (0, $71Pr4.default)((0, $1mImZ.default), {\n name: \"MuiMobileStepper\",\n slot: \"Root\",\n overridesResolver: (props, styles)=>{\n const { ownerState: ownerState } = props;\n return [\n styles.root,\n styles[`position${(0, $aAAPW.default)(ownerState.position)}`]\n ];\n }\n})(({ theme: theme, ownerState: ownerState })=>(0, $20MOv.default)({\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n background: theme.palette.background.default,\n padding: 8\n }, ownerState.position === \"bottom\" && {\n position: \"fixed\",\n bottom: 0,\n left: 0,\n right: 0,\n zIndex: theme.zIndex.mobileStepper\n }, ownerState.position === \"top\" && {\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n zIndex: theme.zIndex.mobileStepper\n }));\nconst $03fc2492d2b6f52e$var$MobileStepperDots = (0, $71Pr4.default)(\"div\", {\n name: \"MuiMobileStepper\",\n slot: \"Dots\",\n overridesResolver: (props, styles)=>styles.dots\n})(({ ownerState: ownerState })=>(0, $20MOv.default)({}, ownerState.variant === \"dots\" && {\n display: \"flex\",\n flexDirection: \"row\"\n }));\nconst $03fc2492d2b6f52e$var$MobileStepperDot = (0, $71Pr4.default)(\"div\", {\n name: \"MuiMobileStepper\",\n slot: \"Dot\",\n shouldForwardProp: (prop)=>(0, $71Pr4.slotShouldForwardProp)(prop) && prop !== \"dotActive\",\n overridesResolver: (props, styles)=>{\n const { dotActive: dotActive } = props;\n return [\n styles.dot,\n dotActive && styles.dotActive\n ];\n }\n})(({ theme: theme, ownerState: ownerState, dotActive: dotActive })=>(0, $20MOv.default)({}, ownerState.variant === \"dots\" && (0, $20MOv.default)({\n transition: theme.transitions.create(\"background-color\", {\n duration: theme.transitions.duration.shortest\n }),\n backgroundColor: theme.palette.action.disabled,\n borderRadius: \"50%\",\n width: 8,\n height: 8,\n margin: \"0 2px\"\n }, dotActive && {\n backgroundColor: theme.palette.primary.main\n })));\nconst $03fc2492d2b6f52e$var$MobileStepperProgress = (0, $71Pr4.default)((0, $bVfKY.default), {\n name: \"MuiMobileStepper\",\n slot: \"Progress\",\n overridesResolver: (props, styles)=>styles.progress\n})(({ ownerState: ownerState })=>(0, $20MOv.default)({}, ownerState.variant === \"progress\" && {\n width: \"50%\"\n }));\nconst $03fc2492d2b6f52e$var$MobileStepper = /*#__PURE__*/ $70fFQ.forwardRef(function MobileStepper(inProps, ref) {\n const props = (0, $cNmNk.default)({\n props: inProps,\n name: \"MuiMobileStepper\"\n });\n const { activeStep: activeStep = 0, backButton: backButton, className: className, LinearProgressProps: LinearProgressProps, nextButton: nextButton, position: position = \"bottom\", steps: steps, variant: variant = \"dots\" } = props, other = (0, $79yYo.default)(props, $03fc2492d2b6f52e$var$_excluded);\n const ownerState = (0, $20MOv.default)({}, props, {\n activeStep: activeStep,\n position: position,\n variant: variant\n });\n const classes = $03fc2492d2b6f52e$var$useUtilityClasses(ownerState);\n return /*#__PURE__*/ (0, $4x3bm.jsxs)($03fc2492d2b6f52e$var$MobileStepperRoot, (0, $20MOv.default)({\n square: true,\n elevation: 0,\n className: (0, $gjktY.default)(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: [\n backButton,\n variant === \"text\" && /*#__PURE__*/ (0, $4x3bm.jsxs)($70fFQ.Fragment, {\n children: [\n activeStep + 1,\n \" / \",\n steps\n ]\n }),\n variant === \"dots\" && /*#__PURE__*/ (0, $4x3bm.jsx)($03fc2492d2b6f52e$var$MobileStepperDots, {\n ownerState: ownerState,\n className: classes.dots,\n children: [\n ...new Array(steps)\n ].map((_, index)=>/*#__PURE__*/ (0, $4x3bm.jsx)($03fc2492d2b6f52e$var$MobileStepperDot, {\n className: (0, $gjktY.default)(classes.dot, index === activeStep && classes.dotActive),\n ownerState: ownerState,\n dotActive: index === activeStep\n }, index))\n }),\n variant === \"progress\" && /*#__PURE__*/ (0, $4x3bm.jsx)($03fc2492d2b6f52e$var$MobileStepperProgress, (0, $20MOv.default)({\n ownerState: ownerState,\n className: classes.progress,\n variant: \"determinate\",\n value: Math.ceil(activeStep / (steps - 1) * 100)\n }, LinearProgressProps)),\n nextButton\n ]\n }));\n});\nvar $03fc2492d2b6f52e$export$2e2bcd8739ae039 = $03fc2492d2b6f52e$var$MobileStepper;\n\n});\nparcelRegister(\"bVfKY\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $8ae13d87deba5729$export$2e2bcd8739ae039; });\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\nvar $gjktY = parcelRequire(\"gjktY\");\n\nvar $8dWxZ = parcelRequire(\"8dWxZ\");\n\nvar $l1z3A = parcelRequire(\"l1z3A\");\nvar $bFVgt = parcelRequire(\"bFVgt\");\n\nvar $aAAPW = parcelRequire(\"aAAPW\");\n\nvar $2mnfJ = parcelRequire(\"2mnfJ\");\n\nvar $71Pr4 = parcelRequire(\"71Pr4\");\n\nvar $cNmNk = parcelRequire(\"cNmNk\");\n\nvar $boaoq = parcelRequire(\"boaoq\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nlet $8ae13d87deba5729$var$_ = (t)=>t, $8ae13d87deba5729$var$t, $8ae13d87deba5729$var$t1, $8ae13d87deba5729$var$t2, $8ae13d87deba5729$var$t3, $8ae13d87deba5729$var$t4, $8ae13d87deba5729$var$t5;\nconst $8ae13d87deba5729$var$_excluded = [\n \"className\",\n \"color\",\n \"value\",\n \"valueBuffer\",\n \"variant\"\n];\nlet $8ae13d87deba5729$var$_1 = (t)=>t, $8ae13d87deba5729$var$_t, $8ae13d87deba5729$var$_t2, $8ae13d87deba5729$var$_t3, $8ae13d87deba5729$var$_t4, $8ae13d87deba5729$var$_t5, $8ae13d87deba5729$var$_t6;\nconst $8ae13d87deba5729$var$TRANSITION_DURATION = 4; // seconds\nconst $8ae13d87deba5729$var$indeterminate1Keyframe = (0, $l1z3A.keyframes)($8ae13d87deba5729$var$_t || ($8ae13d87deba5729$var$_t = $8ae13d87deba5729$var$_1($8ae13d87deba5729$var$t || ($8ae13d87deba5729$var$t = $8ae13d87deba5729$var$_`\n 0% {\n left: -35%;\n right: 100%;\n }\n\n 60% {\n left: 100%;\n right: -90%;\n }\n\n 100% {\n left: 100%;\n right: -90%;\n }\n`))));\nconst $8ae13d87deba5729$var$indeterminate2Keyframe = (0, $l1z3A.keyframes)($8ae13d87deba5729$var$_t2 || ($8ae13d87deba5729$var$_t2 = $8ae13d87deba5729$var$_1($8ae13d87deba5729$var$t1 || ($8ae13d87deba5729$var$t1 = $8ae13d87deba5729$var$_`\n 0% {\n left: -200%;\n right: 100%;\n }\n\n 60% {\n left: 107%;\n right: -8%;\n }\n\n 100% {\n left: 107%;\n right: -8%;\n }\n`))));\nconst $8ae13d87deba5729$var$bufferKeyframe = (0, $l1z3A.keyframes)($8ae13d87deba5729$var$_t3 || ($8ae13d87deba5729$var$_t3 = $8ae13d87deba5729$var$_1($8ae13d87deba5729$var$t2 || ($8ae13d87deba5729$var$t2 = $8ae13d87deba5729$var$_`\n 0% {\n opacity: 1;\n background-position: 0 -23px;\n }\n\n 60% {\n opacity: 0;\n background-position: 0 -23px;\n }\n\n 100% {\n opacity: 1;\n background-position: -200px -23px;\n }\n`))));\nconst $8ae13d87deba5729$var$useUtilityClasses = (ownerState)=>{\n const { classes: classes, variant: variant, color: color } = ownerState;\n const slots = {\n root: [\n \"root\",\n `color${(0, $aAAPW.default)(color)}`,\n variant\n ],\n dashed: [\n \"dashed\",\n `dashedColor${(0, $aAAPW.default)(color)}`\n ],\n bar1: [\n \"bar\",\n `barColor${(0, $aAAPW.default)(color)}`,\n (variant === \"indeterminate\" || variant === \"query\") && \"bar1Indeterminate\",\n variant === \"determinate\" && \"bar1Determinate\",\n variant === \"buffer\" && \"bar1Buffer\"\n ],\n bar2: [\n \"bar\",\n variant !== \"buffer\" && `barColor${(0, $aAAPW.default)(color)}`,\n variant === \"buffer\" && `color${(0, $aAAPW.default)(color)}`,\n (variant === \"indeterminate\" || variant === \"query\") && \"bar2Indeterminate\",\n variant === \"buffer\" && \"bar2Buffer\"\n ]\n };\n return (0, $8dWxZ.default)(slots, (0, $boaoq.getLinearProgressUtilityClass), classes);\n};\nconst $8ae13d87deba5729$var$getColorShade = (theme, color)=>{\n if (color === \"inherit\") return \"currentColor\";\n return theme.palette.mode === \"light\" ? (0, $bFVgt.lighten)(theme.palette[color].main, 0.62) : (0, $bFVgt.darken)(theme.palette[color].main, 0.5);\n};\nconst $8ae13d87deba5729$var$LinearProgressRoot = (0, $71Pr4.default)(\"span\", {\n name: \"MuiLinearProgress\",\n slot: \"Root\",\n overridesResolver: (props, styles)=>{\n const { ownerState: ownerState } = props;\n return [\n styles.root,\n styles[`color${(0, $aAAPW.default)(ownerState.color)}`],\n styles[ownerState.variant]\n ];\n }\n})(({ ownerState: ownerState, theme: theme })=>(0, $20MOv.default)({\n position: \"relative\",\n overflow: \"hidden\",\n display: \"block\",\n height: 4,\n zIndex: 0,\n // Fix Safari's bug during composition of different paint.\n \"@media print\": {\n colorAdjust: \"exact\"\n },\n backgroundColor: $8ae13d87deba5729$var$getColorShade(theme, ownerState.color)\n }, ownerState.color === \"inherit\" && ownerState.variant !== \"buffer\" && {\n backgroundColor: \"none\",\n \"&::before\": {\n content: '\"\"',\n position: \"absolute\",\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n backgroundColor: \"currentColor\",\n opacity: 0.3\n }\n }, ownerState.variant === \"buffer\" && {\n backgroundColor: \"transparent\"\n }, ownerState.variant === \"query\" && {\n transform: \"rotate(180deg)\"\n }));\nconst $8ae13d87deba5729$var$LinearProgressDashed = (0, $71Pr4.default)(\"span\", {\n name: \"MuiLinearProgress\",\n slot: \"Dashed\",\n overridesResolver: (props, styles)=>{\n const { ownerState: ownerState } = props;\n return [\n styles.dashed,\n styles[`dashedColor${(0, $aAAPW.default)(ownerState.color)}`]\n ];\n }\n})(({ ownerState: ownerState, theme: theme })=>{\n const backgroundColor = $8ae13d87deba5729$var$getColorShade(theme, ownerState.color);\n return (0, $20MOv.default)({\n position: \"absolute\",\n marginTop: 0,\n height: \"100%\",\n width: \"100%\"\n }, ownerState.color === \"inherit\" && {\n opacity: 0.3\n }, {\n backgroundImage: `radial-gradient(${backgroundColor} 0%, ${backgroundColor} 16%, transparent 42%)`,\n backgroundSize: \"10px 10px\",\n backgroundPosition: \"0 -23px\"\n });\n}, (0, $l1z3A.css)($8ae13d87deba5729$var$_t4 || ($8ae13d87deba5729$var$_t4 = $8ae13d87deba5729$var$_1($8ae13d87deba5729$var$t3 || ($8ae13d87deba5729$var$t3 = $8ae13d87deba5729$var$_`\n animation: ${0} 3s infinite linear;\n `), 0)), $8ae13d87deba5729$var$bufferKeyframe));\nconst $8ae13d87deba5729$var$LinearProgressBar1 = (0, $71Pr4.default)(\"span\", {\n name: \"MuiLinearProgress\",\n slot: \"Bar1\",\n overridesResolver: (props, styles)=>{\n const { ownerState: ownerState } = props;\n return [\n styles.bar,\n styles[`barColor${(0, $aAAPW.default)(ownerState.color)}`],\n (ownerState.variant === \"indeterminate\" || ownerState.variant === \"query\") && styles.bar1Indeterminate,\n ownerState.variant === \"determinate\" && styles.bar1Determinate,\n ownerState.variant === \"buffer\" && styles.bar1Buffer\n ];\n }\n})(({ ownerState: ownerState, theme: theme })=>(0, $20MOv.default)({\n width: \"100%\",\n position: \"absolute\",\n left: 0,\n bottom: 0,\n top: 0,\n transition: \"transform 0.2s linear\",\n transformOrigin: \"left\",\n backgroundColor: ownerState.color === \"inherit\" ? \"currentColor\" : theme.palette[ownerState.color].main\n }, ownerState.variant === \"determinate\" && {\n transition: `transform .${$8ae13d87deba5729$var$TRANSITION_DURATION}s linear`\n }, ownerState.variant === \"buffer\" && {\n zIndex: 1,\n transition: `transform .${$8ae13d87deba5729$var$TRANSITION_DURATION}s linear`\n }), ({ ownerState: ownerState })=>(ownerState.variant === \"indeterminate\" || ownerState.variant === \"query\") && (0, $l1z3A.css)($8ae13d87deba5729$var$_t5 || ($8ae13d87deba5729$var$_t5 = $8ae13d87deba5729$var$_1($8ae13d87deba5729$var$t4 || ($8ae13d87deba5729$var$t4 = $8ae13d87deba5729$var$_`\n width: auto;\n animation: ${0} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;\n `), 0)), $8ae13d87deba5729$var$indeterminate1Keyframe));\nconst $8ae13d87deba5729$var$LinearProgressBar2 = (0, $71Pr4.default)(\"span\", {\n name: \"MuiLinearProgress\",\n slot: \"Bar2\",\n overridesResolver: (props, styles)=>{\n const { ownerState: ownerState } = props;\n return [\n styles.bar,\n styles[`barColor${(0, $aAAPW.default)(ownerState.color)}`],\n (ownerState.variant === \"indeterminate\" || ownerState.variant === \"query\") && styles.bar2Indeterminate,\n ownerState.variant === \"buffer\" && styles.bar2Buffer\n ];\n }\n})(({ ownerState: ownerState, theme: theme })=>(0, $20MOv.default)({\n width: \"100%\",\n position: \"absolute\",\n left: 0,\n bottom: 0,\n top: 0,\n transition: \"transform 0.2s linear\",\n transformOrigin: \"left\"\n }, ownerState.variant !== \"buffer\" && {\n backgroundColor: ownerState.color === \"inherit\" ? \"currentColor\" : theme.palette[ownerState.color].main\n }, ownerState.color === \"inherit\" && {\n opacity: 0.3\n }, ownerState.variant === \"buffer\" && {\n backgroundColor: $8ae13d87deba5729$var$getColorShade(theme, ownerState.color),\n transition: `transform .${$8ae13d87deba5729$var$TRANSITION_DURATION}s linear`\n }), ({ ownerState: ownerState })=>(ownerState.variant === \"indeterminate\" || ownerState.variant === \"query\") && (0, $l1z3A.css)($8ae13d87deba5729$var$_t6 || ($8ae13d87deba5729$var$_t6 = $8ae13d87deba5729$var$_1($8ae13d87deba5729$var$t5 || ($8ae13d87deba5729$var$t5 = $8ae13d87deba5729$var$_`\n width: auto;\n animation: ${0} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite;\n `), 0)), $8ae13d87deba5729$var$indeterminate2Keyframe));\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */ const $8ae13d87deba5729$var$LinearProgress = /*#__PURE__*/ $70fFQ.forwardRef(function LinearProgress(inProps, ref) {\n const props = (0, $cNmNk.default)({\n props: inProps,\n name: \"MuiLinearProgress\"\n });\n const { className: className, color: color = \"primary\", value: value, valueBuffer: valueBuffer, variant: variant = \"indeterminate\" } = props, other = (0, $79yYo.default)(props, $8ae13d87deba5729$var$_excluded);\n const ownerState = (0, $20MOv.default)({}, props, {\n color: color,\n variant: variant\n });\n const classes = $8ae13d87deba5729$var$useUtilityClasses(ownerState);\n const theme = (0, $2mnfJ.default)();\n const rootProps = {};\n const inlineStyles = {\n bar1: {},\n bar2: {}\n };\n if (variant === \"determinate\" || variant === \"buffer\") {\n if (value !== undefined) {\n rootProps[\"aria-valuenow\"] = Math.round(value);\n rootProps[\"aria-valuemin\"] = 0;\n rootProps[\"aria-valuemax\"] = 100;\n let transform = value - 100;\n if (theme.direction === \"rtl\") transform = -transform;\n inlineStyles.bar1.transform = `translateX(${transform}%)`;\n }\n }\n if (variant === \"buffer\") {\n if (valueBuffer !== undefined) {\n let transform = (valueBuffer || 0) - 100;\n if (theme.direction === \"rtl\") transform = -transform;\n inlineStyles.bar2.transform = `translateX(${transform}%)`;\n }\n }\n return /*#__PURE__*/ (0, $4x3bm.jsxs)($8ae13d87deba5729$var$LinearProgressRoot, (0, $20MOv.default)({\n className: (0, $gjktY.default)(classes.root, className),\n ownerState: ownerState,\n role: \"progressbar\"\n }, rootProps, {\n ref: ref\n }, other, {\n children: [\n variant === \"buffer\" ? /*#__PURE__*/ (0, $4x3bm.jsx)($8ae13d87deba5729$var$LinearProgressDashed, {\n className: classes.dashed,\n ownerState: ownerState\n }) : null,\n /*#__PURE__*/ (0, $4x3bm.jsx)($8ae13d87deba5729$var$LinearProgressBar1, {\n className: classes.bar1,\n ownerState: ownerState,\n style: inlineStyles.bar1\n }),\n variant === \"determinate\" ? null : /*#__PURE__*/ (0, $4x3bm.jsx)($8ae13d87deba5729$var$LinearProgressBar2, {\n className: classes.bar2,\n ownerState: ownerState,\n style: inlineStyles.bar2\n })\n ]\n }));\n});\nvar $8ae13d87deba5729$export$2e2bcd8739ae039 = $8ae13d87deba5729$var$LinearProgress;\n\n});\nparcelRegister(\"boaoq\", function(module, exports) {\n\n$parcel$export(module.exports, \"getLinearProgressUtilityClass\", function () { return $84a9ff6a30a25c37$export$bc8a6ea1eb17d7c6; });\n\nvar $dtsUs = parcelRequire(\"dtsUs\");\nvar $jLqVN = parcelRequire(\"jLqVN\");\nfunction $84a9ff6a30a25c37$export$bc8a6ea1eb17d7c6(slot) {\n return (0, $dtsUs.default)(\"MuiLinearProgress\", slot);\n}\nconst $84a9ff6a30a25c37$var$linearProgressClasses = (0, $jLqVN.default)(\"MuiLinearProgress\", [\n \"root\",\n \"colorPrimary\",\n \"colorSecondary\",\n \"determinate\",\n \"indeterminate\",\n \"buffer\",\n \"query\",\n \"dashed\",\n \"dashedColorPrimary\",\n \"dashedColorSecondary\",\n \"bar\",\n \"barColorPrimary\",\n \"barColorSecondary\",\n \"bar1Indeterminate\",\n \"bar1Determinate\",\n \"bar1Buffer\",\n \"bar2Indeterminate\",\n \"bar2Buffer\"\n]);\nvar $84a9ff6a30a25c37$export$2e2bcd8739ae039 = $84a9ff6a30a25c37$var$linearProgressClasses;\n\n});\n\n\nparcelRegister(\"d0h6u\", function(module, exports) {\n\n$parcel$export(module.exports, \"getMobileStepperUtilityClass\", function () { return $97788ae4d4d39ffb$export$af7da6d60955385e; });\n\nvar $dtsUs = parcelRequire(\"dtsUs\");\nvar $jLqVN = parcelRequire(\"jLqVN\");\nfunction $97788ae4d4d39ffb$export$af7da6d60955385e(slot) {\n return (0, $dtsUs.default)(\"MuiMobileStepper\", slot);\n}\nconst $97788ae4d4d39ffb$var$mobileStepperClasses = (0, $jLqVN.default)(\"MuiMobileStepper\", [\n \"root\",\n \"positionBottom\",\n \"positionTop\",\n \"positionStatic\",\n \"dots\",\n \"dot\",\n \"dotActive\",\n \"progress\"\n]);\nvar $97788ae4d4d39ffb$export$2e2bcd8739ae039 = $97788ae4d4d39ffb$var$mobileStepperClasses;\n\n});\n\n\nparcelRegister(\"ghdbC\", function(module, exports) {\n\"use strict\";\n\nvar $hTVTj = parcelRequire(\"hTVTj\");\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.default = void 0;\n\nvar $bd9876664c58f15a$var$_createSvgIcon = $hTVTj((parcelRequire(\"7Jp6i\")));\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $bd9876664c58f15a$var$_default = (0, $bd9876664c58f15a$var$_createSvgIcon.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z\"\n}), \"CheckOutlined\");\nmodule.exports.default = $bd9876664c58f15a$var$_default;\n\n});\n\nparcelRegister(\"gD8dY\", function(module, exports) {\n\"use strict\";\n\nvar $hTVTj = parcelRequire(\"hTVTj\");\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.default = void 0;\n\nvar $c1b6ab0874df8edd$var$_createSvgIcon = $hTVTj((parcelRequire(\"7Jp6i\")));\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $c1b6ab0874df8edd$var$_default = (0, $c1b6ab0874df8edd$var$_createSvgIcon.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), \"Clear\");\nmodule.exports.default = $c1b6ab0874df8edd$var$_default;\n\n});\n\nparcelRegister(\"ggYS0\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $bd8d5b7e9b78d098$export$2e2bcd8739ae039; });\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\nvar $gjktY = parcelRequire(\"gjktY\");\n\n\nvar $8dWxZ = parcelRequire(\"8dWxZ\");\nvar $b5YPE = parcelRequire(\"b5YPE\");\n\nvar $bFVgt = parcelRequire(\"bFVgt\");\n\nvar $4gFK1 = parcelRequire(\"4gFK1\");\n\nvar $bey3N = parcelRequire(\"bey3N\");\n\nvar $1mImZ = parcelRequire(\"1mImZ\");\n\nvar $cGU07 = parcelRequire(\"cGU07\");\n\nvar $jRqkM = parcelRequire(\"jRqkM\");\n\nvar $1k5uZ = parcelRequire(\"1k5uZ\");\n\nvar $b29Hy = parcelRequire(\"b29Hy\");\n\nvar $4XGo8 = parcelRequire(\"4XGo8\");\n\nvar $d8LGX = parcelRequire(\"d8LGX\");\n\nvar $7AUf9 = parcelRequire(\"7AUf9\");\n\nvar $1MKx1 = parcelRequire(\"1MKx1\");\n\nvar $cNmNk = parcelRequire(\"cNmNk\");\n\nvar $71Pr4 = parcelRequire(\"71Pr4\");\n\nvar $fAmaY = parcelRequire(\"fAmaY\");\n\nvar $aAAPW = parcelRequire(\"aAAPW\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $bd8d5b7e9b78d098$var$_ClearIcon, $bd8d5b7e9b78d098$var$_ArrowDropDownIcon;\nconst $bd8d5b7e9b78d098$var$_excluded = [\n \"autoComplete\",\n \"autoHighlight\",\n \"autoSelect\",\n \"blurOnSelect\",\n \"ChipProps\",\n \"className\",\n \"clearIcon\",\n \"clearOnBlur\",\n \"clearOnEscape\",\n \"clearText\",\n \"closeText\",\n \"componentsProps\",\n \"defaultValue\",\n \"disableClearable\",\n \"disableCloseOnSelect\",\n \"disabled\",\n \"disabledItemsFocusable\",\n \"disableListWrap\",\n \"disablePortal\",\n \"filterOptions\",\n \"filterSelectedOptions\",\n \"forcePopupIcon\",\n \"freeSolo\",\n \"fullWidth\",\n \"getLimitTagsText\",\n \"getOptionDisabled\",\n \"getOptionLabel\",\n \"isOptionEqualToValue\",\n \"groupBy\",\n \"handleHomeEndKeys\",\n \"id\",\n \"includeInputInList\",\n \"inputValue\",\n \"limitTags\",\n \"ListboxComponent\",\n \"ListboxProps\",\n \"loading\",\n \"loadingText\",\n \"multiple\",\n \"noOptionsText\",\n \"onChange\",\n \"onClose\",\n \"onHighlightChange\",\n \"onInputChange\",\n \"onOpen\",\n \"open\",\n \"openOnFocus\",\n \"openText\",\n \"options\",\n \"PaperComponent\",\n \"PopperComponent\",\n \"popupIcon\",\n \"readOnly\",\n \"renderGroup\",\n \"renderInput\",\n \"renderOption\",\n \"renderTags\",\n \"selectOnFocus\",\n \"size\",\n \"value\"\n];\nconst $bd8d5b7e9b78d098$var$useUtilityClasses = (ownerState)=>{\n const { classes: classes, disablePortal: disablePortal, focused: focused, fullWidth: fullWidth, hasClearIcon: hasClearIcon, hasPopupIcon: hasPopupIcon, inputFocused: inputFocused, popupOpen: popupOpen, size: size } = ownerState;\n const slots = {\n root: [\n \"root\",\n focused && \"focused\",\n fullWidth && \"fullWidth\",\n hasClearIcon && \"hasClearIcon\",\n hasPopupIcon && \"hasPopupIcon\"\n ],\n inputRoot: [\n \"inputRoot\"\n ],\n input: [\n \"input\",\n inputFocused && \"inputFocused\"\n ],\n tag: [\n \"tag\",\n `tagSize${(0, $aAAPW.default)(size)}`\n ],\n endAdornment: [\n \"endAdornment\"\n ],\n clearIndicator: [\n \"clearIndicator\"\n ],\n popupIndicator: [\n \"popupIndicator\",\n popupOpen && \"popupIndicatorOpen\"\n ],\n popper: [\n \"popper\",\n disablePortal && \"popperDisablePortal\"\n ],\n paper: [\n \"paper\"\n ],\n listbox: [\n \"listbox\"\n ],\n loading: [\n \"loading\"\n ],\n noOptions: [\n \"noOptions\"\n ],\n option: [\n \"option\"\n ],\n groupLabel: [\n \"groupLabel\"\n ],\n groupUl: [\n \"groupUl\"\n ]\n };\n return (0, $8dWxZ.default)(slots, (0, $fAmaY.getAutocompleteUtilityClass), classes);\n};\nconst $bd8d5b7e9b78d098$var$AutocompleteRoot = (0, $71Pr4.default)(\"div\", {\n name: \"MuiAutocomplete\",\n slot: \"Root\",\n overridesResolver: (props, styles)=>{\n const { ownerState: ownerState } = props;\n const { fullWidth: fullWidth, hasClearIcon: hasClearIcon, hasPopupIcon: hasPopupIcon, inputFocused: inputFocused, size: size } = ownerState;\n return [\n {\n [`& .${(0, $fAmaY.default).tag}`]: styles.tag\n },\n {\n [`& .${(0, $fAmaY.default).tag}`]: styles[`tagSize${(0, $aAAPW.default)(size)}`]\n },\n {\n [`& .${(0, $fAmaY.default).inputRoot}`]: styles.inputRoot\n },\n {\n [`& .${(0, $fAmaY.default).input}`]: styles.input\n },\n {\n [`& .${(0, $fAmaY.default).input}`]: inputFocused && styles.inputFocused\n },\n styles.root,\n fullWidth && styles.fullWidth,\n hasPopupIcon && styles.hasPopupIcon,\n hasClearIcon && styles.hasClearIcon\n ];\n }\n})(({ ownerState: ownerState })=>(0, $20MOv.default)({\n [`&.${(0, $fAmaY.default).focused} .${(0, $fAmaY.default).clearIndicator}`]: {\n visibility: \"visible\"\n },\n /* Avoid double tap issue on iOS */ \"@media (pointer: fine)\": {\n [`&:hover .${(0, $fAmaY.default).clearIndicator}`]: {\n visibility: \"visible\"\n }\n }\n }, ownerState.fullWidth && {\n width: \"100%\"\n }, {\n [`& .${(0, $fAmaY.default).tag}`]: (0, $20MOv.default)({\n margin: 3,\n maxWidth: \"calc(100% - 6px)\"\n }, ownerState.size === \"small\" && {\n margin: 2,\n maxWidth: \"calc(100% - 4px)\"\n }),\n [`& .${(0, $fAmaY.default).inputRoot}`]: {\n flexWrap: \"wrap\",\n [`.${(0, $fAmaY.default).hasPopupIcon}&, .${(0, $fAmaY.default).hasClearIcon}&`]: {\n paddingRight: 30\n },\n [`.${(0, $fAmaY.default).hasPopupIcon}.${(0, $fAmaY.default).hasClearIcon}&`]: {\n paddingRight: 56\n },\n [`& .${(0, $fAmaY.default).input}`]: {\n width: 0,\n minWidth: 30\n }\n },\n [`& .${(0, $1k5uZ.default).root}`]: {\n paddingBottom: 1,\n \"& .MuiInput-input\": {\n padding: \"4px 4px 4px 0px\"\n }\n },\n [`& .${(0, $1k5uZ.default).root}.${(0, $b29Hy.default).sizeSmall}`]: {\n [`& .${(0, $1k5uZ.default).input}`]: {\n padding: \"2px 4px 3px 0\"\n }\n },\n [`& .${(0, $4XGo8.default).root}`]: {\n padding: 9,\n [`.${(0, $fAmaY.default).hasPopupIcon}&, .${(0, $fAmaY.default).hasClearIcon}&`]: {\n paddingRight: 39\n },\n [`.${(0, $fAmaY.default).hasPopupIcon}.${(0, $fAmaY.default).hasClearIcon}&`]: {\n paddingRight: 65\n },\n [`& .${(0, $fAmaY.default).input}`]: {\n padding: \"7.5px 4px 7.5px 6px\"\n },\n [`& .${(0, $fAmaY.default).endAdornment}`]: {\n right: 9\n }\n },\n [`& .${(0, $4XGo8.default).root}.${(0, $b29Hy.default).sizeSmall}`]: {\n padding: 6,\n [`& .${(0, $fAmaY.default).input}`]: {\n padding: \"2.5px 4px 2.5px 6px\"\n }\n },\n [`& .${(0, $d8LGX.default).root}`]: {\n paddingTop: 19,\n paddingLeft: 8,\n [`.${(0, $fAmaY.default).hasPopupIcon}&, .${(0, $fAmaY.default).hasClearIcon}&`]: {\n paddingRight: 39\n },\n [`.${(0, $fAmaY.default).hasPopupIcon}.${(0, $fAmaY.default).hasClearIcon}&`]: {\n paddingRight: 65\n },\n [`& .${(0, $d8LGX.default).input}`]: {\n padding: \"7px 4px\"\n },\n [`& .${(0, $fAmaY.default).endAdornment}`]: {\n right: 9\n }\n },\n [`& .${(0, $d8LGX.default).root}.${(0, $b29Hy.default).sizeSmall}`]: {\n paddingBottom: 1,\n [`& .${(0, $d8LGX.default).input}`]: {\n padding: \"2.5px 4px\"\n }\n },\n [`& .${(0, $b29Hy.default).hiddenLabel}`]: {\n paddingTop: 8\n },\n [`& .${(0, $fAmaY.default).input}`]: (0, $20MOv.default)({\n flexGrow: 1,\n textOverflow: \"ellipsis\",\n opacity: 0\n }, ownerState.inputFocused && {\n opacity: 1\n })\n }));\nconst $bd8d5b7e9b78d098$var$AutocompleteEndAdornment = (0, $71Pr4.default)(\"div\", {\n name: \"MuiAutocomplete\",\n slot: \"EndAdornment\",\n overridesResolver: (props, styles)=>styles.endAdornment\n})({\n // We use a position absolute to support wrapping tags.\n position: \"absolute\",\n right: 0,\n top: \"calc(50% - 14px)\" // Center vertically\n});\nconst $bd8d5b7e9b78d098$var$AutocompleteClearIndicator = (0, $71Pr4.default)((0, $cGU07.default), {\n name: \"MuiAutocomplete\",\n slot: \"ClearIndicator\",\n overridesResolver: (props, styles)=>styles.clearIndicator\n})({\n marginRight: -2,\n padding: 4,\n visibility: \"hidden\"\n});\nconst $bd8d5b7e9b78d098$var$AutocompletePopupIndicator = (0, $71Pr4.default)((0, $cGU07.default), {\n name: \"MuiAutocomplete\",\n slot: \"PopupIndicator\",\n overridesResolver: ({ ownerState: ownerState }, styles)=>(0, $20MOv.default)({}, styles.popupIndicator, ownerState.popupOpen && styles.popupIndicatorOpen)\n})(({ ownerState: ownerState })=>(0, $20MOv.default)({\n padding: 2,\n marginRight: -2\n }, ownerState.popupOpen && {\n transform: \"rotate(180deg)\"\n }));\nconst $bd8d5b7e9b78d098$var$AutocompletePopper = (0, $71Pr4.default)((0, $4gFK1.default), {\n name: \"MuiAutocomplete\",\n slot: \"Popper\",\n overridesResolver: (props, styles)=>{\n const { ownerState: ownerState } = props;\n return [\n {\n [`& .${(0, $fAmaY.default).option}`]: styles.option\n },\n styles.popper,\n ownerState.disablePortal && styles.popperDisablePortal\n ];\n }\n})(({ theme: theme, ownerState: ownerState })=>(0, $20MOv.default)({\n zIndex: theme.zIndex.modal\n }, ownerState.disablePortal && {\n position: \"absolute\"\n }));\nconst $bd8d5b7e9b78d098$var$AutocompletePaper = (0, $71Pr4.default)((0, $1mImZ.default), {\n name: \"MuiAutocomplete\",\n slot: \"Paper\",\n overridesResolver: (props, styles)=>styles.paper\n})(({ theme: theme })=>(0, $20MOv.default)({}, theme.typography.body1, {\n overflow: \"auto\"\n }));\nconst $bd8d5b7e9b78d098$var$AutocompleteLoading = (0, $71Pr4.default)(\"div\", {\n name: \"MuiAutocomplete\",\n slot: \"Loading\",\n overridesResolver: (props, styles)=>styles.loading\n})(({ theme: theme })=>({\n color: theme.palette.text.secondary,\n padding: \"14px 16px\"\n }));\nconst $bd8d5b7e9b78d098$var$AutocompleteNoOptions = (0, $71Pr4.default)(\"div\", {\n name: \"MuiAutocomplete\",\n slot: \"NoOptions\",\n overridesResolver: (props, styles)=>styles.noOptions\n})(({ theme: theme })=>({\n color: theme.palette.text.secondary,\n padding: \"14px 16px\"\n }));\nconst $bd8d5b7e9b78d098$var$AutocompleteListbox = (0, $71Pr4.default)(\"div\", {\n name: \"MuiAutocomplete\",\n slot: \"Listbox\",\n overridesResolver: (props, styles)=>styles.listbox\n})(({ theme: theme })=>({\n listStyle: \"none\",\n margin: 0,\n padding: \"8px 0\",\n maxHeight: \"40vh\",\n overflow: \"auto\",\n [`& .${(0, $fAmaY.default).option}`]: {\n minHeight: 48,\n display: \"flex\",\n overflow: \"hidden\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n cursor: \"pointer\",\n paddingTop: 6,\n boxSizing: \"border-box\",\n outline: \"0\",\n WebkitTapHighlightColor: \"transparent\",\n paddingBottom: 6,\n paddingLeft: 16,\n paddingRight: 16,\n [theme.breakpoints.up(\"sm\")]: {\n minHeight: \"auto\"\n },\n [`&.${(0, $fAmaY.default).focused}`]: {\n backgroundColor: theme.palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n \"@media (hover: none)\": {\n backgroundColor: \"transparent\"\n }\n },\n '&[aria-disabled=\"true\"]': {\n opacity: theme.palette.action.disabledOpacity,\n pointerEvents: \"none\"\n },\n [`&.${(0, $fAmaY.default).focusVisible}`]: {\n backgroundColor: theme.palette.action.focus\n },\n '&[aria-selected=\"true\"]': {\n backgroundColor: (0, $bFVgt.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${(0, $fAmaY.default).focused}`]: {\n backgroundColor: (0, $bFVgt.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n \"@media (hover: none)\": {\n backgroundColor: theme.palette.action.selected\n }\n },\n [`&.${(0, $fAmaY.default).focusVisible}`]: {\n backgroundColor: (0, $bFVgt.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n }\n }\n }));\nconst $bd8d5b7e9b78d098$var$AutocompleteGroupLabel = (0, $71Pr4.default)((0, $bey3N.default), {\n name: \"MuiAutocomplete\",\n slot: \"GroupLabel\",\n overridesResolver: (props, styles)=>styles.groupLabel\n})(({ theme: theme })=>({\n backgroundColor: theme.palette.background.paper,\n top: -8\n }));\nconst $bd8d5b7e9b78d098$var$AutocompleteGroupUl = (0, $71Pr4.default)(\"ul\", {\n name: \"MuiAutocomplete\",\n slot: \"GroupUl\",\n overridesResolver: (props, styles)=>styles.groupUl\n})({\n padding: 0,\n [`& .${(0, $fAmaY.default).option}`]: {\n paddingLeft: 24\n }\n});\nconst $bd8d5b7e9b78d098$var$Autocomplete = /*#__PURE__*/ $70fFQ.forwardRef(function Autocomplete(inProps, ref) {\n var _componentsProps$clea, _componentsProps$pape;\n const props = (0, $cNmNk.default)({\n props: inProps,\n name: \"MuiAutocomplete\"\n });\n /* eslint-disable @typescript-eslint/no-unused-vars */ const { autoComplete: autoComplete = false, autoHighlight: autoHighlight = false, autoSelect: autoSelect = false, blurOnSelect: blurOnSelect = false, ChipProps: ChipProps, className: className, clearIcon: clearIcon = $bd8d5b7e9b78d098$var$_ClearIcon || ($bd8d5b7e9b78d098$var$_ClearIcon = /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7AUf9.default), {\n fontSize: \"small\"\n })), clearOnBlur: clearOnBlur = !props.freeSolo, clearOnEscape: clearOnEscape = false, clearText: clearText = \"Clear\", closeText: closeText = \"Close\", componentsProps: componentsProps = {}, defaultValue: defaultValue = props.multiple ? [] : null, disableClearable: disableClearable = false, disableCloseOnSelect: disableCloseOnSelect = false, disabled: disabled = false, disabledItemsFocusable: disabledItemsFocusable = false, disableListWrap: disableListWrap = false, disablePortal: disablePortal = false, filterSelectedOptions: filterSelectedOptions = false, forcePopupIcon: forcePopupIcon = \"auto\", freeSolo: freeSolo = false, fullWidth: fullWidth = false, getLimitTagsText: getLimitTagsText = (more)=>`+${more}`, getOptionLabel: getOptionLabel = (option)=>{\n var _option$label;\n return (_option$label = option.label) != null ? _option$label : option;\n }, groupBy: groupBy, handleHomeEndKeys: handleHomeEndKeys = !props.freeSolo, includeInputInList: includeInputInList = false, limitTags: limitTags = -1, ListboxComponent: ListboxComponent = \"ul\", ListboxProps: ListboxProps, loading: loading = false, loadingText: loadingText = \"Loading\\u2026\", multiple: multiple = false, noOptionsText: noOptionsText = \"No options\", openOnFocus: openOnFocus = false, openText: openText = \"Open\", PaperComponent: PaperComponent = (0, $1mImZ.default), PopperComponent: PopperComponent = (0, $4gFK1.default), popupIcon: popupIcon = $bd8d5b7e9b78d098$var$_ArrowDropDownIcon || ($bd8d5b7e9b78d098$var$_ArrowDropDownIcon = /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1MKx1.default), {})), readOnly: readOnly = false, renderGroup: renderGroupProp, renderInput: renderInput, renderOption: renderOptionProp, renderTags: renderTags, selectOnFocus: selectOnFocus = !props.freeSolo, size: size = \"medium\" } = props, other = (0, $79yYo.default)(props, $bd8d5b7e9b78d098$var$_excluded);\n /* eslint-enable @typescript-eslint/no-unused-vars */ const { getRootProps: getRootProps, getInputProps: getInputProps, getInputLabelProps: getInputLabelProps, getPopupIndicatorProps: getPopupIndicatorProps, getClearProps: getClearProps, getTagProps: getTagProps, getListboxProps: getListboxProps, getOptionProps: getOptionProps, value: value, dirty: dirty, id: id, popupOpen: popupOpen, focused: focused, focusedTag: focusedTag, anchorEl: anchorEl, setAnchorEl: setAnchorEl, inputValue: inputValue, groupedOptions: groupedOptions } = (0, $b5YPE.default)((0, $20MOv.default)({}, props, {\n componentName: \"Autocomplete\"\n }));\n const hasClearIcon = !disableClearable && !disabled && dirty && !readOnly;\n const hasPopupIcon = (!freeSolo || forcePopupIcon === true) && forcePopupIcon !== false;\n const ownerState = (0, $20MOv.default)({}, props, {\n disablePortal: disablePortal,\n focused: focused,\n fullWidth: fullWidth,\n hasClearIcon: hasClearIcon,\n hasPopupIcon: hasPopupIcon,\n inputFocused: focusedTag === -1,\n popupOpen: popupOpen,\n size: size\n });\n const classes = $bd8d5b7e9b78d098$var$useUtilityClasses(ownerState);\n let startAdornment;\n if (multiple && value.length > 0) {\n const getCustomizedTagProps = (params)=>(0, $20MOv.default)({\n className: (0, $gjktY.default)(classes.tag),\n disabled: disabled\n }, getTagProps(params));\n if (renderTags) startAdornment = renderTags(value, getCustomizedTagProps);\n else startAdornment = value.map((option, index)=>/*#__PURE__*/ (0, $4x3bm.jsx)((0, $jRqkM.default), (0, $20MOv.default)({\n label: getOptionLabel(option),\n size: size\n }, getCustomizedTagProps({\n index: index\n }), ChipProps)));\n }\n if (limitTags > -1 && Array.isArray(startAdornment)) {\n const more = startAdornment.length - limitTags;\n if (!focused && more > 0) {\n startAdornment = startAdornment.splice(0, limitTags);\n startAdornment.push(/*#__PURE__*/ (0, $4x3bm.jsx)(\"span\", {\n className: classes.tag,\n children: getLimitTagsText(more)\n }, startAdornment.length));\n }\n }\n const defaultRenderGroup = (params)=>/*#__PURE__*/ (0, $4x3bm.jsxs)(\"li\", {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)($bd8d5b7e9b78d098$var$AutocompleteGroupLabel, {\n className: classes.groupLabel,\n ownerState: ownerState,\n component: \"div\",\n children: params.group\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)($bd8d5b7e9b78d098$var$AutocompleteGroupUl, {\n className: classes.groupUl,\n ownerState: ownerState,\n children: params.children\n })\n ]\n }, params.key);\n const renderGroup = renderGroupProp || defaultRenderGroup;\n const defaultRenderOption = (props2, option)=>/*#__PURE__*/ (0, $4x3bm.jsx)(\"li\", (0, $20MOv.default)({}, props2, {\n children: getOptionLabel(option)\n }));\n const renderOption = renderOptionProp || defaultRenderOption;\n const renderListOption = (option, index)=>{\n const optionProps = getOptionProps({\n option: option,\n index: index\n });\n return renderOption((0, $20MOv.default)({}, optionProps, {\n className: classes.option\n }), option, {\n selected: optionProps[\"aria-selected\"],\n inputValue: inputValue\n });\n };\n return /*#__PURE__*/ (0, $4x3bm.jsxs)($70fFQ.Fragment, {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)($bd8d5b7e9b78d098$var$AutocompleteRoot, (0, $20MOv.default)({\n ref: ref,\n className: (0, $gjktY.default)(classes.root, className),\n ownerState: ownerState\n }, getRootProps(other), {\n children: renderInput({\n id: id,\n disabled: disabled,\n fullWidth: true,\n size: size === \"small\" ? \"small\" : undefined,\n InputLabelProps: getInputLabelProps(),\n InputProps: {\n ref: setAnchorEl,\n className: classes.inputRoot,\n startAdornment: startAdornment,\n endAdornment: /*#__PURE__*/ (0, $4x3bm.jsxs)($bd8d5b7e9b78d098$var$AutocompleteEndAdornment, {\n className: classes.endAdornment,\n ownerState: ownerState,\n children: [\n hasClearIcon ? /*#__PURE__*/ (0, $4x3bm.jsx)($bd8d5b7e9b78d098$var$AutocompleteClearIndicator, (0, $20MOv.default)({}, getClearProps(), {\n \"aria-label\": clearText,\n title: clearText,\n ownerState: ownerState\n }, componentsProps.clearIndicator, {\n className: (0, $gjktY.default)(classes.clearIndicator, (_componentsProps$clea = componentsProps.clearIndicator) == null ? void 0 : _componentsProps$clea.className),\n children: clearIcon\n })) : null,\n hasPopupIcon ? /*#__PURE__*/ (0, $4x3bm.jsx)($bd8d5b7e9b78d098$var$AutocompletePopupIndicator, (0, $20MOv.default)({}, getPopupIndicatorProps(), {\n disabled: disabled,\n \"aria-label\": popupOpen ? closeText : openText,\n title: popupOpen ? closeText : openText,\n className: (0, $gjktY.default)(classes.popupIndicator),\n ownerState: ownerState,\n children: popupIcon\n })) : null\n ]\n })\n },\n inputProps: (0, $20MOv.default)({\n className: (0, $gjktY.default)(classes.input),\n disabled: disabled,\n readOnly: readOnly\n }, getInputProps())\n })\n })),\n popupOpen && anchorEl ? /*#__PURE__*/ (0, $4x3bm.jsx)($bd8d5b7e9b78d098$var$AutocompletePopper, {\n as: PopperComponent,\n className: (0, $gjktY.default)(classes.popper),\n disablePortal: disablePortal,\n style: {\n width: anchorEl ? anchorEl.clientWidth : null\n },\n ownerState: ownerState,\n role: \"presentation\",\n anchorEl: anchorEl,\n open: true,\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)($bd8d5b7e9b78d098$var$AutocompletePaper, (0, $20MOv.default)({\n ownerState: ownerState,\n as: PaperComponent\n }, componentsProps.paper, {\n className: (0, $gjktY.default)(classes.paper, (_componentsProps$pape = componentsProps.paper) == null ? void 0 : _componentsProps$pape.className),\n children: [\n loading && groupedOptions.length === 0 ? /*#__PURE__*/ (0, $4x3bm.jsx)($bd8d5b7e9b78d098$var$AutocompleteLoading, {\n className: classes.loading,\n ownerState: ownerState,\n children: loadingText\n }) : null,\n groupedOptions.length === 0 && !freeSolo && !loading ? /*#__PURE__*/ (0, $4x3bm.jsx)($bd8d5b7e9b78d098$var$AutocompleteNoOptions, {\n className: classes.noOptions,\n ownerState: ownerState,\n role: \"presentation\",\n onMouseDown: (event)=>{\n // Prevent input blur when interacting with the \"no options\" content\n event.preventDefault();\n },\n children: noOptionsText\n }) : null,\n groupedOptions.length > 0 ? /*#__PURE__*/ (0, $4x3bm.jsx)($bd8d5b7e9b78d098$var$AutocompleteListbox, (0, $20MOv.default)({\n as: ListboxComponent,\n className: classes.listbox,\n ownerState: ownerState\n }, getListboxProps(), ListboxProps, {\n children: groupedOptions.map((option, index)=>{\n if (groupBy) return renderGroup({\n key: option.key,\n group: option.group,\n children: option.options.map((option2, index2)=>renderListOption(option2, option.index + index2))\n });\n return renderListOption(option, index);\n })\n })) : null\n ]\n }))\n }) : null\n ]\n });\n});\nvar $bd8d5b7e9b78d098$export$2e2bcd8739ae039 = $bd8d5b7e9b78d098$var$Autocomplete;\n\n});\nparcelRegister(\"b5YPE\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $813f594ce9b4173e$export$2e2bcd8739ae039; });\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $eSJYK = parcelRequire(\"eSJYK\");\nvar $dyLoc = parcelRequire(\"dyLoc\");\nvar $3Fato = parcelRequire(\"3Fato\");\nvar $hBUX7 = parcelRequire(\"hBUX7\");\n// Give up on IE11 support for this feature\nfunction $813f594ce9b4173e$var$stripDiacritics(string) {\n return typeof string.normalize !== \"undefined\" ? string.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\") : string;\n}\nfunction $813f594ce9b4173e$export$f76f94b238d946d8(config = {}) {\n const { ignoreAccents: ignoreAccents = true, ignoreCase: ignoreCase = true, limit: limit, matchFrom: matchFrom = \"any\", stringify: stringify, trim: trim = false } = config;\n return (options, { inputValue: inputValue, getOptionLabel: getOptionLabel })=>{\n let input = trim ? inputValue.trim() : inputValue;\n if (ignoreCase) input = input.toLowerCase();\n if (ignoreAccents) input = $813f594ce9b4173e$var$stripDiacritics(input);\n const filteredOptions = options.filter((option)=>{\n let candidate = (stringify || getOptionLabel)(option);\n if (ignoreCase) candidate = candidate.toLowerCase();\n if (ignoreAccents) candidate = $813f594ce9b4173e$var$stripDiacritics(candidate);\n return matchFrom === \"start\" ? candidate.indexOf(input) === 0 : candidate.indexOf(input) > -1;\n });\n return typeof limit === \"number\" ? filteredOptions.slice(0, limit) : filteredOptions;\n };\n} // To replace with .findIndex() once we stop IE11 support.\nfunction $813f594ce9b4173e$var$findIndex(array, comp) {\n for(let i = 0; i < array.length; i += 1){\n if (comp(array[i])) return i;\n }\n return -1;\n}\nconst $813f594ce9b4173e$var$defaultFilterOptions = $813f594ce9b4173e$export$f76f94b238d946d8(); // Number of options to jump in list box when pageup and pagedown keys are used.\nconst $813f594ce9b4173e$var$pageSize = 5;\nfunction $813f594ce9b4173e$export$2e2bcd8739ae039(props) {\n const { autoComplete: autoComplete = false, autoHighlight: autoHighlight = false, autoSelect: autoSelect = false, blurOnSelect: blurOnSelect = false, disabled: disabledProp, clearOnBlur: clearOnBlur = !props.freeSolo, clearOnEscape: clearOnEscape = false, componentName: componentName = \"useAutocomplete\", defaultValue: defaultValue = props.multiple ? [] : null, disableClearable: disableClearable = false, disableCloseOnSelect: disableCloseOnSelect = false, disabledItemsFocusable: disabledItemsFocusable = false, disableListWrap: disableListWrap = false, filterOptions: filterOptions = $813f594ce9b4173e$var$defaultFilterOptions, filterSelectedOptions: filterSelectedOptions = false, freeSolo: freeSolo = false, getOptionDisabled: getOptionDisabled, getOptionLabel: getOptionLabelProp = (option)=>{\n var _option$label;\n return (_option$label = option.label) != null ? _option$label : option;\n }, isOptionEqualToValue: isOptionEqualToValue = (option, value)=>option === value, groupBy: groupBy, handleHomeEndKeys: handleHomeEndKeys = !props.freeSolo, id: idProp, includeInputInList: includeInputInList = false, inputValue: inputValueProp, multiple: multiple = false, onChange: onChange, onClose: onClose, onHighlightChange: onHighlightChange, onInputChange: onInputChange, onOpen: onOpen, open: openProp, openOnFocus: openOnFocus = false, options: options, readOnly: readOnly = false, selectOnFocus: selectOnFocus = !props.freeSolo, value: valueProp } = props;\n const id = (0, $hBUX7.default)(idProp);\n let getOptionLabel = getOptionLabelProp;\n getOptionLabel = (option)=>{\n const optionLabel = getOptionLabelProp(option);\n if (typeof optionLabel !== \"string\") return String(optionLabel);\n return optionLabel;\n };\n const ignoreFocus = $70fFQ.useRef(false);\n const firstFocus = $70fFQ.useRef(true);\n const inputRef = $70fFQ.useRef(null);\n const listboxRef = $70fFQ.useRef(null);\n const [anchorEl, setAnchorEl] = $70fFQ.useState(null);\n const [focusedTag, setFocusedTag] = $70fFQ.useState(-1);\n const defaultHighlighted = autoHighlight ? 0 : -1;\n const highlightedIndexRef = $70fFQ.useRef(defaultHighlighted);\n const [value, setValueState] = (0, $dyLoc.default)({\n controlled: valueProp,\n default: defaultValue,\n name: componentName\n });\n const [inputValue, setInputValueState] = (0, $dyLoc.default)({\n controlled: inputValueProp,\n default: \"\",\n name: componentName,\n state: \"inputValue\"\n });\n const [focused, setFocused] = $70fFQ.useState(false);\n const resetInputValue = $70fFQ.useCallback((event, newValue)=>{\n // retain current `inputValue` if new option isn't selected and `clearOnBlur` is false\n // When `multiple` is enabled, `newValue` is an array of all selected items including the newly selected item\n const isOptionSelected = multiple ? value.length < newValue.length : newValue !== null;\n if (!isOptionSelected && !clearOnBlur) return;\n let newInputValue;\n if (multiple) newInputValue = \"\";\n else if (newValue == null) newInputValue = \"\";\n else {\n const optionLabel = getOptionLabel(newValue);\n newInputValue = typeof optionLabel === \"string\" ? optionLabel : \"\";\n }\n if (inputValue === newInputValue) return;\n setInputValueState(newInputValue);\n if (onInputChange) onInputChange(event, newInputValue, \"reset\");\n }, [\n getOptionLabel,\n inputValue,\n multiple,\n onInputChange,\n setInputValueState,\n clearOnBlur,\n value\n ]);\n const prevValue = $70fFQ.useRef();\n $70fFQ.useEffect(()=>{\n const valueChange = value !== prevValue.current;\n prevValue.current = value;\n if (focused && !valueChange) return;\n // Only reset the input's value when freeSolo if the component's value changes.\n if (freeSolo && !valueChange) return;\n resetInputValue(null, value);\n }, [\n value,\n resetInputValue,\n focused,\n prevValue,\n freeSolo\n ]);\n const [open, setOpenState] = (0, $dyLoc.default)({\n controlled: openProp,\n default: false,\n name: componentName,\n state: \"open\"\n });\n const [inputPristine, setInputPristine] = $70fFQ.useState(true);\n const inputValueIsSelectedValue = !multiple && value != null && inputValue === getOptionLabel(value);\n const popupOpen = open && !readOnly;\n const filteredOptions = popupOpen ? filterOptions(options.filter((option)=>{\n if (filterSelectedOptions && (multiple ? value : [\n value\n ]).some((value2)=>value2 !== null && isOptionEqualToValue(option, value2))) return false;\n return true;\n }), // i.e. the filter predicate always returns true\n {\n inputValue: inputValueIsSelectedValue && inputPristine ? \"\" : inputValue,\n getOptionLabel: getOptionLabel\n }) : [];\n const listboxAvailable = open && filteredOptions.length > 0 && !readOnly;\n const focusTag = (0, $3Fato.default)((tagToFocus)=>{\n if (tagToFocus === -1) inputRef.current.focus();\n else anchorEl.querySelector(`[data-tag-index=\"${tagToFocus}\"]`).focus();\n }); // Ensure the focusedTag is never inconsistent\n $70fFQ.useEffect(()=>{\n if (multiple && focusedTag > value.length - 1) {\n setFocusedTag(-1);\n focusTag(-1);\n }\n }, [\n value,\n multiple,\n focusedTag,\n focusTag\n ]);\n function validOptionIndex(index, direction) {\n if (!listboxRef.current || index === -1) return -1;\n let nextFocus = index;\n while(true){\n // Out of range\n if (direction === \"next\" && nextFocus === filteredOptions.length || direction === \"previous\" && nextFocus === -1) return -1;\n const option = listboxRef.current.querySelector(`[data-option-index=\"${nextFocus}\"]`); // Same logic as MenuList.js\n const nextFocusDisabled = disabledItemsFocusable ? false : !option || option.disabled || option.getAttribute(\"aria-disabled\") === \"true\";\n if (option && !option.hasAttribute(\"tabindex\") || nextFocusDisabled) // Move to the next element.\n nextFocus += direction === \"next\" ? 1 : -1;\n else return nextFocus;\n }\n }\n const setHighlightedIndex = (0, $3Fato.default)(({ event: event, index: index, reason: reason = \"auto\" })=>{\n highlightedIndexRef.current = index; // does the index exist?\n if (index === -1) inputRef.current.removeAttribute(\"aria-activedescendant\");\n else inputRef.current.setAttribute(\"aria-activedescendant\", `${id}-option-${index}`);\n if (onHighlightChange) onHighlightChange(event, index === -1 ? null : filteredOptions[index], reason);\n if (!listboxRef.current) return;\n const prev = listboxRef.current.querySelector('[role=\"option\"].Mui-focused');\n if (prev) {\n prev.classList.remove(\"Mui-focused\");\n prev.classList.remove(\"Mui-focusVisible\");\n }\n const listboxNode = listboxRef.current.parentElement.querySelector('[role=\"listbox\"]'); // \"No results\"\n if (!listboxNode) return;\n if (index === -1) {\n listboxNode.scrollTop = 0;\n return;\n }\n const option = listboxRef.current.querySelector(`[data-option-index=\"${index}\"]`);\n if (!option) return;\n option.classList.add(\"Mui-focused\");\n if (reason === \"keyboard\") option.classList.add(\"Mui-focusVisible\");\n // Scroll active descendant into view.\n // Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js\n //\n // Consider this API instead once it has a better browser support:\n // .scrollIntoView({ scrollMode: 'if-needed', block: 'nearest' });\n if (listboxNode.scrollHeight > listboxNode.clientHeight && reason !== \"mouse\") {\n const element = option;\n const scrollBottom = listboxNode.clientHeight + listboxNode.scrollTop;\n const elementBottom = element.offsetTop + element.offsetHeight;\n if (elementBottom > scrollBottom) listboxNode.scrollTop = elementBottom - listboxNode.clientHeight;\n else if (element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0) < listboxNode.scrollTop) listboxNode.scrollTop = element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0);\n }\n });\n const changeHighlightedIndex = (0, $3Fato.default)(({ event: event, diff: diff, direction: direction = \"next\", reason: reason = \"auto\" })=>{\n if (!popupOpen) return;\n const getNextIndex = ()=>{\n const maxIndex = filteredOptions.length - 1;\n if (diff === \"reset\") return defaultHighlighted;\n if (diff === \"start\") return 0;\n if (diff === \"end\") return maxIndex;\n const newIndex = highlightedIndexRef.current + diff;\n if (newIndex < 0) {\n if (newIndex === -1 && includeInputInList) return -1;\n if (disableListWrap && highlightedIndexRef.current !== -1 || Math.abs(diff) > 1) return 0;\n return maxIndex;\n }\n if (newIndex > maxIndex) {\n if (newIndex === maxIndex + 1 && includeInputInList) return -1;\n if (disableListWrap || Math.abs(diff) > 1) return maxIndex;\n return 0;\n }\n return newIndex;\n };\n const nextIndex = validOptionIndex(getNextIndex(), direction);\n setHighlightedIndex({\n index: nextIndex,\n reason: reason,\n event: event\n }); // Sync the content of the input with the highlighted option.\n if (autoComplete && diff !== \"reset\") {\n if (nextIndex === -1) inputRef.current.value = inputValue;\n else {\n const option = getOptionLabel(filteredOptions[nextIndex]);\n inputRef.current.value = option; // The portion of the selected suggestion that has not been typed by the user,\n // a completion string, appears inline after the input cursor in the textbox.\n const index = option.toLowerCase().indexOf(inputValue.toLowerCase());\n if (index === 0 && inputValue.length > 0) inputRef.current.setSelectionRange(inputValue.length, option.length);\n }\n }\n });\n const syncHighlightedIndex = $70fFQ.useCallback(()=>{\n if (!popupOpen) return;\n const valueItem = multiple ? value[0] : value; // The popup is empty, reset\n if (filteredOptions.length === 0 || valueItem == null) {\n changeHighlightedIndex({\n diff: \"reset\"\n });\n return;\n }\n if (!listboxRef.current) return;\n // Synchronize the value with the highlighted index\n if (valueItem != null) {\n const currentOption = filteredOptions[highlightedIndexRef.current]; // Keep the current highlighted index if possible\n if (multiple && currentOption && $813f594ce9b4173e$var$findIndex(value, (val)=>isOptionEqualToValue(currentOption, val)) !== -1) return;\n const itemIndex = $813f594ce9b4173e$var$findIndex(filteredOptions, (optionItem)=>isOptionEqualToValue(optionItem, valueItem));\n if (itemIndex === -1) changeHighlightedIndex({\n diff: \"reset\"\n });\n else setHighlightedIndex({\n index: itemIndex\n });\n return;\n } // Prevent the highlighted index to leak outside the boundaries.\n if (highlightedIndexRef.current >= filteredOptions.length - 1) {\n setHighlightedIndex({\n index: filteredOptions.length - 1\n });\n return;\n } // Restore the focus to the previous index.\n setHighlightedIndex({\n index: highlightedIndexRef.current\n }); // Ignore filteredOptions (and options, isOptionEqualToValue, getOptionLabel) not to break the scroll position\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n filteredOptions.length,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n multiple ? false : value,\n filterSelectedOptions,\n changeHighlightedIndex,\n setHighlightedIndex,\n popupOpen,\n inputValue,\n multiple\n ]);\n const handleListboxRef = (0, $3Fato.default)((node)=>{\n (0, $eSJYK.default)(listboxRef, node);\n if (!node) return;\n syncHighlightedIndex();\n });\n $70fFQ.useEffect(()=>{\n syncHighlightedIndex();\n }, [\n syncHighlightedIndex\n ]);\n const handleOpen = (event)=>{\n if (open) return;\n setOpenState(true);\n setInputPristine(true);\n if (onOpen) onOpen(event);\n };\n const handleClose = (event, reason)=>{\n if (!open) return;\n setOpenState(false);\n if (onClose) onClose(event, reason);\n };\n const handleValue = (event, newValue, reason, details)=>{\n if (Array.isArray(value)) {\n if (value.length === newValue.length && value.every((val, i)=>val === newValue[i])) return;\n } else if (value === newValue) return;\n if (onChange) onChange(event, newValue, reason, details);\n setValueState(newValue);\n };\n const isTouch = $70fFQ.useRef(false);\n const selectNewValue = (event, option, reasonProp = \"selectOption\", origin = \"options\")=>{\n let reason = reasonProp;\n let newValue = option;\n if (multiple) {\n newValue = Array.isArray(value) ? value.slice() : [];\n const itemIndex = $813f594ce9b4173e$var$findIndex(newValue, (valueItem)=>isOptionEqualToValue(option, valueItem));\n if (itemIndex === -1) newValue.push(option);\n else if (origin !== \"freeSolo\") {\n newValue.splice(itemIndex, 1);\n reason = \"removeOption\";\n }\n }\n resetInputValue(event, newValue);\n handleValue(event, newValue, reason, {\n option: option\n });\n if (!disableCloseOnSelect && !event.ctrlKey && !event.metaKey) handleClose(event, reason);\n if (blurOnSelect === true || blurOnSelect === \"touch\" && isTouch.current || blurOnSelect === \"mouse\" && !isTouch.current) inputRef.current.blur();\n };\n function validTagIndex(index, direction) {\n if (index === -1) return -1;\n let nextFocus = index;\n while(true){\n // Out of range\n if (direction === \"next\" && nextFocus === value.length || direction === \"previous\" && nextFocus === -1) return -1;\n const option = anchorEl.querySelector(`[data-tag-index=\"${nextFocus}\"]`); // Same logic as MenuList.js\n if (!option || !option.hasAttribute(\"tabindex\") || option.disabled || option.getAttribute(\"aria-disabled\") === \"true\") nextFocus += direction === \"next\" ? 1 : -1;\n else return nextFocus;\n }\n }\n const handleFocusTag = (event, direction)=>{\n if (!multiple) return;\n handleClose(event, \"toggleInput\");\n let nextTag = focusedTag;\n if (focusedTag === -1) {\n if (inputValue === \"\" && direction === \"previous\") nextTag = value.length - 1;\n } else {\n nextTag += direction === \"next\" ? 1 : -1;\n if (nextTag < 0) nextTag = 0;\n if (nextTag === value.length) nextTag = -1;\n }\n nextTag = validTagIndex(nextTag, direction);\n setFocusedTag(nextTag);\n focusTag(nextTag);\n };\n const handleClear = (event)=>{\n ignoreFocus.current = true;\n setInputValueState(\"\");\n if (onInputChange) onInputChange(event, \"\", \"clear\");\n handleValue(event, multiple ? [] : null, \"clear\");\n };\n const handleKeyDown = (other)=>(event)=>{\n if (other.onKeyDown) other.onKeyDown(event);\n if (event.defaultMuiPrevented) return;\n if (focusedTag !== -1 && [\n \"ArrowLeft\",\n \"ArrowRight\"\n ].indexOf(event.key) === -1) {\n setFocusedTag(-1);\n focusTag(-1);\n } // Wait until IME is settled.\n if (event.which !== 229) switch(event.key){\n case \"Home\":\n if (popupOpen && handleHomeEndKeys) {\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: \"start\",\n direction: \"next\",\n reason: \"keyboard\",\n event: event\n });\n }\n break;\n case \"End\":\n if (popupOpen && handleHomeEndKeys) {\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: \"end\",\n direction: \"previous\",\n reason: \"keyboard\",\n event: event\n });\n }\n break;\n case \"PageUp\":\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: -$813f594ce9b4173e$var$pageSize,\n direction: \"previous\",\n reason: \"keyboard\",\n event: event\n });\n handleOpen(event);\n break;\n case \"PageDown\":\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: $813f594ce9b4173e$var$pageSize,\n direction: \"next\",\n reason: \"keyboard\",\n event: event\n });\n handleOpen(event);\n break;\n case \"ArrowDown\":\n // Prevent cursor move\n event.preventDefault();\n changeHighlightedIndex({\n diff: 1,\n direction: \"next\",\n reason: \"keyboard\",\n event: event\n });\n handleOpen(event);\n break;\n case \"ArrowUp\":\n // Prevent cursor move\n event.preventDefault();\n changeHighlightedIndex({\n diff: -1,\n direction: \"previous\",\n reason: \"keyboard\",\n event: event\n });\n handleOpen(event);\n break;\n case \"ArrowLeft\":\n handleFocusTag(event, \"previous\");\n break;\n case \"ArrowRight\":\n handleFocusTag(event, \"next\");\n break;\n case \"Enter\":\n if (highlightedIndexRef.current !== -1 && popupOpen) {\n const option = filteredOptions[highlightedIndexRef.current];\n const disabled = getOptionDisabled ? getOptionDisabled(option) : false; // Avoid early form validation, let the end-users continue filling the form.\n event.preventDefault();\n if (disabled) return;\n selectNewValue(event, option, \"selectOption\"); // Move the selection to the end.\n if (autoComplete) inputRef.current.setSelectionRange(inputRef.current.value.length, inputRef.current.value.length);\n } else if (freeSolo && inputValue !== \"\" && inputValueIsSelectedValue === false) {\n if (multiple) // Allow people to add new values before they submit the form.\n event.preventDefault();\n selectNewValue(event, inputValue, \"createOption\", \"freeSolo\");\n }\n break;\n case \"Escape\":\n if (popupOpen) {\n // Avoid Opera to exit fullscreen mode.\n event.preventDefault(); // Avoid the Modal to handle the event.\n event.stopPropagation();\n handleClose(event, \"escape\");\n } else if (clearOnEscape && (inputValue !== \"\" || multiple && value.length > 0)) {\n // Avoid Opera to exit fullscreen mode.\n event.preventDefault(); // Avoid the Modal to handle the event.\n event.stopPropagation();\n handleClear(event);\n }\n break;\n case \"Backspace\":\n if (multiple && !readOnly && inputValue === \"\" && value.length > 0) {\n const index = focusedTag === -1 ? value.length - 1 : focusedTag;\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, \"removeOption\", {\n option: value[index]\n });\n }\n break;\n default:\n }\n };\n const handleFocus = (event)=>{\n setFocused(true);\n if (openOnFocus && !ignoreFocus.current) handleOpen(event);\n };\n const handleBlur = (event)=>{\n // Ignore the event when using the scrollbar with IE11\n if (listboxRef.current !== null && listboxRef.current.parentElement.contains(document.activeElement)) {\n inputRef.current.focus();\n return;\n }\n setFocused(false);\n firstFocus.current = true;\n ignoreFocus.current = false;\n if (autoSelect && highlightedIndexRef.current !== -1 && popupOpen) selectNewValue(event, filteredOptions[highlightedIndexRef.current], \"blur\");\n else if (autoSelect && freeSolo && inputValue !== \"\") selectNewValue(event, inputValue, \"blur\", \"freeSolo\");\n else if (clearOnBlur) resetInputValue(event, value);\n handleClose(event, \"blur\");\n };\n const handleInputChange = (event)=>{\n const newValue = event.target.value;\n if (inputValue !== newValue) {\n setInputValueState(newValue);\n setInputPristine(false);\n if (onInputChange) onInputChange(event, newValue, \"input\");\n }\n if (newValue === \"\") {\n if (!disableClearable && !multiple) handleValue(event, null, \"clear\");\n } else handleOpen(event);\n };\n const handleOptionMouseOver = (event)=>{\n setHighlightedIndex({\n event: event,\n index: Number(event.currentTarget.getAttribute(\"data-option-index\")),\n reason: \"mouse\"\n });\n };\n const handleOptionTouchStart = ()=>{\n isTouch.current = true;\n };\n const handleOptionClick = (event)=>{\n const index = Number(event.currentTarget.getAttribute(\"data-option-index\"));\n selectNewValue(event, filteredOptions[index], \"selectOption\");\n isTouch.current = false;\n };\n const handleTagDelete = (index)=>(event)=>{\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, \"removeOption\", {\n option: value[index]\n });\n };\n const handlePopupIndicator = (event)=>{\n if (open) handleClose(event, \"toggleInput\");\n else handleOpen(event);\n }; // Prevent input blur when interacting with the combobox\n const handleMouseDown = (event)=>{\n if (event.target.getAttribute(\"id\") !== id) event.preventDefault();\n }; // Focus the input when interacting with the combobox\n const handleClick = ()=>{\n inputRef.current.focus();\n if (selectOnFocus && firstFocus.current && inputRef.current.selectionEnd - inputRef.current.selectionStart === 0) inputRef.current.select();\n firstFocus.current = false;\n };\n const handleInputMouseDown = (event)=>{\n if (inputValue === \"\" || !open) handlePopupIndicator(event);\n };\n let dirty = freeSolo && inputValue.length > 0;\n dirty = dirty || (multiple ? value.length > 0 : value !== null);\n let groupedOptions = filteredOptions;\n if (groupBy) {\n // used to keep track of key and indexes in the result array\n const indexBy = new Map();\n let warn = false;\n groupedOptions = filteredOptions.reduce((acc, option, index)=>{\n const group = groupBy(option);\n if (acc.length > 0 && acc[acc.length - 1].group === group) acc[acc.length - 1].options.push(option);\n else acc.push({\n key: index,\n index: index,\n group: group,\n options: [\n option\n ]\n });\n return acc;\n }, []);\n }\n if (disabledProp && focused) handleBlur();\n return {\n getRootProps: (other = {})=>(0, $20MOv.default)({\n \"aria-owns\": listboxAvailable ? `${id}-listbox` : null\n }, other, {\n onKeyDown: handleKeyDown(other),\n onMouseDown: handleMouseDown,\n onClick: handleClick\n }),\n getInputLabelProps: ()=>({\n id: `${id}-label`,\n htmlFor: id\n }),\n getInputProps: ()=>({\n id: id,\n value: inputValue,\n onBlur: handleBlur,\n onFocus: handleFocus,\n onChange: handleInputChange,\n onMouseDown: handleInputMouseDown,\n // if open then this is handled imperativeley so don't let react override\n // only have an opinion about this when closed\n \"aria-activedescendant\": popupOpen ? \"\" : null,\n \"aria-autocomplete\": autoComplete ? \"both\" : \"list\",\n \"aria-controls\": listboxAvailable ? `${id}-listbox` : undefined,\n \"aria-expanded\": listboxAvailable,\n // Disable browser's suggestion that might overlap with the popup.\n // Handle autocomplete but not autofill.\n autoComplete: \"off\",\n ref: inputRef,\n autoCapitalize: \"none\",\n spellCheck: \"false\",\n role: \"combobox\"\n }),\n getClearProps: ()=>({\n tabIndex: -1,\n onClick: handleClear\n }),\n getPopupIndicatorProps: ()=>({\n tabIndex: -1,\n onClick: handlePopupIndicator\n }),\n getTagProps: ({ index: index })=>(0, $20MOv.default)({\n key: index,\n \"data-tag-index\": index,\n tabIndex: -1\n }, !readOnly && {\n onDelete: handleTagDelete(index)\n }),\n getListboxProps: ()=>({\n role: \"listbox\",\n id: `${id}-listbox`,\n \"aria-labelledby\": `${id}-label`,\n ref: handleListboxRef,\n onMouseDown: (event)=>{\n // Prevent blur\n event.preventDefault();\n }\n }),\n getOptionProps: ({ index: index, option: option })=>{\n const selected = (multiple ? value : [\n value\n ]).some((value2)=>value2 != null && isOptionEqualToValue(option, value2));\n const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n return {\n key: getOptionLabel(option),\n tabIndex: -1,\n role: \"option\",\n id: `${id}-option-${index}`,\n onMouseOver: handleOptionMouseOver,\n onClick: handleOptionClick,\n onTouchStart: handleOptionTouchStart,\n \"data-option-index\": index,\n \"aria-disabled\": disabled,\n \"aria-selected\": selected\n };\n },\n id: id,\n inputValue: inputValue,\n value: value,\n dirty: dirty,\n popupOpen: popupOpen,\n focused: focused || focusedTag !== -1,\n anchorEl: anchorEl,\n setAnchorEl: setAnchorEl,\n focusedTag: focusedTag,\n groupedOptions: groupedOptions\n };\n}\n\n});\n\nparcelRegister(\"jRqkM\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $e75764f7192a0740$export$2e2bcd8739ae039; });\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\nvar $gjktY = parcelRequire(\"gjktY\");\n\nvar $8dWxZ = parcelRequire(\"8dWxZ\");\n\nvar $bFVgt = parcelRequire(\"bFVgt\");\n\nvar $9n9u9 = parcelRequire(\"9n9u9\");\n\nvar $5Up1l = parcelRequire(\"5Up1l\");\n\n\nvar $aAAPW = parcelRequire(\"aAAPW\");\n\nvar $eGmvM = parcelRequire(\"eGmvM\");\n\nvar $cNmNk = parcelRequire(\"cNmNk\");\n\nvar $71Pr4 = parcelRequire(\"71Pr4\");\n\nvar $5uoBg = parcelRequire(\"5uoBg\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nconst $e75764f7192a0740$var$_excluded = [\n \"avatar\",\n \"className\",\n \"clickable\",\n \"color\",\n \"component\",\n \"deleteIcon\",\n \"disabled\",\n \"icon\",\n \"label\",\n \"onClick\",\n \"onDelete\",\n \"onKeyDown\",\n \"onKeyUp\",\n \"size\",\n \"variant\"\n];\nconst $e75764f7192a0740$var$useUtilityClasses = (ownerState)=>{\n const { classes: classes, disabled: disabled, size: size, color: color, onDelete: onDelete, clickable: clickable, variant: variant } = ownerState;\n const slots = {\n root: [\n \"root\",\n variant,\n disabled && \"disabled\",\n `size${(0, $aAAPW.default)(size)}`,\n `color${(0, $aAAPW.default)(color)}`,\n clickable && \"clickable\",\n clickable && `clickableColor${(0, $aAAPW.default)(color)}`,\n onDelete && \"deletable\",\n onDelete && `deletableColor${(0, $aAAPW.default)(color)}`,\n `${variant}${(0, $aAAPW.default)(color)}`\n ],\n label: [\n \"label\",\n `label${(0, $aAAPW.default)(size)}`\n ],\n avatar: [\n \"avatar\",\n `avatar${(0, $aAAPW.default)(size)}`,\n `avatarColor${(0, $aAAPW.default)(color)}`\n ],\n icon: [\n \"icon\",\n `icon${(0, $aAAPW.default)(size)}`,\n `iconColor${(0, $aAAPW.default)(color)}`\n ],\n deleteIcon: [\n \"deleteIcon\",\n `deleteIcon${(0, $aAAPW.default)(size)}`,\n `deleteIconColor${(0, $aAAPW.default)(color)}`,\n `deleteIconOutlinedColor${(0, $aAAPW.default)(color)}`\n ]\n };\n return (0, $8dWxZ.default)(slots, (0, $5uoBg.getChipUtilityClass), classes);\n};\nconst $e75764f7192a0740$var$ChipRoot = (0, $71Pr4.default)(\"div\", {\n name: \"MuiChip\",\n slot: \"Root\",\n overridesResolver: (props, styles)=>{\n const { ownerState: ownerState } = props;\n const { color: color, clickable: clickable, onDelete: onDelete, size: size, variant: variant } = ownerState;\n return [\n {\n [`& .${(0, $5uoBg.default).avatar}`]: styles.avatar\n },\n {\n [`& .${(0, $5uoBg.default).avatar}`]: styles[`avatar${(0, $aAAPW.default)(size)}`]\n },\n {\n [`& .${(0, $5uoBg.default).avatar}`]: styles[`avatarColor${(0, $aAAPW.default)(color)}`]\n },\n {\n [`& .${(0, $5uoBg.default).icon}`]: styles.icon\n },\n {\n [`& .${(0, $5uoBg.default).icon}`]: styles[`icon${(0, $aAAPW.default)(size)}`]\n },\n {\n [`& .${(0, $5uoBg.default).icon}`]: styles[`iconColor${(0, $aAAPW.default)(color)}`]\n },\n {\n [`& .${(0, $5uoBg.default).deleteIcon}`]: styles.deleteIcon\n },\n {\n [`& .${(0, $5uoBg.default).deleteIcon}`]: styles[`deleteIcon${(0, $aAAPW.default)(size)}`]\n },\n {\n [`& .${(0, $5uoBg.default).deleteIcon}`]: styles[`deleteIconColor${(0, $aAAPW.default)(color)}`]\n },\n {\n [`& .${(0, $5uoBg.default).deleteIcon}`]: styles[`deleteIconOutlinedColor${(0, $aAAPW.default)(color)}`]\n },\n styles.root,\n styles[`size${(0, $aAAPW.default)(size)}`],\n styles[`color${(0, $aAAPW.default)(color)}`],\n clickable && styles.clickable,\n clickable && color !== \"default\" && styles[`clickableColor${(0, $aAAPW.default)(color)})`],\n onDelete && styles.deletable,\n onDelete && color !== \"default\" && styles[`deletableColor${(0, $aAAPW.default)(color)}`],\n styles[variant],\n variant === \"outlined\" && styles[`outlined${(0, $aAAPW.default)(color)}`]\n ];\n }\n})(({ theme: theme, ownerState: ownerState })=>{\n const deleteIconColor = (0, $bFVgt.alpha)(theme.palette.text.primary, 0.26);\n return (0, $20MOv.default)({\n maxWidth: \"100%\",\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.pxToRem(13),\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: 32,\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.action.selected,\n borderRadius: 16,\n whiteSpace: \"nowrap\",\n transition: theme.transitions.create([\n \"background-color\",\n \"box-shadow\"\n ]),\n // label will inherit this from root, then `clickable` class overrides this for both\n cursor: \"default\",\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n textDecoration: \"none\",\n border: 0,\n // Remove `button` border\n padding: 0,\n // Remove `button` padding\n verticalAlign: \"middle\",\n boxSizing: \"border-box\",\n [`&.${(0, $5uoBg.default).disabled}`]: {\n opacity: theme.palette.action.disabledOpacity,\n pointerEvents: \"none\"\n },\n [`& .${(0, $5uoBg.default).avatar}`]: {\n marginLeft: 5,\n marginRight: -6,\n width: 24,\n height: 24,\n color: theme.palette.mode === \"light\" ? theme.palette.grey[700] : theme.palette.grey[300],\n fontSize: theme.typography.pxToRem(12)\n },\n [`& .${(0, $5uoBg.default).avatarColorPrimary}`]: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.dark\n },\n [`& .${(0, $5uoBg.default).avatarColorSecondary}`]: {\n color: theme.palette.secondary.contrastText,\n backgroundColor: theme.palette.secondary.dark\n },\n [`& .${(0, $5uoBg.default).avatarSmall}`]: {\n marginLeft: 4,\n marginRight: -4,\n width: 18,\n height: 18,\n fontSize: theme.typography.pxToRem(10)\n },\n [`& .${(0, $5uoBg.default).icon}`]: (0, $20MOv.default)({\n color: theme.palette.mode === \"light\" ? theme.palette.grey[700] : theme.palette.grey[300],\n marginLeft: 5,\n marginRight: -6\n }, ownerState.size === \"small\" && {\n fontSize: 18,\n marginLeft: 4,\n marginRight: -4\n }, ownerState.color !== \"default\" && {\n color: \"inherit\"\n }),\n [`& .${(0, $5uoBg.default).deleteIcon}`]: (0, $20MOv.default)({\n WebkitTapHighlightColor: \"transparent\",\n color: deleteIconColor,\n fontSize: 22,\n cursor: \"pointer\",\n margin: \"0 5px 0 -6px\",\n \"&:hover\": {\n color: (0, $bFVgt.alpha)(deleteIconColor, 0.4)\n }\n }, ownerState.size === \"small\" && {\n fontSize: 16,\n marginRight: 4,\n marginLeft: -4\n }, ownerState.color !== \"default\" && {\n color: (0, $bFVgt.alpha)(theme.palette[ownerState.color].contrastText, 0.7),\n \"&:hover, &:active\": {\n color: theme.palette[ownerState.color].contrastText\n }\n })\n }, ownerState.size === \"small\" && {\n height: 24\n }, ownerState.color !== \"default\" && {\n backgroundColor: theme.palette[ownerState.color].main,\n color: theme.palette[ownerState.color].contrastText\n }, ownerState.onDelete && {\n [`&.${(0, $5uoBg.default).focusVisible}`]: {\n backgroundColor: (0, $bFVgt.alpha)(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n }, ownerState.onDelete && ownerState.color !== \"default\" && {\n [`&.${(0, $5uoBg.default).focusVisible}`]: {\n backgroundColor: theme.palette[ownerState.color].dark\n }\n });\n}, ({ theme: theme, ownerState: ownerState })=>(0, $20MOv.default)({}, ownerState.clickable && {\n userSelect: \"none\",\n WebkitTapHighlightColor: \"transparent\",\n cursor: \"pointer\",\n \"&:hover\": {\n backgroundColor: (0, $bFVgt.alpha)(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity)\n },\n [`&.${(0, $5uoBg.default).focusVisible}`]: {\n backgroundColor: (0, $bFVgt.alpha)(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n },\n \"&:active\": {\n boxShadow: theme.shadows[1]\n }\n }, ownerState.clickable && ownerState.color !== \"default\" && {\n [`&:hover, &.${(0, $5uoBg.default).focusVisible}`]: {\n backgroundColor: theme.palette[ownerState.color].dark\n }\n }), ({ theme: theme, ownerState: ownerState })=>(0, $20MOv.default)({}, ownerState.variant === \"outlined\" && {\n backgroundColor: \"transparent\",\n border: `1px solid ${theme.palette.mode === \"light\" ? theme.palette.grey[400] : theme.palette.grey[700]}`,\n [`&.${(0, $5uoBg.default).clickable}:hover`]: {\n backgroundColor: theme.palette.action.hover\n },\n [`&.${(0, $5uoBg.default).focusVisible}`]: {\n backgroundColor: theme.palette.action.focus\n },\n [`& .${(0, $5uoBg.default).avatar}`]: {\n marginLeft: 4\n },\n [`& .${(0, $5uoBg.default).avatarSmall}`]: {\n marginLeft: 2\n },\n [`& .${(0, $5uoBg.default).icon}`]: {\n marginLeft: 4\n },\n [`& .${(0, $5uoBg.default).iconSmall}`]: {\n marginLeft: 2\n },\n [`& .${(0, $5uoBg.default).deleteIcon}`]: {\n marginRight: 5\n },\n [`& .${(0, $5uoBg.default).deleteIconSmall}`]: {\n marginRight: 3\n }\n }, ownerState.variant === \"outlined\" && ownerState.color !== \"default\" && {\n color: theme.palette[ownerState.color].main,\n border: `1px solid ${(0, $bFVgt.alpha)(theme.palette[ownerState.color].main, 0.7)}`,\n [`&.${(0, $5uoBg.default).clickable}:hover`]: {\n backgroundColor: (0, $bFVgt.alpha)(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity)\n },\n [`&.${(0, $5uoBg.default).focusVisible}`]: {\n backgroundColor: (0, $bFVgt.alpha)(theme.palette[ownerState.color].main, theme.palette.action.focusOpacity)\n },\n [`& .${(0, $5uoBg.default).deleteIcon}`]: {\n color: (0, $bFVgt.alpha)(theme.palette[ownerState.color].main, 0.7),\n \"&:hover, &:active\": {\n color: theme.palette[ownerState.color].main\n }\n }\n }));\nconst $e75764f7192a0740$var$ChipLabel = (0, $71Pr4.default)(\"span\", {\n name: \"MuiChip\",\n slot: \"Label\",\n overridesResolver: (props, styles)=>{\n const { ownerState: ownerState } = props;\n const { size: size } = ownerState;\n return [\n styles.label,\n styles[`label${(0, $aAAPW.default)(size)}`]\n ];\n }\n})(({ ownerState: ownerState })=>(0, $20MOv.default)({\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n paddingLeft: 12,\n paddingRight: 12,\n whiteSpace: \"nowrap\"\n }, ownerState.size === \"small\" && {\n paddingLeft: 8,\n paddingRight: 8\n }));\nfunction $e75764f7192a0740$var$isDeleteKeyboardEvent(keyboardEvent) {\n return keyboardEvent.key === \"Backspace\" || keyboardEvent.key === \"Delete\";\n}\n/**\n * Chips represent complex entities in small blocks, such as a contact.\n */ const $e75764f7192a0740$var$Chip = /*#__PURE__*/ $70fFQ.forwardRef(function Chip(inProps, ref) {\n const props = (0, $cNmNk.default)({\n props: inProps,\n name: \"MuiChip\"\n });\n const { avatar: avatarProp, className: className, clickable: clickableProp, color: color = \"default\", component: ComponentProp, deleteIcon: deleteIconProp, disabled: disabled = false, icon: iconProp, label: label, onClick: onClick, onDelete: onDelete, onKeyDown: onKeyDown, onKeyUp: onKeyUp, size: size = \"medium\", variant: variant = \"filled\" } = props, other = (0, $79yYo.default)(props, $e75764f7192a0740$var$_excluded);\n const chipRef = $70fFQ.useRef(null);\n const handleRef = (0, $5Up1l.default)(chipRef, ref);\n const handleDeleteIconClick = (event)=>{\n // Stop the event from bubbling up to the `Chip`\n event.stopPropagation();\n if (onDelete) onDelete(event);\n };\n const handleKeyDown = (event)=>{\n // Ignore events from children of `Chip`.\n if (event.currentTarget === event.target && $e75764f7192a0740$var$isDeleteKeyboardEvent(event)) // Will be handled in keyUp, otherwise some browsers\n // might init navigation\n event.preventDefault();\n if (onKeyDown) onKeyDown(event);\n };\n const handleKeyUp = (event)=>{\n // Ignore events from children of `Chip`.\n if (event.currentTarget === event.target) {\n if (onDelete && $e75764f7192a0740$var$isDeleteKeyboardEvent(event)) onDelete(event);\n else if (event.key === \"Escape\" && chipRef.current) chipRef.current.blur();\n }\n if (onKeyUp) onKeyUp(event);\n };\n const clickable = clickableProp !== false && onClick ? true : clickableProp;\n const small = size === \"small\";\n const component = clickable || onDelete ? (0, $eGmvM.default) : ComponentProp || \"div\";\n const ownerState = (0, $20MOv.default)({}, props, {\n component: component,\n disabled: disabled,\n size: size,\n color: color,\n onDelete: !!onDelete,\n clickable: clickable,\n variant: variant\n });\n const classes = $e75764f7192a0740$var$useUtilityClasses(ownerState);\n const moreProps = component === (0, $eGmvM.default) ? (0, $20MOv.default)({\n component: ComponentProp || \"div\",\n focusVisibleClassName: classes.focusVisible\n }, onDelete && {\n disableRipple: true\n }) : {};\n let deleteIcon = null;\n if (onDelete) {\n const customClasses = (0, $gjktY.default)(color !== \"default\" && (variant === \"outlined\" ? classes[`deleteIconOutlinedColor${(0, $aAAPW.default)(color)}`] : classes[`deleteIconColor${(0, $aAAPW.default)(color)}`]), small && classes.deleteIconSmall);\n deleteIcon = deleteIconProp && /*#__PURE__*/ $70fFQ.isValidElement(deleteIconProp) ? /*#__PURE__*/ $70fFQ.cloneElement(deleteIconProp, {\n className: (0, $gjktY.default)(deleteIconProp.props.className, classes.deleteIcon, customClasses),\n onClick: handleDeleteIconClick\n }) : /*#__PURE__*/ (0, $4x3bm.jsx)((0, $9n9u9.default), {\n className: (0, $gjktY.default)(classes.deleteIcon, customClasses),\n onClick: handleDeleteIconClick\n });\n }\n let avatar = null;\n if (avatarProp && /*#__PURE__*/ $70fFQ.isValidElement(avatarProp)) avatar = /*#__PURE__*/ $70fFQ.cloneElement(avatarProp, {\n className: (0, $gjktY.default)(classes.avatar, avatarProp.props.className)\n });\n let icon = null;\n if (iconProp && /*#__PURE__*/ $70fFQ.isValidElement(iconProp)) icon = /*#__PURE__*/ $70fFQ.cloneElement(iconProp, {\n className: (0, $gjktY.default)(classes.icon, iconProp.props.className)\n });\n return /*#__PURE__*/ (0, $4x3bm.jsxs)($e75764f7192a0740$var$ChipRoot, (0, $20MOv.default)({\n as: component,\n className: (0, $gjktY.default)(classes.root, className),\n disabled: clickable && disabled ? true : undefined,\n onClick: onClick,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n ref: handleRef,\n ownerState: ownerState\n }, moreProps, other, {\n children: [\n avatar || icon,\n /*#__PURE__*/ (0, $4x3bm.jsx)($e75764f7192a0740$var$ChipLabel, {\n className: (0, $gjktY.default)(classes.label),\n ownerState: ownerState,\n children: label\n }),\n deleteIcon\n ]\n }));\n});\nvar $e75764f7192a0740$export$2e2bcd8739ae039 = $e75764f7192a0740$var$Chip;\n\n});\nparcelRegister(\"9n9u9\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $6d2d9e9b1fd201c0$export$2e2bcd8739ae039; });\nparcelRequire(\"70fFQ\");\n\nvar $fKdUq = parcelRequire(\"fKdUq\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $6d2d9e9b1fd201c0$export$2e2bcd8739ae039 = (0, $fKdUq.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), \"Cancel\");\n\n});\n\nparcelRegister(\"5uoBg\", function(module, exports) {\n\n$parcel$export(module.exports, \"getChipUtilityClass\", function () { return $3ff2d6205552d26a$export$31444911e4ee6fdd; });\n$parcel$export(module.exports, \"default\", function () { return $3ff2d6205552d26a$export$2e2bcd8739ae039; });\n\nvar $dtsUs = parcelRequire(\"dtsUs\");\nvar $jLqVN = parcelRequire(\"jLqVN\");\nfunction $3ff2d6205552d26a$export$31444911e4ee6fdd(slot) {\n return (0, $dtsUs.default)(\"MuiChip\", slot);\n}\nconst $3ff2d6205552d26a$var$chipClasses = (0, $jLqVN.default)(\"MuiChip\", [\n \"root\",\n \"sizeSmall\",\n \"sizeMedium\",\n \"colorPrimary\",\n \"colorSecondary\",\n \"disabled\",\n \"clickable\",\n \"clickableColorPrimary\",\n \"clickableColorSecondary\",\n \"deletable\",\n \"deletableColorPrimary\",\n \"deletableColorSecondary\",\n \"outlined\",\n \"filled\",\n \"outlinedPrimary\",\n \"outlinedSecondary\",\n \"avatar\",\n \"avatarSmall\",\n \"avatarMedium\",\n \"avatarColorPrimary\",\n \"avatarColorSecondary\",\n \"icon\",\n \"iconSmall\",\n \"iconMedium\",\n \"iconColorPrimary\",\n \"iconColorSecondary\",\n \"label\",\n \"labelSmall\",\n \"labelMedium\",\n \"deleteIcon\",\n \"deleteIconSmall\",\n \"deleteIconMedium\",\n \"deleteIconColorPrimary\",\n \"deleteIconColorSecondary\",\n \"deleteIconOutlinedColorPrimary\",\n \"deleteIconOutlinedColorSecondary\",\n \"focusVisible\"\n]);\nvar $3ff2d6205552d26a$export$2e2bcd8739ae039 = $3ff2d6205552d26a$var$chipClasses;\n\n});\n\n\nparcelRegister(\"7AUf9\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $587785f3fdc954fd$export$2e2bcd8739ae039; });\nparcelRequire(\"70fFQ\");\n\nvar $fKdUq = parcelRequire(\"fKdUq\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $587785f3fdc954fd$export$2e2bcd8739ae039 = (0, $fKdUq.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), \"Close\");\n\n});\n\nparcelRegister(\"fAmaY\", function(module, exports) {\n\n$parcel$export(module.exports, \"getAutocompleteUtilityClass\", function () { return $b58b6b82cc5a8c72$export$8ee01529667e66d9; });\n$parcel$export(module.exports, \"default\", function () { return $b58b6b82cc5a8c72$export$2e2bcd8739ae039; });\n\nvar $dtsUs = parcelRequire(\"dtsUs\");\nvar $jLqVN = parcelRequire(\"jLqVN\");\nfunction $b58b6b82cc5a8c72$export$8ee01529667e66d9(slot) {\n return (0, $dtsUs.default)(\"MuiAutocomplete\", slot);\n}\nconst $b58b6b82cc5a8c72$var$autocompleteClasses = (0, $jLqVN.default)(\"MuiAutocomplete\", [\n \"root\",\n \"fullWidth\",\n \"focused\",\n \"focusVisible\",\n \"tag\",\n \"tagSizeSmall\",\n \"tagSizeMedium\",\n \"hasPopupIcon\",\n \"hasClearIcon\",\n \"inputRoot\",\n \"input\",\n \"inputFocused\",\n \"endAdornment\",\n \"clearIndicator\",\n \"popupIndicator\",\n \"popupIndicatorOpen\",\n \"popper\",\n \"popperDisablePortal\",\n \"paper\",\n \"listbox\",\n \"loading\",\n \"noOptions\",\n \"option\",\n \"groupLabel\",\n \"groupUl\"\n]);\nvar $b58b6b82cc5a8c72$export$2e2bcd8739ae039 = $b58b6b82cc5a8c72$var$autocompleteClasses;\n\n});\n\n\nparcelRegister(\"4aoN6\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $308b5390273a79c5$export$2e2bcd8739ae039; });\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\nvar $gjktY = parcelRequire(\"gjktY\");\n\nvar $8dWxZ = parcelRequire(\"8dWxZ\");\n\nvar $aAAPW = parcelRequire(\"aAAPW\");\n\nvar $27ZKj = parcelRequire(\"27ZKj\");\n\nvar $eNpqa = parcelRequire(\"eNpqa\");\n\nvar $7kxx2 = parcelRequire(\"7kxx2\");\n\nvar $71Pr4 = parcelRequire(\"71Pr4\");\n\nvar $dxrOb = parcelRequire(\"dxrOb\");\n\nvar $cNmNk = parcelRequire(\"cNmNk\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $308b5390273a79c5$var$_span;\nconst $308b5390273a79c5$var$_excluded = [\n \"children\",\n \"className\",\n \"component\",\n \"disablePointerEvents\",\n \"disableTypography\",\n \"position\",\n \"variant\"\n];\nconst $308b5390273a79c5$var$overridesResolver = (props, styles)=>{\n const { ownerState: ownerState } = props;\n return [\n styles.root,\n styles[`position${(0, $aAAPW.default)(ownerState.position)}`],\n ownerState.disablePointerEvents === true && styles.disablePointerEvents,\n styles[ownerState.variant]\n ];\n};\nconst $308b5390273a79c5$var$useUtilityClasses = (ownerState)=>{\n const { classes: classes, disablePointerEvents: disablePointerEvents, hiddenLabel: hiddenLabel, position: position, size: size, variant: variant } = ownerState;\n const slots = {\n root: [\n \"root\",\n disablePointerEvents && \"disablePointerEvents\",\n position && `position${(0, $aAAPW.default)(position)}`,\n variant,\n hiddenLabel && \"hiddenLabel\",\n size && `size${(0, $aAAPW.default)(size)}`\n ]\n };\n return (0, $8dWxZ.default)(slots, (0, $dxrOb.getInputAdornmentUtilityClass), classes);\n};\nconst $308b5390273a79c5$var$InputAdornmentRoot = (0, $71Pr4.default)(\"div\", {\n name: \"MuiInputAdornment\",\n slot: \"Root\",\n overridesResolver: $308b5390273a79c5$var$overridesResolver\n})(({ theme: theme, ownerState: ownerState })=>(0, $20MOv.default)({\n display: \"flex\",\n height: \"0.01em\",\n // Fix IE11 flexbox alignment. To remove at some point.\n maxHeight: \"2em\",\n alignItems: \"center\",\n whiteSpace: \"nowrap\",\n color: theme.palette.action.active\n }, ownerState.variant === \"filled\" && {\n // Styles applied to the root element if `variant=\"filled\"`.\n [`&.${(0, $dxrOb.default).positionStart}&:not(.${(0, $dxrOb.default).hiddenLabel})`]: {\n marginTop: 16\n }\n }, ownerState.position === \"start\" && {\n // Styles applied to the root element if `position=\"start\"`.\n marginRight: 8\n }, ownerState.position === \"end\" && {\n // Styles applied to the root element if `position=\"end\"`.\n marginLeft: 8\n }, ownerState.disablePointerEvents === true && {\n // Styles applied to the root element if `disablePointerEvents={true}`.\n pointerEvents: \"none\"\n }));\nconst $308b5390273a79c5$var$InputAdornment = /*#__PURE__*/ $70fFQ.forwardRef(function InputAdornment(inProps, ref) {\n const props = (0, $cNmNk.default)({\n props: inProps,\n name: \"MuiInputAdornment\"\n });\n const { children: children, className: className, component: component = \"div\", disablePointerEvents: disablePointerEvents = false, disableTypography: disableTypography = false, position: position, variant: variantProp } = props, other = (0, $79yYo.default)(props, $308b5390273a79c5$var$_excluded);\n const muiFormControl = (0, $7kxx2.default)() || {};\n let variant = variantProp;\n variantProp && muiFormControl.variant;\n if (muiFormControl && !variant) variant = muiFormControl.variant;\n const ownerState = (0, $20MOv.default)({}, props, {\n hiddenLabel: muiFormControl.hiddenLabel,\n size: muiFormControl.size,\n disablePointerEvents: disablePointerEvents,\n position: position,\n variant: variant\n });\n const classes = $308b5390273a79c5$var$useUtilityClasses(ownerState);\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $eNpqa.default).Provider, {\n value: null,\n children: /*#__PURE__*/ (0, $4x3bm.jsx)($308b5390273a79c5$var$InputAdornmentRoot, (0, $20MOv.default)({\n as: component,\n ownerState: ownerState,\n className: (0, $gjktY.default)(classes.root, className),\n ref: ref\n }, other, {\n children: typeof children === \"string\" && !disableTypography ? /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n color: \"text.secondary\",\n children: children\n }) : /*#__PURE__*/ (0, $4x3bm.jsxs)($70fFQ.Fragment, {\n children: [\n position === \"start\" ? /* notranslate needed while Google Translate will not fix zero-width space issue */ $308b5390273a79c5$var$_span || ($308b5390273a79c5$var$_span = /*#__PURE__*/ (0, $4x3bm.jsx)(\"span\", {\n className: \"notranslate\",\n children: \"\\u200B\"\n })) : null,\n children\n ]\n })\n }))\n });\n});\nvar $308b5390273a79c5$export$2e2bcd8739ae039 = $308b5390273a79c5$var$InputAdornment;\n\n});\nparcelRegister(\"dxrOb\", function(module, exports) {\n\n$parcel$export(module.exports, \"getInputAdornmentUtilityClass\", function () { return $9db3ed9d654e70b4$export$4b135a4b3a6c4550; });\n$parcel$export(module.exports, \"default\", function () { return $9db3ed9d654e70b4$export$2e2bcd8739ae039; });\n\nvar $dtsUs = parcelRequire(\"dtsUs\");\nvar $jLqVN = parcelRequire(\"jLqVN\");\nfunction $9db3ed9d654e70b4$export$4b135a4b3a6c4550(slot) {\n return (0, $dtsUs.default)(\"MuiInputAdornment\", slot);\n}\nconst $9db3ed9d654e70b4$var$inputAdornmentClasses = (0, $jLqVN.default)(\"MuiInputAdornment\", [\n \"root\",\n \"filled\",\n \"standard\",\n \"outlined\",\n \"positionStart\",\n \"positionEnd\",\n \"disablePointerEvents\",\n \"hiddenLabel\",\n \"sizeSmall\"\n]);\nvar $9db3ed9d654e70b4$export$2e2bcd8739ae039 = $9db3ed9d654e70b4$var$inputAdornmentClasses;\n\n});\n\n\nparcelRegister(\"6QAZD\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $4fc44b7c7ca8aeea$export$2e2bcd8739ae039; });\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\n\nvar $8dWxZ = parcelRequire(\"8dWxZ\");\n\nvar $bFVgt = parcelRequire(\"bFVgt\");\n\nvar $bKj54 = parcelRequire(\"bKj54\");\n\nvar $cNmNk = parcelRequire(\"cNmNk\");\n\nvar $jZ9og = parcelRequire(\"jZ9og\");\n\nvar $aAAPW = parcelRequire(\"aAAPW\");\n\nvar $3YAuu = parcelRequire(\"3YAuu\");\n\nvar $3AnZy = parcelRequire(\"3AnZy\");\n\nvar $7QIvB = parcelRequire(\"7QIvB\");\n\nvar $71Pr4 = parcelRequire(\"71Pr4\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nconst $4fc44b7c7ca8aeea$var$_excluded = [\n \"checked\",\n \"checkedIcon\",\n \"color\",\n \"icon\",\n \"name\",\n \"onChange\",\n \"size\"\n];\nconst $4fc44b7c7ca8aeea$var$useUtilityClasses = (ownerState)=>{\n const { classes: classes, color: color } = ownerState;\n const slots = {\n root: [\n \"root\",\n `color${(0, $aAAPW.default)(color)}`\n ]\n };\n return (0, $20MOv.default)({}, classes, (0, $8dWxZ.default)(slots, (0, $7QIvB.getRadioUtilityClass), classes));\n};\nconst $4fc44b7c7ca8aeea$var$RadioRoot = (0, $71Pr4.default)((0, $bKj54.default), {\n shouldForwardProp: (prop)=>(0, $71Pr4.rootShouldForwardProp)(prop) || prop === \"classes\",\n name: \"MuiRadio\",\n slot: \"Root\",\n overridesResolver: (props, styles)=>{\n const { ownerState: ownerState } = props;\n return [\n styles.root,\n styles[`color${(0, $aAAPW.default)(ownerState.color)}`]\n ];\n }\n})(({ theme: theme, ownerState: ownerState })=>(0, $20MOv.default)({\n color: theme.palette.text.secondary,\n \"&:hover\": {\n backgroundColor: (0, $bFVgt.alpha)(ownerState.color === \"default\" ? theme.palette.action.active : theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n \"@media (hover: none)\": {\n backgroundColor: \"transparent\"\n }\n }\n }, ownerState.color !== \"default\" && {\n [`&.${(0, $7QIvB.default).checked}`]: {\n color: theme.palette[ownerState.color].main\n }\n }, {\n [`&.${(0, $7QIvB.default).disabled}`]: {\n color: theme.palette.action.disabled\n }\n }));\nfunction $4fc44b7c7ca8aeea$var$areEqualValues(a, b) {\n if (typeof b === \"object\" && b !== null) return a === b;\n // The value could be a number, the DOM will stringify it anyway.\n return String(a) === String(b);\n}\nconst $4fc44b7c7ca8aeea$var$defaultCheckedIcon = /*#__PURE__*/ (0, $4x3bm.jsx)((0, $jZ9og.default), {\n checked: true\n});\nconst $4fc44b7c7ca8aeea$var$defaultIcon = /*#__PURE__*/ (0, $4x3bm.jsx)((0, $jZ9og.default), {});\nconst $4fc44b7c7ca8aeea$var$Radio = /*#__PURE__*/ $70fFQ.forwardRef(function Radio(inProps, ref) {\n var _defaultIcon$props$fo, _defaultCheckedIcon$p;\n const props = (0, $cNmNk.default)({\n props: inProps,\n name: \"MuiRadio\"\n });\n const { checked: checkedProp, checkedIcon: checkedIcon = $4fc44b7c7ca8aeea$var$defaultCheckedIcon, color: color = \"primary\", icon: icon = $4fc44b7c7ca8aeea$var$defaultIcon, name: nameProp, onChange: onChangeProp, size: size = \"medium\" } = props, other = (0, $79yYo.default)(props, $4fc44b7c7ca8aeea$var$_excluded);\n const ownerState = (0, $20MOv.default)({}, props, {\n color: color,\n size: size\n });\n const classes = $4fc44b7c7ca8aeea$var$useUtilityClasses(ownerState);\n const radioGroup = (0, $3AnZy.default)();\n let checked = checkedProp;\n const onChange = (0, $3YAuu.default)(onChangeProp, radioGroup && radioGroup.onChange);\n let name = nameProp;\n if (radioGroup) {\n if (typeof checked === \"undefined\") checked = $4fc44b7c7ca8aeea$var$areEqualValues(radioGroup.value, props.value);\n if (typeof name === \"undefined\") name = radioGroup.name;\n }\n return /*#__PURE__*/ (0, $4x3bm.jsx)($4fc44b7c7ca8aeea$var$RadioRoot, (0, $20MOv.default)({\n type: \"radio\",\n icon: /*#__PURE__*/ $70fFQ.cloneElement(icon, {\n fontSize: (_defaultIcon$props$fo = $4fc44b7c7ca8aeea$var$defaultIcon.props.fontSize) != null ? _defaultIcon$props$fo : size\n }),\n checkedIcon: /*#__PURE__*/ $70fFQ.cloneElement(checkedIcon, {\n fontSize: (_defaultCheckedIcon$p = $4fc44b7c7ca8aeea$var$defaultCheckedIcon.props.fontSize) != null ? _defaultCheckedIcon$p : size\n }),\n ownerState: ownerState,\n classes: classes,\n name: name,\n checked: checked,\n onChange: onChange,\n ref: ref\n }, other));\n});\nvar $4fc44b7c7ca8aeea$export$2e2bcd8739ae039 = $4fc44b7c7ca8aeea$var$Radio;\n\n});\nparcelRegister(\"jZ9og\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $e8caff9433e5d0b2$export$2e2bcd8739ae039; });\n\nvar $20MOv = parcelRequire(\"20MOv\");\nparcelRequire(\"70fFQ\");\n\n\nvar $dnDVi = parcelRequire(\"dnDVi\");\n\nvar $cjMMv = parcelRequire(\"cjMMv\");\n\nvar $71Pr4 = parcelRequire(\"71Pr4\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nconst $e8caff9433e5d0b2$var$RadioButtonIconRoot = (0, $71Pr4.default)(\"span\")({\n position: \"relative\",\n display: \"flex\"\n});\nconst $e8caff9433e5d0b2$var$RadioButtonIconBackground = (0, $71Pr4.default)((0, $dnDVi.default))({\n // Scale applied to prevent dot misalignment in Safari\n transform: \"scale(1)\"\n});\nconst $e8caff9433e5d0b2$var$RadioButtonIconDot = (0, $71Pr4.default)((0, $cjMMv.default))(({ theme: theme, ownerState: ownerState })=>(0, $20MOv.default)({\n left: 0,\n position: \"absolute\",\n transform: \"scale(0)\",\n transition: theme.transitions.create(\"transform\", {\n easing: theme.transitions.easing.easeIn,\n duration: theme.transitions.duration.shortest\n })\n }, ownerState.checked && {\n transform: \"scale(1)\",\n transition: theme.transitions.create(\"transform\", {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.shortest\n })\n }));\n/**\n * @ignore - internal component.\n */ function $e8caff9433e5d0b2$var$RadioButtonIcon(props) {\n const { checked: checked = false, classes: classes = {}, fontSize: fontSize } = props;\n const ownerState = (0, $20MOv.default)({}, props, {\n checked: checked\n });\n return /*#__PURE__*/ (0, $4x3bm.jsxs)($e8caff9433e5d0b2$var$RadioButtonIconRoot, {\n className: classes.root,\n ownerState: ownerState,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)($e8caff9433e5d0b2$var$RadioButtonIconBackground, {\n fontSize: fontSize,\n className: classes.background,\n ownerState: ownerState\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)($e8caff9433e5d0b2$var$RadioButtonIconDot, {\n fontSize: fontSize,\n className: classes.dot,\n ownerState: ownerState\n })\n ]\n });\n}\nvar $e8caff9433e5d0b2$export$2e2bcd8739ae039 = $e8caff9433e5d0b2$var$RadioButtonIcon;\n\n});\nparcelRegister(\"dnDVi\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $9bdc64396e0c15f7$export$2e2bcd8739ae039; });\nparcelRequire(\"70fFQ\");\n\nvar $fKdUq = parcelRequire(\"fKdUq\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $9bdc64396e0c15f7$export$2e2bcd8739ae039 = (0, $fKdUq.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), \"RadioButtonUnchecked\");\n\n});\n\nparcelRegister(\"cjMMv\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $8f7d1958a660145f$export$2e2bcd8739ae039; });\nparcelRequire(\"70fFQ\");\n\nvar $fKdUq = parcelRequire(\"fKdUq\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $8f7d1958a660145f$export$2e2bcd8739ae039 = (0, $fKdUq.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z\"\n}), \"RadioButtonChecked\");\n\n});\n\n\nparcelRegister(\"3YAuu\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $2e534803aabd1c94$export$2e2bcd8739ae039; });\n\nvar $6tMUR = parcelRequire(\"6tMUR\");\nvar $2e534803aabd1c94$export$2e2bcd8739ae039 = (0, $6tMUR.default);\n\n});\n\nparcelRegister(\"3AnZy\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $29c7582930b706b9$export$2e2bcd8739ae039; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $7b960 = parcelRequire(\"7b960\");\nfunction $29c7582930b706b9$export$2e2bcd8739ae039() {\n return $70fFQ.useContext((0, $7b960.default));\n}\n\n});\nparcelRegister(\"7b960\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $53a09dbe07fbaf1c$export$2e2bcd8739ae039; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n/**\n * @ignore - internal component.\n */ const $53a09dbe07fbaf1c$var$RadioGroupContext = /*#__PURE__*/ $70fFQ.createContext(undefined);\nvar $53a09dbe07fbaf1c$export$2e2bcd8739ae039 = $53a09dbe07fbaf1c$var$RadioGroupContext;\n\n});\n\n\nparcelRegister(\"7QIvB\", function(module, exports) {\n\n$parcel$export(module.exports, \"getRadioUtilityClass\", function () { return $5b6fea3698d1392d$export$192f7b2363c77155; });\n$parcel$export(module.exports, \"default\", function () { return $5b6fea3698d1392d$export$2e2bcd8739ae039; });\n\nvar $dtsUs = parcelRequire(\"dtsUs\");\nvar $jLqVN = parcelRequire(\"jLqVN\");\nfunction $5b6fea3698d1392d$export$192f7b2363c77155(slot) {\n return (0, $dtsUs.default)(\"MuiRadio\", slot);\n}\nconst $5b6fea3698d1392d$var$radioClasses = (0, $jLqVN.default)(\"MuiRadio\", [\n \"root\",\n \"checked\",\n \"disabled\",\n \"colorPrimary\",\n \"colorSecondary\"\n]);\nvar $5b6fea3698d1392d$export$2e2bcd8739ae039 = $5b6fea3698d1392d$var$radioClasses;\n\n});\n\n\nparcelRegister(\"bg50F\", function(module, exports) {\n\"use strict\";\n\nvar $hTVTj = parcelRequire(\"hTVTj\");\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.default = void 0;\n\nvar $83251325b328da74$var$_createSvgIcon = $hTVTj((parcelRequire(\"7Jp6i\")));\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $83251325b328da74$var$_default = (0, $83251325b328da74$var$_createSvgIcon.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M16.59 7.58 10 14.17l-3.59-3.58L5 12l5 5 8-8zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), \"CheckCircleOutline\");\nmodule.exports.default = $83251325b328da74$var$_default;\n\n});\n\nparcelRegister(\"6lvOy\", function(module, exports) {\n\"use strict\";\n\nvar $hTVTj = parcelRequire(\"hTVTj\");\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.default = void 0;\n\nvar $49ed61eb46db3908$var$_createSvgIcon = $hTVTj((parcelRequire(\"7Jp6i\")));\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $49ed61eb46db3908$var$_default = (0, $49ed61eb46db3908$var$_createSvgIcon.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M15.41 16.59 10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\"\n}), \"KeyboardArrowLeft\");\nmodule.exports.default = $49ed61eb46db3908$var$_default;\n\n});\n\nparcelRegister(\"lbjAq\", function(module, exports) {\n\"use strict\";\n\nvar $hTVTj = parcelRequire(\"hTVTj\");\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports.default = void 0;\n\nvar $f6b9d187fcf42006$var$_createSvgIcon = $hTVTj((parcelRequire(\"7Jp6i\")));\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $f6b9d187fcf42006$var$_default = (0, $f6b9d187fcf42006$var$_createSvgIcon.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), \"KeyboardArrowRight\");\nmodule.exports.default = $f6b9d187fcf42006$var$_default;\n\n});\n\nparcelRegister(\"6jgOg\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", function () { return $49818e7cd5c563e8$export$2e2bcd8739ae039; });\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\nfunction $49818e7cd5c563e8$export$2e2bcd8739ae039(callback, delay) {\n const savedCallback = (0, $70fFQ.useRef)();\n // Remember the latest callback.\n (0, $70fFQ.useEffect)(()=>{\n savedCallback.current = callback;\n }, [\n callback\n ]);\n // Set up the interval.\n (0, $70fFQ.useEffect)(()=>{\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n const id = setInterval(tick, delay);\n return ()=>clearInterval(id);\n }\n }, [\n delay\n ]);\n}\n\n});\n\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nparcelRequire(\"70fFQ\");\nvar $94a1820d6644dae9$exports = {};\n\n$parcel$export($94a1820d6644dae9$exports, \"createRoot\", function () { return $94a1820d6644dae9$export$882461b6382ed46c; }, function (v) { return $94a1820d6644dae9$export$882461b6382ed46c = v; });\n$parcel$export($94a1820d6644dae9$exports, \"hydrateRoot\", function () { return $94a1820d6644dae9$export$757ceba2d55c277e; }, function (v) { return $94a1820d6644dae9$export$757ceba2d55c277e = v; });\nvar $94a1820d6644dae9$export$882461b6382ed46c;\nvar $94a1820d6644dae9$export$757ceba2d55c277e;\n\"use strict\";\n\nvar $3glZ1 = parcelRequire(\"3glZ1\");\nvar $94a1820d6644dae9$var$i;\n$94a1820d6644dae9$export$882461b6382ed46c = $3glZ1.createRoot;\n$94a1820d6644dae9$export$757ceba2d55c277e = $3glZ1.hydrateRoot;\n\n\n\nvar $dsvUQ = parcelRequire(\"dsvUQ\");\n\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\nvar $cNmNk = parcelRequire(\"cNmNk\");\n\nvar $kfZqu = parcelRequire(\"kfZqu\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nconst $111504f542e6f1a6$export$c0bb0b647f701bb5 = (theme, enableColorScheme)=>(0, $20MOv.default)({\n WebkitFontSmoothing: \"antialiased\",\n // Antialiasing.\n MozOsxFontSmoothing: \"grayscale\",\n // Antialiasing.\n // Change from `box-sizing: content-box` so that `width`\n // is not affected by `padding` or `border`.\n boxSizing: \"border-box\",\n // Fix font resize problem in iOS\n WebkitTextSizeAdjust: \"100%\"\n }, enableColorScheme && {\n colorScheme: theme.palette.mode\n });\nconst $111504f542e6f1a6$export$32180ef41b15b513 = (theme)=>(0, $20MOv.default)({\n color: theme.palette.text.primary\n }, theme.typography.body1, {\n backgroundColor: theme.palette.background.default,\n \"@media print\": {\n // Save printer ink.\n backgroundColor: theme.palette.common.white\n }\n });\nconst $111504f542e6f1a6$export$9dd6ff9ea0189349 = (theme, enableColorScheme = false)=>{\n var _theme$components, _theme$components$Mui;\n let defaultStyles = {\n html: $111504f542e6f1a6$export$c0bb0b647f701bb5(theme, enableColorScheme),\n \"*, *::before, *::after\": {\n boxSizing: \"inherit\"\n },\n \"strong, b\": {\n fontWeight: theme.typography.fontWeightBold\n },\n body: (0, $20MOv.default)({\n margin: 0\n }, $111504f542e6f1a6$export$32180ef41b15b513(theme), {\n // Add support for document.body.requestFullScreen().\n // Other elements, if background transparent, are not supported.\n \"&::backdrop\": {\n backgroundColor: theme.palette.background.default\n }\n })\n };\n const themeOverrides = (_theme$components = theme.components) == null ? void 0 : (_theme$components$Mui = _theme$components.MuiCssBaseline) == null ? void 0 : _theme$components$Mui.styleOverrides;\n if (themeOverrides) defaultStyles = [\n defaultStyles,\n themeOverrides\n ];\n return defaultStyles;\n};\n/**\n * Kickstart an elegant, consistent, and simple baseline to build upon.\n */ function $111504f542e6f1a6$var$CssBaseline(inProps) {\n const props = (0, $cNmNk.default)({\n props: inProps,\n name: \"MuiCssBaseline\"\n });\n const { children: children, enableColorScheme: enableColorScheme = false } = props;\n return /*#__PURE__*/ (0, $4x3bm.jsxs)($70fFQ.Fragment, {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $kfZqu.default), {\n styles: (theme)=>$111504f542e6f1a6$export$9dd6ff9ea0189349(theme, enableColorScheme)\n }),\n children\n ]\n });\n}\nvar $111504f542e6f1a6$export$2e2bcd8739ae039 = $111504f542e6f1a6$var$CssBaseline;\n\n\n\nvar $lM6lR = parcelRequire(\"lM6lR\");\nvar $5vXJC = parcelRequire(\"5vXJC\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\n\nvar $bMr3l = parcelRequire(\"bMr3l\");\nvar $f1e1a6fa5ed79428$exports = {};\n\n$f1e1a6fa5ed79428$exports = (parcelRequire(\"6UIir\")).getBundleURL(\"ak0ox\") + \"Inter-roman.var.c7ef754c.woff2\";\n\n\nvar $413aab18001e136a$exports = {};\n\n$413aab18001e136a$exports = (parcelRequire(\"6UIir\")).getBundleURL(\"ak0ox\") + \"Inter-italic.var.6edd0203.woff2\";\n\n\nconst $798fe7a4458df1c3$var$interRoman = {\n fontFamily: \"Inter var\",\n fontWeight: \"100 900\",\n fontDisplay: \"swap\",\n fontStyle: \"normal\",\n fontNamedInstance: \"Regular\",\n src: `url(${(0, (/*@__PURE__*/$parcel$interopDefault($f1e1a6fa5ed79428$exports)))}) format(\"woff2\")`\n};\nconst $798fe7a4458df1c3$var$interItalic = {\n fontFamily: \"Inter var\",\n fontWeight: \"100 900\",\n fontDisplay: \"swap\",\n fontStyle: \"italic\",\n fontNamedInstance: \"Italic\",\n src: `url(${(0, (/*@__PURE__*/$parcel$interopDefault($413aab18001e136a$exports)))}) format(\"woff2\")`\n};\nvar $798fe7a4458df1c3$export$2e2bcd8739ae039 = (0, $bMr3l.default)({\n typography: {\n fontFamily: [\n \"Inter\",\n \"-apple-system\",\n \"BlinkMacSystemFont\",\n '\"Segoe UI\"',\n \"Roboto\",\n '\"Helvetica Neue\"',\n \"Arial\",\n \"sans-serif\",\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n '\"Segoe UI Symbol\"'\n ].join(\",\"),\n h4: {\n fontWeight: 500,\n letterSpacing: \"-1px\"\n }\n },\n palette: {\n background: {\n default: \"#f5f5f5\"\n },\n primary: {\n main: \"#0070FF\"\n },\n secondary: {\n main: \"#f50057\"\n },\n success: {\n main: \"#c5e1a5\",\n light: \"#dcedc8\",\n dark: \"#aed581\",\n contrastText: \"#8bc34a\"\n },\n text: {\n primary: \"#404040\",\n secondary: \"rgba(0, 0, 0, 0.6)\",\n disabled: \"#D7D7D7\"\n },\n warning: {\n main: \"#ffe082\",\n light: \"#ffecb3\",\n dark: \"#ffd54f\",\n contrastText: \"#ffb300\"\n }\n },\n components: {\n MuiCssBaseline: {\n styleOverrides: {\n \"@global\": {\n \"@font-face\": [\n $798fe7a4458df1c3$var$interRoman,\n $798fe7a4458df1c3$var$interItalic\n ]\n }\n }\n },\n MuiDivider: {\n styleOverrides: {\n inset: {\n marginLeft: 16\n }\n }\n },\n MuiListItem: {\n button: {\n styleOverrides: {\n \"&:hover\": {\n backgroundColor: \"rgba(0,0,0,0)\"\n }\n }\n }\n },\n MuiFab: {\n styleOverrides: {\n root: {\n backgroundColor: \"#fff\"\n }\n }\n },\n MuiTypography: {\n styleOverrides: {\n overline: {\n fontSize: \"0.65rem\"\n }\n }\n },\n MuiButton: {\n styleOverrides: {\n sizeSmall: {\n fontSize: \"0.625rem\"\n }\n }\n },\n MuiIconButton: {\n styleOverrides: {\n sizeExtraLarge: {\n padding: 12,\n width: 64,\n height: 64,\n fontSize: 48,\n \"& svg\": {\n height: 48,\n width: 48,\n fontSize: 48\n }\n },\n sizeSmall: {\n padding: 5,\n \"& svg\": {\n maxHeight: 20,\n maxWidth: 20\n }\n }\n }\n },\n MuiSlider: {\n styleOverrides: {\n root: {\n color: \"#01a3ff\",\n height: 1\n },\n rail: {\n height: 1\n },\n track: {\n height: 1\n },\n thumb: {\n width: 12,\n height: 12,\n background: \"#01a3ff\"\n }\n }\n },\n MuiAccordionDetails: {\n styleOverrides: {\n root: {\n display: \"block\"\n }\n }\n },\n MuiListSubheader: {\n styleOverrides: {\n root: {\n fontWeight: 400,\n fontSize: \"0.8rem\",\n borderBottom: \"1px solid #DFDFDF\"\n },\n sticky: {\n backgroundColor: \"#fff\"\n }\n }\n },\n MuiMenuItem: {\n styleOverrides: {\n root: {\n fontSize: \"0.875rem\"\n }\n }\n }\n }\n});\n\n\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $dih0O = parcelRequire(\"dih0O\");\nparcelRequire(\"8hvMW\");\nvar $87gt0 = parcelRequire(\"87gt0\");\n\nvar $iWaGk = parcelRequire(\"iWaGk\");\nconst $49502641be0ebafe$var$KeyboardShortcuts = ({ children: children })=>{\n const { buildingStore: buildingStore, uiStore: uiStore } = (0, $iWaGk.default)();\n const history = (0, $dih0O.useHistory)();\n const handleOnKeyDown = (e)=>{\n const { pickedResults: pickedResults, resultMap: resultMap } = buildingStore;\n if (e.ctrlKey && e.keyCode === \"P\".charCodeAt(0)) {\n e.preventDefault();\n if (uiStore.version === \"v2\") uiStore.setUIVersion(\"v1\");\n else uiStore.setUIVersion(\"v2\");\n }\n if (history.location.pathname === \"/search\") {\n if (e.ctrlKey && e.keyCode === \"A\".charCodeAt(0)) {\n e.preventDefault();\n uiStore.setSearchPanelState(\"picker\");\n if (resultMap.size === pickedResults.size) buildingStore.clearPicked();\n else buildingStore.pickAllResults();\n }\n }\n };\n (0, $70fFQ.useEffect)(()=>{\n window.addEventListener(\"keydown\", handleOnKeyDown);\n return ()=>{\n window.removeEventListener(\"keydown\", handleOnKeyDown);\n };\n }, []);\n return /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n style: {\n height: \"inherit\"\n },\n tabIndex: \"-1\",\n role: \"complementary\",\n // onKeyDown={handleOnKeyDown}\n onPaste: ()=>{\n /*\n\n return;\n if (!projectDetailStore.id) return;\n const paste = (event.clipboardData || window.clipboardData).getData(\n 'text'\n );\n\n const data = paste\n .split(`\\n`)\n .map(line => {\n return line\n .split(`\\t`)\n .map(item => `\"${item}\"`)\n .join('\\t');\n })\n .join(`\\n`);\n console.log(data);\n\n const blob = new Blob([data], { type: 'text/plain' });\n projectDetailStore.setAcceptedFiles([blob]);\n event.preventDefault();\n */ },\n children: children\n });\n};\nvar $49502641be0ebafe$export$2e2bcd8739ae039 = (0, $87gt0.observer)($49502641be0ebafe$var$KeyboardShortcuts);\n\n\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $7zM2h = parcelRequire(\"7zM2h\");\n\nvar $gOgWf = parcelRequire(\"gOgWf\");\nparcelRequire(\"8hvMW\");\nvar $87gt0 = parcelRequire(\"87gt0\");\n\nvar $iWaGk = parcelRequire(\"iWaGk\");\nconst $07bac6c924ea40e1$var$NotificationBar = ()=>{\n const [open, setOpen] = (0, $70fFQ.useState)(false);\n const [notification, setNotification] = (0, $70fFQ.useState)(null);\n const { userStore: userStore } = (0, $iWaGk.default)();\n (0, $70fFQ.useEffect)(()=>(0, $gOgWf.autorun)(()=>{\n const [notification] = userStore.notifications.slice(-1);\n if (notification) {\n setNotification(notification);\n setOpen(true);\n setTimeout(()=>{\n setOpen(false);\n }, 5000);\n }\n }), []);\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7zM2h.default), {\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"center\"\n },\n open: open,\n message: notification === null || notification === void 0 ? void 0 : notification.title\n });\n};\nvar $07bac6c924ea40e1$export$2e2bcd8739ae039 = (0, $87gt0.observer)($07bac6c924ea40e1$var$NotificationBar);\n\n\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nparcelRequire(\"70fFQ\");\n\nvar $dih0O = parcelRequire(\"dih0O\");\nparcelRequire(\"8hvMW\");\nvar $87gt0 = parcelRequire(\"87gt0\");\n\nvar $27ZKj = parcelRequire(\"27ZKj\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\n\nvar $hqhdr = parcelRequire(\"hqhdr\");\n\nvar $dih0O = parcelRequire(\"dih0O\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\nconst $4aa0f072730a5215$var$PrivateRoute = ({ userStore: userStore, component: Component, location: location })=>{\n const history = (0, $dih0O.useHistory)();\n const query = (0, (/*@__PURE__*/$parcel$interopDefault($hqhdr))).parse(window.location.search.substring(1));\n (0, $70fFQ.useEffect)(()=>{\n if (!userStore.isLoggedIn && query.code) (async ()=>{\n await userStore.loginWithCode(query.code);\n history.push(window.location.pathname);\n })();\n }, []);\n if (!userStore.isLoggedIn && query.code) return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4x3bm.Fragment), {});\n if (!userStore.loggedIn) return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Redirect), {\n to: {\n pathname: \"/login\",\n state: {\n referrer: location.pathname\n }\n }\n });\n if (location.pathname.startsWith(\"/search\") && !userStore.hasAccess(\"prospecting\")) return /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {});\n return /*#__PURE__*/ (0, $4x3bm.jsx)(Component, {});\n};\nvar $4aa0f072730a5215$export$2e2bcd8739ae039 = $4aa0f072730a5215$var$PrivateRoute;\n\n\n/* eslint-disable prefer-destructuring */ /* eslint-disable no-await-in-loop */ /* eslint-disable no-restricted-syntax */ \nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $bdM1R = parcelRequire(\"bdM1R\");\nvar $fRNcc = parcelRequire(\"fRNcc\");\nvar $3PGZI = parcelRequire(\"3PGZI\");\nvar $hsXqC = parcelRequire(\"hsXqC\");\nvar $bDcYY = parcelRequire(\"bDcYY\");\nvar $27ZKj = parcelRequire(\"27ZKj\");\n\nvar $fKdUq = parcelRequire(\"fKdUq\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $e3e0ce42694788c1$export$2e2bcd8739ae039 = (0, $fKdUq.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M16.59 7.58 10 14.17l-3.59-3.58L5 12l5 5 8-8zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), \"CheckCircleOutline\");\n\n\nvar $fKdUq = parcelRequire(\"fKdUq\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $d5e315da602eee3d$export$2e2bcd8739ae039 = (0, $fKdUq.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), \"ErrorOutline\");\n\n\nvar $4KbVS = parcelRequire(\"4KbVS\");\n\nvar $96kno = parcelRequire(\"96kno\");\n\nvar $fuiMG = parcelRequire(\"fuiMG\");\n\nvar $lUBOG = parcelRequire(\"lUBOG\");\nfunction $a17ae84f2c373946$export$2e2bcd8739ae039() {\n const [expanded, setExpanded] = (0, $70fFQ.useState)(false);\n const [browserExpanded, setBrowserExpanded] = (0, $70fFQ.useState)(false);\n const [specExpanded, setSpecExpanded] = (0, $70fFQ.useState)(false);\n const [finalTests, setFinalTests] = (0, $70fFQ.useState)([]);\n const url = `${(0, $lUBOG.default).E2E_API_URL}test_results`;\n const setExpanedPanel = (panel)=>(event, isExpanded)=>{\n setExpanded(isExpanded ? panel : false);\n };\n const handleBrowserExpand = (panel)=>(event, isBrowserExpanded)=>{\n setBrowserExpanded(isBrowserExpanded ? panel : false);\n };\n const handleSpecExpand = (panel)=>(event, isSpecExpanded)=>{\n setSpecExpanded(isSpecExpanded ? panel : false);\n };\n const sortNameAndNumber = (title)=>{\n let number = \"\";\n let name = \"\";\n const numbers = \"0123456789\";\n for(let i = 0; i < title.length; i += 1){\n const curChar = title[i];\n if (numbers.includes(curChar)) number += curChar;\n else if (curChar !== \"-\") name += curChar;\n }\n return [\n number,\n name\n ];\n };\n const fetchResults = async (curTest)=>{\n try {\n const { name: name } = curTest;\n const { data: data } = await (0, (/*@__PURE__*/$parcel$interopDefault($96kno))).get(`${url}/${name}/results.json`);\n const results = [];\n if (data.suites[0]) data.suites[0].suites.forEach((x)=>{\n if (x.suites) results.push(x.suites[0]);\n results.push(x);\n });\n return results;\n } catch (err) {\n console.log(err);\n return [];\n }\n };\n const browserSort = (set)=>{\n const chromium = {\n browser: \"chromium\",\n specs: [],\n errorCount: 0\n };\n const firefox = {\n browser: \"firefox\",\n specs: [],\n errorCount: 0\n };\n const webkit = {\n browser: \"webkit\",\n specs: [],\n errorCount: 0\n };\n set.forEach((x)=>{\n const curBrowser = x.browser;\n const { status: status } = x.tests[0].results[0];\n if (curBrowser === \"chromium\") {\n if (status !== \"passed\") chromium.errorCount += 1;\n chromium.specs.push(x);\n }\n if (curBrowser === \"webkit\") {\n if (status !== \"passed\") webkit.errorCount += 1;\n webkit.specs.push(x);\n }\n if (curBrowser === \"firefox\") {\n if (status !== \"passed\") firefox.errorCount += 1;\n firefox.specs.push(x);\n }\n });\n return [\n chromium,\n firefox,\n webkit\n ];\n };\n const parseResults = (newTests)=>{\n newTests.sort((a, b)=>{\n return b.name.localeCompare(a.name);\n });\n const normalizedData = [];\n for(let i = 0; i < newTests.length; i += 1){\n const thisTest = newTests[i];\n const { mtime: mtime, results: results, name: name } = thisTest;\n const specsArray = [];\n normalizedData[i] = {};\n normalizedData[i].mtime = mtime;\n normalizedData[i].name = name;\n normalizedData[i].errorTotal = 0;\n normalizedData[i].allSpecs = [];\n normalizedData[i].timeSinceText = (0, $fuiMG.timeSince)(new Date(mtime));\n if (results) for(let j = 0; j < results.length; j += 1){\n const curSet = results[j];\n specsArray.push(curSet.specs);\n }\n normalizedData[i].allSpecs = specsArray.flat();\n for(let z = 0; z < normalizedData[i].allSpecs.length; z += 1){\n const nameAndNumber = sortNameAndNumber(normalizedData[i].allSpecs[z].title);\n normalizedData[i].allSpecs[z].order = nameAndNumber[0];\n normalizedData[i].allSpecs[z].title = nameAndNumber[1];\n normalizedData[i].allSpecs[z].browser = normalizedData[i].allSpecs[z].tests[0].projectName;\n normalizedData[i].allSpecs[z].duration = normalizedData[i].allSpecs[z].tests[0].results[0].duration / 1000;\n normalizedData[i].allSpecs.sort((a, b)=>{\n return a.order - b.order;\n });\n }\n normalizedData[i].allSpecs = browserSort(normalizedData[i].allSpecs);\n normalizedData[i].allSpecs.forEach((x)=>{\n const { errorCount: errorCount } = x;\n normalizedData[i].errorTotal += errorCount;\n });\n }\n return normalizedData;\n };\n const fetchAndParseResults = async ()=>{\n const { data: data } = await (0, (/*@__PURE__*/$parcel$interopDefault($96kno))).get(url);\n const resultsToFetch = data.slice(-30);\n const tests = [];\n for (const curTest of resultsToFetch){\n const results = await fetchResults(curTest);\n if (results.length > 0) tests.push((0, $edHbI._)((0, $2QP2i._)({}, curTest), {\n results: results\n }));\n }\n const parsedResults = parseResults(tests);\n setFinalTests(parsedResults);\n };\n (0, $70fFQ.useEffect)(()=>{\n fetchAndParseResults();\n }, []);\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n sx: {\n width: \"100%\",\n height: \"100%\",\n overflow: \"auto\",\n paddingTop: 4\n },\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n sx: {\n width: \"40%\",\n maxWidth: 920,\n minWidth: 460,\n margin: \"auto\"\n },\n children: /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n children: finalTests.map(({ allSpecs: allSpecs, timeSinceText: timeSinceText, errorTotal: errorTotal, name: name })=>/*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bdM1R.default), {\n expanded: expanded === name,\n onChange: setExpanedPanel(name),\n TransitionProps: {\n unmountOnExit: true\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $3PGZI.default), {\n expandIcon: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4KbVS.default), {}),\n \"aria-controls\": \"panel1bh-content\",\n id: \"panel1bh-header\",\n style: {\n justifyContent: \"center\"\n },\n sx: {\n alignItems: \"center\",\n overflow: \"wrap\"\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $hsXqC.default), {\n color: \"error\",\n children: errorTotal > 0 ? /*#__PURE__*/ (0, $4x3bm.jsx)((0, $d5e315da602eee3d$export$2e2bcd8739ae039), {\n sx: {\n marginRight: 8\n },\n color: \"error\"\n }) : /*#__PURE__*/ (0, $4x3bm.jsx)((0, $e3e0ce42694788c1$export$2e2bcd8739ae039), {\n sx: {\n marginRight: 8\n },\n color: \"primary\"\n })\n }),\n name,\n \" - \",\n timeSinceText,\n \" ago\"\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $fRNcc.default), {\n children: allSpecs.filter((x)=>x.specs.length > 0).map((x, i)=>{\n return /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bdM1R.default), {\n expanded: browserExpanded === x.browser + i,\n onChange: handleBrowserExpand(x.browser + i),\n TransitionProps: {\n unmountOnExit: true\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $3PGZI.default), {\n expandIcon: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4KbVS.default), {}),\n \"aria-controls\": \"panel1bh-content\",\n id: \"panel1bh-header\",\n style: {\n alignText: \"center\"\n },\n children: [\n x.browser,\n x.errorCount ? /*#__PURE__*/ (0, $4x3bm.jsx)((0, $hsXqC.default), {\n color: \"error\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $d5e315da602eee3d$export$2e2bcd8739ae039), {\n sx: {\n marginRight: 8\n },\n color: \"error\",\n fontSize: \"small\"\n })\n }) : null\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $fRNcc.default), {\n children: x.specs.map((y, i)=>{\n return /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bdM1R.default), {\n expanded: specExpanded === i + y.title,\n onChange: handleSpecExpand(i + y.title),\n TransitionProps: {\n unmountOnExit: true\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $3PGZI.default), {\n expandIcon: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4KbVS.default), {}),\n \"aria-controls\": \"panel1bh-content\",\n id: \"panel1bh-header\",\n style: {\n alignItems: \"center\"\n },\n sx: {\n alignItems: \"center\",\n overflow: \"wrap\"\n },\n children: [\n y.tests[0].results[0].status === \"passed\" && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $e3e0ce42694788c1$export$2e2bcd8739ae039), {\n sx: {\n marginRight: 8\n },\n fontSize: \"medium\",\n color: \"primary\"\n }),\n y.tests[0].results[0].status !== \"passed\" && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $d5e315da602eee3d$export$2e2bcd8739ae039), {\n sx: {\n marginRight: 8\n },\n color: \"error\",\n fontSize: \"medium\"\n }),\n y.title\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $fRNcc.default), {\n children: [\n y.tests[0].results[0].attachments && y.tests[0].results[0].attachments.map((attachment)=>{\n return attachment.name.includes(\"video\") ? /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n variant: \"subtitle2\",\n children: \"Video:\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"video\", {\n width: \"100%\",\n autoPlay: true,\n muted: true,\n loop: true,\n controls: true,\n src: `${url}/${attachment.path}`\n })\n ]\n }, `${attachment.name}`) : /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n variant: \"subtitle2\",\n children: \"Screenshot:\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n component: \"img\",\n src: `${url}${attachment.path.slice(26)}`,\n width: \"100%\"\n })\n ]\n }, `${attachment.name}`);\n }),\n y.tests[0].results[0].error && /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $27ZKj.default), {\n variant: \"subtitle2\",\n children: [\n \"Error:\",\n \" \",\n y.tests[0].results[0].error.message\n ]\n })\n ]\n })\n ]\n }, `${name}${y.title}`);\n })\n })\n ]\n }, `${name}${x.browser}}`);\n })\n })\n ]\n }, name))\n })\n })\n });\n}\n\n\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nparcelRequire(\"70fFQ\");\n\n\nvar $lUBOG = parcelRequire(\"lUBOG\");\nconst $4a01c454afb76c25$var$Auth = ({ match: match })=>{\n const { method: method } = match.params;\n console.log((0, $lUBOG.default));\n if (method === \"arcgis\") window.location.href = `${(0, $lUBOG.default).E2E_API_URL}auth/arcgis`;\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4x3bm.Fragment), {});\n};\nvar $4a01c454afb76c25$export$2e2bcd8739ae039 = $4a01c454afb76c25$var$Auth;\n\n\n/* eslint react/no-danger: 0 */ \nvar $4x3bm = parcelRequire(\"4x3bm\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\nparcelRequire(\"8hvMW\");\nvar $87gt0 = parcelRequire(\"87gt0\");\n\nvar $dsvUQ = parcelRequire(\"dsvUQ\");\nvar $dih0O = parcelRequire(\"dih0O\");\n\nvar $7xvOw = parcelRequire(\"7xvOw\");\nvar $9Vd8j = parcelRequire(\"9Vd8j\");\nvar $697xl = parcelRequire(\"697xl\");\nvar $b2gZS = parcelRequire(\"b2gZS\");\nvar $7adKh = parcelRequire(\"7adKh\");\nvar $8VJ2N = parcelRequire(\"8VJ2N\");\nvar $3cESc = parcelRequire(\"3cESc\");\nvar $1IOh3 = parcelRequire(\"1IOh3\");\nvar $27ZKj = parcelRequire(\"27ZKj\");\nvar $00703a9646241803$exports = {};\n\n$00703a9646241803$exports = (parcelRequire(\"6UIir\")).getBundleURL(\"ak0ox\") + \"signin.49105d33.jpg\";\n\n\n\nvar $lxEiN = parcelRequire(\"lxEiN\");\n\nvar $3U8SM = parcelRequire(\"3U8SM\");\n\nvar $iWaGk = parcelRequire(\"iWaGk\");\n\nvar $etOpj = parcelRequire(\"etOpj\");\n\nfunction $803f9f4f70fb5181$var$SignIn({ history: history, location: location, match: match }) {\n const { userStore: userStore } = (0, $iWaGk.default)();\n const [isTokenValid, setIsTokenValid] = (0, $70fFQ.useState)(null);\n const [error, setError] = (0, $70fFQ.useState)({});\n const { resetPasswordToken: resetPasswordToken, userActivationToken: userActivationToken } = match.params;\n const emailInput = (0, $70fFQ.useRef)(null);\n const passwordInput = (0, $70fFQ.useRef)(null);\n const passwordRepeatInput = (0, $70fFQ.useRef)(null);\n const honeyPotInput = (0, $70fFQ.useRef)(null);\n const [passwordResetEmailSent, setPasswordResetEmailSent] = (0, $70fFQ.useState)(false);\n const [userIsActivated, setUserIsActivated] = (0, $70fFQ.useState)(null);\n (0, $70fFQ.useEffect)(()=>{\n if (!resetPasswordToken) return;\n (async ()=>{\n const response = await (0, $lxEiN.default).User.validateResetToken(resetPasswordToken);\n setIsTokenValid(response.data.is_valid);\n })();\n }, [\n resetPasswordToken\n ]);\n (0, $70fFQ.useEffect)(()=>{\n if (!userActivationToken) return;\n (async ()=>{\n const response = await (0, $lxEiN.default).User.validateUserActivationToken(userActivationToken);\n await userStore.fetchCredentials();\n const { redirect: redirect } = response.data;\n if (redirect) history.push(redirect);\n setUserIsActivated(response.data.ok === 1);\n })();\n }, [\n userActivationToken\n ]);\n const handleSubmit = async (e)=>{\n var _location_state;\n e.preventDefault();\n // if (honeyPotInput?.current?.value) return;\n if (resetPasswordToken) {\n const newPassword = passwordInput.current.value;\n const newPasswordRepeat = passwordRepeatInput.current.value;\n if (newPassword !== newPasswordRepeat) {\n setError({\n \"password-repeat\": \"The password confirmation does not match\"\n });\n return;\n }\n setError({});\n const { data: data } = await (0, $3U8SM.default).post(`/reset/${resetPasswordToken}`, {\n password: newPassword,\n resetPasswordToken: resetPasswordToken\n });\n if (data.ok) return history.push(\"/\");\n }\n const email = emailInput.current.value;\n const password = passwordInput.current.value;\n const success = await userStore.login(email, password);\n if (!success) {\n setError({\n \"password-error\": \"Wrong username/password combination\"\n });\n passwordInput.current.value = \"\";\n } else history.push(((_location_state = location.state) === null || _location_state === void 0 ? void 0 : _location_state.referrer) || \"/\");\n };\n const handlePasswordResetSubmit = (event)=>{\n event.preventDefault();\n const email = emailInput.current.value;\n (0, $lxEiN.default).User.sendPasswordResetEmail(email);\n setPasswordResetEmailSent(true);\n };\n const tosText = {\n __html: `I agree with the
Terms Of Use and Privacy Policy`\n };\n return /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n className: \"sign-in\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"main\", {\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $dih0O.Switch), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n path: \"/forgot-password\",\n render: ()=>/*#__PURE__*/ (0, $4x3bm.jsx)((0, $4x3bm.Fragment), {\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)(\"form\", {\n onSubmit: handlePasswordResetSubmit,\n children: [\n passwordResetEmailSent && /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n align: \"center\",\n variant: \"h6\",\n children: \"Password reset e-mail has been sent\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n gutterBottom: true,\n align: \"center\",\n variant: \"body2\",\n children: \"Password reset e-mail has been sent to you, check your e-mail\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n align: \"center\",\n variant: \"body2\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dsvUQ.Link), {\n to: \"/\",\n children: \"Back to login\"\n })\n })\n ]\n }),\n !passwordResetEmailSent && /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n align: \"center\",\n variant: \"h6\",\n children: \"Reset your password\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n align: \"center\",\n variant: \"body2\",\n children: \"Type in your e-mail and we'll send you the link to reset your password\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $697xl.default), {\n margin: \"normal\",\n required: true,\n fullWidth: true,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1IOh3.default), {\n htmlFor: \"email\",\n children: \"Email Address\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3cESc.default), {\n inputRef: emailInput,\n id: \"email\",\n name: \"email\",\n autoComplete: \"email\",\n type: \"email\",\n autoFocus: true\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n className: \"sign-in-buttons\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n type: \"submit\",\n variant: \"outlined\",\n color: \"primary\",\n size: \"large\",\n children: \"Sendd\"\n })\n })\n ]\n })\n ]\n })\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n path: \"/login/activate/:userActivationToken\",\n exact: true,\n render: ()=>/*#__PURE__*/ (0, $4x3bm.jsxs)((0, $4x3bm.Fragment), {\n children: [\n userIsActivated === true && /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Redirect), {\n to: {\n pathname: \"/\",\n search: \"\"\n }\n })\n }),\n userIsActivated === false && /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n align: \"center\",\n variant: \"h6\",\n children: \"Your account activation link is invalid\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n gutterBottom: true,\n align: \"center\",\n variant: \"body2\",\n children: \"Please check your e-mail for the correct link\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n align: \"center\",\n variant: \"body2\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dsvUQ.Link), {\n to: \"/\",\n children: \"Back to login\"\n })\n })\n ]\n })\n ]\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n path: \"/login\",\n exact: true,\n render: ()=>/*#__PURE__*/ (0, $4x3bm.jsxs)(\"form\", {\n onSubmit: handleSubmit,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n align: \"center\",\n variant: \"h6\",\n children: \"Sign in\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $697xl.default), {\n margin: \"normal\",\n required: true,\n fullWidth: true,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1IOh3.default), {\n htmlFor: \"email\",\n children: \"Email Address\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3cESc.default), {\n inputRef: emailInput,\n id: \"email\",\n name: \"email\",\n autoComplete: \"email\",\n autoFocus: true\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $697xl.default), {\n margin: \"normal\",\n required: true,\n fullWidth: true,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1IOh3.default), {\n htmlFor: \"password\",\n children: \"Password\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3cESc.default), {\n inputRef: passwordInput,\n name: \"password\",\n type: \"password\",\n id: \"password\",\n autoComplete: \"current-password\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7adKh.default), {\n error: true,\n children: error[\"password-error\"]\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $697xl.default), {\n style: {\n transform: \"translateX(-10000px)\",\n height: 1,\n margin: 0,\n overflow: \"hidden\",\n position: \"fixed\"\n },\n fullWidth: true,\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3cESc.default), {\n style: {\n transform: \"translateX(-10000px)\",\n height: 1,\n display: \"none\"\n },\n inputRef: honeyPotInput,\n name: \"password\",\n type: \"password\",\n id: \"password\",\n autoComplete: \"new-password\"\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $8VJ2N.default), {\n justifyContent: \"flex-end\",\n alignItems: \"right\",\n container: true,\n spacing: 3,\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $8VJ2N.default), {\n item: true,\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dsvUQ.Link), {\n to: \"/forgot-password\",\n children: \"Forgot your password?\"\n })\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $8VJ2N.default), {\n justifyContent: \"flex-end\",\n alignItems: \"right\",\n container: true,\n spacing: 3,\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $8VJ2N.default), {\n style: {\n display: \"none\"\n },\n item: true,\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dsvUQ.Link), {\n color: \"primary\",\n to: \"/auth/arcgis\",\n children: \"Sign in with ArcGIS\"\n })\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n className: \"sign-in-buttons\",\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $7xvOw.default), {\n type: \"submit\",\n variant: \"outlined\",\n color: \"primary\",\n size: \"large\",\n children: [\n resetPasswordToken && /*#__PURE__*/ (0, $4x3bm.jsx)(\"span\", {\n children: \"Submit\"\n }),\n !resetPasswordToken && /*#__PURE__*/ (0, $4x3bm.jsx)(\"span\", {\n children: \"Sign in\"\n })\n ]\n })\n })\n ]\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n exact: true,\n path: \"/login/:token\",\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $4x3bm.Fragment), {\n children: [\n isTokenValid === null && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $etOpj.default), {}),\n isTokenValid === false && /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n align: \"center\",\n variant: \"h6\",\n children: \"Your link has expired\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $27ZKj.default), {\n align: \"center\",\n variant: \"body1\",\n children: [\n \"Your account activation link has expired. If you have already activated your account then\",\n \" \",\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dsvUQ.Link), {\n to: \"/\",\n children: \"sign in\"\n }),\n \".\"\n ]\n })\n ]\n }),\n isTokenValid === true && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4x3bm.Fragment), {\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)(\"form\", {\n onSubmit: handleSubmit,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n align: \"center\",\n variant: \"h6\",\n children: \"Create your new password\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $697xl.default), {\n margin: \"normal\",\n required: true,\n fullWidth: true,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1IOh3.default), {\n htmlFor: \"password\",\n children: \"Password\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3cESc.default), {\n inputProps: {\n minlength: 6\n },\n autoComplete: \"current-password\",\n id: \"password\",\n inputRef: passwordInput,\n name: \"password\",\n type: \"password\"\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $697xl.default), {\n margin: \"normal\",\n required: true,\n fullWidth: true,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1IOh3.default), {\n htmlFor: \"password\",\n children: \"Repeat Password\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3cESc.default), {\n autoComplete: \"current-password\",\n id: \"password-repeat\",\n error: error[\"password-repeat\"],\n inputRef: passwordRepeatInput,\n name: \"password-repeat\",\n type: \"password\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7adKh.default), {\n id: \"my-helper-text\",\n children: error[\"password-repeat\"]\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $b2gZS.default), {\n control: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $9Vd8j.default), {\n required: true,\n value: \"tos\",\n color: \"primary\"\n }),\n label: /*#__PURE__*/ (0, $4x3bm.jsx)(\"span\", {\n dangerouslySetInnerHTML: tosText\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n className: \"sign-in-buttons\",\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $7xvOw.default), {\n type: \"submit\",\n variant: \"outlined\",\n color: \"primary\",\n size: \"large\",\n children: [\n resetPasswordToken && /*#__PURE__*/ (0, $4x3bm.jsx)(\"span\", {\n children: \"Submit\"\n }),\n !resetPasswordToken && /*#__PURE__*/ (0, $4x3bm.jsx)(\"span\", {\n children: \"Sign in\"\n })\n ]\n })\n })\n ]\n })\n })\n ]\n })\n })\n ]\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n className: \"sign-in-background\",\n style: {\n backgroundImage: `url(${(0, (/*@__PURE__*/$parcel$interopDefault($00703a9646241803$exports)))})`\n }\n })\n ]\n });\n}\nvar $803f9f4f70fb5181$export$2e2bcd8739ae039 = (0, $87gt0.observer)($803f9f4f70fb5181$var$SignIn);\n\n\n\nvar $iWaGk = parcelRequire(\"iWaGk\");\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $dih0O = parcelRequire(\"dih0O\");\nparcelRequire(\"8hvMW\");\nvar $87gt0 = parcelRequire(\"87gt0\");\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $fuVrF = parcelRequire(\"fuVrF\");\nvar $cGU07 = parcelRequire(\"cGU07\");\nvar $5DHXT = parcelRequire(\"5DHXT\");\nvar $27ZKj = parcelRequire(\"27ZKj\");\n\nvar $dsTz1 = parcelRequire(\"dsTz1\");\nvar $6mDA2 = parcelRequire(\"6mDA2\");\n\nvar $dih0O = parcelRequire(\"dih0O\");\nparcelRequire(\"8hvMW\");\nvar $87gt0 = parcelRequire(\"87gt0\");\n\nvar $0qEbJ = parcelRequire(\"0qEbJ\");\n\nvar $gfxK7 = parcelRequire(\"gfxK7\");\n\nvar $jRWBX = parcelRequire(\"jRWBX\");\n\nvar $7ZYVJ = parcelRequire(\"7ZYVJ\");\n\nvar $iWaGk = parcelRequire(\"iWaGk\");\n\nconst $61da6a620ff15715$var$MapContainer = /*#__PURE__*/ (0, $70fFQ.lazy)(()=>(parcelRequire(\"icIXl\")));\nconst $61da6a620ff15715$var$Demo = ({ props: props })=>{\n const history = (0, $dih0O.useHistory)();\n const { buildingStore: buildingStore, buildingDetailStore: buildingDetailStore } = (0, $iWaGk.default)();\n const match = props === null || props === void 0 ? void 0 : props.match;\n const { buildingId: buildingId } = match.params;\n const [present, setPresent] = (0, $70fFQ.useState)(false);\n const [showSearch, setShowSearch] = (0, $70fFQ.useState)(true);\n let state = {\n y: 16,\n opacity: 1\n };\n if (showSearch) state = {\n y: 16,\n opacity: 1\n };\n if (!showSearch) state = {\n y: \"90vh\",\n opacity: 1\n };\n if (!showSearch && buildingId) state = {\n y: \"90vh\",\n opacity: 1\n };\n return /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n className: \"demo\",\n style: {\n width: \"100%\"\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n style: {\n width: \"100%\",\n top: 0,\n height: \"100%\",\n position: \"fixed\"\n },\n children: /*#__PURE__*/ (0, $4x3bm.jsx)($61da6a620ff15715$var$MapContainer, (0, $2QP2i._)({}, props))\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n role: \"presentation\",\n className: \"demo-container\",\n style: {\n height: \"100vh\",\n width: \"100%\",\n overflow: \"scroll\",\n position: \"absolute\",\n cursor: present ? \"pointer\" : \"default\"\n },\n onClick: (event)=>{\n if (event.target === event.currentTarget) {\n if (!showSearch) {\n document.querySelector(\".demo-container\").scrollTo({\n top: 0,\n behavior: \"smooth\"\n });\n setShowSearch(true);\n setPresent(false);\n }\n }\n /*\n setStyles({\n ...styles,\n container: {\n transform: `translateY(calc(100vh - 90px))`\n }\n });\n */ },\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n style: {\n // height: '100vh',\n width: \"960px\",\n margin: \"auto\",\n position: \"relative\",\n // paddingTop: 380,\n zIndex: 1000\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $6mDA2.motion).div, {\n initial: {\n opacity: 0,\n y: 0\n },\n animate: (0, $2QP2i._)({\n opacity: 1\n }, state),\n transition: {\n ease: \"easeOut\",\n duration: 0.3\n },\n exit: {\n opacity: 0,\n y: 0\n },\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n className: \"search-container\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n className: \"search-controls\",\n elevation: 1,\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $5DHXT.default), {\n // value={value}\n onClick: (event)=>{\n setShowSearch(true);\n event.stopPropagation();\n /*\n setStyles({\n ...styles,\n container: {\n transform: `translateY(16px)`\n }\n });\n */ },\n onChange: (event)=>{\n buildingStore.setFilter(\"addresses\", event.target.value);\n },\n sx: {\n fontSize: 48,\n padding: 0,\n width: \"100%\"\n },\n className: \"search-controls-input\",\n placeholder: \"Search...\",\n startAdornment: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $cGU07.default), {\n disabled: true,\n color: \"default\",\n style: {\n width: 48,\n marginRight: 16,\n height: 48,\n fontSize: 48\n },\n sx: {\n largeIcon: {\n fontSize: 48\n }\n },\n onClick: ()=>{},\n size: \"extraLarge\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $0qEbJ.default), {})\n })\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $fuVrF.default), {}),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $jRWBX.default), {\n style: {\n position: \"static\",\n width: \"100%\",\n height: \"100%\",\n flexGrow: 1,\n flex: 1\n },\n getItemsSize: ()=>{\n return 90;\n },\n renderNoResults: ()=>{\n var _buildingStore_filters_addresses, _buildingStore_filters, _buildingStore_filters_addresses1, _buildingStore_filters1;\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4x3bm.Fragment), {\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n className: \"search-result results results-none\",\n children: [\n ((_buildingStore_filters = buildingStore.filters) === null || _buildingStore_filters === void 0 ? void 0 : (_buildingStore_filters_addresses = _buildingStore_filters.addresses) === null || _buildingStore_filters_addresses === void 0 ? void 0 : _buildingStore_filters_addresses.length) && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n variant: \"h5\",\n children: \"No results\"\n }),\n !((_buildingStore_filters1 = buildingStore.filters) === null || _buildingStore_filters1 === void 0 ? void 0 : (_buildingStore_filters_addresses1 = _buildingStore_filters1.addresses) === null || _buildingStore_filters_addresses1 === void 0 ? void 0 : _buildingStore_filters_addresses1.length) && /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $27ZKj.default), {\n variant: \"h5\",\n children: [\n \"Type an address into the search bar to begin.\",\n \" \"\n ]\n })\n ]\n })\n });\n },\n renderRow: ({ index: index, style: style, data: data })=>/*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n className: \"search-result\",\n style: style,\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7ZYVJ.default), {\n disableGrade: true,\n onClick: (event)=>{\n (async ()=>{\n await buildingDetailStore.loadBuilding(data.id);\n setPresent(true);\n setShowSearch(false);\n })();\n event.stopPropagation();\n history.push(`/demo/${data.id}`);\n },\n // to={`/demo/${data.id}`}\n building: data\n })\n }, index),\n store: buildingStore\n })\n ]\n })\n }, \"search\"),\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n role: \"presentation\",\n onClick: (event)=>{\n if (event.target === event.currentTarget) {\n setShowSearch(true);\n setPresent(false);\n }\n },\n className: \"building-container\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dsTz1.AnimatePresence), {\n children: present && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $6mDA2.motion).div, {\n transition: {\n ease: \"easeOut\",\n duration: 0.3\n },\n initial: {\n opacity: 1,\n y: \"100vh\"\n },\n animate: {\n opacity: 1,\n y: 350\n },\n exit: {\n opacity: 1,\n y: \"100vh\"\n },\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $gfxK7.default), {\n noHeader: true,\n isDemo: true,\n noHeaderMap: true,\n style: {\n cursor: \"default\",\n position: \"static\",\n margin: \"auto\",\n // height: 90000,\n // overflow: 'hidden',\n borderTopLeftRadius: 8,\n // transform: 'translateY(400px)',\n borderTopRightRadius: 8,\n boxShadow: \"rgba(0, 0, 0, 0.35) 0px 5px 15px\"\n },\n history: history,\n match: (0, $edHbI._)((0, $2QP2i._)({}, match), {\n params: {\n buildingId: buildingId || \"W167890836\"\n }\n })\n })\n }, \"building\")\n })\n })\n ]\n })\n })\n ]\n });\n};\nvar $61da6a620ff15715$export$2e2bcd8739ae039 = (0, $87gt0.observer)($61da6a620ff15715$var$Demo);\n\n\n/* eslint-disable jsx-a11y/media-has-caption */ \nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $fTMNl = parcelRequire(\"fTMNl\");\n\nvar $7xvOw = parcelRequire(\"7xvOw\");\n\nvar $iuSYB = parcelRequire(\"iuSYB\");\n\nvar $cvbk1 = parcelRequire(\"cvbk1\");\n\nvar $daCoF = parcelRequire(\"daCoF\");\n\nvar $3c7f6 = parcelRequire(\"3c7f6\");\n\nvar $2zy57 = parcelRequire(\"2zy57\");\n\nvar $e4z6Z = parcelRequire(\"e4z6Z\");\n\nvar $27ZKj = parcelRequire(\"27ZKj\");\n\nvar $bDcYY = parcelRequire(\"bDcYY\");\nvar $7059dfb24aac4c1c$exports = {};\n\"use strict\";\n\nvar $hTVTj = parcelRequire(\"hTVTj\");\nObject.defineProperty($7059dfb24aac4c1c$exports, \"__esModule\", {\n value: true\n});\n$7059dfb24aac4c1c$exports.default = void 0;\n\nvar $7059dfb24aac4c1c$var$_createSvgIcon = $hTVTj((parcelRequire(\"7Jp6i\")));\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $7059dfb24aac4c1c$var$_default = (0, $7059dfb24aac4c1c$var$_createSvgIcon.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\"\n}), \"AttachFile\");\n$7059dfb24aac4c1c$exports.default = $7059dfb24aac4c1c$var$_default;\n\n\nvar $e780071ddc4ea0fa$exports = {};\n\"use strict\";\n\nvar $hTVTj = parcelRequire(\"hTVTj\");\nObject.defineProperty($e780071ddc4ea0fa$exports, \"__esModule\", {\n value: true\n});\n$e780071ddc4ea0fa$exports.default = void 0;\n\nvar $e780071ddc4ea0fa$var$_createSvgIcon = $hTVTj((parcelRequire(\"7Jp6i\")));\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $e780071ddc4ea0fa$var$_default = (0, $e780071ddc4ea0fa$var$_createSvgIcon.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M20 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5s-.96.06-1.41.17L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8zm-4 4v3c0 .22-.03.47-.07.7l-.1.65-.37.65c-.72 1.24-2.04 2-3.46 2s-2.74-.77-3.46-2l-.37-.64-.1-.65C8.03 15.48 8 15.23 8 15v-4c0-.23.03-.48.07-.7l.1-.65.37-.65c.3-.52.72-.97 1.21-1.31l.57-.39.74-.18c.31-.08.63-.12.94-.12.32 0 .63.04.95.12l.68.16.61.42c.5.34.91.78 1.21 1.31l.38.65.1.65c.04.22.07.47.07.69v1zm-6 2h4v2h-4zm0-4h4v2h-4z\"\n}), \"BugReportOutlined\");\n$e780071ddc4ea0fa$exports.default = $e780071ddc4ea0fa$var$_default;\n\n\n\nvar $cGU07 = parcelRequire(\"cGU07\");\nvar $19a76c2c6739c4a8$exports = {};\n\"use strict\";\n\nvar $hTVTj = parcelRequire(\"hTVTj\");\nObject.defineProperty($19a76c2c6739c4a8$exports, \"__esModule\", {\n value: true\n});\n$19a76c2c6739c4a8$exports.default = void 0;\n\nvar $19a76c2c6739c4a8$var$_createSvgIcon = $hTVTj((parcelRequire(\"7Jp6i\")));\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $19a76c2c6739c4a8$var$_default = (0, $19a76c2c6739c4a8$var$_createSvgIcon.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"8\"\n}), \"FiberManualRecord\");\n$19a76c2c6739c4a8$exports.default = $19a76c2c6739c4a8$var$_default;\n\n\n\nvar $hsXqC = parcelRequire(\"hsXqC\");\n\nvar $lxEiN = parcelRequire(\"lxEiN\");\nfunction $d757e86f9af94941$export$2e2bcd8739ae039({ open: open, onClose: onClose }) {\n const videoRef = (0, $70fFQ.useRef)();\n const textFieldRef = (0, $70fFQ.useRef)(null);\n const [hidden, setHidden] = (0, $70fFQ.useState)(null);\n const [stream, setStream] = (0, $70fFQ.useState)(null);\n const [files, setFiles] = (0, $70fFQ.useState)([]);\n const [videoBlobs, setVideoBlobs] = (0, $70fFQ.useState)([]);\n const onDrop = (acceptedFiles)=>{\n setFiles(acceptedFiles);\n };\n const { getRootProps: getRootProps, getInputProps: getInputProps, open: openFileDialog } = (0, $fTMNl.useDropzone)({\n onDrop: onDrop,\n noClick: true\n });\n const [submitted, setSubmitted] = (0, $70fFQ.useState)(false);\n const title = submitted ? \"\" : \"Feedback\";\n const stopRecording = async ()=>{\n setHidden(false);\n // recorder.stop();\n // stream.getVideoTracks()[0].stop();\n setStream(null);\n };\n const startRecording = async ()=>{\n const stream = await navigator.mediaDevices.getDisplayMedia({\n video: {\n mediaSource: \"screen\"\n }\n });\n setStream(stream);\n setHidden(true);\n const recorder = new MediaRecorder(stream);\n stream.getVideoTracks()[0].onended = ()=>{\n stopRecording();\n };\n const chunks = [];\n recorder.ondataavailable = (e)=>chunks.push(e.data);\n recorder.onstop = ()=>{\n const completeBlob = new Blob(chunks, {\n type: chunks[0].type\n });\n setVideoBlobs([\n completeBlob,\n ...videoBlobs\n ]);\n };\n recorder.start();\n };\n (0, $70fFQ.useEffect)(()=>{\n if (videoBlobs.length) {\n const blob = URL.createObjectURL(videoBlobs[0]);\n videoRef.current.src = blob;\n }\n }, [\n videoBlobs,\n videoBlobs\n ]);\n const handleSubmit = async ()=>{\n const formData = new FormData();\n files.forEach((file)=>formData.append(\"file[]\", file));\n videoBlobs.forEach((blob, i)=>formData.append(\"file[]\", blob, `blob${i}.mp4`));\n const { userAgent: userAgent } = navigator;\n const { href: href } = window.location;\n formData.append(\"user_agent\", userAgent);\n formData.append(\"href\", href);\n const { value: value } = textFieldRef.current;\n formData.append(\"feedback\", value);\n await (0, $lxEiN.default).User.sendFeedback(formData);\n setSubmitted(true);\n setTimeout(()=>{\n onClose();\n }, 3000);\n };\n const style = hidden ? {\n display: \"none\",\n pointerEvents: \"none\"\n } : {};\n return /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $cvbk1.default), (0, $edHbI._)((0, $2QP2i._)({\n style: style,\n open: open,\n onClose: onClose\n }, getRootProps()), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"input\", (0, $2QP2i._)({\n webkitdirectory: true,\n directory: true,\n multiple: true\n }, getInputProps({\n disabled: false\n }))),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $e4z6Z.default), {\n id: \"form-dialog-title\",\n children: title\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $3c7f6.default), {\n children: [\n !submitted && /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $4x3bm.Fragment), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $2zy57.default), {\n children: \"Please use this form for suggesting improvements and for submitting issues\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iuSYB.default), {\n inputRef: textFieldRef,\n multiline: true,\n rows: 4,\n autoFocus: true,\n margin: \"dense\",\n id: \"feedbcack\",\n label: \"Feedback\",\n variant: \"outlined\",\n type: \"text\",\n fullWidth: true\n }),\n videoBlobs.length > 0 && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)(\"video\", {\n controls: true,\n width: \"100%\",\n ref: videoRef,\n autoPlay: true\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n display: \"flex\",\n justifyContent: \"space-between\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n alignItems: \"center\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n variant: \"contained\",\n style: {\n border: \"none\",\n boxShadow: \"none\",\n textTransform: \"initial\",\n background: \"none\"\n },\n onClick: ()=>{\n if (!stream) startRecording();\n if (stream) stopRecording();\n },\n startIcon: stream ? /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($19a76c2c6739c4a8$exports))), {}) : /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($19a76c2c6739c4a8$exports))), {\n color: \"secondary\"\n }),\n children: !videoBlobs.length ? `Press to record a video` : `Press to record another video`\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $cGU07.default), {\n color: \"primary\",\n \"aria-label\": \"upload picture\",\n component: \"span\",\n style: {\n color: \"red\"\n },\n size: \"large\"\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $cGU07.default), {\n \"aria-label\": \"Close\",\n onClick: openFileDialog,\n size: \"medium\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $hsXqC.default), {\n badgeContent: files.length,\n color: \"secondary\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($7059dfb24aac4c1c$exports))), {})\n })\n })\n ]\n })\n ]\n }),\n submitted && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4x3bm.Fragment), {\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n p: 4,\n style: {\n textAlign: \"center\"\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($e780071ddc4ea0fa$exports))), {\n fontSize: \"large\",\n className: \"feedback-bug\",\n color: \"secondary\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n gutterBottom: true,\n variant: \"h5\",\n children: \"Thank you for your time !\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n variant: \"body1\",\n children: \"We will let you know when this issue has been solved\"\n })\n ]\n })\n })\n ]\n }),\n !submitted && /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $daCoF.default), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n onClick: onClose,\n color: \"secondary\",\n children: \"Cancel\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n onClick: ()=>{\n handleSubmit();\n },\n color: \"primary\",\n children: \"Send\"\n })\n ]\n })\n ]\n }));\n}\n\n\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $cvbk1 = parcelRequire(\"cvbk1\");\n\nvar $dih0O = parcelRequire(\"dih0O\");\nconst $23953f26a187e6b6$var$DocumentSignModal = ({ match: match })=>{\n const history = (0, $dih0O.useHistory)();\n const { documentId: documentId } = match.params;\n const [open, setOpen] = (0, $70fFQ.useState)(true);\n const handleClose = ()=>{\n setOpen(false);\n history.push(`/`);\n };\n (0, $70fFQ.useEffect)(()=>{\n window.pandadoc_embed_config = {\n embed_uuid: documentId,\n width: 900,\n height: 700,\n element_id: \"eOTEwMTcx\"\n };\n (()=>{\n const pds = document.createElement(\"script\");\n pds.type = \"text/javascript\";\n pds.async = true;\n pds.src = \"https://dr79nymq4x8i9.cloudfront.net/embed/embed.js\";\n (document.getElementsByTagName(\"head\")[0] || document.getElementsByTagName(\"body\")[0]).appendChild(pds);\n })();\n }, [\n documentId\n ]);\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $cvbk1.default), {\n maxWidth: false,\n open: open,\n onClose: handleClose,\n \"aria-labelledby\": \"simple-dialog-title\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n id: \"eOTEwMTcx\"\n })\n })\n });\n};\nvar $23953f26a187e6b6$export$2e2bcd8739ae039 = $23953f26a187e6b6$var$DocumentSignModal;\n\n\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\nvar $223d9dcabe73955f$exports = {};\n\"use strict\";\n\nvar $kUwzY = parcelRequire(\"kUwzY\");\nObject.defineProperty($223d9dcabe73955f$exports, \"__esModule\", {\n value: true\n});\n$223d9dcabe73955f$exports.default = void 0;\n\nvar $223d9dcabe73955f$var$_SwipeableViews = $kUwzY((parcelRequire(\"o6Ww0\")));\nvar $223d9dcabe73955f$var$_default = $223d9dcabe73955f$var$_SwipeableViews.default;\n$223d9dcabe73955f$exports.default = $223d9dcabe73955f$var$_default;\n\n\n\nvar $bDcYY = parcelRequire(\"bDcYY\");\nvar $7xvOw = parcelRequire(\"7xvOw\");\nvar $9Vd8j = parcelRequire(\"9Vd8j\");\nvar $fDlBJ = parcelRequire(\"fDlBJ\");\nvar $cvbk1 = parcelRequire(\"cvbk1\");\nvar $daCoF = parcelRequire(\"daCoF\");\nvar $fuVrF = parcelRequire(\"fuVrF\");\nvar $cGU07 = parcelRequire(\"cGU07\");\nvar $5DHXT = parcelRequire(\"5DHXT\");\nvar $W7alG = parcelRequire(\"W7alG\");\nvar $eS4JX = parcelRequire(\"eS4JX\");\nvar $9Xosf = parcelRequire(\"9Xosf\");\nvar $2Z3Gv = parcelRequire(\"2Z3Gv\");\nvar $iHyg3 = parcelRequire(\"iHyg3\");\nvar $1mImZ = parcelRequire(\"1mImZ\");\nvar $iuSYB = parcelRequire(\"iuSYB\");\nvar $27ZKj = parcelRequire(\"27ZKj\");\n\nvar $dih0O = parcelRequire(\"dih0O\");\n\nvar $2mnfJ = parcelRequire(\"2mnfJ\");\n\nvar $lBx17 = parcelRequire(\"lBx17\");\n\nvar $c4gat = parcelRequire(\"c4gat\");\nparcelRequire(\"8hvMW\");\nvar $87gt0 = parcelRequire(\"87gt0\");\n\nvar $lxEiN = parcelRequire(\"lxEiN\");\n\nvar $iWaGk = parcelRequire(\"iWaGk\");\nfunction $09243fa8c5e39d82$var$ProjectPicker() {\n const formEl = (0, $70fFQ.useRef)(null);\n const projectNameEl = (0, $70fFQ.useRef)(null);\n const projectDescriptionEl = (0, $70fFQ.useRef)(null);\n const { projectStore: projectStore, editorStore: editorStore, userStore: userStore, buildingStore: buildingStore, uiStore: uiStore } = (0, $iWaGk.default)();\n const location = (0, $dih0O.useLocation)();\n const history = (0, $dih0O.useHistory)();\n const theme = (0, $2mnfJ.default)();\n const { buildings: buildings, context: context } = location.state;\n console.log(\"picked buildings\", buildings);\n const [activeStep, setActiveStep] = (0, $70fFQ.useState)(context === \"new-project\" ? 1 : 0);\n uiStore.setIsSpeedDialOpen(false);\n const projects = [\n ...projectStore.resultMap.values()\n ];\n const [results, setResults] = (0, $70fFQ.useState)(projects);\n const [checked, setChecked] = (0, $70fFQ.useState)([]);\n const [inProgress, setInProgress] = (0, $70fFQ.useState)([]);\n const [open, setOpen] = (0, $70fFQ.useState)(buildings);\n const handleStepChange = (step)=>{\n setActiveStep(step);\n };\n const handleKeyUp = (event)=>{\n const { value: value } = event.target;\n const results = projects.filter((project)=>{\n return new RegExp(value, \"ig\").test(project.name);\n });\n setResults(results);\n };\n const toggleChecked = async (value)=>{\n let newChecked = [\n ...checked\n ];\n if (checked.includes(value.id)) {\n newChecked = newChecked.filter((val)=>val !== value.id);\n setInProgress([\n ...inProgress,\n value.id\n ]);\n await (0, $lxEiN.default).Project.removeBuilding(value.id, buildings);\n userStore.addNotification({\n title: `Removed from ${value.name}`,\n type: \"building\"\n });\n setInProgress([\n ...inProgress\n ].filter((val)=>val !== value.id));\n } else {\n userStore.addNotification({\n title: `Added to ${value.name}`,\n type: \"building\"\n });\n newChecked.push(value.id);\n console.log(value.id, buildings, \"adding building\");\n (0, $lxEiN.default).Project.addBuilding(value.id, buildings);\n }\n setChecked(newChecked);\n };\n const onCreateNewProject = ()=>{\n setActiveStep(1);\n };\n const handleClose = ()=>{\n setActiveStep(0);\n history.push(location.pathname, {\n state: {\n modal: false,\n buildingId: null\n }\n });\n setOpen(false);\n };\n const onSubmit = async ()=>{\n const params = {\n buildings: buildings,\n name: projectNameEl.current.value,\n description: projectDescriptionEl.current.value\n };\n handleClose();\n const project = await projectStore.createProject(params);\n if (!project.error) {\n buildingStore.clearPicked();\n editorStore.reset();\n uiStore.setSearchPanelState(\"search\");\n projectStore.fetchAll();\n userStore.addNotification({\n title: `New project: ${project.name}`,\n type: \"project\"\n });\n }\n };\n return /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $cvbk1.default), {\n onClose: handleClose,\n \"aria-labelledby\": \"simple-dialog-title\",\n open: open,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n sx: {\n maxWidth: 400,\n minWidth: 320,\n flexGrow: 1\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $1mImZ.default), {\n square: true,\n elevation: 0,\n sx: {\n display: \"flex\",\n alignItems: \"center\",\n height: 50,\n paddingLeft: 16,\n backgroundColor: theme.palette.background.default\n },\n children: [\n activeStep === 0 && /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n style: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n width: \"100%\"\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n children: \"Select Project\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $cGU07.default), {\n \"aria-label\": \"Close\",\n className: \"\",\n onClick: handleClose,\n size: \"large\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $c4gat.default), {})\n })\n ]\n }),\n activeStep === 1 && /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $4x3bm.Fragment), {\n children: [\n context !== \"new-project\" && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $cGU07.default), {\n style: {\n marginLeft: -14\n },\n onClick: ()=>{\n setActiveStep(0);\n },\n color: \"primary\",\n component: \"span\",\n size: \"large\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($lBx17))), {})\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n children: \"Project Details\"\n })\n ]\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, (/*@__PURE__*/$parcel$interopDefault($223d9dcabe73955f$exports))), {\n disabled: true,\n index: activeStep,\n onChangeIndex: handleStepChange,\n enableMouseEvents: true,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $5DHXT.default), {\n onKeyUp: handleKeyUp,\n style: {\n padding: \"16px 16px\"\n },\n placeholder: \"Search projects...\",\n inputProps: {\n \"aria-label\": \"Search projects\"\n }\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $fuVrF.default), {\n orientation: \"horizontal\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n p: 2,\n pb: 0,\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $27ZKj.default), {\n variant: \"body2\",\n children: [\n \"Adding \",\n buildingStore.pickedResults.size,\n \" selected\",\n \" \",\n buildingStore.pickedResults.size === 1 ? \"building\" : \"buildings\",\n \" \",\n \"to project:\"\n ]\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n style: {\n height: 300,\n overflowY: \"scroll\"\n },\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $W7alG.default), {\n dense: true,\n children: results.map((result)=>/*#__PURE__*/ (0, $4x3bm.jsxs)((0, $eS4JX.default), {\n onClick: ()=>toggleChecked(result),\n button: true,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $9Xosf.default), {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $9Vd8j.default), {\n value: result.id,\n checked: checked.includes(result.id),\n disabled: inProgress.includes(result.id),\n edge: \"start\",\n tabIndex: -1,\n disableRipple: true\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iHyg3.default), {\n primary: result.name\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $2Z3Gv.default), {\n children: inProgress.includes(result.id) && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $fDlBJ.default), {})\n })\n ]\n }, result.id))\n })\n })\n ]\n }, \"list\"),\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $1mImZ.default), {\n ref: formEl,\n component: \"form\",\n square: true,\n elevation: 0,\n onSubmit: onSubmit,\n style: {\n padding: \"2rem\"\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iuSYB.default), {\n required: true,\n fullWidth: true,\n inputRef: projectNameEl,\n label: \"Project name\",\n defaultValue: \"Untitled Project\",\n margin: \"normal\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iuSYB.default), {\n multiline: true,\n inputRef: projectDescriptionEl,\n rows: 4,\n fullWidth: true,\n label: \"Project Description\",\n margin: \"normal\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $27ZKj.default), {\n variant: \"body2\",\n children: [\n \"Creating project with \",\n buildingStore.pickedResults.size,\n \" \",\n \"selected buildings\"\n ]\n })\n ]\n })\n }, \"settings\")\n ]\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $daCoF.default), {\n children: [\n activeStep === 0 && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n color: \"primary\",\n style: {\n marginRight: \"auto\"\n },\n onClick: onCreateNewProject,\n children: \"Create project\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n onClick: ()=>{\n buildingStore.clearPicked();\n editorStore.reset();\n uiStore.setSearchPanelState(\"search\");\n handleClose();\n },\n color: \"primary\",\n children: \"Cancel\"\n }),\n activeStep === 0 && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n onClick: ()=>{\n buildingStore.clearPicked();\n editorStore.reset();\n uiStore.setSearchPanelState(\"search\");\n handleClose();\n },\n color: \"secondary\",\n children: \"Done\"\n }),\n activeStep === 1 && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n onClick: ()=>{\n const isValid = formEl.current.reportValidity();\n if (isValid) onSubmit();\n },\n color: \"secondary\",\n children: \"Create\"\n })\n ]\n })\n ]\n });\n}\nvar $09243fa8c5e39d82$export$2e2bcd8739ae039 = (0, $87gt0.observer)($09243fa8c5e39d82$var$ProjectPicker);\n\n\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $hsXqC = parcelRequire(\"hsXqC\");\n\nvar $27ZKj = parcelRequire(\"27ZKj\");\n\nvar $cg448 = parcelRequire(\"cg448\");\nvar $fKdUq = parcelRequire(\"fKdUq\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $2329d5afa4af1f48$export$2e2bcd8739ae039 = (0, $fKdUq.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\n}), \"Check\");\n\n\nvar $c4gat = parcelRequire(\"c4gat\");\nvar $fKdUq = parcelRequire(\"fKdUq\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $e96107fdc34eaaea$export$2e2bcd8739ae039 = (0, $fKdUq.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M14 10H3v2h11v-2zm0-4H3v2h11V6zm4 8v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zM3 16h7v-2H3v2z\"\n}), \"PlaylistAdd\");\n\n\nparcelRequire(\"8hvMW\");\nvar $87gt0 = parcelRequire(\"87gt0\");\n\n\nvar $kcSl7 = parcelRequire(\"kcSl7\");\n\nvar $iWaGk = parcelRequire(\"iWaGk\");\n\nvar $kQo3L = parcelRequire(\"kQo3L\");\nconst $4f9c7eb8d5082e41$var$ProjectSpeedDial = ({ history: history, match: match })=>{\n const { buildingId: buildingId } = match.params;\n const { buildingStore: buildingStore, uiStore: uiStore, editorStore: editorStore, mapStore: mapStore } = (0, $iWaGk.default)();\n const { isSpeedDialOpen: isSpeedDialOpen } = uiStore;\n const [mode, setMode] = (0, $70fFQ.useState)(\"default\");\n (0, $70fFQ.useEffect)(()=>{\n setMode(buildingId ? \"building\" : \"default\");\n }, [\n buildingId\n ]);\n const actions = [\n {\n icon: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $e96107fdc34eaaea$export$2e2bcd8739ae039), {}),\n tooltipTitle: \"Add search results to project\",\n onClick: ()=>{\n uiStore.setSearchPanelState(\"picker\");\n setMode(\"picker\");\n uiStore.setIsSpeedDialOpen(false);\n },\n isHidden: ![\n \"default\",\n \"building\"\n ].includes(mode)\n },\n /*\n {\n icon: ,\n tooltipTitle: 'Create a project',\n onClick: () => {\n setIsDialogOpen(true);\n },\n mode: ['picker']\n },\n */ {\n icon: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $c4gat.default), {}),\n tooltipTitle: \"Cancel\",\n onClick: ()=>{\n editorStore.reset();\n mapStore.setBounds(null);\n uiStore.setActiveLayer(\"satellite\", false);\n buildingStore.clearPicked();\n uiStore.setSearchPanelState(\"search\");\n mapStore.setMode(\"view\");\n setMode(buildingId ? \"building\" : \"default\");\n },\n isHidden: editorStore.features.length === 0 && ![\n \"picker\",\n \"draw\"\n ].includes(mode)\n },\n {\n icon: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $cg448.default), {}),\n tooltipTitle: \"Add property to existing project\",\n onClick: ()=>{\n history.push({\n pathname: location.pathname,\n state: {\n modal: true,\n buildings: [\n {\n id: buildingId\n }\n ]\n }\n });\n },\n isHidden: ![\n \"building\"\n ].includes(mode)\n }\n ];\n const propertyCount = buildingStore.pickedResults.size;\n let speedDialIcon = /*#__PURE__*/ (0, $4x3bm.jsx)((0, $cg448.default), {});\n if (propertyCount) speedDialIcon = /*#__PURE__*/ (0, $4x3bm.jsx)((0, $2329d5afa4af1f48$export$2e2bcd8739ae039), {});\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4x3bm.Fragment), {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $kQo3L.default), {\n actions: actions.filter((action)=>!action.isHidden).filter((action)=>typeof action.isVisible === \"undefined\" || action.isVisible === true),\n ariaLabel: \"Building actions\",\n icon: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $hsXqC.default), {\n classes: {\n badge: \"speed-dial-fab-badge\"\n },\n badgeContent: propertyCount,\n color: \"primary\",\n invisible: propertyCount === 0,\n children: speedDialIcon\n }),\n onClose: ()=>{\n if ([\n \"default\",\n \"building\",\n \"draw\"\n ].includes(mode)) uiStore.setIsSpeedDialOpen(false);\n },\n onOpen: (event, reason)=>{\n if (reason !== \"focus\") uiStore.setIsSpeedDialOpen(true);\n },\n open: isSpeedDialOpen,\n onClick: ()=>{\n uiStore.setIsSpeedDialOpen(false);\n const buildings = [\n ...buildingStore.pickedResults\n ].map((buldingId)=>({\n id: buldingId\n }));\n const allBuildingData = JSON.parse(JSON.stringify([\n ...buildings\n ]));\n if (allBuildingData.length === 0 && buildingId) history.push({\n pathname: location.pathname,\n state: {\n modal: true,\n context: \"new-project\",\n buildings: [\n {\n id: buildingId\n }\n ]\n }\n });\n else history.push({\n pathname: location.pathname,\n state: {\n modal: true,\n context: \"add-to-project\",\n buildings: allBuildingData\n }\n });\n },\n children: mode === \"building\" && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $kcSl7.default), {\n in: isSpeedDialOpen,\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n className: \"speed-dial-tooltip-label default-action\",\n variant: \"body1\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)(\"span\", {\n children: \"Create a new project\"\n })\n })\n })\n })\n });\n};\nvar $4f9c7eb8d5082e41$export$2e2bcd8739ae039 = (0, $87gt0.observer)($4f9c7eb8d5082e41$var$ProjectSpeedDial);\n\n\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nparcelRequire(\"70fFQ\");\nparcelRequire(\"8hvMW\");\nvar $87gt0 = parcelRequire(\"87gt0\");\n\nvar $cGU07 = parcelRequire(\"cGU07\");\nvar $5DHXT = parcelRequire(\"5DHXT\");\n\nvar $4KbVS = parcelRequire(\"4KbVS\");\n\nvar $lxEiN = parcelRequire(\"lxEiN\");\n\nvar $iWaGk = parcelRequire(\"iWaGk\");\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $7xvOw = parcelRequire(\"7xvOw\");\nvar $9Vd8j = parcelRequire(\"9Vd8j\");\nvar $cvbk1 = parcelRequire(\"cvbk1\");\nvar $daCoF = parcelRequire(\"daCoF\");\nvar $3c7f6 = parcelRequire(\"3c7f6\");\nvar $e4z6Z = parcelRequire(\"e4z6Z\");\nvar $b2gZS = parcelRequire(\"b2gZS\");\nvar $irnsW = parcelRequire(\"irnsW\");\nvar $iuSYB = parcelRequire(\"iuSYB\");\nparcelRequire(\"8hvMW\");\nvar $87gt0 = parcelRequire(\"87gt0\");\n\nvar $3U8SM = parcelRequire(\"3U8SM\");\n\nvar $iWaGk = parcelRequire(\"iWaGk\");\nconst $1397f98f660ce9c3$var$AddAccount = ()=>{\n const { modalStore: modalStore, userStore: userStore } = (0, $iWaGk.default)();\n const [userExists, setUserExists] = (0, $70fFQ.useState)(null);\n const [user, setUser] = (0, $70fFQ.useState)(null);\n const [email, setEmail] = (0, $70fFQ.useState)(null);\n const [message, setMessage] = (0, $70fFQ.useState)(null);\n const [name, setName] = (0, $70fFQ.useState)(null);\n const handleClose = ()=>{\n modalStore.setModal(null);\n };\n const search = (email)=>{\n (0, $3U8SM.default).get(\"/user/exists\", {\n params: {\n email: email\n }\n }).then((response)=>{\n if (response.data.data !== null) {\n setUser(response.data.data);\n setUserExists(true);\n } else {\n setUser(null);\n setUserExists(false);\n }\n });\n };\n const handleChange = async (event)=>{\n const { name: name } = event.target;\n if (name === \"e-mail\") {\n setEmail(event.target.value);\n search(event.target.value);\n }\n if (name === \"message\") setMessage(event.target.value);\n if (name === \"name\") setName(event.target.value);\n };\n const handleAdd = async ()=>{\n const groupId = userStore.user.group.id;\n if (userExists) {\n const { data: data } = await (0, $3U8SM.default).post(`/group/${groupId}/relationships/users`, {\n data: [\n (0, $edHbI._)((0, $2QP2i._)({}, user), {\n message: message\n })\n ]\n });\n handleClose();\n const groupMembers = [\n ...userStore.groupMembers\n ];\n groupMembers.push(...data.data);\n userStore.groupMembers = groupMembers;\n }\n if (!userExists) {\n const { data: data } = await (0, $3U8SM.default).post(`/group/${groupId}/relationships/users`, {\n data: [\n {\n email: email,\n message: message,\n name: name\n }\n ]\n });\n handleClose();\n const groupMembers = [\n ...userStore.groupMembers\n ];\n groupMembers.push(...data.data);\n userStore.groupMembers = groupMembers;\n }\n // UserStore.fetchGroupMembers();\n modalStore.setModal(\"team-manager\");\n };\n const isOpen = modalStore.open === \"add-account\";\n let helperText = \"\";\n if (userExists === true) helperText = \"User Exists, invite to join the group will be sent\";\n if (userExists === false) helperText = \"User does not exist and will be created\";\n return /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $cvbk1.default), {\n onClose: handleClose,\n \"aria-labelledby\": \"simple-dialog-title\",\n open: isOpen,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $e4z6Z.default), {\n id: \"simple-dialog-title\",\n children: \"Add Account\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3c7f6.default), {\n style: {\n minWidth: 400,\n padding: \"1rem 2rem\"\n },\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)(\"form\", {\n onChange: handleChange,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iuSYB.default), {\n fullWidth: true,\n id: \"e-mail\",\n name: \"e-mail\",\n label: \"E-mail\",\n value: email,\n helperText: helperText,\n margin: \"normal\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iuSYB.default), {\n fullWidth: true,\n id: \"name\",\n name: \"name\",\n label: \"Name (optional)\",\n margin: \"normal\",\n value: name,\n multiline: true\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iuSYB.default), {\n fullWidth: true,\n id: \"standard-name\",\n name: \"message\",\n label: \"Message (optional)\",\n margin: \"normal\",\n value: message,\n multiline: true\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $irnsW.default), {\n style: {\n display: \"none\"\n },\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $b2gZS.default), {\n control: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $9Vd8j.default), {\n value: \"notify\"\n }),\n label: \"Send notification\"\n })\n })\n ]\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $daCoF.default), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n onClick: handleClose,\n color: \"primary\",\n children: \"Cancel\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n onClick: handleAdd,\n color: \"primary\",\n autoFocus: true,\n children: \"Add\"\n })\n ]\n })\n ]\n });\n};\nvar $1397f98f660ce9c3$export$2e2bcd8739ae039 = (0, $87gt0.observer)($1397f98f660ce9c3$var$AddAccount);\n\n\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nparcelRequire(\"70fFQ\");\n\nvar $3fLZ2 = parcelRequire(\"3fLZ2\");\nvar $hsXqC = parcelRequire(\"hsXqC\");\nvar $bDcYY = parcelRequire(\"bDcYY\");\nvar $7xvOw = parcelRequire(\"7xvOw\");\nvar $j6Rju = parcelRequire(\"j6Rju\");\nvar $W7alG = parcelRequire(\"W7alG\");\nvar $eS4JX = parcelRequire(\"eS4JX\");\nvar $9Xosf = parcelRequire(\"9Xosf\");\nvar $2Z3Gv = parcelRequire(\"2Z3Gv\");\nvar $iHyg3 = parcelRequire(\"iHyg3\");\n\nvar $fKdUq = parcelRequire(\"fKdUq\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $566c9032ce1b26fa$export$2e2bcd8739ae039 = (0, $fKdUq.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M5 9.2h3V19H5zM10.6 5h2.8v14h-2.8zm5.6 8H19v6h-2.8z\"\n}), \"BarChart\");\n\n\nvar $9BDqo = parcelRequire(\"9BDqo\");\nvar $fKdUq = parcelRequire(\"fKdUq\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $d5baa62dfe4f89e4$export$2e2bcd8739ae039 = (0, $fKdUq.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17l-.59.59-.58.58V4h16v12zm-9-4h2v2h-2zm0-6h2v4h-2z\"\n}), \"FeedbackOutlined\");\n\n\nvar $7aNPO = parcelRequire(\"7aNPO\");\nvar $5KAQF = parcelRequire(\"5KAQF\");\nvar $fKdUq = parcelRequire(\"fKdUq\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $36b75330f27c6651$export$2e2bcd8739ae039 = (0, $fKdUq.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M3 18h12v-2H3v2zM3 6v2h18V6H3zm0 7h18v-2H3v2z\"\n}), \"Notes\");\n\n\nvar $fKdUq = parcelRequire(\"fKdUq\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $0eb281d5ae95e3e1$export$2e2bcd8739ae039 = (0, $fKdUq.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n fillRule: \"evenodd\",\n d: \"M14 6V4h-4v2h4zM4 8v11h16V8H4zm16-2c1.11 0 2 .89 2 2v11c0 1.11-.89 2-2 2H4c-1.11 0-2-.89-2-2l.01-11c0-1.11.88-2 1.99-2h4V4c0-1.11.89-2 2-2h4c1.11 0 2 .89 2 2v2h4z\"\n}), \"WorkOutline\");\n\n\n\nvar $dsvUQ = parcelRequire(\"dsvUQ\");\nvar $dih0O = parcelRequire(\"dih0O\");\nparcelRequire(\"8hvMW\");\nvar $87gt0 = parcelRequire(\"87gt0\");\n\nvar $iWaGk = parcelRequire(\"iWaGk\");\nconst $b8863318d110334b$var$MenuList = ()=>{\n const { userStore: userStore, uiStore: uiStore } = (0, $iWaGk.default)();\n const { user: user } = userStore;\n const history = (0, $dih0O.useHistory)();\n // TODO remove compatability hack\n const menuItems = user && user.group.menu_items ? user.group.menu_items : null;\n const goToSettings = (e)=>{\n e.stopPropagation();\n history.push(`/team/${user.id}`);\n uiStore.setSidebarExpanded(false);\n };\n const items = [\n {\n id: \"nav-prospecting\",\n to: \"/search\",\n icon: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $9BDqo.default), {}),\n label: \"Prospecting\",\n isVisible: menuItems.includes(\"prospecting\")\n },\n {\n id: \"nav-projects\",\n to: \"/project\",\n icon: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $0eb281d5ae95e3e1$export$2e2bcd8739ae039), {}),\n label: \"Projects\",\n isVisible: true,\n notificationCount: userStore.notifications.filter((n)=>n.type === \"project\").length\n },\n {\n id: \"nav-team\",\n to: \"/team\",\n icon: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7aNPO.default), {}),\n label: \"Team\",\n isVisible: menuItems.includes(\"team_manager\")\n },\n {\n id: \"nav-documents\",\n to: {\n pathname: `/documents/OTEwMTcxOTc2NTA1OTY1NjQyODQxMzA1MTg3ODAwNjk3NTg5MzUwMDExNDYwMzk0MjgzOTQyNDA5NzU3NDk0MDI4NzE0MjMxOTAzODE5NDYwOTY3ODg4NDU4Njc5NzQy`,\n state: {\n modal: true\n }\n },\n icon: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $36b75330f27c6651$export$2e2bcd8739ae039), {}),\n label: \"Documents\",\n isVisible: menuItems.includes(\"documents\")\n },\n {\n id: \"nav-editor\",\n to: \"/dataeditor\",\n icon: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $5KAQF.default), {}),\n label: \"Editor\",\n isVisible: menuItems.includes(\"editor\")\n },\n {\n id: \"nav-analytics\",\n to: \"/analytics\",\n icon: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $566c9032ce1b26fa$export$2e2bcd8739ae039), {}),\n label: \"Events\",\n isVisible: menuItems.includes(\"analytics\")\n },\n {\n id: \"nav-feedback\",\n to: \"#\",\n onClick: ()=>uiStore.setFeedbackModalOpen(true),\n icon: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $d5baa62dfe4f89e4$export$2e2bcd8739ae039), {}),\n label: \"Feedback\",\n isVisible: menuItems.includes(\"feedback\")\n }\n ].filter((menuItem)=>menuItem.isVisible);\n return /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n className: \"sidebar--menu\",\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $W7alG.default), {\n component: \"nav\",\n children: [\n items.map((item)=>/*#__PURE__*/ (0, $4x3bm.jsxs)((0, $eS4JX.default), {\n id: item.id,\n button: true,\n component: typeof item.onClick !== \"undefined\" ? (0, $j6Rju.default) : (0, $dsvUQ.NavLink),\n onClick: item.onClick,\n to: item.to,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $9Xosf.default), {\n className: \"list-item-icon\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $hsXqC.default), {\n badgeContent: item.notificationCount,\n color: \"primary\",\n children: item.icon\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iHyg3.default), {\n className: \"list-item-text\",\n primary: item.label,\n primaryTypographyProps: {\n noWrap: true\n }\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $2Z3Gv.default), {})\n ]\n }, item.id)),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $eS4JX.default), {\n id: \"nav-user-profile\",\n onClick: ()=>uiStore.setSidebarExpanded(true),\n onBlur: ()=>uiStore.setSidebarExpanded(false),\n button: true,\n className: \"list-item-profile\",\n style: {\n paddingLeft: 8,\n paddingBottom: 0\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $9Xosf.default), {\n className: \"list-item-icon\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3fLZ2.default), {\n style: {\n background: \"#2c2c2c\",\n opacity: 1\n },\n // src={avatarUrl}\n src: userStore.avatar,\n children: user.email && user.email.substring(0, 2)\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iHyg3.default), {\n className: \"list-item-text\",\n primary: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n onClick: goToSettings,\n children: user.firstname || user.email\n }),\n secondary: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n sx: {\n color: \"#fff\",\n fontWeight: 500,\n textTransform: \"none\",\n padding: 0\n },\n onClick: goToSettings,\n children: \"Manage Account\"\n }),\n primaryTypographyProps: {\n noWrap: true\n }\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $2Z3Gv.default), {})\n ]\n })\n ]\n })\n });\n};\nvar $b8863318d110334b$export$2e2bcd8739ae039 = (0, $87gt0.observer)($b8863318d110334b$var$MenuList);\n\n\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $cvbk1 = parcelRequire(\"cvbk1\");\nparcelRequire(\"8hvMW\");\nvar $87gt0 = parcelRequire(\"87gt0\");\n\nvar $dih0O = parcelRequire(\"dih0O\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $bDcYY = parcelRequire(\"bDcYY\");\nvar $fuVrF = parcelRequire(\"fuVrF\");\nvar $cGU07 = parcelRequire(\"cGU07\");\nvar $5DHXT = parcelRequire(\"5DHXT\");\nvar $1mImZ = parcelRequire(\"1mImZ\");\nvar $27ZKj = parcelRequire(\"27ZKj\");\n\nvar $cg448 = parcelRequire(\"cg448\");\nvar $5rR0J = parcelRequire(\"5rR0J\");\n\nparcelRequire(\"8hvMW\");\nvar $87gt0 = parcelRequire(\"87gt0\");\n\nvar $3U8SM = parcelRequire(\"3U8SM\");\n\nvar $iWaGk = parcelRequire(\"iWaGk\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nparcelRequire(\"70fFQ\");\n\nvar $3fLZ2 = parcelRequire(\"3fLZ2\");\nvar $cGU07 = parcelRequire(\"cGU07\");\nvar $W7alG = parcelRequire(\"W7alG\");\nvar $eS4JX = parcelRequire(\"eS4JX\");\nvar $dcOT1 = parcelRequire(\"dcOT1\");\nvar $2Z3Gv = parcelRequire(\"2Z3Gv\");\nvar $iHyg3 = parcelRequire(\"iHyg3\");\nvar $bey3N = parcelRequire(\"bey3N\");\n\nvar $7aNPO = parcelRequire(\"7aNPO\");\nvar $5GjdS = parcelRequire(\"5GjdS\");\nvar $kbqXp = parcelRequire(\"kbqXp\");\nparcelRequire(\"8hvMW\");\nvar $87gt0 = parcelRequire(\"87gt0\");\n\nvar $iWaGk = parcelRequire(\"iWaGk\");\nfunction $a2e9b720bcde850a$var$AccountList({ onClickSettings: onClickSettings, accounts: accounts, onSelectAccount: onSelectAccount }) {\n const { userStore: userStore } = (0, $iWaGk.default)();\n const userGroups = accounts.filter((group)=>group.has_group);\n const adminGroups = accounts.filter((group)=>!group.has_group);\n const groups = [\n {\n title: \"My Groups\",\n groups: userGroups\n }\n ];\n if (adminGroups.length) groups.push({\n title: \"Other Groups\",\n groups: adminGroups\n });\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $W7alG.default), {\n subheader: /*#__PURE__*/ (0, $4x3bm.jsx)(\"li\", {}),\n sx: {\n scrollbarWidth: \"thin\",\n width: \"100%\",\n maxHeight: 360\n },\n dense: true,\n children: groups.map((group)=>/*#__PURE__*/ (0, $4x3bm.jsxs)(\"ul\", {\n style: {\n paddingLeft: 0\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bey3N.default), {\n style: {\n background: \"#fff\",\n fontWeight: 400,\n fontSize: \"0.8rem\",\n borderBottom: \"1px solid #DFDFDF\"\n },\n children: group.title\n }),\n group.groups.map((acc)=>{\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4x3bm.Fragment), {\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $eS4JX.default), {\n id: `group-${acc.id}`,\n onClick: ()=>{\n onSelectAccount(acc);\n },\n button: true,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dcOT1.default), {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3fLZ2.default), {\n variant: \"rounded\",\n children: acc.is_user_workspace ? /*#__PURE__*/ (0, $4x3bm.jsx)((0, $kbqXp.default), {}) : /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7aNPO.default), {})\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iHyg3.default), {\n primaryTypographyProps: {\n noWrap: true,\n textOverflow: \"ellipsis\",\n overflow: \"hidden\"\n },\n secondaryTypographyProps: {\n noWrap: true,\n textOverflow: \"ellipsis\",\n overflow: \"hidden\"\n },\n primary: acc.is_user_workspace ? \"My Workspace\" : acc.name,\n secondary: acc.is_user_workspace ? \"Your personal workspace\" : acc.description\n }),\n userStore.isAdmin && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $2Z3Gv.default), {\n style: {\n right: 8\n },\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $cGU07.default), {\n onClick: ()=>{\n onClickSettings(acc);\n },\n component: \"span\",\n size: \"large\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $5GjdS.default), {})\n })\n })\n ]\n }, acc.id)\n });\n })\n ]\n }, group.title))\n });\n}\nvar $a2e9b720bcde850a$export$2e2bcd8739ae039 = (0, $87gt0.observer)($a2e9b720bcde850a$var$AccountList);\n\n\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $3fLZ2 = parcelRequire(\"3fLZ2\");\nvar $7xvOw = parcelRequire(\"7xvOw\");\nvar $9Vd8j = parcelRequire(\"9Vd8j\");\nvar $5DHXT = parcelRequire(\"5DHXT\");\nvar $W7alG = parcelRequire(\"W7alG\");\nvar $eS4JX = parcelRequire(\"eS4JX\");\nvar $2Z3Gv = parcelRequire(\"2Z3Gv\");\nvar $iHyg3 = parcelRequire(\"iHyg3\");\nvar $27ZKj = parcelRequire(\"27ZKj\");\n\nvar $e9iFh = parcelRequire(\"e9iFh\");\nparcelRequire(\"8hvMW\");\nvar $87gt0 = parcelRequire(\"87gt0\");\n\nvar $lxEiN = parcelRequire(\"lxEiN\");\n\nvar $iWaGk = parcelRequire(\"iWaGk\");\nfunction $26178ba1a6c6b107$var$AccountSettings({ account: account, onDelete: onDelete }) {\n const { userStore: userStore } = (0, $iWaGk.default)();\n const [settings, setSettings] = (0, $70fFQ.useState)([\n {\n label: \"Prospecting\",\n enabled: false,\n value: \"prospecting\"\n },\n {\n label: \"Documents\",\n enabled: false,\n value: \"documents\"\n },\n {\n label: \"Team Manager\",\n enabled: false,\n value: \"team_manager\"\n },\n {\n label: \"Analytics\",\n enabled: false,\n value: \"analytics\"\n }\n ]);\n (0, $70fFQ.useEffect)(()=>{\n (async ()=>{\n const { data: data } = await (0, $lxEiN.default).Group.getSettings(account.id);\n setSettings(data.data.menu_items);\n })();\n }, [\n account\n ]);\n const handleDelete = async (groupId)=>{\n if (!confirm(`Delete group ?`)) return;\n const currentGroupId = userStore.user.group.id;\n if (currentGroupId === groupId) {\n alert(\"Error: Switch active group first\");\n return;\n }\n userStore.deleteGroup(groupId);\n if (onDelete) onDelete(groupId);\n };\n const handleToggle = (value)=>()=>{\n const newSettings = [\n ...settings\n ];\n const setting = newSettings.find((s)=>s.value === value);\n setting.enabled = !setting.enabled;\n setSettings(newSettings);\n const menuItems = settings.reduce((acc, val)=>{\n if (val.enabled) acc.push(val.value);\n return acc;\n }, []);\n (0, $lxEiN.default).Group.setSettings(account.id, {\n menu_items: menuItems\n });\n };\n const handleOnBlur = (event)=>{\n const { value: value } = event.target;\n (0, $lxEiN.default).Group.update(account.id, {\n description: value\n });\n const idx = userStore.user.groups.findIndex((group)=>group.id === account.id);\n userStore.user.groups[idx].description = value;\n };\n return /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $4x3bm.Fragment), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n style: {\n padding: 16,\n display: \"flex\"\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3fLZ2.default), {\n style: {\n marginRight: 16\n }\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n className: \"account-info-block-details\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n variant: \"h6\",\n children: account === null || account === void 0 ? void 0 : account.name\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n variant: \"body2\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $5DHXT.default), {\n defaultValue: account === null || account === void 0 ? void 0 : account.description,\n onBlur: handleOnBlur,\n placeholder: \"Write decription here\"\n })\n })\n ]\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $W7alG.default), {\n dense: true,\n children: settings.map((setting)=>{\n return /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $eS4JX.default), {\n button: true,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iHyg3.default), {\n primary: setting.label\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $2Z3Gv.default), {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $9Vd8j.default), {\n edge: \"end\",\n checked: settings.find((s)=>s.value === setting.value).enabled,\n onChange: handleToggle(setting.value)\n })\n })\n ]\n }, setting.value);\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n style: {\n padding: 16,\n paddingTop: 0\n },\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n variant: \"contained\",\n color: \"secondary\",\n onClick: ()=>{\n handleDelete(account.id);\n },\n startIcon: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $e9iFh.default), {}),\n children: \"Delete\"\n })\n })\n ]\n });\n}\nvar $26178ba1a6c6b107$export$2e2bcd8739ae039 = (0, $87gt0.observer)($26178ba1a6c6b107$var$AccountSettings);\n\n\nfunction $2e51ed903795cc84$var$AccountManager({ accounts: accounts, onSelectAccount: onSelectAccount }) {\n const [activeStep, setActiveStep] = (0, $70fFQ.useState)(0);\n const [account, setAccount] = (0, $70fFQ.useState)(null);\n const [filterBy, setFilterBy] = (0, $70fFQ.useState)(\"\");\n const { userStore: userStore, modalStore: modalStore, projectStore: projectStore } = (0, $iWaGk.default)();\n const handleStepChange = (step)=>{\n setActiveStep(step);\n };\n const filterAccounts = (accounts, filterBy)=>{\n return accounts.filter((account)=>account.name.toLowerCase().includes(filterBy.toLowerCase()));\n };\n const handleChange = (e)=>{\n setFilterBy(e.target.value);\n };\n const handleGroupAdd = async ()=>{\n const { data: data } = await (0, $3U8SM.default).post(\"/group\", {\n name: \"New Group\"\n });\n const groupId = data.data.id;\n await userStore.switchGroup(groupId);\n projectStore.fetchAll();\n modalStore.setModal(null);\n };\n return /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n sx: {\n maxWidth: 400,\n flexGrow: 1\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $1mImZ.default), {\n square: true,\n elevation: 0,\n sx: {\n alignItems: \"center\",\n paddingLeft: 2,\n display: \"flex\"\n },\n children: [\n activeStep === 0 && /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"96%\"\n },\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n style: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n width: \"100%\"\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n children: \"Select Account\"\n }),\n userStore.user.is_admin && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $cGU07.default), {\n id: \"nav-group-add\",\n onClick: ()=>{\n handleGroupAdd();\n },\n component: \"span\",\n size: \"large\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $cg448.default), {})\n })\n ]\n })\n }),\n activeStep === 1 && /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $4x3bm.Fragment), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $cGU07.default), {\n style: {\n marginLeft: -14\n },\n onClick: ()=>{\n setActiveStep(0);\n setAccount(null);\n },\n color: \"primary\",\n component: \"span\",\n size: \"large\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $5rR0J.default), {})\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n children: \"Account settings\"\n })\n ]\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, (/*@__PURE__*/$parcel$interopDefault($223d9dcabe73955f$exports))), {\n disabled: true,\n index: activeStep,\n onChangeIndex: handleStepChange,\n enableMouseEvents: true,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n style: {\n maxHeight: 360,\n scrollbarWidth: \"thin\"\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $fuVrF.default), {\n className: \"search-controls-divider\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n style: {\n marginTop: 10,\n paddingLeft: 16,\n alignItems: \"center\",\n width: \"100%\"\n },\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $5DHXT.default), {\n onChange: handleChange,\n placeholder: \"Search...\"\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $a2e9b720bcde850a$export$2e2bcd8739ae039), {\n accounts: filterBy ? filterAccounts(accounts, filterBy) : accounts,\n onSelectAccount: onSelectAccount,\n onClickSettings: (account)=>{\n setAccount(account);\n setActiveStep(1);\n }\n })\n ]\n }, \"list\"),\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1mImZ.default), {\n style: {\n minWidth: 400,\n minHeight: 370\n },\n square: true,\n elevation: 0,\n children: account && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $26178ba1a6c6b107$export$2e2bcd8739ae039), {\n onDelete: ()=>{\n setActiveStep(0);\n setAccount(null);\n },\n account: account\n })\n })\n }, \"settings\")\n ]\n })\n ]\n });\n}\nvar $2e51ed903795cc84$export$2e2bcd8739ae039 = (0, $87gt0.observer)($2e51ed903795cc84$var$AccountManager);\n\n\n\nvar $lxEiN = parcelRequire(\"lxEiN\");\n\nvar $iWaGk = parcelRequire(\"iWaGk\");\nconst $5fb907816ebe0645$var$ProfilePicker = ()=>{\n const history = (0, $dih0O.useHistory)();\n const { modalStore: modalStore, userStore: userStore, projectStore: projectStore } = (0, $iWaGk.default)();\n const [userGroups, setUserGroups] = (0, $70fFQ.useState)([]);\n (0, $70fFQ.useEffect)(()=>{\n (async ()=>{\n const response = await (0, $lxEiN.default).User.getGroups();\n setUserGroups(response.data.data);\n })();\n }, []);\n const handleClose = ()=>{\n modalStore.setModal(null);\n };\n const handleGroupClick = async (group)=>{\n await userStore.switchGroup(group.id);\n history.push(`/`);\n projectStore.fetchAll();\n handleClose();\n };\n if (!userGroups.length) return null;\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $cvbk1.default), {\n onClose: handleClose,\n open: true,\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $2e51ed903795cc84$export$2e2bcd8739ae039), {\n onSelectAccount: handleGroupClick,\n accounts: userGroups\n })\n });\n};\nvar $5fb907816ebe0645$export$2e2bcd8739ae039 = (0, $87gt0.observer)($5fb907816ebe0645$var$ProfilePicker);\n\n\n\nvar $awtVx = parcelRequire(\"awtVx\");\n\nconst $bcaf067aaacc7e97$var$SideBar = ()=>{\n var _user_group, _userStore_user_groups, _userStore_user;\n const { modalStore: modalStore, uiStore: uiStore, userStore: userStore } = (0, $iWaGk.default)();\n const { user: user } = userStore;\n const longName = user && user.group ? user.group.name : \"\";\n const handleChange = (event)=>{\n const val = event.target.value;\n const isValid = /^$|^[a-z0-9 -]+$/i.test(val);\n if (!isValid) return;\n user.group.name = val;\n const { group: group } = user;\n const idx = user.groups.findIndex((g)=>g.id === group.id);\n user.groups[idx].name = val;\n };\n const handleBlur = (event)=>{\n const val = event.target.value;\n const groupId = user.group.id;\n (0, $lxEiN.default).Group.update(groupId, {\n name: val\n });\n uiStore.setSidebarExpanded(false);\n };\n return /*#__PURE__*/ (0, $4x3bm.jsxs)(\"aside\", {\n className: \"layout--sidebar\",\n children: [\n modalStore.open === \"profile-select\" && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $5fb907816ebe0645$export$2e2bcd8739ae039), {}),\n modalStore.open === \"add-account\" && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1397f98f660ce9c3$export$2e2bcd8739ae039), {}),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $awtVx.default), {\n uiStore: uiStore\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n className: \"sidebar--user\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $5DHXT.default), {\n id: \"group-name\",\n type: \"text\",\n disabled: user === null || user === void 0 ? void 0 : (_user_group = user.group) === null || _user_group === void 0 ? void 0 : _user_group.is_user_workspace,\n value: longName,\n onChange: handleChange,\n // onFocus={handleFocus}\n onBlur: handleBlur\n }),\n ((_userStore_user = userStore.user) === null || _userStore_user === void 0 ? void 0 : (_userStore_user_groups = _userStore_user.groups) === null || _userStore_user_groups === void 0 ? void 0 : _userStore_user_groups.length) > 1 && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $cGU07.default), {\n id: \"switch-group\",\n \"aria-label\": \"Switch Group\",\n className: \"search-controls-icon-button\",\n onClick: ()=>{\n modalStore.setModal(\"profile-select\");\n uiStore.setSidebarExpanded(false);\n },\n size: \"large\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4KbVS.default), {})\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $b8863318d110334b$export$2e2bcd8739ae039), {})\n ]\n });\n};\nvar $bcaf067aaacc7e97$export$2e2bcd8739ae039 = (0, $87gt0.observer)($bcaf067aaacc7e97$var$SideBar);\n\n\nparcelRequire(\"kaUpJ\");\nvar $etOpj = parcelRequire(\"etOpj\");\n\nvar $iWaGk = parcelRequire(\"iWaGk\");\n\nvar $50Bvw = parcelRequire(\"50Bvw\");\n\nvar $7pHcK = parcelRequire(\"7pHcK\");\n\nvar $4Ghcg = parcelRequire(\"4Ghcg\");\n\nconst $aacc396004ae5cb8$var$Analytics = /*#__PURE__*/ (0, $70fFQ.lazy)(()=>(parcelRequire(\"jOtOD\")));\n\nconst $aacc396004ae5cb8$var$Buildings = /*#__PURE__*/ (0, $70fFQ.lazy)(()=>(parcelRequire(\"6jag2\")));\n\nconst $aacc396004ae5cb8$var$DataEditor = /*#__PURE__*/ (0, $70fFQ.lazy)(()=>(parcelRequire(\"991y0\")));\n\nconst $aacc396004ae5cb8$var$MapContainer = /*#__PURE__*/ (0, $70fFQ.lazy)(()=>(parcelRequire(\"icIXl\")));\n\nconst $aacc396004ae5cb8$var$Projects = /*#__PURE__*/ (0, $70fFQ.lazy)(()=>(parcelRequire(\"cLQwS\")));\n\nconst $aacc396004ae5cb8$var$Team = /*#__PURE__*/ (0, $70fFQ.lazy)(()=>(parcelRequire(\"cFp2b\")));\nconst $aacc396004ae5cb8$var$PrivateRoutes = ()=>{\n var _userStore_user_group, _userStore_user, _location_state;\n const location = (0, $dih0O.useLocation)();\n const history = (0, $dih0O.useHistory)();\n const { action: action } = history;\n const { uiStore: uiStore, userStore: userStore } = (0, $iWaGk.default)();\n let { layoutClass: layoutClass } = uiStore;\n if (location.pathname === \"/onboarding\") layoutClass += \" onboarding\";\n (_userStore_user = userStore.user) === null || _userStore_user === void 0 ? void 0 : (_userStore_user_group = _userStore_user.group) === null || _userStore_user_group === void 0 ? void 0 : _userStore_user_group.menu_items.length;\n const [previousLocation, setPreviousLocation] = (0, $70fFQ.useState)(location);\n (0, $70fFQ.useEffect)(()=>{\n // set previousLocation if location is not modal\n if (action !== \"POP\" && (!location.state || !location.state.modal)) setPreviousLocation(location);\n }, [\n location.pathname\n ]);\n const isModal = !!(((_location_state = location.state) === null || _location_state === void 0 ? void 0 : _location_state.modal) && previousLocation !== location); // not initial render\n const { version: version } = uiStore;\n const className = `ui-${version} layout ${layoutClass}`;\n if (location.pathname.startsWith(\"/demo\")) return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n exact: true,\n path: [\n \"/demo\",\n \"/demo/:buildingId\"\n ],\n render: (props)=>/*#__PURE__*/ (0, $4x3bm.jsx)((0, $61da6a620ff15715$export$2e2bcd8739ae039), {\n props: props\n })\n });\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4Ghcg.SelectedBuildingProvider), {\n value: null,\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)(\"div\", {\n className: className,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bcaf067aaacc7e97$export$2e2bcd8739ae039), {}),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Switch), {\n location: location,\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $70fFQ.Suspense), {\n fallback: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $50Bvw.default), {\n panel: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7pHcK.default), {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $etOpj.default), {})\n })\n }),\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n exact: true,\n path: [\n \"/analytics\",\n \"/analytics/:analyticsId\"\n ],\n render: (props)=>/*#__PURE__*/ (0, $4x3bm.jsx)($aacc396004ae5cb8$var$Analytics, (0, $2QP2i._)({}, props))\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n exact: true,\n path: [\n \"/\",\n \"/project\",\n \"/project/upload\",\n \"/project/:projectId/tos\",\n \"/project/:projectId\",\n \"/project/:projectId/terms/:termsId\",\n \"/project/:projectId/preview/:fileId\",\n \"/project/:projectId/building/:buildingId/preview/:fileId\",\n \"/project/:projectId/building/:buildingId\",\n \"/project/:projectId/building/:buildingId/:viewId\",\n \"/project/:projectId/feature/:featureId\",\n \"/project/:projectId/building/:buildingId/:viewId/:itemId/:itemOption?\",\n \"/project/:projectId/:viewId\",\n \"/project/:projectId/:viewId/:itemId/:itemOption?\"\n ],\n render: ({ match: match })=>/*#__PURE__*/ (0, $4x3bm.jsx)($aacc396004ae5cb8$var$Projects, {\n match: match\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n path: [\n \"/search\",\n \"/search/:buildingId\"\n ],\n exact: true,\n render: (props)=>/*#__PURE__*/ (0, $4x3bm.jsx)($aacc396004ae5cb8$var$Buildings, (0, $2QP2i._)({}, props))\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n path: [\n \"/dataeditor\",\n \"/dataeditor/search\",\n \"/dataeditor/:datasetId\",\n \"/dataeditor/:datasetId/:layerId\",\n \"/dataeditor/:datasetId/:layerId/:featureId\",\n \"/dataeditor/:datasetId/:layerId/:featureId/settings\"\n ],\n exact: true,\n render: (props)=>/*#__PURE__*/ (0, $4x3bm.jsx)($aacc396004ae5cb8$var$DataEditor, (0, $2QP2i._)({}, props))\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n path: [\n \"/team\",\n \"/team/:userId\"\n ],\n exact: true,\n render: (props)=>/*#__PURE__*/ (0, $4x3bm.jsx)($aacc396004ae5cb8$var$Team, (0, $2QP2i._)({}, props))\n })\n ]\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {\n className: \"layout--map\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $70fFQ.Suspense), {\n fallback: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $etOpj.default), {}),\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n path: [\n \"/project/:projectId/building/:buildingId\",\n \"/project/:projectId/feature/:featureId\",\n \"/project/:projectId\",\n \"/project\",\n \"/search/:buildingId\",\n \"/search\",\n \"/dataeditor/:datasetId\",\n \"/dataeditor/:datasetId/:layerId\",\n \"/dataeditor/:datasetId/:layerId/:featureId\",\n \"/dataeditor\",\n \"/\"\n ],\n render: (props)=>/*#__PURE__*/ (0, $4x3bm.jsx)($aacc396004ae5cb8$var$MapContainer, (0, $2QP2i._)({}, props))\n })\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $dih0O.Switch), {\n location: location,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n path: \"/group/:groupId\",\n render: ({ match: match })=>{\n userStore.switchGroup(match.params.groupId).then(()=>{\n history.push(\"/\");\n });\n }\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n path: \"/documents/:documentId?\",\n render: (props)=>/*#__PURE__*/ (0, $4x3bm.jsx)((0, $23953f26a187e6b6$export$2e2bcd8739ae039), (0, $2QP2i._)({}, props))\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n path: [\n \"/search\",\n \"/search/:buildingId\"\n ],\n exact: true,\n render: (props)=>/*#__PURE__*/ (0, $4x3bm.jsx)((0, $4f9c7eb8d5082e41$export$2e2bcd8739ae039), (0, $2QP2i._)({}, props))\n }),\n isModal ? /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n path: \"/\",\n component: (0, $09243fa8c5e39d82$export$2e2bcd8739ae039)\n }) : null,\n uiStore.feedbackModalOpen && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $d757e86f9af94941$export$2e2bcd8739ae039), {\n onClose: ()=>uiStore.setFeedbackModalOpen(false),\n open: uiStore.feedbackModalOpen\n })\n ]\n })\n });\n};\nvar $aacc396004ae5cb8$export$2e2bcd8739ae039 = (0, $87gt0.observer)($aacc396004ae5cb8$var$PrivateRoutes);\n\n\n\nvar $2QP2i = parcelRequire(\"2QP2i\");\n\nvar $edHbI = parcelRequire(\"edHbI\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\n\nparcelRequire(\"8hvMW\");\nvar $87gt0 = parcelRequire(\"87gt0\");\n\nvar $2mnfJ = parcelRequire(\"2mnfJ\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\nvar $ld7Nh = parcelRequire(\"ld7Nh\");\n\nvar $ghdbC = parcelRequire(\"ghdbC\");\n\nvar $gD8dY = parcelRequire(\"gD8dY\");\n\nvar $ggYS0 = parcelRequire(\"ggYS0\");\nvar $bDcYY = parcelRequire(\"bDcYY\");\nvar $7xvOw = parcelRequire(\"7xvOw\");\nvar $fDlBJ = parcelRequire(\"fDlBJ\");\nvar $fuVrF = parcelRequire(\"fuVrF\");\nvar $697xl = parcelRequire(\"697xl\");\nvar $b2gZS = parcelRequire(\"b2gZS\");\nvar $irnsW = parcelRequire(\"irnsW\");\nvar $7adKh = parcelRequire(\"7adKh\");\nvar $8VJ2N = parcelRequire(\"8VJ2N\");\nvar $3cESc = parcelRequire(\"3cESc\");\nvar $4aoN6 = parcelRequire(\"4aoN6\");\nvar $1IOh3 = parcelRequire(\"1IOh3\");\nvar $6yY4r = parcelRequire(\"6yY4r\");\nvar $6QAZD = parcelRequire(\"6QAZD\");\nvar $20MOv = parcelRequire(\"20MOv\");\n\nvar $79yYo = parcelRequire(\"79yYo\");\n\nvar $70fFQ = parcelRequire(\"70fFQ\");\n\n\nvar $irnsW = parcelRequire(\"irnsW\");\n\nvar $5Up1l = parcelRequire(\"5Up1l\");\n\nvar $6Apvh = parcelRequire(\"6Apvh\");\n\nvar $7b960 = parcelRequire(\"7b960\");\n\nvar $57DGY = parcelRequire(\"57DGY\");\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nconst $0d6a8f18ce31daaa$var$_excluded = [\n \"actions\",\n \"children\",\n \"defaultValue\",\n \"name\",\n \"onChange\",\n \"value\"\n];\nconst $0d6a8f18ce31daaa$var$RadioGroup = /*#__PURE__*/ $70fFQ.forwardRef(function RadioGroup(props, ref) {\n const { actions: // private\n // eslint-disable-next-line react/prop-types\n actions, children: children, defaultValue: defaultValue, name: nameProp, onChange: onChange, value: valueProp } = props, other = (0, $79yYo.default)(props, $0d6a8f18ce31daaa$var$_excluded);\n const rootRef = $70fFQ.useRef(null);\n const [value, setValueState] = (0, $6Apvh.default)({\n controlled: valueProp,\n default: defaultValue,\n name: \"RadioGroup\"\n });\n $70fFQ.useImperativeHandle(actions, ()=>({\n focus: ()=>{\n let input = rootRef.current.querySelector(\"input:not(:disabled):checked\");\n if (!input) input = rootRef.current.querySelector(\"input:not(:disabled)\");\n if (input) input.focus();\n }\n }), []);\n const handleRef = (0, $5Up1l.default)(ref, rootRef);\n const handleChange = (event)=>{\n setValueState(event.target.value);\n if (onChange) onChange(event, event.target.value);\n };\n const name = (0, $57DGY.default)(nameProp);\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7b960.default).Provider, {\n value: {\n name: name,\n onChange: handleChange,\n value: value\n },\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $irnsW.default), (0, $20MOv.default)({\n role: \"radiogroup\",\n ref: handleRef\n }, other, {\n children: children\n }))\n });\n});\nvar $0d6a8f18ce31daaa$export$2e2bcd8739ae039 = $0d6a8f18ce31daaa$var$RadioGroup;\n\n\nvar $69ubn = parcelRequire(\"69ubn\");\nvar $iWVbX = parcelRequire(\"iWVbX\");\nvar $3DLOK = parcelRequire(\"3DLOK\");\nvar $c9kiU = parcelRequire(\"c9kiU\");\nvar $iTwQr = parcelRequire(\"iTwQr\");\nvar $8Hhl0 = parcelRequire(\"8Hhl0\");\nvar $iuSYB = parcelRequire(\"iuSYB\");\nvar $PjeUW = parcelRequire(\"PjeUW\");\nvar $27ZKj = parcelRequire(\"27ZKj\");\n\nvar $dsvUQ = parcelRequire(\"dsvUQ\");\n\nvar $bg50F = parcelRequire(\"bg50F\");\nvar $1d14e9fb1f91190a$exports = {};\n\"use strict\";\n\nvar $hTVTj = parcelRequire(\"hTVTj\");\nObject.defineProperty($1d14e9fb1f91190a$exports, \"__esModule\", {\n value: true\n});\n$1d14e9fb1f91190a$exports.default = void 0;\n\nvar $1d14e9fb1f91190a$var$_createSvgIcon = $hTVTj((parcelRequire(\"7Jp6i\")));\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $1d14e9fb1f91190a$var$_default = (0, $1d14e9fb1f91190a$var$_createSvgIcon.default)(/*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14H4V8l8 5 8-5v10zm-8-7L4 6h16l-8 5z\"\n}), \"MailOutline\");\n$1d14e9fb1f91190a$exports.default = $1d14e9fb1f91190a$var$_default;\n\n\n\nvar $6lvOy = parcelRequire(\"6lvOy\");\n\nvar $lbjAq = parcelRequire(\"lbjAq\");\nvar $d3eaa2147c29393a$exports = {};\n\"use strict\";\n\nvar $hTVTj = parcelRequire(\"hTVTj\");\nObject.defineProperty($d3eaa2147c29393a$exports, \"__esModule\", {\n value: true\n});\n$d3eaa2147c29393a$exports.default = void 0;\n\nvar $d3eaa2147c29393a$var$_createSvgIcon = $hTVTj((parcelRequire(\"7Jp6i\")));\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $d3eaa2147c29393a$var$_default = (0, $d3eaa2147c29393a$var$_createSvgIcon.default)([\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M6.41 6 5 7.41 9.58 12 5 16.59 6.41 18l6-6z\"\n }, \"0\"),\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"m13 6-1.41 1.41L16.17 12l-4.58 4.59L13 18l6-6z\"\n }, \"1\")\n], \"KeyboardDoubleArrowRight\");\n$d3eaa2147c29393a$exports.default = $d3eaa2147c29393a$var$_default;\n\n\nvar $bdf228aab2ca545c$exports = {};\n\"use strict\";\n\nvar $hTVTj = parcelRequire(\"hTVTj\");\nObject.defineProperty($bdf228aab2ca545c$exports, \"__esModule\", {\n value: true\n});\n$bdf228aab2ca545c$exports.default = void 0;\n\nvar $bdf228aab2ca545c$var$_createSvgIcon = $hTVTj((parcelRequire(\"7Jp6i\")));\n\nvar $4x3bm = parcelRequire(\"4x3bm\");\nvar $bdf228aab2ca545c$var$_default = (0, $bdf228aab2ca545c$var$_createSvgIcon.default)([\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"M17.59 18 19 16.59 14.42 12 19 7.41 17.59 6l-6 6z\"\n }, \"0\"),\n /*#__PURE__*/ (0, $4x3bm.jsx)(\"path\", {\n d: \"m11 18 1.41-1.41L7.83 12l4.58-4.59L11 6l-6 6z\"\n }, \"1\")\n], \"KeyboardDoubleArrowLeft\");\n$bdf228aab2ca545c$exports.default = $bdf228aab2ca545c$var$_default;\n\n\n\nvar $lxEiN = parcelRequire(\"lxEiN\");\n\nvar $50Bvw = parcelRequire(\"50Bvw\");\n\nvar $7pHcK = parcelRequire(\"7pHcK\");\nvar $0fc2f63448566455$exports = {};\n\n$0fc2f63448566455$exports = (parcelRequire(\"6UIir\")).getBundleURL(\"ak0ox\") + \"arcgis-logo.72697dab.png\";\n\n\nvar $b1c28dc114acb307$exports = {};\n\n$b1c28dc114acb307$exports = (parcelRequire(\"6UIir\")).getBundleURL(\"ak0ox\") + \"gridmarket-logo.206016d1.svg\";\n\n\n\nvar $iWaGk = parcelRequire(\"iWaGk\");\n\nvar $6jgOg = parcelRequire(\"6jgOg\");\nconst $c3821d9fe2dbd085$var$Onboarding = ({ onboardingAnswers: onboardingAnswers = {}, history: history, match: match, onboardingStep: onboardingStep = 1 })=>{\n const theme = (0, $2mnfJ.default)();\n const [step, setStep] = (0, $70fFQ.useState)(onboardingStep);\n const [activeStep, setActiveStep] = (0, $70fFQ.useState)(0);\n const [registrationForm, setRegistrationForm] = (0, $70fFQ.useState)({\n email: \"\",\n password: \"\",\n name: \"\",\n phone: \"\"\n });\n const [options, setOptions] = (0, $70fFQ.useState)([]);\n const [selectedGoals, setSelectedGoals] = (0, $70fFQ.useState)([]);\n const [autoInputValue, setAutoInputValue] = (0, (/*@__PURE__*/$parcel$interopDefault($70fFQ))).useState(\"\");\n const { userStore: userStore } = (0, $iWaGk.default)();\n const [pickedAddress, setPickedAddress] = (0, $70fFQ.useState)(null);\n const [userId, setUserId] = (0, $70fFQ.useState)(null);\n const [error, setError] = (0, $70fFQ.useState)({});\n const [addressError, setAddressError] = (0, $70fFQ.useState)(false);\n const { token: token } = match.params;\n const emailInput = (0, $70fFQ.useRef)(null);\n const passwordInput = (0, $70fFQ.useRef)(null);\n const passwordRepeatInput = (0, $70fFQ.useRef)(null);\n const honeyPotInput = (0, $70fFQ.useRef)(null);\n const [value, setValue] = (0, $70fFQ.useState)(null);\n const [inputValue, setInputValue] = (0, $70fFQ.useState)(\"\");\n const [selectedAddresses, setSelectedAddresses] = (0, $70fFQ.useState)([]);\n const [loading, setLoading] = (0, $70fFQ.useState)(false);\n const { uiStore: uiStore } = (0, $iWaGk.default)();\n const { REGISTRATION_VERSION: REGISTRATION_VERSION } = uiStore;\n const handleBack = ()=>{\n setAddressError(false);\n if (step === 3) {\n setStep(6);\n return;\n }\n setActiveStep((prevActiveStep)=>prevActiveStep - 1);\n setStep(step - 1);\n };\n const handleSkip = ()=>{\n (0, $lxEiN.default).User.submitOnboardingAnswer(\"skipped\", \"true\", userId);\n (0, $lxEiN.default).User.onboardingComplete();\n handleBack();\n };\n const [formState, setFormState] = (0, $70fFQ.useState)((0, $2QP2i._)({\n userType: \"\",\n quantity: \"\",\n orgType: \"\",\n explanation: \"\",\n orgName: \"\",\n title: \"\",\n goals: [],\n budget: \"\",\n annualEnergyCost: \"\",\n annualEnergyUse: \"\",\n utility: \"\",\n lotSize: \"\",\n roofSize: \"\",\n ownOrLease: \"\"\n }, onboardingAnswers));\n const [uploadedData, setUploadedData] = (0, $70fFQ.useState)([]);\n const [otherOrg, setOtherOrg] = (0, $70fFQ.useState)(false);\n const [isEmployee, setIsEmployee] = (0, $70fFQ.useState)(false);\n const [forgotPassword, setForgotPassword] = (0, $70fFQ.useState)(0);\n const [isFormValid, setIsFormValid] = (0, $70fFQ.useState)(false);\n const questions = [\n {\n question: \"How many properties that you manage are interested in distributed energy projects?\",\n name: \"quantity\",\n options: [\n \"1-5\",\n \"6-10\",\n \"11-50\",\n \"50+\"\n ]\n },\n {\n question: \"For whom do you manage the properties?\",\n name: \"orgType\",\n options: [\n \"Myself/My Family\",\n \"The organization I work for\",\n \"For a client or a friend\",\n \"Other\"\n ],\n other: [\n \"Please Explain\",\n \"explanation\"\n ],\n employee: [\n \"What organization do you work for?\",\n \"orgName\",\n \"What is your title in that organization\",\n \"title\"\n ]\n },\n {\n question: \"What are your goals with your energy project(s)?\",\n name: \"goals\",\n options: [\n \"Energy Cost Reduction\",\n \"Regulatory Compliance\",\n \"Fleet Electrification\",\n \"Electricity Resilience\",\n \"Environmental, Social, Governance (ESG)\",\n \"Other\",\n \"Don't Know\"\n ]\n }\n ];\n (0, $70fFQ.useEffect)(()=>{\n if (formState.orgType === \"The organization I work for\") setIsEmployee(true);\n else setIsEmployee(false);\n if (formState.orgType === \"Other\") setOtherOrg(true);\n else setOtherOrg(false);\n }, [\n formState.orgType\n ]);\n (0, $70fFQ.useEffect)(()=>{\n if (step === 3) setActiveStep(1);\n if (step === 4) setActiveStep(1);\n if (step === 5) setActiveStep(2);\n if (step === 6) setActiveStep(3);\n }, [\n step\n ]);\n (0, $6jgOg.default)(()=>{\n if (!userStore.isActivated && step === 5) userStore.fetchCredentials();\n if (!userStore.isOnboardingCompleted && step === 5) (async ()=>{\n await (0, $lxEiN.default).User.onboardingComplete();\n })();\n }, 5000);\n const handleGoalsBlur = ()=>{\n (0, $lxEiN.default).User.submitOnboardingAnswer(\"goals\", formState.goals, userId);\n };\n const goalsOptions = [\n \"Energy Cost Reduction\",\n \"Regulatory Compliance\",\n \"Fleet Electrification\",\n \"Electricity Resilience\",\n \"Environmental, Social, Governance (ESG)\",\n \"Other\",\n \"Don't Know\"\n ];\n const handleRegisterChange = (e)=>{\n setRegistrationForm((registrationForm)=>{\n return (0, $edHbI._)((0, $2QP2i._)({}, registrationForm), {\n [e.target.name]: e.target.value\n });\n });\n e.preventDefault();\n if (registrationForm.email && // registrationForm.name &&\n registrationForm.password) setIsFormValid(true);\n };\n const nextStep = ()=>{\n setStep(step + 1);\n };\n const handleRegistrationQuizSubmission = (e)=>{\n (0, $lxEiN.default).User.submitOnboardingAnswer(e.target.name, e.target.value, userId);\n };\n const handleRegistration = async ()=>{\n const buildingsArray = [];\n for(let i = 0; i < selectedAddresses.length; i += 1)buildingsArray.push(selectedAddresses[i].id);\n const postBody = {\n name: \"My first project\",\n buildings: buildingsArray\n };\n if (formState.orgName) postBody.group = {\n name: formState.orgName\n };\n try {\n await (0, $lxEiN.default).User.createSignupProject((0, $edHbI._)((0, $2QP2i._)({}, postBody), {\n user_id: userId\n }));\n } catch (err) {\n setTimeout(()=>{\n console.error(err);\n }, 4000);\n setAddressError(true);\n return;\n }\n nextStep();\n };\n const handleNext = async ()=>{\n if (step === 7 && userStore.isActivated) history.push(\"/\");\n if (step === 5 && REGISTRATION_VERSION === \"v2\") setTimeout(handleRegistration(), 2000);\n if (step !== 7) {\n setActiveStep(activeStep + 1);\n nextStep();\n }\n };\n const handleRegister = async (e)=>{\n e.preventDefault();\n const response = await (0, $lxEiN.default).User.signup(registrationForm);\n if (response.data.ok) {\n setUserId(response.data.id);\n setStep(3);\n }\n if (!response.data.ok) {\n if (response.data.err.user) setError({\n email: \"A user already exists with this email\"\n });\n if (response.data.err.email) setError({\n email: \"Please check the formatting of your email address\"\n });\n if (response.data.err.password) setError({\n password: \"Your password must have a minimum of 6 characters\"\n });\n }\n };\n const handleChange = (e)=>{\n e.preventDefault();\n setFormState((0, $edHbI._)((0, $2QP2i._)({}, formState), {\n [e.target.name]: e.target.value\n }));\n if (formState.orgType === \"The organization I work for\") setIsEmployee(true);\n else setIsEmployee(false);\n if (formState.orgType === \"Other\") setOtherOrg(true);\n else setOtherOrg(false);\n };\n const handlePasswordResetSubmit = (event)=>{\n event.preventDefault();\n const email = emailInput.current.value;\n (0, $lxEiN.default).User.sendPasswordResetEmail(email);\n // setPasswordResetEmailSent(true);\n setForgotPassword(2);\n };\n const addressAddTimer = (result)=>{\n const selected = result;\n setTimeout(()=>{\n setLoading(false);\n setTimeout(()=>{\n setValue(\"\");\n setLoading(true);\n setPickedAddress(\"\");\n if (selected) setUploadedData((uploadedData)=>[\n ...uploadedData,\n selected\n ]);\n }, 600);\n }, 1100);\n setLoading(true);\n };\n const deleteAddress = (e)=>{\n const deletedFile = e.target.getAttribute(\"row\");\n setUploadedData(uploadedData.filter((address)=>address !== deletedFile));\n setSelectedAddresses(selectedAddresses.filter((address)=>address.address !== deletedFile));\n };\n const handleLoginSubmit = async (e)=>{\n var _location_state;\n e.preventDefault();\n // if (honeyPotInput?.current?.value) return;\n if (token) {\n const newPassword = passwordInput.current.value;\n const newPasswordRepeat = passwordRepeatInput.current.value;\n if (newPassword !== newPasswordRepeat) {\n setError({\n \"password-repeat\": \"The password confirmation does not match\"\n });\n return;\n }\n setError({});\n /*\n const { data } = await axios.post(`/reset/${token}`, {\n password: newPassword,\n token\n });\n */ // if (data.ok) {\n // return history.push('/');\n // }\n }\n const email = emailInput.current.value;\n const password = passwordInput.current.value;\n const success = await userStore.login(email, password);\n if (!success) {\n setError({\n \"password-error\": \"Wrong username/password combination\"\n });\n passwordInput.current.value = \"\";\n } else history.push(((_location_state = location.state) === null || _location_state === void 0 ? void 0 : _location_state.referrer) || \"/\");\n };\n (0, $70fFQ.useEffect)(()=>{\n if (inputValue.length < 3) return;\n (async ()=>{\n const response = await (0, $lxEiN.default).Address.autocomplete(inputValue);\n // console.log(response, 'response from autocomplete');\n setOptions(response.data.data);\n })();\n }, [\n inputValue\n ]);\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $50Bvw.default), {\n panel: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7pHcK.default), {\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n className: \"onboarding-container\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n className: \"content-container scrollBarsHidden\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n className: \"logoBox\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n component: \"img\",\n src: (0, (/*@__PURE__*/$parcel$interopDefault($b1c28dc114acb307$exports))),\n className: \"gridmarket-logo\"\n }),\n step > 2 && /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $4x3bm.Fragment), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n variant: \"h6\",\n sx: {\n fontWeight: \"bold\"\n },\n children: \"Registration\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $27ZKj.default), {\n variant: \"body\",\n children: [\n \"Step \",\n activeStep + 1,\n \" of 4\"\n ]\n })\n ]\n })\n ]\n }),\n step === 0 && /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n className: \"login-selection content\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n variant: \"h6\",\n sx: {\n mb: 5\n },\n children: \"Log In Or Sign Up\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n variant: \"outlined\",\n org: \"ArcGIS\",\n fullWidth: \"true\",\n component: (0, $dsvUQ.NavLink),\n to: \"/auth/arcgis\",\n sx: {\n p: 1,\n mt: 1,\n textTransform: \"none\"\n },\n startIcon: /*#__PURE__*/ (0, $4x3bm.jsx)(\"img\", {\n src: (0, (/*@__PURE__*/$parcel$interopDefault($0fc2f63448566455$exports))),\n className: \"arc-logo\",\n alt: \"ArcGis\"\n }),\n children: \"Continue with ArcGIS\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n variant: \"outlined\",\n fullWidth: \"true\",\n onClick: nextStep,\n org: \"ArcGIS\",\n sx: {\n p: 1,\n mt: 1,\n textTransform: \"none\"\n },\n startIcon: /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($1d14e9fb1f91190a$exports))), {\n className: \"email-icon\"\n }),\n children: \"Continue with Email\"\n })\n ]\n })\n ]\n }),\n step === 1 && forgotPassword === 0 && /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n className: \"content login\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsxs)(\"form\", {\n onSubmit: handleLoginSubmit,\n className: \"content\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n variant: \"h6\",\n children: \"Sign in\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $697xl.default), {\n margin: \"normal\",\n required: true,\n fullWidth: true,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1IOh3.default), {\n htmlFor: \"email\",\n children: \"Email Address\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3cESc.default), {\n inputRef: emailInput,\n id: \"email\",\n name: \"email\",\n autoComplete: \"email\",\n autoFocus: true\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $697xl.default), {\n margin: \"normal\",\n required: true,\n fullWidth: true,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1IOh3.default), {\n htmlFor: \"password\",\n children: \"Password\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3cESc.default), {\n inputRef: passwordInput,\n name: \"password\",\n type: \"password\",\n id: \"password\",\n autoComplete: \"current-password\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7adKh.default), {\n error: true,\n children: error[\"password-error\"]\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $697xl.default), {\n style: {\n transform: \"translateX(-10000px)\",\n height: 1,\n margin: 0,\n overflow: \"hidden\",\n position: \"fixed\"\n },\n fullWidth: true,\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3cESc.default), {\n style: {\n transform: \"translateX(-10000px)\",\n height: 1,\n display: \"none\"\n },\n inputRef: honeyPotInput,\n name: \"password\",\n type: \"password\",\n id: \"password\",\n autoComplete: \"new-password\"\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $8VJ2N.default), {\n justifyContent: \"flex-end\",\n alignItems: \"right\",\n container: true,\n spacing: 3,\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $8VJ2N.default), {\n item: true,\n sx: {\n mb: 3\n },\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n sx: {\n textTransform: \"none\"\n },\n onClick: ()=>setForgotPassword(1),\n children: \"Forgot your password?\"\n })\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n className: \"content\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n type: \"submit\",\n className: \"round-button\",\n sx: {\n m: 2\n },\n children: \"Sign In\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n sx: {\n display: \"none\"\n },\n m: 3,\n color: \"gray\",\n children: \"- or -\"\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n sx: {\n display: \"none\"\n },\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n variant: \"outlined\",\n org: \"ArcGIS\",\n fullWidth: \"true\",\n component: (0, $dsvUQ.NavLink),\n to: \"/auth/arcgis\",\n sx: {\n textTransform: \"none\"\n },\n startIcon: /*#__PURE__*/ (0, $4x3bm.jsx)(\"img\", {\n src: (0, (/*@__PURE__*/$parcel$interopDefault($0fc2f63448566455$exports))),\n width: 27,\n height: 27,\n alt: \"ArcGIS\"\n }),\n children: \"Continue with ArcGIS\"\n })\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n sx: {\n width: \"100%\",\n textAlign: \"center\"\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $fuVrF.default), {\n variant: \"middle\",\n sx: {\n mt: 4,\n mb: 2\n }\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $27ZKj.default), {\n variant: \"body\",\n sx: {\n textAlign: \"center\",\n width: \"100%\",\n letterSpacing: \"0.04rem\",\n display: \"flex\",\n alignContent: \"center\",\n alignItems: \"baseline\",\n justifyContent: \"center\"\n },\n children: [\n \"Don't have an account?\",\n \" \",\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n variant: \"text\",\n disableRipple: true,\n sx: {\n font: \"inherit\",\n fontWeight: 600,\n textTransform: \"none\",\n \"&:hover\": {\n backgroundColor: \"transparent\"\n }\n },\n onClick: nextStep,\n children: \"Sign up.\"\n })\n ]\n })\n ]\n })\n ]\n }),\n step === 1 && forgotPassword === 1 && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n className: \"content login\",\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $4x3bm.Fragment), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $7xvOw.default), {\n size: \"large\",\n sx: {\n alignSelf: \"start\",\n textTransform: \"none\"\n },\n onClick: ()=>{\n setForgotPassword(0);\n },\n children: [\n theme.direction === \"rtl\" ? /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($lbjAq))), {}) : /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($6lvOy))), {}),\n \"Back\"\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n align: \"center\",\n variant: \"h6\",\n children: \"Reset your password\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n gutterBottom: true,\n align: \"center\",\n variant: \"body2\",\n children: \"Type in your e-mail and we'll send you the link to reset your password\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $697xl.default), {\n margin: \"normal\",\n required: true,\n fullWidth: true,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1IOh3.default), {\n htmlFor: \"email\",\n children: \"Email Address\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3cESc.default), {\n inputRef: emailInput,\n id: \"email\",\n name: \"email\",\n autoComplete: \"email\",\n type: \"email\",\n sx: {\n mb: 4\n },\n autoFocus: true\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n type: \"submit\",\n onClick: handlePasswordResetSubmit,\n className: \"round-button\",\n children: \"Send\"\n })\n ]\n })\n }),\n step === 1 && forgotPassword === 2 && /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n className: \"content login\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n align: \"center\",\n variant: \"h6\",\n gutterBottom: true,\n children: \"Password reset e-mail has been sent\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n gutterBottom: true,\n align: \"center\",\n variant: \"body2\",\n sx: {\n mb: 2,\n mt: 2\n },\n children: \"Password reset e-mail has been sent to you, check your e-mail\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n align: \"center\",\n variant: \"body2\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n onClick: ()=>setForgotPassword(0),\n children: \"Back to login\"\n })\n })\n ]\n }),\n step === 2 && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n className: \"content login\",\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)(\"form\", {\n onChange: handleRegisterChange,\n onSubmit: handleRegister,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $7xvOw.default), {\n size: \"large\",\n sx: {\n alignSelf: \"start\",\n textTransform: \"none\"\n },\n onClick: handleBack,\n children: [\n theme.direction === \"rtl\" ? /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($lbjAq))), {}) : /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($6lvOy))), {}),\n \"Back\"\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $irnsW.default), {\n sx: {\n mb: 3\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $697xl.default), {\n margin: \"normal\",\n required: true,\n fullWidth: true,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1IOh3.default), {\n htmlFor: \"email\",\n children: \"Email Address\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3cESc.default), {\n id: \"email\",\n name: \"email\",\n type: \"email\",\n autoComplete: \"email\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7adKh.default), {\n error: true,\n children: error.email\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $697xl.default), {\n margin: \"normal\",\n required: true,\n fullWidth: true,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1IOh3.default), {\n htmlFor: \"password\",\n children: \"Password\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3cESc.default), {\n id: \"password\",\n type: \"password\",\n name: \"password\",\n autoComplete: \"new-password\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7adKh.default), {\n error: true,\n children: error.password\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $PjeUW.default), {\n title: !isFormValid ? \"Please complete all required fields\" : \"\",\n className: \"content\",\n arrow: true,\n children: /*#__PURE__*/ (0, $4x3bm.jsx)(\"span\", {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7xvOw.default), {\n type: \"submit\",\n disabled: !isFormValid,\n className: \"round-button\",\n color: \"primary\",\n children: \"Register\"\n })\n })\n })\n ]\n })\n ]\n })\n }),\n step === 3 && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4x3bm.Fragment), {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n className: \"form-container\",\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n className: \"content\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n variant: \"h6\",\n sx: {\n fontWeight: \"bold\"\n },\n children: \"What do you want to do?\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $697xl.default), {\n component: \"fieldset\",\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $0d6a8f18ce31daaa$export$2e2bcd8739ae039), {\n \"aria-labelledby\": \"What do you want to do?\",\n name: \"userType\",\n sx: {\n display: \"flex\",\n flexDirection: \"row\"\n },\n onBlur: handleRegistrationQuizSubmission,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $b2gZS.default), {\n value: \"property manager\",\n sx: {\n m: 2\n },\n control: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $6QAZD.default), {}),\n label: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n variant: \"body1\",\n children: \"I want to get distributed energy solutions for properties.\"\n }),\n onChange: handleChange\n }, \"property manager\"),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $b2gZS.default), {\n value: \"vendor\",\n control: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $6QAZD.default), {}),\n sx: {\n m: 2\n },\n label: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n variant: \"body1\",\n children: \"I want to sell distributed energy solutions to property owners.\"\n }),\n onChange: handleChange\n }, \"vendor\")\n ]\n })\n })\n ]\n })\n })\n }),\n step === 4 && formState.userType === \"vendor\" && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4x3bm.Fragment), {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n className: \"content scrollBarsHidden\",\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n className: \"content\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n variant: \"h6\",\n sx: {\n fontWeight: \"bold\"\n },\n children: \"Tell us a bit about yourself.\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iuSYB.default), {\n label: \"Your Name\",\n name: \"name\",\n sx: {\n mt: 2,\n width: \"100%\"\n }\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iuSYB.default), {\n label: \"Your Organization\",\n name: \"orgName\",\n sx: {\n mt: 2,\n width: \"100%\"\n }\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iuSYB.default), {\n label: \"Your Title\",\n name: \"title\",\n sx: {\n mt: 2,\n width: \"100%\"\n }\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iuSYB.default), {\n label: \"Your Phone Number\",\n name: \"phone\",\n sx: {\n mt: 2,\n width: \"100%\"\n }\n })\n ]\n })\n })\n }),\n step === 4 && formState.userType === \"property manager\" && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4x3bm.Fragment), {\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n className: \"content scrollBarsHidden\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n className: \"content\",\n children: REGISTRATION_VERSION === \"v1\" && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n variant: \"body\",\n align: \"center\",\n gutterBottom: true,\n sx: {\n textAlign: \"justify\",\n fontWeight: \"500\",\n mt: 5\n },\n children: \"The next few questions will assist in setting up your custom profile.\"\n })\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n className: \"form-container\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)(\"form\", {\n onSubmit: handleRegistrationQuizSubmission,\n children: questions.map((question)=>question.question === \"What are your goals with your energy project(s)?\" ? /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $4x3bm.Fragment), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1IOh3.default), {\n sx: {\n mt: 4,\n mb: 1,\n whiteSpace: \"unset\",\n width: \"100%\",\n color: \"black\"\n },\n children: question.question\n }, \"labelForAutocomplete\"),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $ggYS0.default), {\n multiple: true,\n limitTags: 2,\n question: question.question,\n options: goalsOptions,\n getOptionLabel: (option)=>option,\n onBlur: handleGoalsBlur,\n name: question.name,\n value: selectedGoals,\n disableCloseOnSelect: true,\n onChange: (e, newValue)=>{\n setSelectedGoals(newValue);\n setFormState((0, $edHbI._)((0, $2QP2i._)({}, formState), {\n goals: newValue\n }));\n },\n // onChange={newValue => {\n // setSelectedGoals(selectedGoals => [\n // ...selectedGoals,\n // newValue\n // ]);\n // setFormState({\n // ...formState,\n // goals: options\n // });\n // }}\n inputValue: autoInputValue,\n onInputChange: (event, newInputValue)=>{\n setAutoInputValue(newInputValue);\n },\n renderInput: (params)=>/*#__PURE__*/ (0, $4x3bm.jsx)((0, $iuSYB.default), (0, $edHbI._)((0, $2QP2i._)({}, params), {\n variant: \"standard\",\n placeholder: \"Please select...\"\n }))\n }, question.question)\n ]\n }) : REGISTRATION_VERSION === \"v1\" ? /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $4x3bm.Fragment), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1IOh3.default), {\n sx: {\n mt: 4,\n mb: 1,\n whiteSpace: \"unset\",\n width: \"100%\",\n color: \"black\"\n },\n children: question.question\n }),\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $69ubn.default), {\n question: question.question,\n variant: \"standard\",\n name: question.name,\n onChange: (e)=>handleChange(e),\n displayEmpty: true,\n onBlur: handleRegistrationQuizSubmission,\n value: formState[question.name],\n sx: {\n color: \"gray\",\n mb: 2\n },\n fullWidth: true,\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $6yY4r.default), {\n value: \"\",\n children: \"Please Select...\"\n }),\n question.options && question.options.map((option)=>{\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $6yY4r.default), {\n value: option,\n children: option\n }, option);\n })\n ]\n }),\n question.other && otherOrg && /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $4x3bm.Fragment), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1IOh3.default), {\n sx: {\n mt: 4,\n mb: 1,\n width: \"100%\",\n whiteSpace: \"unset\",\n color: \"black\"\n },\n children: question.other[0]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3cESc.default), {\n id: question.other[1],\n autoComplete: \"new-password\",\n question: question.other,\n name: question.other[1],\n onBlur: handleRegistrationQuizSubmission,\n sx: {\n color: \"gray\",\n mb: 2\n },\n onChange: (e)=>handleChange(e),\n fullWidth: true\n })\n ]\n }),\n question.employee && isEmployee && /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $4x3bm.Fragment), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1IOh3.default), {\n sx: {\n mt: 4,\n mb: 1,\n whiteSpace: \"unset\",\n width: \"100%\",\n color: \"black\"\n },\n children: question.employee[0]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3cESc.default), {\n id: question.other[1],\n autoComplete: \"new-password\",\n question: question.employee[1],\n name: question.employee[1],\n sx: {\n mb: 2\n },\n onBlur: handleRegistrationQuizSubmission,\n onChange: (e)=>handleChange(e),\n fullWidth: true\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $1IOh3.default), {\n sx: {\n mt: 3,\n mb: 1,\n whiteSpace: \"unset\",\n width: \"100%\",\n color: \"black\"\n },\n children: question.employee[2]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3cESc.default), {\n id: question.employee[3],\n autoComplete: \"new-password\",\n question: question.employee[3],\n onBlur: handleRegistrationQuizSubmission,\n name: question.employee[3],\n onChange: (e)=>handleChange(e),\n sx: {\n mb: 2\n },\n fullWidth: true\n })\n ]\n })\n ]\n }) : /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4x3bm.Fragment), {}))\n })\n })\n ]\n })\n }),\n step === 5 && /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n className: \"content\",\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $bDcYY.default), {\n sx: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n height: 105,\n mt: 5\n },\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n variant: \"body\",\n align: \"justify\",\n gutterBottom: true,\n children: \"Add one or more properties to your first project.\"\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $ggYS0.default), {\n autoHighlight: true,\n options: options,\n noOptionsText: \"Please type to search for an address\",\n value: value,\n onChange: async (event, newValue, reason)=>{\n setOptions(newValue ? [\n newValue,\n ...options\n ] : options);\n setValue(newValue);\n if (reason === \"clear\") {\n setPickedAddress(null);\n setInputValue(\"\");\n setValue(\"\");\n }\n if (reason === \"selectOption\") {\n var _response_data_data, _response_data;\n // console.log('address sent to geocode ->', newValue);\n const response = await (0, $lxEiN.default).Address.geocode(newValue);\n // console.log('response from geocode ->', response);\n const result = (_response_data = response.data) === null || _response_data === void 0 ? void 0 : (_response_data_data = _response_data.data) === null || _response_data_data === void 0 ? void 0 : _response_data_data[0];\n if (result) {\n setPickedAddress(result);\n setSelectedAddresses((addresses)=>[\n ...addresses,\n result\n ]);\n addressAddTimer(result.address);\n }\n }\n },\n onInputChange: (event, newInputValue)=>{\n if (newInputValue.length >= 3) setInputValue(newInputValue);\n },\n renderInput: (params)=>{\n var _pickedAddress_address;\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iuSYB.default), (0, $edHbI._)((0, $2QP2i._)({}, params), {\n fullWidth: true,\n placeholder: \"Type to search ...\",\n InputProps: (0, $edHbI._)((0, $2QP2i._)({}, params.InputProps), {\n startAdornment: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $4x3bm.Fragment), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4aoN6.default), {\n position: \"start\",\n children: (pickedAddress === null || pickedAddress === void 0 ? void 0 : (_pickedAddress_address = pickedAddress.address) === null || _pickedAddress_address === void 0 ? void 0 : _pickedAddress_address.length) > 6 ? loading ? /*#__PURE__*/ (0, $4x3bm.jsx)((0, $fDlBJ.default), {}) : /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($bg50F))), {\n sx: {\n color: \"green\"\n }\n }) : null\n }),\n params.InputProps.startAdornment\n ]\n })\n })\n }));\n }\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iTwQr.default), {\n className: \"scrollBarsHidden\",\n sx: {\n height: \"50vh\",\n overFlowX: \"scroll\",\n marginBottom: 4,\n width: \"100%\"\n },\n children: !!(uploadedData === null || uploadedData === void 0 ? void 0 : uploadedData.length) && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n pt: 4,\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $iWVbX.default), {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $3DLOK.default), {\n children: uploadedData.map((address)=>/*#__PURE__*/ (0, $4x3bm.jsxs)((0, $8Hhl0.default), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $c9kiU.default), {\n align: \"left\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($ghdbC))), {\n sx: {\n color: \"#8fc408\",\n fontSize: 20\n }\n })\n }),\n uploadedData && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $c9kiU.default), {\n align: \"center\",\n style: {\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n maxWidth: 200\n },\n children: address\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $c9kiU.default), {\n align: \"right\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($gD8dY))), {\n sx: {\n color: \"#1f1f1f\",\n fontSize: 20\n },\n onClick: (e)=>deleteAddress(e),\n row: address\n })\n })\n ]\n }))\n })\n })\n })\n })\n ]\n }),\n step === 6 && REGISTRATION_VERSION === \"v1\" && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n className: \"content\",\n children: pickedAddress ? /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n sx: {\n mt: 6\n },\n children: uploadedData.length === 1 ? `Successfully added ${pickedAddress.address} to your\n project.` : `Successfully added ${uploadedData.length} sites to your project`\n }) : /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n sx: {\n textAlign: \"justify\",\n mt: 6\n },\n children: \"Are you sure you don't want to add any properties now?\"\n })\n }),\n step === 6 && REGISTRATION_VERSION === \"v2\" && (addressError ? /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n className: \"content\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n sx: {\n textAlign: \"justify\",\n mt: 6\n },\n children: \"There was a problem with one or more of your addresses. Please try again.\"\n })\n }) : /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n className: \"content\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n children: userStore.isActivated ? /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n children: \"Thanks for confirming your email, welcome to Gridmarket.\"\n }) : // \n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n children: \"We've sent you a confirmation email. Please click the link in that email to activate your account and see your property assessment.\"\n })\n })\n })),\n step >= 3 && step <= 6 && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n className: \"react-stepper\",\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $ld7Nh.default), {\n variant: \"dots\",\n steps: 4,\n position: \"static\",\n sx: {\n background: \"transparent\"\n },\n activeStep: activeStep,\n nextButton: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $7xvOw.default), {\n size: \"large\",\n onClick: handleNext,\n disabled: step === 6,\n children: [\n step < 7 ? \"Next\" : null,\n theme.direction === \"rtl\" && activeStep < 4 ? /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($6lvOy))), {}) : activeStep < 4 ? /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($lbjAq))), {}) : null\n ]\n }),\n backButton: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $7xvOw.default), {\n size: \"large\",\n onClick: activeStep === 0 ? handleSkip : handleBack,\n disabled: activeStep === 2 && userStore.isActivated,\n children: [\n theme.direction === \"rtl\" ? /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($lbjAq))), {}) : activeStep > 0 ? /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($6lvOy))), {}) : null,\n activeStep === 0 ? \"Skip\" : \"Back\",\n activeStep === 0 && theme.direction === \"ltr\" && /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($d3eaa2147c29393a$exports))), {}),\n activeStep === 0 && theme.direction === \"rtl\" && /*#__PURE__*/ (0, $4x3bm.jsx)((0, (/*@__PURE__*/$parcel$interopDefault($bdf228aab2ca545c$exports))), {})\n ]\n })\n })\n })\n ]\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $bDcYY.default), {\n className: \"bg\"\n })\n ]\n })\n })\n });\n};\nvar $c3821d9fe2dbd085$export$2e2bcd8739ae039 = (0, $87gt0.observer)($c3821d9fe2dbd085$var$Onboarding);\n\n\nconst $7ddcdf8e9d17d380$var$App = ()=>{\n const { userStore: userStore } = (0, $iWaGk.default)();\n if (userStore.status === \"loading\") return /*#__PURE__*/ (0, $4x3bm.jsx)(\"div\", {});\n if (userStore.status === \"UNDER_MAINTENANCE\") return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $27ZKj.default), {\n style: {\n padding: \"4rem\",\n marginTop: 100\n },\n variant: \"h5\",\n children: \"Platform is undergoing some maintenance. We'll be back soon...\"\n });\n let onboardingStep = null;\n if (userStore.user && userStore.user.is_onboarding_completed === false) {\n if (userStore.user.onboarding_step === \"onboarding-questions\") onboardingStep = 3;\n else if (userStore.user.onboarding_step === \"create-project\") onboardingStep = 4;\n else if (userStore.user.onboarding_step === \"validate-email\") onboardingStep = 6;\n }\n return /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4x3bm.Fragment), {\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $dih0O.Switch), {\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n exact: true,\n path: [\n \"/auth/:method\"\n ],\n render: (props)=>/*#__PURE__*/ (0, $4x3bm.jsx)((0, $4a01c454afb76c25$export$2e2bcd8739ae039), (0, $2QP2i._)({}, props))\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n path: \"/status\",\n exact: true,\n render: (props)=>/*#__PURE__*/ (0, $4x3bm.jsx)((0, $a17ae84f2c373946$export$2e2bcd8739ae039), (0, $2QP2i._)({}, props))\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n path: [\n \"/login/:resetPasswordToken\",\n \"/login/activate/:userActivationToken\",\n \"/forgot-password\"\n ],\n exact: true,\n render: (props)=>/*#__PURE__*/ (0, $4x3bm.jsx)((0, $803f9f4f70fb5181$export$2e2bcd8739ae039), (0, $2QP2i._)({}, props))\n }),\n onboardingStep && /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n exact: true,\n render: (props)=>/*#__PURE__*/ (0, $4x3bm.jsx)((0, $c3821d9fe2dbd085$export$2e2bcd8739ae039), (0, $2QP2i._)({\n onboardingAnswers: userStore.user.onboarding_answers,\n onboardingStep: onboardingStep\n }, props))\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n exact: true,\n path: [\n \"/login\",\n \"/onboarding\"\n ],\n render: (props)=>/*#__PURE__*/ (0, $4x3bm.jsx)((0, $c3821d9fe2dbd085$export$2e2bcd8739ae039), (0, $2QP2i._)({}, props))\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dih0O.Route), {\n exact: true,\n path: \"/register\",\n render: (props)=>/*#__PURE__*/ (0, $4x3bm.jsx)((0, $c3821d9fe2dbd085$export$2e2bcd8739ae039), (0, $2QP2i._)({\n onboardingStep: 2\n }, props))\n }),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $4aa0f072730a5215$export$2e2bcd8739ae039), {\n userStore: userStore,\n path: \"/\",\n component: (0, $aacc396004ae5cb8$export$2e2bcd8739ae039)\n })\n ]\n })\n });\n};\nvar $7ddcdf8e9d17d380$export$2e2bcd8739ae039 = (0, $87gt0.observer)($7ddcdf8e9d17d380$var$App);\n\n\n/* eslint-disable */ if (window.location.hostname !== \"platform.gridmarket.com\") window[\"ga-disable-G-00W30VGFDY\"] = true;\nif (window.location.hostname === \"platform.gridmarket.com\") {\n window.dataLayer = window.dataLayer || [];\n function gtag() {\n dataLayer.push(arguments);\n }\n gtag(\"js\", new Date());\n gtag(\"config\", \"G-00W30VGFDY\");\n (function(h, o, t, j, a, r) {\n h.hj = h.hj || function() {\n (h.hj.q = h.hj.q || []).push(arguments);\n };\n h._hjSettings = {\n hjid: 1545832,\n hjsv: 6\n };\n a = o.getElementsByTagName(\"head\")[0];\n r = o.createElement(\"script\");\n r.async = 1;\n r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv;\n a.appendChild(r);\n })(window, document, \"https://static.hotjar.com/c/hotjar-\", \".js?sv=\");\n let _rollbarConfig = {\n accessToken: \"3a42d853ae8d47209abc693dbf9a0813\",\n captureUncaught: true,\n captureUnhandledRejections: true,\n payload: {\n environment: \"production\"\n }\n };\n // Rollbar Snippet\n !function(r) {\n function e(n) {\n if (o[n]) return o[n].exports;\n const t = o[n] = {\n exports: {},\n id: n,\n loaded: !1\n };\n return r[n].call(t.exports, t, t.exports, e), t.loaded = !0, t.exports;\n }\n var o = {};\n return e.m = r, e.c = o, e.p = \"\", e(0);\n }([\n function(r, e, o) {\n const n = o(1);\n const t = o(4);\n _rollbarConfig = _rollbarConfig || {}, _rollbarConfig.rollbarJsUrl = _rollbarConfig.rollbarJsUrl || \"https://cdnjs.cloudflare.com/ajax/libs/rollbar.js/2.4.6/rollbar.min.js\", _rollbarConfig.async = void 0 === _rollbarConfig.async || _rollbarConfig.async;\n const a = n.setupShim(window, _rollbarConfig);\n const l = t(_rollbarConfig);\n window.rollbar = n.Rollbar, a.loadFull(window, document, !_rollbarConfig.async, _rollbarConfig, l);\n },\n function(r, e, o) {\n function n(r) {\n return function() {\n try {\n return r.apply(this, arguments);\n } catch (r) {\n try {\n console.error(\"[Rollbar]: Internal error\", r);\n } catch (r) {}\n }\n };\n }\n function t(r, e) {\n this.options = r, this._rollbarOldOnError = null;\n const o = s++;\n this.shimId = function() {\n return o;\n }, typeof window !== \"undefined\" && window._rollbarShims && (window._rollbarShims[o] = {\n handler: e,\n messages: []\n });\n }\n function a(r, e) {\n if (r) {\n const o = e.globalAlias || \"Rollbar\";\n if (typeof r[o] === \"object\") return r[o];\n r._rollbarShims = {}, r._rollbarWrappedError = null;\n const t = new p(e);\n return n(function() {\n e.captureUncaught && (t._rollbarOldOnError = r.onerror, i.captureUncaughtExceptions(r, t, !0), i.wrapGlobals(r, t, !0)), e.captureUnhandledRejections && i.captureUnhandledRejections(r, t, !0);\n const n = e.autoInstrument;\n return e.enabled !== !1 && (void 0 === n || n === !0 || typeof n === \"object\" && n.network) && r.addEventListener && (r.addEventListener(\"load\", t.captureLoad.bind(t)), r.addEventListener(\"DOMContentLoaded\", t.captureDomContentLoaded.bind(t))), r[o] = t, t;\n })();\n }\n }\n function l(r) {\n return n(function() {\n const e = this;\n const o = Array.prototype.slice.call(arguments, 0);\n const n = {\n shim: e,\n method: r,\n args: o,\n ts: new Date()\n };\n window._rollbarShims[this.shimId()].messages.push(n);\n });\n }\n var i = o(2);\n var s = 0;\n const d = o(3);\n const c = function(r, e) {\n return new t(r, e);\n };\n var p = d.bind(null, c);\n t.prototype.loadFull = function(r, e, o, t, a) {\n const l = function() {\n let e;\n if (void 0 === r._rollbarDidLoad) {\n e = new Error(\"rollbar.js did not load\");\n for(var o, n, t, l, i = 0; o = r._rollbarShims[i++];)for(o = o.messages || []; n = o.shift();)for(t = n.args || [], i = 0; i < t.length; ++i)if (l = t[i], typeof l === \"function\") {\n l(e);\n break;\n }\n }\n typeof a === \"function\" && a(e);\n };\n let i = !1;\n const s = e.createElement(\"script\");\n const d = e.getElementsByTagName(\"script\")[0];\n const c = d.parentNode;\n s.crossOrigin = \"\", s.src = t.rollbarJsUrl, o || (s.async = !0), s.onload = s.onreadystatechange = n(function() {\n if (!(i || this.readyState && this.readyState !== \"loaded\" && this.readyState !== \"complete\")) {\n s.onload = s.onreadystatechange = null;\n try {\n c.removeChild(s);\n } catch (r) {}\n i = !0, l();\n }\n }), c.insertBefore(s, d);\n }, t.prototype.wrap = function(r, e, o) {\n try {\n let n;\n if (n = typeof e === \"function\" ? e : function() {\n return e || {};\n }, typeof r !== \"function\") return r;\n if (r._isWrap) return r;\n if (!r._rollbar_wrapped && (r._rollbar_wrapped = function() {\n o && typeof o === \"function\" && o.apply(this, arguments);\n try {\n return r.apply(this, arguments);\n } catch (o) {\n let e = o;\n throw e && (typeof e === \"string\" && (e = new String(e)), e._rollbarContext = n() || {}, e._rollbarContext._wrappedSource = r.toString(), window._rollbarWrappedError = e), e;\n }\n }, r._rollbar_wrapped._isWrap = !0, r.hasOwnProperty)) for(const t in r)r.hasOwnProperty(t) && (r._rollbar_wrapped[t] = r[t]);\n return r._rollbar_wrapped;\n } catch (e) {\n return r;\n }\n };\n for(let u = \"log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad\".split(\",\"), f = 0; f < u.length; ++f)t.prototype[u[f]] = l(u[f]);\n r.exports = {\n setupShim: a,\n Rollbar: p\n };\n },\n function(r) {\n function o(r, e, o) {\n if (r) {\n let t;\n typeof e._rollbarOldOnError === \"function\" ? t = e._rollbarOldOnError : r.onerror && !r.onerror.belongsToShim && (t = r.onerror, e._rollbarOldOnError = t);\n const a = function() {\n const o = Array.prototype.slice.call(arguments, 0);\n n(r, e, t, o);\n };\n a.belongsToShim = o, r.onerror = a;\n }\n }\n function n(r, e, o, n) {\n r._rollbarWrappedError && (n[4] || (n[4] = r._rollbarWrappedError), n[5] || (n[5] = r._rollbarWrappedError._rollbarContext), r._rollbarWrappedError = null), e.handleUncaughtException.apply(e, n), o && o.apply(r, n);\n }\n function t(r, e, o) {\n if (r) {\n typeof r._rollbarURH === \"function\" && r._rollbarURH.belongsToShim && r.removeEventListener(\"unhandledrejection\", r._rollbarURH);\n const n = function(r) {\n let o;\n let n;\n let t;\n try {\n o = r.reason;\n } catch (r) {\n o = void 0;\n }\n try {\n n = r.promise;\n } catch (r) {\n n = \"[unhandledrejection] error getting `promise` from event\";\n }\n try {\n t = r.detail, !o && t && (o = t.reason, n = t.promise);\n } catch (r) {\n t = \"[unhandledrejection] error getting `detail` from event\";\n }\n o || (o = \"[unhandledrejection] error getting `reason` from event\"), e && e.handleUnhandledRejection && e.handleUnhandledRejection(o, n);\n };\n n.belongsToShim = o, r._rollbarURH = n, r.addEventListener(\"unhandledrejection\", n);\n }\n }\n function a(r, e, o) {\n if (r) {\n let n;\n let t;\n const a = \"EventTarget,Window,Node,ApplicationCache,AudioTrackList,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload\".split(\",\");\n for(n = 0; n < a.length; ++n)t = a[n], r[t] && r[t].prototype && l(e, r[t].prototype, o);\n }\n }\n function l(r, e, o) {\n if (e.hasOwnProperty && e.hasOwnProperty(\"addEventListener\")) {\n for(var n = e.addEventListener; n._rollbarOldAdd && n.belongsToShim;)n = n._rollbarOldAdd;\n const t = function(e, o, t) {\n n.call(this, e, r.wrap(o), t);\n };\n t._rollbarOldAdd = n, t.belongsToShim = o, e.addEventListener = t;\n for(var a = e.removeEventListener; a._rollbarOldRemove && a.belongsToShim;)a = a._rollbarOldRemove;\n const l = function(r, e, o) {\n a.call(this, r, e && e._rollbar_wrapped || e, o);\n };\n l._rollbarOldRemove = a, l.belongsToShim = o, e.removeEventListener = l;\n }\n }\n r.exports = {\n captureUncaughtExceptions: o,\n captureUnhandledRejections: t,\n wrapGlobals: a\n };\n },\n function(r) {\n function o(r, e) {\n this.impl = r(e, this), this.options = e, n(o.prototype);\n }\n function n(r) {\n for(let e = function(r) {\n return function() {\n const e = Array.prototype.slice.call(arguments, 0);\n if (this.impl[r]) return this.impl[r].apply(this.impl, e);\n };\n }, o = \"log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad\".split(\",\"), n = 0; n < o.length; n++)r[o[n]] = e(o[n]);\n }\n o.prototype._swapAndProcessMessages = function(r, e) {\n this.impl = r(this.options);\n for(var o, n, t; o = e.shift();)n = o.method, t = o.args, this[n] && typeof this[n] === \"function\" && (n === \"captureDomContentLoaded\" || n === \"captureLoad\" ? this[n].apply(this, [\n t[0],\n o.ts\n ]) : this[n].apply(this, t));\n return this;\n }, r.exports = o;\n },\n function(r) {\n r.exports = function(r) {\n return function(e) {\n if (!e && !window._rollbarInitialized) {\n r = r || {};\n for(var o, n, t = r.globalAlias || \"Rollbar\", a = window.rollbar, l = function(r) {\n return new a(r);\n }, i = 0; o = window._rollbarShims[i++];)n || (n = o.handler), o.handler._swapAndProcessMessages(l, o.messages);\n window[t] = n, window._rollbarInitialized = !0;\n }\n };\n };\n }\n ]);\n// End Rollbar Snippet\n}\n\n\n/*\nimport e2eInstance from './lib/axios';\ne2eInstance.interceptors.response.use(\n response => {\n const now = Date.now();\n console.log(response);\n\n return response;\n },\n error => Promise.reject(error)\n);\n*/ (0, $gOgWf.configure)({\n enforceActions: false\n}); // strict mode\n/* DISABLE GOOGLE MAPS LOADING FONTS AND REFRESHING PAGE */ const $0f95a7894f653d4a$var$head = document.getElementsByTagName(\"head\")[0];\nconst { insertBefore: $0f95a7894f653d4a$var$insertBefore } = document.head;\ndocument.head.insertBefore = (newElement, referenceElement)=>{\n if (newElement.href && newElement.href.indexOf(\"//fonts.googleapis.com/css?family=Roboto\") > -1) return;\n $0f95a7894f653d4a$var$insertBefore.call($0f95a7894f653d4a$var$head, newElement, referenceElement);\n};\n/* END OF DISABLE GOOGLE MAPS LOADING FONTS AND REFRESHING PAGE */ const $0f95a7894f653d4a$var$rootNode = document.getElementById(\"root\");\nconst $0f95a7894f653d4a$var$root = (0, (/*@__PURE__*/$parcel$interopDefault($94a1820d6644dae9$exports))).createRoot($0f95a7894f653d4a$var$rootNode);\n$0f95a7894f653d4a$var$root.render(/*#__PURE__*/ (0, $4x3bm.jsx)((0, $lM6lR.default), {\n injectFirst: true,\n children: /*#__PURE__*/ (0, $4x3bm.jsxs)((0, $5vXJC.default), {\n theme: (0, $798fe7a4458df1c3$export$2e2bcd8739ae039),\n children: [\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $07bac6c924ea40e1$export$2e2bcd8739ae039), {}),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $111504f542e6f1a6$export$2e2bcd8739ae039), {}),\n /*#__PURE__*/ (0, $4x3bm.jsx)((0, $dsvUQ.BrowserRouter), {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $49502641be0ebafe$export$2e2bcd8739ae039), {\n children: /*#__PURE__*/ (0, $4x3bm.jsx)((0, $7ddcdf8e9d17d380$export$2e2bcd8739ae039), {})\n })\n })\n ]\n })\n}));\n\n\n//# sourceMappingURL=index.c58f6d81.js.map\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1b}return!1}function t(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new t(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new t(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new t(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new t(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new t(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new t(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new t(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new t(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new t(a,5,!1,a.toLowerCase(),null,!1,!1)});var qa=/[\\-:]([a-z])/g;function ra(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(qa,\nra);z[b]=new t(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(qa,ra);z[b]=new t(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(qa,ra);z[b]=new t(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new t(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new t(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new t(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction sa(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Ma=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?La(a):\"\"}\nfunction Oa(a){switch(a.tag){case 5:return La(a.type);case 16:return La(\"Lazy\");case 13:return La(\"Suspense\");case 19:return La(\"SuspenseList\");case 0:case 2:case 15:return a=Na(a.type,!1),a;case 11:return a=Na(a.type.render,!1),a;case 1:return a=Na(a.type,!0),a;default:return\"\"}}\nfunction Pa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case wa:return\"Fragment\";case va:return\"Portal\";case za:return\"Profiler\";case xa:return\"StrictMode\";case Da:return\"Suspense\";case Ea:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ba:return(a.displayName||\"Context\")+\".Consumer\";case Aa:return(a._context.displayName||\"Context\")+\".Provider\";case Ca:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Fa:return b=a.displayName||null,null!==b?b:Pa(a.type)||\"Memo\";case Ga:b=a._payload;a=a._init;try{return Pa(a(b))}catch(c){}}return null}\nfunction Qa(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Pa(b);case 8:return b===xa?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Ra(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Sa(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ta(a){var b=Sa(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Ua(a){a._valueTracker||(a._valueTracker=Ta(a))}function Va(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Sa(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Wa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Xa(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Ya(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Ra(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Za(a,b){b=b.checked;null!=b&&sa(a,\"checked\",b,!1)}\nfunction $a(a,b){Za(a,b);var c=Ra(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Ra(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Wa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var db=Array.isArray;\nfunction eb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=lb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction nb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar ob={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},pb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(ob).forEach(function(a){pb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);ob[b]=ob[a]})});function qb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||ob.hasOwnProperty(a)&&ob[a]?(\"\"+b).trim():b+\"px\"}\nfunction rb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=qb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var sb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction tb(a,b){if(b){if(sb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction ub(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var vb=null;function wb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var xb=null,yb=null,zb=null;\nfunction Ab(a){if(a=Bb(a)){if(\"function\"!==typeof xb)throw Error(p(280));var b=a.stateNode;b&&(b=Cb(b),xb(a.stateNode,a.type,b))}}function Db(a){yb?zb?zb.push(a):zb=[a]:yb=a}function Eb(){if(yb){var a=yb,b=zb;zb=yb=null;Ab(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(oc(a)/pc|0)|0}var qc=64,rc=4194304;\nfunction sc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function tc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=sc(h):(f&=g,0!==f&&(d=sc(f)))}else g=c&~e,0!==g?d=sc(g):0!==f&&(d=sc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction zc(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-nc(b);a[b]=c}function Ac(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=ae),de=String.fromCharCode(32),ee=!1;\nfunction fe(a,b){switch(a){case \"keyup\":return-1!==Zd.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function ge(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var he=!1;function ie(a,b){switch(a){case \"compositionend\":return ge(b);case \"keypress\":if(32!==b.which)return null;ee=!0;return de;case \"textInput\":return a=b.data,a===de&&ee?null:a;default:return null}}\nfunction je(a,b){if(he)return\"compositionend\"===a||!$d&&fe(a,b)?(a=md(),ld=kd=jd=null,he=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ie(c)}}function Ke(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Ke(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Le(){for(var a=window,b=Wa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Wa(a.document)}return b}function Me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Ne(a){var b=Le(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Ke(c.ownerDocument.documentElement,c)){if(null!==d&&Me(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Je(c,f);var g=Je(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Pe=null,Qe=null,Re=null,Se=!1;\nfunction Te(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Se||null==Pe||Pe!==Wa(d)||(d=Pe,\"selectionStart\"in d&&Me(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Re&&He(Re,d)||(Re=d,d=ne(Qe,\"onSelect\"),0Sf||(a.current=Rf[Sf],Rf[Sf]=null,Sf--)}function G(a,b){Sf++;Rf[Sf]=a.current;a.current=b}var Uf={},H=Tf(Uf),Vf=Tf(!1),Wf=Uf;function Xf(a,b){var c=a.type.contextTypes;if(!c)return Uf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Yf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Zf(){E(Vf);E(H)}function $f(a,b,c){if(H.current!==Uf)throw Error(p(168));G(H,b);G(Vf,c)}function ag(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Qa(a)||\"Unknown\",e));return A({},c,d)}\nfunction bg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Uf;Wf=H.current;G(H,a);G(Vf,Vf.current);return!0}function cg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=ag(a,b,Wf),d.__reactInternalMemoizedMergedChildContext=a,E(Vf),E(H),G(H,a)):E(Vf);G(Vf,c)}var dg=null,eg=!1,fg=!1;function gg(a){null===dg?dg=[a]:dg.push(a)}function hg(a){eg=!0;gg(a)}\nfunction ig(){if(!fg&&null!==dg){fg=!0;var a=0,b=C;try{var c=dg;for(C=1;a>=g;e-=g;Yg=1<<32-nc(b)+e|c<m?(x=r,r=null):x=r.sibling;var v=q(e,r,h[m],k);if(null===v){null===r&&(r=x);break}a&&r&&null===v.alternate&&b(e,r);g=f(v,g,m);null===n?l=v:n.sibling=v;n=v;r=x}if(m===h.length)return c(e,r),I&&$g(e,m),l;if(null===r){for(;mr?(x=m,m=null):x=m.sibling;var w=q(e,m,v.value,k);if(null===w){null===m&&(m=x);break}a&&m&&null===w.alternate&&b(e,m);g=f(w,g,r);null===n?l=w:n.sibling=w;n=w;m=x}if(v.done)return c(e,\nm),I&&$g(e,r),l;if(null===m){for(;!v.done;r++,v=h.next())v=u(e,v.value,k),null!==v&&(g=f(v,g,r),null===n?l=v:n.sibling=v,n=v);I&&$g(e,r);return l}for(m=d(e,m);!v.done;r++,v=h.next())v=y(m,e,r,v.value,k),null!==v&&(a&&null!==v.alternate&&m.delete(null===v.key?r:v.key),g=f(v,g,r),null===n?l=v:n.sibling=v,n=v);a&&m.forEach(function(a){return b(e,a)});I&&$g(e,r);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===wa&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case ua:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===wa){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ga&&rh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=ph(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===wa?(d=xh(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=vh(f.type,f.key,f.props,null,a.mode,h),h.ref=ph(a,d,f),h.return=a,a=h)}return g(a);case va:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=wh(f,a.mode,h);d.return=a;a=d}return g(a);case Ga:return l=f._init,J(a,d,l(f._payload),h)}if(db(f))return m(a,d,f,h);if(Ja(f))return w(a,d,f,h);qh(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=uh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var yh=sh(!0),zh=sh(!1),Ah={},Bh=Tf(Ah),Ch=Tf(Ah),Dh=Tf(Ah);function Eh(a){if(a===Ah)throw Error(p(174));return a}function Fh(a,b){G(Dh,b);G(Ch,a);G(Bh,Ah);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:kb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=kb(b,a)}E(Bh);G(Bh,b)}function Gh(){E(Bh);E(Ch);E(Dh)}\nfunction Hh(a){Eh(Dh.current);var b=Eh(Bh.current);var c=kb(b,a.type);b!==c&&(G(Ch,a),G(Bh,c))}function Ih(a){Ch.current===a&&(E(Bh),E(Ch))}var K=Tf(0);\nfunction Jh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Kh=[];\nfunction Lh(){for(var a=0;ac?c:4;a(!0);var d=Nh.transition;Nh.transition={};try{a(!1),b()}finally{C=c,Nh.transition=d}}function Bi(){return ai().memoizedState}\nfunction Ci(a,b,c){var d=Kg(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};Di(a)?Ei(b,c):(Fi(a,b,c),c=Jg(),a=Lg(a,d,c),null!==a&&Gi(a,b,d))}\nfunction ni(a,b,c){var d=Kg(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Di(a))Ei(b,e);else{Fi(a,b,e);var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(Ge(h,g))return}catch(k){}finally{}c=Jg();a=Lg(a,d,c);null!==a&&Gi(a,b,d)}}function Di(a){var b=a.alternate;return a===L||null!==b&&b===L}\nfunction Ei(a,b){Qh=Ph=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Fi(a,b,c){Bg(a)?(a=b.interleaved,null===a?(c.next=c,null===vg?vg=[b]:vg.push(b)):(c.next=a.next,a.next=c),b.interleaved=c):(a=b.pending,null===a?c.next=c:(c.next=a.next,a.next=c),b.pending=c)}function Gi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Bc(a,c)}}\nvar Yh={readContext:ug,useCallback:O,useContext:O,useEffect:O,useImperativeHandle:O,useInsertionEffect:O,useLayoutEffect:O,useMemo:O,useReducer:O,useRef:O,useState:O,useDebugValue:O,useDeferredValue:O,useTransition:O,useMutableSource:O,useSyncExternalStore:O,useId:O,unstable_isNewReconciler:!1},Vh={readContext:ug,useCallback:function(a,b){$h().memoizedState=[a,void 0===b?null:b];return a},useContext:ug,useEffect:ri,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return pi(4194308,\n4,ui.bind(null,b,a),c)},useLayoutEffect:function(a,b){return pi(4194308,4,a,b)},useInsertionEffect:function(a,b){return pi(4,2,a,b)},useMemo:function(a,b){var c=$h();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=$h();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Ci.bind(null,L,a);return[d.memoizedState,a]},useRef:function(a){var b=\n$h();a={current:a};return b.memoizedState=a},useState:mi,useDebugValue:wi,useDeferredValue:function(a){return $h().memoizedState=a},useTransition:function(){var a=mi(!1),b=a[0];a=Ai.bind(null,a[1]);$h().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=L,e=$h();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===P)throw Error(p(349));0!==(Oh&30)||ki(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;ri(hi.bind(null,d,\nf,a),[a]);d.flags|=2048;ii(9,ji.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=$h(),b=P.identifierPrefix;if(I){var c=Zg;var d=Yg;c=(d&~(1<<32-nc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Rh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Nf]=b;a[Of]=d;Ti(a,b,!1,!1);b.stateNode=a;a:{g=ub(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eaj&&(b.flags|=\n128,d=!0,Xi(f,!1),b.lanes=4194304)}else{if(!d)if(a=Jh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Xi(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return Q(b),null}else 2*B()-f.renderingStartTime>aj&&1073741824!==c&&(b.flags|=128,d=!0,Xi(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=b,f.tail=b.sibling,f.renderingStartTime=\nB(),b.sibling=null,c=K.current,G(K,d?c&1|2:c&1),b;Q(b);return null;case 22:case 23:return bj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(cj&1073741824)&&(Q(b),b.subtreeFlags&6&&(b.flags|=8192)):Q(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}var dj=ta.ReactCurrentOwner,tg=!1;function ej(a,b,c,d){b.child=null===a?zh(b,null,c,d):yh(b,a.child,c,d)}\nfunction fj(a,b,c,d,e){c=c.render;var f=b.ref;sg(b,e);d=Uh(a,b,c,d,f,e);c=Zh();if(null!==a&&!tg)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,gj(a,b,e);I&&c&&bh(b);b.flags|=1;ej(a,b,d,e);return b.child}\nfunction hj(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!ij(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,jj(a,b,f,d,e);a=vh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:He;if(c(g,d)&&a.ref===b.ref)return gj(a,b,e)}b.flags|=1;a=th(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction jj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(He(f,d)&&a.ref===b.ref)if(tg=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(tg=!0);else return b.lanes=a.lanes,gj(a,b,e)}return kj(a,b,c,d,e)}\nfunction lj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(mj,cj),cj|=c;else if(0!==(c&1073741824))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},d=null!==f?f.baseLanes:c,G(mj,cj),cj|=d;else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(mj,cj),cj|=a,null;\nelse null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(mj,cj),cj|=d;ej(a,b,e,c);return b.child}function nj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function kj(a,b,c,d,e){var f=Yf(c)?Wf:H.current;f=Xf(b,f);sg(b,e);c=Uh(a,b,c,d,f,e);d=Zh();if(null!==a&&!tg)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,gj(a,b,e);I&&d&&bh(b);b.flags|=1;ej(a,b,c,e);return b.child}\nfunction oj(a,b,c,d,e){if(Yf(c)){var f=!0;bg(b)}else f=!1;sg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Og(b,c,d),Qg(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=ug(l):(l=Yf(c)?Wf:H.current,l=Xf(b,l));var n=c.getDerivedStateFromProps,u=\"function\"===typeof n||\"function\"===typeof g.getSnapshotBeforeUpdate;u||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Pg(b,g,d,l);wg=!1;var q=b.memoizedState;g.state=q;Eg(b,d,g,e);k=b.memoizedState;h!==d||q!==k||Vf.current||wg?(\"function\"===typeof n&&(Ig(b,c,n,d),k=b.memoizedState),(h=wg||Ng(b,c,h,d,q,k,l))?(u||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4194308)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;yg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:kg(b.type,h);g.props=l;u=b.pendingProps;q=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=ug(k):(k=Yf(c)?Wf:H.current,k=Xf(b,k));var y=c.getDerivedStateFromProps;(n=\"function\"===\ntypeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==u||q!==k)&&Pg(b,g,d,k);wg=!1;q=b.memoizedState;g.state=q;Eg(b,d,g,e);var m=b.memoizedState;h!==u||q!==m||Vf.current||wg?(\"function\"===typeof y&&(Ig(b,c,y,d),m=b.memoizedState),(l=wg||Ng(b,c,l,d,q,m,k)||!1)?(n||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&\ng.componentWillUpdate(d,m,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,m,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&q===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&q===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=m),g.props=d,g.state=m,g.context=\nk,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&q===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&q===a.memoizedState||(b.flags|=1024),d=!1)}return pj(a,b,c,d,f,e)}\nfunction pj(a,b,c,d,e,f){nj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&cg(b,c,!1),gj(a,b,f);d=b.stateNode;dj.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=yh(b,a.child,null,f),b.child=yh(b,null,h,f)):ej(a,b,h,f);b.memoizedState=d.state;e&&cg(b,c,!0);return b.child}function qj(a){var b=a.stateNode;b.pendingContext?$f(a,b.pendingContext,b.pendingContext!==b.context):b.context&&$f(a,b.context,!1);Fh(a,b.containerInfo)}\nfunction rj(a,b,c,d,e){nh();oh(e);b.flags|=256;ej(a,b,c,d);return b.child}var sj={dehydrated:null,treeContext:null,retryLane:0};function tj(a){return{baseLanes:a,cachePool:null,transitions:null}}function uj(a,b){return{baseLanes:a.baseLanes|b,cachePool:null,transitions:a.transitions}}\nfunction vj(a,b,c){var d=b.pendingProps,e=K.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(K,e&1);if(null===a){kh(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;e=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,e={mode:\"hidden\",children:e},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ne):f=wj(e,d,0,null),a=xh(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=tj(c),b.memoizedState=sj,a):xj(b,e)}e=a.memoizedState;if(null!==e){h=e.dehydrated;if(null!==h){if(g){if(b.flags&256)return b.flags&=-257,yj(a,b,c,Error(p(422)));if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=wj({mode:\"visible\",children:d.children},e,0,null);f=xh(f,e,c,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&yh(b,a.child,\nnull,c);b.child.memoizedState=tj(c);b.memoizedState=sj;return f}if(0===(b.mode&1))b=yj(a,b,c,null);else if(\"$!\"===h.data)b=yj(a,b,c,Error(p(419)));else if(d=0!==(c&a.childLanes),tg||d){d=P;if(null!==d){switch(c&-c){case 4:f=2;break;case 16:f=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:f=32;break;case 536870912:f=\n268435456;break;default:f=0}d=0!==(f&(d.suspendedLanes|c))?0:f;0!==d&&d!==e.retryLane&&(e.retryLane=d,Lg(a,d,-1))}$i();b=yj(a,b,c,Error(p(421)))}else\"$?\"===h.data?(b.flags|=128,b.child=a.child,b=zj.bind(null,a),h._reactRetry=b,b=null):(c=e.treeContext,eh=Kf(h.nextSibling),dh=b,I=!0,fh=null,null!==c&&(Vg[Wg++]=Yg,Vg[Wg++]=Zg,Vg[Wg++]=Xg,Yg=c.id,Zg=c.overflow,Xg=b),b=xj(b,b.pendingProps.children),b.flags|=4096);return b}if(f)return d=Aj(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,\nf.memoizedState=null===e?tj(c):uj(e,c),f.childLanes=a.childLanes&~c,b.memoizedState=sj,d;c=Bj(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=Aj(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?tj(c):uj(e,c),f.childLanes=a.childLanes&~c,b.memoizedState=sj,d;c=Bj(a,b,d.children,c);b.memoizedState=null;return c}function xj(a,b){b=wj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}\nfunction Bj(a,b,c,d){var e=a.child;a=e.sibling;c=th(e,{mode:\"visible\",children:c});0===(b.mode&1)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(d=b.deletions,null===d?(b.deletions=[a],b.flags|=16):d.push(a));return b.child=c}\nfunction Aj(a,b,c,d,e){var f=b.mode;a=a.child;var g=a.sibling,h={mode:\"hidden\",children:c};0===(f&1)&&b.child!==a?(c=b.child,c.childLanes=0,c.pendingProps=h,b.deletions=null):(c=th(a,h),c.subtreeFlags=a.subtreeFlags&14680064);null!==g?d=th(g,d):(d=xh(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function yj(a,b,c,d){null!==d&&oh(d);yh(b,a.child,null,c);a=xj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction Cj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);rg(a.return,b,c)}function Dj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction Ej(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;ej(a,b,d.children,c);d=K.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&Cj(a,c,b);else if(19===a.tag)Cj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(K,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Jh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);Dj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Jh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}Dj(b,!0,c,null,f);break;case \"together\":Dj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction gj(a,b,c){null!==a&&(b.dependencies=a.dependencies);Fg|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=th(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=th(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction Fj(a,b,c){switch(b.tag){case 3:qj(b);nh();break;case 5:Hh(b);break;case 1:Yf(b.type)&&bg(b);break;case 4:Fh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(lg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(K,K.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return vj(a,b,c);G(K,K.current&1);a=gj(a,b,c);return null!==a?a.sibling:null}G(K,K.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return Ej(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(K,K.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,lj(a,b,c)}return gj(a,b,c)}\nfunction Gj(a,b){ch(b);switch(b.tag){case 1:return Yf(b.type)&&Zf(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Gh(),E(Vf),E(H),Lh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Ih(b),null;case 13:E(K);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));nh()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(K),null;case 4:return Gh(),null;case 10:return qg(b.type._context),null;case 22:case 23:return bj(),\nnull;case 24:return null;default:return null}}var Hj=!1,S=!1,Ij=\"function\"===typeof WeakSet?WeakSet:Set,T=null;function Jj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){U(a,b,d)}else c.current=null}function Kj(a,b,c){try{c()}catch(d){U(a,b,d)}}var Lj=!1;\nfunction Mj(a,b){Bf=cd;a=Le();if(Me(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(Z){c=null;break a}var g=0,h=-1,k=-1,l=0,n=0,u=a,q=null;b:for(;;){for(var y;;){u!==c||0!==e&&3!==u.nodeType||(h=g+e);u!==f||0!==d&&3!==u.nodeType||(k=g+d);3===u.nodeType&&(g+=\nu.nodeValue.length);if(null===(y=u.firstChild))break;q=u;u=y}for(;;){if(u===a)break b;q===c&&++l===e&&(h=g);q===f&&++n===d&&(k=g);if(null!==(y=u.nextSibling))break;u=q;q=u.parentNode}u=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Cf={focusedElem:a,selectionRange:c};cd=!1;for(T=b;null!==T;)if(b=T,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,T=a;else for(;null!==T;){b=T;try{var m=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==m){var w=m.memoizedProps,J=m.memoizedState,v=b.stateNode,x=v.getSnapshotBeforeUpdate(b.elementType===b.type?w:kg(b.type,w),J);v.__reactInternalSnapshotBeforeUpdate=x}break;case 3:var r=b.stateNode.containerInfo;if(1===r.nodeType)r.textContent=\"\";else if(9===r.nodeType){var F=r.body;null!=F&&(F.textContent=\"\")}break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(Z){U(b,b.return,Z)}a=b.sibling;if(null!==a){a.return=b.return;T=a;break}T=b.return}m=Lj;Lj=!1;return m}\nfunction Nj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Kj(b,c,f)}e=e.next}while(e!==d)}}function Oj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Pj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Qj(a){var b=a.alternate;null!==b&&(a.alternate=null,Qj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Nf],delete b[Of],delete b[nf],delete b[Pf],delete b[Qf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Rj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Sj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Rj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Tj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Af));else if(4!==d&&(a=a.child,null!==a))for(Tj(a,b,c),a=a.sibling;null!==a;)Tj(a,b,c),a=a.sibling}\nfunction Uj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Uj(a,b,c),a=a.sibling;null!==a;)Uj(a,b,c),a=a.sibling}var V=null,Vj=!1;function Wj(a,b,c){for(c=c.child;null!==c;)Xj(a,b,c),c=c.sibling}\nfunction Xj(a,b,c){if(kc&&\"function\"===typeof kc.onCommitFiberUnmount)try{kc.onCommitFiberUnmount(jc,c)}catch(h){}switch(c.tag){case 5:S||Jj(c,b);case 6:var d=V,e=Vj;V=null;Wj(a,b,c);V=d;Vj=e;null!==V&&(Vj?(a=V,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):V.removeChild(c.stateNode));break;case 18:null!==V&&(Vj?(a=V,c=c.stateNode,8===a.nodeType?Jf(a.parentNode,c):1===a.nodeType&&Jf(a,c),ad(a)):Jf(V,c.stateNode));break;case 4:d=V;e=Vj;V=c.stateNode.containerInfo;Vj=!0;\nWj(a,b,c);V=d;Vj=e;break;case 0:case 11:case 14:case 15:if(!S&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Kj(c,b,g):0!==(f&4)&&Kj(c,b,g));e=e.next}while(e!==d)}Wj(a,b,c);break;case 1:if(!S&&(Jj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){U(c,b,h)}Wj(a,b,c);break;case 21:Wj(a,b,c);break;case 22:c.mode&1?(S=(d=S)||null!==\nc.memoizedState,Wj(a,b,c),S=d):Wj(a,b,c);break;default:Wj(a,b,c)}}function Yj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ij);b.forEach(function(b){var d=Zj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ak(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*jk(d/1960))-d;if(10a?16:a;if(null===uk)var d=!1;else{a=uk;uk=null;vk=0;if(0!==(W&6))throw Error(p(331));var e=W;W|=4;for(T=a.current;null!==T;){var f=T,g=f.child;if(0!==(T.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-dk?Jk(a,0):pk|=c);Ck(a,b)}function Xk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=rc,rc<<=1,0===(rc&130023424)&&(rc=4194304)));var c=Jg();a=Ak(a,b);null!==a&&(zc(a,b,c),Ck(a,c))}function zj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Xk(a,c)}\nfunction Zj(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Xk(a,c)}var Uk;\nUk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Vf.current)tg=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return tg=!1,Fj(a,b,c);tg=0!==(a.flags&131072)?!0:!1}else tg=!1,I&&0!==(b.flags&1048576)&&ah(b,Ug,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;var e=Xf(b,H.current);sg(b,c);e=Uh(null,b,d,a,e,c);var f=Zh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?\n(b.tag=1,b.memoizedState=null,b.updateQueue=null,Yf(d)?(f=!0,bg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,xg(b),e.updater=Mg,b.stateNode=e,e._reactInternals=b,Qg(b,d,a,c),b=pj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&bh(b),ej(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Yk(d);a=kg(d,a);switch(e){case 0:b=kj(null,b,d,a,c);break a;case 1:b=oj(null,b,\nd,a,c);break a;case 11:b=fj(null,b,d,a,c);break a;case 14:b=hj(null,b,d,kg(d.type,a),c);break a}throw Error(p(306,d,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:kg(d,e),kj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:kg(d,e),oj(a,b,d,e,c);case 3:a:{qj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;yg(a,b);Eg(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,\ncache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=f,b.memoizedState=f,b.flags&256){e=Error(p(423));b=rj(a,b,d,c,e);break a}else if(d!==e){e=Error(p(424));b=rj(a,b,d,c,e);break a}else for(eh=Kf(b.stateNode.containerInfo.firstChild),dh=b,I=!0,fh=null,c=zh(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{nh();if(d===e){b=gj(a,b,c);break a}ej(a,b,d,c)}b=b.child}return b;case 5:return Hh(b),null===a&&kh(b),d=b.type,e=\nb.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Df(d,e)?g=null:null!==f&&Df(d,f)&&(b.flags|=32),nj(a,b),ej(a,b,g,c),b.child;case 6:return null===a&&kh(b),null;case 13:return vj(a,b,c);case 4:return Fh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=yh(b,null,d,c):ej(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:kg(d,e),fj(a,b,d,e,c);case 7:return ej(a,b,b.pendingProps,c),b.child;case 8:return ej(a,b,b.pendingProps.children,c),b.child;case 12:return ej(a,\nb,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;g=e.value;G(lg,d._currentValue);d._currentValue=g;if(null!==f)if(Ge(f.value,g)){if(f.children===e.children&&!Vf.current){b=gj(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=zg(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var n=l.pending;null===n?k.next=\nk:(k.next=n.next,n.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);rg(f.return,c,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);rg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}ej(a,b,e.children,c);b=b.child}return b;\ncase 9:return e=b.type,d=b.pendingProps.children,sg(b,c),e=ug(e),d=d(e),b.flags|=1,ej(a,b,d,c),b.child;case 14:return d=b.type,e=kg(d,b.pendingProps),e=kg(d.type,e),hj(a,b,d,e,c);case 15:return jj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:kg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Yf(d)?(a=!0,bg(b)):a=!1,sg(b,c),Og(b,d,e),Qg(b,d,e,c),pj(null,b,d,!0,a,c);case 19:return Ej(a,b,c);case 22:return lj(a,b,c)}throw Error(p(156,\nb.tag));};function Ek(a,b){return $b(a,b)}function Zk(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function hh(a,b,c,d){return new Zk(a,b,c,d)}\nfunction ij(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Yk(a){if(\"function\"===typeof a)return ij(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Ca)return 11;if(a===Fa)return 14}return 2}\nfunction th(a,b){var c=a.alternate;null===c?(c=hh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction vh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ij(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case wa:return xh(c.children,e,f,b);case xa:g=8;e|=8;break;case za:return a=hh(12,c,b,e|2),a.elementType=za,a.lanes=f,a;case Da:return a=hh(13,c,b,e),a.elementType=Da,a.lanes=f,a;case Ea:return a=hh(19,c,b,e),a.elementType=Ea,a.lanes=f,a;case Ha:return wj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Aa:g=10;break a;case Ba:g=9;break a;case Ca:g=11;\nbreak a;case Fa:g=14;break a;case Ga:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=hh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function xh(a,b,c,d){a=hh(7,a,d,b);a.lanes=c;return a}function wj(a,b,c,d){a=hh(22,a,d,b);a.elementType=Ha;a.lanes=c;a.stateNode={};return a}function uh(a,b,c){a=hh(6,a,null,b);a.lanes=c;return a}\nfunction wh(a,b,c){b=hh(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction $k(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=yc(0);this.expirationTimes=yc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=yc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function al(a,b,c,d,e,f,g,h,k){a=new $k(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=hh(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};xg(f);return a}function bl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","import { Router, __RouterContext, matchPath } from 'react-router';\nexport * from 'react-router';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport { createBrowserHistory, createHashHistory, createLocation } from 'history';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport invariant from 'tiny-invariant';\n\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createBrowserHistory(_this.props);\n return _this;\n }\n\n var _proto = BrowserRouter.prototype;\n\n _proto.render = function render() {\n return React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\") : void 0;\n };\n}\n\n/**\n * The public API for a that uses window.location.hash.\n */\n\nvar HashRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(HashRouter, _React$Component);\n\n function HashRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createHashHistory(_this.props);\n return _this;\n }\n\n var _proto = HashRouter.prototype;\n\n _proto.render = function render() {\n return React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return HashRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { HashRouter as Router }`.\") : void 0;\n };\n}\n\nvar resolveToLocation = function resolveToLocation(to, currentLocation) {\n return typeof to === \"function\" ? to(currentLocation) : to;\n};\nvar normalizeToLocation = function normalizeToLocation(to, currentLocation) {\n return typeof to === \"string\" ? createLocation(to, null, null, currentLocation) : to;\n};\n\nvar forwardRefShim = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar LinkAnchor = forwardRef(function (_ref, forwardedRef) {\n var innerRef = _ref.innerRef,\n navigate = _ref.navigate,\n _onClick = _ref.onClick,\n rest = _objectWithoutPropertiesLoose(_ref, [\"innerRef\", \"navigate\", \"onClick\"]);\n\n var target = rest.target;\n\n var props = _extends({}, rest, {\n onClick: function onClick(event) {\n try {\n if (_onClick) _onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && ( // ignore everything but left clicks\n !target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n }); // React 15 compat\n\n\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n return React.createElement(\"a\", props);\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n/**\n * The public API for rendering a history-aware .\n */\n\n\nvar Link = forwardRef(function (_ref2, forwardedRef) {\n var _ref2$component = _ref2.component,\n component = _ref2$component === void 0 ? LinkAnchor : _ref2$component,\n replace = _ref2.replace,\n to = _ref2.to,\n innerRef = _ref2.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref2, [\"component\", \"replace\", \"to\", \"innerRef\"]);\n\n return React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var history = context.history;\n var location = normalizeToLocation(resolveToLocation(to, context.location), context.location);\n var href = location ? history.createHref(location) : \"\";\n\n var props = _extends({}, rest, {\n href: href,\n navigate: function navigate() {\n var location = resolveToLocation(to, context.location);\n var method = replace ? history.replace : history.push;\n method(location);\n }\n }); // React 15 compat\n\n\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n });\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n var toType = PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.func]);\n var refType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.shape({\n current: PropTypes.any\n })]);\n Link.displayName = \"Link\";\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nvar forwardRefShim$1 = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef$1 = React.forwardRef;\n\nif (typeof forwardRef$1 === \"undefined\") {\n forwardRef$1 = forwardRefShim$1;\n}\n\nfunction joinClassnames() {\n for (var _len = arguments.length, classnames = new Array(_len), _key = 0; _key < _len; _key++) {\n classnames[_key] = arguments[_key];\n }\n\n return classnames.filter(function (i) {\n return i;\n }).join(\" \");\n}\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\n\n\nvar NavLink = forwardRef$1(function (_ref, forwardedRef) {\n var _ref$ariaCurrent = _ref[\"aria-current\"],\n ariaCurrent = _ref$ariaCurrent === void 0 ? \"page\" : _ref$ariaCurrent,\n _ref$activeClassName = _ref.activeClassName,\n activeClassName = _ref$activeClassName === void 0 ? \"active\" : _ref$activeClassName,\n activeStyle = _ref.activeStyle,\n classNameProp = _ref.className,\n exact = _ref.exact,\n isActiveProp = _ref.isActive,\n locationProp = _ref.location,\n strict = _ref.strict,\n styleProp = _ref.style,\n to = _ref.to,\n innerRef = _ref.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref, [\"aria-current\", \"activeClassName\", \"activeStyle\", \"className\", \"exact\", \"isActive\", \"location\", \"strict\", \"style\", \"to\", \"innerRef\"]);\n\n return React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var currentLocation = locationProp || context.location;\n var toLocation = normalizeToLocation(resolveToLocation(to, currentLocation), currentLocation);\n var path = toLocation.pathname; // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n var match = escapedPath ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact: exact,\n strict: strict\n }) : null;\n var isActive = !!(isActiveProp ? isActiveProp(match, currentLocation) : match);\n var className = isActive ? joinClassnames(classNameProp, activeClassName) : classNameProp;\n var style = isActive ? _extends({}, styleProp, {}, activeStyle) : styleProp;\n\n var props = _extends({\n \"aria-current\": isActive && ariaCurrent || null,\n className: className,\n style: style,\n to: toLocation\n }, rest); // React 15 compat\n\n\n if (forwardRefShim$1 !== forwardRef$1) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(Link, props);\n });\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n NavLink.displayName = \"NavLink\";\n var ariaCurrentType = PropTypes.oneOf([\"page\", \"step\", \"location\", \"date\", \"time\", \"true\"]);\n NavLink.propTypes = _extends({}, Link.propTypes, {\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n strict: PropTypes.bool,\n style: PropTypes.object\n });\n}\n\nexport { BrowserRouter, HashRouter, Link, NavLink };\n//# sourceMappingURL=react-router-dom.js.map\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport { resolveToLocation, normalizeToLocation } from \"./utils/locationUtils\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const method = replace ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link\";\nimport { resolveToLocation, normalizeToLocation } from \"./utils/locationUtils\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\",\n activeStyle,\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n const className = isActive\n ? joinClassnames(classNameProp, activeClassName)\n : classNameProp;\n const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n strict: PropTypes.bool,\n style: PropTypes.object\n };\n}\n\nexport default NavLink;\n","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { createMemoryHistory, createLocation, locationsAreEqual, createPath } from 'history';\nimport warning from 'tiny-warning';\nimport createContext from 'mini-create-react-context';\nimport invariant from 'tiny-invariant';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport pathToRegexp from 'path-to-regexp';\nimport { isValidElementType } from 'react-is';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport hoistStatics from 'hoist-non-react-statics';\n\n// TODO: Replace with React.createContext once we can assume React 16+\n\nvar createNamedContext = function createNamedContext(name) {\n var context = createContext();\n context.displayName = name;\n return context;\n};\n\nvar context =\n/*#__PURE__*/\ncreateNamedContext(\"Router\");\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Router, _React$Component);\n\n Router.computeRootMatch = function computeRootMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n function Router(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n location: props.history.location\n }; // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n\n _this._isMounted = false;\n _this._pendingLocation = null;\n\n if (!props.staticContext) {\n _this.unlisten = props.history.listen(function (location) {\n if (_this._isMounted) {\n _this.setState({\n location: location\n });\n } else {\n _this._pendingLocation = location;\n }\n });\n }\n\n return _this;\n }\n\n var _proto = Router.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({\n location: this._pendingLocation\n });\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n };\n\n _proto.render = function render() {\n return React.createElement(context.Provider, {\n children: this.props.children || null,\n value: {\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }\n });\n };\n\n return Router;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(prevProps.history === this.props.history, \"You cannot change \") : void 0;\n };\n}\n\n/**\n * The public API for a that stores location in memory.\n */\n\nvar MemoryRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(MemoryRouter, _React$Component);\n\n function MemoryRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createMemoryHistory(_this.props);\n return _this;\n }\n\n var _proto = MemoryRouter.prototype;\n\n _proto.render = function render() {\n return React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return MemoryRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\") : void 0;\n };\n}\n\nvar Lifecycle =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Lifecycle, _React$Component);\n\n function Lifecycle() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Lifecycle.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n };\n\n _proto.render = function render() {\n return null;\n };\n\n return Lifecycle;\n}(React.Component);\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\n\nfunction Prompt(_ref) {\n var message = _ref.message,\n _ref$when = _ref.when,\n when = _ref$when === void 0 ? true : _ref$when;\n return React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n if (!when || context.staticContext) return null;\n var method = context.history.block;\n return React.createElement(Lifecycle, {\n onMount: function onMount(self) {\n self.release = method(message);\n },\n onUpdate: function onUpdate(self, prevProps) {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n },\n onUnmount: function onUnmount(self) {\n self.release();\n },\n message: message\n });\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n var messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n Prompt.propTypes = {\n when: PropTypes.bool,\n message: messageType.isRequired\n };\n}\n\nvar cache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n var generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\n\n\nfunction generatePath(path, params) {\n if (path === void 0) {\n path = \"/\";\n }\n\n if (params === void 0) {\n params = {};\n }\n\n return path === \"/\" ? path : compilePath(path)(params, {\n pretty: true\n });\n}\n\n/**\n * The public API for navigating programmatically with a component.\n */\n\nfunction Redirect(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to,\n _ref$push = _ref.push,\n push = _ref$push === void 0 ? false : _ref$push;\n return React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var history = context.history,\n staticContext = context.staticContext;\n var method = push ? history.push : history.replace;\n var location = createLocation(computedMatch ? typeof to === \"string\" ? generatePath(to, computedMatch.params) : _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n }) : to); // When rendering in a static context,\n // set the new location immediately.\n\n if (staticContext) {\n method(location);\n return null;\n }\n\n return React.createElement(Lifecycle, {\n onMount: function onMount() {\n method(location);\n },\n onUpdate: function onUpdate(self, prevProps) {\n var prevLocation = createLocation(prevProps.to);\n\n if (!locationsAreEqual(prevLocation, _extends({}, location, {\n key: prevLocation.key\n }))) {\n method(location);\n }\n },\n to: to\n });\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nvar cache$1 = {};\nvar cacheLimit$1 = 10000;\nvar cacheCount$1 = 0;\n\nfunction compilePath$1(path, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var pathCache = cache$1[cacheKey] || (cache$1[cacheKey] = {});\n if (pathCache[path]) return pathCache[path];\n var keys = [];\n var regexp = pathToRegexp(path, keys, options);\n var result = {\n regexp: regexp,\n keys: keys\n };\n\n if (cacheCount$1 < cacheLimit$1) {\n pathCache[path] = result;\n cacheCount$1++;\n }\n\n return result;\n}\n/**\n * Public API for matching a URL pathname to a path.\n */\n\n\nfunction matchPath(pathname, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = {\n path: options\n };\n }\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === void 0 ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === void 0 ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === void 0 ? false : _options$sensitive;\n var paths = [].concat(path);\n return paths.reduce(function (matched, path) {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n var _compilePath = compilePath$1(path, {\n end: exact,\n strict: strict,\n sensitive: sensitive\n }),\n regexp = _compilePath.regexp,\n keys = _compilePath.keys;\n\n var match = regexp.exec(pathname);\n if (!match) return null;\n var url = match[0],\n values = match.slice(1);\n var isExact = pathname === url;\n if (exact && !isExact) return null;\n return {\n path: path,\n // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url,\n // the matched portion of the URL\n isExact: isExact,\n // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n var value = children(props);\n process.env.NODE_ENV !== \"production\" ? warning(value !== undefined, \"You returned `undefined` from the `children` function of \" + (\", but you \") + \"should have returned a React element or `null`\") : void 0;\n return value || null;\n}\n/**\n * The public API for matching a single path and rendering.\n */\n\n\nvar Route =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Route, _React$Component);\n\n function Route() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Route.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return React.createElement(context.Consumer, null, function (context$1) {\n !context$1 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var location = _this.props.location || context$1.location;\n var match = _this.props.computedMatch ? _this.props.computedMatch // already computed the match for us\n : _this.props.path ? matchPath(location.pathname, _this.props) : context$1.match;\n\n var props = _extends({}, context$1, {\n location: location,\n match: match\n });\n\n var _this$props = _this.props,\n children = _this$props.children,\n component = _this$props.component,\n render = _this$props.render; // Preact uses an empty array as children by\n // default, so use null if that's the case.\n\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return React.createElement(context.Provider, {\n value: props\n }, props.match ? children ? typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : children : component ? React.createElement(component, props) : render ? render(props) : null : typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : null);\n });\n };\n\n return Route;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: function component(props, propName) {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\"Invalid prop 'component' supplied to 'Route': the prop is not a valid React component\");\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.component), \"You should not use and in the same route; will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.render), \"You should not use and in the same route; will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.component && this.props.render), \"You should not use and in the same route; will be ignored\") : void 0;\n };\n\n Route.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n return _extends({}, location, {\n pathname: addLeadingSlash(basename) + location.pathname\n });\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n var base = addLeadingSlash(basename);\n if (location.pathname.indexOf(base) !== 0) return location;\n return _extends({}, location, {\n pathname: location.pathname.substr(base.length)\n });\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return function () {\n process.env.NODE_ENV !== \"production\" ? invariant(false, \"You cannot %s with \", methodName) : invariant(false) ;\n };\n}\n\nfunction noop() {}\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\n\n\nvar StaticRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(StaticRouter, _React$Component);\n\n function StaticRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.handlePush = function (location) {\n return _this.navigateTo(location, \"PUSH\");\n };\n\n _this.handleReplace = function (location) {\n return _this.navigateTo(location, \"REPLACE\");\n };\n\n _this.handleListen = function () {\n return noop;\n };\n\n _this.handleBlock = function () {\n return noop;\n };\n\n return _this;\n }\n\n var _proto = StaticRouter.prototype;\n\n _proto.navigateTo = function navigateTo(location, action) {\n var _this$props = this.props,\n _this$props$basename = _this$props.basename,\n basename = _this$props$basename === void 0 ? \"\" : _this$props$basename,\n _this$props$context = _this$props.context,\n context = _this$props$context === void 0 ? {} : _this$props$context;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n _this$props2$basename = _this$props2.basename,\n basename = _this$props2$basename === void 0 ? \"\" : _this$props2$basename,\n _this$props2$context = _this$props2.context,\n context = _this$props2$context === void 0 ? {} : _this$props2$context,\n _this$props2$location = _this$props2.location,\n location = _this$props2$location === void 0 ? \"/\" : _this$props2$location,\n rest = _objectWithoutPropertiesLoose(_this$props2, [\"basename\", \"context\", \"location\"]);\n\n var history = {\n createHref: function createHref(path) {\n return addLeadingSlash(basename + createURL(path));\n },\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n return React.createElement(Router, _extends({}, rest, {\n history: history,\n staticContext: context\n }));\n };\n\n return StaticRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\") : void 0;\n };\n}\n\n/**\n * The public API for rendering the first that matches.\n */\n\nvar Switch =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Switch, _React$Component);\n\n function Switch() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Switch.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var location = _this.props.location || context.location;\n var element, match; // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n\n React.Children.forEach(_this.props.children, function (child) {\n if (match == null && React.isValidElement(child)) {\n element = child;\n var path = child.props.path || child.props.from;\n match = path ? matchPath(location.pathname, _extends({}, child.props, {\n path: path\n })) : context.match;\n }\n });\n return match ? React.cloneElement(element, {\n location: location,\n computedMatch: match\n }) : null;\n });\n };\n\n return Switch;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\n\n/**\n * A public higher-order component to access the imperative API\n */\n\nfunction withRouter(Component) {\n var displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n\n var C = function C(props) {\n var wrappedComponentRef = props.wrappedComponentRef,\n remainingProps = _objectWithoutPropertiesLoose(props, [\"wrappedComponentRef\"]);\n\n return React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <\" + displayName + \" /> outside a \") : invariant(false) : void 0;\n return React.createElement(Component, _extends({}, remainingProps, context, {\n ref: wrappedComponentRef\n }));\n });\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (process.env.NODE_ENV !== \"production\") {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.object])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nvar useContext = React.useContext;\nfunction useHistory() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useHistory()\") : invariant(false) : void 0;\n }\n\n return useContext(context).history;\n}\nfunction useLocation() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useLocation()\") : invariant(false) : void 0;\n }\n\n return useContext(context).location;\n}\nfunction useParams() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useParams()\") : invariant(false) : void 0;\n }\n\n var match = useContext(context).match;\n return match ? match.params : {};\n}\nfunction useRouteMatch(path) {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useRouteMatch()\") : invariant(false) : void 0;\n }\n\n return path ? matchPath(useLocation().pathname, path) : useContext(context).match;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n if (typeof window !== \"undefined\") {\n var global = window;\n var key = \"__react_router_build__\";\n var buildNames = {\n cjs: \"CommonJS\",\n esm: \"ES modules\",\n umd: \"UMD\"\n };\n\n if (global[key] && global[key] !== \"esm\") {\n var initialBuildName = buildNames[global[key]];\n var secondaryBuildName = buildNames[\"esm\"]; // TODO: Add link to article that explains in detail how to avoid\n // loading 2 different builds.\n\n throw new Error(\"You are loading the \" + secondaryBuildName + \" build of React Router \" + (\"on a page that is already running the \" + initialBuildName + \" \") + \"build, so things won't work right.\");\n }\n\n global[key] = \"esm\";\n }\n}\n\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, context as __RouterContext, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter };\n//# sourceMappingURL=react-router.js.map\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle\";\nimport RouterContext from \"./RouterContext\";\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\nfunction Prompt({ message, when = true }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n if (!when || context.staticContext) return null;\n\n const method = context.history.block;\n\n return (\n {\n self.release = method(message);\n }}\n onUpdate={(self, prevProps) => {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n }}\n onUnmount={self => {\n self.release();\n }}\n message={message}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n const messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n\n Prompt.propTypes = {\n when: PropTypes.bool,\n message: messageType.isRequired\n };\n}\n\nexport default Prompt;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle\";\nimport RouterContext from \"./RouterContext\";\nimport generatePath from \"./generatePath\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\nimport matchPath from \"./matchPath\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport RouterContext from \"./RouterContext\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n const displayName = `withRouter(${Component.displayName || Component.name})`;\n const C = props => {\n const { wrappedComponentRef, ...remainingProps } = props;\n\n return (\n \n {context => {\n invariant(\n context,\n `You should not use <${displayName} /> outside a `\n );\n return (\n \n );\n }}\n \n );\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (__DEV__) {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.object\n ])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(Context).history;\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n return path\n ? matchPath(useLocation().pathname, path)\n : useContext(Context).match;\n}\n","if (__DEV__) {\n if (typeof window !== \"undefined\") {\n const global = window;\n const key = \"__react_router_build__\";\n const buildNames = { cjs: \"CommonJS\", esm: \"ES modules\", umd: \"UMD\" };\n\n if (global[key] && global[key] !== process.env.BUILD_FORMAT) {\n const initialBuildName = buildNames[global[key]];\n const secondaryBuildName = buildNames[process.env.BUILD_FORMAT];\n\n // TODO: Add link to article that explains in detail how to avoid\n // loading 2 different builds.\n throw new Error(\n `You are loading the ${secondaryBuildName} build of React Router ` +\n `on a page that is already running the ${initialBuildName} ` +\n `build, so things won't work right.`\n );\n }\n\n global[key] = process.env.BUILD_FORMAT;\n }\n}\n\nexport { default as MemoryRouter } from \"./MemoryRouter\";\nexport { default as Prompt } from \"./Prompt\";\nexport { default as Redirect } from \"./Redirect\";\nexport { default as Route } from \"./Route\";\nexport { default as Router } from \"./Router\";\nexport { default as StaticRouter } from \"./StaticRouter\";\nexport { default as Switch } from \"./Switch\";\nexport { default as generatePath } from \"./generatePath\";\nexport { default as matchPath } from \"./matchPath\";\nexport { default as withRouter } from \"./withRouter\";\n\nimport { useHistory, useLocation, useParams, useRouteMatch } from \"./hooks.js\";\nexport { useHistory, useLocation, useParams, useRouteMatch };\n\nexport { default as __RouterContext } from \"./RouterContext\";\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n return '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash = void 0;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) {\n fromParts.unshift('..');\n }if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction valueEqual(a, b) {\n if (a === b) return true;\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n\n var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n if (aType !== bType) return false;\n\n if (aType === 'object') {\n var aValue = a.valueOf();\n var bValue = b.valueOf();\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) return false;\n\n return aKeys.every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n\n if (isProduction) {\n throw new Error(prefix);\n } else {\n throw new Error(prefix + \": \" + (message || ''));\n }\n}\n\nexport default invariant;\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport gud from 'gud';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + gud() + '__';\n\n var Provider =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer =\n /*#__PURE__*/\n function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.8.6\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nfunction getStatics(component) {\n if (ReactIs.isMemo(component)) {\n return MEMO_STATICS;\n }\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import { useThemeProps as systemUseThemeProps } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nexport default function useThemeProps({\n props,\n name\n}) {\n return systemUseThemeProps({\n props,\n name,\n defaultTheme\n });\n}","import getThemeProps from './getThemeProps';\nimport useTheme from '../useTheme';\nexport default function useThemeProps({\n props,\n name,\n defaultTheme\n}) {\n const theme = useTheme(defaultTheme);\n const mergedProps = getThemeProps({\n theme,\n name,\n props\n });\n return mergedProps;\n}","import { internal_resolveProps as resolveProps } from '@mui/utils';\nexport default function getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n\n if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n return props;\n }\n\n return resolveProps(theme.components[name].defaultProps, props);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n const output = _extends({}, props);\n\n Object.keys(defaultProps).forEach(propName => {\n if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n });\n return output;\n}","import createTheme from './createTheme';\nimport useThemeWithoutDefault from './useThemeWithoutDefault';\nexport const systemDefaultTheme = createTheme();\n\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\n\nexport default useTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\nimport { deepmerge } from '@mui/utils';\nimport createBreakpoints from './createBreakpoints';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\n\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: _extends({\n mode: 'light'\n }, paletteInput),\n spacing,\n shape: _extends({}, shape, shapeInput)\n }, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n return muiTheme;\n}\n\nexport default createTheme;","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function isPlainObject(item) {\n return item !== null && typeof item === 'object' && item.constructor === Object;\n}\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? _extends({}, target) : target;\n\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n // Avoid prototype pollution\n if (key === '__proto__') {\n return;\n }\n\n if (isPlainObject(source[key]) && key in target && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else {\n output[key] = source[key];\n }\n });\n }\n\n return output;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\n\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || []; // Sort in ascending order\n\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return _extends({}, acc, {\n [obj.key]: obj.val\n });\n }, {});\n}; // Keep in mind that @media is inclusive by the CSS specification.\n\n\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n\n },\n unit = 'px',\n step = 5\n } = breakpoints,\n other = _objectWithoutPropertiesLoose(breakpoints, _excluded);\n\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n\n return up(key);\n }\n\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n\n return _extends({\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit\n }, other);\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import { createUnarySpacing } from '../spacing';\n\n/* tslint:enable:unified-signatures */\nexport default function createSpacing(spacingInput = 8) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n } // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n // Smaller components, such as icons, can align to a 4dp grid.\n // https://material.io/design/layout/understanding-layout.html#usage\n\n\n const transform = createUnarySpacing({\n spacing: spacingInput\n });\n\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n\n spacing.mui = true;\n return spacing;\n}","import responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport { getPath } from './style';\nimport merge from './merge';\nimport memoize from './memoize';\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n}; // memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\n\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nconst marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nconst paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n const themeSpacing = getPath(theme, themeKey) || defaultValue;\n\n if (typeof themeSpacing === 'number') {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n }\n }\n\n return themeSpacing * abs;\n };\n }\n\n if (Array.isArray(themeSpacing)) {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n\n return themeSpacing[abs];\n };\n }\n\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n\n const abs = Math.abs(propValue);\n const transformed = transformer(abs);\n\n if (propValue >= 0) {\n return transformed;\n }\n\n if (typeof transformed === 'number') {\n return -transformed;\n }\n\n return `-${transformed}`;\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\n\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (keys.indexOf(prop) === -1) {\n return null;\n }\n\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\n\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\n\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\n\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\n\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport { deepmerge } from '@mui/utils';\nimport merge from './merge'; // The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\n\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n // key is breakpoint\n if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n\n return acc;\n }, {});\n }\n\n const output = styleFromPropValue(propValue);\n return output;\n}\n\nfunction breakpoints(styleFunction) {\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme\n }, props[key]));\n }\n\n return acc;\n }, null);\n return merge(base, extended);\n };\n\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\n\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n var _breakpointsInput$key;\n\n const breakpointsInOrder = breakpointsInput == null ? void 0 : (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n\n if (isBreakpointUnused) {\n delete acc[key];\n }\n\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n} // compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\n\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n\n if (keys.length === 0) {\n return breakpointValues;\n }\n\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous] || breakpointValues;\n previous = breakpoint;\n }\n\n return acc;\n }, {});\n}\nexport default breakpoints;","import { deepmerge } from '@mui/utils';\n\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n\n });\n}\n\nexport default merge;","import { unstable_capitalize as capitalize } from '@mui/utils';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n return path.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n}\n\nfunction getValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n\n if (transform) {\n value = transform(value);\n }\n\n return value;\n}\n\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n\n if (cssProperty === false) {\n return value;\n }\n\n return {\n [cssProperty]: value\n };\n };\n\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\n\nexport default style;","import _formatMuiErrorMessage from \"./formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n }\n\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/utils/macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe iff we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n\n /* eslint-disable prefer-template */\n let url = 'https://mui.com/production-error/?code=' + code;\n\n for (let i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n\n return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n\n return cache[arg];\n };\n}","import { useTheme as muiUseTheme } from '@mui/private-theming';\n\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\nfunction useTheme(defaultTheme = null) {\n const contextTheme = muiUseTheme();\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\n\nexport default useTheme;","import * as React from 'react';\nimport ThemeContext from './ThemeContext';\nexport default function useTheme() {\n const theme = React.useContext(ThemeContext);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n\n return theme;\n}","import * as React from 'react';\nconst ThemeContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'ThemeContext';\n}\n\nexport default ThemeContext;","import createTheme from './createTheme';\nconst defaultTheme = createTheme();\nexport default defaultTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"mixins\", \"spacing\", \"palette\", \"transitions\", \"typography\", \"shape\"];\nimport { deepmerge } from '@mui/utils';\nimport { generateUtilityClass } from '@mui/base';\nimport { createTheme as systemCreateTheme } from '@mui/system';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport createTransitions from './createTransitions';\nimport zIndex from './zIndex';\n\nfunction createTheme(options = {}, ...args) {\n const {\n mixins: mixinsInput = {},\n palette: paletteInput = {},\n transitions: transitionsInput = {},\n typography: typographyInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n\n const palette = createPalette(paletteInput);\n const systemTheme = systemCreateTheme(options);\n let muiTheme = deepmerge(systemTheme, {\n mixins: createMixins(systemTheme.breakpoints, systemTheme.spacing, mixinsInput),\n palette,\n // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n shadows: shadows.slice(),\n typography: createTypography(palette, typographyInput),\n transitions: createTransitions(transitionsInput),\n zIndex: _extends({}, zIndex)\n });\n muiTheme = deepmerge(muiTheme, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n\n const traverse = (node, component) => {\n let key; // eslint-disable-next-line guard-for-in, no-restricted-syntax\n\n for (key in node) {\n const child = node[key];\n\n if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n const stateClass = generateUtilityClass('', key);\n console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n root: {\n [`&.${stateClass}`]: child\n }\n }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n } // Remove the style to prevent global conflicts.\n\n\n node[key] = {};\n }\n }\n };\n\n Object.keys(muiTheme.components).forEach(component => {\n const styleOverrides = muiTheme.components[component].styleOverrides;\n\n if (styleOverrides && component.indexOf('Mui') === 0) {\n traverse(styleOverrides, component);\n }\n });\n }\n\n return muiTheme;\n}\n\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n }\n }\n\n return createTheme(...args);\n}\nexport default createTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, spacing, mixins) {\n return _extends({\n toolbar: {\n minHeight: 56,\n [`${breakpoints.up('xs')} and (orientation: landscape)`]: {\n minHeight: 48\n },\n [breakpoints.up('sm')]: {\n minHeight: 64\n }\n }\n }, mixins);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@mui/utils\";\nconst _excluded = [\"mode\", \"contrastThreshold\", \"tonalOffset\"];\nimport { deepmerge } from '@mui/utils';\nimport { darken, getContrastRatio, lighten } from '@mui/system';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport purple from '../colors/purple';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport lightBlue from '../colors/lightBlue';\nimport green from '../colors/green';\nexport const light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.6)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: common.white\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport const dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: '#121212',\n default: '#121212'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\n\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\n\nfunction getDefaultPrimary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: blue[200],\n light: blue[50],\n dark: blue[400]\n };\n }\n\n return {\n main: blue[700],\n light: blue[400],\n dark: blue[800]\n };\n}\n\nfunction getDefaultSecondary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: purple[200],\n light: purple[50],\n dark: purple[400]\n };\n }\n\n return {\n main: purple[500],\n light: purple[300],\n dark: purple[700]\n };\n}\n\nfunction getDefaultError(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: red[500],\n light: red[300],\n dark: red[700]\n };\n }\n\n return {\n main: red[700],\n light: red[400],\n dark: red[800]\n };\n}\n\nfunction getDefaultInfo(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: lightBlue[400],\n light: lightBlue[300],\n dark: lightBlue[700]\n };\n }\n\n return {\n main: lightBlue[700],\n light: lightBlue[500],\n dark: lightBlue[900]\n };\n}\n\nfunction getDefaultSuccess(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: green[400],\n light: green[300],\n dark: green[700]\n };\n }\n\n return {\n main: green[800],\n light: green[500],\n dark: green[900]\n };\n}\n\nfunction getDefaultWarning(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: orange[400],\n light: orange[300],\n dark: orange[700]\n };\n }\n\n return {\n main: '#ed6c02',\n // closest to orange[800] that pass 3:1.\n light: orange[500],\n dark: orange[900]\n };\n}\n\nexport default function createPalette(palette) {\n const {\n mode = 'light',\n contrastThreshold = 3,\n tonalOffset = 0.2\n } = palette,\n other = _objectWithoutPropertiesLoose(palette, _excluded);\n\n const primary = palette.primary || getDefaultPrimary(mode);\n const secondary = palette.secondary || getDefaultSecondary(mode);\n const error = palette.error || getDefaultError(mode);\n const info = palette.info || getDefaultInfo(mode);\n const success = palette.success || getDefaultSuccess(mode);\n const warning = palette.warning || getDefaultWarning(mode); // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n\n function getContrastText(background) {\n const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n\n if (process.env.NODE_ENV !== 'production') {\n const contrast = getContrastRatio(background, contrastText);\n\n if (contrast < 3) {\n console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n\n return contrastText;\n }\n\n const augmentColor = ({\n color,\n name,\n mainShade = 500,\n lightShade = 300,\n darkShade = 700\n }) => {\n color = _extends({}, color);\n\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n\n if (!color.hasOwnProperty('main')) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n }\n\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n }\n\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n\n return color;\n };\n\n const modes = {\n dark,\n light\n };\n\n if (process.env.NODE_ENV !== 'production') {\n if (!modes[mode]) {\n console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n }\n }\n\n const paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common,\n // The palette mode, can be light or dark.\n mode,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor({\n color: primary,\n name: 'primary'\n }),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor({\n color: secondary,\n name: 'secondary',\n mainShade: 'A400',\n lightShade: 'A200',\n darkShade: 'A700'\n }),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor({\n color: error,\n name: 'error'\n }),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor({\n color: warning,\n name: 'warning'\n }),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor({\n color: info,\n name: 'info'\n }),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor({\n color: success,\n name: 'success'\n }),\n // The grey colors.\n grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText,\n // Generate a rich color object.\n augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset\n }, modes[mode]), other);\n return paletteOutput;\n}","import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@mui/utils\";\n\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clamp(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n\n return Math.min(Math.max(min, value), max);\n}\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\n\n\nexport function hexToRgb(color) {\n color = color.substr(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n let colors = color.match(re);\n\n if (colors && colors[0].length === 1) {\n colors = colors.map(n => n + n);\n }\n\n return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', ')})` : '';\n}\n\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\n\n\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n\n const marker = color.indexOf('(');\n const type = color.substring(0, marker);\n\n if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : _formatMuiErrorMessage(9, color));\n }\n\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n\n if (type === 'color') {\n values = values.split(' ');\n colorSpace = values.shift();\n\n if (values.length === 4 && values[3].charAt(0) === '/') {\n values[3] = values[3].substr(1);\n }\n\n if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : _formatMuiErrorMessage(10, colorSpace));\n }\n } else {\n values = values.split(',');\n }\n\n values = values.map(value => parseFloat(value));\n return {\n type,\n values,\n colorSpace\n };\n}\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\n\nexport function recomposeColor(color) {\n const {\n type,\n colorSpace\n } = color;\n let {\n values\n } = color;\n\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n\n if (type.indexOf('color') !== -1) {\n values = `${colorSpace} ${values.join(' ')}`;\n } else {\n values = `${values.join(', ')}`;\n }\n\n return `${type}(${values})`;\n}\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\n\nexport function rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n\n const {\n values\n } = decomposeColor(color);\n return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\n\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n const {\n values\n } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n\n return recomposeColor({\n type,\n values: rgb\n });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\n\nexport function getLuminance(color) {\n color = decomposeColor(color);\n let rgb = color.type === 'hsl' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(val => {\n if (color.type !== 'color') {\n val /= 255; // normalized\n }\n\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n }); // Truncate at 3 digits\n\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\n\nexport function getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function alpha(color, value) {\n color = decomposeColor(color);\n value = clamp(value);\n\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n\n if (color.type === 'color') {\n color.values[3] = `/${value}`;\n } else {\n color.values[3] = value;\n }\n\n return recomposeColor(color);\n}\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n\n return recomposeColor(color);\n}\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n } else if (color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n\n return recomposeColor(color);\n}\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}","const common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","const grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#f5f5f5',\n A200: '#eeeeee',\n A400: '#bdbdbd',\n A700: '#616161'\n};\nexport default grey;","const purple = {\n 50: '#f3e5f5',\n 100: '#e1bee7',\n 200: '#ce93d8',\n 300: '#ba68c8',\n 400: '#ab47bc',\n 500: '#9c27b0',\n 600: '#8e24aa',\n 700: '#7b1fa2',\n 800: '#6a1b9a',\n 900: '#4a148c',\n A100: '#ea80fc',\n A200: '#e040fb',\n A400: '#d500f9',\n A700: '#aa00ff'\n};\nexport default purple;","const red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","const orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","const blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n 50: '#e1f5fe',\n 100: '#b3e5fc',\n 200: '#81d4fa',\n 300: '#4fc3f7',\n 400: '#29b6f6',\n 500: '#03a9f4',\n 600: '#039be5',\n 700: '#0288d1',\n 800: '#0277bd',\n 900: '#01579b',\n A100: '#80d8ff',\n A200: '#40c4ff',\n A400: '#00b0ff',\n A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"];\nimport { deepmerge } from '@mui/utils';\n\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\n\nconst caseAllCaps = {\n textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n/**\n * @see @link{https://material.io/design/typography/the-type-system.html}\n * @see @link{https://material.io/design/typography/understanding-typography.html}\n */\n\nexport default function createTypography(palette, typography) {\n const _ref = typeof typography === 'function' ? typography(palette) : typography,\n {\n fontFamily = defaultFontFamily,\n // The default font size of the Material Specification.\n fontSize = 14,\n // px\n fontWeightLight = 300,\n fontWeightRegular = 400,\n fontWeightMedium = 500,\n fontWeightBold = 700,\n // Tell MUI what's the font-size on the html element.\n // 16px is the default font-size used by browsers.\n htmlFontSize = 16,\n // Apply the CSS properties to all the variants.\n allVariants,\n pxToRem: pxToRem2\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('MUI: `fontSize` is required to be a number.');\n }\n\n if (typeof htmlFontSize !== 'number') {\n console.error('MUI: `htmlFontSize` is required to be a number.');\n }\n }\n\n const coef = fontSize / 14;\n\n const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n\n const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => _extends({\n fontFamily,\n fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: `${round(letterSpacing / size)}em`\n } : {}, casing, allVariants);\n\n const variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps)\n };\n return deepmerge(_extends({\n htmlFontSize,\n pxToRem,\n fontFamily,\n fontSize,\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n\n });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\n\nfunction createShadow(...px) {\n return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n} // Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\n\n\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"duration\", \"easing\", \"delay\"];\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n}; // Follow https://material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\n\nexport const duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\n\nfunction formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\n\nfunction getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n\n const constant = height / 36; // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\n\nexport default function createTransitions(inputTransitions) {\n const mergedEasing = _extends({}, easing, inputTransitions.easing);\n\n const mergedDuration = _extends({}, duration, inputTransitions.duration);\n\n const create = (props = ['all'], options = {}) => {\n const {\n duration: durationOption = mergedDuration.standard,\n easing: easingOption = mergedEasing.easeInOut,\n delay = 0\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n\n if (process.env.NODE_ENV !== 'production') {\n const isString = value => typeof value === 'string'; // IE11 support, replace with Number.isNaN\n // eslint-disable-next-line no-restricted-globals\n\n\n const isNumber = value => !isNaN(parseFloat(value));\n\n if (!isString(props) && !Array.isArray(props)) {\n console.error('MUI: Argument \"props\" must be a string or Array.');\n }\n\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n }\n\n if (!isString(easingOption)) {\n console.error('MUI: Argument \"easing\" must be a string.');\n }\n\n if (!isNumber(delay) && !isString(delay)) {\n console.error('MUI: Argument \"delay\" must be a number or a string.');\n }\n\n if (Object.keys(other).length !== 0) {\n console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n }\n }\n\n return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n };\n\n return _extends({\n getAutoHeightDuration,\n create\n }, inputTransitions, {\n easing: mergedEasing,\n duration: mergedDuration\n });\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n mobileStepper: 1000,\n fab: 1050,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache'; // prepend: true moves MUI styles to the top of the so they're loaded first.\n// It allows developers to easily override MUI styles with other styling solutions, like CSS modules.\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst cache = createCache({\n key: 'css',\n prepend: true\n});\nexport default function StyledEngineProvider(props) {\n const {\n injectFirst,\n children\n } = props;\n return injectFirst ? /*#__PURE__*/_jsx(CacheProvider, {\n value: cache,\n children: children\n }) : children;\n}\nprocess.env.NODE_ENV !== \"production\" ? StyledEngineProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n\n /**\n * By default, the styles are injected last in the element of the page.\n * As a result, they gain more specificity than any other style sheet.\n * If you want to override MUI's styles, set this prop.\n */\n injectFirst: PropTypes.bool\n} : void 0;","import * as React from 'react';\nimport { createContext, useContext, forwardRef, createElement, Fragment } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n return useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = useContext(ThemeContext);\n return /*#__PURE__*/createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n // The match may be something like 'Object.createEmotionProps' or\n // 'Loader.prototype.render'\n var parts = functionName.split('.');\n return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n // V8\n var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n if (match) return getLastPart(match[1]); // Safari / Firefox\n\n match = /^([A-Za-z0-9$.]+)@/.exec(line);\n if (match) return getLastPart(match[1]);\n return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n if (!stackTrace) return undefined;\n var lines = stackTrace.split('\\n');\n\n for (var i = 0; i < lines.length; i++) {\n var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n // uppercase letter\n\n if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n }\n\n return undefined;\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : function useInsertionEffect(create) {\n create();\n};\nfunction useInsertionEffectMaybe(create) {\n\n useInsertionEffect(create);\n}\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n // the label hasn't already been computed\n\n if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n var label = getLabelFromStackTrace(new Error().stack);\n if (label) newProps[labelPropName] = label;\n }\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n var rules = useInsertionEffectMaybe(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, useContext(ThemeContext));\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, __unsafe_useEmotionCache as _, useTheme as a, ThemeProvider as b, createEmotionProps as c, withTheme as d, hasOwnProperty as h, useInsertionEffectMaybe as u, withEmotionCache as w };\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, stringify, COMMENT, rulesheet, middleware, prefixer, serialize, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar last = function last(arr) {\n return arr.length ? arr[arr.length - 1] : null;\n}; // based on https://github.com/thysultan/stylis.js/blob/e6843c373ebcbbfade25ebcc23f540ed8508da0a/src/Tokenizer.js#L239-L244\n\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return !!element && element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule') return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses && cache.compat !== true) {\n var prevElement = index > 0 ? children[index - 1] : null;\n\n if (prevElement && isIgnoringComment(last(prevElement.children))) {\n return;\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if ( key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {}; // $FlowFixMe\n\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport default createCache;\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","var e=\"-ms-\";var r=\"-moz-\";var a=\"-webkit-\";var c=\"comm\";var n=\"rule\";var t=\"decl\";var s=\"@page\";var u=\"@media\";var i=\"@import\";var f=\"@charset\";var o=\"@viewport\";var l=\"@supports\";var v=\"@document\";var h=\"@namespace\";var p=\"@keyframes\";var b=\"@font-face\";var w=\"@counter-style\";var $=\"@font-feature-values\";var k=Math.abs;var d=String.fromCharCode;var g=Object.assign;function m(e,r){return(((r<<2^z(e,0))<<2^z(e,1))<<2^z(e,2))<<2^z(e,3)}function x(e){return e.trim()}function y(e,r){return(e=r.exec(e))?e[0]:e}function j(e,r,a){return e.replace(r,a)}function C(e,r){return e.indexOf(r)}function z(e,r){return e.charCodeAt(r)|0}function A(e,r,a){return e.slice(r,a)}function O(e){return e.length}function M(e){return e.length}function S(e,r){return r.push(e),e}function q(e,r){return e.map(r).join(\"\")}var B=1;var D=1;var E=0;var F=0;var G=0;var H=\"\";function I(e,r,a,c,n,t,s){return{value:e,root:r,parent:a,type:c,props:n,children:t,line:B,column:D,length:s,return:\"\"}}function J(e,r){return g(I(\"\",null,null,\"\",null,null,0),e,{length:-e.length},r)}function K(){return G}function L(){G=F>0?z(H,--F):0;if(D--,G===10)D=1,B--;return G}function N(){G=F2||T(G)>3?\"\":\" \"}function Z(e){while(N())switch(T(G)){case 0:S(ae(F-1),e);break;case 2:S(W(G),e);break;default:S(d(G),e)}return e}function _(e,r){while(--r&&N())if(G<48||G>102||G>57&&G<65||G>70&&G<97)break;return R(e,Q()+(r<6&&P()==32&&N()==32))}function ee(e){while(N())switch(G){case e:return F;case 34:case 39:if(e!==34&&e!==39)ee(G);break;case 40:if(e===41)ee(e);break;case 92:N();break}return F}function re(e,r){while(N())if(e+G===47+10)break;else if(e+G===42+42&&P()===47)break;return\"/*\"+R(r,F-1)+\"*\"+d(e===47?e:N())}function ae(e){while(!T(P()))N();return R(e,F)}function ce(e){return V(ne(\"\",null,null,null,[\"\"],e=U(e),0,[0],e))}function ne(e,r,a,c,n,t,s,u,i){var f=0;var o=0;var l=s;var v=0;var h=0;var p=0;var b=1;var w=1;var $=1;var k=0;var g=\"\";var m=n;var x=t;var y=c;var z=g;while(w)switch(p=k,k=N()){case 40:if(p!=108&&z.charCodeAt(l-1)==58){if(C(z+=j(W(k),\"&\",\"&\\f\"),\"&\\f\")!=-1)$=-1;break}case 34:case 39:case 91:z+=W(k);break;case 9:case 10:case 13:case 32:z+=Y(p);break;case 92:z+=_(Q()-1,7);continue;case 47:switch(P()){case 42:case 47:S(se(re(N(),Q()),r,a),i);break;default:z+=\"/\"}break;case 123*b:u[f++]=O(z)*$;case 125*b:case 59:case 0:switch(k){case 0:case 125:w=0;case 59+o:if(h>0&&O(z)-l)S(h>32?ue(z+\";\",c,a,l-1):ue(j(z,\" \",\"\")+\";\",c,a,l-2),i);break;case 59:z+=\";\";default:S(y=te(z,r,a,f,o,n,u,g,m=[],x=[],l),t);if(k===123)if(o===0)ne(z,r,y,y,m,t,l,u,x);else switch(v){case 100:case 109:case 115:ne(e,y,y,c&&S(te(e,y,y,0,0,n,u,g,n,m=[],l),x),n,x,l,u,c?m:x);break;default:ne(z,y,y,y,[\"\"],x,0,u,x)}}f=o=h=0,b=$=1,g=z=\"\",l=s;break;case 58:l=1+O(z),h=p;default:if(b<1)if(k==123)--b;else if(k==125&&b++==0&&L()==125)continue;switch(z+=d(k),k*b){case 38:$=o>0?1:(z+=\"\\f\",-1);break;case 44:u[f++]=(O(z)-1)*$,$=1;break;case 64:if(P()===45)z+=W(N());v=P(),o=l=O(g=z+=ae(Q())),k++;break;case 45:if(p===45&&O(z)==2)b=0}}return t}function te(e,r,a,c,t,s,u,i,f,o,l){var v=t-1;var h=t===0?s:[\"\"];var p=M(h);for(var b=0,w=0,$=0;b0?h[d]+\" \"+g:j(g,/&\\f/g,h[d])))f[$++]=m;return I(e,r,a,t===0?n:i,f,o,l)}function se(e,r,a){return I(e,r,a,c,d(K()),A(e,2,-2),0)}function ue(e,r,a,c){return I(e,r,a,t,A(e,0,c),A(e,c+1,-1),c)}function ie(c,n){switch(m(c,n)){case 5103:return a+\"print-\"+c+c;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return a+c+c;case 5349:case 4246:case 4810:case 6968:case 2756:return a+c+r+c+e+c+c;case 6828:case 4268:return a+c+e+c+c;case 6165:return a+c+e+\"flex-\"+c+c;case 5187:return a+c+j(c,/(\\w+).+(:[^]+)/,a+\"box-$1$2\"+e+\"flex-$1$2\")+c;case 5443:return a+c+e+\"flex-item-\"+j(c,/flex-|-self/,\"\")+c;case 4675:return a+c+e+\"flex-line-pack\"+j(c,/align-content|flex-|-self/,\"\")+c;case 5548:return a+c+e+j(c,\"shrink\",\"negative\")+c;case 5292:return a+c+e+j(c,\"basis\",\"preferred-size\")+c;case 6060:return a+\"box-\"+j(c,\"-grow\",\"\")+a+c+e+j(c,\"grow\",\"positive\")+c;case 4554:return a+j(c,/([^-])(transform)/g,\"$1\"+a+\"$2\")+c;case 6187:return j(j(j(c,/(zoom-|grab)/,a+\"$1\"),/(image-set)/,a+\"$1\"),c,\"\")+c;case 5495:case 3959:return j(c,/(image-set\\([^]*)/,a+\"$1\"+\"$`$1\");case 4968:return j(j(c,/(.+:)(flex-)?(.*)/,a+\"box-pack:$3\"+e+\"flex-pack:$3\"),/s.+-b[^;]+/,\"justify\")+a+c+c;case 4095:case 3583:case 4068:case 2532:return j(c,/(.+)-inline(.+)/,a+\"$1$2\")+c;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(O(c)-1-n>6)switch(z(c,n+1)){case 109:if(z(c,n+4)!==45)break;case 102:return j(c,/(.+:)(.+)-([^]+)/,\"$1\"+a+\"$2-$3\"+\"$1\"+r+(z(c,n+3)==108?\"$3\":\"$2-$3\"))+c;case 115:return~C(c,\"stretch\")?ie(j(c,\"stretch\",\"fill-available\"),n)+c:c}break;case 4949:if(z(c,n+1)!==115)break;case 6444:switch(z(c,O(c)-3-(~C(c,\"!important\")&&10))){case 107:return j(c,\":\",\":\"+a)+c;case 101:return j(c,/(.+:)([^;!]+)(;|!.+)?/,\"$1\"+a+(z(c,14)===45?\"inline-\":\"\")+\"box$3\"+\"$1\"+a+\"$2$3\"+\"$1\"+e+\"$2box$3\")+c}break;case 5936:switch(z(c,n+11)){case 114:return a+c+e+j(c,/[svh]\\w+-[tblr]{2}/,\"tb\")+c;case 108:return a+c+e+j(c,/[svh]\\w+-[tblr]{2}/,\"tb-rl\")+c;case 45:return a+c+e+j(c,/[svh]\\w+-[tblr]{2}/,\"lr\")+c}return a+c+e+c+c}return c}function fe(e,r){var a=\"\";var c=M(e);for(var n=0;n-1)if(!c.return)switch(c.type){case t:c.return=ie(c.value,c.length);break;case p:return fe([J(c,{value:j(c.value,\"@\",\"@\"+a)})],i);case n:if(c.length)return q(c.props,(function(n){switch(y(n,/(::plac\\w+|:read-\\w+)/)){case\":read-only\":case\":read-write\":return fe([J(c,{props:[j(n,/:(read-\\w+)/,\":\"+r+\"$1\")]})],i);case\"::placeholder\":return fe([J(c,{props:[j(n,/:(plac\\w+)/,\":\"+a+\"input-$1\")]}),J(c,{props:[j(n,/:(plac\\w+)/,\":\"+r+\"$1\")]}),J(c,{props:[j(n,/:(plac\\w+)/,e+\"input-$1\")]})],i)}return\"\"}))}}function pe(e){switch(e.type){case n:e.props=e.props.map((function(r){return q(X(r),(function(r,a,c){switch(z(r,0)){case 12:return A(r,1,O(r));case 0:case 40:case 43:case 62:case 126:return r;case 58:if(c[++a]===\"global\")c[a]=\"\",c[++a]=\"\\f\"+A(c[a],a=1,-1);case 32:return a===1?\"\":r;default:switch(a){case 0:e=r;return M(c)>1?\"\":r;case a=M(c)-1:case 2:return a===2?r+e+e:r+e;default:return r}}}))}))}}export{f as CHARSET,c as COMMENT,w as COUNTER_STYLE,t as DECLARATION,v as DOCUMENT,b as FONT_FACE,$ as FONT_FEATURE_VALUES,i as IMPORT,p as KEYFRAMES,u as MEDIA,r as MOZ,e as MS,h as NAMESPACE,s as PAGE,n as RULESET,l as SUPPORTS,o as VIEWPORT,a as WEBKIT,k as abs,U as alloc,S as append,g as assign,Q as caret,K as char,G as character,H as characters,z as charat,D as column,q as combine,se as comment,re as commenter,ce as compile,J as copy,V as dealloc,ue as declaration,W as delimit,ee as delimiter,_ as escaping,d as from,m as hash,ae as identifier,C as indexof,E as length,B as line,y as match,le as middleware,pe as namespace,N as next,I as node,ne as parse,P as peek,F as position,ie as prefix,he as prefixer,L as prev,j as replace,te as ruleset,ve as rulesheet,fe as serialize,M as sizeof,R as slice,oe as stringify,O as strlen,A as substr,T as token,X as tokenize,Z as tokenizer,x as trim,Y as whitespace};\n//# sourceMappingURL=stylis.mjs.map\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3)\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && characters.charCodeAt(length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset:\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule) {\n\t\t\t\t\t\t\t\t\t// d m s\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import {MS, MOZ, WEBKIT} from './Enum.js'\nimport {hash, charat, strlen, indexof, replace} from './Utility.js'\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {string}\n */\nexport function prefix (value, length) {\n\tswitch (hash(value, length)) {\n\t\t// color-adjust\n\t\tcase 5103:\n\t\t\treturn WEBKIT + 'print-' + value + value\n\t\t// animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\t\tcase 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921:\n\t\t// text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\t\tcase 5572: case 6356: case 5844: case 3191: case 6645: case 3005:\n\t\t// mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\t\tcase 6391: case 5879: case 5623: case 6135: case 4599: case 4855:\n\t\t// background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\t\tcase 4215: case 6389: case 5109: case 5365: case 5621: case 3829:\n\t\t\treturn WEBKIT + value + value\n\t\t// appearance, user-select, transform, hyphens, text-size-adjust\n\t\tcase 5349: case 4246: case 4810: case 6968: case 2756:\n\t\t\treturn WEBKIT + value + MOZ + value + MS + value + value\n\t\t// flex, flex-direction\n\t\tcase 6828: case 4268:\n\t\t\treturn WEBKIT + value + MS + value + value\n\t\t// order\n\t\tcase 6165:\n\t\t\treturn WEBKIT + value + MS + 'flex-' + value + value\n\t\t// align-items\n\t\tcase 5187:\n\t\t\treturn WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value\n\t\t// align-self\n\t\tcase 5443:\n\t\t\treturn WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value\n\t\t// align-content\n\t\tcase 4675:\n\t\t\treturn WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value\n\t\t// flex-shrink\n\t\tcase 5548:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value\n\t\t// flex-basis\n\t\tcase 5292:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value\n\t\t// flex-grow\n\t\tcase 6060:\n\t\t\treturn WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value\n\t\t// transition\n\t\tcase 4554:\n\t\t\treturn WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value\n\t\t// cursor\n\t\tcase 6187:\n\t\t\treturn replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value\n\t\t// background, background-image\n\t\tcase 5495: case 3959:\n\t\t\treturn replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1')\n\t\t// justify-content\n\t\tcase 4968:\n\t\t\treturn replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value\n\t\t// (margin|padding)-inline-(start|end)\n\t\tcase 4095: case 3583: case 4068: case 2532:\n\t\t\treturn replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value\n\t\t// (min|max)?(width|height|inline-size|block-size)\n\t\tcase 8116: case 7059: case 5753: case 5535:\n\t\tcase 5445: case 5701: case 4933: case 4677:\n\t\tcase 5533: case 5789: case 5021: case 4765:\n\t\t\t// stretch, max-content, min-content, fill-available\n\t\t\tif (strlen(value) - 1 - length > 6)\n\t\t\t\tswitch (charat(value, length + 1)) {\n\t\t\t\t\t// (m)ax-content, (m)in-content\n\t\t\t\t\tcase 109:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (charat(value, length + 4) !== 45)\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t// (f)ill-available, (f)it-content\n\t\t\t\t\tcase 102:\n\t\t\t\t\t\treturn replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value\n\t\t\t\t\t// (s)tretch\n\t\t\t\t\tcase 115:\n\t\t\t\t\t\treturn ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value\n\t\t\t\t}\n\t\t\tbreak\n\t\t// position: sticky\n\t\tcase 4949:\n\t\t\t// (s)ticky?\n\t\t\tif (charat(value, length + 1) !== 115)\n\t\t\t\tbreak\n\t\t// display: (flex|inline-flex)\n\t\tcase 6444:\n\t\t\tswitch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n\t\t\t\t// stic(k)y\n\t\t\t\tcase 107:\n\t\t\t\t\treturn replace(value, ':', ':' + WEBKIT) + value\n\t\t\t\t// (inline-)?fl(e)x\n\t\t\t\tcase 101:\n\t\t\t\t\treturn replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value\n\t\t\t}\n\t\t\tbreak\n\t\t// writing-mode\n\t\tcase 5936:\n\t\t\tswitch (charat(value, length + 11)) {\n\t\t\t\t// vertical-l(r)\n\t\t\t\tcase 114:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value\n\t\t\t\t// vertical-r(l)\n\t\t\t\tcase 108:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value\n\t\t\t\t// horizontal(-)tb\n\t\t\t\tcase 45:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value\n\t\t\t}\n\n\t\t\treturn WEBKIT + value + MS + value + value\n\t}\n\n\treturn value\n}\n","import {IMPORT, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length)\n\t\t\t\t\tbreak\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","var weakMemoize = function weakMemoize(func) {\n // $FlowFixMe flow doesn't include all non-primitive types as allowed for weakmaps\n var cache = new WeakMap();\n return function (arg) {\n if (cache.has(arg)) {\n // $FlowFixMe\n return cache.get(arg);\n }\n\n var ret = func(arg);\n cache.set(arg, ret);\n return ret;\n };\n};\n\nexport default weakMemoize;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import hoistNonReactStatics$1 from 'hoist-non-react-statics';\n\n// this file isolates this package that is not tree-shakeable\n// and if this module doesn't actually contain any logic of its own\n// then Rollup just use 'hoist-non-react-statics' directly in other chunks\n\nvar hoistNonReactStatics = (function (targetComponent, sourceComponent) {\n return hoistNonReactStatics$1(targetComponent, sourceComponent);\n});\n\nexport default hoistNonReactStatics;\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(attr|counters?|url|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { ThemeProvider as MuiThemeProvider } from '@mui/private-theming';\nimport { exactProp } from '@mui/utils';\nimport { ThemeContext as StyledEngineThemeContext } from '@mui/styled-engine';\nimport useTheme from '../useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction InnerThemeProvider(props) {\n const theme = useTheme();\n return /*#__PURE__*/_jsx(StyledEngineThemeContext.Provider, {\n value: typeof theme === 'object' ? theme : {},\n children: props.children\n });\n}\n\nprocess.env.NODE_ENV !== \"production\" ? InnerThemeProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node\n} : void 0;\n/**\n * This component makes the `theme` available down the React tree.\n * It should preferably be used at **the root of your component tree**.\n */\n\nfunction ThemeProvider(props) {\n const {\n children,\n theme: localTheme\n } = props;\n return /*#__PURE__*/_jsx(MuiThemeProvider, {\n theme: localTheme,\n children: /*#__PURE__*/_jsx(InnerThemeProvider, {\n children: children\n })\n });\n}\n\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n\n /**\n * A theme object. You can provide a function to extend the outer theme.\n */\n theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\n\nexport default ThemeProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@mui/utils';\nimport ThemeContext from '../useTheme/ThemeContext';\nimport useTheme from '../useTheme';\nimport nested from './nested'; // To support composition of theme.\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction mergeOuterLocalTheme(outerTheme, localTheme) {\n if (typeof localTheme === 'function') {\n const mergedTheme = localTheme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n if (!mergedTheme) {\n console.error(['MUI: You should return an object from your theme function, i.e.', ' ({})} />'].join('\\n'));\n }\n }\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, localTheme);\n}\n/**\n * This component takes a `theme` prop.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */\n\n\nfunction ThemeProvider(props) {\n const {\n children,\n theme: localTheme\n } = props;\n const outerTheme = useTheme();\n\n if (process.env.NODE_ENV !== 'production') {\n if (outerTheme === null && typeof localTheme === 'function') {\n console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', ' outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n }\n }\n\n const theme = React.useMemo(() => {\n const output = outerTheme === null ? localTheme : mergeOuterLocalTheme(outerTheme, localTheme);\n\n if (output != null) {\n output[nested] = outerTheme !== null;\n }\n\n return output;\n }, [localTheme, outerTheme]);\n return /*#__PURE__*/_jsx(ThemeContext.Provider, {\n value: theme,\n children: children\n });\n}\n\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n\n /**\n * A theme object. You can provide a function to extend the outer theme.\n */\n theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\n\nexport default ThemeProvider;","const hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';","import * as React from 'react';\nimport { createElement, useLayoutEffect, useContext, useRef, Fragment } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, u as useInsertionEffectMaybe } from './emotion-element-cbed451f.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, b as ThemeProvider, _ as __unsafe_useEmotionCache, a as useTheme, w as withEmotionCache, d as withTheme } from './emotion-element-cbed451f.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport 'hoist-non-react-statics';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.8.2\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.cjs.js\": \"./dist/emotion-react.browser.cjs.js\",\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.js\",\n\t\t\"macro.d.ts\",\n\t\t\"macro.js.flow\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.13.10\",\n\t\t\"@emotion/babel-plugin\": \"^11.7.1\",\n\t\t\"@emotion/cache\": \"^11.7.1\",\n\t\t\"@emotion/serialize\": \"^1.0.2\",\n\t\t\"@emotion/utils\": \"^1.1.0\",\n\t\t\"@emotion/weak-memoize\": \"^0.2.5\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\t\"@babel/core\": \"^7.0.0\",\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@babel/core\": {\n\t\t\toptional: true\n\t\t},\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@babel/core\": \"^7.13.10\",\n\t\t\"@emotion/css\": \"11.7.1\",\n\t\t\"@emotion/css-prettifier\": \"1.0.1\",\n\t\t\"@emotion/server\": \"11.4.0\",\n\t\t\"@emotion/styled\": \"11.8.1\",\n\t\t\"@types/react\": \"^16.9.11\",\n\t\tdtslint: \"^4.2.1\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\"\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : useLayoutEffect;\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, useContext(ThemeContext));\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = useRef();\n useInsertionEffect(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffect(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from component.');\n }\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n var rules = useInsertionEffectMaybe(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n var res = insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727 for some reason Jest evaluates modules twice if some consuming module gets mocked with jest.mock\n\n var isJest = typeof jest !== 'undefined';\n\n if (isBrowser && !isJest) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext = // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var niceErrors = {\n 0: \"Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'\",\n 1: function _(annotationType, key) {\n return \"Cannot apply '\" + annotationType + \"' to '\" + key.toString() + \"': Field not found.\";\n },\n\n /*\r\n 2(prop) {\r\n return `invalid decorator for '${prop.toString()}'`\r\n },\r\n 3(prop) {\r\n return `Cannot decorate '${prop.toString()}': action can only be used on properties with a function value.`\r\n },\r\n 4(prop) {\r\n return `Cannot decorate '${prop.toString()}': computed can only be used on getter properties.`\r\n },\r\n */\n 5: \"'keys()' can only be used on observable objects, arrays, sets and maps\",\n 6: \"'values()' can only be used on observable objects, arrays, sets and maps\",\n 7: \"'entries()' can only be used on observable objects, arrays and maps\",\n 8: \"'set()' can only be used on observable objects, arrays and maps\",\n 9: \"'remove()' can only be used on observable objects, arrays and maps\",\n 10: \"'has()' can only be used on observable objects, arrays and maps\",\n 11: \"'get()' can only be used on observable objects, arrays and maps\",\n 12: \"Invalid annotation\",\n 13: \"Dynamic observable objects cannot be frozen\",\n 14: \"Intercept handlers should return nothing or a change object\",\n 15: \"Observable arrays cannot be frozen\",\n 16: \"Modification exception: the internal structure of an observable array was changed.\",\n 17: function _(index, length) {\n return \"[mobx.array] Index out of bounds, \" + index + \" is larger than \" + length;\n },\n 18: \"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\",\n 19: function _(other) {\n return \"Cannot initialize from classes that inherit from Map: \" + other.constructor.name;\n },\n 20: function _(other) {\n return \"Cannot initialize map from \" + other;\n },\n 21: function _(dataStructure) {\n return \"Cannot convert to map from '\" + dataStructure + \"'\";\n },\n 22: \"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\",\n 23: \"It is not possible to get index atoms from arrays\",\n 24: function _(thing) {\n return \"Cannot obtain administration from \" + thing;\n },\n 25: function _(property, name) {\n return \"the entry '\" + property + \"' does not exist in the observable map '\" + name + \"'\";\n },\n 26: \"please specify a property\",\n 27: function _(property, name) {\n return \"no observable property '\" + property.toString() + \"' found on the observable object '\" + name + \"'\";\n },\n 28: function _(thing) {\n return \"Cannot obtain atom from \" + thing;\n },\n 29: \"Expecting some object\",\n 30: \"invalid action stack. did you forget to finish an action?\",\n 31: \"missing option for computed: get\",\n 32: function _(name, derivation) {\n return \"Cycle detected in computation \" + name + \": \" + derivation;\n },\n 33: function _(name) {\n return \"The setter of computed value '\" + name + \"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?\";\n },\n 34: function _(name) {\n return \"[ComputedValue '\" + name + \"'] It is not possible to assign a new value to a computed value.\";\n },\n 35: \"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\",\n 36: \"isolateGlobalState should be called before MobX is running any reactions\",\n 37: function _(method) {\n return \"[mobx] `observableArray.\" + method + \"()` mutates the array in-place, which is not allowed inside a derivation. Use `array.slice().\" + method + \"()` instead\";\n },\n 38: \"'ownKeys()' can only be used on observable objects\",\n 39: \"'defineProperty()' can only be used on observable objects\"\n};\nvar errors = process.env.NODE_ENV !== \"production\" ? niceErrors : {};\nfunction die(error) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n var e = typeof error === \"string\" ? error : errors[error];\n if (typeof e === \"function\") e = e.apply(null, args);\n throw new Error(\"[MobX] \" + e);\n }\n\n throw new Error(typeof error === \"number\" ? \"[MobX] minified error nr: \" + error + (args.length ? \" \" + args.map(String).join(\",\") : \"\") + \". Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts\" : \"[MobX] \" + error);\n}\n\nvar mockGlobal = {};\nfunction getGlobal() {\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n\n if (typeof window !== \"undefined\") {\n return window;\n }\n\n if (typeof global !== \"undefined\") {\n return global;\n }\n\n if (typeof self !== \"undefined\") {\n return self;\n }\n\n return mockGlobal;\n}\n\nvar assign = Object.assign;\nvar getDescriptor = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar objectPrototype = Object.prototype;\nvar EMPTY_ARRAY = [];\nObject.freeze(EMPTY_ARRAY);\nvar EMPTY_OBJECT = {};\nObject.freeze(EMPTY_OBJECT);\nvar hasProxy = typeof Proxy !== \"undefined\";\nvar plainObjectString = /*#__PURE__*/Object.toString();\nfunction assertProxies() {\n if (!hasProxy) {\n die(process.env.NODE_ENV !== \"production\" ? \"`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`\" : \"Proxy not available\");\n }\n}\nfunction warnAboutProxyRequirement(msg) {\n if (process.env.NODE_ENV !== \"production\" && globalState.verifyProxies) {\n die(\"MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to \" + msg);\n }\n}\nfunction getNextId() {\n return ++globalState.mobxGuid;\n}\n/**\r\n * Makes sure that the provided function is invoked at most once.\r\n */\n\nfunction once(func) {\n var invoked = false;\n return function () {\n if (invoked) return;\n invoked = true;\n return func.apply(this, arguments);\n };\n}\nvar noop = function noop() {};\nfunction isFunction(fn) {\n return typeof fn === \"function\";\n}\nfunction isStringish(value) {\n var t = typeof value;\n\n switch (t) {\n case \"string\":\n case \"symbol\":\n case \"number\":\n return true;\n }\n\n return false;\n}\nfunction isObject(value) {\n return value !== null && typeof value === \"object\";\n}\nfunction isPlainObject(value) {\n var _proto$constructor;\n\n if (!isObject(value)) return false;\n var proto = Object.getPrototypeOf(value);\n if (proto == null) return true;\n return ((_proto$constructor = proto.constructor) == null ? void 0 : _proto$constructor.toString()) === plainObjectString;\n} // https://stackoverflow.com/a/37865170\n\nfunction isGenerator(obj) {\n var constructor = obj == null ? void 0 : obj.constructor;\n if (!constructor) return false;\n if (\"GeneratorFunction\" === constructor.name || \"GeneratorFunction\" === constructor.displayName) return true;\n return false;\n}\nfunction addHiddenProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value: value\n });\n}\nfunction addHiddenFinalProp(object, propName, value) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: false,\n configurable: true,\n value: value\n });\n}\nfunction createInstanceofPredicate(name, theClass) {\n var propName = \"isMobX\" + name;\n theClass.prototype[propName] = true;\n return function (x) {\n return isObject(x) && x[propName] === true;\n };\n}\nfunction isES6Map(thing) {\n return thing instanceof Map;\n}\nfunction isES6Set(thing) {\n return thing instanceof Set;\n}\nvar hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\";\n/**\r\n * Returns the following: own enumerable keys and symbols.\r\n */\n\nfunction getPlainObjectKeys(object) {\n var keys = Object.keys(object); // Not supported in IE, so there are not going to be symbol props anyway...\n\n if (!hasGetOwnPropertySymbols) return keys;\n var symbols = Object.getOwnPropertySymbols(object);\n if (!symbols.length) return keys;\n return [].concat(keys, symbols.filter(function (s) {\n return objectPrototype.propertyIsEnumerable.call(object, s);\n }));\n} // From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\n\nvar ownKeys = typeof Reflect !== \"undefined\" && Reflect.ownKeys ? Reflect.ownKeys : hasGetOwnPropertySymbols ? function (obj) {\n return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj));\n} :\n/* istanbul ignore next */\nObject.getOwnPropertyNames;\nfunction stringifyKey(key) {\n if (typeof key === \"string\") return key;\n if (typeof key === \"symbol\") return key.toString();\n return new String(key).toString();\n}\nfunction toPrimitive(value) {\n return value === null ? null : typeof value === \"object\" ? \"\" + value : value;\n}\nfunction hasProp(target, prop) {\n return objectPrototype.hasOwnProperty.call(target, prop);\n} // From Immer utils\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors(target) {\n // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n var res = {}; // Note: without polyfill for ownKeys, symbols won't be picked up\n\n ownKeys(target).forEach(function (key) {\n res[key] = getDescriptor(target, key);\n });\n return res;\n};\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n it = o[Symbol.iterator]();\n return it.next.bind(it);\n}\n\nvar storedAnnotationsSymbol = /*#__PURE__*/Symbol(\"mobx-stored-annotations\");\n/**\r\n * Creates a function that acts as\r\n * - decorator\r\n * - annotation object\r\n */\n\nfunction createDecoratorAnnotation(annotation) {\n function decorator(target, property) {\n storeAnnotation(target, property, annotation);\n }\n\n return Object.assign(decorator, annotation);\n}\n/**\r\n * Stores annotation to prototype,\r\n * so it can be inspected later by `makeObservable` called from constructor\r\n */\n\nfunction storeAnnotation(prototype, key, annotation) {\n if (!hasProp(prototype, storedAnnotationsSymbol)) {\n addHiddenProp(prototype, storedAnnotationsSymbol, _extends({}, prototype[storedAnnotationsSymbol]));\n } // @override must override something\n\n\n if (process.env.NODE_ENV !== \"production\" && isOverride(annotation) && !hasProp(prototype[storedAnnotationsSymbol], key)) {\n var fieldName = prototype.constructor.name + \".prototype.\" + key.toString();\n die(\"'\" + fieldName + \"' is decorated with 'override', \" + \"but no such decorated member was found on prototype.\");\n } // Cannot re-decorate\n\n\n assertNotDecorated(prototype, annotation, key); // Ignore override\n\n if (!isOverride(annotation)) {\n prototype[storedAnnotationsSymbol][key] = annotation;\n }\n}\n\nfunction assertNotDecorated(prototype, annotation, key) {\n if (process.env.NODE_ENV !== \"production\" && !isOverride(annotation) && hasProp(prototype[storedAnnotationsSymbol], key)) {\n var fieldName = prototype.constructor.name + \".prototype.\" + key.toString();\n var currentAnnotationType = prototype[storedAnnotationsSymbol][key].annotationType_;\n var requestedAnnotationType = annotation.annotationType_;\n die(\"Cannot apply '@\" + requestedAnnotationType + \"' to '\" + fieldName + \"':\" + (\"\\nThe field is already decorated with '@\" + currentAnnotationType + \"'.\") + \"\\nRe-decorating fields is not allowed.\" + \"\\nUse '@override' decorator for methods overriden by subclass.\");\n }\n}\n/**\r\n * Collects annotations from prototypes and stores them on target (instance)\r\n */\n\n\nfunction collectStoredAnnotations(target) {\n if (!hasProp(target, storedAnnotationsSymbol)) {\n if (process.env.NODE_ENV !== \"production\" && !target[storedAnnotationsSymbol]) {\n die(\"No annotations were passed to makeObservable, but no decorated members have been found either\");\n } // We need a copy as we will remove annotation from the list once it's applied.\n\n\n addHiddenProp(target, storedAnnotationsSymbol, _extends({}, target[storedAnnotationsSymbol]));\n }\n\n return target[storedAnnotationsSymbol];\n}\n\nvar $mobx = /*#__PURE__*/Symbol(\"mobx administration\");\nvar Atom = /*#__PURE__*/function () {\n // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n\n /**\r\n * Create a new atom. For debugging purposes it is recommended to give it a name.\r\n * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\r\n */\n function Atom(name_) {\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"Atom@\" + getNextId() : \"Atom\";\n }\n\n this.name_ = void 0;\n this.isPendingUnobservation_ = false;\n this.isBeingObserved_ = false;\n this.observers_ = new Set();\n this.diffValue_ = 0;\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.NOT_TRACKING_;\n this.onBOL = void 0;\n this.onBUOL = void 0;\n this.name_ = name_;\n } // onBecomeObservedListeners\n\n\n var _proto = Atom.prototype;\n\n _proto.onBO = function onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(function (listener) {\n return listener();\n });\n }\n };\n\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(function (listener) {\n return listener();\n });\n }\n }\n /**\r\n * Invoke this method to notify mobx that your atom has been used somehow.\r\n * Returns true if there is currently a reactive context.\r\n */\n ;\n\n _proto.reportObserved = function reportObserved$1() {\n return reportObserved(this);\n }\n /**\r\n * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\r\n */\n ;\n\n _proto.reportChanged = function reportChanged() {\n startBatch();\n propagateChanged(this);\n endBatch();\n };\n\n _proto.toString = function toString() {\n return this.name_;\n };\n\n return Atom;\n}();\nvar isAtom = /*#__PURE__*/createInstanceofPredicate(\"Atom\", Atom);\nfunction createAtom(name, onBecomeObservedHandler, onBecomeUnobservedHandler) {\n if (onBecomeObservedHandler === void 0) {\n onBecomeObservedHandler = noop;\n }\n\n if (onBecomeUnobservedHandler === void 0) {\n onBecomeUnobservedHandler = noop;\n }\n\n var atom = new Atom(name); // default `noop` listener will not initialize the hook Set\n\n if (onBecomeObservedHandler !== noop) {\n onBecomeObserved(atom, onBecomeObservedHandler);\n }\n\n if (onBecomeUnobservedHandler !== noop) {\n onBecomeUnobserved(atom, onBecomeUnobservedHandler);\n }\n\n return atom;\n}\n\nfunction identityComparer(a, b) {\n return a === b;\n}\n\nfunction structuralComparer(a, b) {\n return deepEqual(a, b);\n}\n\nfunction shallowComparer(a, b) {\n return deepEqual(a, b, 1);\n}\n\nfunction defaultComparer(a, b) {\n if (Object.is) return Object.is(a, b);\n return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b;\n}\n\nvar comparer = {\n identity: identityComparer,\n structural: structuralComparer,\n \"default\": defaultComparer,\n shallow: shallowComparer\n};\n\nfunction deepEnhancer(v, _, name) {\n // it is an observable already, done\n if (isObservable(v)) return v; // something that can be converted and mutated?\n\n if (Array.isArray(v)) return observable.array(v, {\n name: name\n });\n if (isPlainObject(v)) return observable.object(v, undefined, {\n name: name\n });\n if (isES6Map(v)) return observable.map(v, {\n name: name\n });\n if (isES6Set(v)) return observable.set(v, {\n name: name\n });\n\n if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n if (isGenerator(v)) {\n return flow(v);\n } else {\n return autoAction(name, v);\n }\n }\n\n return v;\n}\nfunction shallowEnhancer(v, _, name) {\n if (v === undefined || v === null) return v;\n if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v)) return v;\n if (Array.isArray(v)) return observable.array(v, {\n name: name,\n deep: false\n });\n if (isPlainObject(v)) return observable.object(v, undefined, {\n name: name,\n deep: false\n });\n if (isES6Map(v)) return observable.map(v, {\n name: name,\n deep: false\n });\n if (isES6Set(v)) return observable.set(v, {\n name: name,\n deep: false\n });\n if (process.env.NODE_ENV !== \"production\") die(\"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\");\n}\nfunction referenceEnhancer(newValue) {\n // never turn into an observable\n return newValue;\n}\nfunction refStructEnhancer(v, oldValue) {\n if (process.env.NODE_ENV !== \"production\" && isObservable(v)) die(\"observable.struct should not be used with observable values\");\n if (deepEqual(v, oldValue)) return oldValue;\n return v;\n}\n\nvar OVERRIDE = \"override\";\nvar override = /*#__PURE__*/createDecoratorAnnotation({\n annotationType_: OVERRIDE,\n make_: make_,\n extend_: extend_\n});\nfunction isOverride(annotation) {\n return annotation.annotationType_ === OVERRIDE;\n}\n\nfunction make_(adm, key) {\n // Must not be plain object\n if (process.env.NODE_ENV !== \"production\" && adm.isPlainObject_) {\n die(\"Cannot apply '\" + this.annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + this.annotationType_ + \"' cannot be used on plain objects.\"));\n } // Must override something\n\n\n if (process.env.NODE_ENV !== \"production\" && !hasProp(adm.appliedAnnotations_, key)) {\n die(\"'\" + adm.name_ + \".\" + key.toString() + \"' is annotated with '\" + this.annotationType_ + \"', \" + \"but no such annotated member was found on prototype.\");\n }\n\n return 0\n /* Cancel */\n ;\n}\n\nfunction extend_(adm, key, descriptor, proxyTrap) {\n die(\"'\" + this.annotationType_ + \"' can only be used with 'makeObservable'\");\n}\n\nfunction createActionAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$1,\n extend_: extend_$1\n };\n}\n\nfunction make_$1(adm, key, descriptor, source) {\n var _this$options_;\n\n // bound\n if ((_this$options_ = this.options_) == null ? void 0 : _this$options_.bound) {\n return this.extend_(adm, key, descriptor, false) === null ? 0\n /* Cancel */\n : 1\n /* Break */\n ;\n } // own\n\n\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null ? 0\n /* Cancel */\n : 2\n /* Continue */\n ;\n } // prototype\n\n\n if (isAction(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1\n /* Break */\n ;\n }\n\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false);\n defineProperty(source, key, actionDescriptor);\n return 2\n /* Continue */\n ;\n}\n\nfunction extend_$1(adm, key, descriptor, proxyTrap) {\n var actionDescriptor = createActionDescriptor(adm, this, key, descriptor);\n return adm.defineProperty_(key, actionDescriptor, proxyTrap);\n}\n\nfunction assertActionDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n\n if (process.env.NODE_ENV !== \"production\" && !isFunction(value)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on properties with a function value.\"));\n }\n}\n\nfunction createActionDescriptor(adm, annotation, key, descriptor, // provides ability to disable safeDescriptors for prototypes\nsafeDescriptors) {\n var _annotation$options_, _annotation$options_$, _annotation$options_2, _annotation$options_$2, _annotation$options_3, _annotation$options_4, _adm$proxy_2;\n\n if (safeDescriptors === void 0) {\n safeDescriptors = globalState.safeDescriptors;\n }\n\n assertActionDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n\n if ((_annotation$options_ = annotation.options_) == null ? void 0 : _annotation$options_.bound) {\n var _adm$proxy_;\n\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n\n return {\n value: createAction((_annotation$options_$ = (_annotation$options_2 = annotation.options_) == null ? void 0 : _annotation$options_2.name) != null ? _annotation$options_$ : key.toString(), value, (_annotation$options_$2 = (_annotation$options_3 = annotation.options_) == null ? void 0 : _annotation$options_3.autoAction) != null ? _annotation$options_$2 : false, // https://github.com/mobxjs/mobx/discussions/3140\n ((_annotation$options_4 = annotation.options_) == null ? void 0 : _annotation$options_4.bound) ? (_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_ : undefined),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\n\nfunction createFlowAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$2,\n extend_: extend_$2\n };\n}\n\nfunction make_$2(adm, key, descriptor, source) {\n var _this$options_;\n\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null ? 0\n /* Cancel */\n : 2\n /* Continue */\n ;\n } // prototype\n // bound - must annotate protos to support super.flow()\n\n\n if (((_this$options_ = this.options_) == null ? void 0 : _this$options_.bound) && !isFlow(adm.target_[key])) {\n if (this.extend_(adm, key, descriptor, false) === null) return 0\n /* Cancel */\n ;\n }\n\n if (isFlow(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return 1\n /* Break */\n ;\n }\n\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false);\n defineProperty(source, key, flowDescriptor);\n return 2\n /* Continue */\n ;\n}\n\nfunction extend_$2(adm, key, descriptor, proxyTrap) {\n var _this$options_2;\n\n var flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, (_this$options_2 = this.options_) == null ? void 0 : _this$options_2.bound);\n return adm.defineProperty_(key, flowDescriptor, proxyTrap);\n}\n\nfunction assertFlowDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var value = _ref2.value;\n\n if (process.env.NODE_ENV !== \"production\" && !isFunction(value)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on properties with a generator function value.\"));\n }\n}\n\nfunction createFlowDescriptor(adm, annotation, key, descriptor, bound, // provides ability to disable safeDescriptors for prototypes\nsafeDescriptors) {\n if (safeDescriptors === void 0) {\n safeDescriptors = globalState.safeDescriptors;\n }\n\n assertFlowDescriptor(adm, annotation, key, descriptor);\n var value = descriptor.value;\n\n if (bound) {\n var _adm$proxy_;\n\n value = value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n\n return {\n value: flow(value),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n };\n}\n\nfunction createComputedAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$3,\n extend_: extend_$3\n };\n}\n\nfunction make_$3(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0\n /* Cancel */\n : 1\n /* Break */\n ;\n}\n\nfunction extend_$3(adm, key, descriptor, proxyTrap) {\n assertComputedDescriptor(adm, this, key, descriptor);\n return adm.defineComputedProperty_(key, _extends({}, this.options_, {\n get: descriptor.get,\n set: descriptor.set\n }), proxyTrap);\n}\n\nfunction assertComputedDescriptor(adm, _ref, key, _ref2) {\n var annotationType_ = _ref.annotationType_;\n var get = _ref2.get;\n\n if (process.env.NODE_ENV !== \"production\" && !get) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' can only be used on getter(+setter) properties.\"));\n }\n}\n\nfunction createObservableAnnotation(name, options) {\n return {\n annotationType_: name,\n options_: options,\n make_: make_$4,\n extend_: extend_$4\n };\n}\n\nfunction make_$4(adm, key, descriptor) {\n return this.extend_(adm, key, descriptor, false) === null ? 0\n /* Cancel */\n : 1\n /* Break */\n ;\n}\n\nfunction extend_$4(adm, key, descriptor, proxyTrap) {\n var _this$options_$enhanc, _this$options_;\n\n assertObservableDescriptor(adm, this, key, descriptor);\n return adm.defineObservableProperty_(key, descriptor.value, (_this$options_$enhanc = (_this$options_ = this.options_) == null ? void 0 : _this$options_.enhancer) != null ? _this$options_$enhanc : deepEnhancer, proxyTrap);\n}\n\nfunction assertObservableDescriptor(adm, _ref, key, descriptor) {\n var annotationType_ = _ref.annotationType_;\n\n if (process.env.NODE_ENV !== \"production\" && !(\"value\" in descriptor)) {\n die(\"Cannot apply '\" + annotationType_ + \"' to '\" + adm.name_ + \".\" + key.toString() + \"':\" + (\"\\n'\" + annotationType_ + \"' cannot be used on getter/setter properties\"));\n }\n}\n\nvar AUTO = \"true\";\nvar autoAnnotation = /*#__PURE__*/createAutoAnnotation();\nfunction createAutoAnnotation(options) {\n return {\n annotationType_: AUTO,\n options_: options,\n make_: make_$5,\n extend_: extend_$5\n };\n}\n\nfunction make_$5(adm, key, descriptor, source) {\n var _this$options_3, _this$options_4;\n\n // getter -> computed\n if (descriptor.get) {\n return computed.make_(adm, key, descriptor, source);\n } // lone setter -> action setter\n\n\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.make_\n var set = createAction(key.toString(), descriptor.set); // own\n\n if (source === adm.target_) {\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: set\n }) === null ? 0\n /* Cancel */\n : 2\n /* Continue */\n ;\n } // proto\n\n\n defineProperty(source, key, {\n configurable: true,\n set: set\n });\n return 2\n /* Continue */\n ;\n } // function on proto -> autoAction/flow\n\n\n if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n var _this$options_2;\n\n if (isGenerator(descriptor.value)) {\n var _this$options_;\n\n var flowAnnotation = ((_this$options_ = this.options_) == null ? void 0 : _this$options_.autoBind) ? flow.bound : flow;\n return flowAnnotation.make_(adm, key, descriptor, source);\n }\n\n var actionAnnotation = ((_this$options_2 = this.options_) == null ? void 0 : _this$options_2.autoBind) ? autoAction.bound : autoAction;\n return actionAnnotation.make_(adm, key, descriptor, source);\n } // other -> observable\n // Copy props from proto as well, see test:\n // \"decorate should work with Object.create\"\n\n\n var observableAnnotation = ((_this$options_3 = this.options_) == null ? void 0 : _this$options_3.deep) === false ? observable.ref : observable; // if function respect autoBind option\n\n if (typeof descriptor.value === \"function\" && ((_this$options_4 = this.options_) == null ? void 0 : _this$options_4.autoBind)) {\n var _adm$proxy_;\n\n descriptor.value = descriptor.value.bind((_adm$proxy_ = adm.proxy_) != null ? _adm$proxy_ : adm.target_);\n }\n\n return observableAnnotation.make_(adm, key, descriptor, source);\n}\n\nfunction extend_$5(adm, key, descriptor, proxyTrap) {\n var _this$options_5, _this$options_6;\n\n // getter -> computed\n if (descriptor.get) {\n return computed.extend_(adm, key, descriptor, proxyTrap);\n } // lone setter -> action setter\n\n\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.extend_\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: createAction(key.toString(), descriptor.set)\n }, proxyTrap);\n } // other -> observable\n // if function respect autoBind option\n\n\n if (typeof descriptor.value === \"function\" && ((_this$options_5 = this.options_) == null ? void 0 : _this$options_5.autoBind)) {\n var _adm$proxy_2;\n\n descriptor.value = descriptor.value.bind((_adm$proxy_2 = adm.proxy_) != null ? _adm$proxy_2 : adm.target_);\n }\n\n var observableAnnotation = ((_this$options_6 = this.options_) == null ? void 0 : _this$options_6.deep) === false ? observable.ref : observable;\n return observableAnnotation.extend_(adm, key, descriptor, proxyTrap);\n}\n\nvar OBSERVABLE = \"observable\";\nvar OBSERVABLE_REF = \"observable.ref\";\nvar OBSERVABLE_SHALLOW = \"observable.shallow\";\nvar OBSERVABLE_STRUCT = \"observable.struct\"; // Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\n\nvar defaultCreateObservableOptions = {\n deep: true,\n name: undefined,\n defaultDecorator: undefined,\n proxy: true\n};\nObject.freeze(defaultCreateObservableOptions);\nfunction asCreateObservableOptions(thing) {\n return thing || defaultCreateObservableOptions;\n}\nvar observableAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE);\nvar observableRefAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_REF, {\n enhancer: referenceEnhancer\n});\nvar observableShallowAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_SHALLOW, {\n enhancer: shallowEnhancer\n});\nvar observableStructAnnotation = /*#__PURE__*/createObservableAnnotation(OBSERVABLE_STRUCT, {\n enhancer: refStructEnhancer\n});\nvar observableDecoratorAnnotation = /*#__PURE__*/createDecoratorAnnotation(observableAnnotation);\nfunction getEnhancerFromOptions(options) {\n return options.deep === true ? deepEnhancer : options.deep === false ? referenceEnhancer : getEnhancerFromAnnotation(options.defaultDecorator);\n}\nfunction getAnnotationFromOptions(options) {\n var _options$defaultDecor;\n\n return options ? (_options$defaultDecor = options.defaultDecorator) != null ? _options$defaultDecor : createAutoAnnotation(options) : undefined;\n}\nfunction getEnhancerFromAnnotation(annotation) {\n var _annotation$options_$, _annotation$options_;\n\n return !annotation ? deepEnhancer : (_annotation$options_$ = (_annotation$options_ = annotation.options_) == null ? void 0 : _annotation$options_.enhancer) != null ? _annotation$options_$ : deepEnhancer;\n}\n/**\r\n * Turns an object, array or function into a reactive structure.\r\n * @param v the value which should become observable.\r\n */\n\nfunction createObservable(v, arg2, arg3) {\n // @observable someProp;\n if (isStringish(arg2)) {\n storeAnnotation(v, arg2, observableAnnotation);\n return;\n } // already observable - ignore\n\n\n if (isObservable(v)) return v; // plain object\n\n if (isPlainObject(v)) return observable.object(v, arg2, arg3); // Array\n\n if (Array.isArray(v)) return observable.array(v, arg2); // Map\n\n if (isES6Map(v)) return observable.map(v, arg2); // Set\n\n if (isES6Set(v)) return observable.set(v, arg2); // other object - ignore\n\n if (typeof v === \"object\" && v !== null) return v; // anything else\n\n return observable.box(v, arg2);\n}\n\nObject.assign(createObservable, observableDecoratorAnnotation);\nvar observableFactories = {\n box: function box(value, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals);\n },\n array: function array(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return (globalState.useProxies === false || o.proxy === false ? createLegacyArray : createObservableArray)(initialValues, getEnhancerFromOptions(o), o.name);\n },\n map: function map(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableMap(initialValues, getEnhancerFromOptions(o), o.name);\n },\n set: function set(initialValues, options) {\n var o = asCreateObservableOptions(options);\n return new ObservableSet(initialValues, getEnhancerFromOptions(o), o.name);\n },\n object: function object(props, decorators, options) {\n return extendObservable(globalState.useProxies === false || (options == null ? void 0 : options.proxy) === false ? asObservableObject({}, options) : asDynamicObservableObject({}, options), props, decorators);\n },\n ref: /*#__PURE__*/createDecoratorAnnotation(observableRefAnnotation),\n shallow: /*#__PURE__*/createDecoratorAnnotation(observableShallowAnnotation),\n deep: observableDecoratorAnnotation,\n struct: /*#__PURE__*/createDecoratorAnnotation(observableStructAnnotation)\n}; // eslint-disable-next-line\n\nvar observable = /*#__PURE__*/assign(createObservable, observableFactories);\n\nvar COMPUTED = \"computed\";\nvar COMPUTED_STRUCT = \"computed.struct\";\nvar computedAnnotation = /*#__PURE__*/createComputedAnnotation(COMPUTED);\nvar computedStructAnnotation = /*#__PURE__*/createComputedAnnotation(COMPUTED_STRUCT, {\n equals: comparer.structural\n});\n/**\r\n * Decorator for class properties: @computed get value() { return expr; }.\r\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\r\n */\n\nvar computed = function computed(arg1, arg2) {\n if (isStringish(arg2)) {\n // @computed\n return storeAnnotation(arg1, arg2, computedAnnotation);\n }\n\n if (isPlainObject(arg1)) {\n // @computed({ options })\n return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1));\n } // computed(expr, options?)\n\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(arg1)) die(\"First argument to `computed` should be an expression.\");\n if (isFunction(arg2)) die(\"A setter as second argument is no longer supported, use `{ set: fn }` option instead\");\n }\n\n var opts = isPlainObject(arg2) ? arg2 : {};\n opts.get = arg1;\n opts.name || (opts.name = arg1.name || \"\");\n /* for generated name */\n\n return new ComputedValue(opts);\n};\nObject.assign(computed, computedAnnotation);\ncomputed.struct = /*#__PURE__*/createDecoratorAnnotation(computedStructAnnotation);\n\nvar _getDescriptor$config, _getDescriptor;\n// mobx versions\n\nvar currentActionId = 0;\nvar nextActionId = 1;\nvar isFunctionNameConfigurable = (_getDescriptor$config = (_getDescriptor = /*#__PURE__*/getDescriptor(function () {}, \"name\")) == null ? void 0 : _getDescriptor.configurable) != null ? _getDescriptor$config : false; // we can safely recycle this object\n\nvar tmpNameDescriptor = {\n value: \"action\",\n configurable: true,\n writable: false,\n enumerable: false\n};\nfunction createAction(actionName, fn, autoAction, ref) {\n if (autoAction === void 0) {\n autoAction = false;\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(fn)) die(\"`action` can only be invoked on functions\");\n if (typeof actionName !== \"string\" || !actionName) die(\"actions should have valid names, got: '\" + actionName + \"'\");\n }\n\n function res() {\n return executeAction(actionName, autoAction, fn, ref || this, arguments);\n }\n\n res.isMobxAction = true;\n\n if (isFunctionNameConfigurable) {\n tmpNameDescriptor.value = actionName;\n Object.defineProperty(res, \"name\", tmpNameDescriptor);\n }\n\n return res;\n}\nfunction executeAction(actionName, canRunAsDerivation, fn, scope, args) {\n var runInfo = _startAction(actionName, canRunAsDerivation, scope, args);\n\n try {\n return fn.apply(scope, args);\n } catch (err) {\n runInfo.error_ = err;\n throw err;\n } finally {\n _endAction(runInfo);\n }\n}\nfunction _startAction(actionName, canRunAsDerivation, // true for autoAction\nscope, args) {\n var notifySpy_ = process.env.NODE_ENV !== \"production\" && isSpyEnabled() && !!actionName;\n var startTime_ = 0;\n\n if (process.env.NODE_ENV !== \"production\" && notifySpy_) {\n startTime_ = Date.now();\n var flattenedArgs = args ? Array.from(args) : EMPTY_ARRAY;\n spyReportStart({\n type: ACTION,\n name: actionName,\n object: scope,\n arguments: flattenedArgs\n });\n }\n\n var prevDerivation_ = globalState.trackingDerivation;\n var runAsAction = !canRunAsDerivation || !prevDerivation_;\n startBatch();\n var prevAllowStateChanges_ = globalState.allowStateChanges; // by default preserve previous allow\n\n if (runAsAction) {\n untrackedStart();\n prevAllowStateChanges_ = allowStateChangesStart(true);\n }\n\n var prevAllowStateReads_ = allowStateReadsStart(true);\n var runInfo = {\n runAsAction_: runAsAction,\n prevDerivation_: prevDerivation_,\n prevAllowStateChanges_: prevAllowStateChanges_,\n prevAllowStateReads_: prevAllowStateReads_,\n notifySpy_: notifySpy_,\n startTime_: startTime_,\n actionId_: nextActionId++,\n parentActionId_: currentActionId\n };\n currentActionId = runInfo.actionId_;\n return runInfo;\n}\nfunction _endAction(runInfo) {\n if (currentActionId !== runInfo.actionId_) {\n die(30);\n }\n\n currentActionId = runInfo.parentActionId_;\n\n if (runInfo.error_ !== undefined) {\n globalState.suppressReactionErrors = true;\n }\n\n allowStateChangesEnd(runInfo.prevAllowStateChanges_);\n allowStateReadsEnd(runInfo.prevAllowStateReads_);\n endBatch();\n if (runInfo.runAsAction_) untrackedEnd(runInfo.prevDerivation_);\n\n if (process.env.NODE_ENV !== \"production\" && runInfo.notifySpy_) {\n spyReportEnd({\n time: Date.now() - runInfo.startTime_\n });\n }\n\n globalState.suppressReactionErrors = false;\n}\nfunction allowStateChanges(allowStateChanges, func) {\n var prev = allowStateChangesStart(allowStateChanges);\n\n try {\n return func();\n } finally {\n allowStateChangesEnd(prev);\n }\n}\nfunction allowStateChangesStart(allowStateChanges) {\n var prev = globalState.allowStateChanges;\n globalState.allowStateChanges = allowStateChanges;\n return prev;\n}\nfunction allowStateChangesEnd(prev) {\n globalState.allowStateChanges = prev;\n}\n\nvar _Symbol$toPrimitive;\nvar CREATE = \"create\";\n_Symbol$toPrimitive = Symbol.toPrimitive;\nvar ObservableValue = /*#__PURE__*/function (_Atom) {\n _inheritsLoose(ObservableValue, _Atom);\n\n function ObservableValue(value, enhancer, name_, notifySpy, equals) {\n var _this;\n\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"ObservableValue@\" + getNextId() : \"ObservableValue\";\n }\n\n if (notifySpy === void 0) {\n notifySpy = true;\n }\n\n if (equals === void 0) {\n equals = comparer[\"default\"];\n }\n\n _this = _Atom.call(this, name_) || this;\n _this.enhancer = void 0;\n _this.name_ = void 0;\n _this.equals = void 0;\n _this.hasUnreportedChange_ = false;\n _this.interceptors_ = void 0;\n _this.changeListeners_ = void 0;\n _this.value_ = void 0;\n _this.dehancer = void 0;\n _this.enhancer = enhancer;\n _this.name_ = name_;\n _this.equals = equals;\n _this.value_ = enhancer(value, undefined, name_);\n\n if (process.env.NODE_ENV !== \"production\" && notifySpy && isSpyEnabled()) {\n // only notify spy if this is a stand-alone observable\n spyReport({\n type: CREATE,\n object: _assertThisInitialized(_this),\n observableKind: \"value\",\n debugObjectName: _this.name_,\n newValue: \"\" + _this.value_\n });\n }\n\n return _this;\n }\n\n var _proto = ObservableValue.prototype;\n\n _proto.dehanceValue = function dehanceValue(value) {\n if (this.dehancer !== undefined) return this.dehancer(value);\n return value;\n };\n\n _proto.set = function set(newValue) {\n var oldValue = this.value_;\n newValue = this.prepareNewValue_(newValue);\n\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n\n if (process.env.NODE_ENV !== \"production\" && notifySpy) {\n spyReportStart({\n type: UPDATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n\n this.setNewValue_(newValue);\n if (process.env.NODE_ENV !== \"production\" && notifySpy) spyReportEnd();\n }\n };\n\n _proto.prepareNewValue_ = function prepareNewValue_(newValue) {\n checkIfStateModificationsAreAllowed(this);\n\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this,\n type: UPDATE,\n newValue: newValue\n });\n if (!change) return globalState.UNCHANGED;\n newValue = change.newValue;\n } // apply modifier\n\n\n newValue = this.enhancer(newValue, this.value_, this.name_);\n return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue;\n };\n\n _proto.setNewValue_ = function setNewValue_(newValue) {\n var oldValue = this.value_;\n this.value_ = newValue;\n this.reportChanged();\n\n if (hasListeners(this)) {\n notifyListeners(this, {\n type: UPDATE,\n object: this,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n };\n\n _proto.get = function get() {\n this.reportObserved();\n return this.dehanceValue(this.value_);\n };\n\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately) listener({\n observableKind: \"value\",\n debugObjectName: this.name_,\n object: this,\n type: UPDATE,\n newValue: this.value_,\n oldValue: undefined\n });\n return registerListener(this, listener);\n };\n\n _proto.raw = function raw() {\n // used by MST ot get undehanced value\n return this.value_;\n };\n\n _proto.toJSON = function toJSON() {\n return this.get();\n };\n\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.value_ + \"]\";\n };\n\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n\n _proto[_Symbol$toPrimitive] = function () {\n return this.valueOf();\n };\n\n return ObservableValue;\n}(Atom);\nvar isObservableValue = /*#__PURE__*/createInstanceofPredicate(\"ObservableValue\", ObservableValue);\n\nvar _Symbol$toPrimitive$1;\n/**\r\n * A node in the state dependency root that observes other nodes, and can be observed itself.\r\n *\r\n * ComputedValue will remember the result of the computation for the duration of the batch, or\r\n * while being observed.\r\n *\r\n * During this time it will recompute only when one of its direct dependencies changed,\r\n * but only when it is being accessed with `ComputedValue.get()`.\r\n *\r\n * Implementation description:\r\n * 1. First time it's being accessed it will compute and remember result\r\n * give back remembered result until 2. happens\r\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\r\n * 3. When it's being accessed, recompute if any shallow dependency changed.\r\n * if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\r\n * go to step 2. either way\r\n *\r\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\r\n */\n\n_Symbol$toPrimitive$1 = Symbol.toPrimitive;\nvar ComputedValue = /*#__PURE__*/function () {\n // nodes we are looking at. Our value depends on these nodes\n // during tracking it's an array with new observed observers\n // to check for cycles\n // N.B: unminified as it is used by MST\n\n /**\r\n * Create a new computed value based on a function expression.\r\n *\r\n * The `name` property is for debug purposes only.\r\n *\r\n * The `equals` property specifies the comparer function to use to determine if a newly produced\r\n * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\r\n * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\r\n * Structural comparison can be convenient if you always produce a new aggregated object and\r\n * don't want to notify observers if it is structurally the same.\r\n * This is useful for working with vectors, mouse coordinates etc.\r\n */\n function ComputedValue(options) {\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.observing_ = [];\n this.newObserving_ = null;\n this.isBeingObserved_ = false;\n this.isPendingUnobservation_ = false;\n this.observers_ = new Set();\n this.diffValue_ = 0;\n this.runId_ = 0;\n this.lastAccessedBy_ = 0;\n this.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n this.unboundDepsCount_ = 0;\n this.value_ = new CaughtException(null);\n this.name_ = void 0;\n this.triggeredBy_ = void 0;\n this.isComputing_ = false;\n this.isRunningSetter_ = false;\n this.derivation = void 0;\n this.setter_ = void 0;\n this.isTracing_ = TraceMode.NONE;\n this.scope_ = void 0;\n this.equals_ = void 0;\n this.requiresReaction_ = void 0;\n this.keepAlive_ = void 0;\n this.onBOL = void 0;\n this.onBUOL = void 0;\n if (!options.get) die(31);\n this.derivation = options.get;\n this.name_ = options.name || (process.env.NODE_ENV !== \"production\" ? \"ComputedValue@\" + getNextId() : \"ComputedValue\");\n\n if (options.set) {\n this.setter_ = createAction(process.env.NODE_ENV !== \"production\" ? this.name_ + \"-setter\" : \"ComputedValue-setter\", options.set);\n }\n\n this.equals_ = options.equals || (options.compareStructural || options.struct ? comparer.structural : comparer[\"default\"]);\n this.scope_ = options.context;\n this.requiresReaction_ = !!options.requiresReaction;\n this.keepAlive_ = !!options.keepAlive;\n }\n\n var _proto = ComputedValue.prototype;\n\n _proto.onBecomeStale_ = function onBecomeStale_() {\n propagateMaybeChanged(this);\n };\n\n _proto.onBO = function onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(function (listener) {\n return listener();\n });\n }\n };\n\n _proto.onBUO = function onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(function (listener) {\n return listener();\n });\n }\n }\n /**\r\n * Returns the current value of this computed value.\r\n * Will evaluate its computation first if needed.\r\n */\n ;\n\n _proto.get = function get() {\n if (this.isComputing_) die(32, this.name_, this.derivation);\n\n if (globalState.inBatch === 0 && // !globalState.trackingDerivatpion &&\n this.observers_.size === 0 && !this.keepAlive_) {\n if (shouldCompute(this)) {\n this.warnAboutUntrackedRead_();\n startBatch(); // See perf test 'computed memoization'\n\n this.value_ = this.computeValue_(false);\n endBatch();\n }\n } else {\n reportObserved(this);\n\n if (shouldCompute(this)) {\n var prevTrackingContext = globalState.trackingContext;\n if (this.keepAlive_ && !prevTrackingContext) globalState.trackingContext = this;\n if (this.trackAndCompute()) propagateChangeConfirmed(this);\n globalState.trackingContext = prevTrackingContext;\n }\n }\n\n var result = this.value_;\n if (isCaughtException(result)) throw result.cause;\n return result;\n };\n\n _proto.set = function set(value) {\n if (this.setter_) {\n if (this.isRunningSetter_) die(33, this.name_);\n this.isRunningSetter_ = true;\n\n try {\n this.setter_.call(this.scope_, value);\n } finally {\n this.isRunningSetter_ = false;\n }\n } else die(34, this.name_);\n };\n\n _proto.trackAndCompute = function trackAndCompute() {\n // N.B: unminified as it is used by MST\n var oldValue = this.value_;\n var wasSuspended =\n /* see #1208 */\n this.dependenciesState_ === IDerivationState_.NOT_TRACKING_;\n var newValue = this.computeValue_(true);\n var changed = wasSuspended || isCaughtException(oldValue) || isCaughtException(newValue) || !this.equals_(oldValue, newValue);\n\n if (changed) {\n this.value_ = newValue;\n\n if (process.env.NODE_ENV !== \"production\" && isSpyEnabled()) {\n spyReport({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n object: this.scope_,\n type: \"update\",\n oldValue: oldValue,\n newValue: newValue\n });\n }\n }\n\n return changed;\n };\n\n _proto.computeValue_ = function computeValue_(track) {\n this.isComputing_ = true; // don't allow state changes during computation\n\n var prev = allowStateChangesStart(false);\n var res;\n\n if (track) {\n res = trackDerivedFunction(this, this.derivation, this.scope_);\n } else {\n if (globalState.disableErrorBoundaries === true) {\n res = this.derivation.call(this.scope_);\n } else {\n try {\n res = this.derivation.call(this.scope_);\n } catch (e) {\n res = new CaughtException(e);\n }\n }\n }\n\n allowStateChangesEnd(prev);\n this.isComputing_ = false;\n return res;\n };\n\n _proto.suspend_ = function suspend_() {\n if (!this.keepAlive_) {\n clearObserving(this);\n this.value_ = undefined; // don't hold on to computed value!\n\n if (process.env.NODE_ENV !== \"production\" && this.isTracing_ !== TraceMode.NONE) {\n console.log(\"[mobx.trace] Computed value '\" + this.name_ + \"' was suspended and it will recompute on the next access.\");\n }\n }\n };\n\n _proto.observe_ = function observe_(listener, fireImmediately) {\n var _this = this;\n\n var firstTime = true;\n var prevValue = undefined;\n return autorun(function () {\n // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n var newValue = _this.get();\n\n if (!firstTime || fireImmediately) {\n var prevU = untrackedStart();\n listener({\n observableKind: \"computed\",\n debugObjectName: _this.name_,\n type: UPDATE,\n object: _this,\n newValue: newValue,\n oldValue: prevValue\n });\n untrackedEnd(prevU);\n }\n\n firstTime = false;\n prevValue = newValue;\n });\n };\n\n _proto.warnAboutUntrackedRead_ = function warnAboutUntrackedRead_() {\n if (!(process.env.NODE_ENV !== \"production\")) return;\n\n if (this.isTracing_ !== TraceMode.NONE) {\n console.log(\"[mobx.trace] Computed value '\" + this.name_ + \"' is being read outside a reactive context. Doing a full recompute.\");\n }\n\n if (globalState.computedRequiresReaction || this.requiresReaction_) {\n console.warn(\"[mobx] Computed value '\" + this.name_ + \"' is being read outside a reactive context. Doing a full recompute.\");\n }\n };\n\n _proto.toString = function toString() {\n return this.name_ + \"[\" + this.derivation.toString() + \"]\";\n };\n\n _proto.valueOf = function valueOf() {\n return toPrimitive(this.get());\n };\n\n _proto[_Symbol$toPrimitive$1] = function () {\n return this.valueOf();\n };\n\n return ComputedValue;\n}();\nvar isComputedValue = /*#__PURE__*/createInstanceofPredicate(\"ComputedValue\", ComputedValue);\n\nvar IDerivationState_;\n\n(function (IDerivationState_) {\n // before being run or (outside batch and not being observed)\n // at this point derivation is not holding any data about dependency tree\n IDerivationState_[IDerivationState_[\"NOT_TRACKING_\"] = -1] = \"NOT_TRACKING_\"; // no shallow dependency changed since last computation\n // won't recalculate derivation\n // this is what makes mobx fast\n\n IDerivationState_[IDerivationState_[\"UP_TO_DATE_\"] = 0] = \"UP_TO_DATE_\"; // some deep dependency changed, but don't know if shallow dependency changed\n // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n // currently only ComputedValue will propagate POSSIBLY_STALE\n //\n // having this state is second big optimization:\n // don't have to recompute on every dependency change, but only when it's needed\n\n IDerivationState_[IDerivationState_[\"POSSIBLY_STALE_\"] = 1] = \"POSSIBLY_STALE_\"; // A shallow dependency has changed since last computation and the derivation\n // will need to recompute when it's needed next.\n\n IDerivationState_[IDerivationState_[\"STALE_\"] = 2] = \"STALE_\";\n})(IDerivationState_ || (IDerivationState_ = {}));\n\nvar TraceMode;\n\n(function (TraceMode) {\n TraceMode[TraceMode[\"NONE\"] = 0] = \"NONE\";\n TraceMode[TraceMode[\"LOG\"] = 1] = \"LOG\";\n TraceMode[TraceMode[\"BREAK\"] = 2] = \"BREAK\";\n})(TraceMode || (TraceMode = {}));\n\nvar CaughtException = function CaughtException(cause) {\n this.cause = void 0;\n this.cause = cause; // Empty\n};\nfunction isCaughtException(e) {\n return e instanceof CaughtException;\n}\n/**\r\n * Finds out whether any dependency of the derivation has actually changed.\r\n * If dependenciesState is 1 then it will recalculate dependencies,\r\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\r\n *\r\n * By iterating over the dependencies in the same order that they were reported and\r\n * stopping on the first change, all the recalculations are only called for ComputedValues\r\n * that will be tracked by derivation. That is because we assume that if the first x\r\n * dependencies of the derivation doesn't change then the derivation should run the same way\r\n * up until accessing x-th dependency.\r\n */\n\nfunction shouldCompute(derivation) {\n switch (derivation.dependenciesState_) {\n case IDerivationState_.UP_TO_DATE_:\n return false;\n\n case IDerivationState_.NOT_TRACKING_:\n case IDerivationState_.STALE_:\n return true;\n\n case IDerivationState_.POSSIBLY_STALE_:\n {\n // state propagation can occur outside of action/reactive context #2195\n var prevAllowStateReads = allowStateReadsStart(true);\n var prevUntracked = untrackedStart(); // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n\n var obs = derivation.observing_,\n l = obs.length;\n\n for (var i = 0; i < l; i++) {\n var obj = obs[i];\n\n if (isComputedValue(obj)) {\n if (globalState.disableErrorBoundaries) {\n obj.get();\n } else {\n try {\n obj.get();\n } catch (e) {\n // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n } // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n // and `derivation` is an observer of `obj`\n // invariantShouldCompute(derivation)\n\n\n if (derivation.dependenciesState_ === IDerivationState_.STALE_) {\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n }\n\n changeDependenciesStateTo0(derivation);\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return false;\n }\n }\n}\nfunction isComputingDerivation() {\n return globalState.trackingDerivation !== null; // filter out actions inside computations\n}\nfunction checkIfStateModificationsAreAllowed(atom) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n return;\n }\n\n var hasObservers = atom.observers_.size > 0; // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n\n if (!globalState.allowStateChanges && (hasObservers || globalState.enforceActions === \"always\")) console.warn(\"[MobX] \" + (globalState.enforceActions ? \"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: \" : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: \") + atom.name_);\n}\nfunction checkIfStateReadsAreAllowed(observable) {\n if (process.env.NODE_ENV !== \"production\" && !globalState.allowStateReads && globalState.observableRequiresReaction) {\n console.warn(\"[mobx] Observable '\" + observable.name_ + \"' being read outside a reactive context.\");\n }\n}\n/**\r\n * Executes the provided function `f` and tracks which observables are being accessed.\r\n * The tracking information is stored on the `derivation` object and the derivation is registered\r\n * as observer of any of the accessed observables.\r\n */\n\nfunction trackDerivedFunction(derivation, f, context) {\n var prevAllowStateReads = allowStateReadsStart(true); // pre allocate array allocation + room for variation in deps\n // array will be trimmed by bindDependencies\n\n changeDependenciesStateTo0(derivation);\n derivation.newObserving_ = new Array(derivation.observing_.length + 100);\n derivation.unboundDepsCount_ = 0;\n derivation.runId_ = ++globalState.runId;\n var prevTracking = globalState.trackingDerivation;\n globalState.trackingDerivation = derivation;\n globalState.inBatch++;\n var result;\n\n if (globalState.disableErrorBoundaries === true) {\n result = f.call(context);\n } else {\n try {\n result = f.call(context);\n } catch (e) {\n result = new CaughtException(e);\n }\n }\n\n globalState.inBatch--;\n globalState.trackingDerivation = prevTracking;\n bindDependencies(derivation);\n warnAboutDerivationWithoutDependencies(derivation);\n allowStateReadsEnd(prevAllowStateReads);\n return result;\n}\n\nfunction warnAboutDerivationWithoutDependencies(derivation) {\n if (!(process.env.NODE_ENV !== \"production\")) return;\n if (derivation.observing_.length !== 0) return;\n\n if (globalState.reactionRequiresObservable || derivation.requiresObservable_) {\n console.warn(\"[mobx] Derivation '\" + derivation.name_ + \"' is created/updated without reading any observable value.\");\n }\n}\n/**\r\n * diffs newObserving with observing.\r\n * update observing to be newObserving with unique observables\r\n * notify observers that become observed/unobserved\r\n */\n\n\nfunction bindDependencies(derivation) {\n // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n var prevObserving = derivation.observing_;\n var observing = derivation.observing_ = derivation.newObserving_;\n var lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_; // Go through all new observables and check diffValue: (this list can contain duplicates):\n // 0: first occurrence, change to 1 and keep it\n // 1: extra occurrence, drop it\n\n var i0 = 0,\n l = derivation.unboundDepsCount_;\n\n for (var i = 0; i < l; i++) {\n var dep = observing[i];\n\n if (dep.diffValue_ === 0) {\n dep.diffValue_ = 1;\n if (i0 !== i) observing[i0] = dep;\n i0++;\n } // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n // not hitting the condition\n\n\n if (dep.dependenciesState_ > lowestNewObservingDerivationState) {\n lowestNewObservingDerivationState = dep.dependenciesState_;\n }\n }\n\n observing.length = i0;\n derivation.newObserving_ = null; // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n // 0: it's not in new observables, unobserve it\n // 1: it keeps being observed, don't want to notify it. change to 0\n\n l = prevObserving.length;\n\n while (l--) {\n var _dep = prevObserving[l];\n\n if (_dep.diffValue_ === 0) {\n removeObserver(_dep, derivation);\n }\n\n _dep.diffValue_ = 0;\n } // Go through all new observables and check diffValue: (now it should be unique)\n // 0: it was set to 0 in last loop. don't need to do anything.\n // 1: it wasn't observed, let's observe it. set back to 0\n\n\n while (i0--) {\n var _dep2 = observing[i0];\n\n if (_dep2.diffValue_ === 1) {\n _dep2.diffValue_ = 0;\n addObserver(_dep2, derivation);\n }\n } // Some new observed derivations may become stale during this derivation computation\n // so they have had no chance to propagate staleness (#916)\n\n\n if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n derivation.dependenciesState_ = lowestNewObservingDerivationState;\n derivation.onBecomeStale_();\n }\n}\n\nfunction clearObserving(derivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n var obs = derivation.observing_;\n derivation.observing_ = [];\n var i = obs.length;\n\n while (i--) {\n removeObserver(obs[i], derivation);\n }\n\n derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n}\nfunction untracked(action) {\n var prev = untrackedStart();\n\n try {\n return action();\n } finally {\n untrackedEnd(prev);\n }\n}\nfunction untrackedStart() {\n var prev = globalState.trackingDerivation;\n globalState.trackingDerivation = null;\n return prev;\n}\nfunction untrackedEnd(prev) {\n globalState.trackingDerivation = prev;\n}\nfunction allowStateReadsStart(allowStateReads) {\n var prev = globalState.allowStateReads;\n globalState.allowStateReads = allowStateReads;\n return prev;\n}\nfunction allowStateReadsEnd(prev) {\n globalState.allowStateReads = prev;\n}\n/**\r\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\r\n *\r\n */\n\nfunction changeDependenciesStateTo0(derivation) {\n if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) return;\n derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_;\n var obs = derivation.observing_;\n var i = obs.length;\n\n while (i--) {\n obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n }\n}\n\n/**\r\n * These values will persist if global state is reset\r\n */\n\nvar persistentKeys = [\"mobxGuid\", \"spyListeners\", \"enforceActions\", \"computedRequiresReaction\", \"reactionRequiresObservable\", \"observableRequiresReaction\", \"allowStateReads\", \"disableErrorBoundaries\", \"runId\", \"UNCHANGED\", \"useProxies\"];\nvar MobXGlobals = function MobXGlobals() {\n this.version = 6;\n this.UNCHANGED = {};\n this.trackingDerivation = null;\n this.trackingContext = null;\n this.runId = 0;\n this.mobxGuid = 0;\n this.inBatch = 0;\n this.pendingUnobservations = [];\n this.pendingReactions = [];\n this.isRunningReactions = false;\n this.allowStateChanges = false;\n this.allowStateReads = true;\n this.enforceActions = true;\n this.spyListeners = [];\n this.globalReactionErrorHandlers = [];\n this.computedRequiresReaction = false;\n this.reactionRequiresObservable = false;\n this.observableRequiresReaction = false;\n this.disableErrorBoundaries = false;\n this.suppressReactionErrors = false;\n this.useProxies = true;\n this.verifyProxies = false;\n this.safeDescriptors = true;\n};\nvar canMergeGlobalState = true;\nvar isolateCalled = false;\nvar globalState = /*#__PURE__*/function () {\n var global = /*#__PURE__*/getGlobal();\n if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals) canMergeGlobalState = false;\n if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version) canMergeGlobalState = false;\n\n if (!canMergeGlobalState) {\n // Because this is a IIFE we need to let isolateCalled a chance to change\n // so we run it after the event loop completed at least 1 iteration\n setTimeout(function () {\n if (!isolateCalled) {\n die(35);\n }\n }, 1);\n return new MobXGlobals();\n } else if (global.__mobxGlobals) {\n global.__mobxInstanceCount += 1;\n if (!global.__mobxGlobals.UNCHANGED) global.__mobxGlobals.UNCHANGED = {}; // make merge backward compatible\n\n return global.__mobxGlobals;\n } else {\n global.__mobxInstanceCount = 1;\n return global.__mobxGlobals = /*#__PURE__*/new MobXGlobals();\n }\n}();\nfunction isolateGlobalState() {\n if (globalState.pendingReactions.length || globalState.inBatch || globalState.isRunningReactions) die(36);\n isolateCalled = true;\n\n if (canMergeGlobalState) {\n var global = getGlobal();\n if (--global.__mobxInstanceCount === 0) global.__mobxGlobals = undefined;\n globalState = new MobXGlobals();\n }\n}\nfunction getGlobalState() {\n return globalState;\n}\n/**\r\n * For testing purposes only; this will break the internal state of existing observables,\r\n * but can be used to get back at a stable state after throwing errors\r\n */\n\nfunction resetGlobalState() {\n var defaultGlobals = new MobXGlobals();\n\n for (var key in defaultGlobals) {\n if (persistentKeys.indexOf(key) === -1) globalState[key] = defaultGlobals[key];\n }\n\n globalState.allowStateChanges = !globalState.enforceActions;\n}\n\nfunction hasObservers(observable) {\n return observable.observers_ && observable.observers_.size > 0;\n}\nfunction getObservers(observable) {\n return observable.observers_;\n} // function invariantObservers(observable: IObservable) {\n// const list = observable.observers\n// const map = observable.observersIndexes\n// const l = list.length\n// for (let i = 0; i < l; i++) {\n// const id = list[i].__mapid\n// if (i) {\n// invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n// } else {\n// invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n// }\n// }\n// invariant(\n// list.length === 0 || Object.keys(map).length === list.length - 1,\n// \"INTERNAL ERROR there is no junk in map\"\n// )\n// }\n\nfunction addObserver(observable, node) {\n // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n // invariantObservers(observable);\n observable.observers_.add(node);\n if (observable.lowestObserverState_ > node.dependenciesState_) observable.lowestObserverState_ = node.dependenciesState_; // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\nfunction removeObserver(observable, node) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n // invariantObservers(observable);\n observable.observers_[\"delete\"](node);\n\n if (observable.observers_.size === 0) {\n // deleting last observer\n queueForUnobservation(observable);\n } // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n\n}\nfunction queueForUnobservation(observable) {\n if (observable.isPendingUnobservation_ === false) {\n // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n observable.isPendingUnobservation_ = true;\n globalState.pendingUnobservations.push(observable);\n }\n}\n/**\r\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\r\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\r\n * Avoids unnecessary recalculations.\r\n */\n\nfunction startBatch() {\n globalState.inBatch++;\n}\nfunction endBatch() {\n if (--globalState.inBatch === 0) {\n runReactions(); // the batch is actually about to finish, all unobserving should happen here.\n\n var list = globalState.pendingUnobservations;\n\n for (var i = 0; i < list.length; i++) {\n var observable = list[i];\n observable.isPendingUnobservation_ = false;\n\n if (observable.observers_.size === 0) {\n if (observable.isBeingObserved_) {\n // if this observable had reactive observers, trigger the hooks\n observable.isBeingObserved_ = false;\n observable.onBUO();\n }\n\n if (observable instanceof ComputedValue) {\n // computed values are automatically teared down when the last observer leaves\n // this process happens recursively, this computed might be the last observabe of another, etc..\n observable.suspend_();\n }\n }\n }\n\n globalState.pendingUnobservations = [];\n }\n}\nfunction reportObserved(observable) {\n checkIfStateReadsAreAllowed(observable);\n var derivation = globalState.trackingDerivation;\n\n if (derivation !== null) {\n /**\r\n * Simple optimization, give each derivation run an unique id (runId)\r\n * Check if last time this observable was accessed the same runId is used\r\n * if this is the case, the relation is already known\r\n */\n if (derivation.runId_ !== observable.lastAccessedBy_) {\n observable.lastAccessedBy_ = derivation.runId_; // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n\n derivation.newObserving_[derivation.unboundDepsCount_++] = observable;\n\n if (!observable.isBeingObserved_ && globalState.trackingContext) {\n observable.isBeingObserved_ = true;\n observable.onBO();\n }\n }\n\n return true;\n } else if (observable.observers_.size === 0 && globalState.inBatch > 0) {\n queueForUnobservation(observable);\n }\n\n return false;\n} // function invariantLOS(observable: IObservable, msg: string) {\n// // it's expensive so better not run it in produciton. but temporarily helpful for testing\n// const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n// if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n// throw new Error(\n// \"lowestObserverState is wrong for \" +\n// msg +\n// \" because \" +\n// min +\n// \" < \" +\n// observable.lowestObserverState\n// )\n// }\n\n/**\r\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\r\n * It will propagate changes to observers from previous run\r\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\r\n * Hopefully self reruning autoruns aren't a feature people should depend on\r\n * Also most basic use cases should be ok\r\n */\n// Called by Atom when its value changes\n\nfunction propagateChanged(observable) {\n // invariantLOS(observable, \"changed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) return;\n observable.lowestObserverState_ = IDerivationState_.STALE_; // Ideally we use for..of here, but the downcompiled version is really slow...\n\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n if (process.env.NODE_ENV !== \"production\" && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n\n d.onBecomeStale_();\n }\n\n d.dependenciesState_ = IDerivationState_.STALE_;\n }); // invariantLOS(observable, \"changed end\");\n} // Called by ComputedValue when it recalculate and its value changed\n\nfunction propagateChangeConfirmed(observable) {\n // invariantLOS(observable, \"confirmed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) return;\n observable.lowestObserverState_ = IDerivationState_.STALE_;\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) {\n d.dependenciesState_ = IDerivationState_.STALE_;\n\n if (process.env.NODE_ENV !== \"production\" && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n } else if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n ) {\n observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_;\n }\n }); // invariantLOS(observable, \"confirmed end\");\n} // Used by computed when its dependency changed, but we don't wan't to immediately recompute.\n\nfunction propagateMaybeChanged(observable) {\n // invariantLOS(observable, \"maybe start\");\n if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) return;\n observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_;\n observable.observers_.forEach(function (d) {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_;\n d.onBecomeStale_();\n }\n }); // invariantLOS(observable, \"maybe end\");\n}\n\nfunction logTraceInfo(derivation, observable) {\n console.log(\"[mobx.trace] '\" + derivation.name_ + \"' is invalidated due to a change in: '\" + observable.name_ + \"'\");\n\n if (derivation.isTracing_ === TraceMode.BREAK) {\n var lines = [];\n printDepTree(getDependencyTree(derivation), lines, 1); // prettier-ignore\n\n new Function(\"debugger;\\n/*\\nTracing '\" + derivation.name_ + \"'\\n\\nYou are entering this break point because derivation '\" + derivation.name_ + \"' is being traced and '\" + observable.name_ + \"' is now forcing it to update.\\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\\n\\n\" + (derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\") + \"\\n\\nThe dependencies for this derivation are:\\n\\n\" + lines.join(\"\\n\") + \"\\n*/\\n \")();\n }\n}\n\nfunction printDepTree(tree, lines, depth) {\n if (lines.length >= 1000) {\n lines.push(\"(and many more)\");\n return;\n }\n\n lines.push(\"\" + \"\\t\".repeat(depth - 1) + tree.name);\n if (tree.dependencies) tree.dependencies.forEach(function (child) {\n return printDepTree(child, lines, depth + 1);\n });\n}\n\nvar Reaction = /*#__PURE__*/function () {\n // nodes we are looking at. Our value depends on these nodes\n function Reaction(name_, onInvalidate_, errorHandler_, requiresObservable_) {\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"Reaction@\" + getNextId() : \"Reaction\";\n }\n\n if (requiresObservable_ === void 0) {\n requiresObservable_ = false;\n }\n\n this.name_ = void 0;\n this.onInvalidate_ = void 0;\n this.errorHandler_ = void 0;\n this.requiresObservable_ = void 0;\n this.observing_ = [];\n this.newObserving_ = [];\n this.dependenciesState_ = IDerivationState_.NOT_TRACKING_;\n this.diffValue_ = 0;\n this.runId_ = 0;\n this.unboundDepsCount_ = 0;\n this.isDisposed_ = false;\n this.isScheduled_ = false;\n this.isTrackPending_ = false;\n this.isRunning_ = false;\n this.isTracing_ = TraceMode.NONE;\n this.name_ = name_;\n this.onInvalidate_ = onInvalidate_;\n this.errorHandler_ = errorHandler_;\n this.requiresObservable_ = requiresObservable_;\n }\n\n var _proto = Reaction.prototype;\n\n _proto.onBecomeStale_ = function onBecomeStale_() {\n this.schedule_();\n };\n\n _proto.schedule_ = function schedule_() {\n if (!this.isScheduled_) {\n this.isScheduled_ = true;\n globalState.pendingReactions.push(this);\n runReactions();\n }\n };\n\n _proto.isScheduled = function isScheduled() {\n return this.isScheduled_;\n }\n /**\r\n * internal, use schedule() if you intend to kick off a reaction\r\n */\n ;\n\n _proto.runReaction_ = function runReaction_() {\n if (!this.isDisposed_) {\n startBatch();\n this.isScheduled_ = false;\n var prev = globalState.trackingContext;\n globalState.trackingContext = this;\n\n if (shouldCompute(this)) {\n this.isTrackPending_ = true;\n\n try {\n this.onInvalidate_();\n\n if (process.env.NODE_ENV !== \"production\" && this.isTrackPending_ && isSpyEnabled()) {\n // onInvalidate didn't trigger track right away..\n spyReport({\n name: this.name_,\n type: \"scheduled-reaction\"\n });\n }\n } catch (e) {\n this.reportExceptionInDerivation_(e);\n }\n }\n\n globalState.trackingContext = prev;\n endBatch();\n }\n };\n\n _proto.track = function track(fn) {\n if (this.isDisposed_) {\n return; // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n }\n\n startBatch();\n var notify = isSpyEnabled();\n var startTime;\n\n if (process.env.NODE_ENV !== \"production\" && notify) {\n startTime = Date.now();\n spyReportStart({\n name: this.name_,\n type: \"reaction\"\n });\n }\n\n this.isRunning_ = true;\n var prevReaction = globalState.trackingContext; // reactions could create reactions...\n\n globalState.trackingContext = this;\n var result = trackDerivedFunction(this, fn, undefined);\n globalState.trackingContext = prevReaction;\n this.isRunning_ = false;\n this.isTrackPending_ = false;\n\n if (this.isDisposed_) {\n // disposed during last run. Clean up everything that was bound after the dispose call.\n clearObserving(this);\n }\n\n if (isCaughtException(result)) this.reportExceptionInDerivation_(result.cause);\n\n if (process.env.NODE_ENV !== \"production\" && notify) {\n spyReportEnd({\n time: Date.now() - startTime\n });\n }\n\n endBatch();\n };\n\n _proto.reportExceptionInDerivation_ = function reportExceptionInDerivation_(error) {\n var _this = this;\n\n if (this.errorHandler_) {\n this.errorHandler_(error, this);\n return;\n }\n\n if (globalState.disableErrorBoundaries) throw error;\n var message = process.env.NODE_ENV !== \"production\" ? \"[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '\" + this + \"'\" : \"[mobx] uncaught error in '\" + this + \"'\";\n\n if (!globalState.suppressReactionErrors) {\n console.error(message, error);\n /** If debugging brought you here, please, read the above message :-). Tnx! */\n } else if (process.env.NODE_ENV !== \"production\") console.warn(\"[mobx] (error in reaction '\" + this.name_ + \"' suppressed, fix error of causing action below)\"); // prettier-ignore\n\n\n if (process.env.NODE_ENV !== \"production\" && isSpyEnabled()) {\n spyReport({\n type: \"error\",\n name: this.name_,\n message: message,\n error: \"\" + error\n });\n }\n\n globalState.globalReactionErrorHandlers.forEach(function (f) {\n return f(error, _this);\n });\n };\n\n _proto.dispose = function dispose() {\n if (!this.isDisposed_) {\n this.isDisposed_ = true;\n\n if (!this.isRunning_) {\n // if disposed while running, clean up later. Maybe not optimal, but rare case\n startBatch();\n clearObserving(this);\n endBatch();\n }\n }\n };\n\n _proto.getDisposer_ = function getDisposer_() {\n var r = this.dispose.bind(this);\n r[$mobx] = this;\n return r;\n };\n\n _proto.toString = function toString() {\n return \"Reaction[\" + this.name_ + \"]\";\n };\n\n _proto.trace = function trace$1(enterBreakPoint) {\n if (enterBreakPoint === void 0) {\n enterBreakPoint = false;\n }\n\n trace(this, enterBreakPoint);\n };\n\n return Reaction;\n}();\nfunction onReactionError(handler) {\n globalState.globalReactionErrorHandlers.push(handler);\n return function () {\n var idx = globalState.globalReactionErrorHandlers.indexOf(handler);\n if (idx >= 0) globalState.globalReactionErrorHandlers.splice(idx, 1);\n };\n}\n/**\r\n * Magic number alert!\r\n * Defines within how many times a reaction is allowed to re-trigger itself\r\n * until it is assumed that this is gonna be a never ending loop...\r\n */\n\nvar MAX_REACTION_ITERATIONS = 100;\n\nvar reactionScheduler = function reactionScheduler(f) {\n return f();\n};\n\nfunction runReactions() {\n // Trampolining, if runReactions are already running, new reactions will be picked up\n if (globalState.inBatch > 0 || globalState.isRunningReactions) return;\n reactionScheduler(runReactionsHelper);\n}\n\nfunction runReactionsHelper() {\n globalState.isRunningReactions = true;\n var allReactions = globalState.pendingReactions;\n var iterations = 0; // While running reactions, new reactions might be triggered.\n // Hence we work with two variables and check whether\n // we converge to no remaining reactions after a while.\n\n while (allReactions.length > 0) {\n if (++iterations === MAX_REACTION_ITERATIONS) {\n console.error(process.env.NODE_ENV !== \"production\" ? \"Reaction doesn't converge to a stable state after \" + MAX_REACTION_ITERATIONS + \" iterations.\" + (\" Probably there is a cycle in the reactive function: \" + allReactions[0]) : \"[mobx] cycle in reaction: \" + allReactions[0]);\n allReactions.splice(0); // clear reactions\n }\n\n var remainingReactions = allReactions.splice(0);\n\n for (var i = 0, l = remainingReactions.length; i < l; i++) {\n remainingReactions[i].runReaction_();\n }\n }\n\n globalState.isRunningReactions = false;\n}\n\nvar isReaction = /*#__PURE__*/createInstanceofPredicate(\"Reaction\", Reaction);\nfunction setReactionScheduler(fn) {\n var baseScheduler = reactionScheduler;\n\n reactionScheduler = function reactionScheduler(f) {\n return fn(function () {\n return baseScheduler(f);\n });\n };\n}\n\nfunction isSpyEnabled() {\n return process.env.NODE_ENV !== \"production\" && !!globalState.spyListeners.length;\n}\nfunction spyReport(event) {\n if (!(process.env.NODE_ENV !== \"production\")) return; // dead code elimination can do the rest\n\n if (!globalState.spyListeners.length) return;\n var listeners = globalState.spyListeners;\n\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i](event);\n }\n}\nfunction spyReportStart(event) {\n if (!(process.env.NODE_ENV !== \"production\")) return;\n\n var change = _extends({}, event, {\n spyReportStart: true\n });\n\n spyReport(change);\n}\nvar END_EVENT = {\n type: \"report-end\",\n spyReportEnd: true\n};\nfunction spyReportEnd(change) {\n if (!(process.env.NODE_ENV !== \"production\")) return;\n if (change) spyReport(_extends({}, change, {\n type: \"report-end\",\n spyReportEnd: true\n }));else spyReport(END_EVENT);\n}\nfunction spy(listener) {\n if (!(process.env.NODE_ENV !== \"production\")) {\n console.warn(\"[mobx.spy] Is a no-op in production builds\");\n return function () {};\n } else {\n globalState.spyListeners.push(listener);\n return once(function () {\n globalState.spyListeners = globalState.spyListeners.filter(function (l) {\n return l !== listener;\n });\n });\n }\n}\n\nvar ACTION = \"action\";\nvar ACTION_BOUND = \"action.bound\";\nvar AUTOACTION = \"autoAction\";\nvar AUTOACTION_BOUND = \"autoAction.bound\";\nvar DEFAULT_ACTION_NAME = \"\";\nvar actionAnnotation = /*#__PURE__*/createActionAnnotation(ACTION);\nvar actionBoundAnnotation = /*#__PURE__*/createActionAnnotation(ACTION_BOUND, {\n bound: true\n});\nvar autoActionAnnotation = /*#__PURE__*/createActionAnnotation(AUTOACTION, {\n autoAction: true\n});\nvar autoActionBoundAnnotation = /*#__PURE__*/createActionAnnotation(AUTOACTION_BOUND, {\n autoAction: true,\n bound: true\n});\n\nfunction createActionFactory(autoAction) {\n var res = function action(arg1, arg2) {\n // action(fn() {})\n if (isFunction(arg1)) return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction); // action(\"name\", fn() {})\n\n if (isFunction(arg2)) return createAction(arg1, arg2, autoAction); // @action\n\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation);\n } // action(\"name\") & @action(\"name\")\n\n\n if (isStringish(arg1)) {\n return createDecoratorAnnotation(createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n name: arg1,\n autoAction: autoAction\n }));\n }\n\n if (process.env.NODE_ENV !== \"production\") die(\"Invalid arguments for `action`\");\n };\n\n return res;\n}\n\nvar action = /*#__PURE__*/createActionFactory(false);\nObject.assign(action, actionAnnotation);\nvar autoAction = /*#__PURE__*/createActionFactory(true);\nObject.assign(autoAction, autoActionAnnotation);\naction.bound = /*#__PURE__*/createDecoratorAnnotation(actionBoundAnnotation);\nautoAction.bound = /*#__PURE__*/createDecoratorAnnotation(autoActionBoundAnnotation);\nfunction runInAction(fn) {\n return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined);\n}\nfunction isAction(thing) {\n return isFunction(thing) && thing.isMobxAction === true;\n}\n\n/**\r\n * Creates a named reactive view and keeps it alive, so that the view is always\r\n * updated if one of the dependencies changes, even when the view is not further used by something else.\r\n * @param view The reactive view\r\n * @returns disposer function, which can be used to stop the view from being updated in the future.\r\n */\n\nfunction autorun(view, opts) {\n var _opts$name, _opts;\n\n if (opts === void 0) {\n opts = EMPTY_OBJECT;\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(view)) die(\"Autorun expects a function as first argument\");\n if (isAction(view)) die(\"Autorun does not accept actions since actions are untrackable\");\n }\n\n var name = (_opts$name = (_opts = opts) == null ? void 0 : _opts.name) != null ? _opts$name : process.env.NODE_ENV !== \"production\" ? view.name || \"Autorun@\" + getNextId() : \"Autorun\";\n var runSync = !opts.scheduler && !opts.delay;\n var reaction;\n\n if (runSync) {\n // normal autorun\n reaction = new Reaction(name, function () {\n this.track(reactionRunner);\n }, opts.onError, opts.requiresObservable);\n } else {\n var scheduler = createSchedulerFromOptions(opts); // debounced autorun\n\n var isScheduled = false;\n reaction = new Reaction(name, function () {\n if (!isScheduled) {\n isScheduled = true;\n scheduler(function () {\n isScheduled = false;\n if (!reaction.isDisposed_) reaction.track(reactionRunner);\n });\n }\n }, opts.onError, opts.requiresObservable);\n }\n\n function reactionRunner() {\n view(reaction);\n }\n\n reaction.schedule_();\n return reaction.getDisposer_();\n}\n\nvar run = function run(f) {\n return f();\n};\n\nfunction createSchedulerFromOptions(opts) {\n return opts.scheduler ? opts.scheduler : opts.delay ? function (f) {\n return setTimeout(f, opts.delay);\n } : run;\n}\n\nfunction reaction(expression, effect, opts) {\n var _opts$name2;\n\n if (opts === void 0) {\n opts = EMPTY_OBJECT;\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isFunction(expression) || !isFunction(effect)) die(\"First and second argument to reaction should be functions\");\n if (!isPlainObject(opts)) die(\"Third argument of reactions should be an object\");\n }\n\n var name = (_opts$name2 = opts.name) != null ? _opts$name2 : process.env.NODE_ENV !== \"production\" ? \"Reaction@\" + getNextId() : \"Reaction\";\n var effectAction = action(name, opts.onError ? wrapErrorHandler(opts.onError, effect) : effect);\n var runSync = !opts.scheduler && !opts.delay;\n var scheduler = createSchedulerFromOptions(opts);\n var firstTime = true;\n var isScheduled = false;\n var value;\n var oldValue;\n var equals = opts.compareStructural ? comparer.structural : opts.equals || comparer[\"default\"];\n var r = new Reaction(name, function () {\n if (firstTime || runSync) {\n reactionRunner();\n } else if (!isScheduled) {\n isScheduled = true;\n scheduler(reactionRunner);\n }\n }, opts.onError, opts.requiresObservable);\n\n function reactionRunner() {\n isScheduled = false;\n if (r.isDisposed_) return;\n var changed = false;\n r.track(function () {\n var nextValue = allowStateChanges(false, function () {\n return expression(r);\n });\n changed = firstTime || !equals(value, nextValue);\n oldValue = value;\n value = nextValue;\n });\n if (firstTime && opts.fireImmediately) effectAction(value, oldValue, r);else if (!firstTime && changed) effectAction(value, oldValue, r);\n firstTime = false;\n }\n\n r.schedule_();\n return r.getDisposer_();\n}\n\nfunction wrapErrorHandler(errorHandler, baseFn) {\n return function () {\n try {\n return baseFn.apply(this, arguments);\n } catch (e) {\n errorHandler.call(this, e);\n }\n };\n}\n\nvar ON_BECOME_OBSERVED = \"onBO\";\nvar ON_BECOME_UNOBSERVED = \"onBUO\";\nfunction onBecomeObserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3);\n}\nfunction onBecomeUnobserved(thing, arg2, arg3) {\n return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3);\n}\n\nfunction interceptHook(hook, thing, arg2, arg3) {\n var atom = typeof arg3 === \"function\" ? getAtom(thing, arg2) : getAtom(thing);\n var cb = isFunction(arg3) ? arg3 : arg2;\n var listenersKey = hook + \"L\";\n\n if (atom[listenersKey]) {\n atom[listenersKey].add(cb);\n } else {\n atom[listenersKey] = new Set([cb]);\n }\n\n return function () {\n var hookListeners = atom[listenersKey];\n\n if (hookListeners) {\n hookListeners[\"delete\"](cb);\n\n if (hookListeners.size === 0) {\n delete atom[listenersKey];\n }\n }\n };\n}\n\nvar NEVER = \"never\";\nvar ALWAYS = \"always\";\nvar OBSERVED = \"observed\"; // const IF_AVAILABLE = \"ifavailable\"\n\nfunction configure(options) {\n if (options.isolateGlobalState === true) {\n isolateGlobalState();\n }\n\n var useProxies = options.useProxies,\n enforceActions = options.enforceActions;\n\n if (useProxies !== undefined) {\n globalState.useProxies = useProxies === ALWAYS ? true : useProxies === NEVER ? false : typeof Proxy !== \"undefined\";\n }\n\n if (useProxies === \"ifavailable\") globalState.verifyProxies = true;\n\n if (enforceActions !== undefined) {\n var ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED;\n globalState.enforceActions = ea;\n globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true;\n }\n [\"computedRequiresReaction\", \"reactionRequiresObservable\", \"observableRequiresReaction\", \"disableErrorBoundaries\", \"safeDescriptors\"].forEach(function (key) {\n if (key in options) globalState[key] = !!options[key];\n });\n globalState.allowStateReads = !globalState.observableRequiresReaction;\n\n if (process.env.NODE_ENV !== \"production\" && globalState.disableErrorBoundaries === true) {\n console.warn(\"WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled.\");\n }\n\n if (options.reactionScheduler) {\n setReactionScheduler(options.reactionScheduler);\n }\n}\n\nfunction extendObservable(target, properties, annotations, options) {\n if (process.env.NODE_ENV !== \"production\") {\n if (arguments.length > 4) die(\"'extendObservable' expected 2-4 arguments\");\n if (typeof target !== \"object\") die(\"'extendObservable' expects an object as first argument\");\n if (isObservableMap(target)) die(\"'extendObservable' should not be used on maps, use map.merge instead\");\n if (!isPlainObject(properties)) die(\"'extendObservable' only accepts plain objects as second argument\");\n if (isObservable(properties) || isObservable(annotations)) die(\"Extending an object with another observable (object) is not supported\");\n } // Pull descriptors first, so we don't have to deal with props added by administration ($mobx)\n\n\n var descriptors = getOwnPropertyDescriptors(properties);\n var adm = asObservableObject(target, options)[$mobx];\n startBatch();\n\n try {\n ownKeys(descriptors).forEach(function (key) {\n adm.extend_(key, descriptors[key], // must pass \"undefined\" for { key: undefined }\n !annotations ? true : key in annotations ? annotations[key] : true);\n });\n } finally {\n endBatch();\n }\n\n return target;\n}\n\nfunction getDependencyTree(thing, property) {\n return nodeToDependencyTree(getAtom(thing, property));\n}\n\nfunction nodeToDependencyTree(node) {\n var result = {\n name: node.name_\n };\n if (node.observing_ && node.observing_.length > 0) result.dependencies = unique(node.observing_).map(nodeToDependencyTree);\n return result;\n}\n\nfunction getObserverTree(thing, property) {\n return nodeToObserverTree(getAtom(thing, property));\n}\n\nfunction nodeToObserverTree(node) {\n var result = {\n name: node.name_\n };\n if (hasObservers(node)) result.observers = Array.from(getObservers(node)).map(nodeToObserverTree);\n return result;\n}\n\nfunction unique(list) {\n return Array.from(new Set(list));\n}\n\nvar generatorId = 0;\nfunction FlowCancellationError() {\n this.message = \"FLOW_CANCELLED\";\n}\nFlowCancellationError.prototype = /*#__PURE__*/Object.create(Error.prototype);\nfunction isFlowCancellationError(error) {\n return error instanceof FlowCancellationError;\n}\nvar flowAnnotation = /*#__PURE__*/createFlowAnnotation(\"flow\");\nvar flowBoundAnnotation = /*#__PURE__*/createFlowAnnotation(\"flow.bound\", {\n bound: true\n});\nvar flow = /*#__PURE__*/Object.assign(function flow(arg1, arg2) {\n // @flow\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, flowAnnotation);\n } // flow(fn)\n\n\n if (process.env.NODE_ENV !== \"production\" && arguments.length !== 1) die(\"Flow expects single argument with generator function\");\n var generator = arg1;\n var name = generator.name || \"\"; // Implementation based on https://github.com/tj/co/blob/master/index.js\n\n var res = function res() {\n var ctx = this;\n var args = arguments;\n var runId = ++generatorId;\n var gen = action(name + \" - runid: \" + runId + \" - init\", generator).apply(ctx, args);\n var rejector;\n var pendingPromise = undefined;\n var promise = new Promise(function (resolve, reject) {\n var stepId = 0;\n rejector = reject;\n\n function onFulfilled(res) {\n pendingPromise = undefined;\n var ret;\n\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen.next).call(gen, res);\n } catch (e) {\n return reject(e);\n }\n\n next(ret);\n }\n\n function onRejected(err) {\n pendingPromise = undefined;\n var ret;\n\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen[\"throw\"]).call(gen, err);\n } catch (e) {\n return reject(e);\n }\n\n next(ret);\n }\n\n function next(ret) {\n if (isFunction(ret == null ? void 0 : ret.then)) {\n // an async iterator\n ret.then(next, reject);\n return;\n }\n\n if (ret.done) return resolve(ret.value);\n pendingPromise = Promise.resolve(ret.value);\n return pendingPromise.then(onFulfilled, onRejected);\n }\n\n onFulfilled(undefined); // kick off the process\n });\n promise.cancel = action(name + \" - runid: \" + runId + \" - cancel\", function () {\n try {\n if (pendingPromise) cancelPromise(pendingPromise); // Finally block can return (or yield) stuff..\n\n var _res = gen[\"return\"](undefined); // eat anything that promise would do, it's cancelled!\n\n\n var yieldedPromise = Promise.resolve(_res.value);\n yieldedPromise.then(noop, noop);\n cancelPromise(yieldedPromise); // maybe it can be cancelled :)\n // reject our original promise\n\n rejector(new FlowCancellationError());\n } catch (e) {\n rejector(e); // there could be a throwing finally block\n }\n });\n return promise;\n };\n\n res.isMobXFlow = true;\n return res;\n}, flowAnnotation);\nflow.bound = /*#__PURE__*/createDecoratorAnnotation(flowBoundAnnotation);\n\nfunction cancelPromise(promise) {\n if (isFunction(promise.cancel)) promise.cancel();\n}\n\nfunction flowResult(result) {\n return result; // just tricking TypeScript :)\n}\nfunction isFlow(fn) {\n return (fn == null ? void 0 : fn.isMobXFlow) === true;\n}\n\nfunction interceptReads(thing, propOrHandler, handler) {\n var target;\n\n if (isObservableMap(thing) || isObservableArray(thing) || isObservableValue(thing)) {\n target = getAdministration(thing);\n } else if (isObservableObject(thing)) {\n if (process.env.NODE_ENV !== \"production\" && !isStringish(propOrHandler)) return die(\"InterceptReads can only be used with a specific property, not with an object in general\");\n target = getAdministration(thing, propOrHandler);\n } else if (process.env.NODE_ENV !== \"production\") {\n return die(\"Expected observable map, object or array as first array\");\n }\n\n if (process.env.NODE_ENV !== \"production\" && target.dehancer !== undefined) return die(\"An intercept reader was already established\");\n target.dehancer = typeof propOrHandler === \"function\" ? propOrHandler : handler;\n return function () {\n target.dehancer = undefined;\n };\n}\n\nfunction intercept(thing, propOrHandler, handler) {\n if (isFunction(handler)) return interceptProperty(thing, propOrHandler, handler);else return interceptInterceptable(thing, propOrHandler);\n}\n\nfunction interceptInterceptable(thing, handler) {\n return getAdministration(thing).intercept_(handler);\n}\n\nfunction interceptProperty(thing, property, handler) {\n return getAdministration(thing, property).intercept_(handler);\n}\n\nfunction _isComputed(value, property) {\n if (property === undefined) {\n return isComputedValue(value);\n }\n\n if (isObservableObject(value) === false) return false;\n if (!value[$mobx].values_.has(property)) return false;\n var atom = getAtom(value, property);\n return isComputedValue(atom);\n}\nfunction isComputed(value) {\n if (process.env.NODE_ENV !== \"production\" && arguments.length > 1) return die(\"isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property\");\n return _isComputed(value);\n}\nfunction isComputedProp(value, propName) {\n if (process.env.NODE_ENV !== \"production\" && !isStringish(propName)) return die(\"isComputed expected a property name as second argument\");\n return _isComputed(value, propName);\n}\n\nfunction _isObservable(value, property) {\n if (!value) return false;\n\n if (property !== undefined) {\n if (process.env.NODE_ENV !== \"production\" && (isObservableMap(value) || isObservableArray(value))) return die(\"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\");\n\n if (isObservableObject(value)) {\n return value[$mobx].values_.has(property);\n }\n\n return false;\n } // For first check, see #701\n\n\n return isObservableObject(value) || !!value[$mobx] || isAtom(value) || isReaction(value) || isComputedValue(value);\n}\n\nfunction isObservable(value) {\n if (process.env.NODE_ENV !== \"production\" && arguments.length !== 1) die(\"isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property\");\n return _isObservable(value);\n}\nfunction isObservableProp(value, propName) {\n if (process.env.NODE_ENV !== \"production\" && !isStringish(propName)) return die(\"expected a property name as second argument\");\n return _isObservable(value, propName);\n}\n\nfunction keys(obj) {\n if (isObservableObject(obj)) {\n return obj[$mobx].keys_();\n }\n\n if (isObservableMap(obj) || isObservableSet(obj)) {\n return Array.from(obj.keys());\n }\n\n if (isObservableArray(obj)) {\n return obj.map(function (_, index) {\n return index;\n });\n }\n\n die(5);\n}\nfunction values(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) {\n return obj[key];\n });\n }\n\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) {\n return obj.get(key);\n });\n }\n\n if (isObservableSet(obj)) {\n return Array.from(obj.values());\n }\n\n if (isObservableArray(obj)) {\n return obj.slice();\n }\n\n die(6);\n}\nfunction entries(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) {\n return [key, obj[key]];\n });\n }\n\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) {\n return [key, obj.get(key)];\n });\n }\n\n if (isObservableSet(obj)) {\n return Array.from(obj.entries());\n }\n\n if (isObservableArray(obj)) {\n return obj.map(function (key, index) {\n return [index, key];\n });\n }\n\n die(7);\n}\nfunction set(obj, key, value) {\n if (arguments.length === 2 && !isObservableSet(obj)) {\n startBatch();\n var _values = key;\n\n try {\n for (var _key in _values) {\n set(obj, _key, _values[_key]);\n }\n } finally {\n endBatch();\n }\n\n return;\n }\n\n if (isObservableObject(obj)) {\n obj[$mobx].set_(key, value);\n } else if (isObservableMap(obj)) {\n obj.set(key, value);\n } else if (isObservableSet(obj)) {\n obj.add(key);\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") key = parseInt(key, 10);\n if (key < 0) die(\"Invalid index: '\" + key + \"'\");\n startBatch();\n if (key >= obj.length) obj.length = key + 1;\n obj[key] = value;\n endBatch();\n } else die(8);\n}\nfunction remove(obj, key) {\n if (isObservableObject(obj)) {\n obj[$mobx].delete_(key);\n } else if (isObservableMap(obj)) {\n obj[\"delete\"](key);\n } else if (isObservableSet(obj)) {\n obj[\"delete\"](key);\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") key = parseInt(key, 10);\n obj.splice(key, 1);\n } else {\n die(9);\n }\n}\nfunction has(obj, key) {\n if (isObservableObject(obj)) {\n return obj[$mobx].has_(key);\n } else if (isObservableMap(obj)) {\n return obj.has(key);\n } else if (isObservableSet(obj)) {\n return obj.has(key);\n } else if (isObservableArray(obj)) {\n return key >= 0 && key < obj.length;\n }\n\n die(10);\n}\nfunction get(obj, key) {\n if (!has(obj, key)) return undefined;\n\n if (isObservableObject(obj)) {\n return obj[$mobx].get_(key);\n } else if (isObservableMap(obj)) {\n return obj.get(key);\n } else if (isObservableArray(obj)) {\n return obj[key];\n }\n\n die(11);\n}\nfunction apiDefineProperty(obj, key, descriptor) {\n if (isObservableObject(obj)) {\n return obj[$mobx].defineProperty_(key, descriptor);\n }\n\n die(39);\n}\nfunction apiOwnKeys(obj) {\n if (isObservableObject(obj)) {\n return obj[$mobx].ownKeys_();\n }\n\n die(38);\n}\n\nfunction observe(thing, propOrCb, cbOrFire, fireImmediately) {\n if (isFunction(cbOrFire)) return observeObservableProperty(thing, propOrCb, cbOrFire, fireImmediately);else return observeObservable(thing, propOrCb, cbOrFire);\n}\n\nfunction observeObservable(thing, listener, fireImmediately) {\n return getAdministration(thing).observe_(listener, fireImmediately);\n}\n\nfunction observeObservableProperty(thing, property, listener, fireImmediately) {\n return getAdministration(thing, property).observe_(listener, fireImmediately);\n}\n\nfunction cache(map, key, value) {\n map.set(key, value);\n return value;\n}\n\nfunction toJSHelper(source, __alreadySeen) {\n if (source == null || typeof source !== \"object\" || source instanceof Date || !isObservable(source)) return source;\n if (isObservableValue(source) || isComputedValue(source)) return toJSHelper(source.get(), __alreadySeen);\n\n if (__alreadySeen.has(source)) {\n return __alreadySeen.get(source);\n }\n\n if (isObservableArray(source)) {\n var res = cache(__alreadySeen, source, new Array(source.length));\n source.forEach(function (value, idx) {\n res[idx] = toJSHelper(value, __alreadySeen);\n });\n return res;\n }\n\n if (isObservableSet(source)) {\n var _res = cache(__alreadySeen, source, new Set());\n\n source.forEach(function (value) {\n _res.add(toJSHelper(value, __alreadySeen));\n });\n return _res;\n }\n\n if (isObservableMap(source)) {\n var _res2 = cache(__alreadySeen, source, new Map());\n\n source.forEach(function (value, key) {\n _res2.set(key, toJSHelper(value, __alreadySeen));\n });\n return _res2;\n } else {\n // must be observable object\n var _res3 = cache(__alreadySeen, source, {});\n\n apiOwnKeys(source).forEach(function (key) {\n if (objectPrototype.propertyIsEnumerable.call(source, key)) {\n _res3[key] = toJSHelper(source[key], __alreadySeen);\n }\n });\n return _res3;\n }\n}\n/**\r\n * Basically, a deep clone, so that no reactive property will exist anymore.\r\n */\n\n\nfunction toJS(source, options) {\n if (process.env.NODE_ENV !== \"production\" && options) die(\"toJS no longer supports options\");\n return toJSHelper(source, new Map());\n}\n\nfunction trace() {\n if (!(process.env.NODE_ENV !== \"production\")) die(\"trace() is not available in production builds\");\n var enterBreakPoint = false;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[args.length - 1] === \"boolean\") enterBreakPoint = args.pop();\n var derivation = getAtomFromArgs(args);\n\n if (!derivation) {\n return die(\"'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly\");\n }\n\n if (derivation.isTracing_ === TraceMode.NONE) {\n console.log(\"[mobx.trace] '\" + derivation.name_ + \"' tracing enabled\");\n }\n\n derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG;\n}\n\nfunction getAtomFromArgs(args) {\n switch (args.length) {\n case 0:\n return globalState.trackingDerivation;\n\n case 1:\n return getAtom(args[0]);\n\n case 2:\n return getAtom(args[0], args[1]);\n }\n}\n\n/**\r\n * During a transaction no views are updated until the end of the transaction.\r\n * The transaction will be run synchronously nonetheless.\r\n *\r\n * @param action a function that updates some reactive state\r\n * @returns any value that was returned by the 'action' parameter.\r\n */\n\nfunction transaction(action, thisArg) {\n if (thisArg === void 0) {\n thisArg = undefined;\n }\n\n startBatch();\n\n try {\n return action.apply(thisArg);\n } finally {\n endBatch();\n }\n}\n\nfunction when(predicate, arg1, arg2) {\n if (arguments.length === 1 || arg1 && typeof arg1 === \"object\") return whenPromise(predicate, arg1);\n return _when(predicate, arg1, arg2 || {});\n}\n\nfunction _when(predicate, effect, opts) {\n var timeoutHandle;\n\n if (typeof opts.timeout === \"number\") {\n var error = new Error(\"WHEN_TIMEOUT\");\n timeoutHandle = setTimeout(function () {\n if (!disposer[$mobx].isDisposed_) {\n disposer();\n if (opts.onError) opts.onError(error);else throw error;\n }\n }, opts.timeout);\n }\n\n opts.name = process.env.NODE_ENV !== \"production\" ? opts.name || \"When@\" + getNextId() : \"When\";\n var effectAction = createAction(process.env.NODE_ENV !== \"production\" ? opts.name + \"-effect\" : \"When-effect\", effect); // eslint-disable-next-line\n\n var disposer = autorun(function (r) {\n // predicate should not change state\n var cond = allowStateChanges(false, predicate);\n\n if (cond) {\n r.dispose();\n if (timeoutHandle) clearTimeout(timeoutHandle);\n effectAction();\n }\n }, opts);\n return disposer;\n}\n\nfunction whenPromise(predicate, opts) {\n if (process.env.NODE_ENV !== \"production\" && opts && opts.onError) return die(\"the options 'onError' and 'promise' cannot be combined\");\n var cancel;\n var res = new Promise(function (resolve, reject) {\n var disposer = _when(predicate, resolve, _extends({}, opts, {\n onError: reject\n }));\n\n cancel = function cancel() {\n disposer();\n reject(new Error(\"WHEN_CANCELLED\"));\n };\n });\n res.cancel = cancel;\n return res;\n}\n\nfunction getAdm(target) {\n return target[$mobx];\n} // Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\n\n\nvar objectProxyTraps = {\n has: function has(target, name) {\n if (process.env.NODE_ENV !== \"production\" && globalState.trackingDerivation) warnAboutProxyRequirement(\"detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.\");\n return getAdm(target).has_(name);\n },\n get: function get(target, name) {\n return getAdm(target).get_(name);\n },\n set: function set(target, name, value) {\n var _getAdm$set_;\n\n if (!isStringish(name)) return false;\n\n if (process.env.NODE_ENV !== \"production\" && !getAdm(target).values_.has(name)) {\n warnAboutProxyRequirement(\"add a new observable property through direct assignment. Use 'set' from 'mobx' instead.\");\n } // null (intercepted) -> true (success)\n\n\n return (_getAdm$set_ = getAdm(target).set_(name, value, true)) != null ? _getAdm$set_ : true;\n },\n deleteProperty: function deleteProperty(target, name) {\n var _getAdm$delete_;\n\n if (process.env.NODE_ENV !== \"production\") {\n warnAboutProxyRequirement(\"delete properties from an observable object. Use 'remove' from 'mobx' instead.\");\n }\n\n if (!isStringish(name)) return false; // null (intercepted) -> true (success)\n\n return (_getAdm$delete_ = getAdm(target).delete_(name, true)) != null ? _getAdm$delete_ : true;\n },\n defineProperty: function defineProperty(target, name, descriptor) {\n var _getAdm$definePropert;\n\n if (process.env.NODE_ENV !== \"production\") {\n warnAboutProxyRequirement(\"define property on an observable object. Use 'defineProperty' from 'mobx' instead.\");\n } // null (intercepted) -> true (success)\n\n\n return (_getAdm$definePropert = getAdm(target).defineProperty_(name, descriptor)) != null ? _getAdm$definePropert : true;\n },\n ownKeys: function ownKeys(target) {\n if (process.env.NODE_ENV !== \"production\" && globalState.trackingDerivation) warnAboutProxyRequirement(\"iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.\");\n return getAdm(target).ownKeys_();\n },\n preventExtensions: function preventExtensions(target) {\n die(13);\n }\n};\nfunction asDynamicObservableObject(target, options) {\n var _target$$mobx, _target$$mobx$proxy_;\n\n assertProxies();\n target = asObservableObject(target, options);\n return (_target$$mobx$proxy_ = (_target$$mobx = target[$mobx]).proxy_) != null ? _target$$mobx$proxy_ : _target$$mobx.proxy_ = new Proxy(target, objectProxyTraps);\n}\n\nfunction hasInterceptors(interceptable) {\n return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0;\n}\nfunction registerInterceptor(interceptable, handler) {\n var interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = []);\n interceptors.push(handler);\n return once(function () {\n var idx = interceptors.indexOf(handler);\n if (idx !== -1) interceptors.splice(idx, 1);\n });\n}\nfunction interceptChange(interceptable, change) {\n var prevU = untrackedStart();\n\n try {\n // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n var interceptors = [].concat(interceptable.interceptors_ || []);\n\n for (var i = 0, l = interceptors.length; i < l; i++) {\n change = interceptors[i](change);\n if (change && !change.type) die(14);\n if (!change) break;\n }\n\n return change;\n } finally {\n untrackedEnd(prevU);\n }\n}\n\nfunction hasListeners(listenable) {\n return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0;\n}\nfunction registerListener(listenable, handler) {\n var listeners = listenable.changeListeners_ || (listenable.changeListeners_ = []);\n listeners.push(handler);\n return once(function () {\n var idx = listeners.indexOf(handler);\n if (idx !== -1) listeners.splice(idx, 1);\n });\n}\nfunction notifyListeners(listenable, change) {\n var prevU = untrackedStart();\n var listeners = listenable.changeListeners_;\n if (!listeners) return;\n listeners = listeners.slice();\n\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i](change);\n }\n\n untrackedEnd(prevU);\n}\n\nfunction makeObservable(target, annotations, options) {\n var adm = asObservableObject(target, options)[$mobx];\n startBatch();\n\n try {\n var _annotations;\n\n if (process.env.NODE_ENV !== \"production\" && annotations && target[storedAnnotationsSymbol]) {\n die(\"makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.\");\n } // Default to decorators\n\n\n (_annotations = annotations) != null ? _annotations : annotations = collectStoredAnnotations(target); // Annotate\n\n ownKeys(annotations).forEach(function (key) {\n return adm.make_(key, annotations[key]);\n });\n } finally {\n endBatch();\n }\n\n return target;\n} // proto[keysSymbol] = new Set()\n\nvar keysSymbol = /*#__PURE__*/Symbol(\"mobx-keys\");\nfunction makeAutoObservable(target, overrides, options) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target))) die(\"'makeAutoObservable' can only be used for classes that don't have a superclass\");\n if (isObservableObject(target)) die(\"makeAutoObservable can only be used on objects not already made observable\");\n } // Optimization: avoid visiting protos\n // Assumes that annotation.make_/.extend_ works the same for plain objects\n\n\n if (isPlainObject(target)) {\n return extendObservable(target, target, overrides, options);\n }\n\n var adm = asObservableObject(target, options)[$mobx]; // Optimization: cache keys on proto\n // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n\n if (!target[keysSymbol]) {\n var proto = Object.getPrototypeOf(target);\n var keys = new Set([].concat(ownKeys(target), ownKeys(proto)));\n keys[\"delete\"](\"constructor\");\n keys[\"delete\"]($mobx);\n addHiddenProp(proto, keysSymbol, keys);\n }\n\n startBatch();\n\n try {\n target[keysSymbol].forEach(function (key) {\n return adm.make_(key, // must pass \"undefined\" for { key: undefined }\n !overrides ? true : key in overrides ? overrides[key] : true);\n });\n } finally {\n endBatch();\n }\n\n return target;\n}\n\nvar SPLICE = \"splice\";\nvar UPDATE = \"update\";\nvar MAX_SPLICE_SIZE = 10000; // See e.g. https://github.com/mobxjs/mobx/issues/859\n\nvar arrayTraps = {\n get: function get(target, name) {\n var adm = target[$mobx];\n if (name === $mobx) return adm;\n if (name === \"length\") return adm.getArrayLength_();\n\n if (typeof name === \"string\" && !isNaN(name)) {\n return adm.get_(parseInt(name));\n }\n\n if (hasProp(arrayExtensions, name)) {\n return arrayExtensions[name];\n }\n\n return target[name];\n },\n set: function set(target, name, value) {\n var adm = target[$mobx];\n\n if (name === \"length\") {\n adm.setArrayLength_(value);\n }\n\n if (typeof name === \"symbol\" || isNaN(name)) {\n target[name] = value;\n } else {\n // numeric string\n adm.set_(parseInt(name), value);\n }\n\n return true;\n },\n preventExtensions: function preventExtensions() {\n die(15);\n }\n};\nvar ObservableArrayAdministration = /*#__PURE__*/function () {\n // this is the prop that gets proxied, so can't replace it!\n function ObservableArrayAdministration(name, enhancer, owned_, legacyMode_) {\n if (name === void 0) {\n name = process.env.NODE_ENV !== \"production\" ? \"ObservableArray@\" + getNextId() : \"ObservableArray\";\n }\n\n this.owned_ = void 0;\n this.legacyMode_ = void 0;\n this.atom_ = void 0;\n this.values_ = [];\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.enhancer_ = void 0;\n this.dehancer = void 0;\n this.proxy_ = void 0;\n this.lastKnownLength_ = 0;\n this.owned_ = owned_;\n this.legacyMode_ = legacyMode_;\n this.atom_ = new Atom(name);\n\n this.enhancer_ = function (newV, oldV) {\n return enhancer(newV, oldV, process.env.NODE_ENV !== \"production\" ? name + \"[..]\" : \"ObservableArray[..]\");\n };\n }\n\n var _proto = ObservableArrayAdministration.prototype;\n\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) return this.dehancer(value);\n return value;\n };\n\n _proto.dehanceValues_ = function dehanceValues_(values) {\n if (this.dehancer !== undefined && values.length > 0) return values.map(this.dehancer);\n return values;\n };\n\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (fireImmediately === void 0) {\n fireImmediately = false;\n }\n\n if (fireImmediately) {\n listener({\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: \"splice\",\n index: 0,\n added: this.values_.slice(),\n addedCount: this.values_.length,\n removed: [],\n removedCount: 0\n });\n }\n\n return registerListener(this, listener);\n };\n\n _proto.getArrayLength_ = function getArrayLength_() {\n this.atom_.reportObserved();\n return this.values_.length;\n };\n\n _proto.setArrayLength_ = function setArrayLength_(newLength) {\n if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) die(\"Out of range: \" + newLength);\n var currentLength = this.values_.length;\n if (newLength === currentLength) return;else if (newLength > currentLength) {\n var newItems = new Array(newLength - currentLength);\n\n for (var i = 0; i < newLength - currentLength; i++) {\n newItems[i] = undefined;\n } // No Array.fill everywhere...\n\n\n this.spliceWithArray_(currentLength, 0, newItems);\n } else this.spliceWithArray_(newLength, currentLength - newLength);\n };\n\n _proto.updateArrayLength_ = function updateArrayLength_(oldLength, delta) {\n if (oldLength !== this.lastKnownLength_) die(16);\n this.lastKnownLength_ += delta;\n if (this.legacyMode_ && delta > 0) reserveArrayBuffer(oldLength + delta + 1);\n };\n\n _proto.spliceWithArray_ = function spliceWithArray_(index, deleteCount, newItems) {\n var _this = this;\n\n checkIfStateModificationsAreAllowed(this.atom_);\n var length = this.values_.length;\n if (index === undefined) index = 0;else if (index > length) index = length;else if (index < 0) index = Math.max(0, length + index);\n if (arguments.length === 1) deleteCount = length - index;else if (deleteCount === undefined || deleteCount === null) deleteCount = 0;else deleteCount = Math.max(0, Math.min(deleteCount, length - index));\n if (newItems === undefined) newItems = EMPTY_ARRAY;\n\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_,\n type: SPLICE,\n index: index,\n removedCount: deleteCount,\n added: newItems\n });\n if (!change) return EMPTY_ARRAY;\n deleteCount = change.removedCount;\n newItems = change.added;\n }\n\n newItems = newItems.length === 0 ? newItems : newItems.map(function (v) {\n return _this.enhancer_(v, undefined);\n });\n\n if (this.legacyMode_ || process.env.NODE_ENV !== \"production\") {\n var lengthDelta = newItems.length - deleteCount;\n this.updateArrayLength_(length, lengthDelta); // checks if internal array wasn't modified\n }\n\n var res = this.spliceItemsIntoValues_(index, deleteCount, newItems);\n if (deleteCount !== 0 || newItems.length !== 0) this.notifyArraySplice_(index, newItems, res);\n return this.dehanceValues_(res);\n };\n\n _proto.spliceItemsIntoValues_ = function spliceItemsIntoValues_(index, deleteCount, newItems) {\n if (newItems.length < MAX_SPLICE_SIZE) {\n var _this$values_;\n\n return (_this$values_ = this.values_).splice.apply(_this$values_, [index, deleteCount].concat(newItems));\n } else {\n var res = this.values_.slice(index, index + deleteCount);\n var oldItems = this.values_.slice(index + deleteCount);\n this.values_.length = index + newItems.length - deleteCount;\n\n for (var i = 0; i < newItems.length; i++) {\n this.values_[index + i] = newItems[i];\n }\n\n for (var _i = 0; _i < oldItems.length; _i++) {\n this.values_[index + newItems.length + _i] = oldItems[_i];\n }\n\n return res;\n }\n };\n\n _proto.notifyArrayChildUpdate_ = function notifyArrayChildUpdate_(index, newValue, oldValue) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n type: UPDATE,\n debugObjectName: this.atom_.name_,\n index: index,\n newValue: newValue,\n oldValue: oldValue\n } : null; // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n // cause any runtime overhead in development mode without NODE_ENV set, unless spying is enabled\n\n if (process.env.NODE_ENV !== \"production\" && notifySpy) spyReportStart(change);\n this.atom_.reportChanged();\n if (notify) notifyListeners(this, change);\n if (process.env.NODE_ENV !== \"production\" && notifySpy) spyReportEnd();\n };\n\n _proto.notifyArraySplice_ = function notifyArraySplice_(index, added, removed) {\n var notifySpy = !this.owned_ && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: SPLICE,\n index: index,\n removed: removed,\n added: added,\n removedCount: removed.length,\n addedCount: added.length\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) spyReportStart(change);\n this.atom_.reportChanged(); // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n\n if (notify) notifyListeners(this, change);\n if (process.env.NODE_ENV !== \"production\" && notifySpy) spyReportEnd();\n };\n\n _proto.get_ = function get_(index) {\n if (index < this.values_.length) {\n this.atom_.reportObserved();\n return this.dehanceValue_(this.values_[index]);\n }\n\n console.warn(process.env.NODE_ENV !== \"production\" ? \"[mobx] Out of bounds read: \" + index : \"[mobx.array] Attempt to read an array index (\" + index + \") that is out of bounds (\" + this.values_.length + \"). Please check length first. Out of bound indices will not be tracked by MobX\");\n };\n\n _proto.set_ = function set_(index, newValue) {\n var values = this.values_;\n\n if (index < values.length) {\n // update at index in range\n checkIfStateModificationsAreAllowed(this.atom_);\n var oldValue = values[index];\n\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_,\n index: index,\n newValue: newValue\n });\n if (!change) return;\n newValue = change.newValue;\n }\n\n newValue = this.enhancer_(newValue, oldValue);\n var changed = newValue !== oldValue;\n\n if (changed) {\n values[index] = newValue;\n this.notifyArrayChildUpdate_(index, newValue, oldValue);\n }\n } else if (index === values.length) {\n // add a new item\n this.spliceWithArray_(index, 0, [newValue]);\n } else {\n // out of bounds\n die(17, index, values.length);\n }\n };\n\n return ObservableArrayAdministration;\n}();\nfunction createObservableArray(initialValues, enhancer, name, owned) {\n if (name === void 0) {\n name = process.env.NODE_ENV !== \"production\" ? \"ObservableArray@\" + getNextId() : \"ObservableArray\";\n }\n\n if (owned === void 0) {\n owned = false;\n }\n\n assertProxies();\n var adm = new ObservableArrayAdministration(name, enhancer, owned, false);\n addHiddenFinalProp(adm.values_, $mobx, adm);\n var proxy = new Proxy(adm.values_, arrayTraps);\n adm.proxy_ = proxy;\n\n if (initialValues && initialValues.length) {\n var prev = allowStateChangesStart(true);\n adm.spliceWithArray_(0, 0, initialValues);\n allowStateChangesEnd(prev);\n }\n\n return proxy;\n} // eslint-disable-next-line\n\nvar arrayExtensions = {\n clear: function clear() {\n return this.splice(0);\n },\n replace: function replace(newItems) {\n var adm = this[$mobx];\n return adm.spliceWithArray_(0, adm.values_.length, newItems);\n },\n // Used by JSON.stringify\n toJSON: function toJSON() {\n return this.slice();\n },\n\n /*\r\n * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\r\n * since these functions alter the inner structure of the array, the have side effects.\r\n * Because the have side effects, they should not be used in computed function,\r\n * and for that reason the do not call dependencyState.notifyObserved\r\n */\n splice: function splice(index, deleteCount) {\n for (var _len = arguments.length, newItems = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n newItems[_key - 2] = arguments[_key];\n }\n\n var adm = this[$mobx];\n\n switch (arguments.length) {\n case 0:\n return [];\n\n case 1:\n return adm.spliceWithArray_(index);\n\n case 2:\n return adm.spliceWithArray_(index, deleteCount);\n }\n\n return adm.spliceWithArray_(index, deleteCount, newItems);\n },\n spliceWithArray: function spliceWithArray(index, deleteCount, newItems) {\n return this[$mobx].spliceWithArray_(index, deleteCount, newItems);\n },\n push: function push() {\n var adm = this[$mobx];\n\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n adm.spliceWithArray_(adm.values_.length, 0, items);\n return adm.values_.length;\n },\n pop: function pop() {\n return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0];\n },\n shift: function shift() {\n return this.splice(0, 1)[0];\n },\n unshift: function unshift() {\n var adm = this[$mobx];\n\n for (var _len3 = arguments.length, items = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n items[_key3] = arguments[_key3];\n }\n\n adm.spliceWithArray_(0, 0, items);\n return adm.values_.length;\n },\n reverse: function reverse() {\n // reverse by default mutates in place before returning the result\n // which makes it both a 'derivation' and a 'mutation'.\n if (globalState.trackingDerivation) {\n die(37, \"reverse\");\n }\n\n this.replace(this.slice().reverse());\n return this;\n },\n sort: function sort() {\n // sort by default mutates in place before returning the result\n // which goes against all good practices. Let's not change the array in place!\n if (globalState.trackingDerivation) {\n die(37, \"sort\");\n }\n\n var copy = this.slice();\n copy.sort.apply(copy, arguments);\n this.replace(copy);\n return this;\n },\n remove: function remove(value) {\n var adm = this[$mobx];\n var idx = adm.dehanceValues_(adm.values_).indexOf(value);\n\n if (idx > -1) {\n this.splice(idx, 1);\n return true;\n }\n\n return false;\n }\n};\n/**\r\n * Wrap function from prototype\r\n * Without this, everything works as well, but this works\r\n * faster as everything works on unproxied values\r\n */\n\naddArrayExtension(\"concat\", simpleFunc);\naddArrayExtension(\"flat\", simpleFunc);\naddArrayExtension(\"includes\", simpleFunc);\naddArrayExtension(\"indexOf\", simpleFunc);\naddArrayExtension(\"join\", simpleFunc);\naddArrayExtension(\"lastIndexOf\", simpleFunc);\naddArrayExtension(\"slice\", simpleFunc);\naddArrayExtension(\"toString\", simpleFunc);\naddArrayExtension(\"toLocaleString\", simpleFunc); // map\n\naddArrayExtension(\"every\", mapLikeFunc);\naddArrayExtension(\"filter\", mapLikeFunc);\naddArrayExtension(\"find\", mapLikeFunc);\naddArrayExtension(\"findIndex\", mapLikeFunc);\naddArrayExtension(\"flatMap\", mapLikeFunc);\naddArrayExtension(\"forEach\", mapLikeFunc);\naddArrayExtension(\"map\", mapLikeFunc);\naddArrayExtension(\"some\", mapLikeFunc); // reduce\n\naddArrayExtension(\"reduce\", reduceLikeFunc);\naddArrayExtension(\"reduceRight\", reduceLikeFunc);\n\nfunction addArrayExtension(funcName, funcFactory) {\n if (typeof Array.prototype[funcName] === \"function\") {\n arrayExtensions[funcName] = funcFactory(funcName);\n }\n} // Report and delegate to dehanced array\n\n\nfunction simpleFunc(funcName) {\n return function () {\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n} // Make sure callbacks recieve correct array arg #2326\n\n\nfunction mapLikeFunc(funcName) {\n return function (callback, thisArg) {\n var _this2 = this;\n\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_);\n return dehancedValues[funcName](function (element, index) {\n return callback.call(thisArg, element, index, _this2);\n });\n };\n} // Make sure callbacks recieve correct array arg #2326\n\n\nfunction reduceLikeFunc(funcName) {\n return function () {\n var _this3 = this;\n\n var adm = this[$mobx];\n adm.atom_.reportObserved();\n var dehancedValues = adm.dehanceValues_(adm.values_); // #2432 - reduce behavior depends on arguments.length\n\n var callback = arguments[0];\n\n arguments[0] = function (accumulator, currentValue, index) {\n return callback(accumulator, currentValue, index, _this3);\n };\n\n return dehancedValues[funcName].apply(dehancedValues, arguments);\n };\n}\n\nvar isObservableArrayAdministration = /*#__PURE__*/createInstanceofPredicate(\"ObservableArrayAdministration\", ObservableArrayAdministration);\nfunction isObservableArray(thing) {\n return isObject(thing) && isObservableArrayAdministration(thing[$mobx]);\n}\n\nvar _Symbol$iterator, _Symbol$toStringTag;\nvar ObservableMapMarker = {};\nvar ADD = \"add\";\nvar DELETE = \"delete\"; // just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\n\n_Symbol$iterator = Symbol.iterator;\n_Symbol$toStringTag = Symbol.toStringTag;\nvar ObservableMap = /*#__PURE__*/function () {\n // hasMap, not hashMap >-).\n function ObservableMap(initialData, enhancer_, name_) {\n if (enhancer_ === void 0) {\n enhancer_ = deepEnhancer;\n }\n\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"ObservableMap@\" + getNextId() : \"ObservableMap\";\n }\n\n this.enhancer_ = void 0;\n this.name_ = void 0;\n this[$mobx] = ObservableMapMarker;\n this.data_ = void 0;\n this.hasMap_ = void 0;\n this.keysAtom_ = void 0;\n this.interceptors_ = void 0;\n this.changeListeners_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = enhancer_;\n this.name_ = name_;\n\n if (!isFunction(Map)) {\n die(18);\n }\n\n this.keysAtom_ = createAtom(process.env.NODE_ENV !== \"production\" ? this.name_ + \".keys()\" : \"ObservableMap.keys()\");\n this.data_ = new Map();\n this.hasMap_ = new Map();\n this.merge(initialData);\n }\n\n var _proto = ObservableMap.prototype;\n\n _proto.has_ = function has_(key) {\n return this.data_.has(key);\n };\n\n _proto.has = function has(key) {\n var _this = this;\n\n if (!globalState.trackingDerivation) return this.has_(key);\n var entry = this.hasMap_.get(key);\n\n if (!entry) {\n var newEntry = entry = new ObservableValue(this.has_(key), referenceEnhancer, process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + stringifyKey(key) + \"?\" : \"ObservableMap.key?\", false);\n this.hasMap_.set(key, newEntry);\n onBecomeUnobserved(newEntry, function () {\n return _this.hasMap_[\"delete\"](key);\n });\n }\n\n return entry.get();\n };\n\n _proto.set = function set(key, value) {\n var hasKey = this.has_(key);\n\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: hasKey ? UPDATE : ADD,\n object: this,\n newValue: value,\n name: key\n });\n if (!change) return this;\n value = change.newValue;\n }\n\n if (hasKey) {\n this.updateValue_(key, value);\n } else {\n this.addValue_(key, value);\n }\n\n return this;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var _this2 = this;\n\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n name: key\n });\n if (!change) return false;\n }\n\n if (this.has_(key)) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n\n var _change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: this.data_.get(key).value_,\n name: key\n } : null;\n\n if (process.env.NODE_ENV !== \"production\" && notifySpy) spyReportStart(_change);\n transaction(function () {\n var _this2$hasMap_$get;\n\n _this2.keysAtom_.reportChanged();\n\n (_this2$hasMap_$get = _this2.hasMap_.get(key)) == null ? void 0 : _this2$hasMap_$get.setNewValue_(false);\n\n var observable = _this2.data_.get(key);\n\n observable.setNewValue_(undefined);\n\n _this2.data_[\"delete\"](key);\n });\n if (notify) notifyListeners(this, _change);\n if (process.env.NODE_ENV !== \"production\" && notifySpy) spyReportEnd();\n return true;\n }\n\n return false;\n };\n\n _proto.updateValue_ = function updateValue_(key, newValue) {\n var observable = this.data_.get(key);\n newValue = observable.prepareNewValue_(newValue);\n\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) spyReportStart(change);\n observable.setNewValue_(newValue);\n if (notify) notifyListeners(this, change);\n if (process.env.NODE_ENV !== \"production\" && notifySpy) spyReportEnd();\n }\n };\n\n _proto.addValue_ = function addValue_(key, newValue) {\n var _this3 = this;\n\n checkIfStateModificationsAreAllowed(this.keysAtom_);\n transaction(function () {\n var _this3$hasMap_$get;\n\n var observable = new ObservableValue(newValue, _this3.enhancer_, process.env.NODE_ENV !== \"production\" ? _this3.name_ + \".\" + stringifyKey(key) : \"ObservableMap.key\", false);\n\n _this3.data_.set(key, observable);\n\n newValue = observable.value_; // value might have been changed\n\n (_this3$hasMap_$get = _this3.hasMap_.get(key)) == null ? void 0 : _this3$hasMap_$get.setNewValue_(true);\n\n _this3.keysAtom_.reportChanged();\n });\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n name: key,\n newValue: newValue\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) spyReportStart(change);\n if (notify) notifyListeners(this, change);\n if (process.env.NODE_ENV !== \"production\" && notifySpy) spyReportEnd();\n };\n\n _proto.get = function get(key) {\n if (this.has(key)) return this.dehanceValue_(this.data_.get(key).get());\n return this.dehanceValue_(undefined);\n };\n\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n\n return value;\n };\n\n _proto.keys = function keys() {\n this.keysAtom_.reportObserved();\n return this.data_.keys();\n };\n\n _proto.values = function values() {\n var self = this;\n var keys = this.keys();\n return makeIterable({\n next: function next() {\n var _keys$next = keys.next(),\n done = _keys$next.done,\n value = _keys$next.value;\n\n return {\n done: done,\n value: done ? undefined : self.get(value)\n };\n }\n });\n };\n\n _proto.entries = function entries() {\n var self = this;\n var keys = this.keys();\n return makeIterable({\n next: function next() {\n var _keys$next2 = keys.next(),\n done = _keys$next2.done,\n value = _keys$next2.value;\n\n return {\n done: done,\n value: done ? undefined : [value, self.get(value)]\n };\n }\n });\n };\n\n _proto[_Symbol$iterator] = function () {\n return this.entries();\n };\n\n _proto.forEach = function forEach(callback, thisArg) {\n for (var _iterator = _createForOfIteratorHelperLoose(this), _step; !(_step = _iterator()).done;) {\n var _step$value = _step.value,\n key = _step$value[0],\n value = _step$value[1];\n callback.call(thisArg, value, key, this);\n }\n }\n /** Merge another object into this object, returns this. */\n ;\n\n _proto.merge = function merge(other) {\n var _this4 = this;\n\n if (isObservableMap(other)) {\n other = new Map(other);\n }\n\n transaction(function () {\n if (isPlainObject(other)) getPlainObjectKeys(other).forEach(function (key) {\n return _this4.set(key, other[key]);\n });else if (Array.isArray(other)) other.forEach(function (_ref) {\n var key = _ref[0],\n value = _ref[1];\n return _this4.set(key, value);\n });else if (isES6Map(other)) {\n if (other.constructor !== Map) die(19, other);\n other.forEach(function (value, key) {\n return _this4.set(key, value);\n });\n } else if (other !== null && other !== undefined) die(20, other);\n });\n return this;\n };\n\n _proto.clear = function clear() {\n var _this5 = this;\n\n transaction(function () {\n untracked(function () {\n for (var _iterator2 = _createForOfIteratorHelperLoose(_this5.keys()), _step2; !(_step2 = _iterator2()).done;) {\n var key = _step2.value;\n\n _this5[\"delete\"](key);\n }\n });\n });\n };\n\n _proto.replace = function replace(values) {\n var _this6 = this;\n\n // Implementation requirements:\n // - respect ordering of replacement map\n // - allow interceptors to run and potentially prevent individual operations\n // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n // - note that result map may differ from replacement map due to the interceptors\n transaction(function () {\n // Convert to map so we can do quick key lookups\n var replacementMap = convertToMap(values);\n var orderedData = new Map(); // Used for optimization\n\n var keysReportChangedCalled = false; // Delete keys that don't exist in replacement map\n // if the key deletion is prevented by interceptor\n // add entry at the beginning of the result map\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(_this6.data_.keys()), _step3; !(_step3 = _iterator3()).done;) {\n var key = _step3.value;\n\n // Concurrently iterating/deleting keys\n // iterator should handle this correctly\n if (!replacementMap.has(key)) {\n var deleted = _this6[\"delete\"](key); // Was the key removed?\n\n\n if (deleted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n } else {\n // Delete prevented by interceptor\n var value = _this6.data_.get(key);\n\n orderedData.set(key, value);\n }\n }\n } // Merge entries\n\n\n for (var _iterator4 = _createForOfIteratorHelperLoose(replacementMap.entries()), _step4; !(_step4 = _iterator4()).done;) {\n var _step4$value = _step4.value,\n _key = _step4$value[0],\n _value = _step4$value[1];\n\n // We will want to know whether a new key is added\n var keyExisted = _this6.data_.has(_key); // Add or update value\n\n\n _this6.set(_key, _value); // The addition could have been prevent by interceptor\n\n\n if (_this6.data_.has(_key)) {\n // The update could have been prevented by interceptor\n // and also we want to preserve existing values\n // so use value from _data map (instead of replacement map)\n var _value2 = _this6.data_.get(_key);\n\n orderedData.set(_key, _value2); // Was a new key added?\n\n if (!keyExisted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n }\n }\n } // Check for possible key order change\n\n\n if (!keysReportChangedCalled) {\n if (_this6.data_.size !== orderedData.size) {\n // If size differs, keys are definitely modified\n _this6.keysAtom_.reportChanged();\n } else {\n var iter1 = _this6.data_.keys();\n\n var iter2 = orderedData.keys();\n var next1 = iter1.next();\n var next2 = iter2.next();\n\n while (!next1.done) {\n if (next1.value !== next2.value) {\n _this6.keysAtom_.reportChanged();\n\n break;\n }\n\n next1 = iter1.next();\n next2 = iter2.next();\n }\n }\n } // Use correctly ordered map\n\n\n _this6.data_ = orderedData;\n });\n return this;\n };\n\n _proto.toString = function toString() {\n return \"[object ObservableMap]\";\n };\n\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n\n /**\r\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\r\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\r\n * for callback details\r\n */\n _proto.observe_ = function observe_(listener, fireImmediately) {\n if (process.env.NODE_ENV !== \"production\" && fireImmediately === true) die(\"`observe` doesn't support fireImmediately=true in combination with maps.\");\n return registerListener(this, listener);\n };\n\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n\n _createClass(ObservableMap, [{\n key: \"size\",\n get: function get() {\n this.keysAtom_.reportObserved();\n return this.data_.size;\n }\n }, {\n key: _Symbol$toStringTag,\n get: function get() {\n return \"Map\";\n }\n }]);\n\n return ObservableMap;\n}(); // eslint-disable-next-line\n\nvar isObservableMap = /*#__PURE__*/createInstanceofPredicate(\"ObservableMap\", ObservableMap);\n\nfunction convertToMap(dataStructure) {\n if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n return dataStructure;\n } else if (Array.isArray(dataStructure)) {\n return new Map(dataStructure);\n } else if (isPlainObject(dataStructure)) {\n var map = new Map();\n\n for (var key in dataStructure) {\n map.set(key, dataStructure[key]);\n }\n\n return map;\n } else {\n return die(21, dataStructure);\n }\n}\n\nvar _Symbol$iterator$1, _Symbol$toStringTag$1;\nvar ObservableSetMarker = {};\n_Symbol$iterator$1 = Symbol.iterator;\n_Symbol$toStringTag$1 = Symbol.toStringTag;\nvar ObservableSet = /*#__PURE__*/function () {\n function ObservableSet(initialData, enhancer, name_) {\n if (enhancer === void 0) {\n enhancer = deepEnhancer;\n }\n\n if (name_ === void 0) {\n name_ = process.env.NODE_ENV !== \"production\" ? \"ObservableSet@\" + getNextId() : \"ObservableSet\";\n }\n\n this.name_ = void 0;\n this[$mobx] = ObservableSetMarker;\n this.data_ = new Set();\n this.atom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.dehancer = void 0;\n this.enhancer_ = void 0;\n this.name_ = name_;\n\n if (!isFunction(Set)) {\n die(22);\n }\n\n this.atom_ = createAtom(this.name_);\n\n this.enhancer_ = function (newV, oldV) {\n return enhancer(newV, oldV, name_);\n };\n\n if (initialData) {\n this.replace(initialData);\n }\n }\n\n var _proto = ObservableSet.prototype;\n\n _proto.dehanceValue_ = function dehanceValue_(value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n\n return value;\n };\n\n _proto.clear = function clear() {\n var _this = this;\n\n transaction(function () {\n untracked(function () {\n for (var _iterator = _createForOfIteratorHelperLoose(_this.data_.values()), _step; !(_step = _iterator()).done;) {\n var value = _step.value;\n\n _this[\"delete\"](value);\n }\n });\n });\n };\n\n _proto.forEach = function forEach(callbackFn, thisArg) {\n for (var _iterator2 = _createForOfIteratorHelperLoose(this), _step2; !(_step2 = _iterator2()).done;) {\n var value = _step2.value;\n callbackFn.call(thisArg, value, value, this);\n }\n };\n\n _proto.add = function add(value) {\n var _this2 = this;\n\n checkIfStateModificationsAreAllowed(this.atom_);\n\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: ADD,\n object: this,\n newValue: value\n });\n if (!change) return this; // ideally, value = change.value would be done here, so that values can be\n // changed by interceptor. Same applies for other Set and Map api's.\n }\n\n if (!this.has(value)) {\n transaction(function () {\n _this2.data_.add(_this2.enhancer_(value, undefined));\n\n _this2.atom_.reportChanged();\n });\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var notify = hasListeners(this);\n\n var _change = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n newValue: value\n } : null;\n\n if (notifySpy && process.env.NODE_ENV !== \"production\") spyReportStart(_change);\n if (notify) notifyListeners(this, _change);\n if (notifySpy && process.env.NODE_ENV !== \"production\") spyReportEnd();\n }\n\n return this;\n };\n\n _proto[\"delete\"] = function _delete(value) {\n var _this3 = this;\n\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: DELETE,\n object: this,\n oldValue: value\n });\n if (!change) return false;\n }\n\n if (this.has(value)) {\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var notify = hasListeners(this);\n\n var _change2 = notify || notifySpy ? {\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: value\n } : null;\n\n if (notifySpy && process.env.NODE_ENV !== \"production\") spyReportStart(_change2);\n transaction(function () {\n _this3.atom_.reportChanged();\n\n _this3.data_[\"delete\"](value);\n });\n if (notify) notifyListeners(this, _change2);\n if (notifySpy && process.env.NODE_ENV !== \"production\") spyReportEnd();\n return true;\n }\n\n return false;\n };\n\n _proto.has = function has(value) {\n this.atom_.reportObserved();\n return this.data_.has(this.dehanceValue_(value));\n };\n\n _proto.entries = function entries() {\n var nextIndex = 0;\n var keys = Array.from(this.keys());\n var values = Array.from(this.values());\n return makeIterable({\n next: function next() {\n var index = nextIndex;\n nextIndex += 1;\n return index < values.length ? {\n value: [keys[index], values[index]],\n done: false\n } : {\n done: true\n };\n }\n });\n };\n\n _proto.keys = function keys() {\n return this.values();\n };\n\n _proto.values = function values() {\n this.atom_.reportObserved();\n var self = this;\n var nextIndex = 0;\n var observableValues = Array.from(this.data_.values());\n return makeIterable({\n next: function next() {\n return nextIndex < observableValues.length ? {\n value: self.dehanceValue_(observableValues[nextIndex++]),\n done: false\n } : {\n done: true\n };\n }\n });\n };\n\n _proto.replace = function replace(other) {\n var _this4 = this;\n\n if (isObservableSet(other)) {\n other = new Set(other);\n }\n\n transaction(function () {\n if (Array.isArray(other)) {\n _this4.clear();\n\n other.forEach(function (value) {\n return _this4.add(value);\n });\n } else if (isES6Set(other)) {\n _this4.clear();\n\n other.forEach(function (value) {\n return _this4.add(value);\n });\n } else if (other !== null && other !== undefined) {\n die(\"Cannot initialize set from \" + other);\n }\n });\n return this;\n };\n\n _proto.observe_ = function observe_(listener, fireImmediately) {\n // ... 'fireImmediately' could also be true?\n if (process.env.NODE_ENV !== \"production\" && fireImmediately === true) die(\"`observe` doesn't support fireImmediately=true in combination with sets.\");\n return registerListener(this, listener);\n };\n\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n\n _proto.toJSON = function toJSON() {\n return Array.from(this);\n };\n\n _proto.toString = function toString() {\n return \"[object ObservableSet]\";\n };\n\n _proto[_Symbol$iterator$1] = function () {\n return this.values();\n };\n\n _createClass(ObservableSet, [{\n key: \"size\",\n get: function get() {\n this.atom_.reportObserved();\n return this.data_.size;\n }\n }, {\n key: _Symbol$toStringTag$1,\n get: function get() {\n return \"Set\";\n }\n }]);\n\n return ObservableSet;\n}(); // eslint-disable-next-line\n\nvar isObservableSet = /*#__PURE__*/createInstanceofPredicate(\"ObservableSet\", ObservableSet);\n\nvar descriptorCache = /*#__PURE__*/Object.create(null);\nvar REMOVE = \"remove\";\nvar ObservableObjectAdministration = /*#__PURE__*/function () {\n function ObservableObjectAdministration(target_, values_, name_, // Used anytime annotation is not explicitely provided\n defaultAnnotation_) {\n if (values_ === void 0) {\n values_ = new Map();\n }\n\n if (defaultAnnotation_ === void 0) {\n defaultAnnotation_ = autoAnnotation;\n }\n\n this.target_ = void 0;\n this.values_ = void 0;\n this.name_ = void 0;\n this.defaultAnnotation_ = void 0;\n this.keysAtom_ = void 0;\n this.changeListeners_ = void 0;\n this.interceptors_ = void 0;\n this.proxy_ = void 0;\n this.isPlainObject_ = void 0;\n this.appliedAnnotations_ = void 0;\n this.pendingKeys_ = void 0;\n this.target_ = target_;\n this.values_ = values_;\n this.name_ = name_;\n this.defaultAnnotation_ = defaultAnnotation_;\n this.keysAtom_ = new Atom(process.env.NODE_ENV !== \"production\" ? this.name_ + \".keys\" : \"ObservableObject.keys\"); // Optimization: we use this frequently\n\n this.isPlainObject_ = isPlainObject(this.target_);\n\n if (process.env.NODE_ENV !== \"production\" && !isAnnotation(this.defaultAnnotation_)) {\n die(\"defaultAnnotation must be valid annotation\");\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n // Prepare structure for tracking which fields were already annotated\n this.appliedAnnotations_ = {};\n }\n }\n\n var _proto = ObservableObjectAdministration.prototype;\n\n _proto.getObservablePropValue_ = function getObservablePropValue_(key) {\n return this.values_.get(key).get();\n };\n\n _proto.setObservablePropValue_ = function setObservablePropValue_(key, newValue) {\n var observable = this.values_.get(key);\n\n if (observable instanceof ComputedValue) {\n observable.set(newValue);\n return true;\n } // intercept\n\n\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: newValue\n });\n if (!change) return null;\n newValue = change.newValue;\n }\n\n newValue = observable.prepareNewValue_(newValue); // notify spy & observers\n\n if (newValue !== globalState.UNCHANGED) {\n var notify = hasListeners(this);\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n\n var _change = notify || notifySpy ? {\n type: UPDATE,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n oldValue: observable.value_,\n name: key,\n newValue: newValue\n } : null;\n\n if (process.env.NODE_ENV !== \"production\" && notifySpy) spyReportStart(_change);\n observable.setNewValue_(newValue);\n if (notify) notifyListeners(this, _change);\n if (process.env.NODE_ENV !== \"production\" && notifySpy) spyReportEnd();\n }\n\n return true;\n };\n\n _proto.get_ = function get_(key) {\n if (globalState.trackingDerivation && !hasProp(this.target_, key)) {\n // Key doesn't exist yet, subscribe for it in case it's added later\n this.has_(key);\n }\n\n return this.target_[key];\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {any} value\r\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */\n ;\n\n _proto.set_ = function set_(key, value, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n\n // Don't use .has(key) - we care about own\n if (hasProp(this.target_, key)) {\n // Existing prop\n if (this.values_.has(key)) {\n // Observable (can be intercepted)\n return this.setObservablePropValue_(key, value);\n } else if (proxyTrap) {\n // Non-observable - proxy\n return Reflect.set(this.target_, key, value);\n } else {\n // Non-observable\n this.target_[key] = value;\n return true;\n }\n } else {\n // New prop\n return this.extend_(key, {\n value: value,\n enumerable: true,\n writable: true,\n configurable: true\n }, this.defaultAnnotation_, proxyTrap);\n }\n } // Trap for \"in\"\n ;\n\n _proto.has_ = function has_(key) {\n if (!globalState.trackingDerivation) {\n // Skip key subscription outside derivation\n return key in this.target_;\n }\n\n this.pendingKeys_ || (this.pendingKeys_ = new Map());\n var entry = this.pendingKeys_.get(key);\n\n if (!entry) {\n entry = new ObservableValue(key in this.target_, referenceEnhancer, process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + stringifyKey(key) + \"?\" : \"ObservableObject.key?\", false);\n this.pendingKeys_.set(key, entry);\n }\n\n return entry.get();\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\r\n */\n ;\n\n _proto.make_ = function make_(key, annotation) {\n if (annotation === true) {\n annotation = this.defaultAnnotation_;\n }\n\n if (annotation === false) {\n return;\n }\n\n assertAnnotable(this, annotation, key);\n\n if (!(key in this.target_)) {\n var _this$target_$storedA;\n\n // Throw on missing key, except for decorators:\n // Decorator annotations are collected from whole prototype chain.\n // When called from super() some props may not exist yet.\n // However we don't have to worry about missing prop,\n // because the decorator must have been applied to something.\n if ((_this$target_$storedA = this.target_[storedAnnotationsSymbol]) == null ? void 0 : _this$target_$storedA[key]) {\n return; // will be annotated by subclass constructor\n } else {\n die(1, annotation.annotationType_, this.name_ + \".\" + key.toString());\n }\n }\n\n var source = this.target_;\n\n while (source && source !== objectPrototype) {\n var descriptor = getDescriptor(source, key);\n\n if (descriptor) {\n var outcome = annotation.make_(this, key, descriptor, source);\n if (outcome === 0\n /* Cancel */\n ) return;\n if (outcome === 1\n /* Break */\n ) break;\n }\n\n source = Object.getPrototypeOf(source);\n }\n\n recordAnnotationApplied(this, annotation, key);\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {PropertyDescriptor} descriptor\r\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */\n ;\n\n _proto.extend_ = function extend_(key, descriptor, annotation, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n\n if (annotation === true) {\n annotation = this.defaultAnnotation_;\n }\n\n if (annotation === false) {\n return this.defineProperty_(key, descriptor, proxyTrap);\n }\n\n assertAnnotable(this, annotation, key);\n var outcome = annotation.extend_(this, key, descriptor, proxyTrap);\n\n if (outcome) {\n recordAnnotationApplied(this, annotation, key);\n }\n\n return outcome;\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {PropertyDescriptor} descriptor\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */\n ;\n\n _proto.defineProperty_ = function defineProperty_(key, descriptor, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n\n try {\n startBatch(); // Delete\n\n var deleteOutcome = this.delete_(key);\n\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n } // ADD interceptor\n\n\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: descriptor.value\n });\n if (!change) return null;\n var newValue = change.newValue;\n\n if (descriptor.value !== newValue) {\n descriptor = _extends({}, descriptor, {\n value: newValue\n });\n }\n } // Define\n\n\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n } // Notify\n\n\n this.notifyPropertyAddition_(key, descriptor.value);\n } finally {\n endBatch();\n }\n\n return true;\n } // If original descriptor becomes relevant, move this to annotation directly\n ;\n\n _proto.defineObservableProperty_ = function defineObservableProperty_(key, value, enhancer, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n\n try {\n startBatch(); // Delete\n\n var deleteOutcome = this.delete_(key);\n\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n } // ADD interceptor\n\n\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: value\n });\n if (!change) return null;\n value = change.newValue;\n }\n\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: true,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }; // Define\n\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n\n var observable = new ObservableValue(value, enhancer, process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + key.toString() : \"ObservableObject.key\", false);\n this.values_.set(key, observable); // Notify (value possibly changed by ObservableValue)\n\n this.notifyPropertyAddition_(key, observable.value_);\n } finally {\n endBatch();\n }\n\n return true;\n } // If original descriptor becomes relevant, move this to annotation directly\n ;\n\n _proto.defineComputedProperty_ = function defineComputedProperty_(key, options, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n\n try {\n startBatch(); // Delete\n\n var deleteOutcome = this.delete_(key);\n\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome;\n } // ADD interceptor\n\n\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: undefined\n });\n if (!change) return null;\n }\n\n options.name || (options.name = process.env.NODE_ENV !== \"production\" ? this.name_ + \".\" + key.toString() : \"ObservableObject.key\");\n options.context = this.proxy_ || this.target_;\n var cachedDescriptor = getCachedObservablePropDescriptor(key);\n var descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: false,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }; // Define\n\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false;\n }\n } else {\n defineProperty(this.target_, key, descriptor);\n }\n\n this.values_.set(key, new ComputedValue(options)); // Notify\n\n this.notifyPropertyAddition_(key, undefined);\n } finally {\n endBatch();\n }\n\n return true;\n }\n /**\r\n * @param {PropertyKey} key\r\n * @param {PropertyDescriptor} descriptor\r\n * @param {boolean} proxyTrap whether it's called from proxy trap\r\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\r\n */\n ;\n\n _proto.delete_ = function delete_(key, proxyTrap) {\n if (proxyTrap === void 0) {\n proxyTrap = false;\n }\n\n // No such prop\n if (!hasProp(this.target_, key)) {\n return true;\n } // Intercept\n\n\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: REMOVE\n }); // Cancelled\n\n if (!change) return null;\n } // Delete\n\n\n try {\n var _this$pendingKeys_, _this$pendingKeys_$ge;\n\n startBatch();\n var notify = hasListeners(this);\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n var observable = this.values_.get(key); // Value needed for spies/listeners\n\n var value = undefined; // Optimization: don't pull the value unless we will need it\n\n if (!observable && (notify || notifySpy)) {\n var _getDescriptor;\n\n value = (_getDescriptor = getDescriptor(this.target_, key)) == null ? void 0 : _getDescriptor.value;\n } // delete prop (do first, may fail)\n\n\n if (proxyTrap) {\n if (!Reflect.deleteProperty(this.target_, key)) {\n return false;\n }\n } else {\n delete this.target_[key];\n } // Allow re-annotating this field\n\n\n if (process.env.NODE_ENV !== \"production\") {\n delete this.appliedAnnotations_[key];\n } // Clear observable\n\n\n if (observable) {\n this.values_[\"delete\"](key); // for computed, value is undefined\n\n if (observable instanceof ObservableValue) {\n value = observable.value_;\n } // Notify: autorun(() => obj[key]), see #1796\n\n\n propagateChanged(observable);\n } // Notify \"keys/entries/values\" observers\n\n\n this.keysAtom_.reportChanged(); // Notify \"has\" observers\n // \"in\" as it may still exist in proto\n\n (_this$pendingKeys_ = this.pendingKeys_) == null ? void 0 : (_this$pendingKeys_$ge = _this$pendingKeys_.get(key)) == null ? void 0 : _this$pendingKeys_$ge.set(key in this.target_); // Notify spies/listeners\n\n if (notify || notifySpy) {\n var _change2 = {\n type: REMOVE,\n observableKind: \"object\",\n object: this.proxy_ || this.target_,\n debugObjectName: this.name_,\n oldValue: value,\n name: key\n };\n if (process.env.NODE_ENV !== \"production\" && notifySpy) spyReportStart(_change2);\n if (notify) notifyListeners(this, _change2);\n if (process.env.NODE_ENV !== \"production\" && notifySpy) spyReportEnd();\n }\n } finally {\n endBatch();\n }\n\n return true;\n }\n /**\r\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\r\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\r\n * for callback details\r\n */\n ;\n\n _proto.observe_ = function observe_(callback, fireImmediately) {\n if (process.env.NODE_ENV !== \"production\" && fireImmediately === true) die(\"`observe` doesn't support the fire immediately property for observable objects.\");\n return registerListener(this, callback);\n };\n\n _proto.intercept_ = function intercept_(handler) {\n return registerInterceptor(this, handler);\n };\n\n _proto.notifyPropertyAddition_ = function notifyPropertyAddition_(key, value) {\n var _this$pendingKeys_2, _this$pendingKeys_2$g;\n\n var notify = hasListeners(this);\n var notifySpy = process.env.NODE_ENV !== \"production\" && isSpyEnabled();\n\n if (notify || notifySpy) {\n var change = notify || notifySpy ? {\n type: ADD,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: value\n } : null;\n if (process.env.NODE_ENV !== \"production\" && notifySpy) spyReportStart(change);\n if (notify) notifyListeners(this, change);\n if (process.env.NODE_ENV !== \"production\" && notifySpy) spyReportEnd();\n }\n\n (_this$pendingKeys_2 = this.pendingKeys_) == null ? void 0 : (_this$pendingKeys_2$g = _this$pendingKeys_2.get(key)) == null ? void 0 : _this$pendingKeys_2$g.set(true); // Notify \"keys/entries/values\" observers\n\n this.keysAtom_.reportChanged();\n };\n\n _proto.ownKeys_ = function ownKeys_() {\n this.keysAtom_.reportObserved();\n return ownKeys(this.target_);\n };\n\n _proto.keys_ = function keys_() {\n // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n // We choose to over-report in Object.keys(object), because:\n // - typically it's used with simple data objects\n // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n this.keysAtom_.reportObserved();\n return Object.keys(this.target_);\n };\n\n return ObservableObjectAdministration;\n}();\nfunction asObservableObject(target, options) {\n var _options$name;\n\n if (process.env.NODE_ENV !== \"production\" && options && isObservableObject(target)) {\n die(\"Options can't be provided for already observable objects.\");\n }\n\n if (hasProp(target, $mobx)) {\n if (process.env.NODE_ENV !== \"production\" && !(getAdministration(target) instanceof ObservableObjectAdministration)) {\n die(\"Cannot convert '\" + getDebugName(target) + \"' into observable object:\" + \"\\nThe target is already observable of different type.\" + \"\\nExtending builtins is not supported.\");\n }\n\n return target;\n }\n\n if (process.env.NODE_ENV !== \"production\" && !Object.isExtensible(target)) die(\"Cannot make the designated object observable; it is not extensible\");\n var name = (_options$name = options == null ? void 0 : options.name) != null ? _options$name : process.env.NODE_ENV !== \"production\" ? (isPlainObject(target) ? \"ObservableObject\" : target.constructor.name) + \"@\" + getNextId() : \"ObservableObject\";\n var adm = new ObservableObjectAdministration(target, new Map(), String(name), getAnnotationFromOptions(options));\n addHiddenProp(target, $mobx, adm);\n return target;\n}\nvar isObservableObjectAdministration = /*#__PURE__*/createInstanceofPredicate(\"ObservableObjectAdministration\", ObservableObjectAdministration);\n\nfunction getCachedObservablePropDescriptor(key) {\n return descriptorCache[key] || (descriptorCache[key] = {\n get: function get() {\n return this[$mobx].getObservablePropValue_(key);\n },\n set: function set(value) {\n return this[$mobx].setObservablePropValue_(key, value);\n }\n });\n}\n\nfunction isObservableObject(thing) {\n if (isObject(thing)) {\n return isObservableObjectAdministration(thing[$mobx]);\n }\n\n return false;\n}\nfunction recordAnnotationApplied(adm, annotation, key) {\n var _adm$target_$storedAn;\n\n if (process.env.NODE_ENV !== \"production\") {\n adm.appliedAnnotations_[key] = annotation;\n } // Remove applied decorator annotation so we don't try to apply it again in subclass constructor\n\n\n (_adm$target_$storedAn = adm.target_[storedAnnotationsSymbol]) == null ? true : delete _adm$target_$storedAn[key];\n}\n\nfunction assertAnnotable(adm, annotation, key) {\n // Valid annotation\n if (process.env.NODE_ENV !== \"production\" && !isAnnotation(annotation)) {\n die(\"Cannot annotate '\" + adm.name_ + \".\" + key.toString() + \"': Invalid annotation.\");\n }\n /*\r\n // Configurable, not sealed, not frozen\r\n // Possibly not needed, just a little better error then the one thrown by engine.\r\n // Cases where this would be useful the most (subclass field initializer) are not interceptable by this.\r\n if (__DEV__) {\r\n const configurable = getDescriptor(adm.target_, key)?.configurable\r\n const frozen = Object.isFrozen(adm.target_)\r\n const sealed = Object.isSealed(adm.target_)\r\n if (!configurable || frozen || sealed) {\r\n const fieldName = `${adm.name_}.${key.toString()}`\r\n const requestedAnnotationType = annotation.annotationType_\r\n let error = `Cannot apply '${requestedAnnotationType}' to '${fieldName}':`\r\n if (frozen) {\r\n error += `\\nObject is frozen.`\r\n }\r\n if (sealed) {\r\n error += `\\nObject is sealed.`\r\n }\r\n if (!configurable) {\r\n error += `\\nproperty is not configurable.`\r\n // Mention only if caused by us to avoid confusion\r\n if (hasProp(adm.appliedAnnotations!, key)) {\r\n error += `\\nTo prevent accidental re-definition of a field by a subclass, `\r\n error += `all annotated fields of non-plain objects (classes) are not configurable.`\r\n }\r\n }\r\n die(error)\r\n }\r\n }\r\n */\n // Not annotated\n\n\n if (process.env.NODE_ENV !== \"production\" && !isOverride(annotation) && hasProp(adm.appliedAnnotations_, key)) {\n var fieldName = adm.name_ + \".\" + key.toString();\n var currentAnnotationType = adm.appliedAnnotations_[key].annotationType_;\n var requestedAnnotationType = annotation.annotationType_;\n die(\"Cannot apply '\" + requestedAnnotationType + \"' to '\" + fieldName + \"':\" + (\"\\nThe field is already annotated with '\" + currentAnnotationType + \"'.\") + \"\\nRe-annotating fields is not allowed.\" + \"\\nUse 'override' annotation for methods overriden by subclass.\");\n }\n}\n\n/**\r\n * This array buffer contains two lists of properties, so that all arrays\r\n * can recycle their property definitions, which significantly improves performance of creating\r\n * properties on the fly.\r\n */\n\nvar OBSERVABLE_ARRAY_BUFFER_SIZE = 0; // Typescript workaround to make sure ObservableArray extends Array\n\nvar StubArray = function StubArray() {};\n\nfunction inherit(ctor, proto) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ctor.prototype, proto);\n } else if (ctor.prototype.__proto__ !== undefined) {\n ctor.prototype.__proto__ = proto;\n } else {\n ctor.prototype = proto;\n }\n}\n\ninherit(StubArray, Array.prototype); // Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\n\nvar LegacyObservableArray = /*#__PURE__*/function (_StubArray) {\n _inheritsLoose(LegacyObservableArray, _StubArray);\n\n function LegacyObservableArray(initialValues, enhancer, name, owned) {\n var _this;\n\n if (name === void 0) {\n name = process.env.NODE_ENV !== \"production\" ? \"ObservableArray@\" + getNextId() : \"ObservableArray\";\n }\n\n if (owned === void 0) {\n owned = false;\n }\n\n _this = _StubArray.call(this) || this;\n var adm = new ObservableArrayAdministration(name, enhancer, owned, true);\n adm.proxy_ = _assertThisInitialized(_this);\n addHiddenFinalProp(_assertThisInitialized(_this), $mobx, adm);\n\n if (initialValues && initialValues.length) {\n var prev = allowStateChangesStart(true); // @ts-ignore\n\n _this.spliceWithArray(0, 0, initialValues);\n\n allowStateChangesEnd(prev);\n }\n\n return _this;\n }\n\n var _proto = LegacyObservableArray.prototype;\n\n _proto.concat = function concat() {\n this[$mobx].atom_.reportObserved();\n\n for (var _len = arguments.length, arrays = new Array(_len), _key = 0; _key < _len; _key++) {\n arrays[_key] = arguments[_key];\n }\n\n return Array.prototype.concat.apply(this.slice(), //@ts-ignore\n arrays.map(function (a) {\n return isObservableArray(a) ? a.slice() : a;\n }));\n };\n\n _proto[Symbol.iterator] = function () {\n var self = this;\n var nextIndex = 0;\n return makeIterable({\n next: function next() {\n // @ts-ignore\n return nextIndex < self.length ? {\n value: self[nextIndex++],\n done: false\n } : {\n done: true,\n value: undefined\n };\n }\n });\n };\n\n _createClass(LegacyObservableArray, [{\n key: \"length\",\n get: function get() {\n return this[$mobx].getArrayLength_();\n },\n set: function set(newLength) {\n this[$mobx].setArrayLength_(newLength);\n }\n }, {\n key: Symbol.toStringTag,\n get: function get() {\n return \"Array\";\n }\n }]);\n\n return LegacyObservableArray;\n}(StubArray);\n\nObject.entries(arrayExtensions).forEach(function (_ref) {\n var prop = _ref[0],\n fn = _ref[1];\n if (prop !== \"concat\") addHiddenProp(LegacyObservableArray.prototype, prop, fn);\n});\n\nfunction createArrayEntryDescriptor(index) {\n return {\n enumerable: false,\n configurable: true,\n get: function get() {\n return this[$mobx].get_(index);\n },\n set: function set(value) {\n this[$mobx].set_(index, value);\n }\n };\n}\n\nfunction createArrayBufferItem(index) {\n defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index));\n}\n\nfunction reserveArrayBuffer(max) {\n if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n for (var index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++) {\n createArrayBufferItem(index);\n }\n\n OBSERVABLE_ARRAY_BUFFER_SIZE = max;\n }\n}\nreserveArrayBuffer(1000);\nfunction createLegacyArray(initialValues, enhancer, name) {\n return new LegacyObservableArray(initialValues, enhancer, name);\n}\n\nfunction getAtom(thing, property) {\n if (typeof thing === \"object\" && thing !== null) {\n if (isObservableArray(thing)) {\n if (property !== undefined) die(23);\n return thing[$mobx].atom_;\n }\n\n if (isObservableSet(thing)) {\n return thing[$mobx];\n }\n\n if (isObservableMap(thing)) {\n if (property === undefined) return thing.keysAtom_;\n var observable = thing.data_.get(property) || thing.hasMap_.get(property);\n if (!observable) die(25, property, getDebugName(thing));\n return observable;\n }\n\n if (isObservableObject(thing)) {\n if (!property) return die(26);\n\n var _observable = thing[$mobx].values_.get(property);\n\n if (!_observable) die(27, property, getDebugName(thing));\n return _observable;\n }\n\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing;\n }\n } else if (isFunction(thing)) {\n if (isReaction(thing[$mobx])) {\n // disposer function\n return thing[$mobx];\n }\n }\n\n die(28);\n}\nfunction getAdministration(thing, property) {\n if (!thing) die(29);\n if (property !== undefined) return getAdministration(getAtom(thing, property));\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) return thing;\n if (isObservableMap(thing) || isObservableSet(thing)) return thing;\n if (thing[$mobx]) return thing[$mobx];\n die(24, thing);\n}\nfunction getDebugName(thing, property) {\n var named;\n\n if (property !== undefined) {\n named = getAtom(thing, property);\n } else if (isAction(thing)) {\n return thing.name;\n } else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) {\n named = getAdministration(thing);\n } else {\n // valid for arrays as well\n named = getAtom(thing);\n }\n\n return named.name_;\n}\n\nvar toString = objectPrototype.toString;\nfunction deepEqual(a, b, depth) {\n if (depth === void 0) {\n depth = -1;\n }\n\n return eq(a, b, depth);\n} // Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\n\nfunction eq(a, b, depth, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b; // `null` or `undefined` only equal to itself (strict comparison).\n\n if (a == null || b == null) return false; // `NaN`s are equivalent, but non-reflexive.\n\n if (a !== a) return b !== b; // Exhaust primitive checks\n\n var type = typeof a;\n if (!isFunction(type) && type !== \"object\" && typeof b != \"object\") return false; // Compare `[[Class]]` names.\n\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case \"[object RegExp]\": // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n\n case \"[object String]\":\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return \"\" + a === \"\" + b;\n\n case \"[object Number]\":\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b; // An `egal` comparison is performed for other numeric values.\n\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n\n case \"[object Date]\":\n case \"[object Boolean]\":\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n\n case \"[object Symbol]\":\n return typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b);\n\n case \"[object Map]\":\n case \"[object Set]\":\n // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n // Hide this extra level by increasing the depth.\n if (depth >= 0) {\n depth++;\n }\n\n break;\n } // Unwrap any wrapped objects.\n\n\n a = unwrap(a);\n b = unwrap(b);\n var areArrays = className === \"[object Array]\";\n\n if (!areArrays) {\n if (typeof a != \"object\" || typeof b != \"object\") return false; // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n\n var aCtor = a.constructor,\n bCtor = b.constructor;\n\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor && isFunction(bCtor) && bCtor instanceof bCtor) && \"constructor\" in a && \"constructor\" in b) {\n return false;\n }\n }\n\n if (depth === 0) {\n return false;\n } else if (depth < 0) {\n depth = -1;\n } // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n\n\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n } // Add the first object to the stack of traversed objects.\n\n\n aStack.push(a);\n bStack.push(b); // Recursively compare objects and arrays.\n\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false; // Deep compare the contents, ignoring non-numeric properties.\n\n while (length--) {\n if (!eq(a[length], b[length], depth - 1, aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var keys = Object.keys(a);\n var key;\n length = keys.length; // Ensure that both objects contain the same number of properties before comparing deep equality.\n\n if (Object.keys(b).length !== length) return false;\n\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) return false;\n }\n } // Remove the first object from the stack of traversed objects.\n\n\n aStack.pop();\n bStack.pop();\n return true;\n}\n\nfunction unwrap(a) {\n if (isObservableArray(a)) return a.slice();\n if (isES6Map(a) || isObservableMap(a)) return Array.from(a.entries());\n if (isES6Set(a) || isObservableSet(a)) return Array.from(a.entries());\n return a;\n}\n\nfunction makeIterable(iterator) {\n iterator[Symbol.iterator] = getSelf;\n return iterator;\n}\n\nfunction getSelf() {\n return this;\n}\n\nfunction isAnnotation(thing) {\n return (// Can be function\n thing instanceof Object && typeof thing.annotationType_ === \"string\" && isFunction(thing.make_) && isFunction(thing.extend_)\n );\n}\n\n/**\r\n * (c) Michel Weststrate 2015 - 2020\r\n * MIT Licensed\r\n *\r\n * Welcome to the mobx sources! To get an global overview of how MobX internally works,\r\n * this is a good place to start:\r\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\r\n *\r\n * Source folders:\r\n * ===============\r\n *\r\n * - api/ Most of the public static methods exposed by the module can be found here.\r\n * - core/ Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\r\n * - types/ All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\r\n * - utils/ Utility stuff.\r\n *\r\n */\n[\"Symbol\", \"Map\", \"Set\"].forEach(function (m) {\n var g = getGlobal();\n\n if (typeof g[m] === \"undefined\") {\n die(\"MobX requires global '\" + m + \"' to be available or polyfilled\");\n }\n});\n\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n // See: https://github.com/andykog/mobx-devtools/\n __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n spy: spy,\n extras: {\n getDebugName: getDebugName\n },\n $mobx: $mobx\n });\n}\n\nexport { $mobx, FlowCancellationError, ObservableMap, ObservableSet, Reaction, allowStateChanges as _allowStateChanges, runInAction as _allowStateChangesInsideComputed, allowStateReadsEnd as _allowStateReadsEnd, allowStateReadsStart as _allowStateReadsStart, autoAction as _autoAction, _endAction, getAdministration as _getAdministration, getGlobalState as _getGlobalState, interceptReads as _interceptReads, isComputingDerivation as _isComputingDerivation, resetGlobalState as _resetGlobalState, _startAction, action, autorun, comparer, computed, configure, createAtom, apiDefineProperty as defineProperty, entries, extendObservable, flow, flowResult, get, getAtom, getDebugName, getDependencyTree, getObserverTree, has, intercept, isAction, isObservableValue as isBoxedObservable, isComputed, isComputedProp, isFlow, isFlowCancellationError, isObservable, isObservableArray, isObservableMap, isObservableObject, isObservableProp, isObservableSet, keys, makeAutoObservable, makeObservable, observable, observe, onBecomeObserved, onBecomeUnobserved, onReactionError, override, apiOwnKeys as ownKeys, reaction, remove, runInAction, set, spy, toJS, trace, transaction, untracked, values, when };\n//# sourceMappingURL=mobx.esm.js.map\n","const niceErrors = {\n 0: `Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,\n 1(annotationType, key: PropertyKey) {\n return `Cannot apply '${annotationType}' to '${key.toString()}': Field not found.`\n },\n /*\n 2(prop) {\n return `invalid decorator for '${prop.toString()}'`\n },\n 3(prop) {\n return `Cannot decorate '${prop.toString()}': action can only be used on properties with a function value.`\n },\n 4(prop) {\n return `Cannot decorate '${prop.toString()}': computed can only be used on getter properties.`\n },\n */\n 5: \"'keys()' can only be used on observable objects, arrays, sets and maps\",\n 6: \"'values()' can only be used on observable objects, arrays, sets and maps\",\n 7: \"'entries()' can only be used on observable objects, arrays and maps\",\n 8: \"'set()' can only be used on observable objects, arrays and maps\",\n 9: \"'remove()' can only be used on observable objects, arrays and maps\",\n 10: \"'has()' can only be used on observable objects, arrays and maps\",\n 11: \"'get()' can only be used on observable objects, arrays and maps\",\n 12: `Invalid annotation`,\n 13: `Dynamic observable objects cannot be frozen`,\n 14: \"Intercept handlers should return nothing or a change object\",\n 15: `Observable arrays cannot be frozen`,\n 16: `Modification exception: the internal structure of an observable array was changed.`,\n 17(index, length) {\n return `[mobx.array] Index out of bounds, ${index} is larger than ${length}`\n },\n 18: \"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\",\n 19(other) {\n return \"Cannot initialize from classes that inherit from Map: \" + other.constructor.name\n },\n 20(other) {\n return \"Cannot initialize map from \" + other\n },\n 21(dataStructure) {\n return `Cannot convert to map from '${dataStructure}'`\n },\n 22: \"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\",\n 23: \"It is not possible to get index atoms from arrays\",\n 24(thing) {\n return \"Cannot obtain administration from \" + thing\n },\n 25(property, name) {\n return `the entry '${property}' does not exist in the observable map '${name}'`\n },\n 26: \"please specify a property\",\n 27(property, name) {\n return `no observable property '${property.toString()}' found on the observable object '${name}'`\n },\n 28(thing) {\n return \"Cannot obtain atom from \" + thing\n },\n 29: \"Expecting some object\",\n 30: \"invalid action stack. did you forget to finish an action?\",\n 31: \"missing option for computed: get\",\n 32(name, derivation) {\n return `Cycle detected in computation ${name}: ${derivation}`\n },\n 33(name) {\n return `The setter of computed value '${name}' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`\n },\n 34(name) {\n return `[ComputedValue '${name}'] It is not possible to assign a new value to a computed value.`\n },\n 35: \"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\",\n 36: \"isolateGlobalState should be called before MobX is running any reactions\",\n 37(method) {\n return `[mobx] \\`observableArray.${method}()\\` mutates the array in-place, which is not allowed inside a derivation. Use \\`array.slice().${method}()\\` instead`\n },\n 38: \"'ownKeys()' can only be used on observable objects\",\n 39: \"'defineProperty()' can only be used on observable objects\"\n} as const\n\nconst errors: typeof niceErrors = __DEV__ ? niceErrors : ({} as any)\n\nexport function die(error: string | keyof typeof errors, ...args: any[]): never {\n if (__DEV__) {\n let e: any = typeof error === \"string\" ? error : errors[error]\n if (typeof e === \"function\") e = e.apply(null, args as any)\n throw new Error(`[MobX] ${e}`)\n }\n throw new Error(\n typeof error === \"number\"\n ? `[MobX] minified error nr: ${error}${\n args.length ? \" \" + args.map(String).join(\",\") : \"\"\n }. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`\n : `[MobX] ${error}`\n )\n}\n","declare const window: any\ndeclare const self: any\n\nconst mockGlobal = {}\n\nexport function getGlobal() {\n if (typeof globalThis !== \"undefined\") {\n return globalThis\n }\n if (typeof window !== \"undefined\") {\n return window\n }\n if (typeof global !== \"undefined\") {\n return global\n }\n if (typeof self !== \"undefined\") {\n return self\n }\n return mockGlobal\n}\n","import { globalState, die } from \"../internal\"\n\n// We shorten anything used > 5 times\nexport const assign = Object.assign\nexport const getDescriptor = Object.getOwnPropertyDescriptor\nexport const defineProperty = Object.defineProperty\nexport const objectPrototype = Object.prototype\n\nexport const EMPTY_ARRAY = []\nObject.freeze(EMPTY_ARRAY)\n\nexport const EMPTY_OBJECT = {}\nObject.freeze(EMPTY_OBJECT)\n\nexport interface Lambda {\n (): void\n name?: string\n}\n\nconst hasProxy = typeof Proxy !== \"undefined\"\nconst plainObjectString = Object.toString()\n\nexport function assertProxies() {\n if (!hasProxy) {\n die(\n __DEV__\n ? \"`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`\"\n : \"Proxy not available\"\n )\n }\n}\n\nexport function warnAboutProxyRequirement(msg: string) {\n if (__DEV__ && globalState.verifyProxies) {\n die(\n \"MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to \" +\n msg\n )\n }\n}\n\nexport function getNextId() {\n return ++globalState.mobxGuid\n}\n\n/**\n * Makes sure that the provided function is invoked at most once.\n */\nexport function once(func: Lambda): Lambda {\n let invoked = false\n return function () {\n if (invoked) return\n invoked = true\n return (func as any).apply(this, arguments)\n }\n}\n\nexport const noop = () => {}\n\nexport function isFunction(fn: any): fn is Function {\n return typeof fn === \"function\"\n}\n\nexport function isString(value: any): value is string {\n return typeof value === \"string\"\n}\n\nexport function isStringish(value: any): value is string | number | symbol {\n const t = typeof value\n switch (t) {\n case \"string\":\n case \"symbol\":\n case \"number\":\n return true\n }\n return false\n}\n\nexport function isObject(value: any): value is Object {\n return value !== null && typeof value === \"object\"\n}\n\nexport function isPlainObject(value) {\n if (!isObject(value)) return false\n const proto = Object.getPrototypeOf(value)\n if (proto == null) return true\n return proto.constructor?.toString() === plainObjectString\n}\n\n// https://stackoverflow.com/a/37865170\nexport function isGenerator(obj: any): boolean {\n const constructor = obj?.constructor\n if (!constructor) return false\n if (\"GeneratorFunction\" === constructor.name || \"GeneratorFunction\" === constructor.displayName)\n return true\n return false\n}\n\nexport function addHiddenProp(object: any, propName: PropertyKey, value: any) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value\n })\n}\n\nexport function addHiddenFinalProp(object: any, propName: PropertyKey, value: any) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: false,\n configurable: true,\n value\n })\n}\n\nexport function createInstanceofPredicate(\n name: string,\n theClass: new (...args: any[]) => T\n): (x: any) => x is T {\n const propName = \"isMobX\" + name\n theClass.prototype[propName] = true\n return function (x) {\n return isObject(x) && x[propName] === true\n } as any\n}\n\nexport function isES6Map(thing): boolean {\n return thing instanceof Map\n}\n\nexport function isES6Set(thing): thing is Set {\n return thing instanceof Set\n}\n\nconst hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\"\n\n/**\n * Returns the following: own enumerable keys and symbols.\n */\nexport function getPlainObjectKeys(object) {\n const keys = Object.keys(object)\n // Not supported in IE, so there are not going to be symbol props anyway...\n if (!hasGetOwnPropertySymbols) return keys\n const symbols = Object.getOwnPropertySymbols(object)\n if (!symbols.length) return keys\n return [...keys, ...symbols.filter(s => objectPrototype.propertyIsEnumerable.call(object, s))]\n}\n\n// From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\nexport const ownKeys: (target: any) => PropertyKey[] =\n typeof Reflect !== \"undefined\" && Reflect.ownKeys\n ? Reflect.ownKeys\n : hasGetOwnPropertySymbols\n ? obj => Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj) as any)\n : /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport function stringifyKey(key: any): string {\n if (typeof key === \"string\") return key\n if (typeof key === \"symbol\") return key.toString()\n return new String(key).toString()\n}\n\nexport function toPrimitive(value) {\n return value === null ? null : typeof value === \"object\" ? \"\" + value : value\n}\n\nexport function hasProp(target: Object, prop: PropertyKey): boolean {\n return objectPrototype.hasOwnProperty.call(target, prop)\n}\n\n// From Immer utils\nexport const getOwnPropertyDescriptors =\n Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(target: any) {\n // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n const res: any = {}\n // Note: without polyfill for ownKeys, symbols won't be picked up\n ownKeys(target).forEach(key => {\n res[key] = getDescriptor(target, key)\n })\n return res\n }\n","import { Annotation, addHiddenProp, AnnotationsMap, hasProp, die, isOverride } from \"../internal\"\n\nexport const storedAnnotationsSymbol = Symbol(\"mobx-stored-annotations\")\n\n/**\n * Creates a function that acts as\n * - decorator\n * - annotation object\n */\nexport function createDecoratorAnnotation(annotation: Annotation): PropertyDecorator & Annotation {\n function decorator(target, property) {\n storeAnnotation(target, property, annotation)\n }\n return Object.assign(decorator, annotation)\n}\n\n/**\n * Stores annotation to prototype,\n * so it can be inspected later by `makeObservable` called from constructor\n */\nexport function storeAnnotation(prototype: any, key: PropertyKey, annotation: Annotation) {\n if (!hasProp(prototype, storedAnnotationsSymbol)) {\n addHiddenProp(prototype, storedAnnotationsSymbol, {\n // Inherit annotations\n ...prototype[storedAnnotationsSymbol]\n })\n }\n // @override must override something\n if (__DEV__ && isOverride(annotation) && !hasProp(prototype[storedAnnotationsSymbol], key)) {\n const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n die(\n `'${fieldName}' is decorated with 'override', ` +\n `but no such decorated member was found on prototype.`\n )\n }\n // Cannot re-decorate\n assertNotDecorated(prototype, annotation, key)\n\n // Ignore override\n if (!isOverride(annotation)) {\n prototype[storedAnnotationsSymbol][key] = annotation\n }\n}\n\nfunction assertNotDecorated(prototype: object, annotation: Annotation, key: PropertyKey) {\n if (__DEV__ && !isOverride(annotation) && hasProp(prototype[storedAnnotationsSymbol], key)) {\n const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n const currentAnnotationType = prototype[storedAnnotationsSymbol][key].annotationType_\n const requestedAnnotationType = annotation.annotationType_\n die(\n `Cannot apply '@${requestedAnnotationType}' to '${fieldName}':` +\n `\\nThe field is already decorated with '@${currentAnnotationType}'.` +\n `\\nRe-decorating fields is not allowed.` +\n `\\nUse '@override' decorator for methods overriden by subclass.`\n )\n }\n}\n\n/**\n * Collects annotations from prototypes and stores them on target (instance)\n */\nexport function collectStoredAnnotations(target): AnnotationsMap {\n if (!hasProp(target, storedAnnotationsSymbol)) {\n if (__DEV__ && !target[storedAnnotationsSymbol]) {\n die(\n `No annotations were passed to makeObservable, but no decorated members have been found either`\n )\n }\n // We need a copy as we will remove annotation from the list once it's applied.\n addHiddenProp(target, storedAnnotationsSymbol, { ...target[storedAnnotationsSymbol] })\n }\n return target[storedAnnotationsSymbol]\n}\n","import {\n IDerivationState_,\n IObservable,\n IDerivation,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n noop,\n onBecomeObserved,\n onBecomeUnobserved,\n propagateChanged,\n reportObserved,\n startBatch,\n Lambda\n} from \"../internal\"\n\nexport const $mobx = Symbol(\"mobx administration\")\n\nexport interface IAtom extends IObservable {\n reportObserved()\n reportChanged()\n}\n\nexport class Atom implements IAtom {\n isPendingUnobservation_ = false // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n isBeingObserved_ = false\n observers_ = new Set()\n\n diffValue_ = 0\n lastAccessedBy_ = 0\n lowestObserverState_ = IDerivationState_.NOT_TRACKING_\n /**\n * Create a new atom. For debugging purposes it is recommended to give it a name.\n * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\n */\n constructor(public name_ = __DEV__ ? \"Atom@\" + getNextId() : \"Atom\") {}\n\n // onBecomeObservedListeners\n public onBOL: Set | undefined\n // onBecomeUnobservedListeners\n public onBUOL: Set | undefined\n\n public onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(listener => listener())\n }\n }\n\n public onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(listener => listener())\n }\n }\n\n /**\n * Invoke this method to notify mobx that your atom has been used somehow.\n * Returns true if there is currently a reactive context.\n */\n public reportObserved(): boolean {\n return reportObserved(this)\n }\n\n /**\n * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\n */\n public reportChanged() {\n startBatch()\n propagateChanged(this)\n endBatch()\n }\n\n toString() {\n return this.name_\n }\n}\n\nexport const isAtom = createInstanceofPredicate(\"Atom\", Atom)\n\nexport function createAtom(\n name: string,\n onBecomeObservedHandler: () => void = noop,\n onBecomeUnobservedHandler: () => void = noop\n): IAtom {\n const atom = new Atom(name)\n // default `noop` listener will not initialize the hook Set\n if (onBecomeObservedHandler !== noop) {\n onBecomeObserved(atom, onBecomeObservedHandler)\n }\n\n if (onBecomeUnobservedHandler !== noop) {\n onBecomeUnobserved(atom, onBecomeUnobservedHandler)\n }\n return atom\n}\n","import { deepEqual } from \"../internal\"\n\nexport interface IEqualsComparer {\n (a: T, b: T): boolean\n}\n\nfunction identityComparer(a: any, b: any): boolean {\n return a === b\n}\n\nfunction structuralComparer(a: any, b: any): boolean {\n return deepEqual(a, b)\n}\n\nfunction shallowComparer(a: any, b: any): boolean {\n return deepEqual(a, b, 1)\n}\n\nfunction defaultComparer(a: any, b: any): boolean {\n if (Object.is) return Object.is(a, b)\n\n return a === b\n ? a !== 0 || 1 / a === 1 / b\n : a !== a && b !== b\n}\n\nexport const comparer = {\n identity: identityComparer,\n structural: structuralComparer,\n default: defaultComparer,\n shallow: shallowComparer\n}\n","import {\n deepEqual,\n isES6Map,\n isES6Set,\n isObservable,\n isObservableArray,\n isObservableMap,\n isObservableSet,\n isObservableObject,\n isPlainObject,\n observable,\n die,\n isAction,\n autoAction,\n flow,\n isFlow,\n isGenerator\n} from \"../internal\"\n\nexport interface IEnhancer {\n (newValue: T, oldValue: T | undefined, name: string): T\n}\n\nexport function deepEnhancer(v, _, name) {\n // it is an observable already, done\n if (isObservable(v)) return v\n\n // something that can be converted and mutated?\n if (Array.isArray(v)) return observable.array(v, { name })\n if (isPlainObject(v)) return observable.object(v, undefined, { name })\n if (isES6Map(v)) return observable.map(v, { name })\n if (isES6Set(v)) return observable.set(v, { name })\n if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n if (isGenerator(v)) {\n return flow(v)\n } else {\n return autoAction(name, v)\n }\n }\n return v\n}\n\nexport function shallowEnhancer(v, _, name): any {\n if (v === undefined || v === null) return v\n if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v))\n return v\n if (Array.isArray(v)) return observable.array(v, { name, deep: false })\n if (isPlainObject(v)) return observable.object(v, undefined, { name, deep: false })\n if (isES6Map(v)) return observable.map(v, { name, deep: false })\n if (isES6Set(v)) return observable.set(v, { name, deep: false })\n\n if (__DEV__)\n die(\n \"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\"\n )\n}\n\nexport function referenceEnhancer(newValue?) {\n // never turn into an observable\n return newValue\n}\n\nexport function refStructEnhancer(v, oldValue): any {\n if (__DEV__ && isObservable(v))\n die(`observable.struct should not be used with observable values`)\n if (deepEqual(v, oldValue)) return oldValue\n return v\n}\n","import {\n die,\n Annotation,\n hasProp,\n createDecoratorAnnotation,\n ObservableObjectAdministration,\n MakeResult\n} from \"../internal\"\n\nconst OVERRIDE = \"override\"\n\nexport const override: Annotation & PropertyDecorator = createDecoratorAnnotation({\n annotationType_: OVERRIDE,\n make_,\n extend_\n})\n\nexport function isOverride(annotation: Annotation): boolean {\n return annotation.annotationType_ === OVERRIDE\n}\n\nfunction make_(adm: ObservableObjectAdministration, key): MakeResult {\n // Must not be plain object\n if (__DEV__ && adm.isPlainObject_) {\n die(\n `Cannot apply '${this.annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${this.annotationType_}' cannot be used on plain objects.`\n )\n }\n // Must override something\n if (__DEV__ && !hasProp(adm.appliedAnnotations_!, key)) {\n die(\n `'${adm.name_}.${key.toString()}' is annotated with '${this.annotationType_}', ` +\n `but no such annotated member was found on prototype.`\n )\n }\n return MakeResult.Cancel\n}\n\nfunction extend_(adm, key, descriptor, proxyTrap): boolean {\n die(`'${this.annotationType_}' can only be used with 'makeObservable'`)\n}\n","import {\n ObservableObjectAdministration,\n createAction,\n isAction,\n defineProperty,\n die,\n isFunction,\n Annotation,\n globalState,\n MakeResult\n} from \"../internal\"\n\nexport function createActionAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // bound\n if (this.options_?.bound) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Break\n }\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // prototype\n if (isAction(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return MakeResult.Break\n }\n const actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false)\n defineProperty(source, key, actionDescriptor)\n return MakeResult.Continue\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n const actionDescriptor = createActionDescriptor(adm, this, key, descriptor)\n return adm.defineProperty_(key, actionDescriptor, proxyTrap)\n}\n\nfunction assertActionDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { value }: PropertyDescriptor\n) {\n if (__DEV__ && !isFunction(value)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on properties with a function value.`\n )\n }\n}\n\nexport function createActionDescriptor(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n // provides ability to disable safeDescriptors for prototypes\n safeDescriptors: boolean = globalState.safeDescriptors\n) {\n assertActionDescriptor(adm, annotation, key, descriptor)\n let { value } = descriptor\n if (annotation.options_?.bound) {\n value = value.bind(adm.proxy_ ?? adm.target_)\n }\n return {\n value: createAction(\n annotation.options_?.name ?? key.toString(),\n value,\n annotation.options_?.autoAction ?? false,\n // https://github.com/mobxjs/mobx/discussions/3140\n annotation.options_?.bound ? (adm.proxy_ ?? adm.target_) : undefined,\n ),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n }\n}\n","import {\n ObservableObjectAdministration,\n Annotation,\n defineProperty,\n die,\n flow,\n isFlow,\n isFunction,\n globalState,\n MakeResult\n} from \"../internal\"\n\nexport function createFlowAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // prototype\n // bound - must annotate protos to support super.flow()\n if (this.options_?.bound && !isFlow(adm.target_[key])) {\n if (this.extend_(adm, key, descriptor, false) === null) return MakeResult.Cancel\n }\n if (isFlow(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return MakeResult.Break\n }\n const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false)\n defineProperty(source, key, flowDescriptor)\n return MakeResult.Continue\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, this.options_?.bound)\n return adm.defineProperty_(key, flowDescriptor, proxyTrap)\n}\n\nfunction assertFlowDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { value }: PropertyDescriptor\n) {\n if (__DEV__ && !isFunction(value)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on properties with a generator function value.`\n )\n }\n}\n\nfunction createFlowDescriptor(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n bound: boolean,\n // provides ability to disable safeDescriptors for prototypes\n safeDescriptors: boolean = globalState.safeDescriptors\n): PropertyDescriptor {\n assertFlowDescriptor(adm, annotation, key, descriptor)\n let { value } = descriptor\n if (bound) {\n value = value.bind(adm.proxy_ ?? adm.target_)\n }\n return {\n value: flow(value),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n }\n}\n","import { ObservableObjectAdministration, die, Annotation, MakeResult } from \"../internal\"\n\nexport function createComputedAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n): MakeResult {\n return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n assertComputedDescriptor(adm, this, key, descriptor)\n return adm.defineComputedProperty_(\n key,\n {\n ...this.options_,\n get: descriptor.get,\n set: descriptor.set\n },\n proxyTrap\n )\n}\n\nfunction assertComputedDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { get }: PropertyDescriptor\n) {\n if (__DEV__ && !get) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on getter(+setter) properties.`\n )\n }\n}\n","import {\n ObservableObjectAdministration,\n deepEnhancer,\n die,\n Annotation,\n MakeResult\n} from \"../internal\"\n\nexport function createObservableAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n): MakeResult {\n return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n assertObservableDescriptor(adm, this, key, descriptor)\n return adm.defineObservableProperty_(\n key,\n descriptor.value,\n this.options_?.enhancer ?? deepEnhancer,\n proxyTrap\n )\n}\n\nfunction assertObservableDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n) {\n if (__DEV__ && !(\"value\" in descriptor)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' cannot be used on getter/setter properties`\n )\n }\n}\n","import {\n ObservableObjectAdministration,\n observable,\n Annotation,\n defineProperty,\n createAction,\n globalState,\n flow,\n computed,\n autoAction,\n isGenerator,\n MakeResult\n} from \"../internal\"\n\nconst AUTO = \"true\"\n\nexport const autoAnnotation: Annotation = createAutoAnnotation()\n\nexport function createAutoAnnotation(options?: object): Annotation {\n return {\n annotationType_: AUTO,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // getter -> computed\n if (descriptor.get) {\n return computed.make_(adm, key, descriptor, source)\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.make_\n const set = createAction(key.toString(), descriptor.set) as (v: any) => void\n // own\n if (source === adm.target_) {\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set\n }) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // proto\n defineProperty(source, key, {\n configurable: true,\n set\n })\n return MakeResult.Continue\n }\n // function on proto -> autoAction/flow\n if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n if (isGenerator(descriptor.value)) {\n const flowAnnotation = this.options_?.autoBind ? flow.bound : flow\n return flowAnnotation.make_(adm, key, descriptor, source)\n }\n const actionAnnotation = this.options_?.autoBind ? autoAction.bound : autoAction\n return actionAnnotation.make_(adm, key, descriptor, source)\n }\n // other -> observable\n // Copy props from proto as well, see test:\n // \"decorate should work with Object.create\"\n let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n }\n return observableAnnotation.make_(adm, key, descriptor, source)\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n // getter -> computed\n if (descriptor.get) {\n return computed.extend_(adm, key, descriptor, proxyTrap)\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.extend_\n return adm.defineProperty_(\n key,\n {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: createAction(key.toString(), descriptor.set) as (v: any) => void\n },\n proxyTrap\n )\n }\n // other -> observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n }\n let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n return observableAnnotation.extend_(adm, key, descriptor, proxyTrap)\n}\n","import {\n IEnhancer,\n IEqualsComparer,\n IObservableArray,\n IObservableMapInitialValues,\n IObservableSetInitialValues,\n IObservableValue,\n ObservableMap,\n ObservableSet,\n ObservableValue,\n asDynamicObservableObject,\n createObservableArray,\n deepEnhancer,\n extendObservable,\n isES6Map,\n isES6Set,\n isObservable,\n isPlainObject,\n referenceEnhancer,\n Annotation,\n shallowEnhancer,\n refStructEnhancer,\n AnnotationsMap,\n asObservableObject,\n storeAnnotation,\n createDecoratorAnnotation,\n createLegacyArray,\n globalState,\n assign,\n isStringish,\n createObservableAnnotation,\n createAutoAnnotation\n} from \"../internal\"\n\nexport const OBSERVABLE = \"observable\"\nexport const OBSERVABLE_REF = \"observable.ref\"\nexport const OBSERVABLE_SHALLOW = \"observable.shallow\"\nexport const OBSERVABLE_STRUCT = \"observable.struct\"\n\nexport type CreateObservableOptions = {\n name?: string\n equals?: IEqualsComparer\n deep?: boolean\n defaultDecorator?: Annotation\n proxy?: boolean\n autoBind?: boolean\n}\n\n// Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nexport const defaultCreateObservableOptions: CreateObservableOptions = {\n deep: true,\n name: undefined,\n defaultDecorator: undefined,\n proxy: true\n}\nObject.freeze(defaultCreateObservableOptions)\n\nexport function asCreateObservableOptions(thing: any): CreateObservableOptions {\n return thing || defaultCreateObservableOptions\n}\n\nconst observableAnnotation = createObservableAnnotation(OBSERVABLE)\nconst observableRefAnnotation = createObservableAnnotation(OBSERVABLE_REF, {\n enhancer: referenceEnhancer\n})\nconst observableShallowAnnotation = createObservableAnnotation(OBSERVABLE_SHALLOW, {\n enhancer: shallowEnhancer\n})\nconst observableStructAnnotation = createObservableAnnotation(OBSERVABLE_STRUCT, {\n enhancer: refStructEnhancer\n})\nconst observableDecoratorAnnotation = createDecoratorAnnotation(observableAnnotation)\n\nexport function getEnhancerFromOptions(options: CreateObservableOptions): IEnhancer {\n return options.deep === true\n ? deepEnhancer\n : options.deep === false\n ? referenceEnhancer\n : getEnhancerFromAnnotation(options.defaultDecorator)\n}\n\nexport function getAnnotationFromOptions(\n options?: CreateObservableOptions\n): Annotation | undefined {\n return options ? options.defaultDecorator ?? createAutoAnnotation(options) : undefined\n}\n\nexport function getEnhancerFromAnnotation(annotation?: Annotation): IEnhancer {\n return !annotation ? deepEnhancer : annotation.options_?.enhancer ?? deepEnhancer\n}\n\n/**\n * Turns an object, array or function into a reactive structure.\n * @param v the value which should become observable.\n */\nfunction createObservable(v: any, arg2?: any, arg3?: any) {\n // @observable someProp;\n if (isStringish(arg2)) {\n storeAnnotation(v, arg2, observableAnnotation)\n return\n }\n\n // already observable - ignore\n if (isObservable(v)) return v\n\n // plain object\n if (isPlainObject(v)) return observable.object(v, arg2, arg3)\n\n // Array\n if (Array.isArray(v)) return observable.array(v, arg2)\n\n // Map\n if (isES6Map(v)) return observable.map(v, arg2)\n\n // Set\n if (isES6Set(v)) return observable.set(v, arg2)\n\n // other object - ignore\n if (typeof v === \"object\" && v !== null) return v\n\n // anything else\n return observable.box(v, arg2)\n}\nObject.assign(createObservable, observableDecoratorAnnotation)\n\nexport interface IObservableFactory extends Annotation, PropertyDecorator {\n (value: T[], options?: CreateObservableOptions): IObservableArray\n (value: Set, options?: CreateObservableOptions): ObservableSet\n (value: Map, options?: CreateObservableOptions): ObservableMap\n (\n value: T,\n decorators?: AnnotationsMap,\n options?: CreateObservableOptions\n ): T\n\n box: (value?: T, options?: CreateObservableOptions) => IObservableValue\n array: (initialValues?: T[], options?: CreateObservableOptions) => IObservableArray\n set: (\n initialValues?: IObservableSetInitialValues,\n options?: CreateObservableOptions\n ) => ObservableSet\n map: (\n initialValues?: IObservableMapInitialValues,\n options?: CreateObservableOptions\n ) => ObservableMap\n object: (\n props: T,\n decorators?: AnnotationsMap,\n options?: CreateObservableOptions\n ) => T\n\n /**\n * Decorator that creates an observable that only observes the references, but doesn't try to turn the assigned value into an observable.ts.\n */\n ref: Annotation & PropertyDecorator\n /**\n * Decorator that creates an observable converts its value (objects, maps or arrays) into a shallow observable structure\n */\n shallow: Annotation & PropertyDecorator\n deep: Annotation & PropertyDecorator\n struct: Annotation & PropertyDecorator\n}\n\nconst observableFactories: IObservableFactory = {\n box(value?: T, options?: CreateObservableOptions): IObservableValue {\n const o = asCreateObservableOptions(options)\n return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals)\n },\n array(initialValues?: T[], options?: CreateObservableOptions): IObservableArray {\n const o = asCreateObservableOptions(options)\n return (globalState.useProxies === false || o.proxy === false\n ? createLegacyArray\n : createObservableArray)(initialValues, getEnhancerFromOptions(o), o.name)\n },\n map(\n initialValues?: IObservableMapInitialValues,\n options?: CreateObservableOptions\n ): ObservableMap {\n const o = asCreateObservableOptions(options)\n return new ObservableMap(initialValues, getEnhancerFromOptions(o), o.name)\n },\n set(\n initialValues?: IObservableSetInitialValues,\n options?: CreateObservableOptions\n ): ObservableSet {\n const o = asCreateObservableOptions(options)\n return new ObservableSet(initialValues, getEnhancerFromOptions(o), o.name)\n },\n object(\n props: T,\n decorators?: AnnotationsMap,\n options?: CreateObservableOptions\n ): T {\n return extendObservable(\n globalState.useProxies === false || options?.proxy === false\n ? asObservableObject({}, options)\n : asDynamicObservableObject({}, options),\n props,\n decorators\n )\n },\n ref: createDecoratorAnnotation(observableRefAnnotation),\n shallow: createDecoratorAnnotation(observableShallowAnnotation),\n deep: observableDecoratorAnnotation,\n struct: createDecoratorAnnotation(observableStructAnnotation)\n} as any\n\n// eslint-disable-next-line\nexport var observable: IObservableFactory = assign(createObservable, observableFactories)\n","import {\n ComputedValue,\n IComputedValueOptions,\n Annotation,\n storeAnnotation,\n createDecoratorAnnotation,\n isStringish,\n isPlainObject,\n isFunction,\n die,\n IComputedValue,\n createComputedAnnotation,\n comparer\n} from \"../internal\"\n\nexport const COMPUTED = \"computed\"\nexport const COMPUTED_STRUCT = \"computed.struct\"\n\nexport interface IComputedFactory extends Annotation, PropertyDecorator {\n // @computed(opts)\n (options: IComputedValueOptions): Annotation & PropertyDecorator\n // computed(fn, opts)\n (func: () => T, options?: IComputedValueOptions): IComputedValue\n\n struct: Annotation & PropertyDecorator\n}\n\nconst computedAnnotation = createComputedAnnotation(COMPUTED)\nconst computedStructAnnotation = createComputedAnnotation(COMPUTED_STRUCT, {\n equals: comparer.structural\n})\n\n/**\n * Decorator for class properties: @computed get value() { return expr; }.\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\n */\nexport const computed: IComputedFactory = function computed(arg1, arg2) {\n if (isStringish(arg2)) {\n // @computed\n return storeAnnotation(arg1, arg2, computedAnnotation)\n }\n if (isPlainObject(arg1)) {\n // @computed({ options })\n return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1))\n }\n\n // computed(expr, options?)\n if (__DEV__) {\n if (!isFunction(arg1)) die(\"First argument to `computed` should be an expression.\")\n if (isFunction(arg2))\n die(\n \"A setter as second argument is no longer supported, use `{ set: fn }` option instead\"\n )\n }\n const opts: IComputedValueOptions = isPlainObject(arg2) ? arg2 : {}\n opts.get = arg1\n opts.name ||= arg1.name || \"\" /* for generated name */\n\n return new ComputedValue(opts)\n} as any\n\nObject.assign(computed, computedAnnotation)\n\ncomputed.struct = createDecoratorAnnotation(computedStructAnnotation)\n","import {\n IDerivation,\n endBatch,\n globalState,\n isSpyEnabled,\n spyReportEnd,\n spyReportStart,\n startBatch,\n untrackedEnd,\n untrackedStart,\n isFunction,\n allowStateReadsStart,\n allowStateReadsEnd,\n ACTION,\n EMPTY_ARRAY,\n die,\n getDescriptor\n} from \"../internal\"\n\n// we don't use globalState for these in order to avoid possible issues with multiple\n// mobx versions\nlet currentActionId = 0\nlet nextActionId = 1\nconst isFunctionNameConfigurable = getDescriptor(() => {}, \"name\")?.configurable ?? false\n\n// we can safely recycle this object\nconst tmpNameDescriptor: PropertyDescriptor = {\n value: \"action\",\n configurable: true,\n writable: false,\n enumerable: false\n}\n\nexport function createAction(\n actionName: string,\n fn: Function,\n autoAction: boolean = false,\n ref?: Object\n): Function {\n if (__DEV__) {\n if (!isFunction(fn)) die(\"`action` can only be invoked on functions\")\n if (typeof actionName !== \"string\" || !actionName)\n die(`actions should have valid names, got: '${actionName}'`)\n }\n function res() {\n return executeAction(actionName, autoAction, fn, ref || this, arguments)\n }\n res.isMobxAction = true\n if (isFunctionNameConfigurable) {\n tmpNameDescriptor.value = actionName\n Object.defineProperty(res, \"name\", tmpNameDescriptor)\n }\n return res\n}\n\nexport function executeAction(\n actionName: string,\n canRunAsDerivation: boolean,\n fn: Function,\n scope?: any,\n args?: IArguments\n) {\n const runInfo = _startAction(actionName, canRunAsDerivation, scope, args)\n try {\n return fn.apply(scope, args)\n } catch (err) {\n runInfo.error_ = err\n throw err\n } finally {\n _endAction(runInfo)\n }\n}\n\nexport interface IActionRunInfo {\n prevDerivation_: IDerivation | null\n prevAllowStateChanges_: boolean\n prevAllowStateReads_: boolean\n notifySpy_: boolean\n startTime_: number\n error_?: any\n parentActionId_: number\n actionId_: number\n runAsAction_?: boolean\n}\n\nexport function _startAction(\n actionName: string,\n canRunAsDerivation: boolean, // true for autoAction\n scope: any,\n args?: IArguments\n): IActionRunInfo {\n const notifySpy_ = __DEV__ && isSpyEnabled() && !!actionName\n let startTime_: number = 0\n if (__DEV__ && notifySpy_) {\n startTime_ = Date.now()\n const flattenedArgs = args ? Array.from(args) : EMPTY_ARRAY\n spyReportStart({\n type: ACTION,\n name: actionName,\n object: scope,\n arguments: flattenedArgs\n })\n }\n const prevDerivation_ = globalState.trackingDerivation\n const runAsAction = !canRunAsDerivation || !prevDerivation_\n startBatch()\n let prevAllowStateChanges_ = globalState.allowStateChanges // by default preserve previous allow\n if (runAsAction) {\n untrackedStart()\n prevAllowStateChanges_ = allowStateChangesStart(true)\n }\n const prevAllowStateReads_ = allowStateReadsStart(true)\n const runInfo = {\n runAsAction_: runAsAction,\n prevDerivation_,\n prevAllowStateChanges_,\n prevAllowStateReads_,\n notifySpy_,\n startTime_,\n actionId_: nextActionId++,\n parentActionId_: currentActionId\n }\n currentActionId = runInfo.actionId_\n return runInfo\n}\n\nexport function _endAction(runInfo: IActionRunInfo) {\n if (currentActionId !== runInfo.actionId_) {\n die(30)\n }\n currentActionId = runInfo.parentActionId_\n\n if (runInfo.error_ !== undefined) {\n globalState.suppressReactionErrors = true\n }\n allowStateChangesEnd(runInfo.prevAllowStateChanges_)\n allowStateReadsEnd(runInfo.prevAllowStateReads_)\n endBatch()\n if (runInfo.runAsAction_) untrackedEnd(runInfo.prevDerivation_)\n if (__DEV__ && runInfo.notifySpy_) {\n spyReportEnd({ time: Date.now() - runInfo.startTime_ })\n }\n globalState.suppressReactionErrors = false\n}\n\nexport function allowStateChanges(allowStateChanges: boolean, func: () => T): T {\n const prev = allowStateChangesStart(allowStateChanges)\n try {\n return func()\n } finally {\n allowStateChangesEnd(prev)\n }\n}\n\nexport function allowStateChangesStart(allowStateChanges: boolean) {\n const prev = globalState.allowStateChanges\n globalState.allowStateChanges = allowStateChanges\n return prev\n}\n\nexport function allowStateChangesEnd(prev: boolean) {\n globalState.allowStateChanges = prev\n}\n","import {\n Atom,\n IEnhancer,\n IInterceptable,\n IEqualsComparer,\n IInterceptor,\n IListenable,\n Lambda,\n checkIfStateModificationsAreAllowed,\n comparer,\n createInstanceofPredicate,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isSpyEnabled,\n notifyListeners,\n registerInterceptor,\n registerListener,\n spyReport,\n spyReportEnd,\n spyReportStart,\n toPrimitive,\n globalState,\n IUNCHANGED,\n UPDATE\n} from \"../internal\"\n\nexport interface IValueWillChange {\n object: IObservableValue\n type: \"update\"\n newValue: T\n}\n\nexport type IValueDidChange = {\n type: \"update\"\n observableKind: \"value\"\n object: IObservableValue\n debugObjectName: string\n newValue: unknown\n oldValue: unknown\n}\nexport type IBoxDidChange =\n | {\n type: \"create\"\n observableKind: \"value\"\n object: IObservableValue\n debugObjectName: string\n newValue: unknown\n }\n | IValueDidChange\n\nexport interface IObservableValue {\n get(): T\n set(value: T): void\n intercept_(handler: IInterceptor>): Lambda\n observe_(listener: (change: IValueDidChange) => void, fireImmediately?: boolean): Lambda\n}\n\nconst CREATE = \"create\"\n\nexport class ObservableValue\n extends Atom\n implements IObservableValue, IInterceptable>, IListenable {\n hasUnreportedChange_ = false\n interceptors_\n changeListeners_\n value_\n dehancer: any\n\n constructor(\n value: T,\n public enhancer: IEnhancer,\n public name_ = __DEV__ ? \"ObservableValue@\" + getNextId() : \"ObservableValue\",\n notifySpy = true,\n private equals: IEqualsComparer = comparer.default\n ) {\n super(name_)\n this.value_ = enhancer(value, undefined, name_)\n if (__DEV__ && notifySpy && isSpyEnabled()) {\n // only notify spy if this is a stand-alone observable\n spyReport({\n type: CREATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue: \"\" + this.value_\n })\n }\n }\n\n private dehanceValue(value: T): T {\n if (this.dehancer !== undefined) return this.dehancer(value)\n return value\n }\n\n public set(newValue: T) {\n const oldValue = this.value_\n newValue = this.prepareNewValue_(newValue) as any\n if (newValue !== globalState.UNCHANGED) {\n const notifySpy = isSpyEnabled()\n if (__DEV__ && notifySpy) {\n spyReportStart({\n type: UPDATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue,\n oldValue\n })\n }\n this.setNewValue_(newValue)\n if (__DEV__ && notifySpy) spyReportEnd()\n }\n }\n\n private prepareNewValue_(newValue): T | IUNCHANGED {\n checkIfStateModificationsAreAllowed(this)\n if (hasInterceptors(this)) {\n const change = interceptChange>(this, {\n object: this,\n type: UPDATE,\n newValue\n })\n if (!change) return globalState.UNCHANGED\n newValue = change.newValue\n }\n // apply modifier\n newValue = this.enhancer(newValue, this.value_, this.name_)\n return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue\n }\n\n setNewValue_(newValue: T) {\n const oldValue = this.value_\n this.value_ = newValue\n this.reportChanged()\n if (hasListeners(this)) {\n notifyListeners(this, {\n type: UPDATE,\n object: this,\n newValue,\n oldValue\n })\n }\n }\n\n public get(): T {\n this.reportObserved()\n return this.dehanceValue(this.value_)\n }\n\n intercept_(handler: IInterceptor>): Lambda {\n return registerInterceptor(this, handler)\n }\n\n observe_(listener: (change: IValueDidChange) => void, fireImmediately?: boolean): Lambda {\n if (fireImmediately)\n listener({\n observableKind: \"value\",\n debugObjectName: this.name_,\n object: this,\n type: UPDATE,\n newValue: this.value_,\n oldValue: undefined\n })\n return registerListener(this, listener)\n }\n\n raw() {\n // used by MST ot get undehanced value\n return this.value_\n }\n\n toJSON() {\n return this.get()\n }\n\n toString() {\n return `${this.name_}[${this.value_}]`\n }\n\n valueOf(): T {\n return toPrimitive(this.get())\n }\n\n [Symbol.toPrimitive]() {\n return this.valueOf()\n }\n}\n\nexport const isObservableValue = createInstanceofPredicate(\"ObservableValue\", ObservableValue) as (\n x: any\n) => x is IObservableValue\n","import {\n CaughtException,\n IDerivation,\n IDerivationState_,\n IEqualsComparer,\n IObservable,\n Lambda,\n TraceMode,\n autorun,\n clearObserving,\n comparer,\n createAction,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n globalState,\n isCaughtException,\n isSpyEnabled,\n propagateChangeConfirmed,\n propagateMaybeChanged,\n reportObserved,\n shouldCompute,\n spyReport,\n startBatch,\n toPrimitive,\n trackDerivedFunction,\n untrackedEnd,\n untrackedStart,\n UPDATE,\n die,\n allowStateChangesStart,\n allowStateChangesEnd\n} from \"../internal\"\n\nexport interface IComputedValue {\n get(): T\n set(value: T): void\n observe_(listener: (change: IComputedDidChange) => void, fireImmediately?: boolean): Lambda\n}\n\nexport interface IComputedValueOptions {\n get?: () => T\n set?: (value: T) => void\n name?: string\n equals?: IEqualsComparer\n context?: any\n requiresReaction?: boolean\n keepAlive?: boolean\n}\n\nexport type IComputedDidChange = {\n type: \"update\"\n observableKind: \"computed\"\n object: unknown\n debugObjectName: string\n newValue: T\n oldValue: T | undefined\n}\n\n/**\n * A node in the state dependency root that observes other nodes, and can be observed itself.\n *\n * ComputedValue will remember the result of the computation for the duration of the batch, or\n * while being observed.\n *\n * During this time it will recompute only when one of its direct dependencies changed,\n * but only when it is being accessed with `ComputedValue.get()`.\n *\n * Implementation description:\n * 1. First time it's being accessed it will compute and remember result\n * give back remembered result until 2. happens\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\n * 3. When it's being accessed, recompute if any shallow dependency changed.\n * if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\n * go to step 2. either way\n *\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\n */\nexport class ComputedValue implements IObservable, IComputedValue, IDerivation {\n dependenciesState_ = IDerivationState_.NOT_TRACKING_\n observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n newObserving_ = null // during tracking it's an array with new observed observers\n isBeingObserved_ = false\n isPendingUnobservation_: boolean = false\n observers_ = new Set()\n diffValue_ = 0\n runId_ = 0\n lastAccessedBy_ = 0\n lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n unboundDepsCount_ = 0\n protected value_: T | undefined | CaughtException = new CaughtException(null)\n name_: string\n triggeredBy_?: string\n isComputing_: boolean = false // to check for cycles\n isRunningSetter_: boolean = false\n derivation: () => T // N.B: unminified as it is used by MST\n setter_?: (value: T) => void\n isTracing_: TraceMode = TraceMode.NONE\n scope_: Object | undefined\n private equals_: IEqualsComparer\n private requiresReaction_: boolean\n keepAlive_: boolean\n\n /**\n * Create a new computed value based on a function expression.\n *\n * The `name` property is for debug purposes only.\n *\n * The `equals` property specifies the comparer function to use to determine if a newly produced\n * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\n * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\n * Structural comparison can be convenient if you always produce a new aggregated object and\n * don't want to notify observers if it is structurally the same.\n * This is useful for working with vectors, mouse coordinates etc.\n */\n constructor(options: IComputedValueOptions) {\n if (!options.get) die(31)\n this.derivation = options.get!\n this.name_ = options.name || (__DEV__ ? \"ComputedValue@\" + getNextId() : \"ComputedValue\")\n if (options.set) {\n this.setter_ = createAction(\n __DEV__ ? this.name_ + \"-setter\" : \"ComputedValue-setter\",\n options.set\n ) as any\n }\n this.equals_ =\n options.equals ||\n ((options as any).compareStructural || (options as any).struct\n ? comparer.structural\n : comparer.default)\n this.scope_ = options.context\n this.requiresReaction_ = !!options.requiresReaction\n this.keepAlive_ = !!options.keepAlive\n }\n\n onBecomeStale_() {\n propagateMaybeChanged(this)\n }\n\n public onBOL: Set | undefined\n public onBUOL: Set | undefined\n\n public onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(listener => listener())\n }\n }\n\n public onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(listener => listener())\n }\n }\n\n /**\n * Returns the current value of this computed value.\n * Will evaluate its computation first if needed.\n */\n public get(): T {\n if (this.isComputing_) die(32, this.name_, this.derivation)\n if (\n globalState.inBatch === 0 &&\n // !globalState.trackingDerivatpion &&\n this.observers_.size === 0 &&\n !this.keepAlive_\n ) {\n if (shouldCompute(this)) {\n this.warnAboutUntrackedRead_()\n startBatch() // See perf test 'computed memoization'\n this.value_ = this.computeValue_(false)\n endBatch()\n }\n } else {\n reportObserved(this)\n if (shouldCompute(this)) {\n let prevTrackingContext = globalState.trackingContext\n if (this.keepAlive_ && !prevTrackingContext) globalState.trackingContext = this\n if (this.trackAndCompute()) propagateChangeConfirmed(this)\n globalState.trackingContext = prevTrackingContext\n }\n }\n const result = this.value_!\n\n if (isCaughtException(result)) throw result.cause\n return result\n }\n\n public set(value: T) {\n if (this.setter_) {\n if (this.isRunningSetter_) die(33, this.name_)\n this.isRunningSetter_ = true\n try {\n this.setter_.call(this.scope_, value)\n } finally {\n this.isRunningSetter_ = false\n }\n } else die(34, this.name_)\n }\n\n trackAndCompute(): boolean {\n // N.B: unminified as it is used by MST\n const oldValue = this.value_\n const wasSuspended =\n /* see #1208 */ this.dependenciesState_ === IDerivationState_.NOT_TRACKING_\n const newValue = this.computeValue_(true)\n\n const changed =\n wasSuspended ||\n isCaughtException(oldValue) ||\n isCaughtException(newValue) ||\n !this.equals_(oldValue, newValue)\n\n if (changed) {\n this.value_ = newValue\n\n if (__DEV__ && isSpyEnabled()) {\n spyReport({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n object: this.scope_,\n type: \"update\",\n oldValue,\n newValue\n } as IComputedDidChange)\n }\n }\n\n return changed\n }\n\n computeValue_(track: boolean) {\n this.isComputing_ = true\n // don't allow state changes during computation\n const prev = allowStateChangesStart(false)\n let res: T | CaughtException\n if (track) {\n res = trackDerivedFunction(this, this.derivation, this.scope_)\n } else {\n if (globalState.disableErrorBoundaries === true) {\n res = this.derivation.call(this.scope_)\n } else {\n try {\n res = this.derivation.call(this.scope_)\n } catch (e) {\n res = new CaughtException(e)\n }\n }\n }\n allowStateChangesEnd(prev)\n this.isComputing_ = false\n return res\n }\n\n suspend_() {\n if (!this.keepAlive_) {\n clearObserving(this)\n this.value_ = undefined // don't hold on to computed value!\n if (__DEV__ && this.isTracing_ !== TraceMode.NONE) {\n console.log(\n `[mobx.trace] Computed value '${this.name_}' was suspended and it will recompute on the next access.`\n )\n }\n }\n }\n\n observe_(listener: (change: IComputedDidChange) => void, fireImmediately?: boolean): Lambda {\n let firstTime = true\n let prevValue: T | undefined = undefined\n return autorun(() => {\n // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n let newValue = this.get()\n if (!firstTime || fireImmediately) {\n const prevU = untrackedStart()\n listener({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n newValue,\n oldValue: prevValue\n })\n untrackedEnd(prevU)\n }\n firstTime = false\n prevValue = newValue\n })\n }\n\n warnAboutUntrackedRead_() {\n if (!__DEV__) return\n if (this.isTracing_ !== TraceMode.NONE) {\n console.log(\n `[mobx.trace] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n )\n }\n if (globalState.computedRequiresReaction || this.requiresReaction_) {\n console.warn(\n `[mobx] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n )\n }\n }\n\n toString() {\n return `${this.name_}[${this.derivation.toString()}]`\n }\n\n valueOf(): T {\n return toPrimitive(this.get())\n }\n\n [Symbol.toPrimitive]() {\n return this.valueOf()\n }\n}\n\nexport const isComputedValue = createInstanceofPredicate(\"ComputedValue\", ComputedValue)\n","import {\n IAtom,\n IDepTreeNode,\n IObservable,\n addObserver,\n globalState,\n isComputedValue,\n removeObserver\n} from \"../internal\"\n\nexport enum IDerivationState_ {\n // before being run or (outside batch and not being observed)\n // at this point derivation is not holding any data about dependency tree\n NOT_TRACKING_ = -1,\n // no shallow dependency changed since last computation\n // won't recalculate derivation\n // this is what makes mobx fast\n UP_TO_DATE_ = 0,\n // some deep dependency changed, but don't know if shallow dependency changed\n // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n // currently only ComputedValue will propagate POSSIBLY_STALE\n //\n // having this state is second big optimization:\n // don't have to recompute on every dependency change, but only when it's needed\n POSSIBLY_STALE_ = 1,\n // A shallow dependency has changed since last computation and the derivation\n // will need to recompute when it's needed next.\n STALE_ = 2\n}\n\nexport enum TraceMode {\n NONE,\n LOG,\n BREAK\n}\n\n/**\n * A derivation is everything that can be derived from the state (all the atoms) in a pure manner.\n * See https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n */\nexport interface IDerivation extends IDepTreeNode {\n observing_: IObservable[]\n newObserving_: null | IObservable[]\n dependenciesState_: IDerivationState_\n /**\n * Id of the current run of a derivation. Each time the derivation is tracked\n * this number is increased by one. This number is globally unique\n */\n runId_: number\n /**\n * amount of dependencies used by the derivation in this run, which has not been bound yet.\n */\n unboundDepsCount_: number\n onBecomeStale_(): void\n isTracing_: TraceMode\n\n /**\n * warn if the derivation has no dependencies after creation/update\n */\n requiresObservable_?: boolean\n}\n\nexport class CaughtException {\n constructor(public cause: any) {\n // Empty\n }\n}\n\nexport function isCaughtException(e: any): e is CaughtException {\n return e instanceof CaughtException\n}\n\n/**\n * Finds out whether any dependency of the derivation has actually changed.\n * If dependenciesState is 1 then it will recalculate dependencies,\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\n *\n * By iterating over the dependencies in the same order that they were reported and\n * stopping on the first change, all the recalculations are only called for ComputedValues\n * that will be tracked by derivation. That is because we assume that if the first x\n * dependencies of the derivation doesn't change then the derivation should run the same way\n * up until accessing x-th dependency.\n */\nexport function shouldCompute(derivation: IDerivation): boolean {\n switch (derivation.dependenciesState_) {\n case IDerivationState_.UP_TO_DATE_:\n return false\n case IDerivationState_.NOT_TRACKING_:\n case IDerivationState_.STALE_:\n return true\n case IDerivationState_.POSSIBLY_STALE_: {\n // state propagation can occur outside of action/reactive context #2195\n const prevAllowStateReads = allowStateReadsStart(true)\n const prevUntracked = untrackedStart() // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n const obs = derivation.observing_,\n l = obs.length\n for (let i = 0; i < l; i++) {\n const obj = obs[i]\n if (isComputedValue(obj)) {\n if (globalState.disableErrorBoundaries) {\n obj.get()\n } else {\n try {\n obj.get()\n } catch (e) {\n // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return true\n }\n }\n // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n // and `derivation` is an observer of `obj`\n // invariantShouldCompute(derivation)\n if ((derivation.dependenciesState_ as any) === IDerivationState_.STALE_) {\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return true\n }\n }\n }\n changeDependenciesStateTo0(derivation)\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return false\n }\n }\n}\n\nexport function isComputingDerivation() {\n return globalState.trackingDerivation !== null // filter out actions inside computations\n}\n\nexport function checkIfStateModificationsAreAllowed(atom: IAtom) {\n if (!__DEV__) {\n return\n }\n const hasObservers = atom.observers_.size > 0\n // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n if (!globalState.allowStateChanges && (hasObservers || globalState.enforceActions === \"always\"))\n console.warn(\n \"[MobX] \" +\n (globalState.enforceActions\n ? \"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: \"\n : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: \") +\n atom.name_\n )\n}\n\nexport function checkIfStateReadsAreAllowed(observable: IObservable) {\n if (__DEV__ && !globalState.allowStateReads && globalState.observableRequiresReaction) {\n console.warn(\n `[mobx] Observable '${observable.name_}' being read outside a reactive context.`\n )\n }\n}\n\n/**\n * Executes the provided function `f` and tracks which observables are being accessed.\n * The tracking information is stored on the `derivation` object and the derivation is registered\n * as observer of any of the accessed observables.\n */\nexport function trackDerivedFunction(derivation: IDerivation, f: () => T, context: any) {\n const prevAllowStateReads = allowStateReadsStart(true)\n // pre allocate array allocation + room for variation in deps\n // array will be trimmed by bindDependencies\n changeDependenciesStateTo0(derivation)\n derivation.newObserving_ = new Array(derivation.observing_.length + 100)\n derivation.unboundDepsCount_ = 0\n derivation.runId_ = ++globalState.runId\n const prevTracking = globalState.trackingDerivation\n globalState.trackingDerivation = derivation\n globalState.inBatch++\n let result\n if (globalState.disableErrorBoundaries === true) {\n result = f.call(context)\n } else {\n try {\n result = f.call(context)\n } catch (e) {\n result = new CaughtException(e)\n }\n }\n globalState.inBatch--\n globalState.trackingDerivation = prevTracking\n bindDependencies(derivation)\n\n warnAboutDerivationWithoutDependencies(derivation)\n allowStateReadsEnd(prevAllowStateReads)\n return result\n}\n\nfunction warnAboutDerivationWithoutDependencies(derivation: IDerivation) {\n if (!__DEV__) return\n\n if (derivation.observing_.length !== 0) return\n\n if (globalState.reactionRequiresObservable || derivation.requiresObservable_) {\n console.warn(\n `[mobx] Derivation '${derivation.name_}' is created/updated without reading any observable value.`\n )\n }\n}\n\n/**\n * diffs newObserving with observing.\n * update observing to be newObserving with unique observables\n * notify observers that become observed/unobserved\n */\nfunction bindDependencies(derivation: IDerivation) {\n // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n const prevObserving = derivation.observing_\n const observing = (derivation.observing_ = derivation.newObserving_!)\n let lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_\n\n // Go through all new observables and check diffValue: (this list can contain duplicates):\n // 0: first occurrence, change to 1 and keep it\n // 1: extra occurrence, drop it\n let i0 = 0,\n l = derivation.unboundDepsCount_\n for (let i = 0; i < l; i++) {\n const dep = observing[i]\n if (dep.diffValue_ === 0) {\n dep.diffValue_ = 1\n if (i0 !== i) observing[i0] = dep\n i0++\n }\n\n // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n // not hitting the condition\n if (((dep as any) as IDerivation).dependenciesState_ > lowestNewObservingDerivationState) {\n lowestNewObservingDerivationState = ((dep as any) as IDerivation).dependenciesState_\n }\n }\n observing.length = i0\n\n derivation.newObserving_ = null // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n\n // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n // 0: it's not in new observables, unobserve it\n // 1: it keeps being observed, don't want to notify it. change to 0\n l = prevObserving.length\n while (l--) {\n const dep = prevObserving[l]\n if (dep.diffValue_ === 0) {\n removeObserver(dep, derivation)\n }\n dep.diffValue_ = 0\n }\n\n // Go through all new observables and check diffValue: (now it should be unique)\n // 0: it was set to 0 in last loop. don't need to do anything.\n // 1: it wasn't observed, let's observe it. set back to 0\n while (i0--) {\n const dep = observing[i0]\n if (dep.diffValue_ === 1) {\n dep.diffValue_ = 0\n addObserver(dep, derivation)\n }\n }\n\n // Some new observed derivations may become stale during this derivation computation\n // so they have had no chance to propagate staleness (#916)\n if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n derivation.dependenciesState_ = lowestNewObservingDerivationState\n derivation.onBecomeStale_()\n }\n}\n\nexport function clearObserving(derivation: IDerivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n const obs = derivation.observing_\n derivation.observing_ = []\n let i = obs.length\n while (i--) removeObserver(obs[i], derivation)\n\n derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_\n}\n\nexport function untracked(action: () => T): T {\n const prev = untrackedStart()\n try {\n return action()\n } finally {\n untrackedEnd(prev)\n }\n}\n\nexport function untrackedStart(): IDerivation | null {\n const prev = globalState.trackingDerivation\n globalState.trackingDerivation = null\n return prev\n}\n\nexport function untrackedEnd(prev: IDerivation | null) {\n globalState.trackingDerivation = prev\n}\n\nexport function allowStateReadsStart(allowStateReads: boolean) {\n const prev = globalState.allowStateReads\n globalState.allowStateReads = allowStateReads\n return prev\n}\n\nexport function allowStateReadsEnd(prev: boolean) {\n globalState.allowStateReads = prev\n}\n\n/**\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\n *\n */\nexport function changeDependenciesStateTo0(derivation: IDerivation) {\n if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) return\n derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_\n\n const obs = derivation.observing_\n let i = obs.length\n while (i--) obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n}\n","import { IDerivation, IObservable, Reaction, die, getGlobal } from \"../internal\"\nimport { ComputedValue } from \"./computedvalue\"\n\n/**\n * These values will persist if global state is reset\n */\nconst persistentKeys: (keyof MobXGlobals)[] = [\n \"mobxGuid\",\n \"spyListeners\",\n \"enforceActions\",\n \"computedRequiresReaction\",\n \"reactionRequiresObservable\",\n \"observableRequiresReaction\",\n \"allowStateReads\",\n \"disableErrorBoundaries\",\n \"runId\",\n \"UNCHANGED\",\n \"useProxies\"\n]\n\nexport type IUNCHANGED = {}\n\nexport class MobXGlobals {\n /**\n * MobXGlobals version.\n * MobX compatiblity with other versions loaded in memory as long as this version matches.\n * It indicates that the global state still stores similar information\n *\n * N.B: this version is unrelated to the package version of MobX, and is only the version of the\n * internal state storage of MobX, and can be the same across many different package versions\n */\n version = 6\n\n /**\n * globally unique token to signal unchanged\n */\n UNCHANGED: IUNCHANGED = {}\n\n /**\n * Currently running derivation\n */\n trackingDerivation: IDerivation | null = null\n\n /**\n * Currently running reaction. This determines if we currently have a reactive context.\n * (Tracking derivation is also set for temporal tracking of computed values inside actions,\n * but trackingReaction can only be set by a form of Reaction)\n */\n trackingContext: Reaction | ComputedValue | null = null\n\n /**\n * Each time a derivation is tracked, it is assigned a unique run-id\n */\n runId = 0\n\n /**\n * 'guid' for general purpose. Will be persisted amongst resets.\n */\n mobxGuid = 0\n\n /**\n * Are we in a batch block? (and how many of them)\n */\n inBatch: number = 0\n\n /**\n * Observables that don't have observers anymore, and are about to be\n * suspended, unless somebody else accesses it in the same batch\n *\n * @type {IObservable[]}\n */\n pendingUnobservations: IObservable[] = []\n\n /**\n * List of scheduled, not yet executed, reactions.\n */\n pendingReactions: Reaction[] = []\n\n /**\n * Are we currently processing reactions?\n */\n isRunningReactions = false\n\n /**\n * Is it allowed to change observables at this point?\n * In general, MobX doesn't allow that when running computations and React.render.\n * To ensure that those functions stay pure.\n */\n allowStateChanges = false\n\n /**\n * Is it allowed to read observables at this point?\n * Used to hold the state needed for `observableRequiresReaction`\n */\n allowStateReads = true\n\n /**\n * If strict mode is enabled, state changes are by default not allowed\n */\n enforceActions: boolean | \"always\" = true\n\n /**\n * Spy callbacks\n */\n spyListeners: { (change: any): void }[] = []\n\n /**\n * Globally attached error handlers that react specifically to errors in reactions\n */\n globalReactionErrorHandlers: ((error: any, derivation: IDerivation) => void)[] = []\n\n /**\n * Warn if computed values are accessed outside a reactive context\n */\n computedRequiresReaction = false\n\n /**\n * (Experimental)\n * Warn if you try to create to derivation / reactive context without accessing any observable.\n */\n reactionRequiresObservable = false\n\n /**\n * (Experimental)\n * Warn if observables are accessed outside a reactive context\n */\n observableRequiresReaction = false\n\n /*\n * Don't catch and rethrow exceptions. This is useful for inspecting the state of\n * the stack when an exception occurs while debugging.\n */\n disableErrorBoundaries = false\n\n /*\n * If true, we are already handling an exception in an action. Any errors in reactions should be suppressed, as\n * they are not the cause, see: https://github.com/mobxjs/mobx/issues/1836\n */\n suppressReactionErrors = false\n\n useProxies = true\n /*\n * print warnings about code that would fail if proxies weren't available\n */\n verifyProxies = false\n\n /**\n * False forces all object's descriptors to\n * writable: true\n * configurable: true\n */\n safeDescriptors = true\n}\n\nlet canMergeGlobalState = true\nlet isolateCalled = false\n\nexport let globalState: MobXGlobals = (function () {\n let global = getGlobal()\n if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals) canMergeGlobalState = false\n if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version)\n canMergeGlobalState = false\n\n if (!canMergeGlobalState) {\n // Because this is a IIFE we need to let isolateCalled a chance to change\n // so we run it after the event loop completed at least 1 iteration\n setTimeout(() => {\n if (!isolateCalled) {\n die(35)\n }\n }, 1)\n return new MobXGlobals()\n } else if (global.__mobxGlobals) {\n global.__mobxInstanceCount += 1\n if (!global.__mobxGlobals.UNCHANGED) global.__mobxGlobals.UNCHANGED = {} // make merge backward compatible\n return global.__mobxGlobals\n } else {\n global.__mobxInstanceCount = 1\n return (global.__mobxGlobals = new MobXGlobals())\n }\n})()\n\nexport function isolateGlobalState() {\n if (\n globalState.pendingReactions.length ||\n globalState.inBatch ||\n globalState.isRunningReactions\n )\n die(36)\n isolateCalled = true\n if (canMergeGlobalState) {\n let global = getGlobal()\n if (--global.__mobxInstanceCount === 0) global.__mobxGlobals = undefined\n globalState = new MobXGlobals()\n }\n}\n\nexport function getGlobalState(): any {\n return globalState\n}\n\n/**\n * For testing purposes only; this will break the internal state of existing observables,\n * but can be used to get back at a stable state after throwing errors\n */\nexport function resetGlobalState() {\n const defaultGlobals = new MobXGlobals()\n for (let key in defaultGlobals)\n if (persistentKeys.indexOf(key as any) === -1) globalState[key] = defaultGlobals[key]\n globalState.allowStateChanges = !globalState.enforceActions\n}\n","import {\n Lambda,\n ComputedValue,\n IDependencyTree,\n IDerivation,\n IDerivationState_,\n TraceMode,\n getDependencyTree,\n globalState,\n runReactions,\n checkIfStateReadsAreAllowed\n} from \"../internal\"\n\nexport interface IDepTreeNode {\n name_: string\n observing_?: IObservable[]\n}\n\nexport interface IObservable extends IDepTreeNode {\n diffValue_: number\n /**\n * Id of the derivation *run* that last accessed this observable.\n * If this id equals the *run* id of the current derivation,\n * the dependency is already established\n */\n lastAccessedBy_: number\n isBeingObserved_: boolean\n\n lowestObserverState_: IDerivationState_ // Used to avoid redundant propagations\n isPendingUnobservation_: boolean // Used to push itself to global.pendingUnobservations at most once per batch.\n\n observers_: Set\n\n onBUO(): void\n onBO(): void\n\n onBUOL: Set | undefined\n onBOL: Set | undefined\n}\n\nexport function hasObservers(observable: IObservable): boolean {\n return observable.observers_ && observable.observers_.size > 0\n}\n\nexport function getObservers(observable: IObservable): Set {\n return observable.observers_\n}\n\n// function invariantObservers(observable: IObservable) {\n// const list = observable.observers\n// const map = observable.observersIndexes\n// const l = list.length\n// for (let i = 0; i < l; i++) {\n// const id = list[i].__mapid\n// if (i) {\n// invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n// } else {\n// invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n// }\n// }\n// invariant(\n// list.length === 0 || Object.keys(map).length === list.length - 1,\n// \"INTERNAL ERROR there is no junk in map\"\n// )\n// }\nexport function addObserver(observable: IObservable, node: IDerivation) {\n // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n // invariantObservers(observable);\n\n observable.observers_.add(node)\n if (observable.lowestObserverState_ > node.dependenciesState_)\n observable.lowestObserverState_ = node.dependenciesState_\n\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\n\nexport function removeObserver(observable: IObservable, node: IDerivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n // invariantObservers(observable);\n observable.observers_.delete(node)\n if (observable.observers_.size === 0) {\n // deleting last observer\n queueForUnobservation(observable)\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\n\nexport function queueForUnobservation(observable: IObservable) {\n if (observable.isPendingUnobservation_ === false) {\n // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n observable.isPendingUnobservation_ = true\n globalState.pendingUnobservations.push(observable)\n }\n}\n\n/**\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\n * Avoids unnecessary recalculations.\n */\nexport function startBatch() {\n globalState.inBatch++\n}\n\nexport function endBatch() {\n if (--globalState.inBatch === 0) {\n runReactions()\n // the batch is actually about to finish, all unobserving should happen here.\n const list = globalState.pendingUnobservations\n for (let i = 0; i < list.length; i++) {\n const observable = list[i]\n observable.isPendingUnobservation_ = false\n if (observable.observers_.size === 0) {\n if (observable.isBeingObserved_) {\n // if this observable had reactive observers, trigger the hooks\n observable.isBeingObserved_ = false\n observable.onBUO()\n }\n if (observable instanceof ComputedValue) {\n // computed values are automatically teared down when the last observer leaves\n // this process happens recursively, this computed might be the last observabe of another, etc..\n observable.suspend_()\n }\n }\n }\n globalState.pendingUnobservations = []\n }\n}\n\nexport function reportObserved(observable: IObservable): boolean {\n checkIfStateReadsAreAllowed(observable)\n\n const derivation = globalState.trackingDerivation\n if (derivation !== null) {\n /**\n * Simple optimization, give each derivation run an unique id (runId)\n * Check if last time this observable was accessed the same runId is used\n * if this is the case, the relation is already known\n */\n if (derivation.runId_ !== observable.lastAccessedBy_) {\n observable.lastAccessedBy_ = derivation.runId_\n // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n derivation.newObserving_![derivation.unboundDepsCount_++] = observable\n if (!observable.isBeingObserved_ && globalState.trackingContext) {\n observable.isBeingObserved_ = true\n observable.onBO()\n }\n }\n return true\n } else if (observable.observers_.size === 0 && globalState.inBatch > 0) {\n queueForUnobservation(observable)\n }\n\n return false\n}\n\n// function invariantLOS(observable: IObservable, msg: string) {\n// // it's expensive so better not run it in produciton. but temporarily helpful for testing\n// const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n// if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n// throw new Error(\n// \"lowestObserverState is wrong for \" +\n// msg +\n// \" because \" +\n// min +\n// \" < \" +\n// observable.lowestObserverState\n// )\n// }\n\n/**\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\n * It will propagate changes to observers from previous run\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\n * Hopefully self reruning autoruns aren't a feature people should depend on\n * Also most basic use cases should be ok\n */\n\n// Called by Atom when its value changes\nexport function propagateChanged(observable: IObservable) {\n // invariantLOS(observable, \"changed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) return\n observable.lowestObserverState_ = IDerivationState_.STALE_\n\n // Ideally we use for..of here, but the downcompiled version is really slow...\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable)\n }\n d.onBecomeStale_()\n }\n d.dependenciesState_ = IDerivationState_.STALE_\n })\n // invariantLOS(observable, \"changed end\");\n}\n\n// Called by ComputedValue when it recalculate and its value changed\nexport function propagateChangeConfirmed(observable: IObservable) {\n // invariantLOS(observable, \"confirmed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) return\n observable.lowestObserverState_ = IDerivationState_.STALE_\n\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) {\n d.dependenciesState_ = IDerivationState_.STALE_\n if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable)\n }\n } else if (\n d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n ) {\n observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n }\n })\n // invariantLOS(observable, \"confirmed end\");\n}\n\n// Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nexport function propagateMaybeChanged(observable: IObservable) {\n // invariantLOS(observable, \"maybe start\");\n if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) return\n observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_\n\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_\n d.onBecomeStale_()\n }\n })\n // invariantLOS(observable, \"maybe end\");\n}\n\nfunction logTraceInfo(derivation: IDerivation, observable: IObservable) {\n console.log(\n `[mobx.trace] '${derivation.name_}' is invalidated due to a change in: '${observable.name_}'`\n )\n if (derivation.isTracing_ === TraceMode.BREAK) {\n const lines = []\n printDepTree(getDependencyTree(derivation), lines, 1)\n\n // prettier-ignore\n new Function(\n`debugger;\n/*\nTracing '${derivation.name_}'\n\nYou are entering this break point because derivation '${derivation.name_}' is being traced and '${observable.name_}' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n${derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\"}\n\nThe dependencies for this derivation are:\n\n${lines.join(\"\\n\")}\n*/\n `)()\n }\n}\n\nfunction printDepTree(tree: IDependencyTree, lines: string[], depth: number) {\n if (lines.length >= 1000) {\n lines.push(\"(and many more)\")\n return\n }\n lines.push(`${\"\\t\".repeat(depth - 1)}${tree.name}`)\n if (tree.dependencies) tree.dependencies.forEach(child => printDepTree(child, lines, depth + 1))\n}\n","import {\n $mobx,\n IDerivation,\n IDerivationState_,\n IObservable,\n Lambda,\n TraceMode,\n clearObserving,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n globalState,\n isCaughtException,\n isSpyEnabled,\n shouldCompute,\n spyReport,\n spyReportEnd,\n spyReportStart,\n startBatch,\n trace,\n trackDerivedFunction\n} from \"../internal\"\n\n/**\n * Reactions are a special kind of derivations. Several things distinguishes them from normal reactive computations\n *\n * 1) They will always run, whether they are used by other computations or not.\n * This means that they are very suitable for triggering side effects like logging, updating the DOM and making network requests.\n * 2) They are not observable themselves\n * 3) They will always run after any 'normal' derivations\n * 4) They are allowed to change the state and thereby triggering themselves again, as long as they make sure the state propagates to a stable state in a reasonable amount of iterations.\n *\n * The state machine of a Reaction is as follows:\n *\n * 1) after creating, the reaction should be started by calling `runReaction` or by scheduling it (see also `autorun`)\n * 2) the `onInvalidate` handler should somehow result in a call to `this.track(someFunction)`\n * 3) all observables accessed in `someFunction` will be observed by this reaction.\n * 4) as soon as some of the dependencies has changed the Reaction will be rescheduled for another run (after the current mutation or transaction). `isScheduled` will yield true once a dependency is stale and during this period\n * 5) `onInvalidate` will be called, and we are back at step 1.\n *\n */\n\nexport interface IReactionPublic {\n dispose(): void\n trace(enterBreakPoint?: boolean): void\n}\n\nexport interface IReactionDisposer {\n (): void\n $mobx: Reaction\n}\n\nexport class Reaction implements IDerivation, IReactionPublic {\n observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n newObserving_: IObservable[] = []\n dependenciesState_ = IDerivationState_.NOT_TRACKING_\n diffValue_ = 0\n runId_ = 0\n unboundDepsCount_ = 0\n isDisposed_ = false\n isScheduled_ = false\n isTrackPending_ = false\n isRunning_ = false\n isTracing_: TraceMode = TraceMode.NONE\n\n constructor(\n public name_: string = __DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\",\n private onInvalidate_: () => void,\n private errorHandler_?: (error: any, derivation: IDerivation) => void,\n public requiresObservable_ = false\n ) {}\n\n onBecomeStale_() {\n this.schedule_()\n }\n\n schedule_() {\n if (!this.isScheduled_) {\n this.isScheduled_ = true\n globalState.pendingReactions.push(this)\n runReactions()\n }\n }\n\n isScheduled() {\n return this.isScheduled_\n }\n\n /**\n * internal, use schedule() if you intend to kick off a reaction\n */\n runReaction_() {\n if (!this.isDisposed_) {\n startBatch()\n this.isScheduled_ = false\n const prev = globalState.trackingContext\n globalState.trackingContext = this\n if (shouldCompute(this)) {\n this.isTrackPending_ = true\n\n try {\n this.onInvalidate_()\n if (__DEV__ && this.isTrackPending_ && isSpyEnabled()) {\n // onInvalidate didn't trigger track right away..\n spyReport({\n name: this.name_,\n type: \"scheduled-reaction\"\n })\n }\n } catch (e) {\n this.reportExceptionInDerivation_(e)\n }\n }\n globalState.trackingContext = prev\n endBatch()\n }\n }\n\n track(fn: () => void) {\n if (this.isDisposed_) {\n return\n // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n }\n startBatch()\n const notify = isSpyEnabled()\n let startTime\n if (__DEV__ && notify) {\n startTime = Date.now()\n spyReportStart({\n name: this.name_,\n type: \"reaction\"\n })\n }\n this.isRunning_ = true\n const prevReaction = globalState.trackingContext // reactions could create reactions...\n globalState.trackingContext = this\n const result = trackDerivedFunction(this, fn, undefined)\n globalState.trackingContext = prevReaction\n this.isRunning_ = false\n this.isTrackPending_ = false\n if (this.isDisposed_) {\n // disposed during last run. Clean up everything that was bound after the dispose call.\n clearObserving(this)\n }\n if (isCaughtException(result)) this.reportExceptionInDerivation_(result.cause)\n if (__DEV__ && notify) {\n spyReportEnd({\n time: Date.now() - startTime\n })\n }\n endBatch()\n }\n\n reportExceptionInDerivation_(error: any) {\n if (this.errorHandler_) {\n this.errorHandler_(error, this)\n return\n }\n\n if (globalState.disableErrorBoundaries) throw error\n\n const message = __DEV__\n ? `[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '${this}'`\n : `[mobx] uncaught error in '${this}'`\n if (!globalState.suppressReactionErrors) {\n console.error(message, error)\n /** If debugging brought you here, please, read the above message :-). Tnx! */\n } else if (__DEV__) console.warn(`[mobx] (error in reaction '${this.name_}' suppressed, fix error of causing action below)`) // prettier-ignore\n\n if (__DEV__ && isSpyEnabled()) {\n spyReport({\n type: \"error\",\n name: this.name_,\n message,\n error: \"\" + error\n })\n }\n\n globalState.globalReactionErrorHandlers.forEach(f => f(error, this))\n }\n\n dispose() {\n if (!this.isDisposed_) {\n this.isDisposed_ = true\n if (!this.isRunning_) {\n // if disposed while running, clean up later. Maybe not optimal, but rare case\n startBatch()\n clearObserving(this)\n endBatch()\n }\n }\n }\n\n getDisposer_(): IReactionDisposer {\n const r = this.dispose.bind(this) as IReactionDisposer\n r[$mobx] = this\n return r\n }\n\n toString() {\n return `Reaction[${this.name_}]`\n }\n\n trace(enterBreakPoint: boolean = false) {\n trace(this, enterBreakPoint)\n }\n}\n\nexport function onReactionError(handler: (error: any, derivation: IDerivation) => void): Lambda {\n globalState.globalReactionErrorHandlers.push(handler)\n return () => {\n const idx = globalState.globalReactionErrorHandlers.indexOf(handler)\n if (idx >= 0) globalState.globalReactionErrorHandlers.splice(idx, 1)\n }\n}\n\n/**\n * Magic number alert!\n * Defines within how many times a reaction is allowed to re-trigger itself\n * until it is assumed that this is gonna be a never ending loop...\n */\nconst MAX_REACTION_ITERATIONS = 100\n\nlet reactionScheduler: (fn: () => void) => void = f => f()\n\nexport function runReactions() {\n // Trampolining, if runReactions are already running, new reactions will be picked up\n if (globalState.inBatch > 0 || globalState.isRunningReactions) return\n reactionScheduler(runReactionsHelper)\n}\n\nfunction runReactionsHelper() {\n globalState.isRunningReactions = true\n const allReactions = globalState.pendingReactions\n let iterations = 0\n\n // While running reactions, new reactions might be triggered.\n // Hence we work with two variables and check whether\n // we converge to no remaining reactions after a while.\n while (allReactions.length > 0) {\n if (++iterations === MAX_REACTION_ITERATIONS) {\n console.error(\n __DEV__\n ? `Reaction doesn't converge to a stable state after ${MAX_REACTION_ITERATIONS} iterations.` +\n ` Probably there is a cycle in the reactive function: ${allReactions[0]}`\n : `[mobx] cycle in reaction: ${allReactions[0]}`\n )\n allReactions.splice(0) // clear reactions\n }\n let remainingReactions = allReactions.splice(0)\n for (let i = 0, l = remainingReactions.length; i < l; i++)\n remainingReactions[i].runReaction_()\n }\n globalState.isRunningReactions = false\n}\n\nexport const isReaction = createInstanceofPredicate(\"Reaction\", Reaction)\n\nexport function setReactionScheduler(fn: (f: () => void) => void) {\n const baseScheduler = reactionScheduler\n reactionScheduler = f => fn(() => baseScheduler(f))\n}\n","import { IComputedDidChange } from \"./computedvalue\"\nimport { IValueDidChange, IBoxDidChange } from \"./../types/observablevalue\"\nimport { IObjectDidChange } from \"./../types/observableobject\"\nimport { IArrayDidChange } from \"./../types/observablearray\"\nimport { Lambda, globalState, once, ISetDidChange, IMapDidChange } from \"../internal\"\n\nexport function isSpyEnabled() {\n return __DEV__ && !!globalState.spyListeners.length\n}\n\nexport type PureSpyEvent =\n | { type: \"action\"; name: string; object: unknown; arguments: unknown[] }\n | { type: \"scheduled-reaction\"; name: string }\n | { type: \"reaction\"; name: string }\n | { type: \"error\"; name: string; message: string; error: string }\n | IComputedDidChange\n | IObjectDidChange\n | IArrayDidChange\n | IMapDidChange\n | ISetDidChange\n | IValueDidChange\n | IBoxDidChange\n | { type: \"report-end\"; spyReportEnd: true; time?: number }\n\ntype SpyEvent = PureSpyEvent & { spyReportStart?: true }\n\nexport function spyReport(event: SpyEvent) {\n if (!__DEV__) return // dead code elimination can do the rest\n if (!globalState.spyListeners.length) return\n const listeners = globalState.spyListeners\n for (let i = 0, l = listeners.length; i < l; i++) listeners[i](event)\n}\n\nexport function spyReportStart(event: PureSpyEvent) {\n if (!__DEV__) return\n const change = { ...event, spyReportStart: true as const }\n spyReport(change)\n}\n\nconst END_EVENT: SpyEvent = { type: \"report-end\", spyReportEnd: true }\n\nexport function spyReportEnd(change?: { time?: number }) {\n if (!__DEV__) return\n if (change) spyReport({ ...change, type: \"report-end\", spyReportEnd: true })\n else spyReport(END_EVENT)\n}\n\nexport function spy(listener: (change: SpyEvent) => void): Lambda {\n if (!__DEV__) {\n console.warn(`[mobx.spy] Is a no-op in production builds`)\n return function () {}\n } else {\n globalState.spyListeners.push(listener)\n return once(() => {\n globalState.spyListeners = globalState.spyListeners.filter(l => l !== listener)\n })\n }\n}\n","import {\n createAction,\n executeAction,\n Annotation,\n storeAnnotation,\n die,\n isFunction,\n isStringish,\n createDecoratorAnnotation,\n createActionAnnotation\n} from \"../internal\"\n\nexport const ACTION = \"action\"\nexport const ACTION_BOUND = \"action.bound\"\nexport const AUTOACTION = \"autoAction\"\nexport const AUTOACTION_BOUND = \"autoAction.bound\"\n\nconst DEFAULT_ACTION_NAME = \"\"\n\nconst actionAnnotation = createActionAnnotation(ACTION)\nconst actionBoundAnnotation = createActionAnnotation(ACTION_BOUND, {\n bound: true\n})\nconst autoActionAnnotation = createActionAnnotation(AUTOACTION, {\n autoAction: true\n})\nconst autoActionBoundAnnotation = createActionAnnotation(AUTOACTION_BOUND, {\n autoAction: true,\n bound: true\n})\n\nexport interface IActionFactory extends Annotation, PropertyDecorator {\n // nameless actions\n (fn: T): T\n // named actions\n (name: string, fn: T): T\n\n // named decorator\n (customName: string): PropertyDecorator & Annotation\n\n // decorator (name no longer supported)\n bound: Annotation & PropertyDecorator\n}\n\nfunction createActionFactory(autoAction: boolean): IActionFactory {\n const res: IActionFactory = function action(arg1, arg2?): any {\n // action(fn() {})\n if (isFunction(arg1))\n return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction)\n // action(\"name\", fn() {})\n if (isFunction(arg2)) return createAction(arg1, arg2, autoAction)\n // @action\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation)\n }\n // action(\"name\") & @action(\"name\")\n if (isStringish(arg1)) {\n return createDecoratorAnnotation(\n createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n name: arg1,\n autoAction\n })\n )\n }\n\n if (__DEV__) die(\"Invalid arguments for `action`\")\n } as IActionFactory\n return res\n}\n\nexport const action: IActionFactory = createActionFactory(false)\nObject.assign(action, actionAnnotation)\nexport const autoAction: IActionFactory = createActionFactory(true)\nObject.assign(autoAction, autoActionAnnotation)\n\naction.bound = createDecoratorAnnotation(actionBoundAnnotation)\nautoAction.bound = createDecoratorAnnotation(autoActionBoundAnnotation)\n\nexport function runInAction(fn: () => T): T {\n return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined)\n}\n\nexport function isAction(thing: any) {\n return isFunction(thing) && thing.isMobxAction === true\n}\n","import {\n EMPTY_OBJECT,\n IEqualsComparer,\n IReactionDisposer,\n IReactionPublic,\n Lambda,\n Reaction,\n action,\n comparer,\n getNextId,\n isAction,\n isFunction,\n isPlainObject,\n die,\n allowStateChanges\n} from \"../internal\"\n\nexport interface IAutorunOptions {\n delay?: number\n name?: string\n /**\n * Experimental.\n * Warns if the view doesn't track observables\n */\n requiresObservable?: boolean\n scheduler?: (callback: () => void) => any\n onError?: (error: any) => void\n}\n\n/**\n * Creates a named reactive view and keeps it alive, so that the view is always\n * updated if one of the dependencies changes, even when the view is not further used by something else.\n * @param view The reactive view\n * @returns disposer function, which can be used to stop the view from being updated in the future.\n */\nexport function autorun(\n view: (r: IReactionPublic) => any,\n opts: IAutorunOptions = EMPTY_OBJECT\n): IReactionDisposer {\n if (__DEV__) {\n if (!isFunction(view)) die(\"Autorun expects a function as first argument\")\n if (isAction(view)) die(\"Autorun does not accept actions since actions are untrackable\")\n }\n\n const name: string =\n opts?.name ?? (__DEV__ ? (view as any).name || \"Autorun@\" + getNextId() : \"Autorun\")\n const runSync = !opts.scheduler && !opts.delay\n let reaction: Reaction\n\n if (runSync) {\n // normal autorun\n reaction = new Reaction(\n name,\n function (this: Reaction) {\n this.track(reactionRunner)\n },\n opts.onError,\n opts.requiresObservable\n )\n } else {\n const scheduler = createSchedulerFromOptions(opts)\n // debounced autorun\n let isScheduled = false\n\n reaction = new Reaction(\n name,\n () => {\n if (!isScheduled) {\n isScheduled = true\n scheduler(() => {\n isScheduled = false\n if (!reaction.isDisposed_) reaction.track(reactionRunner)\n })\n }\n },\n opts.onError,\n opts.requiresObservable\n )\n }\n\n function reactionRunner() {\n view(reaction)\n }\n\n reaction.schedule_()\n return reaction.getDisposer_()\n}\n\nexport type IReactionOptions = IAutorunOptions & {\n fireImmediately?: FireImmediately\n equals?: IEqualsComparer\n}\n\nconst run = (f: Lambda) => f()\n\nfunction createSchedulerFromOptions(opts: IAutorunOptions) {\n return opts.scheduler\n ? opts.scheduler\n : opts.delay\n ? (f: Lambda) => setTimeout(f, opts.delay!)\n : run\n}\n\nexport function reaction(\n expression: (r: IReactionPublic) => T,\n effect: (\n arg: T,\n prev: FireImmediately extends true ? T | undefined : T,\n r: IReactionPublic\n ) => void,\n opts: IReactionOptions = EMPTY_OBJECT\n): IReactionDisposer {\n if (__DEV__) {\n if (!isFunction(expression) || !isFunction(effect))\n die(\"First and second argument to reaction should be functions\")\n if (!isPlainObject(opts)) die(\"Third argument of reactions should be an object\")\n }\n const name = opts.name ?? (__DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\")\n const effectAction = action(\n name,\n opts.onError ? wrapErrorHandler(opts.onError, effect) : effect\n )\n const runSync = !opts.scheduler && !opts.delay\n const scheduler = createSchedulerFromOptions(opts)\n\n let firstTime = true\n let isScheduled = false\n let value: T\n let oldValue: T | undefined\n\n const equals: IEqualsComparer = (opts as any).compareStructural\n ? comparer.structural\n : opts.equals || comparer.default\n\n const r = new Reaction(\n name,\n () => {\n if (firstTime || runSync) {\n reactionRunner()\n } else if (!isScheduled) {\n isScheduled = true\n scheduler!(reactionRunner)\n }\n },\n opts.onError,\n opts.requiresObservable\n )\n\n function reactionRunner() {\n isScheduled = false\n if (r.isDisposed_) return\n let changed: boolean = false\n r.track(() => {\n const nextValue = allowStateChanges(false, () => expression(r))\n changed = firstTime || !equals(value, nextValue)\n oldValue = value\n value = nextValue\n })\n\n // This casting is nesessary as TS cannot infer proper type in current funciton implementation\n type OldValue = FireImmediately extends true ? T | undefined : T\n if (firstTime && opts.fireImmediately!) effectAction(value, oldValue as OldValue, r)\n else if (!firstTime && changed) effectAction(value, oldValue as OldValue, r)\n firstTime = false\n }\n\n r.schedule_()\n return r.getDisposer_()\n}\n\nfunction wrapErrorHandler(errorHandler, baseFn) {\n return function () {\n try {\n return baseFn.apply(this, arguments)\n } catch (e) {\n errorHandler.call(this, e)\n }\n }\n}\n","import {\n IComputedValue,\n IObservable,\n IObservableArray,\n Lambda,\n ObservableMap,\n getAtom,\n ObservableSet,\n isFunction,\n IObservableValue\n} from \"../internal\"\n\nconst ON_BECOME_OBSERVED = \"onBO\"\nconst ON_BECOME_UNOBSERVED = \"onBUO\"\n\nexport function onBecomeObserved(\n value:\n | IObservable\n | IComputedValue\n | IObservableArray\n | ObservableMap\n | ObservableSet\n | IObservableValue,\n listener: Lambda\n): Lambda\nexport function onBecomeObserved(\n value: ObservableMap | Object,\n property: K,\n listener: Lambda\n): Lambda\nexport function onBecomeObserved(thing, arg2, arg3?): Lambda {\n return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3)\n}\n\nexport function onBecomeUnobserved(\n value:\n | IObservable\n | IComputedValue\n | IObservableArray\n | ObservableMap\n | ObservableSet\n | IObservableValue,\n listener: Lambda\n): Lambda\nexport function onBecomeUnobserved(\n value: ObservableMap | Object,\n property: K,\n listener: Lambda\n): Lambda\nexport function onBecomeUnobserved(thing, arg2, arg3?): Lambda {\n return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3)\n}\n\nfunction interceptHook(hook: \"onBO\" | \"onBUO\", thing, arg2, arg3) {\n const atom: IObservable =\n typeof arg3 === \"function\" ? getAtom(thing, arg2) : (getAtom(thing) as any)\n const cb = isFunction(arg3) ? arg3 : arg2\n const listenersKey = `${hook}L` as \"onBOL\" | \"onBUOL\"\n\n if (atom[listenersKey]) {\n atom[listenersKey]!.add(cb)\n } else {\n atom[listenersKey] = new Set([cb])\n }\n\n return function () {\n const hookListeners = atom[listenersKey]\n if (hookListeners) {\n hookListeners.delete(cb)\n if (hookListeners.size === 0) {\n delete atom[listenersKey]\n }\n }\n }\n}\n","import { globalState, isolateGlobalState, setReactionScheduler } from \"../internal\"\n\nconst NEVER = \"never\"\nconst ALWAYS = \"always\"\nconst OBSERVED = \"observed\"\n// const IF_AVAILABLE = \"ifavailable\"\n\nexport function configure(options: {\n enforceActions?: \"never\" | \"always\" | \"observed\"\n computedRequiresReaction?: boolean\n /**\n * Warn if you try to create to derivation / reactive context without accessing any observable.\n */\n reactionRequiresObservable?: boolean\n /**\n * Warn if observables are accessed outside a reactive context\n */\n observableRequiresReaction?: boolean\n isolateGlobalState?: boolean\n disableErrorBoundaries?: boolean\n safeDescriptors?: boolean\n reactionScheduler?: (f: () => void) => void\n useProxies?: \"always\" | \"never\" | \"ifavailable\"\n}): void {\n if (options.isolateGlobalState === true) {\n isolateGlobalState()\n }\n const { useProxies, enforceActions } = options\n if (useProxies !== undefined) {\n globalState.useProxies =\n useProxies === ALWAYS\n ? true\n : useProxies === NEVER\n ? false\n : typeof Proxy !== \"undefined\"\n }\n if (useProxies === \"ifavailable\") globalState.verifyProxies = true\n if (enforceActions !== undefined) {\n const ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED\n globalState.enforceActions = ea\n globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true\n }\n ;[\n \"computedRequiresReaction\",\n \"reactionRequiresObservable\",\n \"observableRequiresReaction\",\n \"disableErrorBoundaries\",\n \"safeDescriptors\"\n ].forEach(key => {\n if (key in options) globalState[key] = !!options[key]\n })\n globalState.allowStateReads = !globalState.observableRequiresReaction\n if (__DEV__ && globalState.disableErrorBoundaries === true) {\n console.warn(\n \"WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled.\"\n )\n }\n if (options.reactionScheduler) {\n setReactionScheduler(options.reactionScheduler)\n }\n}\n","import {\n CreateObservableOptions,\n isObservableMap,\n AnnotationsMap,\n startBatch,\n endBatch,\n asObservableObject,\n isPlainObject,\n ObservableObjectAdministration,\n isObservable,\n die,\n getOwnPropertyDescriptors,\n $mobx,\n ownKeys\n} from \"../internal\"\n\nexport function extendObservable(\n target: A,\n properties: B,\n annotations?: AnnotationsMap,\n options?: CreateObservableOptions\n): A & B {\n if (__DEV__) {\n if (arguments.length > 4) die(\"'extendObservable' expected 2-4 arguments\")\n if (typeof target !== \"object\")\n die(\"'extendObservable' expects an object as first argument\")\n if (isObservableMap(target))\n die(\"'extendObservable' should not be used on maps, use map.merge instead\")\n if (!isPlainObject(properties))\n die(`'extendObservable' only accepts plain objects as second argument`)\n if (isObservable(properties) || isObservable(annotations))\n die(`Extending an object with another observable (object) is not supported`)\n }\n // Pull descriptors first, so we don't have to deal with props added by administration ($mobx)\n const descriptors = getOwnPropertyDescriptors(properties)\n\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n startBatch()\n try {\n ownKeys(descriptors).forEach(key => {\n adm.extend_(\n key,\n descriptors[key as any],\n // must pass \"undefined\" for { key: undefined }\n !annotations ? true : key in annotations ? annotations[key] : true\n )\n })\n } finally {\n endBatch()\n }\n return target as any\n}\n","import { IDepTreeNode, getAtom, getObservers, hasObservers } from \"../internal\"\n\nexport interface IDependencyTree {\n name: string\n dependencies?: IDependencyTree[]\n}\n\nexport interface IObserverTree {\n name: string\n observers?: IObserverTree[]\n}\n\nexport function getDependencyTree(thing: any, property?: string): IDependencyTree {\n return nodeToDependencyTree(getAtom(thing, property))\n}\n\nfunction nodeToDependencyTree(node: IDepTreeNode): IDependencyTree {\n const result: IDependencyTree = {\n name: node.name_\n }\n if (node.observing_ && node.observing_.length > 0)\n result.dependencies = unique(node.observing_).map(nodeToDependencyTree)\n return result\n}\n\nexport function getObserverTree(thing: any, property?: string): IObserverTree {\n return nodeToObserverTree(getAtom(thing, property))\n}\n\nfunction nodeToObserverTree(node: IDepTreeNode): IObserverTree {\n const result: IObserverTree = {\n name: node.name_\n }\n if (hasObservers(node as any))\n result.observers = Array.from(getObservers(node as any)).map(nodeToObserverTree)\n return result\n}\n\nfunction unique(list: T[]): T[] {\n return Array.from(new Set(list))\n}\n","import {\n action,\n noop,\n die,\n isFunction,\n Annotation,\n isStringish,\n storeAnnotation,\n createFlowAnnotation,\n createDecoratorAnnotation\n} from \"../internal\"\n\nexport const FLOW = \"flow\"\n\nlet generatorId = 0\n\nexport function FlowCancellationError() {\n this.message = \"FLOW_CANCELLED\"\n}\nFlowCancellationError.prototype = Object.create(Error.prototype)\n\nexport function isFlowCancellationError(error: Error) {\n return error instanceof FlowCancellationError\n}\n\nexport type CancellablePromise = Promise & { cancel(): void }\n\ninterface Flow extends Annotation, PropertyDecorator {\n (\n generator: (...args: Args) => Generator | AsyncGenerator\n ): (...args: Args) => CancellablePromise\n bound: Annotation & PropertyDecorator\n}\n\nconst flowAnnotation = createFlowAnnotation(\"flow\")\nconst flowBoundAnnotation = createFlowAnnotation(\"flow.bound\", { bound: true })\n\nexport const flow: Flow = Object.assign(\n function flow(arg1, arg2?) {\n // @flow\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, flowAnnotation)\n }\n // flow(fn)\n if (__DEV__ && arguments.length !== 1)\n die(`Flow expects single argument with generator function`)\n const generator = arg1\n const name = generator.name || \"\"\n\n // Implementation based on https://github.com/tj/co/blob/master/index.js\n const res = function () {\n const ctx = this\n const args = arguments\n const runId = ++generatorId\n const gen = action(`${name} - runid: ${runId} - init`, generator).apply(ctx, args)\n let rejector: (error: any) => void\n let pendingPromise: CancellablePromise | undefined = undefined\n\n const promise = new Promise(function (resolve, reject) {\n let stepId = 0\n rejector = reject\n\n function onFulfilled(res: any) {\n pendingPromise = undefined\n let ret\n try {\n ret = action(\n `${name} - runid: ${runId} - yield ${stepId++}`,\n gen.next\n ).call(gen, res)\n } catch (e) {\n return reject(e)\n }\n\n next(ret)\n }\n\n function onRejected(err: any) {\n pendingPromise = undefined\n let ret\n try {\n ret = action(\n `${name} - runid: ${runId} - yield ${stepId++}`,\n gen.throw!\n ).call(gen, err)\n } catch (e) {\n return reject(e)\n }\n next(ret)\n }\n\n function next(ret: any) {\n if (isFunction(ret?.then)) {\n // an async iterator\n ret.then(next, reject)\n return\n }\n if (ret.done) return resolve(ret.value)\n pendingPromise = Promise.resolve(ret.value) as any\n return pendingPromise!.then(onFulfilled, onRejected)\n }\n\n onFulfilled(undefined) // kick off the process\n }) as any\n\n promise.cancel = action(`${name} - runid: ${runId} - cancel`, function () {\n try {\n if (pendingPromise) cancelPromise(pendingPromise)\n // Finally block can return (or yield) stuff..\n const res = gen.return!(undefined as any)\n // eat anything that promise would do, it's cancelled!\n const yieldedPromise = Promise.resolve(res.value)\n yieldedPromise.then(noop, noop)\n cancelPromise(yieldedPromise) // maybe it can be cancelled :)\n // reject our original promise\n rejector(new FlowCancellationError())\n } catch (e) {\n rejector(e) // there could be a throwing finally block\n }\n })\n return promise\n }\n res.isMobXFlow = true\n return res\n } as any,\n flowAnnotation\n)\n\nflow.bound = createDecoratorAnnotation(flowBoundAnnotation)\n\nfunction cancelPromise(promise) {\n if (isFunction(promise.cancel)) promise.cancel()\n}\n\nexport function flowResult(\n result: T\n): T extends Generator\n ? CancellablePromise\n : T extends CancellablePromise\n ? T\n : never {\n return result as any // just tricking TypeScript :)\n}\n\nexport function isFlow(fn: any): boolean {\n return fn?.isMobXFlow === true\n}\n","import {\n IObservableArray,\n IObservableValue,\n Lambda,\n ObservableMap,\n getAdministration,\n isObservableArray,\n isObservableMap,\n isObservableObject,\n isObservableValue,\n ObservableSet,\n die,\n isStringish\n} from \"../internal\"\n\nexport type ReadInterceptor = (value: any) => T\n\n/** Experimental feature right now, tested indirectly via Mobx-State-Tree */\nexport function interceptReads(value: IObservableValue, handler: ReadInterceptor): Lambda\nexport function interceptReads(\n observableArray: IObservableArray,\n handler: ReadInterceptor\n): Lambda\nexport function interceptReads(\n observableMap: ObservableMap,\n handler: ReadInterceptor\n): Lambda\nexport function interceptReads(\n observableSet: ObservableSet,\n handler: ReadInterceptor\n): Lambda\nexport function interceptReads(\n object: Object,\n property: string,\n handler: ReadInterceptor\n): Lambda\nexport function interceptReads(thing, propOrHandler?, handler?): Lambda {\n let target\n if (isObservableMap(thing) || isObservableArray(thing) || isObservableValue(thing)) {\n target = getAdministration(thing)\n } else if (isObservableObject(thing)) {\n if (__DEV__ && !isStringish(propOrHandler))\n return die(\n `InterceptReads can only be used with a specific property, not with an object in general`\n )\n target = getAdministration(thing, propOrHandler)\n } else if (__DEV__) {\n return die(`Expected observable map, object or array as first array`)\n }\n if (__DEV__ && target.dehancer !== undefined)\n return die(`An intercept reader was already established`)\n target.dehancer = typeof propOrHandler === \"function\" ? propOrHandler : handler\n return () => {\n target.dehancer = undefined\n }\n}\n","import {\n IArrayWillChange,\n IArrayWillSplice,\n IInterceptor,\n IMapWillChange,\n IObjectWillChange,\n IObservableArray,\n IObservableValue,\n IValueWillChange,\n Lambda,\n ObservableMap,\n getAdministration,\n ObservableSet,\n ISetWillChange,\n isFunction\n} from \"../internal\"\n\nexport function intercept(\n value: IObservableValue,\n handler: IInterceptor>\n): Lambda\nexport function intercept(\n observableArray: IObservableArray,\n handler: IInterceptor | IArrayWillSplice>\n): Lambda\nexport function intercept(\n observableMap: ObservableMap | Map,\n handler: IInterceptor>\n): Lambda\nexport function intercept(\n observableSet: ObservableSet | Set,\n handler: IInterceptor>\n): Lambda\nexport function intercept(\n observableMap: ObservableMap | Map,\n property: K,\n handler: IInterceptor>\n): Lambda\nexport function intercept(object: object, handler: IInterceptor): Lambda\nexport function intercept(\n object: T,\n property: K,\n handler: IInterceptor>\n): Lambda\nexport function intercept(thing, propOrHandler?, handler?): Lambda {\n if (isFunction(handler)) return interceptProperty(thing, propOrHandler, handler)\n else return interceptInterceptable(thing, propOrHandler)\n}\n\nfunction interceptInterceptable(thing, handler) {\n return getAdministration(thing).intercept_(handler)\n}\n\nfunction interceptProperty(thing, property, handler) {\n return getAdministration(thing, property).intercept_(handler)\n}\n","import { $mobx, getAtom, isComputedValue, isObservableObject, die, isStringish } from \"../internal\"\n\nexport function _isComputed(value, property?: PropertyKey): boolean {\n if (property === undefined) {\n return isComputedValue(value)\n }\n if (isObservableObject(value) === false) return false\n if (!value[$mobx].values_.has(property)) return false\n const atom = getAtom(value, property)\n return isComputedValue(atom)\n}\n\nexport function isComputed(value: any): boolean {\n if (__DEV__ && arguments.length > 1)\n return die(\n `isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property`\n )\n return _isComputed(value)\n}\n\nexport function isComputedProp(value: any, propName: PropertyKey): boolean {\n if (__DEV__ && !isStringish(propName))\n return die(`isComputed expected a property name as second argument`)\n return _isComputed(value, propName)\n}\n","import {\n $mobx,\n isAtom,\n isComputedValue,\n isObservableArray,\n isObservableMap,\n isObservableObject,\n isReaction,\n die,\n isStringish\n} from \"../internal\"\n\nfunction _isObservable(value, property?: PropertyKey): boolean {\n if (!value) return false\n if (property !== undefined) {\n if (__DEV__ && (isObservableMap(value) || isObservableArray(value)))\n return die(\n \"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\"\n )\n if (isObservableObject(value)) {\n return value[$mobx].values_.has(property)\n }\n return false\n }\n // For first check, see #701\n return (\n isObservableObject(value) ||\n !!value[$mobx] ||\n isAtom(value) ||\n isReaction(value) ||\n isComputedValue(value)\n )\n}\n\nexport function isObservable(value: any): boolean {\n if (__DEV__ && arguments.length !== 1)\n die(\n `isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property`\n )\n return _isObservable(value)\n}\n\nexport function isObservableProp(value: any, propName: PropertyKey): boolean {\n if (__DEV__ && !isStringish(propName)) return die(`expected a property name as second argument`)\n return _isObservable(value, propName)\n}\n","import {\n $mobx,\n IIsObservableObject,\n IObservableArray,\n ObservableMap,\n ObservableSet,\n ObservableObjectAdministration,\n endBatch,\n isObservableArray,\n isObservableMap,\n isObservableSet,\n isObservableObject,\n startBatch,\n die\n} from \"../internal\"\n\nexport function keys(map: ObservableMap): ReadonlyArray\nexport function keys(ar: IObservableArray): ReadonlyArray\nexport function keys(set: ObservableSet): ReadonlyArray\nexport function keys(obj: T): ReadonlyArray\nexport function keys(obj: any): any {\n if (isObservableObject(obj)) {\n return (((obj as any) as IIsObservableObject)[\n $mobx\n ] as ObservableObjectAdministration).keys_()\n }\n if (isObservableMap(obj) || isObservableSet(obj)) {\n return Array.from(obj.keys())\n }\n if (isObservableArray(obj)) {\n return obj.map((_, index) => index)\n }\n die(5)\n}\n\nexport function values(map: ObservableMap): ReadonlyArray\nexport function values(set: ObservableSet): ReadonlyArray\nexport function values(ar: IObservableArray): ReadonlyArray\nexport function values(obj: T): ReadonlyArray\nexport function values(obj: any): string[] {\n if (isObservableObject(obj)) {\n return keys(obj).map(key => obj[key])\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(key => obj.get(key))\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.values())\n }\n if (isObservableArray(obj)) {\n return obj.slice()\n }\n die(6)\n}\n\nexport function entries(map: ObservableMap): ReadonlyArray<[K, T]>\nexport function entries(set: ObservableSet): ReadonlyArray<[T, T]>\nexport function entries(ar: IObservableArray): ReadonlyArray<[number, T]>\nexport function entries(\n obj: T\n): ReadonlyArray<[string, T extends object ? T[keyof T] : any]>\nexport function entries(obj: any): any {\n if (isObservableObject(obj)) {\n return keys(obj).map(key => [key, obj[key]])\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(key => [key, obj.get(key)])\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.entries())\n }\n if (isObservableArray(obj)) {\n return obj.map((key, index) => [index, key])\n }\n die(7)\n}\n\nexport function set(obj: ObservableMap, values: { [key: string]: V })\nexport function set(obj: ObservableMap, key: K, value: V)\nexport function set(obj: ObservableSet, value: T)\nexport function set(obj: IObservableArray, index: number, value: T)\nexport function set(obj: T, values: { [key: string]: any })\nexport function set(obj: T, key: PropertyKey, value: any)\nexport function set(obj: any, key: any, value?: any): void {\n if (arguments.length === 2 && !isObservableSet(obj)) {\n startBatch()\n const values = key\n try {\n for (let key in values) set(obj, key, values[key])\n } finally {\n endBatch()\n }\n return\n }\n if (isObservableObject(obj)) {\n ;((obj as any) as IIsObservableObject)[$mobx].set_(key, value)\n } else if (isObservableMap(obj)) {\n obj.set(key, value)\n } else if (isObservableSet(obj)) {\n obj.add(key)\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") key = parseInt(key, 10)\n if (key < 0) die(`Invalid index: '${key}'`)\n startBatch()\n if (key >= obj.length) obj.length = key + 1\n obj[key] = value\n endBatch()\n } else die(8)\n}\n\nexport function remove(obj: ObservableMap, key: K)\nexport function remove(obj: ObservableSet, key: T)\nexport function remove(obj: IObservableArray, index: number)\nexport function remove(obj: T, key: string)\nexport function remove(obj: any, key: any): void {\n if (isObservableObject(obj)) {\n ;((obj as any) as IIsObservableObject)[$mobx].delete_(key)\n } else if (isObservableMap(obj)) {\n obj.delete(key)\n } else if (isObservableSet(obj)) {\n obj.delete(key)\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") key = parseInt(key, 10)\n obj.splice(key, 1)\n } else {\n die(9)\n }\n}\n\nexport function has(obj: ObservableMap, key: K): boolean\nexport function has(obj: ObservableSet, key: T): boolean\nexport function has(obj: IObservableArray, index: number): boolean\nexport function has(obj: T, key: string): boolean\nexport function has(obj: any, key: any): boolean {\n if (isObservableObject(obj)) {\n return ((obj as any) as IIsObservableObject)[$mobx].has_(key)\n } else if (isObservableMap(obj)) {\n return obj.has(key)\n } else if (isObservableSet(obj)) {\n return obj.has(key)\n } else if (isObservableArray(obj)) {\n return key >= 0 && key < obj.length\n }\n die(10)\n}\n\nexport function get(obj: ObservableMap, key: K): V | undefined\nexport function get(obj: IObservableArray, index: number): T | undefined\nexport function get(obj: T, key: string): any\nexport function get(obj: any, key: any): any {\n if (!has(obj, key)) return undefined\n if (isObservableObject(obj)) {\n return ((obj as any) as IIsObservableObject)[$mobx].get_(key)\n } else if (isObservableMap(obj)) {\n return obj.get(key)\n } else if (isObservableArray(obj)) {\n return obj[key]\n }\n die(11)\n}\n\nexport function apiDefineProperty(obj: Object, key: PropertyKey, descriptor: PropertyDescriptor) {\n if (isObservableObject(obj)) {\n return ((obj as any) as IIsObservableObject)[$mobx].defineProperty_(key, descriptor)\n }\n die(39)\n}\n\nexport function apiOwnKeys(obj: Object) {\n if (isObservableObject(obj)) {\n return ((obj as any) as IIsObservableObject)[$mobx].ownKeys_()\n }\n die(38)\n}\n","import {\n IArrayDidChange,\n IComputedValue,\n IMapDidChange,\n IObjectDidChange,\n IObservableArray,\n IObservableValue,\n IValueDidChange,\n Lambda,\n ObservableMap,\n getAdministration,\n ObservableSet,\n ISetDidChange,\n isFunction\n} from \"../internal\"\n\nexport function observe(\n value: IObservableValue | IComputedValue,\n listener: (change: IValueDidChange) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe(\n observableArray: IObservableArray,\n listener: (change: IArrayDidChange) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe(\n // ObservableSet/ObservableMap are required despite they implement Set/Map: https://github.com/mobxjs/mobx/pull/3180#discussion_r746542929\n observableSet: ObservableSet | Set,\n listener: (change: ISetDidChange) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe(\n observableMap: ObservableMap | Map,\n listener: (change: IMapDidChange) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe(\n observableMap: ObservableMap | Map,\n property: K,\n listener: (change: IValueDidChange) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe(\n object: Object,\n listener: (change: IObjectDidChange) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe(\n object: T,\n property: K,\n listener: (change: IValueDidChange) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe(thing, propOrCb?, cbOrFire?, fireImmediately?): Lambda {\n if (isFunction(cbOrFire))\n return observeObservableProperty(thing, propOrCb, cbOrFire, fireImmediately)\n else return observeObservable(thing, propOrCb, cbOrFire)\n}\n\nfunction observeObservable(thing, listener, fireImmediately: boolean) {\n return getAdministration(thing).observe_(listener, fireImmediately)\n}\n\nfunction observeObservableProperty(thing, property, listener, fireImmediately: boolean) {\n return getAdministration(thing, property).observe_(listener, fireImmediately)\n}\n","import {\n isObservable,\n isObservableArray,\n isObservableValue,\n isObservableMap,\n isObservableSet,\n isComputedValue,\n die,\n apiOwnKeys,\n objectPrototype\n} from \"../internal\"\n\nfunction cache(map: Map, key: K, value: V): V {\n map.set(key, value)\n return value\n}\n\nfunction toJSHelper(source, __alreadySeen: Map) {\n if (\n source == null ||\n typeof source !== \"object\" ||\n source instanceof Date ||\n !isObservable(source)\n )\n return source\n\n if (isObservableValue(source) || isComputedValue(source))\n return toJSHelper(source.get(), __alreadySeen)\n if (__alreadySeen.has(source)) {\n return __alreadySeen.get(source)\n }\n if (isObservableArray(source)) {\n const res = cache(__alreadySeen, source, new Array(source.length))\n source.forEach((value, idx) => {\n res[idx] = toJSHelper(value, __alreadySeen)\n })\n return res\n }\n if (isObservableSet(source)) {\n const res = cache(__alreadySeen, source, new Set())\n source.forEach(value => {\n res.add(toJSHelper(value, __alreadySeen))\n })\n return res\n }\n if (isObservableMap(source)) {\n const res = cache(__alreadySeen, source, new Map())\n source.forEach((value, key) => {\n res.set(key, toJSHelper(value, __alreadySeen))\n })\n return res\n } else {\n // must be observable object\n const res = cache(__alreadySeen, source, {})\n apiOwnKeys(source).forEach((key: any) => {\n if (objectPrototype.propertyIsEnumerable.call(source, key)) {\n res[key] = toJSHelper(source[key], __alreadySeen)\n }\n })\n return res\n }\n}\n\n/**\n * Basically, a deep clone, so that no reactive property will exist anymore.\n */\nexport function toJS(source: T, options?: any): T {\n if (__DEV__ && options) die(\"toJS no longer supports options\")\n return toJSHelper(source, new Map())\n}\n","import { TraceMode, die, getAtom, globalState } from \"../internal\"\n\nexport function trace(thing?: any, prop?: string, enterBreakPoint?: boolean): void\nexport function trace(thing?: any, enterBreakPoint?: boolean): void\nexport function trace(enterBreakPoint?: boolean): void\nexport function trace(...args: any[]): void {\n if (!__DEV__) die(`trace() is not available in production builds`)\n let enterBreakPoint = false\n if (typeof args[args.length - 1] === \"boolean\") enterBreakPoint = args.pop()\n const derivation = getAtomFromArgs(args)\n if (!derivation) {\n return die(\n `'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly`\n )\n }\n if (derivation.isTracing_ === TraceMode.NONE) {\n console.log(`[mobx.trace] '${derivation.name_}' tracing enabled`)\n }\n derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG\n}\n\nfunction getAtomFromArgs(args): any {\n switch (args.length) {\n case 0:\n return globalState.trackingDerivation\n case 1:\n return getAtom(args[0])\n case 2:\n return getAtom(args[0], args[1])\n }\n}\n","import { endBatch, startBatch } from \"../internal\"\n\n/**\n * During a transaction no views are updated until the end of the transaction.\n * The transaction will be run synchronously nonetheless.\n *\n * @param action a function that updates some reactive state\n * @returns any value that was returned by the 'action' parameter.\n */\nexport function transaction(action: () => T, thisArg = undefined): T {\n startBatch()\n try {\n return action.apply(thisArg)\n } finally {\n endBatch()\n }\n}\n","import {\n $mobx,\n IReactionDisposer,\n Lambda,\n autorun,\n createAction,\n getNextId,\n die,\n allowStateChanges\n} from \"../internal\"\n\nexport interface IWhenOptions {\n name?: string\n timeout?: number\n onError?: (error: any) => void\n}\n\nexport function when(\n predicate: () => boolean,\n opts?: IWhenOptions\n): Promise & { cancel(): void }\nexport function when(\n predicate: () => boolean,\n effect: Lambda,\n opts?: IWhenOptions\n): IReactionDisposer\nexport function when(predicate: any, arg1?: any, arg2?: any): any {\n if (arguments.length === 1 || (arg1 && typeof arg1 === \"object\"))\n return whenPromise(predicate, arg1)\n return _when(predicate, arg1, arg2 || {})\n}\n\nfunction _when(predicate: () => boolean, effect: Lambda, opts: IWhenOptions): IReactionDisposer {\n let timeoutHandle: any\n if (typeof opts.timeout === \"number\") {\n const error = new Error(\"WHEN_TIMEOUT\")\n timeoutHandle = setTimeout(() => {\n if (!disposer[$mobx].isDisposed_) {\n disposer()\n if (opts.onError) opts.onError(error)\n else throw error\n }\n }, opts.timeout)\n }\n\n opts.name = __DEV__ ? opts.name || \"When@\" + getNextId() : \"When\"\n const effectAction = createAction(\n __DEV__ ? opts.name + \"-effect\" : \"When-effect\",\n effect as Function\n )\n // eslint-disable-next-line\n var disposer = autorun(r => {\n // predicate should not change state\n let cond = allowStateChanges(false, predicate)\n if (cond) {\n r.dispose()\n if (timeoutHandle) clearTimeout(timeoutHandle)\n effectAction()\n }\n }, opts)\n return disposer\n}\n\nfunction whenPromise(\n predicate: () => boolean,\n opts?: IWhenOptions\n): Promise & { cancel(): void } {\n if (__DEV__ && opts && opts.onError)\n return die(`the options 'onError' and 'promise' cannot be combined`)\n let cancel\n const res = new Promise((resolve, reject) => {\n let disposer = _when(predicate, resolve, { ...opts, onError: reject })\n cancel = () => {\n disposer()\n reject(new Error(\"WHEN_CANCELLED\"))\n }\n })\n ;(res as any).cancel = cancel\n return res as any\n}\n","import {\n $mobx,\n IIsObservableObject,\n ObservableObjectAdministration,\n warnAboutProxyRequirement,\n assertProxies,\n die,\n isStringish,\n globalState,\n CreateObservableOptions,\n asObservableObject\n} from \"../internal\"\n\nfunction getAdm(target): ObservableObjectAdministration {\n return target[$mobx]\n}\n\n// Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\nconst objectProxyTraps: ProxyHandler = {\n has(target: IIsObservableObject, name: PropertyKey): boolean {\n if (__DEV__ && globalState.trackingDerivation)\n warnAboutProxyRequirement(\n \"detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.\"\n )\n return getAdm(target).has_(name)\n },\n get(target: IIsObservableObject, name: PropertyKey): any {\n return getAdm(target).get_(name)\n },\n set(target: IIsObservableObject, name: PropertyKey, value: any): boolean {\n if (!isStringish(name)) return false\n if (__DEV__ && !getAdm(target).values_.has(name)) {\n warnAboutProxyRequirement(\n \"add a new observable property through direct assignment. Use 'set' from 'mobx' instead.\"\n )\n }\n // null (intercepted) -> true (success)\n return getAdm(target).set_(name, value, true) ?? true\n },\n deleteProperty(target: IIsObservableObject, name: PropertyKey): boolean {\n if (__DEV__) {\n warnAboutProxyRequirement(\n \"delete properties from an observable object. Use 'remove' from 'mobx' instead.\"\n )\n }\n if (!isStringish(name)) return false\n // null (intercepted) -> true (success)\n return getAdm(target).delete_(name, true) ?? true\n },\n defineProperty(\n target: IIsObservableObject,\n name: PropertyKey,\n descriptor: PropertyDescriptor\n ): boolean {\n if (__DEV__) {\n warnAboutProxyRequirement(\n \"define property on an observable object. Use 'defineProperty' from 'mobx' instead.\"\n )\n }\n // null (intercepted) -> true (success)\n return getAdm(target).defineProperty_(name, descriptor) ?? true\n },\n ownKeys(target: IIsObservableObject): PropertyKey[] {\n if (__DEV__ && globalState.trackingDerivation)\n warnAboutProxyRequirement(\n \"iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.\"\n )\n return getAdm(target).ownKeys_()\n },\n preventExtensions(target) {\n die(13)\n }\n}\n\nexport function asDynamicObservableObject(\n target: any,\n options?: CreateObservableOptions\n): IIsObservableObject {\n assertProxies()\n target = asObservableObject(target, options)\n return (target[$mobx].proxy_ ??= new Proxy(target, objectProxyTraps))\n}\n","import { Lambda, once, untrackedEnd, untrackedStart, die } from \"../internal\"\n\nexport type IInterceptor = (change: T) => T | null\n\nexport interface IInterceptable {\n interceptors_: IInterceptor[] | undefined\n}\n\nexport function hasInterceptors(interceptable: IInterceptable) {\n return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0\n}\n\nexport function registerInterceptor(\n interceptable: IInterceptable,\n handler: IInterceptor\n): Lambda {\n const interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = [])\n interceptors.push(handler)\n return once(() => {\n const idx = interceptors.indexOf(handler)\n if (idx !== -1) interceptors.splice(idx, 1)\n })\n}\n\nexport function interceptChange(\n interceptable: IInterceptable,\n change: T | null\n): T | null {\n const prevU = untrackedStart()\n try {\n // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n const interceptors = [...(interceptable.interceptors_ || [])]\n for (let i = 0, l = interceptors.length; i < l; i++) {\n change = interceptors[i](change)\n if (change && !(change as any).type) die(14)\n if (!change) break\n }\n return change\n } finally {\n untrackedEnd(prevU)\n }\n}\n","import { Lambda, once, untrackedEnd, untrackedStart } from \"../internal\"\n\nexport interface IListenable {\n changeListeners_: Function[] | undefined\n}\n\nexport function hasListeners(listenable: IListenable) {\n return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0\n}\n\nexport function registerListener(listenable: IListenable, handler: Function): Lambda {\n const listeners = listenable.changeListeners_ || (listenable.changeListeners_ = [])\n listeners.push(handler)\n return once(() => {\n const idx = listeners.indexOf(handler)\n if (idx !== -1) listeners.splice(idx, 1)\n })\n}\n\nexport function notifyListeners(listenable: IListenable, change: T) {\n const prevU = untrackedStart()\n let listeners = listenable.changeListeners_\n if (!listeners) return\n listeners = listeners.slice()\n for (let i = 0, l = listeners.length; i < l; i++) {\n listeners[i](change)\n }\n untrackedEnd(prevU)\n}\n","import {\n $mobx,\n asObservableObject,\n AnnotationsMap,\n endBatch,\n startBatch,\n CreateObservableOptions,\n ObservableObjectAdministration,\n collectStoredAnnotations,\n isPlainObject,\n isObservableObject,\n die,\n ownKeys,\n extendObservable,\n addHiddenProp,\n storedAnnotationsSymbol\n} from \"../internal\"\n\n// Hack based on https://github.com/Microsoft/TypeScript/issues/14829#issuecomment-322267089\n// We need this, because otherwise, AdditionalKeys is going to be inferred to be any\n// set of superfluous keys. But, we rather want to get a compile error unless AdditionalKeys is\n// _explicity_ passed as generic argument\n// Fixes: https://github.com/mobxjs/mobx/issues/2325#issuecomment-691070022\ntype NoInfer = [T][T extends any ? 0 : never]\n\nexport function makeObservable(\n target: T,\n annotations?: AnnotationsMap>,\n options?: CreateObservableOptions\n): T {\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n startBatch()\n try {\n if (__DEV__ && annotations && target[storedAnnotationsSymbol]) {\n die(\n `makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.`\n )\n }\n // Default to decorators\n annotations ??= collectStoredAnnotations(target)\n\n // Annotate\n ownKeys(annotations).forEach(key => adm.make_(key, annotations![key]))\n } finally {\n endBatch()\n }\n return target\n}\n\n// proto[keysSymbol] = new Set()\nconst keysSymbol = Symbol(\"mobx-keys\")\n\nexport function makeAutoObservable(\n target: T,\n overrides?: AnnotationsMap>,\n options?: CreateObservableOptions\n): T {\n if (__DEV__) {\n if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target)))\n die(`'makeAutoObservable' can only be used for classes that don't have a superclass`)\n if (isObservableObject(target))\n die(`makeAutoObservable can only be used on objects not already made observable`)\n }\n\n // Optimization: avoid visiting protos\n // Assumes that annotation.make_/.extend_ works the same for plain objects\n if (isPlainObject(target)) {\n return extendObservable(target, target, overrides, options)\n }\n\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n\n // Optimization: cache keys on proto\n // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n if (!target[keysSymbol]) {\n const proto = Object.getPrototypeOf(target)\n const keys = new Set([...ownKeys(target), ...ownKeys(proto)])\n keys.delete(\"constructor\")\n keys.delete($mobx)\n addHiddenProp(proto, keysSymbol, keys)\n }\n\n startBatch()\n try {\n target[keysSymbol].forEach(key =>\n adm.make_(\n key,\n // must pass \"undefined\" for { key: undefined }\n !overrides ? true : key in overrides ? overrides[key] : true\n )\n )\n } finally {\n endBatch()\n }\n return target\n}\n","import {\n $mobx,\n Atom,\n EMPTY_ARRAY,\n IAtom,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n Lambda,\n addHiddenFinalProp,\n checkIfStateModificationsAreAllowed,\n createInstanceofPredicate,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isObject,\n isSpyEnabled,\n notifyListeners,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n allowStateChangesStart,\n allowStateChangesEnd,\n assertProxies,\n reserveArrayBuffer,\n hasProp,\n die,\n globalState\n} from \"../internal\"\n\nconst SPLICE = \"splice\"\nexport const UPDATE = \"update\"\nexport const MAX_SPLICE_SIZE = 10000 // See e.g. https://github.com/mobxjs/mobx/issues/859\n\nexport interface IObservableArray extends Array {\n spliceWithArray(index: number, deleteCount?: number, newItems?: T[]): T[]\n clear(): T[]\n replace(newItems: T[]): T[]\n remove(value: T): boolean\n toJSON(): T[]\n}\n\ninterface IArrayBaseChange {\n object: IObservableArray\n observableKind: \"array\"\n debugObjectName: string\n index: number\n}\n\nexport type IArrayDidChange = IArrayUpdate | IArraySplice\n\nexport interface IArrayUpdate extends IArrayBaseChange {\n type: \"update\"\n newValue: T\n oldValue: T\n}\n\nexport interface IArraySplice extends IArrayBaseChange {\n type: \"splice\"\n added: T[]\n addedCount: number\n removed: T[]\n removedCount: number\n}\n\nexport interface IArrayWillChange {\n object: IObservableArray\n index: number\n type: \"update\"\n newValue: T\n}\n\nexport interface IArrayWillSplice {\n object: IObservableArray\n index: number\n type: \"splice\"\n added: T[]\n removedCount: number\n}\n\nconst arrayTraps = {\n get(target, name) {\n const adm: ObservableArrayAdministration = target[$mobx]\n if (name === $mobx) return adm\n if (name === \"length\") return adm.getArrayLength_()\n if (typeof name === \"string\" && !isNaN(name as any)) {\n return adm.get_(parseInt(name))\n }\n if (hasProp(arrayExtensions, name)) {\n return arrayExtensions[name]\n }\n return target[name]\n },\n set(target, name, value): boolean {\n const adm: ObservableArrayAdministration = target[$mobx]\n if (name === \"length\") {\n adm.setArrayLength_(value)\n }\n if (typeof name === \"symbol\" || isNaN(name)) {\n target[name] = value\n } else {\n // numeric string\n adm.set_(parseInt(name), value)\n }\n return true\n },\n preventExtensions() {\n die(15)\n }\n}\n\nexport class ObservableArrayAdministration\n implements IInterceptable | IArrayWillSplice>, IListenable {\n atom_: IAtom\n readonly values_: any[] = [] // this is the prop that gets proxied, so can't replace it!\n interceptors_\n changeListeners_\n enhancer_: (newV: any, oldV: any | undefined) => any\n dehancer: any\n proxy_!: IObservableArray\n lastKnownLength_ = 0\n\n constructor(\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n enhancer: IEnhancer,\n public owned_: boolean,\n public legacyMode_: boolean\n ) {\n this.atom_ = new Atom(name)\n this.enhancer_ = (newV, oldV) =>\n enhancer(newV, oldV, __DEV__ ? name + \"[..]\" : \"ObservableArray[..]\")\n }\n\n dehanceValue_(value: any): any {\n if (this.dehancer !== undefined) return this.dehancer(value)\n return value\n }\n\n dehanceValues_(values: any[]): any[] {\n if (this.dehancer !== undefined && values.length > 0)\n return values.map(this.dehancer) as any\n return values\n }\n\n intercept_(handler: IInterceptor | IArrayWillSplice>): Lambda {\n return registerInterceptor | IArrayWillSplice>(this, handler)\n }\n\n observe_(\n listener: (changeData: IArrayDidChange) => void,\n fireImmediately = false\n ): Lambda {\n if (fireImmediately) {\n listener(>{\n observableKind: \"array\",\n object: this.proxy_ as any,\n debugObjectName: this.atom_.name_,\n type: \"splice\",\n index: 0,\n added: this.values_.slice(),\n addedCount: this.values_.length,\n removed: [],\n removedCount: 0\n })\n }\n return registerListener(this, listener)\n }\n\n getArrayLength_(): number {\n this.atom_.reportObserved()\n return this.values_.length\n }\n\n setArrayLength_(newLength: number) {\n if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) die(\"Out of range: \" + newLength)\n let currentLength = this.values_.length\n if (newLength === currentLength) return\n else if (newLength > currentLength) {\n const newItems = new Array(newLength - currentLength)\n for (let i = 0; i < newLength - currentLength; i++) newItems[i] = undefined // No Array.fill everywhere...\n this.spliceWithArray_(currentLength, 0, newItems)\n } else this.spliceWithArray_(newLength, currentLength - newLength)\n }\n\n updateArrayLength_(oldLength: number, delta: number) {\n if (oldLength !== this.lastKnownLength_) die(16)\n this.lastKnownLength_ += delta\n if (this.legacyMode_ && delta > 0) reserveArrayBuffer(oldLength + delta + 1)\n }\n\n spliceWithArray_(index: number, deleteCount?: number, newItems?: any[]): any[] {\n checkIfStateModificationsAreAllowed(this.atom_)\n const length = this.values_.length\n\n if (index === undefined) index = 0\n else if (index > length) index = length\n else if (index < 0) index = Math.max(0, length + index)\n\n if (arguments.length === 1) deleteCount = length - index\n else if (deleteCount === undefined || deleteCount === null) deleteCount = 0\n else deleteCount = Math.max(0, Math.min(deleteCount, length - index))\n\n if (newItems === undefined) newItems = EMPTY_ARRAY\n\n if (hasInterceptors(this)) {\n const change = interceptChange>(this as any, {\n object: this.proxy_ as any,\n type: SPLICE,\n index,\n removedCount: deleteCount,\n added: newItems\n })\n if (!change) return EMPTY_ARRAY\n deleteCount = change.removedCount\n newItems = change.added\n }\n\n newItems =\n newItems.length === 0 ? newItems : newItems.map(v => this.enhancer_(v, undefined))\n if (this.legacyMode_ || __DEV__) {\n const lengthDelta = newItems.length - deleteCount\n this.updateArrayLength_(length, lengthDelta) // checks if internal array wasn't modified\n }\n const res = this.spliceItemsIntoValues_(index, deleteCount, newItems)\n\n if (deleteCount !== 0 || newItems.length !== 0)\n this.notifyArraySplice_(index, newItems, res)\n return this.dehanceValues_(res)\n }\n\n spliceItemsIntoValues_(index: number, deleteCount: number, newItems: any[]): any[] {\n if (newItems.length < MAX_SPLICE_SIZE) {\n return this.values_.splice(index, deleteCount, ...newItems)\n } else {\n const res = this.values_.slice(index, index + deleteCount)\n let oldItems = this.values_.slice(index + deleteCount)\n this.values_.length = index + newItems.length - deleteCount\n for (let i = 0; i < newItems.length; i++) this.values_[index + i] = newItems[i]\n for (let i = 0; i < oldItems.length; i++)\n this.values_[index + newItems.length + i] = oldItems[i]\n return res\n }\n }\n\n notifyArrayChildUpdate_(index: number, newValue: any, oldValue: any) {\n const notifySpy = !this.owned_ && isSpyEnabled()\n const notify = hasListeners(this)\n const change: IArrayDidChange | null =\n notify || notifySpy\n ? ({\n observableKind: \"array\",\n object: this.proxy_,\n type: UPDATE,\n debugObjectName: this.atom_.name_,\n index,\n newValue,\n oldValue\n } as const)\n : null\n\n // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n // cause any runtime overhead in development mode without NODE_ENV set, unless spying is enabled\n if (__DEV__ && notifySpy) spyReportStart(change!)\n this.atom_.reportChanged()\n if (notify) notifyListeners(this, change)\n if (__DEV__ && notifySpy) spyReportEnd()\n }\n\n notifyArraySplice_(index: number, added: any[], removed: any[]) {\n const notifySpy = !this.owned_ && isSpyEnabled()\n const notify = hasListeners(this)\n const change: IArraySplice | null =\n notify || notifySpy\n ? ({\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: SPLICE,\n index,\n removed,\n added,\n removedCount: removed.length,\n addedCount: added.length\n } as const)\n : null\n\n if (__DEV__ && notifySpy) spyReportStart(change!)\n this.atom_.reportChanged()\n // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n if (notify) notifyListeners(this, change)\n if (__DEV__ && notifySpy) spyReportEnd()\n }\n\n get_(index: number): any | undefined {\n if (index < this.values_.length) {\n this.atom_.reportObserved()\n return this.dehanceValue_(this.values_[index])\n }\n console.warn(\n __DEV__\n ? `[mobx] Out of bounds read: ${index}`\n : `[mobx.array] Attempt to read an array index (${index}) that is out of bounds (${this.values_.length}). Please check length first. Out of bound indices will not be tracked by MobX`\n )\n }\n\n set_(index: number, newValue: any) {\n const values = this.values_\n if (index < values.length) {\n // update at index in range\n checkIfStateModificationsAreAllowed(this.atom_)\n const oldValue = values[index]\n if (hasInterceptors(this)) {\n const change = interceptChange>(this as any, {\n type: UPDATE,\n object: this.proxy_ as any, // since \"this\" is the real array we need to pass its proxy\n index,\n newValue\n })\n if (!change) return\n newValue = change.newValue\n }\n newValue = this.enhancer_(newValue, oldValue)\n const changed = newValue !== oldValue\n if (changed) {\n values[index] = newValue\n this.notifyArrayChildUpdate_(index, newValue, oldValue)\n }\n } else if (index === values.length) {\n // add a new item\n this.spliceWithArray_(index, 0, [newValue])\n } else {\n // out of bounds\n die(17, index, values.length)\n }\n }\n}\n\nexport function createObservableArray(\n initialValues: T[] | undefined,\n enhancer: IEnhancer,\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n owned = false\n): IObservableArray {\n assertProxies()\n const adm = new ObservableArrayAdministration(name, enhancer, owned, false)\n addHiddenFinalProp(adm.values_, $mobx, adm)\n const proxy = new Proxy(adm.values_, arrayTraps) as any\n adm.proxy_ = proxy\n if (initialValues && initialValues.length) {\n const prev = allowStateChangesStart(true)\n adm.spliceWithArray_(0, 0, initialValues)\n allowStateChangesEnd(prev)\n }\n return proxy\n}\n\n// eslint-disable-next-line\nexport var arrayExtensions = {\n clear(): any[] {\n return this.splice(0)\n },\n\n replace(newItems: any[]) {\n const adm: ObservableArrayAdministration = this[$mobx]\n return adm.spliceWithArray_(0, adm.values_.length, newItems)\n },\n\n // Used by JSON.stringify\n toJSON(): any[] {\n return this.slice()\n },\n\n /*\n * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\n * since these functions alter the inner structure of the array, the have side effects.\n * Because the have side effects, they should not be used in computed function,\n * and for that reason the do not call dependencyState.notifyObserved\n */\n splice(index: number, deleteCount?: number, ...newItems: any[]): any[] {\n const adm: ObservableArrayAdministration = this[$mobx]\n switch (arguments.length) {\n case 0:\n return []\n case 1:\n return adm.spliceWithArray_(index)\n case 2:\n return adm.spliceWithArray_(index, deleteCount)\n }\n return adm.spliceWithArray_(index, deleteCount, newItems)\n },\n\n spliceWithArray(index: number, deleteCount?: number, newItems?: any[]): any[] {\n return (this[$mobx] as ObservableArrayAdministration).spliceWithArray_(\n index,\n deleteCount,\n newItems\n )\n },\n\n push(...items: any[]): number {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.spliceWithArray_(adm.values_.length, 0, items)\n return adm.values_.length\n },\n\n pop() {\n return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0]\n },\n\n shift() {\n return this.splice(0, 1)[0]\n },\n\n unshift(...items: any[]): number {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.spliceWithArray_(0, 0, items)\n return adm.values_.length\n },\n\n reverse(): any[] {\n // reverse by default mutates in place before returning the result\n // which makes it both a 'derivation' and a 'mutation'.\n if (globalState.trackingDerivation) {\n die(37, \"reverse\")\n }\n this.replace(this.slice().reverse())\n return this\n },\n\n sort(): any[] {\n // sort by default mutates in place before returning the result\n // which goes against all good practices. Let's not change the array in place!\n if (globalState.trackingDerivation) {\n die(37, \"sort\")\n }\n const copy = this.slice()\n copy.sort.apply(copy, arguments)\n this.replace(copy)\n return this\n },\n\n remove(value: any): boolean {\n const adm: ObservableArrayAdministration = this[$mobx]\n const idx = adm.dehanceValues_(adm.values_).indexOf(value)\n if (idx > -1) {\n this.splice(idx, 1)\n return true\n }\n return false\n }\n}\n\n/**\n * Wrap function from prototype\n * Without this, everything works as well, but this works\n * faster as everything works on unproxied values\n */\naddArrayExtension(\"concat\", simpleFunc)\naddArrayExtension(\"flat\", simpleFunc)\naddArrayExtension(\"includes\", simpleFunc)\naddArrayExtension(\"indexOf\", simpleFunc)\naddArrayExtension(\"join\", simpleFunc)\naddArrayExtension(\"lastIndexOf\", simpleFunc)\naddArrayExtension(\"slice\", simpleFunc)\naddArrayExtension(\"toString\", simpleFunc)\naddArrayExtension(\"toLocaleString\", simpleFunc)\n// map\naddArrayExtension(\"every\", mapLikeFunc)\naddArrayExtension(\"filter\", mapLikeFunc)\naddArrayExtension(\"find\", mapLikeFunc)\naddArrayExtension(\"findIndex\", mapLikeFunc)\naddArrayExtension(\"flatMap\", mapLikeFunc)\naddArrayExtension(\"forEach\", mapLikeFunc)\naddArrayExtension(\"map\", mapLikeFunc)\naddArrayExtension(\"some\", mapLikeFunc)\n// reduce\naddArrayExtension(\"reduce\", reduceLikeFunc)\naddArrayExtension(\"reduceRight\", reduceLikeFunc)\n\nfunction addArrayExtension(funcName, funcFactory) {\n if (typeof Array.prototype[funcName] === \"function\") {\n arrayExtensions[funcName] = funcFactory(funcName)\n }\n}\n\n// Report and delegate to dehanced array\nfunction simpleFunc(funcName) {\n return function () {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n return dehancedValues[funcName].apply(dehancedValues, arguments)\n }\n}\n\n// Make sure callbacks recieve correct array arg #2326\nfunction mapLikeFunc(funcName) {\n return function (callback, thisArg) {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n return dehancedValues[funcName]((element, index) => {\n return callback.call(thisArg, element, index, this)\n })\n }\n}\n\n// Make sure callbacks recieve correct array arg #2326\nfunction reduceLikeFunc(funcName) {\n return function () {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n // #2432 - reduce behavior depends on arguments.length\n const callback = arguments[0]\n arguments[0] = (accumulator, currentValue, index) => {\n return callback(accumulator, currentValue, index, this)\n }\n return dehancedValues[funcName].apply(dehancedValues, arguments)\n }\n}\n\nconst isObservableArrayAdministration = createInstanceofPredicate(\n \"ObservableArrayAdministration\",\n ObservableArrayAdministration\n)\n\nexport function isObservableArray(thing): thing is IObservableArray {\n return isObject(thing) && isObservableArrayAdministration(thing[$mobx])\n}\n","import {\n $mobx,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n Lambda,\n ObservableValue,\n checkIfStateModificationsAreAllowed,\n createAtom,\n createInstanceofPredicate,\n deepEnhancer,\n getNextId,\n getPlainObjectKeys,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isES6Map,\n isPlainObject,\n isSpyEnabled,\n makeIterable,\n notifyListeners,\n referenceEnhancer,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n stringifyKey,\n transaction,\n untracked,\n onBecomeUnobserved,\n globalState,\n die,\n isFunction,\n UPDATE,\n IAtom\n} from \"../internal\"\n\nexport interface IKeyValueMap {\n [key: string]: V\n}\n\nexport type IMapEntry = [K, V]\nexport type IMapEntries = IMapEntry[]\n\nexport type IMapDidChange = { observableKind: \"map\"; debugObjectName: string } & (\n | {\n object: ObservableMap\n name: K // actual the key or index, but this is based on the ancient .observe proposal for consistency\n type: \"update\"\n newValue: V\n oldValue: V\n }\n | {\n object: ObservableMap\n name: K\n type: \"add\"\n newValue: V\n }\n | {\n object: ObservableMap\n name: K\n type: \"delete\"\n oldValue: V\n }\n)\n\nexport interface IMapWillChange {\n object: ObservableMap\n type: \"update\" | \"add\" | \"delete\"\n name: K\n newValue?: V\n}\n\nconst ObservableMapMarker = {}\n\nexport const ADD = \"add\"\nexport const DELETE = \"delete\"\n\nexport type IObservableMapInitialValues =\n | IMapEntries\n | IKeyValueMap\n | Map\n\n// just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\nexport class ObservableMap\n implements Map, IInterceptable>, IListenable {\n [$mobx] = ObservableMapMarker\n data_: Map>\n hasMap_: Map> // hasMap, not hashMap >-).\n keysAtom_: IAtom\n interceptors_\n changeListeners_\n dehancer: any\n\n constructor(\n initialData?: IObservableMapInitialValues,\n public enhancer_: IEnhancer = deepEnhancer,\n public name_ = __DEV__ ? \"ObservableMap@\" + getNextId() : \"ObservableMap\"\n ) {\n if (!isFunction(Map)) {\n die(18)\n }\n this.keysAtom_ = createAtom(__DEV__ ? `${this.name_}.keys()` : \"ObservableMap.keys()\")\n this.data_ = new Map()\n this.hasMap_ = new Map()\n this.merge(initialData)\n }\n\n private has_(key: K): boolean {\n return this.data_.has(key)\n }\n\n has(key: K): boolean {\n if (!globalState.trackingDerivation) return this.has_(key)\n\n let entry = this.hasMap_.get(key)\n if (!entry) {\n const newEntry = (entry = new ObservableValue(\n this.has_(key),\n referenceEnhancer,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableMap.key?\",\n false\n ))\n this.hasMap_.set(key, newEntry)\n onBecomeUnobserved(newEntry, () => this.hasMap_.delete(key))\n }\n\n return entry.get()\n }\n\n set(key: K, value: V) {\n const hasKey = this.has_(key)\n if (hasInterceptors(this)) {\n const change = interceptChange>(this, {\n type: hasKey ? UPDATE : ADD,\n object: this,\n newValue: value,\n name: key\n })\n if (!change) return this\n value = change.newValue!\n }\n if (hasKey) {\n this.updateValue_(key, value)\n } else {\n this.addValue_(key, value)\n }\n return this\n }\n\n delete(key: K): boolean {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n if (hasInterceptors(this)) {\n const change = interceptChange>(this, {\n type: DELETE,\n object: this,\n name: key\n })\n if (!change) return false\n }\n if (this.has_(key)) {\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: (this.data_.get(key)).value_,\n name: key\n }\n : null\n\n if (__DEV__ && notifySpy) spyReportStart(change!)\n transaction(() => {\n this.keysAtom_.reportChanged()\n this.hasMap_.get(key)?.setNewValue_(false)\n const observable = this.data_.get(key)!\n observable.setNewValue_(undefined as any)\n this.data_.delete(key)\n })\n if (notify) notifyListeners(this, change)\n if (__DEV__ && notifySpy) spyReportEnd()\n return true\n }\n return false\n }\n\n private updateValue_(key: K, newValue: V | undefined) {\n const observable = this.data_.get(key)!\n newValue = (observable as any).prepareNewValue_(newValue) as V\n if (newValue !== globalState.UNCHANGED) {\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n oldValue: (observable as any).value_,\n name: key,\n newValue\n }\n : null\n if (__DEV__ && notifySpy) spyReportStart(change!)\n observable.setNewValue_(newValue as V)\n if (notify) notifyListeners(this, change)\n if (__DEV__ && notifySpy) spyReportEnd()\n }\n }\n\n private addValue_(key: K, newValue: V) {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n transaction(() => {\n const observable = new ObservableValue(\n newValue,\n this.enhancer_,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}` : \"ObservableMap.key\",\n false\n )\n this.data_.set(key, observable)\n newValue = (observable as any).value_ // value might have been changed\n this.hasMap_.get(key)?.setNewValue_(true)\n this.keysAtom_.reportChanged()\n })\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n name: key,\n newValue\n }\n : null\n if (__DEV__ && notifySpy) spyReportStart(change!)\n if (notify) notifyListeners(this, change)\n if (__DEV__ && notifySpy) spyReportEnd()\n }\n\n get(key: K): V | undefined {\n if (this.has(key)) return this.dehanceValue_(this.data_.get(key)!.get())\n return this.dehanceValue_(undefined)\n }\n\n private dehanceValue_(value: X): X {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n keys(): IterableIterator {\n this.keysAtom_.reportObserved()\n return this.data_.keys()\n }\n\n values(): IterableIterator {\n const self = this\n const keys = this.keys()\n return makeIterable({\n next() {\n const { done, value } = keys.next()\n return {\n done,\n value: done ? (undefined as any) : self.get(value)\n }\n }\n })\n }\n\n entries(): IterableIterator> {\n const self = this\n const keys = this.keys()\n return makeIterable({\n next() {\n const { done, value } = keys.next()\n return {\n done,\n value: done ? (undefined as any) : ([value, self.get(value)!] as [K, V])\n }\n }\n })\n }\n\n [Symbol.iterator]() {\n return this.entries()\n }\n\n forEach(callback: (value: V, key: K, object: Map) => void, thisArg?) {\n for (const [key, value] of this) callback.call(thisArg, value, key, this)\n }\n\n /** Merge another object into this object, returns this. */\n merge(other: ObservableMap | IKeyValueMap | any): ObservableMap {\n if (isObservableMap(other)) {\n other = new Map(other)\n }\n transaction(() => {\n if (isPlainObject(other))\n getPlainObjectKeys(other).forEach((key: any) =>\n this.set((key as any) as K, other[key])\n )\n else if (Array.isArray(other)) other.forEach(([key, value]) => this.set(key, value))\n else if (isES6Map(other)) {\n if (other.constructor !== Map) die(19, other)\n other.forEach((value, key) => this.set(key, value))\n } else if (other !== null && other !== undefined) die(20, other)\n })\n return this\n }\n\n clear() {\n transaction(() => {\n untracked(() => {\n for (const key of this.keys()) this.delete(key)\n })\n })\n }\n\n replace(values: ObservableMap | IKeyValueMap | any): ObservableMap {\n // Implementation requirements:\n // - respect ordering of replacement map\n // - allow interceptors to run and potentially prevent individual operations\n // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n // - note that result map may differ from replacement map due to the interceptors\n transaction(() => {\n // Convert to map so we can do quick key lookups\n const replacementMap = convertToMap(values)\n const orderedData = new Map()\n // Used for optimization\n let keysReportChangedCalled = false\n // Delete keys that don't exist in replacement map\n // if the key deletion is prevented by interceptor\n // add entry at the beginning of the result map\n for (const key of this.data_.keys()) {\n // Concurrently iterating/deleting keys\n // iterator should handle this correctly\n if (!replacementMap.has(key)) {\n const deleted = this.delete(key)\n // Was the key removed?\n if (deleted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true\n } else {\n // Delete prevented by interceptor\n const value = this.data_.get(key)\n orderedData.set(key, value)\n }\n }\n }\n // Merge entries\n for (const [key, value] of replacementMap.entries()) {\n // We will want to know whether a new key is added\n const keyExisted = this.data_.has(key)\n // Add or update value\n this.set(key, value)\n // The addition could have been prevent by interceptor\n if (this.data_.has(key)) {\n // The update could have been prevented by interceptor\n // and also we want to preserve existing values\n // so use value from _data map (instead of replacement map)\n const value = this.data_.get(key)\n orderedData.set(key, value)\n // Was a new key added?\n if (!keyExisted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true\n }\n }\n }\n // Check for possible key order change\n if (!keysReportChangedCalled) {\n if (this.data_.size !== orderedData.size) {\n // If size differs, keys are definitely modified\n this.keysAtom_.reportChanged()\n } else {\n const iter1 = this.data_.keys()\n const iter2 = orderedData.keys()\n let next1 = iter1.next()\n let next2 = iter2.next()\n while (!next1.done) {\n if (next1.value !== next2.value) {\n this.keysAtom_.reportChanged()\n break\n }\n next1 = iter1.next()\n next2 = iter2.next()\n }\n }\n }\n // Use correctly ordered map\n this.data_ = orderedData\n })\n return this\n }\n\n get size(): number {\n this.keysAtom_.reportObserved()\n return this.data_.size\n }\n\n toString(): string {\n return \"[object ObservableMap]\"\n }\n\n toJSON(): [K, V][] {\n return Array.from(this)\n }\n\n get [Symbol.toStringTag]() {\n return \"Map\"\n }\n\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n observe_(listener: (changes: IMapDidChange) => void, fireImmediately?: boolean): Lambda {\n if (__DEV__ && fireImmediately === true)\n die(\"`observe` doesn't support fireImmediately=true in combination with maps.\")\n return registerListener(this, listener)\n }\n\n intercept_(handler: IInterceptor>): Lambda {\n return registerInterceptor(this, handler)\n }\n}\n\n// eslint-disable-next-line\nexport var isObservableMap = createInstanceofPredicate(\"ObservableMap\", ObservableMap) as (\n thing: any\n) => thing is ObservableMap\n\nfunction convertToMap(dataStructure: any): Map {\n if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n return dataStructure\n } else if (Array.isArray(dataStructure)) {\n return new Map(dataStructure)\n } else if (isPlainObject(dataStructure)) {\n const map = new Map()\n for (const key in dataStructure) {\n map.set(key, dataStructure[key])\n }\n return map\n } else {\n return die(21, dataStructure)\n }\n}\n","import {\n $mobx,\n createAtom,\n deepEnhancer,\n getNextId,\n IEnhancer,\n isSpyEnabled,\n hasListeners,\n IListenable,\n registerListener,\n Lambda,\n spyReportStart,\n notifyListeners,\n spyReportEnd,\n createInstanceofPredicate,\n hasInterceptors,\n interceptChange,\n IInterceptable,\n IInterceptor,\n registerInterceptor,\n checkIfStateModificationsAreAllowed,\n untracked,\n makeIterable,\n transaction,\n isES6Set,\n IAtom,\n DELETE,\n ADD,\n die,\n isFunction\n} from \"../internal\"\n\nconst ObservableSetMarker = {}\n\nexport type IObservableSetInitialValues = Set | readonly T[]\n\nexport type ISetDidChange =\n | {\n object: ObservableSet\n observableKind: \"set\"\n debugObjectName: string\n type: \"add\"\n newValue: T\n }\n | {\n object: ObservableSet\n observableKind: \"set\"\n debugObjectName: string\n type: \"delete\"\n oldValue: T\n }\n\nexport type ISetWillChange =\n | {\n type: \"delete\"\n object: ObservableSet\n oldValue: T\n }\n | {\n type: \"add\"\n object: ObservableSet\n newValue: T\n }\n\nexport class ObservableSet implements Set, IInterceptable, IListenable {\n [$mobx] = ObservableSetMarker\n private data_: Set = new Set()\n private atom_: IAtom\n changeListeners_\n interceptors_\n dehancer: any\n enhancer_: (newV: any, oldV: any | undefined) => any\n\n constructor(\n initialData?: IObservableSetInitialValues,\n enhancer: IEnhancer = deepEnhancer,\n public name_ = __DEV__ ? \"ObservableSet@\" + getNextId() : \"ObservableSet\"\n ) {\n if (!isFunction(Set)) {\n die(22)\n }\n this.atom_ = createAtom(this.name_)\n this.enhancer_ = (newV, oldV) => enhancer(newV, oldV, name_)\n if (initialData) {\n this.replace(initialData)\n }\n }\n\n private dehanceValue_(value: X): X {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n clear() {\n transaction(() => {\n untracked(() => {\n for (const value of this.data_.values()) this.delete(value)\n })\n })\n }\n\n forEach(callbackFn: (value: T, value2: T, set: Set) => void, thisArg?: any) {\n for (const value of this) {\n callbackFn.call(thisArg, value, value, this)\n }\n }\n\n get size() {\n this.atom_.reportObserved()\n return this.data_.size\n }\n\n add(value: T) {\n checkIfStateModificationsAreAllowed(this.atom_)\n if (hasInterceptors(this)) {\n const change = interceptChange>(this, {\n type: ADD,\n object: this,\n newValue: value\n })\n if (!change) return this\n // ideally, value = change.value would be done here, so that values can be\n // changed by interceptor. Same applies for other Set and Map api's.\n }\n if (!this.has(value)) {\n transaction(() => {\n this.data_.add(this.enhancer_(value, undefined))\n this.atom_.reportChanged()\n })\n const notifySpy = __DEV__ && isSpyEnabled()\n const notify = hasListeners(this)\n const change =\n notify || notifySpy\n ? >{\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n newValue: value\n }\n : null\n if (notifySpy && __DEV__) spyReportStart(change!)\n if (notify) notifyListeners(this, change)\n if (notifySpy && __DEV__) spyReportEnd()\n }\n\n return this\n }\n\n delete(value: any) {\n if (hasInterceptors(this)) {\n const change = interceptChange>(this, {\n type: DELETE,\n object: this,\n oldValue: value\n })\n if (!change) return false\n }\n if (this.has(value)) {\n const notifySpy = __DEV__ && isSpyEnabled()\n const notify = hasListeners(this)\n const change =\n notify || notifySpy\n ? >{\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: value\n }\n : null\n\n if (notifySpy && __DEV__) spyReportStart(change!)\n transaction(() => {\n this.atom_.reportChanged()\n this.data_.delete(value)\n })\n if (notify) notifyListeners(this, change)\n if (notifySpy && __DEV__) spyReportEnd()\n return true\n }\n return false\n }\n\n has(value: any) {\n this.atom_.reportObserved()\n return this.data_.has(this.dehanceValue_(value))\n }\n\n entries() {\n let nextIndex = 0\n const keys = Array.from(this.keys())\n const values = Array.from(this.values())\n return makeIterable<[T, T]>({\n next() {\n const index = nextIndex\n nextIndex += 1\n return index < values.length\n ? { value: [keys[index], values[index]], done: false }\n : { done: true }\n }\n } as any)\n }\n\n keys(): IterableIterator {\n return this.values()\n }\n\n values(): IterableIterator {\n this.atom_.reportObserved()\n const self = this\n let nextIndex = 0\n const observableValues = Array.from(this.data_.values())\n return makeIterable({\n next() {\n return nextIndex < observableValues.length\n ? { value: self.dehanceValue_(observableValues[nextIndex++]), done: false }\n : { done: true }\n }\n } as any)\n }\n\n replace(other: ObservableSet | IObservableSetInitialValues): ObservableSet {\n if (isObservableSet(other)) {\n other = new Set(other)\n }\n\n transaction(() => {\n if (Array.isArray(other)) {\n this.clear()\n other.forEach(value => this.add(value))\n } else if (isES6Set(other)) {\n this.clear()\n other.forEach(value => this.add(value))\n } else if (other !== null && other !== undefined) {\n die(\"Cannot initialize set from \" + other)\n }\n })\n\n return this\n }\n observe_(listener: (changes: ISetDidChange) => void, fireImmediately?: boolean): Lambda {\n // ... 'fireImmediately' could also be true?\n if (__DEV__ && fireImmediately === true)\n die(\"`observe` doesn't support fireImmediately=true in combination with sets.\")\n return registerListener(this, listener)\n }\n\n intercept_(handler: IInterceptor>): Lambda {\n return registerInterceptor(this, handler)\n }\n\n toJSON(): T[] {\n return Array.from(this)\n }\n\n toString(): string {\n return \"[object ObservableSet]\"\n }\n\n [Symbol.iterator]() {\n return this.values()\n }\n\n get [Symbol.toStringTag]() {\n return \"Set\"\n }\n}\n\n// eslint-disable-next-line\nexport var isObservableSet = createInstanceofPredicate(\"ObservableSet\", ObservableSet) as (\n thing: any\n) => thing is ObservableSet\n","import {\n CreateObservableOptions,\n getAnnotationFromOptions,\n propagateChanged,\n isAnnotation,\n $mobx,\n Atom,\n Annotation,\n ComputedValue,\n IAtom,\n IComputedValueOptions,\n IEnhancer,\n IInterceptable,\n IListenable,\n Lambda,\n ObservableValue,\n addHiddenProp,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isObject,\n isPlainObject,\n isSpyEnabled,\n notifyListeners,\n referenceEnhancer,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n startBatch,\n stringifyKey,\n globalState,\n ADD,\n UPDATE,\n die,\n hasProp,\n getDescriptor,\n storedAnnotationsSymbol,\n ownKeys,\n isOverride,\n defineProperty,\n autoAnnotation,\n getAdministration,\n getDebugName,\n objectPrototype,\n MakeResult\n} from \"../internal\"\n\nconst descriptorCache = Object.create(null)\n\nexport type IObjectDidChange = {\n observableKind: \"object\"\n name: PropertyKey\n object: T\n debugObjectName: string\n} & (\n | {\n type: \"add\"\n newValue: any\n }\n | {\n type: \"update\"\n oldValue: any\n newValue: any\n }\n | {\n type: \"remove\"\n oldValue: any\n }\n)\n\nexport type IObjectWillChange =\n | {\n object: T\n type: \"update\" | \"add\"\n name: PropertyKey\n newValue: any\n }\n | {\n object: T\n type: \"remove\"\n name: PropertyKey\n }\n\nconst REMOVE = \"remove\"\n\nexport class ObservableObjectAdministration\n implements IInterceptable, IListenable {\n keysAtom_: IAtom\n changeListeners_\n interceptors_\n proxy_: any\n isPlainObject_: boolean\n appliedAnnotations_?: object\n private pendingKeys_: undefined | Map>\n\n constructor(\n public target_: any,\n public values_ = new Map | ComputedValue>(),\n public name_: string,\n // Used anytime annotation is not explicitely provided\n public defaultAnnotation_: Annotation = autoAnnotation\n ) {\n this.keysAtom_ = new Atom(__DEV__ ? `${this.name_}.keys` : \"ObservableObject.keys\")\n // Optimization: we use this frequently\n this.isPlainObject_ = isPlainObject(this.target_)\n if (__DEV__ && !isAnnotation(this.defaultAnnotation_)) {\n die(`defaultAnnotation must be valid annotation`)\n }\n if (__DEV__) {\n // Prepare structure for tracking which fields were already annotated\n this.appliedAnnotations_ = {}\n }\n }\n\n getObservablePropValue_(key: PropertyKey): any {\n return this.values_.get(key)!.get()\n }\n\n setObservablePropValue_(key: PropertyKey, newValue): boolean | null {\n const observable = this.values_.get(key)\n if (observable instanceof ComputedValue) {\n observable.set(newValue)\n return true\n }\n\n // intercept\n if (hasInterceptors(this)) {\n const change = interceptChange(this, {\n type: UPDATE,\n object: this.proxy_ || this.target_,\n name: key,\n newValue\n })\n if (!change) return null\n newValue = (change as any).newValue\n }\n newValue = (observable as any).prepareNewValue_(newValue)\n\n // notify spy & observers\n if (newValue !== globalState.UNCHANGED) {\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n const change: IObjectDidChange | null =\n notify || notifySpy\n ? {\n type: UPDATE,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n oldValue: (observable as any).value_,\n name: key,\n newValue\n }\n : null\n\n if (__DEV__ && notifySpy) spyReportStart(change!)\n ;(observable as ObservableValue).setNewValue_(newValue)\n if (notify) notifyListeners(this, change)\n if (__DEV__ && notifySpy) spyReportEnd()\n }\n return true\n }\n\n get_(key: PropertyKey): any {\n if (globalState.trackingDerivation && !hasProp(this.target_, key)) {\n // Key doesn't exist yet, subscribe for it in case it's added later\n this.has_(key)\n }\n return this.target_[key]\n }\n\n /**\n * @param {PropertyKey} key\n * @param {any} value\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n set_(key: PropertyKey, value: any, proxyTrap: boolean = false): boolean | null {\n // Don't use .has(key) - we care about own\n if (hasProp(this.target_, key)) {\n // Existing prop\n if (this.values_.has(key)) {\n // Observable (can be intercepted)\n return this.setObservablePropValue_(key, value)\n } else if (proxyTrap) {\n // Non-observable - proxy\n return Reflect.set(this.target_, key, value)\n } else {\n // Non-observable\n this.target_[key] = value\n return true\n }\n } else {\n // New prop\n return this.extend_(\n key,\n { value, enumerable: true, writable: true, configurable: true },\n this.defaultAnnotation_,\n proxyTrap\n )\n }\n }\n\n // Trap for \"in\"\n has_(key: PropertyKey): boolean {\n if (!globalState.trackingDerivation) {\n // Skip key subscription outside derivation\n return key in this.target_\n }\n this.pendingKeys_ ||= new Map()\n let entry = this.pendingKeys_.get(key)\n if (!entry) {\n entry = new ObservableValue(\n key in this.target_,\n referenceEnhancer,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableObject.key?\",\n false\n )\n this.pendingKeys_.set(key, entry)\n }\n return entry.get()\n }\n\n /**\n * @param {PropertyKey} key\n * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\n */\n make_(key: PropertyKey, annotation: Annotation | boolean): void {\n if (annotation === true) {\n annotation = this.defaultAnnotation_\n }\n if (annotation === false) {\n return\n }\n assertAnnotable(this, annotation, key)\n if (!(key in this.target_)) {\n // Throw on missing key, except for decorators:\n // Decorator annotations are collected from whole prototype chain.\n // When called from super() some props may not exist yet.\n // However we don't have to worry about missing prop,\n // because the decorator must have been applied to something.\n if (this.target_[storedAnnotationsSymbol]?.[key]) {\n return // will be annotated by subclass constructor\n } else {\n die(1, annotation.annotationType_, `${this.name_}.${key.toString()}`)\n }\n }\n let source = this.target_\n while (source && source !== objectPrototype) {\n const descriptor = getDescriptor(source, key)\n if (descriptor) {\n const outcome = annotation.make_(this, key, descriptor, source)\n if (outcome === MakeResult.Cancel) return\n if (outcome === MakeResult.Break) break\n }\n source = Object.getPrototypeOf(source)\n }\n recordAnnotationApplied(this, annotation, key)\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n extend_(\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n annotation: Annotation | boolean,\n proxyTrap: boolean = false\n ): boolean | null {\n if (annotation === true) {\n annotation = this.defaultAnnotation_\n }\n if (annotation === false) {\n return this.defineProperty_(key, descriptor, proxyTrap)\n }\n assertAnnotable(this, annotation, key)\n const outcome = annotation.extend_(this, key, descriptor, proxyTrap)\n if (outcome) {\n recordAnnotationApplied(this, annotation, key)\n }\n return outcome\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n defineProperty_(\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean = false\n ): boolean | null {\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: descriptor.value\n })\n if (!change) return null\n const { newValue } = change as any\n if (descriptor.value !== newValue) {\n descriptor = {\n ...descriptor,\n value: newValue\n }\n }\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n // Notify\n this.notifyPropertyAddition_(key, descriptor.value)\n } finally {\n endBatch()\n }\n return true\n }\n\n // If original descriptor becomes relevant, move this to annotation directly\n defineObservableProperty_(\n key: PropertyKey,\n value: any,\n enhancer: IEnhancer,\n proxyTrap: boolean = false\n ): boolean | null {\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: value\n })\n if (!change) return null\n value = (change as any).newValue\n }\n\n const cachedDescriptor = getCachedObservablePropDescriptor(key)\n const descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: true,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n const observable = new ObservableValue(\n value,\n enhancer,\n __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\",\n false\n )\n\n this.values_.set(key, observable)\n\n // Notify (value possibly changed by ObservableValue)\n this.notifyPropertyAddition_(key, observable.value_)\n } finally {\n endBatch()\n }\n return true\n }\n\n // If original descriptor becomes relevant, move this to annotation directly\n defineComputedProperty_(\n key: PropertyKey,\n options: IComputedValueOptions,\n proxyTrap: boolean = false\n ): boolean | null {\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: undefined\n })\n if (!change) return null\n }\n options.name ||= __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\"\n options.context = this.proxy_ || this.target_\n const cachedDescriptor = getCachedObservablePropDescriptor(key)\n const descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: false,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n this.values_.set(key, new ComputedValue(options))\n\n // Notify\n this.notifyPropertyAddition_(key, undefined)\n } finally {\n endBatch()\n }\n return true\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n delete_(key: PropertyKey, proxyTrap: boolean = false): boolean | null {\n // No such prop\n if (!hasProp(this.target_, key)) {\n return true\n }\n\n // Intercept\n if (hasInterceptors(this)) {\n const change = interceptChange(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: REMOVE\n })\n // Cancelled\n if (!change) return null\n }\n\n // Delete\n try {\n startBatch()\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n const observable = this.values_.get(key)\n // Value needed for spies/listeners\n let value = undefined\n // Optimization: don't pull the value unless we will need it\n if (!observable && (notify || notifySpy)) {\n value = getDescriptor(this.target_, key)?.value\n }\n // delete prop (do first, may fail)\n if (proxyTrap) {\n if (!Reflect.deleteProperty(this.target_, key)) {\n return false\n }\n } else {\n delete this.target_[key]\n }\n // Allow re-annotating this field\n if (__DEV__) {\n delete this.appliedAnnotations_![key]\n }\n // Clear observable\n if (observable) {\n this.values_.delete(key)\n // for computed, value is undefined\n if (observable instanceof ObservableValue) {\n value = observable.value_\n }\n // Notify: autorun(() => obj[key]), see #1796\n propagateChanged(observable)\n }\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged()\n\n // Notify \"has\" observers\n // \"in\" as it may still exist in proto\n this.pendingKeys_?.get(key)?.set(key in this.target_)\n\n // Notify spies/listeners\n if (notify || notifySpy) {\n const change: IObjectDidChange = {\n type: REMOVE,\n observableKind: \"object\",\n object: this.proxy_ || this.target_,\n debugObjectName: this.name_,\n oldValue: value,\n name: key\n }\n if (__DEV__ && notifySpy) spyReportStart(change!)\n if (notify) notifyListeners(this, change)\n if (__DEV__ && notifySpy) spyReportEnd()\n }\n } finally {\n endBatch()\n }\n return true\n }\n\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n observe_(callback: (changes: IObjectDidChange) => void, fireImmediately?: boolean): Lambda {\n if (__DEV__ && fireImmediately === true)\n die(\"`observe` doesn't support the fire immediately property for observable objects.\")\n return registerListener(this, callback)\n }\n\n intercept_(handler): Lambda {\n return registerInterceptor(this, handler)\n }\n\n notifyPropertyAddition_(key: PropertyKey, value: any) {\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n if (notify || notifySpy) {\n const change: IObjectDidChange | null =\n notify || notifySpy\n ? ({\n type: ADD,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: value\n } as const)\n : null\n\n if (__DEV__ && notifySpy) spyReportStart(change!)\n if (notify) notifyListeners(this, change)\n if (__DEV__ && notifySpy) spyReportEnd()\n }\n\n this.pendingKeys_?.get(key)?.set(true)\n\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged()\n }\n\n ownKeys_(): PropertyKey[] {\n this.keysAtom_.reportObserved()\n return ownKeys(this.target_)\n }\n\n keys_(): PropertyKey[] {\n // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n // We choose to over-report in Object.keys(object), because:\n // - typically it's used with simple data objects\n // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n this.keysAtom_.reportObserved()\n return Object.keys(this.target_)\n }\n}\n\nexport interface IIsObservableObject {\n $mobx: ObservableObjectAdministration\n}\n\nexport function asObservableObject(\n target: any,\n options?: CreateObservableOptions\n): IIsObservableObject {\n if (__DEV__ && options && isObservableObject(target)) {\n die(`Options can't be provided for already observable objects.`)\n }\n\n if (hasProp(target, $mobx)) {\n if (__DEV__ && !(getAdministration(target) instanceof ObservableObjectAdministration)) {\n die(\n `Cannot convert '${getDebugName(target)}' into observable object:` +\n `\\nThe target is already observable of different type.` +\n `\\nExtending builtins is not supported.`\n )\n }\n return target\n }\n\n if (__DEV__ && !Object.isExtensible(target))\n die(\"Cannot make the designated object observable; it is not extensible\")\n\n const name =\n options?.name ??\n (__DEV__\n ? `${\n isPlainObject(target) ? \"ObservableObject\" : target.constructor.name\n }@${getNextId()}`\n : \"ObservableObject\")\n\n const adm = new ObservableObjectAdministration(\n target,\n new Map(),\n String(name),\n getAnnotationFromOptions(options)\n )\n\n addHiddenProp(target, $mobx, adm)\n\n return target\n}\n\nconst isObservableObjectAdministration = createInstanceofPredicate(\n \"ObservableObjectAdministration\",\n ObservableObjectAdministration\n)\n\nfunction getCachedObservablePropDescriptor(key) {\n return (\n descriptorCache[key] ||\n (descriptorCache[key] = {\n get() {\n return this[$mobx].getObservablePropValue_(key)\n },\n set(value) {\n return this[$mobx].setObservablePropValue_(key, value)\n }\n })\n )\n}\n\nexport function isObservableObject(thing: any): boolean {\n if (isObject(thing)) {\n return isObservableObjectAdministration((thing as any)[$mobx])\n }\n return false\n}\n\nexport function recordAnnotationApplied(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey\n) {\n if (__DEV__) {\n adm.appliedAnnotations_![key] = annotation\n }\n // Remove applied decorator annotation so we don't try to apply it again in subclass constructor\n delete adm.target_[storedAnnotationsSymbol]?.[key]\n}\n\nfunction assertAnnotable(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey\n) {\n // Valid annotation\n if (__DEV__ && !isAnnotation(annotation)) {\n die(`Cannot annotate '${adm.name_}.${key.toString()}': Invalid annotation.`)\n }\n\n /*\n // Configurable, not sealed, not frozen\n // Possibly not needed, just a little better error then the one thrown by engine.\n // Cases where this would be useful the most (subclass field initializer) are not interceptable by this.\n if (__DEV__) {\n const configurable = getDescriptor(adm.target_, key)?.configurable\n const frozen = Object.isFrozen(adm.target_)\n const sealed = Object.isSealed(adm.target_)\n if (!configurable || frozen || sealed) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const requestedAnnotationType = annotation.annotationType_\n let error = `Cannot apply '${requestedAnnotationType}' to '${fieldName}':`\n if (frozen) {\n error += `\\nObject is frozen.`\n }\n if (sealed) {\n error += `\\nObject is sealed.`\n }\n if (!configurable) {\n error += `\\nproperty is not configurable.`\n // Mention only if caused by us to avoid confusion\n if (hasProp(adm.appliedAnnotations!, key)) {\n error += `\\nTo prevent accidental re-definition of a field by a subclass, `\n error += `all annotated fields of non-plain objects (classes) are not configurable.`\n }\n }\n die(error)\n }\n }\n */\n\n // Not annotated\n if (__DEV__ && !isOverride(annotation) && hasProp(adm.appliedAnnotations_!, key)) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const currentAnnotationType = adm.appliedAnnotations_![key].annotationType_\n const requestedAnnotationType = annotation.annotationType_\n die(\n `Cannot apply '${requestedAnnotationType}' to '${fieldName}':` +\n `\\nThe field is already annotated with '${currentAnnotationType}'.` +\n `\\nRe-annotating fields is not allowed.` +\n `\\nUse 'override' annotation for methods overriden by subclass.`\n )\n }\n}\n","import {\n getNextId,\n addHiddenFinalProp,\n allowStateChangesStart,\n allowStateChangesEnd,\n makeIterable,\n addHiddenProp,\n ObservableArrayAdministration,\n $mobx,\n arrayExtensions,\n IEnhancer,\n isObservableArray,\n IObservableArray,\n defineProperty\n} from \"../internal\"\n\n/**\n * This array buffer contains two lists of properties, so that all arrays\n * can recycle their property definitions, which significantly improves performance of creating\n * properties on the fly.\n */\nlet OBSERVABLE_ARRAY_BUFFER_SIZE = 0\n\n// Typescript workaround to make sure ObservableArray extends Array\nclass StubArray {}\nfunction inherit(ctor, proto) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ctor.prototype, proto)\n } else if (ctor.prototype.__proto__ !== undefined) {\n ctor.prototype.__proto__ = proto\n } else {\n ctor.prototype = proto\n }\n}\ninherit(StubArray, Array.prototype)\n\n// Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\n\nclass LegacyObservableArray extends StubArray {\n constructor(\n initialValues: T[] | undefined,\n enhancer: IEnhancer,\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n owned = false\n ) {\n super()\n\n const adm = new ObservableArrayAdministration(name, enhancer, owned, true)\n adm.proxy_ = this as any\n addHiddenFinalProp(this, $mobx, adm)\n\n if (initialValues && initialValues.length) {\n const prev = allowStateChangesStart(true)\n // @ts-ignore\n this.spliceWithArray(0, 0, initialValues)\n allowStateChangesEnd(prev)\n }\n }\n\n concat(...arrays: T[][]): T[] {\n ;(this[$mobx] as ObservableArrayAdministration).atom_.reportObserved()\n return Array.prototype.concat.apply(\n (this as any).slice(),\n //@ts-ignore\n arrays.map(a => (isObservableArray(a) ? a.slice() : a))\n )\n }\n\n get length(): number {\n return (this[$mobx] as ObservableArrayAdministration).getArrayLength_()\n }\n\n set length(newLength: number) {\n ;(this[$mobx] as ObservableArrayAdministration).setArrayLength_(newLength)\n }\n\n get [Symbol.toStringTag]() {\n return \"Array\"\n }\n\n [Symbol.iterator]() {\n const self = this\n let nextIndex = 0\n return makeIterable({\n next() {\n // @ts-ignore\n return nextIndex < self.length\n ? { value: self[nextIndex++], done: false }\n : { done: true, value: undefined }\n }\n })\n }\n}\n\nObject.entries(arrayExtensions).forEach(([prop, fn]) => {\n if (prop !== \"concat\") addHiddenProp(LegacyObservableArray.prototype, prop, fn)\n})\n\nfunction createArrayEntryDescriptor(index: number) {\n return {\n enumerable: false,\n configurable: true,\n get: function () {\n return this[$mobx].get_(index)\n },\n set: function (value) {\n this[$mobx].set_(index, value)\n }\n }\n}\n\nfunction createArrayBufferItem(index: number) {\n defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index))\n}\n\nexport function reserveArrayBuffer(max: number) {\n if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n for (let index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++)\n createArrayBufferItem(index)\n OBSERVABLE_ARRAY_BUFFER_SIZE = max\n }\n}\n\nreserveArrayBuffer(1000)\n\nexport function createLegacyArray(\n initialValues: T[] | undefined,\n enhancer: IEnhancer,\n name?: string\n): IObservableArray {\n return new LegacyObservableArray(initialValues, enhancer, name) as any\n}\n","import { isAction } from \"../api/action\"\nimport {\n $mobx,\n IDepTreeNode,\n isAtom,\n isComputedValue,\n isObservableArray,\n isObservableMap,\n isObservableObject,\n isReaction,\n isObservableSet,\n die,\n isFunction\n} from \"../internal\"\n\nexport function getAtom(thing: any, property?: PropertyKey): IDepTreeNode {\n if (typeof thing === \"object\" && thing !== null) {\n if (isObservableArray(thing)) {\n if (property !== undefined) die(23)\n return (thing as any)[$mobx].atom_\n }\n if (isObservableSet(thing)) {\n return (thing as any)[$mobx]\n }\n if (isObservableMap(thing)) {\n if (property === undefined) return thing.keysAtom_\n const observable = thing.data_.get(property) || thing.hasMap_.get(property)\n if (!observable) die(25, property, getDebugName(thing))\n return observable\n }\n if (property && !thing[$mobx]) thing[property] // See #1072\n if (isObservableObject(thing)) {\n if (!property) return die(26)\n const observable = (thing as any)[$mobx].values_.get(property)\n if (!observable) die(27, property, getDebugName(thing))\n return observable\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing\n }\n } else if (isFunction(thing)) {\n if (isReaction(thing[$mobx])) {\n // disposer function\n return thing[$mobx]\n }\n }\n die(28)\n}\n\nexport function getAdministration(thing: any, property?: string) {\n if (!thing) die(29)\n if (property !== undefined) return getAdministration(getAtom(thing, property))\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) return thing\n if (isObservableMap(thing) || isObservableSet(thing)) return thing\n if (thing[$mobx]) return thing[$mobx]\n die(24, thing)\n}\n\nexport function getDebugName(thing: any, property?: string): string {\n let named\n if (property !== undefined) {\n named = getAtom(thing, property)\n } else if (isAction(thing)) {\n return thing.name\n } else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) {\n named = getAdministration(thing)\n } else {\n // valid for arrays as well\n named = getAtom(thing)\n }\n return named.name_\n}\n","import {\n isES6Map,\n isObservableArray,\n isObservableMap,\n isES6Set,\n isObservableSet,\n hasProp,\n isFunction,\n objectPrototype\n} from \"../internal\"\n\ndeclare const Symbol\nconst toString = objectPrototype.toString\n\nexport function deepEqual(a: any, b: any, depth: number = -1): boolean {\n return eq(a, b, depth)\n}\n\n// Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a: any, b: any, depth: number, aStack?: any[], bStack?: any[]) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b\n // Exhaust primitive checks\n const type = typeof a\n if (!isFunction(type) && type !== \"object\" && typeof b != \"object\") return false\n\n // Compare `[[Class]]` names.\n const className = toString.call(a)\n if (className !== toString.call(b)) return false\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case \"[object RegExp]\":\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case \"[object String]\":\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return \"\" + a === \"\" + b\n case \"[object Number]\":\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b\n case \"[object Date]\":\n case \"[object Boolean]\":\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b\n case \"[object Symbol]\":\n return (\n typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b)\n )\n case \"[object Map]\":\n case \"[object Set]\":\n // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n // Hide this extra level by increasing the depth.\n if (depth >= 0) {\n depth++\n }\n break\n }\n // Unwrap any wrapped objects.\n a = unwrap(a)\n b = unwrap(b)\n\n const areArrays = className === \"[object Array]\"\n if (!areArrays) {\n if (typeof a != \"object\" || typeof b != \"object\") return false\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n const aCtor = a.constructor,\n bCtor = b.constructor\n if (\n aCtor !== bCtor &&\n !(\n isFunction(aCtor) &&\n aCtor instanceof aCtor &&\n isFunction(bCtor) &&\n bCtor instanceof bCtor\n ) &&\n \"constructor\" in a &&\n \"constructor\" in b\n ) {\n return false\n }\n }\n\n if (depth === 0) {\n return false\n } else if (depth < 0) {\n depth = -1\n }\n\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || []\n bStack = bStack || []\n let length = aStack.length\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a)\n bStack.push(b)\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length\n if (length !== b.length) return false\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], depth - 1, aStack, bStack)) return false\n }\n } else {\n // Deep compare objects.\n const keys = Object.keys(a)\n let key\n length = keys.length\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object.keys(b).length !== length) return false\n while (length--) {\n // Deep compare each member\n key = keys[length]\n if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) return false\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop()\n bStack.pop()\n return true\n}\n\nfunction unwrap(a: any) {\n if (isObservableArray(a)) return a.slice()\n if (isES6Map(a) || isObservableMap(a)) return Array.from(a.entries())\n if (isES6Set(a) || isObservableSet(a)) return Array.from(a.entries())\n return a\n}\n","export function makeIterable(iterator: Iterator): IterableIterator {\n iterator[Symbol.iterator] = getSelf\n return iterator as any\n}\n\nfunction getSelf() {\n return this\n}\n","import { ObservableObjectAdministration, isFunction } from \"../internal\"\n\nexport const enum MakeResult {\n Cancel,\n Break,\n Continue\n}\n\nexport type Annotation = {\n annotationType_: string\n make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n ): MakeResult\n extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n ): boolean | null\n options_?: any\n}\n\nexport type AnnotationMapEntry =\n | Annotation\n | true /* follow the default decorator, usually deep */\n | false /* don't decorate this property */\n\n// AdditionalFields can be used to declare additional keys that can be used, for example to be able to\n// declare annotations for private/ protected members, see #2339\nexport type AnnotationsMap = {\n [P in Exclude]?: AnnotationMapEntry\n} &\n Record\n\nexport function isAnnotation(thing: any) {\n return (\n // Can be function\n thing instanceof Object &&\n typeof thing.annotationType_ === \"string\" &&\n isFunction(thing.make_) &&\n isFunction(thing.extend_)\n )\n}\n\nexport function isAnnotationMapEntry(thing: any) {\n return typeof thing === \"boolean\" || isAnnotation(thing)\n}\n","/**\n * (c) Michel Weststrate 2015 - 2020\n * MIT Licensed\n *\n * Welcome to the mobx sources! To get an global overview of how MobX internally works,\n * this is a good place to start:\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n *\n * Source folders:\n * ===============\n *\n * - api/ Most of the public static methods exposed by the module can be found here.\n * - core/ Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\n * - types/ All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\n * - utils/ Utility stuff.\n *\n */\nimport { die } from \"./errors\"\nimport { getGlobal } from \"./utils/global\"\n;[\"Symbol\", \"Map\", \"Set\"].forEach(m => {\n let g = getGlobal()\n if (typeof g[m] === \"undefined\") {\n die(`MobX requires global '${m}' to be available or polyfilled`)\n }\n})\n\nimport { spy, getDebugName, $mobx } from \"./internal\"\n\nexport {\n IObservable,\n IDepTreeNode,\n Reaction,\n IReactionPublic,\n IReactionDisposer,\n untracked,\n IAtom,\n createAtom,\n spy,\n IComputedValue,\n IEqualsComparer,\n comparer,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n IObjectWillChange,\n IObjectDidChange,\n isObservableObject,\n IValueDidChange,\n IValueWillChange,\n IObservableValue,\n isObservableValue as isBoxedObservable,\n IObservableArray,\n IArrayWillChange,\n IArrayWillSplice,\n IArraySplice,\n IArrayUpdate,\n IArrayDidChange,\n isObservableArray,\n IKeyValueMap,\n ObservableMap,\n IMapEntries,\n IMapEntry,\n IMapWillChange,\n IMapDidChange,\n isObservableMap,\n IObservableMapInitialValues,\n ObservableSet,\n isObservableSet,\n ISetDidChange,\n ISetWillChange,\n IObservableSetInitialValues,\n transaction,\n observable,\n IObservableFactory,\n CreateObservableOptions,\n computed,\n IComputedFactory,\n isObservable,\n isObservableProp,\n isComputed,\n isComputedProp,\n extendObservable,\n observe,\n intercept,\n autorun,\n IAutorunOptions,\n reaction,\n IReactionOptions,\n when,\n IWhenOptions,\n action,\n isAction,\n runInAction,\n IActionFactory,\n keys,\n values,\n entries,\n set,\n remove,\n has,\n get,\n apiOwnKeys as ownKeys,\n apiDefineProperty as defineProperty,\n configure,\n onBecomeObserved,\n onBecomeUnobserved,\n flow,\n isFlow,\n flowResult,\n FlowCancellationError,\n isFlowCancellationError,\n toJS,\n trace,\n IObserverTree,\n IDependencyTree,\n getDependencyTree,\n getObserverTree,\n resetGlobalState as _resetGlobalState,\n getGlobalState as _getGlobalState,\n getDebugName,\n getAtom,\n getAdministration as _getAdministration,\n allowStateChanges as _allowStateChanges,\n runInAction as _allowStateChangesInsideComputed, // This has become the default behavior in Mobx 6\n Lambda,\n $mobx,\n isComputingDerivation as _isComputingDerivation,\n onReactionError,\n interceptReads as _interceptReads,\n IComputedValueOptions,\n IActionRunInfo,\n _startAction,\n _endAction,\n allowStateReadsStart as _allowStateReadsStart,\n allowStateReadsEnd as _allowStateReadsEnd,\n makeObservable,\n makeAutoObservable,\n autoAction as _autoAction,\n AnnotationsMap,\n AnnotationMapEntry,\n override\n} from \"./internal\"\n\n// Devtools support\ndeclare const __MOBX_DEVTOOLS_GLOBAL_HOOK__: { injectMobx: (any) => void }\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n // See: https://github.com/andykog/mobx-devtools/\n __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n spy,\n extras: {\n getDebugName\n },\n $mobx\n })\n}\n","import \"./utils/assertEnvironment\";\nimport { unstable_batchedUpdates as batch } from \"./utils/reactBatchedUpdates\";\nimport { observerBatching } from \"./utils/observerBatching\";\nimport { useDeprecated } from \"./utils/utils\";\nimport { useObserver as useObserverOriginal } from \"./useObserver\";\nimport { enableStaticRendering } from \"./staticRendering\";\nobserverBatching(batch);\nexport { isUsingStaticRendering, enableStaticRendering } from \"./staticRendering\";\nexport { observer } from \"./observer\";\nexport { Observer } from \"./ObserverComponent\";\nexport { useLocalObservable } from \"./useLocalObservable\";\nexport { useLocalStore } from \"./useLocalStore\";\nexport { useAsObservableSource } from \"./useAsObservableSource\";\nexport { resetCleanupScheduleForTests as clearTimers } from \"./utils/reactionCleanupTracking\";\nexport function useObserver(fn, baseComponentName) {\n if (baseComponentName === void 0) { baseComponentName = \"observed\"; }\n if (\"production\" !== process.env.NODE_ENV) {\n useDeprecated(\"[mobx-react-lite] 'useObserver(fn)' is deprecated. Use `{fn}` instead, or wrap the entire component in `observer`.\");\n }\n return useObserverOriginal(fn, baseComponentName);\n}\nexport { isObserverBatched, observerBatching } from \"./utils/observerBatching\";\nexport function useStaticRendering(enable) {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[mobx-react-lite] 'useStaticRendering' is deprecated, use 'enableStaticRendering' instead\");\n }\n enableStaticRendering(enable);\n}\n//# sourceMappingURL=index.js.map","import \"./utils/assertEnvironment\"\n\nimport { unstable_batchedUpdates as batch } from \"./utils/reactBatchedUpdates\"\nimport { observerBatching } from \"./utils/observerBatching\"\nimport { useDeprecated } from \"./utils/utils\"\nimport { useObserver as useObserverOriginal } from \"./useObserver\"\nimport { enableStaticRendering } from \"./staticRendering\"\n\nobserverBatching(batch)\n\nexport { isUsingStaticRendering, enableStaticRendering } from \"./staticRendering\"\nexport { observer, IObserverOptions } from \"./observer\"\nexport { Observer } from \"./ObserverComponent\"\nexport { useLocalObservable } from \"./useLocalObservable\"\nexport { useLocalStore } from \"./useLocalStore\"\nexport { useAsObservableSource } from \"./useAsObservableSource\"\nexport { resetCleanupScheduleForTests as clearTimers } from \"./utils/reactionCleanupTracking\"\n\nexport function useObserver(fn: () => T, baseComponentName: string = \"observed\"): T {\n if (\"production\" !== process.env.NODE_ENV) {\n useDeprecated(\n \"[mobx-react-lite] 'useObserver(fn)' is deprecated. Use `{fn}` instead, or wrap the entire component in `observer`.\"\n )\n }\n return useObserverOriginal(fn, baseComponentName)\n}\n\nexport { isObserverBatched, observerBatching } from \"./utils/observerBatching\"\n\nexport function useStaticRendering(enable: boolean) {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\n \"[mobx-react-lite] 'useStaticRendering' is deprecated, use 'enableStaticRendering' instead\"\n )\n }\n enableStaticRendering(enable)\n}\n","import { makeObservable } from \"mobx\";\nimport { useState } from \"react\";\nif (!useState) {\n throw new Error(\"mobx-react-lite requires React with Hooks support\");\n}\nif (!makeObservable) {\n throw new Error(\"mobx-react-lite@3 requires mobx at least version 6 to be available\");\n}\n//# sourceMappingURL=assertEnvironment.js.map","import { makeObservable } from \"mobx\"\nimport { useState } from \"react\"\n\nif (!useState) {\n throw new Error(\"mobx-react-lite requires React with Hooks support\")\n}\nif (!makeObservable) {\n throw new Error(\"mobx-react-lite@3 requires mobx at least version 6 to be available\")\n}\n","export { unstable_batchedUpdates } from \"react-dom\"\n","import { configure } from \"mobx\";\nexport function defaultNoopBatch(callback) {\n callback();\n}\nexport function observerBatching(reactionScheduler) {\n if (!reactionScheduler) {\n reactionScheduler = defaultNoopBatch;\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[MobX] Failed to get unstable_batched updates from react-dom / react-native\");\n }\n }\n configure({ reactionScheduler: reactionScheduler });\n}\nexport var isObserverBatched = function () {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[MobX] Deprecated\");\n }\n return true;\n};\n//# sourceMappingURL=observerBatching.js.map","import { configure } from \"mobx\"\n\nexport function defaultNoopBatch(callback: () => void) {\n callback()\n}\n\nexport function observerBatching(reactionScheduler: any) {\n if (!reactionScheduler) {\n reactionScheduler = defaultNoopBatch\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\n \"[MobX] Failed to get unstable_batched updates from react-dom / react-native\"\n )\n }\n }\n configure({ reactionScheduler })\n}\n\nexport const isObserverBatched = () => {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[MobX] Deprecated\")\n }\n\n return true\n}\n","var deprecatedMessages = [];\nexport function useDeprecated(msg) {\n if (!deprecatedMessages.includes(msg)) {\n deprecatedMessages.push(msg);\n console.warn(msg);\n }\n}\n//# sourceMappingURL=utils.js.map","const deprecatedMessages: string[] = []\n\nexport function useDeprecated(msg: string) {\n if (!deprecatedMessages.includes(msg)) {\n deprecatedMessages.push(msg)\n console.warn(msg)\n }\n}\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { Reaction } from \"mobx\";\nimport React from \"react\";\nimport { printDebugValue } from \"./utils/printDebugValue\";\nimport { addReactionToTrack, recordReactionAsCommitted } from \"./utils/reactionCleanupTracking\";\nimport { isUsingStaticRendering } from \"./staticRendering\";\nfunction observerComponentNameFor(baseComponentName) {\n return \"observer\" + baseComponentName;\n}\n/**\n * We use class to make it easier to detect in heap snapshots by name\n */\nvar ObjectToBeRetainedByReact = /** @class */ (function () {\n function ObjectToBeRetainedByReact() {\n }\n return ObjectToBeRetainedByReact;\n}());\nfunction objectToBeRetainedByReactFactory() {\n return new ObjectToBeRetainedByReact();\n}\nexport function useObserver(fn, baseComponentName) {\n if (baseComponentName === void 0) { baseComponentName = \"observed\"; }\n if (isUsingStaticRendering()) {\n return fn();\n }\n var _a = __read(React.useState(objectToBeRetainedByReactFactory), 1), objectRetainedByReact = _a[0];\n // Force update, see #2982\n var _b = __read(React.useState(), 2), setState = _b[1];\n var forceUpdate = function () { return setState([]); };\n // StrictMode/ConcurrentMode/Suspense may mean that our component is\n // rendered and abandoned multiple times, so we need to track leaked\n // Reactions.\n var reactionTrackingRef = React.useRef(null);\n if (!reactionTrackingRef.current) {\n // First render for this component (or first time since a previous\n // reaction from an abandoned render was disposed).\n var newReaction = new Reaction(observerComponentNameFor(baseComponentName), function () {\n // Observable has changed, meaning we want to re-render\n // BUT if we're a component that hasn't yet got to the useEffect()\n // stage, we might be a component that _started_ to render, but\n // got dropped, and we don't want to make state changes then.\n // (It triggers warnings in StrictMode, for a start.)\n if (trackingData_1.mounted) {\n // We have reached useEffect(), so we're mounted, and can trigger an update\n forceUpdate();\n }\n else {\n // We haven't yet reached useEffect(), so we'll need to trigger a re-render\n // when (and if) useEffect() arrives.\n trackingData_1.changedBeforeMount = true;\n }\n });\n var trackingData_1 = addReactionToTrack(reactionTrackingRef, newReaction, objectRetainedByReact);\n }\n var reaction = reactionTrackingRef.current.reaction;\n React.useDebugValue(reaction, printDebugValue);\n React.useEffect(function () {\n // Called on first mount only\n recordReactionAsCommitted(reactionTrackingRef);\n if (reactionTrackingRef.current) {\n // Great. We've already got our reaction from our render;\n // all we need to do is to record that it's now mounted,\n // to allow future observable changes to trigger re-renders\n reactionTrackingRef.current.mounted = true;\n // Got a change before first mount, force an update\n if (reactionTrackingRef.current.changedBeforeMount) {\n reactionTrackingRef.current.changedBeforeMount = false;\n forceUpdate();\n }\n }\n else {\n // The reaction we set up in our render has been disposed.\n // This can be due to bad timings of renderings, e.g. our\n // component was paused for a _very_ long time, and our\n // reaction got cleaned up\n // Re-create the reaction\n reactionTrackingRef.current = {\n reaction: new Reaction(observerComponentNameFor(baseComponentName), function () {\n // We've definitely already been mounted at this point\n forceUpdate();\n }),\n mounted: true,\n changedBeforeMount: false,\n cleanAt: Infinity\n };\n forceUpdate();\n }\n return function () {\n reactionTrackingRef.current.reaction.dispose();\n reactionTrackingRef.current = null;\n };\n }, []);\n // render the original component, but have the\n // reaction track the observables, so that rendering\n // can be invalidated (see above) once a dependency changes\n var rendering;\n var exception;\n reaction.track(function () {\n try {\n rendering = fn();\n }\n catch (e) {\n exception = e;\n }\n });\n if (exception) {\n throw exception; // re-throw any exceptions caught during rendering\n }\n return rendering;\n}\n//# sourceMappingURL=useObserver.js.map","import { Reaction } from \"mobx\"\nimport React from \"react\"\nimport { printDebugValue } from \"./utils/printDebugValue\"\nimport {\n addReactionToTrack,\n IReactionTracking,\n recordReactionAsCommitted\n} from \"./utils/reactionCleanupTracking\"\nimport { isUsingStaticRendering } from \"./staticRendering\"\n\nfunction observerComponentNameFor(baseComponentName: string) {\n return `observer${baseComponentName}`\n}\n\n/**\n * We use class to make it easier to detect in heap snapshots by name\n */\nclass ObjectToBeRetainedByReact {}\n\nfunction objectToBeRetainedByReactFactory() {\n return new ObjectToBeRetainedByReact()\n}\n\nexport function useObserver(fn: () => T, baseComponentName: string = \"observed\"): T {\n if (isUsingStaticRendering()) {\n return fn()\n }\n\n const [objectRetainedByReact] = React.useState(objectToBeRetainedByReactFactory)\n // Force update, see #2982\n const [, setState] = React.useState()\n const forceUpdate = () => setState([] as any)\n\n // StrictMode/ConcurrentMode/Suspense may mean that our component is\n // rendered and abandoned multiple times, so we need to track leaked\n // Reactions.\n const reactionTrackingRef = React.useRef(null)\n\n if (!reactionTrackingRef.current) {\n // First render for this component (or first time since a previous\n // reaction from an abandoned render was disposed).\n\n const newReaction = new Reaction(observerComponentNameFor(baseComponentName), () => {\n // Observable has changed, meaning we want to re-render\n // BUT if we're a component that hasn't yet got to the useEffect()\n // stage, we might be a component that _started_ to render, but\n // got dropped, and we don't want to make state changes then.\n // (It triggers warnings in StrictMode, for a start.)\n if (trackingData.mounted) {\n // We have reached useEffect(), so we're mounted, and can trigger an update\n forceUpdate()\n } else {\n // We haven't yet reached useEffect(), so we'll need to trigger a re-render\n // when (and if) useEffect() arrives.\n trackingData.changedBeforeMount = true\n }\n })\n\n const trackingData = addReactionToTrack(\n reactionTrackingRef,\n newReaction,\n objectRetainedByReact\n )\n }\n\n const { reaction } = reactionTrackingRef.current!\n React.useDebugValue(reaction, printDebugValue)\n\n React.useEffect(() => {\n // Called on first mount only\n recordReactionAsCommitted(reactionTrackingRef)\n\n if (reactionTrackingRef.current) {\n // Great. We've already got our reaction from our render;\n // all we need to do is to record that it's now mounted,\n // to allow future observable changes to trigger re-renders\n reactionTrackingRef.current.mounted = true\n // Got a change before first mount, force an update\n if (reactionTrackingRef.current.changedBeforeMount) {\n reactionTrackingRef.current.changedBeforeMount = false\n forceUpdate()\n }\n } else {\n // The reaction we set up in our render has been disposed.\n // This can be due to bad timings of renderings, e.g. our\n // component was paused for a _very_ long time, and our\n // reaction got cleaned up\n\n // Re-create the reaction\n reactionTrackingRef.current = {\n reaction: new Reaction(observerComponentNameFor(baseComponentName), () => {\n // We've definitely already been mounted at this point\n forceUpdate()\n }),\n mounted: true,\n changedBeforeMount: false,\n cleanAt: Infinity\n }\n forceUpdate()\n }\n\n return () => {\n reactionTrackingRef.current!.reaction.dispose()\n reactionTrackingRef.current = null\n }\n }, [])\n\n // render the original component, but have the\n // reaction track the observables, so that rendering\n // can be invalidated (see above) once a dependency changes\n let rendering!: T\n let exception\n reaction.track(() => {\n try {\n rendering = fn()\n } catch (e) {\n exception = e\n }\n })\n\n if (exception) {\n throw exception // re-throw any exceptions caught during rendering\n }\n\n return rendering\n}\n","import { getDependencyTree } from \"mobx\";\nexport function printDebugValue(v) {\n return getDependencyTree(v);\n}\n//# sourceMappingURL=printDebugValue.js.map","import { getDependencyTree, Reaction } from \"mobx\"\n\nexport function printDebugValue(v: Reaction) {\n return getDependencyTree(v)\n}\n","import { FinalizationRegistry as FinalizationRegistryMaybeUndefined } from \"./FinalizationRegistryWrapper\";\nimport { createReactionCleanupTrackingUsingFinalizationRegister } from \"./createReactionCleanupTrackingUsingFinalizationRegister\";\nimport { createTimerBasedReactionCleanupTracking } from \"./createTimerBasedReactionCleanupTracking\";\nvar _a = FinalizationRegistryMaybeUndefined\n ? createReactionCleanupTrackingUsingFinalizationRegister(FinalizationRegistryMaybeUndefined)\n : createTimerBasedReactionCleanupTracking(), addReactionToTrack = _a.addReactionToTrack, recordReactionAsCommitted = _a.recordReactionAsCommitted, resetCleanupScheduleForTests = _a.resetCleanupScheduleForTests, forceCleanupTimerToRunNowForTests = _a.forceCleanupTimerToRunNowForTests;\nexport { addReactionToTrack, recordReactionAsCommitted, resetCleanupScheduleForTests, forceCleanupTimerToRunNowForTests };\n//# sourceMappingURL=reactionCleanupTracking.js.map","import { FinalizationRegistry as FinalizationRegistryMaybeUndefined } from \"./FinalizationRegistryWrapper\"\nimport { createReactionCleanupTrackingUsingFinalizationRegister } from \"./createReactionCleanupTrackingUsingFinalizationRegister\"\nimport { createTimerBasedReactionCleanupTracking } from \"./createTimerBasedReactionCleanupTracking\"\nexport { IReactionTracking } from \"./reactionCleanupTrackingCommon\"\n\nconst {\n addReactionToTrack,\n recordReactionAsCommitted,\n resetCleanupScheduleForTests,\n forceCleanupTimerToRunNowForTests\n} = FinalizationRegistryMaybeUndefined\n ? createReactionCleanupTrackingUsingFinalizationRegister(FinalizationRegistryMaybeUndefined)\n : createTimerBasedReactionCleanupTracking()\n\nexport {\n addReactionToTrack,\n recordReactionAsCommitted,\n resetCleanupScheduleForTests,\n forceCleanupTimerToRunNowForTests\n}\n","var FinalizationRegistryLocal = typeof FinalizationRegistry === \"undefined\" ? undefined : FinalizationRegistry;\nexport { FinalizationRegistryLocal as FinalizationRegistry };\n//# sourceMappingURL=FinalizationRegistryWrapper.js.map","declare class FinalizationRegistryType {\n constructor(cleanup: (cleanupToken: T) => void)\n register(object: object, cleanupToken: T, unregisterToken?: object): void\n unregister(unregisterToken: object): void\n}\n\ndeclare const FinalizationRegistry: typeof FinalizationRegistryType | undefined\n\nconst FinalizationRegistryLocal =\n typeof FinalizationRegistry === \"undefined\" ? undefined : FinalizationRegistry\n\nexport { FinalizationRegistryLocal as FinalizationRegistry }\n","import { createTrackingData } from \"./reactionCleanupTrackingCommon\";\n/**\n * FinalizationRegistry-based uncommitted reaction cleanup\n */\nexport function createReactionCleanupTrackingUsingFinalizationRegister(FinalizationRegistry) {\n var cleanupTokenToReactionTrackingMap = new Map();\n var globalCleanupTokensCounter = 1;\n var registry = new FinalizationRegistry(function cleanupFunction(token) {\n var trackedReaction = cleanupTokenToReactionTrackingMap.get(token);\n if (trackedReaction) {\n trackedReaction.reaction.dispose();\n cleanupTokenToReactionTrackingMap.delete(token);\n }\n });\n return {\n addReactionToTrack: function (reactionTrackingRef, reaction, objectRetainedByReact) {\n var token = globalCleanupTokensCounter++;\n registry.register(objectRetainedByReact, token, reactionTrackingRef);\n reactionTrackingRef.current = createTrackingData(reaction);\n reactionTrackingRef.current.finalizationRegistryCleanupToken = token;\n cleanupTokenToReactionTrackingMap.set(token, reactionTrackingRef.current);\n return reactionTrackingRef.current;\n },\n recordReactionAsCommitted: function (reactionRef) {\n registry.unregister(reactionRef);\n if (reactionRef.current && reactionRef.current.finalizationRegistryCleanupToken) {\n cleanupTokenToReactionTrackingMap.delete(reactionRef.current.finalizationRegistryCleanupToken);\n }\n },\n forceCleanupTimerToRunNowForTests: function () {\n // When FinalizationRegistry in use, this this is no-op\n },\n resetCleanupScheduleForTests: function () {\n // When FinalizationRegistry in use, this this is no-op\n }\n };\n}\n//# sourceMappingURL=createReactionCleanupTrackingUsingFinalizationRegister.js.map","import { FinalizationRegistry as FinalizationRegistryMaybeUndefined } from \"./FinalizationRegistryWrapper\"\nimport { Reaction } from \"mobx\"\nimport {\n ReactionCleanupTracking,\n IReactionTracking,\n createTrackingData\n} from \"./reactionCleanupTrackingCommon\"\n\n/**\n * FinalizationRegistry-based uncommitted reaction cleanup\n */\nexport function createReactionCleanupTrackingUsingFinalizationRegister(\n FinalizationRegistry: NonNullable\n): ReactionCleanupTracking {\n const cleanupTokenToReactionTrackingMap = new Map()\n let globalCleanupTokensCounter = 1\n\n const registry = new FinalizationRegistry(function cleanupFunction(token: number) {\n const trackedReaction = cleanupTokenToReactionTrackingMap.get(token)\n if (trackedReaction) {\n trackedReaction.reaction.dispose()\n cleanupTokenToReactionTrackingMap.delete(token)\n }\n })\n\n return {\n addReactionToTrack(\n reactionTrackingRef: React.MutableRefObject,\n reaction: Reaction,\n objectRetainedByReact: object\n ) {\n const token = globalCleanupTokensCounter++\n\n registry.register(objectRetainedByReact, token, reactionTrackingRef)\n reactionTrackingRef.current = createTrackingData(reaction)\n reactionTrackingRef.current.finalizationRegistryCleanupToken = token\n cleanupTokenToReactionTrackingMap.set(token, reactionTrackingRef.current)\n\n return reactionTrackingRef.current\n },\n recordReactionAsCommitted(reactionRef: React.MutableRefObject) {\n registry.unregister(reactionRef)\n\n if (reactionRef.current && reactionRef.current.finalizationRegistryCleanupToken) {\n cleanupTokenToReactionTrackingMap.delete(\n reactionRef.current.finalizationRegistryCleanupToken\n )\n }\n },\n forceCleanupTimerToRunNowForTests() {\n // When FinalizationRegistry in use, this this is no-op\n },\n resetCleanupScheduleForTests() {\n // When FinalizationRegistry in use, this this is no-op\n }\n }\n}\n","export function createTrackingData(reaction) {\n var trackingData = {\n reaction: reaction,\n mounted: false,\n changedBeforeMount: false,\n cleanAt: Date.now() + CLEANUP_LEAKED_REACTIONS_AFTER_MILLIS\n };\n return trackingData;\n}\n/**\n * The minimum time before we'll clean up a Reaction created in a render\n * for a component that hasn't managed to run its effects. This needs to\n * be big enough to ensure that a component won't turn up and have its\n * effects run without being re-rendered.\n */\nexport var CLEANUP_LEAKED_REACTIONS_AFTER_MILLIS = 10000;\n/**\n * The frequency with which we'll check for leaked reactions.\n */\nexport var CLEANUP_TIMER_LOOP_MILLIS = 10000;\n//# sourceMappingURL=reactionCleanupTrackingCommon.js.map","import { Reaction } from \"mobx\"\n\nexport function createTrackingData(reaction: Reaction) {\n const trackingData: IReactionTracking = {\n reaction,\n mounted: false,\n changedBeforeMount: false,\n cleanAt: Date.now() + CLEANUP_LEAKED_REACTIONS_AFTER_MILLIS\n }\n return trackingData\n}\n\n/**\n * Unified api for timers/Finalization registry cleanups\n * This abstraction make useObserver much simpler\n */\nexport interface ReactionCleanupTracking {\n /**\n *\n * @param reaction The reaction to cleanup\n * @param objectRetainedByReact This will be in actual use only when FinalizationRegister is in use\n */\n addReactionToTrack(\n reactionTrackingRef: React.MutableRefObject,\n reaction: Reaction,\n objectRetainedByReact: object\n ): IReactionTracking\n recordReactionAsCommitted(reactionRef: React.MutableRefObject): void\n forceCleanupTimerToRunNowForTests(): void\n resetCleanupScheduleForTests(): void\n}\n\nexport interface IReactionTracking {\n /** The Reaction created during first render, which may be leaked */\n reaction: Reaction\n /**\n * The time (in ticks) at which point we should dispose of the reaction\n * if this component hasn't yet been fully mounted.\n */\n cleanAt: number\n\n /**\n * Whether the component has yet completed mounting (for us, whether\n * its useEffect has run)\n */\n mounted: boolean\n\n /**\n * Whether the observables that the component is tracking changed between\n * the first render and the first useEffect.\n */\n changedBeforeMount: boolean\n\n /**\n * In case we are using finalization registry based cleanup,\n * this will hold the cleanup token associated with this reaction\n */\n finalizationRegistryCleanupToken?: number\n}\n\n/**\n * The minimum time before we'll clean up a Reaction created in a render\n * for a component that hasn't managed to run its effects. This needs to\n * be big enough to ensure that a component won't turn up and have its\n * effects run without being re-rendered.\n */\nexport const CLEANUP_LEAKED_REACTIONS_AFTER_MILLIS = 10_000\n\n/**\n * The frequency with which we'll check for leaked reactions.\n */\nexport const CLEANUP_TIMER_LOOP_MILLIS = 10_000\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { CLEANUP_TIMER_LOOP_MILLIS, createTrackingData } from \"./reactionCleanupTrackingCommon\";\n/**\n * timers, gc-style, uncommitted reaction cleanup\n */\nexport function createTimerBasedReactionCleanupTracking() {\n /**\n * Reactions created by components that have yet to be fully mounted.\n */\n var uncommittedReactionRefs = new Set();\n /**\n * Latest 'uncommitted reactions' cleanup timer handle.\n */\n var reactionCleanupHandle;\n /* istanbul ignore next */\n /**\n * Only to be used by test functions; do not export outside of mobx-react-lite\n */\n function forceCleanupTimerToRunNowForTests() {\n // This allows us to control the execution of the cleanup timer\n // to force it to run at awkward times in unit tests.\n if (reactionCleanupHandle) {\n clearTimeout(reactionCleanupHandle);\n cleanUncommittedReactions();\n }\n }\n /* istanbul ignore next */\n function resetCleanupScheduleForTests() {\n var e_1, _a;\n if (uncommittedReactionRefs.size > 0) {\n try {\n for (var uncommittedReactionRefs_1 = __values(uncommittedReactionRefs), uncommittedReactionRefs_1_1 = uncommittedReactionRefs_1.next(); !uncommittedReactionRefs_1_1.done; uncommittedReactionRefs_1_1 = uncommittedReactionRefs_1.next()) {\n var ref = uncommittedReactionRefs_1_1.value;\n var tracking = ref.current;\n if (tracking) {\n tracking.reaction.dispose();\n ref.current = null;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (uncommittedReactionRefs_1_1 && !uncommittedReactionRefs_1_1.done && (_a = uncommittedReactionRefs_1.return)) _a.call(uncommittedReactionRefs_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n uncommittedReactionRefs.clear();\n }\n if (reactionCleanupHandle) {\n clearTimeout(reactionCleanupHandle);\n reactionCleanupHandle = undefined;\n }\n }\n function ensureCleanupTimerRunning() {\n if (reactionCleanupHandle === undefined) {\n reactionCleanupHandle = setTimeout(cleanUncommittedReactions, CLEANUP_TIMER_LOOP_MILLIS);\n }\n }\n function scheduleCleanupOfReactionIfLeaked(ref) {\n uncommittedReactionRefs.add(ref);\n ensureCleanupTimerRunning();\n }\n function recordReactionAsCommitted(reactionRef) {\n uncommittedReactionRefs.delete(reactionRef);\n }\n /**\n * Run by the cleanup timer to dispose any outstanding reactions\n */\n function cleanUncommittedReactions() {\n reactionCleanupHandle = undefined;\n // Loop through all the candidate leaked reactions; those older\n // than CLEANUP_LEAKED_REACTIONS_AFTER_MILLIS get tidied.\n var now = Date.now();\n uncommittedReactionRefs.forEach(function (ref) {\n var tracking = ref.current;\n if (tracking) {\n if (now >= tracking.cleanAt) {\n // It's time to tidy up this leaked reaction.\n tracking.reaction.dispose();\n ref.current = null;\n uncommittedReactionRefs.delete(ref);\n }\n }\n });\n if (uncommittedReactionRefs.size > 0) {\n // We've just finished a round of cleanups but there are still\n // some leak candidates outstanding.\n ensureCleanupTimerRunning();\n }\n }\n return {\n addReactionToTrack: function (reactionTrackingRef, reaction, \n /**\n * On timer based implementation we don't really need this object,\n * but we keep the same api\n */\n objectRetainedByReact) {\n reactionTrackingRef.current = createTrackingData(reaction);\n scheduleCleanupOfReactionIfLeaked(reactionTrackingRef);\n return reactionTrackingRef.current;\n },\n recordReactionAsCommitted: recordReactionAsCommitted,\n forceCleanupTimerToRunNowForTests: forceCleanupTimerToRunNowForTests,\n resetCleanupScheduleForTests: resetCleanupScheduleForTests\n };\n}\n//# sourceMappingURL=createTimerBasedReactionCleanupTracking.js.map","import { Reaction } from \"mobx\"\nimport {\n ReactionCleanupTracking,\n IReactionTracking,\n CLEANUP_TIMER_LOOP_MILLIS,\n createTrackingData\n} from \"./reactionCleanupTrackingCommon\"\n\n/**\n * timers, gc-style, uncommitted reaction cleanup\n */\nexport function createTimerBasedReactionCleanupTracking(): ReactionCleanupTracking {\n /**\n * Reactions created by components that have yet to be fully mounted.\n */\n const uncommittedReactionRefs: Set> = new Set()\n\n /**\n * Latest 'uncommitted reactions' cleanup timer handle.\n */\n let reactionCleanupHandle: ReturnType | undefined\n\n /* istanbul ignore next */\n /**\n * Only to be used by test functions; do not export outside of mobx-react-lite\n */\n function forceCleanupTimerToRunNowForTests() {\n // This allows us to control the execution of the cleanup timer\n // to force it to run at awkward times in unit tests.\n if (reactionCleanupHandle) {\n clearTimeout(reactionCleanupHandle)\n cleanUncommittedReactions()\n }\n }\n\n /* istanbul ignore next */\n function resetCleanupScheduleForTests() {\n if (uncommittedReactionRefs.size > 0) {\n for (const ref of uncommittedReactionRefs) {\n const tracking = ref.current\n if (tracking) {\n tracking.reaction.dispose()\n ref.current = null\n }\n }\n uncommittedReactionRefs.clear()\n }\n\n if (reactionCleanupHandle) {\n clearTimeout(reactionCleanupHandle)\n reactionCleanupHandle = undefined\n }\n }\n\n function ensureCleanupTimerRunning() {\n if (reactionCleanupHandle === undefined) {\n reactionCleanupHandle = setTimeout(cleanUncommittedReactions, CLEANUP_TIMER_LOOP_MILLIS)\n }\n }\n\n function scheduleCleanupOfReactionIfLeaked(\n ref: React.MutableRefObject\n ) {\n uncommittedReactionRefs.add(ref)\n\n ensureCleanupTimerRunning()\n }\n\n function recordReactionAsCommitted(\n reactionRef: React.MutableRefObject\n ) {\n uncommittedReactionRefs.delete(reactionRef)\n }\n\n /**\n * Run by the cleanup timer to dispose any outstanding reactions\n */\n function cleanUncommittedReactions() {\n reactionCleanupHandle = undefined\n\n // Loop through all the candidate leaked reactions; those older\n // than CLEANUP_LEAKED_REACTIONS_AFTER_MILLIS get tidied.\n\n const now = Date.now()\n uncommittedReactionRefs.forEach(ref => {\n const tracking = ref.current\n if (tracking) {\n if (now >= tracking.cleanAt) {\n // It's time to tidy up this leaked reaction.\n tracking.reaction.dispose()\n ref.current = null\n uncommittedReactionRefs.delete(ref)\n }\n }\n })\n\n if (uncommittedReactionRefs.size > 0) {\n // We've just finished a round of cleanups but there are still\n // some leak candidates outstanding.\n ensureCleanupTimerRunning()\n }\n }\n\n return {\n addReactionToTrack(\n reactionTrackingRef: React.MutableRefObject,\n reaction: Reaction,\n /**\n * On timer based implementation we don't really need this object,\n * but we keep the same api\n */\n objectRetainedByReact: unknown\n ) {\n reactionTrackingRef.current = createTrackingData(reaction)\n scheduleCleanupOfReactionIfLeaked(reactionTrackingRef)\n return reactionTrackingRef.current\n },\n recordReactionAsCommitted,\n forceCleanupTimerToRunNowForTests,\n resetCleanupScheduleForTests\n }\n}\n","var globalIsUsingStaticRendering = false;\nexport function enableStaticRendering(enable) {\n globalIsUsingStaticRendering = enable;\n}\nexport function isUsingStaticRendering() {\n return globalIsUsingStaticRendering;\n}\n//# sourceMappingURL=staticRendering.js.map","let globalIsUsingStaticRendering = false\n\nexport function enableStaticRendering(enable: boolean) {\n globalIsUsingStaticRendering = enable\n}\n\nexport function isUsingStaticRendering(): boolean {\n return globalIsUsingStaticRendering\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { forwardRef, memo } from \"react\";\nimport { isUsingStaticRendering } from \"./staticRendering\";\nimport { useObserver } from \"./useObserver\";\n// n.b. base case is not used for actual typings or exported in the typing files\nexport function observer(baseComponent, options) {\n // The working of observer is explained step by step in this talk: https://www.youtube.com/watch?v=cPF4iBedoF0&feature=youtu.be&t=1307\n if (isUsingStaticRendering()) {\n return baseComponent;\n }\n var realOptions = __assign({ forwardRef: false }, options);\n var baseComponentName = baseComponent.displayName || baseComponent.name;\n var wrappedComponent = function (props, ref) {\n return useObserver(function () { return baseComponent(props, ref); }, baseComponentName);\n };\n wrappedComponent.displayName = baseComponentName;\n // Support legacy context: `contextTypes` must be applied before `memo` \n if (baseComponent.contextTypes) {\n wrappedComponent.contextTypes = baseComponent.contextTypes;\n }\n // memo; we are not interested in deep updates\n // in props; we assume that if deep objects are changed,\n // this is in observables, which would have been tracked anyway\n var memoComponent;\n if (realOptions.forwardRef) {\n // we have to use forwardRef here because:\n // 1. it cannot go before memo, only after it\n // 2. forwardRef converts the function into an actual component, so we can't let the baseComponent do it\n // since it wouldn't be a callable function anymore\n memoComponent = memo(forwardRef(wrappedComponent));\n }\n else {\n memoComponent = memo(wrappedComponent);\n }\n copyStaticProperties(baseComponent, memoComponent);\n memoComponent.displayName = baseComponentName;\n if (\"production\" !== process.env.NODE_ENV) {\n Object.defineProperty(memoComponent, 'contextTypes', {\n set: function () {\n throw new Error(\"[mobx-react-lite] `\" + (this.displayName || 'Component') + \".contextTypes` must be set before applying `observer`.\");\n }\n });\n }\n return memoComponent;\n}\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nvar hoistBlackList = {\n $$typeof: true,\n render: true,\n compare: true,\n type: true\n};\nfunction copyStaticProperties(base, target) {\n Object.keys(base).forEach(function (key) {\n if (!hoistBlackList[key]) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key));\n }\n });\n}\n//# sourceMappingURL=observer.js.map","import { forwardRef, memo } from \"react\"\n\nimport { isUsingStaticRendering } from \"./staticRendering\"\nimport { useObserver } from \"./useObserver\"\n\nexport interface IObserverOptions {\n readonly forwardRef?: boolean\n}\n\nexport function observer

(\n baseComponent: React.RefForwardingComponent,\n options: IObserverOptions & { forwardRef: true }\n): React.MemoExoticComponent<\n React.ForwardRefExoticComponent & React.RefAttributes>\n>\n\nexport function observer

(\n baseComponent: React.FunctionComponent

,\n options?: IObserverOptions\n): React.FunctionComponent

\n\nexport function observer<\n C extends React.FunctionComponent | React.RefForwardingComponent,\n Options extends IObserverOptions\n>(\n baseComponent: C,\n options?: Options\n): Options extends { forwardRef: true }\n ? C extends React.RefForwardingComponent\n ? C &\n React.MemoExoticComponent<\n React.ForwardRefExoticComponent<\n React.PropsWithoutRef

& React.RefAttributes\n >\n >\n : never /* forwardRef set for a non forwarding component */\n : C & { displayName: string }\n\n// n.b. base case is not used for actual typings or exported in the typing files\nexport function observer

(\n baseComponent: React.RefForwardingComponent | React.FunctionComponent

,\n options?: IObserverOptions\n) {\n // The working of observer is explained step by step in this talk: https://www.youtube.com/watch?v=cPF4iBedoF0&feature=youtu.be&t=1307\n if (isUsingStaticRendering()) {\n return baseComponent\n }\n\n const realOptions = {\n forwardRef: false,\n ...options\n }\n\n const baseComponentName = baseComponent.displayName || baseComponent.name\n\n const wrappedComponent = (props: P, ref: React.Ref) => {\n return useObserver(() => baseComponent(props, ref), baseComponentName)\n }\n wrappedComponent.displayName = baseComponentName\n\n // Support legacy context: `contextTypes` must be applied before `memo` \n if ((baseComponent as any).contextTypes) {\n wrappedComponent.contextTypes = (baseComponent as any).contextTypes;\n }\n\n // memo; we are not interested in deep updates\n // in props; we assume that if deep objects are changed,\n // this is in observables, which would have been tracked anyway\n let memoComponent\n if (realOptions.forwardRef) {\n // we have to use forwardRef here because:\n // 1. it cannot go before memo, only after it\n // 2. forwardRef converts the function into an actual component, so we can't let the baseComponent do it\n // since it wouldn't be a callable function anymore\n memoComponent = memo(forwardRef(wrappedComponent))\n } else {\n memoComponent = memo(wrappedComponent)\n }\n\n copyStaticProperties(baseComponent, memoComponent)\n memoComponent.displayName = baseComponentName\n\n if (\"production\" !== process.env.NODE_ENV) {\n Object.defineProperty(memoComponent, 'contextTypes', {\n set() {\n throw new Error(`[mobx-react-lite] \\`${this.displayName || 'Component'}.contextTypes\\` must be set before applying \\`observer\\`.`);\n }\n })\n }\n\n return memoComponent\n}\n\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nconst hoistBlackList: any = {\n $$typeof: true,\n render: true,\n compare: true,\n type: true\n}\n\nfunction copyStaticProperties(base: any, target: any) {\n Object.keys(base).forEach(key => {\n if (!hoistBlackList[key]) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key)!)\n }\n })\n}\n","import { useObserver } from \"./useObserver\";\nfunction ObserverComponent(_a) {\n var children = _a.children, render = _a.render;\n var component = children || render;\n if (typeof component !== \"function\") {\n return null;\n }\n return useObserver(component);\n}\nif (\"production\" !== process.env.NODE_ENV) {\n ObserverComponent.propTypes = {\n children: ObserverPropsCheck,\n render: ObserverPropsCheck\n };\n}\nObserverComponent.displayName = \"Observer\";\nexport { ObserverComponent as Observer };\nfunction ObserverPropsCheck(props, key, componentName, location, propFullName) {\n var extraKey = key === \"children\" ? \"render\" : \"children\";\n var hasProp = typeof props[key] === \"function\";\n var hasExtraProp = typeof props[extraKey] === \"function\";\n if (hasProp && hasExtraProp) {\n return new Error(\"MobX Observer: Do not use children and render in the same time in`\" + componentName);\n }\n if (hasProp || hasExtraProp) {\n return null;\n }\n return new Error(\"Invalid prop `\" +\n propFullName +\n \"` of type `\" +\n typeof props[key] +\n \"` supplied to\" +\n \" `\" +\n componentName +\n \"`, expected `function`.\");\n}\n//# sourceMappingURL=ObserverComponent.js.map","import { useObserver } from \"./useObserver\"\n\ninterface IObserverProps {\n children?(): React.ReactElement | null\n render?(): React.ReactElement | null\n}\n\nfunction ObserverComponent({ children, render }: IObserverProps) {\n const component = children || render\n if (typeof component !== \"function\") {\n return null\n }\n return useObserver(component)\n}\nif (\"production\" !== process.env.NODE_ENV) {\n ObserverComponent.propTypes = {\n children: ObserverPropsCheck,\n render: ObserverPropsCheck\n }\n}\nObserverComponent.displayName = \"Observer\"\n\nexport { ObserverComponent as Observer }\n\nfunction ObserverPropsCheck(\n props: { [k: string]: any },\n key: string,\n componentName: string,\n location: any,\n propFullName: string\n) {\n const extraKey = key === \"children\" ? \"render\" : \"children\"\n const hasProp = typeof props[key] === \"function\"\n const hasExtraProp = typeof props[extraKey] === \"function\"\n if (hasProp && hasExtraProp) {\n return new Error(\n \"MobX Observer: Do not use children and render in the same time in`\" + componentName\n )\n }\n\n if (hasProp || hasExtraProp) {\n return null\n }\n return new Error(\n \"Invalid prop `\" +\n propFullName +\n \"` of type `\" +\n typeof props[key] +\n \"` supplied to\" +\n \" `\" +\n componentName +\n \"`, expected `function`.\"\n )\n}\n","import { observable } from \"mobx\";\nimport { useState } from \"react\";\nexport function useLocalObservable(initializer, annotations) {\n return useState(function () { return observable(initializer(), annotations, { autoBind: true }); })[0];\n}\n//# sourceMappingURL=useLocalObservable.js.map","import { observable, AnnotationsMap } from \"mobx\"\nimport { useState } from \"react\"\n\nexport function useLocalObservable>(\n initializer: () => TStore,\n annotations?: AnnotationsMap\n): TStore {\n return useState(() => observable(initializer(), annotations, { autoBind: true }))[0]\n}\n","import { observable } from \"mobx\";\nimport { useState } from \"react\";\nimport { useDeprecated } from \"./utils/utils\";\nimport { useAsObservableSource } from \"./useAsObservableSource\";\nexport function useLocalStore(initializer, current) {\n if (\"production\" !== process.env.NODE_ENV)\n useDeprecated(\"[mobx-react-lite] 'useLocalStore' is deprecated, use 'useLocalObservable' instead.\");\n var source = current && useAsObservableSource(current);\n return useState(function () { return observable(initializer(source), undefined, { autoBind: true }); })[0];\n}\n//# sourceMappingURL=useLocalStore.js.map","import { observable } from \"mobx\"\nimport { useState } from \"react\"\n\nimport { useDeprecated } from \"./utils/utils\"\nimport { useAsObservableSource } from \"./useAsObservableSource\"\n\nexport function useLocalStore>(initializer: () => TStore): TStore\nexport function useLocalStore, TSource extends object>(\n initializer: (source: TSource) => TStore,\n current: TSource\n): TStore\nexport function useLocalStore, TSource extends object>(\n initializer: (source?: TSource) => TStore,\n current?: TSource\n): TStore {\n if (\"production\" !== process.env.NODE_ENV)\n useDeprecated(\n \"[mobx-react-lite] 'useLocalStore' is deprecated, use 'useLocalObservable' instead.\"\n )\n const source = current && useAsObservableSource(current)\n return useState(() => observable(initializer(source), undefined, { autoBind: true }))[0]\n}\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { useDeprecated } from \"./utils/utils\";\nimport { observable, runInAction } from \"mobx\";\nimport { useState } from \"react\";\nexport function useAsObservableSource(current) {\n if (\"production\" !== process.env.NODE_ENV)\n useDeprecated(\"[mobx-react-lite] 'useAsObservableSource' is deprecated, please store the values directly in an observable, for example by using 'useLocalObservable', and sync future updates using 'useEffect' when needed. See the README for examples.\");\n var _a = __read(useState(function () { return observable(current, {}, { deep: false }); }), 1), res = _a[0];\n runInAction(function () {\n Object.assign(res, current);\n });\n return res;\n}\n//# sourceMappingURL=useAsObservableSource.js.map","import { useDeprecated } from \"./utils/utils\"\nimport { observable, runInAction } from \"mobx\"\nimport { useState } from \"react\"\n\nexport function useAsObservableSource(current: TSource): TSource {\n if (\"production\" !== process.env.NODE_ENV)\n useDeprecated(\n \"[mobx-react-lite] 'useAsObservableSource' is deprecated, please store the values directly in an observable, for example by using 'useLocalObservable', and sync future updates using 'useEffect' when needed. See the README for examples.\"\n )\n const [res] = useState(() => observable(current, {}, { deep: false }))\n runInAction(() => {\n Object.assign(res, current)\n })\n return res\n}\n","import { useContext } from 'react';\nimport StoreContext from './StoreContext';\n\nexport default () => useContext(StoreContext);\n","import { createContext } from 'react';\nimport BuildingStore from './BuildingStore';\nimport BuildingDetailStore from './BuildingDetailStore';\nimport ModalStore from './ModalStore';\nimport CreateProjectStore from './CreateProjectStore';\nimport ProjectStore from './ProjectStore';\nimport TaskStore from './TaskStore';\nimport UIStore from './UIStore';\nimport UserStore from './UserStore';\nimport ProjectDetailStore from './ProjectDetailStore';\nimport ChatStore from './ChatStore';\nimport TaskEditorStore from './TaskEditorStore';\nimport SurveyStore from './SurveyStore';\n// TODO change name to MapEditorStore\nimport EditorStore from './EditorStore';\nimport FeatureSettingsStore from './FeatureSettingsStore';\nimport MapStore from './MapStore';\n\nexport default createContext({\n buildingStore: BuildingStore,\n buildingDetailStore: BuildingDetailStore,\n modalStore: ModalStore,\n projectStore: ProjectStore,\n taskStore: TaskStore,\n uiStore: UIStore,\n userStore: UserStore,\n createProjectStore: CreateProjectStore,\n projectDetailStore: ProjectDetailStore,\n taskEditorStore: TaskEditorStore,\n mapStore: MapStore,\n editorStore: EditorStore,\n featureSettingsStore: FeatureSettingsStore,\n surveyStore: SurveyStore,\n chatStore: ChatStore\n});\n","import {\n observable,\n action,\n reaction,\n keys,\n computed,\n makeObservable\n} from 'mobx';\nimport { debounce } from 'debounce';\nimport agent from '../lib/agent';\nimport ProjectStore from './ProjectStore';\nimport MapStore from './MapStore';\nimport {\n formatBuildingData,\n formatBuildingPower,\n formatBuildingDetails\n} from '../lib/formatData';\n\nconst parseFilters = filters => {\n const q = {\n filters: {}\n };\n\n Object.keys(filters).forEach(filterName => {\n const filterValue = filters[filterName];\n if (filterValue === null || filterValue === '') {\n return;\n }\n\n if (filterName === 'geo_polygon') {\n q.filters[filterName] = filterValue;\n return;\n }\n\n if (typeof filterValue === 'object') {\n if (filterName.match(/^estimates_int/i)) {\n if (filterValue.start) {\n q.filters[`${filterName}.low`] = {\n gte: filterValue.start\n };\n }\n\n if (filterValue.end) {\n q.filters[`${filterName}.high`] = {\n lte: filterValue.end\n };\n }\n } else if (filterName.match(/^incentives/i)) {\n q.filters[filterName] = filterValue;\n } else if (filterName === 'radius') {\n q.filters.radius = filterValue;\n } else if (filterName === 'sort') {\n q.sort = filterValue;\n } else {\n q.filters[filterName] = {\n gte: filterValue.start,\n lte: filterValue.end\n };\n }\n } else if (!['skip', 'limit', 'favourites'].includes(filterName)) {\n q.filters[filterName] = filterValue;\n } else {\n q[filterName] = filterValue;\n }\n });\n\n return q;\n};\n\nclass Store {\n buildings = new Map();\n activeProject = null;\n aggregations = null;\n emissions = null;\n financials = null;\n filters = {};\n projectId = null;\n sort = '';\n\n pickedResults = new Set();\n savedSearches = [];\n totalResults = {\n value: 0,\n relation: 'gte'\n };\n hexagons = [];\n points = [];\n bbox = null;\n location = null;\n\n resultMap = new Map();\n\n setResults(results) {\n this.resultMap = results;\n }\n\n updateBuildingName(buildingId, buildingName) {\n const building = this.resultMap.get(buildingId);\n const updatedBuilding = { ...building, building_name: buildingName };\n this.resultMap.set(buildingId, updatedBuilding);\n const newResults = new Map(this.resultMap);\n newResults.set(buildingId, updatedBuilding);\n this.resultMap = newResults;\n }\n\n loadResult = async ids => {\n if (!ids.length) {\n return;\n }\n\n // Set state to loading\n ids.forEach(id => {\n this.resultMap.set(id, 1);\n });\n\n const { data } = await agent.Building.getBuildingsById(ids);\n\n data.data.forEach(item => {\n this.resultMap.set(item.id, item);\n });\n\n return data;\n };\n\n debounceLoadResult = debounce(this.loadResult, 500);\n\n get = id => {\n return this.resultMap.get(id);\n };\n\n pickAllResults = () => {\n this.pickedResults = new Set([...this.resultMap.keys()]);\n };\n\n createProjectFromPicked = async params => {\n const pickedResults = [...this.pickedResults];\n if (!pickedResults.size) return;\n this.clearPicked();\n\n const project = await ProjectStore.createProject({\n ...params,\n pickedResults\n });\n ProjectStore.fetchAll();\n\n return project;\n };\n\n setSort = value => {\n const selected = this.sort && this.sort.includes(value);\n if (selected && this.sort.includes('desc')) {\n this.sort = `${value}:asc`;\n } else {\n this.sort = `${value}:desc`;\n }\n return this.sort;\n };\n\n constructor() {\n makeObservable(this, {\n projectId: observable,\n buildings: observable,\n activeProject: observable,\n aggregations: observable,\n filters: observable,\n financials: observable,\n emissions: observable,\n sort: observable,\n pickedResults: observable,\n savedSearches: observable,\n totalResults: observable,\n hexagons: observable,\n points: observable,\n bbox: observable,\n location: observable,\n resultMap: observable,\n loadResult: action,\n debounceLoadResult: action,\n get: action,\n pickAllResults: action,\n createProjectFromPicked: action,\n setSort: action,\n clearPicked: action,\n pickResult: action,\n unPickResult: action,\n setFilter: action,\n clearFilters: action,\n getFilterValue: action,\n filtersCount: computed,\n fetchBuilding: action,\n clearAllFilters: action,\n setFilters: action,\n restoreFilters: action,\n saveFilters: action,\n deleteSavedSearch: action,\n getSavedSearches: action,\n fetch: action,\n loadBuilding: action,\n getWeather: action,\n getPlaces: action,\n getPowerOptions: action,\n params: computed,\n updateBuildingName: action\n });\n }\n\n clearPicked() {\n this.pickedResults = new Set();\n }\n\n pickResult(id) {\n console.log('pick: pickResult', id);\n this.pickedResults.add(id);\n }\n\n unPickResult(id) {\n this.pickedResults.delete(id);\n }\n\n setFilter = (name, value) => {\n const newFilters = { ...this.filters };\n if (value === null) {\n delete newFilters[name];\n } else {\n newFilters[name] = value;\n }\n this.filters = newFilters;\n };\n\n clearFilters = () => {\n this.filters = {};\n this.sort = '';\n };\n\n getFilterValue(name) {\n return this.filters[name] || null;\n }\n\n get filtersCount() {\n return keys(this.filters).length;\n }\n\n get params() {\n return parseFilters(this.filters);\n }\n\n fetchBuilding = async id => {\n const { data } = await agent.Building.getBuildingsById([id], 1);\n\n return data.data[0];\n };\n\n clearAllFilters() {\n this.filters = {};\n }\n\n setFilters = newFilters => {\n this.filters = newFilters;\n };\n\n restoreFilters = async savedSearchId => {\n const response = await agent.SavedSearchFilters.get(savedSearchId);\n this.setFilters(response.data?.data?.query);\n };\n\n saveFilters = async (name, projectId) => {\n const response = await agent.SavedSearchFilters.create(\n name,\n this.filters,\n projectId\n );\n const newSavedSearches = [...this.savedSearches, response.data.data];\n this.savedSearches = newSavedSearches;\n };\n\n deleteSavedSearch = async savedSearchId => {\n const newSavedSearches = [...this.savedSearches].filter(\n savedSearch => savedSearch.id !== savedSearchId\n );\n\n this.savedSearches = newSavedSearches;\n\n agent.SavedSearchFilters.delete(savedSearchId);\n };\n\n getSavedSearches = async projectId => {\n const response = await agent.SavedSearchFilters.getAll({\n projectId\n });\n this.savedSearches = response.data.data;\n };\n\n fetch = async () => {\n this.results = [];\n this.points = [];\n // Fill results with loading results for visual feedback\n const arr = [...new Array(10)].map((item, index) => {\n return [index, 0];\n });\n this.resultMap = new Map(arr);\n\n const params = parseFilters(this.filters);\n\n if (this.sort) {\n params.sort = this.sort;\n }\n\n params.version = 'v2';\n\n const { data } = await agent.Building.getBuildings(params);\n\n const map = data.data.reduce((acc, result) => {\n acc[result.id] = result;\n return acc;\n }, {});\n\n if (data.ids) {\n const arr = data.ids.map(value => {\n const [id] = value;\n if (map[id]) {\n return [id, map[id]];\n }\n return [id, 0];\n });\n\n this.resultMap = new Map(arr);\n }\n\n this.location = data.location || null;\n\n if (data.hexagons?.length) {\n this.hexagons = data.hexagons;\n } else {\n this.hexagons = [];\n }\n\n // Don't change the order since observers depend on it\n this.bbox = data.bbox;\n\n if (!this.filters.geo_polygon) {\n MapStore.setBounds(data.bbox);\n }\n\n if (this.filters.project_id) {\n this.projectId = this.filters.project_id;\n }\n\n this.points = data.ids;\n this.financials = data.financials;\n this.emissions = data.emissions;\n\n this.totalResults = data.total;\n this.aggregations = data.aggregations;\n };\n\n loadBuilding = async buildingId => {\n const { data } = await agent.Building.getBuilding(buildingId);\n\n if (data.data) {\n const formattedData = formatBuildingData(data.data);\n const building = {\n ...formattedData,\n formatted_details: data.data.formatted_details,\n details: formatBuildingDetails(data.data)\n };\n\n // console.log('BUILDING', formattedData, data.data);\n\n this.buildings.set(data.data.id, building);\n\n return building;\n }\n return null;\n };\n\n getWeather = async (buildingId, lon, lat) => {\n const { data } = await agent.Building.getWeather(lon, lat);\n if (data?.data) {\n const weather = data.data.wind_speed_temp.reduce(\n (acc, item) => {\n acc.weather_timestamp.push(item[0] * 1000);\n acc.wind_speed.push(item[1]);\n acc.temperature.push(item[2]);\n return acc;\n },\n {\n weather_timestamp: [],\n wind_speed: [],\n temperature: []\n }\n );\n const building = this.buildings.get(buildingId);\n this.buildings.set(buildingId, {\n ...building,\n ...weather\n });\n }\n };\n\n getPowerOptions = async (buildingId, lon, lat) => {\n const { data } = await agent.Building.getPowerOptions(lon, lat);\n if (data?.data) {\n const {\n power_line_closest_point,\n power_line_geometry,\n power_line_id,\n power_plant_geometry\n } = data.data;\n const building = this.buildings.get(buildingId);\n this.buildings.set(buildingId, {\n ...building,\n details: {\n ...building.details,\n ...formatBuildingPower(data.data)\n },\n closest_power_plant: true,\n power_line: {\n power_line_closest_point,\n power_line_geometry,\n power_line_id,\n power_plant_geometry\n }\n });\n }\n };\n\n getPlaces = async (buildingId, lon, lat) => {\n const { data } = await agent.Building.getPlaces(lon, lat);\n if (data?.data) {\n const building = this.buildings.get(buildingId);\n this.buildings.set(buildingId, {\n ...building,\n places: data.data\n });\n }\n };\n}\n\nconst store = new Store();\n\nreaction(\n () => JSON.stringify([store.filters]),\n debounce(() => {\n if (\n (Object.keys(store.filters).includes('addresses') &&\n store.filters.addresses.length) === 0 &&\n Object.keys(store.filters).length === 1\n ) {\n return;\n }\n store.fetch();\n }, 350)\n);\n\nexport default store;\n","export function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });\n } else obj[key] = value;\n\n return obj;\n}\nexport { _define_property as _ };\n","import { _define_property } from \"./_define_property.js\";\n\nexport function _object_spread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(\n Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n })\n );\n }\n\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n\n return target;\n}\nexport { _object_spread as _ };\n","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\nexport function _object_spread_props(target, source) {\n source = source != null ? source : {};\n\n if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\nexport { _object_spread_props as _ };\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","import axios from 'axios';\nimport qs from 'qs';\nimport e2eInstance from './axios';\nimport conf from '../conf';\n\nconst instance = axios.create({\n baseURL: conf.PROSPECTING_API_URL,\n timeout: 30000,\n withCredentials: true,\n paramsSerializer: params => qs.stringify(params, { skipNulls: true })\n});\n\nconst upload = (url, filesLike, onProgress) => {\n let formData = null;\n if (Array.isArray(filesLike)) {\n formData = new FormData();\n filesLike.forEach(file => formData.append('file[]', file));\n }\n\n if (filesLike instanceof FormData) formData = filesLike;\n if (!formData) throw new Error(`Files must be either FormData or array`);\n\n return e2eInstance.post(url, formData, {\n timeout: Infinity,\n headers: {\n 'Content-Type': 'multipart/form-data'\n },\n onUploadProgress: event => {\n const percentage = (event.loaded / event.total) * 100;\n return onProgress(percentage, event);\n }\n });\n};\n\nconst Dataset = {\n getFeature: (datasetId, featureId) =>\n e2eInstance.get(`/datasets/${datasetId}/feature/${featureId}`, {\n timeout: 100000\n }),\n getDataset: datasetId => e2eInstance.get(`/datasets/${datasetId}`),\n getFeatures: (datasetId, layerId) =>\n e2eInstance.get(`/datasets/${datasetId}/features`, {\n params: {\n layer_id: layerId\n }\n }),\n getLayers: datasetId => e2eInstance.get(`/datasets/${datasetId}/layers`),\n createLayer: (datasetId, data) =>\n e2eInstance.post(`/datasets/${datasetId}/layer`, data),\n updateLayer: (datasetId, layerId, params) =>\n e2eInstance.patch(`/datasets/${datasetId}/layer/${layerId}`, params),\n updateFeature: (datasetId, feature) =>\n e2eInstance.patch(`/datasets/${datasetId}/${feature.id}`, feature),\n get: groupId =>\n e2eInstance.get(`/datasets`, {\n params: {\n group_id: groupId\n }\n }),\n getLayer: (datasetId, layerId) =>\n e2eInstance.get(`/datasets/${datasetId}/layer/${layerId}`),\n createFeature: (datasetId, feature) =>\n e2eInstance.post(`/datasets/${datasetId}/${feature.id}`, feature),\n updateFeatureProperties: (datasetId, featureId, properties) =>\n e2eInstance.post(\n `/datasets/${datasetId}/${featureId}/properties`,\n properties\n ),\n deleteFeature: (datasetId, featureId) =>\n e2eInstance.delete(`/datasets/${datasetId}/${featureId}`),\n createDataset: data => e2eInstance.put('/datasets', data),\n updateDataset: (datasetId, params) =>\n e2eInstance.patch(`/datasets/${datasetId}`, params),\n deleteDataset: datasetId => e2eInstance.delete(`/datasets/${datasetId}`),\n deleteLayer: (datasetId, layerId) =>\n e2eInstance.delete(`/datasets/${datasetId}/layer/${layerId}`),\n upload: (formData, params) =>\n e2eInstance.post('datasets/upload', formData, params),\n uploadDataset: (\n files,\n { name, description, projectId, onUploadProgress }\n ) => {\n const formData = new FormData();\n formData.append('name', name);\n formData.append('description', description);\n formData.append('projectId', projectId);\n files.forEach(file => {\n formData.append('file', file);\n });\n\n return e2eInstance.post('datasets/upload', formData, {\n timeout: Infinity,\n headers: {\n 'Content-Type': 'multipart/form-data',\n 'Cache-Control': 'no-cache, no-store'\n },\n onUploadProgress\n });\n },\n removeDatasetProject: (datasetId, projectId) =>\n e2eInstance.delete(`/datasets/${datasetId}/project/${projectId}`),\n addDatasetProject: (datasetId, projectId) =>\n e2eInstance.get(`/datasets/${datasetId}/project/${projectId}`),\n search: (term, groupId) =>\n e2eInstance.get('datasets/search', {\n params: {\n term,\n group_id: groupId\n }\n })\n};\n\nconst Building = {\n runOptimization: (buildingId, params) =>\n e2eInstance.post(`/api/building/${buildingId}/optimization`, params),\n addFiles: (buildingId, fileIds) =>\n e2eInstance.patch(`/building/${buildingId}/files/${fileIds.join(';')}`),\n getBuildings: params =>\n instance.post('/building', {\n ...params\n }),\n getBuildingsById: (ids, limit = 30) =>\n instance.get('/building', {\n params: {\n ids,\n limit\n }\n }),\n getBuilding: (buildingId, projectId) =>\n instance.get(\n `/building/${buildingId}`,\n projectId\n ? {\n project_id: projectId\n }\n : {}\n ),\n getPlaces: (lon, lat) => instance.get(`/places`, { params: { lon, lat } }),\n getPowerOptions: (lon, lat) =>\n instance.get(`/powerline`, { params: { lon, lat } }),\n getWeather: (lon, lat) => instance.get(`/weather`, { params: { lon, lat } }),\n getPredictions: buildingId =>\n instance.get(`/building/${buildingId}/predictions?period=7D`),\n getHoverInfo: (longitude, latitude) =>\n e2eInstance.get(`/points/hoverinfo`, { params: { longitude, latitude } })\n};\n\nconst Project = {\n getProject: projectId => e2eInstance.get(`/project/${projectId}`),\n getProjectTerms: projectId => e2eInstance.get(`/project/${projectId}/terms`),\n getStatus: projectId => e2eInstance.get(`/project/${projectId}/status`),\n createProjectProposal: (projectId, files, questions, signature) =>\n e2eInstance.post(`/project/${projectId}/proposals`, {\n files,\n questions,\n signature\n }),\n getProjectPredictions: projectId =>\n e2eInstance.get(`/project/${projectId}/predictions?period=7D`),\n getProjectBuildingPredictions: (projectId, buildingId) =>\n e2eInstance.get(\n `/project/${projectId}/building/${buildingId}/predictions?period=7D`\n ),\n getProjectFinancials: projectId =>\n e2eInstance.get(`/project/${projectId}/financials`),\n getProjectRFPQuestions: projectId =>\n e2eInstance.get(`/project/${projectId}/rfp_questions`),\n setProjectRFPQuestions: (projectId, questions) =>\n e2eInstance.patch(`/project/${projectId}/rfp_questions`, questions),\n createProjectRFPQuestion: (projectId, data) =>\n e2eInstance.post(`/project/${projectId}/rfp_question`, data),\n deleteProjectRFPQuestion: (projectId, questionId) =>\n e2eInstance.delete(`/project/${projectId}/rfp_question/${questionId}`),\n updateProjectRFPQuestion: (projectId, questionId, data) =>\n e2eInstance.patch(`/project/${projectId}/rfp_question/${questionId}`, data),\n updateProjectTerms: (projectId, termsId, data) =>\n e2eInstance.patch(`/project/${projectId}/terms/${termsId}`, data),\n createProjectTerms: (projectId, terms) =>\n e2eInstance.post(`/project/${projectId}/terms`, terms),\n deleteProjectTerms: (projectId, termsId) =>\n e2eInstance.delete(`/project/${projectId}/terms/${termsId}`),\n getProjectTermsById: (projectId, termsId) =>\n e2eInstance.get(`/project/${projectId}/terms/${termsId}`),\n hasAccess: projectId => e2eInstance.get(`/project/${projectId}/has_access`),\n updateProject: (projectId, data) =>\n e2eInstance.patch(`/project/${projectId}`, data),\n getProjects: () => e2eInstance.get(`/project`),\n deleteProject: projectId => e2eInstance.delete(`/project/${projectId}`),\n getProjectBuilding: (projectId, buildingId) =>\n e2eInstance.get(`/project/${projectId}/building/${buildingId}`),\n getProjectFeature: (projectId, featureId) =>\n e2eInstance.get(`/project/${projectId}/feature/${featureId}`),\n refreshProjectFinancials: projectId =>\n e2eInstance.get(`/project/${projectId}/financials/refresh`),\n updateProjectBuilding: (projectId, buildingId, buildingData) =>\n e2eInstance.post(\n `/project/${projectId}/building/${buildingId}`,\n buildingData\n ),\n getBuildingAnalyticsSettings: (projectId, buildingId) =>\n e2eInstance.get(\n `/project/${projectId}/building/${buildingId}/analytics_settings`\n ),\n getProjectVendors: projectId =>\n e2eInstance.get(`/project/${projectId}/vendors`),\n getProjectBuildings: projectId =>\n e2eInstance.get(`/project/${projectId}/buildings`),\n getProjectLayers: projectId =>\n e2eInstance.get(`/project/${projectId}/layers`),\n getBuildingFinancials: (projectId, buildingId) =>\n e2eInstance.get(`/project/${projectId}/building/${buildingId}/financials`),\n updateBuildingSettings: (projectId, buildingId, settings) =>\n e2eInstance.patch(\n `/project/${projectId}/building/${buildingId}/settings`,\n settings\n ),\n createBuilding: (projectId, buildingData) =>\n e2eInstance.post(`/project/${projectId}/add`, buildingData),\n\n addBuilding: (projectId, buildingIds) =>\n e2eInstance.post(`/project/${projectId}/add`, buildingIds),\n addBuildingByImportId: (projectId, importId) =>\n e2eInstance.post(`/project/${projectId}/add`, {\n import_id: importId\n }),\n createProjectByImportId: (importId, projectName = 'Imported Project') =>\n e2eInstance.post('/project', {\n name: projectName,\n importId\n }),\n removeBuilding: (projectId, buildingIds) =>\n e2eInstance.post(`/project/${projectId}/remove`, buildingIds),\n createProject: params => e2eInstance.post('/project', params),\n updateProjectBuildingGeometry: (projectId, buildingId, geometry) =>\n e2eInstance.post(\n `/project/${projectId}/building/${buildingId}/geometry`,\n geometry\n ),\n acceptInfoMessage: projectId =>\n e2eInstance.post(`/project/${projectId}/accept_infomessage`),\n setProjectSettings: (projectId, settingsData) =>\n e2eInstance.patch(`/project/${projectId}/settings`, settingsData),\n getSystems: projectId =>\n e2eInstance.get('/crawler/system', { params: { project_id: projectId } }),\n getSystemData: (systemId, timeWindow, time) =>\n e2eInstance.get(`/crawler/system/${systemId}/data`, {\n params: { timeWindow, time }\n }),\n getFiles: (projectId, fileIds = []) =>\n e2eInstance.get(`/project/${projectId}/files/${fileIds.join(';')}`),\n deleteFiles: (projectId, fileIds) =>\n e2eInstance.delete(`/project/${projectId}/files/${fileIds.join(';')}`),\n addFiles: (projectId, fileIds) =>\n e2eInstance.patch(`/project/${projectId}/files/${fileIds.join(';')}`),\n getProposal: (projectId, proposalId) =>\n e2eInstance.get(`/project/${projectId}/proposals/${proposalId}`),\n deleteProposal: (projectId, proposalId) =>\n e2eInstance.delete(`/project/${projectId}/proposals/${proposalId}`),\n getProposals: projectId => e2eInstance.get(`/project/${projectId}/proposals`),\n addProposals: (projectId, fileIds) =>\n e2eInstance.patch(`/project/${projectId}/proposals/${fileIds.join(';')}`),\n addVendors: (projectId, vendorIds) =>\n e2eInstance.post(`/project/${projectId}/share`, vendorIds),\n addMembers: (projectId, memberIds) =>\n e2eInstance.put(`/project/${projectId}/members`, memberIds),\n getChat: projectId => e2eInstance.get(`/project/${projectId}/chat`),\n updateChat: (projectId, chatData) =>\n e2eInstance.post(`/project/${projectId}/chat`, {\n chat: chatData\n }),\n uploadBuildingLoadProfile: (\n projectId,\n buildingId,\n files,\n onProgressCallback\n ) => {\n const url = `/project/${projectId}/building/${buildingId}/load_profile`;\n return upload(url, files, onProgressCallback);\n },\n uploadBuildingRate: (projectId, buildingId, files, onProgressCallback) => {\n const url = `/project/${projectId}/building/${buildingId}/rate`;\n return upload(url, files, onProgressCallback);\n },\n deleteBuildingLoadProfile: (projectId, buildingId) =>\n e2eInstance.delete(\n `/project/${projectId}/building/${buildingId}/load_profile`\n ),\n getVendorSuggestions: (projectId, q) =>\n e2eInstance.get(`/project/${projectId}/vendor_suggestions`, {\n params: { q }\n }),\n addVendor: (projectId, groupIdLike) =>\n e2eInstance.post(`/project/${projectId}/invite_vendor`, {\n id: groupIdLike\n }),\n removeVendor: (projectId, groupId) =>\n e2eInstance.delete(`/project/${projectId}/remove_vendor`, {\n params: {\n group_id: groupId\n }\n }),\n uploadBuildingCSV: (projectId, files, onProgressCallback) => {\n const url = `/importer-service/upload`;\n return upload(url, files, onProgressCallback);\n },\n checkForImport: (importId, importItemIndex) => {\n const url = `/importer-service/import/${importId}/check`;\n return e2eInstance.get(url, {\n params: {\n index: importItemIndex\n }\n });\n },\n uncheckForImport: (importId, importItemIndex) => {\n const url = `/importer-service/import/${importId}/uncheck`;\n // console.log();\n return e2eInstance.get(url, {\n params: {\n index: importItemIndex\n }\n });\n },\n getImportStatus: importId => {\n const url = `/importer-service/status/${importId}`;\n return e2eInstance.get(url);\n }\n};\n\nconst Group = {\n getSettings: groupId => e2eInstance.get(`/group/${groupId}/settings`),\n update: (groupId, data) => e2eInstance.patch(`/group/${groupId}`, data),\n setSettings: (groupId, data) =>\n e2eInstance.post(`/group/${groupId}/settings`, data),\n delete: groupId => e2eInstance.delete(`/group/${groupId}`),\n search: query =>\n e2eInstance.get(`/group/search`, {\n params: {\n query\n }\n })\n};\n\nconst User = {\n validateResetToken: token => e2eInstance.get(`/reset/check/${token}`),\n validateUserActivationToken: token => e2eInstance.get(`/activate/${token}`),\n getGroups: () => e2eInstance.get(`/user/groups`),\n sendPasswordResetEmail: email =>\n e2eInstance.get(`/reset`, {\n params: { email }\n }),\n signup: data => e2eInstance.post(`/signup`, data),\n skipOnboarding: () => e2eInstance.post(`/user/onboarding/skip`),\n logout: () => e2eInstance.get(`/logout`),\n sendFeedback: formData => e2eInstance.post(`/user/feedback`, formData),\n onboardingComplete: () => e2eInstance.post(`/user/onboarding/complete`),\n createSignupProject: data => e2eInstance.post(`/signup/project`, data),\n updateUserInfo: (id, data) => e2eInstance.put(`/user/${id}`, data),\n getUserAvatar: id => e2eInstance.get(`/user/${id}/avatar`),\n submitOnboardingAnswer: (question, answer, userId) =>\n e2eInstance.post(`/user/onboarding/answer`, {\n user_id: userId,\n question,\n answer\n }),\n resetPassword: (send_email, user_id) =>\n e2eInstance.post(`/reset_password`, send_email, user_id)\n};\n\nconst Admin = {\n sendResetPassword: (send_email, user_id) =>\n e2eInstance.post(`/admin/user/reset_password`, send_email, user_id),\n sendMagicLink: userId =>\n e2eInstance.post(`/admin/user/magic_link`, { user_id: userId }),\n}\n\nconst Task = {\n get: id => e2eInstance.get(`/task/${id}`),\n create: params => e2eInstance.post('/task', params),\n update: (id, params) => e2eInstance.patch(`/task/${id}`, params),\n delete: id => e2eInstance.delete(`/task/${id}`),\n getProjectTasks: (projectId, buildingId) =>\n buildingId\n ? e2eInstance.get(`/project/${projectId}/building/${buildingId}/tasks`)\n : e2eInstance.get(`/project/${projectId}/tasks`)\n};\n\nconst Data = {\n getDataset: name => e2eInstance.get(`/data/${name}`),\n getCountries: () => e2eInstance.get(`/data/countries`),\n getISOTerritories: (term) => e2eInstance.get(`/data/iso_territories`, {\n params: {\n term\n }\n }),\n getUtilityTerritories: (term) => e2eInstance.get(`/data/utility_territories`, {\n params: {\n term\n }\n })\n};\n\nconst SavedSearchFilters = {\n get: id => e2eInstance.get(`/user/search/${id}`),\n getAll: ({ projectId }) =>\n e2eInstance.get(`/user/search`, {\n params: {\n project_id: projectId\n }\n }),\n create: (name, data, projectId) =>\n e2eInstance.post(`/user/search`, {\n name,\n data,\n project_id: projectId\n }),\n delete: id => e2eInstance.delete(`/user/search/${id}`)\n};\n\nconst Log = {\n get: (groupId, projectId) =>\n e2eInstance.get(`/log`, {\n params: {\n group_id: groupId,\n project_id: projectId\n }\n }),\n getCSV: groupId =>\n e2eInstance.get(`/log/csv`, {\n params: {\n group_id: groupId\n }\n }),\n getItem: id => e2eInstance.get(`/log/${id}`)\n};\n\nconst Survey = {\n addSurvey: (projectId, data) =>\n e2eInstance.post(`/project/${projectId}/survey`, data),\n getSteps: (projectId, buildingId) => e2eInstance.get(`/project/${projectId}/building/${buildingId}/survey`),\n submitAnswer : (projectId, buildingId, stepId, value) => e2eInstance.post(`/project/${projectId}/building/${buildingId}/survey/step/${stepId}`, {\n value\n }),\n utilityDetails: (projectId, buildingId) => e2eInstance.post(`/project/${projectId}/building/${buildingId}/survey/utilitydetails`),\n setFinished: (projectId, buildingId) => e2eInstance.post(`/project/${projectId}/building/${buildingId}/survey/complete`),\n\n addCategory: (data = {\n label: '',\n order: 1,\n description: '',\n }) => e2eInstance.post(`/admin/survey/category`, data),\n\n deleteCategory: (categoryId) => e2eInstance.delete(`/admin/survey/category/${categoryId}`),\n\n addStep: (data = {\n id: '',\n label: '',\n order: 1,\n inputType: 'text',\n buildingId: '',\n description: '',\n }) => e2eInstance.post(`/admin/survey/step`, data),\n\n deleteStep: (stepId) => e2eInstance.delete(`/admin/survey/step/${stepId}`),\n};\n\nconst Workspace = {\n createFolder: (folderId, folderName) =>\n e2eInstance.post(`/workspaces/folders/${folderId}`, {\n name: folderName\n }),\n move: (pathId, newParentId) =>\n e2eInstance.patch(`/workspaces/files/${pathId}`, {\n parentId: newParentId\n }),\n delete: itemIds =>\n e2eInstance.delete(`/workspaces/folders`, {\n data: {\n ids: itemIds\n }\n }),\n renameFolder: (folderId, newName) =>\n e2eInstance.patch(`/workspaces/folders/${folderId}`, {\n name: newName\n }),\n getArchiveUrl: (parentId, fileIds) => {\n return e2eInstance.get(`/workspaces/folders/${parentId}/download`, {\n params: {\n file_ids: fileIds.join(';')\n }\n });\n },\n createFile: (parentId, formData, params) =>\n e2eInstance.post(`/workspaces/${parentId}/files`, formData, params),\n getFile: fileId => e2eInstance.get(`/workspaces/files/${fileId}`),\n get: (id, sortKey) =>\n e2eInstance.get(`/workspaces/folders/${id}`, {\n params: {\n sort: sortKey\n }\n }),\n upload: (parentId, filesLike, onProgress) => {\n let formData = null;\n if (Array.isArray(filesLike)) {\n formData = new FormData();\n filesLike.forEach(file => formData.append('file[]', file));\n }\n\n if (filesLike instanceof FormData) formData = filesLike;\n if (!formData) throw new Error(`Files must be either FormData or array`);\n\n return e2eInstance.post(`/workspaces/${parentId}/files`, formData, {\n timeout: Infinity,\n headers: {\n 'Content-Type': 'multipart/form-data'\n },\n onUploadProgress: event => {\n const percentage = (event.loaded / event.total) * 100;\n return onProgress(percentage, event);\n }\n });\n }\n};\n\nconst Address = {\n geocode: address =>\n e2eInstance.get(`/api/geocode`, {\n params: {\n address,\n key: 'HwphuLg1MaToFC13M49QMG'\n }\n }),\n autocomplete: address =>\n e2eInstance.get(`/api/autocomplete`, {\n params: {\n q: address,\n key: 'HwphuLg1MaToFC13M49QMG'\n }\n })\n};\n\nexport default {\n Address,\n Dataset,\n SavedSearchFilters,\n Data,\n Building,\n Project,\n Group,\n User,\n Admin,\n Task,\n Log,\n Survey,\n Workspace\n};\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'params', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy'];\n var defaultToConfig2Keys = [\n 'baseURL', 'url', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress',\n 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath'\n ];\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys);\n\n var otherKeys = Object\n .keys(config2)\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, function otherKeysDefaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) { // eslint-disable-line func-name-matching\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) { // eslint-disable-line func-name-matching\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) { // eslint-disable-line func-name-matching\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n formatter: formats.formatters[formats['default']],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar stringify = function stringify( // eslint-disable-line func-name-matching\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly,\n charset\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = obj.join(',');\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset) : prefix;\n }\n\n obj = '';\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n if (isArray(obj)) {\n pushToArray(values, stringify(\n obj[key],\n typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly,\n charset\n ));\n } else {\n pushToArray(values, stringify(\n obj[key],\n prefix + (allowDots ? '.' + key : '[' + key + ']'),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly,\n charset\n ));\n }\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.formatter,\n options.encodeValuesOnly,\n options.charset\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = typeof str === 'string' ? str : String(str);\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n merge: merge\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nmodule.exports = {\n 'default': 'RFC3986',\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return value;\n }\n },\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset);\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset);\n val = options.decoder(part.slice(pos + 1), defaults.decoder, charset);\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (val && options.comma && val.indexOf(',') > -1) {\n val = val.split(',');\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options) {\n var leaf = val;\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while ((segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new Error('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n depth: typeof opts.depth === 'number' ? opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options);\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","import axios from 'axios';\nimport qs from 'qs';\nimport conf from '../conf';\n\nconst axiosInstance = axios.create({\n baseURL: conf.E2E_API_URL,\n timeout: 60000,\n withCredentials: true,\n paramsSerializer: params => {\n return qs.stringify(params, { skipNulls: true });\n }\n});\n\nexport default axiosInstance;\n","let E2E_API_URL = `https://api.gridmarket.xyz/`;\nlet PROSPECTING_API_URL = `https://prospecting-api.gridmarket.xyz/`;\nlet MARTIN_API_URL = `https://martin.gridmarket.xyz/`;\nlet TILES_API_URL = 'https://tiles.gridmarket.xyz/';\nlet ENVIRONMENT = 'production';\n\nif (window.location.hostname === 'dev.gridmarket.xyz') {\n E2E_API_URL = `https://api.gridmarket.xyz/`;\n PROSPECTING_API_URL = `https://prospecting-api.gridmarket.xyz/`;\n ENVIRONMENT = 'development';\n}\n\nif (window.location.hostname === 'dev.gridmarket.net') {\n E2E_API_URL = `https://staging.gridmarket.com/e2e-api/`;\n PROSPECTING_API_URL = `https://staging.gridmarket.com/prospecting-api/`;\n MARTIN_API_URL = `https://staging.gridmarket.com/martin/`;\n TILES_API_URL = 'https://staging.gridmarket.com/tiles/';\n ENVIRONMENT = 'staging';\n}\n\nif (window.location.hostname === 'platform.gridmarket.xyz') {\n E2E_API_URL = `https://platform.gridmarket.xyz/e2e-api/`;\n PROSPECTING_API_URL = `https://platform.gridmarket.xyz/prospecting-api/`;\n MARTIN_API_URL = `https://platform.gridmarket.xyz/martin/`;\n TILES_API_URL = 'https://platform.gridmarket.xyz/tiles/';\n ENVIRONMENT = 'development';\n}\n\nif (\n window.location.hostname === 'platform.gridmarket.com' ||\n window.location.hostname === 'live.gridmarket.net'\n) {\n E2E_API_URL = `https://platform.gridmarket.com/e2e-api/`;\n PROSPECTING_API_URL = `https://platform.gridmarket.com/prospecting-api/`;\n MARTIN_API_URL = `https://platform.gridmarket.com/martin/`;\n TILES_API_URL = 'https://platform.gridmarket.com/tiles/';\n ENVIRONMENT = 'production';\n}\n\nif (\n window.location.hostname === 'staging.gridmarket.com' ||\n window.location.hostname === 'localhost' ||\n window.location.hostname === 'devtasks--spontaneous-genie-4ce6f9.netlify.app'\n) {\n E2E_API_URL = `https://staging.gridmarket.com/e2e-api/`;\n PROSPECTING_API_URL = `https://staging.gridmarket.com/prospecting-api/`;\n MARTIN_API_URL = `https://staging.gridmarket.com/martin/`;\n TILES_API_URL = 'https://staging.gridmarket.com/tiles/';\n ENVIRONMENT = 'staging';\n}\n\nexport default {\n E2E_API_URL,\n PROSPECTING_API_URL,\n MARTIN_API_URL,\n TILES_API_URL,\n ENVIRONMENT\n};\n","import {\n action,\n set,\n remove,\n computed,\n observable,\n makeObservable\n} from 'mobx';\nimport axios from '../lib/axios';\nimport agent from '../lib/agent';\nimport { groupBy } from '../lib/utils';\n\nclass Store {\n project = null;\n members = [];\n projects = new Map();\n totalResults = 0;\n resultMap = new Map();\n\n filters = {\n name: ''\n };\n\n removeProject = id => {\n this.projects.delete(id);\n const resultMap = new Map(this.resultMap);\n resultMap.delete(id);\n this.resultMap = resultMap;\n // console.log(JSON.stringify(resultMap.size));\n };\n\n loadProject = async id => {\n try {\n const { data } = await agent.Project.getProject(id);\n\n const hasAccess = data.data.has_access;\n if (typeof hasAccess !== 'undefined' && hasAccess === false) {\n this.removeProject(id);\n return null;\n }\n\n if (data.data) {\n this.projects.set(data.data.id, data.data);\n return this.projects.get(id);\n }\n } catch (err) {\n this.removeProject(id);\n\n return null;\n }\n };\n\n constructor() {\n makeObservable(this, {\n project: observable,\n members: observable,\n projects: observable,\n totalResults: observable,\n resultMap: observable,\n filters: observable,\n loadProject: action,\n groupedProjectsByTerm: computed,\n setFilter: action,\n get: action,\n setResults: action,\n fetchAll: action,\n deleteProject: action,\n getProjectBuilding: action,\n deleteProjectBuilding: action,\n updateProjectBuildingGeometry: action,\n updateProjectBuilding: action,\n createProjectBuilding: action,\n updateProject: action,\n setMembers: action,\n getProjectBuildingFeature: action,\n createProject: action\n });\n }\n\n get groupedProjectsByTerm() {\n const projects = [...this.resultMap.values()].filter(project => {\n if (!this.filters.name) return true;\n return new RegExp(this.filters.name, 'i').test(project.name);\n });\n\n const groupedProjects = groupBy(projects, 'status');\n\n return groupedProjects;\n }\n\n setFilter = (name, value) => {\n if (value === null) {\n remove(this.filters, name, value);\n return;\n }\n set(this.filters, name, value);\n };\n\n get = id => {\n return this.projects.get(id);\n };\n\n setResults(results) {\n this.resultMap = results;\n }\n\n fetchAll = async () => {\n const { data } = await agent.Project.getProjects();\n const arr = data.data.map(result => {\n return [result.id, result];\n });\n\n this.resultMap = new Map(arr);\n };\n\n deleteProject = async id => {\n const { data } = await agent.Project.deleteProject(id);\n const currentResults = new Map(this.resultMap);\n currentResults.delete(id);\n this.resultMap = currentResults;\n\n return data.data;\n };\n\n getProjectBuilding = async (projectId, buildingId) => {\n const { data } = await agent.Project.getProjectBuilding(\n projectId,\n buildingId\n );\n return data.data;\n };\n\n deleteProjectBuilding = async (projectId, buildingId) => {\n // const currentResults = new Map(this.resultMap);\n // const project = currentResults.get(projectId);\n // project.buildings = project.buildings.filter(b => b.id !== buildingId);\n // currentResults.set(project.id, project);\n // this.resultMap = currentResults;\n\n const { data } = await agent.Project.removeBuilding(projectId, [\n {\n id: buildingId\n }\n ]);\n\n return data;\n };\n\n updateProjectBuildingGeometry = async (projectId, buildingId, geometry) => {\n agent.Project.updateProjectBuildingGeometry(\n projectId,\n buildingId,\n geometry\n );\n };\n\n updateProjectBuilding = async (projectId, buildingData) => {\n const { data } = await agent.Project.updateProjectBuilding(\n projectId,\n buildingData.id,\n buildingData\n );\n return data.data;\n };\n\n createProjectBuilding = async (projectId, buildingData) => {\n const { data } = await agent.Project.createBuilding(\n projectId,\n buildingData\n );\n return data.data;\n };\n\n updateProject = async (id, params) => {\n const { data } = await axios.patch(`/project/${id}`, params);\n const project = this.resultMap.get(id);\n if (project) {\n const resultMap = new Map(this.resultMap);\n\n resultMap.set(id, {\n ...project,\n name: data.data.name,\n color: data.data.color\n });\n\n this.resultMap = resultMap;\n }\n };\n\n setMembers = async members => {\n this.members = members;\n };\n\n getProjectBuildingFeature = async (projectId, buildingId) => {\n const { data } = await axios.get(\n `/project/${projectId}/building/${buildingId}/feature`\n );\n // this.projectBuildingRegistry.set(data.data.id, formattedData);\n return data;\n };\n\n createProject = async params => {\n const { data } = await agent.Project.createProject(params);\n if (data.ok) return data.data;\n };\n}\n\nconst store = new Store();\nexport default store;\n","/* eslint-disable no-param-reassign */\nimport haversine from 'haversine';\nimport format from 'date-fns/format';\nimport conf from '../conf';\n\nexport function formatNumber(value, digits = undefined) {\n const options = {\n minimumFractionDigits: value > 1000 || Number.isInteger(value) ? 0 : 2,\n maximumFractionDigits: value > 1000 || Number.isInteger(value) ? 0 : 2\n };\n\n if (digits) {\n options.maximumFractionDigits = digits;\n options.minimumFractionDigits = digits;\n }\n\n return new Intl.NumberFormat('en-US', options).format(value);\n}\n\n// https://gist.github.com/tobyjsullivan/96d37ca0216adee20fa95fe1c3eb56ac\nexport function abbreviateNumber(value, unit) {\n const sign = Math.sign(value);\n let newValue = Math.abs(value);\n let suffixes = ['', 'K', 'M', 'B', 'T'];\n if (unit === 'kW') {\n suffixes = ['kW', 'MW', 'GW', 'TW', 'PW'];\n }\n let suffixNum = 0;\n while (newValue >= 1000) {\n newValue /= 1000;\n suffixNum += 1;\n }\n const newValueWithSign = sign * newValue;\n const newValueWithSignPercision = formatNumber(newValueWithSign);\n const suffix = suffixes[suffixNum];\n const result = `${newValueWithSignPercision}${suffix}`;\n return result;\n}\n\nexport function getDistanceFromLatLonInKm(coordinates1, coordinates2) {\n const start = {\n latitude: coordinates1[1],\n longitude: coordinates1[0]\n };\n\n const end = {\n latitude: coordinates2[1],\n longitude: coordinates2[0]\n };\n\n return haversine(start, end);\n}\n\nexport function toAppId(osmId) {\n return osmId < 0 ? `R${osmId}` : `W${Math.abs(osmId)}`;\n}\n\nexport function toOSMId(appId) {\n if (!appId) return null;\n return parseInt(appId.replace('W', '').replace('R', '-'), 10);\n}\n\nexport function metersToMiles(meters, fractionDigits = 2) {\n return (meters * 0.000621371192).toFixed(fractionDigits);\n}\n\nexport async function downloadFile(url, name, delay = 0) {\n const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));\n await sleep(delay);\n const a = document.createElement('a');\n a.download = name;\n a.href = url.startsWith('http') ? url : `${conf.E2E_API_URL}${url}`;\n a.target = '_blank';\n a.style.display = 'none';\n document.body.append(a);\n a.click();\n // Chrome requires the timeout\n await sleep(100);\n a.remove();\n}\n\nexport function abbreviate(val) {\n const match = val.match(/[0-9A-Z]/g);\n if (!match) {\n return val.substring(0, 2);\n }\n const short = match.join('').substring(0, 2);\n\n if (short.length > 1) {\n return short;\n }\n\n return val.substring(0, 2);\n}\n\nexport function groupBy(xs, key) {\n return xs.reduce((rv, x) => {\n (rv[x[key]] = rv[x[key]] || []).push(x);\n return rv;\n }, {});\n}\n\nexport function hexToRgb(hex) {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? [\n parseInt(result[1], 16),\n parseInt(result[2], 16),\n parseInt(result[3], 16)\n ]\n : null;\n}\n\nexport function elevateGeometry(geometry, elevation) {\n const { type } = geometry;\n let coordinates = [...geometry.coordinates];\n\n if (type === 'Point') {\n coordinates[2] = elevation;\n }\n\n if (type === 'Polygon') {\n coordinates = coordinates.map(coordinateGroup => {\n return coordinateGroup.map(coord => {\n return [coord[0], coord[1], elevation];\n });\n });\n }\n\n if (type === 'LineString') {\n coordinates = coordinates.map(coord => {\n return [coord[0], coord[1], elevation];\n });\n }\n\n return {\n type,\n coordinates\n };\n}\n\nexport function getElevationFromGeometry(geometry) {\n if (geometry?.type === 'Point' && geometry.coordinates[2])\n return geometry.coordinates[2];\n if (geometry?.type === 'Polygon' && geometry.coordinates[0]?.[0]?.[2]) {\n return geometry.coordinates[0][0][2];\n }\n\n if (geometry?.type === 'LineString' && geometry.coordinates[0]?.[2]) {\n return geometry.coordinates[0][2];\n }\n return 0;\n}\n\nexport function humanDateTime(timeLike) {\n const DATE_FORMAT = 'MMM d, yyyy HH:mm';\n if (timeLike instanceof Date) {\n return format(timeLike, DATE_FORMAT);\n }\n const unixTime =\n typeof timeLike === 'string' ? parseInt(timeLike, 10) : timeLike;\n const date = new Date(unixTime * 1000);\n return format(date, DATE_FORMAT);\n}\n\nexport function humanDate(timeLike) {\n const DATE_FORMAT = 'MMM d, yyyy';\n if (timeLike instanceof Date) {\n return format(timeLike, DATE_FORMAT);\n }\n const unixTime =\n typeof timeLike === 'string' ? parseInt(timeLike, 10) : timeLike;\n const date = new Date(unixTime * 1000);\n return format(date, DATE_FORMAT);\n}\n\nexport function humanFileSize(byteSize, si = true) {\n let bytes = byteSize;\n const thresh = si ? 1000 : 1024;\n if (Math.abs(bytes) < thresh) {\n return `${bytes} B`;\n }\n const units = si\n ? ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n : ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];\n let u = -1;\n do {\n bytes /= thresh;\n u += 1;\n } while (Math.abs(bytes) >= thresh && u < units.length - 1);\n return `${bytes.toFixed(1)} ${units[u]}`;\n}\n\nexport function isElementInViewport(el) {\n if (!el) return false;\n const rect = el.getBoundingClientRect();\n\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight ||\n document.documentElement.clientHeight) /* or $(window).height() */ &&\n rect.right <=\n (window.innerWidth ||\n document.documentElement.clientWidth) /* or $(window).width() */\n );\n}\n\nexport function timeSince(date) {\n const seconds = Math.floor((new Date() - date) / 1000);\n\n let interval = seconds / 31536000;\n\n if (interval > 1) {\n return `${Math.floor(interval)} years`;\n }\n interval = seconds / 2592000;\n if (interval > 1) {\n return `${Math.floor(interval)} months`;\n }\n interval = seconds / 86400;\n if (interval > 1) {\n return `${Math.floor(interval)} days`;\n }\n interval = seconds / 3600;\n if (interval > 1) {\n return `${Math.floor(interval)} hours`;\n }\n interval = seconds / 60;\n if (interval > 1) {\n return `${Math.floor(interval)} minutes`;\n }\n return `${Math.floor(seconds)} seconds`;\n}\n\nexport function uniqBy(arr, predicate) {\n const cb = typeof predicate === 'function' ? predicate : o => o[predicate];\n\n return [\n ...arr\n .reduce((map, item) => {\n const key = item === null || item === undefined ? item : cb(item);\n\n // eslint-disable-next-line no-unused-expressions\n map.has(key) || map.set(key, item);\n\n return map;\n }, new Map())\n .values()\n ];\n}\n","var haversine = (function () {\n var RADII = {\n km: 6371,\n mile: 3960,\n meter: 6371000,\n nmi: 3440\n }\n\n // convert to radians\n var toRad = function (num) {\n return num * Math.PI / 180\n }\n\n // convert coordinates to standard format based on the passed format option\n var convertCoordinates = function (format, coordinates) {\n switch (format) {\n case '[lat,lon]':\n return { latitude: coordinates[0], longitude: coordinates[1] }\n case '[lon,lat]':\n return { latitude: coordinates[1], longitude: coordinates[0] }\n case '{lon,lat}':\n return { latitude: coordinates.lat, longitude: coordinates.lon }\n case '{lat,lng}':\n return { latitude: coordinates.lat, longitude: coordinates.lng }\n case 'geojson':\n return { latitude: coordinates.geometry.coordinates[1], longitude: coordinates.geometry.coordinates[0] }\n default:\n return coordinates\n }\n }\n\n return function haversine (startCoordinates, endCoordinates, options) {\n options = options || {}\n\n var R = options.unit in RADII\n ? RADII[options.unit]\n : RADII.km\n\n var start = convertCoordinates(options.format, startCoordinates)\n var end = convertCoordinates(options.format, endCoordinates)\n\n var dLat = toRad(end.latitude - start.latitude)\n var dLon = toRad(end.longitude - start.longitude)\n var lat1 = toRad(start.latitude)\n var lat2 = toRad(end.latitude)\n\n var a = Math.sin(dLat/2) * Math.sin(dLat/2) +\n Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2)\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a))\n\n if (options.threshold) {\n return options.threshold > (R * c)\n }\n\n return R * c\n }\n\n})()\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = haversine\n}\n","import isValid from '../isValid/index.js';\nimport defaultLocale from '../locale/en-US/index.js';\nimport subMilliseconds from '../subMilliseconds/index.js';\nimport toDate from '../toDate/index.js';\nimport formatters from '../_lib/format/formatters/index.js';\nimport longFormatters from '../_lib/format/longFormatters/index.js';\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from '../_lib/protectedTokens/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js'; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return !isNaN(date);\n}","import requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + required > 1 ? 's' : '' + ' required, but only ' + args.length + ' present');\n }\n}","import formatDistance from './_lib/formatDistance/index.js';\nimport formatLong from './_lib/formatLong/index.js';\nimport formatRelative from './_lib/formatRelative/index.js';\nimport localize from './_lib/localize/index.js';\nimport match from './_lib/match/index.js';\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\n\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nexport default function formatDistance(token, count, options) {\n options = options || {};\n var result;\n\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n}","import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js';\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","export default function buildFormatLongFn(args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nexport default function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n}","import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js';\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] // Note: in English, the names of days of the week and months are capitalized.\n // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n // Generally, formatted dates should look like they are in the middle of a sentence,\n // e.g. in Spanish language the weekdays and months should be in the lowercase.\n\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nfunction ordinalNumber(dirtyNumber, _dirtyOptions) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n return valuesArray[index];\n };\n}","import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js';\nimport buildMatchFn from '../../../_lib/buildMatchFn/index.js';\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var matchResult = string.match(args.matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n\n if (!parseResult) {\n return null;\n }\n\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}","export default function buildMatchFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var value;\n\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = findIndex(parsePatterns, function (pattern) {\n return pattern.test(string);\n });\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(string);\n });\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addMilliseconds from '../addMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import lightFormatters from '../lightFormatters/index.js';\nimport getUTCDayOfYear from '../../../_lib/getUTCDayOfYear/index.js';\nimport getUTCISOWeek from '../../../_lib/getUTCISOWeek/index.js';\nimport getUTCISOWeekYear from '../../../_lib/getUTCISOWeekYear/index.js';\nimport getUTCWeek from '../../../_lib/getUTCWeek/index.js';\nimport getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js';\nimport addLeadingZeros from '../../addLeadingZeros/index.js';\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n /*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\n};\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","import addLeadingZeros from '../../addLeadingZeros/index.js';\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function (date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import getUTCISOWeekYear from '../getUTCISOWeekYear/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport startOfUTCWeekYear from '../startOfUTCWeekYear/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toInteger from '../toInteger/index.js';\nimport getUTCWeekYear from '../getUTCWeekYear/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var MILLISECONDS_IN_MINUTE = 60000;\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\n\nexport default function getTimezoneOffsetInMilliseconds(dirtyDate) {\n var date = new Date(dirtyDate.getTime());\n var baseTimezoneOffset = Math.ceil(date.getTimezoneOffset());\n date.setSeconds(0, 0);\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE;\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset;\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token) {\n if (token === 'YYYY') {\n throw new RangeError('Use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr');\n } else if (token === 'YY') {\n throw new RangeError('Use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr');\n } else if (token === 'D') {\n throw new RangeError('Use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr');\n } else if (token === 'DD') {\n throw new RangeError('Use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr');\n }\n}","import { observable, action, makeObservable } from 'mobx';\n\nclass MapStore {\n viewport = {\n center: { lng: -73.9954260224539, lat: 40.723244087001774 },\n zoom: 12,\n pitch: 0\n };\n\n bounds = null;\n status = 'loading';\n mode = 'view';\n popup = null;\n gl = null;\n deckRef = null;\n mapboxRef = null;\n shouldRedrawPoints = false;\n\n constructor() {\n makeObservable(this, {\n viewport: observable,\n gl: observable,\n shouldRedrawPoints: observable,\n bounds: observable,\n status: observable,\n mode: observable,\n popup: observable,\n setMode: action,\n setBounds: action,\n setViewPort: action,\n setStatus: action,\n setEditMode: action,\n setPopup: action\n });\n }\n\n setDeckRef(ref) {\n this.deckRef = ref;\n }\n\n setMode(mode) {\n this.mode = mode;\n }\n\n setMapboxRef(ref) {\n this.mapboxRef = ref;\n }\n\n setGl(gl) {\n this.gl = gl;\n }\n\n setBounds(bounds) {\n this.bounds = bounds;\n }\n\n setViewPort(viewport) {\n this.viewport = viewport;\n }\n\n setStatus(status) {\n this.status = status;\n }\n\n setEditMode(editMode) {\n this.editMode = editMode;\n }\n\n setShouldRedrawPoints(value) {\n this.shouldRedrawPoints = value;\n }\n\n setPopup(value) {\n this.popup = value;\n }\n}\n\nconst store = new MapStore();\nexport default store;\n","/* eslint-disable camelcase */\n\nimport { metersToMiles, formatNumber } from './utils';\n\nconst none = 'n/a';\nconst sf = ' ft\\xB2';\nconst areaUnit = 'ft\\xB2';\nconst units = 'imperial';\n\nconst toTitleCase = str => {\n return str.replace(/\\w\\S*/g, txt => {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n });\n};\n\nconst formatArea = n => {\n let area = n;\n if (units === 'international') {\n area /= 10.7639104;\n }\n area = area.toLocaleString('en-US');\n return `${area} ${areaUnit}`;\n};\n\nconst formatAddress = arr => {\n if (arr) {\n return arr[0];\n }\n return none;\n};\n\nexport const formatBuildingDetails = ({\n annual_peak = none,\n annual_property_tax,\n aquisition_date,\n aquisition_price,\n area_in_sq_meters,\n average_annual_irradiance,\n billable_assessed_value,\n bins,\n boiler_capacity = none,\n boiler_consumption,\n boiler_installation_date = none,\n boiler_is_dual_fuel,\n boiler_model,\n building_far = none,\n building_name,\n burner_model = none,\n cdd65,\n co2_reduction,\n compliance_date = none,\n construction,\n customer_cd = none,\n debt,\n demo,\n der_installation_date = none,\n der_installer = none,\n der_natural_gas_consumption = none,\n der_output = none,\n der_ownership_structure = none,\n der_type = none,\n ele,\n electric_utility = null,\n electricity_forecast = null,\n electricity_use,\n energy_star_score = none,\n esimated_boiler_retirement_year = none,\n estimated_market_value,\n eui = none,\n floor_area_commercial,\n floor_area_factory,\n floor_area_garage,\n floor_area_leasable,\n floor_area_lot,\n floor_area_office,\n floor_area_other,\n floor_area_residential,\n floor_area_storage,\n floor_area_total,\n floors = none,\n gas_comm_price,\n gas_customers,\n gas_ind_price,\n gas_name,\n gas_res_price,\n gas_total_vol,\n gas_website,\n ghg_emission_total,\n hdd65,\n incentives,\n industry = none,\n iso_avg_load,\n iso_name,\n iso_peak_load,\n iso_website,\n land_use = none,\n landmark,\n last_renovation,\n lender = none,\n loan_year = none,\n monthly_predictions = null,\n natural_gas_consumption,\n natural_gas_utility,\n nearest_station,\n number_of_baths = none,\n number_of_beds = none,\n number_of_buildings = none,\n operating_expense,\n opta,\n owner_name = none,\n owner_type,\n owner_type_code = none,\n predictions = null,\n predictionsTrace,\n primary_fuel = none,\n property_name,\n pvout,\n pvwattsTrace,\n residential_units = none,\n revenue,\n share_in_aquisition_price,\n sub_category = none,\n tax_rate = none,\n temp,\n total_gallons_high,\n total_gallons_low,\n total_mmbtu_high,\n total_mmbtu_low,\n utility_customers,\n utility_name,\n utility_network_demand_peak = none,\n utility_total_mwh,\n utility_website,\n year_built = none,\n zoning = none,\n metrics,\n us_state_region,\n property_type_long,\n // ev_charger_count,\n // ev_charger_count_final,\n ev_level2_charger_count,\n ev_dcfc_charger_count,\n ev_registration_count,\n ev_registration_count_per_population,\n ev_state_population,\n ev_closest_station_name,\n ev_chargers_in_10_mile_radius,\n ev_chargers_in_state,\n ev_distance_to_substation_meters\n}) => {\n let formattedArea = none;\n if (area_in_sq_meters) {\n formattedArea = formatArea(Math.floor(area_in_sq_meters * 10.7639104));\n }\n\n if (floor_area_total) {\n formattedArea = formatArea(floor_area_total);\n }\n\n const details = {\n predictions:\n (predictions && predictions.length) ||\n (monthly_predictions && monthly_predictions.length),\n load_curve:\n (pvwattsTrace && pvwattsTrace.length) ||\n (predictionsTrace && predictionsTrace.length),\n energy_use: [\n {\n id: 'annual_consumption',\n label: 'Annual Consumption',\n value: formatNumber(metrics?.annual_kwh_consumption) || none,\n suffix: 'kWh'\n },\n {\n label: 'Region',\n value: us_state_region || none\n },\n {\n label: 'Area',\n value: formattedArea\n },\n {\n label: 'Property type',\n value: property_type_long\n }\n ],\n utility_territory: [\n {\n label: 'Name',\n value: utility_name ? toTitleCase(utility_name) : none\n },\n {\n label: 'Website',\n url: utility_website,\n value: utility_website || none\n },\n {\n label: 'Customers',\n value: utility_customers ? formatNumber(utility_customers) : none\n },\n {\n label: 'Total MWh',\n value: utility_total_mwh ? formatNumber(utility_total_mwh) : none\n }\n ],\n ev: [\n {\n label: 'Level 2 EV charger recommendation',\n suffix: 'chargers',\n hideIfZero: true,\n value: ev_level2_charger_count\n },\n {\n label: 'Level 3 (DC Fast) charger recommendation',\n suffix: 'chargers',\n hideIfZero: true,\n value: ev_dcfc_charger_count\n },\n {\n label: 'EV Registrations per state',\n suffix: 'vehicles',\n value: ev_registration_count\n },\n {\n label: 'EV Registrations Per 1,000 People',\n value: ev_registration_count_per_population\n },\n {\n label: 'State Population',\n value: ev_state_population\n },\n\n {\n label: 'Closest EV Charger',\n value: ev_closest_station_name\n },\n\n {\n label: 'Number of EV Chargers within 10 Miles',\n value: ev_chargers_in_10_mile_radius\n },\n\n {\n label: 'Distance to Substation ',\n value:\n ev_chargers_in_10_mile_radius > 0 && ev_distance_to_substation_meters\n ? metersToMiles(ev_distance_to_substation_meters)\n : null,\n suffix: 'miles'\n },\n\n {\n label: 'Number of EV Chargers in State',\n value: ev_chargers_in_state\n }\n ],\n iso_territory: [\n {\n label: 'Name',\n value: iso_name ? toTitleCase(iso_name) : none\n },\n {\n label: 'Website',\n url: iso_website,\n value: iso_website || none\n },\n {\n label: 'Peak Load',\n suffix: 'MW',\n value: iso_peak_load ? formatNumber(iso_peak_load) : none\n },\n {\n label: 'Average Load',\n suffix: 'MW',\n value: iso_avg_load ? formatNumber(iso_avg_load) : none\n }\n ],\n natural_gas_service: [\n {\n label: 'Utility Name',\n position: 'left',\n value: gas_name ? toTitleCase(gas_name) : none\n },\n {\n label: 'Website',\n position: 'left',\n url: gas_website,\n value: gas_website || none\n },\n {\n label: 'Total Volume (ccf)',\n position: 'left',\n value: gas_total_vol ? formatNumber(gas_total_vol) : none\n },\n {\n label: 'Commercial Customers',\n position: 'left',\n value: gas_customers ? formatNumber(gas_customers) : none\n },\n {\n label: 'Residential price $/MMBTU',\n position: 'right',\n format: 'currency',\n value: gas_res_price || none\n },\n {\n label: 'Commercial price $/MMBTU',\n position: 'right',\n format: 'currency',\n value: gas_comm_price || none\n },\n {\n label: 'Industrial price $/MMBTU',\n position: 'right',\n format: 'currency',\n value: gas_ind_price || none\n }\n ],\n closest_power_plant: [''], // do not remove\n power_line: [''], // do not remove\n building: [\n {\n label: 'Lot Area',\n position: 'left',\n value: floor_area_lot ? formatArea(floor_area_lot) : none\n },\n {\n label: 'Year Built',\n position: 'left',\n value: year_built,\n format: false\n },\n {\n label: 'Number Of Floors',\n position: 'left',\n value: floors\n },\n {\n label: 'Floor Area Ratio',\n position: 'left',\n value: building_far\n },\n {\n label: 'Number Of Buildings',\n position: 'left',\n value: number_of_buildings\n },\n {\n label: 'Number Of Bedrooms',\n position: 'left',\n value: number_of_beds\n },\n {\n label: 'Number Of Bathrooms',\n position: 'left',\n value: number_of_baths\n },\n {\n label: 'Bin Numbers',\n position: 'left',\n value: bins && bins.length ? bins.join(', ') : none\n },\n {\n label: 'Construction',\n position: 'left',\n value: construction && construction.length ? construction : none\n },\n {\n label: 'Nearest Station',\n position: 'left',\n value:\n nearest_station && nearest_station.length ? nearest_station : none\n },\n {\n label: 'Property Name',\n position: 'left',\n value: property_name && property_name.length ? property_name : none\n },\n {\n label: 'Building Name',\n position: 'left',\n value: building_name && building_name.length ? building_name : none\n },\n {\n label: 'Acquisition Date',\n position: 'left',\n value:\n aquisition_date && aquisition_date.length ? aquisition_date : none\n },\n {\n label: 'Acquisition price',\n position: 'left',\n value:\n aquisition_price && aquisition_price.length ? aquisition_price : none\n },\n {\n label: 'Share in acquisition price',\n position: 'left',\n value:\n share_in_aquisition_price && share_in_aquisition_price.length\n ? share_in_aquisition_price\n : none\n },\n {\n label: 'Industry',\n position: 'left',\n value: industry\n },\n {\n label: 'Subcategory',\n position: 'left',\n value: sub_category\n },\n {\n label: 'Customer cd',\n position: 'left',\n value: customer_cd\n },\n {\n label: 'Total Area',\n position: 'right',\n value: floor_area_total != null ? formatArea(floor_area_total) : none\n },\n {\n label: 'Office Area',\n position: 'right',\n value: floor_area_office != null ? formatArea(floor_area_office) : none\n },\n {\n label: 'Commercial Area',\n position: 'right',\n value:\n floor_area_commercial != null\n ? formatArea(floor_area_commercial)\n : none\n },\n {\n label: 'Zoning Code',\n position: 'right',\n value: zoning\n },\n {\n label: 'Factory Area',\n position: 'right',\n value:\n floor_area_factory != null ? formatArea(floor_area_factory) : none\n },\n {\n label: 'Storage Area',\n position: 'right',\n value:\n floor_area_storage != null ? formatArea(floor_area_storage) : none\n },\n {\n label: 'Residential Area',\n position: 'right',\n value:\n floor_area_residential != null\n ? formatArea(floor_area_residential)\n : none\n },\n {\n label: 'Garage Area',\n position: 'right',\n value: floor_area_garage != null ? formatArea(floor_area_garage) : none\n },\n {\n label: 'Roof Area',\n position: 'right',\n value: area_in_sq_meters\n ? formatArea(Math.floor(area_in_sq_meters * 10.7639104))\n : none\n },\n {\n label: 'Leasable Area',\n position: 'right',\n value: floor_area_leasable\n ? formatArea(Math.floor(floor_area_leasable))\n : none\n },\n {\n label: 'Other Area',\n position: 'right',\n value: floor_area_other != null ? formatArea(floor_area_other) : none\n },\n {\n label: 'Land Use',\n position: 'right',\n value: land_use\n },\n {\n label: 'Residential Units',\n position: 'right',\n value: residential_units\n }\n ],\n financials: [\n {\n label: 'Market Value',\n position: 'left',\n format: 'currency',\n value: estimated_market_value || none\n },\n {\n label: 'Tax Rate',\n position: 'left',\n suffix: '%',\n value: tax_rate || none\n },\n {\n label: 'Revenue',\n position: 'left',\n format: 'currency',\n value: revenue || none\n },\n {\n label: 'OPEX',\n position: 'left',\n format: 'currency',\n value: operating_expense || none\n },\n {\n label: 'Net Operating Income',\n position: 'left',\n format: 'currency',\n value: revenue && operating_expense ? revenue - operating_expense : none\n },\n {\n label: 'Taxable Value',\n format: 'currency',\n position: 'right',\n value: billable_assessed_value || none\n },\n {\n label: 'Property Tax',\n format: 'currency',\n position: 'right',\n value: annual_property_tax != null ? annual_property_tax : none\n },\n {\n label: 'Lender',\n position: 'right',\n value: lender || none\n },\n {\n label: 'Loan',\n format: 'currency',\n position: 'right',\n value: debt || none\n },\n {\n label: 'Loan Year',\n position: 'right',\n value: loan_year || none\n }\n ],\n energy: [\n {\n label: 'HDD65',\n suffix: 'days',\n values: hdd65 || none\n },\n {\n label: 'Average Annual Irradiance',\n suffix: 'kWh/m2/day',\n value: average_annual_irradiance || none\n },\n {\n label: 'CDD65',\n suffix: 'days',\n value: cdd65 || none\n },\n\n {\n label: 'Energy Use Intensity',\n suffix: `kBtu/${sf}`,\n value: eui\n },\n {\n label: 'energy star rating',\n value: energy_star_score\n },\n {\n label: 'total ghg emissions',\n suffix: 'MtCO2e',\n value: ghg_emission_total ? formatNumber(ghg_emission_total) : none\n },\n {\n label: 'annual kwh estimate',\n suffix: 'kWh',\n value: electricity_use ? formatNumber(electricity_use) : none\n },\n {\n label: 'annual peak',\n suffix: 'kW',\n value: annual_peak\n },\n {\n label: 'compliance(ll87)',\n value: compliance_date\n },\n {\n label: 'utility network demand peak',\n value: utility_network_demand_peak\n },\n {\n label: 'electric utility',\n value: electric_utility || none\n },\n {\n label: 'natural gas utility',\n value: natural_gas_utility || none\n }\n ],\n wind_speed: false, // do not remove\n temperature: false, // do not remove\n electricity_forecast: !!electricity_forecast, // TODO: Add real data?\n der: [\n {\n label: 'Type',\n position: 'left',\n value: der_type\n },\n {\n label: 'Output',\n position: 'left',\n suffix: 'kW',\n value: der_output\n },\n {\n label: 'installer & manufacturer',\n position: 'right',\n value: der_installer\n },\n {\n label: 'ownership structure',\n position: 'right',\n value: der_ownership_structure\n },\n {\n label: 'install date',\n position: 'right',\n value: der_installation_date\n },\n {\n label: 'natural gas consumption',\n position: 'right',\n value: der_natural_gas_consumption\n }\n ],\n owner: [\n {\n label: 'owner',\n value: owner_name || none\n },\n {\n label: 'type',\n value: owner_type || none\n },\n {\n label: 'type code',\n value: owner_type_code || none\n }\n ]\n };\n\n // remove der section if non existing\n if (!der_output) {\n delete details.der;\n }\n\n // Remove energy use section if not available\n if (!metrics || !us_state_region) {\n delete details.energy_use;\n }\n\n if (total_mmbtu_low) {\n details.energy.push(\n {\n label: 'total mmbtu',\n value: total_mmbtu_low\n ? `${formatNumber(total_mmbtu_high)} - ${formatNumber(\n total_mmbtu_low\n )}`\n : none\n },\n {\n label: 'total gallons',\n value: total_gallons_low\n ? `${formatNumber(total_gallons_low)} - ${formatNumber(\n total_gallons_high\n )}`\n : none\n },\n {\n label: 'burner model',\n value: burner_model\n },\n {\n label: 'primary fuel',\n value: primary_fuel\n },\n {\n label: 'boiler retirement year',\n value: esimated_boiler_retirement_year\n }\n );\n }\n\n if (incentives) {\n details.incentives = incentives.map(incentive => ({\n key: incentive.id,\n label: incentive.category,\n value: incentive.name\n }));\n }\n\n if (natural_gas_consumption) {\n details.energy.push({\n label: 'Annual Natural Gas Consumption (MMBTu)',\n value: natural_gas_consumption\n ? `${formatNumber(natural_gas_consumption)}`\n : none\n });\n }\n\n const co2_technologies = ['solar', 'fuel_cell', 'chp', 'solar_thermal'];\n co2_technologies.forEach(tech => {\n if (!co2_reduction || !co2_reduction[tech]) {\n return;\n }\n const { low } = co2_reduction[tech];\n const { high } = co2_reduction[tech];\n if (high > 0) {\n const v = {\n label: `CO2 Reduction with ${tech.toUpperCase().replace(/_/g, ' ')}`,\n suffix: 'lbs of CO2 reduced/year',\n value: high ? formatNumber(low) - formatNumber(high) : none\n };\n if (co2_reduction[tech].high <= 0) {\n v.value = '0';\n }\n details.energy.push(v);\n }\n });\n\n if (last_renovation) {\n details.building.push({\n label: 'last renovation',\n value: last_renovation\n });\n }\n\n if (landmark) {\n details.building.push({\n label: 'landmark',\n value: landmark\n });\n }\n\n if (boiler_model || boiler_consumption) {\n const boilerData = [\n {\n label: 'boiler model',\n value: boiler_model || none\n },\n {\n label: 'boiler capacity',\n suffix: 'Btu',\n value: boiler_capacity\n },\n {\n label: 'boiler installation Date',\n value: boiler_installation_date\n },\n {\n label: 'est. boiler consumption (MMBTU)',\n value: boiler_consumption || none\n },\n {\n label: 'dual fuel',\n value: boiler_is_dual_fuel ? 'Yes' : 'No'\n }\n ];\n\n details.energy.push(...boilerData);\n }\n\n if (demo) {\n details.building.forEach((o, i) => {\n if (o['bin number']) {\n details.building.splice(i, 1);\n }\n });\n }\n\n if (opta) {\n details.energy.push({\n label: 'Solar Panel Tilt',\n suffix: '°/180°',\n value: opta\n });\n }\n\n if (pvout) {\n details.energy.push({\n label: 'Solar Irradiance',\n suffix: 'kWh/kWp per day',\n value: pvout.toFixed(2)\n });\n }\n\n if (ele) {\n details.building.push({\n label: 'elevation',\n suffix: 'm',\n value: ele\n });\n }\n\n if (temp) {\n details.building.push({\n label: 'temperature',\n suffix: '°C',\n value: temp.toFixed(2)\n });\n }\n\n Object.keys(details).forEach(propName => {\n const skip = [\n 'closest_power_plant',\n 'incentives',\n 'power_line',\n 'predictionsTrace',\n 'pvwattsTrace'\n ];\n if (Array.isArray(details[propName]) && !skip.includes(propName)) {\n const newDetails = [];\n details[propName].forEach(o => {\n if (o.value !== none && o.value !== 'NOT AVAILABLE') {\n newDetails.push(o);\n }\n });\n if (newDetails.length) {\n details[propName] = newDetails;\n } else {\n delete details[propName];\n }\n }\n });\n return details;\n};\n\nexport const formatBuildingData = ({\n address,\n address_ranges,\n addresses,\n attachments,\n centroid,\n contacts,\n energy_star_score,\n estimates,\n eui,\n property_type_long,\n property_type,\n recommendations,\n reductions,\n therm_production = { low: 0, high: 0 },\n ...rest\n}) => {\n const data = {\n ...rest,\n files: attachments,\n centroid: {\n lat: centroid[1],\n lon: centroid[0]\n },\n address: address || formatAddress(addresses) || none,\n address_ranges:\n address_ranges && address_ranges.length > 1 ? address_ranges : [],\n property_type: property_type_long,\n property_type_short: property_type,\n contacts,\n recommendations,\n pv: recommendations.pv || 0,\n chp: recommendations.chp || 0,\n storage: recommendations.storage || 0,\n fuel_cell: recommendations.fuel_cell || 0,\n solar_thermal: recommendations.solar_thermal || 0,\n icons: {\n energystar: energy_star_score,\n eui\n },\n estimates: {\n chp: estimates.chp || none,\n fuel_cell: estimates.fuel_cell || none,\n solar: estimates.solar || none,\n storage: estimates.storage || none,\n solar_thermal: estimates.solar_thermal || none\n },\n therm_production,\n reductions: reductions || {\n solar: {\n kw_reduction: {\n low: 0,\n high: 0\n },\n kwh_reduction: {\n low: 0,\n high: 0\n }\n },\n chp: {\n kw_reduction: {\n low: 0,\n high: 0\n },\n kwh_reduction: {\n low: 0,\n high: 0\n }\n },\n storage: {\n kw_reduction: {\n low: 0,\n high: 0\n },\n kwh_reduction: {\n low: 0,\n high: 0\n }\n },\n fuel_cell: {\n kw_reduction: {\n low: 0,\n high: 0\n },\n kwh_reduction: {\n low: 0,\n high: 0\n }\n }\n }\n };\n\n Object.keys(data)\n .filter(\n propName =>\n ![\n 'closest_power_plant',\n 'contacts',\n 'files',\n 'incentives',\n 'power_line',\n 'predictionsTrace',\n 'pvwattsTrace',\n 'bbox'\n ].includes(propName)\n )\n .forEach(propName => {\n const newArr = [];\n if (Array.isArray(data[propName])) {\n data[propName]\n .filter(o => o !== null)\n .forEach(o => {\n Object.keys(o).forEach(k => {\n const v = o[k];\n if (v !== none && v !== 'NOT AVAILABLE') {\n newArr.push(o);\n }\n });\n });\n data[propName] = newArr;\n }\n });\n\n return data;\n};\n\nexport function formatBuildingPower({\n power_line_distance_in_meters,\n power_line_id,\n power_line_length_in_meters,\n power_plant_desc,\n power_plant_distance,\n power_plant_fuel,\n power_plant_id,\n power_plant_name,\n power_plant_total_mw\n}) {\n const data = {\n closest_power_plant: false,\n power_line: false\n };\n if (power_plant_id) {\n data.closest_power_plant = [\n {\n label: 'Name',\n url: power_plant_id ? `/search/${power_plant_id}` : null,\n value: power_plant_name || none\n },\n {\n label: 'Power Output',\n suffix: 'MW',\n value: power_plant_total_mw || none\n },\n {\n label: 'Type',\n value: power_plant_desc || none\n },\n {\n label: 'Distance',\n suffix: 'miles',\n value: power_plant_distance ? metersToMiles(power_plant_distance) : none\n },\n {\n label: 'Fuel',\n value: power_plant_fuel || none\n }\n ];\n }\n if (power_line_id) {\n data.power_line = [\n {\n label: 'Powerline Length',\n value: power_line_length_in_meters\n ? metersToMiles(power_line_length_in_meters)\n : none,\n suffix: 'miles'\n },\n {\n label: 'Powerline Distance',\n value: power_line_distance_in_meters\n ? metersToMiles(power_line_distance_in_meters)\n : none,\n suffix: 'miles'\n }\n ];\n }\n return data;\n}\n\nexport function formatBuildingFinancials({\n IRR,\n net_present_value,\n payback_period,\n total_1st_year_net_revenue,\n total_30_year_net_revenue,\n total_gross_project_cost,\n battery_kw,\n battery_kwh,\n chp_kw,\n fuel_cell_kw,\n pv_kw\n}) {\n return [\n {\n label: 'Project Cost',\n value: total_gross_project_cost,\n format: 'currency'\n },\n {\n label: 'Payback Period',\n value: payback_period,\n suffix: 'years'\n },\n {\n label: 'IRR',\n value: IRR * 100,\n suffix: '%'\n },\n {\n label: '1st Year Net Revenue',\n value: total_1st_year_net_revenue,\n format: 'currency'\n },\n {\n label: 'Total Project Revenue',\n value: total_30_year_net_revenue,\n format: 'currency'\n },\n {\n label: 'Net Present Value',\n value: net_present_value,\n format: 'currency'\n },\n {\n label: 'Battery',\n value: `${formatNumber(battery_kw)}kW / ${formatNumber(battery_kwh)}kWh`\n },\n {\n label: 'CHP',\n value: chp_kw,\n suffix: 'kW'\n },\n {\n label: 'Fuel Cell',\n value: fuel_cell_kw,\n suffix: 'kW'\n },\n {\n label: 'Solar',\n value: pv_kw,\n suffix: 'kW'\n }\n ];\n}\n\nexport function formatBuildingRates(rates) {\n if (!rates) return [];\n\n const {\n abbreviation,\n alternative_policy,\n cost_solar,\n country_average_rate_kwh,\n country_commercial_rate_kwh,\n country_industrial_rate_kwh,\n country_residential_rate_kwh,\n country_source,\n interconnection_spr,\n name,\n net_metering_allowed,\n net_metering_capacity_limit,\n net_metering_meter_aggregation,\n net_metering_notes,\n performance_payments_spr,\n property_tax_spr,\n rps_spr,\n sales_tax_spr,\n score_spr,\n state_commercial_rate_kwh,\n state_industrial_rate_kwh,\n state_residential_rate_kwh,\n state_source,\n tax_credit_spr,\n tariff_name,\n utility_name,\n tariff_type\n } = rates;\n\n return [\n {\n value: name,\n name: 'name',\n label: 'name'\n },\n {\n value: tariff_name,\n name: 'tariff_name',\n label: 'tariff name'\n },\n {\n value: tariff_type,\n name: 'tariff_type',\n label: 'tariff type'\n },\n {\n value: utility_name,\n name: 'utility_name',\n label: 'utility name'\n },\n {\n value: rps_spr,\n name: 'rps_spr',\n label: 'rps spr'\n },\n {\n value: score_spr,\n name: 'score_spr',\n label: 'score spr'\n },\n {\n value: cost_solar,\n name: 'cost_solar',\n label: 'cost solar',\n format: 'currency'\n },\n {\n value: abbreviation,\n name: 'abbreviation',\n label: 'abbreviation'\n },\n {\n value: state_source,\n name: 'state_source',\n label: 'state source'\n },\n {\n value: sales_tax_spr,\n name: 'sales_tax_spr',\n label: 'sales taxspr'\n },\n {\n value: country_source,\n name: 'country_source',\n label: 'country source'\n },\n {\n value: tax_credit_spr,\n name: 'tax_credit_spr',\n label: 'tax credit spr'\n },\n {\n value: property_tax_spr,\n name: 'property_tax_spr',\n label: 'property tax spr'\n },\n {\n value: alternative_policy,\n name: 'alternative_policy',\n label: 'alternative policy'\n },\n {\n value: net_metering_notes,\n name: 'net_metering_notes',\n label: 'net metering notes'\n },\n {\n value: interconnection_spr,\n name: 'interconnection_spr',\n label: 'interconnection spr'\n },\n {\n value: net_metering_allowed,\n name: 'net_metering_allowed',\n label: 'net metering allowed'\n },\n {\n value: country_average_rate_kwh,\n name: 'country_average_rate_kwh',\n label: 'country average rate',\n prefix: '$',\n suffix: '/kWh'\n },\n {\n value: performance_payments_spr,\n name: 'performance_payments_spr',\n label: 'performance payments spr'\n },\n {\n value: state_commercial_rate_kwh,\n name: 'state_commercial_rate_kwh',\n label: 'state commercial rate',\n prefix: '$',\n suffix: '/kWh'\n },\n {\n value: state_industrial_rate_kwh,\n name: 'state_industrial_rate_kwh',\n label: 'state industrial rate',\n prefix: '$',\n suffix: '/kWh'\n },\n {\n value: state_residential_rate_kwh,\n name: 'state_residential_rate_kwh',\n label: 'state residential rate',\n prefix: '$',\n suffix: '/kWh'\n },\n {\n value: country_commercial_rate_kwh,\n name: 'country_commercial_rate_kwh',\n label: 'country commercial rate',\n prefix: '$',\n suffix: '/kWh'\n },\n {\n value: country_industrial_rate_kwh,\n name: 'country_industrial_rate_kwh',\n label: 'country industrial rate',\n prefix: '$',\n suffix: '/kWh'\n },\n {\n value: net_metering_capacity_limit,\n name: 'net_metering_capacity_limit',\n label: 'net metering capacity limit'\n },\n {\n value: country_residential_rate_kwh,\n name: 'country_residential_rate_kwh',\n label: 'country residential rate',\n prefix: '$',\n suffix: '/kWh'\n },\n {\n value: net_metering_meter_aggregation,\n name: 'net_metering_meter_aggregation',\n label: 'net metering meter aggregation'\n }\n ];\n}\n","import { _object_without_properties_loose } from \"./_object_without_properties_loose.js\";\n\nexport function _object_without_properties(source, excluded) {\n if (source == null) return {};\n\n var target = _object_without_properties_loose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\nexport { _object_without_properties as _ };\n","export function _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\nexport { _object_without_properties_loose as _ };\n","import { observable, action, computed, makeObservable } from 'mobx';\nimport BuildingStore from './BuildingStore';\nimport agent from '../lib/agent';\nimport { formatBuildingPower } from '../lib/formatData';\nimport translations from '../constants/translations';\n\nclass Store {\n isLoading = false;\n id = null;\n building = null;\n estimates = null;\n estimates_int = null;\n financialsHash = null;\n details = null;\n weather_timestamp = null;\n wind_speed = null;\n temperature = null;\n places = null;\n financials = null;\n closest_power_plant = null;\n power_line = null;\n weatherData = [];\n predictions = [];\n centroid = null;\n bbox = null;\n timeOfDay = new Date(1681488000000);\n financialMode = 'default';\n showUploadedData = false;\n\n setFinancialsHash = hash => {\n this.financialsHash = hash;\n };\n\n setFinancials = financials => {\n this.financials = financials;\n };\n\n loadBuilding = async buildingId => {\n if (this.id === buildingId && !this.isLoading) {\n return true;\n }\n this.building = null;\n this.isLoading = true;\n this.centroid = null;\n this.bbox = null;\n this.financials = null;\n this.financialMode = 'default';\n this.timeOfDay = new Date(1681488000000);\n const building = await BuildingStore.loadBuilding(buildingId);\n\n if (building) {\n this.id = building.id;\n this.details = building.details;\n this.estimates = building.estimates;\n this.estimates_int = building.estimates_int;\n\n this.building = building;\n this.centroid = building.centroid;\n this.bbox = building.bbox;\n this.weather_timestamp = null;\n this.wind_speed = null;\n this.temperature = null;\n this.weatherData = [];\n this.predictions = [];\n this.places = null;\n this.closest_power_plant = null;\n this.power_line = null;\n this.isLoading = false;\n\n if (building.financials) {\n this.setFinancials(building.financials);\n }\n return building;\n }\n this.isLoading = false;\n return null;\n };\n\n loadFinancials = async () => {\n const building = await BuildingStore.loadBuilding(this.id);\n\n if (building) {\n console.log('new financials');\n this.setFinancials(building.financials);\n return building;\n }\n return null;\n };\n\n constructor() {\n makeObservable(this, {\n isLoading: observable,\n showUploadedData: observable,\n id: observable,\n centroid: observable,\n financialsHash: observable,\n estimates: observable,\n estimates_int: observable,\n timeOfDay: observable,\n details: observable,\n weather_timestamp: observable,\n financials: observable,\n wind_speed: observable,\n temperature: observable,\n places: observable,\n closest_power_plant: observable,\n power_line: observable,\n weatherData: observable,\n predictions: observable,\n loadBuilding: action,\n financialMode: observable,\n sections: computed,\n quickMenuLinks: computed,\n getWeather: action,\n getPredictions: action,\n getPlaces: action,\n setFinancialMode: action,\n getPowerOptions: action\n });\n }\n\n get sections() {\n if (this.details) {\n return Object.keys(this.details)\n .filter(key => this.details[key])\n .map(id => ({\n id,\n title: translations[id]\n }));\n }\n return [];\n }\n\n get analyticsUrl() {\n if (this.financials) {\n return this.financials.analytics_id;\n }\n return null;\n }\n\n get emissionsData() {\n if (this.financials) {\n return this.financials.emissions;\n }\n return null;\n }\n\n get cashFlow() {\n if (this.financials) {\n return this.financials.capex_cash_flow;\n }\n return null;\n }\n\n get cashFlowPPA() {\n if (this.financials) {\n return this.financials.financials_ppa.capex_cash_flow;\n }\n\n return null;\n }\n\n get formattedFinancials() {\n if (this.financials?.formatted_financials) {\n return this.financials.formatted_financials.financials;\n }\n return [];\n }\n\n get formattedFinancialsPPA() {\n if (this.financials?.formatted_financials_ppa) {\n return this.financials.formatted_financials_ppa.financials;\n }\n return [];\n }\n\n get quickMenuLinks() {\n if (this.building) {\n const { contacts, tariff } = this.building;\n const links = [...this.sections];\n if (tariff) {\n links.push({\n id: 'tariff',\n title: `${translations.tariff}: ${tariff.name}`\n });\n }\n links.push({\n id: 'places',\n title: translations.places\n });\n if (contacts && !!contacts.length) {\n links.push({\n id: 'contacts',\n title: translations.contacts\n });\n }\n\n return links;\n }\n return [];\n }\n\n getBuildingFinancials = async projectId => {\n const { data } = await agent.Project.getBuildingFinancials(\n projectId,\n this.id\n );\n\n this.financials = data.data;\n };\n\n getWeather = async (lon, lat) => {\n const { data } = await agent.Building.getWeather(lon, lat);\n if (data.data) {\n this.weatherData = data.data.charts;\n }\n };\n\n getPredictions = async buildingId => {\n if (this.building.project_id) {\n const { data } = await agent.Project.getProjectBuildingPredictions(\n this.building.project_id,\n buildingId\n );\n this.predictions = data.data;\n } else {\n const { data } = await agent.Building.getPredictions(buildingId);\n this.predictions = data.data;\n }\n };\n\n getPlaces = async (buildingId, lon, lat) => {\n const { data } = await agent.Building.getPlaces(lon, lat);\n if (data?.data) {\n this.places = data.data;\n }\n };\n\n getPowerOptions = async (buildingId, lon, lat) => {\n const { data } = await agent.Building.getPowerOptions(lon, lat);\n if (data?.data) {\n const {\n power_line_closest_point,\n power_line_geometry,\n power_line_id,\n power_plant_geometry\n } = data.data;\n\n this.details = {\n ...this.details,\n ...formatBuildingPower(data.data)\n };\n this.closest_power_plant = true;\n this.power_line = {\n power_line_closest_point,\n power_line_geometry,\n power_line_id,\n power_plant_geometry\n };\n }\n };\n\n setEstimates = (estimates, estimates_int) => {\n if (!estimates) {\n throw new Error('estimates is required');\n }\n\n if (!estimates_int) {\n throw new Error('estimates_int is required');\n }\n\n this.estimates = estimates;\n this.estimates_int = estimates_int;\n };\n\n setFinancialMode = mode => {\n this.financialMode = mode;\n };\n\n setTimeOfDay = time => {\n this.timeOfDay = time;\n };\n\n setShowUploadedData = show => {\n this.showUploadedData = show;\n };\n}\n\nconst store = new Store();\nexport default store;\n","export default {\n building: 'Building',\n closest_power_plant: 'Nearest Power Plant',\n der: 'Der on-site',\n electricity_forecast: 'Realtime Utility and Weather',\n energy: 'Energy and environment',\n financials: 'Property Financials',\n incentives: 'Energy Incentives',\n energy_use: 'Energy Use',\n iso_territory: 'Independent System Operator',\n load_curve: 'Predicted Load Profile',\n natural_gas_service: 'Natural Gas Service Territory',\n ev: 'Electric Vehicles',\n owner: 'Ownership',\n power_line: 'Nearest Powerline',\n predictions: 'Solar Photovoltaic Production',\n temperature: 'Temperature',\n utility_territory: 'Utility Territory',\n wind_speed: 'Wind Speed',\n contacts: 'Contacts',\n tariff: 'Tariff',\n places: 'Places',\n descriptions: {\n storage_estimate: `A site-specific recommendation on the size of a Battery Storage system to be installed at this property`,\n storage_recommendation: `Suitability of Battery Storage technologies to this property type`,\n chp_estimate: `A site-specific recommendation on the size of a CHP system to be installed at this property`,\n chp_recommendation: `Suitability of CHP technologies to this property type`,\n fuel_cell_recommendation: `A site-specific recommendation on the size of a Fuel Cell system to be installed at this property`,\n fuel_cell_estimate: `Suitability of Fuel Cell technologies to this property type`,\n solar_recommendation: `A site-specific recommendation on the size of a Solar system to be installed at this property`,\n solar_estimate: `Suitability of Solar technologies to this type`,\n 'lot area': `Total square footage value of parcel of land`,\n 'total area': `Total square footage of building(s) on parcel`,\n 'year built': `Date of intial building completion`,\n 'office area': `area Sub-type of commercial area. Building usage breakdown for office area, allowing for a better understanding of building use`,\n 'number of floors': `Maximum number of floors of building(s) on property`,\n 'commercial area': `Building usage breakdown for commercial area, allowing for a better understanding of building use`,\n 'floor area ratio': `Gross floor area of building(s) (total area) divided by lot area`,\n 'number of buildings': `Number of buildings included on the property`,\n 'factory area': `Sub-type of commercial area. Building usage breakdown for factory area, allowing for a better understanding of building use`,\n 'retail area': `Sub-type of commercial area. Building usage breakdown for retail area, allowing for a better understanding of building use`,\n 'storage area': `Able to search through any of the NYC data sets using this number`,\n 'residential area': `Sub-type of commercial area. Building usage breakdown for storage area, allowing for a better understanding of building use`,\n 'land use': `Land Use of the property, derived from building class`,\n 'garage area': `Sub-type of commercial area. Building usage breakdown for garage area, allowing for a better understanding of building use`,\n landmark: `Name of the landmark designation on the building (if applicable)`,\n 'other area': `Sub-type of commercial area. Building usage breakdown for other area, allowing for a better understanding of building use`,\n 'residential units': `Number of residential units contained on the property (does not include hotel units)`,\n 'market value': `DER project development can increase current market value of property`,\n 'taxable value': `Actual or Transitional Assessed Value (whichever is less) minus any exemptions, used to calculate annual tax bill`,\n 'tax rate': `The rate used to determine the tax owed, each tax class has it's own rate `,\n 'property tax':\n 'Can provide useful insight. Often when property tax is $0, the site is subsidized ',\n revenue: `Total revenue of property`,\n lender: `Name of instutution loaning the amount listed`,\n opex: `Building Operating Expense`,\n loan: `Current loan amount`,\n 'net operating income': `Revenue minus OPEX`,\n 'loan year': `Year of most recent loan`,\n 'energy use intensity': `Total energy consumed in one year divided by total building area`,\n 'electric utility': `Name of Electric Utility`,\n 'energy star rating': `Screening tool that helps one assess how a building is performing. A score of 50 is the median`,\n gas_utility: `Name of Gas Utility`,\n 'total ghg emissions': `Total GHG emissions from the technologies and systems on the property`,\n bouler_model: `Model of boiler currently installed on the property`,\n 'total kwh': `Estimate of total kWh used on the lot in a year`,\n boiler_capacity: `Heating capacity of current boiler`,\n 'year peak': `Yearly peak electric demand of building(s)`,\n 'boiler installation date': `Istallation year of boiler, which can suggest a boiler is out of date and in need of an upgrade`,\n 'compliance(ll87)': `Compliance years in the recent past means they energy audit information is up-to-date. A compliance year scheduled in the near future means their energy info will be updated soon`,\n 'boiler oil consumption': `Estimate of yearly oil consumption by installed boiler`,\n 'utility network demand peak': `When electricity demand is highest for a given network`,\n 'is dual fuel': `Boiler able to accept both oil and natural gas (Y/N)`,\n owner: `Listed owner of building`,\n type: `Owner type`,\n 'natural gas utility': 'Name of Gas Utility',\n 'e-mail': `Email address listed for contact`,\n contact: `If an organization, contact at the organization for reaching out to initiate or continue conversations`,\n 'relationship to owner': 'Relationship of Contact to owner',\n phone: 'Phone number of contact'\n }\n};\n","import { observable, action, makeObservable } from 'mobx';\n\n// configure({ enforceActions: true});\nclass Store {\n open = null;\n data;\n\n constructor() {\n makeObservable(this, {\n open: observable,\n data: observable,\n setModal: action,\n setData: action\n });\n }\n\n setModal(modalName, data) {\n this.open = modalName;\n this.data = data;\n }\n\n setData(data) {\n this.data = data;\n }\n}\n\nconst store = new Store();\nexport default store;\n","import { action, observable, makeObservable } from 'mobx';\nimport ProjectStore from './ProjectStore';\n\nclass Store {\n buildings = new Map();\n\n constructor() {\n makeObservable(this, {\n buildings: observable,\n addBuilding: action,\n removeBuilding: action,\n create: action\n });\n }\n\n addBuilding(id, building) {\n this.buildings.set(id, building);\n }\n\n removeBuilding(id) {\n this.buldings.delete(id);\n }\n\n create = async name => {\n const params = {\n name,\n buildings: this.buildings.values()\n };\n\n await ProjectStore.createProject(params);\n };\n}\n\nconst store = new Store();\nexport default store;\n","import { observable, action, computed, makeObservable } from 'mobx';\nimport agent from '../lib/agent';\n\nclass Store {\n project = null;\n tasks = new Map();\n\n loadTasks = async (projectId, buildingId) => {\n this.tasks = new Map();\n const response = await agent.Task.getProjectTasks(projectId, buildingId);\n this.tasks = new Map(\n response.data.data.map(task => {\n return [task.id, task];\n })\n );\n };\n\n loadTask = async id => {\n try {\n const { data } = await agent.Task.get(id);\n if (data.ok) {\n this.tasks.set(data.data.id, data.data);\n return this.tasks.get(data.data.id);\n }\n } catch (e) {\n return null;\n }\n };\n\n get = id => {\n return this.tasks.get(id);\n };\n\n constructor() {\n makeObservable(this, {\n project: observable,\n tasks: observable,\n loadTasks: action,\n loadTask: action,\n get: action,\n total: computed,\n create: action,\n updateStatus: action,\n update: action,\n deleteTask: action\n });\n }\n\n get total() {\n return this.tasks.size;\n }\n\n create = async taskData => {\n const postParams = {\n ...taskData,\n users: taskData.users.map(u => u.id)\n };\n\n const { data } = await agent.Task.create(postParams);\n if (data.ok) {\n this.tasks.set(data.data.id, data.data);\n return data.data;\n }\n return null;\n };\n\n updateStatus = async taskData => {\n const task = this.tasks.get(taskData.id);\n this.tasks.set(taskData.id, taskData);\n await this.update(taskData, task);\n };\n\n update = async (taskId, taskData) => {\n const tasks = new Map(this.tasks);\n const task = tasks.get(taskId);\n const newTask = {\n ...task,\n status: taskData.status\n };\n\n if (taskData.status !== task.status) {\n tasks.set(taskId, newTask);\n this.tasks = tasks;\n }\n\n try {\n const { data } = await agent.Task.update(taskId, taskData);\n tasks.set(data.data.id, data.data);\n } catch (err) {\n tasks.set(task.id, task);\n }\n\n this.tasks = tasks;\n };\n\n deleteTask = async id => {\n const { data } = await agent.Task.delete(id);\n if (data.ok) {\n this.tasks.delete(id);\n return data.data;\n }\n return null;\n };\n}\n\nconst store = new Store();\nexport default store;\n","import { observable, computed, action, makeObservable } from 'mobx';\n\n// configure({ enforceActions: true});\nclass Store {\n controlPanelState = 'search';\n searchFiltersState = 'form';\n isSpeedDialOpen = false;\n isAnalysisPanelOpen = false;\n isMapVisible = false;\n isContentVisible = false;\n feedbackModalOpen = false;\n version = 'v2';\n REGISTRATION_VERSION = 'v2';\n\n mapLayers = [\n {\n name: 'coned_hosting_capacity',\n label: 'Hosting Capacity'\n },\n {\n name: 'coned_hosting_capacity_lines',\n label: 'Feeder Hosting Capacity'\n },\n {\n name: 'powerlines',\n label: 'Powerlines'\n },\n {\n name: 'openweather_solar',\n label: 'Temperature'\n },\n {\n name: 'openweather_wind',\n label: 'Wind'\n },\n {\n name: 'openweather_clouds',\n label: 'Cloud Cover'\n }\n ];\n\n detailView = {\n currentTab: 0\n };\n\n activeMapLayers = [];\n radius = false;\n isRadiusActive = false;\n\n sidebarExpanded = false;\n\n constructor() {\n makeObservable(this, {\n isAnalysisPanelOpen: observable,\n controlPanelState: observable,\n version: observable,\n REGISTRATION_VERSION: observable,\n feedbackModalOpen: observable,\n searchFiltersState: observable,\n isSpeedDialOpen: observable,\n isMapVisible: observable,\n isContentVisible: observable,\n mapLayers: observable,\n detailView: observable,\n activeMapLayers: observable,\n radius: observable,\n isRadiusActive: observable,\n sidebarExpanded: observable,\n layoutClass: computed,\n setRadius: action,\n setRadiusActive: action,\n setSearchPanelState: action,\n setSearchFiltersState: action,\n setSidebarExpanded: action,\n setIsSpeedDialOpen: action,\n setActiveLayer: action,\n setIsMapVisible: action,\n setIsContentVisible: action\n });\n }\n\n get layoutClass() {\n return [\n this.sidebarExpanded ? 'nav-expanded' : '',\n this.isContentVisible ? 'content-visible' : '',\n this.isMapVisible ? 'map-visible' : '',\n this.isSpeedDialOpen ? 'speeddial-visible' : ''\n ]\n .join(' ')\n .trim();\n }\n\n setRadius(value) {\n this.radius = value;\n }\n\n setRadiusActive(value) {\n this.isRadiusActive = value;\n }\n\n setSearchPanelState(state) {\n this.controlPanelState = state;\n }\n\n setSearchFiltersState(state) {\n this.searchFiltersState = state;\n }\n\n setSidebarExpanded(isExpanded) {\n this.sidebarExpanded = isExpanded;\n }\n\n setIsSpeedDialOpen(isOpen) {\n this.isSpeedDialOpen = isOpen;\n }\n\n setActiveLayer(layerName, isActive) {\n if (isActive) {\n this.activeMapLayers = [...this.activeMapLayers, layerName];\n } else {\n this.activeMapLayers = [...this.activeMapLayers, layerName].filter(\n layer => layer !== layerName\n );\n }\n }\n\n setAnalysisPanelOpen(isOpen) {\n this.isAnalysisPanelOpen = isOpen;\n }\n\n setActiveMapLayers(mapLayers) {\n this.activeMapLayers = mapLayers;\n }\n\n setIsMapVisible(isVisible) {\n this.isMapVisible = isVisible;\n }\n\n setIsContentVisible(isVisible) {\n this.isContentVisible = isVisible;\n }\n\n setFeedbackModalOpen(open) {\n this.feedbackModalOpen = open;\n }\n\n setUIVersion(version) {\n this.version = version;\n }\n setREGISTRATION_VERSION(version) {\n this.REGISTRATION_VERSION = version;\n }\n}\n\nconst store = new Store();\nexport default store;\n","import { observable, action, computed, makeObservable } from 'mobx';\nimport axios from '../lib/axios';\nimport agent from '../lib/agent';\nimport conf from '../conf';\n\nclass Store {\n user = null;\n groupMembers = [];\n notifications = [];\n status = 'loading';\n\n constructor() {\n makeObservable(this, {\n user: observable,\n groupMembers: observable,\n notifications: observable,\n status: observable,\n loggedIn: computed,\n isAdmin: computed,\n avatar: computed,\n isActivated: computed,\n isOnboardingCompleted: computed,\n login: action,\n hasAccess: action,\n logout: action,\n addNotification: action,\n fetchCredentials: action,\n switchGroup: action,\n fetchGroupMembers: action,\n deleteGroup: action,\n removeGroupMember: action\n });\n\n this.fetchCredentials();\n }\n\n get loggedIn() {\n return Boolean(this.user && this.user.logged_in);\n }\n\n get isAdmin() {\n return Boolean(this.user?.is_admin);\n }\n\n get avatar() {\n return `${conf.E2E_API_URL}user/${this.user?.id}/avatar?${this.user?.last_active}`;\n }\n\n get isActivated() {\n return Boolean(this.user?.is_activated);\n }\n\n get isOnboardingCompleted() {\n return Boolean(this.user?.is_onboarding_completed);\n }\n\n loginWithCode = async code => {\n const { data } = await axios.post('/login', {\n code\n });\n\n if (data.ok !== 1) return false;\n\n await this.fetchCredentials();\n return true;\n };\n\n login = async (email, password) => {\n const { data } = await axios.post('/login', {\n email,\n password\n });\n\n if (data.ok !== 1) return false;\n\n await this.fetchCredentials();\n return true;\n };\n\n hasAccess(id) {\n return this.user.group?.menu_items.includes(id);\n }\n\n logout = async () => {\n localStorage.removeItem('jwt');\n await agent.User.logout();\n this.user = null;\n };\n\n addNotification(notification) {\n this.notifications = [...this.notifications, notification];\n }\n\n fetchCredentials = async () => {\n const { data } = await axios.get('/status');\n this.user = data;\n if (data.msg === 'UNDER_MAINTENANCE') {\n this.status = 'UNDER_MAINTENANCE';\n } else {\n this.status = 'loaded';\n }\n\n if (data.is_activated && data.logged_in && data.group) {\n this.fetchGroupMembers();\n }\n\n return data;\n };\n\n hasGroupPermission = permission => {\n return Boolean(this.user.group.permissions[permission]);\n };\n\n switchGroup = async id => {\n try {\n const { data } = await axios.get(`/group/${id}/switch`);\n await this.fetchCredentials();\n this.fetchGroupMembers();\n return data;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n return null;\n }\n };\n\n fetchGroupMembers = async () => {\n const { data } = await axios.get(\n `/group/${this.user.group.id}/relationships/users`\n );\n this.groupMembers = data.data;\n return data.data;\n };\n\n deleteGroup = async groupId => {\n const newGroups = [...this.user.groups].filter(\n group => group.id !== groupId\n );\n this.user = {\n ...this.user,\n groups: newGroups\n };\n await agent.Group.delete(groupId);\n };\n\n removeGroupMember = async userId => {\n const groupId = this.user.group.id;\n const idx = this.groupMembers.findIndex(m => m.id === userId);\n this.groupMembers.splice(idx, 1);\n await axios.delete(`/group/${groupId}/relationships/users`, {\n data: [\n {\n id: userId\n }\n ]\n });\n };\n}\n\nconst store = new Store();\nexport default store;\n","import { computed, observable, action, makeObservable } from 'mobx';\nimport geojsonRbush from 'geojson-rbush';\nimport { formatBuildingFinancials } from '../lib/formatData';\nimport ProjectStore from './ProjectStore';\nimport UserStore from './UserStore';\nimport axios from '../lib/axios';\nimport agent from '../lib/agent';\nimport { getDistanceFromLatLonInKm } from '../lib/utils';\n\nimport { POPULAR_RANGE_FILTERS, RANGE_FILTERS } from '../constants/filters';\n\nclass Store {\n id = null;\n name = '';\n description = '';\n filters = {};\n acceptedFiles = [];\n lat = '';\n lon = '';\n address = '';\n color = '';\n files = [];\n executiveSummaryFileId = null;\n tasks = [];\n financials = null;\n resultMap = new Map();\n survey = [];\n groupId = null;\n buildingFilter = null;\n members = [];\n buildings = [];\n activeLayers = [];\n layers = [];\n isLoading = false;\n projectBuildingRegistry = new Map();\n bbox = null;\n pickedResults = new Set();\n vendors = [];\n isVendor = false;\n proposals = [];\n termsAccepted = true;\n infoMessage = '';\n seen = 'none';\n terms = null;\n status = 'in_progress';\n vendor = null;\n variant = 'large';\n headerInfo = null;\n headerVariant = 'map';\n infoMessageOpen = false;\n buildingOsmIds = new Set();\n created = null;\n\n proposalMessage = '';\n contactMessage = '';\n customerName = '';\n proposalDeadline = '';\n\n rfpQuestions = [];\n technologies = [\n {\n id: 'solar',\n label: 'Solar'\n },\n {\n id: 'chp',\n label: 'Combined Heat and Power'\n },\n {\n id: 'fuelcell',\n label: 'Fuel Cell'\n },\n {\n id: 'storage',\n label: 'Storage'\n },\n {\n id: 'efficiency',\n label: 'Energy Efficiency'\n },\n {\n id: 'other',\n label: 'Other'\n }\n ];\n\n recommendations = {\n chp: 0,\n solar: 0,\n storage: 0,\n fuel_cell: 0\n };\n\n loadProject = async projectId => {\n this.isLoading = true;\n\n const project = await ProjectStore.loadProject(projectId);\n if (project) {\n this.variant = 'large';\n this.headerVariant = 'map';\n this.id = project.id;\n this.financials = null;\n this.name = project.name;\n this.buildingFilter = null;\n this.financials = project.financials;\n this.description = project.description;\n this.color = project.color;\n this.files = project.files;\n this.tasks = project.tasks;\n this.address = project.address;\n this.lat = project.lat;\n this.lon = project.lon;\n this.survey = project.survey;\n this.members = project.members;\n this.layers = project.layers;\n this.created = project.created;\n this.filters = project.filters;\n\n this.proposalDeadline = project.proposal_deadline_at;\n this.executiveSummaryFileId = project.executive_summary_file_id;\n this.customerName = project.customer_name;\n this.proposalMessage = project.markdown_proposal_message;\n this.contactMessage = project.markdown_proposal_contact;\n\n this.bbox = project.bbox;\n this.vendors = project.vendors;\n this.groupId = project.group_id;\n this.isVendor = project.is_vendor;\n this.proposals = project.proposals;\n this.termsAccepted = project.terms_accepted;\n this.seen = project.seen;\n this.infoMessage = project.info_message;\n this.status = project.status;\n this.vendor = null;\n this.terms = project.terms;\n this.recommendations = project.recommendations;\n\n if (this.isVendor) {\n this.setVendor(UserStore.user.group);\n }\n\n if (!this.termsAccepted) {\n this.isLoading = false;\n return null;\n }\n\n this.setBuildings(project.buildings);\n this.buildingOsmIds = new Set(\n project.buildings.map(building => building.original_id)\n );\n\n const fetchBuildings = async () => {\n const response = await agent.Project.getProjectBuildings(this.id);\n const { data, financials } = response.data;\n if (financials) {\n this.setFinancials(financials);\n }\n if (data.every(building => building.financials)) {\n this.setBuildings(data);\n }\n\n if (!this.financialsCalculated) setTimeout(fetchBuildings, 5000);\n };\n\n if (!this.financialsCalculated) {\n fetchBuildings();\n }\n\n this.isLoading = false;\n return project;\n }\n\n this.isLoading = false;\n return null;\n };\n\n loadBuildings = async () => {\n const response = await agent.Project.getProjectBuildings(this.id);\n const { data, financials } = response.data;\n this.setBuildings(data);\n\n if (financials) {\n this.setFinancials(financials);\n }\n\n if (data.every(building => building.financials)) {\n return data;\n }\n return false;\n };\n\n setName = name => {\n this.name = name;\n agent.Project.updateProject(this.id, { name });\n const resultMap = new Map(ProjectStore.resultMap);\n const result = resultMap.get(this.id);\n if (result) {\n resultMap.set(this.id, {\n ...result,\n name\n });\n\n ProjectStore.setResults(resultMap);\n }\n };\n\n setHeaderVariant = variant => {\n this.headerVariant = variant;\n };\n\n setHeaderInfo = data => {\n this.headerInfo = data;\n };\n\n getProjectFilters = () => {\n const { filters } = this;\n const newPopularRangeFilters = JSON.parse(\n JSON.stringify({ ...POPULAR_RANGE_FILTERS })\n );\n\n const newRangeFilters = JSON.parse(JSON.stringify({ ...RANGE_FILTERS }));\n\n Object.entries(filters).forEach(([key, value]) => {\n Object.entries(newRangeFilters).forEach(([title, filters]) => {\n const idx = filters.findIndex(f => f.name === key);\n\n if (idx !== -1) {\n if (value.min === null || value.max === null) {\n newRangeFilters[title][idx].isVisible = false;\n } else {\n newRangeFilters[title][idx] = {\n ...newRangeFilters[title][idx],\n start: value.min,\n end: value.max\n };\n }\n }\n });\n });\n\n // remove empty categories\n Object.entries(newRangeFilters).forEach(([key, value]) => {\n if (value.every(f => f.isVisible === false)) {\n delete newRangeFilters[key];\n }\n });\n\n Object.entries(filters).forEach(([key, value]) => {\n const idx = newPopularRangeFilters.popular.findIndex(f => f.name === key);\n if (idx !== -1) {\n newPopularRangeFilters.popular[idx] = {\n ...newPopularRangeFilters.popular[idx],\n start: value.min,\n end: value.max\n };\n }\n });\n\n return {\n popular: newPopularRangeFilters,\n rangeFilters: newRangeFilters\n };\n };\n\n setFilters = projectFilters => {\n this.filters = projectFilters;\n };\n\n setBuildings = buildings => {\n this.buildings = buildings.map(building => {\n return {\n ...building,\n // financials: null,\n formatted_financials: building.financials\n ? formatBuildingFinancials(building.financials)\n : null\n };\n });\n };\n\n loadResult = async ids => {\n if (!ids.length) {\n return;\n }\n\n // Set state to loading\n ids.forEach(id => {\n this.resultMap.set(id, 1);\n });\n\n const response = await agent.Project.getProjectBuildings(this.id);\n\n response.data.data.forEach(building => {\n this.resultMap.set(building.id, {\n ...building,\n formatted_financials: building.financials\n ? formatBuildingFinancials(building.financials)\n : null\n });\n });\n\n return response.data.data;\n };\n\n setDescription = description => {\n this.description = description;\n };\n\n addFile = file => {\n const newFiles = [...this.files, file];\n this.files = newFiles;\n };\n\n constructor() {\n makeObservable(this, {\n id: observable,\n name: observable,\n description: observable,\n resultMap: observable,\n financials: observable,\n lat: observable,\n lon: observable,\n address: observable,\n rfpQuestions: observable,\n color: observable,\n files: observable,\n layers: observable,\n tasks: observable,\n survey: observable,\n groupId: observable,\n members: observable,\n buildings: observable,\n isLoading: observable,\n acceptedFiles: observable,\n infoMessageOpen: observable,\n\n proposalMessage: observable,\n executiveSummaryFileId: observable,\n contactMessage: observable,\n customerName: observable,\n proposalDeadline: observable,\n\n projectBuildingRegistry: observable,\n bbox: observable,\n vendors: observable,\n isVendor: observable,\n proposals: observable,\n termsAccepted: observable,\n buildingFilter: observable,\n filters: observable,\n terms: observable,\n infoMessage: observable,\n seen: observable,\n status: observable,\n vendor: observable,\n variant: observable,\n headerInfo: observable,\n headerVariant: observable,\n recommendations: observable,\n activeLayers: observable,\n loadProject: action,\n setTermsAccepted: action,\n setInfoMessageOpen: action,\n setName: action,\n setHeaderVariant: action,\n setHeaderInfo: action,\n setBuildings: action,\n setDescription: action,\n addFile: action,\n financialsCalculated: computed,\n filteredBuildings: computed,\n setFileId: action,\n deleteFiles: action,\n setFilters: action,\n removeBuilding: action,\n addFiles: action,\n addProposals: action,\n setMembers: action,\n setVendors: action,\n selectedVendors: computed,\n addBuilding: action,\n submit: action,\n acceptTerms: action,\n acceptInfoMessage: action,\n setInfoMessage: action,\n setTerms: action,\n setStatus: action,\n setVendor: action,\n setVariant: action,\n updateBuildingName: action\n });\n }\n\n get financialsCalculated() {\n return this.buildings.every(building => building.financials);\n }\n\n get filteredBuildings() {\n const geometry = this.buildingFilter?.geometry;\n if (!geometry) return this.buildings;\n\n const tree = geojsonRbush();\n tree.insert({\n type: 'Feature',\n geometry\n });\n\n if (geometry.type === 'Polygon') {\n return this.buildings.filter(building => {\n return tree.collides({\n type: 'Feature',\n geometry: building.polygon\n });\n });\n }\n\n if (geometry.type === 'Point') {\n return this.buildings.reduce((acc, building) => {\n const distance = getDistanceFromLatLonInKm(\n geometry.coordinates,\n building.centroid\n );\n\n if (distance < 0.5) {\n acc.push({\n ...building,\n distance\n });\n }\n\n return acc;\n }, []);\n }\n\n return this.buildings;\n }\n\n setFileId = (fileTempId, fileId) => {\n const index = this.files.findIndex(file => file.id === fileTempId);\n if (index > -1) {\n this.files[index].id = fileId;\n }\n };\n\n setTerms = terms => {\n this.terms = terms;\n };\n\n deleteFiles = async fileIds => {\n this.files = [...this.files].filter(file => !fileIds.includes(file.id));\n await agent.Workspace.delete(fileIds);\n };\n\n removeBuilding = async buildingId => {\n this.buildings = [...this.buildings].filter(\n building => building.id !== buildingId\n );\n };\n\n addFiles = async (fileIds, buildingId) => {\n await agent.Project.addFiles(this.id, fileIds, buildingId);\n };\n\n addProposals = async fileIds => {\n await agent.Project.addProposals(this.id, fileIds);\n };\n\n setMembers = async members => {\n this.members = members;\n await agent.Project.addMembers(this.id, {\n data: members.map(({ id }) => id)\n });\n };\n\n setVendors = async vendors => {\n this.vendors = vendors;\n };\n\n getVendors = async () => {\n const response = await agent.Project.getProjectVendors(this.id);\n this.setVendors(response.data.data);\n };\n\n removeVendor = async groupId => {\n await agent.Project.removeVendor(this.id, groupId);\n const newVendors = this.vendors.filter(vendor => vendor.id !== groupId);\n this.setVendors(newVendors);\n };\n\n addVendor = async groupIdLike => {\n const { data } = await agent.Project.addVendor(this.id, groupIdLike);\n const newVendors = [...this.vendors, data];\n this.setVendors(newVendors);\n };\n\n inviteVendorByEmail = async email => {\n await agent.Project.inviteVendor(this.id, email);\n };\n\n get selectedVendors() {\n return this.vendors.filter(vendor => vendor.is_selected);\n }\n\n addBuilding(building) {\n this.buildings = [...this.buildings, building];\n }\n\n submit = () => {\n const data = {\n title: this.title,\n description: this.description,\n users: this.users,\n files: this.files,\n project_id: this.project_id\n };\n\n if (this.id) {\n data.id = this.id;\n }\n };\n\n acceptTerms = async (projectId, terms) => {\n const data = JSON.parse(JSON.stringify(terms || this.terms));\n const response = await axios.post(\n `/project/${projectId || this.id}/accept`,\n data\n );\n if (response.data.err?.code === 'terms_updated') {\n this.setTerms(response.data.data);\n return false;\n }\n this.termsAccepted = true;\n return true;\n };\n\n setTermsAccepted = termsAccepted => {\n this.termsAccepted = termsAccepted;\n };\n\n acceptInfoMessage = async () => {\n agent.Project.acceptInfoMessage(this.id);\n };\n\n setInfoMessage(message) {\n this.infoMessage = message;\n agent.Project.setProjectSettings(this.id, {\n info_message: message\n });\n }\n\n setProposalMessage(message) {\n this.proposalMessage = message;\n }\n\n setContactMessage(message) {\n this.contactMessage = message;\n }\n\n setExecutiveSummaryFileId(fileId) {\n this.executiveSummaryFileId = fileId;\n }\n\n setCustomerName(customerName) {\n this.customerName = customerName;\n }\n\n setProposalDeadline(deadline) {\n this.proposalDeadline = deadline;\n }\n\n setStatus(status, options = {}) {\n this.status = status;\n const resultMap = new Map(ProjectStore.resultMap);\n const project = resultMap.get(this.id);\n if (project) {\n project.status = status;\n }\n\n agent.Project.setProjectSettings(this.id, {\n status,\n ...options\n });\n\n ProjectStore.setResults(resultMap);\n }\n\n setVendor(vendor) {\n this.vendor = vendor;\n }\n\n setVariant(variant) {\n this.variant = variant;\n }\n\n setRFPQuestions(questions) {\n this.rfpQuestions = questions;\n }\n\n getRFPQuestion(questionId) {\n return this.rfpQuestions.find(q => q.question_id === questionId);\n }\n\n setRFPQuestionActive = (questionId, isActive) => {\n this.rfpQuestions = this.rfpQuestions.map(q => {\n if (q.question_id === questionId)\n return {\n ...q,\n is_active: isActive\n };\n return q;\n });\n\n agent.Project.updateProjectRFPQuestion(this.id, questionId, {\n is_active: isActive\n });\n };\n\n loadRFPQuestions = async () => {\n const { data } = await agent.Project.getProjectRFPQuestions(this.id);\n this.setRFPQuestions(data.data);\n };\n\n deleteRFPQuestion = async questionId => {\n await agent.Project.deleteProjectRFPQuestion(this.id, questionId);\n };\n\n setProposals(proposals) {\n this.proposals = proposals;\n }\n\n setFinancials(financials) {\n this.financials = financials;\n }\n\n // eslint-disable-next-line class-methods-use-this\n get analyticsUrl() {\n return null;\n }\n\n getFinancials = async projectId => {\n const { data } = await agent.Project.getProjectFinancials(\n projectId || this.id,\n this.id\n );\n\n this.financials = data.data;\n };\n\n get emissionsData() {\n console.log('this.financials', this.financials);\n if (this.financials) {\n return this.financials.emissions;\n }\n return null;\n }\n\n get cashFlow() {\n if (this.financials?.capex_cash_flow) {\n return this.financials.capex_cash_flow;\n }\n return null;\n }\n\n get formattedFinancials() {\n return this.financials.formatted_financials;\n }\n\n getLayers = async () => {\n const response = await agent.Project.getProjectLayers(this.id);\n this.layers = response.data.data;\n };\n\n setLayerActive(layerId, isActive) {\n const layers = [...this.activeLayers, layerId];\n if (!isActive) {\n this.setActiveLayers([\n ...this.activeLayers.filter(activeLayerId => activeLayerId !== layerId)\n ]);\n } else {\n this.setActiveLayers(layers);\n }\n }\n\n setActiveLayers(activeLayers) {\n this.activeLayers = [...new Set(activeLayers)];\n }\n\n loadProposals = async () => {\n const response = await agent.Project.getProposals(this.id);\n this.setProposals(response.data.data);\n };\n\n deleteProposal = async proposalId => {\n await agent.Project.deleteProposal(this.id, proposalId);\n };\n\n setBuildingFilter(filter) {\n this.buildingFilter = filter;\n }\n\n setAcceptedFiles(files) {\n this.acceptedFiles = files;\n }\n\n waitProjectReady = async (\n onProgress = () => {\n return 0;\n },\n timeout = 10 * 60 * 1000\n ) => {\n return new Promise(resolve => {\n const interval = setInterval(async () => {\n const status = await this.getStatus();\n const totalProgress =\n status.progress + 10 <= 100 ? status.progress + 10 : status.progress;\n\n onProgress(totalProgress);\n if (status.progress === 100) {\n const buildings = await this.loadBuildings();\n if (buildings) {\n clearInterval(interval);\n resolve();\n }\n }\n }, 5000);\n\n setTimeout(() => {\n clearInterval(interval);\n resolve();\n }, timeout);\n });\n };\n\n getStatus = async () => {\n const response = await agent.Project.getStatus(this.id);\n return response.data;\n };\n\n getProjectBuildingByOsmId = osmIdLike => {\n if (!osmIdLike) return null;\n return this.buildings.find(building => {\n const osmId = osmIdLike.replace('osm-', '').toUpperCase();\n console.log('INCLUDES', building.original_id, osmId);\n return building.original_id.includes(osmId);\n });\n };\n\n hasBuildingWithOsmId = osmIdLike => {\n if (!osmIdLike) return false;\n const osmId = osmIdLike.replace('osm-', '').toUpperCase();\n return this.buildingOsmIds.has(osmId);\n };\n\n updateBuildingName(buildingId, buildingName) {\n const projectResult = ProjectStore.resultMap.get(this.id);\n const newProjectResult = { ...projectResult };\n const newResults = new Map(ProjectStore.resultMap);\n newProjectResult.buildings = newProjectResult.buildings.map(building => {\n return {\n ...building,\n name: building.id === buildingId ? buildingName : building.name\n };\n });\n\n newResults.set(this.id, newProjectResult);\n ProjectStore.setResults(newResults);\n\n this.buildings = [...this.buildings].map(building => {\n if (building.id === buildingId) {\n return {\n ...building,\n name: buildingName\n };\n }\n\n return building;\n });\n }\n\n setInfoMessageOpen = open => {\n this.infoMessageOpen = open;\n };\n}\n\nconst store = new Store();\nexport default store;\n","var rbush = require('rbush');\nvar helpers = require('@turf/helpers');\nvar meta = require('@turf/meta');\nvar turfBBox = require('@turf/bbox').default;\nvar featureEach = meta.featureEach;\nvar coordEach = meta.coordEach;\nvar polygon = helpers.polygon;\nvar featureCollection = helpers.featureCollection;\n\n/**\n * GeoJSON implementation of [RBush](https://github.com/mourner/rbush#rbush) spatial index.\n *\n * @name rbush\n * @param {number} [maxEntries=9] defines the maximum number of entries in a tree node. 9 (used by default) is a\n * reasonable choice for most applications. Higher value means faster insertion and slower search, and vice versa.\n * @returns {RBush} GeoJSON RBush\n * @example\n * var geojsonRbush = require('geojson-rbush').default;\n * var tree = geojsonRbush();\n */\nfunction geojsonRbush(maxEntries) {\n var tree = new rbush(maxEntries);\n /**\n * [insert](https://github.com/mourner/rbush#data-format)\n *\n * @param {Feature} feature insert single GeoJSON Feature\n * @returns {RBush} GeoJSON RBush\n * @example\n * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n * tree.insert(poly)\n */\n tree.insert = function (feature) {\n if (feature.type !== 'Feature') throw new Error('invalid feature');\n feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n return rbush.prototype.insert.call(this, feature);\n };\n\n /**\n * [load](https://github.com/mourner/rbush#bulk-inserting-data)\n *\n * @param {FeatureCollection|Array} features load entire GeoJSON FeatureCollection\n * @returns {RBush} GeoJSON RBush\n * @example\n * var polys = turf.polygons([\n * [[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]],\n * [[[-93, 32], [-83, 32], [-83, 39], [-93, 39], [-93, 32]]]\n * ]);\n * tree.load(polys);\n */\n tree.load = function (features) {\n var load = [];\n // Load an Array of Features\n if (Array.isArray(features)) {\n features.forEach(function (feature) {\n if (feature.type !== 'Feature') throw new Error('invalid features');\n feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n load.push(feature);\n });\n } else {\n // Load a FeatureCollection\n featureEach(features, function (feature) {\n if (feature.type !== 'Feature') throw new Error('invalid features');\n feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n load.push(feature);\n });\n }\n return rbush.prototype.load.call(this, load);\n };\n\n /**\n * [remove](https://github.com/mourner/rbush#removing-data)\n *\n * @param {Feature} feature remove single GeoJSON Feature\n * @param {Function} equals Pass a custom equals function to compare by value for removal.\n * @returns {RBush} GeoJSON RBush\n * @example\n * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n *\n * tree.remove(poly);\n */\n tree.remove = function (feature, equals) {\n if (feature.type !== 'Feature') throw new Error('invalid feature');\n feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n return rbush.prototype.remove.call(this, feature, equals);\n };\n\n /**\n * [clear](https://github.com/mourner/rbush#removing-data)\n *\n * @returns {RBush} GeoJSON Rbush\n * @example\n * tree.clear()\n */\n tree.clear = function () {\n return rbush.prototype.clear.call(this);\n };\n\n /**\n * [search](https://github.com/mourner/rbush#search)\n *\n * @param {BBox|FeatureCollection|Feature} geojson search with GeoJSON\n * @returns {FeatureCollection} all features that intersects with the given GeoJSON.\n * @example\n * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n *\n * tree.search(poly);\n */\n tree.search = function (geojson) {\n var features = rbush.prototype.search.call(this, this.toBBox(geojson));\n return featureCollection(features);\n };\n\n /**\n * [collides](https://github.com/mourner/rbush#collisions)\n *\n * @param {BBox|FeatureCollection|Feature} geojson collides with GeoJSON\n * @returns {boolean} true if there are any items intersecting the given GeoJSON, otherwise false.\n * @example\n * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n *\n * tree.collides(poly);\n */\n tree.collides = function (geojson) {\n return rbush.prototype.collides.call(this, this.toBBox(geojson));\n };\n\n /**\n * [all](https://github.com/mourner/rbush#search)\n *\n * @returns {FeatureCollection} all the features in RBush\n * @example\n * tree.all()\n */\n tree.all = function () {\n var features = rbush.prototype.all.call(this);\n return featureCollection(features);\n };\n\n /**\n * [toJSON](https://github.com/mourner/rbush#export-and-import)\n *\n * @returns {any} export data as JSON object\n * @example\n * var exported = tree.toJSON()\n */\n tree.toJSON = function () {\n return rbush.prototype.toJSON.call(this);\n };\n\n /**\n * [fromJSON](https://github.com/mourner/rbush#export-and-import)\n *\n * @param {any} json import previously exported data\n * @returns {RBush} GeoJSON RBush\n * @example\n * var exported = {\n * \"children\": [\n * {\n * \"type\": \"Feature\",\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * },\n * \"properties\": {},\n * \"bbox\": [110, 50, 110, 50]\n * }\n * ],\n * \"height\": 1,\n * \"leaf\": true,\n * \"minX\": 110,\n * \"minY\": 50,\n * \"maxX\": 110,\n * \"maxY\": 50\n * }\n * tree.fromJSON(exported)\n */\n tree.fromJSON = function (json) {\n return rbush.prototype.fromJSON.call(this, json);\n };\n\n /**\n * Converts GeoJSON to {minX, minY, maxX, maxY} schema\n *\n * @private\n * @param {BBox|FeatureCollection|Feature} geojson feature(s) to retrieve BBox from\n * @returns {Object} converted to {minX, minY, maxX, maxY}\n */\n tree.toBBox = function (geojson) {\n var bbox;\n if (geojson.bbox) bbox = geojson.bbox;\n else if (Array.isArray(geojson) && geojson.length === 4) bbox = geojson;\n else if (Array.isArray(geojson) && geojson.length === 6) bbox = [geojson[0], geojson[1], geojson[3], geojson[4]];\n else if (geojson.type === 'Feature') bbox = turfBBox(geojson);\n else if (geojson.type === 'FeatureCollection') bbox = turfBBox(geojson);\n else throw new Error('invalid geojson')\n\n return {\n minX: bbox[0],\n minY: bbox[1],\n maxX: bbox[2],\n maxY: bbox[3]\n };\n };\n return tree;\n}\n\nmodule.exports = geojsonRbush;\nmodule.exports.default = geojsonRbush;\n","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=t||self).RBush=i()}(this,function(){\"use strict\";function t(t,r,e,a,h){!function t(n,r,e,a,h){for(;a>e;){if(a-e>600){var o=a-e+1,s=r-e+1,l=Math.log(o),f=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*f*(o-f)/o)*(s-o/2<0?-1:1),m=Math.max(e,Math.floor(r-s*f/o+u)),c=Math.min(a,Math.floor(r+(o-s)*f/o+u));t(n,r,m,c,h)}var p=n[r],d=e,x=a;for(i(n,e,r),h(n[a],p)>0&&i(n,e,a);d0;)x--}0===h(n[e],p)?i(n,e,x):i(n,++x,a),x<=r&&(e=x+1),r<=x&&(a=x-1)}}(t,r,e||0,a||t.length-1,h||n)}function i(t,i,n){var r=t[i];t[i]=t[n],t[n]=r}function n(t,i){return ti?1:0}var r=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function e(t,i,n){if(!n)return i.indexOf(t);for(var r=0;r=t.minX&&i.maxY>=t.minY}function p(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function d(i,n,r,e,a){for(var h=[n,r];h.length;)if(!((r=h.pop())-(n=h.pop())<=e)){var o=n+Math.ceil((r-n)/e/2)*e;t(i,o,n,r,a),h.push(n,o,o,r)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(t){var i=this.data,n=[];if(!c(t,i))return n;for(var r=this.toBBox,e=[];i;){for(var a=0;a=0&&e[i].children.length>this._maxEntries;)this._split(e,i),i--;this._adjustParentBBoxes(r,e,i)},r.prototype._split=function(t,i){var n=t[i],r=n.children.length,e=this._minEntries;this._chooseSplitAxis(n,e,r);var h=this._chooseSplitIndex(n,e,r),o=p(n.children.splice(h,n.children.length-h));o.height=n.height,o.leaf=n.leaf,a(n,this.toBBox),a(o,this.toBBox),i?t[i-1].children.push(o):this._splitRoot(n,o)},r.prototype._splitRoot=function(t,i){this.data=p([t,i]),this.data.height=t.height+1,this.data.leaf=!1,a(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(t,i,n){for(var r,e,a,o,s,l,u,m=1/0,c=1/0,p=i;p<=n-i;p++){var d=h(t,0,p,this.toBBox),x=h(t,p,n,this.toBBox),v=(e=d,a=x,o=void 0,s=void 0,l=void 0,u=void 0,o=Math.max(e.minX,a.minX),s=Math.max(e.minY,a.minY),l=Math.min(e.maxX,a.maxX),u=Math.min(e.maxY,a.maxY),Math.max(0,l-o)*Math.max(0,u-s)),M=f(d)+f(x);v=i;c--){var p=t.children[c];o(s,t.leaf?e(p):p),l+=u(s)}return l},r.prototype._adjustParentBBoxes=function(t,i,n){for(var r=n;r>=0;r--)o(i[r],t)},r.prototype._condense=function(t){for(var i=t.length-1,n=void 0;i>=0;i--)0===t[i].children.length?i>0?(n=t[i-1].children).splice(n.indexOf(t[i]),1):this.clear():a(t[i],this.toBBox)},r});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n centimeters: exports.earthRadius * 100,\n centimetres: exports.earthRadius * 100,\n degrees: exports.earthRadius / 111325,\n feet: exports.earthRadius * 3.28084,\n inches: exports.earthRadius * 39.370,\n kilometers: exports.earthRadius / 1000,\n kilometres: exports.earthRadius / 1000,\n meters: exports.earthRadius,\n metres: exports.earthRadius,\n miles: exports.earthRadius / 1609.344,\n millimeters: exports.earthRadius * 1000,\n millimetres: exports.earthRadius * 1000,\n nauticalmiles: exports.earthRadius / 1852,\n radians: 1,\n yards: exports.earthRadius / 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n centimeters: 100,\n centimetres: 100,\n degrees: 1 / 111325,\n feet: 3.28084,\n inches: 39.370,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n meters: 1,\n metres: 1,\n miles: 1 / 1609.344,\n millimeters: 1000,\n millimetres: 1000,\n nauticalmiles: 1 / 1852,\n radians: 1 / exports.earthRadius,\n yards: 1 / 1.0936,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n acres: 0.000247105,\n centimeters: 10000,\n centimetres: 10000,\n feet: 10.763910417,\n inches: 1550.003100006,\n kilometers: 0.000001,\n kilometres: 0.000001,\n meters: 1,\n metres: 1,\n miles: 3.86e-7,\n millimeters: 1000000,\n millimetres: 1000000,\n yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n if (options === void 0) { options = {}; }\n var feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, options) {\n if (options === void 0) { options = {}; }\n switch (type) {\n case \"Point\": return point(coordinates).geometry;\n case \"LineString\": return lineString(coordinates).geometry;\n case \"Polygon\": return polygon(coordinates).geometry;\n case \"MultiPoint\": return multiPoint(coordinates).geometry;\n case \"MultiLineString\": return multiLineString(coordinates).geometry;\n case \"MultiPolygon\": return multiPolygon(coordinates).geometry;\n default: throw new Error(type + \" is invalid\");\n }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"Point\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n var ring = coordinates_1[_i];\n if (ring.length < 4) {\n throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n var geom = {\n type: \"Polygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n var geom = {\n type: \"LineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n if (options === void 0) { options = {}; }\n var fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiLineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPoint\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPolygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"GeometryCollection\",\n geometries: geometries,\n };\n return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (precision === void 0) { precision = 0; }\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = exports.factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = exports.factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n var angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"meters\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n var startFactor = exports.areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n var finalFactor = exports.areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num) && !/^\\s*$/.test(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach(function (num) {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\nexports.validateId = validateId;\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error(\"method has been renamed to `radiansToDegrees`\");\n}\nexports.radians2degrees = radians2degrees;\nfunction degrees2radians() {\n throw new Error(\"method has been renamed to `degreesToRadians`\");\n}\nexports.degrees2radians = degrees2radians;\nfunction distanceToDegrees() {\n throw new Error(\"method has been renamed to `lengthToDegrees`\");\n}\nexports.distanceToDegrees = distanceToDegrees;\nfunction distanceToRadians() {\n throw new Error(\"method has been renamed to `lengthToRadians`\");\n}\nexports.distanceToRadians = distanceToRadians;\nfunction radiansToDistance() {\n throw new Error(\"method has been renamed to `radiansToLength`\");\n}\nexports.radiansToDistance = radiansToDistance;\nfunction bearingToAngle() {\n throw new Error(\"method has been renamed to `bearingToAzimuth`\");\n}\nexports.bearingToAngle = bearingToAngle;\nfunction convertDistance() {\n throw new Error(\"method has been renamed to `convertLength`\");\n}\nexports.convertDistance = convertDistance;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords,\n geometryMaybeCollection,\n wrapShrink = 0,\n coordIndex = 0,\n isGeometryCollection,\n type = geojson.type,\n isFeatureCollection = type === 'FeatureCollection',\n isFeature = type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry :\n (isFeature ? geojson.geometry : geojson));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n\n wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0;\n\n switch (geomType) {\n case null:\n break;\n case 'Point':\n if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case 'LineString':\n case 'MultiPoint':\n for (j = 0; j < coords.length; j++) {\n if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n if (geomType === 'MultiPoint') multiFeatureIndex++;\n }\n if (geomType === 'LineString') multiFeatureIndex++;\n break;\n case 'Polygon':\n case 'MultiLineString':\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n if (geomType === 'MultiLineString') multiFeatureIndex++;\n if (geomType === 'Polygon') geometryIndex++;\n }\n if (geomType === 'Polygon') multiFeatureIndex++;\n break;\n case 'MultiPolygon':\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case 'GeometryCollection':\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n break;\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n }, excludeWrapCoord);\n return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case 'FeatureCollection':\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case 'Feature':\n callback(geojson.properties, 0);\n break;\n }\n}\n\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function (currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n else previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n if (geojson.type === 'Feature') {\n callback(geojson, 0);\n } else if (geojson.type === 'FeatureCollection') {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function (currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function (coord) {\n coords.push(coord);\n });\n return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG,\n geometryMaybeCollection,\n isGeometryCollection,\n featureProperties,\n featureBBox,\n featureId,\n featureIndex = 0,\n isFeatureCollection = geojson.type === 'FeatureCollection',\n isFeature = geojson.type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (i = 0; i < stop; i++) {\n\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry :\n (isFeature ? geojson.geometry : geojson));\n featureProperties = (isFeatureCollection ? geojson.features[i].properties :\n (isFeature ? geojson.properties : {}));\n featureBBox = (isFeatureCollection ? geojson.features[i].bbox :\n (isFeature ? geojson.bbox : undefined));\n featureId = (isFeatureCollection ? geojson.features[i].id :\n (isFeature ? geojson.id : undefined));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n\n // Handle null Geometry\n if (geometry === null) {\n if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n continue;\n }\n switch (geometry.type) {\n case 'Point':\n case 'LineString':\n case 'MultiPoint':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon': {\n if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n break;\n }\n case 'GeometryCollection': {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n }\n break;\n }\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n });\n return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = (geometry === null) ? null : geometry.type;\n switch (type) {\n case null:\n case 'Point':\n case 'LineString':\n case 'Polygon':\n if (callback(helpers.feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false;\n return;\n }\n\n var geomType;\n\n // Callback for multi-geometry\n switch (type) {\n case 'MultiPoint':\n geomType = 'Point';\n break;\n case 'MultiLineString':\n geomType = 'LineString';\n break;\n case 'MultiPolygon':\n geomType = 'Polygon';\n break;\n }\n\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n }\n });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n\n // Exclude null Geometries\n if (!feature.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature.geometry.type;\n if (type === 'Point' || type === 'MultiPoint') return;\n\n // Generate 2-vertex line segments\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (coordEach(feature, function (currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (previousCoords === undefined || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = helpers.lineString([previousCoords, currentCoord], feature.properties);\n if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }) === false) return false;\n });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentInex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === undefined) previousValue = currentSegment;\n else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n started = true;\n });\n return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n // validation\n if (!geojson) throw new Error('geojson is required');\n\n flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n if (feature.geometry === null) return;\n var type = feature.geometry.type;\n var coords = feature.geometry.coordinates;\n switch (type) {\n case 'LineString':\n if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n break;\n case 'Polygon':\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(helpers.lineString(coords[geometryIndex], feature.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n }\n break;\n }\n });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n });\n return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature>\n */\nfunction findSegment(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!helpers.isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return helpers.lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return helpers.lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return helpers.lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return helpers.lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature>\n */\nfunction findPoint(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!helpers.isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n return helpers.point(coords, properties, options);\n case 'MultiPoint':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n return helpers.point(coords[multiFeatureIndex], properties, options);\n case 'LineString':\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return helpers.point(coords[coordIndex], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return helpers.point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.coordAll = coordAll;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.findSegment = findSegment;\nexports.findPoint = findPoint;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar meta_1 = require(\"@turf/meta\");\n/**\n * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.\n *\n * @name bbox\n * @param {GeoJSON} geojson any GeoJSON object\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);\n * var bbox = turf.bbox(line);\n * var bboxPolygon = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [line, bboxPolygon]\n */\nfunction bbox(geojson) {\n var result = [Infinity, Infinity, -Infinity, -Infinity];\n meta_1.coordEach(geojson, function (coord) {\n if (result[0] > coord[0]) {\n result[0] = coord[0];\n }\n if (result[1] > coord[1]) {\n result[1] = coord[1];\n }\n if (result[2] < coord[0]) {\n result[2] = coord[0];\n }\n if (result[3] < coord[1]) {\n result[3] = coord[1];\n }\n });\n return result;\n}\nexports.default = bbox;\n","import AVAILABLE_INCENTIVES from './incentives';\n\nconst currentYear = new Date().getFullYear();\nexport const RECOMMENDATION_FILTERS = [\n {\n icon: 'sun',\n label: 'Solar Recommendation',\n name: 'recommendations.pv',\n min: 0,\n max: 3\n },\n {\n icon: 'bulb',\n label: 'CHP Recommendation',\n name: 'recommendations.chp',\n min: 0,\n max: 3\n },\n {\n icon: 'battery',\n label: 'Battery Storage Recommendation',\n name: 'recommendations.storage',\n min: 0,\n max: 3\n },\n {\n icon: 'hydrogen',\n label: 'Fuel Cell Recommendation',\n name: 'recommendations.fuel_cell',\n min: 0,\n max: 3\n }\n];\n\nexport const POPULAR_RANGE_FILTERS = {\n popular: [\n {\n name: 'estimates_int.solar',\n label: 'Solar Estimates',\n start: 0,\n end: 100,\n states: ['ny', 'ma', 'tx', 'nj', 'ct', 'palau', 'japan', '*'],\n category: null\n },\n {\n name: 'estimates_int.chp',\n label: 'CHP Estimates',\n start: 0,\n end: 100,\n states: ['ny', 'ma', 'tx', 'nj', 'ct', 'palau', 'japan', '*'],\n category: null\n },\n {\n name: 'estimates_int.storage',\n label: 'Battery Storage Estimates',\n start: 0,\n end: 100,\n states: ['ny', 'ma', 'tx', 'nj', 'ct', 'palau', 'japan', '*'],\n category: null\n },\n {\n name: 'estimates_int.fuel_cell',\n label: 'Fuel Cell Estimates',\n start: 0,\n end: 100,\n states: ['ny', 'ma', 'tx', 'nj', 'ct', 'palau', 'japan', '*'],\n category: null\n },\n {\n name: 'der_score',\n label: 'DER Adoption Potential',\n start: 0,\n end: 100,\n states: ['ny', 'ma', 'tx', 'nj', 'ct', 'palau', 'japan', '*'],\n category: null\n }\n ],\n adv_popular: []\n};\n\nexport const RANGE_FILTERS = {\n 'Financial Estimates': [\n {\n name: 'financial_total_gross_project_cost',\n label: 'Total Gross Project Cost',\n start: 0,\n end: 100000000,\n step: 1000,\n states: ['ny'],\n category: 'financial'\n },\n {\n name: 'financial_irr',\n label: 'IRR',\n start: 0,\n end: 1,\n step: 0.01,\n states: ['ny'],\n category: 'financial'\n },\n {\n name: 'financial_payback_period',\n label: 'Payback Period',\n start: 0,\n end: 10,\n step: 0.1,\n states: ['ny'],\n category: 'financial'\n },\n {\n name: 'financial_net_present_value',\n label: 'Net Present Value',\n start: 0,\n end: 10000000,\n step: 1000,\n states: ['ny'],\n category: 'financial'\n },\n {\n name: 'financial_ppa_1st_year_savings_to_customer',\n label: '1st Year Savings',\n start: 0,\n end: 1000000,\n step: 1000,\n states: ['ny'],\n category: 'financial'\n },\n {\n name: 'financial_ppa_kwh_rate',\n label: 'PPA kWh Rate',\n start: 0,\n end: 0.5,\n step: 0.01,\n states: ['ny'],\n category: 'financial'\n }\n ],\n Energy: [\n {\n name: 'ghg_emission_total',\n label: 'GHG Emissions',\n start: 0,\n end: 1000000,\n states: ['ny'],\n category: 'energy'\n },\n\n {\n name: 'energy_star_score',\n label: 'Energy Star Rating',\n start: 0,\n end: 100,\n states: ['ny'],\n category: 'energy'\n },\n\n {\n name: 'eui',\n label: 'Energy Use Intensity',\n start: 0,\n end: 1000000,\n states: ['ny'],\n category: 'energy'\n }\n ],\n 'Building profile': [\n {\n name: 'building_far',\n label: 'Floor Area Ratio',\n start: 0,\n end: 200,\n states: ['ny']\n },\n\n {\n name: 'last_renovation',\n label: 'Last Renovation',\n start: 1700,\n end: currentYear,\n states: ['ny']\n },\n {\n name: 'residential_units',\n label: 'Residential Units',\n start: 0,\n end: 300,\n states: ['ny']\n }\n ]\n};\n\nexport const BOROUGH_TYPES = [\n {\n value: 1,\n label: 'Manhattan',\n acronym: 'mn'\n },\n {\n value: 3,\n label: 'Brooklyn',\n acronym: 'bk'\n },\n {\n value: 4,\n label: 'Queens',\n acronym: 'qu'\n },\n {\n value: 2,\n label: 'The Bronx',\n acronym: 'bx'\n },\n {\n value: 5,\n label: 'Staten Island',\n acronym: 'si'\n }\n];\n\nexport const STATES = [\n {\n value: 'New York',\n label: 'New York',\n acronym: 'ny'\n },\n {\n value: 'Connecticut',\n label: 'Connecticut',\n acronym: 'ct'\n },\n {\n value: 'Massachusetts',\n label: 'Massachusetts',\n acronym: 'ma'\n },\n {\n value: 'New Jersey',\n label: 'New Jersey',\n acronym: 'nj'\n },\n {\n value: 'Texas',\n label: 'Texas',\n acronym: 'tx'\n },\n {\n value: 'Palau',\n label: 'Palau',\n acronym: 'palau'\n },\n {\n value: 'Japan',\n label: 'Japan',\n acronym: 'japan'\n }\n];\n\nexport const PROPERTY_TYPES = [\n {\n value: 'A',\n label: 'One Family Dwelling'\n },\n {\n value: 'B',\n label: 'Two Family Dwelling'\n },\n {\n value: 'C',\n label: 'Walk Up Apartment'\n },\n {\n value: 'D',\n label: 'Elevator Apartment'\n },\n {\n value: 'E',\n label: 'Warehouse'\n },\n {\n value: 'F',\n label: 'Factory/Industrial Building'\n },\n {\n value: 'G',\n label: 'Garage or Gasoline Station'\n },\n {\n value: 'H',\n label: 'Hotel'\n },\n {\n value: 'I',\n label: 'Healthcare'\n },\n {\n value: 'J',\n label: 'Theatre'\n },\n {\n value: 'K',\n label: 'Retail'\n },\n {\n value: 'L',\n label: 'Loft Building'\n },\n {\n value: 'M',\n label: 'Religious Building'\n },\n {\n value: 'N',\n label: 'Asylum/Home'\n },\n {\n value: 'O',\n label: 'Office Building'\n },\n {\n value: 'P',\n label: 'Public Assembly Place'\n },\n {\n value: 'Q',\n label: 'Outdoor Recreation Facility'\n },\n {\n value: 'R',\n label: 'Condomonium'\n },\n {\n value: 'S',\n label: 'Mix-Use Residence'\n },\n {\n value: 'T',\n label: 'Transportation Facility'\n },\n {\n value: 'U',\n label: 'Utility'\n },\n {\n value: 'V',\n label: 'Vacant Land'\n },\n {\n value: 'W',\n label: 'Education'\n },\n {\n value: 'Y',\n label: 'Government Building'\n },\n {\n value: 'Z',\n label: 'Miscellaneous'\n }\n].sort((a, b) =>\n a.label.toLowerCase().localeCompare(b.label, 'en', { sensitivity: 'base' })\n);\nexport const INCENTIVES = AVAILABLE_INCENTIVES;\n\nexport const BUILDING_CLASSES = [\n {\n label: 'Power Station',\n value: 'power_station'\n },\n {\n label: 'Miscellaneous',\n value: 'miscellaneous'\n },\n {\n label: 'Arts Center',\n value: 'art_center'\n },\n {\n label: 'Bank',\n value: 'bank'\n },\n {\n label: 'Restaurant',\n value: 'bar'\n },\n {\n label: 'Bus Station',\n value: 'bus_station'\n },\n {\n label: 'Cafe',\n value: 'cafe'\n },\n {\n label: 'Car Service',\n value: 'car_parts'\n },\n {\n label: 'Car Rental',\n value: 'car_rental'\n },\n {\n label: 'Car Wash',\n value: 'car_wash'\n },\n {\n label: 'Casino',\n value: 'casino'\n },\n {\n label: 'Childcare Facility',\n value: 'childcare'\n },\n {\n label: 'Religious Building',\n value: 'church'\n },\n {\n label: 'Cinema',\n value: 'cinema'\n },\n {\n label: 'Clinic',\n value: 'clinic'\n },\n {\n label: 'Higher Education',\n value: 'college'\n },\n {\n label: 'Community Center',\n value: 'community_center'\n },\n {\n label: 'Courthouse',\n value: 'courthouse'\n },\n {\n label: 'Healthcare Facility',\n value: 'doctors'\n },\n {\n label: 'Embassy',\n value: 'embassy'\n },\n {\n label: 'Fast Food',\n value: 'fast_food'\n },\n {\n label: 'Ferry Terminal',\n value: 'ferry_terminal'\n },\n {\n label: 'Fire Station',\n value: 'fire_station'\n },\n {\n label: 'Fuel Station',\n value: 'fuel'\n },\n {\n label: 'Healthcare',\n value: 'healthcare'\n },\n {\n label: 'Hospital',\n value: 'hospital'\n },\n {\n label: 'Library',\n value: 'library'\n },\n {\n label: 'Marketplace',\n value: 'marketplace'\n },\n {\n label: 'Nursing Home',\n value: 'nursing_home'\n },\n {\n label: 'Parking Facility',\n value: 'parking'\n },\n {\n label: 'Pharmacy',\n value: 'pharmacy'\n },\n {\n label: 'Police Station',\n value: 'police'\n },\n {\n label: 'Post Office',\n value: 'post_office'\n },\n {\n label: 'Prison',\n value: 'prison'\n },\n {\n label: 'Bar',\n value: 'pub'\n },\n {\n label: 'Public Building',\n value: 'public_building'\n },\n {\n label: 'Ranger Station',\n value: 'ranger_station'\n },\n {\n label: 'Recycling Facility',\n value: 'recycling'\n },\n {\n label: 'School',\n value: 'school'\n },\n {\n label: 'Shelter',\n value: 'shelter'\n },\n {\n label: 'Social Facility',\n value: 'social_centre'\n },\n {\n label: 'Studio',\n value: 'studio'\n },\n {\n label: 'Swimming Pool',\n value: 'swimming_pool'\n },\n {\n label: 'Theater',\n value: 'theatre'\n },\n {\n label: 'Restroom Facility',\n value: 'toilets'\n },\n {\n label: 'Town Hall',\n value: 'town_hall'\n },\n {\n label: 'Veterinary Facility',\n value: 'veterinary'\n }\n];\n\nexport const PROPERTY_SUMMARY_FILTERS = [\n {\n name: 'floor_area_total',\n label: 'Total Square Feet',\n start: 0,\n end: 5000000,\n states: ['ny'],\n category: 'building_area'\n },\n {\n name: 'number_of_buildings',\n label: 'Number Of Buildings',\n start: 0,\n end: 10,\n states: ['ny']\n },\n {\n name: 'floors',\n label: 'Number of Floors',\n start: 0,\n end: 100,\n states: ['ny', 'japan'],\n category: null\n },\n {\n name: 'year_built',\n label: 'Year Built',\n start: 1900,\n end: currentYear,\n states: ['ny'],\n category: null\n }\n];\n","const available = [\n 88004,\n 88001,\n 88002,\n 88003,\n 9933,\n 99141,\n 99144,\n 99145,\n 99146,\n 99147,\n 99148,\n 99149,\n 99177,\n 99229,\n 99281,\n 99298,\n 99332,\n 99479,\n 99543,\n 99580,\n 99849,\n 99850,\n 99875,\n 99940,\n 99986,\n 991076,\n 991146,\n 991284,\n 991285,\n 991334,\n 991380,\n 991381,\n 991402,\n 991675,\n 991685,\n 992529,\n 992535,\n 992536,\n 992598,\n 993017,\n 993338,\n 993628,\n 993701,\n 993783,\n 993942,\n 993991,\n 994067,\n 994283,\n 994500,\n 994624,\n 995357,\n 995678,\n 995679,\n 995782,\n 995850,\n 9922020,\n 9922036,\n 9922037,\n 994037,\n 994055,\n 99345,\n 993657,\n 993677,\n 993658,\n 992107,\n 995039,\n 992851,\n 993435,\n 994791,\n 995367,\n 995380,\n 995038,\n 991339,\n 991353,\n 991383,\n 991389,\n 991400,\n 993378,\n 9915,\n 9981,\n 9982,\n 99173,\n 99182,\n 99288,\n 99702,\n 99805,\n 99981,\n 991134,\n 992766,\n 992779,\n 993535,\n 993742,\n 993743,\n 994622,\n 994880,\n 995669,\n 9921955,\n 9921956,\n 13,\n 12,\n 9980,\n 99153,\n 99174,\n 99192,\n 99217,\n 99453,\n 99546,\n 99550,\n 99616,\n 99699,\n 99776,\n 991153,\n 991155,\n 991159,\n 991161,\n 991162,\n 991234,\n 991251,\n 991252,\n 991596,\n 991672,\n 992397,\n 992724,\n 992891,\n 993177,\n 993565,\n 993662,\n 993765,\n 993925,\n 994419,\n 994621,\n 994857,\n 994874,\n 995122,\n 995249,\n 995539,\n 995660,\n 995676,\n 995755,\n 995860,\n 995861,\n 995883,\n 995947,\n 9921863,\n 9921946,\n 9922022,\n 99701,\n 9,\n 27,\n 994563,\n 995540,\n 995549,\n 24,\n 994371,\n 9976,\n 992004,\n 992806,\n 993197,\n 993237,\n 994472,\n 9921865,\n 9921866,\n 991396,\n 991397,\n 993324,\n 994298,\n 994557,\n 994962,\n 992762,\n 99327,\n 99511,\n 99513,\n 99517,\n 99897,\n 991088,\n 992011,\n 992012,\n 992013,\n 992014,\n 992015,\n 992016,\n 992020,\n 992749,\n 992925,\n 993972,\n 995139,\n 995154,\n 995447,\n 9915761,\n 9915763,\n 993217,\n 15,\n 992464,\n 994864,\n 993377,\n 993379,\n 994263,\n 992088,\n 993432,\n 992884,\n 994792,\n 994793,\n 99665,\n 99799,\n 991154,\n 991157,\n 992324,\n 992605,\n 992641,\n 992725,\n 992736,\n 992738,\n 992761,\n 992845,\n 993425,\n 993731,\n 994696,\n 995375,\n 99219,\n 99564,\n 99595,\n 99797,\n 991053,\n 991054,\n 991110,\n 991148,\n 991149,\n 991152,\n 991249,\n 991326,\n 991477,\n 992722,\n 993014,\n 993100,\n 993461,\n 993678,\n 993736,\n 993756,\n 993929,\n 994026,\n 994034,\n 994335,\n 994360,\n 994805,\n 994848,\n 995109,\n 995687,\n 995715,\n 995716,\n 995728,\n 995729,\n 995873,\n 9921919,\n 9921920,\n 9922023,\n 9938,\n 99168,\n 99589,\n 991150,\n 991151,\n 992359,\n 993266,\n 993330,\n 993671,\n 993883,\n 993966,\n 994933,\n 995165,\n 995205,\n 993907,\n 992910,\n 994588,\n 994982,\n 994983,\n 994378,\n 991829,\n 991831,\n 993474,\n 994282,\n 995919,\n 991337,\n 991338,\n 992886,\n 993400,\n 994176,\n 993026,\n 18,\n 99129,\n 99195,\n 99196,\n 99239,\n 99240,\n 99277,\n 99336,\n 99338,\n 99721,\n 991046,\n 991059,\n 991078,\n 991247,\n 991646,\n 991691,\n 991693,\n 992613,\n 992624,\n 992654,\n 993141,\n 993373,\n 993705,\n 993706,\n 993802,\n 993930,\n 994506,\n 994552,\n 994951,\n 994958,\n 995321,\n 995423,\n 995425,\n 995730,\n 995739,\n 995767,\n 995787,\n 9921981,\n 9921983,\n 9921985,\n 9922025,\n 991236,\n 991407,\n 993081,\n 993730,\n 993941,\n 994338,\n 994342,\n 994355,\n 994356,\n 994517,\n 994712,\n 995120,\n 995242,\n 995405,\n 995735,\n 995738,\n 14,\n 991375,\n 991379,\n 994259,\n 994560,\n 995567,\n 995717,\n 11,\n 991811,\n 995189,\n 10,\n 991342,\n 992649,\n 992650,\n 993833,\n 993834,\n 994363,\n 995741,\n 995742,\n 995743,\n 995744,\n 995745,\n 995746,\n 995748,\n 991485,\n 994807,\n 991313,\n 991315,\n 991316,\n 991320,\n 993889,\n 994358,\n 995162,\n 995358,\n 995693,\n 995737,\n 993285,\n 994470,\n 995858,\n 994379,\n 993463,\n 994244,\n 994306,\n 994574,\n 994955,\n 7,\n 8,\n 991807,\n 991808,\n 993728,\n 995664,\n 992885,\n 992887,\n 994720,\n 995593,\n 26,\n 991321,\n 991322,\n 991323,\n 991324,\n 991330,\n 991399,\n 993445,\n 993887,\n 993888,\n 994357,\n 995164,\n 995356,\n 995692,\n 995289,\n 994605,\n 993456,\n 994789,\n 9961,\n 992036,\n 992473,\n 992794,\n 992795,\n 992797,\n 994147,\n 994322,\n 994788,\n 993905,\n 994644,\n 995011,\n 994770,\n 994771,\n 994917,\n 993831,\n 995170,\n 994748,\n 994750,\n 994751,\n 995547,\n 995893,\n 995944,\n 28,\n 993464,\n 994245,\n 994304,\n 994575,\n 994956,\n 994594,\n 993660,\n 994480,\n 995171,\n 992740,\n 991543,\n 991544,\n 993488,\n 992021,\n 992028,\n 993661,\n 993827,\n 993828,\n 993829,\n 9919314,\n 992652,\n 992653,\n 993346,\n 993835,\n 9921750,\n 991592,\n 991593,\n 991594,\n 993652,\n 995012,\n 992090,\n 993313,\n 993322,\n 992084,\n 993670,\n 993825,\n 994289,\n 995126,\n 992026,\n 992631,\n 992946,\n 992947,\n 995411,\n 992029,\n 993838,\n 993840,\n 994196,\n 994593,\n 995545,\n 993669,\n 993830,\n 993832,\n 9919316,\n 995594,\n 995595,\n 993727,\n 993735,\n 994228,\n 995590,\n 995592,\n 992089,\n 994948,\n 992039,\n 993430,\n 993480,\n 993004,\n 995221,\n 9914057,\n 9914059,\n 9914074,\n 9914081,\n 9914091,\n 9916433,\n 9917294,\n 9917300,\n 9917439,\n 9917440,\n 9917462,\n 9917599,\n 9917638,\n 9918549,\n 9918820,\n 9919752,\n 9920157,\n 9920322,\n 9921650,\n 9921651,\n 9921652,\n 9921653,\n 9921684,\n 9921685,\n 9921686,\n 9921687,\n 9921715,\n 9921716,\n 9921717,\n 9921737,\n 9921947,\n 9921952,\n 992647,\n 992648,\n 993082,\n 993168,\n 994601,\n 995176,\n 995177,\n 995490,\n 9915778,\n 9915786,\n 9915792,\n 9915798,\n 9917413,\n 9917415,\n 9917418,\n 9917433,\n 9917434,\n 9917437,\n 9917705,\n 9918961,\n 9918980,\n 9918981,\n 9919309,\n 9919311,\n 9919669,\n 9921101,\n 9921567,\n 9921624,\n 9921628,\n 9921636,\n 9921793,\n 9921794,\n 9921800,\n 9921802,\n 9921803,\n 9921806,\n 9921808,\n 9921810,\n 9921817,\n 993630,\n 994796,\n 993037,\n 994703,\n 995117,\n 995118,\n 992729,\n 995254,\n 9915772,\n 9917695,\n 992091,\n 991772,\n 991773,\n 995352,\n 992087,\n 993111,\n 993115,\n 994572,\n 9913947,\n 9913952,\n 9913955,\n 9913956,\n 9913957,\n 9914062,\n 9914078,\n 9916193,\n 9916282,\n 9916286,\n 9916287,\n 9916289,\n 9917454,\n 9917458,\n 9917470,\n 9917478,\n 9917480,\n 9917481,\n 9917573,\n 9917574,\n 9917578,\n 9917727,\n 9918330,\n 9918953,\n 9918962,\n 9919774,\n 9919888,\n 9919911,\n 9919913,\n 9919914,\n 9920099,\n 9920123,\n 9920258,\n 9920625,\n 9921157,\n 9921171,\n 9921186,\n 9921187,\n 9921571,\n 9921671,\n 9921674,\n 9917847,\n 9921541,\n 994587,\n 9914025,\n 9914029,\n 9916416,\n 9916482,\n 9916483,\n 9917594,\n 9919788,\n 9919892,\n 9919893,\n 9920368,\n 9920375,\n 9921635,\n 9921638,\n 9921921,\n 995008,\n 9913886,\n 9916288,\n 9916290,\n 9916390,\n 9916396,\n 9916397,\n 9916501,\n 9916968,\n 9917229,\n 9917234,\n 9917237,\n 9917238,\n 9917239,\n 9918738,\n 9920619\n];\n\nexport default [\n {\n value: 88004,\n label: 'BQDM',\n states: ['ny']\n },\n {\n value: 88001,\n label: 'Non-Wires Alternative (Williamsburg)',\n states: ['ny']\n },\n {\n value: 88002,\n label: 'Non-Wires Alternative (Prospect Park)',\n states: ['ny']\n },\n {\n value: 88003,\n label: 'Non-Wires Alternative (Borough Hall)',\n states: ['ny']\n },\n {\n value: 2,\n label: 'Multi-Family Building Incentive',\n states: ['ny']\n },\n {\n value: 3,\n label: 'Demand Response Program',\n states: ['ny']\n },\n {\n value: 4,\n label: 'Solar + Storage',\n states: ['ny']\n },\n {\n value: 5,\n label: 'Demand Management 2.0',\n states: ['ny']\n },\n {\n value: 6,\n label: 'CHP BQDM Incentive',\n states: ['ny']\n },\n {\n value: 7,\n label: 'Commercial Implementation Assistance Program',\n states: ['ny']\n },\n {\n value: 8,\n label: 'Commercial New Construction Program',\n states: ['ny']\n },\n {\n value: 9,\n label: 'Residential New Construction Program',\n states: ['ny']\n },\n {\n value: 10,\n label: 'PON 1746 FlexTech Program',\n states: ['ny']\n },\n {\n value: 11,\n label: 'NY Prize Community Grid Competition (Stage 2)',\n states: ['ny']\n },\n {\n value: 12,\n label: 'Shared Solar',\n states: ['ny']\n },\n {\n value: 13,\n label: 'Residential/Small Commercial Solar',\n states: ['ny']\n },\n {\n value: 14,\n label: 'Commercial/Industrial Solar',\n states: ['ny']\n },\n {\n value: 15,\n label: 'Affordable Solar',\n states: ['ny']\n },\n {\n value: 16,\n label: 'PON 2149 Solar Thermal Incentive Program',\n states: ['ny']\n },\n {\n value: 17,\n label: 'PON 2568 Program',\n states: ['ny']\n },\n {\n value: 18,\n label: 'PON 3309 RTEM',\n states: ['ny']\n },\n {\n value: 19,\n label: 'CST Fuel Cell Program',\n states: ['ny']\n },\n {\n value: 20,\n label: 'Small Wind Turbine Program',\n states: ['ny']\n },\n {\n value: 21,\n label: 'Lighting Upgrade',\n states: ['ny']\n },\n {\n value: 22,\n label: 'Insulation Improvement',\n states: ['ny']\n },\n {\n value: 23,\n label: 'EnergyWise',\n states: ['ny']\n },\n {\n value: 24,\n label: 'Property Tax Exemption',\n states: ['ny']\n },\n {\n value: 25,\n label: 'Solar Energy System Equipment Credit',\n states: ['ny']\n },\n {\n value: 26,\n label: 'Energy Efficiency Tax Incentives',\n states: ['ny']\n },\n {\n value: 27,\n label: 'Energy Efficient Home Credit',\n states: ['ny']\n },\n {\n value: 28,\n label: 'Energy Project Tax Credit',\n states: ['ny']\n },\n {\n value: 1,\n label: 'LED Lighting Free Install',\n states: ['ny']\n },\n\n {\n value: 995162,\n label:\n 'The United Illuminating Company - ZREC and LREC Long Term Contracts',\n states: ['ct']\n },\n {\n value: 995120,\n label: 'Residential Solar Investment Program',\n states: ['ct']\n },\n {\n value: 995738,\n label: '(Electric and Gas) Residential Rebate Program',\n states: ['ct']\n },\n {\n value: 994958,\n label:\n 'Local Option - Building Permit Fee Waivers for Renewable Energy Projects',\n states: ['ct']\n },\n {\n value: 994951,\n label: 'Local Option - Residential Sustainable Energy Program',\n states: ['ct']\n },\n {\n value: 994884,\n label: 'CCEF - Alpha Program',\n states: ['ct']\n },\n {\n value: 994712,\n label: 'Small Business Energy Advantage Loan Program',\n states: ['ct']\n },\n {\n value: 994576,\n label:\n 'Energy Efficiency Fund (Gas) - Home Energy Solutions and Performance Programs',\n states: ['ct']\n },\n {\n value: 994572,\n label:\n 'Norwich Public Utilities (Gas) - Residential Energy Efficiency Rebate Program',\n states: ['ct']\n },\n {\n value: 994566,\n label: 'Litchfield Hills Region - Business Energy Efficiency Program',\n states: ['ct']\n },\n {\n value: 99277,\n label: 'Net Metering',\n states: ['ct']\n },\n {\n value: 991078,\n label: 'Green Power Purchase Plan',\n states: ['ct']\n },\n {\n value: 991087,\n label: 'CEFIA - Residential Solar PV Rebate Program',\n states: ['ct']\n },\n {\n value: 9921985,\n label: 'Energize Connecticut - Small Business Energy Advantage',\n states: ['ct']\n },\n {\n value: 9913886,\n label: 'United Illuminating Company - Energy Opportunities Program',\n states: ['ct']\n },\n {\n value: 995787,\n label: 'Renewable Energy Investment Fund',\n states: ['ct']\n },\n {\n value: 995767,\n label: 'Xcel Energy - Express Energy Efficiency',\n states: ['ct']\n },\n {\n value: 995739,\n label: '(CHIF) Home Energy Solutions Loan Program',\n states: ['ct']\n },\n {\n value: 995737,\n label: 'Commercial and Industrial Kitchen Equipment Rebate Program',\n states: ['ct']\n },\n {\n value: 991236,\n label: 'Operational Demonstration Program',\n states: ['ct']\n },\n {\n value: 991247,\n label: 'Sales and Use Tax Exemption for Energy-Efficient Products',\n states: ['ct']\n },\n {\n value: 995735,\n label: 'Low Interest Energy Efficiency Loan Program (Electric and Gas)',\n states: ['ct']\n },\n {\n value: 991263,\n label: 'On-Site Renewable DG Program',\n states: ['ct']\n },\n {\n value: 9918738,\n label:\n 'United Illuminating Company - Process Reengineering for Increased Manufacturing Efficiency (PRIME)',\n states: ['ct']\n },\n {\n value: 99297,\n label: 'CCEF - Commercial, Industrial, Institutional PV Grant Program',\n states: ['ct']\n },\n {\n value: 9922025,\n label: 'Northeast Energy Efficiency Partnerships - EM&V Forum',\n states: ['ct']\n },\n {\n value: 991313,\n label:\n 'The United Illuminating Company - Small Business Energy Advantage Program',\n states: ['ct']\n },\n {\n value: 991314,\n label: 'The United Illuminating Company - Energy Star Incentives Program',\n states: ['ct']\n },\n {\n value: 9921983,\n label: 'Energize Connecticut - Energy Conscious Blueprint',\n states: ['ct']\n },\n {\n value: 991315,\n label:\n 'The United Illuminating Company - Energy Conscious Blueprint Grant Program',\n states: ['ct']\n },\n {\n value: 991316,\n label:\n 'The United Illuminating Company - Energy Conscious Blueprint Rebate Program',\n states: ['ct']\n },\n {\n value: 991318,\n label:\n 'The United Illuminating Company - MotorUp Commercial Rebate Program',\n states: ['ct']\n },\n {\n value: 991319,\n label:\n 'The United Illuminating Company - Cool Choice Commercial Energy Efficiency Rebate Program',\n states: ['ct']\n },\n {\n value: 991320,\n label: 'The United Illuminating Company - Energy Opportunities Program',\n states: ['ct']\n },\n {\n value: 991321,\n label:\n 'Connecticut Light & Power - Energy Opportunities Efficiency Program',\n states: ['ct']\n },\n {\n value: 991322,\n label: 'Connecticut Light & Power - Commercial Energy Efficiency Rebates',\n states: ['ct']\n },\n {\n value: 991323,\n label:\n 'Connecticut Light & Power - Small Business Energy Advantage Program',\n states: ['ct']\n },\n {\n value: 991324,\n label:\n 'Connecticut Light & Power - Small Business Energy Advantage Program',\n states: ['ct']\n },\n {\n value: 995730,\n label: 'Multifamily Energy Conservation Loan Program',\n states: ['ct']\n },\n {\n value: 991327,\n label: 'Connecticut Light & Power - Express Rebate Programs',\n states: ['ct']\n },\n {\n value: 991329,\n label: 'The United Illuminating Company - Express Lighting Rebate Program',\n states: ['ct']\n },\n {\n value: 991330,\n label:\n 'Connecticut Light & Power - Small Industrial and Commercial Energy Efficiency Loan Program',\n states: ['ct']\n },\n {\n value: 9921981,\n label: 'Eversource - Energy Savings Plan',\n states: ['ct']\n },\n {\n value: 99322,\n label: 'Solar and Wind Contractor Licensing',\n states: ['ct']\n },\n {\n value: 99336,\n label: 'CCEF - Renewable Energy Projects in Pre-Development Program',\n states: ['ct']\n },\n {\n value: 9917239,\n label: 'Southern Connecticut Gas - Operation & Maintenance Program',\n states: ['ct']\n },\n {\n value: 99338,\n label: 'CCEF - Project 150 Initiative',\n states: ['ct']\n },\n {\n value: 99157,\n label: 'Connecticut Clean Energy Fund',\n states: ['ct']\n },\n {\n value: 9917238,\n label: 'Southern Connecticut Gas - Energy Opportunities Program',\n states: ['ct']\n },\n {\n value: 9917237,\n label: 'Southern Connecticut Gas - Energy Conscious Blueprint Program',\n states: ['ct']\n },\n {\n value: 9917234,\n label:\n 'Santa Buckley Energy - Heating, Ventilation, and Air Conditioning Equipment and Service',\n states: ['ct']\n },\n {\n value: 9917229,\n label: 'EnerNOC - Energy Procurement',\n states: ['ct']\n },\n {\n value: 991399,\n label: 'Connecticut Light & Power - Operation and Maintenance Program',\n states: ['ct']\n },\n {\n value: 99128,\n label: 'Alternative Fueled Vehicle Incremental Cost Credit',\n states: ['ct']\n },\n {\n value: 991407,\n label: 'Smart-E loans',\n states: ['ct']\n },\n {\n value: 995693,\n label:\n 'The United Illuminating Company - ZREC and LREC Long Term Contracts',\n states: ['ct']\n },\n {\n value: 995692,\n label: 'Connecticut Light & Power - ZREC and LREC Long Term Contracts',\n states: ['ct']\n },\n {\n value: 995684,\n label: 'Connecticut Light & Power - Small ZREC Tariff',\n states: ['ct']\n },\n {\n value: 995683,\n label: 'The United Illuminating Company - Small ZREC Tariff',\n states: ['ct']\n },\n {\n value: 995639,\n label: 'Copy of CT Clean Energy Communities',\n states: ['ct']\n },\n {\n value: 995638,\n label: 'Combined Heat and Power Loan Program',\n states: ['ct']\n },\n {\n value: 995637,\n label: 'Performance based incentive for Combined Heat and Power Program',\n states: ['ct']\n },\n {\n value: 991563,\n label: 'Energy Efficiency Standards for Appliances',\n states: ['ct']\n },\n {\n value: 9916968,\n label: 'Norwich Public Utilities - Commercial Energy Audit',\n states: ['ct']\n },\n {\n value: 995425,\n label: 'Clean Energy On-Bill Financing',\n states: ['ct']\n },\n {\n value: 9920619,\n label: 'Santa Buckley Energy - Lighting Retrofits & Upgrades',\n states: ['ct']\n },\n {\n value: 991619,\n label: 'CT Clean Energy Communities',\n states: ['ct']\n },\n {\n value: 991646,\n label: 'Community Innovations Grant Program',\n states: ['ct']\n },\n {\n value: 9916501,\n label:\n 'Northeast Energy Efficiency Council - Building Operator Certification (BOC)',\n states: ['ct']\n },\n {\n value: 991691,\n label: 'DPUC - Capital Grants for Customer-Side Distributed Resources',\n states: ['ct']\n },\n {\n value: 991693,\n label: 'Low-Interest Loans for Customer-Side Distributed Resources',\n states: ['ct']\n },\n {\n value: 991772,\n label: 'Groton Utilities - Residential Energy Efficiency Rebate Program',\n states: ['ct']\n },\n {\n value: 991773,\n label:\n 'Groton Utilities - Commercial & Industrial Energy Efficiency Rebate Programs',\n states: ['ct']\n },\n {\n value: 991311,\n label:\n 'Connecticut Natural Gas - Energy Conservation Program for State Facilities',\n states: ['ct']\n },\n {\n value: 99721,\n label: 'Fuel Cell Initiative',\n states: ['ct']\n },\n {\n value: 995423,\n label: 'Local Option - Property Tax Exemption for Renewable Energy Systems',\n states: ['ct']\n },\n {\n value: 995405,\n label: 'CT Solar Loan',\n states: ['ct']\n },\n {\n value: 995358,\n label: 'The United Illuminating Company - Small ZREC Tariff',\n states: ['ct']\n },\n {\n value: 995356,\n label: 'Connecticut Light & Power - Small ZREC Tariff',\n states: ['ct']\n },\n {\n value: 995321,\n label: 'Local Option - Commercial PACE Financing',\n states: ['ct']\n },\n {\n value: 995242,\n label: 'Commercial Solar Thermal Incentive Program',\n states: ['ct']\n },\n {\n value: 995213,\n label: 'Combined Heat and Power Pilot Loan Program',\n states: ['ct']\n },\n {\n value: 995212,\n label: 'Combined Heat and Power Grant Program',\n states: ['ct']\n },\n {\n value: 995164,\n label: 'Connecticut Light & Power - ZREC and LREC Long Term Contracts',\n states: ['ct']\n },\n {\n value: 995121,\n label: 'Exemption from Electric Generation Tax',\n states: ['ct']\n },\n {\n value: 992313,\n label: 'Energy Efficiency Fund',\n states: ['ct']\n },\n {\n value: 994552,\n label: 'Sales and Use Taxes for Items Used in Renewable Energy Industries',\n states: ['ct']\n },\n {\n value: 992390,\n label: 'Energy Efficiency Requirements for State Government',\n states: ['ct']\n },\n {\n value: 994517,\n label:\n 'Energy Efficiency Fund (Electric and Gas) - Residential Energy Efficiency Financing',\n states: ['ct']\n },\n {\n value: 994506,\n label: 'Renewable Portfolio Standards - Energy Efficiency Component',\n states: ['ct']\n },\n {\n value: 99195,\n label: 'Renewables Portfolio Standard',\n states: ['ct']\n },\n {\n value: 9916397,\n label: 'United Illuminating Company - Retro-Commissioning (RCx)',\n states: ['ct']\n },\n {\n value: 992612,\n label: 'Building Energy Code',\n states: ['ct']\n },\n {\n value: 992613,\n label: 'Sales and Use Tax Exemption for Solar and Geothermal Systems',\n states: ['ct']\n },\n {\n value: 992614,\n label: 'OPM - Replacement Furnace Rebate Program',\n states: ['ct']\n },\n {\n value: 994421,\n label: 'CCEF - ARRA Commercial Solar PV Program',\n states: ['ct']\n },\n {\n value: 992623,\n label: 'Connecticut Light & Power - Summer Saver Rewards',\n states: ['ct']\n },\n {\n value: 992624,\n label: 'Local Option - Property Tax Exemption Cogeneration Systems',\n states: ['ct']\n },\n {\n value: 992625,\n label: 'The United Illuminating Company - Summer Savers Rewards',\n states: ['ct']\n },\n {\n value: 994358,\n label:\n 'Connecticut Light & Power - Energy Conscious Blueprint Grant Program',\n states: ['ct']\n },\n {\n value: 994357,\n label:\n 'Connecticut Light & Power - Small Business Energy Advantage Loan Program',\n states: ['ct']\n },\n {\n value: 994356,\n label:\n 'Energy Efficiency Fund (Electric) - Commercial New Construction Rebate Program',\n states: ['ct']\n },\n {\n value: 994355,\n label: '(Electric) Commercial and Industrial Energy Efficiency Programs',\n states: ['ct']\n },\n {\n value: 994342,\n label: '(Electric and Gas) Residential New Construction Program',\n states: ['ct']\n },\n {\n value: 994340,\n label:\n 'Connecticut Light and Power (Electric) - Heating and Cooling Rebate Program',\n states: ['ct']\n },\n {\n value: 992654,\n label: 'Mass Energy - Renewable Energy Certificate Incentive',\n states: ['ct']\n },\n {\n value: 9916396,\n label: 'United Illuminating Company - Business Energy Solutions',\n states: ['ct']\n },\n {\n value: 994338,\n label: '(Electric and Gas ) Home Energy Solutions Rebate Program',\n states: ['ct']\n },\n {\n value: 993941,\n label: '(Gas) Commercial and Industrial Gas Rebate Program',\n states: ['ct']\n },\n {\n value: 993940,\n label: 'Yankeegas - Cooking and Water Heating Rebate Program',\n states: ['ct']\n },\n {\n value: 993938,\n label: 'Connecticut Natural Gas - Cooking and Water Heating Rebate Program',\n states: ['ct']\n },\n {\n value: 993934,\n label:\n 'Southern Connecticut Gas - Custom Commercial Energy Efficiency Program',\n states: ['ct']\n },\n {\n value: 993933,\n label: 'Yankee Gas - Custom Commercial Energy Efficiency Program',\n states: ['ct']\n },\n {\n value: 993930,\n label:\n 'Connecticut Natural Gas - Custom Commercial Energy Efficiency Program',\n states: ['ct']\n },\n {\n value: 993889,\n label:\n 'The United Illuminating Company - Residential New Construction Program',\n states: ['ct']\n },\n {\n value: 99196,\n label: 'Energy Conservation Loan',\n states: ['ct']\n },\n {\n value: 993888,\n label: 'Connecticut Light & Power - Residential New Construction Program',\n states: ['ct']\n },\n {\n value: 993887,\n label:\n 'Connecticut Light & Power - Energy Conscious Blueprint Rebate Program',\n states: ['ct']\n },\n {\n value: 993844,\n label: 'Connecticut - Residential Energy-Efficient Appliance Rebates',\n states: ['ct']\n },\n {\n value: 99197,\n label: 'Alternative Fuel Vehicles and Associated Equipment',\n states: ['ct']\n },\n {\n value: 993802,\n label: 'Geothermal Rebate Program',\n states: ['ct']\n },\n {\n value: 9916390,\n label: 'Commercial Conservation Programs',\n states: ['ct']\n },\n {\n value: 993730,\n label: 'Solar Thermal Incentive Program',\n states: ['ct']\n },\n {\n value: 9916290,\n label: 'ISO New England - Demand Resources',\n states: ['ct']\n },\n {\n value: 993706,\n label: 'New Generation Energy - Community Solar Lending Program',\n states: ['ct']\n },\n {\n value: 993705,\n label:\n 'New Generation Energy - Community Food Service Efficiency Lending Program',\n states: ['ct']\n },\n {\n value: 993447,\n label:\n 'Energy Efficiency Fund (Electric) - Residential Heating and Cooling Rebates',\n states: ['ct']\n },\n {\n value: 993445,\n label: 'CL&P - Residential Heating and Cooling Rebates',\n states: ['ct']\n },\n {\n value: 993373,\n label: 'Commercial and Industrial Rebate Program',\n states: ['ct']\n },\n {\n value: 993003,\n label: 'CCEF - Affordable Housing Initiative Solar PV Rebate Program',\n states: ['ct']\n },\n {\n value: 993081,\n label: 'CT Solar Lease',\n states: ['ct']\n },\n {\n value: 993141,\n label: 'Furnace and Boiler Replacement Rebate Program',\n states: ['ct']\n },\n {\n value: 993115,\n label: 'Norwich Public Utilities - Zero Percent Financing Program',\n states: ['ct']\n },\n {\n value: 993111,\n label:\n 'Norwich Public Utilities - Commercial Energy Efficiency Rebate Program',\n states: ['ct']\n },\n {\n value: 993112,\n label:\n 'Norwich Public Utilities (Electric) - Residential Energy Efficiency Rebate Program',\n states: ['ct']\n },\n {\n value: 99129,\n label: 'Alternative Fueled Vehicle Charging Station Credit',\n states: ['ct']\n },\n {\n value: 99239,\n label: 'Fuel Mix and Emissions Disclosure',\n states: ['ct']\n },\n {\n value: 9916288,\n label:\n 'U.S. Department of Energy Industrial Assessment Center (IAC): University of Massachusetts',\n states: ['ct']\n },\n {\n value: 99240,\n label: 'Property Tax Exemption for Renewable Energy Systems',\n states: ['ct']\n },\n {\n value: 991046,\n label: 'New Energy Technology Program',\n states: ['ct']\n },\n {\n value: 991059,\n label: 'Interconnection Standards',\n states: ['ct']\n },\n {\n value: 9922037,\n label: 'Local Option - Commercial PACE Financing',\n states: ['ma']\n },\n {\n value: 9933,\n label: 'Green Power Predevelopment Financing Grant',\n states: ['ma']\n },\n {\n value: 99147,\n label: 'Excise Tax Exemption for Solar or Wind Powered Systems',\n states: ['ma']\n },\n {\n value: 995367,\n label: 'Commonwealth Outdoor Hydronic Heater Change-Out Pilot Program',\n states: ['ma']\n },\n {\n value: 99141,\n label: 'Clustered PV Installation Program',\n states: ['ma']\n },\n {\n value: 99144,\n label: 'Residential Renewable Energy Income Tax Credit',\n states: ['ma']\n },\n {\n value: 99145,\n label: 'Renewable Energy Equipment Sales Tax Exemption',\n states: ['ma']\n },\n {\n value: 99146,\n label: 'Renewable Energy Property Tax Exemption',\n states: ['ma']\n },\n {\n value: 99148,\n label: 'Excise Tax Deduction for Solar or Wind Powered Systems',\n states: ['ma']\n },\n {\n value: 99149,\n label:\n 'Alternative Energy and Energy Conservation Patent Income Tax Deduction (Corporate)',\n states: ['ma']\n },\n {\n value: 99177,\n label:\n 'Mass Energy Consumers Alliance - Renewable Energy Certificate Incentive',\n states: ['ma']\n },\n {\n value: 99229,\n label:\n 'Alternative Energy and Energy Conservation Patent Income Tax Deduction (Personal)',\n states: ['ma']\n },\n {\n value: 99281,\n label: 'Net Metering',\n states: ['ma']\n },\n {\n value: 99298,\n label: 'MTC - Renewable Energy Credit Payment Options',\n states: ['ma']\n },\n {\n value: 99301,\n label: 'Solar Easements & Rights Laws',\n states: ['ma']\n },\n {\n value: 99307,\n label: \"Cape Cod & Martha's Vineyard - Green Power Purchasing\",\n states: ['ma']\n },\n {\n value: 99349,\n label: 'Medford Solar Program',\n states: ['ma']\n },\n {\n value: 99332,\n label: 'MTC - Matching Grants for Communities',\n states: ['ma']\n },\n {\n value: 99345,\n label: 'Commonwealth Wind Incentive Program - Micro Wind Initiative',\n states: ['ma']\n },\n {\n value: 99479,\n label: 'Renewable Portfolio Standard',\n states: ['ma']\n },\n {\n value: 99480,\n label: 'Fuel Mix and Emissions Disclosure',\n states: ['ma']\n },\n {\n value: 99543,\n label: 'Open PV Installation Program',\n states: ['ma']\n },\n {\n value: 99580,\n label:\n 'Cape & Islands Self-Reliance Corporation - Home Energy Loan Program',\n states: ['ma']\n },\n {\n value: 99732,\n label: 'Renewable Energy Trust Fund',\n states: ['ma']\n },\n {\n value: 99849,\n label: 'Green Schools Initiative',\n states: ['ma']\n },\n {\n value: 99850,\n label: 'Green Buildings Initiative',\n states: ['ma']\n },\n {\n value: 99875,\n label: 'Newton - Solar Hot Water System Rebate',\n states: ['ma']\n },\n {\n value: 99930,\n label: 'Green Power Purchasing',\n states: ['ma']\n },\n {\n value: 99940,\n label: 'Fuel Cell Grants',\n states: ['ma']\n },\n {\n value: 99986,\n label: 'Interconnection Standards',\n states: ['ma']\n },\n {\n value: 991076,\n label: 'MTC - Large Onsite Renewables Initiative (LORI) Grants',\n states: ['ma']\n },\n {\n value: 991146,\n label: 'Energy Conservation Improvement Program',\n states: ['ma']\n },\n {\n value: 991269,\n label:\n 'MassCEC - Sustainable Energy Economic Development (SEED) Initiative',\n states: ['ma']\n },\n {\n value: 991284,\n label: 'Residential Solar and Efficiency Tax Credit - Personal',\n states: ['ma']\n },\n {\n value: 991285,\n label: 'Residential Solar and Efficiency Tax Credit - Corporate',\n states: ['ma']\n },\n {\n value: 991303,\n label:\n 'National Grid - Residential (Gas) Solar Water Heating Rebate Program',\n states: ['ma']\n },\n {\n value: 991334,\n label: 'Berkshire Gas - Residential Energy Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 991337,\n label:\n 'Holyoke Gas & Electric - Residential Energy Conservation Loan Program',\n states: ['ma']\n },\n {\n value: 991338,\n label:\n 'Holyoke Gas & Electric - Commercial Energy Conservation Loan Program',\n states: ['ma']\n },\n {\n value: 991339,\n label:\n 'National Grid (Electric) - Residential Energy Efficiency Incentive Programs',\n states: ['ma']\n },\n {\n value: 991342,\n label:\n 'Wakefield Municipal Gas & Light Department - Residential Conservation Services Program',\n states: ['ma']\n },\n {\n value: 991353,\n label:\n 'National Grid (Mass Electric) - Small Business Energy Efficiency Program',\n states: ['ma']\n },\n {\n value: 991355,\n label:\n 'New England Gas Company - Residential and Commercial Energy Efficiency Rebate Programs',\n states: ['ma']\n },\n {\n value: 991375,\n label: 'Unitil - Residential Energy Efficiency Programs',\n states: ['ma']\n },\n {\n value: 991379,\n label: 'Unitil (Gas) - Business Energy Efficiency Programs',\n states: ['ma']\n },\n {\n value: 991380,\n label:\n 'Columbia Gas of Massachusetts - Residential Energy Efficiency Programs',\n states: ['ma']\n },\n {\n value: 991381,\n label:\n 'Columbia Gas of Massachusetts - Commercial Energy Efficiency Program',\n states: ['ma']\n },\n {\n value: 991383,\n label:\n 'National Grid (Electric) - Commercial Energy Efficiency Incentive Programs',\n states: ['ma']\n },\n {\n value: 991389,\n label:\n 'National Grid - Small/Mid-Sized Business Energy Efficiency Loan/Rebate Program',\n states: ['ma']\n },\n {\n value: 991390,\n label:\n 'National Grid (Nantucket) - Commercial Energy Efficiency Incentive Programs',\n states: ['ma']\n },\n {\n value: 991391,\n label:\n 'National Grid (Nantucket) - Residential Energy Efficiency Incentive Programs',\n states: ['ma']\n },\n {\n value: 991395,\n label: 'NSTAR (Gas) - Residential Energy Efficiency Programs',\n states: ['ma']\n },\n {\n value: 991396,\n label: 'NSTAR (Electric) - Construction Solutions Program',\n states: ['ma']\n },\n {\n value: 991397,\n label: 'NSTAR (Electric) - Business Solutions Program',\n states: ['ma']\n },\n {\n value: 991400,\n label: 'National Grid - Commercial Energy Efficiency Programs',\n states: ['ma']\n },\n {\n value: 991402,\n label: 'National Grid (Gas) - Residential Energy Efficiency Programs',\n states: ['ma']\n },\n {\n value: 991403,\n label:\n 'National Grid Energy Delivery - Building Practices and Demonstration Program',\n states: ['ma']\n },\n {\n value: 991567,\n label: 'Appliance Efficiency Standards',\n states: ['ma']\n },\n {\n value: 991598,\n label: 'Corporate Tax Credit for Solar Water Heating Systems',\n states: ['ma']\n },\n {\n value: 9918330,\n label: 'Reading Municipal Light Department - Commercial Customers',\n states: ['ma']\n },\n {\n value: 991675,\n label: 'MTC - Clean Energy Pre-Development Financing Initiative (Grants)',\n states: ['ma']\n },\n {\n value: 991685,\n label: 'MTC - Clean Energy Pre-Development Financing Initiative (Loans)',\n states: ['ma']\n },\n {\n value: 991802,\n label:\n 'Belmont Municipal Light Department - Residential Energy Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 991817,\n label:\n 'North Attleborough Electric Department - Residential Energy Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 991806,\n label:\n 'Chicopee Electric Light Department - Residential Energy Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 991807,\n label:\n 'Concord Municipal Light Plant - Residential Energy Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 991808,\n label:\n 'Concord Municipal Light Plant - Commercial Energy Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 991811,\n label:\n 'Mansfield Municipal Electric Department - Residential Energy Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 991812,\n label:\n 'Marblehead Municipal Light Department - Residential Energy Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 991828,\n label:\n 'North Attleborough Electric Department - Power Saver Rebate Program',\n states: ['ma']\n },\n {\n value: 991829,\n label:\n 'Reading Municipal Light Department - Residential Energy Star Appliance Rebate Program',\n states: ['ma']\n },\n {\n value: 991831,\n label:\n 'Reading Municipal Light Department - Commercial Lighting Retrofit Program',\n states: ['ma']\n },\n {\n value: 991871,\n label: 'Building Energy Code',\n states: ['ma']\n },\n {\n value: 991929,\n label: 'Shrewsbury Electric - Residential Energy Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 992107,\n label: 'Mass Save - HEAT Loan Program',\n states: ['ma']\n },\n {\n value: 992257,\n label: 'Energy Efficiency Fund',\n states: ['ma']\n },\n {\n value: 992504,\n label: 'City of Boston - Green Power Purchasing',\n states: ['ma']\n },\n {\n value: 992529,\n label: 'MTC - Massachusetts Green Communities Grant',\n states: ['ma']\n },\n {\n value: 992535,\n label: 'MTC - Massachusetts Green Communities Loan',\n states: ['ma']\n },\n {\n value: 992536,\n label: 'Boston Community Capital - Energy Advantage Program',\n states: ['ma']\n },\n {\n value: 992598,\n label: 'MTC - Business Expansion Initiative',\n states: ['ma']\n },\n {\n value: 992569,\n label: 'Energy Reduction Plan for State Buildings',\n states: ['ma']\n },\n {\n value: 993324,\n label: 'NSTAR (Electric) - Small Business Direct Install Program',\n states: ['ma']\n },\n {\n value: 992782,\n label:\n 'Model As-of Right Zoning Ordinance or Bylaw: Allowing Use of Wind Energy Facilities',\n states: ['ma']\n },\n {\n value: 992851,\n label: 'Commonwealth Solar II Rebates',\n states: ['ma']\n },\n {\n value: 992886,\n label: 'Chicopee Electric Light - Residential Solar Rebate Program',\n states: ['ma']\n },\n {\n value: 993000,\n label: 'Green Power Purchasing Commitment',\n states: ['ma']\n },\n {\n value: 9917470,\n label:\n 'Massachusetts Division of Energy Resources - Green Business Development',\n states: ['ma']\n },\n {\n value: 993017,\n label: 'National Grid (Gas)– Commercial Energy Efficiency Programs',\n states: ['ma']\n },\n {\n value: 993126,\n label: 'Model Ordinance for Permitting of Small Wind Facilities',\n states: ['ma']\n },\n {\n value: 993217,\n label: 'MuniHELPS - Offered by 17 Utilities through the MMWEC',\n states: ['ma']\n },\n {\n value: 993338,\n label: 'Eversource (Gas) - Commercial Energy Efficiency Programs',\n states: ['ma']\n },\n {\n value: 993377,\n label:\n 'Western Massachusetts Electric - Commercial Energy Efficiency Rebates',\n states: ['ma']\n },\n {\n value: 993378,\n label:\n 'National Grid (Electric) - Small Business Energy Efficiency Loan/Rebate Program',\n states: ['ma']\n },\n {\n value: 993379,\n label: 'WMECO - New Construction/Major Renovations Program',\n states: ['ma']\n },\n {\n value: 993435,\n label: 'Commonwealth Wind Community-Scale Initiative',\n states: ['ma']\n },\n {\n value: 993456,\n label: 'Marblehead Municipal Light Department - Solar Rebate Program',\n states: ['ma']\n },\n {\n value: 993487,\n label: 'Cape Light Compact - Residential Energy Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 993488,\n label: 'Cape Light Compact - Commercial Energy Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 993628,\n label: 'National Grid (Gas) - Commercial Solar Thermal Rebate Program',\n states: ['ma']\n },\n {\n value: 993657,\n label: 'Commonwealth Wind Program',\n states: ['ma']\n },\n {\n value: 993658,\n label:\n 'MassCEC - Commonwealth Wind Incentive Program - Commercial Wind Initiative Loan',\n states: ['ma']\n },\n {\n value: 993677,\n label: 'Commonwealth Hydropower Program',\n states: ['ma']\n },\n {\n value: 993701,\n label: 'New Generation Energy - Community Solar Lending Program',\n states: ['ma']\n },\n {\n value: 993728,\n label: 'Concord Municipal Light Plant - Solar Photovoltaic Rebate Program',\n states: ['ma']\n },\n {\n value: 993783,\n label:\n 'New Generation Energy - Community Food Service Efficiency Lending Program',\n states: ['ma']\n },\n {\n value: 993862,\n label: 'Massachusetts - Residential Energy-Efficient Appliance Rebates',\n states: ['ma']\n },\n {\n value: 993942,\n label: 'MassCEC - Commonwealth Solar Stimulus',\n states: ['ma']\n },\n {\n value: 993991,\n label: 'Solar Renewable Energy Certificates (SREC-I)',\n states: ['ma']\n },\n {\n value: 994037,\n label: 'Residential New Construction Program',\n states: ['ma']\n },\n {\n value: 994055,\n label: 'Major Renovations Program',\n states: ['ma']\n },\n {\n value: 994061,\n label:\n 'Model As-of Right Zoning Ordinance or Bylaw: Allowing Use of Large-Scale Solar Energy Facilities',\n states: ['ma']\n },\n {\n value: 994067,\n label: 'Green Communities Grant Program',\n states: ['ma']\n },\n {\n value: 994214,\n label: 'Unitil - Commercial and Industrial Energy Efficiency Programs',\n states: ['ma']\n },\n {\n value: 994259,\n label: 'Berkshire Gas - Commercial Energy Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 994263,\n label:\n 'Western Massachusetts Electric - Residential Energy Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 9918953,\n label:\n 'Rowley Municipal Lighting Plant - Commercial Energy Audits and Rebates',\n states: ['ma']\n },\n {\n value: 994282,\n label: 'Taunton Municipal Lighting Plant - Residential PV Rebate Program',\n states: ['ma']\n },\n {\n value: 994283,\n label: 'Local Option - Energy Revolving Loan Fund',\n states: ['ma']\n },\n {\n value: 994298,\n label: 'NSTAR (Electric) - Residential Energy Efficiency Programs',\n states: ['ma']\n },\n {\n value: 994378,\n label:\n 'MMWEC Green Opportunity Commercial and Industrial Efficiency Program',\n states: ['ma']\n },\n {\n value: 994379,\n label: 'Ipswich Utilities - HELPS PV Solar Rebate',\n states: ['ma']\n },\n {\n value: 994431,\n label: 'City of Boston - Renew Boston Residential Retrofit Program',\n states: ['ma']\n },\n {\n value: 994500,\n label: 'Energy Efficiency First Fuel Requirement (Gas and Electric)',\n states: ['ma']\n },\n {\n value: 994557,\n label: 'Commonwealth Residential & Small-Scale Solar Hot Water Program',\n states: ['ma']\n },\n {\n value: 994561,\n label:\n 'Taunton Municipal Lighting Plant - Residential Energy Star Appliance Rebate Program',\n states: ['ma']\n },\n {\n value: 994595,\n label:\n 'Reading Municipal Light Department - Business Energy Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 994605,\n label:\n 'Reading Municipal Light Department - Residential Renewable Energy Rebates',\n states: ['ma']\n },\n {\n value: 994624,\n label: 'Alternative Energy Portfolio Standard',\n states: ['ma']\n },\n {\n value: 994791,\n label:\n 'MassSAVE (Electric) - Commercial New Construction/Major Renovation Program',\n states: ['ma']\n },\n {\n value: 994794,\n label: 'Gas Networks - Commercial Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 994797,\n label: 'Mass Save (Gas) - Residential Rebate Program',\n states: ['ma']\n },\n {\n value: 994798,\n label: 'Mass Save (Electric) - Large Commercial Retrofit Program',\n states: ['ma']\n },\n {\n value: 994799,\n label: 'Mass Save (Electric) - Residential Energy Efficiency Programs',\n states: ['ma']\n },\n {\n value: 994807,\n label:\n 'Wellesley Municipal Light Plant - Residential Energy Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 994918,\n label: 'City of Boston - Renew Boston Solar Program',\n states: ['ma']\n },\n {\n value: 994962,\n label: 'Commercial Solar Hot Water Rebate Program',\n states: ['ma']\n },\n {\n value: 995038,\n label: 'Mass Save - Financing for Business Program',\n states: ['ma']\n },\n {\n value: 995039,\n label: 'Commonwealth Organics-to-Energy Program',\n states: ['ma']\n },\n {\n value: 995070,\n label: 'ReBuild Western Massachusetts Grant Program',\n states: ['ma']\n },\n {\n value: 995071,\n label: 'ReBuild Western Massachusetts Loan Program',\n states: ['ma']\n },\n {\n value: 995157,\n label:\n 'City of Cambridge - Cambridge Energy Alliance Solar Hot Water Grant',\n states: ['ma']\n },\n {\n value: 995189,\n label: 'Hudson Light & Power - Photovoltaic Incentive Program',\n states: ['ma']\n },\n {\n value: 995239,\n label:\n 'Chicopee Electric Light - Commercial Energy Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 995289,\n label: 'City of Lowell - BLEU Projects Program',\n states: ['ma']\n },\n {\n value: 995319,\n label:\n 'Taunton Municipal Lighting Plant - Residential and Non-Profit Weatherization Program',\n states: ['ma']\n },\n {\n value: 995357,\n label: 'Commonwealth Woodstove Change-Out Program',\n states: ['ma']\n },\n {\n value: 995359,\n label: 'Commercial Solar Hot Water Financing Program',\n states: ['ma']\n },\n {\n value: 995380,\n label: 'Commonwealth Small Pellet Boiler Grant Program',\n states: ['ma']\n },\n {\n value: 9913957,\n label: 'National Grid - Existing Facility Incentives',\n states: ['ma']\n },\n {\n value: 995515,\n label: 'Solar Renewable Energy Certificates (SREC-II)',\n states: ['ma']\n },\n {\n value: 995635,\n label: 'Residential & Small-Scale Air-Source Heat Pump Program',\n states: ['ma']\n },\n {\n value: 995636,\n label: 'Residential & Small-Scale Ground-Source Heat Pump Program',\n states: ['ma']\n },\n {\n value: 995644,\n label: 'Residential & Small-Scale Biomass Heating Program',\n states: ['ma']\n },\n {\n value: 995678,\n label: 'Solar Renewable Energy Certificates (SREC-I)',\n states: ['ma']\n },\n {\n value: 995679,\n label: 'Solar Renewable Energy Certificates (SREC-II)',\n states: ['ma']\n },\n {\n value: 995782,\n label: 'Cape Light Compact- Residential Energy Efficiency Rebate Program',\n states: ['ma']\n },\n {\n value: 995808,\n label: 'Leading By Example Solar Photovoltaic Canopy Grant Program',\n states: ['ma']\n },\n {\n value: 995828,\n label: 'Mass Save (Electric) - Small Business Direct Install Program',\n states: ['ma']\n },\n {\n value: 995850,\n label: 'Mass Solar Loan Program',\n states: ['ma']\n },\n {\n value: 995919,\n label: 'City of Boston - Green Building Standard',\n states: ['ma']\n },\n {\n value: 9913956,\n label: 'Mass Save - New Construction/Major Renovations Program',\n states: ['ma']\n },\n {\n value: 9913947,\n label:\n 'Columbia Gas of Massachusetts - Medium and Large Business Energy Efficiency Programs',\n states: ['ma']\n },\n {\n value: 9913952,\n label: 'Concord Municipal Light Plant - Energy Resources For Businesses',\n states: ['ma']\n },\n {\n value: 9913955,\n label: 'National Grid - Building Operator Certification Program',\n states: ['ma']\n },\n {\n value: 9914062,\n label: 'National Grid - Building Practices & Demonstration Program',\n states: ['ma']\n },\n {\n value: 9914078,\n label: 'National Grid - Energy Profiler Online',\n states: ['ma']\n },\n {\n value: 9916193,\n label: 'Holyoke Gas & Electric - Commercial Energy Audits',\n states: ['ma']\n },\n {\n value: 9916282,\n label:\n 'Massachusetts Executive Office of Energy and Environmental Affairs - Energy Efficiency Assistance for Business',\n states: ['ma']\n },\n {\n value: 9916286,\n label:\n 'Massachusetts Office of Technical Assistance and Technology - OTA Software Programs',\n states: ['ma']\n },\n {\n value: 9916287,\n label:\n 'Massachusetts Office of Technical Assistance and Technology - OTA Energy Publications',\n states: ['ma']\n },\n {\n value: 9916289,\n label:\n 'U.S. Department of Energy - Massachusetts Energy Efficiency Partnership',\n states: ['ma']\n },\n {\n value: 9917454,\n label: 'National Grid - Financing Solutions For Natural Gas Equipment',\n states: ['ma']\n },\n {\n value: 9917458,\n label: 'National Grid - Power Quality Enhancements Program',\n states: ['ma']\n },\n {\n value: 9917478,\n label:\n 'Berkshire Gas - GasNetworks Commercial & Industrial High Efficiency Heating Rebate Program',\n states: ['ma']\n },\n {\n value: 9917480,\n label: 'National Grid - Demand Response',\n states: ['ma']\n },\n {\n value: 9917481,\n label: 'National Grid - Enhanced Metering',\n states: ['ma']\n },\n {\n value: 9917573,\n label:\n 'Massachusetts Division of Energy Resources - Education and Outreach Programs for Businesses',\n states: ['ma']\n },\n {\n value: 9917574,\n label:\n 'Massachusetts Division of Energy Resources - Municipal Energy Efficiency',\n states: ['ma']\n },\n {\n value: 9917578,\n label:\n 'Western Massachusetts Electric - Massachusetts Energy Efficiency Partnership',\n states: ['ma']\n },\n {\n value: 9917727,\n label:\n 'Massachusetts Office of Technical Assistance and Technology - Energy Efficiency for Businesses & Institutions',\n states: ['ma']\n },\n {\n value: 9918962,\n label: 'Hudson Light & Power - Commercial and Industrial Energy Audits',\n states: ['ma']\n },\n {\n value: 9919774,\n label: 'Western Massachusetts Electric - Power Purchase',\n states: ['ma']\n },\n {\n value: 9919888,\n label:\n 'Westfield Gas & Electric Light Dept. - Commercial & Industrial New Construction and Lost Opportunity Pilot Program',\n states: ['ma']\n },\n {\n value: 9919911,\n label:\n 'Ipswich Municipal Light - Commercial & Industrial Energy Efficiency Programs',\n states: ['ma']\n },\n {\n value: 9919913,\n label:\n 'Ipswich Municipal Light - Commercial & Industrial New Construction and Major Renovation Pilot Program',\n states: ['ma']\n },\n {\n value: 9919914,\n label:\n 'Ipswich Municipal Light - Commercial & Industrial Renewable Energy and Demand Response Options',\n states: ['ma']\n },\n {\n value: 9920099,\n label:\n 'Massachusetts Division of Energy Resources - Assessments and Audits',\n states: ['ma']\n },\n {\n value: 9920123,\n label:\n 'Columbia Gas of Massachusetts - Small Business Energy Efficiency Program',\n states: ['ma']\n },\n {\n value: 9920258,\n label: 'Chicopee Electric Light - Custom Retrofit GO Program',\n states: ['ma']\n },\n {\n value: 9920625,\n label: 'Taunton Municipal Lighting Plant - Net Metering',\n states: ['ma']\n },\n {\n value: 9921157,\n label: 'National Grid - Massachusetts Energy Efficiency Services',\n states: ['ma']\n },\n {\n value: 9921171,\n label: 'National Grid - Rhode Island Energy Efficiency Services',\n states: ['ma']\n },\n {\n value: 9921186,\n label: 'Mass Save - Small Business Program',\n states: ['ma']\n },\n {\n value: 9921187,\n label: 'National Grid - Construction Program',\n states: ['ma']\n },\n {\n value: 9921571,\n label: 'Unitil - Energy Saving Tips',\n states: ['ma']\n },\n {\n value: 9921671,\n label: 'ISO New England - Demand Resources',\n states: ['ma']\n },\n {\n value: 9921674,\n label:\n 'Northeast Energy Efficiency Council - Building Operator Certification (BOC)',\n states: ['ma']\n },\n {\n value: 9922020,\n label: 'Northeast Energy Efficiency Partnerships - EM&V Forum',\n states: ['ma']\n },\n {\n value: 9922036,\n label: 'Commercial Biomass Heating Grant Program',\n states: ['ma']\n },\n {\n value: 9921635,\n label: 'FirstEnergy Solutions - Business Energy Analyzer',\n states: ['nj']\n },\n {\n value: 991477,\n label: 'ENERGY STAR Homes Program',\n states: ['nj']\n },\n {\n value: 995715,\n label: 'SREC-Based Financing Program',\n states: ['nj']\n },\n {\n value: 995716,\n label: 'SREC-Based Financing Program (ACE, JCP&L, RECO)',\n states: ['nj']\n },\n {\n value: 995717,\n label: 'SREC-Based Financing Program (ACE, JCP&L, RECO)',\n states: ['nj']\n },\n {\n value: 991465,\n label: 'South Jersey Gas - Residential Loan Program',\n states: ['nj']\n },\n {\n value: 995728,\n label:\n 'New Jersey Natural Gas- SAVEGREEN Commercial On-Bill Financing Program',\n states: ['nj']\n },\n {\n value: 99898,\n label: 'New Jersey - Green Power Purchasing',\n states: ['nj']\n },\n {\n value: 992979,\n label:\n 'New Jersey Natural Gas (NJNG) - Home Performance with Energy Star Rebate',\n states: ['nj']\n },\n {\n value: 995729,\n label: 'South Jersey Gas Commerical and Industrial Loan Program',\n states: ['nj']\n },\n {\n value: 991326,\n label: 'Combined Heat & Power (CHP) Program',\n states: ['nj']\n },\n {\n value: 993461,\n label: 'Clean Energy Solutions Capital Investment Loan/Grant Program',\n states: ['nj']\n },\n {\n value: 991249,\n label: 'Renewable Energy Business Venture Assistance Program (REBVAP)',\n states: ['nj']\n },\n {\n value: 99797,\n label: 'Interconnection Standards',\n states: ['nj']\n },\n {\n value: 991152,\n label: 'Sustainable Development Loan Fund',\n states: ['nj']\n },\n {\n value: 991151,\n label: 'NJ Clean Energy- WARMAdvantage Program (Electric and Gas)',\n states: ['nj']\n },\n {\n value: 994983,\n label: 'PSE&G - Multi-Family Residential Efficiency Program',\n states: ['nj']\n },\n {\n value: 9916416,\n label: 'New Jersey Natural Gas - Energy-Saving Tips for Your Business',\n states: ['nj']\n },\n {\n value: 991855,\n label: 'Building Energy Code',\n states: ['nj']\n },\n {\n value: 9916482,\n label: 'New Jersey Board of Public Utilities - Pay for Performance',\n states: ['nj']\n },\n {\n value: 9916483,\n label: 'New Jersey Board of Public Utilities - Renewable Energy Program',\n states: ['nj']\n },\n {\n value: 992722,\n label: 'Residential Solar Rights',\n states: ['nj']\n },\n {\n value: 995012,\n label: 'Orange and Rockland Utilities (Electric) - HVAC Efficiency Program',\n states: ['nj']\n },\n {\n value: 994805,\n label:\n 'New Jersey Natural Gas - SAVEGREEN Residential On-Bill Financing Program',\n states: ['nj']\n },\n {\n value: 9921638,\n label: 'First Energy - Business Energy Analyzer',\n states: ['nj']\n },\n {\n value: 993671,\n label: 'Solar Domestic Hot Water Pilot Program',\n states: ['nj']\n },\n {\n value: 99595,\n label: 'Renewable Energy Advanced Power Program',\n states: ['nj']\n },\n {\n value: 993678,\n label: 'Edison Innovation Clean Energy Fund',\n states: ['nj']\n },\n {\n value: 99589,\n label:\n 'New Jersey Renewable Energy Incentive Program (Sustainable Biopower)',\n states: ['nj']\n },\n {\n value: 991568,\n label: 'Energy Efficiency Product Standards',\n states: ['nj']\n },\n {\n value: 992910,\n label: 'PSE&G - Solar Loan Program',\n states: ['nj']\n },\n {\n value: 991150,\n label: 'COOLAdvantage Program',\n states: ['nj']\n },\n {\n value: 99565,\n label: 'Environmental Information Disclosure',\n states: ['nj']\n },\n {\n value: 992890,\n label: 'New Jersey Comfort Partners Program',\n states: ['nj']\n },\n {\n value: 991149,\n label: 'Clean Energy Financing for Businesses',\n states: ['nj']\n },\n {\n value: 993736,\n label: 'Grid-Connected Renewables Program',\n states: ['nj']\n },\n {\n value: 99219,\n label: 'Solar Energy Sales Tax Exemption',\n states: ['nj']\n },\n {\n value: 991148,\n label: 'Cogeneration Facility Sales Tax Exemption',\n states: ['nj']\n },\n {\n value: 993756,\n label: 'New Jersey Natural Gas - SAVEGREEN Residential Rebate Program',\n states: ['nj']\n },\n {\n value: 995205,\n label: 'Small Scale CHP and Fuel Cell Incentive Program',\n states: ['nj']\n },\n {\n value: 995811,\n label: 'NJ Clean Energy- Residential New Construction Program',\n states: ['nj']\n },\n {\n value: 99564,\n label: 'Renewables Portfolio Standard',\n states: ['nj']\n },\n {\n value: 994848,\n label: 'Edison Innovation Green Growth Fund Loans',\n states: ['nj']\n },\n {\n value: 9917594,\n label:\n 'U.S. Department of Energy Industrial Assessment Center (IAC): Lehigh University',\n states: ['nj']\n },\n {\n value: 9921919,\n label:\n 'New Jersey’s Clean Energy Program - Commercial Industrial and Local Government Programs',\n states: ['nj']\n },\n {\n value: 995873,\n label: 'New Jersey Energy Resilience Bank',\n states: ['nj']\n },\n {\n value: 9922023,\n label: 'Northeast Energy Efficiency Partnerships - EM&V Forum',\n states: ['nj']\n },\n {\n value: 995109,\n label: 'Local Option - Property Assessed Clean Energy Financing',\n states: ['nj']\n },\n {\n value: 995567,\n label: 'Local Energy Audit Program',\n states: ['nj']\n },\n {\n value: 995568,\n label: 'Large Energy Users Program',\n states: ['nj']\n },\n {\n value: 992359,\n label: 'New Jersey SmartStart Buildings - New Construction and Retrofits',\n states: ['nj']\n },\n {\n value: 992615,\n label: 'South Jersey Gas - Residential Energy Efficiency Rebate Program',\n states: ['nj']\n },\n {\n value: 9919788,\n label: 'New Jersey Board of Public Utilities - NJ Clean Energy Program',\n states: ['nj']\n },\n {\n value: 9938,\n label: 'Net Metering',\n states: ['nj']\n },\n {\n value: 9914025,\n label: 'New Jersey Board of Public Utilities - NJ SmartStart Buildings',\n states: ['nj']\n },\n {\n value: 9914029,\n label: 'Atlantic City Electric - Energy Profiler Online',\n states: ['nj']\n },\n {\n value: 99168,\n label: 'Societal Benefits Charge',\n states: ['nj']\n },\n {\n value: 9921541,\n label: 'FirstEnergy Solutions - Power Management Platform',\n states: ['nj']\n },\n {\n value: 993883,\n label:\n 'Renewable Energy Manufacturing Incentives (for End-Use PV Installations)',\n states: ['nj']\n },\n {\n value: 994548,\n label: 'Utility Solar Financing Incentive (ACE, JCP&L, RECO)',\n states: ['nj']\n },\n {\n value: 994588,\n label: 'PSE&G - Commercial Efficiency Program',\n states: ['nj']\n },\n {\n value: 991110,\n label: 'Solar Renewable Energy Certificates (SRECs)',\n states: ['nj']\n },\n {\n value: 993907,\n label: 'PSE&G - Residential Efficiency Program',\n states: ['nj']\n },\n {\n value: 993929,\n label: 'Solar and Wind Permitting Laws',\n states: ['nj']\n },\n {\n value: 994933,\n label: 'Clean Energy Solutions Energy Efficiency Revolving Loan Fund',\n states: ['nj']\n },\n {\n value: 991054,\n label: 'Renewable Energy Economic Development Program (REED)',\n states: ['nj']\n },\n {\n value: 991053,\n label:\n 'Clean Energy Financing for Local Schools and Governments (REDO Program)',\n states: ['nj']\n },\n {\n value: 993100,\n label: 'Property Tax Exemption for Renewable Energy Systems',\n states: ['nj']\n },\n {\n value: 9919,\n label: 'Solar Easements',\n states: ['nj']\n },\n {\n value: 9921920,\n label:\n 'New Jersey Manufacturing Extension Program - Operational Excellence Program',\n states: ['nj']\n },\n {\n value: 9921921,\n label: 'New Jersey Board of Public Utilities - Commercial Customers',\n states: ['nj']\n },\n {\n value: 993966,\n label: 'New Jersey Direct Install Program',\n states: ['nj']\n },\n {\n value: 993031,\n label: 'NJ Clean Energy- ENERGY STAR Appliance Rebate program',\n states: ['nj']\n },\n {\n value: 993014,\n label: 'High Performance Building Standards in New State Construction',\n states: ['nj']\n },\n {\n value: 994023,\n label: 'Solar Energy Option Requirement for Residential Developments',\n states: ['nj']\n },\n {\n value: 994026,\n label: 'Assessment of Farmland Hosting Renewable Energy Systems',\n states: ['nj']\n },\n {\n value: 994034,\n label: 'New Jersey - Residential Energy Efficient Appliance Rebate Program',\n states: ['nj']\n },\n {\n value: 994335,\n label: 'Clean Energy Solutions ARRA CHP Program',\n states: ['nj']\n },\n {\n value: 994560,\n label: 'Utility Solar Financing Programs (ACE, JCP&L, RECO)',\n states: ['nj']\n },\n {\n value: 993266,\n label:\n 'Edison Innovation Clean Energy Manufacturing Fund - Grants and Loans',\n states: ['nj']\n },\n {\n value: 994360,\n label: 'Wind Manufacturing Tax Credit',\n states: ['nj']\n },\n {\n value: 9919892,\n label: 'South Jersey Gas - Business Services',\n states: ['nj']\n },\n {\n value: 991906,\n label: 'High Performance Schools Policy',\n states: ['nj']\n },\n {\n value: 9920368,\n label: \"New Jersey's Clean Energy Program - Pay for Performance\",\n states: ['nj']\n },\n {\n value: 9920375,\n label: \"New Jersey's Clean Energy Program - Energy Benchmarking\",\n states: ['nj']\n },\n {\n value: 9919893,\n label: 'South Jersey Gas - Business Services נCommercial Accounts',\n states: ['nj']\n },\n {\n value: 993330,\n label: 'Pay for Performance Program',\n states: ['nj']\n },\n {\n value: 994982,\n label:\n 'PSE&G - Government and Non-Profit Facility Direct Install Efficiency Program',\n states: ['nj']\n },\n {\n value: 991502,\n label: 'Home Performance with ENERGY STAR Program',\n states: ['nj']\n },\n {\n value: 992978,\n label: 'Home Performance with ENERGY STAR Program',\n states: ['nj']\n },\n {\n value: 995165,\n label: 'Clean Energy Solutions Large Scale CHP and Fuel Cells Program',\n states: ['nj']\n },\n {\n value: 995687,\n label: 'Solar Renewable Energy Certificates (SRECs) Registration Program',\n states: ['nj']\n },\n {\n value: 992014,\n label: 'Austin Energy - Small Business Energy Efficiency Rebate Program',\n states: ['tx']\n },\n {\n value: 995254,\n label:\n 'Brownsville Public Utilities Board - Green Living Residential Rebate Program',\n states: ['tx']\n },\n {\n value: 995304,\n label: 'Texas Gas Service - Residential Solar Water Heating Rebate Program',\n states: ['tx']\n },\n {\n value: 992013,\n label: 'Austin Energy - Commercial Energy Management Rebate Program',\n states: ['tx']\n },\n {\n value: 992012,\n label: 'Austin Energy - Residential Energy Efficiency Loan Program',\n states: ['tx']\n },\n {\n value: 9921808,\n label: 'Xcel Energy - Energy At Risk Financial Analysis Tool',\n states: ['tx']\n },\n {\n value: 992011,\n label: 'Austin Energy - Residential Energy Efficiency Rebate Program',\n states: ['tx']\n },\n {\n value: 995352,\n label: 'TXU - Commercial Energy Efficiency Program',\n states: ['tx']\n },\n {\n value: 992021,\n label: 'Bryan Texas Utilities - Low-Interest Insulation Loan Program',\n states: ['tx']\n },\n {\n value: 9921810,\n label: 'Xcel Energy - Energy Management Systems',\n states: ['tx']\n },\n {\n value: 991900,\n label: 'Building Energy Code',\n states: ['tx']\n },\n {\n value: 995411,\n label: 'Bryan Texas Utilities - SmartHOME Program',\n states: ['tx']\n },\n {\n value: 991594,\n label: 'Xcel Energy - Air Conditioner Distributor Program',\n states: ['tx']\n },\n {\n value: 995447,\n label: 'Austin Energy - Value of Solar Residential Rate',\n states: ['tx']\n },\n {\n value: 991593,\n label: 'Xcel Energy - Residential and Hard-to-Reach Standard Offer Program',\n states: ['tx']\n },\n {\n value: 991592,\n label: 'Xcel Energy - Commercial and Industrial Standard Offer Program',\n states: ['tx']\n },\n {\n value: 991548,\n label:\n 'Texas-New Mexico Power Company - Energy Star Homes Market Transformation Program',\n states: ['tx']\n },\n {\n value: 995490,\n label: 'Entergy Texas - Home Performance with ENERGY STAR',\n states: ['tx']\n },\n {\n value: 9921817,\n label: 'Atmos Energy - Business Savings',\n states: ['tx']\n },\n {\n value: 995545,\n label: 'El Paso Electric Company - Net Metering',\n states: ['tx']\n },\n {\n value: 995547,\n label: 'San Antonio City Public Service (CPS Energy) - Net Metering',\n states: ['tx']\n },\n {\n value: 995570,\n label: 'City of Denton - Green Power Purchasing',\n states: ['tx']\n },\n {\n value: 995592,\n label:\n 'City of Forth Worth - Green Building Policy for Municipal Buildings',\n states: ['tx']\n },\n {\n value: 995590,\n label:\n 'City of Fort Worth - Residential and Commercial Green Building Requirements',\n states: ['tx']\n },\n {\n value: 995593,\n label:\n 'City of Houston - Residential and Commercial Green Building Requirements',\n states: ['tx']\n },\n {\n value: 995594,\n label: 'City of El Paso - Green Building Policy for Municipal Buildings',\n states: ['tx']\n },\n {\n value: 995595,\n label:\n 'City of El Paso - Residential and Commercial Green Building Requirements',\n states: ['tx']\n },\n {\n value: 991544,\n label:\n 'Texas-New Mexico Power Company - SCORE/CitySmart, Commercial Solutions, and Small Business Programs',\n states: ['tx']\n },\n {\n value: 991543,\n label:\n 'Texas-New Mexico Power Company - Residential, Hard-to-Reach, and High-Performance New Homes Programs',\n states: ['tx']\n },\n {\n value: 991542,\n label:\n 'Texas Gas Service - Commercial Water Heating Energy Efficiency Program',\n states: ['tx']\n },\n {\n value: 991540,\n label: 'Texas Gas Service - Food Service Equipment Program',\n states: ['tx']\n },\n {\n value: 9921955,\n label: 'El Paso Electric Company - Tools, Tips, and Calculators',\n states: ['tx']\n },\n {\n value: 995669,\n label: 'Austin Energy - Value of Solar Residential Rate',\n states: ['tx']\n },\n {\n value: 991536,\n label: 'Texas Gas Service - Residential Energy Efficiency Rebate Program',\n states: ['tx']\n },\n {\n value: 991538,\n label: 'Texas Gas Service - Commercial Energy Efficiency Rebate Program',\n states: ['tx']\n },\n {\n value: 991485,\n label: 'American Electric Power - Standard Offer Demand Response Program',\n states: ['tx']\n },\n {\n value: 995741,\n label: 'CenterPoint Energy Healthcare Energy Efficiency Program',\n states: ['tx']\n },\n {\n value: 995742,\n label: 'CenterPoint Energy Sustainable Schools Program',\n states: ['tx']\n },\n {\n value: 995743,\n label: 'CenterPoint Energy New Homes Program',\n states: ['tx']\n },\n {\n value: 995744,\n label: 'CenterPoint Energy Advanced Residential Lighting Program',\n states: ['tx']\n },\n {\n value: 995745,\n label: 'CenterPoint Energy A/C Distributor Program',\n states: ['tx']\n },\n {\n value: 995746,\n label: \"CenterPoint Energy's Energy Wise Program\",\n states: ['tx']\n },\n {\n value: 995748,\n label: 'CenterPoint Energy Low-Rise Multi Family Program',\n states: ['tx']\n },\n {\n value: 99182,\n label: 'Renewable Generation Requirement',\n states: ['tx']\n },\n {\n value: 9921956,\n label: 'El Paso Electric Company - Energy Library',\n states: ['tx']\n },\n {\n value: 99173,\n label: 'Renewable Energy Systems Property Tax Exemption',\n states: ['tx']\n },\n {\n value: 995858,\n label: 'Garland Power & Light - Solar Rebate Program',\n states: ['tx']\n },\n {\n value: 995893,\n label: 'City of San Antonio - Sec. 35-398. - Renewable Energy Systems',\n states: ['tx']\n },\n {\n value: 9921101,\n label: 'Pedernales Electric Cooperative - My Use Energy Analyzer',\n states: ['tx']\n },\n {\n value: 9982,\n label: 'Solar and Wind Energy Business Franchise Tax Exemption',\n states: ['tx']\n },\n {\n value: 995944,\n label: 'City of San Antonio - Energy Conservation Code',\n states: ['tx']\n },\n {\n value: 991134,\n label: 'LoanSTAR Revolving Loan Program',\n states: ['tx']\n },\n {\n value: 9981,\n label: 'Solar and Wind Energy Device Franchise Tax Deduction',\n states: ['tx']\n },\n {\n value: 9961,\n label: 'San Antonio City Public Service - Distributed Generation Program',\n states: ['tx']\n },\n {\n value: 9915761,\n label: 'Austin Energy - Load Profiler',\n states: ['tx']\n },\n {\n value: 9915763,\n label: 'Austin Energy - Energy Conservation Audit and Disclosure Ordinance',\n states: ['tx']\n },\n {\n value: 991088,\n label: 'Austin Energy - Residential Solar PV Rebate Program',\n states: ['tx']\n },\n {\n value: 9921567,\n label: 'El Paso Electric - Energy Library',\n states: ['tx']\n },\n {\n value: 993082,\n label: 'Oncor Electric Delivery - Commercial and Industrial Rebate Program',\n states: ['tx']\n },\n {\n value: 993168,\n label:\n 'Oncor Electric Delivery - Solar Photovoltaic Standard Offer Program',\n states: ['tx']\n },\n {\n value: 993006,\n label: 'Plano - Renewable Energy Purchasing Policy',\n states: ['tx']\n },\n {\n value: 9915,\n label: 'Fuel Mix and Emissions Disclosure',\n states: ['tx']\n },\n {\n value: 993004,\n label: 'City of Plano - Green Building Policy for Municipal Buildings',\n states: ['tx']\n },\n {\n value: 992988,\n label:\n 'Oncor Electric Delivery - Data Center Energy Management Pilot Program',\n states: ['tx']\n },\n {\n value: 993285,\n label: 'Garland Power & Light - Energy Efficiency Rebate Programs',\n states: ['tx']\n },\n {\n value: 993298,\n label: 'Oncor Electric Delivery - Solar Water Heating Incentive Program',\n states: ['tx']\n },\n {\n value: 993313,\n label: 'Guadalupe Valley Electric Cooperative - Renewable Energy Rebates',\n states: ['tx']\n },\n {\n value: 993322,\n label:\n 'Guadalupe Valley Electric Cooperative - Residential Energy Efficiency Rebate Programs',\n states: ['tx']\n },\n {\n value: 9921624,\n label: 'El Paso Electric - Tools, Tips, and Calculators',\n states: ['tx']\n },\n {\n value: 993346,\n label: 'Entergy Texas - Home Performance with ENERGY STAR Program',\n states: ['tx']\n },\n {\n value: 9921628,\n label: 'El Paso Electric Company - Large Commercial Solutions Program',\n states: ['tx']\n },\n {\n value: 99981,\n label: 'Ethanol and Biodiesel Production Incentive',\n states: ['tx']\n },\n {\n value: 993400,\n label: 'Green Mountain Energy Renewable Rewards Buy-Back Program',\n states: ['tx']\n },\n {\n value: 993419,\n label: 'Texas New Mexico Power Company - Solar PV Pilot Program',\n states: ['tx']\n },\n {\n value: 993429,\n label: 'Entergy Texas - Solar PV Pilot Program',\n states: ['tx']\n },\n {\n value: 993430,\n label:\n 'Denton Municipal Electric - Commercial Standard Offer Rebate Program',\n states: ['tx']\n },\n {\n value: 993432,\n label:\n 'Pedernales Electric Cooperative - Commercial Energy Efficiency Rebate Program',\n states: ['tx']\n },\n {\n value: 992947,\n label: 'Bryan Texas Utilities - Solar Hot Water Rebate Program',\n states: ['tx']\n },\n {\n value: 99897,\n label: 'City of Austin - Renewables Portfolio Standard',\n states: ['tx']\n },\n {\n value: 99805,\n label: 'Interconnection Standards',\n states: ['tx']\n },\n {\n value: 993480,\n label:\n 'Denton Municipal Electric - GreenSense Solar PV/Thermal Rebate Program',\n states: ['tx']\n },\n {\n value: 992946,\n label: 'Bryan Texas Utilities - Solar PV Rebate Program',\n states: ['tx']\n },\n {\n value: 99702,\n label: 'Hansford County Tax Abatement',\n states: ['tx']\n },\n {\n value: 993630,\n label:\n 'New Braunfels Utilities - Energy Efficiency and Water Conservation Rebate Programs',\n states: ['tx']\n },\n {\n value: 993660,\n label:\n 'AEP Texas - Commercial and Industrial Energy Efficiency Rebate Program',\n states: ['tx']\n },\n {\n value: 993661,\n label: 'AEP Texas Central Company - SMART Source Solar PV Rebate Program',\n states: ['tx']\n },\n {\n value: 993669,\n label: 'AEP Texas North Company - SMART Source Solar PV Rebate Program',\n states: ['tx']\n },\n {\n value: 993670,\n label: 'AEP (SWEPCO) - SMART Source Solar PV Program',\n states: ['tx']\n },\n {\n value: 992925,\n label: 'Austin Energy - Commercial New Construction Efficiency Rebates',\n states: ['tx']\n },\n {\n value: 993727,\n label: 'City of Sunset Valley - PV Rebate Program',\n states: ['tx']\n },\n {\n value: 993735,\n label: 'City of Sunset Valley - Solar Water Heating Rebate Program',\n states: ['tx']\n },\n {\n value: 993742,\n label: 'Renewable Energy Demonstration Pilot Program',\n states: ['tx']\n },\n {\n value: 993743,\n label: 'Department of Rural Affairs - Wind Energy for Desalination Program',\n states: ['tx']\n },\n {\n value: 992887,\n label: 'City of Houston - Green Building Policy for Municipal Buildings',\n states: ['tx']\n },\n {\n value: 992885,\n label: 'City of Houston - Green Power Purchasing',\n states: ['tx']\n },\n {\n value: 992884,\n label: 'City of Dallas - Green Energy Purchasing',\n states: ['tx']\n },\n {\n value: 993825,\n label: 'AEP SWEPCO - SCORE Program',\n states: ['tx']\n },\n {\n value: 993827,\n label: 'AEP Texas Central Company - CitySmart Program',\n states: ['tx']\n },\n {\n value: 993828,\n label: 'AEP Texas Central Company - Commercial Solutions Program',\n states: ['tx']\n },\n {\n value: 993829,\n label: 'AEP Texas Central Company - SCORE Program',\n states: ['tx']\n },\n {\n value: 993830,\n label: 'AEP Texas North Company - CitySmart Program',\n states: ['tx']\n },\n {\n value: 993831,\n label: 'AEP (Central, SWEPCO and North) - Commercial Solutions Program',\n states: ['tx']\n },\n {\n value: 993832,\n label: 'AEP Texas North Company - SCORE Program',\n states: ['tx']\n },\n {\n value: 993833,\n label: 'CenterPoint Energy - SCORE and CitySmart Program',\n states: ['tx']\n },\n {\n value: 993834,\n label: 'CenterPoint Energy - SCORE Program',\n states: ['tx']\n },\n {\n value: 993835,\n label: 'Entergy Texas - CitySmart Program',\n states: ['tx']\n },\n {\n value: 993838,\n label: 'El Paso Electric Company - Residential Solutions Program',\n states: ['tx']\n },\n {\n value: 993840,\n label:\n 'El Paso Electric Company - Small Business and Large Commercial Programs',\n states: ['tx']\n },\n {\n value: 992795,\n label: 'CPS Energy - Commercial Energy Efficiency Rebates',\n states: ['tx']\n },\n {\n value: 99530,\n label: 'Big Country Electric Coop - PV Water Pump Sales & Lease Program',\n states: ['tx']\n },\n {\n value: 994917,\n label: 'CoServ - Solar Energy Rebate',\n states: ['tx']\n },\n {\n value: 992794,\n label: 'CPS Energy - Solar PV Rebate Program',\n states: ['tx']\n },\n {\n value: 992797,\n label: 'CPS Energy - Solar Hot Water Rebate Program',\n states: ['tx']\n },\n {\n value: 992779,\n label: 'Advanced Clean Energy Project Grants',\n states: ['tx']\n },\n {\n value: 992766,\n label: 'ENERGY STAR Sales Tax Holiday for Energy-Efficient Products',\n states: ['tx']\n },\n {\n value: 992762,\n label: 'City of Austin - Green Power Purchasing',\n states: ['tx']\n },\n {\n value: 992749,\n label:\n 'City of Austin - Residential and Commercial Green Building Requirements',\n states: ['tx']\n },\n {\n value: 992741,\n label: 'City of Dallas - Green Building Policy for Municipal Buildings',\n states: ['tx']\n },\n {\n value: 992730,\n label: 'Frisco - Municipal Green Building Program',\n states: ['tx']\n },\n {\n value: 992729,\n label:\n 'City of Frisco - Residential and Commercial Green Building Requirements',\n states: ['tx']\n },\n {\n value: 99517,\n label: 'Austin Energy - Home Energy Loans',\n states: ['tx']\n },\n {\n value: 993972,\n label: 'Austin Energy - Commercial Solar PV Incentive Program',\n states: ['tx']\n },\n {\n value: 99513,\n label: 'Austin Energy - Solar Loan Program',\n states: ['tx']\n },\n {\n value: 99511,\n label: 'Austin Energy - Solar Water Heating Rebate',\n states: ['tx']\n },\n {\n value: 993535,\n label:\n 'PACE Financing (Local Option - Contractual Assessments for Energy Efficient Improvements)',\n states: ['tx']\n },\n {\n value: 99337,\n label: 'Mandatory Renewable Energy Educational Materials',\n states: ['tx']\n },\n {\n value: 9917413,\n label:\n 'Texas State Energy Conservation Office - Innovative Energy Demonstration Program',\n states: ['tx']\n },\n {\n value: 994147,\n label: 'CPS Energy - Solartricity Producer Program',\n states: ['tx']\n },\n {\n value: 994176,\n label: 'Green Mountain Energy Renewable Rewards Program',\n states: ['tx']\n },\n {\n value: 994196,\n label: 'El Paso Electric Company - Solar PV Pilot Program',\n states: ['tx']\n },\n {\n value: 994228,\n label:\n 'Bandera Electric Cooperative - Residential Heat Pump Rebate Program',\n states: ['tx']\n },\n {\n value: 9917415,\n label:\n 'Texas State Energy Conservation Office - Texas Industries of the Future Program',\n states: ['tx']\n },\n {\n value: 9915772,\n label:\n 'Brownsville Public Utilities Board - Customer Engineering-Energy Services',\n states: ['tx']\n },\n {\n value: 9917418,\n label: 'Entergy Texas - Datalink',\n states: ['tx']\n },\n {\n value: 9917433,\n label: 'Denton Municipal Electric - Load Profiler',\n states: ['tx']\n },\n {\n value: 9917434,\n label: 'Lower Colorado River Authority - Energy Services',\n states: ['tx']\n },\n {\n value: 9917437,\n label:\n 'Texas Renewable Energy Industries Association - General Info & Links',\n states: ['tx']\n },\n {\n value: 994289,\n label: 'AEP SWEPCO - CitySmart Program',\n states: ['tx']\n },\n {\n value: 9921636,\n label: 'Rio Grande Electric Coop - Interconnection',\n states: ['tx']\n },\n {\n value: 994320,\n label: 'CPS Energy - Small Business Lighting Retrofit Program',\n states: ['tx']\n },\n {\n value: 994322,\n label:\n 'City of San Antonio and CPS Energy - City Lights Small Business Energy Efficiency Program',\n states: ['tx']\n },\n {\n value: 992653,\n label:\n 'Entergy Texas - SCORE, CitySmart, and Commercial Solutions Programs',\n states: ['tx']\n },\n {\n value: 992652,\n label:\n 'Entergy Texas - Residential and Small Commercial Standard Offer Program',\n states: ['tx']\n },\n {\n value: 994350,\n label: 'Texas - Residential Energy-Efficient Appliance Rebates',\n states: ['tx']\n },\n {\n value: 992650,\n label:\n 'CenterPoint Energy - Residential and Small Commercial Efficiency Program',\n states: ['tx']\n },\n {\n value: 992649,\n label:\n 'CenterPoint Energy - Commercial and Industrial Energy Efficiency Programs',\n states: ['tx']\n },\n {\n value: 992648,\n label: 'Oncor Electric Delivery - Home Energy Efficiency Program (Texas)',\n states: ['tx']\n },\n {\n value: 992647,\n label: 'Oncor Electric Delivery - Energy Star Homes Program',\n states: ['tx']\n },\n {\n value: 992631,\n label:\n 'Bryan Texas Utilities - Commercial Energy Efficiency Rebate Program',\n states: ['tx']\n },\n {\n value: 994363,\n label: 'CenterPoint Energy - ENERGY STAR Homes Efficiency Program',\n states: ['tx']\n },\n {\n value: 9921750,\n label: 'Entergy Louisiana - DataLink',\n states: ['tx']\n },\n {\n value: 994470,\n label: 'Garland Power & Light: Commercial Lighting Rebate Program',\n states: ['tx']\n },\n {\n value: 994480,\n label: 'AEP (Central and North) - Residential Energy Efficiency Programs',\n states: ['tx']\n },\n {\n value: 99335,\n label: 'Alternative Energy in New State Construction',\n states: ['tx']\n },\n {\n value: 992473,\n label:\n 'San Antonio City Public Service (CPS Energy) - Renewable Portfolio Goal',\n states: ['tx']\n },\n {\n value: 992464,\n label: 'City of Austin - Green Building Policy for Municipal Buildings',\n states: ['tx']\n },\n {\n value: 9915778,\n label: 'College Station Utilities - Energy Surveys',\n states: ['tx']\n },\n {\n value: 992315,\n label: 'Energy Efficiency Goals and Requirements for Public Entities',\n states: ['tx']\n },\n {\n value: 99334,\n label: 'Certification of Solar Collectors',\n states: ['tx']\n },\n {\n value: 9921793,\n label: 'Xcel Energy - Energy Design Assistance',\n states: ['tx']\n },\n {\n value: 992091,\n label:\n 'Farmers Electric Cooperative - Residential Energy Efficiency Rebate Program',\n states: ['tx']\n },\n {\n value: 992090,\n label:\n 'Guadalupe Valley Electric Cooperative - Conservation Plan 7 Loan Program',\n states: ['tx']\n },\n {\n value: 992089,\n label:\n 'Magic Valley Electric Cooperative - Residential Energy Efficiency Rebate Program',\n states: ['tx']\n },\n {\n value: 9915786,\n label: 'Entergy Texas - Commercial Solutions Program',\n states: ['tx']\n },\n {\n value: 9921794,\n label: 'Xcel Energy - Online Energy Assessment',\n states: ['tx']\n },\n {\n value: 994587,\n label: 'City of Brenham - Net Metering',\n states: ['tx']\n },\n {\n value: 994593,\n label:\n 'El Paso Electric Company - SCORE Program for Counties, Municipalities, and Schools',\n states: ['tx']\n },\n {\n value: 994594,\n label: 'AEP (Central and SWEPCO) - Coolsaver A/C Tune Up or Replacement',\n states: ['tx']\n },\n {\n value: 9921800,\n label: 'Xcel Energy - Energy Audits and Studies',\n states: ['tx']\n },\n {\n value: 994601,\n label:\n 'Oncor Electric Delivery - Government and Education Facilities Program',\n states: ['tx']\n },\n {\n value: 994602,\n label: 'Oncor Electric Delivery - City and School Matching Grant Program',\n states: ['tx']\n },\n {\n value: 9915792,\n label: 'Garland Power & Light - Energy Audit',\n states: ['tx']\n },\n {\n value: 994622,\n label: 'Required Energy Efficiency Goals',\n states: ['tx']\n },\n {\n value: 9917695,\n label:\n 'Brownsville Public Utilities Board - Customer Engineering-Energy Services',\n states: ['tx']\n },\n {\n value: 9915798,\n label: 'New Braunfels Utilities - Energy Audit',\n states: ['tx']\n },\n {\n value: 994658,\n label: 'City of Houston - Energy Efficiency Incentive Program',\n states: ['tx']\n },\n {\n value: 992088,\n label:\n 'Pedernales Electric Cooperative - Residential Energy Efficiency Rebate Program',\n states: ['tx']\n },\n {\n value: 994720,\n label:\n 'City of Houston - Property Tax Abatement for Green Commercial Buildings',\n states: ['tx']\n },\n {\n value: 994748,\n label:\n 'City of San Antonio - Residential and Commercial Green Building Requirements',\n states: ['tx']\n },\n {\n value: 994750,\n label:\n 'City of San Antonio - Green Building Policy for Municipal Buildings',\n states: ['tx']\n },\n {\n value: 994751,\n label: 'City of San Antonio -Tax Abatement Scorecard Program',\n states: ['tx']\n },\n {\n value: 994770,\n label:\n 'CoServ Electric Cooperative - Residential Energy Efficiency Rebate Program',\n states: ['tx']\n },\n {\n value: 994771,\n label:\n 'CoServ Electric Cooperative - Commercial Energy Efficient Lighting Rebate Program',\n states: ['tx']\n },\n {\n value: 994788,\n label: 'CPS Energy - New Commercial Construction Incentives',\n states: ['tx']\n },\n {\n value: 994789,\n label: 'CPS Energy - New Residential Construction Incentives',\n states: ['tx']\n },\n {\n value: 9917705,\n label: 'Denton Municipal Electric - Commercial Energy Services',\n states: ['tx']\n },\n {\n value: 994792,\n label: 'City of Dallas - Green Building Expedited Plan Review',\n states: ['tx']\n },\n {\n value: 994793,\n label:\n 'City of Dallas - Residential and Commercial Green Building Requirements',\n states: ['tx']\n },\n {\n value: 9921802,\n label: 'Xcel Energy - Small Business Lighting',\n states: ['tx']\n },\n {\n value: 994796,\n label:\n 'New Braunfels Utilities - Residential Solar Water Heater Rebate Program',\n states: ['tx']\n },\n {\n value: 9917847,\n label: 'Kerrville Public Utility Board - Business Energy Audits',\n states: ['tx']\n },\n {\n value: 99327,\n label: 'Austin Energy - Net Metering',\n states: ['tx']\n },\n {\n value: 99288,\n label: 'Texas - Net Metering',\n states: ['tx']\n },\n {\n value: 9918961,\n label: 'Wharton County Electric Coop - Energy Audits',\n states: ['tx']\n },\n {\n value: 994864,\n label: 'City of Austin - Zoning Code',\n states: ['tx']\n },\n {\n value: 994880,\n label: 'Solar Rights',\n states: ['tx']\n },\n {\n value: 992087,\n label:\n 'Tri-County Electric Cooperative - Energy Efficient Water Heater Rebate Program',\n states: ['tx']\n },\n {\n value: 9921803,\n label: 'Xcel Energy - Business Energy Advisor',\n states: ['tx']\n },\n {\n value: 994911,\n label:\n 'Harris County - Property Tax Abatement for Green Commercial Buildings',\n states: ['tx']\n },\n {\n value: 994912,\n label: 'Harris County - Green Building Policy for County Buildings',\n states: ['tx']\n },\n {\n value: 994948,\n label: 'Magic Valley Electric Cooperative - ENERGY STAR Builders Program',\n states: ['tx']\n },\n {\n value: 992084,\n label:\n 'United Cooperative Services - Residential Energy Efficiency Rebate Program',\n states: ['tx']\n },\n {\n value: 992039,\n label:\n 'Denton Municipal Electric - Residential GreenSense Energy Efficiency Rebate Program',\n states: ['tx']\n },\n {\n value: 9918980,\n label: 'TXU Energy - iThermostat for Business',\n states: ['tx']\n },\n {\n value: 995008,\n label:\n 'City of Friendswood - Property Tax Abatement for Green Commercial Buildings',\n states: ['tx']\n },\n {\n value: 9918981,\n label: 'TXU Energy - PowerReport',\n states: ['tx']\n },\n {\n value: 9919309,\n label: 'Garland Power & Light - Energy Depot for Business',\n states: ['tx']\n },\n {\n value: 9919311,\n label: 'TXU Energy PowerReport',\n states: ['tx']\n },\n {\n value: 992036,\n label:\n 'CPS Energy (Electric) - Residential Energy Efficiency Rebate Program',\n states: ['tx']\n },\n {\n value: 9919314,\n label: 'AEP Texas Central Company - Commercial Solutions Program',\n states: ['tx']\n },\n {\n value: 995117,\n label: 'City of San Marcos - Distributed Generation Rebate Program',\n states: ['tx']\n },\n {\n value: 995118,\n label: 'City of San Marcos - Energy Efficient Home Rebate Program',\n states: ['tx']\n },\n {\n value: 992029,\n label:\n 'College Station Utilities - Residential Energy Back II Rebate Program',\n states: ['tx']\n },\n {\n value: 992028,\n label: 'Bryan Texas Utilities - Appliance Loan Program',\n states: ['tx']\n },\n {\n value: 995126,\n label: 'AEP (SWEPCO) - Residential Energy Efficiency Programs',\n states: ['tx']\n },\n {\n value: 995139,\n label: 'Austin Energy - Value of Solar Residential Rate',\n states: ['tx']\n },\n {\n value: 995154,\n label: 'Austin Energy - Residential Solar Loan Program',\n states: ['tx']\n },\n {\n value: 9919316,\n label: 'AEP Texas North Company - Commercial Solutions Program',\n states: ['tx']\n },\n {\n value: 992026,\n label: 'Bryan Texas Utilities - Energy Efficiency Loan Program',\n states: ['tx']\n },\n {\n value: 992020,\n label: 'Austin Energy - Energy Miser Vending Products Program',\n states: ['tx']\n },\n {\n value: 995170,\n label: 'AEP (Central, SWEPCO and North) - SCORE Program for Schools',\n states: ['tx']\n },\n {\n value: 995171,\n label: 'AEP (Central and North) - CitySmart Program',\n states: ['tx']\n },\n {\n value: 995176,\n label: 'Sharyland Utilities - Commercial Standard Offer Program',\n states: ['tx']\n },\n {\n value: 995177,\n label: 'Sharyland Utilities - Residential Standard Offer Program',\n states: ['tx']\n },\n {\n value: 9919669,\n label: 'Mid South Synergy - Business Energy Advisor',\n states: ['tx']\n },\n {\n value: 992016,\n label: 'Austin Energy - Free Home Energy Improvements Program',\n states: ['tx']\n },\n {\n value: 992015,\n label: 'Austin Energy - Multi-Family Energy Efficiency Rebate Program',\n states: ['tx']\n },\n {\n value: 995221,\n label: 'City of Plano - Smart Energy Loan Program',\n states: ['tx']\n },\n {\n value: 9921806,\n label: 'Xcel Energy - Business Solutions',\n states: ['tx']\n },\n {\n value: 99727,\n label: 'Residential Energy Conservation Subsidy Exclusion (Corporate)',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99729,\n label: 'Renewable Energy Production Incentive (REPI)',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99722,\n label: 'USDA Rural Housing Service Loans',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 991709,\n label: 'Federal Appliance Standards',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9917041,\n label: 'The Hydraulic Institute',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9917045,\n label: \"Non-Ferrous Founders' Society - Energy Information\",\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 992393,\n label: 'Energy Goals and Standards for Federal Agencies',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 995681,\n label:\n 'USDA - Rural Energy for America Program (REAP) Energy Audit and Renewable Energy Development Assistance (EA/REDA) Program',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99726,\n label: 'Deductions for Clean-Fuel Vehicles and Refueling Property',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99724,\n label: 'Deductions for Clean-Fuel Vehicles and Refueling Property',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 992510,\n label: 'Clean Renewable Energy Bonds (CREBs)',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 992511,\n label: 'USDA - Rural Energy for America Program (REAP) Loan Guarantees',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99734,\n label: 'Renewable Electricity Production Tax Credit (PTC)',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99736,\n label: 'Alcohol Fuel Credit',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99737,\n label: 'Small Business Administration Loan Programs',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99742,\n label: 'Energy-Efficient Mortgages',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 995313,\n label: 'USDA - Biorefinery Assistance Program',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 991045,\n label: 'Weatherization Assistance Program',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 995631,\n label: 'FHA PowerSaver Loan Program',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9915956,\n label: 'E-Source - Business Energy Advisor',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9915955,\n label:\n 'Association of Energy Services Professionals - Brown Bag Energy Seminars',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 991060,\n label: 'Green Power Purchasing Goal for Federal Government',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99666,\n label: 'Residential Energy Conservation Subsidy Exclusion (Personal)',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 994359,\n label: 'USDA - High Energy Cost Grant Program',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9917967,\n label:\n 'U.S. Department of Agriculture - Bioenergy Program for Advanced Biofuels',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99112,\n label:\n 'Tax-Exempt Financing for Green Buildings, Renewable Energy & Brownfield Redevelopment',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9915954,\n label: 'Association of Energy Engineers - Energy Training Program',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 991096,\n label: 'Value-Added Producer Grant Program',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9915953,\n label: 'TPC Trainco - Industrial Energy Efficiency Training',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9922035,\n label: 'Southeast Energy Efficiency Alliance (SEEA) - Resource Center',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9917566,\n label:\n 'U.S. Department of the Treasury - Payments for Specified Energy Property in Lieu of Tax Credits',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9917544,\n label: 'U.S. Environmental Protection Agency - ENERGY STAR Training',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 995780,\n label: 'Fannie Mae Green Initiative- Loan Program',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99669,\n label: 'Federal Excise Tax Exemption for Gasohol',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 991235,\n label: 'Residential Renewable Energy Tax Credit',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99348,\n label: 'Conservation Security Program (CSP) Production Incentive',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 992774,\n label: 'Interconnection Standards for Small Generators',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9921219,\n label: 'CLEARresults',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9920736,\n label: 'Gaz Métropolitain & Co., LP - Feasibility Studies',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99676,\n label: 'Modified Accelerated Cost-Recovery System (MACRS)',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99693,\n label: '2003 Climate Change Fuel Cell Buy-Down Program',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 991271,\n label: 'Energy-Efficient Commercial Buildings Tax Deduction',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 991272,\n label: 'Energy-Efficient New Homes Tax Credit for Home Builders',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9920513,\n label: 'North Carolina Solar Center - Education, Analysis, and Modeling',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 991273,\n label: 'Energy-Efficient Appliance Manufacturing Tax Credit',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 991274,\n label: 'Residential Energy Efficiency Tax Credit',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 991280,\n label: 'Veterans Housing Guaranteed and Insured Loans',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 991616,\n label: 'Energy Goals and Standards for Federal Government',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99658,\n label: 'Business Energy Investment Tax Credit (ITC)',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99700,\n label: 'HUD Energy Efficient Mortgages',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9921075,\n label: 'Dominion Hope - West Virginia - Business Energy Center',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99917,\n label: 'USDA - Rural Energy for America Program (REAP) Grants',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9917056,\n label: 'Energy Sciences - Energy Management Services',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9916403,\n label:\n 'Touchstone Energy Cooperatives - Commercial/Business Energy Advisor',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9917051,\n label: 'Energy Solutions Center - Industrial Energy Efficiency Consortium',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 993280,\n label: 'U.S. Department of Treasury - Renewable Energy Grants',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9916924,\n label:\n 'National Center for Hydrogen Technology, University of North Dakota - Education and Outreach',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 993279,\n label: 'Qualifying Advanced Energy Manufacturing Investment Tax Credit',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9917050,\n label: 'Edison Electric Institute - Energy Efficiency',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9917049,\n label:\n 'American Public Power Association - Energy Efficiency Resource Central',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99918,\n label: 'Tribal Energy Program Grant',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9917047,\n label: 'Original Equipment Suppliers Association - Resources',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 993071,\n label: 'U.S. Department of Energy - Loan Guarantee Program',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 995725,\n label: 'Weatherization Assistance Program (WAP)',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 995712,\n label: 'Low Income Home Energy Assistance Program (LIHEAP)',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 9917039,\n label:\n 'U.S. Environmental Protection Agency - ENERGY STAR Guidelines for Energy Management',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 993098,\n label: 'Qualified Energy Conservation Bonds (QECBs)',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 99718,\n label: 'Energy Star Financing and Mortgages',\n states: ['ma', 'nj', 'tx', 'ct']\n },\n {\n value: 995316,\n label: 'USDA - Repowering Assistance Biorefinery Program',\n states: ['ma', 'nj', 'tx', 'ct']\n }\n].filter(incentive => available.includes(incentive.value));\n","import { computed, observable, action, makeObservable, reaction } from 'mobx';\nimport { debounce } from 'debounce';\nimport agent from '../lib/agent';\n\nclass Store {\n threads = [];\n projectId = null;\n\n addMessageToThread = (threadId, messageOptions) => {\n const newThreads = [...this.threads];\n const threadIndex = newThreads.findIndex(thread => thread.id === threadId);\n if (threadIndex !== -1) {\n const id = `${Math.round(Math.random() * 900000)}`;\n newThreads[threadIndex].items.push({\n id,\n audience: messageOptions.audience,\n name: messageOptions.user.email,\n date: messageOptions.date || 'now',\n user: {\n name: messageOptions.user.email,\n id: messageOptions.user.id,\n email: messageOptions.user.email\n },\n group: {\n name: messageOptions.user.group.name,\n type: 'vendor',\n id: messageOptions.user.group.id\n },\n type: messageOptions.type,\n content: messageOptions.message\n });\n }\n };\n\n updateThread = async (threadId, updatedData) => {\n const newThreads = [...this.threads];\n\n const index = newThreads.findIndex(thread => thread.id === threadId);\n const thread = newThreads[index];\n newThreads[index] = {\n ...thread,\n image: updatedData.highlight.content.image,\n highlight: updatedData.highlight\n };\n\n // FIXME set image only for thread\n newThreads[index].items[0].image = updatedData.highlight.content.image;\n\n this.threads = newThreads;\n };\n\n addThread = async messageOptions => {\n const id = `${Math.random()}t_bla`;\n const date = `now`;\n\n const thread = {\n project_id: messageOptions.project_id,\n parent_id: messageOptions.parent_id,\n highlight: messageOptions.highlight,\n image: messageOptions.image,\n audience: messageOptions.audience,\n id,\n items: [\n {\n id: `${id}-item`,\n user: {\n name: messageOptions.user.email,\n id: messageOptions.user.id,\n email: messageOptions.user.email\n },\n name: messageOptions.user.email,\n date,\n group: messageOptions.user.group,\n type: messageOptions.type,\n content: messageOptions.message\n }\n ]\n };\n\n const newThreads = [...this.threads, thread];\n this.threads = newThreads;\n return id;\n };\n\n get issueCount() {\n return this.threads.filter(thread => !thread.closed).length;\n }\n\n resolveThread = threadId => {\n const newThreads = [...this.threads];\n const threadIndex = newThreads.findIndex(thread => thread.id === threadId);\n if (threadIndex !== -1) {\n newThreads[threadIndex].closed = Math.floor(new Date() / 1000);\n this.threads = newThreads;\n }\n };\n\n reset = () => {\n this.threads = [];\n };\n\n loadChat = async () => {\n if (this.projectId) {\n const response = await agent.Project.getChat(this.projectId);\n this.threads = response.data.data;\n }\n };\n\n update = async () => {\n await agent.Project.updateChat(this.projectId, this.threads);\n };\n\n setProjectId = async projectId => {\n this.projectId = projectId;\n };\n\n constructor() {\n makeObservable(this, {\n threads: observable,\n projectId: observable,\n addMessageToThread: action,\n resolveThread: action,\n issueCount: computed,\n addThread: action,\n update: action,\n reset: action,\n setProjectId: action\n });\n }\n}\n\nconst store = new Store();\n\nconst debouncedUpdate = debounce(store.update, 200);\n\nreaction(\n () => JSON.stringify(store.threads),\n () => {\n debouncedUpdate();\n }\n);\n\nreaction(\n () => `${store.projectId}`,\n () => {\n store.loadChat();\n }\n);\n\nexport default store;\n","import { observable, action, computed, makeObservable } from 'mobx';\nimport TaskStore from './TaskStore';\n\nclass Store {\n building_id = null;\n description = '';\n done = false;\n files = [];\n groupId = null;\n id = null;\n isLoading = false;\n project_id = null;\n status = null;\n title = 'needs_action';\n users = [];\n\n clearTask = () => {\n this.building_id = null;\n this.description = '';\n this.status = 'needs_action';\n this.groupId = null;\n this.done = false;\n this.files = [];\n this.id = null;\n this.isLoading = false;\n this.project_id = null;\n this.title = '';\n this.users = [];\n };\n\n loadTask = async taskId => {\n this.isLoading = true;\n const task = await TaskStore.loadTask(taskId);\n this.building_id = task.building_id;\n this.description = task.description;\n this.done = task.done;\n this.status = task.status;\n this.files = task.files;\n this.groupId = task.group_id;\n this.id = task.id;\n this.isLoading = false;\n this.project_id = task.project_id;\n this.status = task.status;\n this.title = task.title;\n this.users = task.users;\n };\n\n deleteTask = async taskId => {\n await TaskStore.deleteTask(taskId);\n this.clearTask();\n };\n\n change = (name, value) => {\n this[name] = value;\n };\n\n setFiles = files => {\n this.files = files;\n };\n\n setDescription = description => {\n this.description = description;\n };\n\n setGroup = groupId => {\n this.groupId = groupId;\n };\n\n constructor() {\n makeObservable(this, {\n building_id: observable,\n description: observable,\n done: observable,\n files: observable,\n groupId: observable,\n id: observable,\n isLoading: observable,\n project_id: observable,\n status: observable,\n title: observable,\n users: observable,\n clearTask: action,\n loadTask: action,\n deleteTask: action,\n change: action,\n setFiles: action,\n setDescription: action,\n setGroup: action,\n userIds: computed,\n fileIds: computed,\n setFileId: action,\n submit: action\n });\n }\n\n get userIds() {\n return this.users.map(u => u.id);\n }\n\n get fileIds() {\n return this.files.map(u => u.id);\n }\n\n setFileId = (fileTempId, fileId) => {\n const index = this.files.findIndex(file => file.id === fileTempId);\n if (index > -1) {\n this.files[index].id = fileId;\n }\n };\n\n submit = () => {\n const data = {\n description: this.description,\n status: this.status,\n title: this.title,\n users: this.users\n };\n\n if (this.id) return TaskStore.update(this.id, data);\n return TaskStore.create({\n ...data,\n group_id: this.groupId,\n building_id: this.building_id,\n project_id: this.project_id\n });\n };\n}\n\nconst store = new Store();\nexport default store;\n","import { observable, action, makeObservable } from 'mobx';\nimport agent from '../lib/agent';\n\nclass Store {\n questions = [\n {\n id: 'tax_liability',\n text: 'Do you have a tax liability?',\n type: 'checkbox',\n value: false\n },\n {\n id: 'non_profit',\n text: 'Is the company a non-profit ?',\n type: 'checkbox',\n value: false\n },\n {\n id: 'is_esco',\n text: 'Are you on an ESCO?',\n type: 'checkbox',\n value: false\n },\n {\n id: 'has_nat_gas',\n text: 'Do you have existing Natural Gas infrastructure?',\n type: 'checkbox',\n value: false\n },\n\n {\n id: 'gas_utility',\n text: 'Gas Utility Name',\n type: 'text',\n value: ''\n },\n {\n id: 'electric_rate',\n text: 'Current Electric rate',\n type: 'text',\n value: ''\n },\n {\n id: 'gas_rate',\n text: 'Current Gas rate',\n type: 'text',\n value: ''\n }\n ];\n\n setAnswer = (questionId, value) => {\n const idx = this.questions.findIndex(q => q.id === questionId);\n const question = this.questions[idx];\n\n if (question.type === 'checkbox') {\n this.questions[idx].value = Boolean(value);\n } else {\n this.questions[idx].value = value;\n }\n };\n\n setAnswers = answers => {\n if (!answers) {\n return;\n }\n\n answers.forEach(answer => {\n this.setAnswer(answer.id, answer.value);\n });\n };\n\n addSurvey = async projectId => {\n const answers = this.questions.map(({ id, value, checked }) => ({\n id,\n value,\n checked\n }));\n const { data } = await agent.Survey.addSurvey(projectId, {\n data: answers\n });\n return data;\n };\n\n constructor() {\n makeObservable(this, {\n questions: observable,\n setAnswer: action,\n setAnswers: action,\n addSurvey: action\n });\n }\n}\n\nconst store = new Store();\nexport default store;\n","import { observable, action, computed, reaction, makeObservable } from 'mobx';\nimport { debounce } from 'debounce';\nimport {\n ViewMode,\n DrawLineStringMode,\n DrawPointMode,\n DrawPolygonMode,\n ModifyMode,\n RotateMode,\n ElevationMode,\n TranslateMode\n} from 'nebula.gl';\nimport ProjectStore from './ProjectStore';\nimport UserStore from './UserStore';\nimport ProjectDetailStore from './ProjectDetailStore';\nimport agent from '../lib/agent';\n\nconst INITIAL_VIEW_STATE = {\n latitude: 41.8825763,\n longitude: -71.3629619,\n zoom: 17,\n maxZoom: 18,\n pitch: 50,\n bearing: 0\n};\n\nconst MODES = [\n {\n id: 'drawPolyline',\n text: 'Draw Polyline',\n handler: new DrawLineStringMode()\n },\n { id: 'drawPolygon', text: 'Draw Polygon', handler: new DrawPolygonMode() },\n { id: 'drawBuilding', text: 'Draw Building', handler: new DrawPolygonMode() },\n { id: 'drawText', text: 'Add Text', handler: new DrawPointMode() },\n { id: 'drawPoint', text: 'Draw Polygon', handler: new DrawPointMode() },\n { id: 'view', text: 'Edit Feature', handler: new ViewMode() },\n { id: 'rotate', text: 'Rotate', handler: new RotateMode() },\n { id: 'elevation', text: 'Elevation', handler: new ElevationMode() },\n { id: 'translate', text: 'Translate', handler: new TranslateMode() },\n { id: 'modify', text: 'Edit Feature', handler: new ModifyMode() }\n];\n\nclass EditorStore {\n viewState = INITIAL_VIEW_STATE;\n isLoadingFeatures = false;\n pickedResults = new Set([]);\n resultMap = new Map();\n currentDataset = null;\n deletedFeatures = [];\n currentLayer = null;\n datasets = [];\n editMode = MODES.find(mode => mode.id === 'view');\n features = [];\n modal = false;\n mapBounds = null;\n layers = [];\n arcGISLayers = [];\n show3dTiles = false;\n\n searchResults = [];\n searchTerm = null;\n\n getFeature = featureId => {\n return this.features.find(feature => feature.id === featureId);\n };\n\n setSearchTerm = term => {\n this.searchTerm = term;\n };\n\n setSearchResults = results => {\n this.searchResults = results;\n };\n\n setViewState = viewState => {\n this.viewState = viewState;\n };\n\n search = async () => {\n // TODO remove groupId\n const groupId = UserStore.user?.group.id;\n const response = await agent.Dataset.search(this.searchTerm, groupId);\n this.setSearchResults(response.data.data);\n };\n\n reset = () => {\n this.currentDataset = null;\n this.editMode = MODES.find(mode => mode.id === 'view');\n this.features = [];\n this.modal = false;\n };\n\n deleteFeature = async id => {\n this.deletedFeatures = [...this.deletedFeatures, id];\n agent.Dataset.deleteFeature(this.currentDataset.id, id);\n const resultMap = new Map(this.resultMap);\n resultMap.delete(id);\n this.resultMap = resultMap;\n this.features = this.features.filter(feature => feature.id !== id);\n // ProjectDetailStore.removeBuilding(id.replace('pb_', ''));\n };\n\n getLayers = async () => {\n if (!this.currentDataset?.id) return;\n const response = await agent.Dataset.getLayers(this.currentDataset.id);\n\n this.layers = response.data.data;\n };\n\n constructor() {\n makeObservable(this, {\n show3dTiles: observable,\n viewState: observable,\n isLoadingFeatures: observable,\n pickedResults: observable,\n resultMap: observable,\n currentDataset: observable,\n arcGISLayers: observable,\n deletedFeatures: observable,\n currentLayer: observable,\n datasets: observable,\n editMode: observable,\n features: observable,\n modal: observable,\n mapBounds: observable,\n layers: observable,\n searchResults: observable,\n searchTerm: observable,\n getFeature: action,\n setSearchTerm: action,\n setSearchResults: action,\n setViewState: action,\n search: action,\n reset: action,\n deleteFeature: action,\n getLayers: action,\n addFeature: action,\n deleteAll: action,\n setFeatures: action,\n updateLayer: action,\n updateDataset: action,\n featureCollection: computed,\n projectId: computed,\n datasetId: computed,\n getDatasetFeatures: action,\n getLayerFeatures: action,\n setCurrentLayer: action,\n setModal: action,\n setMapBounds: action,\n updateFeature: action,\n createFeature: action,\n getDatasets: action,\n createDataset: action,\n createLayer: action,\n deleteDataset: action,\n deleteLayer: action,\n setCurrentDataset: action,\n setCurrentDatasetLayers: action,\n setCurrentDatasetName: action,\n getCurrentDataset: action,\n setSubdomains: action,\n setEditMode: action,\n filterResults: action\n });\n }\n\n addFeature(feature) {\n this.features.push(feature);\n }\n\n deleteAll = () => {\n // this.features.clear();\n };\n\n setFeatures = features => {\n this.features = features;\n };\n\n updateLayer = async (datasetId, layerId, data) => {\n const newLayers = [...this.layers];\n const index = newLayers.findIndex(layer => layer.id === layerId);\n newLayers[index] = {\n ...newLayers[index],\n ...data\n };\n\n this.layers = newLayers;\n await agent.Dataset.updateLayer(datasetId, layerId, data);\n };\n\n updateDataset = async (datasetId, data) => {\n await agent.Dataset.updateDataset(datasetId, data);\n };\n\n get featureCollection() {\n return {\n type: 'FeatureCollection',\n features: [...this.features]\n };\n }\n\n get projectId() {\n if (this.datasetId?.startsWith('pr_')) {\n return this.currentDataset?.id?.replace('pr_', '');\n }\n return null;\n }\n\n get datasetId() {\n return this.currentDataset?.id;\n }\n\n getDatasetFeatures = async () => {\n if (!this.currentDataset) return;\n const response = await agent.Dataset.getFeatures(this.currentDataset.id);\n this.features = [];\n this.resultMap = new Map();\n\n this.setFeatures(response.data.data);\n this.filterResults({\n layerId: this.currentLayer?.id\n });\n\n return response.data.data;\n };\n\n getLayerFeatures = async layerId => {\n const response = await agent.Dataset.getFeatures(\n this.currentDataset.id,\n layerId\n );\n this.features = response.data.data;\n return response.data.data;\n };\n\n setCurrentLayer = async (datasetId, layerId) => {\n if (this.currentLayer?.id === layerId) return;\n\n const response = await agent.Dataset.getLayer(datasetId, layerId);\n if (this.currentDataset?.id !== response.data.data.dataset.id) {\n this.currentDataset = response.data.data.dataset;\n }\n\n this.currentLayer = response.data.data;\n return this.currentLayer;\n };\n\n setModal = modal => {\n this.modal = modal;\n };\n\n setMapBounds = bounds => {\n this.mapBounds = bounds;\n };\n\n updateFeature = async feature => {\n // axios.post(`/dataset/${datasetId}/${feature.id}`, feature);\n agent.Dataset.updateFeature(this.datasetId, feature);\n };\n\n setArcGISLayers = layers => {\n this.arcGISLayers = layers;\n };\n\n createFeature = async feature => {\n const { datasetId } = this;\n if (datasetId === 'create_project') {\n return;\n }\n\n if (this.currentDataset.type === 'project') {\n const data = await ProjectStore.createProjectBuilding(datasetId, feature);\n ProjectDetailStore.addBuilding(data);\n return;\n }\n\n agent.Dataset.createFeature(datasetId, feature);\n };\n\n getDatasets = async () => {\n const { data } = await agent.Dataset.get();\n this.datasets = data.data;\n };\n\n createDataset = async options => {\n const response = await agent.Dataset.createDataset(options);\n this.getDatasets();\n return response.data.data;\n };\n\n createLayer = async data => {\n await agent.Dataset.createLayer(this.currentDataset.id, data);\n this.getLayers(this.currentDataset.id);\n };\n\n deleteDataset = async datasetId => {\n this.datasets = this.datasets.filter(dataset => dataset.id !== datasetId);\n await agent.Dataset.deleteDataset(datasetId);\n };\n\n deleteLayer = async (datasetId, layerId) => {\n const newLayers = [...this.layers].filter(layer => layer.id !== layerId);\n this.layers = newLayers;\n await agent.Dataset.deleteLayer(datasetId, layerId);\n };\n\n setCurrentDataset = async dataset => {\n // console.log('setCurrentDataset', dataset);\n if (typeof dataset === 'string') {\n if (dataset === this.currentDataset?.id) {\n return;\n }\n // console.log('setCurrentDataset1');\n const response = await agent.Dataset.getDataset(dataset);\n // console.log('setCurrentDataset2', response.data.data);\n this.currentDataset = response.data.data;\n return;\n }\n if (this.currentDataset?.id !== dataset.id) {\n this.deleteAll();\n }\n\n this.currentDataset = dataset;\n };\n\n setCurrentDatasetLayers = datasetIds => {\n this.currentDataset = {\n ...this.currentDataset,\n datasets: datasetIds\n };\n };\n\n setCurrentDatasetName = async name => {\n this.currentDataset = {\n ...this.currentDataset,\n name\n };\n\n const newDatasets = [...this.datasets];\n const index = newDatasets.findIndex(\n dataset => dataset.id === this.currentDataset.id\n );\n if (index > -1) newDatasets[index].name = name;\n this.datasets = newDatasets;\n\n await agent.Dataset.updateDataset(this.currentDataset.id, {\n name\n });\n };\n\n getCurrentDataset = () => {\n return this.datasets.find(d => d.current === true);\n };\n\n setSubdomains = subdomains => {\n this.currentDataset.subdomains = subdomains;\n };\n\n setEditMode = modeId => {\n const mode = MODES.find(mode => mode.id === modeId);\n if (!mode) return MODES.find(mode => mode.id === 'view');\n this.editMode = mode;\n };\n\n filterResults = ({ layerId }) => {\n const arr = this.features\n .filter(feature => {\n // filter out additional datasets\n if (feature.dataset_id !== this.datasetId) return false;\n if (layerId === 'uncategorized' || layerId === null)\n return (\n feature.layer_id === null || feature.layer_id === 'uncategorized'\n );\n return feature.layer_id === layerId;\n })\n .map(feature => {\n return [feature.id, feature];\n });\n\n this.resultMap = new Map(arr);\n };\n\n setShow3dTiles = show3dTiles => {\n this.show3dTiles = show3dTiles;\n };\n}\n\nconst store = new EditorStore();\n\nreaction(\n () => JSON.stringify([store.searchTerm]),\n debounce(() => {\n if (store.searchTerm) store.search();\n else store.setSearchResults([]);\n }, 200)\n);\n\nreaction(\n () => JSON.stringify([store.currentDataset]),\n () => {\n if (store.currentDataset?.id) store.getLayers(store.currentDataset?.id);\n }\n);\n\nreaction(\n () => store.datasetId,\n () => {\n if (store.datasetId && store.datasetId !== 'create_project')\n store.getDatasetFeatures();\n }\n);\n\nreaction(\n () => JSON.stringify(store.currentLayer?.id),\n () => {\n store.filterResults({\n layerId: store.currentLayer?.id\n });\n }\n);\n\nexport default store;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"ArrowStyles\", {\n enumerable: true,\n get: function get() {\n return _style.ArrowStyles;\n }\n});\nObject.defineProperty(exports, \"DEFAULT_ARROWS\", {\n enumerable: true,\n get: function get() {\n return _style.DEFAULT_ARROWS;\n }\n});\nObject.defineProperty(exports, \"MAX_ARROWS\", {\n enumerable: true,\n get: function get() {\n return _style.MAX_ARROWS;\n }\n});\nObject.defineProperty(exports, \"SELECTION_TYPE\", {\n enumerable: true,\n get: function get() {\n return _deckDrawer.SELECTION_TYPE;\n }\n});\nObject.defineProperty(exports, \"Feature\", {\n enumerable: true,\n get: function get() {\n return _feature[\"default\"];\n }\n});\nObject.defineProperty(exports, \"LayerMouseEvent\", {\n enumerable: true,\n get: function get() {\n return _layerMouseEvent[\"default\"];\n }\n});\nObject.defineProperty(exports, \"NebulaLayer\", {\n enumerable: true,\n get: function get() {\n return _nebulaLayer[\"default\"];\n }\n});\nObject.defineProperty(exports, \"JunctionsLayer\", {\n enumerable: true,\n get: function get() {\n return _junctionsLayer[\"default\"];\n }\n});\nObject.defineProperty(exports, \"TextsLayer\", {\n enumerable: true,\n get: function get() {\n return _textsLayer[\"default\"];\n }\n});\nObject.defineProperty(exports, \"SegmentsLayer\", {\n enumerable: true,\n get: function get() {\n return _segmentsLayer[\"default\"];\n }\n});\nObject.defineProperty(exports, \"NebulaCore\", {\n enumerable: true,\n get: function get() {\n return _nebula[\"default\"];\n }\n});\nObject.defineProperty(exports, \"PROJECTED_PIXEL_SIZE_MULTIPLIER\", {\n enumerable: true,\n get: function get() {\n return _constants.PROJECTED_PIXEL_SIZE_MULTIPLIER;\n }\n});\nObject.defineProperty(exports, \"toDeckColor\", {\n enumerable: true,\n get: function get() {\n return _utils.toDeckColor;\n }\n});\nObject.defineProperty(exports, \"EditableGeoJsonLayer\", {\n enumerable: true,\n get: function get() {\n return _layers.EditableGeoJsonLayer;\n }\n});\nObject.defineProperty(exports, \"SelectionLayer\", {\n enumerable: true,\n get: function get() {\n return _layers.SelectionLayer;\n }\n});\nObject.defineProperty(exports, \"ElevatedEditHandleLayer\", {\n enumerable: true,\n get: function get() {\n return _layers.ElevatedEditHandleLayer;\n }\n});\nObject.defineProperty(exports, \"PathOutlineLayer\", {\n enumerable: true,\n get: function get() {\n return _layers.PathOutlineLayer;\n }\n});\nObject.defineProperty(exports, \"PathMarkerLayer\", {\n enumerable: true,\n get: function get() {\n return _layers.PathMarkerLayer;\n }\n});\nObject.defineProperty(exports, \"GeoJsonEditMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.GeoJsonEditMode;\n }\n});\nObject.defineProperty(exports, \"ModifyMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.ModifyMode;\n }\n});\nObject.defineProperty(exports, \"ResizeCircleMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.ResizeCircleMode;\n }\n});\nObject.defineProperty(exports, \"TranslateMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.TranslateMode;\n }\n});\nObject.defineProperty(exports, \"ScaleMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.ScaleMode;\n }\n});\nObject.defineProperty(exports, \"RotateMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.RotateMode;\n }\n});\nObject.defineProperty(exports, \"DuplicateMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.DuplicateMode;\n }\n});\nObject.defineProperty(exports, \"ExtendLineStringMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.ExtendLineStringMode;\n }\n});\nObject.defineProperty(exports, \"SplitPolygonMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.SplitPolygonMode;\n }\n});\nObject.defineProperty(exports, \"ExtrudeMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.ExtrudeMode;\n }\n});\nObject.defineProperty(exports, \"ElevationMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.ElevationMode;\n }\n});\nObject.defineProperty(exports, \"TransformMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.TransformMode;\n }\n});\nObject.defineProperty(exports, \"DrawPointMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.DrawPointMode;\n }\n});\nObject.defineProperty(exports, \"DrawLineStringMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.DrawLineStringMode;\n }\n});\nObject.defineProperty(exports, \"DrawPolygonMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.DrawPolygonMode;\n }\n});\nObject.defineProperty(exports, \"DrawRectangleMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.DrawRectangleMode;\n }\n});\nObject.defineProperty(exports, \"DrawSquareMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.DrawSquareMode;\n }\n});\nObject.defineProperty(exports, \"DrawRectangleFromCenterMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.DrawRectangleFromCenterMode;\n }\n});\nObject.defineProperty(exports, \"DrawSquareFromCenterMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.DrawSquareFromCenterMode;\n }\n});\nObject.defineProperty(exports, \"DrawCircleByDiameterMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.DrawCircleByDiameterMode;\n }\n});\nObject.defineProperty(exports, \"DrawCircleFromCenterMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.DrawCircleFromCenterMode;\n }\n});\nObject.defineProperty(exports, \"DrawEllipseByBoundingBoxMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.DrawEllipseByBoundingBoxMode;\n }\n});\nObject.defineProperty(exports, \"DrawEllipseUsingThreePointsMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.DrawEllipseUsingThreePointsMode;\n }\n});\nObject.defineProperty(exports, \"DrawRectangleUsingThreePointsMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.DrawRectangleUsingThreePointsMode;\n }\n});\nObject.defineProperty(exports, \"Draw90DegreePolygonMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.Draw90DegreePolygonMode;\n }\n});\nObject.defineProperty(exports, \"DrawPolygonByDraggingMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.DrawPolygonByDraggingMode;\n }\n});\nObject.defineProperty(exports, \"ImmutableFeatureCollection\", {\n enumerable: true,\n get: function get() {\n return _editModes.ImmutableFeatureCollection;\n }\n});\nObject.defineProperty(exports, \"ViewMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.ViewMode;\n }\n});\nObject.defineProperty(exports, \"MeasureDistanceMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.MeasureDistanceMode;\n }\n});\nObject.defineProperty(exports, \"MeasureAreaMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.MeasureAreaMode;\n }\n});\nObject.defineProperty(exports, \"MeasureAngleMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.MeasureAngleMode;\n }\n});\nObject.defineProperty(exports, \"CompositeMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.CompositeMode;\n }\n});\nObject.defineProperty(exports, \"SnappableMode\", {\n enumerable: true,\n get: function get() {\n return _editModes.SnappableMode;\n }\n});\n\nvar _style = require(\"./lib/style\");\n\nvar _deckDrawer = require(\"./lib/deck-renderer/deck-drawer\");\n\nvar _feature = _interopRequireDefault(require(\"./lib/feature\"));\n\nvar _layerMouseEvent = _interopRequireDefault(require(\"./lib/layer-mouse-event\"));\n\nvar _nebulaLayer = _interopRequireDefault(require(\"./lib/nebula-layer\"));\n\nvar _junctionsLayer = _interopRequireDefault(require(\"./lib/layers/junctions-layer\"));\n\nvar _textsLayer = _interopRequireDefault(require(\"./lib/layers/texts-layer\"));\n\nvar _segmentsLayer = _interopRequireDefault(require(\"./lib/layers/segments-layer\"));\n\nvar _nebula = _interopRequireDefault(require(\"./lib/nebula\"));\n\nvar _constants = require(\"./lib/constants\");\n\nvar _utils = require(\"./lib/utils\");\n\nvar _layers = require(\"@nebula.gl/layers\");\n\nvar _editModes = require(\"@nebula.gl/edit-modes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFHQTs7QUFNQTs7QUFPQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEFycm93U3R5bGVzLCBERUZBVUxUX0FSUk9XUywgTUFYX0FSUk9XUyB9IGZyb20gJy4vbGliL3N0eWxlJztcbmV4cG9ydCB7IFNFTEVDVElPTl9UWVBFIH0gZnJvbSAnLi9saWIvZGVjay1yZW5kZXJlci9kZWNrLWRyYXdlcic7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgRmVhdHVyZSB9IGZyb20gJy4vbGliL2ZlYXR1cmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBMYXllck1vdXNlRXZlbnQgfSBmcm9tICcuL2xpYi9sYXllci1tb3VzZS1ldmVudCc7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgTmVidWxhTGF5ZXIgfSBmcm9tICcuL2xpYi9uZWJ1bGEtbGF5ZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBKdW5jdGlvbnNMYXllciB9IGZyb20gJy4vbGliL2xheWVycy9qdW5jdGlvbnMtbGF5ZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBUZXh0c0xheWVyIH0gZnJvbSAnLi9saWIvbGF5ZXJzL3RleHRzLWxheWVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU2VnbWVudHNMYXllciB9IGZyb20gJy4vbGliL2xheWVycy9zZWdtZW50cy1sYXllcic7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgTmVidWxhQ29yZSB9IGZyb20gJy4vbGliL25lYnVsYSc7XG5cbmV4cG9ydCB7IFBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIgfSBmcm9tICcuL2xpYi9jb25zdGFudHMnO1xuXG4vLyBVdGlsc1xuZXhwb3J0IHsgdG9EZWNrQ29sb3IgfSBmcm9tICcuL2xpYi91dGlscyc7XG5cbi8vIFR5cGVzXG5leHBvcnQgdHlwZSB7IENvbG9yLCBTdHlsZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBNb3ZlZCB0byBAbmVidWxhLmdsL2xheWVyc1xuZXhwb3J0IHsgRWRpdGFibGVHZW9Kc29uTGF5ZXIgfSBmcm9tICdAbmVidWxhLmdsL2xheWVycyc7XG5leHBvcnQgeyBTZWxlY3Rpb25MYXllciB9IGZyb20gJ0BuZWJ1bGEuZ2wvbGF5ZXJzJztcbmV4cG9ydCB7IEVsZXZhdGVkRWRpdEhhbmRsZUxheWVyIH0gZnJvbSAnQG5lYnVsYS5nbC9sYXllcnMnO1xuZXhwb3J0IHsgUGF0aE91dGxpbmVMYXllciB9IGZyb20gJ0BuZWJ1bGEuZ2wvbGF5ZXJzJztcbmV4cG9ydCB7IFBhdGhNYXJrZXJMYXllciB9IGZyb20gJ0BuZWJ1bGEuZ2wvbGF5ZXJzJztcblxuZXhwb3J0IHR5cGUgeyBFZGl0TW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBHZW9Kc29uRWRpdE1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuXG4vLyBBbHRlciBtb2Rlc1xuZXhwb3J0IHsgTW9kaWZ5TW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBSZXNpemVDaXJjbGVNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IFRyYW5zbGF0ZU1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgU2NhbGVNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IFJvdGF0ZU1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRHVwbGljYXRlTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBFeHRlbmRMaW5lU3RyaW5nTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBTcGxpdFBvbHlnb25Nb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IEV4dHJ1ZGVNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IEVsZXZhdGlvbk1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgVHJhbnNmb3JtTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5cbi8vIERyYXcgbW9kZXNcbmV4cG9ydCB7IERyYXdQb2ludE1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRHJhd0xpbmVTdHJpbmdNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IERyYXdQb2x5Z29uTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBEcmF3UmVjdGFuZ2xlTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBEcmF3U3F1YXJlTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBEcmF3UmVjdGFuZ2xlRnJvbUNlbnRlck1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRHJhd1NxdWFyZUZyb21DZW50ZXJNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IERyYXdDaXJjbGVCeURpYW1ldGVyTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBEcmF3Q2lyY2xlRnJvbUNlbnRlck1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRHJhd0VsbGlwc2VCeUJvdW5kaW5nQm94TW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBEcmF3RWxsaXBzZVVzaW5nVGhyZWVQb2ludHNNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IERyYXdSZWN0YW5nbGVVc2luZ1RocmVlUG9pbnRzTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBEcmF3OTBEZWdyZWVQb2x5Z29uTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBEcmF3UG9seWdvbkJ5RHJhZ2dpbmdNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcblxuLy8gT3RoZXIgbW9kZXNcbmV4cG9ydCB7IFZpZXdNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IE1lYXN1cmVEaXN0YW5jZU1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgTWVhc3VyZUFyZWFNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IE1lYXN1cmVBbmdsZU1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgQ29tcG9zaXRlTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBTbmFwcGFibGVNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbiJdfQ==","export { ArrowStyles, DEFAULT_ARROWS, MAX_ARROWS } from './lib/style';\nexport { SELECTION_TYPE } from './lib/deck-renderer/deck-drawer';\n\nexport { default as Feature } from './lib/feature';\nexport { default as LayerMouseEvent } from './lib/layer-mouse-event';\n\nexport { default as NebulaLayer } from './lib/nebula-layer';\nexport { default as JunctionsLayer } from './lib/layers/junctions-layer';\nexport { default as TextsLayer } from './lib/layers/texts-layer';\nexport { default as SegmentsLayer } from './lib/layers/segments-layer';\n\nexport { default as NebulaCore } from './lib/nebula';\n\nexport { PROJECTED_PIXEL_SIZE_MULTIPLIER } from './lib/constants';\n\n// Utils\nexport { toDeckColor } from './lib/utils';\n\n// Types\nexport type { Color, Style } from './types';\n\n// Moved to @nebula.gl/layers\nexport { EditableGeoJsonLayer } from '@nebula.gl/layers';\nexport { SelectionLayer } from '@nebula.gl/layers';\nexport { ElevatedEditHandleLayer } from '@nebula.gl/layers';\nexport { PathOutlineLayer } from '@nebula.gl/layers';\nexport { PathMarkerLayer } from '@nebula.gl/layers';\n\nexport type { EditMode } from '@nebula.gl/edit-modes';\nexport { GeoJsonEditMode } from '@nebula.gl/edit-modes';\n\n// Alter modes\nexport { ModifyMode } from '@nebula.gl/edit-modes';\nexport { ResizeCircleMode } from '@nebula.gl/edit-modes';\nexport { TranslateMode } from '@nebula.gl/edit-modes';\nexport { ScaleMode } from '@nebula.gl/edit-modes';\nexport { RotateMode } from '@nebula.gl/edit-modes';\nexport { DuplicateMode } from '@nebula.gl/edit-modes';\nexport { ExtendLineStringMode } from '@nebula.gl/edit-modes';\nexport { SplitPolygonMode } from '@nebula.gl/edit-modes';\nexport { ExtrudeMode } from '@nebula.gl/edit-modes';\nexport { ElevationMode } from '@nebula.gl/edit-modes';\nexport { TransformMode } from '@nebula.gl/edit-modes';\n\n// Draw modes\nexport { DrawPointMode } from '@nebula.gl/edit-modes';\nexport { DrawLineStringMode } from '@nebula.gl/edit-modes';\nexport { DrawPolygonMode } from '@nebula.gl/edit-modes';\nexport { DrawRectangleMode } from '@nebula.gl/edit-modes';\nexport { DrawSquareMode } from '@nebula.gl/edit-modes';\nexport { DrawRectangleFromCenterMode } from '@nebula.gl/edit-modes';\nexport { DrawSquareFromCenterMode } from '@nebula.gl/edit-modes';\nexport { DrawCircleByDiameterMode } from '@nebula.gl/edit-modes';\nexport { DrawCircleFromCenterMode } from '@nebula.gl/edit-modes';\nexport { DrawEllipseByBoundingBoxMode } from '@nebula.gl/edit-modes';\nexport { DrawEllipseUsingThreePointsMode } from '@nebula.gl/edit-modes';\nexport { DrawRectangleUsingThreePointsMode } from '@nebula.gl/edit-modes';\nexport { Draw90DegreePolygonMode } from '@nebula.gl/edit-modes';\nexport { DrawPolygonByDraggingMode } from '@nebula.gl/edit-modes';\nexport { ImmutableFeatureCollection } from '@nebula.gl/edit-modes';\n\n// Other modes\nexport { ViewMode } from '@nebula.gl/edit-modes';\nexport { MeasureDistanceMode } from '@nebula.gl/edit-modes';\nexport { MeasureAreaMode } from '@nebula.gl/edit-modes';\nexport { MeasureAngleMode } from '@nebula.gl/edit-modes';\nexport { CompositeMode } from '@nebula.gl/edit-modes';\nexport { SnappableMode } from '@nebula.gl/edit-modes';\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DEFAULT_STYLE = exports.MAX_ARROWS = exports.DEFAULT_ARROWS = exports.ArrowStyles = void 0;\n// Describes the arrow style of polylines\nvar ArrowStyles = {\n NONE: 0,\n FORWARD: 1,\n BACKWARD: 2,\n BOTH: 3\n};\nexports.ArrowStyles = ArrowStyles;\nvar DEFAULT_ARROWS = 1;\nexports.DEFAULT_ARROWS = DEFAULT_ARROWS;\nvar MAX_ARROWS = 3;\nexports.MAX_ARROWS = MAX_ARROWS;\nvar DEFAULT_STYLE = {\n arrowColor: [0, 0, 0, 1],\n arrowCount: DEFAULT_ARROWS,\n arrowStyle: ArrowStyles.NONE,\n fillColor: [0, 0, 0, 1],\n lineColor: [0, 0, 0, 1],\n lineWidthMeters: 5,\n outlineRadiusMeters: 0,\n opacity: 1,\n zLevel: 0\n};\nexports.DEFAULT_STYLE = DEFAULT_STYLE;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc3R5bGUudHMiXSwibmFtZXMiOlsiQXJyb3dTdHlsZXMiLCJOT05FIiwiRk9SV0FSRCIsIkJBQ0tXQVJEIiwiQk9USCIsIkRFRkFVTFRfQVJST1dTIiwiTUFYX0FSUk9XUyIsIkRFRkFVTFRfU1RZTEUiLCJhcnJvd0NvbG9yIiwiYXJyb3dDb3VudCIsImFycm93U3R5bGUiLCJmaWxsQ29sb3IiLCJsaW5lQ29sb3IiLCJsaW5lV2lkdGhNZXRlcnMiLCJvdXRsaW5lUmFkaXVzTWV0ZXJzIiwib3BhY2l0eSIsInpMZXZlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDTyxJQUFNQSxXQUFXLEdBQUc7QUFDekJDLEVBQUFBLElBQUksRUFBRSxDQURtQjtBQUV6QkMsRUFBQUEsT0FBTyxFQUFFLENBRmdCO0FBR3pCQyxFQUFBQSxRQUFRLEVBQUUsQ0FIZTtBQUl6QkMsRUFBQUEsSUFBSSxFQUFFO0FBSm1CLENBQXBCOztBQU9BLElBQU1DLGNBQWMsR0FBRyxDQUF2Qjs7QUFDQSxJQUFNQyxVQUFVLEdBQUcsQ0FBbkI7O0FBRUEsSUFBTUMsYUFBYSxHQUFHO0FBQzNCQyxFQUFBQSxVQUFVLEVBQUUsQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVSxDQUFWLENBRGU7QUFFM0JDLEVBQUFBLFVBQVUsRUFBRUosY0FGZTtBQUczQkssRUFBQUEsVUFBVSxFQUFFVixXQUFXLENBQUNDLElBSEc7QUFJM0JVLEVBQUFBLFNBQVMsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLEVBQU8sQ0FBUCxFQUFVLENBQVYsQ0FKZ0I7QUFLM0JDLEVBQUFBLFNBQVMsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLEVBQU8sQ0FBUCxFQUFVLENBQVYsQ0FMZ0I7QUFNM0JDLEVBQUFBLGVBQWUsRUFBRSxDQU5VO0FBTzNCQyxFQUFBQSxtQkFBbUIsRUFBRSxDQVBNO0FBUTNCQyxFQUFBQSxPQUFPLEVBQUUsQ0FSa0I7QUFTM0JDLEVBQUFBLE1BQU0sRUFBRTtBQVRtQixDQUF0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIERlc2NyaWJlcyB0aGUgYXJyb3cgc3R5bGUgb2YgcG9seWxpbmVzXG5leHBvcnQgY29uc3QgQXJyb3dTdHlsZXMgPSB7XG4gIE5PTkU6IDAsXG4gIEZPUldBUkQ6IDEsXG4gIEJBQ0tXQVJEOiAyLFxuICBCT1RIOiAzLFxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQVJST1dTID0gMTtcbmV4cG9ydCBjb25zdCBNQVhfQVJST1dTID0gMztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1RZTEUgPSB7XG4gIGFycm93Q29sb3I6IFswLCAwLCAwLCAxXSxcbiAgYXJyb3dDb3VudDogREVGQVVMVF9BUlJPV1MsXG4gIGFycm93U3R5bGU6IEFycm93U3R5bGVzLk5PTkUsXG4gIGZpbGxDb2xvcjogWzAsIDAsIDAsIDFdLFxuICBsaW5lQ29sb3I6IFswLCAwLCAwLCAxXSxcbiAgbGluZVdpZHRoTWV0ZXJzOiA1LFxuICBvdXRsaW5lUmFkaXVzTWV0ZXJzOiAwLFxuICBvcGFjaXR5OiAxLFxuICB6TGV2ZWw6IDAsXG59O1xuIl19","// Describes the arrow style of polylines\nexport const ArrowStyles = {\n NONE: 0,\n FORWARD: 1,\n BACKWARD: 2,\n BOTH: 3,\n};\n\nexport const DEFAULT_ARROWS = 1;\nexport const MAX_ARROWS = 3;\n\nexport const DEFAULT_STYLE = {\n arrowColor: [0, 0, 0, 1],\n arrowCount: DEFAULT_ARROWS,\n arrowStyle: ArrowStyles.NONE,\n fillColor: [0, 0, 0, 1],\n lineColor: [0, 0, 0, 1],\n lineWidthMeters: 5,\n outlineRadiusMeters: 0,\n opacity: 1,\n zLevel: 0,\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = exports.SELECTION_TYPE = void 0;\n\nvar _layers = require(\"@deck.gl/layers\");\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _bbox = _interopRequireDefault(require(\"@turf/bbox\"));\n\nvar _bboxPolygon = _interopRequireDefault(require(\"@turf/bbox-polygon\"));\n\nvar _buffer = _interopRequireDefault(require(\"@turf/buffer\"));\n\nvar _difference = _interopRequireDefault(require(\"@turf/difference\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar POLYGON_LINE_COLOR = [0, 255, 0, 255];\nvar POLYGON_FILL_COLOR = [255, 255, 255, 90];\nvar POLYGON_LINE_WIDTH = 2;\nvar POLYGON_DASHES = [20, 20];\nvar POLYGON_THRESHOLD = 0.01;\nvar EXPANSION_KM = 10;\nvar LAYER_ID_VIEW = 'DeckDrawerView';\nvar LAYER_ID_PICK = 'DeckDrawerPick';\nvar SELECTION_TYPE = {\n NONE: null,\n RECTANGLE: 'rectangle',\n POLYGON: 'polygon'\n};\nexports.SELECTION_TYPE = SELECTION_TYPE;\n\nvar DeckDrawer = /*#__PURE__*/function () {\n function DeckDrawer(nebula) {\n _classCallCheck(this, DeckDrawer);\n\n _defineProperty(this, \"nebula\", void 0);\n\n _defineProperty(this, \"usePolygon\", void 0);\n\n _defineProperty(this, \"validPolygon\", void 0);\n\n _defineProperty(this, \"landPoints\", void 0);\n\n _defineProperty(this, \"mousePoints\", void 0);\n\n this.nebula = nebula;\n this.usePolygon = false;\n this.landPoints = [];\n this.mousePoints = [];\n }\n\n _createClass(DeckDrawer, [{\n key: \"_getLayerIds\",\n value: function _getLayerIds() {\n // TODO: sort by mouse priority\n return this.nebula.deckgl.props.layers.filter(function (l) {\n return l && l.props && l.props.nebulaLayer && l.props.nebulaLayer.enableSelection;\n }).map(function (l) {\n return l.id;\n });\n }\n }, {\n key: \"_selectFromPickingInfos\",\n value: function _selectFromPickingInfos(pickingInfos) {\n var objects = pickingInfos.map(function (_ref) {\n var layer = _ref.layer,\n index = _ref.index,\n object = _ref.object;\n return object.original || layer.props.nebulaLayer.deckCache.originals[index];\n });\n this.nebula.props.onSelection(objects);\n }\n }, {\n key: \"_getBoundingBox\",\n value: function _getBoundingBox() {\n var mousePoints = this.mousePoints;\n var allX = mousePoints.map(function (mousePoint) {\n return mousePoint[0];\n });\n var allY = mousePoints.map(function (mousePoint) {\n return mousePoint[1];\n });\n var x = Math.min.apply(Math, _toConsumableArray(allX));\n var y = Math.min.apply(Math, _toConsumableArray(allY));\n var maxX = Math.max.apply(Math, _toConsumableArray(allX));\n var maxY = Math.max.apply(Math, _toConsumableArray(allY));\n return {\n x: x,\n y: y,\n width: maxX - x,\n height: maxY - y\n };\n }\n }, {\n key: \"_selectRectangleObjects\",\n value: function _selectRectangleObjects() {\n if (this.landPoints.length !== 2) return;\n\n var _this$mousePoints$ = _slicedToArray(this.mousePoints[0], 2),\n x1 = _this$mousePoints$[0],\n y1 = _this$mousePoints$[1];\n\n var _this$mousePoints$2 = _slicedToArray(this.mousePoints[1], 2),\n x2 = _this$mousePoints$2[0],\n y2 = _this$mousePoints$2[1];\n\n var pickingInfos = this.nebula.deckgl.pickObjects({\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1),\n layerIds: this._getLayerIds()\n });\n\n this._selectFromPickingInfos(pickingInfos);\n }\n }, {\n key: \"_selectPolygonObjects\",\n value: function _selectPolygonObjects() {\n var pickingInfos = this.nebula.deckgl.pickObjects(_objectSpread({}, this._getBoundingBox(), {\n layerIds: [LAYER_ID_PICK].concat(_toConsumableArray(this._getLayerIds()))\n }));\n\n this._selectFromPickingInfos(pickingInfos.filter(function (item) {\n return item.layer.id !== LAYER_ID_PICK;\n }));\n }\n }, {\n key: \"_getMousePosFromEvent\",\n value: function _getMousePosFromEvent(event) {\n var offsetX = event.offsetX,\n offsetY = event.offsetY;\n return [offsetX, offsetY];\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(event, lngLat, selectionType) {\n // capture all events (mouse-up is needed to prevent us stuck in moving map)\n if (event.type !== 'mouseup') event.stopPropagation(); // @ts-ignore\n\n this.usePolygon = selectionType === SELECTION_TYPE.POLYGON;\n var redraw = false;\n var deactivate = false;\n var usePolygon = this.usePolygon,\n landPoints = this.landPoints,\n mousePoints = this.mousePoints;\n\n if (event.type === 'mousedown') {\n if (usePolygon && landPoints.length) {\n // if landPoints.length is zero we want to insert two points (so we let it run the else)\n // also don't insert if polygon is invalid\n if (this.landPoints.length < 3 || this.validPolygon) {\n landPoints.push(lngLat);\n mousePoints.push(this._getMousePosFromEvent(event));\n }\n } else {\n this.landPoints = [lngLat, lngLat];\n\n var m = this._getMousePosFromEvent(event);\n\n this.mousePoints = [m, m];\n }\n\n redraw = true;\n } else if (event.type === 'mousemove' && landPoints.length) {\n // update last point\n landPoints[landPoints.length - 1] = lngLat;\n mousePoints[mousePoints.length - 1] = this._getMousePosFromEvent(event);\n redraw = true;\n } else if (event.type === 'mouseup') {\n if (usePolygon) {\n // check to see if completed\n // TODO: Maybe double-click to finish?\n if (landPoints.length > 4 && (0, _distance[\"default\"])(landPoints[0], landPoints[landPoints.length - 1]) < POLYGON_THRESHOLD && this.validPolygon) {\n this._selectPolygonObjects();\n\n this.reset();\n redraw = true;\n deactivate = true;\n }\n } else {\n this._selectRectangleObjects();\n\n this.reset();\n redraw = true;\n deactivate = true;\n }\n }\n\n return {\n redraw: redraw,\n deactivate: deactivate\n };\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.landPoints = [];\n this.mousePoints = [];\n }\n }, {\n key: \"_makeStartPointHighlight\",\n value: function _makeStartPointHighlight(center) {\n var buffer = (0, _buffer[\"default\"])((0, _helpers.point)(center), POLYGON_THRESHOLD / 4.0); // @ts-ignore\n\n return (0, _bboxPolygon[\"default\"])((0, _bbox[\"default\"])(buffer)).geometry.coordinates;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this = this;\n\n var data = [];\n var dataPick = [];\n\n if (!this.usePolygon && this.landPoints.length === 2) {\n // Use mouse points instead of land points so we get the right shape\n // no matter what bearing is.\n var _this$mousePoints = _slicedToArray(this.mousePoints, 2),\n _this$mousePoints$3 = _slicedToArray(_this$mousePoints[0], 2),\n x1 = _this$mousePoints$3[0],\n y1 = _this$mousePoints$3[1],\n _this$mousePoints$4 = _slicedToArray(_this$mousePoints[1], 2),\n x2 = _this$mousePoints$4[0],\n y2 = _this$mousePoints$4[1];\n\n var selPolygon = [[x1, y1], [x1, y2], [x2, y2], [x2, y1], [x1, y1]].map(function (mousePos) {\n return _this.nebula.unprojectMousePosition(mousePos);\n });\n data.push({\n polygon: selPolygon,\n lineColor: POLYGON_LINE_COLOR,\n fillColor: POLYGON_FILL_COLOR\n });\n } else if (this.usePolygon && this.landPoints.length) {\n data.push({\n polygon: this.landPoints,\n lineColor: POLYGON_LINE_COLOR,\n fillColor: POLYGON_FILL_COLOR\n }); // Hack: use a polygon to hide the outside, because pickObjects()\n // does not support polygons\n\n if (this.landPoints.length >= 3) {\n var landPointsPoly = (0, _helpers.polygon)([[].concat(_toConsumableArray(this.landPoints), [this.landPoints[0]])]);\n var bigBuffer = (0, _buffer[\"default\"])((0, _helpers.point)(this.landPoints[0]), EXPANSION_KM);\n var bigPolygon;\n\n try {\n // turfDifference throws an exception if the polygon\n // intersects with itself\n bigPolygon = (0, _difference[\"default\"])(bigBuffer, landPointsPoly);\n dataPick.push({\n polygon: bigPolygon.geometry.coordinates,\n fillColor: [0, 0, 0, 1]\n });\n this.validPolygon = true;\n } catch (e) {\n // invalid selection polygon\n this.validPolygon = false;\n }\n }\n }\n\n if (this.landPoints.length) {\n // highlight start point\n data.push({\n polygon: this._makeStartPointHighlight(this.landPoints[0]),\n lineColor: [0, 0, 0, 0],\n fillColor: POLYGON_LINE_COLOR\n });\n } // Hack to make the PolygonLayer() stay active,\n // otherwise it takes 3 seconds (!) to init!\n // TODO: fix this\n\n\n data.push({\n polygon: [[0, 0]]\n });\n dataPick.push({\n polygon: [[0, 0]]\n });\n return [new _layers.PolygonLayer({\n id: LAYER_ID_VIEW,\n data: data,\n // @ts-ignore\n fp64: false,\n opacity: 1.0,\n pickable: false,\n lineWidthMinPixels: POLYGON_LINE_WIDTH,\n lineWidthMaxPixels: POLYGON_LINE_WIDTH,\n lineDashJustified: true,\n getLineDashArray: function getLineDashArray(x) {\n return POLYGON_DASHES;\n },\n // @ts-ignore\n getLineColor: function getLineColor(obj) {\n return obj.lineColor || [0, 0, 0, 255];\n },\n // @ts-ignore\n getFillColor: function getFillColor(obj) {\n return obj.fillColor || [0, 0, 0, 255];\n },\n // @ts-ignore\n getPolygon: function getPolygon(o) {\n return o.polygon;\n }\n }), new _layers.PolygonLayer({\n id: LAYER_ID_PICK,\n data: dataPick,\n // @ts-ignore\n getLineColor: function getLineColor(obj) {\n return obj.lineColor || [0, 0, 0, 255];\n },\n // @ts-ignore\n getFillColor: function getFillColor(obj) {\n return obj.fillColor || [0, 0, 0, 255];\n },\n // @ts-ignore\n fp64: false,\n opacity: 1.0,\n stroked: false,\n pickable: true,\n // @ts-ignore\n getPolygon: function getPolygon(o) {\n return o.polygon;\n }\n })];\n }\n }]);\n\n return DeckDrawer;\n}();\n\nexports[\"default\"] = DeckDrawer;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZGVjay1yZW5kZXJlci9kZWNrLWRyYXdlci50cyJdLCJuYW1lcyI6WyJQT0xZR09OX0xJTkVfQ09MT1IiLCJQT0xZR09OX0ZJTExfQ09MT1IiLCJQT0xZR09OX0xJTkVfV0lEVEgiLCJQT0xZR09OX0RBU0hFUyIsIlBPTFlHT05fVEhSRVNIT0xEIiwiRVhQQU5TSU9OX0tNIiwiTEFZRVJfSURfVklFVyIsIkxBWUVSX0lEX1BJQ0siLCJTRUxFQ1RJT05fVFlQRSIsIk5PTkUiLCJSRUNUQU5HTEUiLCJQT0xZR09OIiwiRGVja0RyYXdlciIsIm5lYnVsYSIsInVzZVBvbHlnb24iLCJsYW5kUG9pbnRzIiwibW91c2VQb2ludHMiLCJkZWNrZ2wiLCJwcm9wcyIsImxheWVycyIsImZpbHRlciIsImwiLCJuZWJ1bGFMYXllciIsImVuYWJsZVNlbGVjdGlvbiIsIm1hcCIsImlkIiwicGlja2luZ0luZm9zIiwib2JqZWN0cyIsImxheWVyIiwiaW5kZXgiLCJvYmplY3QiLCJvcmlnaW5hbCIsImRlY2tDYWNoZSIsIm9yaWdpbmFscyIsIm9uU2VsZWN0aW9uIiwiYWxsWCIsIm1vdXNlUG9pbnQiLCJhbGxZIiwieCIsIk1hdGgiLCJtaW4iLCJ5IiwibWF4WCIsIm1heCIsIm1heFkiLCJ3aWR0aCIsImhlaWdodCIsImxlbmd0aCIsIngxIiwieTEiLCJ4MiIsInkyIiwicGlja09iamVjdHMiLCJhYnMiLCJsYXllcklkcyIsIl9nZXRMYXllcklkcyIsIl9zZWxlY3RGcm9tUGlja2luZ0luZm9zIiwiX2dldEJvdW5kaW5nQm94IiwiaXRlbSIsImV2ZW50Iiwib2Zmc2V0WCIsIm9mZnNldFkiLCJsbmdMYXQiLCJzZWxlY3Rpb25UeXBlIiwidHlwZSIsInN0b3BQcm9wYWdhdGlvbiIsInJlZHJhdyIsImRlYWN0aXZhdGUiLCJ2YWxpZFBvbHlnb24iLCJwdXNoIiwiX2dldE1vdXNlUG9zRnJvbUV2ZW50IiwibSIsIl9zZWxlY3RQb2x5Z29uT2JqZWN0cyIsInJlc2V0IiwiX3NlbGVjdFJlY3RhbmdsZU9iamVjdHMiLCJjZW50ZXIiLCJidWZmZXIiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiZGF0YSIsImRhdGFQaWNrIiwic2VsUG9seWdvbiIsIm1vdXNlUG9zIiwidW5wcm9qZWN0TW91c2VQb3NpdGlvbiIsInBvbHlnb24iLCJsaW5lQ29sb3IiLCJmaWxsQ29sb3IiLCJsYW5kUG9pbnRzUG9seSIsImJpZ0J1ZmZlciIsImJpZ1BvbHlnb24iLCJlIiwiX21ha2VTdGFydFBvaW50SGlnaGxpZ2h0IiwiUG9seWdvbkxheWVyIiwiZnA2NCIsIm9wYWNpdHkiLCJwaWNrYWJsZSIsImxpbmVXaWR0aE1pblBpeGVscyIsImxpbmVXaWR0aE1heFBpeGVscyIsImxpbmVEYXNoSnVzdGlmaWVkIiwiZ2V0TGluZURhc2hBcnJheSIsImdldExpbmVDb2xvciIsIm9iaiIsImdldEZpbGxDb2xvciIsImdldFBvbHlnb24iLCJvIiwic3Ryb2tlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxrQkFBa0IsR0FBRyxDQUFDLENBQUQsRUFBSSxHQUFKLEVBQVMsQ0FBVCxFQUFZLEdBQVosQ0FBM0I7QUFDQSxJQUFNQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsR0FBWCxFQUFnQixFQUFoQixDQUEzQjtBQUNBLElBQU1DLGtCQUFrQixHQUFHLENBQTNCO0FBQ0EsSUFBTUMsY0FBYyxHQUFHLENBQUMsRUFBRCxFQUFLLEVBQUwsQ0FBdkI7QUFDQSxJQUFNQyxpQkFBaUIsR0FBRyxJQUExQjtBQUNBLElBQU1DLFlBQVksR0FBRyxFQUFyQjtBQUNBLElBQU1DLGFBQWEsR0FBRyxnQkFBdEI7QUFDQSxJQUFNQyxhQUFhLEdBQUcsZ0JBQXRCO0FBRU8sSUFBTUMsY0FBYyxHQUFHO0FBQzVCQyxFQUFBQSxJ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aUJBQU9BLENBQUMsQ0FBQ3BCLE9BQVQ7QUFBQTtBQWhCRyxPQUFqQixDQURLLEVBbUJMLElBQUlRLG9CQUFKLENBQWlCO0FBQ2ZuRSxRQUFBQSxFQUFFLEVBQUVsQixhQURXO0FBRWZ3RSxRQUFBQSxJQUFJLEVBQUVDLFFBRlM7QUFHZjtBQUNBb0IsUUFBQUEsWUFBWSxFQUFFLHNCQUFDQyxHQUFEO0FBQUEsaUJBQVNBLEdBQUcsQ0FBQ2hCLFNBQUosSUFBaUIsQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVSxHQUFWLENBQTFCO0FBQUEsU0FKQztBQUtmO0FBQ0FpQixRQUFBQSxZQUFZLEVBQUUsc0JBQUNELEdBQUQ7QUFBQSxpQkFBU0EsR0FBRyxDQUFDZixTQUFKLElBQWlCLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsR0FBVixDQUExQjtBQUFBLFNBTkM7QUFPZjtBQUNBTyxRQUFBQSxJQUFJLEVBQUUsS0FSUztBQVNmQyxRQUFBQSxPQUFPLEVBQUUsR0FUTTtBQVVmVyxRQUFBQSxPQUFPLEVBQUUsS0FWTTtBQVdmVixRQUFBQSxRQUFRLEVBQUUsSUFYSztBQVlmO0FBQ0FRLFFBQUFBLFVBQVUsRUFBRSxvQkFBQ0MsQ0FBRDtBQUFBLGlCQUFPQSxDQUFDLENBQUNwQixPQUFUO0FBQUE7QUFiRyxPQUFqQixDQW5CSyxDQUFQO0FBbUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9seWdvbkxheWVyIH0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCB7IHBvaW50LCBwb2x5Z29uIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgdHVyZkJib3ggZnJvbSAnQHR1cmYvYmJveCc7XG5pbXBvcnQgdHVyZkJib3hQb2x5Z29uIGZyb20gJ0B0dXJmL2Jib3gtcG9seWdvbic7XG5pbXBvcnQgdHVyZkJ1ZmZlciBmcm9tICdAdHVyZi9idWZmZXInO1xuaW1wb3J0IHR1cmZEaWZmZXJlbmNlIGZyb20gJ0B0dXJmL2RpZmZlcmVuY2UnO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5cbmNvbnN0IFBPTFlHT05fTElORV9DT0xPUiA9IFswLCAyNTUsIDAsIDI1NV07XG5jb25zdCBQT0xZR09OX0ZJTExfQ09MT1IgPSBbMjU1LCAyNTUsIDI1NSwgOTBdO1xuY29uc3QgUE9MWUdPTl9MSU5FX1dJRFRIID0gMjtcbmNvbnN0IFBPTFlHT05fREFTSEVTID0gWzIwLCAyMF07XG5jb25zdCBQT0xZR09OX1RIUkVTSE9MRCA9IDAuMDE7XG5jb25zdCBFWFBBTlNJT05fS00gPSAxMDtcbmNvbnN0IExBWUVSX0lEX1ZJRVcgPSAnRGVja0RyYXdlclZpZXcnO1xuY29uc3QgTEFZRVJfSURfUElDSyA9ICdEZWNrRHJhd2VyUGljayc7XG5cbmV4cG9ydCBjb25zdCBTRUxFQ1RJT05fVFlQRSA9IHtcbiAgTk9ORTogbnVsbCxcbiAgUkVDVEFOR0xFOiAncmVjdGFuZ2xlJyxcbiAgUE9MWUdPTjogJ3BvbHlnb24nLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGVja0RyYXdlciB7XG4gIG5lYnVsYTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgdXNlUG9seWdvbjogYm9vbGVhbjtcbiAgdmFsaWRQb2x5Z29uOiBib29sZWFuO1xuICBsYW5kUG9pbnRzOiBbbnVtYmVyLCBudW1iZXJdW107XG4gIG1vdXNlUG9pbnRzOiBbbnVtYmVyLCBudW1iZXJdW107XG5cbiAgY29uc3RydWN0b3IobmVidWxhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgdGhpcy5uZWJ1bGEgPSBuZWJ1bGE7XG4gICAgdGhpcy51c2VQb2x5Z29uID0gZmFsc2U7XG4gICAgdGhpcy5sYW5kUG9pbnRzID0gW107XG4gICAgdGhpcy5tb3VzZVBvaW50cyA9IFtdO1xuICB9XG5cbiAgX2dldExheWVySWRzKCkge1xuICAgIC8vIFRPRE86IHNvcnQgYnkgbW91c2UgcHJpb3JpdHlcbiAgICByZXR1cm4gdGhpcy5uZWJ1bGEuZGVja2dsLnByb3BzLmxheWVyc1xuICAgICAgLmZpbHRlcigobCkgPT4gbCAmJiBsLnByb3BzICYmIGwucHJvcHMubmVidWxhTGF5ZXIgJiYgbC5wcm9wcy5uZWJ1bGFMYXllci5lbmFibGVTZWxlY3Rpb24pXG4gICAgICAubWFwKChsKSA9PiBsLmlkKTtcbiAgfVxuXG4gIF9zZWxlY3RGcm9tUGlja2luZ0luZm9zKHBpY2tpbmdJbmZvczogUmVjb3JkPHN0cmluZywgYW55PltdKSB7XG4gICAgY29uc3Qgb2JqZWN0cyA9IHBpY2tpbmdJbmZvcy5tYXAoXG4gICAgICAoeyBsYXllciwgaW5kZXgsIG9iamVjdCB9KSA9PlxuICAgICAgICBvYmplY3Qub3JpZ2luYWwgfHwgbGF5ZXIucHJvcHMubmVidWxhTGF5ZXIuZGVja0NhY2hlLm9yaWdpbmFsc1tpbmRleF1cbiAgICApO1xuICAgIHRoaXMubmVidWxhLnByb3BzLm9uU2VsZWN0aW9uKG9iamVjdHMpO1xuICB9XG5cbiAgX2dldEJvdW5kaW5nQm94KCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGNvbnN0IHsgbW91c2VQb2ludHMgfSA9IHRoaXM7XG4gICAgY29uc3QgYWxsWCA9IG1vdXNlUG9pbnRzLm1hcCgobW91c2VQb2ludCkgPT4gbW91c2VQb2ludFswXSk7XG4gICAgY29uc3QgYWxsWSA9IG1vdXNlUG9pbnRzLm1hcCgobW91c2VQb2ludCkgPT4gbW91c2VQb2ludFsxXSk7XG4gICAgY29uc3QgeCA9IE1hdGgubWluKC4uLmFsbFgpO1xuICAgIGNvbnN0IHkgPSBNYXRoLm1pbiguLi5hbGxZKTtcbiAgICBjb25zdCBtYXhYID0gTWF0aC5tYXgoLi4uYWxsWCk7XG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KC4uLmFsbFkpO1xuXG4gICAgcmV0dXJuIHsgeCwgeSwgd2lkdGg6IG1heFggLSB4LCBoZWlnaHQ6IG1heFkgLSB5IH07XG4gIH1cblxuICBfc2VsZWN0UmVjdGFuZ2xlT2JqZWN0cygpIHtcbiAgICBpZiAodGhpcy5sYW5kUG9pbnRzLmxlbmd0aCAhPT0gMikgcmV0dXJuO1xuXG4gICAgY29uc3QgW3gxLCB5MV0gPSB0aGlzLm1vdXNlUG9pbnRzWzBdO1xuICAgIGNvbnN0IFt4MiwgeTJdID0gdGhpcy5tb3VzZVBvaW50c1sxXTtcbiAgICBjb25zdCBwaWNraW5nSW5mb3MgPSB0aGlzLm5lYnVsYS5kZWNrZ2wucGlja09iamVjdHMoe1xuICAgICAgeDogTWF0aC5taW4oeDEsIHgyKSxcbiAgICAgIHk6IE1hdGgubWluKHkxLCB5MiksXG4gICAgICB3aWR0aDogTWF0aC5hYnMoeDIgLSB4MSksXG4gICAgICBoZWlnaHQ6IE1hdGguYWJzKHkyIC0geTEpLFxuICAgICAgbGF5ZXJJZHM6IHRoaXMuX2dldExheWVySWRzKCksXG4gICAgfSk7XG5cbiAgICB0aGlzLl9zZWxlY3RGcm9tUGlja2luZ0luZm9zKHBpY2tpbmdJbmZvcyk7XG4gIH1cblxuICBfc2VsZWN0UG9seWdvbk9iamVjdHMoKSB7XG4gICAgY29uc3QgcGlja2luZ0luZm9zID0gdGhpcy5uZWJ1bGEuZGVja2dsLnBpY2tPYmplY3RzKHtcbiAgICAgIC4uLnRoaXMuX2dldEJvdW5kaW5nQm94KCksXG4gICAgICBsYXllcklkczogW0xBWUVSX0lEX1BJQ0ssIC4uLnRoaXMuX2dldExheWVySWRzKCldLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fc2VsZWN0RnJvbVBpY2tpbmdJbmZvcyhwaWNraW5nSW5mb3MuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmxheWVyLmlkICE9PSBMQVlFUl9JRF9QSUNLKSk7XG4gIH1cblxuICBfZ2V0TW91c2VQb3NGcm9tRXZlbnQoZXZlbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICBjb25zdCB7IG9mZnNldFgsIG9mZnNldFkgfSA9IGV2ZW50O1xuICAgIHJldHVybiBbb2Zmc2V0WCwgb2Zmc2V0WV07XG4gIH1cblxuICBoYW5kbGVFdmVudChcbiAgICBldmVudDogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBsbmdMYXQ6IFtudW1iZXIsIG51bWJlcl0sXG4gICAgc2VsZWN0aW9uVHlwZTogbnVtYmVyXG4gICk6IHsgcmVkcmF3OiBib29sZWFuOyBkZWFjdGl2YXRlOiBib29sZWFuIH0ge1xuICAgIC8vIGNhcHR1cmUgYWxsIGV2ZW50cyAobW91c2UtdXAgaXMgbmVlZGVkIHRvIHByZXZlbnQgdXMgc3R1Y2sgaW4gbW92aW5nIG1hcClcbiAgICBpZiAoZXZlbnQudHlwZSAhPT0gJ21vdXNldXAnKSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy51c2VQb2x5Z29uID0gc2VsZWN0aW9uVHlwZSA9PT0gU0VMRUNUSU9OX1RZUEUuUE9MWUdPTjtcblxuICAgIGxldCByZWRyYXcgPSBmYWxzZTtcbiAgICBsZXQgZGVhY3RpdmF0ZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgeyB1c2VQb2x5Z29uLCBsYW5kUG9pbnRzLCBtb3VzZVBvaW50cyB9ID0gdGhpcztcblxuICAgIGlmIChldmVudC50eXBlID09PSAnbW91c2Vkb3duJykge1xuICAgICAgaWYgKHVzZVBvbHlnb24gJiYgbGFuZFBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgLy8gaWYgbGFuZFBvaW50cy5sZW5ndGggaXMgemVybyB3ZSB3YW50IHRvIGluc2VydCB0d28gcG9pbnRzIChzbyB3ZSBsZXQgaXQgcnVuIHRoZSBlbHNlKVxuICAgICAgICAvLyBhbHNvIGRvbid0IGluc2VydCBpZiBwb2x5Z29uIGlzIGludmFsaWRcbiAgICAgICAgaWYgKHRoaXMubGFuZFBvaW50cy5sZW5ndGggPCAzIHx8IHRoaXMudmFsaWRQb2x5Z29uKSB7XG4gICAgICAgICAgbGFuZFBvaW50cy5wdXNoKGxuZ0xhdCk7XG4gICAgICAgICAgbW91c2VQb2ludHMucHVzaCh0aGlzLl9nZXRNb3VzZVBvc0Zyb21FdmVudChldmVudCkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxhbmRQb2ludHMgPSBbbG5nTGF0LCBsbmdMYXRdO1xuICAgICAgICBjb25zdCBtID0gdGhpcy5fZ2V0TW91c2VQb3NGcm9tRXZlbnQoZXZlbnQpO1xuICAgICAgICB0aGlzLm1vdXNlUG9pbnRzID0gW20sIG1dO1xuICAgICAgfVxuICAgICAgcmVkcmF3ID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICdtb3VzZW1vdmUnICYmIGxhbmRQb2ludHMubGVuZ3RoKSB7XG4gICAgICAvLyB1cGRhdGUgbGFzdCBwb2ludFxuICAgICAgbGFuZFBvaW50c1tsYW5kUG9pbnRzLmxlbmd0aCAtIDFdID0gbG5nTGF0O1xuICAgICAgbW91c2VQb2ludHNbbW91c2VQb2ludHMubGVuZ3RoIC0gMV0gPSB0aGlzLl9nZXRNb3VzZVBvc0Zyb21FdmVudChldmVudCk7XG4gICAgICByZWRyYXcgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ21vdXNldXAnKSB7XG4gICAgICBpZiAodXNlUG9seWdvbikge1xuICAgICAgICAvLyBjaGVjayB0byBzZWUgaWYgY29tcGxldGVkXG4gICAgICAgIC8vIFRPRE86IE1heWJlIGRvdWJsZS1jbGljayB0byBmaW5pc2g/XG4gICAgICAgIGlmIChcbiAgICAgICAgICBsYW5kUG9pbnRzLmxlbmd0aCA+IDQgJiZcbiAgICAgICAgICB0dXJmRGlzdGFuY2UobGFuZFBvaW50c1swXSwgbGFuZFBvaW50c1tsYW5kUG9pbnRzLmxlbmd0aCAtIDFdKSA8IFBPTFlHT05fVEhSRVNIT0xEICYmXG4gICAgICAgICAgdGhpcy52YWxpZFBvbHlnb25cbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0UG9seWdvbk9iamVjdHMoKTtcbiAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgcmVkcmF3ID0gdHJ1ZTtcbiAgICAgICAgICBkZWFjdGl2YXRlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0UmVjdGFuZ2xlT2JqZWN0cygpO1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHJlZHJhdyA9IHRydWU7XG4gICAgICAgIGRlYWN0aXZhdGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IHJlZHJhdywgZGVhY3RpdmF0ZSB9O1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5sYW5kUG9pbnRzID0gW107XG4gICAgdGhpcy5tb3VzZVBvaW50cyA9IFtdO1xuICB9XG5cbiAgX21ha2VTdGFydFBvaW50SGlnaGxpZ2h0KGNlbnRlcjogW251bWJlciwgbnVtYmVyXSk6IG51bWJlcltdIHtcbiAgICBjb25zdCBidWZmZXIgPSB0dXJmQnVmZmVyKHBvaW50KGNlbnRlciksIFBPTFlHT05fVEhSRVNIT0xEIC8gNC4wKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIHR1cmZCYm94UG9seWdvbih0dXJmQmJveChidWZmZXIpKS5nZW9tZXRyeS5jb29yZGluYXRlcztcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBkYXRhID0gW107XG4gICAgY29uc3QgZGF0YVBpY2sgPSBbXTtcblxuICAgIGlmICghdGhpcy51c2VQb2x5Z29uICYmIHRoaXMubGFuZFBvaW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIC8vIFVzZSBtb3VzZSBwb2ludHMgaW5zdGVhZCBvZiBsYW5kIHBvaW50cyBzbyB3ZSBnZXQgdGhlIHJpZ2h0IHNoYXBlXG4gICAgICAvLyBubyBtYXR0ZXIgd2hhdCBiZWFyaW5nIGlzLlxuICAgICAgY29uc3QgW1t4MSwgeTFdLCBbeDIsIHkyXV0gPSB0aGlzLm1vdXNlUG9pbnRzO1xuICAgICAgY29uc3Qgc2VsUG9seWdvbiA9IFtcbiAgICAgICAgW3gxLCB5MV0sXG4gICAgICAgIFt4MSwgeTJdLFxuICAgICAgICBbeDIsIHkyXSxcbiAgICAgICAgW3gyLCB5MV0sXG4gICAgICAgIFt4MSwgeTFdLFxuICAgICAgXS5tYXAoKG1vdXNlUG9zKSA9PiB0aGlzLm5lYnVsYS51bnByb2plY3RNb3VzZVBvc2l0aW9uKG1vdXNlUG9zKSk7XG4gICAgICBkYXRhLnB1c2goe1xuICAgICAgICBwb2x5Z29uOiBzZWxQb2x5Z29uLFxuICAgICAgICBsaW5lQ29sb3I6IFBPTFlHT05fTElORV9DT0xPUixcbiAgICAgICAgZmlsbENvbG9yOiBQT0xZR09OX0ZJTExfQ09MT1IsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudXNlUG9seWdvbiAmJiB0aGlzLmxhbmRQb2ludHMubGVuZ3RoKSB7XG4gICAgICBkYXRhLnB1c2goe1xuICAgICAgICBwb2x5Z29uOiB0aGlzLmxhbmRQb2ludHMsXG4gICAgICAgIGxpbmVDb2xvcjogUE9MWUdPTl9MSU5FX0NPTE9SLFxuICAgICAgICBmaWxsQ29sb3I6IFBPTFlHT05fRklMTF9DT0xPUixcbiAgICAgIH0pO1xuXG4gICAgICAvLyBIYWNrOiB1c2UgYSBwb2x5Z29uIHRvIGhpZGUgdGhlIG91dHNpZGUsIGJlY2F1c2UgcGlja09iamVjdHMoKVxuICAgICAgLy8gZG9lcyBub3Qgc3VwcG9ydCBwb2x5Z29uc1xuICAgICAgaWYgKHRoaXMubGFuZFBvaW50cy5sZW5ndGggPj0gMykge1xuICAgICAgICBjb25zdCBsYW5kUG9pbnRzUG9seSA9IHBvbHlnb24oW1suLi50aGlzLmxhbmRQb2ludHMsIHRoaXMubGFuZFBvaW50c1swXV1dKTtcbiAgICAgICAgY29uc3QgYmlnQnVmZmVyID0gdHVyZkJ1ZmZlcihwb2ludCh0aGlzLmxhbmRQb2ludHNbMF0pLCBFWFBBTlNJT05fS00pO1xuICAgICAgICBsZXQgYmlnUG9seWdvbjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyB0dXJmRGlmZmVyZW5jZSB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIHRoZSBwb2x5Z29uXG4gICAgICAgICAgLy8gaW50ZXJzZWN0cyB3aXRoIGl0c2VsZlxuICAgICAgICAgIGJpZ1BvbHlnb24gPSB0dXJmRGlmZmVyZW5jZShiaWdCdWZmZXIsIGxhbmRQb2ludHNQb2x5KTtcbiAgICAgICAgICBkYXRhUGljay5wdXNoKHtcbiAgICAgICAgICAgIHBvbHlnb246IGJpZ1BvbHlnb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgICBmaWxsQ29sb3I6IFswLCAwLCAwLCAxXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnZhbGlkUG9seWdvbiA9IHRydWU7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBpbnZhbGlkIHNlbGVjdGlvbiBwb2x5Z29uXG4gICAgICAgICAgdGhpcy52YWxpZFBvbHlnb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmxhbmRQb2ludHMubGVuZ3RoKSB7XG4gICAgICAvLyBoaWdobGlnaHQgc3RhcnQgcG9pbnRcbiAgICAgIGRhdGEucHVzaCh7XG4gICAgICAgIHBvbHlnb246IHRoaXMuX21ha2VTdGFydFBvaW50SGlnaGxpZ2h0KHRoaXMubGFuZFBvaW50c1swXSksXG4gICAgICAgIGxpbmVDb2xvcjogWzAsIDAsIDAsIDBdLFxuICAgICAgICBmaWxsQ29sb3I6IFBPTFlHT05fTElORV9DT0xPUixcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEhhY2sgdG8gbWFrZSB0aGUgUG9seWdvbkxheWVyKCkgc3RheSBhY3RpdmUsXG4gICAgLy8gb3RoZXJ3aXNlIGl0IHRha2VzIDMgc2Vjb25kcyAoISkgdG8gaW5pdCFcbiAgICAvLyBUT0RPOiBmaXggdGhpc1xuICAgIGRhdGEucHVzaCh7IHBvbHlnb246IFtbMCwgMF1dIH0pO1xuICAgIGRhdGFQaWNrLnB1c2goeyBwb2x5Z29uOiBbWzAsIDBdXSB9KTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgUG9seWdvbkxheWVyKHtcbiAgICAgICAgaWQ6IExBWUVSX0lEX1ZJRVcsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZnA2NDogZmFsc2UsXG4gICAgICAgIG9wYWNpdHk6IDEuMCxcbiAgICAgICAgcGlja2FibGU6IGZhbHNlLFxuICAgICAgICBsaW5lV2lkdGhNaW5QaXhlbHM6IFBPTFlHT05fTElORV9XSURUSCxcbiAgICAgICAgbGluZVdpZHRoTWF4UGl4ZWxzOiBQT0xZR09OX0xJTkVfV0lEVEgsXG4gICAgICAgIGxpbmVEYXNoSnVzdGlmaWVkOiB0cnVlLFxuICAgICAgICBnZXRMaW5lRGFzaEFycmF5OiAoeCkgPT4gUE9MWUdPTl9EQVNIRVMsXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZ2V0TGluZUNvbG9yOiAob2JqKSA9PiBvYmoubGluZUNvbG9yIHx8IFswLCAwLCAwLCAyNTVdLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGdldEZpbGxDb2xvcjogKG9iaikgPT4gb2JqLmZpbGxDb2xvciB8fCBbMCwgMCwgMCwgMjU1XSxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBnZXRQb2x5Z29uOiAobykgPT4gby5wb2x5Z29uLFxuICAgICAgfSksXG4gICAgICBuZXcgUG9seWdvbkxheWVyKHtcbiAgICAgICAgaWQ6IExBWUVSX0lEX1BJQ0ssXG4gICAgICAgIGRhdGE6IGRhdGFQaWNrLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGdldExpbmVDb2xvcjogKG9iaikgPT4gb2JqLmxpbmVDb2xvciB8fCBbMCwgMCwgMCwgMjU1XSxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBnZXRGaWxsQ29sb3I6IChvYmopID0+IG9iai5maWxsQ29sb3IgfHwgWzAsIDAsIDAsIDI1NV0sXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZnA2NDogZmFsc2UsXG4gICAgICAgIG9wYWNpdHk6IDEuMCxcbiAgICAgICAgc3Ryb2tlZDogZmFsc2UsXG4gICAgICAgIHBpY2thYmxlOiB0cnVlLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGdldFBvbHlnb246IChvKSA9PiBvLnBvbHlnb24sXG4gICAgICB9KSxcbiAgICBdO1xuICB9XG59XG4iXX0=","import { PolygonLayer } from '@deck.gl/layers';\nimport { point, polygon } from '@turf/helpers';\nimport turfBbox from '@turf/bbox';\nimport turfBboxPolygon from '@turf/bbox-polygon';\nimport turfBuffer from '@turf/buffer';\nimport turfDifference from '@turf/difference';\nimport turfDistance from '@turf/distance';\n\nconst POLYGON_LINE_COLOR = [0, 255, 0, 255];\nconst POLYGON_FILL_COLOR = [255, 255, 255, 90];\nconst POLYGON_LINE_WIDTH = 2;\nconst POLYGON_DASHES = [20, 20];\nconst POLYGON_THRESHOLD = 0.01;\nconst EXPANSION_KM = 10;\nconst LAYER_ID_VIEW = 'DeckDrawerView';\nconst LAYER_ID_PICK = 'DeckDrawerPick';\n\nexport const SELECTION_TYPE = {\n NONE: null,\n RECTANGLE: 'rectangle',\n POLYGON: 'polygon',\n};\n\nexport default class DeckDrawer {\n nebula: Record;\n usePolygon: boolean;\n validPolygon: boolean;\n landPoints: [number, number][];\n mousePoints: [number, number][];\n\n constructor(nebula: Record) {\n this.nebula = nebula;\n this.usePolygon = false;\n this.landPoints = [];\n this.mousePoints = [];\n }\n\n _getLayerIds() {\n // TODO: sort by mouse priority\n return this.nebula.deckgl.props.layers\n .filter((l) => l && l.props && l.props.nebulaLayer && l.props.nebulaLayer.enableSelection)\n .map((l) => l.id);\n }\n\n _selectFromPickingInfos(pickingInfos: Record[]) {\n const objects = pickingInfos.map(\n ({ layer, index, object }) =>\n object.original || layer.props.nebulaLayer.deckCache.originals[index]\n );\n this.nebula.props.onSelection(objects);\n }\n\n _getBoundingBox(): Record {\n const { mousePoints } = this;\n const allX = mousePoints.map((mousePoint) => mousePoint[0]);\n const allY = mousePoints.map((mousePoint) => mousePoint[1]);\n const x = Math.min(...allX);\n const y = Math.min(...allY);\n const maxX = Math.max(...allX);\n const maxY = Math.max(...allY);\n\n return { x, y, width: maxX - x, height: maxY - y };\n }\n\n _selectRectangleObjects() {\n if (this.landPoints.length !== 2) return;\n\n const [x1, y1] = this.mousePoints[0];\n const [x2, y2] = this.mousePoints[1];\n const pickingInfos = this.nebula.deckgl.pickObjects({\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1),\n layerIds: this._getLayerIds(),\n });\n\n this._selectFromPickingInfos(pickingInfos);\n }\n\n _selectPolygonObjects() {\n const pickingInfos = this.nebula.deckgl.pickObjects({\n ...this._getBoundingBox(),\n layerIds: [LAYER_ID_PICK, ...this._getLayerIds()],\n });\n\n this._selectFromPickingInfos(pickingInfos.filter((item) => item.layer.id !== LAYER_ID_PICK));\n }\n\n _getMousePosFromEvent(event: Record): [number, number] {\n const { offsetX, offsetY } = event;\n return [offsetX, offsetY];\n }\n\n handleEvent(\n event: Record,\n lngLat: [number, number],\n selectionType: number\n ): { redraw: boolean; deactivate: boolean } {\n // capture all events (mouse-up is needed to prevent us stuck in moving map)\n if (event.type !== 'mouseup') event.stopPropagation();\n // @ts-ignore\n this.usePolygon = selectionType === SELECTION_TYPE.POLYGON;\n\n let redraw = false;\n let deactivate = false;\n\n const { usePolygon, landPoints, mousePoints } = this;\n\n if (event.type === 'mousedown') {\n if (usePolygon && landPoints.length) {\n // if landPoints.length is zero we want to insert two points (so we let it run the else)\n // also don't insert if polygon is invalid\n if (this.landPoints.length < 3 || this.validPolygon) {\n landPoints.push(lngLat);\n mousePoints.push(this._getMousePosFromEvent(event));\n }\n } else {\n this.landPoints = [lngLat, lngLat];\n const m = this._getMousePosFromEvent(event);\n this.mousePoints = [m, m];\n }\n redraw = true;\n } else if (event.type === 'mousemove' && landPoints.length) {\n // update last point\n landPoints[landPoints.length - 1] = lngLat;\n mousePoints[mousePoints.length - 1] = this._getMousePosFromEvent(event);\n redraw = true;\n } else if (event.type === 'mouseup') {\n if (usePolygon) {\n // check to see if completed\n // TODO: Maybe double-click to finish?\n if (\n landPoints.length > 4 &&\n turfDistance(landPoints[0], landPoints[landPoints.length - 1]) < POLYGON_THRESHOLD &&\n this.validPolygon\n ) {\n this._selectPolygonObjects();\n this.reset();\n redraw = true;\n deactivate = true;\n }\n } else {\n this._selectRectangleObjects();\n this.reset();\n redraw = true;\n deactivate = true;\n }\n }\n\n return { redraw, deactivate };\n }\n\n reset() {\n this.landPoints = [];\n this.mousePoints = [];\n }\n\n _makeStartPointHighlight(center: [number, number]): number[] {\n const buffer = turfBuffer(point(center), POLYGON_THRESHOLD / 4.0);\n // @ts-ignore\n return turfBboxPolygon(turfBbox(buffer)).geometry.coordinates;\n }\n\n render() {\n const data = [];\n const dataPick = [];\n\n if (!this.usePolygon && this.landPoints.length === 2) {\n // Use mouse points instead of land points so we get the right shape\n // no matter what bearing is.\n const [[x1, y1], [x2, y2]] = this.mousePoints;\n const selPolygon = [\n [x1, y1],\n [x1, y2],\n [x2, y2],\n [x2, y1],\n [x1, y1],\n ].map((mousePos) => this.nebula.unprojectMousePosition(mousePos));\n data.push({\n polygon: selPolygon,\n lineColor: POLYGON_LINE_COLOR,\n fillColor: POLYGON_FILL_COLOR,\n });\n } else if (this.usePolygon && this.landPoints.length) {\n data.push({\n polygon: this.landPoints,\n lineColor: POLYGON_LINE_COLOR,\n fillColor: POLYGON_FILL_COLOR,\n });\n\n // Hack: use a polygon to hide the outside, because pickObjects()\n // does not support polygons\n if (this.landPoints.length >= 3) {\n const landPointsPoly = polygon([[...this.landPoints, this.landPoints[0]]]);\n const bigBuffer = turfBuffer(point(this.landPoints[0]), EXPANSION_KM);\n let bigPolygon;\n try {\n // turfDifference throws an exception if the polygon\n // intersects with itself\n bigPolygon = turfDifference(bigBuffer, landPointsPoly);\n dataPick.push({\n polygon: bigPolygon.geometry.coordinates,\n fillColor: [0, 0, 0, 1],\n });\n this.validPolygon = true;\n } catch (e) {\n // invalid selection polygon\n this.validPolygon = false;\n }\n }\n }\n\n if (this.landPoints.length) {\n // highlight start point\n data.push({\n polygon: this._makeStartPointHighlight(this.landPoints[0]),\n lineColor: [0, 0, 0, 0],\n fillColor: POLYGON_LINE_COLOR,\n });\n }\n\n // Hack to make the PolygonLayer() stay active,\n // otherwise it takes 3 seconds (!) to init!\n // TODO: fix this\n data.push({ polygon: [[0, 0]] });\n dataPick.push({ polygon: [[0, 0]] });\n\n return [\n new PolygonLayer({\n id: LAYER_ID_VIEW,\n data,\n // @ts-ignore\n fp64: false,\n opacity: 1.0,\n pickable: false,\n lineWidthMinPixels: POLYGON_LINE_WIDTH,\n lineWidthMaxPixels: POLYGON_LINE_WIDTH,\n lineDashJustified: true,\n getLineDashArray: (x) => POLYGON_DASHES,\n // @ts-ignore\n getLineColor: (obj) => obj.lineColor || [0, 0, 0, 255],\n // @ts-ignore\n getFillColor: (obj) => obj.fillColor || [0, 0, 0, 255],\n // @ts-ignore\n getPolygon: (o) => o.polygon,\n }),\n new PolygonLayer({\n id: LAYER_ID_PICK,\n data: dataPick,\n // @ts-ignore\n getLineColor: (obj) => obj.lineColor || [0, 0, 0, 255],\n // @ts-ignore\n getFillColor: (obj) => obj.fillColor || [0, 0, 0, 255],\n // @ts-ignore\n fp64: false,\n opacity: 1.0,\n stroked: false,\n pickable: true,\n // @ts-ignore\n getPolygon: (o) => o.polygon,\n }),\n ];\n }\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { CompositeLayer, createIterable, log } from '@deck.gl/core';\nimport SolidPolygonLayer from '../solid-polygon-layer/solid-polygon-layer';\nimport PathLayer from '../path-layer/path-layer';\nimport * as Polygon from '../solid-polygon-layer/polygon';\nimport { replaceInRange } from '../utils';\nconst defaultLineColor = [0, 0, 0, 255];\nconst defaultFillColor = [0, 0, 0, 255];\nconst defaultProps = {\n stroked: true,\n filled: true,\n extruded: false,\n elevationScale: 1,\n wireframe: false,\n _normalize: true,\n _windingOrder: 'CW',\n lineWidthUnits: 'meters',\n lineWidthScale: 1,\n lineWidthMinPixels: 0,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n lineJointRounded: false,\n lineMiterLimit: 4,\n getPolygon: {\n type: 'accessor',\n value: f => f.polygon\n },\n getFillColor: {\n type: 'accessor',\n value: defaultFillColor\n },\n getLineColor: {\n type: 'accessor',\n value: defaultLineColor\n },\n getLineWidth: {\n type: 'accessor',\n value: 1\n },\n getElevation: {\n type: 'accessor',\n value: 1000\n },\n material: true\n};\nexport default class PolygonLayer extends CompositeLayer {\n initializeState() {\n this.state = {\n paths: []\n };\n\n if (this.props.getLineDashArray) {\n log.removed('getLineDashArray', 'PathStyleExtension')();\n }\n }\n\n updateState({\n changeFlags\n }) {\n const geometryChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPolygon);\n\n if (geometryChanged && Array.isArray(changeFlags.dataChanged)) {\n const paths = this.state.paths.slice();\n const pathsDiff = changeFlags.dataChanged.map(dataRange => replaceInRange({\n data: paths,\n getIndex: p => p.__source.index,\n dataRange,\n replace: this._getPaths(dataRange)\n }));\n this.setState({\n paths,\n pathsDiff\n });\n } else if (geometryChanged) {\n this.setState({\n paths: this._getPaths(),\n pathsDiff: null\n });\n }\n }\n\n _getPaths(dataRange = {}) {\n const {\n data,\n getPolygon,\n positionFormat,\n _normalize\n } = this.props;\n const paths = [];\n const positionSize = positionFormat === 'XY' ? 2 : 3;\n const {\n startRow,\n endRow\n } = dataRange;\n const {\n iterable,\n objectInfo\n } = createIterable(data, startRow, endRow);\n\n for (const object of iterable) {\n objectInfo.index++;\n let polygon = getPolygon(object, objectInfo);\n\n if (_normalize) {\n polygon = Polygon.normalize(polygon, positionSize);\n }\n\n const {\n holeIndices\n } = polygon;\n const positions = polygon.positions || polygon;\n\n if (holeIndices) {\n for (let i = 0; i <= holeIndices.length; i++) {\n const path = positions.slice(holeIndices[i - 1] || 0, holeIndices[i] || positions.length);\n paths.push(this.getSubLayerRow({\n path\n }, object, objectInfo.index));\n }\n } else {\n paths.push(this.getSubLayerRow({\n path: positions\n }, object, objectInfo.index));\n }\n }\n\n return paths;\n }\n\n renderLayers() {\n const {\n data,\n _dataDiff,\n stroked,\n filled,\n extruded,\n wireframe,\n _normalize,\n _windingOrder,\n elevationScale,\n transitions,\n positionFormat\n } = this.props;\n const {\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n lineJointRounded,\n lineMiterLimit,\n lineDashJustified\n } = this.props;\n const {\n getFillColor,\n getLineColor,\n getLineWidth,\n getLineDashArray,\n getElevation,\n getPolygon,\n updateTriggers,\n material\n } = this.props;\n const {\n paths,\n pathsDiff\n } = this.state;\n const FillLayer = this.getSubLayerClass('fill', SolidPolygonLayer);\n const StrokeLayer = this.getSubLayerClass('stroke', PathLayer);\n const polygonLayer = this.shouldRenderSubLayer('fill', paths) && new FillLayer({\n _dataDiff,\n extruded,\n elevationScale,\n filled,\n wireframe,\n _normalize,\n _windingOrder,\n getElevation,\n getFillColor,\n getLineColor: extruded && wireframe ? getLineColor : defaultLineColor,\n material,\n transitions\n }, this.getSubLayerProps({\n id: 'fill',\n updateTriggers: updateTriggers && {\n getPolygon: updateTriggers.getPolygon,\n getElevation: updateTriggers.getElevation,\n getFillColor: updateTriggers.getFillColor,\n lineColors: extruded && wireframe,\n getLineColor: updateTriggers.getLineColor\n }\n }), {\n data,\n positionFormat,\n getPolygon\n });\n const polygonLineLayer = !extruded && stroked && this.shouldRenderSubLayer('stroke', paths) && new StrokeLayer({\n _dataDiff: pathsDiff && (() => pathsDiff),\n widthUnits: lineWidthUnits,\n widthScale: lineWidthScale,\n widthMinPixels: lineWidthMinPixels,\n widthMaxPixels: lineWidthMaxPixels,\n jointRounded: lineJointRounded,\n miterLimit: lineMiterLimit,\n dashJustified: lineDashJustified,\n _pathType: 'loop',\n transitions: transitions && {\n getWidth: transitions.getLineWidth,\n getColor: transitions.getLineColor,\n getPath: transitions.getPolygon\n },\n getColor: this.getSubLayerAccessor(getLineColor),\n getWidth: this.getSubLayerAccessor(getLineWidth),\n getDashArray: this.getSubLayerAccessor(getLineDashArray)\n }, this.getSubLayerProps({\n id: 'stroke',\n updateTriggers: updateTriggers && {\n getWidth: updateTriggers.getLineWidth,\n getColor: updateTriggers.getLineColor,\n getDashArray: updateTriggers.getLineDashArray\n }\n }), {\n data: paths,\n positionFormat,\n getPath: x => x.path\n });\n return [!extruded && polygonLayer, polygonLineLayer, extruded && polygonLayer];\n }\n\n}\n\n_defineProperty(PolygonLayer, \"layerName\", 'PolygonLayer');\n\n_defineProperty(PolygonLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=polygon-layer.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {\n Accessor,\n AccessorFunction,\n Color,\n CompositeLayer,\n CompositeLayerProps,\n createIterable,\n Layer,\n LayerDataSource,\n LayersList,\n log,\n Unit,\n Material,\n UpdateParameters,\n DefaultProps\n} from '@deck.gl/core';\nimport SolidPolygonLayer from '../solid-polygon-layer/solid-polygon-layer';\nimport PathLayer from '../path-layer/path-layer';\nimport * as Polygon from '../solid-polygon-layer/polygon';\nimport {replaceInRange} from '../utils';\n\n/**\n * All properties supported by `PolygonLayer`.\n */\nexport type PolygonLayerProps = _PolygonLayerProps & CompositeLayerProps;\n\n/**\n * Properties added by `PolygonLayer`.\n */\ntype _PolygonLayerProps = {\n data: LayerDataSource;\n /**\n * Whether to draw an outline around the polygon (solid fill).\n *\n * Note that both the outer polygon as well the outlines of any holes will be drawn.\n *\n * @default true\n */\n stroked?: boolean;\n\n /**\n * Whether to draw a filled polygon (solid fill).\n *\n * Note that only the area between the outer polygon and any holes will be filled.\n *\n * @default true\n */\n filled?: boolean;\n\n /**\n * Whether to extrude the polygons.\n *\n * Based on the elevations provided by the `getElevation` accessor.\n *\n * If set to `false`, all polygons will be flat, this generates less geometry and is faster\n * than simply returning 0 from getElevation.\n *\n * @default false\n */\n extruded?: boolean;\n\n /**\n * Elevation multiplier.\n *\n * The final elevation is calculated by `elevationScale * getElevation(d)`.\n * `elevationScale` is a handy property to scale all elevation without updating the data.\n *\n * @default 1\n */\n elevationScale?: number;\n\n /**\n * Whether to generate a line wireframe of the hexagon.\n *\n * The outline will have \"horizontal\" lines closing the top and bottom polygons and a vertical\n * line (a \"strut\") for each vertex on the polygon.\n *\n * @default false\n */\n wireframe?: boolean;\n\n /**\n * The units of the line width, one of `meters`, `common`, and `pixels`.\n *\n * @default 'meters'\n * @see Unit.\n */\n lineWidthUnits?: Unit;\n\n /**\n * The line width multiplier that multiplied to all outlines of `Polygon` and `MultiPolygon`\n * features if the stroked attribute is true.\n *\n * @default 1\n */\n lineWidthScale?: number;\n\n /**\n * The minimum line width in pixels.\n *\n * @default 0\n */\n lineWidthMinPixels?: number;\n\n /**\n * The maximum line width in pixels\n *\n * @default Number.MAX_SAFE_INTEGER\n */\n lineWidthMaxPixels?: number;\n\n /**\n * Type of joint. If `true`, draw round joints. Otherwise draw miter joints.\n *\n * @default false\n */\n lineJointRounded?: boolean;\n\n /**\n * The maximum extent of a joint in ratio to the stroke width.\n *\n * Only works if `lineJointRounded` is false.\n *\n * @default 4\n */\n lineMiterLimit?: number;\n\n lineDashJustified?: boolean;\n\n /** Called on each object in the data stream to retrieve its corresponding polygon. */\n getPolygon?: AccessorFunction;\n\n /**\n * Fill collor value or accessor.\n *\n * @default [0, 0, 0, 255]\n */\n getFillColor?: Accessor;\n\n /**\n * Line color value or accessor.\n *\n * @default [0, 0, 0, 255]\n */\n getLineColor?: Accessor;\n\n /**\n * Line width value or accessor.\n *\n * @default [0, 0, 0, 255]\n */\n getLineWidth?: Accessor;\n\n /**\n * Elevation valur or accessor.\n *\n * Only used if `extruded: true`.\n *\n * @default 1000\n */\n getElevation?: Accessor;\n\n /**\n * This property has been moved to `PathStyleExtension`.\n *\n * @deprecated\n */\n getLineDashArray?: Accessor | null;\n\n /**\n * If `false`, will skip normalizing the coordinates returned by `getPolygon`.\n *\n * **Note**: This prop is experimental\n *\n * @default true\n */\n _normalize?: boolean;\n\n /**\n * Specifies the winding order of rings in the polygon data.\n *\n * **Note**: This prop is experimental\n *\n * @default 'CW'\n */\n _windingOrder?: 'CW' | 'CCW';\n\n /**\n * Material settings for lighting effect. Applies if `extruded: true`.\n *\n * @default true\n * @see https://deck.gl/docs/developer-guide/using-lighting\n */\n material?: Material;\n};\n\nconst defaultLineColor: [number, number, number, number] = [0, 0, 0, 255];\nconst defaultFillColor: [number, number, number, number] = [0, 0, 0, 255];\n\nconst defaultProps: DefaultProps = {\n stroked: true,\n filled: true,\n extruded: false,\n elevationScale: 1,\n wireframe: false,\n _normalize: true,\n _windingOrder: 'CW',\n\n lineWidthUnits: 'meters',\n lineWidthScale: 1,\n lineWidthMinPixels: 0,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n lineJointRounded: false,\n lineMiterLimit: 4,\n\n getPolygon: {type: 'accessor', value: f => f.polygon},\n // Polygon fill color\n getFillColor: {type: 'accessor', value: defaultFillColor},\n // Point, line and polygon outline color\n getLineColor: {type: 'accessor', value: defaultLineColor},\n // Line and polygon outline accessors\n getLineWidth: {type: 'accessor', value: 1},\n // Polygon extrusion accessor\n getElevation: {type: 'accessor', value: 1000},\n\n // Optional material for 'lighting' shader module\n material: true\n};\n\n/** A composite layer that renders filled, stroked and/or extruded polygons. */\nexport default class PolygonLayer extends CompositeLayer<\n Required<_PolygonLayerProps> & ExtraProps\n> {\n static layerName = 'PolygonLayer';\n static defaultProps = defaultProps;\n\n initializeState(): void {\n this.state = {\n paths: []\n };\n\n if (this.props.getLineDashArray) {\n log.removed('getLineDashArray', 'PathStyleExtension')();\n }\n }\n\n updateState({changeFlags}: UpdateParameters) {\n const geometryChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPolygon));\n\n if (geometryChanged && Array.isArray(changeFlags.dataChanged)) {\n const paths = this.state.paths.slice();\n const pathsDiff = changeFlags.dataChanged.map(dataRange =>\n replaceInRange({\n data: paths,\n getIndex: p => p.__source.index,\n dataRange,\n replace: this._getPaths(dataRange)\n })\n );\n this.setState({paths, pathsDiff});\n } else if (geometryChanged) {\n this.setState({\n paths: this._getPaths(),\n pathsDiff: null\n });\n }\n }\n\n private _getPaths(dataRange: {startRow?: number; endRow?: number} = {}): {path: number[]}[] {\n const {data, getPolygon, positionFormat, _normalize} = this.props;\n const paths: {path: number[]}[] = [];\n const positionSize = positionFormat === 'XY' ? 2 : 3;\n const {startRow, endRow} = dataRange;\n\n const {iterable, objectInfo} = createIterable(data, startRow, endRow);\n for (const object of iterable) {\n objectInfo.index++;\n let polygon = getPolygon(object, objectInfo);\n if (_normalize) {\n polygon = Polygon.normalize(polygon, positionSize);\n }\n const {holeIndices} = polygon;\n const positions = polygon.positions || polygon;\n\n if (holeIndices) {\n // split the positions array into `holeIndices.length + 1` rings\n // holeIndices[-1] falls back to 0\n // holeIndices[holeIndices.length] falls back to positions.length\n for (let i = 0; i <= holeIndices.length; i++) {\n const path = positions.slice(holeIndices[i - 1] || 0, holeIndices[i] || positions.length);\n paths.push(this.getSubLayerRow({path}, object, objectInfo.index));\n }\n } else {\n paths.push(this.getSubLayerRow({path: positions}, object, objectInfo.index));\n }\n }\n return paths;\n }\n\n /* eslint-disable complexity */\n renderLayers(): Layer | null | LayersList {\n // Layer composition props\n const {\n data,\n _dataDiff,\n stroked,\n filled,\n extruded,\n wireframe,\n _normalize,\n _windingOrder,\n elevationScale,\n transitions,\n positionFormat\n } = this.props;\n\n // Rendering props underlying layer\n const {\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n lineJointRounded,\n lineMiterLimit,\n lineDashJustified\n } = this.props;\n\n // Accessor props for underlying layers\n const {\n getFillColor,\n getLineColor,\n getLineWidth,\n getLineDashArray,\n getElevation,\n getPolygon,\n updateTriggers,\n material\n } = this.props;\n\n const {paths, pathsDiff} = this.state;\n\n const FillLayer = this.getSubLayerClass('fill', SolidPolygonLayer);\n const StrokeLayer = this.getSubLayerClass('stroke', PathLayer);\n\n // Filled Polygon Layer\n const polygonLayer =\n this.shouldRenderSubLayer('fill', paths) &&\n new FillLayer(\n {\n _dataDiff,\n extruded,\n elevationScale,\n\n filled,\n wireframe,\n _normalize,\n _windingOrder,\n\n getElevation,\n getFillColor,\n getLineColor: extruded && wireframe ? getLineColor : defaultLineColor,\n\n material,\n transitions\n },\n this.getSubLayerProps({\n id: 'fill',\n updateTriggers: updateTriggers && {\n getPolygon: updateTriggers.getPolygon,\n getElevation: updateTriggers.getElevation,\n getFillColor: updateTriggers.getFillColor,\n // using a legacy API to invalid lineColor attributes\n // if (extruded && wireframe) has changed\n lineColors: extruded && wireframe,\n getLineColor: updateTriggers.getLineColor\n }\n }),\n {\n data,\n positionFormat,\n getPolygon\n }\n );\n\n // Polygon line layer\n const polygonLineLayer =\n !extruded &&\n stroked &&\n this.shouldRenderSubLayer('stroke', paths) &&\n new StrokeLayer(\n {\n _dataDiff: pathsDiff && (() => pathsDiff),\n widthUnits: lineWidthUnits,\n widthScale: lineWidthScale,\n widthMinPixels: lineWidthMinPixels,\n widthMaxPixels: lineWidthMaxPixels,\n jointRounded: lineJointRounded,\n miterLimit: lineMiterLimit,\n dashJustified: lineDashJustified,\n\n // Already normalized\n _pathType: 'loop',\n\n transitions: transitions && {\n getWidth: transitions.getLineWidth,\n getColor: transitions.getLineColor,\n getPath: transitions.getPolygon\n },\n\n getColor: this.getSubLayerAccessor(getLineColor),\n getWidth: this.getSubLayerAccessor(getLineWidth),\n getDashArray: this.getSubLayerAccessor(getLineDashArray)\n },\n this.getSubLayerProps({\n id: 'stroke',\n updateTriggers: updateTriggers && {\n getWidth: updateTriggers.getLineWidth,\n getColor: updateTriggers.getLineColor,\n getDashArray: updateTriggers.getLineDashArray\n }\n }),\n {\n data: paths,\n positionFormat,\n getPath: x => x.path\n }\n );\n\n return [\n // If not extruded: flat fill layer is drawn below outlines\n !extruded && polygonLayer,\n polygonLineLayer,\n // If extruded: draw fill layer last for correct blending behavior\n extruded && polygonLayer\n ];\n }\n /* eslint-enable complexity */\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Layer from './layer';\nimport debug from '../debug';\nimport { flatten } from '../utils/flatten';\nimport { PROP_TYPES_SYMBOL } from '../lifecycle/constants';\nconst TRACE_RENDER_LAYERS = 'compositeLayer.renderLayers';\nexport default class CompositeLayer extends Layer {\n get isComposite() {\n return true;\n }\n\n get isLoaded() {\n return super.isLoaded && this.getSubLayers().every(layer => layer.isLoaded);\n }\n\n getSubLayers() {\n return this.internalState && this.internalState.subLayers || [];\n }\n\n initializeState(context) {}\n\n setState(updateObject) {\n super.setState(updateObject);\n this.setNeedsUpdate();\n }\n\n getPickingInfo({\n info\n }) {\n const {\n object\n } = info;\n const isDataWrapped = object && object.__source && object.__source.parent && object.__source.parent.id === this.id;\n\n if (!isDataWrapped) {\n return info;\n }\n\n info.object = object.__source.object;\n info.index = object.__source.index;\n return info;\n }\n\n filterSubLayer(context) {\n return true;\n }\n\n shouldRenderSubLayer(subLayerId, data) {\n return data && data.length;\n }\n\n getSubLayerClass(subLayerId, DefaultLayerClass) {\n const {\n _subLayerProps: overridingProps\n } = this.props;\n return overridingProps && overridingProps[subLayerId] && overridingProps[subLayerId].type || DefaultLayerClass;\n }\n\n getSubLayerRow(row, sourceObject, sourceObjectIndex) {\n row.__source = {\n parent: this,\n object: sourceObject,\n index: sourceObjectIndex\n };\n return row;\n }\n\n getSubLayerAccessor(accessor) {\n if (typeof accessor === 'function') {\n const objectInfo = {\n index: -1,\n data: this.props.data,\n target: []\n };\n return (x, i) => {\n if (x && x.__source) {\n objectInfo.index = x.__source.index;\n return accessor(x.__source.object, objectInfo);\n }\n\n return accessor(x, i);\n };\n }\n\n return accessor;\n }\n\n getSubLayerProps(sublayerProps = {}) {\n var _this$props$updateTri;\n\n const {\n opacity,\n pickable,\n visible,\n parameters,\n getPolygonOffset,\n highlightedObjectIndex,\n autoHighlight,\n highlightColor,\n coordinateSystem,\n coordinateOrigin,\n wrapLongitude,\n positionFormat,\n modelMatrix,\n extensions,\n fetch,\n operation,\n _subLayerProps: overridingProps\n } = this.props;\n const newProps = {\n id: '',\n updateTriggers: {},\n opacity,\n pickable,\n visible,\n parameters,\n getPolygonOffset,\n highlightedObjectIndex,\n autoHighlight,\n highlightColor,\n coordinateSystem,\n coordinateOrigin,\n wrapLongitude,\n positionFormat,\n modelMatrix,\n extensions,\n fetch,\n operation\n };\n const overridingSublayerProps = overridingProps && sublayerProps.id && overridingProps[sublayerProps.id];\n const overridingSublayerTriggers = overridingSublayerProps && overridingSublayerProps.updateTriggers;\n const sublayerId = sublayerProps.id || 'sublayer';\n\n if (overridingSublayerProps) {\n const propTypes = this.props[PROP_TYPES_SYMBOL];\n const subLayerPropTypes = sublayerProps.type ? sublayerProps.type._propTypes : {};\n\n for (const key in overridingSublayerProps) {\n const propType = subLayerPropTypes[key] || propTypes[key];\n\n if (propType && propType.type === 'accessor') {\n overridingSublayerProps[key] = this.getSubLayerAccessor(overridingSublayerProps[key]);\n }\n }\n }\n\n Object.assign(newProps, sublayerProps, overridingSublayerProps);\n newProps.id = \"\".concat(this.props.id, \"-\").concat(sublayerId);\n newProps.updateTriggers = {\n all: (_this$props$updateTri = this.props.updateTriggers) === null || _this$props$updateTri === void 0 ? void 0 : _this$props$updateTri.all,\n ...sublayerProps.updateTriggers,\n ...overridingSublayerTriggers\n };\n\n for (const extension of extensions) {\n const passThroughProps = extension.getSubLayerProps.call(this, extension);\n\n if (passThroughProps) {\n Object.assign(newProps, passThroughProps, {\n updateTriggers: Object.assign(newProps.updateTriggers, passThroughProps.updateTriggers)\n });\n }\n }\n\n return newProps;\n }\n\n _updateAutoHighlight(info) {\n for (const layer of this.getSubLayers()) {\n layer.updateAutoHighlight(info);\n }\n }\n\n _getAttributeManager() {\n return null;\n }\n\n _postUpdate(updateParams, forceUpdate) {\n let subLayers = this.internalState.subLayers;\n const shouldUpdate = !subLayers || this.needsUpdate();\n\n if (shouldUpdate) {\n const subLayersList = this.renderLayers();\n subLayers = flatten(subLayersList, Boolean);\n this.internalState.subLayers = subLayers;\n }\n\n debug(TRACE_RENDER_LAYERS, this, shouldUpdate, subLayers);\n\n for (const layer of subLayers) {\n layer.parent = this;\n }\n }\n\n}\n\n_defineProperty(CompositeLayer, \"layerName\", 'CompositeLayer');\n//# sourceMappingURL=composite-layer.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport Layer, {UpdateParameters} from './layer';\nimport debug from '../debug';\nimport {flatten} from '../utils/flatten';\n\nimport type AttributeManager from './attribute/attribute-manager';\nimport type {PickingInfo, GetPickingInfoParams} from './picking/pick-info';\nimport type {FilterContext} from '../passes/layers-pass';\nimport type {LayersList, LayerContext} from './layer-manager';\nimport type {CompositeLayerProps, Accessor, AccessorContext} from '../types/layer-props';\nimport {ConstructorOf} from '../types/types';\nimport {PROP_TYPES_SYMBOL} from '../lifecycle/constants';\n\nconst TRACE_RENDER_LAYERS = 'compositeLayer.renderLayers';\n\nexport default abstract class CompositeLayer extends Layer<\n PropsT & Required\n> {\n static layerName: string = 'CompositeLayer';\n\n /** `true` if this layer renders other layers */\n get isComposite(): boolean {\n return true;\n }\n\n /** Returns true if all async resources are loaded */\n get isLoaded(): boolean {\n return super.isLoaded && this.getSubLayers().every(layer => layer.isLoaded);\n }\n\n /** Return last rendered sub layers */\n getSubLayers(): Layer[] {\n return (this.internalState && this.internalState.subLayers) || [];\n }\n\n // initializeState is usually not needed for composite layers\n // Provide empty definition to disable check for missing definition\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n initializeState(context: LayerContext): void {}\n\n /** Updates selected state members and marks the composite layer to need rerender */\n setState(updateObject: any): void {\n super.setState(updateObject);\n // Trigger a layer update\n // Although conceptually layer.draw and compositeLayer.renderLayers are equivalent,\n // they are executed during different lifecycles.\n // draw can be called without calling updateState (e.g. most viewport changes),\n // while renderLayers can only be called during a recursive layer update.\n this.setNeedsUpdate();\n }\n\n /** called to augment the info object that is bubbled up from a sublayer\n override Layer.getPickingInfo() because decoding / setting uniform do\n not apply to a composite layer. */\n getPickingInfo({info}: GetPickingInfoParams): PickingInfo {\n const {object} = info;\n const isDataWrapped =\n object && object.__source && object.__source.parent && object.__source.parent.id === this.id;\n\n if (!isDataWrapped) {\n return info;\n }\n\n // override object with picked data\n info.object = object.__source.object;\n info.index = object.__source.index;\n\n return info;\n }\n\n // Implement to generate subLayers\n abstract renderLayers(): Layer | null | LayersList;\n\n /**\n * Filters sub layers at draw time. Return true if the sub layer should be drawn.\n */\n filterSubLayer(context: FilterContext): boolean {\n return true;\n }\n\n /** Returns true if sub layer needs to be rendered */\n protected shouldRenderSubLayer(subLayerId: string, data: any): boolean {\n return data && data.length;\n }\n\n /** Returns sub layer class for a specific sublayer */\n protected getSubLayerClass(\n subLayerId: string,\n DefaultLayerClass: ConstructorOf\n ): ConstructorOf {\n const {_subLayerProps: overridingProps} = this.props;\n\n return (\n (overridingProps &&\n overridingProps[subLayerId] &&\n (overridingProps[subLayerId].type as ConstructorOf)) ||\n DefaultLayerClass\n );\n }\n\n /** When casting user data into another format to pass to sublayers,\n add reference to the original object and object index */\n protected getSubLayerRow(row: T, sourceObject: any, sourceObjectIndex: number): T {\n // @ts-ignore (TS2339) adding undefined property\n row.__source = {\n parent: this,\n object: sourceObject,\n index: sourceObjectIndex\n };\n return row;\n }\n\n /** Some composite layers cast user data into another format before passing to sublayers\n We need to unwrap them before calling the accessor so that they see the original data\n objects */\n protected getSubLayerAccessor(accessor: Accessor): Accessor {\n if (typeof accessor === 'function') {\n const objectInfo: AccessorContext = {\n index: -1,\n // @ts-ignore accessing resolved data\n data: this.props.data,\n target: []\n };\n return (x: any, i: AccessorContext) => {\n if (x && x.__source) {\n objectInfo.index = x.__source.index;\n // @ts-ignore (TS2349) Out is never a function\n return accessor(x.__source.object as In, objectInfo);\n }\n // @ts-ignore (TS2349) Out is never a function\n return accessor(x as In, i);\n };\n }\n return accessor;\n }\n\n /** Returns sub layer props for a specific sublayer */\n // eslint-disable-next-line complexity\n protected getSubLayerProps(\n sublayerProps: {\n id?: string;\n updateTriggers?: Record;\n [propName: string]: any;\n } = {}\n ): any {\n const {\n opacity,\n pickable,\n visible,\n parameters,\n getPolygonOffset,\n highlightedObjectIndex,\n autoHighlight,\n highlightColor,\n coordinateSystem,\n coordinateOrigin,\n wrapLongitude,\n positionFormat,\n modelMatrix,\n extensions,\n fetch,\n operation,\n _subLayerProps: overridingProps\n } = this.props;\n const newProps = {\n id: '',\n updateTriggers: {},\n opacity,\n pickable,\n visible,\n parameters,\n getPolygonOffset,\n highlightedObjectIndex,\n autoHighlight,\n highlightColor,\n coordinateSystem,\n coordinateOrigin,\n wrapLongitude,\n positionFormat,\n modelMatrix,\n extensions,\n fetch,\n operation\n };\n\n const overridingSublayerProps =\n overridingProps && sublayerProps.id && overridingProps[sublayerProps.id];\n const overridingSublayerTriggers =\n overridingSublayerProps && overridingSublayerProps.updateTriggers;\n const sublayerId = sublayerProps.id || 'sublayer';\n\n if (overridingSublayerProps) {\n const propTypes = this.props[PROP_TYPES_SYMBOL];\n const subLayerPropTypes = sublayerProps.type ? sublayerProps.type._propTypes : {};\n for (const key in overridingSublayerProps) {\n const propType = subLayerPropTypes[key] || propTypes[key];\n // eslint-disable-next-line\n if (propType && propType.type === 'accessor') {\n overridingSublayerProps[key] = this.getSubLayerAccessor(overridingSublayerProps[key]);\n }\n }\n }\n\n Object.assign(\n newProps,\n sublayerProps,\n // experimental feature that allows users to override sublayer props via parent layer prop\n overridingSublayerProps\n );\n newProps.id = `${this.props.id}-${sublayerId}`;\n newProps.updateTriggers = {\n all: this.props.updateTriggers?.all,\n ...sublayerProps.updateTriggers,\n ...overridingSublayerTriggers\n };\n\n // Pass through extension props\n // @ts-ignore (TS2532) extensions is always defined after merging with default props\n for (const extension of extensions) {\n const passThroughProps = extension.getSubLayerProps.call(this, extension);\n if (passThroughProps) {\n Object.assign(newProps, passThroughProps, {\n updateTriggers: Object.assign(newProps.updateTriggers, passThroughProps.updateTriggers)\n });\n }\n }\n\n return newProps;\n }\n\n /** Update sub layers to highlight the hovered object */\n protected _updateAutoHighlight(info: PickingInfo): void {\n for (const layer of this.getSubLayers()) {\n layer.updateAutoHighlight(info);\n }\n }\n\n /** Override base Layer method */\n protected _getAttributeManager(): AttributeManager | null {\n return null;\n }\n\n /** (Internal) Called after an update to rerender sub layers */\n protected _postUpdate(updateParams: UpdateParameters, forceUpdate: boolean) {\n // @ts-ignore (TS2531) this method is only called internally when internalState is defined\n let subLayers = this.internalState.subLayers as Layer[];\n const shouldUpdate = !subLayers || this.needsUpdate();\n if (shouldUpdate) {\n const subLayersList = this.renderLayers();\n // Flatten the returned array, removing any null, undefined or false\n // this allows layers to render sublayers conditionally\n // (see CompositeLayer.renderLayers docs)\n subLayers = flatten(subLayersList, Boolean) as Layer[];\n // @ts-ignore (TS2531) this method is only called internally when internalState is defined\n this.internalState.subLayers = subLayers;\n }\n debug(TRACE_RENDER_LAYERS, this, shouldUpdate, subLayers);\n\n // populate reference to parent layer (this layer)\n // NOTE: needs to be done even when reusing layers as the parent may have changed\n for (const layer of subLayers) {\n layer.parent = this;\n }\n }\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { COORDINATE_SYSTEM } from './constants';\nimport AttributeManager from './attribute/attribute-manager';\nimport UniformTransitionManager from './uniform-transition-manager';\nimport { diffProps, validateProps } from '../lifecycle/props';\nimport { LIFECYCLE } from '../lifecycle/constants';\nimport { count } from '../utils/count';\nimport log from '../utils/log';\nimport debug from '../debug';\nimport { withParameters, setParameters } from '@luma.gl/core';\nimport assert from '../utils/assert';\nimport memoize from '../utils/memoize';\nimport { mergeShaders } from '../utils/shader';\nimport { projectPosition, getWorldPosition } from '../shaderlib/project/project-functions';\nimport typedArrayManager from '../utils/typed-array-manager';\nimport Component from '../lifecycle/component';\nimport LayerState from './layer-state';\nimport { worldToPixels } from '@math.gl/web-mercator';\nimport { load } from '@loaders.gl/core';\nconst TRACE_CHANGE_FLAG = 'layer.changeFlag';\nconst TRACE_INITIALIZE = 'layer.initialize';\nconst TRACE_UPDATE = 'layer.update';\nconst TRACE_FINALIZE = 'layer.finalize';\nconst TRACE_MATCHED = 'layer.matched';\nconst MAX_PICKING_COLOR_CACHE_SIZE = 2 ** 24 - 1;\nconst EMPTY_ARRAY = Object.freeze([]);\nconst areViewportsEqual = memoize(({\n oldViewport,\n viewport\n}) => {\n return oldViewport.equals(viewport);\n});\nlet pickingColorCache = new Uint8ClampedArray(0);\nconst defaultProps = {\n data: {\n type: 'data',\n value: EMPTY_ARRAY,\n async: true\n },\n dataComparator: {\n type: 'function',\n value: null,\n optional: true\n },\n _dataDiff: {\n type: 'function',\n value: data => data && data.__diff,\n optional: true\n },\n dataTransform: {\n type: 'function',\n value: null,\n optional: true\n },\n onDataLoad: {\n type: 'function',\n value: null,\n optional: true\n },\n onError: {\n type: 'function',\n value: null,\n optional: true\n },\n fetch: {\n type: 'function',\n value: (url, {\n propName,\n layer,\n loaders,\n loadOptions,\n signal\n }) => {\n const {\n resourceManager\n } = layer.context;\n loadOptions = loadOptions || layer.getLoadOptions();\n loaders = loaders || layer.props.loaders;\n\n if (signal) {\n var _loadOptions;\n\n loadOptions = { ...loadOptions,\n fetch: { ...((_loadOptions = loadOptions) === null || _loadOptions === void 0 ? void 0 : _loadOptions.fetch),\n signal\n }\n };\n }\n\n let inResourceManager = resourceManager.contains(url);\n\n if (!inResourceManager && !loadOptions) {\n resourceManager.add({\n resourceId: url,\n data: load(url, loaders),\n persistent: false\n });\n inResourceManager = true;\n }\n\n if (inResourceManager) {\n return resourceManager.subscribe({\n resourceId: url,\n onChange: data => {\n var _layer$internalState;\n\n return (_layer$internalState = layer.internalState) === null || _layer$internalState === void 0 ? void 0 : _layer$internalState.reloadAsyncProp(propName, data);\n },\n consumerId: layer.id,\n requestId: propName\n });\n }\n\n return load(url, loaders, loadOptions);\n }\n },\n updateTriggers: {},\n visible: true,\n pickable: false,\n opacity: {\n type: 'number',\n min: 0,\n max: 1,\n value: 1\n },\n operation: 'draw',\n onHover: {\n type: 'function',\n value: null,\n optional: true\n },\n onClick: {\n type: 'function',\n value: null,\n optional: true\n },\n onDragStart: {\n type: 'function',\n value: null,\n optional: true\n },\n onDrag: {\n type: 'function',\n value: null,\n optional: true\n },\n onDragEnd: {\n type: 'function',\n value: null,\n optional: true\n },\n coordinateSystem: COORDINATE_SYSTEM.DEFAULT,\n coordinateOrigin: {\n type: 'array',\n value: [0, 0, 0],\n compare: true\n },\n modelMatrix: {\n type: 'array',\n value: null,\n compare: true,\n optional: true\n },\n wrapLongitude: false,\n positionFormat: 'XYZ',\n colorFormat: 'RGBA',\n parameters: {\n type: 'object',\n value: {},\n optional: true,\n compare: 2\n },\n loadOptions: {\n type: 'object',\n value: null,\n optional: true,\n ignore: true\n },\n transitions: null,\n extensions: [],\n loaders: {\n type: 'array',\n value: [],\n optional: true,\n ignore: true\n },\n getPolygonOffset: {\n type: 'function',\n value: ({\n layerIndex\n }) => [0, -layerIndex * 100]\n },\n highlightedObjectIndex: null,\n autoHighlight: false,\n highlightColor: {\n type: 'accessor',\n value: [0, 0, 128, 128]\n }\n};\nexport default class Layer extends Component {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"internalState\", null);\n\n _defineProperty(this, \"lifecycle\", LIFECYCLE.NO_STATE);\n\n _defineProperty(this, \"context\", void 0);\n\n _defineProperty(this, \"state\", void 0);\n\n _defineProperty(this, \"parent\", null);\n }\n\n static get componentName() {\n return Object.prototype.hasOwnProperty.call(this, 'layerName') ? this.layerName : '';\n }\n\n get root() {\n let layer = this;\n\n while (layer.parent) {\n layer = layer.parent;\n }\n\n return layer;\n }\n\n toString() {\n const className = this.constructor.layerName || this.constructor.name;\n return \"\".concat(className, \"({id: '\").concat(this.props.id, \"'})\");\n }\n\n project(xyz) {\n assert(this.internalState);\n const viewport = this.internalState.viewport || this.context.viewport;\n const worldPosition = getWorldPosition(xyz, {\n viewport,\n modelMatrix: this.props.modelMatrix,\n coordinateOrigin: this.props.coordinateOrigin,\n coordinateSystem: this.props.coordinateSystem\n });\n const [x, y, z] = worldToPixels(worldPosition, viewport.pixelProjectionMatrix);\n return xyz.length === 2 ? [x, y] : [x, y, z];\n }\n\n unproject(xy) {\n assert(this.internalState);\n const viewport = this.internalState.viewport || this.context.viewport;\n return viewport.unproject(xy);\n }\n\n projectPosition(xyz, params) {\n assert(this.internalState);\n const viewport = this.internalState.viewport || this.context.viewport;\n return projectPosition(xyz, {\n viewport,\n modelMatrix: this.props.modelMatrix,\n coordinateOrigin: this.props.coordinateOrigin,\n coordinateSystem: this.props.coordinateSystem,\n ...params\n });\n }\n\n get isComposite() {\n return false;\n }\n\n setState(partialState) {\n this.setChangeFlags({\n stateChanged: true\n });\n Object.assign(this.state, partialState);\n this.setNeedsRedraw();\n }\n\n setNeedsRedraw() {\n if (this.internalState) {\n this.internalState.needsRedraw = true;\n }\n }\n\n setNeedsUpdate() {\n if (this.internalState) {\n this.context.layerManager.setNeedsUpdate(String(this));\n this.internalState.needsUpdate = true;\n }\n }\n\n get isLoaded() {\n return this.internalState ? !this.internalState.isAsyncPropLoading() : false;\n }\n\n get wrapLongitude() {\n return this.props.wrapLongitude;\n }\n\n isPickable() {\n return this.props.pickable && this.props.visible;\n }\n\n getModels() {\n return this.state && (this.state.models || this.state.model && [this.state.model]) || [];\n }\n\n setModuleParameters(moduleParameters) {\n for (const model of this.getModels()) {\n model.updateModuleSettings(moduleParameters);\n }\n }\n\n getAttributeManager() {\n return this.internalState && this.internalState.attributeManager;\n }\n\n getCurrentLayer() {\n return this.internalState && this.internalState.layer;\n }\n\n getLoadOptions() {\n return this.props.loadOptions;\n }\n\n use64bitPositions() {\n const {\n coordinateSystem\n } = this.props;\n return coordinateSystem === COORDINATE_SYSTEM.DEFAULT || coordinateSystem === COORDINATE_SYSTEM.LNGLAT || coordinateSystem === COORDINATE_SYSTEM.CARTESIAN;\n }\n\n onHover(info, pickingEvent) {\n if (this.props.onHover) {\n return this.props.onHover(info, pickingEvent) || false;\n }\n\n return false;\n }\n\n onClick(info, pickingEvent) {\n if (this.props.onClick) {\n return this.props.onClick(info, pickingEvent) || false;\n }\n\n return false;\n }\n\n nullPickingColor() {\n return [0, 0, 0];\n }\n\n encodePickingColor(i, target = []) {\n target[0] = i + 1 & 255;\n target[1] = i + 1 >> 8 & 255;\n target[2] = i + 1 >> 8 >> 8 & 255;\n return target;\n }\n\n decodePickingColor(color) {\n assert(color instanceof Uint8Array);\n const [i1, i2, i3] = color;\n const index = i1 + i2 * 256 + i3 * 65536 - 1;\n return index;\n }\n\n getNumInstances() {\n if (Number.isFinite(this.props.numInstances)) {\n return this.props.numInstances;\n }\n\n if (this.state && this.state.numInstances !== undefined) {\n return this.state.numInstances;\n }\n\n return count(this.props.data);\n }\n\n getStartIndices() {\n if (this.props.startIndices) {\n return this.props.startIndices;\n }\n\n if (this.state && this.state.startIndices) {\n return this.state.startIndices;\n }\n\n return null;\n }\n\n getBounds() {\n var _this$getAttributeMan;\n\n return (_this$getAttributeMan = this.getAttributeManager()) === null || _this$getAttributeMan === void 0 ? void 0 : _this$getAttributeMan.getBounds(['positions', 'instancePositions']);\n }\n\n getShaders(shaders) {\n for (const extension of this.props.extensions) {\n shaders = mergeShaders(shaders, extension.getShaders.call(this, extension));\n }\n\n return shaders;\n }\n\n shouldUpdateState(params) {\n return params.changeFlags.propsOrDataChanged;\n }\n\n updateState(params) {\n const attributeManager = this.getAttributeManager();\n const {\n dataChanged\n } = params.changeFlags;\n\n if (dataChanged && attributeManager) {\n if (Array.isArray(dataChanged)) {\n for (const dataRange of dataChanged) {\n attributeManager.invalidateAll(dataRange);\n }\n } else {\n attributeManager.invalidateAll();\n }\n }\n\n if (attributeManager) {\n const {\n props\n } = params;\n const hasPickingBuffer = this.internalState.hasPickingBuffer;\n const needsPickingBuffer = Number.isInteger(props.highlightedObjectIndex) || props.pickable || props.extensions.some(extension => extension.getNeedsPickingBuffer.call(this, extension));\n\n if (hasPickingBuffer !== needsPickingBuffer) {\n this.internalState.hasPickingBuffer = needsPickingBuffer;\n const {\n pickingColors,\n instancePickingColors\n } = attributeManager.attributes;\n const pickingColorsAttribute = pickingColors || instancePickingColors;\n\n if (pickingColorsAttribute) {\n if (needsPickingBuffer && pickingColorsAttribute.constant) {\n pickingColorsAttribute.constant = false;\n attributeManager.invalidate(pickingColorsAttribute.id);\n }\n\n if (!pickingColorsAttribute.value && !needsPickingBuffer) {\n pickingColorsAttribute.constant = true;\n pickingColorsAttribute.value = [0, 0, 0];\n }\n }\n }\n }\n }\n\n finalizeState(context) {\n for (const model of this.getModels()) {\n model.delete();\n }\n\n const attributeManager = this.getAttributeManager();\n\n if (attributeManager) {\n attributeManager.finalize();\n }\n\n if (this.context) {\n this.context.resourceManager.unsubscribe({\n consumerId: this.id\n });\n }\n\n if (this.internalState) {\n this.internalState.uniformTransitions.clear();\n this.internalState.finalize();\n }\n }\n\n draw(opts) {\n for (const model of this.getModels()) {\n model.draw(opts);\n }\n }\n\n getPickingInfo({\n info,\n mode,\n sourceLayer\n }) {\n const {\n index\n } = info;\n\n if (index >= 0) {\n if (Array.isArray(this.props.data)) {\n info.object = this.props.data[index];\n }\n }\n\n return info;\n }\n\n raiseError(error, message) {\n var _this$props$onError, _this$props;\n\n if (message) {\n error = new Error(\"\".concat(message, \": \").concat(error.message), {\n cause: error\n });\n }\n\n if (!((_this$props$onError = (_this$props = this.props).onError) !== null && _this$props$onError !== void 0 && _this$props$onError.call(_this$props, error))) {\n var _this$context, _this$context$onError;\n\n (_this$context = this.context) === null || _this$context === void 0 ? void 0 : (_this$context$onError = _this$context.onError) === null || _this$context$onError === void 0 ? void 0 : _this$context$onError.call(_this$context, error, this);\n }\n }\n\n getNeedsRedraw(opts = {\n clearRedrawFlags: false\n }) {\n return this._getNeedsRedraw(opts);\n }\n\n needsUpdate() {\n if (!this.internalState) {\n return false;\n }\n\n return this.internalState.needsUpdate || this.hasUniformTransition() || this.shouldUpdateState(this._getUpdateParams());\n }\n\n hasUniformTransition() {\n var _this$internalState;\n\n return ((_this$internalState = this.internalState) === null || _this$internalState === void 0 ? void 0 : _this$internalState.uniformTransitions.active) || false;\n }\n\n activateViewport(viewport) {\n if (!this.internalState) {\n return;\n }\n\n const oldViewport = this.internalState.viewport;\n this.internalState.viewport = viewport;\n\n if (!oldViewport || !areViewportsEqual({\n oldViewport,\n viewport\n })) {\n this.setChangeFlags({\n viewportChanged: true\n });\n\n if (this.isComposite) {\n if (this.needsUpdate()) {\n this.setNeedsUpdate();\n }\n } else {\n this._update();\n }\n }\n }\n\n invalidateAttribute(name = 'all') {\n const attributeManager = this.getAttributeManager();\n\n if (!attributeManager) {\n return;\n }\n\n if (name === 'all') {\n attributeManager.invalidateAll();\n } else {\n attributeManager.invalidate(name);\n }\n }\n\n updateAttributes(changedAttributes) {\n for (const model of this.getModels()) {\n this._setModelAttributes(model, changedAttributes);\n }\n }\n\n _updateAttributes() {\n const attributeManager = this.getAttributeManager();\n\n if (!attributeManager) {\n return;\n }\n\n const props = this.props;\n const numInstances = this.getNumInstances();\n const startIndices = this.getStartIndices();\n attributeManager.update({\n data: props.data,\n numInstances,\n startIndices,\n props,\n transitions: props.transitions,\n buffers: props.data.attributes,\n context: this\n });\n const changedAttributes = attributeManager.getChangedAttributes({\n clearChangedFlags: true\n });\n this.updateAttributes(changedAttributes);\n }\n\n _updateAttributeTransition() {\n const attributeManager = this.getAttributeManager();\n\n if (attributeManager) {\n attributeManager.updateTransition();\n }\n }\n\n _updateUniformTransition() {\n const {\n uniformTransitions\n } = this.internalState;\n\n if (uniformTransitions.active) {\n const propsInTransition = uniformTransitions.update();\n const props = Object.create(this.props);\n\n for (const key in propsInTransition) {\n Object.defineProperty(props, key, {\n value: propsInTransition[key]\n });\n }\n\n return props;\n }\n\n return this.props;\n }\n\n calculateInstancePickingColors(attribute, {\n numInstances\n }) {\n if (attribute.constant) {\n return;\n }\n\n const cacheSize = Math.floor(pickingColorCache.length / 3);\n this.internalState.usesPickingColorCache = true;\n\n if (cacheSize < numInstances) {\n if (numInstances > MAX_PICKING_COLOR_CACHE_SIZE) {\n log.warn('Layer has too many data objects. Picking might not be able to distinguish all objects.')();\n }\n\n pickingColorCache = typedArrayManager.allocate(pickingColorCache, numInstances, {\n size: 3,\n copy: true,\n maxCount: Math.max(numInstances, MAX_PICKING_COLOR_CACHE_SIZE)\n });\n const newCacheSize = Math.floor(pickingColorCache.length / 3);\n const pickingColor = [];\n\n for (let i = cacheSize; i < newCacheSize; i++) {\n this.encodePickingColor(i, pickingColor);\n pickingColorCache[i * 3 + 0] = pickingColor[0];\n pickingColorCache[i * 3 + 1] = pickingColor[1];\n pickingColorCache[i * 3 + 2] = pickingColor[2];\n }\n }\n\n attribute.value = pickingColorCache.subarray(0, numInstances * 3);\n }\n\n _setModelAttributes(model, changedAttributes) {\n const attributeManager = this.getAttributeManager();\n const excludeAttributes = model.userData.excludeAttributes || {};\n const shaderAttributes = attributeManager.getShaderAttributes(changedAttributes, excludeAttributes);\n model.setAttributes(shaderAttributes);\n }\n\n disablePickingIndex(objectIndex) {\n const data = this.props.data;\n\n if (!('attributes' in data)) {\n this._disablePickingIndex(objectIndex);\n\n return;\n }\n\n const {\n pickingColors,\n instancePickingColors\n } = this.getAttributeManager().attributes;\n const colors = pickingColors || instancePickingColors;\n const externalColorAttribute = colors && data.attributes && data.attributes[colors.id];\n\n if (externalColorAttribute && externalColorAttribute.value) {\n const values = externalColorAttribute.value;\n const objectColor = this.encodePickingColor(objectIndex);\n\n for (let index = 0; index < data.length; index++) {\n const i = colors.getVertexOffset(index);\n\n if (values[i] === objectColor[0] && values[i + 1] === objectColor[1] && values[i + 2] === objectColor[2]) {\n this._disablePickingIndex(index);\n }\n }\n } else {\n this._disablePickingIndex(objectIndex);\n }\n }\n\n _disablePickingIndex(objectIndex) {\n const {\n pickingColors,\n instancePickingColors\n } = this.getAttributeManager().attributes;\n const colors = pickingColors || instancePickingColors;\n\n if (!colors) {\n return;\n }\n\n const start = colors.getVertexOffset(objectIndex);\n const end = colors.getVertexOffset(objectIndex + 1);\n colors.buffer.subData({\n data: new Uint8Array(end - start),\n offset: start\n });\n }\n\n restorePickingColors() {\n const {\n pickingColors,\n instancePickingColors\n } = this.getAttributeManager().attributes;\n const colors = pickingColors || instancePickingColors;\n\n if (!colors) {\n return;\n }\n\n if (this.internalState.usesPickingColorCache && colors.value.buffer !== pickingColorCache.buffer) {\n colors.value = pickingColorCache.subarray(0, colors.value.length);\n }\n\n colors.updateSubBuffer({\n startOffset: 0\n });\n }\n\n _initialize() {\n assert(!this.internalState);\n assert(Number.isFinite(this.props.coordinateSystem));\n debug(TRACE_INITIALIZE, this);\n\n const attributeManager = this._getAttributeManager();\n\n if (attributeManager) {\n attributeManager.addInstanced({\n instancePickingColors: {\n type: 5121,\n size: 3,\n noAlloc: true,\n update: this.calculateInstancePickingColors\n }\n });\n }\n\n this.internalState = new LayerState({\n attributeManager,\n layer: this\n });\n\n this._clearChangeFlags();\n\n this.state = {};\n Object.defineProperty(this.state, 'attributeManager', {\n get: () => {\n log.deprecated('layer.state.attributeManager', 'layer.getAttributeManager()')();\n return attributeManager;\n }\n });\n this.internalState.uniformTransitions = new UniformTransitionManager(this.context.timeline);\n this.internalState.onAsyncPropUpdated = this._onAsyncPropUpdated.bind(this);\n this.internalState.setAsyncProps(this.props);\n this.initializeState(this.context);\n\n for (const extension of this.props.extensions) {\n extension.initializeState.call(this, this.context, extension);\n }\n\n this.setChangeFlags({\n dataChanged: 'init',\n propsChanged: 'init',\n viewportChanged: true,\n extensionsChanged: true\n });\n\n this._update();\n }\n\n _transferState(oldLayer) {\n debug(TRACE_MATCHED, this, this === oldLayer);\n const {\n state,\n internalState\n } = oldLayer;\n\n if (this === oldLayer) {\n return;\n }\n\n this.internalState = internalState;\n this.state = state;\n this.internalState.setAsyncProps(this.props);\n\n this._diffProps(this.props, this.internalState.getOldProps());\n }\n\n _update() {\n const stateNeedsUpdate = this.needsUpdate();\n debug(TRACE_UPDATE, this, stateNeedsUpdate);\n\n if (!stateNeedsUpdate) {\n return;\n }\n\n const currentProps = this.props;\n const context = this.context;\n const internalState = this.internalState;\n const currentViewport = context.viewport;\n\n const propsInTransition = this._updateUniformTransition();\n\n internalState.propsInTransition = propsInTransition;\n context.viewport = internalState.viewport || currentViewport;\n this.props = propsInTransition;\n\n try {\n const updateParams = this._getUpdateParams();\n\n const oldModels = this.getModels();\n\n if (context.gl) {\n this.updateState(updateParams);\n } else {\n try {\n this.updateState(updateParams);\n } catch (error) {}\n }\n\n for (const extension of this.props.extensions) {\n extension.updateState.call(this, updateParams, extension);\n }\n\n const modelChanged = this.getModels()[0] !== oldModels[0];\n\n this._postUpdate(updateParams, modelChanged);\n } finally {\n context.viewport = currentViewport;\n this.props = currentProps;\n\n this._clearChangeFlags();\n\n internalState.needsUpdate = false;\n internalState.resetOldProps();\n }\n }\n\n _finalize() {\n debug(TRACE_FINALIZE, this);\n this.finalizeState(this.context);\n\n for (const extension of this.props.extensions) {\n extension.finalizeState.call(this, this.context, extension);\n }\n }\n\n _drawLayer({\n moduleParameters = null,\n uniforms = {},\n parameters = {}\n }) {\n this._updateAttributeTransition();\n\n const currentProps = this.props;\n const context = this.context;\n this.props = this.internalState.propsInTransition || currentProps;\n const opacity = this.props.opacity;\n uniforms.opacity = Math.pow(opacity, 1 / 2.2);\n\n try {\n if (moduleParameters) {\n this.setModuleParameters(moduleParameters);\n }\n\n const {\n getPolygonOffset\n } = this.props;\n const offsets = getPolygonOffset && getPolygonOffset(uniforms) || [0, 0];\n setParameters(context.gl, {\n polygonOffset: offsets\n });\n withParameters(context.gl, parameters, () => {\n const opts = {\n moduleParameters,\n uniforms,\n parameters,\n context\n };\n\n for (const extension of this.props.extensions) {\n extension.draw.call(this, opts, extension);\n }\n\n this.draw(opts);\n });\n } finally {\n this.props = currentProps;\n }\n }\n\n getChangeFlags() {\n var _this$internalState2;\n\n return (_this$internalState2 = this.internalState) === null || _this$internalState2 === void 0 ? void 0 : _this$internalState2.changeFlags;\n }\n\n setChangeFlags(flags) {\n if (!this.internalState) {\n return;\n }\n\n const {\n changeFlags\n } = this.internalState;\n\n for (const key in flags) {\n if (flags[key]) {\n let flagChanged = false;\n\n switch (key) {\n case 'dataChanged':\n const dataChangedReason = flags[key];\n const prevDataChangedReason = changeFlags[key];\n\n if (dataChangedReason && Array.isArray(prevDataChangedReason)) {\n changeFlags.dataChanged = Array.isArray(dataChangedReason) ? prevDataChangedReason.concat(dataChangedReason) : dataChangedReason;\n flagChanged = true;\n }\n\n default:\n if (!changeFlags[key]) {\n changeFlags[key] = flags[key];\n flagChanged = true;\n }\n\n }\n\n if (flagChanged) {\n debug(TRACE_CHANGE_FLAG, this, key, flags);\n }\n }\n }\n\n const propsOrDataChanged = Boolean(changeFlags.dataChanged || changeFlags.updateTriggersChanged || changeFlags.propsChanged || changeFlags.extensionsChanged);\n changeFlags.propsOrDataChanged = propsOrDataChanged;\n changeFlags.somethingChanged = propsOrDataChanged || changeFlags.viewportChanged || changeFlags.stateChanged;\n }\n\n _clearChangeFlags() {\n this.internalState.changeFlags = {\n dataChanged: false,\n propsChanged: false,\n updateTriggersChanged: false,\n viewportChanged: false,\n stateChanged: false,\n extensionsChanged: false,\n propsOrDataChanged: false,\n somethingChanged: false\n };\n }\n\n _diffProps(newProps, oldProps) {\n const changeFlags = diffProps(newProps, oldProps);\n\n if (changeFlags.updateTriggersChanged) {\n for (const key in changeFlags.updateTriggersChanged) {\n if (changeFlags.updateTriggersChanged[key]) {\n this.invalidateAttribute(key);\n }\n }\n }\n\n if (changeFlags.transitionsChanged) {\n for (const key in changeFlags.transitionsChanged) {\n var _newProps$transitions;\n\n this.internalState.uniformTransitions.add(key, oldProps[key], newProps[key], (_newProps$transitions = newProps.transitions) === null || _newProps$transitions === void 0 ? void 0 : _newProps$transitions[key]);\n }\n }\n\n return this.setChangeFlags(changeFlags);\n }\n\n validateProps() {\n validateProps(this.props);\n }\n\n updateAutoHighlight(info) {\n if (this.props.autoHighlight && !Number.isInteger(this.props.highlightedObjectIndex)) {\n this._updateAutoHighlight(info);\n }\n }\n\n _updateAutoHighlight(info) {\n const pickingModuleParameters = {\n pickingSelectedColor: info.picked ? info.color : null\n };\n const {\n highlightColor\n } = this.props;\n\n if (info.picked && typeof highlightColor === 'function') {\n pickingModuleParameters.pickingHighlightColor = highlightColor(info);\n }\n\n this.setModuleParameters(pickingModuleParameters);\n this.setNeedsRedraw();\n }\n\n _getAttributeManager() {\n const context = this.context;\n return new AttributeManager(context.gl, {\n id: this.props.id,\n stats: context.stats,\n timeline: context.timeline\n });\n }\n\n _postUpdate(updateParams, forceUpdate) {\n const {\n props,\n oldProps\n } = updateParams;\n this.setNeedsRedraw();\n\n this._updateAttributes();\n\n const {\n model\n } = this.state;\n model === null || model === void 0 ? void 0 : model.setInstanceCount(this.getNumInstances());\n const {\n autoHighlight,\n highlightedObjectIndex,\n highlightColor\n } = props;\n\n if (forceUpdate || oldProps.autoHighlight !== autoHighlight || oldProps.highlightedObjectIndex !== highlightedObjectIndex || oldProps.highlightColor !== highlightColor) {\n const parameters = {};\n\n if (!autoHighlight) {\n parameters.pickingSelectedColor = null;\n }\n\n if (Array.isArray(highlightColor)) {\n parameters.pickingHighlightColor = highlightColor;\n }\n\n if (forceUpdate || highlightedObjectIndex !== oldProps.highlightedObjectIndex) {\n parameters.pickingSelectedColor = Number.isFinite(highlightedObjectIndex) && highlightedObjectIndex >= 0 ? this.encodePickingColor(highlightedObjectIndex) : null;\n }\n\n this.setModuleParameters(parameters);\n }\n }\n\n _getUpdateParams() {\n return {\n props: this.props,\n oldProps: this.internalState.getOldProps(),\n context: this.context,\n changeFlags: this.internalState.changeFlags\n };\n }\n\n _getNeedsRedraw(opts) {\n if (!this.internalState) {\n return false;\n }\n\n let redraw = false;\n redraw = redraw || this.internalState.needsRedraw && this.id;\n const attributeManager = this.getAttributeManager();\n const attributeManagerNeedsRedraw = attributeManager ? attributeManager.getNeedsRedraw(opts) : false;\n redraw = redraw || attributeManagerNeedsRedraw;\n\n if (redraw) {\n for (const extension of this.props.extensions) {\n extension.onNeedsRedraw.call(this, extension);\n }\n }\n\n this.internalState.needsRedraw = this.internalState.needsRedraw && !opts.clearRedrawFlags;\n return redraw;\n }\n\n _onAsyncPropUpdated() {\n this._diffProps(this.props, this.internalState.getOldProps());\n\n this.setNeedsUpdate();\n }\n\n}\n\n_defineProperty(Layer, \"defaultProps\", defaultProps);\n\n_defineProperty(Layer, \"layerName\", 'Layer');\n//# sourceMappingURL=layer.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* eslint-disable react/no-direct-mutation-state */\nimport {COORDINATE_SYSTEM} from './constants';\nimport AttributeManager from './attribute/attribute-manager';\nimport UniformTransitionManager from './uniform-transition-manager';\nimport {diffProps, validateProps} from '../lifecycle/props';\nimport {LIFECYCLE, Lifecycle} from '../lifecycle/constants';\nimport {count} from '../utils/count';\nimport log from '../utils/log';\nimport debug from '../debug';\nimport GL from '@luma.gl/constants';\nimport {withParameters, setParameters} from '@luma.gl/core';\nimport assert from '../utils/assert';\nimport memoize from '../utils/memoize';\nimport {mergeShaders} from '../utils/shader';\nimport {projectPosition, getWorldPosition} from '../shaderlib/project/project-functions';\nimport typedArrayManager from '../utils/typed-array-manager';\n\nimport Component from '../lifecycle/component';\nimport LayerState, {ChangeFlags} from './layer-state';\n\nimport {worldToPixels} from '@math.gl/web-mercator';\n\nimport {load} from '@loaders.gl/core';\n\nimport type {Loader} from '@loaders.gl/loader-utils';\nimport type {CoordinateSystem} from './constants';\nimport type Attribute from './attribute/attribute';\nimport type {Model} from '@luma.gl/engine';\nimport type {PickingInfo, GetPickingInfoParams} from './picking/pick-info';\nimport type Viewport from '../viewports/viewport';\nimport type {NumericArray} from '../types/types';\nimport type {DefaultProps} from '../lifecycle/prop-types';\nimport type {LayerData, LayerProps} from '../types/layer-props';\nimport type {LayerContext} from './layer-manager';\nimport type {BinaryAttribute} from './attribute/attribute';\n\nconst TRACE_CHANGE_FLAG = 'layer.changeFlag';\nconst TRACE_INITIALIZE = 'layer.initialize';\nconst TRACE_UPDATE = 'layer.update';\nconst TRACE_FINALIZE = 'layer.finalize';\nconst TRACE_MATCHED = 'layer.matched';\n\nconst MAX_PICKING_COLOR_CACHE_SIZE = 2 ** 24 - 1;\n\nconst EMPTY_ARRAY = Object.freeze([]);\n\n// Only compare the same two viewports once\nconst areViewportsEqual = memoize(\n ({oldViewport, viewport}: {oldViewport: Viewport; viewport: Viewport}): boolean => {\n return oldViewport.equals(viewport);\n }\n);\n\nlet pickingColorCache = new Uint8ClampedArray(0);\n\nconst defaultProps: DefaultProps = {\n // data: Special handling for null, see below\n data: {type: 'data', value: EMPTY_ARRAY, async: true},\n dataComparator: {type: 'function', value: null, optional: true},\n _dataDiff: {\n type: 'function',\n // @ts-ignore __diff is not defined on data\n value: data => data && data.__diff,\n optional: true\n },\n dataTransform: {type: 'function', value: null, optional: true},\n onDataLoad: {type: 'function', value: null, optional: true},\n onError: {type: 'function', value: null, optional: true},\n fetch: {\n type: 'function',\n value: (\n url: string,\n {\n propName,\n layer,\n loaders,\n loadOptions,\n signal\n }: {\n propName: string;\n layer: LayerT;\n loaders?: Loader[];\n loadOptions?: any;\n signal?: AbortSignal;\n }\n ) => {\n const {resourceManager} = layer.context;\n loadOptions = loadOptions || layer.getLoadOptions();\n loaders = loaders || layer.props.loaders;\n if (signal) {\n loadOptions = {\n ...loadOptions,\n fetch: {\n ...loadOptions?.fetch,\n signal\n }\n };\n }\n\n let inResourceManager = resourceManager.contains(url);\n\n if (!inResourceManager && !loadOptions) {\n // If there is no layer-specific load options, then attempt to cache this resource in the data manager\n resourceManager.add({resourceId: url, data: load(url, loaders), persistent: false});\n inResourceManager = true;\n }\n if (inResourceManager) {\n return resourceManager.subscribe({\n resourceId: url,\n onChange: data => layer.internalState?.reloadAsyncProp(propName, data),\n consumerId: layer.id,\n requestId: propName\n });\n }\n\n return load(url, loaders, loadOptions);\n }\n },\n updateTriggers: {}, // Update triggers: a core change detection mechanism in deck.gl\n\n visible: true,\n pickable: false,\n opacity: {type: 'number', min: 0, max: 1, value: 1},\n operation: 'draw',\n\n onHover: {type: 'function', value: null, optional: true},\n onClick: {type: 'function', value: null, optional: true},\n onDragStart: {type: 'function', value: null, optional: true},\n onDrag: {type: 'function', value: null, optional: true},\n onDragEnd: {type: 'function', value: null, optional: true},\n\n coordinateSystem: COORDINATE_SYSTEM.DEFAULT,\n coordinateOrigin: {type: 'array', value: [0, 0, 0], compare: true},\n modelMatrix: {type: 'array', value: null, compare: true, optional: true},\n wrapLongitude: false,\n positionFormat: 'XYZ',\n colorFormat: 'RGBA',\n\n parameters: {type: 'object', value: {}, optional: true, compare: 2},\n loadOptions: {type: 'object', value: null, optional: true, ignore: true},\n transitions: null,\n extensions: [],\n loaders: {type: 'array', value: [], optional: true, ignore: true},\n\n // Offset depth based on layer index to avoid z-fighting.\n // Negative values pull layer towards the camera\n // https://www.opengl.org/archives/resources/faq/technical/polygonoffset.htm\n getPolygonOffset: {\n type: 'function',\n value: ({layerIndex}) => [0, -layerIndex * 100]\n },\n\n // Selection/Highlighting\n highlightedObjectIndex: null,\n autoHighlight: false,\n highlightColor: {type: 'accessor', value: [0, 0, 128, 128]}\n};\n\nexport type UpdateParameters = {\n props: LayerT['props'];\n oldProps: LayerT['props'];\n context: LayerContext;\n changeFlags: ChangeFlags;\n};\n\nexport default abstract class Layer extends Component<\n PropsT & Required\n> {\n static defaultProps: DefaultProps = defaultProps;\n static layerName: string = 'Layer';\n\n static override get componentName() {\n return Object.prototype.hasOwnProperty.call(this, 'layerName') ? this.layerName : '';\n }\n\n internalState: LayerState | null = null;\n lifecycle: Lifecycle = LIFECYCLE.NO_STATE; // Helps track and debug the life cycle of the layers\n\n // context and state can technically be null before a layer is initialized/matched.\n // However, they are most extensively accessed in a layer's lifecycle methods, where they are always defined.\n // Checking for null state constantly in layer implementation is unnecessarily verbose.\n context!: LayerContext; // Will reference layer manager's context, contains state shared by layers\n state!: Record; // Will be set to the shared layer state object during layer matching\n\n parent: Layer | null = null;\n\n get root(): Layer {\n // eslint-disable-next-line\n let layer: Layer = this;\n while (layer.parent) {\n layer = layer.parent;\n }\n return layer;\n }\n\n toString(): string {\n const className = (this.constructor as typeof Layer).layerName || this.constructor.name;\n return `${className}({id: '${this.props.id}'})`;\n }\n\n // Public API for users\n\n /** Projects a point with current view state from the current layer's coordinate system to screen */\n project(xyz: number[]): number[] {\n assert(this.internalState);\n const viewport = this.internalState.viewport || this.context.viewport;\n\n const worldPosition = getWorldPosition(xyz, {\n viewport,\n modelMatrix: this.props.modelMatrix,\n coordinateOrigin: this.props.coordinateOrigin,\n coordinateSystem: this.props.coordinateSystem\n });\n const [x, y, z] = worldToPixels(worldPosition, viewport.pixelProjectionMatrix);\n return xyz.length === 2 ? [x, y] : [x, y, z];\n }\n\n /** Unprojects a screen pixel to the current view's default coordinate system\n Note: this does not reverse `project`. */\n unproject(xy: number[]): number[] {\n assert(this.internalState);\n const viewport = this.internalState.viewport || this.context.viewport;\n return viewport.unproject(xy);\n }\n\n /** Projects a point with current view state from the current layer's coordinate system to the world space */\n projectPosition(\n xyz: number[],\n params?: {\n /** The viewport to use */\n viewport?: Viewport;\n /** The coordinate system that the supplied position is in. Default to the same as `coordinateSystem`. */\n fromCoordinateSystem?: CoordinateSystem;\n /** The coordinate origin that the supplied position is in. Default to the same as `coordinateOrigin`. */\n fromCoordinateOrigin?: [number, number, number];\n /** Whether to apply offset mode automatically as does the project shader module.\n * Offset mode places the origin of the common space at the given viewport's center. It is used in some use cases\n * to improve precision in the vertex shader due to the fp32 float limitation.\n * Use `autoOffset:false` if the returned position should not be dependent on the current viewport.\n * Default `true` */\n autoOffset?: boolean;\n }\n ): [number, number, number] {\n assert(this.internalState);\n const viewport = this.internalState.viewport || this.context.viewport;\n\n return projectPosition(xyz, {\n viewport,\n modelMatrix: this.props.modelMatrix,\n coordinateOrigin: this.props.coordinateOrigin,\n coordinateSystem: this.props.coordinateSystem,\n ...params\n });\n }\n\n // Public API for custom layer implementation\n\n /** `true` if this layer renders other layers */\n get isComposite(): boolean {\n return false;\n }\n\n /** Updates selected state members and marks the layer for redraw */\n setState(partialState: any): void {\n this.setChangeFlags({stateChanged: true});\n Object.assign(this.state, partialState);\n this.setNeedsRedraw();\n }\n\n /** Sets the redraw flag for this layer, will trigger a redraw next animation frame */\n setNeedsRedraw(): void {\n if (this.internalState) {\n this.internalState.needsRedraw = true;\n }\n }\n\n /** Mark this layer as needs a deep update */\n setNeedsUpdate() {\n if (this.internalState) {\n this.context.layerManager.setNeedsUpdate(String(this));\n this.internalState.needsUpdate = true;\n }\n }\n\n /** Returns true if all async resources are loaded */\n get isLoaded(): boolean {\n return this.internalState ? !this.internalState.isAsyncPropLoading() : false;\n }\n\n /** Returns true if using shader-based WGS84 longitude wrapping */\n get wrapLongitude(): boolean {\n return this.props.wrapLongitude;\n }\n\n /** @deprecated Returns true if the layer is visible in the picking pass */\n isPickable(): boolean {\n return this.props.pickable && this.props.visible;\n }\n\n /** Returns an array of models used by this layer, can be overriden by layer subclass */\n getModels(): Model[] {\n return (this.state && (this.state.models || (this.state.model && [this.state.model]))) || [];\n }\n\n /** Update shader module parameters */\n setModuleParameters(moduleParameters: any): void {\n for (const model of this.getModels()) {\n model.updateModuleSettings(moduleParameters);\n }\n }\n\n /** Returns the attribute manager of this layer */\n getAttributeManager(): AttributeManager | null {\n return this.internalState && this.internalState.attributeManager;\n }\n\n /** Returns the most recent layer that matched to this state\n (When reacting to an async event, this layer may no longer be the latest) */\n getCurrentLayer(): Layer | null {\n return this.internalState && this.internalState.layer;\n }\n\n /** Returns the default parse options for async props */\n getLoadOptions(): any {\n return this.props.loadOptions;\n }\n\n use64bitPositions(): boolean {\n const {coordinateSystem} = this.props;\n return (\n coordinateSystem === COORDINATE_SYSTEM.DEFAULT ||\n coordinateSystem === COORDINATE_SYSTEM.LNGLAT ||\n coordinateSystem === COORDINATE_SYSTEM.CARTESIAN\n );\n }\n\n // Event handling\n onHover(info: PickingInfo, pickingEvent): boolean {\n if (this.props.onHover) {\n return this.props.onHover(info, pickingEvent) || false;\n }\n return false;\n }\n\n onClick(info: PickingInfo, pickingEvent): boolean {\n if (this.props.onClick) {\n return this.props.onClick(info, pickingEvent) || false;\n }\n return false;\n }\n\n // Returns the picking color that doesn't match any subfeature\n // Use if some graphics do not belong to any pickable subfeature\n // @return {Array} - a black color\n nullPickingColor() {\n return [0, 0, 0];\n }\n\n // Returns the picking color that doesn't match any subfeature\n // Use if some graphics do not belong to any pickable subfeature\n encodePickingColor(i, target: number[] = []): number[] {\n target[0] = (i + 1) & 255;\n target[1] = ((i + 1) >> 8) & 255;\n target[2] = (((i + 1) >> 8) >> 8) & 255;\n return target;\n }\n\n // Returns the index corresponding to a picking color that doesn't match any subfeature\n // @param {Uint8Array} color - color array to be decoded\n // @return {Array} - the decoded picking color\n decodePickingColor(color) {\n assert(color instanceof Uint8Array);\n const [i1, i2, i3] = color;\n // 1 was added to seperate from no selection\n const index = i1 + i2 * 256 + i3 * 65536 - 1;\n return index;\n }\n\n /** Deduces number of instances. Intention is to support:\n - Explicit setting of numInstances\n - Auto-deduction for ES6 containers that define a size member\n - Auto-deduction for Classic Arrays via the built-in length attribute\n - Auto-deduction via arrays */\n getNumInstances(): number {\n // First Check if app has provided an explicit value\n if (Number.isFinite(this.props.numInstances)) {\n return this.props.numInstances as number;\n }\n\n // Second check if the layer has set its own value\n if (this.state && this.state.numInstances !== undefined) {\n return this.state.numInstances;\n }\n\n // Use container library to get a count for any ES6 container or object\n return count(this.props.data);\n }\n\n /** Buffer layout describes how many attribute values are packed for each data object\n The default (null) is one value each object.\n Some data formats (e.g. paths, polygons) have various length. Their buffer layout\n is in the form of [L0, L1, L2, ...] */\n getStartIndices(): NumericArray | null {\n // First Check if startIndices is provided as an explicit value\n if (this.props.startIndices) {\n return this.props.startIndices;\n }\n\n // Second check if the layer has set its own value\n if (this.state && this.state.startIndices) {\n return this.state.startIndices;\n }\n\n return null;\n }\n\n // Default implementation\n getBounds(): [number[], number[]] | null {\n return this.getAttributeManager()?.getBounds(['positions', 'instancePositions']);\n }\n\n // / LIFECYCLE METHODS - overridden by the layer subclasses\n\n /** Called once to set up the initial state. Layers can create WebGL resources here. */\n abstract initializeState(context: LayerContext): void;\n\n getShaders(shaders: any): any {\n for (const extension of this.props.extensions) {\n shaders = mergeShaders(shaders, extension.getShaders.call(this, extension));\n }\n return shaders;\n }\n\n /** Controls if updateState should be called. By default returns true if any prop has changed */\n shouldUpdateState(params: UpdateParameters>): boolean {\n return params.changeFlags.propsOrDataChanged;\n }\n\n /** Default implementation, all attributes will be invalidated and updated when data changes */\n // eslint-disable-next-line complexity\n updateState(params: UpdateParameters>): void {\n const attributeManager = this.getAttributeManager();\n const {dataChanged} = params.changeFlags;\n if (dataChanged && attributeManager) {\n if (Array.isArray(dataChanged)) {\n // is partial update\n for (const dataRange of dataChanged) {\n attributeManager.invalidateAll(dataRange);\n }\n } else {\n attributeManager.invalidateAll();\n }\n }\n\n // Enable/disable picking buffer\n if (attributeManager) {\n const {props} = params;\n const hasPickingBuffer = this.internalState!.hasPickingBuffer;\n const needsPickingBuffer =\n Number.isInteger(props.highlightedObjectIndex) ||\n props.pickable ||\n props.extensions.some(extension => extension.getNeedsPickingBuffer.call(this, extension));\n\n // Only generate picking buffer if needed\n if (hasPickingBuffer !== needsPickingBuffer) {\n this.internalState!.hasPickingBuffer = needsPickingBuffer;\n const {pickingColors, instancePickingColors} = attributeManager.attributes;\n const pickingColorsAttribute = pickingColors || instancePickingColors;\n if (pickingColorsAttribute) {\n if (needsPickingBuffer && pickingColorsAttribute.constant) {\n pickingColorsAttribute.constant = false;\n attributeManager.invalidate(pickingColorsAttribute.id);\n }\n if (!pickingColorsAttribute.value && !needsPickingBuffer) {\n pickingColorsAttribute.constant = true;\n pickingColorsAttribute.value = [0, 0, 0];\n }\n }\n }\n }\n }\n\n /** Called once when layer is no longer matched and state will be discarded. Layers can destroy WebGL resources here. */\n finalizeState(context: LayerContext): void {\n for (const model of this.getModels()) {\n model.delete();\n }\n const attributeManager = this.getAttributeManager();\n if (attributeManager) {\n attributeManager.finalize();\n }\n if (this.context) {\n this.context.resourceManager.unsubscribe({consumerId: this.id});\n }\n if (this.internalState) {\n this.internalState.uniformTransitions.clear();\n this.internalState.finalize();\n }\n }\n\n // If state has a model, draw it with supplied uniforms\n draw(opts) {\n for (const model of this.getModels()) {\n model.draw(opts);\n }\n }\n\n // called to populate the info object that is passed to the event handler\n // @return null to cancel event\n getPickingInfo({info, mode, sourceLayer}: GetPickingInfoParams) {\n const {index} = info;\n\n if (index >= 0) {\n // If props.data is an indexable array, get the object\n if (Array.isArray(this.props.data)) {\n info.object = this.props.data[index];\n }\n }\n\n return info;\n }\n\n // END LIFECYCLE METHODS\n\n // / INTERNAL METHODS - called by LayerManager, DeckRenderer and DeckPicker\n\n /** (Internal) Propagate an error event through the system */\n raiseError(error: Error, message: string): void {\n if (message) {\n // Duplicating error message for backward compatibility, see #7986\n // TODO - revisit in v9\n error = new Error(`${message}: ${error.message}`, {cause: error});\n }\n if (!this.props.onError?.(error)) {\n this.context?.onError?.(error, this);\n }\n }\n\n /** (Internal) Checks if this layer needs redraw */\n getNeedsRedraw(\n opts: {\n /** Reset redraw flags to false after the check */\n clearRedrawFlags: boolean;\n } = {clearRedrawFlags: false}\n ): string | false {\n return this._getNeedsRedraw(opts);\n }\n\n /** (Internal) Checks if this layer needs a deep update */\n needsUpdate(): boolean {\n if (!this.internalState) {\n return false;\n }\n\n // Call subclass lifecycle method\n return (\n this.internalState.needsUpdate ||\n this.hasUniformTransition() ||\n this.shouldUpdateState(this._getUpdateParams())\n );\n // End lifecycle method\n }\n\n /** Checks if this layer has ongoing uniform transition */\n hasUniformTransition(): boolean {\n return this.internalState?.uniformTransitions.active || false;\n }\n\n /** Called when this layer is rendered into the given viewport */\n activateViewport(viewport: Viewport): void {\n if (!this.internalState) {\n return;\n }\n\n const oldViewport = this.internalState.viewport;\n this.internalState.viewport = viewport;\n\n if (!oldViewport || !areViewportsEqual({oldViewport, viewport})) {\n this.setChangeFlags({viewportChanged: true});\n\n if (this.isComposite) {\n if (this.needsUpdate()) {\n // Composite layers may add/remove sublayers on viewport change\n // Because we cannot change the layers list during a draw cycle, we don't want to update sublayers right away\n // This will not call update immediately, but mark the layerManager as needs update on the next frame\n this.setNeedsUpdate();\n }\n } else {\n this._update();\n }\n }\n }\n\n /** Default implementation of attribute invalidation, can be redefined */\n protected invalidateAttribute(name = 'all'): void {\n const attributeManager = this.getAttributeManager();\n if (!attributeManager) {\n return;\n }\n\n if (name === 'all') {\n attributeManager.invalidateAll();\n } else {\n attributeManager.invalidate(name);\n }\n }\n\n /** Send updated attributes to the WebGL model */\n protected updateAttributes(changedAttributes: {[id: string]: Attribute}) {\n for (const model of this.getModels()) {\n this._setModelAttributes(model, changedAttributes);\n }\n }\n\n /** Recalculate any attributes if needed */\n protected _updateAttributes(): void {\n const attributeManager = this.getAttributeManager();\n if (!attributeManager) {\n return;\n }\n const props = this.props;\n\n // Figure out data length\n const numInstances = this.getNumInstances();\n const startIndices = this.getStartIndices();\n\n attributeManager.update({\n data: props.data,\n numInstances,\n startIndices,\n props,\n transitions: props.transitions,\n // @ts-ignore (TS2339) property attribute is not present on some acceptable data types\n buffers: props.data.attributes,\n context: this\n });\n\n const changedAttributes = attributeManager.getChangedAttributes({clearChangedFlags: true});\n this.updateAttributes(changedAttributes);\n }\n\n /** Update attribute transitions. This is called in drawLayer, no model updates required. */\n private _updateAttributeTransition() {\n const attributeManager = this.getAttributeManager();\n if (attributeManager) {\n attributeManager.updateTransition();\n }\n }\n\n /** Update uniform (prop) transitions. This is called in updateState, may result in model updates. */\n private _updateUniformTransition(): Layer['props'] {\n // @ts-ignore (TS2339) internalState is alwasy defined when this method is called\n const {uniformTransitions} = this.internalState;\n if (uniformTransitions.active) {\n // clone props\n const propsInTransition = uniformTransitions.update();\n const props = Object.create(this.props);\n for (const key in propsInTransition) {\n Object.defineProperty(props, key, {value: propsInTransition[key]});\n }\n return props;\n }\n return this.props;\n }\n\n /** Updater for the automatically populated instancePickingColors attribute */\n protected calculateInstancePickingColors(\n attribute: Attribute,\n {numInstances}: {numInstances: number}\n ) {\n if (attribute.constant) {\n return;\n }\n\n // calculateInstancePickingColors always generates the same sequence.\n // pickingColorCache saves the largest generated sequence for reuse\n const cacheSize = Math.floor(pickingColorCache.length / 3);\n\n // Record when using the picking buffer cache, so that layers can always point at the most recently allocated cache\n // @ts-ignore (TS2531) internalState is always defined when this method is called\n this.internalState.usesPickingColorCache = true;\n\n if (cacheSize < numInstances) {\n if (numInstances > MAX_PICKING_COLOR_CACHE_SIZE) {\n log.warn(\n 'Layer has too many data objects. Picking might not be able to distinguish all objects.'\n )();\n }\n\n pickingColorCache = typedArrayManager.allocate(pickingColorCache, numInstances, {\n size: 3,\n copy: true,\n maxCount: Math.max(numInstances, MAX_PICKING_COLOR_CACHE_SIZE)\n });\n\n // If the attribute is larger than the cache, resize the cache and populate the missing chunk\n const newCacheSize = Math.floor(pickingColorCache.length / 3);\n const pickingColor = [];\n for (let i = cacheSize; i < newCacheSize; i++) {\n this.encodePickingColor(i, pickingColor);\n pickingColorCache[i * 3 + 0] = pickingColor[0];\n pickingColorCache[i * 3 + 1] = pickingColor[1];\n pickingColorCache[i * 3 + 2] = pickingColor[2];\n }\n }\n\n attribute.value = pickingColorCache.subarray(0, numInstances * 3);\n }\n\n /** Apply changed attributes to */\n protected _setModelAttributes(\n model: Model,\n changedAttributes: {\n [id: string]: Attribute;\n }\n ) {\n const attributeManager = this.getAttributeManager();\n // @ts-ignore luma.gl type issue\n const excludeAttributes = model.userData.excludeAttributes || {};\n // @ts-ignore (TS2531) this method is only called internally with attributeManager defined\n const shaderAttributes = attributeManager.getShaderAttributes(\n changedAttributes,\n excludeAttributes\n );\n\n model.setAttributes(shaderAttributes);\n }\n\n /** (Internal) Sets the picking color at the specified index to null picking color. Used for multi-depth picking.\n This method may be overriden by layer implementations */\n disablePickingIndex(objectIndex: number) {\n const data = this.props.data as LayerData;\n if (!('attributes' in data)) {\n this._disablePickingIndex(objectIndex);\n return;\n }\n\n // @ts-ignore (TS2531) this method is only called internally with attributeManager defined\n const {pickingColors, instancePickingColors} = this.getAttributeManager().attributes;\n const colors = pickingColors || instancePickingColors;\n const externalColorAttribute =\n colors && data.attributes && (data.attributes[colors.id] as BinaryAttribute);\n if (externalColorAttribute && externalColorAttribute.value) {\n const values = externalColorAttribute.value;\n const objectColor = this.encodePickingColor(objectIndex);\n for (let index = 0; index < data.length; index++) {\n const i = colors.getVertexOffset(index);\n if (\n values[i] === objectColor[0] &&\n values[i + 1] === objectColor[1] &&\n values[i + 2] === objectColor[2]\n ) {\n this._disablePickingIndex(index);\n }\n }\n } else {\n this._disablePickingIndex(objectIndex);\n }\n }\n\n // TODO - simplify subclassing interface\n protected _disablePickingIndex(objectIndex: number): void {\n // @ts-ignore (TS2531) this method is only called internally with attributeManager defined\n const {pickingColors, instancePickingColors} = this.getAttributeManager().attributes;\n const colors = pickingColors || instancePickingColors;\n if (!colors) {\n return;\n }\n\n const start = colors.getVertexOffset(objectIndex);\n const end = colors.getVertexOffset(objectIndex + 1);\n\n // Fill the sub buffer with 0s\n colors.buffer.subData({\n data: new Uint8Array(end - start),\n offset: start // 1 byte per element\n });\n }\n\n /** (Internal) Re-enable all picking indices after multi-depth picking */\n restorePickingColors(): void {\n // @ts-ignore (TS2531) this method is only called internally with attributeManager defined\n const {pickingColors, instancePickingColors} = this.getAttributeManager().attributes;\n const colors = pickingColors || instancePickingColors;\n if (!colors) {\n return;\n }\n // The picking color cache may have been freed and then reallocated. This ensures we read from the currently allocated cache.\n if (\n // @ts-ignore (TS2531) this method is only called internally with internalState defined\n this.internalState.usesPickingColorCache &&\n (colors.value as Uint8ClampedArray).buffer !== pickingColorCache.buffer\n ) {\n colors.value = pickingColorCache.subarray(0, (colors.value as Uint8ClampedArray).length);\n }\n colors.updateSubBuffer({startOffset: 0});\n }\n\n /* eslint-disable max-statements */\n /* (Internal) Called by layer manager when a new layer is found */\n _initialize() {\n assert(!this.internalState); // finalized layer cannot be reused\n assert(Number.isFinite(this.props.coordinateSystem)); // invalid coordinateSystem\n\n debug(TRACE_INITIALIZE, this);\n\n const attributeManager = this._getAttributeManager();\n\n if (attributeManager) {\n // All instanced layers get instancePickingColors attribute by default\n // Their shaders can use it to render a picking scene\n // TODO - this slightly slows down non instanced layers\n attributeManager.addInstanced({\n instancePickingColors: {\n type: GL.UNSIGNED_BYTE,\n size: 3,\n noAlloc: true,\n // Updaters are always called with `this` pointing to the layer\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculateInstancePickingColors\n }\n });\n }\n\n this.internalState = new LayerState({\n attributeManager,\n layer: this\n });\n this._clearChangeFlags(); // populate this.internalState.changeFlags\n\n this.state = {};\n // for backwards compatibility with older layers\n // TODO - remove in next release\n /* eslint-disable accessor-pairs */\n Object.defineProperty(this.state, 'attributeManager', {\n get: () => {\n log.deprecated('layer.state.attributeManager', 'layer.getAttributeManager()')();\n return attributeManager;\n }\n });\n /* eslint-enable accessor-pairs */\n\n this.internalState.uniformTransitions = new UniformTransitionManager(this.context.timeline);\n this.internalState.onAsyncPropUpdated = this._onAsyncPropUpdated.bind(this);\n\n // Ensure any async props are updated\n this.internalState.setAsyncProps(this.props);\n\n // Call subclass lifecycle methods\n this.initializeState(this.context);\n\n // Initialize extensions\n for (const extension of this.props.extensions) {\n extension.initializeState.call(this, this.context, extension);\n }\n // End subclass lifecycle methods\n\n // initializeState callback tends to clear state\n this.setChangeFlags({\n dataChanged: 'init',\n propsChanged: 'init',\n viewportChanged: true,\n extensionsChanged: true\n });\n\n this._update();\n }\n\n /** (Internal) Called by layer manager to transfer state from an old layer */\n _transferState(oldLayer: Layer): void {\n debug(TRACE_MATCHED, this, this === oldLayer);\n\n const {state, internalState} = oldLayer;\n\n if (this === oldLayer) {\n return;\n }\n\n // Move internalState\n this.internalState = internalState as LayerState;\n\n // Move state\n this.state = state;\n // We keep the state ref on old layers to support async actions\n // oldLayer.state = null;\n\n // Ensure any async props are updated\n this.internalState.setAsyncProps(this.props);\n\n this._diffProps(this.props, this.internalState.getOldProps() as Layer['props']);\n }\n\n /** (Internal) Called by layer manager when a new layer is added or an existing layer is matched with a new instance */\n _update(): void {\n // Call subclass lifecycle method\n const stateNeedsUpdate = this.needsUpdate();\n // End lifecycle method\n debug(TRACE_UPDATE, this, stateNeedsUpdate);\n\n if (!stateNeedsUpdate) {\n return;\n }\n\n const currentProps = this.props;\n const context = this.context;\n const internalState = this.internalState as LayerState;\n\n const currentViewport = context.viewport;\n const propsInTransition = this._updateUniformTransition();\n internalState.propsInTransition = propsInTransition;\n // Overwrite this.context.viewport during update to use the last activated viewport on this layer\n // In multi-view applications, a layer may only be drawn in one of the views\n // Which would make the \"active\" viewport different from the shared context\n context.viewport = internalState.viewport || currentViewport;\n // Overwrite this.props during update to use in-transition prop values\n this.props = propsInTransition;\n\n try {\n const updateParams = this._getUpdateParams();\n const oldModels = this.getModels();\n\n // Safely call subclass lifecycle methods\n if (context.gl) {\n this.updateState(updateParams);\n } else {\n try {\n this.updateState(updateParams);\n } catch (error) {\n // ignore error if gl context is missing\n }\n }\n // Execute extension updates\n for (const extension of this.props.extensions) {\n extension.updateState.call(this, updateParams, extension);\n }\n\n const modelChanged = this.getModels()[0] !== oldModels[0];\n this._postUpdate(updateParams, modelChanged);\n // End subclass lifecycle methods\n } finally {\n // Restore shared context\n context.viewport = currentViewport;\n this.props = currentProps;\n this._clearChangeFlags();\n internalState.needsUpdate = false;\n internalState.resetOldProps();\n }\n }\n /* eslint-enable max-statements */\n\n /** (Internal) Called by manager when layer is about to be disposed \n Note: not guaranteed to be called on application shutdown */\n _finalize(): void {\n debug(TRACE_FINALIZE, this);\n\n // Call subclass lifecycle method\n this.finalizeState(this.context);\n // Finalize extensions\n for (const extension of this.props.extensions) {\n extension.finalizeState.call(this, this.context, extension);\n }\n }\n\n // Calculates uniforms\n _drawLayer({\n moduleParameters = null,\n uniforms = {},\n parameters = {}\n }: {\n moduleParameters: any;\n uniforms: any;\n parameters: any;\n }): void {\n this._updateAttributeTransition();\n\n const currentProps = this.props;\n const context = this.context;\n // Overwrite this.props during redraw to use in-transition prop values\n // `internalState.propsInTransition` could be missing if `updateState` failed\n // @ts-ignore (TS2339) internalState is alwasy defined when this method is called\n this.props = this.internalState.propsInTransition || currentProps;\n\n const opacity = this.props.opacity;\n // apply gamma to opacity to make it visually \"linear\"\n uniforms.opacity = Math.pow(opacity, 1 / 2.2);\n\n try {\n // TODO/ib - hack move to luma Model.draw\n if (moduleParameters) {\n this.setModuleParameters(moduleParameters);\n }\n\n // Apply polygon offset to avoid z-fighting\n // TODO - move to draw-layers\n const {getPolygonOffset} = this.props;\n const offsets = (getPolygonOffset && getPolygonOffset(uniforms)) || [0, 0];\n\n setParameters(context.gl, {polygonOffset: offsets});\n\n // Call subclass lifecycle method\n withParameters(context.gl, parameters, () => {\n const opts = {moduleParameters, uniforms, parameters, context};\n\n // extensions\n for (const extension of this.props.extensions) {\n extension.draw.call(this, opts, extension);\n }\n\n this.draw(opts);\n });\n } finally {\n this.props = currentProps;\n }\n\n // End lifecycle method\n }\n\n // Helper methods\n /** Returns the current change flags */\n getChangeFlags(): ChangeFlags | undefined {\n return this.internalState?.changeFlags;\n }\n\n /* eslint-disable complexity */\n /** Dirty some change flags, will be handled by updateLayer */\n setChangeFlags(flags: Partial): void {\n if (!this.internalState) {\n return;\n }\n const {changeFlags} = this.internalState;\n\n /* eslint-disable no-fallthrough, max-depth */\n for (const key in flags) {\n if (flags[key]) {\n let flagChanged = false;\n switch (key) {\n case 'dataChanged':\n // changeFlags.dataChanged may be `false`, a string (reason) or an array of ranges\n const dataChangedReason = flags[key];\n const prevDataChangedReason = changeFlags[key];\n if (dataChangedReason && Array.isArray(prevDataChangedReason)) {\n // Merge partial updates\n changeFlags.dataChanged = Array.isArray(dataChangedReason)\n ? prevDataChangedReason.concat(dataChangedReason)\n : dataChangedReason;\n flagChanged = true;\n }\n\n default:\n if (!changeFlags[key]) {\n changeFlags[key] = flags[key];\n flagChanged = true;\n }\n }\n if (flagChanged) {\n debug(TRACE_CHANGE_FLAG, this, key, flags);\n }\n }\n }\n /* eslint-enable no-fallthrough, max-depth */\n\n // Update composite flags\n const propsOrDataChanged = Boolean(\n changeFlags.dataChanged ||\n changeFlags.updateTriggersChanged ||\n changeFlags.propsChanged ||\n changeFlags.extensionsChanged\n );\n changeFlags.propsOrDataChanged = propsOrDataChanged;\n changeFlags.somethingChanged =\n propsOrDataChanged || changeFlags.viewportChanged || changeFlags.stateChanged;\n }\n /* eslint-enable complexity */\n\n /** Clear all changeFlags, typically after an update */\n private _clearChangeFlags(): void {\n // @ts-ignore TS2531 this method can only be called internally with internalState assigned\n this.internalState.changeFlags = {\n dataChanged: false,\n propsChanged: false,\n updateTriggersChanged: false,\n viewportChanged: false,\n stateChanged: false,\n extensionsChanged: false,\n propsOrDataChanged: false,\n somethingChanged: false\n };\n }\n\n /** Compares the layers props with old props from a matched older layer\n and extracts change flags that describe what has change so that state\n can be update correctly with minimal effort */\n private _diffProps(newProps: Layer['props'], oldProps: Layer['props']) {\n const changeFlags = diffProps(newProps, oldProps);\n\n // iterate over changedTriggers\n if (changeFlags.updateTriggersChanged) {\n for (const key in changeFlags.updateTriggersChanged) {\n if (changeFlags.updateTriggersChanged[key]) {\n this.invalidateAttribute(key);\n }\n }\n }\n\n // trigger uniform transitions\n if (changeFlags.transitionsChanged) {\n for (const key in changeFlags.transitionsChanged) {\n // prop changed and transition is enabled\n // @ts-ignore (TS2531) internalState is always defined when this method is called\n this.internalState.uniformTransitions.add(\n key,\n oldProps[key],\n newProps[key],\n newProps.transitions?.[key]\n );\n }\n }\n\n return this.setChangeFlags(changeFlags);\n }\n\n /** (Internal) called by layer manager to perform extra props validation (in development only) */\n validateProps(): void {\n validateProps(this.props);\n }\n\n /** (Internal) Called by deck picker when the hovered object changes to update the auto highlight */\n updateAutoHighlight(info: PickingInfo): void {\n if (this.props.autoHighlight && !Number.isInteger(this.props.highlightedObjectIndex)) {\n this._updateAutoHighlight(info);\n }\n }\n\n // May be overriden by subclasses\n\n // TODO - simplify subclassing interface\n /** Update picking module parameters to highlight the hovered object */\n protected _updateAutoHighlight(info: PickingInfo): void {\n const pickingModuleParameters: any = {\n pickingSelectedColor: info.picked ? info.color : null\n };\n const {highlightColor} = this.props;\n if (info.picked && typeof highlightColor === 'function') {\n pickingModuleParameters.pickingHighlightColor = highlightColor(info);\n }\n this.setModuleParameters(pickingModuleParameters);\n // setModuleParameters does not trigger redraw\n this.setNeedsRedraw();\n }\n\n /** Create new attribute manager */\n protected _getAttributeManager(): AttributeManager | null {\n const context = this.context;\n return new AttributeManager(context.gl, {\n id: this.props.id,\n stats: context.stats,\n timeline: context.timeline\n });\n }\n\n // Private methods\n\n /** Called after updateState to perform common tasks */\n protected _postUpdate(updateParams: UpdateParameters>, forceUpdate: boolean) {\n const {props, oldProps} = updateParams;\n\n this.setNeedsRedraw();\n // Check if attributes need recalculation\n this._updateAttributes();\n\n // Note: Automatic instance count update only works for single layers\n const {model} = this.state;\n model?.setInstanceCount(this.getNumInstances());\n\n // Set picking module parameters to match props\n const {autoHighlight, highlightedObjectIndex, highlightColor} = props;\n if (\n forceUpdate ||\n oldProps.autoHighlight !== autoHighlight ||\n oldProps.highlightedObjectIndex !== highlightedObjectIndex ||\n oldProps.highlightColor !== highlightColor\n ) {\n const parameters: any = {};\n if (!autoHighlight) {\n parameters.pickingSelectedColor = null;\n }\n if (Array.isArray(highlightColor)) {\n parameters.pickingHighlightColor = highlightColor;\n }\n\n // highlightedObjectIndex will overwrite any settings from auto highlighting.\n // Do not reset unless the value has changed.\n if (forceUpdate || highlightedObjectIndex !== oldProps.highlightedObjectIndex) {\n parameters.pickingSelectedColor =\n Number.isFinite(highlightedObjectIndex) && (highlightedObjectIndex as number) >= 0\n ? this.encodePickingColor(highlightedObjectIndex)\n : null;\n }\n\n this.setModuleParameters(parameters);\n }\n }\n\n private _getUpdateParams(): UpdateParameters> {\n return {\n props: this.props,\n // @ts-ignore TS2531 this method can only be called internally with internalState assigned\n oldProps: this.internalState.getOldProps() as PropsT,\n context: this.context,\n // @ts-ignore TS2531 this method can only be called internally with internalState assigned\n changeFlags: this.internalState.changeFlags\n };\n }\n\n /** Checks state of attributes and model */\n private _getNeedsRedraw(opts: {clearRedrawFlags: boolean}): string | false {\n // this method may be called by the render loop as soon a the layer\n // has been created, so guard against uninitialized state\n if (!this.internalState) {\n return false;\n }\n\n let redraw: string | false = false;\n redraw = redraw || (this.internalState.needsRedraw && this.id);\n\n // TODO - is attribute manager needed? - Model should be enough.\n const attributeManager = this.getAttributeManager();\n const attributeManagerNeedsRedraw = attributeManager\n ? attributeManager.getNeedsRedraw(opts)\n : false;\n redraw = redraw || attributeManagerNeedsRedraw;\n\n if (redraw) {\n for (const extension of this.props.extensions) {\n extension.onNeedsRedraw.call(this, extension);\n }\n }\n\n this.internalState.needsRedraw = this.internalState.needsRedraw && !opts.clearRedrawFlags;\n return redraw;\n }\n\n /** Callback when asyn prop is loaded */\n private _onAsyncPropUpdated(): void {\n // @ts-ignore TS2531 this method can only be called internally with internalState assigned\n this._diffProps(this.props, this.internalState.getOldProps());\n this.setNeedsUpdate();\n }\n}\n","import log from '../utils/log';\nexport const COORDINATE_SYSTEM = {\n DEFAULT: -1,\n LNGLAT: 1,\n METER_OFFSETS: 2,\n LNGLAT_OFFSETS: 3,\n CARTESIAN: 0\n};\nObject.defineProperty(COORDINATE_SYSTEM, 'IDENTITY', {\n get: () => {\n log.deprecated('COORDINATE_SYSTEM.IDENTITY', 'COORDINATE_SYSTEM.CARTESIAN')();\n return 0;\n }\n});\nexport const PROJECTION_MODE = {\n WEB_MERCATOR: 1,\n GLOBE: 2,\n WEB_MERCATOR_AUTO_OFFSET: 4,\n IDENTITY: 0\n};\nexport const UNIT = {\n common: 0,\n meters: 1,\n pixels: 2\n};\nexport const EVENTS = {\n click: {\n handler: 'onClick'\n },\n panstart: {\n handler: 'onDragStart'\n },\n panmove: {\n handler: 'onDrag'\n },\n panend: {\n handler: 'onDragEnd'\n }\n};\nexport const OPERATION = {\n DRAW: 'draw',\n MASK: 'mask',\n TERRAIN: 'terrain'\n};\n//# sourceMappingURL=constants.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// Note: The numeric values here are matched by shader code in the\n// \"project\" and \"project64\" shader modules. Both places need to be\n// updated.\nimport log from '../utils/log';\n\n/**\n * The coordinate system that positions/dimensions are defined in.\n */\nexport const COORDINATE_SYSTEM = {\n /**\n * `LNGLAT` if rendering into a geospatial viewport, `CARTESIAN` otherwise\n */\n DEFAULT: -1,\n /**\n * Positions are interpreted as [longitude, latitude, elevation]\n * longitude/latitude are in degrees, elevation is in meters.\n * Dimensions are in meters.\n */\n LNGLAT: 1,\n\n /**\n * Positions are interpreted as [x, y, z] in meter offsets from the coordinate origin.\n * Dimensions are in meters.\n */\n METER_OFFSETS: 2,\n\n /**\n * Positions are interpreted as [deltaLng, deltaLat, elevation] from the coordinate origin.\n * deltaLng/deltaLat are in degrees, elevation is in meters.\n * Dimensions are in meters.\n */\n LNGLAT_OFFSETS: 3,\n\n /**\n * Positions and dimensions are in the common units of the viewport.\n */\n CARTESIAN: 0\n} as const;\n\n// Enums cannot be directly exported as they are not transpiled correctly into ES5, see https://github.com/visgl/deck.gl/issues/7130\nexport type CoordinateSystem = -1 | 0 | 1 | 2 | 3;\n\n// Deprecated\n/* eslint-disable accessor-pairs */\nObject.defineProperty(COORDINATE_SYSTEM, 'IDENTITY', {\n get: () => {\n log.deprecated('COORDINATE_SYSTEM.IDENTITY', 'COORDINATE_SYSTEM.CARTESIAN')();\n return 0;\n }\n});\n/* eslint-enable accessor-pairs */\n\n/**\n * How coordinates are transformed from the world space into the common space.\n */\nexport const PROJECTION_MODE = {\n /**\n * Render geospatial data in Web Mercator projection\n */\n WEB_MERCATOR: 1,\n /**\n * Render geospatial data as a 3D globe\n */\n GLOBE: 2,\n\n /**\n * (Internal use only) Web Mercator projection at high zoom\n */\n WEB_MERCATOR_AUTO_OFFSET: 4,\n\n /**\n * No transformation\n */\n IDENTITY: 0\n} as const;\n\nexport const UNIT = {\n common: 0,\n meters: 1,\n pixels: 2\n} as const;\n\nexport const EVENTS = {\n click: {handler: 'onClick'},\n panstart: {handler: 'onDragStart'},\n panmove: {handler: 'onDrag'},\n panend: {handler: 'onDragEnd'}\n} as const;\n\n/**\n * @deprecated Use string constants directly\n */\nexport const OPERATION = {\n DRAW: 'draw',\n MASK: 'mask',\n TERRAIN: 'terrain'\n} as const;\n","import { Log } from '@probe.gl/log';\nexport default new Log({\n id: 'deck'\n});\n//# sourceMappingURL=log.js.map","import {Log} from '@probe.gl/log';\n\nexport default new Log({id: 'deck'});\n","import { Log } from './log';\nexport default new Log({\n id: '@probe.gl/log'\n});\nexport { Log } from './log';\nexport { COLOR } from './utils/color';\nexport { addColor } from './utils/color';\nexport { leftPad, rightPad } from './utils/formatters';\nexport { autobind } from './utils/autobind';\nexport { LocalStorage } from './utils/local-storage';\nexport { getHiResTimestamp } from './utils/hi-res-timestamp';\nimport './init';\n//# sourceMappingURL=index.js.map","import {Log} from './log';\n\n// DEFAULT EXPORT IS A LOG INSTANCE\nexport default new Log({id: '@probe.gl/log'});\n\n// LOGGING\nexport {Log} from './log';\nexport {COLOR} from './utils/color';\n\n// UTILITIES\nexport {addColor} from './utils/color';\nexport {leftPad, rightPad} from './utils/formatters';\nexport {autobind} from './utils/autobind';\nexport {LocalStorage} from './utils/local-storage';\nexport {getHiResTimestamp} from './utils/hi-res-timestamp';\n\nimport './init';\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { VERSION, isBrowser } from '@probe.gl/env';\nimport { LocalStorage } from './utils/local-storage';\nimport { formatImage, formatTime, leftPad } from './utils/formatters';\nimport { addColor } from './utils/color';\nimport { autobind } from './utils/autobind';\nimport assert from './utils/assert';\nimport { getHiResTimestamp } from './utils/hi-res-timestamp';\nconst originalConsole = {\n debug: isBrowser ? console.debug || console.log : console.log,\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error\n};\nconst DEFAULT_SETTINGS = {\n enabled: true,\n level: 0\n};\n\nfunction noop() {}\n\nconst cache = {};\nconst ONCE = {\n once: true\n};\nexport class Log {\n constructor() {\n let {\n id\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n id: ''\n };\n\n _defineProperty(this, \"id\", void 0);\n\n _defineProperty(this, \"VERSION\", VERSION);\n\n _defineProperty(this, \"_startTs\", getHiResTimestamp());\n\n _defineProperty(this, \"_deltaTs\", getHiResTimestamp());\n\n _defineProperty(this, \"_storage\", void 0);\n\n _defineProperty(this, \"userData\", {});\n\n _defineProperty(this, \"LOG_THROTTLE_TIMEOUT\", 0);\n\n this.id = id;\n this.userData = {};\n this._storage = new LocalStorage(\"__probe-\".concat(this.id, \"__\"), DEFAULT_SETTINGS);\n this.timeStamp(\"\".concat(this.id, \" started\"));\n autobind(this);\n Object.seal(this);\n }\n\n set level(newLevel) {\n this.setLevel(newLevel);\n }\n\n get level() {\n return this.getLevel();\n }\n\n isEnabled() {\n return this._storage.config.enabled;\n }\n\n getLevel() {\n return this._storage.config.level;\n }\n\n getTotal() {\n return Number((getHiResTimestamp() - this._startTs).toPrecision(10));\n }\n\n getDelta() {\n return Number((getHiResTimestamp() - this._deltaTs).toPrecision(10));\n }\n\n set priority(newPriority) {\n this.level = newPriority;\n }\n\n get priority() {\n return this.level;\n }\n\n getPriority() {\n return this.level;\n }\n\n enable() {\n let enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this._storage.setConfiguration({\n enabled\n });\n\n return this;\n }\n\n setLevel(level) {\n this._storage.setConfiguration({\n level\n });\n\n return this;\n }\n\n get(setting) {\n return this._storage.config[setting];\n }\n\n set(setting, value) {\n this._storage.setConfiguration({\n [setting]: value\n });\n }\n\n settings() {\n if (console.table) {\n console.table(this._storage.config);\n } else {\n console.log(this._storage.config);\n }\n }\n\n assert(condition, message) {\n assert(condition, message);\n }\n\n warn(message) {\n return this._getLogFunction(0, message, originalConsole.warn, arguments, ONCE);\n }\n\n error(message) {\n return this._getLogFunction(0, message, originalConsole.error, arguments);\n }\n\n deprecated(oldUsage, newUsage) {\n return this.warn(\"`\".concat(oldUsage, \"` is deprecated and will be removed in a later version. Use `\").concat(newUsage, \"` instead\"));\n }\n\n removed(oldUsage, newUsage) {\n return this.error(\"`\".concat(oldUsage, \"` has been removed. Use `\").concat(newUsage, \"` instead\"));\n }\n\n probe(logLevel, message) {\n return this._getLogFunction(logLevel, message, originalConsole.log, arguments, {\n time: true,\n once: true\n });\n }\n\n log(logLevel, message) {\n return this._getLogFunction(logLevel, message, originalConsole.debug, arguments);\n }\n\n info(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.info, arguments);\n }\n\n once(logLevel, message) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n return this._getLogFunction(logLevel, message, originalConsole.debug || originalConsole.info, arguments, ONCE);\n }\n\n table(logLevel, table, columns) {\n if (table) {\n return this._getLogFunction(logLevel, table, console.table || noop, columns && [columns], {\n tag: getTableHeader(table)\n });\n }\n\n return noop;\n }\n\n image(_ref) {\n let {\n logLevel,\n priority,\n image,\n message = '',\n scale = 1\n } = _ref;\n\n if (!this._shouldLog(logLevel || priority)) {\n return noop;\n }\n\n return isBrowser ? logImageInBrowser({\n image,\n message,\n scale\n }) : logImageInNode({\n image,\n message,\n scale\n });\n }\n\n time(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);\n }\n\n timeEnd(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeEnd ? console.timeEnd : console.info);\n }\n\n timeStamp(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeStamp || noop);\n }\n\n group(logLevel, message) {\n let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n collapsed: false\n };\n const options = normalizeArguments({\n logLevel,\n message,\n opts\n });\n const {\n collapsed\n } = opts;\n options.method = (collapsed ? console.groupCollapsed : console.group) || console.info;\n return this._getLogFunction(options);\n }\n\n groupCollapsed(logLevel, message) {\n let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.group(logLevel, message, Object.assign({}, opts, {\n collapsed: true\n }));\n }\n\n groupEnd(logLevel) {\n return this._getLogFunction(logLevel, '', console.groupEnd || noop);\n }\n\n withGroup(logLevel, message, func) {\n this.group(logLevel, message)();\n\n try {\n func();\n } finally {\n this.groupEnd(logLevel)();\n }\n }\n\n trace() {\n if (console.trace) {\n console.trace();\n }\n }\n\n _shouldLog(logLevel) {\n return this.isEnabled() && this.getLevel() >= normalizeLogLevel(logLevel);\n }\n\n _getLogFunction(logLevel, message, method, args, opts) {\n if (this._shouldLog(logLevel)) {\n opts = normalizeArguments({\n logLevel,\n message,\n args,\n opts\n });\n method = method || opts.method;\n assert(method);\n opts.total = this.getTotal();\n opts.delta = this.getDelta();\n this._deltaTs = getHiResTimestamp();\n const tag = opts.tag || opts.message;\n\n if (opts.once) {\n if (!cache[tag]) {\n cache[tag] = getHiResTimestamp();\n } else {\n return noop;\n }\n }\n\n message = decorateMessage(this.id, opts.message, opts);\n return method.bind(console, message, ...opts.args);\n }\n\n return noop;\n }\n\n}\n\n_defineProperty(Log, \"VERSION\", VERSION);\n\nfunction normalizeLogLevel(logLevel) {\n if (!logLevel) {\n return 0;\n }\n\n let resolvedLevel;\n\n switch (typeof logLevel) {\n case 'number':\n resolvedLevel = logLevel;\n break;\n\n case 'object':\n resolvedLevel = logLevel.logLevel || logLevel.priority || 0;\n break;\n\n default:\n return 0;\n }\n\n assert(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);\n return resolvedLevel;\n}\n\nexport function normalizeArguments(opts) {\n const {\n logLevel,\n message\n } = opts;\n opts.logLevel = normalizeLogLevel(logLevel);\n const args = opts.args ? Array.from(opts.args) : [];\n\n while (args.length && args.shift() !== message) {}\n\n switch (typeof logLevel) {\n case 'string':\n case 'function':\n if (message !== undefined) {\n args.unshift(message);\n }\n\n opts.message = logLevel;\n break;\n\n case 'object':\n Object.assign(opts, logLevel);\n break;\n\n default:\n }\n\n if (typeof opts.message === 'function') {\n opts.message = opts.message();\n }\n\n const messageType = typeof opts.message;\n assert(messageType === 'string' || messageType === 'object');\n return Object.assign(opts, {\n args\n }, opts.opts);\n}\n\nfunction decorateMessage(id, message, opts) {\n if (typeof message === 'string') {\n const time = opts.time ? leftPad(formatTime(opts.total)) : '';\n message = opts.time ? \"\".concat(id, \": \").concat(time, \" \").concat(message) : \"\".concat(id, \": \").concat(message);\n message = addColor(message, opts.color, opts.background);\n }\n\n return message;\n}\n\nfunction logImageInNode(_ref2) {\n let {\n image,\n message = '',\n scale = 1\n } = _ref2;\n console.warn('removed');\n return noop;\n}\n\nfunction logImageInBrowser(_ref3) {\n let {\n image,\n message = '',\n scale = 1\n } = _ref3;\n\n if (typeof image === 'string') {\n const img = new Image();\n\n img.onload = () => {\n const args = formatImage(img, message, scale);\n console.log(...args);\n };\n\n img.src = image;\n return noop;\n }\n\n const element = image.nodeName || '';\n\n if (element.toLowerCase() === 'img') {\n console.log(...formatImage(image, message, scale));\n return noop;\n }\n\n if (element.toLowerCase() === 'canvas') {\n const img = new Image();\n\n img.onload = () => console.log(...formatImage(img, message, scale));\n\n img.src = image.toDataURL();\n return noop;\n }\n\n return noop;\n}\n\nfunction getTableHeader(table) {\n for (const key in table) {\n for (const title in table[key]) {\n return title || 'untitled';\n }\n }\n\n return 'empty';\n}\n//# sourceMappingURL=log.js.map","// probe.gl, MIT license\n\n/* eslint-disable no-console */\nimport {VERSION, isBrowser} from '@probe.gl/env';\nimport {LocalStorage} from './utils/local-storage';\nimport {formatImage, formatTime, leftPad} from './utils/formatters';\nimport {addColor} from './utils/color';\nimport {autobind} from './utils/autobind';\nimport assert from './utils/assert';\nimport {getHiResTimestamp} from './utils/hi-res-timestamp';\n\n// Instrumentation in other packages may override console methods, so preserve them here\nconst originalConsole = {\n debug: isBrowser ? console.debug || console.log : console.log,\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error\n};\n\ntype Table = Record;\n\ntype LogFunction = () => void;\n\ntype LogOptions = {\n method?;\n time?;\n total?: number;\n delta?: number;\n tag?: string;\n message?: string;\n once?: boolean;\n nothrottle?: boolean;\n args?: any;\n};\n\ntype LogSettings = {\n enabled?: boolean;\n level?: number;\n [key: string]: any;\n};\n\nconst DEFAULT_SETTINGS: Required = {\n enabled: true,\n level: 0\n};\n\nfunction noop() {} // eslint-disable-line @typescript-eslint/no-empty-function\n\nconst cache = {};\nconst ONCE = {once: true};\n\ntype LogConfiguration = {\n enabled?: boolean;\n level?: number;\n};\n\n/** A console wrapper */\n\nexport class Log {\n static VERSION = VERSION;\n\n id: string;\n VERSION: string = VERSION;\n _startTs: number = getHiResTimestamp();\n _deltaTs: number = getHiResTimestamp();\n _storage: LocalStorage;\n userData = {};\n\n // TODO - fix support from throttling groups\n LOG_THROTTLE_TIMEOUT: number = 0; // Time before throttled messages are logged again\n\n constructor({id} = {id: ''}) {\n this.id = id;\n this.userData = {};\n this._storage = new LocalStorage(`__probe-${this.id}__`, DEFAULT_SETTINGS);\n\n this.timeStamp(`${this.id} started`);\n\n autobind(this);\n Object.seal(this);\n }\n\n set level(newLevel: number) {\n this.setLevel(newLevel);\n }\n\n get level(): number {\n return this.getLevel();\n }\n\n isEnabled(): boolean {\n return this._storage.config.enabled;\n }\n\n getLevel(): number {\n return this._storage.config.level;\n }\n\n /** @return milliseconds, with fractions */\n getTotal(): number {\n return Number((getHiResTimestamp() - this._startTs).toPrecision(10));\n }\n\n /** @return milliseconds, with fractions */\n getDelta(): number {\n return Number((getHiResTimestamp() - this._deltaTs).toPrecision(10));\n }\n\n /** @deprecated use logLevel */\n set priority(newPriority: number) {\n this.level = newPriority;\n }\n\n /** @deprecated use logLevel */\n get priority(): number {\n return this.level;\n }\n\n /** @deprecated use logLevel */\n getPriority(): number {\n return this.level;\n }\n\n // Configure\n\n enable(enabled: boolean = true): this {\n this._storage.setConfiguration({enabled});\n return this;\n }\n\n setLevel(level: number): this {\n this._storage.setConfiguration({level});\n return this;\n }\n\n /** return the current status of the setting */\n get(setting: string): any {\n return this._storage.config[setting];\n }\n\n // update the status of the setting\n set(setting: string, value: any): void {\n this._storage.setConfiguration({[setting]: value});\n }\n\n /** Logs the current settings as a table */\n settings(): void {\n if (console.table) {\n console.table(this._storage.config);\n } else {\n console.log(this._storage.config);\n }\n }\n\n // Unconditional logging\n\n assert(condition: unknown, message?: string): asserts condition {\n assert(condition, message);\n }\n\n /** Warn, but only once, no console flooding */\n warn(message: string, ...args): LogFunction;\n warn(message: string): LogFunction {\n return this._getLogFunction(0, message, originalConsole.warn, arguments, ONCE);\n }\n\n /** Print an error */\n error(message: string, ...args): LogFunction;\n error(message: string): LogFunction {\n return this._getLogFunction(0, message, originalConsole.error, arguments);\n }\n\n /** Print a deprecation warning */\n deprecated(oldUsage: string, newUsage: string): LogFunction {\n return this.warn(`\\`${oldUsage}\\` is deprecated and will be removed \\\nin a later version. Use \\`${newUsage}\\` instead`);\n }\n\n /** Print a removal warning */\n removed(oldUsage: string, newUsage: string): LogFunction {\n return this.error(`\\`${oldUsage}\\` has been removed. Use \\`${newUsage}\\` instead`);\n }\n\n // Conditional logging\n\n /** Log to a group */\n probe(logLevel, message?, ...args): LogFunction;\n probe(logLevel, message?): LogFunction {\n return this._getLogFunction(logLevel, message, originalConsole.log, arguments, {\n time: true,\n once: true\n });\n }\n\n /** Log a debug message */\n log(logLevel, message?, ...args): LogFunction;\n log(logLevel, message?): LogFunction {\n return this._getLogFunction(logLevel, message, originalConsole.debug, arguments);\n }\n\n /** Log a normal message */\n info(logLevel, message?, ...args): LogFunction;\n info(logLevel, message?): LogFunction {\n return this._getLogFunction(logLevel, message, console.info, arguments);\n }\n\n /** Log a normal message, but only once, no console flooding */\n once(logLevel, message?, ...args): LogFunction;\n once(logLevel, message?, ...args) {\n return this._getLogFunction(\n logLevel,\n message,\n originalConsole.debug || originalConsole.info,\n arguments,\n ONCE\n );\n }\n\n /** Logs an object as a table */\n table(logLevel, table?, columns?): LogFunction {\n if (table) {\n // @ts-expect-error Not clear how this works, columns being passed as arguments\n return this._getLogFunction(logLevel, table, console.table || noop, columns && [columns], {\n tag: getTableHeader(table)\n });\n }\n return noop;\n }\n\n /** logs an image under Chrome */\n image({logLevel, priority, image, message = '', scale = 1}): LogFunction {\n if (!this._shouldLog(logLevel || priority)) {\n return noop;\n }\n return isBrowser\n ? logImageInBrowser({image, message, scale})\n : logImageInNode({image, message, scale});\n }\n\n time(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);\n }\n\n timeEnd(logLevel, message) {\n return this._getLogFunction(\n logLevel,\n message,\n console.timeEnd ? console.timeEnd : console.info\n );\n }\n\n timeStamp(logLevel, message?) {\n return this._getLogFunction(logLevel, message, console.timeStamp || noop);\n }\n\n group(logLevel, message, opts = {collapsed: false}) {\n const options = normalizeArguments({logLevel, message, opts});\n const {collapsed} = opts;\n // @ts-expect-error\n options.method = (collapsed ? console.groupCollapsed : console.group) || console.info;\n\n return this._getLogFunction(options);\n }\n\n groupCollapsed(logLevel, message, opts = {}) {\n return this.group(logLevel, message, Object.assign({}, opts, {collapsed: true}));\n }\n\n groupEnd(logLevel) {\n return this._getLogFunction(logLevel, '', console.groupEnd || noop);\n }\n\n // EXPERIMENTAL\n\n withGroup(logLevel: number, message: string, func: Function): void {\n this.group(logLevel, message)();\n\n try {\n func();\n } finally {\n this.groupEnd(logLevel)();\n }\n }\n\n trace(): void {\n if (console.trace) {\n console.trace();\n }\n }\n\n // PRIVATE METHODS\n\n /** Deduces log level from a variety of arguments */\n _shouldLog(logLevel: unknown): boolean {\n return this.isEnabled() && this.getLevel() >= normalizeLogLevel(logLevel);\n }\n\n _getLogFunction(\n logLevel: unknown,\n message?: unknown,\n method?: Function,\n args?: IArguments,\n opts?: LogOptions\n ): LogFunction {\n if (this._shouldLog(logLevel)) {\n // normalized opts + timings\n opts = normalizeArguments({logLevel, message, args, opts});\n method = method || opts.method;\n assert(method);\n\n opts.total = this.getTotal();\n opts.delta = this.getDelta();\n // reset delta timer\n this._deltaTs = getHiResTimestamp();\n\n const tag = opts.tag || opts.message;\n\n if (opts.once) {\n if (!cache[tag]) {\n cache[tag] = getHiResTimestamp();\n } else {\n return noop;\n }\n }\n\n // TODO - Make throttling work with groups\n // if (opts.nothrottle || !throttle(tag, this.LOG_THROTTLE_TIMEOUT)) {\n // return noop;\n // }\n\n message = decorateMessage(this.id, opts.message, opts);\n\n // Bind console function so that it can be called after being returned\n return method.bind(console, message, ...opts.args);\n }\n return noop;\n }\n}\n\n/**\n * Get logLevel from first argument:\n * - log(logLevel, message, args) => logLevel\n * - log(message, args) => 0\n * - log({logLevel, ...}, message, args) => logLevel\n * - log({logLevel, message, args}) => logLevel\n */\nfunction normalizeLogLevel(logLevel: unknown): number {\n if (!logLevel) {\n return 0;\n }\n let resolvedLevel;\n\n switch (typeof logLevel) {\n case 'number':\n resolvedLevel = logLevel;\n break;\n\n case 'object':\n // Backward compatibility\n // TODO - deprecate `priority`\n // @ts-expect-error\n resolvedLevel = logLevel.logLevel || logLevel.priority || 0;\n break;\n\n default:\n return 0;\n }\n // 'log level must be a number'\n assert(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);\n\n return resolvedLevel;\n}\n\n/**\n * \"Normalizes\" the various argument patterns into an object with known types\n * - log(logLevel, message, args) => {logLevel, message, args}\n * - log(message, args) => {logLevel: 0, message, args}\n * - log({logLevel, ...}, message, args) => {logLevel, message, args}\n * - log({logLevel, message, args}) => {logLevel, message, args}\n */\nexport function normalizeArguments(opts: {\n logLevel;\n message;\n collapsed?: boolean;\n args?: IArguments;\n opts?;\n}): {\n logLevel: number;\n message: string;\n args: any[];\n} {\n const {logLevel, message} = opts;\n opts.logLevel = normalizeLogLevel(logLevel);\n\n // We use `arguments` instead of rest parameters (...args) because IE\n // does not support the syntax. Rest parameters is transpiled to code with\n // perf impact. Doing it here instead avoids constructing args when logging is\n // disabled.\n // TODO - remove when/if IE support is dropped\n const args: any[] = opts.args ? Array.from(opts.args) : [];\n // args should only contain arguments that appear after `message`\n // eslint-disable-next-line no-empty\n while (args.length && args.shift() !== message) {}\n\n switch (typeof logLevel) {\n case 'string':\n case 'function':\n if (message !== undefined) {\n args.unshift(message);\n }\n opts.message = logLevel;\n break;\n\n case 'object':\n Object.assign(opts, logLevel);\n break;\n\n default:\n }\n\n // Resolve functions into strings by calling them\n if (typeof opts.message === 'function') {\n opts.message = opts.message();\n }\n const messageType = typeof opts.message;\n // 'log message must be a string' or object\n assert(messageType === 'string' || messageType === 'object');\n\n // original opts + normalized opts + opts arg + fixed up message\n return Object.assign(opts, {args}, opts.opts);\n}\n\nfunction decorateMessage(id, message, opts) {\n if (typeof message === 'string') {\n const time = opts.time ? leftPad(formatTime(opts.total)) : '';\n message = opts.time ? `${id}: ${time} ${message}` : `${id}: ${message}`;\n message = addColor(message, opts.color, opts.background);\n }\n return message;\n}\n\n/** @deprecated Function removed */\nfunction logImageInNode({image, message = '', scale = 1}) {\n console.warn('removed');\n return noop;\n}\n\nfunction logImageInBrowser({image, message = '', scale = 1}) {\n if (typeof image === 'string') {\n const img = new Image();\n img.onload = () => {\n const args = formatImage(img, message, scale);\n console.log(...args);\n };\n img.src = image;\n return noop;\n }\n const element = image.nodeName || '';\n if (element.toLowerCase() === 'img') {\n console.log(...formatImage(image, message, scale));\n return noop;\n }\n if (element.toLowerCase() === 'canvas') {\n const img = new Image();\n img.onload = () => console.log(...formatImage(img, message, scale));\n img.src = image.toDataURL();\n return noop;\n }\n return noop;\n}\n\nfunction getTableHeader(table: Table): string {\n for (const key in table) {\n for (const title in table[key]) {\n return title || 'untitled';\n }\n }\n return 'empty';\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import isElectron from './is-electron';\nexport default function isBrowser() {\n const isNode = typeof process === 'object' && String(process) === '[object process]' && !process.browser;\n return !isNode || isElectron();\n}\nexport function isBrowserMainThread() {\n return isBrowser() && typeof document !== 'undefined';\n}\n//# sourceMappingURL=is-browser.js.map","// This function is needed in initialization stages,\n// make sure it can be imported in isolation\n\nimport isElectron from './is-electron';\n\nexport default function isBrowser(): boolean {\n // Check if in browser by duck-typing Node context\n const isNode =\n // @ts-expect-error\n typeof process === 'object' && String(process) === '[object process]' && !process.browser;\n\n return !isNode || isElectron();\n}\n\n// document does not exist on worker thread\nexport function isBrowserMainThread(): boolean {\n return isBrowser() && typeof document !== 'undefined';\n}\n","export default function isElectron(mockUserAgent) {\n if (typeof window !== 'undefined' && typeof window.process === 'object' && window.process.type === 'renderer') {\n return true;\n }\n\n if (typeof process !== 'undefined' && typeof process.versions === 'object' && Boolean(process.versions['electron'])) {\n return true;\n }\n\n const realUserAgent = typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent;\n const userAgent = mockUserAgent || realUserAgent;\n\n if (userAgent && userAgent.indexOf('Electron') >= 0) {\n return true;\n }\n\n return false;\n}\n//# sourceMappingURL=is-electron.js.map","// based on https://github.com/cheton/is-electron\n// https://github.com/electron/electron/issues/2288\n/* eslint-disable complexity */\nexport default function isElectron(mockUserAgent?: string): boolean {\n // Renderer process\n if (\n typeof window !== 'undefined' &&\n typeof window.process === 'object' &&\n // @ts-expect-error\n window.process.type === 'renderer'\n ) {\n return true;\n }\n // Main process\n if (\n typeof process !== 'undefined' &&\n typeof process.versions === 'object' &&\n // eslint-disable-next-line\n Boolean(process.versions['electron'])\n ) {\n return true;\n }\n // Detect the user agent when the `nodeIntegration` option is set to true\n const realUserAgent =\n typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent;\n const userAgent = mockUserAgent || realUserAgent;\n if (userAgent && userAgent.indexOf('Electron') >= 0) {\n return true;\n }\n return false;\n}\n","import checkIfBrowser from '../lib/is-browser';\nexport { self, window, global, document, process, console } from '../lib/globals';\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\nexport const isBrowser = checkIfBrowser();\n//# sourceMappingURL=globals.js.map","import checkIfBrowser from '../lib/is-browser';\n\nexport {self, window, global, document, process, console} from '../lib/globals';\n\n// Extract injected version from package.json (injected by babel plugin)\n// @ts-expect-error\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\n\nexport const isBrowser = checkIfBrowser();\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction getStorage(type) {\n try {\n const storage = window[type];\n const x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return storage;\n } catch (e) {\n return null;\n }\n}\n\nexport class LocalStorage {\n constructor(id, defaultConfig) {\n let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'sessionStorage';\n\n _defineProperty(this, \"storage\", void 0);\n\n _defineProperty(this, \"id\", void 0);\n\n _defineProperty(this, \"config\", void 0);\n\n this.storage = getStorage(type);\n this.id = id;\n this.config = defaultConfig;\n\n this._loadConfiguration();\n }\n\n getConfiguration() {\n return this.config;\n }\n\n setConfiguration(configuration) {\n Object.assign(this.config, configuration);\n\n if (this.storage) {\n const serialized = JSON.stringify(this.config);\n this.storage.setItem(this.id, serialized);\n }\n }\n\n _loadConfiguration() {\n let configuration = {};\n\n if (this.storage) {\n const serializedConfiguration = this.storage.getItem(this.id);\n configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};\n }\n\n Object.assign(this.config, configuration);\n return this;\n }\n\n}\n//# sourceMappingURL=local-storage.js.map","// probe.gl, MIT license\n\nfunction getStorage(type): Storage {\n try {\n // @ts-expect-error\n const storage: Storage = window[type];\n const x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return storage;\n } catch (e) {\n return null;\n }\n}\n\n// Store keys in local storage via simple interface\nexport class LocalStorage {\n storage: Storage;\n id: string;\n config: Required;\n\n constructor(id: string, defaultConfig: Required, type = 'sessionStorage') {\n this.storage = getStorage(type);\n this.id = id;\n this.config = defaultConfig;\n this._loadConfiguration();\n }\n\n getConfiguration(): Required {\n return this.config;\n }\n\n setConfiguration(configuration: Configuration): void {\n Object.assign(this.config, configuration);\n if (this.storage) {\n const serialized = JSON.stringify(this.config);\n this.storage.setItem(this.id, serialized);\n }\n }\n\n // Get config from persistent store, if available\n _loadConfiguration() {\n let configuration = {};\n if (this.storage) {\n const serializedConfiguration = this.storage.getItem(this.id);\n configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};\n }\n Object.assign(this.config, configuration);\n return this;\n }\n}\n","export function formatTime(ms) {\n let formatted;\n\n if (ms < 10) {\n formatted = \"\".concat(ms.toFixed(2), \"ms\");\n } else if (ms < 100) {\n formatted = \"\".concat(ms.toFixed(1), \"ms\");\n } else if (ms < 1000) {\n formatted = \"\".concat(ms.toFixed(0), \"ms\");\n } else {\n formatted = \"\".concat((ms / 1000).toFixed(2), \"s\");\n }\n\n return formatted;\n}\nexport function leftPad(string) {\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 8;\n const padLength = Math.max(length - string.length, 0);\n return \"\".concat(' '.repeat(padLength)).concat(string);\n}\nexport function rightPad(string) {\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 8;\n const padLength = Math.max(length - string.length, 0);\n return \"\".concat(string).concat(' '.repeat(padLength));\n}\nexport function formatValue(v) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const EPSILON = 1e-16;\n const {\n isInteger = false\n } = opts;\n\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, opts);\n }\n\n if (!Number.isFinite(v)) {\n return String(v);\n }\n\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n\n if (isInteger) {\n return v.toFixed(0);\n }\n\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n return v.toFixed(0);\n }\n\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n\nfunction formatArrayValue(v, opts) {\n const {\n maxElts = 16,\n size = 1\n } = opts;\n let string = '[';\n\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += \",\".concat(i % size === 0 ? ' ' : '');\n }\n\n string += formatValue(v[i], opts);\n }\n\n const terminator = v.length > maxElts ? '...' : ']';\n return \"\".concat(string).concat(terminator);\n}\n\nexport function formatImage(image, message, scale) {\n let maxWidth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 600;\n const imageUrl = image.src.replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n\n if (image.width > maxWidth) {\n scale = Math.min(scale, maxWidth / image.width);\n }\n\n const width = image.width * scale;\n const height = image.height * scale;\n const style = ['font-size:1px;', \"padding:\".concat(Math.floor(height / 2), \"px \").concat(Math.floor(width / 2), \"px;\"), \"line-height:\".concat(height, \"px;\"), \"background:url(\".concat(imageUrl, \");\"), \"background-size:\".concat(width, \"px \").concat(height, \"px;\"), 'color:transparent;'].join('');\n return [\"\".concat(message, \" %c+\"), style];\n}\n//# sourceMappingURL=formatters.js.map","// TODO: Currently unused, keeping in case we want it later for log formatting\nexport function formatTime(ms: number): string {\n let formatted;\n if (ms < 10) {\n formatted = `${ms.toFixed(2)}ms`;\n } else if (ms < 100) {\n formatted = `${ms.toFixed(1)}ms`;\n } else if (ms < 1000) {\n formatted = `${ms.toFixed(0)}ms`;\n } else {\n formatted = `${(ms / 1000).toFixed(2)}s`;\n }\n return formatted;\n}\n\nexport function leftPad(string: string, length: number = 8): string {\n const padLength = Math.max(length - string.length, 0);\n return `${' '.repeat(padLength)}${string}`;\n}\n\nexport function rightPad(string: string, length: number = 8): string {\n const padLength = Math.max(length - string.length, 0);\n return `${string}${' '.repeat(padLength)}`;\n}\n\nexport function formatValue(v: unknown, opts: {isInteger?: boolean} = {}): string {\n const EPSILON = 1e-16;\n const {isInteger = false} = opts;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, opts);\n }\n if (!Number.isFinite(v)) {\n return String(v);\n }\n // @ts-expect-error\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n if (isInteger) {\n // @ts-expect-error\n return v.toFixed(0);\n }\n // @ts-expect-error\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n // @ts-expect-error\n return v.toFixed(0);\n }\n // @ts-expect-error\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n\n/** Helper to formatValue */\nfunction formatArrayValue(v, opts) {\n const {maxElts = 16, size = 1} = opts;\n let string = '[';\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += `,${i % size === 0 ? ' ' : ''}`;\n }\n string += formatValue(v[i], opts);\n }\n const terminator = v.length > maxElts ? '...' : ']';\n return `${string}${terminator}`;\n}\n\n/** Inspired by https://github.com/hughsk/console-image (MIT license) */\nexport function formatImage(image, message, scale, maxWidth = 600) {\n const imageUrl = image.src.replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n\n if (image.width > maxWidth) {\n scale = Math.min(scale, maxWidth / image.width);\n }\n\n const width = image.width * scale;\n const height = image.height * scale;\n\n const style = [\n 'font-size:1px;',\n `padding:${Math.floor(height / 2)}px ${Math.floor(width / 2)}px;`,\n `line-height:${height}px;`,\n `background:url(${imageUrl});`,\n `background-size:${width}px ${height}px;`,\n 'color:transparent;'\n ].join('');\n\n return [`${message} %c+`, style];\n}\n","import { isBrowser } from '@probe.gl/env';\nexport let COLOR;\n\n(function (COLOR) {\n COLOR[COLOR[\"BLACK\"] = 30] = \"BLACK\";\n COLOR[COLOR[\"RED\"] = 31] = \"RED\";\n COLOR[COLOR[\"GREEN\"] = 32] = \"GREEN\";\n COLOR[COLOR[\"YELLOW\"] = 33] = \"YELLOW\";\n COLOR[COLOR[\"BLUE\"] = 34] = \"BLUE\";\n COLOR[COLOR[\"MAGENTA\"] = 35] = \"MAGENTA\";\n COLOR[COLOR[\"CYAN\"] = 36] = \"CYAN\";\n COLOR[COLOR[\"WHITE\"] = 37] = \"WHITE\";\n COLOR[COLOR[\"BRIGHT_BLACK\"] = 90] = \"BRIGHT_BLACK\";\n COLOR[COLOR[\"BRIGHT_RED\"] = 91] = \"BRIGHT_RED\";\n COLOR[COLOR[\"BRIGHT_GREEN\"] = 92] = \"BRIGHT_GREEN\";\n COLOR[COLOR[\"BRIGHT_YELLOW\"] = 93] = \"BRIGHT_YELLOW\";\n COLOR[COLOR[\"BRIGHT_BLUE\"] = 94] = \"BRIGHT_BLUE\";\n COLOR[COLOR[\"BRIGHT_MAGENTA\"] = 95] = \"BRIGHT_MAGENTA\";\n COLOR[COLOR[\"BRIGHT_CYAN\"] = 96] = \"BRIGHT_CYAN\";\n COLOR[COLOR[\"BRIGHT_WHITE\"] = 97] = \"BRIGHT_WHITE\";\n})(COLOR || (COLOR = {}));\n\nfunction getColor(color) {\n return typeof color === 'string' ? COLOR[color.toUpperCase()] || COLOR.WHITE : color;\n}\n\nexport function addColor(string, color, background) {\n if (!isBrowser && typeof string === 'string') {\n if (color) {\n color = getColor(color);\n string = \"\\x1B[\".concat(color, \"m\").concat(string, \"\\x1B[39m\");\n }\n\n if (background) {\n color = getColor(background);\n string = \"\\x1B[\".concat(background + 10, \"m\").concat(string, \"\\x1B[49m\");\n }\n }\n\n return string;\n}\n//# sourceMappingURL=color.js.map","import {isBrowser} from '@probe.gl/env';\n\nexport enum COLOR {\n BLACK = 30,\n RED = 31,\n GREEN = 32,\n YELLOW = 33,\n BLUE = 34,\n MAGENTA = 35,\n CYAN = 36,\n WHITE = 37,\n\n BRIGHT_BLACK = 90,\n BRIGHT_RED = 91,\n BRIGHT_GREEN = 92,\n BRIGHT_YELLOW = 93,\n BRIGHT_BLUE = 94,\n BRIGHT_MAGENTA = 95,\n BRIGHT_CYAN = 96,\n BRIGHT_WHITE = 97\n}\n\nfunction getColor(color): number {\n return typeof color === 'string' ? COLOR[color.toUpperCase()] || COLOR.WHITE : color;\n}\n\nexport function addColor(string, color, background?): string {\n if (!isBrowser && typeof string === 'string') {\n if (color) {\n color = getColor(color);\n string = `\\u001b[${color}m${string}\\u001b[39m`;\n }\n if (background) {\n // background colors values are +10\n color = getColor(background);\n string = `\\u001b[${background + 10}m${string}\\u001b[49m`;\n }\n }\n return string;\n}\n","export function autobind(obj) {\n let predefined = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ['constructor'];\n const proto = Object.getPrototypeOf(obj);\n const propNames = Object.getOwnPropertyNames(proto);\n\n for (const key of propNames) {\n if (typeof obj[key] === 'function') {\n if (!predefined.find(name => key === name)) {\n obj[key] = obj[key].bind(obj);\n }\n }\n }\n}\n//# sourceMappingURL=autobind.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/**\n * Binds the \"this\" argument of all functions on a class instance to the instance\n * @param obj - class instance (typically a react component)\n */\nexport function autobind(obj: object, predefined = ['constructor']): void {\n const proto = Object.getPrototypeOf(obj);\n const propNames = Object.getOwnPropertyNames(proto);\n for (const key of propNames) {\n if (typeof obj[key] === 'function') {\n if (!predefined.find(name => key === name)) {\n obj[key] = obj[key].bind(obj);\n }\n }\n }\n}\n","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n//# sourceMappingURL=assert.js.map","export default function assert(condition: unknown, message?: string): asserts condition {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n","import { window, process, isBrowser } from '@probe.gl/env';\nexport function getHiResTimestamp() {\n let timestamp;\n\n if (isBrowser && 'performance' in window) {\n var _window$performance, _window$performance$n;\n\n timestamp = window === null || window === void 0 ? void 0 : (_window$performance = window.performance) === null || _window$performance === void 0 ? void 0 : (_window$performance$n = _window$performance.now) === null || _window$performance$n === void 0 ? void 0 : _window$performance$n.call(_window$performance);\n } else if ('hrtime' in process) {\n var _process$hrtime;\n\n const timeParts = process === null || process === void 0 ? void 0 : (_process$hrtime = process.hrtime) === null || _process$hrtime === void 0 ? void 0 : _process$hrtime.call(process);\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else {\n timestamp = Date.now();\n }\n\n return timestamp;\n}\n//# sourceMappingURL=hi-res-timestamp.js.map","// probe.gl, MIT license\n\nimport {window, process, isBrowser} from '@probe.gl/env';\n\n/** Get best timer available. */\nexport function getHiResTimestamp() {\n let timestamp;\n if (isBrowser && 'performance' in window) {\n timestamp = window?.performance?.now?.();\n } else if ('hrtime' in process) {\n // @ts-ignore\n const timeParts = process?.hrtime?.();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else {\n timestamp = Date.now();\n }\n\n return timestamp;\n}\n","const globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document,\n process: typeof process === 'object' && process\n};\nconst global_ = globalThis;\nconst self_ = globals.self || globals.window || globals.global;\nconst window_ = globals.window || globals.self || globals.global;\nconst document_ = globals.document || {};\nconst process_ = globals.process || {};\nconst console_ = console;\nexport { self_ as self, window_ as window, global_ as global, document_ as document, process_ as process, console_ as console };\n//# sourceMappingURL=globals.js.map","/* eslint-disable no-restricted-globals */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document,\n process: typeof process === 'object' && process\n};\n\nconst global_ = globalThis;\nconst self_ = globals.self || globals.window || globals.global;\nconst window_ = globals.window || globals.self || globals.global;\nconst document_ = globals.document || {};\nconst process_ = globals.process || {};\nconst console_ = console;\n\nexport {\n self_ as self,\n window_ as window,\n global_ as global,\n document_ as document,\n process_ as process,\n console_ as console\n};\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Attribute from './attribute';\nimport log from '../../utils/log';\nimport memoize from '../../utils/memoize';\nimport { mergeBounds } from '../../utils/math-utils';\nimport debug from '../../debug';\nimport AttributeTransitionManager from './attribute-transition-manager';\nconst TRACE_INVALIDATE = 'attributeManager.invalidate';\nconst TRACE_UPDATE_START = 'attributeManager.updateStart';\nconst TRACE_UPDATE_END = 'attributeManager.updateEnd';\nconst TRACE_ATTRIBUTE_UPDATE_START = 'attribute.updateStart';\nconst TRACE_ATTRIBUTE_ALLOCATE = 'attribute.allocate';\nconst TRACE_ATTRIBUTE_UPDATE_END = 'attribute.updateEnd';\nexport default class AttributeManager {\n constructor(gl, {\n id = 'attribute-manager',\n stats,\n timeline\n } = {}) {\n _defineProperty(this, \"id\", void 0);\n\n _defineProperty(this, \"gl\", void 0);\n\n _defineProperty(this, \"attributes\", void 0);\n\n _defineProperty(this, \"updateTriggers\", void 0);\n\n _defineProperty(this, \"needsRedraw\", void 0);\n\n _defineProperty(this, \"userData\", void 0);\n\n _defineProperty(this, \"stats\", void 0);\n\n _defineProperty(this, \"attributeTransitionManager\", void 0);\n\n _defineProperty(this, \"mergeBoundsMemoized\", memoize(mergeBounds));\n\n this.id = id;\n this.gl = gl;\n this.attributes = {};\n this.updateTriggers = {};\n this.needsRedraw = true;\n this.userData = {};\n this.stats = stats;\n this.attributeTransitionManager = new AttributeTransitionManager(gl, {\n id: \"\".concat(id, \"-transitions\"),\n timeline\n });\n Object.seal(this);\n }\n\n finalize() {\n for (const attributeName in this.attributes) {\n this.attributes[attributeName].delete();\n }\n\n this.attributeTransitionManager.finalize();\n }\n\n getNeedsRedraw(opts = {\n clearRedrawFlags: false\n }) {\n const redraw = this.needsRedraw;\n this.needsRedraw = this.needsRedraw && !opts.clearRedrawFlags;\n return redraw && this.id;\n }\n\n setNeedsRedraw() {\n this.needsRedraw = true;\n }\n\n add(attributes) {\n this._add(attributes);\n }\n\n addInstanced(attributes) {\n this._add(attributes, {\n instanced: 1\n });\n }\n\n remove(attributeNameArray) {\n for (const name of attributeNameArray) {\n if (this.attributes[name] !== undefined) {\n this.attributes[name].delete();\n delete this.attributes[name];\n }\n }\n }\n\n invalidate(triggerName, dataRange) {\n const invalidatedAttributes = this._invalidateTrigger(triggerName, dataRange);\n\n debug(TRACE_INVALIDATE, this, triggerName, invalidatedAttributes);\n }\n\n invalidateAll(dataRange) {\n for (const attributeName in this.attributes) {\n this.attributes[attributeName].setNeedsUpdate(attributeName, dataRange);\n }\n\n debug(TRACE_INVALIDATE, this, 'all');\n }\n\n update({\n data,\n numInstances,\n startIndices = null,\n transitions,\n props = {},\n buffers = {},\n context = {}\n }) {\n let updated = false;\n debug(TRACE_UPDATE_START, this);\n\n if (this.stats) {\n this.stats.get('Update Attributes').timeStart();\n }\n\n for (const attributeName in this.attributes) {\n const attribute = this.attributes[attributeName];\n const accessorName = attribute.settings.accessor;\n attribute.startIndices = startIndices;\n attribute.numInstances = numInstances;\n\n if (props[attributeName]) {\n log.removed(\"props.\".concat(attributeName), \"data.attributes.\".concat(attributeName))();\n }\n\n if (attribute.setExternalBuffer(buffers[attributeName])) {} else if (attribute.setBinaryValue(typeof accessorName === 'string' ? buffers[accessorName] : undefined, data.startIndices)) {} else if (typeof accessorName === 'string' && !buffers[accessorName] && attribute.setConstantValue(props[accessorName])) {} else if (attribute.needsUpdate()) {\n updated = true;\n\n this._updateAttribute({\n attribute,\n numInstances,\n data,\n props,\n context\n });\n }\n\n this.needsRedraw = this.needsRedraw || attribute.needsRedraw();\n }\n\n if (updated) {\n debug(TRACE_UPDATE_END, this, numInstances);\n }\n\n if (this.stats) {\n this.stats.get('Update Attributes').timeEnd();\n }\n\n this.attributeTransitionManager.update({\n attributes: this.attributes,\n numInstances,\n transitions\n });\n }\n\n updateTransition() {\n const {\n attributeTransitionManager\n } = this;\n const transitionUpdated = attributeTransitionManager.run();\n this.needsRedraw = this.needsRedraw || transitionUpdated;\n return transitionUpdated;\n }\n\n getAttributes() {\n return this.attributes;\n }\n\n getBounds(attributeNames) {\n const bounds = attributeNames.map(attributeName => {\n var _this$attributes$attr;\n\n return (_this$attributes$attr = this.attributes[attributeName]) === null || _this$attributes$attr === void 0 ? void 0 : _this$attributes$attr.getBounds();\n });\n return this.mergeBoundsMemoized(bounds);\n }\n\n getChangedAttributes(opts = {\n clearChangedFlags: false\n }) {\n const {\n attributes,\n attributeTransitionManager\n } = this;\n const changedAttributes = { ...attributeTransitionManager.getAttributes()\n };\n\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n\n if (attribute.needsRedraw(opts) && !attributeTransitionManager.hasAttribute(attributeName)) {\n changedAttributes[attributeName] = attribute;\n }\n }\n\n return changedAttributes;\n }\n\n getShaderAttributes(attributes, excludeAttributes = {}) {\n if (!attributes) {\n attributes = this.getAttributes();\n }\n\n const shaderAttributes = {};\n\n for (const attributeName in attributes) {\n if (!excludeAttributes[attributeName]) {\n Object.assign(shaderAttributes, attributes[attributeName].getShaderAttributes());\n }\n }\n\n return shaderAttributes;\n }\n\n _add(attributes, extraProps = {}) {\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n this.attributes[attributeName] = this._createAttribute(attributeName, attribute, extraProps);\n }\n\n this._mapUpdateTriggersToAttributes();\n }\n\n _createAttribute(name, attribute, extraProps) {\n const props = { ...attribute,\n id: name,\n size: attribute.isIndexed && 1 || attribute.size || 1,\n divisor: extraProps.instanced ? 1 : attribute.divisor || 0\n };\n return new Attribute(this.gl, props);\n }\n\n _mapUpdateTriggersToAttributes() {\n const triggers = {};\n\n for (const attributeName in this.attributes) {\n const attribute = this.attributes[attributeName];\n attribute.getUpdateTriggers().forEach(triggerName => {\n if (!triggers[triggerName]) {\n triggers[triggerName] = [];\n }\n\n triggers[triggerName].push(attributeName);\n });\n }\n\n this.updateTriggers = triggers;\n }\n\n _invalidateTrigger(triggerName, dataRange) {\n const {\n attributes,\n updateTriggers\n } = this;\n const invalidatedAttributes = updateTriggers[triggerName];\n\n if (invalidatedAttributes) {\n invalidatedAttributes.forEach(name => {\n const attribute = attributes[name];\n\n if (attribute) {\n attribute.setNeedsUpdate(attribute.id, dataRange);\n }\n });\n }\n\n return invalidatedAttributes;\n }\n\n _updateAttribute(opts) {\n const {\n attribute,\n numInstances\n } = opts;\n debug(TRACE_ATTRIBUTE_UPDATE_START, attribute);\n\n if (attribute.constant) {\n attribute.setConstantValue(attribute.value);\n return;\n }\n\n if (attribute.allocate(numInstances)) {\n debug(TRACE_ATTRIBUTE_ALLOCATE, attribute, numInstances);\n }\n\n const updated = attribute.updateBuffer(opts);\n\n if (updated) {\n this.needsRedraw = true;\n debug(TRACE_ATTRIBUTE_UPDATE_END, attribute, numInstances);\n }\n }\n\n}\n//# sourceMappingURL=attribute-manager.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* eslint-disable guard-for-in */\nimport Attribute, {AttributeOptions} from './attribute';\nimport {IShaderAttribute} from './shader-attribute';\nimport log from '../../utils/log';\nimport memoize from '../../utils/memoize';\nimport {mergeBounds} from '../../utils/math-utils';\nimport debug from '../../debug';\nimport {NumericArray} from '../../types/types';\n\nimport AttributeTransitionManager from './attribute-transition-manager';\n\nimport type {Stats} from '@probe.gl/stats';\nimport type {Timeline} from '@luma.gl/engine';\n\nconst TRACE_INVALIDATE = 'attributeManager.invalidate';\nconst TRACE_UPDATE_START = 'attributeManager.updateStart';\nconst TRACE_UPDATE_END = 'attributeManager.updateEnd';\nconst TRACE_ATTRIBUTE_UPDATE_START = 'attribute.updateStart';\nconst TRACE_ATTRIBUTE_ALLOCATE = 'attribute.allocate';\nconst TRACE_ATTRIBUTE_UPDATE_END = 'attribute.updateEnd';\n\nexport default class AttributeManager {\n /**\n * @classdesc\n * Automated attribute generation and management. Suitable when a set of\n * vertex shader attributes are generated by iteration over a data array,\n * and updates to these attributes are needed either when the data itself\n * changes, or when other data relevant to the calculations change.\n *\n * - First the application registers descriptions of its dynamic vertex\n * attributes using AttributeManager.add().\n * - Then, when any change that affects attributes is detected by the\n * application, the app will call AttributeManager.invalidate().\n * - Finally before it renders, it calls AttributeManager.update() to\n * ensure that attributes are automatically rebuilt if anything has been\n * invalidated.\n *\n * The application provided update functions describe how attributes\n * should be updated from a data array and are expected to traverse\n * that data array (or iterable) and fill in the attribute's typed array.\n *\n * Note that the attribute manager intentionally does not do advanced\n * change detection, but instead makes it easy to build such detection\n * by offering the ability to \"invalidate\" each attribute separately.\n */\n id: string;\n gl: WebGLRenderingContext;\n attributes: Record;\n updateTriggers: {[name: string]: string[]};\n needsRedraw: string | boolean;\n userData: any;\n\n private stats?: Stats;\n private attributeTransitionManager: AttributeTransitionManager;\n private mergeBoundsMemoized: any = memoize(mergeBounds);\n\n constructor(\n gl: WebGLRenderingContext,\n {\n id = 'attribute-manager',\n stats,\n timeline\n }: {\n id?: string;\n stats?: Stats;\n timeline?: Timeline;\n } = {}\n ) {\n this.id = id;\n this.gl = gl;\n\n this.attributes = {};\n\n this.updateTriggers = {};\n this.needsRedraw = true;\n\n this.userData = {};\n this.stats = stats;\n\n this.attributeTransitionManager = new AttributeTransitionManager(gl, {\n id: `${id}-transitions`,\n timeline\n });\n\n // For debugging sanity, prevent uninitialized members\n Object.seal(this);\n }\n\n finalize() {\n for (const attributeName in this.attributes) {\n this.attributes[attributeName].delete();\n }\n this.attributeTransitionManager.finalize();\n }\n\n // Returns the redraw flag, optionally clearing it.\n // Redraw flag will be set if any attributes attributes changed since\n // flag was last cleared.\n //\n // @param {String} [clearRedrawFlags=false] - whether to clear the flag\n // @return {false|String} - reason a redraw is needed.\n getNeedsRedraw(opts: {clearRedrawFlags?: boolean} = {clearRedrawFlags: false}): string | false {\n const redraw = this.needsRedraw;\n this.needsRedraw = this.needsRedraw && !opts.clearRedrawFlags;\n return redraw && this.id;\n }\n\n // Sets the redraw flag.\n // @param {Boolean} redraw=true\n setNeedsRedraw() {\n this.needsRedraw = true;\n }\n\n // Adds attributes\n add(attributes: {[id: string]: AttributeOptions}) {\n this._add(attributes);\n }\n\n // Adds attributes\n addInstanced(attributes: {[id: string]: AttributeOptions}) {\n this._add(attributes, {instanced: 1});\n }\n\n /**\n * Removes attributes\n * Takes an array of attribute names and delete them from\n * the attribute map if they exists\n *\n * @example\n * attributeManager.remove(['position']);\n *\n * @param {Object} attributeNameArray - attribute name array (see above)\n */\n remove(attributeNameArray: string[]) {\n for (const name of attributeNameArray) {\n if (this.attributes[name] !== undefined) {\n this.attributes[name].delete();\n delete this.attributes[name];\n }\n }\n }\n\n // Marks an attribute for update\n invalidate(triggerName: string, dataRange?: {startRow?: number; endRow?: number}) {\n const invalidatedAttributes = this._invalidateTrigger(triggerName, dataRange);\n // For performance tuning\n debug(TRACE_INVALIDATE, this, triggerName, invalidatedAttributes);\n }\n\n invalidateAll(dataRange?: {startRow?: number; endRow?: number}) {\n for (const attributeName in this.attributes) {\n this.attributes[attributeName].setNeedsUpdate(attributeName, dataRange);\n }\n // For performance tuning\n debug(TRACE_INVALIDATE, this, 'all');\n }\n\n // Ensure all attribute buffers are updated from props or data.\n // eslint-disable-next-line complexity\n update({\n data,\n numInstances,\n startIndices = null,\n transitions,\n props = {},\n buffers = {},\n context = {}\n }: {\n data: any;\n numInstances: number;\n startIndices?: NumericArray | null;\n transitions: any;\n props: any;\n buffers: any;\n context: any;\n }) {\n // keep track of whether some attributes are updated\n let updated = false;\n\n debug(TRACE_UPDATE_START, this);\n if (this.stats) {\n this.stats.get('Update Attributes').timeStart();\n }\n\n for (const attributeName in this.attributes) {\n const attribute = this.attributes[attributeName];\n const accessorName = attribute.settings.accessor;\n attribute.startIndices = startIndices;\n attribute.numInstances = numInstances;\n\n if (props[attributeName]) {\n log.removed(`props.${attributeName}`, `data.attributes.${attributeName}`)();\n }\n\n if (attribute.setExternalBuffer(buffers[attributeName])) {\n // Step 1: try update attribute directly from external buffers\n } else if (\n attribute.setBinaryValue(\n typeof accessorName === 'string' ? buffers[accessorName] : undefined,\n data.startIndices\n )\n ) {\n // Step 2: try set packed value from external typed array\n } else if (\n typeof accessorName === 'string' &&\n !buffers[accessorName] &&\n attribute.setConstantValue(props[accessorName])\n ) {\n // Step 3: try set constant value from props\n // Note: if buffers[accessorName] is supplied, ignore props[accessorName]\n // This may happen when setBinaryValue falls through to use the auto updater\n } else if (attribute.needsUpdate()) {\n // Step 4: update via updater callback\n updated = true;\n this._updateAttribute({\n attribute,\n numInstances,\n data,\n props,\n context\n });\n }\n\n this.needsRedraw = this.needsRedraw || attribute.needsRedraw();\n }\n\n if (updated) {\n // Only initiate alloc/update (and logging) if actually needed\n debug(TRACE_UPDATE_END, this, numInstances);\n }\n\n if (this.stats) {\n this.stats.get('Update Attributes').timeEnd();\n }\n\n this.attributeTransitionManager.update({\n attributes: this.attributes,\n numInstances,\n transitions\n });\n }\n\n // Update attribute transition to the current timestamp\n // Returns `true` if any transition is in progress\n updateTransition() {\n const {attributeTransitionManager} = this;\n const transitionUpdated = attributeTransitionManager.run();\n this.needsRedraw = this.needsRedraw || transitionUpdated;\n return transitionUpdated;\n }\n\n /**\n * Returns all attribute descriptors\n * Note: Format matches luma.gl Model/Program.setAttributes()\n * @return {Object} attributes - descriptors\n */\n getAttributes(): {[id: string]: Attribute} {\n return this.attributes;\n }\n\n /**\n * Computes the spatial bounds of a given set of attributes\n */\n getBounds(attributeNames: string[]) {\n const bounds = attributeNames.map(attributeName => this.attributes[attributeName]?.getBounds());\n return this.mergeBoundsMemoized(bounds);\n }\n\n /**\n * Returns changed attribute descriptors\n * This indicates which WebGLBuffers need to be updated\n * @return {Object} attributes - descriptors\n */\n getChangedAttributes(opts: {clearChangedFlags?: boolean} = {clearChangedFlags: false}): {\n [id: string]: Attribute;\n } {\n const {attributes, attributeTransitionManager} = this;\n\n const changedAttributes = {...attributeTransitionManager.getAttributes()};\n\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n if (attribute.needsRedraw(opts) && !attributeTransitionManager.hasAttribute(attributeName)) {\n changedAttributes[attributeName] = attribute;\n }\n }\n\n return changedAttributes;\n }\n\n // Returns shader attributes\n getShaderAttributes(\n attributes?: {[id: string]: Attribute},\n excludeAttributes: Record = {}\n ): {[id: string]: IShaderAttribute} {\n if (!attributes) {\n attributes = this.getAttributes();\n }\n const shaderAttributes = {};\n for (const attributeName in attributes) {\n if (!excludeAttributes[attributeName]) {\n Object.assign(shaderAttributes, attributes[attributeName].getShaderAttributes());\n }\n }\n return shaderAttributes;\n }\n\n // PRIVATE METHODS\n\n // Used to register an attribute\n private _add(attributes: {[id: string]: AttributeOptions}, extraProps: any = {}) {\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n\n // Initialize the attribute descriptor, with WebGL and metadata fields\n this.attributes[attributeName] = this._createAttribute(attributeName, attribute, extraProps);\n }\n\n this._mapUpdateTriggersToAttributes();\n }\n /* eslint-enable max-statements */\n\n private _createAttribute(name: string, attribute: AttributeOptions, extraProps: any) {\n // For expected default values see:\n // https://github.com/visgl/luma.gl/blob/1affe21352e289eeaccee2a876865138858a765c/modules/webgl/src/classes/accessor.js#L5-L13\n // and https://deck.gl/docs/api-reference/core/attribute-manager#add\n const props: AttributeOptions = {\n ...attribute,\n id: name,\n size: (attribute.isIndexed && 1) || attribute.size || 1,\n divisor: extraProps.instanced ? 1 : attribute.divisor || 0\n };\n\n return new Attribute(this.gl, props);\n }\n\n // build updateTrigger name to attribute name mapping\n private _mapUpdateTriggersToAttributes() {\n const triggers: {[name: string]: string[]} = {};\n\n for (const attributeName in this.attributes) {\n const attribute = this.attributes[attributeName];\n attribute.getUpdateTriggers().forEach(triggerName => {\n if (!triggers[triggerName]) {\n triggers[triggerName] = [];\n }\n triggers[triggerName].push(attributeName);\n });\n }\n\n this.updateTriggers = triggers;\n }\n\n private _invalidateTrigger(\n triggerName: string,\n dataRange?: {startRow?: number; endRow?: number}\n ): string[] {\n const {attributes, updateTriggers} = this;\n const invalidatedAttributes = updateTriggers[triggerName];\n\n if (invalidatedAttributes) {\n invalidatedAttributes.forEach(name => {\n const attribute = attributes[name];\n if (attribute) {\n attribute.setNeedsUpdate(attribute.id, dataRange);\n }\n });\n }\n return invalidatedAttributes;\n }\n\n private _updateAttribute(opts: {\n attribute: Attribute;\n numInstances: number;\n data: any;\n props: any;\n context: any;\n }) {\n const {attribute, numInstances} = opts;\n debug(TRACE_ATTRIBUTE_UPDATE_START, attribute);\n\n if (attribute.constant) {\n // The attribute is flagged as constant outside of an update cycle\n // Skip allocation and updater call\n attribute.setConstantValue(attribute.value as NumericArray);\n return;\n }\n\n if (attribute.allocate(numInstances)) {\n debug(TRACE_ATTRIBUTE_ALLOCATE, attribute, numInstances);\n }\n\n // Calls update on any buffers that need update\n const updated = attribute.updateBuffer(opts);\n if (updated) {\n this.needsRedraw = true;\n debug(TRACE_ATTRIBUTE_UPDATE_END, attribute, numInstances);\n }\n }\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport DataColumn from './data-column';\nimport assert from '../../utils/assert';\nimport { createIterable, getAccessorFromBuffer } from '../../utils/iterable-utils';\nimport { fillArray } from '../../utils/flatten';\nimport * as range from '../../utils/range';\nimport { normalizeTransitionSettings } from './attribute-transition-utils';\nexport default class Attribute extends DataColumn {\n constructor(gl, opts) {\n super(gl, opts, {\n startIndices: null,\n lastExternalBuffer: null,\n binaryValue: null,\n binaryAccessor: null,\n needsUpdate: true,\n needsRedraw: false,\n updateRanges: range.FULL\n });\n\n _defineProperty(this, \"constant\", false);\n\n this.settings.update = opts.update || (opts.accessor ? this._autoUpdater : undefined);\n Object.seal(this.settings);\n Object.seal(this.state);\n\n this._validateAttributeUpdaters();\n }\n\n get startIndices() {\n return this.state.startIndices;\n }\n\n set startIndices(layout) {\n this.state.startIndices = layout;\n }\n\n needsUpdate() {\n return this.state.needsUpdate;\n }\n\n needsRedraw({\n clearChangedFlags = false\n } = {}) {\n const needsRedraw = this.state.needsRedraw;\n this.state.needsRedraw = needsRedraw && !clearChangedFlags;\n return needsRedraw;\n }\n\n getUpdateTriggers() {\n const {\n accessor\n } = this.settings;\n return [this.id].concat(typeof accessor !== 'function' && accessor || []);\n }\n\n supportsTransition() {\n return Boolean(this.settings.transition);\n }\n\n getTransitionSetting(opts) {\n if (!opts || !this.supportsTransition()) {\n return null;\n }\n\n const {\n accessor\n } = this.settings;\n const layerSettings = this.settings.transition;\n const userSettings = Array.isArray(accessor) ? opts[accessor.find(a => opts[a])] : opts[accessor];\n return normalizeTransitionSettings(userSettings, layerSettings);\n }\n\n setNeedsUpdate(reason = this.id, dataRange) {\n this.state.needsUpdate = this.state.needsUpdate || reason;\n this.setNeedsRedraw(reason);\n\n if (dataRange) {\n const {\n startRow = 0,\n endRow = Infinity\n } = dataRange;\n this.state.updateRanges = range.add(this.state.updateRanges, [startRow, endRow]);\n } else {\n this.state.updateRanges = range.FULL;\n }\n }\n\n clearNeedsUpdate() {\n this.state.needsUpdate = false;\n this.state.updateRanges = range.EMPTY;\n }\n\n setNeedsRedraw(reason = this.id) {\n this.state.needsRedraw = this.state.needsRedraw || reason;\n }\n\n allocate(numInstances) {\n const {\n state,\n settings\n } = this;\n\n if (settings.noAlloc) {\n return false;\n }\n\n if (settings.update) {\n super.allocate(numInstances, state.updateRanges !== range.FULL);\n return true;\n }\n\n return false;\n }\n\n updateBuffer({\n numInstances,\n data,\n props,\n context\n }) {\n if (!this.needsUpdate()) {\n return false;\n }\n\n const {\n state: {\n updateRanges\n },\n settings: {\n update,\n noAlloc\n }\n } = this;\n let updated = true;\n\n if (update) {\n for (const [startRow, endRow] of updateRanges) {\n update.call(context, this, {\n data,\n startRow,\n endRow,\n props,\n numInstances\n });\n }\n\n if (!this.value) {} else if (this.constant || this.buffer.byteLength < this.value.byteLength + this.byteOffset) {\n this.setData({\n value: this.value,\n constant: this.constant\n });\n this.constant = false;\n } else {\n for (const [startRow, endRow] of updateRanges) {\n const startOffset = Number.isFinite(startRow) ? this.getVertexOffset(startRow) : 0;\n const endOffset = Number.isFinite(endRow) ? this.getVertexOffset(endRow) : noAlloc || !Number.isFinite(numInstances) ? this.value.length : numInstances * this.size;\n super.updateSubBuffer({\n startOffset,\n endOffset\n });\n }\n }\n\n this._checkAttributeArray();\n } else {\n updated = false;\n }\n\n this.clearNeedsUpdate();\n this.setNeedsRedraw();\n return updated;\n }\n\n setConstantValue(value) {\n if (value === undefined || typeof value === 'function') {\n return false;\n }\n\n const hasChanged = this.setData({\n constant: true,\n value\n });\n\n if (hasChanged) {\n this.setNeedsRedraw();\n }\n\n this.clearNeedsUpdate();\n return true;\n }\n\n setExternalBuffer(buffer) {\n const {\n state\n } = this;\n\n if (!buffer) {\n state.lastExternalBuffer = null;\n return false;\n }\n\n this.clearNeedsUpdate();\n\n if (state.lastExternalBuffer === buffer) {\n return true;\n }\n\n state.lastExternalBuffer = buffer;\n this.setNeedsRedraw();\n this.setData(buffer);\n return true;\n }\n\n setBinaryValue(buffer, startIndices = null) {\n const {\n state,\n settings\n } = this;\n\n if (!buffer) {\n state.binaryValue = null;\n state.binaryAccessor = null;\n return false;\n }\n\n if (settings.noAlloc) {\n return false;\n }\n\n if (state.binaryValue === buffer) {\n this.clearNeedsUpdate();\n return true;\n }\n\n state.binaryValue = buffer;\n this.setNeedsRedraw();\n const needsUpdate = settings.transform || startIndices !== this.startIndices;\n\n if (needsUpdate) {\n if (ArrayBuffer.isView(buffer)) {\n buffer = {\n value: buffer\n };\n }\n\n const binaryValue = buffer;\n assert(ArrayBuffer.isView(binaryValue.value), \"invalid \".concat(settings.accessor));\n const needsNormalize = Boolean(binaryValue.size) && binaryValue.size !== this.size;\n state.binaryAccessor = getAccessorFromBuffer(binaryValue.value, {\n size: binaryValue.size || this.size,\n stride: binaryValue.stride,\n offset: binaryValue.offset,\n startIndices: startIndices,\n nested: needsNormalize\n });\n return false;\n }\n\n this.clearNeedsUpdate();\n this.setData(buffer);\n return true;\n }\n\n getVertexOffset(row) {\n const {\n startIndices\n } = this;\n const vertexIndex = startIndices ? row < startIndices.length ? startIndices[row] : this.numInstances : row;\n return vertexIndex * this.size;\n }\n\n getShaderAttributes() {\n const shaderAttributeDefs = this.settings.shaderAttributes || {\n [this.id]: null\n };\n const shaderAttributes = {};\n\n for (const shaderAttributeName in shaderAttributeDefs) {\n Object.assign(shaderAttributes, super.getShaderAttributes(shaderAttributeName, shaderAttributeDefs[shaderAttributeName]));\n }\n\n return shaderAttributes;\n }\n\n _autoUpdater(attribute, {\n data,\n startRow,\n endRow,\n props,\n numInstances\n }) {\n if (attribute.constant) {\n return;\n }\n\n const {\n settings,\n state,\n value,\n size,\n startIndices\n } = attribute;\n const {\n accessor,\n transform\n } = settings;\n const accessorFunc = state.binaryAccessor || (typeof accessor === 'function' ? accessor : props[accessor]);\n assert(typeof accessorFunc === 'function', \"accessor \\\"\".concat(accessor, \"\\\" is not a function\"));\n let i = attribute.getVertexOffset(startRow);\n const {\n iterable,\n objectInfo\n } = createIterable(data, startRow, endRow);\n\n for (const object of iterable) {\n objectInfo.index++;\n let objectValue = accessorFunc(object, objectInfo);\n\n if (transform) {\n objectValue = transform.call(this, objectValue);\n }\n\n if (startIndices) {\n const numVertices = (objectInfo.index < startIndices.length - 1 ? startIndices[objectInfo.index + 1] : numInstances) - startIndices[objectInfo.index];\n\n if (objectValue && Array.isArray(objectValue[0])) {\n let startIndex = i;\n\n for (const item of objectValue) {\n attribute._normalizeValue(item, value, startIndex);\n\n startIndex += size;\n }\n } else if (objectValue && objectValue.length > size) {\n value.set(objectValue, i);\n } else {\n attribute._normalizeValue(objectValue, objectInfo.target, 0);\n\n fillArray({\n target: value,\n source: objectInfo.target,\n start: i,\n count: numVertices\n });\n }\n\n i += numVertices * size;\n } else {\n attribute._normalizeValue(objectValue, value, i);\n\n i += size;\n }\n }\n }\n\n _validateAttributeUpdaters() {\n const {\n settings\n } = this;\n const hasUpdater = settings.noAlloc || typeof settings.update === 'function';\n\n if (!hasUpdater) {\n throw new Error(\"Attribute \".concat(this.id, \" missing update or accessor\"));\n }\n }\n\n _checkAttributeArray() {\n const {\n value\n } = this;\n const limit = Math.min(4, this.size);\n\n if (value && value.length >= limit) {\n let valid = true;\n\n switch (limit) {\n case 4:\n valid = valid && Number.isFinite(value[3]);\n\n case 3:\n valid = valid && Number.isFinite(value[2]);\n\n case 2:\n valid = valid && Number.isFinite(value[1]);\n\n case 1:\n valid = valid && Number.isFinite(value[0]);\n break;\n\n default:\n valid = false;\n }\n\n if (!valid) {\n throw new Error(\"Illegal attribute generated for \".concat(this.id));\n }\n }\n }\n\n}\n//# sourceMappingURL=attribute.js.map","/* eslint-disable complexity */\nimport DataColumn, {DataColumnOptions, ShaderAttributeOptions, BufferAccessor} from './data-column';\nimport {IShaderAttribute} from './shader-attribute';\nimport assert from '../../utils/assert';\nimport {createIterable, getAccessorFromBuffer} from '../../utils/iterable-utils';\nimport {fillArray} from '../../utils/flatten';\nimport * as range from '../../utils/range';\nimport {normalizeTransitionSettings, TransitionSettings} from './attribute-transition-utils';\nimport type {Buffer} from '@luma.gl/webgl';\n\nimport type {NumericArray, TypedArray} from '../../types/types';\n\nexport type Accessor = (\n object: DataType,\n context: {\n data: any;\n index: number;\n target: number[];\n }\n) => ReturnType;\n\nexport type Updater = (\n attribute: Attribute,\n {\n data,\n startRow,\n endRow,\n props,\n numInstances\n }: {\n data: any;\n startRow: number;\n endRow: number;\n props: any;\n numInstances: number;\n }\n) => void;\n\nexport type AttributeOptions = DataColumnOptions<{\n transition?: boolean | Partial;\n noAlloc?: boolean;\n update?: Updater;\n accessor?: Accessor | string | string[];\n transform?: (value: any) => any;\n shaderAttributes?: Record>;\n}>;\n\nexport type BinaryAttribute = Partial & {value?: TypedArray; buffer?: Buffer};\n\ntype AttributeInternalState = {\n startIndices: NumericArray | null;\n /** Legacy: external binary supplied via attribute name */\n lastExternalBuffer: TypedArray | Buffer | BinaryAttribute | null;\n /** External binary supplied via accessor name */\n binaryValue: TypedArray | Buffer | BinaryAttribute | null;\n binaryAccessor: Accessor | null;\n needsUpdate: string | boolean;\n needsRedraw: string | boolean;\n updateRanges: number[][];\n};\n\nexport default class Attribute extends DataColumn {\n /** Legacy approach to set attribute value - read `isConstant` instead for attribute state */\n constant: boolean = false;\n\n constructor(gl: WebGLRenderingContext, opts: AttributeOptions) {\n super(gl, opts, {\n startIndices: null,\n lastExternalBuffer: null,\n binaryValue: null,\n binaryAccessor: null,\n needsUpdate: true,\n needsRedraw: false,\n updateRanges: range.FULL\n });\n\n // eslint-disable-next-line\n this.settings.update = opts.update || (opts.accessor ? this._autoUpdater : undefined);\n\n Object.seal(this.settings);\n Object.seal(this.state);\n\n // Check all fields and generate helpful error messages\n this._validateAttributeUpdaters();\n }\n\n get startIndices(): NumericArray | null {\n return this.state.startIndices;\n }\n\n set startIndices(layout: NumericArray | null) {\n this.state.startIndices = layout;\n }\n\n needsUpdate(): string | boolean {\n return this.state.needsUpdate;\n }\n\n needsRedraw({clearChangedFlags = false}: {clearChangedFlags?: boolean} = {}): string | boolean {\n const needsRedraw = this.state.needsRedraw;\n this.state.needsRedraw = needsRedraw && !clearChangedFlags;\n return needsRedraw;\n }\n\n getUpdateTriggers(): string[] {\n const {accessor} = this.settings;\n\n // Backards compatibility: allow attribute name to be used as update trigger key\n return [this.id].concat((typeof accessor !== 'function' && accessor) || []);\n }\n\n supportsTransition(): boolean {\n return Boolean(this.settings.transition);\n }\n\n // Resolve transition settings object if transition is enabled, otherwise `null`\n getTransitionSetting(opts: Record): TransitionSettings | null {\n if (!opts || !this.supportsTransition()) {\n return null;\n }\n const {accessor} = this.settings;\n // TODO: have the layer resolve these transition settings itself?\n const layerSettings = this.settings.transition;\n // these are the transition settings passed in by the user\n const userSettings = Array.isArray(accessor)\n ? // @ts-ignore\n opts[accessor.find(a => opts[a])]\n : // @ts-ignore\n opts[accessor];\n\n // Shorthand: use duration instead of parameter object\n return normalizeTransitionSettings(userSettings, layerSettings);\n }\n\n setNeedsUpdate(reason: string = this.id, dataRange?: {startRow?: number; endRow?: number}): void {\n this.state.needsUpdate = this.state.needsUpdate || reason;\n this.setNeedsRedraw(reason);\n if (dataRange) {\n const {startRow = 0, endRow = Infinity} = dataRange;\n this.state.updateRanges = range.add(this.state.updateRanges, [startRow, endRow]);\n } else {\n this.state.updateRanges = range.FULL;\n }\n }\n\n clearNeedsUpdate(): void {\n this.state.needsUpdate = false;\n this.state.updateRanges = range.EMPTY;\n }\n\n setNeedsRedraw(reason: string = this.id): void {\n this.state.needsRedraw = this.state.needsRedraw || reason;\n }\n\n allocate(numInstances: number): boolean {\n const {state, settings} = this;\n\n if (settings.noAlloc) {\n // Data is provided through a Buffer object.\n return false;\n }\n\n if (settings.update) {\n super.allocate(numInstances, state.updateRanges !== range.FULL);\n return true;\n }\n\n return false;\n }\n\n updateBuffer({\n numInstances,\n data,\n props,\n context\n }: {\n numInstances: number;\n data: any;\n props: any;\n context: any;\n }): boolean {\n if (!this.needsUpdate()) {\n return false;\n }\n\n const {\n state: {updateRanges},\n settings: {update, noAlloc}\n } = this;\n\n let updated = true;\n if (update) {\n // Custom updater - typically for non-instanced layers\n for (const [startRow, endRow] of updateRanges) {\n update.call(context, this, {data, startRow, endRow, props, numInstances});\n }\n if (!this.value) {\n // no value was assigned during update\n } else if (\n this.constant ||\n this.buffer.byteLength < (this.value as TypedArray).byteLength + this.byteOffset\n ) {\n this.setData({\n value: this.value,\n constant: this.constant\n });\n // Setting attribute.constant in updater is a legacy approach that interferes with allocation in the next cycle\n // Respect it here but reset after use\n this.constant = false;\n } else {\n for (const [startRow, endRow] of updateRanges) {\n const startOffset = Number.isFinite(startRow) ? this.getVertexOffset(startRow) : 0;\n const endOffset = Number.isFinite(endRow)\n ? this.getVertexOffset(endRow)\n : noAlloc || !Number.isFinite(numInstances)\n ? this.value.length\n : numInstances * this.size;\n\n super.updateSubBuffer({startOffset, endOffset});\n }\n }\n this._checkAttributeArray();\n } else {\n updated = false;\n }\n\n this.clearNeedsUpdate();\n this.setNeedsRedraw();\n\n return updated;\n }\n\n // Use generic value\n // Returns true if successful\n setConstantValue(value?: NumericArray): boolean {\n if (value === undefined || typeof value === 'function') {\n return false;\n }\n\n const hasChanged = this.setData({constant: true, value});\n\n if (hasChanged) {\n this.setNeedsRedraw();\n }\n this.clearNeedsUpdate();\n return true;\n }\n\n // Use external buffer\n // Returns true if successful\n // eslint-disable-next-line max-statements\n setExternalBuffer(buffer?: TypedArray | Buffer | BinaryAttribute): boolean {\n const {state} = this;\n\n if (!buffer) {\n state.lastExternalBuffer = null;\n return false;\n }\n\n this.clearNeedsUpdate();\n\n if (state.lastExternalBuffer === buffer) {\n return true;\n }\n state.lastExternalBuffer = buffer;\n this.setNeedsRedraw();\n this.setData(buffer);\n return true;\n }\n\n // Binary value is a typed array packed from mapping the source data with the accessor\n // If the returned value from the accessor is the same as the attribute value, set it directly\n // Otherwise use the auto updater for transform/normalization\n setBinaryValue(\n buffer?: TypedArray | Buffer | BinaryAttribute,\n startIndices: NumericArray | null = null\n ): boolean {\n const {state, settings} = this;\n\n if (!buffer) {\n state.binaryValue = null;\n state.binaryAccessor = null;\n return false;\n }\n\n if (settings.noAlloc) {\n // Let the layer handle this\n return false;\n }\n\n if (state.binaryValue === buffer) {\n this.clearNeedsUpdate();\n return true;\n }\n state.binaryValue = buffer;\n this.setNeedsRedraw();\n\n const needsUpdate = settings.transform || startIndices !== this.startIndices;\n\n if (needsUpdate) {\n if (ArrayBuffer.isView(buffer)) {\n buffer = {value: buffer};\n }\n const binaryValue = buffer as BinaryAttribute;\n assert(ArrayBuffer.isView(binaryValue.value), `invalid ${settings.accessor}`);\n const needsNormalize = Boolean(binaryValue.size) && binaryValue.size !== this.size;\n\n state.binaryAccessor = getAccessorFromBuffer(binaryValue.value, {\n size: binaryValue.size || this.size,\n stride: binaryValue.stride,\n offset: binaryValue.offset,\n startIndices: startIndices as NumericArray,\n nested: needsNormalize\n });\n // Fall through to auto updater\n return false;\n }\n\n this.clearNeedsUpdate();\n this.setData(buffer);\n return true;\n }\n\n getVertexOffset(row: number): number {\n const {startIndices} = this;\n const vertexIndex = startIndices\n ? row < startIndices.length\n ? startIndices[row]\n : this.numInstances\n : row;\n return vertexIndex * this.size;\n }\n\n getShaderAttributes(): Record {\n const shaderAttributeDefs = this.settings.shaderAttributes || {[this.id]: null};\n const shaderAttributes: Record = {};\n\n for (const shaderAttributeName in shaderAttributeDefs) {\n Object.assign(\n shaderAttributes,\n super.getShaderAttributes(shaderAttributeName, shaderAttributeDefs[shaderAttributeName])\n );\n }\n\n return shaderAttributes;\n }\n\n /* eslint-disable max-depth, max-statements */\n private _autoUpdater(\n attribute: Attribute,\n {\n data,\n startRow,\n endRow,\n props,\n numInstances\n }: {\n data: any;\n startRow: number;\n endRow: number;\n props: any;\n numInstances: number;\n }\n ): void {\n if (attribute.constant) {\n return;\n }\n const {settings, state, value, size, startIndices} = attribute;\n\n const {accessor, transform} = settings;\n const accessorFunc: Accessor =\n state.binaryAccessor ||\n // @ts-ignore\n (typeof accessor === 'function' ? accessor : props[accessor]);\n\n assert(typeof accessorFunc === 'function', `accessor \"${accessor}\" is not a function`);\n\n let i = attribute.getVertexOffset(startRow);\n const {iterable, objectInfo} = createIterable(data, startRow, endRow);\n for (const object of iterable) {\n objectInfo.index++;\n\n let objectValue = accessorFunc(object, objectInfo);\n if (transform) {\n // transform callbacks could be bound to a particular layer instance.\n // always point `this` to the current layer.\n objectValue = transform.call(this, objectValue);\n }\n\n if (startIndices) {\n const numVertices =\n (objectInfo.index < startIndices.length - 1\n ? startIndices[objectInfo.index + 1]\n : numInstances) - startIndices[objectInfo.index];\n if (objectValue && Array.isArray(objectValue[0])) {\n let startIndex = i;\n for (const item of objectValue) {\n attribute._normalizeValue(item, value as TypedArray, startIndex);\n startIndex += size;\n }\n } else if (objectValue && objectValue.length > size) {\n (value as TypedArray).set(objectValue, i);\n } else {\n attribute._normalizeValue(objectValue, objectInfo.target, 0);\n fillArray({\n target: value,\n source: objectInfo.target,\n start: i,\n count: numVertices\n });\n }\n i += numVertices * size;\n } else {\n attribute._normalizeValue(objectValue, value as TypedArray, i);\n i += size;\n }\n }\n }\n /* eslint-enable max-depth, max-statements */\n\n // Validate deck.gl level fields\n private _validateAttributeUpdaters() {\n const {settings} = this;\n\n // Check that 'update' is a valid function\n const hasUpdater = settings.noAlloc || typeof settings.update === 'function';\n if (!hasUpdater) {\n throw new Error(`Attribute ${this.id} missing update or accessor`);\n }\n }\n\n // check that the first few elements of the attribute are reasonable\n /* eslint-disable no-fallthrough */\n private _checkAttributeArray() {\n const {value} = this;\n const limit = Math.min(4, this.size);\n if (value && value.length >= limit) {\n let valid = true;\n switch (limit) {\n case 4:\n valid = valid && Number.isFinite(value[3]);\n case 3:\n valid = valid && Number.isFinite(value[2]);\n case 2:\n valid = valid && Number.isFinite(value[1]);\n case 1:\n valid = valid && Number.isFinite(value[0]);\n break;\n default:\n valid = false;\n }\n\n if (!valid) {\n throw new Error(`Illegal attribute generated for ${this.id}`);\n }\n }\n }\n /* eslint-enable no-fallthrough */\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { hasFeature, FEATURES, Buffer } from '@luma.gl/core';\nimport ShaderAttribute from './shader-attribute';\nimport { glArrayFromType } from './gl-utils';\nimport typedArrayManager from '../../utils/typed-array-manager';\nimport { toDoublePrecisionArray } from '../../utils/math-utils';\nimport log from '../../utils/log';\n\nfunction getStride(accessor) {\n return accessor.stride || accessor.size * accessor.bytesPerElement;\n}\n\nfunction resolveShaderAttribute(baseAccessor, shaderAttributeOptions) {\n if (shaderAttributeOptions.offset) {\n log.removed('shaderAttribute.offset', 'vertexOffset, elementOffset')();\n }\n\n const stride = getStride(baseAccessor);\n const vertexOffset = shaderAttributeOptions.vertexOffset !== undefined ? shaderAttributeOptions.vertexOffset : baseAccessor.vertexOffset || 0;\n const elementOffset = shaderAttributeOptions.elementOffset || 0;\n const offset = vertexOffset * stride + elementOffset * baseAccessor.bytesPerElement + (baseAccessor.offset || 0);\n return { ...shaderAttributeOptions,\n offset,\n stride\n };\n}\n\nfunction resolveDoublePrecisionShaderAttributes(baseAccessor, shaderAttributeOptions) {\n const resolvedOptions = resolveShaderAttribute(baseAccessor, shaderAttributeOptions);\n return {\n high: resolvedOptions,\n low: { ...resolvedOptions,\n offset: resolvedOptions.offset + baseAccessor.size * 4\n }\n };\n}\n\nexport default class DataColumn {\n constructor(gl, opts, state) {\n _defineProperty(this, \"gl\", void 0);\n\n _defineProperty(this, \"id\", void 0);\n\n _defineProperty(this, \"size\", void 0);\n\n _defineProperty(this, \"settings\", void 0);\n\n _defineProperty(this, \"value\", void 0);\n\n _defineProperty(this, \"doublePrecision\", void 0);\n\n _defineProperty(this, \"_buffer\", void 0);\n\n _defineProperty(this, \"state\", void 0);\n\n this.gl = gl;\n this.id = opts.id || '';\n this.size = opts.size || 1;\n const logicalType = opts.logicalType || opts.type;\n const doublePrecision = logicalType === 5130;\n let {\n defaultValue\n } = opts;\n defaultValue = Number.isFinite(defaultValue) ? [defaultValue] : defaultValue || new Array(this.size).fill(0);\n let bufferType;\n\n if (doublePrecision) {\n bufferType = 5126;\n } else if (!logicalType && opts.isIndexed) {\n bufferType = gl && hasFeature(gl, FEATURES.ELEMENT_INDEX_UINT32) ? 5125 : 5123;\n } else {\n bufferType = logicalType || 5126;\n }\n\n let defaultType = glArrayFromType(logicalType || bufferType || 5126);\n this.doublePrecision = doublePrecision;\n\n if (doublePrecision && opts.fp64 === false) {\n defaultType = Float32Array;\n }\n\n this.value = null;\n this.settings = { ...opts,\n defaultType,\n defaultValue: defaultValue,\n logicalType,\n type: bufferType,\n size: this.size,\n bytesPerElement: defaultType.BYTES_PER_ELEMENT\n };\n this.state = { ...state,\n externalBuffer: null,\n bufferAccessor: this.settings,\n allocatedValue: null,\n numInstances: 0,\n bounds: null,\n constant: false\n };\n this._buffer = null;\n }\n\n get isConstant() {\n return this.state.constant;\n }\n\n get buffer() {\n if (!this._buffer) {\n const {\n isIndexed,\n type\n } = this.settings;\n this._buffer = new Buffer(this.gl, {\n id: this.id,\n target: isIndexed ? 34963 : 34962,\n accessor: {\n type\n }\n });\n }\n\n return this._buffer;\n }\n\n get byteOffset() {\n const accessor = this.getAccessor();\n\n if (accessor.vertexOffset) {\n return accessor.vertexOffset * getStride(accessor);\n }\n\n return 0;\n }\n\n get numInstances() {\n return this.state.numInstances;\n }\n\n set numInstances(n) {\n this.state.numInstances = n;\n }\n\n delete() {\n if (this._buffer) {\n this._buffer.delete();\n\n this._buffer = null;\n }\n\n typedArrayManager.release(this.state.allocatedValue);\n }\n\n getShaderAttributes(id, options) {\n if (this.doublePrecision) {\n const shaderAttributes = {};\n const isBuffer64Bit = this.value instanceof Float64Array;\n const doubleShaderAttributeDefs = resolveDoublePrecisionShaderAttributes(this.getAccessor(), options || {});\n shaderAttributes[id] = new ShaderAttribute(this, doubleShaderAttributeDefs.high);\n shaderAttributes[\"\".concat(id, \"64Low\")] = isBuffer64Bit ? new ShaderAttribute(this, doubleShaderAttributeDefs.low) : new Float32Array(this.size);\n return shaderAttributes;\n }\n\n if (options) {\n const shaderAttributeDef = resolveShaderAttribute(this.getAccessor(), options);\n return {\n [id]: new ShaderAttribute(this, shaderAttributeDef)\n };\n }\n\n return {\n [id]: this\n };\n }\n\n getBuffer() {\n if (this.state.constant) {\n return null;\n }\n\n return this.state.externalBuffer || this._buffer;\n }\n\n getValue() {\n if (this.state.constant) {\n return this.value;\n }\n\n return [this.getBuffer(), this.getAccessor()];\n }\n\n getAccessor() {\n return this.state.bufferAccessor;\n }\n\n getBounds() {\n if (this.state.bounds) {\n return this.state.bounds;\n }\n\n let result = null;\n\n if (this.state.constant && this.value) {\n const min = Array.from(this.value);\n result = [min, min];\n } else {\n const {\n value,\n numInstances,\n size\n } = this;\n const len = numInstances * size;\n\n if (value && len && value.length >= len) {\n const min = new Array(size).fill(Infinity);\n const max = new Array(size).fill(-Infinity);\n\n for (let i = 0; i < len;) {\n for (let j = 0; j < size; j++) {\n const v = value[i++];\n if (v < min[j]) min[j] = v;\n if (v > max[j]) max[j] = v;\n }\n }\n\n result = [min, max];\n }\n }\n\n this.state.bounds = result;\n return result;\n }\n\n setData(data) {\n const {\n state\n } = this;\n let opts;\n\n if (ArrayBuffer.isView(data)) {\n opts = {\n value: data\n };\n } else if (data instanceof Buffer) {\n opts = {\n buffer: data\n };\n } else {\n opts = data;\n }\n\n const accessor = { ...this.settings,\n ...opts\n };\n state.bufferAccessor = accessor;\n state.bounds = null;\n\n if (opts.constant) {\n let value = opts.value;\n value = this._normalizeValue(value, [], 0);\n\n if (this.settings.normalized) {\n value = this.normalizeConstant(value);\n }\n\n const hasChanged = !state.constant || !this._areValuesEqual(value, this.value);\n\n if (!hasChanged) {\n return false;\n }\n\n state.externalBuffer = null;\n state.constant = true;\n this.value = value;\n } else if (opts.buffer) {\n const buffer = opts.buffer;\n state.externalBuffer = buffer;\n state.constant = false;\n this.value = opts.value || null;\n const isBuffer64Bit = opts.value instanceof Float64Array;\n accessor.type = opts.type || buffer.accessor.type;\n accessor.bytesPerElement = buffer.accessor.BYTES_PER_ELEMENT * (isBuffer64Bit ? 2 : 1);\n accessor.stride = getStride(accessor);\n } else if (opts.value) {\n this._checkExternalBuffer(opts);\n\n let value = opts.value;\n state.externalBuffer = null;\n state.constant = false;\n this.value = value;\n accessor.bytesPerElement = value.BYTES_PER_ELEMENT;\n accessor.stride = getStride(accessor);\n const {\n buffer,\n byteOffset\n } = this;\n\n if (this.doublePrecision && value instanceof Float64Array) {\n value = toDoublePrecisionArray(value, accessor);\n }\n\n const requiredBufferSize = value.byteLength + byteOffset + accessor.stride * 2;\n\n if (buffer.byteLength < requiredBufferSize) {\n buffer.reallocate(requiredBufferSize);\n }\n\n buffer.setAccessor(null);\n buffer.subData({\n data: value,\n offset: byteOffset\n });\n accessor.type = opts.type || buffer.accessor.type;\n }\n\n return true;\n }\n\n updateSubBuffer(opts = {}) {\n this.state.bounds = null;\n const value = this.value;\n const {\n startOffset = 0,\n endOffset\n } = opts;\n this.buffer.subData({\n data: this.doublePrecision && value instanceof Float64Array ? toDoublePrecisionArray(value, {\n size: this.size,\n startIndex: startOffset,\n endIndex: endOffset\n }) : value.subarray(startOffset, endOffset),\n offset: startOffset * value.BYTES_PER_ELEMENT + this.byteOffset\n });\n }\n\n allocate(numInstances, copy = false) {\n const {\n state\n } = this;\n const oldValue = state.allocatedValue;\n const value = typedArrayManager.allocate(oldValue, numInstances + 1, {\n size: this.size,\n type: this.settings.defaultType,\n copy\n });\n this.value = value;\n const {\n buffer,\n byteOffset\n } = this;\n\n if (buffer.byteLength < value.byteLength + byteOffset) {\n buffer.reallocate(value.byteLength + byteOffset);\n\n if (copy && oldValue) {\n buffer.subData({\n data: oldValue instanceof Float64Array ? toDoublePrecisionArray(oldValue, this) : oldValue,\n offset: byteOffset\n });\n }\n }\n\n state.allocatedValue = value;\n state.constant = false;\n state.externalBuffer = null;\n state.bufferAccessor = this.settings;\n return true;\n }\n\n _checkExternalBuffer(opts) {\n const {\n value\n } = opts;\n\n if (!ArrayBuffer.isView(value)) {\n throw new Error(\"Attribute \".concat(this.id, \" value is not TypedArray\"));\n }\n\n const ArrayType = this.settings.defaultType;\n let illegalArrayType = false;\n\n if (this.doublePrecision) {\n illegalArrayType = value.BYTES_PER_ELEMENT < 4;\n }\n\n if (illegalArrayType) {\n throw new Error(\"Attribute \".concat(this.id, \" does not support \").concat(value.constructor.name));\n }\n\n if (!(value instanceof ArrayType) && this.settings.normalized && !('normalized' in opts)) {\n log.warn(\"Attribute \".concat(this.id, \" is normalized\"))();\n }\n }\n\n normalizeConstant(value) {\n switch (this.settings.type) {\n case 5120:\n return new Float32Array(value).map(x => (x + 128) / 255 * 2 - 1);\n\n case 5122:\n return new Float32Array(value).map(x => (x + 32768) / 65535 * 2 - 1);\n\n case 5121:\n return new Float32Array(value).map(x => x / 255);\n\n case 5123:\n return new Float32Array(value).map(x => x / 65535);\n\n default:\n return value;\n }\n }\n\n _normalizeValue(value, out, start) {\n const {\n defaultValue,\n size\n } = this.settings;\n\n if (Number.isFinite(value)) {\n out[start] = value;\n return out;\n }\n\n if (!value) {\n let i = size;\n\n while (--i >= 0) {\n out[start + i] = defaultValue[i];\n }\n\n return out;\n }\n\n switch (size) {\n case 4:\n out[start + 3] = Number.isFinite(value[3]) ? value[3] : defaultValue[3];\n\n case 3:\n out[start + 2] = Number.isFinite(value[2]) ? value[2] : defaultValue[2];\n\n case 2:\n out[start + 1] = Number.isFinite(value[1]) ? value[1] : defaultValue[1];\n\n case 1:\n out[start + 0] = Number.isFinite(value[0]) ? value[0] : defaultValue[0];\n break;\n\n default:\n let i = size;\n\n while (--i >= 0) {\n out[start + i] = Number.isFinite(value[i]) ? value[i] : defaultValue[i];\n }\n\n }\n\n return out;\n }\n\n _areValuesEqual(value1, value2) {\n if (!value1 || !value2) {\n return false;\n }\n\n const {\n size\n } = this;\n\n for (let i = 0; i < size; i++) {\n if (value1[i] !== value2[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n}\n//# sourceMappingURL=data-column.js.map","/* eslint-disable complexity */\nimport GL from '@luma.gl/constants';\nimport {hasFeature, FEATURES, Buffer} from '@luma.gl/core';\nimport ShaderAttribute, {IShaderAttribute} from './shader-attribute';\nimport {glArrayFromType} from './gl-utils';\nimport typedArrayManager from '../../utils/typed-array-manager';\nimport {toDoublePrecisionArray} from '../../utils/math-utils';\nimport log from '../../utils/log';\n\nimport type {Buffer as LumaBuffer} from '@luma.gl/webgl';\nimport type {TypedArray, NumericArray, TypedArrayConstructor} from '../../types/types';\n\nexport type BufferAccessor = {\n /** A WebGL data type, see [vertexAttribPointer](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/vertexAttribPointer#parameters). */\n type?: number;\n /** The number of elements per vertex attribute. */\n size?: number;\n /** 1 if instanced. */\n divisor?: number;\n /** Offset of the first vertex attribute into the buffer, in bytes. */\n offset?: number;\n /** The offset between the beginning of consecutive vertex attributes, in bytes. */\n stride?: number;\n /** Whether data values should be normalized. Note that all color attributes in deck.gl layers are normalized by default. */\n normalized?: boolean;\n integer?: boolean;\n};\n\nexport type ShaderAttributeOptions = Partial & {\n offset: number;\n stride: number;\n vertexOffset?: number;\n elementOffset?: number;\n};\n\nfunction getStride(accessor: DataColumnSettings): number {\n return accessor.stride || accessor.size * accessor.bytesPerElement;\n}\n\nfunction resolveShaderAttribute(\n baseAccessor: DataColumnSettings,\n shaderAttributeOptions: Partial\n): ShaderAttributeOptions {\n if (shaderAttributeOptions.offset) {\n log.removed('shaderAttribute.offset', 'vertexOffset, elementOffset')();\n }\n\n // All shader attributes share the parent's stride\n const stride = getStride(baseAccessor);\n // `vertexOffset` is used to access the neighboring vertex's value\n // e.g. `nextPositions` in polygon\n const vertexOffset =\n shaderAttributeOptions.vertexOffset !== undefined\n ? shaderAttributeOptions.vertexOffset\n : baseAccessor.vertexOffset || 0;\n // `elementOffset` is defined when shader attribute's size is smaller than the parent's\n // e.g. `translations` in transform matrix\n const elementOffset = shaderAttributeOptions.elementOffset || 0;\n const offset =\n // offsets defined by the attribute\n vertexOffset * stride +\n elementOffset * baseAccessor.bytesPerElement +\n // offsets defined by external buffers if any\n (baseAccessor.offset || 0);\n\n return {\n ...shaderAttributeOptions,\n offset,\n stride\n };\n}\n\nfunction resolveDoublePrecisionShaderAttributes(\n baseAccessor: DataColumnSettings,\n shaderAttributeOptions: Partial\n): {\n high: ShaderAttributeOptions;\n low: ShaderAttributeOptions;\n} {\n const resolvedOptions = resolveShaderAttribute(baseAccessor, shaderAttributeOptions);\n\n return {\n high: resolvedOptions,\n low: {\n ...resolvedOptions,\n offset: resolvedOptions.offset + baseAccessor.size * 4\n }\n };\n}\n\nexport type DataColumnOptions = Options &\n BufferAccessor & {\n id?: string;\n vertexOffset?: number;\n fp64?: boolean;\n logicalType?: number;\n isIndexed?: boolean;\n defaultValue?: number | number[];\n };\n\ntype DataColumnSettings = DataColumnOptions & {\n type: number;\n size: number;\n logicalType?: number;\n bytesPerElement: number;\n defaultValue: number[];\n defaultType: TypedArrayConstructor;\n};\n\ntype DataColumnInternalState = State & {\n externalBuffer: LumaBuffer | null;\n bufferAccessor: DataColumnSettings;\n allocatedValue: TypedArray | null;\n numInstances: number;\n bounds: [number[], number[]] | null;\n constant: boolean;\n};\n\nexport default class DataColumn implements IShaderAttribute {\n gl: WebGLRenderingContext;\n id: string;\n size: number;\n settings: DataColumnSettings;\n value: NumericArray | null;\n doublePrecision: boolean;\n\n protected _buffer: LumaBuffer | null;\n protected state: DataColumnInternalState;\n\n /* eslint-disable max-statements */\n constructor(gl: WebGLRenderingContext, opts: DataColumnOptions, state: State) {\n this.gl = gl;\n this.id = opts.id || '';\n this.size = opts.size || 1;\n\n const logicalType = opts.logicalType || opts.type;\n const doublePrecision = logicalType === GL.DOUBLE;\n\n let {defaultValue} = opts;\n defaultValue = Number.isFinite(defaultValue)\n ? [defaultValue]\n : defaultValue || new Array(this.size).fill(0);\n\n let bufferType: number;\n if (doublePrecision) {\n bufferType = GL.FLOAT;\n } else if (!logicalType && opts.isIndexed) {\n bufferType =\n gl && hasFeature(gl, FEATURES.ELEMENT_INDEX_UINT32) ? GL.UNSIGNED_INT : GL.UNSIGNED_SHORT;\n } else {\n bufferType = logicalType || GL.FLOAT;\n }\n\n // This is the attribute type defined by the layer\n // If an external buffer is provided, this.type may be overwritten\n // But we always want to use defaultType for allocation\n let defaultType = glArrayFromType(logicalType || bufferType || GL.FLOAT);\n this.doublePrecision = doublePrecision;\n\n // `fp64: false` tells a double-precision attribute to allocate Float32Arrays\n // by default when using auto-packing. This is more efficient in use cases where\n // high precision is unnecessary, but the `64Low` attribute is still required\n // by the shader.\n if (doublePrecision && opts.fp64 === false) {\n defaultType = Float32Array;\n }\n\n this.value = null;\n this.settings = {\n ...opts,\n defaultType,\n defaultValue: defaultValue as number[],\n logicalType,\n type: bufferType,\n size: this.size,\n bytesPerElement: defaultType.BYTES_PER_ELEMENT\n };\n this.state = {\n ...state,\n externalBuffer: null,\n bufferAccessor: this.settings,\n allocatedValue: null,\n numInstances: 0,\n bounds: null,\n constant: false\n };\n this._buffer = null;\n }\n /* eslint-enable max-statements */\n\n get isConstant(): boolean {\n return this.state.constant;\n }\n\n get buffer(): LumaBuffer {\n if (!this._buffer) {\n const {isIndexed, type} = this.settings;\n this._buffer = new Buffer(this.gl, {\n id: this.id,\n target: isIndexed ? GL.ELEMENT_ARRAY_BUFFER : GL.ARRAY_BUFFER,\n accessor: {type}\n }) as LumaBuffer;\n }\n return this._buffer;\n }\n\n get byteOffset(): number {\n const accessor = this.getAccessor();\n if (accessor.vertexOffset) {\n return accessor.vertexOffset * getStride(accessor);\n }\n return 0;\n }\n\n get numInstances(): number {\n return this.state.numInstances;\n }\n\n set numInstances(n: number) {\n this.state.numInstances = n;\n }\n\n delete(): void {\n if (this._buffer) {\n this._buffer.delete();\n this._buffer = null;\n }\n typedArrayManager.release(this.state.allocatedValue);\n }\n\n getShaderAttributes(\n id: string,\n options: Partial | null\n ): Record {\n if (this.doublePrecision) {\n const shaderAttributes = {};\n const isBuffer64Bit = this.value instanceof Float64Array;\n\n const doubleShaderAttributeDefs = resolveDoublePrecisionShaderAttributes(\n this.getAccessor(),\n options || {}\n );\n\n shaderAttributes[id] = new ShaderAttribute(this, doubleShaderAttributeDefs.high);\n shaderAttributes[`${id}64Low`] = isBuffer64Bit\n ? new ShaderAttribute(this, doubleShaderAttributeDefs.low)\n : new Float32Array(this.size); // use constant for low part if buffer is 32-bit\n return shaderAttributes;\n }\n if (options) {\n const shaderAttributeDef = resolveShaderAttribute(this.getAccessor(), options);\n return {[id]: new ShaderAttribute(this, shaderAttributeDef)};\n }\n return {[id]: this};\n }\n\n getBuffer(): LumaBuffer | null {\n if (this.state.constant) {\n return null;\n }\n return this.state.externalBuffer || this._buffer;\n }\n\n getValue(): [LumaBuffer, BufferAccessor] | NumericArray | null {\n if (this.state.constant) {\n return this.value;\n }\n return [this.getBuffer() as LumaBuffer, this.getAccessor() as BufferAccessor];\n }\n\n getAccessor(): DataColumnSettings {\n return this.state.bufferAccessor;\n }\n\n // Returns [min: Array(size), max: Array(size)]\n /* eslint-disable max-depth */\n getBounds(): [number[], number[]] | null {\n if (this.state.bounds) {\n return this.state.bounds;\n }\n let result: [number[], number[]] | null = null;\n if (this.state.constant && this.value) {\n const min = Array.from(this.value);\n result = [min, min];\n } else {\n const {value, numInstances, size} = this;\n const len = numInstances * size;\n if (value && len && value.length >= len) {\n const min = new Array(size).fill(Infinity);\n const max = new Array(size).fill(-Infinity);\n for (let i = 0; i < len; ) {\n for (let j = 0; j < size; j++) {\n const v = value[i++];\n if (v < min[j]) min[j] = v;\n if (v > max[j]) max[j] = v;\n }\n }\n result = [min, max];\n }\n }\n this.state.bounds = result;\n return result;\n }\n\n // returns true if success\n // eslint-disable-next-line max-statements\n setData(\n data:\n | TypedArray\n | LumaBuffer\n | ({\n constant?: boolean;\n value?: NumericArray;\n buffer?: LumaBuffer;\n } & Partial)\n ): boolean {\n const {state} = this;\n\n let opts: {\n constant?: boolean;\n value?: NumericArray;\n buffer?: LumaBuffer;\n } & Partial;\n if (ArrayBuffer.isView(data)) {\n opts = {value: data};\n } else if (data instanceof Buffer) {\n opts = {buffer: data as LumaBuffer};\n } else {\n opts = data;\n }\n\n const accessor: DataColumnSettings = {...this.settings, ...opts};\n state.bufferAccessor = accessor;\n state.bounds = null; // clear cached bounds\n\n if (opts.constant) {\n // set constant\n let value = opts.value as NumericArray;\n value = this._normalizeValue(value, [], 0);\n if (this.settings.normalized) {\n value = this.normalizeConstant(value);\n }\n const hasChanged = !state.constant || !this._areValuesEqual(value, this.value);\n\n if (!hasChanged) {\n return false;\n }\n state.externalBuffer = null;\n state.constant = true;\n this.value = value;\n } else if (opts.buffer) {\n const buffer = opts.buffer;\n state.externalBuffer = buffer;\n state.constant = false;\n this.value = opts.value || null;\n const isBuffer64Bit = opts.value instanceof Float64Array;\n\n // Copy the type of the buffer into the accessor\n // @ts-ignore\n accessor.type = opts.type || buffer.accessor.type;\n // @ts-ignore\n accessor.bytesPerElement = buffer.accessor.BYTES_PER_ELEMENT * (isBuffer64Bit ? 2 : 1);\n accessor.stride = getStride(accessor);\n } else if (opts.value) {\n this._checkExternalBuffer(opts);\n\n let value = opts.value as TypedArray;\n state.externalBuffer = null;\n state.constant = false;\n this.value = value;\n\n accessor.bytesPerElement = value.BYTES_PER_ELEMENT;\n accessor.stride = getStride(accessor);\n\n const {buffer, byteOffset} = this;\n\n if (this.doublePrecision && value instanceof Float64Array) {\n value = toDoublePrecisionArray(value, accessor);\n }\n\n // A small over allocation is used as safety margin\n // Shader attributes may try to access this buffer with bigger offsets\n const requiredBufferSize = value.byteLength + byteOffset + accessor.stride * 2;\n if (buffer.byteLength < requiredBufferSize) {\n buffer.reallocate(requiredBufferSize);\n }\n // Hack: force Buffer to infer data type\n buffer.setAccessor(null);\n buffer.subData({data: value, offset: byteOffset});\n // @ts-ignore\n accessor.type = opts.type || buffer.accessor.type;\n }\n\n return true;\n }\n\n updateSubBuffer(\n opts: {\n startOffset?: number;\n endOffset?: number;\n } = {}\n ): void {\n this.state.bounds = null; // clear cached bounds\n\n const value = this.value as TypedArray;\n const {startOffset = 0, endOffset} = opts;\n this.buffer.subData({\n data:\n this.doublePrecision && value instanceof Float64Array\n ? toDoublePrecisionArray(value, {\n size: this.size,\n startIndex: startOffset,\n endIndex: endOffset\n })\n : value.subarray(startOffset, endOffset),\n offset: startOffset * value.BYTES_PER_ELEMENT + this.byteOffset\n });\n }\n\n allocate(numInstances: number, copy: boolean = false): boolean {\n const {state} = this;\n const oldValue = state.allocatedValue;\n\n // Allocate at least one element to ensure a valid buffer\n const value = typedArrayManager.allocate(oldValue, numInstances + 1, {\n size: this.size,\n type: this.settings.defaultType,\n copy\n });\n\n this.value = value;\n\n const {buffer, byteOffset} = this;\n\n if (buffer.byteLength < value.byteLength + byteOffset) {\n buffer.reallocate(value.byteLength + byteOffset);\n\n if (copy && oldValue) {\n // Upload the full existing attribute value to the GPU, so that updateBuffer\n // can choose to only update a partial range.\n // TODO - copy old buffer to new buffer on the GPU\n buffer.subData({\n data:\n oldValue instanceof Float64Array ? toDoublePrecisionArray(oldValue, this) : oldValue,\n offset: byteOffset\n });\n }\n }\n\n state.allocatedValue = value;\n state.constant = false;\n state.externalBuffer = null;\n state.bufferAccessor = this.settings;\n return true;\n }\n\n // PRIVATE HELPER METHODS\n protected _checkExternalBuffer(opts: {value?: NumericArray; normalized?: boolean}): void {\n const {value} = opts;\n if (!ArrayBuffer.isView(value)) {\n throw new Error(`Attribute ${this.id} value is not TypedArray`);\n }\n const ArrayType = this.settings.defaultType;\n\n let illegalArrayType = false;\n if (this.doublePrecision) {\n // not 32bit or 64bit\n illegalArrayType = value.BYTES_PER_ELEMENT < 4;\n }\n if (illegalArrayType) {\n throw new Error(`Attribute ${this.id} does not support ${value.constructor.name}`);\n }\n if (!(value instanceof ArrayType) && this.settings.normalized && !('normalized' in opts)) {\n log.warn(`Attribute ${this.id} is normalized`)();\n }\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/vertexAttribPointer\n normalizeConstant(value: NumericArray): NumericArray {\n switch (this.settings.type) {\n case GL.BYTE:\n // normalize [-128, 127] to [-1, 1]\n return new Float32Array(value).map(x => ((x + 128) / 255) * 2 - 1);\n\n case GL.SHORT:\n // normalize [-32768, 32767] to [-1, 1]\n return new Float32Array(value).map(x => ((x + 32768) / 65535) * 2 - 1);\n\n case GL.UNSIGNED_BYTE:\n // normalize [0, 255] to [0, 1]\n return new Float32Array(value).map(x => x / 255);\n\n case GL.UNSIGNED_SHORT:\n // normalize [0, 65535] to [0, 1]\n return new Float32Array(value).map(x => x / 65535);\n\n default:\n // No normalization for gl.FLOAT and gl.HALF_FLOAT\n return value;\n }\n }\n\n /* check user supplied values and apply fallback */\n protected _normalizeValue(value: any, out: NumericArray, start: number): NumericArray {\n const {defaultValue, size} = this.settings;\n\n if (Number.isFinite(value)) {\n out[start] = value;\n return out;\n }\n if (!value) {\n let i = size;\n while (--i >= 0) {\n out[start + i] = defaultValue[i];\n }\n return out;\n }\n\n // Important - switch cases are 5x more performant than a for loop!\n /* eslint-disable no-fallthrough, default-case */\n switch (size) {\n case 4:\n out[start + 3] = Number.isFinite(value[3]) ? value[3] : defaultValue[3];\n case 3:\n out[start + 2] = Number.isFinite(value[2]) ? value[2] : defaultValue[2];\n case 2:\n out[start + 1] = Number.isFinite(value[1]) ? value[1] : defaultValue[1];\n case 1:\n out[start + 0] = Number.isFinite(value[0]) ? value[0] : defaultValue[0];\n break;\n\n default:\n // In the rare case where the attribute size > 4, do it the slow way\n // This is used for e.g. transform matrices\n let i = size;\n while (--i >= 0) {\n out[start + i] = Number.isFinite(value[i]) ? value[i] : defaultValue[i];\n }\n }\n\n return out;\n }\n\n protected _areValuesEqual(value1: any, value2: any): boolean {\n if (!value1 || !value2) {\n return false;\n }\n const {size} = this;\n for (let i = 0; i < size; i++) {\n if (value1[i] !== value2[i]) {\n return false;\n }\n }\n return true;\n }\n}\n","import Resource from './resource';\nimport Accessor from './accessor';\nimport { getGLTypeFromTypedArray, getTypedArrayFromGLType } from '../webgl-utils/typed-array-utils';\nimport { assertWebGL2Context, log } from '@luma.gl/gltools';\nimport { assert } from '../utils/assert';\nimport { checkProps } from '../utils/check-props';\nconst DEBUG_DATA_LENGTH = 10;\nconst DEPRECATED_PROPS = {\n offset: 'accessor.offset',\n stride: 'accessor.stride',\n type: 'accessor.type',\n size: 'accessor.size',\n divisor: 'accessor.divisor',\n normalized: 'accessor.normalized',\n integer: 'accessor.integer',\n instanced: 'accessor.divisor',\n isInstanced: 'accessor.divisor'\n};\nconst PROP_CHECKS_INITIALIZE = {\n removedProps: {},\n replacedProps: {\n bytes: 'byteLength'\n },\n deprecatedProps: DEPRECATED_PROPS\n};\nconst PROP_CHECKS_SET_PROPS = {\n removedProps: DEPRECATED_PROPS\n};\nexport default class Buffer extends Resource {\n get [Symbol.toStringTag]() {\n return 'Buffer';\n }\n\n constructor(gl) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(gl, props);\n this.stubRemovedMethods('Buffer', 'v6.0', ['layout', 'setLayout', 'getIndexedParameter']);\n this.target = props.target || (this.gl.webgl2 ? 36662 : 34962);\n this.initialize(props);\n Object.seal(this);\n }\n\n getElementCount() {\n let accessor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.accessor;\n return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));\n }\n\n getVertexCount() {\n let accessor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.accessor;\n return Math.round(this.byteLength / Accessor.getBytesPerVertex(accessor));\n }\n\n initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (ArrayBuffer.isView(props)) {\n props = {\n data: props\n };\n }\n\n if (Number.isFinite(props)) {\n props = {\n byteLength: props\n };\n }\n\n props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);\n this.usage = props.usage || 35044;\n this.debugData = null;\n this.setAccessor(Object.assign({}, props, props.accessor));\n\n if (props.data) {\n this._setData(props.data, props.offset, props.byteLength);\n } else {\n this._setByteLength(props.byteLength || 0);\n }\n\n return this;\n }\n\n setProps(props) {\n props = checkProps('Buffer', props, PROP_CHECKS_SET_PROPS);\n\n if ('accessor' in props) {\n this.setAccessor(props.accessor);\n }\n\n return this;\n }\n\n setAccessor(accessor) {\n accessor = Object.assign({}, accessor);\n delete accessor.buffer;\n this.accessor = new Accessor(accessor);\n return this;\n }\n\n reallocate(byteLength) {\n if (byteLength > this.byteLength) {\n this._setByteLength(byteLength);\n\n return true;\n }\n\n this.bytesUsed = byteLength;\n return false;\n }\n\n setData(props) {\n return this.initialize(props);\n }\n\n subData(props) {\n if (ArrayBuffer.isView(props)) {\n props = {\n data: props\n };\n }\n\n const {\n data,\n offset = 0,\n srcOffset = 0\n } = props;\n const byteLength = props.byteLength || props.length;\n assert(data);\n const target = this.gl.webgl2 ? 36663 : this.target;\n this.gl.bindBuffer(target, this.handle);\n\n if (srcOffset !== 0 || byteLength !== undefined) {\n assertWebGL2Context(this.gl);\n this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n } else {\n this.gl.bufferSubData(target, offset, data);\n }\n\n this.gl.bindBuffer(target, null);\n this.debugData = null;\n\n this._inferType(data);\n\n return this;\n }\n\n copyData(_ref) {\n let {\n sourceBuffer,\n readOffset = 0,\n writeOffset = 0,\n size\n } = _ref;\n const {\n gl\n } = this;\n assertWebGL2Context(gl);\n gl.bindBuffer(36662, sourceBuffer.handle);\n gl.bindBuffer(36663, this.handle);\n gl.copyBufferSubData(36662, 36663, readOffset, writeOffset, size);\n gl.bindBuffer(36662, null);\n gl.bindBuffer(36663, null);\n this.debugData = null;\n return this;\n }\n\n getData() {\n let {\n dstData = null,\n srcByteOffset = 0,\n dstOffset = 0,\n length = 0\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n assertWebGL2Context(this.gl);\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || 5126, {\n clamped: false\n });\n\n const sourceAvailableElementCount = this._getAvailableElementCount(srcByteOffset);\n\n const dstElementOffset = dstOffset;\n let dstAvailableElementCount;\n let dstElementCount;\n\n if (dstData) {\n dstElementCount = dstData.length;\n dstAvailableElementCount = dstElementCount - dstElementOffset;\n } else {\n dstAvailableElementCount = Math.min(sourceAvailableElementCount, length || sourceAvailableElementCount);\n dstElementCount = dstElementOffset + dstAvailableElementCount;\n }\n\n const copyElementCount = Math.min(sourceAvailableElementCount, dstAvailableElementCount);\n length = length || copyElementCount;\n assert(length <= copyElementCount);\n dstData = dstData || new ArrayType(dstElementCount);\n this.gl.bindBuffer(36662, this.handle);\n this.gl.getBufferSubData(36662, srcByteOffset, dstData, dstOffset, length);\n this.gl.bindBuffer(36662, null);\n return dstData;\n }\n\n bind() {\n let {\n target = this.target,\n index = this.accessor && this.accessor.index,\n offset = 0,\n size\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (target === 35345 || target === 35982) {\n if (size !== undefined) {\n this.gl.bindBufferRange(target, index, this.handle, offset, size);\n } else {\n assert(offset === 0);\n this.gl.bindBufferBase(target, index, this.handle);\n }\n } else {\n this.gl.bindBuffer(target, this.handle);\n }\n\n return this;\n }\n\n unbind() {\n let {\n target = this.target,\n index = this.accessor && this.accessor.index\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const isIndexedBuffer = target === 35345 || target === 35982;\n\n if (isIndexedBuffer) {\n this.gl.bindBufferBase(target, index, null);\n } else {\n this.gl.bindBuffer(target, null);\n }\n\n return this;\n }\n\n getDebugData() {\n if (!this.debugData) {\n this.debugData = this.getData({\n length: Math.min(DEBUG_DATA_LENGTH, this.byteLength)\n });\n return {\n data: this.debugData,\n changed: true\n };\n }\n\n return {\n data: this.debugData,\n changed: false\n };\n }\n\n invalidateDebugData() {\n this.debugData = null;\n }\n\n _setData(data) {\n let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let byteLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : data.byteLength + offset;\n assert(ArrayBuffer.isView(data));\n\n this._trackDeallocatedMemory();\n\n const target = this._getTarget();\n\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, byteLength, this.usage);\n this.gl.bufferSubData(target, offset, data);\n this.gl.bindBuffer(target, null);\n this.debugData = data.slice(0, DEBUG_DATA_LENGTH);\n this.bytesUsed = byteLength;\n\n this._trackAllocatedMemory(byteLength);\n\n const type = getGLTypeFromTypedArray(data);\n assert(type);\n this.setAccessor(new Accessor(this.accessor, {\n type\n }));\n return this;\n }\n\n _setByteLength(byteLength) {\n let usage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.usage;\n assert(byteLength >= 0);\n\n this._trackDeallocatedMemory();\n\n let data = byteLength;\n\n if (byteLength === 0) {\n data = new Float32Array(0);\n }\n\n const target = this._getTarget();\n\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, usage);\n this.gl.bindBuffer(target, null);\n this.usage = usage;\n this.debugData = null;\n this.bytesUsed = byteLength;\n\n this._trackAllocatedMemory(byteLength);\n\n return this;\n }\n\n _getTarget() {\n return this.gl.webgl2 ? 36663 : this.target;\n }\n\n _getAvailableElementCount(srcByteOffset) {\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || 5126, {\n clamped: false\n });\n const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;\n return this.getElementCount() - sourceElementOffset;\n }\n\n _inferType(data) {\n if (!this.accessor.type) {\n this.setAccessor(new Accessor(this.accessor, {\n type: getGLTypeFromTypedArray(data)\n }));\n }\n }\n\n _createHandle() {\n return this.gl.createBuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteBuffer(this.handle);\n\n this._trackDeallocatedMemory();\n }\n\n _getParameter(pname) {\n this.gl.bindBuffer(this.target, this.handle);\n const value = this.gl.getBufferParameter(this.target, pname);\n this.gl.bindBuffer(this.target, null);\n return value;\n }\n\n get type() {\n log.deprecated('Buffer.type', 'Buffer.accessor.type')();\n return this.accessor.type;\n }\n\n get bytes() {\n log.deprecated('Buffer.bytes', 'Buffer.byteLength')();\n return this.byteLength;\n }\n\n setByteLength(byteLength) {\n log.deprecated('setByteLength', 'reallocate')();\n return this.reallocate(byteLength);\n }\n\n updateAccessor(opts) {\n log.deprecated('updateAccessor(...)', 'setAccessor(new Accessor(buffer.accessor, ...)')();\n this.accessor = new Accessor(this.accessor, opts);\n return this;\n }\n\n}\n//# sourceMappingURL=buffer.js.map","import GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport Accessor from './accessor';\nimport {getGLTypeFromTypedArray, getTypedArrayFromGLType} from '../webgl-utils/typed-array-utils';\nimport {assertWebGL2Context, log} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\nimport {checkProps} from '../utils/check-props';\n\nconst DEBUG_DATA_LENGTH = 10;\n\n// Shared prop checks for constructor and setProps\nconst DEPRECATED_PROPS = {\n offset: 'accessor.offset',\n stride: 'accessor.stride',\n type: 'accessor.type',\n size: 'accessor.size',\n divisor: 'accessor.divisor',\n normalized: 'accessor.normalized',\n integer: 'accessor.integer',\n instanced: 'accessor.divisor',\n isInstanced: 'accessor.divisor'\n};\n\n// Prop checks for constructor\nconst PROP_CHECKS_INITIALIZE = {\n removedProps: {},\n replacedProps: {\n bytes: 'byteLength'\n },\n // new Buffer() with individual accessor props is still used in apps, emit warnings\n deprecatedProps: DEPRECATED_PROPS\n};\n\n// Prop checks for setProps\nconst PROP_CHECKS_SET_PROPS = {\n // Buffer.setProps() with individual accessor props is rare => emit errors\n removedProps: DEPRECATED_PROPS\n};\n\nexport default class Buffer extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Buffer';\n }\n constructor(gl, props = {}) {\n super(gl, props);\n\n this.stubRemovedMethods('Buffer', 'v6.0', ['layout', 'setLayout', 'getIndexedParameter']);\n // this.stubRemovedMethods('Buffer', 'v7.0', ['updateAccessor']);\n\n // In WebGL1, need to make sure we use GL.ELEMENT_ARRAY_BUFFER when initializing element buffers\n // otherwise buffer type will lock to generic (non-element) buffer\n // In WebGL2, we can use GL.COPY_READ_BUFFER which avoids locking the type here\n this.target = props.target || (this.gl.webgl2 ? GL.COPY_READ_BUFFER : GL.ARRAY_BUFFER);\n\n this.initialize(props);\n\n Object.seal(this);\n }\n\n // returns number of elements in the buffer (assuming that the full buffer is used)\n getElementCount(accessor = this.accessor) {\n return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));\n }\n\n // returns number of vertices in the buffer (assuming that the full buffer is used)\n getVertexCount(accessor = this.accessor) {\n return Math.round(this.byteLength / Accessor.getBytesPerVertex(accessor));\n }\n\n // Creates and initializes the buffer object's data store.\n // Signature: `new Buffer(gl, {data: new Float32Array(...)})`\n // Signature: `new Buffer(gl, new Float32Array(...))`\n // Signature: `new Buffer(gl, 100)`\n initialize(props = {}) {\n // Signature `new Buffer(gl, new Float32Array(...)`\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n // Signature: `new Buffer(gl, 100)`\n if (Number.isFinite(props)) {\n props = {byteLength: props};\n }\n\n props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);\n\n // Initialize member fields\n this.usage = props.usage || GL.STATIC_DRAW;\n this.debugData = null;\n\n // Deprecated: Merge main props and accessor\n this.setAccessor(Object.assign({}, props, props.accessor));\n\n // Set data: (re)initializes the buffer\n if (props.data) {\n this._setData(props.data, props.offset, props.byteLength);\n } else {\n this._setByteLength(props.byteLength || 0);\n }\n\n return this;\n }\n\n setProps(props) {\n props = checkProps('Buffer', props, PROP_CHECKS_SET_PROPS);\n\n if ('accessor' in props) {\n this.setAccessor(props.accessor);\n }\n\n return this;\n }\n\n // Optionally stores an accessor with the buffer, makes it easier to use it as an attribute later\n // {type, size = 1, offset = 0, stride = 0, normalized = false, integer = false, divisor = 0}\n setAccessor(accessor) {\n // NOTE: From luma.gl v7.0, Accessors have an optional `buffer `field\n // (mainly to support \"interleaving\")\n // To avoid confusion, ensure `buffer.accessor` does not have a `buffer.accessor.buffer` field:\n accessor = Object.assign({}, accessor);\n delete accessor.buffer;\n\n // This new statement ensures that an \"accessor object\" is re-packaged as an Accessor instance\n this.accessor = new Accessor(accessor);\n return this;\n }\n\n // Allocate a bigger GPU buffer (if the current buffer is not big enough).\n // If a reallocation is triggered it clears the buffer\n // Returns:\n // `true`: buffer was reallocated, data was cleared\n // `false`: buffer was big enough, data is intact\n reallocate(byteLength) {\n if (byteLength > this.byteLength) {\n this._setByteLength(byteLength);\n return true;\n }\n this.bytesUsed = byteLength;\n return false;\n }\n\n // Update with new data. Reinitializes the buffer\n setData(props) {\n return this.initialize(props);\n }\n\n // Updates a subset of a buffer object's data store.\n // Data (Typed Array or ArrayBuffer), length is inferred unless provided\n // Offset into buffer\n // WebGL2 only: Offset into srcData\n // WebGL2 only: Number of bytes to be copied\n subData(props) {\n // Signature: buffer.subData(new Float32Array([...]))\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n const {data, offset = 0, srcOffset = 0} = props;\n const byteLength = props.byteLength || props.length;\n\n assert(data);\n\n // Create the buffer - binding it here for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n const target = this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n this.gl.bindBuffer(target, this.handle);\n // WebGL2: subData supports additional srcOffset and length parameters\n if (srcOffset !== 0 || byteLength !== undefined) {\n assertWebGL2Context(this.gl);\n this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n } else {\n this.gl.bufferSubData(target, offset, data);\n }\n this.gl.bindBuffer(target, null);\n\n // TODO - update local `data` if offsets are right\n this.debugData = null;\n\n this._inferType(data);\n\n return this;\n }\n\n // WEBGL2 ONLY: Copies part of the data of another buffer into this buffer\n copyData({sourceBuffer, readOffset = 0, writeOffset = 0, size}) {\n const {gl} = this;\n assertWebGL2Context(gl);\n\n // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type\n gl.bindBuffer(GL.COPY_READ_BUFFER, sourceBuffer.handle);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, this.handle);\n gl.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, readOffset, writeOffset, size);\n gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n this.debugData = null;\n\n return this;\n }\n\n // WEBGL2 ONLY: Reads data from buffer into an ArrayBufferView or SharedArrayBuffer.\n getData({dstData = null, srcByteOffset = 0, dstOffset = 0, length = 0} = {}) {\n assertWebGL2Context(this.gl);\n\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceAvailableElementCount = this._getAvailableElementCount(srcByteOffset);\n\n const dstElementOffset = dstOffset;\n\n let dstAvailableElementCount;\n let dstElementCount;\n if (dstData) {\n dstElementCount = dstData.length;\n dstAvailableElementCount = dstElementCount - dstElementOffset;\n } else {\n // Allocate ArrayBufferView with enough size to copy all eligible data.\n dstAvailableElementCount = Math.min(\n sourceAvailableElementCount,\n length || sourceAvailableElementCount\n );\n dstElementCount = dstElementOffset + dstAvailableElementCount;\n }\n\n const copyElementCount = Math.min(sourceAvailableElementCount, dstAvailableElementCount);\n length = length || copyElementCount;\n assert(length <= copyElementCount);\n dstData = dstData || new ArrayType(dstElementCount);\n\n // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);\n this.gl.getBufferSubData(GL.COPY_READ_BUFFER, srcByteOffset, dstData, dstOffset, length);\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n return dstData;\n }\n\n /**\n * Binds a buffer to a given binding point (target).\n * GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER take an index, and optionally a range.\n * - GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER need an index to affect state\n * - GL.UNIFORM_BUFFER: `offset` must be aligned to GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT.\n * - GL.UNIFORM_BUFFER: `size` must be a minimum of GL.UNIFORM_BLOCK_SIZE_DATA.\n */\n bind({\n target = this.target, // target for the bind operation\n index = this.accessor && this.accessor.index, // index = index of target (indexed bind point)\n offset = 0,\n size\n } = {}) {\n // NOTE: While GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER could\n // be used as direct binding points, they will not affect transform feedback or\n // uniform buffer state. Instead indexed bindings need to be made.\n if (target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER) {\n if (size !== undefined) {\n this.gl.bindBufferRange(target, index, this.handle, offset, size);\n } else {\n assert(offset === 0); // Make sure offset wasn't supplied\n this.gl.bindBufferBase(target, index, this.handle);\n }\n } else {\n this.gl.bindBuffer(target, this.handle);\n }\n\n return this;\n }\n\n unbind({target = this.target, index = this.accessor && this.accessor.index} = {}) {\n const isIndexedBuffer = target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER;\n if (isIndexedBuffer) {\n this.gl.bindBufferBase(target, index, null);\n } else {\n this.gl.bindBuffer(target, null);\n }\n return this;\n }\n\n // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)\n\n // Returns a short initial data array\n getDebugData() {\n if (!this.debugData) {\n this.debugData = this.getData({length: Math.min(DEBUG_DATA_LENGTH, this.byteLength)});\n return {data: this.debugData, changed: true};\n }\n return {data: this.debugData, changed: false};\n }\n\n invalidateDebugData() {\n this.debugData = null;\n }\n\n // PRIVATE METHODS\n\n // Allocate a new buffer and initialize to contents of typed array\n _setData(data, offset = 0, byteLength = data.byteLength + offset) {\n assert(ArrayBuffer.isView(data));\n\n this._trackDeallocatedMemory();\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, byteLength, this.usage);\n this.gl.bufferSubData(target, offset, data);\n this.gl.bindBuffer(target, null);\n\n this.debugData = data.slice(0, DEBUG_DATA_LENGTH);\n this.bytesUsed = byteLength;\n\n this._trackAllocatedMemory(byteLength);\n\n // infer GL type from supplied typed array\n const type = getGLTypeFromTypedArray(data);\n assert(type);\n this.setAccessor(new Accessor(this.accessor, {type}));\n return this;\n }\n\n // Allocate a GPU buffer of specified size.\n _setByteLength(byteLength, usage = this.usage) {\n assert(byteLength >= 0);\n\n this._trackDeallocatedMemory();\n\n // Workaround needed for Safari (#291):\n // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.\n let data = byteLength;\n if (byteLength === 0) {\n data = new Float32Array(0);\n }\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, usage);\n this.gl.bindBuffer(target, null);\n\n this.usage = usage;\n this.debugData = null;\n this.bytesUsed = byteLength;\n\n this._trackAllocatedMemory(byteLength);\n\n return this;\n }\n\n // Binding a buffer for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n _getTarget() {\n return this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n }\n\n _getAvailableElementCount(srcByteOffset) {\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;\n return this.getElementCount() - sourceElementOffset;\n }\n\n // Automatically infers type from typed array passed to setData\n // Note: No longer that useful, since type is now autodeduced from the compiled shaders\n _inferType(data) {\n if (!this.accessor.type) {\n this.setAccessor(new Accessor(this.accessor, {type: getGLTypeFromTypedArray(data)}));\n }\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createBuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteBuffer(this.handle);\n this._trackDeallocatedMemory();\n }\n\n _getParameter(pname) {\n this.gl.bindBuffer(this.target, this.handle);\n const value = this.gl.getBufferParameter(this.target, pname);\n this.gl.bindBuffer(this.target, null);\n return value;\n }\n\n // DEPRECATIONS - v7.0\n get type() {\n log.deprecated('Buffer.type', 'Buffer.accessor.type')();\n return this.accessor.type;\n }\n\n get bytes() {\n log.deprecated('Buffer.bytes', 'Buffer.byteLength')();\n return this.byteLength;\n }\n\n // DEPRECATIONS - v6.0\n // Deprecated in v6.x, but not warnings not properly implemented\n setByteLength(byteLength) {\n log.deprecated('setByteLength', 'reallocate')();\n return this.reallocate(byteLength);\n }\n\n // Deprecated in v6.x, but not warnings not properly implemented\n updateAccessor(opts) {\n log.deprecated('updateAccessor(...)', 'setAccessor(new Accessor(buffer.accessor, ...)')();\n this.accessor = new Accessor(this.accessor, opts);\n return this;\n }\n}\n","import { isWebGL2, assertWebGLContext } from '@luma.gl/gltools';\nimport { lumaStats } from '../init';\nimport { getKey, getKeyValue } from '../webgl-utils/constants-to-keys';\nimport { assert } from '../utils/assert';\nimport { uid } from '../utils/utils';\nimport { stubRemovedMethods } from '../utils/stub-methods';\nconst ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';\nexport default class Resource {\n get [Symbol.toStringTag]() {\n return 'Resource';\n }\n\n constructor(gl) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n assertWebGLContext(gl);\n const {\n id,\n userData = {}\n } = opts;\n this.gl = gl;\n this.gl2 = gl;\n this.id = id || uid(this[Symbol.toStringTag]);\n this.userData = userData;\n this._bound = false;\n this._handle = opts.handle;\n\n if (this._handle === undefined) {\n this._handle = this._createHandle();\n }\n\n this.byteLength = 0;\n\n this._addStats();\n }\n\n toString() {\n return \"\".concat(this[Symbol.toStringTag] || this.constructor.name, \"(\").concat(this.id, \")\");\n }\n\n get handle() {\n return this._handle;\n }\n\n delete() {\n let {\n deleteChildren = false\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n const children = this._handle && this._deleteHandle(this._handle);\n\n if (this._handle) {\n this._removeStats();\n }\n\n this._handle = null;\n\n if (children && deleteChildren) {\n children.filter(Boolean).forEach(child => child.delete());\n }\n\n return this;\n }\n\n bind() {\n let funcOrHandle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.handle;\n\n if (typeof funcOrHandle !== 'function') {\n this._bindHandle(funcOrHandle);\n\n return this;\n }\n\n let value;\n\n if (!this._bound) {\n this._bindHandle(this.handle);\n\n this._bound = true;\n value = funcOrHandle();\n this._bound = false;\n\n this._bindHandle(null);\n } else {\n value = funcOrHandle();\n }\n\n return value;\n }\n\n unbind() {\n this.bind(null);\n }\n\n getParameter(pname) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n const parameters = this.constructor.PARAMETERS || {};\n const parameter = parameters[pname];\n\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n const parameterAvailable = (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n const webgl1Default = parameter.webgl1;\n const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n return defaultValue;\n }\n }\n\n return this._getParameter(pname, opts);\n }\n\n getParameters() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n parameters,\n keys\n } = options;\n const PARAMETERS = this.constructor.PARAMETERS || {};\n const isWebgl2 = isWebGL2(this.gl);\n const values = {};\n const parameterKeys = parameters || Object.keys(PARAMETERS);\n\n for (const pname of parameterKeys) {\n const parameter = PARAMETERS[pname];\n const parameterAvailable = parameter && (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (parameterAvailable) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getParameter(pname, options);\n\n if (keys && parameter.type === 'GLenum') {\n values[key] = getKey(this.gl, values[key]);\n }\n }\n }\n\n return values;\n }\n\n setParameter(pname, value) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n const parameters = this.constructor.PARAMETERS || {};\n const parameter = parameters[pname];\n\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n const parameterAvailable = (!('webgl2' in parameter) || isWebgl2) && (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n throw new Error('Parameter not available on this platform');\n }\n\n if (parameter.type === 'GLenum') {\n value = getKeyValue(value);\n }\n }\n\n this._setParameter(pname, value);\n\n return this;\n }\n\n setParameters(parameters) {\n for (const pname in parameters) {\n this.setParameter(pname, parameters[pname]);\n }\n\n return this;\n }\n\n stubRemovedMethods(className, version, methodNames) {\n return stubRemovedMethods(this, className, version, methodNames);\n }\n\n initialize(opts) {}\n\n _createHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _deleteHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _bindHandle(handle) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getOptsFromHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getParameter(pname, opts) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _setParameter(pname, value) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _context() {\n this.gl.luma = this.gl.luma || {};\n return this.gl.luma;\n }\n\n _addStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n stats.get('Resources Created').incrementCount();\n stats.get(\"\".concat(name, \"s Created\")).incrementCount();\n stats.get(\"\".concat(name, \"s Active\")).incrementCount();\n }\n\n _removeStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n stats.get(\"\".concat(name, \"s Active\")).decrementCount();\n }\n\n _trackAllocatedMemory(bytes) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this[Symbol.toStringTag];\n\n this._trackAllocatedMemoryForContext(bytes, name);\n\n this._trackAllocatedMemoryForContext(bytes, name, this.gl.canvas && this.gl.canvas.id);\n\n this.byteLength = bytes;\n }\n\n _trackAllocatedMemoryForContext(bytes) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this[Symbol.toStringTag];\n let id = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n const stats = lumaStats.get(\"Memory Usage\".concat(id));\n stats.get('GPU Memory').addCount(bytes);\n stats.get(\"\".concat(name, \" Memory\")).addCount(bytes);\n }\n\n _trackDeallocatedMemory() {\n let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this[Symbol.toStringTag];\n\n this._trackDeallocatedMemoryForContext(name);\n\n this._trackDeallocatedMemoryForContext(name, this.gl.canvas && this.gl.canvas.id);\n\n this.byteLength = 0;\n }\n\n _trackDeallocatedMemoryForContext() {\n let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this[Symbol.toStringTag];\n let id = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n const stats = lumaStats.get(\"Memory Usage\".concat(id));\n stats.get('GPU Memory').subtractCount(this.byteLength);\n stats.get(\"\".concat(name, \" Memory\")).subtractCount(this.byteLength);\n }\n\n}\n//# sourceMappingURL=resource.js.map","import {isWebGL2, assertWebGLContext} from '@luma.gl/gltools';\nimport {lumaStats} from '../init';\nimport {getKey, getKeyValue} from '../webgl-utils/constants-to-keys';\nimport {assert} from '../utils/assert';\nimport {uid} from '../utils/utils';\nimport {stubRemovedMethods} from '../utils/stub-methods';\n\nconst ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';\n\n// TODO - Handle context loss\n// function glGetContextLossCount(gl) {\n// return (gl.luma && gl.luma.glCount) || 0;\n// }\n\nexport default class Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Resource';\n }\n constructor(gl, opts = {}) {\n assertWebGLContext(gl);\n\n const {id, userData = {}} = opts;\n this.gl = gl;\n // @ts-ignore\n this.gl2 = gl;\n // this.ext = polyfillContext(gl);\n this.id = id || uid(this[Symbol.toStringTag]);\n this.userData = userData;\n this._bound = false;\n\n // Set the handle\n // If handle was provided, use it, otherwise create a new handle\n\n // TODO - Stores the handle with context loss information\n // this.glCount = glGetContextLossCount(this.gl);\n\n // Default VertexArray needs to be created with null handle, so compare against undefined\n this._handle = opts.handle;\n if (this._handle === undefined) {\n this._handle = this._createHandle();\n }\n\n // Only meaningful for resources that allocate GPU memory\n this.byteLength = 0;\n\n this._addStats();\n }\n\n toString() {\n return `${this[Symbol.toStringTag] || this.constructor.name}(${this.id})`;\n }\n\n get handle() {\n // TODO - Add context loss handling\n // Will regenerate and reinitialize the handle if necessary\n // const glCount = glGetContextLossCount(this.gl);\n // if (this.glCount !== glCount) {\n // this._handle = this._createHandle(this.opts);\n // this._glCount = glCount;\n // // Reinitialize object\n // this.initialize(this.opts);\n // }\n return this._handle;\n }\n\n delete({deleteChildren = false} = {}) {\n // Delete this object, and get refs to any children\n // @ts-ignore\n const children = this._handle && this._deleteHandle(this._handle);\n if (this._handle) {\n this._removeStats();\n }\n this._handle = null;\n\n // Optionally, recursively delete the children\n // @ts-ignore\n if (children && deleteChildren) {\n // @ts-ignore\n children.filter(Boolean).forEach(child => child.delete());\n }\n\n return this;\n }\n\n bind(funcOrHandle = this.handle) {\n if (typeof funcOrHandle !== 'function') {\n this._bindHandle(funcOrHandle);\n return this;\n }\n\n let value;\n\n if (!this._bound) {\n this._bindHandle(this.handle);\n this._bound = true;\n\n value = funcOrHandle();\n\n this._bound = false;\n this._bindHandle(null);\n } else {\n value = funcOrHandle();\n }\n\n return value;\n }\n\n unbind() {\n this.bind(null);\n }\n\n /**\n * Query a Resource parameter\n *\n * @param {GLenum} pname\n * @return {GLint|GLfloat|GLenum} param\n */\n getParameter(pname, opts = {}) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n // Use parameter definitions to handle unsupported parameters\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if we can query for this parameter\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n const webgl1Default = parameter.webgl1;\n const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n return defaultValue;\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // Attempt to query for it and let WebGL report errors\n return this._getParameter(pname, opts);\n }\n\n // Many resources support a getParameter call -\n // getParameters will get all parameters - slow but useful for debugging\n // eslint-disable-next-line complexity\n getParameters(options = {}) {\n const {parameters, keys} = options;\n\n // Get parameter definitions for this Resource\n // @ts-ignore\n const PARAMETERS = this.constructor.PARAMETERS || {};\n\n const isWebgl2 = isWebGL2(this.gl);\n\n const values = {};\n\n // Query all parameters if no list provided\n const parameterKeys = parameters || Object.keys(PARAMETERS);\n\n // WEBGL limits\n for (const pname of parameterKeys) {\n const parameter = PARAMETERS[pname];\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n parameter &&\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (parameterAvailable) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getParameter(pname, options);\n if (keys && parameter.type === 'GLenum') {\n values[key] = getKey(this.gl, values[key]);\n }\n }\n }\n\n return values;\n }\n\n /**\n * Update a Resource setting\n *\n * @todo - cache parameter to avoid issuing WebGL calls?\n *\n * @param {string} pname - parameter (GL constant, value or key)\n * @param {GLint|GLfloat|GLenum} value\n * @return {Resource} returns self to enable chaining\n */\n setParameter(pname, value) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n throw new Error('Parameter not available on this platform');\n }\n\n // Handle string keys\n if (parameter.type === 'GLenum') {\n value = getKeyValue(value);\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // attempt to set it and let WebGL report errors\n this._setParameter(pname, value);\n return this;\n }\n\n /*\n * Batch update resource parameters\n * Assumes the subclass supports a setParameter call\n */\n setParameters(parameters) {\n for (const pname in parameters) {\n this.setParameter(pname, parameters[pname]);\n }\n return this;\n }\n\n // Install stubs for removed methods\n stubRemovedMethods(className, version, methodNames) {\n return stubRemovedMethods(this, className, version, methodNames);\n }\n\n // PUBLIC VIRTUAL METHODS\n initialize(opts) {}\n\n // PROTECTED METHODS - These must be overridden by subclass\n _createHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _deleteHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _bindHandle(handle) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getOptsFromHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n /** @returns {number} */\n _getParameter(pname, opts) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _setParameter(pname, value) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n // PRIVATE METHODS\n\n _context() {\n this.gl.luma = this.gl.luma || {};\n return this.gl.luma;\n }\n\n _addStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n\n stats.get('Resources Created').incrementCount();\n stats.get(`${name}s Created`).incrementCount();\n stats.get(`${name}s Active`).incrementCount();\n }\n\n _removeStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n\n stats.get(`${name}s Active`).decrementCount();\n }\n\n /**\n * Track common allocated memory and memory based on particular gl context.\n * @param {number} bytes\n * @param {string} name\n */\n _trackAllocatedMemory(bytes, name = this[Symbol.toStringTag]) {\n this._trackAllocatedMemoryForContext(bytes, name);\n this._trackAllocatedMemoryForContext(bytes, name, this.gl.canvas && this.gl.canvas.id);\n this.byteLength = bytes;\n }\n\n _trackAllocatedMemoryForContext(bytes, name = this[Symbol.toStringTag], id = '') {\n const stats = lumaStats.get(`Memory Usage${id}`);\n stats.get('GPU Memory').addCount(bytes);\n stats.get(`${name} Memory`).addCount(bytes);\n }\n\n /**\n * Deallocate memory for common statistic and for each gl context as well.\n * @param {string} name\n */\n _trackDeallocatedMemory(name = this[Symbol.toStringTag]) {\n this._trackDeallocatedMemoryForContext(name);\n this._trackDeallocatedMemoryForContext(name, this.gl.canvas && this.gl.canvas.id);\n this.byteLength = 0;\n }\n\n _trackDeallocatedMemoryForContext(name = this[Symbol.toStringTag], id = '') {\n const stats = lumaStats.get(`Memory Usage${id}`);\n\n stats.get('GPU Memory').subtractCount(this.byteLength);\n stats.get(`${name} Memory`).subtractCount(this.byteLength);\n }\n}\n","// Utils\nexport {log} from './utils/log';\nexport {\n isWebGL,\n isWebGL2,\n getWebGL2Context,\n assertWebGLContext,\n assertWebGL2Context\n} from './utils/webgl-checks';\n\n// Polyfills to support a subset of WebGL2 APIs on WebGL1 contexts\nexport {polyfillContext} from './polyfill/polyfill-context';\n\n// unified parameter APIs\nexport {\n getParameters,\n setParameters,\n resetParameters,\n withParameters\n} from './state-tracker/unified-parameter-api';\n\n// state tracking\nexport {\n trackContextState,\n pushContextState,\n popContextState\n} from './state-tracker/track-context-state';\n\nexport {\n createGLContext,\n resizeGLContext,\n instrumentGLContext,\n getContextDebugInfo\n} from './context/context';\n\nexport {cssToDeviceRatio, cssToDevicePixels} from './utils/device-pixels';\n","import { Log } from '@probe.gl/log';\nexport const log = new Log({\n id: 'luma.gl'\n});\n//# sourceMappingURL=log.js.map","import {Log} from '@probe.gl/log';\n\nexport const log = new Log({id: 'luma.gl'});\n","import { assert } from './assert';\nconst ERR_CONTEXT = 'Invalid WebGLRenderingContext';\nexport const ERR_WEBGL = ERR_CONTEXT;\nexport const ERR_WEBGL2 = 'Requires WebGL2';\nexport function isWebGL(gl) {\n if (typeof WebGLRenderingContext !== 'undefined' && gl instanceof WebGLRenderingContext) {\n return true;\n }\n\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n return true;\n }\n\n return Boolean(gl && Number.isFinite(gl._version));\n}\nexport function isWebGL2(gl) {\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n return true;\n }\n\n return Boolean(gl && gl._version === 2);\n}\nexport function getWebGL2Context(gl) {\n return isWebGL2(gl) ? gl : null;\n}\nexport function assertWebGLContext(gl) {\n assert(isWebGL(gl), ERR_CONTEXT);\n return gl;\n}\nexport function assertWebGL2Context(gl) {\n assert(isWebGL2(gl), ERR_WEBGL2);\n return gl;\n}\n//# sourceMappingURL=webgl-checks.js.map","import {assert} from './assert';\n\nconst ERR_CONTEXT = 'Invalid WebGLRenderingContext';\nexport const ERR_WEBGL = ERR_CONTEXT;\nexport const ERR_WEBGL2 = 'Requires WebGL2';\n\nexport function isWebGL(gl) {\n if (typeof WebGLRenderingContext !== 'undefined' && gl instanceof WebGLRenderingContext) {\n return true;\n }\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n return true;\n }\n // Look for debug contexts, headless gl etc\n return Boolean(gl && Number.isFinite(gl._version));\n}\n\nexport function isWebGL2(gl) {\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n return true;\n }\n // Look for debug contexts, headless gl etc\n return Boolean(gl && gl._version === 2);\n}\n\nexport function getWebGL2Context(gl) {\n return isWebGL2(gl) ? gl : null;\n}\n\nexport function assertWebGLContext(gl) {\n assert(isWebGL(gl), ERR_CONTEXT);\n return gl;\n}\n\nexport function assertWebGL2Context(gl) {\n assert(isWebGL2(gl), ERR_WEBGL2);\n return gl;\n}\n","export function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'luma.gl: assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map","// Avoid bundling assert polyfill module\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'luma.gl: assertion failed.');\n }\n}\n","import { polyfillVertexArrayObject } from './polyfill-vertex-array-object';\nimport { assert } from '../utils/assert';\nimport { WEBGL2_CONTEXT_POLYFILLS, WEBGL2_CONTEXT_OVERRIDES } from './polyfill-table';\nexport function polyfillContext(gl) {\n gl.luma = gl.luma || {};\n const {\n luma\n } = gl;\n\n if (!luma.polyfilled) {\n polyfillVertexArrayObject(gl);\n initializeExtensions(gl);\n installPolyfills(gl, WEBGL2_CONTEXT_POLYFILLS);\n installOverrides(gl, {\n target: luma,\n target2: gl\n });\n luma.polyfilled = true;\n }\n\n return gl;\n}\nglobalThis.polyfillContext = polyfillContext;\n\nfunction initializeExtensions(gl) {\n gl.luma.extensions = {};\n const EXTENSIONS = gl.getSupportedExtensions() || [];\n\n for (const extension of EXTENSIONS) {\n gl.luma[extension] = gl.getExtension(extension);\n }\n}\n\nfunction installOverrides(gl, _ref) {\n let {\n target,\n target2\n } = _ref;\n Object.keys(WEBGL2_CONTEXT_OVERRIDES).forEach(key => {\n if (typeof WEBGL2_CONTEXT_OVERRIDES[key] === 'function') {\n const originalFunc = gl[key] ? gl[key].bind(gl) : () => {};\n const polyfill = WEBGL2_CONTEXT_OVERRIDES[key].bind(null, gl, originalFunc);\n target[key] = polyfill;\n target2[key] = polyfill;\n }\n });\n}\n\nfunction installPolyfills(gl, polyfills) {\n for (const extension of Object.getOwnPropertyNames(polyfills)) {\n if (extension !== 'overrides') {\n polyfillExtension(gl, {\n extension,\n target: gl.luma,\n target2: gl\n });\n }\n }\n}\n\nfunction polyfillExtension(gl, _ref2) {\n let {\n extension,\n target,\n target2\n } = _ref2;\n const defaults = WEBGL2_CONTEXT_POLYFILLS[extension];\n assert(defaults);\n const {\n meta = {}\n } = defaults;\n const {\n suffix = ''\n } = meta;\n const ext = gl.getExtension(extension);\n\n for (const key of Object.keys(defaults)) {\n const extKey = \"\".concat(key).concat(suffix);\n let polyfill = null;\n\n if (key === 'meta') {} else if (typeof gl[key] === 'function') {} else if (ext && typeof ext[extKey] === 'function') {\n polyfill = function () {\n return ext[extKey](...arguments);\n };\n } else if (typeof defaults[key] === 'function') {\n polyfill = defaults[key].bind(target);\n }\n\n if (polyfill) {\n target[key] = polyfill;\n target2[key] = polyfill;\n }\n }\n}\n//# sourceMappingURL=polyfill-context.js.map","// WebGL1/WebGL2 extension polyfill support\n//\n// Provides a function that creates polyfills for WebGL2 functions based\n// on available extensions and installs them on a supplied target (could be\n// the WebGLContext or its prototype, or a separate object).\n//\n// This is intended to be a stand-alone file with minimal dependencies,\n// easy to reuse or repurpose in other projects.\n\n/** @typedef {import('./polyfill-context')} types */\n\nimport {polyfillVertexArrayObject} from './polyfill-vertex-array-object';\nimport {assert} from '../utils/assert';\n\nimport {WEBGL2_CONTEXT_POLYFILLS, WEBGL2_CONTEXT_OVERRIDES} from './polyfill-table';\n\n/** @type {types['polyfillContext']} */\nexport function polyfillContext(gl) {\n // @ts-ignore\n gl.luma = gl.luma || {};\n // @ts-ignore\n const {luma} = gl;\n\n if (!luma.polyfilled) {\n polyfillVertexArrayObject(gl);\n initializeExtensions(gl);\n installPolyfills(gl, WEBGL2_CONTEXT_POLYFILLS);\n installOverrides(gl, {target: luma, target2: gl});\n luma.polyfilled = true;\n }\n\n // TODO - only supporting a few members\n /** @type {WebGL2RenderingContext} */\n // @ts-ignore\n return gl;\n}\n\n// TODO - is this still required?\n// @ts-ignore\nglobalThis.polyfillContext = polyfillContext;\n\nfunction initializeExtensions(gl) {\n gl.luma.extensions = {};\n // `getSupportedExtensions` can return null when context is lost.\n const EXTENSIONS = gl.getSupportedExtensions() || [];\n for (const extension of EXTENSIONS) {\n gl.luma[extension] = gl.getExtension(extension);\n }\n}\n\n// Install simple overrides (mostly get* functions)\nfunction installOverrides(gl, {target, target2}) {\n Object.keys(WEBGL2_CONTEXT_OVERRIDES).forEach(key => {\n if (typeof WEBGL2_CONTEXT_OVERRIDES[key] === 'function') {\n // install an override, if no implementation was detected\n const originalFunc = gl[key] ? gl[key].bind(gl) : () => {};\n const polyfill = WEBGL2_CONTEXT_OVERRIDES[key].bind(null, gl, originalFunc);\n target[key] = polyfill;\n target2[key] = polyfill;\n }\n });\n}\n\nfunction installPolyfills(gl, polyfills) {\n for (const extension of Object.getOwnPropertyNames(polyfills)) {\n if (extension !== 'overrides') {\n polyfillExtension(gl, {extension, target: gl.luma, target2: gl});\n }\n }\n}\n\n// Polyfills a single WebGL extension into the `target` object\nfunction polyfillExtension(gl, {extension, target, target2}) {\n const defaults = WEBGL2_CONTEXT_POLYFILLS[extension];\n assert(defaults);\n\n const {meta = {}} = defaults;\n const {suffix = ''} = meta;\n\n const ext = gl.getExtension(extension);\n\n for (const key of Object.keys(defaults)) {\n const extKey = `${key}${suffix}`;\n\n let polyfill = null;\n if (key === 'meta') {\n // ignore\n } else if (typeof gl[key] === 'function') {\n // WebGL2 implementation is already\n } else if (ext && typeof ext[extKey] === 'function') {\n // pick extension implemenentation,if available\n polyfill = (...args) => ext[extKey](...args);\n } else if (typeof defaults[key] === 'function') {\n // pick the mock implementation, if no implementation was detected\n polyfill = defaults[key].bind(target);\n }\n\n if (polyfill) {\n target[key] = polyfill;\n target2[key] = polyfill;\n }\n }\n}\n","const glErrorShadow = {};\n\nfunction error(msg) {\n if (globalThis.console && globalThis.console.error) {\n globalThis.console.error(msg);\n }\n}\n\nfunction log(msg) {\n if (globalThis.console && globalThis.console.log) {\n globalThis.console.log(msg);\n }\n}\n\nfunction synthesizeGLError(err, opt_msg) {\n glErrorShadow[err] = true;\n\n if (opt_msg !== undefined) {\n error(opt_msg);\n }\n}\n\nfunction wrapGLError(gl) {\n const f = gl.getError;\n\n gl.getError = function getError() {\n let err;\n\n do {\n err = f.apply(gl);\n\n if (err !== 0) {\n glErrorShadow[err] = true;\n }\n } while (err !== 0);\n\n for (err in glErrorShadow) {\n if (glErrorShadow[err]) {\n delete glErrorShadow[err];\n return parseInt(err, 10);\n }\n }\n\n return 0;\n };\n}\n\nconst WebGLVertexArrayObjectOES = function WebGLVertexArrayObjectOES(ext) {\n const gl = ext.gl;\n this.ext = ext;\n this.isAlive = true;\n this.hasBeenBound = false;\n this.elementArrayBuffer = null;\n this.attribs = new Array(ext.maxVertexAttribs);\n\n for (let n = 0; n < this.attribs.length; n++) {\n const attrib = new WebGLVertexArrayObjectOES.VertexAttrib(gl);\n this.attribs[n] = attrib;\n }\n\n this.maxAttrib = 0;\n};\n\nWebGLVertexArrayObjectOES.VertexAttrib = function VertexAttrib(gl) {\n this.enabled = false;\n this.buffer = null;\n this.size = 4;\n this.type = 5126;\n this.normalized = false;\n this.stride = 16;\n this.offset = 0;\n this.cached = '';\n this.recache();\n};\n\nWebGLVertexArrayObjectOES.VertexAttrib.prototype.recache = function recache() {\n this.cached = [this.size, this.type, this.normalized, this.stride, this.offset].join(':');\n};\n\nconst OESVertexArrayObject = function OESVertexArrayObject(gl) {\n const self = this;\n this.gl = gl;\n wrapGLError(gl);\n const original = this.original = {\n getParameter: gl.getParameter,\n enableVertexAttribArray: gl.enableVertexAttribArray,\n disableVertexAttribArray: gl.disableVertexAttribArray,\n bindBuffer: gl.bindBuffer,\n getVertexAttrib: gl.getVertexAttrib,\n vertexAttribPointer: gl.vertexAttribPointer\n };\n\n gl.getParameter = function getParameter(pname) {\n if (pname === self.VERTEX_ARRAY_BINDING_OES) {\n if (self.currentVertexArrayObject === self.defaultVertexArrayObject) {\n return null;\n }\n\n return self.currentVertexArrayObject;\n }\n\n return original.getParameter.apply(this, arguments);\n };\n\n gl.enableVertexAttribArray = function enableVertexAttribArray(index) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, index);\n const attrib = vao.attribs[index];\n attrib.enabled = true;\n return original.enableVertexAttribArray.apply(this, arguments);\n };\n\n gl.disableVertexAttribArray = function disableVertexAttribArray(index) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, index);\n const attrib = vao.attribs[index];\n attrib.enabled = false;\n return original.disableVertexAttribArray.apply(this, arguments);\n };\n\n gl.bindBuffer = function bindBuffer(target, buffer) {\n switch (target) {\n case 34962:\n self.currentArrayBuffer = buffer;\n break;\n\n case 34963:\n self.currentVertexArrayObject.elementArrayBuffer = buffer;\n break;\n\n default:\n }\n\n return original.bindBuffer.apply(this, arguments);\n };\n\n gl.getVertexAttrib = function getVertexAttrib(index, pname) {\n const vao = self.currentVertexArrayObject;\n const attrib = vao.attribs[index];\n\n switch (pname) {\n case 34975:\n return attrib.buffer;\n\n case 34338:\n return attrib.enabled;\n\n case 34339:\n return attrib.size;\n\n case 34340:\n return attrib.stride;\n\n case 34341:\n return attrib.type;\n\n case 34922:\n return attrib.normalized;\n\n default:\n return original.getVertexAttrib.apply(this, arguments);\n }\n };\n\n gl.vertexAttribPointer = function vertexAttribPointer(indx, size, type, normalized, stride, offset) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, indx);\n const attrib = vao.attribs[indx];\n attrib.buffer = self.currentArrayBuffer;\n attrib.size = size;\n attrib.type = type;\n attrib.normalized = normalized;\n attrib.stride = stride;\n attrib.offset = offset;\n attrib.recache();\n return original.vertexAttribPointer.apply(this, arguments);\n };\n\n if (gl.instrumentExtension) {\n gl.instrumentExtension(this, 'OES_vertex_array_object');\n }\n\n if (gl.canvas) {\n gl.canvas.addEventListener('webglcontextrestored', () => {\n log('OESVertexArrayObject emulation library context restored');\n self.reset_();\n }, true);\n }\n\n this.reset_();\n};\n\nOESVertexArrayObject.prototype.VERTEX_ARRAY_BINDING_OES = 0x85b5;\n\nOESVertexArrayObject.prototype.reset_ = function reset_() {\n const contextWasLost = this.vertexArrayObjects !== undefined;\n\n if (contextWasLost) {\n for (let ii = 0; ii < this.vertexArrayObjects.length; ++ii) {\n this.vertexArrayObjects.isAlive = false;\n }\n }\n\n const gl = this.gl;\n this.maxVertexAttribs = gl.getParameter(34921);\n this.defaultVertexArrayObject = new WebGLVertexArrayObjectOES(this);\n this.currentVertexArrayObject = null;\n this.currentArrayBuffer = null;\n this.vertexArrayObjects = [this.defaultVertexArrayObject];\n this.bindVertexArrayOES(null);\n};\n\nOESVertexArrayObject.prototype.createVertexArrayOES = function createVertexArrayOES() {\n const arrayObject = new WebGLVertexArrayObjectOES(this);\n this.vertexArrayObjects.push(arrayObject);\n return arrayObject;\n};\n\nOESVertexArrayObject.prototype.deleteVertexArrayOES = function deleteVertexArrayOES(arrayObject) {\n arrayObject.isAlive = false;\n this.vertexArrayObjects.splice(this.vertexArrayObjects.indexOf(arrayObject), 1);\n\n if (this.currentVertexArrayObject === arrayObject) {\n this.bindVertexArrayOES(null);\n }\n};\n\nOESVertexArrayObject.prototype.isVertexArrayOES = function isVertexArrayOES(arrayObject) {\n if (arrayObject && arrayObject instanceof WebGLVertexArrayObjectOES) {\n if (arrayObject.hasBeenBound && arrayObject.ext === this) {\n return true;\n }\n }\n\n return false;\n};\n\nOESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(arrayObject) {\n const gl = this.gl;\n\n if (arrayObject && !arrayObject.isAlive) {\n synthesizeGLError(1282, 'bindVertexArrayOES: attempt to bind deleted arrayObject');\n return;\n }\n\n const original = this.original;\n const oldVAO = this.currentVertexArrayObject;\n this.currentVertexArrayObject = arrayObject || this.defaultVertexArrayObject;\n this.currentVertexArrayObject.hasBeenBound = true;\n const newVAO = this.currentVertexArrayObject;\n\n if (oldVAO === newVAO) {\n return;\n }\n\n if (!oldVAO || newVAO.elementArrayBuffer !== oldVAO.elementArrayBuffer) {\n original.bindBuffer.call(gl, 34963, newVAO.elementArrayBuffer);\n }\n\n let currentBinding = this.currentArrayBuffer;\n const maxAttrib = Math.max(oldVAO ? oldVAO.maxAttrib : 0, newVAO.maxAttrib);\n\n for (let n = 0; n <= maxAttrib; n++) {\n const attrib = newVAO.attribs[n];\n const oldAttrib = oldVAO ? oldVAO.attribs[n] : null;\n\n if (!oldVAO || attrib.enabled !== oldAttrib.enabled) {\n if (attrib.enabled) {\n original.enableVertexAttribArray.call(gl, n);\n } else {\n original.disableVertexAttribArray.call(gl, n);\n }\n }\n\n if (attrib.enabled) {\n let bufferChanged = false;\n\n if (!oldVAO || attrib.buffer !== oldAttrib.buffer) {\n if (currentBinding !== attrib.buffer) {\n original.bindBuffer.call(gl, 34962, attrib.buffer);\n currentBinding = attrib.buffer;\n }\n\n bufferChanged = true;\n }\n\n if (bufferChanged || attrib.cached !== oldAttrib.cached) {\n original.vertexAttribPointer.call(gl, n, attrib.size, attrib.type, attrib.normalized, attrib.stride, attrib.offset);\n }\n }\n }\n\n if (this.currentArrayBuffer !== currentBinding) {\n original.bindBuffer.call(gl, 34962, this.currentArrayBuffer);\n }\n};\n\nexport function polyfillVertexArrayObject(gl) {\n if (typeof gl.createVertexArray === 'function') {\n return;\n }\n\n const original_getSupportedExtensions = gl.getSupportedExtensions;\n\n gl.getSupportedExtensions = function getSupportedExtensions() {\n const list = original_getSupportedExtensions.call(this) || [];\n\n if (list.indexOf('OES_vertex_array_object') < 0) {\n list.push('OES_vertex_array_object');\n }\n\n return list;\n };\n\n const original_getExtension = gl.getExtension;\n\n gl.getExtension = function getExtension(name) {\n const ext = original_getExtension.call(this, name);\n\n if (ext) {\n return ext;\n }\n\n if (name !== 'OES_vertex_array_object') {\n return null;\n }\n\n if (!gl.__OESVertexArrayObject) {\n this.__OESVertexArrayObject = new OESVertexArrayObject(this);\n }\n\n return this.__OESVertexArrayObject;\n };\n}\n//# sourceMappingURL=polyfill-vertex-array-object.js.map","/*\n** Copyright (c) 2015 The Khronos Group Inc.\n**\n** Permission is hereby granted, free of charge, to any person obtaining a\n** copy of this software and/or associated documentation files (the\n** \"Materials\"), to deal in the Materials without restriction, including\n** without limitation the rights to use, copy, modify, merge, publish,\n** distribute, sublicense, and/or sell copies of the Materials, and to\n** permit persons to whom the Materials are furnished to do so, subject to\n** the following conditions:\n**\n** The above copyright notice and this permission notice shall be included\n** in all copies or substantial portions of the Materials.\n**\n** THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.\n*/\n\n// Modified to use ES6 and polyfill a provided context rather than\n// the global class.\n\n// @ts-nocheck external code\n\nconst glErrorShadow = {};\n\nfunction error(msg) {\n if (globalThis.console && globalThis.console.error) {\n globalThis.console.error(msg);\n }\n}\n\nfunction log(msg) {\n if (globalThis.console && globalThis.console.log) {\n globalThis.console.log(msg);\n }\n}\n\nfunction synthesizeGLError(err, opt_msg) {\n glErrorShadow[err] = true;\n if (opt_msg !== undefined) {\n error(opt_msg);\n }\n}\n\nfunction wrapGLError(gl) {\n const f = gl.getError;\n gl.getError = function getError() {\n let err;\n do {\n err = f.apply(gl);\n if (err !== gl.NO_ERROR) {\n glErrorShadow[err] = true;\n }\n } while (err !== gl.NO_ERROR);\n\n for (err in glErrorShadow) {\n if (glErrorShadow[err]) {\n delete glErrorShadow[err];\n return parseInt(err, 10);\n }\n }\n\n return gl.NO_ERROR;\n };\n}\n\nconst WebGLVertexArrayObjectOES = function WebGLVertexArrayObjectOES(ext) {\n const gl = ext.gl;\n\n this.ext = ext;\n this.isAlive = true;\n this.hasBeenBound = false;\n\n this.elementArrayBuffer = null;\n this.attribs = new Array(ext.maxVertexAttribs);\n for (let n = 0; n < this.attribs.length; n++) {\n const attrib = new WebGLVertexArrayObjectOES.VertexAttrib(gl);\n this.attribs[n] = attrib;\n }\n\n this.maxAttrib = 0;\n};\n\nWebGLVertexArrayObjectOES.VertexAttrib = function VertexAttrib(gl) {\n this.enabled = false;\n this.buffer = null;\n this.size = 4;\n this.type = gl.FLOAT;\n this.normalized = false;\n this.stride = 16;\n this.offset = 0;\n\n this.cached = '';\n this.recache();\n};\nWebGLVertexArrayObjectOES.VertexAttrib.prototype.recache = function recache() {\n this.cached = [this.size, this.type, this.normalized, this.stride, this.offset].join(':');\n};\n\nconst OESVertexArrayObject = function OESVertexArrayObject(gl) {\n const self = this;\n this.gl = gl;\n\n wrapGLError(gl);\n\n const original = (this.original = {\n getParameter: gl.getParameter,\n enableVertexAttribArray: gl.enableVertexAttribArray,\n disableVertexAttribArray: gl.disableVertexAttribArray,\n bindBuffer: gl.bindBuffer,\n getVertexAttrib: gl.getVertexAttrib,\n vertexAttribPointer: gl.vertexAttribPointer\n });\n\n gl.getParameter = function getParameter(pname) {\n if (pname === self.VERTEX_ARRAY_BINDING_OES) {\n if (self.currentVertexArrayObject === self.defaultVertexArrayObject) {\n return null;\n }\n return self.currentVertexArrayObject;\n }\n return original.getParameter.apply(this, arguments);\n };\n\n gl.enableVertexAttribArray = function enableVertexAttribArray(index) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, index);\n const attrib = vao.attribs[index];\n attrib.enabled = true;\n return original.enableVertexAttribArray.apply(this, arguments);\n };\n gl.disableVertexAttribArray = function disableVertexAttribArray(index) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, index);\n const attrib = vao.attribs[index];\n attrib.enabled = false;\n return original.disableVertexAttribArray.apply(this, arguments);\n };\n\n gl.bindBuffer = function bindBuffer(target, buffer) {\n switch (target) {\n case gl.ARRAY_BUFFER:\n self.currentArrayBuffer = buffer;\n break;\n case gl.ELEMENT_ARRAY_BUFFER:\n self.currentVertexArrayObject.elementArrayBuffer = buffer;\n break;\n default:\n }\n return original.bindBuffer.apply(this, arguments);\n };\n\n gl.getVertexAttrib = function getVertexAttrib(index, pname) {\n const vao = self.currentVertexArrayObject;\n const attrib = vao.attribs[index];\n switch (pname) {\n case gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:\n return attrib.buffer;\n case gl.VERTEX_ATTRIB_ARRAY_ENABLED:\n return attrib.enabled;\n case gl.VERTEX_ATTRIB_ARRAY_SIZE:\n return attrib.size;\n case gl.VERTEX_ATTRIB_ARRAY_STRIDE:\n return attrib.stride;\n case gl.VERTEX_ATTRIB_ARRAY_TYPE:\n return attrib.type;\n case gl.VERTEX_ATTRIB_ARRAY_NORMALIZED:\n return attrib.normalized;\n default:\n return original.getVertexAttrib.apply(this, arguments);\n }\n };\n\n gl.vertexAttribPointer = function vertexAttribPointer(\n indx,\n size,\n type,\n normalized,\n stride,\n offset\n ) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, indx);\n const attrib = vao.attribs[indx];\n attrib.buffer = self.currentArrayBuffer;\n attrib.size = size;\n attrib.type = type;\n attrib.normalized = normalized;\n attrib.stride = stride;\n attrib.offset = offset;\n attrib.recache();\n return original.vertexAttribPointer.apply(this, arguments);\n };\n\n if (gl.instrumentExtension) {\n gl.instrumentExtension(this, 'OES_vertex_array_object');\n }\n\n // undefined for headless gl\n if (gl.canvas) {\n gl.canvas.addEventListener(\n 'webglcontextrestored',\n () => {\n log('OESVertexArrayObject emulation library context restored');\n self.reset_();\n },\n true\n );\n }\n\n this.reset_();\n};\n\nOESVertexArrayObject.prototype.VERTEX_ARRAY_BINDING_OES = 0x85b5;\n\nOESVertexArrayObject.prototype.reset_ = function reset_() {\n const contextWasLost = this.vertexArrayObjects !== undefined;\n if (contextWasLost) {\n for (let ii = 0; ii < this.vertexArrayObjects.length; ++ii) {\n this.vertexArrayObjects.isAlive = false;\n }\n }\n const gl = this.gl;\n this.maxVertexAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n\n this.defaultVertexArrayObject = new WebGLVertexArrayObjectOES(this);\n this.currentVertexArrayObject = null;\n this.currentArrayBuffer = null;\n this.vertexArrayObjects = [this.defaultVertexArrayObject];\n\n this.bindVertexArrayOES(null);\n};\n\nOESVertexArrayObject.prototype.createVertexArrayOES = function createVertexArrayOES() {\n const arrayObject = new WebGLVertexArrayObjectOES(this);\n this.vertexArrayObjects.push(arrayObject);\n return arrayObject;\n};\n\nOESVertexArrayObject.prototype.deleteVertexArrayOES = function deleteVertexArrayOES(arrayObject) {\n arrayObject.isAlive = false;\n this.vertexArrayObjects.splice(this.vertexArrayObjects.indexOf(arrayObject), 1);\n if (this.currentVertexArrayObject === arrayObject) {\n this.bindVertexArrayOES(null);\n }\n};\n\nOESVertexArrayObject.prototype.isVertexArrayOES = function isVertexArrayOES(arrayObject) {\n if (arrayObject && arrayObject instanceof WebGLVertexArrayObjectOES) {\n if (arrayObject.hasBeenBound && arrayObject.ext === this) {\n return true;\n }\n }\n return false;\n};\n\nOESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(arrayObject) {\n const gl = this.gl;\n if (arrayObject && !arrayObject.isAlive) {\n synthesizeGLError(\n gl.INVALID_OPERATION,\n 'bindVertexArrayOES: attempt to bind deleted arrayObject'\n );\n return;\n }\n const original = this.original;\n\n const oldVAO = this.currentVertexArrayObject;\n this.currentVertexArrayObject = arrayObject || this.defaultVertexArrayObject;\n this.currentVertexArrayObject.hasBeenBound = true;\n const newVAO = this.currentVertexArrayObject;\n\n if (oldVAO === newVAO) {\n return;\n }\n\n if (!oldVAO || newVAO.elementArrayBuffer !== oldVAO.elementArrayBuffer) {\n original.bindBuffer.call(gl, gl.ELEMENT_ARRAY_BUFFER, newVAO.elementArrayBuffer);\n }\n\n let currentBinding = this.currentArrayBuffer;\n const maxAttrib = Math.max(oldVAO ? oldVAO.maxAttrib : 0, newVAO.maxAttrib);\n for (let n = 0; n <= maxAttrib; n++) {\n const attrib = newVAO.attribs[n];\n const oldAttrib = oldVAO ? oldVAO.attribs[n] : null;\n\n if (!oldVAO || attrib.enabled !== oldAttrib.enabled) {\n if (attrib.enabled) {\n original.enableVertexAttribArray.call(gl, n);\n } else {\n original.disableVertexAttribArray.call(gl, n);\n }\n }\n\n if (attrib.enabled) {\n let bufferChanged = false;\n if (!oldVAO || attrib.buffer !== oldAttrib.buffer) {\n if (currentBinding !== attrib.buffer) {\n original.bindBuffer.call(gl, gl.ARRAY_BUFFER, attrib.buffer);\n currentBinding = attrib.buffer;\n }\n bufferChanged = true;\n }\n\n if (bufferChanged || attrib.cached !== oldAttrib.cached) {\n original.vertexAttribPointer.call(\n gl,\n n,\n attrib.size,\n attrib.type,\n attrib.normalized,\n attrib.stride,\n attrib.offset\n );\n }\n }\n }\n\n if (this.currentArrayBuffer !== currentBinding) {\n original.bindBuffer.call(gl, gl.ARRAY_BUFFER, this.currentArrayBuffer);\n }\n};\n\nexport function polyfillVertexArrayObject(gl) {\n if (typeof gl.createVertexArray === 'function') {\n // VAOs directly supported on object (i.e. WebGL 2 context)\n return;\n }\n\n const original_getSupportedExtensions = gl.getSupportedExtensions;\n gl.getSupportedExtensions = function getSupportedExtensions() {\n const list = original_getSupportedExtensions.call(this) || [];\n if (list.indexOf('OES_vertex_array_object') < 0) {\n list.push('OES_vertex_array_object');\n }\n return list;\n };\n\n const original_getExtension = gl.getExtension;\n gl.getExtension = function getExtension(name) {\n const ext = original_getExtension.call(this, name);\n if (ext) {\n return ext;\n }\n if (name !== 'OES_vertex_array_object') {\n return null;\n }\n\n if (!gl.__OESVertexArrayObject) {\n this.__OESVertexArrayObject = new OESVertexArrayObject(this);\n }\n return this.__OESVertexArrayObject;\n };\n}\n","import { assert } from '../utils/assert';\nimport { isWebGL2 } from '../utils/webgl-checks';\nimport { getParameterPolyfill } from './get-parameter-polyfill';\nconst OES_vertex_array_object = 'OES_vertex_array_object';\nconst ANGLE_instanced_arrays = 'ANGLE_instanced_arrays';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\nconst ERR_VAO_NOT_SUPPORTED = 'VertexArray requires WebGL2 or OES_vertex_array_object extension';\n\nfunction getExtensionData(gl, extension) {\n return {\n webgl2: isWebGL2(gl),\n ext: gl.getExtension(extension)\n };\n}\n\nexport const WEBGL2_CONTEXT_POLYFILLS = {\n [OES_vertex_array_object]: {\n meta: {\n suffix: 'OES'\n },\n createVertexArray: () => {\n assert(false, ERR_VAO_NOT_SUPPORTED);\n },\n deleteVertexArray: () => {},\n bindVertexArray: () => {},\n isVertexArray: () => false\n },\n [ANGLE_instanced_arrays]: {\n meta: {\n suffix: 'ANGLE'\n },\n\n vertexAttribDivisor(location, divisor) {\n assert(divisor === 0, 'WebGL instanced rendering not supported');\n },\n\n drawElementsInstanced: () => {},\n drawArraysInstanced: () => {}\n },\n [WEBGL_draw_buffers]: {\n meta: {\n suffix: 'WEBGL'\n },\n drawBuffers: () => {\n assert(false);\n }\n },\n [EXT_disjoint_timer_query]: {\n meta: {\n suffix: 'EXT'\n },\n createQuery: () => {\n assert(false);\n },\n deleteQuery: () => {\n assert(false);\n },\n beginQuery: () => {\n assert(false);\n },\n endQuery: () => {},\n\n getQuery(handle, pname) {\n return this.getQueryObject(handle, pname);\n },\n\n getQueryParameter(handle, pname) {\n return this.getQueryObject(handle, pname);\n },\n\n getQueryObject: () => {}\n }\n};\nexport const WEBGL2_CONTEXT_OVERRIDES = {\n readBuffer: (gl, originalFunc, attachment) => {\n if (isWebGL2(gl)) {\n originalFunc(attachment);\n } else {}\n },\n getVertexAttrib: (gl, originalFunc, location, pname) => {\n const {\n webgl2,\n ext\n } = getExtensionData(gl, ANGLE_instanced_arrays);\n let result;\n\n switch (pname) {\n case 35069:\n result = !webgl2 ? false : undefined;\n break;\n\n case 35070:\n result = !webgl2 && !ext ? 0 : undefined;\n break;\n\n default:\n }\n\n return result !== undefined ? result : originalFunc(location, pname);\n },\n getProgramParameter: (gl, originalFunc, program, pname) => {\n if (!isWebGL2(gl)) {\n switch (pname) {\n case 35967:\n return 35981;\n\n case 35971:\n return 0;\n\n case 35382:\n return 0;\n\n default:\n }\n }\n\n return originalFunc(program, pname);\n },\n getInternalformatParameter: (gl, originalFunc, target, format, pname) => {\n if (!isWebGL2(gl)) {\n switch (pname) {\n case 32937:\n return new Int32Array([0]);\n\n default:\n }\n }\n\n return gl.getInternalformatParameter(target, format, pname);\n },\n\n getTexParameter(gl, originalFunc, target, pname) {\n switch (pname) {\n case 34046:\n const {\n extensions\n } = gl.luma;\n const ext = extensions[EXT_texture_filter_anisotropic];\n pname = ext && ext.TEXTURE_MAX_ANISOTROPY_EXT || 34046;\n break;\n\n default:\n }\n\n return originalFunc(target, pname);\n },\n\n getParameter: getParameterPolyfill,\n\n hint(gl, originalFunc, pname, value) {\n return originalFunc(pname, value);\n }\n\n};\n//# sourceMappingURL=polyfill-table.js.map","import GL from '@luma.gl/constants';\nimport {assert} from '../utils/assert';\nimport {isWebGL2} from '../utils/webgl-checks';\n\nimport {getParameterPolyfill} from './get-parameter-polyfill';\n\nconst OES_vertex_array_object = 'OES_vertex_array_object';\nconst ANGLE_instanced_arrays = 'ANGLE_instanced_arrays';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\n\nconst ERR_VAO_NOT_SUPPORTED = 'VertexArray requires WebGL2 or OES_vertex_array_object extension';\n\n// Return object with webgl2 flag and an extension\nfunction getExtensionData(gl, extension) {\n return {\n webgl2: isWebGL2(gl),\n ext: gl.getExtension(extension)\n };\n}\n\n// function mapExtensionConstant(gl, constant) {\n// switch (constant) {\n// case ext.FRAGMENT_SHADER_DERIVATIVE_HINT_OES: return GL.FRAGMENT_SHADER_DERIVATIVE_HINT;\n// }\n// }\n\nexport const WEBGL2_CONTEXT_POLYFILLS = {\n // POLYFILL TABLE\n [OES_vertex_array_object]: {\n meta: {suffix: 'OES'},\n // NEW METHODS\n createVertexArray: () => {\n assert(false, ERR_VAO_NOT_SUPPORTED);\n },\n deleteVertexArray: () => {},\n bindVertexArray: () => {},\n isVertexArray: () => false\n },\n [ANGLE_instanced_arrays]: {\n meta: {\n suffix: 'ANGLE'\n // constants: {\n // VERTEX_ATTRIB_ARRAY_DIVISOR: 'VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE'\n // }\n },\n vertexAttribDivisor(location, divisor) {\n // Accept divisor 0 even if instancing is not supported (0 = no instancing)\n assert(divisor === 0, 'WebGL instanced rendering not supported');\n },\n drawElementsInstanced: () => {},\n drawArraysInstanced: () => {}\n },\n [WEBGL_draw_buffers]: {\n meta: {\n suffix: 'WEBGL'\n },\n drawBuffers: () => {\n assert(false);\n }\n },\n [EXT_disjoint_timer_query]: {\n meta: {suffix: 'EXT'},\n // WebGL1: Polyfills the WebGL2 Query API\n createQuery: () => {\n assert(false);\n },\n deleteQuery: () => {\n assert(false);\n },\n beginQuery: () => {\n assert(false);\n },\n endQuery: () => {},\n getQuery(handle, pname) {\n // @ts-ignore\n return this.getQueryObject(handle, pname);\n },\n // The WebGL1 extension uses getQueryObject rather then getQueryParameter\n getQueryParameter(handle, pname) {\n // @ts-ignore\n return this.getQueryObject(handle, pname);\n },\n getQueryObject: () => {}\n }\n};\n\nexport const WEBGL2_CONTEXT_OVERRIDES = {\n // Ensure readBuffer is a no-op\n readBuffer: (gl, originalFunc, attachment) => {\n if (isWebGL2(gl)) {\n originalFunc(attachment);\n } else {\n // assert(attachment !== GL_COLOR_ATTACHMENT0 && attachment !== GL_FRONT);\n }\n },\n // Override for getVertexAttrib that returns sane values for non-WebGL1 constants\n getVertexAttrib: (gl, originalFunc, location, pname) => {\n // const gl = this; // eslint-disable-line\n const {webgl2, ext} = getExtensionData(gl, ANGLE_instanced_arrays);\n\n let result;\n switch (pname) {\n // WebGL1 attributes will never be integer\n case GL.VERTEX_ATTRIB_ARRAY_INTEGER:\n result = !webgl2 ? false : undefined;\n break;\n // if instancing is not available, return 0 meaning divisor has not been set\n case GL.VERTEX_ATTRIB_ARRAY_DIVISOR:\n result = !webgl2 && !ext ? 0 : undefined;\n break;\n default:\n }\n\n return result !== undefined ? result : originalFunc(location, pname);\n },\n // Handle transform feedback and uniform block queries in WebGL1\n getProgramParameter: (gl, originalFunc, program, pname) => {\n if (!isWebGL2(gl)) {\n switch (pname) {\n case GL.TRANSFORM_FEEDBACK_BUFFER_MODE:\n return GL.SEPARATE_ATTRIBS;\n case GL.TRANSFORM_FEEDBACK_VARYINGS:\n return 0;\n case GL.ACTIVE_UNIFORM_BLOCKS:\n return 0;\n default:\n }\n }\n return originalFunc(program, pname);\n },\n getInternalformatParameter: (gl, originalFunc, target, format, pname) => {\n if (!isWebGL2(gl)) {\n switch (pname) {\n case GL.SAMPLES:\n return new Int32Array([0]);\n default:\n }\n }\n return gl.getInternalformatParameter(target, format, pname);\n },\n getTexParameter(gl, originalFunc, target, pname) {\n switch (pname) {\n case GL.TEXTURE_MAX_ANISOTROPY_EXT:\n const {extensions} = gl.luma;\n const ext = extensions[EXT_texture_filter_anisotropic];\n pname = (ext && ext.TEXTURE_MAX_ANISOTROPY_EXT) || GL.TEXTURE_MAX_ANISOTROPY_EXT;\n break;\n default:\n }\n return originalFunc(target, pname);\n },\n getParameter: getParameterPolyfill,\n hint(gl, originalFunc, pname, value) {\n // TODO - handle GL.FRAGMENT_SHADER_DERIVATIVE_HINT:\n // switch (pname) {\n // case GL.FRAGMENT_SHADER_DERIVATIVE_HINT:\n // }\n return originalFunc(pname, value);\n }\n};\n","import { isWebGL2 } from '../utils/webgl-checks';\nconst OES_element_index = 'OES_element_index';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_disjoint_timer_query_webgl2 = 'EXT_disjoint_timer_query_webgl2';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\nconst WEBGL_debug_renderer_info = 'WEBGL_debug_renderer_info';\nconst GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8b8b;\nconst GL_DONT_CARE = 0x1100;\nconst GL_GPU_DISJOINT_EXT = 0x8fbb;\nconst GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84ff;\nconst GL_UNMASKED_VENDOR_WEBGL = 0x9245;\nconst GL_UNMASKED_RENDERER_WEBGL = 0x9246;\n\nconst getWebGL2ValueOrZero = gl => !isWebGL2(gl) ? 0 : undefined;\n\nconst WEBGL_PARAMETERS = {\n [3074]: gl => !isWebGL2(gl) ? 36064 : undefined,\n [GL_FRAGMENT_SHADER_DERIVATIVE_HINT]: gl => !isWebGL2(gl) ? GL_DONT_CARE : undefined,\n [35977]: getWebGL2ValueOrZero,\n [32937]: getWebGL2ValueOrZero,\n [GL_GPU_DISJOINT_EXT]: (gl, getParameter) => {\n const ext = isWebGL2(gl) ? gl.getExtension(EXT_disjoint_timer_query_webgl2) : gl.getExtension(EXT_disjoint_timer_query);\n return ext && ext.GPU_DISJOINT_EXT ? getParameter(ext.GPU_DISJOINT_EXT) : 0;\n },\n [GL_UNMASKED_VENDOR_WEBGL]: (gl, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter(ext && ext.UNMASKED_VENDOR_WEBGL || 7936);\n },\n [GL_UNMASKED_RENDERER_WEBGL]: (gl, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter(ext && ext.UNMASKED_RENDERER_WEBGL || 7937);\n },\n [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl, getParameter) => {\n const ext = gl.luma.extensions[EXT_texture_filter_anisotropic];\n return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;\n },\n [32883]: getWebGL2ValueOrZero,\n [35071]: getWebGL2ValueOrZero,\n [37447]: getWebGL2ValueOrZero,\n [36063]: (gl, getParameter) => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;\n }\n\n return undefined;\n },\n [35379]: getWebGL2ValueOrZero,\n [35374]: getWebGL2ValueOrZero,\n [35377]: getWebGL2ValueOrZero,\n [34852]: gl => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? ext.MAX_DRAW_BUFFERS_WEBGL : 0;\n }\n\n return undefined;\n },\n [36203]: gl => gl.getExtension(OES_element_index) ? 2147483647 : 65535,\n [33001]: gl => gl.getExtension(OES_element_index) ? 16777216 : 65535,\n [33000]: gl => 16777216,\n [37157]: getWebGL2ValueOrZero,\n [35373]: getWebGL2ValueOrZero,\n [35657]: getWebGL2ValueOrZero,\n [36183]: getWebGL2ValueOrZero,\n [37137]: getWebGL2ValueOrZero,\n [34045]: getWebGL2ValueOrZero,\n [35978]: getWebGL2ValueOrZero,\n [35979]: getWebGL2ValueOrZero,\n [35968]: getWebGL2ValueOrZero,\n [35376]: getWebGL2ValueOrZero,\n [35375]: getWebGL2ValueOrZero,\n [35659]: getWebGL2ValueOrZero,\n [37154]: getWebGL2ValueOrZero,\n [35371]: getWebGL2ValueOrZero,\n [35658]: getWebGL2ValueOrZero,\n [35076]: getWebGL2ValueOrZero,\n [35077]: getWebGL2ValueOrZero,\n [35380]: getWebGL2ValueOrZero\n};\nexport function getParameterPolyfill(gl, originalGetParameter, pname) {\n const limit = WEBGL_PARAMETERS[pname];\n const value = typeof limit === 'function' ? limit(gl, originalGetParameter, pname) : limit;\n const result = value !== undefined ? value : originalGetParameter(pname);\n return result;\n}\n//# sourceMappingURL=get-parameter-polyfill.js.map","/* eslint-disable no-inline-comments, max-len, camelcase */\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../utils/webgl-checks';\n\nconst OES_element_index = 'OES_element_index';\nconst WEBGL_draw_buffers = 'WEBGL_draw_buffers';\nconst EXT_disjoint_timer_query = 'EXT_disjoint_timer_query';\nconst EXT_disjoint_timer_query_webgl2 = 'EXT_disjoint_timer_query_webgl2';\nconst EXT_texture_filter_anisotropic = 'EXT_texture_filter_anisotropic';\nconst WEBGL_debug_renderer_info = 'WEBGL_debug_renderer_info';\n\nconst GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8b8b;\nconst GL_DONT_CARE = 0x1100;\nconst GL_GPU_DISJOINT_EXT = 0x8fbb;\nconst GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84ff;\nconst GL_UNMASKED_VENDOR_WEBGL = 0x9245; // vendor string of the graphics driver.\nconst GL_UNMASKED_RENDERER_WEBGL = 0x9246; // renderer string of the graphics driver.\n\nconst getWebGL2ValueOrZero = gl => (!isWebGL2(gl) ? 0 : undefined);\n\n// if a function returns undefined in this table,\n// the original getParameter will be called, defeating the override\nconst WEBGL_PARAMETERS = {\n [GL.READ_BUFFER]: gl => (!isWebGL2(gl) ? GL.COLOR_ATTACHMENT0 : undefined),\n\n // WebGL2 context parameters\n [GL_FRAGMENT_SHADER_DERIVATIVE_HINT]: gl => (!isWebGL2(gl) ? GL_DONT_CARE : undefined),\n\n [GL.RASTERIZER_DISCARD]: getWebGL2ValueOrZero,\n\n [GL.SAMPLES]: getWebGL2ValueOrZero,\n\n // WebGL2 extension context parameters\n [GL_GPU_DISJOINT_EXT]: (gl, getParameter) => {\n const ext = isWebGL2(gl)\n ? gl.getExtension(EXT_disjoint_timer_query_webgl2)\n : gl.getExtension(EXT_disjoint_timer_query);\n return ext && ext.GPU_DISJOINT_EXT ? getParameter(ext.GPU_DISJOINT_EXT) : 0;\n },\n\n // Extension fixed values\n [GL_UNMASKED_VENDOR_WEBGL]: (gl, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_VENDOR_WEBGL) || GL.VENDOR);\n },\n\n [GL_UNMASKED_RENDERER_WEBGL]: (gl, getParameter) => {\n const ext = gl.getExtension(WEBGL_debug_renderer_info);\n return getParameter((ext && ext.UNMASKED_RENDERER_WEBGL) || GL.RENDERER);\n },\n\n // Extension LIMITS\n [GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT]: (gl, getParameter) => {\n const ext = gl.luma.extensions[EXT_texture_filter_anisotropic];\n return ext ? getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1.0;\n },\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: getWebGL2ValueOrZero,\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: getWebGL2ValueOrZero,\n [GL.MAX_COLOR_ATTACHMENTS]: (gl, getParameter) => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? getParameter(ext.MAX_COLOR_ATTACHMENTS_WEBGL) : 0;\n }\n return undefined;\n },\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_DRAW_BUFFERS]: gl => {\n if (!isWebGL2(gl)) {\n const ext = gl.getExtension(WEBGL_draw_buffers);\n return ext ? ext.MAX_DRAW_BUFFERS_WEBGL : 0;\n }\n return undefined;\n },\n [GL.MAX_ELEMENT_INDEX]:\n // Guess: per webglstats.com 99.6% of webgl2 supports 2147483647\n gl => (gl.getExtension(OES_element_index) ? 2147483647 : 65535),\n [GL.MAX_ELEMENTS_INDICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n gl => (gl.getExtension(OES_element_index) ? 16777216 : 65535),\n [GL.MAX_ELEMENTS_VERTICES]:\n // Guess: \"Reasonably safe\" per webglstats.com - could be higher/lower (on some mobile devices)\n gl => 16777216,\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_SAMPLES]: getWebGL2ValueOrZero,\n [GL.MAX_SERVER_WAIT_TIMEOUT]: getWebGL2ValueOrZero,\n [GL.MAX_TEXTURE_LOD_BIAS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: getWebGL2ValueOrZero,\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BLOCK_SIZE]: getWebGL2ValueOrZero,\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: getWebGL2ValueOrZero,\n [GL.MAX_VARYING_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: getWebGL2ValueOrZero,\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: getWebGL2ValueOrZero,\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: getWebGL2ValueOrZero,\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: getWebGL2ValueOrZero\n};\n\n// A \"replacement\" gl.getParameter that accepts \"enums\" from extensions and WebGL2\n// and returns reasonably safe defaults\nexport function getParameterPolyfill(gl, originalGetParameter, pname) {\n // Return mock limits (usually 0) for WebGL2 constants to ensure these\n // can be queries without error\n const limit = WEBGL_PARAMETERS[pname];\n // @ts-ignore TODO pname parameter not declared\n const value = typeof limit === 'function' ? limit(gl, originalGetParameter, pname) : limit;\n const result = value !== undefined ? value : originalGetParameter(pname);\n return result;\n}\n","import { GL_PARAMETER_DEFAULTS, GL_PARAMETER_SETTERS, GL_COMPOSITE_PARAMETER_SETTERS, GL_PARAMETER_GETTERS } from './webgl-parameter-tables';\nimport { pushContextState, popContextState } from './track-context-state';\nimport { assert } from '../utils/assert';\nimport { isWebGL } from '../utils/webgl-checks';\nimport { isObjectEmpty } from '../utils/utils';\nexport function setParameters(gl, values) {\n assert(isWebGL(gl), 'setParameters requires a WebGL context');\n\n if (isObjectEmpty(values)) {\n return;\n }\n\n const compositeSetters = {};\n\n for (const key in values) {\n const glConstant = Number(key);\n const setter = GL_PARAMETER_SETTERS[key];\n\n if (setter) {\n if (typeof setter === 'string') {\n compositeSetters[setter] = true;\n } else {\n setter(gl, values[key], glConstant);\n }\n }\n }\n\n const cache = gl.state && gl.state.cache;\n\n if (cache) {\n for (const key in compositeSetters) {\n const compositeSetter = GL_COMPOSITE_PARAMETER_SETTERS[key];\n compositeSetter(gl, values, cache);\n }\n }\n}\nexport function getParameters(gl, parameters) {\n parameters = parameters || GL_PARAMETER_DEFAULTS;\n\n if (typeof parameters === 'number') {\n const key = parameters;\n const getter = GL_PARAMETER_GETTERS[key];\n return getter ? getter(gl, key) : gl.getParameter(key);\n }\n\n const parameterKeys = Array.isArray(parameters) ? parameters : Object.keys(parameters);\n const state = {};\n\n for (const key of parameterKeys) {\n const getter = GL_PARAMETER_GETTERS[key];\n state[key] = getter ? getter(gl, Number(key)) : gl.getParameter(Number(key));\n }\n\n return state;\n}\nexport function resetParameters(gl) {\n setParameters(gl, GL_PARAMETER_DEFAULTS);\n}\nexport function withParameters(gl, parameters, func) {\n if (isObjectEmpty(parameters)) {\n return func(gl);\n }\n\n const {\n nocatch = true\n } = parameters;\n pushContextState(gl);\n setParameters(gl, parameters);\n let value;\n\n if (nocatch) {\n value = func(gl);\n popContextState(gl);\n } else {\n try {\n value = func(gl);\n } finally {\n popContextState(gl);\n }\n }\n\n return value;\n}\n//# sourceMappingURL=unified-parameter-api.js.map","// Provides a unified API for getting and setting any WebGL parameter\n// Also knows default values of all parameters, enabling fast cache initialization\n// Provides base functionality for the state caching.\nimport {\n GL_PARAMETER_DEFAULTS,\n GL_PARAMETER_SETTERS,\n GL_COMPOSITE_PARAMETER_SETTERS,\n GL_PARAMETER_GETTERS\n} from './webgl-parameter-tables';\n\nimport {pushContextState, popContextState} from './track-context-state';\nimport {assert} from '../utils/assert';\nimport {isWebGL} from '../utils/webgl-checks';\nimport {isObjectEmpty} from '../utils/utils';\n\n// Sets any GL parameter regardless of function (gl.blendMode, ...)\n// Note: requires a `cache` object to be set on the context (gl.state.cache)\n// This object is used to fill in any missing values for composite setter functions\nexport function setParameters(gl, values) {\n assert(isWebGL(gl), 'setParameters requires a WebGL context');\n\n if (isObjectEmpty(values)) {\n return;\n }\n\n const compositeSetters = {};\n\n // HANDLE PRIMITIVE SETTERS (and make note of any composite setters)\n\n for (const key in values) {\n const glConstant = Number(key);\n const setter = GL_PARAMETER_SETTERS[key];\n if (setter) {\n // Composite setters should only be called once, so save them\n if (typeof setter === 'string') {\n compositeSetters[setter] = true;\n } else {\n // if (gl[glConstant] !== undefined) {\n // TODO - added above check since this is being called on WebGL2 values in WebGL1...\n // TODO - deep equal on values? only call setter if value has changed?\n // NOTE - the setter will automatically update this.state\n setter(gl, values[key], glConstant);\n }\n }\n }\n\n // HANDLE COMPOSITE SETTERS\n\n // NOTE: any non-provided values needed by composite setters are filled in from state cache\n // The cache parameter is automatically retrieved from the context\n // This depends on `trackContextState`, which is technically a \"circular\" dependency.\n // But it is too inconvenient to always require a cache parameter here.\n // This is the ONLY external dependency in this module/\n const cache = gl.state && gl.state.cache;\n if (cache) {\n for (const key in compositeSetters) {\n // TODO - avoid calling composite setters if values have not changed.\n const compositeSetter = GL_COMPOSITE_PARAMETER_SETTERS[key];\n // Note - if `trackContextState` has been called,\n // the setter will automatically update this.state.cache\n compositeSetter(gl, values, cache);\n }\n }\n\n // Add a log for the else case?\n}\n\n// Copies the state from a context (gl.getParameter should not be overriden)\n// Reads the entire WebGL state from a context\n// Caveat: This generates a huge amount of synchronous driver roundtrips and should be\n// considered a very slow operation, to be used only if/when a context already manipulated\n// by external code needs to be synchronized for the first time\n// @return {Object} - a newly created map, with values keyed by GL parameters\nexport function getParameters(gl, parameters) {\n // default to querying all parameters\n parameters = parameters || GL_PARAMETER_DEFAULTS;\n // support both arrays of parameters and objects (keys represent parameters)\n\n if (typeof parameters === 'number') {\n // single GL enum\n const key = parameters;\n const getter = GL_PARAMETER_GETTERS[key];\n return getter ? getter(gl, key) : gl.getParameter(key);\n }\n\n const parameterKeys = Array.isArray(parameters) ? parameters : Object.keys(parameters);\n\n const state = {};\n for (const key of parameterKeys) {\n const getter = GL_PARAMETER_GETTERS[key];\n state[key] = getter ? getter(gl, Number(key)) : gl.getParameter(Number(key));\n }\n return state;\n}\n\n// Reset all parameters to a (almost) pure context state\n// NOTE: viewport and scissor will be set to the values in GL_PARAMETER_DEFAULTS,\n// NOT the canvas size dimensions, so they will have to be properly set after\n// calling this function.\nexport function resetParameters(gl) {\n setParameters(gl, GL_PARAMETER_DEFAULTS);\n}\n\n// Stores current \"global\" WebGL context settings, changes selected parameters,\n// executes function, restores parameters\nexport function withParameters(gl, parameters, func) {\n if (isObjectEmpty(parameters)) {\n // Avoid setting state if no parameters provided. Just call and return\n return func(gl);\n }\n\n const {nocatch = true} = parameters;\n\n pushContextState(gl);\n setParameters(gl, parameters);\n\n // Setup is done, call the function\n let value;\n\n if (nocatch) {\n // Avoid try catch to minimize stack size impact for safe execution paths\n value = func(gl);\n popContextState(gl);\n } else {\n // Wrap in a try-catch to ensure that parameters are restored on exceptions\n try {\n value = func(gl);\n } finally {\n popContextState(gl);\n }\n }\n\n return value;\n}\n","import { isWebGL2 } from '../utils/webgl-checks';\nexport const GL_PARAMETER_DEFAULTS = {\n [3042]: false,\n [32773]: new Float32Array([0, 0, 0, 0]),\n [32777]: 32774,\n [34877]: 32774,\n [32969]: 1,\n [32968]: 0,\n [32971]: 1,\n [32970]: 0,\n [3106]: new Float32Array([0, 0, 0, 0]),\n [3107]: [true, true, true, true],\n [2884]: false,\n [2885]: 1029,\n [2929]: false,\n [2931]: 1,\n [2932]: 513,\n [2928]: new Float32Array([0, 1]),\n [2930]: true,\n [3024]: true,\n [36006]: null,\n [2886]: 2305,\n [33170]: 4352,\n [2849]: 1,\n [32823]: false,\n [32824]: 0,\n [10752]: 0,\n [32938]: 1.0,\n [32939]: false,\n [3089]: false,\n [3088]: new Int32Array([0, 0, 1024, 1024]),\n [2960]: false,\n [2961]: 0,\n [2968]: 0xffffffff,\n [36005]: 0xffffffff,\n [2962]: 519,\n [2967]: 0,\n [2963]: 0xffffffff,\n [34816]: 519,\n [36003]: 0,\n [36004]: 0xffffffff,\n [2964]: 7680,\n [2965]: 7680,\n [2966]: 7680,\n [34817]: 7680,\n [34818]: 7680,\n [34819]: 7680,\n [2978]: [0, 0, 1024, 1024],\n [3333]: 4,\n [3317]: 4,\n [37440]: false,\n [37441]: false,\n [37443]: 37444,\n [35723]: 4352,\n [36010]: null,\n [35977]: false,\n [3330]: 0,\n [3332]: 0,\n [3331]: 0,\n [3314]: 0,\n [32878]: 0,\n [3316]: 0,\n [3315]: 0,\n [32877]: 0\n};\n\nconst enable = (gl, value, key) => value ? gl.enable(key) : gl.disable(key);\n\nconst hint = (gl, value, key) => gl.hint(key, value);\n\nconst pixelStorei = (gl, value, key) => gl.pixelStorei(key, value);\n\nconst drawFramebuffer = (gl, value) => {\n const target = isWebGL2(gl) ? 36009 : 36160;\n return gl.bindFramebuffer(target, value);\n};\n\nconst readFramebuffer = (gl, value) => {\n return gl.bindFramebuffer(36008, value);\n};\n\nfunction isArray(array) {\n return Array.isArray(array) || ArrayBuffer.isView(array);\n}\n\nexport const GL_PARAMETER_SETTERS = {\n [3042]: enable,\n [32773]: (gl, value) => gl.blendColor(...value),\n [32777]: 'blendEquation',\n [34877]: 'blendEquation',\n [32969]: 'blendFunc',\n [32968]: 'blendFunc',\n [32971]: 'blendFunc',\n [32970]: 'blendFunc',\n [3106]: (gl, value) => gl.clearColor(...value),\n [3107]: (gl, value) => gl.colorMask(...value),\n [2884]: enable,\n [2885]: (gl, value) => gl.cullFace(value),\n [2929]: enable,\n [2931]: (gl, value) => gl.clearDepth(value),\n [2932]: (gl, value) => gl.depthFunc(value),\n [2928]: (gl, value) => gl.depthRange(...value),\n [2930]: (gl, value) => gl.depthMask(value),\n [3024]: enable,\n [35723]: hint,\n [36006]: drawFramebuffer,\n [2886]: (gl, value) => gl.frontFace(value),\n [33170]: hint,\n [2849]: (gl, value) => gl.lineWidth(value),\n [32823]: enable,\n [32824]: 'polygonOffset',\n [10752]: 'polygonOffset',\n [35977]: enable,\n [32938]: 'sampleCoverage',\n [32939]: 'sampleCoverage',\n [3089]: enable,\n [3088]: (gl, value) => gl.scissor(...value),\n [2960]: enable,\n [2961]: (gl, value) => gl.clearStencil(value),\n [2968]: (gl, value) => gl.stencilMaskSeparate(1028, value),\n [36005]: (gl, value) => gl.stencilMaskSeparate(1029, value),\n [2962]: 'stencilFuncFront',\n [2967]: 'stencilFuncFront',\n [2963]: 'stencilFuncFront',\n [34816]: 'stencilFuncBack',\n [36003]: 'stencilFuncBack',\n [36004]: 'stencilFuncBack',\n [2964]: 'stencilOpFront',\n [2965]: 'stencilOpFront',\n [2966]: 'stencilOpFront',\n [34817]: 'stencilOpBack',\n [34818]: 'stencilOpBack',\n [34819]: 'stencilOpBack',\n [2978]: (gl, value) => gl.viewport(...value),\n [3333]: pixelStorei,\n [3317]: pixelStorei,\n [37440]: pixelStorei,\n [37441]: pixelStorei,\n [37443]: pixelStorei,\n [3330]: pixelStorei,\n [3332]: pixelStorei,\n [3331]: pixelStorei,\n [36010]: readFramebuffer,\n [3314]: pixelStorei,\n [32878]: pixelStorei,\n [3316]: pixelStorei,\n [3315]: pixelStorei,\n [32877]: pixelStorei,\n framebuffer: (gl, framebuffer) => {\n const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;\n return gl.bindFramebuffer(36160, handle);\n },\n blend: (gl, value) => value ? gl.enable(3042) : gl.disable(3042),\n blendColor: (gl, value) => gl.blendColor(...value),\n blendEquation: (gl, args) => {\n args = isArray(args) ? args : [args, args];\n gl.blendEquationSeparate(...args);\n },\n blendFunc: (gl, args) => {\n args = isArray(args) && args.length === 2 ? [...args, ...args] : args;\n gl.blendFuncSeparate(...args);\n },\n clearColor: (gl, value) => gl.clearColor(...value),\n clearDepth: (gl, value) => gl.clearDepth(value),\n clearStencil: (gl, value) => gl.clearStencil(value),\n colorMask: (gl, value) => gl.colorMask(...value),\n cull: (gl, value) => value ? gl.enable(2884) : gl.disable(2884),\n cullFace: (gl, value) => gl.cullFace(value),\n depthTest: (gl, value) => value ? gl.enable(2929) : gl.disable(2929),\n depthFunc: (gl, value) => gl.depthFunc(value),\n depthMask: (gl, value) => gl.depthMask(value),\n depthRange: (gl, value) => gl.depthRange(...value),\n dither: (gl, value) => value ? gl.enable(3024) : gl.disable(3024),\n derivativeHint: (gl, value) => {\n gl.hint(35723, value);\n },\n frontFace: (gl, value) => gl.frontFace(value),\n mipmapHint: (gl, value) => gl.hint(33170, value),\n lineWidth: (gl, value) => gl.lineWidth(value),\n polygonOffsetFill: (gl, value) => value ? gl.enable(32823) : gl.disable(32823),\n polygonOffset: (gl, value) => gl.polygonOffset(...value),\n sampleCoverage: (gl, value) => gl.sampleCoverage(...value),\n scissorTest: (gl, value) => value ? gl.enable(3089) : gl.disable(3089),\n scissor: (gl, value) => gl.scissor(...value),\n stencilTest: (gl, value) => value ? gl.enable(2960) : gl.disable(2960),\n stencilMask: (gl, value) => {\n value = isArray(value) ? value : [value, value];\n const [mask, backMask] = value;\n gl.stencilMaskSeparate(1028, mask);\n gl.stencilMaskSeparate(1029, backMask);\n },\n stencilFunc: (gl, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [func, ref, mask, backFunc, backRef, backMask] = args;\n gl.stencilFuncSeparate(1028, func, ref, mask);\n gl.stencilFuncSeparate(1029, backFunc, backRef, backMask);\n },\n stencilOp: (gl, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;\n gl.stencilOpSeparate(1028, sfail, dpfail, dppass);\n gl.stencilOpSeparate(1029, backSfail, backDpfail, backDppass);\n },\n viewport: (gl, value) => gl.viewport(...value)\n};\n\nfunction getValue(glEnum, values, cache) {\n return values[glEnum] !== undefined ? values[glEnum] : cache[glEnum];\n}\n\nexport const GL_COMPOSITE_PARAMETER_SETTERS = {\n blendEquation: (gl, values, cache) => gl.blendEquationSeparate(getValue(32777, values, cache), getValue(34877, values, cache)),\n blendFunc: (gl, values, cache) => gl.blendFuncSeparate(getValue(32969, values, cache), getValue(32968, values, cache), getValue(32971, values, cache), getValue(32970, values, cache)),\n polygonOffset: (gl, values, cache) => gl.polygonOffset(getValue(32824, values, cache), getValue(10752, values, cache)),\n sampleCoverage: (gl, values, cache) => gl.sampleCoverage(getValue(32938, values, cache), getValue(32939, values, cache)),\n stencilFuncFront: (gl, values, cache) => gl.stencilFuncSeparate(1028, getValue(2962, values, cache), getValue(2967, values, cache), getValue(2963, values, cache)),\n stencilFuncBack: (gl, values, cache) => gl.stencilFuncSeparate(1029, getValue(34816, values, cache), getValue(36003, values, cache), getValue(36004, values, cache)),\n stencilOpFront: (gl, values, cache) => gl.stencilOpSeparate(1028, getValue(2964, values, cache), getValue(2965, values, cache), getValue(2966, values, cache)),\n stencilOpBack: (gl, values, cache) => gl.stencilOpSeparate(1029, getValue(34817, values, cache), getValue(34818, values, cache), getValue(34819, values, cache))\n};\nexport const GL_HOOKED_SETTERS = {\n enable: (update, capability) => update({\n [capability]: true\n }),\n disable: (update, capability) => update({\n [capability]: false\n }),\n pixelStorei: (update, pname, value) => update({\n [pname]: value\n }),\n hint: (update, pname, hint) => update({\n [pname]: hint\n }),\n bindFramebuffer: (update, target, framebuffer) => {\n switch (target) {\n case 36160:\n return update({\n [36006]: framebuffer,\n [36010]: framebuffer\n });\n\n case 36009:\n return update({\n [36006]: framebuffer\n });\n\n case 36008:\n return update({\n [36010]: framebuffer\n });\n\n default:\n return null;\n }\n },\n blendColor: (update, r, g, b, a) => update({\n [32773]: new Float32Array([r, g, b, a])\n }),\n blendEquation: (update, mode) => update({\n [32777]: mode,\n [34877]: mode\n }),\n blendEquationSeparate: (update, modeRGB, modeAlpha) => update({\n [32777]: modeRGB,\n [34877]: modeAlpha\n }),\n blendFunc: (update, src, dst) => update({\n [32969]: src,\n [32968]: dst,\n [32971]: src,\n [32970]: dst\n }),\n blendFuncSeparate: (update, srcRGB, dstRGB, srcAlpha, dstAlpha) => update({\n [32969]: srcRGB,\n [32968]: dstRGB,\n [32971]: srcAlpha,\n [32970]: dstAlpha\n }),\n clearColor: (update, r, g, b, a) => update({\n [3106]: new Float32Array([r, g, b, a])\n }),\n clearDepth: (update, depth) => update({\n [2931]: depth\n }),\n clearStencil: (update, s) => update({\n [2961]: s\n }),\n colorMask: (update, r, g, b, a) => update({\n [3107]: [r, g, b, a]\n }),\n cullFace: (update, mode) => update({\n [2885]: mode\n }),\n depthFunc: (update, func) => update({\n [2932]: func\n }),\n depthRange: (update, zNear, zFar) => update({\n [2928]: new Float32Array([zNear, zFar])\n }),\n depthMask: (update, mask) => update({\n [2930]: mask\n }),\n frontFace: (update, face) => update({\n [2886]: face\n }),\n lineWidth: (update, width) => update({\n [2849]: width\n }),\n polygonOffset: (update, factor, units) => update({\n [32824]: factor,\n [10752]: units\n }),\n sampleCoverage: (update, value, invert) => update({\n [32938]: value,\n [32939]: invert\n }),\n scissor: (update, x, y, width, height) => update({\n [3088]: new Int32Array([x, y, width, height])\n }),\n stencilMask: (update, mask) => update({\n [2968]: mask,\n [36005]: mask\n }),\n stencilMaskSeparate: (update, face, mask) => update({\n [face === 1028 ? 2968 : 36005]: mask\n }),\n stencilFunc: (update, func, ref, mask) => update({\n [2962]: func,\n [2967]: ref,\n [2963]: mask,\n [34816]: func,\n [36003]: ref,\n [36004]: mask\n }),\n stencilFuncSeparate: (update, face, func, ref, mask) => update({\n [face === 1028 ? 2962 : 34816]: func,\n [face === 1028 ? 2967 : 36003]: ref,\n [face === 1028 ? 2963 : 36004]: mask\n }),\n stencilOp: (update, fail, zfail, zpass) => update({\n [2964]: fail,\n [2965]: zfail,\n [2966]: zpass,\n [34817]: fail,\n [34818]: zfail,\n [34819]: zpass\n }),\n stencilOpSeparate: (update, face, fail, zfail, zpass) => update({\n [face === 1028 ? 2964 : 34817]: fail,\n [face === 1028 ? 2965 : 34818]: zfail,\n [face === 1028 ? 2966 : 34819]: zpass\n }),\n viewport: (update, x, y, width, height) => update({\n [2978]: [x, y, width, height]\n })\n};\n\nconst isEnabled = (gl, key) => gl.isEnabled(key);\n\nexport const GL_PARAMETER_GETTERS = {\n [3042]: isEnabled,\n [2884]: isEnabled,\n [2929]: isEnabled,\n [3024]: isEnabled,\n [32823]: isEnabled,\n [32926]: isEnabled,\n [32928]: isEnabled,\n [3089]: isEnabled,\n [2960]: isEnabled,\n [35977]: isEnabled\n};\n//# sourceMappingURL=webgl-parameter-tables.js.map","// Tables describing WebGL parameters\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../utils/webgl-checks';\n\n// DEFAULT SETTINGS - FOR FAST CACHE INITIALIZATION AND CONTEXT RESETS\n\n/* eslint-disable no-shadow */\n\nexport const GL_PARAMETER_DEFAULTS = {\n [GL.BLEND]: false,\n [GL.BLEND_COLOR]: new Float32Array([0, 0, 0, 0]),\n [GL.BLEND_EQUATION_RGB]: GL.FUNC_ADD,\n [GL.BLEND_EQUATION_ALPHA]: GL.FUNC_ADD,\n [GL.BLEND_SRC_RGB]: GL.ONE,\n [GL.BLEND_DST_RGB]: GL.ZERO,\n [GL.BLEND_SRC_ALPHA]: GL.ONE,\n [GL.BLEND_DST_ALPHA]: GL.ZERO,\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([0, 0, 0, 0]), // TBD\n [GL.COLOR_WRITEMASK]: [true, true, true, true],\n [GL.CULL_FACE]: false,\n [GL.CULL_FACE_MODE]: GL.BACK,\n [GL.DEPTH_TEST]: false,\n [GL.DEPTH_CLEAR_VALUE]: 1,\n [GL.DEPTH_FUNC]: GL.LESS,\n [GL.DEPTH_RANGE]: new Float32Array([0, 1]), // TBD\n [GL.DEPTH_WRITEMASK]: true,\n [GL.DITHER]: true,\n // FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: null,\n [GL.FRONT_FACE]: GL.CCW,\n [GL.GENERATE_MIPMAP_HINT]: GL.DONT_CARE,\n [GL.LINE_WIDTH]: 1,\n [GL.POLYGON_OFFSET_FILL]: false,\n [GL.POLYGON_OFFSET_FACTOR]: 0,\n [GL.POLYGON_OFFSET_UNITS]: 0,\n [GL.SAMPLE_COVERAGE_VALUE]: 1.0,\n [GL.SAMPLE_COVERAGE_INVERT]: false,\n [GL.SCISSOR_TEST]: false,\n // Note: Dynamic value. If scissor test enabled we expect users to set correct scissor box\n [GL.SCISSOR_BOX]: new Int32Array([0, 0, 1024, 1024]),\n [GL.STENCIL_TEST]: false,\n [GL.STENCIL_CLEAR_VALUE]: 0,\n [GL.STENCIL_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_BACK_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_FUNC]: GL.ALWAYS,\n [GL.STENCIL_REF]: 0,\n [GL.STENCIL_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_BACK_FUNC]: GL.ALWAYS,\n [GL.STENCIL_BACK_REF]: 0,\n [GL.STENCIL_BACK_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_PASS]: GL.KEEP,\n [GL.STENCIL_BACK_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: GL.KEEP,\n // Dynamic value: We use [0, 0, 1024, 1024] as default, but usually this is updated in each frame.\n [GL.VIEWPORT]: [0, 0, 1024, 1024],\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: 4,\n [GL.UNPACK_ALIGNMENT]: 4,\n [GL.UNPACK_FLIP_Y_WEBGL]: false,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: false,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: GL.BROWSER_DEFAULT_WEBGL,\n\n // WEBGL2 / EXTENSIONS\n // gl1: 'OES_standard_derivatives'\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: GL.DONT_CARE,\n [GL.READ_FRAMEBUFFER_BINDING]: null,\n [GL.RASTERIZER_DISCARD]: false,\n [GL.PACK_ROW_LENGTH]: 0,\n [GL.PACK_SKIP_PIXELS]: 0,\n [GL.PACK_SKIP_ROWS]: 0,\n [GL.UNPACK_ROW_LENGTH]: 0,\n [GL.UNPACK_IMAGE_HEIGHT]: 0,\n [GL.UNPACK_SKIP_PIXELS]: 0,\n [GL.UNPACK_SKIP_ROWS]: 0,\n [GL.UNPACK_SKIP_IMAGES]: 0\n};\n\n// SETTER TABLES - ENABLES SETTING ANY PARAMETER WITH A COMMON API\n\nconst enable = (gl, value, key) => (value ? gl.enable(key) : gl.disable(key));\nconst hint = (gl, value, key) => gl.hint(key, value);\nconst pixelStorei = (gl, value, key) => gl.pixelStorei(key, value);\n\nconst drawFramebuffer = (gl, value) => {\n const target = isWebGL2(gl) ? GL.DRAW_FRAMEBUFFER : GL.FRAMEBUFFER;\n return gl.bindFramebuffer(target, value);\n};\nconst readFramebuffer = (gl, value) => {\n return gl.bindFramebuffer(GL.READ_FRAMEBUFFER, value);\n};\n\n// Utility\nfunction isArray(array) {\n return Array.isArray(array) || ArrayBuffer.isView(array);\n}\n\n// Map from WebGL parameter names to corresponding WebGL setter functions\n// WegGL constants are read by parameter names, but set by function names\n// NOTE: When value type is a string, it will be handled by 'GL_COMPOSITE_PARAMETER_SETTERS'\nexport const GL_PARAMETER_SETTERS = {\n [GL.BLEND]: enable,\n [GL.BLEND_COLOR]: (gl, value) => gl.blendColor(...value),\n [GL.BLEND_EQUATION_RGB]: 'blendEquation',\n [GL.BLEND_EQUATION_ALPHA]: 'blendEquation',\n [GL.BLEND_SRC_RGB]: 'blendFunc',\n [GL.BLEND_DST_RGB]: 'blendFunc',\n [GL.BLEND_SRC_ALPHA]: 'blendFunc',\n [GL.BLEND_DST_ALPHA]: 'blendFunc',\n [GL.COLOR_CLEAR_VALUE]: (gl, value) => gl.clearColor(...value),\n [GL.COLOR_WRITEMASK]: (gl, value) => gl.colorMask(...value),\n [GL.CULL_FACE]: enable,\n [GL.CULL_FACE_MODE]: (gl, value) => gl.cullFace(value),\n [GL.DEPTH_TEST]: enable,\n [GL.DEPTH_CLEAR_VALUE]: (gl, value) => gl.clearDepth(value),\n [GL.DEPTH_FUNC]: (gl, value) => gl.depthFunc(value),\n [GL.DEPTH_RANGE]: (gl, value) => gl.depthRange(...value),\n [GL.DEPTH_WRITEMASK]: (gl, value) => gl.depthMask(value),\n [GL.DITHER]: enable,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: hint,\n // NOTE: FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: drawFramebuffer,\n [GL.FRONT_FACE]: (gl, value) => gl.frontFace(value),\n [GL.GENERATE_MIPMAP_HINT]: hint,\n [GL.LINE_WIDTH]: (gl, value) => gl.lineWidth(value),\n [GL.POLYGON_OFFSET_FILL]: enable,\n [GL.POLYGON_OFFSET_FACTOR]: 'polygonOffset',\n [GL.POLYGON_OFFSET_UNITS]: 'polygonOffset',\n [GL.RASTERIZER_DISCARD]: enable,\n [GL.SAMPLE_COVERAGE_VALUE]: 'sampleCoverage',\n [GL.SAMPLE_COVERAGE_INVERT]: 'sampleCoverage',\n [GL.SCISSOR_TEST]: enable,\n [GL.SCISSOR_BOX]: (gl, value) => gl.scissor(...value),\n [GL.STENCIL_TEST]: enable,\n [GL.STENCIL_CLEAR_VALUE]: (gl, value) => gl.clearStencil(value),\n [GL.STENCIL_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.FRONT, value),\n [GL.STENCIL_BACK_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.BACK, value),\n [GL.STENCIL_FUNC]: 'stencilFuncFront',\n [GL.STENCIL_REF]: 'stencilFuncFront',\n [GL.STENCIL_VALUE_MASK]: 'stencilFuncFront',\n [GL.STENCIL_BACK_FUNC]: 'stencilFuncBack',\n [GL.STENCIL_BACK_REF]: 'stencilFuncBack',\n [GL.STENCIL_BACK_VALUE_MASK]: 'stencilFuncBack',\n [GL.STENCIL_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_PASS]: 'stencilOpFront',\n [GL.STENCIL_BACK_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: 'stencilOpBack',\n [GL.VIEWPORT]: (gl, value) => gl.viewport(...value),\n\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_FLIP_Y_WEBGL]: pixelStorei,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: pixelStorei,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: pixelStorei,\n\n // WEBGL2 PIXEL PACK/UNPACK MODES\n // RASTERIZER_DISCARD ...\n [GL.PACK_ROW_LENGTH]: pixelStorei,\n [GL.PACK_SKIP_PIXELS]: pixelStorei,\n [GL.PACK_SKIP_ROWS]: pixelStorei,\n [GL.READ_FRAMEBUFFER_BINDING]: readFramebuffer,\n [GL.UNPACK_ROW_LENGTH]: pixelStorei,\n [GL.UNPACK_IMAGE_HEIGHT]: pixelStorei,\n [GL.UNPACK_SKIP_PIXELS]: pixelStorei,\n [GL.UNPACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_SKIP_IMAGES]: pixelStorei,\n\n // Function-style setters\n framebuffer: (gl, framebuffer) => {\n // accepts 1) a WebGLFramebuffer 2) null (default framebuffer), or 3) luma.gl Framebuffer class\n // framebuffer is null when restoring to default framebuffer, otherwise use the WebGL handle.\n const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;\n return gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n },\n blend: (gl, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),\n blendColor: (gl, value) => gl.blendColor(...value),\n blendEquation: (gl, args) => {\n args = isArray(args) ? args : [args, args];\n gl.blendEquationSeparate(...args);\n },\n blendFunc: (gl, args) => {\n args = isArray(args) && args.length === 2 ? [...args, ...args] : args;\n gl.blendFuncSeparate(...args);\n },\n\n clearColor: (gl, value) => gl.clearColor(...value),\n clearDepth: (gl, value) => gl.clearDepth(value),\n clearStencil: (gl, value) => gl.clearStencil(value),\n\n colorMask: (gl, value) => gl.colorMask(...value),\n\n cull: (gl, value) => (value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE)),\n cullFace: (gl, value) => gl.cullFace(value),\n\n depthTest: (gl, value) => (value ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST)),\n depthFunc: (gl, value) => gl.depthFunc(value),\n depthMask: (gl, value) => gl.depthMask(value),\n depthRange: (gl, value) => gl.depthRange(...value),\n\n dither: (gl, value) => (value ? gl.enable(GL.DITHER) : gl.disable(GL.DITHER)),\n\n derivativeHint: (gl, value) => {\n // gl1: 'OES_standard_derivatives'\n gl.hint(GL.FRAGMENT_SHADER_DERIVATIVE_HINT, value);\n },\n\n frontFace: (gl, value) => gl.frontFace(value),\n\n mipmapHint: (gl, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),\n\n lineWidth: (gl, value) => gl.lineWidth(value),\n\n polygonOffsetFill: (gl, value) =>\n value ? gl.enable(GL.POLYGON_OFFSET_FILL) : gl.disable(GL.POLYGON_OFFSET_FILL),\n polygonOffset: (gl, value) => gl.polygonOffset(...value),\n\n sampleCoverage: (gl, value) => gl.sampleCoverage(...value),\n\n scissorTest: (gl, value) => (value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST)),\n scissor: (gl, value) => gl.scissor(...value),\n\n stencilTest: (gl, value) => (value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST)),\n stencilMask: (gl, value) => {\n value = isArray(value) ? value : [value, value];\n const [mask, backMask] = value;\n gl.stencilMaskSeparate(GL.FRONT, mask);\n gl.stencilMaskSeparate(GL.BACK, backMask);\n },\n stencilFunc: (gl, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [func, ref, mask, backFunc, backRef, backMask] = args;\n gl.stencilFuncSeparate(GL.FRONT, func, ref, mask);\n gl.stencilFuncSeparate(GL.BACK, backFunc, backRef, backMask);\n },\n stencilOp: (gl, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;\n gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);\n gl.stencilOpSeparate(GL.BACK, backSfail, backDpfail, backDppass);\n },\n\n viewport: (gl, value) => gl.viewport(...value)\n};\n\nfunction getValue(glEnum, values, cache) {\n return values[glEnum] !== undefined ? values[glEnum] : cache[glEnum];\n}\n\n// COMPOSITE_WEBGL_PARAMETER_\nexport const GL_COMPOSITE_PARAMETER_SETTERS = {\n blendEquation: (gl, values, cache) =>\n gl.blendEquationSeparate(\n getValue(GL.BLEND_EQUATION_RGB, values, cache),\n getValue(GL.BLEND_EQUATION_ALPHA, values, cache)\n ),\n blendFunc: (gl, values, cache) =>\n gl.blendFuncSeparate(\n getValue(GL.BLEND_SRC_RGB, values, cache),\n getValue(GL.BLEND_DST_RGB, values, cache),\n getValue(GL.BLEND_SRC_ALPHA, values, cache),\n getValue(GL.BLEND_DST_ALPHA, values, cache)\n ),\n polygonOffset: (gl, values, cache) =>\n gl.polygonOffset(\n getValue(GL.POLYGON_OFFSET_FACTOR, values, cache),\n getValue(GL.POLYGON_OFFSET_UNITS, values, cache)\n ),\n sampleCoverage: (gl, values, cache) =>\n gl.sampleCoverage(\n getValue(GL.SAMPLE_COVERAGE_VALUE, values, cache),\n getValue(GL.SAMPLE_COVERAGE_INVERT, values, cache)\n ),\n stencilFuncFront: (gl, values, cache) =>\n gl.stencilFuncSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FUNC, values, cache),\n getValue(GL.STENCIL_REF, values, cache),\n getValue(GL.STENCIL_VALUE_MASK, values, cache)\n ),\n stencilFuncBack: (gl, values, cache) =>\n gl.stencilFuncSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FUNC, values, cache),\n getValue(GL.STENCIL_BACK_REF, values, cache),\n getValue(GL.STENCIL_BACK_VALUE_MASK, values, cache)\n ),\n stencilOpFront: (gl, values, cache) =>\n gl.stencilOpSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_PASS, values, cache)\n ),\n stencilOpBack: (gl, values, cache) =>\n gl.stencilOpSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_PASS, values, cache)\n )\n};\n\n// Setter functions intercepted for cache updates\nexport const GL_HOOKED_SETTERS = {\n // GENERIC SETTERS\n\n enable: (update, capability) =>\n update({\n [capability]: true\n }),\n disable: (update, capability) =>\n update({\n [capability]: false\n }),\n pixelStorei: (update, pname, value) =>\n update({\n [pname]: value\n }),\n hint: (update, pname, hint) =>\n update({\n [pname]: hint\n }),\n\n // SPECIFIC SETTERS\n\n bindFramebuffer: (update, target, framebuffer) => {\n switch (target) {\n case GL.FRAMEBUFFER:\n return update({\n [GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: framebuffer\n });\n case GL.DRAW_FRAMEBUFFER:\n return update({[GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer});\n case GL.READ_FRAMEBUFFER:\n return update({[GL.READ_FRAMEBUFFER_BINDING]: framebuffer});\n default:\n return null;\n }\n },\n blendColor: (update, r, g, b, a) =>\n update({\n [GL.BLEND_COLOR]: new Float32Array([r, g, b, a])\n }),\n\n blendEquation: (update, mode) =>\n update({\n [GL.BLEND_EQUATION_RGB]: mode,\n [GL.BLEND_EQUATION_ALPHA]: mode\n }),\n\n blendEquationSeparate: (update, modeRGB, modeAlpha) =>\n update({\n [GL.BLEND_EQUATION_RGB]: modeRGB,\n [GL.BLEND_EQUATION_ALPHA]: modeAlpha\n }),\n\n blendFunc: (update, src, dst) =>\n update({\n [GL.BLEND_SRC_RGB]: src,\n [GL.BLEND_DST_RGB]: dst,\n [GL.BLEND_SRC_ALPHA]: src,\n [GL.BLEND_DST_ALPHA]: dst\n }),\n\n blendFuncSeparate: (update, srcRGB, dstRGB, srcAlpha, dstAlpha) =>\n update({\n [GL.BLEND_SRC_RGB]: srcRGB,\n [GL.BLEND_DST_RGB]: dstRGB,\n [GL.BLEND_SRC_ALPHA]: srcAlpha,\n [GL.BLEND_DST_ALPHA]: dstAlpha\n }),\n\n clearColor: (update, r, g, b, a) =>\n update({\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([r, g, b, a])\n }),\n\n clearDepth: (update, depth) =>\n update({\n [GL.DEPTH_CLEAR_VALUE]: depth\n }),\n\n clearStencil: (update, s) =>\n update({\n [GL.STENCIL_CLEAR_VALUE]: s\n }),\n\n colorMask: (update, r, g, b, a) =>\n update({\n [GL.COLOR_WRITEMASK]: [r, g, b, a]\n }),\n\n cullFace: (update, mode) =>\n update({\n [GL.CULL_FACE_MODE]: mode\n }),\n\n depthFunc: (update, func) =>\n update({\n [GL.DEPTH_FUNC]: func\n }),\n\n depthRange: (update, zNear, zFar) =>\n update({\n [GL.DEPTH_RANGE]: new Float32Array([zNear, zFar])\n }),\n\n depthMask: (update, mask) =>\n update({\n [GL.DEPTH_WRITEMASK]: mask\n }),\n\n frontFace: (update, face) =>\n update({\n [GL.FRONT_FACE]: face\n }),\n\n lineWidth: (update, width) =>\n update({\n [GL.LINE_WIDTH]: width\n }),\n\n polygonOffset: (update, factor, units) =>\n update({\n [GL.POLYGON_OFFSET_FACTOR]: factor,\n [GL.POLYGON_OFFSET_UNITS]: units\n }),\n\n sampleCoverage: (update, value, invert) =>\n update({\n [GL.SAMPLE_COVERAGE_VALUE]: value,\n [GL.SAMPLE_COVERAGE_INVERT]: invert\n }),\n\n scissor: (update, x, y, width, height) =>\n update({\n [GL.SCISSOR_BOX]: new Int32Array([x, y, width, height])\n }),\n\n stencilMask: (update, mask) =>\n update({\n [GL.STENCIL_WRITEMASK]: mask,\n [GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilMaskSeparate: (update, face, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_WRITEMASK : GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilFunc: (update, func, ref, mask) =>\n update({\n [GL.STENCIL_FUNC]: func,\n [GL.STENCIL_REF]: ref,\n [GL.STENCIL_VALUE_MASK]: mask,\n [GL.STENCIL_BACK_FUNC]: func,\n [GL.STENCIL_BACK_REF]: ref,\n [GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilFuncSeparate: (update, face, func, ref, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FUNC : GL.STENCIL_BACK_FUNC]: func,\n [face === GL.FRONT ? GL.STENCIL_REF : GL.STENCIL_BACK_REF]: ref,\n [face === GL.FRONT ? GL.STENCIL_VALUE_MASK : GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilOp: (update, fail, zfail, zpass) =>\n update({\n [GL.STENCIL_FAIL]: fail,\n [GL.STENCIL_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_PASS_DEPTH_PASS]: zpass,\n [GL.STENCIL_BACK_FAIL]: fail,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n stencilOpSeparate: (update, face, fail, zfail, zpass) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FAIL : GL.STENCIL_BACK_FAIL]: fail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_FAIL : GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_PASS : GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n viewport: (update, x, y, width, height) =>\n update({\n [GL.VIEWPORT]: [x, y, width, height]\n })\n};\n\n// GETTER TABLE - FOR READING OUT AN ENTIRE CONTEXT\n\nconst isEnabled = (gl, key) => gl.isEnabled(key);\n\n// Exceptions for any keys that cannot be queried by gl.getParameters\nexport const GL_PARAMETER_GETTERS = {\n [GL.BLEND]: isEnabled,\n [GL.CULL_FACE]: isEnabled,\n [GL.DEPTH_TEST]: isEnabled,\n [GL.DITHER]: isEnabled,\n [GL.POLYGON_OFFSET_FILL]: isEnabled,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: isEnabled,\n [GL.SAMPLE_COVERAGE]: isEnabled,\n [GL.SCISSOR_TEST]: isEnabled,\n [GL.STENCIL_TEST]: isEnabled,\n\n // WebGL 2\n [GL.RASTERIZER_DISCARD]: isEnabled\n};\n","import { GL_PARAMETER_DEFAULTS, GL_HOOKED_SETTERS } from './webgl-parameter-tables';\nimport { setParameters, getParameters } from './unified-parameter-api';\nimport { assert } from '../utils/assert';\nimport { deepArrayEqual } from '../utils/utils';\n\nfunction installGetterOverride(gl, functionName) {\n const originalGetterFunc = gl[functionName].bind(gl);\n\n gl[functionName] = function get() {\n const pname = arguments.length <= 0 ? undefined : arguments[0];\n\n if (!(pname in gl.state.cache)) {\n return originalGetterFunc(...arguments);\n }\n\n return gl.state.enable ? gl.state.cache[pname] : originalGetterFunc(...arguments);\n };\n\n Object.defineProperty(gl[functionName], 'name', {\n value: \"\".concat(functionName, \"-from-cache\"),\n configurable: false\n });\n}\n\nfunction installSetterSpy(gl, functionName, setter) {\n const originalSetterFunc = gl[functionName].bind(gl);\n\n gl[functionName] = function set() {\n for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\n params[_key] = arguments[_key];\n }\n\n const {\n valueChanged,\n oldValue\n } = setter(gl.state._updateCache, ...params);\n\n if (valueChanged) {\n originalSetterFunc(...params);\n }\n\n return oldValue;\n };\n\n Object.defineProperty(gl[functionName], 'name', {\n value: \"\".concat(functionName, \"-to-cache\"),\n configurable: false\n });\n}\n\nfunction installProgramSpy(gl) {\n const originalUseProgram = gl.useProgram.bind(gl);\n\n gl.useProgram = function useProgramLuma(handle) {\n if (gl.state.program !== handle) {\n originalUseProgram(handle);\n gl.state.program = handle;\n }\n };\n}\n\nclass GLState {\n constructor(gl) {\n let {\n copyState = false,\n log = () => {}\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.gl = gl;\n this.program = null;\n this.stateStack = [];\n this.enable = true;\n this.cache = copyState ? getParameters(gl) : Object.assign({}, GL_PARAMETER_DEFAULTS);\n this.log = log;\n this._updateCache = this._updateCache.bind(this);\n Object.seal(this);\n }\n\n push() {\n let values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.stateStack.push({});\n }\n\n pop() {\n assert(this.stateStack.length > 0);\n const oldValues = this.stateStack[this.stateStack.length - 1];\n setParameters(this.gl, oldValues);\n this.stateStack.pop();\n }\n\n _updateCache(values) {\n let valueChanged = false;\n let oldValue;\n const oldValues = this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1];\n\n for (const key in values) {\n assert(key !== undefined);\n const value = values[key];\n const cached = this.cache[key];\n\n if (!deepArrayEqual(value, cached)) {\n valueChanged = true;\n oldValue = cached;\n\n if (oldValues && !(key in oldValues)) {\n oldValues[key] = cached;\n }\n\n this.cache[key] = value;\n }\n }\n\n return {\n valueChanged,\n oldValue\n };\n }\n\n}\n\nexport function trackContextState(gl) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n enable = true,\n copyState\n } = options;\n assert(copyState !== undefined);\n\n if (!gl.state) {\n const {\n polyfillContext\n } = globalThis;\n\n if (polyfillContext) {\n polyfillContext(gl);\n }\n\n gl.state = new GLState(gl, {\n copyState\n });\n installProgramSpy(gl);\n\n for (const key in GL_HOOKED_SETTERS) {\n const setter = GL_HOOKED_SETTERS[key];\n installSetterSpy(gl, key, setter);\n }\n\n installGetterOverride(gl, 'getParameter');\n installGetterOverride(gl, 'isEnabled');\n }\n\n gl.state.enable = enable;\n return gl;\n}\nexport function pushContextState(gl) {\n if (!gl.state) {\n trackContextState(gl, {\n copyState: false\n });\n }\n\n gl.state.push();\n}\nexport function popContextState(gl) {\n assert(gl.state);\n gl.state.pop();\n}\n//# sourceMappingURL=track-context-state.js.map","// Support for listening to context state changes and intercepting state queries\n// NOTE: this system does not handle buffer bindings\n/** @typedef {import('./track-context-state')} types */\n\nimport {GL_PARAMETER_DEFAULTS, GL_HOOKED_SETTERS} from './webgl-parameter-tables';\nimport {setParameters, getParameters} from './unified-parameter-api';\nimport {assert} from '../utils/assert';\nimport {deepArrayEqual} from '../utils/utils';\n\n// HELPER FUNCTIONS - INSTALL GET/SET INTERCEPTORS (SPYS) ON THE CONTEXT\n\n// Overrides a WebGLRenderingContext state \"getter\" function\n// to return values directly from cache\nfunction installGetterOverride(gl, functionName) {\n // Get the original function from the WebGLRenderingContext\n const originalGetterFunc = gl[functionName].bind(gl);\n\n // Wrap it with a spy so that we can update our state cache when it gets called\n gl[functionName] = function get(...params) {\n const pname = params[0];\n\n // WebGL limits are not prepopulated in the cache, it's neither undefined in GL_PARAMETER_DEFAULTS\n // nor intercepted by GL_HOOKED_SETTERS. Query the original getter.\n if (!(pname in gl.state.cache)) {\n return originalGetterFunc(...params);\n }\n\n // Optionally call the original function to do a \"hard\" query from the WebGLRenderingContext\n return gl.state.enable\n ? // Call the getter the params so that it can e.g. serve from a cache\n gl.state.cache[pname]\n : // Optionally call the original function to do a \"hard\" query from the WebGLRenderingContext\n originalGetterFunc(...params);\n };\n\n // Set the name of this anonymous function to help in debugging and profiling\n Object.defineProperty(gl[functionName], 'name', {\n value: `${functionName}-from-cache`,\n configurable: false\n });\n}\n\n// Overrides a WebGLRenderingContext state \"setter\" function\n// to call a setter spy before the actual setter. Allows us to keep a cache\n// updated with a copy of the WebGL context state.\nfunction installSetterSpy(gl, functionName, setter) {\n // Get the original function from the WebGLRenderingContext\n const originalSetterFunc = gl[functionName].bind(gl);\n\n // Wrap it with a spy so that we can update our state cache when it gets called\n gl[functionName] = function set(...params) {\n // Update the value\n // Call the setter with the state cache and the params so that it can store the parameters\n const {valueChanged, oldValue} = setter(gl.state._updateCache, ...params);\n\n // Call the original WebGLRenderingContext func to make sure the context actually gets updated\n if (valueChanged) {\n originalSetterFunc(...params);\n }\n\n // Note: if the original function fails to set the value, our state cache will be bad\n // No solution for this at the moment, but assuming that this is unlikely to be a real problem\n // We could call the setter after the originalSetterFunc. Concern is that this would\n // cause different behavior in debug mode, where originalSetterFunc can throw exceptions\n\n return oldValue;\n };\n\n // Set the name of this anonymous function to help in debugging and profiling\n Object.defineProperty(gl[functionName], 'name', {\n value: `${functionName}-to-cache`,\n configurable: false\n });\n}\n\nfunction installProgramSpy(gl) {\n const originalUseProgram = gl.useProgram.bind(gl);\n\n gl.useProgram = function useProgramLuma(handle) {\n if (gl.state.program !== handle) {\n originalUseProgram(handle);\n gl.state.program = handle;\n }\n };\n}\n\n// HELPER CLASS - GLState\n\n/* eslint-disable no-shadow */\nclass GLState {\n constructor(\n gl,\n {\n copyState = false, // Copy cache from params (slow) or initialize from WebGL defaults (fast)\n log = () => {} // Logging function, called when gl parameter change calls are actually issued\n } = {}\n ) {\n this.gl = gl;\n this.program = null;\n this.stateStack = [];\n this.enable = true;\n this.cache = copyState ? getParameters(gl) : Object.assign({}, GL_PARAMETER_DEFAULTS);\n this.log = log;\n\n this._updateCache = this._updateCache.bind(this);\n Object.seal(this);\n }\n\n push(values = {}) {\n this.stateStack.push({});\n }\n\n pop() {\n assert(this.stateStack.length > 0);\n // Use the saved values in the state stack to restore parameters\n const oldValues = this.stateStack[this.stateStack.length - 1];\n setParameters(this.gl, oldValues);\n // Don't pop until we have reset parameters (to make sure other \"stack frames\" are not affected)\n this.stateStack.pop();\n }\n\n // interceptor for context set functions - update our cache and our stack\n // values (Object) - the key values for this setter\n _updateCache(values) {\n let valueChanged = false;\n let oldValue; // = undefined\n\n const oldValues = this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1];\n\n for (const key in values) {\n assert(key !== undefined);\n const value = values[key];\n const cached = this.cache[key];\n // Check that value hasn't already been shadowed\n if (!deepArrayEqual(value, cached)) {\n valueChanged = true;\n oldValue = cached;\n\n // First, save current value being shadowed\n // If a state stack frame is active, save the current parameter values for pop\n // but first check that value hasn't already been shadowed and saved\n if (oldValues && !(key in oldValues)) {\n oldValues[key] = cached;\n }\n\n // Save current value being shadowed\n this.cache[key] = value;\n }\n }\n\n return {valueChanged, oldValue};\n }\n}\n\n// PUBLIC API\n\n/**\n * Initialize WebGL state caching on a context\n * @type {types['trackContextState']}\n */\n// After calling this function, context state will be cached\n// gl.state.push() and gl.state.pop() will be available for saving,\n// temporarily modifying, and then restoring state.\nexport function trackContextState(gl, options = {}) {\n const {enable = true, copyState} = options;\n assert(copyState !== undefined);\n // @ts-ignore\n if (!gl.state) {\n // @ts-ignore\n const {polyfillContext} = globalThis;\n if (polyfillContext) {\n polyfillContext(gl);\n }\n\n // Create a state cache\n // @ts-ignore\n gl.state = new GLState(gl, {copyState});\n\n installProgramSpy(gl);\n\n // intercept all setter functions in the table\n for (const key in GL_HOOKED_SETTERS) {\n const setter = GL_HOOKED_SETTERS[key];\n installSetterSpy(gl, key, setter);\n }\n\n // intercept all getter functions in the table\n installGetterOverride(gl, 'getParameter');\n installGetterOverride(gl, 'isEnabled');\n }\n\n // @ts-ignore\n gl.state.enable = enable;\n\n return gl;\n}\n\n/**\n * Initialize WebGL state caching on a context\n * @type {types['pushContextState']}\n */\nexport function pushContextState(gl) {\n // @ts-ignore\n if (!gl.state) {\n trackContextState(gl, {copyState: false});\n }\n // @ts-ignore\n gl.state.push();\n}\n\n/**\n * Initialize WebGL state caching on a context\n * @type {types['popContextState']}\n */\nexport function popContextState(gl) {\n // @ts-ignore\n assert(gl.state);\n // @ts-ignore\n gl.state.pop();\n}\n","export function isObjectEmpty(object) {\n for (const key in object) {\n return false;\n }\n\n return true;\n}\nexport function deepArrayEqual(x, y) {\n if (x === y) {\n return true;\n }\n\n const isArrayX = Array.isArray(x) || ArrayBuffer.isView(x);\n const isArrayY = Array.isArray(y) || ArrayBuffer.isView(y);\n\n if (isArrayX && isArrayY && x.length === y.length) {\n for (let i = 0; i < x.length; ++i) {\n if (x[i] !== y[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n//# sourceMappingURL=utils.js.map","// Returns true if given object is empty, false otherwise.\nexport function isObjectEmpty(object) {\n for (const key in object) {\n return false;\n }\n return true;\n}\n\nexport function deepArrayEqual(x, y) {\n if (x === y) {\n return true;\n }\n const isArrayX = Array.isArray(x) || ArrayBuffer.isView(x);\n const isArrayY = Array.isArray(y) || ArrayBuffer.isView(y);\n\n // @ts-expect-error DataView...\n if (isArrayX && isArrayY && x.length === y.length) {\n // @ts-expect-error DataView...\n for (let i = 0; i < x.length; ++i) {\n if (x[i] !== y[i]) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n","import { isBrowser as getIsBrowser } from '@probe.gl/env';\nimport { trackContextState } from '../state-tracker/track-context-state';\nimport { log } from '../utils/log';\nimport { assert } from '../utils/assert';\nimport { getDevicePixelRatio } from '../utils/device-pixels';\nimport { isWebGL2 } from '../utils/webgl-checks';\nconst isBrowser = getIsBrowser();\nconst isPage = isBrowser && typeof document !== 'undefined';\nconst CONTEXT_DEFAULTS = {\n webgl2: true,\n webgl1: true,\n throwOnError: true,\n manageState: true,\n canvas: null,\n debug: false,\n width: 800,\n height: 600\n};\nexport function createGLContext() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n assert(isBrowser, \"createGLContext only available in the browser.\\nCreate your own headless context or use 'createHeadlessContext' from @luma.gl/test-utils\");\n options = Object.assign({}, CONTEXT_DEFAULTS, options);\n const {\n width,\n height\n } = options;\n\n function onError(message) {\n if (options.throwOnError) {\n throw new Error(message);\n }\n\n console.error(message);\n return null;\n }\n\n options.onError = onError;\n let gl;\n const {\n canvas\n } = options;\n const targetCanvas = getCanvas({\n canvas,\n width,\n height,\n onError\n });\n gl = createBrowserContext(targetCanvas, options);\n\n if (!gl) {\n return null;\n }\n\n gl = instrumentGLContext(gl, options);\n logInfo(gl);\n return gl;\n}\nexport function instrumentGLContext(gl) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!gl || gl._instrumented) {\n return gl;\n }\n\n gl._version = gl._version || getVersion(gl);\n gl.luma = gl.luma || {};\n gl.luma.canvasSizeInfo = gl.luma.canvasSizeInfo || {};\n options = Object.assign({}, CONTEXT_DEFAULTS, options);\n const {\n manageState,\n debug\n } = options;\n\n if (manageState) {\n trackContextState(gl, {\n copyState: false,\n log: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return log.log(1, ...args)();\n }\n });\n }\n\n if (isBrowser && debug) {\n if (!globalThis.makeDebugContext) {\n log.warn('WebGL debug mode not activated. import \"@luma.gl/debug\" to enable.')();\n } else {\n gl = globalThis.makeDebugContext(gl, options);\n log.level = Math.max(log.level, 1);\n }\n }\n\n gl._instrumented = true;\n return gl;\n}\nexport function getContextDebugInfo(gl) {\n const vendorMasked = gl.getParameter(7936);\n const rendererMasked = gl.getParameter(7937);\n const ext = gl.getExtension('WEBGL_debug_renderer_info');\n const vendorUnmasked = ext && gl.getParameter(ext.UNMASKED_VENDOR_WEBGL || 7936);\n const rendererUnmasked = ext && gl.getParameter(ext.UNMASKED_RENDERER_WEBGL || 7937);\n return {\n vendor: vendorUnmasked || vendorMasked,\n renderer: rendererUnmasked || rendererMasked,\n vendorMasked,\n rendererMasked,\n version: gl.getParameter(7938),\n shadingLanguageVersion: gl.getParameter(35724)\n };\n}\nexport function resizeGLContext(gl) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (gl.canvas) {\n const devicePixelRatio = getDevicePixelRatio(options.useDevicePixels);\n setDevicePixelRatio(gl, devicePixelRatio, options);\n return;\n }\n\n const ext = gl.getExtension('STACKGL_resize_drawingbuffer');\n\n if (ext && \"width\" in options && \"height\" in options) {\n ext.resize(options.width, options.height);\n }\n}\n\nfunction createBrowserContext(canvas, options) {\n const {\n onError\n } = options;\n let errorMessage = null;\n\n const onCreateError = error => errorMessage = error.statusMessage || errorMessage;\n\n canvas.addEventListener('webglcontextcreationerror', onCreateError, false);\n const {\n webgl1 = true,\n webgl2 = true\n } = options;\n let gl = null;\n\n if (webgl2) {\n gl = gl || canvas.getContext('webgl2', options);\n gl = gl || canvas.getContext('experimental-webgl2', options);\n }\n\n if (webgl1) {\n gl = gl || canvas.getContext('webgl', options);\n gl = gl || canvas.getContext('experimental-webgl', options);\n }\n\n canvas.removeEventListener('webglcontextcreationerror', onCreateError, false);\n\n if (!gl) {\n return onError(\"Failed to create \".concat(webgl2 && !webgl1 ? 'WebGL2' : 'WebGL', \" context: \").concat(errorMessage || 'Unknown error'));\n }\n\n if (options.onContextLost) {\n canvas.addEventListener('webglcontextlost', options.onContextLost, false);\n }\n\n if (options.onContextRestored) {\n canvas.addEventListener('webglcontextrestored', options.onContextRestored, false);\n }\n\n return gl;\n}\n\nfunction getCanvas(_ref) {\n let {\n canvas,\n width = 800,\n height = 600,\n onError\n } = _ref;\n let targetCanvas;\n\n if (typeof canvas === 'string') {\n const isPageLoaded = isPage && document.readyState === 'complete';\n\n if (!isPageLoaded) {\n onError(\"createGLContext called on canvas '\".concat(canvas, \"' before page was loaded\"));\n }\n\n targetCanvas = document.getElementById(canvas);\n } else if (canvas) {\n targetCanvas = canvas;\n } else {\n targetCanvas = document.createElement('canvas');\n targetCanvas.id = 'lumagl-canvas';\n targetCanvas.style.width = Number.isFinite(width) ? \"\".concat(width, \"px\") : '100%';\n targetCanvas.style.height = Number.isFinite(height) ? \"\".concat(height, \"px\") : '100%';\n document.body.insertBefore(targetCanvas, document.body.firstChild);\n }\n\n return targetCanvas;\n}\n\nfunction logInfo(gl) {\n const webGL = isWebGL2(gl) ? 'WebGL2' : 'WebGL1';\n const info = getContextDebugInfo(gl);\n const driver = info ? \"(\".concat(info.vendor, \",\").concat(info.renderer, \")\") : '';\n const debug = gl.debug ? ' debug' : '';\n log.info(1, \"\".concat(webGL).concat(debug, \" context \").concat(driver))();\n}\n\nfunction getVersion(gl) {\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n return 2;\n }\n\n return 1;\n}\n\nfunction setDevicePixelRatio(gl, devicePixelRatio, options) {\n let clientWidth = 'width' in options ? options.width : gl.canvas.clientWidth;\n let clientHeight = 'height' in options ? options.height : gl.canvas.clientHeight;\n\n if (!clientWidth || !clientHeight) {\n log.log(1, 'Canvas clientWidth/clientHeight is 0')();\n devicePixelRatio = 1;\n clientWidth = gl.canvas.width || 1;\n clientHeight = gl.canvas.height || 1;\n }\n\n gl.luma = gl.luma || {};\n gl.luma.canvasSizeInfo = gl.luma.canvasSizeInfo || {};\n const cachedSize = gl.luma.canvasSizeInfo;\n\n if (cachedSize.clientWidth !== clientWidth || cachedSize.clientHeight !== clientHeight || cachedSize.devicePixelRatio !== devicePixelRatio) {\n let clampedPixelRatio = devicePixelRatio;\n const canvasWidth = Math.floor(clientWidth * clampedPixelRatio);\n const canvasHeight = Math.floor(clientHeight * clampedPixelRatio);\n gl.canvas.width = canvasWidth;\n gl.canvas.height = canvasHeight;\n\n if (gl.drawingBufferWidth !== canvasWidth || gl.drawingBufferHeight !== canvasHeight) {\n log.warn(\"Device pixel ratio clamped\")();\n clampedPixelRatio = Math.min(gl.drawingBufferWidth / clientWidth, gl.drawingBufferHeight / clientHeight);\n gl.canvas.width = Math.floor(clientWidth * clampedPixelRatio);\n gl.canvas.height = Math.floor(clientHeight * clampedPixelRatio);\n }\n\n Object.assign(gl.luma.canvasSizeInfo, {\n clientWidth,\n clientHeight,\n devicePixelRatio\n });\n }\n}\n//# sourceMappingURL=context.js.map","// WebGLRenderingContext related methods\n\n/** @typedef {import('./context')} types */\n\n/* eslint-disable quotes */\nimport GL from '@luma.gl/constants';\nimport {isBrowser as getIsBrowser} from '@probe.gl/env';\nimport {trackContextState} from '../state-tracker/track-context-state';\n\nimport {log} from '../utils/log';\nimport {assert} from '../utils/assert';\nimport {getDevicePixelRatio} from '../utils/device-pixels';\nimport {isWebGL2} from '../utils/webgl-checks';\n\nconst isBrowser = getIsBrowser();\nconst isPage = isBrowser && typeof document !== 'undefined';\n\nconst CONTEXT_DEFAULTS = {\n // COMMON CONTEXT PARAMETERS\n // Attempt to allocate WebGL2 context\n webgl2: true, // Attempt to create a WebGL2 context (false to force webgl1)\n webgl1: true, // Attempt to create a WebGL1 context (false to fail if webgl2 not available)\n throwOnError: true,\n manageState: true,\n // BROWSER CONTEXT PARAMETERS\n canvas: null, // A canvas element or a canvas string id\n debug: false, // Instrument context (at the expense of performance)\n // HEADLESS CONTEXT PARAMETERS\n width: 800, // width are height are only used by headless gl\n height: 600\n // WEBGL/HEADLESS CONTEXT PARAMETERS\n // Remaining options are passed through to context creator\n};\n\n/**\n * Creates a context giving access to the WebGL API\n * @type {types['createGLContext']}\n */\n/* eslint-disable complexity, max-statements */\nexport function createGLContext(options = {}) {\n assert(\n isBrowser,\n \"createGLContext only available in the browser.\\nCreate your own headless context or use 'createHeadlessContext' from @luma.gl/test-utils\"\n );\n\n options = Object.assign({}, CONTEXT_DEFAULTS, options);\n const {width, height} = options;\n\n // Error reporting function, enables exceptions to be disabled\n function onError(message) {\n if (options.throwOnError) {\n throw new Error(message);\n }\n // eslint-disable-next-line\n console.error(message);\n return null;\n }\n options.onError = onError;\n\n let gl;\n // Get or create a canvas\n const {canvas} = options;\n const targetCanvas = getCanvas({canvas, width, height, onError});\n // Create a WebGL context in the canvas\n gl = createBrowserContext(targetCanvas, options);\n\n if (!gl) {\n return null;\n }\n\n gl = instrumentGLContext(gl, options);\n\n // Log some debug info about the newly created context\n logInfo(gl);\n\n // Add to seer integration\n return gl;\n}\n\n/**\n * Creates a context giving access to the WebGL API\n * @type {types['instrumentGLContext']}\n */\nexport function instrumentGLContext(gl, options = {}) {\n // Avoid multiple instrumentations\n // @ts-ignore\n if (!gl || gl._instrumented) {\n return gl;\n }\n\n // @ts-ignore\n gl._version = gl._version || getVersion(gl);\n\n // Cache canvas size information to avoid setting it on every frame.\n // @ts-ignore\n gl.luma = gl.luma || {};\n // @ts-ignore\n gl.luma.canvasSizeInfo = gl.luma.canvasSizeInfo || {};\n\n options = Object.assign({}, CONTEXT_DEFAULTS, options);\n const {manageState, debug} = options;\n\n // Install context state tracking\n if (manageState) {\n trackContextState(gl, {\n copyState: false,\n log: (...args) => log.log(1, ...args)()\n });\n }\n\n // Add debug instrumentation to the context\n if (isBrowser && debug) {\n // @ts-ignore\n if (!globalThis.makeDebugContext) {\n log.warn('WebGL debug mode not activated. import \"@luma.gl/debug\" to enable.')();\n } else {\n // @ts-ignore\n gl = globalThis.makeDebugContext(gl, options);\n // Debug forces log level to at least 1\n log.level = Math.max(log.level, 1);\n }\n }\n\n // @ts-ignore\n gl._instrumented = true;\n\n return gl;\n}\n\n/**\n * Provides strings identifying the GPU vendor and driver.\n * @type {types['getContextDebugInfo']}\n */\nexport function getContextDebugInfo(gl) {\n const vendorMasked = gl.getParameter(GL.VENDOR);\n const rendererMasked = gl.getParameter(GL.RENDERER);\n const ext = gl.getExtension('WEBGL_debug_renderer_info');\n const vendorUnmasked = ext && gl.getParameter(ext.UNMASKED_VENDOR_WEBGL || GL.VENDOR);\n const rendererUnmasked = ext && gl.getParameter(ext.UNMASKED_RENDERER_WEBGL || GL.RENDERER);\n return {\n vendor: vendorUnmasked || vendorMasked,\n renderer: rendererUnmasked || rendererMasked,\n vendorMasked,\n rendererMasked,\n version: gl.getParameter(GL.VERSION),\n shadingLanguageVersion: gl.getParameter(GL.SHADING_LANGUAGE_VERSION)\n };\n}\n\n/**\n * Resize the canvas' drawing buffer.\n * @type {types['resizeGLContext']}\n */\nexport function resizeGLContext(gl, options = {}) {\n // Resize browser context\n if (gl.canvas) {\n const devicePixelRatio = getDevicePixelRatio(options.useDevicePixels);\n setDevicePixelRatio(gl, devicePixelRatio, options);\n return;\n }\n\n // Resize headless gl context\n const ext = gl.getExtension('STACKGL_resize_drawingbuffer');\n if (ext && `width` in options && `height` in options) {\n ext.resize(options.width, options.height);\n }\n}\n\n// HELPER METHODS\n\n/**\n * Create a WebGL context for a canvas\n * Note calling this multiple time on the same canvas does return the same context\n */\n\nfunction createBrowserContext(canvas, options) {\n const {onError} = options;\n\n // Try to extract any extra information about why context creation failed\n let errorMessage = null;\n const onCreateError = error => (errorMessage = error.statusMessage || errorMessage);\n canvas.addEventListener('webglcontextcreationerror', onCreateError, false);\n\n const {webgl1 = true, webgl2 = true} = options;\n let gl = null;\n // Prefer webgl2 over webgl1, prefer conformant over experimental\n if (webgl2) {\n gl = gl || canvas.getContext('webgl2', options);\n gl = gl || canvas.getContext('experimental-webgl2', options);\n }\n if (webgl1) {\n gl = gl || canvas.getContext('webgl', options);\n gl = gl || canvas.getContext('experimental-webgl', options);\n }\n\n canvas.removeEventListener('webglcontextcreationerror', onCreateError, false);\n\n if (!gl) {\n return onError(\n `Failed to create ${webgl2 && !webgl1 ? 'WebGL2' : 'WebGL'} context: ${errorMessage ||\n 'Unknown error'}`\n );\n }\n\n if (options.onContextLost) {\n canvas.addEventListener('webglcontextlost', options.onContextLost, false);\n }\n\n if (options.onContextRestored) {\n canvas.addEventListener('webglcontextrestored', options.onContextRestored, false);\n }\n\n return gl;\n}\n\nfunction getCanvas({canvas, width = 800, height = 600, onError}) {\n let targetCanvas;\n if (typeof canvas === 'string') {\n const isPageLoaded = isPage && document.readyState === 'complete';\n if (!isPageLoaded) {\n onError(`createGLContext called on canvas '${canvas}' before page was loaded`);\n }\n targetCanvas = document.getElementById(canvas);\n } else if (canvas) {\n targetCanvas = canvas;\n } else {\n targetCanvas = document.createElement('canvas');\n targetCanvas.id = 'lumagl-canvas';\n targetCanvas.style.width = Number.isFinite(width) ? `${width}px` : '100%';\n targetCanvas.style.height = Number.isFinite(height) ? `${height}px` : '100%';\n document.body.insertBefore(targetCanvas, document.body.firstChild);\n }\n\n return targetCanvas;\n}\n\nfunction logInfo(gl) {\n const webGL = isWebGL2(gl) ? 'WebGL2' : 'WebGL1';\n const info = getContextDebugInfo(gl);\n const driver = info ? `(${info.vendor},${info.renderer})` : '';\n const debug = gl.debug ? ' debug' : '';\n log.info(1, `${webGL}${debug} context ${driver}`)();\n}\n\nfunction getVersion(gl) {\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n // WebGL2 context.\n return 2;\n }\n // Must be a WebGL1 context.\n return 1;\n}\n\n// use devicePixelRatio to set canvas width and height\nfunction setDevicePixelRatio(gl, devicePixelRatio, options) {\n // NOTE: if options.width and options.height not used remove in v8\n let clientWidth = 'width' in options ? options.width : gl.canvas.clientWidth;\n let clientHeight = 'height' in options ? options.height : gl.canvas.clientHeight;\n\n if (!clientWidth || !clientHeight) {\n log.log(1, 'Canvas clientWidth/clientHeight is 0')();\n // by forcing devicePixel ratio to 1, we do not scale gl.canvas.width and height in each frame.\n devicePixelRatio = 1;\n clientWidth = gl.canvas.width || 1;\n clientHeight = gl.canvas.height || 1;\n }\n\n gl.luma = gl.luma || {};\n gl.luma.canvasSizeInfo = gl.luma.canvasSizeInfo || {};\n const cachedSize = gl.luma.canvasSizeInfo;\n // Check if canvas needs to be resized\n if (\n cachedSize.clientWidth !== clientWidth ||\n cachedSize.clientHeight !== clientHeight ||\n cachedSize.devicePixelRatio !== devicePixelRatio\n ) {\n let clampedPixelRatio = devicePixelRatio;\n\n const canvasWidth = Math.floor(clientWidth * clampedPixelRatio);\n const canvasHeight = Math.floor(clientHeight * clampedPixelRatio);\n gl.canvas.width = canvasWidth;\n gl.canvas.height = canvasHeight;\n\n // Note: when devicePixelRatio is too high, it is possible we might hit system limit for\n // drawing buffer width and hight, in those cases they get clamped and resulting aspect ration may not be maintained\n // for those cases, reduce devicePixelRatio.\n if (gl.drawingBufferWidth !== canvasWidth || gl.drawingBufferHeight !== canvasHeight) {\n log.warn(`Device pixel ratio clamped`)();\n clampedPixelRatio = Math.min(\n gl.drawingBufferWidth / clientWidth,\n gl.drawingBufferHeight / clientHeight\n );\n\n gl.canvas.width = Math.floor(clientWidth * clampedPixelRatio);\n gl.canvas.height = Math.floor(clientHeight * clampedPixelRatio);\n }\n\n Object.assign(gl.luma.canvasSizeInfo, {clientWidth, clientHeight, devicePixelRatio});\n }\n}\n","export function cssToDeviceRatio(gl) {\n const {\n luma\n } = gl;\n\n if (gl.canvas && luma) {\n const cachedSize = luma.canvasSizeInfo;\n const clientWidth = 'clientWidth' in cachedSize ? cachedSize.clientWidth : gl.canvas.clientWidth;\n return clientWidth ? gl.drawingBufferWidth / clientWidth : 1;\n }\n\n return 1;\n}\nexport function cssToDevicePixels(gl, cssPixel) {\n let yInvert = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n const ratio = cssToDeviceRatio(gl);\n const width = gl.drawingBufferWidth;\n const height = gl.drawingBufferHeight;\n return scalePixels(cssPixel, ratio, width, height, yInvert);\n}\nexport function getDevicePixelRatio(useDevicePixels) {\n const windowRatio = typeof window === 'undefined' ? 1 : window.devicePixelRatio || 1;\n\n if (Number.isFinite(useDevicePixels)) {\n return useDevicePixels <= 0 ? 1 : useDevicePixels;\n }\n\n return useDevicePixels ? windowRatio : 1;\n}\n\nfunction scalePixels(pixel, ratio, width, height, yInvert) {\n const x = scaleX(pixel[0], ratio, width);\n let y = scaleY(pixel[1], ratio, height, yInvert);\n let t = scaleX(pixel[0] + 1, ratio, width);\n const xHigh = t === width - 1 ? t : t - 1;\n t = scaleY(pixel[1] + 1, ratio, height, yInvert);\n let yHigh;\n\n if (yInvert) {\n t = t === 0 ? t : t + 1;\n yHigh = y;\n y = t;\n } else {\n yHigh = t === height - 1 ? t : t - 1;\n }\n\n return {\n x,\n y,\n width: Math.max(xHigh - x + 1, 1),\n height: Math.max(yHigh - y + 1, 1)\n };\n}\n\nfunction scaleX(x, ratio, width) {\n const r = Math.min(Math.round(x * ratio), width - 1);\n return r;\n}\n\nfunction scaleY(y, ratio, height, yInvert) {\n return yInvert ? Math.max(0, height - 1 - Math.round(y * ratio)) : Math.min(Math.round(y * ratio), height - 1);\n}\n//# sourceMappingURL=device-pixels.js.map","/** @typedef {import('./device-pixels')} types */\n\n/**\n * Returns multiplier need to convert CSS size to Device size\n * @type {types['cssToDeviceRatio']}\n */\nexport function cssToDeviceRatio(gl) {\n // @ts-ignore\n const {luma} = gl;\n\n if (gl.canvas && luma) {\n // For headless gl we might have used custom width and height\n // hence prioritize cached clientWidth\n const cachedSize = luma.canvasSizeInfo;\n const clientWidth =\n 'clientWidth' in cachedSize ? cachedSize.clientWidth : gl.canvas.clientWidth;\n return clientWidth ? gl.drawingBufferWidth / clientWidth : 1;\n }\n // use default device pixel ratio\n return 1;\n}\n\n/**\n * Maps CSS pixel position to device pixel position\n * @type {types['cssToDevicePixels']}\n */\nexport function cssToDevicePixels(gl, cssPixel, yInvert = true) {\n const ratio = cssToDeviceRatio(gl);\n const width = gl.drawingBufferWidth;\n const height = gl.drawingBufferHeight;\n return scalePixels(cssPixel, ratio, width, height, yInvert);\n}\n\n// HELPER METHOD\n\n/**\n * Calulates device pixel ratio, used during context creation\n * @type {types['getDevicePixelRatio']}\n */\nexport function getDevicePixelRatio(useDevicePixels) {\n const windowRatio = typeof window === 'undefined' ? 1 : window.devicePixelRatio || 1;\n if (Number.isFinite(useDevicePixels)) {\n // @ts-ignore Can no longer be boolean after previous line\n return useDevicePixels <= 0 ? 1 : useDevicePixels;\n }\n return useDevicePixels ? windowRatio : 1;\n}\n\n// PRIVATE\n\nfunction scalePixels(pixel, ratio, width, height, yInvert) {\n const x = scaleX(pixel[0], ratio, width);\n let y = scaleY(pixel[1], ratio, height, yInvert);\n\n // Find boundaries of next pixel to provide valid range of device pixel locaitons\n\n let t = scaleX(pixel[0] + 1, ratio, width);\n // If next pixel's position is clamped to boundary, use it as is, otherwise subtract 1 for current pixel boundary\n const xHigh = t === width - 1 ? t : t - 1;\n\n t = scaleY(pixel[1] + 1, ratio, height, yInvert);\n let yHigh;\n if (yInvert) {\n // If next pixel's position is clamped to boundary, use it as is, otherwise clamp it to valid range\n t = t === 0 ? t : t + 1;\n // swap y and yHigh\n yHigh = y;\n y = t;\n } else {\n // If next pixel's position is clamped to boundary, use it as is, otherwise clamp it to valid range\n yHigh = t === height - 1 ? t : t - 1;\n // y remains same\n }\n return {\n x,\n y,\n // when ratio < 1, current css pixel and next css pixel may point to same device pixel, set width/height to 1 in those cases.\n width: Math.max(xHigh - x + 1, 1),\n height: Math.max(yHigh - y + 1, 1)\n };\n}\n\nfunction scaleX(x, ratio, width) {\n // since we are rounding to nearest, when ratio > 1, edge pixels may point to out of bounds value, clamp to the limit\n const r = Math.min(Math.round(x * ratio), width - 1);\n return r;\n}\n\nfunction scaleY(y, ratio, height, yInvert) {\n // since we are rounding to nearest, when ratio > 1, edge pixels may point to out of bounds value, clamp to the limit\n return yInvert\n ? Math.max(0, height - 1 - Math.round(y * ratio))\n : Math.min(Math.round(y * ratio), height - 1);\n}\n","import { log } from '@luma.gl/gltools';\nimport { Stats } from '@probe.gl/stats';\nimport { isBrowser } from '@probe.gl/env';\nconst VERSION = typeof \"8.5.21\" !== 'undefined' ? \"8.5.21\" : 'untranspiled source';\nconst STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';\nexport class StatsManager {\n constructor() {\n this.stats = new Map();\n }\n\n get(name) {\n if (!this.stats.has(name)) {\n this.stats.set(name, new Stats({\n id: name\n }));\n }\n\n return this.stats.get(name);\n }\n\n}\nconst lumaStats = new StatsManager();\n\nif (globalThis.luma && globalThis.luma.VERSION !== VERSION) {\n throw new Error(\"luma.gl - multiple VERSIONs detected: \".concat(globalThis.luma.VERSION, \" vs \").concat(VERSION));\n}\n\nif (!globalThis.luma) {\n if (isBrowser()) {\n log.log(1, \"luma.gl \".concat(VERSION, \" - \").concat(STARTUP_MESSAGE))();\n }\n\n globalThis.luma = globalThis.luma || {\n VERSION,\n version: VERSION,\n log,\n stats: lumaStats,\n globals: {\n modules: {},\n nodeIO: {}\n }\n };\n}\n\nexport { lumaStats };\nexport default globalThis.luma;\n//# sourceMappingURL=init.js.map","import {log} from '@luma.gl/gltools';\nimport {Stats} from '@probe.gl/stats';\nimport {isBrowser} from '@probe.gl/env';\n\n// Version detection using babel plugin\n/* global __VERSION__ */\n// @ts-ignore\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\n\nconst STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';\n// Assign luma.log.level in console to control logging: \\\n// 0: none, 1: minimal, 2: verbose, 3: attribute/uniforms, 4: gl logs\n// luma.log.break[], set to gl funcs, luma.log.profile[] set to model names`;\n\nexport class StatsManager {\n constructor() {\n this.stats = new Map();\n }\n\n get(name) {\n if (!this.stats.has(name)) {\n this.stats.set(name, new Stats({id: name}));\n }\n\n return this.stats.get(name);\n }\n}\n\nconst lumaStats = new StatsManager();\n\nif (globalThis.luma && globalThis.luma.VERSION !== VERSION) {\n throw new Error(`luma.gl - multiple VERSIONs detected: ${globalThis.luma.VERSION} vs ${VERSION}`);\n}\n\nif (!globalThis.luma) {\n if (isBrowser()) {\n log.log(1, `luma.gl ${VERSION} - ${STARTUP_MESSAGE}`)();\n }\n\n globalThis.luma = globalThis.luma || {\n VERSION,\n version: VERSION,\n log,\n\n // A global stats object that various components can add information to\n // E.g. see webgl/resource.js\n stats: lumaStats,\n\n // Keep some luma globals in a sub-object\n // This allows us to dynamically detect if certain modules have been\n // included (such as IO and headless) and enable related functionality,\n // without unconditionally requiring and thus bundling big dependencies\n // into the app.\n globals: {\n modules: {},\n nodeIO: {}\n }\n };\n}\n\nexport {lumaStats};\nexport default globalThis.luma;\n","export {default as Stats} from './lib/stats';\nexport {default as Stat} from './lib/stat';\n\n// UTILITIES\nexport {default as _getHiResTimestamp} from './utils/hi-res-timestamp';\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Stat from './stat';\nexport default class Stats {\n constructor(options) {\n _defineProperty(this, \"id\", void 0);\n\n _defineProperty(this, \"stats\", {});\n\n this.id = options.id;\n this.stats = {};\n\n this._initializeStats(options.stats);\n\n Object.seal(this);\n }\n\n get(name) {\n let type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'count';\n return this._getOrCreate({\n name,\n type\n });\n }\n\n get size() {\n return Object.keys(this.stats).length;\n }\n\n reset() {\n for (const key in this.stats) {\n this.stats[key].reset();\n }\n\n return this;\n }\n\n forEach(fn) {\n for (const key in this.stats) {\n fn(this.stats[key]);\n }\n }\n\n getTable() {\n const table = {};\n this.forEach(stat => {\n table[stat.name] = {\n time: stat.time || 0,\n count: stat.count || 0,\n average: stat.getAverageTime() || 0,\n hz: stat.getHz() || 0\n };\n });\n return table;\n }\n\n _initializeStats() {\n let stats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n stats.forEach(stat => this._getOrCreate(stat));\n }\n\n _getOrCreate(stat) {\n if (!stat || !stat.name) {\n return null;\n }\n\n const {\n name,\n type\n } = stat;\n\n if (!this.stats[name]) {\n if (stat instanceof Stat) {\n this.stats[name] = stat;\n } else {\n this.stats[name] = new Stat(name, type);\n }\n }\n\n return this.stats[name];\n }\n\n}\n//# sourceMappingURL=stats.js.map","import Stat from './stat';\n\n/** A \"bag\" of `Stat` objects, can be visualized using `StatsWidget` */\nexport default class Stats {\n readonly id: string;\n readonly stats: Record = {};\n\n constructor(options: {id: string; stats?: Stats | Stat[] | {name: string; type?: string}[]}) {\n this.id = options.id;\n this.stats = {};\n\n this._initializeStats(options.stats);\n\n Object.seal(this);\n }\n\n /** Acquire a stat. Create if it doesn't exist. */\n get(name: string, type: string = 'count'): Stat {\n return this._getOrCreate({name, type});\n }\n\n get size(): number {\n return Object.keys(this.stats).length;\n }\n\n /** Reset all stats */\n reset(): this {\n for (const key in this.stats) {\n this.stats[key].reset();\n }\n\n return this;\n }\n\n forEach(fn: (stat: Stat) => void): void {\n for (const key in this.stats) {\n fn(this.stats[key]);\n }\n }\n\n getTable(): Record<\n string,\n {\n time: number;\n count: number;\n average: number;\n hz: number;\n }\n > {\n const table = {};\n this.forEach(stat => {\n table[stat.name] = {\n time: stat.time || 0,\n count: stat.count || 0,\n average: stat.getAverageTime() || 0,\n hz: stat.getHz() || 0\n };\n });\n\n return table;\n }\n\n _initializeStats(stats: Stats | Stat[] | {name: string; type?: string}[] = []): void {\n stats.forEach(stat => this._getOrCreate(stat));\n }\n\n _getOrCreate(stat): Stat {\n if (!stat || !stat.name) {\n return null;\n }\n\n const {name, type} = stat;\n if (!this.stats[name]) {\n if (stat instanceof Stat) {\n this.stats[name] = stat;\n } else {\n this.stats[name] = new Stat(name, type);\n }\n }\n return this.stats[name];\n }\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport getHiResTimestamp from '../utils/hi-res-timestamp';\nexport default class Stat {\n constructor(name, type) {\n _defineProperty(this, \"name\", void 0);\n\n _defineProperty(this, \"type\", void 0);\n\n _defineProperty(this, \"sampleSize\", 1);\n\n _defineProperty(this, \"time\", void 0);\n\n _defineProperty(this, \"count\", void 0);\n\n _defineProperty(this, \"samples\", void 0);\n\n _defineProperty(this, \"lastTiming\", void 0);\n\n _defineProperty(this, \"lastSampleTime\", void 0);\n\n _defineProperty(this, \"lastSampleCount\", void 0);\n\n _defineProperty(this, \"_count\", 0);\n\n _defineProperty(this, \"_time\", 0);\n\n _defineProperty(this, \"_samples\", 0);\n\n _defineProperty(this, \"_startTime\", 0);\n\n _defineProperty(this, \"_timerPending\", false);\n\n this.name = name;\n this.type = type;\n this.reset();\n }\n\n setSampleSize(samples) {\n this.sampleSize = samples;\n return this;\n }\n\n incrementCount() {\n this.addCount(1);\n return this;\n }\n\n decrementCount() {\n this.subtractCount(1);\n return this;\n }\n\n addCount(value) {\n this._count += value;\n this._samples++;\n\n this._checkSampling();\n\n return this;\n }\n\n subtractCount(value) {\n this._count -= value;\n this._samples++;\n\n this._checkSampling();\n\n return this;\n }\n\n addTime(time) {\n this._time += time;\n this.lastTiming = time;\n this._samples++;\n\n this._checkSampling();\n\n return this;\n }\n\n timeStart() {\n this._startTime = getHiResTimestamp();\n this._timerPending = true;\n return this;\n }\n\n timeEnd() {\n if (!this._timerPending) {\n return this;\n }\n\n this.addTime(getHiResTimestamp() - this._startTime);\n this._timerPending = false;\n\n this._checkSampling();\n\n return this;\n }\n\n getSampleAverageCount() {\n return this.sampleSize > 0 ? this.lastSampleCount / this.sampleSize : 0;\n }\n\n getSampleAverageTime() {\n return this.sampleSize > 0 ? this.lastSampleTime / this.sampleSize : 0;\n }\n\n getSampleHz() {\n return this.lastSampleTime > 0 ? this.sampleSize / (this.lastSampleTime / 1000) : 0;\n }\n\n getAverageCount() {\n return this.samples > 0 ? this.count / this.samples : 0;\n }\n\n getAverageTime() {\n return this.samples > 0 ? this.time / this.samples : 0;\n }\n\n getHz() {\n return this.time > 0 ? this.samples / (this.time / 1000) : 0;\n }\n\n reset() {\n this.time = 0;\n this.count = 0;\n this.samples = 0;\n this.lastTiming = 0;\n this.lastSampleTime = 0;\n this.lastSampleCount = 0;\n this._count = 0;\n this._time = 0;\n this._samples = 0;\n this._startTime = 0;\n this._timerPending = false;\n return this;\n }\n\n _checkSampling() {\n if (this._samples === this.sampleSize) {\n this.lastSampleTime = this._time;\n this.lastSampleCount = this._count;\n this.count += this._count;\n this.time += this._time;\n this.samples += this._samples;\n this._time = 0;\n this._count = 0;\n this._samples = 0;\n }\n }\n\n}\n//# sourceMappingURL=stat.js.map","import getHiResTimestamp from '../utils/hi-res-timestamp';\n\nexport default class Stat {\n readonly name: string;\n readonly type: string;\n sampleSize: number = 1;\n time: number;\n count: number;\n samples: number;\n lastTiming: number;\n lastSampleTime: number;\n lastSampleCount: number;\n\n _count: number = 0;\n _time: number = 0;\n _samples: number = 0;\n _startTime: number = 0;\n _timerPending: boolean = false;\n\n constructor(name: string, type?: string) {\n this.name = name;\n this.type = type;\n this.reset();\n }\n\n setSampleSize(samples: number): this {\n this.sampleSize = samples;\n return this;\n }\n\n /** Call to increment count (+1) */\n incrementCount(): this {\n this.addCount(1);\n\n return this;\n }\n\n /** Call to decrement count (-1) */\n decrementCount(): this {\n this.subtractCount(1);\n\n return this;\n }\n\n /** Increase count */\n addCount(value: number): this {\n this._count += value;\n this._samples++;\n this._checkSampling();\n\n return this;\n }\n\n /** Decrease count */\n subtractCount(value: number): this {\n this._count -= value;\n this._samples++;\n this._checkSampling();\n\n return this;\n }\n\n /** Add an arbitrary timing and bump the count */\n addTime(time: number): this {\n this._time += time;\n this.lastTiming = time;\n this._samples++;\n this._checkSampling();\n\n return this;\n }\n\n /** Start a timer */\n timeStart(): this {\n this._startTime = getHiResTimestamp();\n this._timerPending = true;\n\n return this;\n }\n\n /** End a timer. Adds to time and bumps the timing count. */\n timeEnd(): this {\n if (!this._timerPending) {\n return this;\n }\n this.addTime(getHiResTimestamp() - this._startTime);\n this._timerPending = false;\n this._checkSampling();\n\n return this;\n }\n\n getSampleAverageCount(): number {\n return this.sampleSize > 0 ? this.lastSampleCount / this.sampleSize : 0;\n }\n\n /** Calculate average time / count for the previous window */\n getSampleAverageTime(): number {\n return this.sampleSize > 0 ? this.lastSampleTime / this.sampleSize : 0;\n }\n\n /** Calculate counts per second for the previous window */\n getSampleHz(): number {\n return this.lastSampleTime > 0 ? this.sampleSize / (this.lastSampleTime / 1000) : 0;\n }\n\n getAverageCount(): number {\n return this.samples > 0 ? this.count / this.samples : 0;\n }\n\n /** Calculate average time / count */\n getAverageTime(): number {\n return this.samples > 0 ? this.time / this.samples : 0;\n }\n\n /** Calculate counts per second */\n getHz(): number {\n return this.time > 0 ? this.samples / (this.time / 1000) : 0;\n }\n\n reset(): this {\n this.time = 0;\n this.count = 0;\n this.samples = 0;\n this.lastTiming = 0;\n this.lastSampleTime = 0;\n this.lastSampleCount = 0;\n this._count = 0;\n this._time = 0;\n this._samples = 0;\n this._startTime = 0;\n this._timerPending = false;\n\n return this;\n }\n\n _checkSampling(): void {\n if (this._samples === this.sampleSize) {\n this.lastSampleTime = this._time;\n this.lastSampleCount = this._count;\n this.count += this._count;\n this.time += this._time;\n this.samples += this._samples;\n this._time = 0;\n this._count = 0;\n this._samples = 0;\n }\n }\n}\n","export default function getHiResTimestamp() {\n let timestamp;\n\n if (typeof window !== 'undefined' && window.performance) {\n timestamp = window.performance.now();\n } else if (typeof process !== 'undefined' && process.hrtime) {\n const timeParts = process.hrtime();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else {\n timestamp = Date.now();\n }\n\n return timestamp;\n}\n//# sourceMappingURL=hi-res-timestamp.js.map","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default function getHiResTimestamp(): number {\n let timestamp;\n // Get best timer available.\n if (typeof window !== 'undefined' && window.performance) {\n timestamp = window.performance.now();\n } else if (typeof process !== 'undefined' && process.hrtime) {\n const timeParts = process.hrtime();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else {\n timestamp = Date.now();\n }\n\n return timestamp;\n}\n","import { assert } from '../utils/assert';\nexport function getKeyValue(gl, name) {\n if (typeof name !== 'string') {\n return name;\n }\n\n const number = Number(name);\n\n if (!isNaN(number)) {\n return number;\n }\n\n name = name.replace(/^.*\\./, '');\n const value = gl[name];\n assert(value !== undefined, \"Accessing undefined constant GL.\".concat(name));\n return value;\n}\nexport function getKey(gl, value) {\n value = Number(value);\n\n for (const key in gl) {\n if (gl[key] === value) {\n return \"GL.\".concat(key);\n }\n }\n\n return String(value);\n}\nexport function getKeyType(gl, value) {\n assert(value !== undefined, 'undefined key');\n value = Number(value);\n\n for (const key in gl) {\n if (gl[key] === value) {\n return \"GL.\".concat(key);\n }\n }\n\n return String(value);\n}\n//# sourceMappingURL=constants-to-keys.js.map","import {assert} from '../utils/assert';\n\n// Resolve a WebGL enumeration name (returns itself if already a number)\nexport function getKeyValue(gl, name) {\n // If not a string, return (assume number)\n if (typeof name !== 'string') {\n return name;\n }\n\n // If string converts to number, return number\n const number = Number(name);\n if (!isNaN(number)) {\n return number;\n }\n\n // Look up string, after removing any 'GL.' or 'gl.' prefix\n name = name.replace(/^.*\\./, '');\n const value = gl[name];\n assert(value !== undefined, `Accessing undefined constant GL.${name}`);\n return value;\n}\n\nexport function getKey(gl, value) {\n value = Number(value);\n for (const key in gl) {\n if (gl[key] === value) {\n return `GL.${key}`;\n }\n }\n return String(value);\n}\n\nexport function getKeyType(gl, value) {\n assert(value !== undefined, 'undefined key');\n value = Number(value);\n for (const key in gl) {\n if (gl[key] === value) {\n return `GL.${key}`;\n }\n }\n return String(value);\n}\n","export function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'luma.gl: assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map","// Recommendation is to ignore message but current test suite checks agains the\n// message so keep it for now.\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'luma.gl: assertion failed.');\n }\n}\n","import { assert } from './assert';\nconst uidCounters = {};\nexport function uid() {\n let id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'id';\n uidCounters[id] = uidCounters[id] || 1;\n const count = uidCounters[id]++;\n return \"\".concat(id, \"-\").concat(count);\n}\nexport function isPowerOfTwo(n) {\n assert(typeof n === 'number', 'Input must be a number');\n return n && (n & n - 1) === 0;\n}\nexport function isObjectEmpty(obj) {\n let isEmpty = true;\n\n for (const key in obj) {\n isEmpty = false;\n break;\n }\n\n return isEmpty;\n}\n//# sourceMappingURL=utils.js.map","import {assert} from './assert';\n\nconst uidCounters = {};\n\n/**\n * Returns a UID.\n * @param {string} id= - Identifier base name\n * @return {string} uid\n **/\nexport function uid(id = 'id') {\n uidCounters[id] = uidCounters[id] || 1;\n const count = uidCounters[id]++;\n return `${id}-${count}`;\n}\n\n/**\n * Verifies if a given number is power of two or not.\n * @param {object} n - The number to check.\n * @return {boolean} Returns true if the given number is power of 2, false otherwise.\n **/\nexport function isPowerOfTwo(n) {\n assert(typeof n === 'number', 'Input must be a number');\n return n && (n & (n - 1)) === 0;\n}\n\n// Returns true if given object is empty, false otherwise.\nexport function isObjectEmpty(obj) {\n let isEmpty = true;\n /* eslint-disable no-unused-vars */\n for (const key in obj) {\n isEmpty = false;\n break;\n }\n /* eslint-enable no-unused-vars */\n return isEmpty;\n}\n","import { log } from '@luma.gl/gltools';\nexport function stubRemovedMethods(instance, className, version, methodNames) {\n const upgradeMessage = \"See luma.gl \".concat(version, \" Upgrade Guide at https://luma.gl/docs/upgrade-guide\");\n const prototype = Object.getPrototypeOf(instance);\n methodNames.forEach(methodName => {\n if (prototype.methodName) {\n return;\n }\n\n prototype[methodName] = () => {\n log.removed(\"Calling removed method \".concat(className, \".\").concat(methodName, \": \"), upgradeMessage)();\n throw new Error(methodName);\n };\n });\n}\n//# sourceMappingURL=stub-methods.js.map","import {log} from '@luma.gl/gltools';\n\n// Install stubs for removed methods\nexport function stubRemovedMethods(instance, className, version, methodNames) {\n const upgradeMessage = `See luma.gl ${version} Upgrade Guide at \\\nhttps://luma.gl/docs/upgrade-guide`;\n\n const prototype = Object.getPrototypeOf(instance);\n\n methodNames.forEach(methodName => {\n if (prototype.methodName) {\n return;\n }\n\n prototype[methodName] = () => {\n log.removed(`Calling removed method ${className}.${methodName}: `, upgradeMessage)();\n throw new Error(methodName);\n };\n });\n}\n","import { getTypedArrayFromGLType } from '../webgl-utils/typed-array-utils';\nimport { assert } from '../utils/assert';\nimport { checkProps } from '../utils/check-props';\nconst DEFAULT_ACCESSOR_VALUES = {\n offset: 0,\n stride: 0,\n type: 5126,\n size: 1,\n divisor: 0,\n normalized: false,\n integer: false\n};\nconst PROP_CHECKS = {\n deprecatedProps: {\n instanced: 'divisor',\n isInstanced: 'divisor'\n }\n};\nexport default class Accessor {\n static getBytesPerElement(accessor) {\n const ArrayType = getTypedArrayFromGLType(accessor.type || 5126);\n return ArrayType.BYTES_PER_ELEMENT;\n }\n\n static getBytesPerVertex(accessor) {\n assert(accessor.size);\n const ArrayType = getTypedArrayFromGLType(accessor.type || 5126);\n return ArrayType.BYTES_PER_ELEMENT * accessor.size;\n }\n\n static resolve() {\n for (var _len = arguments.length, accessors = new Array(_len), _key = 0; _key < _len; _key++) {\n accessors[_key] = arguments[_key];\n }\n\n return new Accessor(...[DEFAULT_ACCESSOR_VALUES, ...accessors]);\n }\n\n constructor() {\n for (var _len2 = arguments.length, accessors = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n accessors[_key2] = arguments[_key2];\n }\n\n accessors.forEach(accessor => this._assign(accessor));\n Object.freeze(this);\n }\n\n toString() {\n return JSON.stringify(this);\n }\n\n get BYTES_PER_ELEMENT() {\n return Accessor.getBytesPerElement(this);\n }\n\n get BYTES_PER_VERTEX() {\n return Accessor.getBytesPerVertex(this);\n }\n\n _assign() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n props = checkProps('Accessor', props, PROP_CHECKS);\n\n if (props.type !== undefined) {\n this.type = props.type;\n\n if (props.type === 5124 || props.type === 5125) {\n this.integer = true;\n }\n }\n\n if (props.size !== undefined) {\n this.size = props.size;\n }\n\n if (props.offset !== undefined) {\n this.offset = props.offset;\n }\n\n if (props.stride !== undefined) {\n this.stride = props.stride;\n }\n\n if (props.normalized !== undefined) {\n this.normalized = props.normalized;\n }\n\n if (props.integer !== undefined) {\n this.integer = props.integer;\n }\n\n if (props.divisor !== undefined) {\n this.divisor = props.divisor;\n }\n\n if (props.buffer !== undefined) {\n this.buffer = props.buffer;\n }\n\n if (props.index !== undefined) {\n if (typeof props.index === 'boolean') {\n this.index = props.index ? 1 : 0;\n } else {\n this.index = props.index;\n }\n }\n\n if (props.instanced !== undefined) {\n this.divisor = props.instanced ? 1 : 0;\n }\n\n if (props.isInstanced !== undefined) {\n this.divisor = props.isInstanced ? 1 : 0;\n }\n\n return this;\n }\n\n}\nexport { DEFAULT_ACCESSOR_VALUES };\n//# sourceMappingURL=accessor.js.map","import GL from '@luma.gl/constants';\nimport {getTypedArrayFromGLType} from '../webgl-utils/typed-array-utils';\nimport {assert} from '../utils/assert';\nimport {checkProps} from '../utils/check-props';\n\nconst DEFAULT_ACCESSOR_VALUES = {\n offset: 0,\n stride: 0,\n type: GL.FLOAT,\n size: 1,\n divisor: 0,\n normalized: false,\n integer: false\n};\n\nconst PROP_CHECKS = {\n deprecatedProps: {\n instanced: 'divisor',\n isInstanced: 'divisor'\n }\n};\n\nexport default class Accessor {\n static getBytesPerElement(accessor) {\n // TODO: using `FLOAT` when type is not specified,\n // ensure this assumption is valid or force API to specify type.\n const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);\n return ArrayType.BYTES_PER_ELEMENT;\n }\n\n static getBytesPerVertex(accessor) {\n assert(accessor.size);\n // TODO: using `FLOAT` when type is not specified,\n // ensure this assumption is valid or force API to specify type.\n const ArrayType = getTypedArrayFromGLType(accessor.type || GL.FLOAT);\n return ArrayType.BYTES_PER_ELEMENT * accessor.size;\n }\n\n // Combines (merges) a list of accessors. On top of default values\n // Usually [programAccessor, bufferAccessor, appAccessor]\n // All props will be set in the returned object.\n // TODO check for conflicts between values in the supplied accessors\n static resolve(...accessors) {\n return new Accessor(...[DEFAULT_ACCESSOR_VALUES, ...accessors]); // Default values\n }\n\n constructor(...accessors) {\n accessors.forEach(accessor => this._assign(accessor)); // Merge in sequence\n Object.freeze(this);\n }\n\n toString() {\n return JSON.stringify(this);\n }\n\n // ACCESSORS\n\n // TODO - remove>\n get BYTES_PER_ELEMENT() {\n return Accessor.getBytesPerElement(this);\n }\n\n get BYTES_PER_VERTEX() {\n return Accessor.getBytesPerVertex(this);\n }\n\n // PRIVATE\n\n // eslint-disable-next-line complexity, max-statements\n _assign(props = {}) {\n props = checkProps('Accessor', props, PROP_CHECKS);\n\n if (props.type !== undefined) {\n this.type = props.type;\n\n // Auto-deduce integer type?\n if (props.type === GL.INT || props.type === GL.UNSIGNED_INT) {\n this.integer = true;\n }\n }\n if (props.size !== undefined) {\n this.size = props.size;\n }\n if (props.offset !== undefined) {\n this.offset = props.offset;\n }\n if (props.stride !== undefined) {\n this.stride = props.stride;\n }\n if (props.normalized !== undefined) {\n this.normalized = props.normalized;\n }\n if (props.integer !== undefined) {\n this.integer = props.integer;\n }\n\n // INSTANCE DIVISOR\n if (props.divisor !== undefined) {\n this.divisor = props.divisor;\n }\n\n // Buffer is optional\n if (props.buffer !== undefined) {\n this.buffer = props.buffer;\n }\n\n // The binding index (for binding e.g. Transform feedbacks and Uniform buffers)\n // TODO - should this be part of accessor?\n if (props.index !== undefined) {\n if (typeof props.index === 'boolean') {\n this.index = props.index ? 1 : 0;\n } else {\n this.index = props.index;\n }\n }\n\n // DEPRECATED\n if (props.instanced !== undefined) {\n this.divisor = props.instanced ? 1 : 0;\n }\n if (props.isInstanced !== undefined) {\n this.divisor = props.isInstanced ? 1 : 0;\n }\n\n return this;\n }\n}\n\n// TEST EXPORTS\nexport {DEFAULT_ACCESSOR_VALUES};\n","const ERR_TYPE_DEDUCTION = 'Failed to deduce GL constant from typed array';\nexport function getGLTypeFromTypedArray(arrayOrType) {\n const type = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;\n\n switch (type) {\n case Float32Array:\n return 5126;\n\n case Uint16Array:\n return 5123;\n\n case Uint32Array:\n return 5125;\n\n case Uint8Array:\n return 5121;\n\n case Uint8ClampedArray:\n return 5121;\n\n case Int8Array:\n return 5120;\n\n case Int16Array:\n return 5122;\n\n case Int32Array:\n return 5124;\n\n default:\n throw new Error(ERR_TYPE_DEDUCTION);\n }\n}\nexport function getTypedArrayFromGLType(glType) {\n let {\n clamped = true\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n switch (glType) {\n case 5126:\n return Float32Array;\n\n case 5123:\n case 33635:\n case 32819:\n case 32820:\n return Uint16Array;\n\n case 5125:\n return Uint32Array;\n\n case 5121:\n return clamped ? Uint8ClampedArray : Uint8Array;\n\n case 5120:\n return Int8Array;\n\n case 5122:\n return Int16Array;\n\n case 5124:\n return Int32Array;\n\n default:\n throw new Error('Failed to deduce typed array type from GL constant');\n }\n}\nexport function flipRows(_ref) {\n let {\n data,\n width,\n height,\n bytesPerPixel = 4,\n temp\n } = _ref;\n const bytesPerRow = width * bytesPerPixel;\n temp = temp || new Uint8Array(bytesPerRow);\n\n for (let y = 0; y < height / 2; ++y) {\n const topOffset = y * bytesPerRow;\n const bottomOffset = (height - y - 1) * bytesPerRow;\n temp.set(data.subarray(topOffset, topOffset + bytesPerRow));\n data.copyWithin(topOffset, bottomOffset, bottomOffset + bytesPerRow);\n data.set(temp, bottomOffset);\n }\n}\nexport function scalePixels(_ref2) {\n let {\n data,\n width,\n height\n } = _ref2;\n const newWidth = Math.round(width / 2);\n const newHeight = Math.round(height / 2);\n const newData = new Uint8Array(newWidth * newHeight * 4);\n\n for (let y = 0; y < newHeight; y++) {\n for (let x = 0; x < newWidth; x++) {\n for (let c = 0; c < 4; c++) {\n newData[(y * newWidth + x) * 4 + c] = data[(y * 2 * width + x * 2) * 4 + c];\n }\n }\n }\n\n return {\n data: newData,\n width: newWidth,\n height: newHeight\n };\n}\n//# sourceMappingURL=typed-array-utils.js.map","import GL from '@luma.gl/constants';\n\nconst ERR_TYPE_DEDUCTION = 'Failed to deduce GL constant from typed array';\n\n// Converts TYPED ARRAYS to corresponding GL constant\n// Used to auto deduce gl parameter types\nexport function getGLTypeFromTypedArray(arrayOrType) {\n // If typed array, look up constructor\n const type = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;\n switch (type) {\n case Float32Array:\n return GL.FLOAT;\n case Uint16Array:\n return GL.UNSIGNED_SHORT;\n case Uint32Array:\n return GL.UNSIGNED_INT;\n case Uint8Array:\n return GL.UNSIGNED_BYTE;\n case Uint8ClampedArray:\n return GL.UNSIGNED_BYTE;\n case Int8Array:\n return GL.BYTE;\n case Int16Array:\n return GL.SHORT;\n case Int32Array:\n return GL.INT;\n default:\n throw new Error(ERR_TYPE_DEDUCTION);\n }\n}\n\n// Converts GL constant to corresponding TYPED ARRAY\n// Used to auto deduce gl parameter types\n\n/* eslint-disable complexity */\nexport function getTypedArrayFromGLType(glType, {clamped = true} = {}) {\n // Sorted in some order of likelihood to reduce amount of comparisons\n switch (glType) {\n case GL.FLOAT:\n return Float32Array;\n case GL.UNSIGNED_SHORT:\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return Uint16Array;\n case GL.UNSIGNED_INT:\n return Uint32Array;\n case GL.UNSIGNED_BYTE:\n return clamped ? Uint8ClampedArray : Uint8Array;\n case GL.BYTE:\n return Int8Array;\n case GL.SHORT:\n return Int16Array;\n case GL.INT:\n return Int32Array;\n default:\n throw new Error('Failed to deduce typed array type from GL constant');\n }\n}\n/* eslint-enable complexity */\n\n// Flip rows (can be used on arrays returned from `Framebuffer.readPixels`)\n// https://stackoverflow.com/questions/41969562/\n// how-can-i-flip-the-result-of-webglrenderingcontext-readpixels\nexport function flipRows({data, width, height, bytesPerPixel = 4, temp}) {\n const bytesPerRow = width * bytesPerPixel;\n\n // make a temp buffer to hold one row\n temp = temp || new Uint8Array(bytesPerRow);\n for (let y = 0; y < height / 2; ++y) {\n const topOffset = y * bytesPerRow;\n const bottomOffset = (height - y - 1) * bytesPerRow;\n // make copy of a row on the top half\n temp.set(data.subarray(topOffset, topOffset + bytesPerRow));\n // copy a row from the bottom half to the top\n data.copyWithin(topOffset, bottomOffset, bottomOffset + bytesPerRow);\n // copy the copy of the top half row to the bottom half\n data.set(temp, bottomOffset);\n }\n}\n\nexport function scalePixels({data, width, height}) {\n const newWidth = Math.round(width / 2);\n const newHeight = Math.round(height / 2);\n const newData = new Uint8Array(newWidth * newHeight * 4);\n for (let y = 0; y < newHeight; y++) {\n for (let x = 0; x < newWidth; x++) {\n for (let c = 0; c < 4; c++) {\n newData[(y * newWidth + x) * 4 + c] = data[(y * 2 * width + x * 2) * 4 + c];\n }\n }\n }\n return {data: newData, width: newWidth, height: newHeight};\n}\n","import { log } from '@luma.gl/gltools';\nexport function checkProps(className, props, propChecks) {\n const {\n removedProps = {},\n deprecatedProps = {},\n replacedProps = {}\n } = propChecks;\n\n for (const propName in removedProps) {\n if (propName in props) {\n const replacementProp = removedProps[propName];\n const replacement = replacementProp ? \"\".concat(className, \".\").concat(removedProps[propName]) : 'N/A';\n log.removed(\"\".concat(className, \".\").concat(propName), replacement)();\n }\n }\n\n for (const propName in deprecatedProps) {\n if (propName in props) {\n const replacementProp = deprecatedProps[propName];\n log.deprecated(\"\".concat(className, \".\").concat(propName), \"\".concat(className, \".\").concat(replacementProp))();\n }\n }\n\n let newProps = null;\n\n for (const propName in replacedProps) {\n if (propName in props) {\n const replacementProp = replacedProps[propName];\n log.deprecated(\"\".concat(className, \".\").concat(propName), \"\".concat(className, \".\").concat(replacementProp))();\n newProps = newProps || Object.assign({}, props);\n newProps[replacementProp] = props[propName];\n delete newProps[propName];\n }\n }\n\n return newProps || props;\n}\n//# sourceMappingURL=check-props.js.map","/* Use as\nimport {checkProps} from '../util/check-props;'\n\nconst PROP_CHECKS = {\n // Removed props no longer supported, print error and link to upgrade guide\n removedProps: {\n },\n // Deprecated props\n deprecatedProps: {\n offset: 'accessor',\n stride: 'accessor',\n type: 'accessor',\n size: 'accessor',\n divisor: 'accessor',\n normalized: 'accessor',\n integer: 'accessor'\n },\n // Deprecated props that can be autosubstituted, print warning and return updated props object\n replacedProps: {\n bytes: 'byteLength'\n }\n}\n\nclass Buffer {\n setProps(props) {\n checkProps('Buffer', props, PROP_CHECKS);\n }\n}\n*/\nimport {log} from '@luma.gl/gltools';\n\nexport function checkProps(className, props, propChecks) {\n const {removedProps = {}, deprecatedProps = {}, replacedProps = {}} = propChecks;\n\n // removedProps: Removed props no longer supported\n // print error and link to upgrade guide\n for (const propName in removedProps) {\n if (propName in props) {\n const replacementProp = removedProps[propName];\n const replacement = replacementProp ? `${className}.${removedProps[propName]}` : 'N/A';\n log.removed(`${className}.${propName}`, replacement)();\n }\n }\n\n // deprecatedProps: Deprecated props that can not be autosubstituted\n // print warning and rely on caller to substitute\n for (const propName in deprecatedProps) {\n if (propName in props) {\n const replacementProp = deprecatedProps[propName];\n log.deprecated(`${className}.${propName}`, `${className}.${replacementProp}`)();\n }\n }\n\n // replacedProps: Deprecated props that can be autosubstituted\n // print warning and return updated props object\n let newProps = null;\n for (const propName in replacedProps) {\n if (propName in props) {\n const replacementProp = replacedProps[propName];\n log.deprecated(`${className}.${propName}`, `${className}.${replacementProp}`)();\n newProps = newProps || Object.assign({}, props);\n newProps[replacementProp] = props[propName];\n delete newProps[propName];\n }\n }\n\n return newProps || props;\n}\n","import Framebuffer from '../classes/framebuffer';\nimport Texture2D from '../classes/texture-2d';\nexport const FEATURES = {\n WEBGL2: 'WEBGL2',\n VERTEX_ARRAY_OBJECT: 'VERTEX_ARRAY_OBJECT',\n TIMER_QUERY: 'TIMER_QUERY',\n INSTANCED_RENDERING: 'INSTANCED_RENDERING',\n MULTIPLE_RENDER_TARGETS: 'MULTIPLE_RENDER_TARGETS',\n ELEMENT_INDEX_UINT32: 'ELEMENT_INDEX_UINT32',\n BLEND_EQUATION_MINMAX: 'BLEND_EQUATION_MINMAX',\n FLOAT_BLEND: 'FLOAT_BLEND',\n COLOR_ENCODING_SRGB: 'COLOR_ENCODING_SRGB',\n TEXTURE_DEPTH: 'TEXTURE_DEPTH',\n TEXTURE_FLOAT: 'TEXTURE_FLOAT',\n TEXTURE_HALF_FLOAT: 'TEXTURE_HALF_FLOAT',\n TEXTURE_FILTER_LINEAR_FLOAT: 'TEXTURE_FILTER_LINEAR_FLOAT',\n TEXTURE_FILTER_LINEAR_HALF_FLOAT: 'TEXTURE_FILTER_LINEAR_HALF_FLOAT',\n TEXTURE_FILTER_ANISOTROPIC: 'TEXTURE_FILTER_ANISOTROPIC',\n COLOR_ATTACHMENT_RGBA32F: 'COLOR_ATTACHMENT_RGBA32F',\n COLOR_ATTACHMENT_FLOAT: 'COLOR_ATTACHMENT_FLOAT',\n COLOR_ATTACHMENT_HALF_FLOAT: 'COLOR_ATTACHMENT_HALF_FLOAT',\n GLSL_FRAG_DATA: 'GLSL_FRAG_DATA',\n GLSL_FRAG_DEPTH: 'GLSL_FRAG_DEPTH',\n GLSL_DERIVATIVES: 'GLSL_DERIVATIVES',\n GLSL_TEXTURE_LOD: 'GLSL_TEXTURE_LOD'\n};\n\nfunction checkFloat32ColorAttachment(gl) {\n const testTexture = new Texture2D(gl, {\n format: 6408,\n type: 5126,\n dataFormat: 6408\n });\n const testFb = new Framebuffer(gl, {\n id: \"test-framebuffer\",\n check: false,\n attachments: {\n [36064]: testTexture\n }\n });\n const status = testFb.getStatus();\n testTexture.delete();\n testFb.delete();\n return status === 36053;\n}\n\nexport default {\n [FEATURES.WEBGL2]: [false, true],\n [FEATURES.VERTEX_ARRAY_OBJECT]: ['OES_vertex_array_object', true],\n [FEATURES.TIMER_QUERY]: ['EXT_disjoint_timer_query', 'EXT_disjoint_timer_query_webgl2'],\n [FEATURES.INSTANCED_RENDERING]: ['ANGLE_instanced_arrays', true],\n [FEATURES.MULTIPLE_RENDER_TARGETS]: ['WEBGL_draw_buffers', true],\n [FEATURES.ELEMENT_INDEX_UINT32]: ['OES_element_index_uint', true],\n [FEATURES.BLEND_EQUATION_MINMAX]: ['EXT_blend_minmax', true],\n [FEATURES.FLOAT_BLEND]: ['EXT_float_blend'],\n [FEATURES.COLOR_ENCODING_SRGB]: ['EXT_sRGB', true],\n [FEATURES.TEXTURE_DEPTH]: ['WEBGL_depth_texture', true],\n [FEATURES.TEXTURE_FLOAT]: ['OES_texture_float', true],\n [FEATURES.TEXTURE_HALF_FLOAT]: ['OES_texture_half_float', true],\n [FEATURES.TEXTURE_FILTER_LINEAR_FLOAT]: ['OES_texture_float_linear'],\n [FEATURES.TEXTURE_FILTER_LINEAR_HALF_FLOAT]: ['OES_texture_half_float_linear'],\n [FEATURES.TEXTURE_FILTER_ANISOTROPIC]: ['EXT_texture_filter_anisotropic'],\n [FEATURES.COLOR_ATTACHMENT_RGBA32F]: [checkFloat32ColorAttachment, 'EXT_color_buffer_float'],\n [FEATURES.COLOR_ATTACHMENT_FLOAT]: [false, 'EXT_color_buffer_float'],\n [FEATURES.COLOR_ATTACHMENT_HALF_FLOAT]: ['EXT_color_buffer_half_float'],\n [FEATURES.GLSL_FRAG_DATA]: ['WEBGL_draw_buffers', true],\n [FEATURES.GLSL_FRAG_DEPTH]: ['EXT_frag_depth', true],\n [FEATURES.GLSL_DERIVATIVES]: ['OES_standard_derivatives', true],\n [FEATURES.GLSL_TEXTURE_LOD]: ['EXT_shader_texture_lod', true]\n};\n//# sourceMappingURL=webgl-features-table.js.map","import Framebuffer from '../classes/framebuffer';\nimport Texture2D from '../classes/texture-2d';\n// TODO - this should be the default export, test cases need updating\nexport const FEATURES = {\n WEBGL2: 'WEBGL2',\n\n // API SUPPORT\n VERTEX_ARRAY_OBJECT: 'VERTEX_ARRAY_OBJECT',\n TIMER_QUERY: 'TIMER_QUERY',\n INSTANCED_RENDERING: 'INSTANCED_RENDERING',\n MULTIPLE_RENDER_TARGETS: 'MULTIPLE_RENDER_TARGETS',\n\n // FEATURES\n ELEMENT_INDEX_UINT32: 'ELEMENT_INDEX_UINT32',\n\n // BLENDING\n BLEND_EQUATION_MINMAX: 'BLEND_EQUATION_MINMAX',\n FLOAT_BLEND: 'FLOAT_BLEND',\n\n // TEXTURES: '// TEXTURES', RENDERBUFFERS\n COLOR_ENCODING_SRGB: 'COLOR_ENCODING_SRGB',\n\n // TEXTURES\n TEXTURE_DEPTH: 'TEXTURE_DEPTH',\n TEXTURE_FLOAT: 'TEXTURE_FLOAT',\n TEXTURE_HALF_FLOAT: 'TEXTURE_HALF_FLOAT',\n\n TEXTURE_FILTER_LINEAR_FLOAT: 'TEXTURE_FILTER_LINEAR_FLOAT',\n TEXTURE_FILTER_LINEAR_HALF_FLOAT: 'TEXTURE_FILTER_LINEAR_HALF_FLOAT',\n TEXTURE_FILTER_ANISOTROPIC: 'TEXTURE_FILTER_ANISOTROPIC',\n\n // FRAMEBUFFERS: '// FRAMEBUFFERS', TEXTURES AND RENDERBUFFERS\n COLOR_ATTACHMENT_RGBA32F: 'COLOR_ATTACHMENT_RGBA32F',\n COLOR_ATTACHMENT_FLOAT: 'COLOR_ATTACHMENT_FLOAT',\n COLOR_ATTACHMENT_HALF_FLOAT: 'COLOR_ATTACHMENT_HALF_FLOAT',\n\n // GLSL extensions\n GLSL_FRAG_DATA: 'GLSL_FRAG_DATA',\n GLSL_FRAG_DEPTH: 'GLSL_FRAG_DEPTH',\n GLSL_DERIVATIVES: 'GLSL_DERIVATIVES',\n GLSL_TEXTURE_LOD: 'GLSL_TEXTURE_LOD'\n};\n\n// function to test if Float 32 bit format texture can be bound as color attachment\nfunction checkFloat32ColorAttachment(gl) {\n const testTexture = new Texture2D(gl, {\n format: gl.RGBA,\n type: gl.FLOAT,\n dataFormat: gl.RGBA\n });\n const testFb = new Framebuffer(gl, {\n id: `test-framebuffer`,\n check: false,\n attachments: {\n [gl.COLOR_ATTACHMENT0]: testTexture\n }\n });\n const status = testFb.getStatus();\n testTexture.delete();\n testFb.delete();\n return status === gl.FRAMEBUFFER_COMPLETE;\n}\n\n// Defines luma.gl \"feature\" names and semantics\n// Format: 'feature-name: [WebGL1 support, WebGL2 support] / [WebGL1 and WebGL2 support]', when support is 'string' it is the name of the extension\nexport default {\n [FEATURES.WEBGL2]: [false, true],\n\n // API SUPPORT\n [FEATURES.VERTEX_ARRAY_OBJECT]: ['OES_vertex_array_object', true],\n [FEATURES.TIMER_QUERY]: ['EXT_disjoint_timer_query', 'EXT_disjoint_timer_query_webgl2'],\n [FEATURES.INSTANCED_RENDERING]: ['ANGLE_instanced_arrays', true],\n [FEATURES.MULTIPLE_RENDER_TARGETS]: ['WEBGL_draw_buffers', true],\n\n // FEATURES\n [FEATURES.ELEMENT_INDEX_UINT32]: ['OES_element_index_uint', true],\n\n // BLENDING\n [FEATURES.BLEND_EQUATION_MINMAX]: ['EXT_blend_minmax', true],\n [FEATURES.FLOAT_BLEND]: ['EXT_float_blend'],\n\n // TEXTURES, RENDERBUFFERS\n [FEATURES.COLOR_ENCODING_SRGB]: ['EXT_sRGB', true],\n\n // TEXTURES\n [FEATURES.TEXTURE_DEPTH]: ['WEBGL_depth_texture', true],\n [FEATURES.TEXTURE_FLOAT]: ['OES_texture_float', true],\n [FEATURES.TEXTURE_HALF_FLOAT]: ['OES_texture_half_float', true],\n\n [FEATURES.TEXTURE_FILTER_LINEAR_FLOAT]: ['OES_texture_float_linear'],\n [FEATURES.TEXTURE_FILTER_LINEAR_HALF_FLOAT]: ['OES_texture_half_float_linear'],\n [FEATURES.TEXTURE_FILTER_ANISOTROPIC]: ['EXT_texture_filter_anisotropic'],\n\n // FRAMEBUFFERS, TEXTURES AND RENDERBUFFERS\n [FEATURES.COLOR_ATTACHMENT_RGBA32F]: [checkFloat32ColorAttachment, 'EXT_color_buffer_float'],\n [FEATURES.COLOR_ATTACHMENT_FLOAT]: [false, 'EXT_color_buffer_float'],\n [FEATURES.COLOR_ATTACHMENT_HALF_FLOAT]: ['EXT_color_buffer_half_float'],\n\n // GLSL extensions\n [FEATURES.GLSL_FRAG_DATA]: ['WEBGL_draw_buffers', true],\n [FEATURES.GLSL_FRAG_DEPTH]: ['EXT_frag_depth', true],\n [FEATURES.GLSL_DERIVATIVES]: ['OES_standard_derivatives', true],\n [FEATURES.GLSL_TEXTURE_LOD]: ['EXT_shader_texture_lod', true]\n};\n","import { getWebGL2Context, assertWebGL2Context, log } from '@luma.gl/gltools';\nimport Resource from './resource';\nimport Texture2D from './texture-2d';\nimport Renderbuffer from './renderbuffer';\nimport { clear, clearBuffer } from './clear';\nimport { copyToDataUrl } from './copy-and-blit.js';\nimport { getFeatures } from '../features';\nimport { getKey } from '../webgl-utils/constants-to-keys';\nimport { assert } from '../utils/assert';\nconst ERR_MULTIPLE_RENDERTARGETS = 'Multiple render targets not supported';\nexport default class Framebuffer extends Resource {\n get [Symbol.toStringTag]() {\n return 'Framebuffer';\n }\n\n static isSupported(gl) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n colorBufferFloat,\n colorBufferHalfFloat\n } = options;\n let supported = true;\n\n if (colorBufferFloat) {\n supported = Boolean(gl.getExtension('EXT_color_buffer_float') || gl.getExtension('WEBGL_color_buffer_float') || gl.getExtension('OES_texture_float'));\n }\n\n if (colorBufferHalfFloat) {\n supported = supported && Boolean(gl.getExtension('EXT_color_buffer_float') || gl.getExtension('EXT_color_buffer_half_float'));\n }\n\n return supported;\n }\n\n static getDefaultFramebuffer(gl) {\n gl.luma = gl.luma || {};\n gl.luma.defaultFramebuffer = gl.luma.defaultFramebuffer || new Framebuffer(gl, {\n id: 'default-framebuffer',\n handle: null,\n attachments: {}\n });\n return gl.luma.defaultFramebuffer;\n }\n\n get MAX_COLOR_ATTACHMENTS() {\n const gl2 = assertWebGL2Context(this.gl);\n return gl2.getParameter(gl2.MAX_COLOR_ATTACHMENTS);\n }\n\n get MAX_DRAW_BUFFERS() {\n const gl2 = assertWebGL2Context(this.gl);\n return gl2.getParameter(gl2.MAX_DRAW_BUFFERS);\n }\n\n constructor(gl) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(gl, opts);\n this.width = null;\n this.height = null;\n this.attachments = {};\n this.readBuffer = 36064;\n this.drawBuffers = [36064];\n this.ownResources = [];\n this.initialize(opts);\n Object.seal(this);\n }\n\n get color() {\n return this.attachments[36064] || null;\n }\n\n get texture() {\n return this.attachments[36064] || null;\n }\n\n get depth() {\n return this.attachments[36096] || this.attachments[33306] || null;\n }\n\n get stencil() {\n return this.attachments[36128] || this.attachments[33306] || null;\n }\n\n initialize(_ref) {\n let {\n width = 1,\n height = 1,\n attachments = null,\n color = true,\n depth = true,\n stencil = false,\n check = true,\n readBuffer = undefined,\n drawBuffers = undefined\n } = _ref;\n assert(width >= 0 && height >= 0, 'Width and height need to be integers');\n this.width = width;\n this.height = height;\n\n if (attachments) {\n for (const attachment in attachments) {\n const target = attachments[attachment];\n const object = Array.isArray(target) ? target[0] : target;\n object.resize({\n width,\n height\n });\n }\n } else {\n attachments = this._createDefaultAttachments(color, depth, stencil, width, height);\n }\n\n this.update({\n clearAttachments: true,\n attachments,\n readBuffer,\n drawBuffers\n });\n\n if (attachments && check) {\n this.checkStatus();\n }\n }\n\n delete() {\n for (const resource of this.ownResources) {\n resource.delete();\n }\n\n super.delete();\n return this;\n }\n\n update(_ref2) {\n let {\n attachments = {},\n readBuffer,\n drawBuffers,\n clearAttachments = false,\n resizeAttachments = true\n } = _ref2;\n this.attach(attachments, {\n clearAttachments,\n resizeAttachments\n });\n const {\n gl\n } = this;\n const prevHandle = gl.bindFramebuffer(36160, this.handle);\n\n if (readBuffer) {\n this._setReadBuffer(readBuffer);\n }\n\n if (drawBuffers) {\n this._setDrawBuffers(drawBuffers);\n }\n\n gl.bindFramebuffer(36160, prevHandle || null);\n return this;\n }\n\n resize() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let {\n width,\n height\n } = options;\n\n if (this.handle === null) {\n assert(width === undefined && height === undefined);\n this.width = this.gl.drawingBufferWidth;\n this.height = this.gl.drawingBufferHeight;\n return this;\n }\n\n if (width === undefined) {\n width = this.gl.drawingBufferWidth;\n }\n\n if (height === undefined) {\n height = this.gl.drawingBufferHeight;\n }\n\n if (width !== this.width && height !== this.height) {\n log.log(2, \"Resizing framebuffer \".concat(this.id, \" to \").concat(width, \"x\").concat(height))();\n }\n\n for (const attachmentPoint in this.attachments) {\n this.attachments[attachmentPoint].resize({\n width,\n height\n });\n }\n\n this.width = width;\n this.height = height;\n return this;\n }\n\n attach(attachments) {\n let {\n clearAttachments = false,\n resizeAttachments = true\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const newAttachments = {};\n\n if (clearAttachments) {\n Object.keys(this.attachments).forEach(key => {\n newAttachments[key] = null;\n });\n }\n\n Object.assign(newAttachments, attachments);\n const prevHandle = this.gl.bindFramebuffer(36160, this.handle);\n\n for (const key in newAttachments) {\n assert(key !== undefined, 'Misspelled framebuffer binding point?');\n const attachment = Number(key);\n const descriptor = newAttachments[attachment];\n let object = descriptor;\n\n if (!object) {\n this._unattach(attachment);\n } else if (object instanceof Renderbuffer) {\n this._attachRenderbuffer({\n attachment,\n renderbuffer: object\n });\n } else if (Array.isArray(descriptor)) {\n const [texture, layer = 0, level = 0] = descriptor;\n object = texture;\n\n this._attachTexture({\n attachment,\n texture,\n layer,\n level\n });\n } else {\n this._attachTexture({\n attachment,\n texture: object,\n layer: 0,\n level: 0\n });\n }\n\n if (resizeAttachments && object) {\n object.resize({\n width: this.width,\n height: this.height\n });\n }\n }\n\n this.gl.bindFramebuffer(36160, prevHandle || null);\n Object.assign(this.attachments, attachments);\n Object.keys(this.attachments).filter(key => !this.attachments[key]).forEach(key => {\n delete this.attachments[key];\n });\n }\n\n checkStatus() {\n const {\n gl\n } = this;\n const status = this.getStatus();\n\n if (status !== 36053) {\n throw new Error(_getFrameBufferStatus(status));\n }\n\n return this;\n }\n\n getStatus() {\n const {\n gl\n } = this;\n const prevHandle = gl.bindFramebuffer(36160, this.handle);\n const status = gl.checkFramebufferStatus(36160);\n gl.bindFramebuffer(36160, prevHandle || null);\n return status;\n }\n\n clear() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n color,\n depth,\n stencil,\n drawBuffers = []\n } = options;\n const prevHandle = this.gl.bindFramebuffer(36160, this.handle);\n\n if (color || depth || stencil) {\n clear(this.gl, {\n color,\n depth,\n stencil\n });\n }\n\n drawBuffers.forEach((value, drawBuffer) => {\n clearBuffer(this.gl, {\n drawBuffer,\n value\n });\n });\n this.gl.bindFramebuffer(36160, prevHandle || null);\n return this;\n }\n\n readPixels() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n log.error('Framebuffer.readPixels() is no logner supported, use readPixelsToArray(framebuffer)')();\n return null;\n }\n\n readPixelsToBuffer() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n log.error('Framebuffer.readPixelsToBuffer()is no logner supported, use readPixelsToBuffer(framebuffer)')();\n return null;\n }\n\n copyToDataUrl() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n log.error('Framebuffer.copyToDataUrl() is no logner supported, use copyToDataUrl(framebuffer)')();\n return null;\n }\n\n copyToImage() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n log.error('Framebuffer.copyToImage() is no logner supported, use copyToImage(framebuffer)')();\n return null;\n }\n\n copyToTexture() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n log.error('Framebuffer.copyToTexture({...}) is no logner supported, use copyToTexture(source, target, opts})')();\n return null;\n }\n\n blit() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n log.error('Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)')();\n return null;\n }\n\n invalidate(_ref3) {\n let {\n attachments = [],\n x = 0,\n y = 0,\n width,\n height\n } = _ref3;\n const gl2 = assertWebGL2Context(this.gl);\n const prevHandle = gl2.bindFramebuffer(36008, this.handle);\n const invalidateAll = x === 0 && y === 0 && width === undefined && height === undefined;\n\n if (invalidateAll) {\n gl2.invalidateFramebuffer(36008, attachments);\n } else {\n gl2.invalidateFramebuffer(36008, attachments, x, y, width, height);\n }\n\n gl2.bindFramebuffer(36008, prevHandle);\n return this;\n }\n\n getAttachmentParameter(attachment, pname, keys) {\n let value = this._getAttachmentParameterFallback(pname);\n\n if (value === null) {\n this.gl.bindFramebuffer(36160, this.handle);\n value = this.gl.getFramebufferAttachmentParameter(36160, attachment, pname);\n this.gl.bindFramebuffer(36160, null);\n }\n\n if (keys && value > 1000) {\n value = getKey(this.gl, value);\n }\n\n return value;\n }\n\n getAttachmentParameters() {\n let attachment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 36064;\n let keys = arguments.length > 1 ? arguments[1] : undefined;\n let parameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.constructor.ATTACHMENT_PARAMETERS || [];\n const values = {};\n\n for (const pname of parameters) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getAttachmentParameter(attachment, pname, keys);\n }\n\n return values;\n }\n\n getParameters() {\n let keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n const attachments = Object.keys(this.attachments);\n const parameters = {};\n\n for (const attachmentName of attachments) {\n const attachment = Number(attachmentName);\n const key = keys ? getKey(this.gl, attachment) : attachment;\n parameters[key] = this.getAttachmentParameters(attachment, keys);\n }\n\n return parameters;\n }\n\n show() {\n if (typeof window !== 'undefined') {\n window.open(copyToDataUrl(this), 'luma-debug-texture');\n }\n\n return this;\n }\n\n log() {\n let logLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n if (logLevel > log.level || typeof window === 'undefined') {\n return this;\n }\n\n message = message || \"Framebuffer \".concat(this.id);\n const image = copyToDataUrl(this, {\n targetMaxHeight: 100\n });\n log.image({\n logLevel,\n message,\n image\n }, message)();\n return this;\n }\n\n bind() {\n let {\n target = 36160\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.gl.bindFramebuffer(target, this.handle);\n return this;\n }\n\n unbind() {\n let {\n target = 36160\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.gl.bindFramebuffer(target, null);\n return this;\n }\n\n _createDefaultAttachments(color, depth, stencil, width, height) {\n let defaultAttachments = null;\n\n if (color) {\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[36064] = new Texture2D(this.gl, {\n id: \"\".concat(this.id, \"-color0\"),\n pixels: null,\n format: 6408,\n type: 5121,\n width,\n height,\n mipmaps: false,\n parameters: {\n [10241]: 9729,\n [10240]: 9729,\n [10242]: 33071,\n [10243]: 33071\n }\n });\n this.ownResources.push(defaultAttachments[36064]);\n }\n\n if (depth && stencil) {\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[33306] = new Renderbuffer(this.gl, {\n id: \"\".concat(this.id, \"-depth-stencil\"),\n format: 35056,\n width,\n height: 111\n });\n this.ownResources.push(defaultAttachments[33306]);\n } else if (depth) {\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[36096] = new Renderbuffer(this.gl, {\n id: \"\".concat(this.id, \"-depth\"),\n format: 33189,\n width,\n height\n });\n this.ownResources.push(defaultAttachments[36096]);\n } else if (stencil) {\n assert(false);\n }\n\n return defaultAttachments;\n }\n\n _unattach(attachment) {\n const oldAttachment = this.attachments[attachment];\n\n if (!oldAttachment) {\n return;\n }\n\n if (oldAttachment instanceof Renderbuffer) {\n this.gl.framebufferRenderbuffer(36160, attachment, 36161, null);\n } else {\n this.gl.framebufferTexture2D(36160, attachment, 3553, null, 0);\n }\n\n delete this.attachments[attachment];\n }\n\n _attachRenderbuffer(_ref4) {\n let {\n attachment = 36064,\n renderbuffer\n } = _ref4;\n const {\n gl\n } = this;\n gl.framebufferRenderbuffer(36160, attachment, 36161, renderbuffer.handle);\n this.attachments[attachment] = renderbuffer;\n }\n\n _attachTexture(_ref5) {\n let {\n attachment = 36064,\n texture,\n layer,\n level\n } = _ref5;\n const {\n gl\n } = this;\n gl.bindTexture(texture.target, texture.handle);\n\n switch (texture.target) {\n case 35866:\n case 32879:\n const gl2 = assertWebGL2Context(gl);\n gl2.framebufferTextureLayer(36160, attachment, texture.target, level, layer);\n break;\n\n case 34067:\n const face = mapIndexToCubeMapFace(layer);\n gl.framebufferTexture2D(36160, attachment, face, texture.handle, level);\n break;\n\n case 3553:\n gl.framebufferTexture2D(36160, attachment, 3553, texture.handle, level);\n break;\n\n default:\n assert(false, 'Illegal texture type');\n }\n\n gl.bindTexture(texture.target, null);\n this.attachments[attachment] = texture;\n }\n\n _setReadBuffer(readBuffer) {\n const gl2 = getWebGL2Context(this.gl);\n\n if (gl2) {\n gl2.readBuffer(readBuffer);\n } else {\n assert(readBuffer === 36064 || readBuffer === 1029, ERR_MULTIPLE_RENDERTARGETS);\n }\n\n this.readBuffer = readBuffer;\n }\n\n _setDrawBuffers(drawBuffers) {\n const {\n gl\n } = this;\n const gl2 = assertWebGL2Context(gl);\n\n if (gl2) {\n gl2.drawBuffers(drawBuffers);\n } else {\n const ext = gl.getExtension('WEBGL_draw_buffers');\n\n if (ext) {\n ext.drawBuffersWEBGL(drawBuffers);\n } else {\n assert(drawBuffers.length === 1 && (drawBuffers[0] === 36064 || drawBuffers[0] === 1029), ERR_MULTIPLE_RENDERTARGETS);\n }\n }\n\n this.drawBuffers = drawBuffers;\n }\n\n _getAttachmentParameterFallback(pname) {\n const caps = getFeatures(this.gl);\n\n switch (pname) {\n case 36052:\n return !caps.WEBGL2 ? 0 : null;\n\n case 33298:\n case 33299:\n case 33300:\n case 33301:\n case 33302:\n case 33303:\n return !caps.WEBGL2 ? 8 : null;\n\n case 33297:\n return !caps.WEBGL2 ? 5125 : null;\n\n case 33296:\n return !caps.WEBGL2 && !caps.EXT_sRGB ? 9729 : null;\n\n default:\n return null;\n }\n }\n\n _createHandle() {\n return this.gl.createFramebuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteFramebuffer(this.handle);\n }\n\n _bindHandle(handle) {\n return this.gl.bindFramebuffer(36160, handle);\n }\n\n}\n\nfunction mapIndexToCubeMapFace(layer) {\n return layer < 34069 ? layer + 34069 : layer;\n}\n\nfunction _getFrameBufferStatus(status) {\n const STATUS = Framebuffer.STATUS || {};\n return STATUS[status] || \"Framebuffer error \".concat(status);\n}\n\nexport const FRAMEBUFFER_ATTACHMENT_PARAMETERS = [36049, 36048, 33296, 33298, 33299, 33300, 33301, 33302, 33303];\nFramebuffer.ATTACHMENT_PARAMETERS = FRAMEBUFFER_ATTACHMENT_PARAMETERS;\n//# sourceMappingURL=framebuffer.js.map","import GL from '@luma.gl/constants';\nimport {getWebGL2Context, assertWebGL2Context, log} from '@luma.gl/gltools';\nimport Resource from './resource';\nimport Texture2D from './texture-2d';\nimport Renderbuffer from './renderbuffer';\nimport {clear, clearBuffer} from './clear';\nimport {copyToDataUrl} from './copy-and-blit.js';\n\nimport {getFeatures} from '../features';\nimport {getKey} from '../webgl-utils/constants-to-keys';\nimport {assert} from '../utils/assert';\n\nconst ERR_MULTIPLE_RENDERTARGETS = 'Multiple render targets not supported';\n\nexport default class Framebuffer extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Framebuffer';\n }\n static isSupported(gl, options = {}) {\n const {\n colorBufferFloat, // Whether floating point textures can be rendered and read\n colorBufferHalfFloat // Whether half float textures can be rendered and read\n } = options;\n let supported = true;\n\n if (colorBufferFloat) {\n supported = Boolean(\n // WebGL 2\n gl.getExtension('EXT_color_buffer_float') ||\n // WebGL 1, not exposed on all platforms\n gl.getExtension('WEBGL_color_buffer_float') ||\n // WebGL 1, implicitly enables float render targets https://www.khronos.org/registry/webgl/extensions/OES_texture_float/\n gl.getExtension('OES_texture_float')\n );\n }\n\n if (colorBufferHalfFloat) {\n supported =\n supported &&\n Boolean(\n // WebGL 2\n gl.getExtension('EXT_color_buffer_float') ||\n // WebGL 1\n gl.getExtension('EXT_color_buffer_half_float')\n );\n }\n\n return supported;\n }\n\n // Create a Framebuffer wrapper for the default framebuffer (target === null)\n static getDefaultFramebuffer(gl) {\n gl.luma = gl.luma || {};\n gl.luma.defaultFramebuffer =\n gl.luma.defaultFramebuffer ||\n new Framebuffer(gl, {\n id: 'default-framebuffer',\n handle: null,\n attachments: {}\n });\n // TODO - can we query for and get a handle to the GL.FRONT renderbuffer?\n return gl.luma.defaultFramebuffer;\n }\n\n get MAX_COLOR_ATTACHMENTS() {\n const gl2 = assertWebGL2Context(this.gl);\n return gl2.getParameter(gl2.MAX_COLOR_ATTACHMENTS);\n }\n\n get MAX_DRAW_BUFFERS() {\n const gl2 = assertWebGL2Context(this.gl);\n return gl2.getParameter(gl2.MAX_DRAW_BUFFERS);\n }\n\n constructor(gl, opts = {}) {\n super(gl, opts);\n\n // Public members\n this.width = null;\n this.height = null;\n this.attachments = {};\n this.readBuffer = GL.COLOR_ATTACHMENT0;\n this.drawBuffers = [GL.COLOR_ATTACHMENT0];\n this.ownResources = [];\n this.initialize(opts);\n\n Object.seal(this);\n }\n\n get color() {\n return this.attachments[GL.COLOR_ATTACHMENT0] || null;\n }\n\n get texture() {\n return this.attachments[GL.COLOR_ATTACHMENT0] || null;\n }\n\n get depth() {\n return (\n this.attachments[GL.DEPTH_ATTACHMENT] || this.attachments[GL.DEPTH_STENCIL_ATTACHMENT] || null\n );\n }\n\n get stencil() {\n return (\n this.attachments[GL.STENCIL_ATTACHMENT] ||\n this.attachments[GL.DEPTH_STENCIL_ATTACHMENT] ||\n null\n );\n }\n\n initialize({\n width = 1,\n height = 1,\n attachments = null,\n color = true,\n depth = true,\n stencil = false,\n check = true,\n readBuffer = undefined,\n drawBuffers = undefined\n }) {\n assert(width >= 0 && height >= 0, 'Width and height need to be integers');\n\n // Store actual width and height for diffing\n this.width = width;\n this.height = height;\n\n // Resize any provided attachments - note that resize only resizes if needed\n // Note: A framebuffer has no separate size, it is defined by its attachments (which must agree)\n if (attachments) {\n for (const attachment in attachments) {\n const target = attachments[attachment];\n const object = Array.isArray(target) ? target[0] : target;\n object.resize({width, height});\n }\n } else {\n // Create any requested default attachments\n attachments = this._createDefaultAttachments(color, depth, stencil, width, height);\n }\n\n this.update({clearAttachments: true, attachments, readBuffer, drawBuffers});\n\n // Checks that framebuffer was properly set up, if not, throws an explanatory error\n if (attachments && check) {\n this.checkStatus();\n }\n }\n\n delete() {\n for (const resource of this.ownResources) {\n resource.delete();\n }\n super.delete();\n return this;\n }\n\n update({\n attachments = {},\n readBuffer,\n drawBuffers,\n clearAttachments = false,\n resizeAttachments = true\n }) {\n this.attach(attachments, {clearAttachments, resizeAttachments});\n\n const {gl} = this;\n // Multiple render target support, set read buffer and draw buffers\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n if (readBuffer) {\n this._setReadBuffer(readBuffer);\n }\n if (drawBuffers) {\n this._setDrawBuffers(drawBuffers);\n }\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n return this;\n }\n\n // Attachment resize is expected to be a noop if size is same\n resize(options = {}) {\n let {width, height} = options;\n // for default framebuffer, just update the stored size\n if (this.handle === null) {\n assert(width === undefined && height === undefined);\n this.width = this.gl.drawingBufferWidth;\n this.height = this.gl.drawingBufferHeight;\n return this;\n }\n\n if (width === undefined) {\n width = this.gl.drawingBufferWidth;\n }\n if (height === undefined) {\n height = this.gl.drawingBufferHeight;\n }\n\n if (width !== this.width && height !== this.height) {\n log.log(2, `Resizing framebuffer ${this.id} to ${width}x${height}`)();\n }\n for (const attachmentPoint in this.attachments) {\n this.attachments[attachmentPoint].resize({width, height});\n }\n this.width = width;\n this.height = height;\n return this;\n }\n\n // Attach from a map of attachments\n attach(attachments, {clearAttachments = false, resizeAttachments = true} = {}) {\n const newAttachments = {};\n\n // Any current attachments need to be removed, add null values to map\n if (clearAttachments) {\n Object.keys(this.attachments).forEach(key => {\n newAttachments[key] = null;\n });\n }\n\n // Overlay the new attachments\n Object.assign(newAttachments, attachments);\n\n const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n\n // Walk the attachments\n for (const key in newAttachments) {\n // Ensure key is not undefined\n assert(key !== undefined, 'Misspelled framebuffer binding point?');\n\n const attachment = Number(key);\n\n const descriptor = newAttachments[attachment];\n let object = descriptor;\n if (!object) {\n this._unattach(attachment);\n } else if (object instanceof Renderbuffer) {\n this._attachRenderbuffer({attachment, renderbuffer: object});\n } else if (Array.isArray(descriptor)) {\n const [texture, layer = 0, level = 0] = descriptor;\n object = texture;\n this._attachTexture({attachment, texture, layer, level});\n } else {\n this._attachTexture({attachment, texture: object, layer: 0, level: 0});\n }\n\n // Resize objects\n if (resizeAttachments && object) {\n object.resize({width: this.width, height: this.height});\n }\n }\n\n // @ts-ignore\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n // Assign to attachments and remove any nulls to get a clean attachment map\n Object.assign(this.attachments, attachments);\n Object.keys(this.attachments)\n .filter(key => !this.attachments[key])\n .forEach(key => {\n delete this.attachments[key];\n });\n }\n\n checkStatus() {\n const {gl} = this;\n const status = this.getStatus();\n if (status !== gl.FRAMEBUFFER_COMPLETE) {\n throw new Error(_getFrameBufferStatus(status));\n }\n return this;\n }\n\n getStatus() {\n const {gl} = this;\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER);\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n return status;\n }\n\n clear(options = {}) {\n const {color, depth, stencil, drawBuffers = []} = options;\n\n // Bind framebuffer and delegate to global clear functions\n const prevHandle = this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n\n if (color || depth || stencil) {\n clear(this.gl, {color, depth, stencil});\n }\n\n drawBuffers.forEach((value, drawBuffer) => {\n clearBuffer(this.gl, {drawBuffer, value});\n });\n\n // @ts-ignore\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n\n return this;\n }\n\n // NOTE: Slow requires roundtrip to GPU\n // App can provide pixelArray or have it auto allocated by this method\n // @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,\n // newly allocated by this method unless provided by app.\n readPixels(opts = {}) {\n log.error(\n 'Framebuffer.readPixels() is no logner supported, use readPixelsToArray(framebuffer)'\n )();\n return null;\n }\n\n // Reads data into provided buffer object asynchronously\n // This function doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.\n readPixelsToBuffer(opts = {}) {\n log.error(\n 'Framebuffer.readPixelsToBuffer()is no logner supported, use readPixelsToBuffer(framebuffer)'\n )();\n return null;\n }\n\n // Reads pixels as a dataUrl\n copyToDataUrl(opts = {}) {\n log.error(\n 'Framebuffer.copyToDataUrl() is no logner supported, use copyToDataUrl(framebuffer)'\n )();\n return null;\n }\n\n // Reads pixels into an HTML Image\n copyToImage(opts = {}) {\n log.error('Framebuffer.copyToImage() is no logner supported, use copyToImage(framebuffer)')();\n return null;\n }\n\n // copyToFramebuffer({width, height}) {\n // const scaleX = width / this.width;\n // const scaleY = height / this.height;\n // const scale = Math.min(scaleX, scaleY);\n // width = width * scale;\n // height = height * scale;\n // const scaledFramebuffer = new Framebuffer(this.gl, {width, height});\n // this.blit();\n // }\n\n // Copy a rectangle from a framebuffer attachment into a texture (at an offset)\n // NOTE: assumes texture has enough storage allocated\n // eslint-disable-next-line complexity\n copyToTexture(opts = {}) {\n log.error(\n 'Framebuffer.copyToTexture({...}) is no logner supported, use copyToTexture(source, target, opts})'\n )();\n return null;\n }\n\n // WEBGL2 INTERFACE\n\n // Copies a rectangle of pixels between framebuffers\n // eslint-disable-next-line complexity\n blit(opts = {}) {\n log.error('Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)')();\n return null;\n }\n\n // signals to the GL that it need not preserve all pixels of a specified region of the framebuffer\n invalidate({attachments = [], x = 0, y = 0, width, height}) {\n const gl2 = assertWebGL2Context(this.gl);\n const prevHandle = gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, this.handle);\n const invalidateAll = x === 0 && y === 0 && width === undefined && height === undefined;\n if (invalidateAll) {\n gl2.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments);\n } else {\n // TODO - why does type checking fail on this line\n // @ts-ignore\n gl2.invalidateFramebuffer(GL.READ_FRAMEBUFFER, attachments, x, y, width, height);\n }\n // @ts-ignore\n gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevHandle);\n return this;\n }\n\n // Return the value for `pname` of the specified attachment.\n // The type returned is the type of the requested pname\n getAttachmentParameter(attachment, pname, keys) {\n let value = this._getAttachmentParameterFallback(pname);\n if (value === null) {\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, this.handle);\n value = this.gl.getFramebufferAttachmentParameter(GL.FRAMEBUFFER, attachment, pname);\n this.gl.bindFramebuffer(GL.FRAMEBUFFER, null);\n }\n if (keys && value > 1000) {\n // @ts-ignore\n value = getKey(this.gl, value);\n }\n return value;\n }\n\n getAttachmentParameters(\n attachment = GL.COLOR_ATTACHMENT0,\n keys,\n // @ts-ignore\n parameters = this.constructor.ATTACHMENT_PARAMETERS || []\n ) {\n const values = {};\n for (const pname of parameters) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getAttachmentParameter(attachment, pname, keys);\n }\n return values;\n }\n\n getParameters(keys = true) {\n const attachments = Object.keys(this.attachments);\n // if (this === this.gl.luma.defaultFramebuffer) {\n // attachments = [GL.COLOR_ATTACHMENT0, GL.DEPTH_STENCIL_ATTACHMENT];\n // }\n const parameters = {};\n for (const attachmentName of attachments) {\n const attachment = Number(attachmentName);\n const key = keys ? getKey(this.gl, attachment) : attachment;\n parameters[key] = this.getAttachmentParameters(attachment, keys);\n }\n return parameters;\n }\n\n // DEBUG\n\n // Note: Will only work when called in an event handler\n show() {\n if (typeof window !== 'undefined') {\n window.open(copyToDataUrl(this), 'luma-debug-texture');\n }\n return this;\n }\n\n log(logLevel = 0, message = '') {\n if (logLevel > log.level || typeof window === 'undefined') {\n return this;\n }\n message = message || `Framebuffer ${this.id}`;\n const image = copyToDataUrl(this, {targetMaxHeight: 100});\n // @ts-expect-error\n log.image({logLevel, message, image}, message)();\n return this;\n }\n\n // WEBGL INTERFACE\n bind({target = GL.FRAMEBUFFER} = {}) {\n this.gl.bindFramebuffer(target, this.handle);\n return this;\n }\n\n unbind({target = GL.FRAMEBUFFER} = {}) {\n this.gl.bindFramebuffer(target, null);\n return this;\n }\n\n // PRIVATE METHODS\n\n _createDefaultAttachments(color, depth, stencil, width, height) {\n let defaultAttachments = null;\n\n // Add a color buffer if requested and not supplied\n if (color) {\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[GL.COLOR_ATTACHMENT0] = new Texture2D(this.gl, {\n id: `${this.id}-color0`,\n pixels: null, // reserves texture memory, but texels are undefined\n format: GL.RGBA,\n type: GL.UNSIGNED_BYTE,\n width,\n height,\n // Note: Mipmapping can be disabled by texture resource when we resize the texture\n // to a non-power-of-two dimenstion (NPOT texture) under WebGL1. To have consistant\n // behavior we always disable mipmaps.\n mipmaps: false,\n // Set MIN and MAG filtering parameters so mipmaps are not used in sampling.\n // Use LINEAR so subpixel algos like fxaa work.\n // Set WRAP modes that support NPOT textures too.\n parameters: {\n [GL.TEXTURE_MIN_FILTER]: GL.LINEAR,\n [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n }\n });\n // track to delete later\n this.ownResources.push(defaultAttachments[GL.COLOR_ATTACHMENT0]);\n }\n\n if (depth && stencil) {\n // TODO - handle separate stencil\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[GL.DEPTH_STENCIL_ATTACHMENT] = new Renderbuffer(this.gl, {\n id: `${this.id}-depth-stencil`,\n format: GL.DEPTH24_STENCIL8,\n width,\n height: 111\n });\n // track to delete later\n this.ownResources.push(defaultAttachments[GL.DEPTH_STENCIL_ATTACHMENT]);\n // TODO - optional texture\n // new Texture2D(this.gl, {\n // id: `${this.id}-depth-stencil`,\n // format: GL.DEPTH24_STENCIL8,\n // dataFormat: GL.DEPTH_STENCIL,\n // type: GL.UNSIGNED_INT_24_8,\n // width,\n // height,\n // mipmaps: false\n // });\n } else if (depth) {\n // Add a depth buffer if requested and not supplied\n defaultAttachments = defaultAttachments || {};\n defaultAttachments[GL.DEPTH_ATTACHMENT] = new Renderbuffer(this.gl, {\n id: `${this.id}-depth`,\n format: GL.DEPTH_COMPONENT16,\n width,\n height\n });\n // track to delete later\n this.ownResources.push(defaultAttachments[GL.DEPTH_ATTACHMENT]);\n } else if (stencil) {\n // TODO - handle separate stencil\n assert(false);\n }\n\n return defaultAttachments;\n }\n\n _unattach(attachment) {\n const oldAttachment = this.attachments[attachment];\n if (!oldAttachment) {\n return;\n }\n if (oldAttachment instanceof Renderbuffer) {\n // render buffer\n this.gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, null);\n } else {\n // Must be a texture attachment\n this.gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, null, 0);\n }\n delete this.attachments[attachment];\n }\n\n _attachRenderbuffer({attachment = GL.COLOR_ATTACHMENT0, renderbuffer}) {\n const {gl} = this;\n // TODO - is the bind needed?\n // gl.bindRenderbuffer(GL.RENDERBUFFER, renderbuffer.handle);\n gl.framebufferRenderbuffer(GL.FRAMEBUFFER, attachment, GL.RENDERBUFFER, renderbuffer.handle);\n // TODO - is the unbind needed?\n // gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n\n this.attachments[attachment] = renderbuffer;\n }\n\n // layer = 0 - index into Texture2DArray and Texture3D or face for `TextureCubeMap`\n // level = 0 - mipmapLevel (must be 0 in WebGL1)\n _attachTexture({attachment = GL.COLOR_ATTACHMENT0, texture, layer, level}) {\n const {gl} = this;\n gl.bindTexture(texture.target, texture.handle);\n\n switch (texture.target) {\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n const gl2 = assertWebGL2Context(gl);\n gl2.framebufferTextureLayer(GL.FRAMEBUFFER, attachment, texture.target, level, layer);\n break;\n\n case GL.TEXTURE_CUBE_MAP:\n // layer must be a cubemap face (or if index, converted to cube map face)\n const face = mapIndexToCubeMapFace(layer);\n gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, face, texture.handle, level);\n break;\n\n case GL.TEXTURE_2D:\n gl.framebufferTexture2D(GL.FRAMEBUFFER, attachment, GL.TEXTURE_2D, texture.handle, level);\n break;\n\n default:\n assert(false, 'Illegal texture type');\n }\n\n gl.bindTexture(texture.target, null);\n this.attachments[attachment] = texture;\n }\n\n // Expects framebuffer to be bound\n _setReadBuffer(readBuffer) {\n const gl2 = getWebGL2Context(this.gl);\n if (gl2) {\n gl2.readBuffer(readBuffer);\n } else {\n // Setting to color attachment 0 is a noop, so allow it in WebGL1\n assert(\n readBuffer === GL.COLOR_ATTACHMENT0 || readBuffer === GL.BACK,\n ERR_MULTIPLE_RENDERTARGETS\n );\n }\n this.readBuffer = readBuffer;\n }\n\n // Expects framebuffer to be bound\n _setDrawBuffers(drawBuffers) {\n const {gl} = this;\n const gl2 = assertWebGL2Context(gl);\n if (gl2) {\n gl2.drawBuffers(drawBuffers);\n } else {\n // TODO - is this not handled by polyfills?\n const ext = gl.getExtension('WEBGL_draw_buffers');\n if (ext) {\n ext.drawBuffersWEBGL(drawBuffers);\n } else {\n // Setting a single draw buffer to color attachment 0 is a noop, allow in WebGL1\n assert(\n drawBuffers.length === 1 &&\n (drawBuffers[0] === GL.COLOR_ATTACHMENT0 || drawBuffers[0] === GL.BACK),\n ERR_MULTIPLE_RENDERTARGETS\n );\n }\n }\n this.drawBuffers = drawBuffers;\n }\n\n // Attempt to provide workable defaults for WebGL2 symbols under WebGL1\n // null means OK to query\n // TODO - move to webgl1 polyfills\n /* eslint-disable complexity */\n _getAttachmentParameterFallback(pname) {\n const caps = getFeatures(this.gl);\n\n switch (pname) {\n case GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: // GLint\n return !caps.WEBGL2 ? 0 : null;\n case GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: // GLint\n case GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: // GLint\n return !caps.WEBGL2 ? 8 : null;\n case GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: // GLenum\n return !caps.WEBGL2 ? GL.UNSIGNED_INT : null;\n case GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:\n return !caps.WEBGL2 && !caps.EXT_sRGB ? GL.LINEAR : null;\n default:\n return null;\n }\n }\n /* eslint-enable complexity */\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createFramebuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteFramebuffer(this.handle);\n }\n\n _bindHandle(handle) {\n return this.gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n }\n}\n\n// PUBLIC METHODS\n\n// Map an index to a cube map face constant\nfunction mapIndexToCubeMapFace(layer) {\n // TEXTURE_CUBE_MAP_POSITIVE_X is a big value (0x8515)\n // if smaller assume layer is index, otherwise assume it is already a cube map face constant\n return layer < GL.TEXTURE_CUBE_MAP_POSITIVE_X ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;\n}\n\n// Helper METHODS\n// Get a string describing the framebuffer error if installed\nfunction _getFrameBufferStatus(status) {\n // Use error mapping if installed\n // @ts-ignore\n const STATUS = Framebuffer.STATUS || {};\n return STATUS[status] || `Framebuffer error ${status}`;\n}\n\nexport const FRAMEBUFFER_ATTACHMENT_PARAMETERS = [\n GL.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, // WebGLRenderbuffer or WebGLTexture\n GL.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, // GL.RENDERBUFFER, GL.TEXTURE, GL.NONE\n // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, // GL.TEXTURE_CUBE_MAP_POSITIVE_X, etc.\n // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, // GLint\n // EXT_sRGB or WebGL2\n GL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, // GL.LINEAR, GL.SRBG\n // WebGL2\n // GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_RED_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, // GLint\n GL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE // GLint\n // GL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE\n // GL.FLOAT, GL.INT, GL.UNSIGNED_INT, GL.SIGNED_NORMALIZED, OR GL.UNSIGNED_NORMALIZED.\n];\n\nFramebuffer.ATTACHMENT_PARAMETERS = FRAMEBUFFER_ATTACHMENT_PARAMETERS;\n","import { assertWebGLContext } from '@luma.gl/gltools';\nimport Texture from './texture';\nimport { loadImage } from '../utils/load-file';\nexport default class Texture2D extends Texture {\n get [Symbol.toStringTag]() {\n return 'Texture2D';\n }\n\n static isSupported(gl, opts) {\n return Texture.isSupported(gl, opts);\n }\n\n constructor(gl) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n assertWebGLContext(gl);\n\n if (props instanceof Promise || typeof props === 'string') {\n props = {\n data: props\n };\n }\n\n if (typeof props.data === 'string') {\n props = Object.assign({}, props, {\n data: loadImage(props.data)\n });\n }\n\n super(gl, Object.assign({}, props, {\n target: 3553\n }));\n this.initialize(props);\n Object.seal(this);\n }\n\n}\n//# sourceMappingURL=texture-2d.js.map","import GL from '@luma.gl/constants';\nimport {assertWebGLContext} from '@luma.gl/gltools';\nimport Texture from './texture';\nimport {loadImage} from '../utils/load-file';\n\nexport default class Texture2D extends Texture {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Texture2D';\n }\n\n static isSupported(gl, opts) {\n return Texture.isSupported(gl, opts);\n }\n\n constructor(gl, props = {}) {\n assertWebGLContext(gl);\n\n // Signature: new Texture2D(gl, url | Promise)\n if (props instanceof Promise || typeof props === 'string') {\n props = {data: props};\n }\n\n // Signature: new Texture2D(gl, {data: url})\n if (typeof props.data === 'string') {\n props = Object.assign({}, props, {data: loadImage(props.data)});\n }\n\n super(gl, Object.assign({}, props, {target: GL.TEXTURE_2D}));\n\n this.initialize(props);\n\n Object.seal(this);\n }\n}\n","import { isWebGL2, assertWebGL2Context, withParameters, log } from '@luma.gl/gltools';\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport { TEXTURE_FORMATS, DATA_FORMAT_CHANNELS, TYPE_SIZES, isFormatSupported, isLinearFilteringSupported } from './texture-formats';\nimport { assert } from '../utils/assert';\nimport { uid, isPowerOfTwo } from '../utils/utils';\nconst NPOT_MIN_FILTERS = [9729, 9728];\n\nconst WebGLBuffer = globalThis.WebGLBuffer || function WebGLBuffer() {};\n\nexport default class Texture extends Resource {\n get [Symbol.toStringTag]() {\n return 'Texture';\n }\n\n static isSupported(gl) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n format,\n linearFiltering\n } = opts;\n let supported = true;\n\n if (format) {\n supported = supported && isFormatSupported(gl, format);\n supported = supported && (!linearFiltering || isLinearFilteringSupported(gl, format));\n }\n\n return supported;\n }\n\n constructor(gl, props) {\n const {\n id = uid('texture'),\n handle,\n target\n } = props;\n super(gl, {\n id,\n handle\n });\n this.target = target;\n this.textureUnit = undefined;\n this.loaded = false;\n this.width = undefined;\n this.height = undefined;\n this.depth = undefined;\n this.format = undefined;\n this.type = undefined;\n this.dataFormat = undefined;\n this.border = undefined;\n this.textureUnit = undefined;\n this.mipmaps = undefined;\n }\n\n toString() {\n return \"Texture(\".concat(this.id, \",\").concat(this.width, \"x\").concat(this.height, \")\");\n }\n\n initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let data = props.data;\n\n if (data instanceof Promise) {\n data.then(resolvedImageData => this.initialize(Object.assign({}, props, {\n pixels: resolvedImageData,\n data: resolvedImageData\n })));\n return this;\n }\n\n const isVideo = typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement;\n\n if (isVideo && data.readyState < HTMLVideoElement.HAVE_METADATA) {\n this._video = null;\n data.addEventListener('loadeddata', () => this.initialize(props));\n return this;\n }\n\n const {\n pixels = null,\n format = 6408,\n border = 0,\n recreate = false,\n parameters = {},\n pixelStore = {},\n textureUnit = undefined\n } = props;\n\n if (!data) {\n data = pixels;\n }\n\n let {\n width,\n height,\n dataFormat,\n type,\n compressed = false,\n mipmaps = true\n } = props;\n const {\n depth = 0\n } = props;\n ({\n width,\n height,\n compressed,\n dataFormat,\n type\n } = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n this.width = width;\n this.height = height;\n this.depth = depth;\n this.format = format;\n this.type = type;\n this.dataFormat = dataFormat;\n this.border = border;\n this.textureUnit = textureUnit;\n\n if (Number.isFinite(this.textureUnit)) {\n this.gl.activeTexture(33984 + this.textureUnit);\n this.gl.bindTexture(this.target, this.handle);\n }\n\n if (mipmaps && this._isNPOT()) {\n log.warn(\"texture: \".concat(this, \" is Non-Power-Of-Two, disabling mipmaping\"))();\n mipmaps = false;\n\n this._updateForNPOT(parameters);\n }\n\n this.mipmaps = mipmaps;\n this.setImageData({\n data,\n width,\n height,\n depth,\n format,\n type,\n dataFormat,\n border,\n mipmaps,\n parameters: pixelStore,\n compressed\n });\n\n if (mipmaps) {\n this.generateMipmap();\n }\n\n this.setParameters(parameters);\n\n if (recreate) {\n this.data = data;\n }\n\n if (isVideo) {\n this._video = {\n video: data,\n parameters,\n lastTime: data.readyState >= HTMLVideoElement.HAVE_CURRENT_DATA ? data.currentTime : -1\n };\n }\n\n return this;\n }\n\n update() {\n if (this._video) {\n const {\n video,\n parameters,\n lastTime\n } = this._video;\n\n if (lastTime === video.currentTime || video.readyState < HTMLVideoElement.HAVE_CURRENT_DATA) {\n return;\n }\n\n this.setSubImageData({\n data: video,\n parameters\n });\n\n if (this.mipmaps) {\n this.generateMipmap();\n }\n\n this._video.lastTime = video.currentTime;\n }\n }\n\n resize(_ref) {\n let {\n height,\n width,\n mipmaps = false\n } = _ref;\n\n if (width !== this.width || height !== this.height) {\n return this.initialize({\n width,\n height,\n format: this.format,\n type: this.type,\n dataFormat: this.dataFormat,\n border: this.border,\n mipmaps\n });\n }\n\n return this;\n }\n\n generateMipmap() {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (this._isNPOT()) {\n log.warn(\"texture: \".concat(this, \" is Non-Power-Of-Two, disabling mipmaping\"))();\n return this;\n }\n\n this.mipmaps = true;\n this.gl.bindTexture(this.target, this.handle);\n withParameters(this.gl, params, () => {\n this.gl.generateMipmap(this.target);\n });\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n setImageData(options) {\n this._trackDeallocatedMemory('Texture');\n\n const {\n target = this.target,\n pixels = null,\n level = 0,\n format = this.format,\n border = this.border,\n offset = 0,\n parameters = {}\n } = options;\n let {\n data = null,\n type = this.type,\n width = this.width,\n height = this.height,\n dataFormat = this.dataFormat,\n compressed = false\n } = options;\n\n if (!data) {\n data = pixels;\n }\n\n ({\n type,\n dataFormat,\n compressed,\n width,\n height\n } = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n const {\n gl\n } = this;\n gl.bindTexture(this.target, this.handle);\n let dataType = null;\n ({\n data,\n dataType\n } = this._getDataType({\n data,\n compressed\n }));\n let gl2;\n let compressedTextureSize = 0;\n withParameters(this.gl, parameters, () => {\n switch (dataType) {\n case 'null':\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n break;\n\n case 'typed-array':\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data, offset);\n break;\n\n case 'buffer':\n gl2 = assertWebGL2Context(gl);\n gl2.bindBuffer(35052, data.handle || data);\n gl2.texImage2D(target, level, format, width, height, border, dataFormat, type, offset);\n gl2.bindBuffer(35052, null);\n break;\n\n case 'browser-object':\n if (isWebGL2(gl)) {\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n } else {\n gl.texImage2D(target, level, format, dataFormat, type, data);\n }\n\n break;\n\n case 'compressed':\n for (const [levelIndex, levelData] of data.entries()) {\n gl.compressedTexImage2D(target, levelIndex, levelData.format, levelData.width, levelData.height, border, levelData.data);\n compressedTextureSize += levelData.levelSize;\n }\n\n break;\n\n default:\n assert(false, 'Unknown image data type');\n }\n });\n\n if (dataType === 'compressed') {\n this._trackAllocatedMemory(compressedTextureSize, 'Texture');\n } else if (data && data.byteLength) {\n this._trackAllocatedMemory(data.byteLength, 'Texture');\n } else {\n const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n const channelSize = TYPE_SIZES[this.type] || 1;\n\n this._trackAllocatedMemory(this.width * this.height * channels * channelSize, 'Texture');\n }\n\n this.loaded = true;\n return this;\n }\n\n setSubImageData(_ref2) {\n let {\n target = this.target,\n pixels = null,\n data = null,\n x = 0,\n y = 0,\n width = this.width,\n height = this.height,\n level = 0,\n format = this.format,\n type = this.type,\n dataFormat = this.dataFormat,\n compressed = false,\n offset = 0,\n border = this.border,\n parameters = {}\n } = _ref2;\n ({\n type,\n dataFormat,\n compressed,\n width,\n height\n } = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n assert(this.depth === 0, 'texSubImage not supported for 3D textures');\n\n if (!data) {\n data = pixels;\n }\n\n if (data && data.data) {\n const ndarray = data;\n data = ndarray.data;\n width = ndarray.shape[0];\n height = ndarray.shape[1];\n }\n\n if (data instanceof Buffer) {\n data = data.handle;\n }\n\n this.gl.bindTexture(this.target, this.handle);\n withParameters(this.gl, parameters, () => {\n if (compressed) {\n this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);\n } else if (data === null) {\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);\n } else if (ArrayBuffer.isView(data)) {\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);\n } else if (data instanceof WebGLBuffer) {\n const gl2 = assertWebGL2Context(this.gl);\n gl2.bindBuffer(35052, data);\n gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);\n gl2.bindBuffer(35052, null);\n } else if (isWebGL2(this.gl)) {\n const gl2 = assertWebGL2Context(this.gl);\n gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);\n } else {\n this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);\n }\n });\n this.gl.bindTexture(this.target, null);\n }\n\n copyFramebuffer() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n log.error('Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})')();\n return null;\n }\n\n getActiveUnit() {\n return this.gl.getParameter(34016) - 33984;\n }\n\n bind() {\n let textureUnit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.textureUnit;\n const {\n gl\n } = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(33984 + textureUnit);\n }\n\n gl.bindTexture(this.target, this.handle);\n return textureUnit;\n }\n\n unbind() {\n let textureUnit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.textureUnit;\n const {\n gl\n } = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(33984 + textureUnit);\n }\n\n gl.bindTexture(this.target, null);\n return textureUnit;\n }\n\n _getDataType(_ref3) {\n let {\n data,\n compressed = false\n } = _ref3;\n\n if (compressed) {\n return {\n data,\n dataType: 'compressed'\n };\n }\n\n if (data === null) {\n return {\n data,\n dataType: 'null'\n };\n }\n\n if (ArrayBuffer.isView(data)) {\n return {\n data,\n dataType: 'typed-array'\n };\n }\n\n if (data instanceof Buffer) {\n return {\n data: data.handle,\n dataType: 'buffer'\n };\n }\n\n if (data instanceof WebGLBuffer) {\n return {\n data,\n dataType: 'buffer'\n };\n }\n\n return {\n data,\n dataType: 'browser-object'\n };\n }\n\n _deduceParameters(opts) {\n const {\n format,\n data\n } = opts;\n let {\n width,\n height,\n dataFormat,\n type,\n compressed\n } = opts;\n const textureFormat = TEXTURE_FORMATS[format];\n dataFormat = dataFormat || textureFormat && textureFormat.dataFormat;\n type = type || textureFormat && textureFormat.types[0];\n compressed = compressed || textureFormat && textureFormat.compressed;\n ({\n width,\n height\n } = this._deduceImageSize(data, width, height));\n return {\n dataFormat,\n type,\n compressed,\n width,\n height,\n format,\n data\n };\n }\n\n _deduceImageSize(data, width, height) {\n let size;\n\n if (typeof ImageData !== 'undefined' && data instanceof ImageData) {\n size = {\n width: data.width,\n height: data.height\n };\n } else if (typeof HTMLImageElement !== 'undefined' && data instanceof HTMLImageElement) {\n size = {\n width: data.naturalWidth,\n height: data.naturalHeight\n };\n } else if (typeof HTMLCanvasElement !== 'undefined' && data instanceof HTMLCanvasElement) {\n size = {\n width: data.width,\n height: data.height\n };\n } else if (typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) {\n size = {\n width: data.width,\n height: data.height\n };\n } else if (typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement) {\n size = {\n width: data.videoWidth,\n height: data.videoHeight\n };\n } else if (!data) {\n size = {\n width: width >= 0 ? width : 1,\n height: height >= 0 ? height : 1\n };\n } else {\n size = {\n width,\n height\n };\n }\n\n assert(size, 'Could not deduced texture size');\n assert(width === undefined || size.width === width, 'Deduced texture width does not match supplied width');\n assert(height === undefined || size.height === height, 'Deduced texture height does not match supplied height');\n return size;\n }\n\n _createHandle() {\n return this.gl.createTexture();\n }\n\n _deleteHandle() {\n this.gl.deleteTexture(this.handle);\n\n this._trackDeallocatedMemory('Texture');\n }\n\n _getParameter(pname) {\n switch (pname) {\n case 4096:\n return this.width;\n\n case 4097:\n return this.height;\n\n default:\n this.gl.bindTexture(this.target, this.handle);\n const value = this.gl.getTexParameter(this.target, pname);\n this.gl.bindTexture(this.target, null);\n return value;\n }\n }\n\n _setParameter(pname, param) {\n this.gl.bindTexture(this.target, this.handle);\n param = this._getNPOTParam(pname, param);\n\n switch (pname) {\n case 33082:\n case 33083:\n this.gl.texParameterf(this.handle, pname, param);\n break;\n\n case 4096:\n case 4097:\n assert(false);\n break;\n\n default:\n this.gl.texParameteri(this.target, pname, param);\n break;\n }\n\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n _isNPOT() {\n if (isWebGL2(this.gl)) {\n return false;\n }\n\n if (!this.width || !this.height) {\n return false;\n }\n\n return !isPowerOfTwo(this.width) || !isPowerOfTwo(this.height);\n }\n\n _updateForNPOT(parameters) {\n if (parameters[this.gl.TEXTURE_MIN_FILTER] === undefined) {\n parameters[this.gl.TEXTURE_MIN_FILTER] = this.gl.LINEAR;\n }\n\n if (parameters[this.gl.TEXTURE_WRAP_S] === undefined) {\n parameters[this.gl.TEXTURE_WRAP_S] = this.gl.CLAMP_TO_EDGE;\n }\n\n if (parameters[this.gl.TEXTURE_WRAP_T] === undefined) {\n parameters[this.gl.TEXTURE_WRAP_T] = this.gl.CLAMP_TO_EDGE;\n }\n }\n\n _getNPOTParam(pname, param) {\n if (this._isNPOT()) {\n switch (pname) {\n case 10241:\n if (NPOT_MIN_FILTERS.indexOf(param) === -1) {\n param = 9729;\n }\n\n break;\n\n case 10242:\n case 10243:\n if (param !== 33071) {\n param = 33071;\n }\n\n break;\n\n default:\n break;\n }\n }\n\n return param;\n }\n\n}\n//# sourceMappingURL=texture.js.map","import GL from '@luma.gl/constants';\nimport {isWebGL2, assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';\n\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport {\n TEXTURE_FORMATS,\n DATA_FORMAT_CHANNELS,\n TYPE_SIZES,\n isFormatSupported,\n isLinearFilteringSupported\n} from './texture-formats';\nimport {assert} from '../utils/assert';\nimport {uid, isPowerOfTwo} from '../utils/utils';\n\n// Supported min filters for NPOT texture.\nconst NPOT_MIN_FILTERS = [GL.LINEAR, GL.NEAREST];\n\n// Polyfill\n// Note (Tarek): Do we really need to support this API?\nconst WebGLBuffer = globalThis.WebGLBuffer || function WebGLBuffer() {};\n\nexport default class Texture extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Texture';\n }\n static isSupported(gl, opts = {}) {\n const {format, linearFiltering} = opts;\n let supported = true;\n if (format) {\n supported = supported && isFormatSupported(gl, format);\n supported = supported && (!linearFiltering || isLinearFilteringSupported(gl, format));\n }\n return supported;\n }\n\n // target cannot be modified by bind:\n // textures are special because when you first bind them to a target,\n // they get special information. When you first bind a texture as a\n // GL_TEXTURE_2D, you are actually setting special state in the texture.\n // You are saying that this texture is a 2D texture.\n // And it will always be a 2D texture; this state cannot be changed ever.\n // If you have a texture that was first bound as a GL_TEXTURE_2D,\n // you must always bind it as a GL_TEXTURE_2D;\n // attempting to bind it as GL_TEXTURE_1D will give rise to an error\n // (while run-time).\n constructor(gl, props) {\n const {\n id = uid('texture'),\n handle,\n target\n // , magFilter, minFilter, wrapS, wrapT\n } = props;\n\n super(gl, {id, handle});\n\n this.target = target;\n this.textureUnit = undefined;\n\n // Program.draw() checks the loaded flag of all textures to avoid\n // Textures that are still loading from promises\n // Set to true as soon as texture has been initialized with valid data\n this.loaded = false;\n\n this.width = undefined;\n this.height = undefined;\n this.depth = undefined;\n this.format = undefined;\n this.type = undefined;\n this.dataFormat = undefined;\n this.border = undefined;\n this.textureUnit = undefined;\n this.mipmaps = undefined;\n }\n\n toString() {\n return `Texture(${this.id},${this.width}x${this.height})`;\n }\n\n /* eslint-disable max-len, max-statements */\n initialize(props = {}) {\n let data = props.data;\n\n if (data instanceof Promise) {\n data.then(resolvedImageData =>\n this.initialize(\n Object.assign({}, props, {\n pixels: resolvedImageData,\n data: resolvedImageData\n })\n )\n );\n return this;\n }\n const isVideo = typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement;\n // @ts-ignore\n if (isVideo && data.readyState < HTMLVideoElement.HAVE_METADATA) {\n this._video = null; // Declare member before the object is sealed\n data.addEventListener('loadeddata', () => this.initialize(props));\n return this;\n }\n\n const {\n pixels = null,\n format = GL.RGBA,\n border = 0,\n recreate = false,\n parameters = {},\n pixelStore = {},\n textureUnit = undefined\n } = props;\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n // TODO - This looks backwards? Commenting out for now until we decide\n // which prop to use\n // log.deprecated('data', 'pixels')();\n data = pixels;\n }\n\n let {width, height, dataFormat, type, compressed = false, mipmaps = true} = props;\n const {depth = 0} = props;\n\n // Deduce width and height\n ({width, height, compressed, dataFormat, type} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n // Store opts for accessors\n this.width = width;\n this.height = height;\n this.depth = depth;\n this.format = format;\n this.type = type;\n this.dataFormat = dataFormat;\n this.border = border;\n this.textureUnit = textureUnit;\n\n if (Number.isFinite(this.textureUnit)) {\n this.gl.activeTexture(GL.TEXTURE0 + this.textureUnit);\n this.gl.bindTexture(this.target, this.handle);\n }\n\n if (mipmaps && this._isNPOT()) {\n log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();\n mipmaps = false;\n\n this._updateForNPOT(parameters);\n }\n\n this.mipmaps = mipmaps;\n\n this.setImageData({\n data,\n width,\n height,\n depth,\n format,\n type,\n dataFormat,\n border,\n mipmaps,\n parameters: pixelStore,\n compressed\n });\n\n if (mipmaps) {\n this.generateMipmap();\n }\n\n // Set texture sampler parameters\n this.setParameters(parameters);\n\n // TODO - Store data to enable auto recreate on context loss\n if (recreate) {\n this.data = data;\n }\n if (isVideo) {\n this._video = {\n video: data,\n parameters,\n // @ts-ignore\n lastTime: data.readyState >= HTMLVideoElement.HAVE_CURRENT_DATA ? data.currentTime : -1\n };\n }\n\n return this;\n }\n\n update() {\n if (this._video) {\n const {video, parameters, lastTime} = this._video;\n // @ts-ignore\n if (lastTime === video.currentTime || video.readyState < HTMLVideoElement.HAVE_CURRENT_DATA) {\n return;\n }\n this.setSubImageData({\n data: video,\n parameters\n });\n if (this.mipmaps) {\n this.generateMipmap();\n }\n this._video.lastTime = video.currentTime;\n }\n }\n\n // If size has changed, reinitializes with current format\n // note clears image and mipmaps\n resize({height, width, mipmaps = false}) {\n if (width !== this.width || height !== this.height) {\n return this.initialize({\n width,\n height,\n format: this.format,\n type: this.type,\n dataFormat: this.dataFormat,\n border: this.border,\n mipmaps\n });\n }\n return this;\n }\n\n // Call to regenerate mipmaps after modifying texture(s)\n generateMipmap(params = {}) {\n if (this._isNPOT()) {\n log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();\n return this;\n }\n\n this.mipmaps = true;\n\n this.gl.bindTexture(this.target, this.handle);\n withParameters(this.gl, params, () => {\n this.gl.generateMipmap(this.target);\n });\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n /*\n * Allocates storage\n * @param {*} pixels -\n * null - create empty texture of specified format\n * Typed array - init from image data in typed array\n * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer\n * HTMLImageElement|Image - Inits with content of image. Auto width/height\n * HTMLCanvasElement - Inits with contents of canvas. Auto width/height\n * HTMLVideoElement - Creates video texture. Auto width/height\n *\n * @param {GLint} width -\n * @param {GLint} height -\n * @param {GLint} mipMapLevel -\n * @param {GLenum} format - format of image data.\n * @param {GLenum} type\n * - format of array (autodetect from type) or\n * - (WEBGL2) format of buffer\n * @param {Number} offset - (WEBGL2) offset from start of buffer\n * @param {GLint} border - must be 0.\n * @parameters - temporary settings to be applied, can be used to supply pixel store settings.\n */\n /* eslint-disable max-len, max-statements, complexity */\n setImageData(options) {\n this._trackDeallocatedMemory('Texture');\n\n const {\n target = this.target,\n pixels = null,\n level = 0,\n format = this.format,\n border = this.border,\n offset = 0,\n parameters = {}\n } = options;\n\n let {\n data = null,\n type = this.type,\n width = this.width,\n height = this.height,\n dataFormat = this.dataFormat,\n compressed = false\n } = options;\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n data = pixels;\n }\n\n ({type, dataFormat, compressed, width, height} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n const {gl} = this;\n gl.bindTexture(this.target, this.handle);\n\n let dataType = null;\n ({data, dataType} = this._getDataType({data, compressed}));\n\n let gl2;\n\n let compressedTextureSize = 0;\n\n withParameters(this.gl, parameters, () => {\n switch (dataType) {\n case 'null':\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n break;\n case 'typed-array':\n // Looks like this assert is not necessary, as offset is ignored under WebGL1\n // assert((offset === 0 || isWebGL2(gl)), 'offset supported in WebGL2 only');\n // @ts-ignore\n gl.texImage2D(\n target,\n level,\n format,\n width,\n height,\n border,\n dataFormat,\n type,\n data,\n // @ts-ignore\n offset\n );\n break;\n case 'buffer':\n // WebGL2 enables creating textures directly from a WebGL buffer\n gl2 = assertWebGL2Context(gl);\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle || data);\n gl2.texImage2D(target, level, format, width, height, border, dataFormat, type, offset);\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);\n break;\n case 'browser-object':\n if (isWebGL2(gl)) {\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n } else {\n gl.texImage2D(target, level, format, dataFormat, type, data);\n }\n break;\n case 'compressed':\n for (const [levelIndex, levelData] of data.entries()) {\n gl.compressedTexImage2D(\n target,\n levelIndex,\n levelData.format,\n levelData.width,\n levelData.height,\n border,\n levelData.data\n );\n compressedTextureSize += levelData.levelSize;\n }\n break;\n default:\n assert(false, 'Unknown image data type');\n }\n });\n\n if (dataType === 'compressed') {\n this._trackAllocatedMemory(compressedTextureSize, 'Texture');\n } else if (data && data.byteLength) {\n this._trackAllocatedMemory(data.byteLength, 'Texture');\n } else {\n // NOTE(Tarek): Default to RGBA bytes\n const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n const channelSize = TYPE_SIZES[this.type] || 1;\n\n this._trackAllocatedMemory(this.width * this.height * channels * channelSize, 'Texture');\n }\n\n this.loaded = true;\n\n return this;\n }\n /* eslint-enable max-len, max-statements, complexity */\n\n /**\n * Redefines an area of an existing texture\n * Note: does not allocate storage\n */\n /*\n * Redefines an area of an existing texture\n * @param {*} pixels, data -\n * null - create empty texture of specified format\n * Typed array - init from image data in typed array\n * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer\n * HTMLImageElement|Image - Inits with content of image. Auto width/height\n * HTMLCanvasElement - Inits with contents of canvas. Auto width/height\n * HTMLVideoElement - Creates video texture. Auto width/height\n *\n * @param {GLint} x - xOffset from where texture to be updated\n * @param {GLint} y - yOffset from where texture to be updated\n * @param {GLint} width - width of the sub image to be updated\n * @param {GLint} height - height of the sub image to be updated\n * @param {GLint} level - mip level to be updated\n * @param {GLenum} format - internal format of image data.\n * @param {GLenum} type\n * - format of array (autodetect from type) or\n * - (WEBGL2) format of buffer or ArrayBufferView\n * @param {GLenum} dataFormat - format of image data.\n * @param {Number} offset - (WEBGL2) offset from start of buffer\n * @param {GLint} border - must be 0.\n * @parameters - temporary settings to be applied, can be used to supply pixel store settings.\n */\n setSubImageData({\n target = this.target,\n pixels = null,\n data = null,\n x = 0,\n y = 0,\n width = this.width,\n height = this.height,\n level = 0,\n format = this.format,\n type = this.type,\n dataFormat = this.dataFormat,\n compressed = false,\n offset = 0,\n border = this.border,\n parameters = {}\n }) {\n ({type, dataFormat, compressed, width, height} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n assert(this.depth === 0, 'texSubImage not supported for 3D textures');\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n data = pixels;\n }\n\n // Support ndarrays\n if (data && data.data) {\n const ndarray = data;\n data = ndarray.data;\n width = ndarray.shape[0];\n height = ndarray.shape[1];\n }\n\n // Support buffers\n if (data instanceof Buffer) {\n data = data.handle;\n }\n\n this.gl.bindTexture(this.target, this.handle);\n\n withParameters(this.gl, parameters, () => {\n // TODO - x,y parameters\n if (compressed) {\n this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);\n } else if (data === null) {\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);\n } else if (ArrayBuffer.isView(data)) {\n // const gl2 = assertWebGL2Context(this.gl);\n // @ts-ignore last offset parameter is ignored under WebGL1\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);\n } else if (data instanceof WebGLBuffer) {\n // WebGL2 allows us to create texture directly from a WebGL buffer\n const gl2 = assertWebGL2Context(this.gl);\n // This texImage2D signature uses currently bound GL.PIXEL_UNPACK_BUFFER\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data);\n gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);\n } else if (isWebGL2(this.gl)) {\n // Assume data is a browser supported object (ImageData, Canvas, ...)\n const gl2 = assertWebGL2Context(this.gl);\n gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);\n } else {\n this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);\n }\n });\n\n this.gl.bindTexture(this.target, null);\n }\n /* eslint-enable max-len, max-statements, complexity */\n\n /**\n * Defines a two-dimensional texture image or cube-map texture image with\n * pixels from the current framebuffer (rather than from client memory).\n * (gl.copyTexImage2D wrapper)\n *\n * Note that binding a texture into a Framebuffer's color buffer and\n * rendering can be faster.\n */\n copyFramebuffer(opts = {}) {\n log.error(\n 'Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})'\n )();\n return null;\n }\n\n getActiveUnit() {\n return this.gl.getParameter(GL.ACTIVE_TEXTURE) - GL.TEXTURE0;\n }\n\n // target cannot be modified by bind:\n // textures are special because when you first bind them to a target,\n // they get special information. When you first bind a texture as a\n // GL_TEXTURE_2D, you are actually setting special state in the texture.\n // You are saying that this texture is a 2D texture.\n // And it will always be a 2D texture; this state cannot be changed ever.\n // If you have a texture that was first bound as a GL_TEXTURE_2D,\n // you must always bind it as a GL_TEXTURE_2D;\n // attempting to bind it as GL_TEXTURE_1D will give rise to an error\n // (while run-time).\n\n bind(textureUnit = this.textureUnit) {\n const {gl} = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n }\n\n gl.bindTexture(this.target, this.handle);\n return textureUnit;\n }\n\n unbind(textureUnit = this.textureUnit) {\n const {gl} = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n }\n\n gl.bindTexture(this.target, null);\n return textureUnit;\n }\n\n // PRIVATE METHODS\n\n _getDataType({data, compressed = false}) {\n if (compressed) {\n return {data, dataType: 'compressed'};\n }\n if (data === null) {\n return {data, dataType: 'null'};\n }\n if (ArrayBuffer.isView(data)) {\n return {data, dataType: 'typed-array'};\n }\n if (data instanceof Buffer) {\n return {data: data.handle, dataType: 'buffer'};\n }\n if (data instanceof WebGLBuffer) {\n return {data, dataType: 'buffer'};\n }\n // Assume data is a browser supported object (ImageData, Canvas, ...)\n return {data, dataType: 'browser-object'};\n }\n\n /* Copied from texture-2d.js\n // WebGL2\n setPixels(opts = {}) {\n const {\n buffer,\n width = null,\n height = null,\n mipmapLevel = 0,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE,\n border = 0\n } = opts;\n\n const {gl} = this;\n\n // This signature of texImage2D uses currently bound GL.PIXEL_UNPACK_BUFFER\n gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, buffer.target);\n // And as always, we must also bind the texture itself\n this.bind();\n\n gl.texImage2D(gl.TEXTURE_2D,\n mipmapLevel, format, width, height, border, format, type, buffer.target);\n\n this.unbind();\n gl.bindBuffer(GL.GL.PIXEL_UNPACK_BUFFER, null);\n return this;\n }\n\n setImageDataFromCompressedBuffer(opts) {\n const {\n buffer,\n // offset = 0,\n width = null,\n height = null,\n mipmapLevel = 0,\n internalFormat = GL.RGBA,\n // format = GL.RGBA,\n // type = GL.UNSIGNED_BYTE,\n border = 0\n } = opts;\n\n const {gl} = this;\n gl.compressedTexImage2D(this.target,\n mipmapLevel, internalFormat, width, height, border, buffer);\n // gl.compressedTexSubImage2D(target,\n // level, xoffset, yoffset, width, height, format, ArrayBufferView? pixels);\n return this;\n }\n\n copySubImage(opts) {\n const {\n // pixels,\n // offset = 0,\n // x,\n // y,\n // width,\n // height,\n // mipmapLevel = 0,\n // internalFormat = GL.RGBA,\n // type = GL.UNSIGNED_BYTE,\n // border = 0\n } = opts;\n\n // if (pixels instanceof ArrayBufferView) {\n // gl.texSubImage2D(target, level, x, y, width, height, format, type, pixels);\n // }\n // gl.texSubImage2D(target, level, x, y, format, type, ? pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLImageElement pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLCanvasElement pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLVideoElement pixels);\n // // Additional signature in a WebGL 2 context:\n // gl.texSubImage2D(target, level, x, y, format, type, GLintptr offset);\n }\n */\n\n // HELPER METHODS\n\n _deduceParameters(opts) {\n const {format, data} = opts;\n let {width, height, dataFormat, type, compressed} = opts;\n\n // Deduce format and type from format\n const textureFormat = TEXTURE_FORMATS[format];\n dataFormat = dataFormat || (textureFormat && textureFormat.dataFormat);\n type = type || (textureFormat && textureFormat.types[0]);\n\n // Deduce compression from format\n compressed = compressed || (textureFormat && textureFormat.compressed);\n\n ({width, height} = this._deduceImageSize(data, width, height));\n\n return {dataFormat, type, compressed, width, height, format, data};\n }\n\n // eslint-disable-next-line complexity\n _deduceImageSize(data, width, height) {\n let size;\n\n if (typeof ImageData !== 'undefined' && data instanceof ImageData) {\n size = {width: data.width, height: data.height};\n } else if (typeof HTMLImageElement !== 'undefined' && data instanceof HTMLImageElement) {\n size = {width: data.naturalWidth, height: data.naturalHeight};\n } else if (typeof HTMLCanvasElement !== 'undefined' && data instanceof HTMLCanvasElement) {\n size = {width: data.width, height: data.height};\n } else if (typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) {\n size = {width: data.width, height: data.height};\n } else if (typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement) {\n size = {width: data.videoWidth, height: data.videoHeight};\n } else if (!data) {\n size = {width: width >= 0 ? width : 1, height: height >= 0 ? height : 1};\n } else {\n size = {width, height};\n }\n\n assert(size, 'Could not deduced texture size');\n assert(\n width === undefined || size.width === width,\n 'Deduced texture width does not match supplied width'\n );\n assert(\n height === undefined || size.height === height,\n 'Deduced texture height does not match supplied height'\n );\n\n return size;\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createTexture();\n }\n\n _deleteHandle() {\n this.gl.deleteTexture(this.handle);\n this._trackDeallocatedMemory('Texture');\n }\n\n _getParameter(pname) {\n switch (pname) {\n case GL.TEXTURE_WIDTH:\n return this.width;\n case GL.TEXTURE_HEIGHT:\n return this.height;\n default:\n this.gl.bindTexture(this.target, this.handle);\n const value = this.gl.getTexParameter(this.target, pname);\n this.gl.bindTexture(this.target, null);\n return value;\n }\n }\n\n _setParameter(pname, param) {\n this.gl.bindTexture(this.target, this.handle);\n\n // NOTE: Apply NPOT workaround\n param = this._getNPOTParam(pname, param);\n\n // Apparently there are some integer/float conversion rules that made\n // the WebGL committe expose two parameter setting functions in JavaScript.\n // For now, pick the float version for parameters specified as GLfloat.\n switch (pname) {\n case GL.TEXTURE_MIN_LOD:\n case GL.TEXTURE_MAX_LOD:\n this.gl.texParameterf(this.handle, pname, param);\n break;\n\n case GL.TEXTURE_WIDTH:\n case GL.TEXTURE_HEIGHT:\n assert(false);\n break;\n\n default:\n this.gl.texParameteri(this.target, pname, param);\n break;\n }\n\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n _isNPOT() {\n if (isWebGL2(this.gl)) {\n // NPOT restriction is only for WebGL1\n return false;\n }\n // Width and height not available, consider it is not NPOT texture\n if (!this.width || !this.height) {\n return false;\n }\n return !isPowerOfTwo(this.width) || !isPowerOfTwo(this.height);\n }\n\n // Update default settings which are not supported by NPOT textures.\n _updateForNPOT(parameters) {\n if (parameters[this.gl.TEXTURE_MIN_FILTER] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();\n parameters[this.gl.TEXTURE_MIN_FILTER] = this.gl.LINEAR;\n }\n if (parameters[this.gl.TEXTURE_WRAP_S] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_S to CLAMP_TO_EDGE`)();\n parameters[this.gl.TEXTURE_WRAP_S] = this.gl.CLAMP_TO_EDGE;\n }\n if (parameters[this.gl.TEXTURE_WRAP_T] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_T to CLAMP_TO_EDGE`)();\n parameters[this.gl.TEXTURE_WRAP_T] = this.gl.CLAMP_TO_EDGE;\n }\n }\n\n _getNPOTParam(pname, param) {\n if (this._isNPOT()) {\n switch (pname) {\n case GL.TEXTURE_MIN_FILTER:\n if (NPOT_MIN_FILTERS.indexOf(param) === -1) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();\n param = GL.LINEAR;\n }\n break;\n case GL.TEXTURE_WRAP_S:\n case GL.TEXTURE_WRAP_T:\n if (param !== GL.CLAMP_TO_EDGE) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, ${getKey(this.gl, pname)} to CLAMP_TO_EDGE`)();\n param = GL.CLAMP_TO_EDGE;\n }\n break;\n default:\n break;\n }\n }\n return param;\n }\n}\n","import { isWebGL2 } from '@luma.gl/gltools';\nexport const TEXTURE_FORMATS = {\n [6407]: {\n dataFormat: 6407,\n types: [5121, 33635]\n },\n [6408]: {\n dataFormat: 6408,\n types: [5121, 32819, 32820]\n },\n [6406]: {\n dataFormat: 6406,\n types: [5121]\n },\n [6409]: {\n dataFormat: 6409,\n types: [5121]\n },\n [6410]: {\n dataFormat: 6410,\n types: [5121]\n },\n [33326]: {\n dataFormat: 6403,\n types: [5126],\n gl2: true\n },\n [33328]: {\n dataFormat: 33319,\n types: [5126],\n gl2: true\n },\n [34837]: {\n dataFormat: 6407,\n types: [5126],\n gl2: true\n },\n [34836]: {\n dataFormat: 6408,\n types: [5126],\n gl2: true\n }\n};\nexport const DATA_FORMAT_CHANNELS = {\n [6403]: 1,\n [36244]: 1,\n [33319]: 2,\n [33320]: 2,\n [6407]: 3,\n [36248]: 3,\n [6408]: 4,\n [36249]: 4,\n [6402]: 1,\n [34041]: 1,\n [6406]: 1,\n [6409]: 1,\n [6410]: 2\n};\nexport const TYPE_SIZES = {\n [5126]: 4,\n [5125]: 4,\n [5124]: 4,\n [5123]: 2,\n [5122]: 2,\n [5131]: 2,\n [5120]: 1,\n [5121]: 1\n};\nexport function isFormatSupported(gl, format) {\n const info = TEXTURE_FORMATS[format];\n\n if (!info) {\n return false;\n }\n\n if (info.gl1 === undefined && info.gl2 === undefined) {\n return true;\n }\n\n const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;\n return typeof value === 'string' ? gl.getExtension(value) : value;\n}\nexport function isLinearFilteringSupported(gl, format) {\n const info = TEXTURE_FORMATS[format];\n\n switch (info && info.types[0]) {\n case 5126:\n return gl.getExtension('OES_texture_float_linear');\n\n case 5131:\n return gl.getExtension('OES_texture_half_float_linear');\n\n default:\n return true;\n }\n}\n//# sourceMappingURL=texture-formats.js.map","import GL from '@luma.gl/constants';\nimport {isWebGL2} from '@luma.gl/gltools';\n\n// const S3TC = 'WEBGL_compressed_texture_s3tc';\n// const PVRTC = 'WEBGL_compressed_texture_pvrtc';\n// const ES3 = 'WEBGL_compressed_texture_es3';\n// const ETC1 = 'WEBGL_compressed_texture_etc1';\n// const SRGB = 'EXT_sRGB';\n// const DEPTH = 'WEBGL_depth_texture';\n\n// Legal combinations for internalFormat, format and type\nexport const TEXTURE_FORMATS = {\n // Unsized texture format - more performance\n [GL.RGB]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5]},\n // TODO: format: GL.RGBA type: GL.FLOAT is supported in WebGL1 when 'OES_texure_float' is suported\n // we need to update this table structure to specify extensions (gl1: 'OES_texure_float', gl2: false) for each type.\n [GL.RGBA]: {\n dataFormat: GL.RGBA,\n types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4, GL.UNSIGNED_SHORT_5_5_5_1]\n },\n [GL.ALPHA]: {dataFormat: GL.ALPHA, types: [GL.UNSIGNED_BYTE]},\n [GL.LUMINANCE]: {dataFormat: GL.LUMINANCE, types: [GL.UNSIGNED_BYTE]},\n [GL.LUMINANCE_ALPHA]: {dataFormat: GL.LUMINANCE_ALPHA, types: [GL.UNSIGNED_BYTE]},\n\n // 32 bit floats\n [GL.R32F]: {dataFormat: GL.RED, types: [GL.FLOAT], gl2: true},\n [GL.RG32F]: {dataFormat: GL.RG, types: [GL.FLOAT], gl2: true},\n [GL.RGB32F]: {dataFormat: GL.RGB, types: [GL.FLOAT], gl2: true},\n [GL.RGBA32F]: {dataFormat: GL.RGBA, types: [GL.FLOAT], gl2: true}\n\n // [GL.DEPTH_COMPONENT]: {types: [GL.UNSIGNED_SHORT, GL.UNSIGNED_INT, GL.UNSIGNED_INT_24_8], gl1: DEPTH},\n // [GL.DEPTH_STENCIL]: {gl1: DEPTH},\n\n // Sized texture format - more performance\n // R\n // [GL.R8]: {dataFormat: GL.RED, types: [GL.UNSIGNED_BYTE], gl2: true},\n // [GL.R16F]: {dataFormat: GL.RED, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.R8UI]: {dataFormat: GL.RED_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RG\n // [GL.RG8]: {dataFormat: GL.RG, types: [GL.UNSIGNED_BYTE], gl2: true},\n // [GL.RG16F]: {dataFormat: GL.RG, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RG8UI]: {dataFormat: GL.RG_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RGB\n // [GL.RGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.SRGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.RGB565]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5], gl2: true},\n // [GL.R11F_G11F_B10F]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_INT_10F_11F_11F_REV, GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RGB9_E5]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1: 'WEBGL_color_buffer_half_float'},\n // [GL.RGB16F]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1: 'WEBGL_color_buffer_float'},\n // [GL.RGB8UI]: {dataFormat: GL.RGB_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RGBA\n // [GL.RGBA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.SRGB8_ALPHA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.RGB5_A1]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_5_5_1], gl2: true},\n // [GL.RGBA4]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4], gl2: true},\n // [GL.RGBA16F]: {dataFormat: GL.RGBA, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RGBA8UI]: {dataFormat: GL.RGBA_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true}\n\n // Compressed formats\n\n // WEBGL_compressed_texture_s3tc\n\n // [GL.COMPRESSED_RGB_S3TC_DXT1_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT1_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT3_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT5_EXT]: {compressed: true, gl1: S3TC},\n\n // WEBGL_compressed_texture_es3\n\n // [GL.COMPRESSED_R11_EAC]: {compressed: true, gl1: ES3}, // RED\n // [GL.COMPRESSED_SIGNED_R11_EAC]: {compressed: true, gl1: ES3}, // RED\n // [GL.COMPRESSED_RG11_EAC]: {compressed: true, gl1: ES3}, // RG\n // [GL.COMPRESSED_SIGNED_RG11_EAC]: {compressed: true, gl1: ES3}, // RG\n // [GL.COMPRESSED_RGB8_ETC2]: {compressed: true, gl1: ES3}, // RGB\n // [GL.COMPRESSED_RGBA8_ETC2_EAC]: {compressed: true, gl1: ES3}, // RBG\n // [GL.COMPRESSED_SRGB8_ETC2]: {compressed: true, gl1: ES3}, // RGB\n // [GL.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC]: {compressed: true, gl1: ES3}, // RGBA\n // [GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2]: {compressed: true, gl1: ES3}, // RGBA\n // [GL.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2]: {compressed: true, gl1: ES3}, // RGBA\n /* WebGL2 guaranteed availability compressed formats?\n COMPRESSED_R11_EAC RED\n COMPRESSED_SIGNED_R11_EAC RED\n COMPRESSED_RG11_EAC RG\n COMPRESSED_SIGNED_RG11_EAC RG\n COMPRESSED_RGB8_ETC2 RGB\n COMPRESSED_SRGB8_ETC2 RGB\n COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 RGBA\n COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 RGBA\n COMPRESSED_RGBA8_ETC2_EAC RGBA\n COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\n */\n\n // WEBGL_compressed_texture_pvrtc\n\n // [GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n\n // WEBGL_compressed_texture_etc1\n\n // [GL.COMPRESSED_RGB_ETC1_WEBGL]: {compressed: true, gl1: ETC1},\n\n // WEBGL_compressed_texture_atc\n\n // [GL.COMPRESSED_RGB_ATC_WEBGL]: {compressed: true, gl1: ETC1},\n // [GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL]: {compressed: true, gl1: ETC1},\n // [GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL]: {compressed: true, gl1: ETC1}\n};\n\nexport const DATA_FORMAT_CHANNELS = {\n [GL.RED]: 1,\n [GL.RED_INTEGER]: 1,\n [GL.RG]: 2,\n [GL.RG_INTEGER]: 2,\n [GL.RGB]: 3,\n [GL.RGB_INTEGER]: 3,\n [GL.RGBA]: 4,\n [GL.RGBA_INTEGER]: 4,\n [GL.DEPTH_COMPONENT]: 1,\n [GL.DEPTH_STENCIL]: 1,\n [GL.ALPHA]: 1,\n [GL.LUMINANCE]: 1,\n [GL.LUMINANCE_ALPHA]: 2\n};\n\nexport const TYPE_SIZES = {\n [GL.FLOAT]: 4,\n [GL.UNSIGNED_INT]: 4,\n [GL.INT]: 4,\n [GL.UNSIGNED_SHORT]: 2,\n [GL.SHORT]: 2,\n [GL.HALF_FLOAT]: 2,\n [GL.BYTE]: 1,\n [GL.UNSIGNED_BYTE]: 1\n};\n\nexport function isFormatSupported(gl, format) {\n const info = TEXTURE_FORMATS[format];\n if (!info) {\n return false;\n }\n if (info.gl1 === undefined && info.gl2 === undefined) {\n // No info - always supported\n return true;\n }\n const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;\n return typeof value === 'string' ? gl.getExtension(value) : value;\n}\n\nexport function isLinearFilteringSupported(gl, format) {\n const info = TEXTURE_FORMATS[format];\n switch (info && info.types[0]) {\n // Both WebGL1 and WebGL2?\n case GL.FLOAT:\n return gl.getExtension('OES_texture_float_linear');\n // Not in WebGL2?\n case GL.HALF_FLOAT:\n return gl.getExtension('OES_texture_half_float_linear');\n default:\n return true;\n }\n}\n","import { assert } from '../utils/assert';\nlet pathPrefix = '';\nexport function setPathPrefix(prefix) {\n pathPrefix = prefix;\n}\nexport function loadFile(url) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n assert(typeof url === 'string');\n url = pathPrefix + url;\n const dataType = options.dataType || 'text';\n return fetch(url, options).then(res => res[dataType]());\n}\nexport function loadImage(url, opts) {\n assert(typeof url === 'string');\n url = pathPrefix + url;\n return new Promise((resolve, reject) => {\n try {\n const image = new Image();\n\n image.onload = () => resolve(image);\n\n image.onerror = () => reject(new Error(\"Could not load image \".concat(url, \".\")));\n\n image.crossOrigin = opts && opts.crossOrigin || 'anonymous';\n image.src = url;\n } catch (error) {\n reject(error);\n }\n });\n}\n//# sourceMappingURL=load-file.js.map","import {assert} from '../utils/assert';\n\nlet pathPrefix = '';\n\n/*\n * Set a relative path prefix\n */\nexport function setPathPrefix(prefix) {\n pathPrefix = prefix;\n}\n\n// Reads raw file data from:\nexport function loadFile(url, options = {}) {\n assert(typeof url === 'string');\n url = pathPrefix + url;\n const dataType = options.dataType || 'text';\n return fetch(url, options).then(res => res[dataType]());\n}\n\n/*\n * Loads images asynchronously\n * image.crossOrigin can be set via opts.crossOrigin, default to 'anonymous'\n * returns a promise tracking the load\n */\nexport function loadImage(url, opts) {\n assert(typeof url === 'string');\n url = pathPrefix + url;\n return new Promise((resolve, reject) => {\n try {\n const image = new Image();\n image.onload = () => resolve(image);\n image.onerror = () => reject(new Error(`Could not load image ${url}.`));\n image.crossOrigin = (opts && opts.crossOrigin) || 'anonymous';\n image.src = url;\n } catch (error) {\n reject(error);\n }\n });\n}\n","import Resource from './resource';\nimport RENDERBUFFER_FORMATS from './renderbuffer-formats';\nimport { isWebGL2 } from '@luma.gl/gltools';\nimport { assert } from '../utils/assert';\n\nfunction isFormatSupported(gl, format, formats) {\n const info = formats[format];\n\n if (!info) {\n return false;\n }\n\n const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;\n\n if (typeof value === 'string') {\n return gl.getExtension(value);\n }\n\n return value;\n}\n\nexport default class Renderbuffer extends Resource {\n get [Symbol.toStringTag]() {\n return 'Renderbuffer';\n }\n\n static isSupported(gl) {\n let {\n format\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n format: null\n };\n return !format || isFormatSupported(gl, format, RENDERBUFFER_FORMATS);\n }\n\n static getSamplesForFormat(gl, _ref) {\n let {\n format\n } = _ref;\n return gl.getInternalformatParameter(36161, format, 32937);\n }\n\n constructor(gl) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(gl, opts);\n this.initialize(opts);\n Object.seal(this);\n }\n\n initialize(_ref2) {\n let {\n format,\n width = 1,\n height = 1,\n samples = 0\n } = _ref2;\n assert(format, 'Needs format');\n\n this._trackDeallocatedMemory();\n\n this.gl.bindRenderbuffer(36161, this.handle);\n\n if (samples !== 0 && isWebGL2(this.gl)) {\n this.gl.renderbufferStorageMultisample(36161, samples, format, width, height);\n } else {\n this.gl.renderbufferStorage(36161, format, width, height);\n }\n\n this.format = format;\n this.width = width;\n this.height = height;\n this.samples = samples;\n\n this._trackAllocatedMemory(this.width * this.height * (this.samples || 1) * RENDERBUFFER_FORMATS[this.format].bpp);\n\n return this;\n }\n\n resize(_ref3) {\n let {\n width,\n height\n } = _ref3;\n\n if (width !== this.width || height !== this.height) {\n return this.initialize({\n width,\n height,\n format: this.format,\n samples: this.samples\n });\n }\n\n return this;\n }\n\n _createHandle() {\n return this.gl.createRenderbuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteRenderbuffer(this.handle);\n\n this._trackDeallocatedMemory();\n }\n\n _bindHandle(handle) {\n this.gl.bindRenderbuffer(36161, handle);\n }\n\n _syncHandle(handle) {\n this.format = this.getParameter(36164);\n this.width = this.getParameter(36162);\n this.height = this.getParameter(36163);\n this.samples = this.getParameter(36011);\n }\n\n _getParameter(pname) {\n this.gl.bindRenderbuffer(36161, this.handle);\n const value = this.gl.getRenderbufferParameter(36161, pname);\n return value;\n }\n\n}\n//# sourceMappingURL=renderbuffer.js.map","/* eslint-disable no-inline-comments */\nimport GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport RENDERBUFFER_FORMATS from './renderbuffer-formats';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\n\nfunction isFormatSupported(gl, format, formats) {\n const info = formats[format];\n if (!info) {\n return false;\n }\n const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;\n if (typeof value === 'string') {\n return gl.getExtension(value);\n }\n return value;\n}\n\nexport default class Renderbuffer extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Renderbuffer';\n }\n static isSupported(gl, {format} = {format: null}) {\n return !format || isFormatSupported(gl, format, RENDERBUFFER_FORMATS);\n }\n\n static getSamplesForFormat(gl, {format}) {\n // Polyfilled to return [0] under WebGL1\n return gl.getInternalformatParameter(GL.RENDERBUFFER, format, GL.SAMPLES);\n }\n\n constructor(gl, opts = {}) {\n super(gl, opts);\n\n // @ts-ignore\n this.initialize(opts);\n\n Object.seal(this);\n }\n\n // Creates and initializes a renderbuffer object's data store\n initialize({format, width = 1, height = 1, samples = 0}) {\n assert(format, 'Needs format');\n\n this._trackDeallocatedMemory();\n\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);\n\n if (samples !== 0 && isWebGL2(this.gl)) {\n // @ts-ignore\n this.gl.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, format, width, height);\n } else {\n this.gl.renderbufferStorage(GL.RENDERBUFFER, format, width, height);\n }\n\n // this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n\n this.format = format;\n this.width = width;\n this.height = height;\n this.samples = samples;\n\n this._trackAllocatedMemory(\n this.width * this.height * (this.samples || 1) * RENDERBUFFER_FORMATS[this.format].bpp\n );\n\n return this;\n }\n\n resize({width, height}) {\n // Don't resize if width/height haven't changed\n if (width !== this.width || height !== this.height) {\n return this.initialize({width, height, format: this.format, samples: this.samples});\n }\n return this;\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createRenderbuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteRenderbuffer(this.handle);\n this._trackDeallocatedMemory();\n }\n\n _bindHandle(handle) {\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, handle);\n }\n\n _syncHandle(handle) {\n this.format = this.getParameter(GL.RENDERBUFFER_INTERNAL_FORMAT);\n this.width = this.getParameter(GL.RENDERBUFFER_WIDTH);\n this.height = this.getParameter(GL.RENDERBUFFER_HEIGHT);\n this.samples = this.getParameter(GL.RENDERBUFFER_SAMPLES);\n }\n\n // @param {Boolean} opt.autobind=true - method call will bind/unbind object\n // @returns {GLenum|GLint} - depends on pname\n _getParameter(pname) {\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);\n const value = this.gl.getRenderbufferParameter(GL.RENDERBUFFER, pname);\n // this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n return value;\n }\n}\n","const EXT_FLOAT_WEBGL2 = 'EXT_color_buffer_float';\nexport default {\n [33189]: {\n bpp: 2\n },\n [33190]: {\n gl2: true,\n bpp: 3\n },\n [36012]: {\n gl2: true,\n bpp: 4\n },\n [36168]: {\n bpp: 1\n },\n [34041]: {\n bpp: 4\n },\n [35056]: {\n gl2: true,\n bpp: 4\n },\n [36013]: {\n gl2: true,\n bpp: 5\n },\n [32854]: {\n bpp: 2\n },\n [36194]: {\n bpp: 2\n },\n [32855]: {\n bpp: 2\n },\n [33321]: {\n gl2: true,\n bpp: 1\n },\n [33330]: {\n gl2: true,\n bpp: 1\n },\n [33329]: {\n gl2: true,\n bpp: 1\n },\n [33332]: {\n gl2: true,\n bpp: 2\n },\n [33331]: {\n gl2: true,\n bpp: 2\n },\n [33334]: {\n gl2: true,\n bpp: 4\n },\n [33333]: {\n gl2: true,\n bpp: 4\n },\n [33323]: {\n gl2: true,\n bpp: 2\n },\n [33336]: {\n gl2: true,\n bpp: 2\n },\n [33335]: {\n gl2: true,\n bpp: 2\n },\n [33338]: {\n gl2: true,\n bpp: 4\n },\n [33337]: {\n gl2: true,\n bpp: 4\n },\n [33340]: {\n gl2: true,\n bpp: 8\n },\n [33339]: {\n gl2: true,\n bpp: 8\n },\n [32849]: {\n gl2: true,\n bpp: 3\n },\n [32856]: {\n gl2: true,\n bpp: 4\n },\n [32857]: {\n gl2: true,\n bpp: 4\n },\n [36220]: {\n gl2: true,\n bpp: 4\n },\n [36238]: {\n gl2: true,\n bpp: 4\n },\n [36975]: {\n gl2: true,\n bpp: 4\n },\n [36214]: {\n gl2: true,\n bpp: 8\n },\n [36232]: {\n gl2: true,\n bpp: 8\n },\n [36226]: {\n gl2: true,\n bpp: 16\n },\n [36208]: {\n gl2: true,\n bpp: 16\n },\n [33325]: {\n gl2: EXT_FLOAT_WEBGL2,\n bpp: 2\n },\n [33327]: {\n gl2: EXT_FLOAT_WEBGL2,\n bpp: 4\n },\n [34842]: {\n gl2: EXT_FLOAT_WEBGL2,\n bpp: 8\n },\n [33326]: {\n gl2: EXT_FLOAT_WEBGL2,\n bpp: 4\n },\n [33328]: {\n gl2: EXT_FLOAT_WEBGL2,\n bpp: 8\n },\n [34836]: {\n gl2: EXT_FLOAT_WEBGL2,\n bpp: 16\n },\n [35898]: {\n gl2: EXT_FLOAT_WEBGL2,\n bpp: 4\n }\n};\n//# sourceMappingURL=renderbuffer-formats.js.map","import GL from '@luma.gl/constants';\n\n// Define local extension strings to optimize minification\n// const SRGB = 'EXT_sRGB';\n// const EXT_FLOAT_WEBGL1 = 'WEBGL_color_buffer_float';\nconst EXT_FLOAT_WEBGL2 = 'EXT_color_buffer_float';\n// const EXT_HALF_FLOAT_WEBGL1 = 'EXT_color_buffer_half_float';\n\n// NOTE(Tarek): bpp === \"bytes per pixel\", used for\n// memory usage calculations.\nexport default {\n [GL.DEPTH_COMPONENT16]: {bpp: 2}, // 16 depth bits.\n [GL.DEPTH_COMPONENT24]: {gl2: true, bpp: 3},\n [GL.DEPTH_COMPONENT32F]: {gl2: true, bpp: 4},\n\n [GL.STENCIL_INDEX8]: {bpp: 1}, // 8 stencil bits.\n\n [GL.DEPTH_STENCIL]: {bpp: 4},\n [GL.DEPTH24_STENCIL8]: {gl2: true, bpp: 4},\n [GL.DEPTH32F_STENCIL8]: {gl2: true, bpp: 5},\n\n // When using a WebGL 1 context, color renderbuffer formats are limited\n [GL.RGBA4]: {bpp: 2},\n [GL.RGB565]: {bpp: 2},\n [GL.RGB5_A1]: {bpp: 2},\n\n // When using a WebGL 2 context, the following values are available additionally:\n [GL.R8]: {gl2: true, bpp: 1},\n [GL.R8UI]: {gl2: true, bpp: 1},\n [GL.R8I]: {gl2: true, bpp: 1},\n [GL.R16UI]: {gl2: true, bpp: 2},\n [GL.R16I]: {gl2: true, bpp: 2},\n [GL.R32UI]: {gl2: true, bpp: 4},\n [GL.R32I]: {gl2: true, bpp: 4},\n [GL.RG8]: {gl2: true, bpp: 2},\n [GL.RG8UI]: {gl2: true, bpp: 2},\n [GL.RG8I]: {gl2: true, bpp: 2},\n [GL.RG16UI]: {gl2: true, bpp: 4},\n [GL.RG16I]: {gl2: true, bpp: 4},\n [GL.RG32UI]: {gl2: true, bpp: 8},\n [GL.RG32I]: {gl2: true, bpp: 8},\n [GL.RGB8]: {gl2: true, bpp: 3},\n [GL.RGBA8]: {gl2: true, bpp: 4},\n // [GL.SRGB8_ALPHA8]: {gl2: true, gl1: SRGB}, // When using the EXT_sRGB WebGL1 extension\n [GL.RGB10_A2]: {gl2: true, bpp: 4},\n [GL.RGBA8UI]: {gl2: true, bpp: 4},\n [GL.RGBA8I]: {gl2: true, bpp: 4},\n [GL.RGB10_A2UI]: {gl2: true, bpp: 4},\n [GL.RGBA16UI]: {gl2: true, bpp: 8},\n [GL.RGBA16I]: {gl2: true, bpp: 8},\n [GL.RGBA32I]: {gl2: true, bpp: 16},\n [GL.RGBA32UI]: {gl2: true, bpp: 16},\n\n // When using a WebGL 2 context and the EXT_color_buffer_float WebGL2 extension\n [GL.R16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 2},\n [GL.RG16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4},\n [GL.RGBA16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 8},\n [GL.R32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4},\n [GL.RG32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 8},\n // TODO - can't get WEBGL_color_buffer_float to work on renderbuffers\n [GL.RGBA32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 16},\n // [GL.RGBA32F]: {gl2: EXT_FLOAT_WEBGL2, gl1: EXT_FLOAT_WEBGL1},\n [GL.R11F_G11F_B10F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4}\n};\n","import { assertWebGL2Context, withParameters } from '@luma.gl/gltools';\nimport { assert } from '../utils/assert';\nconst GL_DEPTH_BUFFER_BIT = 0x00000100;\nconst GL_STENCIL_BUFFER_BIT = 0x00000400;\nconst GL_COLOR_BUFFER_BIT = 0x00004000;\nconst GL_COLOR = 0x1800;\nconst GL_DEPTH = 0x1801;\nconst GL_STENCIL = 0x1802;\nconst GL_DEPTH_STENCIL = 0x84f9;\nconst ERR_ARGUMENTS = 'clear: bad arguments';\nexport function clear(gl) {\n let {\n framebuffer = null,\n color = null,\n depth = null,\n stencil = null\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const parameters = {};\n\n if (framebuffer) {\n parameters.framebuffer = framebuffer;\n }\n\n let clearFlags = 0;\n\n if (color) {\n clearFlags |= GL_COLOR_BUFFER_BIT;\n\n if (color !== true) {\n parameters.clearColor = color;\n }\n }\n\n if (depth) {\n clearFlags |= GL_DEPTH_BUFFER_BIT;\n\n if (depth !== true) {\n parameters.clearDepth = depth;\n }\n }\n\n if (stencil) {\n clearFlags |= GL_STENCIL_BUFFER_BIT;\n\n if (depth !== true) {\n parameters.clearStencil = depth;\n }\n }\n\n assert(clearFlags !== 0, ERR_ARGUMENTS);\n withParameters(gl, parameters, () => {\n gl.clear(clearFlags);\n });\n}\nexport function clearBuffer(gl) {\n let {\n framebuffer = null,\n buffer = GL_COLOR,\n drawBuffer = 0,\n value = [0, 0, 0, 0]\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n assertWebGL2Context(gl);\n withParameters(gl, {\n framebuffer\n }, () => {\n switch (buffer) {\n case GL_COLOR:\n switch (value.constructor) {\n case Int32Array:\n gl.clearBufferiv(buffer, drawBuffer, value);\n break;\n\n case Uint32Array:\n gl.clearBufferuiv(buffer, drawBuffer, value);\n break;\n\n case Float32Array:\n default:\n gl.clearBufferfv(buffer, drawBuffer, value);\n }\n\n break;\n\n case GL_DEPTH:\n gl.clearBufferfv(GL_DEPTH, 0, [value]);\n break;\n\n case GL_STENCIL:\n gl.clearBufferiv(GL_STENCIL, 0, [value]);\n break;\n\n case GL_DEPTH_STENCIL:\n const [depth, stencil] = value;\n gl.clearBufferfi(GL_DEPTH_STENCIL, 0, depth, stencil);\n break;\n\n default:\n assert(false, ERR_ARGUMENTS);\n }\n });\n}\n//# sourceMappingURL=clear.js.map","import {assertWebGL2Context, withParameters} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\n\n// Should collapse during minification\nconst GL_DEPTH_BUFFER_BIT = 0x00000100;\nconst GL_STENCIL_BUFFER_BIT = 0x00000400;\nconst GL_COLOR_BUFFER_BIT = 0x00004000;\n\nconst GL_COLOR = 0x1800;\nconst GL_DEPTH = 0x1801;\nconst GL_STENCIL = 0x1802;\nconst GL_DEPTH_STENCIL = 0x84f9;\n\n// Should disappear if asserts are removed\nconst ERR_ARGUMENTS = 'clear: bad arguments';\n\n// Optionally clears depth, color and stencil buffers\n/** @type {import('./clear').clear} */\nexport function clear(gl, {framebuffer = null, color = null, depth = null, stencil = null} = {}) {\n const parameters = {};\n\n if (framebuffer) {\n parameters.framebuffer = framebuffer;\n }\n\n let clearFlags = 0;\n\n if (color) {\n clearFlags |= GL_COLOR_BUFFER_BIT;\n if (color !== true) {\n parameters.clearColor = color;\n }\n }\n\n if (depth) {\n clearFlags |= GL_DEPTH_BUFFER_BIT;\n if (depth !== true) {\n parameters.clearDepth = depth;\n }\n }\n\n if (stencil) {\n clearFlags |= GL_STENCIL_BUFFER_BIT;\n if (depth !== true) {\n parameters.clearStencil = depth;\n }\n }\n\n assert(clearFlags !== 0, ERR_ARGUMENTS);\n\n // Temporarily set any clear \"colors\" and call clear\n withParameters(gl, parameters, () => {\n gl.clear(clearFlags);\n });\n}\n\n// WebGL2 - clear a specific drawing buffer\n/** @type {import('./clear').clearBuffer} */\nexport function clearBuffer(\n gl,\n {framebuffer = null, buffer = GL_COLOR, drawBuffer = 0, value = [0, 0, 0, 0]} = {}\n) {\n assertWebGL2Context(gl);\n\n withParameters(gl, {framebuffer}, () => {\n // Method selection per OpenGL ES 3 docs\n switch (buffer) {\n case GL_COLOR:\n switch (value.constructor) {\n case Int32Array:\n gl.clearBufferiv(buffer, drawBuffer, value);\n break;\n case Uint32Array:\n gl.clearBufferuiv(buffer, drawBuffer, value);\n break;\n case Float32Array:\n default:\n gl.clearBufferfv(buffer, drawBuffer, value);\n }\n break;\n\n case GL_DEPTH:\n gl.clearBufferfv(GL_DEPTH, 0, [value]);\n break;\n\n case GL_STENCIL:\n gl.clearBufferiv(GL_STENCIL, 0, [value]);\n break;\n\n case GL_DEPTH_STENCIL:\n const [depth, stencil] = value;\n gl.clearBufferfi(GL_DEPTH_STENCIL, 0, depth, stencil);\n break;\n\n default:\n assert(false, ERR_ARGUMENTS);\n }\n });\n}\n","import Buffer from './buffer';\nimport Framebuffer from './framebuffer';\nimport Texture from './texture';\nimport { assertWebGL2Context, withParameters, log } from '@luma.gl/gltools';\nimport { flipRows, scalePixels } from '../webgl-utils/typed-array-utils';\nimport { getTypedArrayFromGLType, getGLTypeFromTypedArray } from '../webgl-utils/typed-array-utils';\nimport { glFormatToComponents, glTypeToBytes } from '../webgl-utils/format-utils';\nimport { toFramebuffer } from '../webgl-utils/texture-utils';\nimport { assert } from '../utils/assert';\nexport function readPixelsToArray(source) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n sourceX = 0,\n sourceY = 0,\n sourceFormat = 6408\n } = options;\n let {\n sourceAttachment = 36064,\n target = null,\n sourceWidth,\n sourceHeight,\n sourceType\n } = options;\n const {\n framebuffer,\n deleteFramebuffer\n } = getFramebuffer(source);\n assert(framebuffer);\n const {\n gl,\n handle,\n attachments\n } = framebuffer;\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n if (sourceAttachment === 36064 && handle === null) {\n sourceAttachment = 1028;\n }\n\n assert(attachments[sourceAttachment]);\n sourceType = sourceType || attachments[sourceAttachment].type;\n target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);\n sourceType = sourceType || getGLTypeFromTypedArray(target);\n const prevHandle = gl.bindFramebuffer(36160, handle);\n gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);\n gl.bindFramebuffer(36160, prevHandle || null);\n\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n\n return target;\n}\nexport function readPixelsToBuffer(source, _ref) {\n let {\n sourceX = 0,\n sourceY = 0,\n sourceFormat = 6408,\n target = null,\n targetByteOffset = 0,\n sourceWidth,\n sourceHeight,\n sourceType\n } = _ref;\n const {\n framebuffer,\n deleteFramebuffer\n } = getFramebuffer(source);\n assert(framebuffer);\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n const gl2 = assertWebGL2Context(framebuffer.gl);\n sourceType = sourceType || (target ? target.type : 5121);\n\n if (!target) {\n const components = glFormatToComponents(sourceFormat);\n const byteCount = glTypeToBytes(sourceType);\n const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;\n target = new Buffer(gl2, {\n byteLength,\n accessor: {\n type: sourceType,\n size: components\n }\n });\n }\n\n target.bind({\n target: 35051\n });\n withParameters(gl2, {\n framebuffer\n }, () => {\n gl2.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, targetByteOffset);\n });\n target.unbind({\n target: 35051\n });\n\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n\n return target;\n}\nexport function copyToDataUrl(source) {\n let {\n sourceAttachment = 36064,\n targetMaxHeight = Number.MAX_SAFE_INTEGER\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let data = readPixelsToArray(source, {\n sourceAttachment\n });\n let {\n width,\n height\n } = source;\n\n while (height > targetMaxHeight) {\n ({\n data,\n width,\n height\n } = scalePixels({\n data,\n width,\n height\n }));\n }\n\n flipRows({\n data,\n width,\n height\n });\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext('2d');\n const imageData = context.createImageData(width, height);\n imageData.data.set(data);\n context.putImageData(imageData, 0, 0);\n return canvas.toDataURL();\n}\nexport function copyToImage(source) {\n let {\n sourceAttachment = 36064,\n targetImage = null\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const dataUrl = copyToDataUrl(source, {\n sourceAttachment\n });\n targetImage = targetImage || new Image();\n targetImage.src = dataUrl;\n return targetImage;\n}\nexport function copyToTexture(source, target) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const {\n sourceX = 0,\n sourceY = 0,\n targetMipmaplevel = 0,\n targetInternalFormat = 6408\n } = options;\n let {\n targetX,\n targetY,\n targetZ,\n width,\n height\n } = options;\n const {\n framebuffer,\n deleteFramebuffer\n } = getFramebuffer(source);\n assert(framebuffer);\n const {\n gl,\n handle\n } = framebuffer;\n const isSubCopy = typeof targetX !== 'undefined' || typeof targetY !== 'undefined' || typeof targetZ !== 'undefined';\n targetX = targetX || 0;\n targetY = targetY || 0;\n targetZ = targetZ || 0;\n const prevHandle = gl.bindFramebuffer(36160, handle);\n assert(target);\n let texture = null;\n\n if (target instanceof Texture) {\n texture = target;\n width = Number.isFinite(width) ? width : texture.width;\n height = Number.isFinite(height) ? height : texture.height;\n texture.bind(0);\n target = texture.target;\n }\n\n if (!isSubCopy) {\n gl.copyTexImage2D(target, targetMipmaplevel, targetInternalFormat, sourceX, sourceY, width, height, 0);\n } else {\n switch (target) {\n case 3553:\n case 34067:\n gl.copyTexSubImage2D(target, targetMipmaplevel, targetX, targetY, sourceX, sourceY, width, height);\n break;\n\n case 35866:\n case 32879:\n const gl2 = assertWebGL2Context(gl);\n gl2.copyTexSubImage3D(target, targetMipmaplevel, targetX, targetY, targetZ, sourceX, sourceY, width, height);\n break;\n\n default:\n }\n }\n\n if (texture) {\n texture.unbind();\n }\n\n gl.bindFramebuffer(36160, prevHandle || null);\n\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n\n return texture;\n}\nexport function blit(source, target) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const {\n sourceX0 = 0,\n sourceY0 = 0,\n targetX0 = 0,\n targetY0 = 0,\n color = true,\n depth = false,\n stencil = false,\n filter = 9728\n } = options;\n let {\n sourceX1,\n sourceY1,\n targetX1,\n targetY1,\n sourceAttachment = 36064,\n mask = 0\n } = options;\n const {\n framebuffer: srcFramebuffer,\n deleteFramebuffer: deleteSrcFramebuffer\n } = getFramebuffer(source);\n const {\n framebuffer: dstFramebuffer,\n deleteFramebuffer: deleteDstFramebuffer\n } = getFramebuffer(target);\n assert(srcFramebuffer);\n assert(dstFramebuffer);\n const {\n gl,\n handle,\n width,\n height,\n readBuffer\n } = dstFramebuffer;\n const gl2 = assertWebGL2Context(gl);\n\n if (!srcFramebuffer.handle && sourceAttachment === 36064) {\n sourceAttachment = 1028;\n }\n\n if (color) {\n mask |= 16384;\n }\n\n if (depth) {\n mask |= 256;\n }\n\n if (stencil) {\n mask |= 1024;\n }\n\n if (deleteSrcFramebuffer || deleteDstFramebuffer) {\n if (mask & (256 | 1024)) {\n mask = 16384;\n log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();\n }\n }\n\n assert(mask);\n sourceX1 = sourceX1 === undefined ? srcFramebuffer.width : sourceX1;\n sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;\n targetX1 = targetX1 === undefined ? width : targetX1;\n targetY1 = targetY1 === undefined ? height : targetY1;\n const prevDrawHandle = gl.bindFramebuffer(36009, handle);\n const prevReadHandle = gl.bindFramebuffer(36008, srcFramebuffer.handle);\n gl2.readBuffer(sourceAttachment);\n gl2.blitFramebuffer(sourceX0, sourceY0, sourceX1, sourceY1, targetX0, targetY0, targetX1, targetY1, mask, filter);\n gl2.readBuffer(readBuffer);\n gl2.bindFramebuffer(36008, prevReadHandle || null);\n gl2.bindFramebuffer(36009, prevDrawHandle || null);\n\n if (deleteSrcFramebuffer) {\n srcFramebuffer.delete();\n }\n\n if (deleteDstFramebuffer) {\n dstFramebuffer.delete();\n }\n\n return dstFramebuffer;\n}\n\nfunction getFramebuffer(source) {\n if (!(source instanceof Framebuffer)) {\n return {\n framebuffer: toFramebuffer(source),\n deleteFramebuffer: true\n };\n }\n\n return {\n framebuffer: source,\n deleteFramebuffer: false\n };\n}\n\nfunction getPixelArray(pixelArray, type, format, width, height) {\n if (pixelArray) {\n return pixelArray;\n }\n\n type = type || 5121;\n const ArrayType = getTypedArrayFromGLType(type, {\n clamped: false\n });\n const components = glFormatToComponents(format);\n return new ArrayType(width * height * components);\n}\n//# sourceMappingURL=copy-and-blit.js.map","import GL from '@luma.gl/constants';\nimport Buffer from './buffer';\nimport Framebuffer from './framebuffer';\nimport Texture from './texture';\nimport {assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';\nimport {flipRows, scalePixels} from '../webgl-utils/typed-array-utils';\nimport {getTypedArrayFromGLType, getGLTypeFromTypedArray} from '../webgl-utils/typed-array-utils';\nimport {glFormatToComponents, glTypeToBytes} from '../webgl-utils/format-utils';\nimport {toFramebuffer} from '../webgl-utils/texture-utils';\nimport {assert} from '../utils/assert';\n\n// NOTE: Slow requires roundtrip to GPU\n// Copies data from a Framebuffer or a Texture object into ArrayBuffer object.\n// App can provide targetPixelArray or have it auto allocated by this method\n// @returns {Uint8Array|Uint16Array|FloatArray} - pixel array,\n// newly allocated by this method unless provided by app.\nexport function readPixelsToArray(source, options = {}) {\n const {sourceX = 0, sourceY = 0, sourceFormat = GL.RGBA} = options;\n let {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n target = null,\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n } = options;\n\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle, attachments} = framebuffer;\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // TODO - Set and unset gl.readBuffer\n if (sourceAttachment === GL.COLOR_ATTACHMENT0 && handle === null) {\n sourceAttachment = GL.FRONT;\n }\n\n assert(attachments[sourceAttachment]);\n\n // Deduce the type from color attachment if not provided.\n sourceType = sourceType || attachments[sourceAttachment].type;\n\n // Deduce type and allocated pixelArray if needed\n target = getPixelArray(target, sourceType, sourceFormat, sourceWidth, sourceHeight);\n\n // Pixel array available, if necessary, deduce type from it.\n sourceType = sourceType || getGLTypeFromTypedArray(target);\n\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n gl.readPixels(sourceX, sourceY, sourceWidth, sourceHeight, sourceFormat, sourceType, target);\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return target;\n}\n\n// NOTE: doesn't wait for copy to be complete, it programs GPU to perform a DMA transffer.\n// Copies data from a Framebuffer or a Texture object into a Buffer object.\nexport function readPixelsToBuffer(\n source,\n {\n sourceX = 0,\n sourceY = 0,\n sourceFormat = GL.RGBA,\n target = null, // A new Buffer object is created when not provided.\n targetByteOffset = 0, // byte offset in buffer object\n // following parameters are auto deduced if not provided\n sourceWidth,\n sourceHeight,\n sourceType\n }\n) {\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n sourceWidth = sourceWidth || framebuffer.width;\n sourceHeight = sourceHeight || framebuffer.height;\n\n // Asynchronus read (PIXEL_PACK_BUFFER) is WebGL2 only feature\n const gl2 = assertWebGL2Context(framebuffer.gl);\n\n // deduce type if not available.\n sourceType = sourceType || (target ? target.type : GL.UNSIGNED_BYTE);\n\n if (!target) {\n // Create new buffer with enough size\n const components = glFormatToComponents(sourceFormat);\n const byteCount = glTypeToBytes(sourceType);\n const byteLength = targetByteOffset + sourceWidth * sourceHeight * components * byteCount;\n target = new Buffer(gl2, {byteLength, accessor: {type: sourceType, size: components}});\n }\n\n target.bind({target: GL.PIXEL_PACK_BUFFER});\n withParameters(gl2, {framebuffer}, () => {\n gl2.readPixels(\n sourceX,\n sourceY,\n sourceWidth,\n sourceHeight,\n sourceFormat,\n sourceType,\n targetByteOffset\n );\n });\n target.unbind({target: GL.PIXEL_PACK_BUFFER});\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n\n return target;\n}\n\n// Reads pixels from a Framebuffer or Texture object to a dataUrl\nexport function copyToDataUrl(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMaxHeight = Number.MAX_SAFE_INTEGER\n } = {}\n) {\n let data = readPixelsToArray(source, {sourceAttachment});\n\n // Scale down\n let {width, height} = source;\n while (height > targetMaxHeight) {\n ({data, width, height} = scalePixels({data, width, height}));\n }\n\n // Flip to top down coordinate system\n flipRows({data, width, height});\n\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext('2d');\n\n // Copy the pixels to a 2D canvas\n const imageData = context.createImageData(width, height);\n imageData.data.set(data);\n context.putImageData(imageData, 0, 0);\n\n return canvas.toDataURL();\n}\n\n// Reads pixels from a Framebuffer or Texture object into an HTML Image\nexport function copyToImage(\n source,\n {\n sourceAttachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetImage = null\n } = {}\n) {\n const dataUrl = copyToDataUrl(source, {sourceAttachment});\n targetImage = targetImage || new Image();\n targetImage.src = dataUrl;\n return targetImage;\n}\n\n// Copy a rectangle from a Framebuffer or Texture object into a texture (at an offset)\n// eslint-disable-next-line complexity, max-statements\nexport function copyToTexture(source, target, options = {}) {\n const {\n sourceX = 0,\n sourceY = 0,\n // attachment = GL.COLOR_ATTACHMENT0, // TODO - support gl.readBuffer\n targetMipmaplevel = 0,\n targetInternalFormat = GL.RGBA\n } = options;\n let {\n targetX,\n targetY,\n targetZ,\n width, // defaults to target width\n height // defaults to target height\n } = options;\n\n const {framebuffer, deleteFramebuffer} = getFramebuffer(source);\n assert(framebuffer);\n const {gl, handle} = framebuffer;\n const isSubCopy =\n typeof targetX !== 'undefined' ||\n typeof targetY !== 'undefined' ||\n typeof targetZ !== 'undefined';\n targetX = targetX || 0;\n targetY = targetY || 0;\n targetZ = targetZ || 0;\n const prevHandle = gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n // TODO - support gl.readBuffer (WebGL2 only)\n // const prevBuffer = gl.readBuffer(attachment);\n assert(target);\n let texture = null;\n if (target instanceof Texture) {\n texture = target;\n width = Number.isFinite(width) ? width : texture.width;\n height = Number.isFinite(height) ? height : texture.height;\n texture.bind(0);\n target = texture.target;\n }\n\n if (!isSubCopy) {\n gl.copyTexImage2D(\n target,\n targetMipmaplevel,\n targetInternalFormat,\n sourceX,\n sourceY,\n width,\n height,\n 0 /* border must be 0 */\n );\n } else {\n switch (target) {\n case GL.TEXTURE_2D:\n case GL.TEXTURE_CUBE_MAP:\n gl.copyTexSubImage2D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n case GL.TEXTURE_2D_ARRAY:\n case GL.TEXTURE_3D:\n const gl2 = assertWebGL2Context(gl);\n gl2.copyTexSubImage3D(\n target,\n targetMipmaplevel,\n targetX,\n targetY,\n targetZ,\n sourceX,\n sourceY,\n width,\n height\n );\n break;\n default:\n }\n }\n if (texture) {\n texture.unbind();\n }\n // @ts-ignore\n gl.bindFramebuffer(GL.FRAMEBUFFER, prevHandle || null);\n if (deleteFramebuffer) {\n framebuffer.delete();\n }\n return texture;\n}\n\n// NOTE: WEBLG2 only\n// Copies a rectangle of pixels between Framebuffer or Texture objects\n// eslint-disable-next-line max-statements, complexity\nexport function blit(source, target, options = {}) {\n const {\n sourceX0 = 0,\n sourceY0 = 0,\n targetX0 = 0,\n targetY0 = 0,\n color = true,\n depth = false,\n stencil = false,\n filter = GL.NEAREST\n } = options;\n\n let {\n sourceX1,\n sourceY1,\n targetX1,\n targetY1,\n sourceAttachment = GL.COLOR_ATTACHMENT0,\n mask = 0\n } = options;\n\n const {framebuffer: srcFramebuffer, deleteFramebuffer: deleteSrcFramebuffer} = getFramebuffer(\n source\n );\n const {framebuffer: dstFramebuffer, deleteFramebuffer: deleteDstFramebuffer} = getFramebuffer(\n target\n );\n\n assert(srcFramebuffer);\n assert(dstFramebuffer);\n // @ts-ignore\n const {gl, handle, width, height, readBuffer} = dstFramebuffer;\n const gl2 = assertWebGL2Context(gl);\n\n if (!srcFramebuffer.handle && sourceAttachment === GL.COLOR_ATTACHMENT0) {\n sourceAttachment = GL.FRONT;\n }\n\n if (color) {\n mask |= GL.COLOR_BUFFER_BIT;\n }\n if (depth) {\n mask |= GL.DEPTH_BUFFER_BIT;\n }\n if (stencil) {\n mask |= GL.STENCIL_BUFFER_BIT;\n }\n\n if (deleteSrcFramebuffer || deleteDstFramebuffer) {\n // Either source or destiantion was a texture object, which is wrapped in a Framebuffer objecgt as color attachment.\n // Overwrite the mask to `COLOR_BUFFER_BIT`\n if (mask & (GL.DEPTH_BUFFER_BIT | GL.STENCIL_BUFFER_BIT)) {\n mask = GL.COLOR_BUFFER_BIT;\n log.warn('Blitting from or into a Texture object, forcing mask to GL.COLOR_BUFFER_BIT')();\n }\n }\n assert(mask);\n\n sourceX1 = sourceX1 === undefined ? srcFramebuffer.width : sourceX1;\n sourceY1 = sourceY1 === undefined ? srcFramebuffer.height : sourceY1;\n targetX1 = targetX1 === undefined ? width : targetX1;\n targetY1 = targetY1 === undefined ? height : targetY1;\n\n const prevDrawHandle = gl.bindFramebuffer(GL.DRAW_FRAMEBUFFER, handle);\n const prevReadHandle = gl.bindFramebuffer(GL.READ_FRAMEBUFFER, srcFramebuffer.handle);\n gl2.readBuffer(sourceAttachment);\n gl2.blitFramebuffer(\n sourceX0,\n sourceY0,\n sourceX1,\n sourceY1,\n targetX0,\n targetY0,\n targetX1,\n targetY1,\n mask,\n filter\n );\n gl2.readBuffer(readBuffer);\n // @ts-ignore\n gl2.bindFramebuffer(GL.READ_FRAMEBUFFER, prevReadHandle || null);\n // @ts-ignore\n gl2.bindFramebuffer(GL.DRAW_FRAMEBUFFER, prevDrawHandle || null);\n if (deleteSrcFramebuffer) {\n srcFramebuffer.delete();\n }\n if (deleteDstFramebuffer) {\n dstFramebuffer.delete();\n }\n\n return dstFramebuffer;\n}\n\n// Helper methods\n\nfunction getFramebuffer(source) {\n if (!(source instanceof Framebuffer)) {\n return {framebuffer: toFramebuffer(source), deleteFramebuffer: true};\n }\n return {framebuffer: source, deleteFramebuffer: false};\n}\n\nfunction getPixelArray(pixelArray, type, format, width, height) {\n if (pixelArray) {\n return pixelArray;\n }\n // Allocate pixel array if not already available, using supplied type\n type = type || GL.UNSIGNED_BYTE;\n const ArrayType = getTypedArrayFromGLType(type, {clamped: false});\n const components = glFormatToComponents(format);\n // TODO - check for composite type (components = 1).\n return new ArrayType(width * height * components);\n}\n","import { assert } from '../utils/assert';\nexport function glFormatToComponents(format) {\n switch (format) {\n case 6406:\n case 33326:\n case 6403:\n return 1;\n\n case 33328:\n case 33319:\n return 2;\n\n case 6407:\n case 34837:\n return 3;\n\n case 6408:\n case 34836:\n return 4;\n\n default:\n assert(false);\n return 0;\n }\n}\nexport function glTypeToBytes(type) {\n switch (type) {\n case 5121:\n return 1;\n\n case 33635:\n case 32819:\n case 32820:\n return 2;\n\n case 5126:\n return 4;\n\n default:\n assert(false);\n return 0;\n }\n}\n//# sourceMappingURL=format-utils.js.map","import GL from '@luma.gl/constants';\nimport {assert} from '../utils/assert';\n\n// Returns number of components in a specific readPixels WebGL format\nexport function glFormatToComponents(format) {\n switch (format) {\n case GL.ALPHA:\n case GL.R32F:\n case GL.RED:\n return 1;\n case GL.RG32F:\n case GL.RG:\n return 2;\n case GL.RGB:\n case GL.RGB32F:\n return 3;\n case GL.RGBA:\n case GL.RGBA32F:\n return 4;\n // TODO: Add support for additional WebGL2 formats\n default:\n assert(false);\n return 0;\n }\n}\n\n// Return byte count for given readPixels WebGL type\nexport function glTypeToBytes(type) {\n switch (type) {\n case GL.UNSIGNED_BYTE:\n return 1;\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return 2;\n case GL.FLOAT:\n return 4;\n // TODO: Add support for additional WebGL2 types\n default:\n assert(false);\n return 0;\n }\n}\n","import Texture2D from '../classes/texture-2d';\nimport TextureCube from '../classes/texture-cube';\nimport Texture3D from '../classes/texture-3d';\nimport Framebuffer from '../classes/framebuffer';\nimport { assert } from '../utils/assert';\nexport function cloneTextureFrom(refTexture, overrides) {\n assert(refTexture instanceof Texture2D || refTexture instanceof TextureCube || refTexture instanceof Texture3D);\n const TextureType = refTexture.constructor;\n const {\n gl,\n width,\n height,\n format,\n type,\n dataFormat,\n border,\n mipmaps\n } = refTexture;\n const textureOptions = Object.assign({\n width,\n height,\n format,\n type,\n dataFormat,\n border,\n mipmaps\n }, overrides);\n return new TextureType(gl, textureOptions);\n}\nexport function toFramebuffer(texture, opts) {\n const {\n gl,\n width,\n height,\n id\n } = texture;\n const framebuffer = new Framebuffer(gl, Object.assign({}, opts, {\n id: \"framebuffer-for-\".concat(id),\n width,\n height,\n attachments: {\n [36064]: texture\n }\n }));\n return framebuffer;\n}\n//# sourceMappingURL=texture-utils.js.map","// TODO: Two subdirectories must not depend on each other (classes vs utils)!\nimport Texture2D from '../classes/texture-2d';\nimport TextureCube from '../classes/texture-cube';\nimport Texture3D from '../classes/texture-3d';\nimport Framebuffer from '../classes/framebuffer';\nimport GL from '@luma.gl/constants';\nimport {assert} from '../utils/assert';\n\n// Clone a new texture object from a reference texture object.\n/** @type {import('./texture-utils').cloneTextureFrom} */\nexport function cloneTextureFrom(refTexture, overrides) {\n assert(\n refTexture instanceof Texture2D ||\n refTexture instanceof TextureCube ||\n refTexture instanceof Texture3D\n );\n\n const TextureType = refTexture.constructor;\n\n // @ts-expect-error\n const {gl, width, height, format, type, dataFormat, border, mipmaps} = refTexture;\n\n const textureOptions = Object.assign(\n {\n width,\n height,\n format,\n type,\n dataFormat,\n border,\n mipmaps\n },\n overrides\n );\n\n // TODO: move this to `Texture` class as instance method and use this.constructor\n // @ts-expect-error\n return new TextureType(gl, textureOptions);\n}\n\n// Wraps a given texture into a framebuffer object, that can be further used\n// to read data from the texture object.\n/** @type {import('./texture-utils').toFramebuffer} */\nexport function toFramebuffer(texture, opts) {\n const {gl, width, height, id} = texture;\n const framebuffer = new Framebuffer(\n gl,\n Object.assign({}, opts, {\n id: `framebuffer-for-${id}`,\n width,\n height,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: texture\n }\n })\n );\n return framebuffer;\n}\n","import { log, assertWebGLContext } from '@luma.gl/gltools';\nimport Texture from './texture';\nconst FACES = [34069, 34070, 34071, 34072, 34073, 34074];\nexport default class TextureCube extends Texture {\n get [Symbol.toStringTag]() {\n return 'TextureCube';\n }\n\n constructor(gl) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n assertWebGLContext(gl);\n super(gl, Object.assign({}, props, {\n target: 34067\n }));\n this.initialize(props);\n Object.seal(this);\n }\n\n initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n mipmaps = true,\n parameters = {}\n } = props;\n this.opts = props;\n this.setCubeMapImageData(props).then(() => {\n this.loaded = true;\n\n if (mipmaps) {\n this.generateMipmap(props);\n }\n\n this.setParameters(parameters);\n });\n return this;\n }\n\n subImage(_ref) {\n let {\n face,\n data,\n x = 0,\n y = 0,\n mipmapLevel = 0\n } = _ref;\n return this._subImage({\n target: face,\n data,\n x,\n y,\n mipmapLevel\n });\n }\n\n async setCubeMapImageData(_ref2) {\n let {\n width,\n height,\n pixels,\n data,\n border = 0,\n format = 6408,\n type = 5121\n } = _ref2;\n const {\n gl\n } = this;\n const imageDataMap = pixels || data;\n const resolvedFaces = await Promise.all(FACES.map(face => {\n const facePixels = imageDataMap[face];\n return Promise.all(Array.isArray(facePixels) ? facePixels : [facePixels]);\n }));\n this.bind();\n FACES.forEach((face, index) => {\n if (resolvedFaces[index].length > 1 && this.opts.mipmaps !== false) {\n log.warn(\"\".concat(this.id, \" has mipmap and multiple LODs.\"))();\n }\n\n resolvedFaces[index].forEach((image, lodLevel) => {\n if (width && height) {\n gl.texImage2D(face, lodLevel, format, width, height, border, format, type, image);\n } else {\n gl.texImage2D(face, lodLevel, format, format, type, image);\n }\n });\n });\n this.unbind();\n }\n\n setImageDataForFace(options) {\n const {\n face,\n width,\n height,\n pixels,\n data,\n border = 0,\n format = 6408,\n type = 5121\n } = options;\n const {\n gl\n } = this;\n const imageData = pixels || data;\n this.bind();\n\n if (imageData instanceof Promise) {\n imageData.then(resolvedImageData => this.setImageDataForFace(Object.assign({}, options, {\n face,\n data: resolvedImageData,\n pixels: resolvedImageData\n })));\n } else if (this.width || this.height) {\n gl.texImage2D(face, 0, format, width, height, border, format, type, imageData);\n } else {\n gl.texImage2D(face, 0, format, format, type, imageData);\n }\n\n return this;\n }\n\n}\nTextureCube.FACES = FACES;\n//# sourceMappingURL=texture-cube.js.map","import GL from '@luma.gl/constants';\nimport {log, assertWebGLContext} from '@luma.gl/gltools';\nimport Texture from './texture';\n\nconst FACES = [\n GL.TEXTURE_CUBE_MAP_POSITIVE_X,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_X,\n GL.TEXTURE_CUBE_MAP_POSITIVE_Y,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_Y,\n GL.TEXTURE_CUBE_MAP_POSITIVE_Z,\n GL.TEXTURE_CUBE_MAP_NEGATIVE_Z\n];\n\nexport default class TextureCube extends Texture {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'TextureCube';\n }\n\n constructor(gl, props = {}) {\n assertWebGLContext(gl);\n\n super(gl, Object.assign({}, props, {target: GL.TEXTURE_CUBE_MAP}));\n\n this.initialize(props);\n\n Object.seal(this);\n }\n\n initialize(props = {}) {\n const {mipmaps = true, parameters = {}} = props;\n\n // Store props for accessors\n this.opts = props;\n\n // @ts-ignore\n this.setCubeMapImageData(props).then(() => {\n this.loaded = true;\n\n // TODO - should genMipmap() be called on the cubemap or on the faces?\n // TODO - without generateMipmap() cube textures do not work at all!!! Why?\n if (mipmaps) {\n this.generateMipmap(props);\n }\n\n this.setParameters(parameters);\n });\n return this;\n }\n\n subImage({face, data, x = 0, y = 0, mipmapLevel = 0}) {\n // @ts-ignore TODO - is this a bug?\n return this._subImage({target: face, data, x, y, mipmapLevel});\n }\n\n /* eslint-disable max-statements, max-len */\n async setCubeMapImageData({\n width,\n height,\n pixels,\n data,\n border = 0,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE\n }) {\n const {gl} = this;\n const imageDataMap = pixels || data;\n\n // pixel data (imageDataMap) is an Object from Face to Image or Promise.\n // For example:\n // {\n // GL.TEXTURE_CUBE_MAP_POSITIVE_X : Image-or-Promise,\n // GL.TEXTURE_CUBE_MAP_NEGATIVE_X : Image-or-Promise,\n // ... }\n // To provide multiple level-of-details (LODs) this can be Face to Array\n // of Image or Promise, like this\n // {\n // GL.TEXTURE_CUBE_MAP_POSITIVE_X : [Image-or-Promise-LOD-0, Image-or-Promise-LOD-1],\n // GL.TEXTURE_CUBE_MAP_NEGATIVE_X : [Image-or-Promise-LOD-0, Image-or-Promise-LOD-1],\n // ... }\n\n const resolvedFaces = await Promise.all(\n FACES.map(face => {\n const facePixels = imageDataMap[face];\n return Promise.all(Array.isArray(facePixels) ? facePixels : [facePixels]);\n })\n );\n\n this.bind();\n\n FACES.forEach((face, index) => {\n if (resolvedFaces[index].length > 1 && this.opts.mipmaps !== false) {\n // If the user provides multiple LODs, then automatic mipmap\n // generation generateMipmap() should be disabled to avoid overwritting them.\n log.warn(`${this.id} has mipmap and multiple LODs.`)();\n }\n resolvedFaces[index].forEach((image, lodLevel) => {\n // TODO: adjust width & height for LOD!\n if (width && height) {\n gl.texImage2D(face, lodLevel, format, width, height, border, format, type, image);\n } else {\n gl.texImage2D(face, lodLevel, format, format, type, image);\n }\n });\n });\n\n this.unbind();\n }\n\n // TODO: update this method to accept LODs\n setImageDataForFace(options) {\n const {\n face,\n width,\n height,\n pixels,\n data,\n border = 0,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE\n // generateMipmap = false // TODO\n } = options;\n\n const {gl} = this;\n\n const imageData = pixels || data;\n\n this.bind();\n if (imageData instanceof Promise) {\n imageData.then(resolvedImageData =>\n this.setImageDataForFace(\n Object.assign({}, options, {\n face,\n data: resolvedImageData,\n pixels: resolvedImageData\n })\n )\n );\n } else if (this.width || this.height) {\n gl.texImage2D(face, 0, format, width, height, border, format, type, imageData);\n } else {\n gl.texImage2D(face, 0, format, format, type, imageData);\n }\n\n return this;\n }\n}\n\nTextureCube.FACES = FACES;\n","import { isWebGL2, assertWebGL2Context, withParameters } from '@luma.gl/gltools';\nimport Texture from './texture';\nimport { DATA_FORMAT_CHANNELS, TYPE_SIZES } from './texture-formats';\nimport Buffer from './buffer';\nexport default class Texture3D extends Texture {\n get [Symbol.toStringTag]() {\n return 'Texture3D';\n }\n\n static isSupported(gl) {\n return isWebGL2(gl);\n }\n\n constructor(gl) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n assertWebGL2Context(gl);\n props = Object.assign({\n depth: 1\n }, props, {\n target: 32879,\n unpackFlipY: false\n });\n super(gl, props);\n this.initialize(props);\n Object.seal(this);\n }\n\n setImageData(_ref) {\n let {\n level = 0,\n dataFormat = 6408,\n width,\n height,\n depth = 1,\n border = 0,\n format,\n type = 5121,\n offset = 0,\n data,\n parameters = {}\n } = _ref;\n\n this._trackDeallocatedMemory('Texture');\n\n this.gl.bindTexture(this.target, this.handle);\n withParameters(this.gl, parameters, () => {\n if (ArrayBuffer.isView(data)) {\n this.gl.texImage3D(this.target, level, dataFormat, width, height, depth, border, format, type, data);\n }\n\n if (data instanceof Buffer) {\n this.gl.bindBuffer(35052, data.handle);\n this.gl.texImage3D(this.target, level, dataFormat, width, height, depth, border, format, type, offset);\n }\n });\n\n if (data && data.byteLength) {\n this._trackAllocatedMemory(data.byteLength, 'Texture');\n } else {\n const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n const channelSize = TYPE_SIZES[this.type] || 1;\n\n this._trackAllocatedMemory(this.width * this.height * this.depth * channels * channelSize, 'Texture');\n }\n\n this.loaded = true;\n return this;\n }\n\n}\n//# sourceMappingURL=texture-3d.js.map","import GL from '@luma.gl/constants';\nimport {isWebGL2, assertWebGL2Context, withParameters} from '@luma.gl/gltools';\nimport Texture from './texture';\nimport {DATA_FORMAT_CHANNELS, TYPE_SIZES} from './texture-formats';\nimport Buffer from './buffer';\n\nexport default class Texture3D extends Texture {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Texture3D';\n }\n\n static isSupported(gl) {\n return isWebGL2(gl);\n }\n\n constructor(gl, props = {}) {\n assertWebGL2Context(gl);\n props = Object.assign({depth: 1}, props, {target: GL.TEXTURE_3D, unpackFlipY: false});\n super(gl, props);\n this.initialize(props);\n\n Object.seal(this);\n }\n\n // Image 3D copies from Typed Array or WebGLBuffer\n setImageData({\n level = 0,\n dataFormat = GL.RGBA,\n width,\n height,\n depth = 1,\n border = 0,\n format,\n type = GL.UNSIGNED_BYTE,\n offset = 0,\n data,\n parameters = {}\n }) {\n this._trackDeallocatedMemory('Texture');\n\n this.gl.bindTexture(this.target, this.handle);\n\n withParameters(this.gl, parameters, () => {\n if (ArrayBuffer.isView(data)) {\n // @ts-ignore\n this.gl.texImage3D(\n this.target,\n level,\n dataFormat,\n width,\n height,\n depth,\n border,\n format,\n type,\n data\n );\n }\n\n if (data instanceof Buffer) {\n this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle);\n // @ts-ignore\n this.gl.texImage3D(\n this.target,\n level,\n dataFormat,\n width,\n height,\n depth,\n border,\n format,\n type,\n offset\n );\n }\n });\n\n if (data && data.byteLength) {\n this._trackAllocatedMemory(data.byteLength, 'Texture');\n } else {\n // NOTE(Tarek): Default to RGBA bytes\n // @ts-ignore\n const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n // @ts-ignore\n const channelSize = TYPE_SIZES[this.type] || 1;\n\n this._trackAllocatedMemory(\n this.width * this.height * this.depth * channels * channelSize,\n 'Texture'\n );\n }\n\n this.loaded = true;\n\n return this;\n }\n}\n","import WEBGL_FEATURES from './webgl-features-table';\nimport { isWebGL2, log } from '@luma.gl/gltools';\nimport { assert } from '../utils/assert';\nconst LOG_UNSUPPORTED_FEATURE = 2;\nexport function hasFeature(gl, feature) {\n return hasFeatures(gl, feature);\n}\nexport function hasFeatures(gl, features) {\n features = Array.isArray(features) ? features : [features];\n return features.every(feature => {\n return isFeatureSupported(gl, feature);\n });\n}\nexport function getFeatures(gl) {\n gl.luma = gl.luma || {};\n gl.luma.caps = gl.luma.caps || {};\n\n for (const cap in WEBGL_FEATURES) {\n if (gl.luma.caps[cap] === undefined) {\n gl.luma.caps[cap] = isFeatureSupported(gl, cap);\n }\n }\n\n return gl.luma.caps;\n}\n\nfunction isFeatureSupported(gl, cap) {\n gl.luma = gl.luma || {};\n gl.luma.caps = gl.luma.caps || {};\n\n if (gl.luma.caps[cap] === undefined) {\n gl.luma.caps[cap] = queryFeature(gl, cap);\n }\n\n if (!gl.luma.caps[cap]) {\n log.log(LOG_UNSUPPORTED_FEATURE, \"Feature: \".concat(cap, \" not supported\"))();\n }\n\n return gl.luma.caps[cap];\n}\n\nfunction queryFeature(gl, cap) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n let isSupported;\n const featureDefinition = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n\n if (typeof featureDefinition === 'function') {\n isSupported = featureDefinition(gl);\n } else if (Array.isArray(featureDefinition)) {\n isSupported = true;\n\n for (const extension of featureDefinition) {\n isSupported = isSupported && Boolean(gl.getExtension(extension));\n }\n } else if (typeof featureDefinition === 'string') {\n isSupported = Boolean(gl.getExtension(featureDefinition));\n } else if (typeof featureDefinition === 'boolean') {\n isSupported = featureDefinition;\n } else {\n assert(false);\n }\n\n return isSupported;\n}\n//# sourceMappingURL=features.js.map","// Feature detection for WebGL\n//\n// Provides a function that enables simple checking of which WebGL features are\n// available in an WebGL1 or WebGL2 environment.\n\nimport WEBGL_FEATURES from './webgl-features-table';\nimport {isWebGL2, log} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\n\nconst LOG_UNSUPPORTED_FEATURE = 2;\n\n// Check one feature\nexport function hasFeature(gl, feature) {\n return hasFeatures(gl, feature);\n}\n\n// Check one or more features\nexport function hasFeatures(gl, features) {\n features = Array.isArray(features) ? features : [features];\n return features.every(feature => {\n return isFeatureSupported(gl, feature);\n });\n}\n\n// Return a list of supported features\nexport function getFeatures(gl) {\n gl.luma = gl.luma || {};\n gl.luma.caps = gl.luma.caps || {};\n for (const cap in WEBGL_FEATURES) {\n if (gl.luma.caps[cap] === undefined) {\n gl.luma.caps[cap] = isFeatureSupported(gl, cap);\n }\n }\n return gl.luma.caps;\n}\n\n// TODO - cache the value\nfunction isFeatureSupported(gl, cap) {\n gl.luma = gl.luma || {};\n gl.luma.caps = gl.luma.caps || {};\n\n if (gl.luma.caps[cap] === undefined) {\n gl.luma.caps[cap] = queryFeature(gl, cap);\n }\n\n if (!gl.luma.caps[cap]) {\n log.log(LOG_UNSUPPORTED_FEATURE, `Feature: ${cap} not supported`)();\n }\n\n return gl.luma.caps[cap];\n}\n\nfunction queryFeature(gl, cap) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n let isSupported;\n\n // Get extension name from table\n const featureDefinition = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n\n // Check if the value is dependent on checking one or more extensions\n if (typeof featureDefinition === 'function') {\n isSupported = featureDefinition(gl);\n } else if (Array.isArray(featureDefinition)) {\n isSupported = true;\n for (const extension of featureDefinition) {\n isSupported = isSupported && Boolean(gl.getExtension(extension));\n }\n } else if (typeof featureDefinition === 'string') {\n isSupported = Boolean(gl.getExtension(featureDefinition));\n } else if (typeof featureDefinition === 'boolean') {\n isSupported = featureDefinition;\n } else {\n assert(false);\n }\n\n return isSupported;\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport default class ShaderAttribute {\n constructor(dataColumn, opts) {\n _defineProperty(this, \"opts\", void 0);\n\n _defineProperty(this, \"source\", void 0);\n\n this.opts = opts;\n this.source = dataColumn;\n }\n\n get value() {\n return this.source.value;\n }\n\n getValue() {\n const buffer = this.source.getBuffer();\n const accessor = this.getAccessor();\n\n if (buffer) {\n return [buffer, accessor];\n }\n\n const {\n value\n } = this.source;\n const {\n size\n } = accessor;\n let constantValue = value;\n\n if (value && value.length !== size) {\n constantValue = new Float32Array(size);\n const index = accessor.elementOffset || 0;\n\n for (let i = 0; i < size; ++i) {\n constantValue[i] = value[index + i];\n }\n }\n\n return constantValue;\n }\n\n getAccessor() {\n return { ...this.source.getAccessor(),\n ...this.opts\n };\n }\n\n}\n//# sourceMappingURL=shader-attribute.js.map","/* eslint-disable complexity */\nimport type DataColumn from './data-column';\nimport type {BufferAccessor, ShaderAttributeOptions} from './data-column';\nimport type {Buffer} from '@luma.gl/webgl';\nimport type {NumericArray} from '../../types/types';\n\nexport interface IShaderAttribute {\n value: NumericArray | null;\n getValue(): [Buffer, BufferAccessor] | NumericArray | null;\n}\n\n/* This class creates a luma.gl-compatible \"view\" on top of a DataColumn instance */\nexport default class ShaderAttribute implements IShaderAttribute {\n opts: ShaderAttributeOptions;\n source: DataColumn;\n\n constructor(dataColumn: DataColumn, opts: ShaderAttributeOptions) {\n // Options that cannot be changed later\n this.opts = opts;\n this.source = dataColumn;\n }\n\n get value(): NumericArray | null {\n return this.source.value;\n }\n\n getValue(): [Buffer, BufferAccessor] | NumericArray | null {\n const buffer = this.source.getBuffer();\n const accessor = this.getAccessor();\n if (buffer) {\n return [buffer, accessor];\n }\n\n const {value} = this.source;\n const {size} = accessor;\n let constantValue = value;\n\n if (value && value.length !== size) {\n constantValue = new Float32Array(size);\n // initiate offset values\n const index = accessor.elementOffset || 0; // element offset\n for (let i = 0; i < size; ++i) {\n constantValue[i] = value[index + i];\n }\n }\n\n return constantValue;\n }\n\n getAccessor() {\n return {\n // source data accessor\n ...this.source.getAccessor(),\n // shader attribute overrides\n ...this.opts\n };\n }\n}\n","export function glArrayFromType(glType) {\n switch (glType) {\n case 5126:\n return Float32Array;\n\n case 5130:\n return Float64Array;\n\n case 5123:\n case 33635:\n case 32819:\n case 32820:\n return Uint16Array;\n\n case 5125:\n return Uint32Array;\n\n case 5121:\n return Uint8ClampedArray;\n\n case 5120:\n return Int8Array;\n\n case 5122:\n return Int16Array;\n\n case 5124:\n return Int32Array;\n\n default:\n throw new Error('Unknown GL type');\n }\n}\n//# sourceMappingURL=gl-utils.js.map","import GL from '@luma.gl/constants';\nimport type {TypedArrayConstructor} from '../../types/types';\n\n/* eslint-disable complexity */\nexport function glArrayFromType(glType: number): TypedArrayConstructor {\n // Sorted in some order of likelihood to reduce amount of comparisons\n switch (glType) {\n case GL.FLOAT:\n return Float32Array;\n case GL.DOUBLE:\n return Float64Array;\n case GL.UNSIGNED_SHORT:\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return Uint16Array;\n case GL.UNSIGNED_INT:\n return Uint32Array;\n case GL.UNSIGNED_BYTE:\n return Uint8ClampedArray;\n case GL.BYTE:\n return Int8Array;\n case GL.SHORT:\n return Int16Array;\n case GL.INT:\n return Int32Array;\n default:\n throw new Error('Unknown GL type');\n }\n}\n/* eslint-enable complexity */\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport class TypedArrayManager {\n constructor(options = {}) {\n _defineProperty(this, \"_pool\", []);\n\n _defineProperty(this, \"opts\", {\n overAlloc: 2,\n poolSize: 100\n });\n\n this.setOptions(options);\n }\n\n setOptions(options) {\n Object.assign(this.opts, options);\n }\n\n allocate(typedArray, count, {\n size = 1,\n type,\n padding = 0,\n copy = false,\n initialize = false,\n maxCount\n }) {\n const Type = type || typedArray && typedArray.constructor || Float32Array;\n const newSize = count * size + padding;\n\n if (ArrayBuffer.isView(typedArray)) {\n if (newSize <= typedArray.length) {\n return typedArray;\n }\n\n if (newSize * typedArray.BYTES_PER_ELEMENT <= typedArray.buffer.byteLength) {\n return new Type(typedArray.buffer, 0, newSize);\n }\n }\n\n let maxSize = Infinity;\n\n if (maxCount) {\n maxSize = maxCount * size + padding;\n }\n\n const newArray = this._allocate(Type, newSize, initialize, maxSize);\n\n if (typedArray && copy) {\n newArray.set(typedArray);\n } else if (!initialize) {\n newArray.fill(0, 0, 4);\n }\n\n this._release(typedArray);\n\n return newArray;\n }\n\n release(typedArray) {\n this._release(typedArray);\n }\n\n _allocate(Type, size, initialize, maxSize) {\n let sizeToAllocate = Math.max(Math.ceil(size * this.opts.overAlloc), 1);\n\n if (sizeToAllocate > maxSize) {\n sizeToAllocate = maxSize;\n }\n\n const pool = this._pool;\n const byteLength = Type.BYTES_PER_ELEMENT * sizeToAllocate;\n const i = pool.findIndex(b => b.byteLength >= byteLength);\n\n if (i >= 0) {\n const array = new Type(pool.splice(i, 1)[0], 0, sizeToAllocate);\n\n if (initialize) {\n array.fill(0);\n }\n\n return array;\n }\n\n return new Type(sizeToAllocate);\n }\n\n _release(typedArray) {\n if (!ArrayBuffer.isView(typedArray)) {\n return;\n }\n\n const pool = this._pool;\n const {\n buffer\n } = typedArray;\n const {\n byteLength\n } = buffer;\n const i = pool.findIndex(b => b.byteLength >= byteLength);\n\n if (i < 0) {\n pool.push(buffer);\n } else if (i > 0 || pool.length < this.opts.poolSize) {\n pool.splice(i, 0, buffer);\n }\n\n if (pool.length > this.opts.poolSize) {\n pool.shift();\n }\n }\n\n}\nexport default new TypedArrayManager();\n//# sourceMappingURL=typed-array-manager.js.map","import {TypedArray, TypedArrayConstructor} from '../types/types';\n\nexport type TypedArrayManagerOptions = {\n overAlloc?: number;\n poolSize?: number;\n};\n\nexport class TypedArrayManager {\n private _pool: ArrayBuffer[] = [];\n opts: {\n overAlloc: number;\n poolSize: number;\n } = {overAlloc: 2, poolSize: 100};\n\n constructor(options: TypedArrayManagerOptions = {}) {\n this.setOptions(options);\n }\n\n setOptions(options: TypedArrayManagerOptions) {\n Object.assign(this.opts, options);\n }\n\n allocate(\n typedArray: T | null | undefined,\n count: number,\n {\n size = 1,\n type,\n padding = 0,\n copy = false,\n initialize = false,\n maxCount\n }: {\n size?: number;\n type?: TypedArrayConstructor;\n padding?: number;\n copy?: boolean;\n initialize?: boolean;\n maxCount?: number;\n }\n ): T {\n const Type =\n type || (typedArray && (typedArray.constructor as TypedArrayConstructor)) || Float32Array;\n\n const newSize = count * size + padding;\n if (ArrayBuffer.isView(typedArray)) {\n if (newSize <= typedArray.length) {\n return typedArray;\n }\n if (newSize * typedArray.BYTES_PER_ELEMENT <= typedArray.buffer.byteLength) {\n return new Type(typedArray.buffer, 0, newSize) as T;\n }\n }\n\n let maxSize: number = Infinity;\n if (maxCount) {\n maxSize = maxCount * size + padding;\n }\n\n const newArray = this._allocate(Type, newSize, initialize, maxSize);\n\n if (typedArray && copy) {\n newArray.set(typedArray);\n } else if (!initialize) {\n // Hack - always initialize the first 4 elements. NaNs crash the Attribute validation\n newArray.fill(0, 0, 4);\n }\n\n this._release(typedArray);\n return newArray as T;\n }\n\n release(typedArray: TypedArray | null | undefined) {\n this._release(typedArray);\n }\n\n private _allocate(\n Type: TypedArrayConstructor,\n size: number,\n initialize: boolean,\n maxSize: number\n ): TypedArray {\n // Allocate at least one element to ensure a valid buffer\n let sizeToAllocate = Math.max(Math.ceil(size * this.opts.overAlloc), 1);\n // Don't over allocate after certain specified number of elements\n if (sizeToAllocate > maxSize) {\n sizeToAllocate = maxSize;\n }\n\n // Check if available in pool\n const pool = this._pool;\n const byteLength = Type.BYTES_PER_ELEMENT * sizeToAllocate;\n const i = pool.findIndex(b => b.byteLength >= byteLength);\n if (i >= 0) {\n // Create a new array using an existing buffer\n const array = new Type(pool.splice(i, 1)[0], 0, sizeToAllocate);\n if (initialize) {\n // Viewing a buffer with a different type may create NaNs\n array.fill(0);\n }\n return array;\n }\n return new Type(sizeToAllocate);\n }\n\n private _release(typedArray: TypedArray | null | undefined): void {\n if (!ArrayBuffer.isView(typedArray)) {\n return;\n }\n const pool = this._pool;\n const {buffer} = typedArray;\n // Save the buffer of the released array into the pool\n // Sort buffers by size\n // TODO - implement binary search?\n const {byteLength} = buffer;\n const i = pool.findIndex(b => b.byteLength >= byteLength);\n if (i < 0) {\n pool.push(buffer);\n } else if (i > 0 || pool.length < this.opts.poolSize) {\n pool.splice(i, 0, buffer);\n }\n if (pool.length > this.opts.poolSize) {\n // Drop the smallest one\n pool.shift();\n }\n }\n}\n\nexport default new TypedArrayManager();\n","import typedArrayManager from './typed-array-manager';\nimport { Vector3 } from '@math.gl/core';\nexport function createMat4() {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\nexport function mod(value, divisor) {\n const modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\nexport function getCameraPosition(viewMatrixInverse) {\n return [viewMatrixInverse[12], viewMatrixInverse[13], viewMatrixInverse[14]];\n}\nexport function getFrustumPlanes(viewProjectionMatrix) {\n return {\n left: getFrustumPlane(viewProjectionMatrix[3] + viewProjectionMatrix[0], viewProjectionMatrix[7] + viewProjectionMatrix[4], viewProjectionMatrix[11] + viewProjectionMatrix[8], viewProjectionMatrix[15] + viewProjectionMatrix[12]),\n right: getFrustumPlane(viewProjectionMatrix[3] - viewProjectionMatrix[0], viewProjectionMatrix[7] - viewProjectionMatrix[4], viewProjectionMatrix[11] - viewProjectionMatrix[8], viewProjectionMatrix[15] - viewProjectionMatrix[12]),\n bottom: getFrustumPlane(viewProjectionMatrix[3] + viewProjectionMatrix[1], viewProjectionMatrix[7] + viewProjectionMatrix[5], viewProjectionMatrix[11] + viewProjectionMatrix[9], viewProjectionMatrix[15] + viewProjectionMatrix[13]),\n top: getFrustumPlane(viewProjectionMatrix[3] - viewProjectionMatrix[1], viewProjectionMatrix[7] - viewProjectionMatrix[5], viewProjectionMatrix[11] - viewProjectionMatrix[9], viewProjectionMatrix[15] - viewProjectionMatrix[13]),\n near: getFrustumPlane(viewProjectionMatrix[3] + viewProjectionMatrix[2], viewProjectionMatrix[7] + viewProjectionMatrix[6], viewProjectionMatrix[11] + viewProjectionMatrix[10], viewProjectionMatrix[15] + viewProjectionMatrix[14]),\n far: getFrustumPlane(viewProjectionMatrix[3] - viewProjectionMatrix[2], viewProjectionMatrix[7] - viewProjectionMatrix[6], viewProjectionMatrix[11] - viewProjectionMatrix[10], viewProjectionMatrix[15] - viewProjectionMatrix[14])\n };\n}\nconst scratchVector = new Vector3();\n\nfunction getFrustumPlane(a, b, c, d) {\n scratchVector.set(a, b, c);\n const L = scratchVector.len();\n return {\n distance: d / L,\n normal: new Vector3(-a / L, -b / L, -c / L)\n };\n}\n\nexport function fp64LowPart(x) {\n return x - Math.fround(x);\n}\nlet scratchArray;\nexport function toDoublePrecisionArray(typedArray, options) {\n const {\n size = 1,\n startIndex = 0\n } = options;\n const endIndex = options.endIndex !== undefined ? options.endIndex : typedArray.length;\n const count = (endIndex - startIndex) / size;\n scratchArray = typedArrayManager.allocate(scratchArray, count, {\n type: Float32Array,\n size: size * 2\n });\n let sourceIndex = startIndex;\n let targetIndex = 0;\n\n while (sourceIndex < endIndex) {\n for (let j = 0; j < size; j++) {\n const value = typedArray[sourceIndex++];\n scratchArray[targetIndex + j] = value;\n scratchArray[targetIndex + j + size] = fp64LowPart(value);\n }\n\n targetIndex += size * 2;\n }\n\n return scratchArray.subarray(0, count * size * 2);\n}\nexport function mergeBounds(boundsList) {\n let mergedBounds = null;\n let isMerged = false;\n\n for (const bounds of boundsList) {\n if (!bounds) continue;\n\n if (!mergedBounds) {\n mergedBounds = bounds;\n } else {\n if (!isMerged) {\n mergedBounds = [[mergedBounds[0][0], mergedBounds[0][1]], [mergedBounds[1][0], mergedBounds[1][1]]];\n isMerged = true;\n }\n\n mergedBounds[0][0] = Math.min(mergedBounds[0][0], bounds[0][0]);\n mergedBounds[0][1] = Math.min(mergedBounds[0][1], bounds[0][1]);\n mergedBounds[1][0] = Math.max(mergedBounds[1][0], bounds[1][0]);\n mergedBounds[1][1] = Math.max(mergedBounds[1][1], bounds[1][1]);\n }\n }\n\n return mergedBounds;\n}\n//# sourceMappingURL=math-utils.js.map","// Extensions to math.gl library. Intended to be folded back.\nimport typedArrayManager from './typed-array-manager';\nimport {Vector3, NumericArray} from '@math.gl/core';\n\nimport type {Matrix4} from '@math.gl/core';\n\n// Helper, avoids low-precision 32 bit matrices from gl-matrix mat4.create()\nexport function createMat4(): number[] {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\n\nexport function mod(value: number, divisor: number): number {\n const modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\n\n// Extract camera vectors (move to math library?)\nexport function getCameraPosition(\n viewMatrixInverse: Matrix4 | NumericArray\n): [number, number, number] {\n // Read the translation from the inverse view matrix\n return [viewMatrixInverse[12], viewMatrixInverse[13], viewMatrixInverse[14]];\n}\n\nexport type FrustumPlane = {\n distance: number;\n normal: Vector3;\n};\n\n// https://www.gamedevs.org/uploads/fast-extraction-viewing-frustum-planes-from-world-view-projection-matrix.pdf\nexport function getFrustumPlanes(viewProjectionMatrix: Matrix4 | NumericArray): {\n left: FrustumPlane;\n right: FrustumPlane;\n top: FrustumPlane;\n bottom: FrustumPlane;\n near: FrustumPlane;\n far: FrustumPlane;\n} {\n return {\n left: getFrustumPlane(\n viewProjectionMatrix[3] + viewProjectionMatrix[0],\n viewProjectionMatrix[7] + viewProjectionMatrix[4],\n viewProjectionMatrix[11] + viewProjectionMatrix[8],\n viewProjectionMatrix[15] + viewProjectionMatrix[12]\n ),\n right: getFrustumPlane(\n viewProjectionMatrix[3] - viewProjectionMatrix[0],\n viewProjectionMatrix[7] - viewProjectionMatrix[4],\n viewProjectionMatrix[11] - viewProjectionMatrix[8],\n viewProjectionMatrix[15] - viewProjectionMatrix[12]\n ),\n bottom: getFrustumPlane(\n viewProjectionMatrix[3] + viewProjectionMatrix[1],\n viewProjectionMatrix[7] + viewProjectionMatrix[5],\n viewProjectionMatrix[11] + viewProjectionMatrix[9],\n viewProjectionMatrix[15] + viewProjectionMatrix[13]\n ),\n top: getFrustumPlane(\n viewProjectionMatrix[3] - viewProjectionMatrix[1],\n viewProjectionMatrix[7] - viewProjectionMatrix[5],\n viewProjectionMatrix[11] - viewProjectionMatrix[9],\n viewProjectionMatrix[15] - viewProjectionMatrix[13]\n ),\n near: getFrustumPlane(\n viewProjectionMatrix[3] + viewProjectionMatrix[2],\n viewProjectionMatrix[7] + viewProjectionMatrix[6],\n viewProjectionMatrix[11] + viewProjectionMatrix[10],\n viewProjectionMatrix[15] + viewProjectionMatrix[14]\n ),\n far: getFrustumPlane(\n viewProjectionMatrix[3] - viewProjectionMatrix[2],\n viewProjectionMatrix[7] - viewProjectionMatrix[6],\n viewProjectionMatrix[11] - viewProjectionMatrix[10],\n viewProjectionMatrix[15] - viewProjectionMatrix[14]\n )\n };\n}\n\nconst scratchVector = new Vector3();\n\nfunction getFrustumPlane(a: number, b: number, c: number, d: number): FrustumPlane {\n scratchVector.set(a, b, c);\n const L = scratchVector.len();\n return {distance: d / L, normal: new Vector3(-a / L, -b / L, -c / L)};\n}\n\n/**\n * Calculate the low part of a WebGL 64 bit float\n * @param x {number} - the input float number\n * @returns {number} - the lower 32 bit of the number\n */\nexport function fp64LowPart(x: number): number {\n return x - Math.fround(x);\n}\n\nlet scratchArray;\n\n/**\n * Split a Float64Array into a double-length Float32Array\n * @param typedArray\n * @param options\n * @param options.size - per attribute size\n * @param options.startIndex - start index in the source array\n * @param options.endIndex - end index in the source array\n * @returns {} - high part, low part for each attribute:\n [1xHi, 1yHi, 1zHi, 1xLow, 1yLow, 1zLow, 2xHi, ...]\n */\nexport function toDoublePrecisionArray(\n typedArray: Float64Array,\n options: {size?: number; startIndex?: number; endIndex?: number}\n): Float32Array {\n const {size = 1, startIndex = 0} = options;\n\n const endIndex = options.endIndex !== undefined ? options.endIndex : typedArray.length;\n\n const count = (endIndex - startIndex) / size;\n scratchArray = typedArrayManager.allocate(scratchArray, count, {\n type: Float32Array,\n size: size * 2\n });\n\n let sourceIndex = startIndex;\n let targetIndex = 0;\n while (sourceIndex < endIndex) {\n for (let j = 0; j < size; j++) {\n const value = typedArray[sourceIndex++];\n scratchArray[targetIndex + j] = value;\n scratchArray[targetIndex + j + size] = fp64LowPart(value);\n }\n targetIndex += size * 2;\n }\n\n return scratchArray.subarray(0, count * size * 2);\n}\n\ntype LayerBounds = [number[], number[]];\nexport function mergeBounds(boundsList: (LayerBounds | null)[]): LayerBounds | null {\n let mergedBounds: LayerBounds | null = null;\n let isMerged = false;\n\n for (const bounds of boundsList) {\n if (!bounds) continue;\n if (!mergedBounds) {\n mergedBounds = bounds;\n } else {\n if (!isMerged) {\n // Copy to avoid mutating input bounds\n mergedBounds = [\n [mergedBounds[0][0], mergedBounds[0][1]],\n [mergedBounds[1][0], mergedBounds[1][1]]\n ];\n isMerged = true;\n }\n\n mergedBounds[0][0] = Math.min(mergedBounds[0][0], bounds[0][0]);\n mergedBounds[0][1] = Math.min(mergedBounds[0][1], bounds[0][1]);\n mergedBounds[1][0] = Math.max(mergedBounds[1][0], bounds[1][0]);\n mergedBounds[1][1] = Math.max(mergedBounds[1][1], bounds[1][1]);\n }\n }\n\n return mergedBounds;\n}\n","import Vector from './base/vector';\nimport { config, isArray } from '../lib/common';\nimport { checkNumber } from '../lib/validators';\nimport * as vec3 from 'gl-matrix/vec3';\nimport { vec3_transformMat2, vec3_transformMat4AsVector } from '../lib/gl-matrix-extras';\nconst ORIGIN = [0, 0, 0];\nlet ZERO;\nexport default class Vector3 extends Vector {\n static get ZERO() {\n if (!ZERO) {\n ZERO = new Vector3(0, 0, 0);\n Object.freeze(ZERO);\n }\n\n return ZERO;\n }\n\n constructor(x = 0, y = 0, z = 0) {\n super(-0, -0, -0);\n\n if (arguments.length === 1 && isArray(x)) {\n this.copy(x);\n } else {\n if (config.debug) {\n checkNumber(x);\n checkNumber(y);\n checkNumber(z);\n }\n\n this[0] = x;\n this[1] = y;\n this[2] = z;\n }\n }\n\n set(x, y, z) {\n this[0] = x;\n this[1] = y;\n this[2] = z;\n return this.check();\n }\n\n copy(array) {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n return this.check();\n }\n\n fromObject(object) {\n if (config.debug) {\n checkNumber(object.x);\n checkNumber(object.y);\n checkNumber(object.z);\n }\n\n this[0] = object.x;\n this[1] = object.y;\n this[2] = object.z;\n return this.check();\n }\n\n toObject(object) {\n object.x = this[0];\n object.y = this[1];\n object.z = this[2];\n return object;\n }\n\n get ELEMENTS() {\n return 3;\n }\n\n get z() {\n return this[2];\n }\n\n set z(value) {\n this[2] = checkNumber(value);\n }\n\n angle(vector) {\n return vec3.angle(this, vector);\n }\n\n cross(vector) {\n vec3.cross(this, this, vector);\n return this.check();\n }\n\n rotateX({\n radians,\n origin = ORIGIN\n }) {\n vec3.rotateX(this, this, origin, radians);\n return this.check();\n }\n\n rotateY({\n radians,\n origin = ORIGIN\n }) {\n vec3.rotateY(this, this, origin, radians);\n return this.check();\n }\n\n rotateZ({\n radians,\n origin = ORIGIN\n }) {\n vec3.rotateZ(this, this, origin, radians);\n return this.check();\n }\n\n transform(matrix4) {\n return this.transformAsPoint(matrix4);\n }\n\n transformAsPoint(matrix4) {\n vec3.transformMat4(this, this, matrix4);\n return this.check();\n }\n\n transformAsVector(matrix4) {\n vec3_transformMat4AsVector(this, this, matrix4);\n return this.check();\n }\n\n transformByMatrix3(matrix3) {\n vec3.transformMat3(this, this, matrix3);\n return this.check();\n }\n\n transformByMatrix2(matrix2) {\n vec3_transformMat2(this, this, matrix2);\n return this.check();\n }\n\n transformByQuaternion(quaternion) {\n vec3.transformQuat(this, this, quaternion);\n return this.check();\n }\n\n}\n//# sourceMappingURL=vector3.js.map","// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {NumericArray} from '@math.gl/types';\nimport Vector from './base/vector';\nimport {config, isArray} from '../lib/common';\nimport {checkNumber} from '../lib/validators';\nimport * as vec3 from 'gl-matrix/vec3';\n/* eslint-disable camelcase */\nimport {vec3_transformMat2, vec3_transformMat4AsVector} from '../lib/gl-matrix-extras';\n\nconst ORIGIN = [0, 0, 0];\n\nlet ZERO: Vector3;\n\n/**\n * Three-element vector class.\n * Subclass of Array\n */\nexport default class Vector3 extends Vector {\n static get ZERO(): Vector3 {\n if (!ZERO) {\n ZERO = new Vector3(0, 0, 0);\n Object.freeze(ZERO);\n }\n return ZERO;\n }\n\n /**\n * @class\n * @param x\n * @param y\n * @param z\n */\n constructor(x: number | Readonly = 0, y: number = 0, z: number = 0) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0);\n if (arguments.length === 1 && isArray(x)) {\n this.copy(x as NumericArray);\n } else {\n // this.set(x, y, z);\n if (config.debug) {\n checkNumber(x);\n checkNumber(y);\n checkNumber(z);\n }\n // @ts-expect-error TS2412: Property '0' of type 'number | [number, number, number]' is not assignable to numeric index type 'number'\n this[0] = x;\n this[1] = y;\n this[2] = z;\n }\n }\n\n set(x: number, y: number, z: number): this {\n this[0] = x;\n this[1] = y;\n this[2] = z;\n return this.check();\n }\n\n copy(array: Readonly): this {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n return this.check();\n }\n\n fromObject(object: {x: number; y: number; z: number}): this {\n if (config.debug) {\n checkNumber(object.x);\n checkNumber(object.y);\n checkNumber(object.z);\n }\n this[0] = object.x;\n this[1] = object.y;\n this[2] = object.z;\n return this.check();\n }\n\n toObject(object: {x?: number; y?: number; z?: number}): {x: number; y: number; z: number} {\n object.x = this[0];\n object.y = this[1];\n object.z = this[2];\n return object as {x: number; y: number; z: number};\n }\n\n // Getters/setters\n\n get ELEMENTS(): number {\n return 3;\n }\n get z(): number {\n return this[2];\n }\n set z(value: number) {\n this[2] = checkNumber(value);\n }\n\n // ACCESSORS\n\n angle(vector: Readonly): number {\n return vec3.angle(this, vector);\n }\n\n // MODIFIERS\n\n cross(vector: Readonly): this {\n vec3.cross(this, this, vector);\n return this.check();\n }\n\n rotateX({radians, origin = ORIGIN}: {radians: number; origin?: Readonly}): this {\n vec3.rotateX(this, this, origin, radians);\n return this.check();\n }\n\n rotateY({radians, origin = ORIGIN}: {radians: number; origin?: Readonly}): this {\n vec3.rotateY(this, this, origin, radians);\n return this.check();\n }\n\n rotateZ({radians, origin = ORIGIN}: {radians: number; origin?: Readonly}): this {\n vec3.rotateZ(this, this, origin, radians);\n return this.check();\n }\n\n // Transforms\n\n // transforms as point (4th component is implicitly 1)\n transform(matrix4: Readonly): this {\n return this.transformAsPoint(matrix4);\n }\n\n // transforms as point (4th component is implicitly 1)\n transformAsPoint(matrix4: Readonly): this {\n vec3.transformMat4(this, this, matrix4);\n return this.check();\n }\n\n // transforms as vector (4th component is implicitly 0, ignores translation. slightly faster)\n transformAsVector(matrix4: Readonly): this {\n vec3_transformMat4AsVector(this, this, matrix4);\n return this.check();\n }\n\n transformByMatrix3(matrix3: Readonly): this {\n vec3.transformMat3(this, this, matrix3);\n return this.check();\n }\n\n transformByMatrix2(matrix2: Readonly): this {\n vec3_transformMat2(this, this, matrix2);\n return this.check();\n }\n\n transformByQuaternion(quaternion: Readonly): this {\n vec3.transformQuat(this, this, quaternion);\n return this.check();\n }\n}\n","import MathArray from './math-array';\nimport { checkNumber } from '../../lib/validators';\nimport assert from '../../lib/assert';\nexport default class Vector extends MathArray {\n get x() {\n return this[0];\n }\n\n set x(value) {\n this[0] = checkNumber(value);\n }\n\n get y() {\n return this[1];\n }\n\n set y(value) {\n this[1] = checkNumber(value);\n }\n\n len() {\n return Math.sqrt(this.lengthSquared());\n }\n\n magnitude() {\n return this.len();\n }\n\n lengthSquared() {\n let length = 0;\n\n for (let i = 0; i < this.ELEMENTS; ++i) {\n length += this[i] * this[i];\n }\n\n return length;\n }\n\n magnitudeSquared() {\n return this.lengthSquared();\n }\n\n distance(mathArray) {\n return Math.sqrt(this.distanceSquared(mathArray));\n }\n\n distanceSquared(mathArray) {\n let length = 0;\n\n for (let i = 0; i < this.ELEMENTS; ++i) {\n const dist = this[i] - mathArray[i];\n length += dist * dist;\n }\n\n return checkNumber(length);\n }\n\n dot(mathArray) {\n let product = 0;\n\n for (let i = 0; i < this.ELEMENTS; ++i) {\n product += this[i] * mathArray[i];\n }\n\n return checkNumber(product);\n }\n\n normalize() {\n const length = this.magnitude();\n\n if (length !== 0) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] /= length;\n }\n }\n\n return this.check();\n }\n\n multiply(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= vector[i];\n }\n }\n\n return this.check();\n }\n\n divide(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] /= vector[i];\n }\n }\n\n return this.check();\n }\n\n lengthSq() {\n return this.lengthSquared();\n }\n\n distanceTo(vector) {\n return this.distance(vector);\n }\n\n distanceToSquared(vector) {\n return this.distanceSquared(vector);\n }\n\n getComponent(i) {\n assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n return checkNumber(this[i]);\n }\n\n setComponent(i, value) {\n assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n this[i] = value;\n return this.check();\n }\n\n addVectors(a, b) {\n return this.copy(a).add(b);\n }\n\n subVectors(a, b) {\n return this.copy(a).subtract(b);\n }\n\n multiplyVectors(a, b) {\n return this.copy(a).multiply(b);\n }\n\n addScaledVector(a, b) {\n return this.add(new this.constructor(a).multiplyScalar(b));\n }\n\n}\n//# sourceMappingURL=vector.js.map","// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {NumericArray} from '@math.gl/types';\nimport MathArray from './math-array';\nimport {checkNumber} from '../../lib/validators';\nimport assert from '../../lib/assert';\n\n/** Base class for vectors with at least 2 elements */\nexport default abstract class Vector extends MathArray {\n // ACCESSORS\n\n get x(): number {\n return this[0];\n }\n\n set x(value: number) {\n this[0] = checkNumber(value);\n }\n\n get y(): number {\n return this[1];\n }\n\n set y(value: number) {\n this[1] = checkNumber(value);\n }\n\n /**\n * Returns the length of the vector from the origin to the point described by this vector\n *\n * @note `length` is a reserved word for Arrays, so `v.length()` will return number of elements\n * Instead we provide `len` and `magnitude`\n */\n len(): number {\n return Math.sqrt(this.lengthSquared());\n }\n\n /**\n * Returns the length of the vector from the origin to the point described by this vector\n */\n magnitude(): number {\n return this.len();\n }\n\n /**\n * Returns the squared length of the vector from the origin to the point described by this vector\n */\n lengthSquared(): number {\n let length = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n length += this[i] * this[i];\n }\n return length;\n }\n\n /**\n * Returns the squared length of the vector from the origin to the point described by this vector\n */\n magnitudeSquared(): number {\n return this.lengthSquared();\n }\n\n distance(mathArray: Readonly): number {\n return Math.sqrt(this.distanceSquared(mathArray));\n }\n\n distanceSquared(mathArray: Readonly): number {\n let length = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n const dist = this[i] - mathArray[i];\n length += dist * dist;\n }\n return checkNumber(length);\n }\n\n dot(mathArray: Readonly): number {\n let product = 0;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n product += this[i] * mathArray[i];\n }\n return checkNumber(product);\n }\n\n // MODIFIERS\n\n normalize(): this {\n const length = this.magnitude();\n if (length !== 0) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] /= length;\n }\n }\n return this.check();\n }\n\n multiply(...vectors: Readonly[]): this {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= vector[i];\n }\n }\n return this.check();\n }\n\n divide(...vectors: Readonly[]): this {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] /= vector[i];\n }\n }\n return this.check();\n }\n\n // THREE.js compatibility\n\n lengthSq(): number {\n return this.lengthSquared();\n }\n distanceTo(vector: Readonly): number {\n return this.distance(vector);\n }\n distanceToSquared(vector: Readonly): number {\n return this.distanceSquared(vector);\n }\n\n getComponent(i: number): number {\n assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n return checkNumber(this[i]);\n }\n\n setComponent(i: number, value: number): this {\n assert(i >= 0 && i < this.ELEMENTS, 'index is out of range');\n this[i] = value;\n return this.check();\n }\n\n addVectors(a: Readonly, b: Readonly): this {\n return this.copy(a).add(b);\n }\n\n subVectors(a: Readonly, b: Readonly): this {\n return this.copy(a).subtract(b);\n }\n\n multiplyVectors(a: Readonly, b: Readonly): this {\n return this.copy(a).multiply(b);\n }\n\n addScaledVector(a: Readonly, b: number): this {\n // @ts-expect-error error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.\n return this.add(new this.constructor(a).multiplyScalar(b));\n }\n}\n","function _extendableBuiltin(cls) {\n function ExtendableBuiltin() {\n var instance = Reflect.construct(cls, Array.from(arguments));\n Object.setPrototypeOf(instance, Object.getPrototypeOf(this));\n return instance;\n }\n\n ExtendableBuiltin.prototype = Object.create(cls.prototype, {\n constructor: {\n value: cls,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ExtendableBuiltin, cls);\n } else {\n ExtendableBuiltin.__proto__ = cls;\n }\n\n return ExtendableBuiltin;\n}\n\nimport { config, formatValue, equals, isArray } from '../../lib/common';\nexport default class MathArray extends _extendableBuiltin(Array) {\n clone() {\n return new this.constructor().copy(this);\n }\n\n fromArray(array, offset = 0) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = array[i + offset];\n }\n\n return this.check();\n }\n\n toArray(targetArray = [], offset = 0) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n targetArray[offset + i] = this[i];\n }\n\n return targetArray;\n }\n\n from(arrayOrObject) {\n return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);\n }\n\n to(arrayOrObject) {\n if (arrayOrObject === this) {\n return this;\n }\n\n return isArray(arrayOrObject) ? this.toArray(arrayOrObject) : this.toObject(arrayOrObject);\n }\n\n toTarget(target) {\n return target ? this.to(target) : this;\n }\n\n toFloat32Array() {\n return new Float32Array(this);\n }\n\n toString() {\n return this.formatString(config);\n }\n\n formatString(opts) {\n let string = '';\n\n for (let i = 0; i < this.ELEMENTS; ++i) {\n string += (i > 0 ? ', ' : '') + formatValue(this[i], opts);\n }\n\n return \"\".concat(opts.printTypes ? this.constructor.name : '', \"[\").concat(string, \"]\");\n }\n\n equals(array) {\n if (!array || this.length !== array.length) {\n return false;\n }\n\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (!equals(this[i], array[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n exactEquals(array) {\n if (!array || this.length !== array.length) {\n return false;\n }\n\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (this[i] !== array[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n negate() {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = -this[i];\n }\n\n return this.check();\n }\n\n lerp(a, b, t) {\n if (t === undefined) {\n return this.lerp(this, a, b);\n }\n\n for (let i = 0; i < this.ELEMENTS; ++i) {\n const ai = a[i];\n this[i] = ai + t * (b[i] - ai);\n }\n\n return this.check();\n }\n\n min(vector) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(vector[i], this[i]);\n }\n\n return this.check();\n }\n\n max(vector) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.max(vector[i], this[i]);\n }\n\n return this.check();\n }\n\n clamp(minVector, maxVector) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], minVector[i]), maxVector[i]);\n }\n\n return this.check();\n }\n\n add(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += vector[i];\n }\n }\n\n return this.check();\n }\n\n subtract(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] -= vector[i];\n }\n }\n\n return this.check();\n }\n\n scale(scale) {\n if (typeof scale === 'number') {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scale;\n }\n } else {\n for (let i = 0; i < this.ELEMENTS && i < scale.length; ++i) {\n this[i] *= scale[i];\n }\n }\n\n return this.check();\n }\n\n multiplyByScalar(scalar) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scalar;\n }\n\n return this.check();\n }\n\n check() {\n if (config.debug && !this.validate()) {\n throw new Error(\"math.gl: \".concat(this.constructor.name, \" some fields set to invalid numbers'\"));\n }\n\n return this;\n }\n\n validate() {\n let valid = this.length === this.ELEMENTS;\n\n for (let i = 0; i < this.ELEMENTS; ++i) {\n valid = valid && Number.isFinite(this[i]);\n }\n\n return valid;\n }\n\n sub(a) {\n return this.subtract(a);\n }\n\n setScalar(a) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = a;\n }\n\n return this.check();\n }\n\n addScalar(a) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += a;\n }\n\n return this.check();\n }\n\n subScalar(a) {\n return this.addScalar(-a);\n }\n\n multiplyScalar(scalar) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scalar;\n }\n\n return this.check();\n }\n\n divideScalar(a) {\n return this.multiplyByScalar(1 / a);\n }\n\n clampScalar(min, max) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], min), max);\n }\n\n return this.check();\n }\n\n get elements() {\n return this;\n }\n\n}\n//# sourceMappingURL=math-array.js.map","// math.gl, MIT License\nimport {NumericArray} from '@math.gl/types';\nimport {ConfigurationOptions, config, formatValue, equals, isArray} from '../../lib/common';\n\n/** Base class for vectors and matrices */\nexport default abstract class MathArray extends Array {\n /** Number of elements (values) in this array */\n abstract get ELEMENTS(): number;\n\n abstract copy(vector: Readonly): this;\n\n abstract fromObject(object: object): this;\n\n // Common methods\n\n /**\n * Clone the current object\n * @returns a new copy of this object\n */\n clone(): this {\n // @ts-expect-error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.\n return new this.constructor().copy(this); // eslint-disable-line\n }\n\n fromArray(array: Readonly, offset: number = 0): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = array[i + offset];\n }\n return this.check();\n }\n\n toArray(targetArray: TypedArray, offset?: number): TypedArray;\n toArray(targetArray?: number[], offset?: number): NumericArray;\n\n toArray(targetArray: NumericArray = [], offset: number = 0): NumericArray {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n targetArray[offset + i] = this[i];\n }\n return targetArray;\n }\n\n from(arrayOrObject: Readonly | object): this {\n return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);\n }\n\n to(arrayOrObject: T): T {\n // @ts-ignore\n if (arrayOrObject === this) {\n return this;\n }\n // @ts-expect-error TS2339: Property 'toObject' does not exist on type 'MathArray'.\n return isArray(arrayOrObject) ? this.toArray(arrayOrObject) : this.toObject(arrayOrObject);\n }\n\n toTarget(target: this): this {\n return target ? this.to(target) : this;\n }\n\n /** @deprecated */\n toFloat32Array(): Float32Array {\n return new Float32Array(this);\n }\n\n toString(): string {\n return this.formatString(config);\n }\n\n /** Formats string according to options */\n formatString(opts: ConfigurationOptions): string {\n let string = '';\n for (let i = 0; i < this.ELEMENTS; ++i) {\n string += (i > 0 ? ', ' : '') + formatValue(this[i], opts);\n }\n return `${opts.printTypes ? this.constructor.name : ''}[${string}]`;\n }\n\n equals(array: Readonly): boolean {\n if (!array || this.length !== array.length) {\n return false;\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (!equals(this[i], array[i])) {\n return false;\n }\n }\n return true;\n }\n\n exactEquals(array: Readonly): boolean {\n if (!array || this.length !== array.length) {\n return false;\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (this[i] !== array[i]) {\n return false;\n }\n }\n return true;\n }\n\n // Modifiers\n\n /** Negates all values in this object */\n negate(): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = -this[i];\n }\n return this.check();\n }\n\n /** Linearly interpolates between two values */\n lerp(a: Readonly, t: number): this;\n lerp(a: Readonly, b: Readonly, t: number): this;\n\n lerp(a: Readonly, b: Readonly | number, t?: number): this {\n if (t === undefined) {\n return this.lerp(this, a, b as number);\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n const ai = a[i];\n this[i] = ai + t * (b[i] - ai);\n }\n return this.check();\n }\n\n /** Minimal */\n min(vector: Readonly): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(vector[i], this[i]);\n }\n return this.check();\n }\n\n /** Maximal */\n max(vector: Readonly): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.max(vector[i], this[i]);\n }\n return this.check();\n }\n\n clamp(minVector: Readonly, maxVector: Readonly): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], minVector[i]), maxVector[i]);\n }\n return this.check();\n }\n\n add(...vectors: Readonly[]): this {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += vector[i];\n }\n }\n return this.check();\n }\n\n subtract(...vectors: Readonly[]): this {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] -= vector[i];\n }\n }\n return this.check();\n }\n\n scale(scale: number | Readonly): this {\n if (typeof scale === 'number') {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scale;\n }\n } else {\n for (let i = 0; i < this.ELEMENTS && i < scale.length; ++i) {\n this[i] *= scale[i];\n }\n }\n return this.check();\n }\n\n /**\n * Multiplies all elements by `scale`\n * Note: `Matrix4.multiplyByScalar` only scales its 3x3 \"minor\"\n */\n multiplyByScalar(scalar: number): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scalar;\n }\n return this.check();\n }\n\n // Debug checks\n\n /** Throws an error if array length is incorrect or contains illegal values */\n check(): this {\n if (config.debug && !this.validate()) {\n throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);\n }\n return this;\n }\n\n /** Returns false if the array length is incorrect or contains illegal values */\n validate(): boolean {\n let valid = this.length === this.ELEMENTS;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n valid = valid && Number.isFinite(this[i]);\n }\n return valid;\n }\n\n // three.js compatibility\n\n /** @deprecated */\n sub(a: Readonly): this {\n return this.subtract(a);\n }\n\n /** @deprecated */\n setScalar(a: number): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = a;\n }\n return this.check();\n }\n\n /** @deprecated */\n addScalar(a: number): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += a;\n }\n return this.check();\n }\n\n /** @deprecated */\n subScalar(a: number): this {\n return this.addScalar(-a);\n }\n\n /** @deprecated */\n multiplyScalar(scalar: number): this {\n // Multiplies all elements\n // `Matrix4.scale` only scales its 3x3 \"minor\"\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scalar;\n }\n return this.check();\n }\n\n /** @deprecated */\n divideScalar(a: number): this {\n return this.multiplyByScalar(1 / a);\n }\n\n /** @deprecated */\n clampScalar(min: number, max: number): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], min), max);\n }\n return this.check();\n }\n\n /** @deprecated */\n get elements(): NumericArray {\n return this;\n }\n}\n","import assert from './assert';\nconst RADIANS_TO_DEGREES = 1 / Math.PI * 180;\nconst DEGREES_TO_RADIANS = 1 / 180 * Math.PI;\nexport const config = {\n EPSILON: 1e-12,\n debug: false,\n precision: 4,\n printTypes: false,\n printDegrees: false,\n printRowMajor: true\n};\nexport function configure(options) {\n for (const key in options) {\n assert(key in config);\n config[key] = options[key];\n }\n\n return config;\n}\nexport function formatValue(value, {\n precision = config.precision\n} = {}) {\n value = round(value);\n return \"\".concat(parseFloat(value.toPrecision(precision)));\n}\nexport function isArray(value) {\n return Array.isArray(value) || ArrayBuffer.isView(value) && !(value instanceof DataView);\n}\nexport function clone(array) {\n return 'clone' in array ? array.clone() : array.slice();\n}\nexport function toRadians(degrees) {\n return radians(degrees);\n}\nexport function toDegrees(radians) {\n return degrees(radians);\n}\nexport function radians(degrees, result) {\n return map(degrees, degrees => degrees * DEGREES_TO_RADIANS, result);\n}\nexport function degrees(radians, result) {\n return map(radians, radians => radians * RADIANS_TO_DEGREES, result);\n}\nexport function sin(radians, result) {\n return map(radians, angle => Math.sin(angle), result);\n}\nexport function cos(radians, result) {\n return map(radians, angle => Math.cos(angle), result);\n}\nexport function tan(radians, result) {\n return map(radians, angle => Math.tan(angle), result);\n}\nexport function asin(radians, result) {\n return map(radians, angle => Math.asin(angle), result);\n}\nexport function acos(radians, result) {\n return map(radians, angle => Math.acos(angle), result);\n}\nexport function atan(radians, result) {\n return map(radians, angle => Math.atan(angle), result);\n}\nexport function clamp(value, min, max) {\n return map(value, value => Math.max(min, Math.min(max, value)));\n}\nexport function lerp(a, b, t) {\n if (isArray(a)) {\n return a.map((ai, i) => lerp(ai, b[i], t));\n }\n\n return t * b + (1 - t) * a;\n}\nexport function equals(a, b, epsilon) {\n const oldEpsilon = config.EPSILON;\n\n if (epsilon) {\n config.EPSILON = epsilon;\n }\n\n try {\n if (a === b) {\n return true;\n }\n\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; ++i) {\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n if (a && a.equals) {\n return a.equals(b);\n }\n\n if (b && b.equals) {\n return b.equals(a);\n }\n\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.abs(a - b) <= config.EPSILON * Math.max(1, Math.abs(a), Math.abs(b));\n }\n\n return false;\n } finally {\n config.EPSILON = oldEpsilon;\n }\n}\nexport function exactEquals(a, b) {\n if (a === b) {\n return true;\n }\n\n if (a && typeof a === 'object' && b && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n\n if (a.exactEquals) {\n return a.exactEquals(b);\n }\n }\n\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; ++i) {\n if (!exactEquals(a[i], b[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\nexport function withEpsilon(epsilon, func) {\n const oldPrecision = config.EPSILON;\n config.EPSILON = epsilon;\n let value;\n\n try {\n value = func();\n } finally {\n config.EPSILON = oldPrecision;\n }\n\n return value;\n}\n\nfunction round(value) {\n return Math.round(value / config.EPSILON) * config.EPSILON;\n}\n\nfunction duplicateArray(array) {\n return array.clone ? array.clone() : new Array(array.length);\n}\n\nfunction map(value, func, result) {\n if (isArray(value)) {\n const array = value;\n result = result || duplicateArray(array);\n\n for (let i = 0; i < result.length && i < array.length; ++i) {\n result[i] = func(value[i], i, result);\n }\n\n return result;\n }\n\n return func(value);\n}\n//# sourceMappingURL=common.js.map","// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {NumericArray} from '@math.gl/types';\nimport assert from './assert';\n\nimport type MathArray from '../classes/base/math-array';\n\nexport type ConfigurationOptions = {\n EPSILON: number;\n debug?: boolean;\n precision: number;\n printTypes?: boolean;\n printDegrees?: boolean;\n printRowMajor?: boolean;\n _cartographicRadians?: boolean;\n};\n\nconst RADIANS_TO_DEGREES = (1 / Math.PI) * 180;\nconst DEGREES_TO_RADIANS = (1 / 180) * Math.PI;\n\n// TODO - remove\nexport const config: ConfigurationOptions = {\n EPSILON: 1e-12,\n debug: false,\n precision: 4,\n printTypes: false,\n printDegrees: false,\n printRowMajor: true\n};\n\nexport function configure(options?: Partial): ConfigurationOptions {\n // Only copy existing keys\n for (const key in options) {\n assert(key in config);\n config[key] = options[key];\n }\n return config;\n}\n\n/**\n * Formats a value into a string\n * @param value\n * @param param1\n * @returns\n */\nexport function formatValue(\n value: number,\n {precision = config.precision}: {precision?: number} = {}\n): string {\n value = round(value);\n // get rid of trailing zeros\n return `${parseFloat(value.toPrecision(precision))}`;\n}\n\n/**\n * Check if value is an \"array\"\n * Returns `true` if value is either an array or a typed array\n *\n * Note: returns `false` for `ArrayBuffer` and `DataView` instances\n */\nexport function isArray(value: unknown): boolean {\n return Array.isArray(value) || (ArrayBuffer.isView(value) && !(value instanceof DataView));\n}\n\nexport function clone(array: NumericArray | MathArray): NumericArray {\n return 'clone' in array ? array.clone() : array.slice();\n}\n\nexport function toRadians(degrees: number): number;\nexport function toRadians(degrees: NumericArray): NumericArray;\n\nexport function toRadians(degrees: number | NumericArray): number | NumericArray {\n return radians(degrees as NumericArray);\n}\n\nexport function toDegrees(degrees: number): number;\nexport function toDegrees(degrees: NumericArray): NumericArray;\n\nexport function toDegrees(radians: number | NumericArray): number | NumericArray {\n return degrees(radians as NumericArray);\n}\n\n// GLSL math function equivalents - Works on both single values and vectors\n\n/**\n * \"GLSL equivalent\" radians: Works on single values and vectors\n */\nexport function radians(degrees: number): number;\nexport function radians(degrees: NumericArray, result?: NumericArray): NumericArray;\n\nexport function radians(\n degrees: number | NumericArray,\n result?: NumericArray\n): number | NumericArray {\n return map(degrees, (degrees) => degrees * DEGREES_TO_RADIANS, result);\n}\n\n/**\n * \"GLSL equivalent\" degrees: Works on single values and vectors\n */\nexport function degrees(radians: number): number;\nexport function degrees(radians: NumericArray, result?: NumericArray): NumericArray;\n\nexport function degrees(\n radians: number | NumericArray,\n result?: NumericArray\n): number | NumericArray {\n return map(radians, (radians) => radians * RADIANS_TO_DEGREES, result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.sin`: Works on single values and vectors\n * @deprecated\n */\nexport function sin(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.sin(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.cos`: Works on single values and vectors\n * @deprecated\n */\nexport function cos(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.cos(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.tan`: Works on single values and vectors\n * @deprecated\n */\nexport function tan(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.tan(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.asin`: Works on single values and vectors\n * @deprecated\n */\nexport function asin(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.asin(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.acos`: Works on single values and vectors\n * @deprecated\n */\nexport function acos(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.acos(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.atan`: Works on single values and vectors\n * @deprecated\n */\nexport function atan(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.atan(angle), result);\n}\n\n/**\n * GLSL style value clamping: Works on single values and vectors\n */\nexport function clamp(value: number, min: number, max: number): number;\nexport function clamp(value: NumericArray, min: number, max: number): NumericArray;\n\nexport function clamp(\n value: number | NumericArray,\n min: number,\n max: number\n): number | NumericArray {\n return map(value, (value) => Math.max(min, Math.min(max, value)));\n}\n\n/**\n * Interpolate between two numbers or two arrays\n */\nexport function lerp(a: number, b: number, t: number): number;\nexport function lerp(a: NumericArray, b: NumericArray, t: number): NumericArray;\n\nexport function lerp(\n a: number | NumericArray,\n b: number | NumericArray,\n t: number\n): number | NumericArray {\n if (isArray(a)) {\n return (a as NumericArray).map((ai: number, i: number) => lerp(ai, (b as NumericArray)[i], t));\n }\n return t * (b as number) + (1 - t) * (a as number);\n}\n\n/* eslint-disable */\n\n/**\n * Compares any two math objects, using `equals` method if available.\n * @param a\n * @param b\n * @param epsilon\n * @returns\n */\nexport function equals(a: any, b: any, epsilon?: number): boolean {\n const oldEpsilon = config.EPSILON;\n if (epsilon) {\n config.EPSILON = epsilon;\n }\n try {\n if (a === b) {\n return true;\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n // eslint-disable-next-line max-depth\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (a && a.equals) {\n return a.equals(b);\n }\n if (b && b.equals) {\n return b.equals(a);\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.abs(a - b) <= config.EPSILON * Math.max(1, Math.abs(a), Math.abs(b));\n }\n return false;\n } finally {\n config.EPSILON = oldEpsilon;\n }\n}\n\nexport function exactEquals(a: any, b: any): boolean {\n if (a === b) {\n return true;\n }\n if (a && typeof a === 'object' && b && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (a.exactEquals) {\n return a.exactEquals(b);\n }\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (!exactEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\n/* eslint-enable */\n\nexport function withEpsilon(epsilon: number, func: () => T): T {\n const oldPrecision = config.EPSILON;\n config.EPSILON = epsilon;\n let value: T;\n try {\n value = func();\n } finally {\n config.EPSILON = oldPrecision;\n }\n return value;\n}\n\n// HELPERS\n\nfunction round(value: number): number {\n return Math.round(value / config.EPSILON) * config.EPSILON;\n}\n\n// If the array has a clone function, calls it, otherwise returns a copy\nfunction duplicateArray(array: NumericArray): NumericArray {\n // @ts-expect-error We check for math.gl class methods\n return array.clone ? array.clone() : (new Array(array.length) as number[]);\n}\n\n// If the argument value is an array, applies the func element wise,\n// otherwise applies func to the argument value\nfunction map(\n value: number | NumericArray,\n func: (x: number, index?: number, result?: NumericArray) => number,\n result?: NumericArray\n): number | NumericArray {\n if (isArray(value)) {\n const array = value as NumericArray;\n result = result || duplicateArray(array);\n for (let i = 0; i < result.length && i < array.length; ++i) {\n result[i] = func(value[i], i, result);\n }\n return result;\n }\n return func(value as number);\n}\n","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(\"math.gl assertion \".concat(message));\n }\n}\n//# sourceMappingURL=assert.js.map","export default function assert(condition: unknown, message?: string): void {\n if (!condition) {\n throw new Error(`math.gl assertion ${message}`);\n }\n}\n","import { config } from './common';\nexport function validateVector(v, length) {\n if (v.length !== length) {\n return false;\n }\n\n for (let i = 0; i < v.length; ++i) {\n if (!Number.isFinite(v[i])) {\n return false;\n }\n }\n\n return true;\n}\nexport function checkNumber(value) {\n if (!Number.isFinite(value)) {\n throw new Error(\"Invalid number \".concat(value));\n }\n\n return value;\n}\nexport function checkVector(v, length, callerName = '') {\n if (config.debug && !validateVector(v, length)) {\n throw new Error(\"math.gl: \".concat(callerName, \" some fields set to invalid numbers'\"));\n }\n\n return v;\n}\nconst map = {};\nexport function deprecated(method, version) {\n if (!map[method]) {\n map[method] = true;\n console.warn(\"\".concat(method, \" has been removed in version \").concat(version, \", see upgrade guide for more information\"));\n }\n}\n//# sourceMappingURL=validators.js.map","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {NumberArray} from '@math.gl/types';\nimport {config} from './common';\n\nexport function validateVector(v: NumberArray, length: number): boolean {\n if (v.length !== length) {\n return false;\n }\n // Could be arguments \"array\" (v.every not availasble)\n for (let i = 0; i < v.length; ++i) {\n if (!Number.isFinite(v[i])) {\n return false;\n }\n }\n return true;\n}\n\nexport function checkNumber(value: any): number {\n if (!Number.isFinite(value)) {\n throw new Error(`Invalid number ${value}`);\n }\n return value as number;\n}\n\nexport function checkVector(\n v: T,\n length: number,\n callerName: string = ''\n): T {\n if (config.debug && !validateVector(v, length)) {\n throw new Error(`math.gl: ${callerName} some fields set to invalid numbers'`);\n }\n return v;\n}\n\nconst map = {};\n\nexport function deprecated(method: string, version: string): void {\n if (!map[method]) {\n map[method] = true;\n // eslint-disable-next-line\n console.warn(\n `${method} has been removed in version ${version}, see upgrade guide for more information`\n );\n }\n}\n","import * as glMatrix from \"./common.js\";\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","export function vec2_transformMat4AsVector(out, a, m) {\n const x = a[0];\n const y = a[1];\n const w = m[3] * x + m[7] * y || 1.0;\n out[0] = (m[0] * x + m[4] * y) / w;\n out[1] = (m[1] * x + m[5] * y) / w;\n return out;\n}\nexport function vec3_transformMat4AsVector(out, a, m) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n const w = m[3] * x + m[7] * y + m[11] * z || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z) / w;\n return out;\n}\nexport function vec3_transformMat2(out, a, m) {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n out[2] = a[2];\n return out;\n}\nexport function vec4_transformMat2(out, a, m) {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\nexport function vec4_transformMat3(out, a, m) {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n out[0] = m[0] * x + m[3] * y + m[6] * z;\n out[1] = m[1] * x + m[4] * y + m[7] * z;\n out[2] = m[2] * x + m[5] * y + m[8] * z;\n out[3] = a[3];\n return out;\n}\n//# sourceMappingURL=gl-matrix-extras.js.map","/* eslint-disable camelcase */\nimport {NumericArray} from '@math.gl/types';\n// vec2 additions\n\nexport function vec2_transformMat4AsVector(\n out: T,\n a: Readonly,\n m: Readonly\n): T {\n const x = a[0];\n const y = a[1];\n const w = m[3] * x + m[7] * y || 1.0;\n out[0] = (m[0] * x + m[4] * y) / w;\n out[1] = (m[1] * x + m[5] * y) / w;\n return out;\n}\n\n// vec3 additions\n\n// Transform as vector, only uses 3x3 minor matrix\nexport function vec3_transformMat4AsVector(\n out: T,\n a: Readonly,\n m: Readonly\n): T {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n const w = m[3] * x + m[7] * y + m[11] * z || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z) / w;\n return out;\n}\n\nexport function vec3_transformMat2(\n out: T,\n a: Readonly,\n m: Readonly\n): T {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n out[2] = a[2];\n return out;\n}\n\n// vec4 additions\n\nexport function vec4_transformMat2(\n out: T,\n a: Readonly,\n m: Readonly\n): T {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n\nexport function vec4_transformMat3(\n out: T,\n a: Readonly,\n m: Readonly\n): T {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n out[0] = m[0] * x + m[3] * y + m[6] * z;\n out[1] = m[1] * x + m[4] * y + m[7] * z;\n out[2] = m[2] * x + m[5] * y + m[8] * z;\n out[3] = a[3];\n return out;\n}\n","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'deck.gl: assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport default function assert(condition: any, message?: string): asserts condition {\n if (!condition) {\n throw new Error(message || 'deck.gl: assertion failed.');\n }\n}\n","const EMPTY_ARRAY = [];\nconst placeholderArray = [];\nexport function createIterable(data, startRow = 0, endRow = Infinity) {\n let iterable = EMPTY_ARRAY;\n const objectInfo = {\n index: -1,\n data,\n target: []\n };\n\n if (!data) {\n iterable = EMPTY_ARRAY;\n } else if (typeof data[Symbol.iterator] === 'function') {\n iterable = data;\n } else if (data.length > 0) {\n placeholderArray.length = data.length;\n iterable = placeholderArray;\n }\n\n if (startRow > 0 || Number.isFinite(endRow)) {\n iterable = (Array.isArray(iterable) ? iterable : Array.from(iterable)).slice(startRow, endRow);\n objectInfo.index = startRow - 1;\n }\n\n return {\n iterable,\n objectInfo\n };\n}\nexport function isAsyncIterable(data) {\n return data && data[Symbol.asyncIterator];\n}\nexport function getAccessorFromBuffer(typedArray, options) {\n const {\n size,\n stride,\n offset,\n startIndices,\n nested\n } = options;\n const bytesPerElement = typedArray.BYTES_PER_ELEMENT;\n const elementStride = stride ? stride / bytesPerElement : size;\n const elementOffset = offset ? offset / bytesPerElement : 0;\n const vertexCount = Math.floor((typedArray.length - elementOffset) / elementStride);\n return (_, {\n index,\n target\n }) => {\n if (!startIndices) {\n const sourceIndex = index * elementStride + elementOffset;\n\n for (let j = 0; j < size; j++) {\n target[j] = typedArray[sourceIndex + j];\n }\n\n return target;\n }\n\n const startIndex = startIndices[index];\n const endIndex = startIndices[index + 1] || vertexCount;\n let result;\n\n if (nested) {\n result = new Array(endIndex - startIndex);\n\n for (let i = startIndex; i < endIndex; i++) {\n const sourceIndex = i * elementStride + elementOffset;\n target = new Array(size);\n\n for (let j = 0; j < size; j++) {\n target[j] = typedArray[sourceIndex + j];\n }\n\n result[i - startIndex] = target;\n }\n } else if (elementStride === size) {\n result = typedArray.subarray(startIndex * size + elementOffset, endIndex * size + elementOffset);\n } else {\n result = new typedArray.constructor((endIndex - startIndex) * size);\n let targetIndex = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n const sourceIndex = i * elementStride + elementOffset;\n\n for (let j = 0; j < size; j++) {\n result[targetIndex++] = typedArray[sourceIndex + j];\n }\n }\n }\n\n return result;\n };\n}\n//# sourceMappingURL=iterable-utils.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport type {NumericArray} from '../types/types';\nimport type {AccessorFunction} from '../types/layer-props';\n\nconst EMPTY_ARRAY = [];\nconst placeholderArray = [];\n\n/*\n * Create an Iterable\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols\n * and a \"context\" tracker from the given data\n */\nexport function createIterable(\n data,\n startRow = 0,\n endRow = Infinity\n): {\n iterable: Iterable;\n objectInfo: {\n index: number;\n data: any;\n target: any[];\n };\n} {\n let iterable: Iterable = EMPTY_ARRAY;\n\n const objectInfo = {\n index: -1,\n data,\n // visitor can optionally utilize this to avoid constructing a new array for every object\n target: []\n };\n\n if (!data) {\n iterable = EMPTY_ARRAY;\n } else if (typeof data[Symbol.iterator] === 'function') {\n // data is already an iterable\n iterable = data;\n } else if (data.length > 0) {\n placeholderArray.length = data.length;\n iterable = placeholderArray;\n }\n\n if (startRow > 0 || Number.isFinite(endRow)) {\n iterable = (Array.isArray(iterable) ? iterable : Array.from(iterable)).slice(startRow, endRow);\n objectInfo.index = startRow - 1;\n }\n\n return {iterable, objectInfo};\n}\n\n/*\n * Returns true if data is an async iterable object\n */\nexport function isAsyncIterable(data): boolean {\n return data && data[Symbol.asyncIterator];\n}\n\n/*\n * Create an accessor function from a flat buffer that yields the value at each object index\n */\nexport function getAccessorFromBuffer(\n typedArray,\n options: {\n size: number;\n stride?: number;\n offset?: number;\n startIndices?: NumericArray;\n nested?: boolean;\n }\n): AccessorFunction {\n const {size, stride, offset, startIndices, nested} = options;\n const bytesPerElement = typedArray.BYTES_PER_ELEMENT;\n const elementStride = stride ? stride / bytesPerElement : size;\n const elementOffset = offset ? offset / bytesPerElement : 0;\n const vertexCount = Math.floor((typedArray.length - elementOffset) / elementStride);\n\n return (_, {index, target}) => {\n if (!startIndices) {\n const sourceIndex = index * elementStride + elementOffset;\n for (let j = 0; j < size; j++) {\n target[j] = typedArray[sourceIndex + j];\n }\n return target;\n }\n const startIndex = startIndices[index];\n const endIndex = startIndices[index + 1] || vertexCount;\n let result;\n\n if (nested) {\n result = new Array(endIndex - startIndex);\n for (let i = startIndex; i < endIndex; i++) {\n const sourceIndex = i * elementStride + elementOffset;\n target = new Array(size);\n for (let j = 0; j < size; j++) {\n target[j] = typedArray[sourceIndex + j];\n }\n result[i - startIndex] = target;\n }\n } else if (elementStride === size) {\n result = typedArray.subarray(\n startIndex * size + elementOffset,\n endIndex * size + elementOffset\n );\n } else {\n result = new typedArray.constructor((endIndex - startIndex) * size);\n let targetIndex = 0;\n for (let i = startIndex; i < endIndex; i++) {\n const sourceIndex = i * elementStride + elementOffset;\n for (let j = 0; j < size; j++) {\n result[targetIndex++] = typedArray[sourceIndex + j];\n }\n }\n }\n\n return result;\n };\n}\n","export function flatten(array, filter = () => true) {\n if (!Array.isArray(array)) {\n return filter(array) ? [array] : [];\n }\n\n return flattenArray(array, filter, []);\n}\n\nfunction flattenArray(array, filter, result) {\n let index = -1;\n\n while (++index < array.length) {\n const value = array[index];\n\n if (Array.isArray(value)) {\n flattenArray(value, filter, result);\n } else if (filter(value)) {\n result.push(value);\n }\n }\n\n return result;\n}\n\nexport function fillArray({\n target,\n source,\n start = 0,\n count = 1\n}) {\n const length = source.length;\n const total = count * length;\n let copied = 0;\n\n for (let i = start; copied < length; copied++) {\n target[i++] = source[copied];\n }\n\n while (copied < total) {\n if (copied < total - copied) {\n target.copyWithin(start + copied, start, start + copied);\n copied *= 2;\n } else {\n target.copyWithin(start + copied, start, start + total - copied);\n copied = total;\n }\n }\n\n return target;\n}\n//# sourceMappingURL=flatten.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\ntype NestedArray = (T | NestedArray)[];\n\n/**\n * Flattens a nested array into a single level array,\n * or a single value into an array with one value\n * @example flatten([[1, [2]], [3], 4]) => [1, 2, 3, 4]\n * @example flatten(1) => [1]\n * @param array The array to flatten.\n * @param filter= - Optional predicate called on each `value` to\n * determine if it should be included (pushed onto) the resulting array.\n * @return Returns the new flattened array (new array or `result` if provided)\n */\nexport function flatten(\n array: T | NestedArray,\n filter: (element: T) => boolean = () => true\n): T[] {\n // Wrap single object in array\n if (!Array.isArray(array)) {\n return filter(array) ? [array] : [];\n }\n // Deep flatten and filter the array\n return flattenArray(array, filter, []);\n}\n\n/** Deep flattens an array. Helper to `flatten`, see its parameters */\nfunction flattenArray(array: NestedArray, filter: (element: T) => boolean, result: T[]): T[] {\n let index = -1;\n while (++index < array.length) {\n const value = array[index];\n if (Array.isArray(value)) {\n flattenArray(value, filter, result);\n } else if (filter(value)) {\n result.push(value);\n }\n }\n return result;\n}\n\n/** Uses copyWithin to significantly speed up typed array value filling */\nexport function fillArray({target, source, start = 0, count = 1}) {\n const length = source.length;\n const total = count * length;\n let copied = 0;\n for (let i = start; copied < length; copied++) {\n target[i++] = source[copied];\n }\n\n while (copied < total) {\n // If we have copied less than half, copy everything we got\n // else copy remaining in one operation\n if (copied < total - copied) {\n target.copyWithin(start + copied, start, start + copied);\n copied *= 2;\n } else {\n target.copyWithin(start + copied, start, start + total - copied);\n copied = total;\n }\n }\n\n return target;\n}\n","export const EMPTY = [];\nexport const FULL = [[0, Infinity]];\nexport function add(rangeList, range) {\n if (rangeList === FULL) {\n return rangeList;\n }\n\n if (range[0] < 0) {\n range[0] = 0;\n }\n\n if (range[0] >= range[1]) {\n return rangeList;\n }\n\n const newRangeList = [];\n const len = rangeList.length;\n let insertPosition = 0;\n\n for (let i = 0; i < len; i++) {\n const range0 = rangeList[i];\n\n if (range0[1] < range[0]) {\n newRangeList.push(range0);\n insertPosition = i + 1;\n } else if (range0[0] > range[1]) {\n newRangeList.push(range0);\n } else {\n range = [Math.min(range0[0], range[0]), Math.max(range0[1], range[1])];\n }\n }\n\n newRangeList.splice(insertPosition, 0, range);\n return newRangeList;\n}\n//# sourceMappingURL=range.js.map","/*\n * range (Array)\n * + start (Number) - the start index (incl.)\n * + end (Number) - the end index (excl.)\n * rangeList (Array) - array of sorted, combined ranges\n */\nexport const EMPTY = [];\nexport const FULL = [[0, Infinity]];\n\n// Insert a range into a range collection\nexport function add(rangeList, range) {\n // Noop if range collection already covers all\n if (rangeList === FULL) {\n return rangeList;\n }\n\n // Validate the input range\n if (range[0] < 0) {\n range[0] = 0;\n }\n if (range[0] >= range[1]) {\n return rangeList;\n }\n\n // TODO - split off to tree-shakable Range class\n const newRangeList: number[] = [];\n const len = rangeList.length;\n let insertPosition = 0;\n\n for (let i = 0; i < len; i++) {\n const range0 = rangeList[i];\n\n if (range0[1] < range[0]) {\n // the current range is to the left of the new range\n newRangeList.push(range0);\n insertPosition = i + 1;\n } else if (range0[0] > range[1]) {\n // the current range is to the right of the new range\n newRangeList.push(range0);\n } else {\n range = [Math.min(range0[0], range[0]), Math.max(range0[1], range[1])];\n }\n }\n newRangeList.splice(insertPosition, 0, range);\n return newRangeList;\n}\n","import { padArray } from '../../utils/array-utils';\nconst DEFAULT_TRANSITION_SETTINGS = {\n interpolation: {\n duration: 0,\n easing: t => t\n },\n spring: {\n stiffness: 0.05,\n damping: 0.5\n }\n};\nexport function normalizeTransitionSettings(userSettings, layerSettings) {\n if (!userSettings) {\n return null;\n }\n\n if (Number.isFinite(userSettings)) {\n userSettings = {\n type: 'interpolation',\n duration: userSettings\n };\n }\n\n const type = userSettings.type || 'interpolation';\n return { ...DEFAULT_TRANSITION_SETTINGS[type],\n ...layerSettings,\n ...userSettings,\n type\n };\n}\nexport function getSourceBufferAttribute(gl, attribute) {\n const buffer = attribute.getBuffer();\n\n if (buffer) {\n return [buffer, {\n divisor: 0,\n size: attribute.size,\n normalized: attribute.settings.normalized\n }];\n }\n\n return attribute.value;\n}\nexport function getAttributeTypeFromSize(size) {\n switch (size) {\n case 1:\n return 'float';\n\n case 2:\n return 'vec2';\n\n case 3:\n return 'vec3';\n\n case 4:\n return 'vec4';\n\n default:\n throw new Error(\"No defined attribute type for size \\\"\".concat(size, \"\\\"\"));\n }\n}\nexport function cycleBuffers(buffers) {\n buffers.push(buffers.shift());\n}\nexport function getAttributeBufferLength(attribute, numInstances) {\n const {\n doublePrecision,\n settings,\n value,\n size\n } = attribute;\n const multiplier = doublePrecision && value instanceof Float64Array ? 2 : 1;\n return (settings.noAlloc ? value.length : numInstances * size) * multiplier;\n}\nexport function padBuffer({\n buffer,\n numInstances,\n attribute,\n fromLength,\n fromStartIndices,\n getData = x => x\n}) {\n const precisionMultiplier = attribute.doublePrecision && attribute.value instanceof Float64Array ? 2 : 1;\n const size = attribute.size * precisionMultiplier;\n const byteOffset = attribute.byteOffset;\n const toStartIndices = attribute.startIndices;\n const hasStartIndices = fromStartIndices && toStartIndices;\n const toLength = getAttributeBufferLength(attribute, numInstances);\n const isConstant = attribute.isConstant;\n\n if (!hasStartIndices && fromLength >= toLength) {\n return;\n }\n\n const toData = isConstant ? attribute.value : attribute.getBuffer().getData({\n srcByteOffset: byteOffset\n });\n\n if (attribute.settings.normalized && !isConstant) {\n const getter = getData;\n\n getData = (value, chunk) => attribute.normalizeConstant(getter(value, chunk));\n }\n\n const getMissingData = isConstant ? (i, chunk) => getData(toData, chunk) : (i, chunk) => getData(toData.subarray(i, i + size), chunk);\n const source = buffer.getData({\n length: fromLength\n });\n const data = new Float32Array(toLength);\n padArray({\n source,\n target: data,\n sourceStartIndices: fromStartIndices,\n targetStartIndices: toStartIndices,\n size,\n getData: getMissingData\n });\n\n if (buffer.byteLength < data.byteLength + byteOffset) {\n buffer.reallocate(data.byteLength + byteOffset);\n }\n\n buffer.subData({\n data,\n offset: byteOffset\n });\n}\n//# sourceMappingURL=attribute-transition-utils.js.map","import {padArray} from '../../utils/array-utils';\nimport {NumericArray} from '../../types/types';\nimport Attribute from './attribute';\nimport type {BufferAccessor} from './data-column';\nimport type {Buffer} from '@luma.gl/webgl';\n\nexport interface TransitionSettings {\n type: string;\n /** Callback to get the value that the entering vertices are transitioning from. */\n enter?: (toValue: NumericArray, chunk?: NumericArray) => NumericArray;\n /** Callback when the transition is started */\n onStart?: () => void;\n /** Callback when the transition is done */\n onEnd?: () => void;\n /** Callback when the transition is interrupted */\n onInterrupt?: () => void;\n}\n\nexport type InterpolationTransitionSettings = TransitionSettings & {\n type?: 'interpolation';\n /** Duration of the transition animation, in milliseconds */\n duration: number;\n /** Easing function that maps a value from [0, 1] to [0, 1], see [http://easings.net/](http://easings.net/) */\n easing?: (t: number) => number;\n};\n\nexport type SpringTransitionSettings = TransitionSettings & {\n type: 'spring';\n /** \"Tension\" factor for the spring */\n stiffness: number;\n /** \"Friction\" factor that counteracts the spring's acceleration */\n damping: number;\n};\n\nconst DEFAULT_TRANSITION_SETTINGS = {\n interpolation: {\n duration: 0,\n easing: t => t\n },\n spring: {\n stiffness: 0.05,\n damping: 0.5\n }\n};\n\nexport function normalizeTransitionSettings(\n userSettings: number | InterpolationTransitionSettings | SpringTransitionSettings,\n layerSettings?: boolean | Partial\n): TransitionSettings | null {\n if (!userSettings) {\n return null;\n }\n if (Number.isFinite(userSettings)) {\n userSettings = {type: 'interpolation', duration: userSettings as number};\n }\n const type = (userSettings as TransitionSettings).type || 'interpolation';\n return {\n ...DEFAULT_TRANSITION_SETTINGS[type],\n ...(layerSettings as TransitionSettings),\n ...(userSettings as TransitionSettings),\n type\n };\n}\n\n// NOTE: NOT COPYING OVER OFFSET OR STRIDE HERE BECAUSE:\n// (1) WE DON'T SUPPORT INTERLEAVED BUFFERS FOR TRANSITIONS\n// (2) BUFFERS WITH OFFSETS ALWAYS CONTAIN VALUES OF THE SAME SIZE\n// (3) THE OPERATIONS IN THE SHADER ARE PER-COMPONENT (addition and scaling)\nexport function getSourceBufferAttribute(\n gl: WebGLRenderingContext,\n attribute: Attribute\n): [Buffer, BufferAccessor] | NumericArray {\n // The Attribute we pass to Transform as a sourceBuffer must have {divisor: 0}\n // so we create a copy of the attribute (with divisor=0) to use when running\n // transform feedback\n const buffer = attribute.getBuffer();\n if (buffer) {\n return [\n buffer,\n {\n divisor: 0,\n size: attribute.size,\n normalized: attribute.settings.normalized\n } as BufferAccessor\n ];\n }\n // constant\n // don't pass normalized here because the `value` from a normalized attribute is\n // already normalized\n return attribute.value as NumericArray;\n}\n\nexport function getAttributeTypeFromSize(size: number): string {\n switch (size) {\n case 1:\n return 'float';\n case 2:\n return 'vec2';\n case 3:\n return 'vec3';\n case 4:\n return 'vec4';\n default:\n throw new Error(`No defined attribute type for size \"${size}\"`);\n }\n}\n\nexport function cycleBuffers(buffers: Buffer[]): void {\n buffers.push(buffers.shift() as Buffer);\n}\n\nexport function getAttributeBufferLength(attribute: Attribute, numInstances: number): number {\n const {doublePrecision, settings, value, size} = attribute;\n const multiplier = doublePrecision && value instanceof Float64Array ? 2 : 1;\n return (settings.noAlloc ? (value as NumericArray).length : numInstances * size) * multiplier;\n}\n\n// This helper is used when transitioning attributes from a set of values in one buffer layout\n// to a set of values in a different buffer layout. (Buffer layouts are used when attribute values\n// within a buffer should be grouped for drawElements, like the Polygon layer.) For example, a\n// buffer layout of [3, 4] might have data [A1, A2, A3, B1, B2, B3, B4]. If it needs to transition\n// to a buffer layout of [4, 2], it should produce a buffer, using the transition setting's `enter`\n// function, that looks like this: [A1, A2, A3, A4 (user `enter` fn), B1, B2, 0]. Note: the final\n// 0 in this buffer is because we never shrink buffers, only grow them, for performance reasons.\nexport function padBuffer({\n buffer,\n numInstances,\n attribute,\n fromLength,\n fromStartIndices,\n getData = x => x\n}: {\n buffer: Buffer;\n numInstances: number;\n attribute: Attribute;\n fromLength: number;\n fromStartIndices?: NumericArray | null;\n getData?: (toValue: NumericArray, chunk?: NumericArray) => NumericArray;\n}): void {\n // TODO: move the precisionMultiplier logic to the attribute when retrieving\n // its `size` and `elementOffset`?\n const precisionMultiplier =\n attribute.doublePrecision && attribute.value instanceof Float64Array ? 2 : 1;\n const size = attribute.size * precisionMultiplier;\n const byteOffset = attribute.byteOffset;\n const toStartIndices = attribute.startIndices;\n const hasStartIndices = fromStartIndices && toStartIndices;\n const toLength = getAttributeBufferLength(attribute, numInstances);\n const isConstant = attribute.isConstant;\n\n // check if buffer needs to be padded\n if (!hasStartIndices && fromLength >= toLength) {\n return;\n }\n\n const toData = isConstant\n ? attribute.value\n : (attribute.getBuffer() as Buffer).getData({srcByteOffset: byteOffset});\n if (attribute.settings.normalized && !isConstant) {\n const getter = getData;\n getData = (value, chunk) => attribute.normalizeConstant(getter(value, chunk));\n }\n\n const getMissingData = isConstant\n ? (i, chunk) => getData(toData, chunk)\n : (i, chunk) => getData(toData.subarray(i, i + size), chunk);\n\n const source = buffer.getData({length: fromLength});\n const data = new Float32Array(toLength);\n padArray({\n source,\n target: data,\n sourceStartIndices: fromStartIndices,\n targetStartIndices: toStartIndices,\n size,\n getData: getMissingData\n });\n\n // TODO: support offset in buffer.setData?\n if (buffer.byteLength < data.byteLength + byteOffset) {\n buffer.reallocate(data.byteLength + byteOffset);\n }\n buffer.subData({data, offset: byteOffset});\n}\n","function padArrayChunk(options) {\n const {\n source,\n target,\n start = 0,\n size,\n getData\n } = options;\n const end = options.end || target.length;\n const sourceLength = source.length;\n const targetLength = end - start;\n\n if (sourceLength > targetLength) {\n target.set(source.subarray(0, targetLength), start);\n return;\n }\n\n target.set(source, start);\n\n if (!getData) {\n return;\n }\n\n let i = sourceLength;\n\n while (i < targetLength) {\n const datum = getData(i, source);\n\n for (let j = 0; j < size; j++) {\n target[start + i] = datum[j] || 0;\n i++;\n }\n }\n}\n\nexport function padArray({\n source,\n target,\n size,\n getData,\n sourceStartIndices,\n targetStartIndices\n}) {\n if (!Array.isArray(targetStartIndices)) {\n padArrayChunk({\n source,\n target,\n size,\n getData\n });\n return target;\n }\n\n let sourceIndex = 0;\n let targetIndex = 0;\n\n const getChunkData = getData && ((i, chunk) => getData(i + targetIndex, chunk));\n\n const n = Math.min(sourceStartIndices.length, targetStartIndices.length);\n\n for (let i = 1; i < n; i++) {\n const nextSourceIndex = sourceStartIndices[i] * size;\n const nextTargetIndex = targetStartIndices[i] * size;\n padArrayChunk({\n source: source.subarray(sourceIndex, nextSourceIndex),\n target,\n start: targetIndex,\n end: nextTargetIndex,\n size,\n getData: getChunkData\n });\n sourceIndex = nextSourceIndex;\n targetIndex = nextTargetIndex;\n }\n\n if (targetIndex < target.length) {\n padArrayChunk({\n source: [],\n target,\n start: targetIndex,\n size,\n getData: getChunkData\n });\n }\n\n return target;\n}\n//# sourceMappingURL=array-utils.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/*\n * Helper function for padArray\n */\nfunction padArrayChunk(options: {\n source;\n target;\n start?: number;\n end?: number;\n size: number;\n getData;\n}): void {\n const {source, target, start = 0, size, getData} = options;\n const end = options.end || target.length;\n\n const sourceLength = source.length;\n const targetLength = end - start;\n\n if (sourceLength > targetLength) {\n target.set(source.subarray(0, targetLength), start);\n return;\n }\n\n target.set(source, start);\n\n if (!getData) {\n return;\n }\n\n // source is not large enough to fill target space, call `getData` to get filler data\n let i = sourceLength;\n while (i < targetLength) {\n const datum = getData(i, source);\n for (let j = 0; j < size; j++) {\n target[start + i] = datum[j] || 0;\n i++;\n }\n }\n}\n\n/*\n * The padArray function stretches a source array to the size of a target array.\n The arrays can have internal structures (like the attributes of PathLayer and\n SolidPolygonLayer), defined by the optional sourceStartIndices and targetStartIndices parameters.\n If the target array is larger, the getData callback is used to fill in the blanks.\n * @params {TypedArray} source - original data\n * @params {TypedArray} target - output data\n * @params {Number} size - length per datum\n * @params {Function} getData - callback to get new data when source is short\n * @params {Array} [sourceStartIndices] - subdivision of the original data in [object0StartIndex, object1StartIndex, ...]\n * @params {Array} [targetStartIndices] - subdivision of the output data in [object0StartIndex, object1StartIndex, ...]\n */\nexport function padArray({source, target, size, getData, sourceStartIndices, targetStartIndices}) {\n if (!Array.isArray(targetStartIndices)) {\n // Flat arrays\n padArrayChunk({\n source,\n target,\n size,\n getData\n });\n return target;\n }\n\n // Arrays have internal structure\n let sourceIndex = 0;\n let targetIndex = 0;\n const getChunkData = getData && ((i, chunk) => getData(i + targetIndex, chunk));\n\n const n = Math.min(sourceStartIndices.length, targetStartIndices.length);\n\n for (let i = 1; i < n; i++) {\n const nextSourceIndex = sourceStartIndices[i] * size;\n const nextTargetIndex = targetStartIndices[i] * size;\n\n padArrayChunk({\n source: source.subarray(sourceIndex, nextSourceIndex),\n target,\n start: targetIndex,\n end: nextTargetIndex,\n size,\n getData: getChunkData\n });\n\n sourceIndex = nextSourceIndex;\n targetIndex = nextTargetIndex;\n }\n\n if (targetIndex < target.length) {\n padArrayChunk({\n source: [],\n target,\n start: targetIndex,\n size,\n getData: getChunkData\n });\n }\n\n return target;\n}\n","function isEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (Array.isArray(a)) {\n const len = a.length;\n\n if (!b || b.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\nexport default function memoize(compute) {\n let cachedArgs = {};\n let cachedResult;\n return args => {\n for (const key in args) {\n if (!isEqual(args[key], cachedArgs[key])) {\n cachedResult = compute(args);\n cachedArgs = args;\n break;\n }\n }\n\n return cachedResult;\n };\n}\n//# sourceMappingURL=memoize.js.map","function isEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (Array.isArray(a)) {\n // Special treatment for arrays: compare 1-level deep\n // This is to support equality of matrix/coordinate props\n const len = a.length;\n if (!b || b.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\n/**\n * Speed up consecutive function calls by caching the result of calls with identical input\n * https://en.wikipedia.org/wiki/Memoization\n * @param {function} compute - the function to be memoized\n */\nexport default function memoize(compute: (args: In) => Out): (args: In) => Out {\n let cachedArgs: any = {};\n let cachedResult: Out;\n\n return (args: In) => {\n for (const key in args) {\n if (!isEqual(args[key], cachedArgs[key])) {\n cachedResult = compute(args);\n cachedArgs = args;\n break;\n }\n }\n return cachedResult;\n };\n}\n","import deckLog from '../utils/log';\nimport { getLoggers } from './loggers';\nlet loggers = {};\n\nif (process.env.NODE_ENV !== 'production') {\n loggers = getLoggers(deckLog);\n}\n\nexport function register(handlers) {\n loggers = handlers;\n}\nexport default function debug(eventType, arg1, arg2, arg3) {\n if (deckLog.level > 0 && loggers[eventType]) {\n loggers[eventType].call(null, arg1, arg2, arg3);\n }\n}\n//# sourceMappingURL=index.js.map","import deckLog from '../utils/log';\nimport {getLoggers} from './loggers';\n\n/* debug utility */\n\nlet loggers: Record = {};\n\n// Conditionally load default loggers in development mode\n// eslint-disable-next-line\nif (process.env.NODE_ENV !== 'production') {\n loggers = getLoggers(deckLog);\n}\n\nexport function register(handlers: Record): void {\n loggers = handlers;\n}\n\nexport default function debug(eventType: string, arg1?: any, arg2?: any, arg3?: any): void {\n if (deckLog.level > 0 && loggers[eventType]) {\n // Not using rest parameters to defeat perf hit from array construction\n loggers[eventType].call(null, arg1, arg2, arg3);\n }\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Transform } from '@luma.gl/core';\nimport GPUInterpolationTransition from '../../transitions/gpu-interpolation-transition';\nimport GPUSpringTransition from '../../transitions/gpu-spring-transition';\nimport log from '../../utils/log';\nconst TRANSITION_TYPES = {\n interpolation: GPUInterpolationTransition,\n spring: GPUSpringTransition\n};\nexport default class AttributeTransitionManager {\n constructor(gl, {\n id,\n timeline\n }) {\n _defineProperty(this, \"id\", void 0);\n\n _defineProperty(this, \"isSupported\", void 0);\n\n _defineProperty(this, \"gl\", void 0);\n\n _defineProperty(this, \"timeline\", void 0);\n\n _defineProperty(this, \"transitions\", void 0);\n\n _defineProperty(this, \"needsRedraw\", void 0);\n\n _defineProperty(this, \"numInstances\", void 0);\n\n this.id = id;\n this.gl = gl;\n this.timeline = timeline;\n this.transitions = {};\n this.needsRedraw = false;\n this.numInstances = 1;\n this.isSupported = Transform.isSupported(gl);\n }\n\n finalize() {\n for (const attributeName in this.transitions) {\n this._removeTransition(attributeName);\n }\n }\n\n update({\n attributes,\n transitions,\n numInstances\n }) {\n this.numInstances = numInstances || 1;\n\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const settings = attribute.getTransitionSetting(transitions);\n if (!settings) continue;\n\n this._updateAttribute(attributeName, attribute, settings);\n }\n\n for (const attributeName in this.transitions) {\n const attribute = attributes[attributeName];\n\n if (!attribute || !attribute.getTransitionSetting(transitions)) {\n this._removeTransition(attributeName);\n }\n }\n }\n\n hasAttribute(attributeName) {\n const transition = this.transitions[attributeName];\n return transition && transition.inProgress;\n }\n\n getAttributes() {\n const animatedAttributes = {};\n\n for (const attributeName in this.transitions) {\n const transition = this.transitions[attributeName];\n\n if (transition.inProgress) {\n animatedAttributes[attributeName] = transition.attributeInTransition;\n }\n }\n\n return animatedAttributes;\n }\n\n run() {\n if (!this.isSupported || this.numInstances === 0) {\n return false;\n }\n\n for (const attributeName in this.transitions) {\n const updated = this.transitions[attributeName].update();\n\n if (updated) {\n this.needsRedraw = true;\n }\n }\n\n const needsRedraw = this.needsRedraw;\n this.needsRedraw = false;\n return needsRedraw;\n }\n\n _removeTransition(attributeName) {\n this.transitions[attributeName].cancel();\n delete this.transitions[attributeName];\n }\n\n _updateAttribute(attributeName, attribute, settings) {\n const transition = this.transitions[attributeName];\n let isNew = !transition || transition.type !== settings.type;\n\n if (isNew) {\n if (!this.isSupported) {\n log.warn(\"WebGL2 not supported by this browser. Transition for \".concat(attributeName, \" is disabled.\"))();\n return;\n }\n\n if (transition) {\n this._removeTransition(attributeName);\n }\n\n const TransitionType = TRANSITION_TYPES[settings.type];\n\n if (TransitionType) {\n this.transitions[attributeName] = new TransitionType({\n attribute,\n timeline: this.timeline,\n gl: this.gl\n });\n } else {\n log.error(\"unsupported transition type '\".concat(settings.type, \"'\"))();\n isNew = false;\n }\n }\n\n if (isNew || attribute.needsRedraw()) {\n this.needsRedraw = true;\n this.transitions[attributeName].start(settings, this.numInstances);\n }\n }\n\n}\n//# sourceMappingURL=attribute-transition-manager.js.map","import {Transform} from '@luma.gl/core';\nimport GPUInterpolationTransition from '../../transitions/gpu-interpolation-transition';\nimport GPUSpringTransition from '../../transitions/gpu-spring-transition';\nimport log from '../../utils/log';\n\nimport type {TransitionSettings} from './attribute-transition-utils';\nimport type Attribute from './attribute';\nimport type {Timeline} from '@luma.gl/engine';\nimport type GPUTransition from '../../transitions/gpu-transition';\nimport type {ConstructorOf} from '../../types/types';\n\nconst TRANSITION_TYPES: Record> = {\n interpolation: GPUInterpolationTransition,\n spring: GPUSpringTransition\n};\n\nexport default class AttributeTransitionManager {\n id: string;\n isSupported: boolean;\n\n private gl: WebGLRenderingContext;\n private timeline?: Timeline;\n\n private transitions: {[id: string]: GPUTransition};\n private needsRedraw: boolean;\n private numInstances: number;\n\n constructor(\n gl: WebGLRenderingContext,\n {\n id,\n timeline\n }: {\n id: string;\n timeline?: Timeline;\n }\n ) {\n this.id = id;\n this.gl = gl;\n this.timeline = timeline;\n\n this.transitions = {};\n this.needsRedraw = false;\n this.numInstances = 1;\n\n this.isSupported = Transform.isSupported(gl);\n }\n\n finalize(): void {\n for (const attributeName in this.transitions) {\n this._removeTransition(attributeName);\n }\n }\n\n /* Public methods */\n\n // Called when attribute manager updates\n // Check the latest attributes for updates.\n update({\n attributes,\n transitions,\n numInstances\n }: {\n attributes: {[id: string]: Attribute};\n transitions: any;\n numInstances: number;\n }): void {\n // Transform class will crash if elementCount is 0\n this.numInstances = numInstances || 1;\n\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const settings = attribute.getTransitionSetting(transitions);\n\n // this attribute might not support transitions?\n if (!settings) continue; // eslint-disable-line no-continue\n this._updateAttribute(attributeName, attribute, settings);\n }\n\n for (const attributeName in this.transitions) {\n const attribute = attributes[attributeName];\n if (!attribute || !attribute.getTransitionSetting(transitions)) {\n // Animated attribute has been removed\n this._removeTransition(attributeName);\n }\n }\n }\n\n // Returns `true` if attribute is transition-enabled\n hasAttribute(attributeName: string): boolean {\n const transition = this.transitions[attributeName];\n return transition && transition.inProgress;\n }\n\n // Get all the animated attributes\n getAttributes(): {[id: string]: Attribute} {\n const animatedAttributes = {};\n\n for (const attributeName in this.transitions) {\n const transition = this.transitions[attributeName];\n if (transition.inProgress) {\n animatedAttributes[attributeName] = transition.attributeInTransition;\n }\n }\n\n return animatedAttributes;\n }\n\n /* eslint-disable max-statements */\n // Called every render cycle, run transform feedback\n // Returns `true` if anything changes\n run(): boolean {\n if (!this.isSupported || this.numInstances === 0) {\n return false;\n }\n\n for (const attributeName in this.transitions) {\n const updated = this.transitions[attributeName].update();\n if (updated) {\n this.needsRedraw = true;\n }\n }\n\n const needsRedraw = this.needsRedraw;\n this.needsRedraw = false;\n return needsRedraw;\n }\n /* eslint-enable max-statements */\n\n /* Private methods */\n private _removeTransition(attributeName: string): void {\n this.transitions[attributeName].cancel();\n delete this.transitions[attributeName];\n }\n\n // Check an attributes for updates\n // Returns a transition object if a new transition is triggered.\n private _updateAttribute(\n attributeName: string,\n attribute: Attribute,\n settings: TransitionSettings\n ): void {\n const transition = this.transitions[attributeName];\n // an attribute can change transition type when it updates\n // let's remove the transition when that happens so we can create the new transition type\n // TODO: when switching transition types, make sure to carry over the attribute's\n // previous buffers, currentLength, startIndices, etc, to be used as the starting point\n // for the next transition\n let isNew = !transition || transition.type !== settings.type;\n if (isNew) {\n if (!this.isSupported) {\n log.warn(\n `WebGL2 not supported by this browser. Transition for ${attributeName} is disabled.`\n )();\n return;\n }\n\n if (transition) {\n this._removeTransition(attributeName);\n }\n\n const TransitionType = TRANSITION_TYPES[settings.type];\n if (TransitionType) {\n this.transitions[attributeName] = new TransitionType({\n attribute,\n timeline: this.timeline,\n gl: this.gl\n });\n } else {\n log.error(`unsupported transition type '${settings.type}'`)();\n isNew = false;\n }\n }\n\n if (isNew || attribute.needsRedraw()) {\n this.needsRedraw = true;\n this.transitions[attributeName].start(settings, this.numInstances);\n }\n }\n}\n","import { getPassthroughFS } from '@luma.gl/shadertools';\nimport BufferTransform from './buffer-transform';\nimport TextureTransform from './texture-transform';\nimport { isWebGL2 } from '@luma.gl/gltools';\nimport { assert, isObjectEmpty, getShaderVersion } from '@luma.gl/webgl';\nimport Model from '../lib/model';\nexport default class Transform {\n static isSupported(gl) {\n return isWebGL2(gl);\n }\n\n constructor(gl) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.gl = gl;\n this.model = null;\n this.elementCount = 0;\n this.bufferTransform = null;\n this.textureTransform = null;\n this.elementIDBuffer = null;\n\n this._initialize(props);\n\n Object.seal(this);\n }\n\n delete() {\n const {\n model,\n bufferTransform,\n textureTransform\n } = this;\n\n if (model) {\n model.delete();\n }\n\n if (bufferTransform) {\n bufferTransform.delete();\n }\n\n if (textureTransform) {\n textureTransform.delete();\n }\n }\n\n run() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n clearRenderTarget = true\n } = opts;\n\n const updatedOpts = this._updateDrawOptions(opts);\n\n if (clearRenderTarget && updatedOpts.framebuffer) {\n updatedOpts.framebuffer.clear({\n color: true\n });\n }\n\n this.model.transform(updatedOpts);\n }\n\n swap() {\n let swapped = false;\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n\n for (const resourceTransform of resourceTransforms) {\n swapped = swapped || resourceTransform.swap();\n }\n\n assert(swapped, 'Nothing to swap');\n }\n\n getBuffer() {\n let varyingName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n return this.bufferTransform && this.bufferTransform.getBuffer(varyingName);\n }\n\n getData() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n\n for (const resourceTransform of resourceTransforms) {\n const data = resourceTransform.getData(opts);\n\n if (data) {\n return data;\n }\n }\n\n return null;\n }\n\n getFramebuffer() {\n return this.textureTransform && this.textureTransform.getFramebuffer();\n }\n\n update() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if ('elementCount' in opts) {\n this.model.setVertexCount(opts.elementCount);\n }\n\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n\n for (const resourceTransform of resourceTransforms) {\n resourceTransform.update(opts);\n }\n }\n\n _initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n gl\n } = this;\n\n this._buildResourceTransforms(gl, props);\n\n props = this._updateModelProps(props);\n this.model = new Model(gl, Object.assign({}, props, {\n fs: props.fs || getPassthroughFS({\n version: getShaderVersion(props.vs)\n }),\n id: props.id || 'transform-model',\n drawMode: props.drawMode || 0,\n vertexCount: props.elementCount\n }));\n this.bufferTransform && this.bufferTransform.setupResources({\n model: this.model\n });\n }\n\n _updateModelProps(props) {\n let updatedProps = Object.assign({}, props);\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n\n for (const resourceTransform of resourceTransforms) {\n updatedProps = resourceTransform.updateModelProps(updatedProps);\n }\n\n return updatedProps;\n }\n\n _buildResourceTransforms(gl, props) {\n if (canCreateBufferTransform(props)) {\n this.bufferTransform = new BufferTransform(gl, props);\n }\n\n if (canCreateTextureTransform(props)) {\n this.textureTransform = new TextureTransform(gl, props);\n }\n\n assert(this.bufferTransform || this.textureTransform, 'must provide source/feedback buffers or source/target textures');\n }\n\n _updateDrawOptions(opts) {\n let updatedOpts = Object.assign({}, opts);\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n\n for (const resourceTransform of resourceTransforms) {\n updatedOpts = Object.assign(updatedOpts, resourceTransform.getDrawOptions(updatedOpts));\n }\n\n return updatedOpts;\n }\n\n}\n\nfunction canCreateBufferTransform(props) {\n if (!isObjectEmpty(props.feedbackBuffers) || !isObjectEmpty(props.feedbackMap) || props.varyings && props.varyings.length > 0) {\n return true;\n }\n\n return false;\n}\n\nfunction canCreateTextureTransform(props) {\n if (!isObjectEmpty(props._sourceTextures) || props._targetTexture || props._targetTextureVarying) {\n return true;\n }\n\n return false;\n}\n//# sourceMappingURL=transform.js.map","import GL from '@luma.gl/constants';\nimport {getPassthroughFS} from '@luma.gl/shadertools';\nimport BufferTransform from './buffer-transform';\nimport TextureTransform from './texture-transform';\n\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {assert, isObjectEmpty, getShaderVersion} from '@luma.gl/webgl';\nimport Model from '../lib/model';\n\n// takes source and target buffers/textures and setsup the pipeline\nexport default class Transform {\n static isSupported(gl) {\n // TODO : differentiate writting to buffer vs not\n return isWebGL2(gl);\n }\n\n constructor(gl, props = {}) {\n this.gl = gl;\n this.model = null;\n this.elementCount = 0;\n this.bufferTransform = null;\n this.textureTransform = null;\n this.elementIDBuffer = null;\n this._initialize(props);\n Object.seal(this);\n }\n\n // Delete owned resources.\n delete() {\n const {model, bufferTransform, textureTransform} = this;\n if (model) {\n model.delete();\n }\n if (bufferTransform) {\n bufferTransform.delete();\n }\n if (textureTransform) {\n textureTransform.delete();\n }\n }\n\n // Run one transform loop.\n run(opts = {}) {\n const {clearRenderTarget = true} = opts;\n\n const updatedOpts = this._updateDrawOptions(opts);\n\n if (clearRenderTarget && updatedOpts.framebuffer) {\n updatedOpts.framebuffer.clear({color: true});\n }\n\n this.model.transform(updatedOpts);\n }\n\n // swap resources if a map is provided\n swap() {\n let swapped = false;\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n swapped = swapped || resourceTransform.swap();\n }\n assert(swapped, 'Nothing to swap');\n }\n\n // Return Buffer object for given varying name.\n getBuffer(varyingName = null) {\n return this.bufferTransform && this.bufferTransform.getBuffer(varyingName);\n }\n\n // Return data either from Buffer or from Texture\n getData(opts = {}) {\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n // @ts-ignore\n const data = resourceTransform.getData(opts);\n if (data) {\n return data;\n }\n }\n return null;\n }\n\n // Return framebuffer object if rendering to textures\n getFramebuffer() {\n return this.textureTransform && this.textureTransform.getFramebuffer();\n }\n\n // Update some or all buffer/texture bindings.\n update(opts = {}) {\n if ('elementCount' in opts) {\n // @ts-ignore TODO\n this.model.setVertexCount(opts.elementCount);\n }\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n resourceTransform.update(opts);\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n const {gl} = this;\n this._buildResourceTransforms(gl, props);\n\n props = this._updateModelProps(props);\n this.model = new Model(\n gl,\n Object.assign({}, props, {\n fs: props.fs || getPassthroughFS({version: getShaderVersion(props.vs)}),\n id: props.id || 'transform-model',\n drawMode: props.drawMode || GL.POINTS,\n vertexCount: props.elementCount\n })\n );\n\n /* eslint-disable no-unused-expressions */\n this.bufferTransform && this.bufferTransform.setupResources({model: this.model});\n /* eslint-enable no-unused-expressions */\n }\n\n _updateModelProps(props) {\n let updatedProps = Object.assign({}, props);\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n updatedProps = resourceTransform.updateModelProps(updatedProps);\n }\n return updatedProps;\n }\n\n _buildResourceTransforms(gl, props) {\n if (canCreateBufferTransform(props)) {\n this.bufferTransform = new BufferTransform(gl, props);\n }\n if (canCreateTextureTransform(props)) {\n this.textureTransform = new TextureTransform(gl, props);\n }\n assert(\n this.bufferTransform || this.textureTransform,\n 'must provide source/feedback buffers or source/target textures'\n );\n }\n\n _updateDrawOptions(opts) {\n let updatedOpts = Object.assign({}, opts);\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n updatedOpts = Object.assign(updatedOpts, resourceTransform.getDrawOptions(updatedOpts));\n }\n return updatedOpts;\n }\n}\n\n// Helper Methods\n\nfunction canCreateBufferTransform(props) {\n if (\n !isObjectEmpty(props.feedbackBuffers) ||\n !isObjectEmpty(props.feedbackMap) ||\n (props.varyings && props.varyings.length > 0)\n ) {\n return true;\n }\n return false;\n}\n\nfunction canCreateTextureTransform(props) {\n if (\n !isObjectEmpty(props._sourceTextures) ||\n props._targetTexture ||\n props._targetTextureVarying\n ) {\n return true;\n }\n\n return false;\n}\n","import { assert } from '../utils';\nconst FS100 = \"void main() {gl_FragColor = vec4(0);}\";\nconst FS_GLES = \"out vec4 transform_output;\\nvoid main() {\\n transform_output = vec4(0);\\n}\";\nconst FS300 = \"#version 300 es\\n\".concat(FS_GLES);\nexport function getQualifierDetails(line, qualifiers) {\n qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];\n const words = line.replace(/^\\s+/, '').split(/\\s+/);\n const [qualifier, type, definition] = words;\n\n if (!qualifiers.includes(qualifier) || !type || !definition) {\n return null;\n }\n\n const name = definition.split(';')[0];\n return {\n qualifier,\n type,\n name\n };\n}\nexport function getPassthroughFS() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n version = 100,\n input,\n inputType,\n output\n } = options;\n\n if (!input) {\n if (version === 300) {\n return FS300;\n } else if (version > 300) {\n return \"#version \".concat(version, \"\\n\").concat(FS_GLES);\n }\n\n return FS100;\n }\n\n const outputValue = convertToVec4(input, inputType);\n\n if (version >= 300) {\n return \"#version \".concat(version, \" \").concat(version === 300 ? 'es' : '', \"\\nin \").concat(inputType, \" \").concat(input, \";\\nout vec4 \").concat(output, \";\\nvoid main() {\\n \").concat(output, \" = \").concat(outputValue, \";\\n}\");\n }\n\n return \"varying \".concat(inputType, \" \").concat(input, \";\\nvoid main() {\\n gl_FragColor = \").concat(outputValue, \";\\n}\");\n}\nexport function typeToChannelSuffix(type) {\n switch (type) {\n case 'float':\n return 'x';\n\n case 'vec2':\n return 'xy';\n\n case 'vec3':\n return 'xyz';\n\n case 'vec4':\n return 'xyzw';\n\n default:\n assert(false);\n return null;\n }\n}\nexport function typeToChannelCount(type) {\n switch (type) {\n case 'float':\n return 1;\n\n case 'vec2':\n return 2;\n\n case 'vec3':\n return 3;\n\n case 'vec4':\n return 4;\n\n default:\n assert(false);\n return null;\n }\n}\nexport function convertToVec4(variable, type) {\n switch (type) {\n case 'float':\n return \"vec4(\".concat(variable, \", 0.0, 0.0, 1.0)\");\n\n case 'vec2':\n return \"vec4(\".concat(variable, \", 0.0, 1.0)\");\n\n case 'vec3':\n return \"vec4(\".concat(variable, \", 1.0)\");\n\n case 'vec4':\n return variable;\n\n default:\n assert(false);\n return null;\n }\n}\n//# sourceMappingURL=shader-utils.js.map","import {assert} from '../utils';\nconst FS100 = `void main() {gl_FragColor = vec4(0);}`;\nconst FS_GLES = `\\\nout vec4 transform_output;\nvoid main() {\n transform_output = vec4(0);\n}`;\nconst FS300 = `#version 300 es\\n${FS_GLES}`;\n\n// Prase given glsl line and return qualifier details or null\nexport function getQualifierDetails(line, qualifiers) {\n qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];\n const words = line.replace(/^\\s+/, '').split(/\\s+/);\n // TODO add support for precession qualifiers (highp, mediump and lowp)\n const [qualifier, type, definition] = words;\n if (!qualifiers.includes(qualifier) || !type || !definition) {\n return null;\n }\n const name = definition.split(';')[0];\n return {qualifier, type, name};\n}\n\n// Given the shader version, input and output variable names,\n// builds and return a pass through fragment shader.\nexport function getPassthroughFS(options = {}) {\n const {version = 100, input, inputType, output} = options;\n if (!input) {\n if (version === 300) {\n // Fast-path for WebGL 2.0\n return FS300;\n } else if (version > 300) {\n // Use the supplied version for OpenGL/ES 3.2+\n return `#version ${version}\\n${FS_GLES}`;\n }\n // Fast-path for WebGL 1.0\n return FS100;\n }\n const outputValue = convertToVec4(input, inputType);\n if (version >= 300) {\n // If version is 300, assume WebGL 2.0\n return `\\\n#version ${version} ${version === 300 ? 'es' : ''}\nin ${inputType} ${input};\nout vec4 ${output};\nvoid main() {\n ${output} = ${outputValue};\n}`;\n }\n // WebGL 1.0\n return `\\\nvarying ${inputType} ${input};\nvoid main() {\n gl_FragColor = ${outputValue};\n}`;\n}\n\n// convert glsl type to suffix\nexport function typeToChannelSuffix(type) {\n switch (type) {\n case 'float':\n return 'x';\n case 'vec2':\n return 'xy';\n case 'vec3':\n return 'xyz';\n case 'vec4':\n return 'xyzw';\n default:\n assert(false);\n return null;\n }\n}\n\n// convert glsl type to channel count\nexport function typeToChannelCount(type) {\n switch (type) {\n case 'float':\n return 1;\n case 'vec2':\n return 2;\n case 'vec3':\n return 3;\n case 'vec4':\n return 4;\n default:\n assert(false);\n return null;\n }\n}\n\n// Returns glsl instruction for converting to vec4\nexport function convertToVec4(variable, type) {\n switch (type) {\n case 'float':\n return `vec4(${variable}, 0.0, 0.0, 1.0)`;\n case 'vec2':\n return `vec4(${variable}, 0.0, 1.0)`;\n case 'vec3':\n return `vec4(${variable}, 1.0)`;\n case 'vec4':\n return variable;\n default:\n assert(false);\n return null;\n }\n}\n","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'shadertools: assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map","// Recommendation is to ignore message but current test suite checks agains the\n// message so keep it for now.\nexport default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'shadertools: assertion failed.');\n }\n}\n","import { isWebGL2 } from '@luma.gl/gltools';\nimport { Buffer, TransformFeedback } from '@luma.gl/webgl';\nimport { assert } from '@luma.gl/webgl';\nexport default class BufferTransform {\n constructor(gl) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.gl = gl;\n this.currentIndex = 0;\n this.feedbackMap = {};\n this.varyings = null;\n this.bindings = [];\n this.resources = {};\n\n this._initialize(props);\n\n Object.seal(this);\n }\n\n setupResources(opts) {\n for (const binding of this.bindings) {\n this._setupTransformFeedback(binding, opts);\n }\n }\n\n updateModelProps() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n varyings\n } = this;\n\n if (varyings.length > 0) {\n props = Object.assign({}, props, {\n varyings\n });\n }\n\n return props;\n }\n\n getDrawOptions() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const binding = this.bindings[this.currentIndex];\n const {\n sourceBuffers,\n transformFeedback\n } = binding;\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n return {\n attributes,\n transformFeedback\n };\n }\n\n swap() {\n if (this.feedbackMap) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n\n return false;\n }\n\n update() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._setupBuffers(opts);\n }\n\n getBuffer(varyingName) {\n const {\n feedbackBuffers\n } = this.bindings[this.currentIndex];\n const bufferOrParams = varyingName ? feedbackBuffers[varyingName] : null;\n\n if (!bufferOrParams) {\n return null;\n }\n\n return bufferOrParams instanceof Buffer ? bufferOrParams : bufferOrParams.buffer;\n }\n\n getData() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n varyingName\n } = options;\n const buffer = this.getBuffer(varyingName);\n\n if (buffer) {\n return buffer.getData();\n }\n\n return null;\n }\n\n delete() {\n for (const name in this.resources) {\n this.resources[name].delete();\n }\n }\n\n _initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._setupBuffers(props);\n\n this.varyings = props.varyings || Object.keys(this.bindings[this.currentIndex].feedbackBuffers);\n\n if (this.varyings.length > 0) {\n assert(isWebGL2(this.gl));\n }\n }\n\n _getFeedbackBuffers(props) {\n const {\n sourceBuffers = {}\n } = props;\n const feedbackBuffers = {};\n\n if (this.bindings[this.currentIndex]) {\n Object.assign(feedbackBuffers, this.bindings[this.currentIndex].feedbackBuffers);\n }\n\n if (this.feedbackMap) {\n for (const sourceName in this.feedbackMap) {\n const feedbackName = this.feedbackMap[sourceName];\n\n if (sourceName in sourceBuffers) {\n feedbackBuffers[feedbackName] = sourceName;\n }\n }\n }\n\n Object.assign(feedbackBuffers, props.feedbackBuffers);\n\n for (const bufferName in feedbackBuffers) {\n const bufferOrRef = feedbackBuffers[bufferName];\n\n if (typeof bufferOrRef === 'string') {\n const sourceBuffer = sourceBuffers[bufferOrRef];\n const {\n byteLength,\n usage,\n accessor\n } = sourceBuffer;\n feedbackBuffers[bufferName] = this._createNewBuffer(bufferName, {\n byteLength,\n usage,\n accessor\n });\n }\n }\n\n return feedbackBuffers;\n }\n\n _setupBuffers() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n sourceBuffers = null\n } = props;\n Object.assign(this.feedbackMap, props.feedbackMap);\n\n const feedbackBuffers = this._getFeedbackBuffers(props);\n\n this._updateBindings({\n sourceBuffers,\n feedbackBuffers\n });\n }\n\n _setupTransformFeedback(binding, _ref) {\n let {\n model\n } = _ref;\n const {\n program\n } = model;\n binding.transformFeedback = new TransformFeedback(this.gl, {\n program,\n buffers: binding.feedbackBuffers\n });\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n\n if (this.feedbackMap) {\n const {\n sourceBuffers,\n feedbackBuffers\n } = this._swapBuffers(this.bindings[this.currentIndex]);\n\n const nextIndex = this._getNextIndex();\n\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceBuffers,\n feedbackBuffers\n });\n }\n }\n\n _updateBinding(binding, opts) {\n if (!binding) {\n return {\n sourceBuffers: Object.assign({}, opts.sourceBuffers),\n feedbackBuffers: Object.assign({}, opts.feedbackBuffers)\n };\n }\n\n Object.assign(binding.sourceBuffers, opts.sourceBuffers);\n Object.assign(binding.feedbackBuffers, opts.feedbackBuffers);\n\n if (binding.transformFeedback) {\n binding.transformFeedback.setBuffers(binding.feedbackBuffers);\n }\n\n return binding;\n }\n\n _swapBuffers(opts) {\n if (!this.feedbackMap) {\n return null;\n }\n\n const sourceBuffers = Object.assign({}, opts.sourceBuffers);\n const feedbackBuffers = Object.assign({}, opts.feedbackBuffers);\n\n for (const srcName in this.feedbackMap) {\n const dstName = this.feedbackMap[srcName];\n sourceBuffers[srcName] = opts.feedbackBuffers[dstName];\n feedbackBuffers[dstName] = opts.sourceBuffers[srcName];\n assert(feedbackBuffers[dstName] instanceof Buffer);\n }\n\n return {\n sourceBuffers,\n feedbackBuffers\n };\n }\n\n _createNewBuffer(name, opts) {\n const buffer = new Buffer(this.gl, opts);\n\n if (this.resources[name]) {\n this.resources[name].delete();\n }\n\n this.resources[name] = buffer;\n return buffer;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n\n}\n//# sourceMappingURL=buffer-transform.js.map","import {isWebGL2} from '@luma.gl/gltools';\nimport {Buffer, TransformFeedback} from '@luma.gl/webgl';\nimport {assert} from '@luma.gl/webgl';\n\nexport default class BufferTransform {\n constructor(gl, props = {}) {\n this.gl = gl;\n this.currentIndex = 0;\n this.feedbackMap = {};\n this.varyings = null; // varyings array\n this.bindings = []; // each element is an object : {sourceBuffers, feedbackBuffers, transformFeedback}\n\n this.resources = {}; // resources to be deleted\n\n this._initialize(props);\n Object.seal(this);\n }\n\n setupResources(opts) {\n for (const binding of this.bindings) {\n this._setupTransformFeedback(binding, opts);\n }\n }\n\n updateModelProps(props = {}) {\n const {varyings} = this;\n if (varyings.length > 0) {\n props = Object.assign({}, props, {varyings});\n }\n return props;\n }\n\n getDrawOptions(opts = {}) {\n const binding = this.bindings[this.currentIndex];\n const {sourceBuffers, transformFeedback} = binding;\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n\n return {attributes, transformFeedback};\n }\n\n swap() {\n if (this.feedbackMap) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n\n // update source and/or feedbackBuffers\n update(opts = {}) {\n this._setupBuffers(opts);\n }\n\n // returns current feedbackBuffer of given name\n getBuffer(varyingName) {\n const {feedbackBuffers} = this.bindings[this.currentIndex];\n const bufferOrParams = varyingName ? feedbackBuffers[varyingName] : null;\n if (!bufferOrParams) {\n return null;\n }\n return bufferOrParams instanceof Buffer ? bufferOrParams : bufferOrParams.buffer;\n }\n\n getData(options = {}) {\n const {varyingName} = options;\n const buffer = this.getBuffer(varyingName);\n if (buffer) {\n return buffer.getData();\n }\n return null;\n }\n\n // Delete owned resources.\n delete() {\n for (const name in this.resources) {\n this.resources[name].delete();\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n this._setupBuffers(props);\n this.varyings = props.varyings || Object.keys(this.bindings[this.currentIndex].feedbackBuffers);\n if (this.varyings.length > 0) {\n // if writting to buffers make sure it is WebGL2\n assert(isWebGL2(this.gl));\n }\n }\n\n // auto create feedback buffers if requested\n _getFeedbackBuffers(props) {\n const {sourceBuffers = {}} = props;\n const feedbackBuffers = {};\n if (this.bindings[this.currentIndex]) {\n // this gurantees a partial feedback buffer set doesn't update\n // previously set buffers during auto creation mode.\n Object.assign(feedbackBuffers, this.bindings[this.currentIndex].feedbackBuffers);\n }\n if (this.feedbackMap) {\n // feedbackMap is defined as sourceBuffer as key and feedbackBuffer name as object\n for (const sourceName in this.feedbackMap) {\n const feedbackName = this.feedbackMap[sourceName];\n if (sourceName in sourceBuffers) {\n feedbackBuffers[feedbackName] = sourceName;\n }\n }\n }\n Object.assign(feedbackBuffers, props.feedbackBuffers);\n for (const bufferName in feedbackBuffers) {\n const bufferOrRef = feedbackBuffers[bufferName];\n if (typeof bufferOrRef === 'string') {\n // Create new buffer with same layout and settings as source buffer\n const sourceBuffer = sourceBuffers[bufferOrRef];\n const {byteLength, usage, accessor} = sourceBuffer;\n feedbackBuffers[bufferName] = this._createNewBuffer(bufferName, {\n byteLength,\n usage,\n accessor\n });\n }\n }\n\n return feedbackBuffers;\n }\n\n _setupBuffers(props = {}) {\n const {sourceBuffers = null} = props;\n Object.assign(this.feedbackMap, props.feedbackMap);\n const feedbackBuffers = this._getFeedbackBuffers(props);\n this._updateBindings({sourceBuffers, feedbackBuffers});\n }\n\n _setupTransformFeedback(binding, {model}) {\n const {program} = model;\n binding.transformFeedback = new TransformFeedback(this.gl, {\n program,\n buffers: binding.feedbackBuffers\n });\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this.feedbackMap) {\n const {sourceBuffers, feedbackBuffers} = this._swapBuffers(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceBuffers,\n feedbackBuffers\n });\n }\n }\n\n _updateBinding(binding, opts) {\n if (!binding) {\n return {\n sourceBuffers: Object.assign({}, opts.sourceBuffers),\n feedbackBuffers: Object.assign({}, opts.feedbackBuffers)\n };\n }\n Object.assign(binding.sourceBuffers, opts.sourceBuffers);\n Object.assign(binding.feedbackBuffers, opts.feedbackBuffers);\n if (binding.transformFeedback) {\n binding.transformFeedback.setBuffers(binding.feedbackBuffers);\n }\n return binding;\n }\n\n _swapBuffers(opts) {\n if (!this.feedbackMap) {\n return null;\n }\n const sourceBuffers = Object.assign({}, opts.sourceBuffers);\n const feedbackBuffers = Object.assign({}, opts.feedbackBuffers);\n for (const srcName in this.feedbackMap) {\n const dstName = this.feedbackMap[srcName];\n sourceBuffers[srcName] = opts.feedbackBuffers[dstName];\n feedbackBuffers[dstName] = opts.sourceBuffers[srcName];\n\n // make sure the new destination buffer is a Buffer object\n assert(feedbackBuffers[dstName] instanceof Buffer);\n }\n return {sourceBuffers, feedbackBuffers};\n }\n\n // Create a buffer and add to list of buffers to be deleted.\n _createNewBuffer(name, opts) {\n const buffer = new Buffer(this.gl, opts);\n if (this.resources[name]) {\n this.resources[name].delete();\n }\n this.resources[name] = buffer;\n return buffer;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n}\n","import { isWebGL2, assertWebGL2Context, log } from '@luma.gl/gltools';\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport { isObjectEmpty } from '../utils/utils';\nexport default class TransformFeedback extends Resource {\n get [Symbol.toStringTag]() {\n return 'TransformFeedback';\n }\n\n static isSupported(gl) {\n return isWebGL2(gl);\n }\n\n constructor(gl) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n assertWebGL2Context(gl);\n super(gl, props);\n this.initialize(props);\n this.stubRemovedMethods('TransformFeedback', 'v6.0', ['pause', 'resume']);\n Object.seal(this);\n }\n\n initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.buffers = {};\n this.unused = {};\n this.configuration = null;\n this.bindOnUse = true;\n\n if (!isObjectEmpty(this.buffers)) {\n this.bind(() => this._unbindBuffers());\n }\n\n this.setProps(props);\n return this;\n }\n\n setProps(props) {\n if ('program' in props) {\n this.configuration = props.program && props.program.configuration;\n }\n\n if ('configuration' in props) {\n this.configuration = props.configuration;\n }\n\n if ('bindOnUse' in props) {\n props = props.bindOnUse;\n }\n\n if ('buffers' in props) {\n this.setBuffers(props.buffers);\n }\n }\n\n setBuffers() {\n let buffers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.bind(() => {\n for (const bufferName in buffers) {\n this.setBuffer(bufferName, buffers[bufferName]);\n }\n });\n return this;\n }\n\n setBuffer(locationOrName, bufferOrParams) {\n const location = this._getVaryingIndex(locationOrName);\n\n const {\n buffer,\n byteSize,\n byteOffset\n } = this._getBufferParams(bufferOrParams);\n\n if (location < 0) {\n this.unused[locationOrName] = buffer;\n log.warn(\"\".concat(this.id, \" unused varying buffer \").concat(locationOrName))();\n return this;\n }\n\n this.buffers[location] = bufferOrParams;\n\n if (!this.bindOnUse) {\n this._bindBuffer(location, buffer, byteOffset, byteSize);\n }\n\n return this;\n }\n\n begin() {\n let primitiveMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this.gl.bindTransformFeedback(36386, this.handle);\n\n this._bindBuffers();\n\n this.gl.beginTransformFeedback(primitiveMode);\n return this;\n }\n\n end() {\n this.gl.endTransformFeedback();\n\n this._unbindBuffers();\n\n this.gl.bindTransformFeedback(36386, null);\n return this;\n }\n\n _getBufferParams(bufferOrParams) {\n let byteOffset;\n let byteSize;\n let buffer;\n\n if (bufferOrParams instanceof Buffer === false) {\n buffer = bufferOrParams.buffer;\n byteSize = bufferOrParams.byteSize;\n byteOffset = bufferOrParams.byteOffset;\n } else {\n buffer = bufferOrParams;\n }\n\n if (byteOffset !== undefined || byteSize !== undefined) {\n byteOffset = byteOffset || 0;\n byteSize = byteSize || buffer.byteLength - byteOffset;\n }\n\n return {\n buffer,\n byteOffset,\n byteSize\n };\n }\n\n _getVaryingInfo(locationOrName) {\n return this.configuration && this.configuration.getVaryingInfo(locationOrName);\n }\n\n _getVaryingIndex(locationOrName) {\n if (this.configuration) {\n return this.configuration.getVaryingInfo(locationOrName).location;\n }\n\n const location = Number(locationOrName);\n return Number.isFinite(location) ? location : -1;\n }\n\n _bindBuffers() {\n if (this.bindOnUse) {\n for (const bufferIndex in this.buffers) {\n const {\n buffer,\n byteSize,\n byteOffset\n } = this._getBufferParams(this.buffers[bufferIndex]);\n\n this._bindBuffer(bufferIndex, buffer, byteOffset, byteSize);\n }\n }\n }\n\n _unbindBuffers() {\n if (this.bindOnUse) {\n for (const bufferIndex in this.buffers) {\n this._bindBuffer(bufferIndex, null);\n }\n }\n }\n\n _bindBuffer(index, buffer) {\n let byteOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let byteSize = arguments.length > 3 ? arguments[3] : undefined;\n const handle = buffer && buffer.handle;\n\n if (!handle || byteSize === undefined) {\n this.gl.bindBufferBase(35982, index, handle);\n } else {\n this.gl.bindBufferRange(35982, index, handle, byteOffset, byteSize);\n }\n\n return this;\n }\n\n _createHandle() {\n return this.gl.createTransformFeedback();\n }\n\n _deleteHandle() {\n this.gl.deleteTransformFeedback(this.handle);\n }\n\n _bindHandle(handle) {\n this.gl.bindTransformFeedback(36386, this.handle);\n }\n\n}\n//# sourceMappingURL=transform-feedback.js.map","import GL from '@luma.gl/constants';\nimport {isWebGL2, assertWebGL2Context, log} from '@luma.gl/gltools';\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport {isObjectEmpty} from '../utils/utils';\n\n// NOTE: The `bindOnUse` flag is a major workaround:\n// See https://github.com/KhronosGroup/WebGL/issues/2346\n\nexport default class TransformFeedback extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'TransformFeedback';\n }\n static isSupported(gl) {\n return isWebGL2(gl);\n }\n\n constructor(gl, props = {}) {\n assertWebGL2Context(gl);\n super(gl, props);\n\n this.initialize(props);\n this.stubRemovedMethods('TransformFeedback', 'v6.0', ['pause', 'resume']);\n Object.seal(this);\n }\n\n initialize(props = {}) {\n this.buffers = {};\n this.unused = {};\n this.configuration = null;\n this.bindOnUse = true;\n\n // Unbind any currently bound buffers\n if (!isObjectEmpty(this.buffers)) {\n this.bind(() => this._unbindBuffers());\n }\n\n this.setProps(props);\n return this;\n }\n\n setProps(props) {\n if ('program' in props) {\n this.configuration = props.program && props.program.configuration;\n }\n if ('configuration' in props) {\n this.configuration = props.configuration;\n }\n if ('bindOnUse' in props) {\n props = props.bindOnUse;\n }\n if ('buffers' in props) {\n this.setBuffers(props.buffers);\n }\n }\n\n setBuffers(buffers = {}) {\n this.bind(() => {\n for (const bufferName in buffers) {\n this.setBuffer(bufferName, buffers[bufferName]);\n }\n });\n return this;\n }\n\n setBuffer(locationOrName, bufferOrParams) {\n const location = this._getVaryingIndex(locationOrName);\n const {buffer, byteSize, byteOffset} = this._getBufferParams(bufferOrParams);\n\n if (location < 0) {\n this.unused[locationOrName] = buffer;\n log.warn(`${this.id} unused varying buffer ${locationOrName}`)();\n return this;\n }\n\n this.buffers[location] = bufferOrParams;\n\n // Need to avoid chrome bug where buffer that is already bound to a different target\n // cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.\n if (!this.bindOnUse) {\n this._bindBuffer(location, buffer, byteOffset, byteSize);\n }\n\n return this;\n }\n\n begin(primitiveMode = GL.POINTS) {\n // @ts-ignore\n this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);\n this._bindBuffers();\n // @ts-ignore\n this.gl.beginTransformFeedback(primitiveMode);\n return this;\n }\n\n end() {\n // @ts-ignore\n this.gl.endTransformFeedback();\n this._unbindBuffers();\n // @ts-ignore\n this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, null);\n return this;\n }\n\n // PRIVATE METHODS\n\n _getBufferParams(bufferOrParams) {\n let byteOffset;\n let byteSize;\n let buffer;\n if (bufferOrParams instanceof Buffer === false) {\n buffer = bufferOrParams.buffer;\n byteSize = bufferOrParams.byteSize;\n byteOffset = bufferOrParams.byteOffset;\n } else {\n buffer = bufferOrParams;\n }\n // to use bindBufferRange, either offset or size must be specified, use default value for the other.\n if (byteOffset !== undefined || byteSize !== undefined) {\n byteOffset = byteOffset || 0;\n byteSize = byteSize || buffer.byteLength - byteOffset;\n }\n return {buffer, byteOffset, byteSize};\n }\n\n _getVaryingInfo(locationOrName) {\n return this.configuration && this.configuration.getVaryingInfo(locationOrName);\n }\n\n _getVaryingIndex(locationOrName) {\n if (this.configuration) {\n return this.configuration.getVaryingInfo(locationOrName).location;\n }\n const location = Number(locationOrName);\n return Number.isFinite(location) ? location : -1;\n }\n\n // Need to avoid chrome bug where buffer that is already bound to a different target\n // cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.\n _bindBuffers() {\n if (this.bindOnUse) {\n for (const bufferIndex in this.buffers) {\n const {buffer, byteSize, byteOffset} = this._getBufferParams(this.buffers[bufferIndex]);\n this._bindBuffer(bufferIndex, buffer, byteOffset, byteSize);\n }\n }\n }\n\n _unbindBuffers() {\n if (this.bindOnUse) {\n for (const bufferIndex in this.buffers) {\n this._bindBuffer(bufferIndex, null);\n }\n }\n }\n\n _bindBuffer(index, buffer, byteOffset = 0, byteSize) {\n const handle = buffer && buffer.handle;\n if (!handle || byteSize === undefined) {\n // @ts-ignore\n this.gl.bindBufferBase(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle);\n } else {\n // @ts-ignore\n this.gl.bindBufferRange(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle, byteOffset, byteSize);\n }\n return this;\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n // @ts-ignore\n return this.gl.createTransformFeedback();\n }\n\n _deleteHandle() {\n // @ts-ignore\n this.gl.deleteTransformFeedback(this.handle);\n }\n\n _bindHandle(handle) {\n // @ts-ignore\n this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);\n }\n}\n","import { cloneTextureFrom, readPixelsToArray, getShaderVersion, Buffer, Texture2D, Framebuffer } from '@luma.gl/webgl';\nimport { _transform as transformModule, getPassthroughFS, typeToChannelCount, combineInjects } from '@luma.gl/shadertools';\nimport { updateForTextures, getSizeUniforms } from './transform-shader-utils';\nconst SRC_TEX_PARAMETER_OVERRIDES = {\n [10241]: 9728,\n [10240]: 9728,\n [10242]: 33071,\n [10243]: 33071\n};\nconst FS_OUTPUT_VARIABLE = 'transform_output';\nexport default class TextureTransform {\n constructor(gl) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.gl = gl;\n this.id = this.currentIndex = 0;\n this._swapTexture = null;\n this.targetTextureVarying = null;\n this.targetTextureType = null;\n this.samplerTextureMap = null;\n this.bindings = [];\n this.resources = {};\n\n this._initialize(props);\n\n Object.seal(this);\n }\n\n updateModelProps() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n const updatedModelProps = this._processVertexShader(props);\n\n return Object.assign({}, props, updatedModelProps);\n }\n\n getDrawOptions() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n sourceBuffers,\n sourceTextures,\n framebuffer,\n targetTexture\n } = this.bindings[this.currentIndex];\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n const uniforms = Object.assign({}, opts.uniforms);\n const parameters = Object.assign({}, opts.parameters);\n let discard = opts.discard;\n\n if (this.hasSourceTextures || this.hasTargetTexture) {\n attributes.transform_elementID = this.elementIDBuffer;\n\n for (const sampler in this.samplerTextureMap) {\n const textureName = this.samplerTextureMap[sampler];\n uniforms[sampler] = sourceTextures[textureName];\n }\n\n this._setSourceTextureParameters();\n\n const sizeUniforms = getSizeUniforms({\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n Object.assign(uniforms, sizeUniforms);\n }\n\n if (this.hasTargetTexture) {\n discard = false;\n parameters.viewport = [0, 0, framebuffer.width, framebuffer.height];\n }\n\n return {\n attributes,\n framebuffer,\n uniforms,\n discard,\n parameters\n };\n }\n\n swap() {\n if (this._swapTexture) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n\n return false;\n }\n\n update() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._setupTextures(opts);\n }\n\n getTargetTexture() {\n const {\n targetTexture\n } = this.bindings[this.currentIndex];\n return targetTexture;\n }\n\n getData() {\n let {\n packed = false\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n framebuffer\n } = this.bindings[this.currentIndex];\n const pixels = readPixelsToArray(framebuffer);\n\n if (!packed) {\n return pixels;\n }\n\n const ArrayType = pixels.constructor;\n const channelCount = typeToChannelCount(this.targetTextureType);\n const packedPixels = new ArrayType(pixels.length * channelCount / 4);\n let packCount = 0;\n\n for (let i = 0; i < pixels.length; i += 4) {\n for (let j = 0; j < channelCount; j++) {\n packedPixels[packCount++] = pixels[i + j];\n }\n }\n\n return packedPixels;\n }\n\n getFramebuffer() {\n const currentResources = this.bindings[this.currentIndex];\n return currentResources.framebuffer;\n }\n\n delete() {\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n\n if (this.elementIDBuffer) {\n this.elementIDBuffer.delete();\n }\n }\n\n _initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n _targetTextureVarying,\n _swapTexture\n } = props;\n this._swapTexture = _swapTexture;\n this.targetTextureVarying = _targetTextureVarying;\n this.hasTargetTexture = _targetTextureVarying;\n\n this._setupTextures(props);\n }\n\n _createTargetTexture(props) {\n const {\n sourceTextures,\n textureOrReference\n } = props;\n\n if (textureOrReference instanceof Texture2D) {\n return textureOrReference;\n }\n\n const refTexture = sourceTextures[textureOrReference];\n\n if (!refTexture) {\n return null;\n }\n\n this._targetRefTexName = textureOrReference;\n return this._createNewTexture(refTexture);\n }\n\n _setupTextures() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n sourceBuffers,\n _sourceTextures = {},\n _targetTexture\n } = props;\n\n const targetTexture = this._createTargetTexture({\n sourceTextures: _sourceTextures,\n textureOrReference: _targetTexture\n });\n\n this.hasSourceTextures = this.hasSourceTextures || _sourceTextures && Object.keys(_sourceTextures).length > 0;\n\n this._updateBindings({\n sourceBuffers,\n sourceTextures: _sourceTextures,\n targetTexture\n });\n\n if ('elementCount' in props) {\n this._updateElementIDBuffer(props.elementCount);\n }\n }\n\n _updateElementIDBuffer(elementCount) {\n if (typeof elementCount !== 'number' || this.elementCount >= elementCount) {\n return;\n }\n\n const elementIds = new Float32Array(elementCount);\n elementIds.forEach((_, index, array) => {\n array[index] = index;\n });\n\n if (!this.elementIDBuffer) {\n this.elementIDBuffer = new Buffer(this.gl, {\n data: elementIds,\n accessor: {\n size: 1\n }\n });\n } else {\n this.elementIDBuffer.setData({\n data: elementIds\n });\n }\n\n this.elementCount = elementCount;\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n\n if (this._swapTexture) {\n const {\n sourceTextures,\n targetTexture\n } = this._swapTextures(this.bindings[this.currentIndex]);\n\n const nextIndex = this._getNextIndex();\n\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceTextures,\n targetTexture\n });\n }\n }\n\n _updateBinding(binding, opts) {\n const {\n sourceBuffers,\n sourceTextures,\n targetTexture\n } = opts;\n\n if (!binding) {\n binding = {\n sourceBuffers: {},\n sourceTextures: {},\n targetTexture: null\n };\n }\n\n Object.assign(binding.sourceTextures, sourceTextures);\n Object.assign(binding.sourceBuffers, sourceBuffers);\n\n if (targetTexture) {\n binding.targetTexture = targetTexture;\n const {\n width,\n height\n } = targetTexture;\n const {\n framebuffer\n } = binding;\n\n if (framebuffer) {\n framebuffer.update({\n attachments: {\n [36064]: targetTexture\n },\n resizeAttachments: false\n });\n framebuffer.resize({\n width,\n height\n });\n } else {\n binding.framebuffer = new Framebuffer(this.gl, {\n id: \"transform-framebuffer\",\n width,\n height,\n attachments: {\n [36064]: targetTexture\n }\n });\n }\n }\n\n return binding;\n }\n\n _setSourceTextureParameters() {\n const index = this.currentIndex;\n const {\n sourceTextures\n } = this.bindings[index];\n\n for (const name in sourceTextures) {\n sourceTextures[name].setParameters(SRC_TEX_PARAMETER_OVERRIDES);\n }\n }\n\n _swapTextures(opts) {\n if (!this._swapTexture) {\n return null;\n }\n\n const sourceTextures = Object.assign({}, opts.sourceTextures);\n sourceTextures[this._swapTexture] = opts.targetTexture;\n const targetTexture = opts.sourceTextures[this._swapTexture];\n return {\n sourceTextures,\n targetTexture\n };\n }\n\n _createNewTexture(refTexture) {\n const texture = cloneTextureFrom(refTexture, {\n parameters: {\n [10241]: 9728,\n [10240]: 9728,\n [10242]: 33071,\n [10243]: 33071\n },\n pixelStore: {\n [37440]: false\n }\n });\n\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n\n this.ownTexture = texture;\n return texture;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n\n _processVertexShader() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n sourceTextures,\n targetTexture\n } = this.bindings[this.currentIndex];\n const {\n vs,\n uniforms,\n targetTextureType,\n inject,\n samplerTextureMap\n } = updateForTextures({\n vs: props.vs,\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n const combinedInject = combineInjects([props.inject || {}, inject]);\n this.targetTextureType = targetTextureType;\n this.samplerTextureMap = samplerTextureMap;\n const fs = props._fs || getPassthroughFS({\n version: getShaderVersion(vs),\n input: this.targetTextureVarying,\n inputType: targetTextureType,\n output: FS_OUTPUT_VARIABLE\n });\n const modules = this.hasSourceTextures || this.targetTextureVarying ? [transformModule].concat(props.modules || []) : props.modules;\n return {\n vs,\n fs,\n modules,\n uniforms,\n inject: combinedInject\n };\n }\n\n}\n//# sourceMappingURL=texture-transform.js.map","/** @typedef {import('./transform').TransformProps} TransformProps */\nimport GL from '@luma.gl/constants';\n\nimport {\n cloneTextureFrom,\n readPixelsToArray,\n getShaderVersion,\n Buffer,\n Texture2D,\n Framebuffer\n} from '@luma.gl/webgl';\n\nimport {\n _transform as transformModule,\n getPassthroughFS,\n typeToChannelCount,\n combineInjects\n} from '@luma.gl/shadertools';\n\nimport {updateForTextures, getSizeUniforms} from './transform-shader-utils';\n\n// TODO: move these constants to transform-shader-utils\n// Texture parameters needed so sample can precisely pick pixel for given element id.\nconst SRC_TEX_PARAMETER_OVERRIDES = {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n};\nconst FS_OUTPUT_VARIABLE = 'transform_output';\n\nexport default class TextureTransform {\n constructor(gl, props = {}) {\n this.gl = gl;\n this.id = this.currentIndex = 0;\n this._swapTexture = null;\n this.targetTextureVarying = null;\n this.targetTextureType = null;\n this.samplerTextureMap = null;\n this.bindings = []; // each element is an object : {sourceTextures, targetTexture, framebuffer}\n\n this.resources = {}; // resources to be deleted\n\n this._initialize(props);\n Object.seal(this);\n }\n\n updateModelProps(props = {}) {\n const updatedModelProps = this._processVertexShader(props);\n return Object.assign({}, props, updatedModelProps);\n }\n\n getDrawOptions(opts = {}) {\n const {sourceBuffers, sourceTextures, framebuffer, targetTexture} = this.bindings[\n this.currentIndex\n ];\n\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n const uniforms = Object.assign({}, opts.uniforms);\n const parameters = Object.assign({}, opts.parameters);\n let discard = opts.discard;\n\n if (this.hasSourceTextures || this.hasTargetTexture) {\n attributes.transform_elementID = this.elementIDBuffer;\n\n for (const sampler in this.samplerTextureMap) {\n const textureName = this.samplerTextureMap[sampler];\n uniforms[sampler] = sourceTextures[textureName];\n }\n this._setSourceTextureParameters();\n // get texture size uniforms\n const sizeUniforms = getSizeUniforms({\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n Object.assign(uniforms, sizeUniforms);\n }\n\n if (this.hasTargetTexture) {\n discard = false;\n parameters.viewport = [0, 0, framebuffer.width, framebuffer.height];\n }\n\n return {attributes, framebuffer, uniforms, discard, parameters};\n }\n\n swap() {\n if (this._swapTexture) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n\n // update source and/or feedbackBuffers\n update(opts = {}) {\n this._setupTextures(opts);\n }\n\n // returns current target texture\n getTargetTexture() {\n const {targetTexture} = this.bindings[this.currentIndex];\n return targetTexture;\n }\n\n getData({packed = false} = {}) {\n const {framebuffer} = this.bindings[this.currentIndex];\n const pixels = readPixelsToArray(framebuffer);\n\n if (!packed) {\n return pixels;\n }\n\n // readPixels returns 4 elements for each pixel, pack the elements when requested\n const ArrayType = pixels.constructor;\n const channelCount = typeToChannelCount(this.targetTextureType);\n // @ts-ignore\n const packedPixels = new ArrayType((pixels.length * channelCount) / 4);\n let packCount = 0;\n for (let i = 0; i < pixels.length; i += 4) {\n for (let j = 0; j < channelCount; j++) {\n packedPixels[packCount++] = pixels[i + j];\n }\n }\n return packedPixels;\n }\n\n // returns current framebuffer object that is being used.\n getFramebuffer() {\n const currentResources = this.bindings[this.currentIndex];\n return currentResources.framebuffer;\n }\n\n // Delete owned resources.\n delete() {\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n if (this.elementIDBuffer) {\n this.elementIDBuffer.delete();\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n const {_targetTextureVarying, _swapTexture} = props;\n this._swapTexture = _swapTexture;\n this.targetTextureVarying = _targetTextureVarying;\n this.hasTargetTexture = _targetTextureVarying;\n this._setupTextures(props);\n }\n\n // auto create target texture if requested\n _createTargetTexture(props) {\n const {sourceTextures, textureOrReference} = props;\n if (textureOrReference instanceof Texture2D) {\n return textureOrReference;\n }\n // 'targetTexture' is a reference souce texture.\n const refTexture = sourceTextures[textureOrReference];\n if (!refTexture) {\n return null;\n }\n\n // save reference texture name, when corresponding source texture is updated\n // we also update target texture.\n this._targetRefTexName = textureOrReference;\n\n return this._createNewTexture(refTexture);\n }\n\n /** @param {TransformProps} props */\n _setupTextures(props = {}) {\n const {sourceBuffers, _sourceTextures = {}, _targetTexture} = props;\n const targetTexture = this._createTargetTexture({\n sourceTextures: _sourceTextures,\n textureOrReference: _targetTexture\n });\n this.hasSourceTextures =\n this.hasSourceTextures || (_sourceTextures && Object.keys(_sourceTextures).length > 0);\n this._updateBindings({sourceBuffers, sourceTextures: _sourceTextures, targetTexture});\n if ('elementCount' in props) {\n this._updateElementIDBuffer(props.elementCount);\n }\n }\n\n _updateElementIDBuffer(elementCount) {\n if (typeof elementCount !== 'number' || this.elementCount >= elementCount) {\n return;\n }\n // NOTE: using float so this will work with GLSL 1.0 shaders.\n const elementIds = new Float32Array(elementCount);\n elementIds.forEach((_, index, array) => {\n array[index] = index;\n });\n if (!this.elementIDBuffer) {\n this.elementIDBuffer = new Buffer(this.gl, {\n data: elementIds,\n accessor: {size: 1}\n });\n } else {\n this.elementIDBuffer.setData({data: elementIds});\n }\n this.elementCount = elementCount;\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this._swapTexture) {\n const {sourceTextures, targetTexture} = this._swapTextures(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceTextures,\n targetTexture\n });\n }\n }\n\n _updateBinding(binding, opts) {\n const {sourceBuffers, sourceTextures, targetTexture} = opts;\n if (!binding) {\n binding = {\n sourceBuffers: {},\n sourceTextures: {},\n targetTexture: null\n };\n }\n Object.assign(binding.sourceTextures, sourceTextures);\n Object.assign(binding.sourceBuffers, sourceBuffers);\n if (targetTexture) {\n binding.targetTexture = targetTexture;\n\n const {width, height} = targetTexture;\n const {framebuffer} = binding;\n if (framebuffer) {\n // First update texture without re-sizing attachments\n framebuffer.update({\n attachments: {[GL.COLOR_ATTACHMENT0]: targetTexture},\n resizeAttachments: false\n });\n // Resize to new taget texture size\n framebuffer.resize({width, height});\n } else {\n binding.framebuffer = new Framebuffer(this.gl, {\n id: `transform-framebuffer`,\n width,\n height,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: targetTexture\n }\n });\n }\n }\n return binding;\n }\n\n // set texture filtering parameters on source textures.\n _setSourceTextureParameters() {\n const index = this.currentIndex;\n const {sourceTextures} = this.bindings[index];\n for (const name in sourceTextures) {\n sourceTextures[name].setParameters(SRC_TEX_PARAMETER_OVERRIDES);\n }\n }\n\n _swapTextures(opts) {\n if (!this._swapTexture) {\n return null;\n }\n const sourceTextures = Object.assign({}, opts.sourceTextures);\n sourceTextures[this._swapTexture] = opts.targetTexture;\n\n const targetTexture = opts.sourceTextures[this._swapTexture];\n\n return {sourceTextures, targetTexture};\n }\n\n // Create a buffer and add to list of buffers to be deleted.\n _createNewTexture(refTexture) {\n const texture = cloneTextureFrom(refTexture, {\n parameters: {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n },\n pixelStore: {\n [GL.UNPACK_FLIP_Y_WEBGL]: false\n }\n });\n\n // thre can only be one target texture\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n this.ownTexture = texture;\n\n return texture;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n\n // build and return shader releated parameters\n _processVertexShader(props = {}) {\n const {sourceTextures, targetTexture} = this.bindings[this.currentIndex];\n // @ts-ignore TODO - uniforms is not present\n const {vs, uniforms, targetTextureType, inject, samplerTextureMap} = updateForTextures({\n vs: props.vs,\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n const combinedInject = combineInjects([props.inject || {}, inject]);\n this.targetTextureType = targetTextureType;\n this.samplerTextureMap = samplerTextureMap;\n const fs =\n props._fs ||\n getPassthroughFS({\n version: getShaderVersion(vs),\n input: this.targetTextureVarying,\n inputType: targetTextureType,\n output: FS_OUTPUT_VARIABLE\n });\n const modules =\n this.hasSourceTextures || this.targetTextureVarying\n ? [transformModule].concat(props.modules || [])\n : props.modules;\n return {vs, fs, modules, uniforms, inject: combinedInject};\n }\n}\n","export default function getShaderVersion(source) {\n let version = 100;\n const words = source.match(/[^\\s]+/g);\n\n if (words.length >= 2 && words[0] === '#version') {\n const v = parseInt(words[1], 10);\n\n if (Number.isFinite(v)) {\n version = v;\n }\n }\n\n return version;\n}\n//# sourceMappingURL=get-shader-version.js.map","// returns GLSL shader version of given shader string\nexport default function getShaderVersion(source) {\n let version = 100;\n const words = source.match(/[^\\s]+/g);\n if (words.length >= 2 && words[0] === '#version') {\n const v = parseInt(words[1], 10);\n if (Number.isFinite(v)) {\n version = v;\n }\n }\n return version;\n}\n","const vs = \"attribute float transform_elementID;\\nvec2 transform_getPixelSizeHalf(vec2 size) {\\n return vec2(1.) / (2. * size);\\n}\\n\\nvec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) {\\n float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]);\\n float xIndex = transform_elementID - (yIndex * texSize[0]);\\n return vec2(xIndex, yIndex);\\n}\\nvec2 transform_getTexCoord(vec2 size) {\\n vec2 pixelSizeHalf = transform_getPixelSizeHalf(size);\\n vec2 indices = transform_getPixelIndices(size, pixelSizeHalf);\\n vec2 coord = indices / size + pixelSizeHalf;\\n return coord;\\n}\\nvec2 transform_getPos(vec2 size) {\\n vec2 texCoord = transform_getTexCoord(size);\\n vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.);\\n return pos;\\n}\\nvec4 transform_getInput(sampler2D texSampler, vec2 size) {\\n vec2 texCoord = transform_getTexCoord(size);\\n vec4 textureColor = texture2D(texSampler, texCoord);\\n return textureColor;\\n}\\n\";\nexport const transform = {\n name: 'transform',\n vs,\n fs: null\n};\n//# sourceMappingURL=transform.js.map","/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst vs = `\\\nattribute float transform_elementID;\n\n// returns half of pixel size, used to move the pixel position to center of the pixel.\nvec2 transform_getPixelSizeHalf(vec2 size) {\n return vec2(1.) / (2. * size);\n}\n\n// returns current elements pixel indeces [x, y],\n// where x ranges in [0 to texSize-1] and y ranges in [0 to texSize-1]\nvec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) {\n // Add safe offset (half of pixel height) before doing floor\n float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]);\n float xIndex = transform_elementID - (yIndex * texSize[0]);\n return vec2(xIndex, yIndex);\n}\n\n// returns current elementID's texture co-ordianate\nvec2 transform_getTexCoord(vec2 size) {\n vec2 pixelSizeHalf = transform_getPixelSizeHalf(size);\n vec2 indices = transform_getPixelIndices(size, pixelSizeHalf);\n vec2 coord = indices / size + pixelSizeHalf;\n return coord;\n}\n\n// returns current elementID's position\nvec2 transform_getPos(vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n // Change from [0 1] range to [-1 1]\n vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.);\n return pos;\n}\n\n// returns current elementID's pixel value\nvec4 transform_getInput(sampler2D texSampler, vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n vec4 textureColor = texture2D(texSampler, texCoord);\n return textureColor;\n}\n`;\n\n/** @type {ShaderModule} */\nexport const transform = {\n name: 'transform',\n vs,\n fs: null\n};\n","import { MODULE_INJECTORS_VS, MODULE_INJECTORS_FS } from '../modules/module-injectors';\nimport { VERTEX_SHADER, FRAGMENT_SHADER } from './constants';\nimport { assert } from '../utils';\nconst MODULE_INJECTORS = {\n [VERTEX_SHADER]: MODULE_INJECTORS_VS,\n [FRAGMENT_SHADER]: MODULE_INJECTORS_FS\n};\nexport const DECLARATION_INJECT_MARKER = '__LUMA_INJECT_DECLARATIONS__';\nconst REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/;\nconst REGEX_END_OF_MAIN = /}\\n?[^{}]*$/;\nconst fragments = [];\nexport default function injectShader(source, type, inject) {\n let injectStandardStubs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n const isVertex = type === VERTEX_SHADER;\n\n for (const key in inject) {\n const fragmentData = inject[key];\n fragmentData.sort((a, b) => a.order - b.order);\n fragments.length = fragmentData.length;\n\n for (let i = 0, len = fragmentData.length; i < len; ++i) {\n fragments[i] = fragmentData[i].injection;\n }\n\n const fragmentString = \"\".concat(fragments.join('\\n'), \"\\n\");\n\n switch (key) {\n case 'vs:#decl':\n if (isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n\n break;\n\n case 'vs:#main-start':\n if (isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n }\n\n break;\n\n case 'vs:#main-end':\n if (isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n }\n\n break;\n\n case 'fs:#decl':\n if (!isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n\n break;\n\n case 'fs:#main-start':\n if (!isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n }\n\n break;\n\n case 'fs:#main-end':\n if (!isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n }\n\n break;\n\n default:\n source = source.replace(key, match => match + fragmentString);\n }\n }\n\n source = source.replace(DECLARATION_INJECT_MARKER, '');\n\n if (injectStandardStubs) {\n source = source.replace(/\\}\\s*$/, match => match + MODULE_INJECTORS[type]);\n }\n\n return source;\n}\nexport function combineInjects(injects) {\n const result = {};\n assert(Array.isArray(injects) && injects.length > 1);\n injects.forEach(inject => {\n for (const key in inject) {\n result[key] = result[key] ? \"\".concat(result[key], \"\\n\").concat(inject[key]) : inject[key];\n }\n });\n return result;\n}\n//# sourceMappingURL=inject-shader.js.map","import {MODULE_INJECTORS_VS, MODULE_INJECTORS_FS} from '../modules/module-injectors';\nimport {VERTEX_SHADER, FRAGMENT_SHADER} from './constants';\nimport {assert} from '../utils';\n\n// TODO - experimental\nconst MODULE_INJECTORS = {\n [VERTEX_SHADER]: MODULE_INJECTORS_VS,\n [FRAGMENT_SHADER]: MODULE_INJECTORS_FS\n};\n\nexport const DECLARATION_INJECT_MARKER = '__LUMA_INJECT_DECLARATIONS__'; // Uniform/attribute declarations\n\nconst REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/; // Beginning of main\nconst REGEX_END_OF_MAIN = /}\\n?[^{}]*$/; // End of main, assumes main is last function\nconst fragments = [];\n\n// A minimal shader injection/templating system.\n// RFC: https://github.com/visgl/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/shader-injection-rfc.md\n/* eslint-disable complexity */\nexport default function injectShader(source, type, inject, injectStandardStubs = false) {\n const isVertex = type === VERTEX_SHADER;\n\n for (const key in inject) {\n const fragmentData = inject[key];\n fragmentData.sort((a, b) => a.order - b.order);\n fragments.length = fragmentData.length;\n for (let i = 0, len = fragmentData.length; i < len; ++i) {\n fragments[i] = fragmentData[i].injection;\n }\n const fragmentString = `${fragments.join('\\n')}\\n`;\n switch (key) {\n // declarations are injected before the main function\n case 'vs:#decl':\n if (isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n // inject code at the beginning of the main function\n case 'vs:#main-start':\n if (isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n }\n break;\n // inject code at the end of main function\n case 'vs:#main-end':\n if (isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n }\n break;\n // declarations are injected before the main function\n case 'fs:#decl':\n if (!isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n // inject code at the beginning of the main function\n case 'fs:#main-start':\n if (!isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, match => match + fragmentString);\n }\n break;\n // inject code at the end of main function\n case 'fs:#main-end':\n if (!isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, match => fragmentString + match);\n }\n break;\n\n default:\n // TODO(Tarek): I think this usage should be deprecated.\n\n // inject code after key, leaving key in place\n source = source.replace(key, match => match + fragmentString);\n }\n }\n\n // Remove if it hasn't already been replaced\n source = source.replace(DECLARATION_INJECT_MARKER, '');\n\n // Finally, if requested, insert an automatic module injector chunk\n if (injectStandardStubs) {\n source = source.replace(/\\}\\s*$/, match => match + MODULE_INJECTORS[type]);\n }\n\n return source;\n}\n\n/* eslint-enable complexity */\n\n// Takes an array of inject objects and combines them into one\nexport function combineInjects(injects) {\n const result = {};\n assert(Array.isArray(injects) && injects.length > 1);\n injects.forEach(inject => {\n for (const key in inject) {\n result[key] = result[key] ? `${result[key]}\\n${inject[key]}` : inject[key];\n }\n });\n return result;\n}\n","export const MODULE_INJECTORS_VS = \"#ifdef MODULE_LOGDEPTH\\n logdepth_adjustPosition(gl_Position);\\n#endif\\n\";\nexport const MODULE_INJECTORS_FS = \"#ifdef MODULE_MATERIAL\\n gl_FragColor = material_filterColor(gl_FragColor);\\n#endif\\n\\n#ifdef MODULE_LIGHTING\\n gl_FragColor = lighting_filterColor(gl_FragColor);\\n#endif\\n\\n#ifdef MODULE_FOG\\n gl_FragColor = fog_filterColor(gl_FragColor);\\n#endif\\n\\n#ifdef MODULE_PICKING\\n gl_FragColor = picking_filterHighlightColor(gl_FragColor);\\n gl_FragColor = picking_filterPickingColor(gl_FragColor);\\n#endif\\n\\n#ifdef MODULE_LOGDEPTH\\n logdepth_setFragDepth();\\n#endif\\n\";\n//# sourceMappingURL=module-injectors.js.map","export const MODULE_INJECTORS_VS = `\\\n#ifdef MODULE_LOGDEPTH\n logdepth_adjustPosition(gl_Position);\n#endif\n`;\n\nexport const MODULE_INJECTORS_FS = `\\\n#ifdef MODULE_MATERIAL\n gl_FragColor = material_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_LIGHTING\n gl_FragColor = lighting_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_FOG\n gl_FragColor = fog_filterColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_PICKING\n gl_FragColor = picking_filterHighlightColor(gl_FragColor);\n gl_FragColor = picking_filterPickingColor(gl_FragColor);\n#endif\n\n#ifdef MODULE_LOGDEPTH\n logdepth_setFragDepth();\n#endif\n`;\n","export const VERTEX_SHADER = 'vs';\nexport const FRAGMENT_SHADER = 'fs';\n//# sourceMappingURL=constants.js.map","export const VERTEX_SHADER = 'vs';\nexport const FRAGMENT_SHADER = 'fs';\n","import { assert } from '@luma.gl/webgl';\nimport { combineInjects, getQualifierDetails, typeToChannelSuffix } from '@luma.gl/shadertools';\nconst SAMPLER_UNIFORM_PREFIX = 'transform_uSampler_';\nconst SIZE_UNIFORM_PREFIX = 'transform_uSize_';\nconst VS_POS_VARIABLE = 'transform_position';\nexport function updateForTextures(_ref) {\n let {\n vs,\n sourceTextureMap,\n targetTextureVarying,\n targetTexture\n } = _ref;\n const texAttributeNames = Object.keys(sourceTextureMap);\n let sourceCount = texAttributeNames.length;\n let targetTextureType = null;\n const samplerTextureMap = {};\n let updatedVs = vs;\n let finalInject = {};\n\n if (sourceCount > 0 || targetTextureVarying) {\n const vsLines = updatedVs.split('\\n');\n const updateVsLines = vsLines.slice();\n vsLines.forEach((line, index, lines) => {\n if (sourceCount > 0) {\n const updated = processAttributeDefinition(line, sourceTextureMap);\n\n if (updated) {\n const {\n updatedLine,\n inject\n } = updated;\n updateVsLines[index] = updatedLine;\n finalInject = combineInjects([finalInject, inject]);\n Object.assign(samplerTextureMap, updated.samplerTextureMap);\n sourceCount--;\n }\n }\n\n if (targetTextureVarying && !targetTextureType) {\n targetTextureType = getVaryingType(line, targetTextureVarying);\n }\n });\n\n if (targetTextureVarying) {\n assert(targetTexture);\n const sizeName = \"\".concat(SIZE_UNIFORM_PREFIX).concat(targetTextureVarying);\n const uniformDeclaration = \"uniform vec2 \".concat(sizeName, \";\\n\");\n const posInstructions = \" vec2 \".concat(VS_POS_VARIABLE, \" = transform_getPos(\").concat(sizeName, \");\\n gl_Position = vec4(\").concat(VS_POS_VARIABLE, \", 0, 1.);\\n\");\n const inject = {\n 'vs:#decl': uniformDeclaration,\n 'vs:#main-start': posInstructions\n };\n finalInject = combineInjects([finalInject, inject]);\n }\n\n updatedVs = updateVsLines.join('\\n');\n }\n\n return {\n vs: updatedVs,\n targetTextureType,\n inject: finalInject,\n samplerTextureMap\n };\n}\nexport function getSizeUniforms(_ref2) {\n let {\n sourceTextureMap,\n targetTextureVarying,\n targetTexture\n } = _ref2;\n const uniforms = {};\n let width;\n let height;\n\n if (targetTextureVarying) {\n ({\n width,\n height\n } = targetTexture);\n uniforms[\"\".concat(SIZE_UNIFORM_PREFIX).concat(targetTextureVarying)] = [width, height];\n }\n\n for (const textureName in sourceTextureMap) {\n ({\n width,\n height\n } = sourceTextureMap[textureName]);\n uniforms[\"\".concat(SIZE_UNIFORM_PREFIX).concat(textureName)] = [width, height];\n }\n\n return uniforms;\n}\n\nfunction getAttributeDefinition(line) {\n return getQualifierDetails(line, ['attribute', 'in']);\n}\n\nfunction getSamplerDeclerations(textureName) {\n const samplerName = \"\".concat(SAMPLER_UNIFORM_PREFIX).concat(textureName);\n const sizeName = \"\".concat(SIZE_UNIFORM_PREFIX).concat(textureName);\n const uniformDeclerations = \" uniform sampler2D \".concat(samplerName, \";\\n uniform vec2 \").concat(sizeName, \";\");\n return {\n samplerName,\n sizeName,\n uniformDeclerations\n };\n}\n\nexport function getVaryingType(line, varying) {\n const qualaiferDetails = getQualifierDetails(line, ['varying', 'out']);\n\n if (!qualaiferDetails) {\n return null;\n }\n\n return qualaiferDetails.name === varying ? qualaiferDetails.type : null;\n}\nexport function processAttributeDefinition(line, textureMap) {\n const samplerTextureMap = {};\n const attributeData = getAttributeDefinition(line);\n\n if (!attributeData) {\n return null;\n }\n\n const {\n type,\n name\n } = attributeData;\n\n if (name && textureMap[name]) {\n const updatedLine = \"// \".concat(line, \" => Replaced by Transform with a sampler\");\n const {\n samplerName,\n sizeName,\n uniformDeclerations\n } = getSamplerDeclerations(name);\n const channels = typeToChannelSuffix(type);\n const sampleInstruction = \" \".concat(type, \" \").concat(name, \" = transform_getInput(\").concat(samplerName, \", \").concat(sizeName, \").\").concat(channels, \";\\n\");\n samplerTextureMap[samplerName] = name;\n const inject = {\n 'vs:#decl': uniformDeclerations,\n 'vs:#main-start': sampleInstruction\n };\n return {\n updatedLine,\n inject,\n samplerTextureMap\n };\n }\n\n return null;\n}\n//# sourceMappingURL=transform-shader-utils.js.map","import {assert} from '@luma.gl/webgl';\nimport {combineInjects, getQualifierDetails, typeToChannelSuffix} from '@luma.gl/shadertools';\n\nconst SAMPLER_UNIFORM_PREFIX = 'transform_uSampler_';\nconst SIZE_UNIFORM_PREFIX = 'transform_uSize_';\nconst VS_POS_VARIABLE = 'transform_position';\n\n// Scan provided vertex shader\n// for each texture attribute, inject sampler instructions and build uniforms for sampler\n// for texture target, get varying type and inject position instruction\nexport function updateForTextures({vs, sourceTextureMap, targetTextureVarying, targetTexture}) {\n const texAttributeNames = Object.keys(sourceTextureMap);\n let sourceCount = texAttributeNames.length;\n let targetTextureType = null;\n const samplerTextureMap = {};\n let updatedVs = vs;\n let finalInject = {};\n\n if (sourceCount > 0 || targetTextureVarying) {\n const vsLines = updatedVs.split('\\n');\n const updateVsLines = vsLines.slice();\n vsLines.forEach((line, index, lines) => {\n // TODO add early exit\n if (sourceCount > 0) {\n const updated = processAttributeDefinition(line, sourceTextureMap);\n if (updated) {\n const {updatedLine, inject} = updated;\n updateVsLines[index] = updatedLine;\n // sampleInstructions.push(sampleInstruction);\n finalInject = combineInjects([finalInject, inject]);\n Object.assign(samplerTextureMap, updated.samplerTextureMap);\n sourceCount--;\n }\n }\n if (targetTextureVarying && !targetTextureType) {\n targetTextureType = getVaryingType(line, targetTextureVarying);\n }\n });\n\n if (targetTextureVarying) {\n assert(targetTexture);\n const sizeName = `${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`;\n\n const uniformDeclaration = `uniform vec2 ${sizeName};\\n`;\n const posInstructions = `\\\n vec2 ${VS_POS_VARIABLE} = transform_getPos(${sizeName});\n gl_Position = vec4(${VS_POS_VARIABLE}, 0, 1.);\\n`;\n const inject = {\n 'vs:#decl': uniformDeclaration,\n 'vs:#main-start': posInstructions\n };\n finalInject = combineInjects([finalInject, inject]);\n }\n updatedVs = updateVsLines.join('\\n');\n }\n return {\n // updated vertex shader (commented texture attribute definition)\n vs: updatedVs,\n // type (float, vec2, vec3 of vec4) target texture varying\n targetTextureType,\n // required vertex and fragment shader injects\n inject: finalInject,\n // map of sampler name to texture name, can be used to set attributes\n // usefull when swapping textures, as source and destination texture change when swap is called.\n samplerTextureMap\n };\n}\n\n// builds and returns an object contaning size uniform for each texture\nexport function getSizeUniforms({sourceTextureMap, targetTextureVarying, targetTexture}) {\n const uniforms = {};\n let width;\n let height;\n if (targetTextureVarying) {\n ({width, height} = targetTexture);\n uniforms[`${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`] = [width, height];\n }\n for (const textureName in sourceTextureMap) {\n ({width, height} = sourceTextureMap[textureName]);\n uniforms[`${SIZE_UNIFORM_PREFIX}${textureName}`] = [width, height];\n }\n return uniforms;\n}\n\n// Checks if provided line is defining an attribute, if so returns details otherwise null\nfunction getAttributeDefinition(line) {\n return getQualifierDetails(line, ['attribute', 'in']);\n}\n\nfunction getSamplerDeclerations(textureName) {\n const samplerName = `${SAMPLER_UNIFORM_PREFIX}${textureName}`;\n const sizeName = `${SIZE_UNIFORM_PREFIX}${textureName}`;\n const uniformDeclerations = `\\\n uniform sampler2D ${samplerName};\n uniform vec2 ${sizeName};`;\n return {samplerName, sizeName, uniformDeclerations};\n}\n\n// Return size (float, vec2 etc) of a given varying, null if doens't exist.\nexport function getVaryingType(line, varying) {\n const qualaiferDetails = getQualifierDetails(line, ['varying', 'out']);\n if (!qualaiferDetails) {\n return null;\n }\n return qualaiferDetails.name === varying ? qualaiferDetails.type : null;\n}\n\n// build required definitions, sample instructions for each texture attribute\nexport function processAttributeDefinition(line, textureMap) {\n const samplerTextureMap = {};\n const attributeData = getAttributeDefinition(line);\n if (!attributeData) {\n return null;\n }\n const {type, name} = attributeData;\n if (name && textureMap[name]) {\n // eslint-disable-next-line no-useless-escape\n const updatedLine = `\\// ${line} => Replaced by Transform with a sampler`;\n const {samplerName, sizeName, uniformDeclerations} = getSamplerDeclerations(name);\n\n const channels = typeToChannelSuffix(type);\n const sampleInstruction = ` ${type} ${name} = transform_getInput(${samplerName}, ${sizeName}).${channels};\\n`;\n\n samplerTextureMap[samplerName] = name;\n const inject = {\n 'vs:#decl': uniformDeclerations,\n 'vs:#main-start': sampleInstruction\n };\n\n // samplerNameMap\n return {\n // update vertex shader line.\n updatedLine,\n // inject object with sampler instructions.\n inject,\n // sampler name to texture name map\n samplerTextureMap\n };\n }\n return null;\n}\n","import { isWebGL } from '@luma.gl/gltools';\nimport ProgramManager from './program-manager';\nimport { Program, VertexArray, clear, TransformFeedback, Buffer, log, isObjectEmpty, uid, assert } from '@luma.gl/webgl';\nimport { getDebugTableForUniforms, getDebugTableForVertexArray, getDebugTableForProgramConfiguration } from '@luma.gl/webgl';\nimport { getBuffersFromGeometry } from './model-utils';\nconst LOG_DRAW_PRIORITY = 2;\nconst LOG_DRAW_TIMEOUT = 10000;\nconst ERR_MODEL_PARAMS = 'Model needs drawMode and vertexCount';\n\nconst NOOP = () => {};\n\nconst DRAW_PARAMS = {};\nexport default class Model {\n constructor(gl) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n id = uid('model')\n } = props;\n assert(isWebGL(gl));\n this.id = id;\n this.gl = gl;\n this.id = props.id || uid('Model');\n this.lastLogTime = 0;\n this.animated = false;\n this.initialize(props);\n }\n\n initialize(props) {\n this.props = {};\n this.programManager = props.programManager || ProgramManager.getDefaultProgramManager(this.gl);\n this._programManagerState = -1;\n this._managedProgram = false;\n const {\n program = null,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = props;\n this.programProps = {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n };\n this.program = null;\n this.vertexArray = null;\n this._programDirty = true;\n this.userData = {};\n this.needsRedraw = true;\n this._attributes = {};\n this.attributes = {};\n this.uniforms = {};\n this.pickable = true;\n\n this._checkProgram();\n\n this.setUniforms(Object.assign({}, this.getModuleUniforms(props.moduleSettings)));\n this.drawMode = props.drawMode !== undefined ? props.drawMode : 4;\n this.vertexCount = props.vertexCount || 0;\n this.geometryBuffers = {};\n this.isInstanced = props.isInstanced || props.instanced || props.instanceCount > 0;\n\n this._setModelProps(props);\n\n this.geometry = {};\n assert(this.drawMode !== undefined && Number.isFinite(this.vertexCount), ERR_MODEL_PARAMS);\n }\n\n setProps(props) {\n this._setModelProps(props);\n }\n\n delete() {\n for (const key in this._attributes) {\n if (this._attributes[key] !== this.attributes[key]) {\n this._attributes[key].delete();\n }\n }\n\n if (this._managedProgram) {\n this.programManager.release(this.program);\n this._managedProgram = false;\n }\n\n this.vertexArray.delete();\n\n this._deleteGeometryBuffers();\n }\n\n getDrawMode() {\n return this.drawMode;\n }\n\n getVertexCount() {\n return this.vertexCount;\n }\n\n getInstanceCount() {\n return this.instanceCount;\n }\n\n getAttributes() {\n return this.attributes;\n }\n\n getProgram() {\n return this.program;\n }\n\n setProgram(props) {\n const {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = props;\n this.programProps = {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n };\n this._programDirty = true;\n }\n\n getUniforms() {\n return this.uniforms;\n }\n\n setDrawMode(drawMode) {\n this.drawMode = drawMode;\n return this;\n }\n\n setVertexCount(vertexCount) {\n assert(Number.isFinite(vertexCount));\n this.vertexCount = vertexCount;\n return this;\n }\n\n setInstanceCount(instanceCount) {\n assert(Number.isFinite(instanceCount));\n this.instanceCount = instanceCount;\n return this;\n }\n\n setGeometry(geometry) {\n this.drawMode = geometry.drawMode;\n this.vertexCount = geometry.getVertexCount();\n\n this._deleteGeometryBuffers();\n\n this.geometryBuffers = getBuffersFromGeometry(this.gl, geometry);\n this.vertexArray.setAttributes(this.geometryBuffers);\n return this;\n }\n\n setAttributes() {\n let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (isObjectEmpty(attributes)) {\n return this;\n }\n\n const normalizedAttributes = {};\n\n for (const name in attributes) {\n const attribute = attributes[name];\n normalizedAttributes[name] = attribute.getValue ? attribute.getValue() : attribute;\n }\n\n this.vertexArray.setAttributes(normalizedAttributes);\n return this;\n }\n\n setUniforms() {\n let uniforms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n Object.assign(this.uniforms, uniforms);\n return this;\n }\n\n getModuleUniforms(opts) {\n this._checkProgram();\n\n const getUniforms = this.programManager.getUniforms(this.program);\n\n if (getUniforms) {\n return getUniforms(opts);\n }\n\n return {};\n }\n\n updateModuleSettings(opts) {\n const uniforms = this.getModuleUniforms(opts || {});\n return this.setUniforms(uniforms);\n }\n\n clear(opts) {\n clear(this.program.gl, opts);\n return this;\n }\n\n draw() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._checkProgram();\n\n const {\n moduleSettings = null,\n framebuffer,\n uniforms = {},\n attributes = {},\n transformFeedback = this.transformFeedback,\n parameters = {},\n vertexArray = this.vertexArray\n } = opts;\n this.setAttributes(attributes);\n this.updateModuleSettings(moduleSettings);\n this.setUniforms(uniforms);\n let logPriority;\n\n if (log.priority >= LOG_DRAW_PRIORITY) {\n logPriority = this._logDrawCallStart(LOG_DRAW_PRIORITY);\n }\n\n const drawParams = this.vertexArray.getDrawParams();\n const {\n isIndexed = drawParams.isIndexed,\n indexType = drawParams.indexType,\n indexOffset = drawParams.indexOffset,\n vertexArrayInstanced = drawParams.isInstanced\n } = this.props;\n\n if (vertexArrayInstanced && !this.isInstanced) {\n log.warn('Found instanced attributes on non-instanced model', this.id)();\n }\n\n const {\n isInstanced,\n instanceCount\n } = this;\n const {\n onBeforeRender = NOOP,\n onAfterRender = NOOP\n } = this.props;\n onBeforeRender();\n this.program.setUniforms(this.uniforms);\n const didDraw = this.program.draw(Object.assign(DRAW_PARAMS, opts, {\n logPriority,\n uniforms: null,\n framebuffer,\n parameters,\n drawMode: this.getDrawMode(),\n vertexCount: this.getVertexCount(),\n vertexArray,\n transformFeedback,\n isIndexed,\n indexType,\n isInstanced,\n instanceCount,\n offset: isIndexed ? indexOffset : 0\n }));\n onAfterRender();\n\n if (log.priority >= LOG_DRAW_PRIORITY) {\n this._logDrawCallEnd(logPriority, vertexArray, framebuffer);\n }\n\n return didDraw;\n }\n\n transform() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n discard = true,\n feedbackBuffers,\n unbindModels = []\n } = opts;\n let {\n parameters\n } = opts;\n\n if (feedbackBuffers) {\n this._setFeedbackBuffers(feedbackBuffers);\n }\n\n if (discard) {\n parameters = Object.assign({}, parameters, {\n [35977]: discard\n });\n }\n\n unbindModels.forEach(model => model.vertexArray.unbindBuffers());\n\n try {\n this.draw(Object.assign({}, opts, {\n parameters\n }));\n } finally {\n unbindModels.forEach(model => model.vertexArray.bindBuffers());\n }\n\n return this;\n }\n\n render() {\n let uniforms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n log.warn('Model.render() is deprecated. Use Model.setUniforms() and Model.draw()')();\n return this.setUniforms(uniforms).draw();\n }\n\n _setModelProps(props) {\n Object.assign(this.props, props);\n\n if ('uniforms' in props) {\n this.setUniforms(props.uniforms);\n }\n\n if ('pickable' in props) {\n this.pickable = props.pickable;\n }\n\n if ('instanceCount' in props) {\n this.instanceCount = props.instanceCount;\n }\n\n if ('geometry' in props) {\n this.setGeometry(props.geometry);\n }\n\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n\n if ('_feedbackBuffers' in props) {\n this._setFeedbackBuffers(props._feedbackBuffers);\n }\n }\n\n _checkProgram() {\n const needsUpdate = this._programDirty || this.programManager.stateHash !== this._programManagerState;\n\n if (!needsUpdate) {\n return;\n }\n\n let {\n program\n } = this.programProps;\n\n if (program) {\n this._managedProgram = false;\n } else {\n const {\n vs,\n fs,\n modules,\n inject,\n defines,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = this.programProps;\n program = this.programManager.get({\n vs,\n fs,\n modules,\n inject,\n defines,\n varyings,\n bufferMode,\n transpileToGLSL100\n });\n\n if (this.program && this._managedProgram) {\n this.programManager.release(this.program);\n }\n\n this._programManagerState = this.programManager.stateHash;\n this._managedProgram = true;\n }\n\n assert(program instanceof Program, 'Model needs a program');\n this._programDirty = false;\n\n if (program === this.program) {\n return;\n }\n\n this.program = program;\n\n if (this.vertexArray) {\n this.vertexArray.setProps({\n program: this.program,\n attributes: this.vertexArray.attributes\n });\n } else {\n this.vertexArray = new VertexArray(this.gl, {\n program: this.program\n });\n }\n\n this.setUniforms(Object.assign({}, this.getModuleUniforms()));\n }\n\n _deleteGeometryBuffers() {\n for (const name in this.geometryBuffers) {\n const buffer = this.geometryBuffers[name][0] || this.geometryBuffers[name];\n\n if (buffer instanceof Buffer) {\n buffer.delete();\n }\n }\n }\n\n _setAnimationProps(animationProps) {\n if (this.animated) {\n assert(animationProps, 'Model.draw(): animated uniforms but no animationProps');\n }\n }\n\n _setFeedbackBuffers() {\n let feedbackBuffers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (isObjectEmpty(feedbackBuffers)) {\n return this;\n }\n\n const {\n gl\n } = this.program;\n this.transformFeedback = this.transformFeedback || new TransformFeedback(gl, {\n program: this.program\n });\n this.transformFeedback.setBuffers(feedbackBuffers);\n return this;\n }\n\n _logDrawCallStart(logLevel) {\n const logDrawTimeout = logLevel > 3 ? 0 : LOG_DRAW_TIMEOUT;\n\n if (Date.now() - this.lastLogTime < logDrawTimeout) {\n return undefined;\n }\n\n this.lastLogTime = Date.now();\n log.group(LOG_DRAW_PRIORITY, \">>> DRAWING MODEL \".concat(this.id), {\n collapsed: log.level <= 2\n })();\n return logLevel;\n }\n\n _logDrawCallEnd(logLevel, vertexArray, uniforms, framebuffer) {\n if (logLevel === undefined) {\n return;\n }\n\n const attributeTable = getDebugTableForVertexArray({\n vertexArray,\n header: \"\".concat(this.id, \" attributes\"),\n attributes: this._attributes\n });\n const {\n table: uniformTable,\n unusedTable,\n unusedCount\n } = getDebugTableForUniforms({\n header: \"\".concat(this.id, \" uniforms\"),\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms)\n });\n const {\n table: missingTable,\n count: missingCount\n } = getDebugTableForUniforms({\n header: \"\".concat(this.id, \" uniforms\"),\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms),\n undefinedOnly: true\n });\n\n if (missingCount > 0) {\n log.log('MISSING UNIFORMS', Object.keys(missingTable))();\n }\n\n if (unusedCount > 0) {\n log.log('UNUSED UNIFORMS', Object.keys(unusedTable))();\n }\n\n const configTable = getDebugTableForProgramConfiguration(this.vertexArray.configuration);\n log.table(logLevel, attributeTable)();\n log.table(logLevel, uniformTable)();\n log.table(logLevel + 1, configTable)();\n\n if (framebuffer) {\n framebuffer.log({\n logLevel: LOG_DRAW_PRIORITY,\n message: \"Rendered to \".concat(framebuffer.id)\n });\n }\n\n log.groupEnd(LOG_DRAW_PRIORITY)();\n }\n\n}\n//# sourceMappingURL=model.js.map","/* eslint-disable complexity */\n\nimport GL from '@luma.gl/constants';\nimport {isWebGL} from '@luma.gl/gltools';\nimport ProgramManager from './program-manager';\nimport {\n Program,\n VertexArray,\n clear,\n TransformFeedback,\n Buffer,\n log,\n isObjectEmpty,\n uid,\n assert\n} from '@luma.gl/webgl';\nimport {\n getDebugTableForUniforms,\n getDebugTableForVertexArray,\n getDebugTableForProgramConfiguration\n} from '@luma.gl/webgl';\nimport {getBuffersFromGeometry} from './model-utils';\n\nconst LOG_DRAW_PRIORITY = 2;\nconst LOG_DRAW_TIMEOUT = 10000;\n\nconst ERR_MODEL_PARAMS = 'Model needs drawMode and vertexCount';\n\nconst NOOP = () => {};\nconst DRAW_PARAMS = {};\n\nexport default class Model {\n constructor(gl, props = {}) {\n // Deduce a helpful id\n const {id = uid('model')} = props;\n assert(isWebGL(gl));\n this.id = id;\n this.gl = gl;\n this.id = props.id || uid('Model');\n this.lastLogTime = 0; // TODO - move to probe.gl\n this.animated = false;\n this.initialize(props);\n }\n\n initialize(props) {\n this.props = {};\n\n this.programManager = props.programManager || ProgramManager.getDefaultProgramManager(this.gl);\n this._programManagerState = -1;\n this._managedProgram = false;\n\n const {\n program = null,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = props;\n\n this.programProps = {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n };\n this.program = null;\n this.vertexArray = null;\n this._programDirty = true;\n\n // Initialize state\n this.userData = {};\n this.needsRedraw = true;\n\n // Attributes and buffers\n // Model manages auto Buffer creation from typed arrays\n this._attributes = {}; // All attributes\n this.attributes = {}; // User defined attributes\n\n // Model manages uniform animation\n this.uniforms = {};\n\n // picking options\n this.pickable = true;\n\n this._checkProgram();\n\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms(props.moduleSettings) // Get unforms for supplied parameters\n )\n );\n\n this.drawMode = props.drawMode !== undefined ? props.drawMode : GL.TRIANGLES;\n this.vertexCount = props.vertexCount || 0;\n\n // Track buffers created by setGeometry\n this.geometryBuffers = {};\n\n // geometry might have set drawMode and vertexCount\n this.isInstanced = props.isInstanced || props.instanced || props.instanceCount > 0;\n\n this._setModelProps(props);\n\n // TODO - just to unbreak deck.gl 7.0-beta, remove as soon as updated\n this.geometry = {};\n\n // assert(program || program instanceof Program);\n assert(this.drawMode !== undefined && Number.isFinite(this.vertexCount), ERR_MODEL_PARAMS);\n }\n\n setProps(props) {\n this._setModelProps(props);\n }\n\n delete() {\n // delete all attributes created by this model\n // TODO - should buffer deletes be handled by vertex array?\n for (const key in this._attributes) {\n if (this._attributes[key] !== this.attributes[key]) {\n this._attributes[key].delete();\n }\n }\n\n if (this._managedProgram) {\n this.programManager.release(this.program);\n this._managedProgram = false;\n }\n\n this.vertexArray.delete();\n\n this._deleteGeometryBuffers();\n }\n\n // GETTERS\n\n getDrawMode() {\n return this.drawMode;\n }\n\n getVertexCount() {\n return this.vertexCount;\n }\n\n getInstanceCount() {\n return this.instanceCount;\n }\n\n getAttributes() {\n return this.attributes;\n }\n\n getProgram() {\n return this.program;\n }\n\n setProgram(props) {\n const {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = props;\n this.programProps = {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n };\n this._programDirty = true;\n }\n\n getUniforms() {\n return this.uniforms;\n }\n\n // SETTERS\n\n setDrawMode(drawMode) {\n this.drawMode = drawMode;\n return this;\n }\n\n setVertexCount(vertexCount) {\n assert(Number.isFinite(vertexCount));\n this.vertexCount = vertexCount;\n return this;\n }\n\n setInstanceCount(instanceCount) {\n assert(Number.isFinite(instanceCount));\n this.instanceCount = instanceCount;\n return this;\n }\n\n setGeometry(geometry) {\n this.drawMode = geometry.drawMode;\n this.vertexCount = geometry.getVertexCount();\n\n this._deleteGeometryBuffers();\n\n this.geometryBuffers = getBuffersFromGeometry(this.gl, geometry);\n this.vertexArray.setAttributes(this.geometryBuffers);\n return this;\n }\n\n setAttributes(attributes = {}) {\n // Avoid setting needsRedraw if no attributes\n if (isObjectEmpty(attributes)) {\n return this;\n }\n\n const normalizedAttributes = {};\n for (const name in attributes) {\n const attribute = attributes[name];\n // The `getValue` call provides support for deck.gl `Attribute` class\n // TODO - remove once deck refactoring completes\n normalizedAttributes[name] = attribute.getValue ? attribute.getValue() : attribute;\n }\n\n this.vertexArray.setAttributes(normalizedAttributes);\n return this;\n }\n\n // TODO - should actually set the uniforms\n setUniforms(uniforms = {}) {\n Object.assign(this.uniforms, uniforms);\n\n return this;\n }\n\n getModuleUniforms(opts) {\n this._checkProgram();\n\n const getUniforms = this.programManager.getUniforms(this.program);\n\n if (getUniforms) {\n return getUniforms(opts);\n }\n\n return {};\n }\n\n updateModuleSettings(opts) {\n const uniforms = this.getModuleUniforms(opts || {});\n return this.setUniforms(uniforms);\n }\n\n // DRAW CALLS\n\n clear(opts) {\n clear(this.program.gl, opts);\n return this;\n }\n\n draw(opts = {}) {\n // Lazy update program and vertex array\n this._checkProgram();\n\n const {\n moduleSettings = null,\n framebuffer,\n uniforms = {},\n attributes = {},\n transformFeedback = this.transformFeedback,\n parameters = {},\n vertexArray = this.vertexArray\n } = opts;\n\n // Update model with any just provided attributes, settings or uniforms\n this.setAttributes(attributes);\n this.updateModuleSettings(moduleSettings);\n this.setUniforms(uniforms);\n\n let logPriority;\n\n if (log.priority >= LOG_DRAW_PRIORITY) {\n logPriority = this._logDrawCallStart(LOG_DRAW_PRIORITY);\n }\n\n const drawParams = this.vertexArray.getDrawParams();\n const {\n isIndexed = drawParams.isIndexed,\n indexType = drawParams.indexType,\n indexOffset = drawParams.indexOffset,\n vertexArrayInstanced = drawParams.isInstanced\n } = this.props;\n\n if (vertexArrayInstanced && !this.isInstanced) {\n log.warn('Found instanced attributes on non-instanced model', this.id)();\n }\n\n const {isInstanced, instanceCount} = this;\n\n const {onBeforeRender = NOOP, onAfterRender = NOOP} = this.props;\n\n onBeforeRender();\n\n this.program.setUniforms(this.uniforms);\n\n const didDraw = this.program.draw(\n Object.assign(DRAW_PARAMS, opts, {\n logPriority,\n uniforms: null, // Already set (may contain \"function values\" not understood by Program)\n framebuffer,\n parameters,\n drawMode: this.getDrawMode(),\n vertexCount: this.getVertexCount(),\n vertexArray,\n transformFeedback,\n isIndexed,\n indexType,\n isInstanced,\n instanceCount,\n offset: isIndexed ? indexOffset : 0\n })\n );\n\n onAfterRender();\n\n if (log.priority >= LOG_DRAW_PRIORITY) {\n this._logDrawCallEnd(logPriority, vertexArray, framebuffer);\n }\n\n return didDraw;\n }\n\n // Draw call for transform feedback\n transform(opts = {}) {\n const {discard = true, feedbackBuffers, unbindModels = []} = opts;\n\n let {parameters} = opts;\n\n if (feedbackBuffers) {\n this._setFeedbackBuffers(feedbackBuffers);\n }\n\n if (discard) {\n parameters = Object.assign({}, parameters, {[GL.RASTERIZER_DISCARD]: discard});\n }\n\n unbindModels.forEach(model => model.vertexArray.unbindBuffers());\n try {\n this.draw(Object.assign({}, opts, {parameters}));\n } finally {\n unbindModels.forEach(model => model.vertexArray.bindBuffers());\n }\n\n return this;\n }\n\n // DEPRECATED METHODS\n\n render(uniforms = {}) {\n log.warn('Model.render() is deprecated. Use Model.setUniforms() and Model.draw()')();\n return this.setUniforms(uniforms).draw();\n }\n\n // PRIVATE METHODS\n\n _setModelProps(props) {\n Object.assign(this.props, props);\n\n if ('uniforms' in props) {\n this.setUniforms(props.uniforms);\n }\n\n if ('pickable' in props) {\n this.pickable = props.pickable;\n }\n\n if ('instanceCount' in props) {\n this.instanceCount = props.instanceCount;\n }\n if ('geometry' in props) {\n this.setGeometry(props.geometry);\n }\n\n // webgl settings\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('_feedbackBuffers' in props) {\n this._setFeedbackBuffers(props._feedbackBuffers);\n }\n }\n\n _checkProgram() {\n const needsUpdate =\n this._programDirty || this.programManager.stateHash !== this._programManagerState;\n\n if (!needsUpdate) {\n return;\n }\n\n let {program} = this.programProps;\n\n if (program) {\n this._managedProgram = false;\n } else {\n const {\n vs,\n fs,\n modules,\n inject,\n defines,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = this.programProps;\n program = this.programManager.get({\n vs,\n fs,\n modules,\n inject,\n defines,\n varyings,\n bufferMode,\n transpileToGLSL100\n });\n if (this.program && this._managedProgram) {\n this.programManager.release(this.program);\n }\n this._programManagerState = this.programManager.stateHash;\n this._managedProgram = true;\n }\n\n assert(program instanceof Program, 'Model needs a program');\n\n this._programDirty = false;\n\n if (program === this.program) {\n return;\n }\n\n this.program = program;\n\n if (this.vertexArray) {\n // @ts-ignore TODO\n this.vertexArray.setProps({program: this.program, attributes: this.vertexArray.attributes});\n } else {\n this.vertexArray = new VertexArray(this.gl, {program: this.program});\n }\n\n // Make sure we have some reasonable default uniforms in place\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms() // Get all default uniforms,\n )\n );\n }\n\n _deleteGeometryBuffers() {\n for (const name in this.geometryBuffers) {\n // Buffer is raw value (for indices) or first element of [buffer, accessor] pair\n const buffer = this.geometryBuffers[name][0] || this.geometryBuffers[name];\n if (buffer instanceof Buffer) {\n buffer.delete();\n }\n }\n }\n\n // Updates (evaluates) all function valued uniforms based on a new set of animationProps\n // experimental\n _setAnimationProps(animationProps) {\n if (this.animated) {\n assert(animationProps, 'Model.draw(): animated uniforms but no animationProps');\n // const animatedUniforms = this._evaluateAnimateUniforms(animationProps);\n // Object.assign(this.uniforms, animatedUniforms);\n }\n }\n\n // Transform Feedback\n\n _setFeedbackBuffers(feedbackBuffers = {}) {\n // Avoid setting needsRedraw if no feedbackBuffers\n if (isObjectEmpty(feedbackBuffers)) {\n return this;\n }\n\n const {gl} = this.program;\n this.transformFeedback =\n this.transformFeedback ||\n new TransformFeedback(gl, {\n program: this.program\n });\n\n this.transformFeedback.setBuffers(feedbackBuffers);\n return this;\n }\n\n _logDrawCallStart(logLevel) {\n const logDrawTimeout = logLevel > 3 ? 0 : LOG_DRAW_TIMEOUT;\n if (Date.now() - this.lastLogTime < logDrawTimeout) {\n return undefined;\n }\n\n this.lastLogTime = Date.now();\n\n log.group(LOG_DRAW_PRIORITY, `>>> DRAWING MODEL ${this.id}`, {collapsed: log.level <= 2})();\n\n return logLevel;\n }\n\n _logDrawCallEnd(logLevel, vertexArray, uniforms, framebuffer) {\n // HACK: logLevel === undefined means logDrawCallStart didn't run\n if (logLevel === undefined) {\n return;\n }\n\n const attributeTable = getDebugTableForVertexArray({\n vertexArray,\n header: `${this.id} attributes`,\n // @ts-ignore\n attributes: this._attributes\n });\n\n const {table: uniformTable, unusedTable, unusedCount} = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms)\n });\n\n // log missing uniforms\n const {table: missingTable, count: missingCount} = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms),\n undefinedOnly: true\n });\n\n if (missingCount > 0) {\n log.log('MISSING UNIFORMS', Object.keys(missingTable))();\n // log.table(logLevel, missingTable)();\n }\n if (unusedCount > 0) {\n log.log('UNUSED UNIFORMS', Object.keys(unusedTable))();\n // log.log(logLevel, 'Unused uniforms ', unusedTable)();\n }\n\n const configTable = getDebugTableForProgramConfiguration(this.vertexArray.configuration);\n\n log.table(logLevel, attributeTable)();\n\n log.table(logLevel, uniformTable)();\n\n log.table(logLevel + 1, configTable)();\n\n if (framebuffer) {\n framebuffer.log({logLevel: LOG_DRAW_PRIORITY, message: `Rendered to ${framebuffer.id}`});\n }\n\n log.groupEnd(LOG_DRAW_PRIORITY)();\n }\n}\n","import { assembleShaders } from '@luma.gl/shadertools';\nimport { Program } from '@luma.gl/webgl';\nexport default class ProgramManager {\n static getDefaultProgramManager(gl) {\n gl.luma = gl.luma || {};\n gl.luma.defaultProgramManager = gl.luma.defaultProgramManager || new ProgramManager(gl);\n return gl.luma.defaultProgramManager;\n }\n\n constructor(gl) {\n this.gl = gl;\n this._programCache = {};\n this._getUniforms = {};\n this._registeredModules = {};\n this._hookFunctions = [];\n this._defaultModules = [];\n this._hashes = {};\n this._hashCounter = 0;\n this.stateHash = 0;\n this._useCounts = {};\n }\n\n addDefaultModule(module) {\n if (!this._defaultModules.find(m => m.name === module.name)) {\n this._defaultModules.push(module);\n }\n\n this.stateHash++;\n }\n\n removeDefaultModule(module) {\n const moduleName = typeof module === 'string' ? module : module.name;\n this._defaultModules = this._defaultModules.filter(m => m.name !== moduleName);\n this.stateHash++;\n }\n\n addShaderHook(hook, opts) {\n if (opts) {\n hook = Object.assign(opts, {\n hook\n });\n }\n\n this._hookFunctions.push(hook);\n\n this.stateHash++;\n }\n\n get() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n vs = '',\n fs = '',\n defines = {},\n inject = {},\n varyings = [],\n bufferMode = 0x8c8d,\n transpileToGLSL100 = false\n } = props;\n\n const modules = this._getModuleList(props.modules);\n\n const vsHash = this._getHash(vs);\n\n const fsHash = this._getHash(fs);\n\n const moduleHashes = modules.map(m => this._getHash(m.name)).sort();\n const varyingHashes = varyings.map(v => this._getHash(v));\n const defineKeys = Object.keys(defines).sort();\n const injectKeys = Object.keys(inject).sort();\n const defineHashes = [];\n const injectHashes = [];\n\n for (const key of defineKeys) {\n defineHashes.push(this._getHash(key));\n defineHashes.push(this._getHash(defines[key]));\n }\n\n for (const key of injectKeys) {\n injectHashes.push(this._getHash(key));\n injectHashes.push(this._getHash(inject[key]));\n }\n\n const hash = \"\".concat(vsHash, \"/\").concat(fsHash, \"D\").concat(defineHashes.join('/'), \"M\").concat(moduleHashes.join('/'), \"I\").concat(injectHashes.join('/'), \"V\").concat(varyingHashes.join('/'), \"H\").concat(this.stateHash, \"B\").concat(bufferMode).concat(transpileToGLSL100 ? 'T' : '');\n\n if (!this._programCache[hash]) {\n const assembled = assembleShaders(this.gl, {\n vs,\n fs,\n modules,\n inject,\n defines,\n hookFunctions: this._hookFunctions,\n transpileToGLSL100\n });\n this._programCache[hash] = new Program(this.gl, {\n hash,\n vs: assembled.vs,\n fs: assembled.fs,\n varyings,\n bufferMode\n });\n\n this._getUniforms[hash] = assembled.getUniforms || (x => {});\n\n this._useCounts[hash] = 0;\n }\n\n this._useCounts[hash]++;\n return this._programCache[hash];\n }\n\n getUniforms(program) {\n return this._getUniforms[program.hash] || null;\n }\n\n release(program) {\n const hash = program.hash;\n this._useCounts[hash]--;\n\n if (this._useCounts[hash] === 0) {\n this._programCache[hash].delete();\n\n delete this._programCache[hash];\n delete this._getUniforms[hash];\n delete this._useCounts[hash];\n }\n }\n\n _getHash(key) {\n if (this._hashes[key] === undefined) {\n this._hashes[key] = this._hashCounter++;\n }\n\n return this._hashes[key];\n }\n\n _getModuleList() {\n let appModules = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n const modules = new Array(this._defaultModules.length + appModules.length);\n const seen = {};\n let count = 0;\n\n for (let i = 0, len = this._defaultModules.length; i < len; ++i) {\n const module = this._defaultModules[i];\n const name = module.name;\n modules[count++] = module;\n seen[name] = true;\n }\n\n for (let i = 0, len = appModules.length; i < len; ++i) {\n const module = appModules[i];\n const name = module.name;\n\n if (!seen[name]) {\n modules[count++] = module;\n seen[name] = true;\n }\n }\n\n modules.length = count;\n return modules;\n }\n\n}\n//# sourceMappingURL=program-manager.js.map","import {assembleShaders} from '@luma.gl/shadertools';\nimport {Program} from '@luma.gl/webgl';\n\nexport default class ProgramManager {\n static getDefaultProgramManager(gl) {\n gl.luma = gl.luma || {};\n gl.luma.defaultProgramManager = gl.luma.defaultProgramManager || new ProgramManager(gl);\n\n return gl.luma.defaultProgramManager;\n }\n\n constructor(gl) {\n this.gl = gl;\n\n this._programCache = {};\n this._getUniforms = {};\n this._registeredModules = {}; // TODO: Remove? This isn't used anywhere in luma.gl\n this._hookFunctions = [];\n this._defaultModules = [];\n\n this._hashes = {};\n this._hashCounter = 0;\n this.stateHash = 0; // Used change hashing if hooks are modified\n this._useCounts = {};\n }\n\n addDefaultModule(module) {\n if (!this._defaultModules.find(m => m.name === module.name)) {\n this._defaultModules.push(module);\n }\n\n this.stateHash++;\n }\n\n removeDefaultModule(module) {\n const moduleName = typeof module === 'string' ? module : module.name;\n this._defaultModules = this._defaultModules.filter(m => m.name !== moduleName);\n this.stateHash++;\n }\n\n addShaderHook(hook, opts) {\n if (opts) {\n hook = Object.assign(opts, {hook});\n }\n\n this._hookFunctions.push(hook);\n\n this.stateHash++;\n }\n\n get(props = {}) {\n const {\n vs = '',\n fs = '',\n defines = {},\n inject = {},\n varyings = [],\n bufferMode = 0x8c8d,\n transpileToGLSL100 = false\n } = props; // varyings/bufferMode for xform feedback, 0x8c8d = SEPARATE_ATTRIBS\n\n const modules = this._getModuleList(props.modules); // Combine with default modules\n\n const vsHash = this._getHash(vs);\n const fsHash = this._getHash(fs);\n const moduleHashes = modules.map(m => this._getHash(m.name)).sort();\n const varyingHashes = varyings.map(v => this._getHash(v));\n\n const defineKeys = Object.keys(defines).sort();\n const injectKeys = Object.keys(inject).sort();\n const defineHashes = [];\n const injectHashes = [];\n\n for (const key of defineKeys) {\n defineHashes.push(this._getHash(key));\n defineHashes.push(this._getHash(defines[key]));\n }\n\n for (const key of injectKeys) {\n injectHashes.push(this._getHash(key));\n injectHashes.push(this._getHash(inject[key]));\n }\n\n const hash = `${vsHash}/${fsHash}D${defineHashes.join('/')}M${moduleHashes.join(\n '/'\n )}I${injectHashes.join('/')}V${varyingHashes.join('/')}H${this.stateHash}B${bufferMode}${\n transpileToGLSL100 ? 'T' : ''\n }`;\n\n if (!this._programCache[hash]) {\n const assembled = assembleShaders(this.gl, {\n vs,\n fs,\n modules,\n inject,\n defines,\n hookFunctions: this._hookFunctions,\n transpileToGLSL100\n });\n\n this._programCache[hash] = new Program(this.gl, {\n hash,\n vs: assembled.vs,\n fs: assembled.fs,\n varyings,\n bufferMode\n });\n\n this._getUniforms[hash] = assembled.getUniforms || (x => {});\n this._useCounts[hash] = 0;\n }\n\n this._useCounts[hash]++;\n\n return this._programCache[hash];\n }\n\n getUniforms(program) {\n return this._getUniforms[program.hash] || null;\n }\n\n release(program) {\n const hash = program.hash;\n this._useCounts[hash]--;\n\n if (this._useCounts[hash] === 0) {\n this._programCache[hash].delete();\n delete this._programCache[hash];\n delete this._getUniforms[hash];\n delete this._useCounts[hash];\n }\n }\n\n _getHash(key) {\n if (this._hashes[key] === undefined) {\n this._hashes[key] = this._hashCounter++;\n }\n\n return this._hashes[key];\n }\n\n // Dedup and combine with default modules\n _getModuleList(appModules = []) {\n const modules = new Array(this._defaultModules.length + appModules.length);\n const seen = {};\n let count = 0;\n\n for (let i = 0, len = this._defaultModules.length; i < len; ++i) {\n const module = this._defaultModules[i];\n const name = module.name;\n modules[count++] = module;\n seen[name] = true;\n }\n\n for (let i = 0, len = appModules.length; i < len; ++i) {\n const module = appModules[i];\n const name = module.name;\n if (!seen[name]) {\n modules[count++] = module;\n seen[name] = true;\n }\n }\n\n modules.length = count;\n\n return modules;\n }\n}\n","import { VERTEX_SHADER, FRAGMENT_SHADER } from './constants';\nimport { resolveModules } from './resolve-modules';\nimport { getPlatformShaderDefines, getVersionDefines } from './platform-defines';\nimport injectShader, { DECLARATION_INJECT_MARKER } from './inject-shader';\nimport transpileShader from './transpile-shader';\nimport { assert } from '../utils';\nconst INJECT_SHADER_DECLARATIONS = \"\\n\\n\".concat(DECLARATION_INJECT_MARKER, \"\\n\\n\");\nconst SHADER_TYPE = {\n [VERTEX_SHADER]: 'vertex',\n [FRAGMENT_SHADER]: 'fragment'\n};\nconst FRAGMENT_SHADER_PROLOGUE = \"precision highp float;\\n\\n\";\nexport function assembleShaders(gl, opts) {\n const {\n vs,\n fs\n } = opts;\n const modules = resolveModules(opts.modules || []);\n return {\n gl,\n vs: assembleShader(gl, Object.assign({}, opts, {\n source: vs,\n type: VERTEX_SHADER,\n modules\n })),\n fs: assembleShader(gl, Object.assign({}, opts, {\n source: fs,\n type: FRAGMENT_SHADER,\n modules\n })),\n getUniforms: assembleGetUniforms(modules)\n };\n}\n\nfunction assembleShader(gl, _ref) {\n let {\n id,\n source,\n type,\n modules,\n defines = {},\n hookFunctions = [],\n inject = {},\n transpileToGLSL100 = false,\n prologue = true,\n log\n } = _ref;\n assert(typeof source === 'string', 'shader source must be a string');\n const isVertex = type === VERTEX_SHADER;\n const sourceLines = source.split('\\n');\n let glslVersion = 100;\n let versionLine = '';\n let coreSource = source;\n\n if (sourceLines[0].indexOf('#version ') === 0) {\n glslVersion = 300;\n versionLine = sourceLines[0];\n coreSource = sourceLines.slice(1).join('\\n');\n } else {\n versionLine = \"#version \".concat(glslVersion);\n }\n\n const allDefines = {};\n modules.forEach(module => {\n Object.assign(allDefines, module.getDefines());\n });\n Object.assign(allDefines, defines);\n let assembledSource = prologue ? \"\".concat(versionLine, \"\\n\").concat(getShaderName({\n id,\n source,\n type\n }), \"\\n\").concat(getShaderType({\n type\n }), \"\\n\").concat(getPlatformShaderDefines(gl), \"\\n\").concat(getVersionDefines(gl, glslVersion, !isVertex), \"\\n\").concat(getApplicationDefines(allDefines), \"\\n\").concat(isVertex ? '' : FRAGMENT_SHADER_PROLOGUE, \"\\n\") : \"\".concat(versionLine, \"\\n\");\n const hookFunctionMap = normalizeHookFunctions(hookFunctions);\n const hookInjections = {};\n const declInjections = {};\n const mainInjections = {};\n\n for (const key in inject) {\n const injection = typeof inject[key] === 'string' ? {\n injection: inject[key],\n order: 0\n } : inject[key];\n const match = key.match(/^(v|f)s:(#)?([\\w-]+)$/);\n\n if (match) {\n const hash = match[2];\n const name = match[3];\n\n if (hash) {\n if (name === 'decl') {\n declInjections[key] = [injection];\n } else {\n mainInjections[key] = [injection];\n }\n } else {\n hookInjections[key] = [injection];\n }\n } else {\n mainInjections[key] = [injection];\n }\n }\n\n for (const module of modules) {\n if (log) {\n module.checkDeprecations(coreSource, log);\n }\n\n const moduleSource = module.getModuleSource(type, glslVersion);\n assembledSource += moduleSource;\n const injections = module.injections[type];\n\n for (const key in injections) {\n const match = key.match(/^(v|f)s:#([\\w-]+)$/);\n\n if (match) {\n const name = match[2];\n const injectionType = name === 'decl' ? declInjections : mainInjections;\n injectionType[key] = injectionType[key] || [];\n injectionType[key].push(injections[key]);\n } else {\n hookInjections[key] = hookInjections[key] || [];\n hookInjections[key].push(injections[key]);\n }\n }\n }\n\n assembledSource += INJECT_SHADER_DECLARATIONS;\n assembledSource = injectShader(assembledSource, type, declInjections);\n assembledSource += getHookFunctions(hookFunctionMap[type], hookInjections);\n assembledSource += coreSource;\n assembledSource = injectShader(assembledSource, type, mainInjections);\n assembledSource = transpileShader(assembledSource, transpileToGLSL100 ? 100 : glslVersion, isVertex);\n return assembledSource;\n}\n\nfunction assembleGetUniforms(modules) {\n return function getUniforms(opts) {\n const uniforms = {};\n\n for (const module of modules) {\n const moduleUniforms = module.getUniforms(opts, uniforms);\n Object.assign(uniforms, moduleUniforms);\n }\n\n return uniforms;\n };\n}\n\nfunction getShaderType(_ref2) {\n let {\n type\n } = _ref2;\n return \"\\n#define SHADER_TYPE_\".concat(SHADER_TYPE[type].toUpperCase(), \"\\n\");\n}\n\nfunction getShaderName(_ref3) {\n let {\n id,\n source,\n type\n } = _ref3;\n const injectShaderName = id && typeof id === 'string' && source.indexOf('SHADER_NAME') === -1;\n return injectShaderName ? \"\\n#define SHADER_NAME \".concat(id, \"_\").concat(SHADER_TYPE[type], \"\\n\\n\") : '';\n}\n\nfunction getApplicationDefines() {\n let defines = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let count = 0;\n let sourceText = '';\n\n for (const define in defines) {\n if (count === 0) {\n sourceText += '\\n// APPLICATION DEFINES\\n';\n }\n\n count++;\n const value = defines[define];\n\n if (value || Number.isFinite(value)) {\n sourceText += \"#define \".concat(define.toUpperCase(), \" \").concat(defines[define], \"\\n\");\n }\n }\n\n if (count === 0) {\n sourceText += '\\n';\n }\n\n return sourceText;\n}\n\nfunction getHookFunctions(hookFunctions, hookInjections) {\n let result = '';\n\n for (const hookName in hookFunctions) {\n const hookFunction = hookFunctions[hookName];\n result += \"void \".concat(hookFunction.signature, \" {\\n\");\n\n if (hookFunction.header) {\n result += \" \".concat(hookFunction.header);\n }\n\n if (hookInjections[hookName]) {\n const injections = hookInjections[hookName];\n injections.sort((a, b) => a.order - b.order);\n\n for (const injection of injections) {\n result += \" \".concat(injection.injection, \"\\n\");\n }\n }\n\n if (hookFunction.footer) {\n result += \" \".concat(hookFunction.footer);\n }\n\n result += '}\\n';\n }\n\n return result;\n}\n\nfunction normalizeHookFunctions(hookFunctions) {\n const result = {\n vs: {},\n fs: {}\n };\n hookFunctions.forEach(hook => {\n let opts;\n\n if (typeof hook !== 'string') {\n opts = hook;\n hook = opts.hook;\n } else {\n opts = {};\n }\n\n hook = hook.trim();\n const [stage, signature] = hook.split(':');\n const name = hook.replace(/\\(.+/, '');\n result[stage][name] = Object.assign(opts, {\n signature\n });\n });\n return result;\n}\n//# sourceMappingURL=assemble-shaders.js.map","import {VERTEX_SHADER, FRAGMENT_SHADER} from './constants';\nimport {resolveModules} from './resolve-modules';\nimport {getPlatformShaderDefines, getVersionDefines} from './platform-defines';\nimport injectShader, {DECLARATION_INJECT_MARKER} from './inject-shader';\nimport transpileShader from './transpile-shader';\nimport {assert} from '../utils';\n\nconst INJECT_SHADER_DECLARATIONS = `\\n\\n${DECLARATION_INJECT_MARKER}\\n\\n`;\n\nconst SHADER_TYPE = {\n [VERTEX_SHADER]: 'vertex',\n [FRAGMENT_SHADER]: 'fragment'\n};\n\n// Precision prologue to inject before functions are injected in shader\n// TODO - extract any existing prologue in the fragment source and move it up...\nconst FRAGMENT_SHADER_PROLOGUE = `\\\nprecision highp float;\n\n`;\n\n// Inject a list of modules\nexport function assembleShaders(gl, opts) {\n const {vs, fs} = opts;\n const modules = resolveModules(opts.modules || []);\n return {\n gl,\n vs: assembleShader(gl, Object.assign({}, opts, {source: vs, type: VERTEX_SHADER, modules})),\n fs: assembleShader(gl, Object.assign({}, opts, {source: fs, type: FRAGMENT_SHADER, modules})),\n getUniforms: assembleGetUniforms(modules)\n };\n}\n\n// Pulls together complete source code for either a vertex or a fragment shader\n// adding prologues, requested module chunks, and any final injections.\nfunction assembleShader(\n gl,\n {\n id,\n source,\n type,\n modules,\n defines = {},\n hookFunctions = [],\n inject = {},\n transpileToGLSL100 = false,\n prologue = true,\n log\n }\n) {\n assert(typeof source === 'string', 'shader source must be a string');\n\n const isVertex = type === VERTEX_SHADER;\n\n const sourceLines = source.split('\\n');\n let glslVersion = 100;\n let versionLine = '';\n let coreSource = source;\n // Extract any version directive string from source.\n // TODO : keep all pre-processor statements at the begining of the shader.\n if (sourceLines[0].indexOf('#version ') === 0) {\n glslVersion = 300; // TODO - regexp that matches actual version number\n versionLine = sourceLines[0];\n coreSource = sourceLines.slice(1).join('\\n');\n } else {\n versionLine = `#version ${glslVersion}`;\n }\n\n // Combine Module and Application Defines\n const allDefines = {};\n modules.forEach(module => {\n Object.assign(allDefines, module.getDefines());\n });\n Object.assign(allDefines, defines);\n\n // Add platform defines (use these to work around platform-specific bugs and limitations)\n // Add common defines (GLSL version compatibility, feature detection)\n // Add precision declaration for fragment shaders\n let assembledSource = prologue\n ? `\\\n${versionLine}\n${getShaderName({id, source, type})}\n${getShaderType({type})}\n${getPlatformShaderDefines(gl)}\n${getVersionDefines(gl, glslVersion, !isVertex)}\n${getApplicationDefines(allDefines)}\n${isVertex ? '' : FRAGMENT_SHADER_PROLOGUE}\n`\n : `${versionLine}\n`;\n\n const hookFunctionMap = normalizeHookFunctions(hookFunctions);\n\n // Add source of dependent modules in resolved order\n const hookInjections = {};\n const declInjections = {};\n const mainInjections = {};\n\n for (const key in inject) {\n const injection =\n typeof inject[key] === 'string' ? {injection: inject[key], order: 0} : inject[key];\n const match = key.match(/^(v|f)s:(#)?([\\w-]+)$/);\n if (match) {\n const hash = match[2];\n const name = match[3];\n if (hash) {\n if (name === 'decl') {\n declInjections[key] = [injection];\n } else {\n mainInjections[key] = [injection];\n }\n } else {\n hookInjections[key] = [injection];\n }\n } else {\n // Regex injection\n mainInjections[key] = [injection];\n }\n }\n\n for (const module of modules) {\n if (log) {\n module.checkDeprecations(coreSource, log);\n }\n const moduleSource = module.getModuleSource(type, glslVersion);\n // Add the module source, and a #define that declares it presence\n assembledSource += moduleSource;\n\n const injections = module.injections[type];\n for (const key in injections) {\n const match = key.match(/^(v|f)s:#([\\w-]+)$/);\n if (match) {\n const name = match[2];\n const injectionType = name === 'decl' ? declInjections : mainInjections;\n injectionType[key] = injectionType[key] || [];\n injectionType[key].push(injections[key]);\n } else {\n hookInjections[key] = hookInjections[key] || [];\n hookInjections[key].push(injections[key]);\n }\n }\n }\n\n // For injectShader\n assembledSource += INJECT_SHADER_DECLARATIONS;\n\n assembledSource = injectShader(assembledSource, type, declInjections);\n\n assembledSource += getHookFunctions(hookFunctionMap[type], hookInjections);\n\n // Add the version directive and actual source of this shader\n assembledSource += coreSource;\n\n // Apply any requested shader injections\n assembledSource = injectShader(assembledSource, type, mainInjections);\n\n assembledSource = transpileShader(\n assembledSource,\n transpileToGLSL100 ? 100 : glslVersion,\n isVertex\n );\n\n return assembledSource;\n}\n\n// Returns a combined `getUniforms` covering the options for all the modules,\n// the created function will pass on options to the inidividual `getUniforms`\n// function of each shader module and combine the results into one object that\n// can be passed to setUniforms.\nfunction assembleGetUniforms(modules) {\n return function getUniforms(opts) {\n const uniforms = {};\n for (const module of modules) {\n // `modules` is already sorted by dependency level. This guarantees that\n // modules have access to the uniforms that are generated by their dependencies.\n const moduleUniforms = module.getUniforms(opts, uniforms);\n Object.assign(uniforms, moduleUniforms);\n }\n return uniforms;\n };\n}\n\nfunction getShaderType({type}) {\n return `\n#define SHADER_TYPE_${SHADER_TYPE[type].toUpperCase()}\n`;\n}\n\n// Generate \"glslify-compatible\" SHADER_NAME defines\n// These are understood by the GLSL error parsing function\n// If id is provided and no SHADER_NAME constant is present in source, create one\nfunction getShaderName({id, source, type}) {\n const injectShaderName = id && typeof id === 'string' && source.indexOf('SHADER_NAME') === -1;\n return injectShaderName\n ? `\n#define SHADER_NAME ${id}_${SHADER_TYPE[type]}\n\n`\n : '';\n}\n\n// Generates application defines from an object\nfunction getApplicationDefines(defines = {}) {\n let count = 0;\n let sourceText = '';\n for (const define in defines) {\n if (count === 0) {\n sourceText += '\\n// APPLICATION DEFINES\\n';\n }\n count++;\n\n const value = defines[define];\n if (value || Number.isFinite(value)) {\n sourceText += `#define ${define.toUpperCase()} ${defines[define]}\\n`;\n }\n }\n if (count === 0) {\n sourceText += '\\n';\n }\n return sourceText;\n}\n\nfunction getHookFunctions(hookFunctions, hookInjections) {\n let result = '';\n for (const hookName in hookFunctions) {\n const hookFunction = hookFunctions[hookName];\n result += `void ${hookFunction.signature} {\\n`;\n if (hookFunction.header) {\n result += ` ${hookFunction.header}`;\n }\n if (hookInjections[hookName]) {\n const injections = hookInjections[hookName];\n injections.sort((a, b) => a.order - b.order);\n for (const injection of injections) {\n result += ` ${injection.injection}\\n`;\n }\n }\n if (hookFunction.footer) {\n result += ` ${hookFunction.footer}`;\n }\n result += '}\\n';\n }\n\n return result;\n}\n\nfunction normalizeHookFunctions(hookFunctions) {\n const result = {\n vs: {},\n fs: {}\n };\n\n hookFunctions.forEach(hook => {\n let opts;\n if (typeof hook !== 'string') {\n opts = hook;\n hook = opts.hook;\n } else {\n opts = {};\n }\n hook = hook.trim();\n const [stage, signature] = hook.split(':');\n const name = hook.replace(/\\(.+/, '');\n result[stage][name] = Object.assign(opts, {signature});\n });\n\n return result;\n}\n","import ShaderModule from './shader-module';\nimport { assert } from '../utils';\nexport function resolveModules(modules) {\n return getShaderDependencies(instantiateModules(modules));\n}\n\nfunction getShaderDependencies(modules) {\n const moduleMap = {};\n const moduleDepth = {};\n getDependencyGraph({\n modules,\n level: 0,\n moduleMap,\n moduleDepth\n });\n return Object.keys(moduleDepth).sort((a, b) => moduleDepth[b] - moduleDepth[a]).map(name => moduleMap[name]);\n}\n\nfunction getDependencyGraph(_ref) {\n let {\n modules,\n level,\n moduleMap,\n moduleDepth\n } = _ref;\n\n if (level >= 5) {\n throw new Error('Possible loop in shader dependency graph');\n }\n\n for (const module of modules) {\n moduleMap[module.name] = module;\n\n if (moduleDepth[module.name] === undefined || moduleDepth[module.name] < level) {\n moduleDepth[module.name] = level;\n }\n }\n\n for (const module of modules) {\n if (module.dependencies) {\n getDependencyGraph({\n modules: module.dependencies,\n level: level + 1,\n moduleMap,\n moduleDepth\n });\n }\n }\n}\n\nfunction instantiateModules(modules, seen) {\n return modules.map(module => {\n if (module instanceof ShaderModule) {\n return module;\n }\n\n assert(typeof module !== 'string', \"Shader module use by name is deprecated. Import shader module '\".concat(module, \"' and use it directly.\"));\n assert(module.name, 'shader module has no name');\n module = new ShaderModule(module);\n module.dependencies = instantiateModules(module.dependencies);\n return module;\n });\n}\n\nexport const TEST_EXPORTS = {\n getShaderDependencies,\n getDependencyGraph\n};\n//# sourceMappingURL=resolve-modules.js.map","import ShaderModule from './shader-module';\nimport {assert} from '../utils';\n\n// Instantiate shader modules and any dependencies resolve dependencies\nexport function resolveModules(modules) {\n return getShaderDependencies(instantiateModules(modules));\n}\n\n/**\n * Takes a list of shader module names and returns a new list of\n * shader module names that includes all dependencies, sorted so\n * that modules that are dependencies of other modules come first.\n *\n * If the shader glsl code from the returned modules is concatenated\n * in the reverse order, it is guaranteed that all functions be resolved and\n * that all function and variable definitions come before use.\n *\n * @param {String[]} modules - Array of modules (inline modules or module names)\n * @return {String[]} - Array of modules\n */\nfunction getShaderDependencies(modules) {\n const moduleMap = {};\n const moduleDepth = {};\n getDependencyGraph({modules, level: 0, moduleMap, moduleDepth});\n\n // Return a reverse sort so that dependencies come before the modules that use them\n return Object.keys(moduleDepth)\n .sort((a, b) => moduleDepth[b] - moduleDepth[a])\n .map(name => moduleMap[name]);\n}\n\n/**\n * Recursively checks module dpendencies to calculate dependency\n * level of each module.\n *\n * @param {object} options\n * @param {object[]} options.modules - Array of modules\n * @param {number} options.level - Current level\n * @param {object} options.moduleMap -\n * @param {object} options.moduleDepth - Current level\n * @return {object} - Map of module name to its level\n */\n// Adds another level of dependencies to the result map\nfunction getDependencyGraph({modules, level, moduleMap, moduleDepth}) {\n if (level >= 5) {\n throw new Error('Possible loop in shader dependency graph');\n }\n\n // Update level on all current modules\n for (const module of modules) {\n moduleMap[module.name] = module;\n if (moduleDepth[module.name] === undefined || moduleDepth[module.name] < level) {\n moduleDepth[module.name] = level;\n }\n }\n\n // Recurse\n for (const module of modules) {\n if (module.dependencies) {\n getDependencyGraph({modules: module.dependencies, level: level + 1, moduleMap, moduleDepth});\n }\n }\n}\n\nfunction instantiateModules(modules, seen) {\n return modules.map(module => {\n if (module instanceof ShaderModule) {\n return module;\n }\n\n assert(\n typeof module !== 'string',\n `Shader module use by name is deprecated. Import shader module '${module}' and use it directly.`\n );\n assert(module.name, 'shader module has no name');\n\n module = new ShaderModule(module);\n module.dependencies = instantiateModules(module.dependencies);\n\n return module;\n });\n}\n\nexport const TEST_EXPORTS = {\n getShaderDependencies,\n getDependencyGraph\n};\n","import { assert } from '../utils';\nimport { parsePropTypes } from './filters/prop-types';\nconst VERTEX_SHADER = 'vs';\nconst FRAGMENT_SHADER = 'fs';\nexport default class ShaderModule {\n constructor(_ref) {\n let {\n name,\n vs,\n fs,\n dependencies = [],\n uniforms,\n getUniforms,\n deprecations = [],\n defines = {},\n inject = {},\n vertexShader,\n fragmentShader\n } = _ref;\n assert(typeof name === 'string');\n this.name = name;\n this.vs = vs || vertexShader;\n this.fs = fs || fragmentShader;\n this.getModuleUniforms = getUniforms;\n this.dependencies = dependencies;\n this.deprecations = this._parseDeprecationDefinitions(deprecations);\n this.defines = defines;\n this.injections = normalizeInjections(inject);\n\n if (uniforms) {\n this.uniforms = parsePropTypes(uniforms);\n }\n }\n\n getModuleSource(type) {\n let moduleSource;\n\n switch (type) {\n case VERTEX_SHADER:\n moduleSource = this.vs || '';\n break;\n\n case FRAGMENT_SHADER:\n moduleSource = this.fs || '';\n break;\n\n default:\n assert(false);\n }\n\n return \"#define MODULE_\".concat(this.name.toUpperCase().replace(/[^0-9a-z]/gi, '_'), \"\\n\").concat(moduleSource, \"// END MODULE_\").concat(this.name, \"\\n\\n\");\n }\n\n getUniforms(opts, uniforms) {\n if (this.getModuleUniforms) {\n return this.getModuleUniforms(opts, uniforms);\n }\n\n if (this.uniforms) {\n return this._defaultGetUniforms(opts);\n }\n\n return {};\n }\n\n getDefines() {\n return this.defines;\n }\n\n checkDeprecations(shaderSource, log) {\n this.deprecations.forEach(def => {\n if (def.regex.test(shaderSource)) {\n if (def.deprecated) {\n log.deprecated(def.old, def.new)();\n } else {\n log.removed(def.old, def.new)();\n }\n }\n });\n }\n\n _parseDeprecationDefinitions(deprecations) {\n deprecations.forEach(def => {\n switch (def.type) {\n case 'function':\n def.regex = new RegExp(\"\\\\b\".concat(def.old, \"\\\\(\"));\n break;\n\n default:\n def.regex = new RegExp(\"\".concat(def.type, \" \").concat(def.old, \";\"));\n }\n });\n return deprecations;\n }\n\n _defaultGetUniforms() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const uniforms = {};\n const propTypes = this.uniforms;\n\n for (const key in propTypes) {\n const propDef = propTypes[key];\n\n if (key in opts && !propDef.private) {\n if (propDef.validate) {\n assert(propDef.validate(opts[key], propDef), \"\".concat(this.name, \": invalid \").concat(key));\n }\n\n uniforms[key] = opts[key];\n } else {\n uniforms[key] = propDef.value;\n }\n }\n\n return uniforms;\n }\n\n}\nexport function normalizeShaderModule(module) {\n if (!module.normalized) {\n module.normalized = true;\n\n if (module.uniforms && !module.getUniforms) {\n const shaderModule = new ShaderModule(module);\n module.getUniforms = shaderModule.getUniforms.bind(shaderModule);\n }\n }\n\n return module;\n}\n\nfunction normalizeInjections(injections) {\n const result = {\n vs: {},\n fs: {}\n };\n\n for (const hook in injections) {\n let injection = injections[hook];\n const stage = hook.slice(0, 2);\n\n if (typeof injection === 'string') {\n injection = {\n order: 0,\n injection\n };\n }\n\n result[stage][hook] = injection;\n }\n\n return result;\n}\n//# sourceMappingURL=shader-module.js.map","import {assert} from '../utils';\nimport {parsePropTypes} from './filters/prop-types';\n\nconst VERTEX_SHADER = 'vs';\nconst FRAGMENT_SHADER = 'fs';\n\nexport default class ShaderModule {\n constructor({\n name,\n vs,\n fs,\n dependencies = [],\n uniforms,\n getUniforms,\n deprecations = [],\n defines = {},\n inject = {},\n // DEPRECATED\n vertexShader,\n fragmentShader\n }) {\n assert(typeof name === 'string');\n this.name = name;\n this.vs = vs || vertexShader;\n this.fs = fs || fragmentShader;\n this.getModuleUniforms = getUniforms;\n this.dependencies = dependencies;\n this.deprecations = this._parseDeprecationDefinitions(deprecations);\n this.defines = defines;\n this.injections = normalizeInjections(inject);\n\n if (uniforms) {\n this.uniforms = parsePropTypes(uniforms);\n }\n }\n\n // Extracts the source code chunk for the specified shader type from the named shader module\n getModuleSource(type) {\n let moduleSource;\n switch (type) {\n case VERTEX_SHADER:\n moduleSource = this.vs || '';\n break;\n case FRAGMENT_SHADER:\n moduleSource = this.fs || '';\n break;\n default:\n assert(false);\n }\n\n return `\\\n#define MODULE_${this.name.toUpperCase().replace(/[^0-9a-z]/gi, '_')}\n${moduleSource}\\\n// END MODULE_${this.name}\n\n`;\n }\n\n getUniforms(opts, uniforms) {\n if (this.getModuleUniforms) {\n return this.getModuleUniforms(opts, uniforms);\n }\n // Build uniforms from the uniforms array\n if (this.uniforms) {\n return this._defaultGetUniforms(opts);\n }\n return {};\n }\n\n getDefines() {\n return this.defines;\n }\n\n // Warn about deprecated uniforms or functions\n checkDeprecations(shaderSource, log) {\n this.deprecations.forEach(def => {\n if (def.regex.test(shaderSource)) {\n if (def.deprecated) {\n log.deprecated(def.old, def.new)();\n } else {\n log.removed(def.old, def.new)();\n }\n }\n });\n }\n\n _parseDeprecationDefinitions(deprecations) {\n deprecations.forEach(def => {\n switch (def.type) {\n case 'function':\n def.regex = new RegExp(`\\\\b${def.old}\\\\(`);\n break;\n default:\n def.regex = new RegExp(`${def.type} ${def.old};`);\n }\n });\n\n return deprecations;\n }\n\n _defaultGetUniforms(opts = {}) {\n const uniforms = {};\n const propTypes = this.uniforms;\n\n for (const key in propTypes) {\n const propDef = propTypes[key];\n if (key in opts && !propDef.private) {\n if (propDef.validate) {\n assert(propDef.validate(opts[key], propDef), `${this.name}: invalid ${key}`);\n }\n uniforms[key] = opts[key];\n } else {\n uniforms[key] = propDef.value;\n }\n }\n\n return uniforms;\n }\n}\n\n// This utility mutates the original module\n// Keeping for backward compatibility\n// TODO - remove in v8\nexport function normalizeShaderModule(module) {\n if (!module.normalized) {\n module.normalized = true;\n if (module.uniforms && !module.getUniforms) {\n const shaderModule = new ShaderModule(module);\n module.getUniforms = shaderModule.getUniforms.bind(shaderModule);\n }\n }\n return module;\n}\n\nfunction normalizeInjections(injections) {\n const result = {\n vs: {},\n fs: {}\n };\n\n for (const hook in injections) {\n let injection = injections[hook];\n const stage = hook.slice(0, 2);\n\n if (typeof injection === 'string') {\n injection = {\n order: 0,\n injection\n };\n }\n\n result[stage][hook] = injection;\n }\n\n return result;\n}\n","const TYPE_DEFINITIONS = {\n number: {\n validate(value, propType) {\n return Number.isFinite(value) && (!('max' in propType) || value <= propType.max) && (!('min' in propType) || value >= propType.min);\n }\n\n },\n array: {\n validate(value, propType) {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n }\n\n }\n};\nexport function parsePropTypes(propDefs) {\n const propTypes = {};\n\n for (const propName in propDefs) {\n const propDef = propDefs[propName];\n const propType = parsePropType(propDef);\n propTypes[propName] = propType;\n }\n\n return propTypes;\n}\n\nfunction parsePropType(propDef) {\n let type = getTypeOf(propDef);\n\n if (type === 'object') {\n if (!propDef) {\n return {\n type: 'object',\n value: null\n };\n }\n\n if ('type' in propDef) {\n return Object.assign({}, propDef, TYPE_DEFINITIONS[propDef.type]);\n }\n\n if (!('value' in propDef)) {\n return {\n type: 'object',\n value: propDef\n };\n }\n\n type = getTypeOf(propDef.value);\n return Object.assign({\n type\n }, propDef, TYPE_DEFINITIONS[type]);\n }\n\n return Object.assign({\n type,\n value: propDef\n }, TYPE_DEFINITIONS[type]);\n}\n\nfunction getTypeOf(value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return 'array';\n }\n\n return typeof value;\n}\n//# sourceMappingURL=prop-types.js.map","const TYPE_DEFINITIONS = {\n number: {\n validate(value, propType) {\n return (\n Number.isFinite(value) &&\n (!('max' in propType) || value <= propType.max) &&\n (!('min' in propType) || value >= propType.min)\n );\n }\n },\n array: {\n validate(value, propType) {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n }\n }\n};\n\nexport function parsePropTypes(propDefs) {\n const propTypes = {};\n for (const propName in propDefs) {\n const propDef = propDefs[propName];\n const propType = parsePropType(propDef);\n propTypes[propName] = propType;\n }\n return propTypes;\n}\n\n// Parses one property definition entry. Either contains:\n// * a valid prop type object ({type, ...})\n// * or just a default value, in which case type and name inference is used\nfunction parsePropType(propDef) {\n let type = getTypeOf(propDef);\n if (type === 'object') {\n if (!propDef) {\n return {type: 'object', value: null};\n }\n if ('type' in propDef) {\n return Object.assign({}, propDef, TYPE_DEFINITIONS[propDef.type]);\n }\n if (!('value' in propDef)) {\n // If no type and value this object is likely the value\n return {type: 'object', value: propDef};\n }\n type = getTypeOf(propDef.value);\n return Object.assign({type}, propDef, TYPE_DEFINITIONS[type]);\n }\n return Object.assign({type, value: propDef}, TYPE_DEFINITIONS[type]);\n}\n\n// improved version of javascript typeof that can distinguish arrays and null values\nfunction getTypeOf(value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return 'array';\n }\n return typeof value;\n}\n","import { getContextInfo, hasFeatures, canCompileGLGSExtension, FEATURES } from '../utils/webgl-info';\nexport function getPlatformShaderDefines(gl) {\n const debugInfo = getContextInfo(gl);\n\n switch (debugInfo.gpuVendor.toLowerCase()) {\n case 'nvidia':\n return \"#define NVIDIA_GPU\\n// Nvidia optimizes away the calculation necessary for emulated fp64\\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\\n\";\n\n case 'intel':\n return \"#define INTEL_GPU\\n// Intel optimizes away the calculation necessary for emulated fp64\\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\\n// Intel's built-in 'tan' function doesn't have acceptable precision\\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\\n\";\n\n case 'amd':\n return \"#define AMD_GPU\\n\";\n\n default:\n return \"#define DEFAULT_GPU\\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\\n// Intel's built-in 'tan' function doesn't have acceptable precision\\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\\n\";\n }\n}\nexport function getVersionDefines(gl, glslVersion, isFragment) {\n let versionDefines = \"#if (__VERSION__ > 120)\\n\\n# define FEATURE_GLSL_DERIVATIVES\\n# define FEATURE_GLSL_DRAW_BUFFERS\\n# define FEATURE_GLSL_FRAG_DEPTH\\n# define FEATURE_GLSL_TEXTURE_LOD\\n\\n// DEPRECATED FLAGS, remove in v9\\n# define FRAG_DEPTH\\n# define DERIVATIVES\\n# define DRAW_BUFFERS\\n# define TEXTURE_LOD\\n\\n#endif // __VERSION\\n\";\n\n if (hasFeatures(gl, FEATURES.GLSL_FRAG_DEPTH)) {\n versionDefines += \"\\n// FRAG_DEPTH => gl_FragDepth is available\\n#ifdef GL_EXT_frag_depth\\n#extension GL_EXT_frag_depth : enable\\n# define FEATURE_GLSL_FRAG_DEPTH\\n# define FRAG_DEPTH\\n# define gl_FragDepth gl_FragDepthEXT\\n#endif\\n\";\n }\n\n if (hasFeatures(gl, FEATURES.GLSL_DERIVATIVES) && canCompileGLGSExtension(gl, FEATURES.GLSL_DERIVATIVES)) {\n versionDefines += \"\\n// DERIVATIVES => dxdF, dxdY and fwidth are available\\n#ifdef GL_OES_standard_derivatives\\n#extension GL_OES_standard_derivatives : enable\\n# define FEATURE_GLSL_DERIVATIVES\\n# define DERIVATIVES\\n#endif\\n\";\n }\n\n if (hasFeatures(gl, FEATURES.GLSL_FRAG_DATA) && canCompileGLGSExtension(gl, FEATURES.GLSL_FRAG_DATA, {\n behavior: 'require'\n })) {\n versionDefines += \"\\n// DRAW_BUFFERS => gl_FragData[] is available\\n#ifdef GL_EXT_draw_buffers\\n#extension GL_EXT_draw_buffers : require\\n#define FEATURE_GLSL_DRAW_BUFFERS\\n#define DRAW_BUFFERS\\n#endif\\n\";\n }\n\n if (hasFeatures(gl, FEATURES.GLSL_TEXTURE_LOD)) {\n versionDefines += \"// TEXTURE_LOD => texture2DLod etc are available\\n#ifdef GL_EXT_shader_texture_lod\\n#extension GL_EXT_shader_texture_lod : enable\\n\\n# define FEATURE_GLSL_TEXTURE_LOD\\n# define TEXTURE_LOD\\n\\n#endif\\n\";\n }\n\n return versionDefines;\n}\n//# sourceMappingURL=platform-defines.js.map","import {getContextInfo, hasFeatures, canCompileGLGSExtension, FEATURES} from '../utils/webgl-info';\n\nexport function getPlatformShaderDefines(gl) {\n const debugInfo = getContextInfo(gl);\n\n switch (debugInfo.gpuVendor.toLowerCase()) {\n case 'nvidia':\n return `\\\n#define NVIDIA_GPU\n// Nvidia optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n`;\n\n case 'intel':\n return `\\\n#define INTEL_GPU\n// Intel optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;\n\n case 'amd':\n // AMD Does not eliminate fp64 code\n return `\\\n#define AMD_GPU\n`;\n\n default:\n // We don't know what GPU it is, could be that the GPU driver or\n // browser is not implementing UNMASKED_RENDERER constant and not\n // reporting a correct name\n return `\\\n#define DEFAULT_GPU\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;\n }\n}\n\nexport function getVersionDefines(gl, glslVersion, isFragment) {\n // Add shadertools defines to let shaders portably v1/v3 check for features\n let versionDefines = `\\\n#if (__VERSION__ > 120)\n\n# define FEATURE_GLSL_DERIVATIVES\n# define FEATURE_GLSL_DRAW_BUFFERS\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FEATURE_GLSL_TEXTURE_LOD\n\n// DEPRECATED FLAGS, remove in v9\n# define FRAG_DEPTH\n# define DERIVATIVES\n# define DRAW_BUFFERS\n# define TEXTURE_LOD\n\n#endif // __VERSION\n`;\n\n if (hasFeatures(gl, FEATURES.GLSL_FRAG_DEPTH)) {\n versionDefines += `\\\n\n// FRAG_DEPTH => gl_FragDepth is available\n#ifdef GL_EXT_frag_depth\n#extension GL_EXT_frag_depth : enable\n# define FEATURE_GLSL_FRAG_DEPTH\n# define FRAG_DEPTH\n# define gl_FragDepth gl_FragDepthEXT\n#endif\n`;\n }\n if (\n hasFeatures(gl, FEATURES.GLSL_DERIVATIVES) &&\n canCompileGLGSExtension(gl, FEATURES.GLSL_DERIVATIVES)\n ) {\n versionDefines += `\\\n\n// DERIVATIVES => dxdF, dxdY and fwidth are available\n#ifdef GL_OES_standard_derivatives\n#extension GL_OES_standard_derivatives : enable\n# define FEATURE_GLSL_DERIVATIVES\n# define DERIVATIVES\n#endif\n`;\n }\n if (\n hasFeatures(gl, FEATURES.GLSL_FRAG_DATA) &&\n canCompileGLGSExtension(gl, FEATURES.GLSL_FRAG_DATA, {behavior: 'require'})\n ) {\n versionDefines += `\\\n\n// DRAW_BUFFERS => gl_FragData[] is available\n#ifdef GL_EXT_draw_buffers\n#extension GL_EXT_draw_buffers : require\n#define FEATURE_GLSL_DRAW_BUFFERS\n#define DRAW_BUFFERS\n#endif\n`;\n }\n if (hasFeatures(gl, FEATURES.GLSL_TEXTURE_LOD)) {\n versionDefines += `\\\n// TEXTURE_LOD => texture2DLod etc are available\n#ifdef GL_EXT_shader_texture_lod\n#extension GL_EXT_shader_texture_lod : enable\n\n# define FEATURE_GLSL_TEXTURE_LOD\n# define TEXTURE_LOD\n\n#endif\n`;\n }\n return versionDefines;\n}\n","import isOldIE from './is-old-ie';\nimport assert from './assert';\nconst GL_VENDOR = 0x1f00;\nconst GL_RENDERER = 0x1f01;\nconst GL_VERSION = 0x1f02;\nconst GL_SHADING_LANGUAGE_VERSION = 0x8b8c;\nconst WEBGL_FEATURES = {\n GLSL_FRAG_DATA: ['WEBGL_draw_buffers', true],\n GLSL_FRAG_DEPTH: ['EXT_frag_depth', true],\n GLSL_DERIVATIVES: ['OES_standard_derivatives', true],\n GLSL_TEXTURE_LOD: ['EXT_shader_texture_lod', true]\n};\nconst FEATURES = {};\nObject.keys(WEBGL_FEATURES).forEach(key => {\n FEATURES[key] = key;\n});\nexport { FEATURES };\n\nfunction isWebGL2(gl) {\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n return true;\n }\n\n return Boolean(gl && gl._version === 2);\n}\n\nexport function getContextInfo(gl) {\n const info = gl.getExtension('WEBGL_debug_renderer_info');\n const vendor = gl.getParameter(info && info.UNMASKED_VENDOR_WEBGL || GL_VENDOR);\n const renderer = gl.getParameter(info && info.UNMASKED_RENDERER_WEBGL || GL_RENDERER);\n const gpuVendor = identifyGPUVendor(vendor, renderer);\n const gpuInfo = {\n gpuVendor,\n vendor,\n renderer,\n version: gl.getParameter(GL_VERSION),\n shadingLanguageVersion: gl.getParameter(GL_SHADING_LANGUAGE_VERSION)\n };\n return gpuInfo;\n}\n\nfunction identifyGPUVendor(vendor, renderer) {\n if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {\n return 'NVIDIA';\n }\n\n if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {\n return 'INTEL';\n }\n\n if (vendor.match(/AMD/i) || renderer.match(/AMD/i) || vendor.match(/ATI/i) || renderer.match(/ATI/i)) {\n return 'AMD';\n }\n\n return 'UNKNOWN GPU';\n}\n\nconst compiledGlslExtensions = {};\nexport function canCompileGLGSExtension(gl, cap) {\n let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n if (!isOldIE(opts)) {\n return true;\n }\n\n if (cap in compiledGlslExtensions) {\n return compiledGlslExtensions[cap];\n }\n\n const extensionName = feature[0];\n const behavior = opts.behavior || 'enable';\n const source = \"#extension GL_\".concat(extensionName, \" : \").concat(behavior, \"\\nvoid main(void) {}\");\n const shader = gl.createShader(35633);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n const canCompile = gl.getShaderParameter(shader, 35713);\n gl.deleteShader(shader);\n compiledGlslExtensions[cap] = canCompile;\n return canCompile;\n}\n\nfunction getFeature(gl, cap) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n const extensionName = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n const value = typeof extensionName === 'string' ? Boolean(gl.getExtension(extensionName)) : extensionName;\n assert(value === false || value === true);\n return value;\n}\n\nexport function hasFeatures(gl, features) {\n features = Array.isArray(features) ? features : [features];\n return features.every(feature => getFeature(gl, feature));\n}\n//# sourceMappingURL=webgl-info.js.map","// Feature detection for WebGL\n//\n// Provides a function that enables simple checking of which WebGL features are\n// available in an WebGL1 or WebGL2 environment.\n\n/* eslint-disable no-inline-comments, max-len */\nimport isOldIE from './is-old-ie';\nimport assert from './assert';\n\nconst GL_VENDOR = 0x1f00;\nconst GL_RENDERER = 0x1f01;\nconst GL_VERSION = 0x1f02;\nconst GL_SHADING_LANGUAGE_VERSION = 0x8b8c;\n\n// Defines luma.gl \"feature\" names and semantics\nconst WEBGL_FEATURES = {\n // GLSL extensions\n GLSL_FRAG_DATA: ['WEBGL_draw_buffers', true], // TODO - name makes no sense in GLSL 3.00\n GLSL_FRAG_DEPTH: ['EXT_frag_depth', true],\n GLSL_DERIVATIVES: ['OES_standard_derivatives', true],\n GLSL_TEXTURE_LOD: ['EXT_shader_texture_lod', true]\n};\n\n// Create a key-mirrored FEATURES array\nconst FEATURES = {};\nObject.keys(WEBGL_FEATURES).forEach(key => {\n FEATURES[key] = key;\n});\n\nexport {FEATURES};\n\nfunction isWebGL2(gl) {\n if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {\n return true;\n }\n return Boolean(gl && gl._version === 2);\n}\n\nexport function getContextInfo(gl) {\n const info = gl.getExtension('WEBGL_debug_renderer_info');\n const vendor = gl.getParameter((info && info.UNMASKED_VENDOR_WEBGL) || GL_VENDOR);\n const renderer = gl.getParameter((info && info.UNMASKED_RENDERER_WEBGL) || GL_RENDERER);\n const gpuVendor = identifyGPUVendor(vendor, renderer);\n const gpuInfo = {\n gpuVendor,\n vendor,\n renderer,\n version: gl.getParameter(GL_VERSION),\n shadingLanguageVersion: gl.getParameter(GL_SHADING_LANGUAGE_VERSION)\n };\n return gpuInfo;\n}\n\nfunction identifyGPUVendor(vendor, renderer) {\n if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {\n return 'NVIDIA';\n }\n if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {\n return 'INTEL';\n }\n if (\n vendor.match(/AMD/i) ||\n renderer.match(/AMD/i) ||\n vendor.match(/ATI/i) ||\n renderer.match(/ATI/i)\n ) {\n return 'AMD';\n }\n return 'UNKNOWN GPU';\n}\n\nconst compiledGlslExtensions = {};\n\n// Enables feature detection in IE11 due to a bug where gl.getExtension may return true\n// but fail to compile when the extension is enabled in the shader. Specifically,\n// the OES_standard_derivatives and WEBGL_draw_buffers extensions fails to compile in IE11 even though its included\n// in the list of supported extensions.\n// opts allows user agent to be overridden for testing\n/*\n* Inputs :\n* gl : WebGL context\n* cap : Key of WEBGL_FEATURES object identifying the extension\n* opts :\n* behavior : behavior of extension to be tested, by defualt `enable` is used\n* Returns : true, if shader is compiled successfully, false otherwise\n*/\nexport function canCompileGLGSExtension(gl, cap, opts = {}) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n if (!isOldIE(opts)) {\n return true;\n }\n\n if (cap in compiledGlslExtensions) {\n return compiledGlslExtensions[cap];\n }\n\n const extensionName = feature[0];\n const behavior = opts.behavior || 'enable';\n const source = `#extension GL_${extensionName} : ${behavior}\\nvoid main(void) {}`;\n\n const shader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n gl.deleteShader(shader);\n compiledGlslExtensions[cap] = canCompile;\n return canCompile;\n}\n\n// TODO - cache the value\nfunction getFeature(gl, cap) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n // Get extension name from table\n const extensionName = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n\n // Check if the value is dependent on checking an extension\n const value =\n typeof extensionName === 'string' ? Boolean(gl.getExtension(extensionName)) : extensionName;\n\n assert(value === false || value === true);\n\n return value;\n}\n\nexport function hasFeatures(gl, features) {\n features = Array.isArray(features) ? features : [features];\n return features.every(feature => getFeature(gl, feature));\n}\n","export default function isOldIE() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const navigator = typeof window !== 'undefined' ? window.navigator || {} : {};\n const userAgent = opts.userAgent || navigator.userAgent || '';\n const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n const isTrident = userAgent.indexOf('Trident/') !== -1;\n return isMSIE || isTrident;\n}\n//# sourceMappingURL=is-old-ie.js.map","// opts allows user agent to be overridden for testing\nexport default function isOldIE(opts = {}) {\n const navigator = typeof window !== 'undefined' ? window.navigator || {} : {};\n // @ts-ignore\n const userAgent = opts.userAgent || navigator.userAgent || '';\n // We only care about older versions of IE (IE 11 and below). Newer versions of IE (Edge)\n // have much better web standards support.\n const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n const isTrident = userAgent.indexOf('Trident/') !== -1;\n return isMSIE || isTrident;\n}\n","function testVariable(qualifier) {\n return new RegExp(\"\\\\b\".concat(qualifier, \"[ \\\\t]+(\\\\w+[ \\\\t]+\\\\w+(\\\\[\\\\w+\\\\])?;)\"), 'g');\n}\n\nconst ES300_REPLACEMENTS = [[/^(#version[ \\t]+(100|300[ \\t]+es))?[ \\t]*\\n/, '#version 300 es\\n'], [/\\btexture(2D|2DProj|Cube)Lod(EXT)?\\(/g, 'textureLod('], [/\\btexture(2D|2DProj|Cube)(EXT)?\\(/g, 'texture(']];\nconst ES300_VERTEX_REPLACEMENTS = [...ES300_REPLACEMENTS, [testVariable('attribute'), 'in $1'], [testVariable('varying'), 'out $1']];\nconst ES300_FRAGMENT_REPLACEMENTS = [...ES300_REPLACEMENTS, [testVariable('varying'), 'in $1']];\nconst ES100_REPLACEMENTS = [[/^#version[ \\t]+300[ \\t]+es/, '#version 100'], [/\\btexture(2D|2DProj|Cube)Lod\\(/g, 'texture$1LodEXT('], [/\\btexture\\(/g, 'texture2D('], [/\\btextureLod\\(/g, 'texture2DLodEXT(']];\nconst ES100_VERTEX_REPLACEMENTS = [...ES100_REPLACEMENTS, [testVariable('in'), 'attribute $1'], [testVariable('out'), 'varying $1']];\nconst ES100_FRAGMENT_REPLACEMENTS = [...ES100_REPLACEMENTS, [testVariable('in'), 'varying $1']];\nconst ES100_FRAGMENT_OUTPUT_NAME = 'gl_FragColor';\nconst ES300_FRAGMENT_OUTPUT_REGEX = /\\bout[ \\t]+vec4[ \\t]+(\\w+)[ \\t]*;\\n?/;\nconst REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/;\nexport default function transpileShader(source, targetGLSLVersion, isVertex) {\n switch (targetGLSLVersion) {\n case 300:\n return isVertex ? convertShader(source, ES300_VERTEX_REPLACEMENTS) : convertFragmentShaderTo300(source);\n\n case 100:\n return isVertex ? convertShader(source, ES100_VERTEX_REPLACEMENTS) : convertFragmentShaderTo100(source);\n\n default:\n throw new Error(\"unknown GLSL version \".concat(targetGLSLVersion));\n }\n}\n\nfunction convertShader(source, replacements) {\n for (const [pattern, replacement] of replacements) {\n source = source.replace(pattern, replacement);\n }\n\n return source;\n}\n\nfunction convertFragmentShaderTo300(source) {\n source = convertShader(source, ES300_FRAGMENT_REPLACEMENTS);\n const outputMatch = source.match(ES300_FRAGMENT_OUTPUT_REGEX);\n\n if (outputMatch) {\n const outputName = outputMatch[1];\n source = source.replace(new RegExp(\"\\\\b\".concat(ES100_FRAGMENT_OUTPUT_NAME, \"\\\\b\"), 'g'), outputName);\n } else {\n const outputName = 'fragmentColor';\n source = source.replace(REGEX_START_OF_MAIN, match => \"out vec4 \".concat(outputName, \";\\n\").concat(match)).replace(new RegExp(\"\\\\b\".concat(ES100_FRAGMENT_OUTPUT_NAME, \"\\\\b\"), 'g'), outputName);\n }\n\n return source;\n}\n\nfunction convertFragmentShaderTo100(source) {\n source = convertShader(source, ES100_FRAGMENT_REPLACEMENTS);\n const outputMatch = source.match(ES300_FRAGMENT_OUTPUT_REGEX);\n\n if (outputMatch) {\n const outputName = outputMatch[1];\n source = source.replace(ES300_FRAGMENT_OUTPUT_REGEX, '').replace(new RegExp(\"\\\\b\".concat(outputName, \"\\\\b\"), 'g'), ES100_FRAGMENT_OUTPUT_NAME);\n }\n\n return source;\n}\n//# sourceMappingURL=transpile-shader.js.map","// TRANSPILATION TABLES\n\nfunction testVariable(qualifier) {\n /*\n should match:\n in float weight;\n out vec4 positions[2];\n should not match:\n void f(out float a, in float b) {}\n */\n return new RegExp(`\\\\b${qualifier}[ \\\\t]+(\\\\w+[ \\\\t]+\\\\w+(\\\\[\\\\w+\\\\])?;)`, 'g');\n}\n\n/** Simple regex replacements for GLSL ES 1.00 syntax that has changed in GLSL ES 3.00 */\nconst ES300_REPLACEMENTS = [\n // Fix poorly formatted version directive\n [/^(#version[ \\t]+(100|300[ \\t]+es))?[ \\t]*\\n/, '#version 300 es\\n'],\n // The individual `texture...()` functions were replaced with `texture()` overloads\n [/\\btexture(2D|2DProj|Cube)Lod(EXT)?\\(/g, 'textureLod('],\n [/\\btexture(2D|2DProj|Cube)(EXT)?\\(/g, 'texture(']\n];\n\nconst ES300_VERTEX_REPLACEMENTS = [\n ...ES300_REPLACEMENTS,\n // `attribute` keyword replaced with `in`\n [testVariable('attribute'), 'in $1'],\n // `varying` keyword replaced with `out`\n [testVariable('varying'), 'out $1']\n];\n\n/** Simple regex replacements for GLSL ES 1.00 syntax that has changed in GLSL ES 3.00 */\nconst ES300_FRAGMENT_REPLACEMENTS = [\n ...ES300_REPLACEMENTS,\n // `varying` keyword replaced with `in`\n [testVariable('varying'), 'in $1']\n];\n\nconst ES100_REPLACEMENTS = [\n [/^#version[ \\t]+300[ \\t]+es/, '#version 100'],\n\n // In GLSL 1.00 ES these functions are provided by an extension\n [/\\btexture(2D|2DProj|Cube)Lod\\(/g, 'texture$1LodEXT('],\n\n // Overloads in GLSL 3.00 map to individual functions. Note that we cannot\n // differentiate 2D,2DProj,Cube without type analysis so we choose the most common variant.\n [/\\btexture\\(/g, 'texture2D('],\n [/\\btextureLod\\(/g, 'texture2DLodEXT(']\n];\n\nconst ES100_VERTEX_REPLACEMENTS = [\n ...ES100_REPLACEMENTS,\n [testVariable('in'), 'attribute $1'],\n [testVariable('out'), 'varying $1']\n];\n\nconst ES100_FRAGMENT_REPLACEMENTS = [\n ...ES100_REPLACEMENTS,\n // Replace `in` with `varying`\n [testVariable('in'), 'varying $1']\n];\n\nconst ES100_FRAGMENT_OUTPUT_NAME = 'gl_FragColor';\nconst ES300_FRAGMENT_OUTPUT_REGEX = /\\bout[ \\t]+vec4[ \\t]+(\\w+)[ \\t]*;\\n?/;\n\nconst REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/; // Beginning of main\n\n// Transpiles shader source code to target GLSL version\n// Note: We always run transpiler even if same version e.g. 3.00 => 3.00\n// RFC: https://github.com/visgl/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/portable-glsl-300-rfc.md\nexport default function transpileShader(source, targetGLSLVersion, isVertex) {\n switch (targetGLSLVersion) {\n case 300:\n return isVertex\n ? convertShader(source, ES300_VERTEX_REPLACEMENTS)\n : convertFragmentShaderTo300(source);\n case 100:\n return isVertex\n ? convertShader(source, ES100_VERTEX_REPLACEMENTS)\n : convertFragmentShaderTo100(source);\n default:\n throw new Error(`unknown GLSL version ${targetGLSLVersion}`);\n }\n}\n\nfunction convertShader(source, replacements) {\n for (const [pattern, replacement] of replacements) {\n source = source.replace(pattern, replacement);\n }\n return source;\n}\n\nfunction convertFragmentShaderTo300(source) {\n source = convertShader(source, ES300_FRAGMENT_REPLACEMENTS);\n\n const outputMatch = source.match(ES300_FRAGMENT_OUTPUT_REGEX);\n if (outputMatch) {\n const outputName = outputMatch[1];\n source = source.replace(new RegExp(`\\\\b${ES100_FRAGMENT_OUTPUT_NAME}\\\\b`, 'g'), outputName);\n } else {\n const outputName = 'fragmentColor';\n source = source\n .replace(REGEX_START_OF_MAIN, match => `out vec4 ${outputName};\\n${match}`)\n .replace(new RegExp(`\\\\b${ES100_FRAGMENT_OUTPUT_NAME}\\\\b`, 'g'), outputName);\n }\n\n return source;\n}\n\nfunction convertFragmentShaderTo100(source) {\n source = convertShader(source, ES100_FRAGMENT_REPLACEMENTS);\n\n const outputMatch = source.match(ES300_FRAGMENT_OUTPUT_REGEX);\n if (outputMatch) {\n const outputName = outputMatch[1];\n source = source\n .replace(ES300_FRAGMENT_OUTPUT_REGEX, '')\n .replace(new RegExp(`\\\\b${outputName}\\\\b`, 'g'), ES100_FRAGMENT_OUTPUT_NAME);\n }\n\n return source;\n}\n","import Resource from './resource';\nimport Texture from './texture';\nimport Framebuffer from './framebuffer';\nimport { parseUniformName, getUniformSetter } from './uniforms';\nimport { VertexShader, FragmentShader } from './shader';\nimport ProgramConfiguration from './program-configuration';\nimport { copyUniform, checkUniformValues } from './uniforms';\nimport { isWebGL2, assertWebGL2Context, withParameters, log } from '@luma.gl/gltools';\nimport { getKey } from '../webgl-utils/constants-to-keys';\nimport { getPrimitiveDrawMode } from '../webgl-utils/attribute-utils';\nimport { assert } from '../utils/assert';\nimport { uid } from '../utils/utils';\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\nconst GL_SEPARATE_ATTRIBS = 0x8c8d;\nconst V6_DEPRECATED_METHODS = ['setVertexArray', 'setAttributes', 'setBuffers', 'unsetBuffers', 'use', 'getUniformCount', 'getUniformInfo', 'getUniformLocation', 'getUniformValue', 'getVarying', 'getFragDataLocation', 'getAttachedShaders', 'getAttributeCount', 'getAttributeLocation', 'getAttributeInfo'];\nexport default class Program extends Resource {\n get [Symbol.toStringTag]() {\n return 'Program';\n }\n\n constructor(gl) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(gl, props);\n this.stubRemovedMethods('Program', 'v6.0', V6_DEPRECATED_METHODS);\n this._isCached = false;\n this.initialize(props);\n Object.seal(this);\n\n this._setId(props.id);\n }\n\n initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n hash,\n vs,\n fs,\n varyings,\n bufferMode = GL_SEPARATE_ATTRIBS\n } = props;\n this.hash = hash || '';\n this.vs = typeof vs === 'string' ? new VertexShader(this.gl, {\n id: \"\".concat(props.id, \"-vs\"),\n source: vs\n }) : vs;\n this.fs = typeof fs === 'string' ? new FragmentShader(this.gl, {\n id: \"\".concat(props.id, \"-fs\"),\n source: fs\n }) : fs;\n assert(this.vs instanceof VertexShader);\n assert(this.fs instanceof FragmentShader);\n this.uniforms = {};\n this._textureUniforms = {};\n\n if (varyings && varyings.length > 0) {\n assertWebGL2Context(this.gl);\n this.varyings = varyings;\n this.gl2.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n }\n\n this._compileAndLink();\n\n this._readUniformLocationsFromLinkedProgram();\n\n this.configuration = new ProgramConfiguration(this);\n return this.setProps(props);\n }\n\n delete() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (this._isCached) {\n return this;\n }\n\n return super.delete(options);\n }\n\n setProps(props) {\n if ('uniforms' in props) {\n this.setUniforms(props.uniforms);\n }\n\n return this;\n }\n\n draw(_ref) {\n let {\n logPriority,\n drawMode = 4,\n vertexCount,\n offset = 0,\n start,\n end,\n isIndexed = false,\n indexType = 5123,\n instanceCount = 0,\n isInstanced = instanceCount > 0,\n vertexArray = null,\n transformFeedback,\n framebuffer,\n parameters = {},\n uniforms,\n samplers\n } = _ref;\n\n if (uniforms || samplers) {\n log.deprecated('Program.draw({uniforms})', 'Program.setUniforms(uniforms)')();\n this.setUniforms(uniforms || {});\n }\n\n if (log.priority >= logPriority) {\n const fb = framebuffer ? framebuffer.id : 'default';\n const message = \"mode=\".concat(getKey(this.gl, drawMode), \" verts=\").concat(vertexCount, \" \") + \"instances=\".concat(instanceCount, \" indexType=\").concat(getKey(this.gl, indexType), \" \") + \"isInstanced=\".concat(isInstanced, \" isIndexed=\").concat(isIndexed, \" \") + \"Framebuffer=\".concat(fb);\n log.log(logPriority, message)();\n }\n\n assert(vertexArray);\n this.gl.useProgram(this.handle);\n\n if (!this._areTexturesRenderable() || vertexCount === 0 || isInstanced && instanceCount === 0) {\n return false;\n }\n\n vertexArray.bindForDraw(vertexCount, instanceCount, () => {\n if (framebuffer !== undefined) {\n parameters = Object.assign({}, parameters, {\n framebuffer\n });\n }\n\n if (transformFeedback) {\n const primitiveMode = getPrimitiveDrawMode(drawMode);\n transformFeedback.begin(primitiveMode);\n }\n\n this._bindTextures();\n\n withParameters(this.gl, parameters, () => {\n if (isIndexed && isInstanced) {\n this.gl2.drawElementsInstanced(drawMode, vertexCount, indexType, offset, instanceCount);\n } else if (isIndexed && isWebGL2(this.gl) && !isNaN(start) && !isNaN(end)) {\n this.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n } else if (isIndexed) {\n this.gl.drawElements(drawMode, vertexCount, indexType, offset);\n } else if (isInstanced) {\n this.gl2.drawArraysInstanced(drawMode, offset, vertexCount, instanceCount);\n } else {\n this.gl.drawArrays(drawMode, offset, vertexCount);\n }\n });\n\n if (transformFeedback) {\n transformFeedback.end();\n }\n });\n return true;\n }\n\n setUniforms() {\n let uniforms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (log.priority >= 2) {\n checkUniformValues(uniforms, this.id, this._uniformSetters);\n }\n\n this.gl.useProgram(this.handle);\n\n for (const uniformName in uniforms) {\n const uniform = uniforms[uniformName];\n const uniformSetter = this._uniformSetters[uniformName];\n\n if (uniformSetter) {\n let value = uniform;\n let textureUpdate = false;\n\n if (value instanceof Framebuffer) {\n value = value.texture;\n }\n\n if (value instanceof Texture) {\n textureUpdate = this.uniforms[uniformName] !== uniform;\n\n if (textureUpdate) {\n if (uniformSetter.textureIndex === undefined) {\n uniformSetter.textureIndex = this._textureIndexCounter++;\n }\n\n const texture = value;\n const {\n textureIndex\n } = uniformSetter;\n texture.bind(textureIndex);\n value = textureIndex;\n this._textureUniforms[uniformName] = texture;\n } else {\n value = uniformSetter.textureIndex;\n }\n } else if (this._textureUniforms[uniformName]) {\n delete this._textureUniforms[uniformName];\n }\n\n if (uniformSetter(value) || textureUpdate) {\n copyUniform(this.uniforms, uniformName, uniform);\n }\n }\n }\n\n return this;\n }\n\n _areTexturesRenderable() {\n let texturesRenderable = true;\n\n for (const uniformName in this._textureUniforms) {\n const texture = this._textureUniforms[uniformName];\n texture.update();\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n\n return texturesRenderable;\n }\n\n _bindTextures() {\n for (const uniformName in this._textureUniforms) {\n const textureIndex = this._uniformSetters[uniformName].textureIndex;\n\n this._textureUniforms[uniformName].bind(textureIndex);\n }\n }\n\n _createHandle() {\n return this.gl.createProgram();\n }\n\n _deleteHandle() {\n this.gl.deleteProgram(this.handle);\n }\n\n _getOptionsFromHandle(handle) {\n const shaderHandles = this.gl.getAttachedShaders(handle);\n const opts = {};\n\n for (const shaderHandle of shaderHandles) {\n const type = this.gl.getShaderParameter(this.handle, 35663);\n\n switch (type) {\n case 35633:\n opts.vs = new VertexShader({\n handle: shaderHandle\n });\n break;\n\n case 35632:\n opts.fs = new FragmentShader({\n handle: shaderHandle\n });\n break;\n\n default:\n }\n }\n\n return opts;\n }\n\n _getParameter(pname) {\n return this.gl.getProgramParameter(this.handle, pname);\n }\n\n _setId(id) {\n if (!id) {\n const programName = this._getName();\n\n this.id = uid(programName);\n }\n }\n\n _getName() {\n let programName = this.vs.getName() || this.fs.getName();\n programName = programName.replace(/shader/i, '');\n programName = programName ? \"\".concat(programName, \"-program\") : 'program';\n return programName;\n }\n\n _compileAndLink() {\n const {\n gl\n } = this;\n gl.attachShader(this.handle, this.vs.handle);\n gl.attachShader(this.handle, this.fs.handle);\n log.time(LOG_PROGRAM_PERF_PRIORITY, \"linkProgram for \".concat(this._getName()))();\n gl.linkProgram(this.handle);\n log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, \"linkProgram for \".concat(this._getName()))();\n\n if (gl.debug || log.level > 0) {\n const linked = gl.getProgramParameter(this.handle, 35714);\n\n if (!linked) {\n throw new Error(\"Error linking: \".concat(gl.getProgramInfoLog(this.handle)));\n }\n\n gl.validateProgram(this.handle);\n const validated = gl.getProgramParameter(this.handle, 35715);\n\n if (!validated) {\n throw new Error(\"Error validating: \".concat(gl.getProgramInfoLog(this.handle)));\n }\n }\n }\n\n _readUniformLocationsFromLinkedProgram() {\n const {\n gl\n } = this;\n this._uniformSetters = {};\n this._uniformCount = this._getParameter(35718);\n\n for (let i = 0; i < this._uniformCount; i++) {\n const info = this.gl.getActiveUniform(this.handle, i);\n const {\n name\n } = parseUniformName(info.name);\n let location = gl.getUniformLocation(this.handle, name);\n this._uniformSetters[name] = getUniformSetter(gl, location, info);\n\n if (info.size > 1) {\n for (let l = 0; l < info.size; l++) {\n location = gl.getUniformLocation(this.handle, \"\".concat(name, \"[\").concat(l, \"]\"));\n this._uniformSetters[\"\".concat(name, \"[\").concat(l, \"]\")] = getUniformSetter(gl, location, info);\n }\n }\n }\n\n this._textureIndexCounter = 0;\n }\n\n getActiveUniforms(uniformIndices, pname) {\n return this.gl2.getActiveUniforms(this.handle, uniformIndices, pname);\n }\n\n getUniformBlockIndex(blockName) {\n return this.gl2.getUniformBlockIndex(this.handle, blockName);\n }\n\n getActiveUniformBlockParameter(blockIndex, pname) {\n return this.gl2.getActiveUniformBlockParameter(this.handle, blockIndex, pname);\n }\n\n uniformBlockBinding(blockIndex, blockBinding) {\n this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);\n }\n\n}\n//# sourceMappingURL=program.js.map","import GL from '@luma.gl/constants';\n\nimport Resource from './resource';\nimport Texture from './texture';\nimport Framebuffer from './framebuffer';\nimport {parseUniformName, getUniformSetter} from './uniforms';\nimport {VertexShader, FragmentShader} from './shader';\nimport ProgramConfiguration from './program-configuration';\nimport {copyUniform, checkUniformValues} from './uniforms';\n\nimport {isWebGL2, assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';\nimport {getKey} from '../webgl-utils/constants-to-keys';\nimport {getPrimitiveDrawMode} from '../webgl-utils/attribute-utils';\nimport {assert} from '../utils/assert';\nimport {uid} from '../utils/utils';\n\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\n\nconst GL_SEPARATE_ATTRIBS = 0x8c8d;\n\nconst V6_DEPRECATED_METHODS = [\n 'setVertexArray',\n 'setAttributes',\n 'setBuffers',\n 'unsetBuffers',\n\n 'use',\n 'getUniformCount',\n 'getUniformInfo',\n 'getUniformLocation',\n 'getUniformValue',\n\n 'getVarying',\n 'getFragDataLocation',\n 'getAttachedShaders',\n 'getAttributeCount',\n 'getAttributeLocation',\n 'getAttributeInfo'\n];\n\nexport default class Program extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Program';\n }\n constructor(gl, props = {}) {\n super(gl, props);\n\n this.stubRemovedMethods('Program', 'v6.0', V6_DEPRECATED_METHODS);\n\n // Experimental flag to avoid deleting Program object while it is cached\n this._isCached = false;\n\n this.initialize(props);\n\n Object.seal(this);\n\n this._setId(props.id);\n }\n\n initialize(props = {}) {\n const {hash, vs, fs, varyings, bufferMode = GL_SEPARATE_ATTRIBS} = props;\n\n this.hash = hash || ''; // Used by ProgramManager\n\n // Create shaders if needed\n this.vs =\n typeof vs === 'string' ? new VertexShader(this.gl, {id: `${props.id}-vs`, source: vs}) : vs;\n this.fs =\n typeof fs === 'string' ? new FragmentShader(this.gl, {id: `${props.id}-fs`, source: fs}) : fs;\n assert(this.vs instanceof VertexShader);\n assert(this.fs instanceof FragmentShader);\n\n // uniforms\n this.uniforms = {};\n\n this._textureUniforms = {};\n\n // Setup varyings if supplied\n if (varyings && varyings.length > 0) {\n assertWebGL2Context(this.gl);\n this.varyings = varyings;\n this.gl2.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n }\n\n this._compileAndLink();\n this._readUniformLocationsFromLinkedProgram();\n this.configuration = new ProgramConfiguration(this);\n\n return this.setProps(props);\n }\n\n delete(options = {}) {\n if (this._isCached) {\n // This object is cached, do not delete\n return this;\n }\n return super.delete(options);\n }\n\n setProps(props) {\n if ('uniforms' in props) {\n this.setUniforms(props.uniforms);\n }\n return this;\n }\n\n // A good thing about the WebGL API is that there are so many ways to draw things ;)\n // This function unifies those ways into a single call using common parameters with sane defaults\n draw({\n logPriority, // Probe log priority, enables Model to do more integrated logging\n\n drawMode = GL.TRIANGLES,\n vertexCount,\n offset = 0,\n start,\n end,\n isIndexed = false,\n indexType = GL.UNSIGNED_SHORT,\n instanceCount = 0,\n isInstanced = instanceCount > 0,\n\n vertexArray = null,\n transformFeedback,\n framebuffer,\n parameters = {},\n\n // Deprecated\n uniforms,\n samplers\n }) {\n if (uniforms || samplers) {\n // DEPRECATED: v7.0 (deprecated earlier but warning not properly implemented)\n log.deprecated('Program.draw({uniforms})', 'Program.setUniforms(uniforms)')();\n this.setUniforms(uniforms || {});\n }\n\n if (log.priority >= logPriority) {\n const fb = framebuffer ? framebuffer.id : 'default';\n const message =\n `mode=${getKey(this.gl, drawMode)} verts=${vertexCount} ` +\n `instances=${instanceCount} indexType=${getKey(this.gl, indexType)} ` +\n `isInstanced=${isInstanced} isIndexed=${isIndexed} ` +\n `Framebuffer=${fb}`;\n log.log(logPriority, message)();\n }\n\n // TODO - move vertex array binding and transform feedback binding to withParameters?\n assert(vertexArray);\n\n this.gl.useProgram(this.handle);\n\n if (\n // Note: async textures set as uniforms might still be loading.\n // Now that all uniforms have been updated, check if any texture\n // in the uniforms is not yet initialized, then we don't draw\n !this._areTexturesRenderable() ||\n // Avoid WebGL draw call when not rendering any data\n vertexCount === 0 ||\n (isInstanced && instanceCount === 0)\n ) {\n return false;\n }\n\n vertexArray.bindForDraw(vertexCount, instanceCount, () => {\n if (framebuffer !== undefined) {\n parameters = Object.assign({}, parameters, {framebuffer});\n }\n\n if (transformFeedback) {\n const primitiveMode = getPrimitiveDrawMode(drawMode);\n transformFeedback.begin(primitiveMode);\n }\n\n this._bindTextures();\n\n withParameters(this.gl, parameters, () => {\n // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension\n if (isIndexed && isInstanced) {\n this.gl2.drawElementsInstanced(drawMode, vertexCount, indexType, offset, instanceCount);\n } else if (isIndexed && isWebGL2(this.gl) && !isNaN(start) && !isNaN(end)) {\n this.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n } else if (isIndexed) {\n this.gl.drawElements(drawMode, vertexCount, indexType, offset);\n } else if (isInstanced) {\n this.gl2.drawArraysInstanced(drawMode, offset, vertexCount, instanceCount);\n } else {\n this.gl.drawArrays(drawMode, offset, vertexCount);\n }\n });\n\n if (transformFeedback) {\n transformFeedback.end();\n }\n });\n\n return true;\n }\n\n setUniforms(uniforms = {}) {\n if (log.priority >= 2) {\n checkUniformValues(uniforms, this.id, this._uniformSetters);\n }\n\n this.gl.useProgram(this.handle);\n\n for (const uniformName in uniforms) {\n const uniform = uniforms[uniformName];\n const uniformSetter = this._uniformSetters[uniformName];\n\n if (uniformSetter) {\n let value = uniform;\n let textureUpdate = false;\n\n if (value instanceof Framebuffer) {\n value = value.texture;\n }\n if (value instanceof Texture) {\n textureUpdate = this.uniforms[uniformName] !== uniform;\n\n if (textureUpdate) {\n // eslint-disable-next-line max-depth\n if (uniformSetter.textureIndex === undefined) {\n uniformSetter.textureIndex = this._textureIndexCounter++;\n }\n\n // Bind texture to index\n const texture = value;\n const {textureIndex} = uniformSetter;\n\n texture.bind(textureIndex);\n value = textureIndex;\n\n this._textureUniforms[uniformName] = texture;\n } else {\n value = uniformSetter.textureIndex;\n }\n } else if (this._textureUniforms[uniformName]) {\n delete this._textureUniforms[uniformName];\n }\n\n // NOTE(Tarek): uniformSetter returns whether\n // value had to be updated or not.\n if (uniformSetter(value) || textureUpdate) {\n copyUniform(this.uniforms, uniformName, uniform);\n }\n }\n }\n\n return this;\n }\n\n // PRIVATE METHODS\n\n // Checks if all texture-values uniforms are renderable (i.e. loaded)\n // Update a texture if needed (e.g. from video)\n // Note: This is currently done before every draw call\n _areTexturesRenderable() {\n let texturesRenderable = true;\n\n for (const uniformName in this._textureUniforms) {\n const texture = this._textureUniforms[uniformName];\n texture.update();\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n\n return texturesRenderable;\n }\n\n // Binds textures\n // Note: This is currently done before every draw call\n _bindTextures() {\n for (const uniformName in this._textureUniforms) {\n const textureIndex = this._uniformSetters[uniformName].textureIndex;\n this._textureUniforms[uniformName].bind(textureIndex);\n }\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createProgram();\n }\n\n _deleteHandle() {\n this.gl.deleteProgram(this.handle);\n }\n\n // Extract opts needed to initialize a `Program` from an independently created WebGLProgram handle\n _getOptionsFromHandle(handle) {\n const shaderHandles = this.gl.getAttachedShaders(handle);\n const opts = {};\n for (const shaderHandle of shaderHandles) {\n const type = this.gl.getShaderParameter(this.handle, GL.SHADER_TYPE);\n switch (type) {\n case GL.VERTEX_SHADER:\n // @ts-ignore\n opts.vs = new VertexShader({handle: shaderHandle});\n break;\n case GL.FRAGMENT_SHADER:\n // @ts-ignore\n opts.fs = new FragmentShader({handle: shaderHandle});\n break;\n default:\n }\n }\n return opts;\n }\n\n _getParameter(pname) {\n return this.gl.getProgramParameter(this.handle, pname);\n }\n\n // If program is not named, name it after shader names\n // TODO - this.id will already have been initialized\n _setId(id) {\n if (!id) {\n const programName = this._getName();\n this.id = uid(programName);\n }\n }\n\n // Generate a default name for the program based on names of the shaders\n _getName() {\n let programName = this.vs.getName() || this.fs.getName();\n programName = programName.replace(/shader/i, '');\n programName = programName ? `${programName}-program` : 'program';\n return programName;\n }\n\n _compileAndLink() {\n const {gl} = this;\n gl.attachShader(this.handle, this.vs.handle);\n gl.attachShader(this.handle, this.fs.handle);\n log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this._getName()}`)();\n gl.linkProgram(this.handle);\n log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this._getName()}`)();\n\n // Avoid checking program linking error in production\n // @ts-ignore\n if (gl.debug || log.level > 0) {\n const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);\n if (!linked) {\n throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);\n }\n\n gl.validateProgram(this.handle);\n const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);\n if (!validated) {\n throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);\n }\n }\n }\n\n // query uniform locations and build name to setter map.\n // TODO - This overlaps with ProgramConfiguration?\n _readUniformLocationsFromLinkedProgram() {\n const {gl} = this;\n this._uniformSetters = {};\n this._uniformCount = this._getParameter(GL.ACTIVE_UNIFORMS);\n for (let i = 0; i < this._uniformCount; i++) {\n const info = this.gl.getActiveUniform(this.handle, i);\n const {name} = parseUniformName(info.name);\n let location = gl.getUniformLocation(this.handle, name);\n this._uniformSetters[name] = getUniformSetter(gl, location, info);\n if (info.size > 1) {\n for (let l = 0; l < info.size; l++) {\n location = gl.getUniformLocation(this.handle, `${name}[${l}]`);\n this._uniformSetters[`${name}[${l}]`] = getUniformSetter(gl, location, info);\n }\n }\n }\n this._textureIndexCounter = 0;\n }\n\n // TO BE REMOVED in v7?\n\n // Rretrieves information about active uniforms identifed by their indices (`uniformIndices`)\n // https://\n // developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/getActiveUniforms\n getActiveUniforms(uniformIndices, pname) {\n return this.gl2.getActiveUniforms(this.handle, uniformIndices, pname);\n }\n\n // Retrieves the index of a uniform block\n getUniformBlockIndex(blockName) {\n return this.gl2.getUniformBlockIndex(this.handle, blockName);\n }\n\n // Retrieves information about an active uniform block (`blockIndex`)\n // https://\n // developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/getActiveUniformBlockParameter\n getActiveUniformBlockParameter(blockIndex, pname) {\n return this.gl2.getActiveUniformBlockParameter(this.handle, blockIndex, pname);\n }\n\n // Binds a uniform block (`blockIndex`) to a specific binding point (`blockBinding`)\n uniformBlockBinding(blockIndex, blockBinding) {\n this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);\n }\n}\n","import { log } from '@luma.gl/gltools';\nimport Framebuffer from './framebuffer';\nimport Renderbuffer from './renderbuffer';\nimport Texture from './texture';\nimport { assert } from '../utils/assert';\nconst UNIFORM_SETTERS = {\n [5126]: getArraySetter.bind(null, 'uniform1fv', toFloatArray, 1, setVectorUniform),\n [35664]: getArraySetter.bind(null, 'uniform2fv', toFloatArray, 2, setVectorUniform),\n [35665]: getArraySetter.bind(null, 'uniform3fv', toFloatArray, 3, setVectorUniform),\n [35666]: getArraySetter.bind(null, 'uniform4fv', toFloatArray, 4, setVectorUniform),\n [5124]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),\n [35667]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),\n [35668]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),\n [35669]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),\n [35670]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),\n [35671]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),\n [35672]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),\n [35673]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),\n [35674]: getArraySetter.bind(null, 'uniformMatrix2fv', toFloatArray, 4, setMatrixUniform),\n [35675]: getArraySetter.bind(null, 'uniformMatrix3fv', toFloatArray, 9, setMatrixUniform),\n [35676]: getArraySetter.bind(null, 'uniformMatrix4fv', toFloatArray, 16, setMatrixUniform),\n [35678]: getSamplerSetter,\n [35680]: getSamplerSetter,\n [5125]: getArraySetter.bind(null, 'uniform1uiv', toUIntArray, 1, setVectorUniform),\n [36294]: getArraySetter.bind(null, 'uniform2uiv', toUIntArray, 2, setVectorUniform),\n [36295]: getArraySetter.bind(null, 'uniform3uiv', toUIntArray, 3, setVectorUniform),\n [36296]: getArraySetter.bind(null, 'uniform4uiv', toUIntArray, 4, setVectorUniform),\n [35685]: getArraySetter.bind(null, 'uniformMatrix2x3fv', toFloatArray, 6, setMatrixUniform),\n [35686]: getArraySetter.bind(null, 'uniformMatrix2x4fv', toFloatArray, 8, setMatrixUniform),\n [35687]: getArraySetter.bind(null, 'uniformMatrix3x2fv', toFloatArray, 6, setMatrixUniform),\n [35688]: getArraySetter.bind(null, 'uniformMatrix3x4fv', toFloatArray, 12, setMatrixUniform),\n [35689]: getArraySetter.bind(null, 'uniformMatrix4x2fv', toFloatArray, 8, setMatrixUniform),\n [35690]: getArraySetter.bind(null, 'uniformMatrix4x3fv', toFloatArray, 12, setMatrixUniform),\n [35678]: getSamplerSetter,\n [35680]: getSamplerSetter,\n [35679]: getSamplerSetter,\n [35682]: getSamplerSetter,\n [36289]: getSamplerSetter,\n [36292]: getSamplerSetter,\n [36293]: getSamplerSetter,\n [36298]: getSamplerSetter,\n [36299]: getSamplerSetter,\n [36300]: getSamplerSetter,\n [36303]: getSamplerSetter,\n [36306]: getSamplerSetter,\n [36307]: getSamplerSetter,\n [36308]: getSamplerSetter,\n [36311]: getSamplerSetter\n};\nconst FLOAT_ARRAY = {};\nconst INT_ARRAY = {};\nconst UINT_ARRAY = {};\nconst array1 = [0];\n\nfunction toTypedArray(value, uniformLength, Type, cache) {\n if (uniformLength === 1 && typeof value === 'boolean') {\n value = value ? 1 : 0;\n }\n\n if (Number.isFinite(value)) {\n array1[0] = value;\n value = array1;\n }\n\n const length = value.length;\n\n if (length % uniformLength) {\n log.warn(\"Uniform size should be multiples of \".concat(uniformLength), value)();\n }\n\n if (value instanceof Type) {\n return value;\n }\n\n let result = cache[length];\n\n if (!result) {\n result = new Type(length);\n cache[length] = result;\n }\n\n for (let i = 0; i < length; i++) {\n result[i] = value[i];\n }\n\n return result;\n}\n\nfunction toFloatArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Float32Array, FLOAT_ARRAY);\n}\n\nfunction toIntArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Int32Array, INT_ARRAY);\n}\n\nfunction toUIntArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Uint32Array, UINT_ARRAY);\n}\n\nexport function getUniformSetter(gl, location, info) {\n const setter = UNIFORM_SETTERS[info.type];\n\n if (!setter) {\n throw new Error(\"Unknown GLSL uniform type \".concat(info.type));\n }\n\n return setter().bind(null, gl, location);\n}\nexport function parseUniformName(name) {\n if (name[name.length - 1] !== ']') {\n return {\n name,\n length: 1,\n isArray: false\n };\n }\n\n const UNIFORM_NAME_REGEXP = /([^[]*)(\\[[0-9]+\\])?/;\n const matches = name.match(UNIFORM_NAME_REGEXP);\n\n if (!matches || matches.length < 2) {\n throw new Error(\"Failed to parse GLSL uniform name \".concat(name));\n }\n\n return {\n name: matches[1],\n length: matches[2] || 1,\n isArray: Boolean(matches[2])\n };\n}\nexport function checkUniformValues(uniforms, source, uniformMap) {\n for (const uniformName in uniforms) {\n const value = uniforms[uniformName];\n const shouldCheck = !uniformMap || Boolean(uniformMap[uniformName]);\n\n if (shouldCheck && !checkUniformValue(value)) {\n source = source ? \"\".concat(source, \" \") : '';\n console.error(\"\".concat(source, \" Bad uniform \").concat(uniformName), value);\n throw new Error(\"\".concat(source, \" Bad uniform \").concat(uniformName));\n }\n }\n\n return true;\n}\n\nfunction checkUniformValue(value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return checkUniformArray(value);\n }\n\n if (isFinite(value)) {\n return true;\n } else if (value === true || value === false) {\n return true;\n } else if (value instanceof Texture) {\n return true;\n } else if (value instanceof Renderbuffer) {\n return true;\n } else if (value instanceof Framebuffer) {\n return Boolean(value.texture);\n }\n\n return false;\n}\n\nexport function copyUniform(uniforms, key, value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n if (uniforms[key]) {\n const dest = uniforms[key];\n\n for (let i = 0, len = value.length; i < len; ++i) {\n dest[i] = value[i];\n }\n } else {\n uniforms[key] = value.slice();\n }\n } else {\n uniforms[key] = value;\n }\n}\n\nfunction checkUniformArray(value) {\n if (value.length === 0) {\n return false;\n }\n\n const checkLength = Math.min(value.length, 16);\n\n for (let i = 0; i < checkLength; ++i) {\n if (!Number.isFinite(value[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getSamplerSetter() {\n let cache = null;\n return (gl, location, value) => {\n const update = cache !== value;\n\n if (update) {\n gl.uniform1i(location, value);\n cache = value;\n }\n\n return update;\n };\n}\n\nfunction getArraySetter(functionName, toArray, size, uniformSetter) {\n let cache = null;\n let cacheLength = null;\n return (gl, location, value) => {\n const arrayValue = toArray(value, size);\n const length = arrayValue.length;\n let update = false;\n\n if (cache === null) {\n cache = new Float32Array(length);\n cacheLength = length;\n update = true;\n } else {\n assert(cacheLength === length, 'Uniform length cannot change.');\n\n for (let i = 0; i < length; ++i) {\n if (arrayValue[i] !== cache[i]) {\n update = true;\n break;\n }\n }\n }\n\n if (update) {\n uniformSetter(gl, functionName, location, arrayValue);\n cache.set(arrayValue);\n }\n\n return update;\n };\n}\n\nfunction setVectorUniform(gl, functionName, location, value) {\n gl[functionName](location, value);\n}\n\nfunction setMatrixUniform(gl, functionName, location, value) {\n gl[functionName](location, false, value);\n}\n//# sourceMappingURL=uniforms.js.map","/** @typedef {import('./uniforms')} types */\n\nimport GL from '@luma.gl/constants';\nimport {log} from '@luma.gl/gltools';\n\nimport Framebuffer from './framebuffer';\nimport Renderbuffer from './renderbuffer';\nimport Texture from './texture';\nimport {assert} from '../utils/assert';\n\nconst UNIFORM_SETTERS = {\n // WEBGL1\n\n /* eslint-disable max-len */\n [GL.FLOAT]: getArraySetter.bind(null, 'uniform1fv', toFloatArray, 1, setVectorUniform),\n [GL.FLOAT_VEC2]: getArraySetter.bind(null, 'uniform2fv', toFloatArray, 2, setVectorUniform),\n [GL.FLOAT_VEC3]: getArraySetter.bind(null, 'uniform3fv', toFloatArray, 3, setVectorUniform),\n [GL.FLOAT_VEC4]: getArraySetter.bind(null, 'uniform4fv', toFloatArray, 4, setVectorUniform),\n\n [GL.INT]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),\n [GL.INT_VEC2]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),\n [GL.INT_VEC3]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),\n [GL.INT_VEC4]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),\n\n [GL.BOOL]: getArraySetter.bind(null, 'uniform1iv', toIntArray, 1, setVectorUniform),\n [GL.BOOL_VEC2]: getArraySetter.bind(null, 'uniform2iv', toIntArray, 2, setVectorUniform),\n [GL.BOOL_VEC3]: getArraySetter.bind(null, 'uniform3iv', toIntArray, 3, setVectorUniform),\n [GL.BOOL_VEC4]: getArraySetter.bind(null, 'uniform4iv', toIntArray, 4, setVectorUniform),\n\n // uniformMatrix(false): don't transpose the matrix\n [GL.FLOAT_MAT2]: getArraySetter.bind(null, 'uniformMatrix2fv', toFloatArray, 4, setMatrixUniform),\n [GL.FLOAT_MAT3]: getArraySetter.bind(null, 'uniformMatrix3fv', toFloatArray, 9, setMatrixUniform),\n [GL.FLOAT_MAT4]: getArraySetter.bind(\n null,\n 'uniformMatrix4fv',\n toFloatArray,\n 16,\n setMatrixUniform\n ),\n\n [GL.SAMPLER_2D]: getSamplerSetter,\n [GL.SAMPLER_CUBE]: getSamplerSetter,\n\n // WEBGL2 - unsigned integers, irregular matrices, additional texture samplers\n\n [GL.UNSIGNED_INT]: getArraySetter.bind(null, 'uniform1uiv', toUIntArray, 1, setVectorUniform),\n [GL.UNSIGNED_INT_VEC2]: getArraySetter.bind(\n null,\n 'uniform2uiv',\n toUIntArray,\n 2,\n setVectorUniform\n ),\n [GL.UNSIGNED_INT_VEC3]: getArraySetter.bind(\n null,\n 'uniform3uiv',\n toUIntArray,\n 3,\n setVectorUniform\n ),\n [GL.UNSIGNED_INT_VEC4]: getArraySetter.bind(\n null,\n 'uniform4uiv',\n toUIntArray,\n 4,\n setVectorUniform\n ),\n\n // uniformMatrix(false): don't transpose the matrix\n [GL.FLOAT_MAT2x3]: getArraySetter.bind(\n null,\n 'uniformMatrix2x3fv',\n toFloatArray,\n 6,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT2x4]: getArraySetter.bind(\n null,\n 'uniformMatrix2x4fv',\n toFloatArray,\n 8,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT3x2]: getArraySetter.bind(\n null,\n 'uniformMatrix3x2fv',\n toFloatArray,\n 6,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT3x4]: getArraySetter.bind(\n null,\n 'uniformMatrix3x4fv',\n toFloatArray,\n 12,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT4x2]: getArraySetter.bind(\n null,\n 'uniformMatrix4x2fv',\n toFloatArray,\n 8,\n setMatrixUniform\n ),\n [GL.FLOAT_MAT4x3]: getArraySetter.bind(\n null,\n 'uniformMatrix4x3fv',\n toFloatArray,\n 12,\n setMatrixUniform\n ),\n\n [GL.SAMPLER_2D]: getSamplerSetter,\n [GL.SAMPLER_CUBE]: getSamplerSetter,\n\n [GL.SAMPLER_3D]: getSamplerSetter,\n [GL.SAMPLER_2D_SHADOW]: getSamplerSetter,\n [GL.SAMPLER_2D_ARRAY]: getSamplerSetter,\n [GL.SAMPLER_2D_ARRAY_SHADOW]: getSamplerSetter,\n [GL.SAMPLER_CUBE_SHADOW]: getSamplerSetter,\n [GL.INT_SAMPLER_2D]: getSamplerSetter,\n [GL.INT_SAMPLER_3D]: getSamplerSetter,\n [GL.INT_SAMPLER_CUBE]: getSamplerSetter,\n [GL.INT_SAMPLER_2D_ARRAY]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_2D]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_3D]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_CUBE]: getSamplerSetter,\n [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: getSamplerSetter\n /* eslint-enable max-len */\n};\n\n// Pre-allocated typed arrays for temporary conversion\nconst FLOAT_ARRAY = {};\nconst INT_ARRAY = {};\nconst UINT_ARRAY = {};\n\nconst array1 = [0];\n\n// Functions to ensure the type of uniform values\n// This is done because uniform*v functions\n// are extremely slow when consuming JS arrays directly.\nfunction toTypedArray(value, uniformLength, Type, cache) {\n // convert boolean uniforms to Number\n if (uniformLength === 1 && typeof value === 'boolean') {\n value = value ? 1 : 0;\n }\n if (Number.isFinite(value)) {\n array1[0] = value;\n value = array1;\n }\n const length = value.length;\n if (length % uniformLength) {\n log.warn(`Uniform size should be multiples of ${uniformLength}`, value)();\n }\n\n if (value instanceof Type) {\n return value;\n }\n let result = cache[length];\n if (!result) {\n result = new Type(length);\n cache[length] = result;\n }\n for (let i = 0; i < length; i++) {\n result[i] = value[i];\n }\n return result;\n}\n\nfunction toFloatArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Float32Array, FLOAT_ARRAY);\n}\n\nfunction toIntArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Int32Array, INT_ARRAY);\n}\n\nfunction toUIntArray(value, uniformLength) {\n return toTypedArray(value, uniformLength, Uint32Array, UINT_ARRAY);\n} // Returns a Magic Uniform Setter\n\n// PUBLIC API\n\n/** @type {types['getUniformSetter']} */ export function getUniformSetter(gl, location, info) {\n const setter = UNIFORM_SETTERS[info.type];\n if (!setter) {\n throw new Error(`Unknown GLSL uniform type ${info.type}`);\n }\n\n // NOTE(Tarek): This construction is the ensure\n // separate caches for all setters.\n return setter().bind(null, gl, location);\n}\n\n/** @type {types['parseUniformName']} */\nexport function parseUniformName(name) {\n // Shortcut to avoid redundant or bad matches\n if (name[name.length - 1] !== ']') {\n return {\n name,\n length: 1,\n isArray: false\n };\n }\n\n // if array name then clean the array brackets\n const UNIFORM_NAME_REGEXP = /([^[]*)(\\[[0-9]+\\])?/;\n const matches = name.match(UNIFORM_NAME_REGEXP);\n if (!matches || matches.length < 2) {\n throw new Error(`Failed to parse GLSL uniform name ${name}`);\n }\n\n return {\n name: matches[1],\n length: matches[2] || 1,\n isArray: Boolean(matches[2])\n };\n} // To facilitate early detection of e.g. undefined values in JavaScript\n\n// Basic checks of uniform values (with or without knowledge of program)\n\n/** @type {types['checkUniformValues']} */\nexport function checkUniformValues(uniforms, source, uniformMap) {\n for (const uniformName in uniforms) {\n const value = uniforms[uniformName];\n const shouldCheck = !uniformMap || Boolean(uniformMap[uniformName]);\n if (shouldCheck && !checkUniformValue(value)) {\n // Add space to source\n source = source ? `${source} ` : '';\n // Value could be unprintable so write the object on console\n console.error(`${source} Bad uniform ${uniformName}`, value); // eslint-disable-line\n /* eslint-enable no-console */\n throw new Error(`${source} Bad uniform ${uniformName}`);\n }\n }\n return true;\n}\n\n// TODO use type information during validation\nfunction checkUniformValue(value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return checkUniformArray(value);\n }\n\n // Check if single value is a number\n if (isFinite(value)) {\n return true;\n } else if (value === true || value === false) {\n return true;\n } else if (value instanceof Texture) {\n return true;\n } else if (value instanceof Renderbuffer) {\n return true;\n } else if (value instanceof Framebuffer) {\n return Boolean(value.texture);\n }\n return false;\n}\n\n/** @type {types['copyUniform']} */\nexport function copyUniform(uniforms, key, value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n if (uniforms[key]) {\n const dest = uniforms[key];\n // @ts-ignore\n for (let i = 0, len = value.length; i < len; ++i) {\n dest[i] = value[i];\n }\n } else {\n // @ts-ignore\n uniforms[key] = value.slice();\n }\n } else {\n uniforms[key] = value;\n }\n}\n\n// HELPERS\n\nfunction checkUniformArray(value) {\n // Check that every element in array is a number, and at least 1 element\n if (value.length === 0) {\n return false;\n }\n\n const checkLength = Math.min(value.length, 16);\n\n for (let i = 0; i < checkLength; ++i) {\n if (!Number.isFinite(value[i])) {\n return false;\n }\n }\n\n return true;\n}\n\n// NOTE(Tarek): Setters maintain a cache\n// of the previously set value, and\n// avoid resetting it if it's the same.\nfunction getSamplerSetter() {\n let cache = null;\n return (gl, location, value) => {\n const update = cache !== value;\n if (update) {\n gl.uniform1i(location, value);\n cache = value;\n }\n\n return update;\n };\n}\n\nfunction getArraySetter(functionName, toArray, size, uniformSetter) {\n let cache = null;\n let cacheLength = null;\n return (gl, location, value) => {\n const arrayValue = toArray(value, size);\n const length = arrayValue.length;\n let update = false;\n if (cache === null) {\n cache = new Float32Array(length);\n cacheLength = length;\n update = true;\n } else {\n assert(cacheLength === length, 'Uniform length cannot change.');\n for (let i = 0; i < length; ++i) {\n if (arrayValue[i] !== cache[i]) {\n update = true;\n break;\n }\n }\n }\n if (update) {\n uniformSetter(gl, functionName, location, arrayValue);\n cache.set(arrayValue);\n }\n\n return update;\n };\n}\n\nfunction setVectorUniform(gl, functionName, location, value) {\n gl[functionName](location, value);\n}\n\nfunction setMatrixUniform(gl, functionName, location, value) {\n gl[functionName](location, false, value);\n}\n","import { assertWebGLContext, log } from '@luma.gl/gltools';\nimport { parseGLSLCompilerError, getShaderName } from '../glsl-utils';\nimport { assert } from '../utils/assert';\nimport { uid } from '../utils/utils';\nimport Resource from './resource';\nconst ERR_SOURCE = 'Shader: GLSL source code must be a JavaScript string';\nexport class Shader extends Resource {\n get [Symbol.toStringTag]() {\n return 'Shader';\n }\n\n static getTypeName(shaderType) {\n switch (shaderType) {\n case 35633:\n return 'vertex-shader';\n\n case 35632:\n return 'fragment-shader';\n\n default:\n assert(false);\n return 'unknown';\n }\n }\n\n constructor(gl, props) {\n assertWebGLContext(gl);\n assert(typeof props.source === 'string', ERR_SOURCE);\n const id = getShaderName(props.source, null) || props.id || uid(\"unnamed \".concat(Shader.getTypeName(props.shaderType)));\n super(gl, {\n id\n });\n this.shaderType = props.shaderType;\n this.source = props.source;\n this.initialize(props);\n }\n\n initialize(_ref) {\n let {\n source\n } = _ref;\n const shaderName = getShaderName(source, null);\n\n if (shaderName) {\n this.id = uid(shaderName);\n }\n\n this._compile(source);\n }\n\n getParameter(pname) {\n return this.gl.getShaderParameter(this.handle, pname);\n }\n\n toString() {\n return \"\".concat(Shader.getTypeName(this.shaderType), \":\").concat(this.id);\n }\n\n getName() {\n return getShaderName(this.source) || 'unnamed-shader';\n }\n\n getSource() {\n return this.gl.getShaderSource(this.handle);\n }\n\n getTranslatedSource() {\n const extension = this.gl.getExtension('WEBGL_debug_shaders');\n return extension ? extension.getTranslatedShaderSource(this.handle) : 'No translated source available. WEBGL_debug_shaders not implemented';\n }\n\n _compile() {\n let source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.source;\n\n if (!source.startsWith('#version ')) {\n source = \"#version 100\\n\".concat(source);\n }\n\n this.source = source;\n this.gl.shaderSource(this.handle, this.source);\n this.gl.compileShader(this.handle);\n const compileStatus = this.getParameter(35713);\n\n if (!compileStatus) {\n const infoLog = this.gl.getShaderInfoLog(this.handle);\n const {\n shaderName,\n errors,\n warnings\n } = parseGLSLCompilerError(infoLog, this.source, this.shaderType, this.id);\n log.error(\"GLSL compilation errors in \".concat(shaderName, \"\\n\").concat(errors))();\n log.warn(\"GLSL compilation warnings in \".concat(shaderName, \"\\n\").concat(warnings))();\n throw new Error(\"GLSL compilation errors in \".concat(shaderName));\n }\n }\n\n _deleteHandle() {\n this.gl.deleteShader(this.handle);\n }\n\n _getOptsFromHandle() {\n return {\n type: this.getParameter(35663),\n source: this.getSource()\n };\n }\n\n}\nexport class VertexShader extends Shader {\n get [Symbol.toStringTag]() {\n return 'VertexShader';\n }\n\n constructor(gl, props) {\n if (typeof props === 'string') {\n props = {\n source: props\n };\n }\n\n super(gl, Object.assign({}, props, {\n shaderType: 35633\n }));\n }\n\n _createHandle() {\n return this.gl.createShader(35633);\n }\n\n}\nexport class FragmentShader extends Shader {\n get [Symbol.toStringTag]() {\n return 'FragmentShader';\n }\n\n constructor(gl, props) {\n if (typeof props === 'string') {\n props = {\n source: props\n };\n }\n\n super(gl, Object.assign({}, props, {\n shaderType: 35632\n }));\n }\n\n _createHandle() {\n return this.gl.createShader(35632);\n }\n\n}\n//# sourceMappingURL=shader.js.map","import GL from '@luma.gl/constants';\nimport {assertWebGLContext, log} from '@luma.gl/gltools';\nimport {parseGLSLCompilerError, getShaderName} from '../glsl-utils';\nimport {assert} from '../utils/assert';\nimport {uid} from '../utils/utils';\nimport Resource from './resource';\n\nconst ERR_SOURCE = 'Shader: GLSL source code must be a JavaScript string';\n\n// For now this is an internal class\nexport class Shader extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Shader';\n }\n\n static getTypeName(shaderType) {\n switch (shaderType) {\n case GL.VERTEX_SHADER:\n return 'vertex-shader';\n case GL.FRAGMENT_SHADER:\n return 'fragment-shader';\n default:\n assert(false);\n return 'unknown';\n }\n }\n\n /* eslint-disable max-statements */\n constructor(gl, props) {\n assertWebGLContext(gl);\n\n // Validate arguments\n assert(typeof props.source === 'string', ERR_SOURCE);\n\n // Deduce an id, from shader source, or supplied id, or shader type\n const id =\n getShaderName(props.source, null) ||\n props.id ||\n uid(`unnamed ${Shader.getTypeName(props.shaderType)}`);\n\n super(gl, {id});\n\n this.shaderType = props.shaderType;\n this.source = props.source;\n\n this.initialize(props);\n }\n\n initialize({source}) {\n const shaderName = getShaderName(source, null);\n if (shaderName) {\n this.id = uid(shaderName);\n }\n this._compile(source);\n }\n\n // Accessors\n\n getParameter(pname) {\n return this.gl.getShaderParameter(this.handle, pname);\n }\n\n toString() {\n return `${Shader.getTypeName(this.shaderType)}:${this.id}`;\n }\n\n getName() {\n return getShaderName(this.source) || 'unnamed-shader';\n }\n\n getSource() {\n return this.gl.getShaderSource(this.handle);\n }\n\n // Debug method - Returns translated source if available\n getTranslatedSource() {\n const extension = this.gl.getExtension('WEBGL_debug_shaders');\n return extension\n ? extension.getTranslatedShaderSource(this.handle)\n : 'No translated source available. WEBGL_debug_shaders not implemented';\n }\n\n // PRIVATE METHODS\n _compile(source = this.source) {\n if (!source.startsWith('#version ')) {\n source = `#version 100\\n${source}`;\n }\n this.source = source;\n this.gl.shaderSource(this.handle, this.source);\n this.gl.compileShader(this.handle);\n\n // TODO - For performance reasons, avoid checking shader compilation errors on production?\n // TODO - Load log even when no error reported, to catch warnings?\n // https://gamedev.stackexchange.com/questions/30429/how-to-detect-glsl-warnings\n const compileStatus = this.getParameter(GL.COMPILE_STATUS);\n if (!compileStatus) {\n const infoLog = this.gl.getShaderInfoLog(this.handle);\n const {shaderName, errors, warnings} = parseGLSLCompilerError(\n infoLog,\n this.source,\n this.shaderType,\n this.id\n );\n log.error(`GLSL compilation errors in ${shaderName}\\n${errors}`)();\n log.warn(`GLSL compilation warnings in ${shaderName}\\n${warnings}`)();\n throw new Error(`GLSL compilation errors in ${shaderName}`);\n }\n }\n\n _deleteHandle() {\n this.gl.deleteShader(this.handle);\n }\n\n _getOptsFromHandle() {\n return {\n type: this.getParameter(GL.SHADER_TYPE),\n source: this.getSource()\n };\n }\n}\n\nexport class VertexShader extends Shader {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'VertexShader';\n }\n\n constructor(gl, props) {\n // Signature: new VertexShader(gl, source)\n if (typeof props === 'string') {\n props = {source: props};\n }\n super(gl, Object.assign({}, props, {shaderType: GL.VERTEX_SHADER}));\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createShader(GL.VERTEX_SHADER);\n }\n}\n\nexport class FragmentShader extends Shader {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'FragmentShader';\n }\n constructor(gl, props) {\n // Signature: new FragmentShader(gl, source)\n if (typeof props === 'string') {\n props = {source: props};\n }\n\n super(gl, Object.assign({}, props, {shaderType: GL.FRAGMENT_SHADER}));\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createShader(GL.FRAGMENT_SHADER);\n }\n}\n","export default function getShaderName(shader) {\n let defaultName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'unnamed';\n const SHADER_NAME_REGEXP = /#define[\\s*]SHADER_NAME[\\s*]([A-Za-z0-9_-]+)[\\s*]/;\n const match = shader.match(SHADER_NAME_REGEXP);\n return match ? match[1] : defaultName;\n}\n//# sourceMappingURL=get-shader-name.js.map","// Supports GLSLIFY style naming of shaders\n// #define SHADER_NAME ...\nexport default function getShaderName(shader, defaultName = 'unnamed') {\n const SHADER_NAME_REGEXP = /#define[\\s*]SHADER_NAME[\\s*]([A-Za-z0-9_-]+)[\\s*]/;\n const match = shader.match(SHADER_NAME_REGEXP);\n return match ? match[1] : defaultName;\n}\n","import getShaderName from './get-shader-name';\nimport getShaderTypeName from './get-shader-type-name';\nexport default function formatGLSLCompilerError(errLog, src, shaderType) {\n const {\n shaderName,\n errors,\n warnings\n } = parseGLSLCompilerError(errLog, src, shaderType);\n return \"GLSL compilation error in \".concat(shaderName, \"\\n\\n\").concat(errors, \"\\n\").concat(warnings);\n}\nexport function parseGLSLCompilerError(errLog, src, shaderType, shaderName) {\n const errorStrings = errLog.split(/\\r?\\n/);\n const errors = {};\n const warnings = {};\n const name = shaderName || getShaderName(src) || '(unnamed)';\n const shaderDescription = \"\".concat(getShaderTypeName(shaderType), \" shader \").concat(name);\n\n for (let i = 0; i < errorStrings.length; i++) {\n const errorString = errorStrings[i];\n\n if (errorString.length <= 1) {\n continue;\n }\n\n const segments = errorString.split(':');\n const type = segments[0];\n const line = parseInt(segments[2], 10);\n\n if (isNaN(line)) {\n throw new Error(\"GLSL compilation error in \".concat(shaderDescription, \": \").concat(errLog));\n }\n\n if (type !== 'WARNING') {\n errors[line] = errorString;\n } else {\n warnings[line] = errorString;\n }\n }\n\n const lines = addLineNumbers(src);\n return {\n shaderName: shaderDescription,\n errors: formatErrors(errors, lines),\n warnings: formatErrors(warnings, lines)\n };\n}\n\nfunction formatErrors(errors, lines) {\n let message = '';\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n if (!errors[i + 3] && !errors[i + 2] && !errors[i + 1]) {\n continue;\n }\n\n message += \"\".concat(line, \"\\n\");\n\n if (errors[i + 1]) {\n const error = errors[i + 1];\n const segments = error.split(':', 3);\n const type = segments[0];\n const column = parseInt(segments[1], 10) || 0;\n const err = error.substring(segments.join(':').length + 1).trim();\n message += padLeft(\"^^^ \".concat(type, \": \").concat(err, \"\\n\\n\"), column);\n }\n }\n\n return message;\n}\n\nfunction addLineNumbers(string) {\n let start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n let delim = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ': ';\n const lines = string.split(/\\r?\\n/);\n const maxDigits = String(lines.length + start - 1).length;\n return lines.map((line, i) => {\n const lineNumber = String(i + start);\n const digits = lineNumber.length;\n const prefix = padLeft(lineNumber, maxDigits - digits);\n return prefix + delim + line;\n });\n}\n\nfunction padLeft(string, digits) {\n let result = '';\n\n for (let i = 0; i < digits; ++i) {\n result += ' ';\n }\n\n return \"\".concat(result).concat(string);\n}\n//# sourceMappingURL=format-glsl-error.js.map","// TODO - formatGLSLCompilerError should not depend on this\nimport getShaderName from './get-shader-name';\nimport getShaderTypeName from './get-shader-type-name';\n\n// Formats GLSL compiler error log into single string\nexport default function formatGLSLCompilerError(errLog, src, shaderType) {\n const {shaderName, errors, warnings} = parseGLSLCompilerError(errLog, src, shaderType);\n return `GLSL compilation error in ${shaderName}\\n\\n${errors}\\n${warnings}`;\n}\n\n/**\n * Parse a GLSL compiler error log into a string showing the source code around each error.\n * Based on https://github.com/wwwtyro/gl-format-compiler-error (public domain)\n */\n/* eslint-disable no-continue, max-statements */\nexport function parseGLSLCompilerError(errLog, src, shaderType, shaderName) {\n const errorStrings = errLog.split(/\\r?\\n/);\n const errors = {};\n const warnings = {};\n\n // Patch the shader name\n const name = shaderName || getShaderName(src) || '(unnamed)';\n const shaderDescription = `${getShaderTypeName(shaderType)} shader ${name}`;\n\n // Parse the error - note: browser and driver dependent\n for (let i = 0; i < errorStrings.length; i++) {\n const errorString = errorStrings[i];\n if (errorString.length <= 1) {\n continue;\n }\n const segments = errorString.split(':');\n const type = segments[0];\n const line = parseInt(segments[2], 10);\n if (isNaN(line)) {\n throw new Error(`GLSL compilation error in ${shaderDescription}: ${errLog}`);\n }\n if (type !== 'WARNING') {\n errors[line] = errorString;\n } else {\n warnings[line] = errorString;\n }\n }\n\n // Format the error inline with the code\n const lines = addLineNumbers(src);\n\n return {\n shaderName: shaderDescription,\n errors: formatErrors(errors, lines),\n warnings: formatErrors(warnings, lines)\n };\n}\n\n// helper function, outputs annotated errors or warnings\nfunction formatErrors(errors, lines) {\n let message = '';\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (!errors[i + 3] && !errors[i + 2] && !errors[i + 1]) {\n continue;\n }\n message += `${line}\\n`;\n if (errors[i + 1]) {\n const error = errors[i + 1];\n const segments = error.split(':', 3);\n const type = segments[0];\n const column = parseInt(segments[1], 10) || 0;\n const err = error.substring(segments.join(':').length + 1).trim();\n message += padLeft(`^^^ ${type}: ${err}\\n\\n`, column);\n }\n }\n return message;\n}\n\n/**\n * Prepends line numbers to each line of a string.\n * The line numbers will be left-padded with spaces to ensure an\n * aligned layout when rendered using monospace fonts.\n * @param {String} string - multi-line string to add line numbers to\n * @param {Number} start=1 - number of spaces to add\n * @param {String} delim =': ' - injected between line number and original line\n * @return {String[]} strings - array of string, one per line, with line numbers added\n */\nfunction addLineNumbers(string, start = 1, delim = ': ') {\n const lines = string.split(/\\r?\\n/);\n const maxDigits = String(lines.length + start - 1).length;\n return lines.map((line, i) => {\n const lineNumber = String(i + start);\n const digits = lineNumber.length;\n const prefix = padLeft(lineNumber, maxDigits - digits);\n return prefix + delim + line;\n });\n}\n\n/**\n * Pads a string with a number of spaces (space characters) to the left\n * @param {String} string - string to pad\n * @param {Number} digits - number of spaces to add\n * @return {String} string - The padded string\n */\nfunction padLeft(string, digits) {\n let result = '';\n for (let i = 0; i < digits; ++i) {\n result += ' ';\n }\n return `${result}${string}`;\n}\n","const GL_FRAGMENT_SHADER = 0x8b30;\nconst GL_VERTEX_SHADER = 0x8b31;\nexport default function getShaderTypeName(type) {\n switch (type) {\n case GL_FRAGMENT_SHADER:\n return 'fragment';\n\n case GL_VERTEX_SHADER:\n return 'vertex';\n\n default:\n return 'unknown type';\n }\n}\n//# sourceMappingURL=get-shader-type-name.js.map","const GL_FRAGMENT_SHADER = 0x8b30;\nconst GL_VERTEX_SHADER = 0x8b31;\n\nexport default function getShaderTypeName(type) {\n switch (type) {\n case GL_FRAGMENT_SHADER:\n return 'fragment';\n case GL_VERTEX_SHADER:\n return 'vertex';\n default:\n return 'unknown type';\n }\n}\n","import Accessor from './accessor';\nimport { isWebGL2 } from '@luma.gl/gltools';\nimport { decomposeCompositeGLType } from '../webgl-utils/attribute-utils';\nexport default class ProgramConfiguration {\n constructor(program) {\n this.id = program.id;\n this.attributeInfos = [];\n this.attributeInfosByName = {};\n this.attributeInfosByLocation = [];\n this.varyingInfos = [];\n this.varyingInfosByName = {};\n Object.seal(this);\n\n this._readAttributesFromProgram(program);\n\n this._readVaryingsFromProgram(program);\n }\n\n getAttributeInfo(locationOrName) {\n const location = Number(locationOrName);\n\n if (Number.isFinite(location)) {\n return this.attributeInfosByLocation[location];\n }\n\n return this.attributeInfosByName[locationOrName] || null;\n }\n\n getAttributeLocation(locationOrName) {\n const attributeInfo = this.getAttributeInfo(locationOrName);\n return attributeInfo ? attributeInfo.location : -1;\n }\n\n getAttributeAccessor(locationOrName) {\n const attributeInfo = this.getAttributeInfo(locationOrName);\n return attributeInfo ? attributeInfo.accessor : null;\n }\n\n getVaryingInfo(locationOrName) {\n const location = Number(locationOrName);\n\n if (Number.isFinite(location)) {\n return this.varyingInfos[location];\n }\n\n return this.varyingInfosByName[locationOrName] || null;\n }\n\n getVaryingIndex(locationOrName) {\n const varying = this.getVaryingInfo();\n return varying ? varying.location : -1;\n }\n\n getVaryingAccessor(locationOrName) {\n const varying = this.getVaryingInfo();\n return varying ? varying.accessor : null;\n }\n\n _readAttributesFromProgram(program) {\n const {\n gl\n } = program;\n const count = gl.getProgramParameter(program.handle, 35721);\n\n for (let index = 0; index < count; index++) {\n const {\n name,\n type,\n size\n } = gl.getActiveAttrib(program.handle, index);\n const location = gl.getAttribLocation(program.handle, name);\n\n if (location >= 0) {\n this._addAttribute(location, name, type, size);\n }\n }\n\n this.attributeInfos.sort((a, b) => a.location - b.location);\n }\n\n _readVaryingsFromProgram(program) {\n const {\n gl\n } = program;\n\n if (!isWebGL2(gl)) {\n return;\n }\n\n const count = gl.getProgramParameter(program.handle, 35971);\n\n for (let location = 0; location < count; location++) {\n const {\n name,\n type,\n size\n } = gl.getTransformFeedbackVarying(program.handle, location);\n\n this._addVarying(location, name, type, size);\n }\n\n this.varyingInfos.sort((a, b) => a.location - b.location);\n }\n\n _addAttribute(location, name, compositeType, size) {\n const {\n type,\n components\n } = decomposeCompositeGLType(compositeType);\n const accessor = {\n type,\n size: size * components\n };\n\n this._inferProperties(location, name, accessor);\n\n const attributeInfo = {\n location,\n name,\n accessor: new Accessor(accessor)\n };\n this.attributeInfos.push(attributeInfo);\n this.attributeInfosByLocation[location] = attributeInfo;\n this.attributeInfosByName[attributeInfo.name] = attributeInfo;\n }\n\n _inferProperties(location, name, accessor) {\n if (/instance/i.test(name)) {\n accessor.divisor = 1;\n }\n }\n\n _addVarying(location, name, compositeType, size) {\n const {\n type,\n components\n } = decomposeCompositeGLType(compositeType);\n const accessor = new Accessor({\n type,\n size: size * components\n });\n const varying = {\n location,\n name,\n accessor\n };\n this.varyingInfos.push(varying);\n this.varyingInfosByName[varying.name] = varying;\n }\n\n}\n//# sourceMappingURL=program-configuration.js.map","// Contains metadata describing attribute configurations for a program's shaders\n// Much of this is automatically extracted from shaders after program linking\nimport Accessor from './accessor';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';\n\nexport default class ProgramConfiguration {\n constructor(program) {\n this.id = program.id;\n this.attributeInfos = [];\n this.attributeInfosByName = {};\n\n // Locations may not be contiguous the case of matrix attributes\n // so keep a separate location->attribute map.\n this.attributeInfosByLocation = [];\n this.varyingInfos = [];\n this.varyingInfosByName = {};\n Object.seal(this);\n this._readAttributesFromProgram(program);\n this._readVaryingsFromProgram(program);\n }\n\n getAttributeInfo(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return this.attributeInfosByLocation[location];\n }\n return this.attributeInfosByName[locationOrName] || null;\n }\n\n // Resolves an attribute name or index to an index\n getAttributeLocation(locationOrName) {\n const attributeInfo = this.getAttributeInfo(locationOrName);\n return attributeInfo ? attributeInfo.location : -1;\n }\n\n getAttributeAccessor(locationOrName) {\n const attributeInfo = this.getAttributeInfo(locationOrName);\n return attributeInfo ? attributeInfo.accessor : null;\n }\n\n getVaryingInfo(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return this.varyingInfos[location];\n }\n return this.varyingInfosByName[locationOrName] || null;\n }\n\n getVaryingIndex(locationOrName) {\n const varying = this.getVaryingInfo();\n return varying ? varying.location : -1;\n }\n\n getVaryingAccessor(locationOrName) {\n const varying = this.getVaryingInfo();\n return varying ? varying.accessor : null;\n }\n\n // PRIVATE METHODS\n\n // linkProgram needs to have been called, although linking does not need to have been successful\n _readAttributesFromProgram(program) {\n const {gl} = program;\n const count = gl.getProgramParameter(program.handle, gl.ACTIVE_ATTRIBUTES);\n\n for (let index = 0; index < count; index++) {\n const {name, type, size} = gl.getActiveAttrib(program.handle, index);\n const location = gl.getAttribLocation(program.handle, name);\n // Add only user provided attributes, for built-in attributes like\n // `gl_InstanceID` locaiton will be < 0\n if (location >= 0) {\n this._addAttribute(location, name, type, size);\n }\n }\n\n this.attributeInfos.sort((a, b) => a.location - b.location);\n }\n\n // linkProgram needs to have been called, although linking does not need to have been successful\n _readVaryingsFromProgram(program) {\n const {gl} = program;\n if (!isWebGL2(gl)) {\n return;\n }\n\n const count = gl.getProgramParameter(program.handle, gl.TRANSFORM_FEEDBACK_VARYINGS);\n for (let location = 0; location < count; location++) {\n const {name, type, size} = gl.getTransformFeedbackVarying(program.handle, location);\n this._addVarying(location, name, type, size);\n }\n\n this.varyingInfos.sort((a, b) => a.location - b.location);\n }\n\n _addAttribute(location, name, compositeType, size) {\n const {type, components} = decomposeCompositeGLType(compositeType);\n const accessor = {type, size: size * components};\n this._inferProperties(location, name, accessor);\n\n const attributeInfo = {location, name, accessor: new Accessor(accessor)}; // Base values\n this.attributeInfos.push(attributeInfo);\n this.attributeInfosByLocation[location] = attributeInfo; // For quick location based lookup\n this.attributeInfosByName[attributeInfo.name] = attributeInfo; // For quick name based lookup\n }\n\n // Extract additional attribute metadata from shader names (based on attribute naming conventions)\n _inferProperties(location, name, accessor) {\n if (/instance/i.test(name)) {\n // Any attribute containing the word \"instance\" will be assumed to be instanced\n accessor.divisor = 1;\n }\n }\n\n _addVarying(location, name, compositeType, size) {\n const {type, components} = decomposeCompositeGLType(compositeType);\n const accessor = new Accessor({type, size: size * components});\n\n const varying = {location, name, accessor}; // Base values\n this.varyingInfos.push(varying);\n this.varyingInfosByName[varying.name] = varying; // For quick name based lookup\n }\n}\n","import { assert } from '../utils/assert';\nconst GL_BYTE = 0x1400;\nconst GL_UNSIGNED_BYTE = 0x1401;\nconst GL_SHORT = 0x1402;\nconst GL_UNSIGNED_SHORT = 0x1403;\nconst GL_POINTS = 0x0;\nconst GL_LINES = 0x1;\nconst GL_LINE_LOOP = 0x2;\nconst GL_LINE_STRIP = 0x3;\nconst GL_TRIANGLES = 0x4;\nconst GL_TRIANGLE_STRIP = 0x5;\nconst GL_TRIANGLE_FAN = 0x6;\nconst GL_FLOAT = 0x1406;\nconst GL_FLOAT_VEC2 = 0x8b50;\nconst GL_FLOAT_VEC3 = 0x8b51;\nconst GL_FLOAT_VEC4 = 0x8b52;\nconst GL_INT = 0x1404;\nconst GL_INT_VEC2 = 0x8b53;\nconst GL_INT_VEC3 = 0x8b54;\nconst GL_INT_VEC4 = 0x8b55;\nconst GL_UNSIGNED_INT = 0x1405;\nconst GL_UNSIGNED_INT_VEC2 = 0x8dc6;\nconst GL_UNSIGNED_INT_VEC3 = 0x8dc7;\nconst GL_UNSIGNED_INT_VEC4 = 0x8dc8;\nconst GL_BOOL = 0x8b56;\nconst GL_BOOL_VEC2 = 0x8b57;\nconst GL_BOOL_VEC3 = 0x8b58;\nconst GL_BOOL_VEC4 = 0x8b59;\nconst GL_FLOAT_MAT2 = 0x8b5a;\nconst GL_FLOAT_MAT3 = 0x8b5b;\nconst GL_FLOAT_MAT4 = 0x8b5c;\nconst GL_FLOAT_MAT2x3 = 0x8b65;\nconst GL_FLOAT_MAT2x4 = 0x8b66;\nconst GL_FLOAT_MAT3x2 = 0x8b67;\nconst GL_FLOAT_MAT3x4 = 0x8b68;\nconst GL_FLOAT_MAT4x2 = 0x8b69;\nconst GL_FLOAT_MAT4x3 = 0x8b6a;\nconst COMPOSITE_GL_TYPES = {\n [GL_FLOAT]: [GL_FLOAT, 1, 'float'],\n [GL_FLOAT_VEC2]: [GL_FLOAT, 2, 'vec2'],\n [GL_FLOAT_VEC3]: [GL_FLOAT, 3, 'vec3'],\n [GL_FLOAT_VEC4]: [GL_FLOAT, 4, 'vec4'],\n [GL_INT]: [GL_INT, 1, 'int'],\n [GL_INT_VEC2]: [GL_INT, 2, 'ivec2'],\n [GL_INT_VEC3]: [GL_INT, 3, 'ivec3'],\n [GL_INT_VEC4]: [GL_INT, 4, 'ivec4'],\n [GL_UNSIGNED_INT]: [GL_UNSIGNED_INT, 1, 'uint'],\n [GL_UNSIGNED_INT_VEC2]: [GL_UNSIGNED_INT, 2, 'uvec2'],\n [GL_UNSIGNED_INT_VEC3]: [GL_UNSIGNED_INT, 3, 'uvec3'],\n [GL_UNSIGNED_INT_VEC4]: [GL_UNSIGNED_INT, 4, 'uvec4'],\n [GL_BOOL]: [GL_FLOAT, 1, 'bool'],\n [GL_BOOL_VEC2]: [GL_FLOAT, 2, 'bvec2'],\n [GL_BOOL_VEC3]: [GL_FLOAT, 3, 'bvec3'],\n [GL_BOOL_VEC4]: [GL_FLOAT, 4, 'bvec4'],\n [GL_FLOAT_MAT2]: [GL_FLOAT, 8, 'mat2'],\n [GL_FLOAT_MAT2x3]: [GL_FLOAT, 8, 'mat2x3'],\n [GL_FLOAT_MAT2x4]: [GL_FLOAT, 8, 'mat2x4'],\n [GL_FLOAT_MAT3]: [GL_FLOAT, 12, 'mat3'],\n [GL_FLOAT_MAT3x2]: [GL_FLOAT, 12, 'mat3x2'],\n [GL_FLOAT_MAT3x4]: [GL_FLOAT, 12, 'mat3x4'],\n [GL_FLOAT_MAT4]: [GL_FLOAT, 16, 'mat4'],\n [GL_FLOAT_MAT4x2]: [GL_FLOAT, 16, 'mat4x2'],\n [GL_FLOAT_MAT4x3]: [GL_FLOAT, 16, 'mat4x3']\n};\nexport function getPrimitiveDrawMode(drawMode) {\n switch (drawMode) {\n case GL_POINTS:\n return GL_POINTS;\n\n case GL_LINES:\n return GL_LINES;\n\n case GL_LINE_STRIP:\n return GL_LINES;\n\n case GL_LINE_LOOP:\n return GL_LINES;\n\n case GL_TRIANGLES:\n return GL_TRIANGLES;\n\n case GL_TRIANGLE_STRIP:\n return GL_TRIANGLES;\n\n case GL_TRIANGLE_FAN:\n return GL_TRIANGLES;\n\n default:\n assert(false);\n return 0;\n }\n}\nexport function getPrimitiveCount(_ref) {\n let {\n drawMode,\n vertexCount\n } = _ref;\n\n switch (drawMode) {\n case GL_POINTS:\n case GL_LINE_LOOP:\n return vertexCount;\n\n case GL_LINES:\n return vertexCount / 2;\n\n case GL_LINE_STRIP:\n return vertexCount - 1;\n\n case GL_TRIANGLES:\n return vertexCount / 3;\n\n case GL_TRIANGLE_STRIP:\n case GL_TRIANGLE_FAN:\n return vertexCount - 2;\n\n default:\n assert(false);\n return 0;\n }\n}\nexport function getVertexCount(_ref2) {\n let {\n drawMode,\n vertexCount\n } = _ref2;\n const primitiveCount = getPrimitiveCount({\n drawMode,\n vertexCount\n });\n\n switch (getPrimitiveDrawMode(drawMode)) {\n case GL_POINTS:\n return primitiveCount;\n\n case GL_LINES:\n return primitiveCount * 2;\n\n case GL_TRIANGLES:\n return primitiveCount * 3;\n\n default:\n assert(false);\n return 0;\n }\n}\nexport function decomposeCompositeGLType(compositeGLType) {\n const typeAndSize = COMPOSITE_GL_TYPES[compositeGLType];\n\n if (!typeAndSize) {\n return null;\n }\n\n const [type, components] = typeAndSize;\n return {\n type,\n components\n };\n}\nexport function getCompositeGLType(type, components) {\n switch (type) {\n case GL_BYTE:\n case GL_UNSIGNED_BYTE:\n case GL_SHORT:\n case GL_UNSIGNED_SHORT:\n type = GL_FLOAT;\n break;\n\n default:\n }\n\n for (const glType in COMPOSITE_GL_TYPES) {\n const [compType, compComponents, name] = COMPOSITE_GL_TYPES[glType];\n\n if (compType === type && compComponents === components) {\n return {\n glType,\n name\n };\n }\n }\n\n return null;\n}\n//# sourceMappingURL=attribute-utils.js.map","/* eslint-disable camelcase */\nimport {assert} from '../utils/assert';\n\nconst GL_BYTE = 0x1400;\nconst GL_UNSIGNED_BYTE = 0x1401;\nconst GL_SHORT = 0x1402;\nconst GL_UNSIGNED_SHORT = 0x1403;\n\nconst GL_POINTS = 0x0;\nconst GL_LINES = 0x1;\nconst GL_LINE_LOOP = 0x2;\nconst GL_LINE_STRIP = 0x3;\nconst GL_TRIANGLES = 0x4;\nconst GL_TRIANGLE_STRIP = 0x5;\nconst GL_TRIANGLE_FAN = 0x6;\n\n// Local constants - these will \"collapse\" during minification\nconst GL_FLOAT = 0x1406;\nconst GL_FLOAT_VEC2 = 0x8b50;\nconst GL_FLOAT_VEC3 = 0x8b51;\nconst GL_FLOAT_VEC4 = 0x8b52;\n\nconst GL_INT = 0x1404;\nconst GL_INT_VEC2 = 0x8b53;\nconst GL_INT_VEC3 = 0x8b54;\nconst GL_INT_VEC4 = 0x8b55;\n\nconst GL_UNSIGNED_INT = 0x1405;\nconst GL_UNSIGNED_INT_VEC2 = 0x8dc6;\nconst GL_UNSIGNED_INT_VEC3 = 0x8dc7;\nconst GL_UNSIGNED_INT_VEC4 = 0x8dc8;\n\nconst GL_BOOL = 0x8b56;\nconst GL_BOOL_VEC2 = 0x8b57;\nconst GL_BOOL_VEC3 = 0x8b58;\nconst GL_BOOL_VEC4 = 0x8b59;\n\nconst GL_FLOAT_MAT2 = 0x8b5a;\nconst GL_FLOAT_MAT3 = 0x8b5b;\nconst GL_FLOAT_MAT4 = 0x8b5c;\n\nconst GL_FLOAT_MAT2x3 = 0x8b65;\nconst GL_FLOAT_MAT2x4 = 0x8b66;\nconst GL_FLOAT_MAT3x2 = 0x8b67;\nconst GL_FLOAT_MAT3x4 = 0x8b68;\nconst GL_FLOAT_MAT4x2 = 0x8b69;\nconst GL_FLOAT_MAT4x3 = 0x8b6a;\n\n// Composite types table\nconst COMPOSITE_GL_TYPES = {\n [GL_FLOAT]: [GL_FLOAT, 1, 'float'],\n [GL_FLOAT_VEC2]: [GL_FLOAT, 2, 'vec2'],\n [GL_FLOAT_VEC3]: [GL_FLOAT, 3, 'vec3'],\n [GL_FLOAT_VEC4]: [GL_FLOAT, 4, 'vec4'],\n\n [GL_INT]: [GL_INT, 1, 'int'],\n [GL_INT_VEC2]: [GL_INT, 2, 'ivec2'],\n [GL_INT_VEC3]: [GL_INT, 3, 'ivec3'],\n [GL_INT_VEC4]: [GL_INT, 4, 'ivec4'],\n\n [GL_UNSIGNED_INT]: [GL_UNSIGNED_INT, 1, 'uint'],\n [GL_UNSIGNED_INT_VEC2]: [GL_UNSIGNED_INT, 2, 'uvec2'],\n [GL_UNSIGNED_INT_VEC3]: [GL_UNSIGNED_INT, 3, 'uvec3'],\n [GL_UNSIGNED_INT_VEC4]: [GL_UNSIGNED_INT, 4, 'uvec4'],\n\n [GL_BOOL]: [GL_FLOAT, 1, 'bool'],\n [GL_BOOL_VEC2]: [GL_FLOAT, 2, 'bvec2'],\n [GL_BOOL_VEC3]: [GL_FLOAT, 3, 'bvec3'],\n [GL_BOOL_VEC4]: [GL_FLOAT, 4, 'bvec4'],\n\n [GL_FLOAT_MAT2]: [GL_FLOAT, 8, 'mat2'], // 4\n [GL_FLOAT_MAT2x3]: [GL_FLOAT, 8, 'mat2x3'], // 6\n [GL_FLOAT_MAT2x4]: [GL_FLOAT, 8, 'mat2x4'], // 8\n\n [GL_FLOAT_MAT3]: [GL_FLOAT, 12, 'mat3'], // 9\n [GL_FLOAT_MAT3x2]: [GL_FLOAT, 12, 'mat3x2'], // 6\n [GL_FLOAT_MAT3x4]: [GL_FLOAT, 12, 'mat3x4'], // 12\n\n [GL_FLOAT_MAT4]: [GL_FLOAT, 16, 'mat4'], // 16\n [GL_FLOAT_MAT4x2]: [GL_FLOAT, 16, 'mat4x2'], // 8\n [GL_FLOAT_MAT4x3]: [GL_FLOAT, 16, 'mat4x3'] // 12\n};\n\n// Counts the number of complete primitives given a number of vertices and a drawMode\nexport function getPrimitiveDrawMode(drawMode) {\n switch (drawMode) {\n case GL_POINTS:\n return GL_POINTS;\n case GL_LINES:\n return GL_LINES;\n case GL_LINE_STRIP:\n return GL_LINES;\n case GL_LINE_LOOP:\n return GL_LINES;\n case GL_TRIANGLES:\n return GL_TRIANGLES;\n case GL_TRIANGLE_STRIP:\n return GL_TRIANGLES;\n case GL_TRIANGLE_FAN:\n return GL_TRIANGLES;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Counts the number of complete \"primitives\" given a number of vertices and a drawMode\nexport function getPrimitiveCount({drawMode, vertexCount}) {\n switch (drawMode) {\n case GL_POINTS:\n case GL_LINE_LOOP:\n return vertexCount;\n case GL_LINES:\n return vertexCount / 2;\n case GL_LINE_STRIP:\n return vertexCount - 1;\n case GL_TRIANGLES:\n return vertexCount / 3;\n case GL_TRIANGLE_STRIP:\n case GL_TRIANGLE_FAN:\n return vertexCount - 2;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Counts the number of vertices after splitting the vertex stream into separate \"primitives\"\nexport function getVertexCount({drawMode, vertexCount}) {\n const primitiveCount = getPrimitiveCount({drawMode, vertexCount});\n switch (getPrimitiveDrawMode(drawMode)) {\n case GL_POINTS:\n return primitiveCount;\n case GL_LINES:\n return primitiveCount * 2;\n case GL_TRIANGLES:\n return primitiveCount * 3;\n default:\n assert(false);\n return 0;\n }\n}\n\n// Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3)\nexport function decomposeCompositeGLType(compositeGLType) {\n const typeAndSize = COMPOSITE_GL_TYPES[compositeGLType];\n if (!typeAndSize) {\n return null;\n }\n const [type, components] = typeAndSize;\n return {type, components};\n}\n\nexport function getCompositeGLType(type, components) {\n switch (type) {\n case GL_BYTE:\n case GL_UNSIGNED_BYTE:\n case GL_SHORT:\n case GL_UNSIGNED_SHORT:\n type = GL_FLOAT;\n break;\n default:\n }\n\n for (const glType in COMPOSITE_GL_TYPES) {\n const [compType, compComponents, name] = COMPOSITE_GL_TYPES[glType];\n if (compType === type && compComponents === components) {\n return {glType, name};\n }\n }\n return null;\n}\n","import { getCompositeGLType } from '../webgl-utils/attribute-utils';\nexport function getDebugTableForProgramConfiguration(config) {\n const table = {};\n const header = \"Accessors for \".concat(config.id);\n\n for (const attributeInfo of config.attributeInfos) {\n if (attributeInfo) {\n const glslDeclaration = getGLSLDeclaration(attributeInfo);\n table[\"in \".concat(glslDeclaration)] = {\n [header]: JSON.stringify(attributeInfo.accessor)\n };\n }\n }\n\n for (const varyingInfo of config.varyingInfos) {\n if (varyingInfo) {\n const glslDeclaration = getGLSLDeclaration(varyingInfo);\n table[\"out \".concat(glslDeclaration)] = {\n [header]: JSON.stringify(varyingInfo.accessor)\n };\n }\n }\n\n return table;\n}\n\nfunction getGLSLDeclaration(attributeInfo) {\n const {\n type,\n size\n } = attributeInfo.accessor;\n const typeAndName = getCompositeGLType(type, size);\n\n if (typeAndName) {\n return \"\".concat(typeAndName.name, \" \").concat(attributeInfo.name);\n }\n\n return attributeInfo.name;\n}\n//# sourceMappingURL=debug-program-configuration.js.map","import {getCompositeGLType} from '../webgl-utils/attribute-utils';\n\nexport function getDebugTableForProgramConfiguration(config) {\n const table = {};\n\n const header = `Accessors for ${config.id}`;\n\n for (const attributeInfo of config.attributeInfos) {\n if (attributeInfo) {\n const glslDeclaration = getGLSLDeclaration(attributeInfo);\n table[`in ${glslDeclaration}`] = {[header]: JSON.stringify(attributeInfo.accessor)};\n }\n }\n\n for (const varyingInfo of config.varyingInfos) {\n if (varyingInfo) {\n const glslDeclaration = getGLSLDeclaration(varyingInfo);\n table[`out ${glslDeclaration}`] = {[header]: JSON.stringify(varyingInfo.accessor)};\n }\n }\n\n return table;\n}\n\nfunction getGLSLDeclaration(attributeInfo) {\n const {type, size} = attributeInfo.accessor;\n const typeAndName = getCompositeGLType(type, size);\n if (typeAndName) {\n return `${typeAndName.name} ${attributeInfo.name}`;\n }\n return attributeInfo.name;\n}\n","import { assert } from '../utils/assert';\nimport { formatValue } from '../utils/format-value';\nexport function getDebugTableForUniforms(_ref) {\n let {\n header = 'Uniforms',\n program,\n uniforms,\n undefinedOnly = false\n } = _ref;\n assert(program);\n const SHADER_MODULE_UNIFORM_REGEXP = '.*_.*';\n const PROJECT_MODULE_UNIFORM_REGEXP = '.*Matrix';\n const uniformLocations = program._uniformSetters;\n const table = {};\n const uniformNames = Object.keys(uniformLocations).sort();\n let count = 0;\n\n for (const uniformName of uniformNames) {\n if (!uniformName.match(SHADER_MODULE_UNIFORM_REGEXP) && !uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)) {\n if (addUniformToTable({\n table,\n header,\n uniforms,\n uniformName,\n undefinedOnly\n })) {\n count++;\n }\n }\n }\n\n for (const uniformName of uniformNames) {\n if (uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)) {\n if (addUniformToTable({\n table,\n header,\n uniforms,\n uniformName,\n undefinedOnly\n })) {\n count++;\n }\n }\n }\n\n for (const uniformName of uniformNames) {\n if (!table[uniformName]) {\n if (addUniformToTable({\n table,\n header,\n uniforms,\n uniformName,\n undefinedOnly\n })) {\n count++;\n }\n }\n }\n\n let unusedCount = 0;\n const unusedTable = {};\n\n if (!undefinedOnly) {\n for (const uniformName in uniforms) {\n const uniform = uniforms[uniformName];\n\n if (!table[uniformName]) {\n unusedCount++;\n unusedTable[uniformName] = {\n Type: \"NOT USED: \".concat(uniform),\n [header]: formatValue(uniform)\n };\n }\n }\n }\n\n return {\n table,\n count,\n unusedTable,\n unusedCount\n };\n}\n\nfunction addUniformToTable(_ref2) {\n let {\n table,\n header,\n uniforms,\n uniformName,\n undefinedOnly\n } = _ref2;\n const value = uniforms[uniformName];\n const isDefined = isUniformDefined(value);\n\n if (!undefinedOnly || !isDefined) {\n table[uniformName] = {\n [header]: isDefined ? formatValue(value) : 'N/A',\n 'Uniform Type': isDefined ? value : 'NOT PROVIDED'\n };\n return true;\n }\n\n return false;\n}\n\nfunction isUniformDefined(value) {\n return value !== undefined && value !== null;\n}\n//# sourceMappingURL=debug-uniforms.js.map","import {assert} from '../utils/assert';\nimport {formatValue} from '../utils/format-value';\n\n// Prepares a table suitable for console.table\n/* eslint-disable max-statements, complexity */\nexport function getDebugTableForUniforms({\n header = 'Uniforms',\n program,\n uniforms,\n undefinedOnly = false\n}) {\n assert(program);\n\n const SHADER_MODULE_UNIFORM_REGEXP = '.*_.*';\n const PROJECT_MODULE_UNIFORM_REGEXP = '.*Matrix'; // TODO - Use explicit list\n\n const uniformLocations = program._uniformSetters;\n const table = {}; // {[header]: {}};\n\n // Add program's provided uniforms (in alphabetical order)\n const uniformNames = Object.keys(uniformLocations).sort();\n\n let count = 0;\n\n // First add non-underscored uniforms (assumed not coming from shader modules)\n for (const uniformName of uniformNames) {\n if (\n !uniformName.match(SHADER_MODULE_UNIFORM_REGEXP) &&\n !uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)\n ) {\n if (addUniformToTable({table, header, uniforms, uniformName, undefinedOnly})) {\n count++;\n }\n }\n }\n\n // add underscored uniforms (assumed from shader modules)\n for (const uniformName of uniformNames) {\n if (uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)) {\n if (addUniformToTable({table, header, uniforms, uniformName, undefinedOnly})) {\n count++;\n }\n }\n }\n\n for (const uniformName of uniformNames) {\n if (!table[uniformName]) {\n if (addUniformToTable({table, header, uniforms, uniformName, undefinedOnly})) {\n count++;\n }\n }\n }\n\n // Create a table of unused uniforms\n let unusedCount = 0;\n const unusedTable = {};\n if (!undefinedOnly) {\n for (const uniformName in uniforms) {\n const uniform = uniforms[uniformName];\n if (!table[uniformName]) {\n unusedCount++;\n unusedTable[uniformName] = {\n Type: `NOT USED: ${uniform}`,\n [header]: formatValue(uniform)\n };\n }\n }\n }\n\n return {table, count, unusedTable, unusedCount};\n}\n\n// Helper\nfunction addUniformToTable({table, header, uniforms, uniformName, undefinedOnly}) {\n const value = uniforms[uniformName];\n const isDefined = isUniformDefined(value);\n if (!undefinedOnly || !isDefined) {\n table[uniformName] = {\n // Add program's unprovided uniforms\n [header]: isDefined ? formatValue(value) : 'N/A',\n 'Uniform Type': isDefined ? value : 'NOT PROVIDED'\n };\n return true;\n }\n return false;\n}\n\nfunction isUniformDefined(value) {\n return value !== undefined && value !== null;\n}\n","function formatArrayValue(v, opts) {\n const {\n maxElts = 16,\n size = 1\n } = opts;\n let string = '[';\n\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += \",\".concat(i % size === 0 ? ' ' : '');\n }\n\n string += formatValue(v[i], opts);\n }\n\n const terminator = v.length > maxElts ? '...' : ']';\n return \"\".concat(string).concat(terminator);\n}\n\nexport function formatValue(v) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const EPSILON = 1e-16;\n const {\n isInteger = false\n } = opts;\n\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, opts);\n }\n\n if (!Number.isFinite(v)) {\n return String(v);\n }\n\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n\n if (isInteger) {\n return v.toFixed(0);\n }\n\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n return v.toFixed(0);\n }\n\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n//# sourceMappingURL=format-value.js.map","// TODO / DEPRECATED - delete when confident that probe.gl logging implements all opts\n/* eslint-disable no-console */\nfunction formatArrayValue(v, opts) {\n const {maxElts = 16, size = 1} = opts;\n let string = '[';\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += `,${i % size === 0 ? ' ' : ''}`;\n }\n string += formatValue(v[i], opts);\n }\n const terminator = v.length > maxElts ? '...' : ']';\n return `${string}${terminator}`;\n}\n\nexport function formatValue(v, opts = {}) {\n const EPSILON = 1e-16;\n const {isInteger = false} = opts;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, opts);\n }\n if (!Number.isFinite(v)) {\n return String(v);\n }\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n if (isInteger) {\n return v.toFixed(0);\n }\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n return v.toFixed(0);\n }\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n","import Buffer from '../classes/buffer';\nimport { getKey } from '../webgl-utils/constants-to-keys';\nimport { getCompositeGLType } from '../webgl-utils/attribute-utils';\nimport { formatValue } from '../utils/format-value';\nexport function getDebugTableForVertexArray(_ref) {\n let {\n vertexArray,\n header = 'Attributes'\n } = _ref;\n\n if (!vertexArray.configuration) {\n return {};\n }\n\n const table = {};\n\n if (vertexArray.elements) {\n table.ELEMENT_ARRAY_BUFFER = getDebugTableRow(vertexArray, vertexArray.elements, null, header);\n }\n\n const attributes = vertexArray.values;\n\n for (const attributeLocation in attributes) {\n const info = vertexArray._getAttributeInfo(attributeLocation);\n\n if (info) {\n let rowHeader = \"\".concat(attributeLocation, \": \").concat(info.name);\n const accessor = vertexArray.accessors[info.location];\n\n if (accessor) {\n rowHeader = \"\".concat(attributeLocation, \": \").concat(getGLSLDeclaration(info.name, accessor));\n }\n\n table[rowHeader] = getDebugTableRow(vertexArray, attributes[attributeLocation], accessor, header);\n }\n }\n\n return table;\n}\n\nfunction getDebugTableRow(vertexArray, attribute, accessor, header) {\n const {\n gl\n } = vertexArray;\n\n if (!attribute) {\n return {\n [header]: 'null',\n 'Format ': 'N/A'\n };\n }\n\n let type = 'NOT PROVIDED';\n let size = 1;\n let verts = 0;\n let bytes = 0;\n let isInteger;\n let marker;\n let value;\n\n if (accessor) {\n type = accessor.type;\n size = accessor.size;\n type = String(type).replace('Array', '');\n isInteger = type.indexOf('nt') !== -1;\n }\n\n if (attribute instanceof Buffer) {\n const buffer = attribute;\n const {\n data,\n changed\n } = buffer.getDebugData();\n marker = changed ? '*' : '';\n value = data;\n bytes = buffer.byteLength;\n verts = bytes / data.BYTES_PER_ELEMENT / size;\n let format;\n\n if (accessor) {\n const instanced = accessor.divisor > 0;\n format = \"\".concat(instanced ? 'I ' : 'P ', \" \").concat(verts, \" (x\").concat(size, \"=\").concat(bytes, \" bytes \").concat(getKey(gl, type), \")\");\n } else {\n isInteger = true;\n format = \"\".concat(bytes, \" bytes\");\n }\n\n return {\n [header]: \"\".concat(marker).concat(formatValue(value, {\n size,\n isInteger\n })),\n 'Format ': format\n };\n }\n\n value = attribute;\n size = attribute.length;\n type = String(attribute.constructor.name).replace('Array', '');\n isInteger = type.indexOf('nt') !== -1;\n return {\n [header]: \"\".concat(formatValue(value, {\n size,\n isInteger\n }), \" (constant)\"),\n 'Format ': \"\".concat(size, \"x\").concat(type, \" (constant)\")\n };\n}\n\nfunction getGLSLDeclaration(name, accessor) {\n const {\n type,\n size\n } = accessor;\n const typeAndName = getCompositeGLType(type, size);\n return typeAndName ? \"\".concat(name, \" (\").concat(typeAndName.name, \")\") : name;\n}\n//# sourceMappingURL=debug-vertex-array.js.map","import Buffer from '../classes/buffer';\nimport {getKey} from '../webgl-utils/constants-to-keys';\nimport {getCompositeGLType} from '../webgl-utils/attribute-utils';\nimport {formatValue} from '../utils/format-value';\n\n// Creates object suitable as input for console.table\nexport function getDebugTableForVertexArray({vertexArray, header = 'Attributes'}) {\n if (!vertexArray.configuration) {\n return {};\n }\n\n const table = {}; // {[header]: {}};\n\n // Add index (elements) if available\n if (vertexArray.elements) {\n // const elements = Object.assign({size: 1}, vertexArray.elements);\n table.ELEMENT_ARRAY_BUFFER = getDebugTableRow(vertexArray, vertexArray.elements, null, header);\n }\n\n // Add used attributes\n const attributes = vertexArray.values;\n\n for (const attributeLocation in attributes) {\n const info = vertexArray._getAttributeInfo(attributeLocation);\n if (info) {\n let rowHeader = `${attributeLocation}: ${info.name}`;\n const accessor = vertexArray.accessors[info.location];\n if (accessor) {\n rowHeader = `${attributeLocation}: ${getGLSLDeclaration(info.name, accessor)}`;\n }\n table[rowHeader] = getDebugTableRow(\n vertexArray,\n attributes[attributeLocation],\n accessor,\n header\n );\n }\n }\n\n return table;\n}\n\n/* eslint-disable max-statements */\nfunction getDebugTableRow(vertexArray, attribute, accessor, header) {\n const {gl} = vertexArray;\n\n if (!attribute) {\n return {\n [header]: 'null',\n 'Format ': 'N/A'\n };\n }\n\n let type = 'NOT PROVIDED';\n let size = 1;\n let verts = 0;\n let bytes = 0;\n\n let isInteger;\n let marker;\n let value;\n\n if (accessor) {\n type = accessor.type;\n size = accessor.size;\n\n // Generate a type name by dropping Array from Float32Array etc.\n type = String(type).replace('Array', '');\n\n // Look for 'nt' to detect integer types, e.g. Int32Array, Uint32Array\n isInteger = type.indexOf('nt') !== -1;\n }\n\n if (attribute instanceof Buffer) {\n const buffer = attribute;\n\n const {data, changed} = buffer.getDebugData();\n marker = changed ? '*' : '';\n\n value = data;\n // @ts-ignore\n bytes = buffer.byteLength;\n // @ts-ignore\n verts = bytes / data.BYTES_PER_ELEMENT / size;\n\n let format;\n\n if (accessor) {\n const instanced = accessor.divisor > 0;\n format = `${instanced ? 'I ' : 'P '} ${verts} (x${size}=${bytes} bytes ${getKey(gl, type)})`;\n } else {\n // element buffer\n isInteger = true;\n format = `${bytes} bytes`;\n }\n\n return {\n [header]: `${marker}${formatValue(value, {size, isInteger})}`,\n 'Format ': format\n };\n }\n\n // CONSTANT VALUE\n value = attribute;\n size = attribute.length;\n // Generate a type name by dropping Array from Float32Array etc.\n type = String(attribute.constructor.name).replace('Array', '');\n // Look for 'nt' to detect integer types, e.g. Int32Array, Uint32Array\n isInteger = type.indexOf('nt') !== -1;\n\n return {\n [header]: `${formatValue(value, {size, isInteger})} (constant)`,\n 'Format ': `${size}x${type} (constant)`\n };\n}\n/* eslint-ensable max-statements */\n\nfunction getGLSLDeclaration(name, accessor) {\n const {type, size} = accessor;\n const typeAndName = getCompositeGLType(type, size);\n return typeAndName ? `${name} (${typeAndName.name})` : name;\n}\n","import { log } from '@luma.gl/gltools';\nimport Accessor from './accessor';\nimport Buffer from './buffer';\nimport VertexArrayObject from './vertex-array-object';\nimport { assert } from '../utils/assert';\nimport { stubRemovedMethods } from '../utils/stub-methods';\nconst ERR_ATTRIBUTE_TYPE = 'VertexArray: attributes must be Buffers or constants (i.e. typed array)';\nconst MULTI_LOCATION_ATTRIBUTE_REGEXP = /^(.+)__LOCATION_([0-9]+)$/;\nconst DEPRECATIONS_V6 = ['setBuffers', 'setGeneric', 'clearBindings', 'setLocations', 'setGenericValues', 'setDivisor', 'enable', 'disable'];\nexport default class VertexArray {\n constructor(gl) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const id = opts.id || opts.program && opts.program.id;\n this.id = id;\n this.gl = gl;\n this.configuration = null;\n this.elements = null;\n this.elementsAccessor = null;\n this.values = null;\n this.accessors = null;\n this.unused = null;\n this.drawParams = null;\n this.buffer = null;\n this.attributes = {};\n this.vertexArrayObject = new VertexArrayObject(gl);\n stubRemovedMethods(this, 'VertexArray', 'v6.0', DEPRECATIONS_V6);\n this.initialize(opts);\n Object.seal(this);\n }\n\n delete() {\n if (this.buffer) {\n this.buffer.delete();\n }\n\n this.vertexArrayObject.delete();\n }\n\n initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.reset();\n this.configuration = null;\n this.bindOnUse = false;\n return this.setProps(props);\n }\n\n reset() {\n this.elements = null;\n this.elementsAccessor = null;\n const {\n MAX_ATTRIBUTES\n } = this.vertexArrayObject;\n this.values = new Array(MAX_ATTRIBUTES).fill(null);\n this.accessors = new Array(MAX_ATTRIBUTES).fill(null);\n this.unused = {};\n this.drawParams = null;\n return this;\n }\n\n setProps(props) {\n if ('program' in props) {\n this.configuration = props.program && props.program.configuration;\n }\n\n if ('configuration' in props) {\n this.configuration = props.configuration;\n }\n\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n\n if ('elements' in props) {\n this.setElementBuffer(props.elements);\n }\n\n if ('bindOnUse' in props) {\n props = props.bindOnUse;\n }\n\n return this;\n }\n\n clearDrawParams() {\n this.drawParams = null;\n }\n\n getDrawParams() {\n this.drawParams = this.drawParams || this._updateDrawParams();\n return this.drawParams;\n }\n\n setAttributes(attributes) {\n Object.assign(this.attributes, attributes);\n this.vertexArrayObject.bind(() => {\n for (const locationOrName in attributes) {\n const value = attributes[locationOrName];\n\n this._setAttribute(locationOrName, value);\n }\n\n this.gl.bindBuffer(34962, null);\n });\n return this;\n }\n\n setElementBuffer() {\n let elementBuffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n let accessor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.elements = elementBuffer;\n this.elementsAccessor = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setElementBuffer(elementBuffer, accessor);\n return this;\n }\n\n setBuffer(locationOrName, buffer) {\n let appAccessor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (buffer.target === 34963) {\n return this.setElementBuffer(buffer, appAccessor);\n }\n\n const {\n location,\n accessor\n } = this._resolveLocationAndAccessor(locationOrName, buffer, buffer.accessor, appAccessor);\n\n if (location >= 0) {\n this.values[location] = buffer;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setBuffer(location, buffer, accessor);\n }\n\n return this;\n }\n\n setConstant(locationOrName, arrayValue) {\n let appAccessor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n const {\n location,\n accessor\n } = this._resolveLocationAndAccessor(locationOrName, arrayValue, Object.assign({\n size: arrayValue.length\n }, appAccessor));\n\n if (location >= 0) {\n arrayValue = this.vertexArrayObject._normalizeConstantArrayValue(arrayValue);\n this.values[location] = arrayValue;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.enable(location, false);\n }\n\n return this;\n }\n\n unbindBuffers() {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.vertexArrayObject.setElementBuffer(null);\n }\n\n this.buffer = this.buffer || new Buffer(this.gl, {\n accessor: {\n size: 4\n }\n });\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n if (this.values[location] instanceof Buffer) {\n this.gl.disableVertexAttribArray(location);\n this.gl.bindBuffer(34962, this.buffer.handle);\n this.gl.vertexAttribPointer(location, 1, 5126, false, 0, 0);\n }\n }\n });\n return this;\n }\n\n bindBuffers() {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.setElementBuffer(this.elements);\n }\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n const buffer = this.values[location];\n\n if (buffer instanceof Buffer) {\n this.setBuffer(location, buffer);\n }\n }\n });\n return this;\n }\n\n bindForDraw(vertexCount, instanceCount, func) {\n let value;\n this.vertexArrayObject.bind(() => {\n this._setConstantAttributes(vertexCount, instanceCount);\n\n value = func();\n });\n return value;\n }\n\n _resolveLocationAndAccessor(locationOrName, value, valueAccessor, appAccessor) {\n const INVALID_RESULT = {\n location: -1,\n accessor: null\n };\n\n const {\n location,\n name\n } = this._getAttributeIndex(locationOrName);\n\n if (!Number.isFinite(location) || location < 0) {\n this.unused[locationOrName] = value;\n log.once(3, () => \"unused value \".concat(locationOrName, \" in \").concat(this.id))();\n return INVALID_RESULT;\n }\n\n const accessInfo = this._getAttributeInfo(name || location);\n\n if (!accessInfo) {\n return INVALID_RESULT;\n }\n\n const currentAccessor = this.accessors[location] || {};\n const accessor = Accessor.resolve(accessInfo.accessor, currentAccessor, valueAccessor, appAccessor);\n const {\n size,\n type\n } = accessor;\n assert(Number.isFinite(size) && Number.isFinite(type));\n return {\n location,\n accessor\n };\n }\n\n _getAttributeInfo(attributeName) {\n return this.configuration && this.configuration.getAttributeInfo(attributeName);\n }\n\n _getAttributeIndex(locationOrName) {\n const location = Number(locationOrName);\n\n if (Number.isFinite(location)) {\n return {\n location\n };\n }\n\n const multiLocation = MULTI_LOCATION_ATTRIBUTE_REGEXP.exec(locationOrName);\n const name = multiLocation ? multiLocation[1] : locationOrName;\n const locationOffset = multiLocation ? Number(multiLocation[2]) : 0;\n\n if (this.configuration) {\n return {\n location: this.configuration.getAttributeLocation(name) + locationOffset,\n name\n };\n }\n\n return {\n location: -1\n };\n }\n\n _setAttribute(locationOrName, value) {\n if (value instanceof Buffer) {\n this.setBuffer(locationOrName, value);\n } else if (Array.isArray(value) && value.length && value[0] instanceof Buffer) {\n const buffer = value[0];\n const accessor = value[1];\n this.setBuffer(locationOrName, buffer, accessor);\n } else if (ArrayBuffer.isView(value) || Array.isArray(value)) {\n const constant = value;\n this.setConstant(locationOrName, constant);\n } else if (value.buffer instanceof Buffer) {\n const accessor = value;\n this.setBuffer(locationOrName, accessor.buffer, accessor);\n } else {\n throw new Error(ERR_ATTRIBUTE_TYPE);\n }\n }\n\n _setConstantAttributes(vertexCount, instanceCount) {\n const elementCount = Math.max(vertexCount | 0, instanceCount | 0);\n let constant = this.values[0];\n\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttributeZero(constant, elementCount);\n }\n\n for (let location = 1; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n constant = this.values[location];\n\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttribute(location, constant);\n }\n }\n }\n\n _setConstantAttributeZero(constant, elementCount) {\n if (VertexArrayObject.isSupported(this.gl, {\n constantAttributeZero: true\n })) {\n this._setConstantAttribute(0, constant);\n\n return;\n }\n\n const buffer = this.vertexArrayObject.getConstantBuffer(elementCount, constant);\n this.vertexArrayObject.setBuffer(0, buffer, this.accessors[0]);\n }\n\n _setConstantAttribute(location, constant) {\n VertexArrayObject.setConstant(this.gl, location, constant);\n }\n\n _updateDrawParams() {\n const drawParams = {\n isIndexed: false,\n isInstanced: false,\n indexCount: Infinity,\n vertexCount: Infinity,\n instanceCount: Infinity\n };\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n this._updateDrawParamsForLocation(drawParams, location);\n }\n\n if (this.elements) {\n drawParams.elementCount = this.elements.getElementCount(this.elements.accessor);\n drawParams.isIndexed = true;\n drawParams.indexType = this.elementsAccessor.type || this.elements.accessor.type;\n drawParams.indexOffset = this.elementsAccessor.offset || 0;\n }\n\n if (drawParams.indexCount === Infinity) {\n drawParams.indexCount = 0;\n }\n\n if (drawParams.vertexCount === Infinity) {\n drawParams.vertexCount = 0;\n }\n\n if (drawParams.instanceCount === Infinity) {\n drawParams.instanceCount = 0;\n }\n\n return drawParams;\n }\n\n _updateDrawParamsForLocation(drawParams, location) {\n const value = this.values[location];\n const accessor = this.accessors[location];\n\n if (!value) {\n return;\n }\n\n const {\n divisor\n } = accessor;\n const isInstanced = divisor > 0;\n drawParams.isInstanced = drawParams.isInstanced || isInstanced;\n\n if (value instanceof Buffer) {\n const buffer = value;\n\n if (isInstanced) {\n const instanceCount = buffer.getVertexCount(accessor);\n drawParams.instanceCount = Math.min(drawParams.instanceCount, instanceCount);\n } else {\n const vertexCount = buffer.getVertexCount(accessor);\n drawParams.vertexCount = Math.min(drawParams.vertexCount, vertexCount);\n }\n }\n }\n\n setElements() {\n let elementBuffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n let accessor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n log.deprecated('setElements', 'setElementBuffer')();\n return this.setElementBuffer(elementBuffer, accessor);\n }\n\n}\n//# sourceMappingURL=vertex-array.js.map","import GL from '@luma.gl/constants';\nimport {log} from '@luma.gl/gltools';\nimport Accessor from './accessor';\nimport Buffer from './buffer';\nimport VertexArrayObject from './vertex-array-object';\nimport {assert} from '../utils/assert';\nimport {stubRemovedMethods} from '../utils/stub-methods';\n\nconst ERR_ATTRIBUTE_TYPE =\n 'VertexArray: attributes must be Buffers or constants (i.e. typed array)';\n\n// This is done to support mat type attributes.\n// See section \"Notes about setting mat type attributes\"\n// in vertex-array.md\nconst MULTI_LOCATION_ATTRIBUTE_REGEXP = /^(.+)__LOCATION_([0-9]+)$/;\n\nconst DEPRECATIONS_V6 = [\n 'setBuffers',\n 'setGeneric',\n 'clearBindings',\n 'setLocations',\n 'setGenericValues',\n 'setDivisor',\n 'enable',\n 'disable'\n];\n\nexport default class VertexArray {\n constructor(gl, opts = {}) {\n // Use program's id if program is supplied but no id is supplied\n const id = opts.id || (opts.program && opts.program.id);\n // super(gl, Object.assign({}, opts, {id}));\n\n this.id = id;\n this.gl = gl;\n this.configuration = null;\n\n // Extracted information\n this.elements = null;\n this.elementsAccessor = null;\n this.values = null;\n this.accessors = null;\n this.unused = null;\n this.drawParams = null;\n this.buffer = null; // For attribute 0 on desktops, and created when unbinding buffers\n\n this.attributes = {};\n\n this.vertexArrayObject = new VertexArrayObject(gl);\n\n // Issue errors when using removed methods\n stubRemovedMethods(this, 'VertexArray', 'v6.0', DEPRECATIONS_V6);\n\n this.initialize(opts);\n Object.seal(this);\n }\n\n delete() {\n if (this.buffer) {\n this.buffer.delete();\n }\n\n this.vertexArrayObject.delete();\n }\n\n initialize(props = {}) {\n this.reset();\n this.configuration = null;\n this.bindOnUse = false;\n return this.setProps(props);\n }\n\n // Resets all attributes (to default valued constants)\n reset() {\n // this.vertexArrayObject.reset();\n\n this.elements = null;\n this.elementsAccessor = null;\n const {MAX_ATTRIBUTES} = this.vertexArrayObject;\n this.values = new Array(MAX_ATTRIBUTES).fill(null);\n this.accessors = new Array(MAX_ATTRIBUTES).fill(null);\n this.unused = {};\n\n // Auto detects draw params\n this.drawParams = null;\n\n return this;\n }\n\n setProps(props) {\n if ('program' in props) {\n this.configuration = props.program && props.program.configuration;\n }\n if ('configuration' in props) {\n this.configuration = props.configuration;\n }\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('elements' in props) {\n this.setElementBuffer(props.elements);\n }\n if ('bindOnUse' in props) {\n props = props.bindOnUse;\n }\n return this;\n }\n\n // Automatically called if buffers changed through VertexArray API\n clearDrawParams() {\n this.drawParams = null;\n }\n\n getDrawParams() {\n // Auto deduced draw parameters\n this.drawParams = this.drawParams || this._updateDrawParams();\n\n return this.drawParams;\n }\n\n // Set (bind) an array or map of vertex array buffers, either in numbered or named locations.\n // For names that are not present in `location`, the supplied buffers will be ignored.\n // if a single buffer of type GL.ELEMENT_ARRAY_BUFFER is present, it will be set as elements\n // Signatures:\n // {attributeName: buffer}\n // {attributeName: [buffer, accessor]}\n // {attributeName: (typed) array} => constant\n setAttributes(attributes) {\n Object.assign(this.attributes, attributes);\n this.vertexArrayObject.bind(() => {\n for (const locationOrName in attributes) {\n const value = attributes[locationOrName];\n this._setAttribute(locationOrName, value);\n }\n // Make sure we don't leave any bindings\n this.gl.bindBuffer(GL.ARRAY_BUFFER, null);\n });\n\n return this;\n }\n\n // Set (bind) an elements buffer, for indexed rendering.\n // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported\n setElementBuffer(elementBuffer = null, accessor = {}) {\n this.elements = elementBuffer; // Save value for debugging\n this.elementsAccessor = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setElementBuffer(elementBuffer, accessor);\n\n return this;\n }\n\n // Set a location in vertex attributes array to a buffer\n setBuffer(locationOrName, buffer, appAccessor = {}) {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n return this.setElementBuffer(buffer, appAccessor);\n }\n\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n buffer,\n buffer.accessor,\n appAccessor\n );\n\n if (location >= 0) {\n this.values[location] = buffer;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setBuffer(location, buffer, accessor);\n }\n\n return this;\n }\n\n // Set attribute to constant value (small typed array corresponding to one vertex' worth of data)\n setConstant(locationOrName, arrayValue, appAccessor = {}) {\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n arrayValue,\n // Ensure that size isn't taken from program for multi-column\n // attributes\n Object.assign({size: arrayValue.length}, appAccessor)\n );\n\n if (location >= 0) {\n arrayValue = this.vertexArrayObject._normalizeConstantArrayValue(arrayValue);\n\n this.values[location] = arrayValue;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n\n // NOTE: We set the actual constant value later on bind. We can't set the value now since\n // constants are global and affect all other VertexArrays that have disabled attributes\n // in the same location.\n // We do disable the attribute which makes it use the global constant value at that location\n this.vertexArrayObject.enable(location, false);\n }\n\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, unbind temporarily to avoid conflicting with TransformFeedback\n unbindBuffers() {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.vertexArrayObject.setElementBuffer(null);\n }\n\n // Chrome does not like buffers that are bound to several binding points,\n // so we need to offer and unbind facility\n // WebGL offers disabling, but no clear way to set a VertexArray buffer to `null`\n // So we just bind all the attributes to the dummy \"attribute zero\" buffer\n this.buffer = this.buffer || new Buffer(this.gl, {accessor: {size: 4}});\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n if (this.values[location] instanceof Buffer) {\n this.gl.disableVertexAttribArray(location);\n this.gl.bindBuffer(GL.ARRAY_BUFFER, this.buffer.handle);\n this.gl.vertexAttribPointer(location, 1, GL.FLOAT, false, 0, 0);\n }\n }\n });\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, rebind rebind after temporary unbind\n bindBuffers() {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.setElementBuffer(this.elements);\n }\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n const buffer = this.values[location];\n if (buffer instanceof Buffer) {\n this.setBuffer(location, buffer);\n }\n }\n });\n return this;\n }\n\n // Bind for use\n // When a vertex array is about to be used, we must:\n // - Set constant attributes (since these are stored on the context and reset on bind)\n // - Check if we need to initialize the buffer\n bindForDraw(vertexCount, instanceCount, func) {\n let value;\n\n this.vertexArrayObject.bind(() => {\n // Make sure that any constant attributes are updated (stored on the context, not the VAO)\n // Also handles attribute 0\n this._setConstantAttributes(vertexCount, instanceCount);\n\n value = func();\n });\n\n return value;\n }\n\n // PRIVATE\n\n // Resolve locations and accessors\n _resolveLocationAndAccessor(locationOrName, value, valueAccessor, appAccessor) {\n const INVALID_RESULT = {\n location: -1,\n accessor: null\n };\n\n const {location, name} = this._getAttributeIndex(locationOrName);\n if (!Number.isFinite(location) || location < 0) {\n this.unused[locationOrName] = value;\n log.once(3, () => `unused value ${locationOrName} in ${this.id}`)();\n return INVALID_RESULT;\n }\n\n const accessInfo = this._getAttributeInfo(name || location);\n\n // Attribute location wasn't directly found.\n // Likely due to multi-location attributes (e.g. matrix)\n if (!accessInfo) {\n return INVALID_RESULT;\n }\n\n // Resolve the partial accessors into a final accessor\n const currentAccessor = this.accessors[location] || {};\n const accessor = Accessor.resolve(\n accessInfo.accessor,\n currentAccessor,\n valueAccessor,\n appAccessor\n );\n\n const {size, type} = accessor;\n assert(Number.isFinite(size) && Number.isFinite(type));\n\n return {location, accessor};\n }\n\n _getAttributeInfo(attributeName) {\n return this.configuration && this.configuration.getAttributeInfo(attributeName);\n }\n\n _getAttributeIndex(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return {location};\n }\n\n const multiLocation = MULTI_LOCATION_ATTRIBUTE_REGEXP.exec(locationOrName);\n const name = multiLocation ? multiLocation[1] : locationOrName;\n const locationOffset = multiLocation ? Number(multiLocation[2]) : 0;\n\n if (this.configuration) {\n return {\n location: this.configuration.getAttributeLocation(name) + locationOffset,\n name\n };\n }\n\n return {location: -1};\n }\n\n _setAttribute(locationOrName, value) {\n if (value instanceof Buffer) {\n // Signature: {attributeName: Buffer}\n this.setBuffer(locationOrName, value);\n } else if (Array.isArray(value) && value.length && value[0] instanceof Buffer) {\n // Signature: {attributeName: [buffer, accessor]}\n const buffer = value[0];\n const accessor = value[1];\n this.setBuffer(locationOrName, buffer, accessor);\n } else if (ArrayBuffer.isView(value) || Array.isArray(value)) {\n // Signature: {attributeName: constant}, constant == short (typed) array\n const constant = value;\n this.setConstant(locationOrName, constant);\n } else if (value.buffer instanceof Buffer) {\n // luma.gl v7: Support accessor objects with 'buffer' field\n // for interleaved data\n // Signature: {attributeName: {...accessor, buffer}}\n const accessor = value;\n this.setBuffer(locationOrName, accessor.buffer, accessor);\n } else {\n throw new Error(ERR_ATTRIBUTE_TYPE);\n }\n }\n\n // Updates all constant attribute values (constants are used when vertex attributes are disabled).\n // This needs to be done repeatedly since in contrast to buffer bindings,\n // constants are stored on the WebGL context, not the VAO\n _setConstantAttributes(vertexCount, instanceCount) {\n // TODO - use accessor to determine what length to use\n const elementCount = Math.max(vertexCount | 0, instanceCount | 0);\n let constant = this.values[0];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttributeZero(constant, elementCount);\n }\n\n for (let location = 1; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n constant = this.values[location];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttribute(location, constant);\n }\n }\n }\n\n _setConstantAttributeZero(constant, elementCount) {\n if (VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true})) {\n this._setConstantAttribute(0, constant);\n return;\n }\n\n // Get a dummy buffer populated with repeated constants\n const buffer = this.vertexArrayObject.getConstantBuffer(elementCount, constant);\n\n // Set the buffer on location 0\n this.vertexArrayObject.setBuffer(0, buffer, this.accessors[0]);\n }\n\n _setConstantAttribute(location, constant) {\n VertexArrayObject.setConstant(this.gl, location, constant);\n }\n\n // Walks the buffers and updates draw parameters\n _updateDrawParams() {\n const drawParams = {\n isIndexed: false,\n isInstanced: false,\n indexCount: Infinity,\n vertexCount: Infinity,\n instanceCount: Infinity\n };\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n this._updateDrawParamsForLocation(drawParams, location);\n }\n\n if (this.elements) {\n // indexing is autodetected - buffer with target GL.ELEMENT_ARRAY_BUFFER\n // index type is saved for drawElement calls\n drawParams.elementCount = this.elements.getElementCount(this.elements.accessor);\n drawParams.isIndexed = true;\n drawParams.indexType = this.elementsAccessor.type || this.elements.accessor.type;\n drawParams.indexOffset = this.elementsAccessor.offset || 0;\n }\n\n // Post-calculation checks\n if (drawParams.indexCount === Infinity) {\n drawParams.indexCount = 0;\n }\n if (drawParams.vertexCount === Infinity) {\n drawParams.vertexCount = 0;\n }\n if (drawParams.instanceCount === Infinity) {\n drawParams.instanceCount = 0;\n }\n\n return drawParams;\n }\n\n _updateDrawParamsForLocation(drawParams, location) {\n const value = this.values[location];\n const accessor = this.accessors[location];\n\n if (!value) {\n return;\n }\n\n // Check if instanced (whether buffer or constant)\n const {divisor} = accessor;\n const isInstanced = divisor > 0;\n drawParams.isInstanced = drawParams.isInstanced || isInstanced;\n\n if (value instanceof Buffer) {\n const buffer = value;\n\n if (isInstanced) {\n // instance attribute\n const instanceCount = buffer.getVertexCount(accessor);\n drawParams.instanceCount = Math.min(drawParams.instanceCount, instanceCount);\n } else {\n // normal attribute\n const vertexCount = buffer.getVertexCount(accessor);\n drawParams.vertexCount = Math.min(drawParams.vertexCount, vertexCount);\n }\n }\n }\n\n // DEPRECATED in v6.x - but not warnings not properly implemented\n\n setElements(elementBuffer = null, accessor = {}) {\n log.deprecated('setElements', 'setElementBuffer')();\n return this.setElementBuffer(elementBuffer, accessor);\n }\n}\n","import Resource from './resource';\nimport Buffer from './buffer';\nimport { isWebGL2 } from '@luma.gl/gltools';\nimport { getScratchArray, fillArray } from '../utils/array-utils-flat';\nimport { assert } from '../utils/assert';\nimport { getBrowser } from '@probe.gl/env';\nconst ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';\nexport default class VertexArrayObject extends Resource {\n get [Symbol.toStringTag]() {\n return 'VertexArrayObject';\n }\n\n static isSupported(gl) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (options.constantAttributeZero) {\n return isWebGL2(gl) || getBrowser() === 'Chrome';\n }\n\n return true;\n }\n\n static getDefaultArray(gl) {\n gl.luma = gl.luma || {};\n\n if (!gl.luma.defaultVertexArray) {\n gl.luma.defaultVertexArray = new VertexArrayObject(gl, {\n handle: null,\n isDefaultArray: true\n });\n }\n\n return gl.luma.defaultVertexArray;\n }\n\n static getMaxAttributes(gl) {\n VertexArrayObject.MAX_ATTRIBUTES = VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(34921);\n return VertexArrayObject.MAX_ATTRIBUTES;\n }\n\n static setConstant(gl, location, array) {\n switch (array.constructor) {\n case Float32Array:\n VertexArrayObject._setConstantFloatArray(gl, location, array);\n\n break;\n\n case Int32Array:\n VertexArrayObject._setConstantIntArray(gl, location, array);\n\n break;\n\n case Uint32Array:\n VertexArrayObject._setConstantUintArray(gl, location, array);\n\n break;\n\n default:\n assert(false);\n }\n }\n\n constructor(gl) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const id = opts.id || opts.program && opts.program.id;\n super(gl, Object.assign({}, opts, {\n id\n }));\n this.buffer = null;\n this.bufferValue = null;\n this.isDefaultArray = opts.isDefaultArray || false;\n this.gl2 = gl;\n this.initialize(opts);\n Object.seal(this);\n }\n\n delete() {\n super.delete();\n\n if (this.buffer) {\n this.buffer.delete();\n }\n\n return this;\n }\n\n get MAX_ATTRIBUTES() {\n return VertexArrayObject.getMaxAttributes(this.gl);\n }\n\n initialize() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return this.setProps(props);\n }\n\n setProps(props) {\n return this;\n }\n\n setElementBuffer() {\n let elementBuffer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n assert(!elementBuffer || elementBuffer.target === 34963, ERR_ELEMENTS);\n this.bind(() => {\n this.gl.bindBuffer(34963, elementBuffer ? elementBuffer.handle : null);\n });\n return this;\n }\n\n setBuffer(location, buffer, accessor) {\n if (buffer.target === 34963) {\n return this.setElementBuffer(buffer, accessor);\n }\n\n const {\n size,\n type,\n stride,\n offset,\n normalized,\n integer,\n divisor\n } = accessor;\n const {\n gl,\n gl2\n } = this;\n location = Number(location);\n this.bind(() => {\n gl.bindBuffer(34962, buffer.handle);\n\n if (integer) {\n assert(isWebGL2(gl));\n gl2.vertexAttribIPointer(location, size, type, stride, offset);\n } else {\n gl.vertexAttribPointer(location, size, type, normalized, stride, offset);\n }\n\n gl.enableVertexAttribArray(location);\n gl2.vertexAttribDivisor(location, divisor || 0);\n });\n return this;\n }\n\n enable(location) {\n let enable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n const disablingAttributeZero = !enable && location === 0 && !VertexArrayObject.isSupported(this.gl, {\n constantAttributeZero: true\n });\n\n if (!disablingAttributeZero) {\n location = Number(location);\n this.bind(() => enable ? this.gl.enableVertexAttribArray(location) : this.gl.disableVertexAttribArray(location));\n }\n\n return this;\n }\n\n getConstantBuffer(elementCount, value) {\n const constantValue = this._normalizeConstantArrayValue(value);\n\n const byteLength = constantValue.byteLength * elementCount;\n const length = constantValue.length * elementCount;\n let updateNeeded = !this.buffer;\n this.buffer = this.buffer || new Buffer(this.gl, byteLength);\n updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);\n updateNeeded = updateNeeded || !this._compareConstantArrayValues(constantValue, this.bufferValue);\n\n if (updateNeeded) {\n const typedArray = getScratchArray(value.constructor, length);\n fillArray({\n target: typedArray,\n source: constantValue,\n start: 0,\n count: length\n });\n this.buffer.subData(typedArray);\n this.bufferValue = value;\n }\n\n return this.buffer;\n }\n\n _normalizeConstantArrayValue(arrayValue) {\n if (Array.isArray(arrayValue)) {\n return new Float32Array(arrayValue);\n }\n\n return arrayValue;\n }\n\n _compareConstantArrayValues(v1, v2) {\n if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {\n return false;\n }\n\n for (let i = 0; i < v1.length; ++i) {\n if (v1[i] !== v2[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n static _setConstantFloatArray(gl, location, array) {\n switch (array.length) {\n case 1:\n gl.vertexAttrib1fv(location, array);\n break;\n\n case 2:\n gl.vertexAttrib2fv(location, array);\n break;\n\n case 3:\n gl.vertexAttrib3fv(location, array);\n break;\n\n case 4:\n gl.vertexAttrib4fv(location, array);\n break;\n\n default:\n assert(false);\n }\n }\n\n static _setConstantIntArray(gl, location, array) {\n assert(isWebGL2(gl));\n\n switch (array.length) {\n case 1:\n gl.vertexAttribI1iv(location, array);\n break;\n\n case 2:\n gl.vertexAttribI2iv(location, array);\n break;\n\n case 3:\n gl.vertexAttribI3iv(location, array);\n break;\n\n case 4:\n gl.vertexAttribI4iv(location, array);\n break;\n\n default:\n assert(false);\n }\n }\n\n static _setConstantUintArray(gl, location, array) {\n assert(isWebGL2(gl));\n\n switch (array.length) {\n case 1:\n gl.vertexAttribI1uiv(location, array);\n break;\n\n case 2:\n gl.vertexAttribI2uiv(location, array);\n break;\n\n case 3:\n gl.vertexAttribI3uiv(location, array);\n break;\n\n case 4:\n gl.vertexAttribI4uiv(location, array);\n break;\n\n default:\n assert(false);\n }\n }\n\n _createHandle() {\n const gl2 = this.gl;\n return gl2.createVertexArray();\n }\n\n _deleteHandle(handle) {\n this.gl2.deleteVertexArray(handle);\n return [this.elements];\n }\n\n _bindHandle(handle) {\n this.gl2.bindVertexArray(handle);\n }\n\n _getParameter(pname, _ref) {\n let {\n location\n } = _ref;\n assert(Number.isFinite(location));\n return this.bind(() => {\n switch (pname) {\n case 34373:\n return this.gl.getVertexAttribOffset(location, pname);\n\n default:\n return this.gl.getVertexAttrib(location, pname);\n }\n });\n }\n\n}\n//# sourceMappingURL=vertex-array-object.js.map","import GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {getScratchArray, fillArray} from '../utils/array-utils-flat';\nimport {assert} from '../utils/assert';\nimport {getBrowser} from '@probe.gl/env';\n\nconst ERR_ELEMENTS = 'elements must be GL.ELEMENT_ARRAY_BUFFER';\n\nexport default class VertexArrayObject extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'VertexArrayObject';\n }\n static isSupported(gl, options = {}) {\n // Attribute 0 can not be disable on most desktop OpenGL based browsers\n // and on iOS Safari browser.\n if (options.constantAttributeZero) {\n return isWebGL2(gl) || getBrowser() === 'Chrome';\n }\n\n // Whether additional objects can be created\n return true;\n }\n\n // Returns the global (null) vertex array object. Exists even when no extension available\n // TODO(Tarek): VAOs are now polyfilled. Deprecate this in 9.0\n static getDefaultArray(gl) {\n gl.luma = gl.luma || {};\n if (!gl.luma.defaultVertexArray) {\n gl.luma.defaultVertexArray = new VertexArrayObject(gl, {handle: null, isDefaultArray: true});\n }\n return gl.luma.defaultVertexArray;\n }\n\n static getMaxAttributes(gl) {\n // TODO - should be cached per context\n // @ts-ignore\n VertexArrayObject.MAX_ATTRIBUTES =\n // @ts-ignore\n VertexArrayObject.MAX_ATTRIBUTES || gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n // @ts-ignore\n return VertexArrayObject.MAX_ATTRIBUTES;\n }\n\n // Note: Constants are stored globally on the WebGL context, not the VAO\n // So they need to be updated before every render\n // TODO - use known type (in configuration or passed in) to allow non-typed arrays?\n // TODO - remember/cache values to avoid setting them unnecessarily?\n static setConstant(gl, location, array) {\n switch (array.constructor) {\n case Float32Array:\n VertexArrayObject._setConstantFloatArray(gl, location, array);\n break;\n case Int32Array:\n VertexArrayObject._setConstantIntArray(gl, location, array);\n break;\n case Uint32Array:\n VertexArrayObject._setConstantUintArray(gl, location, array);\n break;\n default:\n assert(false);\n }\n }\n\n // Create a VertexArray\n constructor(gl, opts = {}) {\n // Use program's id if program but no id is supplied\n const id = opts.id || (opts.program && opts.program.id);\n super(gl, Object.assign({}, opts, {id}));\n\n this.buffer = null;\n this.bufferValue = null;\n this.isDefaultArray = opts.isDefaultArray || false;\n\n /** @type {WebGL2RenderingContext} */\n this.gl2 = gl;\n\n this.initialize(opts);\n\n Object.seal(this);\n }\n\n delete() {\n super.delete();\n if (this.buffer) {\n this.buffer.delete();\n }\n return this;\n }\n\n get MAX_ATTRIBUTES() {\n return VertexArrayObject.getMaxAttributes(this.gl);\n }\n\n initialize(props = {}) {\n return this.setProps(props);\n }\n\n setProps(props) {\n // TODO: decide which props should be supported\n return this;\n }\n\n // Set (bind) an elements buffer, for indexed rendering.\n // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported\n setElementBuffer(elementBuffer = null, opts = {}) {\n assert(!elementBuffer || elementBuffer.target === GL.ELEMENT_ARRAY_BUFFER, ERR_ELEMENTS);\n\n // The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject...\n this.bind(() => {\n this.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, elementBuffer ? elementBuffer.handle : null);\n });\n\n return this;\n }\n\n // Set a location in vertex attributes array to a bufferk, enables the location, sets divisor\n setBuffer(location, buffer, accessor) {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n return this.setElementBuffer(buffer, accessor);\n }\n\n const {size, type, stride, offset, normalized, integer, divisor} = accessor;\n\n const {gl, gl2} = this;\n location = Number(location);\n\n this.bind(() => {\n // A non-zero buffer object must be bound to the GL_ARRAY_BUFFER target\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer.handle);\n\n // WebGL2 supports *integer* data formats, i.e. GPU will see integer values\n if (integer) {\n assert(isWebGL2(gl));\n gl2.vertexAttribIPointer(location, size, type, stride, offset);\n } else {\n // Attaches ARRAY_BUFFER with specified buffer format to location\n gl.vertexAttribPointer(location, size, type, normalized, stride, offset);\n }\n gl.enableVertexAttribArray(location);\n gl2.vertexAttribDivisor(location, divisor || 0);\n\n // NOTE We don't unbind buffer here, typically another buffer will be bound just after\n });\n\n return this;\n }\n\n // Enabling an attribute location makes it reference the currently bound buffer\n // Disabling an attribute location makes it reference the global constant value\n // TODO - handle single values for size 1 attributes?\n // TODO - convert classic arrays based on known type?\n enable(location, enable = true) {\n // Attribute 0 cannot be disabled in most desktop OpenGL based browsers\n const disablingAttributeZero =\n !enable &&\n location === 0 &&\n !VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true});\n\n if (!disablingAttributeZero) {\n location = Number(location);\n this.bind(\n () =>\n enable\n ? this.gl.enableVertexAttribArray(location)\n : this.gl.disableVertexAttribArray(location)\n );\n }\n return this;\n }\n\n // Provide a means to create a buffer that is equivalent to a constant.\n // NOTE: Desktop OpenGL cannot disable attribute 0.\n // https://stackoverflow.com/questions/20305231/webgl-warning-attribute-0-is-disabled-\n // this-has-significant-performance-penalt\n getConstantBuffer(elementCount, value) {\n // Create buffer only when needed, and reuse it (avoids inflating buffer creation statistics)\n\n const constantValue = this._normalizeConstantArrayValue(value);\n\n const byteLength = constantValue.byteLength * elementCount;\n const length = constantValue.length * elementCount;\n\n let updateNeeded = !this.buffer;\n\n this.buffer = this.buffer || new Buffer(this.gl, byteLength);\n updateNeeded = updateNeeded || this.buffer.reallocate(byteLength);\n\n // Reallocate and update contents if needed\n updateNeeded =\n updateNeeded || !this._compareConstantArrayValues(constantValue, this.bufferValue);\n\n if (updateNeeded) {\n // Create a typed array that is big enough, and fill it with the required data\n const typedArray = getScratchArray(value.constructor, length);\n fillArray({target: typedArray, source: constantValue, start: 0, count: length});\n this.buffer.subData(typedArray);\n this.bufferValue = value;\n }\n\n return this.buffer;\n }\n\n // PRIVATE\n\n // TODO - convert Arrays based on known type? (read type from accessor, don't assume Float32Array)\n // TODO - handle single values for size 1 attributes?\n _normalizeConstantArrayValue(arrayValue) {\n if (Array.isArray(arrayValue)) {\n return new Float32Array(arrayValue);\n }\n return arrayValue;\n }\n\n _compareConstantArrayValues(v1, v2) {\n if (!v1 || !v2 || v1.length !== v2.length || v1.constructor !== v2.constructor) {\n return false;\n }\n for (let i = 0; i < v1.length; ++i) {\n if (v1[i] !== v2[i]) {\n return false;\n }\n }\n return true;\n }\n\n static _setConstantFloatArray(gl, location, array) {\n switch (array.length) {\n case 1:\n gl.vertexAttrib1fv(location, array);\n break;\n case 2:\n gl.vertexAttrib2fv(location, array);\n break;\n case 3:\n gl.vertexAttrib3fv(location, array);\n break;\n case 4:\n gl.vertexAttrib4fv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n static _setConstantIntArray(gl, location, array) {\n assert(isWebGL2(gl));\n switch (array.length) {\n case 1:\n gl.vertexAttribI1iv(location, array);\n break;\n case 2:\n gl.vertexAttribI2iv(location, array);\n break;\n case 3:\n gl.vertexAttribI3iv(location, array);\n break;\n case 4:\n gl.vertexAttribI4iv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n static _setConstantUintArray(gl, location, array) {\n assert(isWebGL2(gl));\n switch (array.length) {\n case 1:\n gl.vertexAttribI1uiv(location, array);\n break;\n case 2:\n gl.vertexAttribI2uiv(location, array);\n break;\n case 3:\n gl.vertexAttribI3uiv(location, array);\n break;\n case 4:\n gl.vertexAttribI4uiv(location, array);\n break;\n default:\n assert(false);\n }\n }\n\n // RESOURCE IMPLEMENTATION\n\n _createHandle() {\n /** @type {WebGL2RenderingContext} */\n // @ts-ignore\n const gl2 = this.gl;\n return gl2.createVertexArray();\n }\n\n _deleteHandle(handle) {\n this.gl2.deleteVertexArray(handle);\n // @ts-ignore\n return [this.elements];\n // return [this.elements, ...this.buffers];\n }\n\n _bindHandle(handle) {\n this.gl2.bindVertexArray(handle);\n }\n\n // Generic getter for information about a vertex attribute at a given position\n _getParameter(pname, {location}) {\n assert(Number.isFinite(location));\n return this.bind(() => {\n switch (pname) {\n case GL.VERTEX_ATTRIB_ARRAY_POINTER:\n return this.gl.getVertexAttribOffset(location, pname);\n default:\n return this.gl.getVertexAttrib(location, pname);\n }\n });\n }\n}\n","let arrayBuffer = null;\nexport function getScratchArrayBuffer(byteLength) {\n if (!arrayBuffer || arrayBuffer.byteLength < byteLength) {\n arrayBuffer = new ArrayBuffer(byteLength);\n }\n\n return arrayBuffer;\n}\nexport function getScratchArray(Type, length) {\n const scratchArrayBuffer = getScratchArrayBuffer(Type.BYTES_PER_ELEMENT * length);\n return new Type(scratchArrayBuffer, 0, length);\n}\nexport function fillArray(_ref) {\n let {\n target,\n source,\n start = 0,\n count = 1\n } = _ref;\n const length = source.length;\n const total = count * length;\n let copied = 0;\n\n for (let i = start; copied < length; copied++) {\n target[i++] = source[copied];\n }\n\n while (copied < total) {\n if (copied < total - copied) {\n target.copyWithin(start + copied, start, start + copied);\n copied *= 2;\n } else {\n target.copyWithin(start + copied, start, start + total - copied);\n copied = total;\n }\n }\n\n return target;\n}\n//# sourceMappingURL=array-utils-flat.js.map","let arrayBuffer = null;\n\nexport function getScratchArrayBuffer(byteLength) {\n if (!arrayBuffer || arrayBuffer.byteLength < byteLength) {\n arrayBuffer = new ArrayBuffer(byteLength);\n }\n return arrayBuffer;\n}\n\nexport function getScratchArray(Type, length) {\n const scratchArrayBuffer = getScratchArrayBuffer(Type.BYTES_PER_ELEMENT * length);\n return new Type(scratchArrayBuffer, 0, length); // arrayBuffer, byteOffset, length (in elements)\n}\n\n// Uses copyWithin to significantly speed up typed array value filling\nexport function fillArray({target, source, start = 0, count = 1}) {\n const length = source.length;\n const total = count * length;\n let copied = 0;\n for (let i = start; copied < length; copied++) {\n target[i++] = source[copied];\n }\n\n while (copied < total) {\n // If we have copied less than half, copy everything we got\n // else copy remaining in one operation\n if (copied < total - copied) {\n target.copyWithin(start + copied, start, start + copied);\n copied *= 2;\n } else {\n target.copyWithin(start + copied, start, start + total - copied);\n copied = total;\n }\n }\n\n return target;\n}\n\n/*\n\n// Creates a new Uint8Array based on two different ArrayBuffers\n// @private\n// @param {ArrayBuffers} buffer1 The first buffer.\n// @param {ArrayBuffers} buffer2 The second buffer.\n// @return {ArrayBuffers} The new ArrayBuffer created out of the two.\n//\nexport function copyArrayBuffer(\n targetBuffer, sourceBuffer, byteOffset, byteLength = sourceBuffer.byteLength\n) {\n const targetArray = new Uint8Array(targetBuffer, byteOffset, byteLength);\n const sourceArray = new Uint8Array(sourceBuffer);\n targetArray.set(sourceArray);\n return targetBuffer;\n}\n\n*/\n","import isBrowser from './is-browser';\nimport isElectron from './is-electron';\nconst window = globalThis;\nexport function isMobile() {\n return typeof window.orientation !== 'undefined';\n}\nexport default function getBrowser(mockUserAgent) {\n if (!mockUserAgent && !isBrowser()) {\n return 'Node';\n }\n\n if (isElectron(mockUserAgent)) {\n return 'Electron';\n }\n\n const navigator_ = typeof navigator !== 'undefined' ? navigator : {};\n const userAgent = mockUserAgent || navigator_.userAgent || '';\n\n if (userAgent.indexOf('Edge') > -1) {\n return 'Edge';\n }\n\n const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n const isTrident = userAgent.indexOf('Trident/') !== -1;\n\n if (isMSIE || isTrident) {\n return 'IE';\n }\n\n if (window.chrome) {\n return 'Chrome';\n }\n\n if (window.safari) {\n return 'Safari';\n }\n\n if (window.mozInnerScreenX) {\n return 'Firefox';\n }\n\n return 'Unknown';\n}\n//# sourceMappingURL=get-browser.js.map","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// This function is needed in initialization stages,\n// make sure it can be imported in isolation\n\nimport isBrowser from './is-browser';\nimport isElectron from './is-electron';\n\nconst window = globalThis;\n\nexport function isMobile(): boolean {\n return typeof window.orientation !== 'undefined';\n}\n\n// Simple browser detection\n// `mockUserAgent` parameter allows user agent to be overridden for testing\n/* eslint-disable complexity */\nexport default function getBrowser(\n mockUserAgent?: string\n): 'Node' | 'Electron' | 'Chrome' | 'Firefox' | 'Safari' | 'Edge' | 'IE' | 'Unknown' {\n if (!mockUserAgent && !isBrowser()) {\n return 'Node';\n }\n\n if (isElectron(mockUserAgent)) {\n return 'Electron';\n }\n\n const navigator_ = typeof navigator !== 'undefined' ? navigator : {};\n // @ts-expect-error\n const userAgent = mockUserAgent || navigator_.userAgent || '';\n // const appVersion = navigator_.appVersion || '';\n\n // NOTE: Order of tests matter, as many agents list Chrome etc.\n if (userAgent.indexOf('Edge') > -1) {\n return 'Edge';\n }\n const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n const isTrident = userAgent.indexOf('Trident/') !== -1;\n if (isMSIE || isTrident) {\n return 'IE';\n }\n if (window.chrome) {\n return 'Chrome';\n }\n if (window.safari) {\n return 'Safari';\n }\n if (window.mozInnerScreenX) {\n return 'Firefox';\n }\n return 'Unknown';\n}\n","import { Buffer, assert } from '@luma.gl/webgl';\nconst GLTF_TO_LUMA_ATTRIBUTE_MAP = {\n POSITION: 'positions',\n NORMAL: 'normals',\n COLOR_0: 'colors',\n TEXCOORD_0: 'texCoords',\n TEXCOORD_1: 'texCoords1',\n TEXCOORD_2: 'texCoords2'\n};\nexport function getBuffersFromGeometry(gl, geometry, options) {\n const buffers = {};\n let indices = geometry.indices;\n\n for (const name in geometry.attributes) {\n const attribute = geometry.attributes[name];\n const remappedName = mapAttributeName(name, options);\n\n if (name === 'indices') {\n indices = attribute;\n } else if (attribute.constant) {\n buffers[remappedName] = attribute.value;\n } else {\n const typedArray = attribute.value;\n const accessor = { ...attribute\n };\n delete accessor.value;\n buffers[remappedName] = [new Buffer(gl, typedArray), accessor];\n inferAttributeAccessor(name, accessor);\n }\n }\n\n if (indices) {\n const data = indices.value || indices;\n assert(data instanceof Uint16Array || data instanceof Uint32Array, 'attribute array for \"indices\" must be of integer type');\n const accessor = {\n size: 1,\n isIndexed: indices.isIndexed === undefined ? true : indices.isIndexed\n };\n buffers.indices = [new Buffer(gl, {\n data,\n target: 34963\n }), accessor];\n }\n\n return buffers;\n}\n\nfunction mapAttributeName(name, options) {\n const {\n attributeMap = GLTF_TO_LUMA_ATTRIBUTE_MAP\n } = options || {};\n return attributeMap && attributeMap[name] || name;\n}\n\nexport function inferAttributeAccessor(attributeName, attribute) {\n let category;\n\n switch (attributeName) {\n case 'texCoords':\n case 'texCoord1':\n case 'texCoord2':\n case 'texCoord3':\n category = 'uvs';\n break;\n\n case 'vertices':\n case 'positions':\n case 'normals':\n case 'pickingColors':\n category = 'vectors';\n break;\n\n default:\n }\n\n switch (category) {\n case 'vectors':\n attribute.size = attribute.size || 3;\n break;\n\n case 'uvs':\n attribute.size = attribute.size || 2;\n break;\n\n default:\n }\n\n assert(Number.isFinite(attribute.size), \"attribute \".concat(attributeName, \" needs size\"));\n}\n//# sourceMappingURL=model-utils.js.map","import GL from '@luma.gl/constants';\nimport {Buffer, assert} from '@luma.gl/webgl';\n\n// Support for mapping new geometries with glTF attribute names to \"classic\" luma.gl shader names\nconst GLTF_TO_LUMA_ATTRIBUTE_MAP = {\n POSITION: 'positions',\n NORMAL: 'normals',\n COLOR_0: 'colors',\n TEXCOORD_0: 'texCoords',\n TEXCOORD_1: 'texCoords1',\n TEXCOORD_2: 'texCoords2'\n};\n\nexport function getBuffersFromGeometry(gl, geometry, options) {\n const buffers = {};\n let indices = geometry.indices;\n\n for (const name in geometry.attributes) {\n const attribute = geometry.attributes[name];\n const remappedName = mapAttributeName(name, options);\n\n if (name === 'indices') {\n indices = attribute;\n } else if (attribute.constant) {\n buffers[remappedName] = attribute.value;\n } else {\n const typedArray = attribute.value;\n // Create accessor by copying the attribute and removing `value``\n const accessor = {...attribute};\n delete accessor.value;\n buffers[remappedName] = [new Buffer(gl, typedArray), accessor];\n\n inferAttributeAccessor(name, accessor);\n }\n }\n\n if (indices) {\n const data = indices.value || indices;\n assert(\n data instanceof Uint16Array || data instanceof Uint32Array,\n 'attribute array for \"indices\" must be of integer type'\n );\n const accessor = {\n size: 1,\n isIndexed: indices.isIndexed === undefined ? true : indices.isIndexed\n };\n buffers.indices = [\n new Buffer(gl, {\n data,\n target: GL.ELEMENT_ARRAY_BUFFER\n }),\n accessor\n ];\n }\n\n return buffers;\n}\n\nfunction mapAttributeName(name, options) {\n const {attributeMap = GLTF_TO_LUMA_ATTRIBUTE_MAP} = options || {};\n return (attributeMap && attributeMap[name]) || name;\n}\n\n// Check for well known attribute names\n// eslint-disable-next-line complexity\nexport function inferAttributeAccessor(attributeName, attribute) {\n let category;\n switch (attributeName) {\n case 'texCoords':\n case 'texCoord1':\n case 'texCoord2':\n case 'texCoord3':\n category = 'uvs';\n break;\n case 'vertices':\n case 'positions':\n case 'normals':\n case 'pickingColors':\n category = 'vectors';\n break;\n default:\n }\n\n // Check for categorys\n switch (category) {\n case 'vectors':\n attribute.size = attribute.size || 3;\n break;\n case 'uvs':\n attribute.size = attribute.size || 2;\n break;\n default:\n }\n\n assert(Number.isFinite(attribute.size), `attribute ${attributeName} needs size`);\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Buffer, Transform } from '@luma.gl/core';\nimport Attribute from '../lib/attribute/attribute';\nimport { padBuffer, getAttributeTypeFromSize, getSourceBufferAttribute, getAttributeBufferLength, cycleBuffers } from '../lib/attribute/attribute-transition-utils';\nimport Transition from './transition';\nexport default class GPUInterpolationTransition {\n constructor({\n gl,\n attribute,\n timeline\n }) {\n _defineProperty(this, \"gl\", void 0);\n\n _defineProperty(this, \"type\", 'interpolation');\n\n _defineProperty(this, \"attributeInTransition\", void 0);\n\n _defineProperty(this, \"settings\", void 0);\n\n _defineProperty(this, \"attribute\", void 0);\n\n _defineProperty(this, \"transition\", void 0);\n\n _defineProperty(this, \"currentStartIndices\", void 0);\n\n _defineProperty(this, \"currentLength\", void 0);\n\n _defineProperty(this, \"transform\", void 0);\n\n _defineProperty(this, \"buffers\", void 0);\n\n this.gl = gl;\n this.transition = new Transition(timeline);\n this.attribute = attribute;\n this.attributeInTransition = new Attribute(gl, attribute.settings);\n this.currentStartIndices = attribute.startIndices;\n this.currentLength = 0;\n this.transform = getTransform(gl, attribute);\n const bufferOpts = {\n byteLength: 0,\n usage: 35050\n };\n this.buffers = [new Buffer(gl, bufferOpts), new Buffer(gl, bufferOpts)];\n }\n\n get inProgress() {\n return this.transition.inProgress;\n }\n\n start(transitionSettings, numInstances) {\n if (transitionSettings.duration <= 0) {\n this.transition.cancel();\n return;\n }\n\n this.settings = transitionSettings;\n const {\n gl,\n buffers,\n attribute\n } = this;\n cycleBuffers(buffers);\n const padBufferOpts = {\n numInstances,\n attribute,\n fromLength: this.currentLength,\n fromStartIndices: this.currentStartIndices,\n getData: transitionSettings.enter\n };\n\n for (const buffer of buffers) {\n padBuffer({\n buffer,\n ...padBufferOpts\n });\n }\n\n this.currentStartIndices = attribute.startIndices;\n this.currentLength = getAttributeBufferLength(attribute, numInstances);\n this.attributeInTransition.setData({\n buffer: buffers[1],\n value: attribute.value\n });\n this.transition.start(transitionSettings);\n this.transform.update({\n elementCount: Math.floor(this.currentLength / attribute.size),\n sourceBuffers: {\n aFrom: buffers[0],\n aTo: getSourceBufferAttribute(gl, attribute)\n },\n feedbackBuffers: {\n vCurrent: buffers[1]\n }\n });\n }\n\n update() {\n const updated = this.transition.update();\n\n if (updated) {\n const {\n duration,\n easing\n } = this.settings;\n const {\n time\n } = this.transition;\n let t = time / duration;\n\n if (easing) {\n t = easing(t);\n }\n\n this.transform.run({\n uniforms: {\n time: t\n }\n });\n }\n\n return updated;\n }\n\n cancel() {\n this.transition.cancel();\n this.transform.delete();\n\n for (const buffer of this.buffers) {\n buffer.delete();\n }\n\n this.buffers.length = 0;\n }\n\n}\nconst vs = \"\\n#define SHADER_NAME interpolation-transition-vertex-shader\\n\\nuniform float time;\\nattribute ATTRIBUTE_TYPE aFrom;\\nattribute ATTRIBUTE_TYPE aTo;\\nvarying ATTRIBUTE_TYPE vCurrent;\\n\\nvoid main(void) {\\n vCurrent = mix(aFrom, aTo, time);\\n gl_Position = vec4(0.0);\\n}\\n\";\n\nfunction getTransform(gl, attribute) {\n const attributeType = getAttributeTypeFromSize(attribute.size);\n return new Transform(gl, {\n vs,\n defines: {\n ATTRIBUTE_TYPE: attributeType\n },\n varyings: ['vCurrent']\n });\n}\n//# sourceMappingURL=gpu-interpolation-transition.js.map","import GL from '@luma.gl/constants';\nimport {Buffer, Transform} from '@luma.gl/core';\nimport Attribute from '../lib/attribute/attribute';\nimport {\n padBuffer,\n getAttributeTypeFromSize,\n getSourceBufferAttribute,\n getAttributeBufferLength,\n cycleBuffers,\n InterpolationTransitionSettings\n} from '../lib/attribute/attribute-transition-utils';\nimport Transition from './transition';\n\nimport type {Timeline, Transform as LumaTransform} from '@luma.gl/engine';\nimport type {Buffer as LumaBuffer} from '@luma.gl/webgl';\nimport type {NumericArray} from '../types/types';\nimport type GPUTransition from './gpu-transition';\n\nexport default class GPUInterpolationTransition implements GPUTransition {\n gl: WebGLRenderingContext;\n type = 'interpolation';\n attributeInTransition: Attribute;\n\n private settings?: InterpolationTransitionSettings;\n private attribute: Attribute;\n private transition: Transition;\n private currentStartIndices: NumericArray | null;\n private currentLength: number;\n private transform: LumaTransform;\n private buffers: LumaBuffer[];\n\n constructor({\n gl,\n attribute,\n timeline\n }: {\n gl: WebGLRenderingContext;\n attribute: Attribute;\n timeline: Timeline;\n }) {\n this.gl = gl;\n this.transition = new Transition(timeline);\n this.attribute = attribute;\n // this is the attribute we return during the transition - note: if it is a constant\n // attribute, it will be converted and returned as a regular attribute\n // `attribute.userData` is the original options passed when constructing the attribute.\n // This ensures that we set the proper `doublePrecision` flag and shader attributes.\n this.attributeInTransition = new Attribute(gl, attribute.settings);\n this.currentStartIndices = attribute.startIndices;\n // storing currentLength because this.buffer may be larger than the actual length we want to use\n // this is because we only reallocate buffers when they grow, not when they shrink,\n // due to performance costs\n this.currentLength = 0;\n this.transform = getTransform(gl, attribute);\n const bufferOpts = {\n byteLength: 0,\n usage: GL.DYNAMIC_COPY\n };\n this.buffers = [\n new Buffer(gl, bufferOpts), // from\n new Buffer(gl, bufferOpts) // current\n ];\n }\n\n get inProgress(): boolean {\n return this.transition.inProgress;\n }\n\n // this is called when an attribute's values have changed and\n // we need to start animating towards the new values\n // this also correctly resizes / pads the transform's buffers\n // in case the attribute's buffer has changed in length or in\n // startIndices\n start(transitionSettings: InterpolationTransitionSettings, numInstances: number): void {\n if (transitionSettings.duration <= 0) {\n this.transition.cancel();\n return;\n }\n this.settings = transitionSettings;\n\n const {gl, buffers, attribute} = this;\n // Alternate between two buffers when new transitions start.\n // Last destination buffer is used as an attribute (from state),\n // And the other buffer is now the current buffer.\n cycleBuffers(buffers);\n\n const padBufferOpts = {\n numInstances,\n attribute,\n fromLength: this.currentLength,\n fromStartIndices: this.currentStartIndices,\n getData: transitionSettings.enter\n };\n\n for (const buffer of buffers) {\n padBuffer({buffer, ...padBufferOpts});\n }\n\n this.currentStartIndices = attribute.startIndices;\n this.currentLength = getAttributeBufferLength(attribute, numInstances);\n this.attributeInTransition.setData({\n buffer: buffers[1],\n // Hack: Float64Array is required for double-precision attributes\n // to generate correct shader attributes\n value: attribute.value as NumericArray\n });\n\n this.transition.start(transitionSettings);\n\n this.transform.update({\n elementCount: Math.floor(this.currentLength / attribute.size),\n sourceBuffers: {\n aFrom: buffers[0],\n aTo: getSourceBufferAttribute(gl, attribute)\n },\n feedbackBuffers: {\n vCurrent: buffers[1]\n }\n });\n }\n\n update(): boolean {\n const updated = this.transition.update();\n if (updated) {\n const {duration, easing} = this.settings as InterpolationTransitionSettings;\n const {time} = this.transition;\n let t = time / duration;\n if (easing) {\n t = easing(t);\n }\n this.transform.run({\n uniforms: {time: t}\n });\n }\n return updated;\n }\n\n cancel(): void {\n this.transition.cancel();\n this.transform.delete();\n for (const buffer of this.buffers) {\n buffer.delete();\n }\n this.buffers.length = 0;\n }\n}\n\nconst vs = `\n#define SHADER_NAME interpolation-transition-vertex-shader\n\nuniform float time;\nattribute ATTRIBUTE_TYPE aFrom;\nattribute ATTRIBUTE_TYPE aTo;\nvarying ATTRIBUTE_TYPE vCurrent;\n\nvoid main(void) {\n vCurrent = mix(aFrom, aTo, time);\n gl_Position = vec4(0.0);\n}\n`;\n\nfunction getTransform(gl: WebGLRenderingContext, attribute: Attribute): LumaTransform {\n const attributeType = getAttributeTypeFromSize(attribute.size);\n return new Transform(gl, {\n vs,\n defines: {\n ATTRIBUTE_TYPE: attributeType\n },\n varyings: ['vCurrent']\n });\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport default class Transition {\n constructor(timeline) {\n _defineProperty(this, \"_inProgress\", void 0);\n\n _defineProperty(this, \"_handle\", void 0);\n\n _defineProperty(this, \"_timeline\", void 0);\n\n _defineProperty(this, \"time\", void 0);\n\n _defineProperty(this, \"settings\", void 0);\n\n this._inProgress = false;\n this._handle = null;\n this._timeline = timeline;\n this.time = 0;\n this.settings = {\n duration: 0\n };\n }\n\n get inProgress() {\n return this._inProgress;\n }\n\n start(settings) {\n var _this$settings$onStar, _this$settings;\n\n this.cancel();\n this.settings = settings;\n this._inProgress = true;\n (_this$settings$onStar = (_this$settings = this.settings).onStart) === null || _this$settings$onStar === void 0 ? void 0 : _this$settings$onStar.call(_this$settings, this);\n }\n\n end() {\n if (this._inProgress) {\n var _this$settings$onEnd, _this$settings2;\n\n this._timeline.removeChannel(this._handle);\n\n this._handle = null;\n this._inProgress = false;\n (_this$settings$onEnd = (_this$settings2 = this.settings).onEnd) === null || _this$settings$onEnd === void 0 ? void 0 : _this$settings$onEnd.call(_this$settings2, this);\n }\n }\n\n cancel() {\n if (this._inProgress) {\n var _this$settings$onInte, _this$settings3;\n\n (_this$settings$onInte = (_this$settings3 = this.settings).onInterrupt) === null || _this$settings$onInte === void 0 ? void 0 : _this$settings$onInte.call(_this$settings3, this);\n\n this._timeline.removeChannel(this._handle);\n\n this._handle = null;\n this._inProgress = false;\n }\n }\n\n update() {\n var _this$settings$onUpda, _this$settings4;\n\n if (!this._inProgress) {\n return false;\n }\n\n if (this._handle === null) {\n const {\n _timeline: timeline,\n settings\n } = this;\n this._handle = timeline.addChannel({\n delay: timeline.getTime(),\n duration: settings.duration\n });\n }\n\n this.time = this._timeline.getTime(this._handle);\n\n this._onUpdate();\n\n (_this$settings$onUpda = (_this$settings4 = this.settings).onUpdate) === null || _this$settings$onUpda === void 0 ? void 0 : _this$settings$onUpda.call(_this$settings4, this);\n\n if (this._timeline.isFinished(this._handle)) {\n this.end();\n }\n\n return true;\n }\n\n _onUpdate() {}\n\n}\n//# sourceMappingURL=transition.js.map","import type {Timeline} from '@luma.gl/core';\n\nexport type TransitionSettings = {\n duration: number;\n onStart?: (transition: Transition) => void;\n onUpdate?: (transition: Transition) => void;\n onInterrupt?: (transition: Transition) => void;\n onEnd?: (transition: Transition) => void;\n};\n\nexport default class Transition {\n private _inProgress: boolean;\n private _handle: number | null;\n private _timeline: Timeline;\n\n time: number;\n settings: TransitionSettings;\n\n /**\n * @params timeline {Timeline}\n */\n constructor(timeline: Timeline) {\n this._inProgress = false;\n this._handle = null;\n this._timeline = timeline;\n this.time = 0;\n\n // Defaults\n this.settings = {duration: 0};\n }\n\n /* Public API */\n get inProgress(): boolean {\n return this._inProgress;\n }\n\n /**\n * (re)start this transition.\n * @params props {object} - optional overriding props. see constructor\n */\n start(settings: TransitionSettings) {\n this.cancel();\n this.settings = settings;\n this._inProgress = true;\n this.settings.onStart?.(this);\n }\n\n /**\n * end this transition if it is in progress.\n */\n end() {\n if (this._inProgress) {\n this._timeline.removeChannel(this._handle);\n this._handle = null;\n this._inProgress = false;\n this.settings.onEnd?.(this);\n }\n }\n\n /**\n * cancel this transition if it is in progress.\n */\n cancel() {\n if (this._inProgress) {\n this.settings.onInterrupt?.(this);\n this._timeline.removeChannel(this._handle);\n this._handle = null;\n this._inProgress = false;\n }\n }\n\n /**\n * update this transition. Returns `true` if updated.\n */\n update() {\n if (!this._inProgress) {\n return false;\n }\n\n // It is important to initialize the handle during `update` instead of `start`.\n // The CPU time that the `start` frame takes should not be counted towards the duration.\n // On the other hand, `update` always happens during a render cycle. The clock starts when the\n // transition is rendered for the first time.\n if (this._handle === null) {\n const {_timeline: timeline, settings} = this;\n this._handle = timeline.addChannel({\n delay: timeline.getTime(),\n duration: settings.duration\n });\n }\n\n this.time = this._timeline.getTime(this._handle);\n // Call subclass method\n this._onUpdate();\n // Call user callback\n this.settings.onUpdate?.(this);\n\n // This only works if `settings.duration` is set\n // Spring transition must call `end` manually\n if (this._timeline.isFinished(this._handle)) {\n this.end();\n }\n return true;\n }\n\n /* Private API */\n\n protected _onUpdate() {\n // for subclass override\n }\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Buffer, Transform, Framebuffer, Texture2D, readPixelsToArray } from '@luma.gl/core';\nimport { padBuffer, getAttributeTypeFromSize, getSourceBufferAttribute, getAttributeBufferLength, cycleBuffers } from '../lib/attribute/attribute-transition-utils';\nimport Attribute from '../lib/attribute/attribute';\nimport Transition from './transition';\nexport default class GPUSpringTransition {\n constructor({\n gl,\n attribute,\n timeline\n }) {\n _defineProperty(this, \"gl\", void 0);\n\n _defineProperty(this, \"type\", 'spring');\n\n _defineProperty(this, \"attributeInTransition\", void 0);\n\n _defineProperty(this, \"settings\", void 0);\n\n _defineProperty(this, \"attribute\", void 0);\n\n _defineProperty(this, \"transition\", void 0);\n\n _defineProperty(this, \"currentStartIndices\", void 0);\n\n _defineProperty(this, \"currentLength\", void 0);\n\n _defineProperty(this, \"texture\", void 0);\n\n _defineProperty(this, \"framebuffer\", void 0);\n\n _defineProperty(this, \"transform\", void 0);\n\n _defineProperty(this, \"buffers\", void 0);\n\n this.gl = gl;\n this.type = 'spring';\n this.transition = new Transition(timeline);\n this.attribute = attribute;\n this.attributeInTransition = new Attribute(gl, { ...attribute.settings,\n normalized: false\n });\n this.currentStartIndices = attribute.startIndices;\n this.currentLength = 0;\n this.texture = getTexture(gl);\n this.framebuffer = getFramebuffer(gl, this.texture);\n this.transform = getTransform(gl, attribute, this.framebuffer);\n const bufferOpts = {\n byteLength: 0,\n usage: 35050\n };\n this.buffers = [new Buffer(gl, bufferOpts), new Buffer(gl, bufferOpts), new Buffer(gl, bufferOpts)];\n }\n\n get inProgress() {\n return this.transition.inProgress;\n }\n\n start(transitionSettings, numInstances) {\n const {\n gl,\n buffers,\n attribute\n } = this;\n const padBufferOpts = {\n numInstances,\n attribute,\n fromLength: this.currentLength,\n fromStartIndices: this.currentStartIndices,\n getData: transitionSettings.enter\n };\n\n for (const buffer of buffers) {\n padBuffer({\n buffer,\n ...padBufferOpts\n });\n }\n\n this.settings = transitionSettings;\n this.currentStartIndices = attribute.startIndices;\n this.currentLength = getAttributeBufferLength(attribute, numInstances);\n this.attributeInTransition.setData({\n buffer: buffers[1],\n value: attribute.value\n });\n this.transition.start({ ...transitionSettings,\n duration: Infinity\n });\n this.transform.update({\n elementCount: Math.floor(this.currentLength / attribute.size),\n sourceBuffers: {\n aTo: getSourceBufferAttribute(gl, attribute)\n }\n });\n }\n\n update() {\n const {\n buffers,\n transform,\n framebuffer,\n transition\n } = this;\n const updated = transition.update();\n\n if (!updated) {\n return false;\n }\n\n const settings = this.settings;\n transform.update({\n sourceBuffers: {\n aPrev: buffers[0],\n aCur: buffers[1]\n },\n feedbackBuffers: {\n vNext: buffers[2]\n }\n });\n transform.run({\n framebuffer,\n discard: false,\n clearRenderTarget: true,\n uniforms: {\n stiffness: settings.stiffness,\n damping: settings.damping\n },\n parameters: {\n depthTest: false,\n blend: true,\n viewport: [0, 0, 1, 1],\n blendFunc: [1, 1],\n blendEquation: [32776, 32776]\n }\n });\n cycleBuffers(buffers);\n this.attributeInTransition.setData({\n buffer: buffers[1],\n value: this.attribute.value\n });\n const isTransitioning = readPixelsToArray(framebuffer)[0] > 0;\n\n if (!isTransitioning) {\n transition.end();\n }\n\n return true;\n }\n\n cancel() {\n this.transition.cancel();\n this.transform.delete();\n\n for (const buffer of this.buffers) {\n buffer.delete();\n }\n\n this.buffers.length = 0;\n this.texture.delete();\n this.framebuffer.delete();\n }\n\n}\n\nfunction getTransform(gl, attribute, framebuffer) {\n const attributeType = getAttributeTypeFromSize(attribute.size);\n return new Transform(gl, {\n framebuffer,\n vs: \"\\n#define SHADER_NAME spring-transition-vertex-shader\\n\\n#define EPSILON 0.00001\\n\\nuniform float stiffness;\\nuniform float damping;\\nattribute ATTRIBUTE_TYPE aPrev;\\nattribute ATTRIBUTE_TYPE aCur;\\nattribute ATTRIBUTE_TYPE aTo;\\nvarying ATTRIBUTE_TYPE vNext;\\nvarying float vIsTransitioningFlag;\\n\\nATTRIBUTE_TYPE getNextValue(ATTRIBUTE_TYPE cur, ATTRIBUTE_TYPE prev, ATTRIBUTE_TYPE dest) {\\n ATTRIBUTE_TYPE velocity = cur - prev;\\n ATTRIBUTE_TYPE delta = dest - cur;\\n ATTRIBUTE_TYPE spring = delta * stiffness;\\n ATTRIBUTE_TYPE damper = velocity * -1.0 * damping;\\n return spring + damper + velocity + cur;\\n}\\n\\nvoid main(void) {\\n bool isTransitioning = length(aCur - aPrev) > EPSILON || length(aTo - aCur) > EPSILON;\\n vIsTransitioningFlag = isTransitioning ? 1.0 : 0.0;\\n\\n vNext = getNextValue(aCur, aPrev, aTo);\\n gl_Position = vec4(0, 0, 0, 1);\\n gl_PointSize = 100.0;\\n}\\n\",\n fs: \"\\n#define SHADER_NAME spring-transition-is-transitioning-fragment-shader\\n\\nvarying float vIsTransitioningFlag;\\n\\nvoid main(void) {\\n if (vIsTransitioningFlag == 0.0) {\\n discard;\\n }\\n gl_FragColor = vec4(1.0);\\n}\",\n defines: {\n ATTRIBUTE_TYPE: attributeType\n },\n varyings: ['vNext']\n });\n}\n\nfunction getTexture(gl) {\n return new Texture2D(gl, {\n data: new Uint8Array(4),\n format: 6408,\n type: 5121,\n border: 0,\n mipmaps: false,\n dataFormat: 6408,\n width: 1,\n height: 1\n });\n}\n\nfunction getFramebuffer(gl, texture) {\n return new Framebuffer(gl, {\n id: 'spring-transition-is-transitioning-framebuffer',\n width: 1,\n height: 1,\n attachments: {\n [36064]: texture\n }\n });\n}\n//# sourceMappingURL=gpu-spring-transition.js.map","/* eslint-disable complexity, max-statements, max-params */\nimport GL from '@luma.gl/constants';\nimport {Buffer, Transform, Framebuffer, Texture2D, readPixelsToArray} from '@luma.gl/core';\nimport {\n padBuffer,\n getAttributeTypeFromSize,\n getSourceBufferAttribute,\n getAttributeBufferLength,\n cycleBuffers,\n SpringTransitionSettings\n} from '../lib/attribute/attribute-transition-utils';\nimport Attribute from '../lib/attribute/attribute';\nimport Transition from './transition';\n\nimport type {Timeline, Transform as LumaTransform} from '@luma.gl/engine';\nimport type {\n Buffer as LumaBuffer,\n Framebuffer as LumaFramebuffer,\n Texture2D as LumaTexture2D\n} from '@luma.gl/webgl';\nimport type {NumericArray} from '../types/types';\nimport type GPUTransition from './gpu-transition';\n\nexport default class GPUSpringTransition implements GPUTransition {\n gl: WebGLRenderingContext;\n type = 'spring';\n attributeInTransition: Attribute;\n\n private settings?: SpringTransitionSettings;\n private attribute: Attribute;\n private transition: Transition;\n private currentStartIndices: NumericArray | null;\n private currentLength: number;\n private texture: LumaTexture2D;\n private framebuffer: LumaFramebuffer;\n private transform: LumaTransform;\n private buffers: LumaBuffer[];\n\n constructor({\n gl,\n attribute,\n timeline\n }: {\n gl: WebGLRenderingContext;\n attribute: Attribute;\n timeline: Timeline;\n }) {\n this.gl = gl;\n this.type = 'spring';\n this.transition = new Transition(timeline);\n this.attribute = attribute;\n // this is the attribute we return during the transition - note: if it is a constant\n // attribute, it will be converted and returned as a regular attribute\n // `attribute.userData` is the original options passed when constructing the attribute.\n // This ensures that we set the proper `doublePrecision` flag and shader attributes.\n this.attributeInTransition = new Attribute(gl, {...attribute.settings, normalized: false});\n this.currentStartIndices = attribute.startIndices;\n // storing currentLength because this.buffer may be larger than the actual length we want to use\n // this is because we only reallocate buffers when they grow, not when they shrink,\n // due to performance costs\n this.currentLength = 0;\n this.texture = getTexture(gl);\n this.framebuffer = getFramebuffer(gl, this.texture);\n this.transform = getTransform(gl, attribute, this.framebuffer);\n const bufferOpts = {\n byteLength: 0,\n usage: GL.DYNAMIC_COPY\n };\n this.buffers = [\n new Buffer(gl, bufferOpts), // previous\n new Buffer(gl, bufferOpts), // current\n new Buffer(gl, bufferOpts) // next\n ];\n }\n\n get inProgress(): boolean {\n return this.transition.inProgress;\n }\n\n // this is called when an attribute's values have changed and\n // we need to start animating towards the new values\n // this also correctly resizes / pads the transform's buffers\n // in case the attribute's buffer has changed in length or in\n // startIndices\n start(transitionSettings: SpringTransitionSettings, numInstances: number): void {\n const {gl, buffers, attribute} = this;\n const padBufferOpts = {\n numInstances,\n attribute,\n fromLength: this.currentLength,\n fromStartIndices: this.currentStartIndices,\n getData: transitionSettings.enter\n };\n\n for (const buffer of buffers) {\n padBuffer({buffer, ...padBufferOpts});\n }\n\n this.settings = transitionSettings;\n this.currentStartIndices = attribute.startIndices;\n this.currentLength = getAttributeBufferLength(attribute, numInstances);\n this.attributeInTransition.setData({\n buffer: buffers[1],\n // Hack: Float64Array is required for double-precision attributes\n // to generate correct shader attributes\n value: attribute.value as NumericArray\n });\n\n // when an attribute changes values, a new transition is started. These\n // are properties that we have to store on this.transition but can change\n // when new transitions are started, so we have to keep them up-to-date.\n // this.transition.start() takes the latest settings and updates them.\n this.transition.start({...transitionSettings, duration: Infinity});\n\n this.transform.update({\n elementCount: Math.floor(this.currentLength / attribute.size),\n sourceBuffers: {\n aTo: getSourceBufferAttribute(gl, attribute)\n }\n });\n }\n\n update() {\n const {buffers, transform, framebuffer, transition} = this;\n const updated = transition.update();\n if (!updated) {\n return false;\n }\n const settings = this.settings as SpringTransitionSettings;\n\n transform.update({\n sourceBuffers: {\n aPrev: buffers[0],\n aCur: buffers[1]\n },\n feedbackBuffers: {\n vNext: buffers[2]\n }\n });\n transform.run({\n framebuffer,\n discard: false,\n clearRenderTarget: true,\n uniforms: {\n stiffness: settings.stiffness,\n damping: settings.damping\n },\n parameters: {\n depthTest: false,\n blend: true,\n viewport: [0, 0, 1, 1],\n blendFunc: [GL.ONE, GL.ONE],\n blendEquation: [GL.MAX, GL.MAX]\n }\n });\n\n cycleBuffers(buffers);\n this.attributeInTransition.setData({\n buffer: buffers[1],\n // Hack: Float64Array is required for double-precision attributes\n // to generate correct shader attributes\n value: this.attribute.value as NumericArray\n });\n\n const isTransitioning = readPixelsToArray(framebuffer)[0] > 0;\n\n if (!isTransitioning) {\n transition.end();\n }\n\n return true;\n }\n\n cancel() {\n this.transition.cancel();\n this.transform.delete();\n for (const buffer of this.buffers) {\n buffer.delete();\n }\n this.buffers.length = 0;\n this.texture.delete();\n this.framebuffer.delete();\n }\n}\n\nfunction getTransform(\n gl: WebGLRenderingContext,\n attribute: Attribute,\n framebuffer: LumaFramebuffer\n): LumaTransform {\n const attributeType = getAttributeTypeFromSize(attribute.size);\n return new Transform(gl, {\n framebuffer,\n vs: `\n#define SHADER_NAME spring-transition-vertex-shader\n\n#define EPSILON 0.00001\n\nuniform float stiffness;\nuniform float damping;\nattribute ATTRIBUTE_TYPE aPrev;\nattribute ATTRIBUTE_TYPE aCur;\nattribute ATTRIBUTE_TYPE aTo;\nvarying ATTRIBUTE_TYPE vNext;\nvarying float vIsTransitioningFlag;\n\nATTRIBUTE_TYPE getNextValue(ATTRIBUTE_TYPE cur, ATTRIBUTE_TYPE prev, ATTRIBUTE_TYPE dest) {\n ATTRIBUTE_TYPE velocity = cur - prev;\n ATTRIBUTE_TYPE delta = dest - cur;\n ATTRIBUTE_TYPE spring = delta * stiffness;\n ATTRIBUTE_TYPE damper = velocity * -1.0 * damping;\n return spring + damper + velocity + cur;\n}\n\nvoid main(void) {\n bool isTransitioning = length(aCur - aPrev) > EPSILON || length(aTo - aCur) > EPSILON;\n vIsTransitioningFlag = isTransitioning ? 1.0 : 0.0;\n\n vNext = getNextValue(aCur, aPrev, aTo);\n gl_Position = vec4(0, 0, 0, 1);\n gl_PointSize = 100.0;\n}\n`,\n fs: `\n#define SHADER_NAME spring-transition-is-transitioning-fragment-shader\n\nvarying float vIsTransitioningFlag;\n\nvoid main(void) {\n if (vIsTransitioningFlag == 0.0) {\n discard;\n }\n gl_FragColor = vec4(1.0);\n}`,\n defines: {\n ATTRIBUTE_TYPE: attributeType\n },\n varyings: ['vNext']\n });\n}\n\nfunction getTexture(gl: WebGLRenderingContext): LumaTexture2D {\n return new Texture2D(gl, {\n data: new Uint8Array(4),\n format: GL.RGBA,\n type: GL.UNSIGNED_BYTE,\n border: 0,\n mipmaps: false,\n dataFormat: GL.RGBA,\n width: 1,\n height: 1\n });\n}\n\nfunction getFramebuffer(gl: WebGLRenderingContext, texture: LumaTexture2D): LumaFramebuffer {\n return new Framebuffer(gl, {\n id: 'spring-transition-is-transitioning-framebuffer',\n width: 1,\n height: 1,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: texture\n }\n });\n}\n","import { normalizeTransitionSettings } from './attribute/attribute-transition-utils';\nimport CPUInterpolationTransition from '../transitions/cpu-interpolation-transition';\nimport CPUSpringTransition from '../transitions/cpu-spring-transition';\nimport log from '../utils/log';\nconst TRANSITION_TYPES = {\n interpolation: CPUInterpolationTransition,\n spring: CPUSpringTransition\n};\nexport default class UniformTransitionManager {\n constructor(timeline) {\n this.transitions = new Map();\n this.timeline = timeline;\n }\n\n get active() {\n return this.transitions.size > 0;\n }\n\n add(key, fromValue, toValue, settings) {\n const {\n transitions\n } = this;\n\n if (transitions.has(key)) {\n const transition = transitions.get(key);\n const {\n value = transition.settings.fromValue\n } = transition;\n fromValue = value;\n this.remove(key);\n }\n\n settings = normalizeTransitionSettings(settings);\n\n if (!settings) {\n return;\n }\n\n const TransitionType = TRANSITION_TYPES[settings.type];\n\n if (!TransitionType) {\n log.error(\"unsupported transition type '\".concat(settings.type, \"'\"))();\n return;\n }\n\n const transition = new TransitionType(this.timeline);\n transition.start({ ...settings,\n fromValue,\n toValue\n });\n transitions.set(key, transition);\n }\n\n remove(key) {\n const {\n transitions\n } = this;\n\n if (transitions.has(key)) {\n transitions.get(key).cancel();\n transitions.delete(key);\n }\n }\n\n update() {\n const propsInTransition = {};\n\n for (const [key, transition] of this.transitions) {\n transition.update();\n propsInTransition[key] = transition.value;\n\n if (!transition.inProgress) {\n this.remove(key);\n }\n }\n\n return propsInTransition;\n }\n\n clear() {\n for (const key of this.transitions.keys()) {\n this.remove(key);\n }\n }\n\n}\n//# sourceMappingURL=uniform-transition-manager.js.map","import {normalizeTransitionSettings} from './attribute/attribute-transition-utils';\nimport CPUInterpolationTransition from '../transitions/cpu-interpolation-transition';\nimport CPUSpringTransition from '../transitions/cpu-spring-transition';\nimport log from '../utils/log';\n\nconst TRANSITION_TYPES = {\n interpolation: CPUInterpolationTransition,\n spring: CPUSpringTransition\n};\n\nexport default class UniformTransitionManager {\n constructor(timeline) {\n this.transitions = new Map();\n this.timeline = timeline;\n }\n\n get active() {\n return this.transitions.size > 0;\n }\n\n add(key, fromValue, toValue, settings) {\n const {transitions} = this;\n if (transitions.has(key)) {\n const transition = transitions.get(key);\n // value may not be available if `update()` has not been called. Fallback to `fromValue`\n const {value = transition.settings.fromValue} = transition;\n // start from interrupted position\n fromValue = value;\n this.remove(key);\n }\n\n settings = normalizeTransitionSettings(settings);\n if (!settings) {\n return;\n }\n\n const TransitionType = TRANSITION_TYPES[settings.type];\n if (!TransitionType) {\n log.error(`unsupported transition type '${settings.type}'`)();\n return;\n }\n const transition = new TransitionType(this.timeline);\n transition.start({\n ...settings,\n fromValue,\n toValue\n });\n transitions.set(key, transition);\n }\n\n remove(key) {\n const {transitions} = this;\n if (transitions.has(key)) {\n transitions.get(key).cancel();\n transitions.delete(key);\n }\n }\n\n update() {\n const propsInTransition = {};\n\n for (const [key, transition] of this.transitions) {\n transition.update();\n propsInTransition[key] = transition.value;\n if (!transition.inProgress) {\n // transition ended\n this.remove(key);\n }\n }\n\n return propsInTransition;\n }\n\n clear() {\n for (const key of this.transitions.keys()) {\n this.remove(key);\n }\n }\n}\n","import { lerp } from '@math.gl/core';\nimport Transition from './transition';\nexport default class CPUInterpolationTransition extends Transition {\n get value() {\n return this._value;\n }\n\n _onUpdate() {\n const {\n time,\n settings: {\n fromValue,\n toValue,\n duration,\n easing\n }\n } = this;\n const t = easing(time / duration);\n this._value = lerp(fromValue, toValue, t);\n }\n\n}\n//# sourceMappingURL=cpu-interpolation-transition.js.map","import {lerp} from '@math.gl/core';\nimport Transition from './transition';\n\nexport default class CPUInterpolationTransition extends Transition {\n get value() {\n return this._value;\n }\n\n _onUpdate() {\n const {\n time,\n settings: {fromValue, toValue, duration, easing}\n } = this;\n const t = easing(time / duration);\n this._value = lerp(fromValue, toValue, t);\n }\n}\n","import Transition from './transition';\nconst EPSILON = 1e-5;\n\nfunction updateSpringElement(prev, cur, dest, damping, stiffness) {\n const velocity = cur - prev;\n const delta = dest - cur;\n const spring = delta * stiffness;\n const damper = -velocity * damping;\n return spring + damper + velocity + cur;\n}\n\nfunction updateSpring(prev, cur, dest, damping, stiffness) {\n if (Array.isArray(dest)) {\n const next = [];\n\n for (let i = 0; i < dest.length; i++) {\n next[i] = updateSpringElement(prev[i], cur[i], dest[i], damping, stiffness);\n }\n\n return next;\n }\n\n return updateSpringElement(prev, cur, dest, damping, stiffness);\n}\n\nfunction distance(value1, value2) {\n if (Array.isArray(value1)) {\n let distanceSquare = 0;\n\n for (let i = 0; i < value1.length; i++) {\n const d = value1[i] - value2[i];\n distanceSquare += d * d;\n }\n\n return Math.sqrt(distanceSquare);\n }\n\n return Math.abs(value1 - value2);\n}\n\nexport default class CPUSpringTransition extends Transition {\n get value() {\n return this._currValue;\n }\n\n _onUpdate() {\n const {\n fromValue,\n toValue,\n damping,\n stiffness\n } = this.settings;\n const {\n _prevValue = fromValue,\n _currValue = fromValue\n } = this;\n let nextValue = updateSpring(_prevValue, _currValue, toValue, damping, stiffness);\n const delta = distance(nextValue, toValue);\n const velocity = distance(nextValue, _currValue);\n\n if (delta < EPSILON && velocity < EPSILON) {\n nextValue = toValue;\n this.end();\n }\n\n this._prevValue = _currValue;\n this._currValue = nextValue;\n }\n\n}\n//# sourceMappingURL=cpu-spring-transition.js.map","import Transition from './transition';\n\nconst EPSILON = 1e-5;\n\n/*\n * Calculate the next value in the spring transition\n * @param prev {Number} - previous value\n * @param cur {Number} - current value\n * @param dest {Number} - destination value\n * @param damping {Number}\n * @param stiffness {Number}\n */\nfunction updateSpringElement(prev, cur, dest, damping, stiffness) {\n const velocity = cur - prev;\n const delta = dest - cur;\n const spring = delta * stiffness;\n const damper = -velocity * damping;\n return spring + damper + velocity + cur;\n}\n\n/*\n * Calculate the next value in the spring transition\n * @param prev {Number|Array} - previous value\n * @param cur {Number|Array} - current value\n * @param dest {Number|Array} - destination value\n * @param damping {Number}\n * @param stiffness {Number}\n */\nfunction updateSpring(prev, cur, dest, damping, stiffness) {\n if (Array.isArray(dest)) {\n const next = [];\n for (let i = 0; i < dest.length; i++) {\n next[i] = updateSpringElement(prev[i], cur[i], dest[i], damping, stiffness);\n }\n return next;\n }\n return updateSpringElement(prev, cur, dest, damping, stiffness);\n}\n\n/*\n * Calculate the distance between two numbers or two vectors\n */\nfunction distance(value1, value2) {\n if (Array.isArray(value1)) {\n let distanceSquare = 0;\n for (let i = 0; i < value1.length; i++) {\n const d = value1[i] - value2[i];\n distanceSquare += d * d;\n }\n return Math.sqrt(distanceSquare);\n }\n return Math.abs(value1 - value2);\n}\n\nexport default class CPUSpringTransition extends Transition {\n get value() {\n return this._currValue;\n }\n\n _onUpdate() {\n // TODO - use timeline\n // const {time} = this;\n\n const {fromValue, toValue, damping, stiffness} = this.settings;\n const {_prevValue = fromValue, _currValue = fromValue} = this;\n let nextValue = updateSpring(_prevValue, _currValue, toValue, damping, stiffness);\n const delta = distance(nextValue, toValue);\n const velocity = distance(nextValue, _currValue);\n\n if (delta < EPSILON && velocity < EPSILON) {\n nextValue = toValue;\n this.end();\n }\n\n this._prevValue = _currValue;\n this._currValue = nextValue;\n }\n}\n","import { PROP_TYPES_SYMBOL } from './constants';\nexport function validateProps(props) {\n const propTypes = props[PROP_TYPES_SYMBOL];\n\n for (const propName in propTypes) {\n const propType = propTypes[propName];\n const {\n validate\n } = propType;\n\n if (validate && !validate(props[propName], propType)) {\n throw new Error(\"Invalid prop \".concat(propName, \": \").concat(props[propName]));\n }\n }\n}\nexport function diffProps(props, oldProps) {\n const propsChangedReason = compareProps({\n newProps: props,\n oldProps,\n propTypes: props[PROP_TYPES_SYMBOL],\n ignoreProps: {\n data: null,\n updateTriggers: null,\n extensions: null,\n transitions: null\n }\n });\n const dataChangedReason = diffDataProps(props, oldProps);\n let updateTriggersChangedReason = false;\n\n if (!dataChangedReason) {\n updateTriggersChangedReason = diffUpdateTriggers(props, oldProps);\n }\n\n return {\n dataChanged: dataChangedReason,\n propsChanged: propsChangedReason,\n updateTriggersChanged: updateTriggersChangedReason,\n extensionsChanged: diffExtensions(props, oldProps),\n transitionsChanged: diffTransitions(props, oldProps)\n };\n}\n\nfunction diffTransitions(props, oldProps) {\n if (!props.transitions) {\n return false;\n }\n\n const result = {};\n const propTypes = props[PROP_TYPES_SYMBOL];\n let changed = false;\n\n for (const key in props.transitions) {\n const propType = propTypes[key];\n const type = propType && propType.type;\n const isTransitionable = type === 'number' || type === 'color' || type === 'array';\n\n if (isTransitionable && comparePropValues(props[key], oldProps[key], propType)) {\n result[key] = true;\n changed = true;\n }\n }\n\n return changed ? result : false;\n}\n\nexport function compareProps({\n newProps,\n oldProps,\n ignoreProps = {},\n propTypes = {},\n triggerName = 'props'\n}) {\n if (oldProps === newProps) {\n return false;\n }\n\n if (typeof newProps !== 'object' || newProps === null) {\n return \"\".concat(triggerName, \" changed shallowly\");\n }\n\n if (typeof oldProps !== 'object' || oldProps === null) {\n return \"\".concat(triggerName, \" changed shallowly\");\n }\n\n for (const key of Object.keys(newProps)) {\n if (!(key in ignoreProps)) {\n if (!(key in oldProps)) {\n return \"\".concat(triggerName, \".\").concat(key, \" added\");\n }\n\n const changed = comparePropValues(newProps[key], oldProps[key], propTypes[key]);\n\n if (changed) {\n return \"\".concat(triggerName, \".\").concat(key, \" \").concat(changed);\n }\n }\n }\n\n for (const key of Object.keys(oldProps)) {\n if (!(key in ignoreProps)) {\n if (!(key in newProps)) {\n return \"\".concat(triggerName, \".\").concat(key, \" dropped\");\n }\n\n if (!Object.hasOwnProperty.call(newProps, key)) {\n const changed = comparePropValues(newProps[key], oldProps[key], propTypes[key]);\n\n if (changed) {\n return \"\".concat(triggerName, \".\").concat(key, \" \").concat(changed);\n }\n }\n }\n }\n\n return false;\n}\n\nfunction comparePropValues(newProp, oldProp, propType) {\n let equal = propType && propType.equal;\n\n if (equal && !equal(newProp, oldProp, propType)) {\n return 'changed deeply';\n }\n\n if (!equal) {\n equal = newProp && oldProp && newProp.equals;\n\n if (equal && !equal.call(newProp, oldProp)) {\n return 'changed deeply';\n }\n }\n\n if (!equal && oldProp !== newProp) {\n return 'changed shallowly';\n }\n\n return null;\n}\n\nfunction diffDataProps(props, oldProps) {\n if (oldProps === null) {\n return 'oldProps is null, initial diff';\n }\n\n let dataChanged = false;\n const {\n dataComparator,\n _dataDiff\n } = props;\n\n if (dataComparator) {\n if (!dataComparator(props.data, oldProps.data)) {\n dataChanged = 'Data comparator detected a change';\n }\n } else if (props.data !== oldProps.data) {\n dataChanged = 'A new data container was supplied';\n }\n\n if (dataChanged && _dataDiff) {\n dataChanged = _dataDiff(props.data, oldProps.data) || dataChanged;\n }\n\n return dataChanged;\n}\n\nfunction diffUpdateTriggers(props, oldProps) {\n if (oldProps === null) {\n return {\n all: true\n };\n }\n\n if ('all' in props.updateTriggers) {\n const diffReason = diffUpdateTrigger(props, oldProps, 'all');\n\n if (diffReason) {\n return {\n all: true\n };\n }\n }\n\n const reason = {};\n let changed = false;\n\n for (const triggerName in props.updateTriggers) {\n if (triggerName !== 'all') {\n const diffReason = diffUpdateTrigger(props, oldProps, triggerName);\n\n if (diffReason) {\n reason[triggerName] = true;\n changed = true;\n }\n }\n }\n\n return changed ? reason : false;\n}\n\nfunction diffExtensions(props, oldProps) {\n if (oldProps === null) {\n return true;\n }\n\n const oldExtensions = oldProps.extensions;\n const {\n extensions\n } = props;\n\n if (extensions === oldExtensions) {\n return false;\n }\n\n if (!oldExtensions || !extensions) {\n return true;\n }\n\n if (extensions.length !== oldExtensions.length) {\n return true;\n }\n\n for (let i = 0; i < extensions.length; i++) {\n if (!extensions[i].equals(oldExtensions[i])) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction diffUpdateTrigger(props, oldProps, triggerName) {\n let newTriggers = props.updateTriggers[triggerName];\n newTriggers = newTriggers === undefined || newTriggers === null ? {} : newTriggers;\n let oldTriggers = oldProps.updateTriggers[triggerName];\n oldTriggers = oldTriggers === undefined || oldTriggers === null ? {} : oldTriggers;\n const diffReason = compareProps({\n oldProps: oldTriggers,\n newProps: newTriggers,\n triggerName\n });\n return diffReason;\n}\n//# sourceMappingURL=props.js.map","import {PROP_TYPES_SYMBOL} from './constants';\n\nexport function validateProps(props) {\n const propTypes = props[PROP_TYPES_SYMBOL];\n\n for (const propName in propTypes) {\n const propType = propTypes[propName];\n const {validate} = propType;\n if (validate && !validate(props[propName], propType)) {\n throw new Error(`Invalid prop ${propName}: ${props[propName]}`);\n }\n }\n}\n\n// Returns an object with \"change flags\", either false or strings indicating reason for change\nexport function diffProps(\n props,\n oldProps\n): {\n dataChanged: string | false | {startRow: number; endRow?: number}[];\n propsChanged: string | false;\n updateTriggersChanged: Record | false;\n extensionsChanged: boolean;\n transitionsChanged: Record | false;\n} {\n // First check if any props have changed (ignore props that will be examined separately)\n const propsChangedReason = compareProps({\n newProps: props,\n oldProps,\n propTypes: props[PROP_TYPES_SYMBOL],\n ignoreProps: {data: null, updateTriggers: null, extensions: null, transitions: null}\n });\n\n // Now check if any data related props have changed\n const dataChangedReason = diffDataProps(props, oldProps);\n\n // Check update triggers to determine if any attributes need regeneration\n // Note - if data has changed, all attributes will need regeneration, so skip this step\n let updateTriggersChangedReason: false | string | Record = false;\n if (!dataChangedReason) {\n updateTriggersChangedReason = diffUpdateTriggers(props, oldProps);\n }\n\n return {\n dataChanged: dataChangedReason,\n propsChanged: propsChangedReason,\n updateTriggersChanged: updateTriggersChangedReason,\n extensionsChanged: diffExtensions(props, oldProps),\n transitionsChanged: diffTransitions(props, oldProps)\n };\n}\n\nfunction diffTransitions(props, oldProps): false | Record {\n if (!props.transitions) {\n return false;\n }\n const result: Record = {};\n const propTypes = props[PROP_TYPES_SYMBOL];\n let changed = false;\n\n for (const key in props.transitions) {\n const propType = propTypes[key];\n const type = propType && propType.type;\n const isTransitionable = type === 'number' || type === 'color' || type === 'array';\n if (isTransitionable && comparePropValues(props[key], oldProps[key], propType)) {\n result[key] = true;\n changed = true;\n }\n }\n return changed ? result : false;\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * @param {Object} opt.oldProps - object with old key/value pairs\n * @param {Object} opt.newProps - object with new key/value pairs\n * @param {Object} opt.ignoreProps={} - object, keys that should not be compared\n * @returns {null|String} - null when values of all keys are strictly equal.\n * if unequal, returns a string explaining what changed.\n */\n/* eslint-disable max-statements, max-depth, complexity */\n/*\n * Note: for better performance, this function assumes that both oldProps and newProps\n inherit the same prototype (defaultProps). That is, if neither object contains own\n property , assume `oldProps.` and `newProps.` are equal.\n */\nexport function compareProps({\n newProps,\n oldProps,\n ignoreProps = {},\n propTypes = {},\n triggerName = 'props'\n}): string | false {\n // shallow equality => deep equality\n if (oldProps === newProps) {\n return false;\n }\n\n // TODO - do we need these checks? Should never happen...\n if (typeof newProps !== 'object' || newProps === null) {\n return `${triggerName} changed shallowly`;\n }\n\n if (typeof oldProps !== 'object' || oldProps === null) {\n return `${triggerName} changed shallowly`;\n }\n\n // Compare explicitly defined new props against old/default values\n for (const key of Object.keys(newProps)) {\n if (!(key in ignoreProps)) {\n if (!(key in oldProps)) {\n return `${triggerName}.${key} added`;\n }\n const changed = comparePropValues(newProps[key], oldProps[key], propTypes[key]);\n if (changed) {\n return `${triggerName}.${key} ${changed}`;\n }\n }\n }\n\n // Test if any old props have been dropped\n for (const key of Object.keys(oldProps)) {\n if (!(key in ignoreProps)) {\n if (!(key in newProps)) {\n return `${triggerName}.${key} dropped`;\n }\n if (!Object.hasOwnProperty.call(newProps, key)) {\n // Compare dropped old prop against default value\n const changed = comparePropValues(newProps[key], oldProps[key], propTypes[key]);\n if (changed) {\n return `${triggerName}.${key} ${changed}`;\n }\n }\n }\n }\n\n return false;\n}\n/* eslint-enable max-statements, max-depth, complexity */\n\n// HELPERS\nfunction comparePropValues(newProp, oldProp, propType) {\n // If prop type has an equal function, invoke it\n let equal = propType && propType.equal;\n if (equal && !equal(newProp, oldProp, propType)) {\n return 'changed deeply';\n }\n\n if (!equal) {\n // If object has an equals function, invoke it\n equal = newProp && oldProp && newProp.equals;\n if (equal && !equal.call(newProp, oldProp)) {\n return 'changed deeply';\n }\n }\n\n if (!equal && oldProp !== newProp) {\n return 'changed shallowly';\n }\n\n return null;\n}\n\n// The comparison of the data prop requires special handling\n// the dataComparator should be used if supplied\nfunction diffDataProps(props, oldProps): string | false | {startRow: number; endRow?: number}[] {\n if (oldProps === null) {\n return 'oldProps is null, initial diff';\n }\n\n let dataChanged: string | false | {startRow: number; endRow?: number}[] = false;\n // Support optional app defined comparison of data\n const {dataComparator, _dataDiff} = props;\n if (dataComparator) {\n if (!dataComparator(props.data, oldProps.data)) {\n dataChanged = 'Data comparator detected a change';\n }\n // Otherwise, do a shallow equal on props\n } else if (props.data !== oldProps.data) {\n dataChanged = 'A new data container was supplied';\n }\n if (dataChanged && _dataDiff) {\n dataChanged = _dataDiff(props.data, oldProps.data) || dataChanged;\n }\n\n return dataChanged;\n}\n\n// Checks if any update triggers have changed\n// also calls callback to invalidate attributes accordingly.\nfunction diffUpdateTriggers(props, oldProps): Record | false {\n if (oldProps === null) {\n return {all: true};\n }\n\n // If the 'all' updateTrigger fires, ignore testing others\n if ('all' in props.updateTriggers) {\n const diffReason = diffUpdateTrigger(props, oldProps, 'all');\n if (diffReason) {\n return {all: true};\n }\n }\n\n const reason: Record = {};\n let changed = false;\n // If the 'all' updateTrigger didn't fire, need to check all others\n for (const triggerName in props.updateTriggers) {\n if (triggerName !== 'all') {\n const diffReason = diffUpdateTrigger(props, oldProps, triggerName);\n if (diffReason) {\n reason[triggerName] = true;\n changed = true;\n }\n }\n }\n\n return changed ? reason : false;\n}\n\n// Returns true if any extensions have changed\nfunction diffExtensions(props, oldProps): boolean {\n if (oldProps === null) {\n return true;\n }\n\n const oldExtensions = oldProps.extensions;\n const {extensions} = props;\n\n if (extensions === oldExtensions) {\n return false;\n }\n if (!oldExtensions || !extensions) {\n return true;\n }\n if (extensions.length !== oldExtensions.length) {\n return true;\n }\n for (let i = 0; i < extensions.length; i++) {\n if (!extensions[i].equals(oldExtensions[i])) {\n return true;\n }\n }\n return false;\n}\n\nfunction diffUpdateTrigger(props, oldProps, triggerName) {\n let newTriggers = props.updateTriggers[triggerName];\n newTriggers = newTriggers === undefined || newTriggers === null ? {} : newTriggers;\n let oldTriggers = oldProps.updateTriggers[triggerName];\n oldTriggers = oldTriggers === undefined || oldTriggers === null ? {} : oldTriggers;\n const diffReason = compareProps({\n oldProps: oldTriggers,\n newProps: newTriggers,\n triggerName\n });\n return diffReason;\n}\n","export const LIFECYCLE = {\n NO_STATE: 'Awaiting state',\n MATCHED: 'Matched. State transferred from previous layer',\n INITIALIZED: 'Initialized',\n AWAITING_GC: 'Discarded. Awaiting garbage collection',\n AWAITING_FINALIZATION: 'No longer matched. Awaiting garbage collection',\n FINALIZED: 'Finalized! Awaiting garbage collection'\n};\nexport const COMPONENT_SYMBOL = Symbol.for('component');\nexport const PROP_TYPES_SYMBOL = Symbol.for('propTypes');\nexport const DEPRECATED_PROPS_SYMBOL = Symbol.for('deprecatedProps');\nexport const ASYNC_DEFAULTS_SYMBOL = Symbol.for('asyncPropDefaults');\nexport const ASYNC_ORIGINAL_SYMBOL = Symbol.for('asyncPropOriginal');\nexport const ASYNC_RESOLVED_SYMBOL = Symbol.for('asyncPropResolved');\n//# sourceMappingURL=constants.js.map","export const LIFECYCLE = {\n NO_STATE: 'Awaiting state',\n MATCHED: 'Matched. State transferred from previous layer',\n INITIALIZED: 'Initialized',\n AWAITING_GC: 'Discarded. Awaiting garbage collection',\n AWAITING_FINALIZATION: 'No longer matched. Awaiting garbage collection',\n FINALIZED: 'Finalized! Awaiting garbage collection'\n} as const;\n\nexport type Lifecycle = typeof LIFECYCLE[keyof typeof LIFECYCLE];\n\n/* Secret props keys */\n// Symbols are non-enumerable by default, does not show in for...in or Object.keys\n// but are copied with Object.assign ¯\\_(ツ)_/¯\n// Supported everywhere except IE11, can be polyfilled with core-js\nexport const COMPONENT_SYMBOL: unique symbol = Symbol.for('component');\nexport const PROP_TYPES_SYMBOL: unique symbol = Symbol.for('propTypes');\nexport const DEPRECATED_PROPS_SYMBOL: unique symbol = Symbol.for('deprecatedProps');\nexport const ASYNC_DEFAULTS_SYMBOL: unique symbol = Symbol.for('asyncPropDefaults');\nexport const ASYNC_ORIGINAL_SYMBOL: unique symbol = Symbol.for('asyncPropOriginal');\nexport const ASYNC_RESOLVED_SYMBOL: unique symbol = Symbol.for('asyncPropResolved');\n","const ERR_NOT_OBJECT = 'count(): argument not an object';\nconst ERR_NOT_CONTAINER = 'count(): argument not a container';\nexport function count(container) {\n if (!isObject(container)) {\n throw new Error(ERR_NOT_OBJECT);\n }\n\n if (typeof container.count === 'function') {\n return container.count();\n }\n\n if (Number.isFinite(container.size)) {\n return container.size;\n }\n\n if (Number.isFinite(container.length)) {\n return container.length;\n }\n\n if (isPlainObject(container)) {\n return Object.keys(container).length;\n }\n\n throw new Error(ERR_NOT_CONTAINER);\n}\n\nfunction isPlainObject(value) {\n return value !== null && typeof value === 'object' && value.constructor === Object;\n}\n\nfunction isObject(value) {\n return value !== null && typeof value === 'object';\n}\n//# sourceMappingURL=count.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nconst ERR_NOT_OBJECT = 'count(): argument not an object';\nconst ERR_NOT_CONTAINER = 'count(): argument not a container';\n\n/**\n * Deduces numer of elements in a JavaScript container.\n * - Auto-deduction for ES6 containers that define a count() method\n * - Auto-deduction for ES6 containers that define a size member\n * - Auto-deduction for Classic Arrays via the built-in length attribute\n * - Also handles objects, although note that this an O(N) operation\n */\nexport function count(container: any): number {\n if (!isObject(container)) {\n throw new Error(ERR_NOT_OBJECT);\n }\n\n // Check if ES6 collection \"count\" function is available\n if (typeof container.count === 'function') {\n return container.count();\n }\n\n // Check if ES6 collection \"size\" attribute is set\n if (Number.isFinite(container.size)) {\n return container.size;\n }\n\n // Check if array length attribute is set\n // Note: checking this last since some ES6 collections (Immutable.js)\n // emit profuse warnings when trying to access `length` attribute\n if (Number.isFinite(container.length)) {\n return container.length;\n }\n\n // Note that getting the count of an object is O(N)\n if (isPlainObject(container)) {\n return Object.keys(container).length;\n }\n\n throw new Error(ERR_NOT_CONTAINER);\n}\n\n/**\n * Checks if argument is a plain object (not a class or array etc)\n * @param {*} value - JavaScript value to be tested\n * @return {Boolean} - true if argument is a plain JavaScript object\n */\nfunction isPlainObject(value) {\n return value !== null && typeof value === 'object' && value.constructor === Object;\n}\n\n/**\n * Checks if argument is an indexable object (not a primitive value, nor null)\n * @param {*} value - JavaScript value to be tested\n * @return {Boolean} - true if argument is a JavaScript object\n */\nfunction isObject(value) {\n return value !== null && typeof value === 'object';\n}\n","export function mergeShaders(target, source) {\n if (!source) {\n return target;\n }\n\n const result = { ...target,\n ...source\n };\n\n if ('defines' in source) {\n result.defines = { ...target.defines,\n ...source.defines\n };\n }\n\n if ('modules' in source) {\n result.modules = (target.modules || []).concat(source.modules);\n\n if (source.modules.some(module => module.name === 'project64')) {\n const index = result.modules.findIndex(module => module.name === 'project32');\n\n if (index >= 0) {\n result.modules.splice(index, 1);\n }\n }\n }\n\n if ('inject' in source) {\n if (!target.inject) {\n result.inject = source.inject;\n } else {\n const mergedInjection = { ...target.inject\n };\n\n for (const key in source.inject) {\n mergedInjection[key] = (mergedInjection[key] || '') + source.inject[key];\n }\n\n result.inject = mergedInjection;\n }\n }\n\n return result;\n}\n//# sourceMappingURL=shader.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// Merge two luma.gl shader descriptors\nexport function mergeShaders(target, source) {\n if (!source) {\n return target;\n }\n const result = {...target, ...source};\n\n if ('defines' in source) {\n result.defines = {...target.defines, ...source.defines};\n }\n if ('modules' in source) {\n result.modules = (target.modules || []).concat(source.modules);\n\n // Hack: prject32 and project64 cannot co-exist\n if (source.modules.some(module => module.name === 'project64')) {\n const index = result.modules.findIndex(module => module.name === 'project32');\n if (index >= 0) {\n result.modules.splice(index, 1);\n }\n }\n }\n if ('inject' in source) {\n if (!target.inject) {\n result.inject = source.inject;\n } else {\n const mergedInjection = {...target.inject};\n for (const key in source.inject) {\n mergedInjection[key] = (mergedInjection[key] || '') + source.inject[key];\n }\n result.inject = mergedInjection;\n }\n }\n return result;\n}\n","import { COORDINATE_SYSTEM } from '../../lib/constants';\nimport { getOffsetOrigin } from './viewport-uniforms';\nimport WebMercatorViewport from '../../viewports/web-mercator-viewport';\nimport * as vec4 from 'gl-matrix/vec4';\nimport * as vec3 from 'gl-matrix/vec3';\nimport { addMetersToLngLat } from '@math.gl/web-mercator';\nconst DEFAULT_COORDINATE_ORIGIN = [0, 0, 0];\n\nfunction lngLatZToWorldPosition(lngLatZ, viewport, offsetMode = false) {\n const p = viewport.projectPosition(lngLatZ);\n\n if (offsetMode && viewport instanceof WebMercatorViewport) {\n const [longitude, latitude, z = 0] = lngLatZ;\n const distanceScales = viewport.getDistanceScales([longitude, latitude]);\n p[2] = z * distanceScales.unitsPerMeter[2];\n }\n\n return p;\n}\n\nfunction normalizeParameters(opts) {\n const {\n viewport,\n modelMatrix,\n coordinateOrigin\n } = opts;\n let {\n coordinateSystem,\n fromCoordinateSystem,\n fromCoordinateOrigin\n } = opts;\n\n if (coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n coordinateSystem = viewport.isGeospatial ? COORDINATE_SYSTEM.LNGLAT : COORDINATE_SYSTEM.CARTESIAN;\n }\n\n if (fromCoordinateSystem === undefined) {\n fromCoordinateSystem = coordinateSystem;\n }\n\n if (fromCoordinateOrigin === undefined) {\n fromCoordinateOrigin = coordinateOrigin;\n }\n\n return {\n viewport,\n coordinateSystem,\n coordinateOrigin,\n modelMatrix,\n fromCoordinateSystem,\n fromCoordinateOrigin\n };\n}\n\nexport function getWorldPosition(position, {\n viewport,\n modelMatrix,\n coordinateSystem,\n coordinateOrigin,\n offsetMode\n}) {\n let [x, y, z = 0] = position;\n\n if (modelMatrix) {\n [x, y, z] = vec4.transformMat4([], [x, y, z, 1.0], modelMatrix);\n }\n\n switch (coordinateSystem) {\n case COORDINATE_SYSTEM.LNGLAT:\n return lngLatZToWorldPosition([x, y, z], viewport, offsetMode);\n\n case COORDINATE_SYSTEM.LNGLAT_OFFSETS:\n return lngLatZToWorldPosition([x + coordinateOrigin[0], y + coordinateOrigin[1], z + (coordinateOrigin[2] || 0)], viewport, offsetMode);\n\n case COORDINATE_SYSTEM.METER_OFFSETS:\n return lngLatZToWorldPosition(addMetersToLngLat(coordinateOrigin, [x, y, z]), viewport, offsetMode);\n\n case COORDINATE_SYSTEM.CARTESIAN:\n default:\n return viewport.isGeospatial ? [x + coordinateOrigin[0], y + coordinateOrigin[1], z + coordinateOrigin[2]] : viewport.projectPosition([x, y, z]);\n }\n}\nexport function projectPosition(position, params) {\n const {\n viewport,\n coordinateSystem,\n coordinateOrigin,\n modelMatrix,\n fromCoordinateSystem,\n fromCoordinateOrigin\n } = normalizeParameters(params);\n const {\n autoOffset = true\n } = params;\n const {\n geospatialOrigin = DEFAULT_COORDINATE_ORIGIN,\n shaderCoordinateOrigin = DEFAULT_COORDINATE_ORIGIN,\n offsetMode = false\n } = autoOffset ? getOffsetOrigin(viewport, coordinateSystem, coordinateOrigin) : {};\n const worldPosition = getWorldPosition(position, {\n viewport,\n modelMatrix,\n coordinateSystem: fromCoordinateSystem,\n coordinateOrigin: fromCoordinateOrigin,\n offsetMode\n });\n\n if (offsetMode) {\n const positionCommonSpace = viewport.projectPosition(geospatialOrigin || shaderCoordinateOrigin);\n vec3.sub(worldPosition, worldPosition, positionCommonSpace);\n }\n\n return worldPosition;\n}\n//# sourceMappingURL=project-functions.js.map","/**\n * Projection utils\n * TODO: move to Viewport class?\n */\nimport {COORDINATE_SYSTEM} from '../../lib/constants';\nimport {getOffsetOrigin} from './viewport-uniforms';\nimport WebMercatorViewport from '../../viewports/web-mercator-viewport';\n\nimport * as vec4 from 'gl-matrix/vec4';\nimport * as vec3 from 'gl-matrix/vec3';\nimport {addMetersToLngLat} from '@math.gl/web-mercator';\n\nimport type {CoordinateSystem} from '../../lib/constants';\nimport type Viewport from '../../viewports/viewport';\nimport type {NumericArray} from '../../types/types';\n\nconst DEFAULT_COORDINATE_ORIGIN = [0, 0, 0];\n\n// In project.glsl, offset modes calculate z differently from LNG_LAT mode.\n// offset modes apply the y adjustment (unitsPerMeter2) when projecting z\n// LNG_LAT mode only use the linear scale.\nfunction lngLatZToWorldPosition(\n lngLatZ: [number, number, number],\n viewport: Viewport,\n offsetMode: boolean = false\n): [number, number, number] {\n const p = viewport.projectPosition(lngLatZ);\n\n // TODO - avoid using instanceof\n if (offsetMode && viewport instanceof WebMercatorViewport) {\n const [longitude, latitude, z = 0] = lngLatZ;\n const distanceScales = viewport.getDistanceScales([longitude, latitude]);\n p[2] = z * distanceScales.unitsPerMeter[2];\n }\n return p;\n}\n\nfunction normalizeParameters(opts: {\n viewport: Viewport;\n coordinateSystem: CoordinateSystem;\n coordinateOrigin: [number, number, number];\n modelMatrix?: NumericArray | null;\n fromCoordinateSystem?: CoordinateSystem;\n fromCoordinateOrigin?: [number, number, number];\n}): {\n viewport: Viewport;\n coordinateSystem: CoordinateSystem;\n coordinateOrigin: [number, number, number];\n modelMatrix?: NumericArray | null;\n fromCoordinateSystem: CoordinateSystem;\n fromCoordinateOrigin: [number, number, number];\n} {\n const {viewport, modelMatrix, coordinateOrigin} = opts;\n let {coordinateSystem, fromCoordinateSystem, fromCoordinateOrigin} = opts;\n\n if (coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n coordinateSystem = viewport.isGeospatial\n ? COORDINATE_SYSTEM.LNGLAT\n : COORDINATE_SYSTEM.CARTESIAN;\n }\n\n if (fromCoordinateSystem === undefined) {\n fromCoordinateSystem = coordinateSystem;\n }\n if (fromCoordinateOrigin === undefined) {\n fromCoordinateOrigin = coordinateOrigin;\n }\n\n return {\n viewport,\n coordinateSystem,\n coordinateOrigin,\n modelMatrix,\n fromCoordinateSystem,\n fromCoordinateOrigin\n };\n}\n\n/** Get the common space position from world coordinates in the given coordinate system */\nexport function getWorldPosition(\n position: number[],\n {\n viewport,\n modelMatrix,\n coordinateSystem,\n coordinateOrigin,\n offsetMode\n }: {\n viewport: Viewport;\n modelMatrix?: NumericArray | null;\n coordinateSystem: CoordinateSystem;\n coordinateOrigin: [number, number, number];\n offsetMode?: boolean;\n }\n): [number, number, number] {\n let [x, y, z = 0] = position;\n\n if (modelMatrix) {\n [x, y, z] = vec4.transformMat4([], [x, y, z, 1.0], modelMatrix);\n }\n\n switch (coordinateSystem) {\n case COORDINATE_SYSTEM.LNGLAT:\n return lngLatZToWorldPosition([x, y, z], viewport, offsetMode);\n\n case COORDINATE_SYSTEM.LNGLAT_OFFSETS:\n return lngLatZToWorldPosition(\n [x + coordinateOrigin[0], y + coordinateOrigin[1], z + (coordinateOrigin[2] || 0)],\n viewport,\n offsetMode\n );\n\n case COORDINATE_SYSTEM.METER_OFFSETS:\n return lngLatZToWorldPosition(\n addMetersToLngLat(coordinateOrigin, [x, y, z]) as [number, number, number],\n viewport,\n offsetMode\n );\n\n case COORDINATE_SYSTEM.CARTESIAN:\n default:\n return viewport.isGeospatial\n ? [x + coordinateOrigin[0], y + coordinateOrigin[1], z + coordinateOrigin[2]]\n : viewport.projectPosition([x, y, z]);\n }\n}\n\n/**\n * Equivalent to project_position in project.glsl\n * projects a user supplied position to world position directly with or without\n * a reference coordinate system\n */\nexport function projectPosition(\n position: number[],\n params: {\n /** The current viewport */\n viewport: Viewport;\n /** The reference coordinate system used to align world position */\n coordinateSystem: CoordinateSystem;\n /** The reference coordinate origin used to align world position */\n coordinateOrigin: [number, number, number];\n /** The model matrix of the supplied position */\n modelMatrix?: NumericArray | null;\n /** The coordinate system that the supplied position is in. Default to the same as `coordinateSystem`. */\n fromCoordinateSystem?: CoordinateSystem;\n /** The coordinate origin that the supplied position is in. Default to the same as `coordinateOrigin`. */\n fromCoordinateOrigin?: [number, number, number];\n /** Whether to apply offset mode automatically as does the project shader module.\n * Offset mode places the origin of the common space at the given viewport's center. It is used in some use cases\n * to improve precision in the vertex shader due to the fp32 float limitation.\n * Use `autoOffset:false` if the returned position should not be dependent on the current viewport.\n * Default `true` */\n autoOffset?: boolean;\n }\n): [number, number, number] {\n const {\n viewport,\n coordinateSystem,\n coordinateOrigin,\n modelMatrix,\n fromCoordinateSystem,\n fromCoordinateOrigin\n } = normalizeParameters(params);\n const {autoOffset = true} = params;\n\n const {\n geospatialOrigin = DEFAULT_COORDINATE_ORIGIN,\n shaderCoordinateOrigin = DEFAULT_COORDINATE_ORIGIN,\n offsetMode = false\n } = autoOffset ? getOffsetOrigin(viewport, coordinateSystem, coordinateOrigin) : {};\n\n const worldPosition = getWorldPosition(position, {\n viewport,\n modelMatrix,\n coordinateSystem: fromCoordinateSystem,\n coordinateOrigin: fromCoordinateOrigin,\n offsetMode\n });\n\n if (offsetMode) {\n const positionCommonSpace = viewport.projectPosition(\n geospatialOrigin || shaderCoordinateOrigin\n );\n vec3.sub(worldPosition, worldPosition, positionCommonSpace);\n }\n\n return worldPosition;\n}\n","import * as mat4 from 'gl-matrix/mat4';\nimport * as vec4 from 'gl-matrix/vec4';\nimport { COORDINATE_SYSTEM, PROJECTION_MODE } from '../../lib/constants';\nimport memoize from '../../utils/memoize';\nconst ZERO_VECTOR = [0, 0, 0, 0];\nconst VECTOR_TO_POINT_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0];\nconst IDENTITY_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\nconst DEFAULT_PIXELS_PER_UNIT2 = [0, 0, 0];\nconst DEFAULT_COORDINATE_ORIGIN = [0, 0, 0];\nconst getMemoizedViewportUniforms = memoize(calculateViewportUniforms);\nexport function getOffsetOrigin(viewport, coordinateSystem, coordinateOrigin = DEFAULT_COORDINATE_ORIGIN) {\n if (coordinateOrigin.length < 3) {\n coordinateOrigin = [coordinateOrigin[0], coordinateOrigin[1], 0];\n }\n\n let shaderCoordinateOrigin = coordinateOrigin;\n let geospatialOrigin;\n let offsetMode = true;\n\n if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT_OFFSETS || coordinateSystem === COORDINATE_SYSTEM.METER_OFFSETS) {\n geospatialOrigin = coordinateOrigin;\n } else {\n geospatialOrigin = viewport.isGeospatial ? [Math.fround(viewport.longitude), Math.fround(viewport.latitude), 0] : null;\n }\n\n switch (viewport.projectionMode) {\n case PROJECTION_MODE.WEB_MERCATOR:\n if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT || coordinateSystem === COORDINATE_SYSTEM.CARTESIAN) {\n geospatialOrigin = [0, 0, 0];\n offsetMode = false;\n }\n\n break;\n\n case PROJECTION_MODE.WEB_MERCATOR_AUTO_OFFSET:\n if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT) {\n shaderCoordinateOrigin = geospatialOrigin;\n } else if (coordinateSystem === COORDINATE_SYSTEM.CARTESIAN) {\n shaderCoordinateOrigin = [Math.fround(viewport.center[0]), Math.fround(viewport.center[1]), 0];\n geospatialOrigin = viewport.unprojectPosition(shaderCoordinateOrigin);\n shaderCoordinateOrigin[0] -= coordinateOrigin[0];\n shaderCoordinateOrigin[1] -= coordinateOrigin[1];\n shaderCoordinateOrigin[2] -= coordinateOrigin[2];\n }\n\n break;\n\n case PROJECTION_MODE.IDENTITY:\n shaderCoordinateOrigin = viewport.position.map(Math.fround);\n shaderCoordinateOrigin[2] = shaderCoordinateOrigin[2] || 0;\n break;\n\n case PROJECTION_MODE.GLOBE:\n offsetMode = false;\n geospatialOrigin = null;\n break;\n\n default:\n offsetMode = false;\n }\n\n return {\n geospatialOrigin,\n shaderCoordinateOrigin,\n offsetMode\n };\n}\n\nfunction calculateMatrixAndOffset(viewport, coordinateSystem, coordinateOrigin) {\n const {\n viewMatrixUncentered,\n projectionMatrix\n } = viewport;\n let {\n viewMatrix,\n viewProjectionMatrix\n } = viewport;\n let projectionCenter = ZERO_VECTOR;\n let originCommon = ZERO_VECTOR;\n let cameraPosCommon = viewport.cameraPosition;\n const {\n geospatialOrigin,\n shaderCoordinateOrigin,\n offsetMode\n } = getOffsetOrigin(viewport, coordinateSystem, coordinateOrigin);\n\n if (offsetMode) {\n originCommon = viewport.projectPosition(geospatialOrigin || shaderCoordinateOrigin);\n cameraPosCommon = [cameraPosCommon[0] - originCommon[0], cameraPosCommon[1] - originCommon[1], cameraPosCommon[2] - originCommon[2]];\n originCommon[3] = 1;\n projectionCenter = vec4.transformMat4([], originCommon, viewProjectionMatrix);\n viewMatrix = viewMatrixUncentered || viewMatrix;\n viewProjectionMatrix = mat4.multiply([], projectionMatrix, viewMatrix);\n viewProjectionMatrix = mat4.multiply([], viewProjectionMatrix, VECTOR_TO_POINT_MATRIX);\n }\n\n return {\n viewMatrix,\n viewProjectionMatrix,\n projectionCenter,\n originCommon,\n cameraPosCommon,\n shaderCoordinateOrigin,\n geospatialOrigin\n };\n}\n\nexport function getUniformsFromViewport({\n viewport,\n devicePixelRatio = 1,\n modelMatrix = null,\n coordinateSystem = COORDINATE_SYSTEM.DEFAULT,\n coordinateOrigin = DEFAULT_COORDINATE_ORIGIN,\n autoWrapLongitude = false\n}) {\n if (coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n coordinateSystem = viewport.isGeospatial ? COORDINATE_SYSTEM.LNGLAT : COORDINATE_SYSTEM.CARTESIAN;\n }\n\n const uniforms = getMemoizedViewportUniforms({\n viewport,\n devicePixelRatio,\n coordinateSystem,\n coordinateOrigin\n });\n uniforms.project_uWrapLongitude = autoWrapLongitude;\n uniforms.project_uModelMatrix = modelMatrix || IDENTITY_MATRIX;\n return uniforms;\n}\n\nfunction calculateViewportUniforms({\n viewport,\n devicePixelRatio,\n coordinateSystem,\n coordinateOrigin\n}) {\n const {\n projectionCenter,\n viewProjectionMatrix,\n originCommon,\n cameraPosCommon,\n shaderCoordinateOrigin,\n geospatialOrigin\n } = calculateMatrixAndOffset(viewport, coordinateSystem, coordinateOrigin);\n const distanceScales = viewport.getDistanceScales();\n const viewportSize = [viewport.width * devicePixelRatio, viewport.height * devicePixelRatio];\n const focalDistance = vec4.transformMat4([], [0, 0, -viewport.focalDistance, 1], viewport.projectionMatrix)[3] || 1;\n const uniforms = {\n project_uCoordinateSystem: coordinateSystem,\n project_uProjectionMode: viewport.projectionMode,\n project_uCoordinateOrigin: shaderCoordinateOrigin,\n project_uCommonOrigin: originCommon.slice(0, 3),\n project_uCenter: projectionCenter,\n project_uPseudoMeters: Boolean(viewport._pseudoMeters),\n project_uViewportSize: viewportSize,\n project_uDevicePixelRatio: devicePixelRatio,\n project_uFocalDistance: focalDistance,\n project_uCommonUnitsPerMeter: distanceScales.unitsPerMeter,\n project_uCommonUnitsPerWorldUnit: distanceScales.unitsPerMeter,\n project_uCommonUnitsPerWorldUnit2: DEFAULT_PIXELS_PER_UNIT2,\n project_uScale: viewport.scale,\n project_uWrapLongitude: false,\n project_uViewProjectionMatrix: viewProjectionMatrix,\n project_uModelMatrix: IDENTITY_MATRIX,\n project_uCameraPosition: cameraPosCommon\n };\n\n if (geospatialOrigin) {\n const distanceScalesAtOrigin = viewport.getDistanceScales(geospatialOrigin);\n\n switch (coordinateSystem) {\n case COORDINATE_SYSTEM.METER_OFFSETS:\n uniforms.project_uCommonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerMeter;\n uniforms.project_uCommonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerMeter2;\n break;\n\n case COORDINATE_SYSTEM.LNGLAT:\n case COORDINATE_SYSTEM.LNGLAT_OFFSETS:\n if (!viewport._pseudoMeters) {\n uniforms.project_uCommonUnitsPerMeter = distanceScalesAtOrigin.unitsPerMeter;\n }\n\n uniforms.project_uCommonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerDegree;\n uniforms.project_uCommonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerDegree2;\n break;\n\n case COORDINATE_SYSTEM.CARTESIAN:\n uniforms.project_uCommonUnitsPerWorldUnit = [1, 1, distanceScalesAtOrigin.unitsPerMeter[2]];\n uniforms.project_uCommonUnitsPerWorldUnit2 = [0, 0, distanceScalesAtOrigin.unitsPerMeter2[2]];\n break;\n\n default:\n break;\n }\n }\n\n return uniforms;\n}\n//# sourceMappingURL=viewport-uniforms.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n/* eslint-disable complexity, camelcase */\n\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec4 from 'gl-matrix/vec4';\n\nimport {COORDINATE_SYSTEM, PROJECTION_MODE} from '../../lib/constants';\n\nimport memoize from '../../utils/memoize';\n\nimport type Viewport from '../../viewports/viewport';\nimport type {CoordinateSystem} from '../../lib/constants';\nimport type {NumericArray} from '../../types/types';\n\ntype Vec3 = [number, number, number];\ntype Vec4 = [number, number, number, number];\n\n// To quickly set a vector to zero\nconst ZERO_VECTOR: Vec4 = [0, 0, 0, 0];\n// 4x4 matrix that drops 4th component of vector\nconst VECTOR_TO_POINT_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0];\nconst IDENTITY_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\nconst DEFAULT_PIXELS_PER_UNIT2: Vec3 = [0, 0, 0];\nconst DEFAULT_COORDINATE_ORIGIN: Vec3 = [0, 0, 0];\n\nconst getMemoizedViewportUniforms = memoize(calculateViewportUniforms);\n\nexport function getOffsetOrigin(\n viewport: Viewport,\n coordinateSystem: CoordinateSystem,\n coordinateOrigin: Vec3 = DEFAULT_COORDINATE_ORIGIN\n): {\n geospatialOrigin: Vec3 | null;\n shaderCoordinateOrigin: Vec3;\n offsetMode: boolean;\n} {\n if (coordinateOrigin.length < 3) {\n coordinateOrigin = [coordinateOrigin[0], coordinateOrigin[1], 0];\n }\n\n let shaderCoordinateOrigin = coordinateOrigin;\n let geospatialOrigin: Vec3 | null;\n let offsetMode = true;\n\n if (\n coordinateSystem === COORDINATE_SYSTEM.LNGLAT_OFFSETS ||\n coordinateSystem === COORDINATE_SYSTEM.METER_OFFSETS\n ) {\n geospatialOrigin = coordinateOrigin;\n } else {\n geospatialOrigin = viewport.isGeospatial\n ? // @ts-expect-error longitude and latitude are not defined on the base Viewport, but is expected on geospatial viewports\n [Math.fround(viewport.longitude), Math.fround(viewport.latitude), 0]\n : null;\n }\n\n switch (viewport.projectionMode) {\n case PROJECTION_MODE.WEB_MERCATOR:\n if (\n coordinateSystem === COORDINATE_SYSTEM.LNGLAT ||\n coordinateSystem === COORDINATE_SYSTEM.CARTESIAN\n ) {\n geospatialOrigin = [0, 0, 0];\n offsetMode = false;\n }\n break;\n\n case PROJECTION_MODE.WEB_MERCATOR_AUTO_OFFSET:\n if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT) {\n // viewport center in world space\n // @ts-expect-error when using LNGLAT coordinates, we expect the viewport to be geospatial, in which case geospatialOrigin is defined\n shaderCoordinateOrigin = geospatialOrigin;\n } else if (coordinateSystem === COORDINATE_SYSTEM.CARTESIAN) {\n // viewport center in common space\n shaderCoordinateOrigin = [\n Math.fround(viewport.center[0]),\n Math.fround(viewport.center[1]),\n 0\n ];\n // Geospatial origin (wgs84) must match shaderCoordinateOrigin (common)\n geospatialOrigin = viewport.unprojectPosition(shaderCoordinateOrigin);\n shaderCoordinateOrigin[0] -= coordinateOrigin[0];\n shaderCoordinateOrigin[1] -= coordinateOrigin[1];\n shaderCoordinateOrigin[2] -= coordinateOrigin[2];\n }\n break;\n\n case PROJECTION_MODE.IDENTITY:\n shaderCoordinateOrigin = viewport.position.map(Math.fround) as Vec3;\n shaderCoordinateOrigin[2] = shaderCoordinateOrigin[2] || 0;\n break;\n\n case PROJECTION_MODE.GLOBE:\n offsetMode = false;\n geospatialOrigin = null;\n break;\n\n default:\n // Unknown projection mode\n offsetMode = false;\n }\n\n return {geospatialOrigin, shaderCoordinateOrigin, offsetMode};\n}\n\n// The code that utilizes Matrix4 does the same calculation as their mat4 counterparts,\n// has lower performance but provides error checking.\nfunction calculateMatrixAndOffset(\n viewport: Viewport,\n coordinateSystem: CoordinateSystem,\n coordinateOrigin: Vec3\n): {\n viewMatrix: NumericArray;\n viewProjectionMatrix: NumericArray;\n projectionCenter: Vec4;\n originCommon: Vec4;\n cameraPosCommon: Vec3;\n shaderCoordinateOrigin: Vec3;\n geospatialOrigin: Vec3 | null;\n} {\n const {viewMatrixUncentered, projectionMatrix} = viewport;\n let {viewMatrix, viewProjectionMatrix} = viewport;\n\n let projectionCenter = ZERO_VECTOR;\n let originCommon: Vec4 = ZERO_VECTOR;\n let cameraPosCommon: Vec3 = viewport.cameraPosition as Vec3;\n const {geospatialOrigin, shaderCoordinateOrigin, offsetMode} = getOffsetOrigin(\n viewport,\n coordinateSystem,\n coordinateOrigin\n );\n\n if (offsetMode) {\n // Calculate transformed projectionCenter (using 64 bit precision JS)\n // This is the key to offset mode precision\n // (avoids doing this addition in 32 bit precision in GLSL)\n // @ts-expect-error the 4th component is assigned below\n originCommon = viewport.projectPosition(geospatialOrigin || shaderCoordinateOrigin);\n\n cameraPosCommon = [\n cameraPosCommon[0] - originCommon[0],\n cameraPosCommon[1] - originCommon[1],\n cameraPosCommon[2] - originCommon[2]\n ];\n\n originCommon[3] = 1;\n\n // projectionCenter = new Matrix4(viewProjectionMatrix)\n // .transformVector([positionPixels[0], positionPixels[1], 0.0, 1.0]);\n projectionCenter = vec4.transformMat4([], originCommon, viewProjectionMatrix);\n\n // Always apply uncentered projection matrix if available (shader adds center)\n viewMatrix = viewMatrixUncentered || viewMatrix;\n\n // Zero out 4th coordinate (\"after\" model matrix) - avoids further translations\n // viewMatrix = new Matrix4(viewMatrixUncentered || viewMatrix)\n // .multiplyRight(VECTOR_TO_POINT_MATRIX);\n viewProjectionMatrix = mat4.multiply([], projectionMatrix, viewMatrix);\n viewProjectionMatrix = mat4.multiply([], viewProjectionMatrix, VECTOR_TO_POINT_MATRIX);\n }\n\n return {\n viewMatrix,\n viewProjectionMatrix,\n projectionCenter,\n originCommon,\n cameraPosCommon,\n shaderCoordinateOrigin,\n geospatialOrigin\n };\n}\n\nexport type ProjectUniforms = {\n project_uCoordinateSystem: number;\n project_uProjectionMode: number;\n project_uCoordinateOrigin: Vec3;\n project_uCommonOrigin: Vec3;\n project_uCenter: Vec4;\n // Backward compatibility\n // TODO: remove in v9\n project_uPseudoMeters: boolean;\n\n // Screen size\n project_uViewportSize: [number, number];\n project_uDevicePixelRatio: number;\n\n project_uFocalDistance: number;\n project_uCommonUnitsPerMeter: Vec3;\n project_uCommonUnitsPerWorldUnit: Vec3;\n project_uCommonUnitsPerWorldUnit2: Vec3;\n /** 2^zoom */\n project_uScale: number;\n project_uWrapLongitude: boolean;\n\n project_uViewProjectionMatrix: NumericArray;\n project_uModelMatrix: NumericArray;\n\n // This is for lighting calculations\n project_uCameraPosition: Vec3;\n};\n\nexport type ProjectModuleSettings = {\n viewport: Viewport;\n devicePixelRatio?: number;\n modelMatrix?: NumericArray | null;\n coordinateSystem?: CoordinateSystem;\n coordinateOrigin?: Vec3;\n autoWrapLongitude?: boolean;\n};\n\n/**\n * Returns uniforms for shaders based on current projection\n * includes: projection matrix suitable for shaders\n *\n * TODO - Ensure this works with any viewport, not just WebMercatorViewports\n *\n * @param {WebMercatorViewport} viewport -\n * @return {Float32Array} - 4x4 projection matrix that can be used in shaders\n */\nexport function getUniformsFromViewport({\n viewport,\n devicePixelRatio = 1,\n modelMatrix = null,\n // Match Layer.defaultProps\n coordinateSystem = COORDINATE_SYSTEM.DEFAULT,\n coordinateOrigin = DEFAULT_COORDINATE_ORIGIN,\n autoWrapLongitude = false\n}: ProjectModuleSettings): ProjectUniforms {\n if (coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n coordinateSystem = viewport.isGeospatial\n ? COORDINATE_SYSTEM.LNGLAT\n : COORDINATE_SYSTEM.CARTESIAN;\n }\n\n const uniforms = getMemoizedViewportUniforms({\n viewport,\n devicePixelRatio,\n coordinateSystem,\n coordinateOrigin\n });\n\n uniforms.project_uWrapLongitude = autoWrapLongitude;\n uniforms.project_uModelMatrix = modelMatrix || IDENTITY_MATRIX;\n\n return uniforms;\n}\n\nfunction calculateViewportUniforms({\n viewport,\n devicePixelRatio,\n coordinateSystem,\n coordinateOrigin\n}: {\n viewport: Viewport;\n devicePixelRatio: number;\n coordinateSystem: CoordinateSystem;\n coordinateOrigin: Vec3;\n}): ProjectUniforms {\n const {\n projectionCenter,\n viewProjectionMatrix,\n originCommon,\n cameraPosCommon,\n shaderCoordinateOrigin,\n geospatialOrigin\n } = calculateMatrixAndOffset(viewport, coordinateSystem, coordinateOrigin);\n\n // Calculate projection pixels per unit\n const distanceScales = viewport.getDistanceScales();\n\n const viewportSize: [number, number] = [\n viewport.width * devicePixelRatio,\n viewport.height * devicePixelRatio\n ];\n\n // Distance at which screen pixels are projected.\n // Used to scale sizes in clipspace to match screen pixels.\n // When using Viewport class's default projection matrix, this yields 1 for orthographic\n // and `viewport.focalDistance` for perspective views\n const focalDistance =\n vec4.transformMat4([], [0, 0, -viewport.focalDistance, 1], viewport.projectionMatrix)[3] || 1;\n\n const uniforms: ProjectUniforms = {\n // Projection mode values\n project_uCoordinateSystem: coordinateSystem,\n project_uProjectionMode: viewport.projectionMode,\n project_uCoordinateOrigin: shaderCoordinateOrigin,\n project_uCommonOrigin: originCommon.slice(0, 3) as Vec3,\n project_uCenter: projectionCenter,\n\n // Backward compatibility\n // TODO: remove in v9\n // @ts-expect-error _pseudoMeters is only defined on WebMercator viewport\n project_uPseudoMeters: Boolean(viewport._pseudoMeters),\n\n // Screen size\n project_uViewportSize: viewportSize,\n project_uDevicePixelRatio: devicePixelRatio,\n\n project_uFocalDistance: focalDistance,\n project_uCommonUnitsPerMeter: distanceScales.unitsPerMeter as Vec3,\n project_uCommonUnitsPerWorldUnit: distanceScales.unitsPerMeter as Vec3,\n project_uCommonUnitsPerWorldUnit2: DEFAULT_PIXELS_PER_UNIT2,\n project_uScale: viewport.scale, // This is the mercator scale (2 ** zoom)\n project_uWrapLongitude: false,\n\n project_uViewProjectionMatrix: viewProjectionMatrix,\n project_uModelMatrix: IDENTITY_MATRIX,\n\n // This is for lighting calculations\n project_uCameraPosition: cameraPosCommon\n };\n\n if (geospatialOrigin) {\n // Get high-precision DistanceScales from geospatial viewport\n // TODO: stricter types in Viewport classes\n const distanceScalesAtOrigin = viewport.getDistanceScales(geospatialOrigin) as {\n unitsPerMeter: Vec3;\n metersPerUnit: Vec3;\n unitsPerMeter2: Vec3;\n unitsPerDegree: Vec3;\n degreesPerUnit: Vec3;\n unitsPerDegree2: Vec3;\n };\n switch (coordinateSystem) {\n case COORDINATE_SYSTEM.METER_OFFSETS:\n uniforms.project_uCommonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerMeter;\n uniforms.project_uCommonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerMeter2;\n break;\n\n case COORDINATE_SYSTEM.LNGLAT:\n case COORDINATE_SYSTEM.LNGLAT_OFFSETS:\n // @ts-expect-error _pseudoMeters only exists on WebMercatorView\n if (!viewport._pseudoMeters) {\n uniforms.project_uCommonUnitsPerMeter = distanceScalesAtOrigin.unitsPerMeter;\n }\n uniforms.project_uCommonUnitsPerWorldUnit = distanceScalesAtOrigin.unitsPerDegree;\n uniforms.project_uCommonUnitsPerWorldUnit2 = distanceScalesAtOrigin.unitsPerDegree2;\n break;\n\n // a.k.a \"preprojected\" positions\n case COORDINATE_SYSTEM.CARTESIAN:\n uniforms.project_uCommonUnitsPerWorldUnit = [1, 1, distanceScalesAtOrigin.unitsPerMeter[2]];\n uniforms.project_uCommonUnitsPerWorldUnit2 = [\n 0,\n 0,\n distanceScalesAtOrigin.unitsPerMeter2[2]\n ];\n break;\n\n default:\n break;\n }\n }\n\n return uniforms;\n}\n","import * as glMatrix from \"./common.js\";\n/**\r\n * 4x4 Matrix
Format: column-major, when typed out it looks like row-major
The matrices are being post multiplied.\r\n * @module mat4\r\n */\n\n/**\r\n * Creates a new identity mat4\r\n *\r\n * @returns {mat4} a new 4x4 matrix\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a new mat4 initialized with values from an existing matrix\r\n *\r\n * @param {mat4} a matrix to clone\r\n * @returns {mat4} a new 4x4 matrix\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Copy the values from one mat4 to another\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Create a new mat4 with the given values\r\n *\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\r\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\r\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\r\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\r\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\r\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\r\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\r\n * @returns {mat4} A new mat4\r\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\r\n * Set the components of a mat4 to the given values\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\r\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\r\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\r\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\r\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\r\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\r\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\r\n * @returns {mat4} out\r\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\r\n * Set a mat4 to the identity matrix\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @returns {mat4} out\r\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Transpose the values of a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\r\n * Inverts a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\r\n * Calculates the adjugate of a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\r\n * Calculates the determinant of a mat4\r\n *\r\n * @param {mat4} a the source matrix\r\n * @returns {Number} determinant of a\r\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\r\n * Multiplies two mat4s\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\r\n * Translate a mat4 by the given vector\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to translate\r\n * @param {vec3} v vector to translate by\r\n * @returns {mat4} out\r\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\r\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to scale\r\n * @param {vec3} v the vec3 to scale the matrix by\r\n * @returns {mat4} out\r\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Rotates a mat4 by the given angle around the given axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @param {vec3} axis the axis to rotate around\r\n * @returns {mat4} out\r\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the X axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the Y axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the Z axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\r\n * Creates a matrix from a vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, dest, vec);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {vec3} v Translation vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a vector scaling\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.scale(dest, dest, vec);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {vec3} v Scaling vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a given angle around a given axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotate(dest, dest, rad, axis);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @param {vec3} axis the axis to rotate around\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the X axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateX(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the Y axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateY(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the Z axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateZ(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation and vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {vec3} v Translation vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a new mat4 from a dual quat.\r\n *\r\n * @param {mat4} out Matrix\r\n * @param {quat2} a Dual Quaternion\r\n * @returns {mat4} mat4 receiving operation result\r\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\r\n * Returns the translation vector component of a transformation\r\n * matrix. If a matrix is built with fromRotationTranslation,\r\n * the returned vector will be the same as the translation vector\r\n * originally supplied.\r\n * @param {vec3} out Vector to receive translation component\r\n * @param {mat4} mat Matrix to be decomposed (input)\r\n * @return {vec3} out\r\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\r\n * Returns the scaling factor component of a transformation\r\n * matrix. If a matrix is built with fromRotationTranslationScale\r\n * with a normalized Quaternion paramter, the returned vector will be\r\n * the same as the scaling vector\r\n * originally supplied.\r\n * @param {vec3} out Vector to receive scaling factor component\r\n * @param {mat4} mat Matrix to be decomposed (input)\r\n * @return {vec3} out\r\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\r\n * Returns a quaternion representing the rotational component\r\n * of a transformation matrix. If a matrix is built with\r\n * fromRotationTranslation, the returned quaternion will be the\r\n * same as the quaternion originally supplied.\r\n * @param {quat} out Quaternion to receive the rotation component\r\n * @param {mat4} mat Matrix to be decomposed (input)\r\n * @return {quat} out\r\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n * mat4.scale(dest, scale)\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {vec3} v Translation vector\r\n * @param {vec3} s Scaling vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * mat4.translate(dest, origin);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n * mat4.scale(dest, scale)\r\n * mat4.translate(dest, negativeOrigin);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {vec3} v Translation vector\r\n * @param {vec3} s Scaling vector\r\n * @param {vec3} o The origin vector around which to scale and rotate\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\r\n * Calculates a 4x4 matrix from the given quaternion\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat} q Quaternion to create matrix from\r\n *\r\n * @returns {mat4} out\r\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a frustum matrix with the given bounds\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {Number} left Left bound of the frustum\r\n * @param {Number} right Right bound of the frustum\r\n * @param {Number} bottom Bottom bound of the frustum\r\n * @param {Number} top Top bound of the frustum\r\n * @param {Number} near Near bound of the frustum\r\n * @param {Number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\r\n * Generates a perspective projection matrix with the given bounds.\r\n * Passing null/undefined/no value for far will generate infinite projection matrix.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {number} fovy Vertical field of view in radians\r\n * @param {number} aspect Aspect ratio. typically viewport width/height\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum, can be null or Infinity\r\n * @returns {mat4} out\r\n */\n\nexport function perspective(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\r\n * Generates a perspective projection matrix with the given field of view.\r\n * This is primarily useful for generating projection matrices to be used\r\n * with the still experiemental WebVR API.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\r\n * Generates a orthogonal projection matrix with the given bounds\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {number} left Left bound of the frustum\r\n * @param {number} right Right bound of the frustum\r\n * @param {number} bottom Bottom bound of the frustum\r\n * @param {number} top Top bound of the frustum\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function ortho(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\r\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {vec3} eye Position of the viewer\r\n * @param {vec3} center Point the viewer is looking at\r\n * @param {vec3} up vec3 pointing up\r\n * @returns {mat4} out\r\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a matrix that makes something look at something else.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {vec3} eye Position of the viewer\r\n * @param {vec3} center Point the viewer is looking at\r\n * @param {vec3} up vec3 pointing up\r\n * @returns {mat4} out\r\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\r\n * Returns a string representation of a mat4\r\n *\r\n * @param {mat4} a matrix to represent as a string\r\n * @returns {String} string representation of the matrix\r\n */\n\nexport function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\r\n * Returns Frobenius norm of a mat4\r\n *\r\n * @param {mat4} a the matrix to calculate Frobenius norm of\r\n * @returns {Number} Frobenius norm\r\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\r\n * Adds two mat4's\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\r\n * Subtracts matrix b from matrix a\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\r\n * Multiply each element of the matrix by a scalar.\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to scale\r\n * @param {Number} b amount to scale the matrix's elements by\r\n * @returns {mat4} out\r\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\r\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\r\n *\r\n * @param {mat4} out the receiving vector\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @param {Number} scale the amount to scale b's elements by before adding\r\n * @returns {mat4} out\r\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\r\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {mat4} a The first matrix.\r\n * @param {mat4} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\r\n * Returns whether or not the matrices have approximately the same elements in the same position.\r\n *\r\n * @param {mat4} a The first matrix.\r\n * @param {mat4} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\r\n * Alias for {@link mat4.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link mat4.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;","/**\r\n * Common utilities\r\n * @module glMatrix\r\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\r\n * Sets the type of array used when creating new vectors and matrices\r\n *\r\n * @param {Type} type Array type, such as Float32Array or Array\r\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\r\n * Convert Degree To Radian\r\n *\r\n * @param {Number} a Angle in Degrees\r\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\r\n * Tests whether or not the arguments have approximately the same value, within an absolute\r\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\r\n * than or equal to 1.0, and a relative tolerance is used for larger values)\r\n *\r\n * @param {Number} a The first number to test.\r\n * @param {Number} b The second number to test.\r\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import * as glMatrix from \"./common.js\";\n/**\r\n * 4 Dimensional Vector\r\n * @module vec4\r\n */\n\n/**\r\n * Creates a new, empty vec4\r\n *\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec4 initialized with values from an existing vector\r\n *\r\n * @param {vec4} a vector to clone\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\r\n * Creates a new vec4 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function fromValues(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\r\n * Copy the values from one vec4 to another\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the source vector\r\n * @returns {vec4} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\r\n * Set the components of a vec4 to the given values\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {vec4} out\r\n */\n\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\r\n * Adds two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\r\n * Multiplies two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\r\n * Divides two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to ceil\r\n * @returns {vec4} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to floor\r\n * @returns {vec4} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\r\n * Math.round the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to round\r\n * @returns {vec4} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\r\n * Scales a vec4 by a scalar number\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec4} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\r\n * Adds two vec4's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec4} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec4's\r\n *\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec4's\r\n *\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\r\n * Calculates the length of a vec4\r\n *\r\n * @param {vec4} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\r\n * Calculates the squared length of a vec4\r\n *\r\n * @param {vec4} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\r\n * Negates the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to negate\r\n * @returns {vec4} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to invert\r\n * @returns {vec4} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\r\n * Normalize a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to normalize\r\n * @returns {vec4} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec4's\r\n *\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\r\n * Returns the cross-product of three vectors in a 4-dimensional space\r\n *\r\n * @param {vec4} result the receiving vector\r\n * @param {vec4} U the first vector\r\n * @param {vec4} V the second vector\r\n * @param {vec4} W the third vector\r\n * @returns {vec4} result\r\n */\n\nexport function cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec4} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec4} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\r\n * Transforms the vec4 with a mat4.\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the vector to transform\r\n * @param {mat4} m matrix to transform with\r\n * @returns {vec4} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\r\n * Transforms the vec4 with a quat\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the vector to transform\r\n * @param {quat} q quaternion to transform with\r\n * @returns {vec4} out\r\n */\n\nexport function transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\r\n * Set the components of a vec4 to zero\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @returns {vec4} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {vec4} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\r\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {vec4} a The first vector.\r\n * @param {vec4} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {vec4} a The first vector.\r\n * @param {vec4} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\r\n * Alias for {@link vec4.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec4.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec4.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec4.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec4.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec4.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec4.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec4s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport Viewport from './viewport';\nimport { pixelsToWorld, getViewMatrix, addMetersToLngLat, unitsPerMeter, getProjectionParameters, altitudeToFovy, fovyToAltitude, fitBounds, getBounds } from '@math.gl/web-mercator';\nimport * as vec2 from 'gl-matrix/vec2';\nimport { Matrix4, clamp } from '@math.gl/core';\nexport default class WebMercatorViewport extends Viewport {\n constructor(opts = {}) {\n const {\n latitude = 0,\n longitude = 0,\n zoom = 0,\n pitch = 0,\n bearing = 0,\n nearZMultiplier = 0.1,\n farZMultiplier = 1.01,\n nearZ,\n farZ,\n orthographic = false,\n projectionMatrix,\n repeat = false,\n worldOffset = 0,\n position,\n padding,\n legacyMeterSizes = false\n } = opts;\n let {\n width,\n height,\n altitude = 1.5\n } = opts;\n const scale = Math.pow(2, zoom);\n width = width || 1;\n height = height || 1;\n let fovy;\n let projectionParameters = null;\n\n if (projectionMatrix) {\n altitude = projectionMatrix[5] / 2;\n fovy = altitudeToFovy(altitude);\n } else {\n if (opts.fovy) {\n fovy = opts.fovy;\n altitude = fovyToAltitude(fovy);\n } else {\n fovy = altitudeToFovy(altitude);\n }\n\n let offset;\n\n if (padding) {\n const {\n top = 0,\n bottom = 0\n } = padding;\n offset = [0, clamp((top + height - bottom) / 2, 0, height) - height / 2];\n }\n\n projectionParameters = getProjectionParameters({\n width,\n height,\n scale,\n center: position && [0, 0, position[2] * unitsPerMeter(latitude)],\n offset,\n pitch,\n fovy,\n nearZMultiplier,\n farZMultiplier\n });\n\n if (Number.isFinite(nearZ)) {\n projectionParameters.near = nearZ;\n }\n\n if (Number.isFinite(farZ)) {\n projectionParameters.far = farZ;\n }\n }\n\n let viewMatrixUncentered = getViewMatrix({\n height,\n pitch,\n bearing,\n scale,\n altitude\n });\n\n if (worldOffset) {\n const viewOffset = new Matrix4().translate([512 * worldOffset, 0, 0]);\n viewMatrixUncentered = viewOffset.multiplyLeft(viewMatrixUncentered);\n }\n\n super({ ...opts,\n width,\n height,\n viewMatrix: viewMatrixUncentered,\n longitude,\n latitude,\n zoom,\n ...projectionParameters,\n fovy,\n focalDistance: altitude\n });\n\n _defineProperty(this, \"longitude\", void 0);\n\n _defineProperty(this, \"latitude\", void 0);\n\n _defineProperty(this, \"pitch\", void 0);\n\n _defineProperty(this, \"bearing\", void 0);\n\n _defineProperty(this, \"altitude\", void 0);\n\n _defineProperty(this, \"fovy\", void 0);\n\n _defineProperty(this, \"orthographic\", void 0);\n\n _defineProperty(this, \"_subViewports\", void 0);\n\n _defineProperty(this, \"_pseudoMeters\", void 0);\n\n this.latitude = latitude;\n this.longitude = longitude;\n this.zoom = zoom;\n this.pitch = pitch;\n this.bearing = bearing;\n this.altitude = altitude;\n this.fovy = fovy;\n this.orthographic = orthographic;\n this._subViewports = repeat ? [] : null;\n this._pseudoMeters = legacyMeterSizes;\n Object.freeze(this);\n }\n\n get subViewports() {\n if (this._subViewports && !this._subViewports.length) {\n const bounds = this.getBounds();\n const minOffset = Math.floor((bounds[0] + 180) / 360);\n const maxOffset = Math.ceil((bounds[2] - 180) / 360);\n\n for (let x = minOffset; x <= maxOffset; x++) {\n const offsetViewport = x ? new WebMercatorViewport({ ...this,\n worldOffset: x\n }) : this;\n\n this._subViewports.push(offsetViewport);\n }\n }\n\n return this._subViewports;\n }\n\n projectPosition(xyz) {\n if (this._pseudoMeters) {\n return super.projectPosition(xyz);\n }\n\n const [X, Y] = this.projectFlat(xyz);\n const Z = (xyz[2] || 0) * unitsPerMeter(xyz[1]);\n return [X, Y, Z];\n }\n\n unprojectPosition(xyz) {\n if (this._pseudoMeters) {\n return super.unprojectPosition(xyz);\n }\n\n const [X, Y] = this.unprojectFlat(xyz);\n const Z = (xyz[2] || 0) / unitsPerMeter(Y);\n return [X, Y, Z];\n }\n\n addMetersToLngLat(lngLatZ, xyz) {\n return addMetersToLngLat(lngLatZ, xyz);\n }\n\n panByPosition(coords, pixel) {\n const fromLocation = pixelsToWorld(pixel, this.pixelUnprojectionMatrix);\n const toLocation = this.projectFlat(coords);\n const translate = vec2.add([], toLocation, vec2.negate([], fromLocation));\n const newCenter = vec2.add([], this.center, translate);\n const [longitude, latitude] = this.unprojectFlat(newCenter);\n return {\n longitude,\n latitude\n };\n }\n\n getBounds(options = {}) {\n const corners = getBounds(this, options.z || 0);\n return [Math.min(corners[0][0], corners[1][0], corners[2][0], corners[3][0]), Math.min(corners[0][1], corners[1][1], corners[2][1], corners[3][1]), Math.max(corners[0][0], corners[1][0], corners[2][0], corners[3][0]), Math.max(corners[0][1], corners[1][1], corners[2][1], corners[3][1])];\n }\n\n fitBounds(bounds, options = {}) {\n const {\n width,\n height\n } = this;\n const {\n longitude,\n latitude,\n zoom\n } = fitBounds({\n width,\n height,\n bounds,\n ...options\n });\n return new WebMercatorViewport({\n width,\n height,\n longitude,\n latitude,\n zoom\n });\n }\n\n}\n\n_defineProperty(WebMercatorViewport, \"displayName\", 'WebMercatorViewport');\n//# sourceMappingURL=web-mercator-viewport.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// View and Projection Matrix calculations for mapbox-js style\n// map view properties\nimport Viewport from './viewport';\n\nimport {\n pixelsToWorld,\n getViewMatrix,\n addMetersToLngLat,\n unitsPerMeter,\n getProjectionParameters,\n altitudeToFovy,\n fovyToAltitude,\n fitBounds,\n getBounds\n} from '@math.gl/web-mercator';\nimport {Padding} from './viewport';\n\n// TODO - import from math.gl\nimport * as vec2 from 'gl-matrix/vec2';\nimport {Matrix4, clamp} from '@math.gl/core';\n\nexport type WebMercatorViewportOptions = {\n /** Name of the viewport */\n id?: string;\n /** Left offset from the canvas edge, in pixels */\n x?: number;\n /** Top offset from the canvas edge, in pixels */\n y?: number;\n /** Viewport width in pixels */\n width?: number;\n /** Viewport height in pixels */\n height?: number;\n /** Longitude in degrees */\n longitude?: number;\n /** Latitude in degrees */\n latitude?: number;\n /** Tilt of the camera in degrees */\n pitch?: number;\n /** Heading of the camera in degrees */\n bearing?: number;\n /** Camera altitude relative to the viewport height, legacy property used to control the FOV. Default `1.5` */\n altitude?: number;\n /** Camera fovy in degrees. If provided, overrides `altitude` */\n fovy?: number;\n /** Viewport center in world space. If geospatial, refers to meter offsets from lng, lat */\n position?: number[];\n /** Zoom level */\n zoom?: number;\n /** Padding around the viewport, in pixels. */\n padding?: Padding | null;\n /** Model matrix of viewport center */\n modelMatrix?: number[] | null;\n /** Custom projection matrix */\n projectionMatrix?: number[];\n /** Use orthographic projection */\n orthographic?: boolean;\n /** Scaler for the near plane, 1 unit equals to the height of the viewport. Default `0.1` */\n nearZMultiplier?: number;\n /** Scaler for the far plane, 1 unit equals to the distance from the camera to the edge of the screen. Default `1.01` */\n farZMultiplier?: number;\n /** Optionally override the near plane position. `nearZMultiplier` is ignored if `nearZ` is supplied. */\n nearZ?: number;\n /** Optionally override the far plane position. `farZMultiplier` is ignored if `farZ` is supplied. */\n farZ?: number;\n /** Render multiple copies of the world */\n repeat?: boolean;\n /** Internal use */\n worldOffset?: number;\n /** @deprecated Revert to approximated meter size calculation prior to v8.5 */\n legacyMeterSizes?: boolean;\n};\n\n/**\n * Manages transformations to/from WGS84 coordinates using the Web Mercator Projection.\n */\nexport default class WebMercatorViewport extends Viewport {\n static displayName = 'WebMercatorViewport';\n\n longitude: number;\n latitude: number;\n pitch: number;\n bearing: number;\n altitude: number;\n fovy: number;\n orthographic: boolean;\n\n /** Each sub viewport renders one copy of the world if repeat:true. The list is generated and cached on first request. */\n private _subViewports: WebMercatorViewport[] | null;\n /** @deprecated Revert to approximated meter size calculation prior to v8.5 */\n private _pseudoMeters: boolean;\n\n /* eslint-disable complexity, max-statements */\n constructor(opts: WebMercatorViewportOptions = {}) {\n const {\n latitude = 0,\n longitude = 0,\n zoom = 0,\n pitch = 0,\n bearing = 0,\n nearZMultiplier = 0.1,\n farZMultiplier = 1.01,\n nearZ,\n farZ,\n orthographic = false,\n projectionMatrix,\n\n repeat = false,\n worldOffset = 0,\n position,\n padding,\n\n // backward compatibility\n // TODO: remove in v9\n legacyMeterSizes = false\n } = opts;\n\n let {width, height, altitude = 1.5} = opts;\n const scale = Math.pow(2, zoom);\n\n // Silently allow apps to send in 0,0 to facilitate isomorphic render etc\n width = width || 1;\n height = height || 1;\n\n let fovy;\n let projectionParameters: any = null;\n if (projectionMatrix) {\n altitude = projectionMatrix[5] / 2;\n fovy = altitudeToFovy(altitude);\n } else {\n if (opts.fovy) {\n fovy = opts.fovy;\n altitude = fovyToAltitude(fovy);\n } else {\n fovy = altitudeToFovy(altitude);\n }\n\n let offset: [number, number] | undefined;\n if (padding) {\n const {top = 0, bottom = 0} = padding;\n offset = [0, clamp((top + height - bottom) / 2, 0, height) - height / 2];\n }\n\n projectionParameters = getProjectionParameters({\n width,\n height,\n scale,\n center: position && [0, 0, position[2] * unitsPerMeter(latitude)],\n offset,\n pitch,\n fovy,\n nearZMultiplier,\n farZMultiplier\n });\n\n if (Number.isFinite(nearZ)) {\n projectionParameters.near = nearZ;\n }\n if (Number.isFinite(farZ)) {\n projectionParameters.far = farZ;\n }\n }\n\n // The uncentered matrix allows us two move the center addition to the\n // shader (cheap) which gives a coordinate system that has its center in\n // the layer's center position. This makes rotations and other modelMatrx\n // transforms much more useful.\n let viewMatrixUncentered = getViewMatrix({\n height,\n pitch,\n bearing,\n scale,\n altitude\n });\n\n if (worldOffset) {\n const viewOffset = new Matrix4().translate([512 * worldOffset, 0, 0]);\n viewMatrixUncentered = viewOffset.multiplyLeft(viewMatrixUncentered);\n }\n\n super({\n ...opts,\n // x, y,\n width,\n height,\n\n // view matrix\n viewMatrix: viewMatrixUncentered,\n longitude,\n latitude,\n zoom,\n\n // projection matrix parameters\n ...projectionParameters,\n fovy,\n focalDistance: altitude\n });\n\n // Save parameters\n this.latitude = latitude;\n this.longitude = longitude;\n this.zoom = zoom;\n this.pitch = pitch;\n this.bearing = bearing;\n this.altitude = altitude;\n this.fovy = fovy;\n\n this.orthographic = orthographic;\n\n this._subViewports = repeat ? [] : null;\n this._pseudoMeters = legacyMeterSizes;\n\n Object.freeze(this);\n }\n /* eslint-enable complexity, max-statements */\n\n get subViewports(): WebMercatorViewport[] | null {\n if (this._subViewports && !this._subViewports.length) {\n // Cache sub viewports so that we only calculate them once\n const bounds = this.getBounds();\n\n const minOffset = Math.floor((bounds[0] + 180) / 360);\n const maxOffset = Math.ceil((bounds[2] - 180) / 360);\n\n for (let x = minOffset; x <= maxOffset; x++) {\n const offsetViewport = x\n ? new WebMercatorViewport({\n ...this,\n worldOffset: x\n })\n : this;\n this._subViewports.push(offsetViewport);\n }\n }\n return this._subViewports;\n }\n\n projectPosition(xyz: number[]): [number, number, number] {\n if (this._pseudoMeters) {\n // Backward compatibility\n return super.projectPosition(xyz);\n }\n const [X, Y] = this.projectFlat(xyz);\n const Z = (xyz[2] || 0) * unitsPerMeter(xyz[1]);\n return [X, Y, Z];\n }\n\n unprojectPosition(xyz: number[]): [number, number, number] {\n if (this._pseudoMeters) {\n // Backward compatibility\n return super.unprojectPosition(xyz);\n }\n const [X, Y] = this.unprojectFlat(xyz);\n const Z = (xyz[2] || 0) / unitsPerMeter(Y);\n return [X, Y, Z];\n }\n\n /**\n * Add a meter delta to a base lnglat coordinate, returning a new lnglat array\n *\n * Note: Uses simple linear approximation around the viewport center\n * Error increases with size of offset (roughly 1% per 100km)\n *\n * @param {[Number,Number]|[Number,Number,Number]) lngLatZ - base coordinate\n * @param {[Number,Number]|[Number,Number,Number]) xyz - array of meter deltas\n * @return {[Number,Number]|[Number,Number,Number]) array of [lng,lat,z] deltas\n */\n addMetersToLngLat(lngLatZ: number[], xyz: number[]): number[] {\n return addMetersToLngLat(lngLatZ, xyz);\n }\n\n panByPosition(coords: number[], pixel: number[]): WebMercatorViewportOptions {\n const fromLocation = pixelsToWorld(pixel, this.pixelUnprojectionMatrix);\n const toLocation = this.projectFlat(coords);\n\n const translate = vec2.add([], toLocation, vec2.negate([], fromLocation));\n const newCenter = vec2.add([], this.center, translate);\n\n const [longitude, latitude] = this.unprojectFlat(newCenter);\n return {longitude, latitude};\n }\n\n getBounds(options: {z?: number} = {}): [number, number, number, number] {\n // @ts-ignore\n const corners = getBounds(this, options.z || 0);\n\n return [\n Math.min(corners[0][0], corners[1][0], corners[2][0], corners[3][0]),\n Math.min(corners[0][1], corners[1][1], corners[2][1], corners[3][1]),\n Math.max(corners[0][0], corners[1][0], corners[2][0], corners[3][0]),\n Math.max(corners[0][1], corners[1][1], corners[2][1], corners[3][1])\n ];\n }\n\n /**\n * Returns a new viewport that fit around the given rectangle.\n * Only supports non-perspective mode.\n */\n fitBounds(\n /** [[lon, lat], [lon, lat]] */\n bounds: [[number, number], [number, number]],\n options: {\n /** If not supplied, will use the current width of the viewport (default `1`) */\n width?: number;\n /** If not supplied, will use the current height of the viewport (default `1`) */\n height?: number;\n /** In degrees, 0.01 would be about 1000 meters */\n minExtent?: number;\n /** Max zoom level */\n maxZoom?: number;\n /** Extra padding in pixels */\n padding?: number | Required;\n /** Center shift in pixels */\n offset?: number[];\n } = {}\n ) {\n const {width, height} = this;\n const {longitude, latitude, zoom} = fitBounds({width, height, bounds, ...options});\n return new WebMercatorViewport({width, height, longitude, latitude, zoom});\n }\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport log from '../utils/log';\nimport { createMat4, getCameraPosition, getFrustumPlanes } from '../utils/math-utils';\nimport { Matrix4, Vector3, equals, clamp } from '@math.gl/core';\nimport * as mat4 from 'gl-matrix/mat4';\nimport { getDistanceScales, getMeterZoom, lngLatToWorld, worldToLngLat, worldToPixels, pixelsToWorld } from '@math.gl/web-mercator';\nimport { PROJECTION_MODE } from '../lib/constants';\nconst DEGREES_TO_RADIANS = Math.PI / 180;\nconst IDENTITY = createMat4();\nconst ZERO_VECTOR = [0, 0, 0];\nconst DEFAULT_DISTANCE_SCALES = {\n unitsPerMeter: [1, 1, 1],\n metersPerUnit: [1, 1, 1]\n};\n\nfunction createProjectionMatrix({\n width,\n height,\n orthographic,\n fovyRadians,\n focalDistance,\n padding,\n near,\n far\n}) {\n const aspect = width / height;\n const matrix = orthographic ? new Matrix4().orthographic({\n fovy: fovyRadians,\n aspect,\n focalDistance,\n near,\n far\n }) : new Matrix4().perspective({\n fovy: fovyRadians,\n aspect,\n near,\n far\n });\n\n if (padding) {\n const {\n left = 0,\n right = 0,\n top = 0,\n bottom = 0\n } = padding;\n const offsetX = clamp((left + width - right) / 2, 0, width) - width / 2;\n const offsetY = clamp((top + height - bottom) / 2, 0, height) - height / 2;\n matrix[8] -= offsetX * 2 / width;\n matrix[9] += offsetY * 2 / height;\n }\n\n return matrix;\n}\n\nexport default class Viewport {\n constructor(opts = {}) {\n _defineProperty(this, \"id\", void 0);\n\n _defineProperty(this, \"x\", void 0);\n\n _defineProperty(this, \"y\", void 0);\n\n _defineProperty(this, \"width\", void 0);\n\n _defineProperty(this, \"height\", void 0);\n\n _defineProperty(this, \"padding\", void 0);\n\n _defineProperty(this, \"isGeospatial\", void 0);\n\n _defineProperty(this, \"zoom\", void 0);\n\n _defineProperty(this, \"focalDistance\", void 0);\n\n _defineProperty(this, \"position\", void 0);\n\n _defineProperty(this, \"modelMatrix\", void 0);\n\n _defineProperty(this, \"distanceScales\", void 0);\n\n _defineProperty(this, \"scale\", void 0);\n\n _defineProperty(this, \"center\", void 0);\n\n _defineProperty(this, \"cameraPosition\", void 0);\n\n _defineProperty(this, \"projectionMatrix\", void 0);\n\n _defineProperty(this, \"viewMatrix\", void 0);\n\n _defineProperty(this, \"viewMatrixUncentered\", void 0);\n\n _defineProperty(this, \"viewMatrixInverse\", void 0);\n\n _defineProperty(this, \"viewProjectionMatrix\", void 0);\n\n _defineProperty(this, \"pixelProjectionMatrix\", void 0);\n\n _defineProperty(this, \"pixelUnprojectionMatrix\", void 0);\n\n _defineProperty(this, \"resolution\", void 0);\n\n _defineProperty(this, \"_frustumPlanes\", {});\n\n this.id = opts.id || this.constructor.displayName || 'viewport';\n this.x = opts.x || 0;\n this.y = opts.y || 0;\n this.width = opts.width || 1;\n this.height = opts.height || 1;\n this.zoom = opts.zoom || 0;\n this.padding = opts.padding;\n this.distanceScales = opts.distanceScales || DEFAULT_DISTANCE_SCALES;\n this.focalDistance = opts.focalDistance || 1;\n this.position = opts.position || ZERO_VECTOR;\n this.modelMatrix = opts.modelMatrix || null;\n const {\n longitude,\n latitude\n } = opts;\n this.isGeospatial = Number.isFinite(latitude) && Number.isFinite(longitude);\n\n this._initProps(opts);\n\n this._initMatrices(opts);\n\n this.equals = this.equals.bind(this);\n this.project = this.project.bind(this);\n this.unproject = this.unproject.bind(this);\n this.projectPosition = this.projectPosition.bind(this);\n this.unprojectPosition = this.unprojectPosition.bind(this);\n this.projectFlat = this.projectFlat.bind(this);\n this.unprojectFlat = this.unprojectFlat.bind(this);\n }\n\n get subViewports() {\n return null;\n }\n\n get metersPerPixel() {\n return this.distanceScales.metersPerUnit[2] / this.scale;\n }\n\n get projectionMode() {\n if (this.isGeospatial) {\n return this.zoom < 12 ? PROJECTION_MODE.WEB_MERCATOR : PROJECTION_MODE.WEB_MERCATOR_AUTO_OFFSET;\n }\n\n return PROJECTION_MODE.IDENTITY;\n }\n\n equals(viewport) {\n if (!(viewport instanceof Viewport)) {\n return false;\n }\n\n if (this === viewport) {\n return true;\n }\n\n return viewport.width === this.width && viewport.height === this.height && viewport.scale === this.scale && equals(viewport.projectionMatrix, this.projectionMatrix) && equals(viewport.viewMatrix, this.viewMatrix);\n }\n\n project(xyz, {\n topLeft = true\n } = {}) {\n const worldPosition = this.projectPosition(xyz);\n const coord = worldToPixels(worldPosition, this.pixelProjectionMatrix);\n const [x, y] = coord;\n const y2 = topLeft ? y : this.height - y;\n return xyz.length === 2 ? [x, y2] : [x, y2, coord[2]];\n }\n\n unproject(xyz, {\n topLeft = true,\n targetZ\n } = {}) {\n const [x, y, z] = xyz;\n const y2 = topLeft ? y : this.height - y;\n const targetZWorld = targetZ && targetZ * this.distanceScales.unitsPerMeter[2];\n const coord = pixelsToWorld([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n const [X, Y, Z] = this.unprojectPosition(coord);\n\n if (Number.isFinite(z)) {\n return [X, Y, Z];\n }\n\n return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n }\n\n projectPosition(xyz) {\n const [X, Y] = this.projectFlat(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.unitsPerMeter[2];\n return [X, Y, Z];\n }\n\n unprojectPosition(xyz) {\n const [X, Y] = this.unprojectFlat(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.metersPerUnit[2];\n return [X, Y, Z];\n }\n\n projectFlat(xyz) {\n if (this.isGeospatial) {\n const result = lngLatToWorld(xyz);\n result[1] = clamp(result[1], -318, 830);\n return result;\n }\n\n return xyz;\n }\n\n unprojectFlat(xyz) {\n if (this.isGeospatial) {\n return worldToLngLat(xyz);\n }\n\n return xyz;\n }\n\n getBounds(options = {}) {\n const unprojectOption = {\n targetZ: options.z || 0\n };\n const topLeft = this.unproject([0, 0], unprojectOption);\n const topRight = this.unproject([this.width, 0], unprojectOption);\n const bottomLeft = this.unproject([0, this.height], unprojectOption);\n const bottomRight = this.unproject([this.width, this.height], unprojectOption);\n return [Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]), Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]), Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]), Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1])];\n }\n\n getDistanceScales(coordinateOrigin) {\n if (coordinateOrigin) {\n return getDistanceScales({\n longitude: coordinateOrigin[0],\n latitude: coordinateOrigin[1],\n highPrecision: true\n });\n }\n\n return this.distanceScales;\n }\n\n containsPixel({\n x,\n y,\n width = 1,\n height = 1\n }) {\n return x < this.x + this.width && this.x < x + width && y < this.y + this.height && this.y < y + height;\n }\n\n getFrustumPlanes() {\n if (this._frustumPlanes.near) {\n return this._frustumPlanes;\n }\n\n Object.assign(this._frustumPlanes, getFrustumPlanes(this.viewProjectionMatrix));\n return this._frustumPlanes;\n }\n\n panByPosition(coords, pixel) {\n return null;\n }\n\n _initProps(opts) {\n const longitude = opts.longitude;\n const latitude = opts.latitude;\n\n if (this.isGeospatial) {\n if (!Number.isFinite(opts.zoom)) {\n this.zoom = getMeterZoom({\n latitude\n }) + Math.log2(this.focalDistance);\n }\n\n this.distanceScales = opts.distanceScales || getDistanceScales({\n latitude,\n longitude\n });\n }\n\n const scale = Math.pow(2, this.zoom);\n this.scale = scale;\n const {\n position,\n modelMatrix\n } = opts;\n let meterOffset = ZERO_VECTOR;\n\n if (position) {\n meterOffset = modelMatrix ? new Matrix4(modelMatrix).transformAsVector(position, []) : position;\n }\n\n if (this.isGeospatial) {\n const center = this.projectPosition([longitude, latitude, 0]);\n this.center = new Vector3(meterOffset).scale(this.distanceScales.unitsPerMeter).add(center);\n } else {\n this.center = this.projectPosition(meterOffset);\n }\n }\n\n _initMatrices(opts) {\n const {\n viewMatrix = IDENTITY,\n projectionMatrix = null,\n orthographic = false,\n fovyRadians,\n fovy = 75,\n near = 0.1,\n far = 1000,\n padding = null,\n focalDistance = 1\n } = opts;\n this.viewMatrixUncentered = viewMatrix;\n this.viewMatrix = new Matrix4().multiplyRight(viewMatrix).translate(new Vector3(this.center).negate());\n this.projectionMatrix = projectionMatrix || createProjectionMatrix({\n width: this.width,\n height: this.height,\n orthographic,\n fovyRadians: fovyRadians || fovy * DEGREES_TO_RADIANS,\n focalDistance,\n padding,\n near,\n far\n });\n const vpm = createMat4();\n mat4.multiply(vpm, vpm, this.projectionMatrix);\n mat4.multiply(vpm, vpm, this.viewMatrix);\n this.viewProjectionMatrix = vpm;\n this.viewMatrixInverse = mat4.invert([], this.viewMatrix) || this.viewMatrix;\n this.cameraPosition = getCameraPosition(this.viewMatrixInverse);\n const viewportMatrix = createMat4();\n const pixelProjectionMatrix = createMat4();\n mat4.scale(viewportMatrix, viewportMatrix, [this.width / 2, -this.height / 2, 1]);\n mat4.translate(viewportMatrix, viewportMatrix, [1, -1, 0]);\n mat4.multiply(pixelProjectionMatrix, viewportMatrix, this.viewProjectionMatrix);\n this.pixelProjectionMatrix = pixelProjectionMatrix;\n this.pixelUnprojectionMatrix = mat4.invert(createMat4(), this.pixelProjectionMatrix);\n\n if (!this.pixelUnprojectionMatrix) {\n log.warn('Pixel project matrix not invertible')();\n }\n }\n\n}\n\n_defineProperty(Viewport, \"displayName\", 'Viewport');\n//# sourceMappingURL=viewport.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport log from '../utils/log';\nimport {createMat4, getCameraPosition, getFrustumPlanes, FrustumPlane} from '../utils/math-utils';\n\nimport {Matrix4, Vector3, equals, clamp} from '@math.gl/core';\nimport * as mat4 from 'gl-matrix/mat4';\n\nimport {\n getDistanceScales,\n getMeterZoom,\n lngLatToWorld,\n worldToLngLat,\n worldToPixels,\n pixelsToWorld\n} from '@math.gl/web-mercator';\n\nimport {PROJECTION_MODE} from '../lib/constants';\n\nexport type DistanceScales = {\n unitsPerMeter: number[];\n metersPerUnit: number[];\n};\n\nexport type Padding = {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n};\n\nexport type ViewportOptions = {\n /** Name of the viewport */\n id?: string;\n /** Left offset from the canvas edge, in pixels */\n x?: number;\n /** Top offset from the canvas edge, in pixels */\n y?: number;\n /** Viewport width in pixels */\n width?: number;\n /** Viewport height in pixels */\n height?: number;\n /** Longitude in degrees (geospatial only) */\n longitude?: number;\n /** Latitude in degrees (geospatial only) */\n latitude?: number;\n /** Viewport center in world space. If geospatial, refers to meter offsets from lng, lat */\n position?: number[];\n /** Zoom level */\n zoom?: number;\n /** Padding around the viewport, in pixels. */\n padding?: Padding | null;\n distanceScales?: DistanceScales;\n /** Model matrix of viewport center */\n modelMatrix?: number[] | null;\n /** Custom view matrix */\n viewMatrix?: number[];\n /** Custom projection matrix */\n projectionMatrix?: number[];\n /** Modifier of viewport scale. Corresponds to the number of pixels per common unit at zoom 0. */\n focalDistance?: number;\n /** Use orthographic projection */\n orthographic?: boolean;\n /** fovy in radians. If supplied, overrides fovy */\n fovyRadians?: number;\n /** fovy in degrees. */\n fovy?: number;\n /** Near plane of the projection matrix */\n near?: number;\n /** Far plane of the projection matrix */\n far?: number;\n};\n\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\nconst IDENTITY = createMat4();\n\nconst ZERO_VECTOR = [0, 0, 0];\n\nconst DEFAULT_DISTANCE_SCALES: DistanceScales = {\n unitsPerMeter: [1, 1, 1],\n metersPerUnit: [1, 1, 1]\n};\n\n// / Helpers\nfunction createProjectionMatrix({\n width,\n height,\n orthographic,\n fovyRadians,\n focalDistance,\n padding,\n near,\n far\n}: {\n width: number;\n height: number;\n orthographic: boolean;\n fovyRadians: number;\n focalDistance: number;\n padding: Padding | null;\n near: number;\n far: number;\n}) {\n const aspect = width / height;\n const matrix = orthographic\n ? new Matrix4().orthographic({fovy: fovyRadians, aspect, focalDistance, near, far})\n : new Matrix4().perspective({fovy: fovyRadians, aspect, near, far});\n if (padding) {\n const {left = 0, right = 0, top = 0, bottom = 0} = padding;\n const offsetX = clamp((left + width - right) / 2, 0, width) - width / 2;\n const offsetY = clamp((top + height - bottom) / 2, 0, height) - height / 2;\n // pixels to clip space\n matrix[8] -= (offsetX * 2) / width;\n matrix[9] += (offsetY * 2) / height;\n }\n return matrix;\n}\n\n/**\n * Manages coordinate system transformations.\n *\n * Note: The Viewport is immutable in the sense that it only has accessors.\n * A new viewport instance should be created if any parameters have changed.\n */\nexport default class Viewport {\n static displayName = 'Viewport';\n\n /** Init parameters */\n\n id: string;\n x: number;\n y: number;\n width: number;\n height: number;\n padding?: Padding | null;\n isGeospatial: boolean;\n zoom: number;\n focalDistance: number;\n position: number[];\n modelMatrix: number[] | null;\n\n /** Derived parameters */\n\n // `!` post-fix expression operator asserts that its operand is non-null and non-undefined in contexts\n // where the type checker is unable to conclude that fact.\n\n distanceScales: DistanceScales; /** scale factors between world space and common space */\n scale!: number; /** scale factor, equals 2^zoom */\n center!: number[]; /** viewport center in common space */\n cameraPosition!: number[]; /** Camera position in common space */\n projectionMatrix!: number[];\n viewMatrix!: number[];\n viewMatrixUncentered!: number[];\n viewMatrixInverse!: number[];\n viewProjectionMatrix!: number[];\n pixelProjectionMatrix!: number[];\n pixelUnprojectionMatrix!: number[];\n resolution?: number;\n\n private _frustumPlanes: {[name: string]: FrustumPlane} = {};\n\n // eslint-disable-next-line complexity\n constructor(opts: ViewportOptions = {}) {\n // @ts-ignore\n this.id = opts.id || this.constructor.displayName || 'viewport';\n\n this.x = opts.x || 0;\n this.y = opts.y || 0;\n // Silently allow apps to send in w,h = 0,0\n this.width = opts.width || 1;\n this.height = opts.height || 1;\n this.zoom = opts.zoom || 0;\n this.padding = opts.padding;\n this.distanceScales = opts.distanceScales || DEFAULT_DISTANCE_SCALES;\n this.focalDistance = opts.focalDistance || 1;\n this.position = opts.position || ZERO_VECTOR;\n this.modelMatrix = opts.modelMatrix || null;\n\n const {longitude, latitude} = opts;\n this.isGeospatial = Number.isFinite(latitude) && Number.isFinite(longitude);\n\n this._initProps(opts);\n this._initMatrices(opts);\n\n // Bind methods for easy access\n this.equals = this.equals.bind(this);\n this.project = this.project.bind(this);\n this.unproject = this.unproject.bind(this);\n this.projectPosition = this.projectPosition.bind(this);\n this.unprojectPosition = this.unprojectPosition.bind(this);\n this.projectFlat = this.projectFlat.bind(this);\n this.unprojectFlat = this.unprojectFlat.bind(this);\n }\n\n get subViewports(): Viewport[] | null {\n return null;\n }\n\n get metersPerPixel(): number {\n return this.distanceScales.metersPerUnit[2] / this.scale;\n }\n\n get projectionMode(): number {\n if (this.isGeospatial) {\n return this.zoom < 12\n ? PROJECTION_MODE.WEB_MERCATOR\n : PROJECTION_MODE.WEB_MERCATOR_AUTO_OFFSET;\n }\n return PROJECTION_MODE.IDENTITY;\n }\n\n // Two viewports are equal if width and height are identical, and if\n // their view and projection matrices are (approximately) equal.\n equals(viewport: Viewport): boolean {\n if (!(viewport instanceof Viewport)) {\n return false;\n }\n if (this === viewport) {\n return true;\n }\n\n return (\n viewport.width === this.width &&\n viewport.height === this.height &&\n viewport.scale === this.scale &&\n equals(viewport.projectionMatrix, this.projectionMatrix) &&\n equals(viewport.viewMatrix, this.viewMatrix)\n );\n // TODO - check distance scales?\n }\n\n /**\n * Projects xyz (possibly latitude and longitude) to pixel coordinates in window\n * using viewport projection parameters\n * - [longitude, latitude] to [x, y]\n * - [longitude, latitude, Z] => [x, y, z]\n * Note: By default, returns top-left coordinates for canvas/SVG type render\n *\n * @param {Array} lngLatZ - [lng, lat] or [lng, lat, Z]\n * @param {Object} opts - options\n * @param {Object} opts.topLeft=true - Whether projected coords are top left\n * @return {Array} - [x, y] or [x, y, z] in top left coords\n */\n project(xyz: number[], {topLeft = true}: {topLeft?: boolean} = {}): number[] {\n const worldPosition = this.projectPosition(xyz);\n const coord = worldToPixels(worldPosition, this.pixelProjectionMatrix);\n\n const [x, y] = coord;\n const y2 = topLeft ? y : this.height - y;\n return xyz.length === 2 ? [x, y2] : [x, y2, coord[2]];\n }\n\n /**\n * Unproject pixel coordinates on screen onto world coordinates,\n * (possibly [lon, lat]) on map.\n * - [x, y] => [lng, lat]\n * - [x, y, z] => [lng, lat, Z]\n * @param {Array} xyz -\n * @param {Object} opts - options\n * @param {Object} opts.topLeft=true - Whether origin is top left\n * @return {Array|null} - [lng, lat, Z] or [X, Y, Z]\n */\n unproject(\n xyz: number[],\n {topLeft = true, targetZ}: {topLeft?: boolean; targetZ?: number} = {}\n ): number[] {\n const [x, y, z] = xyz;\n\n const y2 = topLeft ? y : this.height - y;\n const targetZWorld = targetZ && targetZ * this.distanceScales.unitsPerMeter[2];\n const coord = pixelsToWorld([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n const [X, Y, Z] = this.unprojectPosition(coord);\n\n if (Number.isFinite(z)) {\n return [X, Y, Z];\n }\n return Number.isFinite(targetZ) ? [X, Y, targetZ as number] : [X, Y];\n }\n\n // NON_LINEAR PROJECTION HOOKS\n // Used for web meractor projection\n\n projectPosition(xyz: number[]): [number, number, number] {\n const [X, Y] = this.projectFlat(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.unitsPerMeter[2];\n return [X, Y, Z];\n }\n\n unprojectPosition(xyz: number[]): [number, number, number] {\n const [X, Y] = this.unprojectFlat(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.metersPerUnit[2];\n return [X, Y, Z];\n }\n\n /**\n * Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n * Performs the nonlinear part of the web mercator projection.\n * Remaining projection is done with 4x4 matrices which also handles\n * perspective.\n * @param {Array} lngLat - [lng, lat] coordinates\n * Specifies a point on the sphere to project onto the map.\n * @return {Array} [x,y] coordinates.\n */\n projectFlat(xyz: number[]): [number, number] {\n if (this.isGeospatial) {\n // Shader clamps latitude to +-89.9, see /shaderlib/project/project.glsl.js\n // lngLatToWorld([0, -89.9])[1] = -317.9934163758329\n // lngLatToWorld([0, 89.9])[1] = 829.9934163758271\n const result = lngLatToWorld(xyz);\n result[1] = clamp(result[1], -318, 830);\n return result;\n }\n return xyz as [number, number];\n }\n\n /**\n * Unproject world point [x,y] on map onto {lat, lon} on sphere\n * @param {object|Vector} xy - object with {x,y} members\n * representing point on projected map plane\n * @return {GeoCoordinates} - object with {lat,lon} of point on sphere.\n * Has toArray method if you need a GeoJSON Array.\n * Per cartographic tradition, lat and lon are specified as degrees.\n */\n unprojectFlat(xyz: number[]): [number, number] {\n if (this.isGeospatial) {\n return worldToLngLat(xyz);\n }\n return xyz as [number, number];\n }\n\n /**\n * Get bounds of the current viewport\n * @return {Array} - [minX, minY, maxX, maxY]\n */\n getBounds(options: {z?: number} = {}): [number, number, number, number] {\n const unprojectOption = {targetZ: options.z || 0};\n\n const topLeft = this.unproject([0, 0], unprojectOption);\n const topRight = this.unproject([this.width, 0], unprojectOption);\n const bottomLeft = this.unproject([0, this.height], unprojectOption);\n const bottomRight = this.unproject([this.width, this.height], unprojectOption);\n\n return [\n Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]),\n Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]),\n Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]),\n Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1])\n ];\n }\n\n getDistanceScales(coordinateOrigin?: number[]): DistanceScales {\n if (coordinateOrigin) {\n return getDistanceScales({\n longitude: coordinateOrigin[0],\n latitude: coordinateOrigin[1],\n highPrecision: true\n });\n }\n return this.distanceScales;\n }\n\n containsPixel({\n x,\n y,\n width = 1,\n height = 1\n }: {\n x: number;\n y: number;\n width?: number;\n height?: number;\n }): boolean {\n return (\n x < this.x + this.width &&\n this.x < x + width &&\n y < this.y + this.height &&\n this.y < y + height\n );\n }\n\n // Extract frustum planes in common space\n getFrustumPlanes(): {\n left: FrustumPlane;\n right: FrustumPlane;\n bottom: FrustumPlane;\n top: FrustumPlane;\n near: FrustumPlane;\n far: FrustumPlane;\n } {\n if (this._frustumPlanes.near) {\n // @ts-ignore\n return this._frustumPlanes;\n }\n\n Object.assign(this._frustumPlanes, getFrustumPlanes(this.viewProjectionMatrix));\n\n // @ts-ignore\n return this._frustumPlanes;\n }\n\n // EXPERIMENTAL METHODS\n\n /**\n * Needed by panning and linear transition\n * Pan the viewport to place a given world coordinate at screen point [x, y]\n *\n * @param {Array} coords - world coordinates\n * @param {Array} pixel - [x,y] coordinates on screen\n * @return {Object} props of the new viewport\n */\n panByPosition(coords: number[], pixel: number[]): any {\n return null;\n }\n\n // INTERNAL METHODS\n\n /* eslint-disable complexity, max-statements */\n private _initProps(opts: ViewportOptions) {\n const longitude = opts.longitude as number;\n const latitude = opts.latitude as number;\n\n if (this.isGeospatial) {\n if (!Number.isFinite(opts.zoom)) {\n this.zoom = getMeterZoom({latitude}) + Math.log2(this.focalDistance);\n }\n this.distanceScales = opts.distanceScales || getDistanceScales({latitude, longitude});\n }\n const scale = Math.pow(2, this.zoom);\n this.scale = scale;\n\n const {position, modelMatrix} = opts;\n let meterOffset: number[] = ZERO_VECTOR;\n if (position) {\n meterOffset = modelMatrix\n ? (new Matrix4(modelMatrix).transformAsVector(position, []) as number[])\n : position;\n }\n\n if (this.isGeospatial) {\n // Determine camera center in common space\n const center = this.projectPosition([longitude, latitude, 0]);\n\n this.center = new Vector3(meterOffset)\n // Convert to pixels in current zoom\n .scale(this.distanceScales.unitsPerMeter)\n .add(center);\n } else {\n this.center = this.projectPosition(meterOffset);\n }\n }\n /* eslint-enable complexity, max-statements */\n\n private _initMatrices(opts: ViewportOptions) {\n const {\n // View matrix\n viewMatrix = IDENTITY,\n // Projection matrix\n projectionMatrix = null,\n\n // Projection matrix parameters, used if projectionMatrix not supplied\n orthographic = false,\n fovyRadians,\n fovy = 75,\n near = 0.1, // Distance of near clipping plane\n far = 1000, // Distance of far clipping plane\n padding = null, // Center offset in pixels\n focalDistance = 1\n } = opts;\n\n this.viewMatrixUncentered = viewMatrix;\n // Make a centered version of the matrix for projection modes without an offset\n this.viewMatrix = new Matrix4()\n // Apply the uncentered view matrix\n .multiplyRight(viewMatrix)\n // And center it\n .translate(new Vector3(this.center).negate());\n\n this.projectionMatrix =\n projectionMatrix ||\n createProjectionMatrix({\n width: this.width,\n height: this.height,\n orthographic,\n fovyRadians: fovyRadians || fovy * DEGREES_TO_RADIANS,\n focalDistance,\n padding,\n near,\n far\n });\n\n // Note: As usual, matrix operations should be applied in \"reverse\" order\n // since vectors will be multiplied in from the right during transformation\n const vpm = createMat4();\n mat4.multiply(vpm, vpm, this.projectionMatrix);\n mat4.multiply(vpm, vpm, this.viewMatrix);\n this.viewProjectionMatrix = vpm;\n\n // console.log('VPM', this.viewMatrix, this.projectionMatrix, this.viewProjectionMatrix);\n\n // Calculate inverse view matrix\n this.viewMatrixInverse = mat4.invert([], this.viewMatrix) || this.viewMatrix;\n\n // Decompose camera parameters\n this.cameraPosition = getCameraPosition(this.viewMatrixInverse);\n\n /*\n * Builds matrices that converts preprojected lngLats to screen pixels\n * and vice versa.\n * Note: Currently returns bottom-left coordinates!\n * Note: Starts with the GL projection matrix and adds steps to the\n * scale and translate that matrix onto the window.\n * Note: WebGL controls clip space to screen projection with gl.viewport\n * and does not need this step.\n */\n\n // matrix for conversion from world location to screen (pixel) coordinates\n const viewportMatrix = createMat4(); // matrix from NDC to viewport.\n const pixelProjectionMatrix = createMat4(); // matrix from world space to viewport.\n mat4.scale(viewportMatrix, viewportMatrix, [this.width / 2, -this.height / 2, 1]);\n mat4.translate(viewportMatrix, viewportMatrix, [1, -1, 0]);\n mat4.multiply(pixelProjectionMatrix, viewportMatrix, this.viewProjectionMatrix);\n this.pixelProjectionMatrix = pixelProjectionMatrix;\n\n this.pixelUnprojectionMatrix = mat4.invert(createMat4(), this.pixelProjectionMatrix);\n if (!this.pixelUnprojectionMatrix) {\n log.warn('Pixel project matrix not invertible')();\n // throw new Error('Pixel project matrix not invertible');\n }\n }\n}\n","import Matrix from './base/matrix';\nimport { checkVector } from '../lib/validators';\nimport { vec2_transformMat4AsVector, vec3_transformMat4AsVector } from '../lib/gl-matrix-extras';\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport * as vec4 from 'gl-matrix/vec4';\nvar INDICES;\n\n(function (INDICES) {\n INDICES[INDICES[\"COL0ROW0\"] = 0] = \"COL0ROW0\";\n INDICES[INDICES[\"COL0ROW1\"] = 1] = \"COL0ROW1\";\n INDICES[INDICES[\"COL0ROW2\"] = 2] = \"COL0ROW2\";\n INDICES[INDICES[\"COL0ROW3\"] = 3] = \"COL0ROW3\";\n INDICES[INDICES[\"COL1ROW0\"] = 4] = \"COL1ROW0\";\n INDICES[INDICES[\"COL1ROW1\"] = 5] = \"COL1ROW1\";\n INDICES[INDICES[\"COL1ROW2\"] = 6] = \"COL1ROW2\";\n INDICES[INDICES[\"COL1ROW3\"] = 7] = \"COL1ROW3\";\n INDICES[INDICES[\"COL2ROW0\"] = 8] = \"COL2ROW0\";\n INDICES[INDICES[\"COL2ROW1\"] = 9] = \"COL2ROW1\";\n INDICES[INDICES[\"COL2ROW2\"] = 10] = \"COL2ROW2\";\n INDICES[INDICES[\"COL2ROW3\"] = 11] = \"COL2ROW3\";\n INDICES[INDICES[\"COL3ROW0\"] = 12] = \"COL3ROW0\";\n INDICES[INDICES[\"COL3ROW1\"] = 13] = \"COL3ROW1\";\n INDICES[INDICES[\"COL3ROW2\"] = 14] = \"COL3ROW2\";\n INDICES[INDICES[\"COL3ROW3\"] = 15] = \"COL3ROW3\";\n})(INDICES || (INDICES = {}));\n\nconst DEFAULT_FOVY = 45 * Math.PI / 180;\nconst DEFAULT_ASPECT = 1;\nconst DEFAULT_NEAR = 0.1;\nconst DEFAULT_FAR = 500;\nconst IDENTITY_MATRIX = Object.freeze([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\nexport default class Matrix4 extends Matrix {\n static get IDENTITY() {\n return getIdentityMatrix();\n }\n\n static get ZERO() {\n return getZeroMatrix();\n }\n\n get ELEMENTS() {\n return 16;\n }\n\n get RANK() {\n return 4;\n }\n\n get INDICES() {\n return INDICES;\n }\n\n constructor(array) {\n super(-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0);\n\n if (arguments.length === 1 && Array.isArray(array)) {\n this.copy(array);\n } else {\n this.identity();\n }\n }\n\n copy(array) {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n this[3] = array[3];\n this[4] = array[4];\n this[5] = array[5];\n this[6] = array[6];\n this[7] = array[7];\n this[8] = array[8];\n this[9] = array[9];\n this[10] = array[10];\n this[11] = array[11];\n this[12] = array[12];\n this[13] = array[13];\n this[14] = array[14];\n this[15] = array[15];\n return this.check();\n }\n\n set(m00, m10, m20, m30, m01, m11, m21, m31, m02, m12, m22, m32, m03, m13, m23, m33) {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\n }\n\n setRowMajor(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\n }\n\n toRowMajor(result) {\n result[0] = this[0];\n result[1] = this[4];\n result[2] = this[8];\n result[3] = this[12];\n result[4] = this[1];\n result[5] = this[5];\n result[6] = this[9];\n result[7] = this[13];\n result[8] = this[2];\n result[9] = this[6];\n result[10] = this[10];\n result[11] = this[14];\n result[12] = this[3];\n result[13] = this[7];\n result[14] = this[11];\n result[15] = this[15];\n return result;\n }\n\n identity() {\n return this.copy(IDENTITY_MATRIX);\n }\n\n fromObject(object) {\n return this.check();\n }\n\n fromQuaternion(quaternion) {\n mat4.fromQuat(this, quaternion);\n return this.check();\n }\n\n frustum(view) {\n const {\n left,\n right,\n bottom,\n top,\n near = DEFAULT_NEAR,\n far = DEFAULT_FAR\n } = view;\n\n if (far === Infinity) {\n computeInfinitePerspectiveOffCenter(this, left, right, bottom, top, near);\n } else {\n mat4.frustum(this, left, right, bottom, top, near, far);\n }\n\n return this.check();\n }\n\n lookAt(view) {\n const {\n eye,\n center = [0, 0, 0],\n up = [0, 1, 0]\n } = view;\n mat4.lookAt(this, eye, center, up);\n return this.check();\n }\n\n ortho(view) {\n const {\n left,\n right,\n bottom,\n top,\n near = DEFAULT_NEAR,\n far = DEFAULT_FAR\n } = view;\n mat4.ortho(this, left, right, bottom, top, near, far);\n return this.check();\n }\n\n orthographic(view) {\n const {\n fovy = DEFAULT_FOVY,\n aspect = DEFAULT_ASPECT,\n focalDistance = 1,\n near = DEFAULT_NEAR,\n far = DEFAULT_FAR\n } = view;\n checkRadians(fovy);\n const halfY = fovy / 2;\n const top = focalDistance * Math.tan(halfY);\n const right = top * aspect;\n return this.ortho({\n left: -right,\n right,\n bottom: -top,\n top,\n near,\n far\n });\n }\n\n perspective(view) {\n const {\n fovy = 45 * Math.PI / 180,\n aspect = 1,\n near = 0.1,\n far = 500\n } = view;\n checkRadians(fovy);\n mat4.perspective(this, fovy, aspect, near, far);\n return this.check();\n }\n\n determinant() {\n return mat4.determinant(this);\n }\n\n getScale(result = [-0, -0, -0]) {\n result[0] = Math.sqrt(this[0] * this[0] + this[1] * this[1] + this[2] * this[2]);\n result[1] = Math.sqrt(this[4] * this[4] + this[5] * this[5] + this[6] * this[6]);\n result[2] = Math.sqrt(this[8] * this[8] + this[9] * this[9] + this[10] * this[10]);\n return result;\n }\n\n getTranslation(result = [-0, -0, -0]) {\n result[0] = this[12];\n result[1] = this[13];\n result[2] = this[14];\n return result;\n }\n\n getRotation(result, scaleResult) {\n result = result || [-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0];\n scaleResult = scaleResult || [-0, -0, -0];\n const scale = this.getScale(scaleResult);\n const inverseScale0 = 1 / scale[0];\n const inverseScale1 = 1 / scale[1];\n const inverseScale2 = 1 / scale[2];\n result[0] = this[0] * inverseScale0;\n result[1] = this[1] * inverseScale1;\n result[2] = this[2] * inverseScale2;\n result[3] = 0;\n result[4] = this[4] * inverseScale0;\n result[5] = this[5] * inverseScale1;\n result[6] = this[6] * inverseScale2;\n result[7] = 0;\n result[8] = this[8] * inverseScale0;\n result[9] = this[9] * inverseScale1;\n result[10] = this[10] * inverseScale2;\n result[11] = 0;\n result[12] = 0;\n result[13] = 0;\n result[14] = 0;\n result[15] = 1;\n return result;\n }\n\n getRotationMatrix3(result, scaleResult) {\n result = result || [-0, -0, -0, -0, -0, -0, -0, -0, -0];\n scaleResult = scaleResult || [-0, -0, -0];\n const scale = this.getScale(scaleResult);\n const inverseScale0 = 1 / scale[0];\n const inverseScale1 = 1 / scale[1];\n const inverseScale2 = 1 / scale[2];\n result[0] = this[0] * inverseScale0;\n result[1] = this[1] * inverseScale1;\n result[2] = this[2] * inverseScale2;\n result[3] = this[4] * inverseScale0;\n result[4] = this[5] * inverseScale1;\n result[5] = this[6] * inverseScale2;\n result[6] = this[8] * inverseScale0;\n result[7] = this[9] * inverseScale1;\n result[8] = this[10] * inverseScale2;\n return result;\n }\n\n transpose() {\n mat4.transpose(this, this);\n return this.check();\n }\n\n invert() {\n mat4.invert(this, this);\n return this.check();\n }\n\n multiplyLeft(a) {\n mat4.multiply(this, a, this);\n return this.check();\n }\n\n multiplyRight(a) {\n mat4.multiply(this, this, a);\n return this.check();\n }\n\n rotateX(radians) {\n mat4.rotateX(this, this, radians);\n return this.check();\n }\n\n rotateY(radians) {\n mat4.rotateY(this, this, radians);\n return this.check();\n }\n\n rotateZ(radians) {\n mat4.rotateZ(this, this, radians);\n return this.check();\n }\n\n rotateXYZ(angleXYZ) {\n return this.rotateX(angleXYZ[0]).rotateY(angleXYZ[1]).rotateZ(angleXYZ[2]);\n }\n\n rotateAxis(radians, axis) {\n mat4.rotate(this, this, radians, axis);\n return this.check();\n }\n\n scale(factor) {\n mat4.scale(this, this, Array.isArray(factor) ? factor : [factor, factor, factor]);\n return this.check();\n }\n\n translate(vector) {\n mat4.translate(this, this, vector);\n return this.check();\n }\n\n transform(vector, result) {\n if (vector.length === 4) {\n result = vec4.transformMat4(result || [-0, -0, -0, -0], vector, this);\n checkVector(result, 4);\n return result;\n }\n\n return this.transformAsPoint(vector, result);\n }\n\n transformAsPoint(vector, result) {\n const {\n length\n } = vector;\n let out;\n\n switch (length) {\n case 2:\n out = vec2.transformMat4(result || [-0, -0], vector, this);\n break;\n\n case 3:\n out = vec3.transformMat4(result || [-0, -0, -0], vector, this);\n break;\n\n default:\n throw new Error('Illegal vector');\n }\n\n checkVector(out, vector.length);\n return out;\n }\n\n transformAsVector(vector, result) {\n let out;\n\n switch (vector.length) {\n case 2:\n out = vec2_transformMat4AsVector(result || [-0, -0], vector, this);\n break;\n\n case 3:\n out = vec3_transformMat4AsVector(result || [-0, -0, -0], vector, this);\n break;\n\n default:\n throw new Error('Illegal vector');\n }\n\n checkVector(out, vector.length);\n return out;\n }\n\n transformPoint(vector, result) {\n return this.transformAsPoint(vector, result);\n }\n\n transformVector(vector, result) {\n return this.transformAsPoint(vector, result);\n }\n\n transformDirection(vector, result) {\n return this.transformAsVector(vector, result);\n }\n\n makeRotationX(radians) {\n return this.identity().rotateX(radians);\n }\n\n makeTranslation(x, y, z) {\n return this.identity().translate([x, y, z]);\n }\n\n}\nlet ZERO;\nlet IDENTITY;\n\nfunction getZeroMatrix() {\n if (!ZERO) {\n ZERO = new Matrix4([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\n Object.freeze(ZERO);\n }\n\n return ZERO;\n}\n\nfunction getIdentityMatrix() {\n if (!IDENTITY) {\n IDENTITY = new Matrix4();\n Object.freeze(IDENTITY);\n }\n\n return IDENTITY;\n}\n\nfunction checkRadians(possiblyDegrees) {\n if (possiblyDegrees > Math.PI * 2) {\n throw Error('expected radians');\n }\n}\n\nfunction computeInfinitePerspectiveOffCenter(result, left, right, bottom, top, near) {\n const column0Row0 = 2 * near / (right - left);\n const column1Row1 = 2 * near / (top - bottom);\n const column2Row0 = (right + left) / (right - left);\n const column2Row1 = (top + bottom) / (top - bottom);\n const column2Row2 = -1;\n const column2Row3 = -1;\n const column3Row2 = -2 * near;\n result[0] = column0Row0;\n result[1] = 0;\n result[2] = 0;\n result[3] = 0;\n result[4] = 0;\n result[5] = column1Row1;\n result[6] = 0;\n result[7] = 0;\n result[8] = column2Row0;\n result[9] = column2Row1;\n result[10] = column2Row2;\n result[11] = column2Row3;\n result[12] = 0;\n result[13] = 0;\n result[14] = column3Row2;\n result[15] = 0;\n return result;\n}\n//# sourceMappingURL=matrix4.js.map","// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport Matrix from './base/matrix';\nimport {NumericArray} from '@math.gl/types';\nimport {checkVector} from '../lib/validators';\n\n/* eslint-disable camelcase */\nimport {vec2_transformMat4AsVector, vec3_transformMat4AsVector} from '../lib/gl-matrix-extras';\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport * as vec4 from 'gl-matrix/vec4';\n\nenum INDICES {\n COL0ROW0 = 0,\n COL0ROW1 = 1,\n COL0ROW2 = 2,\n COL0ROW3 = 3,\n COL1ROW0 = 4,\n COL1ROW1 = 5,\n COL1ROW2 = 6,\n COL1ROW3 = 7,\n COL2ROW0 = 8,\n COL2ROW1 = 9,\n COL2ROW2 = 10,\n COL2ROW3 = 11,\n COL3ROW0 = 12,\n COL3ROW1 = 13,\n COL3ROW2 = 14,\n COL3ROW3 = 15\n}\n\nconst DEFAULT_FOVY = (45 * Math.PI) / 180;\nconst DEFAULT_ASPECT = 1;\nconst DEFAULT_NEAR = 0.1;\nconst DEFAULT_FAR = 500;\n\nconst IDENTITY_MATRIX = Object.freeze([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n\n/** 4x4 matrix */\nexport default class Matrix4 extends Matrix {\n static get IDENTITY(): Readonly {\n return getIdentityMatrix();\n }\n\n static get ZERO(): Readonly {\n return getZeroMatrix();\n }\n\n get ELEMENTS(): number {\n return 16;\n }\n\n get RANK(): number {\n return 4;\n }\n\n get INDICES(): typeof INDICES {\n return INDICES;\n }\n\n constructor(array?: Readonly) {\n // PERF NOTE: initialize elements as double precision numbers\n super(-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0);\n if (arguments.length === 1 && Array.isArray(array)) {\n this.copy(array);\n } else {\n this.identity();\n }\n }\n\n copy(array: Readonly): this {\n this[0] = array[0];\n this[1] = array[1];\n this[2] = array[2];\n this[3] = array[3];\n this[4] = array[4];\n this[5] = array[5];\n this[6] = array[6];\n this[7] = array[7];\n this[8] = array[8];\n this[9] = array[9];\n this[10] = array[10];\n this[11] = array[11];\n this[12] = array[12];\n this[13] = array[13];\n this[14] = array[14];\n this[15] = array[15];\n return this.check();\n }\n\n // eslint-disable-next-line max-params\n set(\n m00: number,\n m10: number,\n m20: number,\n m30: number,\n m01: number,\n m11: number,\n m21: number,\n m31: number,\n m02: number,\n m12: number,\n m22: number,\n m32: number,\n m03: number,\n m13: number,\n m23: number,\n m33: number\n ): this {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\n }\n\n // accepts row major order, stores as column major\n // eslint-disable-next-line max-params\n setRowMajor(\n m00: number,\n m01: number,\n m02: number,\n m03: number,\n m10: number,\n m11: number,\n m12: number,\n m13: number,\n m20: number,\n m21: number,\n m22: number,\n m23: number,\n m30: number,\n m31: number,\n m32: number,\n m33: number\n ): this {\n this[0] = m00;\n this[1] = m10;\n this[2] = m20;\n this[3] = m30;\n this[4] = m01;\n this[5] = m11;\n this[6] = m21;\n this[7] = m31;\n this[8] = m02;\n this[9] = m12;\n this[10] = m22;\n this[11] = m32;\n this[12] = m03;\n this[13] = m13;\n this[14] = m23;\n this[15] = m33;\n return this.check();\n }\n\n toRowMajor(result: NumericArray): NumericArray {\n result[0] = this[0];\n result[1] = this[4];\n result[2] = this[8];\n result[3] = this[12];\n result[4] = this[1];\n result[5] = this[5];\n result[6] = this[9];\n result[7] = this[13];\n result[8] = this[2];\n result[9] = this[6];\n result[10] = this[10];\n result[11] = this[14];\n result[12] = this[3];\n result[13] = this[7];\n result[14] = this[11];\n result[15] = this[15];\n return result;\n }\n\n // Constructors\n\n /** Set to identity matrix */\n identity(): this {\n return this.copy(IDENTITY_MATRIX);\n }\n\n /**\n *\n * @param object\n * @returns self\n */\n fromObject(object: {[key: string]: any}): this {\n return this.check();\n }\n\n /**\n * Calculates a 4x4 matrix from the given quaternion\n * @param quaternion Quaternion to create matrix from\n * @returns self\n */\n fromQuaternion(quaternion: Readonly): this {\n mat4.fromQuat(this, quaternion);\n return this.check();\n }\n\n /**\n * Generates a frustum matrix with the given bounds\n * @param view.left - Left bound of the frustum\n * @param view.right - Right bound of the frustum\n * @param view.bottom - Bottom bound of the frustum\n * @param view.top - Top bound of the frustum\n * @param view.near - Near bound of the frustum\n * @param view.far - Far bound of the frustum. Can be set to Infinity.\n * @returns self\n */\n frustum(view: {\n left: number;\n right: number;\n bottom: number;\n top: number;\n near: number;\n far?: number;\n }): this {\n const {left, right, bottom, top, near = DEFAULT_NEAR, far = DEFAULT_FAR} = view;\n if (far === Infinity) {\n computeInfinitePerspectiveOffCenter(this, left, right, bottom, top, near);\n } else {\n mat4.frustum(this, left, right, bottom, top, near, far);\n }\n return this.check();\n }\n\n /**\n * Generates a look-at matrix with the given eye position, focal point,\n * and up axis\n * @param view.eye - (vector) Position of the viewer\n * @param view.center - (vector) Point the viewer is looking at\n * @param view.up - (vector) Up axis\n * @returns self\n */\n lookAt(view: {\n eye: Readonly;\n center?: Readonly;\n up?: Readonly;\n }): this {\n const {eye, center = [0, 0, 0], up = [0, 1, 0]} = view;\n mat4.lookAt(this, eye, center, up);\n return this.check();\n }\n\n /**\n * Generates a orthogonal projection matrix with the given bounds\n * from \"traditional\" view space parameters\n * @param view.left - Left bound of the frustum\n * @param view.right number Right bound of the frustum\n * @param view.bottom - Bottom bound of the frustum\n * @param view.top number Top bound of the frustum\n * @param view.near - Near bound of the frustum\n * @param view.far number Far bound of the frustum\n * @returns self\n */\n ortho(view: {\n left: number;\n right: number;\n bottom: number;\n top: number;\n near?: number;\n far?: number;\n }): this {\n const {left, right, bottom, top, near = DEFAULT_NEAR, far = DEFAULT_FAR} = view;\n mat4.ortho(this, left, right, bottom, top, near, far);\n return this.check();\n }\n\n /**\n * Generates an orthogonal projection matrix with the same parameters\n * as a perspective matrix (plus focalDistance)\n * @param view.fovy Vertical field of view in radians\n * @param view.aspect Aspect ratio. Typically viewport width / viewport height\n * @param view.focalDistance Distance in the view frustum used for extent calculations\n * @param view.near Near bound of the frustum\n * @param view.far Far bound of the frustum\n * @returns self\n */\n orthographic(view: {\n fovy?: number;\n aspect?: number;\n focalDistance?: number;\n near?: number;\n far?: number;\n }): this {\n const {\n fovy = DEFAULT_FOVY,\n aspect = DEFAULT_ASPECT,\n focalDistance = 1,\n near = DEFAULT_NEAR,\n far = DEFAULT_FAR\n } = view;\n\n checkRadians(fovy);\n\n const halfY = fovy / 2;\n const top = focalDistance * Math.tan(halfY); // focus_plane is the distance from the camera\n const right = top * aspect;\n\n return this.ortho({\n left: -right,\n right,\n bottom: -top,\n top,\n near,\n far\n });\n }\n\n /**\n * Generates a perspective projection matrix with the given bounds\n * @param view.fovy Vertical field of view in radians\n * @param view.aspect Aspect ratio. typically viewport width/height\n * @param view.near Near bound of the frustum\n * @param view.far Far bound of the frustum\n * @returns self\n */\n perspective(view: {fovy: number; aspect?: number; near?: number; far?: number}): this {\n const {fovy = (45 * Math.PI) / 180, aspect = 1, near = 0.1, far = 500} = view;\n checkRadians(fovy);\n mat4.perspective(this, fovy, aspect, near, far);\n return this.check();\n }\n\n // Accessors\n\n determinant(): number {\n return mat4.determinant(this);\n }\n\n /**\n * Extracts the non-uniform scale assuming the matrix is an affine transformation.\n * The scales are the \"lengths\" of the column vectors in the upper-left 3x3 matrix.\n * @param result\n * @returns self\n */\n getScale(result: NumericArray = [-0, -0, -0]): NumericArray {\n // explicit is faster than hypot...\n result[0] = Math.sqrt(this[0] * this[0] + this[1] * this[1] + this[2] * this[2]);\n result[1] = Math.sqrt(this[4] * this[4] + this[5] * this[5] + this[6] * this[6]);\n result[2] = Math.sqrt(this[8] * this[8] + this[9] * this[9] + this[10] * this[10]);\n // result[0] = Math.hypot(this[0], this[1], this[2]);\n // result[1] = Math.hypot(this[4], this[5], this[6]);\n // result[2] = Math.hypot(this[8], this[9], this[10]);\n return result;\n }\n\n /**\n * Gets the translation portion, assuming the matrix is a affine transformation matrix.\n * @param result\n * @returns self\n */\n getTranslation(result: NumericArray = [-0, -0, -0]): NumericArray {\n result[0] = this[12];\n result[1] = this[13];\n result[2] = this[14];\n return result;\n }\n\n /**\n * Gets upper left 3x3 pure rotation matrix (non-scaling), assume affine transformation matrix\n * @param result\n * @param scaleResult\n * @returns self\n */\n getRotation(result?: NumericArray, scaleResult?: NumericArray): NumericArray {\n result = result || [-0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0];\n scaleResult = scaleResult || [-0, -0, -0];\n const scale = this.getScale(scaleResult);\n const inverseScale0 = 1 / scale[0];\n const inverseScale1 = 1 / scale[1];\n const inverseScale2 = 1 / scale[2];\n result[0] = this[0] * inverseScale0;\n result[1] = this[1] * inverseScale1;\n result[2] = this[2] * inverseScale2;\n result[3] = 0;\n result[4] = this[4] * inverseScale0;\n result[5] = this[5] * inverseScale1;\n result[6] = this[6] * inverseScale2;\n result[7] = 0;\n result[8] = this[8] * inverseScale0;\n result[9] = this[9] * inverseScale1;\n result[10] = this[10] * inverseScale2;\n result[11] = 0;\n result[12] = 0;\n result[13] = 0;\n result[14] = 0;\n result[15] = 1;\n return result;\n }\n\n /**\n *\n * @param result\n * @param scaleResult\n * @returns self\n */\n getRotationMatrix3(result?: NumericArray, scaleResult?: NumericArray): NumericArray {\n result = result || [-0, -0, -0, -0, -0, -0, -0, -0, -0];\n scaleResult = scaleResult || [-0, -0, -0];\n const scale = this.getScale(scaleResult);\n const inverseScale0 = 1 / scale[0];\n const inverseScale1 = 1 / scale[1];\n const inverseScale2 = 1 / scale[2];\n result[0] = this[0] * inverseScale0;\n result[1] = this[1] * inverseScale1;\n result[2] = this[2] * inverseScale2;\n result[3] = this[4] * inverseScale0;\n result[4] = this[5] * inverseScale1;\n result[5] = this[6] * inverseScale2;\n result[6] = this[8] * inverseScale0;\n result[7] = this[9] * inverseScale1;\n result[8] = this[10] * inverseScale2;\n return result;\n }\n\n // Modifiers\n\n transpose(): this {\n mat4.transpose(this, this);\n return this.check();\n }\n\n invert(): this {\n mat4.invert(this, this);\n return this.check();\n }\n\n // Operations\n\n multiplyLeft(a: Readonly): this {\n mat4.multiply(this, a, this);\n return this.check();\n }\n\n multiplyRight(a: Readonly): this {\n mat4.multiply(this, this, a);\n return this.check();\n }\n\n // Rotates a matrix by the given angle around the X axis\n rotateX(radians: number): this {\n mat4.rotateX(this, this, radians);\n // mat4.rotate(this, this, radians, [1, 0, 0]);\n return this.check();\n }\n\n // Rotates a matrix by the given angle around the Y axis.\n rotateY(radians: number): this {\n mat4.rotateY(this, this, radians);\n // mat4.rotate(this, this, radians, [0, 1, 0]);\n return this.check();\n }\n\n /**\n * Rotates a matrix by the given angle around the Z axis.\n * @param radians\n * @returns self\n */\n rotateZ(radians: number): this {\n mat4.rotateZ(this, this, radians);\n // mat4.rotate(this, this, radians, [0, 0, 1]);\n return this.check();\n }\n\n /**\n *\n * @param param0\n * @returns self\n */\n rotateXYZ(angleXYZ: Readonly): this {\n return this.rotateX(angleXYZ[0]).rotateY(angleXYZ[1]).rotateZ(angleXYZ[2]);\n }\n\n /**\n *\n * @param radians\n * @param axis\n * @returns self\n */\n rotateAxis(radians: number, axis: Readonly): this {\n mat4.rotate(this, this, radians, axis);\n return this.check();\n }\n\n /**\n *\n * @param factor\n * @returns self\n */\n scale(factor: number | Readonly): this {\n mat4.scale(this, this, Array.isArray(factor) ? factor : [factor, factor, factor]);\n return this.check();\n }\n\n /**\n *\n * @param vec\n * @returns self\n */\n translate(vector: Readonly): this {\n mat4.translate(this, this, vector);\n return this.check();\n }\n\n // Transforms\n\n /**\n * Transforms any 2, 3 or 4 element vector. 2 and 3 elements are treated as points\n * @param vector\n * @param result\n * @returns self\n */\n transform(vector: Readonly, result?: NumericArray): NumericArray {\n if (vector.length === 4) {\n result = vec4.transformMat4(result || [-0, -0, -0, -0], vector, this);\n checkVector(result, 4);\n return result;\n }\n return this.transformAsPoint(vector, result);\n }\n\n /**\n * Transforms any 2 or 3 element array as point (w implicitly 1)\n * @param vector\n * @param result\n * @returns self\n */\n transformAsPoint(vector: Readonly, result?: NumericArray): NumericArray {\n const {length} = vector;\n let out: NumericArray;\n switch (length) {\n case 2:\n out = vec2.transformMat4(result || [-0, -0], vector, this);\n break;\n case 3:\n out = vec3.transformMat4(result || [-0, -0, -0], vector, this);\n break;\n default:\n throw new Error('Illegal vector');\n }\n checkVector(out, vector.length);\n return out;\n }\n\n /**\n * Transforms any 2 or 3 element array as vector (w implicitly 0)\n * @param vector\n * @param result\n * @returns self\n */\n transformAsVector(vector: Readonly, result?: NumericArray): NumericArray {\n let out: NumericArray;\n switch (vector.length) {\n case 2:\n out = vec2_transformMat4AsVector(result || [-0, -0], vector, this);\n break;\n case 3:\n out = vec3_transformMat4AsVector(result || [-0, -0, -0], vector, this);\n break;\n default:\n throw new Error('Illegal vector');\n }\n checkVector(out, vector.length);\n return out;\n }\n\n /** @deprecated */\n transformPoint(vector: Readonly, result?: NumericArray): NumericArray {\n return this.transformAsPoint(vector, result);\n }\n\n /** @deprecated */\n transformVector(vector: Readonly, result?: NumericArray): NumericArray {\n return this.transformAsPoint(vector, result);\n }\n\n /** @deprecated */\n transformDirection(vector: Readonly, result?: NumericArray): NumericArray {\n return this.transformAsVector(vector, result);\n }\n\n // three.js math API compatibility\n\n makeRotationX(radians: number): this {\n return this.identity().rotateX(radians);\n }\n\n makeTranslation(x: number, y: number, z: number): this {\n return this.identity().translate([x, y, z]);\n }\n}\n\n// TODO initializing static members directly is an option, but make sure no tree-shaking issues\nlet ZERO: Matrix4;\nlet IDENTITY: Matrix4;\n\nfunction getZeroMatrix(): Readonly {\n if (!ZERO) {\n ZERO = new Matrix4([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\n Object.freeze(ZERO);\n }\n return ZERO;\n}\n\nfunction getIdentityMatrix(): Matrix4 {\n if (!IDENTITY) {\n IDENTITY = new Matrix4();\n Object.freeze(IDENTITY);\n }\n return IDENTITY;\n}\n\n// HELPER FUNCTIONS\n\nfunction checkRadians(possiblyDegrees: number) {\n if (possiblyDegrees > Math.PI * 2) {\n throw Error('expected radians');\n }\n}\n\n// eslint-disable-next-line max-params\nfunction computeInfinitePerspectiveOffCenter(\n result: NumericArray,\n left: number,\n right: number,\n bottom: number,\n top: number,\n near: number\n): NumericArray {\n const column0Row0 = (2 * near) / (right - left);\n const column1Row1 = (2 * near) / (top - bottom);\n const column2Row0 = (right + left) / (right - left);\n const column2Row1 = (top + bottom) / (top - bottom);\n const column2Row2 = -1;\n const column2Row3 = -1;\n const column3Row2 = -2 * near;\n result[0] = column0Row0;\n result[1] = 0;\n result[2] = 0;\n result[3] = 0;\n result[4] = 0;\n result[5] = column1Row1;\n result[6] = 0;\n result[7] = 0;\n result[8] = column2Row0;\n result[9] = column2Row1;\n result[10] = column2Row2;\n result[11] = column2Row3;\n result[12] = 0;\n result[13] = 0;\n result[14] = column3Row2;\n result[15] = 0;\n return result;\n}\n","import MathArray from './math-array';\nimport { checkNumber } from '../../lib/validators';\nimport { config } from '../../lib/common';\nexport default class Matrix extends MathArray {\n toString() {\n let string = '[';\n\n if (config.printRowMajor) {\n string += 'row-major:';\n\n for (let row = 0; row < this.RANK; ++row) {\n for (let col = 0; col < this.RANK; ++col) {\n string += \" \".concat(this[col * this.RANK + row]);\n }\n }\n } else {\n string += 'column-major:';\n\n for (let i = 0; i < this.ELEMENTS; ++i) {\n string += \" \".concat(this[i]);\n }\n }\n\n string += ']';\n return string;\n }\n\n getElementIndex(row, col) {\n return col * this.RANK + row;\n }\n\n getElement(row, col) {\n return this[col * this.RANK + row];\n }\n\n setElement(row, col, value) {\n this[col * this.RANK + row] = checkNumber(value);\n return this;\n }\n\n getColumn(columnIndex, result = new Array(this.RANK).fill(-0)) {\n const firstIndex = columnIndex * this.RANK;\n\n for (let i = 0; i < this.RANK; ++i) {\n result[i] = this[firstIndex + i];\n }\n\n return result;\n }\n\n setColumn(columnIndex, columnVector) {\n const firstIndex = columnIndex * this.RANK;\n\n for (let i = 0; i < this.RANK; ++i) {\n this[firstIndex + i] = columnVector[i];\n }\n\n return this;\n }\n\n}\n//# sourceMappingURL=matrix.js.map","// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {NumericArray} from '@math.gl/types';\nimport MathArray from './math-array';\nimport {checkNumber} from '../../lib/validators';\nimport {config} from '../../lib/common';\n\n/** Base class for matrices */\nexport default abstract class Matrix extends MathArray {\n abstract get RANK(): number;\n\n // fromObject(object) {\n // const array = object.elements;\n // return this.fromRowMajor(array);\n // }\n // toObject(object) {\n // const array = object.elements;\n // this.toRowMajor(array);\n // return object;\n // }\n\n // TODO better override formatString?\n toString(): string {\n let string = '[';\n if (config.printRowMajor) {\n string += 'row-major:';\n for (let row = 0; row < this.RANK; ++row) {\n for (let col = 0; col < this.RANK; ++col) {\n string += ` ${this[col * this.RANK + row]}`;\n }\n }\n } else {\n string += 'column-major:';\n for (let i = 0; i < this.ELEMENTS; ++i) {\n string += ` ${this[i]}`;\n }\n }\n string += ']';\n return string;\n }\n\n getElementIndex(row: number, col: number): number {\n return col * this.RANK + row;\n }\n\n // By default assumes row major indices\n getElement(row: number, col: number): number {\n return this[col * this.RANK + row];\n }\n\n // By default assumes row major indices\n setElement(row: number, col: number, value: number): this {\n this[col * this.RANK + row] = checkNumber(value);\n return this;\n }\n getColumn(columnIndex: number, result: NumArrayT): NumArrayT;\n getColumn(columnIndex: number): number[];\n\n getColumn(columnIndex: number, result: number[] = new Array(this.RANK).fill(-0)): number[] {\n const firstIndex = columnIndex * this.RANK;\n for (let i = 0; i < this.RANK; ++i) {\n result[i] = this[firstIndex + i];\n }\n return result;\n }\n\n setColumn(columnIndex: number, columnVector: Readonly): this {\n const firstIndex = columnIndex * this.RANK;\n for (let i = 0; i < this.RANK; ++i) {\n this[firstIndex + i] = columnVector[i];\n }\n return this;\n }\n}\n","import * as glMatrix from \"./common.js\";\n/**\n * 4x4 Matrix
Format: column-major, when typed out it looks like row-major
The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\n * Returns the translation vector component of a transformation\n * matrix. If a matrix is built with fromRotationTranslation,\n * the returned vector will be the same as the translation vector\n * originally supplied.\n * @param {vec3} out Vector to receive translation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\n * Returns the scaling factor component of a transformation\n * matrix. If a matrix is built with fromRotationTranslationScale\n * with a normalized Quaternion paramter, the returned vector will be\n * the same as the scaling vector\n * originally supplied.\n * @param {vec3} out Vector to receive scaling factor component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\n * Returns a quaternion representing the rotational component\n * of a transformation matrix. If a matrix is built with\n * fromRotationTranslation, the returned quaternion will be the\n * same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * mat4.translate(dest, origin);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n * mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveNO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\n\nexport var perspective = perspectiveNO;\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveZO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -near;\n }\n\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoNO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\n\nexport var ortho = orthoNO;\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoZO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = near * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\n/**\n * 4 Dimensional Vector\n * @module vec4\n */\n\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {ReadonlyVec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\n\nexport function fromValues(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the source vector\n * @returns {vec4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\n\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\n * Math.ceil the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to ceil\n * @returns {vec4} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\n * Math.floor the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to floor\n * @returns {vec4} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\n * Math.round the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to round\n * @returns {vec4} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Calculates the length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to negate\n * @returns {vec4} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to invert\n * @returns {vec4} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to normalize\n * @returns {vec4} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\n * Returns the cross-product of three vectors in a 4-dimensional space\n *\n * @param {ReadonlyVec4} result the receiving vector\n * @param {ReadonlyVec4} U the first vector\n * @param {ReadonlyVec4} V the second vector\n * @param {ReadonlyVec4} W the third vector\n * @returns {vec4} result\n */\n\nexport function cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec4} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec4} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec4} out\n */\n\nexport function transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to zero\n *\n * @param {vec4} out the receiving vector\n * @returns {vec4} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec4} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec4.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();","// Classic web-mercator-project\nexport {default} from './web-mercator-viewport';\nexport {default as WebMercatorViewport} from './web-mercator-viewport';\n\nexport {default as getBounds} from './get-bounds';\nexport {default as fitBounds} from './fit-bounds';\nexport {default as normalizeViewportProps} from './normalize-viewport-props';\nexport {default as flyToViewport, getFlyToDuration} from './fly-to-viewport';\n\nexport {\n MAX_LATITUDE,\n lngLatToWorld,\n worldToLngLat,\n worldToPixels,\n pixelsToWorld,\n zoomToScale,\n scaleToZoom,\n altitudeToFovy,\n fovyToAltitude,\n getMeterZoom,\n unitsPerMeter,\n getDistanceScales,\n addMetersToLngLat,\n getViewMatrix,\n getProjectionMatrix,\n getProjectionParameters\n} from './web-mercator-utils';\n\n/** Types */\nexport type {FitBoundsOptions} from './fit-bounds';\nexport type {DistanceScales} from './web-mercator-utils';\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { createMat4 } from './math-utils';\nimport { zoomToScale, pixelsToWorld, lngLatToWorld, worldToLngLat, worldToPixels, altitudeToFovy, fovyToAltitude, DEFAULT_ALTITUDE, getProjectionMatrix, getDistanceScales, getViewMatrix } from './web-mercator-utils';\nimport fitBounds from './fit-bounds';\nimport getBounds from './get-bounds';\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nexport default class WebMercatorViewport {\n constructor(props = {\n width: 1,\n height: 1\n }) {\n _defineProperty(this, \"latitude\", void 0);\n\n _defineProperty(this, \"longitude\", void 0);\n\n _defineProperty(this, \"zoom\", void 0);\n\n _defineProperty(this, \"pitch\", void 0);\n\n _defineProperty(this, \"bearing\", void 0);\n\n _defineProperty(this, \"altitude\", void 0);\n\n _defineProperty(this, \"fovy\", void 0);\n\n _defineProperty(this, \"meterOffset\", void 0);\n\n _defineProperty(this, \"center\", void 0);\n\n _defineProperty(this, \"width\", void 0);\n\n _defineProperty(this, \"height\", void 0);\n\n _defineProperty(this, \"scale\", void 0);\n\n _defineProperty(this, \"distanceScales\", void 0);\n\n _defineProperty(this, \"viewMatrix\", void 0);\n\n _defineProperty(this, \"projectionMatrix\", void 0);\n\n _defineProperty(this, \"viewProjectionMatrix\", void 0);\n\n _defineProperty(this, \"pixelProjectionMatrix\", void 0);\n\n _defineProperty(this, \"pixelUnprojectionMatrix\", void 0);\n\n _defineProperty(this, \"equals\", viewport => {\n if (!(viewport instanceof WebMercatorViewport)) {\n return false;\n }\n\n return viewport.width === this.width && viewport.height === this.height && mat4.equals(viewport.projectionMatrix, this.projectionMatrix) && mat4.equals(viewport.viewMatrix, this.viewMatrix);\n });\n\n _defineProperty(this, \"project\", (lngLatZ, options = {}) => {\n const {\n topLeft = true\n } = options;\n const worldPosition = this.projectPosition(lngLatZ);\n const coord = worldToPixels(worldPosition, this.pixelProjectionMatrix);\n const [x, y] = coord;\n const y2 = topLeft ? y : this.height - y;\n return lngLatZ.length === 2 ? [x, y2] : [x, y2, coord[2]];\n });\n\n _defineProperty(this, \"unproject\", (xyz, options = {}) => {\n const {\n topLeft = true,\n targetZ = undefined\n } = options;\n const [x, y, z] = xyz;\n const y2 = topLeft ? y : this.height - y;\n const targetZWorld = targetZ && targetZ * this.distanceScales.unitsPerMeter[2];\n const coord = pixelsToWorld([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n const [X, Y, Z] = this.unprojectPosition(coord);\n\n if (Number.isFinite(z)) {\n return [X, Y, Z];\n }\n\n return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n });\n\n _defineProperty(this, \"projectPosition\", xyz => {\n const [X, Y] = lngLatToWorld(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.unitsPerMeter[2];\n return [X, Y, Z];\n });\n\n _defineProperty(this, \"unprojectPosition\", xyz => {\n const [X, Y] = worldToLngLat(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.metersPerUnit[2];\n return [X, Y, Z];\n });\n\n let {\n width,\n height,\n altitude = null,\n fovy = null\n } = props;\n const {\n latitude = 0,\n longitude = 0,\n zoom = 0,\n pitch = 0,\n bearing = 0,\n position = null,\n nearZMultiplier = 0.02,\n farZMultiplier = 1.01\n } = props;\n width = width || 1;\n height = height || 1;\n\n if (fovy === null && altitude === null) {\n altitude = DEFAULT_ALTITUDE;\n fovy = altitudeToFovy(altitude);\n } else if (fovy === null) {\n fovy = altitudeToFovy(altitude);\n } else if (altitude === null) {\n altitude = fovyToAltitude(fovy);\n }\n\n const scale = zoomToScale(zoom);\n altitude = Math.max(0.75, altitude);\n const distanceScales = getDistanceScales({\n longitude,\n latitude\n });\n const center = lngLatToWorld([longitude, latitude]);\n center.push(0);\n\n if (position) {\n vec3.add(center, center, vec3.mul([], position, distanceScales.unitsPerMeter));\n }\n\n this.projectionMatrix = getProjectionMatrix({\n width,\n height,\n scale,\n center,\n pitch,\n fovy,\n nearZMultiplier,\n farZMultiplier\n });\n this.viewMatrix = getViewMatrix({\n height,\n scale,\n center,\n pitch,\n bearing,\n altitude\n });\n this.width = width;\n this.height = height;\n this.scale = scale;\n this.latitude = latitude;\n this.longitude = longitude;\n this.zoom = zoom;\n this.pitch = pitch;\n this.bearing = bearing;\n this.altitude = altitude;\n this.fovy = fovy;\n this.center = center;\n this.meterOffset = position || [0, 0, 0];\n this.distanceScales = distanceScales;\n\n this._initMatrices();\n\n Object.freeze(this);\n }\n\n _initMatrices() {\n const {\n width,\n height,\n projectionMatrix,\n viewMatrix\n } = this;\n const vpm = createMat4();\n mat4.multiply(vpm, vpm, projectionMatrix);\n mat4.multiply(vpm, vpm, viewMatrix);\n this.viewProjectionMatrix = vpm;\n const m = createMat4();\n mat4.scale(m, m, [width / 2, -height / 2, 1]);\n mat4.translate(m, m, [1, -1, 0]);\n mat4.multiply(m, m, vpm);\n const mInverse = mat4.invert(createMat4(), m);\n\n if (!mInverse) {\n throw new Error('Pixel project matrix not invertible');\n }\n\n this.pixelProjectionMatrix = m;\n this.pixelUnprojectionMatrix = mInverse;\n }\n\n projectFlat(lngLat) {\n return lngLatToWorld(lngLat);\n }\n\n unprojectFlat(xy) {\n return worldToLngLat(xy);\n }\n\n getMapCenterByLngLatPosition({\n lngLat,\n pos\n }) {\n const fromLocation = pixelsToWorld(pos, this.pixelUnprojectionMatrix);\n const toLocation = lngLatToWorld(lngLat);\n const translate = vec2.add([], toLocation, vec2.negate([], fromLocation));\n const newCenter = vec2.add([], this.center, translate);\n return worldToLngLat(newCenter);\n }\n\n fitBounds(bounds, options = {}) {\n const {\n width,\n height\n } = this;\n const {\n longitude,\n latitude,\n zoom\n } = fitBounds(Object.assign({\n width,\n height,\n bounds\n }, options));\n return new WebMercatorViewport({\n width,\n height,\n longitude,\n latitude,\n zoom\n });\n }\n\n getBounds(options) {\n const corners = this.getBoundingRegion(options);\n const west = Math.min(...corners.map(p => p[0]));\n const east = Math.max(...corners.map(p => p[0]));\n const south = Math.min(...corners.map(p => p[1]));\n const north = Math.max(...corners.map(p => p[1]));\n return [[west, south], [east, north]];\n }\n\n getBoundingRegion(options = {}) {\n return getBounds(this, options.z || 0);\n }\n\n getLocationAtPoint({\n lngLat,\n pos\n }) {\n return this.getMapCenterByLngLatPosition({\n lngLat,\n pos\n });\n }\n\n}\n//# sourceMappingURL=web-mercator-viewport.js.map","// View and Projection Matrix calculations for mapbox-js style map view properties\nimport {createMat4} from './math-utils';\n\nimport {\n zoomToScale,\n pixelsToWorld,\n lngLatToWorld,\n worldToLngLat,\n worldToPixels,\n altitudeToFovy,\n fovyToAltitude,\n DEFAULT_ALTITUDE,\n getProjectionMatrix,\n getDistanceScales,\n getViewMatrix,\n DistanceScales\n} from './web-mercator-utils';\nimport fitBounds from './fit-bounds';\nimport getBounds from './get-bounds';\nimport type {FitBoundsOptions} from './fit-bounds';\n\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\n\n/**\n * @param width=1 - Width of \"viewport\" or window\n * @param height=1 - Height of \"viewport\" or window\n * @param scale=1 - Either use scale or zoom\n * @param pitch=0 - Camera angle in degrees (0 is straight down)\n * @param bearing=0 - Map rotation in degrees (0 means north is up)\n * @param fovy= - Field of view of camera in degrees\n * @param altitude= - Altitude of camera in screen units \n *\n * Web mercator projection short-hand parameters\n * @param latitude - Center of viewport on map\n * @param longitude - Center of viewport on map\n * @param zoom - Scale = Math.pow(2,zoom) on map\n\n * Notes:\n * - Only one of center or [latitude, longitude] can be specified\n * - [latitude, longitude] can only be specified when \"mercator\" is true\n * - Altitude has a default value that matches assumptions in mapbox-gl\n * - Field of view is independent from altitude, provide `altitudeToFovy(1.5)` (default value) to match assumptions in mapbox-gl\n * - width and height are forced to 1 if supplied as 0, to avoid\n * division by zero. This is intended to reduce the burden of apps to\n * to check values before instantiating a Viewport.\n */\nexport type WebMercatorViewportProps = {\n // Map state\n width: number;\n height: number;\n latitude?: number;\n longitude?: number;\n position?: number[];\n zoom?: number;\n pitch?: number;\n bearing?: number;\n altitude?: number;\n fovy?: number;\n nearZMultiplier?: number;\n farZMultiplier?: number;\n};\n\n/**\n * The WebMercatorViewport class creates\n * - view/projection matrices\n * - \"uniform values\" (for shaders) from mercator params\n *\n * Note: Instances are immutable in the sense that they only have accessors.\n * A new viewport instance should be created if any parameters have changed.\n */\nexport default class WebMercatorViewport {\n readonly latitude: number;\n readonly longitude: number;\n readonly zoom: number;\n readonly pitch: number;\n readonly bearing: number;\n readonly altitude: number;\n readonly fovy: number;\n\n readonly meterOffset: number[];\n readonly center: number[];\n\n readonly width: number;\n readonly height: number;\n readonly scale: number;\n readonly distanceScales: DistanceScales;\n\n readonly viewMatrix: number[];\n readonly projectionMatrix: number[];\n\n viewProjectionMatrix: number[];\n pixelProjectionMatrix: number[];\n pixelUnprojectionMatrix: number[];\n\n /**\n * @classdesc\n * Creates view/projection matrices from mercator params\n * Note: The Viewport is immutable in the sense that it only has accessors.\n * A new viewport instance should be created if any parameters have changed.\n */\n // eslint-disable-next-line max-statements\n constructor(props: WebMercatorViewportProps = {width: 1, height: 1}) {\n let {\n // Map state\n width,\n height,\n altitude = null,\n fovy = null\n } = props;\n const {\n latitude = 0,\n longitude = 0,\n zoom = 0,\n pitch = 0,\n bearing = 0,\n position = null,\n nearZMultiplier = 0.02,\n farZMultiplier = 1.01\n } = props;\n\n // Silently allow apps to send in 0,0 to facilitate isomorphic render etc\n width = width || 1;\n height = height || 1;\n\n // `fovy` & `altitude` are independent parameters, one for the\n // projection and the latter for the view matrix. In the past,\n // the `fovy` was always derived from the `altitude`\n if (fovy === null && altitude === null) {\n altitude = DEFAULT_ALTITUDE;\n fovy = altitudeToFovy(altitude);\n } else if (fovy === null) {\n fovy = altitudeToFovy(altitude);\n } else if (altitude === null) {\n altitude = fovyToAltitude(fovy);\n }\n\n const scale = zoomToScale(zoom);\n // Altitude - prevent division by 0\n // TODO - just throw an Error instead?\n altitude = Math.max(0.75, altitude);\n\n const distanceScales = getDistanceScales({longitude, latitude});\n\n const center: number[] = lngLatToWorld([longitude, latitude]);\n center.push(0);\n\n if (position) {\n vec3.add(center, center, vec3.mul([], position, distanceScales.unitsPerMeter));\n }\n\n this.projectionMatrix = getProjectionMatrix({\n width,\n height,\n scale,\n center,\n pitch,\n fovy,\n nearZMultiplier,\n farZMultiplier\n });\n\n this.viewMatrix = getViewMatrix({\n height,\n scale,\n center,\n pitch,\n bearing,\n altitude\n });\n\n // Save parameters\n this.width = width;\n this.height = height;\n this.scale = scale;\n\n this.latitude = latitude;\n this.longitude = longitude;\n this.zoom = zoom;\n this.pitch = pitch;\n this.bearing = bearing;\n this.altitude = altitude;\n this.fovy = fovy;\n this.center = center;\n this.meterOffset = position || [0, 0, 0];\n\n this.distanceScales = distanceScales;\n\n this._initMatrices();\n\n Object.freeze(this);\n }\n\n _initMatrices(): void {\n const {width, height, projectionMatrix, viewMatrix} = this;\n\n // Note: As usual, matrix operations should be applied in \"reverse\" order\n // since vectors will be multiplied in from the right during transformation\n const vpm = createMat4();\n mat4.multiply(vpm, vpm, projectionMatrix);\n mat4.multiply(vpm, vpm, viewMatrix);\n this.viewProjectionMatrix = vpm;\n\n // Calculate matrices and scales needed for projection\n /**\n * Builds matrices that converts preprojected lngLats to screen pixels\n * and vice versa.\n * Note: Currently returns bottom-left coordinates!\n * Note: Starts with the GL projection matrix and adds steps to the\n * scale and translate that matrix onto the window.\n * Note: WebGL controls clip space to screen projection with gl.viewport\n * and does not need this step.\n */\n const m = createMat4();\n\n // matrix for conversion from location to screen coordinates\n mat4.scale(m, m, [width / 2, -height / 2, 1]);\n mat4.translate(m, m, [1, -1, 0]);\n mat4.multiply(m, m, vpm);\n\n const mInverse = mat4.invert(createMat4(), m);\n if (!mInverse) {\n throw new Error('Pixel project matrix not invertible');\n }\n\n this.pixelProjectionMatrix = m;\n this.pixelUnprojectionMatrix = mInverse;\n }\n\n /** Two viewports are equal if width and height are identical, and if\n * their view and projection matrices are (approximately) equal.\n */\n equals = (viewport: WebMercatorViewport | null): boolean => {\n if (!(viewport instanceof WebMercatorViewport)) {\n return false;\n }\n\n return (\n viewport.width === this.width &&\n viewport.height === this.height &&\n mat4.equals(viewport.projectionMatrix, this.projectionMatrix) &&\n mat4.equals(viewport.viewMatrix, this.viewMatrix)\n );\n };\n\n /**\n * Projects xyz (possibly latitude and longitude) to pixel coordinates in window\n * using viewport projection parameters\n * - [longitude, latitude] to [x, y]\n * - [longitude, latitude, Z] => [x, y, z]\n * Note: By default, returns top-left coordinates for canvas/SVG type render\n *\n * @param lngLatZ - [lng, lat] or [lng, lat, Z]\n * @param options - options\n * @param options.topLeft=true - Whether projected coords are top left\n * @return - screen coordinates [x, y] or [x, y, z], z as pixel depth\n */\n project = (lngLatZ: number[], options: {topLeft?: boolean} = {}): number[] => {\n const {topLeft = true} = options;\n const worldPosition = this.projectPosition(lngLatZ);\n const coord = worldToPixels(worldPosition, this.pixelProjectionMatrix);\n\n const [x, y] = coord;\n const y2 = topLeft ? y : this.height - y;\n return lngLatZ.length === 2 ? [x, y2] : [x, y2, coord[2]];\n };\n\n /**\n * Unproject pixel coordinates on screen onto world coordinates, possibly `[lon, lat]` on map.\n *\n * - [x, y] => [lng, lat]\n * - [x, y, z] => [lng, lat, Z]\n *\n * @param xyz - screen coordinates, z as pixel depth\n * @param options - options\n * @param options.topLeft=true - Whether projected coords are top left\n * @param options.targetZ=0 - If pixel depth is unknown, targetZ is used as\n * the elevation plane to unproject onto\n * @return - [lng, lat, Z] or [X, Y, Z]\n */\n unproject = (xyz: number[], options: {topLeft?: boolean; targetZ?: number} = {}): number[] => {\n const {topLeft = true, targetZ = undefined} = options;\n const [x, y, z] = xyz;\n\n const y2 = topLeft ? y : this.height - y;\n const targetZWorld = targetZ && targetZ * this.distanceScales.unitsPerMeter[2];\n const coord = pixelsToWorld([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n const [X, Y, Z] = this.unprojectPosition(coord);\n\n if (Number.isFinite(z)) {\n return [X, Y, Z];\n }\n return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n };\n\n // NON_LINEAR PROJECTION HOOKS\n // Used for web meractor projection\n\n projectPosition = (xyz: number[]): [number, number, number] => {\n const [X, Y] = lngLatToWorld(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.unitsPerMeter[2];\n return [X, Y, Z];\n };\n\n unprojectPosition = (xyz: number[]): [number, number, number] => {\n const [X, Y] = worldToLngLat(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.metersPerUnit[2];\n return [X, Y, Z];\n };\n\n /**\n * Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n * Performs the nonlinear part of the web mercator projection.\n * Remaining projection is done with 4x4 matrices which also handles\n * perspective.\n *\n * @param lngLat - [lng, lat] coordinates\n * Specifies a point on the sphere to project onto the map.\n * @return [x,y] coordinates.\n */\n projectFlat(lngLat: number[]): number[] {\n return lngLatToWorld(lngLat);\n }\n\n /**\n * Unproject world point [x,y] on map onto {lat, lon} on sphere\n *\n * @param xy - array with [x,y] members\n * representing point on projected map plane\n * @return - array with [lat,lon] of point on sphere.\n * Has toArray method if you need a GeoJSON Array.\n * Per cartographic tradition, lat and lon are specified as degrees.\n */\n unprojectFlat(xy: number[]): number[] {\n return worldToLngLat(xy);\n }\n\n /**\n * Get the map center that place a given [lng, lat] coordinate at screen point [x, y]\n * @param opt\n * @param opt.lngLat - [lng,lat] coordinates\n * Specifies a point on the sphere.\n * @param opt.pos - [x,y] coordinates\n * Specifies a point on the screen.\n * @return [lng,lat] new map center.\n */\n getMapCenterByLngLatPosition({lngLat, pos}: {lngLat: number[]; pos: number[]}): number[] {\n const fromLocation = pixelsToWorld(pos, this.pixelUnprojectionMatrix);\n const toLocation = lngLatToWorld(lngLat);\n const translate = vec2.add([], toLocation, vec2.negate([], fromLocation));\n const newCenter = vec2.add([], this.center, translate);\n return worldToLngLat(newCenter);\n }\n\n /**\n * Returns a new viewport that fit around the given rectangle.\n * Only supports non-perspective mode.\n * @param bounds - [[lon, lat], [lon, lat]]\n * @param [options]\n * @param [options.padding] - The amount of padding in pixels to add to the given bounds.\n * @param [options.offset] - The center of the given bounds relative to the map's center,\n * [x, y] measured in pixels.\n * @returns {WebMercatorViewport}\n */\n fitBounds(\n bounds: [[number, number], [number, number]],\n options: Omit = {}\n ): WebMercatorViewport {\n const {width, height} = this;\n const {longitude, latitude, zoom} = fitBounds(Object.assign({width, height, bounds}, options));\n return new WebMercatorViewport({width, height, longitude, latitude, zoom});\n }\n\n /**\n * Returns the bounding box of the viewport.\n * @param [options]\n * @param [options.z] - The altitude at which the bounds should be calculated.\n * @returns {Array} bounds - [[lon, lat], [lon, lat]]\n */\n getBounds(options?: {z?: number}): number[][] {\n const corners = this.getBoundingRegion(options);\n\n const west = Math.min(...corners.map((p) => p[0]));\n const east = Math.max(...corners.map((p) => p[0]));\n const south = Math.min(...corners.map((p) => p[1]));\n const north = Math.max(...corners.map((p) => p[1]));\n return [\n [west, south],\n [east, north]\n ];\n }\n\n /**\n * Returns the bounding box of the viewport.\n * @param [options]\n * @param [options.z] - The altitude at which the bounds should be calculated.\n * @returns {Array} an array of 4 points that define the visible region\n */\n getBoundingRegion(options: {z?: number} = {}): number[][] {\n return getBounds(this, options.z || 0);\n }\n\n // DEPRECATED\n\n /** @deprecated Legacy method name */\n getLocationAtPoint({lngLat, pos}: {lngLat: number[]; pos: number[]}): number[] {\n return this.getMapCenterByLngLatPosition({lngLat, pos});\n }\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import { transformMat4, scale } from 'gl-matrix/vec4';\nexport function createMat4() {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\nexport function transformVector(matrix, vector) {\n const result = transformMat4([], vector, matrix);\n scale(result, result, 1 / result[3]);\n return result;\n}\nexport function mod(value, divisor) {\n const modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\nexport function lerp(start, end, step) {\n return step * end + (1 - step) * start;\n}\nexport function clamp(x, min, max) {\n return x < min ? min : x > max ? max : x;\n}\n\nfunction ieLog2(x) {\n return Math.log(x) * Math.LOG2E;\n}\n\nexport const log2 = Math.log2 || ieLog2;\n//# sourceMappingURL=math-utils.js.map","import {transformMat4, scale} from 'gl-matrix/vec4';\n\n// Helper, avoids low-precision 32 bit matrices from gl-matrix mat4.create()\nexport function createMat4(): number[] {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\n\n// Transforms a vec4 with a projection matrix\nexport function transformVector(matrix: number[], vector: number[]): number[] {\n const result = transformMat4([] as number[], vector, matrix);\n scale(result, result, 1 / result[3]);\n return result;\n}\n\nexport function mod(value: number, divisor: number): number {\n const modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\n\nexport function lerp(start: number, end: number, step: number): number {\n return step * end + (1 - step) * start;\n}\n\nexport function clamp(x: number, min: number, max: number): number {\n return x < min ? min : x > max ? max : x;\n}\n\nfunction ieLog2(x: number): number {\n return Math.log(x) * Math.LOG2E;\n}\n// Handle missing log2 in IE 11\nexport const log2 = Math.log2 || ieLog2;\n","import * as glMatrix from \"./common.js\";\n/**\n * 4 Dimensional Vector\n * @module vec4\n */\n\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {ReadonlyVec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\n\nexport function fromValues(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the source vector\n * @returns {vec4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\n\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\n * Math.ceil the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to ceil\n * @returns {vec4} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\n * Math.floor the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to floor\n * @returns {vec4} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\n * Math.round the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to round\n * @returns {vec4} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Calculates the length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to negate\n * @returns {vec4} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to invert\n * @returns {vec4} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to normalize\n * @returns {vec4} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\n * Returns the cross-product of three vectors in a 4-dimensional space\n *\n * @param {ReadonlyVec4} result the receiving vector\n * @param {ReadonlyVec4} U the first vector\n * @param {ReadonlyVec4} V the second vector\n * @param {ReadonlyVec4} W the third vector\n * @returns {vec4} result\n */\n\nexport function cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec4} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec4} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec4} out\n */\n\nexport function transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to zero\n *\n * @param {vec4} out the receiving vector\n * @returns {vec4} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec4} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec4.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();","/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import { createMat4, transformVector, clamp, log2 } from './math-utils';\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport assert from './assert';\nconst PI = Math.PI;\nconst PI_4 = PI / 4;\nconst DEGREES_TO_RADIANS = PI / 180;\nconst RADIANS_TO_DEGREES = 180 / PI;\nconst TILE_SIZE = 512;\nconst EARTH_CIRCUMFERENCE = 40.03e6;\nexport const MAX_LATITUDE = 85.051129;\nexport const DEFAULT_ALTITUDE = 1.5;\nexport function zoomToScale(zoom) {\n return Math.pow(2, zoom);\n}\nexport function scaleToZoom(scale) {\n return log2(scale);\n}\nexport function lngLatToWorld(lngLat) {\n const [lng, lat] = lngLat;\n assert(Number.isFinite(lng));\n assert(Number.isFinite(lat) && lat >= -90 && lat <= 90, 'invalid latitude');\n const lambda2 = lng * DEGREES_TO_RADIANS;\n const phi2 = lat * DEGREES_TO_RADIANS;\n const x = TILE_SIZE * (lambda2 + PI) / (2 * PI);\n const y = TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5))) / (2 * PI);\n return [x, y];\n}\nexport function worldToLngLat(xy) {\n const [x, y] = xy;\n const lambda2 = x / TILE_SIZE * (2 * PI) - PI;\n const phi2 = 2 * (Math.atan(Math.exp(y / TILE_SIZE * (2 * PI) - PI)) - PI_4);\n return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];\n}\nexport function getMeterZoom(options) {\n const {\n latitude\n } = options;\n assert(Number.isFinite(latitude));\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\nexport function unitsPerMeter(latitude) {\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return TILE_SIZE / EARTH_CIRCUMFERENCE / latCosine;\n}\nexport function getDistanceScales(options) {\n const {\n latitude,\n longitude,\n highPrecision = false\n } = options;\n assert(Number.isFinite(latitude) && Number.isFinite(longitude));\n const worldSize = TILE_SIZE;\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n const unitsPerDegreeX = worldSize / 360;\n const unitsPerDegreeY = unitsPerDegreeX / latCosine;\n const altUnitsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;\n const result = {\n unitsPerMeter: [altUnitsPerMeter, altUnitsPerMeter, altUnitsPerMeter],\n metersPerUnit: [1 / altUnitsPerMeter, 1 / altUnitsPerMeter, 1 / altUnitsPerMeter],\n unitsPerDegree: [unitsPerDegreeX, unitsPerDegreeY, altUnitsPerMeter],\n degreesPerUnit: [1 / unitsPerDegreeX, 1 / unitsPerDegreeY, 1 / altUnitsPerMeter]\n };\n\n if (highPrecision) {\n const latCosine2 = DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS) / latCosine;\n const unitsPerDegreeY2 = unitsPerDegreeX * latCosine2 / 2;\n const altUnitsPerDegree2 = worldSize / EARTH_CIRCUMFERENCE * latCosine2;\n const altUnitsPerMeter2 = altUnitsPerDegree2 / unitsPerDegreeY * altUnitsPerMeter;\n result.unitsPerDegree2 = [0, unitsPerDegreeY2, altUnitsPerDegree2];\n result.unitsPerMeter2 = [altUnitsPerMeter2, 0, altUnitsPerMeter2];\n }\n\n return result;\n}\nexport function addMetersToLngLat(lngLatZ, xyz) {\n const [longitude, latitude, z0] = lngLatZ;\n const [x, y, z] = xyz;\n const {\n unitsPerMeter,\n unitsPerMeter2\n } = getDistanceScales({\n longitude,\n latitude,\n highPrecision: true\n });\n const worldspace = lngLatToWorld(lngLatZ);\n worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n const newLngLat = worldToLngLat(worldspace);\n const newZ = (z0 || 0) + (z || 0);\n return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;\n}\nexport function getViewMatrix(options) {\n const {\n height,\n pitch,\n bearing,\n altitude,\n scale,\n center\n } = options;\n const vm = createMat4();\n mat4.translate(vm, vm, [0, 0, -altitude]);\n mat4.rotateX(vm, vm, -pitch * DEGREES_TO_RADIANS);\n mat4.rotateZ(vm, vm, bearing * DEGREES_TO_RADIANS);\n const relativeScale = scale / height;\n mat4.scale(vm, vm, [relativeScale, relativeScale, relativeScale]);\n\n if (center) {\n mat4.translate(vm, vm, vec3.negate([], center));\n }\n\n return vm;\n}\nexport function getProjectionParameters(options) {\n const {\n width,\n height,\n altitude,\n pitch = 0,\n offset,\n center,\n scale,\n nearZMultiplier = 1,\n farZMultiplier = 1\n } = options;\n let {\n fovy = altitudeToFovy(DEFAULT_ALTITUDE)\n } = options;\n\n if (altitude !== undefined) {\n fovy = altitudeToFovy(altitude);\n }\n\n const fovRadians = fovy * DEGREES_TO_RADIANS;\n const pitchRadians = pitch * DEGREES_TO_RADIANS;\n const focalDistance = fovyToAltitude(fovy);\n let cameraToSeaLevelDistance = focalDistance;\n\n if (center) {\n cameraToSeaLevelDistance += center[2] * scale / Math.cos(pitchRadians) / height;\n }\n\n const fovAboveCenter = fovRadians * (0.5 + (offset ? offset[1] : 0) / height);\n const topHalfSurfaceDistance = Math.sin(fovAboveCenter) * cameraToSeaLevelDistance / Math.sin(clamp(Math.PI / 2 - pitchRadians - fovAboveCenter, 0.01, Math.PI - 0.01));\n const furthestDistance = Math.sin(pitchRadians) * topHalfSurfaceDistance + cameraToSeaLevelDistance;\n const horizonDistance = cameraToSeaLevelDistance * 10;\n const farZ = Math.min(furthestDistance * farZMultiplier, horizonDistance);\n return {\n fov: fovRadians,\n aspect: width / height,\n focalDistance,\n near: nearZMultiplier,\n far: farZ\n };\n}\nexport function getProjectionMatrix(options) {\n const {\n fov,\n aspect,\n near,\n far\n } = getProjectionParameters(options);\n const projectionMatrix = mat4.perspective([], fov, aspect, near, far);\n return projectionMatrix;\n}\nexport function altitudeToFovy(altitude) {\n return 2 * Math.atan(0.5 / altitude) * RADIANS_TO_DEGREES;\n}\nexport function fovyToAltitude(fovy) {\n return 0.5 / Math.tan(0.5 * fovy * DEGREES_TO_RADIANS);\n}\nexport function worldToPixels(xyz, pixelProjectionMatrix) {\n const [x, y, z = 0] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n return transformVector(pixelProjectionMatrix, [x, y, z, 1]);\n}\nexport function pixelsToWorld(xyz, pixelUnprojectionMatrix, targetZ = 0) {\n const [x, y, z] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y), 'invalid pixel coordinate');\n\n if (Number.isFinite(z)) {\n const coord = transformVector(pixelUnprojectionMatrix, [x, y, z, 1]);\n return coord;\n }\n\n const coord0 = transformVector(pixelUnprojectionMatrix, [x, y, 0, 1]);\n const coord1 = transformVector(pixelUnprojectionMatrix, [x, y, 1, 1]);\n const z0 = coord0[2];\n const z1 = coord1[2];\n const t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n return vec2.lerp([], coord0, coord1, t);\n}\n//# sourceMappingURL=web-mercator-utils.js.map","// TODO - THE UTILITIES IN THIS FILE SHOULD BE IMPORTED FROM WEB-MERCATOR-VIEWPORT MODULE\n\nimport {createMat4, transformVector, clamp, log2} from './math-utils';\n\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport assert from './assert';\n\n// CONSTANTS\nconst PI = Math.PI;\nconst PI_4 = PI / 4;\nconst DEGREES_TO_RADIANS = PI / 180;\nconst RADIANS_TO_DEGREES = 180 / PI;\nconst TILE_SIZE = 512;\n// Average circumference (40075 km equatorial, 40007 km meridional)\nconst EARTH_CIRCUMFERENCE = 40.03e6;\n// Latitude that makes a square world, 2 * atan(E ** PI) - PI / 2\nexport const MAX_LATITUDE = 85.051129;\n\n// Mapbox default altitude\nexport const DEFAULT_ALTITUDE = 1.5;\n\nexport type DistanceScales = {\n unitsPerMeter: number[];\n metersPerUnit: number[];\n unitsPerMeter2?: number[];\n unitsPerDegree: number[];\n degreesPerUnit: number[];\n unitsPerDegree2?: number[];\n};\n\n/**\n * PROJECTION MATRIX PARAMETERS\n *\n * TODO how to document mebers\n * @param fov in radians. fov is variable, depends on pitch and altitude\n * @param aspect width/height\n * @param focalDistance distance at which visual scale factor is 1\n * @param near near clipping plane\n * @param far far clipping plane\n */\ntype ProjectionParameters = {\n fov: number;\n aspect: number;\n focalDistance: number;\n near: number;\n far: number;\n};\n\n/** Logarithimic zoom to linear scale **/\nexport function zoomToScale(zoom: number): number {\n return Math.pow(2, zoom);\n}\n\n/** Linear scale to logarithimic zoom **/\nexport function scaleToZoom(scale: number): number {\n return log2(scale);\n}\n\n/**\n * Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n * Performs the nonlinear part of the web mercator projection.\n * Remaining projection is done with 4x4 matrices which also handles\n * perspective.\n *\n * @param lngLat - [lng, lat] coordinates\n * Specifies a point on the sphere to project onto the map.\n * @return [x,y] coordinates.\n */\nexport function lngLatToWorld(lngLat: number[]): [number, number] {\n const [lng, lat] = lngLat;\n assert(Number.isFinite(lng));\n assert(Number.isFinite(lat) && lat >= -90 && lat <= 90, 'invalid latitude');\n\n const lambda2 = lng * DEGREES_TO_RADIANS;\n const phi2 = lat * DEGREES_TO_RADIANS;\n const x = (TILE_SIZE * (lambda2 + PI)) / (2 * PI);\n const y = (TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5)))) / (2 * PI);\n return [x, y];\n}\n\n/**\n * Unproject world point [x,y] on map onto {lat, lon} on sphere\n *\n * @param xy - array with [x,y] members\n * representing point on projected map plane\n * @return - array with [x,y] of point on sphere.\n * Has toArray method if you need a GeoJSON Array.\n * Per cartographic tradition, lat and lon are specified as degrees.\n */\nexport function worldToLngLat(xy: number[]): [number, number] {\n const [x, y] = xy;\n const lambda2 = (x / TILE_SIZE) * (2 * PI) - PI;\n const phi2 = 2 * (Math.atan(Math.exp((y / TILE_SIZE) * (2 * PI) - PI)) - PI_4);\n return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];\n}\n\n/**\n * Returns the zoom level that gives a 1 meter pixel at a certain latitude\n * 1 = C*cos(y)/2^z/TILE_SIZE = C*cos(y)/2^(z+9)\n */\nexport function getMeterZoom(options: {latitude: number}): number {\n const {latitude} = options;\n assert(Number.isFinite(latitude));\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\n\n/**\n * Calculate the conversion from meter to common units at a given latitude\n * This is a cheaper version of `getDistanceScales`\n * @param latitude center latitude in degrees\n * @returns common units per meter\n */\nexport function unitsPerMeter(latitude: number): number {\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return TILE_SIZE / EARTH_CIRCUMFERENCE / latCosine;\n}\n\n/**\n * Calculate distance scales in meters around current lat/lon, both for\n * degrees and pixels.\n * In mercator projection mode, the distance scales vary significantly\n * with latitude.\n */\nexport function getDistanceScales(options: {\n latitude: number;\n longitude: number;\n highPrecision?: boolean;\n}): DistanceScales {\n const {latitude, longitude, highPrecision = false} = options;\n assert(Number.isFinite(latitude) && Number.isFinite(longitude));\n\n const worldSize = TILE_SIZE;\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n\n /**\n * Number of pixels occupied by one degree longitude around current lat/lon:\n unitsPerDegreeX = d(lngLatToWorld([lng, lat])[0])/d(lng)\n = scale * TILE_SIZE * DEGREES_TO_RADIANS / (2 * PI)\n unitsPerDegreeY = d(lngLatToWorld([lng, lat])[1])/d(lat)\n = -scale * TILE_SIZE * DEGREES_TO_RADIANS / cos(lat * DEGREES_TO_RADIANS) / (2 * PI)\n */\n const unitsPerDegreeX = worldSize / 360;\n const unitsPerDegreeY = unitsPerDegreeX / latCosine;\n\n /**\n * Number of pixels occupied by one meter around current lat/lon:\n */\n const altUnitsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;\n\n /**\n * LngLat: longitude -> east and latitude -> north (bottom left)\n * UTM meter offset: x -> east and y -> north (bottom left)\n * World space: x -> east and y -> south (top left)\n *\n * Y needs to be flipped when converting delta degree/meter to delta pixels\n */\n const result: DistanceScales = {\n unitsPerMeter: [altUnitsPerMeter, altUnitsPerMeter, altUnitsPerMeter],\n metersPerUnit: [1 / altUnitsPerMeter, 1 / altUnitsPerMeter, 1 / altUnitsPerMeter],\n\n unitsPerDegree: [unitsPerDegreeX, unitsPerDegreeY, altUnitsPerMeter],\n degreesPerUnit: [1 / unitsPerDegreeX, 1 / unitsPerDegreeY, 1 / altUnitsPerMeter]\n };\n\n /**\n * Taylor series 2nd order for 1/latCosine\n f'(a) * (x - a)\n = d(1/cos(lat * DEGREES_TO_RADIANS))/d(lat) * dLat\n = DEGREES_TO_RADIANS * tan(lat * DEGREES_TO_RADIANS) / cos(lat * DEGREES_TO_RADIANS) * dLat\n */\n if (highPrecision) {\n const latCosine2 = (DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS)) / latCosine;\n const unitsPerDegreeY2 = (unitsPerDegreeX * latCosine2) / 2;\n const altUnitsPerDegree2 = (worldSize / EARTH_CIRCUMFERENCE) * latCosine2;\n const altUnitsPerMeter2 = (altUnitsPerDegree2 / unitsPerDegreeY) * altUnitsPerMeter;\n\n result.unitsPerDegree2 = [0, unitsPerDegreeY2, altUnitsPerDegree2];\n result.unitsPerMeter2 = [altUnitsPerMeter2, 0, altUnitsPerMeter2];\n }\n\n // Main results, used for converting meters to latlng deltas and scaling offsets\n return result;\n}\n\n/**\n * Offset a lng/lat position by meterOffset (northing, easting)\n */\nexport function addMetersToLngLat(lngLatZ: number[], xyz: number[]): number[] {\n const [longitude, latitude, z0] = lngLatZ;\n const [x, y, z] = xyz;\n\n const {unitsPerMeter, unitsPerMeter2} = getDistanceScales({\n longitude,\n latitude,\n highPrecision: true\n });\n\n const worldspace = lngLatToWorld(lngLatZ);\n worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n\n const newLngLat = worldToLngLat(worldspace);\n const newZ = (z0 || 0) + (z || 0);\n\n return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;\n}\n\n/**\n *\n * view and projection matrix creation is intentionally kept compatible with\n * mapbox-gl's implementation to ensure that seamless interoperation\n * with mapbox and react-map-gl. See: https://github.com/mapbox/mapbox-gl-js\n */\nexport function getViewMatrix(options: {\n // Viewport props\n height: number;\n pitch: number;\n bearing: number;\n altitude: number;\n // Pre-calculated parameters\n scale: number;\n center?: number[];\n}): number[] {\n const {\n // Viewport props\n height,\n pitch,\n bearing,\n altitude,\n // Pre-calculated parameters\n scale,\n center\n } = options;\n // VIEW MATRIX: PROJECTS MERCATOR WORLD COORDINATES\n // Note that mercator world coordinates typically need to be flipped\n //\n // Note: As usual, matrix operation orders should be read in reverse\n // since vectors will be multiplied from the right during transformation\n const vm = createMat4();\n\n // Move camera to altitude (along the pitch & bearing direction)\n mat4.translate(vm, vm, [0, 0, -altitude]);\n\n // Rotate by bearing, and then by pitch (which tilts the view)\n mat4.rotateX(vm, vm, -pitch * DEGREES_TO_RADIANS);\n mat4.rotateZ(vm, vm, bearing * DEGREES_TO_RADIANS);\n\n const relativeScale = scale / height;\n mat4.scale(vm, vm, [relativeScale, relativeScale, relativeScale]);\n\n if (center) {\n mat4.translate(vm, vm, vec3.negate([], center));\n }\n\n return vm;\n}\n\n/**\n * Calculates mapbox compatible projection matrix from parameters\n *\n * @param options.width Width of \"viewport\" or window\n * @param options.height Height of \"viewport\" or window\n * @param options.scale Scale at the current zoom\n * @param options.center Offset of the target, vec3 in world space\n * @param options.offset Offset of the focal point, vec2 in screen space\n * @param options.pitch Camera angle in degrees (0 is straight down)\n * @param options.fovy field of view in degrees\n * @param options.altitude if provided, field of view is calculated using `altitudeToFovy()`\n * @param options.nearZMultiplier control z buffer\n * @param options.farZMultiplier control z buffer\n * @returns project parameters object\n */\nexport function getProjectionParameters(options: {\n width: number;\n height: number;\n scale?: number;\n center?: number[];\n offset?: [number, number];\n fovy?: number;\n altitude?: number;\n pitch?: number;\n nearZMultiplier?: number;\n farZMultiplier?: number;\n}): ProjectionParameters {\n const {\n width,\n height,\n altitude,\n pitch = 0,\n offset,\n center,\n scale,\n nearZMultiplier = 1,\n farZMultiplier = 1\n } = options;\n let {fovy = altitudeToFovy(DEFAULT_ALTITUDE)} = options;\n\n // For back-compatibility allow field of view to be\n // derived from altitude\n if (altitude !== undefined) {\n fovy = altitudeToFovy(altitude);\n }\n\n const fovRadians = fovy * DEGREES_TO_RADIANS;\n const pitchRadians = pitch * DEGREES_TO_RADIANS;\n\n // Distance from camera to the target\n const focalDistance = fovyToAltitude(fovy);\n\n let cameraToSeaLevelDistance = focalDistance;\n\n if (center) {\n cameraToSeaLevelDistance += (center[2] * scale) / Math.cos(pitchRadians) / height;\n }\n\n const fovAboveCenter = fovRadians * (0.5 + (offset ? offset[1] : 0) / height);\n\n // Find the distance from the center point to the center top\n // in focal distance units using law of sines.\n const topHalfSurfaceDistance =\n (Math.sin(fovAboveCenter) * cameraToSeaLevelDistance) /\n Math.sin(clamp(Math.PI / 2 - pitchRadians - fovAboveCenter, 0.01, Math.PI - 0.01));\n\n // Calculate z distance of the farthest fragment that should be rendered.\n const furthestDistance =\n Math.sin(pitchRadians) * topHalfSurfaceDistance + cameraToSeaLevelDistance;\n // Matches mapbox limit\n const horizonDistance = cameraToSeaLevelDistance * 10;\n\n // Calculate z value of the farthest fragment that should be rendered.\n const farZ = Math.min(furthestDistance * farZMultiplier, horizonDistance);\n\n return {\n fov: fovRadians,\n aspect: width / height,\n focalDistance,\n near: nearZMultiplier,\n far: farZ\n };\n}\n\n/**\n * CALCULATE PROJECTION MATRIX: PROJECTS FROM CAMERA (VIEW) SPACE TO CLIPSPACE\n *\n * To match mapbox's z buffer:\n * - \\<= 0.28: nearZMultiplier: 0.1, farZmultiplier: 1\n * - \\>= 0.29: nearZMultiplier: 1 / height, farZMultiplier: 1.01\n *\n * @param options Viewport options\n * @param options.width Width of \"viewport\" or window\n * @param options.height Height of \"viewport\" or window\n * @param options.scale Scale at the current zoom\n * @param options.center Offset of the target, vec3 in world space\n * @param options.offset Offset of the focal point, vec2 in screen space\n * @param options.pitch Camera angle in degrees (0 is straight down)\n * @param options.fovy field of view in degrees\n * @param options.altitude if provided, field of view is calculated using `altitudeToFovy()`\n * @param options.nearZMultiplier control z buffer\n * @param options.farZMultiplier control z buffer\n * @returns 4x4 projection matrix\n */\nexport function getProjectionMatrix(options: {\n width: number;\n height: number;\n pitch: number;\n scale?: number;\n center?: number[];\n offset?: [number, number];\n fovy?: number;\n altitude?: number;\n nearZMultiplier: number;\n farZMultiplier: number;\n}): number[] {\n const {fov, aspect, near, far} = getProjectionParameters(options);\n\n const projectionMatrix = mat4.perspective(\n [] as number[],\n fov, // fov in radians\n aspect, // aspect ratio\n near, // near plane\n far // far plane\n );\n\n return projectionMatrix;\n}\n\n/**\n *\n * Convert an altitude to field of view such that the\n * focal distance is equal to the altitude\n *\n * @param altitude - altitude of camera in screen units\n * @return fovy field of view in degrees\n */\nexport function altitudeToFovy(altitude: number): number {\n return 2 * Math.atan(0.5 / altitude) * RADIANS_TO_DEGREES;\n}\n\n/**\n *\n * Convert an field of view such that the\n * focal distance is equal to the altitude\n *\n * @param fovy - field of view in degrees\n * @return altitude altitude of camera in screen units\n */\nexport function fovyToAltitude(fovy: number): number {\n return 0.5 / Math.tan(0.5 * fovy * DEGREES_TO_RADIANS);\n}\n\n/**\n * Project flat coordinates to pixels on screen.\n *\n * @param xyz - flat coordinate on 512*512 Mercator Zoom 0 tile\n * @param pixelProjectionMatrix - projection matrix 4x4\n * @return [x, y, depth] pixel coordinate on screen.\n */\nexport function worldToPixels(xyz: number[], pixelProjectionMatrix: number[]): number[];\n\n// Project flat coordinates to pixels on screen.\nexport function worldToPixels(xyz: number[], pixelProjectionMatrix: number[]): number[] {\n const [x, y, z = 0] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n\n return transformVector(pixelProjectionMatrix, [x, y, z, 1]);\n}\n\n/**\n * Unproject pixels on screen to flat coordinates.\n *\n * @param xyz - pixel coordinate on screen.\n * @param pixelUnprojectionMatrix - unprojection matrix 4x4\n * @param targetZ - if pixel coordinate does not have a 3rd component (depth),\n * targetZ is used as the elevation plane to unproject onto\n * @return [x, y, Z] flat coordinates on 512*512 Mercator Zoom 0 tile.\n */\nexport function pixelsToWorld(\n xyz: number[],\n pixelUnprojectionMatrix: number[],\n targetZ: number = 0\n): number[] {\n const [x, y, z] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y), 'invalid pixel coordinate');\n\n if (Number.isFinite(z)) {\n // Has depth component\n const coord = transformVector(pixelUnprojectionMatrix, [x, y, z, 1]);\n return coord;\n }\n\n // since we don't know the correct projected z value for the point,\n // unproject two points to get a line and then find the point on that line with z=0\n const coord0 = transformVector(pixelUnprojectionMatrix, [x, y, 0, 1]);\n const coord1 = transformVector(pixelUnprojectionMatrix, [x, y, 1, 1]);\n\n const z0 = coord0[2];\n const z1 = coord1[2];\n\n const t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n return vec2.lerp([] as number[], coord0, coord1, t);\n}\n","import * as glMatrix from \"./common.js\";\n/**\n * 4x4 Matrix
Format: column-major, when typed out it looks like row-major
The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\n * Returns the translation vector component of a transformation\n * matrix. If a matrix is built with fromRotationTranslation,\n * the returned vector will be the same as the translation vector\n * originally supplied.\n * @param {vec3} out Vector to receive translation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\n * Returns the scaling factor component of a transformation\n * matrix. If a matrix is built with fromRotationTranslationScale\n * with a normalized Quaternion paramter, the returned vector will be\n * the same as the scaling vector\n * originally supplied.\n * @param {vec3} out Vector to receive scaling factor component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\n * Returns a quaternion representing the rotational component\n * of a transformation matrix. If a matrix is built with\n * fromRotationTranslation, the returned quaternion will be the\n * same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * mat4.translate(dest, origin);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n * mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveNO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\n\nexport var perspective = perspectiveNO;\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nexport function perspectiveZO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -near;\n }\n\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoNO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\n\nexport var ortho = orthoNO;\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nexport function orthoZO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = near * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || '@math.gl/web-mercator: assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport default function assert(condition: unknown, message?: string): void {\n if (!condition) {\n throw new Error(message || '@math.gl/web-mercator: assertion failed.');\n }\n}\n","import assert from './assert';\nimport { log2, clamp } from './math-utils';\nimport { MAX_LATITUDE, lngLatToWorld, worldToLngLat } from './web-mercator-utils';\nexport default function fitBounds(options) {\n const {\n width,\n height,\n bounds,\n minExtent = 0,\n maxZoom = 24,\n offset = [0, 0]\n } = options;\n const [[west, south], [east, north]] = bounds;\n const padding = getPaddingObject(options.padding);\n const nw = lngLatToWorld([west, clamp(north, -MAX_LATITUDE, MAX_LATITUDE)]);\n const se = lngLatToWorld([east, clamp(south, -MAX_LATITUDE, MAX_LATITUDE)]);\n const size = [Math.max(Math.abs(se[0] - nw[0]), minExtent), Math.max(Math.abs(se[1] - nw[1]), minExtent)];\n const targetSize = [width - padding.left - padding.right - Math.abs(offset[0]) * 2, height - padding.top - padding.bottom - Math.abs(offset[1]) * 2];\n assert(targetSize[0] > 0 && targetSize[1] > 0);\n const scaleX = targetSize[0] / size[0];\n const scaleY = targetSize[1] / size[1];\n const offsetX = (padding.right - padding.left) / 2 / scaleX;\n const offsetY = (padding.top - padding.bottom) / 2 / scaleY;\n const center = [(se[0] + nw[0]) / 2 + offsetX, (se[1] + nw[1]) / 2 + offsetY];\n const centerLngLat = worldToLngLat(center);\n const zoom = Math.min(maxZoom, log2(Math.abs(Math.min(scaleX, scaleY))));\n assert(Number.isFinite(zoom));\n return {\n longitude: centerLngLat[0],\n latitude: centerLngLat[1],\n zoom\n };\n}\n\nfunction getPaddingObject(padding = 0) {\n if (typeof padding === 'number') {\n return {\n top: padding,\n bottom: padding,\n left: padding,\n right: padding\n };\n }\n\n assert(Number.isFinite(padding.top) && Number.isFinite(padding.bottom) && Number.isFinite(padding.left) && Number.isFinite(padding.right));\n return padding;\n}\n//# sourceMappingURL=fit-bounds.js.map","import assert from './assert';\nimport {log2, clamp} from './math-utils';\nimport {MAX_LATITUDE, lngLatToWorld, worldToLngLat} from './web-mercator-utils';\n\n/**\n * Options for fitBounds\n * @param width - viewport width\n * @param height - viewport height\n * @param bounds - [[lon, lat], [lon, lat]]\n * @param minExtent - The width/height of the bounded area will never be smaller than this\n * @param padding - The amount of padding in pixels\n * to add to the given bounds. Can also be an object with top, bottom, left and right\n * properties defining the padding.\n * @param options.offset= - The center of the given bounds relative to the map's center,\n */\nexport type FitBoundsOptions = {\n width: number;\n height: number;\n bounds: [[number, number], [number, number]];\n minExtent?: number; // 0.01 would be about 1000 meters (degree is ~110KM)\n maxZoom?: number; // ~x4,000,000 => About 10 meter extents\n // options\n padding?: number | Padding;\n offset?: number[];\n};\n\n/**\n * An object describing the padding to add to the bounds.\n * @property top - Padding from top in pixels to add to the given bounds\n * @property bottom - Padding from bottom in pixels to add to the given bounds\n * @property left - Padding from left in pixels to add to the given bounds\n * @property right - Padding from right in pixels to add to the given bounds\n */\nexport type Padding = {\n top: number;\n bottom: number;\n left: number;\n right: number;\n};\n\ntype ViewportProps = {\n longitude: number;\n latitude: number;\n zoom: number;\n};\n\n/**\n * Returns map settings {latitude, longitude, zoom}\n * that will contain the provided corners within the provided width.\n *\n * > _Note: Only supports non-perspective mode._\n *\n * @param options fit bounds parameters\n * @returns - latitude, longitude and zoom\n */\nexport default function fitBounds(options: FitBoundsOptions): ViewportProps {\n const {\n width,\n height,\n bounds,\n minExtent = 0, // 0.01 would be about 1000 meters (degree is ~110KM)\n maxZoom = 24, // ~x4,000,000 => About 10 meter extents\n offset = [0, 0]\n } = options;\n\n const [[west, south], [east, north]] = bounds;\n const padding = getPaddingObject(options.padding);\n\n const nw = lngLatToWorld([west, clamp(north, -MAX_LATITUDE, MAX_LATITUDE)]);\n const se = lngLatToWorld([east, clamp(south, -MAX_LATITUDE, MAX_LATITUDE)]);\n\n // width/height on the Web Mercator plane\n const size = [\n Math.max(Math.abs(se[0] - nw[0]), minExtent),\n Math.max(Math.abs(se[1] - nw[1]), minExtent)\n ];\n\n const targetSize = [\n width - padding.left - padding.right - Math.abs(offset[0]) * 2,\n height - padding.top - padding.bottom - Math.abs(offset[1]) * 2\n ];\n\n assert(targetSize[0] > 0 && targetSize[1] > 0);\n\n // scale = screen pixels per unit on the Web Mercator plane\n const scaleX = targetSize[0] / size[0];\n const scaleY = targetSize[1] / size[1];\n\n // Find how much we need to shift the center\n const offsetX = (padding.right - padding.left) / 2 / scaleX;\n const offsetY = (padding.top - padding.bottom) / 2 / scaleY;\n\n const center = [(se[0] + nw[0]) / 2 + offsetX, (se[1] + nw[1]) / 2 + offsetY];\n\n const centerLngLat = worldToLngLat(center);\n const zoom = Math.min(maxZoom, log2(Math.abs(Math.min(scaleX, scaleY))));\n\n assert(Number.isFinite(zoom));\n\n return {\n longitude: centerLngLat[0],\n latitude: centerLngLat[1],\n zoom\n };\n}\n\n// Helpers\nfunction getPaddingObject(padding: number | Padding = 0): Padding {\n if (typeof padding === 'number') {\n return {\n top: padding,\n bottom: padding,\n left: padding,\n right: padding\n };\n }\n\n // Make sure all the required properties are set\n assert(\n Number.isFinite(padding.top) &&\n Number.isFinite(padding.bottom) &&\n Number.isFinite(padding.left) &&\n Number.isFinite(padding.right)\n );\n\n return padding;\n}\n","import { worldToLngLat } from './web-mercator-utils';\nimport * as vec2 from 'gl-matrix/vec2';\nimport { transformVector } from './math-utils';\nconst DEGREES_TO_RADIANS = Math.PI / 180;\nexport default function getBounds(viewport, z = 0) {\n const {\n width,\n height,\n unproject\n } = viewport;\n const unprojectOps = {\n targetZ: z\n };\n const bottomLeft = unproject([0, height], unprojectOps);\n const bottomRight = unproject([width, height], unprojectOps);\n let topLeft;\n let topRight;\n const halfFov = viewport.fovy ? 0.5 * viewport.fovy * DEGREES_TO_RADIANS : Math.atan(0.5 / viewport.altitude);\n const angleToGround = (90 - viewport.pitch) * DEGREES_TO_RADIANS;\n\n if (halfFov > angleToGround - 0.01) {\n topLeft = unprojectOnFarPlane(viewport, 0, z);\n topRight = unprojectOnFarPlane(viewport, width, z);\n } else {\n topLeft = unproject([0, 0], unprojectOps);\n topRight = unproject([width, 0], unprojectOps);\n }\n\n return [bottomLeft, bottomRight, topRight, topLeft];\n}\n\nfunction unprojectOnFarPlane(viewport, x, targetZ) {\n const {\n pixelUnprojectionMatrix\n } = viewport;\n const coord0 = transformVector(pixelUnprojectionMatrix, [x, 0, 1, 1]);\n const coord1 = transformVector(pixelUnprojectionMatrix, [x, viewport.height, 1, 1]);\n const z = targetZ * viewport.distanceScales.unitsPerMeter[2];\n const t = (z - coord0[2]) / (coord1[2] - coord0[2]);\n const coord = vec2.lerp([], coord0, coord1, t);\n const result = worldToLngLat(coord);\n result.push(targetZ);\n return result;\n}\n//# sourceMappingURL=get-bounds.js.map","import {worldToLngLat} from './web-mercator-utils';\nimport * as vec2 from 'gl-matrix/vec2';\nimport {transformVector} from './math-utils';\nimport type WebMercatorViewport from './web-mercator-viewport';\n\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\n/*\n * Returns the quad at the intersection of the frustum and the given z plane\n * @param {WebMercatorViewport} viewport\n * @param {Number} z - elevation in meters\n */\nexport default function getBounds(viewport: WebMercatorViewport, z: number = 0): number[][] {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const {width, height, unproject} = viewport;\n const unprojectOps = {targetZ: z};\n const bottomLeft = unproject([0, height], unprojectOps);\n const bottomRight = unproject([width, height], unprojectOps);\n let topLeft: number[];\n let topRight: number[];\n\n const halfFov = viewport.fovy\n ? 0.5 * viewport.fovy * DEGREES_TO_RADIANS\n : Math.atan(0.5 / viewport.altitude);\n const angleToGround = (90 - viewport.pitch) * DEGREES_TO_RADIANS;\n // The top plane is parallel to the ground if halfFov == angleToGround\n if (halfFov > angleToGround - 0.01) {\n // intersect with the far plane\n topLeft = unprojectOnFarPlane(viewport, 0, z);\n topRight = unprojectOnFarPlane(viewport, width, z);\n } else {\n // intersect with the top plane\n topLeft = unproject([0, 0], unprojectOps);\n topRight = unproject([width, 0], unprojectOps);\n }\n\n return [bottomLeft, bottomRight, topRight, topLeft];\n}\n\n/*\n * Find a point on the far clipping plane of the viewport\n * @param {WebMercatorViewport} viewport\n * @param {Number} x - projected x in screen space\n * @param {Number} targetZ - the elevation of the point in meters\n */\nfunction unprojectOnFarPlane(viewport: WebMercatorViewport, x: number, targetZ: number): number[] {\n const {pixelUnprojectionMatrix} = viewport;\n const coord0 = transformVector(pixelUnprojectionMatrix, [x, 0, 1, 1]);\n const coord1 = transformVector(pixelUnprojectionMatrix, [x, viewport.height, 1, 1]);\n\n const z = targetZ * viewport.distanceScales.unitsPerMeter[2];\n const t = (z - coord0[2]) / (coord1[2] - coord0[2]);\n const coord = vec2.lerp([], coord0, coord1, t);\n\n const result = worldToLngLat(coord);\n result.push(targetZ);\n return result;\n}\n","import { worldToLngLat } from './web-mercator-utils';\nimport { mod, log2 } from './math-utils';\nconst TILE_SIZE = 512;\nexport default function normalizeViewportProps(props) {\n const {\n width,\n height,\n pitch = 0\n } = props;\n let {\n longitude,\n latitude,\n zoom,\n bearing = 0\n } = props;\n\n if (longitude < -180 || longitude > 180) {\n longitude = mod(longitude + 180, 360) - 180;\n }\n\n if (bearing < -180 || bearing > 180) {\n bearing = mod(bearing + 180, 360) - 180;\n }\n\n const minZoom = log2(height / TILE_SIZE);\n\n if (zoom <= minZoom) {\n zoom = minZoom;\n latitude = 0;\n } else {\n const halfHeightPixels = height / 2 / Math.pow(2, zoom);\n const minLatitude = worldToLngLat([0, halfHeightPixels])[1];\n\n if (latitude < minLatitude) {\n latitude = minLatitude;\n } else {\n const maxLatitude = worldToLngLat([0, TILE_SIZE - halfHeightPixels])[1];\n\n if (latitude > maxLatitude) {\n latitude = maxLatitude;\n }\n }\n }\n\n return {\n width,\n height,\n longitude,\n latitude,\n zoom,\n pitch,\n bearing\n };\n}\n//# sourceMappingURL=normalize-viewport-props.js.map","import {worldToLngLat} from './web-mercator-utils';\nimport {mod, log2} from './math-utils';\n\n// defined by mapbox-gl\nconst TILE_SIZE = 512;\n\n/** Description of viewport */\nexport type ViewportProps = {\n width: number;\n height: number;\n longitude: number;\n latitude: number;\n zoom: number;\n pitch?: number;\n bearing?: number;\n};\n\n/**\n * Apply mathematical constraints to viewport props\n * @param props\n */\n// eslint-disable-next-line complexity\nexport default function normalizeViewportProps(props: ViewportProps): ViewportProps {\n const {width, height, pitch = 0} = props;\n let {longitude, latitude, zoom, bearing = 0} = props;\n\n // Normalize degrees\n if (longitude < -180 || longitude > 180) {\n longitude = mod(longitude + 180, 360) - 180;\n }\n if (bearing < -180 || bearing > 180) {\n bearing = mod(bearing + 180, 360) - 180;\n }\n\n // Constrain zoom and shift center at low zoom levels\n const minZoom = log2(height / TILE_SIZE);\n if (zoom <= minZoom) {\n zoom = minZoom;\n latitude = 0;\n } else {\n // Eliminate white space above and below the map\n const halfHeightPixels = height / 2 / Math.pow(2, zoom);\n const minLatitude = worldToLngLat([0, halfHeightPixels])[1];\n if (latitude < minLatitude) {\n latitude = minLatitude;\n } else {\n const maxLatitude = worldToLngLat([0, TILE_SIZE - halfHeightPixels])[1];\n if (latitude > maxLatitude) {\n latitude = maxLatitude;\n }\n }\n }\n\n return {width, height, longitude, latitude, zoom, pitch, bearing};\n}\n","import { lerp } from './math-utils';\nimport { scaleToZoom, zoomToScale, lngLatToWorld, worldToLngLat } from './web-mercator-utils';\nimport * as vec2 from 'gl-matrix/vec2';\nconst EPSILON = 0.01;\nconst VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom'];\nconst DEFAULT_OPTS = {\n curve: 1.414,\n speed: 1.2\n};\nexport default function flyToViewport(startProps, endProps, t, options) {\n const {\n startZoom,\n startCenterXY,\n uDelta,\n w0,\n u1,\n S,\n rho,\n rho2,\n r0\n } = getFlyToTransitionParams(startProps, endProps, options);\n\n if (u1 < EPSILON) {\n const viewport = {};\n\n for (const key of VIEWPORT_TRANSITION_PROPS) {\n const startValue = startProps[key];\n const endValue = endProps[key];\n viewport[key] = lerp(startValue, endValue, t);\n }\n\n return viewport;\n }\n\n const s = t * S;\n const w = Math.cosh(r0) / Math.cosh(r0 + rho * s);\n const u = w0 * ((Math.cosh(r0) * Math.tanh(r0 + rho * s) - Math.sinh(r0)) / rho2) / u1;\n const scaleIncrement = 1 / w;\n const newZoom = startZoom + scaleToZoom(scaleIncrement);\n const newCenterWorld = vec2.scale([], uDelta, u);\n vec2.add(newCenterWorld, newCenterWorld, startCenterXY);\n const newCenter = worldToLngLat(newCenterWorld);\n return {\n longitude: newCenter[0],\n latitude: newCenter[1],\n zoom: newZoom\n };\n}\nexport function getFlyToDuration(startProps, endProps, options) {\n const opts = { ...DEFAULT_OPTS,\n ...options\n };\n const {\n screenSpeed,\n speed,\n maxDuration\n } = opts;\n const {\n S,\n rho\n } = getFlyToTransitionParams(startProps, endProps, opts);\n const length = 1000 * S;\n let duration;\n\n if (Number.isFinite(screenSpeed)) {\n duration = length / (screenSpeed / rho);\n } else {\n duration = length / speed;\n }\n\n return Number.isFinite(maxDuration) && duration > maxDuration ? 0 : duration;\n}\n\nfunction getFlyToTransitionParams(startProps, endProps, opts) {\n opts = Object.assign({}, DEFAULT_OPTS, opts);\n const rho = opts.curve;\n const startZoom = startProps.zoom;\n const startCenter = [startProps.longitude, startProps.latitude];\n const startScale = zoomToScale(startZoom);\n const endZoom = endProps.zoom;\n const endCenter = [endProps.longitude, endProps.latitude];\n const scale = zoomToScale(endZoom - startZoom);\n const startCenterXY = lngLatToWorld(startCenter);\n const endCenterXY = lngLatToWorld(endCenter);\n const uDelta = vec2.sub([], endCenterXY, startCenterXY);\n const w0 = Math.max(startProps.width, startProps.height);\n const w1 = w0 / scale;\n const u1 = vec2.length(uDelta) * startScale;\n\n const _u1 = Math.max(u1, EPSILON);\n\n const rho2 = rho * rho;\n const b0 = (w1 * w1 - w0 * w0 + rho2 * rho2 * _u1 * _u1) / (2 * w0 * rho2 * _u1);\n const b1 = (w1 * w1 - w0 * w0 - rho2 * rho2 * _u1 * _u1) / (2 * w1 * rho2 * _u1);\n const r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0);\n const r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n const S = (r1 - r0) / rho;\n return {\n startZoom,\n startCenterXY,\n uDelta,\n w0,\n u1,\n S,\n rho,\n rho2,\n r0,\n r1\n };\n}\n//# sourceMappingURL=fly-to-viewport.js.map","import {lerp} from './math-utils';\nimport {scaleToZoom, zoomToScale, lngLatToWorld, worldToLngLat} from './web-mercator-utils';\nimport * as vec2 from 'gl-matrix/vec2';\n\nimport type {ViewportProps} from './normalize-viewport-props';\n\nconst EPSILON = 0.01;\nconst VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom'] as const;\nconst DEFAULT_OPTS = {\n curve: 1.414,\n speed: 1.2\n // screenSpeed and maxDuration are used only if specified\n};\n\nexport type FlytoTransitionOptions = {\n curve?: number;\n speed?: number;\n screenSpeed?: number;\n maxDuration?: number;\n};\n\n/**\n * mapbox-gl-js flyTo : https://www.mapbox.com/mapbox-gl-js/api/#map#flyto.\n * It implements “Smooth and efficient zooming and panning.” algorithm by\n * \"Jarke J. van Wijk and Wim A.A. Nuij\"\n */\nexport default function flyToViewport(\n startProps: ViewportProps,\n endProps: ViewportProps,\n t: number,\n options?: FlytoTransitionOptions\n): {\n longitude: number;\n latitude: number;\n zoom: number;\n} {\n // Equations from above paper are referred where needed.\n\n const {startZoom, startCenterXY, uDelta, w0, u1, S, rho, rho2, r0} = getFlyToTransitionParams(\n startProps,\n endProps,\n options\n );\n\n // If change in center is too small, do linear interpolaiton.\n if (u1 < EPSILON) {\n const viewport = {};\n for (const key of VIEWPORT_TRANSITION_PROPS) {\n const startValue = startProps[key];\n const endValue = endProps[key];\n viewport[key] = lerp(startValue, endValue, t);\n }\n // @ts-expect-error properties are populated dynamically\n return viewport;\n }\n\n const s = t * S;\n\n const w = Math.cosh(r0) / Math.cosh(r0 + rho * s);\n const u = (w0 * ((Math.cosh(r0) * Math.tanh(r0 + rho * s) - Math.sinh(r0)) / rho2)) / u1;\n\n const scaleIncrement = 1 / w; // Using w method for scaling.\n const newZoom = startZoom + scaleToZoom(scaleIncrement);\n\n const newCenterWorld = vec2.scale([], uDelta, u);\n vec2.add(newCenterWorld, newCenterWorld, startCenterXY);\n\n const newCenter = worldToLngLat(newCenterWorld);\n return {\n longitude: newCenter[0],\n latitude: newCenter[1],\n zoom: newZoom\n };\n}\n\n// returns transition duration in milliseconds\nexport function getFlyToDuration(\n startProps: ViewportProps,\n endProps: ViewportProps,\n options?: FlytoTransitionOptions\n): number {\n const opts = {...DEFAULT_OPTS, ...options};\n const {screenSpeed, speed, maxDuration} = opts;\n const {S, rho} = getFlyToTransitionParams(startProps, endProps, opts);\n const length = 1000 * S;\n let duration: number;\n if (Number.isFinite(screenSpeed)) {\n duration = length / (screenSpeed / rho);\n } else {\n duration = length / speed;\n }\n\n return Number.isFinite(maxDuration) && duration > maxDuration ? 0 : duration;\n}\n\n// Private Methods\n\n// Calculate all parameters that are static for given startProps and endProps\nfunction getFlyToTransitionParams(\n startProps: ViewportProps,\n endProps: ViewportProps,\n opts: FlytoTransitionOptions\n): {\n startZoom: number;\n startCenterXY: number[];\n uDelta: number[];\n w0: number;\n u1: number;\n S: number;\n rho: number;\n rho2: number;\n r0: number;\n r1: number;\n} {\n opts = Object.assign({}, DEFAULT_OPTS, opts);\n const rho = opts.curve;\n const startZoom = startProps.zoom;\n const startCenter = [startProps.longitude, startProps.latitude];\n const startScale = zoomToScale(startZoom);\n const endZoom = endProps.zoom;\n const endCenter = [endProps.longitude, endProps.latitude];\n const scale = zoomToScale(endZoom - startZoom);\n\n const startCenterXY = lngLatToWorld(startCenter);\n const endCenterXY = lngLatToWorld(endCenter);\n const uDelta = vec2.sub([] as number[], endCenterXY, startCenterXY);\n\n const w0 = Math.max(startProps.width, startProps.height);\n const w1 = w0 / scale;\n const u1 = vec2.length(uDelta) * startScale;\n // u0 is treated as '0' in Eq (9).\n\n // If u1 is too small, will generate invalid number\n const _u1 = Math.max(u1, EPSILON);\n\n // Implement Equation (9) from above algorithm.\n const rho2 = rho * rho;\n const b0 = (w1 * w1 - w0 * w0 + rho2 * rho2 * _u1 * _u1) / (2 * w0 * rho2 * _u1);\n const b1 = (w1 * w1 - w0 * w0 - rho2 * rho2 * _u1 * _u1) / (2 * w1 * rho2 * _u1);\n const r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0);\n const r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n const S = (r1 - r0) / rho;\n\n return {startZoom, startCenterXY, uDelta, w0, u1, S, rho, rho2, r0, r1};\n}\n","import * as glMatrix from \"./common.js\";\n/**\r\n * 2 Dimensional Vector\r\n * @module vec2\r\n */\n\n/**\r\n * Creates a new, empty vec2\r\n *\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec2 initialized with values from an existing vector\r\n *\r\n * @param {vec2} a vector to clone\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\r\n * Creates a new vec2 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\r\n * Copy the values from one vec2 to another\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the source vector\r\n * @returns {vec2} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\r\n * Set the components of a vec2 to the given values\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @returns {vec2} out\r\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\r\n * Adds two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\r\n * Multiplies two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\r\n * Divides two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to ceil\r\n * @returns {vec2} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to floor\r\n * @returns {vec2} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\r\n * Math.round the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to round\r\n * @returns {vec2} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\r\n * Scales a vec2 by a scalar number\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec2} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\r\n * Adds two vec2's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec2} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec2's\r\n *\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec2's\r\n *\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\r\n * Calculates the length of a vec2\r\n *\r\n * @param {vec2} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\r\n * Calculates the squared length of a vec2\r\n *\r\n * @param {vec2} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\r\n * Negates the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to negate\r\n * @returns {vec2} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to invert\r\n * @returns {vec2} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\r\n * Normalize a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to normalize\r\n * @returns {vec2} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec2's\r\n *\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\r\n * Computes the cross product of two vec2's\r\n * Note that the cross product must by definition produce a 3D vector\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec2} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec2} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat2} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat2d\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat2d} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat3\r\n * 3rd vector component is implicitly '1'\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat3} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat4\r\n * 3rd vector component is implicitly '0'\r\n * 4th vector component is implicitly '1'\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat4} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\r\n * Rotate a 2D vector\r\n * @param {vec2} out The receiving vec2\r\n * @param {vec2} a The vec2 point to rotate\r\n * @param {vec2} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec2} out\r\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\r\n * Get the angle between two 2D vectors\r\n * @param {vec2} a The first operand\r\n * @param {vec2} b The second operand\r\n * @returns {Number} The angle in radians\r\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\r\n * Set the components of a vec2 to zero\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @returns {vec2} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {vec2} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\r\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\r\n *\r\n * @param {vec2} a The first vector.\r\n * @param {vec2} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {vec2} a The first vector.\r\n * @param {vec2} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\r\n * Alias for {@link vec2.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec2.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec2.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec2.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec2.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec2.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec2.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec2s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\n/**\r\n * 3 Dimensional Vector\r\n * @module vec3\r\n */\n\n/**\r\n * Creates a new, empty vec3\r\n *\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec3 initialized with values from an existing vector\r\n *\r\n * @param {vec3} a vector to clone\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\r\n * Calculates the length of a vec3\r\n *\r\n * @param {vec3} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\r\n * Creates a new vec3 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\r\n * Copy the values from one vec3 to another\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the source vector\r\n * @returns {vec3} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\r\n * Set the components of a vec3 to the given values\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @returns {vec3} out\r\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\r\n * Adds two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\r\n * Multiplies two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\r\n * Divides two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to ceil\r\n * @returns {vec3} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to floor\r\n * @returns {vec3} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\r\n * Math.round the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to round\r\n * @returns {vec3} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\r\n * Scales a vec3 by a scalar number\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec3} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\r\n * Adds two vec3's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec3} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec3's\r\n *\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec3's\r\n *\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\r\n * Calculates the squared length of a vec3\r\n *\r\n * @param {vec3} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\r\n * Negates the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to negate\r\n * @returns {vec3} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to invert\r\n * @returns {vec3} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\r\n * Normalize a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to normalize\r\n * @returns {vec3} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec3's\r\n *\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\r\n * Computes the cross product of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\r\n * Performs a hermite interpolation with two control points\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {vec3} c the third operand\r\n * @param {vec3} d the fourth operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\r\n * Performs a bezier interpolation with two control points\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {vec3} c the third operand\r\n * @param {vec3} d the fourth operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec3} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\r\n * Transforms the vec3 with a mat4.\r\n * 4th vector component is implicitly '1'\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to transform\r\n * @param {mat4} m matrix to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\r\n * Transforms the vec3 with a mat3.\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to transform\r\n * @param {mat3} m the 3x3 matrix to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\r\n * Transforms the vec3 with a quat\r\n * Can also be used for dual quaternions. (Multiply it with the real part)\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to transform\r\n * @param {quat} q quaternion to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\r\n * Rotate a 3D vector around the x-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {vec3} a The vec3 point to rotate\r\n * @param {vec3} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec3} out\r\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Rotate a 3D vector around the y-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {vec3} a The vec3 point to rotate\r\n * @param {vec3} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec3} out\r\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Rotate a 3D vector around the z-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {vec3} a The vec3 point to rotate\r\n * @param {vec3} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec3} out\r\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Get the angle between two 3D vectors\r\n * @param {vec3} a The first operand\r\n * @param {vec3} b The second operand\r\n * @returns {Number} The angle in radians\r\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\r\n * Set the components of a vec3 to zero\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @returns {vec3} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {vec3} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\r\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {vec3} a The first vector.\r\n * @param {vec3} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {vec3} a The first vector.\r\n * @param {vec3} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\r\n * Alias for {@link vec3.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec3.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec3.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec3.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec3.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec3.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec3.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec3s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { COMPONENT_SYMBOL, PROP_TYPES_SYMBOL, ASYNC_ORIGINAL_SYMBOL, ASYNC_RESOLVED_SYMBOL, ASYNC_DEFAULTS_SYMBOL } from './constants';\nimport { createProps } from './create-props';\nlet counter = 0;\nexport default class Component {\n constructor(...propObjects) {\n _defineProperty(this, \"id\", void 0);\n\n _defineProperty(this, \"props\", void 0);\n\n _defineProperty(this, \"count\", void 0);\n\n this.props = createProps(this, propObjects);\n this.id = this.props.id;\n this.count = counter++;\n }\n\n clone(newProps) {\n const {\n props\n } = this;\n const asyncProps = {};\n\n for (const key in props[ASYNC_DEFAULTS_SYMBOL]) {\n if (key in props[ASYNC_RESOLVED_SYMBOL]) {\n asyncProps[key] = props[ASYNC_RESOLVED_SYMBOL][key];\n } else if (key in props[ASYNC_ORIGINAL_SYMBOL]) {\n asyncProps[key] = props[ASYNC_ORIGINAL_SYMBOL][key];\n }\n }\n\n return new this.constructor({ ...props,\n ...asyncProps,\n ...newProps\n });\n }\n\n}\n\n_defineProperty(Component, \"componentName\", 'Component');\n\n_defineProperty(Component, \"defaultProps\", {});\n//# sourceMappingURL=component.js.map","import {\n COMPONENT_SYMBOL,\n PROP_TYPES_SYMBOL,\n ASYNC_ORIGINAL_SYMBOL,\n ASYNC_RESOLVED_SYMBOL,\n ASYNC_DEFAULTS_SYMBOL\n} from './constants';\nimport {PropType} from './prop-types';\nimport {createProps} from './create-props';\n\nlet counter = 0;\n\nexport type StatefulComponentProps = PropsT & {\n id: string;\n [COMPONENT_SYMBOL]: Component;\n [PROP_TYPES_SYMBOL]: Record;\n [ASYNC_DEFAULTS_SYMBOL]: Partial;\n [ASYNC_ORIGINAL_SYMBOL]: Partial;\n [ASYNC_RESOLVED_SYMBOL]: Partial;\n};\n\nexport default class Component {\n static componentName: string = 'Component';\n static defaultProps: Readonly<{}> = {};\n\n id: string;\n props: StatefulComponentProps;\n count: number;\n\n constructor(...propObjects: Partial[]) {\n // Merge supplied props with default props and freeze them.\n /* eslint-disable prefer-spread */\n this.props = createProps(this, propObjects);\n /* eslint-enable prefer-spread */\n\n this.id = this.props.id; // The layer's id, used for matching with layers from last render cycle\n this.count = counter++; // Keep track of how many layer instances you are generating\n }\n\n // clone this layer with modified props\n clone(newProps: Partial) {\n const {props} = this;\n\n // Async props cannot be copied with Object.assign, copy them separately\n const asyncProps: Partial = {};\n\n // See async props definition in create-props.js\n for (const key in props[ASYNC_DEFAULTS_SYMBOL]) {\n if (key in props[ASYNC_RESOLVED_SYMBOL]) {\n asyncProps[key] = props[ASYNC_RESOLVED_SYMBOL][key];\n } else if (key in props[ASYNC_ORIGINAL_SYMBOL]) {\n asyncProps[key] = props[ASYNC_ORIGINAL_SYMBOL][key];\n }\n }\n\n // Some custom layer implementation may not support multiple arguments in the constructor\n // @ts-ignore\n return new this.constructor({...props, ...asyncProps, ...newProps});\n }\n}\n","import log from '../utils/log';\nimport { isAsyncIterable } from '../utils/iterable-utils';\nimport { parsePropTypes } from './prop-types';\nimport { COMPONENT_SYMBOL, PROP_TYPES_SYMBOL, DEPRECATED_PROPS_SYMBOL, ASYNC_ORIGINAL_SYMBOL, ASYNC_RESOLVED_SYMBOL, ASYNC_DEFAULTS_SYMBOL } from './constants';\nexport function createProps(component, propObjects) {\n let extensions;\n\n for (let i = propObjects.length - 1; i >= 0; i--) {\n const props = propObjects[i];\n\n if ('extensions' in props) {\n extensions = props.extensions;\n }\n }\n\n const propsPrototype = getPropsPrototype(component.constructor, extensions);\n const propsInstance = Object.create(propsPrototype);\n propsInstance[COMPONENT_SYMBOL] = component;\n propsInstance[ASYNC_ORIGINAL_SYMBOL] = {};\n propsInstance[ASYNC_RESOLVED_SYMBOL] = {};\n\n for (let i = 0; i < propObjects.length; ++i) {\n const props = propObjects[i];\n\n for (const key in props) {\n propsInstance[key] = props[key];\n }\n }\n\n Object.freeze(propsInstance);\n return propsInstance;\n}\nconst MergedDefaultPropsCacheKey = '_mergedDefaultProps';\n\nfunction getPropsPrototype(componentClass, extensions) {\n let cacheKey = MergedDefaultPropsCacheKey;\n\n if (extensions) {\n for (const extension of extensions) {\n const ExtensionClass = extension.constructor;\n\n if (ExtensionClass) {\n cacheKey += \":\".concat(ExtensionClass.extensionName || ExtensionClass.name);\n }\n }\n }\n\n const defaultProps = getOwnProperty(componentClass, cacheKey);\n\n if (!defaultProps) {\n return componentClass[cacheKey] = createPropsPrototypeAndTypes(componentClass, extensions || []);\n }\n\n return defaultProps;\n}\n\nfunction createPropsPrototypeAndTypes(componentClass, extensions) {\n const parent = componentClass.prototype;\n\n if (!parent) {\n return null;\n }\n\n const parentClass = Object.getPrototypeOf(componentClass);\n const parentDefaultProps = getPropsPrototype(parentClass);\n const componentDefaultProps = getOwnProperty(componentClass, 'defaultProps') || {};\n const componentPropDefs = parsePropTypes(componentDefaultProps);\n const defaultProps = Object.assign(Object.create(null), parentDefaultProps, componentPropDefs.defaultProps);\n const propTypes = Object.assign(Object.create(null), parentDefaultProps === null || parentDefaultProps === void 0 ? void 0 : parentDefaultProps[PROP_TYPES_SYMBOL], componentPropDefs.propTypes);\n const deprecatedProps = Object.assign(Object.create(null), parentDefaultProps === null || parentDefaultProps === void 0 ? void 0 : parentDefaultProps[DEPRECATED_PROPS_SYMBOL], componentPropDefs.deprecatedProps);\n\n for (const extension of extensions) {\n const extensionDefaultProps = getPropsPrototype(extension.constructor);\n\n if (extensionDefaultProps) {\n Object.assign(defaultProps, extensionDefaultProps);\n Object.assign(propTypes, extensionDefaultProps[PROP_TYPES_SYMBOL]);\n Object.assign(deprecatedProps, extensionDefaultProps[DEPRECATED_PROPS_SYMBOL]);\n }\n }\n\n createPropsPrototype(defaultProps, componentClass);\n addAsyncPropsToPropPrototype(defaultProps, propTypes);\n addDeprecatedPropsToPropPrototype(defaultProps, deprecatedProps);\n defaultProps[PROP_TYPES_SYMBOL] = propTypes;\n defaultProps[DEPRECATED_PROPS_SYMBOL] = deprecatedProps;\n\n if (extensions.length === 0 && !hasOwnProperty(componentClass, '_propTypes')) {\n componentClass._propTypes = propTypes;\n }\n\n return defaultProps;\n}\n\nfunction createPropsPrototype(defaultProps, componentClass) {\n const id = getComponentName(componentClass);\n Object.defineProperties(defaultProps, {\n id: {\n writable: true,\n value: id\n }\n });\n}\n\nfunction addDeprecatedPropsToPropPrototype(defaultProps, deprecatedProps) {\n for (const propName in deprecatedProps) {\n Object.defineProperty(defaultProps, propName, {\n enumerable: false,\n\n set(newValue) {\n const nameStr = \"\".concat(this.id, \": \").concat(propName);\n\n for (const newPropName of deprecatedProps[propName]) {\n if (!hasOwnProperty(this, newPropName)) {\n this[newPropName] = newValue;\n }\n }\n\n log.deprecated(nameStr, deprecatedProps[propName].join('/'))();\n }\n\n });\n }\n}\n\nfunction addAsyncPropsToPropPrototype(defaultProps, propTypes) {\n const defaultValues = {};\n const descriptors = {};\n\n for (const propName in propTypes) {\n const propType = propTypes[propName];\n const {\n name,\n value\n } = propType;\n\n if (propType.async) {\n defaultValues[name] = value;\n descriptors[name] = getDescriptorForAsyncProp(name);\n }\n }\n\n defaultProps[ASYNC_DEFAULTS_SYMBOL] = defaultValues;\n defaultProps[ASYNC_ORIGINAL_SYMBOL] = {};\n Object.defineProperties(defaultProps, descriptors);\n}\n\nfunction getDescriptorForAsyncProp(name) {\n return {\n enumerable: true,\n\n set(newValue) {\n if (typeof newValue === 'string' || newValue instanceof Promise || isAsyncIterable(newValue)) {\n this[ASYNC_ORIGINAL_SYMBOL][name] = newValue;\n } else {\n this[ASYNC_RESOLVED_SYMBOL][name] = newValue;\n }\n },\n\n get() {\n if (this[ASYNC_RESOLVED_SYMBOL]) {\n if (name in this[ASYNC_RESOLVED_SYMBOL]) {\n const value = this[ASYNC_RESOLVED_SYMBOL][name];\n return value || this[ASYNC_DEFAULTS_SYMBOL][name];\n }\n\n if (name in this[ASYNC_ORIGINAL_SYMBOL]) {\n const state = this[COMPONENT_SYMBOL] && this[COMPONENT_SYMBOL].internalState;\n\n if (state && state.hasAsyncProp(name)) {\n return state.getAsyncProp(name) || this[ASYNC_DEFAULTS_SYMBOL][name];\n }\n }\n }\n\n return this[ASYNC_DEFAULTS_SYMBOL][name];\n }\n\n };\n}\n\nfunction hasOwnProperty(object, prop) {\n return Object.prototype.hasOwnProperty.call(object, prop);\n}\n\nfunction getOwnProperty(object, prop) {\n return hasOwnProperty(object, prop) && object[prop];\n}\n\nfunction getComponentName(componentClass) {\n const componentName = componentClass.componentName;\n\n if (!componentName) {\n log.warn(\"\".concat(componentClass.name, \".componentName not specified\"))();\n }\n\n return componentName || componentClass.name;\n}\n//# sourceMappingURL=create-props.js.map","import log from '../utils/log';\nimport {isAsyncIterable} from '../utils/iterable-utils';\nimport {parsePropTypes} from './prop-types';\nimport {\n COMPONENT_SYMBOL,\n PROP_TYPES_SYMBOL,\n DEPRECATED_PROPS_SYMBOL,\n ASYNC_ORIGINAL_SYMBOL,\n ASYNC_RESOLVED_SYMBOL,\n ASYNC_DEFAULTS_SYMBOL\n} from './constants';\nimport {StatefulComponentProps} from './component';\nimport type Component from './component';\n\n// Create a property object\nexport function createProps(\n component: Component,\n propObjects: Partial[]\n): StatefulComponentProps {\n // Resolve extension value\n let extensions: any[] | undefined;\n for (let i = propObjects.length - 1; i >= 0; i--) {\n const props = propObjects[i];\n if ('extensions' in props) {\n // @ts-expect-error TS(2339) extensions not defined\n extensions = props.extensions;\n }\n }\n\n // Create a new prop object with empty default props object\n const propsPrototype = getPropsPrototype(component.constructor, extensions);\n // The true default props object will be found later\n const propsInstance = Object.create(propsPrototype);\n\n // Props need a back pointer to the owning component\n propsInstance[COMPONENT_SYMBOL] = component;\n // The supplied (original) values for those async props that are set to url strings or Promises.\n // In this case, the actual (i.e. resolved) values are looked up from component.internalState\n propsInstance[ASYNC_ORIGINAL_SYMBOL] = {};\n // Note: the actual (resolved) values for props that are NOT set to urls or Promises.\n // in this case the values are served directly from this map\n propsInstance[ASYNC_RESOLVED_SYMBOL] = {};\n\n // \"Copy\" all sync props\n for (let i = 0; i < propObjects.length; ++i) {\n const props = propObjects[i];\n // Do not use Object.assign here to avoid Symbols in props overwriting our private fields\n // This might happen if one of the arguments is another props instance\n for (const key in props) {\n propsInstance[key] = props[key];\n }\n }\n\n // Props must be immutable\n Object.freeze(propsInstance);\n\n return propsInstance;\n}\n\nconst MergedDefaultPropsCacheKey = '_mergedDefaultProps';\n\n// Return precalculated defaultProps and propType objects if available\n// build them if needed\nfunction getPropsPrototype(componentClass, extensions?: any[]) {\n // A string that uniquely identifies the extensions involved\n let cacheKey = MergedDefaultPropsCacheKey;\n if (extensions) {\n for (const extension of extensions) {\n const ExtensionClass = extension.constructor;\n if (ExtensionClass) {\n cacheKey += `:${ExtensionClass.extensionName || ExtensionClass.name}`;\n }\n }\n }\n\n const defaultProps = getOwnProperty(componentClass, cacheKey);\n if (!defaultProps) {\n return (componentClass[cacheKey] = createPropsPrototypeAndTypes(\n componentClass,\n extensions || []\n ));\n }\n return defaultProps;\n}\n\n// Build defaultProps and propType objects by walking component prototype chain\nfunction createPropsPrototypeAndTypes(\n componentClass,\n extensions: any[]\n): Record | null {\n const parent = componentClass.prototype;\n if (!parent) {\n return null;\n }\n\n const parentClass = Object.getPrototypeOf(componentClass);\n const parentDefaultProps = getPropsPrototype(parentClass);\n\n // Parse propTypes from Component.defaultProps\n const componentDefaultProps = getOwnProperty(componentClass, 'defaultProps') || {};\n const componentPropDefs = parsePropTypes(componentDefaultProps);\n\n // Merged default props object. Order: parent, self, extensions\n const defaultProps: any = Object.assign(\n Object.create(null),\n parentDefaultProps,\n componentPropDefs.defaultProps\n );\n // Merged prop type definitions. Order: parent, self, extensions\n const propTypes = Object.assign(\n Object.create(null),\n parentDefaultProps?.[PROP_TYPES_SYMBOL],\n componentPropDefs.propTypes\n );\n // Merged deprecation list. Order: parent, self, extensions\n const deprecatedProps = Object.assign(\n Object.create(null),\n parentDefaultProps?.[DEPRECATED_PROPS_SYMBOL],\n componentPropDefs.deprecatedProps\n );\n\n for (const extension of extensions) {\n const extensionDefaultProps = getPropsPrototype(extension.constructor);\n if (extensionDefaultProps) {\n Object.assign(defaultProps, extensionDefaultProps);\n Object.assign(propTypes, extensionDefaultProps[PROP_TYPES_SYMBOL]);\n Object.assign(deprecatedProps, extensionDefaultProps[DEPRECATED_PROPS_SYMBOL]);\n }\n }\n\n // Create any necessary property descriptors and create the default prop object\n // Assign merged default props\n createPropsPrototype(defaultProps, componentClass);\n\n // Add getters/setters for async props\n addAsyncPropsToPropPrototype(defaultProps, propTypes);\n\n // Add setters for deprecated props\n addDeprecatedPropsToPropPrototype(defaultProps, deprecatedProps);\n\n // Store the precalculated props\n defaultProps[PROP_TYPES_SYMBOL] = propTypes;\n defaultProps[DEPRECATED_PROPS_SYMBOL] = deprecatedProps;\n\n // Backwards compatibility\n // TODO: remove access of hidden property from the rest of the code base\n if (extensions.length === 0 && !hasOwnProperty(componentClass, '_propTypes')) {\n componentClass._propTypes = propTypes;\n }\n return defaultProps;\n}\n\n// Builds a pre-merged default props object that component props can inherit from\nfunction createPropsPrototype(defaultProps, componentClass) {\n // Avoid freezing `id` prop\n const id = getComponentName(componentClass);\n\n Object.defineProperties(defaultProps, {\n // `id` is treated specially because layer might need to override it\n id: {\n writable: true,\n value: id\n }\n });\n}\n\nfunction addDeprecatedPropsToPropPrototype(defaultProps, deprecatedProps) {\n for (const propName in deprecatedProps) {\n /* eslint-disable accessor-pairs */\n Object.defineProperty(defaultProps, propName, {\n enumerable: false,\n set(newValue) {\n const nameStr = `${this.id}: ${propName}`;\n\n for (const newPropName of deprecatedProps[propName]) {\n if (!hasOwnProperty(this, newPropName)) {\n this[newPropName] = newValue;\n }\n }\n\n log.deprecated(nameStr, deprecatedProps[propName].join('/'))();\n }\n });\n /* eslint-enable accessor-pairs */\n }\n}\n\n// Create descriptors for overridable props\nfunction addAsyncPropsToPropPrototype(defaultProps, propTypes) {\n const defaultValues = {};\n\n const descriptors = {};\n\n // Move async props into shadow values\n for (const propName in propTypes) {\n const propType = propTypes[propName];\n const {name, value} = propType;\n\n // Note: async is ES7 keyword, can't destructure\n if (propType.async) {\n defaultValues[name] = value;\n descriptors[name] = getDescriptorForAsyncProp(name);\n }\n }\n\n // Default \"resolved\" values for async props, returned if value not yet resolved/set.\n defaultProps[ASYNC_DEFAULTS_SYMBOL] = defaultValues;\n // Shadowed object, just to make sure \"early indexing\" into the instance does not fail\n defaultProps[ASYNC_ORIGINAL_SYMBOL] = {};\n\n Object.defineProperties(defaultProps, descriptors);\n}\n\n// Helper: Configures getter and setter for one async prop\nfunction getDescriptorForAsyncProp(name) {\n return {\n enumerable: true,\n // Save the provided value for async props in a special map\n set(newValue) {\n if (\n typeof newValue === 'string' ||\n newValue instanceof Promise ||\n isAsyncIterable(newValue)\n ) {\n this[ASYNC_ORIGINAL_SYMBOL][name] = newValue;\n } else {\n this[ASYNC_RESOLVED_SYMBOL][name] = newValue;\n }\n },\n // Only the component's state knows the true value of async prop\n get() {\n if (this[ASYNC_RESOLVED_SYMBOL]) {\n // Prop value isn't async, so just return it\n if (name in this[ASYNC_RESOLVED_SYMBOL]) {\n const value = this[ASYNC_RESOLVED_SYMBOL][name];\n\n return value || this[ASYNC_DEFAULTS_SYMBOL][name];\n }\n\n if (name in this[ASYNC_ORIGINAL_SYMBOL]) {\n // It's an async prop value: look into component state\n const state = this[COMPONENT_SYMBOL] && this[COMPONENT_SYMBOL].internalState;\n if (state && state.hasAsyncProp(name)) {\n return state.getAsyncProp(name) || this[ASYNC_DEFAULTS_SYMBOL][name];\n }\n }\n }\n\n // the prop is not supplied, or\n // component not yet initialized/matched, return the component's default value for the prop\n return this[ASYNC_DEFAULTS_SYMBOL][name];\n }\n };\n}\n\n// HELPER METHODS\n\nfunction hasOwnProperty(object, prop) {\n return Object.prototype.hasOwnProperty.call(object, prop);\n}\n\n// Constructors have their super class constructors as prototypes\nfunction getOwnProperty(object, prop) {\n return hasOwnProperty(object, prop) && object[prop];\n}\n\nfunction getComponentName(componentClass) {\n const componentName = componentClass.componentName;\n if (!componentName) {\n log.warn(`${componentClass.name}.componentName not specified`)();\n }\n return componentName || componentClass.name;\n}\n","import { createTexture, destroyTexture } from '../utils/texture';\nimport { deepEqual } from '../utils/deep-equal';\nconst TYPE_DEFINITIONS = {\n boolean: {\n validate(value, propType) {\n return true;\n },\n\n equal(value1, value2, propType) {\n return Boolean(value1) === Boolean(value2);\n }\n\n },\n number: {\n validate(value, propType) {\n return Number.isFinite(value) && (!('max' in propType) || value <= propType.max) && (!('min' in propType) || value >= propType.min);\n }\n\n },\n color: {\n validate(value, propType) {\n return propType.optional && !value || isArray(value) && (value.length === 3 || value.length === 4);\n },\n\n equal(value1, value2, propType) {\n return deepEqual(value1, value2, 1);\n }\n\n },\n accessor: {\n validate(value, propType) {\n const valueType = getTypeOf(value);\n return valueType === 'function' || valueType === getTypeOf(propType.value);\n },\n\n equal(value1, value2, propType) {\n if (typeof value2 === 'function') {\n return true;\n }\n\n return deepEqual(value1, value2, 1);\n }\n\n },\n array: {\n validate(value, propType) {\n return propType.optional && !value || isArray(value);\n },\n\n equal(value1, value2, propType) {\n const {\n compare\n } = propType;\n const depth = Number.isInteger(compare) ? compare : compare ? 1 : 0;\n return compare ? deepEqual(value1, value2, depth) : value1 === value2;\n }\n\n },\n object: {\n equal(value1, value2, propType) {\n if (propType.ignore) {\n return true;\n }\n\n const {\n compare\n } = propType;\n const depth = Number.isInteger(compare) ? compare : compare ? 1 : 0;\n return compare ? deepEqual(value1, value2, depth) : value1 === value2;\n }\n\n },\n function: {\n validate(value, propType) {\n return propType.optional && !value || typeof value === 'function';\n },\n\n equal(value1, value2, propType) {\n const shouldIgnore = !propType.compare && propType.ignore !== false;\n return shouldIgnore || value1 === value2;\n }\n\n },\n data: {\n transform: (value, propType, component) => {\n const {\n dataTransform\n } = component.props;\n return dataTransform && value ? dataTransform(value) : value;\n }\n },\n image: {\n transform: (value, propType, component) => {\n const context = component.context;\n\n if (!context || !context.gl) {\n return null;\n }\n\n return createTexture(component.id, context.gl, value, { ...propType.parameters,\n ...component.props.textureParameters\n });\n },\n release: (value, propType, component) => {\n destroyTexture(component.id, value);\n }\n }\n};\nexport function parsePropTypes(propDefs) {\n const propTypes = {};\n const defaultProps = {};\n const deprecatedProps = {};\n\n for (const [propName, propDef] of Object.entries(propDefs)) {\n const deprecated = propDef === null || propDef === void 0 ? void 0 : propDef.deprecatedFor;\n\n if (deprecated) {\n deprecatedProps[propName] = Array.isArray(deprecated) ? deprecated : [deprecated];\n } else {\n const propType = parsePropType(propName, propDef);\n propTypes[propName] = propType;\n defaultProps[propName] = propType.value;\n }\n }\n\n return {\n propTypes,\n defaultProps,\n deprecatedProps\n };\n}\n\nfunction parsePropType(name, propDef) {\n switch (getTypeOf(propDef)) {\n case 'object':\n return normalizePropDefinition(name, propDef);\n\n case 'array':\n return normalizePropDefinition(name, {\n type: 'array',\n value: propDef,\n compare: false\n });\n\n case 'boolean':\n return normalizePropDefinition(name, {\n type: 'boolean',\n value: propDef\n });\n\n case 'number':\n return normalizePropDefinition(name, {\n type: 'number',\n value: propDef\n });\n\n case 'function':\n return normalizePropDefinition(name, {\n type: 'function',\n value: propDef,\n compare: true\n });\n\n default:\n return {\n name,\n type: 'unknown',\n value: propDef\n };\n }\n}\n\nfunction normalizePropDefinition(name, propDef) {\n if (!('type' in propDef)) {\n if (!('value' in propDef)) {\n return {\n name,\n type: 'object',\n value: propDef\n };\n }\n\n return {\n name,\n type: getTypeOf(propDef.value),\n ...propDef\n };\n }\n\n return {\n name,\n ...TYPE_DEFINITIONS[propDef.type],\n ...propDef\n };\n}\n\nfunction isArray(value) {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n}\n\nfunction getTypeOf(value) {\n if (isArray(value)) {\n return 'array';\n }\n\n if (value === null) {\n return 'null';\n }\n\n return typeof value;\n}\n//# sourceMappingURL=prop-types.js.map","import {createTexture, destroyTexture} from '../utils/texture';\nimport {deepEqual} from '../utils/deep-equal';\n\nimport type Component from './component';\nimport type {Color, Texture} from '../types/layer-props';\nimport type Layer from '../lib/layer';\n\ntype BasePropType = {\n value: ValueT;\n async?: boolean;\n validate?: (value: any, propType: PropType) => boolean;\n equal?: (value1: ValueT, value2: ValueT, propType: PropType) => boolean;\n};\n\n/**\n * Normalized prop type definition\n */\nexport type PropType = BasePropType & {\n type: string;\n name: string;\n transform?: (value: any, propType: PropType, component: Component) => any;\n release?: (value: any, propType: PropType, component: Component) => void;\n};\n\ntype DefaultProp =\n | T\n | DeprecatedProp\n | BooleanPropType\n | NumberPropType\n | ColorPropType\n | ImagePropType\n | DataPropType\n | ArrayPropType\n | ObjectPropType\n | AccessorPropType\n | FunctionPropType;\n\nexport type DefaultProps = {\n [propName in keyof PropsT]?: DefaultProp[propName]>;\n};\n\ntype BooleanPropType = BasePropType & {\n type: 'boolean';\n};\ntype NumberPropType = BasePropType & {\n type: 'number';\n min?: number;\n max?: number;\n};\ntype ColorPropType = BasePropType & {\n type: 'color';\n optional?: boolean;\n};\ntype ArrayPropType = BasePropType & {\n type: 'array';\n optional?: boolean;\n /** Ignore change in the prop value.\n * @default false\n */\n ignore?: boolean;\n /** Deep-compare two prop values. Only used if `ignore: false`.\n * When a number is supplied, used as the depth of deep-comparison. 0 is equivalent to shallow comparison, -1 is infinite depth\n * When a boolean is supplied, `true` is equivalent to `1` (shallow compare all child fields)\n * @default false\n */\n compare?: boolean | number;\n};\ntype AccessorPropType = BasePropType & {\n type: 'accessor';\n};\ntype FunctionPropType = BasePropType & {\n type: 'function';\n optional?: boolean;\n /** @deprecated use `ignore` instead */\n compare?: boolean;\n /** Ignore change in the prop value.\n * @default true\n */\n ignore?: boolean;\n};\ntype DataPropType = BasePropType & {\n type: 'data';\n};\ntype ImagePropType = BasePropType & {\n type: 'image';\n parameters?: Record;\n};\ntype ObjectPropType = BasePropType & {\n type: 'object';\n optional?: boolean;\n /** Ignore change in the prop value.\n * @default false\n */\n ignore?: boolean;\n /** Deep-compare two prop values. Only used if `ignore: false`.\n * When a number is supplied, used as the depth of deep-comparison. 0 is equivalent to shallow comparison, -1 is infinite depth\n * When a boolean is supplied, `true` is equivalent to `1` (shallow compare all child fields)\n * @default false\n */\n compare?: boolean | number;\n};\ntype DeprecatedProp = {\n deprecatedFor?: string | string[];\n};\ntype PropTypeDef =\n | DeprecatedProp\n | boolean\n | BooleanPropType\n | number\n | NumberPropType\n | string\n | DataPropType\n | number[]\n | ColorPropType\n | ArrayPropType\n | AccessorPropType\n | FunctionPropType\n | ImagePropType\n | ObjectPropType\n | null;\n\nconst TYPE_DEFINITIONS = {\n boolean: {\n validate(value, propType: BooleanPropType) {\n return true;\n },\n equal(value1, value2, propType: BooleanPropType) {\n return Boolean(value1) === Boolean(value2);\n }\n },\n number: {\n validate(value, propType: NumberPropType) {\n return (\n Number.isFinite(value) &&\n (!('max' in propType) || value <= propType.max!) &&\n (!('min' in propType) || value >= propType.min!)\n );\n }\n },\n color: {\n validate(value, propType: ColorPropType) {\n return (\n (propType.optional && !value) ||\n (isArray(value) && (value.length === 3 || value.length === 4))\n );\n },\n equal(value1, value2, propType: ColorPropType) {\n return deepEqual(value1, value2, 1);\n }\n },\n accessor: {\n validate(value, propType: AccessorPropType) {\n const valueType = getTypeOf(value);\n return valueType === 'function' || valueType === getTypeOf(propType.value);\n },\n equal(value1, value2, propType: AccessorPropType) {\n if (typeof value2 === 'function') {\n return true;\n }\n return deepEqual(value1, value2, 1);\n }\n },\n array: {\n validate(value, propType: ArrayPropType) {\n return (propType.optional && !value) || isArray(value);\n },\n equal(value1, value2, propType: ArrayPropType) {\n const {compare} = propType;\n const depth = Number.isInteger(compare as unknown) ? (compare as number) : compare ? 1 : 0;\n return compare ? deepEqual(value1, value2, depth) : value1 === value2;\n }\n },\n object: {\n equal(value1, value2, propType: ObjectPropType) {\n if (propType.ignore) {\n return true;\n }\n const {compare} = propType;\n const depth = Number.isInteger(compare as unknown) ? (compare as number) : compare ? 1 : 0;\n return compare ? deepEqual(value1, value2, depth) : value1 === value2;\n }\n },\n function: {\n validate(value, propType: FunctionPropType) {\n return (propType.optional && !value) || typeof value === 'function';\n },\n equal(value1, value2, propType: FunctionPropType) {\n // Backward compatibility - {compare: true} and {ignore: false} are equivalent\n const shouldIgnore = !propType.compare && propType.ignore !== false;\n return shouldIgnore || value1 === value2;\n }\n },\n data: {\n transform: (value, propType: DataPropType, component) => {\n const {dataTransform} = component.props;\n return dataTransform && value ? dataTransform(value) : value;\n }\n },\n image: {\n transform: (value, propType: ImagePropType, component) => {\n const context = (component as Layer).context;\n if (!context || !context.gl) {\n return null;\n }\n return createTexture(component.id, context.gl, value, {\n ...propType.parameters,\n ...component.props.textureParameters\n });\n },\n release: (value, propType: ImagePropType, component) => {\n destroyTexture(component.id, value);\n }\n }\n} as const;\n\nexport function parsePropTypes(propDefs: Record): {\n propTypes: Record;\n defaultProps: Record;\n deprecatedProps: Record;\n} {\n const propTypes = {};\n const defaultProps = {};\n const deprecatedProps = {};\n\n for (const [propName, propDef] of Object.entries(propDefs)) {\n const deprecated = (propDef as DeprecatedProp)?.deprecatedFor;\n if (deprecated) {\n deprecatedProps[propName] = Array.isArray(deprecated) ? deprecated : [deprecated];\n } else {\n const propType = parsePropType(propName, propDef);\n propTypes[propName] = propType;\n defaultProps[propName] = propType.value;\n }\n }\n return {propTypes, defaultProps, deprecatedProps};\n}\n\n// Parses one property definition entry. Either contains:\n// * a valid prop type object ({type, ...})\n// * or just a default value, in which case type and name inference is used\nfunction parsePropType(name: string, propDef: PropTypeDef): PropType {\n switch (getTypeOf(propDef)) {\n case 'object':\n return normalizePropDefinition(name, propDef);\n\n case 'array':\n return normalizePropDefinition(name, {type: 'array', value: propDef, compare: false});\n\n case 'boolean':\n return normalizePropDefinition(name, {type: 'boolean', value: propDef});\n\n case 'number':\n return normalizePropDefinition(name, {type: 'number', value: propDef});\n\n case 'function':\n // return guessFunctionType(name, propDef);\n return normalizePropDefinition(name, {type: 'function', value: propDef, compare: true});\n\n default:\n return {name, type: 'unknown', value: propDef};\n }\n}\n\nfunction normalizePropDefinition(name, propDef): PropType {\n if (!('type' in propDef)) {\n if (!('value' in propDef)) {\n // If no type and value this object is likely the value\n return {name, type: 'object', value: propDef};\n }\n return {name, type: getTypeOf(propDef.value), ...propDef};\n }\n return {name, ...TYPE_DEFINITIONS[propDef.type], ...propDef};\n}\n\nfunction isArray(value: any): boolean {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n}\n\n// improved version of javascript typeof that can distinguish arrays and null values\nfunction getTypeOf(value: any): string {\n if (isArray(value)) {\n return 'array';\n }\n if (value === null) {\n return 'null';\n }\n return typeof value;\n}\n","import { Texture2D } from '@luma.gl/core';\nconst DEFAULT_TEXTURE_PARAMETERS = {\n [10241]: 9987,\n [10240]: 9729,\n [10242]: 33071,\n [10243]: 33071\n};\nconst internalTextures = {};\nexport function createTexture(owner, gl, image, parameters) {\n if (image instanceof Texture2D) {\n return image;\n } else if (image.constructor && image.constructor.name !== 'Object') {\n image = {\n data: image\n };\n }\n\n let specialTextureParameters = null;\n\n if (image.compressed) {\n specialTextureParameters = {\n [10241]: image.data.length > 1 ? 9985 : 9729\n };\n }\n\n const texture = new Texture2D(gl, { ...image,\n parameters: { ...DEFAULT_TEXTURE_PARAMETERS,\n ...specialTextureParameters,\n ...parameters\n }\n });\n internalTextures[texture.id] = owner;\n return texture;\n}\nexport function destroyTexture(owner, texture) {\n if (!texture || !(texture instanceof Texture2D)) {\n return;\n }\n\n if (internalTextures[texture.id] === owner) {\n texture.delete();\n delete internalTextures[texture.id];\n }\n}\n//# sourceMappingURL=texture.js.map","import {Texture2D} from '@luma.gl/core';\nimport GL from '@luma.gl/constants';\n\nconst DEFAULT_TEXTURE_PARAMETERS: Record = {\n [GL.TEXTURE_MIN_FILTER]: GL.LINEAR_MIPMAP_LINEAR,\n [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n};\n\n// Track the textures that are created by us. They need to be released when they are no longer used.\nconst internalTextures: Record = {};\n\nexport function createTexture(\n owner: string,\n gl: WebGLRenderingContext,\n image: any,\n parameters: Record\n): Texture2D | null {\n // image could be one of:\n // - Texture2D\n // - Browser object: Image, ImageData, ImageData, HTMLCanvasElement, HTMLVideoElement, ImageBitmap\n // - Plain object: {width: , height: , data: }\n if (image instanceof Texture2D) {\n return image;\n } else if (image.constructor && image.constructor.name !== 'Object') {\n // Browser object\n image = {data: image};\n }\n\n let specialTextureParameters: Record | null = null;\n if (image.compressed) {\n specialTextureParameters = {\n [GL.TEXTURE_MIN_FILTER]: image.data.length > 1 ? GL.LINEAR_MIPMAP_NEAREST : GL.LINEAR\n };\n }\n\n const texture = new Texture2D(gl, {\n ...image,\n parameters: {\n ...DEFAULT_TEXTURE_PARAMETERS,\n ...specialTextureParameters,\n ...parameters\n }\n });\n // Track this texture\n internalTextures[texture.id] = owner;\n return texture;\n}\n\nexport function destroyTexture(owner: string, texture: Texture2D) {\n if (!texture || !(texture instanceof Texture2D)) {\n return;\n }\n // Only delete the texture if requested by the same layer that created it\n if (internalTextures[texture.id] === owner) {\n texture.delete();\n delete internalTextures[texture.id];\n }\n}\n","export function deepEqual(a, b, depth) {\n if (a === b) {\n return true;\n }\n\n if (!depth || !a || !b) {\n return false;\n }\n\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i], depth - 1)) {\n return false;\n }\n }\n\n return true;\n }\n\n if (Array.isArray(b)) {\n return false;\n }\n\n if (typeof a === 'object' && typeof b === 'object') {\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n\n for (const key of aKeys) {\n if (!b.hasOwnProperty(key)) {\n return false;\n }\n\n if (!deepEqual(a[key], b[key], depth - 1)) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n//# sourceMappingURL=deep-equal.js.map","/**\n * Fast partial deep equal for prop.\n *\n * @param a Prop\n * @param b Prop to compare against `a`\n * @param depth Depth to which to recurse in nested Objects/Arrays. Use 0 (default) for shallow comparison, -1 for infinite depth\n */\n/* eslint-disable complexity */\nexport function deepEqual(a: any, b: any, depth: number): boolean {\n if (a === b) {\n return true;\n }\n if (!depth || !a || !b) {\n return false;\n }\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i], depth - 1)) {\n return false;\n }\n }\n return true;\n }\n if (Array.isArray(b)) {\n return false;\n }\n if (typeof a === 'object' && typeof b === 'object') {\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n for (const key of aKeys) {\n if (!b.hasOwnProperty(key)) {\n return false;\n }\n if (!deepEqual(a[key], b[key], depth - 1)) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport ComponentState from '../lifecycle/component-state';\nexport default class LayerState extends ComponentState {\n constructor({\n attributeManager,\n layer\n }) {\n super(layer);\n\n _defineProperty(this, \"attributeManager\", void 0);\n\n _defineProperty(this, \"needsRedraw\", void 0);\n\n _defineProperty(this, \"needsUpdate\", void 0);\n\n _defineProperty(this, \"subLayers\", void 0);\n\n _defineProperty(this, \"usesPickingColorCache\", void 0);\n\n _defineProperty(this, \"hasPickingBuffer\", void 0);\n\n _defineProperty(this, \"changeFlags\", void 0);\n\n _defineProperty(this, \"viewport\", void 0);\n\n _defineProperty(this, \"uniformTransitions\", void 0);\n\n _defineProperty(this, \"propsInTransition\", void 0);\n\n this.attributeManager = attributeManager;\n this.needsRedraw = true;\n this.needsUpdate = true;\n this.subLayers = null;\n this.usesPickingColorCache = false;\n }\n\n get layer() {\n return this.component;\n }\n\n _fetch(propName, url) {\n const layer = this.layer;\n const fetch = layer === null || layer === void 0 ? void 0 : layer.props.fetch;\n\n if (fetch) {\n return fetch(url, {\n propName,\n layer\n });\n }\n\n return super._fetch(propName, url);\n }\n\n _onResolve(propName, value) {\n const layer = this.layer;\n\n if (layer) {\n const onDataLoad = layer.props.onDataLoad;\n\n if (propName === 'data' && onDataLoad) {\n onDataLoad(value, {\n propName,\n layer\n });\n }\n }\n }\n\n _onError(propName, error) {\n const layer = this.layer;\n\n if (layer) {\n layer.raiseError(error, \"loading \".concat(propName, \" of \").concat(this.layer));\n }\n }\n\n}\n//# sourceMappingURL=layer-state.js.map","import ComponentState from '../lifecycle/component-state';\n\nimport type Layer from './layer';\nimport type AttributeManager from './attribute/attribute-manager';\nimport type Viewport from '../viewports/viewport';\nimport type UniformTransitionManager from './uniform-transition-manager';\n\nexport type ChangeFlags = {\n // Primary changeFlags, can be strings stating reason for change\n dataChanged: string | false | {startRow: number; endRow?: number}[];\n propsChanged: string | false;\n updateTriggersChanged: Record | false;\n extensionsChanged: boolean;\n viewportChanged: boolean;\n stateChanged: boolean;\n\n // Derived changeFlags\n propsOrDataChanged: boolean;\n somethingChanged: boolean;\n};\n\nexport default class LayerState extends ComponentState {\n attributeManager: AttributeManager | null;\n needsRedraw: boolean;\n needsUpdate: boolean;\n /**\n * Sublayers rendered in a previous cycle\n */\n subLayers: Layer[] | null;\n /**\n * If the layer is using the shared instancedPickingColors buffer\n */\n usesPickingColorCache: boolean;\n /**\n * If the layer has picking buffer (pickingColors or instancePickingColors)\n */\n hasPickingBuffer?: boolean;\n /**\n * Dirty flags of the layer's props and state\n */\n changeFlags!: ChangeFlags;\n\n /** The last viewport rendered by this layer */\n viewport?: Viewport;\n\n uniformTransitions!: UniformTransitionManager;\n /** Populated during uniform transition to replace user-supplied values */\n propsInTransition?: LayerT['props'];\n\n constructor({\n attributeManager,\n layer\n }: {\n attributeManager: AttributeManager | null;\n layer: LayerT;\n }) {\n super(layer);\n this.attributeManager = attributeManager;\n this.needsRedraw = true;\n this.needsUpdate = true;\n this.subLayers = null;\n this.usesPickingColorCache = false;\n }\n\n get layer(): LayerT | null {\n return this.component;\n }\n\n /* Override base Component methods with Layer-specific handling */\n\n protected _fetch(propName, url: string) {\n const layer = this.layer;\n const fetch = layer?.props.fetch;\n if (fetch) {\n return fetch(url, {propName, layer});\n }\n return super._fetch(propName, url);\n }\n\n protected _onResolve(propName: string, value: any) {\n const layer = this.layer;\n if (layer) {\n const onDataLoad = layer.props.onDataLoad;\n if (propName === 'data' && onDataLoad) {\n onDataLoad(value, {propName, layer});\n }\n }\n }\n\n protected _onError(propName: string, error: Error) {\n const layer = this.layer;\n if (layer) {\n layer.raiseError(error, `loading ${propName} of ${this.layer}`);\n }\n }\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isAsyncIterable } from '../utils/iterable-utils';\nimport { COMPONENT_SYMBOL, PROP_TYPES_SYMBOL, ASYNC_ORIGINAL_SYMBOL, ASYNC_RESOLVED_SYMBOL, ASYNC_DEFAULTS_SYMBOL } from './constants';\nconst EMPTY_PROPS = Object.freeze({});\nexport default class ComponentState {\n constructor(component) {\n _defineProperty(this, \"component\", void 0);\n\n _defineProperty(this, \"onAsyncPropUpdated\", void 0);\n\n _defineProperty(this, \"asyncProps\", void 0);\n\n _defineProperty(this, \"oldProps\", void 0);\n\n _defineProperty(this, \"oldAsyncProps\", void 0);\n\n this.component = component;\n this.asyncProps = {};\n\n this.onAsyncPropUpdated = () => {};\n\n this.oldProps = null;\n this.oldAsyncProps = null;\n }\n\n finalize() {\n for (const propName in this.asyncProps) {\n const asyncProp = this.asyncProps[propName];\n\n if (asyncProp && asyncProp.type && asyncProp.type.release) {\n asyncProp.type.release(asyncProp.resolvedValue, asyncProp.type, this.component);\n }\n }\n\n this.asyncProps = {};\n this.component = null;\n this.resetOldProps();\n }\n\n getOldProps() {\n return this.oldAsyncProps || this.oldProps || EMPTY_PROPS;\n }\n\n resetOldProps() {\n this.oldAsyncProps = null;\n this.oldProps = this.component ? this.component.props : null;\n }\n\n hasAsyncProp(propName) {\n return propName in this.asyncProps;\n }\n\n getAsyncProp(propName) {\n const asyncProp = this.asyncProps[propName];\n return asyncProp && asyncProp.resolvedValue;\n }\n\n isAsyncPropLoading(propName) {\n if (propName) {\n const asyncProp = this.asyncProps[propName];\n return Boolean(asyncProp && asyncProp.pendingLoadCount > 0 && asyncProp.pendingLoadCount !== asyncProp.resolvedLoadCount);\n }\n\n for (const key in this.asyncProps) {\n if (this.isAsyncPropLoading(key)) {\n return true;\n }\n }\n\n return false;\n }\n\n reloadAsyncProp(propName, value) {\n this._watchPromise(propName, Promise.resolve(value));\n }\n\n setAsyncProps(props) {\n this.component = props[COMPONENT_SYMBOL] || this.component;\n const resolvedValues = props[ASYNC_RESOLVED_SYMBOL] || {};\n const originalValues = props[ASYNC_ORIGINAL_SYMBOL] || props;\n const defaultValues = props[ASYNC_DEFAULTS_SYMBOL] || {};\n\n for (const propName in resolvedValues) {\n const value = resolvedValues[propName];\n\n this._createAsyncPropData(propName, defaultValues[propName]);\n\n this._updateAsyncProp(propName, value);\n\n resolvedValues[propName] = this.getAsyncProp(propName);\n }\n\n for (const propName in originalValues) {\n const value = originalValues[propName];\n\n this._createAsyncPropData(propName, defaultValues[propName]);\n\n this._updateAsyncProp(propName, value);\n }\n }\n\n _fetch(propName, url) {\n return null;\n }\n\n _onResolve(propName, value) {}\n\n _onError(propName, error) {}\n\n _updateAsyncProp(propName, value) {\n if (!this._didAsyncInputValueChange(propName, value)) {\n return;\n }\n\n if (typeof value === 'string') {\n value = this._fetch(propName, value);\n }\n\n if (value instanceof Promise) {\n this._watchPromise(propName, value);\n\n return;\n }\n\n if (isAsyncIterable(value)) {\n this._resolveAsyncIterable(propName, value);\n\n return;\n }\n\n this._setPropValue(propName, value);\n }\n\n _freezeAsyncOldProps() {\n if (!this.oldAsyncProps && this.oldProps) {\n this.oldAsyncProps = Object.create(this.oldProps);\n\n for (const propName in this.asyncProps) {\n Object.defineProperty(this.oldAsyncProps, propName, {\n enumerable: true,\n value: this.oldProps[propName]\n });\n }\n }\n }\n\n _didAsyncInputValueChange(propName, value) {\n const asyncProp = this.asyncProps[propName];\n\n if (value === asyncProp.resolvedValue || value === asyncProp.lastValue) {\n return false;\n }\n\n asyncProp.lastValue = value;\n return true;\n }\n\n _setPropValue(propName, value) {\n this._freezeAsyncOldProps();\n\n const asyncProp = this.asyncProps[propName];\n\n if (asyncProp) {\n value = this._postProcessValue(asyncProp, value);\n asyncProp.resolvedValue = value;\n asyncProp.pendingLoadCount++;\n asyncProp.resolvedLoadCount = asyncProp.pendingLoadCount;\n }\n }\n\n _setAsyncPropValue(propName, value, loadCount) {\n const asyncProp = this.asyncProps[propName];\n\n if (asyncProp && loadCount >= asyncProp.resolvedLoadCount && value !== undefined) {\n this._freezeAsyncOldProps();\n\n asyncProp.resolvedValue = value;\n asyncProp.resolvedLoadCount = loadCount;\n this.onAsyncPropUpdated(propName, value);\n }\n }\n\n _watchPromise(propName, promise) {\n const asyncProp = this.asyncProps[propName];\n\n if (asyncProp) {\n asyncProp.pendingLoadCount++;\n const loadCount = asyncProp.pendingLoadCount;\n promise.then(data => {\n if (!this.component) {\n return;\n }\n\n data = this._postProcessValue(asyncProp, data);\n\n this._setAsyncPropValue(propName, data, loadCount);\n\n this._onResolve(propName, data);\n }).catch(error => {\n this._onError(propName, error);\n });\n }\n }\n\n async _resolveAsyncIterable(propName, iterable) {\n if (propName !== 'data') {\n this._setPropValue(propName, iterable);\n\n return;\n }\n\n const asyncProp = this.asyncProps[propName];\n\n if (!asyncProp) {\n return;\n }\n\n asyncProp.pendingLoadCount++;\n const loadCount = asyncProp.pendingLoadCount;\n let data = [];\n let count = 0;\n\n for await (const chunk of iterable) {\n if (!this.component) {\n return;\n }\n\n const {\n dataTransform\n } = this.component.props;\n\n if (dataTransform) {\n data = dataTransform(chunk, data);\n } else {\n data = data.concat(chunk);\n }\n\n Object.defineProperty(data, '__diff', {\n enumerable: false,\n value: [{\n startRow: count,\n endRow: data.length\n }]\n });\n count = data.length;\n\n this._setAsyncPropValue(propName, data, loadCount);\n }\n\n this._onResolve(propName, data);\n }\n\n _postProcessValue(asyncProp, value) {\n const propType = asyncProp.type;\n\n if (propType && this.component) {\n if (propType.release) {\n propType.release(asyncProp.resolvedValue, propType, this.component);\n }\n\n if (propType.transform) {\n return propType.transform(value, propType, this.component);\n }\n }\n\n return value;\n }\n\n _createAsyncPropData(propName, defaultValue) {\n const asyncProp = this.asyncProps[propName];\n\n if (!asyncProp) {\n const propTypes = this.component && this.component.props[PROP_TYPES_SYMBOL];\n this.asyncProps[propName] = {\n type: propTypes && propTypes[propName],\n lastValue: null,\n resolvedValue: defaultValue,\n pendingLoadCount: 0,\n resolvedLoadCount: 0\n };\n }\n }\n\n}\n//# sourceMappingURL=component-state.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {isAsyncIterable} from '../utils/iterable-utils';\nimport {\n COMPONENT_SYMBOL,\n PROP_TYPES_SYMBOL,\n ASYNC_ORIGINAL_SYMBOL,\n ASYNC_RESOLVED_SYMBOL,\n ASYNC_DEFAULTS_SYMBOL\n} from './constants';\nimport type Component from './component';\nimport {PropType} from './prop-types';\n\nconst EMPTY_PROPS = Object.freeze({});\n\n/** Internal state of an async prop */\ntype AsyncPropState = {\n /** The prop type definition from component.defaultProps, if exists */\n type: PropType | null;\n /** Supplied prop value (can be url/promise, not visible to the component) */\n lastValue: any;\n /** Resolved prop value (valid data, can be \"shown\" to the component) */\n resolvedValue: any;\n /** How many loads have been issued */\n pendingLoadCount: number;\n /** Latest resolved load, (earlier loads will be ignored) */\n resolvedLoadCount: number;\n};\n\nexport default class ComponentState {\n /** The component that this state instance belongs to. `null` if this state has been finalized. */\n component: ComponentT | null;\n onAsyncPropUpdated: (propName: string, value: any) => void;\n\n private asyncProps: Partial>;\n private oldProps: ComponentT['props'] | null;\n private oldAsyncProps: ComponentT['props'] | null;\n\n constructor(component: ComponentT) {\n this.component = component;\n this.asyncProps = {}; // Prop values that the layer sees\n this.onAsyncPropUpdated = () => {};\n this.oldProps = null; // Last props before update\n this.oldAsyncProps = null; // Last props before update, with async values copied.\n }\n\n finalize() {\n for (const propName in this.asyncProps) {\n const asyncProp = this.asyncProps[propName];\n if (asyncProp && asyncProp.type && asyncProp.type.release) {\n // Release any resources created by transforms\n asyncProp.type.release(\n asyncProp.resolvedValue,\n asyncProp.type,\n this.component as Component\n );\n }\n }\n this.asyncProps = {};\n this.component = null;\n this.resetOldProps();\n }\n\n /* Layer-facing props API */\n\n getOldProps(): ComponentT['props'] | typeof EMPTY_PROPS {\n return this.oldAsyncProps || this.oldProps || EMPTY_PROPS;\n }\n\n resetOldProps() {\n this.oldAsyncProps = null;\n this.oldProps = this.component ? this.component.props : null;\n }\n\n // Checks if a prop is overridden\n hasAsyncProp(propName: string): boolean {\n return propName in this.asyncProps;\n }\n\n // Returns value of an overriden prop\n getAsyncProp(propName: string): any {\n const asyncProp = this.asyncProps[propName];\n return asyncProp && asyncProp.resolvedValue;\n }\n\n isAsyncPropLoading(propName?: string): boolean {\n if (propName) {\n const asyncProp = this.asyncProps[propName];\n return Boolean(\n asyncProp &&\n asyncProp.pendingLoadCount > 0 &&\n asyncProp.pendingLoadCount !== asyncProp.resolvedLoadCount\n );\n }\n for (const key in this.asyncProps) {\n if (this.isAsyncPropLoading(key)) {\n return true;\n }\n }\n return false;\n }\n\n // Without changing the original prop value, swap out the data resolution under the hood\n reloadAsyncProp(propName: string, value: any) {\n this._watchPromise(propName, Promise.resolve(value));\n }\n\n // Updates all async/overridden props (when new props come in)\n // Checks if urls have changed, starts loading, or removes override\n setAsyncProps(props: ComponentT['props']) {\n this.component = (props[COMPONENT_SYMBOL] as ComponentT) || this.component;\n\n // NOTE: prop param and default values are only support for testing\n const resolvedValues = props[ASYNC_RESOLVED_SYMBOL] || {};\n const originalValues = props[ASYNC_ORIGINAL_SYMBOL] || props;\n const defaultValues = props[ASYNC_DEFAULTS_SYMBOL] || {};\n\n // TODO - use async props from the layer's prop types\n for (const propName in resolvedValues) {\n const value = resolvedValues[propName];\n this._createAsyncPropData(propName, defaultValues[propName]);\n this._updateAsyncProp(propName, value);\n // Use transformed value\n resolvedValues[propName] = this.getAsyncProp(propName);\n }\n\n for (const propName in originalValues) {\n const value = originalValues[propName];\n // Makes sure a record exists for this prop\n this._createAsyncPropData(propName, defaultValues[propName]);\n this._updateAsyncProp(propName, value);\n }\n }\n\n /* Placeholder methods for subclassing */\n\n protected _fetch(propName: string, url: string): any {\n return null;\n }\n\n protected _onResolve(propName: string, value: any) {} // eslint-disable-line @typescript-eslint/no-empty-function\n\n protected _onError(propName: string, error: Error) {} // eslint-disable-line @typescript-eslint/no-empty-function\n\n // Intercept strings (URLs) and Promises and activates loading and prop rewriting\n private _updateAsyncProp(propName: string, value: any) {\n if (!this._didAsyncInputValueChange(propName, value)) {\n return;\n }\n\n // interpret value string as url and start a new load tracked by a promise\n if (typeof value === 'string') {\n value = this._fetch(propName, value);\n }\n\n // interprets promise and track the \"loading\"\n if (value instanceof Promise) {\n this._watchPromise(propName, value);\n return;\n }\n\n if (isAsyncIterable(value)) {\n this._resolveAsyncIterable(propName, value); // eslint-disable-line @typescript-eslint/no-floating-promises\n return;\n }\n\n // else, normal, non-async value. Just store value for now\n this._setPropValue(propName, value);\n }\n\n // Whenever async props are changing, we need to make a copy of oldProps\n // otherwise the prop rewriting will affect the value both in props and oldProps.\n // While the copy is relatively expensive, this only happens on load completion.\n private _freezeAsyncOldProps() {\n if (!this.oldAsyncProps && this.oldProps) {\n // 1. inherit all synchronous props from oldProps\n // 2. reconfigure the async prop descriptors to fixed values\n this.oldAsyncProps = Object.create(this.oldProps);\n for (const propName in this.asyncProps) {\n Object.defineProperty(this.oldAsyncProps, propName, {\n enumerable: true,\n value: this.oldProps[propName]\n });\n }\n }\n }\n\n // Checks if an input value actually changed (to avoid reloading/rewatching promises/urls)\n private _didAsyncInputValueChange(propName: string, value: any): boolean {\n // @ts-ignore\n const asyncProp: AsyncPropState = this.asyncProps[propName];\n if (value === asyncProp.resolvedValue || value === asyncProp.lastValue) {\n return false;\n }\n asyncProp.lastValue = value;\n return true;\n }\n\n // Set normal, non-async value\n private _setPropValue(propName: string, value: any) {\n // Save the current value before overwriting so that diffProps can access both\n this._freezeAsyncOldProps();\n\n const asyncProp = this.asyncProps[propName];\n if (asyncProp) {\n value = this._postProcessValue(asyncProp, value);\n asyncProp.resolvedValue = value;\n asyncProp.pendingLoadCount++;\n asyncProp.resolvedLoadCount = asyncProp.pendingLoadCount;\n }\n }\n\n // Set a just resolved async value, calling onAsyncPropUpdates if value changes asynchronously\n private _setAsyncPropValue(propName: string, value: any, loadCount: number) {\n // Only update if loadCount is larger or equal to resolvedLoadCount\n // otherwise a more recent load has already completed\n const asyncProp = this.asyncProps[propName];\n if (asyncProp && loadCount >= asyncProp.resolvedLoadCount && value !== undefined) {\n // Save the current value before overwriting so that diffProps can access both\n this._freezeAsyncOldProps();\n\n asyncProp.resolvedValue = value;\n asyncProp.resolvedLoadCount = loadCount;\n\n // Call callback to inform listener\n this.onAsyncPropUpdated(propName, value);\n }\n }\n\n // Tracks a promise, sets the prop when loaded, handles load count\n private _watchPromise(propName: string, promise: Promise) {\n const asyncProp = this.asyncProps[propName];\n if (asyncProp) {\n asyncProp.pendingLoadCount++;\n const loadCount = asyncProp.pendingLoadCount;\n promise\n .then(data => {\n if (!this.component) {\n // This component state has been finalized\n return;\n }\n data = this._postProcessValue(asyncProp, data);\n this._setAsyncPropValue(propName, data, loadCount);\n this._onResolve(propName, data);\n })\n .catch(error => {\n this._onError(propName, error);\n });\n }\n }\n\n private async _resolveAsyncIterable(\n propName: string,\n iterable: AsyncIterable\n ): Promise {\n if (propName !== 'data') {\n // we only support data as async iterable\n this._setPropValue(propName, iterable);\n return;\n }\n\n const asyncProp = this.asyncProps[propName];\n if (!asyncProp) {\n return;\n }\n\n asyncProp.pendingLoadCount++;\n const loadCount = asyncProp.pendingLoadCount;\n let data: any[] = [];\n let count = 0;\n\n for await (const chunk of iterable) {\n if (!this.component) {\n // This component state has been finalized\n return;\n }\n\n // @ts-expect-error (2339) dataTransform is not decared in base component props\n const {dataTransform} = this.component.props;\n if (dataTransform) {\n data = dataTransform(chunk, data) as any[];\n } else {\n data = data.concat(chunk);\n }\n\n // Used by the default _dataDiff function\n Object.defineProperty(data, '__diff', {\n enumerable: false,\n value: [{startRow: count, endRow: data.length}]\n });\n\n count = data.length;\n this._setAsyncPropValue(propName, data, loadCount);\n }\n\n this._onResolve(propName, data);\n }\n\n // Give the app a chance to post process the loaded data\n private _postProcessValue(asyncProp: AsyncPropState, value: any) {\n const propType = asyncProp.type;\n if (propType && this.component) {\n if (propType.release) {\n propType.release(asyncProp.resolvedValue, propType, this.component);\n }\n if (propType.transform) {\n return propType.transform(value, propType, this.component);\n }\n }\n return value;\n }\n\n // Creating an asyncProp record if needed\n private _createAsyncPropData(propName: string, defaultValue: any) {\n const asyncProp = this.asyncProps[propName];\n if (!asyncProp) {\n const propTypes = this.component && this.component.props[PROP_TYPES_SYMBOL];\n // assert(defaultValue !== undefined);\n this.asyncProps[propName] = {\n type: propTypes && propTypes[propName],\n lastValue: null,\n resolvedValue: defaultValue,\n pendingLoadCount: 0,\n resolvedLoadCount: 0\n };\n }\n }\n}\n","import { isBlob } from '../../javascript-utils/is-type';\nimport { isLoaderObject } from '../loader-utils/normalize-loader';\nimport { getFetchFunction } from '../loader-utils/get-fetch-function';\nimport { parse } from './parse';\nexport async function load(url, loaders, options, context) {\n if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = undefined;\n options = loaders;\n loaders = undefined;\n }\n const fetch = getFetchFunction(options);\n let data = url;\n if (typeof url === 'string') {\n data = await fetch(url);\n }\n if (isBlob(url)) {\n data = await fetch(url);\n }\n return await parse(data, loaders, options);\n}\n//# sourceMappingURL=load.js.map","import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {isBlob} from '../../javascript-utils/is-type';\nimport {isLoaderObject} from '../loader-utils/normalize-loader';\nimport {getFetchFunction} from '../loader-utils/get-fetch-function';\n\nimport {parse} from './parse';\n\n/**\n * Parses `data` using a specified loader\n * Note: Load does duplicate a lot of parse.\n * it can also call fetchFile on string urls, which `parse` won't do.\n * @param data\n * @param loaders\n * @param options\n * @param context\n */\n// implementation signature\nexport async function load(\n url: string | DataType,\n loaders?: Loader | Loader[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise {\n // Signature: load(url, options)\n if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = undefined; // context not supported in short signature\n options = loaders as LoaderOptions;\n loaders = undefined;\n }\n\n // Select fetch function\n const fetch = getFetchFunction(options);\n\n // at this point, `url` could be already loaded binary data\n let data = url;\n // url is a string, fetch the url\n if (typeof url === 'string') {\n data = await fetch(url);\n // URL is Blob or File, fetchFile handles it (alt: we could generate ObjectURL here)\n }\n\n if (isBlob(url)) {\n // The fetch response object will contain blob.name\n // @ts-expect-error TODO - This may not work for overridden fetch functions\n data = await fetch(url);\n }\n\n // Data is loaded (at least we have a `Response` object) so time to hand over to `parse`\n return await parse(data, loaders as Loader[], options);\n}\n","const isBoolean = x => typeof x === 'boolean';\nconst isFunction = x => typeof x === 'function';\nexport const isObject = x => x !== null && typeof x === 'object';\nexport const isPureObject = x => isObject(x) && x.constructor === {}.constructor;\nexport const isPromise = x => isObject(x) && isFunction(x.then);\nexport const isIterable = x => x && typeof x[Symbol.iterator] === 'function';\nexport const isAsyncIterable = x => x && typeof x[Symbol.asyncIterator] === 'function';\nexport const isIterator = x => x && isFunction(x.next);\nexport const isResponse = x => typeof Response !== 'undefined' && x instanceof Response || x && x.arrayBuffer && x.text && x.json;\nexport const isFile = x => typeof File !== 'undefined' && x instanceof File;\nexport const isBlob = x => typeof Blob !== 'undefined' && x instanceof Blob;\nexport const isBuffer = x => x && typeof x === 'object' && x.isBuffer;\nexport const isWritableDOMStream = x => isObject(x) && isFunction(x.abort) && isFunction(x.getWriter);\nexport const isReadableDOMStream = x => typeof ReadableStream !== 'undefined' && x instanceof ReadableStream || isObject(x) && isFunction(x.tee) && isFunction(x.cancel) && isFunction(x.getReader);\nexport const isWritableNodeStream = x => isObject(x) && isFunction(x.end) && isFunction(x.write) && isBoolean(x.writable);\nexport const isReadableNodeStream = x => isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);\nexport const isReadableStream = x => isReadableDOMStream(x) || isReadableNodeStream(x);\nexport const isWritableStream = x => isWritableDOMStream(x) || isWritableNodeStream(x);\n//# sourceMappingURL=is-type.js.map","import type {Readable} from 'stream';\n\n/** A DOM or Node readable stream */\nexport type ReadableStreamType = ReadableStream | Readable;\n\nconst isBoolean: (x: any) => boolean = (x) => typeof x === 'boolean';\nconst isFunction: (x: any) => boolean = (x) => typeof x === 'function';\n\nexport const isObject: (x: any) => boolean = (x) => x !== null && typeof x === 'object';\nexport const isPureObject: (x: any) => boolean = (x) =>\n isObject(x) && x.constructor === {}.constructor;\nexport const isPromise: (x: any) => boolean = (x) => isObject(x) && isFunction(x.then);\n\nexport const isIterable: (x: any) => boolean = (x) => x && typeof x[Symbol.iterator] === 'function';\nexport const isAsyncIterable: (x: any) => boolean = (x) =>\n x && typeof x[Symbol.asyncIterator] === 'function';\nexport const isIterator: (x: any) => boolean = (x) => x && isFunction(x.next);\n\nexport const isResponse: (x: any) => boolean = (x) =>\n (typeof Response !== 'undefined' && x instanceof Response) ||\n (x && x.arrayBuffer && x.text && x.json);\n\nexport const isFile: (x: any) => boolean = (x) => typeof File !== 'undefined' && x instanceof File;\nexport const isBlob: (x: any) => boolean = (x) => typeof Blob !== 'undefined' && x instanceof Blob;\n\n/** Check for Node.js `Buffer` without triggering bundler to include buffer polyfill */\nexport const isBuffer: (x: any) => boolean = (x) => x && typeof x === 'object' && x.isBuffer;\n\nexport const isWritableDOMStream: (x: any) => boolean = (x) =>\n isObject(x) && isFunction(x.abort) && isFunction(x.getWriter);\n\nexport const isReadableDOMStream: (x: any) => boolean = (x) =>\n (typeof ReadableStream !== 'undefined' && x instanceof ReadableStream) ||\n (isObject(x) && isFunction(x.tee) && isFunction(x.cancel) && isFunction(x.getReader));\n// Not implemented in Firefox: && isFunction(x.pipeTo)\n\nexport const isWritableNodeStream: (x: any) => boolean = (x) =>\n isObject(x) && isFunction(x.end) && isFunction(x.write) && isBoolean(x.writable);\nexport const isReadableNodeStream: (x: any) => boolean = (x) =>\n isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);\nexport const isReadableStream: (x: any) => boolean = (x) =>\n isReadableDOMStream(x) || isReadableNodeStream(x);\nexport const isWritableStream: (x: any) => boolean = (x) =>\n isWritableDOMStream(x) || isWritableNodeStream(x);\n","import { assert } from '@loaders.gl/loader-utils';\nexport function isLoaderObject(loader) {\n var _loader;\n if (!loader) {\n return false;\n }\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n const hasExtensions = Array.isArray((_loader = loader) === null || _loader === void 0 ? void 0 : _loader.extensions);\n return hasExtensions;\n}\nexport function normalizeLoader(loader) {\n var _loader2, _loader3;\n assert(loader, 'null loader');\n assert(isLoaderObject(loader), 'invalid loader');\n let options;\n if (Array.isArray(loader)) {\n options = loader[1];\n loader = loader[0];\n loader = {\n ...loader,\n options: {\n ...loader.options,\n ...options\n }\n };\n }\n if ((_loader2 = loader) !== null && _loader2 !== void 0 && _loader2.parseTextSync || (_loader3 = loader) !== null && _loader3 !== void 0 && _loader3.parseText) {\n loader.text = true;\n }\n if (!loader.text) {\n loader.binary = true;\n }\n return loader;\n}\n//# sourceMappingURL=normalize-loader.js.map","import type {Loader} from '@loaders.gl/loader-utils';\nimport {assert} from '@loaders.gl/loader-utils';\n\nexport function isLoaderObject(loader?: any): boolean {\n if (!loader) {\n return false;\n }\n\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n const hasExtensions = Array.isArray(loader?.extensions);\n\n /* Now handled by types and worker loaders do not have these\n let hasParser =\n loader.parseTextSync ||\n loader.parseSync ||\n loader.parse ||\n loader.parseStream || // TODO Remove, Replace with parseInBatches\n loader.parseInBatches;\n */\n\n return hasExtensions;\n}\n\nexport function normalizeLoader(loader: Loader): Loader {\n // This error is fairly easy to trigger by mixing up import statements etc\n // So we make an exception and add a developer error message for this case\n // To help new users from getting stuck here\n assert(loader, 'null loader');\n assert(isLoaderObject(loader), 'invalid loader');\n\n // NORMALIZE [LOADER, OPTIONS] => LOADER\n\n // If [loader, options], create a new loaders object with options merged in\n let options;\n if (Array.isArray(loader)) {\n options = loader[1];\n loader = loader[0];\n loader = {\n ...loader,\n options: {...loader.options, ...options}\n };\n }\n\n // NORMALIZE text and binary flags\n // Ensure at least one of text/binary flags are properly set\n\n // @ts-expect-error\n if (loader?.parseTextSync || loader?.parseText) {\n loader.text = true;\n }\n\n if (!loader.text) {\n loader.binary = true;\n }\n\n return loader;\n}\n","export function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'loader assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map","/**\n * Throws an `Error` with the optional `message` if `condition` is falsy\n * @note Replacement for the external assert method to reduce bundle size\n */\nexport function assert(condition: any, message?: string): void {\n if (!condition) {\n throw new Error(message || 'loader assertion failed.');\n }\n}\n","import { isObject } from '../../javascript-utils/is-type';\nimport { fetchFile } from '../fetch/fetch-file';\nimport { getGlobalLoaderOptions } from './option-utils';\nexport function getFetchFunction(options, context) {\n const globalOptions = getGlobalLoaderOptions();\n const fetchOptions = options || globalOptions;\n if (typeof fetchOptions.fetch === 'function') {\n return fetchOptions.fetch;\n }\n if (isObject(fetchOptions.fetch)) {\n return url => fetchFile(url, fetchOptions);\n }\n if (context !== null && context !== void 0 && context.fetch) {\n return context === null || context === void 0 ? void 0 : context.fetch;\n }\n return fetchFile;\n}\n//# sourceMappingURL=get-fetch-function.js.map","// loaders.gl, MIT license\n\nimport type {LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {isObject} from '../../javascript-utils/is-type';\nimport {fetchFile} from '../fetch/fetch-file';\nimport {getGlobalLoaderOptions} from './option-utils';\n\n/**\n * Gets the current fetch function from options and context\n * @param options\n * @param context\n */\nexport function getFetchFunction(\n options?: LoaderOptions,\n context?: Omit & Partial>\n) {\n const globalOptions = getGlobalLoaderOptions();\n\n const fetchOptions = options || globalOptions;\n\n // options.fetch can be a function\n if (typeof fetchOptions.fetch === 'function') {\n return fetchOptions.fetch;\n }\n\n // options.fetch can be an options object\n if (isObject(fetchOptions.fetch)) {\n return (url) => fetchFile(url, fetchOptions as RequestInit);\n }\n\n // else refer to context (from parent loader) if available\n if (context?.fetch) {\n return context?.fetch;\n }\n\n // else return the default fetch function\n return fetchFile;\n}\n","import { resolvePath } from '@loaders.gl/loader-utils';\nimport { makeResponse } from '../utils/response-utils';\nexport async function fetchFile(url, options) {\n if (typeof url === 'string') {\n url = resolvePath(url);\n let fetchOptions = options;\n if (options !== null && options !== void 0 && options.fetch && typeof (options === null || options === void 0 ? void 0 : options.fetch) !== 'function') {\n fetchOptions = options.fetch;\n }\n return await fetch(url, fetchOptions);\n }\n return await makeResponse(url);\n}\n//# sourceMappingURL=fetch-file.js.map","import {resolvePath} from '@loaders.gl/loader-utils';\nimport {makeResponse} from '../utils/response-utils';\n// import {getErrorMessageFromResponse} from './fetch-error-message';\n\n/**\n * fetch compatible function\n * Reads file data from:\n * - http/http urls\n * - data urls\n * - File/Blob objects\n * Leverages `@loaders.gl/polyfills` for Node.js support\n * Respects pathPrefix and file aliases\n */\nexport async function fetchFile(\n url: string | Blob,\n options?: RequestInit & {fetch?: RequestInit | Function}\n): Promise {\n if (typeof url === 'string') {\n url = resolvePath(url);\n\n let fetchOptions: RequestInit = options as RequestInit;\n if (options?.fetch && typeof options?.fetch !== 'function') {\n fetchOptions = options.fetch;\n }\n\n return await fetch(url, fetchOptions);\n }\n\n return await makeResponse(url);\n}\n","let pathPrefix = '';\nconst fileAliases = {};\nexport function setPathPrefix(prefix) {\n pathPrefix = prefix;\n}\nexport function getPathPrefix() {\n return pathPrefix;\n}\nexport function addAliases(aliases) {\n Object.assign(fileAliases, aliases);\n}\nexport function resolvePath(filename) {\n for (const alias in fileAliases) {\n if (filename.startsWith(alias)) {\n const replacement = fileAliases[alias];\n filename = filename.replace(alias, replacement);\n }\n }\n if (!filename.startsWith('http://') && !filename.startsWith('https://')) {\n filename = \"\".concat(pathPrefix).concat(filename);\n }\n return filename;\n}\n//# sourceMappingURL=file-aliases.js.map","// Simple file alias mechanisms for tests.\n\nlet pathPrefix = '';\nconst fileAliases: {[aliasPath: string]: string} = {};\n\n/*\n * Set a relative path prefix\n */\nexport function setPathPrefix(prefix: string): void {\n pathPrefix = prefix;\n}\n\n/*\n * Get the relative path prefix\n */\nexport function getPathPrefix(): string {\n return pathPrefix;\n}\n\n/**\n *\n * @param aliases\n *\n * Note: addAliases are an experimental export, they are only for testing of loaders.gl loaders\n * not intended as a generic aliasing mechanism\n */\nexport function addAliases(aliases: {[aliasPath: string]: string}): void {\n Object.assign(fileAliases, aliases);\n}\n\n/**\n * Resolves aliases and adds path-prefix to paths\n */\nexport function resolvePath(filename: string): string {\n for (const alias in fileAliases) {\n if (filename.startsWith(alias)) {\n const replacement = fileAliases[alias];\n filename = filename.replace(alias, replacement);\n }\n }\n if (!filename.startsWith('http://') && !filename.startsWith('https://')) {\n filename = `${pathPrefix}${filename}`;\n }\n return filename;\n}\n","import { isResponse } from '../../javascript-utils/is-type';\nimport { getResourceContentLength, getResourceUrl, getResourceMIMEType } from './resource-utils';\nexport async function makeResponse(resource) {\n if (isResponse(resource)) {\n return resource;\n }\n const headers = {};\n const contentLength = getResourceContentLength(resource);\n if (contentLength >= 0) {\n headers['content-length'] = String(contentLength);\n }\n const url = getResourceUrl(resource);\n const type = getResourceMIMEType(resource);\n if (type) {\n headers['content-type'] = type;\n }\n const initialDataUrl = await getInitialDataUrl(resource);\n if (initialDataUrl) {\n headers['x-first-bytes'] = initialDataUrl;\n }\n if (typeof resource === 'string') {\n resource = new TextEncoder().encode(resource);\n }\n const response = new Response(resource, {\n headers\n });\n Object.defineProperty(response, 'url', {\n value: url\n });\n return response;\n}\nexport async function checkResponse(response) {\n if (!response.ok) {\n const message = await getResponseError(response);\n throw new Error(message);\n }\n}\nexport function checkResponseSync(response) {\n if (!response.ok) {\n let message = \"\".concat(response.status, \" \").concat(response.statusText);\n message = message.length > 60 ? \"\".concat(message.slice(0, 60), \"...\") : message;\n throw new Error(message);\n }\n}\nasync function getResponseError(response) {\n let message = \"Failed to fetch resource \".concat(response.url, \" (\").concat(response.status, \"): \");\n try {\n const contentType = response.headers.get('Content-Type');\n let text = response.statusText;\n if (contentType.includes('application/json')) {\n text += \" \".concat(await response.text());\n }\n message += text;\n message = message.length > 60 ? \"\".concat(message.slice(0, 60), \"...\") : message;\n } catch (error) {}\n return message;\n}\nasync function getInitialDataUrl(resource) {\n const INITIAL_DATA_LENGTH = 5;\n if (typeof resource === 'string') {\n return \"data:,\".concat(resource.slice(0, INITIAL_DATA_LENGTH));\n }\n if (resource instanceof Blob) {\n const blobSlice = resource.slice(0, 5);\n return await new Promise(resolve => {\n const reader = new FileReader();\n reader.onload = event => {\n var _event$target;\n return resolve(event === null || event === void 0 ? void 0 : (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.result);\n };\n reader.readAsDataURL(blobSlice);\n });\n }\n if (resource instanceof ArrayBuffer) {\n const slice = resource.slice(0, INITIAL_DATA_LENGTH);\n const base64 = arrayBufferToBase64(slice);\n return \"data:base64,\".concat(base64);\n }\n return null;\n}\nfunction arrayBufferToBase64(buffer) {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n}\n//# sourceMappingURL=response-utils.js.map","import {isResponse} from '../../javascript-utils/is-type';\nimport {getResourceContentLength, getResourceUrl, getResourceMIMEType} from './resource-utils';\n\n/**\n * Returns a Response object\n * Adds content-length header when possible\n *\n * @param resource\n */\nexport async function makeResponse(resource: any): Promise {\n if (isResponse(resource)) {\n return resource;\n }\n\n // Add content-length header if possible\n const headers: {[header: string]: string} = {};\n\n const contentLength = getResourceContentLength(resource);\n if (contentLength >= 0) {\n headers['content-length'] = String(contentLength);\n }\n\n // `new Response(File)` does not preserve content-type and URL\n // so we add them here\n const url = getResourceUrl(resource);\n const type = getResourceMIMEType(resource);\n if (type) {\n headers['content-type'] = type;\n }\n\n // Add a custom header with initial bytes if available\n const initialDataUrl = await getInitialDataUrl(resource);\n if (initialDataUrl) {\n headers['x-first-bytes'] = initialDataUrl;\n }\n\n // TODO - is this the best way of handling strings?\n // Maybe package as data URL instead?\n if (typeof resource === 'string') {\n // Convert to ArrayBuffer to avoid Response treating it as a URL\n resource = new TextEncoder().encode(resource);\n }\n\n // Attempt to create a Response from the resource, adding headers and setting url\n const response = new Response(resource, {headers});\n // We can't control `Response.url` via constructor, use a property override to record URL.\n Object.defineProperty(response, 'url', {value: url});\n return response;\n}\n\n/**\n * Checks response status (async) and throws a helpful error message if status is not OK.\n * @param response\n */\nexport async function checkResponse(response: Response): Promise {\n if (!response.ok) {\n const message = await getResponseError(response);\n throw new Error(message);\n }\n}\n\n/**\n * Checks response status (sync) and throws a helpful error message if status is not OK.\n * @param response\n */\nexport function checkResponseSync(response: Response): void {\n if (!response.ok) {\n let message = `${response.status} ${response.statusText}`;\n message = message.length > 60 ? `${message.slice(0, 60)}...` : message;\n throw new Error(message);\n }\n}\n\n// HELPERS\n\nasync function getResponseError(response): Promise {\n let message = `Failed to fetch resource ${response.url} (${response.status}): `;\n try {\n const contentType = response.headers.get('Content-Type');\n let text = response.statusText;\n if (contentType.includes('application/json')) {\n text += ` ${await response.text()}`;\n }\n message += text;\n message = message.length > 60 ? `${message.slice(0, 60)}...` : message;\n } catch (error) {\n // eslint forbids return in a finally statement, so we just catch here\n }\n return message;\n}\n\nasync function getInitialDataUrl(resource): Promise {\n const INITIAL_DATA_LENGTH = 5;\n if (typeof resource === 'string') {\n return `data:,${resource.slice(0, INITIAL_DATA_LENGTH)}`;\n }\n if (resource instanceof Blob) {\n const blobSlice = resource.slice(0, 5);\n return await new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = (event) => resolve(event?.target?.result as string);\n reader.readAsDataURL(blobSlice);\n });\n }\n if (resource instanceof ArrayBuffer) {\n const slice = resource.slice(0, INITIAL_DATA_LENGTH);\n const base64 = arrayBufferToBase64(slice);\n return `data:base64,${base64}`;\n }\n return null;\n}\n\n// https://stackoverflow.com/questions/9267899/arraybuffer-to-base64-encoded-string\nfunction arrayBufferToBase64(buffer) {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n}\n","import { isResponse, isBlob } from '../../javascript-utils/is-type';\nimport { parseMIMEType, parseMIMETypeFromURL } from './mime-type-utils';\nimport { stripQueryString } from './url-utils';\nexport function getResourceUrl(resource) {\n if (isResponse(resource)) {\n const response = resource;\n return response.url;\n }\n if (isBlob(resource)) {\n const blob = resource;\n return blob.name || '';\n }\n if (typeof resource === 'string') {\n return resource;\n }\n return '';\n}\nexport function getResourceMIMEType(resource) {\n if (isResponse(resource)) {\n const response = resource;\n const contentTypeHeader = response.headers.get('content-type') || '';\n const noQueryUrl = stripQueryString(response.url);\n return parseMIMEType(contentTypeHeader) || parseMIMETypeFromURL(noQueryUrl);\n }\n if (isBlob(resource)) {\n const blob = resource;\n return blob.type || '';\n }\n if (typeof resource === 'string') {\n return parseMIMETypeFromURL(resource);\n }\n return '';\n}\nexport function getResourceContentLength(resource) {\n if (isResponse(resource)) {\n const response = resource;\n return response.headers['content-length'] || -1;\n }\n if (isBlob(resource)) {\n const blob = resource;\n return blob.size;\n }\n if (typeof resource === 'string') {\n return resource.length;\n }\n if (resource instanceof ArrayBuffer) {\n return resource.byteLength;\n }\n if (ArrayBuffer.isView(resource)) {\n return resource.byteLength;\n }\n return -1;\n}\n//# sourceMappingURL=resource-utils.js.map","// loaders.gl, MIT license\n\nimport {isResponse, isBlob} from '../../javascript-utils/is-type';\nimport {parseMIMEType, parseMIMETypeFromURL} from './mime-type-utils';\nimport {stripQueryString} from './url-utils';\n\n/**\n * A loadable resource. Includes:\n * `Response`, `Blob` (`File` is a subclass), string URLs and data URLs\n */\nexport type Resource = Response | Blob | string;\n\n/**\n * Returns the URL associated with this resource.\n * The returned value may include a query string and need further processing.\n * If it cannot determine url, the corresponding value will be an empty string\n *\n * @todo string parameters are assumed to be URLs\n */\nexport function getResourceUrl(resource: unknown): string {\n // If resource is a `Response`, it contains the information directly as a field\n if (isResponse(resource)) {\n const response = resource as Response;\n return response.url;\n }\n\n // If the resource is a Blob or a File (subclass of Blob)\n if (isBlob(resource)) {\n const blob = resource as Blob;\n // File objects have a \"name\" property. Blob objects don't have any\n // url (name) information\n return blob.name || '';\n }\n\n if (typeof resource === 'string') {\n return resource;\n }\n\n // Unknown\n return '';\n}\n\n/**\n * Returns the URL associated with this resource.\n * The returned value may include a query string and need further processing.\n * If it cannot determine url, the corresponding value will be an empty string\n *\n * @todo string parameters are assumed to be URLs\n */\nexport function getResourceMIMEType(resource: unknown): string {\n // If resource is a response, it contains the information directly\n if (isResponse(resource)) {\n const response = resource as Response;\n const contentTypeHeader = response.headers.get('content-type') || '';\n const noQueryUrl = stripQueryString(response.url);\n return parseMIMEType(contentTypeHeader) || parseMIMETypeFromURL(noQueryUrl);\n }\n\n // If the resource is a Blob or a File (subclass of Blob)\n if (isBlob(resource)) {\n const blob = resource as Blob;\n return blob.type || '';\n }\n\n if (typeof resource === 'string') {\n return parseMIMETypeFromURL(resource);\n }\n\n // Unknown\n return '';\n}\n\n/**\n * Returns (approximate) content length for a resource if it can be determined.\n * Returns -1 if content length cannot be determined.\n * @param resource\n\n * @note string parameters are NOT assumed to be URLs\n */\nexport function getResourceContentLength(resource: unknown): number {\n if (isResponse(resource)) {\n const response = resource as Response;\n return response.headers['content-length'] || -1;\n }\n if (isBlob(resource)) {\n const blob = resource as Blob;\n return blob.size;\n }\n if (typeof resource === 'string') {\n // TODO - handle data URL?\n return resource.length;\n }\n if (resource instanceof ArrayBuffer) {\n return resource.byteLength;\n }\n if (ArrayBuffer.isView(resource)) {\n return resource.byteLength;\n }\n return -1;\n}\n","const DATA_URL_PATTERN = /^data:([-\\w.]+\\/[-\\w.+]+)(;|,)/;\nconst MIME_TYPE_PATTERN = /^([-\\w.]+\\/[-\\w.+]+)/;\nexport function parseMIMEType(mimeString) {\n const matches = MIME_TYPE_PATTERN.exec(mimeString);\n if (matches) {\n return matches[1];\n }\n return mimeString;\n}\nexport function parseMIMETypeFromURL(url) {\n const matches = DATA_URL_PATTERN.exec(url);\n if (matches) {\n return matches[1];\n }\n return '';\n}\n//# sourceMappingURL=mime-type-utils.js.map","// TODO - build/integrate proper MIME type parsing\n// https://mimesniff.spec.whatwg.org/\n\nconst DATA_URL_PATTERN = /^data:([-\\w.]+\\/[-\\w.+]+)(;|,)/;\nconst MIME_TYPE_PATTERN = /^([-\\w.]+\\/[-\\w.+]+)/;\n\n/**\n * Remove extra data like `charset` from MIME types\n * @param mimeString\n * @returns A clean MIME type, or an empty string\n *\n * @todo - handle more advanced MIMETYpes, multiple types\n * @todo - extract charset etc\n */\nexport function parseMIMEType(mimeString: string): string {\n // If resource is a data url, extract any embedded mime type\n const matches = MIME_TYPE_PATTERN.exec(mimeString);\n if (matches) {\n return matches[1];\n }\n return mimeString;\n}\n\n/**\n * Extract MIME type from data URL\n *\n * @param mimeString\n * @returns A clean MIME type, or an empty string\n *\n * @todo - handle more advanced MIMETYpes, multiple types\n * @todo - extract charset etc\n */\nexport function parseMIMETypeFromURL(url: string): string {\n // If resource is a data URL, extract any embedded mime type\n const matches = DATA_URL_PATTERN.exec(url);\n if (matches) {\n return matches[1];\n }\n return '';\n}\n","const QUERY_STRING_PATTERN = /\\?.*/;\nexport function extractQueryString(url) {\n const matches = url.match(QUERY_STRING_PATTERN);\n return matches && matches[0];\n}\nexport function stripQueryString(url) {\n return url.replace(QUERY_STRING_PATTERN, '');\n}\n//# sourceMappingURL=url-utils.js.map","// loaders.gl, MIT license\n\nconst QUERY_STRING_PATTERN = /\\?.*/;\n\nexport function extractQueryString(url): string {\n const matches = url.match(QUERY_STRING_PATTERN);\n return matches && matches[0];\n}\n\nexport function stripQueryString(url): string {\n return url.replace(QUERY_STRING_PATTERN, '');\n}\n","import { isPureObject, isObject } from '../../javascript-utils/is-type';\nimport { probeLog, NullLog } from './loggers';\nimport { DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS } from './option-defaults';\nexport function getGlobalLoaderState() {\n globalThis.loaders = globalThis.loaders || {};\n const {\n loaders\n } = globalThis;\n loaders._state = loaders._state || {};\n return loaders._state;\n}\nexport const getGlobalLoaderOptions = () => {\n const state = getGlobalLoaderState();\n state.globalOptions = state.globalOptions || {\n ...DEFAULT_LOADER_OPTIONS\n };\n return state.globalOptions;\n};\nexport function setGlobalOptions(options) {\n const state = getGlobalLoaderState();\n const globalOptions = getGlobalLoaderOptions();\n state.globalOptions = normalizeOptionsInternal(globalOptions, options);\n}\nexport function normalizeOptions(options, loader, loaders, url) {\n loaders = loaders || [];\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n validateOptions(options, loaders);\n return normalizeOptionsInternal(loader, options, url);\n}\nfunction validateOptions(options, loaders) {\n validateOptionsObject(options, null, DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS, loaders);\n for (const loader of loaders) {\n const idOptions = options && options[loader.id] || {};\n const loaderOptions = loader.options && loader.options[loader.id] || {};\n const deprecatedOptions = loader.deprecatedOptions && loader.deprecatedOptions[loader.id] || {};\n validateOptionsObject(idOptions, loader.id, loaderOptions, deprecatedOptions, loaders);\n }\n}\nfunction validateOptionsObject(options, id, defaultOptions, deprecatedOptions, loaders) {\n const loaderName = id || 'Top level';\n const prefix = id ? \"\".concat(id, \".\") : '';\n for (const key in options) {\n const isSubOptions = !id && isObject(options[key]);\n const isBaseUriOption = key === 'baseUri' && !id;\n const isWorkerUrlOption = key === 'workerUrl' && id;\n if (!(key in defaultOptions) && !isBaseUriOption && !isWorkerUrlOption) {\n if (key in deprecatedOptions) {\n probeLog.warn(\"\".concat(loaderName, \" loader option '\").concat(prefix).concat(key, \"' no longer supported, use '\").concat(deprecatedOptions[key], \"'\"))();\n } else if (!isSubOptions) {\n const suggestion = findSimilarOption(key, loaders);\n probeLog.warn(\"\".concat(loaderName, \" loader option '\").concat(prefix).concat(key, \"' not recognized. \").concat(suggestion))();\n }\n }\n }\n}\nfunction findSimilarOption(optionKey, loaders) {\n const lowerCaseOptionKey = optionKey.toLowerCase();\n let bestSuggestion = '';\n for (const loader of loaders) {\n for (const key in loader.options) {\n if (optionKey === key) {\n return \"Did you mean '\".concat(loader.id, \".\").concat(key, \"'?\");\n }\n const lowerCaseKey = key.toLowerCase();\n const isPartialMatch = lowerCaseOptionKey.startsWith(lowerCaseKey) || lowerCaseKey.startsWith(lowerCaseOptionKey);\n if (isPartialMatch) {\n bestSuggestion = bestSuggestion || \"Did you mean '\".concat(loader.id, \".\").concat(key, \"'?\");\n }\n }\n }\n return bestSuggestion;\n}\nfunction normalizeOptionsInternal(loader, options, url) {\n const loaderDefaultOptions = loader.options || {};\n const mergedOptions = {\n ...loaderDefaultOptions\n };\n addUrlOptions(mergedOptions, url);\n if (mergedOptions.log === null) {\n mergedOptions.log = new NullLog();\n }\n mergeNestedFields(mergedOptions, getGlobalLoaderOptions());\n mergeNestedFields(mergedOptions, options);\n return mergedOptions;\n}\nfunction mergeNestedFields(mergedOptions, options) {\n for (const key in options) {\n if (key in options) {\n const value = options[key];\n if (isPureObject(value) && isPureObject(mergedOptions[key])) {\n mergedOptions[key] = {\n ...mergedOptions[key],\n ...options[key]\n };\n } else {\n mergedOptions[key] = options[key];\n }\n }\n }\n}\nfunction addUrlOptions(options, url) {\n if (url && !('baseUri' in options)) {\n options.baseUri = url;\n }\n}\n//# sourceMappingURL=option-utils.js.map","// loaders.gl, MIT license\n\nimport type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {isPureObject, isObject} from '../../javascript-utils/is-type';\nimport {probeLog, NullLog} from './loggers';\nimport {DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS} from './option-defaults';\n\n/**\n * Global state for loaders.gl. Stored on `global.loaders._state`\n */\ntype GlobalLoaderState = {\n loaderRegistry: Loader[];\n globalOptions: LoaderOptions;\n};\n\n/**\n * Helper for safely accessing global loaders.gl variables\n * Wraps initialization of global variable in function to defeat overly aggressive tree-shakers\n */\nexport function getGlobalLoaderState(): GlobalLoaderState {\n // @ts-ignore\n globalThis.loaders = globalThis.loaders || {};\n // @ts-ignore\n const {loaders} = globalThis;\n\n // Add _state object to keep separate from modules added to globalThis.loaders\n loaders._state = loaders._state || {};\n return loaders._state;\n}\n\n/**\n * Store global loader options on the global object to increase chances of cross loaders-version interoperability\n * NOTE: This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks\n * @returns global loader options merged with default loader options\n */\nexport const getGlobalLoaderOptions = (): LoaderOptions => {\n const state = getGlobalLoaderState();\n // Ensure all default loader options from this library are mentioned\n state.globalOptions = state.globalOptions || {...DEFAULT_LOADER_OPTIONS};\n return state.globalOptions;\n};\n\n/**\n * Set global loader options\n * @param options\n */\nexport function setGlobalOptions(options: LoaderOptions): void {\n const state = getGlobalLoaderState();\n const globalOptions = getGlobalLoaderOptions();\n state.globalOptions = normalizeOptionsInternal(globalOptions, options);\n}\n\n/**\n * Merges options with global opts and loader defaults, also injects baseUri\n * @param options\n * @param loader\n * @param loaders\n * @param url\n */\nexport function normalizeOptions(\n options: LoaderOptions,\n loader: Loader,\n loaders?: Loader[],\n url?: string\n): LoaderOptions {\n loaders = loaders || [];\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n\n validateOptions(options, loaders);\n return normalizeOptionsInternal(loader, options, url);\n}\n\n// VALIDATE OPTIONS\n\n/**\n * Warn for unsupported options\n * @param options\n * @param loaders\n */\nfunction validateOptions(options: LoaderOptions, loaders: Loader[]) {\n // Check top level options\n validateOptionsObject(options, null, DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS, loaders);\n for (const loader of loaders) {\n // Get the scoped, loader specific options from the user supplied options\n const idOptions = (options && options[loader.id]) || {};\n\n // Get scoped, loader specific default and deprecated options from the selected loader\n const loaderOptions = (loader.options && loader.options[loader.id]) || {};\n const deprecatedOptions =\n (loader.deprecatedOptions && loader.deprecatedOptions[loader.id]) || {};\n\n // Validate loader specific options\n validateOptionsObject(idOptions, loader.id, loaderOptions, deprecatedOptions, loaders);\n }\n}\n\n// eslint-disable-next-line max-params, complexity\nfunction validateOptionsObject(\n options,\n id: string | null,\n defaultOptions,\n deprecatedOptions,\n loaders: Loader[]\n) {\n const loaderName = id || 'Top level';\n const prefix = id ? `${id}.` : '';\n\n for (const key in options) {\n // If top level option value is an object it could options for a loader, so ignore\n const isSubOptions = !id && isObject(options[key]);\n const isBaseUriOption = key === 'baseUri' && !id;\n const isWorkerUrlOption = key === 'workerUrl' && id;\n // .workerUrl requires special handling as it is now auto-generated and no longer specified as a default option.\n if (!(key in defaultOptions) && !isBaseUriOption && !isWorkerUrlOption) {\n // Issue deprecation warnings\n if (key in deprecatedOptions) {\n probeLog.warn(\n `${loaderName} loader option \\'${prefix}${key}\\' no longer supported, use \\'${deprecatedOptions[key]}\\'`\n )();\n } else if (!isSubOptions) {\n const suggestion = findSimilarOption(key, loaders);\n probeLog.warn(\n `${loaderName} loader option \\'${prefix}${key}\\' not recognized. ${suggestion}`\n )();\n }\n }\n }\n}\n\nfunction findSimilarOption(optionKey, loaders) {\n const lowerCaseOptionKey = optionKey.toLowerCase();\n let bestSuggestion = '';\n for (const loader of loaders) {\n for (const key in loader.options) {\n if (optionKey === key) {\n return `Did you mean \\'${loader.id}.${key}\\'?`;\n }\n const lowerCaseKey = key.toLowerCase();\n const isPartialMatch =\n lowerCaseOptionKey.startsWith(lowerCaseKey) || lowerCaseKey.startsWith(lowerCaseOptionKey);\n if (isPartialMatch) {\n bestSuggestion = bestSuggestion || `Did you mean \\'${loader.id}.${key}\\'?`;\n }\n }\n }\n return bestSuggestion;\n}\n\nfunction normalizeOptionsInternal(loader, options, url?: string) {\n const loaderDefaultOptions = loader.options || {};\n\n const mergedOptions = {...loaderDefaultOptions};\n\n addUrlOptions(mergedOptions, url);\n\n // LOGGING: options.log can be set to `null` to defeat logging\n if (mergedOptions.log === null) {\n mergedOptions.log = new NullLog();\n }\n\n mergeNestedFields(mergedOptions, getGlobalLoaderOptions());\n mergeNestedFields(mergedOptions, options);\n\n return mergedOptions;\n}\n\n// Merge nested options objects\nfunction mergeNestedFields(mergedOptions, options) {\n for (const key in options) {\n // Check for nested options\n // object in options => either no key in defaultOptions or object in defaultOptions\n if (key in options) {\n const value = options[key];\n if (isPureObject(value) && isPureObject(mergedOptions[key])) {\n mergedOptions[key] = {\n ...mergedOptions[key],\n ...options[key]\n };\n } else {\n mergedOptions[key] = options[key];\n }\n }\n // else: No need to merge nested opts, and the initial merge already copied over the nested options\n }\n}\n\n/**\n * Harvest information from the url\n * @deprecated This is mainly there to support a hack in the GLTFLoader\n * TODO - baseUri should be a directory, i.e. remove file component from baseUri\n * TODO - extract extension?\n * TODO - extract query parameters?\n * TODO - should these be injected on context instead of options?\n */\nfunction addUrlOptions(options, url?: string) {\n if (url && !('baseUri' in options)) {\n options.baseUri = url;\n }\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Log } from '@probe.gl/log';\nexport const probeLog = new Log({\n id: 'loaders.gl'\n});\nexport class NullLog {\n log() {\n return () => {};\n }\n info() {\n return () => {};\n }\n warn() {\n return () => {};\n }\n error() {\n return () => {};\n }\n}\nexport class ConsoleLog {\n constructor() {\n _defineProperty(this, \"console\", void 0);\n this.console = console;\n }\n log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.console.log.bind(this.console, ...args);\n }\n info() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.console.info.bind(this.console, ...args);\n }\n warn() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.console.warn.bind(this.console, ...args);\n }\n error() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.console.error.bind(this.console, ...args);\n }\n}\n//# sourceMappingURL=loggers.js.map","// probe.gl Log compatible loggers\nimport {Log} from '@probe.gl/log';\n\nexport const probeLog = new Log({id: 'loaders.gl'});\n\n// Logs nothing\nexport class NullLog {\n log() {\n return () => {};\n }\n info() {\n return () => {};\n }\n warn() {\n return () => {};\n }\n error() {\n return () => {};\n }\n}\n\n// Logs to console\nexport class ConsoleLog {\n console;\n\n constructor() {\n this.console = console; // eslint-disable-line\n }\n log(...args) {\n return this.console.log.bind(this.console, ...args);\n }\n info(...args) {\n return this.console.info.bind(this.console, ...args);\n }\n warn(...args) {\n return this.console.warn.bind(this.console, ...args);\n }\n error(...args) {\n return this.console.error.bind(this.console, ...args);\n }\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import { Log } from \"./log.js\";\nexport default new Log({\n id: '@probe.gl/log'\n});\nexport { Log } from \"./log.js\";\nexport { COLOR } from \"./utils/color.js\";\nexport { addColor } from \"./utils/color.js\";\nexport { leftPad, rightPad } from \"./utils/formatters.js\";\nexport { autobind } from \"./utils/autobind.js\";\nexport { LocalStorage } from \"./utils/local-storage.js\";\nexport { getHiResTimestamp } from \"./utils/hi-res-timestamp.js\";\nimport \"./init.js\";\n//# sourceMappingURL=index.js.map","import {Log} from './log';\n\n// DEFAULT EXPORT IS A LOG INSTANCE\nexport default new Log({id: '@probe.gl/log'});\n\n// LOGGING\nexport {Log} from './log';\nexport {COLOR} from './utils/color';\n\n// UTILITIES\nexport {addColor} from './utils/color';\nexport {leftPad, rightPad} from './utils/formatters';\nexport {autobind} from './utils/autobind';\nexport {LocalStorage} from './utils/local-storage';\nexport {getHiResTimestamp} from './utils/hi-res-timestamp';\n\nimport './init';\n","import { VERSION, isBrowser } from '@probe.gl/env';\nimport { LocalStorage } from \"./utils/local-storage.js\";\nimport { formatImage, formatTime, leftPad } from \"./utils/formatters.js\";\nimport { addColor } from \"./utils/color.js\";\nimport { autobind } from \"./utils/autobind.js\";\nimport assert from \"./utils/assert.js\";\nimport { getHiResTimestamp } from \"./utils/hi-res-timestamp.js\";\nconst originalConsole = {\n debug: isBrowser() ? console.debug || console.log : console.log,\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error\n};\nconst DEFAULT_LOG_CONFIGURATION = {\n enabled: true,\n level: 0\n};\n\nfunction noop() {}\n\nconst cache = {};\nconst ONCE = {\n once: true\n};\nexport class Log {\n constructor() {\n let {\n id\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n id: ''\n };\n this.id = void 0;\n this.VERSION = VERSION;\n this._startTs = getHiResTimestamp();\n this._deltaTs = getHiResTimestamp();\n this._storage = void 0;\n this.userData = {};\n this.LOG_THROTTLE_TIMEOUT = 0;\n this.id = id;\n this.userData = {};\n this._storage = new LocalStorage(\"__probe-\".concat(this.id, \"__\"), DEFAULT_LOG_CONFIGURATION);\n this.timeStamp(\"\".concat(this.id, \" started\"));\n autobind(this);\n Object.seal(this);\n }\n\n set level(newLevel) {\n this.setLevel(newLevel);\n }\n\n get level() {\n return this.getLevel();\n }\n\n isEnabled() {\n return this._storage.config.enabled;\n }\n\n getLevel() {\n return this._storage.config.level;\n }\n\n getTotal() {\n return Number((getHiResTimestamp() - this._startTs).toPrecision(10));\n }\n\n getDelta() {\n return Number((getHiResTimestamp() - this._deltaTs).toPrecision(10));\n }\n\n set priority(newPriority) {\n this.level = newPriority;\n }\n\n get priority() {\n return this.level;\n }\n\n getPriority() {\n return this.level;\n }\n\n enable() {\n let enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this._storage.setConfiguration({\n enabled\n });\n\n return this;\n }\n\n setLevel(level) {\n this._storage.setConfiguration({\n level\n });\n\n return this;\n }\n\n get(setting) {\n return this._storage.config[setting];\n }\n\n set(setting, value) {\n this._storage.setConfiguration({\n [setting]: value\n });\n }\n\n settings() {\n if (console.table) {\n console.table(this._storage.config);\n } else {\n console.log(this._storage.config);\n }\n }\n\n assert(condition, message) {\n assert(condition, message);\n }\n\n warn(message) {\n return this._getLogFunction(0, message, originalConsole.warn, arguments, ONCE);\n }\n\n error(message) {\n return this._getLogFunction(0, message, originalConsole.error, arguments);\n }\n\n deprecated(oldUsage, newUsage) {\n return this.warn(\"`\".concat(oldUsage, \"` is deprecated and will be removed in a later version. Use `\").concat(newUsage, \"` instead\"));\n }\n\n removed(oldUsage, newUsage) {\n return this.error(\"`\".concat(oldUsage, \"` has been removed. Use `\").concat(newUsage, \"` instead\"));\n }\n\n probe(logLevel, message) {\n return this._getLogFunction(logLevel, message, originalConsole.log, arguments, {\n time: true,\n once: true\n });\n }\n\n log(logLevel, message) {\n return this._getLogFunction(logLevel, message, originalConsole.debug, arguments);\n }\n\n info(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.info, arguments);\n }\n\n once(logLevel, message) {\n return this._getLogFunction(logLevel, message, originalConsole.debug || originalConsole.info, arguments, ONCE);\n }\n\n table(logLevel, table, columns) {\n if (table) {\n return this._getLogFunction(logLevel, table, console.table || noop, columns && [columns], {\n tag: getTableHeader(table)\n });\n }\n\n return noop;\n }\n\n image(_ref) {\n let {\n logLevel,\n priority,\n image,\n message = '',\n scale = 1\n } = _ref;\n\n if (!this._shouldLog(logLevel || priority)) {\n return noop;\n }\n\n return isBrowser() ? logImageInBrowser({\n image,\n message,\n scale\n }) : logImageInNode({\n image,\n message,\n scale\n });\n }\n\n time(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);\n }\n\n timeEnd(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeEnd ? console.timeEnd : console.info);\n }\n\n timeStamp(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeStamp || noop);\n }\n\n group(logLevel, message) {\n let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n collapsed: false\n };\n const options = normalizeArguments({\n logLevel,\n message,\n opts\n });\n const {\n collapsed\n } = opts;\n options.method = (collapsed ? console.groupCollapsed : console.group) || console.info;\n return this._getLogFunction(options);\n }\n\n groupCollapsed(logLevel, message) {\n let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.group(logLevel, message, Object.assign({}, opts, {\n collapsed: true\n }));\n }\n\n groupEnd(logLevel) {\n return this._getLogFunction(logLevel, '', console.groupEnd || noop);\n }\n\n withGroup(logLevel, message, func) {\n this.group(logLevel, message)();\n\n try {\n func();\n } finally {\n this.groupEnd(logLevel)();\n }\n }\n\n trace() {\n if (console.trace) {\n console.trace();\n }\n }\n\n _shouldLog(logLevel) {\n return this.isEnabled() && this.getLevel() >= normalizeLogLevel(logLevel);\n }\n\n _getLogFunction(logLevel, message, method, args, opts) {\n if (this._shouldLog(logLevel)) {\n opts = normalizeArguments({\n logLevel,\n message,\n args,\n opts\n });\n method = method || opts.method;\n assert(method);\n opts.total = this.getTotal();\n opts.delta = this.getDelta();\n this._deltaTs = getHiResTimestamp();\n const tag = opts.tag || opts.message;\n\n if (opts.once && tag) {\n if (!cache[tag]) {\n cache[tag] = getHiResTimestamp();\n } else {\n return noop;\n }\n }\n\n message = decorateMessage(this.id, opts.message, opts);\n return method.bind(console, message, ...opts.args);\n }\n\n return noop;\n }\n\n}\nLog.VERSION = VERSION;\n\nfunction normalizeLogLevel(logLevel) {\n if (!logLevel) {\n return 0;\n }\n\n let resolvedLevel;\n\n switch (typeof logLevel) {\n case 'number':\n resolvedLevel = logLevel;\n break;\n\n case 'object':\n resolvedLevel = logLevel.logLevel || logLevel.priority || 0;\n break;\n\n default:\n return 0;\n }\n\n assert(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);\n return resolvedLevel;\n}\n\nexport function normalizeArguments(opts) {\n const {\n logLevel,\n message\n } = opts;\n opts.logLevel = normalizeLogLevel(logLevel);\n const args = opts.args ? Array.from(opts.args) : [];\n\n while (args.length && args.shift() !== message) {}\n\n switch (typeof logLevel) {\n case 'string':\n case 'function':\n if (message !== undefined) {\n args.unshift(message);\n }\n\n opts.message = logLevel;\n break;\n\n case 'object':\n Object.assign(opts, logLevel);\n break;\n\n default:\n }\n\n if (typeof opts.message === 'function') {\n opts.message = opts.message();\n }\n\n const messageType = typeof opts.message;\n assert(messageType === 'string' || messageType === 'object');\n return Object.assign(opts, {\n args\n }, opts.opts);\n}\n\nfunction decorateMessage(id, message, opts) {\n if (typeof message === 'string') {\n const time = opts.time ? leftPad(formatTime(opts.total)) : '';\n message = opts.time ? \"\".concat(id, \": \").concat(time, \" \").concat(message) : \"\".concat(id, \": \").concat(message);\n message = addColor(message, opts.color, opts.background);\n }\n\n return message;\n}\n\nfunction logImageInNode(_ref2) {\n let {\n image,\n message = '',\n scale = 1\n } = _ref2;\n console.warn('removed');\n return noop;\n}\n\nfunction logImageInBrowser(_ref3) {\n let {\n image,\n message = '',\n scale = 1\n } = _ref3;\n\n if (typeof image === 'string') {\n const img = new Image();\n\n img.onload = () => {\n const args = formatImage(img, message, scale);\n console.log(...args);\n };\n\n img.src = image;\n return noop;\n }\n\n const element = image.nodeName || '';\n\n if (element.toLowerCase() === 'img') {\n console.log(...formatImage(image, message, scale));\n return noop;\n }\n\n if (element.toLowerCase() === 'canvas') {\n const img = new Image();\n\n img.onload = () => console.log(...formatImage(img, message, scale));\n\n img.src = image.toDataURL();\n return noop;\n }\n\n return noop;\n}\n\nfunction getTableHeader(table) {\n for (const key in table) {\n for (const title in table[key]) {\n return title || 'untitled';\n }\n }\n\n return 'empty';\n}\n//# sourceMappingURL=log.js.map","// probe.gl, MIT license\n\n/* eslint-disable no-console */\nimport {VERSION, isBrowser} from '@probe.gl/env';\nimport {LocalStorage} from './utils/local-storage';\nimport {formatImage, formatTime, leftPad} from './utils/formatters';\nimport {addColor} from './utils/color';\nimport {autobind} from './utils/autobind';\nimport assert from './utils/assert';\nimport {getHiResTimestamp} from './utils/hi-res-timestamp';\n\n/** \"Global\" log configuration settings */\ntype LogConfiguration = {\n enabled?: boolean;\n level?: number;\n [key: string]: unknown;\n};\n\n/** Options when logging a message */\ntype LogOptions = {\n method?: Function;\n time?: boolean;\n total?: number;\n delta?: number;\n tag?: string;\n message?: string;\n once?: boolean;\n nothrottle?: boolean;\n args?: any;\n};\n\ntype LogFunction = () => void;\n\ntype Table = Record;\n\n// Instrumentation in other packages may override console methods, so preserve them here\nconst originalConsole = {\n debug: isBrowser() ? console.debug || console.log : console.log,\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error\n};\n\nconst DEFAULT_LOG_CONFIGURATION: Required = {\n enabled: true,\n level: 0\n};\n\nfunction noop() {} // eslint-disable-line @typescript-eslint/no-empty-function\n\nconst cache = {};\nconst ONCE = {once: true};\n\n/** A console wrapper */\n\nexport class Log {\n static VERSION = VERSION;\n\n id: string;\n VERSION: string = VERSION;\n _startTs: number = getHiResTimestamp();\n _deltaTs: number = getHiResTimestamp();\n _storage: LocalStorage;\n userData = {};\n\n // TODO - fix support from throttling groups\n LOG_THROTTLE_TIMEOUT: number = 0; // Time before throttled messages are logged again\n\n constructor({id} = {id: ''}) {\n this.id = id;\n this.userData = {};\n this._storage = new LocalStorage(\n `__probe-${this.id}__`,\n DEFAULT_LOG_CONFIGURATION\n );\n\n this.timeStamp(`${this.id} started`);\n\n autobind(this);\n Object.seal(this);\n }\n\n set level(newLevel: number) {\n this.setLevel(newLevel);\n }\n\n get level(): number {\n return this.getLevel();\n }\n\n isEnabled(): boolean {\n return this._storage.config.enabled;\n }\n\n getLevel(): number {\n return this._storage.config.level;\n }\n\n /** @return milliseconds, with fractions */\n getTotal(): number {\n return Number((getHiResTimestamp() - this._startTs).toPrecision(10));\n }\n\n /** @return milliseconds, with fractions */\n getDelta(): number {\n return Number((getHiResTimestamp() - this._deltaTs).toPrecision(10));\n }\n\n /** @deprecated use logLevel */\n set priority(newPriority: number) {\n this.level = newPriority;\n }\n\n /** @deprecated use logLevel */\n get priority(): number {\n return this.level;\n }\n\n /** @deprecated use logLevel */\n getPriority(): number {\n return this.level;\n }\n\n // Configure\n\n enable(enabled: boolean = true): this {\n this._storage.setConfiguration({enabled});\n return this;\n }\n\n setLevel(level: number): this {\n this._storage.setConfiguration({level});\n return this;\n }\n\n /** return the current status of the setting */\n get(setting: string): any {\n return this._storage.config[setting];\n }\n\n // update the status of the setting\n set(setting: string, value: any): void {\n this._storage.setConfiguration({[setting]: value});\n }\n\n /** Logs the current settings as a table */\n settings(): void {\n if (console.table) {\n console.table(this._storage.config);\n } else {\n console.log(this._storage.config);\n }\n }\n\n // Unconditional logging\n\n assert(condition: unknown, message?: string): asserts condition {\n assert(condition, message);\n }\n\n /** Warn, but only once, no console flooding */\n warn(message: string, ...args: unknown[]): LogFunction;\n warn(message: string): LogFunction {\n return this._getLogFunction(0, message, originalConsole.warn, arguments, ONCE);\n }\n\n /** Print an error */\n error(message: string, ...args: unknown[]): LogFunction;\n error(message: string): LogFunction {\n return this._getLogFunction(0, message, originalConsole.error, arguments);\n }\n\n /** Print a deprecation warning */\n deprecated(oldUsage: string, newUsage: string): LogFunction {\n return this.warn(`\\`${oldUsage}\\` is deprecated and will be removed \\\nin a later version. Use \\`${newUsage}\\` instead`);\n }\n\n /** Print a removal warning */\n removed(oldUsage: string, newUsage: string): LogFunction {\n return this.error(`\\`${oldUsage}\\` has been removed. Use \\`${newUsage}\\` instead`);\n }\n\n // Conditional logging\n\n /** Log to a group */\n probe(logLevel, message?, ...args: unknown[]): LogFunction;\n probe(logLevel, message?): LogFunction {\n return this._getLogFunction(logLevel, message, originalConsole.log, arguments, {\n time: true,\n once: true\n });\n }\n\n /** Log a debug message */\n log(logLevel, message?, ...args: unknown[]): LogFunction;\n log(logLevel, message?): LogFunction {\n return this._getLogFunction(logLevel, message, originalConsole.debug, arguments);\n }\n\n /** Log a normal message */\n info(logLevel, message?, ...args: unknown[]): LogFunction;\n info(logLevel, message?): LogFunction {\n return this._getLogFunction(logLevel, message, console.info, arguments);\n }\n\n /** Log a normal message, but only once, no console flooding */\n once(logLevel, message?, ...args: unknown[]): LogFunction;\n once(logLevel, message?) {\n return this._getLogFunction(\n logLevel,\n message,\n originalConsole.debug || originalConsole.info,\n arguments,\n ONCE\n );\n }\n\n /** Logs an object as a table */\n table(logLevel, table?, columns?): LogFunction {\n if (table) {\n return this._getLogFunction(\n logLevel,\n table,\n console.table || noop,\n (columns && [columns]) as unknown as IArguments,\n {\n tag: getTableHeader(table)\n }\n );\n }\n return noop;\n }\n\n /** logs an image under Chrome */\n image({\n logLevel,\n priority,\n image,\n message = '',\n scale = 1\n }: {\n logLevel?: number;\n priority?: number;\n image: any;\n message?: string;\n scale?: number;\n }): LogFunction {\n if (!this._shouldLog(logLevel || priority)) {\n return noop;\n }\n return isBrowser()\n ? logImageInBrowser({image, message, scale})\n : logImageInNode({image, message, scale});\n }\n\n time(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);\n }\n\n timeEnd(logLevel, message) {\n return this._getLogFunction(\n logLevel,\n message,\n console.timeEnd ? console.timeEnd : console.info\n );\n }\n\n timeStamp(logLevel, message?) {\n return this._getLogFunction(logLevel, message, console.timeStamp || noop);\n }\n\n group(logLevel, message, opts = {collapsed: false}) {\n const options = normalizeArguments({logLevel, message, opts});\n const {collapsed} = opts;\n // @ts-expect-error\n options.method = (collapsed ? console.groupCollapsed : console.group) || console.info;\n\n return this._getLogFunction(options);\n }\n\n groupCollapsed(logLevel, message, opts = {}) {\n return this.group(logLevel, message, Object.assign({}, opts, {collapsed: true}));\n }\n\n groupEnd(logLevel) {\n return this._getLogFunction(logLevel, '', console.groupEnd || noop);\n }\n\n // EXPERIMENTAL\n\n withGroup(logLevel: number, message: string, func: Function): void {\n this.group(logLevel, message)();\n\n try {\n func();\n } finally {\n this.groupEnd(logLevel)();\n }\n }\n\n trace(): void {\n if (console.trace) {\n console.trace();\n }\n }\n\n // PRIVATE METHODS\n\n /** Deduces log level from a variety of arguments */\n _shouldLog(logLevel: unknown): boolean {\n return this.isEnabled() && this.getLevel() >= normalizeLogLevel(logLevel);\n }\n\n _getLogFunction(\n logLevel: unknown,\n message?: unknown,\n method?: Function,\n args?: IArguments,\n opts?: LogOptions\n ): LogFunction {\n if (this._shouldLog(logLevel)) {\n // normalized opts + timings\n opts = normalizeArguments({logLevel, message, args, opts});\n method = method || opts.method;\n assert(method);\n\n opts.total = this.getTotal();\n opts.delta = this.getDelta();\n // reset delta timer\n this._deltaTs = getHiResTimestamp();\n\n const tag = opts.tag || opts.message;\n\n if (opts.once && tag) {\n if (!cache[tag]) {\n cache[tag] = getHiResTimestamp();\n } else {\n return noop;\n }\n }\n\n // TODO - Make throttling work with groups\n // if (opts.nothrottle || !throttle(tag, this.LOG_THROTTLE_TIMEOUT)) {\n // return noop;\n // }\n\n message = decorateMessage(this.id, opts.message, opts);\n\n // Bind console function so that it can be called after being returned\n return method.bind(console, message, ...opts.args);\n }\n return noop;\n }\n}\n\n/**\n * Get logLevel from first argument:\n * - log(logLevel, message, args) => logLevel\n * - log(message, args) => 0\n * - log({logLevel, ...}, message, args) => logLevel\n * - log({logLevel, message, args}) => logLevel\n */\nfunction normalizeLogLevel(logLevel: unknown): number {\n if (!logLevel) {\n return 0;\n }\n let resolvedLevel;\n\n switch (typeof logLevel) {\n case 'number':\n resolvedLevel = logLevel;\n break;\n\n case 'object':\n // Backward compatibility\n // TODO - deprecate `priority`\n // @ts-expect-error\n resolvedLevel = logLevel.logLevel || logLevel.priority || 0;\n break;\n\n default:\n return 0;\n }\n // 'log level must be a number'\n assert(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);\n\n return resolvedLevel;\n}\n\n/**\n * \"Normalizes\" the various argument patterns into an object with known types\n * - log(logLevel, message, args) => {logLevel, message, args}\n * - log(message, args) => {logLevel: 0, message, args}\n * - log({logLevel, ...}, message, args) => {logLevel, message, args}\n * - log({logLevel, message, args}) => {logLevel, message, args}\n */\nexport function normalizeArguments(opts: {\n logLevel;\n message;\n collapsed?: boolean;\n args?: IArguments | undefined;\n opts?;\n}): {\n logLevel: number;\n message: string;\n args: any[];\n} {\n const {logLevel, message} = opts;\n opts.logLevel = normalizeLogLevel(logLevel);\n\n // We use `arguments` instead of rest parameters (...args) because IE\n // does not support the syntax. Rest parameters is transpiled to code with\n // perf impact. Doing it here instead avoids constructing args when logging is\n // disabled.\n // TODO - remove when/if IE support is dropped\n const args: any[] = opts.args ? Array.from(opts.args) : [];\n // args should only contain arguments that appear after `message`\n // eslint-disable-next-line no-empty\n while (args.length && args.shift() !== message) {}\n\n switch (typeof logLevel) {\n case 'string':\n case 'function':\n if (message !== undefined) {\n args.unshift(message);\n }\n opts.message = logLevel;\n break;\n\n case 'object':\n Object.assign(opts, logLevel);\n break;\n\n default:\n }\n\n // Resolve functions into strings by calling them\n if (typeof opts.message === 'function') {\n opts.message = opts.message();\n }\n const messageType = typeof opts.message;\n // 'log message must be a string' or object\n assert(messageType === 'string' || messageType === 'object');\n\n // original opts + normalized opts + opts arg + fixed up message\n return Object.assign(opts, {args}, opts.opts);\n}\n\nfunction decorateMessage(id, message, opts) {\n if (typeof message === 'string') {\n const time = opts.time ? leftPad(formatTime(opts.total)) : '';\n message = opts.time ? `${id}: ${time} ${message}` : `${id}: ${message}`;\n message = addColor(message, opts.color, opts.background);\n }\n return message;\n}\n\n/** @deprecated Function removed */\nfunction logImageInNode({image, message = '', scale = 1}) {\n console.warn('removed');\n return noop;\n}\n\nfunction logImageInBrowser({image, message = '', scale = 1}) {\n if (typeof image === 'string') {\n const img = new Image();\n img.onload = () => {\n const args = formatImage(img, message, scale);\n console.log(...args);\n };\n img.src = image;\n return noop;\n }\n const element = image.nodeName || '';\n if (element.toLowerCase() === 'img') {\n console.log(...formatImage(image, message, scale));\n return noop;\n }\n if (element.toLowerCase() === 'canvas') {\n const img = new Image();\n img.onload = () => console.log(...formatImage(img, message, scale));\n img.src = image.toDataURL();\n return noop;\n }\n return noop;\n}\n\nfunction getTableHeader(table: Table): string {\n for (const key in table) {\n for (const title in table[key]) {\n return title || 'untitled';\n }\n }\n return 'empty';\n}\n","import isElectron from \"./is-electron.js\";\nexport default function isBrowser() {\n const isNode = typeof process === 'object' && String(process) === '[object process]' && !process.browser;\n return !isNode || isElectron();\n}\nexport function isBrowserMainThread() {\n return isBrowser() && typeof document !== 'undefined';\n}\n//# sourceMappingURL=is-browser.js.map","// This function is needed in initialization stages,\n// make sure it can be imported in isolation\n\nimport isElectron from './is-electron';\n\nexport default function isBrowser(): boolean {\n // Check if in browser by duck-typing Node context\n const isNode =\n // @ts-expect-error\n typeof process === 'object' && String(process) === '[object process]' && !process.browser;\n\n return !isNode || isElectron();\n}\n\n// document does not exist on worker thread\nexport function isBrowserMainThread(): boolean {\n return isBrowser() && typeof document !== 'undefined';\n}\n","export default function isElectron(mockUserAgent) {\n if (typeof window !== 'undefined' && typeof window.process === 'object' && window.process.type === 'renderer') {\n return true;\n }\n\n if (typeof process !== 'undefined' && typeof process.versions === 'object' && Boolean(process.versions['electron'])) {\n return true;\n }\n\n const realUserAgent = typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent;\n const userAgent = mockUserAgent || realUserAgent;\n\n if (userAgent && userAgent.indexOf('Electron') >= 0) {\n return true;\n }\n\n return false;\n}\n//# sourceMappingURL=is-electron.js.map","// based on https://github.com/cheton/is-electron\n// https://github.com/electron/electron/issues/2288\n/* eslint-disable complexity */\nexport default function isElectron(mockUserAgent?: string): boolean {\n // Renderer process\n if (\n typeof window !== 'undefined' &&\n typeof window.process === 'object' &&\n // @ts-expect-error\n window.process.type === 'renderer'\n ) {\n return true;\n }\n // Main process\n if (\n typeof process !== 'undefined' &&\n typeof process.versions === 'object' &&\n // eslint-disable-next-line\n Boolean(process.versions['electron'])\n ) {\n return true;\n }\n // Detect the user agent when the `nodeIntegration` option is set to true\n const realUserAgent =\n typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent;\n const userAgent = mockUserAgent || realUserAgent;\n if (userAgent && userAgent.indexOf('Electron') >= 0) {\n return true;\n }\n return false;\n}\n","import checkIfBrowser from \"../lib/is-browser.js\";\nexport { self, window, global, document, process, console } from \"../lib/globals.js\";\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\nexport const isBrowser = checkIfBrowser();\n//# sourceMappingURL=globals.js.map","import checkIfBrowser from '../lib/is-browser';\n\nexport {self, window, global, document, process, console} from '../lib/globals';\n\n// Extract injected version from package.json (injected by babel plugin)\n// @ts-expect-error\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\n\nexport const isBrowser = checkIfBrowser();\n","function getStorage(type) {\n try {\n const storage = window[type];\n const x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return storage;\n } catch (e) {\n return null;\n }\n}\n\nexport class LocalStorage {\n constructor(id, defaultConfig) {\n let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'sessionStorage';\n this.storage = void 0;\n this.id = void 0;\n this.config = void 0;\n this.storage = getStorage(type);\n this.id = id;\n this.config = defaultConfig;\n\n this._loadConfiguration();\n }\n\n getConfiguration() {\n return this.config;\n }\n\n setConfiguration(configuration) {\n Object.assign(this.config, configuration);\n\n if (this.storage) {\n const serialized = JSON.stringify(this.config);\n this.storage.setItem(this.id, serialized);\n }\n }\n\n _loadConfiguration() {\n let configuration = {};\n\n if (this.storage) {\n const serializedConfiguration = this.storage.getItem(this.id);\n configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};\n }\n\n Object.assign(this.config, configuration);\n return this;\n }\n\n}\n//# sourceMappingURL=local-storage.js.map","// probe.gl, MIT license\n\nexport type StorageType = 'sessionStorage' | 'localStorage';\n\nfunction getStorage(type: StorageType): Storage | null {\n try {\n const storage: Storage = window[type];\n const x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return storage;\n } catch (e) {\n return null;\n }\n}\n\n// Store keys in local storage via simple interface\nexport class LocalStorage {\n storage: Storage | null;\n id: string;\n config: Required;\n\n constructor(\n id: string,\n defaultConfig: Required,\n type: StorageType = 'sessionStorage'\n ) {\n this.storage = getStorage(type);\n this.id = id;\n this.config = defaultConfig;\n this._loadConfiguration();\n }\n\n getConfiguration(): Required {\n return this.config;\n }\n\n setConfiguration(configuration: Configuration): void {\n Object.assign(this.config, configuration);\n if (this.storage) {\n const serialized = JSON.stringify(this.config);\n this.storage.setItem(this.id, serialized);\n }\n }\n\n // Get config from persistent store, if available\n _loadConfiguration() {\n let configuration = {};\n if (this.storage) {\n const serializedConfiguration = this.storage.getItem(this.id);\n configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};\n }\n Object.assign(this.config, configuration);\n return this;\n }\n}\n","export function formatTime(ms) {\n let formatted;\n\n if (ms < 10) {\n formatted = \"\".concat(ms.toFixed(2), \"ms\");\n } else if (ms < 100) {\n formatted = \"\".concat(ms.toFixed(1), \"ms\");\n } else if (ms < 1000) {\n formatted = \"\".concat(ms.toFixed(0), \"ms\");\n } else {\n formatted = \"\".concat((ms / 1000).toFixed(2), \"s\");\n }\n\n return formatted;\n}\nexport function leftPad(string) {\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 8;\n const padLength = Math.max(length - string.length, 0);\n return \"\".concat(' '.repeat(padLength)).concat(string);\n}\nexport function rightPad(string) {\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 8;\n const padLength = Math.max(length - string.length, 0);\n return \"\".concat(string).concat(' '.repeat(padLength));\n}\nexport function formatValue(v) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const EPSILON = 1e-16;\n const {\n isInteger = false\n } = options;\n\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, options);\n }\n\n if (!Number.isFinite(v)) {\n return String(v);\n }\n\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n\n if (isInteger) {\n return v.toFixed(0);\n }\n\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n return v.toFixed(0);\n }\n\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n\nfunction formatArrayValue(v, options) {\n const {\n maxElts = 16,\n size = 1\n } = options;\n let string = '[';\n\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += \",\".concat(i % size === 0 ? ' ' : '');\n }\n\n string += formatValue(v[i], options);\n }\n\n const terminator = v.length > maxElts ? '...' : ']';\n return \"\".concat(string).concat(terminator);\n}\n\nexport function formatImage(image, message, scale) {\n let maxWidth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 600;\n const imageUrl = image.src.replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n\n if (image.width > maxWidth) {\n scale = Math.min(scale, maxWidth / image.width);\n }\n\n const width = image.width * scale;\n const height = image.height * scale;\n const style = ['font-size:1px;', \"padding:\".concat(Math.floor(height / 2), \"px \").concat(Math.floor(width / 2), \"px;\"), \"line-height:\".concat(height, \"px;\"), \"background:url(\".concat(imageUrl, \");\"), \"background-size:\".concat(width, \"px \").concat(height, \"px;\"), 'color:transparent;'].join('');\n return [\"\".concat(message, \" %c+\"), style];\n}\n//# sourceMappingURL=formatters.js.map","// probe.gl, MIT license\n\nexport type FormatValueOptions = {\n isInteger?: boolean;\n maxElts?: number;\n size?: number;\n};\n\n/**\n * Format time\n */\nexport function formatTime(ms: number): string {\n let formatted;\n if (ms < 10) {\n formatted = `${ms.toFixed(2)}ms`;\n } else if (ms < 100) {\n formatted = `${ms.toFixed(1)}ms`;\n } else if (ms < 1000) {\n formatted = `${ms.toFixed(0)}ms`;\n } else {\n formatted = `${(ms / 1000).toFixed(2)}s`;\n }\n return formatted;\n}\n\nexport function leftPad(string: string, length: number = 8): string {\n const padLength = Math.max(length - string.length, 0);\n return `${' '.repeat(padLength)}${string}`;\n}\n\nexport function rightPad(string: string, length: number = 8): string {\n const padLength = Math.max(length - string.length, 0);\n return `${string}${' '.repeat(padLength)}`;\n}\n\nexport function formatValue(v: unknown, options: FormatValueOptions = {}): string {\n const EPSILON = 1e-16;\n const {isInteger = false} = options;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, options);\n }\n if (!Number.isFinite(v)) {\n return String(v);\n }\n // @ts-expect-error\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n if (isInteger) {\n // @ts-expect-error\n return v.toFixed(0);\n }\n // @ts-expect-error\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n // @ts-expect-error\n return v.toFixed(0);\n }\n // @ts-expect-error\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n\n/** Helper to formatValue */\nfunction formatArrayValue(v: any, options: FormatValueOptions) {\n const {maxElts = 16, size = 1} = options;\n let string = '[';\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += `,${i % size === 0 ? ' ' : ''}`;\n }\n string += formatValue(v[i], options);\n }\n const terminator = v.length > maxElts ? '...' : ']';\n return `${string}${terminator}`;\n}\n\n/**\n * Log an image to the console (uses browser specific console formatting styles)\n * Inspired by https://github.com/hughsk/console-image (MIT license)\n */\nexport function formatImage(image: any, message: string, scale: number, maxWidth: number = 600) {\n const imageUrl = image.src.replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n\n if (image.width > maxWidth) {\n scale = Math.min(scale, maxWidth / image.width);\n }\n\n const width = image.width * scale;\n const height = image.height * scale;\n\n const style = [\n 'font-size:1px;',\n `padding:${Math.floor(height / 2)}px ${Math.floor(width / 2)}px;`,\n `line-height:${height}px;`,\n `background:url(${imageUrl});`,\n `background-size:${width}px ${height}px;`,\n 'color:transparent;'\n ].join('');\n\n return [`${message} %c+`, style];\n}\n","import { isBrowser } from '@probe.gl/env';\nexport let COLOR;\n\n(function (COLOR) {\n COLOR[COLOR[\"BLACK\"] = 30] = \"BLACK\";\n COLOR[COLOR[\"RED\"] = 31] = \"RED\";\n COLOR[COLOR[\"GREEN\"] = 32] = \"GREEN\";\n COLOR[COLOR[\"YELLOW\"] = 33] = \"YELLOW\";\n COLOR[COLOR[\"BLUE\"] = 34] = \"BLUE\";\n COLOR[COLOR[\"MAGENTA\"] = 35] = \"MAGENTA\";\n COLOR[COLOR[\"CYAN\"] = 36] = \"CYAN\";\n COLOR[COLOR[\"WHITE\"] = 37] = \"WHITE\";\n COLOR[COLOR[\"BRIGHT_BLACK\"] = 90] = \"BRIGHT_BLACK\";\n COLOR[COLOR[\"BRIGHT_RED\"] = 91] = \"BRIGHT_RED\";\n COLOR[COLOR[\"BRIGHT_GREEN\"] = 92] = \"BRIGHT_GREEN\";\n COLOR[COLOR[\"BRIGHT_YELLOW\"] = 93] = \"BRIGHT_YELLOW\";\n COLOR[COLOR[\"BRIGHT_BLUE\"] = 94] = \"BRIGHT_BLUE\";\n COLOR[COLOR[\"BRIGHT_MAGENTA\"] = 95] = \"BRIGHT_MAGENTA\";\n COLOR[COLOR[\"BRIGHT_CYAN\"] = 96] = \"BRIGHT_CYAN\";\n COLOR[COLOR[\"BRIGHT_WHITE\"] = 97] = \"BRIGHT_WHITE\";\n})(COLOR || (COLOR = {}));\n\nconst BACKGROUND_INCREMENT = 10;\n\nfunction getColor(color) {\n if (typeof color !== 'string') {\n return color;\n }\n\n color = color.toUpperCase();\n return COLOR[color] || COLOR.WHITE;\n}\n\nexport function addColor(string, color, background) {\n if (!isBrowser && typeof string === 'string') {\n if (color) {\n const colorCode = getColor(color);\n string = \"\\x1B[\".concat(colorCode, \"m\").concat(string, \"\\x1B[39m\");\n }\n\n if (background) {\n const colorCode = getColor(background);\n string = \"\\x1B[\".concat(colorCode + BACKGROUND_INCREMENT, \"m\").concat(string, \"\\x1B[49m\");\n }\n }\n\n return string;\n}\n//# sourceMappingURL=color.js.map","import {isBrowser} from '@probe.gl/env';\n\nexport enum COLOR {\n BLACK = 30,\n RED = 31,\n GREEN = 32,\n YELLOW = 33,\n BLUE = 34,\n MAGENTA = 35,\n CYAN = 36,\n WHITE = 37,\n\n BRIGHT_BLACK = 90,\n BRIGHT_RED = 91,\n BRIGHT_GREEN = 92,\n BRIGHT_YELLOW = 93,\n BRIGHT_BLUE = 94,\n BRIGHT_MAGENTA = 95,\n BRIGHT_CYAN = 96,\n BRIGHT_WHITE = 97\n}\n\nconst BACKGROUND_INCREMENT = 10;\n\nfunction getColor(color: string | COLOR): number {\n if (typeof color !== 'string') {\n return color;\n }\n color = color.toUpperCase();\n return COLOR[color] || COLOR.WHITE;\n}\n\nexport function addColor(\n string: string,\n color: string | COLOR,\n background?: string | COLOR\n): string {\n if (!isBrowser && typeof string === 'string') {\n if (color) {\n const colorCode = getColor(color);\n string = `\\u001b[${colorCode}m${string}\\u001b[39m`;\n }\n if (background) {\n // background colors values are +10\n const colorCode = getColor(background);\n string = `\\u001b[${colorCode + BACKGROUND_INCREMENT}m${string}\\u001b[49m`;\n }\n }\n return string;\n}\n","export function autobind(obj) {\n let predefined = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ['constructor'];\n const proto = Object.getPrototypeOf(obj);\n const propNames = Object.getOwnPropertyNames(proto);\n const object = obj;\n\n for (const key of propNames) {\n const value = object[key];\n\n if (typeof value === 'function') {\n if (!predefined.find(name => key === name)) {\n object[key] = value.bind(obj);\n }\n }\n }\n}\n//# sourceMappingURL=autobind.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/**\n * Binds the \"this\" argument of all functions on a class instance to the instance\n * @param obj - class instance (typically a react component)\n */\nexport function autobind(obj: object, predefined = ['constructor']): void {\n const proto = Object.getPrototypeOf(obj);\n const propNames = Object.getOwnPropertyNames(proto);\n\n const object = obj as Record;\n for (const key of propNames) {\n const value = object[key];\n if (typeof value === 'function') {\n if (!predefined.find(name => key === name)) {\n object[key] = value.bind(obj);\n }\n }\n }\n}\n","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n//# sourceMappingURL=assert.js.map","export default function assert(condition: unknown, message?: string): asserts condition {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n","import { window, process, isBrowser } from '@probe.gl/env';\nexport function getHiResTimestamp() {\n let timestamp;\n\n if (isBrowser() && window.performance) {\n var _window$performance, _window$performance$n;\n\n timestamp = window === null || window === void 0 ? void 0 : (_window$performance = window.performance) === null || _window$performance === void 0 ? void 0 : (_window$performance$n = _window$performance.now) === null || _window$performance$n === void 0 ? void 0 : _window$performance$n.call(_window$performance);\n } else if ('hrtime' in process) {\n var _process$hrtime;\n\n const timeParts = process === null || process === void 0 ? void 0 : (_process$hrtime = process.hrtime) === null || _process$hrtime === void 0 ? void 0 : _process$hrtime.call(process);\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else {\n timestamp = Date.now();\n }\n\n return timestamp;\n}\n//# sourceMappingURL=hi-res-timestamp.js.map","// probe.gl, MIT license\n\nimport {window, process, isBrowser} from '@probe.gl/env';\n\n/** Get best timer available. */\nexport function getHiResTimestamp() {\n let timestamp;\n if (isBrowser() && window.performance) {\n timestamp = window?.performance?.now?.();\n } else if ('hrtime' in process) {\n // @ts-ignore\n const timeParts = process?.hrtime?.();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else {\n timestamp = Date.now();\n }\n\n return timestamp;\n}\n","const global_ = globalThis;\nconst self_ = globalThis.self || globalThis.window || globalThis.global;\nconst window_ = globalThis.window || globalThis.self || globalThis.global;\nconst document_ = globalThis.document || {};\nconst process_ = globalThis.process || {};\nconst console_ = globalThis.console;\nconst navigator_ = globalThis.navigator || {};\nexport { global_ as global, self_ as self, window_ as window, document_ as document, process_ as process, console_ as console, navigator_ as navigator };\n//# sourceMappingURL=globals.js.map","// Do not name these variables the same as the global objects - will break bundling\nconst global_ = globalThis;\n// eslint-disable-next-line consistent-this\nconst self_ = globalThis.self || globalThis.window || globalThis.global;\nconst window_ = (globalThis.window || globalThis.self || globalThis.global) as unknown as Window;\nconst document_ = globalThis.document || ({} as Document);\nconst process_ = globalThis.process || {};\nconst console_ = globalThis.console;\nconst navigator_ = globalThis.navigator || ({} as Navigator);\n\nexport {\n global_ as global,\n self_ as self,\n window_ as window,\n document_ as document,\n process_ as process,\n console_ as console,\n navigator_ as navigator\n};\n","import { isBrowser } from '@loaders.gl/loader-utils';\nimport { ConsoleLog } from './loggers';\nexport const DEFAULT_LOADER_OPTIONS = {\n fetch: null,\n mimeType: undefined,\n nothrow: false,\n log: new ConsoleLog(),\n CDN: 'https://unpkg.com/@loaders.gl',\n worker: true,\n maxConcurrency: 3,\n maxMobileConcurrency: 1,\n reuseWorkers: isBrowser,\n _nodeWorkers: false,\n _workerType: '',\n limit: 0,\n _limitMB: 0,\n batchSize: 'auto',\n batchDebounceMs: 0,\n metadata: false,\n transforms: []\n};\nexport const REMOVED_LOADER_OPTIONS = {\n throws: 'nothrow',\n dataType: '(no longer used)',\n uri: 'baseUri',\n method: 'fetch.method',\n headers: 'fetch.headers',\n body: 'fetch.body',\n mode: 'fetch.mode',\n credentials: 'fetch.credentials',\n cache: 'fetch.cache',\n redirect: 'fetch.redirect',\n referrer: 'fetch.referrer',\n referrerPolicy: 'fetch.referrerPolicy',\n integrity: 'fetch.integrity',\n keepalive: 'fetch.keepalive',\n signal: 'fetch.signal'\n};\n//# sourceMappingURL=option-defaults.js.map","import type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {isBrowser} from '@loaders.gl/loader-utils';\nimport {ConsoleLog} from './loggers';\n\nexport const DEFAULT_LOADER_OPTIONS: LoaderOptions = {\n // baseUri\n fetch: null,\n mimeType: undefined,\n nothrow: false,\n log: new ConsoleLog(), // A probe.gl compatible (`log.log()()` syntax) that just logs to console\n\n CDN: 'https://unpkg.com/@loaders.gl',\n worker: true, // By default, use worker if provided by loader.\n maxConcurrency: 3, // How many worker instances should be created for each loader.\n maxMobileConcurrency: 1, // How many worker instances should be created for each loader on mobile devices.\n reuseWorkers: isBrowser, // By default reuse workers in browser (Node.js refuses to terminate if browsers are running)\n _nodeWorkers: false, // By default do not support node workers\n _workerType: '', // 'test' to use locally generated workers\n\n limit: 0,\n _limitMB: 0,\n batchSize: 'auto',\n batchDebounceMs: 0,\n metadata: false, // TODO - currently only implemented for parseInBatches, adds initial metadata batch,\n transforms: []\n};\n\nexport const REMOVED_LOADER_OPTIONS = {\n throws: 'nothrow',\n dataType: '(no longer used)',\n uri: 'baseUri',\n // Warn if fetch options are used on top-level\n method: 'fetch.method',\n headers: 'fetch.headers',\n body: 'fetch.body',\n mode: 'fetch.mode',\n credentials: 'fetch.credentials',\n cache: 'fetch.cache',\n redirect: 'fetch.redirect',\n referrer: 'fetch.referrer',\n referrerPolicy: 'fetch.referrerPolicy',\n integrity: 'fetch.integrity',\n keepalive: 'fetch.keepalive',\n signal: 'fetch.signal'\n};\n","const globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\nconst self_ = globals.self || globals.window || globals.global || {};\nconst window_ = globals.window || globals.self || globals.global || {};\nconst global_ = globals.global || globals.self || globals.window || {};\nconst document_ = globals.document || {};\nexport { self_ as self, window_ as window, global_ as global, document_ as document };\nexport const isBrowser = Boolean(typeof process !== 'object' || String(process) !== '[object process]' || process.browser);\nexport const isWorker = typeof importScripts === 'function';\nconst matches = typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\nexport const nodeVersion = matches && parseFloat(matches[1]) || 0;\n//# sourceMappingURL=globals.js.map","// Purpose: include this in your module to avoid\n// dependencies on micro modules like 'global' and 'is-browser';\n\n/* eslint-disable no-restricted-globals */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\n\ntype obj = {[key: string]: any};\nconst self_: obj = globals.self || globals.window || globals.global || {};\nconst window_: obj = globals.window || globals.self || globals.global || {};\nconst global_: obj = globals.global || globals.self || globals.window || {};\nconst document_: obj = globals.document || {};\n\nexport {self_ as self, window_ as window, global_ as global, document_ as document};\n\n/** true if running in a browser */\nexport const isBrowser: boolean =\n // @ts-ignore process does not exist on browser\n Boolean(typeof process !== 'object' || String(process) !== '[object process]' || process.browser);\n\n/** true if running in a worker thread */\nexport const isWorker: boolean = typeof importScripts === 'function';\n\n// Extract node major version\nconst matches =\n typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\n/** Major Node version (as a number) */\nexport const nodeVersion: number = (matches && parseFloat(matches[1])) || 0;\n","import { assert, validateWorkerVersion } from '@loaders.gl/worker-utils';\nimport { parseWithWorker, canParseWithWorker } from '@loaders.gl/loader-utils';\nimport { isLoaderObject } from '../loader-utils/normalize-loader';\nimport { isResponse } from '../../javascript-utils/is-type';\nimport { normalizeOptions } from '../loader-utils/option-utils';\nimport { getArrayBufferOrStringFromData } from '../loader-utils/get-data';\nimport { getLoaderContext, getLoadersFromContext } from '../loader-utils/loader-context';\nimport { getResourceUrl } from '../utils/resource-utils';\nimport { selectLoader } from './select-loader';\nexport async function parse(data, loaders, options, context) {\n assert(!context || typeof context === 'object');\n if (loaders && !Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = undefined;\n options = loaders;\n loaders = undefined;\n }\n data = await data;\n options = options || {};\n const url = getResourceUrl(data);\n const typedLoaders = loaders;\n const candidateLoaders = getLoadersFromContext(typedLoaders, context);\n const loader = await selectLoader(data, candidateLoaders, options);\n if (!loader) {\n return null;\n }\n options = normalizeOptions(options, loader, candidateLoaders, url);\n context = getLoaderContext({\n url,\n parse,\n loaders: candidateLoaders\n }, options, context || null);\n return await parseWithLoader(loader, data, options, context);\n}\nasync function parseWithLoader(loader, data, options, context) {\n validateWorkerVersion(loader);\n if (isResponse(data)) {\n const response = data;\n const {\n ok,\n redirected,\n status,\n statusText,\n type,\n url\n } = response;\n const headers = Object.fromEntries(response.headers.entries());\n context.response = {\n headers,\n ok,\n redirected,\n status,\n statusText,\n type,\n url\n };\n }\n data = await getArrayBufferOrStringFromData(data, loader, options);\n if (loader.parseTextSync && typeof data === 'string') {\n options.dataType = 'text';\n return loader.parseTextSync(data, options, context, loader);\n }\n if (canParseWithWorker(loader, options)) {\n return await parseWithWorker(loader, data, options, context, parse);\n }\n if (loader.parseText && typeof data === 'string') {\n return await loader.parseText(data, options, context, loader);\n }\n if (loader.parse) {\n return await loader.parse(data, options, context, loader);\n }\n assert(!loader.parseSync);\n throw new Error(\"\".concat(loader.id, \" loader - no parser found and worker is disabled\"));\n}\n//# sourceMappingURL=parse.js.map","import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {assert, validateWorkerVersion} from '@loaders.gl/worker-utils';\nimport {parseWithWorker, canParseWithWorker} from '@loaders.gl/loader-utils';\nimport {isLoaderObject} from '../loader-utils/normalize-loader';\nimport {isResponse} from '../../javascript-utils/is-type';\nimport {normalizeOptions} from '../loader-utils/option-utils';\nimport {getArrayBufferOrStringFromData} from '../loader-utils/get-data';\nimport {getLoaderContext, getLoadersFromContext} from '../loader-utils/loader-context';\nimport {getResourceUrl} from '../utils/resource-utils';\nimport {selectLoader} from './select-loader';\n\n/**\n * Parses `data` using a specified loader\n * @param data\n * @param loaders\n * @param options\n * @param context\n */\nexport async function parse(\n data: DataType | Promise,\n loaders?: Loader | Loader[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise {\n assert(!context || typeof context === 'object'); // parse no longer accepts final url\n\n // Signature: parse(data, options, context | url)\n // Uses registered loaders\n if (loaders && !Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = undefined; // context not supported in short signature\n options = loaders as LoaderOptions;\n loaders = undefined;\n }\n\n data = await data; // Resolve any promise\n options = options || {};\n\n // Extract a url for auto detection\n const url = getResourceUrl(data);\n\n // Chooses a loader (and normalizes it)\n // Also use any loaders in the context, new loaders take priority\n const typedLoaders = loaders as Loader | Loader[] | undefined;\n const candidateLoaders = getLoadersFromContext(typedLoaders, context);\n // todo hacky type cast\n const loader = await selectLoader(data as ArrayBuffer, candidateLoaders, options);\n // Note: if no loader was found, if so just return null\n if (!loader) {\n return null;\n }\n\n // Normalize options\n options = normalizeOptions(options, loader, candidateLoaders, url);\n\n // Get a context (if already present, will be unchanged)\n context = getLoaderContext({url, parse, loaders: candidateLoaders}, options, context || null);\n\n return await parseWithLoader(loader, data, options, context);\n}\n\n// TODO: support progress and abort\n// TODO - should accept loader.parseAsyncIterator and concatenate.\nasync function parseWithLoader(loader, data, options, context) {\n validateWorkerVersion(loader);\n\n if (isResponse(data)) {\n // Serialize to support passing the response to web worker\n const response = data as Response;\n const {ok, redirected, status, statusText, type, url} = response;\n const headers = Object.fromEntries(response.headers.entries());\n context.response = {headers, ok, redirected, status, statusText, type, url};\n }\n\n data = await getArrayBufferOrStringFromData(data, loader, options);\n\n // First check for synchronous text parser, wrap results in promises\n if (loader.parseTextSync && typeof data === 'string') {\n options.dataType = 'text';\n return loader.parseTextSync(data, options, context, loader);\n }\n\n // If we have a workerUrl and the loader can parse the given options efficiently in a worker\n if (canParseWithWorker(loader, options)) {\n return await parseWithWorker(loader, data, options, context, parse);\n }\n\n // Check for asynchronous parser\n if (loader.parseText && typeof data === 'string') {\n return await loader.parseText(data, options, context, loader);\n }\n\n if (loader.parse) {\n return await loader.parse(data, options, context, loader);\n }\n\n // This should not happen, all sync loaders should also offer `parse` function\n assert(!loader.parseSync);\n\n // TBD - If asynchronous parser not available, return null\n throw new Error(`${loader.id} loader - no parser found and worker is disabled`);\n}\n","export function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'loaders.gl assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\n\n/** Throws an `Error` with the optional `message` if `condition` is falsy */\nexport function assert(condition: any, message?: string): void {\n if (!condition) {\n throw new Error(message || 'loaders.gl assertion failed.');\n }\n}\n","import { assert } from '../env-utils/assert';\nimport { VERSION } from '../env-utils/version';\nexport function validateWorkerVersion(worker) {\n let coreVersion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : VERSION;\n assert(worker, 'no worker provided');\n const workerVersion = worker.version;\n if (!coreVersion || !workerVersion) {\n return false;\n }\n return true;\n}\nfunction parseVersion(version) {\n const parts = version.split('.').map(Number);\n return {\n major: parts[0],\n minor: parts[1]\n };\n}\n//# sourceMappingURL=validate-worker-version.js.map","import type {WorkerObject} from '../../types';\nimport {assert} from '../env-utils/assert';\nimport {VERSION} from '../env-utils/version';\n\n/**\n * Check if worker is compatible with this library version\n * @param worker\n * @param libVersion\n * @returns `true` if the two versions are compatible\n */\nexport function validateWorkerVersion(\n worker: WorkerObject,\n coreVersion: string = VERSION\n): boolean {\n assert(worker, 'no worker provided');\n\n const workerVersion = worker.version;\n if (!coreVersion || !workerVersion) {\n return false;\n }\n\n // TODO enable when fix the __version__ injection\n // const coreVersions = parseVersion(coreVersion);\n // const workerVersions = parseVersion(workerVersion);\n // assert(\n // coreVersion.major === workerVersion.major && coreVersion.minor <= workerVersion.minor,\n // `worker: ${worker.name} is not compatible. ${coreVersion.major}.${\n // coreVersion.minor\n // }+ is required.`\n // );\n\n return true;\n}\n\n// @ts-ignore\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction parseVersion(version) {\n const parts = version.split('.').map(Number);\n return {major: parts[0], minor: parts[1]};\n}\n","const DEFAULT_VERSION = 'latest';\nexport const VERSION = typeof \"3.4.14\" !== 'undefined' ? \"3.4.14\" : DEFAULT_VERSION;\nif (typeof \"3.4.14\" === 'undefined') {\n console.error('loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.');\n}\n//# sourceMappingURL=version.js.map","// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n\n// Change to `latest` on production branches\nconst DEFAULT_VERSION = 'latest';\ndeclare let __VERSION__: string;\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : DEFAULT_VERSION;\nif (typeof __VERSION__ === 'undefined') {\n // eslint-disable-next-line\n console.error(\n 'loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.'\n );\n}\n","import { isBrowser } from '@loaders.gl/worker-utils';\nimport { WorkerFarm, getWorkerURL } from '@loaders.gl/worker-utils';\nexport function canParseWithWorker(loader, options) {\n if (!WorkerFarm.isSupported()) {\n return false;\n }\n if (!isBrowser && !(options !== null && options !== void 0 && options._nodeWorkers)) {\n return false;\n }\n return loader.worker && (options === null || options === void 0 ? void 0 : options.worker);\n}\nexport async function parseWithWorker(loader, data, options, context, parseOnMainThread) {\n const name = loader.id;\n const url = getWorkerURL(loader, options);\n const workerFarm = WorkerFarm.getWorkerFarm(options);\n const workerPool = workerFarm.getWorkerPool({\n name,\n url\n });\n options = JSON.parse(JSON.stringify(options));\n context = JSON.parse(JSON.stringify(context || {}));\n const job = await workerPool.startJob('process-on-worker', onMessage.bind(null, parseOnMainThread));\n job.postMessage('process', {\n input: data,\n options,\n context\n });\n const result = await job.result;\n return await result.result;\n}\nasync function onMessage(parseOnMainThread, job, type, payload) {\n switch (type) {\n case 'done':\n job.done(payload);\n break;\n case 'error':\n job.error(new Error(payload.error));\n break;\n case 'process':\n const {\n id,\n input,\n options\n } = payload;\n try {\n const result = await parseOnMainThread(input, options);\n job.postMessage('done', {\n id,\n result\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : 'unknown error';\n job.postMessage('error', {\n id,\n error: message\n });\n }\n break;\n default:\n console.warn(\"parse-with-worker unknown message \".concat(type));\n }\n}\n//# sourceMappingURL=parse-with-worker.js.map","import {\n WorkerJob,\n WorkerMessageType,\n WorkerMessagePayload,\n isBrowser\n} from '@loaders.gl/worker-utils';\nimport type {Loader, LoaderOptions, LoaderContext} from '../../types';\nimport {WorkerFarm, getWorkerURL} from '@loaders.gl/worker-utils';\n\n/**\n * Determines if a loader can parse with worker\n * @param loader\n * @param options\n */\nexport function canParseWithWorker(loader: Loader, options?: LoaderOptions) {\n if (!WorkerFarm.isSupported()) {\n return false;\n }\n\n // Node workers are still experimental\n if (!isBrowser && !options?._nodeWorkers) {\n return false;\n }\n\n return loader.worker && options?.worker;\n}\n\n/**\n * this function expects that the worker function sends certain messages,\n * this can be automated if the worker is wrapper by a call to createLoaderWorker in @loaders.gl/loader-utils.\n */\nexport async function parseWithWorker(\n loader: Loader,\n data: any,\n options?: LoaderOptions,\n context?: LoaderContext,\n parseOnMainThread?: (arrayBuffer: ArrayBuffer, options: {[key: string]: any}) => Promise\n) {\n const name = loader.id; // TODO\n const url = getWorkerURL(loader, options);\n\n const workerFarm = WorkerFarm.getWorkerFarm(options);\n const workerPool = workerFarm.getWorkerPool({name, url});\n\n // options.log object contains functions which cannot be transferred\n // context.fetch & context.parse functions cannot be transferred\n // TODO - decide how to handle logging on workers\n options = JSON.parse(JSON.stringify(options));\n context = JSON.parse(JSON.stringify(context || {}));\n\n const job = await workerPool.startJob(\n 'process-on-worker',\n // @ts-expect-error\n onMessage.bind(null, parseOnMainThread) // eslint-disable-line @typescript-eslint/no-misused-promises\n );\n\n job.postMessage('process', {\n // @ts-ignore\n input: data,\n options,\n context\n });\n\n const result = await job.result;\n // TODO - what is going on here?\n return await result.result;\n}\n\n/**\n * Handle worker's responses to the main thread\n * @param job\n * @param type\n * @param payload\n */\nasync function onMessage(\n parseOnMainThread: (arrayBuffer: ArrayBuffer, options?: {[key: string]: any}) => Promise,\n job: WorkerJob,\n type: WorkerMessageType,\n payload: WorkerMessagePayload\n) {\n switch (type) {\n case 'done':\n job.done(payload);\n break;\n\n case 'error':\n job.error(new Error(payload.error));\n break;\n\n case 'process':\n // Worker is asking for main thread to parseO\n const {id, input, options} = payload;\n try {\n const result = await parseOnMainThread(input, options);\n job.postMessage('done', {id, result});\n } catch (error) {\n const message = error instanceof Error ? error.message : 'unknown error';\n job.postMessage('error', {id, error: message});\n }\n break;\n\n default:\n // eslint-disable-next-line\n console.warn(`parse-with-worker unknown message ${type}`);\n }\n}\n","import { assert } from '../env-utils/assert';\nimport { VERSION as __VERSION__ } from '../env-utils/version';\nconst NPM_TAG = 'latest';\nconst VERSION = typeof \"3.4.14\" !== 'undefined' ? \"3.4.14\" : NPM_TAG;\nexport function getWorkerName(worker) {\n const warning = worker.version !== VERSION ? \" (worker-utils@\".concat(VERSION, \")\") : '';\n return \"\".concat(worker.name, \"@\").concat(worker.version).concat(warning);\n}\nexport function getWorkerURL(worker) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const workerOptions = options[worker.id] || {};\n const workerFile = \"\".concat(worker.id, \"-worker.js\");\n let url = workerOptions.workerUrl;\n if (!url && worker.id === 'compression') {\n url = options.workerUrl;\n }\n if (options._workerType === 'test') {\n url = \"modules/\".concat(worker.module, \"/dist/\").concat(workerFile);\n }\n if (!url) {\n let version = worker.version;\n if (version === 'latest') {\n version = NPM_TAG;\n }\n const versionTag = version ? \"@\".concat(version) : '';\n url = \"https://unpkg.com/@loaders.gl/\".concat(worker.module).concat(versionTag, \"/dist/\").concat(workerFile);\n }\n assert(url);\n return url;\n}\n//# sourceMappingURL=get-worker-url.js.map","// loaders.gl, MIT license\n\nimport type {WorkerObject, WorkerOptions} from '../../types';\nimport {assert} from '../env-utils/assert';\nimport {VERSION as __VERSION__} from '../env-utils/version';\n\nconst NPM_TAG = 'latest'; // 'beta', or 'latest' on release-branch\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : NPM_TAG;\n\n/**\n * Gets worker object's name (for debugging in Chrome thread inspector window)\n */\nexport function getWorkerName(worker: WorkerObject): string {\n const warning = worker.version !== VERSION ? ` (worker-utils@${VERSION})` : '';\n return `${worker.name}@${worker.version}${warning}`;\n}\n\n/**\n * Generate a worker URL based on worker object and options\n * @returns A URL to one of the following:\n * - a published worker on unpkg CDN\n * - a local test worker\n * - a URL provided by the user in options\n */\nexport function getWorkerURL(worker: WorkerObject, options: WorkerOptions = {}): string {\n const workerOptions = options[worker.id] || {};\n\n const workerFile = `${worker.id}-worker.js`;\n\n let url = workerOptions.workerUrl;\n\n // HACK: Allow for non-nested workerUrl for the CompressionWorker.\n // For the compression worker, workerOptions is currently not nested correctly. For most loaders,\n // you'd have options within an object, i.e. `{mvt: {coordinates: ...}}` but the CompressionWorker\n // puts options at the top level, not within a `compression` key (its `id`). For this reason, the\n // above `workerOptions` will always be a string (i.e. `'gzip'`) for the CompressionWorker. To not\n // break backwards compatibility, we allow the CompressionWorker to have options at the top level.\n if (!url && worker.id === 'compression') {\n url = options.workerUrl;\n }\n\n // If URL is test, generate local loaders.gl url\n // @ts-ignore _workerType\n if (options._workerType === 'test') {\n url = `modules/${worker.module}/dist/${workerFile}`;\n }\n\n // If url override is not provided, generate a URL to published version on npm CDN unpkg.com\n if (!url) {\n // GENERATE\n let version = worker.version;\n // On master we need to load npm alpha releases published with the `beta` tag\n if (version === 'latest') {\n // throw new Error('latest worker version specified');\n version = NPM_TAG;\n }\n const versionTag = version ? `@${version}` : '';\n url = `https://unpkg.com/@loaders.gl/${worker.module}${versionTag}/dist/${workerFile}`;\n }\n\n assert(url);\n\n // Allow user to override location\n return url;\n}\n","const globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\nconst self_ = globals.self || globals.window || globals.global || {};\nconst window_ = globals.window || globals.self || globals.global || {};\nconst global_ = globals.global || globals.self || globals.window || {};\nconst document_ = globals.document || {};\nexport { self_ as self, window_ as window, global_ as global, document_ as document };\nexport const isBrowser = typeof process !== 'object' || String(process) !== '[object process]' || process.browser;\nexport const isWorker = typeof importScripts === 'function';\nexport const isMobile = typeof window !== 'undefined' && typeof window.orientation !== 'undefined';\nconst matches = typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\nexport const nodeVersion = matches && parseFloat(matches[1]) || 0;\n//# sourceMappingURL=globals.js.map","// Purpose: include this in your module to avoids adding dependencies on\n// micro modules like 'global' and 'is-browser';\n\n/* eslint-disable no-restricted-globals */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\n\nconst self_: {[key: string]: any} = globals.self || globals.window || globals.global || {};\nconst window_: {[key: string]: any} = globals.window || globals.self || globals.global || {};\nconst global_: {[key: string]: any} = globals.global || globals.self || globals.window || {};\nconst document_: {[key: string]: any} = globals.document || {};\n\nexport {self_ as self, window_ as window, global_ as global, document_ as document};\n\n/** true if running in the browser, false if running in Node.js */\nexport const isBrowser: boolean =\n // @ts-ignore process.browser\n typeof process !== 'object' || String(process) !== '[object process]' || process.browser;\n\n/** true if running on a worker thread */\nexport const isWorker: boolean = typeof importScripts === 'function';\n\n/** true if running on a mobile device */\nexport const isMobile: boolean =\n typeof window !== 'undefined' && typeof window.orientation !== 'undefined';\n\n// Extract node major version\nconst matches =\n typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\n\n/** Version of Node.js if running under Node, otherwise 0 */\nexport const nodeVersion: number = (matches && parseFloat(matches[1])) || 0;\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport WorkerPool from './worker-pool';\nimport WorkerThread from './worker-thread';\nconst DEFAULT_PROPS = {\n maxConcurrency: 3,\n maxMobileConcurrency: 1,\n reuseWorkers: true,\n onDebug: () => {}\n};\nexport default class WorkerFarm {\n static isSupported() {\n return WorkerThread.isSupported();\n }\n static getWorkerFarm() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n WorkerFarm._workerFarm = WorkerFarm._workerFarm || new WorkerFarm({});\n WorkerFarm._workerFarm.setProps(props);\n return WorkerFarm._workerFarm;\n }\n constructor(props) {\n _defineProperty(this, \"props\", void 0);\n _defineProperty(this, \"workerPools\", new Map());\n this.props = {\n ...DEFAULT_PROPS\n };\n this.setProps(props);\n this.workerPools = new Map();\n }\n destroy() {\n for (const workerPool of this.workerPools.values()) {\n workerPool.destroy();\n }\n this.workerPools = new Map();\n }\n setProps(props) {\n this.props = {\n ...this.props,\n ...props\n };\n for (const workerPool of this.workerPools.values()) {\n workerPool.setProps(this._getWorkerPoolProps());\n }\n }\n getWorkerPool(options) {\n const {\n name,\n source,\n url\n } = options;\n let workerPool = this.workerPools.get(name);\n if (!workerPool) {\n workerPool = new WorkerPool({\n name,\n source,\n url\n });\n workerPool.setProps(this._getWorkerPoolProps());\n this.workerPools.set(name, workerPool);\n }\n return workerPool;\n }\n _getWorkerPoolProps() {\n return {\n maxConcurrency: this.props.maxConcurrency,\n maxMobileConcurrency: this.props.maxMobileConcurrency,\n reuseWorkers: this.props.reuseWorkers,\n onDebug: this.props.onDebug\n };\n }\n}\n_defineProperty(WorkerFarm, \"_workerFarm\", void 0);\n//# sourceMappingURL=worker-farm.js.map","import WorkerPool from './worker-pool';\nimport WorkerThread from './worker-thread';\n\n/**\n * @param maxConcurrency - max count of workers\n * @param maxMobileConcurrency - max count of workers on mobile\n * @param maxConcurrency - max count of workers\n * @param reuseWorkers - if false, destroys workers when task is completed\n * @param onDebug - callback intended to allow application to log worker pool activity\n */\nexport type WorkerFarmProps = {\n maxConcurrency?: number;\n maxMobileConcurrency?: number;\n reuseWorkers?: boolean;\n onDebug?: () => void;\n};\n\nconst DEFAULT_PROPS: Required = {\n maxConcurrency: 3,\n maxMobileConcurrency: 1,\n reuseWorkers: true,\n onDebug: () => {}\n};\n\n/**\n * Process multiple jobs with a \"farm\" of different workers in worker pools.\n */\nexport default class WorkerFarm {\n private props: WorkerFarmProps;\n private workerPools = new Map();\n // singleton\n private static _workerFarm?: WorkerFarm;\n\n /** Checks if workers are supported on this platform */\n static isSupported(): boolean {\n return WorkerThread.isSupported();\n }\n\n /** Get the singleton instance of the global worker farm */\n static getWorkerFarm(props: WorkerFarmProps = {}): WorkerFarm {\n WorkerFarm._workerFarm = WorkerFarm._workerFarm || new WorkerFarm({});\n WorkerFarm._workerFarm.setProps(props);\n return WorkerFarm._workerFarm;\n }\n\n /** get global instance with WorkerFarm.getWorkerFarm() */\n private constructor(props: WorkerFarmProps) {\n this.props = {...DEFAULT_PROPS};\n this.setProps(props);\n /** @type Map} */\n this.workerPools = new Map();\n }\n\n /**\n * Terminate all workers in the farm\n * @note Can free up significant memory\n */\n destroy(): void {\n for (const workerPool of this.workerPools.values()) {\n workerPool.destroy();\n }\n this.workerPools = new Map();\n }\n\n /**\n * Set props used when initializing worker pools\n * @param props\n */\n setProps(props: WorkerFarmProps): void {\n this.props = {...this.props, ...props};\n // Update worker pool props\n for (const workerPool of this.workerPools.values()) {\n workerPool.setProps(this._getWorkerPoolProps());\n }\n }\n\n /**\n * Returns a worker pool for the specified worker\n * @param options - only used first time for a specific worker name\n * @param options.name - the name of the worker - used to identify worker pool\n * @param options.url -\n * @param options.source -\n * @example\n * const job = WorkerFarm.getWorkerFarm().getWorkerPool({name, url}).startJob(...);\n */\n getWorkerPool(options: {name: string; source?: string; url?: string}): WorkerPool {\n const {name, source, url} = options;\n let workerPool = this.workerPools.get(name);\n if (!workerPool) {\n workerPool = new WorkerPool({\n name,\n source,\n url\n });\n workerPool.setProps(this._getWorkerPoolProps());\n this.workerPools.set(name, workerPool);\n }\n return workerPool;\n }\n\n _getWorkerPoolProps() {\n return {\n maxConcurrency: this.props.maxConcurrency,\n maxMobileConcurrency: this.props.maxMobileConcurrency,\n reuseWorkers: this.props.reuseWorkers,\n onDebug: this.props.onDebug\n };\n }\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isMobile } from '../env-utils/globals';\nimport WorkerThread from './worker-thread';\nimport WorkerJob from './worker-job';\nexport default class WorkerPool {\n static isSupported() {\n return WorkerThread.isSupported();\n }\n constructor(props) {\n _defineProperty(this, \"name\", 'unnamed');\n _defineProperty(this, \"source\", void 0);\n _defineProperty(this, \"url\", void 0);\n _defineProperty(this, \"maxConcurrency\", 1);\n _defineProperty(this, \"maxMobileConcurrency\", 1);\n _defineProperty(this, \"onDebug\", () => {});\n _defineProperty(this, \"reuseWorkers\", true);\n _defineProperty(this, \"props\", {});\n _defineProperty(this, \"jobQueue\", []);\n _defineProperty(this, \"idleQueue\", []);\n _defineProperty(this, \"count\", 0);\n _defineProperty(this, \"isDestroyed\", false);\n this.source = props.source;\n this.url = props.url;\n this.setProps(props);\n }\n destroy() {\n this.idleQueue.forEach(worker => worker.destroy());\n this.isDestroyed = true;\n }\n setProps(props) {\n this.props = {\n ...this.props,\n ...props\n };\n if (props.name !== undefined) {\n this.name = props.name;\n }\n if (props.maxConcurrency !== undefined) {\n this.maxConcurrency = props.maxConcurrency;\n }\n if (props.maxMobileConcurrency !== undefined) {\n this.maxMobileConcurrency = props.maxMobileConcurrency;\n }\n if (props.reuseWorkers !== undefined) {\n this.reuseWorkers = props.reuseWorkers;\n }\n if (props.onDebug !== undefined) {\n this.onDebug = props.onDebug;\n }\n }\n async startJob(name) {\n let onMessage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (job, type, data) => job.done(data);\n let onError = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : (job, error) => job.error(error);\n const startPromise = new Promise(onStart => {\n this.jobQueue.push({\n name,\n onMessage,\n onError,\n onStart\n });\n return this;\n });\n this._startQueuedJob();\n return await startPromise;\n }\n async _startQueuedJob() {\n if (!this.jobQueue.length) {\n return;\n }\n const workerThread = this._getAvailableWorker();\n if (!workerThread) {\n return;\n }\n const queuedJob = this.jobQueue.shift();\n if (queuedJob) {\n this.onDebug({\n message: 'Starting job',\n name: queuedJob.name,\n workerThread,\n backlog: this.jobQueue.length\n });\n const job = new WorkerJob(queuedJob.name, workerThread);\n workerThread.onMessage = data => queuedJob.onMessage(job, data.type, data.payload);\n workerThread.onError = error => queuedJob.onError(job, error);\n queuedJob.onStart(job);\n try {\n await job.result;\n } finally {\n this.returnWorkerToQueue(workerThread);\n }\n }\n }\n returnWorkerToQueue(worker) {\n const shouldDestroyWorker = this.isDestroyed || !this.reuseWorkers || this.count > this._getMaxConcurrency();\n if (shouldDestroyWorker) {\n worker.destroy();\n this.count--;\n } else {\n this.idleQueue.push(worker);\n }\n if (!this.isDestroyed) {\n this._startQueuedJob();\n }\n }\n _getAvailableWorker() {\n if (this.idleQueue.length > 0) {\n return this.idleQueue.shift() || null;\n }\n if (this.count < this._getMaxConcurrency()) {\n this.count++;\n const name = \"\".concat(this.name.toLowerCase(), \" (#\").concat(this.count, \" of \").concat(this.maxConcurrency, \")\");\n return new WorkerThread({\n name,\n source: this.source,\n url: this.url\n });\n }\n return null;\n }\n _getMaxConcurrency() {\n return isMobile ? this.maxMobileConcurrency : this.maxConcurrency;\n }\n}\n//# sourceMappingURL=worker-pool.js.map","import type {WorkerMessageType, WorkerMessagePayload} from '../../types';\nimport {isMobile} from '../env-utils/globals';\nimport WorkerThread from './worker-thread';\nimport WorkerJob from './worker-job';\n\n/** WorkerPool onDebug Callback Parameters */\ntype OnDebugParameters = {\n message: string;\n worker: string;\n name: string;\n job: string;\n backlog: number;\n workerThread: WorkerThread;\n};\n\n/** WorkerPool Properties */\nexport type WorkerPoolProps = {\n name?: string;\n source?: string; // | Function;\n url?: string;\n maxConcurrency?: number;\n maxMobileConcurrency?: number;\n onDebug?: (options: OnDebugParameters) => any;\n reuseWorkers?: boolean;\n};\n\n/** Private helper types */\ntype OnMessage = (job: WorkerJob, type: WorkerMessageType, payload: WorkerMessagePayload) => void;\ntype OnError = (job: WorkerJob, error: Error) => void;\n\ntype QueuedJob = {\n name: string;\n onMessage: OnMessage;\n onError: OnError;\n onStart: (value: any) => void; // Resolve job start promise\n};\n\n/**\n * Process multiple data messages with small pool of identical workers\n */\nexport default class WorkerPool {\n name: string = 'unnamed';\n source?: string; // | Function;\n url?: string;\n maxConcurrency: number = 1;\n maxMobileConcurrency: number = 1;\n onDebug: (options: OnDebugParameters) => any = () => {};\n reuseWorkers: boolean = true;\n\n private props: WorkerPoolProps = {};\n private jobQueue: QueuedJob[] = [];\n private idleQueue: WorkerThread[] = [];\n private count = 0;\n private isDestroyed = false;\n\n /** Checks if workers are supported on this platform */\n static isSupported(): boolean {\n return WorkerThread.isSupported();\n }\n\n /**\n * @param processor - worker function\n * @param maxConcurrency - max count of workers\n */\n constructor(props: WorkerPoolProps) {\n this.source = props.source;\n this.url = props.url;\n this.setProps(props);\n }\n\n /**\n * Terminates all workers in the pool\n * @note Can free up significant memory\n */\n destroy(): void {\n // Destroy idle workers, active Workers will be destroyed on completion\n this.idleQueue.forEach((worker) => worker.destroy());\n this.isDestroyed = true;\n }\n\n setProps(props: WorkerPoolProps) {\n this.props = {...this.props, ...props};\n\n if (props.name !== undefined) {\n this.name = props.name;\n }\n if (props.maxConcurrency !== undefined) {\n this.maxConcurrency = props.maxConcurrency;\n }\n if (props.maxMobileConcurrency !== undefined) {\n this.maxMobileConcurrency = props.maxMobileConcurrency;\n }\n if (props.reuseWorkers !== undefined) {\n this.reuseWorkers = props.reuseWorkers;\n }\n if (props.onDebug !== undefined) {\n this.onDebug = props.onDebug;\n }\n }\n\n async startJob(\n name: string,\n onMessage: OnMessage = (job, type, data) => job.done(data),\n onError: OnError = (job, error) => job.error(error)\n ): Promise {\n // Promise resolves when thread starts working on this job\n const startPromise = new Promise((onStart) => {\n // Promise resolves when thread completes or fails working on this job\n this.jobQueue.push({name, onMessage, onError, onStart});\n return this;\n });\n this._startQueuedJob(); // eslint-disable-line @typescript-eslint/no-floating-promises\n return await startPromise;\n }\n\n // PRIVATE\n\n /**\n * Starts first queued job if worker is available or can be created\n * Called when job is started and whenever a worker returns to the idleQueue\n */\n async _startQueuedJob(): Promise {\n if (!this.jobQueue.length) {\n return;\n }\n\n const workerThread = this._getAvailableWorker();\n if (!workerThread) {\n return;\n }\n\n // We have a worker, dequeue and start the job\n const queuedJob = this.jobQueue.shift();\n if (queuedJob) {\n // Emit a debug event\n // @ts-ignore\n this.onDebug({\n message: 'Starting job',\n name: queuedJob.name,\n workerThread,\n backlog: this.jobQueue.length\n });\n\n // Create a worker job to let the app access thread and manage job completion\n const job = new WorkerJob(queuedJob.name, workerThread);\n\n // Set the worker thread's message handlers\n workerThread.onMessage = (data) => queuedJob.onMessage(job, data.type, data.payload);\n workerThread.onError = (error) => queuedJob.onError(job, error);\n\n // Resolve the start promise so that the app can start sending messages to worker\n queuedJob.onStart(job);\n\n // Wait for the app to signal that the job is complete, then return worker to queue\n try {\n await job.result;\n } finally {\n this.returnWorkerToQueue(workerThread);\n }\n }\n }\n\n /**\n * Returns a worker to the idle queue\n * Destroys the worker if\n * - pool is destroyed\n * - if this pool doesn't reuse workers\n * - if maxConcurrency has been lowered\n * @param worker\n */\n returnWorkerToQueue(worker: WorkerThread) {\n const shouldDestroyWorker =\n this.isDestroyed || !this.reuseWorkers || this.count > this._getMaxConcurrency();\n\n if (shouldDestroyWorker) {\n worker.destroy();\n this.count--;\n } else {\n this.idleQueue.push(worker);\n }\n\n if (!this.isDestroyed) {\n this._startQueuedJob(); // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n }\n\n /**\n * Returns idle worker or creates new worker if maxConcurrency has not been reached\n */\n _getAvailableWorker(): WorkerThread | null {\n // If a worker has completed and returned to the queue, it can be used\n if (this.idleQueue.length > 0) {\n return this.idleQueue.shift() || null;\n }\n\n // Create fresh worker if we haven't yet created the max amount of worker threads for this worker source\n if (this.count < this._getMaxConcurrency()) {\n this.count++;\n const name = `${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`;\n return new WorkerThread({name, source: this.source, url: this.url});\n }\n\n // No worker available, have to wait\n return null;\n }\n\n _getMaxConcurrency() {\n return isMobile ? this.maxMobileConcurrency : this.maxConcurrency;\n }\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { NodeWorker } from '../node/worker_threads';\nimport { isBrowser } from '../env-utils/globals';\nimport { assert } from '../env-utils/assert';\nimport { getLoadableWorkerURL } from '../worker-utils/get-loadable-worker-url';\nimport { getTransferList } from '../worker-utils/get-transfer-list';\nconst NOOP = () => {};\nexport default class WorkerThread {\n static isSupported() {\n return typeof Worker !== 'undefined' && isBrowser || typeof NodeWorker !== 'undefined' && !isBrowser;\n }\n constructor(props) {\n _defineProperty(this, \"name\", void 0);\n _defineProperty(this, \"source\", void 0);\n _defineProperty(this, \"url\", void 0);\n _defineProperty(this, \"terminated\", false);\n _defineProperty(this, \"worker\", void 0);\n _defineProperty(this, \"onMessage\", void 0);\n _defineProperty(this, \"onError\", void 0);\n _defineProperty(this, \"_loadableURL\", '');\n const {\n name,\n source,\n url\n } = props;\n assert(source || url);\n this.name = name;\n this.source = source;\n this.url = url;\n this.onMessage = NOOP;\n this.onError = error => console.log(error);\n this.worker = isBrowser ? this._createBrowserWorker() : this._createNodeWorker();\n }\n destroy() {\n this.onMessage = NOOP;\n this.onError = NOOP;\n this.worker.terminate();\n this.terminated = true;\n }\n get isRunning() {\n return Boolean(this.onMessage);\n }\n postMessage(data, transferList) {\n transferList = transferList || getTransferList(data);\n this.worker.postMessage(data, transferList);\n }\n _getErrorFromErrorEvent(event) {\n let message = 'Failed to load ';\n message += \"worker \".concat(this.name, \" from \").concat(this.url, \". \");\n if (event.message) {\n message += \"\".concat(event.message, \" in \");\n }\n if (event.lineno) {\n message += \":\".concat(event.lineno, \":\").concat(event.colno);\n }\n return new Error(message);\n }\n _createBrowserWorker() {\n this._loadableURL = getLoadableWorkerURL({\n source: this.source,\n url: this.url\n });\n const worker = new Worker(this._loadableURL, {\n name: this.name\n });\n worker.onmessage = event => {\n if (!event.data) {\n this.onError(new Error('No data received'));\n } else {\n this.onMessage(event.data);\n }\n };\n worker.onerror = error => {\n this.onError(this._getErrorFromErrorEvent(error));\n this.terminated = true;\n };\n worker.onmessageerror = event => console.error(event);\n return worker;\n }\n _createNodeWorker() {\n let worker;\n if (this.url) {\n const absolute = this.url.includes(':/') || this.url.startsWith('/');\n const url = absolute ? this.url : \"./\".concat(this.url);\n worker = new NodeWorker(url, {\n eval: false\n });\n } else if (this.source) {\n worker = new NodeWorker(this.source, {\n eval: true\n });\n } else {\n throw new Error('no worker');\n }\n worker.on('message', data => {\n this.onMessage(data);\n });\n worker.on('error', error => {\n this.onError(error);\n });\n worker.on('exit', code => {});\n return worker;\n }\n}\n//# sourceMappingURL=worker-thread.js.map","// loaders.gl, MIT license\n\nimport {NodeWorker, NodeWorkerType} from '../node/worker_threads';\nimport {isBrowser} from '../env-utils/globals';\nimport {assert} from '../env-utils/assert';\nimport {getLoadableWorkerURL} from '../worker-utils/get-loadable-worker-url';\nimport {getTransferList} from '../worker-utils/get-transfer-list';\n\nconst NOOP = () => {};\n\nexport type WorkerThreadProps = {\n name: string;\n source?: string;\n url?: string;\n};\n\n/**\n * Represents one worker thread\n */\nexport default class WorkerThread {\n readonly name: string;\n readonly source: string | undefined;\n readonly url: string | undefined;\n terminated: boolean = false;\n worker: Worker | NodeWorkerType;\n onMessage: (message: any) => void;\n onError: (error: Error) => void;\n\n private _loadableURL: string = '';\n\n /** Checks if workers are supported on this platform */\n static isSupported(): boolean {\n return (\n (typeof Worker !== 'undefined' && isBrowser) ||\n (typeof NodeWorker !== 'undefined' && !isBrowser)\n );\n }\n\n constructor(props: WorkerThreadProps) {\n const {name, source, url} = props;\n assert(source || url); // Either source or url must be defined\n this.name = name;\n this.source = source;\n this.url = url;\n this.onMessage = NOOP;\n this.onError = (error) => console.log(error); // eslint-disable-line\n\n this.worker = isBrowser ? this._createBrowserWorker() : this._createNodeWorker();\n }\n\n /**\n * Terminate this worker thread\n * @note Can free up significant memory\n */\n destroy(): void {\n this.onMessage = NOOP;\n this.onError = NOOP;\n this.worker.terminate(); // eslint-disable-line @typescript-eslint/no-floating-promises\n this.terminated = true;\n }\n\n get isRunning() {\n return Boolean(this.onMessage);\n }\n\n /**\n * Send a message to this worker thread\n * @param data any data structure, ideally consisting mostly of transferrable objects\n * @param transferList If not supplied, calculated automatically by traversing data\n */\n postMessage(data: any, transferList?: any[]): void {\n transferList = transferList || getTransferList(data);\n // @ts-ignore\n this.worker.postMessage(data, transferList);\n }\n\n // PRIVATE\n\n /**\n * Generate a standard Error from an ErrorEvent\n * @param event\n */\n _getErrorFromErrorEvent(event: ErrorEvent): Error {\n // Note Error object does not have the expected fields if loading failed completely\n // https://developer.mozilla.org/en-US/docs/Web/API/Worker#Event_handlers\n // https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent\n let message = 'Failed to load ';\n message += `worker ${this.name} from ${this.url}. `;\n if (event.message) {\n message += `${event.message} in `;\n }\n // const hasFilename = event.filename && !event.filename.startsWith('blob:');\n // message += hasFilename ? event.filename : this.source.slice(0, 100);\n if (event.lineno) {\n message += `:${event.lineno}:${event.colno}`;\n }\n return new Error(message);\n }\n\n /**\n * Creates a worker thread on the browser\n */\n _createBrowserWorker(): Worker {\n this._loadableURL = getLoadableWorkerURL({source: this.source, url: this.url});\n const worker = new Worker(this._loadableURL, {name: this.name});\n\n worker.onmessage = (event) => {\n if (!event.data) {\n this.onError(new Error('No data received'));\n } else {\n this.onMessage(event.data);\n }\n };\n // This callback represents an uncaught exception in the worker thread\n worker.onerror = (error: ErrorEvent): void => {\n this.onError(this._getErrorFromErrorEvent(error));\n this.terminated = true;\n };\n // TODO - not clear when this would be called, for now just log in case it happens\n worker.onmessageerror = (event) => console.error(event); // eslint-disable-line\n\n return worker;\n }\n\n /**\n * Creates a worker thread in node.js\n * @todo https://nodejs.org/api/async_hooks.html#async-resource-worker-pool\n */\n _createNodeWorker(): NodeWorkerType {\n let worker: NodeWorkerType;\n if (this.url) {\n // Make sure relative URLs start with './'\n const absolute = this.url.includes(':/') || this.url.startsWith('/');\n const url = absolute ? this.url : `./${this.url}`;\n // console.log('Starting work from', url);\n worker = new NodeWorker(url, {eval: false});\n } else if (this.source) {\n worker = new NodeWorker(this.source, {eval: true});\n } else {\n throw new Error('no worker');\n }\n worker.on('message', (data) => {\n // console.error('message', data);\n this.onMessage(data);\n });\n worker.on('error', (error) => {\n // console.error('error', error);\n this.onError(error);\n });\n worker.on('exit', (code) => {\n // console.error('exit', code);\n });\n return worker;\n }\n}\n","export class Worker {\n terminate() {}\n}\nexport { Worker as NodeWorker };\nexport { Worker as NodeWorkerType };\nexport const parentPort = null;\n//# sourceMappingURL=worker_threads-browser.js.map","// Browser fills for Node.js built-in `worker_threads` module.\n// These fills are non-functional, and just intended to ensure that\n// `import 'worker_threads` doesn't break browser builds.\n// The replacement is done in package.json browser field\nexport class Worker {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n terminate() {}\n}\n\nexport {Worker as NodeWorker};\nexport {Worker as NodeWorkerType};\n\nexport const parentPort = null;\n","import { assert } from '../env-utils/assert';\nconst workerURLCache = new Map();\nexport function getLoadableWorkerURL(props) {\n assert(props.source && !props.url || !props.source && props.url);\n let workerURL = workerURLCache.get(props.source || props.url);\n if (!workerURL) {\n if (props.url) {\n workerURL = getLoadableWorkerURLFromURL(props.url);\n workerURLCache.set(props.url, workerURL);\n }\n if (props.source) {\n workerURL = getLoadableWorkerURLFromSource(props.source);\n workerURLCache.set(props.source, workerURL);\n }\n }\n assert(workerURL);\n return workerURL;\n}\nfunction getLoadableWorkerURLFromURL(url) {\n if (!url.startsWith('http')) {\n return url;\n }\n const workerSource = buildScriptSource(url);\n return getLoadableWorkerURLFromSource(workerSource);\n}\nfunction getLoadableWorkerURLFromSource(workerSource) {\n const blob = new Blob([workerSource], {\n type: 'application/javascript'\n });\n return URL.createObjectURL(blob);\n}\nfunction buildScriptSource(workerUrl) {\n return \"try {\\n importScripts('\".concat(workerUrl, \"');\\n} catch (error) {\\n console.error(error);\\n throw error;\\n}\");\n}\n//# sourceMappingURL=get-loadable-worker-url.js.map","import {assert} from '../env-utils/assert';\n\nconst workerURLCache = new Map();\n\n/**\n * Creates a loadable URL from worker source or URL\n * that can be used to create `Worker` instances.\n * Due to CORS issues it may be necessary to wrap a URL in a small importScripts\n * @param props\n * @param props.source Worker source\n * @param props.url Worker URL\n * @returns loadable url\n */\nexport function getLoadableWorkerURL(props: {source?: string; url?: string}) {\n assert((props.source && !props.url) || (!props.source && props.url)); // Either source or url must be defined\n\n let workerURL = workerURLCache.get(props.source || props.url);\n if (!workerURL) {\n // Differentiate worker urls from worker source code\n if (props.url) {\n workerURL = getLoadableWorkerURLFromURL(props.url);\n workerURLCache.set(props.url, workerURL);\n }\n\n if (props.source) {\n workerURL = getLoadableWorkerURLFromSource(props.source);\n workerURLCache.set(props.source, workerURL);\n }\n }\n\n assert(workerURL);\n return workerURL;\n}\n\n/**\n * Build a loadable worker URL from worker URL\n * @param url\n * @returns loadable URL\n */\nfunction getLoadableWorkerURLFromURL(url: string): string {\n // A local script url, we can use it to initialize a Worker directly\n if (!url.startsWith('http')) {\n return url;\n }\n\n // A remote script, we need to use `importScripts` to load from different origin\n const workerSource = buildScriptSource(url);\n return getLoadableWorkerURLFromSource(workerSource);\n}\n\n/**\n * Build a loadable worker URL from worker source\n * @param workerSource\n * @returns loadable url\n */\nfunction getLoadableWorkerURLFromSource(workerSource: string): string {\n const blob = new Blob([workerSource], {type: 'application/javascript'});\n return URL.createObjectURL(blob);\n}\n\n/**\n * Per spec, worker cannot be initialized with a script from a different origin\n * However a local worker script can still import scripts from other origins,\n * so we simply build a wrapper script.\n *\n * @param workerUrl\n * @returns source\n */\nfunction buildScriptSource(workerUrl: string): string {\n return `\\\ntry {\n importScripts('${workerUrl}');\n} catch (error) {\n console.error(error);\n throw error;\n}`;\n}\n","export function getTransferList(object) {\n let recursive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n let transfers = arguments.length > 2 ? arguments[2] : undefined;\n const transfersSet = transfers || new Set();\n if (!object) {} else if (isTransferable(object)) {\n transfersSet.add(object);\n } else if (isTransferable(object.buffer)) {\n transfersSet.add(object.buffer);\n } else if (ArrayBuffer.isView(object)) {} else if (recursive && typeof object === 'object') {\n for (const key in object) {\n getTransferList(object[key], recursive, transfersSet);\n }\n }\n return transfers === undefined ? Array.from(transfersSet) : [];\n}\nfunction isTransferable(object) {\n if (!object) {\n return false;\n }\n if (object instanceof ArrayBuffer) {\n return true;\n }\n if (typeof MessagePort !== 'undefined' && object instanceof MessagePort) {\n return true;\n }\n if (typeof ImageBitmap !== 'undefined' && object instanceof ImageBitmap) {\n return true;\n }\n if (typeof OffscreenCanvas !== 'undefined' && object instanceof OffscreenCanvas) {\n return true;\n }\n return false;\n}\nexport function getTransferListForWriter(object) {\n if (object === null) {\n return {};\n }\n const clone = Object.assign({}, object);\n Object.keys(clone).forEach(key => {\n if (typeof object[key] === 'object' && !ArrayBuffer.isView(object[key]) && !(object[key] instanceof Array)) {\n clone[key] = getTransferListForWriter(object[key]);\n } else if (typeof clone[key] === 'function' || clone[key] instanceof RegExp) {\n clone[key] = {};\n } else {\n clone[key] = object[key];\n }\n });\n return clone;\n}\n//# sourceMappingURL=get-transfer-list.js.map","// NOTE - there is a copy of this function is both in core and loader-utils\n// core does not need all the utils in loader-utils, just this one.\n\n/**\n * Returns an array of Transferrable objects that can be used with postMessage\n * https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage\n * @param object data to be sent via postMessage\n * @param recursive - not for application use\n * @param transfers - not for application use\n * @returns a transfer list that can be passed to postMessage\n */\nexport function getTransferList(\n object: any,\n recursive: boolean = true,\n transfers?: Set\n): Transferable[] {\n // Make sure that items in the transfer list is unique\n const transfersSet = transfers || new Set();\n\n if (!object) {\n // ignore\n } else if (isTransferable(object)) {\n transfersSet.add(object);\n } else if (isTransferable(object.buffer)) {\n // Typed array\n transfersSet.add(object.buffer);\n } else if (ArrayBuffer.isView(object)) {\n // object is a TypeArray viewing into a SharedArrayBuffer (not transferable)\n // Do not iterate through the content in this case\n } else if (recursive && typeof object === 'object') {\n for (const key in object) {\n // Avoid perf hit - only go one level deep\n getTransferList(object[key], recursive, transfersSet);\n }\n }\n\n // If transfers is defined, is internal recursive call\n // Otherwise it's called by the user\n return transfers === undefined ? Array.from(transfersSet) : [];\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Transferable\nfunction isTransferable(object: unknown) {\n if (!object) {\n return false;\n }\n if (object instanceof ArrayBuffer) {\n return true;\n }\n if (typeof MessagePort !== 'undefined' && object instanceof MessagePort) {\n return true;\n }\n if (typeof ImageBitmap !== 'undefined' && object instanceof ImageBitmap) {\n return true;\n }\n // @ts-ignore\n if (typeof OffscreenCanvas !== 'undefined' && object instanceof OffscreenCanvas) {\n return true;\n }\n return false;\n}\n\n/**\n * Recursively drop non serializable values like functions and regexps.\n * @param object\n */\nexport function getTransferListForWriter(object: object | null): object {\n if (object === null) {\n return {};\n }\n const clone = Object.assign({}, object);\n\n Object.keys(clone).forEach((key) => {\n // Typed Arrays and Arrays are passed with no change\n if (\n typeof object[key] === 'object' &&\n !ArrayBuffer.isView(object[key]) &&\n !(object[key] instanceof Array)\n ) {\n clone[key] = getTransferListForWriter(object[key]);\n } else if (typeof clone[key] === 'function' || clone[key] instanceof RegExp) {\n clone[key] = {};\n } else {\n clone[key] = object[key];\n }\n });\n\n return clone;\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { assert } from '../env-utils/assert';\nexport default class WorkerJob {\n constructor(jobName, workerThread) {\n _defineProperty(this, \"name\", void 0);\n _defineProperty(this, \"workerThread\", void 0);\n _defineProperty(this, \"isRunning\", true);\n _defineProperty(this, \"result\", void 0);\n _defineProperty(this, \"_resolve\", () => {});\n _defineProperty(this, \"_reject\", () => {});\n this.name = jobName;\n this.workerThread = workerThread;\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n postMessage(type, payload) {\n this.workerThread.postMessage({\n source: 'loaders.gl',\n type,\n payload\n });\n }\n done(value) {\n assert(this.isRunning);\n this.isRunning = false;\n this._resolve(value);\n }\n error(error) {\n assert(this.isRunning);\n this.isRunning = false;\n this._reject(error);\n }\n}\n//# sourceMappingURL=worker-job.js.map","import type {WorkerMessageType, WorkerMessagePayload} from '../../types';\nimport WorkerThread from './worker-thread';\nimport {assert} from '../env-utils/assert';\n\n/**\n * Represents one Job handled by a WorkerPool or WorkerFarm\n */\nexport default class WorkerJob {\n readonly name: string;\n readonly workerThread: WorkerThread;\n isRunning: boolean = true;\n /** Promise that resolves when Job is done */\n readonly result: Promise;\n\n private _resolve: (value: any) => void = () => {};\n private _reject: (reason?: any) => void = () => {};\n\n constructor(jobName: string, workerThread: WorkerThread) {\n this.name = jobName;\n this.workerThread = workerThread;\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n /**\n * Send a message to the job's worker thread\n * @param data any data structure, ideally consisting mostly of transferrable objects\n */\n postMessage(type: WorkerMessageType, payload: WorkerMessagePayload): void {\n this.workerThread.postMessage({\n source: 'loaders.gl', // Lets worker ignore unrelated messages\n type,\n payload\n });\n }\n\n /**\n * Call to resolve the `result` Promise with the supplied value\n */\n done(value: any): void {\n assert(this.isRunning);\n this.isRunning = false;\n this._resolve(value);\n }\n\n /**\n * Call to reject the `result` Promise with the supplied error\n */\n error(error: Error): void {\n assert(this.isRunning);\n this.isRunning = false;\n this._reject(error);\n }\n}\n","import { concatenateArrayBuffersAsync } from '@loaders.gl/loader-utils';\nimport { isResponse, isReadableStream, isAsyncIterable, isIterable, isIterator, isBlob, isBuffer } from '../../javascript-utils/is-type';\nimport { makeIterator } from '../../iterators/make-iterator/make-iterator';\nimport { checkResponse, makeResponse } from '../utils/response-utils';\nconst ERR_DATA = 'Cannot convert supplied data type';\nexport function getArrayBufferOrStringFromDataSync(data, loader, options) {\n if (loader.text && typeof data === 'string') {\n return data;\n }\n if (isBuffer(data)) {\n data = data.buffer;\n }\n if (data instanceof ArrayBuffer) {\n const arrayBuffer = data;\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(arrayBuffer);\n }\n return arrayBuffer;\n }\n if (ArrayBuffer.isView(data)) {\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(data);\n }\n let arrayBuffer = data.buffer;\n const byteLength = data.byteLength || data.length;\n if (data.byteOffset !== 0 || byteLength !== arrayBuffer.byteLength) {\n arrayBuffer = arrayBuffer.slice(data.byteOffset, data.byteOffset + byteLength);\n }\n return arrayBuffer;\n }\n throw new Error(ERR_DATA);\n}\nexport async function getArrayBufferOrStringFromData(data, loader, options) {\n const isArrayBuffer = data instanceof ArrayBuffer || ArrayBuffer.isView(data);\n if (typeof data === 'string' || isArrayBuffer) {\n return getArrayBufferOrStringFromDataSync(data, loader, options);\n }\n if (isBlob(data)) {\n data = await makeResponse(data);\n }\n if (isResponse(data)) {\n const response = data;\n await checkResponse(response);\n return loader.binary ? await response.arrayBuffer() : await response.text();\n }\n if (isReadableStream(data)) {\n data = makeIterator(data, options);\n }\n if (isIterable(data) || isAsyncIterable(data)) {\n return concatenateArrayBuffersAsync(data);\n }\n throw new Error(ERR_DATA);\n}\nexport async function getAsyncIterableFromData(data, options) {\n if (isIterator(data)) {\n return data;\n }\n if (isResponse(data)) {\n const response = data;\n await checkResponse(response);\n const body = await response.body;\n return makeIterator(body, options);\n }\n if (isBlob(data) || isReadableStream(data)) {\n return makeIterator(data, options);\n }\n if (isAsyncIterable(data)) {\n return data[Symbol.asyncIterator]();\n }\n return getIterableFromData(data);\n}\nexport async function getReadableStream(data) {\n if (isReadableStream(data)) {\n return data;\n }\n if (isResponse(data)) {\n return data.body;\n }\n const response = await makeResponse(data);\n return response.body;\n}\nfunction getIterableFromData(data) {\n if (ArrayBuffer.isView(data)) {\n return function* oneChunk() {\n yield data.buffer;\n }();\n }\n if (data instanceof ArrayBuffer) {\n return function* oneChunk() {\n yield data;\n }();\n }\n if (isIterator(data)) {\n return data;\n }\n if (isIterable(data)) {\n return data[Symbol.iterator]();\n }\n throw new Error(ERR_DATA);\n}\n//# sourceMappingURL=get-data.js.map","import type {\n DataType,\n SyncDataType,\n BatchableDataType,\n Loader,\n LoaderOptions\n} from '@loaders.gl/loader-utils';\nimport {concatenateArrayBuffersAsync} from '@loaders.gl/loader-utils';\nimport {\n isResponse,\n isReadableStream,\n isAsyncIterable,\n isIterable,\n isIterator,\n isBlob,\n isBuffer\n} from '../../javascript-utils/is-type';\nimport {makeIterator} from '../../iterators/make-iterator/make-iterator';\nimport {checkResponse, makeResponse} from '../utils/response-utils';\n\nconst ERR_DATA = 'Cannot convert supplied data type';\n\n// eslint-disable-next-line complexity\nexport function getArrayBufferOrStringFromDataSync(\n data: SyncDataType,\n loader: Loader,\n options: LoaderOptions\n): ArrayBuffer | string {\n if (loader.text && typeof data === 'string') {\n return data;\n }\n\n if (isBuffer(data)) {\n // @ts-ignore\n data = data.buffer;\n }\n\n if (data instanceof ArrayBuffer) {\n const arrayBuffer = data;\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(arrayBuffer);\n }\n return arrayBuffer;\n }\n\n // We may need to handle offsets\n if (ArrayBuffer.isView(data)) {\n // TextDecoder is invoked on typed arrays and will handle offsets\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(data);\n }\n\n let arrayBuffer = data.buffer;\n\n // Since we are returning the underlying arrayBuffer, we must create a new copy\n // if this typed array / Buffer is a partial view into the ArryayBuffer\n // TODO - this is a potentially unnecessary copy\n const byteLength = data.byteLength || data.length;\n if (data.byteOffset !== 0 || byteLength !== arrayBuffer.byteLength) {\n // console.warn(`loaders.gl copying arraybuffer of length ${byteLength}`);\n arrayBuffer = arrayBuffer.slice(data.byteOffset, data.byteOffset + byteLength);\n }\n return arrayBuffer;\n }\n\n throw new Error(ERR_DATA);\n}\n\n// Convert async iterator to a promise\nexport async function getArrayBufferOrStringFromData(\n data: DataType,\n loader: Loader,\n options: LoaderOptions\n): Promise {\n const isArrayBuffer = data instanceof ArrayBuffer || ArrayBuffer.isView(data);\n if (typeof data === 'string' || isArrayBuffer) {\n return getArrayBufferOrStringFromDataSync(data as string | ArrayBuffer, loader, options);\n }\n\n // Blobs and files are FileReader compatible\n if (isBlob(data)) {\n data = await makeResponse(data);\n }\n\n if (isResponse(data)) {\n const response = data as Response;\n await checkResponse(response);\n return loader.binary ? await response.arrayBuffer() : await response.text();\n }\n\n if (isReadableStream(data)) {\n // @ts-expect-error TS2559 options type\n data = makeIterator(data as ReadableStream, options);\n }\n\n if (isIterable(data) || isAsyncIterable(data)) {\n // Assume arrayBuffer iterator - attempt to concatenate\n return concatenateArrayBuffersAsync(data as AsyncIterable);\n }\n\n throw new Error(ERR_DATA);\n}\n\nexport async function getAsyncIterableFromData(\n data: BatchableDataType,\n options: LoaderOptions\n): Promise | Iterable> {\n if (isIterator(data)) {\n return data as AsyncIterable;\n }\n\n if (isResponse(data)) {\n const response = data as Response;\n // Note Since this function is not async, we currently can't load error message, just status\n await checkResponse(response);\n // TODO - bug in polyfill, body can be a Promise under Node.js\n // eslint-disable-next-line @typescript-eslint/await-thenable\n const body = await response.body;\n // TODO - body can be null?\n return makeIterator(body as ReadableStream, options as any);\n }\n\n if (isBlob(data) || isReadableStream(data)) {\n return makeIterator(data as Blob | ReadableStream, options as any);\n }\n\n if (isAsyncIterable(data)) {\n return data[Symbol.asyncIterator]();\n }\n\n return getIterableFromData(data);\n}\n\nexport async function getReadableStream(data: BatchableDataType): Promise {\n if (isReadableStream(data)) {\n return data as ReadableStream;\n }\n if (isResponse(data)) {\n // @ts-ignore\n return data.body;\n }\n const response = await makeResponse(data);\n // @ts-ignore\n return response.body;\n}\n\n// HELPERS\n\nfunction getIterableFromData(data) {\n // generate an iterator that emits a single chunk\n if (ArrayBuffer.isView(data)) {\n return (function* oneChunk() {\n yield data.buffer;\n })();\n }\n\n if (data instanceof ArrayBuffer) {\n return (function* oneChunk() {\n yield data;\n })();\n }\n\n if (isIterator(data)) {\n return data;\n }\n\n if (isIterable(data)) {\n return data[Symbol.iterator]();\n }\n\n throw new Error(ERR_DATA);\n}\n","import { concatenateArrayBuffers } from '../binary-utils/array-buffer-utils';\nexport async function forEach(iterator, visitor) {\n while (true) {\n const {\n done,\n value\n } = await iterator.next();\n if (done) {\n iterator.return();\n return;\n }\n const cancel = visitor(value);\n if (cancel) {\n return;\n }\n }\n}\nexport async function concatenateArrayBuffersAsync(asyncIterator) {\n const arrayBuffers = [];\n for await (const chunk of asyncIterator) {\n arrayBuffers.push(chunk);\n }\n return concatenateArrayBuffers(...arrayBuffers);\n}\nexport async function concatenateStringsAsync(asyncIterator) {\n const strings = [];\n for await (const chunk of asyncIterator) {\n strings.push(chunk);\n }\n return strings.join('');\n}\n//# sourceMappingURL=async-iteration.js.map","import {concatenateArrayBuffers} from '../binary-utils/array-buffer-utils';\n\n// GENERAL UTILITIES\n\n/**\n * Iterate over async iterator, without resetting iterator if end is not reached\n * - forEach intentionally does not reset iterator if exiting loop prematurely\n * so that iteration can continue in a second loop\n * - It is recommended to use a standard for-await as last loop to ensure\n * iterator gets properly reset\n *\n * TODO - optimize using sync iteration if argument is an Iterable?\n *\n * @param iterator\n * @param visitor\n */\nexport async function forEach(iterator, visitor) {\n // eslint-disable-next-line\n while (true) {\n const {done, value} = await iterator.next();\n if (done) {\n iterator.return();\n return;\n }\n const cancel = visitor(value);\n if (cancel) {\n return;\n }\n }\n}\n\n// Breaking big data into iterable chunks, concatenating iterable chunks into big data objects\n\n/**\n * Concatenates all data chunks yielded by an (async) iterator\n * This function can e.g. be used to enable atomic parsers to work on (async) iterator inputs\n */\n\nexport async function concatenateArrayBuffersAsync(\n asyncIterator: AsyncIterable | Iterable\n): Promise {\n const arrayBuffers: ArrayBuffer[] = [];\n for await (const chunk of asyncIterator) {\n arrayBuffers.push(chunk);\n }\n return concatenateArrayBuffers(...arrayBuffers);\n}\n\nexport async function concatenateStringsAsync(\n asyncIterator: AsyncIterable | Iterable\n): Promise {\n const strings: string[] = [];\n for await (const chunk of asyncIterator) {\n strings.push(chunk);\n }\n return strings.join('');\n}\n","export function compareArrayBuffers(arrayBuffer1, arrayBuffer2, byteLength) {\n byteLength = byteLength || arrayBuffer1.byteLength;\n if (arrayBuffer1.byteLength < byteLength || arrayBuffer2.byteLength < byteLength) {\n return false;\n }\n const array1 = new Uint8Array(arrayBuffer1);\n const array2 = new Uint8Array(arrayBuffer2);\n for (let i = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\nexport function concatenateArrayBuffers() {\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n const sourceArrays = sources.map(source2 => source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2);\n const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0);\n const result = new Uint8Array(byteLength);\n let offset = 0;\n for (const sourceArray of sourceArrays) {\n result.set(sourceArray, offset);\n offset += sourceArray.byteLength;\n }\n return result.buffer;\n}\nexport function concatenateTypedArrays() {\n for (var _len2 = arguments.length, typedArrays = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n typedArrays[_key2] = arguments[_key2];\n }\n const arrays = typedArrays;\n const TypedArrayConstructor = arrays && arrays.length > 1 && arrays[0].constructor || null;\n if (!TypedArrayConstructor) {\n throw new Error('\"concatenateTypedArrays\" - incorrect quantity of arguments or arguments have incompatible data types');\n }\n const sumLength = arrays.reduce((acc, value) => acc + value.length, 0);\n const result = new TypedArrayConstructor(sumLength);\n let offset = 0;\n for (const array of arrays) {\n result.set(array, offset);\n offset += array.length;\n }\n return result;\n}\nexport function sliceArrayBuffer(arrayBuffer, byteOffset, byteLength) {\n const subArray = byteLength !== undefined ? new Uint8Array(arrayBuffer).subarray(byteOffset, byteOffset + byteLength) : new Uint8Array(arrayBuffer).subarray(byteOffset);\n const arrayCopy = new Uint8Array(subArray);\n return arrayCopy.buffer;\n}\n//# sourceMappingURL=array-buffer-utils.js.map","import {TypedArray} from '../../types';\n\n/**\n * compare two binary arrays for equality\n * @param a\n * @param b\n * @param byteLength\n */\nexport function compareArrayBuffers(\n arrayBuffer1: ArrayBuffer,\n arrayBuffer2: ArrayBuffer,\n byteLength?: number\n): boolean {\n byteLength = byteLength || arrayBuffer1.byteLength;\n if (arrayBuffer1.byteLength < byteLength || arrayBuffer2.byteLength < byteLength) {\n return false;\n }\n const array1 = new Uint8Array(arrayBuffer1);\n const array2 = new Uint8Array(arrayBuffer2);\n for (let i = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Concatenate a sequence of ArrayBuffers\n * @return A concatenated ArrayBuffer\n */\nexport function concatenateArrayBuffers(...sources: (ArrayBuffer | Uint8Array)[]): ArrayBuffer {\n // Make sure all inputs are wrapped in typed arrays\n const sourceArrays = sources.map((source2) =>\n source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2\n );\n\n // Get length of all inputs\n const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0);\n\n // Allocate array with space for all inputs\n const result = new Uint8Array(byteLength);\n\n // Copy the subarrays\n let offset = 0;\n for (const sourceArray of sourceArrays) {\n result.set(sourceArray, offset);\n offset += sourceArray.byteLength;\n }\n\n // We work with ArrayBuffers, discard the typed array wrapper\n return result.buffer;\n}\n\n/**\n * Concatenate arbitrary count of typed arrays\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays\n * @param - list of arrays. All arrays should be the same type\n * @return A concatenated TypedArray\n */\nexport function concatenateTypedArrays(...typedArrays: T[]): T {\n // @ts-ignore\n const arrays = typedArrays as TypedArray[];\n // @ts-ignore\n const TypedArrayConstructor = (arrays && arrays.length > 1 && arrays[0].constructor) || null;\n if (!TypedArrayConstructor) {\n throw new Error(\n '\"concatenateTypedArrays\" - incorrect quantity of arguments or arguments have incompatible data types'\n );\n }\n\n const sumLength = arrays.reduce((acc, value) => acc + value.length, 0);\n // @ts-ignore typescript does not like dynamic constructors\n const result = new TypedArrayConstructor(sumLength);\n let offset = 0;\n for (const array of arrays) {\n result.set(array, offset);\n offset += array.length;\n }\n return result;\n}\n\n/**\n * Copy a view of an ArrayBuffer into new ArrayBuffer with byteOffset = 0\n * @param arrayBuffer\n * @param byteOffset\n * @param byteLength\n */\nexport function sliceArrayBuffer(\n arrayBuffer: ArrayBuffer,\n byteOffset: number,\n byteLength?: number\n): ArrayBuffer {\n const subArray =\n byteLength !== undefined\n ? new Uint8Array(arrayBuffer).subarray(byteOffset, byteOffset + byteLength)\n : new Uint8Array(arrayBuffer).subarray(byteOffset);\n const arrayCopy = new Uint8Array(subArray);\n return arrayCopy.buffer;\n}\n","import { makeStringIterator } from './make-string-iterator';\nimport { makeArrayBufferIterator } from './make-array-buffer-iterator';\nimport { makeBlobIterator } from './make-blob-iterator';\nimport { makeStreamIterator } from './make-stream-iterator';\nimport { isBlob, isReadableStream, isResponse } from '../../javascript-utils/is-type';\nexport function makeIterator(data, options) {\n if (typeof data === 'string') {\n return makeStringIterator(data, options);\n }\n if (data instanceof ArrayBuffer) {\n return makeArrayBufferIterator(data, options);\n }\n if (isBlob(data)) {\n return makeBlobIterator(data, options);\n }\n if (isReadableStream(data)) {\n return makeStreamIterator(data, options);\n }\n if (isResponse(data)) {\n const response = data;\n return makeStreamIterator(response.body, options);\n }\n throw new Error('makeIterator');\n}\n//# sourceMappingURL=make-iterator.js.map","import type {ReadStream} from 'fs';\n\nimport {makeStringIterator} from './make-string-iterator';\nimport {makeArrayBufferIterator} from './make-array-buffer-iterator';\nimport {makeBlobIterator} from './make-blob-iterator';\nimport type {StreamIteratorOptions} from './make-stream-iterator';\nimport {makeStreamIterator} from './make-stream-iterator';\nimport {isBlob, isReadableStream, isResponse} from '../../javascript-utils/is-type';\n\n/**\n * @param [options.chunkSize]\n */\nexport type IteratorOptions = StreamIteratorOptions & {\n chunkSize?: number;\n};\n\n/**\n * Returns an iterator that breaks its input into chunks and yields them one-by-one.\n * @param data\n * @param options\n * @returns\n * This function can e.g. be used to enable data sources that can only be read atomically\n * (such as `Blob` and `File` via `FileReader`) to still be parsed in batches.\n */\nexport function makeIterator(\n data: ArrayBuffer | string | Blob | Response | ReadableStream | ReadStream,\n options?: IteratorOptions\n): AsyncIterable | Iterable {\n if (typeof data === 'string') {\n // Note: Converts string chunks to binary\n return makeStringIterator(data, options);\n }\n if (data instanceof ArrayBuffer) {\n return makeArrayBufferIterator(data, options);\n }\n if (isBlob(data)) {\n return makeBlobIterator(data as Blob, options);\n }\n if (isReadableStream(data)) {\n return makeStreamIterator(data as ReadableStream, options);\n }\n if (isResponse(data)) {\n const response = data as Response;\n return makeStreamIterator(response.body as ReadableStream, options);\n }\n throw new Error('makeIterator');\n}\n","const DEFAULT_CHUNK_SIZE = 256 * 1024;\nexport function* makeStringIterator(string, options) {\n const chunkSize = (options === null || options === void 0 ? void 0 : options.chunkSize) || DEFAULT_CHUNK_SIZE;\n let offset = 0;\n const textEncoder = new TextEncoder();\n while (offset < string.length) {\n const chunkLength = Math.min(string.length - offset, chunkSize);\n const chunk = string.slice(offset, offset + chunkLength);\n offset += chunkLength;\n yield textEncoder.encode(chunk);\n }\n}\n//# sourceMappingURL=make-string-iterator.js.map","import type {IteratorOptions} from './make-iterator';\n\nconst DEFAULT_CHUNK_SIZE = 256 * 1024;\n\n/**\n * Returns an iterator that breaks a big string into chunks and yields them one-by-one as ArrayBuffers\n * @param blob string to iterate over\n * @param options\n * @param options.chunkSize\n */\nexport function* makeStringIterator(\n string: string,\n options?: IteratorOptions\n): Iterable {\n const chunkSize = options?.chunkSize || DEFAULT_CHUNK_SIZE;\n\n let offset = 0;\n const textEncoder = new TextEncoder();\n while (offset < string.length) {\n // Create a chunk of the right size\n const chunkLength = Math.min(string.length - offset, chunkSize);\n const chunk = string.slice(offset, offset + chunkLength);\n offset += chunkLength;\n\n // yield an ArrayBuffer chunk\n yield textEncoder.encode(chunk);\n }\n}\n","const DEFAULT_CHUNK_SIZE = 256 * 1024;\nexport function makeArrayBufferIterator(arrayBuffer) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function* () {\n const {\n chunkSize = DEFAULT_CHUNK_SIZE\n } = options;\n let byteOffset = 0;\n while (byteOffset < arrayBuffer.byteLength) {\n const chunkByteLength = Math.min(arrayBuffer.byteLength - byteOffset, chunkSize);\n const chunk = new ArrayBuffer(chunkByteLength);\n const sourceArray = new Uint8Array(arrayBuffer, byteOffset, chunkByteLength);\n const chunkArray = new Uint8Array(chunk);\n chunkArray.set(sourceArray);\n byteOffset += chunkByteLength;\n yield chunk;\n }\n }();\n}\n//# sourceMappingURL=make-array-buffer-iterator.js.map","import type {IteratorOptions} from './make-iterator';\n\nconst DEFAULT_CHUNK_SIZE = 256 * 1024;\n\n/**\n * Returns an iterator that breaks a big ArrayBuffer into chunks and yields them one-by-one\n * @param blob ArrayBuffer to iterate over\n * @param options\n * @param options.chunkSize\n */\nexport function* makeArrayBufferIterator(\n arrayBuffer: ArrayBuffer,\n options: IteratorOptions = {}\n): Iterable {\n const {chunkSize = DEFAULT_CHUNK_SIZE} = options;\n\n let byteOffset = 0;\n\n while (byteOffset < arrayBuffer.byteLength) {\n // Create a chunk of the right size\n const chunkByteLength = Math.min(arrayBuffer.byteLength - byteOffset, chunkSize);\n const chunk = new ArrayBuffer(chunkByteLength);\n\n // Copy data from the big chunk\n const sourceArray = new Uint8Array(arrayBuffer, byteOffset, chunkByteLength);\n const chunkArray = new Uint8Array(chunk);\n chunkArray.set(sourceArray);\n\n // yield the chunk\n byteOffset += chunkByteLength;\n yield chunk;\n }\n}\n","const DEFAULT_CHUNK_SIZE = 1024 * 1024;\nexport async function* makeBlobIterator(blob, options) {\n const chunkSize = (options === null || options === void 0 ? void 0 : options.chunkSize) || DEFAULT_CHUNK_SIZE;\n let offset = 0;\n while (offset < blob.size) {\n const end = offset + chunkSize;\n const chunk = await blob.slice(offset, end).arrayBuffer();\n offset = end;\n yield chunk;\n }\n}\n//# sourceMappingURL=make-blob-iterator.js.map","import type {IteratorOptions} from './make-iterator';\n\nconst DEFAULT_CHUNK_SIZE = 1024 * 1024; // 1MB — biggest value that keeps UI responsive\n\n/**\n * Returns an iterator that breaks a big Blob into chunks and yields them one-by-one\n * @param blob Blob or File object\n * @param options\n * @param options.chunkSize\n */\nexport async function* makeBlobIterator(\n blob: Blob,\n options?: IteratorOptions\n): AsyncIterable {\n const chunkSize = options?.chunkSize || DEFAULT_CHUNK_SIZE;\n\n let offset = 0;\n while (offset < blob.size) {\n const end = offset + chunkSize;\n\n const chunk = await blob.slice(offset, end).arrayBuffer();\n\n offset = end;\n yield chunk;\n }\n}\n","import { isBrowser, toArrayBuffer } from '@loaders.gl/loader-utils';\nexport function makeStreamIterator(stream, options) {\n return isBrowser ? makeBrowserStreamIterator(stream, options) : makeNodeStreamIterator(stream, options);\n}\nasync function* makeBrowserStreamIterator(stream, options) {\n const reader = stream.getReader();\n let nextBatchPromise;\n try {\n while (true) {\n const currentBatchPromise = nextBatchPromise || reader.read();\n if (options !== null && options !== void 0 && options._streamReadAhead) {\n nextBatchPromise = reader.read();\n }\n const {\n done,\n value\n } = await currentBatchPromise;\n if (done) {\n return;\n }\n yield toArrayBuffer(value);\n }\n } catch (error) {\n reader.releaseLock();\n }\n}\nasync function* makeNodeStreamIterator(stream, options) {\n for await (const chunk of stream) {\n yield toArrayBuffer(chunk);\n }\n}\n//# sourceMappingURL=make-stream-iterator.js.map","import type {Readable} from 'stream';\nimport {isBrowser, toArrayBuffer} from '@loaders.gl/loader-utils';\n\nexport type StreamIteratorOptions = {\n _streamReadAhead?: boolean;\n};\n\n/**\n * Returns an async iterable that reads from a stream (works in both Node.js and browsers)\n * @param stream stream to iterator over\n */\nexport function makeStreamIterator(\n stream: ReadableStream | Readable,\n options?: StreamIteratorOptions\n): AsyncIterable {\n return isBrowser\n ? makeBrowserStreamIterator(stream as ReadableStream, options)\n : makeNodeStreamIterator(stream as Readable, options);\n}\n\n/**\n * Returns an async iterable that reads from a DOM (browser) stream\n * @param stream stream to iterate from\n * @see https://jakearchibald.com/2017/async-iterators-and-generators/#making-streams-iterate\n */\nasync function* makeBrowserStreamIterator(\n stream: ReadableStream,\n options?: StreamIteratorOptions\n): AsyncIterable {\n // WhatWG: stream is supposed to have a `getIterator` method\n // if (typeof stream.getIterator === 'function') {\n // return stream.getIterator();\n // }\n // if (typeof stream[Symbol.asyncIterator] === 'function') {\n // return makeToArrayBufferIterator(stream);\n // }\n\n // In the browser, we first need to get a lock on the stream\n const reader = stream.getReader();\n\n let nextBatchPromise: Promise<{done?: boolean; value?: Uint8Array}> | undefined;\n\n try {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const currentBatchPromise = nextBatchPromise || reader.read();\n // Issue a read for an additional batch, while we await the next batch\n // Idea is to make fetching happen in parallel with processing / parsing\n if (options?._streamReadAhead) {\n nextBatchPromise = reader.read();\n }\n // Read from the stream\n // value is a Uint8Array\n const {done, value} = await currentBatchPromise;\n // Exit if we're done\n if (done) {\n return;\n }\n // Else yield the chunk\n yield toArrayBuffer(value);\n }\n } catch (error) {\n // TODO - examples makes it look like this should always be called,\n // but that generates exceptions so only call it if we do not reach the end\n reader.releaseLock();\n }\n}\n\n/**\n * Returns an async iterable that reads from a DOM (browser) stream\n * @param stream stream to iterate from\n * @note Requires Node.js >= 10\n */\nasync function* makeNodeStreamIterator(\n stream: Readable,\n options?: StreamIteratorOptions\n): AsyncIterable {\n // Hacky test for node version to ensure we don't call bad polyfills\n // NODE 10+: stream is an asyncIterator\n for await (const chunk of stream) {\n yield toArrayBuffer(chunk); // Coerce each chunk to ArrayBuffer\n }\n}\n/* TODO - remove NODE < 10\n * @see https://github.com/bustle/streaming-iterables, MIT license\n *\n if (typeof stream[Symbol.asyncIterator] === 'function') {\n return;\n }\n\n // TODO - check if is this ever used in Node 10+?\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const data = stream.read();\n if (data !== null) {\n yield toArrayBuffer(data);\n // eslint-disable-next-line no-continue\n continue;\n }\n if (stream._readableState?.ended) {\n return;\n }\n await onceReadable(stream);\n }\n\nasync function onceReadable(stream: Readable): Promise {\n return new Promise((resolve) => {\n stream.once('readable', resolve);\n });\n}\n */\n","import * as node from '../node/buffer';\nexport function isBuffer(value) {\n return value && typeof value === 'object' && value.isBuffer;\n}\nexport function toBuffer(data) {\n return node.toBuffer ? node.toBuffer(data) : data;\n}\nexport function toArrayBuffer(data) {\n if (isBuffer(data)) {\n return node.toArrayBuffer(data);\n }\n if (data instanceof ArrayBuffer) {\n return data;\n }\n if (ArrayBuffer.isView(data)) {\n if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) {\n return data.buffer;\n }\n return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);\n }\n if (typeof data === 'string') {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n if (data && typeof data === 'object' && data._toArrayBuffer) {\n return data._toArrayBuffer();\n }\n throw new Error('toArrayBuffer');\n}\n//# sourceMappingURL=memory-conversion-utils.js.map","// loaders.gl, MIT license\n\nimport * as node from '../node/buffer';\n\n/**\n * Check for Node.js `Buffer` (without triggering bundler to include Buffer polyfill on browser)\n */\nexport function isBuffer(value: any): boolean {\n return value && typeof value === 'object' && value.isBuffer;\n}\n\n/**\n * Converts to Node.js `Buffer` (without triggering bundler to include Buffer polyfill on browser)\n * @todo better data type\n */\nexport function toBuffer(data: any): Buffer {\n return node.toBuffer ? node.toBuffer(data) : data;\n}\n\n/**\n * Convert an object to an array buffer\n */\nexport function toArrayBuffer(data: unknown): ArrayBuffer {\n // Note: Should be called first, Buffers can trigger other detections below\n if (isBuffer(data)) {\n return node.toArrayBuffer(data);\n }\n\n if (data instanceof ArrayBuffer) {\n return data;\n }\n\n // Careful - Node Buffers look like Uint8Arrays (keep after isBuffer)\n if (ArrayBuffer.isView(data)) {\n if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) {\n return data.buffer;\n }\n return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);\n }\n\n if (typeof data === 'string') {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n\n // HACK to support Blob polyfill\n if (data && typeof data === 'object' && (data as any)._toArrayBuffer) {\n return (data as any)._toArrayBuffer();\n }\n\n throw new Error('toArrayBuffer');\n}\n","export function toArrayBuffer(buffer) {\n return buffer;\n}\nexport function toBuffer(binaryData) {\n throw new Error('Buffer not supported in browser');\n}\n//# sourceMappingURL=buffer.browser.js.map","// loaders.gl, MIT license\n\n// Isolates Buffer references to ensure they are only bundled under Node.js (avoids big webpack polyfill)\n// this file is selected by the package.json \"browser\" field).\n\n/**\n * Convert Buffer to ArrayBuffer\n * Converts Node.js `Buffer` to `ArrayBuffer` (without triggering bundler to include Buffer polyfill on browser)\n * @todo better data type\n */\nexport function toArrayBuffer(buffer) {\n return buffer;\n}\n\n/**\n * Convert (copy) ArrayBuffer to Buffer\n */\nexport function toBuffer(binaryData: ArrayBuffer | ArrayBuffer | Buffer): Buffer {\n throw new Error('Buffer not supported in browser');\n}\n","import { getFetchFunction } from './get-fetch-function';\nimport { extractQueryString, stripQueryString } from '../utils/url-utils';\nimport { path } from '@loaders.gl/loader-utils';\nexport function getLoaderContext(context, options, parentContext) {\n if (parentContext) {\n return parentContext;\n }\n const newContext = {\n fetch: getFetchFunction(options, context),\n ...context\n };\n if (newContext.url) {\n const baseUrl = stripQueryString(newContext.url);\n newContext.baseUrl = baseUrl;\n newContext.queryString = extractQueryString(newContext.url);\n newContext.filename = path.filename(baseUrl);\n newContext.baseUrl = path.dirname(baseUrl);\n }\n if (!Array.isArray(newContext.loaders)) {\n newContext.loaders = null;\n }\n return newContext;\n}\nexport function getLoadersFromContext(loaders, context) {\n if (!context && loaders && !Array.isArray(loaders)) {\n return loaders;\n }\n let candidateLoaders;\n if (loaders) {\n candidateLoaders = Array.isArray(loaders) ? loaders : [loaders];\n }\n if (context && context.loaders) {\n const contextLoaders = Array.isArray(context.loaders) ? context.loaders : [context.loaders];\n candidateLoaders = candidateLoaders ? [...candidateLoaders, ...contextLoaders] : contextLoaders;\n }\n return candidateLoaders && candidateLoaders.length ? candidateLoaders : null;\n}\n//# sourceMappingURL=loader-context.js.map","import type {Loader, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport {getFetchFunction} from './get-fetch-function';\nimport {extractQueryString, stripQueryString} from '../utils/url-utils';\nimport {path} from '@loaders.gl/loader-utils';\n\n/**\n * \"sub\" loaders invoked by other loaders get a \"context\" injected on `this`\n * The context will inject core methods like `parse` and contain information\n * about loaders and options passed in to the top-level `parse` call.\n *\n * @param context\n * @param options\n * @param previousContext\n */\nexport function getLoaderContext(\n context: Omit & Partial>,\n options: LoaderOptions,\n parentContext: LoaderContext | null\n): LoaderContext {\n // For recursive calls, we already have a context\n // TODO - add any additional loaders to context?\n if (parentContext) {\n return parentContext;\n }\n\n const newContext: LoaderContext = {\n fetch: getFetchFunction(options, context),\n ...context\n };\n\n // Parse URLs so that subloaders can easily generate correct strings\n if (newContext.url) {\n const baseUrl = stripQueryString(newContext.url);\n newContext.baseUrl = baseUrl;\n newContext.queryString = extractQueryString(newContext.url);\n newContext.filename = path.filename(baseUrl);\n newContext.baseUrl = path.dirname(baseUrl);\n }\n\n // Recursive loading does not use single loader\n if (!Array.isArray(newContext.loaders)) {\n newContext.loaders = null;\n }\n\n return newContext;\n}\n\n// eslint-disable-next-line complexity\nexport function getLoadersFromContext(\n loaders: Loader[] | Loader | undefined,\n context?: LoaderContext\n) {\n // A single non-array loader is force selected, but only on top-level (context === null)\n if (!context && loaders && !Array.isArray(loaders)) {\n return loaders;\n }\n\n // Create a merged list\n let candidateLoaders;\n if (loaders) {\n candidateLoaders = Array.isArray(loaders) ? loaders : [loaders];\n }\n if (context && context.loaders) {\n const contextLoaders = Array.isArray(context.loaders) ? context.loaders : [context.loaders];\n candidateLoaders = candidateLoaders ? [...candidateLoaders, ...contextLoaders] : contextLoaders;\n }\n // If no loaders, return null to look in globally registered loaders\n return candidateLoaders && candidateLoaders.length ? candidateLoaders : null;\n}\n","import { getCWD } from './get-cwd';\nexport function filename(url) {\n const slashIndex = url ? url.lastIndexOf('/') : -1;\n return slashIndex >= 0 ? url.substr(slashIndex + 1) : '';\n}\nexport function dirname(url) {\n const slashIndex = url ? url.lastIndexOf('/') : -1;\n return slashIndex >= 0 ? url.substr(0, slashIndex) : '';\n}\nexport function join() {\n for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {\n parts[_key] = arguments[_key];\n }\n const separator = '/';\n parts = parts.map((part, index) => {\n if (index) {\n part = part.replace(new RegExp(\"^\".concat(separator)), '');\n }\n if (index !== parts.length - 1) {\n part = part.replace(new RegExp(\"\".concat(separator, \"$\")), '');\n }\n return part;\n });\n return parts.join(separator);\n}\nexport function resolve() {\n const paths = [];\n for (let _i = 0; _i < arguments.length; _i++) {\n paths[_i] = _i < 0 || arguments.length <= _i ? undefined : arguments[_i];\n }\n let resolvedPath = '';\n let resolvedAbsolute = false;\n let cwd;\n for (let i = paths.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n let path;\n if (i >= 0) {\n path = paths[i];\n } else {\n if (cwd === undefined) {\n cwd = getCWD();\n }\n path = cwd;\n }\n if (path.length === 0) {\n continue;\n }\n resolvedPath = \"\".concat(path, \"/\").concat(resolvedPath);\n resolvedAbsolute = path.charCodeAt(0) === SLASH;\n }\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n if (resolvedAbsolute) {\n return \"/\".concat(resolvedPath);\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n }\n return '.';\n}\nconst SLASH = 47;\nconst DOT = 46;\nfunction normalizeStringPosix(path, allowAboveRoot) {\n let res = '';\n let lastSlash = -1;\n let dots = 0;\n let code;\n let isAboveRoot = false;\n for (let i = 0; i <= path.length; ++i) {\n if (i < path.length) {\n code = path.charCodeAt(i);\n } else if (code === SLASH) {\n break;\n } else {\n code = SLASH;\n }\n if (code === SLASH) {\n if (lastSlash === i - 1 || dots === 1) {} else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || !isAboveRoot || res.charCodeAt(res.length - 1) !== DOT || res.charCodeAt(res.length - 2) !== DOT) {\n if (res.length > 2) {\n const start = res.length - 1;\n let j = start;\n for (; j >= 0; --j) {\n if (res.charCodeAt(j) === SLASH) {\n break;\n }\n }\n if (j !== start) {\n res = j === -1 ? '' : res.slice(0, j);\n lastSlash = i;\n dots = 0;\n isAboveRoot = false;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSlash = i;\n dots = 0;\n isAboveRoot = false;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0) {\n res += '/..';\n } else {\n res = '..';\n }\n isAboveRoot = true;\n }\n } else {\n const slice = path.slice(lastSlash + 1, i);\n if (res.length > 0) {\n res += \"/\".concat(slice);\n } else {\n res = slice;\n }\n isAboveRoot = false;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === DOT && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n//# sourceMappingURL=path.js.map","// Beginning of a minimal implementation of the Node.js path API, that doesn't pull in big polyfills.\n\nimport {getCWD} from './get-cwd';\n\n/**\n * Replacement for Node.js path.filename\n * @param url\n */\nexport function filename(url: string): string {\n const slashIndex = url ? url.lastIndexOf('/') : -1;\n return slashIndex >= 0 ? url.substr(slashIndex + 1) : '';\n}\n\n/**\n * Replacement for Node.js path.dirname\n * @param url\n */\nexport function dirname(url: string): string {\n const slashIndex = url ? url.lastIndexOf('/') : -1;\n return slashIndex >= 0 ? url.substr(0, slashIndex) : '';\n}\n\n/**\n * Replacement for Node.js path.join\n * @param parts\n */\nexport function join(...parts: string[]): string {\n const separator = '/';\n parts = parts.map((part, index) => {\n if (index) {\n part = part.replace(new RegExp(`^${separator}`), '');\n }\n if (index !== parts.length - 1) {\n part = part.replace(new RegExp(`${separator}$`), '');\n }\n return part;\n });\n return parts.join(separator);\n}\n\n/* eslint-disable no-continue */\n\n/**\n * https://nodejs.org/api/path.html#path_path_resolve_paths\n * @param paths A sequence of paths or path segments.\n * @return resolved path\n * Forked from BTOdell/path-resolve under MIT license\n * @see https://github.com/BTOdell/path-resolve/blob/master/LICENSE\n */\nexport function resolve(...components: string[]): string {\n const paths: string[] = [];\n for (let _i = 0; _i < components.length; _i++) {\n paths[_i] = components[_i];\n }\n let resolvedPath = '';\n let resolvedAbsolute = false;\n let cwd: string | undefined;\n for (let i = paths.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n let path: string | undefined;\n if (i >= 0) {\n path = paths[i];\n } else {\n if (cwd === undefined) {\n cwd = getCWD();\n }\n path = cwd;\n }\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = path.charCodeAt(0) === SLASH;\n }\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n // Normalize the path (removes leading slash)\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n if (resolvedAbsolute) {\n return `/${resolvedPath}`;\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n }\n return '.';\n}\n\nconst SLASH = 47;\nconst DOT = 46;\n\n/**\n * Resolves . and .. elements in a path with directory names\n * Forked from BTOdell/path-resolve under MIT license\n * @see https://github.com/BTOdell/path-resolve/blob/master/LICENSE\n */\n/* eslint-disable max-depth */\n// eslint-disable-next-line complexity, max-statements\nfunction normalizeStringPosix(path: string, allowAboveRoot: boolean): string {\n let res = '';\n let lastSlash = -1;\n let dots = 0;\n let code: number | undefined;\n let isAboveRoot = false;\n\n for (let i = 0; i <= path.length; ++i) {\n if (i < path.length) {\n code = path.charCodeAt(i);\n } else if (code === SLASH) {\n break;\n } else {\n code = SLASH;\n }\n if (code === SLASH) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (\n res.length < 2 ||\n !isAboveRoot ||\n res.charCodeAt(res.length - 1) !== DOT ||\n res.charCodeAt(res.length - 2) !== DOT\n ) {\n if (res.length > 2) {\n const start = res.length - 1;\n let j = start;\n for (; j >= 0; --j) {\n if (res.charCodeAt(j) === SLASH) {\n break;\n }\n }\n if (j !== start) {\n res = j === -1 ? '' : res.slice(0, j);\n lastSlash = i;\n dots = 0;\n isAboveRoot = false;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSlash = i;\n dots = 0;\n isAboveRoot = false;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0) {\n res += '/..';\n } else {\n res = '..';\n }\n isAboveRoot = true;\n }\n } else {\n const slice = path.slice(lastSlash + 1, i);\n if (res.length > 0) {\n res += `/${slice}`;\n } else {\n res = slice;\n }\n isAboveRoot = false;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === DOT && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n","export function getCWD() {\n var _window$location;\n if (typeof process !== 'undefined' && typeof process.cwd !== 'undefined') {\n return process.cwd();\n }\n const pathname = (_window$location = window.location) === null || _window$location === void 0 ? void 0 : _window$location.pathname;\n return (pathname === null || pathname === void 0 ? void 0 : pathname.slice(0, pathname.lastIndexOf('/') + 1)) || '';\n}\n//# sourceMappingURL=get-cwd.js.map","// loaders.gl MIT license\n\nexport function getCWD() {\n if (typeof process !== 'undefined' && typeof process.cwd !== 'undefined') {\n return process.cwd();\n }\n const pathname = window.location?.pathname;\n return pathname?.slice(0, pathname.lastIndexOf('/') + 1) || '';\n}\n","import { compareArrayBuffers, path } from '@loaders.gl/loader-utils';\nimport { normalizeLoader } from '../loader-utils/normalize-loader';\nimport { log } from '../utils/log';\nimport { getResourceUrl, getResourceMIMEType } from '../utils/resource-utils';\nimport { getRegisteredLoaders } from './register-loaders';\nimport { isBlob } from '../../javascript-utils/is-type';\nimport { stripQueryString } from '../utils/url-utils';\nconst EXT_PATTERN = /\\.([^.]+)$/;\nexport async function selectLoader(data) {\n let loaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n let options = arguments.length > 2 ? arguments[2] : undefined;\n let context = arguments.length > 3 ? arguments[3] : undefined;\n if (!validHTTPResponse(data)) {\n return null;\n }\n let loader = selectLoaderSync(data, loaders, {\n ...options,\n nothrow: true\n }, context);\n if (loader) {\n return loader;\n }\n if (isBlob(data)) {\n data = await data.slice(0, 10).arrayBuffer();\n loader = selectLoaderSync(data, loaders, options, context);\n }\n if (!loader && !(options !== null && options !== void 0 && options.nothrow)) {\n throw new Error(getNoValidLoaderMessage(data));\n }\n return loader;\n}\nexport function selectLoaderSync(data) {\n let loaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n let options = arguments.length > 2 ? arguments[2] : undefined;\n let context = arguments.length > 3 ? arguments[3] : undefined;\n if (!validHTTPResponse(data)) {\n return null;\n }\n if (loaders && !Array.isArray(loaders)) {\n return normalizeLoader(loaders);\n }\n let candidateLoaders = [];\n if (loaders) {\n candidateLoaders = candidateLoaders.concat(loaders);\n }\n if (!(options !== null && options !== void 0 && options.ignoreRegisteredLoaders)) {\n candidateLoaders.push(...getRegisteredLoaders());\n }\n normalizeLoaders(candidateLoaders);\n const loader = selectLoaderInternal(data, candidateLoaders, options, context);\n if (!loader && !(options !== null && options !== void 0 && options.nothrow)) {\n throw new Error(getNoValidLoaderMessage(data));\n }\n return loader;\n}\nfunction selectLoaderInternal(data, loaders, options, context) {\n const url = getResourceUrl(data);\n const type = getResourceMIMEType(data);\n const testUrl = stripQueryString(url) || (context === null || context === void 0 ? void 0 : context.url);\n let loader = null;\n let reason = '';\n if (options !== null && options !== void 0 && options.mimeType) {\n loader = findLoaderByMIMEType(loaders, options === null || options === void 0 ? void 0 : options.mimeType);\n reason = \"match forced by supplied MIME type \".concat(options === null || options === void 0 ? void 0 : options.mimeType);\n }\n loader = loader || findLoaderByUrl(loaders, testUrl);\n reason = reason || (loader ? \"matched url \".concat(testUrl) : '');\n loader = loader || findLoaderByMIMEType(loaders, type);\n reason = reason || (loader ? \"matched MIME type \".concat(type) : '');\n loader = loader || findLoaderByInitialBytes(loaders, data);\n reason = reason || (loader ? \"matched initial data \".concat(getFirstCharacters(data)) : '');\n loader = loader || findLoaderByMIMEType(loaders, options === null || options === void 0 ? void 0 : options.fallbackMimeType);\n reason = reason || (loader ? \"matched fallback MIME type \".concat(type) : '');\n if (reason) {\n var _loader;\n log.log(1, \"selectLoader selected \".concat((_loader = loader) === null || _loader === void 0 ? void 0 : _loader.name, \": \").concat(reason, \".\"));\n }\n return loader;\n}\nfunction validHTTPResponse(data) {\n if (data instanceof Response) {\n if (data.status === 204) {\n return false;\n }\n }\n return true;\n}\nfunction getNoValidLoaderMessage(data) {\n const url = getResourceUrl(data);\n const type = getResourceMIMEType(data);\n let message = 'No valid loader found (';\n message += url ? \"\".concat(path.filename(url), \", \") : 'no url provided, ';\n message += \"MIME type: \".concat(type ? \"\\\"\".concat(type, \"\\\"\") : 'not provided', \", \");\n const firstCharacters = data ? getFirstCharacters(data) : '';\n message += firstCharacters ? \" first bytes: \\\"\".concat(firstCharacters, \"\\\"\") : 'first bytes: not available';\n message += ')';\n return message;\n}\nfunction normalizeLoaders(loaders) {\n for (const loader of loaders) {\n normalizeLoader(loader);\n }\n}\nfunction findLoaderByUrl(loaders, url) {\n const match = url && EXT_PATTERN.exec(url);\n const extension = match && match[1];\n return extension ? findLoaderByExtension(loaders, extension) : null;\n}\nfunction findLoaderByExtension(loaders, extension) {\n extension = extension.toLowerCase();\n for (const loader of loaders) {\n for (const loaderExtension of loader.extensions) {\n if (loaderExtension.toLowerCase() === extension) {\n return loader;\n }\n }\n }\n return null;\n}\nfunction findLoaderByMIMEType(loaders, mimeType) {\n for (const loader of loaders) {\n if (loader.mimeTypes && loader.mimeTypes.includes(mimeType)) {\n return loader;\n }\n if (mimeType === \"application/x.\".concat(loader.id)) {\n return loader;\n }\n }\n return null;\n}\nfunction findLoaderByInitialBytes(loaders, data) {\n if (!data) {\n return null;\n }\n for (const loader of loaders) {\n if (typeof data === 'string') {\n if (testDataAgainstText(data, loader)) {\n return loader;\n }\n } else if (ArrayBuffer.isView(data)) {\n if (testDataAgainstBinary(data.buffer, data.byteOffset, loader)) {\n return loader;\n }\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n if (testDataAgainstBinary(data, byteOffset, loader)) {\n return loader;\n }\n }\n }\n return null;\n}\nfunction testDataAgainstText(data, loader) {\n if (loader.testText) {\n return loader.testText(data);\n }\n const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];\n return tests.some(test => data.startsWith(test));\n}\nfunction testDataAgainstBinary(data, byteOffset, loader) {\n const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];\n return tests.some(test => testBinary(data, byteOffset, loader, test));\n}\nfunction testBinary(data, byteOffset, loader, test) {\n if (test instanceof ArrayBuffer) {\n return compareArrayBuffers(test, data, test.byteLength);\n }\n switch (typeof test) {\n case 'function':\n return test(data, loader);\n case 'string':\n const magic = getMagicString(data, byteOffset, test.length);\n return test === magic;\n default:\n return false;\n }\n}\nfunction getFirstCharacters(data) {\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;\n if (typeof data === 'string') {\n return data.slice(0, length);\n } else if (ArrayBuffer.isView(data)) {\n return getMagicString(data.buffer, data.byteOffset, length);\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n return getMagicString(data, byteOffset, length);\n }\n return '';\n}\nfunction getMagicString(arrayBuffer, byteOffset, length) {\n if (arrayBuffer.byteLength < byteOffset + length) {\n return '';\n }\n const dataView = new DataView(arrayBuffer);\n let magic = '';\n for (let i = 0; i < length; i++) {\n magic += String.fromCharCode(dataView.getUint8(byteOffset + i));\n }\n return magic;\n}\n//# sourceMappingURL=select-loader.js.map","import type {LoaderContext, LoaderOptions, Loader} from '@loaders.gl/loader-utils';\nimport {compareArrayBuffers, path} from '@loaders.gl/loader-utils';\nimport {normalizeLoader} from '../loader-utils/normalize-loader';\nimport {log} from '../utils/log';\nimport {getResourceUrl, getResourceMIMEType} from '../utils/resource-utils';\nimport {getRegisteredLoaders} from './register-loaders';\nimport {isBlob} from '../../javascript-utils/is-type';\nimport {stripQueryString} from '../utils/url-utils';\n\nconst EXT_PATTERN = /\\.([^.]+)$/;\n\n// TODO - Need a variant that peeks at streams for parseInBatches\n// TODO - Detect multiple matching loaders? Use heuristics to grade matches?\n// TODO - Allow apps to pass context to disambiguate between multiple matches (e.g. multiple .json formats)?\n\n/**\n * Find a loader that matches file extension and/or initial file content\n * Search the loaders array argument for a loader that matches url extension or initial data\n * Returns: a normalized loader\n * @param data data to assist\n * @param loaders\n * @param options\n * @param context used internally, applications should not provide this parameter\n */\nexport async function selectLoader(\n data: Response | Blob | ArrayBuffer | string,\n loaders: Loader[] | Loader = [],\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise {\n if (!validHTTPResponse(data)) {\n return null;\n }\n\n // First make a sync attempt, disabling exceptions\n let loader = selectLoaderSync(data, loaders, {...options, nothrow: true}, context);\n if (loader) {\n return loader;\n }\n\n // For Blobs and Files, try to asynchronously read a small initial slice and test again with that\n // to see if we can detect by initial content\n if (isBlob(data)) {\n data = await (data as Blob).slice(0, 10).arrayBuffer();\n loader = selectLoaderSync(data, loaders, options, context);\n }\n\n // no loader available\n if (!loader && !options?.nothrow) {\n throw new Error(getNoValidLoaderMessage(data));\n }\n\n return loader;\n}\n\n/**\n * Find a loader that matches file extension and/or initial file content\n * Search the loaders array argument for a loader that matches url extension or initial data\n * Returns: a normalized loader\n * @param data data to assist\n * @param loaders\n * @param options\n * @param context used internally, applications should not provide this parameter\n */\nexport function selectLoaderSync(\n data: Response | Blob | ArrayBuffer | string,\n loaders: Loader[] | Loader = [],\n options?: LoaderOptions,\n context?: LoaderContext\n): Loader | null {\n if (!validHTTPResponse(data)) {\n return null;\n }\n\n // eslint-disable-next-line complexity\n // if only a single loader was provided (not as array), force its use\n // TODO - Should this behavior be kept and documented?\n if (loaders && !Array.isArray(loaders)) {\n // TODO - remove support for legacy loaders\n return normalizeLoader(loaders);\n }\n\n // Build list of candidate loaders that will be searched in order for a match\n let candidateLoaders: Loader[] = [];\n // First search supplied loaders\n if (loaders) {\n candidateLoaders = candidateLoaders.concat(loaders);\n }\n // Then fall back to registered loaders\n if (!options?.ignoreRegisteredLoaders) {\n candidateLoaders.push(...getRegisteredLoaders());\n }\n\n // TODO - remove support for legacy loaders\n normalizeLoaders(candidateLoaders);\n\n const loader = selectLoaderInternal(data, candidateLoaders, options, context);\n\n // no loader available\n if (!loader && !options?.nothrow) {\n throw new Error(getNoValidLoaderMessage(data));\n }\n\n return loader;\n}\n\n/** Implements loaders selection logic */\n// eslint-disable-next-line complexity\nfunction selectLoaderInternal(\n data: Response | Blob | ArrayBuffer | string,\n loaders: Loader[],\n options?: LoaderOptions,\n context?: LoaderContext\n) {\n const url = getResourceUrl(data);\n const type = getResourceMIMEType(data);\n\n const testUrl = stripQueryString(url) || context?.url;\n\n let loader: Loader | null = null;\n let reason: string = '';\n\n // if options.mimeType is supplied, it takes precedence\n if (options?.mimeType) {\n loader = findLoaderByMIMEType(loaders, options?.mimeType);\n reason = `match forced by supplied MIME type ${options?.mimeType}`;\n }\n\n // Look up loader by url\n loader = loader || findLoaderByUrl(loaders, testUrl);\n reason = reason || (loader ? `matched url ${testUrl}` : '');\n\n // Look up loader by mime type\n loader = loader || findLoaderByMIMEType(loaders, type);\n reason = reason || (loader ? `matched MIME type ${type}` : '');\n\n // Look for loader via initial bytes (Note: not always accessible (e.g. Response, stream, async iterator)\n loader = loader || findLoaderByInitialBytes(loaders, data);\n reason = reason || (loader ? `matched initial data ${getFirstCharacters(data)}` : '');\n\n // Look up loader by fallback mime type\n loader = loader || findLoaderByMIMEType(loaders, options?.fallbackMimeType);\n reason = reason || (loader ? `matched fallback MIME type ${type}` : '');\n\n if (reason) {\n log.log(1, `selectLoader selected ${loader?.name}: ${reason}.`);\n }\n\n return loader;\n}\n\n/** Check HTTP Response */\nfunction validHTTPResponse(data: any): boolean {\n // HANDLE HTTP status\n if (data instanceof Response) {\n // 204 - NO CONTENT. This handles cases where e.g. a tile server responds with 204 for a missing tile\n if (data.status === 204) {\n return false;\n }\n }\n return true;\n}\n\n/** Generate a helpful message to help explain why loader selection failed. */\nfunction getNoValidLoaderMessage(data): string {\n const url = getResourceUrl(data);\n const type = getResourceMIMEType(data);\n\n let message = 'No valid loader found (';\n message += url ? `${path.filename(url)}, ` : 'no url provided, ';\n message += `MIME type: ${type ? `\"${type}\"` : 'not provided'}, `;\n // First characters are only accessible when called on data (string or arrayBuffer).\n const firstCharacters: string = data ? getFirstCharacters(data) : '';\n message += firstCharacters ? ` first bytes: \"${firstCharacters}\"` : 'first bytes: not available';\n message += ')';\n return message;\n}\n\nfunction normalizeLoaders(loaders: Loader[]): void {\n for (const loader of loaders) {\n normalizeLoader(loader);\n }\n}\n\n// TODO - Would be nice to support http://example.com/file.glb?parameter=1\n// E.g: x = new URL('http://example.com/file.glb?load=1'; x.pathname\nfunction findLoaderByUrl(loaders: Loader[], url?: string): Loader | null {\n // Get extension\n const match = url && EXT_PATTERN.exec(url);\n const extension = match && match[1];\n return extension ? findLoaderByExtension(loaders, extension) : null;\n}\n\nfunction findLoaderByExtension(loaders: Loader[], extension: string): Loader | null {\n extension = extension.toLowerCase();\n\n for (const loader of loaders) {\n for (const loaderExtension of loader.extensions) {\n if (loaderExtension.toLowerCase() === extension) {\n return loader;\n }\n }\n }\n return null;\n}\n\nfunction findLoaderByMIMEType(loaders, mimeType) {\n for (const loader of loaders) {\n if (loader.mimeTypes && loader.mimeTypes.includes(mimeType)) {\n return loader;\n }\n\n // Support referring to loaders using the \"unregistered tree\"\n // https://en.wikipedia.org/wiki/Media_type#Unregistered_tree\n if (mimeType === `application/x.${loader.id}`) {\n return loader;\n }\n }\n return null;\n}\n\nfunction findLoaderByInitialBytes(loaders, data) {\n if (!data) {\n return null;\n }\n\n for (const loader of loaders) {\n if (typeof data === 'string') {\n if (testDataAgainstText(data, loader)) {\n return loader;\n }\n } else if (ArrayBuffer.isView(data)) {\n // Typed Arrays can have offsets into underlying buffer\n if (testDataAgainstBinary(data.buffer, data.byteOffset, loader)) {\n return loader;\n }\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n if (testDataAgainstBinary(data, byteOffset, loader)) {\n return loader;\n }\n }\n // TODO Handle streaming case (requires creating a new AsyncIterator)\n }\n return null;\n}\n\nfunction testDataAgainstText(data, loader) {\n if (loader.testText) {\n return loader.testText(data);\n }\n\n const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];\n return tests.some((test) => data.startsWith(test));\n}\n\nfunction testDataAgainstBinary(data, byteOffset, loader) {\n const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];\n return tests.some((test) => testBinary(data, byteOffset, loader, test));\n}\n\nfunction testBinary(data, byteOffset, loader, test) {\n if (test instanceof ArrayBuffer) {\n return compareArrayBuffers(test, data, test.byteLength);\n }\n switch (typeof test) {\n case 'function':\n return test(data, loader);\n\n case 'string':\n // Magic bytes check: If `test` is a string, check if binary data starts with that strings\n const magic = getMagicString(data, byteOffset, test.length);\n return test === magic;\n\n default:\n return false;\n }\n}\n\nfunction getFirstCharacters(data, length: number = 5) {\n if (typeof data === 'string') {\n return data.slice(0, length);\n } else if (ArrayBuffer.isView(data)) {\n // Typed Arrays can have offsets into underlying buffer\n return getMagicString(data.buffer, data.byteOffset, length);\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n return getMagicString(data, byteOffset, length);\n }\n return '';\n}\n\nfunction getMagicString(arrayBuffer, byteOffset, length) {\n if (arrayBuffer.byteLength < byteOffset + length) {\n return '';\n }\n const dataView = new DataView(arrayBuffer);\n let magic = '';\n for (let i = 0; i < length; i++) {\n magic += String.fromCharCode(dataView.getUint8(byteOffset + i));\n }\n return magic;\n}\n","import { Log } from '@probe.gl/log';\nexport const log = new Log({\n id: 'loaders.gl'\n});\n//# sourceMappingURL=log.js.map","// loaders.gl, MIT license\nimport {Log} from '@probe.gl/log';\n\nexport const log = new Log({id: 'loaders.gl'});\n","import { normalizeLoader } from '../loader-utils/normalize-loader';\nimport { getGlobalLoaderState } from '../loader-utils/option-utils';\nconst getGlobalLoaderRegistry = () => {\n const state = getGlobalLoaderState();\n state.loaderRegistry = state.loaderRegistry || [];\n return state.loaderRegistry;\n};\nexport function registerLoaders(loaders) {\n const loaderRegistry = getGlobalLoaderRegistry();\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n for (const loader of loaders) {\n const normalizedLoader = normalizeLoader(loader);\n if (!loaderRegistry.find(registeredLoader => normalizedLoader === registeredLoader)) {\n loaderRegistry.unshift(normalizedLoader);\n }\n }\n}\nexport function getRegisteredLoaders() {\n return getGlobalLoaderRegistry();\n}\nexport function _unregisterLoaders() {\n const state = getGlobalLoaderState();\n state.loaderRegistry = [];\n}\n//# sourceMappingURL=register-loaders.js.map","import {Loader} from '@loaders.gl/loader-utils';\nimport {normalizeLoader} from '../loader-utils/normalize-loader';\nimport {getGlobalLoaderState} from '../loader-utils/option-utils';\n\n// Store global registered loaders on the global object to increase chances of cross loaders-version interoperability\n// This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks\nconst getGlobalLoaderRegistry = () => {\n const state = getGlobalLoaderState();\n state.loaderRegistry = state.loaderRegistry || [];\n return state.loaderRegistry;\n};\n\n/** Register a list of global loaders */\nexport function registerLoaders(loaders: Loader[] | Loader) {\n const loaderRegistry = getGlobalLoaderRegistry();\n\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n\n for (const loader of loaders) {\n const normalizedLoader = normalizeLoader(loader);\n if (!loaderRegistry.find((registeredLoader) => normalizedLoader === registeredLoader)) {\n // add to the beginning of the loaderRegistry, so the last registeredLoader get picked\n loaderRegistry.unshift(normalizedLoader);\n }\n }\n}\n\nexport function getRegisteredLoaders(): Loader[] {\n return getGlobalLoaderRegistry();\n}\n\n/** @deprecated For testing only */\nexport function _unregisterLoaders() {\n const state = getGlobalLoaderState();\n state.loaderRegistry = [];\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, gouraudLighting, picking, COORDINATE_SYSTEM } from '@deck.gl/core';\nimport { Model, Geometry, hasFeatures, FEATURES } from '@luma.gl/core';\nimport PolygonTesselator from './polygon-tesselator';\nimport vsTop from './solid-polygon-layer-vertex-top.glsl';\nimport vsSide from './solid-polygon-layer-vertex-side.glsl';\nimport fs from './solid-polygon-layer-fragment.glsl';\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n filled: true,\n extruded: false,\n wireframe: false,\n _normalize: true,\n _windingOrder: 'CW',\n _full3d: false,\n elevationScale: {\n type: 'number',\n min: 0,\n value: 1\n },\n getPolygon: {\n type: 'accessor',\n value: f => f.polygon\n },\n getElevation: {\n type: 'accessor',\n value: 1000\n },\n getFillColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n getLineColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n material: true\n};\nconst ATTRIBUTE_TRANSITION = {\n enter: (value, chunk) => {\n return chunk.length ? chunk.subarray(chunk.length - value.length) : value;\n }\n};\nexport default class SolidPolygonLayer extends Layer {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", void 0);\n }\n\n getShaders(type) {\n return super.getShaders({\n vs: type === 'top' ? vsTop : vsSide,\n fs,\n defines: {\n RING_WINDING_ORDER_CW: !this.props._normalize && this.props._windingOrder === 'CCW' ? 0 : 1\n },\n modules: [project32, gouraudLighting, picking]\n });\n }\n\n get wrapLongitude() {\n return false;\n }\n\n initializeState() {\n const {\n gl,\n viewport\n } = this.context;\n let {\n coordinateSystem\n } = this.props;\n const {\n _full3d\n } = this.props;\n\n if (viewport.isGeospatial && coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n coordinateSystem = COORDINATE_SYSTEM.LNGLAT;\n }\n\n let preproject;\n\n if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT) {\n if (_full3d) {\n preproject = viewport.projectPosition.bind(viewport);\n } else {\n preproject = viewport.projectFlat.bind(viewport);\n }\n }\n\n this.setState({\n numInstances: 0,\n polygonTesselator: new PolygonTesselator({\n preproject,\n fp64: this.use64bitPositions(),\n IndexType: !gl || hasFeatures(gl, FEATURES.ELEMENT_INDEX_UINT32) ? Uint32Array : Uint16Array\n })\n });\n const attributeManager = this.getAttributeManager();\n const noAlloc = true;\n attributeManager.remove(['instancePickingColors']);\n attributeManager.add({\n indices: {\n size: 1,\n isIndexed: true,\n update: this.calculateIndices,\n noAlloc\n },\n positions: {\n size: 3,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getPolygon',\n update: this.calculatePositions,\n noAlloc,\n shaderAttributes: {\n positions: {\n vertexOffset: 0,\n divisor: 0\n },\n instancePositions: {\n vertexOffset: 0,\n divisor: 1\n },\n nextPositions: {\n vertexOffset: 1,\n divisor: 1\n }\n }\n },\n vertexValid: {\n size: 1,\n divisor: 1,\n type: 5121,\n update: this.calculateVertexValid,\n noAlloc\n },\n elevations: {\n size: 1,\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getElevation',\n shaderAttributes: {\n elevations: {\n divisor: 0\n },\n instanceElevations: {\n divisor: 1\n }\n }\n },\n fillColors: {\n size: this.props.colorFormat.length,\n type: 5121,\n normalized: true,\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getFillColor',\n defaultValue: DEFAULT_COLOR,\n shaderAttributes: {\n fillColors: {\n divisor: 0\n },\n instanceFillColors: {\n divisor: 1\n }\n }\n },\n lineColors: {\n size: this.props.colorFormat.length,\n type: 5121,\n normalized: true,\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getLineColor',\n defaultValue: DEFAULT_COLOR,\n shaderAttributes: {\n lineColors: {\n divisor: 0\n },\n instanceLineColors: {\n divisor: 1\n }\n }\n },\n pickingColors: {\n size: 3,\n type: 5121,\n accessor: (object, {\n index,\n target: value\n }) => this.encodePickingColor(object && object.__source ? object.__source.index : index, value),\n shaderAttributes: {\n pickingColors: {\n divisor: 0\n },\n instancePickingColors: {\n divisor: 1\n }\n }\n }\n });\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n const {\n index\n } = info;\n const {\n data\n } = this.props;\n\n if (data[0] && data[0].__source) {\n info.object = data.find(d => d.__source.index === index);\n }\n\n return info;\n }\n\n disablePickingIndex(objectIndex) {\n const {\n data\n } = this.props;\n\n if (data[0] && data[0].__source) {\n for (let i = 0; i < data.length; i++) {\n if (data[i].__source.index === objectIndex) {\n this._disablePickingIndex(i);\n }\n }\n } else {\n super.disablePickingIndex(objectIndex);\n }\n }\n\n draw({\n uniforms\n }) {\n const {\n extruded,\n filled,\n wireframe,\n elevationScale\n } = this.props;\n const {\n topModel,\n sideModel,\n polygonTesselator\n } = this.state;\n const renderUniforms = { ...uniforms,\n extruded: Boolean(extruded),\n elevationScale\n };\n\n if (sideModel) {\n sideModel.setInstanceCount(polygonTesselator.instanceCount - 1);\n sideModel.setUniforms(renderUniforms);\n\n if (wireframe) {\n sideModel.setDrawMode(3);\n sideModel.setUniforms({\n isWireframe: true\n }).draw();\n }\n\n if (filled) {\n sideModel.setDrawMode(6);\n sideModel.setUniforms({\n isWireframe: false\n }).draw();\n }\n }\n\n if (topModel) {\n topModel.setVertexCount(polygonTesselator.vertexCount);\n topModel.setUniforms(renderUniforms).draw();\n }\n }\n\n updateState(updateParams) {\n super.updateState(updateParams);\n this.updateGeometry(updateParams);\n const {\n props,\n oldProps,\n changeFlags\n } = updateParams;\n const attributeManager = this.getAttributeManager();\n const regenerateModels = changeFlags.extensionsChanged || props.filled !== oldProps.filled || props.extruded !== oldProps.extruded;\n\n if (regenerateModels) {\n var _this$state$models;\n\n (_this$state$models = this.state.models) === null || _this$state$models === void 0 ? void 0 : _this$state$models.forEach(model => model.delete());\n this.setState(this._getModels(this.context.gl));\n attributeManager.invalidateAll();\n }\n }\n\n updateGeometry({\n props,\n oldProps,\n changeFlags\n }) {\n const geometryConfigChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPolygon);\n\n if (geometryConfigChanged) {\n const {\n polygonTesselator\n } = this.state;\n const buffers = props.data.attributes || {};\n polygonTesselator.updateGeometry({\n data: props.data,\n normalize: props._normalize,\n geometryBuffer: buffers.getPolygon,\n buffers,\n getGeometry: props.getPolygon,\n positionFormat: props.positionFormat,\n wrapLongitude: props.wrapLongitude,\n resolution: this.context.viewport.resolution,\n fp64: this.use64bitPositions(),\n dataChanged: changeFlags.dataChanged,\n full3d: props._full3d\n });\n this.setState({\n numInstances: polygonTesselator.instanceCount,\n startIndices: polygonTesselator.vertexStarts\n });\n\n if (!changeFlags.dataChanged) {\n this.getAttributeManager().invalidateAll();\n }\n }\n }\n\n _getModels(gl) {\n const {\n id,\n filled,\n extruded\n } = this.props;\n let topModel;\n let sideModel;\n\n if (filled) {\n const shaders = this.getShaders('top');\n shaders.defines.NON_INSTANCED_MODEL = 1;\n topModel = new Model(gl, { ...shaders,\n id: \"\".concat(id, \"-top\"),\n drawMode: 4,\n attributes: {\n vertexPositions: new Float32Array([0, 1])\n },\n uniforms: {\n isWireframe: false,\n isSideVertex: false\n },\n vertexCount: 0,\n isIndexed: true\n });\n }\n\n if (extruded) {\n sideModel = new Model(gl, { ...this.getShaders('side'),\n id: \"\".concat(id, \"-side\"),\n geometry: new Geometry({\n drawMode: 1,\n vertexCount: 4,\n attributes: {\n vertexPositions: {\n size: 2,\n value: new Float32Array([1, 0, 0, 0, 0, 1, 1, 1])\n }\n }\n }),\n instanceCount: 0,\n isInstanced: 1\n });\n sideModel.userData.excludeAttributes = {\n indices: true\n };\n }\n\n return {\n models: [sideModel, topModel].filter(Boolean),\n topModel,\n sideModel\n };\n }\n\n calculateIndices(attribute) {\n const {\n polygonTesselator\n } = this.state;\n attribute.startIndices = polygonTesselator.indexStarts;\n attribute.value = polygonTesselator.get('indices');\n }\n\n calculatePositions(attribute) {\n const {\n polygonTesselator\n } = this.state;\n attribute.startIndices = polygonTesselator.vertexStarts;\n attribute.value = polygonTesselator.get('positions');\n }\n\n calculateVertexValid(attribute) {\n attribute.value = this.state.polygonTesselator.get('vertexValid');\n }\n\n}\n\n_defineProperty(SolidPolygonLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(SolidPolygonLayer, \"layerName\", 'SolidPolygonLayer');\n//# sourceMappingURL=solid-polygon-layer.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {Layer, project32, gouraudLighting, picking, COORDINATE_SYSTEM} from '@deck.gl/core';\nimport GL from '@luma.gl/constants';\nimport {Model, Geometry, hasFeatures, FEATURES} from '@luma.gl/core';\n\n// Polygon geometry generation is managed by the polygon tesselator\nimport PolygonTesselator from './polygon-tesselator';\n\nimport vsTop from './solid-polygon-layer-vertex-top.glsl';\nimport vsSide from './solid-polygon-layer-vertex-side.glsl';\nimport fs from './solid-polygon-layer-fragment.glsl';\n\nimport type {\n LayerProps,\n LayerDataSource,\n Color,\n Material,\n Accessor,\n AccessorFunction,\n UpdateParameters,\n GetPickingInfoParams,\n PickingInfo,\n DefaultProps\n} from '@deck.gl/core';\nimport type {PolygonGeometry} from './polygon';\n\ntype _SolidPolygonLayerProps = {\n data: LayerDataSource;\n /** Whether to fill the polygons\n * @default true\n */\n filled?: boolean;\n /** Whether to extrude the polygons\n * @default false\n */\n extruded?: boolean;\n /** Whether to generate a line wireframe of the polygon.\n * @default false\n */\n wireframe?: boolean;\n /**\n * (Experimental) If `false`, will skip normalizing the coordinates returned by `getPolygon`.\n * @default true\n */\n _normalize?: boolean;\n /**\n * (Experimental) This prop is only effective with `_normalize: false`.\n * It specifies the winding order of rings in the polygon data, one of 'CW' (clockwise) and 'CCW' (counter-clockwise)\n */\n _windingOrder?: 'CW' | 'CCW';\n\n /**\n * (Experimental) This prop is only effective with `XYZ` data.\n * When true, polygon tesselation will be performed on the plane with the largest area, instead of the xy plane.\n * @default false\n */\n _full3d?: boolean;\n\n /** Elevation multiplier.\n * @default 1\n */\n elevationScale?: number;\n\n /** Polygon geometry accessor. */\n getPolygon?: AccessorFunction;\n /** Extrusion height accessor.\n * @default 1000\n */\n getElevation?: Accessor;\n /** Fill color accessor.\n * @default [0, 0, 0, 255]\n */\n getFillColor?: Accessor;\n /** Stroke color accessor.\n * @default [0, 0, 0, 255]\n */\n getLineColor?: Accessor;\n\n /**\n * Material settings for lighting effect. Applies if `extruded: true`\n *\n * @default true\n * @see https://deck.gl/docs/developer-guide/using-lighting\n */\n material?: Material;\n};\n\n/** Render filled and/or extruded polygons. */\nexport type SolidPolygonLayerProps = _SolidPolygonLayerProps & LayerProps;\n\nconst DEFAULT_COLOR: [number, number, number, number] = [0, 0, 0, 255];\n\nconst defaultProps: DefaultProps = {\n filled: true,\n extruded: false,\n wireframe: false,\n _normalize: true,\n _windingOrder: 'CW',\n _full3d: false,\n\n elevationScale: {type: 'number', min: 0, value: 1},\n\n getPolygon: {type: 'accessor', value: f => f.polygon},\n getElevation: {type: 'accessor', value: 1000},\n getFillColor: {type: 'accessor', value: DEFAULT_COLOR},\n getLineColor: {type: 'accessor', value: DEFAULT_COLOR},\n\n material: true\n};\n\nconst ATTRIBUTE_TRANSITION = {\n enter: (value, chunk) => {\n return chunk.length ? chunk.subarray(chunk.length - value.length) : value;\n }\n};\n\nexport default class SolidPolygonLayer extends Layer<\n ExtraPropsT & Required<_SolidPolygonLayerProps>\n> {\n static defaultProps = defaultProps;\n static layerName = 'SolidPolygonLayer';\n\n state!: {\n topModel?: Model;\n sideModel?: Model;\n models?: Model[];\n numInstances: number;\n polygonTesselator: PolygonTesselator;\n };\n\n getShaders(type) {\n return super.getShaders({\n vs: type === 'top' ? vsTop : vsSide,\n fs,\n defines: {\n RING_WINDING_ORDER_CW: !this.props._normalize && this.props._windingOrder === 'CCW' ? 0 : 1\n },\n modules: [project32, gouraudLighting, picking]\n });\n }\n\n get wrapLongitude(): boolean {\n return false;\n }\n\n initializeState() {\n const {gl, viewport} = this.context;\n let {coordinateSystem} = this.props;\n const {_full3d} = this.props;\n if (viewport.isGeospatial && coordinateSystem === COORDINATE_SYSTEM.DEFAULT) {\n coordinateSystem = COORDINATE_SYSTEM.LNGLAT;\n }\n\n let preproject: ((xy: number[]) => number[]) | undefined;\n\n if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT) {\n if (_full3d) {\n preproject = viewport.projectPosition.bind(viewport);\n } else {\n preproject = viewport.projectFlat.bind(viewport);\n }\n }\n\n this.setState({\n numInstances: 0,\n polygonTesselator: new PolygonTesselator({\n // Lnglat coordinates are usually projected non-linearly, which affects tesselation results\n // Provide a preproject function if the coordinates are in lnglat\n preproject,\n fp64: this.use64bitPositions(),\n IndexType: !gl || hasFeatures(gl, FEATURES.ELEMENT_INDEX_UINT32) ? Uint32Array : Uint16Array\n })\n });\n\n const attributeManager = this.getAttributeManager()!;\n const noAlloc = true;\n\n attributeManager.remove(['instancePickingColors']);\n\n /* eslint-disable max-len */\n attributeManager.add({\n indices: {\n size: 1,\n isIndexed: true,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculateIndices,\n noAlloc\n },\n positions: {\n size: 3,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getPolygon',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculatePositions,\n noAlloc,\n shaderAttributes: {\n positions: {\n vertexOffset: 0,\n divisor: 0\n },\n instancePositions: {\n vertexOffset: 0,\n divisor: 1\n },\n nextPositions: {\n vertexOffset: 1,\n divisor: 1\n }\n }\n },\n vertexValid: {\n size: 1,\n divisor: 1,\n type: GL.UNSIGNED_BYTE,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculateVertexValid,\n noAlloc\n },\n elevations: {\n size: 1,\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getElevation',\n shaderAttributes: {\n elevations: {\n divisor: 0\n },\n instanceElevations: {\n divisor: 1\n }\n }\n },\n fillColors: {\n size: this.props.colorFormat.length,\n type: GL.UNSIGNED_BYTE,\n normalized: true,\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getFillColor',\n defaultValue: DEFAULT_COLOR,\n shaderAttributes: {\n fillColors: {\n divisor: 0\n },\n instanceFillColors: {\n divisor: 1\n }\n }\n },\n lineColors: {\n size: this.props.colorFormat.length,\n type: GL.UNSIGNED_BYTE,\n normalized: true,\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getLineColor',\n defaultValue: DEFAULT_COLOR,\n shaderAttributes: {\n lineColors: {\n divisor: 0\n },\n instanceLineColors: {\n divisor: 1\n }\n }\n },\n pickingColors: {\n size: 3,\n type: GL.UNSIGNED_BYTE,\n accessor: (object, {index, target: value}) =>\n this.encodePickingColor(object && object.__source ? object.__source.index : index, value),\n shaderAttributes: {\n pickingColors: {\n divisor: 0\n },\n instancePickingColors: {\n divisor: 1\n }\n }\n }\n });\n /* eslint-enable max-len */\n }\n\n getPickingInfo(params: GetPickingInfoParams): PickingInfo {\n const info = super.getPickingInfo(params);\n const {index} = info;\n const {data} = this.props;\n\n // Check if data comes from a composite layer, wrapped with getSubLayerRow\n if (data[0] && data[0].__source) {\n // index decoded from picking color refers to the source index\n info.object = (data as any[]).find(d => d.__source.index === index);\n }\n return info;\n }\n\n disablePickingIndex(objectIndex: number) {\n const {data} = this.props;\n\n // Check if data comes from a composite layer, wrapped with getSubLayerRow\n if (data[0] && data[0].__source) {\n // index decoded from picking color refers to the source index\n for (let i = 0; i < (data as any[]).length; i++) {\n if (data[i].__source.index === objectIndex) {\n this._disablePickingIndex(i);\n }\n }\n } else {\n super.disablePickingIndex(objectIndex);\n }\n }\n\n draw({uniforms}) {\n const {extruded, filled, wireframe, elevationScale} = this.props;\n const {topModel, sideModel, polygonTesselator} = this.state;\n\n const renderUniforms = {\n ...uniforms,\n extruded: Boolean(extruded),\n elevationScale\n };\n\n // Note: the order is important\n if (sideModel) {\n sideModel.setInstanceCount(polygonTesselator.instanceCount - 1);\n sideModel.setUniforms(renderUniforms);\n if (wireframe) {\n sideModel.setDrawMode(GL.LINE_STRIP);\n sideModel.setUniforms({isWireframe: true}).draw();\n }\n if (filled) {\n sideModel.setDrawMode(GL.TRIANGLE_FAN);\n sideModel.setUniforms({isWireframe: false}).draw();\n }\n }\n\n if (topModel) {\n topModel.setVertexCount(polygonTesselator.vertexCount);\n topModel.setUniforms(renderUniforms).draw();\n }\n }\n\n updateState(updateParams: UpdateParameters) {\n super.updateState(updateParams);\n\n this.updateGeometry(updateParams);\n\n const {props, oldProps, changeFlags} = updateParams;\n const attributeManager = this.getAttributeManager();\n\n const regenerateModels =\n changeFlags.extensionsChanged ||\n props.filled !== oldProps.filled ||\n props.extruded !== oldProps.extruded;\n\n if (regenerateModels) {\n this.state.models?.forEach(model => model.delete());\n\n this.setState(this._getModels(this.context.gl));\n attributeManager!.invalidateAll();\n }\n }\n\n protected updateGeometry({props, oldProps, changeFlags}: UpdateParameters) {\n const geometryConfigChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPolygon));\n\n // When the geometry config or the data is changed,\n // tessellator needs to be invoked\n if (geometryConfigChanged) {\n const {polygonTesselator} = this.state;\n const buffers = (props.data as any).attributes || {};\n polygonTesselator.updateGeometry({\n data: props.data,\n normalize: props._normalize,\n geometryBuffer: buffers.getPolygon,\n buffers,\n getGeometry: props.getPolygon,\n positionFormat: props.positionFormat,\n wrapLongitude: props.wrapLongitude,\n // TODO - move the flag out of the viewport\n resolution: this.context.viewport.resolution,\n fp64: this.use64bitPositions(),\n dataChanged: changeFlags.dataChanged,\n full3d: props._full3d\n });\n\n this.setState({\n numInstances: polygonTesselator.instanceCount,\n startIndices: polygonTesselator.vertexStarts\n });\n\n if (!changeFlags.dataChanged) {\n // Base `layer.updateState` only invalidates all attributes on data change\n // Cover the rest of the scenarios here\n this.getAttributeManager()!.invalidateAll();\n }\n }\n }\n\n protected _getModels(gl: WebGLRenderingContext): Model {\n const {id, filled, extruded} = this.props;\n\n let topModel;\n let sideModel;\n\n if (filled) {\n const shaders = this.getShaders('top');\n shaders.defines.NON_INSTANCED_MODEL = 1;\n\n topModel = new Model(gl, {\n ...shaders,\n id: `${id}-top`,\n drawMode: GL.TRIANGLES,\n attributes: {\n vertexPositions: new Float32Array([0, 1])\n },\n uniforms: {\n isWireframe: false,\n isSideVertex: false\n },\n vertexCount: 0,\n isIndexed: true\n });\n }\n if (extruded) {\n sideModel = new Model(gl, {\n ...this.getShaders('side'),\n id: `${id}-side`,\n geometry: new Geometry({\n drawMode: GL.LINES,\n vertexCount: 4,\n attributes: {\n // top right - top left - bootom left - bottom right\n vertexPositions: {\n size: 2,\n value: new Float32Array([1, 0, 0, 0, 0, 1, 1, 1])\n }\n }\n }),\n instanceCount: 0,\n isInstanced: 1\n });\n\n sideModel.userData.excludeAttributes = {indices: true};\n }\n\n return {\n models: [sideModel, topModel].filter(Boolean),\n topModel,\n sideModel\n };\n }\n\n protected calculateIndices(attribute) {\n const {polygonTesselator} = this.state;\n attribute.startIndices = polygonTesselator.indexStarts;\n attribute.value = polygonTesselator.get('indices');\n }\n\n protected calculatePositions(attribute) {\n const {polygonTesselator} = this.state;\n attribute.startIndices = polygonTesselator.vertexStarts;\n attribute.value = polygonTesselator.get('positions');\n }\n\n protected calculateVertexValid(attribute) {\n attribute.value = this.state.polygonTesselator.get('vertexValid');\n }\n}\n","import { lights } from '../lights/lights';\nimport lightingShader from './phong-lighting.glsl';\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getMaterialUniforms(material) {\n const {\n ambient = 0.35,\n diffuse = 0.6,\n shininess = 32,\n specularColor = [30, 30, 30]\n } = material;\n return {\n lighting_uAmbient: ambient,\n lighting_uDiffuse: diffuse,\n lighting_uShininess: shininess,\n lighting_uSpecularColor: specularColor.map(x => x / 255)\n };\n}\n\nfunction getUniforms() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_MODULE_OPTIONS;\n\n if (!('material' in opts)) {\n return {};\n }\n\n const {\n material\n } = opts;\n\n if (!material) {\n return {\n lighting_uEnabled: false\n };\n }\n\n return getMaterialUniforms(material);\n}\n\nexport const gouraudLighting = {\n name: 'gouraud-lighting',\n dependencies: [lights],\n vs: lightingShader,\n defines: {\n LIGHTING_VERTEX: 1\n },\n getUniforms\n};\nexport const phongLighting = {\n name: 'phong-lighting',\n dependencies: [lights],\n fs: lightingShader,\n defines: {\n LIGHTING_FRAGMENT: 1\n },\n getUniforms\n};\n//# sourceMappingURL=phong-lighting.js.map","/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nimport {lights} from '../lights/lights';\nimport lightingShader from './phong-lighting.glsl';\n\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getMaterialUniforms(material) {\n const {ambient = 0.35, diffuse = 0.6, shininess = 32, specularColor = [30, 30, 30]} = material;\n\n return {\n lighting_uAmbient: ambient,\n lighting_uDiffuse: diffuse,\n lighting_uShininess: shininess,\n lighting_uSpecularColor: specularColor.map(x => x / 255)\n };\n}\n\nfunction getUniforms(opts = INITIAL_MODULE_OPTIONS) {\n if (!('material' in opts)) {\n return {};\n }\n\n const {material} = opts;\n\n if (!material) {\n return {lighting_uEnabled: false};\n }\n\n return getMaterialUniforms(material);\n}\n\n/** @type {ShaderModule} */\nexport const gouraudLighting = {\n name: 'gouraud-lighting',\n dependencies: [lights],\n vs: lightingShader,\n defines: {\n LIGHTING_VERTEX: 1\n },\n getUniforms\n};\n\n/** @type {ShaderModule} */\nexport const phongLighting = {\n name: 'phong-lighting',\n dependencies: [lights],\n fs: lightingShader,\n defines: {\n LIGHTING_FRAGMENT: 1\n },\n getUniforms\n};\n","import lightingShader from './lights.glsl';\nconst INITIAL_MODULE_OPTIONS = {\n lightSources: {}\n};\n\nfunction convertColor() {\n let {\n color = [0, 0, 0],\n intensity = 1.0\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return color.map(component => component * intensity / 255.0);\n}\n\nfunction getLightSourceUniforms(_ref) {\n let {\n ambientLight,\n pointLights = [],\n directionalLights = []\n } = _ref;\n const lightSourceUniforms = {};\n\n if (ambientLight) {\n lightSourceUniforms['lighting_uAmbientLight.color'] = convertColor(ambientLight);\n } else {\n lightSourceUniforms['lighting_uAmbientLight.color'] = [0, 0, 0];\n }\n\n pointLights.forEach((pointLight, index) => {\n lightSourceUniforms[\"lighting_uPointLight[\".concat(index, \"].color\")] = convertColor(pointLight);\n lightSourceUniforms[\"lighting_uPointLight[\".concat(index, \"].position\")] = pointLight.position;\n lightSourceUniforms[\"lighting_uPointLight[\".concat(index, \"].attenuation\")] = pointLight.attenuation || [1, 0, 0];\n });\n lightSourceUniforms.lighting_uPointLightCount = pointLights.length;\n directionalLights.forEach((directionalLight, index) => {\n lightSourceUniforms[\"lighting_uDirectionalLight[\".concat(index, \"].color\")] = convertColor(directionalLight);\n lightSourceUniforms[\"lighting_uDirectionalLight[\".concat(index, \"].direction\")] = directionalLight.direction;\n });\n lightSourceUniforms.lighting_uDirectionalLightCount = directionalLights.length;\n return lightSourceUniforms;\n}\n\nfunction getUniforms() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_MODULE_OPTIONS;\n\n if ('lightSources' in opts) {\n const {\n ambientLight,\n pointLights,\n directionalLights\n } = opts.lightSources || {};\n const hasLights = ambientLight || pointLights && pointLights.length > 0 || directionalLights && directionalLights.length > 0;\n\n if (!hasLights) {\n return {\n lighting_uEnabled: false\n };\n }\n\n return Object.assign({}, getLightSourceUniforms({\n ambientLight,\n pointLights,\n directionalLights\n }), {\n lighting_uEnabled: true\n });\n }\n\n if ('lights' in opts) {\n const lightSources = {\n pointLights: [],\n directionalLights: []\n };\n\n for (const light of opts.lights || []) {\n switch (light.type) {\n case 'ambient':\n lightSources.ambientLight = light;\n break;\n\n case 'directional':\n lightSources.directionalLights.push(light);\n break;\n\n case 'point':\n lightSources.pointLights.push(light);\n break;\n\n default:\n }\n }\n\n return getUniforms({\n lightSources\n });\n }\n\n return {};\n}\n\nexport const lights = {\n name: 'lights',\n vs: lightingShader,\n fs: lightingShader,\n getUniforms,\n defines: {\n MAX_LIGHTS: 3\n }\n};\n//# sourceMappingURL=lights.js.map","/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nimport lightingShader from './lights.glsl';\n\nconst INITIAL_MODULE_OPTIONS = {\n lightSources: {}\n};\n\n// Take color 0-255 and intensity as input and output 0.0-1.0 range\nfunction convertColor({color = [0, 0, 0], intensity = 1.0} = {}) {\n return color.map(component => (component * intensity) / 255.0);\n}\n\nfunction getLightSourceUniforms({ambientLight, pointLights = [], directionalLights = []}) {\n const lightSourceUniforms = {};\n\n if (ambientLight) {\n lightSourceUniforms['lighting_uAmbientLight.color'] = convertColor(ambientLight);\n } else {\n lightSourceUniforms['lighting_uAmbientLight.color'] = [0, 0, 0];\n }\n\n pointLights.forEach((pointLight, index) => {\n lightSourceUniforms[`lighting_uPointLight[${index}].color`] = convertColor(pointLight);\n lightSourceUniforms[`lighting_uPointLight[${index}].position`] = pointLight.position;\n lightSourceUniforms[`lighting_uPointLight[${index}].attenuation`] = pointLight.attenuation || [\n 1,\n 0,\n 0\n ];\n });\n lightSourceUniforms.lighting_uPointLightCount = pointLights.length;\n\n directionalLights.forEach((directionalLight, index) => {\n lightSourceUniforms[`lighting_uDirectionalLight[${index}].color`] = convertColor(\n directionalLight\n );\n lightSourceUniforms[`lighting_uDirectionalLight[${index}].direction`] =\n directionalLight.direction;\n });\n lightSourceUniforms.lighting_uDirectionalLightCount = directionalLights.length;\n\n return lightSourceUniforms;\n}\n\n// eslint-disable-next-line complexity\nfunction getUniforms(opts = INITIAL_MODULE_OPTIONS) {\n // Specify lights separately\n if ('lightSources' in opts) {\n const {ambientLight, pointLights, directionalLights} = opts.lightSources || {};\n const hasLights =\n ambientLight ||\n (pointLights && pointLights.length > 0) ||\n (directionalLights && directionalLights.length > 0);\n\n if (!hasLights) {\n return {lighting_uEnabled: false};\n }\n\n return Object.assign(\n {},\n getLightSourceUniforms({ambientLight, pointLights, directionalLights}),\n {\n lighting_uEnabled: true\n }\n );\n }\n\n // Support for array of lights. Type of light is detected by type field\n if ('lights' in opts) {\n const lightSources = {pointLights: [], directionalLights: []};\n // @ts-ignore\n for (const light of opts.lights || []) {\n switch (light.type) {\n case 'ambient':\n // Note: Only uses last ambient light\n // TODO - add ambient light sources on CPU?\n lightSources.ambientLight = light;\n break;\n case 'directional':\n lightSources.directionalLights.push(light);\n break;\n case 'point':\n lightSources.pointLights.push(light);\n break;\n default:\n // eslint-disable-next-line\n // console.warn(light.type);\n }\n }\n\n // Call the `opts.lightSources`` version\n return getUniforms({lightSources});\n }\n\n return {};\n}\n\n/** @type {ShaderModule} */\nexport const lights = {\n name: 'lights',\n vs: lightingShader,\n fs: lightingShader,\n getUniforms,\n defines: {\n MAX_LIGHTS: 3\n }\n};\n","export default \"#if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))\\n\\nstruct AmbientLight {\\n vec3 color;\\n};\\n\\nstruct PointLight {\\n vec3 color;\\n vec3 position;\\n vec3 attenuation;\\n};\\n\\nstruct DirectionalLight {\\n vec3 color;\\n vec3 direction;\\n};\\n\\nuniform AmbientLight lighting_uAmbientLight;\\nuniform PointLight lighting_uPointLight[MAX_LIGHTS];\\nuniform DirectionalLight lighting_uDirectionalLight[MAX_LIGHTS];\\nuniform int lighting_uPointLightCount;\\nuniform int lighting_uDirectionalLightCount;\\n\\nuniform bool lighting_uEnabled;\\n\\nfloat getPointLightAttenuation(PointLight pointLight, float distance) {\\n return pointLight.attenuation.x\\n + pointLight.attenuation.y * distance\\n + pointLight.attenuation.z * distance * distance;\\n}\\n\\n#endif\\n\";\n//# sourceMappingURL=lights.glsl.js.map","export default `\\\n#if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))\n\nstruct AmbientLight {\n vec3 color;\n};\n\nstruct PointLight {\n vec3 color;\n vec3 position;\n\n // Constant-Linear-Exponential\n vec3 attenuation;\n};\n\nstruct DirectionalLight {\n vec3 color;\n vec3 direction;\n};\n\nuniform AmbientLight lighting_uAmbientLight;\nuniform PointLight lighting_uPointLight[MAX_LIGHTS];\nuniform DirectionalLight lighting_uDirectionalLight[MAX_LIGHTS];\nuniform int lighting_uPointLightCount;\nuniform int lighting_uDirectionalLightCount;\n\nuniform bool lighting_uEnabled;\n\nfloat getPointLightAttenuation(PointLight pointLight, float distance) {\n return pointLight.attenuation.x\n + pointLight.attenuation.y * distance\n + pointLight.attenuation.z * distance * distance;\n}\n\n#endif\n`;\n","export default \"\\nuniform float lighting_uAmbient;\\nuniform float lighting_uDiffuse;\\nuniform float lighting_uShininess;\\nuniform vec3 lighting_uSpecularColor;\\n\\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_direction, vec3 normal_worldspace, vec3 color) {\\n vec3 halfway_direction = normalize(light_direction + view_direction);\\n float lambertian = dot(light_direction, normal_worldspace);\\n float specular = 0.0;\\n if (lambertian > 0.0) {\\n float specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0);\\n specular = pow(specular_angle, lighting_uShininess);\\n }\\n lambertian = max(lambertian, 0.0);\\n return (lambertian * lighting_uDiffuse * surfaceColor + specular * lighting_uSpecularColor) * color;\\n}\\n\\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\\n vec3 lightColor = surfaceColor;\\n\\n if (lighting_uEnabled) {\\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\\n lightColor = lighting_uAmbient * surfaceColor * lighting_uAmbientLight.color;\\n\\n for (int i = 0; i < MAX_LIGHTS; i++) {\\n if (i >= lighting_uPointLightCount) {\\n break;\\n }\\n PointLight pointLight = lighting_uPointLight[i];\\n vec3 light_position_worldspace = pointLight.position;\\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\\n }\\n\\n for (int i = 0; i < MAX_LIGHTS; i++) {\\n if (i >= lighting_uDirectionalLightCount) {\\n break;\\n }\\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\\n }\\n }\\n return lightColor;\\n}\\n\\nvec3 lighting_getSpecularLightColor(vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\\n vec3 lightColor = vec3(0, 0, 0);\\n vec3 surfaceColor = vec3(0, 0, 0);\\n\\n if (lighting_uEnabled) {\\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\\n\\n for (int i = 0; i < MAX_LIGHTS; i++) {\\n if (i >= lighting_uPointLightCount) {\\n break;\\n }\\n PointLight pointLight = lighting_uPointLight[i];\\n vec3 light_position_worldspace = pointLight.position;\\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\\n }\\n\\n for (int i = 0; i < MAX_LIGHTS; i++) {\\n if (i >= lighting_uDirectionalLightCount) {\\n break;\\n }\\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\\n }\\n }\\n return lightColor;\\n}\\n\";\n//# sourceMappingURL=phong-lighting.glsl.js.map","export default `\\\n\nuniform float lighting_uAmbient;\nuniform float lighting_uDiffuse;\nuniform float lighting_uShininess;\nuniform vec3 lighting_uSpecularColor;\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_direction, vec3 normal_worldspace, vec3 color) {\n vec3 halfway_direction = normalize(light_direction + view_direction);\n float lambertian = dot(light_direction, normal_worldspace);\n float specular = 0.0;\n if (lambertian > 0.0) {\n float specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0);\n specular = pow(specular_angle, lighting_uShininess);\n }\n lambertian = max(lambertian, 0.0);\n return (lambertian * lighting_uDiffuse * surfaceColor + specular * lighting_uSpecularColor) * color;\n}\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = surfaceColor;\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n lightColor = lighting_uAmbient * surfaceColor * lighting_uAmbientLight.color;\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n\nvec3 lighting_getSpecularLightColor(vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = vec3(0, 0, 0);\n vec3 surfaceColor = vec3(0, 0, 0);\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n`;\n","import { picking } from '@luma.gl/core';\nexport default {\n inject: {\n 'vs:DECKGL_FILTER_GL_POSITION': \"\\n // for picking depth values\\n picking_setPickingAttribute(position.z / position.w);\\n \",\n 'vs:DECKGL_FILTER_COLOR': \"\\n picking_setPickingColor(geometry.pickingColor);\\n \",\n 'fs:#decl': \"\\nuniform bool picking_uAttribute;\\n \",\n 'fs:DECKGL_FILTER_COLOR': {\n order: 99,\n injection: \"\\n // use highlight color if this fragment belongs to the selected object.\\n color = picking_filterHighlightColor(color);\\n\\n // use picking color if rendering to picking FBO.\\n color = picking_filterPickingColor(color);\\n \"\n }\n },\n ...picking\n};\n//# sourceMappingURL=picking.js.map","import {picking} from '@luma.gl/core';\nimport type {ShaderModule} from '../../types/types';\n\ntype PickingModuleSettings = {\n /** Set to a picking color to visually highlight that item */\n pickingSelectedColor?: [number, number, number] | null;\n /** Color of the highlight */\n pickingHighlightColor?: [number, number, number, number];\n /** Set to true when rendering to off-screen \"picking\" buffer */\n pickingActive?: boolean;\n /** Set to true when picking an attribute value instead of object index */\n pickingAttribute?: boolean;\n};\n\nexport default {\n inject: {\n 'vs:DECKGL_FILTER_GL_POSITION': `\n // for picking depth values\n picking_setPickingAttribute(position.z / position.w);\n `,\n 'vs:DECKGL_FILTER_COLOR': `\n picking_setPickingColor(geometry.pickingColor);\n `,\n // TODO - this should be declared in the luma module\n 'fs:#decl': `\nuniform bool picking_uAttribute;\n `,\n 'fs:DECKGL_FILTER_COLOR': {\n order: 99,\n injection: `\n // use highlight color if this fragment belongs to the selected object.\n color = picking_filterHighlightColor(color);\n\n // use picking color if rendering to picking FBO.\n color = picking_filterPickingColor(color);\n `\n }\n },\n ...picking\n} as ShaderModule;\n","const DEFAULT_HIGHLIGHT_COLOR = new Uint8Array([0, 255, 255, 255]);\nconst DEFAULT_MODULE_OPTIONS = {\n pickingSelectedColor: null,\n pickingHighlightColor: DEFAULT_HIGHLIGHT_COLOR,\n pickingActive: false,\n pickingAttribute: false\n};\n\nfunction getUniforms() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_MODULE_OPTIONS;\n const uniforms = {};\n\n if (opts.pickingSelectedColor !== undefined) {\n if (!opts.pickingSelectedColor) {\n uniforms.picking_uSelectedColorValid = 0;\n } else {\n const selectedColor = opts.pickingSelectedColor.slice(0, 3);\n uniforms.picking_uSelectedColorValid = 1;\n uniforms.picking_uSelectedColor = selectedColor;\n }\n }\n\n if (opts.pickingHighlightColor) {\n const color = Array.from(opts.pickingHighlightColor, x => x / 255);\n\n if (!Number.isFinite(color[3])) {\n color[3] = 1;\n }\n\n uniforms.picking_uHighlightColor = color;\n }\n\n if (opts.pickingActive !== undefined) {\n uniforms.picking_uActive = Boolean(opts.pickingActive);\n uniforms.picking_uAttribute = Boolean(opts.pickingAttribute);\n }\n\n return uniforms;\n}\n\nconst vs = \"uniform bool picking_uActive;\\nuniform bool picking_uAttribute;\\nuniform vec3 picking_uSelectedColor;\\nuniform bool picking_uSelectedColorValid;\\n\\nout vec4 picking_vRGBcolor_Avalid;\\n\\nconst float COLOR_SCALE = 1. / 255.;\\n\\nbool picking_isColorValid(vec3 color) {\\n return dot(color, vec3(1.0)) > 0.001;\\n}\\n\\nbool isVertexPicked(vec3 vertexColor) {\\n return\\n picking_uSelectedColorValid &&\\n !picking_isColorValid(abs(vertexColor - picking_uSelectedColor));\\n}\\n\\nvoid picking_setPickingColor(vec3 pickingColor) {\\n if (picking_uActive) {\\n picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));\\n\\n if (!picking_uAttribute) {\\n picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE;\\n }\\n } else {\\n picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor));\\n }\\n}\\n\\nvoid picking_setPickingAttribute(float value) {\\n if (picking_uAttribute) {\\n picking_vRGBcolor_Avalid.r = value;\\n }\\n}\\nvoid picking_setPickingAttribute(vec2 value) {\\n if (picking_uAttribute) {\\n picking_vRGBcolor_Avalid.rg = value;\\n }\\n}\\nvoid picking_setPickingAttribute(vec3 value) {\\n if (picking_uAttribute) {\\n picking_vRGBcolor_Avalid.rgb = value;\\n }\\n}\\n\";\nconst fs = \"uniform bool picking_uActive;\\nuniform vec3 picking_uSelectedColor;\\nuniform vec4 picking_uHighlightColor;\\n\\nin vec4 picking_vRGBcolor_Avalid;\\nvec4 picking_filterHighlightColor(vec4 color) {\\n if (picking_uActive) {\\n return color;\\n }\\n bool selected = bool(picking_vRGBcolor_Avalid.a);\\n\\n if (selected) {\\n float highLightAlpha = picking_uHighlightColor.a;\\n float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);\\n float highLightRatio = highLightAlpha / blendedAlpha;\\n\\n vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio);\\n return vec4(blendedRGB, blendedAlpha);\\n } else {\\n return color;\\n }\\n}\\nvec4 picking_filterPickingColor(vec4 color) {\\n if (picking_uActive) {\\n if (picking_vRGBcolor_Avalid.a == 0.0) {\\n discard;\\n }\\n return picking_vRGBcolor_Avalid;\\n }\\n return color;\\n}\\nvec4 picking_filterColor(vec4 color) {\\n vec4 highightColor = picking_filterHighlightColor(color);\\n return picking_filterPickingColor(highightColor);\\n}\\n\\n\";\nexport const picking = {\n name: 'picking',\n vs,\n fs,\n getUniforms\n};\n//# sourceMappingURL=picking.js.map","/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst DEFAULT_HIGHLIGHT_COLOR = new Uint8Array([0, 255, 255, 255]);\n\nconst DEFAULT_MODULE_OPTIONS = {\n pickingSelectedColor: null, // Set to a picking color to visually highlight that item\n pickingHighlightColor: DEFAULT_HIGHLIGHT_COLOR, // Color of visual highlight of \"selected\" item\n pickingActive: false, // Set to true when rendering to off-screen \"picking\" buffer\n pickingAttribute: false // Set to true when picking an attribute value instead of object index\n};\n\n/* eslint-disable camelcase */\nfunction getUniforms(opts = DEFAULT_MODULE_OPTIONS) {\n const uniforms = {};\n if (opts.pickingSelectedColor !== undefined) {\n if (!opts.pickingSelectedColor) {\n uniforms.picking_uSelectedColorValid = 0;\n } else {\n const selectedColor = opts.pickingSelectedColor.slice(0, 3);\n uniforms.picking_uSelectedColorValid = 1;\n uniforms.picking_uSelectedColor = selectedColor;\n }\n }\n if (opts.pickingHighlightColor) {\n const color = Array.from(opts.pickingHighlightColor, x => x / 255);\n if (!Number.isFinite(color[3])) {\n color[3] = 1;\n }\n uniforms.picking_uHighlightColor = color;\n }\n if (opts.pickingActive !== undefined) {\n uniforms.picking_uActive = Boolean(opts.pickingActive);\n uniforms.picking_uAttribute = Boolean(opts.pickingAttribute);\n }\n return uniforms;\n}\n\nconst vs = `\\\nuniform bool picking_uActive;\nuniform bool picking_uAttribute;\nuniform vec3 picking_uSelectedColor;\nuniform bool picking_uSelectedColorValid;\n\nout vec4 picking_vRGBcolor_Avalid;\n\nconst float COLOR_SCALE = 1. / 255.;\n\nbool picking_isColorValid(vec3 color) {\n return dot(color, vec3(1.0)) > 0.001;\n}\n\nbool isVertexPicked(vec3 vertexColor) {\n return\n picking_uSelectedColorValid &&\n !picking_isColorValid(abs(vertexColor - picking_uSelectedColor));\n}\n\nvoid picking_setPickingColor(vec3 pickingColor) {\n if (picking_uActive) {\n // Use alpha as the validity flag. If pickingColor is [0, 0, 0] fragment is non-pickable\n picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));\n\n if (!picking_uAttribute) {\n // Stores the picking color so that the fragment shader can render it during picking\n picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE;\n }\n } else {\n // Do the comparison with selected item color in vertex shader as it should mean fewer compares\n picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor));\n }\n}\n\nvoid picking_setPickingAttribute(float value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.r = value;\n }\n}\nvoid picking_setPickingAttribute(vec2 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rg = value;\n }\n}\nvoid picking_setPickingAttribute(vec3 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rgb = value;\n }\n}\n`;\n\nconst fs = `\\\nuniform bool picking_uActive;\nuniform vec3 picking_uSelectedColor;\nuniform vec4 picking_uHighlightColor;\n\nin vec4 picking_vRGBcolor_Avalid;\n\n/*\n * Returns highlight color if this item is selected.\n */\nvec4 picking_filterHighlightColor(vec4 color) {\n if (picking_uActive) {\n return color;\n }\n bool selected = bool(picking_vRGBcolor_Avalid.a);\n\n if (selected) {\n float highLightAlpha = picking_uHighlightColor.a;\n float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);\n float highLightRatio = highLightAlpha / blendedAlpha;\n\n vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio);\n return vec4(blendedRGB, blendedAlpha);\n } else {\n return color;\n }\n}\n\n/*\n * Returns picking color if picking enabled else unmodified argument.\n */\nvec4 picking_filterPickingColor(vec4 color) {\n if (picking_uActive) {\n if (picking_vRGBcolor_Avalid.a == 0.0) {\n discard;\n }\n return picking_vRGBcolor_Avalid;\n }\n return color;\n}\n\n/*\n * Returns picking color if picking is enabled if not\n * highlight color if this item is selected, otherwise unmodified argument.\n */\nvec4 picking_filterColor(vec4 color) {\n vec4 highightColor = picking_filterHighlightColor(color);\n return picking_filterPickingColor(highightColor);\n}\n\n`;\n\n/** @type {ShaderModule} */\nexport const picking = {\n name: 'picking',\n vs,\n fs,\n getUniforms\n};\n","import project from '../project/project';\nconst vs = \"\\nvec4 project_position_to_clipspace(\\n vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition\\n) {\\n vec3 projectedPosition = project_position(position, position64Low);\\n mat3 rotation;\\n if (project_needs_rotation(projectedPosition, rotation)) {\\n // offset is specified as ENU\\n // when in globe projection, rotate offset so that the ground alighs with the surface of the globe\\n offset = rotation * offset;\\n }\\n commonPosition = vec4(projectedPosition + offset, 1.0);\\n return project_common_position_to_clipspace(commonPosition);\\n}\\n\\nvec4 project_position_to_clipspace(\\n vec3 position, vec3 position64Low, vec3 offset\\n) {\\n vec4 commonPosition;\\n return project_position_to_clipspace(position, position64Low, offset, commonPosition);\\n}\\n\";\nexport default {\n name: 'project32',\n dependencies: [project],\n vs\n};\n//# sourceMappingURL=project32.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport project from '../project/project';\nimport type {ShaderModule} from '../../types/types';\n\nconst vs = `\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition\n) {\n vec3 projectedPosition = project_position(position, position64Low);\n mat3 rotation;\n if (project_needs_rotation(projectedPosition, rotation)) {\n // offset is specified as ENU\n // when in globe projection, rotate offset so that the ground alighs with the surface of the globe\n offset = rotation * offset;\n }\n commonPosition = vec4(projectedPosition + offset, 1.0);\n return project_common_position_to_clipspace(commonPosition);\n}\n\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64Low, vec3 offset\n) {\n vec4 commonPosition;\n return project_position_to_clipspace(position, position64Low, offset, commonPosition);\n}\n`;\n\nexport default {\n name: 'project32',\n dependencies: [project],\n vs\n} as ShaderModule;\n","import { fp32 } from '@luma.gl/core';\nimport geometry from '../misc/geometry';\nimport projectShader from './project.glsl';\nimport { getUniformsFromViewport } from './viewport-uniforms';\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getUniforms(opts = INITIAL_MODULE_OPTIONS) {\n if ('viewport' in opts) {\n return getUniformsFromViewport(opts);\n }\n\n return {};\n}\n\nexport default {\n name: 'project',\n dependencies: [fp32, geometry],\n vs: projectShader,\n getUniforms\n};\n//# sourceMappingURL=project.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {fp32} from '@luma.gl/core';\nimport geometry from '../misc/geometry';\nimport projectShader from './project.glsl';\nimport {getUniformsFromViewport} from './viewport-uniforms';\n\nimport type {ProjectModuleSettings} from './viewport-uniforms';\nimport type {ShaderModule} from '../../types/types';\n\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getUniforms(opts: ProjectModuleSettings | {} = INITIAL_MODULE_OPTIONS) {\n if ('viewport' in opts) {\n return getUniformsFromViewport(opts);\n }\n return {};\n}\n\nexport default {\n name: 'project',\n dependencies: [fp32, geometry],\n vs: projectShader,\n getUniforms\n} as ShaderModule;\n","const fp32shader = \"#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\\nconst float TWO_PI = 6.2831854820251465;\\nconst float PI_2 = 1.5707963705062866;\\nconst float PI_16 = 0.1963495463132858;\\n\\nconst float SIN_TABLE_0 = 0.19509032368659973;\\nconst float SIN_TABLE_1 = 0.3826834261417389;\\nconst float SIN_TABLE_2 = 0.5555702447891235;\\nconst float SIN_TABLE_3 = 0.7071067690849304;\\n\\nconst float COS_TABLE_0 = 0.9807852506637573;\\nconst float COS_TABLE_1 = 0.9238795042037964;\\nconst float COS_TABLE_2 = 0.8314695954322815;\\nconst float COS_TABLE_3 = 0.7071067690849304;\\n\\nconst float INVERSE_FACTORIAL_3 = 1.666666716337204e-01;\\nconst float INVERSE_FACTORIAL_5 = 8.333333767950535e-03;\\nconst float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04;\\nconst float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06;\\n\\nfloat sin_taylor_fp32(float a) {\\n float r, s, t, x;\\n\\n if (a == 0.0) {\\n return 0.0;\\n }\\n\\n x = -a * a;\\n s = a;\\n r = a;\\n\\n r = r * x;\\n t = r * INVERSE_FACTORIAL_3;\\n s = s + t;\\n\\n r = r * x;\\n t = r * INVERSE_FACTORIAL_5;\\n s = s + t;\\n\\n r = r * x;\\n t = r * INVERSE_FACTORIAL_7;\\n s = s + t;\\n\\n r = r * x;\\n t = r * INVERSE_FACTORIAL_9;\\n s = s + t;\\n\\n return s;\\n}\\n\\nvoid sincos_taylor_fp32(float a, out float sin_t, out float cos_t) {\\n if (a == 0.0) {\\n sin_t = 0.0;\\n cos_t = 1.0;\\n }\\n sin_t = sin_taylor_fp32(a);\\n cos_t = sqrt(1.0 - sin_t * sin_t);\\n}\\n\\nfloat tan_taylor_fp32(float a) {\\n float sin_a;\\n float cos_a;\\n\\n if (a == 0.0) {\\n return 0.0;\\n }\\n float z = floor(a / TWO_PI);\\n float r = a - TWO_PI * z;\\n\\n float t;\\n float q = floor(r / PI_2 + 0.5);\\n int j = int(q);\\n\\n if (j < -2 || j > 2) {\\n return 1.0 / 0.0;\\n }\\n\\n t = r - PI_2 * q;\\n\\n q = floor(t / PI_16 + 0.5);\\n int k = int(q);\\n int abs_k = int(abs(float(k)));\\n\\n if (abs_k > 4) {\\n return 1.0 / 0.0;\\n } else {\\n t = t - PI_16 * q;\\n }\\n\\n float u = 0.0;\\n float v = 0.0;\\n\\n float sin_t, cos_t;\\n float s, c;\\n sincos_taylor_fp32(t, sin_t, cos_t);\\n\\n if (k == 0) {\\n s = sin_t;\\n c = cos_t;\\n } else {\\n if (abs(float(abs_k) - 1.0) < 0.5) {\\n u = COS_TABLE_0;\\n v = SIN_TABLE_0;\\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\\n u = COS_TABLE_1;\\n v = SIN_TABLE_1;\\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\\n u = COS_TABLE_2;\\n v = SIN_TABLE_2;\\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\\n u = COS_TABLE_3;\\n v = SIN_TABLE_3;\\n }\\n if (k > 0) {\\n s = u * sin_t + v * cos_t;\\n c = u * cos_t - v * sin_t;\\n } else {\\n s = u * sin_t - v * cos_t;\\n c = u * cos_t + v * sin_t;\\n }\\n }\\n\\n if (j == 0) {\\n sin_a = s;\\n cos_a = c;\\n } else if (j == 1) {\\n sin_a = c;\\n cos_a = -s;\\n } else if (j == -1) {\\n sin_a = -c;\\n cos_a = s;\\n } else {\\n sin_a = -s;\\n cos_a = -c;\\n }\\n return sin_a / cos_a;\\n}\\n#endif\\n\\nfloat tan_fp32(float a) {\\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\\n return tan_taylor_fp32(a);\\n#else\\n return tan(a);\\n#endif\\n}\\n\";\nexport const fp32 = {\n name: 'fp32',\n vs: fp32shader,\n fs: null\n};\n//# sourceMappingURL=fp32.js.map","/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst fp32shader = `\\\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n\n// All these functions are for substituting tan() function from Intel GPU only\nconst float TWO_PI = 6.2831854820251465;\nconst float PI_2 = 1.5707963705062866;\nconst float PI_16 = 0.1963495463132858;\n\nconst float SIN_TABLE_0 = 0.19509032368659973;\nconst float SIN_TABLE_1 = 0.3826834261417389;\nconst float SIN_TABLE_2 = 0.5555702447891235;\nconst float SIN_TABLE_3 = 0.7071067690849304;\n\nconst float COS_TABLE_0 = 0.9807852506637573;\nconst float COS_TABLE_1 = 0.9238795042037964;\nconst float COS_TABLE_2 = 0.8314695954322815;\nconst float COS_TABLE_3 = 0.7071067690849304;\n\nconst float INVERSE_FACTORIAL_3 = 1.666666716337204e-01; // 1/3!\nconst float INVERSE_FACTORIAL_5 = 8.333333767950535e-03; // 1/5!\nconst float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04; // 1/7!\nconst float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06; // 1/9!\n\nfloat sin_taylor_fp32(float a) {\n float r, s, t, x;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n x = -a * a;\n s = a;\n r = a;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_3;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_5;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_7;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_9;\n s = s + t;\n\n return s;\n}\n\nvoid sincos_taylor_fp32(float a, out float sin_t, out float cos_t) {\n if (a == 0.0) {\n sin_t = 0.0;\n cos_t = 1.0;\n }\n sin_t = sin_taylor_fp32(a);\n cos_t = sqrt(1.0 - sin_t * sin_t);\n}\n\nfloat tan_taylor_fp32(float a) {\n float sin_a;\n float cos_a;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n // 2pi range reduction\n float z = floor(a / TWO_PI);\n float r = a - TWO_PI * z;\n\n float t;\n float q = floor(r / PI_2 + 0.5);\n int j = int(q);\n\n if (j < -2 || j > 2) {\n return 1.0 / 0.0;\n }\n\n t = r - PI_2 * q;\n\n q = floor(t / PI_16 + 0.5);\n int k = int(q);\n int abs_k = int(abs(float(k)));\n\n if (abs_k > 4) {\n return 1.0 / 0.0;\n } else {\n t = t - PI_16 * q;\n }\n\n float u = 0.0;\n float v = 0.0;\n\n float sin_t, cos_t;\n float s, c;\n sincos_taylor_fp32(t, sin_t, cos_t);\n\n if (k == 0) {\n s = sin_t;\n c = cos_t;\n } else {\n if (abs(float(abs_k) - 1.0) < 0.5) {\n u = COS_TABLE_0;\n v = SIN_TABLE_0;\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\n u = COS_TABLE_1;\n v = SIN_TABLE_1;\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\n u = COS_TABLE_2;\n v = SIN_TABLE_2;\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\n u = COS_TABLE_3;\n v = SIN_TABLE_3;\n }\n if (k > 0) {\n s = u * sin_t + v * cos_t;\n c = u * cos_t - v * sin_t;\n } else {\n s = u * sin_t - v * cos_t;\n c = u * cos_t + v * sin_t;\n }\n }\n\n if (j == 0) {\n sin_a = s;\n cos_a = c;\n } else if (j == 1) {\n sin_a = c;\n cos_a = -s;\n } else if (j == -1) {\n sin_a = -c;\n cos_a = s;\n } else {\n sin_a = -s;\n cos_a = -c;\n }\n return sin_a / cos_a;\n}\n#endif\n\nfloat tan_fp32(float a) {\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n return tan_taylor_fp32(a);\n#else\n return tan(a);\n#endif\n}\n`;\n\nexport const fp32 = {\n name: 'fp32',\n vs: fp32shader,\n fs: null\n};\n","const defines = '#define SMOOTH_EDGE_RADIUS 0.5';\nconst vs = \"\\n\".concat(defines, \"\\n\\nstruct VertexGeometry {\\n vec4 position;\\n vec3 worldPosition;\\n vec3 worldPositionAlt;\\n vec3 normal;\\n vec2 uv;\\n vec3 pickingColor;\\n} geometry = VertexGeometry(\\n vec4(0.0, 0.0, 1.0, 0.0),\\n vec3(0.0),\\n vec3(0.0),\\n vec3(0.0),\\n vec2(0.0),\\n vec3(0.0)\\n);\\n\");\nconst fs = \"\\n\".concat(defines, \"\\n\\nstruct FragmentGeometry {\\n vec2 uv;\\n} geometry;\\n\\nfloat smoothedge(float edge, float x) {\\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\\n}\\n\");\nexport default {\n name: 'geometry',\n vs,\n fs\n};\n//# sourceMappingURL=geometry.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport type {ShaderModule} from '../../types/types';\n\nconst defines = '#define SMOOTH_EDGE_RADIUS 0.5';\nconst vs = `\n${defines}\n\nstruct VertexGeometry {\n vec4 position;\n vec3 worldPosition;\n vec3 worldPositionAlt;\n vec3 normal;\n vec2 uv;\n vec3 pickingColor;\n} geometry = VertexGeometry(\n vec4(0.0, 0.0, 1.0, 0.0),\n vec3(0.0),\n vec3(0.0),\n vec3(0.0),\n vec2(0.0),\n vec3(0.0)\n);\n`;\n\nconst fs = `\n${defines}\n\nstruct FragmentGeometry {\n vec2 uv;\n} geometry;\n\nfloat smoothedge(float edge, float x) {\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\n}\n`;\n\nexport default {name: 'geometry', vs, fs} as ShaderModule;\n","import { COORDINATE_SYSTEM, PROJECTION_MODE, UNIT } from '../../lib/constants';\nconst COORDINATE_SYSTEM_GLSL_CONSTANTS = Object.keys(COORDINATE_SYSTEM).map(key => \"const int COORDINATE_SYSTEM_\".concat(key, \" = \").concat(COORDINATE_SYSTEM[key], \";\")).join('');\nconst PROJECTION_MODE_GLSL_CONSTANTS = Object.keys(PROJECTION_MODE).map(key => \"const int PROJECTION_MODE_\".concat(key, \" = \").concat(PROJECTION_MODE[key], \";\")).join('');\nconst UNIT_GLSL_CONSTANTS = Object.keys(UNIT).map(key => \"const int UNIT_\".concat(key.toUpperCase(), \" = \").concat(UNIT[key], \";\")).join('');\nexport default \"\".concat(COORDINATE_SYSTEM_GLSL_CONSTANTS, \"\\n\").concat(PROJECTION_MODE_GLSL_CONSTANTS, \"\\n\").concat(UNIT_GLSL_CONSTANTS, \"\\n\\nuniform int project_uCoordinateSystem;\\nuniform int project_uProjectionMode;\\nuniform float project_uScale;\\nuniform bool project_uWrapLongitude;\\nuniform vec3 project_uCommonUnitsPerMeter;\\nuniform vec3 project_uCommonUnitsPerWorldUnit;\\nuniform vec3 project_uCommonUnitsPerWorldUnit2;\\nuniform vec4 project_uCenter;\\nuniform mat4 project_uModelMatrix;\\nuniform mat4 project_uViewProjectionMatrix;\\nuniform vec2 project_uViewportSize;\\nuniform float project_uDevicePixelRatio;\\nuniform float project_uFocalDistance;\\nuniform vec3 project_uCameraPosition;\\nuniform vec3 project_uCoordinateOrigin;\\nuniform vec3 project_uCommonOrigin;\\nuniform bool project_uPseudoMeters;\\n\\nconst float TILE_SIZE = 512.0;\\nconst float PI = 3.1415926536;\\nconst float WORLD_SCALE = TILE_SIZE / (PI * 2.0);\\nconst vec3 ZERO_64_LOW = vec3(0.0);\\nconst float EARTH_RADIUS = 6370972.0;\\nconst float GLOBE_RADIUS = 256.0;\\nfloat project_size_at_latitude(float lat) {\\n float y = clamp(lat, -89.9, 89.9);\\n return 1.0 / cos(radians(y));\\n}\\n\\nfloat project_size() {\\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR &&\\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT &&\\n project_uPseudoMeters == false) {\\n \\n if (geometry.position.w == 0.0) {\\n return project_size_at_latitude(geometry.worldPosition.y);\\n }\\n \\n float y = geometry.position.y / TILE_SIZE * 2.0 - 1.0;\\n float y2 = y * y;\\n float y4 = y2 * y2;\\n float y6 = y4 * y2;\\n return 1.0 + 4.9348 * y2 + 4.0587 * y4 + 1.5642 * y6;\\n }\\n return 1.0;\\n}\\n\\nfloat project_size_at_latitude(float meters, float lat) {\\n return meters * project_uCommonUnitsPerMeter.z * project_size_at_latitude(lat);\\n}\\nfloat project_size(float meters) {\\n return meters * project_uCommonUnitsPerMeter.z * project_size();\\n}\\n\\nvec2 project_size(vec2 meters) {\\n return meters * project_uCommonUnitsPerMeter.xy * project_size();\\n}\\n\\nvec3 project_size(vec3 meters) {\\n return meters * project_uCommonUnitsPerMeter * project_size();\\n}\\n\\nvec4 project_size(vec4 meters) {\\n return vec4(meters.xyz * project_uCommonUnitsPerMeter, meters.w);\\n}\\nmat3 project_get_orientation_matrix(vec3 up) {\\n vec3 uz = normalize(up);\\n vec3 ux = abs(uz.z) == 1.0 ? vec3(1.0, 0.0, 0.0) : normalize(vec3(uz.y, -uz.x, 0));\\n vec3 uy = cross(uz, ux);\\n return mat3(ux, uy, uz);\\n}\\n\\nbool project_needs_rotation(vec3 commonPosition, out mat3 transform) {\\n if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\\n transform = project_get_orientation_matrix(commonPosition);\\n return true;\\n }\\n return false;\\n}\\nvec3 project_normal(vec3 vector) {\\n vec4 normal_modelspace = project_uModelMatrix * vec4(vector, 0.0);\\n vec3 n = normalize(normal_modelspace.xyz * project_uCommonUnitsPerMeter);\\n mat3 rotation;\\n if (project_needs_rotation(geometry.position.xyz, rotation)) {\\n n = rotation * n;\\n }\\n return n;\\n}\\n\\nvec4 project_offset_(vec4 offset) {\\n float dy = offset.y;\\n vec3 commonUnitsPerWorldUnit = project_uCommonUnitsPerWorldUnit + project_uCommonUnitsPerWorldUnit2 * dy;\\n return vec4(offset.xyz * commonUnitsPerWorldUnit, offset.w);\\n}\\nvec2 project_mercator_(vec2 lnglat) {\\n float x = lnglat.x;\\n if (project_uWrapLongitude) {\\n x = mod(x + 180., 360.0) - 180.;\\n }\\n float y = clamp(lnglat.y, -89.9, 89.9);\\n return vec2(\\n radians(x) + PI,\\n PI + log(tan_fp32(PI * 0.25 + radians(y) * 0.5))\\n ) * WORLD_SCALE;\\n}\\n\\nvec3 project_globe_(vec3 lnglatz) {\\n float lambda = radians(lnglatz.x);\\n float phi = radians(lnglatz.y);\\n float cosPhi = cos(phi);\\n float D = (lnglatz.z / EARTH_RADIUS + 1.0) * GLOBE_RADIUS;\\n\\n return vec3(\\n sin(lambda) * cosPhi,\\n -cos(lambda) * cosPhi,\\n sin(phi)\\n ) * D;\\n}\\nvec4 project_position(vec4 position, vec3 position64Low) {\\n vec4 position_world = project_uModelMatrix * position;\\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR) {\\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\\n return vec4(\\n project_mercator_(position_world.xy),\\n project_size_at_latitude(position_world.z, position_world.y),\\n position_world.w\\n );\\n }\\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN) {\\n position_world.xyz += project_uCoordinateOrigin;\\n }\\n }\\n if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\\n return vec4(\\n project_globe_(position_world.xyz),\\n position_world.w\\n );\\n }\\n }\\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\\n if (abs(position_world.y - project_uCoordinateOrigin.y) > 0.25) {\\n return vec4(\\n project_mercator_(position_world.xy) - project_uCommonOrigin.xy,\\n project_size(position_world.z),\\n position_world.w\\n );\\n }\\n }\\n }\\n if (project_uProjectionMode == PROJECTION_MODE_IDENTITY ||\\n (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET &&\\n (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\\n project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN))) {\\n position_world.xyz -= project_uCoordinateOrigin;\\n }\\n return project_offset_(position_world + project_uModelMatrix * vec4(position64Low, 0.0));\\n}\\n\\nvec4 project_position(vec4 position) {\\n return project_position(position, ZERO_64_LOW);\\n}\\n\\nvec3 project_position(vec3 position, vec3 position64Low) {\\n vec4 projected_position = project_position(vec4(position, 1.0), position64Low);\\n return projected_position.xyz;\\n}\\n\\nvec3 project_position(vec3 position) {\\n vec4 projected_position = project_position(vec4(position, 1.0), ZERO_64_LOW);\\n return projected_position.xyz;\\n}\\n\\nvec2 project_position(vec2 position) {\\n vec4 projected_position = project_position(vec4(position, 0.0, 1.0), ZERO_64_LOW);\\n return projected_position.xy;\\n}\\n\\nvec4 project_common_position_to_clipspace(vec4 position, mat4 viewProjectionMatrix, vec4 center) {\\n return viewProjectionMatrix * position + center;\\n}\\nvec4 project_common_position_to_clipspace(vec4 position) {\\n return project_common_position_to_clipspace(position, project_uViewProjectionMatrix, project_uCenter);\\n}\\nvec2 project_pixel_size_to_clipspace(vec2 pixels) {\\n vec2 offset = pixels / project_uViewportSize * project_uDevicePixelRatio * 2.0;\\n return offset * project_uFocalDistance;\\n}\\n\\nfloat project_size_to_pixel(float meters) {\\n return project_size(meters) * project_uScale;\\n}\\nfloat project_size_to_pixel(float size, int unit) {\\n if (unit == UNIT_METERS) return project_size_to_pixel(size);\\n if (unit == UNIT_COMMON) return size * project_uScale;\\n return size;\\n}\\nfloat project_pixel_size(float pixels) {\\n return pixels / project_uScale;\\n}\\nvec2 project_pixel_size(vec2 pixels) {\\n return pixels / project_uScale;\\n}\\n\");\n//# sourceMappingURL=project.glsl.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {COORDINATE_SYSTEM, PROJECTION_MODE, UNIT} from '../../lib/constants';\n\n// We are generating these from the js code in constants.js\nconst COORDINATE_SYSTEM_GLSL_CONSTANTS = Object.keys(COORDINATE_SYSTEM)\n .map(key => `const int COORDINATE_SYSTEM_${key} = ${COORDINATE_SYSTEM[key]};`)\n .join('');\nconst PROJECTION_MODE_GLSL_CONSTANTS = Object.keys(PROJECTION_MODE)\n .map(key => `const int PROJECTION_MODE_${key} = ${PROJECTION_MODE[key]};`)\n .join('');\nconst UNIT_GLSL_CONSTANTS = Object.keys(UNIT)\n .map(key => `const int UNIT_${key.toUpperCase()} = ${UNIT[key]};`)\n .join('');\n\nexport default `\\\n${COORDINATE_SYSTEM_GLSL_CONSTANTS}\n${PROJECTION_MODE_GLSL_CONSTANTS}\n${UNIT_GLSL_CONSTANTS}\n\nuniform int project_uCoordinateSystem;\nuniform int project_uProjectionMode;\nuniform float project_uScale;\nuniform bool project_uWrapLongitude;\nuniform vec3 project_uCommonUnitsPerMeter;\nuniform vec3 project_uCommonUnitsPerWorldUnit;\nuniform vec3 project_uCommonUnitsPerWorldUnit2;\nuniform vec4 project_uCenter;\nuniform mat4 project_uModelMatrix;\nuniform mat4 project_uViewProjectionMatrix;\nuniform vec2 project_uViewportSize;\nuniform float project_uDevicePixelRatio;\nuniform float project_uFocalDistance;\nuniform vec3 project_uCameraPosition;\nuniform vec3 project_uCoordinateOrigin;\nuniform vec3 project_uCommonOrigin;\nuniform bool project_uPseudoMeters;\n\nconst float TILE_SIZE = 512.0;\nconst float PI = 3.1415926536;\nconst float WORLD_SCALE = TILE_SIZE / (PI * 2.0);\nconst vec3 ZERO_64_LOW = vec3(0.0);\nconst float EARTH_RADIUS = 6370972.0; // meters\nconst float GLOBE_RADIUS = 256.0;\n\n// returns an adjustment factor for uCommonUnitsPerMeter\nfloat project_size_at_latitude(float lat) {\n float y = clamp(lat, -89.9, 89.9);\n return 1.0 / cos(radians(y));\n}\n\nfloat project_size() {\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR &&\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT &&\n project_uPseudoMeters == false) {\n\n // uCommonUnitsPerMeter in low-zoom Web Mercator is non-linear\n // Adjust by 1 / cos(latitude)\n // If geometry.position (vertex in common space) is populated, use it\n // Otherwise use geometry.worldPosition (anchor in world space)\n \n if (geometry.position.w == 0.0) {\n return project_size_at_latitude(geometry.worldPosition.y);\n }\n\n // latitude from common y: 2.0 * (atan(exp(y / TILE_SIZE * 2.0 * PI - PI)) - PI / 4.0)\n // Taylor series of 1 / cos(latitude)\n // Max error < 0.003\n \n float y = geometry.position.y / TILE_SIZE * 2.0 - 1.0;\n float y2 = y * y;\n float y4 = y2 * y2;\n float y6 = y4 * y2;\n return 1.0 + 4.9348 * y2 + 4.0587 * y4 + 1.5642 * y6;\n }\n return 1.0;\n}\n\nfloat project_size_at_latitude(float meters, float lat) {\n return meters * project_uCommonUnitsPerMeter.z * project_size_at_latitude(lat);\n}\n\n//\n// Scaling offsets - scales meters to \"world distance\"\n// Note the scalar version of project_size is for scaling the z component only\n//\nfloat project_size(float meters) {\n return meters * project_uCommonUnitsPerMeter.z * project_size();\n}\n\nvec2 project_size(vec2 meters) {\n return meters * project_uCommonUnitsPerMeter.xy * project_size();\n}\n\nvec3 project_size(vec3 meters) {\n return meters * project_uCommonUnitsPerMeter * project_size();\n}\n\nvec4 project_size(vec4 meters) {\n return vec4(meters.xyz * project_uCommonUnitsPerMeter, meters.w);\n}\n\n// Get rotation matrix that aligns the z axis with the given up vector\n// Find 3 unit vectors ux, uy, uz that are perpendicular to each other and uz == up\nmat3 project_get_orientation_matrix(vec3 up) {\n vec3 uz = normalize(up);\n // Tangent on XY plane\n vec3 ux = abs(uz.z) == 1.0 ? vec3(1.0, 0.0, 0.0) : normalize(vec3(uz.y, -uz.x, 0));\n vec3 uy = cross(uz, ux);\n return mat3(ux, uy, uz);\n}\n\nbool project_needs_rotation(vec3 commonPosition, out mat3 transform) {\n if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\n transform = project_get_orientation_matrix(commonPosition);\n return true;\n }\n return false;\n}\n\n//\n// Projecting normal - transform deltas from current coordinate system to\n// normals in the worldspace\n//\nvec3 project_normal(vec3 vector) {\n // Apply model matrix\n vec4 normal_modelspace = project_uModelMatrix * vec4(vector, 0.0);\n vec3 n = normalize(normal_modelspace.xyz * project_uCommonUnitsPerMeter);\n mat3 rotation;\n if (project_needs_rotation(geometry.position.xyz, rotation)) {\n n = rotation * n;\n }\n return n;\n}\n\nvec4 project_offset_(vec4 offset) {\n float dy = offset.y;\n vec3 commonUnitsPerWorldUnit = project_uCommonUnitsPerWorldUnit + project_uCommonUnitsPerWorldUnit2 * dy;\n return vec4(offset.xyz * commonUnitsPerWorldUnit, offset.w);\n}\n\n//\n// Projecting positions - non-linear projection: lnglats => unit tile [0-1, 0-1]\n//\nvec2 project_mercator_(vec2 lnglat) {\n float x = lnglat.x;\n if (project_uWrapLongitude) {\n x = mod(x + 180., 360.0) - 180.;\n }\n float y = clamp(lnglat.y, -89.9, 89.9);\n return vec2(\n radians(x) + PI,\n PI + log(tan_fp32(PI * 0.25 + radians(y) * 0.5))\n ) * WORLD_SCALE;\n}\n\nvec3 project_globe_(vec3 lnglatz) {\n float lambda = radians(lnglatz.x);\n float phi = radians(lnglatz.y);\n float cosPhi = cos(phi);\n float D = (lnglatz.z / EARTH_RADIUS + 1.0) * GLOBE_RADIUS;\n\n return vec3(\n sin(lambda) * cosPhi,\n -cos(lambda) * cosPhi,\n sin(phi)\n ) * D;\n}\n\n//\n// Projects positions (defined by project_uCoordinateSystem) to common space (defined by project_uProjectionMode)\n//\nvec4 project_position(vec4 position, vec3 position64Low) {\n vec4 position_world = project_uModelMatrix * position;\n\n // Work around for a Mac+NVIDIA bug https://github.com/visgl/deck.gl/issues/4145\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n return vec4(\n project_mercator_(position_world.xy),\n project_size_at_latitude(position_world.z, position_world.y),\n position_world.w\n );\n }\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN) {\n position_world.xyz += project_uCoordinateOrigin;\n }\n }\n if (project_uProjectionMode == PROJECTION_MODE_GLOBE) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n return vec4(\n project_globe_(position_world.xyz),\n position_world.w\n );\n }\n }\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n if (abs(position_world.y - project_uCoordinateOrigin.y) > 0.25) {\n // Too far from the projection center for offset mode to be accurate\n // Only use high parts\n return vec4(\n project_mercator_(position_world.xy) - project_uCommonOrigin.xy,\n project_size(position_world.z),\n position_world.w\n );\n }\n }\n }\n if (project_uProjectionMode == PROJECTION_MODE_IDENTITY ||\n (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET &&\n (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\n project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN))) {\n // Subtract high part of 64 bit value. Convert remainder to float32, preserving precision.\n position_world.xyz -= project_uCoordinateOrigin;\n }\n\n // Translation is already added to the high parts\n return project_offset_(position_world + project_uModelMatrix * vec4(position64Low, 0.0));\n}\n\nvec4 project_position(vec4 position) {\n return project_position(position, ZERO_64_LOW);\n}\n\nvec3 project_position(vec3 position, vec3 position64Low) {\n vec4 projected_position = project_position(vec4(position, 1.0), position64Low);\n return projected_position.xyz;\n}\n\nvec3 project_position(vec3 position) {\n vec4 projected_position = project_position(vec4(position, 1.0), ZERO_64_LOW);\n return projected_position.xyz;\n}\n\nvec2 project_position(vec2 position) {\n vec4 projected_position = project_position(vec4(position, 0.0, 1.0), ZERO_64_LOW);\n return projected_position.xy;\n}\n\nvec4 project_common_position_to_clipspace(vec4 position, mat4 viewProjectionMatrix, vec4 center) {\n return viewProjectionMatrix * position + center;\n}\n\n//\n// Projects from common space coordinates to clip space.\n// Uses project_uViewProjectionMatrix\n//\nvec4 project_common_position_to_clipspace(vec4 position) {\n return project_common_position_to_clipspace(position, project_uViewProjectionMatrix, project_uCenter);\n}\n\n// Returns a clip space offset that corresponds to a given number of screen pixels\nvec2 project_pixel_size_to_clipspace(vec2 pixels) {\n vec2 offset = pixels / project_uViewportSize * project_uDevicePixelRatio * 2.0;\n return offset * project_uFocalDistance;\n}\n\nfloat project_size_to_pixel(float meters) {\n return project_size(meters) * project_uScale;\n}\nfloat project_size_to_pixel(float size, int unit) {\n if (unit == UNIT_METERS) return project_size_to_pixel(size);\n if (unit == UNIT_COMMON) return size * project_uScale;\n // UNIT_PIXELS\n return size;\n}\nfloat project_pixel_size(float pixels) {\n return pixels / project_uScale;\n}\nvec2 project_pixel_size(vec2 pixels) {\n return pixels / project_uScale;\n}\n`;\n","import { uid, assert } from '@luma.gl/webgl';\nexport const DRAW_MODE = {\n POINTS: 0x0000,\n LINES: 0x0001,\n LINE_LOOP: 0x0002,\n LINE_STRIP: 0x0003,\n TRIANGLES: 0x0004,\n TRIANGLE_STRIP: 0x0005,\n TRIANGLE_FAN: 0x0006\n};\nexport default class Geometry {\n static get DRAW_MODE() {\n return DRAW_MODE;\n }\n\n constructor() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n id = uid('geometry'),\n drawMode = DRAW_MODE.TRIANGLES,\n attributes = {},\n indices = null,\n vertexCount = null\n } = props;\n this.id = id;\n this.drawMode = drawMode | 0;\n this.attributes = {};\n this.userData = {};\n\n this._setAttributes(attributes, indices);\n\n this.vertexCount = vertexCount || this._calculateVertexCount(this.attributes, this.indices);\n }\n\n get mode() {\n return this.drawMode;\n }\n\n getVertexCount() {\n return this.vertexCount;\n }\n\n getAttributes() {\n return this.indices ? {\n indices: this.indices,\n ...this.attributes\n } : this.attributes;\n }\n\n _print(attributeName) {\n return \"Geometry \".concat(this.id, \" attribute \").concat(attributeName);\n }\n\n _setAttributes(attributes, indices) {\n if (indices) {\n this.indices = ArrayBuffer.isView(indices) ? {\n value: indices,\n size: 1\n } : indices;\n }\n\n for (const attributeName in attributes) {\n let attribute = attributes[attributeName];\n attribute = ArrayBuffer.isView(attribute) ? {\n value: attribute\n } : attribute;\n assert(ArrayBuffer.isView(attribute.value), \"\".concat(this._print(attributeName), \": must be typed array or object with value as typed array\"));\n\n if ((attributeName === 'POSITION' || attributeName === 'positions') && !attribute.size) {\n attribute.size = 3;\n }\n\n if (attributeName === 'indices') {\n assert(!this.indices);\n this.indices = attribute;\n } else {\n this.attributes[attributeName] = attribute;\n }\n }\n\n if (this.indices && this.indices.isIndexed !== undefined) {\n this.indices = Object.assign({}, this.indices);\n delete this.indices.isIndexed;\n }\n\n return this;\n }\n\n _calculateVertexCount(attributes, indices) {\n if (indices) {\n return indices.value.length;\n }\n\n let vertexCount = Infinity;\n\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const {\n value,\n size,\n constant\n } = attribute;\n\n if (!constant && value && size >= 1) {\n vertexCount = Math.min(vertexCount, value.length / size);\n }\n }\n\n assert(Number.isFinite(vertexCount));\n return vertexCount;\n }\n\n}\n//# sourceMappingURL=geometry.js.map","import {uid, assert} from '@luma.gl/webgl';\n\n// Rendering primitives - specify how to extract primitives from vertices.\n// NOTE: These are numerically identical to the corresponding WebGL/OpenGL constants\nexport const DRAW_MODE = {\n POINTS: 0x0000, // draw single points.\n LINES: 0x0001, // draw lines. Each vertex connects to the one after it.\n LINE_LOOP: 0x0002, // draw lines. Each set of two vertices is treated as a separate line segment.\n LINE_STRIP: 0x0003, // draw a connected group of line segments from the first vertex to the last\n TRIANGLES: 0x0004, // draw triangles. Each set of three vertices creates a separate triangle.\n TRIANGLE_STRIP: 0x0005, // draw a connected group of triangles.\n TRIANGLE_FAN: 0x0006 // draw a connected group of triangles.\n // Each vertex connects to the previous and the first vertex in the fan.\n};\n\nexport default class Geometry {\n static get DRAW_MODE() {\n return DRAW_MODE;\n }\n\n constructor(props = {}) {\n const {\n id = uid('geometry'),\n drawMode = DRAW_MODE.TRIANGLES,\n attributes = {},\n indices = null,\n vertexCount = null\n } = props;\n\n this.id = id;\n this.drawMode = drawMode | 0;\n this.attributes = {};\n this.userData = {};\n\n this._setAttributes(attributes, indices);\n\n this.vertexCount = vertexCount || this._calculateVertexCount(this.attributes, this.indices);\n\n // stubRemovedMethods(this, [\n // 'setNeedsRedraw', 'needsRedraw', 'setAttributes'\n // ], 'Immutable');\n\n // stubRemovedMethods(this, [\n // 'hasAttribute', 'getAttribute', 'getArray'\n // ], 'Use geometry.attributes and geometry.indices');\n\n // deprecateMethods(this, ['getAttributes'])\n }\n\n get mode() {\n return this.drawMode;\n }\n\n getVertexCount() {\n return this.vertexCount;\n }\n\n // Return an object with all attributes plus indices added as a field.\n getAttributes() {\n return this.indices ? {indices: this.indices, ...this.attributes} : this.attributes;\n }\n\n // PRIVATE\n\n _print(attributeName) {\n return `Geometry ${this.id} attribute ${attributeName}`;\n }\n\n // Attribute\n // value: typed array\n // type: indices, vertices, uvs\n // size: elements per vertex\n // target: WebGL buffer type (string or constant)\n _setAttributes(attributes, indices) {\n if (indices) {\n this.indices = ArrayBuffer.isView(indices) ? {value: indices, size: 1} : indices;\n }\n\n for (const attributeName in attributes) {\n let attribute = attributes[attributeName];\n\n // Wrap \"unwrapped\" arrays and try to autodetect their type\n attribute = ArrayBuffer.isView(attribute) ? {value: attribute} : attribute;\n\n assert(\n ArrayBuffer.isView(attribute.value),\n `${this._print(attributeName)}: must be typed array or object with value as typed array`\n );\n\n if ((attributeName === 'POSITION' || attributeName === 'positions') && !attribute.size) {\n attribute.size = 3;\n }\n\n // Move indices to separate field\n if (attributeName === 'indices') {\n assert(!this.indices);\n this.indices = attribute;\n } else {\n this.attributes[attributeName] = attribute;\n }\n }\n\n if (this.indices && this.indices.isIndexed !== undefined) {\n this.indices = Object.assign({}, this.indices);\n delete this.indices.isIndexed;\n }\n\n return this;\n }\n\n _calculateVertexCount(attributes, indices) {\n if (indices) {\n return indices.value.length;\n }\n let vertexCount = Infinity;\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const {value, size, constant} = attribute;\n if (!constant && value && size >= 1) {\n vertexCount = Math.min(vertexCount, value.length / size);\n }\n }\n\n assert(Number.isFinite(vertexCount));\n return vertexCount;\n }\n}\n","import * as Polygon from './polygon';\nimport { Tesselator } from '@deck.gl/core';\nimport { cutPolygonByGrid, cutPolygonByMercatorBounds } from '@math.gl/polygon';\nexport default class PolygonTesselator extends Tesselator {\n constructor(opts) {\n const {\n fp64,\n IndexType = Uint32Array\n } = opts;\n super({ ...opts,\n attributes: {\n positions: {\n size: 3,\n type: fp64 ? Float64Array : Float32Array\n },\n vertexValid: {\n type: Uint8ClampedArray,\n size: 1\n },\n indices: {\n type: IndexType,\n size: 1\n }\n }\n });\n }\n\n get(attributeName) {\n const {\n attributes\n } = this;\n\n if (attributeName === 'indices') {\n return attributes.indices && attributes.indices.subarray(0, this.vertexCount);\n }\n\n return attributes[attributeName];\n }\n\n updateGeometry(opts) {\n super.updateGeometry(opts);\n const externalIndices = this.buffers.indices;\n\n if (externalIndices) {\n this.vertexCount = (externalIndices.value || externalIndices).length;\n } else if (this.data && !this.getGeometry) {\n throw new Error('missing indices buffer');\n }\n }\n\n normalizeGeometry(polygon) {\n if (this.normalize) {\n const normalizedPolygon = Polygon.normalize(polygon, this.positionSize);\n\n if (this.opts.resolution) {\n return cutPolygonByGrid(Polygon.getPositions(normalizedPolygon), Polygon.getHoleIndices(normalizedPolygon), {\n size: this.positionSize,\n gridResolution: this.opts.resolution,\n edgeTypes: true\n });\n }\n\n if (this.opts.wrapLongitude) {\n return cutPolygonByMercatorBounds(Polygon.getPositions(normalizedPolygon), Polygon.getHoleIndices(normalizedPolygon), {\n size: this.positionSize,\n maxLatitude: 86,\n edgeTypes: true\n });\n }\n\n return normalizedPolygon;\n }\n\n return polygon;\n }\n\n getGeometrySize(polygon) {\n if (isCut(polygon)) {\n let size = 0;\n\n for (const subPolygon of polygon) {\n size += this.getGeometrySize(subPolygon);\n }\n\n return size;\n }\n\n return Polygon.getPositions(polygon).length / this.positionSize;\n }\n\n getGeometryFromBuffer(buffer) {\n if (this.normalize || !this.buffers.indices) {\n return super.getGeometryFromBuffer(buffer);\n }\n\n return null;\n }\n\n updateGeometryAttributes(polygon, context) {\n if (polygon && isCut(polygon)) {\n for (const subPolygon of polygon) {\n const geometrySize = this.getGeometrySize(subPolygon);\n context.geometrySize = geometrySize;\n this.updateGeometryAttributes(subPolygon, context);\n context.vertexStart += geometrySize;\n context.indexStart = this.indexStarts[context.geometryIndex + 1];\n }\n } else {\n this._updateIndices(polygon, context);\n\n this._updatePositions(polygon, context);\n\n this._updateVertexValid(polygon, context);\n }\n }\n\n _updateIndices(polygon, {\n geometryIndex,\n vertexStart: offset,\n indexStart\n }) {\n const {\n attributes,\n indexStarts,\n typedArrayManager\n } = this;\n let target = attributes.indices;\n\n if (!target || !polygon) {\n return;\n }\n\n let i = indexStart;\n const indices = Polygon.getSurfaceIndices(polygon, this.positionSize, this.opts.preproject, this.opts.full3d);\n target = typedArrayManager.allocate(target, indexStart + indices.length, {\n copy: true\n });\n\n for (let j = 0; j < indices.length; j++) {\n target[i++] = indices[j] + offset;\n }\n\n indexStarts[geometryIndex + 1] = indexStart + indices.length;\n attributes.indices = target;\n }\n\n _updatePositions(polygon, {\n vertexStart,\n geometrySize\n }) {\n const {\n attributes: {\n positions\n },\n positionSize\n } = this;\n\n if (!positions || !polygon) {\n return;\n }\n\n const polygonPositions = Polygon.getPositions(polygon);\n\n for (let i = vertexStart, j = 0; j < geometrySize; i++, j++) {\n const x = polygonPositions[j * positionSize];\n const y = polygonPositions[j * positionSize + 1];\n const z = positionSize > 2 ? polygonPositions[j * positionSize + 2] : 0;\n positions[i * 3] = x;\n positions[i * 3 + 1] = y;\n positions[i * 3 + 2] = z;\n }\n }\n\n _updateVertexValid(polygon, {\n vertexStart,\n geometrySize\n }) {\n const {\n positionSize\n } = this;\n const vertexValid = this.attributes.vertexValid;\n const holeIndices = polygon && Polygon.getHoleIndices(polygon);\n\n if (polygon && polygon.edgeTypes) {\n vertexValid.set(polygon.edgeTypes, vertexStart);\n } else {\n vertexValid.fill(1, vertexStart, vertexStart + geometrySize);\n }\n\n if (holeIndices) {\n for (let j = 0; j < holeIndices.length; j++) {\n vertexValid[vertexStart + holeIndices[j] / positionSize - 1] = 0;\n }\n }\n\n vertexValid[vertexStart + geometrySize - 1] = 0;\n }\n\n}\n\nfunction isCut(polygon) {\n return Array.isArray(polygon) && polygon.length > 0 && !Number.isFinite(polygon[0]);\n}\n//# sourceMappingURL=polygon-tesselator.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// Handles tesselation of polygons with holes\n// - 2D surfaces\n// - 2D outlines\n// - 3D surfaces (top and sides only)\n// - 3D wireframes (not yet)\nimport * as Polygon from './polygon';\nimport {Tesselator} from '@deck.gl/core';\nimport {cutPolygonByGrid, cutPolygonByMercatorBounds} from '@math.gl/polygon';\n\nimport type {\n PolygonGeometry,\n NormalizedPolygonGeometry,\n FlatComplexPolygonGeometry\n} from './polygon';\nimport type {TypedArray} from '@math.gl/core';\n\ntype GeometryUpdateContext = {\n vertexStart: number;\n indexStart: number;\n geometrySize: number;\n geometryIndex: number;\n};\n\ntype CutPolygon = FlatComplexPolygonGeometry & {\n edgeTypes: number[];\n};\n\n// This class is set up to allow querying one attribute at a time\n// the way the AttributeManager expects it\nexport default class PolygonTesselator extends Tesselator<\n PolygonGeometry,\n NormalizedPolygonGeometry | CutPolygon[],\n {\n fp64?: boolean;\n IndexType?: Uint32ArrayConstructor | Uint16ArrayConstructor;\n resolution?: number;\n wrapLongitude?: boolean;\n preproject?: (xy: number[]) => number[];\n full3d?: boolean;\n }\n> {\n constructor(opts) {\n const {fp64, IndexType = Uint32Array} = opts;\n super({\n ...opts,\n attributes: {\n positions: {size: 3, type: fp64 ? Float64Array : Float32Array},\n vertexValid: {type: Uint8ClampedArray, size: 1},\n indices: {type: IndexType, size: 1}\n }\n });\n }\n\n /** Get attribute by name */\n get(attributeName: string): TypedArray | null {\n const {attributes} = this;\n if (attributeName === 'indices') {\n return attributes.indices && attributes.indices.subarray(0, this.vertexCount);\n }\n\n return attributes[attributeName];\n }\n\n /** Override base Tesselator method */\n updateGeometry(opts) {\n super.updateGeometry(opts);\n\n const externalIndices = this.buffers.indices;\n if (externalIndices) {\n // @ts-ignore (2339) value is not defined on TypedArray (fall through)\n this.vertexCount = (externalIndices.value || externalIndices).length;\n } else if (this.data && !this.getGeometry) {\n throw new Error('missing indices buffer');\n }\n }\n\n /** Implement base Tesselator interface */\n protected normalizeGeometry(polygon: PolygonGeometry): NormalizedPolygonGeometry | CutPolygon[] {\n if (this.normalize) {\n const normalizedPolygon = Polygon.normalize(polygon, this.positionSize);\n if (this.opts.resolution) {\n return cutPolygonByGrid(\n Polygon.getPositions(normalizedPolygon),\n Polygon.getHoleIndices(normalizedPolygon),\n {\n size: this.positionSize,\n gridResolution: this.opts.resolution,\n edgeTypes: true\n }\n ) as CutPolygon[];\n }\n if (this.opts.wrapLongitude) {\n return cutPolygonByMercatorBounds(\n Polygon.getPositions(normalizedPolygon),\n Polygon.getHoleIndices(normalizedPolygon),\n {\n size: this.positionSize,\n maxLatitude: 86,\n edgeTypes: true\n }\n ) as CutPolygon[];\n }\n return normalizedPolygon;\n }\n // normalize is explicitly set to false, assume that user passed in already normalized polygons\n return polygon as NormalizedPolygonGeometry;\n }\n\n /** Implement base Tesselator interface */\n protected getGeometrySize(polygon: NormalizedPolygonGeometry | CutPolygon[]): number {\n if (isCut(polygon)) {\n let size = 0;\n for (const subPolygon of polygon) {\n size += this.getGeometrySize(subPolygon);\n }\n return size;\n }\n return Polygon.getPositions(polygon).length / this.positionSize;\n }\n\n /** Override base Tesselator method */\n protected getGeometryFromBuffer(buffer) {\n if (this.normalize || !this.buffers.indices) {\n return super.getGeometryFromBuffer(buffer);\n }\n // we don't need to read the positions if no normalization/tesselation\n return null;\n }\n\n /** Implement base Tesselator interface */\n protected updateGeometryAttributes(\n polygon: NormalizedPolygonGeometry | CutPolygon[] | null,\n context: GeometryUpdateContext\n ) {\n if (polygon && isCut(polygon)) {\n for (const subPolygon of polygon) {\n const geometrySize = this.getGeometrySize(subPolygon);\n context.geometrySize = geometrySize;\n this.updateGeometryAttributes(subPolygon, context);\n context.vertexStart += geometrySize;\n context.indexStart = this.indexStarts[context.geometryIndex + 1];\n }\n } else {\n this._updateIndices(polygon, context);\n this._updatePositions(polygon, context);\n this._updateVertexValid(polygon, context);\n }\n }\n\n // Flatten the indices array\n private _updateIndices(\n polygon: NormalizedPolygonGeometry | null,\n {geometryIndex, vertexStart: offset, indexStart}: GeometryUpdateContext\n ) {\n const {attributes, indexStarts, typedArrayManager} = this;\n\n let target = attributes.indices;\n if (!target || !polygon) {\n return;\n }\n let i = indexStart;\n\n // 1. get triangulated indices for the internal areas\n const indices = Polygon.getSurfaceIndices(\n polygon,\n this.positionSize,\n this.opts.preproject,\n this.opts.full3d\n );\n\n // make sure the buffer is large enough\n target = typedArrayManager.allocate(target, indexStart + indices.length, {\n copy: true\n });\n\n // 2. offset each index by the number of indices in previous polygons\n for (let j = 0; j < indices.length; j++) {\n target[i++] = indices[j] + offset;\n }\n\n indexStarts[geometryIndex + 1] = indexStart + indices.length;\n attributes.indices = target;\n }\n\n // Flatten out all the vertices of all the sub subPolygons\n private _updatePositions(\n polygon: NormalizedPolygonGeometry | null,\n {vertexStart, geometrySize}: GeometryUpdateContext\n ) {\n const {\n attributes: {positions},\n positionSize\n } = this;\n if (!positions || !polygon) {\n return;\n }\n const polygonPositions = Polygon.getPositions(polygon);\n\n for (let i = vertexStart, j = 0; j < geometrySize; i++, j++) {\n const x = polygonPositions[j * positionSize];\n const y = polygonPositions[j * positionSize + 1];\n const z = positionSize > 2 ? polygonPositions[j * positionSize + 2] : 0;\n\n positions[i * 3] = x;\n positions[i * 3 + 1] = y;\n positions[i * 3 + 2] = z;\n }\n }\n\n private _updateVertexValid(\n polygon: NormalizedPolygonGeometry | null,\n {vertexStart, geometrySize}: GeometryUpdateContext\n ) {\n const {positionSize} = this;\n const vertexValid = this.attributes.vertexValid as TypedArray;\n const holeIndices = polygon && Polygon.getHoleIndices(polygon);\n /* We are reusing the some buffer for `nextPositions` by offseting one vertex\n * to the left. As a result,\n * the last vertex of each ring overlaps with the first vertex of the next ring.\n * `vertexValid` is used to mark the end of each ring so we don't draw these\n * segments:\n positions A0 A1 A2 A3 A4 B0 B1 B2 C0 ...\n nextPositions A1 A2 A3 A4 B0 B1 B2 C0 C1 ...\n vertexValid 1 1 1 1 0 1 1 0 1 ...\n */\n if (polygon && (polygon as CutPolygon).edgeTypes) {\n vertexValid.set((polygon as CutPolygon).edgeTypes, vertexStart);\n } else {\n vertexValid.fill(1, vertexStart, vertexStart + geometrySize);\n }\n if (holeIndices) {\n for (let j = 0; j < holeIndices.length; j++) {\n vertexValid[vertexStart + holeIndices[j] / positionSize - 1] = 0;\n }\n }\n vertexValid[vertexStart + geometrySize - 1] = 0;\n }\n}\n\nfunction isCut(polygon: NormalizedPolygonGeometry | CutPolygon[]): polygon is CutPolygon[] {\n return Array.isArray(polygon) && polygon.length > 0 && !Number.isFinite(polygon[0]);\n}\n","import earcut from 'earcut';\nimport { modifyPolygonWindingDirection, WINDING } from '@math.gl/polygon';\nconst OUTER_POLYGON_WINDING = WINDING.CLOCKWISE;\nconst HOLE_POLYGON_WINDING = WINDING.COUNTER_CLOCKWISE;\nconst windingOptions = {\n isClosed: true\n};\n\nfunction validate(polygon) {\n polygon = polygon && polygon.positions || polygon;\n\n if (!Array.isArray(polygon) && !ArrayBuffer.isView(polygon)) {\n throw new Error('invalid polygon');\n }\n}\n\nexport function getPositions(polygon) {\n return 'positions' in polygon ? polygon.positions : polygon;\n}\nexport function getHoleIndices(polygon) {\n return 'holeIndices' in polygon ? polygon.holeIndices : null;\n}\n\nfunction isNested(polygon) {\n return Array.isArray(polygon[0]);\n}\n\nfunction isSimple(polygon) {\n return polygon.length >= 1 && polygon[0].length >= 2 && Number.isFinite(polygon[0][0]);\n}\n\nfunction isNestedRingClosed(simplePolygon) {\n const p0 = simplePolygon[0];\n const p1 = simplePolygon[simplePolygon.length - 1];\n return p0[0] === p1[0] && p0[1] === p1[1] && p0[2] === p1[2];\n}\n\nfunction isFlatRingClosed(positions, size, startIndex, endIndex) {\n for (let i = 0; i < size; i++) {\n if (positions[startIndex + i] !== positions[endIndex - size + i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction copyNestedRing(target, targetStartIndex, simplePolygon, size, windingDirection) {\n let targetIndex = targetStartIndex;\n const len = simplePolygon.length;\n\n for (let i = 0; i < len; i++) {\n for (let j = 0; j < size; j++) {\n target[targetIndex++] = simplePolygon[i][j] || 0;\n }\n }\n\n if (!isNestedRingClosed(simplePolygon)) {\n for (let j = 0; j < size; j++) {\n target[targetIndex++] = simplePolygon[0][j] || 0;\n }\n }\n\n windingOptions.start = targetStartIndex;\n windingOptions.end = targetIndex;\n windingOptions.size = size;\n modifyPolygonWindingDirection(target, windingDirection, windingOptions);\n return targetIndex;\n}\n\nfunction copyFlatRing(target, targetStartIndex, positions, size, srcStartIndex = 0, srcEndIndex, windingDirection) {\n srcEndIndex = srcEndIndex || positions.length;\n const srcLength = srcEndIndex - srcStartIndex;\n\n if (srcLength <= 0) {\n return targetStartIndex;\n }\n\n let targetIndex = targetStartIndex;\n\n for (let i = 0; i < srcLength; i++) {\n target[targetIndex++] = positions[srcStartIndex + i];\n }\n\n if (!isFlatRingClosed(positions, size, srcStartIndex, srcEndIndex)) {\n for (let i = 0; i < size; i++) {\n target[targetIndex++] = positions[srcStartIndex + i];\n }\n }\n\n windingOptions.start = targetStartIndex;\n windingOptions.end = targetIndex;\n windingOptions.size = size;\n modifyPolygonWindingDirection(target, windingDirection, windingOptions);\n return targetIndex;\n}\n\nexport function normalize(polygon, positionSize) {\n validate(polygon);\n const positions = [];\n const holeIndices = [];\n\n if ('positions' in polygon) {\n const {\n positions: srcPositions,\n holeIndices: srcHoleIndices\n } = polygon;\n\n if (srcHoleIndices) {\n let targetIndex = 0;\n\n for (let i = 0; i <= srcHoleIndices.length; i++) {\n targetIndex = copyFlatRing(positions, targetIndex, srcPositions, positionSize, srcHoleIndices[i - 1], srcHoleIndices[i], i === 0 ? OUTER_POLYGON_WINDING : HOLE_POLYGON_WINDING);\n holeIndices.push(targetIndex);\n }\n\n holeIndices.pop();\n return {\n positions,\n holeIndices\n };\n }\n\n polygon = srcPositions;\n }\n\n if (!isNested(polygon)) {\n copyFlatRing(positions, 0, polygon, positionSize, 0, positions.length, OUTER_POLYGON_WINDING);\n return positions;\n }\n\n if (!isSimple(polygon)) {\n let targetIndex = 0;\n\n for (const [polygonIndex, simplePolygon] of polygon.entries()) {\n targetIndex = copyNestedRing(positions, targetIndex, simplePolygon, positionSize, polygonIndex === 0 ? OUTER_POLYGON_WINDING : HOLE_POLYGON_WINDING);\n holeIndices.push(targetIndex);\n }\n\n holeIndices.pop();\n return {\n positions,\n holeIndices\n };\n }\n\n copyNestedRing(positions, 0, polygon, positionSize, OUTER_POLYGON_WINDING);\n return positions;\n}\n\nfunction getPlaneArea(positions, xIndex, yIndex) {\n const numVerts = positions.length / 3;\n let area = 0;\n\n for (let i = 0; i < numVerts; i++) {\n const j = (i + 1) % numVerts;\n area += positions[i * 3 + xIndex] * positions[j * 3 + yIndex];\n area -= positions[j * 3 + xIndex] * positions[i * 3 + yIndex];\n }\n\n return Math.abs(area / 2);\n}\n\nfunction permutePositions(positions, xIndex, yIndex, zIndex) {\n const numVerts = positions.length / 3;\n\n for (let i = 0; i < numVerts; i++) {\n const o = i * 3;\n const x = positions[o + 0];\n const y = positions[o + 1];\n const z = positions[o + 2];\n positions[o + xIndex] = x;\n positions[o + yIndex] = y;\n positions[o + zIndex] = z;\n }\n}\n\nexport function getSurfaceIndices(polygon, positionSize, preproject, full3d) {\n let holeIndices = getHoleIndices(polygon);\n\n if (holeIndices) {\n holeIndices = holeIndices.map(positionIndex => positionIndex / positionSize);\n }\n\n let positions = getPositions(polygon);\n const is3d = full3d && positionSize === 3;\n\n if (preproject) {\n const n = positions.length;\n positions = positions.slice();\n const p = [];\n\n for (let i = 0; i < n; i += positionSize) {\n p[0] = positions[i];\n p[1] = positions[i + 1];\n\n if (is3d) {\n p[2] = positions[i + 2];\n }\n\n const xy = preproject(p);\n positions[i] = xy[0];\n positions[i + 1] = xy[1];\n\n if (is3d) {\n positions[i + 2] = xy[2];\n }\n }\n }\n\n if (is3d) {\n const xyArea = getPlaneArea(positions, 0, 1);\n const xzArea = getPlaneArea(positions, 0, 2);\n const yzArea = getPlaneArea(positions, 1, 2);\n\n if (!xyArea && !xzArea && !yzArea) {\n return [];\n }\n\n if (xyArea > xzArea && xyArea > yzArea) {} else if (xzArea > yzArea) {\n if (!preproject) {\n positions = positions.slice();\n }\n\n permutePositions(positions, 0, 2, 1);\n } else {\n if (!preproject) {\n positions = positions.slice();\n }\n\n permutePositions(positions, 2, 0, 1);\n }\n }\n\n return earcut(positions, holeIndices, positionSize);\n}\n//# sourceMappingURL=polygon.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* eslint-disable max-params */\nimport earcut from 'earcut';\nimport {modifyPolygonWindingDirection, WINDING} from '@math.gl/polygon';\n\nimport type {Position} from '@deck.gl/core';\nimport type {NumericArray} from '@math.gl/core';\n\nconst OUTER_POLYGON_WINDING = WINDING.CLOCKWISE;\nconst HOLE_POLYGON_WINDING = WINDING.COUNTER_CLOCKWISE;\n\ntype WindingOptions = {\n start?: number;\n end?: number;\n size?: number;\n isClosed?: boolean;\n};\n\n/** A scratch object for sending winding options */\nconst windingOptions: WindingOptions = {\n isClosed: true\n};\n\n// 4 data formats are supported:\n\n/** Simple Polygon: an array of points */\nexport type NestedSimplePolygonGeometry = Position[];\n/** Complex Polygon: an array of array of points (array of rings)\n * with the first ring representing the outer hull and other rings representing holes\n */\nexport type NestedComplexPolygonGeometry = Position[][];\n/** An array of numbers (flattened \"simple polygon\") */\nexport type FlatSimplePolygonGeometry = NumericArray;\n/** Flattened \"complex polygon\" */\nexport type FlatComplexPolygonGeometry = {positions: NumericArray; holeIndices: NumericArray};\n\nexport type PolygonGeometry =\n | NestedSimplePolygonGeometry\n | NestedComplexPolygonGeometry\n | FlatSimplePolygonGeometry\n | FlatComplexPolygonGeometry;\n\nexport type NormalizedPolygonGeometry = FlatSimplePolygonGeometry | FlatComplexPolygonGeometry;\n\n/**\n * Ensure a polygon is valid format\n */\nfunction validate(polygon: PolygonGeometry): void {\n polygon = (polygon && (polygon as FlatComplexPolygonGeometry).positions) || polygon;\n if (!Array.isArray(polygon) && !ArrayBuffer.isView(polygon)) {\n throw new Error('invalid polygon');\n }\n}\n\n/** Get the positions from a normalized polygon */\nexport function getPositions(polygon: NormalizedPolygonGeometry): NumericArray {\n return 'positions' in polygon ? polygon.positions : polygon;\n}\n\n/** Get the hole indices from a normalized polygon */\nexport function getHoleIndices(polygon: NormalizedPolygonGeometry): NumericArray | null {\n return 'holeIndices' in polygon ? polygon.holeIndices : null;\n}\n\n/**\n * Check if a polygon is nested or flat\n * Returns true if the polygon is a flat polygon (i.e. not an array of polygons)\n */\nfunction isNested(\n polygon: PolygonGeometry\n): polygon is NestedSimplePolygonGeometry | NestedComplexPolygonGeometry {\n return Array.isArray(polygon[0]);\n}\n\n/**\n * Check if a polygon is simple or complex\n * Returns true if the polygon is a simple polygon (i.e. not an array of polygons)\n */\nfunction isSimple(\n polygon: NestedSimplePolygonGeometry | NestedComplexPolygonGeometry\n): polygon is NestedSimplePolygonGeometry {\n return polygon.length >= 1 && polygon[0].length >= 2 && Number.isFinite(polygon[0][0]);\n}\n\n/**\n * Check if a simple polygon is a closed ring\n * Returns true if the simple polygon is a closed ring\n */\nfunction isNestedRingClosed(simplePolygon: NestedSimplePolygonGeometry): boolean {\n // check if first and last vertex are the same\n const p0 = simplePolygon[0];\n const p1 = simplePolygon[simplePolygon.length - 1];\n\n return p0[0] === p1[0] && p0[1] === p1[1] && p0[2] === p1[2];\n}\n\n/**\n * Check if a simple flat array is a closed ring\n * Returns true if the simple flat array is a closed ring\n */\nfunction isFlatRingClosed(\n positions: FlatSimplePolygonGeometry,\n /** size of a position, 2 (xy) or 3 (xyz) */\n size: number,\n /** start index of the path in the positions array */\n startIndex: number,\n /** end index of the path in the positions array */\n endIndex: number\n): boolean {\n for (let i = 0; i < size; i++) {\n if (positions[startIndex + i] !== positions[endIndex - size + i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Copy a simple polygon coordinates into a flat array, closes the ring if needed.\n * Returns the index of the write head in the destination\n */\nfunction copyNestedRing(\n /** destination */\n target: NumericArray,\n /** index in the destination to start copying into */\n targetStartIndex: number,\n /** the source polygon */\n simplePolygon: NestedSimplePolygonGeometry,\n /** size of a position, 2 (xy) or 3 (xyz) */\n size: number,\n /** modify polygon to be of the specified winding direction */\n windingDirection: number\n): number {\n let targetIndex = targetStartIndex;\n const len = simplePolygon.length;\n for (let i = 0; i < len; i++) {\n for (let j = 0; j < size; j++) {\n target[targetIndex++] = simplePolygon[i][j] || 0;\n }\n }\n\n if (!isNestedRingClosed(simplePolygon)) {\n for (let j = 0; j < size; j++) {\n target[targetIndex++] = simplePolygon[0][j] || 0;\n }\n }\n\n windingOptions.start = targetStartIndex;\n windingOptions.end = targetIndex;\n windingOptions.size = size;\n modifyPolygonWindingDirection(target, windingDirection, windingOptions);\n\n return targetIndex;\n}\n\n/**\n * Copy a simple flat array into another flat array, closes the ring if needed.\n * Returns the index of the write head in the destination\n */\nfunction copyFlatRing(\n /** destination */\n target: NumericArray,\n /** index in the destination to start copying into */\n targetStartIndex: number,\n /** the source polygon */\n positions: FlatSimplePolygonGeometry,\n /** size of a position, 2 (xy) or 3 (xyz) */\n size: number,\n /** start index of the path in the positions array */\n srcStartIndex: number = 0,\n /** end index of the path in the positions array */\n srcEndIndex: number,\n windingDirection: number\n): number {\n srcEndIndex = srcEndIndex || positions.length;\n const srcLength = srcEndIndex - srcStartIndex;\n if (srcLength <= 0) {\n return targetStartIndex;\n }\n let targetIndex = targetStartIndex;\n\n for (let i = 0; i < srcLength; i++) {\n target[targetIndex++] = positions[srcStartIndex + i];\n }\n\n if (!isFlatRingClosed(positions, size, srcStartIndex, srcEndIndex)) {\n for (let i = 0; i < size; i++) {\n target[targetIndex++] = positions[srcStartIndex + i];\n }\n }\n\n windingOptions.start = targetStartIndex;\n windingOptions.end = targetIndex;\n windingOptions.size = size;\n modifyPolygonWindingDirection(target, windingDirection, windingOptions);\n\n return targetIndex;\n}\n\n/**\n * Normalize any polygon representation into the \"complex flat\" format\n */\n/* eslint-disable max-statements */\nexport function normalize(\n polygon: PolygonGeometry,\n positionSize: number\n): NormalizedPolygonGeometry {\n validate(polygon);\n\n const positions: number[] = [];\n const holeIndices: number[] = [];\n\n if ('positions' in polygon) {\n // complex flat\n const {positions: srcPositions, holeIndices: srcHoleIndices} = polygon;\n\n if (srcHoleIndices) {\n let targetIndex = 0;\n // split the positions array into `holeIndices.length + 1` rings\n // holeIndices[-1] falls back to 0\n // holeIndices[holeIndices.length] falls back to positions.length\n for (let i = 0; i <= srcHoleIndices.length; i++) {\n targetIndex = copyFlatRing(\n positions,\n targetIndex,\n srcPositions,\n positionSize,\n srcHoleIndices[i - 1],\n srcHoleIndices[i],\n i === 0 ? OUTER_POLYGON_WINDING : HOLE_POLYGON_WINDING\n );\n holeIndices.push(targetIndex);\n }\n // The last one is not a starting index of a hole, remove\n holeIndices.pop();\n\n return {positions, holeIndices};\n }\n polygon = srcPositions;\n }\n if (!isNested(polygon)) {\n // simple flat\n copyFlatRing(positions, 0, polygon, positionSize, 0, positions.length, OUTER_POLYGON_WINDING);\n return positions;\n }\n if (!isSimple(polygon)) {\n // complex polygon\n let targetIndex = 0;\n\n for (const [polygonIndex, simplePolygon] of polygon.entries()) {\n targetIndex = copyNestedRing(\n positions,\n targetIndex,\n simplePolygon,\n positionSize,\n polygonIndex === 0 ? OUTER_POLYGON_WINDING : HOLE_POLYGON_WINDING\n );\n holeIndices.push(targetIndex);\n }\n // The last one is not a starting index of a hole, remove\n holeIndices.pop();\n // last index points to the end of the array, remove it\n return {positions, holeIndices};\n }\n // simple polygon\n copyNestedRing(positions, 0, polygon, positionSize, OUTER_POLYGON_WINDING);\n return positions;\n}\n/* eslint-enable max-statements */\n\n/*\n * Calculate the area of a single plane of the polygon\n */\nfunction getPlaneArea(positions: NumericArray, xIndex: number, yIndex: number): number {\n const numVerts = positions.length / 3;\n let area = 0;\n for (let i = 0; i < numVerts; i++) {\n const j = (i + 1) % numVerts;\n area += positions[i * 3 + xIndex] * positions[j * 3 + yIndex];\n area -= positions[j * 3 + xIndex] * positions[i * 3 + yIndex];\n }\n return Math.abs(area / 2);\n}\n\nfunction permutePositions(positions: NumericArray, xIndex: number, yIndex: number, zIndex: number) {\n const numVerts = positions.length / 3;\n for (let i = 0; i < numVerts; i++) {\n const o = i * 3;\n\n const x = positions[o + 0];\n const y = positions[o + 1];\n const z = positions[o + 2];\n\n positions[o + xIndex] = x;\n positions[o + yIndex] = y;\n positions[o + zIndex] = z;\n }\n}\n\n/*\n * Get vertex indices for drawing polygon mesh (triangulation)\n */\n// eslint-disable-next-line complexity, max-statements\nexport function getSurfaceIndices(\n polygon: NormalizedPolygonGeometry,\n positionSize: number,\n preproject?: (xy: number[]) => number[],\n full3d?: boolean\n): number[] {\n let holeIndices = getHoleIndices(polygon);\n if (holeIndices) {\n holeIndices = holeIndices.map(positionIndex => positionIndex / positionSize);\n }\n\n let positions = getPositions(polygon);\n\n const is3d = full3d && positionSize === 3;\n\n if (preproject) {\n // When tesselating lnglat coordinates, project them to the common space for accuracy\n const n = positions.length;\n\n // Clone the array\n positions = positions.slice();\n\n const p: number[] = [];\n for (let i = 0; i < n; i += positionSize) {\n p[0] = positions[i];\n p[1] = positions[i + 1];\n\n if (is3d) {\n p[2] = positions[i + 2];\n }\n\n const xy = preproject(p);\n\n positions[i] = xy[0];\n positions[i + 1] = xy[1];\n\n if (is3d) {\n positions[i + 2] = xy[2];\n }\n }\n }\n\n if (is3d) {\n // calculate plane with largest area\n const xyArea = getPlaneArea(positions, 0, 1);\n const xzArea = getPlaneArea(positions, 0, 2);\n const yzArea = getPlaneArea(positions, 1, 2);\n\n if (!xyArea && !xzArea && !yzArea) {\n return []; // no planes have area, nothing we can do\n }\n\n // permute positions to make the largest plane xy for earcut\n if (xyArea > xzArea && xyArea > yzArea) {\n // xy plane largest, nothing to do\n } else if (xzArea > yzArea) {\n // xz plane largest, permute to make xyz -> xzy\n if (!preproject) {\n positions = positions.slice();\n }\n permutePositions(positions, 0, 2, 1);\n } else {\n // yz plane largest, permute to make xyz -> yzx\n if (!preproject) {\n positions = positions.slice();\n }\n permutePositions(positions, 2, 0, 1);\n }\n }\n\n // Let earcut triangulate the polygon\n return earcut(positions, holeIndices, positionSize);\n}\n","'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","export {default as Polygon} from './polygon';\n\nexport {\n getPolygonSignedArea,\n getPolygonWindingDirection,\n forEachSegmentInPolygon,\n modifyPolygonWindingDirection,\n WINDING\n} from './polygon-utils';\n\nexport {earcut} from './earcut';\n\nexport {clipPolygon, clipPolyline} from './lineclip';\n\nexport {cutPolygonByGrid, cutPolylineByGrid} from './cut-by-grid';\n\nexport {cutPolylineByMercatorBounds, cutPolygonByMercatorBounds} from './cut-by-mercator-bounds';\n\n// DEPRECATED\nexport {default as _Polygon} from './polygon';\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isArray } from '@math.gl/core';\nimport { getPolygonSignedArea, forEachSegmentInPolygon, modifyPolygonWindingDirection, getPolygonSignedAreaPoints, forEachSegmentInPolygonPoints, modifyPolygonWindingDirectionPoints } from './polygon-utils';\nexport default class Polygon {\n constructor(points, options = {}) {\n _defineProperty(this, \"points\", void 0);\n\n _defineProperty(this, \"isFlatArray\", void 0);\n\n _defineProperty(this, \"options\", void 0);\n\n this.points = points;\n this.isFlatArray = !isArray(points[0]);\n this.options = {\n start: options.start || 0,\n end: options.end || points.length,\n size: options.size || 2,\n isClosed: options.isClosed\n };\n Object.freeze(this);\n }\n\n getSignedArea() {\n if (this.isFlatArray) return getPolygonSignedArea(this.points, this.options);\n return getPolygonSignedAreaPoints(this.points, this.options);\n }\n\n getArea() {\n return Math.abs(this.getSignedArea());\n }\n\n getWindingDirection() {\n return Math.sign(this.getSignedArea());\n }\n\n forEachSegment(visitor) {\n if (this.isFlatArray) {\n forEachSegmentInPolygon(this.points, (x1, y1, x2, y2, i1, i2) => {\n visitor([x1, y1], [x2, y2], i1, i2);\n }, this.options);\n } else {\n forEachSegmentInPolygonPoints(this.points, visitor, this.options);\n }\n }\n\n modifyWindingDirection(direction) {\n if (this.isFlatArray) {\n return modifyPolygonWindingDirection(this.points, direction, this.options);\n }\n\n return modifyPolygonWindingDirectionPoints(this.points, direction, this.options);\n }\n\n}\n//# sourceMappingURL=polygon.js.map","/* eslint-disable no-undef, no-console */\nimport {isArray} from '@math.gl/core';\nimport type {SegmentVisitorPoints} from './polygon-utils';\nimport type {NumericArray} from '@math.gl/core';\n\nimport {\n getPolygonSignedArea,\n forEachSegmentInPolygon,\n modifyPolygonWindingDirection,\n getPolygonSignedAreaPoints,\n forEachSegmentInPolygonPoints,\n modifyPolygonWindingDirectionPoints\n} from './polygon-utils';\n\nexport type PolygonOptions = {\n start?: number;\n end?: number;\n size?: number;\n isClosed?: boolean;\n};\n\nexport default class Polygon {\n points: NumericArray | number[][];\n isFlatArray: boolean;\n options: PolygonOptions;\n\n constructor(points: NumericArray | number[][], options: PolygonOptions = {}) {\n this.points = points;\n this.isFlatArray = !isArray(points[0]);\n\n this.options = {\n start: options.start || 0,\n end: options.end || points.length,\n size: options.size || 2,\n isClosed: options.isClosed\n };\n\n Object.freeze(this);\n }\n\n /**\n * Returns signed area of the polygon.\n * @returns Signed area of the polygon.\n */\n getSignedArea(): number {\n if (this.isFlatArray) return getPolygonSignedArea(this.points as NumericArray, this.options);\n\n return getPolygonSignedAreaPoints(this.points as number[][], this.options);\n }\n\n /**\n * Returns absolute area of the polygon.\n * @returns Absolute area of the polygon.\n */\n getArea(): number {\n return Math.abs(this.getSignedArea());\n }\n\n /**\n * Returns winding direction of the polygon.\n * @returns Winding direction of the polygon. 1 is for clockwise, -1 for counterclockwise winding direction.\n */\n getWindingDirection(): number {\n return Math.sign(this.getSignedArea());\n }\n\n /**\n * Calls the visitor callback for each segment in the polygon.\n * @param visitor A callback to call for each segment.\n */\n forEachSegment(visitor: SegmentVisitorPoints): void {\n if (this.isFlatArray) {\n forEachSegmentInPolygon(\n this.points as NumericArray,\n // eslint-disable-next-line max-params\n (x1, y1, x2, y2, i1, i2) => {\n // TODO @igorDykhta original visitor uses arrays for each point, but with flat arrays performance degrades if we allocate points for each segment\n visitor([x1, y1], [x2, y2], i1, i2);\n },\n this.options\n );\n } else {\n forEachSegmentInPolygonPoints(this.points as number[][], visitor, this.options);\n }\n }\n\n /**\n * Checks winding direction of the polygon and reverses the polygon in case of opposite winding direction.\n * @param direction Requested winding direction. 1 is for clockwise, -1 for counterclockwise winding direction.\n * @return Returns true if the winding direction was changed.\n */\n modifyWindingDirection(direction: number): boolean {\n if (this.isFlatArray) {\n return modifyPolygonWindingDirection(this.points as NumericArray, direction, this.options);\n }\n return modifyPolygonWindingDirectionPoints(this.points as number[][], direction, this.options);\n }\n}\n","import { equals } from '@math.gl/core';\nexport const WINDING = {\n CLOCKWISE: 1,\n COUNTER_CLOCKWISE: -1\n};\nexport function modifyPolygonWindingDirection(points, direction, options = {}) {\n const windingDirection = getPolygonWindingDirection(points, options);\n\n if (windingDirection !== direction) {\n reversePolygon(points, options);\n return true;\n }\n\n return false;\n}\nexport function getPolygonWindingDirection(points, options = {}) {\n return Math.sign(getPolygonSignedArea(points, options));\n}\nexport function getPolygonSignedArea(points, options = {}) {\n const {\n start = 0,\n end = points.length\n } = options;\n const dim = options.size || 2;\n let area = 0;\n\n for (let i = start, j = end - dim; i < end; i += dim) {\n area += (points[i] - points[j]) * (points[i + 1] + points[j + 1]);\n j = i;\n }\n\n return area / 2;\n}\nexport function forEachSegmentInPolygon(points, visitor, options = {}) {\n const {\n start = 0,\n end = points.length,\n size = 2,\n isClosed\n } = options;\n const numPoints = (end - start) / size;\n\n for (let i = 0; i < numPoints - 1; ++i) {\n visitor(points[start + i * size], points[start + i * size + 1], points[start + (i + 1) * size], points[start + (i + 1) * size + 1], i, i + 1);\n }\n\n const endPointIndex = start + (numPoints - 1) * size;\n const isClosedEx = isClosed || equals(points[start], points[endPointIndex]) && equals(points[start + 1], points[endPointIndex + 1]);\n\n if (!isClosedEx) {\n visitor(points[endPointIndex], points[endPointIndex + 1], points[start], points[start + 1], numPoints - 1, 0);\n }\n}\n\nfunction reversePolygon(points, options) {\n const {\n start = 0,\n end = points.length,\n size = 2\n } = options;\n const numPoints = (end - start) / size;\n const numSwaps = Math.floor(numPoints / 2);\n\n for (let i = 0; i < numSwaps; ++i) {\n const b1 = start + i * size;\n const b2 = start + (numPoints - 1 - i) * size;\n\n for (let j = 0; j < size; ++j) {\n const tmp = points[b1 + j];\n points[b1 + j] = points[b2 + j];\n points[b2 + j] = tmp;\n }\n }\n}\n\nexport function modifyPolygonWindingDirectionPoints(points, direction, options = {}) {\n const currentDirection = getPolygonWindingDirectionPoints(points, options);\n\n if (currentDirection !== direction) {\n points.reverse();\n return true;\n }\n\n return false;\n}\nexport function getPolygonWindingDirectionPoints(points, options = {}) {\n return Math.sign(getPolygonSignedAreaPoints(points, options));\n}\nexport function getPolygonSignedAreaPoints(points, options = {}) {\n const {\n start = 0,\n end = points.length\n } = options;\n let area = 0;\n\n for (let i = start, j = end - 1; i < end; ++i) {\n area += (points[i][0] - points[j][0]) * (points[i][1] + points[j][1]);\n j = i;\n }\n\n return area / 2;\n}\nexport function forEachSegmentInPolygonPoints(points, visitor, options = {}) {\n const {\n start = 0,\n end = points.length,\n isClosed\n } = options;\n\n for (let i = start; i < end - 1; ++i) {\n visitor(points[i], points[i + 1], i, i + 1);\n }\n\n const isClosedEx = isClosed || equals(points[end - 1], points[0]);\n\n if (!isClosedEx) {\n visitor(points[end - 1], points[0], end - 1, 0);\n }\n}\n//# sourceMappingURL=polygon-utils.js.map","/* eslint-disable max-statements, max-depth, complexity, no-unused-expressions */\n\nimport {equals} from '@math.gl/core';\nimport type {NumericArray} from '@math.gl/core';\n\nexport const WINDING = {\n CLOCKWISE: 1,\n COUNTER_CLOCKWISE: -1\n} as const;\n\n/** Polygon representation where each point is represented as a separate array of positions. */\ntype PointsArray = NumericArray[];\n\n/** Segment visitor callback type for polygons defined with flat arrays, */\ntype SegmentVisitorFlat = (\n p1x: number,\n p1y: number,\n p2x: number,\n p2y: number,\n i1: number,\n i2: number\n) => void;\n\n/** Segment visitor callback type for polygons defined with array of points. */\nexport type SegmentVisitorPoints = (\n p1: NumericArray,\n p2: NumericArray,\n i1: number,\n i2: number\n) => void;\n\n/** Parameters of a polygon. */\ntype PolygonParams = {\n start?: number; // Start index of the polygon in the array of positions. Defaults to 0.\n end?: number; // End index of the polygon in the array of positions. Defaults to number of positions.\n size?: number; // Size of a point, 2 (XZ) or 3 (XYZ). Defaults to 2. Affects only polygons stored in flat arrays.\n isClosed?: boolean; // Indicates that the first point of the polygon is equal to the last point, and additional checks should be ommited.\n};\n\n/**\n * Checks winding direction of the polygon and reverses the polygon in case of opposite winding direction.\n * Note: points are modified in-place.\n * @param points An array that represents points of the polygon.\n * @param direction Requested winding direction. 1 is for clockwise, -1 for counterclockwise winding direction.\n * @param options Parameters of the polygon.\n * @return Returns true if the winding direction was changed.\n */\nexport function modifyPolygonWindingDirection(\n points: NumericArray,\n direction: number,\n options: PolygonParams = {}\n): boolean {\n const windingDirection = getPolygonWindingDirection(points, options);\n if (windingDirection !== direction) {\n reversePolygon(points, options);\n return true;\n }\n return false;\n}\n\n/**\n * Returns winding direction of the polygon.\n * @param points An array that represents points of the polygon.\n * @param options Parameters of the polygon.\n * @returns Winding direction of the polygon.\n */\nexport function getPolygonWindingDirection(\n points: NumericArray,\n options: PolygonParams = {}\n): number {\n return Math.sign(getPolygonSignedArea(points, options));\n}\n\n/**\n * Returns signed area of the polygon.\n * @param points An array that represents points of the polygon.\n * @param options Parameters of the polygon.\n * @returns Signed area of the polygon.\n * https://en.wikipedia.org/wiki/Shoelace_formula\n */\nexport function getPolygonSignedArea(points: NumericArray, options: PolygonParams = {}): number {\n const {start = 0, end = points.length} = options;\n const dim = options.size || 2;\n let area = 0;\n for (let i = start, j = end - dim; i < end; i += dim) {\n area += (points[i] - points[j]) * (points[i + 1] + points[j + 1]);\n j = i;\n }\n return area / 2;\n}\n\n/**\n * Calls the visitor callback for each segment in the polygon.\n * @param points An array that represents points of the polygon\n * @param visitor A callback to call for each segment.\n * @param options Parameters of the polygon.\n */\nexport function forEachSegmentInPolygon(\n points: NumericArray,\n visitor: SegmentVisitorFlat,\n options: PolygonParams = {}\n): void {\n const {start = 0, end = points.length, size = 2, isClosed} = options;\n\n const numPoints = (end - start) / size;\n for (let i = 0; i < numPoints - 1; ++i) {\n visitor(\n points[start + i * size],\n points[start + i * size + 1],\n points[start + (i + 1) * size],\n points[start + (i + 1) * size + 1],\n i,\n i + 1\n );\n }\n\n const endPointIndex = start + (numPoints - 1) * size;\n const isClosedEx =\n isClosed ||\n (equals(points[start], points[endPointIndex]) &&\n equals(points[start + 1], points[endPointIndex + 1]));\n\n if (!isClosedEx) {\n visitor(\n points[endPointIndex],\n points[endPointIndex + 1],\n points[start],\n points[start + 1],\n numPoints - 1,\n 0\n );\n }\n}\n\nfunction reversePolygon(\n points: NumericArray,\n options: {start?: number; end?: number; size?: number}\n): void {\n const {start = 0, end = points.length, size = 2} = options;\n\n const numPoints = (end - start) / size;\n const numSwaps = Math.floor(numPoints / 2);\n for (let i = 0; i < numSwaps; ++i) {\n const b1 = start + i * size;\n const b2 = start + (numPoints - 1 - i) * size;\n for (let j = 0; j < size; ++j) {\n const tmp = points[b1 + j];\n points[b1 + j] = points[b2 + j];\n points[b2 + j] = tmp;\n }\n }\n}\n\n/**\n * Checks winding direction of the polygon and reverses the polygon in case of opposite winding direction.\n * Note: points are modified in-place.\n * @param points Array of points that represent the polygon.\n * @param direction Requested winding direction. 1 is for clockwise, -1 for counterclockwise winding direction.\n * @param options Parameters of the polygon.\n * @return Returns true if the winding direction was changed.\n */\nexport function modifyPolygonWindingDirectionPoints(\n points: PointsArray,\n direction: number,\n options: PolygonParams = {}\n): boolean {\n const currentDirection = getPolygonWindingDirectionPoints(points, options);\n if (currentDirection !== direction) {\n points.reverse();\n return true;\n }\n return false;\n}\n\n/**\n * Returns winding direction of the polygon.\n * @param points Array of points that represent the polygon.\n * @param options Parameters of the polygon.\n * @returns Winding direction of the polygon.\n */\nexport function getPolygonWindingDirectionPoints(\n points: PointsArray,\n options: PolygonParams = {}\n): number {\n return Math.sign(getPolygonSignedAreaPoints(points, options));\n}\n\n/**\n * Returns signed area of the polygon.\n * @param points Array of points that represent the polygon.\n * @param options Parameters of the polygon.\n * @returns Signed area of the polygon.\n */\nexport function getPolygonSignedAreaPoints(\n points: PointsArray,\n options: PolygonParams = {}\n): number {\n // https://en.wikipedia.org/wiki/Shoelace_formula\n const {start = 0, end = points.length} = options;\n let area = 0;\n for (let i = start, j = end - 1; i < end; ++i) {\n area += (points[i][0] - points[j][0]) * (points[i][1] + points[j][1]);\n j = i;\n }\n return area / 2;\n}\n\n/**\n * Calls visitor callback for each segment in the polygon.\n * @param points Array of points that represent the polygon.\n * @param visitor A callback to call for each segment.\n * @param options Parameters of the polygon.\n */\nexport function forEachSegmentInPolygonPoints(\n points: PointsArray,\n visitor: SegmentVisitorPoints,\n options: PolygonParams = {}\n): void {\n const {start = 0, end = points.length, isClosed} = options;\n for (let i = start; i < end - 1; ++i) {\n visitor(points[i], points[i + 1], i, i + 1);\n }\n\n const isClosedEx = isClosed || equals(points[end - 1], points[0]);\n if (!isClosedEx) {\n visitor(points[end - 1], points[0], end - 1, 0);\n }\n}\n","import { getPolygonSignedArea } from './polygon-utils';\nexport function earcut(positions, holeIndices, dim = 2, areas) {\n const hasHoles = holeIndices && holeIndices.length;\n const outerLen = hasHoles ? holeIndices[0] * dim : positions.length;\n let outerNode = linkedList(positions, 0, outerLen, dim, true, areas && areas[0]);\n const triangles = [];\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n let invSize;\n let maxX;\n let maxY;\n let minX;\n let minY;\n let x;\n let y;\n if (hasHoles) outerNode = eliminateHoles(positions, holeIndices, outerNode, dim, areas);\n\n if (positions.length > 80 * dim) {\n minX = maxX = positions[0];\n minY = maxY = positions[1];\n\n for (let i = dim; i < outerLen; i += dim) {\n x = positions[i];\n y = positions[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n return triangles;\n}\n\nfunction linkedList(data, start, end, dim, clockwise, area) {\n let i;\n let last;\n\n if (area === undefined) {\n area = getPolygonSignedArea(data, {\n start,\n end,\n size: dim\n });\n }\n\n if (clockwise === area < 0) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n let p = start;\n let again;\n\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n let stop = ear;\n let prev;\n let next;\n\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n removeNode(ear);\n ear = next.next;\n stop = next.next;\n continue;\n }\n\n ear = next;\n\n if (ear === stop) {\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\nfunction isEar(ear) {\n const a = ear.prev;\n const b = ear;\n const c = ear.next;\n if (area(a, b, c) >= 0) return false;\n let p = ear.next.next;\n\n while (p !== ear.prev) {\n if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n const a = ear.prev;\n const b = ear;\n const c = ear.next;\n if (area(a, b, c) >= 0) return false;\n const minTX = a.x < b.x ? a.x < c.x ? a.x : c.x : b.x < c.x ? b.x : c.x;\n const minTY = a.y < b.y ? a.y < c.y ? a.y : c.y : b.y < c.y ? b.y : c.y;\n const maxTX = a.x > b.x ? a.x > c.x ? a.x : c.x : b.x > c.x ? b.x : c.x;\n const maxTY = a.y > b.y ? a.y > c.y ? a.y : c.y : b.y > c.y ? b.y : c.y;\n const minZ = zOrder(minTX, minTY, minX, minY, invSize);\n const maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n let p = ear.prevZ;\n let n = ear.nextZ;\n\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n while (p && p.z >= minZ) {\n if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n while (n && n.z <= maxZ) {\n if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\nfunction cureLocalIntersections(start, triangles, dim) {\n let p = start;\n\n do {\n const a = p.prev;\n const b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n removeNode(p);\n removeNode(p.next);\n p = start = b;\n }\n\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n let a = start;\n\n do {\n let b = a.next.next;\n\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n let c = splitPolygon(a, b);\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n earcutLinked(a, triangles, dim, minX, minY, invSize);\n earcutLinked(c, triangles, dim, minX, minY, invSize);\n return;\n }\n\n b = b.next;\n }\n\n a = a.next;\n } while (a !== start);\n}\n\nfunction eliminateHoles(data, holeIndices, outerNode, dim, areas) {\n const queue = [];\n let i;\n let len;\n let start;\n let end;\n let list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false, areas && areas[i + 1]);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n for (i = 0; i < queue.length; i++) {\n eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\nfunction eliminateHole(hole, outerNode) {\n outerNode = findHoleBridge(hole, outerNode);\n\n if (outerNode) {\n const b = splitPolygon(outerNode, hole);\n filterPoints(outerNode, outerNode.next);\n filterPoints(b, b.next);\n }\n}\n\nfunction findHoleBridge(hole, outerNode) {\n let p = outerNode;\n const hx = hole.x;\n const hy = hole.y;\n let qx = -Infinity;\n let m;\n\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n\n if (x <= hx && x > qx) {\n qx = x;\n\n if (x === hx) {\n if (hy === p.y) return p;\n if (hy === p.next.y) return p.next;\n }\n\n m = p.x < p.next.x ? p : p.next;\n }\n }\n\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n if (hx === qx) return m;\n const stop = m;\n const mx = m.x;\n const my = m.y;\n let tanMin = Infinity;\n let tan;\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n tan = Math.abs(hy - p.y) / (hx - p.x);\n\n if (locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector(m, p)))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\nfunction indexCurve(start, minX, minY, invSize) {\n let p = start;\n\n do {\n if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n sortLinked(p);\n}\n\nfunction sortLinked(list) {\n let e;\n let i;\n let inSize = 1;\n let numMerges;\n let p;\n let pSize;\n let q;\n let qSize;\n let tail;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n\n qSize = inSize;\n\n while (pSize > 0 || qSize > 0 && q) {\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;else list = e;\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n } while (numMerges > 1);\n\n return list;\n}\n\nfunction zOrder(x, y, minX, minY, invSize) {\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n x = (x | x << 8) & 0x00ff00ff;\n x = (x | x << 4) & 0x0f0f0f0f;\n x = (x | x << 2) & 0x33333333;\n x = (x | x << 1) & 0x55555555;\n y = (y | y << 8) & 0x00ff00ff;\n y = (y | y << 4) & 0x0f0f0f0f;\n y = (y | y << 2) & 0x33333333;\n y = (y | y << 1) & 0x55555555;\n return x | y << 1;\n}\n\nfunction getLeftmost(start) {\n let p = start;\n let leftmost = start;\n\n do {\n if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 && (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 && (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && (area(a.prev, a, b.prev) || area(a, b.prev, b)) || equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0);\n}\n\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\nfunction intersects(p1, q1, p2, q2) {\n const o1 = sign(area(p1, q1, p2));\n const o2 = sign(area(p1, q1, q2));\n const o3 = sign(area(p2, q2, p1));\n const o4 = sign(area(p2, q2, q1));\n if (o1 !== o2 && o3 !== o4) return true;\n if (o1 === 0 && onSegment(p1, p2, q1)) return true;\n if (o2 === 0 && onSegment(p1, q2, q1)) return true;\n if (o3 === 0 && onSegment(p2, p1, q2)) return true;\n if (o4 === 0 && onSegment(p2, q1, q2)) return true;\n return false;\n}\n\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\nfunction intersectsPolygon(a, b) {\n let p = a;\n\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\nfunction middleInside(a, b) {\n let p = a;\n let inside = false;\n const px = (a.x + b.x) / 2;\n const py = (a.y + b.y) / 2;\n\n do {\n if (p.y > py !== p.next.y > py && p.next.y !== p.y && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x) inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\nfunction splitPolygon(a, b) {\n const a2 = new Node(a.i, a.x, a.y);\n const b2 = new Node(b.i, b.x, b.y);\n const an = a.next;\n const bp = b.prev;\n a.next = b;\n b.prev = a;\n a2.next = an;\n an.prev = a2;\n b2.next = a2;\n a2.prev = b2;\n bp.next = b2;\n b2.prev = bp;\n return b2;\n}\n\nfunction insertNode(i, x, y, last) {\n const p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n this.i = i;\n this.x = x;\n this.y = y;\n this.prev = null;\n this.next = null;\n this.z = null;\n this.prevZ = null;\n this.nextZ = null;\n this.steiner = false;\n}\n//# sourceMappingURL=earcut.js.map","/*\n Adapted from https://github.com/mapbox/earcut to allow passing in\n of outline and hole areas using the `areas` parameter. As the\n areas are calcuted as part of classifying the polygon rings\n we can pass them in again to avoid recomputation\n\n ISC License\n\n Copyright (c) 2016, Mapbox\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n\n */\n\n/* eslint-disable */\n\nimport {getPolygonSignedArea} from './polygon-utils';\n\n/**\n * Computes a triangulation of a polygon\n * @param positions a flat array of the vertex positions that define the polygon.\n * @param holeIndices an array of hole indices if any (e.g. [5, 8] for a 12-vertex input would mean one hole with vertices 5–7 and another with 8–11).\n * @param dim the number of elements in each vertex. Size `2` will interpret `positions` as `[x0, y0, x1, y1, ...]` and size `3` will interpret `positions` as `[x0, y0, z0, x1, y1, z1, ...]`. Default `2`.\n * @param areas areas of outer polygon and holes as computed by `getPolygonSignedArea()`. Can be optionally supplied to speed up triangulation\n * @returns array of indices into the `positions` array that describes the triangulation of the polygon\n * Adapted from https://github.com/mapbox/earcut\n */\nexport function earcut(\n positions: number[],\n holeIndices?: number[],\n dim: number = 2,\n areas?: number[]\n): number[] {\n const hasHoles = holeIndices && holeIndices.length;\n const outerLen = hasHoles ? holeIndices[0] * dim : positions.length;\n let outerNode = linkedList(positions, 0, outerLen, dim, true, areas && areas[0]);\n const triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n let invSize;\n let maxX;\n let maxY;\n let minX;\n let minY;\n let x;\n let y;\n\n if (hasHoles) outerNode = eliminateHoles(positions, holeIndices, outerNode, dim, areas);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (positions.length > 80 * dim) {\n minX = maxX = positions[0];\n minY = maxY = positions[1];\n\n for (let i = dim; i < outerLen; i += dim) {\n x = positions[i];\n y = positions[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise, area) {\n let i;\n let last;\n if (area === undefined) {\n area = getPolygonSignedArea(data, {start, end, size: dim});\n }\n\n // Note that the signed area calculation in math.gl\n // has the opposite sign to that which was originally\n // present in earcut, thus the `< 0` is reversed\n if (clockwise === area < 0) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end?) {\n if (!start) return start;\n if (!end) end = start;\n\n let p = start;\n let again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass?) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n let stop = ear;\n let prev;\n let next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n const a = ear.prev;\n const b = ear;\n const c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n let p = ear.next.next;\n\n while (p !== ear.prev) {\n if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0)\n return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n const a = ear.prev;\n const b = ear;\n const c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // triangle bbox; min & max are calculated like this for speed\n const minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : b.x < c.x ? b.x : c.x;\n const minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : b.y < c.y ? b.y : c.y;\n const maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : b.x > c.x ? b.x : c.x;\n const maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : b.y > c.y ? b.y : c.y;\n\n // z-order range for the current triangle bbox;\n const minZ = zOrder(minTX, minTY, minX, minY, invSize);\n const maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n let p = ear.prevZ;\n let n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (\n p !== ear.prev &&\n p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0\n )\n return false;\n p = p.prevZ;\n\n if (\n n !== ear.prev &&\n n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0\n )\n return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (\n p !== ear.prev &&\n p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0\n )\n return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (\n n !== ear.prev &&\n n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0\n )\n return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n let p = start;\n do {\n const a = p.prev;\n const b = p.next.next;\n\n if (\n !equals(a, b) &&\n intersects(a, p, p.next, b) &&\n locallyInside(a, b) &&\n locallyInside(b, a)\n ) {\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n let a = start;\n do {\n let b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n let c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize);\n earcutLinked(c, triangles, dim, minX, minY, invSize);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim, areas) {\n const queue = [];\n let i;\n let len;\n let start;\n let end;\n let list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false, areas && areas[i + 1]);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n outerNode = findHoleBridge(hole, outerNode);\n if (outerNode) {\n const b = splitPolygon(outerNode, hole);\n\n // filter collinear points around the cuts\n filterPoints(outerNode, outerNode.next);\n filterPoints(b, b.next);\n }\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n let p = outerNode;\n const hx = hole.x;\n const hy = hole.y;\n let qx = -Infinity;\n let m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n const x = p.x + ((hy - p.y) * (p.next.x - p.x)) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n if (x === hx) {\n if (hy === p.y) return p;\n if (hy === p.next.y) return p.next;\n }\n m = p.x < p.next.x ? p : p.next;\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n const stop = m;\n const mx = m.x;\n const my = m.y;\n let tanMin = Infinity;\n let tan;\n\n p = m;\n\n do {\n if (\n hx >= p.x &&\n p.x >= mx &&\n hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)\n ) {\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (\n locallyInside(p, hole) &&\n (tan < tanMin ||\n (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))\n ) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n let p = start;\n do {\n if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n let e;\n let i;\n let inSize = 1;\n let numMerges;\n let p;\n let pSize;\n let q;\n let qSize;\n let tail;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n\n x = (x | (x << 8)) & 0x00ff00ff;\n x = (x | (x << 4)) & 0x0f0f0f0f;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00ff00ff;\n y = (y | (y << 4)) & 0x0f0f0f0f;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n let p = start;\n let leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (\n (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0\n );\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return (\n a.next.i !== b.i &&\n a.prev.i !== b.i &&\n !intersectsPolygon(a, b) && // dones't intersect other edges\n ((locallyInside(a, b) &&\n locallyInside(b, a) &&\n middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b))) || // does not create opposite-facing sectors\n (equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0))\n ); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n const o1 = sign(area(p1, q1, p2));\n const o2 = sign(area(p1, q1, q2));\n const o3 = sign(area(p2, q2, p1));\n const o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return (\n q.x <= Math.max(p.x, r.x) &&\n q.x >= Math.min(p.x, r.x) &&\n q.y <= Math.max(p.y, r.y) &&\n q.y >= Math.min(p.y, r.y)\n );\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n let p = a;\n do {\n if (\n p.i !== a.i &&\n p.next.i !== a.i &&\n p.i !== b.i &&\n p.next.i !== b.i &&\n intersects(p, p.next, a, b)\n )\n return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0\n ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0\n : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n let p = a;\n let inside = false;\n const px = (a.x + b.x) / 2;\n const py = (a.y + b.y) / 2;\n do {\n if (\n p.y > py !== p.next.y > py &&\n p.next.y !== p.y &&\n px < ((p.next.x - p.x) * (py - p.y)) / (p.next.y - p.y) + p.x\n )\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n const a2 = new Node(a.i, a.x, a.y);\n const b2 = new Node(b.i, b.x, b.y);\n const an = a.next;\n const bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n const p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = null;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n","import { push, copy, getPointAtIndex } from './utils';\nexport function clipPolyline(positions, bbox, options) {\n const {\n size = 2,\n startIndex = 0,\n endIndex = positions.length\n } = options || {};\n const numPoints = (endIndex - startIndex) / size;\n const result = [];\n let part = [];\n let a;\n let b;\n let codeA = -1;\n let codeB;\n let lastCode;\n\n for (let i = 1; i < numPoints; i++) {\n a = getPointAtIndex(positions, i - 1, size, startIndex, a);\n b = getPointAtIndex(positions, i, size, startIndex, b);\n\n if (codeA < 0) {\n codeA = bitCode(a, bbox);\n }\n\n codeB = lastCode = bitCode(b, bbox);\n\n while (true) {\n if (!(codeA | codeB)) {\n push(part, a);\n\n if (codeB !== lastCode) {\n push(part, b);\n\n if (i < numPoints - 1) {\n result.push(part);\n part = [];\n }\n } else if (i === numPoints - 1) {\n push(part, b);\n }\n\n break;\n } else if (codeA & codeB) {\n break;\n } else if (codeA) {\n intersect(a, b, codeA, bbox, a);\n codeA = bitCode(a, bbox);\n } else {\n intersect(a, b, codeB, bbox, b);\n codeB = bitCode(b, bbox);\n }\n }\n\n codeA = lastCode;\n }\n\n if (part.length) result.push(part);\n return result;\n}\nexport function clipPolygon(positions, bbox, options) {\n const {\n size = 2,\n endIndex = positions.length\n } = options || {};\n let {\n startIndex = 0\n } = options || {};\n let numPoints = (endIndex - startIndex) / size;\n let result;\n let p;\n let prev;\n let inside;\n let prevInside;\n\n for (let edge = 1; edge <= 8; edge *= 2) {\n result = [];\n prev = getPointAtIndex(positions, numPoints - 1, size, startIndex, prev);\n prevInside = !(bitCode(prev, bbox) & edge);\n\n for (let i = 0; i < numPoints; i++) {\n p = getPointAtIndex(positions, i, size, startIndex, p);\n inside = !(bitCode(p, bbox) & edge);\n if (inside !== prevInside) push(result, intersect(prev, p, edge, bbox));\n if (inside) push(result, p);\n copy(prev, p);\n prevInside = inside;\n }\n\n positions = result;\n startIndex = 0;\n numPoints = result.length / size;\n if (!numPoints) break;\n }\n\n return result;\n}\nexport function intersect(a, b, edge, bbox, out = []) {\n let t;\n let snap;\n\n if (edge & 8) {\n t = (bbox[3] - a[1]) / (b[1] - a[1]);\n snap = 3;\n } else if (edge & 4) {\n t = (bbox[1] - a[1]) / (b[1] - a[1]);\n snap = 1;\n } else if (edge & 2) {\n t = (bbox[2] - a[0]) / (b[0] - a[0]);\n snap = 2;\n } else if (edge & 1) {\n t = (bbox[0] - a[0]) / (b[0] - a[0]);\n snap = 0;\n } else {\n return null;\n }\n\n for (let i = 0; i < a.length; i++) {\n out[i] = (snap & 1) === i ? bbox[snap] : t * (b[i] - a[i]) + a[i];\n }\n\n return out;\n}\nexport function bitCode(p, bbox) {\n let code = 0;\n if (p[0] < bbox[0]) code |= 1;else if (p[0] > bbox[2]) code |= 2;\n if (p[1] < bbox[1]) code |= 4;else if (p[1] > bbox[3]) code |= 8;\n return code;\n}\n//# sourceMappingURL=lineclip.js.map","/*\n Adapted from https://github.com/mapbox/lineclip to work with flat arrays\n and 3d positions\n\n ISC License\n\n Copyright (c) 2015, Mapbox\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n\n */\n\n/* eslint-disable max-statements, max-depth, complexity */\n\nimport {push, copy, getPointAtIndex} from './utils';\nimport type {NumericArray} from '@math.gl/core';\n\nexport type BoundingBox = [number, number, number, number];\n\n/**\n * Cohen-Sutherland line clipping algorithm, adapted to efficiently\n * handle polylines rather than just segments\n */\nexport function clipPolyline(\n positions: Readonly,\n bbox: BoundingBox,\n options?: {\n size?: number;\n startIndex?: number;\n endIndex?: number;\n }\n): number[][] {\n const {size = 2, startIndex = 0, endIndex = positions.length} = options || {};\n const numPoints = (endIndex - startIndex) / size;\n const result: number[][] = [];\n let part: number[] = [];\n let a: number[];\n let b: number[];\n let codeA: number = -1;\n let codeB: number;\n let lastCode: number;\n\n for (let i = 1; i < numPoints; i++) {\n a = getPointAtIndex(positions, i - 1, size, startIndex, a);\n b = getPointAtIndex(positions, i, size, startIndex, b);\n if (codeA < 0) {\n codeA = bitCode(a, bbox);\n }\n codeB = lastCode = bitCode(b, bbox);\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (!(codeA | codeB)) {\n // accept\n push(part, a);\n\n if (codeB !== lastCode) {\n // segment went outside\n push(part, b);\n\n if (i < numPoints - 1) {\n // start a new line\n result.push(part);\n part = [];\n }\n } else if (i === numPoints - 1) {\n push(part, b);\n }\n break;\n } else if (codeA & codeB) {\n // trivial reject\n break;\n } else if (codeA) {\n // a outside, intersect with clip edge\n intersect(a, b, codeA, bbox, a);\n codeA = bitCode(a, bbox);\n } else {\n // b outside\n intersect(a, b, codeB, bbox, b);\n codeB = bitCode(b, bbox);\n }\n }\n\n codeA = lastCode;\n }\n\n if (part.length) result.push(part);\n\n return result;\n}\n\n/**\n * Sutherland-Hodgeman polygon clipping algorithm\n * polygon must be closed (first vertex == last vertex)\n */\nexport function clipPolygon(\n positions: Readonly,\n bbox: BoundingBox,\n options?: {\n size?: number;\n startIndex?: number;\n endIndex?: number;\n }\n): number[] {\n const {size = 2, endIndex = positions.length} = options || {};\n let {startIndex = 0} = options || {};\n let numPoints = (endIndex - startIndex) / size;\n let result: number[];\n let p: number[];\n let prev: number[];\n let inside: boolean;\n let prevInside: boolean;\n\n // clip against each side of the clip rectangle\n for (let edge = 1; edge <= 8; edge *= 2) {\n result = [];\n prev = getPointAtIndex(positions, numPoints - 1, size, startIndex, prev);\n prevInside = !(bitCode(prev, bbox) & edge);\n\n for (let i = 0; i < numPoints; i++) {\n p = getPointAtIndex(positions, i, size, startIndex, p);\n inside = !(bitCode(p, bbox) & edge);\n\n // if segment goes through the clip window, add an intersection\n if (inside !== prevInside) push(result, intersect(prev, p, edge, bbox));\n\n if (inside) push(result, p); // add a point if it's inside\n\n copy(prev, p);\n prevInside = inside;\n }\n\n // close loop\n positions = result;\n startIndex = 0;\n numPoints = result.length / size;\n\n if (!numPoints) break;\n }\n\n return result;\n}\n\n/** intersect a segment against one of the 4 lines that make up the bbox */\n\nexport function intersect(\n a: number[],\n b: number[],\n edge: number,\n bbox: BoundingBox,\n out: number[] = []\n): number[] {\n let t;\n // Forces out[snapI] to be on the bbox edge\n // Interpolation introduces precision issue which may cause lineclip to be\n // stuck in an infinite loop\n let snap: number;\n if (edge & 8) {\n // top\n t = (bbox[3] - a[1]) / (b[1] - a[1]);\n snap = 3;\n } else if (edge & 4) {\n // bottom\n t = (bbox[1] - a[1]) / (b[1] - a[1]);\n snap = 1;\n } else if (edge & 2) {\n // right\n t = (bbox[2] - a[0]) / (b[0] - a[0]);\n snap = 2;\n } else if (edge & 1) {\n // left\n t = (bbox[0] - a[0]) / (b[0] - a[0]);\n snap = 0;\n } else {\n return null;\n }\n for (let i = 0; i < a.length; i++) {\n out[i] = (snap & 1) === i ? bbox[snap] : t * (b[i] - a[i]) + a[i];\n }\n return out;\n}\n\n/**\n * bit code reflects the point position relative to the bbox:\n * left mid right\n * top 1001 1000 1010\n * mid 0001 0000 0010\n * bottom 0101 0100 0110\n */\nexport function bitCode(p: number[], bbox: BoundingBox): number {\n let code = 0;\n\n if (p[0] < bbox[0]) code |= 1;\n // left\n else if (p[0] > bbox[2]) code |= 2; // right\n\n if (p[1] < bbox[1]) code |= 4;\n // bottom\n else if (p[1] > bbox[3]) code |= 8; // top\n\n return code;\n}\n","export function push(target, source) {\n const size = source.length;\n const startIndex = target.length;\n\n if (startIndex > 0) {\n let isDuplicate = true;\n\n for (let i = 0; i < size; i++) {\n if (target[startIndex - size + i] !== source[i]) {\n isDuplicate = false;\n break;\n }\n }\n\n if (isDuplicate) {\n return false;\n }\n }\n\n for (let i = 0; i < size; i++) {\n target[startIndex + i] = source[i];\n }\n\n return true;\n}\nexport function copy(target, source) {\n const size = source.length;\n\n for (let i = 0; i < size; i++) {\n target[i] = source[i];\n }\n}\nexport function getPointAtIndex(positions, index, size, offset, out = []) {\n const startI = offset + index * size;\n\n for (let i = 0; i < size; i++) {\n out[i] = positions[startI + i];\n }\n\n return out;\n}\n//# sourceMappingURL=utils.js.map","import type {NumericArray} from '@math.gl/core';\n\nexport function push(target: number[], source: number[]): boolean {\n const size = source.length;\n const startIndex = target.length;\n\n // dedupe, if source is the same point as the last vertex\n if (startIndex > 0) {\n let isDuplicate = true;\n for (let i = 0; i < size; i++) {\n if (target[startIndex - size + i] !== source[i]) {\n isDuplicate = false;\n break;\n }\n }\n if (isDuplicate) {\n return false;\n }\n }\n\n for (let i = 0; i < size; i++) {\n target[startIndex + i] = source[i];\n }\n return true;\n}\n\nexport function copy(target: number[], source: Readonly): void {\n const size = source.length;\n for (let i = 0; i < size; i++) {\n target[i] = source[i];\n }\n}\n\nexport function getPointAtIndex(\n positions: Readonly,\n index: number,\n size: number,\n offset: number,\n out: number[] = []\n): number[] {\n const startI = offset + index * size;\n for (let i = 0; i < size; i++) {\n out[i] = positions[startI + i];\n }\n return out;\n}\n","import { bitCode, intersect } from './lineclip';\nimport { getPointAtIndex, copy, push } from './utils';\nexport function cutPolylineByGrid(positions, options) {\n const {\n size = 2,\n broken = false,\n gridResolution = 10,\n gridOffset = [0, 0],\n startIndex = 0,\n endIndex = positions.length\n } = options || {};\n const numPoints = (endIndex - startIndex) / size;\n let part = [];\n const result = [part];\n const a = getPointAtIndex(positions, 0, size, startIndex);\n let b;\n let codeB;\n const cell = getGridCell(a, gridResolution, gridOffset, []);\n const scratchPoint = [];\n push(part, a);\n\n for (let i = 1; i < numPoints; i++) {\n b = getPointAtIndex(positions, i, size, startIndex, b);\n codeB = bitCode(b, cell);\n\n while (codeB) {\n intersect(a, b, codeB, cell, scratchPoint);\n const codeAlt = bitCode(scratchPoint, cell);\n\n if (codeAlt) {\n intersect(a, scratchPoint, codeAlt, cell, scratchPoint);\n codeB = codeAlt;\n }\n\n push(part, scratchPoint);\n copy(a, scratchPoint);\n moveToNeighborCell(cell, gridResolution, codeB);\n\n if (broken && part.length > size) {\n part = [];\n result.push(part);\n push(part, a);\n }\n\n codeB = bitCode(b, cell);\n }\n\n push(part, b);\n copy(a, b);\n }\n\n return broken ? result : result[0];\n}\nconst TYPE_INSIDE = 0;\nconst TYPE_BORDER = 1;\n\nfunction concatInPlace(arr1, arr2) {\n for (let i = 0; i < arr2.length; i++) {\n arr1.push(arr2[i]);\n }\n\n return arr1;\n}\n\nexport function cutPolygonByGrid(positions, holeIndices = null, options) {\n if (!positions.length) {\n return [];\n }\n\n const {\n size = 2,\n gridResolution = 10,\n gridOffset = [0, 0],\n edgeTypes = false\n } = options || {};\n const result = [];\n const queue = [{\n pos: positions,\n types: edgeTypes ? new Array(positions.length / size).fill(TYPE_BORDER) : null,\n holes: holeIndices || []\n }];\n const bbox = [[], []];\n let cell = [];\n\n while (queue.length) {\n const {\n pos,\n types,\n holes\n } = queue.shift();\n getBoundingBox(pos, size, holes[0] || pos.length, bbox);\n cell = getGridCell(bbox[0], gridResolution, gridOffset, cell);\n const code = bitCode(bbox[1], cell);\n\n if (code) {\n let parts = bisectPolygon(pos, types, size, 0, holes[0] || pos.length, cell, code);\n const polygonLow = {\n pos: parts[0].pos,\n types: parts[0].types,\n holes: []\n };\n const polygonHigh = {\n pos: parts[1].pos,\n types: parts[1].types,\n holes: []\n };\n queue.push(polygonLow, polygonHigh);\n\n for (let i = 0; i < holes.length; i++) {\n parts = bisectPolygon(pos, types, size, holes[i], holes[i + 1] || pos.length, cell, code);\n\n if (parts[0]) {\n polygonLow.holes.push(polygonLow.pos.length);\n polygonLow.pos = concatInPlace(polygonLow.pos, parts[0].pos);\n\n if (edgeTypes) {\n polygonLow.types = concatInPlace(polygonLow.types, parts[0].types);\n }\n }\n\n if (parts[1]) {\n polygonHigh.holes.push(polygonHigh.pos.length);\n polygonHigh.pos = concatInPlace(polygonHigh.pos, parts[1].pos);\n\n if (edgeTypes) {\n polygonHigh.types = concatInPlace(polygonHigh.types, parts[1].types);\n }\n }\n }\n } else {\n const polygon = {\n positions: pos\n };\n\n if (edgeTypes) {\n polygon.edgeTypes = types;\n }\n\n if (holes.length) {\n polygon.holeIndices = holes;\n }\n\n result.push(polygon);\n }\n }\n\n return result;\n}\n\nfunction bisectPolygon(positions, edgeTypes, size, startIndex, endIndex, bbox, edge) {\n const numPoints = (endIndex - startIndex) / size;\n const resultLow = [];\n const resultHigh = [];\n const typesLow = [];\n const typesHigh = [];\n const scratchPoint = [];\n let p;\n let side;\n let type;\n const prev = getPointAtIndex(positions, numPoints - 1, size, startIndex);\n let prevSide = Math.sign(edge & 8 ? prev[1] - bbox[3] : prev[0] - bbox[2]);\n let prevType = edgeTypes && edgeTypes[numPoints - 1];\n let lowPointCount = 0;\n let highPointCount = 0;\n\n for (let i = 0; i < numPoints; i++) {\n p = getPointAtIndex(positions, i, size, startIndex, p);\n side = Math.sign(edge & 8 ? p[1] - bbox[3] : p[0] - bbox[2]);\n type = edgeTypes && edgeTypes[startIndex / size + i];\n\n if (side && prevSide && prevSide !== side) {\n intersect(prev, p, edge, bbox, scratchPoint);\n push(resultLow, scratchPoint) && typesLow.push(prevType);\n push(resultHigh, scratchPoint) && typesHigh.push(prevType);\n }\n\n if (side <= 0) {\n push(resultLow, p) && typesLow.push(type);\n lowPointCount -= side;\n } else if (typesLow.length) {\n typesLow[typesLow.length - 1] = TYPE_INSIDE;\n }\n\n if (side >= 0) {\n push(resultHigh, p) && typesHigh.push(type);\n highPointCount += side;\n } else if (typesHigh.length) {\n typesHigh[typesHigh.length - 1] = TYPE_INSIDE;\n }\n\n copy(prev, p);\n prevSide = side;\n prevType = type;\n }\n\n return [lowPointCount ? {\n pos: resultLow,\n types: edgeTypes && typesLow\n } : null, highPointCount ? {\n pos: resultHigh,\n types: edgeTypes && typesHigh\n } : null];\n}\n\nfunction getGridCell(p, gridResolution, gridOffset, out) {\n const left = Math.floor((p[0] - gridOffset[0]) / gridResolution) * gridResolution + gridOffset[0];\n const bottom = Math.floor((p[1] - gridOffset[1]) / gridResolution) * gridResolution + gridOffset[1];\n out[0] = left;\n out[1] = bottom;\n out[2] = left + gridResolution;\n out[3] = bottom + gridResolution;\n return out;\n}\n\nfunction moveToNeighborCell(cell, gridResolution, edge) {\n if (edge & 8) {\n cell[1] += gridResolution;\n cell[3] += gridResolution;\n } else if (edge & 4) {\n cell[1] -= gridResolution;\n cell[3] -= gridResolution;\n } else if (edge & 2) {\n cell[0] += gridResolution;\n cell[2] += gridResolution;\n } else if (edge & 1) {\n cell[0] -= gridResolution;\n cell[2] -= gridResolution;\n }\n}\n\nfunction getBoundingBox(positions, size, endIndex, out) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n\n for (let i = 0; i < endIndex; i += size) {\n const x = positions[i];\n const y = positions[i + 1];\n minX = x < minX ? x : minX;\n maxX = x > maxX ? x : maxX;\n minY = y < minY ? y : minY;\n maxY = y > maxY ? y : maxY;\n }\n\n out[0][0] = minX;\n out[0][1] = minY;\n out[1][0] = maxX;\n out[1][1] = maxY;\n return out;\n}\n//# sourceMappingURL=cut-by-grid.js.map","/* eslint-disable max-statements, max-depth, complexity, no-unused-expressions */\nimport {bitCode, intersect, BoundingBox} from './lineclip';\nimport {getPointAtIndex, copy, push} from './utils';\n\nimport type {NumericArray} from '@math.gl/core';\n\nexport type Polygon = {\n positions: Readonly;\n holeIndices?: Readonly;\n edgeTypes?: Readonly;\n};\n\nexport function cutPolylineByGrid(\n positions: NumericArray,\n options?: {\n size?: number;\n broken?: boolean;\n gridResolution?: number;\n gridOffset?: [number, number];\n startIndex?: number;\n endIndex?: number;\n }\n): number[] | number[][] {\n const {\n size = 2,\n broken = false,\n gridResolution = 10,\n gridOffset = [0, 0],\n startIndex = 0,\n endIndex = positions.length\n } = options || {};\n const numPoints = (endIndex - startIndex) / size;\n let part: number[] = [];\n const result: number[][] = [part];\n const a: number[] = getPointAtIndex(positions, 0, size, startIndex);\n let b: number[];\n let codeB: number;\n const cell: BoundingBox = getGridCell(a, gridResolution, gridOffset, []);\n const scratchPoint: number[] = [];\n push(part, a);\n\n for (let i = 1; i < numPoints; i++) {\n b = getPointAtIndex(positions, i, size, startIndex, b);\n codeB = bitCode(b, cell);\n\n while (codeB) {\n // find the intersection with the current cell\n intersect(a, b, codeB, cell, scratchPoint);\n const codeAlt = bitCode(scratchPoint, cell);\n if (codeAlt) {\n intersect(a, scratchPoint, codeAlt, cell, scratchPoint);\n codeB = codeAlt;\n }\n push(part, scratchPoint);\n // move to the next cell\n copy(a, scratchPoint);\n\n moveToNeighborCell(cell, gridResolution, codeB);\n if (broken && part.length > size) {\n part = [];\n result.push(part);\n push(part, a);\n }\n\n codeB = bitCode(b, cell);\n }\n\n push(part, b);\n copy(a, b);\n }\n\n return broken ? result : result[0];\n}\n\nconst TYPE_INSIDE = 0;\nconst TYPE_BORDER = 1;\n\nfunction concatInPlace(arr1: number[], arr2: number[]): number[] {\n for (let i = 0; i < arr2.length; i++) {\n arr1.push(arr2[i]);\n }\n return arr1;\n}\n\nexport function cutPolygonByGrid(\n positions: Readonly,\n holeIndices: Readonly | null = null,\n options?: {\n size?: number;\n gridResolution?: number;\n gridOffset?: [number, number];\n edgeTypes?: boolean;\n }\n): Polygon[] {\n if (!positions.length) {\n // input is empty\n return [];\n }\n const {size = 2, gridResolution = 10, gridOffset = [0, 0], edgeTypes = false} = options || {};\n const result: Polygon[] = [];\n const queue: {pos: Readonly; types: number[]; holes: Readonly}[] = [\n {\n pos: positions,\n types: edgeTypes ? (new Array(positions.length / size).fill(TYPE_BORDER) as number[]) : null,\n holes: holeIndices || []\n }\n ];\n const bbox: number[][] = [[], []];\n // @ts-ignore\n let cell: BoundingBox = [];\n\n // Recursively bisect polygon until every part fit in a single grid cell\n while (queue.length) {\n const {pos, types, holes} = queue.shift();\n\n // Get the bounding box of the outer polygon\n getBoundingBox(pos, size, holes[0] || pos.length, bbox);\n cell = getGridCell(bbox[0], gridResolution, gridOffset, cell);\n const code = bitCode(bbox[1], cell);\n\n if (code) {\n // Split the outer ring at the boundary\n let parts = bisectPolygon(pos, types, size, 0, holes[0] || pos.length, cell, code);\n const polygonLow = {pos: parts[0].pos, types: parts[0].types, holes: []};\n const polygonHigh = {pos: parts[1].pos, types: parts[1].types, holes: []};\n queue.push(polygonLow, polygonHigh);\n\n // Split each hole at the boundary\n for (let i = 0; i < holes.length; i++) {\n parts = bisectPolygon(pos, types, size, holes[i], holes[i + 1] || pos.length, cell, code);\n\n if (parts[0]) {\n polygonLow.holes.push(polygonLow.pos.length);\n polygonLow.pos = concatInPlace(polygonLow.pos, parts[0].pos);\n if (edgeTypes) {\n polygonLow.types = concatInPlace(polygonLow.types, parts[0].types);\n }\n }\n if (parts[1]) {\n polygonHigh.holes.push(polygonHigh.pos.length);\n polygonHigh.pos = concatInPlace(polygonHigh.pos, parts[1].pos);\n if (edgeTypes) {\n polygonHigh.types = concatInPlace(polygonHigh.types, parts[1].types);\n }\n }\n }\n } else {\n // Polygon fits in a single cell, no more processing required\n const polygon: Polygon = {positions: pos};\n if (edgeTypes) {\n polygon.edgeTypes = types;\n }\n if (holes.length) {\n polygon.holeIndices = holes;\n }\n\n result.push(polygon);\n }\n }\n return result;\n}\n\n// edgeTypes:\n// TYPE_BORDER - edge from the original polygon\n// TYPE_INSIDE - inside the original polygon\n// eslint-disable-next-line max-params\nfunction bisectPolygon(\n positions: Readonly,\n edgeTypes: number[] | undefined,\n size: number,\n startIndex: number,\n endIndex: number,\n bbox: BoundingBox,\n edge: number\n): {\n pos: number[];\n types?: number[];\n}[] {\n const numPoints = (endIndex - startIndex) / size;\n const resultLow: number[] = [];\n const resultHigh: number[] = [];\n const typesLow: number[] = [];\n const typesHigh: number[] = [];\n const scratchPoint: number[] = [];\n\n let p: number[];\n let side: number;\n let type: number;\n const prev = getPointAtIndex(positions, numPoints - 1, size, startIndex);\n let prevSide = Math.sign(edge & 8 ? prev[1] - bbox[3] : prev[0] - bbox[2]);\n let prevType = edgeTypes && edgeTypes[numPoints - 1];\n let lowPointCount = 0;\n let highPointCount = 0;\n\n for (let i = 0; i < numPoints; i++) {\n p = getPointAtIndex(positions, i, size, startIndex, p);\n side = Math.sign(edge & 8 ? p[1] - bbox[3] : p[0] - bbox[2]);\n type = edgeTypes && edgeTypes[startIndex / size + i];\n\n // if segment goes through the boundary, add an intersection\n if (side && prevSide && prevSide !== side) {\n intersect(prev, p, edge, bbox, scratchPoint);\n push(resultLow, scratchPoint) && typesLow.push(prevType);\n push(resultHigh, scratchPoint) && typesHigh.push(prevType);\n }\n\n if (side <= 0) {\n push(resultLow, p) && typesLow.push(type);\n lowPointCount -= side;\n } else if (typesLow.length) {\n typesLow[typesLow.length - 1] = TYPE_INSIDE;\n }\n if (side >= 0) {\n push(resultHigh, p) && typesHigh.push(type);\n highPointCount += side;\n } else if (typesHigh.length) {\n typesHigh[typesHigh.length - 1] = TYPE_INSIDE;\n }\n\n copy(prev, p);\n prevSide = side;\n prevType = type;\n }\n\n return [\n lowPointCount ? {pos: resultLow, types: edgeTypes && typesLow} : null,\n highPointCount ? {pos: resultHigh, types: edgeTypes && typesHigh} : null\n ];\n}\n\nfunction getGridCell(\n p: number[],\n gridResolution: number,\n gridOffset: [number, number],\n out: number[]\n): BoundingBox {\n const left = Math.floor((p[0] - gridOffset[0]) / gridResolution) * gridResolution + gridOffset[0];\n const bottom =\n Math.floor((p[1] - gridOffset[1]) / gridResolution) * gridResolution + gridOffset[1];\n out[0] = left;\n out[1] = bottom;\n out[2] = left + gridResolution;\n out[3] = bottom + gridResolution;\n return out as BoundingBox;\n}\n\nfunction moveToNeighborCell(cell: number[], gridResolution: number, edge: number): void {\n if (edge & 8) {\n // top\n cell[1] += gridResolution;\n cell[3] += gridResolution;\n } else if (edge & 4) {\n // bottom\n cell[1] -= gridResolution;\n cell[3] -= gridResolution;\n } else if (edge & 2) {\n // right\n cell[0] += gridResolution;\n cell[2] += gridResolution;\n } else if (edge & 1) {\n // left\n cell[0] -= gridResolution;\n cell[2] -= gridResolution;\n }\n}\n\nfunction getBoundingBox(\n positions: Readonly,\n size: number,\n endIndex: number,\n out: number[][]\n): number[][] {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n\n for (let i = 0; i < endIndex; i += size) {\n const x = positions[i];\n const y = positions[i + 1];\n minX = x < minX ? x : minX;\n maxX = x > maxX ? x : maxX;\n minY = y < minY ? y : minY;\n maxY = y > maxY ? y : maxY;\n }\n\n out[0][0] = minX;\n out[0][1] = minY;\n out[1][0] = maxX;\n out[1][1] = maxY;\n return out;\n}\n","import { cutPolylineByGrid, cutPolygonByGrid } from './cut-by-grid';\nimport { getPointAtIndex, push } from './utils';\nconst DEFAULT_MAX_LATITUDE = 85.051129;\nexport function cutPolylineByMercatorBounds(positions, options) {\n const {\n size = 2,\n startIndex = 0,\n endIndex = positions.length,\n normalize = true\n } = options || {};\n const newPositions = positions.slice(startIndex, endIndex);\n wrapLongitudesForShortestPath(newPositions, size, 0, endIndex - startIndex);\n const parts = cutPolylineByGrid(newPositions, {\n size,\n broken: true,\n gridResolution: 360,\n gridOffset: [-180, -180]\n });\n\n if (normalize) {\n for (const part of parts) {\n shiftLongitudesIntoRange(part, size);\n }\n }\n\n return parts;\n}\nexport function cutPolygonByMercatorBounds(positions, holeIndices = null, options) {\n const {\n size = 2,\n normalize = true,\n edgeTypes = false\n } = options || {};\n holeIndices = holeIndices || [];\n const newPositions = [];\n const newHoleIndices = [];\n let srcStartIndex = 0;\n let targetIndex = 0;\n\n for (let ringIndex = 0; ringIndex <= holeIndices.length; ringIndex++) {\n const srcEndIndex = holeIndices[ringIndex] || positions.length;\n const targetStartIndex = targetIndex;\n const splitIndex = findSplitIndex(positions, size, srcStartIndex, srcEndIndex);\n\n for (let i = splitIndex; i < srcEndIndex; i++) {\n newPositions[targetIndex++] = positions[i];\n }\n\n for (let i = srcStartIndex; i < splitIndex; i++) {\n newPositions[targetIndex++] = positions[i];\n }\n\n wrapLongitudesForShortestPath(newPositions, size, targetStartIndex, targetIndex);\n insertPoleVertices(newPositions, size, targetStartIndex, targetIndex, options === null || options === void 0 ? void 0 : options.maxLatitude);\n srcStartIndex = srcEndIndex;\n newHoleIndices[ringIndex] = targetIndex;\n }\n\n newHoleIndices.pop();\n const parts = cutPolygonByGrid(newPositions, newHoleIndices, {\n size,\n gridResolution: 360,\n gridOffset: [-180, -180],\n edgeTypes\n });\n\n if (normalize) {\n for (const part of parts) {\n shiftLongitudesIntoRange(part.positions, size);\n }\n }\n\n return parts;\n}\n\nfunction findSplitIndex(positions, size, startIndex, endIndex) {\n let maxLat = -1;\n let pointIndex = -1;\n\n for (let i = startIndex + 1; i < endIndex; i += size) {\n const lat = Math.abs(positions[i]);\n\n if (lat > maxLat) {\n maxLat = lat;\n pointIndex = i - 1;\n }\n }\n\n return pointIndex;\n}\n\nfunction insertPoleVertices(positions, size, startIndex, endIndex, maxLatitude = DEFAULT_MAX_LATITUDE) {\n const firstLng = positions[startIndex];\n const lastLng = positions[endIndex - size];\n\n if (Math.abs(firstLng - lastLng) > 180) {\n const p = getPointAtIndex(positions, 0, size, startIndex);\n p[0] += Math.round((lastLng - firstLng) / 360) * 360;\n push(positions, p);\n p[1] = Math.sign(p[1]) * maxLatitude;\n push(positions, p);\n p[0] = firstLng;\n push(positions, p);\n }\n}\n\nfunction wrapLongitudesForShortestPath(positions, size, startIndex, endIndex) {\n let prevLng = positions[0];\n let lng;\n\n for (let i = startIndex; i < endIndex; i += size) {\n lng = positions[i];\n const delta = lng - prevLng;\n\n if (delta > 180 || delta < -180) {\n lng -= Math.round(delta / 360) * 360;\n }\n\n positions[i] = prevLng = lng;\n }\n}\n\nfunction shiftLongitudesIntoRange(positions, size) {\n let refLng;\n const pointCount = positions.length / size;\n\n for (let i = 0; i < pointCount; i++) {\n refLng = positions[i * size];\n\n if ((refLng + 180) % 360 !== 0) {\n break;\n }\n }\n\n const delta = -Math.round(refLng / 360) * 360;\n\n if (delta === 0) {\n return;\n }\n\n for (let i = 0; i < pointCount; i++) {\n positions[i * size] += delta;\n }\n}\n//# sourceMappingURL=cut-by-mercator-bounds.js.map","import {cutPolylineByGrid, cutPolygonByGrid} from './cut-by-grid';\nimport {getPointAtIndex, push} from './utils';\nimport type {Polygon} from './cut-by-grid';\nimport type {NumericArray} from '@math.gl/core';\n\n// https://en.wikipedia.org/wiki/Web_Mercator_projection\nconst DEFAULT_MAX_LATITUDE = 85.051129;\n\n/** https://user-images.githubusercontent.com/2059298/78465769-938b7a00-76ae-11ea-9b95-1f4c26425ab9.png */\nexport function cutPolylineByMercatorBounds(\n positions: Readonly,\n options?: {\n size?: number;\n startIndex?: number;\n endIndex?: number;\n normalize?: boolean;\n }\n): number[][] {\n const {size = 2, startIndex = 0, endIndex = positions.length, normalize = true} = options || {};\n\n // Remap longitudes so that each segment takes the shorter path\n const newPositions = positions.slice(startIndex, endIndex);\n wrapLongitudesForShortestPath(newPositions, size, 0, endIndex - startIndex);\n\n const parts = cutPolylineByGrid(newPositions, {\n size,\n broken: true,\n gridResolution: 360,\n gridOffset: [-180, -180]\n }) as number[][];\n\n if (normalize) {\n // Each part is guaranteed to be in a single copy of the world\n // Map longitudes back to [-180, 180]\n for (const part of parts) {\n shiftLongitudesIntoRange(part, size);\n }\n }\n return parts;\n}\n\n/** https://user-images.githubusercontent.com/2059298/78465770-94241080-76ae-11ea-809a-6a8534dac1d9.png */\nexport function cutPolygonByMercatorBounds(\n positions: Readonly,\n holeIndices: Readonly | null = null,\n options?: {\n size?: number;\n normalize?: boolean;\n maxLatitude?: number;\n edgeTypes?: boolean;\n }\n): Polygon[] {\n const {size = 2, normalize = true, edgeTypes = false} = options || {};\n holeIndices = holeIndices || [];\n const newPositions: number[] = [];\n const newHoleIndices: number[] = [];\n let srcStartIndex = 0;\n let targetIndex = 0;\n\n for (let ringIndex = 0; ringIndex <= holeIndices.length; ringIndex++) {\n // srcStartIndex/srcEndIndex define the ring in the original positions\n const srcEndIndex = holeIndices[ringIndex] || positions.length;\n // targetStartIndex/targetIndex define the ring in newPositions\n const targetStartIndex = targetIndex;\n\n // In case the ring contains a pole (e.g. Antarctica), we'll have to insert vertices\n // The insertion point is defined by the vertex closest to the pole\n // Split the the ring by the insertion point when copying to newPositions\n const splitIndex = findSplitIndex(positions, size, srcStartIndex, srcEndIndex);\n for (let i = splitIndex; i < srcEndIndex; i++) {\n newPositions[targetIndex++] = positions[i];\n }\n for (let i = srcStartIndex; i < splitIndex; i++) {\n newPositions[targetIndex++] = positions[i];\n }\n\n // Remap longitudes so that each segment takes the shorter path\n wrapLongitudesForShortestPath(newPositions, size, targetStartIndex, targetIndex);\n\n // Handle the case when the ring contains a pole\n insertPoleVertices(newPositions, size, targetStartIndex, targetIndex, options?.maxLatitude);\n\n srcStartIndex = srcEndIndex;\n newHoleIndices[ringIndex] = targetIndex;\n }\n newHoleIndices.pop();\n\n const parts = cutPolygonByGrid(newPositions, newHoleIndices, {\n size,\n gridResolution: 360,\n gridOffset: [-180, -180],\n edgeTypes\n });\n\n if (normalize) {\n // Each part is guaranteed to be in a single copy of the world\n // Map longitudes back to [-180, 180]\n for (const part of parts) {\n // @ts-expect-error (mutates readonly array) May mutate newPositions, which is created by us\n shiftLongitudesIntoRange(part.positions, size);\n }\n }\n return parts;\n}\n\n/* Helpers */\n\n// See comments for insertPoleVertices\nfunction findSplitIndex(\n positions: Readonly,\n size: number,\n startIndex: number,\n endIndex: number\n): number {\n let maxLat = -1;\n let pointIndex = -1;\n for (let i = startIndex + 1; i < endIndex; i += size) {\n const lat = Math.abs(positions[i]);\n if (lat > maxLat) {\n maxLat = lat;\n pointIndex = i - 1;\n }\n }\n return pointIndex;\n}\n\n// https://user-images.githubusercontent.com/2059298/78857483-5987e400-79de-11ea-98fc-0631287a8431.png\n//\n// If the polygon contains a pole, to tesselate it correctly, we need to insert the edge\n// of map into the polygon. This requires adding two vertices that represent the pole, by\n// drawing a perpendicular line to the Mercator map edge from a selected vertex on the ring.\n//\n// We select the insertion position carefully so that the inserted line segments do not\n// intersect with the ring itself. This is ensured by findSplitIndex, which returns the\n// vertex closest to the pole.\nfunction insertPoleVertices(\n positions: number[],\n size: number,\n startIndex: number,\n endIndex: number,\n maxLatitude: number = DEFAULT_MAX_LATITUDE\n): void {\n // Check if the ring contains a pole\n const firstLng = positions[startIndex];\n const lastLng = positions[endIndex - size];\n if (Math.abs(firstLng - lastLng) > 180) {\n // The ring does not make a round trip\n // Add the nearest pole to the vertices so that the polygon tesselates correctly\n const p = getPointAtIndex(positions, 0, size, startIndex);\n // Copy the first vertex to the world of the last vertex\n p[0] += Math.round((lastLng - firstLng) / 360) * 360;\n push(positions, p);\n // Project the copied vertex to the edge of the map\n p[1] = Math.sign(p[1]) * maxLatitude;\n push(positions, p);\n // Project the first vertex to the edge of the map\n p[0] = firstLng;\n push(positions, p);\n }\n}\n\nfunction wrapLongitudesForShortestPath(\n positions: NumericArray,\n size: number,\n startIndex: number,\n endIndex: number\n): void {\n let prevLng: number = positions[0];\n let lng: number;\n for (let i = startIndex; i < endIndex; i += size) {\n lng = positions[i];\n const delta = lng - prevLng;\n if (delta > 180 || delta < -180) {\n lng -= Math.round(delta / 360) * 360;\n }\n positions[i] = prevLng = lng;\n }\n}\n\nfunction shiftLongitudesIntoRange(positions: NumericArray, size: number): void {\n let refLng: number;\n const pointCount = positions.length / size;\n\n // Find a longitude that is not on the edge of a world\n // Which we will use to determine which world copy it is\n for (let i = 0; i < pointCount; i++) {\n refLng = positions[i * size];\n if ((refLng + 180) % 360 !== 0) {\n break;\n }\n }\n\n const delta = -Math.round(refLng / 360) * 360;\n if (delta === 0) {\n return;\n }\n for (let i = 0; i < pointCount; i++) {\n positions[i * size] += delta;\n }\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { createIterable, getAccessorFromBuffer } from './iterable-utils';\nimport defaultTypedArrayManager from './typed-array-manager';\nimport assert from './assert';\nimport { Buffer } from '@luma.gl/webgl';\nexport default class Tesselator {\n constructor(opts) {\n _defineProperty(this, \"opts\", void 0);\n\n _defineProperty(this, \"typedArrayManager\", void 0);\n\n _defineProperty(this, \"indexStarts\", [0]);\n\n _defineProperty(this, \"vertexStarts\", [0]);\n\n _defineProperty(this, \"vertexCount\", 0);\n\n _defineProperty(this, \"instanceCount\", 0);\n\n _defineProperty(this, \"attributes\", void 0);\n\n _defineProperty(this, \"_attributeDefs\", void 0);\n\n _defineProperty(this, \"data\", void 0);\n\n _defineProperty(this, \"getGeometry\", void 0);\n\n _defineProperty(this, \"geometryBuffer\", void 0);\n\n _defineProperty(this, \"buffers\", void 0);\n\n _defineProperty(this, \"positionSize\", void 0);\n\n _defineProperty(this, \"normalize\", void 0);\n\n const {\n attributes = {}\n } = opts;\n this.typedArrayManager = defaultTypedArrayManager;\n this.attributes = {};\n this._attributeDefs = attributes;\n this.opts = opts;\n this.updateGeometry(opts);\n }\n\n updateGeometry(opts) {\n Object.assign(this.opts, opts);\n const {\n data,\n buffers = {},\n getGeometry,\n geometryBuffer,\n positionFormat,\n dataChanged,\n normalize = true\n } = this.opts;\n this.data = data;\n this.getGeometry = getGeometry;\n this.positionSize = geometryBuffer && geometryBuffer.size || (positionFormat === 'XY' ? 2 : 3);\n this.buffers = buffers;\n this.normalize = normalize;\n\n if (geometryBuffer) {\n assert(data.startIndices);\n this.getGeometry = this.getGeometryFromBuffer(geometryBuffer);\n\n if (!normalize) {\n buffers.positions = geometryBuffer;\n }\n }\n\n this.geometryBuffer = buffers.positions;\n\n if (Array.isArray(dataChanged)) {\n for (const dataRange of dataChanged) {\n this._rebuildGeometry(dataRange);\n }\n } else {\n this._rebuildGeometry();\n }\n }\n\n updatePartialGeometry({\n startRow,\n endRow\n }) {\n this._rebuildGeometry({\n startRow,\n endRow\n });\n }\n\n getGeometryFromBuffer(geometryBuffer) {\n const value = geometryBuffer.value || geometryBuffer;\n\n if (!ArrayBuffer.isView(value)) {\n return null;\n }\n\n return getAccessorFromBuffer(value, {\n size: this.positionSize,\n offset: geometryBuffer.offset,\n stride: geometryBuffer.stride,\n startIndices: this.data.startIndices\n });\n }\n\n _allocate(instanceCount, copy) {\n const {\n attributes,\n buffers,\n _attributeDefs,\n typedArrayManager\n } = this;\n\n for (const name in _attributeDefs) {\n if (name in buffers) {\n typedArrayManager.release(attributes[name]);\n attributes[name] = null;\n } else {\n const def = _attributeDefs[name];\n def.copy = copy;\n attributes[name] = typedArrayManager.allocate(attributes[name], instanceCount, def);\n }\n }\n }\n\n _forEachGeometry(visitor, startRow, endRow) {\n const {\n data,\n getGeometry\n } = this;\n const {\n iterable,\n objectInfo\n } = createIterable(data, startRow, endRow);\n\n for (const object of iterable) {\n objectInfo.index++;\n const geometry = getGeometry ? getGeometry(object, objectInfo) : null;\n visitor(geometry, objectInfo.index);\n }\n }\n\n _rebuildGeometry(dataRange) {\n if (!this.data) {\n return;\n }\n\n let {\n indexStarts,\n vertexStarts,\n instanceCount\n } = this;\n const {\n data,\n geometryBuffer\n } = this;\n const {\n startRow = 0,\n endRow = Infinity\n } = dataRange || {};\n const normalizedData = {};\n\n if (!dataRange) {\n indexStarts = [0];\n vertexStarts = [0];\n }\n\n if (this.normalize || !geometryBuffer) {\n this._forEachGeometry((geometry, dataIndex) => {\n const normalizedGeometry = geometry && this.normalizeGeometry(geometry);\n normalizedData[dataIndex] = normalizedGeometry;\n vertexStarts[dataIndex + 1] = vertexStarts[dataIndex] + (normalizedGeometry ? this.getGeometrySize(normalizedGeometry) : 0);\n }, startRow, endRow);\n\n instanceCount = vertexStarts[vertexStarts.length - 1];\n } else {\n vertexStarts = data.startIndices;\n instanceCount = vertexStarts[data.length] || 0;\n\n if (ArrayBuffer.isView(geometryBuffer)) {\n instanceCount = instanceCount || geometryBuffer.length / this.positionSize;\n } else if (geometryBuffer instanceof Buffer) {\n const byteStride = geometryBuffer.accessor.stride || this.positionSize * 4;\n instanceCount = instanceCount || geometryBuffer.byteLength / byteStride;\n } else if (geometryBuffer.buffer) {\n const byteStride = geometryBuffer.stride || this.positionSize * 4;\n instanceCount = instanceCount || geometryBuffer.buffer.byteLength / byteStride;\n } else if (geometryBuffer.value) {\n const bufferValue = geometryBuffer.value;\n const elementStride = geometryBuffer.stride / bufferValue.BYTES_PER_ELEMENT || this.positionSize;\n instanceCount = instanceCount || bufferValue.length / elementStride;\n }\n }\n\n this._allocate(instanceCount, Boolean(dataRange));\n\n this.indexStarts = indexStarts;\n this.vertexStarts = vertexStarts;\n this.instanceCount = instanceCount;\n const context = {};\n\n this._forEachGeometry((geometry, dataIndex) => {\n const normalizedGeometry = normalizedData[dataIndex] || geometry;\n context.vertexStart = vertexStarts[dataIndex];\n context.indexStart = indexStarts[dataIndex];\n const vertexEnd = dataIndex < vertexStarts.length - 1 ? vertexStarts[dataIndex + 1] : instanceCount;\n context.geometrySize = vertexEnd - vertexStarts[dataIndex];\n context.geometryIndex = dataIndex;\n this.updateGeometryAttributes(normalizedGeometry, context);\n }, startRow, endRow);\n\n this.vertexCount = indexStarts[indexStarts.length - 1];\n }\n\n}\n//# sourceMappingURL=tesselator.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {createIterable, getAccessorFromBuffer} from './iterable-utils';\nimport defaultTypedArrayManager from './typed-array-manager';\nimport assert from './assert';\n\nimport {Buffer} from '@luma.gl/webgl';\n\nimport type {BinaryAttribute} from '../lib/attribute/attribute';\nimport type {TypedArray} from '../types/types';\nimport type {AccessorFunction} from '../types/layer-props';\nimport type {TypedArrayManager} from './typed-array-manager';\n\ntype ExternalBuffer = TypedArray | Buffer | BinaryAttribute;\n\ntype TesselatorOptions = ExtraOptionsT & {\n attributes?: Record;\n getGeometry?: AccessorFunction;\n data?: any;\n buffers?: Record;\n geometryBuffer?: ExternalBuffer;\n positionFormat?: 'XY' | 'XYZ';\n dataChanged?: {startRow: number; endRow?: number}[] | string | false;\n normalize?: boolean;\n};\n\nexport type GeometryUpdateContext = {\n vertexStart: number;\n indexStart: number;\n geometrySize: number;\n geometryIndex: number;\n};\n\nexport default abstract class Tesselator {\n opts: TesselatorOptions;\n typedArrayManager: TypedArrayManager;\n indexStarts: number[] = [0];\n vertexStarts: number[] = [0];\n vertexCount: number = 0;\n instanceCount: number = 0;\n attributes: Record;\n\n protected _attributeDefs: any;\n protected data: any;\n protected getGeometry?: AccessorFunction | null;\n protected geometryBuffer?: ExternalBuffer;\n protected buffers!: Record;\n protected positionSize!: number;\n protected normalize!: boolean;\n\n constructor(opts: TesselatorOptions) {\n const {attributes = {}} = opts;\n\n this.typedArrayManager = defaultTypedArrayManager;\n this.attributes = {};\n this._attributeDefs = attributes;\n this.opts = opts;\n\n this.updateGeometry(opts);\n }\n\n /* Public methods */\n updateGeometry(opts: TesselatorOptions): void {\n Object.assign(this.opts, opts);\n const {\n data,\n buffers = {},\n getGeometry,\n geometryBuffer,\n positionFormat,\n dataChanged,\n normalize = true\n } = this.opts;\n this.data = data;\n this.getGeometry = getGeometry;\n this.positionSize =\n // @ts-ignore (2339) when geometryBuffer is a luma Buffer, size falls back to positionFormat\n (geometryBuffer && geometryBuffer.size) || (positionFormat === 'XY' ? 2 : 3);\n this.buffers = buffers;\n this.normalize = normalize;\n\n // Handle external logical value\n if (geometryBuffer) {\n assert(data.startIndices); // binary data missing startIndices\n this.getGeometry = this.getGeometryFromBuffer(geometryBuffer);\n\n if (!normalize) {\n // skip packing and set attribute value directly\n // TODO - avoid mutating user-provided object\n buffers.positions = geometryBuffer;\n }\n }\n this.geometryBuffer = buffers.positions;\n\n if (Array.isArray(dataChanged)) {\n // is partial update\n for (const dataRange of dataChanged as {startRow: number; endRow?: number}[]) {\n this._rebuildGeometry(dataRange);\n }\n } else {\n this._rebuildGeometry();\n }\n }\n\n updatePartialGeometry({startRow, endRow}: {startRow: number; endRow: number}): void {\n this._rebuildGeometry({startRow, endRow});\n }\n\n // Subclass interface\n\n /** Convert geometry to a uniform shape */\n protected abstract normalizeGeometry(geometry: GeometryT): NormalizedGeometryT;\n\n /** Update the positions buffer of a single geometry */\n protected abstract updateGeometryAttributes(\n geometry: NormalizedGeometryT | null,\n context: GeometryUpdateContext\n );\n\n /** Get the number of vertices in a geometry */\n protected abstract getGeometrySize(geometry: NormalizedGeometryT): number;\n\n protected getGeometryFromBuffer(\n geometryBuffer: ExternalBuffer\n ): AccessorFunction | null {\n const value = (geometryBuffer as BinaryAttribute).value || geometryBuffer;\n if (!ArrayBuffer.isView(value)) {\n // Cannot read binary geometries\n return null;\n }\n\n // @ts-ignore (2322) NumericArray not assignable to GeometryT\n return getAccessorFromBuffer(value, {\n size: this.positionSize,\n offset: (geometryBuffer as BinaryAttribute).offset,\n stride: (geometryBuffer as BinaryAttribute).stride,\n startIndices: this.data.startIndices\n });\n }\n\n /* Private utility methods */\n private _allocate(instanceCount: number, copy: boolean): void {\n // allocate attributes\n const {attributes, buffers, _attributeDefs, typedArrayManager} = this;\n for (const name in _attributeDefs) {\n if (name in buffers) {\n // Use external buffer\n typedArrayManager.release(attributes[name]);\n attributes[name] = null;\n } else {\n const def = _attributeDefs[name];\n // If dataRange is supplied, this is a partial update.\n // In case we need to reallocate the typed array, it will need the old values copied\n // before performing partial update.\n def.copy = copy;\n\n attributes[name] = typedArrayManager.allocate(attributes[name], instanceCount, def);\n }\n }\n }\n\n /**\n * Visit all objects\n * `data` is expected to be an iterable consistent with the base Layer expectation\n */\n private _forEachGeometry(\n visitor: (geometry: GeometryT | null, index: number) => void,\n startRow: number,\n endRow: number\n ): void {\n const {data, getGeometry} = this;\n const {iterable, objectInfo} = createIterable(data, startRow, endRow);\n for (const object of iterable) {\n objectInfo.index++;\n const geometry = getGeometry ? getGeometry(object, objectInfo) : null;\n visitor(geometry, objectInfo.index);\n }\n }\n\n /* eslint-disable complexity,max-statements */\n private _rebuildGeometry(dataRange?: {startRow: number; endRow?: number}): void {\n if (!this.data) {\n return;\n }\n\n let {indexStarts, vertexStarts, instanceCount} = this;\n const {data, geometryBuffer} = this;\n const {startRow = 0, endRow = Infinity} = dataRange || {};\n\n const normalizedData: Record = {};\n\n if (!dataRange) {\n // Full update - regenerate buffer layout from scratch\n indexStarts = [0];\n vertexStarts = [0];\n }\n if (this.normalize || !geometryBuffer) {\n this._forEachGeometry(\n (geometry: GeometryT | null, dataIndex: number) => {\n const normalizedGeometry = geometry && this.normalizeGeometry(geometry);\n normalizedData[dataIndex] = normalizedGeometry;\n vertexStarts[dataIndex + 1] =\n vertexStarts[dataIndex] +\n (normalizedGeometry ? this.getGeometrySize(normalizedGeometry) : 0);\n },\n startRow,\n endRow\n );\n // count instances\n instanceCount = vertexStarts[vertexStarts.length - 1];\n } else {\n // assume user provided data is already normalized\n vertexStarts = data.startIndices;\n instanceCount = vertexStarts[data.length] || 0;\n\n if (ArrayBuffer.isView(geometryBuffer)) {\n instanceCount = instanceCount || geometryBuffer.length / this.positionSize;\n } else if (geometryBuffer instanceof Buffer) {\n // @ts-expect-error (2339) accessor is not typed\n const byteStride = geometryBuffer.accessor.stride || this.positionSize * 4;\n instanceCount = instanceCount || geometryBuffer.byteLength / byteStride;\n } else if (geometryBuffer.buffer) {\n const byteStride = geometryBuffer.stride || this.positionSize * 4;\n instanceCount = instanceCount || geometryBuffer.buffer.byteLength / byteStride;\n } else if (geometryBuffer.value) {\n const bufferValue = geometryBuffer.value;\n const elementStride =\n // @ts-ignore (2339) if stride is not specified, will fall through to positionSize\n geometryBuffer.stride / bufferValue.BYTES_PER_ELEMENT || this.positionSize;\n instanceCount = instanceCount || bufferValue.length / elementStride;\n }\n }\n\n // allocate attributes\n this._allocate(instanceCount, Boolean(dataRange));\n\n this.indexStarts = indexStarts;\n this.vertexStarts = vertexStarts;\n this.instanceCount = instanceCount;\n\n // @ts-ignore (2739) context will be populated in the loop\n const context: GeometryUpdateContext = {};\n\n this._forEachGeometry(\n (geometry: GeometryT | null, dataIndex: number) => {\n const normalizedGeometry =\n normalizedData[dataIndex] ||\n // @ts-expect-error (2352) GeometryT cannot be casted to NormalizedGeometryT. We are assuming the user passed already normalized data if opts.normalize is set to false.\n (geometry as NormalizedGeometryT);\n context.vertexStart = vertexStarts[dataIndex];\n context.indexStart = indexStarts[dataIndex];\n const vertexEnd =\n dataIndex < vertexStarts.length - 1 ? vertexStarts[dataIndex + 1] : instanceCount;\n context.geometrySize = vertexEnd - vertexStarts[dataIndex];\n context.geometryIndex = dataIndex;\n this.updateGeometryAttributes(normalizedGeometry, context);\n },\n startRow,\n endRow\n );\n\n this.vertexCount = indexStarts[indexStarts.length - 1];\n }\n}\n","import main from './solid-polygon-layer-vertex-main.glsl';\nexport default \"#define SHADER_NAME solid-polygon-layer-vertex-shader\\n\\nattribute vec3 positions;\\nattribute vec3 positions64Low;\\nattribute float elevations;\\nattribute vec4 fillColors;\\nattribute vec4 lineColors;\\nattribute vec3 pickingColors;\\n\\n\".concat(main, \"\\n\\nvoid main(void) {\\n PolygonProps props;\\n\\n props.positions = positions;\\n props.positions64Low = positions64Low;\\n props.elevations = elevations;\\n props.fillColors = fillColors;\\n props.lineColors = lineColors;\\n props.pickingColors = pickingColors;\\n\\n calculatePosition(props);\\n}\\n\");\n//# sourceMappingURL=solid-polygon-layer-vertex-top.glsl.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport main from './solid-polygon-layer-vertex-main.glsl';\n\nexport default `\\\n#define SHADER_NAME solid-polygon-layer-vertex-shader\n\nattribute vec3 positions;\nattribute vec3 positions64Low;\nattribute float elevations;\nattribute vec4 fillColors;\nattribute vec4 lineColors;\nattribute vec3 pickingColors;\n\n${main}\n\nvoid main(void) {\n PolygonProps props;\n\n props.positions = positions;\n props.positions64Low = positions64Low;\n props.elevations = elevations;\n props.fillColors = fillColors;\n props.lineColors = lineColors;\n props.pickingColors = pickingColors;\n\n calculatePosition(props);\n}\n`;\n","export default \"\\nattribute vec2 vertexPositions;\\nattribute float vertexValid;\\n\\nuniform bool extruded;\\nuniform bool isWireframe;\\nuniform float elevationScale;\\nuniform float opacity;\\n\\nvarying vec4 vColor;\\n\\nstruct PolygonProps {\\n vec4 fillColors;\\n vec4 lineColors;\\n vec3 positions;\\n vec3 nextPositions;\\n vec3 pickingColors;\\n vec3 positions64Low;\\n vec3 nextPositions64Low;\\n float elevations;\\n};\\n\\nvec3 project_offset_normal(vec3 vector) {\\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSETS) {\\n return normalize(vector * project_uCommonUnitsPerWorldUnit);\\n }\\n return project_normal(vector);\\n}\\n\\nvoid calculatePosition(PolygonProps props) {\\n#ifdef IS_SIDE_VERTEX\\n if(vertexValid < 0.5){\\n gl_Position = vec4(0.);\\n return;\\n }\\n#endif\\n\\n vec3 pos;\\n vec3 pos64Low;\\n vec3 normal;\\n vec4 colors = isWireframe ? props.lineColors : props.fillColors;\\n\\n geometry.worldPosition = props.positions;\\n geometry.worldPositionAlt = props.nextPositions;\\n geometry.pickingColor = props.pickingColors;\\n\\n#ifdef IS_SIDE_VERTEX\\n pos = mix(props.positions, props.nextPositions, vertexPositions.x);\\n pos64Low = mix(props.positions64Low, props.nextPositions64Low, vertexPositions.x);\\n#else\\n pos = props.positions;\\n pos64Low = props.positions64Low;\\n#endif\\n\\n if (extruded) {\\n pos.z += props.elevations * vertexPositions.y * elevationScale;\\n }\\n gl_Position = project_position_to_clipspace(pos, pos64Low, vec3(0.), geometry.position);\\n\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n if (extruded) {\\n #ifdef IS_SIDE_VERTEX\\n normal = vec3(\\n props.positions.y - props.nextPositions.y + (props.positions64Low.y - props.nextPositions64Low.y),\\n props.nextPositions.x - props.positions.x + (props.nextPositions64Low.x - props.positions64Low.x),\\n 0.0);\\n normal = project_offset_normal(normal);\\n #else\\n normal = project_normal(vec3(0.0, 0.0, 1.0));\\n #endif\\n geometry.normal = normal;\\n vec3 lightColor = lighting_getLightColor(colors.rgb, project_uCameraPosition, geometry.position.xyz, normal);\\n vColor = vec4(lightColor, colors.a * opacity);\\n } else {\\n vColor = vec4(colors.rgb, colors.a * opacity);\\n }\\n DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n//# sourceMappingURL=solid-polygon-layer-vertex-main.glsl.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n\nattribute vec2 vertexPositions;\nattribute float vertexValid;\n\nuniform bool extruded;\nuniform bool isWireframe;\nuniform float elevationScale;\nuniform float opacity;\n\nvarying vec4 vColor;\n\nstruct PolygonProps {\n vec4 fillColors;\n vec4 lineColors;\n vec3 positions;\n vec3 nextPositions;\n vec3 pickingColors;\n vec3 positions64Low;\n vec3 nextPositions64Low;\n float elevations;\n};\n\nvec3 project_offset_normal(vec3 vector) {\n if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\n project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSETS) {\n // normals generated by the polygon tesselator are in lnglat offsets instead of meters\n return normalize(vector * project_uCommonUnitsPerWorldUnit);\n }\n return project_normal(vector);\n}\n\nvoid calculatePosition(PolygonProps props) {\n#ifdef IS_SIDE_VERTEX\n if(vertexValid < 0.5){\n gl_Position = vec4(0.);\n return;\n }\n#endif\n\n vec3 pos;\n vec3 pos64Low;\n vec3 normal;\n vec4 colors = isWireframe ? props.lineColors : props.fillColors;\n\n geometry.worldPosition = props.positions;\n geometry.worldPositionAlt = props.nextPositions;\n geometry.pickingColor = props.pickingColors;\n\n#ifdef IS_SIDE_VERTEX\n pos = mix(props.positions, props.nextPositions, vertexPositions.x);\n pos64Low = mix(props.positions64Low, props.nextPositions64Low, vertexPositions.x);\n#else\n pos = props.positions;\n pos64Low = props.positions64Low;\n#endif\n\n if (extruded) {\n pos.z += props.elevations * vertexPositions.y * elevationScale;\n }\n gl_Position = project_position_to_clipspace(pos, pos64Low, vec3(0.), geometry.position);\n\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n if (extruded) {\n #ifdef IS_SIDE_VERTEX\n normal = vec3(\n props.positions.y - props.nextPositions.y + (props.positions64Low.y - props.nextPositions64Low.y),\n props.nextPositions.x - props.positions.x + (props.nextPositions64Low.x - props.positions64Low.x),\n 0.0);\n normal = project_offset_normal(normal);\n #else\n normal = project_normal(vec3(0.0, 0.0, 1.0));\n #endif\n geometry.normal = normal;\n vec3 lightColor = lighting_getLightColor(colors.rgb, project_uCameraPosition, geometry.position.xyz, normal);\n vColor = vec4(lightColor, colors.a * opacity);\n } else {\n vColor = vec4(colors.rgb, colors.a * opacity);\n }\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;\n","import main from './solid-polygon-layer-vertex-main.glsl';\nexport default \"#define SHADER_NAME solid-polygon-layer-vertex-shader-side\\n#define IS_SIDE_VERTEX\\n\\n\\nattribute vec3 instancePositions;\\nattribute vec3 nextPositions;\\nattribute vec3 instancePositions64Low;\\nattribute vec3 nextPositions64Low;\\nattribute float instanceElevations;\\nattribute vec4 instanceFillColors;\\nattribute vec4 instanceLineColors;\\nattribute vec3 instancePickingColors;\\n\\n\".concat(main, \"\\n\\nvoid main(void) {\\n PolygonProps props;\\n\\n #if RING_WINDING_ORDER_CW == 1\\n props.positions = instancePositions;\\n props.positions64Low = instancePositions64Low;\\n props.nextPositions = nextPositions;\\n props.nextPositions64Low = nextPositions64Low;\\n #else\\n props.positions = nextPositions;\\n props.positions64Low = nextPositions64Low;\\n props.nextPositions = instancePositions;\\n props.nextPositions64Low = instancePositions64Low;\\n #endif\\n props.elevations = instanceElevations;\\n props.fillColors = instanceFillColors;\\n props.lineColors = instanceLineColors;\\n props.pickingColors = instancePickingColors;\\n\\n calculatePosition(props);\\n}\\n\");\n//# sourceMappingURL=solid-polygon-layer-vertex-side.glsl.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport main from './solid-polygon-layer-vertex-main.glsl';\n\nexport default `\\\n#define SHADER_NAME solid-polygon-layer-vertex-shader-side\n#define IS_SIDE_VERTEX\n\n\nattribute vec3 instancePositions;\nattribute vec3 nextPositions;\nattribute vec3 instancePositions64Low;\nattribute vec3 nextPositions64Low;\nattribute float instanceElevations;\nattribute vec4 instanceFillColors;\nattribute vec4 instanceLineColors;\nattribute vec3 instancePickingColors;\n\n${main}\n\nvoid main(void) {\n PolygonProps props;\n\n #if RING_WINDING_ORDER_CW == 1\n props.positions = instancePositions;\n props.positions64Low = instancePositions64Low;\n props.nextPositions = nextPositions;\n props.nextPositions64Low = nextPositions64Low;\n #else\n props.positions = nextPositions;\n props.positions64Low = nextPositions64Low;\n props.nextPositions = instancePositions;\n props.nextPositions64Low = instancePositions64Low;\n #endif\n props.elevations = instanceElevations;\n props.fillColors = instanceFillColors;\n props.lineColors = instanceLineColors;\n props.pickingColors = instancePickingColors;\n\n calculatePosition(props);\n}\n`;\n","export default \"#define SHADER_NAME solid-polygon-layer-fragment-shader\\n\\nprecision highp float;\\n\\nvarying vec4 vColor;\\n\\nvoid main(void) {\\n gl_FragColor = vColor;\\n\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=solid-polygon-layer-fragment.glsl.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME solid-polygon-layer-fragment-shader\n\nprecision highp float;\n\nvarying vec4 vColor;\n\nvoid main(void) {\n gl_FragColor = vColor;\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, picking, UNIT } from '@deck.gl/core';\nimport { Model, Geometry } from '@luma.gl/core';\nimport PathTesselator from './path-tesselator';\nimport vs from './path-layer-vertex.glsl';\nimport fs from './path-layer-fragment.glsl';\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n widthUnits: 'meters',\n widthScale: {\n type: 'number',\n min: 0,\n value: 1\n },\n widthMinPixels: {\n type: 'number',\n min: 0,\n value: 0\n },\n widthMaxPixels: {\n type: 'number',\n min: 0,\n value: Number.MAX_SAFE_INTEGER\n },\n jointRounded: false,\n capRounded: false,\n miterLimit: {\n type: 'number',\n min: 0,\n value: 4\n },\n billboard: false,\n _pathType: null,\n getPath: {\n type: 'accessor',\n value: object => object.path\n },\n getColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n getWidth: {\n type: 'accessor',\n value: 1\n },\n rounded: {\n deprecatedFor: ['jointRounded', 'capRounded']\n }\n};\nconst ATTRIBUTE_TRANSITION = {\n enter: (value, chunk) => {\n return chunk.length ? chunk.subarray(chunk.length - value.length) : value;\n }\n};\nexport default class PathLayer extends Layer {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", void 0);\n }\n\n getShaders() {\n return super.getShaders({\n vs,\n fs,\n modules: [project32, picking]\n });\n }\n\n get wrapLongitude() {\n return false;\n }\n\n initializeState() {\n const noAlloc = true;\n const attributeManager = this.getAttributeManager();\n attributeManager.addInstanced({\n positions: {\n size: 3,\n vertexOffset: 1,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getPath',\n update: this.calculatePositions,\n noAlloc,\n shaderAttributes: {\n instanceLeftPositions: {\n vertexOffset: 0\n },\n instanceStartPositions: {\n vertexOffset: 1\n },\n instanceEndPositions: {\n vertexOffset: 2\n },\n instanceRightPositions: {\n vertexOffset: 3\n }\n }\n },\n instanceTypes: {\n size: 1,\n type: 5121,\n update: this.calculateSegmentTypes,\n noAlloc\n },\n instanceStrokeWidths: {\n size: 1,\n accessor: 'getWidth',\n transition: ATTRIBUTE_TRANSITION,\n defaultValue: 1\n },\n instanceColors: {\n size: this.props.colorFormat.length,\n type: 5121,\n normalized: true,\n accessor: 'getColor',\n transition: ATTRIBUTE_TRANSITION,\n defaultValue: DEFAULT_COLOR\n },\n instancePickingColors: {\n size: 3,\n type: 5121,\n accessor: (object, {\n index,\n target: value\n }) => this.encodePickingColor(object && object.__source ? object.__source.index : index, value)\n }\n });\n this.setState({\n pathTesselator: new PathTesselator({\n fp64: this.use64bitPositions()\n })\n });\n }\n\n updateState(params) {\n super.updateState(params);\n const {\n props,\n changeFlags\n } = params;\n const attributeManager = this.getAttributeManager();\n const geometryChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPath);\n\n if (geometryChanged) {\n const {\n pathTesselator\n } = this.state;\n const buffers = props.data.attributes || {};\n pathTesselator.updateGeometry({\n data: props.data,\n geometryBuffer: buffers.getPath,\n buffers,\n normalize: !props._pathType,\n loop: props._pathType === 'loop',\n getGeometry: props.getPath,\n positionFormat: props.positionFormat,\n wrapLongitude: props.wrapLongitude,\n resolution: this.context.viewport.resolution,\n dataChanged: changeFlags.dataChanged\n });\n this.setState({\n numInstances: pathTesselator.instanceCount,\n startIndices: pathTesselator.vertexStarts\n });\n\n if (!changeFlags.dataChanged) {\n attributeManager.invalidateAll();\n }\n }\n\n if (changeFlags.extensionsChanged) {\n var _this$state$model;\n\n const {\n gl\n } = this.context;\n (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n this.state.model = this._getModel(gl);\n attributeManager.invalidateAll();\n }\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n const {\n index\n } = info;\n const {\n data\n } = this.props;\n\n if (data[0] && data[0].__source) {\n info.object = data.find(d => d.__source.index === index);\n }\n\n return info;\n }\n\n disablePickingIndex(objectIndex) {\n const {\n data\n } = this.props;\n\n if (data[0] && data[0].__source) {\n for (let i = 0; i < data.length; i++) {\n if (data[i].__source.index === objectIndex) {\n this._disablePickingIndex(i);\n }\n }\n } else {\n super.disablePickingIndex(objectIndex);\n }\n }\n\n draw({\n uniforms\n }) {\n const {\n jointRounded,\n capRounded,\n billboard,\n miterLimit,\n widthUnits,\n widthScale,\n widthMinPixels,\n widthMaxPixels\n } = this.props;\n this.state.model.setUniforms(uniforms).setUniforms({\n jointType: Number(jointRounded),\n capType: Number(capRounded),\n billboard,\n widthUnits: UNIT[widthUnits],\n widthScale,\n miterLimit,\n widthMinPixels,\n widthMaxPixels\n }).draw();\n }\n\n _getModel(gl) {\n const SEGMENT_INDICES = [0, 1, 2, 1, 4, 2, 1, 3, 4, 3, 5, 4];\n const SEGMENT_POSITIONS = [0, 0, 0, -1, 0, 1, 1, -1, 1, 1, 1, 0];\n return new Model(gl, { ...this.getShaders(),\n id: this.props.id,\n geometry: new Geometry({\n drawMode: 4,\n attributes: {\n indices: new Uint16Array(SEGMENT_INDICES),\n positions: {\n value: new Float32Array(SEGMENT_POSITIONS),\n size: 2\n }\n }\n }),\n isInstanced: true\n });\n }\n\n calculatePositions(attribute) {\n const {\n pathTesselator\n } = this.state;\n attribute.startIndices = pathTesselator.vertexStarts;\n attribute.value = pathTesselator.get('positions');\n }\n\n calculateSegmentTypes(attribute) {\n const {\n pathTesselator\n } = this.state;\n attribute.startIndices = pathTesselator.vertexStarts;\n attribute.value = pathTesselator.get('segmentTypes');\n }\n\n}\n\n_defineProperty(PathLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(PathLayer, \"layerName\", 'PathLayer');\n//# sourceMappingURL=path-layer.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {Layer, project32, picking, UNIT} from '@deck.gl/core';\nimport GL from '@luma.gl/constants';\nimport {Model, Geometry} from '@luma.gl/core';\nimport PathTesselator from './path-tesselator';\n\nimport vs from './path-layer-vertex.glsl';\nimport fs from './path-layer-fragment.glsl';\n\nimport type {\n LayerProps,\n LayerDataSource,\n Color,\n Accessor,\n AccessorFunction,\n Unit,\n UpdateParameters,\n GetPickingInfoParams,\n PickingInfo,\n DefaultProps\n} from '@deck.gl/core';\nimport type {PathGeometry} from './path';\n\ntype _PathLayerProps = {\n data: LayerDataSource;\n /** The units of the line width, one of `'meters'`, `'common'`, and `'pixels'`\n * @default 'meters'\n */\n widthUnits?: Unit;\n /**\n * Path width multiplier.\n * @default 1\n */\n widthScale?: number;\n /**\n * The minimum path width in pixels. This prop can be used to prevent the path from getting too thin when zoomed out.\n * @default 0\n */\n widthMinPixels?: number;\n /**\n * The maximum path width in pixels. This prop can be used to prevent the path from getting too thick when zoomed in.\n * @default Number.MAX_SAFE_INTEGER\n */\n widthMaxPixels?: number;\n /**\n * Type of joint. If `true`, draw round joints. Otherwise draw miter joints.\n * @default false\n */\n jointRounded?: boolean;\n /**\n * Type of caps. If `true`, draw round caps. Otherwise draw square caps.\n * @default false\n */\n capRounded?: boolean;\n /**\n * The maximum extent of a joint in ratio to the stroke width. Only works if `jointRounded` is `false`.\n * @default 4\n */\n miterLimit?: number;\n /**\n * If `true`, extrude the path in screen space (width always faces the camera).\n * If `false`, the width always faces up (z).\n * @default false\n */\n billboard?: boolean;\n /**\n * (Experimental) If `'loop'` or `'open'`, will skip normalizing the coordinates returned by `getPath` and instead assume all paths are to be loops or open paths.\n * When normalization is disabled, paths must be specified in the format of flat array. Open paths must contain at least 2 vertices and closed paths must contain at least 3 vertices.\n * @default null\n */\n _pathType?: null | 'loop' | 'open';\n /**\n * Path geometry accessor.\n */\n getPath?: AccessorFunction;\n /**\n * Path color accessor.\n * @default [0, 0, 0, 255]\n */\n getColor?: Accessor;\n /**\n * Path width accessor.\n * @default 1\n */\n getWidth?: Accessor;\n /**\n * @deprecated Use `jointRounded` and `capRounded` instead\n */\n rounded?: boolean;\n};\n\nexport type PathLayerProps = _PathLayerProps & LayerProps;\n\nconst DEFAULT_COLOR: [number, number, number, number] = [0, 0, 0, 255];\n\nconst defaultProps: DefaultProps = {\n widthUnits: 'meters',\n widthScale: {type: 'number', min: 0, value: 1},\n widthMinPixels: {type: 'number', min: 0, value: 0},\n widthMaxPixels: {type: 'number', min: 0, value: Number.MAX_SAFE_INTEGER},\n jointRounded: false,\n capRounded: false,\n miterLimit: {type: 'number', min: 0, value: 4},\n billboard: false,\n _pathType: null,\n\n getPath: {type: 'accessor', value: object => object.path},\n getColor: {type: 'accessor', value: DEFAULT_COLOR},\n getWidth: {type: 'accessor', value: 1},\n\n // deprecated props\n rounded: {deprecatedFor: ['jointRounded', 'capRounded']}\n};\n\nconst ATTRIBUTE_TRANSITION = {\n enter: (value, chunk) => {\n return chunk.length ? chunk.subarray(chunk.length - value.length) : value;\n }\n};\n\n/** Render lists of coordinate points as extruded polylines with mitering. */\nexport default class PathLayer extends Layer<\n ExtraPropsT & Required<_PathLayerProps>\n> {\n static defaultProps = defaultProps;\n static layerName = 'PathLayer';\n\n state!: {\n model?: Model;\n pathTesselator: PathTesselator;\n };\n\n getShaders() {\n return super.getShaders({vs, fs, modules: [project32, picking]}); // 'project' module added by default.\n }\n\n get wrapLongitude(): boolean {\n return false;\n }\n\n initializeState() {\n const noAlloc = true;\n const attributeManager = this.getAttributeManager();\n /* eslint-disable max-len */\n attributeManager!.addInstanced({\n positions: {\n size: 3,\n // Start filling buffer from 1 vertex in\n vertexOffset: 1,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n transition: ATTRIBUTE_TRANSITION,\n accessor: 'getPath',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculatePositions,\n noAlloc,\n shaderAttributes: {\n instanceLeftPositions: {\n vertexOffset: 0\n },\n instanceStartPositions: {\n vertexOffset: 1\n },\n instanceEndPositions: {\n vertexOffset: 2\n },\n instanceRightPositions: {\n vertexOffset: 3\n }\n }\n },\n instanceTypes: {\n size: 1,\n type: GL.UNSIGNED_BYTE,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculateSegmentTypes,\n noAlloc\n },\n instanceStrokeWidths: {\n size: 1,\n accessor: 'getWidth',\n transition: ATTRIBUTE_TRANSITION,\n defaultValue: 1\n },\n instanceColors: {\n size: this.props.colorFormat.length,\n type: GL.UNSIGNED_BYTE,\n normalized: true,\n accessor: 'getColor',\n transition: ATTRIBUTE_TRANSITION,\n defaultValue: DEFAULT_COLOR\n },\n instancePickingColors: {\n size: 3,\n type: GL.UNSIGNED_BYTE,\n accessor: (object, {index, target: value}) =>\n this.encodePickingColor(object && object.__source ? object.__source.index : index, value)\n }\n });\n /* eslint-enable max-len */\n\n this.setState({\n pathTesselator: new PathTesselator({\n fp64: this.use64bitPositions()\n })\n });\n }\n\n updateState(params: UpdateParameters) {\n super.updateState(params);\n const {props, changeFlags} = params;\n\n const attributeManager = this.getAttributeManager();\n\n const geometryChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPath));\n\n if (geometryChanged) {\n const {pathTesselator} = this.state;\n const buffers = (props.data as any).attributes || {};\n\n pathTesselator.updateGeometry({\n data: props.data,\n geometryBuffer: buffers.getPath,\n buffers,\n normalize: !props._pathType,\n loop: props._pathType === 'loop',\n getGeometry: props.getPath,\n positionFormat: props.positionFormat,\n wrapLongitude: props.wrapLongitude,\n // TODO - move the flag out of the viewport\n resolution: this.context.viewport.resolution,\n dataChanged: changeFlags.dataChanged\n });\n this.setState({\n numInstances: pathTesselator.instanceCount,\n startIndices: pathTesselator.vertexStarts\n });\n if (!changeFlags.dataChanged) {\n // Base `layer.updateState` only invalidates all attributes on data change\n // Cover the rest of the scenarios here\n attributeManager!.invalidateAll();\n }\n }\n\n if (changeFlags.extensionsChanged) {\n const {gl} = this.context;\n this.state.model?.delete();\n this.state.model = this._getModel(gl);\n attributeManager!.invalidateAll();\n }\n }\n\n getPickingInfo(params: GetPickingInfoParams): PickingInfo {\n const info = super.getPickingInfo(params);\n const {index} = info;\n const {data} = this.props;\n\n // Check if data comes from a composite layer, wrapped with getSubLayerRow\n if (data[0] && data[0].__source) {\n // index decoded from picking color refers to the source index\n info.object = (data as any[]).find(d => d.__source.index === index);\n }\n return info;\n }\n\n /** Override base Layer method */\n disablePickingIndex(objectIndex: number) {\n const {data} = this.props;\n\n // Check if data comes from a composite layer, wrapped with getSubLayerRow\n if (data[0] && data[0].__source) {\n // index decoded from picking color refers to the source index\n for (let i = 0; i < (data as any[]).length; i++) {\n if (data[i].__source.index === objectIndex) {\n this._disablePickingIndex(i);\n }\n }\n } else {\n super.disablePickingIndex(objectIndex);\n }\n }\n\n draw({uniforms}) {\n const {\n jointRounded,\n capRounded,\n billboard,\n miterLimit,\n widthUnits,\n widthScale,\n widthMinPixels,\n widthMaxPixels\n } = this.props;\n\n this.state.model\n .setUniforms(uniforms)\n .setUniforms({\n jointType: Number(jointRounded),\n capType: Number(capRounded),\n billboard,\n widthUnits: UNIT[widthUnits],\n widthScale,\n miterLimit,\n widthMinPixels,\n widthMaxPixels\n })\n .draw();\n }\n\n protected _getModel(gl: WebGLRenderingContext): Model {\n /*\n * _\n * \"-_ 1 3 5\n * _ \"o---------------------o-------------------_-o\n * - / \"\"--..__ '. _.-' /\n * _ \"@- - - - - \"\"--..__- - - - x - - - -_.@' /\n * \"-_ / \"\"--..__ '. _,-` : /\n * \"o----------------------------\"\"-o' : /\n * 0,2 4 / '. : /\n * / '.: /\n * / :'. /\n * / : ', /\n * / : o\n */\n\n // prettier-ignore\n const SEGMENT_INDICES = [\n // start corner\n 0, 1, 2,\n // body\n 1, 4, 2,\n 1, 3, 4,\n // end corner\n 3, 5, 4\n ];\n\n // [0] position on segment - 0: start, 1: end\n // [1] side of path - -1: left, 0: center (joint), 1: right\n // prettier-ignore\n const SEGMENT_POSITIONS = [\n // bevel start corner\n 0, 0,\n // start inner corner\n 0, -1,\n // start outer corner\n 0, 1,\n // end inner corner\n 1, -1,\n // end outer corner\n 1, 1,\n // bevel end corner\n 1, 0\n ];\n\n return new Model(gl, {\n ...this.getShaders(),\n id: this.props.id,\n geometry: new Geometry({\n drawMode: GL.TRIANGLES,\n attributes: {\n indices: new Uint16Array(SEGMENT_INDICES),\n positions: {value: new Float32Array(SEGMENT_POSITIONS), size: 2}\n }\n }),\n isInstanced: true\n });\n }\n\n protected calculatePositions(attribute) {\n const {pathTesselator} = this.state;\n\n attribute.startIndices = pathTesselator.vertexStarts;\n attribute.value = pathTesselator.get('positions');\n }\n\n protected calculateSegmentTypes(attribute) {\n const {pathTesselator} = this.state;\n\n attribute.startIndices = pathTesselator.vertexStarts;\n attribute.value = pathTesselator.get('segmentTypes');\n }\n}\n","import { Tesselator } from '@deck.gl/core';\nimport { normalizePath } from './path';\nconst START_CAP = 1;\nconst END_CAP = 2;\nconst INVALID = 4;\nexport default class PathTesselator extends Tesselator {\n constructor(opts) {\n super({ ...opts,\n attributes: {\n positions: {\n size: 3,\n padding: 18,\n initialize: true,\n type: opts.fp64 ? Float64Array : Float32Array\n },\n segmentTypes: {\n size: 1,\n type: Uint8ClampedArray\n }\n }\n });\n }\n\n get(attributeName) {\n return this.attributes[attributeName];\n }\n\n getGeometryFromBuffer(buffer) {\n if (this.normalize) {\n return super.getGeometryFromBuffer(buffer);\n }\n\n return null;\n }\n\n normalizeGeometry(path) {\n if (this.normalize) {\n return normalizePath(path, this.positionSize, this.opts.resolution, this.opts.wrapLongitude);\n }\n\n return path;\n }\n\n getGeometrySize(path) {\n if (isCut(path)) {\n let size = 0;\n\n for (const subPath of path) {\n size += this.getGeometrySize(subPath);\n }\n\n return size;\n }\n\n const numPoints = this.getPathLength(path);\n\n if (numPoints < 2) {\n return 0;\n }\n\n if (this.isClosed(path)) {\n return numPoints < 3 ? 0 : numPoints + 2;\n }\n\n return numPoints;\n }\n\n updateGeometryAttributes(path, context) {\n if (context.geometrySize === 0) {\n return;\n }\n\n if (path && isCut(path)) {\n for (const subPath of path) {\n const geometrySize = this.getGeometrySize(subPath);\n context.geometrySize = geometrySize;\n this.updateGeometryAttributes(subPath, context);\n context.vertexStart += geometrySize;\n }\n } else {\n this._updateSegmentTypes(path, context);\n\n this._updatePositions(path, context);\n }\n }\n\n _updateSegmentTypes(path, context) {\n const segmentTypes = this.attributes.segmentTypes;\n const isPathClosed = path ? this.isClosed(path) : false;\n const {\n vertexStart,\n geometrySize\n } = context;\n segmentTypes.fill(0, vertexStart, vertexStart + geometrySize);\n\n if (isPathClosed) {\n segmentTypes[vertexStart] = INVALID;\n segmentTypes[vertexStart + geometrySize - 2] = INVALID;\n } else {\n segmentTypes[vertexStart] += START_CAP;\n segmentTypes[vertexStart + geometrySize - 2] += END_CAP;\n }\n\n segmentTypes[vertexStart + geometrySize - 1] = INVALID;\n }\n\n _updatePositions(path, context) {\n const {\n positions\n } = this.attributes;\n\n if (!positions || !path) {\n return;\n }\n\n const {\n vertexStart,\n geometrySize\n } = context;\n const p = new Array(3);\n\n for (let i = vertexStart, ptIndex = 0; ptIndex < geometrySize; i++, ptIndex++) {\n this.getPointOnPath(path, ptIndex, p);\n positions[i * 3] = p[0];\n positions[i * 3 + 1] = p[1];\n positions[i * 3 + 2] = p[2];\n }\n }\n\n getPathLength(path) {\n return path.length / this.positionSize;\n }\n\n getPointOnPath(path, index, target = []) {\n const {\n positionSize\n } = this;\n\n if (index * positionSize >= path.length) {\n index += 1 - path.length / positionSize;\n }\n\n const i = index * positionSize;\n target[0] = path[i];\n target[1] = path[i + 1];\n target[2] = positionSize === 3 && path[i + 2] || 0;\n return target;\n }\n\n isClosed(path) {\n if (!this.normalize) {\n return Boolean(this.opts.loop);\n }\n\n const {\n positionSize\n } = this;\n const lastPointIndex = path.length - positionSize;\n return path[0] === path[lastPointIndex] && path[1] === path[lastPointIndex + 1] && (positionSize === 2 || path[2] === path[lastPointIndex + 2]);\n }\n\n}\n\nfunction isCut(path) {\n return Array.isArray(path[0]);\n}\n//# sourceMappingURL=path-tesselator.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {Tesselator} from '@deck.gl/core';\nimport {normalizePath} from './path';\n\nimport type {TypedArray} from '@math.gl/core';\nimport type {PathGeometry, FlatPathGeometry, NormalizedPathGeometry} from './path';\n\nconst START_CAP = 1;\nconst END_CAP = 2;\nconst INVALID = 4;\n\n// This class is set up to allow querying one attribute at a time\n// the way the AttributeManager expects it\nexport default class PathTesselator extends Tesselator<\n PathGeometry,\n NormalizedPathGeometry,\n {\n fp64?: boolean;\n resolution?: number;\n wrapLongitude?: boolean;\n loop?: boolean;\n }\n> {\n constructor(opts) {\n super({\n ...opts,\n attributes: {\n // Padding covers shaderAttributes for last segment in largest case fp64\n // additional vertex + hi & low parts, 3 * 6\n positions: {\n size: 3,\n padding: 18,\n initialize: true,\n type: opts.fp64 ? Float64Array : Float32Array\n },\n segmentTypes: {size: 1, type: Uint8ClampedArray}\n }\n });\n }\n\n /** Get packed attribute by name */\n get(attributeName: string): TypedArray | null {\n return this.attributes[attributeName];\n }\n\n /* Implement base Tesselator interface */\n protected getGeometryFromBuffer(buffer) {\n if (this.normalize) {\n return super.getGeometryFromBuffer(buffer);\n }\n // we don't need to read the positions if no normalization\n return null;\n }\n\n /* Implement base Tesselator interface */\n protected normalizeGeometry(path: PathGeometry): number[][] | PathGeometry {\n if (this.normalize) {\n return normalizePath(path, this.positionSize, this.opts.resolution, this.opts.wrapLongitude);\n }\n return path;\n }\n\n /* Implement base Tesselator interface */\n protected getGeometrySize(path: NormalizedPathGeometry): number {\n if (isCut(path)) {\n let size = 0;\n for (const subPath of path) {\n size += this.getGeometrySize(subPath);\n }\n return size;\n }\n const numPoints = this.getPathLength(path);\n if (numPoints < 2) {\n // invalid path\n return 0;\n }\n if (this.isClosed(path)) {\n // minimum 3 vertices\n return numPoints < 3 ? 0 : numPoints + 2;\n }\n return numPoints;\n }\n\n /* Implement base Tesselator interface */\n protected updateGeometryAttributes(\n path: NormalizedPathGeometry | null,\n context: {\n vertexStart: number;\n geometrySize: number;\n }\n ): void {\n if (context.geometrySize === 0) {\n return;\n }\n if (path && isCut(path)) {\n for (const subPath of path) {\n const geometrySize = this.getGeometrySize(subPath);\n context.geometrySize = geometrySize;\n this.updateGeometryAttributes(subPath, context);\n context.vertexStart += geometrySize;\n }\n } else {\n this._updateSegmentTypes(path, context);\n this._updatePositions(path, context);\n }\n }\n\n private _updateSegmentTypes(\n path: FlatPathGeometry | null,\n context: {\n vertexStart: number;\n geometrySize: number;\n }\n ) {\n const segmentTypes = this.attributes.segmentTypes as TypedArray;\n const isPathClosed = path ? this.isClosed(path) : false;\n const {vertexStart, geometrySize} = context;\n\n // positions -- A0 A1 B0 B1 B2 B3 B0 B1 B2 --\n // segmentTypes 3 4 4 0 0 0 0 4 4\n segmentTypes.fill(0, vertexStart, vertexStart + geometrySize);\n if (isPathClosed) {\n segmentTypes[vertexStart] = INVALID;\n segmentTypes[vertexStart + geometrySize - 2] = INVALID;\n } else {\n segmentTypes[vertexStart] += START_CAP;\n segmentTypes[vertexStart + geometrySize - 2] += END_CAP;\n }\n segmentTypes[vertexStart + geometrySize - 1] = INVALID;\n }\n\n private _updatePositions(\n path: FlatPathGeometry | null,\n context: {\n vertexStart: number;\n geometrySize: number;\n }\n ) {\n const {positions} = this.attributes;\n if (!positions || !path) {\n return;\n }\n const {vertexStart, geometrySize} = context;\n const p = new Array(3);\n\n // positions -- A0 A1 B0 B1 B2 B3 B0 B1 B2 --\n // segmentTypes 3 4 4 0 0 0 0 4 4\n for (let i = vertexStart, ptIndex = 0; ptIndex < geometrySize; i++, ptIndex++) {\n this.getPointOnPath(path, ptIndex, p);\n positions[i * 3] = p[0];\n positions[i * 3 + 1] = p[1];\n positions[i * 3 + 2] = p[2];\n }\n }\n\n // Utilities\n /** Returns the number of points in the path */\n private getPathLength(path: FlatPathGeometry): number {\n return path.length / this.positionSize;\n }\n\n /** Returns a point on the path at the specified index */\n private getPointOnPath(path: FlatPathGeometry, index: number, target: number[] = []): number[] {\n const {positionSize} = this;\n if (index * positionSize >= path.length) {\n // loop\n index += 1 - path.length / positionSize;\n }\n const i = index * positionSize;\n target[0] = path[i];\n target[1] = path[i + 1];\n target[2] = (positionSize === 3 && path[i + 2]) || 0;\n return target;\n }\n\n // Returns true if the first and last points are identical\n private isClosed(path: FlatPathGeometry): boolean {\n if (!this.normalize) {\n return Boolean(this.opts.loop);\n }\n const {positionSize} = this;\n const lastPointIndex = path.length - positionSize;\n return (\n path[0] === path[lastPointIndex] &&\n path[1] === path[lastPointIndex + 1] &&\n (positionSize === 2 || path[2] === path[lastPointIndex + 2])\n );\n }\n}\n\nfunction isCut(path: NormalizedPathGeometry): path is FlatPathGeometry[] {\n return Array.isArray(path[0]);\n}\n","import { cutPolylineByGrid, cutPolylineByMercatorBounds } from '@math.gl/polygon';\nexport function normalizePath(path, size, gridResolution, wrapLongitude) {\n let flatPath;\n\n if (Array.isArray(path[0])) {\n const length = path.length * size;\n flatPath = new Array(length);\n\n for (let i = 0; i < path.length; i++) {\n for (let j = 0; j < size; j++) {\n flatPath[i * size + j] = path[i][j] || 0;\n }\n }\n } else {\n flatPath = path;\n }\n\n if (gridResolution) {\n return cutPolylineByGrid(flatPath, {\n size,\n gridResolution\n });\n }\n\n if (wrapLongitude) {\n return cutPolylineByMercatorBounds(flatPath, {\n size\n });\n }\n\n return flatPath;\n}\n//# sourceMappingURL=path.js.map","import {cutPolylineByGrid, cutPolylineByMercatorBounds} from '@math.gl/polygon';\n\nimport type {NumericArray} from '@math.gl/core';\nimport type {Position} from '@deck.gl/core';\n\nexport type NestedPathGeometry = Position[];\nexport type FlatPathGeometry = NumericArray;\nexport type PathGeometry = NestedPathGeometry | FlatPathGeometry;\nexport type NormalizedPathGeometry = FlatPathGeometry[] | FlatPathGeometry;\n\n/**\n * Flattens a nested path object\n * Cut the feature if needed (globe projection, wrap longitude, etc.)\n * Returns a flat array of path positions, or a list of flat arrays representing multiple paths\n */\nexport function normalizePath(\n path: PathGeometry,\n size: number,\n gridResolution?: number,\n wrapLongitude?: boolean\n): number[][] | NumericArray {\n let flatPath: NumericArray;\n if (Array.isArray(path[0])) {\n const length = path.length * size;\n flatPath = new Array(length);\n for (let i = 0; i < path.length; i++) {\n for (let j = 0; j < size; j++) {\n flatPath[i * size + j] = path[i][j] || 0;\n }\n }\n } else {\n flatPath = path as NumericArray;\n }\n if (gridResolution) {\n return cutPolylineByGrid(flatPath, {size, gridResolution});\n }\n if (wrapLongitude) {\n return cutPolylineByMercatorBounds(flatPath, {size});\n }\n return flatPath;\n}\n","export default \"#define SHADER_NAME path-layer-vertex-shader\\n\\nattribute vec2 positions;\\n\\nattribute float instanceTypes;\\nattribute vec3 instanceStartPositions;\\nattribute vec3 instanceEndPositions;\\nattribute vec3 instanceLeftPositions;\\nattribute vec3 instanceRightPositions;\\nattribute vec3 instanceLeftPositions64Low;\\nattribute vec3 instanceStartPositions64Low;\\nattribute vec3 instanceEndPositions64Low;\\nattribute vec3 instanceRightPositions64Low;\\nattribute float instanceStrokeWidths;\\nattribute vec4 instanceColors;\\nattribute vec3 instancePickingColors;\\n\\nuniform float widthScale;\\nuniform float widthMinPixels;\\nuniform float widthMaxPixels;\\nuniform float jointType;\\nuniform float capType;\\nuniform float miterLimit;\\nuniform bool billboard;\\nuniform int widthUnits;\\n\\nuniform float opacity;\\n\\nvarying vec4 vColor;\\nvarying vec2 vCornerOffset;\\nvarying float vMiterLength;\\nvarying vec2 vPathPosition;\\nvarying float vPathLength;\\nvarying float vJointType;\\n\\nconst float EPSILON = 0.001;\\nconst vec3 ZERO_OFFSET = vec3(0.0);\\n\\nfloat flipIfTrue(bool flag) {\\n return -(float(flag) * 2. - 1.);\\n}\\nvec3 getLineJoinOffset(\\n vec3 prevPoint, vec3 currPoint, vec3 nextPoint,\\n vec2 width\\n) {\\n bool isEnd = positions.x > 0.0;\\n float sideOfPath = positions.y;\\n float isJoint = float(sideOfPath == 0.0);\\n\\n vec3 deltaA3 = (currPoint - prevPoint);\\n vec3 deltaB3 = (nextPoint - currPoint);\\n\\n mat3 rotationMatrix;\\n bool needsRotation = !billboard && project_needs_rotation(currPoint, rotationMatrix);\\n if (needsRotation) {\\n deltaA3 = deltaA3 * rotationMatrix;\\n deltaB3 = deltaB3 * rotationMatrix;\\n }\\n vec2 deltaA = deltaA3.xy / width;\\n vec2 deltaB = deltaB3.xy / width;\\n\\n float lenA = length(deltaA);\\n float lenB = length(deltaB);\\n\\n vec2 dirA = lenA > 0. ? normalize(deltaA) : vec2(0.0, 0.0);\\n vec2 dirB = lenB > 0. ? normalize(deltaB) : vec2(0.0, 0.0);\\n\\n vec2 perpA = vec2(-dirA.y, dirA.x);\\n vec2 perpB = vec2(-dirB.y, dirB.x);\\n vec2 tangent = dirA + dirB;\\n tangent = length(tangent) > 0. ? normalize(tangent) : perpA;\\n vec2 miterVec = vec2(-tangent.y, tangent.x);\\n vec2 dir = isEnd ? dirA : dirB;\\n vec2 perp = isEnd ? perpA : perpB;\\n float L = isEnd ? lenA : lenB;\\n float sinHalfA = abs(dot(miterVec, perp));\\n float cosHalfA = abs(dot(dirA, miterVec));\\n float turnDirection = flipIfTrue(dirA.x * dirB.y >= dirA.y * dirB.x);\\n float cornerPosition = sideOfPath * turnDirection;\\n\\n float miterSize = 1.0 / max(sinHalfA, EPSILON);\\n miterSize = mix(\\n min(miterSize, max(lenA, lenB) / max(cosHalfA, EPSILON)),\\n miterSize,\\n step(0.0, cornerPosition)\\n );\\n\\n vec2 offsetVec = mix(miterVec * miterSize, perp, step(0.5, cornerPosition))\\n * (sideOfPath + isJoint * turnDirection);\\n bool isStartCap = lenA == 0.0 || (!isEnd && (instanceTypes == 1.0 || instanceTypes == 3.0));\\n bool isEndCap = lenB == 0.0 || (isEnd && (instanceTypes == 2.0 || instanceTypes == 3.0));\\n bool isCap = isStartCap || isEndCap;\\n if (isCap) {\\n offsetVec = mix(perp * sideOfPath, dir * capType * 4.0 * flipIfTrue(isStartCap), isJoint);\\n vJointType = capType;\\n } else {\\n vJointType = jointType;\\n }\\n vPathLength = L;\\n vCornerOffset = offsetVec;\\n vMiterLength = dot(vCornerOffset, miterVec * turnDirection);\\n vMiterLength = isCap ? isJoint : vMiterLength;\\n\\n vec2 offsetFromStartOfPath = vCornerOffset + deltaA * float(isEnd);\\n vPathPosition = vec2(\\n dot(offsetFromStartOfPath, perp),\\n dot(offsetFromStartOfPath, dir)\\n );\\n geometry.uv = vPathPosition;\\n\\n float isValid = step(instanceTypes, 3.5);\\n vec3 offset = vec3(offsetVec * width * isValid, 0.0);\\n\\n if (needsRotation) {\\n offset = rotationMatrix * offset;\\n }\\n return offset;\\n}\\nvoid clipLine(inout vec4 position, vec4 refPosition) {\\n if (position.w < EPSILON) {\\n float r = (EPSILON - refPosition.w) / (position.w - refPosition.w);\\n position = refPosition + (position - refPosition) * r;\\n }\\n}\\n\\nvoid main() {\\n geometry.pickingColor = instancePickingColors;\\n\\n vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\\n\\n float isEnd = positions.x;\\n\\n vec3 prevPosition = mix(instanceLeftPositions, instanceStartPositions, isEnd);\\n vec3 prevPosition64Low = mix(instanceLeftPositions64Low, instanceStartPositions64Low, isEnd);\\n\\n vec3 currPosition = mix(instanceStartPositions, instanceEndPositions, isEnd);\\n vec3 currPosition64Low = mix(instanceStartPositions64Low, instanceEndPositions64Low, isEnd);\\n\\n vec3 nextPosition = mix(instanceEndPositions, instanceRightPositions, isEnd);\\n vec3 nextPosition64Low = mix(instanceEndPositions64Low, instanceRightPositions64Low, isEnd);\\n\\n geometry.worldPosition = currPosition;\\n vec2 widthPixels = vec2(clamp(\\n project_size_to_pixel(instanceStrokeWidths * widthScale, widthUnits),\\n widthMinPixels, widthMaxPixels) / 2.0);\\n vec3 width;\\n\\n if (billboard) {\\n vec4 prevPositionScreen = project_position_to_clipspace(prevPosition, prevPosition64Low, ZERO_OFFSET);\\n vec4 currPositionScreen = project_position_to_clipspace(currPosition, currPosition64Low, ZERO_OFFSET, geometry.position);\\n vec4 nextPositionScreen = project_position_to_clipspace(nextPosition, nextPosition64Low, ZERO_OFFSET);\\n\\n clipLine(prevPositionScreen, currPositionScreen);\\n clipLine(nextPositionScreen, currPositionScreen);\\n clipLine(currPositionScreen, mix(nextPositionScreen, prevPositionScreen, isEnd));\\n\\n width = vec3(widthPixels, 0.0);\\n DECKGL_FILTER_SIZE(width, geometry);\\n\\n vec3 offset = getLineJoinOffset(\\n prevPositionScreen.xyz / prevPositionScreen.w,\\n currPositionScreen.xyz / currPositionScreen.w,\\n nextPositionScreen.xyz / nextPositionScreen.w,\\n project_pixel_size_to_clipspace(width.xy)\\n );\\n\\n DECKGL_FILTER_GL_POSITION(currPositionScreen, geometry);\\n gl_Position = vec4(currPositionScreen.xyz + offset * currPositionScreen.w, currPositionScreen.w);\\n } else {\\n prevPosition = project_position(prevPosition, prevPosition64Low);\\n currPosition = project_position(currPosition, currPosition64Low);\\n nextPosition = project_position(nextPosition, nextPosition64Low);\\n\\n width = vec3(project_pixel_size(widthPixels), 0.0);\\n DECKGL_FILTER_SIZE(width, geometry);\\n\\n vec3 offset = getLineJoinOffset(prevPosition, currPosition, nextPosition, width.xy);\\n geometry.position = vec4(currPosition + offset, 1.0);\\n gl_Position = project_common_position_to_clipspace(geometry.position);\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n }\\n DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n//# sourceMappingURL=path-layer-vertex.glsl.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME path-layer-vertex-shader\n\nattribute vec2 positions;\n\nattribute float instanceTypes;\nattribute vec3 instanceStartPositions;\nattribute vec3 instanceEndPositions;\nattribute vec3 instanceLeftPositions;\nattribute vec3 instanceRightPositions;\nattribute vec3 instanceLeftPositions64Low;\nattribute vec3 instanceStartPositions64Low;\nattribute vec3 instanceEndPositions64Low;\nattribute vec3 instanceRightPositions64Low;\nattribute float instanceStrokeWidths;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\n\nuniform float widthScale;\nuniform float widthMinPixels;\nuniform float widthMaxPixels;\nuniform float jointType;\nuniform float capType;\nuniform float miterLimit;\nuniform bool billboard;\nuniform int widthUnits;\n\nuniform float opacity;\n\nvarying vec4 vColor;\nvarying vec2 vCornerOffset;\nvarying float vMiterLength;\nvarying vec2 vPathPosition;\nvarying float vPathLength;\nvarying float vJointType;\n\nconst float EPSILON = 0.001;\nconst vec3 ZERO_OFFSET = vec3(0.0);\n\nfloat flipIfTrue(bool flag) {\n return -(float(flag) * 2. - 1.);\n}\n\n// calculate line join positions\nvec3 getLineJoinOffset(\n vec3 prevPoint, vec3 currPoint, vec3 nextPoint,\n vec2 width\n) {\n bool isEnd = positions.x > 0.0;\n // side of the segment - -1: left, 0: center, 1: right\n float sideOfPath = positions.y;\n float isJoint = float(sideOfPath == 0.0);\n\n vec3 deltaA3 = (currPoint - prevPoint);\n vec3 deltaB3 = (nextPoint - currPoint);\n\n mat3 rotationMatrix;\n bool needsRotation = !billboard && project_needs_rotation(currPoint, rotationMatrix);\n if (needsRotation) {\n deltaA3 = deltaA3 * rotationMatrix;\n deltaB3 = deltaB3 * rotationMatrix;\n }\n vec2 deltaA = deltaA3.xy / width;\n vec2 deltaB = deltaB3.xy / width;\n\n float lenA = length(deltaA);\n float lenB = length(deltaB);\n\n vec2 dirA = lenA > 0. ? normalize(deltaA) : vec2(0.0, 0.0);\n vec2 dirB = lenB > 0. ? normalize(deltaB) : vec2(0.0, 0.0);\n\n vec2 perpA = vec2(-dirA.y, dirA.x);\n vec2 perpB = vec2(-dirB.y, dirB.x);\n\n // tangent of the corner\n vec2 tangent = dirA + dirB;\n tangent = length(tangent) > 0. ? normalize(tangent) : perpA;\n // direction of the corner\n vec2 miterVec = vec2(-tangent.y, tangent.x);\n // direction of the segment\n vec2 dir = isEnd ? dirA : dirB;\n // direction of the extrusion\n vec2 perp = isEnd ? perpA : perpB;\n // length of the segment\n float L = isEnd ? lenA : lenB;\n\n // A = angle of the corner\n float sinHalfA = abs(dot(miterVec, perp));\n float cosHalfA = abs(dot(dirA, miterVec));\n\n // -1: right, 1: left\n float turnDirection = flipIfTrue(dirA.x * dirB.y >= dirA.y * dirB.x);\n\n // relative position to the corner:\n // -1: inside (smaller side of the angle)\n // 0: center\n // 1: outside (bigger side of the angle)\n float cornerPosition = sideOfPath * turnDirection;\n\n float miterSize = 1.0 / max(sinHalfA, EPSILON);\n // trim if inside corner extends further than the line segment\n miterSize = mix(\n min(miterSize, max(lenA, lenB) / max(cosHalfA, EPSILON)),\n miterSize,\n step(0.0, cornerPosition)\n );\n\n vec2 offsetVec = mix(miterVec * miterSize, perp, step(0.5, cornerPosition))\n * (sideOfPath + isJoint * turnDirection);\n\n // special treatment for start cap and end cap\n bool isStartCap = lenA == 0.0 || (!isEnd && (instanceTypes == 1.0 || instanceTypes == 3.0));\n bool isEndCap = lenB == 0.0 || (isEnd && (instanceTypes == 2.0 || instanceTypes == 3.0));\n bool isCap = isStartCap || isEndCap;\n\n // extend out a triangle to envelope the round cap\n if (isCap) {\n offsetVec = mix(perp * sideOfPath, dir * capType * 4.0 * flipIfTrue(isStartCap), isJoint);\n vJointType = capType;\n } else {\n vJointType = jointType;\n }\n\n // Generate variables for fragment shader\n vPathLength = L;\n vCornerOffset = offsetVec;\n vMiterLength = dot(vCornerOffset, miterVec * turnDirection);\n vMiterLength = isCap ? isJoint : vMiterLength;\n\n vec2 offsetFromStartOfPath = vCornerOffset + deltaA * float(isEnd);\n vPathPosition = vec2(\n dot(offsetFromStartOfPath, perp),\n dot(offsetFromStartOfPath, dir)\n );\n geometry.uv = vPathPosition;\n\n float isValid = step(instanceTypes, 3.5);\n vec3 offset = vec3(offsetVec * width * isValid, 0.0);\n\n if (needsRotation) {\n offset = rotationMatrix * offset;\n }\n return offset;\n}\n\n// In clipspace extrusion, if a line extends behind the camera, clip it to avoid visual artifacts\nvoid clipLine(inout vec4 position, vec4 refPosition) {\n if (position.w < EPSILON) {\n float r = (EPSILON - refPosition.w) / (position.w - refPosition.w);\n position = refPosition + (position - refPosition) * r;\n }\n}\n\nvoid main() {\n geometry.pickingColor = instancePickingColors;\n\n vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\n\n float isEnd = positions.x;\n\n vec3 prevPosition = mix(instanceLeftPositions, instanceStartPositions, isEnd);\n vec3 prevPosition64Low = mix(instanceLeftPositions64Low, instanceStartPositions64Low, isEnd);\n\n vec3 currPosition = mix(instanceStartPositions, instanceEndPositions, isEnd);\n vec3 currPosition64Low = mix(instanceStartPositions64Low, instanceEndPositions64Low, isEnd);\n\n vec3 nextPosition = mix(instanceEndPositions, instanceRightPositions, isEnd);\n vec3 nextPosition64Low = mix(instanceEndPositions64Low, instanceRightPositions64Low, isEnd);\n\n geometry.worldPosition = currPosition;\n vec2 widthPixels = vec2(clamp(\n project_size_to_pixel(instanceStrokeWidths * widthScale, widthUnits),\n widthMinPixels, widthMaxPixels) / 2.0);\n vec3 width;\n\n if (billboard) {\n // Extrude in clipspace\n vec4 prevPositionScreen = project_position_to_clipspace(prevPosition, prevPosition64Low, ZERO_OFFSET);\n vec4 currPositionScreen = project_position_to_clipspace(currPosition, currPosition64Low, ZERO_OFFSET, geometry.position);\n vec4 nextPositionScreen = project_position_to_clipspace(nextPosition, nextPosition64Low, ZERO_OFFSET);\n\n clipLine(prevPositionScreen, currPositionScreen);\n clipLine(nextPositionScreen, currPositionScreen);\n clipLine(currPositionScreen, mix(nextPositionScreen, prevPositionScreen, isEnd));\n\n width = vec3(widthPixels, 0.0);\n DECKGL_FILTER_SIZE(width, geometry);\n\n vec3 offset = getLineJoinOffset(\n prevPositionScreen.xyz / prevPositionScreen.w,\n currPositionScreen.xyz / currPositionScreen.w,\n nextPositionScreen.xyz / nextPositionScreen.w,\n project_pixel_size_to_clipspace(width.xy)\n );\n\n DECKGL_FILTER_GL_POSITION(currPositionScreen, geometry);\n gl_Position = vec4(currPositionScreen.xyz + offset * currPositionScreen.w, currPositionScreen.w);\n } else {\n // Extrude in commonspace\n prevPosition = project_position(prevPosition, prevPosition64Low);\n currPosition = project_position(currPosition, currPosition64Low);\n nextPosition = project_position(nextPosition, nextPosition64Low);\n\n width = vec3(project_pixel_size(widthPixels), 0.0);\n DECKGL_FILTER_SIZE(width, geometry);\n\n vec3 offset = getLineJoinOffset(prevPosition, currPosition, nextPosition, width.xy);\n geometry.position = vec4(currPosition + offset, 1.0);\n gl_Position = project_common_position_to_clipspace(geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;\n","export default \"#define SHADER_NAME path-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform float miterLimit;\\n\\nvarying vec4 vColor;\\nvarying vec2 vCornerOffset;\\nvarying float vMiterLength;\\nvarying vec2 vPathPosition;\\nvarying float vPathLength;\\nvarying float vJointType;\\n\\nvoid main(void) {\\n geometry.uv = vPathPosition;\\n\\n if (vPathPosition.y < 0.0 || vPathPosition.y > vPathLength) {\\n if (vJointType > 0.5 && length(vCornerOffset) > 1.0) {\\n discard;\\n }\\n if (vJointType < 0.5 && vMiterLength > miterLimit + 1.0) {\\n discard;\\n }\\n }\\n gl_FragColor = vColor;\\n\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=path-layer-fragment.glsl.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME path-layer-fragment-shader\n\nprecision highp float;\n\nuniform float miterLimit;\n\nvarying vec4 vColor;\nvarying vec2 vCornerOffset;\nvarying float vMiterLength;\n/*\n * vPathPosition represents the relative coordinates of the current fragment on the path segment.\n * vPathPosition.x - position along the width of the path, between [-1, 1]. 0 is the center line.\n * vPathPosition.y - position along the length of the path, between [0, L / width].\n */\nvarying vec2 vPathPosition;\nvarying float vPathLength;\nvarying float vJointType;\n\nvoid main(void) {\n geometry.uv = vPathPosition;\n\n if (vPathPosition.y < 0.0 || vPathPosition.y > vPathLength) {\n // if joint is rounded, test distance from the corner\n if (vJointType > 0.5 && length(vCornerOffset) > 1.0) {\n discard;\n }\n // trim miter\n if (vJointType < 0.5 && vMiterLength > miterLimit + 1.0) {\n discard;\n }\n }\n gl_FragColor = vColor;\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;\n","export function replaceInRange({\n data,\n getIndex,\n dataRange,\n replace\n}) {\n const {\n startRow = 0,\n endRow = Infinity\n } = dataRange;\n const count = data.length;\n let replaceStart = count;\n let replaceEnd = count;\n\n for (let i = 0; i < count; i++) {\n const row = getIndex(data[i]);\n\n if (replaceStart > i && row >= startRow) {\n replaceStart = i;\n }\n\n if (row >= endRow) {\n replaceEnd = i;\n break;\n }\n }\n\n let index = replaceStart;\n const dataLengthChanged = replaceEnd - replaceStart !== replace.length;\n const endChunk = dataLengthChanged ? data.slice(replaceEnd) : undefined;\n\n for (let i = 0; i < replace.length; i++) {\n data[index++] = replace[i];\n }\n\n if (endChunk) {\n for (let i = 0; i < endChunk.length; i++) {\n data[index++] = endChunk[i];\n }\n\n data.length = index;\n }\n\n return {\n startRow: replaceStart,\n endRow: replaceStart + replace.length\n };\n}\n//# sourceMappingURL=utils.js.map","// Assume data array is sorted by \n// Replaces the specified range with a new subarray\n// Mutates the data array\n// Returns {startRow, endRow} of the inserted items\nexport function replaceInRange({\n data,\n getIndex,\n dataRange,\n replace\n}: {\n data: any[];\n getIndex: (d: any) => number;\n dataRange: {startRow?: number; endRow?: number};\n replace: any[];\n}): {startRow: Number; endRow: number} {\n const {startRow = 0, endRow = Infinity} = dataRange;\n const count = data.length;\n let replaceStart = count;\n let replaceEnd = count;\n for (let i = 0; i < count; i++) {\n const row = getIndex(data[i]);\n if (replaceStart > i && row >= startRow) {\n replaceStart = i;\n }\n if (row >= endRow) {\n replaceEnd = i;\n break;\n }\n }\n let index = replaceStart;\n const dataLengthChanged = replaceEnd - replaceStart !== replace.length;\n // Save the items after replaceEnd before we overwrite data\n const endChunk = dataLengthChanged ? data.slice(replaceEnd) : undefined;\n // Insert new items\n for (let i = 0; i < replace.length; i++) {\n data[index++] = replace[i];\n }\n if (endChunk) {\n // Append items after replaceEnd\n for (let i = 0; i < endChunk.length; i++) {\n data[index++] = endChunk[i];\n }\n // Trim additional items\n data.length = index;\n }\n\n return {\n startRow: replaceStart,\n endRow: replaceStart + replace.length\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes a bbox and returns an equivalent {@link Polygon|polygon}.\n *\n * @name bboxPolygon\n * @param {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @param {Object} [options={}] Optional parameters\n * @param {Properties} [options.properties={}] Translate properties to Polygon\n * @param {string|number} [options.id={}] Translate Id to Polygon\n * @returns {Feature} a Polygon representation of the bounding box\n * @example\n * var bbox = [0, 0, 10, 10];\n *\n * var poly = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [poly]\n */\nfunction bboxPolygon(bbox, options) {\n if (options === void 0) { options = {}; }\n // Convert BBox positions to Numbers\n // No performance loss for including Number()\n // https://github.com/Turfjs/turf/issues/1119\n var west = Number(bbox[0]);\n var south = Number(bbox[1]);\n var east = Number(bbox[2]);\n var north = Number(bbox[3]);\n if (bbox.length === 6) {\n throw new Error(\"@turf/bbox-polygon does not support BBox with 6 positions\");\n }\n var lowLeft = [west, south];\n var topLeft = [west, north];\n var topRight = [east, north];\n var lowRight = [east, south];\n return helpers_1.polygon([[\n lowLeft,\n lowRight,\n topRight,\n topLeft,\n lowLeft,\n ]], options.properties, { bbox: bbox, id: options.id });\n}\nexports.default = bboxPolygon;\n","import center from '@turf/center';\nimport turfBbox from '@turf/bbox';\nimport { BufferOp, GeoJSONReader, GeoJSONWriter } from 'turf-jsts';\nimport { toMercator, toWgs84 } from '@turf/projection';\nimport { featureEach, geomEach } from '@turf/meta';\nimport { geoTransverseMercator } from 'd3-geo';\nimport { earthRadius, feature, featureCollection, lengthToRadians, radiansToLength } from '@turf/helpers';\n\n/**\n * Calculates a buffer for input features for a given radius. Units supported are miles, kilometers, and degrees.\n *\n * When using a negative radius, the resulting geometry may be invalid if\n * it's too small compared to the radius magnitude. If the input is a\n * FeatureCollection, only valid members will be returned in the output\n * FeatureCollection - i.e., the output collection may have fewer members than\n * the input, or even be empty.\n *\n * @name buffer\n * @param {FeatureCollection|Geometry|Feature} geojson input to be buffered\n * @param {number} radius distance to draw the buffer (negative values are allowed)\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units=\"kilometers\"] any of the options supported by turf units\n * @param {number} [options.steps=64] number of steps\n * @returns {FeatureCollection|Feature|undefined} buffered features\n * @example\n * var point = turf.point([-90.548630, 14.616599]);\n * var buffered = turf.buffer(point, 500, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [point, buffered]\n */\nfunction buffer(geojson, radius, options) {\n // Optional params\n options = options || {};\n var units = options.units;\n var steps = options.steps || 64;\n\n // validation\n if (!geojson) throw new Error('geojson is required');\n if (typeof options !== 'object') throw new Error('options must be an object');\n if (typeof steps !== 'number') throw new Error('steps must be an number');\n\n // Allow negative buffers (\"erosion\") or zero-sized buffers (\"repair geometry\")\n if (radius === undefined) throw new Error('radius is required');\n if (steps <= 0) throw new Error('steps must be greater than 0');\n\n // default params\n steps = steps || 64;\n units = units || 'kilometers';\n\n var results = [];\n switch (geojson.type) {\n case 'GeometryCollection':\n geomEach(geojson, function (geometry) {\n var buffered = bufferFeature(geometry, radius, units, steps);\n if (buffered) results.push(buffered);\n });\n return featureCollection(results);\n case 'FeatureCollection':\n featureEach(geojson, function (feature$$1) {\n var multiBuffered = bufferFeature(feature$$1, radius, units, steps);\n if (multiBuffered) {\n featureEach(multiBuffered, function (buffered) {\n if (buffered) results.push(buffered);\n });\n }\n });\n return featureCollection(results);\n }\n return bufferFeature(geojson, radius, units, steps);\n}\n\n/**\n * Buffer single Feature/Geometry\n *\n * @private\n * @param {Feature} geojson input to be buffered\n * @param {number} radius distance to draw the buffer\n * @param {string} [units='kilometers'] any of the options supported by turf units\n * @param {number} [steps=64] number of steps\n * @returns {Feature} buffered feature\n */\nfunction bufferFeature(geojson, radius, units, steps) {\n var properties = geojson.properties || {};\n var geometry = (geojson.type === 'Feature') ? geojson.geometry : geojson;\n\n // Geometry Types faster than jsts\n if (geometry.type === 'GeometryCollection') {\n var results = [];\n geomEach(geojson, function (geometry) {\n var buffered = bufferFeature(geometry, radius, units, steps);\n if (buffered) results.push(buffered);\n });\n return featureCollection(results);\n }\n\n // Project GeoJSON to Transverse Mercator projection (convert to Meters)\n var projected;\n var bbox = turfBbox(geojson);\n var needsTransverseMercator = bbox[1] > 50 && bbox[3] > 50;\n\n if (needsTransverseMercator) {\n projected = {\n type: geometry.type,\n coordinates: projectCoords(geometry.coordinates, defineProjection(geometry))\n };\n } else {\n projected = toMercator(geometry);\n }\n\n // JSTS buffer operation\n var reader = new GeoJSONReader();\n var geom = reader.read(projected);\n var distance = radiansToLength(lengthToRadians(radius, units), 'meters');\n var buffered = BufferOp.bufferOp(geom, distance);\n var writer = new GeoJSONWriter();\n buffered = writer.write(buffered);\n\n // Detect if empty geometries\n if (coordsIsNaN(buffered.coordinates)) return undefined;\n\n // Unproject coordinates (convert to Degrees)\n var result;\n if (needsTransverseMercator) {\n result = {\n type: buffered.type,\n coordinates: unprojectCoords(buffered.coordinates, defineProjection(geometry))\n };\n } else {\n result = toWgs84(buffered);\n }\n\n return (result.geometry) ? result : feature(result, properties);\n}\n\n/**\n * Coordinates isNaN\n *\n * @private\n * @param {Array} coords GeoJSON Coordinates\n * @returns {boolean} if NaN exists\n */\nfunction coordsIsNaN(coords) {\n if (Array.isArray(coords[0])) return coordsIsNaN(coords[0]);\n return isNaN(coords[0]);\n}\n\n/**\n * Project coordinates to projection\n *\n * @private\n * @param {Array} coords to project\n * @param {GeoProjection} proj D3 Geo Projection\n * @returns {Array} projected coordinates\n */\nfunction projectCoords(coords, proj) {\n if (typeof coords[0] !== 'object') return proj(coords);\n return coords.map(function (coord) {\n return projectCoords(coord, proj);\n });\n}\n\n/**\n * Un-Project coordinates to projection\n *\n * @private\n * @param {Array} coords to un-project\n * @param {GeoProjection} proj D3 Geo Projection\n * @returns {Array} un-projected coordinates\n */\nfunction unprojectCoords(coords, proj) {\n if (typeof coords[0] !== 'object') return proj.invert(coords);\n return coords.map(function (coord) {\n return unprojectCoords(coord, proj);\n });\n}\n\n/**\n * Define Transverse Mercator projection\n *\n * @private\n * @param {Geometry|Feature} geojson Base projection on center of GeoJSON\n * @returns {GeoProjection} D3 Geo Transverse Mercator Projection\n */\nfunction defineProjection(geojson) {\n var coords = center(geojson).geometry.coordinates.reverse();\n var rotate = coords.map(function (coord) { return -coord; });\n return geoTransverseMercator()\n .center(coords)\n .rotate(rotate)\n .scale(earthRadius);\n}\n\nexport default buffer;\n","import bbox from '@turf/bbox';\nimport { isObject, point } from '@turf/helpers';\n\n/**\n * Takes a {@link Feature} or {@link FeatureCollection} and returns the absolute center point of all features.\n *\n * @name center\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] an Object that is used as the {@link Feature}'s properties\n * @returns {Feature} a Point feature at the absolute center point of all input features\n * @example\n * var features = turf.featureCollection([\n * turf.point( [-97.522259, 35.4691]),\n * turf.point( [-97.502754, 35.463455]),\n * turf.point( [-97.508269, 35.463245])\n * ]);\n *\n * var center = turf.center(features);\n *\n * //addToMap\n * var addToMap = [features, center]\n * center.properties['marker-size'] = 'large';\n * center.properties['marker-color'] = '#000';\n */\nfunction center(geojson, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var properties = options.properties;\n\n // Input validation\n if (!geojson) throw new Error('geojson is required');\n\n var ext = bbox(geojson);\n var x = (ext[0] + ext[2]) / 2;\n var y = (ext[1] + ext[3]) / 2;\n return point([x, y], properties);\n}\n\nexport default center;\n","import { coordEach } from '@turf/meta';\n\n/**\n * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.\n *\n * @name bbox\n * @param {GeoJSON} geojson any GeoJSON object\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);\n * var bbox = turf.bbox(line);\n * var bboxPolygon = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [line, bboxPolygon]\n */\nfunction bbox(geojson) {\n var BBox = [Infinity, Infinity, -Infinity, -Infinity];\n coordEach(geojson, function (coord) {\n if (BBox[0] > coord[0]) BBox[0] = coord[0];\n if (BBox[1] > coord[1]) BBox[1] = coord[1];\n if (BBox[2] < coord[0]) BBox[2] = coord[0];\n if (BBox[3] < coord[1]) BBox[3] = coord[1];\n });\n return BBox;\n}\n\nexport default bbox;\n","import { feature, isObject, lineString, point } from '@turf/helpers';\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords,\n geometryMaybeCollection,\n wrapShrink = 0,\n coordIndex = 0,\n isGeometryCollection,\n type = geojson.type,\n isFeatureCollection = type === 'FeatureCollection',\n isFeature = type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry :\n (isFeature ? geojson.geometry : geojson));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n\n wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0;\n\n switch (geomType) {\n case null:\n break;\n case 'Point':\n if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case 'LineString':\n case 'MultiPoint':\n for (j = 0; j < coords.length; j++) {\n if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n if (geomType === 'MultiPoint') multiFeatureIndex++;\n }\n if (geomType === 'LineString') multiFeatureIndex++;\n break;\n case 'Polygon':\n case 'MultiLineString':\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n if (geomType === 'MultiLineString') multiFeatureIndex++;\n if (geomType === 'Polygon') geometryIndex++;\n }\n if (geomType === 'Polygon') multiFeatureIndex++;\n break;\n case 'MultiPolygon':\n for (j = 0; j < coords.length; j++) {\n if (geomType === 'MultiPolygon') geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case 'GeometryCollection':\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n break;\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n }, excludeWrapCoord);\n return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case 'FeatureCollection':\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case 'Feature':\n callback(geojson.properties, 0);\n break;\n }\n}\n\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function (currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n else previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n if (geojson.type === 'Feature') {\n callback(geojson, 0);\n } else if (geojson.type === 'FeatureCollection') {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function (currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function (coord) {\n coords.push(coord);\n });\n return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG,\n geometryMaybeCollection,\n isGeometryCollection,\n featureProperties,\n featureBBox,\n featureId,\n featureIndex = 0,\n isFeatureCollection = geojson.type === 'FeatureCollection',\n isFeature = geojson.type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (i = 0; i < stop; i++) {\n\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry :\n (isFeature ? geojson.geometry : geojson));\n featureProperties = (isFeatureCollection ? geojson.features[i].properties :\n (isFeature ? geojson.properties : {}));\n featureBBox = (isFeatureCollection ? geojson.features[i].bbox :\n (isFeature ? geojson.bbox : undefined));\n featureId = (isFeatureCollection ? geojson.features[i].id :\n (isFeature ? geojson.id : undefined));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n\n // Handle null Geometry\n if (geometry === null) {\n if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n continue;\n }\n switch (geometry.type) {\n case 'Point':\n case 'LineString':\n case 'MultiPoint':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon': {\n if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n break;\n }\n case 'GeometryCollection': {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n }\n break;\n }\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n });\n return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = (geometry === null) ? null : geometry.type;\n switch (type) {\n case null:\n case 'Point':\n case 'LineString':\n case 'Polygon':\n if (callback(feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false;\n return;\n }\n\n var geomType;\n\n // Callback for multi-geometry\n switch (type) {\n case 'MultiPoint':\n geomType = 'Point';\n break;\n case 'MultiLineString':\n geomType = 'LineString';\n break;\n case 'MultiPolygon':\n geomType = 'Polygon';\n break;\n }\n\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n }\n });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n\n // Exclude null Geometries\n if (!feature$$1.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature$$1.geometry.type;\n if (type === 'Point' || type === 'MultiPoint') return;\n\n // Generate 2-vertex line segments\n var previousCoords;\n if (coordEach(feature$$1, function (currentCoord, coordIndex, featureIndexCoord, mutliPartIndexCoord, geometryIndex) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (previousCoords === undefined) {\n previousCoords = currentCoord;\n return;\n }\n var currentSegment = lineString([previousCoords, currentCoord], feature$$1.properties);\n if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }) === false) return false;\n });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentInex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === undefined) previousValue = currentSegment;\n else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n started = true;\n });\n return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n // validation\n if (!geojson) throw new Error('geojson is required');\n\n flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {\n if (feature$$1.geometry === null) return;\n var type = feature$$1.geometry.type;\n var coords = feature$$1.geometry.coordinates;\n switch (type) {\n case 'LineString':\n if (callback(feature$$1, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n break;\n case 'Polygon':\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(lineString(coords[geometryIndex], feature$$1.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n }\n break;\n }\n });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n });\n return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature>\n */\nfunction findSegment(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature>\n */\nfunction findPoint(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n return point(coords, properties, options);\n case 'MultiPoint':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case 'LineString':\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\nexport { coordEach, coordReduce, propEach, propReduce, featureEach, featureReduce, coordAll, geomEach, geomReduce, flattenEach, flattenReduce, segmentEach, segmentReduce, lineEach, lineReduce, findSegment, findPoint };\n","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = {type: 'Feature'};\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point': geom = point(coordinates).geometry; break;\n case 'LineString': geom = lineString(coordinates).geometry; break;\n case 'Polygon': geom = polygon(coordinates).geometry; break;\n case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n default: throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = {type: 'FeatureCollection'};\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e(t.jsts={})}(this,function(t){\"use strict\";function e(){}function n(t){this.message=t||\"\"}function i(t){this.message=t||\"\"}function r(t){this.message=t||\"\"}function o(){}function s(t){return null===t?Mt:t.color}function a(t){return null===t?null:t.parent}function u(t,e){null!==t&&(t.color=e)}function l(t){return null===t?null:t.left}function c(t){return null===t?null:t.right}function p(){this.root_=null,this.size_=0}function h(){}function f(){this.array_=[],arguments[0]instanceof It&&this.addAll(arguments[0])}function g(){}function d(t){this.message=t||\"\"}function y(){this.array_=[]}\"fill\"in Array.prototype||Object.defineProperty(Array.prototype,\"fill\",{configurable:!0,value:function(t){if(void 0===this||null===this)throw new TypeError(this+\" is not an object\");var e=Object(this),n=Math.max(Math.min(e.length,9007199254740991),0)||0,i=1 in arguments?parseInt(Number(arguments[1]),10)||0:0;i=i<0?Math.max(n+i,0):Math.min(i,n);var r=2 in arguments&&void 0!==arguments[2]?parseInt(Number(arguments[2]),10)||0:n;for(r=r<0?Math.max(n+arguments[2],0):Math.min(r,n);ie.x?1:this.ye.y?1:0},C.prototype.clone=function(){},C.prototype.copy=function(){return new C(this)},C.prototype.toString=function(){return\"(\"+this.x+\", \"+this.y+\", \"+this.z+\")\"},C.prototype.distance3D=function(t){var e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return Math.sqrt(e*e+n*n+i*i)},C.prototype.distance=function(t){var e=this.x-t.x,n=this.y-t.y;return Math.sqrt(e*e+n*n)},C.prototype.hashCode=function(){var t=17;return t=37*t+C.hashCode(this.x),t=37*t+C.hashCode(this.y)},C.prototype.setCoordinate=function(t){this.x=t.x,this.y=t.y,this.z=t.z},C.prototype.interfaces_=function(){return[E,x,e]},C.prototype.getClass=function(){return C},C.hashCode=function(){if(1===arguments.length){var t=arguments[0],e=v.doubleToLongBits(t);return Math.trunc((e^e)>>>32)}},S.DimensionalComparator.get=function(){return L},S.serialVersionUID.get=function(){return 0x5cbf2c235c7e5800},S.NULL_ORDINATE.get=function(){return v.NaN},S.X.get=function(){return 0},S.Y.get=function(){return 1},S.Z.get=function(){return 2},Object.defineProperties(C,S);var L=function(t){if(this._dimensionsToTest=2,0===arguments.length);else if(1===arguments.length){var e=arguments[0];if(2!==e&&3!==e)throw new m(\"only 2 or 3 dimensions may be specified\");this._dimensionsToTest=e}};L.prototype.compare=function(t,e){var n=t,i=e,r=L.compare(n.x,i.x);if(0!==r)return r;var o=L.compare(n.y,i.y);if(0!==o)return o;if(this._dimensionsToTest<=2)return 0;return L.compare(n.z,i.z)},L.prototype.interfaces_=function(){return[N]},L.prototype.getClass=function(){return L},L.compare=function(t,e){return te?1:v.isNaN(t)?v.isNaN(e)?0:-1:v.isNaN(e)?1:0};var b=function(){};b.prototype.create=function(){},b.prototype.interfaces_=function(){return[]},b.prototype.getClass=function(){return b};var w=function(){},O={INTERIOR:{configurable:!0},BOUNDARY:{configurable:!0},EXTERIOR:{configurable:!0},NONE:{configurable:!0}};w.prototype.interfaces_=function(){return[]},w.prototype.getClass=function(){return w},w.toLocationSymbol=function(t){switch(t){case w.EXTERIOR:return\"e\";case w.BOUNDARY:return\"b\";case w.INTERIOR:return\"i\";case w.NONE:return\"-\"}throw new m(\"Unknown location value: \"+t)},O.INTERIOR.get=function(){return 0},O.BOUNDARY.get=function(){return 1},O.EXTERIOR.get=function(){return 2},O.NONE.get=function(){return-1},Object.defineProperties(w,O);var T=function(t,e){return t.interfaces_&&t.interfaces_().indexOf(e)>-1},R=function(){},P={LOG_10:{configurable:!0}};R.prototype.interfaces_=function(){return[]},R.prototype.getClass=function(){return R},R.log10=function(t){var e=Math.log(t);return v.isInfinite(e)?e:v.isNaN(e)?e:e/R.LOG_10},R.min=function(t,e,n,i){var r=t;return en?n:t}if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var i=arguments[0],r=arguments[1],o=arguments[2];return io?o:i}},R.wrap=function(t,e){return t<0?e- -t%e:t%e},R.max=function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=t;return e>i&&(i=e),n>i&&(i=n),i}if(4===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3],u=r;return o>u&&(u=o),s>u&&(u=s),a>u&&(u=a),u}},R.average=function(t,e){return(t+e)/2},P.LOG_10.get=function(){return Math.log(10)},Object.defineProperties(R,P);var D=function(t){this.str=t};D.prototype.append=function(t){this.str+=t},D.prototype.setCharAt=function(t,e){this.str=this.str.substr(0,t)+e+this.str.substr(t+1)},D.prototype.toString=function(t){return this.str};var M=function(t){this.value=t};M.prototype.intValue=function(){return this.value},M.prototype.compareTo=function(t){return this.valuet?1:0},M.isNaN=function(t){return Number.isNaN(t)};var A=function(){};A.isWhitespace=function(t){return t<=32&&t>=0||127===t},A.toUpperCase=function(t){return t.toUpperCase()};var F=function t(){if(this._hi=0,this._lo=0,0===arguments.length)this.init(0);else if(1===arguments.length){if(\"number\"==typeof arguments[0]){var e=arguments[0];this.init(e)}else if(arguments[0]instanceof t){var n=arguments[0];this.init(n)}else if(\"string\"==typeof arguments[0]){var i=arguments[0];t.call(this,t.parse(i))}}else if(2===arguments.length){var r=arguments[0],o=arguments[1];this.init(r,o)}},G={PI:{configurable:!0},TWO_PI:{configurable:!0},PI_2:{configurable:!0},E:{configurable:!0},NaN:{configurable:!0},EPS:{configurable:!0},SPLIT:{configurable:!0},MAX_PRINT_DIGITS:{configurable:!0},TEN:{configurable:!0},ONE:{configurable:!0},SCI_NOT_EXPONENT_CHAR:{configurable:!0},SCI_NOT_ZERO:{configurable:!0}};F.prototype.le=function(t){return(this._hi9?(c=!0,p=\"9\"):p=\"0\"+l,s.append(p),n=n.subtract(F.valueOf(l)).multiply(F.TEN),c&&n.selfAdd(F.TEN);var h=!0,f=F.magnitude(n._hi);if(f<0&&Math.abs(f)>=a-u&&(h=!1),!h)break}return e[0]=i,s.toString()},F.prototype.sqr=function(){return this.multiply(this)},F.prototype.doubleValue=function(){return this._hi+this._lo},F.prototype.subtract=function(){if(arguments[0]instanceof F){var t=arguments[0];return this.add(t.negate())}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.add(-e)}},F.prototype.equals=function(){if(1===arguments.length){var t=arguments[0];return this._hi===t._hi&&this._lo===t._lo}},F.prototype.isZero=function(){return 0===this._hi&&0===this._lo},F.prototype.selfSubtract=function(){if(arguments[0]instanceof F){var t=arguments[0];return this.isNaN()?this:this.selfAdd(-t._hi,-t._lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.isNaN()?this:this.selfAdd(-e,0)}},F.prototype.getSpecialNumberString=function(){return this.isZero()?\"0.0\":this.isNaN()?\"NaN \":null},F.prototype.min=function(t){return this.le(t)?this:t},F.prototype.selfDivide=function(){if(1===arguments.length){if(arguments[0]instanceof F){var t=arguments[0];return this.selfDivide(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.selfDivide(e,0)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1],r=null,o=null,s=null,a=null,u=null,l=null,c=null,p=null;return u=this._hi/n,l=F.SPLIT*u,r=l-u,p=F.SPLIT*n,r=l-r,o=u-r,s=p-n,c=u*n,s=p-s,a=n-s,p=r*s-c+r*a+o*s+o*a,l=(this._hi-c-p+this._lo-u*i)/n,p=u+l,this._hi=p,this._lo=u-p+l,this}},F.prototype.dump=function(){return\"DD<\"+this._hi+\", \"+this._lo+\">\"},F.prototype.divide=function(){if(arguments[0]instanceof F){var t=arguments[0],e=null,n=null,i=null,r=null,o=null,s=null,a=null,u=null;n=(o=this._hi/t._hi)-(e=(s=F.SPLIT*o)-(e=s-o)),u=e*(i=(u=F.SPLIT*t._hi)-(i=u-t._hi))-(a=o*t._hi)+e*(r=t._hi-i)+n*i+n*r,s=(this._hi-a-u+this._lo-o*t._lo)/t._hi;return new F(u=o+s,o-u+s)}if(\"number\"==typeof arguments[0]){var l=arguments[0];return v.isNaN(l)?F.createNaN():F.copy(this).selfDivide(l,0)}},F.prototype.ge=function(t){return(this._hi>t._hi||this._hi===t._hi)&&this._lo>=t._lo},F.prototype.pow=function(t){if(0===t)return F.valueOf(1);var e=new F(this),n=F.valueOf(1),i=Math.abs(t);if(i>1)for(;i>0;)i%2==1&&n.selfMultiply(e),(i/=2)>0&&(e=e.sqr());else n=e;return t<0?n.reciprocal():n},F.prototype.ceil=function(){if(this.isNaN())return F.NaN;var t=Math.ceil(this._hi),e=0;return t===this._hi&&(e=Math.ceil(this._lo)),new F(t,e)},F.prototype.compareTo=function(t){var e=t;return this._hie._hi?1:this._loe._lo?1:0},F.prototype.rint=function(){if(this.isNaN())return this;return this.add(.5).floor()},F.prototype.setValue=function(){if(arguments[0]instanceof F){var t=arguments[0];return this.init(t),this}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.init(e),this}},F.prototype.max=function(t){return this.ge(t)?this:t},F.prototype.sqrt=function(){if(this.isZero())return F.valueOf(0);if(this.isNegative())return F.NaN;var t=1/Math.sqrt(this._hi),e=this._hi*t,n=F.valueOf(e),i=this.subtract(n.sqr())._hi*(.5*t);return n.add(i)},F.prototype.selfAdd=function(){if(1===arguments.length){if(arguments[0]instanceof F){var t=arguments[0];return this.selfAdd(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0],n=null,i=null,r=null,o=null,s=null,a=null;return r=this._hi+e,s=r-this._hi,o=r-s,o=e-s+(this._hi-o),a=o+this._lo,n=r+a,i=a+(r-n),this._hi=n+i,this._lo=i+(n-this._hi),this}}else if(2===arguments.length){var u=arguments[0],l=arguments[1],c=null,p=null,h=null,f=null,g=null,d=null,y=null;f=this._hi+u,p=this._lo+l,g=f-(d=f-this._hi),h=p-(y=p-this._lo);var _=(c=f+(d=(g=u-d+(this._hi-g))+p))+(d=(h=l-y+(this._lo-h))+(d+(f-c))),m=d+(c-_);return this._hi=_,this._lo=m,this}},F.prototype.selfMultiply=function(){if(1===arguments.length){if(arguments[0]instanceof F){var t=arguments[0];return this.selfMultiply(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.selfMultiply(e,0)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1],r=null,o=null,s=null,a=null,u=null,l=null;r=(u=F.SPLIT*this._hi)-this._hi,l=F.SPLIT*n,r=u-r,o=this._hi-r,s=l-n;var c=(u=this._hi*n)+(l=r*(s=l-s)-u+r*(a=n-s)+o*s+o*a+(this._hi*i+this._lo*n)),p=l+(r=u-c);return this._hi=c,this._lo=p,this}},F.prototype.selfSqr=function(){return this.selfMultiply(this)},F.prototype.floor=function(){if(this.isNaN())return F.NaN;var t=Math.floor(this._hi),e=0;return t===this._hi&&(e=Math.floor(this._lo)),new F(t,e)},F.prototype.negate=function(){return this.isNaN()?this:new F(-this._hi,-this._lo)},F.prototype.clone=function(){},F.prototype.multiply=function(){if(arguments[0]instanceof F){var t=arguments[0];return t.isNaN()?F.createNaN():F.copy(this).selfMultiply(t)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return v.isNaN(e)?F.createNaN():F.copy(this).selfMultiply(e,0)}},F.prototype.isNaN=function(){return v.isNaN(this._hi)},F.prototype.intValue=function(){return Math.trunc(this._hi)},F.prototype.toString=function(){var t=F.magnitude(this._hi);return t>=-3&&t<=20?this.toStandardNotation():this.toSciNotation()},F.prototype.toStandardNotation=function(){var t=this.getSpecialNumberString();if(null!==t)return t;var e=new Array(1).fill(null),n=this.extractSignificantDigits(!0,e),i=e[0]+1,r=n;if(\".\"===n.charAt(0))r=\"0\"+n;else if(i<0)r=\"0.\"+F.stringOfChar(\"0\",-i)+n;else if(-1===n.indexOf(\".\")){var o=i-n.length;r=n+F.stringOfChar(\"0\",o)+\".0\"}return this.isNegative()?\"-\"+r:r},F.prototype.reciprocal=function(){var t=null,e=null,n=null,i=null,r=null,o=null,s=null,a=null;e=(r=1/this._hi)-(t=(o=F.SPLIT*r)-(t=o-r)),n=(a=F.SPLIT*this._hi)-this._hi;var u=r+(o=(1-(s=r*this._hi)-(a=t*(n=a-n)-s+t*(i=this._hi-n)+e*n+e*i)-r*this._lo)/this._hi);return new F(u,r-u+o)},F.prototype.toSciNotation=function(){if(this.isZero())return F.SCI_NOT_ZERO;var t=this.getSpecialNumberString();if(null!==t)return t;var e=new Array(1).fill(null),n=this.extractSignificantDigits(!1,e),i=F.SCI_NOT_EXPONENT_CHAR+e[0];if(\"0\"===n.charAt(0))throw new Error(\"Found leading zero: \"+n);var r=\"\";n.length>1&&(r=n.substring(1));var o=n.charAt(0)+\".\"+r;return this.isNegative()?\"-\"+o+i:o+i},F.prototype.abs=function(){return this.isNaN()?F.NaN:this.isNegative()?this.negate():new F(this)},F.prototype.isPositive=function(){return(this._hi>0||0===this._hi)&&this._lo>0},F.prototype.lt=function(t){return(this._hit._hi||this._hi===t._hi)&&this._lo>t._lo},F.prototype.isNegative=function(){return(this._hi<0||0===this._hi)&&this._lo<0},F.prototype.trunc=function(){return this.isNaN()?F.NaN:this.isPositive()?this.floor():this.ceil()},F.prototype.signum=function(){return this._hi>0?1:this._hi<0?-1:this._lo>0?1:this._lo<0?-1:0},F.prototype.interfaces_=function(){return[e,E,x]},F.prototype.getClass=function(){return F},F.sqr=function(t){return F.valueOf(t).selfMultiply(t)},F.valueOf=function(){if(\"string\"==typeof arguments[0]){var t=arguments[0];return F.parse(t)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return new F(e)}},F.sqrt=function(t){return F.valueOf(t).sqrt()},F.parse=function(t){for(var e=0,n=t.length;A.isWhitespace(t.charAt(e));)e++;var i=!1;if(e=n);){var l=t.charAt(e);if(e++,A.isDigit(l)){var c=l-\"0\";o.selfMultiply(F.TEN),o.selfAdd(c),s++}else{if(\".\"!==l){if(\"e\"===l||\"E\"===l){var p=t.substring(e);try{u=M.parseInt(p)}catch(e){throw e instanceof Error?new Error(\"Invalid exponent \"+p+\" in string \"+t):e}break}throw new Error(\"Unexpected character '\"+l+\"' at position \"+e+\" in string \"+t)}a=s}}var h=o,f=s-a-u;if(0===f)h=o;else if(f>0){var g=F.TEN.pow(f);h=o.divide(g)}else if(f<0){var d=F.TEN.pow(-f);h=o.multiply(d)}return i?h.negate():h},F.createNaN=function(){return new F(v.NaN,v.NaN)},F.copy=function(t){return new F(t)},F.magnitude=function(t){var e=Math.abs(t),n=Math.log(e)/Math.log(10),i=Math.trunc(Math.floor(n));return 10*Math.pow(10,i)<=e&&(i+=1),i},F.stringOfChar=function(t,e){for(var n=new D,i=0;i0){if(o<=0)return q.signum(s);i=r+o}else{if(!(r<0))return q.signum(s);if(o>=0)return q.signum(s);i=-r-o}var a=q.DP_SAFE_EPSILON*i;return s>=a||-s>=a?q.signum(s):2},q.signum=function(t){return t>0?1:t<0?-1:0},B.DP_SAFE_EPSILON.get=function(){return 1e-15},Object.defineProperties(q,B);var V=function(){},U={X:{configurable:!0},Y:{configurable:!0},Z:{configurable:!0},M:{configurable:!0}};U.X.get=function(){return 0},U.Y.get=function(){return 1},U.Z.get=function(){return 2},U.M.get=function(){return 3},V.prototype.setOrdinate=function(t,e,n){},V.prototype.size=function(){},V.prototype.getOrdinate=function(t,e){},V.prototype.getCoordinate=function(){},V.prototype.getCoordinateCopy=function(t){},V.prototype.getDimension=function(){},V.prototype.getX=function(t){},V.prototype.clone=function(){},V.prototype.expandEnvelope=function(t){},V.prototype.copy=function(){},V.prototype.getY=function(t){},V.prototype.toCoordinateArray=function(){},V.prototype.interfaces_=function(){return[x]},V.prototype.getClass=function(){return V},Object.defineProperties(V,U);var z=function(){},X=function(t){function e(){t.call(this,\"Projective point not representable on the Cartesian plane.\")}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(z),Y=function(){};Y.arraycopy=function(t,e,n,i,r){for(var o=0,s=e;st._minx?this._minx:t._minx,n=this._miny>t._miny?this._miny:t._miny,i=this._maxx=this._minx&&e.getMaxX()<=this._maxx&&e.getMinY()>=this._miny&&e.getMaxY()<=this._maxy)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];return!this.isNull()&&(n>=this._minx&&n<=this._maxx&&i>=this._miny&&i<=this._maxy)}},j.prototype.intersects=function(){if(1===arguments.length){if(arguments[0]instanceof j){var t=arguments[0];return!this.isNull()&&!t.isNull()&&!(t._minx>this._maxx||t._maxxthis._maxy||t._maxythis._maxx||nthis._maxy||ithis._maxx&&(this._maxx=e._maxx),e._minythis._maxy&&(this._maxy=e._maxy))}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.isNull()?(this._minx=n,this._maxx=n,this._miny=i,this._maxy=i):(nthis._maxx&&(this._maxx=n),ithis._maxy&&(this._maxy=i))}},j.prototype.minExtent=function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return te._minx?1:this._minye._miny?1:this._maxxe._maxx?1:this._maxye._maxy?1:0},j.prototype.translate=function(t,e){if(this.isNull())return null;this.init(this.getMinX()+t,this.getMaxX()+t,this.getMinY()+e,this.getMaxY()+e)},j.prototype.toString=function(){return\"Env[\"+this._minx+\" : \"+this._maxx+\", \"+this._miny+\" : \"+this._maxy+\"]\"},j.prototype.setToNull=function(){this._minx=0,this._maxx=-1,this._miny=0,this._maxy=-1},j.prototype.getHeight=function(){return this.isNull()?0:this._maxy-this._miny},j.prototype.maxExtent=function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t>e?t:e},j.prototype.expandBy=function(){if(1===arguments.length){var t=arguments[0];this.expandBy(t,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this.isNull())return null;this._minx-=e,this._maxx+=e,this._miny-=n,this._maxy+=n,(this._minx>this._maxx||this._miny>this._maxy)&&this.setToNull()}},j.prototype.contains=function(){if(1===arguments.length){if(arguments[0]instanceof j){var t=arguments[0];return this.covers(t)}if(arguments[0]instanceof C){var e=arguments[0];return this.covers(e)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];return this.covers(n,i)}},j.prototype.centre=function(){return this.isNull()?null:new C((this.getMinX()+this.getMaxX())/2,(this.getMinY()+this.getMaxY())/2)},j.prototype.init=function(){if(0===arguments.length)this.setToNull();else if(1===arguments.length){if(arguments[0]instanceof C){var t=arguments[0];this.init(t.x,t.x,t.y,t.y)}else if(arguments[0]instanceof j){var e=arguments[0];this._minx=e._minx,this._maxx=e._maxx,this._miny=e._miny,this._maxy=e._maxy}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.init(n.x,i.x,n.y,i.y)}else if(4===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3];rt._maxx&&(e=this._minx-t._maxx);var n=0;return this._maxyt._maxy&&(n=this._miny-t._maxy),0===e?n:0===n?e:Math.sqrt(e*e+n*n)},j.prototype.hashCode=function(){var t=17;return t=37*t+C.hashCode(this._minx),t=37*t+C.hashCode(this._maxx),t=37*t+C.hashCode(this._miny),t=37*t+C.hashCode(this._maxy)},j.prototype.interfaces_=function(){return[E,e]},j.prototype.getClass=function(){return j},j.intersects=function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2];return n.x>=(t.xe.x?t.x:e.x)&&n.y>=(t.ye.y?t.y:e.y)}if(4===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2],s=arguments[3],a=Math.min(o.x,s.x),u=Math.max(o.x,s.x),l=Math.min(i.x,r.x),c=Math.max(i.x,r.x);return!(l>u)&&(!(cu)&&!(cthis.getEdgeDistance(t,1)?(this._intLineIndex[t][0]=0,this._intLineIndex[t][1]=1):(this._intLineIndex[t][0]=1,this._intLineIndex[t][1]=0)}},nt.prototype.isProper=function(){return this.hasIntersection()&&this._isProper},nt.prototype.setPrecisionModel=function(t){this._precisionModel=t},nt.prototype.isInteriorIntersection=function(){if(0===arguments.length)return!!this.isInteriorIntersection(0)||!!this.isInteriorIntersection(1);if(1===arguments.length){for(var t=arguments[0],e=0;er?i:r;else{var s=Math.abs(t.x-e.x),a=Math.abs(t.y-e.y);0!==(o=i>r?s:a)||t.equals(e)||(o=Math.max(s,a))}return et.isTrue(!(0===o&&!t.equals(e)),\"Bad distance calculation\"),o},nt.nonRobustComputeEdgeDistance=function(t,e,n){var i=t.x-e.x,r=t.y-e.y,o=Math.sqrt(i*i+r*r);return et.isTrue(!(0===o&&!t.equals(e)),\"Invalid distance calculation\"),o},it.DONT_INTERSECT.get=function(){return 0},it.DO_INTERSECT.get=function(){return 1},it.COLLINEAR.get=function(){return 2},it.NO_INTERSECTION.get=function(){return 0},it.POINT_INTERSECTION.get=function(){return 1},it.COLLINEAR_INTERSECTION.get=function(){return 2},Object.defineProperties(nt,it);var rt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isInSegmentEnvelopes=function(t){var e=new j(this._inputLines[0][0],this._inputLines[0][1]),n=new j(this._inputLines[1][0],this._inputLines[1][1]);return e.contains(t)&&n.contains(t)},e.prototype.computeIntersection=function(){if(3!==arguments.length)return t.prototype.computeIntersection.apply(this,arguments);var e=arguments[0],n=arguments[1],i=arguments[2];if(this._isProper=!1,j.intersects(n,i,e)&&0===at.orientationIndex(n,i,e)&&0===at.orientationIndex(i,n,e))return this._isProper=!0,(e.equals(n)||e.equals(i))&&(this._isProper=!1),this._result=t.POINT_INTERSECTION,null;this._result=t.NO_INTERSECTION},e.prototype.normalizeToMinimum=function(t,e,n,i,r){r.x=this.smallestInAbsValue(t.x,e.x,n.x,i.x),r.y=this.smallestInAbsValue(t.y,e.y,n.y,i.y),t.x-=r.x,t.y-=r.y,e.x-=r.x,e.y-=r.y,n.x-=r.x,n.y-=r.y,i.x-=r.x,i.y-=r.y},e.prototype.safeHCoordinateIntersection=function(t,n,i,r){var o=null;try{o=k.intersection(t,n,i,r)}catch(s){if(!(s instanceof X))throw s;o=e.nearestEndpoint(t,n,i,r)}return o},e.prototype.intersection=function(t,n,i,r){var o=this.intersectionWithNormalization(t,n,i,r);return this.isInSegmentEnvelopes(o)||(o=new C(e.nearestEndpoint(t,n,i,r))),null!==this._precisionModel&&this._precisionModel.makePrecise(o),o},e.prototype.smallestInAbsValue=function(t,e,n,i){var r=t,o=Math.abs(r);return Math.abs(e)1e-4&&Y.out.println(\"Distance = \"+r.distance(o))},e.prototype.intersectionWithNormalization=function(t,e,n,i){var r=new C(t),o=new C(e),s=new C(n),a=new C(i),u=new C;this.normalizeToEnvCentre(r,o,s,a,u);var l=this.safeHCoordinateIntersection(r,o,s,a);return l.x+=u.x,l.y+=u.y,l},e.prototype.computeCollinearIntersection=function(e,n,i,r){var o=j.intersects(e,n,i),s=j.intersects(e,n,r),a=j.intersects(i,r,e),u=j.intersects(i,r,n);return o&&s?(this._intPt[0]=i,this._intPt[1]=r,t.COLLINEAR_INTERSECTION):a&&u?(this._intPt[0]=e,this._intPt[1]=n,t.COLLINEAR_INTERSECTION):o&&a?(this._intPt[0]=i,this._intPt[1]=e,!i.equals(e)||s||u?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):o&&u?(this._intPt[0]=i,this._intPt[1]=n,!i.equals(n)||s||a?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):s&&a?(this._intPt[0]=r,this._intPt[1]=e,!r.equals(e)||o||u?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):s&&u?(this._intPt[0]=r,this._intPt[1]=n,!r.equals(n)||o||a?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):t.NO_INTERSECTION},e.prototype.normalizeToEnvCentre=function(t,e,n,i,r){var o=t.xe.x?t.x:e.x,u=t.y>e.y?t.y:e.y,l=n.xi.x?n.x:i.x,h=n.y>i.y?n.y:i.y,f=((o>l?o:l)+(ac?s:c)+(u0&&s>0||o<0&&s<0)return t.NO_INTERSECTION;var a=at.orientationIndex(i,r,e),u=at.orientationIndex(i,r,n);if(a>0&&u>0||a<0&&u<0)return t.NO_INTERSECTION;return 0===o&&0===s&&0===a&&0===u?this.computeCollinearIntersection(e,n,i,r):(0===o||0===s||0===a||0===u?(this._isProper=!1,e.equals2D(i)||e.equals2D(r)?this._intPt[0]=e:n.equals2D(i)||n.equals2D(r)?this._intPt[0]=n:0===o?this._intPt[0]=new C(i):0===s?this._intPt[0]=new C(r):0===a?this._intPt[0]=new C(e):0===u&&(this._intPt[0]=new C(n))):(this._isProper=!0,this._intPt[0]=this.intersection(e,n,i,r)),t.POINT_INTERSECTION)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.nearestEndpoint=function(t,e,n,i){var r=t,o=at.distancePointLine(t,n,i),s=at.distancePointLine(e,n,i);return s0?n>0?-r:r:n>0?r:-r;if(0===e||0===n)return i>0?t>0?r:-r:t>0?-r:r;if(e>0?i>0?e<=i||(r=-r,o=t,t=n,n=o,o=e,e=i,i=o):e<=-i?(r=-r,n=-n,i=-i):(o=t,t=-n,n=o,o=e,e=-i,i=o):i>0?-e<=i?(r=-r,t=-t,e=-e):(o=-t,t=n,n=o,o=-e,e=i,i=o):e>=i?(t=-t,e=-e,n=-n,i=-i):(r=-r,o=-t,t=-n,n=o,o=-e,e=-i,i=o),t>0){if(!(n>0))return r;if(!(t<=n))return r}else{if(n>0)return-r;if(!(t>=n))return-r;r=-r,t=-t,n=-n}for(;;){if(s=Math.floor(n/t),n-=s*t,(i-=s*e)<0)return-r;if(i>e)return r;if(t>n+n){if(ei+i)return-r;n=t-n,i=e-i,r=-r}if(0===i)return 0===n?0:-r;if(0===n)return r;if(s=Math.floor(t/n),t-=s*n,(e-=s*i)<0)return r;if(e>i)return-r;if(n>t+t){if(ie+e)return r;t=n-t,e=i-e,r=-r}if(0===e)return 0===t?0:r;if(0===t)return-r}};var st=function(){this._p=null,this._crossingCount=0,this._isPointOnSegment=!1;var t=arguments[0];this._p=t};st.prototype.countSegment=function(t,e){if(t.xi&&(n=e.x,i=t.x),this._p.x>=n&&this._p.x<=i&&(this._isPointOnSegment=!0),null}if(t.y>this._p.y&&e.y<=this._p.y||e.y>this._p.y&&t.y<=this._p.y){var r=t.x-this._p.x,o=t.y-this._p.y,s=e.x-this._p.x,a=e.y-this._p.y,u=ot.signOfDet2x2(r,o,s,a);if(0===u)return this._isPointOnSegment=!0,null;a0&&this._crossingCount++}},st.prototype.isPointInPolygon=function(){return this.getLocation()!==w.EXTERIOR},st.prototype.getLocation=function(){return this._isPointOnSegment?w.BOUNDARY:this._crossingCount%2==1?w.INTERIOR:w.EXTERIOR},st.prototype.isOnSegment=function(){return this._isPointOnSegment},st.prototype.interfaces_=function(){return[]},st.prototype.getClass=function(){return st},st.locatePointInRing=function(){if(arguments[0]instanceof C&&T(arguments[1],V)){for(var t=arguments[0],e=arguments[1],n=new st(t),i=new C,r=new C,o=1;o1||a<0||a>1)&&(r=!0)}}else r=!0;return r?R.min(at.distancePointLine(t,n,i),at.distancePointLine(e,n,i),at.distancePointLine(n,t,e),at.distancePointLine(i,t,e)):0},at.isPointInRing=function(t,e){return at.locatePointInRing(t,e)!==w.EXTERIOR},at.computeLength=function(t){var e=t.size();if(e<=1)return 0;var n=0,i=new C;t.getCoordinate(0,i);for(var r=i.x,o=i.y,s=1;sn.y&&(n=o,i=r)}var s=i;do{(s-=1)<0&&(s=e)}while(t[s].equals2D(n)&&s!==i);var a=i;do{a=(a+1)%e}while(t[a].equals2D(n)&&a!==i);var u=t[s],l=t[a];if(u.equals2D(n)||l.equals2D(n)||u.equals2D(l))return!1;var c=at.computeOrientation(u,n,l),p=!1;return p=0===c?u.x>l.x:c>0,p},at.locatePointInRing=function(t,e){return st.locatePointInRing(t,e)},at.distancePointLinePerpendicular=function(t,e,n){var i=(n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y),r=((e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y))/i;return Math.abs(r)*Math.sqrt(i)},at.computeOrientation=function(t,e,n){return at.orientationIndex(t,e,n)},at.distancePointLine=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];if(0===e.length)throw new m(\"Line array must contain at least one vertex\");for(var n=t.distance(e[0]),i=0;i=1)return o.distance(a);var c=((s.y-o.y)*(a.x-s.x)-(s.x-o.x)*(a.y-s.y))/u;return Math.abs(c)*Math.sqrt(u)}},at.isOnLine=function(t,e){for(var n=new rt,i=1;i0},_t.prototype.interfaces_=function(){return[gt]},_t.prototype.getClass=function(){return _t};var mt=function(){};mt.prototype.isInBoundary=function(t){return t>1},mt.prototype.interfaces_=function(){return[gt]},mt.prototype.getClass=function(){return mt};var vt=function(){};vt.prototype.isInBoundary=function(t){return 1===t},vt.prototype.interfaces_=function(){return[gt]},vt.prototype.getClass=function(){return vt};var It=function(){};It.prototype.add=function(){},It.prototype.addAll=function(){},It.prototype.isEmpty=function(){},It.prototype.iterator=function(){},It.prototype.size=function(){},It.prototype.toArray=function(){},It.prototype.remove=function(){},(n.prototype=new Error).name=\"IndexOutOfBoundsException\";var Et=function(){};Et.prototype.hasNext=function(){},Et.prototype.next=function(){},Et.prototype.remove=function(){};var xt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(){},e.prototype.set=function(){},e.prototype.isEmpty=function(){},e}(It);(i.prototype=new Error).name=\"NoSuchElementException\";var Nt=function(t){function e(){t.call(this),this.array_=[],arguments[0]instanceof It&&this.addAll(arguments[0])}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.ensureCapacity=function(){},e.prototype.interfaces_=function(){return[t,It]},e.prototype.add=function(t){return 1===arguments.length?this.array_.push(t):this.array_.splice(arguments[0],arguments[1]),!0},e.prototype.clear=function(){this.array_=[]},e.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next());return!0},e.prototype.set=function(t,e){var n=this.array_[t];return this.array_[t]=e,n},e.prototype.iterator=function(){return new Ct(this)},e.prototype.get=function(t){if(t<0||t>=this.size())throw new n;return this.array_[t]},e.prototype.isEmpty=function(){return 0===this.array_.length},e.prototype.size=function(){return this.array_.length},e.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;e=1){if(this.get(this.size()-1).equals2D(r))return null}t.prototype.add.call(this,r)}else if(arguments[0]instanceof Object&&\"boolean\"==typeof arguments[1]){var o=arguments[0],s=arguments[1];return this.add(o,s),!0}}else if(3===arguments.length){if(\"boolean\"==typeof arguments[2]&&arguments[0]instanceof Array&&\"boolean\"==typeof arguments[1]){var a=arguments[0],u=arguments[1];if(arguments[2])for(var l=0;l=0;c--)this.add(a[c],u);return!0}if(\"boolean\"==typeof arguments[2]&&Number.isInteger(arguments[0])&&arguments[1]instanceof C){var p=arguments[0],h=arguments[1];if(!arguments[2]){var f=this.size();if(f>0){if(p>0){if(this.get(p-1).equals2D(h))return null}if(p_&&(m=-1);for(var v=y;v!==_;v+=m)this.add(g[v],d);return!0}},e.prototype.closeRing=function(){this.size()>0&&this.add(new C(this.get(0)),!1)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},Object.defineProperties(e,n),e}(Nt),Lt=function(){},bt={ForwardComparator:{configurable:!0},BidirectionalComparator:{configurable:!0},coordArrayType:{configurable:!0}};bt.ForwardComparator.get=function(){return wt},bt.BidirectionalComparator.get=function(){return Ot},bt.coordArrayType.get=function(){return new Array(0).fill(null)},Lt.prototype.interfaces_=function(){return[]},Lt.prototype.getClass=function(){return Lt},Lt.isRing=function(t){return!(t.length<4)&&!!t[0].equals2D(t[t.length-1])},Lt.ptNotInList=function(t,e){for(var n=0;n=t?e:[]},Lt.indexOf=function(t,e){for(var n=0;n0)&&(e=t[n]);return e},Lt.extract=function(t,e,n){e=R.clamp(e,0,t.length);var i=(n=R.clamp(n,-1,t.length))-e+1;n<0&&(i=0),e>=t.length&&(i=0),ni.length)return 1;if(0===n.length)return 0;var r=Lt.compare(n,i);return Lt.isEqualReversed(n,i)?0:r},Ot.prototype.OLDcompare=function(t,e){var n=t,i=e;if(n.lengthi.length)return 1;if(0===n.length)return 0;for(var r=Lt.increasingDirection(n),o=Lt.increasingDirection(i),s=r>0?0:n.length-1,a=o>0?0:n.length-1,u=0;u0))return e.value;e=e.right}}return null},p.prototype.put=function(t,e){if(null===this.root_)return this.root_={key:t,value:e,left:null,right:null,parent:null,color:Mt,getValue:function(){return this.value},getKey:function(){return this.key}},this.size_=1,null;var n,i,r=this.root_;do{if(n=r,(i=t.compareTo(r.key))<0)r=r.left;else{if(!(i>0)){var o=r.value;return r.value=e,o}r=r.right}}while(null!==r);var s={key:t,left:null,right:null,value:e,parent:n,color:Mt,getValue:function(){return this.value},getKey:function(){return this.key}};return i<0?n.left=s:n.right=s,this.fixAfterInsertion(s),this.size_++,null},p.prototype.fixAfterInsertion=function(t){for(t.color=1;null!=t&&t!==this.root_&&1===t.parent.color;)if(a(t)===l(a(a(t)))){var e=c(a(a(t)));1===s(e)?(u(a(t),Mt),u(e,Mt),u(a(a(t)),1),t=a(a(t))):(t===c(a(t))&&(t=a(t),this.rotateLeft(t)),u(a(t),Mt),u(a(a(t)),1),this.rotateRight(a(a(t))))}else{var n=l(a(a(t)));1===s(n)?(u(a(t),Mt),u(n,Mt),u(a(a(t)),1),t=a(a(t))):(t===l(a(t))&&(t=a(t),this.rotateRight(t)),u(a(t),Mt),u(a(a(t)),1),this.rotateLeft(a(a(t))))}this.root_.color=Mt},p.prototype.values=function(){var t=new Nt,e=this.getFirstEntry();if(null!==e)for(t.add(e.value);null!==(e=p.successor(e));)t.add(e.value);return t},p.prototype.entrySet=function(){var t=new Pt,e=this.getFirstEntry();if(null!==e)for(t.add(e);null!==(e=p.successor(e));)t.add(e);return t},p.prototype.rotateLeft=function(t){if(null!=t){var e=t.right;t.right=e.left,null!=e.left&&(e.left.parent=t),e.parent=t.parent,null===t.parent?this.root_=e:t.parent.left===t?t.parent.left=e:t.parent.right=e,e.left=t,t.parent=e}},p.prototype.rotateRight=function(t){if(null!=t){var e=t.left;t.left=e.right,null!=e.right&&(e.right.parent=t),e.parent=t.parent,null===t.parent?this.root_=e:t.parent.right===t?t.parent.right=e:t.parent.left=e,e.right=t,t.parent=e}},p.prototype.getFirstEntry=function(){var t=this.root_;if(null!=t)for(;null!=t.left;)t=t.left;return t},p.successor=function(t){if(null===t)return null;if(null!==t.right){for(var e=t.right;null!==e.left;)e=e.left;return e}for(var n=t.parent,i=t;null!==n&&i===n.right;)i=n,n=n.parent;return n},p.prototype.size=function(){return this.size_};var At=function(){};At.prototype.interfaces_=function(){return[]},At.prototype.getClass=function(){return At},h.prototype=new o,(f.prototype=new h).contains=function(t){for(var e=0,n=this.array_.length;e=0;){var s=r.substring(0,o);i.add(s),o=(r=r.substring(o+n)).indexOf(e)}r.length>0&&i.add(r);for(var a=new Array(i.size()).fill(null),u=0;u0)for(var o=r;o0&&i.append(\" \");for(var o=0;o0&&i.append(\",\"),i.append(jt.toString(t.getOrdinate(r,o)))}return i.append(\")\"),i.toString()}},Wt.ensureValidRing=function(t,e){var n=e.size();if(0===n)return e;if(n<=3)return Wt.createClosedRing(t,e,4);return e.getOrdinate(0,V.X)===e.getOrdinate(n-1,V.X)&&e.getOrdinate(0,V.Y)===e.getOrdinate(n-1,V.Y)?e:Wt.createClosedRing(t,e,n+1)},Wt.createClosedRing=function(t,e,n){var i=t.create(n,e.getDimension()),r=e.size();Wt.copy(e,0,i,0,r);for(var o=r;o0&&Wt.reverse(this._points),null}},e.prototype.getCoordinate=function(){return this.isEmpty()?null:this._points.getCoordinate(0)},e.prototype.getBoundaryDimension=function(){return this.isClosed()?qt.FALSE:0},e.prototype.isClosed=function(){return!this.isEmpty()&&this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints()-1))},e.prototype.getEndPoint=function(){return this.isEmpty()?null:this.getPointN(this.getNumPoints()-1)},e.prototype.getDimension=function(){return 1},e.prototype.getLength=function(){return at.computeLength(this._points)},e.prototype.getNumPoints=function(){return this._points.size()},e.prototype.reverse=function(){var t=this._points.copy();Wt.reverse(t);return this.getFactory().createLineString(t)},e.prototype.compareToSameClass=function(){if(1===arguments.length){for(var t=arguments[0],e=0,n=0;e= 2)\");this._points=t},e.prototype.isCoordinate=function(t){for(var e=0;e=1&&this.getCoordinateSequence().size()= 4)\")},e.prototype.getGeometryType=function(){return\"LinearRing\"},e.prototype.copy=function(){return new e(this._points.copy(),this._factory)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},n.MINIMUM_VALID_SIZE.get=function(){return 4},n.serialVersionUID.get=function(){return-0x3b229e262367a600},Object.defineProperties(e,n),e}(Kt),ne=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.getSortIndex=function(){return ct.SORTINDEX_MULTIPOLYGON},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!this.isEquivalentClass(e)&&t.prototype.equalsExact.call(this,e,n)}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.getBoundaryDimension=function(){return 1},e.prototype.getDimension=function(){return 2},e.prototype.reverse=function(){for(var t=this._geometries.length,e=new Array(t).fill(null),n=0;n0?e.createPoint(n[0]):e.createPoint():t},se.prototype.interfaces_=function(){return[ie.GeometryEditorOperation]},se.prototype.getClass=function(){return se};var ae=function(){};ae.prototype.edit=function(t,e){return t instanceof ee?e.createLinearRing(this.edit(t.getCoordinateSequence(),t)):t instanceof Kt?e.createLineString(this.edit(t.getCoordinateSequence(),t)):t instanceof Qt?e.createPoint(this.edit(t.getCoordinateSequence(),t)):t},ae.prototype.interfaces_=function(){return[ie.GeometryEditorOperation]},ae.prototype.getClass=function(){return ae};var ue=function(){if(this._dimension=3,this._coordinates=null,1===arguments.length){if(arguments[0]instanceof Array)this._coordinates=arguments[0],this._dimension=3;else if(Number.isInteger(arguments[0])){var t=arguments[0];this._coordinates=new Array(t).fill(null);for(var e=0;e0){var t=new D(17*this._coordinates.length);t.append(\"(\"),t.append(this._coordinates[0]);for(var e=1;e3&&(i=3),i<2?new ue(n):new ue(n,i)}},ce.prototype.interfaces_=function(){return[b,e]},ce.prototype.getClass=function(){return ce},ce.instance=function(){return ce.instanceObject},pe.serialVersionUID.get=function(){return-0x38e49fa6cf6f2e00},pe.instanceObject.get=function(){return new ce},Object.defineProperties(ce,pe);var he=function(t){function e(){t.call(this),this.map_=new Map}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return this.map_.get(t)||null},e.prototype.put=function(t,e){return this.map_.set(t,e),e},e.prototype.values=function(){for(var t=new Nt,e=this.map_.values(),n=e.next();!n.done;)t.add(n.value),n=e.next();return t},e.prototype.entrySet=function(){var t=new Pt;return this.map_.entries().forEach(function(e){return t.add(e)}),t},e.prototype.size=function(){return this.map_.size()},e}(Tt),fe=function t(){if(this._modelType=null,this._scale=null,0===arguments.length)this._modelType=t.FLOATING;else if(1===arguments.length)if(arguments[0]instanceof de){var e=arguments[0];this._modelType=e,e===t.FIXED&&this.setScale(1)}else if(\"number\"==typeof arguments[0]){var n=arguments[0];this._modelType=t.FIXED,this.setScale(n)}else if(arguments[0]instanceof t){var i=arguments[0];this._modelType=i._modelType,this._scale=i._scale}},ge={serialVersionUID:{configurable:!0},maximumPreciseValue:{configurable:!0}};fe.prototype.equals=function(t){if(!(t instanceof fe))return!1;var e=t;return this._modelType===e._modelType&&this._scale===e._scale},fe.prototype.compareTo=function(t){var e=t,n=this.getMaximumSignificantDigits(),i=e.getMaximumSignificantDigits();return new M(n).compareTo(new M(i))},fe.prototype.getScale=function(){return this._scale},fe.prototype.isFloating=function(){return this._modelType===fe.FLOATING||this._modelType===fe.FLOATING_SINGLE},fe.prototype.getType=function(){return this._modelType},fe.prototype.toString=function(){var t=\"UNKNOWN\";return this._modelType===fe.FLOATING?t=\"Floating\":this._modelType===fe.FLOATING_SINGLE?t=\"Floating-Single\":this._modelType===fe.FIXED&&(t=\"Fixed (Scale=\"+this.getScale()+\")\"),t},fe.prototype.makePrecise=function(){if(\"number\"==typeof arguments[0]){var t=arguments[0];if(v.isNaN(t))return t;if(this._modelType===fe.FLOATING_SINGLE){return t}return this._modelType===fe.FIXED?Math.round(t*this._scale)/this._scale:t}if(arguments[0]instanceof C){var e=arguments[0];if(this._modelType===fe.FLOATING)return null;e.x=this.makePrecise(e.x),e.y=this.makePrecise(e.y)}},fe.prototype.getMaximumSignificantDigits=function(){var t=16;return this._modelType===fe.FLOATING?t=16:this._modelType===fe.FLOATING_SINGLE?t=6:this._modelType===fe.FIXED&&(t=1+Math.trunc(Math.ceil(Math.log(this.getScale())/Math.log(10)))),t},fe.prototype.setScale=function(t){this._scale=Math.abs(t)},fe.prototype.interfaces_=function(){return[e,E]},fe.prototype.getClass=function(){return fe},fe.mostPrecise=function(t,e){return t.compareTo(e)>=0?t:e},ge.serialVersionUID.get=function(){return 0x6bee6404e9a25c00},ge.maximumPreciseValue.get=function(){return 9007199254740992},Object.defineProperties(fe,ge);var de=function t(e){this._name=e||null,t.nameToTypeMap.put(e,this)},ye={serialVersionUID:{configurable:!0},nameToTypeMap:{configurable:!0}};de.prototype.readResolve=function(){return de.nameToTypeMap.get(this._name)},de.prototype.toString=function(){return this._name},de.prototype.interfaces_=function(){return[e]},de.prototype.getClass=function(){return de},ye.serialVersionUID.get=function(){return-552860263173159e4},ye.nameToTypeMap.get=function(){return new he},Object.defineProperties(de,ye),fe.Type=de,fe.FIXED=new de(\"FIXED\"),fe.FLOATING=new de(\"FLOATING\"),fe.FLOATING_SINGLE=new de(\"FLOATING SINGLE\");var _e=function t(){this._precisionModel=new fe,this._SRID=0,this._coordinateSequenceFactory=t.getDefaultCoordinateSequenceFactory(),0===arguments.length||(1===arguments.length?T(arguments[0],b)?this._coordinateSequenceFactory=arguments[0]:arguments[0]instanceof fe&&(this._precisionModel=arguments[0]):2===arguments.length?(this._precisionModel=arguments[0],this._SRID=arguments[1]):3===arguments.length&&(this._precisionModel=arguments[0],this._SRID=arguments[1],this._coordinateSequenceFactory=arguments[2]))},me={serialVersionUID:{configurable:!0}};_e.prototype.toGeometry=function(t){return t.isNull()?this.createPoint(null):t.getMinX()===t.getMaxX()&&t.getMinY()===t.getMaxY()?this.createPoint(new C(t.getMinX(),t.getMinY())):t.getMinX()===t.getMaxX()||t.getMinY()===t.getMaxY()?this.createLineString([new C(t.getMinX(),t.getMinY()),new C(t.getMaxX(),t.getMaxY())]):this.createPolygon(this.createLinearRing([new C(t.getMinX(),t.getMinY()),new C(t.getMinX(),t.getMaxY()),new C(t.getMaxX(),t.getMaxY()),new C(t.getMaxX(),t.getMinY()),new C(t.getMinX(),t.getMinY())]),null)},_e.prototype.createLineString=function(t){return t?t instanceof Array?new Kt(this.getCoordinateSequenceFactory().create(t),this):T(t,V)?new Kt(t,this):void 0:new Kt(this.getCoordinateSequenceFactory().create([]),this)},_e.prototype.createMultiLineString=function(){if(0===arguments.length)return new Xt(null,this);if(1===arguments.length){var t=arguments[0];return new Xt(t,this)}},_e.prototype.buildGeometry=function(t){for(var e=null,n=!1,i=!1,r=t.iterator();r.hasNext();){var o=r.next(),s=o.getClass();null===e&&(e=s),s!==e&&(n=!0),o.isGeometryCollectionOrDerived()&&(i=!0)}if(null===e)return this.createGeometryCollection();if(n||i)return this.createGeometryCollection(_e.toGeometryArray(t));var a=t.iterator().next();if(t.size()>1){if(a instanceof $t)return this.createMultiPolygon(_e.toPolygonArray(t));if(a instanceof Kt)return this.createMultiLineString(_e.toLineStringArray(t));if(a instanceof Qt)return this.createMultiPoint(_e.toPointArray(t));et.shouldNeverReachHere(\"Unhandled class: \"+a.getClass().getName())}return a},_e.prototype.createMultiPointFromCoords=function(t){return this.createMultiPoint(null!==t?this.getCoordinateSequenceFactory().create(t):null)},_e.prototype.createPoint=function(){if(0===arguments.length)return this.createPoint(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof C){var t=arguments[0];return this.createPoint(null!==t?this.getCoordinateSequenceFactory().create([t]):null)}if(T(arguments[0],V)){var e=arguments[0];return new Qt(e,this)}}},_e.prototype.getCoordinateSequenceFactory=function(){return this._coordinateSequenceFactory},_e.prototype.createPolygon=function(){if(0===arguments.length)return new $t(null,null,this);if(1===arguments.length){if(T(arguments[0],V)){var t=arguments[0];return this.createPolygon(this.createLinearRing(t))}if(arguments[0]instanceof Array){var e=arguments[0];return this.createPolygon(this.createLinearRing(e))}if(arguments[0]instanceof ee){var n=arguments[0];return this.createPolygon(n,null)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];return new $t(i,r,this)}},_e.prototype.getSRID=function(){return this._SRID},_e.prototype.createGeometryCollection=function(){if(0===arguments.length)return new zt(null,this);if(1===arguments.length){var t=arguments[0];return new zt(t,this)}},_e.prototype.createGeometry=function(t){return new ie(this).edit(t,{edit:function(){if(2===arguments.length){var t=arguments[0];return this._coordinateSequenceFactory.create(t)}}})},_e.prototype.getPrecisionModel=function(){return this._precisionModel},_e.prototype.createLinearRing=function(){if(0===arguments.length)return this.createLinearRing(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return this.createLinearRing(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(T(arguments[0],V)){var e=arguments[0];return new ee(e,this)}}},_e.prototype.createMultiPolygon=function(){if(0===arguments.length)return new ne(null,this);if(1===arguments.length){var t=arguments[0];return new ne(t,this)}},_e.prototype.createMultiPoint=function(){if(0===arguments.length)return new te(null,this);if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return new te(t,this)}if(arguments[0]instanceof Array){var e=arguments[0];return this.createMultiPoint(null!==e?this.getCoordinateSequenceFactory().create(e):null)}if(T(arguments[0],V)){var n=arguments[0];if(null===n)return this.createMultiPoint(new Array(0).fill(null));for(var i=new Array(n.size()).fill(null),r=0;r=this.size())throw new Error;return this.array_[t]},y.prototype.push=function(t){return this.array_.push(t),t},y.prototype.pop=function(t){if(0===this.array_.length)throw new d;return this.array_.pop()},y.prototype.peek=function(){if(0===this.array_.length)throw new d;return this.array_[this.array_.length-1]},y.prototype.empty=function(){return 0===this.array_.length},y.prototype.isEmpty=function(){return this.empty()},y.prototype.search=function(t){return this.array_.indexOf(t)},y.prototype.size=function(){return this.array_.length},y.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;e0&&this._minIndexthis._minCoord.y&&n.y>this._minCoord.y&&i===at.CLOCKWISE&&(r=!0),r&&(this._minIndex=this._minIndex-1)},be.prototype.getRightmostSideOfSegment=function(t,e){var n=t.getEdge().getCoordinates();if(e<0||e+1>=n.length)return-1;if(n[e].y===n[e+1].y)return-1;var i=Se.LEFT;return n[e].ythis._minCoord.x)&&(this._minDe=t,this._minIndex=n,this._minCoord=e[n])},be.prototype.findRightmostEdgeAtNode=function(){var t=this._minDe.getNode().getEdges();this._minDe=t.getRightmostEdge(),this._minDe.isForward()||(this._minDe=this._minDe.getSym(),this._minIndex=this._minDe.getEdge().getCoordinates().length-1)},be.prototype.findEdge=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();n.isForward()&&this.checkForRightmostCoordinate(n)}et.isTrue(0!==this._minIndex||this._minCoord.equals(this._minDe.getCoordinate()),\"inconsistency in rightmost processing\"),0===this._minIndex?this.findRightmostEdgeAtNode():this.findRightmostEdgeAtVertex(),this._orientedDe=this._minDe;this.getRightmostSide(this._minDe,this._minIndex)===Se.LEFT&&(this._orientedDe=this._minDe.getSym())},be.prototype.interfaces_=function(){return[]},be.prototype.getClass=function(){return be};var we=function(t){function e(n,i){t.call(this,e.msgWithCoord(n,i)),this.pt=i?new C(i):null,this.name=\"TopologyException\"}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCoordinate=function(){return this.pt},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.msgWithCoord=function(t,e){return e?t:t+\" [ \"+e+\" ]\"},e}($),Oe=function(){this.array_=[]};Oe.prototype.addLast=function(t){this.array_.push(t)},Oe.prototype.removeFirst=function(){return this.array_.shift()},Oe.prototype.isEmpty=function(){return 0===this.array_.length};var Te=function(){this._finder=null,this._dirEdgeList=new Nt,this._nodes=new Nt,this._rightMostCoord=null,this._env=null,this._finder=new be};Te.prototype.clearVisitedEdges=function(){for(var t=this._dirEdgeList.iterator();t.hasNext();){t.next().setVisited(!1)}},Te.prototype.getRightmostCoordinate=function(){return this._rightMostCoord},Te.prototype.computeNodeDepth=function(t){for(var e=null,n=t.getEdges().iterator();n.hasNext();){var i=n.next();if(i.isVisited()||i.getSym().isVisited()){e=i;break}}if(null===e)throw new we(\"unable to find edge to compute depths at \"+t.getCoordinate());t.getEdges().computeDepths(e);for(var r=t.getEdges().iterator();r.hasNext();){var o=r.next();o.setVisited(!0),this.copySymDepths(o)}},Te.prototype.computeDepth=function(t){this.clearVisitedEdges();var e=this._finder.getEdge();e.setEdgeDepths(Se.RIGHT,t),this.copySymDepths(e),this.computeDepths(e)},Te.prototype.create=function(t){this.addReachable(t),this._finder.findEdge(this._dirEdgeList),this._rightMostCoord=this._finder.getCoordinate()},Te.prototype.findResultEdges=function(){for(var t=this._dirEdgeList.iterator();t.hasNext();){var e=t.next();e.getDepth(Se.RIGHT)>=1&&e.getDepth(Se.LEFT)<=0&&!e.isInteriorAreaEdge()&&e.setInResult(!0)}},Te.prototype.computeDepths=function(t){var e=new Pt,n=new Oe,i=t.getNode();for(n.addLast(i),e.add(i),t.setVisited(!0);!n.isEmpty();){var r=n.removeFirst();e.add(r),this.computeNodeDepth(r);for(var o=r.getEdges().iterator();o.hasNext();){var s=o.next().getSym();if(!s.isVisited()){var a=s.getNode();e.contains(a)||(n.addLast(a),e.add(a))}}}},Te.prototype.compareTo=function(t){var e=t;return this._rightMostCoord.xe._rightMostCoord.x?1:0},Te.prototype.getEnvelope=function(){if(null===this._env){for(var t=new j,e=this._dirEdgeList.iterator();e.hasNext();)for(var n=e.next().getEdge().getCoordinates(),i=0;ithis.location.length){var e=new Array(3).fill(null);e[Se.ON]=this.location[Se.ON],e[Se.LEFT]=w.NONE,e[Se.RIGHT]=w.NONE,this.location=e}for(var n=0;n1&&t.append(w.toLocationSymbol(this.location[Se.LEFT])),t.append(w.toLocationSymbol(this.location[Se.ON])),this.location.length>1&&t.append(w.toLocationSymbol(this.location[Se.RIGHT])),t.toString()},Re.prototype.setLocations=function(t,e,n){this.location[Se.ON]=t,this.location[Se.LEFT]=e,this.location[Se.RIGHT]=n},Re.prototype.get=function(t){return t1},Re.prototype.isAnyNull=function(){for(var t=0;tthis._maxNodeDegree&&(this._maxNodeDegree=e),t=this.getNext(t)}while(t!==this._startDe);this._maxNodeDegree*=2},De.prototype.addPoints=function(t,e,n){var i=t.getCoordinates();if(e){var r=1;n&&(r=0);for(var o=r;o=0;a--)this._pts.add(i[a])}},De.prototype.isHole=function(){return this._isHole},De.prototype.setInResult=function(){var t=this._startDe;do{t.getEdge().setInResult(!0),t=t.getNext()}while(t!==this._startDe)},De.prototype.containsPoint=function(t){var e=this.getLinearRing();if(!e.getEnvelopeInternal().contains(t))return!1;if(!at.isPointInRing(t,e.getCoordinates()))return!1;for(var n=this._holes.iterator();n.hasNext();){if(n.next().containsPoint(t))return!1}return!0},De.prototype.addHole=function(t){this._holes.add(t)},De.prototype.isShell=function(){return null===this._shell},De.prototype.getLabel=function(){return this._label},De.prototype.getEdges=function(){return this._edges},De.prototype.getMaxNodeDegree=function(){return this._maxNodeDegree<0&&this.computeMaxNodeDegree(),this._maxNodeDegree},De.prototype.getShell=function(){return this._shell},De.prototype.mergeLabel=function(){if(1===arguments.length){var t=arguments[0];this.mergeLabel(t,0),this.mergeLabel(t,1)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],i=e.getLocation(n,Se.RIGHT);if(i===w.NONE)return null;if(this._label.getLocation(n)===w.NONE)return this._label.setLocation(n,i),null}},De.prototype.setShell=function(t){this._shell=t,null!==t&&t.addHole(this)},De.prototype.toPolygon=function(t){for(var e=new Array(this._holes.size()).fill(null),n=0;n=2,\"found partial label\"),this.computeIM(t)},Fe.prototype.isInResult=function(){return this._isInResult},Fe.prototype.isVisited=function(){return this._isVisited},Fe.prototype.interfaces_=function(){return[]},Fe.prototype.getClass=function(){return Fe};var Ge=function(t){function e(){t.call(this),this._coord=null,this._edges=null;var e=arguments[0],n=arguments[1];this._coord=e,this._edges=n,this._label=new Pe(0,w.NONE)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isIncidentEdgeInResult=function(){for(var t=this.getEdges().getEdges().iterator();t.hasNext();){if(t.next().getEdge().isInResult())return!0}return!1},e.prototype.isIsolated=function(){return 1===this._label.getGeometryCount()},e.prototype.getCoordinate=function(){return this._coord},e.prototype.print=function(t){t.println(\"node \"+this._coord+\" lbl: \"+this._label)},e.prototype.computeIM=function(t){},e.prototype.computeMergedLocation=function(t,e){var n=w.NONE;if(n=this._label.getLocation(e),!t.isNull(e)){var i=t.getLocation(e);n!==w.BOUNDARY&&(n=i)}return n},e.prototype.setLabel=function(){if(2!==arguments.length)return t.prototype.setLabel.apply(this,arguments);var e=arguments[0],n=arguments[1];null===this._label?this._label=new Pe(e,n):this._label.setLocation(e,n)},e.prototype.getEdges=function(){return this._edges},e.prototype.mergeLabel=function(){if(arguments[0]instanceof e){var t=arguments[0];this.mergeLabel(t._label)}else if(arguments[0]instanceof Pe)for(var n=arguments[0],i=0;i<2;i++){var r=this.computeMergedLocation(n,i);this._label.getLocation(i)===w.NONE&&this._label.setLocation(i,r)}},e.prototype.add=function(t){this._edges.insert(t),t.setNode(this)},e.prototype.setLabelBoundary=function(t){if(null===this._label)return null;var e=w.NONE;null!==this._label&&(e=this._label.getLocation(t));var n=null;switch(e){case w.BOUNDARY:n=w.INTERIOR;break;case w.INTERIOR:default:n=w.BOUNDARY}this._label.setLocation(t,n)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Fe),qe=function(){this.nodeMap=new p,this.nodeFact=null;var t=arguments[0];this.nodeFact=t};qe.prototype.find=function(t){return this.nodeMap.get(t)},qe.prototype.addNode=function(){if(arguments[0]instanceof C){var t=arguments[0],e=this.nodeMap.get(t);return null===e&&(e=this.nodeFact.createNode(t),this.nodeMap.put(t,e)),e}if(arguments[0]instanceof Ge){var n=arguments[0],i=this.nodeMap.get(n.getCoordinate());return null===i?(this.nodeMap.put(n.getCoordinate(),n),n):(i.mergeLabel(n),i)}},qe.prototype.print=function(t){for(var e=this.iterator();e.hasNext();){e.next().print(t)}},qe.prototype.iterator=function(){return this.nodeMap.values().iterator()},qe.prototype.values=function(){return this.nodeMap.values()},qe.prototype.getBoundaryNodes=function(t){for(var e=new Nt,n=this.iterator();n.hasNext();){var i=n.next();i.getLabel().getLocation(t)===w.BOUNDARY&&e.add(i)}return e},qe.prototype.add=function(t){var e=t.getCoordinate();this.addNode(e).add(t)},qe.prototype.interfaces_=function(){return[]},qe.prototype.getClass=function(){return qe};var Be=function(){},Ve={NE:{configurable:!0},NW:{configurable:!0},SW:{configurable:!0},SE:{configurable:!0}};Be.prototype.interfaces_=function(){return[]},Be.prototype.getClass=function(){return Be},Be.isNorthern=function(t){return t===Be.NE||t===Be.NW},Be.isOpposite=function(t,e){if(t===e)return!1;return 2===(t-e+4)%4},Be.commonHalfPlane=function(t,e){if(t===e)return t;if(2===(t-e+4)%4)return-1;var n=te?t:e)?3:n},Be.isInHalfPlane=function(t,e){return e===Be.SE?t===Be.SE||t===Be.SW:t===e||t===e+1},Be.quadrant=function(){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],e=arguments[1];if(0===t&&0===e)throw new m(\"Cannot compute the quadrant for point ( \"+t+\", \"+e+\" )\");return t>=0?e>=0?Be.NE:Be.SE:e>=0?Be.NW:Be.SW}if(arguments[0]instanceof C&&arguments[1]instanceof C){var n=arguments[0],i=arguments[1];if(i.x===n.x&&i.y===n.y)throw new m(\"Cannot compute the quadrant for two identical points \"+n);return i.x>=n.x?i.y>=n.y?Be.NE:Be.SE:i.y>=n.y?Be.NW:Be.SW}},Ve.NE.get=function(){return 0},Ve.NW.get=function(){return 1},Ve.SW.get=function(){return 2},Ve.SE.get=function(){return 3},Object.defineProperties(Be,Ve);var Ue=function(){if(this._edge=null,this._label=null,this._node=null,this._p0=null,this._p1=null,this._dx=null,this._dy=null,this._quadrant=null,1===arguments.length){var t=arguments[0];this._edge=t}else if(3===arguments.length){var e=arguments[0],n=arguments[1],i=arguments[2];this._edge=e,this.init(n,i),this._label=null}else if(4===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3];this._edge=r,this.init(o,s),this._label=a}};Ue.prototype.compareDirection=function(t){return this._dx===t._dx&&this._dy===t._dy?0:this._quadrant>t._quadrant?1:this._quadrant2){o.linkDirectedEdgesForMinimalEdgeRings();var s=o.buildMinimalRings(),a=this.findShell(s);null!==a?(this.placePolygonHoles(a,s),e.add(a)):n.addAll(s)}else i.add(o)}return i},ke.prototype.containsPoint=function(t){for(var e=this._shellList.iterator();e.hasNext();){if(e.next().containsPoint(t))return!0}return!1},ke.prototype.buildMaximalEdgeRings=function(t){for(var e=new Nt,n=t.iterator();n.hasNext();){var i=n.next();if(i.isInResult()&&i.getLabel().isArea()&&null===i.getEdgeRing()){var r=new Ae(i,this._geometryFactory);e.add(r),r.setInResult()}}return e},ke.prototype.placePolygonHoles=function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next();i.isHole()&&i.setShell(t)}},ke.prototype.getPolygons=function(){return this.computePolygons(this._shellList)},ke.prototype.findEdgeRingContaining=function(t,e){for(var n=t.getLinearRing(),i=n.getEnvelopeInternal(),r=n.getCoordinateN(0),o=null,s=null,a=e.iterator();a.hasNext();){var u=a.next(),l=u.getLinearRing(),c=l.getEnvelopeInternal();null!==o&&(s=o.getLinearRing().getEnvelopeInternal());var p=!1;c.contains(i)&&at.isPointInRing(r,l.getCoordinates())&&(p=!0),p&&(null===o||s.contains(c))&&(o=u)}return o},ke.prototype.findShell=function(t){for(var e=0,n=null,i=t.iterator();i.hasNext();){var r=i.next();r.isHole()||(n=r,e++)}return et.isTrue(e<=1,\"found two shells in MinimalEdgeRing list\"),n},ke.prototype.add=function(){if(1===arguments.length){var t=arguments[0];this.add(t.getEdgeEnds(),t.getNodes())}else if(2===arguments.length){var e=arguments[0],n=arguments[1];Ye.linkResultDirectedEdges(n);var i=this.buildMaximalEdgeRings(e),r=new Nt,o=this.buildMinimalEdgeRings(i,this._shellList,r);this.sortShellsAndHoles(o,this._shellList,r),this.placeFreeHoles(this._shellList,r)}},ke.prototype.interfaces_=function(){return[]},ke.prototype.getClass=function(){return ke};var je=function(){};je.prototype.getBounds=function(){},je.prototype.interfaces_=function(){return[]},je.prototype.getClass=function(){return je};var He=function(){this._bounds=null,this._item=null;var t=arguments[0],e=arguments[1];this._bounds=t,this._item=e};He.prototype.getItem=function(){return this._item},He.prototype.getBounds=function(){return this._bounds},He.prototype.interfaces_=function(){return[je,e]},He.prototype.getClass=function(){return He};var We=function(){this._size=null,this._items=null,this._size=0,this._items=new Nt,this._items.add(null)};We.prototype.poll=function(){if(this.isEmpty())return null;var t=this._items.get(1);return this._items.set(1,this._items.get(this._size)),this._size-=1,this.reorder(1),t},We.prototype.size=function(){return this._size},We.prototype.reorder=function(t){for(var e=null,n=this._items.get(t);2*t<=this._size&&((e=2*t)!==this._size&&this._items.get(e+1).compareTo(this._items.get(e))<0&&e++,this._items.get(e).compareTo(n)<0);t=e)this._items.set(t,this._items.get(e));this._items.set(t,n)},We.prototype.clear=function(){this._size=0,this._items.clear()},We.prototype.isEmpty=function(){return 0===this._size},We.prototype.add=function(t){this._items.add(null),this._size+=1;var e=this._size;for(this._items.set(0,t);t.compareTo(this._items.get(Math.trunc(e/2)))<0;e/=2)this._items.set(e,this._items.get(Math.trunc(e/2)));this._items.set(e,t)},We.prototype.interfaces_=function(){return[]},We.prototype.getClass=function(){return We};var Ke=function(){};Ke.prototype.visitItem=function(t){},Ke.prototype.interfaces_=function(){return[]},Ke.prototype.getClass=function(){return Ke};var Je=function(){};Je.prototype.insert=function(t,e){},Je.prototype.remove=function(t,e){},Je.prototype.query=function(){},Je.prototype.interfaces_=function(){return[]},Je.prototype.getClass=function(){return Je};var Qe=function(){if(this._childBoundables=new Nt,this._bounds=null,this._level=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this._level=t}},Ze={serialVersionUID:{configurable:!0}};Qe.prototype.getLevel=function(){return this._level},Qe.prototype.size=function(){return this._childBoundables.size()},Qe.prototype.getChildBoundables=function(){return this._childBoundables},Qe.prototype.addChildBoundable=function(t){et.isTrue(null===this._bounds),this._childBoundables.add(t)},Qe.prototype.isEmpty=function(){return this._childBoundables.isEmpty()},Qe.prototype.getBounds=function(){return null===this._bounds&&(this._bounds=this.computeBounds()),this._bounds},Qe.prototype.interfaces_=function(){return[je,e]},Qe.prototype.getClass=function(){return Qe},Ze.serialVersionUID.get=function(){return 0x5a1e55ec41369800},Object.defineProperties(Qe,Ze);var $e=function(){};$e.reverseOrder=function(){return{compare:function(t,e){return e.compareTo(t)}}},$e.min=function(t){return $e.sort(t),t.get(0)},$e.sort=function(t,e){var n=t.toArray();e?Gt.sort(n,e):Gt.sort(n);for(var i=t.iterator(),r=0,o=n.length;rtn.area(this._boundable2)?(this.expand(this._boundable1,this._boundable2,t,e),null):(this.expand(this._boundable2,this._boundable1,t,e),null);if(n)return this.expand(this._boundable1,this._boundable2,t,e),null;if(i)return this.expand(this._boundable2,this._boundable1,t,e),null;throw new m(\"neither boundable is composite\")},tn.prototype.isLeaves=function(){return!(tn.isComposite(this._boundable1)||tn.isComposite(this._boundable2))},tn.prototype.compareTo=function(t){var e=t;return this._distancee._distance?1:0},tn.prototype.expand=function(t,e,n,i){for(var r=t.getChildBoundables().iterator();r.hasNext();){var o=r.next(),s=new tn(o,e,this._itemDistance);s.getDistance()1,\"Node capacity must be greater than 1\"),this._nodeCapacity=n}},nn={IntersectsOp:{configurable:!0},serialVersionUID:{configurable:!0},DEFAULT_NODE_CAPACITY:{configurable:!0}};en.prototype.getNodeCapacity=function(){return this._nodeCapacity},en.prototype.lastNode=function(t){return t.get(t.size()-1)},en.prototype.size=function(){if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.size(this._root));if(1===arguments.length){for(var t=0,e=arguments[0].getChildBoundables().iterator();e.hasNext();){var n=e.next();n instanceof Qe?t+=this.size(n):n instanceof He&&(t+=1)}return t}},en.prototype.removeItem=function(t,e){for(var n=null,i=t.getChildBoundables().iterator();i.hasNext();){var r=i.next();r instanceof He&&r.getItem()===e&&(n=r)}return null!==n&&(t.getChildBoundables().remove(n),!0)},en.prototype.itemsTree=function(){if(0===arguments.length){this.build();var t=this.itemsTree(this._root);return null===t?new Nt:t}if(1===arguments.length){for(var e=arguments[0],n=new Nt,i=e.getChildBoundables().iterator();i.hasNext();){var r=i.next();if(r instanceof Qe){var o=this.itemsTree(r);null!==o&&n.add(o)}else r instanceof He?n.add(r.getItem()):et.shouldNeverReachHere()}return n.size()<=0?null:n}},en.prototype.insert=function(t,e){et.isTrue(!this._built,\"Cannot insert items into an STR packed R-tree after it has been built.\"),this._itemBoundables.add(new He(t,e))},en.prototype.boundablesAtLevel=function(){if(1===arguments.length){var t=arguments[0],e=new Nt;return this.boundablesAtLevel(t,this._root,e),e}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];if(et.isTrue(n>-2),i.getLevel()===n)return r.add(i),null;for(var o=i.getChildBoundables().iterator();o.hasNext();){var s=o.next();s instanceof Qe?this.boundablesAtLevel(n,s,r):(et.isTrue(s instanceof He),-1===n&&r.add(s))}return null}},en.prototype.query=function(){if(1===arguments.length){var t=arguments[0];this.build();var e=new Nt;return this.isEmpty()?e:(this.getIntersectsOp().intersects(this._root.getBounds(),t)&&this.query(t,this._root,e),e)}if(2===arguments.length){var n=arguments[0],i=arguments[1];if(this.build(),this.isEmpty())return null;this.getIntersectsOp().intersects(this._root.getBounds(),n)&&this.query(n,this._root,i)}else if(3===arguments.length)if(T(arguments[2],Ke)&&arguments[0]instanceof Object&&arguments[1]instanceof Qe)for(var r=arguments[0],o=arguments[1],s=arguments[2],a=o.getChildBoundables(),u=0;ut&&(t=i)}}return t+1}},en.prototype.createParentBoundables=function(t,e){et.isTrue(!t.isEmpty());var n=new Nt;n.add(this.createNode(e));var i=new Nt(t);$e.sort(i,this.getComparator());for(var r=i.iterator();r.hasNext();){var o=r.next();this.lastNode(n).getChildBoundables().size()===this.getNodeCapacity()&&n.add(this.createNode(e)),this.lastNode(n).addChildBoundable(o)}return n},en.prototype.isEmpty=function(){return this._built?this._root.isEmpty():this._itemBoundables.isEmpty()},en.prototype.interfaces_=function(){return[e]},en.prototype.getClass=function(){return en},en.compareDoubles=function(t,e){return t>e?1:t0);for(var n=new Nt,i=0;i0;){var p=c.poll(),h=p.getDistance();if(h>=u)break;p.isLeaves()?(u=h,l=p):p.expandToQueue(c,u)}return[l.getBoundable(0).getItem(),l.getBoundable(1).getItem()]}}else if(3===arguments.length){var f=arguments[0],g=arguments[1],d=arguments[2],y=new He(f,g),_=new tn(this.getRoot(),y,d);return this.nearestNeighbour(_)[0]}},n.prototype.interfaces_=function(){return[Je,e]},n.prototype.getClass=function(){return n},n.centreX=function(t){return n.avg(t.getMinX(),t.getMaxX())},n.avg=function(t,e){return(t+e)/2},n.centreY=function(t){return n.avg(t.getMinY(),t.getMaxY())},i.STRtreeNode.get=function(){return an},i.serialVersionUID.get=function(){return 0x39920f7d5f261e0},i.xComparator.get=function(){return{interfaces_:function(){return[N]},compare:function(e,i){return t.compareDoubles(n.centreX(e.getBounds()),n.centreX(i.getBounds()))}}},i.yComparator.get=function(){return{interfaces_:function(){return[N]},compare:function(e,i){return t.compareDoubles(n.centreY(e.getBounds()),n.centreY(i.getBounds()))}}},i.intersectsOp.get=function(){return{interfaces_:function(){return[t.IntersectsOp]},intersects:function(t,e){return t.intersects(e)}}},i.DEFAULT_NODE_CAPACITY.get=function(){return 10},Object.defineProperties(n,i),n}(en),an=function(t){function e(){var e=arguments[0];t.call(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.computeBounds=function(){for(var t=null,e=this.getChildBoundables().iterator();e.hasNext();){var n=e.next();null===t?t=new j(n.getBounds()):t.expandToInclude(n.getBounds())}return t},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Qe),un=function(){};un.prototype.interfaces_=function(){return[]},un.prototype.getClass=function(){return un},un.relativeSign=function(t,e){return te?1:0},un.compare=function(t,e,n){if(e.equals2D(n))return 0;var i=un.relativeSign(e.x,n.x),r=un.relativeSign(e.y,n.y);switch(t){case 0:return un.compareValue(i,r);case 1:return un.compareValue(r,i);case 2:return un.compareValue(r,-i);case 3:return un.compareValue(-i,r);case 4:return un.compareValue(-i,-r);case 5:return un.compareValue(-r,-i);case 6:return un.compareValue(-r,i);case 7:return un.compareValue(i,-r)}return et.shouldNeverReachHere(\"invalid octant value\"),0},un.compareValue=function(t,e){return t<0?-1:t>0?1:e<0?-1:e>0?1:0};var ln=function(){this._segString=null,this.coord=null,this.segmentIndex=null,this._segmentOctant=null,this._isInterior=null;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this._segString=t,this.coord=new C(e),this.segmentIndex=n,this._segmentOctant=i,this._isInterior=!e.equals2D(t.getCoordinate(n))};ln.prototype.getCoordinate=function(){return this.coord},ln.prototype.print=function(t){t.print(this.coord),t.print(\" seg # = \"+this.segmentIndex)},ln.prototype.compareTo=function(t){var e=t;return this.segmentIndexe.segmentIndex?1:this.coord.equals2D(e.coord)?0:un.compare(this._segmentOctant,this.coord,e.coord)},ln.prototype.isEndPoint=function(t){return 0===this.segmentIndex&&!this._isInterior||this.segmentIndex===t},ln.prototype.isInterior=function(){return this._isInterior},ln.prototype.interfaces_=function(){return[E]},ln.prototype.getClass=function(){return ln};var cn=function(){this._nodeMap=new p,this._edge=null;var t=arguments[0];this._edge=t};cn.prototype.getSplitCoordinates=function(){var t=new St;this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next();this.addEdgeCoordinates(n,i,t),n=i}return t.toCoordinateArray()},cn.prototype.addCollapsedNodes=function(){var t=new Nt;this.findCollapsesFromInsertedNodes(t),this.findCollapsesFromExistingVertices(t);for(var e=t.iterator();e.hasNext();){var n=e.next().intValue();this.add(this._edge.getCoordinate(n),n)}},cn.prototype.print=function(t){t.println(\"Intersections:\");for(var e=this.iterator();e.hasNext();){e.next().print(t)}},cn.prototype.findCollapsesFromExistingVertices=function(t){for(var e=0;e=0?e>=0?n>=i?0:1:n>=i?7:6:e>=0?n>=i?3:2:n>=i?4:5}if(arguments[0]instanceof C&&arguments[1]instanceof C){var r=arguments[0],o=arguments[1],s=o.x-r.x,a=o.y-r.y;if(0===s&&0===a)throw new m(\"Cannot compute the octant for two identical points \"+r);return pn.octant(s,a)}};var hn=function(){};hn.prototype.getCoordinates=function(){},hn.prototype.size=function(){},hn.prototype.getCoordinate=function(t){},hn.prototype.isClosed=function(){},hn.prototype.setData=function(t){},hn.prototype.getData=function(){},hn.prototype.interfaces_=function(){return[]},hn.prototype.getClass=function(){return hn};var fn=function(){};fn.prototype.addIntersection=function(t,e){},fn.prototype.interfaces_=function(){return[hn]},fn.prototype.getClass=function(){return fn};var gn=function(){this._nodeList=new cn(this),this._pts=null,this._data=null;var t=arguments[0],e=arguments[1];this._pts=t,this._data=e};gn.prototype.getCoordinates=function(){return this._pts},gn.prototype.size=function(){return this._pts.length},gn.prototype.getCoordinate=function(t){return this._pts[t]},gn.prototype.isClosed=function(){return this._pts[0].equals(this._pts[this._pts.length-1])},gn.prototype.getSegmentOctant=function(t){return t===this._pts.length-1?-1:this.safeOctant(this.getCoordinate(t),this.getCoordinate(t+1))},gn.prototype.setData=function(t){this._data=t},gn.prototype.safeOctant=function(t,e){return t.equals2D(e)?0:pn.octant(t,e)},gn.prototype.getData=function(){return this._data},gn.prototype.addIntersection=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.addIntersectionNode(t,e)}else if(4===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[3],o=new C(n.getIntersection(r));this.addIntersection(o,i)}},gn.prototype.toString=function(){return Z.toLineString(new ue(this._pts))},gn.prototype.getNodeList=function(){return this._nodeList},gn.prototype.addIntersectionNode=function(t,e){var n=e,i=n+1;if(i=0&&n>=0?Math.max(e,n):e<=0&&n<=0?Math.max(e,n):0}if(arguments[0]instanceof C){var i=arguments[0];return at.orientationIndex(this.p0,this.p1,i)}},dn.prototype.toGeometry=function(t){return t.createLineString([this.p0,this.p1])},dn.prototype.isVertical=function(){return this.p0.x===this.p1.x},dn.prototype.equals=function(t){if(!(t instanceof dn))return!1;var e=t;return this.p0.equals(e.p0)&&this.p1.equals(e.p1)},dn.prototype.intersection=function(t){var e=new rt;return e.computeIntersection(this.p0,this.p1,t.p0,t.p1),e.hasIntersection()?e.getIntersection(0):null},dn.prototype.project=function(){if(arguments[0]instanceof C){var t=arguments[0];if(t.equals(this.p0)||t.equals(this.p1))return new C(t);var e=this.projectionFactor(t),n=new C;return n.x=this.p0.x+e*(this.p1.x-this.p0.x),n.y=this.p0.y+e*(this.p1.y-this.p0.y),n}if(arguments[0]instanceof dn){var i=arguments[0],r=this.projectionFactor(i.p0),o=this.projectionFactor(i.p1);if(r>=1&&o>=1)return null;if(r<=0&&o<=0)return null;var s=this.project(i.p0);r<0&&(s=this.p0),r>1&&(s=this.p1);var a=this.project(i.p1);return o<0&&(a=this.p0),o>1&&(a=this.p1),new dn(s,a)}},dn.prototype.normalize=function(){this.p1.compareTo(this.p0)<0&&this.reverse()},dn.prototype.angle=function(){return Math.atan2(this.p1.y-this.p0.y,this.p1.x-this.p0.x)},dn.prototype.getCoordinate=function(t){return 0===t?this.p0:this.p1},dn.prototype.distancePerpendicular=function(t){return at.distancePointLinePerpendicular(t,this.p0,this.p1)},dn.prototype.minY=function(){return Math.min(this.p0.y,this.p1.y)},dn.prototype.midPoint=function(){return dn.midPoint(this.p0,this.p1)},dn.prototype.projectionFactor=function(t){if(t.equals(this.p0))return 0;if(t.equals(this.p1))return 1;var e=this.p1.x-this.p0.x,n=this.p1.y-this.p0.y,i=e*e+n*n;if(i<=0)return v.NaN;return((t.x-this.p0.x)*e+(t.y-this.p0.y)*n)/i},dn.prototype.closestPoints=function(t){var e=this.intersection(t);if(null!==e)return[e,e];var n=new Array(2).fill(null),i=v.MAX_VALUE,r=null,o=this.closestPoint(t.p0);i=o.distance(t.p0),n[0]=o,n[1]=t.p0;var s=this.closestPoint(t.p1);(r=s.distance(t.p1))0&&e<1)return this.project(t);return this.p0.distance(t)1||v.isNaN(e))&&(e=1),e},dn.prototype.toString=function(){return\"LINESTRING( \"+this.p0.x+\" \"+this.p0.y+\", \"+this.p1.x+\" \"+this.p1.y+\")\"},dn.prototype.isHorizontal=function(){return this.p0.y===this.p1.y},dn.prototype.distance=function(){if(arguments[0]instanceof dn){var t=arguments[0];return at.distanceLineLine(this.p0,this.p1,t.p0,t.p1)}if(arguments[0]instanceof C){var e=arguments[0];return at.distancePointLine(e,this.p0,this.p1)}},dn.prototype.pointAlong=function(t){var e=new C;return e.x=this.p0.x+t*(this.p1.x-this.p0.x),e.y=this.p0.y+t*(this.p1.y-this.p0.y),e},dn.prototype.hashCode=function(){var t=v.doubleToLongBits(this.p0.x);t^=31*v.doubleToLongBits(this.p0.y);var e=Math.trunc(t)^Math.trunc(t>>32),n=v.doubleToLongBits(this.p1.x);n^=31*v.doubleToLongBits(this.p1.y);return e^(Math.trunc(n)^Math.trunc(n>>32))},dn.prototype.interfaces_=function(){return[E,e]},dn.prototype.getClass=function(){return dn},dn.midPoint=function(t,e){return new C((t.x+e.x)/2,(t.y+e.y)/2)},yn.serialVersionUID.get=function(){return 0x2d2172135f411c00},Object.defineProperties(dn,yn);var _n=function(){this.tempEnv1=new j,this.tempEnv2=new j,this._overlapSeg1=new dn,this._overlapSeg2=new dn};_n.prototype.overlap=function(){if(2===arguments.length);else if(4===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];t.getLineSegment(e,this._overlapSeg1),n.getLineSegment(i,this._overlapSeg2),this.overlap(this._overlapSeg1,this._overlapSeg2)}},_n.prototype.interfaces_=function(){return[]},_n.prototype.getClass=function(){return _n};var mn=function(){this._pts=null,this._start=null,this._end=null,this._env=null,this._context=null,this._id=null;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this._pts=t,this._start=e,this._end=n,this._context=i};mn.prototype.getLineSegment=function(t,e){e.p0=this._pts[t],e.p1=this._pts[t+1]},mn.prototype.computeSelect=function(t,e,n,i){var r=this._pts[e],o=this._pts[n];if(i.tempEnv1.init(r,o),n-e==1)return i.select(this,e),null;if(!t.intersects(i.tempEnv1))return null;var s=Math.trunc((e+n)/2);e=t.length-1)return t.length-1;for(var i=Be.quadrant(t[n],t[n+1]),r=e+1;rn.getId()&&(n.computeOverlaps(r,t),this._nOverlaps++),this._segInt.isDone())return null}},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},n.SegmentOverlapAction.get=function(){return Nn},Object.defineProperties(e,n),e}(En),Nn=function(t){function e(){t.call(this),this._si=null;var e=arguments[0];this._si=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.overlap=function(){if(4!==arguments.length)return t.prototype.overlap.apply(this,arguments);var e=arguments[0],n=arguments[1],i=arguments[2],r=arguments[3],o=e.getContext(),s=i.getContext();this._si.processIntersections(o,n,s,r)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(_n),Cn=function t(){if(this._quadrantSegments=t.DEFAULT_QUADRANT_SEGMENTS,this._endCapStyle=t.CAP_ROUND,this._joinStyle=t.JOIN_ROUND,this._mitreLimit=t.DEFAULT_MITRE_LIMIT,this._isSingleSided=!1,this._simplifyFactor=t.DEFAULT_SIMPLIFY_FACTOR,0===arguments.length);else if(1===arguments.length){var e=arguments[0];this.setQuadrantSegments(e)}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.setQuadrantSegments(n),this.setEndCapStyle(i)}else if(4===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3];this.setQuadrantSegments(r),this.setEndCapStyle(o),this.setJoinStyle(s),this.setMitreLimit(a)}},Sn={CAP_ROUND:{configurable:!0},CAP_FLAT:{configurable:!0},CAP_SQUARE:{configurable:!0},JOIN_ROUND:{configurable:!0},JOIN_MITRE:{configurable:!0},JOIN_BEVEL:{configurable:!0},DEFAULT_QUADRANT_SEGMENTS:{configurable:!0},DEFAULT_MITRE_LIMIT:{configurable:!0},DEFAULT_SIMPLIFY_FACTOR:{configurable:!0}};Cn.prototype.getEndCapStyle=function(){return this._endCapStyle},Cn.prototype.isSingleSided=function(){return this._isSingleSided},Cn.prototype.setQuadrantSegments=function(t){this._quadrantSegments=t,0===this._quadrantSegments&&(this._joinStyle=Cn.JOIN_BEVEL),this._quadrantSegments<0&&(this._joinStyle=Cn.JOIN_MITRE,this._mitreLimit=Math.abs(this._quadrantSegments)),t<=0&&(this._quadrantSegments=1),this._joinStyle!==Cn.JOIN_ROUND&&(this._quadrantSegments=Cn.DEFAULT_QUADRANT_SEGMENTS)},Cn.prototype.getJoinStyle=function(){return this._joinStyle},Cn.prototype.setJoinStyle=function(t){this._joinStyle=t},Cn.prototype.setSimplifyFactor=function(t){this._simplifyFactor=t<0?0:t},Cn.prototype.getSimplifyFactor=function(){return this._simplifyFactor},Cn.prototype.getQuadrantSegments=function(){return this._quadrantSegments},Cn.prototype.setEndCapStyle=function(t){this._endCapStyle=t},Cn.prototype.getMitreLimit=function(){return this._mitreLimit},Cn.prototype.setMitreLimit=function(t){this._mitreLimit=t},Cn.prototype.setSingleSided=function(t){this._isSingleSided=t},Cn.prototype.interfaces_=function(){return[]},Cn.prototype.getClass=function(){return Cn},Cn.bufferDistanceError=function(t){var e=Math.PI/2/t;return 1-Math.cos(e/2)},Sn.CAP_ROUND.get=function(){return 1},Sn.CAP_FLAT.get=function(){return 2},Sn.CAP_SQUARE.get=function(){return 3},Sn.JOIN_ROUND.get=function(){return 1},Sn.JOIN_MITRE.get=function(){return 2},Sn.JOIN_BEVEL.get=function(){return 3},Sn.DEFAULT_QUADRANT_SEGMENTS.get=function(){return 8},Sn.DEFAULT_MITRE_LIMIT.get=function(){return 5},Sn.DEFAULT_SIMPLIFY_FACTOR.get=function(){return.01},Object.defineProperties(Cn,Sn);var Ln=function(t){this._distanceTol=null,this._isDeleted=null,this._angleOrientation=at.COUNTERCLOCKWISE,this._inputLine=t||null},bn={INIT:{configurable:!0},DELETE:{configurable:!0},KEEP:{configurable:!0},NUM_PTS_TO_CHECK:{configurable:!0}};Ln.prototype.isDeletable=function(t,e,n,i){var r=this._inputLine[t],o=this._inputLine[e],s=this._inputLine[n];return!!this.isConcave(r,o,s)&&(!!this.isShallow(r,o,s,i)&&this.isShallowSampled(r,o,t,n,i))},Ln.prototype.deleteShallowConcavities=function(){for(var t=1,e=this.findNextNonDeletedIndex(t),n=this.findNextNonDeletedIndex(e),i=!1;n=0;i--)this.addPt(t[i])},wn.prototype.isRedundant=function(t){if(this._ptList.size()<1)return!1;var e=this._ptList.get(this._ptList.size()-1);return t.distance(e)Math.PI;)t-=Tn.PI_TIMES_2;for(;t<=-Math.PI;)t+=Tn.PI_TIMES_2;return t},Tn.angle=function(){if(1===arguments.length){var t=arguments[0];return Math.atan2(t.y,t.x)}if(2===arguments.length){var e=arguments[0],n=arguments[1],i=n.x-e.x,r=n.y-e.y;return Math.atan2(r,i)}},Tn.isAcute=function(t,e,n){var i=t.x-e.x,r=t.y-e.y;return i*(n.x-e.x)+r*(n.y-e.y)>0},Tn.isObtuse=function(t,e,n){var i=t.x-e.x,r=t.y-e.y;return i*(n.x-e.x)+r*(n.y-e.y)<0},Tn.interiorAngle=function(t,e,n){var i=Tn.angle(e,t),r=Tn.angle(e,n);return Math.abs(r-i)},Tn.normalizePositive=function(t){if(t<0){for(;t<0;)t+=Tn.PI_TIMES_2;t>=Tn.PI_TIMES_2&&(t=0)}else{for(;t>=Tn.PI_TIMES_2;)t-=Tn.PI_TIMES_2;t<0&&(t=0)}return t},Tn.angleBetween=function(t,e,n){var i=Tn.angle(e,t),r=Tn.angle(e,n);return Tn.diff(i,r)},Tn.diff=function(t,e){var n=null;return(n=tMath.PI&&(n=2*Math.PI-n),n},Tn.toRadians=function(t){return t*Math.PI/180},Tn.getTurn=function(t,e){var n=Math.sin(e-t);return n>0?Tn.COUNTERCLOCKWISE:n<0?Tn.CLOCKWISE:Tn.NONE},Tn.angleBetweenOriented=function(t,e,n){var i=Tn.angle(e,t),r=Tn.angle(e,n)-i;return r<=-Math.PI?r+Tn.PI_TIMES_2:r>Math.PI?r-Tn.PI_TIMES_2:r},Rn.PI_TIMES_2.get=function(){return 2*Math.PI},Rn.PI_OVER_2.get=function(){return Math.PI/2},Rn.PI_OVER_4.get=function(){return Math.PI/4},Rn.COUNTERCLOCKWISE.get=function(){return at.COUNTERCLOCKWISE},Rn.CLOCKWISE.get=function(){return at.CLOCKWISE},Rn.NONE.get=function(){return at.COLLINEAR},Object.defineProperties(Tn,Rn);var Pn=function t(){this._maxCurveSegmentError=0,this._filletAngleQuantum=null,this._closingSegLengthFactor=1,this._segList=null,this._distance=0,this._precisionModel=null,this._bufParams=null,this._li=null,this._s0=null,this._s1=null,this._s2=null,this._seg0=new dn,this._seg1=new dn,this._offset0=new dn,this._offset1=new dn,this._side=0,this._hasNarrowConcaveAngle=!1;var e=arguments[0],n=arguments[1],i=arguments[2];this._precisionModel=e,this._bufParams=n,this._li=new rt,this._filletAngleQuantum=Math.PI/2/n.getQuadrantSegments(),n.getQuadrantSegments()>=8&&n.getJoinStyle()===Cn.JOIN_ROUND&&(this._closingSegLengthFactor=t.MAX_CLOSING_SEG_LEN_FACTOR),this.init(i)},Dn={OFFSET_SEGMENT_SEPARATION_FACTOR:{configurable:!0},INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR:{configurable:!0},CURVE_VERTEX_SNAP_DISTANCE_FACTOR:{configurable:!0},MAX_CLOSING_SEG_LEN_FACTOR:{configurable:!0}};Pn.prototype.addNextSegment=function(t,e){if(this._s0=this._s1,this._s1=this._s2,this._s2=t,this._seg0.setCoordinates(this._s0,this._s1),this.computeOffsetSegment(this._seg0,this._side,this._distance,this._offset0),this._seg1.setCoordinates(this._s1,this._s2),this.computeOffsetSegment(this._seg1,this._side,this._distance,this._offset1),this._s1.equals(this._s2))return null;var n=at.computeOrientation(this._s0,this._s1,this._s2),i=n===at.CLOCKWISE&&this._side===Se.LEFT||n===at.COUNTERCLOCKWISE&&this._side===Se.RIGHT;0===n?this.addCollinear(e):i?this.addOutsideTurn(n,e):this.addInsideTurn(n,e)},Pn.prototype.addLineEndCap=function(t,e){var n=new dn(t,e),i=new dn;this.computeOffsetSegment(n,Se.LEFT,this._distance,i);var r=new dn;this.computeOffsetSegment(n,Se.RIGHT,this._distance,r);var o=e.x-t.x,s=e.y-t.y,a=Math.atan2(s,o);switch(this._bufParams.getEndCapStyle()){case Cn.CAP_ROUND:this._segList.addPt(i.p1),this.addFilletArc(e,a+Math.PI/2,a-Math.PI/2,at.CLOCKWISE,this._distance),this._segList.addPt(r.p1);break;case Cn.CAP_FLAT:this._segList.addPt(i.p1),this._segList.addPt(r.p1);break;case Cn.CAP_SQUARE:var u=new C;u.x=Math.abs(this._distance)*Math.cos(a),u.y=Math.abs(this._distance)*Math.sin(a);var l=new C(i.p1.x+u.x,i.p1.y+u.y),c=new C(r.p1.x+u.x,r.p1.y+u.y);this._segList.addPt(l),this._segList.addPt(c)}},Pn.prototype.getCoordinates=function(){return this._segList.getCoordinates()},Pn.prototype.addMitreJoin=function(t,e,n,i){var r=!0,o=null;try{o=k.intersection(e.p0,e.p1,n.p0,n.p1);(i<=0?1:o.distance(t)/Math.abs(i))>this._bufParams.getMitreLimit()&&(r=!1)}catch(t){if(!(t instanceof X))throw t;o=new C(0,0),r=!1}r?this._segList.addPt(o):this.addLimitedMitreJoin(e,n,i,this._bufParams.getMitreLimit())},Pn.prototype.addFilletCorner=function(t,e,n,i,r){var o=e.x-t.x,s=e.y-t.y,a=Math.atan2(s,o),u=n.x-t.x,l=n.y-t.y,c=Math.atan2(l,u);i===at.CLOCKWISE?a<=c&&(a+=2*Math.PI):a>=c&&(a-=2*Math.PI),this._segList.addPt(e),this.addFilletArc(t,a,c,i,r),this._segList.addPt(n)},Pn.prototype.addOutsideTurn=function(t,e){if(this._offset0.p1.distance(this._offset1.p0)0){var n=new C((this._closingSegLengthFactor*this._offset0.p1.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset0.p1.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(n);var i=new C((this._closingSegLengthFactor*this._offset1.p0.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset1.p0.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(i)}else this._segList.addPt(this._s1);this._segList.addPt(this._offset1.p0)}},Pn.prototype.createCircle=function(t){var e=new C(t.x+this._distance,t.y);this._segList.addPt(e),this.addFilletArc(t,0,2*Math.PI,-1,this._distance),this._segList.closeRing()},Pn.prototype.addBevelJoin=function(t,e){this._segList.addPt(t.p1),this._segList.addPt(e.p0)},Pn.prototype.init=function(t){this._distance=t,this._maxCurveSegmentError=t*(1-Math.cos(this._filletAngleQuantum/2)),this._segList=new wn,this._segList.setPrecisionModel(this._precisionModel),this._segList.setMinimumVertexDistance(t*Pn.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)},Pn.prototype.addCollinear=function(t){this._li.computeIntersection(this._s0,this._s1,this._s1,this._s2);this._li.getIntersectionNum()>=2&&(this._bufParams.getJoinStyle()===Cn.JOIN_BEVEL||this._bufParams.getJoinStyle()===Cn.JOIN_MITRE?(t&&this._segList.addPt(this._offset0.p1),this._segList.addPt(this._offset1.p0)):this.addFilletCorner(this._s1,this._offset0.p1,this._offset1.p0,at.CLOCKWISE,this._distance))},Pn.prototype.closeRing=function(){this._segList.closeRing()},Pn.prototype.hasNarrowConcaveAngle=function(){return this._hasNarrowConcaveAngle},Pn.prototype.interfaces_=function(){return[]},Pn.prototype.getClass=function(){return Pn},Dn.OFFSET_SEGMENT_SEPARATION_FACTOR.get=function(){return.001},Dn.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR.get=function(){return.001},Dn.CURVE_VERTEX_SNAP_DISTANCE_FACTOR.get=function(){return 1e-6},Dn.MAX_CLOSING_SEG_LEN_FACTOR.get=function(){return 80},Object.defineProperties(Pn,Dn);var Mn=function(){this._distance=0,this._precisionModel=null,this._bufParams=null;var t=arguments[0],e=arguments[1];this._precisionModel=t,this._bufParams=e};Mn.prototype.getOffsetCurve=function(t,e){if(this._distance=e,0===e)return null;var n=e<0,i=Math.abs(e),r=this.getSegGen(i);t.length<=1?this.computePointCurve(t[0],r):this.computeOffsetCurve(t,n,r);var o=r.getCoordinates();return n&&Lt.reverse(o),o},Mn.prototype.computeSingleSidedBufferCurve=function(t,e,n){var i=this.simplifyTolerance(this._distance);if(e){n.addSegments(t,!0);var r=Ln.simplify(t,-i),o=r.length-1;n.initSideSegments(r[o],r[o-1],Se.LEFT),n.addFirstSegment();for(var s=o-2;s>=0;s--)n.addNextSegment(r[s],!0)}else{n.addSegments(t,!1);var a=Ln.simplify(t,i),u=a.length-1;n.initSideSegments(a[0],a[1],Se.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(a[l],!0)}n.addLastSegment(),n.closeRing()},Mn.prototype.computeRingBufferCurve=function(t,e,n){var i=this.simplifyTolerance(this._distance);e===Se.RIGHT&&(i=-i);var r=Ln.simplify(t,i),o=r.length-1;n.initSideSegments(r[o-1],r[0],e);for(var s=1;s<=o;s++){var a=1!==s;n.addNextSegment(r[s],a)}n.closeRing()},Mn.prototype.computeLineBufferCurve=function(t,e){var n=this.simplifyTolerance(this._distance),i=Ln.simplify(t,n),r=i.length-1;e.initSideSegments(i[0],i[1],Se.LEFT);for(var o=2;o<=r;o++)e.addNextSegment(i[o],!0);e.addLastSegment(),e.addLineEndCap(i[r-1],i[r]);var s=Ln.simplify(t,-n),a=s.length-1;e.initSideSegments(s[a],s[a-1],Se.LEFT);for(var u=a-2;u>=0;u--)e.addNextSegment(s[u],!0);e.addLastSegment(),e.addLineEndCap(s[1],s[0]),e.closeRing()},Mn.prototype.computePointCurve=function(t,e){switch(this._bufParams.getEndCapStyle()){case Cn.CAP_ROUND:e.createCircle(t);break;case Cn.CAP_SQUARE:e.createSquare(t)}},Mn.prototype.getLineCurve=function(t,e){if(this._distance=e,e<0&&!this._bufParams.isSingleSided())return null;if(0===e)return null;var n=Math.abs(e),i=this.getSegGen(n);if(t.length<=1)this.computePointCurve(t[0],i);else if(this._bufParams.isSingleSided()){var r=e<0;this.computeSingleSidedBufferCurve(t,r,i)}else this.computeLineBufferCurve(t,i);return i.getCoordinates()},Mn.prototype.getBufferParameters=function(){return this._bufParams},Mn.prototype.simplifyTolerance=function(t){return t*this._bufParams.getSimplifyFactor()},Mn.prototype.getRingCurve=function(t,e,n){if(this._distance=n,t.length<=2)return this.getLineCurve(t,n);if(0===n)return Mn.copyCoordinates(t);var i=this.getSegGen(n);return this.computeRingBufferCurve(t,e,i),i.getCoordinates()},Mn.prototype.computeOffsetCurve=function(t,e,n){var i=this.simplifyTolerance(this._distance);if(e){var r=Ln.simplify(t,-i),o=r.length-1;n.initSideSegments(r[o],r[o-1],Se.LEFT),n.addFirstSegment();for(var s=o-2;s>=0;s--)n.addNextSegment(r[s],!0)}else{var a=Ln.simplify(t,i),u=a.length-1;n.initSideSegments(a[0],a[1],Se.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(a[l],!0)}n.addLastSegment()},Mn.prototype.getSegGen=function(t){return new Pn(this._precisionModel,this._bufParams,t)},Mn.prototype.interfaces_=function(){return[]},Mn.prototype.getClass=function(){return Mn},Mn.copyCoordinates=function(t){for(var e=new Array(t.length).fill(null),n=0;nr.getMaxY()||this.findStabbedSegments(t,i.getDirectedEdges(),e)}return e}if(3===arguments.length)if(T(arguments[2],xt)&&arguments[0]instanceof C&&arguments[1]instanceof ze)for(var o=arguments[0],s=arguments[1],a=arguments[2],u=s.getEdge().getCoordinates(),l=0;lthis._seg.p1.y&&this._seg.reverse();if(!(Math.max(this._seg.p0.x,this._seg.p1.x)this._seg.p1.y||at.computeOrientation(this._seg.p0,this._seg.p1,o)===at.RIGHT)){var c=s.getDepth(Se.LEFT);this._seg.p0.equals(u[l])||(c=s.getDepth(Se.RIGHT));var p=new Gn(this._seg,c);a.add(p)}}else if(T(arguments[2],xt)&&arguments[0]instanceof C&&T(arguments[1],xt))for(var h=arguments[0],f=arguments[1],g=arguments[2],d=f.iterator();d.hasNext();){var y=d.next();y.isForward()&&this.findStabbedSegments(h,y,g)}},An.prototype.getDepth=function(t){var e=this.findStabbedSegments(t);if(0===e.size())return 0;return $e.min(e)._leftDepth},An.prototype.interfaces_=function(){return[]},An.prototype.getClass=function(){return An},Fn.DepthSegment.get=function(){return Gn},Object.defineProperties(An,Fn);var Gn=function(){this._upwardSeg=null,this._leftDepth=null;var t=arguments[0],e=arguments[1];this._upwardSeg=new dn(t),this._leftDepth=e};Gn.prototype.compareTo=function(t){var e=t;if(this._upwardSeg.minX()>=e._upwardSeg.maxX())return 1;if(this._upwardSeg.maxX()<=e._upwardSeg.minX())return-1;var n=this._upwardSeg.orientationIndex(e._upwardSeg);return 0!==n?n:0!=(n=-1*e._upwardSeg.orientationIndex(this._upwardSeg))?n:this._upwardSeg.compareTo(e._upwardSeg)},Gn.prototype.compareX=function(t,e){var n=t.p0.compareTo(e.p0);return 0!==n?n:t.p1.compareTo(e.p1)},Gn.prototype.toString=function(){return this._upwardSeg.toString()},Gn.prototype.interfaces_=function(){return[E]},Gn.prototype.getClass=function(){return Gn};var qn=function(t,e,n){this.p0=t||null,this.p1=e||null,this.p2=n||null};qn.prototype.area=function(){return qn.area(this.p0,this.p1,this.p2)},qn.prototype.signedArea=function(){return qn.signedArea(this.p0,this.p1,this.p2)},qn.prototype.interpolateZ=function(t){if(null===t)throw new m(\"Supplied point is null.\");return qn.interpolateZ(t,this.p0,this.p1,this.p2)},qn.prototype.longestSideLength=function(){return qn.longestSideLength(this.p0,this.p1,this.p2)},qn.prototype.isAcute=function(){return qn.isAcute(this.p0,this.p1,this.p2)},qn.prototype.circumcentre=function(){return qn.circumcentre(this.p0,this.p1,this.p2)},qn.prototype.area3D=function(){return qn.area3D(this.p0,this.p1,this.p2)},qn.prototype.centroid=function(){return qn.centroid(this.p0,this.p1,this.p2)},qn.prototype.inCentre=function(){return qn.inCentre(this.p0,this.p1,this.p2)},qn.prototype.interfaces_=function(){return[]},qn.prototype.getClass=function(){return qn},qn.area=function(t,e,n){return Math.abs(((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2)},qn.signedArea=function(t,e,n){return((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2},qn.det=function(t,e,n,i){return t*i-e*n},qn.interpolateZ=function(t,e,n,i){var r=e.x,o=e.y,s=n.x-r,a=i.x-r,u=n.y-o,l=i.y-o,c=s*l-a*u,p=t.x-r,h=t.y-o,f=(l*p-a*h)/c,g=(-u*p+s*h)/c;return e.z+f*(n.z-e.z)+g*(i.z-e.z)},qn.longestSideLength=function(t,e,n){var i=t.distance(e),r=e.distance(n),o=n.distance(t),s=i;return r>s&&(s=r),o>s&&(s=o),s},qn.isAcute=function(t,e,n){return!!Tn.isAcute(t,e,n)&&(!!Tn.isAcute(e,n,t)&&!!Tn.isAcute(n,t,e))},qn.circumcentre=function(t,e,n){var i=n.x,r=n.y,o=t.x-i,s=t.y-r,a=e.x-i,u=e.y-r,l=2*qn.det(o,s,a,u),c=qn.det(s,o*o+s*s,u,a*a+u*u),p=qn.det(o,o*o+s*s,a,a*a+u*u);return new C(i-c/l,r+p/l)},qn.perpendicularBisector=function(t,e){var n=e.x-t.x,i=e.y-t.y,r=new k(t.x+n/2,t.y+i/2,1),o=new k(t.x-i+n/2,t.y+n+i/2,1);return new k(r,o)},qn.angleBisector=function(t,e,n){var i=e.distance(t),r=i/(i+e.distance(n)),o=n.x-t.x,s=n.y-t.y;return new C(t.x+r*o,t.y+r*s)},qn.area3D=function(t,e,n){var i=e.x-t.x,r=e.y-t.y,o=e.z-t.z,s=n.x-t.x,a=n.y-t.y,u=n.z-t.z,l=r*u-o*a,c=o*s-i*u,p=i*a-r*s,h=l*l+c*c+p*p,f=Math.sqrt(h)/2;return f},qn.centroid=function(t,e,n){var i=(t.x+e.x+n.x)/3,r=(t.y+e.y+n.y)/3;return new C(i,r)},qn.inCentre=function(t,e,n){var i=e.distance(n),r=t.distance(n),o=t.distance(e),s=i+r+o,a=(i*t.x+r*e.x+o*n.x)/s,u=(i*t.y+r*e.y+o*n.y)/s;return new C(a,u)};var Bn=function(){this._inputGeom=null,this._distance=null,this._curveBuilder=null,this._curveList=new Nt;var t=arguments[0],e=arguments[1],n=arguments[2];this._inputGeom=t,this._distance=e,this._curveBuilder=n};Bn.prototype.addPoint=function(t){if(this._distance<=0)return null;var e=t.getCoordinates(),n=this._curveBuilder.getLineCurve(e,this._distance);this.addCurve(n,w.EXTERIOR,w.INTERIOR)},Bn.prototype.addPolygon=function(t){var e=this._distance,n=Se.LEFT;this._distance<0&&(e=-this._distance,n=Se.RIGHT);var i=t.getExteriorRing(),r=Lt.removeRepeatedPoints(i.getCoordinates());if(this._distance<0&&this.isErodedCompletely(i,this._distance))return null;if(this._distance<=0&&r.length<3)return null;this.addPolygonRing(r,e,n,w.EXTERIOR,w.INTERIOR);for(var o=0;o0&&this.isErodedCompletely(s,-this._distance)||this.addPolygonRing(a,e,Se.opposite(n),w.INTERIOR,w.EXTERIOR)}},Bn.prototype.isTriangleErodedCompletely=function(t,e){var n=new qn(t[0],t[1],t[2]),i=n.inCentre();return at.distancePointLine(i,n.p0,n.p1)=ee.MINIMUM_VALID_SIZE&&at.isCCW(t)&&(o=r,s=i,n=Se.opposite(n));var a=this._curveBuilder.getRingCurve(t,n,e);this.addCurve(a,o,s)},Bn.prototype.add=function(t){if(t.isEmpty())return null;t instanceof $t?this.addPolygon(t):t instanceof Kt?this.addLineString(t):t instanceof Qt?this.addPoint(t):t instanceof te?this.addCollection(t):t instanceof Xt?this.addCollection(t):t instanceof ne?this.addCollection(t):t instanceof zt&&this.addCollection(t)},Bn.prototype.isErodedCompletely=function(t,e){var n=t.getCoordinates();if(n.length<4)return e<0;if(4===n.length)return this.isTriangleErodedCompletely(n,e);var i=t.getEnvelopeInternal(),r=Math.min(i.getHeight(),i.getWidth());return e<0&&2*Math.abs(e)>r},Bn.prototype.addCollection=function(t){for(var e=0;e=this._max)throw new i;var t=this._parent.getGeometryN(this._index++);return t instanceof zt?(this._subcollectionIterator=new Un(t),this._subcollectionIterator.next()):t},Un.prototype.remove=function(){throw new Error(this.getClass().getName())},Un.prototype.hasNext=function(){if(this._atStart)return!0;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return!0;this._subcollectionIterator=null}return!(this._index>=this._max)},Un.prototype.interfaces_=function(){return[Et]},Un.prototype.getClass=function(){return Un},Un.isAtomic=function(t){return!(t instanceof zt)};var zn=function(){this._geom=null;var t=arguments[0];this._geom=t};zn.prototype.locate=function(t){return zn.locate(t,this._geom)},zn.prototype.interfaces_=function(){return[Vn]},zn.prototype.getClass=function(){return zn},zn.isPointInRing=function(t,e){return!!e.getEnvelopeInternal().intersects(t)&&at.isPointInRing(t,e.getCoordinates())},zn.containsPointInPolygon=function(t,e){if(e.isEmpty())return!1;var n=e.getExteriorRing();if(!zn.isPointInRing(t,n))return!1;for(var i=0;i=0;n--){var i=this._edgeList.get(n),r=i.getSym();null===e&&(e=r),null!==t&&r.setNext(t),t=i}e.setNext(t)},e.prototype.computeDepths=function(){if(1===arguments.length){var t=arguments[0],e=this.findIndex(t),n=t.getDepth(Se.LEFT),i=t.getDepth(Se.RIGHT),r=this.computeDepths(e+1,this._edgeList.size(),n);if(this.computeDepths(0,e,r)!==i)throw new we(\"depth mismatch at \"+t.getCoordinate())}else if(3===arguments.length){for(var o=arguments[0],s=arguments[1],a=arguments[2],u=o;u=0;r--){var o=this._resultAreaEdgeList.get(r),s=o.getSym();switch(null===e&&o.getEdgeRing()===t&&(e=o),i){case this._SCANNING_FOR_INCOMING:if(s.getEdgeRing()!==t)continue;n=s,i=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(o.getEdgeRing()!==t)continue;n.setNextMin(o),i=this._SCANNING_FOR_INCOMING}}i===this._LINKING_TO_OUTGOING&&(et.isTrue(null!==e,\"found null for first outgoing dirEdge\"),et.isTrue(e.getEdgeRing()===t,\"unable to link last incoming dirEdge\"),n.setNextMin(e))},e.prototype.getOutgoingDegree=function(){if(0===arguments.length){for(var t=0,e=this.iterator();e.hasNext();){e.next().isInResult()&&t++}return t}if(1===arguments.length){for(var n=arguments[0],i=0,r=this.iterator();r.hasNext();){r.next().getEdgeRing()===n&&i++}return i}},e.prototype.getLabel=function(){return this._label},e.prototype.findCoveredLineEdges=function(){for(var t=w.NONE,e=this.iterator();e.hasNext();){var n=e.next(),i=n.getSym();if(!n.isLineEdge()){if(n.isInResult()){t=w.INTERIOR;break}if(i.isInResult()){t=w.EXTERIOR;break}}}if(t===w.NONE)return null;for(var r=t,o=this.iterator();o.hasNext();){var s=o.next(),a=s.getSym();s.isLineEdge()?s.getEdge().setCovered(r===w.INTERIOR):(s.isInResult()&&(r=w.EXTERIOR),a.isInResult()&&(r=w.INTERIOR))}},e.prototype.computeLabelling=function(e){t.prototype.computeLabelling.call(this,e),this._label=new Pe(w.NONE);for(var n=this.iterator();n.hasNext();)for(var i=n.next().getEdge().getLabel(),r=0;r<2;r++){var o=i.getLocation(r);o!==w.INTERIOR&&o!==w.BOUNDARY||this._label.setLocation(r,w.INTERIOR)}},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Xn),kn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createNode=function(t){return new Ge(t,new Yn)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Xe),jn=function t(){this._pts=null,this._orientation=null;var e=arguments[0];this._pts=e,this._orientation=t.orientation(e)};jn.prototype.compareTo=function(t){var e=t;return jn.compareOriented(this._pts,this._orientation,e._pts,e._orientation)},jn.prototype.interfaces_=function(){return[E]},jn.prototype.getClass=function(){return jn},jn.orientation=function(t){return 1===Lt.increasingDirection(t)},jn.compareOriented=function(t,e,n,i){for(var r=e?1:-1,o=i?1:-1,s=e?t.length:-1,a=i?n.length:-1,u=e?0:t.length-1,l=i?0:n.length-1;;){var c=t[u].compareTo(n[l]);if(0!==c)return c;var p=(u+=r)===s,h=(l+=o)===a;if(p&&!h)return-1;if(!p&&h)return 1;if(p&&h)return 0}};var Hn=function(){this._edges=new Nt,this._ocaMap=new p};Hn.prototype.print=function(t){t.print(\"MULTILINESTRING ( \");for(var e=0;e0&&t.print(\",\"),t.print(\"(\");for(var i=n.getCoordinates(),r=0;r0&&t.print(\",\"),t.print(i[r].x+\" \"+i[r].y);t.println(\")\")}t.print(\") \")},Hn.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next())},Hn.prototype.findEdgeIndex=function(t){for(var e=0;et?1:this.diste?1:0},Jn.prototype.interfaces_=function(){return[E]},Jn.prototype.getClass=function(){return Jn};var Qn=function(){this._nodeMap=new p,this.edge=null;var t=arguments[0];this.edge=t};Qn.prototype.print=function(t){t.println(\"Intersections:\");for(var e=this.iterator();e.hasNext();){e.next().print(t)}},Qn.prototype.iterator=function(){return this._nodeMap.values().iterator()},Qn.prototype.addSplitEdges=function(t){this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next(),r=this.createSplitEdge(n,i);t.add(r),n=i}},Qn.prototype.addEndpoints=function(){var t=this.edge.pts.length-1;this.add(this.edge.pts[0],0,0),this.add(this.edge.pts[t],t,0)},Qn.prototype.createSplitEdge=function(t,e){var n=e.segmentIndex-t.segmentIndex+2,i=this.edge.pts[e.segmentIndex],r=e.dist>0||!e.coord.equals2D(i);r||n--;var o=new Array(n).fill(null),s=0;o[s++]=new C(t.coord);for(var a=t.segmentIndex+1;a<=e.segmentIndex;a++)o[s++]=this.edge.pts[a];return r&&(o[s]=e.coord),new ni(o,new Pe(this.edge._label))},Qn.prototype.add=function(t,e,n){var i=new Jn(t,e,n),r=this._nodeMap.get(i);return null!==r?r:(this._nodeMap.put(i,i),i)},Qn.prototype.isIntersection=function(t){for(var e=this.iterator();e.hasNext();){if(e.next().coord.equals(t))return!0}return!1},Qn.prototype.interfaces_=function(){return[]},Qn.prototype.getClass=function(){return Qn};var Zn=function(){};Zn.prototype.getChainStartIndices=function(t){var e=0,n=new Nt;n.add(new M(e));do{var i=this.findChainEnd(t,e);n.add(new M(i)),e=i}while(en?e:n},$n.prototype.getMinX=function(t){var e=this.pts[this.startIndex[t]].x,n=this.pts[this.startIndex[t+1]].x;return ee&&(i=1),this._depth[t][n]=i}}},ti.prototype.getDelta=function(t){return this._depth[t][Se.RIGHT]-this._depth[t][Se.LEFT]},ti.prototype.getLocation=function(t,e){return this._depth[t][e]<=0?w.EXTERIOR:w.INTERIOR},ti.prototype.toString=function(){return\"A: \"+this._depth[0][1]+\",\"+this._depth[0][2]+\" B: \"+this._depth[1][1]+\",\"+this._depth[1][2]},ti.prototype.add=function(){if(1===arguments.length)for(var t=arguments[0],e=0;e<2;e++)for(var n=1;n<3;n++){var i=t.getLocation(e,n);i!==w.EXTERIOR&&i!==w.INTERIOR||(this.isNull(e,n)?this._depth[e][n]=ti.depthAtLocation(i):this._depth[e][n]+=ti.depthAtLocation(i))}else if(3===arguments.length){var r=arguments[0],o=arguments[1];arguments[2]===w.INTERIOR&&this._depth[r][o]++}},ti.prototype.interfaces_=function(){return[]},ti.prototype.getClass=function(){return ti},ti.depthAtLocation=function(t){return t===w.EXTERIOR?0:t===w.INTERIOR?1:ti.NULL_VALUE},ei.NULL_VALUE.get=function(){return-1},Object.defineProperties(ti,ei);var ni=function(t){function e(){if(t.call(this),this.pts=null,this._env=null,this.eiList=new Qn(this),this._name=null,this._mce=null,this._isIsolated=!0,this._depth=new ti,this._depthDelta=0,1===arguments.length){var n=arguments[0];e.call(this,n,null)}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.pts=i,this._label=r}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDepth=function(){return this._depth},e.prototype.getCollapsedEdge=function(){var t=new Array(2).fill(null);t[0]=this.pts[0],t[1]=this.pts[1];return new e(t,Pe.toLineLabel(this._label))},e.prototype.isIsolated=function(){return this._isIsolated},e.prototype.getCoordinates=function(){return this.pts},e.prototype.setIsolated=function(t){this._isIsolated=t},e.prototype.setName=function(t){this._name=t},e.prototype.equals=function(t){if(!(t instanceof e))return!1;var n=t;if(this.pts.length!==n.pts.length)return!1;for(var i=!0,r=!0,o=this.pts.length,s=0;s0?this.pts[0]:null;if(1===arguments.length){var t=arguments[0];return this.pts[t]}},e.prototype.print=function(t){t.print(\"edge \"+this._name+\": \"),t.print(\"LINESTRING (\");for(var e=0;e0&&t.print(\",\"),t.print(this.pts[e].x+\" \"+this.pts[e].y);t.print(\") \"+this._label+\" \"+this._depthDelta)},e.prototype.computeIM=function(t){e.updateIM(this._label,t)},e.prototype.isCollapsed=function(){return!!this._label.isArea()&&(3===this.pts.length&&!!this.pts[0].equals(this.pts[2]))},e.prototype.isClosed=function(){return this.pts[0].equals(this.pts[this.pts.length-1])},e.prototype.getMaximumSegmentIndex=function(){return this.pts.length-1},e.prototype.getDepthDelta=function(){return this._depthDelta},e.prototype.getNumPoints=function(){return this.pts.length},e.prototype.printReverse=function(t){t.print(\"edge \"+this._name+\": \");for(var e=this.pts.length-1;e>=0;e--)t.print(this.pts[e]+\" \");t.println(\"\")},e.prototype.getMonotoneChainEdge=function(){return null===this._mce&&(this._mce=new $n(this)),this._mce},e.prototype.getEnvelope=function(){if(null===this._env){this._env=new j;for(var t=0;t0&&t.append(\",\"),t.append(this.pts[e].x+\" \"+this.pts[e].y);return t.append(\") \"+this._label+\" \"+this._depthDelta),t.toString()},e.prototype.isPointwiseEqual=function(t){if(this.pts.length!==t.pts.length)return!1;for(var e=0;ei||this._maxyo;if(s)return!1;var a=this.intersectsToleranceSquare(t,e);return et.isTrue(!(s&&a),\"Found bad envelope test\"),a},ai.prototype.initCorners=function(t){this._minx=t.x-.5,this._maxx=t.x+.5,this._miny=t.y-.5,this._maxy=t.y+.5,this._corner[0]=new C(this._maxx,this._maxy),this._corner[1]=new C(this._minx,this._maxy),this._corner[2]=new C(this._minx,this._miny),this._corner[3]=new C(this._maxx,this._miny)},ai.prototype.intersects=function(t,e){return 1===this._scaleFactor?this.intersectsScaled(t,e):(this.copyScaled(t,this._p0Scaled),this.copyScaled(e,this._p1Scaled),this.intersectsScaled(this._p0Scaled,this._p1Scaled))},ai.prototype.scale=function(t){return Math.round(t*this._scaleFactor)},ai.prototype.getCoordinate=function(){return this._originalPt},ai.prototype.copyScaled=function(t,e){e.x=this.scale(t.x),e.y=this.scale(t.y)},ai.prototype.getSafeEnvelope=function(){if(null===this._safeEnv){var t=ai.SAFE_ENV_EXPANSION_FACTOR/this._scaleFactor;this._safeEnv=new j(this._originalPt.x-t,this._originalPt.x+t,this._originalPt.y-t,this._originalPt.y+t)}return this._safeEnv},ai.prototype.intersectsPixelClosure=function(t,e){return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),!!this._li.hasIntersection())))},ai.prototype.intersectsToleranceSquare=function(t,e){var n=!1,i=!1;return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!this._li.isProper()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),!!this._li.isProper()||(this._li.hasIntersection()&&(n=!0),this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),!!this._li.isProper()||(this._li.hasIntersection()&&(i=!0),this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),!!this._li.isProper()||(!(!n||!i)||(!!t.equals(this._pt)||!!e.equals(this._pt))))))},ai.prototype.addSnappedNode=function(t,e){var n=t.getCoordinate(e),i=t.getCoordinate(e+1);return!!this.intersects(n,i)&&(t.addIntersection(this.getCoordinate(),e),!0)},ai.prototype.interfaces_=function(){return[]},ai.prototype.getClass=function(){return ai},ui.SAFE_ENV_EXPANSION_FACTOR.get=function(){return.75},Object.defineProperties(ai,ui);var li=function(){this.tempEnv1=new j,this.selectedSegment=new dn};li.prototype.select=function(){if(1===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];t.getLineSegment(e,this.selectedSegment),this.select(this.selectedSegment)}},li.prototype.interfaces_=function(){return[]},li.prototype.getClass=function(){return li};var ci=function(){this._index=null;var t=arguments[0];this._index=t},pi={HotPixelSnapAction:{configurable:!0}};ci.prototype.snap=function(){if(1===arguments.length){var t=arguments[0];return this.snap(t,null,-1)}if(3===arguments.length){var e=arguments[0],n=arguments[1],i=arguments[2],r=e.getSafeEnvelope(),o=new hi(e,n,i);return this._index.query(r,{interfaces_:function(){return[Ke]},visitItem:function(t){t.select(r,o)}}),o.isNodeAdded()}},ci.prototype.interfaces_=function(){return[]},ci.prototype.getClass=function(){return ci},pi.HotPixelSnapAction.get=function(){return hi},Object.defineProperties(ci,pi);var hi=function(t){function e(){t.call(this),this._hotPixel=null,this._parentEdge=null,this._hotPixelVertexIndex=null,this._isNodeAdded=!1;var e=arguments[0],n=arguments[1],i=arguments[2];this._hotPixel=e,this._parentEdge=n,this._hotPixelVertexIndex=i}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isNodeAdded=function(){return this._isNodeAdded},e.prototype.select=function(){if(2!==arguments.length)return t.prototype.select.apply(this,arguments);var e=arguments[0],n=arguments[1],i=e.getContext();if(null!==this._parentEdge&&i===this._parentEdge&&n===this._hotPixelVertexIndex)return null;this._isNodeAdded=this._hotPixel.addSnappedNode(i,n)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(li),fi=function(){this._li=null,this._interiorIntersections=null;var t=arguments[0];this._li=t,this._interiorIntersections=new Nt};fi.prototype.processIntersections=function(t,e,n,i){if(t===n&&e===i)return null;var r=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[i],a=n.getCoordinates()[i+1];if(this._li.computeIntersection(r,o,s,a),this._li.hasIntersection()&&this._li.isInteriorIntersection()){for(var u=0;u=0;e--){try{t.bufferReducedPrecision(e)}catch(e){if(!(e instanceof we))throw e;t._saveException=e}if(null!==t._resultGeometry)return null}throw this._saveException}if(1===arguments.length){var n=arguments[0],i=di.precisionScaleFactor(this._argGeom,this._distance,n),r=new fe(i);this.bufferFixedPrecision(r)}},di.prototype.computeGeometry=function(){if(this.bufferOriginalPrecision(),null!==this._resultGeometry)return null;var t=this._argGeom.getFactory().getPrecisionModel();t.getType()===fe.FIXED?this.bufferFixedPrecision(t):this.bufferReducedPrecision()},di.prototype.setQuadrantSegments=function(t){this._bufParams.setQuadrantSegments(t)},di.prototype.bufferOriginalPrecision=function(){try{var t=new ii(this._bufParams);this._resultGeometry=t.buffer(this._argGeom,this._distance)}catch(t){if(!(t instanceof $))throw t;this._saveException=t}},di.prototype.getResultGeometry=function(t){return this._distance=t,this.computeGeometry(),this._resultGeometry},di.prototype.setEndCapStyle=function(t){this._bufParams.setEndCapStyle(t)},di.prototype.interfaces_=function(){return[]},di.prototype.getClass=function(){return di},di.bufferOp=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return new di(t).getResultGeometry(e)}if(3===arguments.length){if(Number.isInteger(arguments[2])&&arguments[0]instanceof ct&&\"number\"==typeof arguments[1]){var n=arguments[0],i=arguments[1],r=arguments[2],o=new di(n);o.setQuadrantSegments(r);return o.getResultGeometry(i)}if(arguments[2]instanceof Cn&&arguments[0]instanceof ct&&\"number\"==typeof arguments[1]){var s=arguments[0],a=arguments[1],u=arguments[2];return new di(s,u).getResultGeometry(a)}}else if(4===arguments.length){var l=arguments[0],c=arguments[1],p=arguments[2],h=arguments[3],f=new di(l);f.setQuadrantSegments(p),f.setEndCapStyle(h);return f.getResultGeometry(c)}},di.precisionScaleFactor=function(t,e,n){var i=t.getEnvelopeInternal(),r=R.max(Math.abs(i.getMaxX()),Math.abs(i.getMaxY()),Math.abs(i.getMinX()),Math.abs(i.getMinY()))+2*(e>0?e:0),o=n-Math.trunc(Math.log(r)/Math.log(10)+1);return Math.pow(10,o)},yi.CAP_ROUND.get=function(){return Cn.CAP_ROUND},yi.CAP_BUTT.get=function(){return Cn.CAP_FLAT},yi.CAP_FLAT.get=function(){return Cn.CAP_FLAT},yi.CAP_SQUARE.get=function(){return Cn.CAP_SQUARE},yi.MAX_PRECISION_DIGITS.get=function(){return 12},Object.defineProperties(di,yi);var _i=function(){this._pt=[new C,new C],this._distance=v.NaN,this._isNull=!0};_i.prototype.getCoordinates=function(){return this._pt},_i.prototype.getCoordinate=function(t){return this._pt[t]},_i.prototype.setMinimum=function(){if(1===arguments.length){var t=arguments[0];this.setMinimum(t._pt[0],t._pt[1])}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this._isNull)return this.initialize(e,n),null;var i=e.distance(n);ithis._distance&&this.initialize(e,n,i)}},_i.prototype.interfaces_=function(){return[]},_i.prototype.getClass=function(){return _i};var mi=function(){};mi.prototype.interfaces_=function(){return[]},mi.prototype.getClass=function(){return mi},mi.computeDistance=function(){if(arguments[2]instanceof _i&&arguments[0]instanceof Kt&&arguments[1]instanceof C)for(var t=arguments[0],e=arguments[1],n=arguments[2],i=t.getCoordinates(),r=new dn,o=0;o0||this._isIn?w.INTERIOR:w.EXTERIOR)},Si.prototype.interfaces_=function(){return[]},Si.prototype.getClass=function(){return Si};var Li=function t(){if(this._component=null,this._segIndex=null,this._pt=null,2===arguments.length){var e=arguments[0],n=arguments[1];t.call(this,e,t.INSIDE_AREA,n)}else if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2];this._component=i,this._segIndex=r,this._pt=o}},bi={INSIDE_AREA:{configurable:!0}};Li.prototype.isInsideArea=function(){return this._segIndex===Li.INSIDE_AREA},Li.prototype.getCoordinate=function(){return this._pt},Li.prototype.getGeometryComponent=function(){return this._component},Li.prototype.getSegmentIndex=function(){return this._segIndex},Li.prototype.interfaces_=function(){return[]},Li.prototype.getClass=function(){return Li},bi.INSIDE_AREA.get=function(){return-1},Object.defineProperties(Li,bi);var wi=function(t){this._pts=t||null};wi.prototype.filter=function(t){t instanceof Qt&&this._pts.add(t)},wi.prototype.interfaces_=function(){return[Vt]},wi.prototype.getClass=function(){return wi},wi.getPoints=function(){if(1===arguments.length){var t=arguments[0];return t instanceof Qt?$e.singletonList(t):wi.getPoints(t,new Nt)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return e instanceof Qt?n.add(e):e instanceof zt&&e.apply(new wi(n)),n}};var Oi=function(){this._locations=null;var t=arguments[0];this._locations=t};Oi.prototype.filter=function(t){(t instanceof Qt||t instanceof Kt||t instanceof $t)&&this._locations.add(new Li(t,0,t.getCoordinate()))},Oi.prototype.interfaces_=function(){return[Vt]},Oi.prototype.getClass=function(){return Oi},Oi.getLocations=function(t){var e=new Nt;return t.apply(new Oi(e)),e};var Ti=function(){if(this._geom=null,this._terminateDistance=0,this._ptLocator=new Si,this._minDistanceLocation=null,this._minDistance=v.MAX_VALUE,2===arguments.length){var t=arguments[0],e=arguments[1];this._geom=[t,e],this._terminateDistance=0}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this._geom=new Array(2).fill(null),this._geom[0]=n,this._geom[1]=i,this._terminateDistance=r}};Ti.prototype.computeContainmentDistance=function(){if(0===arguments.length){var t=new Array(2).fill(null);if(this.computeContainmentDistance(0,t),this._minDistance<=this._terminateDistance)return null;this.computeContainmentDistance(1,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],i=1-e,r=Ni.getPolygons(this._geom[e]);if(r.size()>0){var o=Oi.getLocations(this._geom[i]);if(this.computeContainmentDistance(o,r,n),this._minDistance<=this._terminateDistance)return this._minDistanceLocation[i]=n[0],this._minDistanceLocation[e]=n[1],null}}else if(3===arguments.length)if(arguments[2]instanceof Array&&T(arguments[0],xt)&&T(arguments[1],xt)){for(var s=arguments[0],a=arguments[1],u=arguments[2],l=0;lthis._minDistance)return null;for(var i=t.getCoordinates(),r=e.getCoordinate(),o=0;othis._minDistance)return null;for(var p=u.getCoordinates(),h=l.getCoordinates(),f=0;fthis._distance&&this.initialize(e,n,i)}},Ri.prototype.interfaces_=function(){return[]},Ri.prototype.getClass=function(){return Ri};var Pi=function(){};Pi.prototype.interfaces_=function(){return[]},Pi.prototype.getClass=function(){return Pi},Pi.computeDistance=function(){if(arguments[2]instanceof Ri&&arguments[0]instanceof Kt&&arguments[1]instanceof C)for(var t=arguments[0],e=arguments[1],n=arguments[2],i=new dn,r=t.getCoordinates(),o=0;o1||t<=0)throw new m(\"Fraction is not in range (0.0 - 1.0]\");this._densifyFrac=t},Di.prototype.compute=function(t,e){this.computeOrientedDistance(t,e,this._ptDist),this.computeOrientedDistance(e,t,this._ptDist)},Di.prototype.distance=function(){return this.compute(this._g0,this._g1),this._ptDist.getDistance()},Di.prototype.computeOrientedDistance=function(t,e,n){var i=new Ai(e);if(t.apply(i),n.setMaximum(i.getMaxPointDistance()),this._densifyFrac>0){var r=new Fi(e,this._densifyFrac);t.apply(r),n.setMaximum(r.getMaxPointDistance())}},Di.prototype.orientedDistance=function(){return this.computeOrientedDistance(this._g0,this._g1,this._ptDist),this._ptDist.getDistance()},Di.prototype.interfaces_=function(){return[]},Di.prototype.getClass=function(){return Di},Di.distance=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return new Di(t,e).distance()}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],o=new Di(n,i);return o.setDensifyFraction(r),o.distance()}},Mi.MaxPointDistanceFilter.get=function(){return Ai},Mi.MaxDensifiedByFractionDistanceFilter.get=function(){return Fi},Object.defineProperties(Di,Mi);var Ai=function(){this._maxPtDist=new Ri,this._minPtDist=new Ri,this._euclideanDist=new Pi,this._geom=null;var t=arguments[0];this._geom=t};Ai.prototype.filter=function(t){this._minPtDist.initialize(),Pi.computeDistance(this._geom,t,this._minPtDist),this._maxPtDist.setMaximum(this._minPtDist)},Ai.prototype.getMaxPointDistance=function(){return this._maxPtDist},Ai.prototype.interfaces_=function(){return[ft]},Ai.prototype.getClass=function(){return Ai};var Fi=function(){this._maxPtDist=new Ri,this._minPtDist=new Ri,this._geom=null,this._numSubSegs=0;var t=arguments[0],e=arguments[1];this._geom=t,this._numSubSegs=Math.trunc(Math.round(1/e))};Fi.prototype.filter=function(t,e){if(0===e)return null;for(var n=t.getCoordinate(e-1),i=t.getCoordinate(e),r=(i.x-n.x)/this._numSubSegs,o=(i.y-n.y)/this._numSubSegs,s=0;sn){this._isValid=!1;var r=i.getCoordinates();this._errorLocation=r[1],this._errorIndicator=t.getFactory().createLineString(r),this._errMsg=\"Distance between buffer curve and input is too large (\"+this._maxDistanceFound+\" at \"+Z.toLineString(r[0],r[1])+\")\"}},Gi.prototype.isValid=function(){var t=Math.abs(this._bufDistance),e=Gi.MAX_DISTANCE_DIFF_FRAC*t;return this._minValidDistance=t-e,this._maxValidDistance=t+e,!(!this._input.isEmpty()&&!this._result.isEmpty())||(this._bufDistance>0?this.checkPositiveValid():this.checkNegativeValid(),Gi.VERBOSE&&Y.out.println(\"Min Dist= \"+this._minDistanceFound+\" err= \"+(1-this._minDistanceFound/this._bufDistance)+\" Max Dist= \"+this._maxDistanceFound+\" err= \"+(this._maxDistanceFound/this._bufDistance-1)),this._isValid)},Gi.prototype.checkNegativeValid=function(){if(!(this._input instanceof $t||this._input instanceof ne||this._input instanceof zt))return null;var t=this.getPolygonLines(this._input);if(this.checkMinimumDistance(t,this._result,this._minValidDistance),!this._isValid)return null;this.checkMaximumDistance(t,this._result,this._maxValidDistance)},Gi.prototype.getErrorIndicator=function(){return this._errorIndicator},Gi.prototype.checkMinimumDistance=function(t,e,n){var i=new Ti(t,e,n);if(this._minDistanceFound=i.distance(),this._minDistanceFound0&&t>e&&(this._isValid=!1,this._errorMsg=\"Area of positive buffer is smaller than input\",this._errorIndicator=this._result),this._distance<0&&t=2?null:this._distance>0?null:(this._result.isEmpty()||(this._isValid=!1,this._errorMsg=\"Result is non-empty\",this._errorIndicator=this._result),void this.report(\"ExpectedEmpty\"))},Bi.prototype.report=function(t){if(!Bi.VERBOSE)return null;Y.out.println(\"Check \"+t+\": \"+(this._isValid?\"passed\":\"FAILED\"))},Bi.prototype.getErrorMessage=function(){return this._errorMsg},Bi.prototype.interfaces_=function(){return[]},Bi.prototype.getClass=function(){return Bi},Bi.isValidMsg=function(t,e,n){var i=new Bi(t,e,n);return i.isValid()?null:i.getErrorMessage()},Bi.isValid=function(t,e,n){return!!new Bi(t,e,n).isValid()},Vi.VERBOSE.get=function(){return!1},Vi.MAX_ENV_DIFF_FRAC.get=function(){return.012},Object.defineProperties(Bi,Vi);var Ui=function(){this._pts=null,this._data=null;var t=arguments[0],e=arguments[1];this._pts=t,this._data=e};Ui.prototype.getCoordinates=function(){return this._pts},Ui.prototype.size=function(){return this._pts.length},Ui.prototype.getCoordinate=function(t){return this._pts[t]},Ui.prototype.isClosed=function(){return this._pts[0].equals(this._pts[this._pts.length-1])},Ui.prototype.getSegmentOctant=function(t){return t===this._pts.length-1?-1:pn.octant(this.getCoordinate(t),this.getCoordinate(t+1))},Ui.prototype.setData=function(t){this._data=t},Ui.prototype.getData=function(){return this._data},Ui.prototype.toString=function(){return Z.toLineString(new ue(this._pts))},Ui.prototype.interfaces_=function(){return[hn]},Ui.prototype.getClass=function(){return Ui};var zi=function(){this._findAllIntersections=!1,this._isCheckEndSegmentsOnly=!1,this._li=null,this._interiorIntersection=null,this._intSegments=null,this._intersections=new Nt,this._intersectionCount=0,this._keepIntersections=!0;var t=arguments[0];this._li=t,this._interiorIntersection=null};zi.prototype.getInteriorIntersection=function(){return this._interiorIntersection},zi.prototype.setCheckEndSegmentsOnly=function(t){this._isCheckEndSegmentsOnly=t},zi.prototype.getIntersectionSegments=function(){return this._intSegments},zi.prototype.count=function(){return this._intersectionCount},zi.prototype.getIntersections=function(){return this._intersections},zi.prototype.setFindAllIntersections=function(t){this._findAllIntersections=t},zi.prototype.setKeepIntersections=function(t){this._keepIntersections=t},zi.prototype.processIntersections=function(t,e,n,i){if(!this._findAllIntersections&&this.hasIntersection())return null;if(t===n&&e===i)return null;if(this._isCheckEndSegmentsOnly){if(!(this.isEndSegment(t,e)||this.isEndSegment(n,i)))return null}var r=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[i],a=n.getCoordinates()[i+1];this._li.computeIntersection(r,o,s,a),this._li.hasIntersection()&&this._li.isInteriorIntersection()&&(this._intSegments=new Array(4).fill(null),this._intSegments[0]=r,this._intSegments[1]=o,this._intSegments[2]=s,this._intSegments[3]=a,this._interiorIntersection=this._li.getIntersection(0),this._keepIntersections&&this._intersections.add(this._interiorIntersection),this._intersectionCount++)},zi.prototype.isEndSegment=function(t,e){return 0===e||e>=t.size()-2},zi.prototype.hasIntersection=function(){return null!==this._interiorIntersection},zi.prototype.isDone=function(){return!this._findAllIntersections&&null!==this._interiorIntersection},zi.prototype.interfaces_=function(){return[Wn]},zi.prototype.getClass=function(){return zi},zi.createAllIntersectionsFinder=function(t){var e=new zi(t);return e.setFindAllIntersections(!0),e},zi.createAnyIntersectionFinder=function(t){return new zi(t)},zi.createIntersectionCounter=function(t){var e=new zi(t);return e.setFindAllIntersections(!0),e.setKeepIntersections(!1),e};var Xi=function(){this._li=new rt,this._segStrings=null,this._findAllIntersections=!1,this._segInt=null,this._isValid=!0;var t=arguments[0];this._segStrings=t};Xi.prototype.execute=function(){if(null!==this._segInt)return null;this.checkInteriorIntersections()},Xi.prototype.getIntersections=function(){return this._segInt.getIntersections()},Xi.prototype.isValid=function(){return this.execute(),this._isValid},Xi.prototype.setFindAllIntersections=function(t){this._findAllIntersections=t},Xi.prototype.checkInteriorIntersections=function(){this._isValid=!0,this._segInt=new zi(this._li),this._segInt.setFindAllIntersections(this._findAllIntersections);var t=new xn;if(t.setSegmentIntersector(this._segInt),t.computeNodes(this._segStrings),this._segInt.hasIntersection())return this._isValid=!1,null},Xi.prototype.checkValid=function(){if(this.execute(),!this._isValid)throw new we(this.getErrorMessage(),this._segInt.getInteriorIntersection())},Xi.prototype.getErrorMessage=function(){if(this._isValid)return\"no intersections found\";var t=this._segInt.getIntersectionSegments();return\"found non-noded intersection between \"+Z.toLineString(t[0],t[1])+\" and \"+Z.toLineString(t[2],t[3])},Xi.prototype.interfaces_=function(){return[]},Xi.prototype.getClass=function(){return Xi},Xi.computeIntersections=function(t){var e=new Xi(t);return e.setFindAllIntersections(!0),e.isValid(),e.getIntersections()};var Yi=function t(){this._nv=null;var e=arguments[0];this._nv=new Xi(t.toSegmentStrings(e))};Yi.prototype.checkValid=function(){this._nv.checkValid()},Yi.prototype.interfaces_=function(){return[]},Yi.prototype.getClass=function(){return Yi},Yi.toSegmentStrings=function(t){for(var e=new Nt,n=t.iterator();n.hasNext();){var i=n.next();e.add(new Ui(i.getCoordinates(),i))}return e},Yi.checkValid=function(t){new Yi(t).checkValid()};var ki=function(t){this._mapOp=t};ki.prototype.map=function(t){for(var e=new Nt,n=0;n0&&i<4&&!this._preserveType?this._factory.createLineString(n):this._factory.createLinearRing(n)},Wi.prototype.interfaces_=function(){return[]},Wi.prototype.getClass=function(){return Wi};var Ki=function t(){if(this._snapTolerance=0,this._srcPts=null,this._seg=new dn,this._allowSnappingToSourceVertices=!1,this._isClosed=!1,arguments[0]instanceof Kt&&\"number\"==typeof arguments[1]){var e=arguments[0],n=arguments[1];t.call(this,e.getCoordinates(),n)}else if(arguments[0]instanceof Array&&\"number\"==typeof arguments[1]){var i=arguments[0],r=arguments[1];this._srcPts=i,this._isClosed=t.isClosed(i),this._snapTolerance=r}};Ki.prototype.snapVertices=function(t,e){for(var n=this._isClosed?t.size()-1:t.size(),i=0;i=0&&t.add(o+1,new C(r),!1)}},Ki.prototype.findSegmentIndexToSnap=function(t,e){for(var n=v.MAX_VALUE,i=-1,r=0;re&&(e=i)}return e}if(2===arguments.length){var r=arguments[0],o=arguments[1];return Math.min(Ji.computeOverlaySnapTolerance(r),Ji.computeOverlaySnapTolerance(o))}},Ji.computeSizeBasedSnapTolerance=function(t){var e=t.getEnvelopeInternal();return Math.min(e.getHeight(),e.getWidth())*Ji.SNAP_PRECISION_FACTOR},Ji.snapToSelf=function(t,e,n){return new Ji(t).snapToSelf(e,n)},Qi.SNAP_PRECISION_FACTOR.get=function(){return 1e-9},Object.defineProperties(Ji,Qi);var Zi=function(t){function e(e,n,i){t.call(this),this._snapTolerance=e||null,this._snapPts=n||null,this._isSelfSnap=void 0!==i&&i}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.snapLine=function(t,e){var n=new Ki(t,this._snapTolerance);return n.setAllowSnappingToSourceVertices(this._isSelfSnap),n.snapTo(e)},e.prototype.transformCoordinates=function(t,e){var n=t.toCoordinateArray(),i=this.snapLine(n,this._snapPts);return this._factory.getCoordinateSequenceFactory().create(i)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Wi),$i=function(){this._isFirst=!0,this._commonMantissaBitsCount=53,this._commonBits=0,this._commonSignExp=null};$i.prototype.getCommon=function(){return v.longBitsToDouble(this._commonBits)},$i.prototype.add=function(t){var e=v.doubleToLongBits(t);if(this._isFirst)return this._commonBits=e,this._commonSignExp=$i.signExpBits(this._commonBits),this._isFirst=!1,null;if($i.signExpBits(e)!==this._commonSignExp)return this._commonBits=0,null;this._commonMantissaBitsCount=$i.numCommonMostSigMantissaBits(this._commonBits,e),this._commonBits=$i.zeroLowerBits(this._commonBits,64-(12+this._commonMantissaBitsCount))},$i.prototype.toString=function(){if(1===arguments.length){var t=arguments[0],e=v.longBitsToDouble(t),n=\"0000000000000000000000000000000000000000000000000000000000000000\"+v.toBinaryString(t),i=n.substring(n.length-64);return i.substring(0,1)+\" \"+i.substring(1,12)+\"(exp) \"+i.substring(12)+\" [ \"+e+\" ]\"}},$i.prototype.interfaces_=function(){return[]},$i.prototype.getClass=function(){return $i},$i.getBit=function(t,e){return 0!=(t&1<>52},$i.zeroLowerBits=function(t,e){return t&~((1<=0;i--){if($i.getBit(t,i)!==$i.getBit(e,i))return n;n++}return 52};var tr=function(){this._commonCoord=null,this._ccFilter=new nr},er={CommonCoordinateFilter:{configurable:!0},Translater:{configurable:!0}};tr.prototype.addCommonBits=function(t){var e=new ir(this._commonCoord);t.apply(e),t.geometryChanged()},tr.prototype.removeCommonBits=function(t){if(0===this._commonCoord.x&&0===this._commonCoord.y)return t;var e=new C(this._commonCoord);e.x=-e.x,e.y=-e.y;var n=new ir(e);return t.apply(n),t.geometryChanged(),t},tr.prototype.getCommonCoordinate=function(){return this._commonCoord},tr.prototype.add=function(t){t.apply(this._ccFilter),this._commonCoord=this._ccFilter.getCommonCoordinate()},tr.prototype.interfaces_=function(){return[]},tr.prototype.getClass=function(){return tr},er.CommonCoordinateFilter.get=function(){return nr},er.Translater.get=function(){return ir},Object.defineProperties(tr,er);var nr=function(){this._commonBitsX=new $i,this._commonBitsY=new $i};nr.prototype.filter=function(t){this._commonBitsX.add(t.x),this._commonBitsY.add(t.y)},nr.prototype.getCommonCoordinate=function(){return new C(this._commonBitsX.getCommon(),this._commonBitsY.getCommon())},nr.prototype.interfaces_=function(){return[ft]},nr.prototype.getClass=function(){return nr};var ir=function(){this.trans=null;var t=arguments[0];this.trans=t};ir.prototype.filter=function(t,e){var n=t.getOrdinate(e,0)+this.trans.x,i=t.getOrdinate(e,1)+this.trans.y;t.setOrdinate(e,0,n),t.setOrdinate(e,1,i)},ir.prototype.isDone=function(){return!1},ir.prototype.isGeometryChanged=function(){return!0},ir.prototype.interfaces_=function(){return[Ut]},ir.prototype.getClass=function(){return ir};var rr=function(t,e){this._geom=new Array(2).fill(null),this._snapTolerance=null,this._cbr=null,this._geom[0]=t,this._geom[1]=e,this.computeSnapTolerance()};rr.prototype.selfSnap=function(t){return new Ji(t).snapTo(t,this._snapTolerance)},rr.prototype.removeCommonBits=function(t){this._cbr=new tr,this._cbr.add(t[0]),this._cbr.add(t[1]);var e=new Array(2).fill(null);return e[0]=this._cbr.removeCommonBits(t[0].copy()),e[1]=this._cbr.removeCommonBits(t[1].copy()),e},rr.prototype.prepareResult=function(t){return this._cbr.addCommonBits(t),t},rr.prototype.getResultGeometry=function(t){var e=this.snap(this._geom),n=Lr.overlayOp(e[0],e[1],t);return this.prepareResult(n)},rr.prototype.checkValid=function(t){t.isValid()||Y.out.println(\"Snapped geometry is invalid\")},rr.prototype.computeSnapTolerance=function(){this._snapTolerance=Ji.computeOverlaySnapTolerance(this._geom[0],this._geom[1])},rr.prototype.snap=function(t){var e=this.removeCommonBits(t);return Ji.snap(e[0],e[1],this._snapTolerance)},rr.prototype.interfaces_=function(){return[]},rr.prototype.getClass=function(){return rr},rr.overlayOp=function(t,e,n){return new rr(t,e).getResultGeometry(n)},rr.union=function(t,e){return rr.overlayOp(t,e,Lr.UNION)},rr.intersection=function(t,e){return rr.overlayOp(t,e,Lr.INTERSECTION)},rr.symDifference=function(t,e){return rr.overlayOp(t,e,Lr.SYMDIFFERENCE)},rr.difference=function(t,e){return rr.overlayOp(t,e,Lr.DIFFERENCE)};var or=function(t,e){this._geom=new Array(2).fill(null),this._geom[0]=t,this._geom[1]=e};or.prototype.getResultGeometry=function(t){var e=null,n=!1,i=null;try{e=Lr.overlayOp(this._geom[0],this._geom[1],t);n=!0}catch(t){if(!(t instanceof $))throw t;i=t}if(!n)try{e=rr.overlayOp(this._geom[0],this._geom[1],t)}catch(t){throw t instanceof $?i:t}return e},or.prototype.interfaces_=function(){return[]},or.prototype.getClass=function(){return or},or.overlayOp=function(t,e,n){return new or(t,e).getResultGeometry(n)},or.union=function(t,e){return or.overlayOp(t,e,Lr.UNION)},or.intersection=function(t,e){return or.overlayOp(t,e,Lr.INTERSECTION)},or.symDifference=function(t,e){return or.overlayOp(t,e,Lr.SYMDIFFERENCE)},or.difference=function(t,e){return or.overlayOp(t,e,Lr.DIFFERENCE)};var sr=function(){this.mce=null,this.chainIndex=null;var t=arguments[0],e=arguments[1];this.mce=t,this.chainIndex=e};sr.prototype.computeIntersections=function(t,e){this.mce.computeIntersectsForChain(this.chainIndex,t.mce,t.chainIndex,e)},sr.prototype.interfaces_=function(){return[]},sr.prototype.getClass=function(){return sr};var ar=function t(){if(this._label=null,this._xValue=null,this._eventType=null,this._insertEvent=null,this._deleteEventIndex=null,this._obj=null,2===arguments.length){var e=arguments[0],n=arguments[1];this._eventType=t.DELETE,this._xValue=e,this._insertEvent=n}else if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2];this._eventType=t.INSERT,this._label=i,this._xValue=r,this._obj=o}},ur={INSERT:{configurable:!0},DELETE:{configurable:!0}};ar.prototype.isDelete=function(){return this._eventType===ar.DELETE},ar.prototype.setDeleteEventIndex=function(t){this._deleteEventIndex=t},ar.prototype.getObject=function(){return this._obj},ar.prototype.compareTo=function(t){var e=t;return this._xValuee._xValue?1:this._eventTypee._eventType?1:0},ar.prototype.getInsertEvent=function(){return this._insertEvent},ar.prototype.isInsert=function(){return this._eventType===ar.INSERT},ar.prototype.isSameLabel=function(t){return null!==this._label&&this._label===t._label},ar.prototype.getDeleteEventIndex=function(){return this._deleteEventIndex},ar.prototype.interfaces_=function(){return[E]},ar.prototype.getClass=function(){return ar},ur.INSERT.get=function(){return 1},ur.DELETE.get=function(){return 2},Object.defineProperties(ar,ur);var lr=function(){};lr.prototype.interfaces_=function(){return[]},lr.prototype.getClass=function(){return lr};var cr=function(){this._hasIntersection=!1,this._hasProper=!1,this._hasProperInterior=!1,this._properIntersectionPoint=null,this._li=null,this._includeProper=null,this._recordIsolated=null,this._isSelfIntersection=null,this._numIntersections=0,this.numTests=0,this._bdyNodes=null,this._isDone=!1,this._isDoneWhenProperInt=!1;var t=arguments[0],e=arguments[1],n=arguments[2];this._li=t,this._includeProper=e,this._recordIsolated=n};cr.prototype.isTrivialIntersection=function(t,e,n,i){if(t===n&&1===this._li.getIntersectionNum()){if(cr.isAdjacentSegments(e,i))return!0;if(t.isClosed()){var r=t.getNumPoints()-1;if(0===e&&i===r||0===i&&e===r)return!0}}return!1},cr.prototype.getProperIntersectionPoint=function(){return this._properIntersectionPoint},cr.prototype.setIsDoneIfProperInt=function(t){this._isDoneWhenProperInt=t},cr.prototype.hasProperInteriorIntersection=function(){return this._hasProperInterior},cr.prototype.isBoundaryPointInternal=function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next().getCoordinate();if(t.isIntersection(i))return!0}return!1},cr.prototype.hasProperIntersection=function(){return this._hasProper},cr.prototype.hasIntersection=function(){return this._hasIntersection},cr.prototype.isDone=function(){return this._isDone},cr.prototype.isBoundaryPoint=function(t,e){return null!==e&&(!!this.isBoundaryPointInternal(t,e[0])||!!this.isBoundaryPointInternal(t,e[1]))},cr.prototype.setBoundaryNodes=function(t,e){this._bdyNodes=new Array(2).fill(null),this._bdyNodes[0]=t,this._bdyNodes[1]=e},cr.prototype.addIntersections=function(t,e,n,i){if(t===n&&e===i)return null;this.numTests++;var r=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[i],a=n.getCoordinates()[i+1];this._li.computeIntersection(r,o,s,a),this._li.hasIntersection()&&(this._recordIsolated&&(t.setIsolated(!1),n.setIsolated(!1)),this._numIntersections++,this.isTrivialIntersection(t,e,n,i)||(this._hasIntersection=!0,!this._includeProper&&this._li.isProper()||(t.addIntersections(this._li,e,0),n.addIntersections(this._li,i,1)),this._li.isProper()&&(this._properIntersectionPoint=this._li.getIntersection(0).copy(),this._hasProper=!0,this._isDoneWhenProperInt&&(this._isDone=!0),this.isBoundaryPoint(this._li,this._bdyNodes)||(this._hasProperInterior=!0))))},cr.prototype.interfaces_=function(){return[]},cr.prototype.getClass=function(){return cr},cr.isAdjacentSegments=function(t,e){return 1===Math.abs(t-e)};var pr=function(t){function e(){t.call(this),this.events=new Nt,this.nOverlaps=null}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.prepareEvents=function(){$e.sort(this.events);for(var t=0;te||this._maxo?1:0},gr.prototype.interfaces_=function(){return[N]},gr.prototype.getClass=function(){return gr};var dr=function(t){function e(){t.call(this),this._item=null;var e=arguments[0],n=arguments[1],i=arguments[2];this._min=e,this._max=n,this._item=i}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.query=function(t,e,n){if(!this.intersects(t,e))return null;n.visitItem(this._item)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(hr),yr=function(t){function e(){t.call(this),this._node1=null,this._node2=null;var e=arguments[0],n=arguments[1];this._node1=e,this._node2=n,this.buildExtent(this._node1,this._node2)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.buildExtent=function(t,e){this._min=Math.min(t._min,e._min),this._max=Math.max(t._max,e._max)},e.prototype.query=function(t,e,n){if(!this.intersects(t,e))return null;null!==this._node1&&this._node1.query(t,e,n),null!==this._node2&&this._node2.query(t,e,n)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(hr),_r=function(){this._leaves=new Nt,this._root=null,this._level=0};_r.prototype.buildTree=function(){$e.sort(this._leaves,new hr.NodeComparator);for(var t=this._leaves,e=null,n=new Nt;;){if(this.buildLevel(t,n),1===n.size())return n.get(0);e=t,t=n,n=e}},_r.prototype.insert=function(t,e,n){if(null!==this._root)throw new Error(\"Index cannot be added to once it has been queried\");this._leaves.add(new dr(t,e,n))},_r.prototype.query=function(t,e,n){this.init(),this._root.query(t,e,n)},_r.prototype.buildRoot=function(){if(null!==this._root)return null;this._root=this.buildTree()},_r.prototype.printNode=function(t){Y.out.println(Z.toLineString(new C(t._min,this._level),new C(t._max,this._level)))},_r.prototype.init=function(){if(null!==this._root)return null;this.buildRoot()},_r.prototype.buildLevel=function(t,e){this._level++,e.clear();for(var n=0;n=2,\"found LineString with single point\"),this.insertBoundaryPoint(this._argIndex,e[0]),this.insertBoundaryPoint(this._argIndex,e[e.length-1])},e.prototype.getInvalidPoint=function(){return this._invalidPoint},e.prototype.getBoundaryPoints=function(){for(var t=this.getBoundaryNodes(),e=new Array(t.size()).fill(null),n=0,i=t.iterator();i.hasNext();){var r=i.next();e[n++]=r.getCoordinate().copy()}return e},e.prototype.getBoundaryNodes=function(){return null===this._boundaryNodes&&(this._boundaryNodes=this._nodes.getBoundaryNodes(this._argIndex)),this._boundaryNodes},e.prototype.addSelfIntersectionNode=function(t,e,n){if(this.isBoundaryNode(t,e))return null;n===w.BOUNDARY&&this._useBoundaryDeterminationRule?this.insertBoundaryPoint(t,e):this.insertPoint(t,e,n)},e.prototype.addPolygonRing=function(t,e,n){if(t.isEmpty())return null;var i=Lt.removeRepeatedPoints(t.getCoordinates());if(i.length<4)return this._hasTooFewPoints=!0,this._invalidPoint=i[0],null;var r=e,o=n;at.isCCW(i)&&(r=n,o=e);var s=new ni(i,new Pe(this._argIndex,w.BOUNDARY,r,o));this._lineEdgeMap.put(t,s),this.insertEdge(s),this.insertPoint(this._argIndex,i[0],w.BOUNDARY)},e.prototype.insertPoint=function(t,e,n){var i=this._nodes.addNode(e),r=i.getLabel();null===r?i._label=new Pe(t,n):r.setLocation(t,n)},e.prototype.createEdgeSetIntersector=function(){return new pr},e.prototype.addSelfIntersectionNodes=function(t){for(var e=this._edges.iterator();e.hasNext();)for(var n=e.next(),i=n.getLabel().getLocation(t),r=n.eiList.iterator();r.hasNext();){var o=r.next();this.addSelfIntersectionNode(t,o.coord,i)}},e.prototype.add=function(){if(1!==arguments.length)return t.prototype.add.apply(this,arguments);var e=arguments[0];if(e.isEmpty())return null;if(e instanceof ne&&(this._useBoundaryDeterminationRule=!1),e instanceof $t)this.addPolygon(e);else if(e instanceof Kt)this.addLineString(e);else if(e instanceof Qt)this.addPoint(e);else if(e instanceof te)this.addCollection(e);else if(e instanceof Xt)this.addCollection(e);else if(e instanceof ne)this.addCollection(e);else{if(!(e instanceof zt))throw new Error(e.getClass().getName());this.addCollection(e)}},e.prototype.addCollection=function(t){for(var e=0;e50?(null===this._areaPtLocator&&(this._areaPtLocator=new vr(this._parentGeom)),this._areaPtLocator.locate(t)):this._ptLocator.locate(t,this._parentGeom)},e.prototype.findEdge=function(){if(1===arguments.length){var e=arguments[0];return this._lineEdgeMap.get(e)}return t.prototype.findEdge.apply(this,arguments)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.determineBoundary=function(t,e){return t.isInBoundary(e)?w.BOUNDARY:w.INTERIOR},e}(Ye),Cr=function(){if(this._li=new rt,this._resultPrecisionModel=null,this._arg=null,1===arguments.length){var t=arguments[0];this.setComputationPrecision(t.getPrecisionModel()),this._arg=new Array(1).fill(null),this._arg[0]=new Nr(0,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],i=gt.OGC_SFS_BOUNDARY_RULE;e.getPrecisionModel().compareTo(n.getPrecisionModel())>=0?this.setComputationPrecision(e.getPrecisionModel()):this.setComputationPrecision(n.getPrecisionModel()),this._arg=new Array(2).fill(null),this._arg[0]=new Nr(0,e,i),this._arg[1]=new Nr(1,n,i)}else if(3===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2];r.getPrecisionModel().compareTo(o.getPrecisionModel())>=0?this.setComputationPrecision(r.getPrecisionModel()):this.setComputationPrecision(o.getPrecisionModel()),this._arg=new Array(2).fill(null),this._arg[0]=new Nr(0,r,s),this._arg[1]=new Nr(1,o,s)}};Cr.prototype.getArgGeometry=function(t){return this._arg[t].getGeometry()},Cr.prototype.setComputationPrecision=function(t){this._resultPrecisionModel=t,this._li.setPrecisionModel(this._resultPrecisionModel)},Cr.prototype.interfaces_=function(){return[]},Cr.prototype.getClass=function(){return Cr};var Sr=function(){};Sr.prototype.interfaces_=function(){return[]},Sr.prototype.getClass=function(){return Sr},Sr.map=function(){if(arguments[0]instanceof ct&&T(arguments[1],Sr.MapOp)){for(var t=arguments[0],e=arguments[1],n=new Nt,i=0;i=t.size()?null:t.get(e)},Dr.union=function(t){return new Dr(t).union()},Mr.STRTREE_NODE_CAPACITY.get=function(){return 4},Object.defineProperties(Dr,Mr);var Ar=function(){};Ar.prototype.interfaces_=function(){return[]},Ar.prototype.getClass=function(){return Ar},Ar.union=function(t,e){if(t.isEmpty()||e.isEmpty()){if(t.isEmpty()&&e.isEmpty())return Lr.createEmptyResult(Lr.UNION,t,e,t.getFactory());if(t.isEmpty())return e.copy();if(e.isEmpty())return t.copy()}return t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),or.overlayOp(t,e,Lr.UNION)},t.GeoJSONReader=Ne,t.GeoJSONWriter=Ce,t.OverlayOp=Lr,t.UnionOp=Ar,t.BufferOp=di,Object.defineProperty(t,\"__esModule\",{value:!0})});\n","import { coordEach } from '@turf/meta';\nimport { isNumber, isObject } from '@turf/helpers';\nimport clone from '@turf/clone';\n\n/**\n * Converts a WGS84 GeoJSON object into Mercator (EPSG:900913) projection\n *\n * @name toMercator\n * @param {GeoJSON|Position} geojson WGS84 GeoJSON object\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} true/false\n * @example\n * var pt = turf.point([-71,41]);\n * var converted = turf.toMercator(pt);\n *\n * //addToMap\n * var addToMap = [pt, converted];\n */\nfunction toMercator(geojson, options) {\n return convert(geojson, 'mercator', options);\n}\n\n/**\n * Converts a Mercator (EPSG:900913) GeoJSON object into WGS84 projection\n *\n * @name toWgs84\n * @param {GeoJSON|Position} geojson Mercator GeoJSON object\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} true/false\n * @example\n * var pt = turf.point([-7903683.846322424, 5012341.663847514]);\n * var converted = turf.toWgs84(pt);\n *\n * //addToMap\n * var addToMap = [pt, converted];\n */\nfunction toWgs84(geojson, options) {\n return convert(geojson, 'wgs84', options);\n}\n\n\n/**\n * Converts a GeoJSON coordinates to the defined `projection`\n *\n * @private\n * @param {GeoJSON} geojson GeoJSON Feature or Geometry\n * @param {string} projection defines the projection system to convert the coordinates to\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} true/false\n */\nfunction convert(geojson, projection, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var mutate = options.mutate;\n\n // Validation\n if (!geojson) throw new Error('geojson is required');\n\n // Handle Position\n if (Array.isArray(geojson) && isNumber(geojson[0])) geojson = (projection === 'mercator') ? convertToMercator(geojson) : convertToWgs84(geojson);\n\n // Handle GeoJSON\n else {\n // Handle possible data mutation\n if (mutate !== true) geojson = clone(geojson);\n\n coordEach(geojson, function (coord) {\n var newCoord = (projection === 'mercator') ? convertToMercator(coord) : convertToWgs84(coord);\n coord[0] = newCoord[0];\n coord[1] = newCoord[1];\n });\n }\n return geojson;\n}\n\n/**\n * Convert lon/lat values to 900913 x/y.\n * (from https://github.com/mapbox/sphericalmercator)\n *\n * @private\n * @param {Array} lonLat WGS84 point\n * @returns {Array} Mercator [x, y] point\n */\nfunction convertToMercator(lonLat) {\n var D2R = Math.PI / 180,\n // 900913 properties\n A = 6378137.0,\n MAXEXTENT = 20037508.342789244;\n\n // compensate longitudes passing the 180th meridian\n // from https://github.com/proj4js/proj4js/blob/master/lib/common/adjust_lon.js\n var adjusted = (Math.abs(lonLat[0]) <= 180) ? lonLat[0] : (lonLat[0] - (sign(lonLat[0]) * 360));\n var xy = [\n A * adjusted * D2R,\n A * Math.log(Math.tan((Math.PI * 0.25) + (0.5 * lonLat[1] * D2R)))\n ];\n\n // if xy value is beyond maxextent (e.g. poles), return maxextent\n if (xy[0] > MAXEXTENT) xy[0] = MAXEXTENT;\n if (xy[0] < -MAXEXTENT) xy[0] = -MAXEXTENT;\n if (xy[1] > MAXEXTENT) xy[1] = MAXEXTENT;\n if (xy[1] < -MAXEXTENT) xy[1] = -MAXEXTENT;\n\n return xy;\n}\n\n/**\n * Convert 900913 x/y values to lon/lat.\n * (from https://github.com/mapbox/sphericalmercator)\n *\n * @private\n * @param {Array} xy Mercator [x, y] point\n * @returns {Array} WGS84 [lon, lat] point\n */\nfunction convertToWgs84(xy) {\n // 900913 properties.\n var R2D = 180 / Math.PI;\n var A = 6378137.0;\n\n return [\n (xy[0] * R2D / A),\n ((Math.PI * 0.5) - 2.0 * Math.atan(Math.exp(-xy[1] / A))) * R2D\n ];\n}\n\n/**\n * Returns the sign of the input, or zero\n *\n * @private\n * @param {number} x input\n * @returns {number} -1|0|1 output\n */\nfunction sign(x) {\n return (x < 0) ? -1 : (x > 0) ? 1 : 0;\n}\n\nexport { toMercator, toWgs84 };\n","/**\n * Returns a cloned copy of the passed GeoJSON Object, including possible 'Foreign Members'.\n * ~3-5x faster than the common JSON.parse + JSON.stringify combo method.\n *\n * @name clone\n * @param {GeoJSON} geojson GeoJSON Object\n * @returns {GeoJSON} cloned GeoJSON Object\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]], {color: 'red'});\n *\n * var lineCloned = turf.clone(line);\n */\nfunction clone(geojson) {\n if (!geojson) throw new Error('geojson is required');\n\n switch (geojson.type) {\n case 'Feature':\n return cloneFeature(geojson);\n case 'FeatureCollection':\n return cloneFeatureCollection(geojson);\n case 'Point':\n case 'LineString':\n case 'Polygon':\n case 'MultiPoint':\n case 'MultiLineString':\n case 'MultiPolygon':\n case 'GeometryCollection':\n return cloneGeometry(geojson);\n default:\n throw new Error('unknown GeoJSON type');\n }\n}\n\n/**\n * Clone Feature\n *\n * @private\n * @param {Feature} geojson GeoJSON Feature\n * @returns {Feature} cloned Feature\n */\nfunction cloneFeature(geojson) {\n var cloned = {type: 'Feature'};\n // Preserve Foreign Members\n Object.keys(geojson).forEach(function (key) {\n switch (key) {\n case 'type':\n case 'properties':\n case 'geometry':\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n // Add properties & geometry last\n cloned.properties = cloneProperties(geojson.properties);\n cloned.geometry = cloneGeometry(geojson.geometry);\n return cloned;\n}\n\n/**\n * Clone Properties\n *\n * @private\n * @param {Object} properties GeoJSON Properties\n * @returns {Object} cloned Properties\n */\nfunction cloneProperties(properties) {\n var cloned = {};\n if (!properties) return cloned;\n Object.keys(properties).forEach(function (key) {\n var value = properties[key];\n if (typeof value === 'object') {\n if (value === null) {\n // handle null\n cloned[key] = null;\n } else if (value.length) {\n // handle Array\n cloned[key] = value.map(function (item) {\n return item;\n });\n } else {\n // handle generic Object\n cloned[key] = cloneProperties(value);\n }\n } else cloned[key] = value;\n });\n return cloned;\n}\n\n/**\n * Clone Feature Collection\n *\n * @private\n * @param {FeatureCollection} geojson GeoJSON Feature Collection\n * @returns {FeatureCollection} cloned Feature Collection\n */\nfunction cloneFeatureCollection(geojson) {\n var cloned = {type: 'FeatureCollection'};\n\n // Preserve Foreign Members\n Object.keys(geojson).forEach(function (key) {\n switch (key) {\n case 'type':\n case 'features':\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n // Add features\n cloned.features = geojson.features.map(function (feature) {\n return cloneFeature(feature);\n });\n return cloned;\n}\n\n/**\n * Clone Geometry\n *\n * @private\n * @param {Geometry} geometry GeoJSON Geometry\n * @returns {Geometry} cloned Geometry\n */\nfunction cloneGeometry(geometry) {\n var geom = {type: geometry.type};\n if (geometry.bbox) geom.bbox = geometry.bbox;\n\n if (geometry.type === 'GeometryCollection') {\n geom.geometries = geometry.geometries.map(function (geom) {\n return cloneGeometry(geom);\n });\n return geom;\n }\n geom.coordinates = deepSlice(geometry.coordinates);\n return geom;\n}\n\n/**\n * Deep Slice coordinates\n *\n * @private\n * @param {Coordinates} coords Coordinates\n * @returns {Coordinates} all coordinates sliced\n */\nfunction deepSlice(coords) {\n if (typeof coords[0] !== 'object') { return coords.slice(); }\n return coords.map(function (coord) {\n return deepSlice(coord);\n });\n}\n\nexport default clone;\n","export {default as geoArea} from \"./src/area\";\nexport {default as geoBounds} from \"./src/bounds\";\nexport {default as geoCentroid} from \"./src/centroid\";\nexport {default as geoCircle} from \"./src/circle\";\nexport {default as geoClipExtent} from \"./src/clip/extent\"; // DEPRECATED! Use d3.geoIdentity().clipExtent(…).\nexport {default as geoContains} from \"./src/contains\";\nexport {default as geoDistance} from \"./src/distance\";\nexport {default as geoGraticule, graticule10 as geoGraticule10} from \"./src/graticule\";\nexport {default as geoInterpolate} from \"./src/interpolate\";\nexport {default as geoLength} from \"./src/length\";\nexport {default as geoPath} from \"./src/path/index\";\nexport {default as geoAlbers} from \"./src/projection/albers\";\nexport {default as geoAlbersUsa} from \"./src/projection/albersUsa\";\nexport {default as geoAzimuthalEqualArea, azimuthalEqualAreaRaw as geoAzimuthalEqualAreaRaw} from \"./src/projection/azimuthalEqualArea\";\nexport {default as geoAzimuthalEquidistant, azimuthalEquidistantRaw as geoAzimuthalEquidistantRaw} from \"./src/projection/azimuthalEquidistant\";\nexport {default as geoConicConformal, conicConformalRaw as geoConicConformalRaw} from \"./src/projection/conicConformal\";\nexport {default as geoConicEqualArea, conicEqualAreaRaw as geoConicEqualAreaRaw} from \"./src/projection/conicEqualArea\";\nexport {default as geoConicEquidistant, conicEquidistantRaw as geoConicEquidistantRaw} from \"./src/projection/conicEquidistant\";\nexport {default as geoEquirectangular, equirectangularRaw as geoEquirectangularRaw} from \"./src/projection/equirectangular\";\nexport {default as geoGnomonic, gnomonicRaw as geoGnomonicRaw} from \"./src/projection/gnomonic\";\nexport {default as geoIdentity} from \"./src/projection/identity\";\nexport {default as geoProjection, projectionMutator as geoProjectionMutator} from \"./src/projection/index\";\nexport {default as geoMercator, mercatorRaw as geoMercatorRaw} from \"./src/projection/mercator\";\nexport {default as geoNaturalEarth1, naturalEarth1Raw as geoNaturalEarth1Raw} from \"./src/projection/naturalEarth1\";\nexport {default as geoOrthographic, orthographicRaw as geoOrthographicRaw} from \"./src/projection/orthographic\";\nexport {default as geoStereographic, stereographicRaw as geoStereographicRaw} from \"./src/projection/stereographic\";\nexport {default as geoTransverseMercator, transverseMercatorRaw as geoTransverseMercatorRaw} from \"./src/projection/transverseMercator\";\nexport {default as geoRotation} from \"./src/rotation\";\nexport {default as geoStream} from \"./src/stream\";\nexport {default as geoTransform} from \"./src/transform\";\n","import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import compose from \"./compose\";\nimport {asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\n\nfunction rotationIdentity(lambda, phi) {\n return [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import {abs, epsilon} from \"../math\";\nimport clipBuffer from \"./buffer\";\nimport clipLine from \"./line\";\nimport clipPolygon from \"./polygon\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport function clipExtent(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipPolygon(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipExtent(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import noop from \"../noop\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y) {\n line.push([x, y]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import pointEqual from \"../pointEqual\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n // If the first and last points of a segment are coincident, then treat as a\n // closed ring. TODO if all rings are closed, then the winding order of the\n // exterior ring should be checked.\n if (pointEqual(p0, p1)) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import {abs, epsilon} from \"./math\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","export {default as bisect, bisectRight, bisectLeft} from \"./bisect\";\nexport {default as ascending} from \"./ascending\";\nexport {default as bisector} from \"./bisector\";\nexport {default as cross} from \"./cross\";\nexport {default as descending} from \"./descending\";\nexport {default as deviation} from \"./deviation\";\nexport {default as extent} from \"./extent\";\nexport {default as histogram} from \"./histogram\";\nexport {default as thresholdFreedmanDiaconis} from \"./threshold/freedmanDiaconis\";\nexport {default as thresholdScott} from \"./threshold/scott\";\nexport {default as thresholdSturges} from \"./threshold/sturges\";\nexport {default as max} from \"./max\";\nexport {default as mean} from \"./mean\";\nexport {default as median} from \"./median\";\nexport {default as merge} from \"./merge\";\nexport {default as min} from \"./min\";\nexport {default as pairs} from \"./pairs\";\nexport {default as permute} from \"./permute\";\nexport {default as quantile} from \"./quantile\";\nexport {default as range} from \"./range\";\nexport {default as scan} from \"./scan\";\nexport {default as shuffle} from \"./shuffle\";\nexport {default as sum} from \"./sum\";\nexport {default as ticks, tickIncrement, tickStep} from \"./ticks\";\nexport {default as transpose} from \"./transpose\";\nexport {default as variance} from \"./variance\";\nexport {default as zip} from \"./zip\";\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","import {default as polygonContains} from \"./polygonContains\";\nimport {default as distance} from \"./distance\";\nimport {epsilon, radians} from \"./math\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ab = distance(coordinates[0], coordinates[1]),\n ao = distance(coordinates[0], point),\n ob = distance(point, coordinates[1]);\n return ao + ob <= ab + epsilon;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {asin, atan2, cos, epsilon, pi, quarterPi, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nexport default function(polygon, point) {\n var lambda = point[0],\n phi = point[1],\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = point0[0],\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = point1[0],\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import length from \"./length\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","import identity from \"../identity\";\nimport stream from \"../stream\";\nimport pathArea from \"./area\";\nimport pathBounds from \"./bounds\";\nimport pathCentroid from \"./centroid\";\nimport PathContext from \"./context\";\nimport pathMeasure from \"./measure\";\nimport PathString from \"./string\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","export default function(x) {\n return x;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math\";\nimport noop from \"../noop\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import conicEqualArea from \"./conicEqualArea\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {abs, asin, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y;\n return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {degrees, pi, radians} from \"../math\";\nimport {projectionMutator} from \"./index\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import clipAntimeridian from \"../clip/antimeridian\";\nimport clipCircle from \"../clip/circle\";\nimport {clipExtent} from \"../clip/extent\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {degrees, radians, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize} from \"./fit\";\nimport resample from \"./resample\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n dx, dy, lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, projectRotate, // rotate\n theta = null, preclip = clipAntimeridian, // clip angle\n x0 = null, y0, x1, y1, postclip = identity, // clip extent\n delta2 = 0.5, projectResample = resample(projectTransform, delta2), // precision\n cache,\n cacheStream;\n\n function projection(point) {\n point = projectRotate(point[0] * radians, point[1] * radians);\n return [point[0] * k + dx, dy - point[1] * k];\n }\n\n function invert(point) {\n point = projectRotate.invert((point[0] - dx) / k, (dy - point[1]) / k);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n function projectTransform(x, y) {\n return x = project(x, y), [x[0] * k + dx, dy - x[1] * k];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(preclip(rotate, projectResample(postclip(cacheStream = stream))));\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians, 6 * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n function recenter() {\n projectRotate = compose(rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma), project);\n var center = project(lambda, phi);\n dx = x - center[0] * k;\n dy = y + center[1] * k;\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import clip from \"./index\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import clipBuffer from \"./buffer\";\nimport clipPolygon from \"./polygon\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(rotate, sink) {\n var line = clipLine(sink),\n rotatedStart = rotate.invert(start[0], start[1]),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, rotatedStart);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipPolygon(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n var point = rotate(lambda, phi);\n if (pointVisible(lambda = point[0], phi = point[1])) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n var point = rotate(lambda, phi);\n line.point(point[0], point[1]);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n var point = rotate(lambda, phi);\n ringSink.point(point[0], point[1]);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian\";\nimport {circleStream} from \"../circle\";\nimport {abs, cos, epsilon, pi, sqrt} from \"../math\";\nimport pointEqual from \"../pointEqual\";\nimport clip from \"./index\";\n\nexport default function(radius, delta) {\n var cr = cos(radius),\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n // Handle degeneracies.\n // TODO ignore if not clipping polygons.\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n point1[0] += epsilon;\n point1[1] += epsilon;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1]);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream\";\nimport boundsStream from \"../path/bounds\";\n\nexport function fitExtent(projection, extent, object) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n clip = projection.clipExtent && projection.clipExtent();\n\n projection\n .scale(150)\n .translate([0, 0]);\n\n if (clip != null) projection.clipExtent(null);\n\n geoStream(object, projection.stream(boundsStream));\n\n var b = boundsStream.result(),\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n\n if (clip != null) projection.clipExtent(clip);\n\n return projection\n .scale(k * 150)\n .translate([x, y]);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n","import {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import {asin, cos, sin} from \"../math\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import {epsilon} from \"../math\";\nimport albers from \"./albers\";\nimport conicEqualArea from \"./conicEqualArea\";\nimport {fitExtent, fitSize} from \"./fit\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {acos, sin} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pow, sign, sin, sqrt, tan} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {mercatorRaw} from \"./mercator\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);\n return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math\";\nimport rotation from \"../rotation\";\nimport projection from \"./index\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {equirectangularRaw} from \"./equirectangular\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y;\n return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import {clipExtent} from \"../clip/extent\";\nimport identity from \"../identity\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize} from \"./fit\";\n\nfunction scaleTranslate(kx, ky, tx, ty) {\n return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({\n point: function(x, y) {\n this.stream.point(x * kx + tx, y * ky + ty);\n }\n });\n}\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity, // scale, translate and reflect\n x0 = null, y0, x1, y1, clip = identity, // clip extent\n cache,\n cacheStream,\n projection;\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return projection = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(clip(cacheStream = stream));\n },\n clipExtent: function(_) {\n return arguments.length ? (clip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n },\n scale: function(_) {\n return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;\n },\n translate: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];\n },\n reflectX: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;\n },\n reflectY: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;\n },\n fitExtent: function(extent, object) {\n return fitExtent(projection, extent, object);\n },\n fitSize: function(size, object) {\n return fitSize(projection, size, object);\n }\n };\n}\n","import projection from \"./index\";\nimport {abs, epsilon} from \"../math\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math\";\nimport {mercatorProjection} from \"./mercator\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","import * as martinez from 'martinez-polygon-clipping';\r\nimport area from '@turf/area';\r\nimport { feature, multiPolygon, polygon } from '@turf/helpers';\r\nimport { getGeom } from '@turf/invariant';\r\nimport { flattenEach } from '@turf/meta';\r\n\r\n/**\r\n * Finds the difference between two {@link Polygon|polygons} by clipping the second polygon from the first.\r\n *\r\n * @name difference\r\n * @param {Feature} polygon1 input Polygon feature\r\n * @param {Feature} polygon2 Polygon feature to difference from polygon1\r\n * @returns {Feature|null} a Polygon or MultiPolygon feature showing the area of `polygon1` excluding the area of `polygon2` (if empty returns `null`)\r\n * @example\r\n * var polygon1 = turf.polygon([[\r\n * [128, -26],\r\n * [141, -26],\r\n * [141, -21],\r\n * [128, -21],\r\n * [128, -26]\r\n * ]], {\r\n * \"fill\": \"#F00\",\r\n * \"fill-opacity\": 0.1\r\n * });\r\n * var polygon2 = turf.polygon([[\r\n * [126, -28],\r\n * [140, -28],\r\n * [140, -20],\r\n * [126, -20],\r\n * [126, -28]\r\n * ]], {\r\n * \"fill\": \"#00F\",\r\n * \"fill-opacity\": 0.1\r\n * });\r\n *\r\n * var difference = turf.difference(polygon1, polygon2);\r\n *\r\n * //addToMap\r\n * var addToMap = [polygon1, polygon2, difference];\r\n */\r\nfunction difference(polygon1, polygon2) {\r\n var geom1 = getGeom(polygon1);\r\n var geom2 = getGeom(polygon2);\r\n var properties = polygon1.properties || {};\r\n\r\n // Issue #721 - JSTS/Martinez can't handle empty polygons\r\n geom1 = removeEmptyPolygon(geom1);\r\n geom2 = removeEmptyPolygon(geom2);\r\n if (!geom1) return null;\r\n if (!geom2) return feature(geom1, properties);\r\n\r\n var differenced = martinez.diff(geom1.coordinates, geom2.coordinates);\r\n if (differenced.length === 0) return null;\r\n if (differenced.length === 1) return polygon(differenced[0], properties);\r\n return multiPolygon(differenced, properties);\r\n}\r\n\r\n/**\r\n * Detect Empty Polygon\r\n *\r\n * @private\r\n * @param {Geometry} geom Geometry Object\r\n * @returns {Geometry|null} removed any polygons with no areas\r\n */\r\nfunction removeEmptyPolygon(geom) {\r\n switch (geom.type) {\r\n case 'Polygon':\r\n if (area(geom) > 1) return geom;\r\n return null;\r\n case 'MultiPolygon':\r\n var coordinates = [];\r\n flattenEach(geom, function (feature) {\r\n if (area(feature) > 1) coordinates.push(feature.geometry.coordinates);\r\n });\r\n if (coordinates.length) return {type: 'MultiPolygon', coordinates: coordinates};\r\n }\r\n}\r\n\r\nexport default difference;\r\n","/**\n * martinez v0.4.3\n * Martinez polygon clipping algorithm, does boolean operation on polygons (multipolygons, polygons with holes etc): intersection, union, difference, xor\n *\n * @author Alex Milevski \n * @license MIT\n * @preserve\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.martinez = {})));\n}(this, (function (exports) { 'use strict';\n\n function DEFAULT_COMPARE (a, b) { return a > b ? 1 : a < b ? -1 : 0; }\n\n var SplayTree = function SplayTree(compare, noDuplicates) {\n if ( compare === void 0 ) compare = DEFAULT_COMPARE;\n if ( noDuplicates === void 0 ) noDuplicates = false;\n\n this._compare = compare;\n this._root = null;\n this._size = 0;\n this._noDuplicates = !!noDuplicates;\n };\n\n var prototypeAccessors = { size: { configurable: true } };\n\n\n SplayTree.prototype.rotateLeft = function rotateLeft (x) {\n var y = x.right;\n if (y) {\n x.right = y.left;\n if (y.left) { y.left.parent = x; }\n y.parent = x.parent;\n }\n\n if (!x.parent) { this._root = y; }\n else if (x === x.parent.left) { x.parent.left = y; }\n else { x.parent.right = y; }\n if (y) { y.left = x; }\n x.parent = y;\n };\n\n\n SplayTree.prototype.rotateRight = function rotateRight (x) {\n var y = x.left;\n if (y) {\n x.left = y.right;\n if (y.right) { y.right.parent = x; }\n y.parent = x.parent;\n }\n\n if (!x.parent) { this._root = y; }\n else if(x === x.parent.left) { x.parent.left = y; }\n else { x.parent.right = y; }\n if (y) { y.right = x; }\n x.parent = y;\n };\n\n\n SplayTree.prototype._splay = function _splay (x) {\n var this$1 = this;\n\n while (x.parent) {\n var p = x.parent;\n if (!p.parent) {\n if (p.left === x) { this$1.rotateRight(p); }\n else { this$1.rotateLeft(p); }\n } else if (p.left === x && p.parent.left === p) {\n this$1.rotateRight(p.parent);\n this$1.rotateRight(p);\n } else if (p.right === x && p.parent.right === p) {\n this$1.rotateLeft(p.parent);\n this$1.rotateLeft(p);\n } else if (p.left === x && p.parent.right === p) {\n this$1.rotateRight(p);\n this$1.rotateLeft(p);\n } else {\n this$1.rotateLeft(p);\n this$1.rotateRight(p);\n }\n }\n };\n\n\n SplayTree.prototype.splay = function splay (x) {\n var this$1 = this;\n\n var p, gp, ggp, l, r;\n\n while (x.parent) {\n p = x.parent;\n gp = p.parent;\n\n if (gp && gp.parent) {\n ggp = gp.parent;\n if (ggp.left === gp) { ggp.left= x; }\n else { ggp.right = x; }\n x.parent = ggp;\n } else {\n x.parent = null;\n this$1._root = x;\n }\n\n l = x.left; r = x.right;\n\n if (x === p.left) { // left\n if (gp) {\n if (gp.left === p) {\n /* zig-zig */\n if (p.right) {\n gp.left = p.right;\n gp.left.parent = gp;\n } else { gp.left = null; }\n\n p.right = gp;\n gp.parent = p;\n } else {\n /* zig-zag */\n if (l) {\n gp.right = l;\n l.parent = gp;\n } else { gp.right = null; }\n\n x.left = gp;\n gp.parent = x;\n }\n }\n if (r) {\n p.left = r;\n r.parent = p;\n } else { p.left = null; }\n\n x.right= p;\n p.parent = x;\n } else { // right\n if (gp) {\n if (gp.right === p) {\n /* zig-zig */\n if (p.left) {\n gp.right = p.left;\n gp.right.parent = gp;\n } else { gp.right = null; }\n\n p.left = gp;\n gp.parent = p;\n } else {\n /* zig-zag */\n if (r) {\n gp.left = r;\n r.parent = gp;\n } else { gp.left = null; }\n\n x.right = gp;\n gp.parent = x;\n }\n }\n if (l) {\n p.right = l;\n l.parent = p;\n } else { p.right = null; }\n\n x.left = p;\n p.parent = x;\n }\n }\n };\n\n\n SplayTree.prototype.replace = function replace (u, v) {\n if (!u.parent) { this._root = v; }\n else if (u === u.parent.left) { u.parent.left = v; }\n else { u.parent.right = v; }\n if (v) { v.parent = u.parent; }\n };\n\n\n SplayTree.prototype.minNode = function minNode (u) {\n if ( u === void 0 ) u = this._root;\n\n if (u) { while (u.left) { u = u.left; } }\n return u;\n };\n\n\n SplayTree.prototype.maxNode = function maxNode (u) {\n if ( u === void 0 ) u = this._root;\n\n if (u) { while (u.right) { u = u.right; } }\n return u;\n };\n\n\n SplayTree.prototype.insert = function insert (key, data) {\n var z = this._root;\n var p = null;\n var comp = this._compare;\n var cmp;\n\n if (this._noDuplicates) {\n while (z) {\n p = z;\n cmp = comp(z.key, key);\n if (cmp === 0) { return; }\n else if (comp(z.key, key) < 0) { z = z.right; }\n else { z = z.left; }\n }\n } else {\n while (z) {\n p = z;\n if (comp(z.key, key) < 0) { z = z.right; }\n else { z = z.left; }\n }\n }\n\n z = { key: key, data: data, left: null, right: null, parent: p };\n\n if (!p) { this._root = z; }\n else if (comp(p.key, z.key) < 0) { p.right = z; }\n else { p.left= z; }\n\n this.splay(z);\n this._size++;\n return z;\n };\n\n\n SplayTree.prototype.find = function find (key) {\n var z = this._root;\n var comp = this._compare;\n while (z) {\n var cmp = comp(z.key, key);\n if (cmp < 0) { z = z.right; }\n else if (cmp > 0) { z = z.left; }\n else { return z; }\n }\n return null;\n };\n\n /**\n * Whether the tree contains a node with the given key\n * @param{Key} key\n * @return {boolean} true/false\n */\n SplayTree.prototype.contains = function contains (key) {\n var node = this._root;\n var comparator = this._compare;\n while (node){\n var cmp = comparator(key, node.key);\n if (cmp === 0) { return true; }\n else if (cmp < 0) { node = node.left; }\n else { node = node.right; }\n }\n\n return false;\n };\n\n\n SplayTree.prototype.remove = function remove (key) {\n var z = this.find(key);\n\n if (!z) { return false; }\n\n this.splay(z);\n\n if (!z.left) { this.replace(z, z.right); }\n else if (!z.right) { this.replace(z, z.left); }\n else {\n var y = this.minNode(z.right);\n if (y.parent !== z) {\n this.replace(y, y.right);\n y.right = z.right;\n y.right.parent = y;\n }\n this.replace(z, y);\n y.left = z.left;\n y.left.parent = y;\n }\n\n this._size--;\n return true;\n };\n\n\n SplayTree.prototype.removeNode = function removeNode (z) {\n if (!z) { return false; }\n\n this.splay(z);\n\n if (!z.left) { this.replace(z, z.right); }\n else if (!z.right) { this.replace(z, z.left); }\n else {\n var y = this.minNode(z.right);\n if (y.parent !== z) {\n this.replace(y, y.right);\n y.right = z.right;\n y.right.parent = y;\n }\n this.replace(z, y);\n y.left = z.left;\n y.left.parent = y;\n }\n\n this._size--;\n return true;\n };\n\n\n SplayTree.prototype.erase = function erase (key) {\n var z = this.find(key);\n if (!z) { return; }\n\n this.splay(z);\n\n var s = z.left;\n var t = z.right;\n\n var sMax = null;\n if (s) {\n s.parent = null;\n sMax = this.maxNode(s);\n this.splay(sMax);\n this._root = sMax;\n }\n if (t) {\n if (s) { sMax.right = t; }\n else { this._root = t; }\n t.parent = sMax;\n }\n\n this._size--;\n };\n\n /**\n * Removes and returns the node with smallest key\n * @return {?Node}\n */\n SplayTree.prototype.pop = function pop () {\n var node = this._root, returnValue = null;\n if (node) {\n while (node.left) { node = node.left; }\n returnValue = { key: node.key, data: node.data };\n this.remove(node.key);\n }\n return returnValue;\n };\n\n\n /* eslint-disable class-methods-use-this */\n\n /**\n * Successor node\n * @param{Node} node\n * @return {?Node}\n */\n SplayTree.prototype.next = function next (node) {\n var successor = node;\n if (successor) {\n if (successor.right) {\n successor = successor.right;\n while (successor && successor.left) { successor = successor.left; }\n } else {\n successor = node.parent;\n while (successor && successor.right === node) {\n node = successor; successor = successor.parent;\n }\n }\n }\n return successor;\n };\n\n\n /**\n * Predecessor node\n * @param{Node} node\n * @return {?Node}\n */\n SplayTree.prototype.prev = function prev (node) {\n var predecessor = node;\n if (predecessor) {\n if (predecessor.left) {\n predecessor = predecessor.left;\n while (predecessor && predecessor.right) { predecessor = predecessor.right; }\n } else {\n predecessor = node.parent;\n while (predecessor && predecessor.left === node) {\n node = predecessor;\n predecessor = predecessor.parent;\n }\n }\n }\n return predecessor;\n };\n /* eslint-enable class-methods-use-this */\n\n\n /**\n * @param{forEachCallback} callback\n * @return {SplayTree}\n */\n SplayTree.prototype.forEach = function forEach (callback) {\n var current = this._root;\n var s = [], done = false, i = 0;\n\n while (!done) {\n // Reach the left most Node of the current Node\n if (current) {\n // Place pointer to a tree node on the stack\n // before traversing the node's left subtree\n s.push(current);\n current = current.left;\n } else {\n // BackTrack from the empty subtree and visit the Node\n // at the top of the stack; however, if the stack is\n // empty you are done\n if (s.length > 0) {\n current = s.pop();\n callback(current, i++);\n\n // We have visited the node and its left\n // subtree. Now, it's right subtree's turn\n current = current.right;\n } else { done = true; }\n }\n }\n return this;\n };\n\n\n /**\n * Walk key range from `low` to `high`. Stops if `fn` returns a value.\n * @param{Key} low\n * @param{Key} high\n * @param{Function} fn\n * @param{*?} ctx\n * @return {SplayTree}\n */\n SplayTree.prototype.range = function range (low, high, fn, ctx) {\n var this$1 = this;\n\n var Q = [];\n var compare = this._compare;\n var node = this._root, cmp;\n\n while (Q.length !== 0 || node) {\n if (node) {\n Q.push(node);\n node = node.left;\n } else {\n node = Q.pop();\n cmp = compare(node.key, high);\n if (cmp > 0) {\n break;\n } else if (compare(node.key, low) >= 0) {\n if (fn.call(ctx, node)) { return this$1; } // stop if smth is returned\n }\n node = node.right;\n }\n }\n return this;\n };\n\n /**\n * Returns all keys in order\n * @return {Array}\n */\n SplayTree.prototype.keys = function keys () {\n var current = this._root;\n var s = [], r = [], done = false;\n\n while (!done) {\n if (current) {\n s.push(current);\n current = current.left;\n } else {\n if (s.length > 0) {\n current = s.pop();\n r.push(current.key);\n current = current.right;\n } else { done = true; }\n }\n }\n return r;\n };\n\n\n /**\n * Returns `data` fields of all nodes in order.\n * @return {Array}\n */\n SplayTree.prototype.values = function values () {\n var current = this._root;\n var s = [], r = [], done = false;\n\n while (!done) {\n if (current) {\n s.push(current);\n current = current.left;\n } else {\n if (s.length > 0) {\n current = s.pop();\n r.push(current.data);\n current = current.right;\n } else { done = true; }\n }\n }\n return r;\n };\n\n\n /**\n * Returns node at given index\n * @param{number} index\n * @return {?Node}\n */\n SplayTree.prototype.at = function at (index) {\n // removed after a consideration, more misleading than useful\n // index = index % this.size;\n // if (index < 0) index = this.size - index;\n\n var current = this._root;\n var s = [], done = false, i = 0;\n\n while (!done) {\n if (current) {\n s.push(current);\n current = current.left;\n } else {\n if (s.length > 0) {\n current = s.pop();\n if (i === index) { return current; }\n i++;\n current = current.right;\n } else { done = true; }\n }\n }\n return null;\n };\n\n /**\n * Bulk-load items. Both array have to be same size\n * @param{Array} keys\n * @param{Array}[values]\n * @param{Boolean} [presort=false] Pre-sort keys and values, using\n * tree's comparator. Sorting is done\n * in-place\n * @return {AVLTree}\n */\n SplayTree.prototype.load = function load (keys, values, presort) {\n if ( keys === void 0 ) keys = [];\n if ( values === void 0 ) values = [];\n if ( presort === void 0 ) presort = false;\n\n if (this._size !== 0) { throw new Error('bulk-load: tree is not empty'); }\n var size = keys.length;\n if (presort) { sort(keys, values, 0, size - 1, this._compare); }\n this._root = loadRecursive(null, keys, values, 0, size);\n this._size = size;\n return this;\n };\n\n\n SplayTree.prototype.min = function min () {\n var node = this.minNode(this._root);\n if (node) { return node.key; }\n else { return null; }\n };\n\n\n SplayTree.prototype.max = function max () {\n var node = this.maxNode(this._root);\n if (node) { return node.key; }\n else { return null; }\n };\n\n SplayTree.prototype.isEmpty = function isEmpty () { return this._root === null; };\n prototypeAccessors.size.get = function () { return this._size; };\n\n\n /**\n * Create a tree and load it with items\n * @param{Array} keys\n * @param{Array?} [values]\n\n * @param{Function?} [comparator]\n * @param{Boolean?} [presort=false] Pre-sort keys and values, using\n * tree's comparator. Sorting is done\n * in-place\n * @param{Boolean?} [noDuplicates=false] Allow duplicates\n * @return {SplayTree}\n */\n SplayTree.createTree = function createTree (keys, values, comparator, presort, noDuplicates) {\n return new SplayTree(comparator, noDuplicates).load(keys, values, presort);\n };\n\n Object.defineProperties( SplayTree.prototype, prototypeAccessors );\n\n\n function loadRecursive (parent, keys, values, start, end) {\n var size = end - start;\n if (size > 0) {\n var middle = start + Math.floor(size / 2);\n var key = keys[middle];\n var data = values[middle];\n var node = { key: key, data: data, parent: parent };\n node.left = loadRecursive(node, keys, values, start, middle);\n node.right = loadRecursive(node, keys, values, middle + 1, end);\n return node;\n }\n return null;\n }\n\n\n function sort(keys, values, left, right, compare) {\n if (left >= right) { return; }\n\n var pivot = keys[(left + right) >> 1];\n var i = left - 1;\n var j = right + 1;\n\n while (true) {\n do { i++; } while (compare(keys[i], pivot) < 0);\n do { j--; } while (compare(keys[j], pivot) > 0);\n if (i >= j) { break; }\n\n var tmp = keys[i];\n keys[i] = keys[j];\n keys[j] = tmp;\n\n tmp = values[i];\n values[i] = values[j];\n values[j] = tmp;\n }\n\n sort(keys, values, left, j, compare);\n sort(keys, values, j + 1, right, compare);\n }\n\n var NORMAL = 0;\n var NON_CONTRIBUTING = 1;\n var SAME_TRANSITION = 2;\n var DIFFERENT_TRANSITION = 3;\n\n var INTERSECTION = 0;\n var UNION = 1;\n var DIFFERENCE = 2;\n var XOR = 3;\n\n /**\n * @param {SweepEvent} event\n * @param {SweepEvent} prev\n * @param {Operation} operation\n */\n function computeFields (event, prev, operation) {\n // compute inOut and otherInOut fields\n if (prev === null) {\n event.inOut = false;\n event.otherInOut = true;\n\n // previous line segment in sweepline belongs to the same polygon\n } else {\n if (event.isSubject === prev.isSubject) {\n event.inOut = !prev.inOut;\n event.otherInOut = prev.otherInOut;\n\n // previous line segment in sweepline belongs to the clipping polygon\n } else {\n event.inOut = !prev.otherInOut;\n event.otherInOut = prev.isVertical() ? !prev.inOut : prev.inOut;\n }\n\n // compute prevInResult field\n if (prev) {\n event.prevInResult = (!inResult(prev, operation) || prev.isVertical())\n ? prev.prevInResult : prev;\n }\n }\n\n // check if the line segment belongs to the Boolean operation\n event.inResult = inResult(event, operation);\n }\n\n\n /* eslint-disable indent */\n function inResult(event, operation) {\n switch (event.type) {\n case NORMAL:\n switch (operation) {\n case INTERSECTION:\n return !event.otherInOut;\n case UNION:\n return event.otherInOut;\n case DIFFERENCE:\n // return (event.isSubject && !event.otherInOut) ||\n // (!event.isSubject && event.otherInOut);\n return (event.isSubject && event.otherInOut) ||\n (!event.isSubject && !event.otherInOut);\n case XOR:\n return true;\n }\n break;\n case SAME_TRANSITION:\n return operation === INTERSECTION || operation === UNION;\n case DIFFERENT_TRANSITION:\n return operation === DIFFERENCE;\n case NON_CONTRIBUTING:\n return false;\n }\n return false;\n }\n /* eslint-enable indent */\n\n var SweepEvent = function SweepEvent (point, left, otherEvent, isSubject, edgeType) {\n\n /**\n * Is left endpoint?\n * @type {Boolean}\n */\n this.left = left;\n\n /**\n * @type {Array.}\n */\n this.point = point;\n\n /**\n * Other edge reference\n * @type {SweepEvent}\n */\n this.otherEvent = otherEvent;\n\n /**\n * Belongs to source or clipping polygon\n * @type {Boolean}\n */\n this.isSubject = isSubject;\n\n /**\n * Edge contribution type\n * @type {Number}\n */\n this.type = edgeType || NORMAL;\n\n\n /**\n * In-out transition for the sweepline crossing polygon\n * @type {Boolean}\n */\n this.inOut = false;\n\n\n /**\n * @type {Boolean}\n */\n this.otherInOut = false;\n\n /**\n * Previous event in result?\n * @type {SweepEvent}\n */\n this.prevInResult = null;\n\n /**\n * Does event belong to result?\n * @type {Boolean}\n */\n this.inResult = false;\n\n\n // connection step\n\n /**\n * @type {Boolean}\n */\n this.resultInOut = false;\n\n this.isExteriorRing = true;\n };\n\n\n /**\n * @param{Array.}p\n * @return {Boolean}\n */\n SweepEvent.prototype.isBelow = function isBelow (p) {\n var p0 = this.point, p1 = this.otherEvent.point;\n return this.left\n ? (p0[0] - p[0]) * (p1[1] - p[1]) - (p1[0] - p[0]) * (p0[1] - p[1]) > 0\n // signedArea(this.point, this.otherEvent.point, p) > 0 :\n : (p1[0] - p[0]) * (p0[1] - p[1]) - (p0[0] - p[0]) * (p1[1] - p[1]) > 0;\n //signedArea(this.otherEvent.point, this.point, p) > 0;\n };\n\n\n /**\n * @param{Array.}p\n * @return {Boolean}\n */\n SweepEvent.prototype.isAbove = function isAbove (p) {\n return !this.isBelow(p);\n };\n\n\n /**\n * @return {Boolean}\n */\n SweepEvent.prototype.isVertical = function isVertical () {\n return this.point[0] === this.otherEvent.point[0];\n };\n\n\n SweepEvent.prototype.clone = function clone () {\n var copy = new SweepEvent(\n this.point, this.left, this.otherEvent, this.isSubject, this.type);\n\n copy.inResult = this.inResult;\n copy.prevInResult = this.prevInResult;\n copy.isExteriorRing = this.isExteriorRing;\n copy.inOut = this.inOut;\n copy.otherInOut = this.otherInOut;\n\n return copy;\n };\n\n function equals(p1, p2) {\n if (p1[0] === p2[0]) {\n if (p1[1] === p2[1]) {\n return true;\n } else {\n return false;\n }\n }\n return false;\n }\n\n // const EPSILON = 1e-9;\n // const abs = Math.abs;\n // TODO https://github.com/w8r/martinez/issues/6#issuecomment-262847164\n // Precision problem.\n //\n // module.exports = function equals(p1, p2) {\n // return abs(p1[0] - p2[0]) <= EPSILON && abs(p1[1] - p2[1]) <= EPSILON;\n // };\n\n /**\n * Signed area of the triangle (p0, p1, p2)\n * @param {Array.} p0\n * @param {Array.} p1\n * @param {Array.} p2\n * @return {Number}\n */\n function signedArea(p0, p1, p2) {\n return (p0[0] - p2[0]) * (p1[1] - p2[1]) - (p1[0] - p2[0]) * (p0[1] - p2[1]);\n }\n\n /**\n * @param {SweepEvent} e1\n * @param {SweepEvent} e2\n * @return {Number}\n */\n function compareEvents(e1, e2) {\n var p1 = e1.point;\n var p2 = e2.point;\n\n // Different x-coordinate\n if (p1[0] > p2[0]) { return 1; }\n if (p1[0] < p2[0]) { return -1; }\n\n // Different points, but same x-coordinate\n // Event with lower y-coordinate is processed first\n if (p1[1] !== p2[1]) { return p1[1] > p2[1] ? 1 : -1; }\n\n return specialCases(e1, e2, p1, p2);\n }\n\n\n /* eslint-disable no-unused-vars */\n function specialCases(e1, e2, p1, p2) {\n // Same coordinates, but one is a left endpoint and the other is\n // a right endpoint. The right endpoint is processed first\n if (e1.left !== e2.left)\n { return e1.left ? 1 : -1; }\n\n // const p2 = e1.otherEvent.point, p3 = e2.otherEvent.point;\n // const sa = (p1[0] - p3[0]) * (p2[1] - p3[1]) - (p2[0] - p3[0]) * (p1[1] - p3[1])\n // Same coordinates, both events\n // are left endpoints or right endpoints.\n // not collinear\n if (signedArea(p1, e1.otherEvent.point, e2.otherEvent.point) !== 0) {\n // the event associate to the bottom segment is processed first\n return (!e1.isBelow(e2.otherEvent.point)) ? 1 : -1;\n }\n\n return (!e1.isSubject && e2.isSubject) ? 1 : -1;\n }\n /* eslint-enable no-unused-vars */\n\n /**\n * @param {SweepEvent} se\n * @param {Array.} p\n * @param {Queue} queue\n * @return {Queue}\n */\n function divideSegment(se, p, queue) {\n var r = new SweepEvent(p, false, se, se.isSubject);\n var l = new SweepEvent(p, true, se.otherEvent, se.isSubject);\n\n /* eslint-disable no-console */\n if (equals(se.point, se.otherEvent.point)) {\n\n console.warn('what is that, a collapsed segment?', se);\n }\n /* eslint-enable no-console */\n\n r.contourId = l.contourId = se.contourId;\n\n // avoid a rounding error. The left event would be processed after the right event\n if (compareEvents(l, se.otherEvent) > 0) {\n se.otherEvent.left = true;\n l.left = false;\n }\n\n // avoid a rounding error. The left event would be processed after the right event\n // if (compareEvents(se, r) > 0) {}\n\n se.otherEvent.otherEvent = l;\n se.otherEvent = r;\n\n queue.push(l);\n queue.push(r);\n\n return queue;\n }\n\n //const EPS = 1e-9;\n\n /**\n * Finds the magnitude of the cross product of two vectors (if we pretend\n * they're in three dimensions)\n *\n * @param {Object} a First vector\n * @param {Object} b Second vector\n * @private\n * @returns {Number} The magnitude of the cross product\n */\n function crossProduct(a, b) {\n return (a[0] * b[1]) - (a[1] * b[0]);\n }\n\n /**\n * Finds the dot product of two vectors.\n *\n * @param {Object} a First vector\n * @param {Object} b Second vector\n * @private\n * @returns {Number} The dot product\n */\n function dotProduct(a, b) {\n return (a[0] * b[0]) + (a[1] * b[1]);\n }\n\n /**\n * Finds the intersection (if any) between two line segments a and b, given the\n * line segments' end points a1, a2 and b1, b2.\n *\n * This algorithm is based on Schneider and Eberly.\n * http://www.cimec.org.ar/~ncalvo/Schneider_Eberly.pdf\n * Page 244.\n *\n * @param {Array.} a1 point of first line\n * @param {Array.} a2 point of first line\n * @param {Array.} b1 point of second line\n * @param {Array.} b2 point of second line\n * @param {Boolean=} noEndpointTouch whether to skip single touchpoints\n * (meaning connected segments) as\n * intersections\n * @returns {Array.>|Null} If the lines intersect, the point of\n * intersection. If they overlap, the two end points of the overlapping segment.\n * Otherwise, null.\n */\n function intersection (a1, a2, b1, b2, noEndpointTouch) {\n // The algorithm expects our lines in the form P + sd, where P is a point,\n // s is on the interval [0, 1], and d is a vector.\n // We are passed two points. P can be the first point of each pair. The\n // vector, then, could be thought of as the distance (in x and y components)\n // from the first point to the second point.\n // So first, let's make our vectors:\n var va = [a2[0] - a1[0], a2[1] - a1[1]];\n var vb = [b2[0] - b1[0], b2[1] - b1[1]];\n // We also define a function to convert back to regular point form:\n\n /* eslint-disable arrow-body-style */\n\n function toPoint(p, s, d) {\n return [\n p[0] + s * d[0],\n p[1] + s * d[1]\n ];\n }\n\n /* eslint-enable arrow-body-style */\n\n // The rest is pretty much a straight port of the algorithm.\n var e = [b1[0] - a1[0], b1[1] - a1[1]];\n var kross = crossProduct(va, vb);\n var sqrKross = kross * kross;\n var sqrLenA = dotProduct(va, va);\n //const sqrLenB = dotProduct(vb, vb);\n\n // Check for line intersection. This works because of the properties of the\n // cross product -- specifically, two vectors are parallel if and only if the\n // cross product is the 0 vector. The full calculation involves relative error\n // to account for possible very small line segments. See Schneider & Eberly\n // for details.\n if (sqrKross > 0/* EPS * sqrLenB * sqLenA */) {\n // If they're not parallel, then (because these are line segments) they\n // still might not actually intersect. This code checks that the\n // intersection point of the lines is actually on both line segments.\n var s = crossProduct(e, vb) / kross;\n if (s < 0 || s > 1) {\n // not on line segment a\n return null;\n }\n var t = crossProduct(e, va) / kross;\n if (t < 0 || t > 1) {\n // not on line segment b\n return null;\n }\n if (s === 0 || s === 1) {\n // on an endpoint of line segment a\n return noEndpointTouch ? null : [toPoint(a1, s, va)];\n }\n if (t === 0 || t === 1) {\n // on an endpoint of line segment b\n return noEndpointTouch ? null : [toPoint(b1, t, vb)];\n }\n return [toPoint(a1, s, va)];\n }\n\n // If we've reached this point, then the lines are either parallel or the\n // same, but the segments could overlap partially or fully, or not at all.\n // So we need to find the overlap, if any. To do that, we can use e, which is\n // the (vector) difference between the two initial points. If this is parallel\n // with the line itself, then the two lines are the same line, and there will\n // be overlap.\n //const sqrLenE = dotProduct(e, e);\n kross = crossProduct(e, va);\n sqrKross = kross * kross;\n\n if (sqrKross > 0 /* EPS * sqLenB * sqLenE */) {\n // Lines are just parallel, not the same. No overlap.\n return null;\n }\n\n var sa = dotProduct(va, e) / sqrLenA;\n var sb = sa + dotProduct(va, vb) / sqrLenA;\n var smin = Math.min(sa, sb);\n var smax = Math.max(sa, sb);\n\n // this is, essentially, the FindIntersection acting on floats from\n // Schneider & Eberly, just inlined into this function.\n if (smin <= 1 && smax >= 0) {\n\n // overlap on an end point\n if (smin === 1) {\n return noEndpointTouch ? null : [toPoint(a1, smin > 0 ? smin : 0, va)];\n }\n\n if (smax === 0) {\n return noEndpointTouch ? null : [toPoint(a1, smax < 1 ? smax : 1, va)];\n }\n\n if (noEndpointTouch && smin === 0 && smax === 1) { return null; }\n\n // There's overlap on a segment -- two points of intersection. Return both.\n return [\n toPoint(a1, smin > 0 ? smin : 0, va),\n toPoint(a1, smax < 1 ? smax : 1, va)\n ];\n }\n\n return null;\n }\n\n /**\n * @param {SweepEvent} se1\n * @param {SweepEvent} se2\n * @param {Queue} queue\n * @return {Number}\n */\n function possibleIntersection (se1, se2, queue) {\n // that disallows self-intersecting polygons,\n // did cost us half a day, so I'll leave it\n // out of respect\n // if (se1.isSubject === se2.isSubject) return;\n var inter = intersection(\n se1.point, se1.otherEvent.point,\n se2.point, se2.otherEvent.point\n );\n\n var nintersections = inter ? inter.length : 0;\n if (nintersections === 0) { return 0; } // no intersection\n\n // the line segments intersect at an endpoint of both line segments\n if ((nintersections === 1) &&\n (equals(se1.point, se2.point) ||\n equals(se1.otherEvent.point, se2.otherEvent.point))) {\n return 0;\n }\n\n if (nintersections === 2 && se1.isSubject === se2.isSubject) {\n // if(se1.contourId === se2.contourId){\n // console.warn('Edges of the same polygon overlap',\n // se1.point, se1.otherEvent.point, se2.point, se2.otherEvent.point);\n // }\n //throw new Error('Edges of the same polygon overlap');\n return 0;\n }\n\n // The line segments associated to se1 and se2 intersect\n if (nintersections === 1) {\n\n // if the intersection point is not an endpoint of se1\n if (!equals(se1.point, inter[0]) && !equals(se1.otherEvent.point, inter[0])) {\n divideSegment(se1, inter[0], queue);\n }\n\n // if the intersection point is not an endpoint of se2\n if (!equals(se2.point, inter[0]) && !equals(se2.otherEvent.point, inter[0])) {\n divideSegment(se2, inter[0], queue);\n }\n return 1;\n }\n\n // The line segments associated to se1 and se2 overlap\n var events = [];\n var leftCoincide = false;\n var rightCoincide = false;\n\n if (equals(se1.point, se2.point)) {\n leftCoincide = true; // linked\n } else if (compareEvents(se1, se2) === 1) {\n events.push(se2, se1);\n } else {\n events.push(se1, se2);\n }\n\n if (equals(se1.otherEvent.point, se2.otherEvent.point)) {\n rightCoincide = true;\n } else if (compareEvents(se1.otherEvent, se2.otherEvent) === 1) {\n events.push(se2.otherEvent, se1.otherEvent);\n } else {\n events.push(se1.otherEvent, se2.otherEvent);\n }\n\n if ((leftCoincide && rightCoincide) || leftCoincide) {\n // both line segments are equal or share the left endpoint\n se2.type = NON_CONTRIBUTING;\n se1.type = (se2.inOut === se1.inOut)\n ? SAME_TRANSITION : DIFFERENT_TRANSITION;\n\n if (leftCoincide && !rightCoincide) {\n // honestly no idea, but changing events selection from [2, 1]\n // to [0, 1] fixes the overlapping self-intersecting polygons issue\n divideSegment(events[1].otherEvent, events[0].point, queue);\n }\n return 2;\n }\n\n // the line segments share the right endpoint\n if (rightCoincide) {\n divideSegment(events[0], events[1].point, queue);\n return 3;\n }\n\n // no line segment includes totally the other one\n if (events[0] !== events[3].otherEvent) {\n divideSegment(events[0], events[1].point, queue);\n divideSegment(events[1], events[2].point, queue);\n return 3;\n }\n\n // one line segment includes the other one\n divideSegment(events[0], events[1].point, queue);\n divideSegment(events[3].otherEvent, events[2].point, queue);\n\n return 3;\n }\n\n /**\n * @param {SweepEvent} le1\n * @param {SweepEvent} le2\n * @return {Number}\n */\n function compareSegments(le1, le2) {\n if (le1 === le2) { return 0; }\n\n // Segments are not collinear\n if (signedArea(le1.point, le1.otherEvent.point, le2.point) !== 0 ||\n signedArea(le1.point, le1.otherEvent.point, le2.otherEvent.point) !== 0) {\n\n // If they share their left endpoint use the right endpoint to sort\n if (equals(le1.point, le2.point)) { return le1.isBelow(le2.otherEvent.point) ? -1 : 1; }\n\n // Different left endpoint: use the left endpoint to sort\n if (le1.point[0] === le2.point[0]) { return le1.point[1] < le2.point[1] ? -1 : 1; }\n\n // has the line segment associated to e1 been inserted\n // into S after the line segment associated to e2 ?\n if (compareEvents(le1, le2) === 1) { return le2.isAbove(le1.point) ? -1 : 1; }\n\n // The line segment associated to e2 has been inserted\n // into S after the line segment associated to e1\n return le1.isBelow(le2.point) ? -1 : 1;\n }\n\n if (le1.isSubject === le2.isSubject) { // same polygon\n var p1 = le1.point, p2 = le2.point;\n if (p1[0] === p2[0] && p1[1] === p2[1]/*equals(le1.point, le2.point)*/) {\n p1 = le1.otherEvent.point; p2 = le2.otherEvent.point;\n if (p1[0] === p2[0] && p1[1] === p2[1]) { return 0; }\n else { return le1.contourId > le2.contourId ? 1 : -1; }\n }\n } else { // Segments are collinear, but belong to separate polygons\n return le1.isSubject ? -1 : 1;\n }\n\n return compareEvents(le1, le2) === 1 ? 1 : -1;\n }\n\n function subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation) {\n var sweepLine = new SplayTree(compareSegments);\n var sortedEvents = [];\n\n var rightbound = Math.min(sbbox[2], cbbox[2]);\n\n var prev, next, begin;\n\n while (eventQueue.length !== 0) {\n var event = eventQueue.pop();\n sortedEvents.push(event);\n\n // optimization by bboxes for intersection and difference goes here\n if ((operation === INTERSECTION && event.point[0] > rightbound) ||\n (operation === DIFFERENCE && event.point[0] > sbbox[2])) {\n break;\n }\n\n if (event.left) {\n next = prev = sweepLine.insert(event);\n begin = sweepLine.minNode();\n\n if (prev !== begin) { prev = sweepLine.prev(prev); }\n else { prev = null; }\n\n next = sweepLine.next(next);\n\n var prevEvent = prev ? prev.key : null;\n var prevprevEvent = (void 0);\n computeFields(event, prevEvent, operation);\n if (next) {\n if (possibleIntersection(event, next.key, eventQueue) === 2) {\n computeFields(event, prevEvent, operation);\n computeFields(event, next.key, operation);\n }\n }\n\n if (prev) {\n if (possibleIntersection(prev.key, event, eventQueue) === 2) {\n var prevprev = prev;\n if (prevprev !== begin) { prevprev = sweepLine.prev(prevprev); }\n else { prevprev = null; }\n\n prevprevEvent = prevprev ? prevprev.key : null;\n computeFields(prevEvent, prevprevEvent, operation);\n computeFields(event, prevEvent, operation);\n }\n }\n } else {\n event = event.otherEvent;\n next = prev = sweepLine.find(event);\n\n if (prev && next) {\n\n if (prev !== begin) { prev = sweepLine.prev(prev); }\n else { prev = null; }\n\n next = sweepLine.next(next);\n sweepLine.remove(event);\n\n if (next && prev) {\n possibleIntersection(prev.key, next.key, eventQueue);\n }\n }\n }\n }\n return sortedEvents;\n }\n\n /**\n * @param {Array.} sortedEvents\n * @return {Array.}\n */\n function orderEvents(sortedEvents) {\n var event, i, len, tmp;\n var resultEvents = [];\n for (i = 0, len = sortedEvents.length; i < len; i++) {\n event = sortedEvents[i];\n if ((event.left && event.inResult) ||\n (!event.left && event.otherEvent.inResult)) {\n resultEvents.push(event);\n }\n }\n // Due to overlapping edges the resultEvents array can be not wholly sorted\n var sorted = false;\n while (!sorted) {\n sorted = true;\n for (i = 0, len = resultEvents.length; i < len; i++) {\n if ((i + 1) < len &&\n compareEvents(resultEvents[i], resultEvents[i + 1]) === 1) {\n tmp = resultEvents[i];\n resultEvents[i] = resultEvents[i + 1];\n resultEvents[i + 1] = tmp;\n sorted = false;\n }\n }\n }\n\n\n for (i = 0, len = resultEvents.length; i < len; i++) {\n event = resultEvents[i];\n event.pos = i;\n }\n\n // imagine, the right event is found in the beginning of the queue,\n // when his left counterpart is not marked yet\n for (i = 0, len = resultEvents.length; i < len; i++) {\n event = resultEvents[i];\n if (!event.left) {\n tmp = event.pos;\n event.pos = event.otherEvent.pos;\n event.otherEvent.pos = tmp;\n }\n }\n\n return resultEvents;\n }\n\n\n /**\n * @param {Number} pos\n * @param {Array.} resultEvents\n * @param {Object>} processed\n * @return {Number}\n */\n function nextPos(pos, resultEvents, processed, origIndex) {\n var newPos = pos + 1;\n var length = resultEvents.length;\n if (newPos > length - 1) { return pos - 1; }\n var p = resultEvents[pos].point;\n var p1 = resultEvents[newPos].point;\n\n\n // while in range and not the current one by value\n while (newPos < length && p1[0] === p[0] && p1[1] === p[1]) {\n if (!processed[newPos]) {\n return newPos;\n } else {\n newPos++;\n }\n p1 = resultEvents[newPos].point;\n }\n\n newPos = pos - 1;\n\n while (processed[newPos] && newPos >= origIndex) {\n newPos--;\n }\n return newPos;\n }\n\n\n /**\n * @param {Array.} sortedEvents\n * @return {Array.<*>} polygons\n */\n function connectEdges(sortedEvents, operation) {\n var i, len;\n var resultEvents = orderEvents(sortedEvents);\n\n // \"false\"-filled array\n var processed = {};\n var result = [];\n var event;\n\n for (i = 0, len = resultEvents.length; i < len; i++) {\n if (processed[i]) { continue; }\n var contour = [[]];\n\n if (!resultEvents[i].isExteriorRing) {\n if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length === 0) {\n result.push(contour);\n } else if (result.length === 0) {\n result.push([[contour]]);\n } else {\n result[result.length - 1].push(contour[0]);\n }\n } else if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length > 1) {\n result[result.length - 1].push(contour[0]);\n } else {\n result.push(contour);\n }\n\n var ringId = result.length - 1;\n var pos = i;\n\n var initial = resultEvents[i].point;\n contour[0].push(initial);\n\n while (pos >= i) {\n event = resultEvents[pos];\n processed[pos] = true;\n\n if (event.left) {\n event.resultInOut = false;\n event.contourId = ringId;\n } else {\n event.otherEvent.resultInOut = true;\n event.otherEvent.contourId = ringId;\n }\n\n pos = event.pos;\n processed[pos] = true;\n contour[0].push(resultEvents[pos].point);\n pos = nextPos(pos, resultEvents, processed, i);\n }\n\n pos = pos === -1 ? i : pos;\n\n event = resultEvents[pos];\n processed[pos] = processed[event.pos] = true;\n event.otherEvent.resultInOut = true;\n event.otherEvent.contourId = ringId;\n }\n\n // Handle if the result is a polygon (eg not multipoly)\n // Commented it again, let's see what do we mean by that\n // if (result.length === 1) result = result[0];\n return result;\n }\n\n var tinyqueue = TinyQueue;\n var default_1 = TinyQueue;\n\n function TinyQueue(data, compare) {\n var this$1 = this;\n\n if (!(this instanceof TinyQueue)) { return new TinyQueue(data, compare); }\n\n this.data = data || [];\n this.length = this.data.length;\n this.compare = compare || defaultCompare;\n\n if (this.length > 0) {\n for (var i = (this.length >> 1) - 1; i >= 0; i--) { this$1._down(i); }\n }\n }\n\n function defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n }\n\n TinyQueue.prototype = {\n\n push: function (item) {\n this.data.push(item);\n this.length++;\n this._up(this.length - 1);\n },\n\n pop: function () {\n if (this.length === 0) { return undefined; }\n\n var top = this.data[0];\n this.length--;\n\n if (this.length > 0) {\n this.data[0] = this.data[this.length];\n this._down(0);\n }\n this.data.pop();\n\n return top;\n },\n\n peek: function () {\n return this.data[0];\n },\n\n _up: function (pos) {\n var data = this.data;\n var compare = this.compare;\n var item = data[pos];\n\n while (pos > 0) {\n var parent = (pos - 1) >> 1;\n var current = data[parent];\n if (compare(item, current) >= 0) { break; }\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n },\n\n _down: function (pos) {\n var this$1 = this;\n\n var data = this.data;\n var compare = this.compare;\n var halfLength = this.length >> 1;\n var item = data[pos];\n\n while (pos < halfLength) {\n var left = (pos << 1) + 1;\n var right = left + 1;\n var best = data[left];\n\n if (right < this$1.length && compare(data[right], best) < 0) {\n left = right;\n best = data[right];\n }\n if (compare(best, item) >= 0) { break; }\n\n data[pos] = best;\n pos = left;\n }\n\n data[pos] = item;\n }\n };\n tinyqueue.default = default_1;\n\n var max = Math.max;\n var min = Math.min;\n\n var contourId = 0;\n\n\n function processPolygon(contourOrHole, isSubject, depth, Q, bbox, isExteriorRing) {\n var i, len, s1, s2, e1, e2;\n for (i = 0, len = contourOrHole.length - 1; i < len; i++) {\n s1 = contourOrHole[i];\n s2 = contourOrHole[i + 1];\n e1 = new SweepEvent(s1, false, undefined, isSubject);\n e2 = new SweepEvent(s2, false, e1, isSubject);\n e1.otherEvent = e2;\n\n if (s1[0] === s2[0] && s1[1] === s2[1]) {\n continue; // skip collapsed edges, or it breaks\n }\n\n e1.contourId = e2.contourId = depth;\n if (!isExteriorRing) {\n e1.isExteriorRing = false;\n e2.isExteriorRing = false;\n }\n if (compareEvents(e1, e2) > 0) {\n e2.left = true;\n } else {\n e1.left = true;\n }\n\n var x = s1[0], y = s1[1];\n bbox[0] = min(bbox[0], x);\n bbox[1] = min(bbox[1], y);\n bbox[2] = max(bbox[2], x);\n bbox[3] = max(bbox[3], y);\n\n // Pushing it so the queue is sorted from left to right,\n // with object on the left having the highest priority.\n Q.push(e1);\n Q.push(e2);\n }\n }\n\n\n function fillQueue(subject, clipping, sbbox, cbbox, operation) {\n var eventQueue = new tinyqueue(null, compareEvents);\n var polygonSet, isExteriorRing, i, ii, j, jj; //, k, kk;\n\n for (i = 0, ii = subject.length; i < ii; i++) {\n polygonSet = subject[i];\n for (j = 0, jj = polygonSet.length; j < jj; j++) {\n isExteriorRing = j === 0;\n if (isExteriorRing) { contourId++; }\n processPolygon(polygonSet[j], true, contourId, eventQueue, sbbox, isExteriorRing);\n }\n }\n\n for (i = 0, ii = clipping.length; i < ii; i++) {\n polygonSet = clipping[i];\n for (j = 0, jj = polygonSet.length; j < jj; j++) {\n isExteriorRing = j === 0;\n if (operation === DIFFERENCE) { isExteriorRing = false; }\n if (isExteriorRing) { contourId++; }\n processPolygon(polygonSet[j], false, contourId, eventQueue, cbbox, isExteriorRing);\n }\n }\n\n return eventQueue;\n }\n\n var EMPTY = [];\n\n\n function trivialOperation(subject, clipping, operation) {\n var result = null;\n if (subject.length * clipping.length === 0) {\n if (operation === INTERSECTION) {\n result = EMPTY;\n } else if (operation === DIFFERENCE) {\n result = subject;\n } else if (operation === UNION ||\n operation === XOR) {\n result = (subject.length === 0) ? clipping : subject;\n }\n }\n return result;\n }\n\n\n function compareBBoxes(subject, clipping, sbbox, cbbox, operation) {\n var result = null;\n if (sbbox[0] > cbbox[2] ||\n cbbox[0] > sbbox[2] ||\n sbbox[1] > cbbox[3] ||\n cbbox[1] > sbbox[3]) {\n if (operation === INTERSECTION) {\n result = EMPTY;\n } else if (operation === DIFFERENCE) {\n result = subject;\n } else if (operation === UNION ||\n operation === XOR) {\n result = subject.concat(clipping);\n }\n }\n return result;\n }\n\n\n function boolean(subject, clipping, operation) {\n if (typeof subject[0][0][0] === 'number') {\n subject = [subject];\n }\n if (typeof clipping[0][0][0] === 'number') {\n clipping = [clipping];\n }\n var trivial = trivialOperation(subject, clipping, operation);\n if (trivial) {\n return trivial === EMPTY ? null : trivial;\n }\n var sbbox = [Infinity, Infinity, -Infinity, -Infinity];\n var cbbox = [Infinity, Infinity, -Infinity, -Infinity];\n\n //console.time('fill queue');\n var eventQueue = fillQueue(subject, clipping, sbbox, cbbox, operation);\n //console.timeEnd('fill queue');\n\n trivial = compareBBoxes(subject, clipping, sbbox, cbbox, operation);\n if (trivial) {\n return trivial === EMPTY ? null : trivial;\n }\n //console.time('subdivide edges');\n var sortedEvents = subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation);\n //console.timeEnd('subdivide edges');\n\n //console.time('connect vertices');\n var result = connectEdges(sortedEvents, operation);\n //console.timeEnd('connect vertices');\n return result;\n }\n\n function union (subject, clipping) {\n return boolean(subject, clipping, UNION);\n }\n\n function diff (subject, clipping) {\n return boolean(subject, clipping, DIFFERENCE);\n }\n\n function xor (subject, clipping){\n return boolean(subject, clipping, XOR);\n }\n\n function intersection$1 (subject, clipping) {\n return boolean(subject, clipping, INTERSECTION);\n }\n\n /**\n * @enum {Number}\n */\n var operations = { UNION: UNION, DIFFERENCE: DIFFERENCE, INTERSECTION: INTERSECTION, XOR: XOR };\n\n exports.union = union;\n exports.diff = diff;\n exports.xor = xor;\n exports.intersection = intersection$1;\n exports.operations = operations;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=martinez.umd.js.map\n","function DEFAULT_COMPARE (a, b) { return a > b ? 1 : a < b ? -1 : 0; }\n\nexport default class SplayTree {\n\n constructor(compare = DEFAULT_COMPARE, noDuplicates = false) {\n this._compare = compare;\n this._root = null;\n this._size = 0;\n this._noDuplicates = !!noDuplicates;\n }\n\n\n rotateLeft(x) {\n var y = x.right;\n if (y) {\n x.right = y.left;\n if (y.left) y.left.parent = x;\n y.parent = x.parent;\n }\n\n if (!x.parent) this._root = y;\n else if (x === x.parent.left) x.parent.left = y;\n else x.parent.right = y;\n if (y) y.left = x;\n x.parent = y;\n }\n\n\n rotateRight(x) {\n var y = x.left;\n if (y) {\n x.left = y.right;\n if (y.right) y.right.parent = x;\n y.parent = x.parent;\n }\n\n if (!x.parent) this._root = y;\n else if(x === x.parent.left) x.parent.left = y;\n else x.parent.right = y;\n if (y) y.right = x;\n x.parent = y;\n }\n\n\n _splay(x) {\n while (x.parent) {\n var p = x.parent;\n if (!p.parent) {\n if (p.left === x) this.rotateRight(p);\n else this.rotateLeft(p);\n } else if (p.left === x && p.parent.left === p) {\n this.rotateRight(p.parent);\n this.rotateRight(p);\n } else if (p.right === x && p.parent.right === p) {\n this.rotateLeft(p.parent);\n this.rotateLeft(p);\n } else if (p.left === x && p.parent.right === p) {\n this.rotateRight(p);\n this.rotateLeft(p);\n } else {\n this.rotateLeft(p);\n this.rotateRight(p);\n }\n }\n }\n\n\n splay(x) {\n var p, gp, ggp, l, r;\n\n while (x.parent) {\n p = x.parent;\n gp = p.parent;\n\n if (gp && gp.parent) {\n ggp = gp.parent;\n if (ggp.left === gp) ggp.left = x;\n else ggp.right = x;\n x.parent = ggp;\n } else {\n x.parent = null;\n this._root = x;\n }\n\n l = x.left; r = x.right;\n\n if (x === p.left) { // left\n if (gp) {\n if (gp.left === p) {\n /* zig-zig */\n if (p.right) {\n gp.left = p.right;\n gp.left.parent = gp;\n } else gp.left = null;\n\n p.right = gp;\n gp.parent = p;\n } else {\n /* zig-zag */\n if (l) {\n gp.right = l;\n l.parent = gp;\n } else gp.right = null;\n\n x.left = gp;\n gp.parent = x;\n }\n }\n if (r) {\n p.left = r;\n r.parent = p;\n } else p.left = null;\n\n x.right = p;\n p.parent = x;\n } else { // right\n if (gp) {\n if (gp.right === p) {\n /* zig-zig */\n if (p.left) {\n gp.right = p.left;\n gp.right.parent = gp;\n } else gp.right = null;\n\n p.left = gp;\n gp.parent = p;\n } else {\n /* zig-zag */\n if (r) {\n gp.left = r;\n r.parent = gp;\n } else gp.left = null;\n\n x.right = gp;\n gp.parent = x;\n }\n }\n if (l) {\n p.right = l;\n l.parent = p;\n } else p.right = null;\n\n x.left = p;\n p.parent = x;\n }\n }\n }\n\n\n replace(u, v) {\n if (!u.parent) this._root = v;\n else if (u === u.parent.left) u.parent.left = v;\n else u.parent.right = v;\n if (v) v.parent = u.parent;\n }\n\n\n minNode(u = this._root) {\n if (u) while (u.left) u = u.left;\n return u;\n }\n\n\n maxNode(u = this._root) {\n if (u) while (u.right) u = u.right;\n return u;\n }\n\n\n insert(key, data) {\n var z = this._root;\n var p = null;\n var comp = this._compare;\n var cmp;\n\n if (this._noDuplicates) {\n while (z) {\n p = z;\n cmp = comp(z.key, key);\n if (cmp === 0) return;\n else if (comp(z.key, key) < 0) z = z.right;\n else z = z.left;\n }\n } else {\n while (z) {\n p = z;\n if (comp(z.key, key) < 0) z = z.right;\n else z = z.left;\n }\n }\n\n z = { key, data, left: null, right: null, parent: p };\n\n if (!p) this._root = z;\n else if (comp(p.key, z.key) < 0) p.right = z;\n else p.left = z;\n\n this.splay(z);\n this._size++;\n return z;\n }\n\n\n find (key) {\n var z = this._root;\n var comp = this._compare;\n while (z) {\n var cmp = comp(z.key, key);\n if (cmp < 0) z = z.right;\n else if (cmp > 0) z = z.left;\n else return z;\n }\n return null;\n }\n\n /**\n * Whether the tree contains a node with the given key\n * @param {Key} key\n * @return {boolean} true/false\n */\n contains (key) {\n var node = this._root;\n var comparator = this._compare;\n while (node) {\n var cmp = comparator(key, node.key);\n if (cmp === 0) return true;\n else if (cmp < 0) node = node.left;\n else node = node.right;\n }\n\n return false;\n }\n\n\n remove (key) {\n var z = this.find(key);\n\n if (!z) return false;\n\n this.splay(z);\n\n if (!z.left) this.replace(z, z.right);\n else if (!z.right) this.replace(z, z.left);\n else {\n var y = this.minNode(z.right);\n if (y.parent !== z) {\n this.replace(y, y.right);\n y.right = z.right;\n y.right.parent = y;\n }\n this.replace(z, y);\n y.left = z.left;\n y.left.parent = y;\n }\n\n this._size--;\n return true;\n }\n\n\n removeNode(z) {\n if (!z) return false;\n\n this.splay(z);\n\n if (!z.left) this.replace(z, z.right);\n else if (!z.right) this.replace(z, z.left);\n else {\n var y = this.minNode(z.right);\n if (y.parent !== z) {\n this.replace(y, y.right);\n y.right = z.right;\n y.right.parent = y;\n }\n this.replace(z, y);\n y.left = z.left;\n y.left.parent = y;\n }\n\n this._size--;\n return true;\n }\n\n\n erase (key) {\n var z = this.find(key);\n if (!z) return;\n\n this.splay(z);\n\n var s = z.left;\n var t = z.right;\n\n var sMax = null;\n if (s) {\n s.parent = null;\n sMax = this.maxNode(s);\n this.splay(sMax);\n this._root = sMax;\n }\n if (t) {\n if (s) sMax.right = t;\n else this._root = t;\n t.parent = sMax;\n }\n\n this._size--;\n }\n\n /**\n * Removes and returns the node with smallest key\n * @return {?Node}\n */\n pop () {\n var node = this._root, returnValue = null;\n if (node) {\n while (node.left) node = node.left;\n returnValue = { key: node.key, data: node.data };\n this.remove(node.key);\n }\n return returnValue;\n }\n\n\n /* eslint-disable class-methods-use-this */\n\n /**\n * Successor node\n * @param {Node} node\n * @return {?Node}\n */\n next (node) {\n var successor = node;\n if (successor) {\n if (successor.right) {\n successor = successor.right;\n while (successor && successor.left) successor = successor.left;\n } else {\n successor = node.parent;\n while (successor && successor.right === node) {\n node = successor; successor = successor.parent;\n }\n }\n }\n return successor;\n }\n\n\n /**\n * Predecessor node\n * @param {Node} node\n * @return {?Node}\n */\n prev (node) {\n var predecessor = node;\n if (predecessor) {\n if (predecessor.left) {\n predecessor = predecessor.left;\n while (predecessor && predecessor.right) predecessor = predecessor.right;\n } else {\n predecessor = node.parent;\n while (predecessor && predecessor.left === node) {\n node = predecessor;\n predecessor = predecessor.parent;\n }\n }\n }\n return predecessor;\n }\n /* eslint-enable class-methods-use-this */\n\n\n /**\n * @param {forEachCallback} callback\n * @return {SplayTree}\n */\n forEach(callback) {\n var current = this._root;\n var s = [], done = false, i = 0;\n\n while (!done) {\n // Reach the left most Node of the current Node\n if (current) {\n // Place pointer to a tree node on the stack\n // before traversing the node's left subtree\n s.push(current);\n current = current.left;\n } else {\n // BackTrack from the empty subtree and visit the Node\n // at the top of the stack; however, if the stack is\n // empty you are done\n if (s.length > 0) {\n current = s.pop();\n callback(current, i++);\n\n // We have visited the node and its left\n // subtree. Now, it's right subtree's turn\n current = current.right;\n } else done = true;\n }\n }\n return this;\n }\n\n\n /**\n * Walk key range from `low` to `high`. Stops if `fn` returns a value.\n * @param {Key} low\n * @param {Key} high\n * @param {Function} fn\n * @param {*?} ctx\n * @return {SplayTree}\n */\n range(low, high, fn, ctx) {\n const Q = [];\n const compare = this._compare;\n let node = this._root, cmp;\n\n while (Q.length !== 0 || node) {\n if (node) {\n Q.push(node);\n node = node.left;\n } else {\n node = Q.pop();\n cmp = compare(node.key, high);\n if (cmp > 0) {\n break;\n } else if (compare(node.key, low) >= 0) {\n if (fn.call(ctx, node)) return this; // stop if smth is returned\n }\n node = node.right;\n }\n }\n return this;\n }\n\n /**\n * Returns all keys in order\n * @return {Array}\n */\n keys () {\n var current = this._root;\n var s = [], r = [], done = false;\n\n while (!done) {\n if (current) {\n s.push(current);\n current = current.left;\n } else {\n if (s.length > 0) {\n current = s.pop();\n r.push(current.key);\n current = current.right;\n } else done = true;\n }\n }\n return r;\n }\n\n\n /**\n * Returns `data` fields of all nodes in order.\n * @return {Array}\n */\n values () {\n var current = this._root;\n var s = [], r = [], done = false;\n\n while (!done) {\n if (current) {\n s.push(current);\n current = current.left;\n } else {\n if (s.length > 0) {\n current = s.pop();\n r.push(current.data);\n current = current.right;\n } else done = true;\n }\n }\n return r;\n }\n\n\n /**\n * Returns node at given index\n * @param {number} index\n * @return {?Node}\n */\n at (index) {\n // removed after a consideration, more misleading than useful\n // index = index % this.size;\n // if (index < 0) index = this.size - index;\n\n var current = this._root;\n var s = [], done = false, i = 0;\n\n while (!done) {\n if (current) {\n s.push(current);\n current = current.left;\n } else {\n if (s.length > 0) {\n current = s.pop();\n if (i === index) return current;\n i++;\n current = current.right;\n } else done = true;\n }\n }\n return null;\n }\n\n /**\n * Bulk-load items. Both array have to be same size\n * @param {Array} keys\n * @param {Array} [values]\n * @param {Boolean} [presort=false] Pre-sort keys and values, using\n * tree's comparator. Sorting is done\n * in-place\n * @return {AVLTree}\n */\n load(keys = [], values = [], presort = false) {\n if (this._size !== 0) throw new Error('bulk-load: tree is not empty');\n const size = keys.length;\n if (presort) sort(keys, values, 0, size - 1, this._compare);\n this._root = loadRecursive(null, keys, values, 0, size);\n this._size = size;\n return this;\n }\n\n\n min() {\n var node = this.minNode(this._root);\n if (node) return node.key;\n else return null;\n }\n\n\n max() {\n var node = this.maxNode(this._root);\n if (node) return node.key;\n else return null;\n }\n\n isEmpty() { return this._root === null; }\n get size() { return this._size; }\n\n\n /**\n * Create a tree and load it with items\n * @param {Array} keys\n * @param {Array?} [values]\n\n * @param {Function?} [comparator]\n * @param {Boolean?} [presort=false] Pre-sort keys and values, using\n * tree's comparator. Sorting is done\n * in-place\n * @param {Boolean?} [noDuplicates=false] Allow duplicates\n * @return {SplayTree}\n */\n static createTree(keys, values, comparator, presort, noDuplicates) {\n return new SplayTree(comparator, noDuplicates).load(keys, values, presort);\n }\n}\n\n\nfunction loadRecursive (parent, keys, values, start, end) {\n const size = end - start;\n if (size > 0) {\n const middle = start + Math.floor(size / 2);\n const key = keys[middle];\n const data = values[middle];\n const node = { key, data, parent };\n node.left = loadRecursive(node, keys, values, start, middle);\n node.right = loadRecursive(node, keys, values, middle + 1, end);\n return node;\n }\n return null;\n}\n\n\nfunction sort(keys, values, left, right, compare) {\n if (left >= right) return;\n\n const pivot = keys[(left + right) >> 1];\n let i = left - 1;\n let j = right + 1;\n\n while (true) {\n do i++; while (compare(keys[i], pivot) < 0);\n do j--; while (compare(keys[j], pivot) > 0);\n if (i >= j) break;\n\n let tmp = keys[i];\n keys[i] = keys[j];\n keys[j] = tmp;\n\n tmp = values[i];\n values[i] = values[j];\n values[j] = tmp;\n }\n\n sort(keys, values, left, j, compare);\n sort(keys, values, j + 1, right, compare);\n}\n","export const NORMAL = 0;\nexport const NON_CONTRIBUTING = 1;\nexport const SAME_TRANSITION = 2;\nexport const DIFFERENT_TRANSITION = 3;\n","export const INTERSECTION = 0;\nexport const UNION = 1;\nexport const DIFFERENCE = 2;\nexport const XOR = 3;\n","import {\n NORMAL,\n SAME_TRANSITION,\n DIFFERENT_TRANSITION,\n NON_CONTRIBUTING\n} from './edge_type';\nimport {\n INTERSECTION,\n UNION,\n DIFFERENCE,\n XOR\n} from './operation';\n\n/**\n * @param {SweepEvent} event\n * @param {SweepEvent} prev\n * @param {Operation} operation\n */\nexport default function computeFields (event, prev, operation) {\n // compute inOut and otherInOut fields\n if (prev === null) {\n event.inOut = false;\n event.otherInOut = true;\n\n // previous line segment in sweepline belongs to the same polygon\n } else {\n if (event.isSubject === prev.isSubject) {\n event.inOut = !prev.inOut;\n event.otherInOut = prev.otherInOut;\n\n // previous line segment in sweepline belongs to the clipping polygon\n } else {\n event.inOut = !prev.otherInOut;\n event.otherInOut = prev.isVertical() ? !prev.inOut : prev.inOut;\n }\n\n // compute prevInResult field\n if (prev) {\n event.prevInResult = (!inResult(prev, operation) || prev.isVertical())\n ? prev.prevInResult : prev;\n }\n }\n\n // check if the line segment belongs to the Boolean operation\n event.inResult = inResult(event, operation);\n}\n\n\n/* eslint-disable indent */\nfunction inResult(event, operation) {\n switch (event.type) {\n case NORMAL:\n switch (operation) {\n case INTERSECTION:\n return !event.otherInOut;\n case UNION:\n return event.otherInOut;\n case DIFFERENCE:\n // return (event.isSubject && !event.otherInOut) ||\n // (!event.isSubject && event.otherInOut);\n return (event.isSubject && event.otherInOut) ||\n (!event.isSubject && !event.otherInOut);\n case XOR:\n return true;\n }\n break;\n case SAME_TRANSITION:\n return operation === INTERSECTION || operation === UNION;\n case DIFFERENT_TRANSITION:\n return operation === DIFFERENCE;\n case NON_CONTRIBUTING:\n return false;\n }\n return false;\n}\n/* eslint-enable indent */\n","import { NORMAL } from './edge_type';\n\n\nexport default class SweepEvent {\n\n\n /**\n * Sweepline event\n *\n * @class {SweepEvent}\n * @param {Array.} point\n * @param {Boolean} left\n * @param {SweepEvent=} otherEvent\n * @param {Boolean} isSubject\n * @param {Number} edgeType\n */\n constructor (point, left, otherEvent, isSubject, edgeType) {\n\n /**\n * Is left endpoint?\n * @type {Boolean}\n */\n this.left = left;\n\n /**\n * @type {Array.}\n */\n this.point = point;\n\n /**\n * Other edge reference\n * @type {SweepEvent}\n */\n this.otherEvent = otherEvent;\n\n /**\n * Belongs to source or clipping polygon\n * @type {Boolean}\n */\n this.isSubject = isSubject;\n\n /**\n * Edge contribution type\n * @type {Number}\n */\n this.type = edgeType || NORMAL;\n\n\n /**\n * In-out transition for the sweepline crossing polygon\n * @type {Boolean}\n */\n this.inOut = false;\n\n\n /**\n * @type {Boolean}\n */\n this.otherInOut = false;\n\n /**\n * Previous event in result?\n * @type {SweepEvent}\n */\n this.prevInResult = null;\n\n /**\n * Does event belong to result?\n * @type {Boolean}\n */\n this.inResult = false;\n\n\n // connection step\n\n /**\n * @type {Boolean}\n */\n this.resultInOut = false;\n\n this.isExteriorRing = true;\n }\n\n\n /**\n * @param {Array.} p\n * @return {Boolean}\n */\n isBelow (p) {\n const p0 = this.point, p1 = this.otherEvent.point;\n return this.left\n ? (p0[0] - p[0]) * (p1[1] - p[1]) - (p1[0] - p[0]) * (p0[1] - p[1]) > 0\n // signedArea(this.point, this.otherEvent.point, p) > 0 :\n : (p1[0] - p[0]) * (p0[1] - p[1]) - (p0[0] - p[0]) * (p1[1] - p[1]) > 0;\n //signedArea(this.otherEvent.point, this.point, p) > 0;\n }\n\n\n /**\n * @param {Array.} p\n * @return {Boolean}\n */\n isAbove (p) {\n return !this.isBelow(p);\n }\n\n\n /**\n * @return {Boolean}\n */\n isVertical () {\n return this.point[0] === this.otherEvent.point[0];\n }\n\n\n clone () {\n const copy = new SweepEvent(\n this.point, this.left, this.otherEvent, this.isSubject, this.type);\n\n copy.inResult = this.inResult;\n copy.prevInResult = this.prevInResult;\n copy.isExteriorRing = this.isExteriorRing;\n copy.inOut = this.inOut;\n copy.otherInOut = this.otherInOut;\n\n return copy;\n }\n}\n","export default function equals(p1, p2) {\n if (p1[0] === p2[0]) {\n if (p1[1] === p2[1]) {\n return true;\n } else {\n return false;\n }\n }\n return false;\n}\n\n// const EPSILON = 1e-9;\n// const abs = Math.abs;\n// TODO https://github.com/w8r/martinez/issues/6#issuecomment-262847164\n// Precision problem.\n//\n// module.exports = function equals(p1, p2) {\n// return abs(p1[0] - p2[0]) <= EPSILON && abs(p1[1] - p2[1]) <= EPSILON;\n// };\n","/**\n * Signed area of the triangle (p0, p1, p2)\n * @param {Array.} p0\n * @param {Array.} p1\n * @param {Array.} p2\n * @return {Number}\n */\nexport default function signedArea(p0, p1, p2) {\n return (p0[0] - p2[0]) * (p1[1] - p2[1]) - (p1[0] - p2[0]) * (p0[1] - p2[1]);\n}\n","import signedArea from './signed_area';\n\n/**\n * @param {SweepEvent} e1\n * @param {SweepEvent} e2\n * @return {Number}\n */\nexport default function compareEvents(e1, e2) {\n const p1 = e1.point;\n const p2 = e2.point;\n\n // Different x-coordinate\n if (p1[0] > p2[0]) return 1;\n if (p1[0] < p2[0]) return -1;\n\n // Different points, but same x-coordinate\n // Event with lower y-coordinate is processed first\n if (p1[1] !== p2[1]) return p1[1] > p2[1] ? 1 : -1;\n\n return specialCases(e1, e2, p1, p2);\n}\n\n\n/* eslint-disable no-unused-vars */\nfunction specialCases(e1, e2, p1, p2) {\n // Same coordinates, but one is a left endpoint and the other is\n // a right endpoint. The right endpoint is processed first\n if (e1.left !== e2.left)\n return e1.left ? 1 : -1;\n\n // const p2 = e1.otherEvent.point, p3 = e2.otherEvent.point;\n // const sa = (p1[0] - p3[0]) * (p2[1] - p3[1]) - (p2[0] - p3[0]) * (p1[1] - p3[1])\n // Same coordinates, both events\n // are left endpoints or right endpoints.\n // not collinear\n if (signedArea(p1, e1.otherEvent.point, e2.otherEvent.point) !== 0) {\n // the event associate to the bottom segment is processed first\n return (!e1.isBelow(e2.otherEvent.point)) ? 1 : -1;\n }\n\n return (!e1.isSubject && e2.isSubject) ? 1 : -1;\n}\n/* eslint-enable no-unused-vars */\n","import SweepEvent from './sweep_event';\nimport equals from './equals';\nimport compareEvents from './compare_events';\n\n/**\n * @param {SweepEvent} se\n * @param {Array.} p\n * @param {Queue} queue\n * @return {Queue}\n */\nexport default function divideSegment(se, p, queue) {\n const r = new SweepEvent(p, false, se, se.isSubject);\n const l = new SweepEvent(p, true, se.otherEvent, se.isSubject);\n\n /* eslint-disable no-console */\n if (equals(se.point, se.otherEvent.point)) {\n\n console.warn('what is that, a collapsed segment?', se);\n }\n /* eslint-enable no-console */\n\n r.contourId = l.contourId = se.contourId;\n\n // avoid a rounding error. The left event would be processed after the right event\n if (compareEvents(l, se.otherEvent) > 0) {\n se.otherEvent.left = true;\n l.left = false;\n }\n\n // avoid a rounding error. The left event would be processed after the right event\n // if (compareEvents(se, r) > 0) {}\n\n se.otherEvent.otherEvent = l;\n se.otherEvent = r;\n\n queue.push(l);\n queue.push(r);\n\n return queue;\n}\n","//const EPS = 1e-9;\n\n/**\n * Finds the magnitude of the cross product of two vectors (if we pretend\n * they're in three dimensions)\n *\n * @param {Object} a First vector\n * @param {Object} b Second vector\n * @private\n * @returns {Number} The magnitude of the cross product\n */\nfunction crossProduct(a, b) {\n return (a[0] * b[1]) - (a[1] * b[0]);\n}\n\n/**\n * Finds the dot product of two vectors.\n *\n * @param {Object} a First vector\n * @param {Object} b Second vector\n * @private\n * @returns {Number} The dot product\n */\nfunction dotProduct(a, b) {\n return (a[0] * b[0]) + (a[1] * b[1]);\n}\n\n/**\n * Finds the intersection (if any) between two line segments a and b, given the\n * line segments' end points a1, a2 and b1, b2.\n *\n * This algorithm is based on Schneider and Eberly.\n * http://www.cimec.org.ar/~ncalvo/Schneider_Eberly.pdf\n * Page 244.\n *\n * @param {Array.} a1 point of first line\n * @param {Array.} a2 point of first line\n * @param {Array.} b1 point of second line\n * @param {Array.} b2 point of second line\n * @param {Boolean=} noEndpointTouch whether to skip single touchpoints\n * (meaning connected segments) as\n * intersections\n * @returns {Array.>|Null} If the lines intersect, the point of\n * intersection. If they overlap, the two end points of the overlapping segment.\n * Otherwise, null.\n */\nexport default function (a1, a2, b1, b2, noEndpointTouch) {\n // The algorithm expects our lines in the form P + sd, where P is a point,\n // s is on the interval [0, 1], and d is a vector.\n // We are passed two points. P can be the first point of each pair. The\n // vector, then, could be thought of as the distance (in x and y components)\n // from the first point to the second point.\n // So first, let's make our vectors:\n const va = [a2[0] - a1[0], a2[1] - a1[1]];\n const vb = [b2[0] - b1[0], b2[1] - b1[1]];\n // We also define a function to convert back to regular point form:\n\n /* eslint-disable arrow-body-style */\n\n function toPoint(p, s, d) {\n return [\n p[0] + s * d[0],\n p[1] + s * d[1]\n ];\n }\n\n /* eslint-enable arrow-body-style */\n\n // The rest is pretty much a straight port of the algorithm.\n const e = [b1[0] - a1[0], b1[1] - a1[1]];\n let kross = crossProduct(va, vb);\n let sqrKross = kross * kross;\n const sqrLenA = dotProduct(va, va);\n //const sqrLenB = dotProduct(vb, vb);\n\n // Check for line intersection. This works because of the properties of the\n // cross product -- specifically, two vectors are parallel if and only if the\n // cross product is the 0 vector. The full calculation involves relative error\n // to account for possible very small line segments. See Schneider & Eberly\n // for details.\n if (sqrKross > 0/* EPS * sqrLenB * sqLenA */) {\n // If they're not parallel, then (because these are line segments) they\n // still might not actually intersect. This code checks that the\n // intersection point of the lines is actually on both line segments.\n const s = crossProduct(e, vb) / kross;\n if (s < 0 || s > 1) {\n // not on line segment a\n return null;\n }\n const t = crossProduct(e, va) / kross;\n if (t < 0 || t > 1) {\n // not on line segment b\n return null;\n }\n if (s === 0 || s === 1) {\n // on an endpoint of line segment a\n return noEndpointTouch ? null : [toPoint(a1, s, va)];\n }\n if (t === 0 || t === 1) {\n // on an endpoint of line segment b\n return noEndpointTouch ? null : [toPoint(b1, t, vb)];\n }\n return [toPoint(a1, s, va)];\n }\n\n // If we've reached this point, then the lines are either parallel or the\n // same, but the segments could overlap partially or fully, or not at all.\n // So we need to find the overlap, if any. To do that, we can use e, which is\n // the (vector) difference between the two initial points. If this is parallel\n // with the line itself, then the two lines are the same line, and there will\n // be overlap.\n //const sqrLenE = dotProduct(e, e);\n kross = crossProduct(e, va);\n sqrKross = kross * kross;\n\n if (sqrKross > 0 /* EPS * sqLenB * sqLenE */) {\n // Lines are just parallel, not the same. No overlap.\n return null;\n }\n\n const sa = dotProduct(va, e) / sqrLenA;\n const sb = sa + dotProduct(va, vb) / sqrLenA;\n const smin = Math.min(sa, sb);\n const smax = Math.max(sa, sb);\n\n // this is, essentially, the FindIntersection acting on floats from\n // Schneider & Eberly, just inlined into this function.\n if (smin <= 1 && smax >= 0) {\n\n // overlap on an end point\n if (smin === 1) {\n return noEndpointTouch ? null : [toPoint(a1, smin > 0 ? smin : 0, va)];\n }\n\n if (smax === 0) {\n return noEndpointTouch ? null : [toPoint(a1, smax < 1 ? smax : 1, va)];\n }\n\n if (noEndpointTouch && smin === 0 && smax === 1) return null;\n\n // There's overlap on a segment -- two points of intersection. Return both.\n return [\n toPoint(a1, smin > 0 ? smin : 0, va),\n toPoint(a1, smax < 1 ? smax : 1, va)\n ];\n }\n\n return null;\n}\n","import divideSegment from './divide_segment';\nimport intersection from './segment_intersection';\nimport equals from './equals';\nimport compareEvents from './compare_events';\nimport {\n NON_CONTRIBUTING,\n SAME_TRANSITION,\n DIFFERENT_TRANSITION\n} from './edge_type';\n\n/**\n * @param {SweepEvent} se1\n * @param {SweepEvent} se2\n * @param {Queue} queue\n * @return {Number}\n */\nexport default function possibleIntersection (se1, se2, queue) {\n // that disallows self-intersecting polygons,\n // did cost us half a day, so I'll leave it\n // out of respect\n // if (se1.isSubject === se2.isSubject) return;\n const inter = intersection(\n se1.point, se1.otherEvent.point,\n se2.point, se2.otherEvent.point\n );\n\n const nintersections = inter ? inter.length : 0;\n if (nintersections === 0) return 0; // no intersection\n\n // the line segments intersect at an endpoint of both line segments\n if ((nintersections === 1) &&\n (equals(se1.point, se2.point) ||\n equals(se1.otherEvent.point, se2.otherEvent.point))) {\n return 0;\n }\n\n if (nintersections === 2 && se1.isSubject === se2.isSubject) {\n // if(se1.contourId === se2.contourId){\n // console.warn('Edges of the same polygon overlap',\n // se1.point, se1.otherEvent.point, se2.point, se2.otherEvent.point);\n // }\n //throw new Error('Edges of the same polygon overlap');\n return 0;\n }\n\n // The line segments associated to se1 and se2 intersect\n if (nintersections === 1) {\n\n // if the intersection point is not an endpoint of se1\n if (!equals(se1.point, inter[0]) && !equals(se1.otherEvent.point, inter[0])) {\n divideSegment(se1, inter[0], queue);\n }\n\n // if the intersection point is not an endpoint of se2\n if (!equals(se2.point, inter[0]) && !equals(se2.otherEvent.point, inter[0])) {\n divideSegment(se2, inter[0], queue);\n }\n return 1;\n }\n\n // The line segments associated to se1 and se2 overlap\n const events = [];\n let leftCoincide = false;\n let rightCoincide = false;\n\n if (equals(se1.point, se2.point)) {\n leftCoincide = true; // linked\n } else if (compareEvents(se1, se2) === 1) {\n events.push(se2, se1);\n } else {\n events.push(se1, se2);\n }\n\n if (equals(se1.otherEvent.point, se2.otherEvent.point)) {\n rightCoincide = true;\n } else if (compareEvents(se1.otherEvent, se2.otherEvent) === 1) {\n events.push(se2.otherEvent, se1.otherEvent);\n } else {\n events.push(se1.otherEvent, se2.otherEvent);\n }\n\n if ((leftCoincide && rightCoincide) || leftCoincide) {\n // both line segments are equal or share the left endpoint\n se2.type = NON_CONTRIBUTING;\n se1.type = (se2.inOut === se1.inOut)\n ? SAME_TRANSITION : DIFFERENT_TRANSITION;\n\n if (leftCoincide && !rightCoincide) {\n // honestly no idea, but changing events selection from [2, 1]\n // to [0, 1] fixes the overlapping self-intersecting polygons issue\n divideSegment(events[1].otherEvent, events[0].point, queue);\n }\n return 2;\n }\n\n // the line segments share the right endpoint\n if (rightCoincide) {\n divideSegment(events[0], events[1].point, queue);\n return 3;\n }\n\n // no line segment includes totally the other one\n if (events[0] !== events[3].otherEvent) {\n divideSegment(events[0], events[1].point, queue);\n divideSegment(events[1], events[2].point, queue);\n return 3;\n }\n\n // one line segment includes the other one\n divideSegment(events[0], events[1].point, queue);\n divideSegment(events[3].otherEvent, events[2].point, queue);\n\n return 3;\n}\n","import signedArea from './signed_area';\nimport compareEvents from './compare_events';\nimport equals from './equals';\n\n\n/**\n * @param {SweepEvent} le1\n * @param {SweepEvent} le2\n * @return {Number}\n */\nexport default function compareSegments(le1, le2) {\n if (le1 === le2) return 0;\n\n // Segments are not collinear\n if (signedArea(le1.point, le1.otherEvent.point, le2.point) !== 0 ||\n signedArea(le1.point, le1.otherEvent.point, le2.otherEvent.point) !== 0) {\n\n // If they share their left endpoint use the right endpoint to sort\n if (equals(le1.point, le2.point)) return le1.isBelow(le2.otherEvent.point) ? -1 : 1;\n\n // Different left endpoint: use the left endpoint to sort\n if (le1.point[0] === le2.point[0]) return le1.point[1] < le2.point[1] ? -1 : 1;\n\n // has the line segment associated to e1 been inserted\n // into S after the line segment associated to e2 ?\n if (compareEvents(le1, le2) === 1) return le2.isAbove(le1.point) ? -1 : 1;\n\n // The line segment associated to e2 has been inserted\n // into S after the line segment associated to e1\n return le1.isBelow(le2.point) ? -1 : 1;\n }\n\n if (le1.isSubject === le2.isSubject) { // same polygon\n let p1 = le1.point, p2 = le2.point;\n if (p1[0] === p2[0] && p1[1] === p2[1]/*equals(le1.point, le2.point)*/) {\n p1 = le1.otherEvent.point; p2 = le2.otherEvent.point;\n if (p1[0] === p2[0] && p1[1] === p2[1]) return 0;\n else return le1.contourId > le2.contourId ? 1 : -1;\n }\n } else { // Segments are collinear, but belong to separate polygons\n return le1.isSubject ? -1 : 1;\n }\n\n return compareEvents(le1, le2) === 1 ? 1 : -1;\n}\n","import Tree from 'splaytree';\nimport computeFields from './compute_fields';\nimport possibleIntersection from './possible_intersection';\nimport compareSegments from './compare_segments';\nimport {\n INTERSECTION,\n DIFFERENCE\n} from './operation';\n\n\nexport default function subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation) {\n const sweepLine = new Tree(compareSegments);\n const sortedEvents = [];\n\n const rightbound = Math.min(sbbox[2], cbbox[2]);\n\n let prev, next, begin;\n\n while (eventQueue.length !== 0) {\n let event = eventQueue.pop();\n sortedEvents.push(event);\n\n // optimization by bboxes for intersection and difference goes here\n if ((operation === INTERSECTION && event.point[0] > rightbound) ||\n (operation === DIFFERENCE && event.point[0] > sbbox[2])) {\n break;\n }\n\n if (event.left) {\n next = prev = sweepLine.insert(event);\n begin = sweepLine.minNode();\n\n if (prev !== begin) prev = sweepLine.prev(prev);\n else prev = null;\n\n next = sweepLine.next(next);\n\n const prevEvent = prev ? prev.key : null;\n let prevprevEvent;\n computeFields(event, prevEvent, operation);\n if (next) {\n if (possibleIntersection(event, next.key, eventQueue) === 2) {\n computeFields(event, prevEvent, operation);\n computeFields(event, next.key, operation);\n }\n }\n\n if (prev) {\n if (possibleIntersection(prev.key, event, eventQueue) === 2) {\n let prevprev = prev;\n if (prevprev !== begin) prevprev = sweepLine.prev(prevprev);\n else prevprev = null;\n\n prevprevEvent = prevprev ? prevprev.key : null;\n computeFields(prevEvent, prevprevEvent, operation);\n computeFields(event, prevEvent, operation);\n }\n }\n } else {\n event = event.otherEvent;\n next = prev = sweepLine.find(event);\n\n if (prev && next) {\n\n if (prev !== begin) prev = sweepLine.prev(prev);\n else prev = null;\n\n next = sweepLine.next(next);\n sweepLine.remove(event);\n\n if (next && prev) {\n possibleIntersection(prev.key, next.key, eventQueue);\n }\n }\n }\n }\n return sortedEvents;\n}\n","import compareEvents from './compare_events';\nimport { DIFFERENCE } from './operation';\n\n/**\n * @param {Array.} sortedEvents\n * @return {Array.}\n */\nfunction orderEvents(sortedEvents) {\n let event, i, len, tmp;\n const resultEvents = [];\n for (i = 0, len = sortedEvents.length; i < len; i++) {\n event = sortedEvents[i];\n if ((event.left && event.inResult) ||\n (!event.left && event.otherEvent.inResult)) {\n resultEvents.push(event);\n }\n }\n // Due to overlapping edges the resultEvents array can be not wholly sorted\n let sorted = false;\n while (!sorted) {\n sorted = true;\n for (i = 0, len = resultEvents.length; i < len; i++) {\n if ((i + 1) < len &&\n compareEvents(resultEvents[i], resultEvents[i + 1]) === 1) {\n tmp = resultEvents[i];\n resultEvents[i] = resultEvents[i + 1];\n resultEvents[i + 1] = tmp;\n sorted = false;\n }\n }\n }\n\n\n for (i = 0, len = resultEvents.length; i < len; i++) {\n event = resultEvents[i];\n event.pos = i;\n }\n\n // imagine, the right event is found in the beginning of the queue,\n // when his left counterpart is not marked yet\n for (i = 0, len = resultEvents.length; i < len; i++) {\n event = resultEvents[i];\n if (!event.left) {\n tmp = event.pos;\n event.pos = event.otherEvent.pos;\n event.otherEvent.pos = tmp;\n }\n }\n\n return resultEvents;\n}\n\n\n/**\n * @param {Number} pos\n * @param {Array.} resultEvents\n * @param {Object>} processed\n * @return {Number}\n */\nfunction nextPos(pos, resultEvents, processed, origIndex) {\n let newPos = pos + 1;\n const length = resultEvents.length;\n if (newPos > length - 1) return pos - 1;\n let p = resultEvents[pos].point;\n let p1 = resultEvents[newPos].point;\n\n\n // while in range and not the current one by value\n while (newPos < length && p1[0] === p[0] && p1[1] === p[1]) {\n if (!processed[newPos]) {\n return newPos;\n } else {\n newPos++;\n }\n p1 = resultEvents[newPos].point;\n }\n\n newPos = pos - 1;\n\n while (processed[newPos] && newPos >= origIndex) {\n newPos--;\n }\n return newPos;\n}\n\n\n/**\n * @param {Array.} sortedEvents\n * @return {Array.<*>} polygons\n */\nexport default function connectEdges(sortedEvents, operation) {\n let i, len;\n const resultEvents = orderEvents(sortedEvents);\n\n // \"false\"-filled array\n const processed = {};\n const result = [];\n let event;\n\n for (i = 0, len = resultEvents.length; i < len; i++) {\n if (processed[i]) continue;\n const contour = [[]];\n\n if (!resultEvents[i].isExteriorRing) {\n if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length === 0) {\n result.push(contour);\n } else if (result.length === 0) {\n result.push([[contour]]);\n } else {\n result[result.length - 1].push(contour[0]);\n }\n } else if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length > 1) {\n result[result.length - 1].push(contour[0]);\n } else {\n result.push(contour);\n }\n\n const ringId = result.length - 1;\n let pos = i;\n\n const initial = resultEvents[i].point;\n contour[0].push(initial);\n\n while (pos >= i) {\n event = resultEvents[pos];\n processed[pos] = true;\n\n if (event.left) {\n event.resultInOut = false;\n event.contourId = ringId;\n } else {\n event.otherEvent.resultInOut = true;\n event.otherEvent.contourId = ringId;\n }\n\n pos = event.pos;\n processed[pos] = true;\n contour[0].push(resultEvents[pos].point);\n pos = nextPos(pos, resultEvents, processed, i);\n }\n\n pos = pos === -1 ? i : pos;\n\n event = resultEvents[pos];\n processed[pos] = processed[event.pos] = true;\n event.otherEvent.resultInOut = true;\n event.otherEvent.contourId = ringId;\n }\n\n // Handle if the result is a polygon (eg not multipoly)\n // Commented it again, let's see what do we mean by that\n // if (result.length === 1) result = result[0];\n return result;\n}\n","'use strict';\n\nmodule.exports = TinyQueue;\nmodule.exports.default = TinyQueue;\n\nfunction TinyQueue(data, compare) {\n if (!(this instanceof TinyQueue)) return new TinyQueue(data, compare);\n\n this.data = data || [];\n this.length = this.data.length;\n this.compare = compare || defaultCompare;\n\n if (this.length > 0) {\n for (var i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nTinyQueue.prototype = {\n\n push: function (item) {\n this.data.push(item);\n this.length++;\n this._up(this.length - 1);\n },\n\n pop: function () {\n if (this.length === 0) return undefined;\n\n var top = this.data[0];\n this.length--;\n\n if (this.length > 0) {\n this.data[0] = this.data[this.length];\n this._down(0);\n }\n this.data.pop();\n\n return top;\n },\n\n peek: function () {\n return this.data[0];\n },\n\n _up: function (pos) {\n var data = this.data;\n var compare = this.compare;\n var item = data[pos];\n\n while (pos > 0) {\n var parent = (pos - 1) >> 1;\n var current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n },\n\n _down: function (pos) {\n var data = this.data;\n var compare = this.compare;\n var halfLength = this.length >> 1;\n var item = data[pos];\n\n while (pos < halfLength) {\n var left = (pos << 1) + 1;\n var right = left + 1;\n var best = data[left];\n\n if (right < this.length && compare(data[right], best) < 0) {\n left = right;\n best = data[right];\n }\n if (compare(best, item) >= 0) break;\n\n data[pos] = best;\n pos = left;\n }\n\n data[pos] = item;\n }\n};\n","import Queue from 'tinyqueue';\nimport SweepEvent from './sweep_event';\nimport compareEvents from './compare_events';\nimport { DIFFERENCE } from './operation';\n\nconst max = Math.max;\nconst min = Math.min;\n\nlet contourId = 0;\n\n\nfunction processPolygon(contourOrHole, isSubject, depth, Q, bbox, isExteriorRing) {\n let i, len, s1, s2, e1, e2;\n for (i = 0, len = contourOrHole.length - 1; i < len; i++) {\n s1 = contourOrHole[i];\n s2 = contourOrHole[i + 1];\n e1 = new SweepEvent(s1, false, undefined, isSubject);\n e2 = new SweepEvent(s2, false, e1, isSubject);\n e1.otherEvent = e2;\n\n if (s1[0] === s2[0] && s1[1] === s2[1]) {\n continue; // skip collapsed edges, or it breaks\n }\n\n e1.contourId = e2.contourId = depth;\n if (!isExteriorRing) {\n e1.isExteriorRing = false;\n e2.isExteriorRing = false;\n }\n if (compareEvents(e1, e2) > 0) {\n e2.left = true;\n } else {\n e1.left = true;\n }\n\n const x = s1[0], y = s1[1];\n bbox[0] = min(bbox[0], x);\n bbox[1] = min(bbox[1], y);\n bbox[2] = max(bbox[2], x);\n bbox[3] = max(bbox[3], y);\n\n // Pushing it so the queue is sorted from left to right,\n // with object on the left having the highest priority.\n Q.push(e1);\n Q.push(e2);\n }\n}\n\n\nexport default function fillQueue(subject, clipping, sbbox, cbbox, operation) {\n const eventQueue = new Queue(null, compareEvents);\n let polygonSet, isExteriorRing, i, ii, j, jj; //, k, kk;\n\n for (i = 0, ii = subject.length; i < ii; i++) {\n polygonSet = subject[i];\n for (j = 0, jj = polygonSet.length; j < jj; j++) {\n isExteriorRing = j === 0;\n if (isExteriorRing) contourId++;\n processPolygon(polygonSet[j], true, contourId, eventQueue, sbbox, isExteriorRing);\n }\n }\n\n for (i = 0, ii = clipping.length; i < ii; i++) {\n polygonSet = clipping[i];\n for (j = 0, jj = polygonSet.length; j < jj; j++) {\n isExteriorRing = j === 0;\n if (operation === DIFFERENCE) isExteriorRing = false;\n if (isExteriorRing) contourId++;\n processPolygon(polygonSet[j], false, contourId, eventQueue, cbbox, isExteriorRing);\n }\n }\n\n return eventQueue;\n}\n","import subdivideSegments from './subdivide_segments';\nimport connectEdges from './connect_edges';\nimport fillQueue from './fill_queue';\nimport {\n INTERSECTION,\n DIFFERENCE,\n UNION,\n XOR\n} from './operation';\n\nconst EMPTY = [];\n\n\nfunction trivialOperation(subject, clipping, operation) {\n let result = null;\n if (subject.length * clipping.length === 0) {\n if (operation === INTERSECTION) {\n result = EMPTY;\n } else if (operation === DIFFERENCE) {\n result = subject;\n } else if (operation === UNION ||\n operation === XOR) {\n result = (subject.length === 0) ? clipping : subject;\n }\n }\n return result;\n}\n\n\nfunction compareBBoxes(subject, clipping, sbbox, cbbox, operation) {\n let result = null;\n if (sbbox[0] > cbbox[2] ||\n cbbox[0] > sbbox[2] ||\n sbbox[1] > cbbox[3] ||\n cbbox[1] > sbbox[3]) {\n if (operation === INTERSECTION) {\n result = EMPTY;\n } else if (operation === DIFFERENCE) {\n result = subject;\n } else if (operation === UNION ||\n operation === XOR) {\n result = subject.concat(clipping);\n }\n }\n return result;\n}\n\n\nexport default function boolean(subject, clipping, operation) {\n if (typeof subject[0][0][0] === 'number') {\n subject = [subject];\n }\n if (typeof clipping[0][0][0] === 'number') {\n clipping = [clipping];\n }\n let trivial = trivialOperation(subject, clipping, operation);\n if (trivial) {\n return trivial === EMPTY ? null : trivial;\n }\n const sbbox = [Infinity, Infinity, -Infinity, -Infinity];\n const cbbox = [Infinity, Infinity, -Infinity, -Infinity];\n\n //console.time('fill queue');\n const eventQueue = fillQueue(subject, clipping, sbbox, cbbox, operation);\n //console.timeEnd('fill queue');\n\n trivial = compareBBoxes(subject, clipping, sbbox, cbbox, operation);\n if (trivial) {\n return trivial === EMPTY ? null : trivial;\n }\n //console.time('subdivide edges');\n const sortedEvents = subdivideSegments(eventQueue, subject, clipping, sbbox, cbbox, operation);\n //console.timeEnd('subdivide edges');\n\n //console.time('connect vertices');\n const result = connectEdges(sortedEvents, operation);\n //console.timeEnd('connect vertices');\n return result;\n}\n","import boolean from './src/';\nimport {\n INTERSECTION,\n DIFFERENCE,\n UNION,\n XOR\n} from './src/operation';\n\nexport function union (subject, clipping) {\n return boolean(subject, clipping, UNION);\n}\n\nexport function diff (subject, clipping) {\n return boolean(subject, clipping, DIFFERENCE);\n}\n\nexport function xor (subject, clipping){\n return boolean(subject, clipping, XOR);\n}\n\nexport function intersection (subject, clipping) {\n return boolean(subject, clipping, INTERSECTION);\n}\n\n/**\n * @enum {Number}\n */\nexport const operations = { UNION, DIFFERENCE, INTERSECTION, XOR };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar meta_1 = require(\"@turf/meta\");\n// Note: change RADIUS => earthRadius\nvar RADIUS = 6378137;\n/**\n * Takes one or more features and returns their area in square meters.\n *\n * @name area\n * @param {GeoJSON} geojson input GeoJSON feature(s)\n * @returns {number} area in square meters\n * @example\n * var polygon = turf.polygon([[[125, -15], [113, -22], [154, -27], [144, -15], [125, -15]]]);\n *\n * var area = turf.area(polygon);\n *\n * //addToMap\n * var addToMap = [polygon]\n * polygon.properties.area = area\n */\nfunction area(geojson) {\n return meta_1.geomReduce(geojson, function (value, geom) {\n return value + calculateArea(geom);\n }, 0);\n}\nexports.default = area;\n/**\n * Calculate Area\n *\n * @private\n * @param {Geometry} geom GeoJSON Geometries\n * @returns {number} area\n */\nfunction calculateArea(geom) {\n var total = 0;\n var i;\n switch (geom.type) {\n case \"Polygon\":\n return polygonArea(geom.coordinates);\n case \"MultiPolygon\":\n for (i = 0; i < geom.coordinates.length; i++) {\n total += polygonArea(geom.coordinates[i]);\n }\n return total;\n case \"Point\":\n case \"MultiPoint\":\n case \"LineString\":\n case \"MultiLineString\":\n return 0;\n }\n return 0;\n}\nfunction polygonArea(coords) {\n var total = 0;\n if (coords && coords.length > 0) {\n total += Math.abs(ringArea(coords[0]));\n for (var i = 1; i < coords.length; i++) {\n total -= Math.abs(ringArea(coords[i]));\n }\n }\n return total;\n}\n/**\n * @private\n * Calculate the approximate area of the polygon were it projected onto the earth.\n * Note that this area will be positive if ring is oriented clockwise, otherwise it will be negative.\n *\n * Reference:\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for Polygons on a Sphere\",\n * JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007 http://trs-new.jpl.nasa.gov/dspace/handle/2014/40409\n *\n * @param {Array>} coords Ring Coordinates\n * @returns {number} The approximate signed geodesic area of the polygon in square meters.\n */\nfunction ringArea(coords) {\n var p1;\n var p2;\n var p3;\n var lowerIndex;\n var middleIndex;\n var upperIndex;\n var i;\n var total = 0;\n var coordsLength = coords.length;\n if (coordsLength > 2) {\n for (i = 0; i < coordsLength; i++) {\n if (i === coordsLength - 2) {\n lowerIndex = coordsLength - 2;\n middleIndex = coordsLength - 1;\n upperIndex = 0;\n }\n else if (i === coordsLength - 1) {\n lowerIndex = coordsLength - 1;\n middleIndex = 0;\n upperIndex = 1;\n }\n else {\n lowerIndex = i;\n middleIndex = i + 1;\n upperIndex = i + 2;\n }\n p1 = coords[lowerIndex];\n p2 = coords[middleIndex];\n p3 = coords[upperIndex];\n total += (rad(p3[0]) - rad(p1[0])) * Math.sin(rad(p2[1]));\n }\n total = total * RADIUS * RADIUS / 2;\n }\n return total;\n}\nfunction rad(num) {\n return num * Math.PI / 180;\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar helpers_1 = require(\"@turf/helpers\");\r\n/**\r\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\r\n *\r\n * @name getCoord\r\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\r\n * @returns {Array} coordinates\r\n * @example\r\n * var pt = turf.point([10, 10]);\r\n *\r\n * var coord = turf.getCoord(pt);\r\n * //= [10, 10]\r\n */\r\nfunction getCoord(coord) {\r\n if (!coord) {\r\n throw new Error(\"coord is required\");\r\n }\r\n if (!Array.isArray(coord)) {\r\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") {\r\n return coord.geometry.coordinates;\r\n }\r\n if (coord.type === \"Point\") {\r\n return coord.coordinates;\r\n }\r\n }\r\n if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) {\r\n return coord;\r\n }\r\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\r\n}\r\nexports.getCoord = getCoord;\r\n/**\r\n * Unwrap coordinates from a Feature, Geometry Object or an Array\r\n *\r\n * @name getCoords\r\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\r\n * @returns {Array} coordinates\r\n * @example\r\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\r\n *\r\n * var coords = turf.getCoords(poly);\r\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\r\n */\r\nfunction getCoords(coords) {\r\n if (Array.isArray(coords)) {\r\n return coords;\r\n }\r\n // Feature\r\n if (coords.type === \"Feature\") {\r\n if (coords.geometry !== null) {\r\n return coords.geometry.coordinates;\r\n }\r\n }\r\n else {\r\n // Geometry\r\n if (coords.coordinates) {\r\n return coords.coordinates;\r\n }\r\n }\r\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\r\n}\r\nexports.getCoords = getCoords;\r\n/**\r\n * Checks if coordinates contains a number\r\n *\r\n * @name containsNumber\r\n * @param {Array} coordinates GeoJSON Coordinates\r\n * @returns {boolean} true if Array contains a number\r\n */\r\nfunction containsNumber(coordinates) {\r\n if (coordinates.length > 1 && helpers_1.isNumber(coordinates[0]) && helpers_1.isNumber(coordinates[1])) {\r\n return true;\r\n }\r\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\r\n return containsNumber(coordinates[0]);\r\n }\r\n throw new Error(\"coordinates must only contain numbers\");\r\n}\r\nexports.containsNumber = containsNumber;\r\n/**\r\n * Enforce expectations about types of GeoJSON objects for Turf.\r\n *\r\n * @name geojsonType\r\n * @param {GeoJSON} value any GeoJSON object\r\n * @param {string} type expected GeoJSON type\r\n * @param {string} name name of calling function\r\n * @throws {Error} if value is not the expected type.\r\n */\r\nfunction geojsonType(value, type, name) {\r\n if (!type || !name) {\r\n throw new Error(\"type and name required\");\r\n }\r\n if (!value || value.type !== type) {\r\n throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type);\r\n }\r\n}\r\nexports.geojsonType = geojsonType;\r\n/**\r\n * Enforce expectations about types of {@link Feature} inputs for Turf.\r\n * Internally this uses {@link geojsonType} to judge geometry types.\r\n *\r\n * @name featureOf\r\n * @param {Feature} feature a feature with an expected geometry type\r\n * @param {string} type expected GeoJSON type\r\n * @param {string} name name of calling function\r\n * @throws {Error} error if value is not the expected type.\r\n */\r\nfunction featureOf(feature, type, name) {\r\n if (!feature) {\r\n throw new Error(\"No feature passed\");\r\n }\r\n if (!name) {\r\n throw new Error(\".featureOf() requires a name\");\r\n }\r\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\r\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\r\n }\r\n if (!feature.geometry || feature.geometry.type !== type) {\r\n throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\r\n }\r\n}\r\nexports.featureOf = featureOf;\r\n/**\r\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\r\n * Internally this uses {@link geojsonType} to judge geometry types.\r\n *\r\n * @name collectionOf\r\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\r\n * @param {string} type expected GeoJSON type\r\n * @param {string} name name of calling function\r\n * @throws {Error} if value is not the expected type.\r\n */\r\nfunction collectionOf(featureCollection, type, name) {\r\n if (!featureCollection) {\r\n throw new Error(\"No featureCollection passed\");\r\n }\r\n if (!name) {\r\n throw new Error(\".collectionOf() requires a name\");\r\n }\r\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\r\n throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\r\n }\r\n for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\r\n var feature = _a[_i];\r\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\r\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\r\n }\r\n if (!feature.geometry || feature.geometry.type !== type) {\r\n throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\r\n }\r\n }\r\n}\r\nexports.collectionOf = collectionOf;\r\n/**\r\n * Get Geometry from Feature or Geometry Object\r\n *\r\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\r\n * @returns {Geometry|null} GeoJSON Geometry Object\r\n * @throws {Error} if geojson is not a Feature or Geometry Object\r\n * @example\r\n * var point = {\r\n * \"type\": \"Feature\",\r\n * \"properties\": {},\r\n * \"geometry\": {\r\n * \"type\": \"Point\",\r\n * \"coordinates\": [110, 40]\r\n * }\r\n * }\r\n * var geom = turf.getGeom(point)\r\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\r\n */\r\nfunction getGeom(geojson) {\r\n if (geojson.type === \"Feature\") {\r\n return geojson.geometry;\r\n }\r\n return geojson;\r\n}\r\nexports.getGeom = getGeom;\r\n/**\r\n * Get GeoJSON object's type, Geometry type is prioritize.\r\n *\r\n * @param {GeoJSON} geojson GeoJSON object\r\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\r\n * @returns {string} GeoJSON type\r\n * @example\r\n * var point = {\r\n * \"type\": \"Feature\",\r\n * \"properties\": {},\r\n * \"geometry\": {\r\n * \"type\": \"Point\",\r\n * \"coordinates\": [110, 40]\r\n * }\r\n * }\r\n * var geom = turf.getType(point)\r\n * //=\"Point\"\r\n */\r\nfunction getType(geojson, name) {\r\n if (geojson.type === \"FeatureCollection\") {\r\n return \"FeatureCollection\";\r\n }\r\n if (geojson.type === \"GeometryCollection\") {\r\n return \"GeometryCollection\";\r\n }\r\n if (geojson.type === \"Feature\" && geojson.geometry !== null) {\r\n return geojson.geometry.type;\r\n }\r\n return geojson.type;\r\n}\r\nexports.getType = getType;\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = require(\"@turf/invariant\");\nvar helpers_1 = require(\"@turf/helpers\");\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Calculates the distance between two {@link Point|points} in degrees, radians, miles, or kilometers.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name distance\n * @param {Coord} from origin point\n * @param {Coord} to destination point\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.distance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */\nfunction distance(from, to, options) {\n if (options === void 0) { options = {}; }\n var coordinates1 = invariant_1.getCoord(from);\n var coordinates2 = invariant_1.getCoord(to);\n var dLat = helpers_1.degreesToRadians((coordinates2[1] - coordinates1[1]));\n var dLon = helpers_1.degreesToRadians((coordinates2[0] - coordinates1[0]));\n var lat1 = helpers_1.degreesToRadians(coordinates1[1]);\n var lat2 = helpers_1.degreesToRadians(coordinates2[1]);\n var a = Math.pow(Math.sin(dLat / 2), 2) +\n Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n return helpers_1.radiansToLength(2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)), options.units);\n}\nexports.default = distance;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Feature = /*#__PURE__*/function () {\n // geo json coordinates\n function Feature(geoJson, style) {\n var original = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var metadata = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, Feature);\n\n _defineProperty(this, \"geoJson\", void 0);\n\n _defineProperty(this, \"style\", void 0);\n\n _defineProperty(this, \"original\", void 0);\n\n _defineProperty(this, \"metadata\", void 0);\n\n this.geoJson = geoJson;\n this.style = style;\n this.original = original;\n this.metadata = metadata;\n }\n\n _createClass(Feature, [{\n key: \"getCoords\",\n value: function getCoords() {\n // @ts-ignore\n return this.geoJson.geometry.coordinates;\n }\n }]);\n\n return Feature;\n}();\n\nexports[\"default\"] = Feature;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZmVhdHVyZS50cyJdLCJuYW1lcyI6WyJGZWF0dXJlIiwiZ2VvSnNvbiIsInN0eWxlIiwib3JpZ2luYWwiLCJtZXRhZGF0YSIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztJQUlxQkEsTztBQUNuQjtBQU1BLG1CQUNFQyxPQURGLEVBRUVDLEtBRkYsRUFLRTtBQUFBLFFBRkFDLFFBRUEsdUVBRm1DLElBRW5DO0FBQUEsUUFEQUMsUUFDQSx1RUFEZ0MsRUFDaEM7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQ0EsU0FBS0gsT0FBTCxHQUFlQSxPQUFmO0FBQ0EsU0FBS0MsS0FBTCxHQUFhQSxLQUFiO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQkEsUUFBaEI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCQSxRQUFoQjtBQUNEOzs7O2dDQUVnQjtBQUNmO0FBQ0EsYUFBTyxLQUFLSCxPQUFMLENBQWFJLFFBQWIsQ0FBc0JDLFdBQTdCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZWF0dXJlIGFzIEdlb0pzb24sIEdlb21ldHJ5IH0gZnJvbSAnZ2VvanNvbic7XG5cbmltcG9ydCB7IFN0eWxlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGZWF0dXJlIHtcbiAgLy8gZ2VvIGpzb24gY29vcmRpbmF0ZXNcbiAgZ2VvSnNvbjogR2VvSnNvbjxHZW9tZXRyeT47XG4gIHN0eWxlOiBTdHlsZTtcbiAgb3JpZ2luYWw6IGFueSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGdlb0pzb246IEdlb0pzb248R2VvbWV0cnk+LFxuICAgIHN0eWxlOiBTdHlsZSxcbiAgICBvcmlnaW5hbDogYW55IHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGwsXG4gICAgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fVxuICApIHtcbiAgICB0aGlzLmdlb0pzb24gPSBnZW9Kc29uO1xuICAgIHRoaXMuc3R5bGUgPSBzdHlsZTtcbiAgICB0aGlzLm9yaWdpbmFsID0gb3JpZ2luYWw7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG1ldGFkYXRhO1xuICB9XG5cbiAgZ2V0Q29vcmRzKCk6IGFueSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiB0aGlzLmdlb0pzb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gIH1cbn1cbiJdfQ==","import { Feature as GeoJson, Geometry } from 'geojson';\n\nimport { Style } from '../types';\n\nexport default class Feature {\n // geo json coordinates\n geoJson: GeoJson;\n style: Style;\n original: any | null | undefined;\n metadata: Record;\n\n constructor(\n geoJson: GeoJson,\n style: Style,\n original: any | null | undefined = null,\n metadata: Record = {}\n ) {\n this.geoJson = geoJson;\n this.style = style;\n this.original = original;\n this.metadata = metadata;\n }\n\n getCoords(): any {\n // @ts-ignore\n return this.geoJson.geometry.coordinates;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar LayerMouseEvent = /*#__PURE__*/function () {\n // original item that this event is related to\n // internal nebula info about the object\n // the mouse [lng,lat] raycasted onto the ground\n // browser event\n // reference to nebula\n function LayerMouseEvent(nativeEvent, _ref) {\n var data = _ref.data,\n groundPoint = _ref.groundPoint,\n nebula = _ref.nebula,\n metadata = _ref.metadata;\n\n _classCallCheck(this, LayerMouseEvent);\n\n _defineProperty(this, \"canceled\", void 0);\n\n _defineProperty(this, \"data\", void 0);\n\n _defineProperty(this, \"metadata\", void 0);\n\n _defineProperty(this, \"groundPoint\", void 0);\n\n _defineProperty(this, \"nativeEvent\", void 0);\n\n _defineProperty(this, \"nebula\", void 0);\n\n this.nativeEvent = nativeEvent;\n this.data = data;\n this.groundPoint = groundPoint;\n this.nebula = nebula;\n this.metadata = metadata;\n }\n\n _createClass(LayerMouseEvent, [{\n key: \"stopPropagation\",\n value: function stopPropagation() {\n this.nativeEvent.stopPropagation();\n this.canceled = true;\n }\n }]);\n\n return LayerMouseEvent;\n}();\n\nexports[\"default\"] = LayerMouseEvent;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbGF5ZXItbW91c2UtZXZlbnQudHMiXSwibmFtZXMiOlsiTGF5ZXJNb3VzZUV2ZW50IiwibmF0aXZlRXZlbnQiLCJkYXRhIiwiZ3JvdW5kUG9pbnQiLCJuZWJ1bGEiLCJtZXRhZGF0YSIsInN0b3BQcm9wYWdhdGlvbiIsImNhbmNlbGVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7SUFFcUJBLGU7QUFFbkI7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUdBLDJCQUNFQyxXQURGLFFBR0U7QUFBQSxRQURFQyxJQUNGLFFBREVBLElBQ0Y7QUFBQSxRQURRQyxXQUNSLFFBRFFBLFdBQ1I7QUFBQSxRQURxQkMsTUFDckIsUUFEcUJBLE1BQ3JCO0FBQUEsUUFENkJDLFFBQzdCLFFBRDZCQSxRQUM3Qjs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFDQSxTQUFLSixXQUFMLEdBQW1CQSxXQUFuQjtBQUVBLFNBQUtDLElBQUwsR0FBWUEsSUFBWjtBQUNBLFNBQUtDLFdBQUwsR0FBbUJBLFdBQW5CO0FBQ0EsU0FBS0MsTUFBTCxHQUFjQSxNQUFkO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQkEsUUFBaEI7QUFDRDs7OztzQ0FFaUI7QUFDaEIsV0FBS0osV0FBTCxDQUFpQkssZUFBakI7QUFDQSxXQUFLQyxRQUFMLEdBQWdCLElBQWhCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3NpdGlvbiB9IGZyb20gJ2dlb2pzb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMYXllck1vdXNlRXZlbnQge1xuICBjYW5jZWxlZDogYm9vbGVhbjtcbiAgLy8gb3JpZ2luYWwgaXRlbSB0aGF0IHRoaXMgZXZlbnQgaXMgcmVsYXRlZCB0b1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvLyBpbnRlcm5hbCBuZWJ1bGEgaW5mbyBhYm91dCB0aGUgb2JqZWN0XG4gIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvLyB0aGUgbW91c2UgW2xuZyxsYXRdIHJheWNhc3RlZCBvbnRvIHRoZSBncm91bmRcbiAgZ3JvdW5kUG9pbnQ6IFBvc2l0aW9uO1xuICAvLyBicm93c2VyIGV2ZW50XG4gIG5hdGl2ZUV2ZW50OiBNb3VzZUV2ZW50O1xuICAvLyByZWZlcmVuY2UgdG8gbmVidWxhXG4gIG5lYnVsYTogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBuYXRpdmVFdmVudDogTW91c2VFdmVudCxcbiAgICB7IGRhdGEsIGdyb3VuZFBvaW50LCBuZWJ1bGEsIG1ldGFkYXRhIH06IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKSB7XG4gICAgdGhpcy5uYXRpdmVFdmVudCA9IG5hdGl2ZUV2ZW50O1xuXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLmdyb3VuZFBvaW50ID0gZ3JvdW5kUG9pbnQ7XG4gICAgdGhpcy5uZWJ1bGEgPSBuZWJ1bGE7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG1ldGFkYXRhO1xuICB9XG5cbiAgc3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHRoaXMubmF0aXZlRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5jYW5jZWxlZCA9IHRydWU7XG4gIH1cbn1cbiJdfQ==","import { Position } from 'geojson';\n\nexport default class LayerMouseEvent {\n canceled: boolean;\n // original item that this event is related to\n data: Record;\n // internal nebula info about the object\n metadata: Record;\n // the mouse [lng,lat] raycasted onto the ground\n groundPoint: Position;\n // browser event\n nativeEvent: MouseEvent;\n // reference to nebula\n nebula: Record;\n\n constructor(\n nativeEvent: MouseEvent,\n { data, groundPoint, nebula, metadata }: Record\n ) {\n this.nativeEvent = nativeEvent;\n\n this.data = data;\n this.groundPoint = groundPoint;\n this.nebula = nebula;\n this.metadata = metadata;\n }\n\n stopPropagation() {\n this.nativeEvent.stopPropagation();\n this.canceled = true;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _events = _interopRequireDefault(require(\"events\"));\n\nvar _uuid = require(\"uuid\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar NebulaLayer = /*#__PURE__*/function (_Event$EventEmitter) {\n _inherits(NebulaLayer, _Event$EventEmitter);\n\n var _super = _createSuper(NebulaLayer);\n\n // flags\n //\n function NebulaLayer(_ref) {\n var _this;\n\n var getData = _ref.getData,\n on = _ref.on,\n toNebulaFeature = _ref.toNebulaFeature;\n\n _classCallCheck(this, NebulaLayer);\n\n _this = _super.call(this);\n\n _defineProperty(_assertThisInitialized(_this), \"getData\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"toNebulaFeature\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"id\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"helperLayers\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"usesMapEvents\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"enablePicking\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"enableSelection\", false);\n\n _this.id = (0, _uuid.v4)();\n _this.getData = getData;\n _this.toNebulaFeature = toNebulaFeature;\n _this.helperLayers = [];\n\n if (on) {\n // @ts-ignore\n Object.keys(on).forEach(function (key) {\n return _this.on(key, on[key]);\n });\n }\n\n return _this;\n }\n\n _createClass(NebulaLayer, [{\n key: \"render\",\n value: function render(config) {\n return null;\n }\n }]);\n\n return NebulaLayer;\n}(_events[\"default\"].EventEmitter);\n\nexports[\"default\"] = NebulaLayer;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbmVidWxhLWxheWVyLnRzIl0sIm5hbWVzIjpbIk5lYnVsYUxheWVyIiwiZ2V0RGF0YSIsIm9uIiwidG9OZWJ1bGFGZWF0dXJlIiwiaWQiLCJoZWxwZXJMYXllcnMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImNvbmZpZyIsIkV2ZW50IiwiRXZlbnRFbWl0dGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFJcUJBLFc7Ozs7O0FBTW5CO0FBSUE7QUFFQSw2QkFBbUU7QUFBQTs7QUFBQSxRQUFyREMsT0FBcUQsUUFBckRBLE9BQXFEO0FBQUEsUUFBNUNDLEVBQTRDLFFBQTVDQSxFQUE0QztBQUFBLFFBQXhDQyxlQUF3QyxRQUF4Q0EsZUFBd0M7O0FBQUE7O0FBQ2pFOztBQURpRTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQSxvRUFMbkQsS0FLbUQ7O0FBQUEsb0VBSm5ELEtBSW1EOztBQUFBLHNFQUhqRCxLQUdpRDs7QUFFakUsVUFBS0MsRUFBTCxHQUFVLGVBQVY7QUFDQSxVQUFLSCxPQUFMLEdBQWVBLE9BQWY7QUFDQSxVQUFLRSxlQUFMLEdBQXVCQSxlQUF2QjtBQUNBLFVBQUtFLFlBQUwsR0FBb0IsRUFBcEI7O0FBRUEsUUFBSUgsRUFBSixFQUFRO0FBQ047QUFDQUksTUFBQUEsTUFBTSxDQUFDQyxJQUFQLENBQVlMLEVBQVosRUFBZ0JNLE9BQWhCLENBQXdCLFVBQUNDLEdBQUQ7QUFBQSxlQUFTLE1BQUtQLEVBQUwsQ0FBUU8sR0FBUixFQUFhUCxFQUFFLENBQUNPLEdBQUQsQ0FBZixDQUFUO0FBQUEsT0FBeEI7QUFDRDs7QUFWZ0U7QUFXbEU7Ozs7MkJBRU1DLE0sRUFBc0M7QUFDM0MsYUFBTyxJQUFQO0FBQ0Q7Ozs7RUEzQnNDQyxtQkFBTUMsWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFdmVudCBmcm9tICdldmVudHMnO1xuaW1wb3J0IHsgdjQgfSBmcm9tICd1dWlkJztcblxuaW1wb3J0IEZlYXR1cmUgZnJvbSAnLi9mZWF0dXJlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmVidWxhTGF5ZXIgZXh0ZW5kcyBFdmVudC5FdmVudEVtaXR0ZXIge1xuICBnZXREYXRhOiAoKSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+W107XG4gIHRvTmVidWxhRmVhdHVyZTogKGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IEZlYXR1cmU7XG4gIGlkOiBzdHJpbmc7XG4gIGhlbHBlckxheWVyczogUmVjb3JkPHN0cmluZywgYW55PltdO1xuXG4gIC8vIGZsYWdzXG4gIHVzZXNNYXBFdmVudHMgPSBmYWxzZTtcbiAgZW5hYmxlUGlja2luZyA9IGZhbHNlO1xuICBlbmFibGVTZWxlY3Rpb24gPSBmYWxzZTtcbiAgLy9cblxuICBjb25zdHJ1Y3Rvcih7IGdldERhdGEsIG9uLCB0b05lYnVsYUZlYXR1cmUgfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5pZCA9IHY0KCk7XG4gICAgdGhpcy5nZXREYXRhID0gZ2V0RGF0YTtcbiAgICB0aGlzLnRvTmVidWxhRmVhdHVyZSA9IHRvTmVidWxhRmVhdHVyZTtcbiAgICB0aGlzLmhlbHBlckxheWVycyA9IFtdO1xuXG4gICAgaWYgKG9uKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBPYmplY3Qua2V5cyhvbikuZm9yRWFjaCgoa2V5KSA9PiB0aGlzLm9uKGtleSwgb25ba2V5XSkpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcihjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4pOiB1bmtub3duIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19","import Event from 'events';\nimport { v4 } from 'uuid';\n\nimport Feature from './feature';\n\nexport default class NebulaLayer extends Event.EventEmitter {\n getData: () => Record[];\n toNebulaFeature: (data: Record) => Feature;\n id: string;\n helperLayers: Record[];\n\n // flags\n usesMapEvents = false;\n enablePicking = false;\n enableSelection = false;\n //\n\n constructor({ getData, on, toNebulaFeature }: Record) {\n super();\n this.id = v4();\n this.getData = getData;\n this.toNebulaFeature = toNebulaFeature;\n this.helperLayers = [];\n\n if (on) {\n // @ts-ignore\n Object.keys(on).forEach((key) => this.on(key, on[key]));\n }\n }\n\n render(config: Record): unknown {\n return null;\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","import rng from './rng.js';\nimport bytesToUuid from './bytesToUuid.js';\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof options == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nexport default v4;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\nvar getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\nvar rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\nexport default function rng() {\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n\n return getRandomValues(rnds8);\n}","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n}\n\nexport default bytesToUuid;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _layers = require(\"@nebula.gl/layers\");\n\nvar _nebulaLayer = _interopRequireDefault(require(\"../nebula-layer\"));\n\nvar _utils = require(\"../utils\");\n\nvar _deckCache = _interopRequireDefault(require(\"../deck-renderer/deck-cache\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar JunctionsLayer = /*#__PURE__*/function (_NebulaLayer) {\n _inherits(JunctionsLayer, _NebulaLayer);\n\n var _super = _createSuper(JunctionsLayer);\n\n function JunctionsLayer(config) {\n var _this;\n\n _classCallCheck(this, JunctionsLayer);\n\n _this = _super.call(this, config);\n\n _defineProperty(_assertThisInitialized(_this), \"deckCache\", void 0);\n\n _this.deckCache = new _deckCache[\"default\"](config.getData, function (data) {\n return config.toNebulaFeature(data);\n });\n _this.enablePicking = true;\n return _this;\n }\n\n _createClass(JunctionsLayer, [{\n key: \"render\",\n value: function render(_ref) {\n var nebula = _ref.nebula;\n var defaultColor = [0x0, 0x0, 0x0, 0xff];\n var _this$deckCache = this.deckCache,\n objects = _this$deckCache.objects,\n updateTrigger = _this$deckCache.updateTrigger;\n return new _layers.JunctionScatterplotLayer({\n id: \"junctions-\".concat(this.id),\n data: objects,\n opacity: 1,\n // @ts-ignore\n fp64: false,\n pickable: true,\n getPosition: function getPosition(nf) {\n return nf.geoJson.geometry.coordinates;\n },\n getFillColor: function getFillColor(nf) {\n return (0, _utils.toDeckColor)(nf.style.fillColor) || defaultColor;\n },\n getStrokeColor: function getStrokeColor(nf) {\n return (0, _utils.toDeckColor)(nf.style.outlineColor) || (0, _utils.toDeckColor)(nf.style.fillColor) || defaultColor;\n },\n getRadius: function getRadius(nf) {\n return nf.style.pointRadiusMeters + nf.style.outlineRadiusMeters || 1;\n },\n getInnerRadius: function getInnerRadius(nf) {\n return nf.style.pointRadiusMeters || 0.5;\n },\n parameters: {\n depthTest: false,\n blend: false\n },\n updateTriggers: {\n all: updateTrigger\n },\n nebulaLayer: this\n });\n }\n }]);\n\n return JunctionsLayer;\n}(_nebulaLayer[\"default\"]);\n\nexports[\"default\"] = JunctionsLayer;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbGF5ZXJzL2p1bmN0aW9ucy1sYXllci50cyJdLCJuYW1lcyI6WyJKdW5jdGlvbnNMYXllciIsImNvbmZpZyIsImRlY2tDYWNoZSIsIkRlY2tDYWNoZSIsImdldERhdGEiLCJkYXRhIiwidG9OZWJ1bGFGZWF0dXJlIiwiZW5hYmxlUGlja2luZyIsIm5lYnVsYSIsImRlZmF1bHRDb2xvciIsIm9iamVjdHMiLCJ1cGRhdGVUcmlnZ2VyIiwiSnVuY3Rpb25TY2F0dGVycGxvdExheWVyIiwiaWQiLCJvcGFjaXR5IiwiZnA2NCIsInBpY2thYmxlIiwiZ2V0UG9zaXRpb24iLCJuZiIsImdlb0pzb24iLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiZ2V0RmlsbENvbG9yIiwic3R5bGUiLCJmaWxsQ29sb3IiLCJnZXRTdHJva2VDb2xvciIsIm91dGxpbmVDb2xvciIsImdldFJhZGl1cyIsInBvaW50UmFkaXVzTWV0ZXJzIiwib3V0bGluZVJhZGl1c01ldGVycyIsImdldElubmVyUmFkaXVzIiwicGFyYW1ldGVycyIsImRlcHRoVGVzdCIsImJsZW5kIiwidXBkYXRlVHJpZ2dlcnMiLCJhbGwiLCJuZWJ1bGFMYXllciIsIk5lYnVsYUxheWVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFcUJBLGM7Ozs7O0FBR25CLDBCQUFZQyxNQUFaLEVBQXlDO0FBQUE7O0FBQUE7O0FBQ3ZDLDhCQUFNQSxNQUFOOztBQUR1Qzs7QUFFdkMsVUFBS0MsU0FBTCxHQUFpQixJQUFJQyxxQkFBSixDQUFjRixNQUFNLENBQUNHLE9BQXJCLEVBQThCLFVBQUNDLElBQUQ7QUFBQSxhQUFVSixNQUFNLENBQUNLLGVBQVAsQ0FBdUJELElBQXZCLENBQVY7QUFBQSxLQUE5QixDQUFqQjtBQUNBLFVBQUtFLGFBQUwsR0FBcUIsSUFBckI7QUFIdUM7QUFJeEM7Ozs7aUNBRXVDO0FBQUEsVUFBL0JDLE1BQStCLFFBQS9CQSxNQUErQjtBQUN0QyxVQUFNQyxZQUE4QyxHQUFHLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBVyxHQUFYLEVBQWdCLElBQWhCLENBQXZEO0FBRHNDLDRCQUVILEtBQUtQLFNBRkY7QUFBQSxVQUU5QlEsT0FGOEIsbUJBRTlCQSxPQUY4QjtBQUFBLFVBRXJCQyxhQUZxQixtQkFFckJBLGFBRnFCO0FBSXRDLGFBQU8sSUFBSUMsZ0NBQUosQ0FBNkI7QUFDbENDLFFBQUFBLEVBQUUsc0JBQWUsS0FBS0EsRUFBcEIsQ0FEZ0M7QUFFbENSLFFBQUFBLElBQUksRUFBRUssT0FGNEI7QUFHbENJLFFBQUFBLE9BQU8sRUFBRSxDQUh5QjtBQUlsQztBQUNBQyxRQUFBQSxJQUFJLEVBQUUsS0FMNEI7QUFNbENDLFFBQUFBLFFBQVEsRUFBRSxJQU53QjtBQU9sQ0MsUUFBQUEsV0FBVyxFQUFFLHFCQUFDQyxFQUFEO0FBQUEsaUJBQVFBLEVBQUUsQ0FBQ0MsT0FBSCxDQUFXQyxRQUFYLENBQW9CQyxXQUE1QjtBQUFBLFNBUHFCO0FBUWxDQyxRQUFBQSxZQUFZLEVBQUUsc0JBQUNKLEVBQUQ7QUFBQSxpQkFBUSx3QkFBWUEsRUFBRSxDQUFDSyxLQUFILENBQVNDLFNBQXJCLEtBQW1DZixZQUEzQztBQUFBLFNBUm9CO0FBU2xDZ0IsUUFBQUEsY0FBYyxFQUFFLHdCQUFDUCxFQUFEO0FBQUEsaUJBQ2Qsd0JBQVlBLEVBQUUsQ0FBQ0ssS0FBSCxDQUFTRyxZQUFyQixLQUFzQyx3QkFBWVIsRUFBRSxDQUFDSyxLQUFILENBQVNDLFNBQXJCLENBQXRDLElBQXlFZixZQUQzRDtBQUFBLFNBVGtCO0FBV2xDa0IsUUFBQUEsU0FBUyxFQUFFLG1CQUFDVCxFQUFEO0FBQUEsaUJBQVFBLEVBQUUsQ0FBQ0ssS0FBSCxDQUFTSyxpQkFBVCxHQUE2QlYsRUFBRSxDQUFDSyxLQUFILENBQVNNLG1CQUF0QyxJQUE2RCxDQUFyRTtBQUFBLFNBWHVCO0FBWWxDQyxRQUFBQSxjQUFjLEVBQUUsd0JBQUNaLEVBQUQ7QUFBQSxpQkFBUUEsRUFBRSxDQUFDSyxLQUFILENBQVNLLGlCQUFULElBQThCLEdBQXRDO0FBQUEsU0Faa0I7QUFhbENHLFFBQUFBLFVBQVUsRUFBRTtBQUNWQyxVQUFBQSxTQUFTLEVBQUUsS0FERDtBQUVWQyxVQUFBQSxLQUFLLEVBQUU7QUFGRyxTQWJzQjtBQWtCbENDLFFBQUFBLGNBQWMsRUFBRTtBQUFFQyxVQUFBQSxHQUFHLEVBQUV4QjtBQUFQLFNBbEJrQjtBQW9CbEN5QixRQUFBQSxXQUFXLEVBQUU7QUFwQnFCLE9BQTdCLENBQVA7QUFzQkQ7Ozs7RUFuQ3lDQyx1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEp1bmN0aW9uU2NhdHRlcnBsb3RMYXllciB9IGZyb20gJ0BuZWJ1bGEuZ2wvbGF5ZXJzJztcbmltcG9ydCBOZWJ1bGFMYXllciBmcm9tICcuLi9uZWJ1bGEtbGF5ZXInO1xuaW1wb3J0IHsgdG9EZWNrQ29sb3IgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgRGVja0NhY2hlIGZyb20gJy4uL2RlY2stcmVuZGVyZXIvZGVjay1jYWNoZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEp1bmN0aW9uc0xheWVyIGV4dGVuZHMgTmVidWxhTGF5ZXIge1xuICBkZWNrQ2FjaGU6IERlY2tDYWNoZTxhbnksIGFueT47XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgc3VwZXIoY29uZmlnKTtcbiAgICB0aGlzLmRlY2tDYWNoZSA9IG5ldyBEZWNrQ2FjaGUoY29uZmlnLmdldERhdGEsIChkYXRhKSA9PiBjb25maWcudG9OZWJ1bGFGZWF0dXJlKGRhdGEpKTtcbiAgICB0aGlzLmVuYWJsZVBpY2tpbmcgPSB0cnVlO1xuICB9XG5cbiAgcmVuZGVyKHsgbmVidWxhIH06IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICBjb25zdCBkZWZhdWx0Q29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzB4MCwgMHgwLCAweDAsIDB4ZmZdO1xuICAgIGNvbnN0IHsgb2JqZWN0cywgdXBkYXRlVHJpZ2dlciB9ID0gdGhpcy5kZWNrQ2FjaGU7XG5cbiAgICByZXR1cm4gbmV3IEp1bmN0aW9uU2NhdHRlcnBsb3RMYXllcih7XG4gICAgICBpZDogYGp1bmN0aW9ucy0ke3RoaXMuaWR9YCxcbiAgICAgIGRhdGE6IG9iamVjdHMsXG4gICAgICBvcGFjaXR5OiAxLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZnA2NDogZmFsc2UsXG4gICAgICBwaWNrYWJsZTogdHJ1ZSxcbiAgICAgIGdldFBvc2l0aW9uOiAobmYpID0+IG5mLmdlb0pzb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICBnZXRGaWxsQ29sb3I6IChuZikgPT4gdG9EZWNrQ29sb3IobmYuc3R5bGUuZmlsbENvbG9yKSB8fCBkZWZhdWx0Q29sb3IsXG4gICAgICBnZXRTdHJva2VDb2xvcjogKG5mKSA9PlxuICAgICAgICB0b0RlY2tDb2xvcihuZi5zdHlsZS5vdXRsaW5lQ29sb3IpIHx8IHRvRGVja0NvbG9yKG5mLnN0eWxlLmZpbGxDb2xvcikgfHwgZGVmYXVsdENvbG9yLFxuICAgICAgZ2V0UmFkaXVzOiAobmYpID0+IG5mLnN0eWxlLnBvaW50UmFkaXVzTWV0ZXJzICsgbmYuc3R5bGUub3V0bGluZVJhZGl1c01ldGVycyB8fCAxLFxuICAgICAgZ2V0SW5uZXJSYWRpdXM6IChuZikgPT4gbmYuc3R5bGUucG9pbnRSYWRpdXNNZXRlcnMgfHwgMC41LFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICBkZXB0aFRlc3Q6IGZhbHNlLFxuICAgICAgICBibGVuZDogZmFsc2UsXG4gICAgICB9LFxuXG4gICAgICB1cGRhdGVUcmlnZ2VyczogeyBhbGw6IHVwZGF0ZVRyaWdnZXIgfSxcblxuICAgICAgbmVidWxhTGF5ZXI6IHRoaXMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { JunctionScatterplotLayer } from '@nebula.gl/layers';\nimport NebulaLayer from '../nebula-layer';\nimport { toDeckColor } from '../utils';\nimport DeckCache from '../deck-renderer/deck-cache';\n\nexport default class JunctionsLayer extends NebulaLayer {\n deckCache: DeckCache;\n\n constructor(config: Record) {\n super(config);\n this.deckCache = new DeckCache(config.getData, (data) => config.toNebulaFeature(data));\n this.enablePicking = true;\n }\n\n render({ nebula }: Record) {\n const defaultColor: [number, number, number, number] = [0x0, 0x0, 0x0, 0xff];\n const { objects, updateTrigger } = this.deckCache;\n\n return new JunctionScatterplotLayer({\n id: `junctions-${this.id}`,\n data: objects,\n opacity: 1,\n // @ts-ignore\n fp64: false,\n pickable: true,\n getPosition: (nf) => nf.geoJson.geometry.coordinates,\n getFillColor: (nf) => toDeckColor(nf.style.fillColor) || defaultColor,\n getStrokeColor: (nf) =>\n toDeckColor(nf.style.outlineColor) || toDeckColor(nf.style.fillColor) || defaultColor,\n getRadius: (nf) => nf.style.pointRadiusMeters + nf.style.outlineRadiusMeters || 1,\n getInnerRadius: (nf) => nf.style.pointRadiusMeters || 0.5,\n parameters: {\n depthTest: false,\n blend: false,\n },\n\n updateTriggers: { all: updateTrigger },\n\n nebulaLayer: this,\n });\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"ArrowStyles\", {\n enumerable: true,\n get: function get() {\n return _style.ArrowStyles;\n }\n});\nObject.defineProperty(exports, \"DEFAULT_ARROWS\", {\n enumerable: true,\n get: function get() {\n return _style.DEFAULT_ARROWS;\n }\n});\nObject.defineProperty(exports, \"MAX_ARROWS\", {\n enumerable: true,\n get: function get() {\n return _style.MAX_ARROWS;\n }\n});\nObject.defineProperty(exports, \"EditableGeoJsonLayer\", {\n enumerable: true,\n get: function get() {\n return _editableGeojsonLayer[\"default\"];\n }\n});\nObject.defineProperty(exports, \"EditableH3ClusterLayer\", {\n enumerable: true,\n get: function get() {\n return _editableH3ClusterLayer[\"default\"];\n }\n});\nObject.defineProperty(exports, \"SelectionLayer\", {\n enumerable: true,\n get: function get() {\n return _selectionLayer[\"default\"];\n }\n});\nObject.defineProperty(exports, \"ElevatedEditHandleLayer\", {\n enumerable: true,\n get: function get() {\n return _elevatedEditHandleLayer[\"default\"];\n }\n});\nObject.defineProperty(exports, \"PathOutlineLayer\", {\n enumerable: true,\n get: function get() {\n return _pathOutlineLayer[\"default\"];\n }\n});\nObject.defineProperty(exports, \"PathMarkerLayer\", {\n enumerable: true,\n get: function get() {\n return _pathMarkerLayer[\"default\"];\n }\n});\nObject.defineProperty(exports, \"JunctionScatterplotLayer\", {\n enumerable: true,\n get: function get() {\n return _junctionScatterplotLayer[\"default\"];\n }\n});\nObject.defineProperty(exports, \"toDeckColor\", {\n enumerable: true,\n get: function get() {\n return _utils.toDeckColor;\n }\n});\n\nvar _style = require(\"./style\");\n\nvar _editableGeojsonLayer = _interopRequireDefault(require(\"./layers/editable-geojson-layer\"));\n\nvar _editableH3ClusterLayer = _interopRequireDefault(require(\"./layers/editable-h3-cluster-layer\"));\n\nvar _selectionLayer = _interopRequireDefault(require(\"./layers/selection-layer\"));\n\nvar _elevatedEditHandleLayer = _interopRequireDefault(require(\"./layers/elevated-edit-handle-layer\"));\n\nvar _pathOutlineLayer = _interopRequireDefault(require(\"./layers/path-outline-layer/path-outline-layer\"));\n\nvar _pathMarkerLayer = _interopRequireDefault(require(\"./layers/path-marker-layer/path-marker-layer\"));\n\nvar _junctionScatterplotLayer = _interopRequireDefault(require(\"./layers/junction-scatterplot-layer\"));\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFHQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEFycm93U3R5bGVzLCBERUZBVUxUX0FSUk9XUywgTUFYX0FSUk9XUyB9IGZyb20gJy4vc3R5bGUnO1xuXG4vLyBMYXllcnNcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWRpdGFibGVHZW9Kc29uTGF5ZXIgfSBmcm9tICcuL2xheWVycy9lZGl0YWJsZS1nZW9qc29uLWxheWVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWRpdGFibGVIM0NsdXN0ZXJMYXllciB9IGZyb20gJy4vbGF5ZXJzL2VkaXRhYmxlLWgzLWNsdXN0ZXItbGF5ZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBTZWxlY3Rpb25MYXllciB9IGZyb20gJy4vbGF5ZXJzL3NlbGVjdGlvbi1sYXllcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEVsZXZhdGVkRWRpdEhhbmRsZUxheWVyIH0gZnJvbSAnLi9sYXllcnMvZWxldmF0ZWQtZWRpdC1oYW5kbGUtbGF5ZXInO1xuXG4vLyBMYXllcnMgbW92ZWQgZnJvbSBkZWNrLmdsXG5leHBvcnQgeyBkZWZhdWx0IGFzIFBhdGhPdXRsaW5lTGF5ZXIgfSBmcm9tICcuL2xheWVycy9wYXRoLW91dGxpbmUtbGF5ZXIvcGF0aC1vdXRsaW5lLWxheWVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUGF0aE1hcmtlckxheWVyIH0gZnJvbSAnLi9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvcGF0aC1tYXJrZXItbGF5ZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBKdW5jdGlvblNjYXR0ZXJwbG90TGF5ZXIgfSBmcm9tICcuL2xheWVycy9qdW5jdGlvbi1zY2F0dGVycGxvdC1sYXllcic7XG5cbi8vIFV0aWxzXG5leHBvcnQgeyB0b0RlY2tDb2xvciB9IGZyb20gJy4vdXRpbHMnO1xuXG4vLyBUeXBlc1xuZXhwb3J0IHR5cGUgeyBDb2xvciwgVmlld3BvcnQgfSBmcm9tICcuL3R5cGVzJztcbiJdfQ==","export { ArrowStyles, DEFAULT_ARROWS, MAX_ARROWS } from './style';\n\n// Layers\nexport { default as EditableGeoJsonLayer } from './layers/editable-geojson-layer';\nexport { default as EditableH3ClusterLayer } from './layers/editable-h3-cluster-layer';\nexport { default as SelectionLayer } from './layers/selection-layer';\nexport { default as ElevatedEditHandleLayer } from './layers/elevated-edit-handle-layer';\n\n// Layers moved from deck.gl\nexport { default as PathOutlineLayer } from './layers/path-outline-layer/path-outline-layer';\nexport { default as PathMarkerLayer } from './layers/path-marker-layer/path-marker-layer';\nexport { default as JunctionScatterplotLayer } from './layers/junction-scatterplot-layer';\n\n// Utils\nexport { toDeckColor } from './utils';\n\n// Types\nexport type { Color, Viewport } from './types';\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MAX_ARROWS = exports.DEFAULT_ARROWS = exports.ArrowStyles = void 0;\n// Describes the arrow style of polylines\nvar ArrowStyles = {\n NONE: 0,\n FORWARD: 1,\n BACKWARD: 2,\n BOTH: 3\n};\nexports.ArrowStyles = ArrowStyles;\nvar DEFAULT_ARROWS = 1;\nexports.DEFAULT_ARROWS = DEFAULT_ARROWS;\nvar MAX_ARROWS = 3;\nexports.MAX_ARROWS = MAX_ARROWS;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdHlsZS50cyJdLCJuYW1lcyI6WyJBcnJvd1N0eWxlcyIsIk5PTkUiLCJGT1JXQVJEIiwiQkFDS1dBUkQiLCJCT1RIIiwiREVGQVVMVF9BUlJPV1MiLCJNQVhfQVJST1dTIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNPLElBQU1BLFdBQVcsR0FBRztBQUN6QkMsRUFBQUEsSUFBSSxFQUFFLENBRG1CO0FBRXpCQyxFQUFBQSxPQUFPLEVBQUUsQ0FGZ0I7QUFHekJDLEVBQUFBLFFBQVEsRUFBRSxDQUhlO0FBSXpCQyxFQUFBQSxJQUFJLEVBQUU7QUFKbUIsQ0FBcEI7O0FBT0EsSUFBTUMsY0FBYyxHQUFHLENBQXZCOztBQUNBLElBQU1DLFVBQVUsR0FBRyxDQUFuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIERlc2NyaWJlcyB0aGUgYXJyb3cgc3R5bGUgb2YgcG9seWxpbmVzXG5leHBvcnQgY29uc3QgQXJyb3dTdHlsZXMgPSB7XG4gIE5PTkU6IDAsXG4gIEZPUldBUkQ6IDEsXG4gIEJBQ0tXQVJEOiAyLFxuICBCT1RIOiAzLFxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQVJST1dTID0gMTtcbmV4cG9ydCBjb25zdCBNQVhfQVJST1dTID0gMztcbiJdfQ==","// Describes the arrow style of polylines\nexport const ArrowStyles = {\n NONE: 0,\n FORWARD: 1,\n BACKWARD: 2,\n BOTH: 3,\n};\n\nexport const DEFAULT_ARROWS = 1;\nexport const MAX_ARROWS = 3;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _layers = require(\"@deck.gl/layers\");\n\nvar _editModes = require(\"@nebula.gl/edit-modes\");\n\nvar _constants = require(\"../constants\");\n\nvar _editableLayer = _interopRequireDefault(require(\"./editable-layer\"));\n\nvar _editablePathLayer = _interopRequireDefault(require(\"./editable-path-layer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DEFAULT_LINE_COLOR = [0x0, 0x0, 0x0, 0x99];\nvar DEFAULT_FILL_COLOR = [0x0, 0x0, 0x0, 0x90];\nvar DEFAULT_SELECTED_LINE_COLOR = [0x0, 0x0, 0x0, 0xff];\nvar DEFAULT_SELECTED_FILL_COLOR = [0x0, 0x0, 0x90, 0x90];\nvar DEFAULT_TENTATIVE_LINE_COLOR = [0x90, 0x90, 0x90, 0xff];\nvar DEFAULT_TENTATIVE_FILL_COLOR = [0x90, 0x90, 0x90, 0x90];\nvar DEFAULT_EDITING_EXISTING_POINT_COLOR = [0xc0, 0x0, 0x0, 0xff];\nvar DEFAULT_EDITING_INTERMEDIATE_POINT_COLOR = [0x0, 0x0, 0x0, 0x80];\nvar DEFAULT_EDITING_SNAP_POINT_COLOR = [0x7c, 0x00, 0xc0, 0xff];\nvar DEFAULT_EDITING_POINT_OUTLINE_COLOR = [0xff, 0xff, 0xff, 0xff];\nvar DEFAULT_EDITING_EXISTING_POINT_RADIUS = 5;\nvar DEFAULT_EDITING_INTERMEDIATE_POINT_RADIUS = 3;\nvar DEFAULT_EDITING_SNAP_POINT_RADIUS = 7;\nvar DEFAULT_TOOLTIP_FONT_SIZE = 32 * _constants.PROJECTED_PIXEL_SIZE_MULTIPLIER;\nvar DEFAULT_EDIT_MODE = _editModes.DrawPolygonMode;\n\nfunction guideAccessor(accessor) {\n if (!accessor || typeof accessor !== 'function') {\n return accessor;\n }\n\n return function (guideMaybeWrapped) {\n return accessor(unwrapGuide(guideMaybeWrapped));\n };\n} // The object handed to us from deck.gl is different depending on the version of deck.gl used, unwrap as necessary\n\n\nfunction unwrapGuide(guideMaybeWrapped) {\n if (guideMaybeWrapped.__source) {\n return guideMaybeWrapped.__source.object;\n } else if (guideMaybeWrapped.sourceFeature) {\n return guideMaybeWrapped.sourceFeature.feature;\n } // It is not wrapped, return as is\n\n\n return guideMaybeWrapped;\n}\n\nfunction getEditHandleColor(handle) {\n switch (handle.properties.editHandleType) {\n case 'existing':\n return DEFAULT_EDITING_EXISTING_POINT_COLOR;\n\n case 'snap-source':\n return DEFAULT_EDITING_SNAP_POINT_COLOR;\n\n case 'intermediate':\n default:\n return DEFAULT_EDITING_INTERMEDIATE_POINT_COLOR;\n }\n}\n\nfunction getEditHandleOutlineColor(handle) {\n return DEFAULT_EDITING_POINT_OUTLINE_COLOR;\n}\n\nfunction getEditHandleRadius(handle) {\n switch (handle.properties.editHandleType) {\n case 'existing':\n return DEFAULT_EDITING_EXISTING_POINT_RADIUS;\n\n case 'snap':\n return DEFAULT_EDITING_SNAP_POINT_RADIUS;\n\n case 'intermediate':\n default:\n return DEFAULT_EDITING_INTERMEDIATE_POINT_RADIUS;\n }\n}\n\nvar defaultProps = {\n mode: DEFAULT_EDIT_MODE,\n // Edit and interaction events\n onEdit: function onEdit() {},\n pickable: true,\n pickingRadius: 10,\n pickingDepth: 5,\n fp64: false,\n filled: true,\n stroked: true,\n lineWidthScale: _constants.PROJECTED_PIXEL_SIZE_MULTIPLIER,\n lineWidthMinPixels: 1,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n pickingLineWidthExtraPixels: 0,\n lineWidthUnits: 'pixels',\n lineJointRounded: false,\n lineCapRounded: false,\n lineMiterLimit: 4,\n pointRadiusScale: 1,\n pointRadiusMinPixels: 2,\n pointRadiusMaxPixels: Number.MAX_SAFE_INTEGER,\n getLineColor: function getLineColor(feature, isSelected, mode) {\n return isSelected ? DEFAULT_SELECTED_LINE_COLOR : DEFAULT_LINE_COLOR;\n },\n getFillColor: function getFillColor(feature, isSelected, mode) {\n return isSelected ? DEFAULT_SELECTED_FILL_COLOR : DEFAULT_FILL_COLOR;\n },\n getRadius: function getRadius(f) {\n return f && f.properties && f.properties.radius || f && f.properties && f.properties.size || 1;\n },\n getLineWidth: function getLineWidth(f) {\n return f && f.properties && f.properties.lineWidth || 3;\n },\n // Tentative feature rendering\n getTentativeLineColor: function getTentativeLineColor(f) {\n return DEFAULT_TENTATIVE_LINE_COLOR;\n },\n getTentativeFillColor: function getTentativeFillColor(f) {\n return DEFAULT_TENTATIVE_FILL_COLOR;\n },\n getTentativeLineWidth: function getTentativeLineWidth(f) {\n return f && f.properties && f.properties.lineWidth || 3;\n },\n editHandleType: 'point',\n // point handles\n editHandlePointRadiusScale: 1,\n editHandlePointOutline: true,\n editHandlePointStrokeWidth: 2,\n editHandlePointRadiusUnits: 'pixels',\n editHandlePointRadiusMinPixels: 4,\n editHandlePointRadiusMaxPixels: 8,\n getEditHandlePointColor: getEditHandleColor,\n getEditHandlePointOutlineColor: getEditHandleOutlineColor,\n getEditHandlePointRadius: getEditHandleRadius,\n // icon handles\n editHandleIconAtlas: null,\n editHandleIconMapping: null,\n editHandleIconSizeScale: 1,\n editHandleIconSizeUnits: 'pixels',\n getEditHandleIcon: function getEditHandleIcon(handle) {\n return handle.properties.editHandleType;\n },\n getEditHandleIconSize: 10,\n getEditHandleIconColor: getEditHandleColor,\n getEditHandleIconAngle: 0,\n // misc\n billboard: true\n}; // Mapping of mode name to mode class (for legacy purposes)\n\nvar modeNameMapping = {\n view: _editModes.ViewMode,\n // Alter modes\n modify: _editModes.ModifyMode,\n translate: new _editModes.SnappableMode(new _editModes.TranslateMode()),\n transform: new _editModes.SnappableMode(new _editModes.TransformMode()),\n scale: _editModes.ScaleMode,\n rotate: _editModes.RotateMode,\n duplicate: _editModes.DuplicateMode,\n split: _editModes.SplitPolygonMode,\n extrude: _editModes.ExtrudeMode,\n elevation: _editModes.ElevationMode,\n // Draw modes\n drawPoint: _editModes.DrawPointMode,\n drawLineString: _editModes.DrawLineStringMode,\n drawPolygon: _editModes.DrawPolygonMode,\n drawRectangle: _editModes.DrawRectangleMode,\n drawSquare: _editModes.DrawSquareMode,\n drawRectangleFromCenter: _editModes.DrawRectangleFromCenterMode,\n drawSquareFromCenter: _editModes.DrawSquareFromCenterMode,\n drawCircleFromCenter: _editModes.DrawCircleFromCenterMode,\n drawCircleByBoundingBox: _editModes.DrawCircleByDiameterMode,\n drawEllipseByBoundingBox: _editModes.DrawEllipseByBoundingBoxMode,\n drawRectangleUsing3Points: _editModes.DrawRectangleUsingThreePointsMode,\n drawEllipseUsing3Points: _editModes.DrawEllipseUsingThreePointsMode,\n draw90DegreePolygon: _editModes.Draw90DegreePolygonMode,\n drawPolygonByDragging: _editModes.DrawPolygonByDraggingMode\n}; // type State = {\n// mode: GeoJsonEditMode,\n// tentativeFeature: ?Feature,\n// editHandles: any[],\n// selectedFeatures: Feature[]\n// };\n\nvar EditableGeoJsonLayer = /*#__PURE__*/function (_EditableLayer) {\n _inherits(EditableGeoJsonLayer, _EditableLayer);\n\n var _super = _createSuper(EditableGeoJsonLayer);\n\n function EditableGeoJsonLayer() {\n _classCallCheck(this, EditableGeoJsonLayer);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(EditableGeoJsonLayer, [{\n key: \"renderLayers\",\n // setState: ($Shape) => void;\n value: function renderLayers() {\n var subLayerProps = this.getSubLayerProps({\n id: 'geojson',\n // Proxy most GeoJsonLayer props as-is\n data: this.props.data,\n fp64: this.props.fp64,\n filled: this.props.filled,\n stroked: this.props.stroked,\n lineWidthScale: this.props.lineWidthScale,\n lineWidthMinPixels: this.props.lineWidthMinPixels,\n lineWidthMaxPixels: this.props.lineWidthMaxPixels,\n lineWidthUnits: this.props.lineWidthUnits,\n lineJointRounded: this.props.lineJointRounded,\n lineCapRounded: this.props.lineCapRounded,\n lineMiterLimit: this.props.lineMiterLimit,\n pointRadiusScale: this.props.pointRadiusScale,\n pointRadiusMinPixels: this.props.pointRadiusMinPixels,\n pointRadiusMaxPixels: this.props.pointRadiusMaxPixels,\n getLineColor: this.selectionAwareAccessor(this.props.getLineColor),\n getFillColor: this.selectionAwareAccessor(this.props.getFillColor),\n getPointRadius: this.selectionAwareAccessor(this.props.getRadius),\n getLineWidth: this.selectionAwareAccessor(this.props.getLineWidth),\n _subLayerProps: {\n linestrings: {\n billboard: this.props.billboard,\n updateTriggers: {\n // required to update dashed array attribute\n all: [this.props.selectedFeatureIndexes, this.props.mode]\n }\n },\n 'polygons-stroke': {\n billboard: this.props.billboard,\n pickingLineWidthExtraPixels: this.props.pickingLineWidthExtraPixels,\n type: _editablePathLayer[\"default\"],\n updateTriggers: {\n // required to update dashed array attribute\n all: [this.props.selectedFeatureIndexes, this.props.mode]\n }\n }\n },\n updateTriggers: {\n getLineColor: [this.props.selectedFeatureIndexes, this.props.mode],\n getFillColor: [this.props.selectedFeatureIndexes, this.props.mode],\n getPointRadius: [this.props.selectedFeatureIndexes, this.props.mode],\n getLineWidth: [this.props.selectedFeatureIndexes, this.props.mode]\n }\n });\n var layers = [new _layers.GeoJsonLayer(subLayerProps)];\n layers = layers.concat(this.createGuidesLayers(), this.createTooltipsLayers());\n return layers;\n }\n }, {\n key: \"initializeState\",\n value: function initializeState() {\n _get(_getPrototypeOf(EditableGeoJsonLayer.prototype), \"initializeState\", this).call(this);\n\n this.setState({\n selectedFeatures: [],\n editHandles: []\n });\n } // TODO: is this the best way to properly update state from an outside event handler?\n\n }, {\n key: \"shouldUpdateState\",\n value: function shouldUpdateState(opts) {\n // console.log(\n // 'shouldUpdateState',\n // opts.changeFlags.propsOrDataChanged,\n // opts.changeFlags.stateChanged\n // );\n return _get(_getPrototypeOf(EditableGeoJsonLayer.prototype), \"shouldUpdateState\", this).call(this, opts) || opts.changeFlags.stateChanged;\n }\n }, {\n key: \"updateState\",\n value: function updateState(_ref) {\n var props = _ref.props,\n oldProps = _ref.oldProps,\n changeFlags = _ref.changeFlags,\n context = _ref.context;\n\n _get(_getPrototypeOf(EditableGeoJsonLayer.prototype), \"updateState\", this).call(this, {\n oldProps: oldProps,\n props: props,\n changeFlags: changeFlags,\n context: context\n });\n\n if (changeFlags.propsOrDataChanged) {\n var modePropChanged = Object.keys(oldProps).length === 0 || props.mode !== oldProps.mode;\n\n if (modePropChanged) {\n var _mode;\n\n if (typeof props.mode === 'function') {\n // They passed a constructor/class, so new it up\n var ModeConstructor = props.mode;\n _mode = new ModeConstructor();\n } else if (typeof props.mode === 'string') {\n // Lookup the mode based on its name (for backwards compatibility)\n _mode = modeNameMapping[props.mode]; // eslint-disable-next-line no-console\n\n console.warn(\"Deprecated use of passing `mode` as a string. Pass the mode's class constructor instead.\");\n } else {\n // Should be an instance of EditMode in this case\n _mode = props.mode;\n }\n\n if (!_mode) {\n console.warn(\"No mode configured for \".concat(String(props.mode))); // eslint-disable-line no-console,no-undef\n // Use default mode\n\n _mode = new DEFAULT_EDIT_MODE();\n }\n\n if (_mode !== this.state.mode) {\n this.setState({\n mode: _mode,\n cursor: null\n });\n }\n }\n }\n\n var selectedFeatures = [];\n\n if (Array.isArray(props.selectedFeatureIndexes)) {\n // TODO: needs improved testing, i.e. checking for duplicates, NaNs, out of range numbers, ...\n selectedFeatures = props.selectedFeatureIndexes.map(function (elem) {\n return props.data.features[elem];\n });\n }\n\n this.setState({\n selectedFeatures: selectedFeatures\n });\n }\n }, {\n key: \"getModeProps\",\n value: function getModeProps(props) {\n var _this = this;\n\n return {\n modeConfig: props.modeConfig,\n data: props.data,\n selectedIndexes: props.selectedFeatureIndexes,\n lastPointerMoveEvent: this.state.lastPointerMoveEvent,\n cursor: this.state.cursor,\n onEdit: function onEdit(editAction) {\n // Force a re-render\n // This supports double-click where we need to ensure that there's a re-render between the two clicks\n // even though the data wasn't changed, just the internal tentative feature.\n _this.setNeedsUpdate();\n\n props.onEdit(editAction);\n },\n onUpdateCursor: function onUpdateCursor(cursor) {\n _this.setState({\n cursor: cursor\n });\n }\n };\n }\n }, {\n key: \"selectionAwareAccessor\",\n value: function selectionAwareAccessor(accessor) {\n var _this2 = this;\n\n if (typeof accessor !== 'function') {\n return accessor;\n }\n\n return function (feature) {\n return accessor(feature, _this2.isFeatureSelected(feature), _this2.props.mode);\n };\n }\n }, {\n key: \"isFeatureSelected\",\n value: function isFeatureSelected(feature) {\n if (!this.props.data || !this.props.selectedFeatureIndexes) {\n return false;\n }\n\n if (!this.props.selectedFeatureIndexes.length) {\n return false;\n }\n\n var featureIndex = this.props.data.features.indexOf(feature);\n return this.props.selectedFeatureIndexes.includes(featureIndex);\n }\n }, {\n key: \"getPickingInfo\",\n value: function getPickingInfo(_ref2) {\n var info = _ref2.info,\n sourceLayer = _ref2.sourceLayer;\n\n if (sourceLayer.id.endsWith('guides')) {\n // If user is picking an editing handle, add additional data to the info\n info.isGuide = true;\n }\n\n return info;\n }\n }, {\n key: \"_updateAutoHighlight\",\n value: function _updateAutoHighlight(info) {\n // Extra handling for guides\n if (info === null || info === void 0 ? void 0 : info.sourceLayer) {\n if (info.isGuide) {\n var _iterator = _createForOfIteratorHelper(info.sourceLayer.getSubLayers()),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var layer = _step.value;\n layer.updateAutoHighlight(info);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else {\n info.sourceLayer.updateAutoHighlight(info);\n }\n }\n }\n }, {\n key: \"createGuidesLayers\",\n value: function createGuidesLayers() {\n var mode = this.getActiveMode();\n var guides = mode.getGuides(this.getModeProps(this.props));\n\n if (!guides || !guides.features.length) {\n return [];\n }\n\n var subLayerProps = {\n linestrings: {\n billboard: this.props.billboard,\n autoHighlight: false\n },\n 'polygons-fill': {\n autoHighlight: false\n },\n 'polygons-stroke': {\n billboard: this.props.billboard\n }\n };\n\n if (this.props.editHandleType === 'icon') {\n subLayerProps['points-icon'] = {\n type: _layers.IconLayer,\n iconAtlas: this.props.editHandleIconAtlas,\n iconMapping: this.props.editHandleIconMapping,\n sizeUnits: this.props.editHandleIconSizeUnits,\n sizeScale: this.props.editHandleIconSizeScale,\n getIcon: guideAccessor(this.props.getEditHandleIcon),\n getSize: guideAccessor(this.props.getEditHandleIconSize),\n getColor: guideAccessor(this.props.getEditHandleIconColor),\n getAngle: guideAccessor(this.props.getEditHandleIconAngle)\n };\n } else {\n subLayerProps['points-circle'] = {\n type: _layers.ScatterplotLayer,\n radiusScale: this.props.editHandlePointRadiusScale,\n stroked: this.props.editHandlePointOutline,\n getLineWidth: this.props.editHandlePointStrokeWidth,\n radiusUnits: this.props.editHandlePointRadiusUnits,\n radiusMinPixels: this.props.editHandlePointRadiusMinPixels,\n radiusMaxPixels: this.props.editHandlePointRadiusMaxPixels,\n getRadius: guideAccessor(this.props.getEditHandlePointRadius),\n getFillColor: guideAccessor(this.props.getEditHandlePointColor),\n getLineColor: guideAccessor(this.props.getEditHandlePointOutlineColor)\n };\n }\n\n var layer = new _layers.GeoJsonLayer(this.getSubLayerProps({\n id: \"guides\",\n data: guides,\n fp64: this.props.fp64,\n _subLayerProps: subLayerProps,\n lineWidthScale: this.props.lineWidthScale,\n lineWidthMinPixels: this.props.lineWidthMinPixels,\n lineWidthMaxPixels: this.props.lineWidthMaxPixels,\n lineWidthUnits: this.props.lineWidthUnits,\n lineJointRounded: this.props.lineJointRounded,\n lineCapRounded: this.props.lineCapRounded,\n lineMiterLimit: this.props.lineMiterLimit,\n getLineColor: guideAccessor(this.props.getTentativeLineColor),\n getLineWidth: guideAccessor(this.props.getTentativeLineWidth),\n getFillColor: guideAccessor(this.props.getTentativeFillColor),\n pointType: this.props.editHandleType === 'icon' ? 'icon' : 'circle',\n iconAtlas: this.props.editHandleIconAtlas\n }));\n return [layer];\n }\n }, {\n key: \"createTooltipsLayers\",\n value: function createTooltipsLayers() {\n var mode = this.getActiveMode();\n var tooltips = mode.getTooltips(this.getModeProps(this.props));\n var layer = new _layers.TextLayer(_objectSpread({\n getSize: DEFAULT_TOOLTIP_FONT_SIZE\n }, this.getSubLayerProps({\n id: \"tooltips\",\n data: tooltips\n })));\n return [layer];\n }\n }, {\n key: \"onLayerClick\",\n value: function onLayerClick(event) {\n this.getActiveMode().handleClick(event, this.getModeProps(this.props));\n }\n }, {\n key: \"onLayerKeyUp\",\n value: function onLayerKeyUp(event) {\n this.getActiveMode().handleKeyUp(event, this.getModeProps(this.props));\n }\n }, {\n key: \"onStartDragging\",\n value: function onStartDragging(event) {\n this.getActiveMode().handleStartDragging(event, this.getModeProps(this.props));\n }\n }, {\n key: \"onDragging\",\n value: function onDragging(event) {\n this.getActiveMode().handleDragging(event, this.getModeProps(this.props));\n }\n }, {\n key: \"onStopDragging\",\n value: function onStopDragging(event) {\n this.getActiveMode().handleStopDragging(event, this.getModeProps(this.props));\n }\n }, {\n key: \"onPointerMove\",\n value: function onPointerMove(event) {\n this.setState({\n lastPointerMoveEvent: event\n });\n this.getActiveMode().handlePointerMove(event, this.getModeProps(this.props));\n }\n }, {\n key: \"getCursor\",\n value: function getCursor(_ref3) {\n var isDragging = _ref3.isDragging;\n\n if (this.state === null || this.state === undefined) {\n // Layer in 'Awaiting state'\n return null;\n }\n\n var cursor = this.state.cursor;\n\n if (!cursor) {\n // default cursor\n cursor = isDragging ? 'grabbing' : 'grab';\n }\n\n return cursor;\n }\n }, {\n key: \"getActiveMode\",\n value: function getActiveMode() {\n return this.state.mode;\n }\n }]);\n\n return EditableGeoJsonLayer;\n}(_editableLayer[\"default\"]);\n\nexports[\"default\"] = EditableGeoJsonLayer;\n\n_defineProperty(EditableGeoJsonLayer, \"layerName\", 'EditableGeoJsonLayer');\n\n_defineProperty(EditableGeoJsonLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWRpdGFibGUtZ2VvanNvbi1sYXllci50cyJdLCJuYW1lcyI6WyJERUZBVUxUX0xJTkVfQ09MT1IiLCJERUZBVUxUX0ZJTExfQ09MT1IiLCJERUZBVUxUX1NFTEVDVEVEX0xJTkVfQ09MT1IiLCJERUZBVUxUX1NFTEVDVEVEX0ZJTExfQ09MT1IiLCJERUZBVUxUX1RFTlRBVElWRV9MSU5FX0NPTE9SIiwiREVGQVVMVF9URU5UQVRJVkVfRklMTF9DT0xPUiIsIkRFRkFVTFRfRURJVElOR19FWElTVElOR19QT0lOVF9DT0xPUiIsIkRFRkFVTFRfRURJVElOR19JTlRFUk1FRElBVEVfUE9JTlRfQ09MT1IiLCJERUZBVUxUX0VESVRJTkdfU05BUF9QT0lOVF9DT0xPUiIsIkRFRkFVTFRfRURJVElOR19QT0lOVF9PVVRMSU5FX0NPTE9SIiwiREVGQVVMVF9FRElUSU5HX0VYSVNUSU5HX1BPSU5UX1JBRElVUyIsIkRFRkFVTFRfRURJVElOR19JTlRFUk1FRElBVEVfUE9JTlRfUkFESVVTIiwiREVGQVVMVF9FRElUSU5HX1NOQVBfUE9JTlRfUkFESVVTIiwiREVGQVVMVF9UT09MVElQX0ZPTlRfU0laRSIsIlBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIiLCJERUZBVUxUX0VESVRfTU9ERSIsIkRyYXdQb2x5Z29uTW9kZSIsImd1aWRlQWNjZXNzb3IiLCJhY2Nlc3NvciIsImd1aWRlTWF5YmVXcmFwcGVkIiwidW53cmFwR3VpZGUiLCJfX3NvdXJjZSIsIm9iamVjdCIsInNvdXJjZUZlYXR1cmUiLCJmZWF0dXJlIiwiZ2V0RWRpdEhhbmRsZUNvbG9yIiwiaGFuZGxlIiwicHJvcGVydGllcyIsImVkaXRIYW5kbGVUeXBlIiwiZ2V0RWRpdEhhbmRsZU91dGxpbmVDb2xvciIsImdldEVkaXRIYW5kbGVSYWRpdXMiLCJkZWZhdWx0UHJvcHMiLCJtb2RlIiwib25FZGl0IiwicGlja2FibGUiLCJwaWNraW5nUmFkaXVzIiwicGlja2luZ0RlcHRoIiwiZnA2NCIsImZpbGxlZCIsInN0cm9rZWQiLCJsaW5lV2lkdGhTY2FsZSIsImxpbmVXaWR0aE1pblBpeGVscyIsImxpbmVXaWR0aE1heFBpeGVscyIsIk51bWJlciIsIk1BWF9TQUZFX0lOVEVHRVIiLCJwaWNraW5nTGluZVdpZHRoRXh0cmFQaXhlbHMiLCJsaW5lV2lkdGhVbml0cyIsImxpbmVKb2ludFJvdW5kZWQiLCJsaW5lQ2FwUm91bmRlZCIsImxpbmVNaXRlckxpbWl0IiwicG9pbnRSYWRpdXNTY2FsZSIsInBvaW50UmFkaXVzTWluUGl4ZWxzIiwicG9pbnRSYWRpdXNNYXhQaXhlbHMiLCJnZXRMaW5lQ29sb3IiLCJpc1NlbGVjdGVkIiwiZ2V0RmlsbENvbG9yIiwiZ2V0UmFkaXVzIiwiZiIsInJhZGl1cyIsInNpemUiLCJnZXRMaW5lV2lkdGgiLCJsaW5lV2lkdGgiLCJnZXRUZW50YXRpdmVMaW5lQ29sb3IiLCJnZXRUZW50YXRpdmVGaWxsQ29sb3IiLCJnZXRUZW50YXRpdmVMaW5lV2lkdGgiLCJlZGl0SGFuZGxlUG9pbnRSYWRpdXNTY2FsZSIsImVkaXRIYW5kbGVQb2ludE91dGxpbmUiLCJlZGl0SGFuZGxlUG9pbnRTdHJva2VXaWR0aCIsImVkaXRIYW5kbGVQb2ludFJhZGl1c1VuaXRzIiwiZWRpdEhhbmRsZVBvaW50UmFkaXVzTWluUGl4ZWxzIiwiZWRpdEhhbmRsZVBvaW50UmFkaXVzTWF4UGl4ZWxzIiwiZ2V0RWRpdEhhbmRsZVBvaW50Q29sb3IiLCJnZXRFZGl0SGFuZGxlUG9pbnRPdXRsaW5lQ29sb3IiLCJnZXRFZGl0SGFuZGxlUG9pbnRSYWRpdXMiLCJlZGl0SGFuZGxlSWNvbkF0bGFzIiwiZWRpdEhhbmRsZUljb25NYXBwaW5nIiwiZWRpdEhhbmRsZUljb25TaXplU2NhbGUiLCJlZGl0SGFuZGxlSWNvblNpemVVbml0cyIsImdldEVkaXRIYW5kbGVJY29uIiwiZ2V0RWRpdEhhbmRsZUljb25TaXplIiwiZ2V0RWRpdEhhbmRsZUljb25Db2xvciIsImdldEVkaXRIYW5kbGVJY29uQW5nbGUiLCJiaWxsYm9hcmQiLCJtb2RlTmFtZU1hcHBpbmciLCJ2aWV3IiwiVmlld01vZGUiLCJtb2RpZnkiLCJNb2RpZnlNb2RlIiwidHJhbnNsYXRlIiwiU25hcHBhYmxlTW9kZSIsIlRyYW5zbGF0ZU1vZGUiLCJ0cmFuc2Zvcm0iLCJUcmFuc2Zvcm1Nb2RlIiwic2NhbGUiLCJTY2FsZU1vZGUiLCJyb3RhdGUiLCJSb3RhdGVNb2RlIiwiZHVwbGljYXRlIiwiRHVwbGljYXRlTW9kZSIsInNwbGl0IiwiU3BsaXRQb2x5Z29uTW9kZSIsImV4dHJ1ZGUiLCJFeHRydWRlTW9kZSIsImVsZXZhdGlvbiIsIkVsZXZhdGlvbk1vZGUiLCJkcmF3UG9pbnQiLCJEcmF3UG9pbnRNb2RlIiwiZHJhd0xpbmVTdHJpbmciLCJEcmF3TGluZVN0cmluZ01vZGUiLCJkcmF3UG9seWdvbiIsImRyYXdSZWN0YW5nbGUiLCJEcmF3UmVjdGFuZ2xlTW9kZSIsImRyYXdTcXVhcmUiLCJEcmF3U3F1YXJlTW9kZSIsImRyYXdSZWN0YW5nbGVGcm9tQ2VudGVyIiwiRHJhd1JlY3RhbmdsZUZyb21DZW50ZXJNb2RlIiwiZHJhd1NxdWFyZUZyb21DZW50ZXIiLCJEcmF3U3F1YXJlRnJvbUNlbnRlck1vZGUiLCJkcmF3Q2lyY2xlRnJvbUNlbnRlciIsIkRyYXdDaXJjbGVGcm9tQ2VudGVyTW9kZSIsImRyYXdDaXJjbGVCeUJvdW5kaW5nQm94IiwiRHJhd0NpcmNsZUJ5RGlhbWV0ZXJNb2RlIiwiZHJhd0VsbGlwc2VCeUJvdW5kaW5nQm94IiwiRHJhd0VsbGlwc2VCeUJvdW5kaW5nQm94TW9kZSIsImRyYXdSZWN0YW5nbGVVc2luZzNQb2ludHMiLCJEcmF3UmVjdGFuZ2xlVXNpbmdUaHJlZVBvaW50c01vZGUiLCJkcmF3RWxsaXBzZVVzaW5nM1BvaW50cyIsIkRyYXdFbGxpcHNlVXNpbmdUaHJlZVBvaW50c01vZGUiLCJkcmF3OTBEZWdyZWVQb2x5Z29uIiwiRHJhdzkwRGVncmVlUG9seWdvbk1vZGUiLCJkcmF3UG9seWdvbkJ5RHJhZ2dpbmciLCJEcmF3UG9seWdvbkJ5RHJhZ2dpbmdNb2RlIiwiRWRpdGFibGVHZW9Kc29uTGF5ZXIiLCJzdWJMYXllclByb3BzIiwiZ2V0U3ViTGF5ZXJQcm9wcyIsImlkIiwiZGF0YSIsInByb3BzIiwic2VsZWN0aW9uQXdhcmVBY2Nlc3NvciIsImdldFBvaW50UmFkaXVzIiwiX3N1YkxheWVyUHJvcHMiLCJsaW5lc3RyaW5ncyIsInVwZGF0ZVRyaWdnZXJzIiwiYWxsIiwic2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsInR5cGUiLCJFZGl0YWJsZVBhdGhMYXllciIsImxheWVycyIsIkdlb0pzb25MYXllciIsImNvbmNhdCIsImNyZWF0ZUd1aWRlc0xheWVycyIsImNyZWF0ZVRvb2x0aXBzTGF5ZXJzIiwic2V0U3RhdGUiLCJzZWxlY3RlZEZlYXR1cmVzIiwiZWRpdEhhbmRsZXMiLCJvcHRzIiwiY2hhbmdlRmxhZ3MiLCJzdGF0ZUNoYW5nZWQiLCJvbGRQcm9wcyIsImNvbnRleHQiLCJwcm9wc09yRGF0YUNoYW5nZWQiLCJtb2RlUHJvcENoYW5nZWQiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiTW9kZUNvbnN0cnVjdG9yIiwiY29uc29sZSIsIndhcm4iLCJTdHJpbmciLCJzdGF0ZSIsImN1cnNvciIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImVsZW0iLCJmZWF0dXJlcyIsIm1vZGVDb25maWciLCJzZWxlY3RlZEluZGV4ZXMiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsImVkaXRBY3Rpb24iLCJzZXROZWVkc1VwZGF0ZSIsIm9uVXBkYXRlQ3Vyc29yIiwiaXNGZWF0dXJlU2VsZWN0ZWQiLCJmZWF0dXJlSW5kZXgiLCJpbmRleE9mIiwiaW5jbHVkZXMiLCJpbmZvIiwic291cmNlTGF5ZXIiLCJlbmRzV2l0aCIsImlzR3VpZGUiLCJnZXRTdWJMYXllcnMiLCJsYXllciIsInVwZGF0ZUF1dG9IaWdobGlnaHQiLCJnZXRBY3RpdmVNb2RlIiwiZ3VpZGVzIiwiZ2V0R3VpZGVzIiwiZ2V0TW9kZVByb3BzIiwiYXV0b0hpZ2hsaWdodCIsIkljb25MYXllciIsImljb25BdGxhcyIsImljb25NYXBwaW5nIiwic2l6ZVVuaXRzIiwic2l6ZVNjYWxlIiwiZ2V0SWNvbiIsImdldFNpemUiLCJnZXRDb2xvciIsImdldEFuZ2xlIiwiU2NhdHRlcnBsb3RMYXllciIsInJhZGl1c1NjYWxlIiwicmFkaXVzVW5pdHMiLCJyYWRpdXNNaW5QaXhlbHMiLCJyYWRpdXNNYXhQaXhlbHMiLCJwb2ludFR5cGUiLCJ0b29sdGlwcyIsImdldFRvb2x0aXBzIiwiVGV4dExheWVyIiwiZXZlbnQiLCJoYW5kbGVDbGljayIsImhhbmRsZUtleVVwIiwiaGFuZGxlU3RhcnREcmFnZ2luZyIsImhhbmRsZURyYWdnaW5nIiwiaGFuZGxlU3RvcERyYWdnaW5nIiwiaGFuZGxlUG9pbnRlck1vdmUiLCJpc0RyYWdnaW5nIiwidW5kZWZpbmVkIiwiRWRpdGFibGVMYXllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBOztBQUVBOztBQW9DQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsa0JBQTZCLEdBQUcsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXLEdBQVgsRUFBZ0IsSUFBaEIsQ0FBdEM7QUFDQSxJQUFNQyxrQkFBNkIsR0FBRyxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsR0FBWCxFQUFnQixJQUFoQixDQUF0QztBQUNBLElBQU1DLDJCQUFzQyxHQUFHLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBVyxHQUFYLEVBQWdCLElBQWhCLENBQS9DO0FBQ0EsSUFBTUMsMkJBQXNDLEdBQUcsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXLElBQVgsRUFBaUIsSUFBakIsQ0FBL0M7QUFDQSxJQUFNQyw0QkFBdUMsR0FBRyxDQUFDLElBQUQsRUFBTyxJQUFQLEVBQWEsSUFBYixFQUFtQixJQUFuQixDQUFoRDtBQUNBLElBQU1DLDRCQUF1QyxHQUFHLENBQUMsSUFBRCxFQUFPLElBQVAsRUFBYSxJQUFiLEVBQW1CLElBQW5CLENBQWhEO0FBQ0EsSUFBTUMsb0NBQStDLEdBQUcsQ0FBQyxJQUFELEVBQU8sR0FBUCxFQUFZLEdBQVosRUFBaUIsSUFBakIsQ0FBeEQ7QUFDQSxJQUFNQyx3Q0FBbUQsR0FBRyxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsR0FBWCxFQUFnQixJQUFoQixDQUE1RDtBQUNBLElBQU1DLGdDQUEyQyxHQUFHLENBQUMsSUFBRCxFQUFPLElBQVAsRUFBYSxJQUFiLEVBQW1CLElBQW5CLENBQXBEO0FBQ0EsSUFBTUMsbUNBQThDLEdBQUcsQ0FBQyxJQUFELEVBQU8sSUFBUCxFQUFhLElBQWIsRUFBbUIsSUFBbkIsQ0FBdkQ7QUFDQSxJQUFNQyxxQ0FBcUMsR0FBRyxDQUE5QztBQUNBLElBQU1DLHlDQUF5QyxHQUFHLENBQWxEO0FBQ0EsSUFBTUMsaUNBQWlDLEdBQUcsQ0FBMUM7QUFDQSxJQUFNQyx5QkFBeUIsR0FBRyxLQUFLQywwQ0FBdkM7QUFFQSxJQUFNQyxpQkFBaUIsR0FBR0MsMEJBQTFCOztBQUVBLFNBQVNDLGFBQVQsQ0FBdUJDLFFBQXZCLEVBQWlDO0FBQy9CLE1BQUksQ0FBQ0EsUUFBRCxJQUFhLE9BQU9BLFFBQVAsS0FBb0IsVUFBckMsRUFBaUQ7QUFDL0MsV0FBT0EsUUFBUDtBQUNEOztBQUNELFNBQU8sVUFBQ0MsaUJBQUQ7QUFBQSxXQUF1QkQsUUFBUSxDQUFDRSxXQUFXLENBQUNELGlCQUFELENBQVosQ0FBL0I7QUFBQSxHQUFQO0FBQ0QsQyxDQUVEOzs7QUFDQSxTQUFTQyxXQUFULENBQXFCRCxpQkFBckIsRUFBd0M7QUFDdEMsTUFBSUEsaUJBQWlCLENBQUNFLFFBQXRCLEVBQWdDO0FBQzlCLFdBQU9GLGlCQUFpQixDQUFDRSxRQUFsQixDQUEyQkMsTUFBbEM7QUFDRCxHQUZELE1BRU8sSUFBSUgsaUJBQWlCLENBQUNJLGFBQXRCLEVBQXFDO0FBQzFDLFdBQU9KLGlCQUFpQixDQUFDSSxhQUFsQixDQUFnQ0MsT0FBdkM7QUFDRCxHQUxxQyxDQU10Qzs7O0FBQ0EsU0FBT0wsaUJBQVA7QUFDRDs7QUFFRCxTQUFTTSxrQkFBVCxDQUE0QkMsTUFBNUIsRUFBb0M7QUFDbEMsVUFBUUEsTUFBTSxDQUFDQyxVQUFQLENBQWtCQyxjQUExQjtBQUNFLFNBQUssVUFBTDtBQUNFLGFBQU90QixvQ0FBUDs7QUFDRixTQUFLLGFBQUw7QUFDRSxhQUFPRSxnQ0FBUDs7QUFDRixTQUFLLGNBQUw7QUFDQTtBQUNFLGFBQU9ELHdDQUFQO0FBUEo7QUFTRDs7QUFFRCxTQUFTc0IseUJBQVQsQ0FBbUNILE1BQW5DLEVBQTJDO0FBQ3pDLFNBQU9qQixtQ0FBUDtBQUNEOztBQUVELFNBQVNxQixtQkFBVCxDQUE2QkosTUFBN0IsRUFBcUM7QUFDbkMsVUFBUUEsTUFBTSxDQUFDQyxVQUFQLENBQWtCQyxjQUExQjtBQUNFLFNBQUssVUFBTDtBQUNFLGFBQU9sQixxQ0FBUDs7QUFDRixTQUFLLE1BQUw7QUFDRSxhQUFPRSxpQ0FBUDs7QUFDRixTQUFLLGNBQUw7QUFDQTtBQUNFLGFBQU9ELHlDQUFQO0FBUEo7QUFTRDs7QUE2REQsSUFBTW9CLFlBQTRDLEdBQUc7QUFDbkRDLEVBQUFBLElBQUksRUFBRWpCLGlCQUQ2QztBQUduRDtBQUNBa0IsRUFBQUEsTUFBTSxFQUFFLGtCQUFNLENBQUUsQ0FKbUM7QUFNbkRDLEVBQUFBLFFBQVEsRUFBRSxJQU55QztBQU9uREMsRUFBQUEsYUFBYSxFQUFFLEVBUG9DO0FBUW5EQyxFQUFBQSxZQUFZLEVBQUUsQ0FScUM7QUFTbkRDLEVBQUFBLElBQUksRUFBRSxLQVQ2QztBQVVuREMsRUFBQUEsTUFBTSxFQUFFLElBVjJDO0FBV25EQyxFQUFBQSxPQUFPLEVBQUUsSUFYMEM7QUFZbkRDLEVBQUFBLGNBQWMsRUFBRTFCLDBDQVptQztBQWFuRDJCLEVBQUFBLGtCQUFrQixFQUFFLENBYitCO0FBY25EQyxFQUFBQSxrQkFBa0IsRUFBRUMsTUFBTSxDQUFDQyxnQkFkd0I7QUFlbkRDLEVBQUFBLDJCQUEyQixFQUFFLENBZnNCO0FBZ0JuREMsRUFBQUEsY0FBYyxFQUFFLFFBaEJtQztBQWlCbkRDLEVBQUFBLGdCQUFnQixFQUFFLEtBakJpQztBQWtCbkRDLEVBQUFBLGNBQWMsRUFBRSxLQWxCbUM7QUFtQm5EQyxFQUFBQSxjQUFjLEVBQUUsQ0FuQm1DO0FBb0JuREMsRUFBQUEsZ0JBQWdCLEVBQUUsQ0FwQmlDO0FBcUJuREMsRUFBQUEsb0JBQW9CLEVBQUUsQ0FyQjZCO0FBc0JuREMsRUFBQUEsb0JBQW9CLEVBQUVULE1BQU0sQ0FBQ0MsZ0JBdEJzQjtBQXVCbkRTLEVBQUFBLFlBQVksRUFBRSxzQkFBQzdCLE9BQUQsRUFBVThCLFVBQVYsRUFBc0J0QixJQUF0QjtBQUFBLFdBQ1pzQixVQUFVLEdBQUdwRCwyQkFBSCxHQUFpQ0Ysa0JBRC9CO0FBQUEsR0F2QnFDO0FBeUJuRHVELEVBQUFBLFlBQVksRUFBRSxzQkFBQy9CLE9BQUQsRUFBVThCLFVBQVYsRUFBc0J0QixJQUF0QjtBQUFBLFdBQ1pzQixVQUFVLEdBQUduRCwyQkFBSCxHQUFpQ0Ysa0JBRC9CO0FBQUEsR0F6QnFDO0FBMkJuRHVELEVBQUFBLFNBQVMsRUFBRSxtQkFBQ0MsQ0FBRDtBQUFBLFdBQ1JBLENBQUMsSUFBSUEsQ0FBQyxDQUFDOUIsVUFBUCxJQUFxQjhCLENBQUMsQ0FBQzlCLFVBQUYsQ0FBYStCLE1BQW5DLElBQStDRCxDQUFDLElBQUlBLENBQUMsQ0FBQzlCLFVBQVAsSUFBcUI4QixDQUFDLENBQUM5QixVQUFGLENBQWFnQyxJQUFqRixJQUEwRixDQURqRjtBQUFBLEdBM0J3QztBQTZCbkRDLEVBQUFBLFlBQVksRUFBRSxzQkFBQ0gsQ0FBRDtBQUFBLFdBQVFBLENBQUMsSUFBSUEsQ0FBQyxDQUFDOUIsVUFBUCxJQUFxQjhCLENBQUMsQ0FBQzlCLFVBQUYsQ0FBYWtDLFNBQW5DLElBQWlELENBQXhEO0FBQUEsR0E3QnFDO0FBK0JuRDtBQUNBQyxFQUFBQSxxQkFBcUIsRUFBRSwrQkFBQ0wsQ0FBRDtBQUFBLFdBQU9yRCw0QkFBUDtBQUFBLEdBaEM0QjtBQWlDbkQyRCxFQUFBQSxxQkFBcUIsRUFBRSwrQkFBQ04sQ0FBRDtBQUFBLFdBQU9wRCw0QkFBUDtBQUFBLEdBakM0QjtBQWtDbkQyRCxFQUFBQSxxQkFBcUIsRUFBRSwrQkFBQ1AsQ0FBRDtBQUFBLFdBQVFBLENBQUMsSUFBSUEsQ0FBQyxDQUFDOUIsVUFBUCxJQUFxQjhCLENBQUMsQ0FBQzlCLFVBQUYsQ0FBYWtDLFNBQW5DLElBQWlELENBQXhEO0FBQUEsR0FsQzRCO0FBb0NuRGpDLEVBQUFBLGNBQWMsRUFBRSxPQXBDbUM7QUFzQ25EO0FBQ0FxQyxFQUFBQSwwQkFBMEIsRUFBRSxDQXZDdUI7QUF3Q25EQyxFQUFBQSxzQkFBc0IsRUFBRSxJQXhDMkI7QUF5Q25EQyxFQUFBQSwwQkFBMEIsRUFBRSxDQXpDdUI7QUEwQ25EQyxFQUFBQSwwQkFBMEIsRUFBRSxRQTFDdUI7QUEyQ25EQyxFQUFBQSw4QkFBOEIsRUFBRSxDQTNDbUI7QUE0Q25EQyxFQUFBQSw4QkFBOEIsRUFBRSxDQTVDbUI7QUE2Q25EQyxFQUFBQSx1QkFBdUIsRUFBRTlDLGtCQTdDMEI7QUE4Q25EK0MsRUFBQUEsOEJBQThCLEVBQUUzQyx5QkE5Q21CO0FBK0NuRDRDLEVBQUFBLHdCQUF3QixFQUFFM0MsbUJBL0N5QjtBQWlEbkQ7QUFDQTRDLEVBQUFBLG1CQUFtQixFQUFFLElBbEQ4QjtBQW1EbkRDLEVBQUFBLHFCQUFxQixFQUFFLElBbkQ0QjtBQW9EbkRDLEVBQUFBLHVCQUF1QixFQUFFLENBcEQwQjtBQXFEbkRDLEVBQUFBLHVCQUF1QixFQUFFLFFBckQwQjtBQXNEbkRDLEVBQUFBLGlCQUFpQixFQUFFLDJCQUFDcEQsTUFBRDtBQUFBLFdBQVlBLE1BQU0sQ0FBQ0MsVUFBUCxDQUFrQkMsY0FBOUI7QUFBQSxHQXREZ0M7QUF1RG5EbUQsRUFBQUEscUJBQXFCLEVBQUUsRUF2RDRCO0FBd0RuREMsRUFBQUEsc0JBQXNCLEVBQUV2RCxrQkF4RDJCO0FBeURuRHdELEVBQUFBLHNCQUFzQixFQUFFLENBekQyQjtBQTJEbkQ7QUFDQUMsRUFBQUEsU0FBUyxFQUFFO0FBNUR3QyxDQUFyRCxDLENBK0RBOztBQUNBLElBQU1DLGVBQWUsR0FBRztBQUN0QkMsRUFBQUEsSUFBSSxFQUFFQyxtQkFEZ0I7QUFHdEI7QUFDQUMsRUFBQUEsTUFBTSxFQUFFQyxxQkFKYztBQUt0QkMsRUFBQUEsU0FBUyxFQUFFLElBQUlDLHdCQUFKLENBQWtCLElBQUlDLHdCQUFKLEVBQWxCLENBTFc7QUFPdEJDLEVBQUFBLFNBQVMsRUFBRSxJQUFJRix3QkFBSixDQUFrQixJQUFJRyx3QkFBSixFQUFsQixDQVBXO0FBUXRCQyxFQUFBQSxLQUFLLEVBQUVDLG9CQVJlO0FBU3RCQyxFQUFBQSxNQUFNLEVBQUVDLHFCQVRjO0FBVXRCQyxFQUFBQSxTQUFTLEVBQUVDLHdCQVZXO0FBV3RCQyxFQUFBQSxLQUFLLEVBQUVDLDJCQVhlO0FBWXRCQyxFQUFBQSxPQUFPLEVBQUVDLHNCQVphO0FBYXRCQyxFQUFBQSxTQUFTLEVBQUVDLHdCQWJXO0FBZXRCO0FBQ0FDLEVBQUFBLFNBQVMsRUFBRUMsd0JBaEJXO0FBaUJ0QkMsRUFBQUEsY0FBYyxFQUFFQyw2QkFqQk07QUFrQnRCQyxFQUFBQSxXQUFXLEVBQUU3RiwwQkFsQlM7QUFtQnRCOEYsRUFBQUEsYUFBYSxFQUFFQyw0QkFuQk87QUFvQnRCQyxFQUFBQSxVQUFVLEVBQUVDLHlCQXBCVTtBQXFCdEJDLEVBQUFBLHVCQUF1QixFQUFFQyxzQ0FyQkg7QUFzQnRCQyxFQUFBQSxvQkFBb0IsRUFBRUMsbUNBdEJBO0FBdUJ0QkMsRUFBQUEsb0JBQW9CLEVBQUVDLG1DQXZCQTtBQXdCdEJDLEVBQUFBLHVCQUF1QixFQUFFQyxtQ0F4Qkg7QUF5QnRCQyxFQUFBQSx3QkFBd0IsRUFBRUMsdUNBekJKO0FBMEJ0QkMsRUFBQUEseUJBQXlCLEVBQUVDLDRDQTFCTDtBQTJCdEJDLEVBQUFBLHVCQUF1QixFQUFFQywwQ0EzQkg7QUE0QnRCQyxFQUFBQSxtQkFBbUIsRUFBRUMsa0NBNUJDO0FBNkJ0QkMsRUFBQUEscUJBQXFCLEVBQUVDO0FBN0JELENBQXhCLEMsQ0FnQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztJQUVxQkMsb0I7Ozs7Ozs7Ozs7Ozs7QUFPbkI7bUNBQ2U7QUFDYixVQUFNQyxhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsQ0FBc0I7QUFDMUNDLFFBQUFBLEVBQUUsRUFBRSxTQURzQztBQUcxQztBQUNBQyxRQUFBQSxJQUFJLEVBQUUsS0FBS0MsS0FBTCxDQUFXRCxJQUp5QjtBQUsxQ25HLFFBQUFBLElBQUksRUFBRSxLQUFLb0csS0FBTCxDQUFXcEcsSUFMeUI7QUFNMUNDLFFBQUFBLE1BQU0sRUFBRSxLQUFLbUcsS0FBTCxDQUFXbkcsTUFOdUI7QUFPMUNDLFFBQUFBLE9BQU8sRUFBRSxLQUFLa0csS0FBTCxDQUFXbEcsT0FQc0I7QUFRMUNDLFFBQUFBLGNBQWMsRUFBRSxLQUFLaUcsS0FBTCxDQUFXakcsY0FSZTtBQVMxQ0MsUUFBQUEsa0JBQWtCLEVBQUUsS0FBS2dHLEtBQUwsQ0FBV2hHLGtCQVRXO0FBVTFDQyxRQUFBQSxrQkFBa0IsRUFBRSxLQUFLK0YsS0FBTCxDQUFXL0Ysa0JBVlc7QUFXMUNJLFFBQUFBLGNBQWMsRUFBRSxLQUFLMkYsS0FBTCxDQUFXM0YsY0FYZTtBQVkxQ0MsUUFBQUEsZ0JBQWdCLEVBQUUsS0FBSzBGLEtBQUwsQ0FBVzFGLGdCQVphO0FBYTFDQyxRQUFBQSxjQUFjLEVBQUUsS0FBS3lGLEtBQUwsQ0FBV3pGLGNBYmU7QUFjMUNDLFFBQUFBLGNBQWMsRUFBRSxLQUFLd0YsS0FBTCxDQUFXeEYsY0FkZTtBQWUxQ0MsUUFBQUEsZ0JBQWdCLEVBQUUsS0FBS3VGLEtBQUwsQ0FBV3ZGLGdCQWZhO0FBZ0IxQ0MsUUFBQUEsb0JBQW9CLEVBQUUsS0FBS3NGLEtBQUwsQ0FBV3RGLG9CQWhCUztBQWlCMUNDLFFBQUFBLG9CQUFvQixFQUFFLEtBQUtxRixLQUFMLENBQVdyRixvQkFqQlM7QUFrQjFDQyxRQUFBQSxZQUFZLEVBQUUsS0FBS3FGLHNCQUFMLENBQTRCLEtBQUtELEtBQUwsQ0FBV3BGLFlBQXZDLENBbEI0QjtBQW1CMUNFLFFBQUFBLFlBQVksRUFBRSxLQUFLbUYsc0JBQUwsQ0FBNEIsS0FBS0QsS0FBTCxDQUFXbEYsWUFBdkMsQ0FuQjRCO0FBb0IxQ29GLFFBQUFBLGNBQWMsRUFBRSxLQUFLRCxzQkFBTCxDQUE0QixLQUFLRCxLQUFMLENBQVdqRixTQUF2QyxDQXBCMEI7QUFxQjFDSSxRQUFBQSxZQUFZLEVBQUUsS0FBSzhFLHNCQUFMLENBQTRCLEtBQUtELEtBQUwsQ0FBVzdFLFlBQXZDLENBckI0QjtBQXVCMUNnRixRQUFBQSxjQUFjLEVBQUU7QUFDZEMsVUFBQUEsV0FBVyxFQUFFO0FBQ1gzRCxZQUFBQSxTQUFTLEVBQUUsS0FBS3VELEtBQUwsQ0FBV3ZELFNBRFg7QUFFWDRELFlBQUFBLGNBQWMsRUFBRTtBQUNkO0FBQ0FDLGNBQUFBLEdBQUcsRUFBRSxDQUFDLEtBQUtOLEtBQUwsQ0FBV08sc0JBQVosRUFBb0MsS0FBS1AsS0FBTCxDQUFXekcsSUFBL0M7QUFGUztBQUZMLFdBREM7QUFRZCw2QkFBbUI7QUFDakJrRCxZQUFBQSxTQUFTLEVBQUUsS0FBS3VELEtBQUwsQ0FBV3ZELFNBREw7QUFFakJyQyxZQUFBQSwyQkFBMkIsRUFBRSxLQUFLNEYsS0FBTCxDQUFXNUYsMkJBRnZCO0FBR2pCb0csWUFBQUEsSUFBSSxFQUFFQyw2QkFIVztBQUlqQkosWUFBQUEsY0FBYyxFQUFFO0FBQ2Q7QUFDQUMsY0FBQUEsR0FBRyxFQUFFLENBQUMsS0FBS04sS0FBTCxDQUFXTyxzQkFBWixFQUFvQyxLQUFLUCxLQUFMLENBQVd6RyxJQUEvQztBQUZTO0FBSkM7QUFSTCxTQXZCMEI7QUEwQzFDOEcsUUFBQUEsY0FBYyxFQUFFO0FBQ2R6RixVQUFBQSxZQUFZLEVBQUUsQ0FBQyxLQUFLb0YsS0FBTCxDQUFXTyxzQkFBWixFQUFvQyxLQUFLUCxLQUFMLENBQVd6RyxJQUEvQyxDQURBO0FBRWR1QixVQUFBQSxZQUFZLEVBQUUsQ0FBQyxLQUFLa0YsS0FBTCxDQUFXTyxzQkFBWixFQUFvQyxLQUFLUCxLQUFMLENBQVd6RyxJQUEvQyxDQUZBO0FBR2QyRyxVQUFBQSxjQUFjLEVBQUUsQ0FBQyxLQUFLRixLQUFMLENBQVdPLHNCQUFaLEVBQW9DLEtBQUtQLEtBQUwsQ0FBV3pHLElBQS9DLENBSEY7QUFJZDRCLFVBQUFBLFlBQVksRUFBRSxDQUFDLEtBQUs2RSxLQUFMLENBQVdPLHNCQUFaLEVBQW9DLEtBQUtQLEtBQUwsQ0FBV3pHLElBQS9DO0FBSkE7QUExQzBCLE9BQXRCLENBQXRCO0FBa0RBLFVBQUltSCxNQUFXLEdBQUcsQ0FBQyxJQUFJQyxvQkFBSixDQUFpQmYsYUFBakIsQ0FBRCxDQUFsQjtBQUVBYyxNQUFBQSxNQUFNLEdBQUdBLE1BQU0sQ0FBQ0UsTUFBUCxDQUFjLEtBQUtDLGtCQUFMLEVBQWQsRUFBeUMsS0FBS0Msb0JBQUwsRUFBekMsQ0FBVDtBQUVBLGFBQU9KLE1BQVA7QUFDRDs7O3NDQUVpQjtBQUNoQjs7QUFFQSxXQUFLSyxRQUFMLENBQWM7QUFDWkMsUUFBQUEsZ0JBQWdCLEVBQUUsRUFETjtBQUVaQyxRQUFBQSxXQUFXLEVBQUU7QUFGRCxPQUFkO0FBSUQsSyxDQUVEOzs7O3NDQUNrQkMsSSxFQUFXO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFPLDRGQUF3QkEsSUFBeEIsS0FBaUNBLElBQUksQ0FBQ0MsV0FBTCxDQUFpQkMsWUFBekQ7QUFDRDs7O3NDQWFFO0FBQUEsVUFWRHBCLEtBVUMsUUFWREEsS0FVQztBQUFBLFVBVERxQixRQVNDLFFBVERBLFFBU0M7QUFBQSxVQVJERixXQVFDLFFBUkRBLFdBUUM7QUFBQSxVQVBERyxPQU9DLFFBUERBLE9BT0M7O0FBQ0QsNEZBQWtCO0FBQUVELFFBQUFBLFFBQVEsRUFBUkEsUUFBRjtBQUFZckIsUUFBQUEsS0FBSyxFQUFMQSxLQUFaO0FBQW1CbUIsUUFBQUEsV0FBVyxFQUFYQSxXQUFuQjtBQUFnQ0csUUFBQUEsT0FBTyxFQUFQQTtBQUFoQyxPQUFsQjs7QUFFQSxVQUFJSCxXQUFXLENBQUNJLGtCQUFoQixFQUFvQztBQUNsQyxZQUFNQyxlQUFlLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZTCxRQUFaLEVBQXNCTSxNQUF0QixLQUFpQyxDQUFqQyxJQUFzQzNCLEtBQUssQ0FBQ3pHLElBQU4sS0FBZThILFFBQVEsQ0FBQzlILElBQXRGOztBQUNBLFlBQUlpSSxlQUFKLEVBQXFCO0FBQ25CLGNBQUlqSSxLQUFKOztBQUNBLGNBQUksT0FBT3lHLEtBQUssQ0FBQ3pHLElBQWIsS0FBc0IsVUFBMUIsRUFBc0M7QUFDcEM7QUFDQSxnQkFBTXFJLGVBQWUsR0FBRzVCLEtBQUssQ0FBQ3pHLElBQTlCO0FBQ0FBLFlBQUFBLEtBQUksR0FBRyxJQUFJcUksZUFBSixFQUFQO0FBQ0QsV0FKRCxNQUlPLElBQUksT0FBTzVCLEtBQUssQ0FBQ3pHLElBQWIsS0FBc0IsUUFBMUIsRUFBb0M7QUFDekM7QUFDQUEsWUFBQUEsS0FBSSxHQUFHbUQsZUFBZSxDQUFDc0QsS0FBSyxDQUFDekcsSUFBUCxDQUF0QixDQUZ5QyxDQUd6Qzs7QUFDQXNJLFlBQUFBLE9BQU8sQ0FBQ0MsSUFBUixDQUNFLDBGQURGO0FBR0QsV0FQTSxNQU9BO0FBQ0w7QUFDQXZJLFlBQUFBLEtBQUksR0FBR3lHLEtBQUssQ0FBQ3pHLElBQWI7QUFDRDs7QUFFRCxjQUFJLENBQUNBLEtBQUwsRUFBVztBQUNUc0ksWUFBQUEsT0FBTyxDQUFDQyxJQUFSLGtDQUF1Q0MsTUFBTSxDQUFDL0IsS0FBSyxDQUFDekcsSUFBUCxDQUE3QyxHQURTLENBQ3FEO0FBQzlEOztBQUNBQSxZQUFBQSxLQUFJLEdBQUcsSUFBSWpCLGlCQUFKLEVBQVA7QUFDRDs7QUFFRCxjQUFJaUIsS0FBSSxLQUFLLEtBQUt5SSxLQUFMLENBQVd6SSxJQUF4QixFQUE4QjtBQUM1QixpQkFBS3dILFFBQUwsQ0FBYztBQUFFeEgsY0FBQUEsSUFBSSxFQUFKQSxLQUFGO0FBQVEwSSxjQUFBQSxNQUFNLEVBQUU7QUFBaEIsYUFBZDtBQUNEO0FBQ0Y7QUFDRjs7QUFFRCxVQUFJakIsZ0JBQWdCLEdBQUcsRUFBdkI7O0FBQ0EsVUFBSWtCLEtBQUssQ0FBQ0MsT0FBTixDQUFjbkMsS0FBSyxDQUFDTyxzQkFBcEIsQ0FBSixFQUFpRDtBQUMvQztBQUNBUyxRQUFBQSxnQkFBZ0IsR0FBR2hCLEtBQUssQ0FBQ08sc0JBQU4sQ0FBNkI2QixHQUE3QixDQUFpQyxVQUFDQyxJQUFEO0FBQUEsaUJBQVVyQyxLQUFLLENBQUNELElBQU4sQ0FBV3VDLFFBQVgsQ0FBb0JELElBQXBCLENBQVY7QUFBQSxTQUFqQyxDQUFuQjtBQUNEOztBQUVELFdBQUt0QixRQUFMLENBQWM7QUFBRUMsUUFBQUEsZ0JBQWdCLEVBQWhCQTtBQUFGLE9BQWQ7QUFDRDs7O2lDQUVZaEIsSyxFQUF1QztBQUFBOztBQUNsRCxhQUFPO0FBQ0x1QyxRQUFBQSxVQUFVLEVBQUV2QyxLQUFLLENBQUN1QyxVQURiO0FBRUx4QyxRQUFBQSxJQUFJLEVBQUVDLEtBQUssQ0FBQ0QsSUFGUDtBQUdMeUMsUUFBQUEsZUFBZSxFQUFFeEMsS0FBSyxDQUFDTyxzQkFIbEI7QUFJTGtDLFFBQUFBLG9CQUFvQixFQUFFLEtBQUtULEtBQUwsQ0FBV1Msb0JBSjVCO0FBS0xSLFFBQUFBLE1BQU0sRUFBRSxLQUFLRCxLQUFMLENBQVdDLE1BTGQ7QUFNTHpJLFFBQUFBLE1BQU0sRUFBRSxnQkFBQ2tKLFVBQUQsRUFBK0M7QUFDckQ7QUFDQTtBQUNBO0FBQ0EsVUFBQSxLQUFJLENBQUNDLGNBQUw7O0FBQ0EzQyxVQUFBQSxLQUFLLENBQUN4RyxNQUFOLENBQWFrSixVQUFiO0FBQ0QsU0FaSTtBQWFMRSxRQUFBQSxjQUFjLEVBQUUsd0JBQUNYLE1BQUQsRUFBdUM7QUFDckQsVUFBQSxLQUFJLENBQUNsQixRQUFMLENBQWM7QUFBRWtCLFlBQUFBLE1BQU0sRUFBTkE7QUFBRixXQUFkO0FBQ0Q7QUFmSSxPQUFQO0FBaUJEOzs7MkNBRXNCeEosUSxFQUFlO0FBQUE7O0FBQ3BDLFVBQUksT0FBT0EsUUFBUCxLQUFvQixVQUF4QixFQUFvQztBQUNsQyxlQUFPQSxRQUFQO0FBQ0Q7O0FBQ0QsYUFBTyxVQUFDTSxPQUFEO0FBQUEsZUFDTE4sUUFBUSxDQUFDTSxPQUFELEVBQVUsTUFBSSxDQUFDOEosaUJBQUwsQ0FBdUI5SixPQUF2QixDQUFWLEVBQTJDLE1BQUksQ0FBQ2lILEtBQUwsQ0FBV3pHLElBQXRELENBREg7QUFBQSxPQUFQO0FBRUQ7OztzQ0FFaUJSLE8sRUFBOEI7QUFDOUMsVUFBSSxDQUFDLEtBQUtpSCxLQUFMLENBQVdELElBQVosSUFBb0IsQ0FBQyxLQUFLQyxLQUFMLENBQVdPLHNCQUFwQyxFQUE0RDtBQUMxRCxlQUFPLEtBQVA7QUFDRDs7QUFDRCxVQUFJLENBQUMsS0FBS1AsS0FBTCxDQUFXTyxzQkFBWCxDQUFrQ29CLE1BQXZDLEVBQStDO0FBQzdDLGVBQU8sS0FBUDtBQUNEOztBQUNELFVBQU1tQixZQUFZLEdBQUcsS0FBSzlDLEtBQUwsQ0FBV0QsSUFBWCxDQUFnQnVDLFFBQWhCLENBQXlCUyxPQUF6QixDQUFpQ2hLLE9BQWpDLENBQXJCO0FBQ0EsYUFBTyxLQUFLaUgsS0FBTCxDQUFXTyxzQkFBWCxDQUFrQ3lDLFFBQWxDLENBQTJDRixZQUEzQyxDQUFQO0FBQ0Q7OzswQ0FFMEQ7QUFBQSxVQUExQ0csSUFBMEMsU0FBMUNBLElBQTBDO0FBQUEsVUFBcENDLFdBQW9DLFNBQXBDQSxXQUFvQzs7QUFDekQsVUFBSUEsV0FBVyxDQUFDcEQsRUFBWixDQUFlcUQsUUFBZixDQUF3QixRQUF4QixDQUFKLEVBQXVDO0FBQ3JDO0FBQ0FGLFFBQUFBLElBQUksQ0FBQ0csT0FBTCxHQUFlLElBQWY7QUFDRDs7QUFFRCxhQUFPSCxJQUFQO0FBQ0Q7Ozt5Q0FFb0JBLEksRUFBTTtBQUN6QjtBQUNBLFVBQUlBLElBQUosYUFBSUEsSUFBSix1QkFBSUEsSUFBSSxDQUFFQyxXQUFWLEVBQXVCO0FBQ3JCLFlBQUlELElBQUksQ0FBQ0csT0FBVCxFQUFrQjtBQUFBLHFEQUNJSCxJQUFJLENBQUNDLFdBQUwsQ0FBaUJHLFlBQWpCLEVBREo7QUFBQTs7QUFBQTtBQUNoQixnRUFBcUQ7QUFBQSxrQkFBMUNDLEtBQTBDO0FBQ25EQSxjQUFBQSxLQUFLLENBQUNDLG1CQUFOLENBQTBCTixJQUExQjtBQUNEO0FBSGU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlqQixTQUpELE1BSU87QUFDTEEsVUFBQUEsSUFBSSxDQUFDQyxXQUFMLENBQWlCSyxtQkFBakIsQ0FBcUNOLElBQXJDO0FBQ0Q7QUFDRjtBQUNGOzs7eUNBRW9CO0FBQ25CLFVBQU0xSixJQUFJLEdBQUcsS0FBS2lLLGFBQUwsRUFBYjtBQUNBLFVBQU1DLE1BQXlCLEdBQUdsSyxJQUFJLENBQUNtSyxTQUFMLENBQWUsS0FBS0MsWUFBTCxDQUFrQixLQUFLM0QsS0FBdkIsQ0FBZixDQUFsQzs7QUFFQSxVQUFJLENBQUN5RCxNQUFELElBQVcsQ0FBQ0EsTUFBTSxDQUFDbkIsUUFBUCxDQUFnQlgsTUFBaEMsRUFBd0M7QUFDdEMsZUFBTyxFQUFQO0FBQ0Q7O0FBRUQsVUFBTS9CLGFBQWEsR0FBRztBQUNwQlEsUUFBQUEsV0FBVyxFQUFFO0FBQ1gzRCxVQUFBQSxTQUFTLEVBQUUsS0FBS3VELEtBQUwsQ0FBV3ZELFNBRFg7QUFFWG1ILFVBQUFBLGFBQWEsRUFBRTtBQUZKLFNBRE87QUFLcEIseUJBQWlCO0FBQ2ZBLFVBQUFBLGFBQWEsRUFBRTtBQURBLFNBTEc7QUFRcEIsMkJBQW1CO0FBQ2pCbkgsVUFBQUEsU0FBUyxFQUFFLEtBQUt1RCxLQUFMLENBQVd2RDtBQURMO0FBUkMsT0FBdEI7O0FBYUEsVUFBSSxLQUFLdUQsS0FBTCxDQUFXN0csY0FBWCxLQUE4QixNQUFsQyxFQUEwQztBQUN4Q3lHLFFBQUFBLGFBQWEsQ0FBQyxhQUFELENBQWIsR0FBK0I7QUFDN0JZLFVBQUFBLElBQUksRUFBRXFELGlCQUR1QjtBQUU3QkMsVUFBQUEsU0FBUyxFQUFFLEtBQUs5RCxLQUFMLENBQVcvRCxtQkFGTztBQUc3QjhILFVBQUFBLFdBQVcsRUFBRSxLQUFLL0QsS0FBTCxDQUFXOUQscUJBSEs7QUFJN0I4SCxVQUFBQSxTQUFTLEVBQUUsS0FBS2hFLEtBQUwsQ0FBVzVELHVCQUpPO0FBSzdCNkgsVUFBQUEsU0FBUyxFQUFFLEtBQUtqRSxLQUFMLENBQVc3RCx1QkFMTztBQU03QitILFVBQUFBLE9BQU8sRUFBRTFMLGFBQWEsQ0FBQyxLQUFLd0gsS0FBTCxDQUFXM0QsaUJBQVosQ0FOTztBQU83QjhILFVBQUFBLE9BQU8sRUFBRTNMLGFBQWEsQ0FBQyxLQUFLd0gsS0FBTCxDQUFXMUQscUJBQVosQ0FQTztBQVE3QjhILFVBQUFBLFFBQVEsRUFBRTVMLGFBQWEsQ0FBQyxLQUFLd0gsS0FBTCxDQUFXekQsc0JBQVosQ0FSTTtBQVM3QjhILFVBQUFBLFFBQVEsRUFBRTdMLGFBQWEsQ0FBQyxLQUFLd0gsS0FBTCxDQUFXeEQsc0JBQVo7QUFUTSxTQUEvQjtBQVdELE9BWkQsTUFZTztBQUNMb0QsUUFBQUEsYUFBYSxDQUFDLGVBQUQsQ0FBYixHQUFpQztBQUMvQlksVUFBQUEsSUFBSSxFQUFFOEQsd0JBRHlCO0FBRS9CQyxVQUFBQSxXQUFXLEVBQUUsS0FBS3ZFLEtBQUwsQ0FBV3hFLDBCQUZPO0FBRy9CMUIsVUFBQUEsT0FBTyxFQUFFLEtBQUtrRyxLQUFMLENBQVd2RSxzQkFIVztBQUkvQk4sVUFBQUEsWUFBWSxFQUFFLEtBQUs2RSxLQUFMLENBQVd0RSwwQkFKTTtBQUsvQjhJLFVBQUFBLFdBQVcsRUFBRSxLQUFLeEUsS0FBTCxDQUFXckUsMEJBTE87QUFNL0I4SSxVQUFBQSxlQUFlLEVBQUUsS0FBS3pFLEtBQUwsQ0FBV3BFLDhCQU5HO0FBTy9COEksVUFBQUEsZUFBZSxFQUFFLEtBQUsxRSxLQUFMLENBQVduRSw4QkFQRztBQVEvQmQsVUFBQUEsU0FBUyxFQUFFdkMsYUFBYSxDQUFDLEtBQUt3SCxLQUFMLENBQVdoRSx3QkFBWixDQVJPO0FBUy9CbEIsVUFBQUEsWUFBWSxFQUFFdEMsYUFBYSxDQUFDLEtBQUt3SCxLQUFMLENBQVdsRSx1QkFBWixDQVRJO0FBVS9CbEIsVUFBQUEsWUFBWSxFQUFFcEMsYUFBYSxDQUFDLEtBQUt3SCxLQUFMLENBQVdqRSw4QkFBWjtBQVZJLFNBQWpDO0FBWUQ7O0FBRUQsVUFBTXVILEtBQUssR0FBRyxJQUFJM0Msb0JBQUosQ0FDWixLQUFLZCxnQkFBTCxDQUFzQjtBQUNwQkMsUUFBQUEsRUFBRSxVQURrQjtBQUVwQkMsUUFBQUEsSUFBSSxFQUFFMEQsTUFGYztBQUdwQjdKLFFBQUFBLElBQUksRUFBRSxLQUFLb0csS0FBTCxDQUFXcEcsSUFIRztBQUlwQnVHLFFBQUFBLGNBQWMsRUFBRVAsYUFKSTtBQUtwQjdGLFFBQUFBLGNBQWMsRUFBRSxLQUFLaUcsS0FBTCxDQUFXakcsY0FMUDtBQU1wQkMsUUFBQUEsa0JBQWtCLEVBQUUsS0FBS2dHLEtBQUwsQ0FBV2hHLGtCQU5YO0FBT3BCQyxRQUFBQSxrQkFBa0IsRUFBRSxLQUFLK0YsS0FBTCxDQUFXL0Ysa0JBUFg7QUFRcEJJLFFBQUFBLGNBQWMsRUFBRSxLQUFLMkYsS0FBTCxDQUFXM0YsY0FSUDtBQVNwQkMsUUFBQUEsZ0JBQWdCLEVBQUUsS0FBSzBGLEtBQUwsQ0FBVzFGLGdCQVRUO0FBVXBCQyxRQUFBQSxjQUFjLEVBQUUsS0FBS3lGLEtBQUwsQ0FBV3pGLGNBVlA7QUFXcEJDLFFBQUFBLGNBQWMsRUFBRSxLQUFLd0YsS0FBTCxDQUFXeEYsY0FYUDtBQVlwQkksUUFBQUEsWUFBWSxFQUFFcEMsYUFBYSxDQUFDLEtBQUt3SCxLQUFMLENBQVczRSxxQkFBWixDQVpQO0FBYXBCRixRQUFBQSxZQUFZLEVBQUUzQyxhQUFhLENBQUMsS0FBS3dILEtBQUwsQ0FBV3pFLHFCQUFaLENBYlA7QUFjcEJULFFBQUFBLFlBQVksRUFBRXRDLGFBQWEsQ0FBQyxLQUFLd0gsS0FBTCxDQUFXMUUscUJBQVosQ0FkUDtBQWVwQnFKLFFBQUFBLFNBQVMsRUFBRSxLQUFLM0UsS0FBTCxDQUFXN0csY0FBWCxLQUE4QixNQUE5QixHQUF1QyxNQUF2QyxHQUFnRCxRQWZ2QztBQWdCcEIySyxRQUFBQSxTQUFTLEVBQUUsS0FBSzlELEtBQUwsQ0FBVy9EO0FBaEJGLE9BQXRCLENBRFksQ0FBZDtBQXFCQSxhQUFPLENBQUNxSCxLQUFELENBQVA7QUFDRDs7OzJDQUVzQjtBQUNyQixVQUFNL0osSUFBSSxHQUFHLEtBQUtpSyxhQUFMLEVBQWI7QUFDQSxVQUFNb0IsUUFBUSxHQUFHckwsSUFBSSxDQUFDc0wsV0FBTCxDQUFpQixLQUFLbEIsWUFBTCxDQUFrQixLQUFLM0QsS0FBdkIsQ0FBakIsQ0FBakI7QUFFQSxVQUFNc0QsS0FBSyxHQUFHLElBQUl3QixpQkFBSjtBQUNaWCxRQUFBQSxPQUFPLEVBQUUvTDtBQURHLFNBRVQsS0FBS3lILGdCQUFMLENBQXNCO0FBQ3ZCQyxRQUFBQSxFQUFFLFlBRHFCO0FBRXZCQyxRQUFBQSxJQUFJLEVBQUU2RTtBQUZpQixPQUF0QixDQUZTLEVBQWQ7QUFRQSxhQUFPLENBQUN0QixLQUFELENBQVA7QUFDRDs7O2lDQUVZeUIsSyxFQUFtQjtBQUM5QixXQUFLdkIsYUFBTCxHQUFxQndCLFdBQXJCLENBQWlDRCxLQUFqQyxFQUF3QyxLQUFLcEIsWUFBTCxDQUFrQixLQUFLM0QsS0FBdkIsQ0FBeEM7QUFDRDs7O2lDQUVZK0UsSyxFQUFzQjtBQUNqQyxXQUFLdkIsYUFBTCxHQUFxQnlCLFdBQXJCLENBQWlDRixLQUFqQyxFQUF3QyxLQUFLcEIsWUFBTCxDQUFrQixLQUFLM0QsS0FBdkIsQ0FBeEM7QUFDRDs7O29DQUVlK0UsSyxFQUEyQjtBQUN6QyxXQUFLdkIsYUFBTCxHQUFxQjBCLG1CQUFyQixDQUF5Q0gsS0FBekMsRUFBZ0QsS0FBS3BCLFlBQUwsQ0FBa0IsS0FBSzNELEtBQXZCLENBQWhEO0FBQ0Q7OzsrQkFFVStFLEssRUFBc0I7QUFDL0IsV0FBS3ZCLGFBQUwsR0FBcUIyQixjQUFyQixDQUFvQ0osS0FBcEMsRUFBMkMsS0FBS3BCLFlBQUwsQ0FBa0IsS0FBSzNELEtBQXZCLENBQTNDO0FBQ0Q7OzttQ0FFYytFLEssRUFBMEI7QUFDdkMsV0FBS3ZCLGFBQUwsR0FBcUI0QixrQkFBckIsQ0FBd0NMLEtBQXhDLEVBQStDLEtBQUtwQixZQUFMLENBQWtCLEtBQUszRCxLQUF2QixDQUEvQztBQUNEOzs7a0NBRWErRSxLLEVBQXlCO0FBQ3JDLFdBQUtoRSxRQUFMLENBQWM7QUFBRTBCLFFBQUFBLG9CQUFvQixFQUFFc0M7QUFBeEIsT0FBZDtBQUNBLFdBQUt2QixhQUFMLEdBQXFCNkIsaUJBQXJCLENBQXVDTixLQUF2QyxFQUE4QyxLQUFLcEIsWUFBTCxDQUFrQixLQUFLM0QsS0FBdkIsQ0FBOUM7QUFDRDs7O3FDQUVrRDtBQUFBLFVBQXZDc0YsVUFBdUMsU0FBdkNBLFVBQXVDOztBQUNqRCxVQUFJLEtBQUt0RCxLQUFMLEtBQWUsSUFBZixJQUF1QixLQUFLQSxLQUFMLEtBQWV1RCxTQUExQyxFQUFxRDtBQUNuRDtBQUNBLGVBQU8sSUFBUDtBQUNEOztBQUpnRCxVQU0zQ3RELE1BTjJDLEdBTWhDLEtBQUtELEtBTjJCLENBTTNDQyxNQU4yQzs7QUFPakQsVUFBSSxDQUFDQSxNQUFMLEVBQWE7QUFDWDtBQUNBQSxRQUFBQSxNQUFNLEdBQUdxRCxVQUFVLEdBQUcsVUFBSCxHQUFnQixNQUFuQztBQUNEOztBQUNELGFBQU9yRCxNQUFQO0FBQ0Q7OztvQ0FFb0M7QUFDbkMsYUFBTyxLQUFLRCxLQUFMLENBQVd6SSxJQUFsQjtBQUNEOzs7O0VBelUrQ2lNLHlCOzs7O2dCQUE3QjdGLG9CLGVBSUEsc0I7O2dCQUpBQSxvQixrQkFLR3JHLFkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxuaW1wb3J0IHsgUkdCQUNvbG9yIH0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQgeyBHZW9Kc29uTGF5ZXIsIFNjYXR0ZXJwbG90TGF5ZXIsIEljb25MYXllciwgVGV4dExheWVyIH0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuaW1wb3J0IHtcbiAgVmlld01vZGUsXG4gIE1vZGlmeU1vZGUsXG4gIFRyYW5zbGF0ZU1vZGUsXG4gIFNjYWxlTW9kZSxcbiAgUm90YXRlTW9kZSxcbiAgRHVwbGljYXRlTW9kZSxcbiAgU3BsaXRQb2x5Z29uTW9kZSxcbiAgRXh0cnVkZU1vZGUsXG4gIEVsZXZhdGlvbk1vZGUsXG4gIERyYXdQb2ludE1vZGUsXG4gIERyYXdMaW5lU3RyaW5nTW9kZSxcbiAgRHJhd1BvbHlnb25Nb2RlLFxuICBEcmF3UmVjdGFuZ2xlTW9kZSxcbiAgRHJhd1NxdWFyZU1vZGUsXG4gIERyYXdSZWN0YW5nbGVGcm9tQ2VudGVyTW9kZSxcbiAgRHJhd1NxdWFyZUZyb21DZW50ZXJNb2RlLFxuICBEcmF3Q2lyY2xlRnJvbUNlbnRlck1vZGUsXG4gIERyYXdDaXJjbGVCeURpYW1ldGVyTW9kZSxcbiAgRHJhd0VsbGlwc2VCeUJvdW5kaW5nQm94TW9kZSxcbiAgRHJhd1JlY3RhbmdsZVVzaW5nVGhyZWVQb2ludHNNb2RlLFxuICBEcmF3RWxsaXBzZVVzaW5nVGhyZWVQb2ludHNNb2RlLFxuICBEcmF3OTBEZWdyZWVQb2x5Z29uTW9kZSxcbiAgRHJhd1BvbHlnb25CeURyYWdnaW5nTW9kZSxcbiAgU25hcHBhYmxlTW9kZSxcbiAgVHJhbnNmb3JtTW9kZSxcbiAgRWRpdEFjdGlvbixcbiAgQ2xpY2tFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgR2VvSnNvbkVkaXRNb2RlVHlwZSxcbiAgRmVhdHVyZUNvbGxlY3Rpb24sXG59IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5cbmltcG9ydCB7IFBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5pbXBvcnQgRWRpdGFibGVMYXllciwgeyBFZGl0YWJsZUxheWVyUHJvcHMgfSBmcm9tICcuL2VkaXRhYmxlLWxheWVyJztcbmltcG9ydCBFZGl0YWJsZVBhdGhMYXllciBmcm9tICcuL2VkaXRhYmxlLXBhdGgtbGF5ZXInO1xuXG5jb25zdCBERUZBVUxUX0xJTkVfQ09MT1I6IFJHQkFDb2xvciA9IFsweDAsIDB4MCwgMHgwLCAweDk5XTtcbmNvbnN0IERFRkFVTFRfRklMTF9DT0xPUjogUkdCQUNvbG9yID0gWzB4MCwgMHgwLCAweDAsIDB4OTBdO1xuY29uc3QgREVGQVVMVF9TRUxFQ1RFRF9MSU5FX0NPTE9SOiBSR0JBQ29sb3IgPSBbMHgwLCAweDAsIDB4MCwgMHhmZl07XG5jb25zdCBERUZBVUxUX1NFTEVDVEVEX0ZJTExfQ09MT1I6IFJHQkFDb2xvciA9IFsweDAsIDB4MCwgMHg5MCwgMHg5MF07XG5jb25zdCBERUZBVUxUX1RFTlRBVElWRV9MSU5FX0NPTE9SOiBSR0JBQ29sb3IgPSBbMHg5MCwgMHg5MCwgMHg5MCwgMHhmZl07XG5jb25zdCBERUZBVUxUX1RFTlRBVElWRV9GSUxMX0NPTE9SOiBSR0JBQ29sb3IgPSBbMHg5MCwgMHg5MCwgMHg5MCwgMHg5MF07XG5jb25zdCBERUZBVUxUX0VESVRJTkdfRVhJU1RJTkdfUE9JTlRfQ09MT1I6IFJHQkFDb2xvciA9IFsweGMwLCAweDAsIDB4MCwgMHhmZl07XG5jb25zdCBERUZBVUxUX0VESVRJTkdfSU5URVJNRURJQVRFX1BPSU5UX0NPTE9SOiBSR0JBQ29sb3IgPSBbMHgwLCAweDAsIDB4MCwgMHg4MF07XG5jb25zdCBERUZBVUxUX0VESVRJTkdfU05BUF9QT0lOVF9DT0xPUjogUkdCQUNvbG9yID0gWzB4N2MsIDB4MDAsIDB4YzAsIDB4ZmZdO1xuY29uc3QgREVGQVVMVF9FRElUSU5HX1BPSU5UX09VVExJTkVfQ09MT1I6IFJHQkFDb2xvciA9IFsweGZmLCAweGZmLCAweGZmLCAweGZmXTtcbmNvbnN0IERFRkFVTFRfRURJVElOR19FWElTVElOR19QT0lOVF9SQURJVVMgPSA1O1xuY29uc3QgREVGQVVMVF9FRElUSU5HX0lOVEVSTUVESUFURV9QT0lOVF9SQURJVVMgPSAzO1xuY29uc3QgREVGQVVMVF9FRElUSU5HX1NOQVBfUE9JTlRfUkFESVVTID0gNztcbmNvbnN0IERFRkFVTFRfVE9PTFRJUF9GT05UX1NJWkUgPSAzMiAqIFBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVI7XG5cbmNvbnN0IERFRkFVTFRfRURJVF9NT0RFID0gRHJhd1BvbHlnb25Nb2RlO1xuXG5mdW5jdGlvbiBndWlkZUFjY2Vzc29yKGFjY2Vzc29yKSB7XG4gIGlmICghYWNjZXNzb3IgfHwgdHlwZW9mIGFjY2Vzc29yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGFjY2Vzc29yO1xuICB9XG4gIHJldHVybiAoZ3VpZGVNYXliZVdyYXBwZWQpID0+IGFjY2Vzc29yKHVud3JhcEd1aWRlKGd1aWRlTWF5YmVXcmFwcGVkKSk7XG59XG5cbi8vIFRoZSBvYmplY3QgaGFuZGVkIHRvIHVzIGZyb20gZGVjay5nbCBpcyBkaWZmZXJlbnQgZGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9uIG9mIGRlY2suZ2wgdXNlZCwgdW53cmFwIGFzIG5lY2Vzc2FyeVxuZnVuY3Rpb24gdW53cmFwR3VpZGUoZ3VpZGVNYXliZVdyYXBwZWQpIHtcbiAgaWYgKGd1aWRlTWF5YmVXcmFwcGVkLl9fc291cmNlKSB7XG4gICAgcmV0dXJuIGd1aWRlTWF5YmVXcmFwcGVkLl9fc291cmNlLm9iamVjdDtcbiAgfSBlbHNlIGlmIChndWlkZU1heWJlV3JhcHBlZC5zb3VyY2VGZWF0dXJlKSB7XG4gICAgcmV0dXJuIGd1aWRlTWF5YmVXcmFwcGVkLnNvdXJjZUZlYXR1cmUuZmVhdHVyZTtcbiAgfVxuICAvLyBJdCBpcyBub3Qgd3JhcHBlZCwgcmV0dXJuIGFzIGlzXG4gIHJldHVybiBndWlkZU1heWJlV3JhcHBlZDtcbn1cblxuZnVuY3Rpb24gZ2V0RWRpdEhhbmRsZUNvbG9yKGhhbmRsZSkge1xuICBzd2l0Y2ggKGhhbmRsZS5wcm9wZXJ0aWVzLmVkaXRIYW5kbGVUeXBlKSB7XG4gICAgY2FzZSAnZXhpc3RpbmcnOlxuICAgICAgcmV0dXJuIERFRkFVTFRfRURJVElOR19FWElTVElOR19QT0lOVF9DT0xPUjtcbiAgICBjYXNlICdzbmFwLXNvdXJjZSc6XG4gICAgICByZXR1cm4gREVGQVVMVF9FRElUSU5HX1NOQVBfUE9JTlRfQ09MT1I7XG4gICAgY2FzZSAnaW50ZXJtZWRpYXRlJzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIERFRkFVTFRfRURJVElOR19JTlRFUk1FRElBVEVfUE9JTlRfQ09MT1I7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RWRpdEhhbmRsZU91dGxpbmVDb2xvcihoYW5kbGUpIHtcbiAgcmV0dXJuIERFRkFVTFRfRURJVElOR19QT0lOVF9PVVRMSU5FX0NPTE9SO1xufVxuXG5mdW5jdGlvbiBnZXRFZGl0SGFuZGxlUmFkaXVzKGhhbmRsZSkge1xuICBzd2l0Y2ggKGhhbmRsZS5wcm9wZXJ0aWVzLmVkaXRIYW5kbGVUeXBlKSB7XG4gICAgY2FzZSAnZXhpc3RpbmcnOlxuICAgICAgcmV0dXJuIERFRkFVTFRfRURJVElOR19FWElTVElOR19QT0lOVF9SQURJVVM7XG4gICAgY2FzZSAnc25hcCc6XG4gICAgICByZXR1cm4gREVGQVVMVF9FRElUSU5HX1NOQVBfUE9JTlRfUkFESVVTO1xuICAgIGNhc2UgJ2ludGVybWVkaWF0ZSc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBERUZBVUxUX0VESVRJTkdfSU5URVJNRURJQVRFX1BPSU5UX1JBRElVUztcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRhYmxlR2VvanNvbkxheWVyUHJvcHM8RD4gZXh0ZW5kcyBFZGl0YWJsZUxheWVyUHJvcHM8RD4ge1xuICBtb2RlPzogYW55O1xuICBtb2RlQ29uZmlnPzogYW55O1xuICBzZWxlY3RlZEZlYXR1cmVJbmRleGVzPzogbnVtYmVyW107XG4gIG9uRWRpdD86ICh1cGRhdGVkRGF0YT8sIGVkaXRUeXBlPzogc3RyaW5nLCBmZWF0dXJlSW5kZXhlcz86IG51bWJlcltdLCBlZGl0Q29udGV4dD8pID0+IHZvaWQ7XG5cbiAgcGlja2FibGU/OiBib29sZWFuO1xuICBwaWNraW5nUmFkaXVzPzogbnVtYmVyO1xuICBwaWNraW5nRGVwdGg/OiBudW1iZXI7XG4gIGZwNjQ/OiBib29sZWFuO1xuICBmaWxsZWQ/OiBib29sZWFuO1xuICBzdHJva2VkPzogYm9vbGVhbjtcbiAgbGluZVdpZHRoU2NhbGU/OiBudW1iZXI7XG4gIGxpbmVXaWR0aE1pblBpeGVscz86IG51bWJlcjtcbiAgbGluZVdpZHRoTWF4UGl4ZWxzPzogbnVtYmVyO1xuICBwaWNraW5nTGluZVdpZHRoRXh0cmFQaXhlbHM/OiBudW1iZXI7XG4gIGxpbmVXaWR0aFVuaXRzPzogc3RyaW5nO1xuICBsaW5lSm9pbnRSb3VuZGVkPzogYm9vbGVhbjtcbiAgbGluZUNhcFJvdW5kZWQ/OiBib29sZWFuO1xuICBsaW5lTWl0ZXJMaW1pdD86IG51bWJlcjtcbiAgcG9pbnRSYWRpdXNTY2FsZT86IG51bWJlcjtcbiAgcG9pbnRSYWRpdXNNaW5QaXhlbHM/OiBudW1iZXI7XG4gIHBvaW50UmFkaXVzTWF4UGl4ZWxzPzogbnVtYmVyO1xuXG4gIGdldExpbmVDb2xvcj86IFJHQkFDb2xvciB8ICgoZmVhdHVyZSwgaXNTZWxlY3RlZCwgbW9kZSkgPT4gUkdCQUNvbG9yKTtcbiAgZ2V0RmlsbENvbG9yPzogUkdCQUNvbG9yIHwgKChmZWF0dXJlLCBpc1NlbGVjdGVkLCBtb2RlKSA9PiBSR0JBQ29sb3IpO1xuICBnZXRSYWRpdXM/OiBudW1iZXIgfCAoKGYpID0+IG51bWJlcik7XG4gIGdldExpbmVXaWR0aD86IG51bWJlciB8ICgoZikgPT4gbnVtYmVyKTtcblxuICBnZXRUZW50YXRpdmVMaW5lQ29sb3I/OiBSR0JBQ29sb3IgfCAoKGZlYXR1cmUsIGlzU2VsZWN0ZWQsIG1vZGUpID0+IFJHQkFDb2xvcik7XG4gIGdldFRlbnRhdGl2ZUZpbGxDb2xvcj86IFJHQkFDb2xvciB8ICgoZmVhdHVyZSwgaXNTZWxlY3RlZCwgbW9kZSkgPT4gUkdCQUNvbG9yKTtcbiAgZ2V0VGVudGF0aXZlTGluZVdpZHRoPzogbnVtYmVyIHwgKChmKSA9PiBudW1iZXIpO1xuXG4gIGVkaXRIYW5kbGVUeXBlPzogc3RyaW5nO1xuXG4gIGVkaXRIYW5kbGVQb2ludFJhZGl1c1NjYWxlPzogbnVtYmVyO1xuICBlZGl0SGFuZGxlUG9pbnRPdXRsaW5lPzogYm9vbGVhbjtcbiAgZWRpdEhhbmRsZVBvaW50U3Ryb2tlV2lkdGg/OiBudW1iZXI7XG4gIGVkaXRIYW5kbGVQb2ludFJhZGl1c1VuaXRzPzogc3RyaW5nO1xuICBlZGl0SGFuZGxlUG9pbnRSYWRpdXNNaW5QaXhlbHM/OiBudW1iZXI7XG4gIGVkaXRIYW5kbGVQb2ludFJhZGl1c01heFBpeGVscz86IG51bWJlcjtcbiAgZ2V0RWRpdEhhbmRsZVBvaW50Q29sb3I/OiBSR0JBQ29sb3IgfCAoKGhhbmRsZSkgPT4gUkdCQUNvbG9yKTtcbiAgZ2V0RWRpdEhhbmRsZVBvaW50T3V0bGluZUNvbG9yPzogUkdCQUNvbG9yIHwgKChoYW5kbGUpID0+IFJHQkFDb2xvcik7XG4gIGdldEVkaXRIYW5kbGVQb2ludFJhZGl1cz86IG51bWJlciB8ICgoaGFuZGxlKSA9PiBudW1iZXIpO1xuXG4gIC8vIGljb24gaGFuZGxlc1xuICBlZGl0SGFuZGxlSWNvbkF0bGFzPzogYW55O1xuICBlZGl0SGFuZGxlSWNvbk1hcHBpbmc/OiBhbnk7XG4gIGVkaXRIYW5kbGVJY29uU2l6ZVNjYWxlPzogbnVtYmVyO1xuICBlZGl0SGFuZGxlSWNvblNpemVVbml0cz86IHN0cmluZztcbiAgZ2V0RWRpdEhhbmRsZUljb24/OiAoaGFuZGxlKSA9PiBzdHJpbmc7XG4gIGdldEVkaXRIYW5kbGVJY29uU2l6ZT86IG51bWJlcjtcbiAgZ2V0RWRpdEhhbmRsZUljb25Db2xvcj86IFJHQkFDb2xvciB8ICgoaGFuZGxlKSA9PiBSR0JBQ29sb3IpO1xuICBnZXRFZGl0SGFuZGxlSWNvbkFuZ2xlPzogbnVtYmVyIHwgKChoYW5kbGUpID0+IG51bWJlcik7XG5cbiAgLy8gbWlzY1xuICBiaWxsYm9hcmQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBkZWZhdWx0UHJvcHM6IEVkaXRhYmxlR2VvanNvbkxheWVyUHJvcHM8YW55PiA9IHtcbiAgbW9kZTogREVGQVVMVF9FRElUX01PREUsXG5cbiAgLy8gRWRpdCBhbmQgaW50ZXJhY3Rpb24gZXZlbnRzXG4gIG9uRWRpdDogKCkgPT4ge30sXG5cbiAgcGlja2FibGU6IHRydWUsXG4gIHBpY2tpbmdSYWRpdXM6IDEwLFxuICBwaWNraW5nRGVwdGg6IDUsXG4gIGZwNjQ6IGZhbHNlLFxuICBmaWxsZWQ6IHRydWUsXG4gIHN0cm9rZWQ6IHRydWUsXG4gIGxpbmVXaWR0aFNjYWxlOiBQUk9KRUNURURfUElYRUxfU0laRV9NVUxUSVBMSUVSLFxuICBsaW5lV2lkdGhNaW5QaXhlbHM6IDEsXG4gIGxpbmVXaWR0aE1heFBpeGVsczogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsXG4gIHBpY2tpbmdMaW5lV2lkdGhFeHRyYVBpeGVsczogMCxcbiAgbGluZVdpZHRoVW5pdHM6ICdwaXhlbHMnLFxuICBsaW5lSm9pbnRSb3VuZGVkOiBmYWxzZSxcbiAgbGluZUNhcFJvdW5kZWQ6IGZhbHNlLFxuICBsaW5lTWl0ZXJMaW1pdDogNCxcbiAgcG9pbnRSYWRpdXNTY2FsZTogMSxcbiAgcG9pbnRSYWRpdXNNaW5QaXhlbHM6IDIsXG4gIHBvaW50UmFkaXVzTWF4UGl4ZWxzOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgZ2V0TGluZUNvbG9yOiAoZmVhdHVyZSwgaXNTZWxlY3RlZCwgbW9kZSkgPT5cbiAgICBpc1NlbGVjdGVkID8gREVGQVVMVF9TRUxFQ1RFRF9MSU5FX0NPTE9SIDogREVGQVVMVF9MSU5FX0NPTE9SLFxuICBnZXRGaWxsQ29sb3I6IChmZWF0dXJlLCBpc1NlbGVjdGVkLCBtb2RlKSA9PlxuICAgIGlzU2VsZWN0ZWQgPyBERUZBVUxUX1NFTEVDVEVEX0ZJTExfQ09MT1IgOiBERUZBVUxUX0ZJTExfQ09MT1IsXG4gIGdldFJhZGl1czogKGYpID0+XG4gICAgKGYgJiYgZi5wcm9wZXJ0aWVzICYmIGYucHJvcGVydGllcy5yYWRpdXMpIHx8IChmICYmIGYucHJvcGVydGllcyAmJiBmLnByb3BlcnRpZXMuc2l6ZSkgfHwgMSxcbiAgZ2V0TGluZVdpZHRoOiAoZikgPT4gKGYgJiYgZi5wcm9wZXJ0aWVzICYmIGYucHJvcGVydGllcy5saW5lV2lkdGgpIHx8IDMsXG5cbiAgLy8gVGVudGF0aXZlIGZlYXR1cmUgcmVuZGVyaW5nXG4gIGdldFRlbnRhdGl2ZUxpbmVDb2xvcjogKGYpID0+IERFRkFVTFRfVEVOVEFUSVZFX0xJTkVfQ09MT1IsXG4gIGdldFRlbnRhdGl2ZUZpbGxDb2xvcjogKGYpID0+IERFRkFVTFRfVEVOVEFUSVZFX0ZJTExfQ09MT1IsXG4gIGdldFRlbnRhdGl2ZUxpbmVXaWR0aDogKGYpID0+IChmICYmIGYucHJvcGVydGllcyAmJiBmLnByb3BlcnRpZXMubGluZVdpZHRoKSB8fCAzLFxuXG4gIGVkaXRIYW5kbGVUeXBlOiAncG9pbnQnLFxuXG4gIC8vIHBvaW50IGhhbmRsZXNcbiAgZWRpdEhhbmRsZVBvaW50UmFkaXVzU2NhbGU6IDEsXG4gIGVkaXRIYW5kbGVQb2ludE91dGxpbmU6IHRydWUsXG4gIGVkaXRIYW5kbGVQb2ludFN0cm9rZVdpZHRoOiAyLFxuICBlZGl0SGFuZGxlUG9pbnRSYWRpdXNVbml0czogJ3BpeGVscycsXG4gIGVkaXRIYW5kbGVQb2ludFJhZGl1c01pblBpeGVsczogNCxcbiAgZWRpdEhhbmRsZVBvaW50UmFkaXVzTWF4UGl4ZWxzOiA4LFxuICBnZXRFZGl0SGFuZGxlUG9pbnRDb2xvcjogZ2V0RWRpdEhhbmRsZUNvbG9yLFxuICBnZXRFZGl0SGFuZGxlUG9pbnRPdXRsaW5lQ29sb3I6IGdldEVkaXRIYW5kbGVPdXRsaW5lQ29sb3IsXG4gIGdldEVkaXRIYW5kbGVQb2ludFJhZGl1czogZ2V0RWRpdEhhbmRsZVJhZGl1cyxcblxuICAvLyBpY29uIGhhbmRsZXNcbiAgZWRpdEhhbmRsZUljb25BdGxhczogbnVsbCxcbiAgZWRpdEhhbmRsZUljb25NYXBwaW5nOiBudWxsLFxuICBlZGl0SGFuZGxlSWNvblNpemVTY2FsZTogMSxcbiAgZWRpdEhhbmRsZUljb25TaXplVW5pdHM6ICdwaXhlbHMnLFxuICBnZXRFZGl0SGFuZGxlSWNvbjogKGhhbmRsZSkgPT4gaGFuZGxlLnByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUsXG4gIGdldEVkaXRIYW5kbGVJY29uU2l6ZTogMTAsXG4gIGdldEVkaXRIYW5kbGVJY29uQ29sb3I6IGdldEVkaXRIYW5kbGVDb2xvcixcbiAgZ2V0RWRpdEhhbmRsZUljb25BbmdsZTogMCxcblxuICAvLyBtaXNjXG4gIGJpbGxib2FyZDogdHJ1ZSxcbn07XG5cbi8vIE1hcHBpbmcgb2YgbW9kZSBuYW1lIHRvIG1vZGUgY2xhc3MgKGZvciBsZWdhY3kgcHVycG9zZXMpXG5jb25zdCBtb2RlTmFtZU1hcHBpbmcgPSB7XG4gIHZpZXc6IFZpZXdNb2RlLFxuXG4gIC8vIEFsdGVyIG1vZGVzXG4gIG1vZGlmeTogTW9kaWZ5TW9kZSxcbiAgdHJhbnNsYXRlOiBuZXcgU25hcHBhYmxlTW9kZShuZXcgVHJhbnNsYXRlTW9kZSgpKSxcblxuICB0cmFuc2Zvcm06IG5ldyBTbmFwcGFibGVNb2RlKG5ldyBUcmFuc2Zvcm1Nb2RlKCkpLFxuICBzY2FsZTogU2NhbGVNb2RlLFxuICByb3RhdGU6IFJvdGF0ZU1vZGUsXG4gIGR1cGxpY2F0ZTogRHVwbGljYXRlTW9kZSxcbiAgc3BsaXQ6IFNwbGl0UG9seWdvbk1vZGUsXG4gIGV4dHJ1ZGU6IEV4dHJ1ZGVNb2RlLFxuICBlbGV2YXRpb246IEVsZXZhdGlvbk1vZGUsXG5cbiAgLy8gRHJhdyBtb2Rlc1xuICBkcmF3UG9pbnQ6IERyYXdQb2ludE1vZGUsXG4gIGRyYXdMaW5lU3RyaW5nOiBEcmF3TGluZVN0cmluZ01vZGUsXG4gIGRyYXdQb2x5Z29uOiBEcmF3UG9seWdvbk1vZGUsXG4gIGRyYXdSZWN0YW5nbGU6IERyYXdSZWN0YW5nbGVNb2RlLFxuICBkcmF3U3F1YXJlOiBEcmF3U3F1YXJlTW9kZSxcbiAgZHJhd1JlY3RhbmdsZUZyb21DZW50ZXI6IERyYXdSZWN0YW5nbGVGcm9tQ2VudGVyTW9kZSxcbiAgZHJhd1NxdWFyZUZyb21DZW50ZXI6IERyYXdTcXVhcmVGcm9tQ2VudGVyTW9kZSxcbiAgZHJhd0NpcmNsZUZyb21DZW50ZXI6IERyYXdDaXJjbGVGcm9tQ2VudGVyTW9kZSxcbiAgZHJhd0NpcmNsZUJ5Qm91bmRpbmdCb3g6IERyYXdDaXJjbGVCeURpYW1ldGVyTW9kZSxcbiAgZHJhd0VsbGlwc2VCeUJvdW5kaW5nQm94OiBEcmF3RWxsaXBzZUJ5Qm91bmRpbmdCb3hNb2RlLFxuICBkcmF3UmVjdGFuZ2xlVXNpbmczUG9pbnRzOiBEcmF3UmVjdGFuZ2xlVXNpbmdUaHJlZVBvaW50c01vZGUsXG4gIGRyYXdFbGxpcHNlVXNpbmczUG9pbnRzOiBEcmF3RWxsaXBzZVVzaW5nVGhyZWVQb2ludHNNb2RlLFxuICBkcmF3OTBEZWdyZWVQb2x5Z29uOiBEcmF3OTBEZWdyZWVQb2x5Z29uTW9kZSxcbiAgZHJhd1BvbHlnb25CeURyYWdnaW5nOiBEcmF3UG9seWdvbkJ5RHJhZ2dpbmdNb2RlLFxufTtcblxuLy8gdHlwZSBTdGF0ZSA9IHtcbi8vICAgbW9kZTogR2VvSnNvbkVkaXRNb2RlLFxuLy8gICB0ZW50YXRpdmVGZWF0dXJlOiA/RmVhdHVyZSxcbi8vICAgZWRpdEhhbmRsZXM6IGFueVtdLFxuLy8gICBzZWxlY3RlZEZlYXR1cmVzOiBGZWF0dXJlW11cbi8vIH07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXRhYmxlR2VvSnNvbkxheWVyIGV4dGVuZHMgRWRpdGFibGVMYXllcjxcbiAgYW55LFxuICBFZGl0YWJsZUdlb2pzb25MYXllclByb3BzPGFueT5cbj4ge1xuICBzdGF0aWMgbGF5ZXJOYW1lID0gJ0VkaXRhYmxlR2VvSnNvbkxheWVyJztcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuICAvLyBzZXRTdGF0ZTogKCRTaGFwZTxTdGF0ZT4pID0+IHZvaWQ7XG4gIHJlbmRlckxheWVycygpIHtcbiAgICBjb25zdCBzdWJMYXllclByb3BzID0gdGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgIGlkOiAnZ2VvanNvbicsXG5cbiAgICAgIC8vIFByb3h5IG1vc3QgR2VvSnNvbkxheWVyIHByb3BzIGFzLWlzXG4gICAgICBkYXRhOiB0aGlzLnByb3BzLmRhdGEsXG4gICAgICBmcDY0OiB0aGlzLnByb3BzLmZwNjQsXG4gICAgICBmaWxsZWQ6IHRoaXMucHJvcHMuZmlsbGVkLFxuICAgICAgc3Ryb2tlZDogdGhpcy5wcm9wcy5zdHJva2VkLFxuICAgICAgbGluZVdpZHRoU2NhbGU6IHRoaXMucHJvcHMubGluZVdpZHRoU2NhbGUsXG4gICAgICBsaW5lV2lkdGhNaW5QaXhlbHM6IHRoaXMucHJvcHMubGluZVdpZHRoTWluUGl4ZWxzLFxuICAgICAgbGluZVdpZHRoTWF4UGl4ZWxzOiB0aGlzLnByb3BzLmxpbmVXaWR0aE1heFBpeGVscyxcbiAgICAgIGxpbmVXaWR0aFVuaXRzOiB0aGlzLnByb3BzLmxpbmVXaWR0aFVuaXRzLFxuICAgICAgbGluZUpvaW50Um91bmRlZDogdGhpcy5wcm9wcy5saW5lSm9pbnRSb3VuZGVkLFxuICAgICAgbGluZUNhcFJvdW5kZWQ6IHRoaXMucHJvcHMubGluZUNhcFJvdW5kZWQsXG4gICAgICBsaW5lTWl0ZXJMaW1pdDogdGhpcy5wcm9wcy5saW5lTWl0ZXJMaW1pdCxcbiAgICAgIHBvaW50UmFkaXVzU2NhbGU6IHRoaXMucHJvcHMucG9pbnRSYWRpdXNTY2FsZSxcbiAgICAgIHBvaW50UmFkaXVzTWluUGl4ZWxzOiB0aGlzLnByb3BzLnBvaW50UmFkaXVzTWluUGl4ZWxzLFxuICAgICAgcG9pbnRSYWRpdXNNYXhQaXhlbHM6IHRoaXMucHJvcHMucG9pbnRSYWRpdXNNYXhQaXhlbHMsXG4gICAgICBnZXRMaW5lQ29sb3I6IHRoaXMuc2VsZWN0aW9uQXdhcmVBY2Nlc3Nvcih0aGlzLnByb3BzLmdldExpbmVDb2xvciksXG4gICAgICBnZXRGaWxsQ29sb3I6IHRoaXMuc2VsZWN0aW9uQXdhcmVBY2Nlc3Nvcih0aGlzLnByb3BzLmdldEZpbGxDb2xvciksXG4gICAgICBnZXRQb2ludFJhZGl1czogdGhpcy5zZWxlY3Rpb25Bd2FyZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0UmFkaXVzKSxcbiAgICAgIGdldExpbmVXaWR0aDogdGhpcy5zZWxlY3Rpb25Bd2FyZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0TGluZVdpZHRoKSxcblxuICAgICAgX3N1YkxheWVyUHJvcHM6IHtcbiAgICAgICAgbGluZXN0cmluZ3M6IHtcbiAgICAgICAgICBiaWxsYm9hcmQ6IHRoaXMucHJvcHMuYmlsbGJvYXJkLFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgICAgICAvLyByZXF1aXJlZCB0byB1cGRhdGUgZGFzaGVkIGFycmF5IGF0dHJpYnV0ZVxuICAgICAgICAgICAgYWxsOiBbdGhpcy5wcm9wcy5zZWxlY3RlZEZlYXR1cmVJbmRleGVzLCB0aGlzLnByb3BzLm1vZGVdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgICdwb2x5Z29ucy1zdHJva2UnOiB7XG4gICAgICAgICAgYmlsbGJvYXJkOiB0aGlzLnByb3BzLmJpbGxib2FyZCxcbiAgICAgICAgICBwaWNraW5nTGluZVdpZHRoRXh0cmFQaXhlbHM6IHRoaXMucHJvcHMucGlja2luZ0xpbmVXaWR0aEV4dHJhUGl4ZWxzLFxuICAgICAgICAgIHR5cGU6IEVkaXRhYmxlUGF0aExheWVyLFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgICAgICAvLyByZXF1aXJlZCB0byB1cGRhdGUgZGFzaGVkIGFycmF5IGF0dHJpYnV0ZVxuICAgICAgICAgICAgYWxsOiBbdGhpcy5wcm9wcy5zZWxlY3RlZEZlYXR1cmVJbmRleGVzLCB0aGlzLnByb3BzLm1vZGVdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuXG4gICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICBnZXRMaW5lQ29sb3I6IFt0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMsIHRoaXMucHJvcHMubW9kZV0sXG4gICAgICAgIGdldEZpbGxDb2xvcjogW3RoaXMucHJvcHMuc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcywgdGhpcy5wcm9wcy5tb2RlXSxcbiAgICAgICAgZ2V0UG9pbnRSYWRpdXM6IFt0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMsIHRoaXMucHJvcHMubW9kZV0sXG4gICAgICAgIGdldExpbmVXaWR0aDogW3RoaXMucHJvcHMuc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcywgdGhpcy5wcm9wcy5tb2RlXSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBsZXQgbGF5ZXJzOiBhbnkgPSBbbmV3IEdlb0pzb25MYXllcihzdWJMYXllclByb3BzKV07XG5cbiAgICBsYXllcnMgPSBsYXllcnMuY29uY2F0KHRoaXMuY3JlYXRlR3VpZGVzTGF5ZXJzKCksIHRoaXMuY3JlYXRlVG9vbHRpcHNMYXllcnMoKSk7XG5cbiAgICByZXR1cm4gbGF5ZXJzO1xuICB9XG5cbiAgaW5pdGlhbGl6ZVN0YXRlKCkge1xuICAgIHN1cGVyLmluaXRpYWxpemVTdGF0ZSgpO1xuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBzZWxlY3RlZEZlYXR1cmVzOiBbXSxcbiAgICAgIGVkaXRIYW5kbGVzOiBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFRPRE86IGlzIHRoaXMgdGhlIGJlc3Qgd2F5IHRvIHByb3Blcmx5IHVwZGF0ZSBzdGF0ZSBmcm9tIGFuIG91dHNpZGUgZXZlbnQgaGFuZGxlcj9cbiAgc2hvdWxkVXBkYXRlU3RhdGUob3B0czogYW55KSB7XG4gICAgLy8gY29uc29sZS5sb2coXG4gICAgLy8gICAnc2hvdWxkVXBkYXRlU3RhdGUnLFxuICAgIC8vICAgb3B0cy5jaGFuZ2VGbGFncy5wcm9wc09yRGF0YUNoYW5nZWQsXG4gICAgLy8gICBvcHRzLmNoYW5nZUZsYWdzLnN0YXRlQ2hhbmdlZFxuICAgIC8vICk7XG4gICAgcmV0dXJuIHN1cGVyLnNob3VsZFVwZGF0ZVN0YXRlKG9wdHMpIHx8IG9wdHMuY2hhbmdlRmxhZ3Muc3RhdGVDaGFuZ2VkO1xuICB9XG5cbiAgdXBkYXRlU3RhdGUoe1xuICAgIHByb3BzLFxuICAgIG9sZFByb3BzLFxuICAgIGNoYW5nZUZsYWdzLFxuICAgIGNvbnRleHQsXG4gIH06IHtcbiAgICBwcm9wczogRWRpdGFibGVHZW9qc29uTGF5ZXJQcm9wczxhbnk+O1xuICAgIG9sZFByb3BzOiBFZGl0YWJsZUdlb2pzb25MYXllclByb3BzPGFueT47XG4gICAgY2hhbmdlRmxhZ3M6IGFueTtcbiAgICBjb250ZXh0OiBhbnk7XG4gICAgcztcbiAgfSkge1xuICAgIHN1cGVyLnVwZGF0ZVN0YXRlKHsgb2xkUHJvcHMsIHByb3BzLCBjaGFuZ2VGbGFncywgY29udGV4dCB9KTtcblxuICAgIGlmIChjaGFuZ2VGbGFncy5wcm9wc09yRGF0YUNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IG1vZGVQcm9wQ2hhbmdlZCA9IE9iamVjdC5rZXlzKG9sZFByb3BzKS5sZW5ndGggPT09IDAgfHwgcHJvcHMubW9kZSAhPT0gb2xkUHJvcHMubW9kZTtcbiAgICAgIGlmIChtb2RlUHJvcENoYW5nZWQpIHtcbiAgICAgICAgbGV0IG1vZGU7XG4gICAgICAgIGlmICh0eXBlb2YgcHJvcHMubW9kZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIC8vIFRoZXkgcGFzc2VkIGEgY29uc3RydWN0b3IvY2xhc3MsIHNvIG5ldyBpdCB1cFxuICAgICAgICAgIGNvbnN0IE1vZGVDb25zdHJ1Y3RvciA9IHByb3BzLm1vZGU7XG4gICAgICAgICAgbW9kZSA9IG5ldyBNb2RlQ29uc3RydWN0b3IoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcHJvcHMubW9kZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAvLyBMb29rdXAgdGhlIG1vZGUgYmFzZWQgb24gaXRzIG5hbWUgKGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSlcbiAgICAgICAgICBtb2RlID0gbW9kZU5hbWVNYXBwaW5nW3Byb3BzLm1vZGVdO1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgXCJEZXByZWNhdGVkIHVzZSBvZiBwYXNzaW5nIGBtb2RlYCBhcyBhIHN0cmluZy4gUGFzcyB0aGUgbW9kZSdzIGNsYXNzIGNvbnN0cnVjdG9yIGluc3RlYWQuXCJcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNob3VsZCBiZSBhbiBpbnN0YW5jZSBvZiBFZGl0TW9kZSBpbiB0aGlzIGNhc2VcbiAgICAgICAgICBtb2RlID0gcHJvcHMubW9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihgTm8gbW9kZSBjb25maWd1cmVkIGZvciAke1N0cmluZyhwcm9wcy5tb2RlKX1gKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlLG5vLXVuZGVmXG4gICAgICAgICAgLy8gVXNlIGRlZmF1bHQgbW9kZVxuICAgICAgICAgIG1vZGUgPSBuZXcgREVGQVVMVF9FRElUX01PREUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RlICE9PSB0aGlzLnN0YXRlLm1vZGUpIHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbW9kZSwgY3Vyc29yOiBudWxsIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHNlbGVjdGVkRmVhdHVyZXMgPSBbXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wcy5zZWxlY3RlZEZlYXR1cmVJbmRleGVzKSkge1xuICAgICAgLy8gVE9ETzogbmVlZHMgaW1wcm92ZWQgdGVzdGluZywgaS5lLiBjaGVja2luZyBmb3IgZHVwbGljYXRlcywgTmFOcywgb3V0IG9mIHJhbmdlIG51bWJlcnMsIC4uLlxuICAgICAgc2VsZWN0ZWRGZWF0dXJlcyA9IHByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubWFwKChlbGVtKSA9PiBwcm9wcy5kYXRhLmZlYXR1cmVzW2VsZW1dKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHsgc2VsZWN0ZWRGZWF0dXJlcyB9KTtcbiAgfVxuXG4gIGdldE1vZGVQcm9wcyhwcm9wczogRWRpdGFibGVHZW9qc29uTGF5ZXJQcm9wczxhbnk+KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGVDb25maWc6IHByb3BzLm1vZGVDb25maWcsXG4gICAgICBkYXRhOiBwcm9wcy5kYXRhLFxuICAgICAgc2VsZWN0ZWRJbmRleGVzOiBwcm9wcy5zZWxlY3RlZEZlYXR1cmVJbmRleGVzLFxuICAgICAgbGFzdFBvaW50ZXJNb3ZlRXZlbnQ6IHRoaXMuc3RhdGUubGFzdFBvaW50ZXJNb3ZlRXZlbnQsXG4gICAgICBjdXJzb3I6IHRoaXMuc3RhdGUuY3Vyc29yLFxuICAgICAgb25FZGl0OiAoZWRpdEFjdGlvbjogRWRpdEFjdGlvbjxGZWF0dXJlQ29sbGVjdGlvbj4pID0+IHtcbiAgICAgICAgLy8gRm9yY2UgYSByZS1yZW5kZXJcbiAgICAgICAgLy8gVGhpcyBzdXBwb3J0cyBkb3VibGUtY2xpY2sgd2hlcmUgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGVyZSdzIGEgcmUtcmVuZGVyIGJldHdlZW4gdGhlIHR3byBjbGlja3NcbiAgICAgICAgLy8gZXZlbiB0aG91Z2ggdGhlIGRhdGEgd2Fzbid0IGNoYW5nZWQsIGp1c3QgdGhlIGludGVybmFsIHRlbnRhdGl2ZSBmZWF0dXJlLlxuICAgICAgICB0aGlzLnNldE5lZWRzVXBkYXRlKCk7XG4gICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgIH0sXG4gICAgICBvblVwZGF0ZUN1cnNvcjogKGN1cnNvcjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgY3Vyc29yIH0pO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgc2VsZWN0aW9uQXdhcmVBY2Nlc3NvcihhY2Nlc3NvcjogYW55KSB7XG4gICAgaWYgKHR5cGVvZiBhY2Nlc3NvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGFjY2Vzc29yO1xuICAgIH1cbiAgICByZXR1cm4gKGZlYXR1cmU6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+XG4gICAgICBhY2Nlc3NvcihmZWF0dXJlLCB0aGlzLmlzRmVhdHVyZVNlbGVjdGVkKGZlYXR1cmUpLCB0aGlzLnByb3BzLm1vZGUpO1xuICB9XG5cbiAgaXNGZWF0dXJlU2VsZWN0ZWQoZmVhdHVyZTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGlmICghdGhpcy5wcm9wcy5kYXRhIHx8ICF0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGZlYXR1cmVJbmRleCA9IHRoaXMucHJvcHMuZGF0YS5mZWF0dXJlcy5pbmRleE9mKGZlYXR1cmUpO1xuICAgIHJldHVybiB0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMuaW5jbHVkZXMoZmVhdHVyZUluZGV4KTtcbiAgfVxuXG4gIGdldFBpY2tpbmdJbmZvKHsgaW5mbywgc291cmNlTGF5ZXIgfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGlmIChzb3VyY2VMYXllci5pZC5lbmRzV2l0aCgnZ3VpZGVzJykpIHtcbiAgICAgIC8vIElmIHVzZXIgaXMgcGlja2luZyBhbiBlZGl0aW5nIGhhbmRsZSwgYWRkIGFkZGl0aW9uYWwgZGF0YSB0byB0aGUgaW5mb1xuICAgICAgaW5mby5pc0d1aWRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5mbztcbiAgfVxuXG4gIF91cGRhdGVBdXRvSGlnaGxpZ2h0KGluZm8pIHtcbiAgICAvLyBFeHRyYSBoYW5kbGluZyBmb3IgZ3VpZGVzXG4gICAgaWYgKGluZm8/LnNvdXJjZUxheWVyKSB7XG4gICAgICBpZiAoaW5mby5pc0d1aWRlKSB7XG4gICAgICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgaW5mby5zb3VyY2VMYXllci5nZXRTdWJMYXllcnMoKSkge1xuICAgICAgICAgIGxheWVyLnVwZGF0ZUF1dG9IaWdobGlnaHQoaW5mbyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluZm8uc291cmNlTGF5ZXIudXBkYXRlQXV0b0hpZ2hsaWdodChpbmZvKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjcmVhdGVHdWlkZXNMYXllcnMoKSB7XG4gICAgY29uc3QgbW9kZSA9IHRoaXMuZ2V0QWN0aXZlTW9kZSgpO1xuICAgIGNvbnN0IGd1aWRlczogRmVhdHVyZUNvbGxlY3Rpb24gPSBtb2RlLmdldEd1aWRlcyh0aGlzLmdldE1vZGVQcm9wcyh0aGlzLnByb3BzKSk7XG5cbiAgICBpZiAoIWd1aWRlcyB8fCAhZ3VpZGVzLmZlYXR1cmVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHN1YkxheWVyUHJvcHMgPSB7XG4gICAgICBsaW5lc3RyaW5nczoge1xuICAgICAgICBiaWxsYm9hcmQ6IHRoaXMucHJvcHMuYmlsbGJvYXJkLFxuICAgICAgICBhdXRvSGlnaGxpZ2h0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICAncG9seWdvbnMtZmlsbCc6IHtcbiAgICAgICAgYXV0b0hpZ2hsaWdodDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgJ3BvbHlnb25zLXN0cm9rZSc6IHtcbiAgICAgICAgYmlsbGJvYXJkOiB0aGlzLnByb3BzLmJpbGxib2FyZCxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnByb3BzLmVkaXRIYW5kbGVUeXBlID09PSAnaWNvbicpIHtcbiAgICAgIHN1YkxheWVyUHJvcHNbJ3BvaW50cy1pY29uJ10gPSB7XG4gICAgICAgIHR5cGU6IEljb25MYXllcixcbiAgICAgICAgaWNvbkF0bGFzOiB0aGlzLnByb3BzLmVkaXRIYW5kbGVJY29uQXRsYXMsXG4gICAgICAgIGljb25NYXBwaW5nOiB0aGlzLnByb3BzLmVkaXRIYW5kbGVJY29uTWFwcGluZyxcbiAgICAgICAgc2l6ZVVuaXRzOiB0aGlzLnByb3BzLmVkaXRIYW5kbGVJY29uU2l6ZVVuaXRzLFxuICAgICAgICBzaXplU2NhbGU6IHRoaXMucHJvcHMuZWRpdEhhbmRsZUljb25TaXplU2NhbGUsXG4gICAgICAgIGdldEljb246IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRFZGl0SGFuZGxlSWNvbiksXG4gICAgICAgIGdldFNpemU6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRFZGl0SGFuZGxlSWNvblNpemUpLFxuICAgICAgICBnZXRDb2xvcjogZ3VpZGVBY2Nlc3Nvcih0aGlzLnByb3BzLmdldEVkaXRIYW5kbGVJY29uQ29sb3IpLFxuICAgICAgICBnZXRBbmdsZTogZ3VpZGVBY2Nlc3Nvcih0aGlzLnByb3BzLmdldEVkaXRIYW5kbGVJY29uQW5nbGUpLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3ViTGF5ZXJQcm9wc1sncG9pbnRzLWNpcmNsZSddID0ge1xuICAgICAgICB0eXBlOiBTY2F0dGVycGxvdExheWVyLFxuICAgICAgICByYWRpdXNTY2FsZTogdGhpcy5wcm9wcy5lZGl0SGFuZGxlUG9pbnRSYWRpdXNTY2FsZSxcbiAgICAgICAgc3Ryb2tlZDogdGhpcy5wcm9wcy5lZGl0SGFuZGxlUG9pbnRPdXRsaW5lLFxuICAgICAgICBnZXRMaW5lV2lkdGg6IHRoaXMucHJvcHMuZWRpdEhhbmRsZVBvaW50U3Ryb2tlV2lkdGgsXG4gICAgICAgIHJhZGl1c1VuaXRzOiB0aGlzLnByb3BzLmVkaXRIYW5kbGVQb2ludFJhZGl1c1VuaXRzLFxuICAgICAgICByYWRpdXNNaW5QaXhlbHM6IHRoaXMucHJvcHMuZWRpdEhhbmRsZVBvaW50UmFkaXVzTWluUGl4ZWxzLFxuICAgICAgICByYWRpdXNNYXhQaXhlbHM6IHRoaXMucHJvcHMuZWRpdEhhbmRsZVBvaW50UmFkaXVzTWF4UGl4ZWxzLFxuICAgICAgICBnZXRSYWRpdXM6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRFZGl0SGFuZGxlUG9pbnRSYWRpdXMpLFxuICAgICAgICBnZXRGaWxsQ29sb3I6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRFZGl0SGFuZGxlUG9pbnRDb2xvciksXG4gICAgICAgIGdldExpbmVDb2xvcjogZ3VpZGVBY2Nlc3Nvcih0aGlzLnByb3BzLmdldEVkaXRIYW5kbGVQb2ludE91dGxpbmVDb2xvciksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGxheWVyID0gbmV3IEdlb0pzb25MYXllcihcbiAgICAgIHRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7XG4gICAgICAgIGlkOiBgZ3VpZGVzYCxcbiAgICAgICAgZGF0YTogZ3VpZGVzLFxuICAgICAgICBmcDY0OiB0aGlzLnByb3BzLmZwNjQsXG4gICAgICAgIF9zdWJMYXllclByb3BzOiBzdWJMYXllclByb3BzLFxuICAgICAgICBsaW5lV2lkdGhTY2FsZTogdGhpcy5wcm9wcy5saW5lV2lkdGhTY2FsZSxcbiAgICAgICAgbGluZVdpZHRoTWluUGl4ZWxzOiB0aGlzLnByb3BzLmxpbmVXaWR0aE1pblBpeGVscyxcbiAgICAgICAgbGluZVdpZHRoTWF4UGl4ZWxzOiB0aGlzLnByb3BzLmxpbmVXaWR0aE1heFBpeGVscyxcbiAgICAgICAgbGluZVdpZHRoVW5pdHM6IHRoaXMucHJvcHMubGluZVdpZHRoVW5pdHMsXG4gICAgICAgIGxpbmVKb2ludFJvdW5kZWQ6IHRoaXMucHJvcHMubGluZUpvaW50Um91bmRlZCxcbiAgICAgICAgbGluZUNhcFJvdW5kZWQ6IHRoaXMucHJvcHMubGluZUNhcFJvdW5kZWQsXG4gICAgICAgIGxpbmVNaXRlckxpbWl0OiB0aGlzLnByb3BzLmxpbmVNaXRlckxpbWl0LFxuICAgICAgICBnZXRMaW5lQ29sb3I6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRUZW50YXRpdmVMaW5lQ29sb3IpLFxuICAgICAgICBnZXRMaW5lV2lkdGg6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRUZW50YXRpdmVMaW5lV2lkdGgpLFxuICAgICAgICBnZXRGaWxsQ29sb3I6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRUZW50YXRpdmVGaWxsQ29sb3IpLFxuICAgICAgICBwb2ludFR5cGU6IHRoaXMucHJvcHMuZWRpdEhhbmRsZVR5cGUgPT09ICdpY29uJyA/ICdpY29uJyA6ICdjaXJjbGUnLFxuICAgICAgICBpY29uQXRsYXM6IHRoaXMucHJvcHMuZWRpdEhhbmRsZUljb25BdGxhcyxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBbbGF5ZXJdO1xuICB9XG5cbiAgY3JlYXRlVG9vbHRpcHNMYXllcnMoKSB7XG4gICAgY29uc3QgbW9kZSA9IHRoaXMuZ2V0QWN0aXZlTW9kZSgpO1xuICAgIGNvbnN0IHRvb2x0aXBzID0gbW9kZS5nZXRUb29sdGlwcyh0aGlzLmdldE1vZGVQcm9wcyh0aGlzLnByb3BzKSk7XG5cbiAgICBjb25zdCBsYXllciA9IG5ldyBUZXh0TGF5ZXIoe1xuICAgICAgZ2V0U2l6ZTogREVGQVVMVF9UT09MVElQX0ZPTlRfU0laRSxcbiAgICAgIC4uLnRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7XG4gICAgICAgIGlkOiBgdG9vbHRpcHNgLFxuICAgICAgICBkYXRhOiB0b29sdGlwcyxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIFtsYXllcl07XG4gIH1cblxuICBvbkxheWVyQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQpIHtcbiAgICB0aGlzLmdldEFjdGl2ZU1vZGUoKS5oYW5kbGVDbGljayhldmVudCwgdGhpcy5nZXRNb2RlUHJvcHModGhpcy5wcm9wcykpO1xuICB9XG5cbiAgb25MYXllcktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5nZXRBY3RpdmVNb2RlKCkuaGFuZGxlS2V5VXAoZXZlbnQsIHRoaXMuZ2V0TW9kZVByb3BzKHRoaXMucHJvcHMpKTtcbiAgfVxuXG4gIG9uU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KSB7XG4gICAgdGhpcy5nZXRBY3RpdmVNb2RlKCkuaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudCwgdGhpcy5nZXRNb2RlUHJvcHModGhpcy5wcm9wcykpO1xuICB9XG5cbiAgb25EcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCkge1xuICAgIHRoaXMuZ2V0QWN0aXZlTW9kZSgpLmhhbmRsZURyYWdnaW5nKGV2ZW50LCB0aGlzLmdldE1vZGVQcm9wcyh0aGlzLnByb3BzKSk7XG4gIH1cblxuICBvblN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQpIHtcbiAgICB0aGlzLmdldEFjdGl2ZU1vZGUoKS5oYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQsIHRoaXMuZ2V0TW9kZVByb3BzKHRoaXMucHJvcHMpKTtcbiAgfVxuXG4gIG9uUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQpIHtcbiAgICB0aGlzLnNldFN0YXRlKHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQ6IGV2ZW50IH0pO1xuICAgIHRoaXMuZ2V0QWN0aXZlTW9kZSgpLmhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50LCB0aGlzLmdldE1vZGVQcm9wcyh0aGlzLnByb3BzKSk7XG4gIH1cblxuICBnZXRDdXJzb3IoeyBpc0RyYWdnaW5nIH06IHsgaXNEcmFnZ2luZzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09IG51bGwgfHwgdGhpcy5zdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBMYXllciBpbiAnQXdhaXRpbmcgc3RhdGUnXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgeyBjdXJzb3IgfSA9IHRoaXMuc3RhdGU7XG4gICAgaWYgKCFjdXJzb3IpIHtcbiAgICAgIC8vIGRlZmF1bHQgY3Vyc29yXG4gICAgICBjdXJzb3IgPSBpc0RyYWdnaW5nID8gJ2dyYWJiaW5nJyA6ICdncmFiJztcbiAgICB9XG4gICAgcmV0dXJuIGN1cnNvcjtcbiAgfVxuXG4gIGdldEFjdGl2ZU1vZGUoKTogR2VvSnNvbkVkaXRNb2RlVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUubW9kZTtcbiAgfVxufVxuIl19","/* eslint-env browser */\n\nimport { RGBAColor } from '@deck.gl/core';\nimport { GeoJsonLayer, ScatterplotLayer, IconLayer, TextLayer } from '@deck.gl/layers';\n\nimport {\n ViewMode,\n ModifyMode,\n TranslateMode,\n ScaleMode,\n RotateMode,\n DuplicateMode,\n SplitPolygonMode,\n ExtrudeMode,\n ElevationMode,\n DrawPointMode,\n DrawLineStringMode,\n DrawPolygonMode,\n DrawRectangleMode,\n DrawSquareMode,\n DrawRectangleFromCenterMode,\n DrawSquareFromCenterMode,\n DrawCircleFromCenterMode,\n DrawCircleByDiameterMode,\n DrawEllipseByBoundingBoxMode,\n DrawRectangleUsingThreePointsMode,\n DrawEllipseUsingThreePointsMode,\n Draw90DegreePolygonMode,\n DrawPolygonByDraggingMode,\n SnappableMode,\n TransformMode,\n EditAction,\n ClickEvent,\n StartDraggingEvent,\n StopDraggingEvent,\n DraggingEvent,\n PointerMoveEvent,\n GeoJsonEditModeType,\n FeatureCollection,\n} from '@nebula.gl/edit-modes';\n\nimport { PROJECTED_PIXEL_SIZE_MULTIPLIER } from '../constants';\n\nimport EditableLayer, { EditableLayerProps } from './editable-layer';\nimport EditablePathLayer from './editable-path-layer';\n\nconst DEFAULT_LINE_COLOR: RGBAColor = [0x0, 0x0, 0x0, 0x99];\nconst DEFAULT_FILL_COLOR: RGBAColor = [0x0, 0x0, 0x0, 0x90];\nconst DEFAULT_SELECTED_LINE_COLOR: RGBAColor = [0x0, 0x0, 0x0, 0xff];\nconst DEFAULT_SELECTED_FILL_COLOR: RGBAColor = [0x0, 0x0, 0x90, 0x90];\nconst DEFAULT_TENTATIVE_LINE_COLOR: RGBAColor = [0x90, 0x90, 0x90, 0xff];\nconst DEFAULT_TENTATIVE_FILL_COLOR: RGBAColor = [0x90, 0x90, 0x90, 0x90];\nconst DEFAULT_EDITING_EXISTING_POINT_COLOR: RGBAColor = [0xc0, 0x0, 0x0, 0xff];\nconst DEFAULT_EDITING_INTERMEDIATE_POINT_COLOR: RGBAColor = [0x0, 0x0, 0x0, 0x80];\nconst DEFAULT_EDITING_SNAP_POINT_COLOR: RGBAColor = [0x7c, 0x00, 0xc0, 0xff];\nconst DEFAULT_EDITING_POINT_OUTLINE_COLOR: RGBAColor = [0xff, 0xff, 0xff, 0xff];\nconst DEFAULT_EDITING_EXISTING_POINT_RADIUS = 5;\nconst DEFAULT_EDITING_INTERMEDIATE_POINT_RADIUS = 3;\nconst DEFAULT_EDITING_SNAP_POINT_RADIUS = 7;\nconst DEFAULT_TOOLTIP_FONT_SIZE = 32 * PROJECTED_PIXEL_SIZE_MULTIPLIER;\n\nconst DEFAULT_EDIT_MODE = DrawPolygonMode;\n\nfunction guideAccessor(accessor) {\n if (!accessor || typeof accessor !== 'function') {\n return accessor;\n }\n return (guideMaybeWrapped) => accessor(unwrapGuide(guideMaybeWrapped));\n}\n\n// The object handed to us from deck.gl is different depending on the version of deck.gl used, unwrap as necessary\nfunction unwrapGuide(guideMaybeWrapped) {\n if (guideMaybeWrapped.__source) {\n return guideMaybeWrapped.__source.object;\n } else if (guideMaybeWrapped.sourceFeature) {\n return guideMaybeWrapped.sourceFeature.feature;\n }\n // It is not wrapped, return as is\n return guideMaybeWrapped;\n}\n\nfunction getEditHandleColor(handle) {\n switch (handle.properties.editHandleType) {\n case 'existing':\n return DEFAULT_EDITING_EXISTING_POINT_COLOR;\n case 'snap-source':\n return DEFAULT_EDITING_SNAP_POINT_COLOR;\n case 'intermediate':\n default:\n return DEFAULT_EDITING_INTERMEDIATE_POINT_COLOR;\n }\n}\n\nfunction getEditHandleOutlineColor(handle) {\n return DEFAULT_EDITING_POINT_OUTLINE_COLOR;\n}\n\nfunction getEditHandleRadius(handle) {\n switch (handle.properties.editHandleType) {\n case 'existing':\n return DEFAULT_EDITING_EXISTING_POINT_RADIUS;\n case 'snap':\n return DEFAULT_EDITING_SNAP_POINT_RADIUS;\n case 'intermediate':\n default:\n return DEFAULT_EDITING_INTERMEDIATE_POINT_RADIUS;\n }\n}\n\nexport interface EditableGeojsonLayerProps extends EditableLayerProps {\n mode?: any;\n modeConfig?: any;\n selectedFeatureIndexes?: number[];\n onEdit?: (updatedData?, editType?: string, featureIndexes?: number[], editContext?) => void;\n\n pickable?: boolean;\n pickingRadius?: number;\n pickingDepth?: number;\n fp64?: boolean;\n filled?: boolean;\n stroked?: boolean;\n lineWidthScale?: number;\n lineWidthMinPixels?: number;\n lineWidthMaxPixels?: number;\n pickingLineWidthExtraPixels?: number;\n lineWidthUnits?: string;\n lineJointRounded?: boolean;\n lineCapRounded?: boolean;\n lineMiterLimit?: number;\n pointRadiusScale?: number;\n pointRadiusMinPixels?: number;\n pointRadiusMaxPixels?: number;\n\n getLineColor?: RGBAColor | ((feature, isSelected, mode) => RGBAColor);\n getFillColor?: RGBAColor | ((feature, isSelected, mode) => RGBAColor);\n getRadius?: number | ((f) => number);\n getLineWidth?: number | ((f) => number);\n\n getTentativeLineColor?: RGBAColor | ((feature, isSelected, mode) => RGBAColor);\n getTentativeFillColor?: RGBAColor | ((feature, isSelected, mode) => RGBAColor);\n getTentativeLineWidth?: number | ((f) => number);\n\n editHandleType?: string;\n\n editHandlePointRadiusScale?: number;\n editHandlePointOutline?: boolean;\n editHandlePointStrokeWidth?: number;\n editHandlePointRadiusUnits?: string;\n editHandlePointRadiusMinPixels?: number;\n editHandlePointRadiusMaxPixels?: number;\n getEditHandlePointColor?: RGBAColor | ((handle) => RGBAColor);\n getEditHandlePointOutlineColor?: RGBAColor | ((handle) => RGBAColor);\n getEditHandlePointRadius?: number | ((handle) => number);\n\n // icon handles\n editHandleIconAtlas?: any;\n editHandleIconMapping?: any;\n editHandleIconSizeScale?: number;\n editHandleIconSizeUnits?: string;\n getEditHandleIcon?: (handle) => string;\n getEditHandleIconSize?: number;\n getEditHandleIconColor?: RGBAColor | ((handle) => RGBAColor);\n getEditHandleIconAngle?: number | ((handle) => number);\n\n // misc\n billboard?: boolean;\n}\n\nconst defaultProps: EditableGeojsonLayerProps = {\n mode: DEFAULT_EDIT_MODE,\n\n // Edit and interaction events\n onEdit: () => {},\n\n pickable: true,\n pickingRadius: 10,\n pickingDepth: 5,\n fp64: false,\n filled: true,\n stroked: true,\n lineWidthScale: PROJECTED_PIXEL_SIZE_MULTIPLIER,\n lineWidthMinPixels: 1,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n pickingLineWidthExtraPixels: 0,\n lineWidthUnits: 'pixels',\n lineJointRounded: false,\n lineCapRounded: false,\n lineMiterLimit: 4,\n pointRadiusScale: 1,\n pointRadiusMinPixels: 2,\n pointRadiusMaxPixels: Number.MAX_SAFE_INTEGER,\n getLineColor: (feature, isSelected, mode) =>\n isSelected ? DEFAULT_SELECTED_LINE_COLOR : DEFAULT_LINE_COLOR,\n getFillColor: (feature, isSelected, mode) =>\n isSelected ? DEFAULT_SELECTED_FILL_COLOR : DEFAULT_FILL_COLOR,\n getRadius: (f) =>\n (f && f.properties && f.properties.radius) || (f && f.properties && f.properties.size) || 1,\n getLineWidth: (f) => (f && f.properties && f.properties.lineWidth) || 3,\n\n // Tentative feature rendering\n getTentativeLineColor: (f) => DEFAULT_TENTATIVE_LINE_COLOR,\n getTentativeFillColor: (f) => DEFAULT_TENTATIVE_FILL_COLOR,\n getTentativeLineWidth: (f) => (f && f.properties && f.properties.lineWidth) || 3,\n\n editHandleType: 'point',\n\n // point handles\n editHandlePointRadiusScale: 1,\n editHandlePointOutline: true,\n editHandlePointStrokeWidth: 2,\n editHandlePointRadiusUnits: 'pixels',\n editHandlePointRadiusMinPixels: 4,\n editHandlePointRadiusMaxPixels: 8,\n getEditHandlePointColor: getEditHandleColor,\n getEditHandlePointOutlineColor: getEditHandleOutlineColor,\n getEditHandlePointRadius: getEditHandleRadius,\n\n // icon handles\n editHandleIconAtlas: null,\n editHandleIconMapping: null,\n editHandleIconSizeScale: 1,\n editHandleIconSizeUnits: 'pixels',\n getEditHandleIcon: (handle) => handle.properties.editHandleType,\n getEditHandleIconSize: 10,\n getEditHandleIconColor: getEditHandleColor,\n getEditHandleIconAngle: 0,\n\n // misc\n billboard: true,\n};\n\n// Mapping of mode name to mode class (for legacy purposes)\nconst modeNameMapping = {\n view: ViewMode,\n\n // Alter modes\n modify: ModifyMode,\n translate: new SnappableMode(new TranslateMode()),\n\n transform: new SnappableMode(new TransformMode()),\n scale: ScaleMode,\n rotate: RotateMode,\n duplicate: DuplicateMode,\n split: SplitPolygonMode,\n extrude: ExtrudeMode,\n elevation: ElevationMode,\n\n // Draw modes\n drawPoint: DrawPointMode,\n drawLineString: DrawLineStringMode,\n drawPolygon: DrawPolygonMode,\n drawRectangle: DrawRectangleMode,\n drawSquare: DrawSquareMode,\n drawRectangleFromCenter: DrawRectangleFromCenterMode,\n drawSquareFromCenter: DrawSquareFromCenterMode,\n drawCircleFromCenter: DrawCircleFromCenterMode,\n drawCircleByBoundingBox: DrawCircleByDiameterMode,\n drawEllipseByBoundingBox: DrawEllipseByBoundingBoxMode,\n drawRectangleUsing3Points: DrawRectangleUsingThreePointsMode,\n drawEllipseUsing3Points: DrawEllipseUsingThreePointsMode,\n draw90DegreePolygon: Draw90DegreePolygonMode,\n drawPolygonByDragging: DrawPolygonByDraggingMode,\n};\n\n// type State = {\n// mode: GeoJsonEditMode,\n// tentativeFeature: ?Feature,\n// editHandles: any[],\n// selectedFeatures: Feature[]\n// };\n\nexport default class EditableGeoJsonLayer extends EditableLayer<\n any,\n EditableGeojsonLayerProps\n> {\n static layerName = 'EditableGeoJsonLayer';\n static defaultProps = defaultProps;\n\n // setState: ($Shape) => void;\n renderLayers() {\n const subLayerProps = this.getSubLayerProps({\n id: 'geojson',\n\n // Proxy most GeoJsonLayer props as-is\n data: this.props.data,\n fp64: this.props.fp64,\n filled: this.props.filled,\n stroked: this.props.stroked,\n lineWidthScale: this.props.lineWidthScale,\n lineWidthMinPixels: this.props.lineWidthMinPixels,\n lineWidthMaxPixels: this.props.lineWidthMaxPixels,\n lineWidthUnits: this.props.lineWidthUnits,\n lineJointRounded: this.props.lineJointRounded,\n lineCapRounded: this.props.lineCapRounded,\n lineMiterLimit: this.props.lineMiterLimit,\n pointRadiusScale: this.props.pointRadiusScale,\n pointRadiusMinPixels: this.props.pointRadiusMinPixels,\n pointRadiusMaxPixels: this.props.pointRadiusMaxPixels,\n getLineColor: this.selectionAwareAccessor(this.props.getLineColor),\n getFillColor: this.selectionAwareAccessor(this.props.getFillColor),\n getPointRadius: this.selectionAwareAccessor(this.props.getRadius),\n getLineWidth: this.selectionAwareAccessor(this.props.getLineWidth),\n\n _subLayerProps: {\n linestrings: {\n billboard: this.props.billboard,\n updateTriggers: {\n // required to update dashed array attribute\n all: [this.props.selectedFeatureIndexes, this.props.mode],\n },\n },\n 'polygons-stroke': {\n billboard: this.props.billboard,\n pickingLineWidthExtraPixels: this.props.pickingLineWidthExtraPixels,\n type: EditablePathLayer,\n updateTriggers: {\n // required to update dashed array attribute\n all: [this.props.selectedFeatureIndexes, this.props.mode],\n },\n },\n },\n\n updateTriggers: {\n getLineColor: [this.props.selectedFeatureIndexes, this.props.mode],\n getFillColor: [this.props.selectedFeatureIndexes, this.props.mode],\n getPointRadius: [this.props.selectedFeatureIndexes, this.props.mode],\n getLineWidth: [this.props.selectedFeatureIndexes, this.props.mode],\n },\n });\n\n let layers: any = [new GeoJsonLayer(subLayerProps)];\n\n layers = layers.concat(this.createGuidesLayers(), this.createTooltipsLayers());\n\n return layers;\n }\n\n initializeState() {\n super.initializeState();\n\n this.setState({\n selectedFeatures: [],\n editHandles: [],\n });\n }\n\n // TODO: is this the best way to properly update state from an outside event handler?\n shouldUpdateState(opts: any) {\n // console.log(\n // 'shouldUpdateState',\n // opts.changeFlags.propsOrDataChanged,\n // opts.changeFlags.stateChanged\n // );\n return super.shouldUpdateState(opts) || opts.changeFlags.stateChanged;\n }\n\n updateState({\n props,\n oldProps,\n changeFlags,\n context,\n }: {\n props: EditableGeojsonLayerProps;\n oldProps: EditableGeojsonLayerProps;\n changeFlags: any;\n context: any;\n s;\n }) {\n super.updateState({ oldProps, props, changeFlags, context });\n\n if (changeFlags.propsOrDataChanged) {\n const modePropChanged = Object.keys(oldProps).length === 0 || props.mode !== oldProps.mode;\n if (modePropChanged) {\n let mode;\n if (typeof props.mode === 'function') {\n // They passed a constructor/class, so new it up\n const ModeConstructor = props.mode;\n mode = new ModeConstructor();\n } else if (typeof props.mode === 'string') {\n // Lookup the mode based on its name (for backwards compatibility)\n mode = modeNameMapping[props.mode];\n // eslint-disable-next-line no-console\n console.warn(\n \"Deprecated use of passing `mode` as a string. Pass the mode's class constructor instead.\"\n );\n } else {\n // Should be an instance of EditMode in this case\n mode = props.mode;\n }\n\n if (!mode) {\n console.warn(`No mode configured for ${String(props.mode)}`); // eslint-disable-line no-console,no-undef\n // Use default mode\n mode = new DEFAULT_EDIT_MODE();\n }\n\n if (mode !== this.state.mode) {\n this.setState({ mode, cursor: null });\n }\n }\n }\n\n let selectedFeatures = [];\n if (Array.isArray(props.selectedFeatureIndexes)) {\n // TODO: needs improved testing, i.e. checking for duplicates, NaNs, out of range numbers, ...\n selectedFeatures = props.selectedFeatureIndexes.map((elem) => props.data.features[elem]);\n }\n\n this.setState({ selectedFeatures });\n }\n\n getModeProps(props: EditableGeojsonLayerProps) {\n return {\n modeConfig: props.modeConfig,\n data: props.data,\n selectedIndexes: props.selectedFeatureIndexes,\n lastPointerMoveEvent: this.state.lastPointerMoveEvent,\n cursor: this.state.cursor,\n onEdit: (editAction: EditAction) => {\n // Force a re-render\n // This supports double-click where we need to ensure that there's a re-render between the two clicks\n // even though the data wasn't changed, just the internal tentative feature.\n this.setNeedsUpdate();\n props.onEdit(editAction);\n },\n onUpdateCursor: (cursor: string | null | undefined) => {\n this.setState({ cursor });\n },\n };\n }\n\n selectionAwareAccessor(accessor: any) {\n if (typeof accessor !== 'function') {\n return accessor;\n }\n return (feature: Record) =>\n accessor(feature, this.isFeatureSelected(feature), this.props.mode);\n }\n\n isFeatureSelected(feature: Record) {\n if (!this.props.data || !this.props.selectedFeatureIndexes) {\n return false;\n }\n if (!this.props.selectedFeatureIndexes.length) {\n return false;\n }\n const featureIndex = this.props.data.features.indexOf(feature);\n return this.props.selectedFeatureIndexes.includes(featureIndex);\n }\n\n getPickingInfo({ info, sourceLayer }: Record) {\n if (sourceLayer.id.endsWith('guides')) {\n // If user is picking an editing handle, add additional data to the info\n info.isGuide = true;\n }\n\n return info;\n }\n\n _updateAutoHighlight(info) {\n // Extra handling for guides\n if (info?.sourceLayer) {\n if (info.isGuide) {\n for (const layer of info.sourceLayer.getSubLayers()) {\n layer.updateAutoHighlight(info);\n }\n } else {\n info.sourceLayer.updateAutoHighlight(info);\n }\n }\n }\n\n createGuidesLayers() {\n const mode = this.getActiveMode();\n const guides: FeatureCollection = mode.getGuides(this.getModeProps(this.props));\n\n if (!guides || !guides.features.length) {\n return [];\n }\n\n const subLayerProps = {\n linestrings: {\n billboard: this.props.billboard,\n autoHighlight: false,\n },\n 'polygons-fill': {\n autoHighlight: false,\n },\n 'polygons-stroke': {\n billboard: this.props.billboard,\n },\n };\n\n if (this.props.editHandleType === 'icon') {\n subLayerProps['points-icon'] = {\n type: IconLayer,\n iconAtlas: this.props.editHandleIconAtlas,\n iconMapping: this.props.editHandleIconMapping,\n sizeUnits: this.props.editHandleIconSizeUnits,\n sizeScale: this.props.editHandleIconSizeScale,\n getIcon: guideAccessor(this.props.getEditHandleIcon),\n getSize: guideAccessor(this.props.getEditHandleIconSize),\n getColor: guideAccessor(this.props.getEditHandleIconColor),\n getAngle: guideAccessor(this.props.getEditHandleIconAngle),\n };\n } else {\n subLayerProps['points-circle'] = {\n type: ScatterplotLayer,\n radiusScale: this.props.editHandlePointRadiusScale,\n stroked: this.props.editHandlePointOutline,\n getLineWidth: this.props.editHandlePointStrokeWidth,\n radiusUnits: this.props.editHandlePointRadiusUnits,\n radiusMinPixels: this.props.editHandlePointRadiusMinPixels,\n radiusMaxPixels: this.props.editHandlePointRadiusMaxPixels,\n getRadius: guideAccessor(this.props.getEditHandlePointRadius),\n getFillColor: guideAccessor(this.props.getEditHandlePointColor),\n getLineColor: guideAccessor(this.props.getEditHandlePointOutlineColor),\n };\n }\n\n const layer = new GeoJsonLayer(\n this.getSubLayerProps({\n id: `guides`,\n data: guides,\n fp64: this.props.fp64,\n _subLayerProps: subLayerProps,\n lineWidthScale: this.props.lineWidthScale,\n lineWidthMinPixels: this.props.lineWidthMinPixels,\n lineWidthMaxPixels: this.props.lineWidthMaxPixels,\n lineWidthUnits: this.props.lineWidthUnits,\n lineJointRounded: this.props.lineJointRounded,\n lineCapRounded: this.props.lineCapRounded,\n lineMiterLimit: this.props.lineMiterLimit,\n getLineColor: guideAccessor(this.props.getTentativeLineColor),\n getLineWidth: guideAccessor(this.props.getTentativeLineWidth),\n getFillColor: guideAccessor(this.props.getTentativeFillColor),\n pointType: this.props.editHandleType === 'icon' ? 'icon' : 'circle',\n iconAtlas: this.props.editHandleIconAtlas,\n })\n );\n\n return [layer];\n }\n\n createTooltipsLayers() {\n const mode = this.getActiveMode();\n const tooltips = mode.getTooltips(this.getModeProps(this.props));\n\n const layer = new TextLayer({\n getSize: DEFAULT_TOOLTIP_FONT_SIZE,\n ...this.getSubLayerProps({\n id: `tooltips`,\n data: tooltips,\n }),\n });\n\n return [layer];\n }\n\n onLayerClick(event: ClickEvent) {\n this.getActiveMode().handleClick(event, this.getModeProps(this.props));\n }\n\n onLayerKeyUp(event: KeyboardEvent) {\n this.getActiveMode().handleKeyUp(event, this.getModeProps(this.props));\n }\n\n onStartDragging(event: StartDraggingEvent) {\n this.getActiveMode().handleStartDragging(event, this.getModeProps(this.props));\n }\n\n onDragging(event: DraggingEvent) {\n this.getActiveMode().handleDragging(event, this.getModeProps(this.props));\n }\n\n onStopDragging(event: StopDraggingEvent) {\n this.getActiveMode().handleStopDragging(event, this.getModeProps(this.props));\n }\n\n onPointerMove(event: PointerMoveEvent) {\n this.setState({ lastPointerMoveEvent: event });\n this.getActiveMode().handlePointerMove(event, this.getModeProps(this.props));\n }\n\n getCursor({ isDragging }: { isDragging: boolean }) {\n if (this.state === null || this.state === undefined) {\n // Layer in 'Awaiting state'\n return null;\n }\n\n let { cursor } = this.state;\n if (!cursor) {\n // default cursor\n cursor = isDragging ? 'grabbing' : 'grab';\n }\n return cursor;\n }\n\n getActiveMode(): GeoJsonEditModeType {\n return this.state.mode;\n }\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { CompositeLayer } from '@deck.gl/core';\nimport { replaceInRange } from '../utils';\nimport { binaryToFeatureForAccesor } from './geojson-binary';\nimport { POINT_LAYER, LINE_LAYER, POLYGON_LAYER, getDefaultProps, forwardProps } from './sub-layer-map';\nimport { getGeojsonFeatures, separateGeojsonFeatures } from './geojson';\nimport { createLayerPropsFromFeatures, createLayerPropsFromBinary } from './geojson-layer-props';\nconst FEATURE_TYPES = ['points', 'linestrings', 'polygons'];\nconst defaultProps = { ...getDefaultProps(POINT_LAYER.circle),\n ...getDefaultProps(POINT_LAYER.icon),\n ...getDefaultProps(POINT_LAYER.text),\n ...getDefaultProps(LINE_LAYER),\n ...getDefaultProps(POLYGON_LAYER),\n stroked: true,\n filled: true,\n extruded: false,\n wireframe: false,\n _full3d: false,\n iconAtlas: {\n type: 'object',\n value: null\n },\n iconMapping: {\n type: 'object',\n value: {}\n },\n getIcon: {\n type: 'accessor',\n value: f => f.properties.icon\n },\n getText: {\n type: 'accessor',\n value: f => f.properties.text\n },\n pointType: 'circle',\n getRadius: {\n deprecatedFor: 'getPointRadius'\n }\n};\nexport default class GeoJsonLayer extends CompositeLayer {\n initializeState() {\n this.state = {\n layerProps: {},\n features: {}\n };\n }\n\n updateState({\n props,\n changeFlags\n }) {\n if (!changeFlags.dataChanged) {\n return;\n }\n\n const {\n data\n } = this.props;\n const binary = data && 'points' in data && 'polygons' in data && 'lines' in data;\n this.setState({\n binary\n });\n\n if (binary) {\n this._updateStateBinary({\n props,\n changeFlags\n });\n } else {\n this._updateStateJSON({\n props,\n changeFlags\n });\n }\n }\n\n _updateStateBinary({\n props,\n changeFlags\n }) {\n const layerProps = createLayerPropsFromBinary(props.data, this.encodePickingColor);\n this.setState({\n layerProps\n });\n }\n\n _updateStateJSON({\n props,\n changeFlags\n }) {\n const features = getGeojsonFeatures(props.data);\n const wrapFeature = this.getSubLayerRow.bind(this);\n let newFeatures = {};\n const featuresDiff = {};\n\n if (Array.isArray(changeFlags.dataChanged)) {\n const oldFeatures = this.state.features;\n\n for (const key in oldFeatures) {\n newFeatures[key] = oldFeatures[key].slice();\n featuresDiff[key] = [];\n }\n\n for (const dataRange of changeFlags.dataChanged) {\n const partialFeatures = separateGeojsonFeatures(features, wrapFeature, dataRange);\n\n for (const key in oldFeatures) {\n featuresDiff[key].push(replaceInRange({\n data: newFeatures[key],\n getIndex: f => f.__source.index,\n dataRange,\n replace: partialFeatures[key]\n }));\n }\n }\n } else {\n newFeatures = separateGeojsonFeatures(features, wrapFeature);\n }\n\n const layerProps = createLayerPropsFromFeatures(newFeatures, featuresDiff);\n this.setState({\n features: newFeatures,\n featuresDiff,\n layerProps\n });\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n const {\n index,\n sourceLayer\n } = info;\n info.featureType = FEATURE_TYPES.find(ft => sourceLayer.id.startsWith(\"\".concat(this.id, \"-\").concat(ft, \"-\")));\n\n if (index >= 0 && sourceLayer.id.startsWith(\"\".concat(this.id, \"-points-text\")) && this.state.binary) {\n info.index = this.props.data.points.globalFeatureIds.value[index];\n }\n\n return info;\n }\n\n _updateAutoHighlight(info) {\n const pointLayerIdPrefix = \"\".concat(this.id, \"-points-\");\n const sourceIsPoints = info.featureType === 'points';\n\n for (const layer of this.getSubLayers()) {\n if (layer.id.startsWith(pointLayerIdPrefix) === sourceIsPoints) {\n layer.updateAutoHighlight(info);\n }\n }\n }\n\n _renderPolygonLayer() {\n const {\n extruded,\n wireframe\n } = this.props;\n const {\n layerProps\n } = this.state;\n const id = 'polygons-fill';\n const PolygonFillLayer = this.shouldRenderSubLayer(id, layerProps.polygons.data) && this.getSubLayerClass(id, POLYGON_LAYER.type);\n\n if (PolygonFillLayer) {\n const forwardedProps = forwardProps(this, POLYGON_LAYER.props);\n const useLineColor = extruded && wireframe;\n\n if (!useLineColor) {\n delete forwardedProps.getLineColor;\n }\n\n forwardedProps.updateTriggers.lineColors = useLineColor;\n return new PolygonFillLayer(forwardedProps, this.getSubLayerProps({\n id,\n updateTriggers: forwardedProps.updateTriggers\n }), layerProps.polygons);\n }\n\n return null;\n }\n\n _renderLineLayers() {\n const {\n extruded,\n stroked\n } = this.props;\n const {\n layerProps\n } = this.state;\n const polygonStrokeLayerId = 'polygons-stroke';\n const lineStringsLayerId = 'linestrings';\n const PolygonStrokeLayer = !extruded && stroked && this.shouldRenderSubLayer(polygonStrokeLayerId, layerProps.polygonsOutline.data) && this.getSubLayerClass(polygonStrokeLayerId, LINE_LAYER.type);\n const LineStringsLayer = this.shouldRenderSubLayer(lineStringsLayerId, layerProps.lines.data) && this.getSubLayerClass(lineStringsLayerId, LINE_LAYER.type);\n\n if (PolygonStrokeLayer || LineStringsLayer) {\n const forwardedProps = forwardProps(this, LINE_LAYER.props);\n return [PolygonStrokeLayer && new PolygonStrokeLayer(forwardedProps, this.getSubLayerProps({\n id: polygonStrokeLayerId,\n updateTriggers: forwardedProps.updateTriggers\n }), layerProps.polygonsOutline), LineStringsLayer && new LineStringsLayer(forwardedProps, this.getSubLayerProps({\n id: lineStringsLayerId,\n updateTriggers: forwardedProps.updateTriggers\n }), layerProps.lines)];\n }\n\n return null;\n }\n\n _renderPointLayers() {\n const {\n pointType\n } = this.props;\n const {\n layerProps,\n binary\n } = this.state;\n let {\n highlightedObjectIndex\n } = this.props;\n\n if (!binary && Number.isFinite(highlightedObjectIndex)) {\n highlightedObjectIndex = layerProps.points.data.findIndex(d => d.__source.index === highlightedObjectIndex);\n }\n\n const types = new Set(pointType.split('+'));\n const pointLayers = [];\n\n for (const type of types) {\n const id = \"points-\".concat(type);\n const PointLayerMapping = POINT_LAYER[type];\n const PointsLayer = PointLayerMapping && this.shouldRenderSubLayer(id, layerProps.points.data) && this.getSubLayerClass(id, PointLayerMapping.type);\n\n if (PointsLayer) {\n const forwardedProps = forwardProps(this, PointLayerMapping.props);\n let pointsLayerProps = layerProps.points;\n\n if (type === 'text' && binary) {\n const {\n instancePickingColors,\n ...rest\n } = pointsLayerProps.data.attributes;\n pointsLayerProps = { ...pointsLayerProps,\n data: { ...pointsLayerProps.data,\n attributes: rest\n }\n };\n }\n\n pointLayers.push(new PointsLayer(forwardedProps, this.getSubLayerProps({\n id,\n updateTriggers: forwardedProps.updateTriggers,\n highlightedObjectIndex\n }), pointsLayerProps));\n }\n }\n\n return pointLayers;\n }\n\n renderLayers() {\n const {\n extruded\n } = this.props;\n\n const polygonFillLayer = this._renderPolygonLayer();\n\n const lineLayers = this._renderLineLayers();\n\n const pointLayers = this._renderPointLayers();\n\n return [!extruded && polygonFillLayer, lineLayers, pointLayers, extruded && polygonFillLayer];\n }\n\n getSubLayerAccessor(accessor) {\n const {\n binary\n } = this.state;\n\n if (!binary || typeof accessor !== 'function') {\n return super.getSubLayerAccessor(accessor);\n }\n\n return (object, info) => {\n const {\n data,\n index\n } = info;\n const feature = binaryToFeatureForAccesor(data, index);\n return accessor(feature, info);\n };\n }\n\n}\n\n_defineProperty(GeoJsonLayer, \"layerName\", 'GeoJsonLayer');\n\n_defineProperty(GeoJsonLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=geojson-layer.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {\n Accessor,\n Color,\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n PickingInfo,\n Unit,\n Material,\n UpdateParameters,\n _ConstructorOf,\n DefaultProps\n} from '@deck.gl/core';\n\nimport type {BinaryFeatures} from '@loaders.gl/schema';\nimport type {Feature, GeoJSON} from 'geojson';\n\nimport {replaceInRange} from '../utils';\nimport {BinaryFeatureTypes, binaryToFeatureForAccesor} from './geojson-binary';\nimport {\n POINT_LAYER,\n LINE_LAYER,\n POLYGON_LAYER,\n getDefaultProps,\n forwardProps\n} from './sub-layer-map';\n\nimport {getGeojsonFeatures, SeparatedGeometries, separateGeojsonFeatures} from './geojson';\nimport {createLayerPropsFromFeatures, createLayerPropsFromBinary} from './geojson-layer-props';\n\n/** All properties supported by GeoJsonLayer */\nexport type GeoJsonLayerProps = _GeoJsonLayerProps & CompositeLayerProps;\n\n/** Properties added by GeoJsonLayer */\nexport type _GeoJsonLayerProps = {\n data: string | GeoJSON | BinaryFeatures | Promise;\n /**\n * How to render Point and MultiPoint features in the data.\n *\n * Supported types are:\n * * `'circle'`\n * * `'icon'`\n * * `'text'`\n *\n * @default 'circle'\n */\n pointType?: string;\n} & _GeoJsonLayerFillProps &\n _GeoJsonLayerStrokeProps &\n _GeoJsonLayer3DProps &\n _GeoJsonLayerPointCircleProps &\n _GeojsonLayerIconPointProps &\n _GeojsonLayerTextPointProps;\n\n/** GeoJsonLayer fill options. */\ntype _GeoJsonLayerFillProps = {\n /**\n * Whether to draw a filled polygon (solid fill).\n *\n * Note that only the area between the outer polygon and any holes will be filled.\n *\n * @default true\n */\n filled?: boolean;\n\n /**\n * Fill collor value or accessor.\n *\n * @default [0, 0, 0, 255]\n */\n getFillColor?: Accessor;\n};\n\n/** GeoJsonLayer stroke options. */\ntype _GeoJsonLayerStrokeProps = {\n /**\n * Whether to draw an outline around the polygon (solid fill).\n *\n * Note that both the outer polygon as well the outlines of any holes will be drawn.\n *\n * @default true\n */\n stroked?: boolean;\n\n /**\n * Line color value or accessor.\n *\n * @default [0, 0, 0, 255]\n */\n getLineColor?: Accessor;\n\n /**\n * Line width value or accessor.\n *\n * @default [0, 0, 0, 255]\n */\n getLineWidth?: Accessor;\n\n /**\n * The units of the line width, one of `meters`, `common`, and `pixels`.\n *\n * @default 'meters'\n * @see Unit.\n */\n lineWidthUnits?: Unit;\n\n /**\n * A multiplier that is applied to all line widths\n *\n * @default 1\n */\n lineWidthScale?: number;\n\n /**\n * The minimum line width in pixels.\n *\n * @default 0\n */\n lineWidthMinPixels?: number;\n\n /**\n * The maximum line width in pixels\n *\n * @default Number.MAX_SAFE_INTEGER\n */\n lineWidthMaxPixels?: number;\n\n /**\n * Type of joint. If `true`, draw round joints. Otherwise draw miter joints.\n *\n * @default false\n */\n lineJointRounded?: boolean;\n\n /**\n * The maximum extent of a joint in ratio to the stroke width.\n *\n * Only works if `lineJointRounded` is false.\n *\n * @default 4\n */\n lineMiterLimit?: number;\n\n /**\n * Type of line caps.\n *\n * If `true`, draw round caps. Otherwise draw square caps.\n *\n * @default false\n */\n lineCapRounded?: boolean;\n\n /**\n * If `true`, extrude the line in screen space (width always faces the camera).\n * If `false`, the width always faces up.\n *\n * @default false\n */\n lineBillboard?: boolean;\n};\n\n/** GeoJsonLayer 3D options. */\ntype _GeoJsonLayer3DProps = {\n /**\n * Extrude Polygon and MultiPolygon features along the z-axis if set to true\n *\n * Based on the elevations provided by the `getElevation` accessor.\n *\n * @default false\n */\n extruded?: boolean;\n\n /**\n * Whether to generate a line wireframe of the hexagon.\n *\n * @default false\n */\n wireframe?: boolean;\n\n /**\n * (Experimental) This prop is only effective with `XYZ` data.\n * When true, polygon tesselation will be performed on the plane with the largest area, instead of the xy plane.\n * @default false\n */\n _full3d?: boolean;\n\n /**\n * Elevation valur or accessor.\n *\n * Only used if `extruded: true`.\n *\n * @default 1000\n */\n getElevation?: Accessor;\n\n /**\n * Elevation multiplier.\n *\n * The final elevation is calculated by `elevationScale * getElevation(d)`.\n * `elevationScale` is a handy property to scale all elevation without updating the data.\n *\n * @default 1\n */\n elevationScale?: boolean;\n\n /**\n * Material settings for lighting effect. Applies to extruded polgons.\n *\n * @default true\n * @see https://deck.gl/docs/developer-guide/using-lighting\n */\n material?: Material;\n};\n\n/** GeoJsonLayer Properties forwarded to `ScatterPlotLayer` if `pointType` is `'circle'` */\nexport type _GeoJsonLayerPointCircleProps = {\n getPointRadius?: Accessor;\n pointRadiusUnits?: Unit;\n pointRadiusScale?: number;\n pointRadiusMinPixels?: number;\n pointRadiusMaxPixels?: number;\n pointAntialiasing?: boolean;\n pointBillboard?: boolean;\n\n /** @deprecated use getPointRadius */\n getRadius?: Accessor;\n};\n\n/** GeoJsonLayer properties forwarded to `IconLayer` if `pointType` is `'icon'` */\ntype _GeojsonLayerIconPointProps = {\n iconAtlas?: any;\n iconMapping?: any;\n getIcon?: Accessor;\n getIconSize?: Accessor;\n getIconColor?: Accessor;\n getIconAngle?: Accessor;\n getIconPixelOffset?: Accessor;\n iconSizeUnits?: Unit;\n iconSizeScale?: number;\n iconSizeMinPixels?: number;\n iconSizeMaxPixels?: number;\n iconBillboard?: boolean;\n iconAlphaCutoff?: number;\n};\n\n/** GeoJsonLayer properties forwarded to `TextLayer` if `pointType` is `'text'` */\ntype _GeojsonLayerTextPointProps = {\n getText?: Accessor;\n getTextColor?: Accessor;\n getTextAngle?: Accessor;\n getTextSize?: Accessor;\n getTextAnchor?: Accessor;\n getTextAlignmentBaseline?: Accessor;\n getTextPixelOffset?: Accessor;\n getTextBackgroundColor?: Accessor;\n getTextBorderColor?: Accessor;\n getTextBorderWidth?: Accessor;\n textSizeUnits?: Unit;\n textSizeScale?: number;\n textSizeMinPixels?: number;\n textSizeMaxPixels?: number;\n textCharacterSet?: any;\n textFontFamily?: string;\n textFontWeight?: number;\n textLineHeight?: number;\n textMaxWidth?: number;\n textWordBreak?: string; // TODO\n textBackground?: boolean;\n textBackgroundPadding?: number[];\n textOutlineColor?: Color;\n textOutlineWidth?: number;\n textBillboard?: boolean;\n textFontSettings?: any;\n};\n\nconst FEATURE_TYPES = ['points', 'linestrings', 'polygons'];\n\nconst defaultProps: DefaultProps = {\n ...getDefaultProps(POINT_LAYER.circle),\n ...getDefaultProps(POINT_LAYER.icon),\n ...getDefaultProps(POINT_LAYER.text),\n ...getDefaultProps(LINE_LAYER),\n ...getDefaultProps(POLYGON_LAYER),\n\n // Overwrite sub layer defaults\n stroked: true,\n filled: true,\n extruded: false,\n wireframe: false,\n _full3d: false,\n iconAtlas: {type: 'object', value: null},\n iconMapping: {type: 'object', value: {}},\n getIcon: {type: 'accessor', value: f => f.properties.icon},\n getText: {type: 'accessor', value: f => f.properties.text},\n\n // Self props\n pointType: 'circle',\n\n // TODO: deprecated, remove in v9\n getRadius: {deprecatedFor: 'getPointRadius'}\n};\n\ntype GeoJsonPickingInfo = PickingInfo & {\n featureType?: string | null;\n info?: any;\n};\n\n/** Render GeoJSON formatted data as polygons, lines and points (circles, icons and/or texts). */\nexport default class GeoJsonLayer extends CompositeLayer<\n Required & ExtraProps\n> {\n static layerName = 'GeoJsonLayer';\n static defaultProps = defaultProps;\n\n initializeState(): void {\n this.state = {\n layerProps: {},\n features: {}\n };\n }\n\n updateState({props, changeFlags}: UpdateParameters): void {\n if (!changeFlags.dataChanged) {\n return;\n }\n const {data} = this.props;\n const binary =\n data && 'points' in (data as {}) && 'polygons' in (data as {}) && 'lines' in (data as {});\n\n this.setState({binary});\n\n if (binary) {\n this._updateStateBinary({props, changeFlags});\n } else {\n this._updateStateJSON({props, changeFlags});\n }\n }\n\n private _updateStateBinary({props, changeFlags}): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const layerProps = createLayerPropsFromBinary(props.data, this.encodePickingColor);\n this.setState({layerProps});\n }\n\n private _updateStateJSON({props, changeFlags}): void {\n const features: Feature[] = getGeojsonFeatures(props.data) as any;\n const wrapFeature = this.getSubLayerRow.bind(this);\n let newFeatures: SeparatedGeometries = {} as SeparatedGeometries;\n const featuresDiff = {};\n\n if (Array.isArray(changeFlags.dataChanged)) {\n const oldFeatures = this.state.features;\n for (const key in oldFeatures) {\n newFeatures[key] = oldFeatures[key].slice();\n featuresDiff[key] = [];\n }\n\n for (const dataRange of changeFlags.dataChanged) {\n const partialFeatures = separateGeojsonFeatures(features, wrapFeature, dataRange);\n for (const key in oldFeatures) {\n featuresDiff[key].push(\n replaceInRange({\n data: newFeatures[key],\n getIndex: f => f.__source.index,\n dataRange,\n replace: partialFeatures[key]\n })\n );\n }\n }\n } else {\n newFeatures = separateGeojsonFeatures(features, wrapFeature);\n }\n\n const layerProps = createLayerPropsFromFeatures(newFeatures, featuresDiff);\n\n this.setState({\n features: newFeatures,\n featuresDiff,\n layerProps\n });\n }\n\n getPickingInfo(params): GeoJsonPickingInfo {\n const info = super.getPickingInfo(params) as GeoJsonPickingInfo;\n const {index, sourceLayer} = info;\n info.featureType = FEATURE_TYPES.find(ft => sourceLayer!.id.startsWith(`${this.id}-${ft}-`));\n if (index >= 0 && sourceLayer!.id.startsWith(`${this.id}-points-text`) && this.state.binary) {\n info.index = (this.props.data as BinaryFeatures).points!.globalFeatureIds.value[index];\n }\n return info;\n }\n\n _updateAutoHighlight(info: GeoJsonPickingInfo): void {\n // All sub layers except the points layer use source feature index to encode the picking color\n // The points layer uses indices from the points data array.\n const pointLayerIdPrefix = `${this.id}-points-`;\n const sourceIsPoints = info.featureType === 'points';\n for (const layer of this.getSubLayers()) {\n if (layer.id.startsWith(pointLayerIdPrefix) === sourceIsPoints) {\n layer.updateAutoHighlight(info);\n }\n }\n }\n\n private _renderPolygonLayer(): Layer | null {\n const {extruded, wireframe} = this.props;\n const {layerProps} = this.state;\n const id = 'polygons-fill';\n\n const PolygonFillLayer =\n this.shouldRenderSubLayer(id, layerProps.polygons.data) &&\n this.getSubLayerClass(id, POLYGON_LAYER.type);\n\n if (PolygonFillLayer) {\n const forwardedProps = forwardProps(this, POLYGON_LAYER.props);\n // Avoid building the lineColors attribute if wireframe is off\n const useLineColor = extruded && wireframe;\n if (!useLineColor) {\n delete forwardedProps.getLineColor;\n }\n // using a legacy API to invalid lineColor attributes\n forwardedProps.updateTriggers.lineColors = useLineColor;\n\n return new PolygonFillLayer(\n forwardedProps,\n this.getSubLayerProps({\n id,\n updateTriggers: forwardedProps.updateTriggers\n }),\n layerProps.polygons\n );\n }\n return null;\n }\n\n private _renderLineLayers(): (Layer | false)[] | null {\n const {extruded, stroked} = this.props;\n const {layerProps} = this.state;\n const polygonStrokeLayerId = 'polygons-stroke';\n const lineStringsLayerId = 'linestrings';\n\n const PolygonStrokeLayer =\n !extruded &&\n stroked &&\n this.shouldRenderSubLayer(polygonStrokeLayerId, layerProps.polygonsOutline.data) &&\n this.getSubLayerClass(polygonStrokeLayerId, LINE_LAYER.type);\n const LineStringsLayer =\n this.shouldRenderSubLayer(lineStringsLayerId, layerProps.lines.data) &&\n this.getSubLayerClass(lineStringsLayerId, LINE_LAYER.type);\n\n if (PolygonStrokeLayer || LineStringsLayer) {\n const forwardedProps = forwardProps(this, LINE_LAYER.props);\n\n return [\n PolygonStrokeLayer &&\n new PolygonStrokeLayer(\n forwardedProps,\n this.getSubLayerProps({\n id: polygonStrokeLayerId,\n updateTriggers: forwardedProps.updateTriggers\n }),\n layerProps.polygonsOutline\n ),\n\n LineStringsLayer &&\n new LineStringsLayer(\n forwardedProps,\n this.getSubLayerProps({\n id: lineStringsLayerId,\n updateTriggers: forwardedProps.updateTriggers\n }),\n layerProps.lines\n )\n ];\n }\n return null;\n }\n\n private _renderPointLayers(): Layer[] | null {\n const {pointType} = this.props;\n const {layerProps, binary} = this.state;\n let {highlightedObjectIndex} = this.props;\n\n if (!binary && Number.isFinite(highlightedObjectIndex)) {\n highlightedObjectIndex = layerProps.points.data.findIndex(\n d => d.__source.index === highlightedObjectIndex\n );\n }\n\n // Avoid duplicate sub layer ids\n const types = new Set(pointType.split('+'));\n const pointLayers: Layer[] = [];\n for (const type of types) {\n const id = `points-${type}`;\n const PointLayerMapping = POINT_LAYER[type];\n const PointsLayer: _ConstructorOf =\n PointLayerMapping &&\n this.shouldRenderSubLayer(id, layerProps.points.data) &&\n this.getSubLayerClass(id, PointLayerMapping.type);\n if (PointsLayer) {\n const forwardedProps = forwardProps(this, PointLayerMapping.props);\n let pointsLayerProps = layerProps.points;\n\n if (type === 'text' && binary) {\n // Picking colors are per-point but for text per-character are required\n // getPickingInfo() maps back to the correct index\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {instancePickingColors, ...rest} = pointsLayerProps.data.attributes;\n pointsLayerProps = {\n ...pointsLayerProps,\n data: {...pointsLayerProps.data, attributes: rest}\n };\n }\n\n pointLayers.push(\n new PointsLayer(\n forwardedProps,\n this.getSubLayerProps({\n id,\n updateTriggers: forwardedProps.updateTriggers,\n highlightedObjectIndex\n }),\n pointsLayerProps\n )\n );\n }\n }\n return pointLayers;\n }\n\n renderLayers() {\n const {extruded} = this.props;\n\n const polygonFillLayer = this._renderPolygonLayer();\n const lineLayers = this._renderLineLayers();\n const pointLayers = this._renderPointLayers();\n\n return [\n // If not extruded: flat fill layer is drawn below outlines\n !extruded && polygonFillLayer,\n lineLayers,\n pointLayers,\n // If extruded: draw fill layer last for correct blending behavior\n extruded && polygonFillLayer\n ];\n }\n\n protected getSubLayerAccessor(accessor: Accessor): Accessor {\n const {binary} = this.state;\n if (!binary || typeof accessor !== 'function') {\n return super.getSubLayerAccessor(accessor);\n }\n\n return (object, info) => {\n const {data, index} = info;\n const feature = binaryToFeatureForAccesor(data as unknown as BinaryFeatureTypes, index);\n // @ts-ignore (TS2349) accessor is always function\n return accessor(feature, info);\n };\n }\n}\n","export function binaryToFeatureForAccesor(data, index) {\n if (!data) {\n return null;\n }\n\n const featureIndex = 'startIndices' in data ? data.startIndices[index] : index;\n const geometryIndex = data.featureIds.value[featureIndex];\n\n if (featureIndex !== -1) {\n return getPropertiesForIndex(data, geometryIndex, featureIndex);\n }\n\n return null;\n}\n\nfunction getPropertiesForIndex(data, propertiesIndex, numericPropsIndex) {\n const feature = {\n properties: { ...data.properties[propertiesIndex]\n }\n };\n\n for (const prop in data.numericProps) {\n feature.properties[prop] = data.numericProps[prop].value[numericPropsIndex];\n }\n\n return feature;\n}\n\nexport function calculatePickingColors(geojsonBinary, encodePickingColor) {\n const pickingColors = {\n points: null,\n lines: null,\n polygons: null\n };\n\n for (const key in pickingColors) {\n const featureIds = geojsonBinary[key].globalFeatureIds.value;\n pickingColors[key] = new Uint8ClampedArray(featureIds.length * 3);\n const pickingColor = [];\n\n for (let i = 0; i < featureIds.length; i++) {\n encodePickingColor(featureIds[i], pickingColor);\n pickingColors[key][i * 3 + 0] = pickingColor[0];\n pickingColors[key][i * 3 + 1] = pickingColor[1];\n pickingColors[key][i * 3 + 2] = pickingColor[2];\n }\n }\n\n return pickingColors;\n}\n//# sourceMappingURL=geojson-binary.js.map","// This module implement some utility functions to work with\n// the geojson-binary format defined at loaders.gl:\n// https://github.com/visgl/loaders.gl/blob/master/modules/gis/docs/api-reference/geojson-to-binary.md\n\nimport {\n BinaryFeatures,\n BinaryLineFeatures,\n BinaryPointFeatures,\n BinaryPolygonFeatures,\n Feature\n} from '@loaders.gl/schema';\n\nexport type BinaryFeatureTypes = BinaryPointFeatures | BinaryLineFeatures | BinaryPolygonFeatures;\n\ntype FeaureOnlyProperties = Pick;\n\n/**\n * Return the feature for an accesor\n */\nexport function binaryToFeatureForAccesor(\n data: BinaryFeatureTypes,\n index: number\n): FeaureOnlyProperties | null {\n if (!data) {\n return null;\n }\n\n const featureIndex = 'startIndices' in data ? (data as any).startIndices[index] : index;\n const geometryIndex = data.featureIds.value[featureIndex];\n\n if (featureIndex !== -1) {\n return getPropertiesForIndex(data, geometryIndex, featureIndex);\n }\n\n return null;\n}\n\nfunction getPropertiesForIndex(\n data: BinaryFeatureTypes,\n propertiesIndex: number,\n numericPropsIndex: number\n): FeaureOnlyProperties {\n const feature = {\n properties: {...data.properties[propertiesIndex]}\n };\n\n for (const prop in data.numericProps) {\n feature.properties[prop] = data.numericProps[prop].value[numericPropsIndex];\n }\n\n return feature;\n}\n\n// Custom picking color to keep binary indexes\nexport function calculatePickingColors(\n geojsonBinary: BinaryFeatures,\n encodePickingColor: (id: number, result: number[]) => void\n): Record {\n const pickingColors: Record = {\n points: null,\n lines: null,\n polygons: null\n };\n for (const key in pickingColors) {\n const featureIds = geojsonBinary[key].globalFeatureIds.value;\n pickingColors[key] = new Uint8ClampedArray(featureIds.length * 3);\n const pickingColor = [];\n for (let i = 0; i < featureIds.length; i++) {\n encodePickingColor(featureIds[i], pickingColor);\n pickingColors[key]![i * 3 + 0] = pickingColor[0];\n pickingColors[key]![i * 3 + 1] = pickingColor[1];\n pickingColors[key]![i * 3 + 2] = pickingColor[2];\n }\n }\n\n return pickingColors;\n}\n","import IconLayer from '../icon-layer/icon-layer';\nimport ScatterplotLayer from '../scatterplot-layer/scatterplot-layer';\nimport TextLayer from '../text-layer/text-layer';\nimport PathLayer from '../path-layer/path-layer';\nimport SolidPolygonLayer from '../solid-polygon-layer/solid-polygon-layer';\nexport const POINT_LAYER = {\n circle: {\n type: ScatterplotLayer,\n props: {\n filled: 'filled',\n stroked: 'stroked',\n lineWidthMaxPixels: 'lineWidthMaxPixels',\n lineWidthMinPixels: 'lineWidthMinPixels',\n lineWidthScale: 'lineWidthScale',\n lineWidthUnits: 'lineWidthUnits',\n pointRadiusMaxPixels: 'radiusMaxPixels',\n pointRadiusMinPixels: 'radiusMinPixels',\n pointRadiusScale: 'radiusScale',\n pointRadiusUnits: 'radiusUnits',\n pointAntialiasing: 'antialiasing',\n pointBillboard: 'billboard',\n getFillColor: 'getFillColor',\n getLineColor: 'getLineColor',\n getLineWidth: 'getLineWidth',\n getPointRadius: 'getRadius'\n }\n },\n icon: {\n type: IconLayer,\n props: {\n iconAtlas: 'iconAtlas',\n iconMapping: 'iconMapping',\n iconSizeMaxPixels: 'sizeMaxPixels',\n iconSizeMinPixels: 'sizeMinPixels',\n iconSizeScale: 'sizeScale',\n iconSizeUnits: 'sizeUnits',\n iconAlphaCutoff: 'alphaCutoff',\n iconBillboard: 'billboard',\n getIcon: 'getIcon',\n getIconAngle: 'getAngle',\n getIconColor: 'getColor',\n getIconPixelOffset: 'getPixelOffset',\n getIconSize: 'getSize'\n }\n },\n text: {\n type: TextLayer,\n props: {\n textSizeMaxPixels: 'sizeMaxPixels',\n textSizeMinPixels: 'sizeMinPixels',\n textSizeScale: 'sizeScale',\n textSizeUnits: 'sizeUnits',\n textBackground: 'background',\n textBackgroundPadding: 'backgroundPadding',\n textFontFamily: 'fontFamily',\n textFontWeight: 'fontWeight',\n textLineHeight: 'lineHeight',\n textMaxWidth: 'maxWidth',\n textOutlineColor: 'outlineColor',\n textOutlineWidth: 'outlineWidth',\n textWordBreak: 'wordBreak',\n textCharacterSet: 'characterSet',\n textBillboard: 'billboard',\n textFontSettings: 'fontSettings',\n getText: 'getText',\n getTextAngle: 'getAngle',\n getTextColor: 'getColor',\n getTextPixelOffset: 'getPixelOffset',\n getTextSize: 'getSize',\n getTextAnchor: 'getTextAnchor',\n getTextAlignmentBaseline: 'getAlignmentBaseline',\n getTextBackgroundColor: 'getBackgroundColor',\n getTextBorderColor: 'getBorderColor',\n getTextBorderWidth: 'getBorderWidth'\n }\n }\n};\nexport const LINE_LAYER = {\n type: PathLayer,\n props: {\n lineWidthUnits: 'widthUnits',\n lineWidthScale: 'widthScale',\n lineWidthMinPixels: 'widthMinPixels',\n lineWidthMaxPixels: 'widthMaxPixels',\n lineJointRounded: 'jointRounded',\n lineCapRounded: 'capRounded',\n lineMiterLimit: 'miterLimit',\n lineBillboard: 'billboard',\n getLineColor: 'getColor',\n getLineWidth: 'getWidth'\n }\n};\nexport const POLYGON_LAYER = {\n type: SolidPolygonLayer,\n props: {\n extruded: 'extruded',\n filled: 'filled',\n wireframe: 'wireframe',\n elevationScale: 'elevationScale',\n material: 'material',\n _full3d: '_full3d',\n getElevation: 'getElevation',\n getFillColor: 'getFillColor',\n getLineColor: 'getLineColor'\n }\n};\nexport function getDefaultProps({\n type,\n props\n}) {\n const result = {};\n\n for (const key in props) {\n result[key] = type.defaultProps[props[key]];\n }\n\n return result;\n}\nexport function forwardProps(layer, mapping) {\n const {\n transitions,\n updateTriggers\n } = layer.props;\n const result = {\n updateTriggers: {},\n transitions: transitions && {\n getPosition: transitions.geometry\n }\n };\n\n for (const sourceKey in mapping) {\n const targetKey = mapping[sourceKey];\n let value = layer.props[sourceKey];\n\n if (sourceKey.startsWith('get')) {\n value = layer.getSubLayerAccessor(value);\n result.updateTriggers[targetKey] = updateTriggers[sourceKey];\n\n if (transitions) {\n result.transitions[targetKey] = transitions[sourceKey];\n }\n }\n\n result[targetKey] = value;\n }\n\n return result;\n}\n//# sourceMappingURL=sub-layer-map.js.map","import {CompositeLayer, Layer} from '@deck.gl/core';\n\nimport IconLayer from '../icon-layer/icon-layer';\nimport ScatterplotLayer from '../scatterplot-layer/scatterplot-layer';\nimport TextLayer from '../text-layer/text-layer';\nimport PathLayer from '../path-layer/path-layer';\nimport SolidPolygonLayer from '../solid-polygon-layer/solid-polygon-layer';\n\nexport const POINT_LAYER = {\n circle: {\n type: ScatterplotLayer,\n props: {\n filled: 'filled',\n stroked: 'stroked',\n\n lineWidthMaxPixels: 'lineWidthMaxPixels',\n lineWidthMinPixels: 'lineWidthMinPixels',\n lineWidthScale: 'lineWidthScale',\n lineWidthUnits: 'lineWidthUnits',\n pointRadiusMaxPixels: 'radiusMaxPixels',\n pointRadiusMinPixels: 'radiusMinPixels',\n pointRadiusScale: 'radiusScale',\n pointRadiusUnits: 'radiusUnits',\n pointAntialiasing: 'antialiasing',\n pointBillboard: 'billboard',\n\n getFillColor: 'getFillColor',\n getLineColor: 'getLineColor',\n getLineWidth: 'getLineWidth',\n getPointRadius: 'getRadius'\n }\n },\n icon: {\n type: IconLayer,\n props: {\n iconAtlas: 'iconAtlas',\n iconMapping: 'iconMapping',\n\n iconSizeMaxPixels: 'sizeMaxPixels',\n iconSizeMinPixels: 'sizeMinPixels',\n iconSizeScale: 'sizeScale',\n iconSizeUnits: 'sizeUnits',\n iconAlphaCutoff: 'alphaCutoff',\n iconBillboard: 'billboard',\n\n getIcon: 'getIcon',\n getIconAngle: 'getAngle',\n getIconColor: 'getColor',\n getIconPixelOffset: 'getPixelOffset',\n getIconSize: 'getSize'\n }\n },\n text: {\n type: TextLayer,\n props: {\n textSizeMaxPixels: 'sizeMaxPixels',\n textSizeMinPixels: 'sizeMinPixels',\n textSizeScale: 'sizeScale',\n textSizeUnits: 'sizeUnits',\n\n textBackground: 'background',\n textBackgroundPadding: 'backgroundPadding',\n textFontFamily: 'fontFamily',\n textFontWeight: 'fontWeight',\n textLineHeight: 'lineHeight',\n textMaxWidth: 'maxWidth',\n textOutlineColor: 'outlineColor',\n textOutlineWidth: 'outlineWidth',\n textWordBreak: 'wordBreak',\n textCharacterSet: 'characterSet',\n textBillboard: 'billboard',\n textFontSettings: 'fontSettings',\n\n getText: 'getText',\n getTextAngle: 'getAngle',\n getTextColor: 'getColor',\n getTextPixelOffset: 'getPixelOffset',\n getTextSize: 'getSize',\n getTextAnchor: 'getTextAnchor',\n getTextAlignmentBaseline: 'getAlignmentBaseline',\n getTextBackgroundColor: 'getBackgroundColor',\n getTextBorderColor: 'getBorderColor',\n getTextBorderWidth: 'getBorderWidth'\n }\n }\n};\n\nexport const LINE_LAYER = {\n type: PathLayer,\n props: {\n lineWidthUnits: 'widthUnits',\n lineWidthScale: 'widthScale',\n lineWidthMinPixels: 'widthMinPixels',\n lineWidthMaxPixels: 'widthMaxPixels',\n lineJointRounded: 'jointRounded',\n lineCapRounded: 'capRounded',\n lineMiterLimit: 'miterLimit',\n lineBillboard: 'billboard',\n\n getLineColor: 'getColor',\n getLineWidth: 'getWidth'\n }\n};\n\nexport const POLYGON_LAYER = {\n type: SolidPolygonLayer,\n props: {\n extruded: 'extruded',\n filled: 'filled',\n wireframe: 'wireframe',\n elevationScale: 'elevationScale',\n material: 'material',\n _full3d: '_full3d',\n\n getElevation: 'getElevation',\n getFillColor: 'getFillColor',\n getLineColor: 'getLineColor'\n }\n};\n\nexport function getDefaultProps({\n type,\n props\n}: {\n type: typeof Layer;\n props: Record;\n}): Record {\n const result = {};\n for (const key in props) {\n result[key] = type.defaultProps[props[key]];\n }\n return result;\n}\n\nexport function forwardProps(\n layer: CompositeLayer,\n mapping: Record\n): Record {\n const {transitions, updateTriggers} = layer.props;\n const result: Record = {\n updateTriggers: {},\n transitions: transitions && {\n getPosition: transitions.geometry\n }\n };\n\n for (const sourceKey in mapping) {\n const targetKey = mapping[sourceKey];\n let value = layer.props[sourceKey];\n if (sourceKey.startsWith('get')) {\n // isAccessor\n value = (layer as any).getSubLayerAccessor(value);\n result.updateTriggers[targetKey] = updateTriggers[sourceKey];\n if (transitions) {\n result.transitions[targetKey] = transitions[sourceKey];\n }\n }\n result[targetKey] = value;\n }\n return result;\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, picking, log, UNIT } from '@deck.gl/core';\nimport { Model, Geometry } from '@luma.gl/core';\nimport vs from './icon-layer-vertex.glsl';\nimport fs from './icon-layer-fragment.glsl';\nimport IconManager from './icon-manager';\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n iconAtlas: {\n type: 'image',\n value: null,\n async: true\n },\n iconMapping: {\n type: 'object',\n value: {},\n async: true\n },\n sizeScale: {\n type: 'number',\n value: 1,\n min: 0\n },\n billboard: true,\n sizeUnits: 'pixels',\n sizeMinPixels: {\n type: 'number',\n min: 0,\n value: 0\n },\n sizeMaxPixels: {\n type: 'number',\n min: 0,\n value: Number.MAX_SAFE_INTEGER\n },\n alphaCutoff: {\n type: 'number',\n value: 0.05,\n min: 0,\n max: 1\n },\n getPosition: {\n type: 'accessor',\n value: x => x.position\n },\n getIcon: {\n type: 'accessor',\n value: x => x.icon\n },\n getColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n getSize: {\n type: 'accessor',\n value: 1\n },\n getAngle: {\n type: 'accessor',\n value: 0\n },\n getPixelOffset: {\n type: 'accessor',\n value: [0, 0]\n },\n onIconError: {\n type: 'function',\n value: null,\n optional: true\n },\n textureParameters: {\n type: 'object',\n ignore: true\n }\n};\nexport default class IconLayer extends Layer {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", void 0);\n }\n\n getShaders() {\n return super.getShaders({\n vs,\n fs,\n modules: [project32, picking]\n });\n }\n\n initializeState() {\n this.state = {\n iconManager: new IconManager(this.context.gl, {\n onUpdate: this._onUpdate.bind(this),\n onError: this._onError.bind(this)\n })\n };\n const attributeManager = this.getAttributeManager();\n attributeManager.addInstanced({\n instancePositions: {\n size: 3,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getPosition'\n },\n instanceSizes: {\n size: 1,\n transition: true,\n accessor: 'getSize',\n defaultValue: 1\n },\n instanceOffsets: {\n size: 2,\n accessor: 'getIcon',\n transform: this.getInstanceOffset\n },\n instanceIconFrames: {\n size: 4,\n accessor: 'getIcon',\n transform: this.getInstanceIconFrame\n },\n instanceColorModes: {\n size: 1,\n type: 5121,\n accessor: 'getIcon',\n transform: this.getInstanceColorMode\n },\n instanceColors: {\n size: this.props.colorFormat.length,\n type: 5121,\n normalized: true,\n transition: true,\n accessor: 'getColor',\n defaultValue: DEFAULT_COLOR\n },\n instanceAngles: {\n size: 1,\n transition: true,\n accessor: 'getAngle'\n },\n instancePixelOffset: {\n size: 2,\n transition: true,\n accessor: 'getPixelOffset'\n }\n });\n }\n\n updateState(params) {\n super.updateState(params);\n const {\n props,\n oldProps,\n changeFlags\n } = params;\n const attributeManager = this.getAttributeManager();\n const {\n iconAtlas,\n iconMapping,\n data,\n getIcon,\n textureParameters\n } = props;\n const {\n iconManager\n } = this.state;\n const prePacked = iconAtlas || this.internalState.isAsyncPropLoading('iconAtlas');\n iconManager.setProps({\n loadOptions: props.loadOptions,\n autoPacking: !prePacked,\n iconAtlas,\n iconMapping: prePacked ? iconMapping : null,\n textureParameters\n });\n\n if (prePacked) {\n if (oldProps.iconMapping !== props.iconMapping) {\n attributeManager.invalidate('getIcon');\n }\n } else if (changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getIcon)) {\n iconManager.packIcons(data, getIcon);\n }\n\n if (changeFlags.extensionsChanged) {\n var _this$state$model;\n\n const {\n gl\n } = this.context;\n (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n this.state.model = this._getModel(gl);\n attributeManager.invalidateAll();\n }\n }\n\n get isLoaded() {\n return super.isLoaded && this.state.iconManager.isLoaded;\n }\n\n finalizeState(context) {\n super.finalizeState(context);\n this.state.iconManager.finalize();\n }\n\n draw({\n uniforms\n }) {\n const {\n sizeScale,\n sizeMinPixels,\n sizeMaxPixels,\n sizeUnits,\n billboard,\n alphaCutoff\n } = this.props;\n const {\n iconManager\n } = this.state;\n const iconsTexture = iconManager.getTexture();\n\n if (iconsTexture) {\n this.state.model.setUniforms(uniforms).setUniforms({\n iconsTexture,\n iconsTextureDim: [iconsTexture.width, iconsTexture.height],\n sizeUnits: UNIT[sizeUnits],\n sizeScale,\n sizeMinPixels,\n sizeMaxPixels,\n billboard,\n alphaCutoff\n }).draw();\n }\n }\n\n _getModel(gl) {\n const positions = [-1, -1, -1, 1, 1, 1, 1, -1];\n return new Model(gl, { ...this.getShaders(),\n id: this.props.id,\n geometry: new Geometry({\n drawMode: 6,\n attributes: {\n positions: {\n size: 2,\n value: new Float32Array(positions)\n }\n }\n }),\n isInstanced: true\n });\n }\n\n _onUpdate() {\n this.setNeedsRedraw();\n }\n\n _onError(evt) {\n var _this$getCurrentLayer;\n\n const onIconError = (_this$getCurrentLayer = this.getCurrentLayer()) === null || _this$getCurrentLayer === void 0 ? void 0 : _this$getCurrentLayer.props.onIconError;\n\n if (onIconError) {\n onIconError(evt);\n } else {\n log.error(evt.error.message)();\n }\n }\n\n getInstanceOffset(icon) {\n const {\n width,\n height,\n anchorX = width / 2,\n anchorY = height / 2\n } = this.state.iconManager.getIconMapping(icon);\n return [width / 2 - anchorX, height / 2 - anchorY];\n }\n\n getInstanceColorMode(icon) {\n const mapping = this.state.iconManager.getIconMapping(icon);\n return mapping.mask ? 1 : 0;\n }\n\n getInstanceIconFrame(icon) {\n const {\n x,\n y,\n width,\n height\n } = this.state.iconManager.getIconMapping(icon);\n return [x, y, width, height];\n }\n\n}\n\n_defineProperty(IconLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(IconLayer, \"layerName\", 'IconLayer');\n//# sourceMappingURL=icon-layer.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {Layer, project32, picking, log, UNIT} from '@deck.gl/core';\nimport GL from '@luma.gl/constants';\nimport {Model, Geometry} from '@luma.gl/core';\n\nimport vs from './icon-layer-vertex.glsl';\nimport fs from './icon-layer-fragment.glsl';\nimport IconManager from './icon-manager';\n\nimport type {\n LayerProps,\n LayerDataSource,\n Accessor,\n AccessorFunction,\n Position,\n Color,\n Texture,\n Unit,\n UpdateParameters,\n LayerContext,\n DefaultProps\n} from '@deck.gl/core';\nimport type {UnpackedIcon, IconMapping, LoadIconErrorContext} from './icon-manager';\n\ntype _IconLayerProps = {\n data: LayerDataSource;\n /** A prepacked image that contains all icons. */\n iconAtlas?: string | Texture;\n /** Icon names mapped to icon definitions, or a URL to load such mapping from a JSON file. */\n iconMapping?: string | IconMapping;\n\n /** Icon size multiplier.\n * @default 1\n */\n sizeScale?: number;\n /**\n * The units of the icon size, one of `meters`, `common`, and `pixels`.\n *\n * @default 'pixels'\n */\n sizeUnits?: Unit;\n /**\n * The minimum size in pixels. When using non-pixel `sizeUnits`, this prop can be used to prevent the icon from getting too small when zoomed out.\n */\n sizeMinPixels?: number;\n /**\n * The maximum size in pixels. When using non-pixel `sizeUnits`, this prop can be used to prevent the icon from getting too big when zoomed in.\n */\n sizeMaxPixels?: number;\n /** If `true`, the icon always faces camera. Otherwise the icon faces up (z)\n * @default true\n */\n billboard?: boolean;\n /**\n * Discard pixels whose opacity is below this threshold.\n * A discarded pixel would create a \"hole\" in the icon that is not considered part of the object.\n * @default 0.05\n */\n alphaCutoff?: number;\n\n /** Anchor position accessor. */\n getPosition?: Accessor;\n /** Icon definition accessor.\n * Should return the icon id if using pre-packed icons (`iconAtlas` + `iconMapping`).\n * Return an object that defines the icon if using auto-packing.\n */\n getIcon?: AccessorFunction | AccessorFunction;\n /** Icon color accessor.\n * @default [0, 0, 0, 255]\n */\n getColor?: Accessor;\n /** Icon size accessor.\n * @default 1\n */\n getSize?: Accessor;\n /** Icon rotation accessor, in degrees.\n * @default 0\n */\n getAngle?: Accessor;\n /**\n * Icon offsest accessor, in pixels.\n * @default [0, 0]\n */\n getPixelOffset?: Accessor;\n /**\n * Callback called if the attempt to fetch an icon returned by `getIcon` fails.\n */\n onIconError?: ((context: LoadIconErrorContext) => void) | null;\n\n /** Customize the [texture parameters](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texParameter). */\n textureParameters?: Record | null;\n};\n\nexport type IconLayerProps = _IconLayerProps & LayerProps;\n\nconst DEFAULT_COLOR: [number, number, number, number] = [0, 0, 0, 255];\n\nconst defaultProps: DefaultProps = {\n iconAtlas: {type: 'image', value: null, async: true},\n iconMapping: {type: 'object', value: {}, async: true},\n sizeScale: {type: 'number', value: 1, min: 0},\n billboard: true,\n sizeUnits: 'pixels',\n sizeMinPixels: {type: 'number', min: 0, value: 0}, // min point radius in pixels\n sizeMaxPixels: {type: 'number', min: 0, value: Number.MAX_SAFE_INTEGER}, // max point radius in pixels\n alphaCutoff: {type: 'number', value: 0.05, min: 0, max: 1},\n\n getPosition: {type: 'accessor', value: x => x.position},\n getIcon: {type: 'accessor', value: x => x.icon},\n getColor: {type: 'accessor', value: DEFAULT_COLOR},\n getSize: {type: 'accessor', value: 1},\n getAngle: {type: 'accessor', value: 0},\n getPixelOffset: {type: 'accessor', value: [0, 0]},\n\n onIconError: {type: 'function', value: null, optional: true},\n\n textureParameters: {type: 'object', ignore: true}\n};\n\n/** Render raster icons at given coordinates. */\nexport default class IconLayer extends Layer<\n ExtraPropsT & Required<_IconLayerProps>\n> {\n static defaultProps = defaultProps;\n static layerName = 'IconLayer';\n\n state!: {\n model?: Model;\n iconManager: IconManager;\n };\n\n getShaders() {\n return super.getShaders({vs, fs, modules: [project32, picking]});\n }\n\n initializeState() {\n this.state = {\n iconManager: new IconManager(this.context.gl, {\n onUpdate: this._onUpdate.bind(this),\n onError: this._onError.bind(this)\n })\n };\n\n const attributeManager = this.getAttributeManager();\n /* eslint-disable max-len */\n attributeManager!.addInstanced({\n instancePositions: {\n size: 3,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getPosition'\n },\n instanceSizes: {\n size: 1,\n transition: true,\n accessor: 'getSize',\n defaultValue: 1\n },\n instanceOffsets: {\n size: 2,\n accessor: 'getIcon',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n transform: this.getInstanceOffset\n },\n instanceIconFrames: {\n size: 4,\n accessor: 'getIcon',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n transform: this.getInstanceIconFrame\n },\n instanceColorModes: {\n size: 1,\n type: GL.UNSIGNED_BYTE,\n accessor: 'getIcon',\n // eslint-disable-next-line @typescript-eslint/unbound-method\n transform: this.getInstanceColorMode\n },\n instanceColors: {\n size: this.props.colorFormat.length,\n type: GL.UNSIGNED_BYTE,\n normalized: true,\n transition: true,\n accessor: 'getColor',\n defaultValue: DEFAULT_COLOR\n },\n instanceAngles: {\n size: 1,\n transition: true,\n accessor: 'getAngle'\n },\n instancePixelOffset: {\n size: 2,\n transition: true,\n accessor: 'getPixelOffset'\n }\n });\n /* eslint-enable max-len */\n }\n\n /* eslint-disable max-statements, complexity */\n updateState(params: UpdateParameters) {\n super.updateState(params);\n const {props, oldProps, changeFlags} = params;\n\n const attributeManager = this.getAttributeManager();\n const {iconAtlas, iconMapping, data, getIcon, textureParameters} = props;\n const {iconManager} = this.state;\n\n // internalState is always defined during updateState\n const prePacked = iconAtlas || this.internalState!.isAsyncPropLoading('iconAtlas');\n iconManager.setProps({\n loadOptions: props.loadOptions,\n autoPacking: !prePacked,\n iconAtlas,\n iconMapping: prePacked ? (iconMapping as IconMapping) : null,\n textureParameters\n });\n\n // prepacked iconAtlas from user\n if (prePacked) {\n if (oldProps.iconMapping !== props.iconMapping) {\n attributeManager!.invalidate('getIcon');\n }\n } else if (\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getIcon))\n ) {\n // Auto packing - getIcon is expected to return an object\n iconManager.packIcons(data, getIcon as AccessorFunction);\n }\n\n if (changeFlags.extensionsChanged) {\n const {gl} = this.context;\n this.state.model?.delete();\n this.state.model = this._getModel(gl);\n attributeManager!.invalidateAll();\n }\n }\n /* eslint-enable max-statements, complexity */\n\n get isLoaded(): boolean {\n return super.isLoaded && this.state.iconManager.isLoaded;\n }\n\n finalizeState(context: LayerContext): void {\n super.finalizeState(context);\n // Release resources held by the icon manager\n this.state.iconManager.finalize();\n }\n\n draw({uniforms}): void {\n const {sizeScale, sizeMinPixels, sizeMaxPixels, sizeUnits, billboard, alphaCutoff} = this.props;\n const {iconManager} = this.state;\n\n const iconsTexture = iconManager.getTexture();\n if (iconsTexture) {\n this.state.model\n .setUniforms(uniforms)\n .setUniforms({\n iconsTexture,\n iconsTextureDim: [iconsTexture.width, iconsTexture.height],\n sizeUnits: UNIT[sizeUnits],\n sizeScale,\n sizeMinPixels,\n sizeMaxPixels,\n billboard,\n alphaCutoff\n })\n .draw();\n }\n }\n\n protected _getModel(gl: WebGLRenderingContext): Model {\n // The icon-layer vertex shader uses 2d positions\n // specifed via: attribute vec2 positions;\n const positions = [-1, -1, -1, 1, 1, 1, 1, -1];\n\n return new Model(gl, {\n ...this.getShaders(),\n id: this.props.id,\n geometry: new Geometry({\n drawMode: GL.TRIANGLE_FAN,\n attributes: {\n // The size must be explicitly passed here otherwise luma.gl\n // will default to assuming that positions are 3D (x,y,z)\n positions: {\n size: 2,\n value: new Float32Array(positions)\n }\n }\n }),\n isInstanced: true\n });\n }\n\n private _onUpdate(): void {\n this.setNeedsRedraw();\n }\n\n private _onError(evt: LoadIconErrorContext): void {\n const onIconError = this.getCurrentLayer()?.props.onIconError;\n if (onIconError) {\n onIconError(evt);\n } else {\n log.error(evt.error.message)();\n }\n }\n\n protected getInstanceOffset(icon: string): number[] {\n const {\n width,\n height,\n anchorX = width / 2,\n anchorY = height / 2\n } = this.state.iconManager.getIconMapping(icon);\n return [width / 2 - anchorX, height / 2 - anchorY];\n }\n\n protected getInstanceColorMode(icon: string): number {\n const mapping = this.state.iconManager.getIconMapping(icon);\n return mapping.mask ? 1 : 0;\n }\n\n protected getInstanceIconFrame(icon: string): number[] {\n const {x, y, width, height} = this.state.iconManager.getIconMapping(icon);\n return [x, y, width, height];\n }\n}\n","export default \"#define SHADER_NAME icon-layer-vertex-shader\\n\\nattribute vec2 positions;\\n\\nattribute vec3 instancePositions;\\nattribute vec3 instancePositions64Low;\\nattribute float instanceSizes;\\nattribute float instanceAngles;\\nattribute vec4 instanceColors;\\nattribute vec3 instancePickingColors;\\nattribute vec4 instanceIconFrames;\\nattribute float instanceColorModes;\\nattribute vec2 instanceOffsets;\\nattribute vec2 instancePixelOffset;\\n\\nuniform float sizeScale;\\nuniform vec2 iconsTextureDim;\\nuniform float sizeMinPixels;\\nuniform float sizeMaxPixels;\\nuniform bool billboard;\\nuniform int sizeUnits;\\n\\nvarying float vColorMode;\\nvarying vec4 vColor;\\nvarying vec2 vTextureCoords;\\nvarying vec2 uv;\\n\\nvec2 rotate_by_angle(vec2 vertex, float angle) {\\n float angle_radian = angle * PI / 180.0;\\n float cos_angle = cos(angle_radian);\\n float sin_angle = sin(angle_radian);\\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\\n return rotationMatrix * vertex;\\n}\\n\\nvoid main(void) {\\n geometry.worldPosition = instancePositions;\\n geometry.uv = positions;\\n geometry.pickingColor = instancePickingColors;\\n uv = positions;\\n\\n vec2 iconSize = instanceIconFrames.zw;\\n float sizePixels = clamp(\\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits), \\n sizeMinPixels, sizeMaxPixels\\n );\\n float instanceScale = iconSize.y == 0.0 ? 0.0 : sizePixels / iconSize.y;\\n vec2 pixelOffset = positions / 2.0 * iconSize + instanceOffsets;\\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles) * instanceScale;\\n pixelOffset += instancePixelOffset;\\n pixelOffset.y *= -1.0;\\n\\n if (billboard) {\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n vec3 offset = vec3(pixelOffset, 0.0);\\n DECKGL_FILTER_SIZE(offset, geometry);\\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\\n\\n } else {\\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\\n DECKGL_FILTER_SIZE(offset_common, geometry);\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position); \\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n }\\n\\n vTextureCoords = mix(\\n instanceIconFrames.xy,\\n instanceIconFrames.xy + iconSize,\\n (positions.xy + 1.0) / 2.0\\n ) / iconsTextureDim;\\n\\n vColor = instanceColors;\\n DECKGL_FILTER_COLOR(vColor, geometry);\\n\\n vColorMode = instanceColorModes;\\n}\\n\";\n//# sourceMappingURL=icon-layer-vertex.glsl.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME icon-layer-vertex-shader\n\nattribute vec2 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute float instanceSizes;\nattribute float instanceAngles;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\nattribute vec4 instanceIconFrames;\nattribute float instanceColorModes;\nattribute vec2 instanceOffsets;\nattribute vec2 instancePixelOffset;\n\nuniform float sizeScale;\nuniform vec2 iconsTextureDim;\nuniform float sizeMinPixels;\nuniform float sizeMaxPixels;\nuniform bool billboard;\nuniform int sizeUnits;\n\nvarying float vColorMode;\nvarying vec4 vColor;\nvarying vec2 vTextureCoords;\nvarying vec2 uv;\n\nvec2 rotate_by_angle(vec2 vertex, float angle) {\n float angle_radian = angle * PI / 180.0;\n float cos_angle = cos(angle_radian);\n float sin_angle = sin(angle_radian);\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\n return rotationMatrix * vertex;\n}\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = positions;\n geometry.pickingColor = instancePickingColors;\n uv = positions;\n\n vec2 iconSize = instanceIconFrames.zw;\n // convert size in meters to pixels, then scaled and clamp\n \n // project meters to pixels and clamp to limits \n float sizePixels = clamp(\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits), \n sizeMinPixels, sizeMaxPixels\n );\n\n // scale icon height to match instanceSize\n float instanceScale = iconSize.y == 0.0 ? 0.0 : sizePixels / iconSize.y;\n\n // scale and rotate vertex in \"pixel\" value and convert back to fraction in clipspace\n vec2 pixelOffset = positions / 2.0 * iconSize + instanceOffsets;\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles) * instanceScale;\n pixelOffset += instancePixelOffset;\n pixelOffset.y *= -1.0;\n\n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = vec3(pixelOffset, 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n\n } else {\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\n DECKGL_FILTER_SIZE(offset_common, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position); \n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n\n vTextureCoords = mix(\n instanceIconFrames.xy,\n instanceIconFrames.xy + iconSize,\n (positions.xy + 1.0) / 2.0\n ) / iconsTextureDim;\n\n vColor = instanceColors;\n DECKGL_FILTER_COLOR(vColor, geometry);\n\n vColorMode = instanceColorModes;\n}\n`;\n","export default \"#define SHADER_NAME icon-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform float opacity;\\nuniform sampler2D iconsTexture;\\nuniform float alphaCutoff;\\n\\nvarying float vColorMode;\\nvarying vec4 vColor;\\nvarying vec2 vTextureCoords;\\nvarying vec2 uv;\\n\\nvoid main(void) {\\n geometry.uv = uv;\\n\\n vec4 texColor = texture2D(iconsTexture, vTextureCoords);\\n vec3 color = mix(texColor.rgb, vColor.rgb, vColorMode);\\n float a = texColor.a * opacity * vColor.a;\\n\\n if (a < alphaCutoff) {\\n discard;\\n }\\n\\n gl_FragColor = vec4(color, a);\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=icon-layer-fragment.glsl.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME icon-layer-fragment-shader\n\nprecision highp float;\n\nuniform float opacity;\nuniform sampler2D iconsTexture;\nuniform float alphaCutoff;\n\nvarying float vColorMode;\nvarying vec4 vColor;\nvarying vec2 vTextureCoords;\nvarying vec2 uv;\n\nvoid main(void) {\n geometry.uv = uv;\n\n vec4 texColor = texture2D(iconsTexture, vTextureCoords);\n\n // if colorMode == 0, use pixel color from the texture\n // if colorMode == 1 or rendering picking buffer, use texture as transparency mask\n vec3 color = mix(texColor.rgb, vColor.rgb, vColorMode);\n // Take the global opacity and the alpha from vColor into account for the alpha component\n float a = texColor.a * opacity * vColor.a;\n\n if (a < alphaCutoff) {\n discard;\n }\n\n gl_FragColor = vec4(color, a);\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Texture2D, copyToTexture } from '@luma.gl/core';\nimport { load } from '@loaders.gl/core';\nimport { createIterable } from '@deck.gl/core';\nconst DEFAULT_CANVAS_WIDTH = 1024;\nconst DEFAULT_BUFFER = 4;\n\nconst noop = () => {};\n\nconst DEFAULT_TEXTURE_PARAMETERS = {\n [10241]: 9987,\n [10240]: 9729,\n [10242]: 33071,\n [10243]: 33071\n};\n\nfunction nextPowOfTwo(number) {\n return Math.pow(2, Math.ceil(Math.log2(number)));\n}\n\nfunction resizeImage(ctx, imageData, maxWidth, maxHeight) {\n const resizeRatio = Math.min(maxWidth / imageData.width, maxHeight / imageData.height);\n const width = Math.floor(imageData.width * resizeRatio);\n const height = Math.floor(imageData.height * resizeRatio);\n\n if (resizeRatio === 1) {\n return {\n data: imageData,\n width,\n height\n };\n }\n\n ctx.canvas.height = height;\n ctx.canvas.width = width;\n ctx.clearRect(0, 0, width, height);\n ctx.drawImage(imageData, 0, 0, imageData.width, imageData.height, 0, 0, width, height);\n return {\n data: ctx.canvas,\n width,\n height\n };\n}\n\nfunction getIconId(icon) {\n return icon && (icon.id || icon.url);\n}\n\nfunction resizeTexture(texture, width, height, parameters) {\n const oldWidth = texture.width;\n const oldHeight = texture.height;\n const newTexture = new Texture2D(texture.gl, {\n width,\n height,\n parameters\n });\n copyToTexture(texture, newTexture, {\n targetY: 0,\n width: oldWidth,\n height: oldHeight\n });\n texture.delete();\n return newTexture;\n}\n\nfunction buildRowMapping(mapping, columns, yOffset) {\n for (let i = 0; i < columns.length; i++) {\n const {\n icon,\n xOffset\n } = columns[i];\n const id = getIconId(icon);\n mapping[id] = { ...icon,\n x: xOffset,\n y: yOffset\n };\n }\n}\n\nexport function buildMapping({\n icons,\n buffer,\n mapping = {},\n xOffset = 0,\n yOffset = 0,\n rowHeight = 0,\n canvasWidth\n}) {\n let columns = [];\n\n for (let i = 0; i < icons.length; i++) {\n const icon = icons[i];\n const id = getIconId(icon);\n\n if (!mapping[id]) {\n const {\n height,\n width\n } = icon;\n\n if (xOffset + width + buffer > canvasWidth) {\n buildRowMapping(mapping, columns, yOffset);\n xOffset = 0;\n yOffset = rowHeight + yOffset + buffer;\n rowHeight = 0;\n columns = [];\n }\n\n columns.push({\n icon,\n xOffset\n });\n xOffset = xOffset + width + buffer;\n rowHeight = Math.max(rowHeight, height);\n }\n }\n\n if (columns.length > 0) {\n buildRowMapping(mapping, columns, yOffset);\n }\n\n return {\n mapping,\n rowHeight,\n xOffset,\n yOffset,\n canvasWidth,\n canvasHeight: nextPowOfTwo(rowHeight + yOffset + buffer)\n };\n}\nexport function getDiffIcons(data, getIcon, cachedIcons) {\n if (!data || !getIcon) {\n return null;\n }\n\n cachedIcons = cachedIcons || {};\n const icons = {};\n const {\n iterable,\n objectInfo\n } = createIterable(data);\n\n for (const object of iterable) {\n objectInfo.index++;\n const icon = getIcon(object, objectInfo);\n const id = getIconId(icon);\n\n if (!icon) {\n throw new Error('Icon is missing.');\n }\n\n if (!icon.url) {\n throw new Error('Icon url is missing.');\n }\n\n if (!icons[id] && (!cachedIcons[id] || icon.url !== cachedIcons[id].url)) {\n icons[id] = { ...icon,\n source: object,\n sourceIndex: objectInfo.index\n };\n }\n }\n\n return icons;\n}\nexport default class IconManager {\n constructor(gl, {\n onUpdate = noop,\n onError = noop\n }) {\n _defineProperty(this, \"gl\", void 0);\n\n _defineProperty(this, \"onUpdate\", void 0);\n\n _defineProperty(this, \"onError\", void 0);\n\n _defineProperty(this, \"_loadOptions\", null);\n\n _defineProperty(this, \"_texture\", null);\n\n _defineProperty(this, \"_externalTexture\", null);\n\n _defineProperty(this, \"_mapping\", {});\n\n _defineProperty(this, \"_textureParameters\", null);\n\n _defineProperty(this, \"_pendingCount\", 0);\n\n _defineProperty(this, \"_autoPacking\", false);\n\n _defineProperty(this, \"_xOffset\", 0);\n\n _defineProperty(this, \"_yOffset\", 0);\n\n _defineProperty(this, \"_rowHeight\", 0);\n\n _defineProperty(this, \"_buffer\", DEFAULT_BUFFER);\n\n _defineProperty(this, \"_canvasWidth\", DEFAULT_CANVAS_WIDTH);\n\n _defineProperty(this, \"_canvasHeight\", 0);\n\n _defineProperty(this, \"_canvas\", null);\n\n this.gl = gl;\n this.onUpdate = onUpdate;\n this.onError = onError;\n }\n\n finalize() {\n var _this$_texture;\n\n (_this$_texture = this._texture) === null || _this$_texture === void 0 ? void 0 : _this$_texture.delete();\n }\n\n getTexture() {\n return this._texture || this._externalTexture;\n }\n\n getIconMapping(icon) {\n const id = this._autoPacking ? getIconId(icon) : icon;\n return this._mapping[id] || {};\n }\n\n setProps({\n loadOptions,\n autoPacking,\n iconAtlas,\n iconMapping,\n textureParameters\n }) {\n if (loadOptions) {\n this._loadOptions = loadOptions;\n }\n\n if (autoPacking !== undefined) {\n this._autoPacking = autoPacking;\n }\n\n if (iconMapping) {\n this._mapping = iconMapping;\n }\n\n if (iconAtlas) {\n var _this$_texture2;\n\n (_this$_texture2 = this._texture) === null || _this$_texture2 === void 0 ? void 0 : _this$_texture2.delete();\n this._texture = null;\n this._externalTexture = iconAtlas;\n }\n\n if (textureParameters) {\n this._textureParameters = textureParameters;\n }\n }\n\n get isLoaded() {\n return this._pendingCount === 0;\n }\n\n packIcons(data, getIcon) {\n if (!this._autoPacking || typeof document === 'undefined') {\n return;\n }\n\n const icons = Object.values(getDiffIcons(data, getIcon, this._mapping) || {});\n\n if (icons.length > 0) {\n const {\n mapping,\n xOffset,\n yOffset,\n rowHeight,\n canvasHeight\n } = buildMapping({\n icons,\n buffer: this._buffer,\n canvasWidth: this._canvasWidth,\n mapping: this._mapping,\n rowHeight: this._rowHeight,\n xOffset: this._xOffset,\n yOffset: this._yOffset\n });\n this._rowHeight = rowHeight;\n this._mapping = mapping;\n this._xOffset = xOffset;\n this._yOffset = yOffset;\n this._canvasHeight = canvasHeight;\n\n if (!this._texture) {\n this._texture = new Texture2D(this.gl, {\n width: this._canvasWidth,\n height: this._canvasHeight,\n parameters: this._textureParameters || DEFAULT_TEXTURE_PARAMETERS\n });\n }\n\n if (this._texture.height !== this._canvasHeight) {\n this._texture = resizeTexture(this._texture, this._canvasWidth, this._canvasHeight, this._textureParameters || DEFAULT_TEXTURE_PARAMETERS);\n }\n\n this.onUpdate();\n this._canvas = this._canvas || document.createElement('canvas');\n\n this._loadIcons(icons);\n }\n }\n\n _loadIcons(icons) {\n const ctx = this._canvas.getContext('2d', {\n willReadFrequently: true\n });\n\n for (const icon of icons) {\n this._pendingCount++;\n load(icon.url, this._loadOptions).then(imageData => {\n const id = getIconId(icon);\n const iconDef = this._mapping[id];\n const {\n x,\n y,\n width: maxWidth,\n height: maxHeight\n } = iconDef;\n const {\n data,\n width,\n height\n } = resizeImage(ctx, imageData, maxWidth, maxHeight);\n\n this._texture.setSubImageData({\n data,\n x: x + (maxWidth - width) / 2,\n y: y + (maxHeight - height) / 2,\n width,\n height\n });\n\n iconDef.width = width;\n iconDef.height = height;\n\n this._texture.generateMipmap();\n\n this.onUpdate();\n }).catch(error => {\n this.onError({\n url: icon.url,\n source: icon.source,\n sourceIndex: icon.sourceIndex,\n loadOptions: this._loadOptions,\n error\n });\n }).finally(() => {\n this._pendingCount--;\n });\n }\n }\n\n}\n//# sourceMappingURL=icon-manager.js.map","/* global document */\nimport GL from '@luma.gl/constants';\nimport {Texture2D, copyToTexture} from '@luma.gl/core';\nimport {load} from '@loaders.gl/core';\nimport {createIterable} from '@deck.gl/core';\n\nimport type {AccessorFunction} from '@deck.gl/core';\n\nconst DEFAULT_CANVAS_WIDTH = 1024;\nconst DEFAULT_BUFFER = 4;\n\nconst noop = () => {};\n\nconst DEFAULT_TEXTURE_PARAMETERS = {\n [GL.TEXTURE_MIN_FILTER]: GL.LINEAR_MIPMAP_LINEAR,\n // GL.LINEAR is the default value but explicitly set it here\n [GL.TEXTURE_MAG_FILTER]: GL.LINEAR,\n // for texture boundary artifact\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n};\n\ntype IconDef = {\n /** Width of the icon */\n width: number;\n /** Height of the icon */\n height: number;\n /** Horizontal position of icon anchor. Default: half width. */\n anchorX?: number;\n /** Vertical position of icon anchor. Default: half height. */\n anchorY?: number;\n /**\n * Whether the icon is treated as a transparency mask.\n * If `true`, color defined by `getColor` is applied.\n * If `false`, pixel color from the icon image is applied.\n * @default false\n */\n mask?: boolean;\n};\n\nexport type UnpackedIcon = {\n /** Url to fetch the icon */\n url: string;\n /** Unique identifier of the icon. Icons of the same id are only fetched once. Fallback to `url` if not specified. */\n id?: string;\n} & IconDef;\n\ntype PrepackedIcon = {\n /** Left position of the icon on the atlas */\n x: number;\n /** Top position of the icon on the atlas */\n y: number;\n} & IconDef;\n\nexport type IconMapping = Record;\n\nexport type LoadIconErrorContext = {\n error: Error;\n /** The URL that was trying to fetch */\n url: string;\n /** The original data object that requested this icon */\n source: any;\n /** The index of the original data object that requested this icon */\n sourceIndex: number;\n /** The load options used for the fetch */\n loadOptions: any;\n};\n\nfunction nextPowOfTwo(number: number): number {\n return Math.pow(2, Math.ceil(Math.log2(number)));\n}\n\n// update comment to create a new texture and copy original data.\nfunction resizeImage(\n ctx: CanvasRenderingContext2D,\n imageData: HTMLImageElement | ImageBitmap,\n maxWidth: number,\n maxHeight: number\n): {\n data: HTMLImageElement | HTMLCanvasElement | ImageBitmap;\n width: number;\n height: number;\n} {\n const resizeRatio = Math.min(maxWidth / imageData.width, maxHeight / imageData.height);\n const width = Math.floor(imageData.width * resizeRatio);\n const height = Math.floor(imageData.height * resizeRatio);\n\n if (resizeRatio === 1) {\n // No resizing required\n return {data: imageData, width, height};\n }\n\n ctx.canvas.height = height;\n ctx.canvas.width = width;\n\n ctx.clearRect(0, 0, width, height);\n\n // image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight\n ctx.drawImage(imageData, 0, 0, imageData.width, imageData.height, 0, 0, width, height);\n return {data: ctx.canvas, width, height};\n}\n\nfunction getIconId(icon: UnpackedIcon): string {\n return icon && (icon.id || icon.url);\n}\n\n// resize texture without losing original data\nfunction resizeTexture(\n texture: Texture2D,\n width: number,\n height: number,\n parameters: any\n): Texture2D {\n const oldWidth = texture.width;\n const oldHeight = texture.height;\n\n const newTexture = new Texture2D(texture.gl, {width, height, parameters});\n copyToTexture(texture, newTexture, {\n targetY: 0,\n width: oldWidth,\n height: oldHeight\n });\n\n texture.delete();\n return newTexture;\n}\n\n// traverse icons in a row of icon atlas\n// extend each icon with left-top coordinates\nfunction buildRowMapping(\n mapping: IconMapping,\n columns: {\n icon: UnpackedIcon;\n xOffset: number;\n }[],\n yOffset: number\n): void {\n for (let i = 0; i < columns.length; i++) {\n const {icon, xOffset} = columns[i];\n const id = getIconId(icon);\n mapping[id] = {\n ...icon,\n x: xOffset,\n y: yOffset\n };\n }\n}\n\n/**\n * Generate coordinate mapping to retrieve icon left-top position from an icon atlas\n */\nexport function buildMapping({\n icons,\n buffer,\n mapping = {},\n xOffset = 0,\n yOffset = 0,\n rowHeight = 0,\n canvasWidth\n}: {\n /** list of icon definitions */\n icons: UnpackedIcon[];\n /** add bleeding buffer to the right and bottom side of the image */\n buffer: number;\n /** right position of last icon in old mapping */\n xOffset: number;\n /** top position in last icon in old mapping */\n yOffset: number;\n /** height of the last icon's row */\n rowHeight: number;\n /** max width of canvas */\n canvasWidth: number;\n mapping: IconMapping;\n}): {\n mapping: IconMapping;\n rowHeight: number;\n xOffset: number;\n yOffset: number;\n canvasWidth: number;\n canvasHeight: number;\n} {\n let columns: {\n icon: UnpackedIcon;\n xOffset: number;\n }[] = [];\n // Strategy to layout all the icons into a texture:\n // traverse the icons sequentially, layout the icons from left to right, top to bottom\n // when the sum of the icons width is equal or larger than canvasWidth,\n // move to next row starting from total height so far plus max height of the icons in previous row\n // row width is equal to canvasWidth\n // row height is decided by the max height of the icons in that row\n // mapping coordinates of each icon is its left-top position in the texture\n for (let i = 0; i < icons.length; i++) {\n const icon = icons[i];\n const id = getIconId(icon);\n\n if (!mapping[id]) {\n const {height, width} = icon;\n\n // fill one row\n if (xOffset + width + buffer > canvasWidth) {\n buildRowMapping(mapping, columns, yOffset);\n\n xOffset = 0;\n yOffset = rowHeight + yOffset + buffer;\n rowHeight = 0;\n columns = [];\n }\n\n columns.push({\n icon,\n xOffset\n });\n\n xOffset = xOffset + width + buffer;\n rowHeight = Math.max(rowHeight, height);\n }\n }\n\n if (columns.length > 0) {\n buildRowMapping(mapping, columns, yOffset);\n }\n\n return {\n mapping,\n rowHeight,\n xOffset,\n yOffset,\n canvasWidth,\n canvasHeight: nextPowOfTwo(rowHeight + yOffset + buffer)\n };\n}\n\n// extract icons from data\n// return icons should be unique, and not cached or cached but url changed\nexport function getDiffIcons(\n data: any,\n getIcon: AccessorFunction | null,\n cachedIcons: Record\n): Record<\n string,\n UnpackedIcon & {\n source: any;\n sourceIndex: number;\n }\n> | null {\n if (!data || !getIcon) {\n return null;\n }\n\n cachedIcons = cachedIcons || {};\n const icons = {};\n const {iterable, objectInfo} = createIterable(data);\n for (const object of iterable) {\n objectInfo.index++;\n const icon = getIcon(object, objectInfo);\n const id = getIconId(icon);\n\n if (!icon) {\n throw new Error('Icon is missing.');\n }\n\n if (!icon.url) {\n throw new Error('Icon url is missing.');\n }\n\n if (!icons[id] && (!cachedIcons[id] || icon.url !== cachedIcons[id].url)) {\n icons[id] = {...icon, source: object, sourceIndex: objectInfo.index};\n }\n }\n return icons;\n}\n\nexport default class IconManager {\n gl: WebGLRenderingContext;\n\n private onUpdate: () => void;\n private onError: (context: LoadIconErrorContext) => void;\n private _loadOptions: any = null;\n private _texture: Texture2D | null = null;\n private _externalTexture: Texture2D | null = null;\n private _mapping: IconMapping = {};\n private _textureParameters: Record | null = null;\n\n /** count of pending requests to fetch icons */\n private _pendingCount: number = 0;\n\n private _autoPacking: boolean = false;\n\n // / internal state used for autoPacking\n\n private _xOffset: number = 0;\n private _yOffset: number = 0;\n private _rowHeight: number = 0;\n private _buffer: number = DEFAULT_BUFFER;\n private _canvasWidth: number = DEFAULT_CANVAS_WIDTH;\n private _canvasHeight: number = 0;\n private _canvas: HTMLCanvasElement | null = null;\n\n constructor(\n gl: WebGLRenderingContext,\n {\n onUpdate = noop,\n onError = noop\n }: {\n /** Callback when the texture updates */\n onUpdate: () => void;\n /** Callback when an error is encountered */\n onError: (context: LoadIconErrorContext) => void;\n }\n ) {\n this.gl = gl;\n this.onUpdate = onUpdate;\n this.onError = onError;\n }\n\n finalize(): void {\n this._texture?.delete();\n }\n\n getTexture(): Texture2D | null {\n return this._texture || this._externalTexture;\n }\n\n getIconMapping(icon: string | UnpackedIcon): PrepackedIcon {\n const id = this._autoPacking ? getIconId(icon as UnpackedIcon) : (icon as string);\n return this._mapping[id] || {};\n }\n\n setProps({\n loadOptions,\n autoPacking,\n iconAtlas,\n iconMapping,\n textureParameters\n }: {\n loadOptions?: any;\n autoPacking?: boolean;\n iconAtlas?: Texture2D | null;\n iconMapping?: IconMapping | null;\n textureParameters?: Record | null;\n }) {\n if (loadOptions) {\n this._loadOptions = loadOptions;\n }\n\n if (autoPacking !== undefined) {\n this._autoPacking = autoPacking;\n }\n\n if (iconMapping) {\n this._mapping = iconMapping;\n }\n\n if (iconAtlas) {\n this._texture?.delete();\n this._texture = null;\n this._externalTexture = iconAtlas;\n }\n\n if (textureParameters) {\n this._textureParameters = textureParameters;\n }\n }\n\n get isLoaded(): boolean {\n return this._pendingCount === 0;\n }\n\n packIcons(data: any, getIcon: AccessorFunction): void {\n if (!this._autoPacking || typeof document === 'undefined') {\n return;\n }\n\n const icons = Object.values(getDiffIcons(data, getIcon, this._mapping) || {});\n\n if (icons.length > 0) {\n // generate icon mapping\n const {mapping, xOffset, yOffset, rowHeight, canvasHeight} = buildMapping({\n icons,\n buffer: this._buffer,\n canvasWidth: this._canvasWidth,\n mapping: this._mapping,\n rowHeight: this._rowHeight,\n xOffset: this._xOffset,\n yOffset: this._yOffset\n });\n\n this._rowHeight = rowHeight;\n this._mapping = mapping;\n this._xOffset = xOffset;\n this._yOffset = yOffset;\n this._canvasHeight = canvasHeight;\n\n // create new texture\n if (!this._texture) {\n this._texture = new Texture2D(this.gl, {\n width: this._canvasWidth,\n height: this._canvasHeight,\n parameters: this._textureParameters || DEFAULT_TEXTURE_PARAMETERS\n });\n }\n\n if (this._texture.height !== this._canvasHeight) {\n this._texture = resizeTexture(\n this._texture,\n this._canvasWidth,\n this._canvasHeight,\n this._textureParameters || DEFAULT_TEXTURE_PARAMETERS\n );\n }\n\n this.onUpdate();\n\n // load images\n this._canvas = this._canvas || document.createElement('canvas');\n this._loadIcons(icons);\n }\n }\n\n private _loadIcons(\n icons: (UnpackedIcon & {\n source: any;\n sourceIndex: number;\n })[]\n ): void {\n // This method is only called in the auto packing case, where _canvas is defined\n const ctx = this._canvas!.getContext('2d', {\n willReadFrequently: true\n }) as CanvasRenderingContext2D;\n\n for (const icon of icons) {\n this._pendingCount++;\n load(icon.url, this._loadOptions)\n .then(imageData => {\n const id = getIconId(icon);\n\n const iconDef = this._mapping[id];\n const {x, y, width: maxWidth, height: maxHeight} = iconDef;\n\n const {data, width, height} = resizeImage(ctx, imageData, maxWidth, maxHeight);\n\n this._texture.setSubImageData({\n data,\n x: x + (maxWidth - width) / 2,\n y: y + (maxHeight - height) / 2,\n width,\n height\n });\n iconDef.width = width;\n iconDef.height = height;\n\n // Call to regenerate mipmaps after modifying texture(s)\n this._texture.generateMipmap();\n\n this.onUpdate();\n })\n .catch(error => {\n this.onError({\n url: icon.url,\n source: icon.source,\n sourceIndex: icon.sourceIndex,\n loadOptions: this._loadOptions,\n error\n });\n })\n .finally(() => {\n this._pendingCount--;\n });\n }\n }\n}\n","import { isBlob } from '../../javascript-utils/is-type';\nimport { isLoaderObject } from '../loader-utils/normalize-loader';\nimport { getFetchFunction } from '../loader-utils/option-utils';\nimport { parse } from './parse';\nexport async function load(url, loaders, options, context) {\n if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = undefined;\n options = loaders;\n loaders = undefined;\n }\n\n const fetch = getFetchFunction(options);\n let data = url;\n\n if (typeof url === 'string') {\n data = await fetch(url);\n }\n\n if (isBlob(url)) {\n data = await fetch(url);\n }\n\n return await parse(data, loaders, options);\n}\n//# sourceMappingURL=load.js.map","import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {isBlob} from '../../javascript-utils/is-type';\nimport {isLoaderObject} from '../loader-utils/normalize-loader';\nimport {getFetchFunction} from '../loader-utils/option-utils';\n\nimport {parse} from './parse';\n\n/**\n * Parses `data` using a specified loader\n * Note: Load does duplicate a lot of parse.\n * it can also call fetchFile on string urls, which `parse` won't do.\n * @param data\n * @param loaders\n * @param options\n * @param context\n */\n// implementation signature\nexport async function load(\n url: string | DataType,\n loaders?: Loader | Loader[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise {\n // Signature: load(url, options)\n if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = undefined; // context not supported in short signature\n options = loaders as LoaderOptions;\n loaders = undefined;\n }\n\n // Select fetch function\n const fetch = getFetchFunction(options);\n\n // at this point, `url` could be already loaded binary data\n let data = url;\n // url is a string, fetch the url\n if (typeof url === 'string') {\n data = await fetch(url);\n // URL is Blob or File, fetchFile handles it (alt: we could generate ObjectURL here)\n }\n\n if (isBlob(url)) {\n // The fetch response object will contain blob.name\n data = await fetch(url);\n }\n\n // Data is loaded (at least we have a `Response` object) so time to hand over to `parse`\n return await parse(data, loaders, options);\n}\n","const isBoolean = x => typeof x === 'boolean';\n\nconst isFunction = x => typeof x === 'function';\n\nexport const isObject = x => x !== null && typeof x === 'object';\nexport const isPureObject = x => isObject(x) && x.constructor === {}.constructor;\nexport const isPromise = x => isObject(x) && isFunction(x.then);\nexport const isIterable = x => x && typeof x[Symbol.iterator] === 'function';\nexport const isAsyncIterable = x => x && typeof x[Symbol.asyncIterator] === 'function';\nexport const isIterator = x => x && isFunction(x.next);\nexport const isResponse = x => typeof Response !== 'undefined' && x instanceof Response || x && x.arrayBuffer && x.text && x.json;\nexport const isFile = x => typeof File !== 'undefined' && x instanceof File;\nexport const isBlob = x => typeof Blob !== 'undefined' && x instanceof Blob;\nexport const isBuffer = x => x && typeof x === 'object' && x.isBuffer;\nexport const isWritableDOMStream = x => isObject(x) && isFunction(x.abort) && isFunction(x.getWriter);\nexport const isReadableDOMStream = x => typeof ReadableStream !== 'undefined' && x instanceof ReadableStream || isObject(x) && isFunction(x.tee) && isFunction(x.cancel) && isFunction(x.getReader);\nexport const isWritableNodeStream = x => isObject(x) && isFunction(x.end) && isFunction(x.write) && isBoolean(x.writable);\nexport const isReadableNodeStream = x => isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);\nexport const isReadableStream = x => isReadableDOMStream(x) || isReadableNodeStream(x);\nexport const isWritableStream = x => isWritableDOMStream(x) || isWritableNodeStream(x);\n//# sourceMappingURL=is-type.js.map","import type {Readable} from 'stream';\n\n/** A DOM or Node readable stream */\nexport type ReadableStreamType = ReadableStream | Readable;\n\nconst isBoolean: (x: any) => boolean = (x) => typeof x === 'boolean';\nconst isFunction: (x: any) => boolean = (x) => typeof x === 'function';\n\nexport const isObject: (x: any) => boolean = (x) => x !== null && typeof x === 'object';\nexport const isPureObject: (x: any) => boolean = (x) =>\n isObject(x) && x.constructor === {}.constructor;\nexport const isPromise: (x: any) => boolean = (x) => isObject(x) && isFunction(x.then);\n\nexport const isIterable: (x: any) => boolean = (x) => x && typeof x[Symbol.iterator] === 'function';\nexport const isAsyncIterable: (x: any) => boolean = (x) =>\n x && typeof x[Symbol.asyncIterator] === 'function';\nexport const isIterator: (x: any) => boolean = (x) => x && isFunction(x.next);\n\nexport const isResponse: (x: any) => boolean = (x) =>\n (typeof Response !== 'undefined' && x instanceof Response) ||\n (x && x.arrayBuffer && x.text && x.json);\n\nexport const isFile: (x: any) => boolean = (x) => typeof File !== 'undefined' && x instanceof File;\nexport const isBlob: (x: any) => boolean = (x) => typeof Blob !== 'undefined' && x instanceof Blob;\n\n/** Check for Node.js `Buffer` without triggering bundler to include buffer polyfill */\nexport const isBuffer: (x: any) => boolean = (x) => x && typeof x === 'object' && x.isBuffer;\n\nexport const isWritableDOMStream: (x: any) => boolean = (x) =>\n isObject(x) && isFunction(x.abort) && isFunction(x.getWriter);\n\nexport const isReadableDOMStream: (x: any) => boolean = (x) =>\n (typeof ReadableStream !== 'undefined' && x instanceof ReadableStream) ||\n (isObject(x) && isFunction(x.tee) && isFunction(x.cancel) && isFunction(x.getReader));\n// Not implemented in Firefox: && isFunction(x.pipeTo)\n\nexport const isWritableNodeStream: (x: any) => boolean = (x) =>\n isObject(x) && isFunction(x.end) && isFunction(x.write) && isBoolean(x.writable);\nexport const isReadableNodeStream: (x: any) => boolean = (x) =>\n isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);\nexport const isReadableStream: (x: any) => boolean = (x) =>\n isReadableDOMStream(x) || isReadableNodeStream(x);\nexport const isWritableStream: (x: any) => boolean = (x) =>\n isWritableDOMStream(x) || isWritableNodeStream(x);\n","import { assert } from '@loaders.gl/loader-utils';\nexport function isLoaderObject(loader) {\n var _loader;\n\n if (!loader) {\n return false;\n }\n\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n const hasExtensions = Array.isArray((_loader = loader) === null || _loader === void 0 ? void 0 : _loader.extensions);\n return hasExtensions;\n}\nexport function normalizeLoader(loader) {\n var _loader2, _loader3;\n\n assert(loader, 'null loader');\n assert(isLoaderObject(loader), 'invalid loader');\n let options;\n\n if (Array.isArray(loader)) {\n options = loader[1];\n loader = loader[0];\n loader = { ...loader,\n options: { ...loader.options,\n ...options\n }\n };\n }\n\n if ((_loader2 = loader) !== null && _loader2 !== void 0 && _loader2.parseTextSync || (_loader3 = loader) !== null && _loader3 !== void 0 && _loader3.parseText) {\n loader.text = true;\n }\n\n if (!loader.text) {\n loader.binary = true;\n }\n\n return loader;\n}\n//# sourceMappingURL=normalize-loader.js.map","import type {Loader} from '@loaders.gl/loader-utils';\nimport {assert} from '@loaders.gl/loader-utils';\n\nexport function isLoaderObject(loader?: any): boolean {\n if (!loader) {\n return false;\n }\n\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n const hasExtensions = Array.isArray(loader?.extensions);\n\n /* Now handled by types and worker loaders do not have these\n let hasParser =\n loader.parseTextSync ||\n loader.parseSync ||\n loader.parse ||\n loader.parseStream || // TODO Remove, Replace with parseInBatches\n loader.parseInBatches;\n */\n\n return hasExtensions;\n}\n\nexport function normalizeLoader(loader: Loader): Loader {\n // This error is fairly easy to trigger by mixing up import statements etc\n // So we make an exception and add a developer error message for this case\n // To help new users from getting stuck here\n assert(loader, 'null loader');\n assert(isLoaderObject(loader), 'invalid loader');\n\n // NORMALIZE [LOADER, OPTIONS] => LOADER\n\n // If [loader, options], create a new loaders object with options merged in\n let options;\n if (Array.isArray(loader)) {\n options = loader[1];\n loader = loader[0];\n loader = {\n ...loader,\n options: {...loader.options, ...options}\n };\n }\n\n // NORMALIZE text and binary flags\n // Ensure at least one of text/binary flags are properly set\n\n // @ts-expect-error\n if (loader?.parseTextSync || loader?.parseText) {\n loader.text = true;\n }\n\n if (!loader.text) {\n loader.binary = true;\n }\n\n return loader;\n}\n","export function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'loader assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map","/**\n * Throws an `Error` with the optional `message` if `condition` is falsy\n * @note Replacement for the external assert method to reduce bundle size\n */\nexport function assert(condition: any, message?: string): void {\n if (!condition) {\n throw new Error(message || 'loader assertion failed.');\n }\n}\n","import { isPureObject, isObject } from '../../javascript-utils/is-type';\nimport { fetchFile } from '../fetch/fetch-file';\nimport { probeLog, NullLog } from './loggers';\nimport { DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS } from './option-defaults';\nexport function getGlobalLoaderState() {\n globalThis.loaders = globalThis.loaders || {};\n const {\n loaders\n } = globalThis;\n loaders._state = loaders._state || {};\n return loaders._state;\n}\n\nconst getGlobalLoaderOptions = () => {\n const state = getGlobalLoaderState();\n state.globalOptions = state.globalOptions || { ...DEFAULT_LOADER_OPTIONS\n };\n return state.globalOptions;\n};\n\nexport function setGlobalOptions(options) {\n const state = getGlobalLoaderState();\n const globalOptions = getGlobalLoaderOptions();\n state.globalOptions = normalizeOptionsInternal(globalOptions, options);\n}\nexport function normalizeOptions(options, loader, loaders, url) {\n loaders = loaders || [];\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n validateOptions(options, loaders);\n return normalizeOptionsInternal(loader, options, url);\n}\nexport function getFetchFunction(options, context) {\n const globalOptions = getGlobalLoaderOptions();\n const fetchOptions = options || globalOptions;\n\n if (typeof fetchOptions.fetch === 'function') {\n return fetchOptions.fetch;\n }\n\n if (isObject(fetchOptions.fetch)) {\n return url => fetchFile(url, fetchOptions);\n }\n\n if (context !== null && context !== void 0 && context.fetch) {\n return context === null || context === void 0 ? void 0 : context.fetch;\n }\n\n return fetchFile;\n}\n\nfunction validateOptions(options, loaders) {\n validateOptionsObject(options, null, DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS, loaders);\n\n for (const loader of loaders) {\n const idOptions = options && options[loader.id] || {};\n const loaderOptions = loader.options && loader.options[loader.id] || {};\n const deprecatedOptions = loader.deprecatedOptions && loader.deprecatedOptions[loader.id] || {};\n validateOptionsObject(idOptions, loader.id, loaderOptions, deprecatedOptions, loaders);\n }\n}\n\nfunction validateOptionsObject(options, id, defaultOptions, deprecatedOptions, loaders) {\n const loaderName = id || 'Top level';\n const prefix = id ? `${id}.` : '';\n\n for (const key in options) {\n const isSubOptions = !id && isObject(options[key]);\n const isBaseUriOption = key === 'baseUri' && !id;\n const isWorkerUrlOption = key === 'workerUrl' && id;\n\n if (!(key in defaultOptions) && !isBaseUriOption && !isWorkerUrlOption) {\n if (key in deprecatedOptions) {\n probeLog.warn(`${loaderName} loader option \\'${prefix}${key}\\' no longer supported, use \\'${deprecatedOptions[key]}\\'`)();\n } else if (!isSubOptions) {\n const suggestion = findSimilarOption(key, loaders);\n probeLog.warn(`${loaderName} loader option \\'${prefix}${key}\\' not recognized. ${suggestion}`)();\n }\n }\n }\n}\n\nfunction findSimilarOption(optionKey, loaders) {\n const lowerCaseOptionKey = optionKey.toLowerCase();\n let bestSuggestion = '';\n\n for (const loader of loaders) {\n for (const key in loader.options) {\n if (optionKey === key) {\n return `Did you mean \\'${loader.id}.${key}\\'?`;\n }\n\n const lowerCaseKey = key.toLowerCase();\n const isPartialMatch = lowerCaseOptionKey.startsWith(lowerCaseKey) || lowerCaseKey.startsWith(lowerCaseOptionKey);\n\n if (isPartialMatch) {\n bestSuggestion = bestSuggestion || `Did you mean \\'${loader.id}.${key}\\'?`;\n }\n }\n }\n\n return bestSuggestion;\n}\n\nfunction normalizeOptionsInternal(loader, options, url) {\n const loaderDefaultOptions = loader.options || {};\n const mergedOptions = { ...loaderDefaultOptions\n };\n addUrlOptions(mergedOptions, url);\n\n if (mergedOptions.log === null) {\n mergedOptions.log = new NullLog();\n }\n\n mergeNestedFields(mergedOptions, getGlobalLoaderOptions());\n mergeNestedFields(mergedOptions, options);\n return mergedOptions;\n}\n\nfunction mergeNestedFields(mergedOptions, options) {\n for (const key in options) {\n if (key in options) {\n const value = options[key];\n\n if (isPureObject(value) && isPureObject(mergedOptions[key])) {\n mergedOptions[key] = { ...mergedOptions[key],\n ...options[key]\n };\n } else {\n mergedOptions[key] = options[key];\n }\n }\n }\n}\n\nfunction addUrlOptions(options, url) {\n if (url && !('baseUri' in options)) {\n options.baseUri = url;\n }\n}\n//# sourceMappingURL=option-utils.js.map","import type {Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {isPureObject, isObject} from '../../javascript-utils/is-type';\nimport {fetchFile} from '../fetch/fetch-file';\nimport {probeLog, NullLog} from './loggers';\nimport {DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS} from './option-defaults';\n/**\n * Global state for loaders.gl. Stored on `global.loaders._state`\n */\ntype GlobalLoaderState = {\n loaderRegistry: Loader[];\n globalOptions: {[key: string]: any};\n};\n\n/**\n * Helper for safely accessing global loaders.gl variables\n * Wraps initialization of global variable in function to defeat overly aggressive tree-shakers\n */\nexport function getGlobalLoaderState(): GlobalLoaderState {\n // @ts-ignore\n globalThis.loaders = globalThis.loaders || {};\n // @ts-ignore\n const {loaders} = globalThis;\n\n // Add _state object to keep separate from modules added to globalThis.loaders\n loaders._state = loaders._state || {};\n return loaders._state;\n}\n\n// Store global loader options on the global object to increase chances of cross loaders-version interoperability\n// NOTE: This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks\nconst getGlobalLoaderOptions = () => {\n const state = getGlobalLoaderState();\n // Ensure all default loader options from this library are mentioned\n state.globalOptions = state.globalOptions || {...DEFAULT_LOADER_OPTIONS};\n return state.globalOptions;\n};\n\n/**\n * Set global loader options\n * @param options\n */\nexport function setGlobalOptions(options: object): void {\n const state = getGlobalLoaderState();\n const globalOptions = getGlobalLoaderOptions();\n state.globalOptions = normalizeOptionsInternal(globalOptions, options);\n}\n\n/**\n * Merges options with global opts and loader defaults, also injects baseUri\n * @param options\n * @param loader\n * @param loaders\n * @param url\n */\nexport function normalizeOptions(\n options: object,\n loader: Loader,\n loaders?: Loader[],\n url?: string\n): object {\n loaders = loaders || [];\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n\n validateOptions(options, loaders);\n return normalizeOptionsInternal(loader, options, url);\n}\n\n/**\n * Gets the current fetch function from options and context\n * @param options\n * @param context\n */\nexport function getFetchFunction(\n options?: LoaderOptions,\n context?: Omit & Partial>\n) {\n const globalOptions = getGlobalLoaderOptions();\n\n const fetchOptions = options || globalOptions;\n\n // options.fetch can be a function\n if (typeof fetchOptions.fetch === 'function') {\n return fetchOptions.fetch;\n }\n\n // options.fetch can be an options object\n if (isObject(fetchOptions.fetch)) {\n return (url) => fetchFile(url, fetchOptions);\n }\n\n // else refer to context (from parent loader) if available\n if (context?.fetch) {\n return context?.fetch;\n }\n\n // else return the default fetch function\n return fetchFile;\n}\n\n// VALIDATE OPTIONS\n\n/**\n * Warn for unsupported options\n * @param options\n * @param loaders\n */\nfunction validateOptions(options: LoaderOptions, loaders: Loader[]) {\n // Check top level options\n validateOptionsObject(options, null, DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS, loaders);\n for (const loader of loaders) {\n // Get the scoped, loader specific options from the user supplied options\n const idOptions = (options && options[loader.id]) || {};\n\n // Get scoped, loader specific default and deprecated options from the selected loader\n const loaderOptions = (loader.options && loader.options[loader.id]) || {};\n const deprecatedOptions =\n (loader.deprecatedOptions && loader.deprecatedOptions[loader.id]) || {};\n\n // Validate loader specific options\n validateOptionsObject(idOptions, loader.id, loaderOptions, deprecatedOptions, loaders);\n }\n}\n\n// eslint-disable-next-line max-params, complexity\nfunction validateOptionsObject(\n options,\n id: string | null,\n defaultOptions,\n deprecatedOptions,\n loaders: Loader[]\n) {\n const loaderName = id || 'Top level';\n const prefix = id ? `${id}.` : '';\n\n for (const key in options) {\n // If top level option value is an object it could options for a loader, so ignore\n const isSubOptions = !id && isObject(options[key]);\n const isBaseUriOption = key === 'baseUri' && !id;\n const isWorkerUrlOption = key === 'workerUrl' && id;\n // .workerUrl requires special handling as it is now auto-generated and no longer specified as a default option.\n if (!(key in defaultOptions) && !isBaseUriOption && !isWorkerUrlOption) {\n // Issue deprecation warnings\n if (key in deprecatedOptions) {\n probeLog.warn(\n `${loaderName} loader option \\'${prefix}${key}\\' no longer supported, use \\'${deprecatedOptions[key]}\\'`\n )();\n } else if (!isSubOptions) {\n const suggestion = findSimilarOption(key, loaders);\n probeLog.warn(\n `${loaderName} loader option \\'${prefix}${key}\\' not recognized. ${suggestion}`\n )();\n }\n }\n }\n}\n\nfunction findSimilarOption(optionKey, loaders) {\n const lowerCaseOptionKey = optionKey.toLowerCase();\n let bestSuggestion = '';\n for (const loader of loaders) {\n for (const key in loader.options) {\n if (optionKey === key) {\n return `Did you mean \\'${loader.id}.${key}\\'?`;\n }\n const lowerCaseKey = key.toLowerCase();\n const isPartialMatch =\n lowerCaseOptionKey.startsWith(lowerCaseKey) || lowerCaseKey.startsWith(lowerCaseOptionKey);\n if (isPartialMatch) {\n bestSuggestion = bestSuggestion || `Did you mean \\'${loader.id}.${key}\\'?`;\n }\n }\n }\n return bestSuggestion;\n}\n\nfunction normalizeOptionsInternal(loader, options, url?: string) {\n const loaderDefaultOptions = loader.options || {};\n\n const mergedOptions = {...loaderDefaultOptions};\n\n addUrlOptions(mergedOptions, url);\n\n // LOGGING: options.log can be set to `null` to defeat logging\n if (mergedOptions.log === null) {\n mergedOptions.log = new NullLog();\n }\n\n mergeNestedFields(mergedOptions, getGlobalLoaderOptions());\n mergeNestedFields(mergedOptions, options);\n\n return mergedOptions;\n}\n\n// Merge nested options objects\nfunction mergeNestedFields(mergedOptions, options) {\n for (const key in options) {\n // Check for nested options\n // object in options => either no key in defaultOptions or object in defaultOptions\n if (key in options) {\n const value = options[key];\n if (isPureObject(value) && isPureObject(mergedOptions[key])) {\n mergedOptions[key] = {\n ...mergedOptions[key],\n ...options[key]\n };\n } else {\n mergedOptions[key] = options[key];\n }\n }\n // else: No need to merge nested opts, and the initial merge already copied over the nested options\n }\n}\n\n// Harvest information from the url\n// TODO - baseUri should be a directory, i.e. remove file component from baseUri\n// TODO - extract extension?\n// TODO - extract query parameters?\n// TODO - should these be injected on context instead of options?\nfunction addUrlOptions(options, url?: string) {\n if (url && !('baseUri' in options)) {\n options.baseUri = url;\n }\n}\n","import { resolvePath } from '@loaders.gl/loader-utils';\nimport { makeResponse } from '../utils/response-utils';\nexport async function fetchFile(url, options) {\n if (typeof url === 'string') {\n url = resolvePath(url);\n let fetchOptions = options;\n\n if (options !== null && options !== void 0 && options.fetch && typeof (options === null || options === void 0 ? void 0 : options.fetch) !== 'function') {\n fetchOptions = options.fetch;\n }\n\n return await fetch(url, fetchOptions);\n }\n\n return await makeResponse(url);\n}\n//# sourceMappingURL=fetch-file.js.map","import {resolvePath} from '@loaders.gl/loader-utils';\nimport {makeResponse} from '../utils/response-utils';\n// import {getErrorMessageFromResponse} from './fetch-error-message';\n\n/**\n * fetch compatible function\n * Reads file data from:\n * - http/http urls\n * - data urls\n * - File/Blob objects\n * Leverages `@loaders.gl/polyfills` for Node.js support\n * Respects pathPrefix and file aliases\n */\nexport async function fetchFile(\n url: string | Blob,\n options?: RequestInit & {fetch?: RequestInit | Function}\n): Promise {\n if (typeof url === 'string') {\n url = resolvePath(url);\n\n let fetchOptions: RequestInit = options as RequestInit;\n if (options?.fetch && typeof options?.fetch !== 'function') {\n fetchOptions = options.fetch;\n }\n\n return await fetch(url, fetchOptions);\n }\n\n return await makeResponse(url);\n}\n","let pathPrefix = '';\nconst fileAliases = {};\nexport function setPathPrefix(prefix) {\n pathPrefix = prefix;\n}\nexport function getPathPrefix() {\n return pathPrefix;\n}\nexport function addAliases(aliases) {\n Object.assign(fileAliases, aliases);\n}\nexport function resolvePath(filename) {\n for (const alias in fileAliases) {\n if (filename.startsWith(alias)) {\n const replacement = fileAliases[alias];\n filename = filename.replace(alias, replacement);\n }\n }\n\n if (!filename.startsWith('http://') && !filename.startsWith('https://')) {\n filename = `${pathPrefix}${filename}`;\n }\n\n return filename;\n}\n//# sourceMappingURL=file-aliases.js.map","// Simple file alias mechanisms for tests.\n\nlet pathPrefix = '';\nconst fileAliases: {[aliasPath: string]: string} = {};\n\n/*\n * Set a relative path prefix\n */\nexport function setPathPrefix(prefix: string): void {\n pathPrefix = prefix;\n}\n\n/*\n * Get the relative path prefix\n */\nexport function getPathPrefix(): string {\n return pathPrefix;\n}\n\n/**\n *\n * @param aliases\n *\n * Note: addAliases are an experimental export, they are only for testing of loaders.gl loaders\n * not intended as a generic aliasing mechanism\n */\nexport function addAliases(aliases: {[aliasPath: string]: string}): void {\n Object.assign(fileAliases, aliases);\n}\n\n/**\n * Resolves aliases and adds path-prefix to paths\n */\nexport function resolvePath(filename: string): string {\n for (const alias in fileAliases) {\n if (filename.startsWith(alias)) {\n const replacement = fileAliases[alias];\n filename = filename.replace(alias, replacement);\n }\n }\n if (!filename.startsWith('http://') && !filename.startsWith('https://')) {\n filename = `${pathPrefix}${filename}`;\n }\n return filename;\n}\n","import { isResponse } from '../../javascript-utils/is-type';\nimport { getResourceContentLength, getResourceUrlAndType } from './resource-utils';\nexport async function makeResponse(resource) {\n if (isResponse(resource)) {\n return resource;\n }\n\n const headers = {};\n const contentLength = getResourceContentLength(resource);\n\n if (contentLength >= 0) {\n headers['content-length'] = String(contentLength);\n }\n\n const {\n url,\n type\n } = getResourceUrlAndType(resource);\n\n if (type) {\n headers['content-type'] = type;\n }\n\n const initialDataUrl = await getInitialDataUrl(resource);\n\n if (initialDataUrl) {\n headers['x-first-bytes'] = initialDataUrl;\n }\n\n if (typeof resource === 'string') {\n resource = new TextEncoder().encode(resource);\n }\n\n const response = new Response(resource, {\n headers\n });\n Object.defineProperty(response, 'url', {\n value: url\n });\n return response;\n}\nexport async function checkResponse(response) {\n if (!response.ok) {\n const message = await getResponseError(response);\n throw new Error(message);\n }\n}\nexport function checkResponseSync(response) {\n if (!response.ok) {\n let message = `${response.status} ${response.statusText}`;\n message = message.length > 60 ? `${message.slice(60)}...` : message;\n throw new Error(message);\n }\n}\n\nasync function getResponseError(response) {\n let message = `Failed to fetch resource ${response.url} (${response.status}): `;\n\n try {\n const contentType = response.headers.get('Content-Type');\n let text = response.statusText;\n\n if (contentType.includes('application/json')) {\n text += ` ${await response.text()}`;\n }\n\n message += text;\n message = message.length > 60 ? `${message.slice(60)}...` : message;\n } catch (error) {}\n\n return message;\n}\n\nasync function getInitialDataUrl(resource) {\n const INITIAL_DATA_LENGTH = 5;\n\n if (typeof resource === 'string') {\n return `data:,${resource.slice(0, INITIAL_DATA_LENGTH)}`;\n }\n\n if (resource instanceof Blob) {\n const blobSlice = resource.slice(0, 5);\n return await new Promise(resolve => {\n const reader = new FileReader();\n\n reader.onload = event => {\n var _event$target;\n\n return resolve(event === null || event === void 0 ? void 0 : (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.result);\n };\n\n reader.readAsDataURL(blobSlice);\n });\n }\n\n if (resource instanceof ArrayBuffer) {\n const slice = resource.slice(0, INITIAL_DATA_LENGTH);\n const base64 = arrayBufferToBase64(slice);\n return `data:base64,${base64}`;\n }\n\n return null;\n}\n\nfunction arrayBufferToBase64(buffer) {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n\n return btoa(binary);\n}\n//# sourceMappingURL=response-utils.js.map","import {isResponse} from '../../javascript-utils/is-type';\nimport {getResourceContentLength, getResourceUrlAndType} from './resource-utils';\n\n/**\n * Returns a Response object\n * Adds content-length header when possible\n *\n * @param resource\n */\nexport async function makeResponse(resource: any): Promise {\n if (isResponse(resource)) {\n return resource;\n }\n\n // Add content-length header if possible\n const headers: {[header: string]: string} = {};\n\n const contentLength = getResourceContentLength(resource);\n if (contentLength >= 0) {\n headers['content-length'] = String(contentLength);\n }\n\n // `new Response(File)` does not preserve content-type and URL\n // so we add them here\n const {url, type} = getResourceUrlAndType(resource);\n if (type) {\n headers['content-type'] = type;\n }\n\n // Add a custom header with initial bytes if available\n const initialDataUrl = await getInitialDataUrl(resource);\n if (initialDataUrl) {\n headers['x-first-bytes'] = initialDataUrl;\n }\n\n // TODO - is this the best way of handling strings?\n // Maybe package as data URL instead?\n if (typeof resource === 'string') {\n // Convert to ArrayBuffer to avoid Response treating it as a URL\n resource = new TextEncoder().encode(resource);\n }\n\n // Attempt to create a Response from the resource, adding headers and setting url\n const response = new Response(resource, {headers});\n // We can't control `Response.url` via constructor, use a property override to record URL.\n Object.defineProperty(response, 'url', {value: url});\n return response;\n}\n\n/**\n * Checks response status (async) and throws a helpful error message if status is not OK.\n * @param response\n */\nexport async function checkResponse(response: Response): Promise {\n if (!response.ok) {\n const message = await getResponseError(response);\n throw new Error(message);\n }\n}\n\n/**\n * Checks response status (sync) and throws a helpful error message if status is not OK.\n * @param response\n */\nexport function checkResponseSync(response: Response): void {\n if (!response.ok) {\n let message = `${response.status} ${response.statusText}`;\n message = message.length > 60 ? `${message.slice(60)}...` : message;\n throw new Error(message);\n }\n}\n\n// HELPERS\n\nasync function getResponseError(response): Promise {\n let message = `Failed to fetch resource ${response.url} (${response.status}): `;\n try {\n const contentType = response.headers.get('Content-Type');\n let text = response.statusText;\n if (contentType.includes('application/json')) {\n text += ` ${await response.text()}`;\n }\n message += text;\n message = message.length > 60 ? `${message.slice(60)}...` : message;\n } catch (error) {\n // eslint forbids return in a finally statement, so we just catch here\n }\n return message;\n}\n\nasync function getInitialDataUrl(resource): Promise {\n const INITIAL_DATA_LENGTH = 5;\n if (typeof resource === 'string') {\n return `data:,${resource.slice(0, INITIAL_DATA_LENGTH)}`;\n }\n if (resource instanceof Blob) {\n const blobSlice = resource.slice(0, 5);\n return await new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = (event) => resolve(event?.target?.result as string);\n reader.readAsDataURL(blobSlice);\n });\n }\n if (resource instanceof ArrayBuffer) {\n const slice = resource.slice(0, INITIAL_DATA_LENGTH);\n const base64 = arrayBufferToBase64(slice);\n return `data:base64,${base64}`;\n }\n return null;\n}\n\n// https://stackoverflow.com/questions/9267899/arraybuffer-to-base64-encoded-string\nfunction arrayBufferToBase64(buffer) {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n}\n","import { isResponse, isBlob } from '../../javascript-utils/is-type';\nimport { parseMIMEType, parseMIMETypeFromURL } from './mime-type-utils';\nconst QUERY_STRING_PATTERN = /\\?.*/;\nexport function getResourceUrlAndType(resource) {\n if (isResponse(resource)) {\n const url = stripQueryString(resource.url || '');\n const contentTypeHeader = resource.headers.get('content-type') || '';\n return {\n url,\n type: parseMIMEType(contentTypeHeader) || parseMIMETypeFromURL(url)\n };\n }\n\n if (isBlob(resource)) {\n return {\n url: stripQueryString(resource.name || ''),\n type: resource.type || ''\n };\n }\n\n if (typeof resource === 'string') {\n return {\n url: stripQueryString(resource),\n type: parseMIMETypeFromURL(resource)\n };\n }\n\n return {\n url: '',\n type: ''\n };\n}\nexport function getResourceContentLength(resource) {\n if (isResponse(resource)) {\n return resource.headers['content-length'] || -1;\n }\n\n if (isBlob(resource)) {\n return resource.size;\n }\n\n if (typeof resource === 'string') {\n return resource.length;\n }\n\n if (resource instanceof ArrayBuffer) {\n return resource.byteLength;\n }\n\n if (ArrayBuffer.isView(resource)) {\n return resource.byteLength;\n }\n\n return -1;\n}\n\nfunction stripQueryString(url) {\n return url.replace(QUERY_STRING_PATTERN, '');\n}\n//# sourceMappingURL=resource-utils.js.map","import {isResponse, isBlob} from '../../javascript-utils/is-type';\nimport {parseMIMEType, parseMIMETypeFromURL} from './mime-type-utils';\n\nconst QUERY_STRING_PATTERN = /\\?.*/;\n\n/**\n * Returns an object with `url` and (MIME) `type` fields\n * If it cannot determine url or type, the corresponding value will be an empty string\n *\n * @param resource Any type, but only Responses, string URLs and data URLs are processed\n *\n * @todo string parameters are assumed to be URLs\n */\nexport function getResourceUrlAndType(resource: any): {url: string; type: string} {\n // If resource is a response, it contains the information directly\n if (isResponse(resource)) {\n const url = stripQueryString(resource.url || '');\n const contentTypeHeader = resource.headers.get('content-type') || '';\n return {\n url,\n type: parseMIMEType(contentTypeHeader) || parseMIMETypeFromURL(url)\n };\n }\n\n // If the resource is a Blob or a File (subclass of Blob)\n if (isBlob(resource)) {\n return {\n // File objects have a \"name\" property. Blob objects don't have any\n // url (name) information\n url: stripQueryString(resource.name || ''),\n type: resource.type || ''\n };\n }\n\n if (typeof resource === 'string') {\n return {\n // TODO this could mess up data URL but it doesn't matter as it is just used for inference\n url: stripQueryString(resource),\n // If a data url\n type: parseMIMETypeFromURL(resource)\n };\n }\n\n // Unknown\n return {\n url: '',\n type: ''\n };\n}\n\n/**\n * Returns (approximate) content length for a resource if it can be determined.\n * Returns -1 if content length cannot be determined.\n * @param resource\n\n * @note string parameters are NOT assumed to be URLs\n */\nexport function getResourceContentLength(resource: any): number {\n if (isResponse(resource)) {\n return resource.headers['content-length'] || -1;\n }\n if (isBlob(resource)) {\n return resource.size;\n }\n if (typeof resource === 'string') {\n // TODO - handle data URL?\n return resource.length;\n }\n if (resource instanceof ArrayBuffer) {\n return resource.byteLength;\n }\n if (ArrayBuffer.isView(resource)) {\n return resource.byteLength;\n }\n return -1;\n}\n\nfunction stripQueryString(url) {\n return url.replace(QUERY_STRING_PATTERN, '');\n}\n","const DATA_URL_PATTERN = /^data:([-\\w.]+\\/[-\\w.+]+)(;|,)/;\nconst MIME_TYPE_PATTERN = /^([-\\w.]+\\/[-\\w.+]+)/;\nexport function parseMIMEType(mimeString) {\n const matches = MIME_TYPE_PATTERN.exec(mimeString);\n\n if (matches) {\n return matches[1];\n }\n\n return mimeString;\n}\nexport function parseMIMETypeFromURL(url) {\n const matches = DATA_URL_PATTERN.exec(url);\n\n if (matches) {\n return matches[1];\n }\n\n return '';\n}\n//# sourceMappingURL=mime-type-utils.js.map","// TODO - build/integrate proper MIME type parsing\n// https://mimesniff.spec.whatwg.org/\n\nconst DATA_URL_PATTERN = /^data:([-\\w.]+\\/[-\\w.+]+)(;|,)/;\nconst MIME_TYPE_PATTERN = /^([-\\w.]+\\/[-\\w.+]+)/;\n\n/**\n * Remove extra data like `charset` from MIME types\n * @param mimeString\n * @returns A clean MIME type, or an empty string\n *\n * @todo - handle more advanced MIMETYpes, multiple types\n * @todo - extract charset etc\n */\nexport function parseMIMEType(mimeString: string): string {\n // If resource is a data url, extract any embedded mime type\n const matches = MIME_TYPE_PATTERN.exec(mimeString);\n if (matches) {\n return matches[1];\n }\n return mimeString;\n}\n\n/**\n * Extract MIME type from data URL\n *\n * @param mimeString\n * @returns A clean MIME type, or an empty string\n *\n * @todo - handle more advanced MIMETYpes, multiple types\n * @todo - extract charset etc\n */\nexport function parseMIMETypeFromURL(url: string): string {\n // If resource is a data URL, extract any embedded mime type\n const matches = DATA_URL_PATTERN.exec(url);\n if (matches) {\n return matches[1];\n }\n return '';\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Log } from 'probe.gl';\nexport const probeLog = new Log({\n id: 'loaders.gl'\n});\nexport class NullLog {\n log() {\n return () => {};\n }\n\n info() {\n return () => {};\n }\n\n warn() {\n return () => {};\n }\n\n error() {\n return () => {};\n }\n\n}\nexport class ConsoleLog {\n constructor() {\n _defineProperty(this, \"console\", void 0);\n\n this.console = console;\n }\n\n log(...args) {\n return this.console.log.bind(this.console, ...args);\n }\n\n info(...args) {\n return this.console.info.bind(this.console, ...args);\n }\n\n warn(...args) {\n return this.console.warn.bind(this.console, ...args);\n }\n\n error(...args) {\n return this.console.error.bind(this.console, ...args);\n }\n\n}\n//# sourceMappingURL=loggers.js.map","// probe.gl Log compatible loggers\nimport {Log} from 'probe.gl';\n\nexport const probeLog = new Log({id: 'loaders.gl'});\n\n// Logs nothing\nexport class NullLog {\n log() {\n return () => {};\n }\n info() {\n return () => {};\n }\n warn() {\n return () => {};\n }\n error() {\n return () => {};\n }\n}\n\n// Logs to console\nexport class ConsoleLog {\n console;\n\n constructor() {\n this.console = console; // eslint-disable-line\n }\n log(...args) {\n return this.console.log.bind(this.console, ...args);\n }\n info(...args) {\n return this.console.info.bind(this.console, ...args);\n }\n warn(...args) {\n return this.console.warn.bind(this.console, ...args);\n }\n error(...args) {\n return this.console.error.bind(this.console, ...args);\n }\n}\n","import './init';\nimport { default as Log } from './lib/log';\nexport { VERSION } from './utils/globals';\nexport { self, window, global, document, process, console } from './env/globals';\nexport { default as isBrowser, isBrowserMainThread } from './env/is-browser';\nexport { default as getBrowser, isMobile } from './env/get-browser';\nexport { default as isElectron } from './env/is-electron';\nexport { default as assert } from './utils/assert';\nexport { default as Log } from './lib/log';\nexport { COLOR } from './utils/color';\nexport default new Log({\n id: 'probe.gl'\n});\nexport { addColor } from './utils/color';\nexport { leftPad, rightPad } from './utils/formatters';\nexport { autobind } from './utils/autobind';\nexport { default as LocalStorage } from './utils/local-storage';\nexport { default as getHiResTimestamp } from './utils/hi-res-timestamp';\nexport { Stats, Stat } from '@probe.gl/stats';\n//# sourceMappingURL=index.js.map","import './init';\nimport {default as Log} from './lib/log';\n\nexport {VERSION} from './utils/globals';\n\n// ENVIRONMENT\nexport {self, window, global, document, process, console} from './env/globals';\nexport {default as isBrowser, isBrowserMainThread} from './env/is-browser';\nexport {default as getBrowser, isMobile} from './env/get-browser';\nexport {default as isElectron} from './env/is-electron';\n\n// ENVIRONMENT'S ASSERT IS 5-15KB, SO WE PROVIDE OUR OWN\nexport {default as assert} from './utils/assert';\n\n// LOGGING\nexport {default as Log} from './lib/log';\nexport {COLOR} from './utils/color';\n\n// DEFAULT EXPORT IS A LOG INSTANCE\nexport default new Log({id: 'probe.gl'});\n\n// UTILITIES\nexport {addColor} from './utils/color';\nexport {leftPad, rightPad} from './utils/formatters';\nexport {autobind} from './utils/autobind';\nexport {default as LocalStorage} from './utils/local-storage';\nexport {default as getHiResTimestamp} from './utils/hi-res-timestamp';\n\n// DEPRECATED (Should be imported directly from @probe.gl/stats)\nexport {Stats, Stat} from '@probe.gl/stats';\n","import { VERSION, isBrowser } from '../utils/globals';\nimport LocalStorage from '../utils/local-storage';\nimport { formatImage, formatTime, leftPad } from '../utils/formatters';\nimport { addColor } from '../utils/color';\nimport { autobind } from '../utils/autobind';\nimport assert from '../utils/assert';\nimport getHiResTimestamp from '../utils/hi-res-timestamp';\nconst originalConsole = {\n debug: isBrowser ? console.debug || console.log : console.log,\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error\n};\nconst DEFAULT_SETTINGS = {\n enabled: true,\n level: 0\n};\n\nfunction noop() {}\n\nconst cache = {};\nconst ONCE = {\n once: true\n};\n\nfunction getTableHeader(table) {\n for (const key in table) {\n for (const title in table[key]) {\n return title || 'untitled';\n }\n }\n\n return 'empty';\n}\n\nexport default class Log {\n constructor({\n id\n } = {\n id: ''\n }) {\n this.id = id;\n this.VERSION = VERSION;\n this._startTs = getHiResTimestamp();\n this._deltaTs = getHiResTimestamp();\n this.LOG_THROTTLE_TIMEOUT = 0;\n this._storage = new LocalStorage(\"__probe-\".concat(this.id, \"__\"), DEFAULT_SETTINGS);\n this.userData = {};\n this.timeStamp(\"\".concat(this.id, \" started\"));\n autobind(this);\n Object.seal(this);\n }\n\n set level(newLevel) {\n this.setLevel(newLevel);\n }\n\n get level() {\n return this.getLevel();\n }\n\n isEnabled() {\n return this._storage.config.enabled;\n }\n\n getLevel() {\n return this._storage.config.level;\n }\n\n getTotal() {\n return Number((getHiResTimestamp() - this._startTs).toPrecision(10));\n }\n\n getDelta() {\n return Number((getHiResTimestamp() - this._deltaTs).toPrecision(10));\n }\n\n set priority(newPriority) {\n this.level = newPriority;\n }\n\n get priority() {\n return this.level;\n }\n\n getPriority() {\n return this.level;\n }\n\n enable(enabled = true) {\n this._storage.updateConfiguration({\n enabled\n });\n\n return this;\n }\n\n setLevel(level) {\n this._storage.updateConfiguration({\n level\n });\n\n return this;\n }\n\n assert(condition, message) {\n assert(condition, message);\n }\n\n warn(message) {\n return this._getLogFunction(0, message, originalConsole.warn, arguments, ONCE);\n }\n\n error(message) {\n return this._getLogFunction(0, message, originalConsole.error, arguments);\n }\n\n deprecated(oldUsage, newUsage) {\n return this.warn(\"`\".concat(oldUsage, \"` is deprecated and will be removed in a later version. Use `\").concat(newUsage, \"` instead\"));\n }\n\n removed(oldUsage, newUsage) {\n return this.error(\"`\".concat(oldUsage, \"` has been removed. Use `\").concat(newUsage, \"` instead\"));\n }\n\n probe(logLevel, message) {\n return this._getLogFunction(logLevel, message, originalConsole.log, arguments, {\n time: true,\n once: true\n });\n }\n\n log(logLevel, message) {\n return this._getLogFunction(logLevel, message, originalConsole.debug, arguments);\n }\n\n info(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.info, arguments);\n }\n\n once(logLevel, message) {\n return this._getLogFunction(logLevel, message, originalConsole.debug || originalConsole.info, arguments, ONCE);\n }\n\n table(logLevel, table, columns) {\n if (table) {\n return this._getLogFunction(logLevel, table, console.table || noop, columns && [columns], {\n tag: getTableHeader(table)\n });\n }\n\n return noop;\n }\n\n image({\n logLevel,\n priority,\n image,\n message = '',\n scale = 1\n }) {\n if (!this._shouldLog(logLevel || priority)) {\n return noop;\n }\n\n return isBrowser ? logImageInBrowser({\n image,\n message,\n scale\n }) : logImageInNode({\n image,\n message,\n scale\n });\n }\n\n settings() {\n if (console.table) {\n console.table(this._storage.config);\n } else {\n console.log(this._storage.config);\n }\n }\n\n get(setting) {\n return this._storage.config[setting];\n }\n\n set(setting, value) {\n this._storage.updateConfiguration({\n [setting]: value\n });\n }\n\n time(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);\n }\n\n timeEnd(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeEnd ? console.timeEnd : console.info);\n }\n\n timeStamp(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeStamp || noop);\n }\n\n group(logLevel, message, opts = {\n collapsed: false\n }) {\n opts = normalizeArguments({\n logLevel,\n message,\n opts\n });\n const {\n collapsed\n } = opts;\n opts.method = (collapsed ? console.groupCollapsed : console.group) || console.info;\n return this._getLogFunction(opts);\n }\n\n groupCollapsed(logLevel, message, opts = {}) {\n return this.group(logLevel, message, Object.assign({}, opts, {\n collapsed: true\n }));\n }\n\n groupEnd(logLevel) {\n return this._getLogFunction(logLevel, '', console.groupEnd || noop);\n }\n\n withGroup(logLevel, message, func) {\n this.group(logLevel, message)();\n\n try {\n func();\n } finally {\n this.groupEnd(logLevel)();\n }\n }\n\n trace() {\n if (console.trace) {\n console.trace();\n }\n }\n\n _shouldLog(logLevel) {\n return this.isEnabled() && this.getLevel() >= normalizeLogLevel(logLevel);\n }\n\n _getLogFunction(logLevel, message, method, args = [], opts) {\n if (this._shouldLog(logLevel)) {\n opts = normalizeArguments({\n logLevel,\n message,\n args,\n opts\n });\n method = method || opts.method;\n assert(method);\n opts.total = this.getTotal();\n opts.delta = this.getDelta();\n this._deltaTs = getHiResTimestamp();\n const tag = opts.tag || opts.message;\n\n if (opts.once) {\n if (!cache[tag]) {\n cache[tag] = getHiResTimestamp();\n } else {\n return noop;\n }\n }\n\n message = decorateMessage(this.id, opts.message, opts);\n return method.bind(console, message, ...opts.args);\n }\n\n return noop;\n }\n\n}\nLog.VERSION = VERSION;\n\nfunction normalizeLogLevel(logLevel) {\n if (!logLevel) {\n return 0;\n }\n\n let resolvedLevel;\n\n switch (typeof logLevel) {\n case 'number':\n resolvedLevel = logLevel;\n break;\n\n case 'object':\n resolvedLevel = logLevel.logLevel || logLevel.priority || 0;\n break;\n\n default:\n return 0;\n }\n\n assert(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);\n return resolvedLevel;\n}\n\nexport function normalizeArguments(opts) {\n const {\n logLevel,\n message\n } = opts;\n opts.logLevel = normalizeLogLevel(logLevel);\n const args = opts.args ? Array.from(opts.args) : [];\n\n while (args.length && args.shift() !== message) {}\n\n opts.args = args;\n\n switch (typeof logLevel) {\n case 'string':\n case 'function':\n if (message !== undefined) {\n args.unshift(message);\n }\n\n opts.message = logLevel;\n break;\n\n case 'object':\n Object.assign(opts, logLevel);\n break;\n\n default:\n }\n\n if (typeof opts.message === 'function') {\n opts.message = opts.message();\n }\n\n const messageType = typeof opts.message;\n assert(messageType === 'string' || messageType === 'object');\n return Object.assign(opts, opts.opts);\n}\n\nfunction decorateMessage(id, message, opts) {\n if (typeof message === 'string') {\n const time = opts.time ? leftPad(formatTime(opts.total)) : '';\n message = opts.time ? \"\".concat(id, \": \").concat(time, \" \").concat(message) : \"\".concat(id, \": \").concat(message);\n message = addColor(message, opts.color, opts.background);\n }\n\n return message;\n}\n\nfunction logImageInNode({\n image,\n message = '',\n scale = 1\n}) {\n let asciify = null;\n\n try {\n asciify = module.require('asciify-image');\n } catch (error) {}\n\n if (asciify) {\n return () => asciify(image, {\n fit: 'box',\n width: \"\".concat(Math.round(80 * scale), \"%\")\n }).then(data => console.log(data));\n }\n\n return noop;\n}\n\nfunction logImageInBrowser({\n image,\n message = '',\n scale = 1\n}) {\n if (typeof image === 'string') {\n const img = new Image();\n\n img.onload = () => {\n const args = formatImage(img, message, scale);\n console.log(...args);\n };\n\n img.src = image;\n return noop;\n }\n\n const element = image.nodeName || '';\n\n if (element.toLowerCase() === 'img') {\n console.log(...formatImage(image, message, scale));\n return noop;\n }\n\n if (element.toLowerCase() === 'canvas') {\n const img = new Image();\n\n img.onload = () => console.log(...formatImage(img, message, scale));\n\n img.src = image.toDataURL();\n return noop;\n }\n\n return noop;\n}\n//# sourceMappingURL=log.js.map","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/* eslint-disable no-console */\nimport {VERSION, isBrowser} from '../utils/globals';\nimport LocalStorage from '../utils/local-storage';\nimport {formatImage, formatTime, leftPad} from '../utils/formatters';\nimport {addColor} from '../utils/color';\nimport {autobind} from '../utils/autobind';\nimport assert from '../utils/assert';\nimport getHiResTimestamp from '../utils/hi-res-timestamp';\n\n/* eslint-disable no-console */\n\n// Instrumentation in other packages may override console methods, so preserve them here\nconst originalConsole = {\n debug: isBrowser ? console.debug || console.log : console.log,\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error\n};\n\nconst DEFAULT_SETTINGS = {\n enabled: true,\n level: 0\n};\n\nfunction noop() {}\n\nconst cache = {};\nconst ONCE = {once: true};\n\n/*\nfunction throttle(tag, timeout) {\n const prevTime = cache[tag];\n const time = Date.now();\n if (!prevTime || (time - prevTime > timeout)) {\n cache[tag] = time;\n return true;\n }\n return false;\n}\n\n// Assertions don't generate standard exceptions and don't print nicely\nfunction checkForAssertionErrors(args) {\n const isAssertion =\n args &&\n args.length > 0 &&\n typeof args[0] === 'object' &&\n args[0] !== null &&\n args[0].name === 'AssertionError';\n\n if (isAssertion) {\n args = Array.prototype.slice.call(args);\n args.unshift(`assert(${args[0].message})`);\n }\n return args;\n}\n*/\n\nfunction getTableHeader(table) {\n for (const key in table) {\n for (const title in table[key]) {\n return title || 'untitled';\n }\n }\n return 'empty';\n}\n\n// A console wrapper\n\nexport default class Log {\n constructor({id} = {id: ''}) {\n this.id = id;\n this.VERSION = VERSION;\n this._startTs = getHiResTimestamp();\n this._deltaTs = getHiResTimestamp();\n // TODO - fix support from throttling groups\n this.LOG_THROTTLE_TIMEOUT = 0; // Time before throttled messages are logged again\n this._storage = new LocalStorage(`__probe-${this.id}__`, DEFAULT_SETTINGS);\n this.userData = {};\n\n this.timeStamp(`${this.id} started`);\n\n autobind(this);\n Object.seal(this);\n }\n\n set level(newLevel) {\n this.setLevel(newLevel);\n }\n\n get level() {\n return this.getLevel();\n }\n\n isEnabled() {\n return this._storage.config.enabled;\n }\n\n getLevel() {\n return this._storage.config.level;\n }\n\n // @return {Number} milliseconds, with fractions\n getTotal() {\n return Number((getHiResTimestamp() - this._startTs).toPrecision(10));\n }\n\n // @return {Number} milliseconds, with fractions\n getDelta() {\n return Number((getHiResTimestamp() - this._deltaTs).toPrecision(10));\n }\n\n // Deprecated\n set priority(newPriority) {\n this.level = newPriority;\n }\n\n get priority() {\n return this.level;\n }\n\n getPriority() {\n return this.level;\n }\n\n // Configure\n\n enable(enabled = true) {\n this._storage.updateConfiguration({enabled});\n return this;\n }\n\n setLevel(level) {\n this._storage.updateConfiguration({level});\n return this;\n }\n\n // Unconditional logging\n\n assert(condition, message) {\n assert(condition, message);\n }\n\n // Warn, but only once, no console flooding\n warn(message) {\n // @ts-ignore\n return this._getLogFunction(0, message, originalConsole.warn, arguments, ONCE);\n }\n\n // Print an error\n error(message) {\n // @ts-ignore\n return this._getLogFunction(0, message, originalConsole.error, arguments);\n }\n\n deprecated(oldUsage, newUsage) {\n return this.warn(`\\`${oldUsage}\\` is deprecated and will be removed \\\nin a later version. Use \\`${newUsage}\\` instead`);\n }\n\n removed(oldUsage, newUsage) {\n return this.error(`\\`${oldUsage}\\` has been removed. Use \\`${newUsage}\\` instead`);\n }\n\n // Conditional logging\n\n // Log to a group\n probe(logLevel, message) {\n // @ts-ignore\n return this._getLogFunction(logLevel, message, originalConsole.log, arguments, {\n time: true,\n once: true\n });\n }\n\n // Log a debug message\n log(logLevel, message) {\n // @ts-ignore\n return this._getLogFunction(logLevel, message, originalConsole.debug, arguments);\n }\n\n // Log a normal message\n info(logLevel, message) {\n // @ts-ignore\n return this._getLogFunction(logLevel, message, console.info, arguments);\n }\n\n // Log a normal message, but only once, no console flooding\n once(logLevel, message) {\n return this._getLogFunction(\n logLevel,\n message,\n originalConsole.debug || originalConsole.info,\n // @ts-ignore\n arguments,\n ONCE\n );\n }\n\n // Logs an object as a table\n table(logLevel, table, columns) {\n if (table) {\n return this._getLogFunction(logLevel, table, console.table || noop, columns && [columns], {\n tag: getTableHeader(table)\n });\n }\n return noop;\n }\n\n // logs an image under Chrome\n image({logLevel, priority, image, message = '', scale = 1}) {\n if (!this._shouldLog(logLevel || priority)) {\n return noop;\n }\n return isBrowser\n ? logImageInBrowser({image, message, scale})\n : logImageInNode({image, message, scale});\n }\n\n // Logs the current settings as a table\n settings() {\n if (console.table) {\n console.table(this._storage.config);\n } else {\n console.log(this._storage.config);\n }\n }\n\n // logs the current status of the setting\n get(setting) {\n return this._storage.config[setting];\n }\n\n // update the status of the setting\n set(setting, value) {\n this._storage.updateConfiguration({[setting]: value});\n }\n\n time(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);\n }\n\n timeEnd(logLevel, message) {\n return this._getLogFunction(\n logLevel,\n message,\n console.timeEnd ? console.timeEnd : console.info\n );\n }\n\n timeStamp(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeStamp || noop);\n }\n\n group(logLevel, message, opts = {collapsed: false}) {\n opts = normalizeArguments({logLevel, message, opts});\n const {collapsed} = opts;\n opts.method = (collapsed ? console.groupCollapsed : console.group) || console.info;\n\n return this._getLogFunction(opts);\n }\n\n groupCollapsed(logLevel, message, opts = {}) {\n return this.group(logLevel, message, Object.assign({}, opts, {collapsed: true}));\n }\n\n groupEnd(logLevel) {\n return this._getLogFunction(logLevel, '', console.groupEnd || noop);\n }\n\n // EXPERIMENTAL\n\n withGroup(logLevel, message, func) {\n this.group(logLevel, message)();\n\n try {\n func();\n } finally {\n this.groupEnd(logLevel)();\n }\n }\n\n trace() {\n if (console.trace) {\n console.trace();\n }\n }\n\n // PRIVATE METHODS\n\n _shouldLog(logLevel) {\n return this.isEnabled() && this.getLevel() >= normalizeLogLevel(logLevel);\n }\n\n _getLogFunction(logLevel, message, method, args = [], opts) {\n if (this._shouldLog(logLevel)) {\n // normalized opts + timings\n opts = normalizeArguments({logLevel, message, args, opts});\n method = method || opts.method;\n assert(method);\n\n opts.total = this.getTotal();\n opts.delta = this.getDelta();\n // reset delta timer\n this._deltaTs = getHiResTimestamp();\n\n const tag = opts.tag || opts.message;\n\n if (opts.once) {\n if (!cache[tag]) {\n cache[tag] = getHiResTimestamp();\n } else {\n return noop;\n }\n }\n\n // TODO - Make throttling work with groups\n // if (opts.nothrottle || !throttle(tag, this.LOG_THROTTLE_TIMEOUT)) {\n // return noop;\n // }\n\n message = decorateMessage(this.id, opts.message, opts);\n\n // Bind console function so that it can be called after being returned\n return method.bind(console, message, ...opts.args);\n }\n return noop;\n }\n}\n\nLog.VERSION = VERSION;\n\n// Get logLevel from first argument:\n// - log(logLevel, message, args) => logLevel\n// - log(message, args) => 0\n// - log({logLevel, ...}, message, args) => logLevel\n// - log({logLevel, message, args}) => logLevel\nfunction normalizeLogLevel(logLevel) {\n if (!logLevel) {\n return 0;\n }\n let resolvedLevel;\n\n switch (typeof logLevel) {\n case 'number':\n resolvedLevel = logLevel;\n break;\n\n case 'object':\n // Backward compatibility\n // TODO - deprecate `priority`\n resolvedLevel = logLevel.logLevel || logLevel.priority || 0;\n break;\n\n default:\n return 0;\n }\n // 'log level must be a number'\n assert(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);\n\n return resolvedLevel;\n}\n\n// \"Normalizes\" the various argument patterns into an object with known types\n// - log(logLevel, message, args) => {logLevel, message, args}\n// - log(message, args) => {logLevel: 0, message, args}\n// - log({logLevel, ...}, message, args) => {logLevel, message, args}\n// - log({logLevel, message, args}) => {logLevel, message, args}\nexport function normalizeArguments(opts) {\n const {logLevel, message} = opts;\n opts.logLevel = normalizeLogLevel(logLevel);\n // We use `arguments` instead of rest parameters (...args) because IE\n // does not support the syntax. Rest parameters is transpiled to code with\n // perf impact. Doing it here instead avoids constructing args when logging is\n // disabled.\n // TODO - remove when/if IE support is dropped\n const args = opts.args ? Array.from(opts.args) : [];\n /* eslint-disable no-empty */\n // args should only contain arguments that appear after `message`\n while (args.length && args.shift() !== message) {}\n /* eslint-enable no-empty */\n opts.args = args;\n\n switch (typeof logLevel) {\n case 'string':\n case 'function':\n if (message !== undefined) {\n args.unshift(message);\n }\n opts.message = logLevel;\n break;\n\n case 'object':\n Object.assign(opts, logLevel);\n break;\n\n default:\n }\n\n // Resolve functions into strings by calling them\n if (typeof opts.message === 'function') {\n opts.message = opts.message();\n }\n const messageType = typeof opts.message;\n // 'log message must be a string' or object\n assert(messageType === 'string' || messageType === 'object');\n\n // original opts + normalized opts + opts arg + fixed up message\n return Object.assign(opts, opts.opts);\n}\n\nfunction decorateMessage(id, message, opts) {\n if (typeof message === 'string') {\n const time = opts.time ? leftPad(formatTime(opts.total)) : '';\n message = opts.time ? `${id}: ${time} ${message}` : `${id}: ${message}`;\n message = addColor(message, opts.color, opts.background);\n }\n return message;\n}\n\n// Use the asciify module to log an image under node.js\nfunction logImageInNode({image, message = '', scale = 1}) {\n // Note: Runtime load of the \"asciify-image\" module, avoids including in browser bundles\n let asciify = null;\n try {\n asciify = module.require('asciify-image');\n } catch (error) {\n // asciify not installed, silently ignore\n }\n if (asciify) {\n return () =>\n asciify(image, {fit: 'box', width: `${Math.round(80 * scale)}%`}).then(data =>\n console.log(data)\n );\n }\n return noop;\n}\n\nfunction logImageInBrowser({image, message = '', scale = 1}) {\n if (typeof image === 'string') {\n const img = new Image();\n img.onload = () => {\n const args = formatImage(img, message, scale);\n console.log(...args);\n };\n img.src = image;\n return noop;\n }\n const element = image.nodeName || '';\n if (element.toLowerCase() === 'img') {\n console.log(...formatImage(image, message, scale));\n return noop;\n }\n if (element.toLowerCase() === 'canvas') {\n const img = new Image();\n img.onload = () => console.log(...formatImage(img, message, scale));\n img.src = image.toDataURL();\n return noop;\n }\n return noop;\n}\n","import checkIfBrowser from '../env/is-browser';\nexport { self, window, global, document, process, console } from '../env/globals';\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\nexport const isBrowser = checkIfBrowser();\n//# sourceMappingURL=globals.js.map","import checkIfBrowser from '../env/is-browser';\n\nexport {self, window, global, document, process, console} from '../env/globals';\n\n// Extract injected version from package.json (injected by babel plugin)\n/* global __VERSION__ */\n// @ts-ignore\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\n\nexport const isBrowser = checkIfBrowser();\n","import isElectron from './is-electron';\nexport default function isBrowser() {\n const isNode = typeof process === 'object' && String(process) === '[object process]' && !process.browser;\n return !isNode || isElectron();\n}\nexport function isBrowserMainThread() {\n return isBrowser() && typeof document !== 'undefined';\n}\n//# sourceMappingURL=is-browser.js.map","// This function is needed in initialization stages,\n// make sure it can be imported in isolation\n\nimport isElectron from './is-electron';\n\nexport default function isBrowser() {\n // Check if in browser by duck-typing Node context\n const isNode =\n // @ts-ignore\n typeof process === 'object' && String(process) === '[object process]' && !process.browser;\n\n return !isNode || isElectron();\n}\n\n// document does not exist on worker thread\nexport function isBrowserMainThread() {\n return isBrowser() && typeof document !== 'undefined';\n}\n","export default function isElectron(mockUserAgent) {\n if (typeof window !== 'undefined' && typeof window.process === 'object' && window.process.type === 'renderer') {\n return true;\n }\n\n if (typeof process !== 'undefined' && typeof process.versions === 'object' && Boolean(process.versions.electron)) {\n return true;\n }\n\n const realUserAgent = typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent;\n const userAgent = mockUserAgent || realUserAgent;\n\n if (userAgent && userAgent.indexOf('Electron') >= 0) {\n return true;\n }\n\n return false;\n}\n//# sourceMappingURL=is-electron.js.map","// based on https://github.com/cheton/is-electron\n// https://github.com/electron/electron/issues/2288\n/* eslint-disable complexity */\nexport default function isElectron(mockUserAgent) {\n // Renderer process\n if (\n typeof window !== 'undefined' &&\n typeof window.process === 'object' &&\n // @ts-ignore\n window.process.type === 'renderer'\n ) {\n return true;\n }\n // Main process\n if (\n typeof process !== 'undefined' &&\n typeof process.versions === 'object' &&\n // @ts-ignore\n Boolean(process.versions.electron)\n ) {\n return true;\n }\n // Detect the user agent when the `nodeIntegration` option is set to true\n const realUserAgent =\n typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent;\n const userAgent = mockUserAgent || realUserAgent;\n if (userAgent && userAgent.indexOf('Electron') >= 0) {\n return true;\n }\n return false;\n}\n","const globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document,\n process: typeof process === 'object' && process\n};\nconst self_ = globals.self || globals.window || globals.global;\nconst window_ = globals.window || globals.self || globals.global;\nconst global_ = globals.global || globals.self || globals.window;\nconst document_ = globals.document || {};\nconst process_ = globals.process || {};\nconst console_ = console;\nexport { self_ as self, window_ as window, global_ as global, document_ as document, process_ as process, console_ as console };\n//# sourceMappingURL=globals.js.map","/* eslint-disable no-restricted-globals */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document,\n process: typeof process === 'object' && process\n};\n\nconst self_ = globals.self || globals.window || globals.global;\nconst window_ = globals.window || globals.self || globals.global;\nconst global_ = globals.global || globals.self || globals.window;\nconst document_ = globals.document || {};\nconst process_ = globals.process || {};\nconst console_ = console;\n\nexport {\n self_ as self,\n window_ as window,\n global_ as global,\n document_ as document,\n process_ as process,\n console_ as console\n};\n","function getStorage(type) {\n try {\n const storage = window[type];\n const x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return storage;\n } catch (e) {\n return null;\n }\n}\n\nexport default class LocalStorage {\n constructor(id, defaultSettings, type = 'sessionStorage') {\n this.storage = getStorage(type);\n this.id = id;\n this.config = {};\n Object.assign(this.config, defaultSettings);\n\n this._loadConfiguration();\n }\n\n getConfiguration() {\n return this.config;\n }\n\n setConfiguration(configuration) {\n this.config = {};\n return this.updateConfiguration(configuration);\n }\n\n updateConfiguration(configuration) {\n Object.assign(this.config, configuration);\n\n if (this.storage) {\n const serialized = JSON.stringify(this.config);\n this.storage.setItem(this.id, serialized);\n }\n\n return this;\n }\n\n _loadConfiguration() {\n let configuration = {};\n\n if (this.storage) {\n const serializedConfiguration = this.storage.getItem(this.id);\n configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};\n }\n\n Object.assign(this.config, configuration);\n return this;\n }\n\n}\n//# sourceMappingURL=local-storage.js.map","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nfunction getStorage(type) {\n try {\n /** @type {Storage} */\n // @ts-ignore\n const storage = window[type];\n const x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return storage;\n } catch (e) {\n return null;\n }\n}\n\n// Store keys in local storage via simple interface\nexport default class LocalStorage {\n constructor(id, defaultSettings, type = 'sessionStorage') {\n this.storage = getStorage(type);\n this.id = id;\n this.config = {};\n Object.assign(this.config, defaultSettings);\n this._loadConfiguration();\n }\n\n getConfiguration() {\n return this.config;\n }\n\n setConfiguration(configuration) {\n this.config = {};\n return this.updateConfiguration(configuration);\n }\n\n updateConfiguration(configuration) {\n Object.assign(this.config, configuration);\n if (this.storage) {\n const serialized = JSON.stringify(this.config);\n this.storage.setItem(this.id, serialized);\n }\n return this;\n }\n\n // Get config from persistent store, if available\n _loadConfiguration() {\n let configuration = {};\n if (this.storage) {\n const serializedConfiguration = this.storage.getItem(this.id);\n configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};\n }\n Object.assign(this.config, configuration);\n return this;\n }\n}\n","export function formatTime(ms) {\n let formatted;\n\n if (ms < 10) {\n formatted = \"\".concat(ms.toFixed(2), \"ms\");\n } else if (ms < 100) {\n formatted = \"\".concat(ms.toFixed(1), \"ms\");\n } else if (ms < 1000) {\n formatted = \"\".concat(ms.toFixed(0), \"ms\");\n } else {\n formatted = \"\".concat((ms / 1000).toFixed(2), \"s\");\n }\n\n return formatted;\n}\nexport function leftPad(string, length = 8) {\n const padLength = Math.max(length - string.length, 0);\n return \"\".concat(' '.repeat(padLength)).concat(string);\n}\nexport function rightPad(string, length = 8) {\n const padLength = Math.max(length - string.length, 0);\n return \"\".concat(string).concat(' '.repeat(padLength));\n}\nexport function formatValue(v, opts = {}) {\n const EPSILON = 1e-16;\n const {\n isInteger = false\n } = opts;\n\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, opts);\n }\n\n if (!Number.isFinite(v)) {\n return String(v);\n }\n\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n\n if (isInteger) {\n return v.toFixed(0);\n }\n\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n return v.toFixed(0);\n }\n\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n\nfunction formatArrayValue(v, opts) {\n const {\n maxElts = 16,\n size = 1\n } = opts;\n let string = '[';\n\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += \",\".concat(i % size === 0 ? ' ' : '');\n }\n\n string += formatValue(v[i], opts);\n }\n\n const terminator = v.length > maxElts ? '...' : ']';\n return \"\".concat(string).concat(terminator);\n}\n\nexport function formatImage(image, message, scale, maxWidth = 600) {\n const imageUrl = image.src.replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n\n if (image.width > maxWidth) {\n scale = Math.min(scale, maxWidth / image.width);\n }\n\n const width = image.width * scale;\n const height = image.height * scale;\n const style = ['font-size:1px;', \"padding:\".concat(Math.floor(height / 2), \"px \").concat(Math.floor(width / 2), \"px;\"), \"line-height:\".concat(height, \"px;\"), \"background:url(\".concat(imageUrl, \");\"), \"background-size:\".concat(width, \"px \").concat(height, \"px;\"), 'color:transparent;'].join('');\n return [\"\".concat(message, \" %c+\"), style];\n}\n//# sourceMappingURL=formatters.js.map","// TODO: Currently unused, keeping in case we want it later for log formatting\nexport function formatTime(ms) {\n let formatted;\n if (ms < 10) {\n formatted = `${ms.toFixed(2)}ms`;\n } else if (ms < 100) {\n formatted = `${ms.toFixed(1)}ms`;\n } else if (ms < 1000) {\n formatted = `${ms.toFixed(0)}ms`;\n } else {\n formatted = `${(ms / 1000).toFixed(2)}s`;\n }\n return formatted;\n}\n\nexport function leftPad(string, length = 8) {\n const padLength = Math.max(length - string.length, 0);\n return `${' '.repeat(padLength)}${string}`;\n}\n\nexport function rightPad(string, length = 8) {\n const padLength = Math.max(length - string.length, 0);\n return `${string}${' '.repeat(padLength)}`;\n}\n\nexport function formatValue(v, opts = {}) {\n const EPSILON = 1e-16;\n const {isInteger = false} = opts;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, opts);\n }\n if (!Number.isFinite(v)) {\n return String(v);\n }\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n if (isInteger) {\n return v.toFixed(0);\n }\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n return v.toFixed(0);\n }\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n\n// Helper to formatValue\nfunction formatArrayValue(v, opts) {\n const {maxElts = 16, size = 1} = opts;\n let string = '[';\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += `,${i % size === 0 ? ' ' : ''}`;\n }\n string += formatValue(v[i], opts);\n }\n const terminator = v.length > maxElts ? '...' : ']';\n return `${string}${terminator}`;\n}\n\n// Inspired by https://github.com/hughsk/console-image (MIT license)\nexport function formatImage(image, message, scale, maxWidth = 600) {\n const imageUrl = image.src.replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n\n if (image.width > maxWidth) {\n scale = Math.min(scale, maxWidth / image.width);\n }\n\n const width = image.width * scale;\n const height = image.height * scale;\n\n const style = [\n 'font-size:1px;',\n `padding:${Math.floor(height / 2)}px ${Math.floor(width / 2)}px;`,\n `line-height:${height}px;`,\n `background:url(${imageUrl});`,\n `background-size:${width}px ${height}px;`,\n 'color:transparent;'\n ].join('');\n\n return [`${message} %c+`, style];\n}\n","import { isBrowser } from './globals';\nexport const COLOR = {\n BLACK: 30,\n RED: 31,\n GREEN: 32,\n YELLOW: 33,\n BLUE: 34,\n MAGENTA: 35,\n CYAN: 36,\n WHITE: 37,\n BRIGHT_BLACK: 90,\n BRIGHT_RED: 91,\n BRIGHT_GREEN: 92,\n BRIGHT_YELLOW: 93,\n BRIGHT_BLUE: 94,\n BRIGHT_MAGENTA: 95,\n BRIGHT_CYAN: 96,\n BRIGHT_WHITE: 97\n};\n\nfunction getColor(color) {\n return typeof color === 'string' ? COLOR[color.toUpperCase()] || COLOR.WHITE : color;\n}\n\nexport function addColor(string, color, background) {\n if (!isBrowser && typeof string === 'string') {\n if (color) {\n color = getColor(color);\n string = \"\\x1B[\".concat(color, \"m\").concat(string, \"\\x1B[39m\");\n }\n\n if (background) {\n color = getColor(background);\n string = \"\\x1B[\".concat(background + 10, \"m\").concat(string, \"\\x1B[49m\");\n }\n }\n\n return string;\n}\n//# sourceMappingURL=color.js.map","import {isBrowser} from './globals';\n\nexport const COLOR = {\n BLACK: 30,\n RED: 31,\n GREEN: 32,\n YELLOW: 33,\n BLUE: 34,\n MAGENTA: 35,\n CYAN: 36,\n WHITE: 37,\n\n BRIGHT_BLACK: 90,\n BRIGHT_RED: 91,\n BRIGHT_GREEN: 92,\n BRIGHT_YELLOW: 93,\n BRIGHT_BLUE: 94,\n BRIGHT_MAGENTA: 95,\n BRIGHT_CYAN: 96,\n BRIGHT_WHITE: 97\n};\n\nfunction getColor(color) {\n return typeof color === 'string' ? COLOR[color.toUpperCase()] || COLOR.WHITE : color;\n}\n\nexport function addColor(string, color, background) {\n if (!isBrowser && typeof string === 'string') {\n if (color) {\n color = getColor(color);\n string = `\\u001b[${color}m${string}\\u001b[39m`;\n }\n if (background) {\n // background colors values are +10\n color = getColor(background);\n string = `\\u001b[${background + 10}m${string}\\u001b[49m`;\n }\n }\n return string;\n}\n","export function autobind(obj, predefined = ['constructor']) {\n const proto = Object.getPrototypeOf(obj);\n const propNames = Object.getOwnPropertyNames(proto);\n\n for (const key of propNames) {\n if (typeof obj[key] === 'function') {\n if (!predefined.find(name => key === name)) {\n obj[key] = obj[key].bind(obj);\n }\n }\n }\n}\n//# sourceMappingURL=autobind.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/**\n * Binds the \"this\" argument of all functions on a class instance to the instance\n * @param {Object} obj - class instance (typically a react component)\n */\nexport function autobind(obj, predefined = ['constructor']) {\n const proto = Object.getPrototypeOf(obj);\n const propNames = Object.getOwnPropertyNames(proto);\n for (const key of propNames) {\n if (typeof obj[key] === 'function') {\n if (!predefined.find(name => key === name)) {\n obj[key] = obj[key].bind(obj);\n }\n }\n }\n}\n","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n//# sourceMappingURL=assert.js.map","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n","import { window, process, isBrowser } from './globals';\nexport default function getHiResTimestamp() {\n let timestamp;\n\n if (isBrowser && window.performance) {\n timestamp = window.performance.now();\n } else if (process.hrtime) {\n const timeParts = process.hrtime();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else {\n timestamp = Date.now();\n }\n\n return timestamp;\n}\n//# sourceMappingURL=hi-res-timestamp.js.map","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// @ts-nocheck\n\n/**\n * Common environment setup\n */\nimport {window, process, isBrowser} from './globals';\n\nexport default function getHiResTimestamp() {\n let timestamp;\n // Get best timer available.\n if (isBrowser && window.performance) {\n timestamp = window.performance.now();\n } else if (process.hrtime) {\n const timeParts = process.hrtime();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else {\n timestamp = Date.now();\n }\n\n return timestamp;\n}\n","\"use strict\";","// STATS (PERFORMANCE PROFILING)\nexport {default as Stats} from './lib/stats';\nexport {default as Stat} from './lib/stat';\n\n// UTILITIES\nexport {default as _getHiResTimestamp} from './utils/hi-res-timestamp';\n","import Stat from './stat';\nexport default class Stats {\n constructor({\n id,\n stats\n }) {\n this.id = id;\n this.stats = {};\n\n this._initializeStats(stats);\n\n Object.seal(this);\n }\n\n get(name, type = 'count') {\n return this._getOrCreate({\n name,\n type\n });\n }\n\n get size() {\n return Object.keys(this.stats).length;\n }\n\n reset() {\n for (const key in this.stats) {\n this.stats[key].reset();\n }\n\n return this;\n }\n\n forEach(fn) {\n for (const key in this.stats) {\n fn(this.stats[key]);\n }\n }\n\n getTable() {\n const table = {};\n this.forEach(stat => {\n table[stat.name] = {\n time: stat.time || 0,\n count: stat.count || 0,\n average: stat.getAverageTime() || 0,\n hz: stat.getHz() || 0\n };\n });\n return table;\n }\n\n _initializeStats(stats = []) {\n stats.forEach(stat => this._getOrCreate(stat));\n }\n\n _getOrCreate(stat) {\n if (!stat || !stat.name) {\n return null;\n }\n\n const {\n name,\n type\n } = stat;\n\n if (!this.stats[name]) {\n if (stat instanceof Stat) {\n this.stats[name] = stat;\n } else {\n this.stats[name] = new Stat(name, type);\n }\n }\n\n return this.stats[name];\n }\n\n}\n//# sourceMappingURL=stats.js.map","import Stat from './stat';\n\nexport default class Stats {\n constructor({id, stats}) {\n this.id = id;\n this.stats = {};\n\n this._initializeStats(stats);\n\n Object.seal(this);\n }\n\n // Acquire a stat. Create if it doesn't exist.\n get(name, type = 'count') {\n return this._getOrCreate({name, type});\n }\n\n get size() {\n return Object.keys(this.stats).length;\n }\n\n // Reset all stats\n reset() {\n for (const key in this.stats) {\n this.stats[key].reset();\n }\n\n return this;\n }\n\n forEach(fn) {\n for (const key in this.stats) {\n fn(this.stats[key]);\n }\n }\n\n getTable() {\n const table = {};\n this.forEach(stat => {\n table[stat.name] = {\n time: stat.time || 0,\n count: stat.count || 0,\n average: stat.getAverageTime() || 0,\n hz: stat.getHz() || 0\n };\n });\n\n return table;\n }\n\n _initializeStats(stats = []) {\n stats.forEach(stat => this._getOrCreate(stat));\n }\n\n _getOrCreate(stat) {\n if (!stat || !stat.name) {\n return null;\n }\n\n const {name, type} = stat;\n if (!this.stats[name]) {\n if (stat instanceof Stat) {\n this.stats[name] = stat;\n } else {\n this.stats[name] = new Stat(name, type);\n }\n }\n return this.stats[name];\n }\n}\n","import getHiResTimestamp from '../utils/hi-res-timestamp';\nexport default class Stat {\n constructor(name, type) {\n this.name = name;\n this.type = type;\n this.sampleSize = 1;\n this.reset();\n }\n\n setSampleSize(samples) {\n this.sampleSize = samples;\n return this;\n }\n\n incrementCount() {\n this.addCount(1);\n return this;\n }\n\n decrementCount() {\n this.subtractCount(1);\n return this;\n }\n\n addCount(value) {\n this._count += value;\n this._samples++;\n\n this._checkSampling();\n\n return this;\n }\n\n subtractCount(value) {\n this._count -= value;\n this._samples++;\n\n this._checkSampling();\n\n return this;\n }\n\n addTime(time) {\n this._time += time;\n this.lastTiming = time;\n this._samples++;\n\n this._checkSampling();\n\n return this;\n }\n\n timeStart() {\n this._startTime = getHiResTimestamp();\n this._timerPending = true;\n return this;\n }\n\n timeEnd() {\n if (!this._timerPending) {\n return this;\n }\n\n this.addTime(getHiResTimestamp() - this._startTime);\n this._timerPending = false;\n\n this._checkSampling();\n\n return this;\n }\n\n getSampleAverageCount() {\n return this.sampleSize > 0 ? this.lastSampleCount / this.sampleSize : 0;\n }\n\n getSampleAverageTime() {\n return this.sampleSize > 0 ? this.lastSampleTime / this.sampleSize : 0;\n }\n\n getSampleHz() {\n return this.lastSampleTime > 0 ? this.sampleSize / (this.lastSampleTime / 1000) : 0;\n }\n\n getAverageCount() {\n return this.samples > 0 ? this.count / this.samples : 0;\n }\n\n getAverageTime() {\n return this.samples > 0 ? this.time / this.samples : 0;\n }\n\n getHz() {\n return this.time > 0 ? this.samples / (this.time / 1000) : 0;\n }\n\n reset() {\n this.time = 0;\n this.count = 0;\n this.samples = 0;\n this.lastTiming = 0;\n this.lastSampleTime = 0;\n this.lastSampleCount = 0;\n this._count = 0;\n this._time = 0;\n this._samples = 0;\n this._startTime = 0;\n this._timerPending = false;\n return this;\n }\n\n _checkSampling() {\n if (this._samples === this.sampleSize) {\n this.lastSampleTime = this._time;\n this.lastSampleCount = this._count;\n this.count += this._count;\n this.time += this._time;\n this.samples += this._samples;\n this._time = 0;\n this._count = 0;\n this._samples = 0;\n }\n }\n\n}\n//# sourceMappingURL=stat.js.map","import getHiResTimestamp from '../utils/hi-res-timestamp';\n\nexport default class Stat {\n constructor(name, type) {\n this.name = name;\n this.type = type;\n this.sampleSize = 1;\n this.reset();\n }\n\n setSampleSize(samples) {\n this.sampleSize = samples;\n\n return this;\n }\n\n // Call to increment count (+1)\n incrementCount() {\n this.addCount(1);\n\n return this;\n }\n\n // Call to decrement count (-1)\n decrementCount() {\n this.subtractCount(1);\n\n return this;\n }\n\n // Increase count\n addCount(value) {\n this._count += value;\n this._samples++;\n this._checkSampling();\n\n return this;\n }\n\n // Decrease count\n subtractCount(value) {\n this._count -= value;\n this._samples++;\n this._checkSampling();\n\n return this;\n }\n\n // Add an arbitrary timing and bump the count\n addTime(time) {\n this._time += time;\n this.lastTiming = time;\n this._samples++;\n this._checkSampling();\n\n return this;\n }\n\n // Start a timer\n timeStart() {\n this._startTime = getHiResTimestamp();\n this._timerPending = true;\n\n return this;\n }\n\n // End a timer. Adds to time and bumps the timing count.\n timeEnd() {\n if (!this._timerPending) {\n return this;\n }\n\n this.addTime(getHiResTimestamp() - this._startTime);\n this._timerPending = false;\n this._checkSampling();\n\n return this;\n }\n\n getSampleAverageCount() {\n return this.sampleSize > 0 ? this.lastSampleCount / this.sampleSize : 0;\n }\n\n // Calculate average time / count for the previous window\n getSampleAverageTime() {\n return this.sampleSize > 0 ? this.lastSampleTime / this.sampleSize : 0;\n }\n\n // Calculate counts per second for the previous window\n getSampleHz() {\n return this.lastSampleTime > 0 ? this.sampleSize / (this.lastSampleTime / 1000) : 0;\n }\n\n getAverageCount() {\n return this.samples > 0 ? this.count / this.samples : 0;\n }\n\n // Calculate average time / count\n getAverageTime() {\n return this.samples > 0 ? this.time / this.samples : 0;\n }\n\n // Calculate counts per second\n getHz() {\n return this.time > 0 ? this.samples / (this.time / 1000) : 0;\n }\n\n reset() {\n this.time = 0;\n this.count = 0;\n this.samples = 0;\n this.lastTiming = 0;\n this.lastSampleTime = 0;\n this.lastSampleCount = 0;\n this._count = 0;\n this._time = 0;\n this._samples = 0;\n this._startTime = 0;\n this._timerPending = false;\n\n return this;\n }\n\n _checkSampling() {\n if (this._samples === this.sampleSize) {\n this.lastSampleTime = this._time;\n this.lastSampleCount = this._count;\n this.count += this._count;\n this.time += this._time;\n this.samples += this._samples;\n this._time = 0;\n this._count = 0;\n this._samples = 0;\n }\n }\n}\n","export default function getHiResTimestamp() {\n let timestamp;\n\n if (typeof window !== 'undefined' && window.performance) {\n timestamp = window.performance.now();\n } else if (typeof process !== 'undefined' && process.hrtime) {\n const timeParts = process.hrtime();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else {\n timestamp = Date.now();\n }\n\n return timestamp;\n}\n//# sourceMappingURL=hi-res-timestamp.js.map","// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default function getHiResTimestamp() {\n let timestamp;\n // Get best timer available.\n if (typeof window !== 'undefined' && window.performance) {\n timestamp = window.performance.now();\n } else if (typeof process !== 'undefined' && process.hrtime) {\n const timeParts = process.hrtime();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n } else {\n timestamp = Date.now();\n }\n\n return timestamp;\n}\n","import { ConsoleLog } from './loggers';\nexport const DEFAULT_LOADER_OPTIONS = {\n fetch: null,\n mimeType: undefined,\n nothrow: false,\n log: new ConsoleLog(),\n CDN: 'https://unpkg.com/@loaders.gl',\n worker: true,\n maxConcurrency: 3,\n maxMobileConcurrency: 1,\n reuseWorkers: true,\n _workerType: '',\n limit: 0,\n _limitMB: 0,\n batchSize: 'auto',\n batchDebounceMs: 0,\n metadata: false,\n transforms: []\n};\nexport const REMOVED_LOADER_OPTIONS = {\n throws: 'nothrow',\n dataType: '(no longer used)',\n uri: 'baseUri',\n method: 'fetch.method',\n headers: 'fetch.headers',\n body: 'fetch.body',\n mode: 'fetch.mode',\n credentials: 'fetch.credentials',\n cache: 'fetch.cache',\n redirect: 'fetch.redirect',\n referrer: 'fetch.referrer',\n referrerPolicy: 'fetch.referrerPolicy',\n integrity: 'fetch.integrity',\n keepalive: 'fetch.keepalive',\n signal: 'fetch.signal'\n};\n//# sourceMappingURL=option-defaults.js.map","import type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {ConsoleLog} from './loggers';\n\nexport const DEFAULT_LOADER_OPTIONS: LoaderOptions = {\n // baseUri\n fetch: null,\n mimeType: undefined,\n nothrow: false,\n log: new ConsoleLog(), // A probe.gl compatible (`log.log()()` syntax) that just logs to console\n\n CDN: 'https://unpkg.com/@loaders.gl',\n worker: true, // By default, use worker if provided by loader.\n maxConcurrency: 3, // How many worker instances should be created for each loader.\n maxMobileConcurrency: 1, // How many worker instances should be created for each loader on mobile devices.\n reuseWorkers: true, // By default reuse workers,\n _workerType: '', // 'test' to use locally generated workers\n\n limit: 0,\n _limitMB: 0,\n batchSize: 'auto',\n batchDebounceMs: 0,\n metadata: false, // TODO - currently only implemented for parseInBatches, adds initial metadata batch,\n transforms: []\n};\n\nexport const REMOVED_LOADER_OPTIONS = {\n throws: 'nothrow',\n dataType: '(no longer used)',\n uri: 'baseUri',\n // Warn if fetch options are used on top-level\n method: 'fetch.method',\n headers: 'fetch.headers',\n body: 'fetch.body',\n mode: 'fetch.mode',\n credentials: 'fetch.credentials',\n cache: 'fetch.cache',\n redirect: 'fetch.redirect',\n referrer: 'fetch.referrer',\n referrerPolicy: 'fetch.referrerPolicy',\n integrity: 'fetch.integrity',\n keepalive: 'fetch.keepalive',\n signal: 'fetch.signal'\n};\n","import { assert, validateWorkerVersion } from '@loaders.gl/worker-utils';\nimport { parseWithWorker, canParseWithWorker } from '@loaders.gl/loader-utils';\nimport { isLoaderObject } from '../loader-utils/normalize-loader';\nimport { normalizeOptions } from '../loader-utils/option-utils';\nimport { getArrayBufferOrStringFromData } from '../loader-utils/get-data';\nimport { getLoaderContext, getLoadersFromContext } from '../loader-utils/loader-context';\nimport { getResourceUrlAndType } from '../utils/resource-utils';\nimport { selectLoader } from './select-loader';\nexport async function parse(data, loaders, options, context) {\n assert(!context || typeof context === 'object');\n\n if (loaders && !Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = undefined;\n options = loaders;\n loaders = undefined;\n }\n\n data = await data;\n options = options || {};\n const {\n url\n } = getResourceUrlAndType(data);\n const typedLoaders = loaders;\n const candidateLoaders = getLoadersFromContext(typedLoaders, context);\n const loader = await selectLoader(data, candidateLoaders, options);\n\n if (!loader) {\n return null;\n }\n\n options = normalizeOptions(options, loader, candidateLoaders, url);\n context = getLoaderContext({\n url,\n parse,\n loaders: candidateLoaders\n }, options, context);\n return await parseWithLoader(loader, data, options, context);\n}\n\nasync function parseWithLoader(loader, data, options, context) {\n validateWorkerVersion(loader);\n data = await getArrayBufferOrStringFromData(data, loader, options);\n\n if (loader.parseTextSync && typeof data === 'string') {\n options.dataType = 'text';\n return loader.parseTextSync(data, options, context, loader);\n }\n\n if (canParseWithWorker(loader, options)) {\n return await parseWithWorker(loader, data, options, context, parse);\n }\n\n if (loader.parseText && typeof data === 'string') {\n return await loader.parseText(data, options, context, loader);\n }\n\n if (loader.parse) {\n return await loader.parse(data, options, context, loader);\n }\n\n assert(!loader.parseSync);\n throw new Error(`${loader.id} loader - no parser found and worker is disabled`);\n}\n//# sourceMappingURL=parse.js.map","import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {assert, validateWorkerVersion} from '@loaders.gl/worker-utils';\nimport {parseWithWorker, canParseWithWorker} from '@loaders.gl/loader-utils';\nimport {isLoaderObject} from '../loader-utils/normalize-loader';\nimport {normalizeOptions} from '../loader-utils/option-utils';\nimport {getArrayBufferOrStringFromData} from '../loader-utils/get-data';\nimport {getLoaderContext, getLoadersFromContext} from '../loader-utils/loader-context';\nimport {getResourceUrlAndType} from '../utils/resource-utils';\nimport {selectLoader} from './select-loader';\n\n/**\n * Parses `data` using a specified loader\n * @param data\n * @param loaders\n * @param options\n * @param context\n */\nexport async function parse(\n data: DataType | Promise,\n loaders?: Loader | Loader[] | LoaderOptions,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise {\n assert(!context || typeof context === 'object'); // parse no longer accepts final url\n\n // Signature: parse(data, options, context | url)\n // Uses registered loaders\n if (loaders && !Array.isArray(loaders) && !isLoaderObject(loaders)) {\n context = undefined; // context not supported in short signature\n options = loaders as LoaderOptions;\n loaders = undefined;\n }\n\n data = await data; // Resolve any promise\n options = options || {};\n\n // Extract a url for auto detection\n const {url} = getResourceUrlAndType(data);\n\n // Chooses a loader (and normalizes it)\n // Also use any loaders in the context, new loaders take priority\n const typedLoaders = loaders as Loader | Loader[] | undefined;\n const candidateLoaders = getLoadersFromContext(typedLoaders, context);\n // todo hacky type cast\n const loader = await selectLoader(data as ArrayBuffer, candidateLoaders, options);\n // Note: if no loader was found, if so just return null\n if (!loader) {\n return null;\n }\n\n // Normalize options\n options = normalizeOptions(options, loader, candidateLoaders, url);\n\n // Get a context (if already present, will be unchanged)\n context = getLoaderContext({url, parse, loaders: candidateLoaders}, options, context);\n\n return await parseWithLoader(loader, data, options, context);\n}\n\n// TODO: support progress and abort\n// TODO - should accept loader.parseAsyncIterator and concatenate.\nasync function parseWithLoader(loader, data, options, context) {\n validateWorkerVersion(loader);\n\n data = await getArrayBufferOrStringFromData(data, loader, options);\n\n // First check for synchronous text parser, wrap results in promises\n if (loader.parseTextSync && typeof data === 'string') {\n options.dataType = 'text';\n return loader.parseTextSync(data, options, context, loader);\n }\n\n // If we have a workerUrl and the loader can parse the given options efficiently in a worker\n if (canParseWithWorker(loader, options)) {\n return await parseWithWorker(loader, data, options, context, parse);\n }\n\n // Check for asynchronous parser\n if (loader.parseText && typeof data === 'string') {\n return await loader.parseText(data, options, context, loader);\n }\n\n if (loader.parse) {\n return await loader.parse(data, options, context, loader);\n }\n\n // This should not happen, all sync loaders should also offer `parse` function\n assert(!loader.parseSync);\n\n // TBD - If asynchronous parser not available, return null\n throw new Error(`${loader.id} loader - no parser found and worker is disabled`);\n}\n","export function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'loaders.gl assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\n\n/** Throws an `Error` with the optional `message` if `condition` is falsy */\nexport function assert(condition: any, message?: string): void {\n if (!condition) {\n throw new Error(message || 'loaders.gl assertion failed.');\n }\n}\n","import { assert } from '../env-utils/assert';\nimport { VERSION } from '../env-utils/version';\nexport function validateWorkerVersion(worker, coreVersion = VERSION) {\n assert(worker, 'no worker provided');\n const workerVersion = worker.version;\n\n if (!coreVersion || !workerVersion) {\n return false;\n }\n\n return true;\n}\n\nfunction parseVersion(version) {\n const parts = version.split('.').map(Number);\n return {\n major: parts[0],\n minor: parts[1]\n };\n}\n//# sourceMappingURL=validate-worker-version.js.map","import type {WorkerObject} from '../../types';\nimport {assert} from '../env-utils/assert';\nimport {VERSION} from '../env-utils/version';\n\n/**\n * Check if worker is compatible with this library version\n * @param worker\n * @param libVersion\n * @returns `true` if the two versions are compatible\n */\nexport function validateWorkerVersion(\n worker: WorkerObject,\n coreVersion: string = VERSION\n): boolean {\n assert(worker, 'no worker provided');\n\n const workerVersion = worker.version;\n if (!coreVersion || !workerVersion) {\n return false;\n }\n\n // TODO enable when fix the __version__ injection\n // const coreVersions = parseVersion(coreVersion);\n // const workerVersions = parseVersion(workerVersion);\n // assert(\n // coreVersion.major === workerVersion.major && coreVersion.minor <= workerVersion.minor,\n // `worker: ${worker.name} is not compatible. ${coreVersion.major}.${\n // coreVersion.minor\n // }+ is required.`\n // );\n\n return true;\n}\n\n// @ts-ignore\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction parseVersion(version) {\n const parts = version.split('.').map(Number);\n return {major: parts[0], minor: parts[1]};\n}\n","const DEFAULT_VERSION = 'beta';\nexport const VERSION = typeof \"3.1.0-alpha.4\" !== 'undefined' ? \"3.1.0-alpha.4\" : DEFAULT_VERSION;\n\nif (typeof \"3.1.0-alpha.4\" === 'undefined') {\n console.error('loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.');\n}\n//# sourceMappingURL=version.js.map","// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n\n// Change to `latest` on production branches\nconst DEFAULT_VERSION = 'beta';\ndeclare let __VERSION__;\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : DEFAULT_VERSION;\nif (typeof __VERSION__ === 'undefined') {\n // eslint-disable-next-line\n console.error(\n 'loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.'\n );\n}\n","import { WorkerFarm, getWorkerURL } from '@loaders.gl/worker-utils';\nexport function canParseWithWorker(loader, options) {\n if (!WorkerFarm.isSupported()) {\n return false;\n }\n\n return loader.worker && (options === null || options === void 0 ? void 0 : options.worker);\n}\nexport async function parseWithWorker(loader, data, options, context, parseOnMainThread) {\n const name = loader.id;\n const url = getWorkerURL(loader, options);\n const workerFarm = WorkerFarm.getWorkerFarm(options);\n const workerPool = workerFarm.getWorkerPool({\n name,\n url\n });\n options = JSON.parse(JSON.stringify(options));\n const job = await workerPool.startJob('process-on-worker', onMessage.bind(null, parseOnMainThread));\n job.postMessage('process', {\n input: data,\n options\n });\n const result = await job.result;\n return await result.result;\n}\n\nasync function onMessage(parseOnMainThread, job, type, payload) {\n switch (type) {\n case 'done':\n job.done(payload);\n break;\n\n case 'error':\n job.error(payload.error);\n break;\n\n case 'process':\n const {\n id,\n input,\n options\n } = payload;\n\n try {\n const result = await parseOnMainThread(input, options);\n job.postMessage('done', {\n id,\n result\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : 'unknown error';\n job.postMessage('error', {\n id,\n error: message\n });\n }\n\n break;\n\n default:\n console.warn(`parse-with-worker unknown message ${type}`);\n }\n}\n//# sourceMappingURL=parse-with-worker.js.map","import type {WorkerJob, WorkerMessageType, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport type {Loader, LoaderOptions, LoaderContext} from '../../types';\nimport {WorkerFarm, getWorkerURL} from '@loaders.gl/worker-utils';\n\n/**\n * Determines if a loader can parse with worker\n * @param loader\n * @param options\n */\nexport function canParseWithWorker(loader: Loader, options?: LoaderOptions) {\n if (!WorkerFarm.isSupported()) {\n return false;\n }\n\n return loader.worker && options?.worker;\n}\n\n/**\n * this function expects that the worker function sends certain messages,\n * this can be automated if the worker is wrapper by a call to createLoaderWorker in @loaders.gl/loader-utils.\n */\nexport async function parseWithWorker(\n loader: Loader,\n data,\n options?: LoaderOptions,\n context?: LoaderContext,\n parseOnMainThread?: (arrayBuffer: ArrayBuffer, options: {[key: string]: any}) => Promise\n) {\n const name = loader.id; // TODO\n const url = getWorkerURL(loader, options);\n\n const workerFarm = WorkerFarm.getWorkerFarm(options);\n const workerPool = workerFarm.getWorkerPool({name, url});\n\n // options.log object contains functions which cannot be transferred\n // TODO - decide how to handle logging on workers\n options = JSON.parse(JSON.stringify(options));\n\n const job = await workerPool.startJob(\n 'process-on-worker',\n // eslint-disable-next-line\n onMessage.bind(null, parseOnMainThread)\n );\n\n job.postMessage('process', {\n // @ts-ignore\n input: data,\n options\n });\n\n const result = await job.result;\n return await result.result;\n}\n\n/**\n * Handle worker's responses to the main thread\n * @param job\n * @param type\n * @param payload\n */\nasync function onMessage(\n parseOnMainThread,\n job: WorkerJob,\n type: WorkerMessageType,\n payload: WorkerMessagePayload\n) {\n switch (type) {\n case 'done':\n job.done(payload);\n break;\n\n case 'error':\n job.error(payload.error);\n break;\n\n case 'process':\n // Worker is asking for main thread to parseO\n const {id, input, options} = payload;\n try {\n const result = await parseOnMainThread(input, options);\n job.postMessage('done', {id, result});\n } catch (error) {\n const message = error instanceof Error ? error.message : 'unknown error';\n job.postMessage('error', {id, error: message});\n }\n break;\n\n default:\n // eslint-disable-next-line\n console.warn(`parse-with-worker unknown message ${type}`);\n }\n}\n","import { assert } from '../env-utils/assert';\nimport { VERSION as __VERSION__ } from '../env-utils/version';\nconst NPM_TAG = 'beta';\nconst VERSION = typeof \"3.1.0-alpha.4\" !== 'undefined' ? \"3.1.0-alpha.4\" : NPM_TAG;\nexport function getWorkerName(worker) {\n const warning = worker.version !== VERSION ? ` (worker-utils@${VERSION})` : '';\n return `${worker.name}@${worker.version}${warning}`;\n}\nexport function getWorkerURL(worker, options = {}) {\n const workerOptions = options[worker.id] || {};\n const workerFile = `${worker.id}-worker.js`;\n let url = workerOptions.workerUrl;\n\n if (options._workerType === 'test') {\n url = `modules/${worker.module}/dist/${workerFile}`;\n }\n\n if (!url) {\n let version = worker.version;\n\n if (version === 'latest') {\n version = NPM_TAG;\n }\n\n const versionTag = version ? `@${version}` : '';\n url = `https://unpkg.com/@loaders.gl/${worker.module}${versionTag}/dist/${workerFile}`;\n }\n\n assert(url);\n return url;\n}\n//# sourceMappingURL=get-worker-url.js.map","import type {WorkerObject, WorkerOptions} from '../../types';\nimport {assert} from '../env-utils/assert';\nimport {VERSION as __VERSION__} from '../env-utils/version';\n\nconst NPM_TAG = 'beta'; // Change to 'latest' on release-branch\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : NPM_TAG;\n\n/**\n * Gets worker object's name (for debugging in Chrome thread inspector window)\n */\nexport function getWorkerName(worker: WorkerObject): string {\n const warning = worker.version !== VERSION ? ` (worker-utils@${VERSION})` : '';\n return `${worker.name}@${worker.version}${warning}`;\n}\n\n/**\n * Generate a worker URL based on worker object and options\n * @returns A URL to one of the following:\n * - a published worker on unpkg CDN\n * - a local test worker\n * - a URL provided by the user in options\n */\nexport function getWorkerURL(worker: WorkerObject, options: WorkerOptions = {}): string {\n const workerOptions = options[worker.id] || {};\n\n const workerFile = `${worker.id}-worker.js`;\n\n let url = workerOptions.workerUrl;\n\n // If URL is test, generate local loaders.gl url\n // @ts-ignore _workerType\n if (options._workerType === 'test') {\n url = `modules/${worker.module}/dist/${workerFile}`;\n }\n\n // If url override is not provided, generate a URL to published version on npm CDN unpkg.com\n if (!url) {\n // GENERATE\n let version = worker.version;\n // On master we need to load npm alpha releases published with the `beta` tag\n if (version === 'latest') {\n // throw new Error('latest worker version specified');\n version = NPM_TAG;\n }\n const versionTag = version ? `@${version}` : '';\n url = `https://unpkg.com/@loaders.gl/${worker.module}${versionTag}/dist/${workerFile}`;\n }\n\n assert(url);\n\n // Allow user to override location\n return url;\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport WorkerPool from './worker-pool';\nimport WorkerThread from './worker-thread';\nconst DEFAULT_PROPS = {\n maxConcurrency: 3,\n maxMobileConcurrency: 1,\n onDebug: () => {},\n reuseWorkers: true\n};\nexport default class WorkerFarm {\n static isSupported() {\n return WorkerThread.isSupported();\n }\n\n static getWorkerFarm(props = {}) {\n WorkerFarm._workerFarm = WorkerFarm._workerFarm || new WorkerFarm({});\n\n WorkerFarm._workerFarm.setProps(props);\n\n return WorkerFarm._workerFarm;\n }\n\n constructor(props) {\n _defineProperty(this, \"props\", void 0);\n\n _defineProperty(this, \"workerPools\", new Map());\n\n this.props = { ...DEFAULT_PROPS\n };\n this.setProps(props);\n this.workerPools = new Map();\n }\n\n destroy() {\n for (const workerPool of this.workerPools.values()) {\n workerPool.destroy();\n }\n }\n\n setProps(props) {\n this.props = { ...this.props,\n ...props\n };\n\n for (const workerPool of this.workerPools.values()) {\n workerPool.setProps(this._getWorkerPoolProps());\n }\n }\n\n getWorkerPool(options) {\n const {\n name,\n source,\n url\n } = options;\n let workerPool = this.workerPools.get(name);\n\n if (!workerPool) {\n workerPool = new WorkerPool({\n name,\n source,\n url\n });\n workerPool.setProps(this._getWorkerPoolProps());\n this.workerPools.set(name, workerPool);\n }\n\n return workerPool;\n }\n\n _getWorkerPoolProps() {\n return {\n maxConcurrency: this.props.maxConcurrency,\n maxMobileConcurrency: this.props.maxMobileConcurrency,\n reuseWorkers: this.props.reuseWorkers,\n onDebug: this.props.onDebug\n };\n }\n\n}\n\n_defineProperty(WorkerFarm, \"_workerFarm\", void 0);\n//# sourceMappingURL=worker-farm.js.map","import WorkerPool from './worker-pool';\nimport WorkerThread from './worker-thread';\n\n/**\n * @param maxConcurrency {number} - max count of workers\n */\nexport type WorkerFarmProps = {\n maxConcurrency?: number;\n maxMobileConcurrency?: number;\n reuseWorkers?: boolean;\n onDebug?: () => void;\n};\n\nconst DEFAULT_PROPS: WorkerFarmProps = {\n maxConcurrency: 3,\n maxMobileConcurrency: 1,\n onDebug: () => {},\n reuseWorkers: true\n};\n\n/**\n * Process multiple jobs with a \"farm\" of different workers in worker pools.\n */\nexport default class WorkerFarm {\n private props: WorkerFarmProps;\n private workerPools = new Map();\n // singleton\n private static _workerFarm?: WorkerFarm;\n\n /** Check if Workers are supported */\n static isSupported(): boolean {\n return WorkerThread.isSupported();\n }\n\n /** Get the singleton instance of the global worker farm */\n static getWorkerFarm(props: WorkerFarmProps = {}): WorkerFarm {\n WorkerFarm._workerFarm = WorkerFarm._workerFarm || new WorkerFarm({});\n WorkerFarm._workerFarm.setProps(props);\n return WorkerFarm._workerFarm;\n }\n\n /** get global instance with WorkerFarm.getWorkerFarm() */\n private constructor(props: WorkerFarmProps) {\n this.props = {...DEFAULT_PROPS};\n this.setProps(props);\n /** @type Map} */\n this.workerPools = new Map();\n }\n\n /**\n * Terminate all workers in the farm\n * @note Can free up significant memory\n */\n destroy(): void {\n for (const workerPool of this.workerPools.values()) {\n workerPool.destroy();\n }\n }\n\n /**\n * Set props used when initializing worker pools\n * @param props\n */\n setProps(props: WorkerFarmProps): void {\n this.props = {...this.props, ...props};\n // Update worker pool props\n for (const workerPool of this.workerPools.values()) {\n workerPool.setProps(this._getWorkerPoolProps());\n }\n }\n\n /**\n * Returns a worker pool for the specified worker\n * @param options - only used first time for a specific worker name\n * @param options.name - the name of the worker - used to identify worker pool\n * @param options.url -\n * @param options.source -\n * @example\n * const job = WorkerFarm.getWorkerFarm().getWorkerPool({name, url}).startJob(...);\n */\n getWorkerPool(options: {name: string; source?: string; url?: string}): WorkerPool {\n const {name, source, url} = options;\n let workerPool = this.workerPools.get(name);\n if (!workerPool) {\n workerPool = new WorkerPool({\n name,\n source,\n url\n });\n workerPool.setProps(this._getWorkerPoolProps());\n this.workerPools.set(name, workerPool);\n }\n return workerPool;\n }\n\n _getWorkerPoolProps() {\n return {\n maxConcurrency: this.props.maxConcurrency,\n maxMobileConcurrency: this.props.maxMobileConcurrency,\n reuseWorkers: this.props.reuseWorkers,\n onDebug: this.props.onDebug\n };\n }\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isMobile } from '../env-utils/globals';\nimport WorkerThread from './worker-thread';\nimport WorkerJob from './worker-job';\nexport default class WorkerPool {\n constructor(props) {\n _defineProperty(this, \"name\", 'unnamed');\n\n _defineProperty(this, \"source\", void 0);\n\n _defineProperty(this, \"url\", void 0);\n\n _defineProperty(this, \"maxConcurrency\", 1);\n\n _defineProperty(this, \"maxMobileConcurrency\", 1);\n\n _defineProperty(this, \"onDebug\", () => {});\n\n _defineProperty(this, \"reuseWorkers\", true);\n\n _defineProperty(this, \"props\", {});\n\n _defineProperty(this, \"jobQueue\", []);\n\n _defineProperty(this, \"idleQueue\", []);\n\n _defineProperty(this, \"count\", 0);\n\n _defineProperty(this, \"isDestroyed\", false);\n\n this.source = props.source;\n this.url = props.url;\n this.setProps(props);\n }\n\n destroy() {\n this.idleQueue.forEach(worker => worker.destroy());\n this.isDestroyed = true;\n }\n\n setProps(props) {\n this.props = { ...this.props,\n ...props\n };\n\n if (props.name !== undefined) {\n this.name = props.name;\n }\n\n if (props.maxConcurrency !== undefined) {\n this.maxConcurrency = props.maxConcurrency;\n }\n\n if (props.maxMobileConcurrency !== undefined) {\n this.maxMobileConcurrency = props.maxMobileConcurrency;\n }\n\n if (props.reuseWorkers !== undefined) {\n this.reuseWorkers = props.reuseWorkers;\n }\n\n if (props.onDebug !== undefined) {\n this.onDebug = props.onDebug;\n }\n }\n\n async startJob(name, onMessage = (job, type, data) => job.done(data), onError = (job, error) => job.error(error)) {\n const startPromise = new Promise(onStart => {\n this.jobQueue.push({\n name,\n onMessage,\n onError,\n onStart\n });\n return this;\n });\n\n this._startQueuedJob();\n\n return await startPromise;\n }\n\n async _startQueuedJob() {\n if (!this.jobQueue.length) {\n return;\n }\n\n const workerThread = this._getAvailableWorker();\n\n if (!workerThread) {\n return;\n }\n\n const queuedJob = this.jobQueue.shift();\n\n if (queuedJob) {\n this.onDebug({\n message: 'Starting job',\n name: queuedJob.name,\n workerThread,\n backlog: this.jobQueue.length\n });\n const job = new WorkerJob(queuedJob.name, workerThread);\n\n workerThread.onMessage = data => queuedJob.onMessage(job, data.type, data.payload);\n\n workerThread.onError = error => queuedJob.onError(job, error);\n\n queuedJob.onStart(job);\n\n try {\n await job.result;\n } finally {\n this.returnWorkerToQueue(workerThread);\n }\n }\n }\n\n returnWorkerToQueue(worker) {\n const shouldDestroyWorker = this.isDestroyed || !this.reuseWorkers || this.count > this._getMaxConcurrency();\n\n if (shouldDestroyWorker) {\n worker.destroy();\n this.count--;\n } else {\n this.idleQueue.push(worker);\n }\n\n if (!this.isDestroyed) {\n this._startQueuedJob();\n }\n }\n\n _getAvailableWorker() {\n if (this.idleQueue.length > 0) {\n return this.idleQueue.shift() || null;\n }\n\n if (this.count < this._getMaxConcurrency()) {\n this.count++;\n const name = `${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`;\n return new WorkerThread({\n name,\n source: this.source,\n url: this.url\n });\n }\n\n return null;\n }\n\n _getMaxConcurrency() {\n return isMobile ? this.maxMobileConcurrency : this.maxConcurrency;\n }\n\n}\n//# sourceMappingURL=worker-pool.js.map","import type {WorkerMessageType, WorkerMessagePayload} from '../../types';\nimport {isMobile} from '../env-utils/globals';\nimport WorkerThread from './worker-thread';\nimport WorkerJob from './worker-job';\n\n/** WorkerPool onDebug Callback Parameters */\ntype OnDebugParameters = {\n message: string;\n worker: string;\n name: string;\n job: string;\n backlog: number;\n workerThread: WorkerThread;\n};\n\n/** WorkerPool Properties */\nexport type WorkerPoolProps = {\n name?: string;\n source?: string; // | Function;\n url?: string;\n maxConcurrency?: number;\n maxMobileConcurrency?: number;\n onDebug?: (options: OnDebugParameters) => any;\n reuseWorkers?: boolean;\n};\n\n/** Private helper types */\ntype OnMessage = (job: WorkerJob, type: WorkerMessageType, payload: WorkerMessagePayload) => void;\ntype OnError = (job: WorkerJob, error: Error) => void;\n\ntype QueuedJob = {\n name: string;\n onMessage: OnMessage;\n onError: OnError;\n onStart: (value: any) => void; // Resolve job start promise\n};\n\n/**\n * Process multiple data messages with small pool of identical workers\n */\nexport default class WorkerPool {\n name: string = 'unnamed';\n source?: string; // | Function;\n url?: string;\n maxConcurrency: number = 1;\n maxMobileConcurrency: number = 1;\n onDebug: (options: OnDebugParameters) => any = () => {};\n reuseWorkers: boolean = true;\n\n private props: WorkerPoolProps = {};\n private jobQueue: QueuedJob[] = [];\n private idleQueue: WorkerThread[] = [];\n private count = 0;\n private isDestroyed = false;\n\n /**\n * @param processor - worker function\n * @param maxConcurrency - max count of workers\n */\n constructor(props: WorkerPoolProps) {\n this.source = props.source;\n this.url = props.url;\n this.setProps(props);\n }\n\n /**\n * Terminates all workers in the pool\n * @note Can free up significant memory\n */\n destroy(): void {\n // Destroy idle workers, active Workers will be destroyed on completion\n this.idleQueue.forEach((worker) => worker.destroy());\n this.isDestroyed = true;\n }\n\n setProps(props: WorkerPoolProps) {\n this.props = {...this.props, ...props};\n\n if (props.name !== undefined) {\n this.name = props.name;\n }\n if (props.maxConcurrency !== undefined) {\n this.maxConcurrency = props.maxConcurrency;\n }\n if (props.maxMobileConcurrency !== undefined) {\n this.maxMobileConcurrency = props.maxMobileConcurrency;\n }\n if (props.reuseWorkers !== undefined) {\n this.reuseWorkers = props.reuseWorkers;\n }\n if (props.onDebug !== undefined) {\n this.onDebug = props.onDebug;\n }\n }\n\n async startJob(\n name: string,\n onMessage: OnMessage = (job, type, data) => job.done(data),\n onError: OnError = (job, error) => job.error(error)\n ): Promise {\n // Promise resolves when thread starts working on this job\n const startPromise = new Promise((onStart) => {\n // Promise resolves when thread completes or fails working on this job\n this.jobQueue.push({name, onMessage, onError, onStart});\n return this;\n });\n this._startQueuedJob(); // eslint-disable-line @typescript-eslint/no-floating-promises\n return await startPromise;\n }\n\n // PRIVATE\n\n /**\n * Starts first queued job if worker is available or can be created\n * Called when job is started and whenever a worker returns to the idleQueue\n */\n async _startQueuedJob(): Promise {\n if (!this.jobQueue.length) {\n return;\n }\n\n const workerThread = this._getAvailableWorker();\n if (!workerThread) {\n return;\n }\n\n // We have a worker, dequeue and start the job\n const queuedJob = this.jobQueue.shift();\n if (queuedJob) {\n // Emit a debug event\n // @ts-ignore\n this.onDebug({\n message: 'Starting job',\n name: queuedJob.name,\n workerThread,\n backlog: this.jobQueue.length\n });\n\n // Create a worker job to let the app access thread and manage job completion\n const job = new WorkerJob(queuedJob.name, workerThread);\n\n // Set the worker thread's message handlers\n workerThread.onMessage = (data) => queuedJob.onMessage(job, data.type, data.payload);\n workerThread.onError = (error) => queuedJob.onError(job, error);\n\n // Resolve the start promise so that the app can start sending messages to worker\n queuedJob.onStart(job);\n\n // Wait for the app to signal that the job is complete, then return worker to queue\n try {\n await job.result;\n } finally {\n this.returnWorkerToQueue(workerThread);\n }\n }\n }\n\n /**\n * Returns a worker to the idle queue\n * Destroys the worker if\n * - pool is destroyed\n * - if this pool doesn't reuse workers\n * - if maxConcurrency has been lowered\n * @param worker\n */\n returnWorkerToQueue(worker: WorkerThread) {\n const shouldDestroyWorker =\n this.isDestroyed || !this.reuseWorkers || this.count > this._getMaxConcurrency();\n\n if (shouldDestroyWorker) {\n worker.destroy();\n this.count--;\n } else {\n this.idleQueue.push(worker);\n }\n\n if (!this.isDestroyed) {\n this._startQueuedJob(); // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n }\n\n /**\n * Returns idle worker or creates new worker if maxConcurrency has not been reached\n */\n _getAvailableWorker(): WorkerThread | null {\n // If a worker has completed and returned to the queue, it can be used\n if (this.idleQueue.length > 0) {\n return this.idleQueue.shift() || null;\n }\n\n // Create fresh worker if we haven't yet created the max amount of worker threads for this worker source\n if (this.count < this._getMaxConcurrency()) {\n this.count++;\n const name = `${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`;\n return new WorkerThread({name, source: this.source, url: this.url});\n }\n\n // No worker available, have to wait\n return null;\n }\n\n _getMaxConcurrency() {\n return isMobile ? this.maxMobileConcurrency : this.maxConcurrency;\n }\n}\n","const globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\nconst self_ = globals.self || globals.window || globals.global || {};\nconst window_ = globals.window || globals.self || globals.global || {};\nconst global_ = globals.global || globals.self || globals.window || {};\nconst document_ = globals.document || {};\nexport { self_ as self, window_ as window, global_ as global, document_ as document };\nexport const isBrowser = typeof process !== 'object' || String(process) !== '[object process]' || process.browser;\nexport const isWorker = typeof importScripts === 'function';\nexport const isMobile = typeof window !== 'undefined' && typeof window.orientation !== 'undefined';\nconst matches = typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\nexport const nodeVersion = matches && parseFloat(matches[1]) || 0;\n//# sourceMappingURL=globals.js.map","// Purpose: include this in your module to avoids adding dependencies on\n// micro modules like 'global' and 'is-browser';\n\n/* eslint-disable no-restricted-globals */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\n\nconst self_: {[key: string]: any} = globals.self || globals.window || globals.global || {};\nconst window_: {[key: string]: any} = globals.window || globals.self || globals.global || {};\nconst global_: {[key: string]: any} = globals.global || globals.self || globals.window || {};\nconst document_: {[key: string]: any} = globals.document || {};\n\nexport {self_ as self, window_ as window, global_ as global, document_ as document};\n\n/** true if running in the browser, false if running in Node.js */\nexport const isBrowser: boolean =\n // @ts-ignore process.browser\n typeof process !== 'object' || String(process) !== '[object process]' || process.browser;\n\n/** true if running on a worker thread */\nexport const isWorker: boolean = typeof importScripts === 'function';\n\n/** true if running on a mobile device */\nexport const isMobile: boolean =\n typeof window !== 'undefined' && typeof window.orientation !== 'undefined';\n\n// Extract node major version\nconst matches =\n typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\n\n/** Version of Node.js if running under Node, otherwise 0 */\nexport const nodeVersion: number = (matches && parseFloat(matches[1])) || 0;\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { assert } from '../env-utils/assert';\nimport { getLoadableWorkerURL } from '../worker-utils/get-loadable-worker-url';\nimport { getTransferList } from '../worker-utils/get-transfer-list';\n\nconst NOOP = () => {};\n\nexport default class WorkerThread {\n static isSupported() {\n return typeof Worker !== 'undefined';\n }\n\n constructor(props) {\n _defineProperty(this, \"name\", void 0);\n\n _defineProperty(this, \"source\", void 0);\n\n _defineProperty(this, \"url\", void 0);\n\n _defineProperty(this, \"terminated\", false);\n\n _defineProperty(this, \"worker\", void 0);\n\n _defineProperty(this, \"onMessage\", void 0);\n\n _defineProperty(this, \"onError\", void 0);\n\n _defineProperty(this, \"_loadableURL\", '');\n\n const {\n name,\n source,\n url\n } = props;\n assert(source || url);\n this.name = name;\n this.source = source;\n this.url = url;\n this.onMessage = NOOP;\n\n this.onError = error => console.log(error);\n\n this.worker = this._createBrowserWorker();\n }\n\n destroy() {\n this.onMessage = NOOP;\n this.onError = NOOP;\n this.worker.terminate();\n this.terminated = true;\n }\n\n get isRunning() {\n return Boolean(this.onMessage);\n }\n\n postMessage(data, transferList) {\n transferList = transferList || getTransferList(data);\n this.worker.postMessage(data, transferList);\n }\n\n _getErrorFromErrorEvent(event) {\n let message = 'Failed to load ';\n message += `worker ${this.name} from ${this.url}. `;\n\n if (event.message) {\n message += `${event.message} in `;\n }\n\n if (event.lineno) {\n message += `:${event.lineno}:${event.colno}`;\n }\n\n return new Error(message);\n }\n\n _createBrowserWorker() {\n this._loadableURL = getLoadableWorkerURL({\n source: this.source,\n url: this.url\n });\n const worker = new Worker(this._loadableURL, {\n name: this.name\n });\n\n worker.onmessage = event => {\n if (!event.data) {\n this.onError(new Error('No data received'));\n } else {\n this.onMessage(event.data);\n }\n };\n\n worker.onerror = error => {\n this.onError(this._getErrorFromErrorEvent(error));\n this.terminated = true;\n };\n\n worker.onmessageerror = event => console.error(event);\n\n return worker;\n }\n\n}\n//# sourceMappingURL=worker-thread.js.map","import {assert} from '../env-utils/assert';\nimport {getLoadableWorkerURL} from '../worker-utils/get-loadable-worker-url';\nimport {getTransferList} from '../worker-utils/get-transfer-list';\n\nconst NOOP = () => {};\n\nexport type WorkerThreadProps = {\n name: string;\n source?: string;\n url?: string;\n};\n\n/**\n * Represents one worker thread\n */\nexport default class WorkerThread {\n readonly name: string;\n readonly source: string | undefined;\n readonly url: string | undefined;\n terminated: boolean = false;\n worker: Worker;\n onMessage: (message: any) => void;\n onError: (error: Error) => void;\n\n private _loadableURL: string = '';\n\n static isSupported(): boolean {\n return typeof Worker !== 'undefined';\n }\n\n constructor(props: WorkerThreadProps) {\n const {name, source, url} = props;\n assert(source || url); // Either source or url must be defined\n this.name = name;\n this.source = source;\n this.url = url;\n this.onMessage = NOOP;\n this.onError = (error) => console.log(error); // eslint-disable-line\n\n this.worker = this._createBrowserWorker();\n }\n\n /**\n * Terminate this worker thread\n * @note Can free up significant memory\n */\n destroy(): void {\n this.onMessage = NOOP;\n this.onError = NOOP;\n // @ts-ignore\n this.worker.terminate();\n this.terminated = true;\n }\n\n get isRunning() {\n return Boolean(this.onMessage);\n }\n\n /**\n * Send a message to this worker thread\n * @param data any data structure, ideally consisting mostly of transferrable objects\n * @param transferList If not supplied, calculated automatically by traversing data\n */\n postMessage(data: any, transferList?: any[]): void {\n transferList = transferList || getTransferList(data);\n // @ts-ignore\n this.worker.postMessage(data, transferList);\n }\n\n // PRIVATE\n\n /**\n * Generate a standard Error from an ErrorEvent\n * @param {ErrorEvent} event\n */\n _getErrorFromErrorEvent(event) {\n // Note Error object does not have the expected fields if loading failed completely\n // https://developer.mozilla.org/en-US/docs/Web/API/Worker#Event_handlers\n // https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent\n let message = 'Failed to load ';\n message += `worker ${this.name} from ${this.url}. `;\n if (event.message) {\n message += `${event.message} in `;\n }\n // const hasFilename = event.filename && !event.filename.startsWith('blob:');\n // message += hasFilename ? event.filename : this.source.slice(0, 100);\n if (event.lineno) {\n message += `:${event.lineno}:${event.colno}`;\n }\n return new Error(message);\n }\n\n /**\n * Creates a worker thread on the browser\n */\n _createBrowserWorker() {\n this._loadableURL = getLoadableWorkerURL({source: this.source, url: this.url});\n const worker = new Worker(this._loadableURL, {name: this.name});\n\n worker.onmessage = (event) => {\n if (!event.data) {\n this.onError(new Error('No data received'));\n } else {\n this.onMessage(event.data);\n }\n };\n // This callback represents an uncaught exception in the worker thread\n worker.onerror = (error) => {\n this.onError(this._getErrorFromErrorEvent(error));\n this.terminated = true;\n };\n // TODO - not clear when this would be called, for now just log in case it happens\n worker.onmessageerror = (event) => console.error(event); // eslint-disable-line\n\n return worker;\n }\n}\n","import { assert } from '../env-utils/assert';\nconst workerURLCache = new Map();\nexport function getLoadableWorkerURL(props) {\n assert(props.source && !props.url || !props.source && props.url);\n let workerURL = workerURLCache.get(props.source || props.url);\n\n if (!workerURL) {\n if (props.url) {\n workerURL = getLoadableWorkerURLFromURL(props.url);\n workerURLCache.set(props.url, workerURL);\n }\n\n if (props.source) {\n workerURL = getLoadableWorkerURLFromSource(props.source);\n workerURLCache.set(props.source, workerURL);\n }\n }\n\n assert(workerURL);\n return workerURL;\n}\n\nfunction getLoadableWorkerURLFromURL(url) {\n if (!url.startsWith('http')) {\n return url;\n }\n\n const workerSource = buildScriptSource(url);\n return getLoadableWorkerURLFromSource(workerSource);\n}\n\nfunction getLoadableWorkerURLFromSource(workerSource) {\n const blob = new Blob([workerSource], {\n type: 'application/javascript'\n });\n return URL.createObjectURL(blob);\n}\n\nfunction buildScriptSource(workerUrl) {\n return `\\\ntry {\n importScripts('${workerUrl}');\n} catch (error) {\n console.error(error);\n throw error;\n}`;\n}\n//# sourceMappingURL=get-loadable-worker-url.js.map","import {assert} from '../env-utils/assert';\n\nconst workerURLCache = new Map();\n\n/**\n * Creates a loadable URL from worker source or URL\n * that can be used to create `Worker` instances.\n * Due to CORS issues it may be necessary to wrap a URL in a small importScripts\n * @param props\n * @param props.source Worker source\n * @param props.url Worker URL\n * @returns loadable url\n */\nexport function getLoadableWorkerURL(props: {source?: string; url?: string}) {\n assert((props.source && !props.url) || (!props.source && props.url)); // Either source or url must be defined\n\n let workerURL = workerURLCache.get(props.source || props.url);\n if (!workerURL) {\n // Differentiate worker urls from worker source code\n if (props.url) {\n workerURL = getLoadableWorkerURLFromURL(props.url);\n workerURLCache.set(props.url, workerURL);\n }\n\n if (props.source) {\n workerURL = getLoadableWorkerURLFromSource(props.source);\n workerURLCache.set(props.source, workerURL);\n }\n }\n\n assert(workerURL);\n return workerURL;\n}\n\n/**\n * Build a loadable worker URL from worker URL\n * @param url\n * @returns loadable URL\n */\nfunction getLoadableWorkerURLFromURL(url: string): string {\n // A local script url, we can use it to initialize a Worker directly\n if (!url.startsWith('http')) {\n return url;\n }\n\n // A remote script, we need to use `importScripts` to load from different origin\n const workerSource = buildScriptSource(url);\n return getLoadableWorkerURLFromSource(workerSource);\n}\n\n/**\n * Build a loadable worker URL from worker source\n * @param workerSource\n * @returns loadable url\n */\nfunction getLoadableWorkerURLFromSource(workerSource: string): string {\n // NOTE: webworkify was previously used\n // const blob = webworkify(workerSource, {bare: true});\n const blob = new Blob([workerSource], {type: 'application/javascript'});\n return URL.createObjectURL(blob);\n}\n\n/**\n * Per spec, worker cannot be initialized with a script from a different origin\n * However a local worker script can still import scripts from other origins,\n * so we simply build a wrapper script.\n *\n * @param workerUrl\n * @returns source\n */\nfunction buildScriptSource(workerUrl: string): string {\n return `\\\ntry {\n importScripts('${workerUrl}');\n} catch (error) {\n console.error(error);\n throw error;\n}`;\n}\n","export function getTransferList(object, recursive = true, transfers) {\n const transfersSet = transfers || new Set();\n\n if (!object) {} else if (isTransferable(object)) {\n transfersSet.add(object);\n } else if (isTransferable(object.buffer)) {\n transfersSet.add(object.buffer);\n } else if (ArrayBuffer.isView(object)) {} else if (recursive && typeof object === 'object') {\n for (const key in object) {\n getTransferList(object[key], recursive, transfersSet);\n }\n }\n\n return transfers === undefined ? Array.from(transfersSet) : [];\n}\n\nfunction isTransferable(object) {\n if (!object) {\n return false;\n }\n\n if (object instanceof ArrayBuffer) {\n return true;\n }\n\n if (typeof MessagePort !== 'undefined' && object instanceof MessagePort) {\n return true;\n }\n\n if (typeof ImageBitmap !== 'undefined' && object instanceof ImageBitmap) {\n return true;\n }\n\n if (typeof OffscreenCanvas !== 'undefined' && object instanceof OffscreenCanvas) {\n return true;\n }\n\n return false;\n}\n//# sourceMappingURL=get-transfer-list.js.map","// NOTE - there is a copy of this function is both in core and loader-utils\n// core does not need all the utils in loader-utils, just this one.\n\n/**\n * Returns an array of Transferrable objects that can be used with postMessage\n * https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage\n * @param object data to be sent via postMessage\n * @param recursive - not for application use\n * @param transfers - not for application use\n * @returns a transfer list that can be passed to postMessage\n */\nexport function getTransferList(\n object: any,\n recursive: boolean = true,\n transfers?: Set\n): Transferable[] {\n // Make sure that items in the transfer list is unique\n const transfersSet = transfers || new Set();\n\n if (!object) {\n // ignore\n } else if (isTransferable(object)) {\n transfersSet.add(object);\n } else if (isTransferable(object.buffer)) {\n // Typed array\n transfersSet.add(object.buffer);\n } else if (ArrayBuffer.isView(object)) {\n // object is a TypeArray viewing into a SharedArrayBuffer (not transferable)\n // Do not iterate through the content in this case\n } else if (recursive && typeof object === 'object') {\n for (const key in object) {\n // Avoid perf hit - only go one level deep\n getTransferList(object[key], recursive, transfersSet);\n }\n }\n\n // If transfers is defined, is internal recursive call\n // Otherwise it's called by the user\n return transfers === undefined ? Array.from(transfersSet) : [];\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Transferable\nfunction isTransferable(object) {\n if (!object) {\n return false;\n }\n if (object instanceof ArrayBuffer) {\n return true;\n }\n if (typeof MessagePort !== 'undefined' && object instanceof MessagePort) {\n return true;\n }\n if (typeof ImageBitmap !== 'undefined' && object instanceof ImageBitmap) {\n return true;\n }\n // @ts-ignore\n if (typeof OffscreenCanvas !== 'undefined' && object instanceof OffscreenCanvas) {\n return true;\n }\n return false;\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { assert } from '../env-utils/assert';\nexport default class WorkerJob {\n constructor(jobName, workerThread) {\n _defineProperty(this, \"name\", void 0);\n\n _defineProperty(this, \"workerThread\", void 0);\n\n _defineProperty(this, \"isRunning\", void 0);\n\n _defineProperty(this, \"result\", void 0);\n\n _defineProperty(this, \"_resolve\", void 0);\n\n _defineProperty(this, \"_reject\", void 0);\n\n this.name = jobName;\n this.workerThread = workerThread;\n this.isRunning = true;\n\n this._resolve = () => {};\n\n this._reject = () => {};\n\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n postMessage(type, payload) {\n this.workerThread.postMessage({\n source: 'loaders.gl',\n type,\n payload\n });\n }\n\n done(value) {\n assert(this.isRunning);\n this.isRunning = false;\n\n this._resolve(value);\n }\n\n error(error) {\n assert(this.isRunning);\n this.isRunning = false;\n\n this._reject(error);\n }\n\n}\n//# sourceMappingURL=worker-job.js.map","import type {WorkerMessageType, WorkerMessagePayload} from '../../types';\nimport WorkerThread from './worker-thread';\nimport {assert} from '../env-utils/assert';\n\n/**\n * Represents one Job handled by a WorkerPool or WorkerFarm\n */\nexport default class WorkerJob {\n readonly name: string;\n readonly workerThread: WorkerThread;\n isRunning: boolean;\n /** Promise that resolves when Job is done */\n readonly result: Promise;\n\n private _resolve: (value: any) => void;\n private _reject: (reason?: any) => void;\n\n constructor(jobName: string, workerThread: WorkerThread) {\n this.name = jobName;\n this.workerThread = workerThread;\n this.isRunning = true;\n this._resolve = () => {};\n this._reject = () => {};\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n /**\n * Send a message to the job's worker thread\n * @param data any data structure, ideally consisting mostly of transferrable objects\n */\n postMessage(type: WorkerMessageType, payload: WorkerMessagePayload): void {\n this.workerThread.postMessage({\n source: 'loaders.gl', // Lets worker ignore unrelated messages\n type,\n payload\n });\n }\n\n /**\n * Call to resolve the `result` Promise with the supplied value\n */\n done(value): void {\n assert(this.isRunning);\n this.isRunning = false;\n this._resolve(value);\n }\n\n /**\n * Call to reject the `result` Promise with the supplied error\n */\n error(error): void {\n assert(this.isRunning);\n this.isRunning = false;\n this._reject(error);\n }\n}\n","import { concatenateArrayBuffersAsync } from '@loaders.gl/loader-utils';\nimport { isResponse, isReadableStream, isAsyncIterable, isIterable, isIterator, isBlob, isBuffer } from '../../javascript-utils/is-type';\nimport { makeIterator } from '../../iterators/make-iterator/make-iterator';\nimport { checkResponse, makeResponse } from '../utils/response-utils';\nconst ERR_DATA = 'Cannot convert supplied data type';\nexport function getArrayBufferOrStringFromDataSync(data, loader, options) {\n if (loader.text && typeof data === 'string') {\n return data;\n }\n\n if (isBuffer(data)) {\n data = data.buffer;\n }\n\n if (data instanceof ArrayBuffer) {\n const arrayBuffer = data;\n\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(arrayBuffer);\n }\n\n return arrayBuffer;\n }\n\n if (ArrayBuffer.isView(data)) {\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(data);\n }\n\n let arrayBuffer = data.buffer;\n const byteLength = data.byteLength || data.length;\n\n if (data.byteOffset !== 0 || byteLength !== arrayBuffer.byteLength) {\n arrayBuffer = arrayBuffer.slice(data.byteOffset, data.byteOffset + byteLength);\n }\n\n return arrayBuffer;\n }\n\n throw new Error(ERR_DATA);\n}\nexport async function getArrayBufferOrStringFromData(data, loader, options) {\n const isArrayBuffer = data instanceof ArrayBuffer || ArrayBuffer.isView(data);\n\n if (typeof data === 'string' || isArrayBuffer) {\n return getArrayBufferOrStringFromDataSync(data, loader, options);\n }\n\n if (isBlob(data)) {\n data = await makeResponse(data);\n }\n\n if (isResponse(data)) {\n const response = data;\n await checkResponse(response);\n return loader.binary ? await response.arrayBuffer() : await response.text();\n }\n\n if (isReadableStream(data)) {\n data = makeIterator(data, options);\n }\n\n if (isIterable(data) || isAsyncIterable(data)) {\n return concatenateArrayBuffersAsync(data);\n }\n\n throw new Error(ERR_DATA);\n}\nexport async function getAsyncIterableFromData(data, options) {\n if (isIterator(data)) {\n return data;\n }\n\n if (isResponse(data)) {\n const response = data;\n await checkResponse(response);\n const body = await response.body;\n return makeIterator(body, options);\n }\n\n if (isBlob(data) || isReadableStream(data)) {\n return makeIterator(data, options);\n }\n\n if (isAsyncIterable(data)) {\n return data[Symbol.asyncIterator]();\n }\n\n return getIterableFromData(data);\n}\nexport async function getReadableStream(data) {\n if (isReadableStream(data)) {\n return data;\n }\n\n if (isResponse(data)) {\n return data.body;\n }\n\n const response = await makeResponse(data);\n return response.body;\n}\n\nfunction getIterableFromData(data) {\n if (ArrayBuffer.isView(data)) {\n return function* oneChunk() {\n yield data.buffer;\n }();\n }\n\n if (data instanceof ArrayBuffer) {\n return function* oneChunk() {\n yield data;\n }();\n }\n\n if (isIterator(data)) {\n return data;\n }\n\n if (isIterable(data)) {\n return data[Symbol.iterator]();\n }\n\n throw new Error(ERR_DATA);\n}\n//# sourceMappingURL=get-data.js.map","import type {\n DataType,\n SyncDataType,\n BatchableDataType,\n Loader,\n LoaderOptions\n} from '@loaders.gl/loader-utils';\nimport {concatenateArrayBuffersAsync} from '@loaders.gl/loader-utils';\nimport {\n isResponse,\n isReadableStream,\n isAsyncIterable,\n isIterable,\n isIterator,\n isBlob,\n isBuffer\n} from '../../javascript-utils/is-type';\nimport {makeIterator} from '../../iterators/make-iterator/make-iterator';\nimport {checkResponse, makeResponse} from '../utils/response-utils';\n\nconst ERR_DATA = 'Cannot convert supplied data type';\n\n// eslint-disable-next-line complexity\nexport function getArrayBufferOrStringFromDataSync(\n data: SyncDataType,\n loader: Loader,\n options: LoaderOptions\n): ArrayBuffer | string {\n if (loader.text && typeof data === 'string') {\n return data;\n }\n\n if (isBuffer(data)) {\n // @ts-ignore\n data = data.buffer;\n }\n\n if (data instanceof ArrayBuffer) {\n const arrayBuffer = data;\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(arrayBuffer);\n }\n return arrayBuffer;\n }\n\n // We may need to handle offsets\n if (ArrayBuffer.isView(data)) {\n // TextDecoder is invoked on typed arrays and will handle offsets\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(data);\n }\n\n let arrayBuffer = data.buffer;\n\n // Since we are returning the underlying arrayBuffer, we must create a new copy\n // if this typed array / Buffer is a partial view into the ArryayBuffer\n // TODO - this is a potentially unnecessary copy\n const byteLength = data.byteLength || data.length;\n if (data.byteOffset !== 0 || byteLength !== arrayBuffer.byteLength) {\n // console.warn(`loaders.gl copying arraybuffer of length ${byteLength}`);\n arrayBuffer = arrayBuffer.slice(data.byteOffset, data.byteOffset + byteLength);\n }\n return arrayBuffer;\n }\n\n throw new Error(ERR_DATA);\n}\n\n// Convert async iterator to a promise\nexport async function getArrayBufferOrStringFromData(\n data: DataType,\n loader: Loader,\n options: LoaderOptions\n): Promise {\n const isArrayBuffer = data instanceof ArrayBuffer || ArrayBuffer.isView(data);\n if (typeof data === 'string' || isArrayBuffer) {\n return getArrayBufferOrStringFromDataSync(data as string | ArrayBuffer, loader, options);\n }\n\n // Blobs and files are FileReader compatible\n if (isBlob(data)) {\n data = await makeResponse(data);\n }\n\n if (isResponse(data)) {\n const response = data as Response;\n await checkResponse(response);\n return loader.binary ? await response.arrayBuffer() : await response.text();\n }\n\n if (isReadableStream(data)) {\n // @ts-expect-error TS2559 options type\n data = makeIterator(data as ReadableStream, options);\n }\n\n if (isIterable(data) || isAsyncIterable(data)) {\n // Assume arrayBuffer iterator - attempt to concatenate\n return concatenateArrayBuffersAsync(data as AsyncIterable);\n }\n\n throw new Error(ERR_DATA);\n}\n\nexport async function getAsyncIterableFromData(\n data: BatchableDataType,\n options: LoaderOptions\n): Promise | Iterable> {\n if (isIterator(data)) {\n return data as AsyncIterable;\n }\n\n if (isResponse(data)) {\n const response = data as Response;\n // Note Since this function is not async, we currently can't load error message, just status\n await checkResponse(response);\n // TODO - bug in polyfill, body can be a Promise under Node.js\n // eslint-disable-next-line @typescript-eslint/await-thenable\n const body = await response.body;\n // TODO - body can be null?\n return makeIterator(body as ReadableStream, options as any);\n }\n\n if (isBlob(data) || isReadableStream(data)) {\n return makeIterator(data as Blob | ReadableStream, options as any);\n }\n\n if (isAsyncIterable(data)) {\n return data[Symbol.asyncIterator]();\n }\n\n return getIterableFromData(data);\n}\n\nexport async function getReadableStream(data: BatchableDataType): Promise {\n if (isReadableStream(data)) {\n return data as ReadableStream;\n }\n if (isResponse(data)) {\n // @ts-ignore\n return data.body;\n }\n const response = await makeResponse(data);\n // @ts-ignore\n return response.body;\n}\n\n// HELPERS\n\nfunction getIterableFromData(data) {\n // generate an iterator that emits a single chunk\n if (ArrayBuffer.isView(data)) {\n return (function* oneChunk() {\n yield data.buffer;\n })();\n }\n\n if (data instanceof ArrayBuffer) {\n return (function* oneChunk() {\n yield data;\n })();\n }\n\n if (isIterator(data)) {\n return data;\n }\n\n if (isIterable(data)) {\n return data[Symbol.iterator]();\n }\n\n throw new Error(ERR_DATA);\n}\n","import { concatenateArrayBuffers } from '../binary-utils/array-buffer-utils';\nexport async function forEach(iterator, visitor) {\n while (true) {\n const {\n done,\n value\n } = await iterator.next();\n\n if (done) {\n iterator.return();\n return;\n }\n\n const cancel = visitor(value);\n\n if (cancel) {\n return;\n }\n }\n}\nexport async function concatenateArrayBuffersAsync(asyncIterator) {\n const arrayBuffers = [];\n\n for await (const chunk of asyncIterator) {\n arrayBuffers.push(chunk);\n }\n\n return concatenateArrayBuffers(...arrayBuffers);\n}\nexport async function concatenateStringsAsync(asyncIterator) {\n const strings = [];\n\n for await (const chunk of asyncIterator) {\n strings.push(chunk);\n }\n\n return strings.join('');\n}\n//# sourceMappingURL=async-iteration.js.map","import {concatenateArrayBuffers} from '../binary-utils/array-buffer-utils';\n\n// GENERAL UTILITIES\n\n/**\n * Iterate over async iterator, without resetting iterator if end is not reached\n * - forEach intentionally does not reset iterator if exiting loop prematurely\n * so that iteration can continue in a second loop\n * - It is recommended to use a standard for-await as last loop to ensure\n * iterator gets properly reset\n *\n * TODO - optimize using sync iteration if argument is an Iterable?\n *\n * @param iterator\n * @param visitor\n */\nexport async function forEach(iterator, visitor) {\n // eslint-disable-next-line\n while (true) {\n const {done, value} = await iterator.next();\n if (done) {\n iterator.return();\n return;\n }\n const cancel = visitor(value);\n if (cancel) {\n return;\n }\n }\n}\n\n// Breaking big data into iterable chunks, concatenating iterable chunks into big data objects\n\n/**\n * Concatenates all data chunks yielded by an (async) iterator\n * This function can e.g. be used to enable atomic parsers to work on (async) iterator inputs\n */\n\nexport async function concatenateArrayBuffersAsync(\n asyncIterator: AsyncIterable | Iterable\n): Promise {\n const arrayBuffers: ArrayBuffer[] = [];\n for await (const chunk of asyncIterator) {\n arrayBuffers.push(chunk);\n }\n return concatenateArrayBuffers(...arrayBuffers);\n}\n\nexport async function concatenateStringsAsync(\n asyncIterator: AsyncIterable | Iterable\n): Promise {\n const strings: string[] = [];\n for await (const chunk of asyncIterator) {\n strings.push(chunk);\n }\n return strings.join('');\n}\n","import { isBuffer, bufferToArrayBuffer } from './buffer-utils';\nexport function toArrayBuffer(data) {\n if (isBuffer(data)) {\n return bufferToArrayBuffer(data);\n }\n\n if (data instanceof ArrayBuffer) {\n return data;\n }\n\n if (ArrayBuffer.isView(data)) {\n if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) {\n return data.buffer;\n }\n\n return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);\n }\n\n if (typeof data === 'string') {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n\n if (data && typeof data === 'object' && data._toArrayBuffer) {\n return data._toArrayBuffer();\n }\n\n throw new Error('toArrayBuffer');\n}\nexport function compareArrayBuffers(arrayBuffer1, arrayBuffer2, byteLength) {\n byteLength = byteLength || arrayBuffer1.byteLength;\n\n if (arrayBuffer1.byteLength < byteLength || arrayBuffer2.byteLength < byteLength) {\n return false;\n }\n\n const array1 = new Uint8Array(arrayBuffer1);\n const array2 = new Uint8Array(arrayBuffer2);\n\n for (let i = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n\n return true;\n}\nexport function concatenateArrayBuffers(...sources) {\n const sourceArrays = sources.map(source2 => source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2);\n const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0);\n const result = new Uint8Array(byteLength);\n let offset = 0;\n\n for (const sourceArray of sourceArrays) {\n result.set(sourceArray, offset);\n offset += sourceArray.byteLength;\n }\n\n return result.buffer;\n}\nexport function concatenateTypedArrays(...typedArrays) {\n const arrays = typedArrays;\n const TypedArrayConstructor = arrays && arrays.length > 1 && arrays[0].constructor || null;\n\n if (!TypedArrayConstructor) {\n throw new Error('\"concatenateTypedArrays\" - incorrect quantity of arguments or arguments have incompatible data types');\n }\n\n const sumLength = arrays.reduce((acc, value) => acc + value.length, 0);\n const result = new TypedArrayConstructor(sumLength);\n let offset = 0;\n\n for (const array of arrays) {\n result.set(array, offset);\n offset += array.length;\n }\n\n return result;\n}\nexport function sliceArrayBuffer(arrayBuffer, byteOffset, byteLength) {\n const subArray = byteLength !== undefined ? new Uint8Array(arrayBuffer).subarray(byteOffset, byteOffset + byteLength) : new Uint8Array(arrayBuffer).subarray(byteOffset);\n const arrayCopy = new Uint8Array(subArray);\n return arrayCopy.buffer;\n}\n//# sourceMappingURL=array-buffer-utils.js.map","import {TypedArray} from '../../types';\nimport {isBuffer, bufferToArrayBuffer} from './buffer-utils';\n\n/**\n * Convert an object to an array buffer\n */\nexport function toArrayBuffer(data: any): ArrayBuffer {\n // Note: Should be called first, Buffers can trigger other detections below\n if (isBuffer(data)) {\n return bufferToArrayBuffer(data);\n }\n\n if (data instanceof ArrayBuffer) {\n return data;\n }\n\n // Careful - Node Buffers look like Uint8Arrays (keep after isBuffer)\n if (ArrayBuffer.isView(data)) {\n if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) {\n return data.buffer;\n }\n return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);\n }\n\n if (typeof data === 'string') {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n\n // HACK to support Blob polyfill\n if (data && typeof data === 'object' && data._toArrayBuffer) {\n return data._toArrayBuffer();\n }\n\n throw new Error('toArrayBuffer');\n}\n\n/**\n * compare two binary arrays for equality\n * @param {ArrayBuffer} a\n * @param {ArrayBuffer} b\n * @param {number} byteLength\n */\nexport function compareArrayBuffers(\n arrayBuffer1: ArrayBuffer,\n arrayBuffer2: ArrayBuffer,\n byteLength?: number\n): boolean {\n byteLength = byteLength || arrayBuffer1.byteLength;\n if (arrayBuffer1.byteLength < byteLength || arrayBuffer2.byteLength < byteLength) {\n return false;\n }\n const array1 = new Uint8Array(arrayBuffer1);\n const array2 = new Uint8Array(arrayBuffer2);\n for (let i = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Concatenate a sequence of ArrayBuffers\n * @return A concatenated ArrayBuffer\n */\nexport function concatenateArrayBuffers(...sources: (ArrayBuffer | Uint8Array)[]): ArrayBuffer {\n // Make sure all inputs are wrapped in typed arrays\n const sourceArrays = sources.map((source2) =>\n source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2\n );\n\n // Get length of all inputs\n const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0);\n\n // Allocate array with space for all inputs\n const result = new Uint8Array(byteLength);\n\n // Copy the subarrays\n let offset = 0;\n for (const sourceArray of sourceArrays) {\n result.set(sourceArray, offset);\n offset += sourceArray.byteLength;\n }\n\n // We work with ArrayBuffers, discard the typed array wrapper\n return result.buffer;\n}\n\n/**\n * Concatenate arbitrary count of typed arrays\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays\n * @param {...*} arrays - list of arrays. All arrays should be the same type\n * @return A concatenated TypedArray\n */\nexport function concatenateTypedArrays(...typedArrays: T[]): T {\n // @ts-ignore\n const arrays = typedArrays as TypedArray[];\n // @ts-ignore\n const TypedArrayConstructor = (arrays && arrays.length > 1 && arrays[0].constructor) || null;\n if (!TypedArrayConstructor) {\n throw new Error(\n '\"concatenateTypedArrays\" - incorrect quantity of arguments or arguments have incompatible data types'\n );\n }\n\n const sumLength = arrays.reduce((acc, value) => acc + value.length, 0);\n // @ts-ignore typescript does not like dynamic constructors\n const result = new TypedArrayConstructor(sumLength);\n let offset = 0;\n for (const array of arrays) {\n result.set(array, offset);\n offset += array.length;\n }\n return result;\n}\n\n/**\n * Copy a view of an ArrayBuffer into new ArrayBuffer with byteOffset = 0\n * @param arrayBuffer\n * @param byteOffset\n * @param byteLength\n */\nexport function sliceArrayBuffer(\n arrayBuffer: ArrayBuffer,\n byteOffset: number,\n byteLength?: number\n): ArrayBuffer {\n const subArray =\n byteLength !== undefined\n ? new Uint8Array(arrayBuffer).subarray(byteOffset, byteOffset + byteLength)\n : new Uint8Array(arrayBuffer).subarray(byteOffset);\n const arrayCopy = new Uint8Array(subArray);\n return arrayCopy.buffer;\n}\n","import * as node from '../node/buffer';\nexport function isBuffer(value) {\n return value && typeof value === 'object' && value.isBuffer;\n}\nexport function toBuffer(data) {\n return node.toBuffer ? node.toBuffer(data) : data;\n}\nexport function bufferToArrayBuffer(buffer) {\n if (isBuffer(buffer)) {\n const typedArray = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.length);\n return typedArray.slice().buffer;\n }\n\n return buffer;\n}\n//# sourceMappingURL=buffer-utils.js.map","import * as node from '../node/buffer';\n\n/**\n * Check for Node.js `Buffer` (without triggering bundler to include Buffer polyfill on browser)\n */\nexport function isBuffer(value: any): boolean {\n return value && typeof value === 'object' && value.isBuffer;\n}\n\n/**\n * Converts to Node.js `Buffer` (without triggering bundler to include Buffer polyfill on browser)\n * @todo better data type\n */\nexport function toBuffer(data: any): Buffer {\n return node.toBuffer ? node.toBuffer(data) : data;\n}\n\n/**\n * Converts Node.js `Buffer` to `ArrayBuffer` (without triggering bundler to include Buffer polyfill on browser)\n * @todo better data type\n */\nexport function bufferToArrayBuffer(buffer: any): ArrayBuffer {\n if (isBuffer(buffer)) {\n const typedArray = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.length);\n return typedArray.slice().buffer;\n }\n return buffer;\n}\n","import { makeStringIterator } from './make-string-iterator';\nimport { makeArrayBufferIterator } from './make-array-buffer-iterator';\nimport { makeBlobIterator } from './make-blob-iterator';\nimport { makeStreamIterator } from './make-stream-iterator';\nimport { isBlob, isReadableStream, isResponse } from '../../javascript-utils/is-type';\nexport function makeIterator(data, options) {\n if (typeof data === 'string') {\n return makeStringIterator(data, options);\n }\n\n if (data instanceof ArrayBuffer) {\n return makeArrayBufferIterator(data, options);\n }\n\n if (isBlob(data)) {\n return makeBlobIterator(data, options);\n }\n\n if (isReadableStream(data)) {\n return makeStreamIterator(data, options);\n }\n\n if (isResponse(data)) {\n const response = data;\n return makeStreamIterator(response.body, options);\n }\n\n throw new Error('makeIterator');\n}\n//# sourceMappingURL=make-iterator.js.map","import type {ReadStream} from 'fs';\n\nimport {makeStringIterator} from './make-string-iterator';\nimport {makeArrayBufferIterator} from './make-array-buffer-iterator';\nimport {makeBlobIterator} from './make-blob-iterator';\nimport type {StreamIteratorOptions} from './make-stream-iterator';\nimport {makeStreamIterator} from './make-stream-iterator';\nimport {isBlob, isReadableStream, isResponse} from '../../javascript-utils/is-type';\n\n/**\n * @param [options.chunkSize]\n */\nexport type IteratorOptions = StreamIteratorOptions & {\n chunkSize?: number;\n};\n\n/**\n * Returns an iterator that breaks its input into chunks and yields them one-by-one.\n * @param data\n * @param options\n * @returns\n * This function can e.g. be used to enable data sources that can only be read atomically\n * (such as `Blob` and `File` via `FileReader`) to still be parsed in batches.\n */\nexport function makeIterator(\n data: ArrayBuffer | string | Blob | Response | ReadableStream | ReadStream,\n options?: IteratorOptions\n): AsyncIterable | Iterable {\n if (typeof data === 'string') {\n // Note: Converts string chunks to binary\n return makeStringIterator(data, options);\n }\n if (data instanceof ArrayBuffer) {\n return makeArrayBufferIterator(data, options);\n }\n if (isBlob(data)) {\n return makeBlobIterator(data as Blob, options);\n }\n if (isReadableStream(data)) {\n return makeStreamIterator(data as ReadableStream, options);\n }\n if (isResponse(data)) {\n const response = data as Response;\n return makeStreamIterator(response.body as ReadableStream, options);\n }\n throw new Error('makeIterator');\n}\n","const DEFAULT_CHUNK_SIZE = 256 * 1024;\nexport function* makeStringIterator(string, options) {\n const chunkSize = (options === null || options === void 0 ? void 0 : options.chunkSize) || DEFAULT_CHUNK_SIZE;\n let offset = 0;\n const textEncoder = new TextEncoder();\n\n while (offset < string.length) {\n const chunkLength = Math.min(string.length - offset, chunkSize);\n const chunk = string.slice(offset, offset + chunkLength);\n offset += chunkLength;\n yield textEncoder.encode(chunk);\n }\n}\n//# sourceMappingURL=make-string-iterator.js.map","import type {IteratorOptions} from './make-iterator';\n\nconst DEFAULT_CHUNK_SIZE = 256 * 1024;\n\n/**\n * Returns an iterator that breaks a big string into chunks and yields them one-by-one as ArrayBuffers\n * @param blob string to iterate over\n * @param options\n * @param options.chunkSize\n */\nexport function* makeStringIterator(\n string: string,\n options?: IteratorOptions\n): Iterable {\n const chunkSize = options?.chunkSize || DEFAULT_CHUNK_SIZE;\n\n let offset = 0;\n const textEncoder = new TextEncoder();\n while (offset < string.length) {\n // Create a chunk of the right size\n const chunkLength = Math.min(string.length - offset, chunkSize);\n const chunk = string.slice(offset, offset + chunkLength);\n offset += chunkLength;\n\n // yield an ArrayBuffer chunk\n yield textEncoder.encode(chunk);\n }\n}\n","const DEFAULT_CHUNK_SIZE = 256 * 1024;\nexport function* makeArrayBufferIterator(arrayBuffer, options = {}) {\n const {\n chunkSize = DEFAULT_CHUNK_SIZE\n } = options;\n let byteOffset = 0;\n\n while (byteOffset < arrayBuffer.byteLength) {\n const chunkByteLength = Math.min(arrayBuffer.byteLength - byteOffset, chunkSize);\n const chunk = new ArrayBuffer(chunkByteLength);\n const sourceArray = new Uint8Array(arrayBuffer, byteOffset, chunkByteLength);\n const chunkArray = new Uint8Array(chunk);\n chunkArray.set(sourceArray);\n byteOffset += chunkByteLength;\n yield chunk;\n }\n}\n//# sourceMappingURL=make-array-buffer-iterator.js.map","import type {IteratorOptions} from './make-iterator';\n\nconst DEFAULT_CHUNK_SIZE = 256 * 1024;\n\n/**\n * Returns an iterator that breaks a big ArrayBuffer into chunks and yields them one-by-one\n * @param blob ArrayBuffer to iterate over\n * @param options\n * @param options.chunkSize\n */\nexport function* makeArrayBufferIterator(\n arrayBuffer: ArrayBuffer,\n options: IteratorOptions = {}\n): Iterable {\n const {chunkSize = DEFAULT_CHUNK_SIZE} = options;\n\n let byteOffset = 0;\n\n while (byteOffset < arrayBuffer.byteLength) {\n // Create a chunk of the right size\n const chunkByteLength = Math.min(arrayBuffer.byteLength - byteOffset, chunkSize);\n const chunk = new ArrayBuffer(chunkByteLength);\n\n // Copy data from the big chunk\n const sourceArray = new Uint8Array(arrayBuffer, byteOffset, chunkByteLength);\n const chunkArray = new Uint8Array(chunk);\n chunkArray.set(sourceArray);\n\n // yield the chunk\n byteOffset += chunkByteLength;\n yield chunk;\n }\n}\n","const DEFAULT_CHUNK_SIZE = 1024 * 1024;\nexport async function* makeBlobIterator(blob, options) {\n const chunkSize = (options === null || options === void 0 ? void 0 : options.chunkSize) || DEFAULT_CHUNK_SIZE;\n let offset = 0;\n\n while (offset < blob.size) {\n const end = offset + chunkSize;\n const chunk = await blob.slice(offset, end).arrayBuffer();\n offset = end;\n yield chunk;\n }\n}\n//# sourceMappingURL=make-blob-iterator.js.map","import type {IteratorOptions} from './make-iterator';\n\nconst DEFAULT_CHUNK_SIZE = 1024 * 1024; // 1MB — biggest value that keeps UI responsive\n\n/**\n * Returns an iterator that breaks a big Blob into chunks and yields them one-by-one\n * @param blob Blob or File object\n * @param options\n * @param options.chunkSize\n */\nexport async function* makeBlobIterator(\n blob: Blob,\n options?: IteratorOptions\n): AsyncIterable {\n const chunkSize = options?.chunkSize || DEFAULT_CHUNK_SIZE;\n\n let offset = 0;\n while (offset < blob.size) {\n const end = offset + chunkSize;\n\n const chunk = await blob.slice(offset, end).arrayBuffer();\n\n offset = end;\n yield chunk;\n }\n}\n","import { isBrowser, toArrayBuffer } from '@loaders.gl/loader-utils';\nexport function makeStreamIterator(stream, options) {\n return isBrowser ? makeBrowserStreamIterator(stream, options) : makeNodeStreamIterator(stream, options);\n}\n\nasync function* makeBrowserStreamIterator(stream, options) {\n const reader = stream.getReader();\n let nextBatchPromise;\n\n try {\n while (true) {\n const currentBatchPromise = nextBatchPromise || reader.read();\n\n if (options !== null && options !== void 0 && options._streamReadAhead) {\n nextBatchPromise = reader.read();\n }\n\n const {\n done,\n value\n } = await currentBatchPromise;\n\n if (done) {\n return;\n }\n\n yield toArrayBuffer(value);\n }\n } catch (error) {\n reader.releaseLock();\n }\n}\n\nasync function* makeNodeStreamIterator(stream, options) {\n for await (const chunk of stream) {\n yield toArrayBuffer(chunk);\n }\n}\n//# sourceMappingURL=make-stream-iterator.js.map","import type {Readable} from 'stream';\nimport {isBrowser, toArrayBuffer} from '@loaders.gl/loader-utils';\n\nexport type StreamIteratorOptions = {\n _streamReadAhead?: boolean;\n};\n\n/**\n * Returns an async iterable that reads from a stream (works in both Node.js and browsers)\n * @param stream stream to iterator over\n */\nexport function makeStreamIterator(\n stream: ReadableStream | Readable,\n options?: StreamIteratorOptions\n): AsyncIterable {\n return isBrowser\n ? makeBrowserStreamIterator(stream as ReadableStream, options)\n : makeNodeStreamIterator(stream as Readable, options);\n}\n\n/**\n * Returns an async iterable that reads from a DOM (browser) stream\n * @param stream stream to iterate from\n * @see https://jakearchibald.com/2017/async-iterators-and-generators/#making-streams-iterate\n */\nasync function* makeBrowserStreamIterator(\n stream: ReadableStream,\n options?: StreamIteratorOptions\n): AsyncIterable {\n // WhatWG: stream is supposed to have a `getIterator` method\n // if (typeof stream.getIterator === 'function') {\n // return stream.getIterator();\n // }\n // if (typeof stream[Symbol.asyncIterator] === 'function') {\n // return makeToArrayBufferIterator(stream);\n // }\n\n // In the browser, we first need to get a lock on the stream\n const reader = stream.getReader();\n\n let nextBatchPromise: Promise<{done?: boolean; value?: Uint8Array}> | undefined;\n\n try {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const currentBatchPromise = nextBatchPromise || reader.read();\n // Issue a read for an additional batch, while we await the next batch\n // Idea is to make fetching happen in parallel with processing / parsing\n if (options?._streamReadAhead) {\n nextBatchPromise = reader.read();\n }\n // Read from the stream\n // value is a Uint8Array\n const {done, value} = await currentBatchPromise;\n // Exit if we're done\n if (done) {\n return;\n }\n // Else yield the chunk\n yield toArrayBuffer(value);\n }\n } catch (error) {\n // TODO - examples makes it look like this should always be called,\n // but that generates exceptions so only call it if we do not reach the end\n reader.releaseLock();\n }\n}\n\n/**\n * Returns an async iterable that reads from a DOM (browser) stream\n * @param stream stream to iterate from\n * @note Requires Node.js >= 10\n */\nasync function* makeNodeStreamIterator(\n stream: Readable,\n options?: StreamIteratorOptions\n): AsyncIterable {\n // Hacky test for node version to ensure we don't call bad polyfills\n // NODE 10+: stream is an asyncIterator\n for await (const chunk of stream) {\n yield toArrayBuffer(chunk); // Coerce each chunk to ArrayBuffer\n }\n}\n/* TODO - remove NODE < 10\n * @see https://github.com/bustle/streaming-iterables, MIT license\n *\n if (typeof stream[Symbol.asyncIterator] === 'function') {\n return;\n }\n\n // TODO - check if is this ever used in Node 10+?\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const data = stream.read();\n if (data !== null) {\n yield toArrayBuffer(data);\n // eslint-disable-next-line no-continue\n continue;\n }\n if (stream._readableState?.ended) {\n return;\n }\n await onceReadable(stream);\n }\n\nasync function onceReadable(stream: Readable): Promise {\n return new Promise((resolve) => {\n stream.once('readable', resolve);\n });\n}\n */\n","const globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\nconst self_ = globals.self || globals.window || globals.global || {};\nconst window_ = globals.window || globals.self || globals.global || {};\nconst global_ = globals.global || globals.self || globals.window || {};\nconst document_ = globals.document || {};\nexport { self_ as self, window_ as window, global_ as global, document_ as document };\nexport const isBrowser = Boolean(typeof process !== 'object' || String(process) !== '[object process]' || process.browser);\nexport const isWorker = typeof importScripts === 'function';\nconst matches = typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\nexport const nodeVersion = matches && parseFloat(matches[1]) || 0;\n//# sourceMappingURL=globals.js.map","// Purpose: include this in your module to avoid\n// dependencies on micro modules like 'global' and 'is-browser';\n\n/* eslint-disable no-restricted-globals */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\n\ntype obj = {[key: string]: any};\nconst self_: obj = globals.self || globals.window || globals.global || {};\nconst window_: obj = globals.window || globals.self || globals.global || {};\nconst global_: obj = globals.global || globals.self || globals.window || {};\nconst document_: obj = globals.document || {};\n\nexport {self_ as self, window_ as window, global_ as global, document_ as document};\n\n/** true if running in a browser */\nexport const isBrowser: boolean =\n // @ts-ignore process does not exist on browser\n Boolean(typeof process !== 'object' || String(process) !== '[object process]' || process.browser);\n\n/** true if running in a worker thread */\nexport const isWorker: boolean = typeof importScripts === 'function';\n\n// Extract node major version\nconst matches =\n typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\n/** Major Node version (as a number) */\nexport const nodeVersion: number = (matches && parseFloat(matches[1])) || 0;\n","import { getFetchFunction } from './option-utils';\nexport function getLoaderContext(context, options, previousContext = null) {\n if (previousContext) {\n return previousContext;\n }\n\n const resolvedContext = {\n fetch: getFetchFunction(options, context),\n ...context\n };\n\n if (!Array.isArray(resolvedContext.loaders)) {\n resolvedContext.loaders = null;\n }\n\n return resolvedContext;\n}\nexport function getLoadersFromContext(loaders, context) {\n if (!context && loaders && !Array.isArray(loaders)) {\n return loaders;\n }\n\n let candidateLoaders;\n\n if (loaders) {\n candidateLoaders = Array.isArray(loaders) ? loaders : [loaders];\n }\n\n if (context && context.loaders) {\n const contextLoaders = Array.isArray(context.loaders) ? context.loaders : [context.loaders];\n candidateLoaders = candidateLoaders ? [...candidateLoaders, ...contextLoaders] : contextLoaders;\n }\n\n return candidateLoaders && candidateLoaders.length ? candidateLoaders : null;\n}\n//# sourceMappingURL=loader-context.js.map","import type {Loader, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport {getFetchFunction} from './option-utils';\n\n/**\n * \"sub\" loaders invoked by other loaders get a \"context\" injected on `this`\n * The context will inject core methods like `parse` and contain information\n * about loaders and options passed in to the top-level `parse` call.\n *\n * @param context\n * @param options\n * @param previousContext\n */\nexport function getLoaderContext(\n context: Omit & Partial>,\n options?: LoaderOptions,\n previousContext: LoaderContext | null = null\n): LoaderContext {\n // For recursive calls, we already have a context\n // TODO - add any additional loaders to context?\n if (previousContext) {\n return previousContext;\n }\n\n const resolvedContext: LoaderContext = {\n fetch: getFetchFunction(options, context),\n ...context\n };\n\n // Recursive loading does not use single loader\n if (!Array.isArray(resolvedContext.loaders)) {\n resolvedContext.loaders = null;\n }\n\n return resolvedContext;\n}\n\n// eslint-disable-next-line complexity\nexport function getLoadersFromContext(\n loaders: Loader[] | Loader | undefined,\n context?: LoaderContext\n) {\n // A single non-array loader is force selected, but only on top-level (context === null)\n if (!context && loaders && !Array.isArray(loaders)) {\n return loaders;\n }\n\n // Create a merged list\n let candidateLoaders;\n if (loaders) {\n candidateLoaders = Array.isArray(loaders) ? loaders : [loaders];\n }\n if (context && context.loaders) {\n const contextLoaders = Array.isArray(context.loaders) ? context.loaders : [context.loaders];\n candidateLoaders = candidateLoaders ? [...candidateLoaders, ...contextLoaders] : contextLoaders;\n }\n // If no loaders, return null to look in globally registered loaders\n return candidateLoaders && candidateLoaders.length ? candidateLoaders : null;\n}\n","import { compareArrayBuffers, path } from '@loaders.gl/loader-utils';\nimport { normalizeLoader } from '../loader-utils/normalize-loader';\nimport { getResourceUrlAndType } from '../utils/resource-utils';\nimport { getRegisteredLoaders } from './register-loaders';\nimport { isBlob } from '../../javascript-utils/is-type';\nconst EXT_PATTERN = /\\.([^.]+)$/;\nexport async function selectLoader(data, loaders = [], options, context) {\n if (!validHTTPResponse(data)) {\n return null;\n }\n\n let loader = selectLoaderSync(data, loaders, { ...options,\n nothrow: true\n }, context);\n\n if (loader) {\n return loader;\n }\n\n if (isBlob(data)) {\n data = await data.slice(0, 10).arrayBuffer();\n loader = selectLoaderSync(data, loaders, options, context);\n }\n\n if (!loader && !(options !== null && options !== void 0 && options.nothrow)) {\n throw new Error(getNoValidLoaderMessage(data));\n }\n\n return loader;\n}\nexport function selectLoaderSync(data, loaders = [], options, context) {\n if (!validHTTPResponse(data)) {\n return null;\n }\n\n if (loaders && !Array.isArray(loaders)) {\n return normalizeLoader(loaders);\n }\n\n let candidateLoaders = [];\n\n if (loaders) {\n candidateLoaders = candidateLoaders.concat(loaders);\n }\n\n if (!(options !== null && options !== void 0 && options.ignoreRegisteredLoaders)) {\n candidateLoaders.push(...getRegisteredLoaders());\n }\n\n normalizeLoaders(candidateLoaders);\n const loader = selectLoaderInternal(data, candidateLoaders, options, context);\n\n if (!loader && !(options !== null && options !== void 0 && options.nothrow)) {\n throw new Error(getNoValidLoaderMessage(data));\n }\n\n return loader;\n}\n\nfunction selectLoaderInternal(data, loaders, options, context) {\n const {\n url,\n type\n } = getResourceUrlAndType(data);\n const testUrl = url || (context === null || context === void 0 ? void 0 : context.url);\n let loader = null;\n\n if (options !== null && options !== void 0 && options.mimeType) {\n loader = findLoaderByMIMEType(loaders, options === null || options === void 0 ? void 0 : options.mimeType);\n }\n\n loader = loader || findLoaderByUrl(loaders, testUrl);\n loader = loader || findLoaderByMIMEType(loaders, type);\n loader = loader || findLoaderByInitialBytes(loaders, data);\n loader = loader || findLoaderByMIMEType(loaders, options === null || options === void 0 ? void 0 : options.fallbackMimeType);\n return loader;\n}\n\nfunction validHTTPResponse(data) {\n if (data instanceof Response) {\n if (data.status === 204) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getNoValidLoaderMessage(data) {\n const {\n url,\n type\n } = getResourceUrlAndType(data);\n let message = 'No valid loader found (';\n message += url ? `${path.filename(url)}, ` : 'no url provided, ';\n message += `MIME type: ${type ? `\"${type}\"` : 'not provided'}, `;\n const firstCharacters = data ? getFirstCharacters(data) : '';\n message += firstCharacters ? ` first bytes: \"${firstCharacters}\"` : 'first bytes: not available';\n message += ')';\n return message;\n}\n\nfunction normalizeLoaders(loaders) {\n for (const loader of loaders) {\n normalizeLoader(loader);\n }\n}\n\nfunction findLoaderByUrl(loaders, url) {\n const match = url && EXT_PATTERN.exec(url);\n const extension = match && match[1];\n return extension ? findLoaderByExtension(loaders, extension) : null;\n}\n\nfunction findLoaderByExtension(loaders, extension) {\n extension = extension.toLowerCase();\n\n for (const loader of loaders) {\n for (const loaderExtension of loader.extensions) {\n if (loaderExtension.toLowerCase() === extension) {\n return loader;\n }\n }\n }\n\n return null;\n}\n\nfunction findLoaderByMIMEType(loaders, mimeType) {\n for (const loader of loaders) {\n if (loader.mimeTypes && loader.mimeTypes.includes(mimeType)) {\n return loader;\n }\n\n if (mimeType === `application/x.${loader.id}`) {\n return loader;\n }\n }\n\n return null;\n}\n\nfunction findLoaderByInitialBytes(loaders, data) {\n if (!data) {\n return null;\n }\n\n for (const loader of loaders) {\n if (typeof data === 'string') {\n if (testDataAgainstText(data, loader)) {\n return loader;\n }\n } else if (ArrayBuffer.isView(data)) {\n if (testDataAgainstBinary(data.buffer, data.byteOffset, loader)) {\n return loader;\n }\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n\n if (testDataAgainstBinary(data, byteOffset, loader)) {\n return loader;\n }\n }\n }\n\n return null;\n}\n\nfunction testDataAgainstText(data, loader) {\n if (loader.testText) {\n return loader.testText(data);\n }\n\n const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];\n return tests.some(test => data.startsWith(test));\n}\n\nfunction testDataAgainstBinary(data, byteOffset, loader) {\n const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];\n return tests.some(test => testBinary(data, byteOffset, loader, test));\n}\n\nfunction testBinary(data, byteOffset, loader, test) {\n if (test instanceof ArrayBuffer) {\n return compareArrayBuffers(test, data, test.byteLength);\n }\n\n switch (typeof test) {\n case 'function':\n return test(data, loader);\n\n case 'string':\n const magic = getMagicString(data, byteOffset, test.length);\n return test === magic;\n\n default:\n return false;\n }\n}\n\nfunction getFirstCharacters(data, length = 5) {\n if (typeof data === 'string') {\n return data.slice(0, length);\n } else if (ArrayBuffer.isView(data)) {\n return getMagicString(data.buffer, data.byteOffset, length);\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n return getMagicString(data, byteOffset, length);\n }\n\n return '';\n}\n\nfunction getMagicString(arrayBuffer, byteOffset, length) {\n if (arrayBuffer.byteLength < byteOffset + length) {\n return '';\n }\n\n const dataView = new DataView(arrayBuffer);\n let magic = '';\n\n for (let i = 0; i < length; i++) {\n magic += String.fromCharCode(dataView.getUint8(byteOffset + i));\n }\n\n return magic;\n}\n//# sourceMappingURL=select-loader.js.map","import type {LoaderContext, LoaderOptions, Loader} from '@loaders.gl/loader-utils';\nimport {compareArrayBuffers, path} from '@loaders.gl/loader-utils';\nimport {normalizeLoader} from '../loader-utils/normalize-loader';\nimport {getResourceUrlAndType} from '../utils/resource-utils';\nimport {getRegisteredLoaders} from './register-loaders';\nimport {isBlob} from '../../javascript-utils/is-type';\n\nconst EXT_PATTERN = /\\.([^.]+)$/;\n\n// TODO - Need a variant that peeks at streams for parseInBatches\n// TODO - Detect multiple matching loaders? Use heuristics to grade matches?\n// TODO - Allow apps to pass context to disambiguate between multiple matches (e.g. multiple .json formats)?\n\n/**\n * Find a loader that matches file extension and/or initial file content\n * Search the loaders array argument for a loader that matches url extension or initial data\n * Returns: a normalized loader\n * @param data data to assist\n * @param loaders\n * @param options\n * @param context used internally, applications should not provide this parameter\n */\nexport async function selectLoader(\n data: Response | Blob | ArrayBuffer | string,\n loaders: Loader[] | Loader = [],\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise {\n if (!validHTTPResponse(data)) {\n return null;\n }\n\n // First make a sync attempt, disabling exceptions\n let loader = selectLoaderSync(data, loaders, {...options, nothrow: true}, context);\n if (loader) {\n return loader;\n }\n\n // For Blobs and Files, try to asynchronously read a small initial slice and test again with that\n // to see if we can detect by initial content\n if (isBlob(data)) {\n data = await (data as Blob).slice(0, 10).arrayBuffer();\n loader = selectLoaderSync(data, loaders, options, context);\n }\n\n // no loader available\n if (!loader && !options?.nothrow) {\n throw new Error(getNoValidLoaderMessage(data));\n }\n\n return loader;\n}\n\n/**\n * Find a loader that matches file extension and/or initial file content\n * Search the loaders array argument for a loader that matches url extension or initial data\n * Returns: a normalized loader\n * @param data data to assist\n * @param loaders\n * @param options\n * @param context used internally, applications should not provide this parameter\n */\nexport function selectLoaderSync(\n data: Response | Blob | ArrayBuffer | string,\n loaders: Loader[] | Loader = [],\n options?: LoaderOptions,\n context?: LoaderContext\n): Loader | null {\n if (!validHTTPResponse(data)) {\n return null;\n }\n\n // eslint-disable-next-line complexity\n // if only a single loader was provided (not as array), force its use\n // TODO - Should this behavior be kept and documented?\n if (loaders && !Array.isArray(loaders)) {\n // TODO - remove support for legacy loaders\n return normalizeLoader(loaders);\n }\n\n // Build list of candidate loaders that will be searched in order for a match\n let candidateLoaders: Loader[] = [];\n // First search supplied loaders\n if (loaders) {\n candidateLoaders = candidateLoaders.concat(loaders);\n }\n // Then fall back to registered loaders\n if (!options?.ignoreRegisteredLoaders) {\n candidateLoaders.push(...getRegisteredLoaders());\n }\n\n // TODO - remove support for legacy loaders\n normalizeLoaders(candidateLoaders);\n\n const loader = selectLoaderInternal(data, candidateLoaders, options, context);\n\n // no loader available\n if (!loader && !options?.nothrow) {\n throw new Error(getNoValidLoaderMessage(data));\n }\n\n return loader;\n}\n\n/** Implements loaders selection logic */\nfunction selectLoaderInternal(\n data: Response | Blob | ArrayBuffer | string,\n loaders: Loader[],\n options?: LoaderOptions,\n context?: LoaderContext\n) {\n const {url, type} = getResourceUrlAndType(data);\n\n const testUrl = url || context?.url;\n\n let loader: Loader | null = null;\n\n // if options.mimeType is supplied, it takes precedence\n if (options?.mimeType) {\n loader = findLoaderByMIMEType(loaders, options?.mimeType);\n }\n // Look up loader by url\n loader = loader || findLoaderByUrl(loaders, testUrl);\n // Look up loader by mime type\n loader = loader || findLoaderByMIMEType(loaders, type);\n // Look for loader via initial bytes (Note: not always accessible (e.g. Response, stream, async iterator)\n loader = loader || findLoaderByInitialBytes(loaders, data);\n // Look up loader by fallback mime type\n loader = loader || findLoaderByMIMEType(loaders, options?.fallbackMimeType);\n\n return loader;\n}\n\n/** Check HTTP Response */\nfunction validHTTPResponse(data: any): boolean {\n // HANDLE HTTP status\n if (data instanceof Response) {\n // 204 - NO CONTENT. This handles cases where e.g. a tile server responds with 204 for a missing tile\n if (data.status === 204) {\n return false;\n }\n }\n return true;\n}\n\n/** Generate a helpful message to help explain why loader selection failed. */\nfunction getNoValidLoaderMessage(data): string {\n const {url, type} = getResourceUrlAndType(data);\n\n let message = 'No valid loader found (';\n message += url ? `${path.filename(url)}, ` : 'no url provided, ';\n message += `MIME type: ${type ? `\"${type}\"` : 'not provided'}, `;\n // First characters are only accessible when called on data (string or arrayBuffer).\n const firstCharacters: string = data ? getFirstCharacters(data) : '';\n message += firstCharacters ? ` first bytes: \"${firstCharacters}\"` : 'first bytes: not available';\n message += ')';\n return message;\n}\n\nfunction normalizeLoaders(loaders: Loader[]): void {\n for (const loader of loaders) {\n normalizeLoader(loader);\n }\n}\n\n// TODO - Would be nice to support http://example.com/file.glb?parameter=1\n// E.g: x = new URL('http://example.com/file.glb?load=1'; x.pathname\nfunction findLoaderByUrl(loaders: Loader[], url?: string): Loader | null {\n // Get extension\n const match = url && EXT_PATTERN.exec(url);\n const extension = match && match[1];\n return extension ? findLoaderByExtension(loaders, extension) : null;\n}\n\nfunction findLoaderByExtension(loaders: Loader[], extension: string): Loader | null {\n extension = extension.toLowerCase();\n\n for (const loader of loaders) {\n for (const loaderExtension of loader.extensions) {\n if (loaderExtension.toLowerCase() === extension) {\n return loader;\n }\n }\n }\n return null;\n}\n\nfunction findLoaderByMIMEType(loaders, mimeType) {\n for (const loader of loaders) {\n if (loader.mimeTypes && loader.mimeTypes.includes(mimeType)) {\n return loader;\n }\n\n // Support referring to loaders using the \"unregistered tree\"\n // https://en.wikipedia.org/wiki/Media_type#Unregistered_tree\n if (mimeType === `application/x.${loader.id}`) {\n return loader;\n }\n }\n return null;\n}\n\nfunction findLoaderByInitialBytes(loaders, data) {\n if (!data) {\n return null;\n }\n\n for (const loader of loaders) {\n if (typeof data === 'string') {\n if (testDataAgainstText(data, loader)) {\n return loader;\n }\n } else if (ArrayBuffer.isView(data)) {\n // Typed Arrays can have offsets into underlying buffer\n if (testDataAgainstBinary(data.buffer, data.byteOffset, loader)) {\n return loader;\n }\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n if (testDataAgainstBinary(data, byteOffset, loader)) {\n return loader;\n }\n }\n // TODO Handle streaming case (requires creating a new AsyncIterator)\n }\n return null;\n}\n\nfunction testDataAgainstText(data, loader) {\n if (loader.testText) {\n return loader.testText(data);\n }\n\n const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];\n return tests.some((test) => data.startsWith(test));\n}\n\nfunction testDataAgainstBinary(data, byteOffset, loader) {\n const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];\n return tests.some((test) => testBinary(data, byteOffset, loader, test));\n}\n\nfunction testBinary(data, byteOffset, loader, test) {\n if (test instanceof ArrayBuffer) {\n return compareArrayBuffers(test, data, test.byteLength);\n }\n switch (typeof test) {\n case 'function':\n return test(data, loader);\n\n case 'string':\n // Magic bytes check: If `test` is a string, check if binary data starts with that strings\n const magic = getMagicString(data, byteOffset, test.length);\n return test === magic;\n\n default:\n return false;\n }\n}\n\nfunction getFirstCharacters(data, length: number = 5) {\n if (typeof data === 'string') {\n return data.slice(0, length);\n } else if (ArrayBuffer.isView(data)) {\n // Typed Arrays can have offsets into underlying buffer\n return getMagicString(data.buffer, data.byteOffset, length);\n } else if (data instanceof ArrayBuffer) {\n const byteOffset = 0;\n return getMagicString(data, byteOffset, length);\n }\n return '';\n}\n\nfunction getMagicString(arrayBuffer, byteOffset, length) {\n if (arrayBuffer.byteLength < byteOffset + length) {\n return '';\n }\n const dataView = new DataView(arrayBuffer);\n let magic = '';\n for (let i = 0; i < length; i++) {\n magic += String.fromCharCode(dataView.getUint8(byteOffset + i));\n }\n return magic;\n}\n","export function filename(url) {\n const slashIndex = url && url.lastIndexOf('/');\n return slashIndex >= 0 ? url.substr(slashIndex + 1) : '';\n}\nexport function dirname(url) {\n const slashIndex = url && url.lastIndexOf('/');\n return slashIndex >= 0 ? url.substr(0, slashIndex) : '';\n}\nexport function join(...parts) {\n const separator = '/';\n parts = parts.map((part, index) => {\n if (index) {\n part = part.replace(new RegExp(`^${separator}`), '');\n }\n\n if (index !== parts.length - 1) {\n part = part.replace(new RegExp(`${separator}$`), '');\n }\n\n return part;\n });\n return parts.join(separator);\n}\n//# sourceMappingURL=path.js.map","// Beginning of a minimal implementation of the Node.js path API, that doesn't pull in big polyfills.\n\n/**\n * Replacement for Node.js path.filename\n * @param url\n */\nexport function filename(url: string): string {\n const slashIndex = url && url.lastIndexOf('/');\n return slashIndex >= 0 ? url.substr((slashIndex as number) + 1) : '';\n}\n\n/**\n * Replacement for Node.js path.dirname\n * @param url\n */\nexport function dirname(url: string): string {\n const slashIndex = url && url.lastIndexOf('/');\n return slashIndex >= 0 ? url.substr(0, slashIndex as number) : '';\n}\n\n/**\n * Replacement for Node.js path.join\n * @param parts\n */\nexport function join(...parts: string[]): string {\n const separator = '/';\n parts = parts.map((part, index) => {\n if (index) {\n part = part.replace(new RegExp(`^${separator}`), '');\n }\n if (index !== parts.length - 1) {\n part = part.replace(new RegExp(`${separator}$`), '');\n }\n return part;\n });\n return parts.join(separator);\n}\n","import { normalizeLoader } from '../loader-utils/normalize-loader';\nimport { getGlobalLoaderState } from '../loader-utils/option-utils';\n\nconst getGlobalLoaderRegistry = () => {\n const state = getGlobalLoaderState();\n state.loaderRegistry = state.loaderRegistry || [];\n return state.loaderRegistry;\n};\n\nexport function registerLoaders(loaders) {\n const loaderRegistry = getGlobalLoaderRegistry();\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n\n for (const loader of loaders) {\n const normalizedLoader = normalizeLoader(loader);\n\n if (!loaderRegistry.find(registeredLoader => normalizedLoader === registeredLoader)) {\n loaderRegistry.unshift(normalizedLoader);\n }\n }\n}\nexport function getRegisteredLoaders() {\n return getGlobalLoaderRegistry();\n}\nexport function _unregisterLoaders() {\n const state = getGlobalLoaderState();\n state.loaderRegistry = [];\n}\n//# sourceMappingURL=register-loaders.js.map","import {Loader} from '@loaders.gl/loader-utils';\nimport {normalizeLoader} from '../loader-utils/normalize-loader';\nimport {getGlobalLoaderState} from '../loader-utils/option-utils';\n\n// Store global registered loaders on the global object to increase chances of cross loaders-version interoperability\n// This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks\nconst getGlobalLoaderRegistry = () => {\n const state = getGlobalLoaderState();\n state.loaderRegistry = state.loaderRegistry || [];\n return state.loaderRegistry;\n};\n\nexport function registerLoaders(loaders: Loader[]) {\n const loaderRegistry = getGlobalLoaderRegistry();\n\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n\n for (const loader of loaders) {\n const normalizedLoader = normalizeLoader(loader);\n if (!loaderRegistry.find((registeredLoader) => normalizedLoader === registeredLoader)) {\n // add to the beginning of the loaderRegistry, so the last registeredLoader get picked\n loaderRegistry.unshift(normalizedLoader);\n }\n }\n}\n\nexport function getRegisteredLoaders(): Loader[] {\n return getGlobalLoaderRegistry();\n}\n\n// For testing\nexport function _unregisterLoaders() {\n const state = getGlobalLoaderState();\n state.loaderRegistry = [];\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, picking, UNIT } from '@deck.gl/core';\nimport { Model, Geometry } from '@luma.gl/core';\nimport vs from './scatterplot-layer-vertex.glsl';\nimport fs from './scatterplot-layer-fragment.glsl';\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n radiusUnits: 'meters',\n radiusScale: {\n type: 'number',\n min: 0,\n value: 1\n },\n radiusMinPixels: {\n type: 'number',\n min: 0,\n value: 0\n },\n radiusMaxPixels: {\n type: 'number',\n min: 0,\n value: Number.MAX_SAFE_INTEGER\n },\n lineWidthUnits: 'meters',\n lineWidthScale: {\n type: 'number',\n min: 0,\n value: 1\n },\n lineWidthMinPixels: {\n type: 'number',\n min: 0,\n value: 0\n },\n lineWidthMaxPixels: {\n type: 'number',\n min: 0,\n value: Number.MAX_SAFE_INTEGER\n },\n stroked: false,\n filled: true,\n billboard: false,\n antialiasing: true,\n getPosition: {\n type: 'accessor',\n value: x => x.position\n },\n getRadius: {\n type: 'accessor',\n value: 1\n },\n getFillColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n getLineColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n getLineWidth: {\n type: 'accessor',\n value: 1\n },\n strokeWidth: {\n deprecatedFor: 'getLineWidth'\n },\n outline: {\n deprecatedFor: 'stroked'\n },\n getColor: {\n deprecatedFor: ['getFillColor', 'getLineColor']\n }\n};\nexport default class ScatterplotLayer extends Layer {\n getShaders() {\n return super.getShaders({\n vs,\n fs,\n modules: [project32, picking]\n });\n }\n\n initializeState() {\n this.getAttributeManager().addInstanced({\n instancePositions: {\n size: 3,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getPosition'\n },\n instanceRadius: {\n size: 1,\n transition: true,\n accessor: 'getRadius',\n defaultValue: 1\n },\n instanceFillColors: {\n size: this.props.colorFormat.length,\n transition: true,\n normalized: true,\n type: 5121,\n accessor: 'getFillColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineColors: {\n size: this.props.colorFormat.length,\n transition: true,\n normalized: true,\n type: 5121,\n accessor: 'getLineColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineWidths: {\n size: 1,\n transition: true,\n accessor: 'getLineWidth',\n defaultValue: 1\n }\n });\n }\n\n updateState(params) {\n super.updateState(params);\n\n if (params.changeFlags.extensionsChanged) {\n var _this$state$model;\n\n const {\n gl\n } = this.context;\n (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n this.state.model = this._getModel(gl);\n this.getAttributeManager().invalidateAll();\n }\n }\n\n draw({\n uniforms\n }) {\n const {\n radiusUnits,\n radiusScale,\n radiusMinPixels,\n radiusMaxPixels,\n stroked,\n filled,\n billboard,\n antialiasing,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels\n } = this.props;\n this.state.model.setUniforms(uniforms).setUniforms({\n stroked: stroked ? 1 : 0,\n filled,\n billboard,\n antialiasing,\n radiusUnits: UNIT[radiusUnits],\n radiusScale,\n radiusMinPixels,\n radiusMaxPixels,\n lineWidthUnits: UNIT[lineWidthUnits],\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels\n }).draw();\n }\n\n _getModel(gl) {\n const positions = [-1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0];\n return new Model(gl, { ...this.getShaders(),\n id: this.props.id,\n geometry: new Geometry({\n drawMode: 6,\n vertexCount: 4,\n attributes: {\n positions: {\n size: 3,\n value: new Float32Array(positions)\n }\n }\n }),\n isInstanced: true\n });\n }\n\n}\n\n_defineProperty(ScatterplotLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(ScatterplotLayer, \"layerName\", 'ScatterplotLayer');\n//# sourceMappingURL=scatterplot-layer.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {Layer, project32, picking, UNIT} from '@deck.gl/core';\nimport GL from '@luma.gl/constants';\nimport {Model, Geometry} from '@luma.gl/core';\n\nimport vs from './scatterplot-layer-vertex.glsl';\nimport fs from './scatterplot-layer-fragment.glsl';\n\nimport type {\n LayerProps,\n LayerDataSource,\n UpdateParameters,\n Accessor,\n Unit,\n Position,\n Color,\n DefaultProps\n} from '@deck.gl/core';\n\nconst DEFAULT_COLOR: [number, number, number, number] = [0, 0, 0, 255];\n\n/** All props supported by the ScatterplotLayer */\nexport type ScatterplotLayerProps = _ScatterplotLayerProps & LayerProps;\n\n/** Props added by the ScatterplotLayer */\ntype _ScatterplotLayerProps = {\n data: LayerDataSource;\n /**\n * The units of the radius, one of `'meters'`, `'common'`, and `'pixels'`.\n * @default 'meters'\n */\n radiusUnits?: Unit;\n /**\n * Radius multiplier.\n * @default 1\n */\n radiusScale?: number;\n /**\n * The minimum radius in pixels. This prop can be used to prevent the circle from getting too small when zoomed out.\n * @default 0\n */\n radiusMinPixels?: number;\n /**\n * The maximum radius in pixels. This prop can be used to prevent the circle from getting too big when zoomed in.\n * @default Number.MAX_SAFE_INTEGER\n */\n radiusMaxPixels?: number;\n\n /**\n * The units of the stroke width, one of `'meters'`, `'common'`, and `'pixels'`.\n * @default 'meters'\n */\n lineWidthUnits?: Unit;\n /**\n * Stroke width multiplier.\n * @default 1\n */\n lineWidthScale?: number;\n /**\n * The minimum stroke width in pixels. This prop can be used to prevent the line from getting too thin when zoomed out.\n * @default 0\n */\n lineWidthMinPixels?: number;\n /**\n * The maximum stroke width in pixels. This prop can be used to prevent the circle from getting too thick when zoomed in.\n * @default Number.MAX_SAFE_INTEGER\n */\n lineWidthMaxPixels?: number;\n\n /**\n * Draw the outline of points.\n * @default false\n */\n stroked?: boolean;\n /**\n * Draw the filled area of points.\n * @default true\n */\n filled?: boolean;\n /**\n * If `true`, rendered circles always face the camera. If `false` circles face up (i.e. are parallel with the ground plane).\n * @default false\n */\n billboard?: boolean;\n /**\n * If `true`, circles are rendered with smoothed edges. If `false`, circles are rendered with rough edges. Antialiasing can cause artifacts on edges of overlapping circles.\n * @default true\n */\n antialiasing?: boolean;\n\n /**\n * Center position accessor.\n */\n getPosition?: Accessor;\n /**\n * Radius accessor.\n * @default 1\n */\n getRadius?: Accessor;\n /**\n * Fill color accessor.\n * @default [0, 0, 0, 255]\n */\n getFillColor?: Accessor;\n /**\n * Stroke color accessor.\n * @default [0, 0, 0, 255]\n */\n getLineColor?: Accessor;\n /**\n * Stroke width accessor.\n * @default 1\n */\n getLineWidth?: Accessor;\n /**\n * @deprecated Use `getLineWidth` instead\n */\n strokeWidth?: number;\n /**\n * @deprecated Use `stroked` instead\n */\n outline?: boolean;\n /**\n * @deprecated Use `getFillColor` and `getLineColor` instead\n */\n getColor?: Accessor;\n};\n\nconst defaultProps: DefaultProps = {\n radiusUnits: 'meters',\n radiusScale: {type: 'number', min: 0, value: 1},\n radiusMinPixels: {type: 'number', min: 0, value: 0}, // min point radius in pixels\n radiusMaxPixels: {type: 'number', min: 0, value: Number.MAX_SAFE_INTEGER}, // max point radius in pixels\n\n lineWidthUnits: 'meters',\n lineWidthScale: {type: 'number', min: 0, value: 1},\n lineWidthMinPixels: {type: 'number', min: 0, value: 0},\n lineWidthMaxPixels: {type: 'number', min: 0, value: Number.MAX_SAFE_INTEGER},\n\n stroked: false,\n filled: true,\n billboard: false,\n antialiasing: true,\n\n getPosition: {type: 'accessor', value: x => x.position},\n getRadius: {type: 'accessor', value: 1},\n getFillColor: {type: 'accessor', value: DEFAULT_COLOR},\n getLineColor: {type: 'accessor', value: DEFAULT_COLOR},\n getLineWidth: {type: 'accessor', value: 1},\n\n // deprecated\n strokeWidth: {deprecatedFor: 'getLineWidth'},\n outline: {deprecatedFor: 'stroked'},\n getColor: {deprecatedFor: ['getFillColor', 'getLineColor']}\n};\n\n/** Render circles at given coordinates. */\nexport default class ScatterplotLayer extends Layer<\n ExtraPropsT & Required<_ScatterplotLayerProps>\n> {\n static defaultProps = defaultProps;\n static layerName: string = 'ScatterplotLayer';\n\n getShaders() {\n return super.getShaders({vs, fs, modules: [project32, picking]});\n }\n\n initializeState() {\n this.getAttributeManager()!.addInstanced({\n instancePositions: {\n size: 3,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getPosition'\n },\n instanceRadius: {\n size: 1,\n transition: true,\n accessor: 'getRadius',\n defaultValue: 1\n },\n instanceFillColors: {\n size: this.props.colorFormat.length,\n transition: true,\n normalized: true,\n type: GL.UNSIGNED_BYTE,\n accessor: 'getFillColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineColors: {\n size: this.props.colorFormat.length,\n transition: true,\n normalized: true,\n type: GL.UNSIGNED_BYTE,\n accessor: 'getLineColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineWidths: {\n size: 1,\n transition: true,\n accessor: 'getLineWidth',\n defaultValue: 1\n }\n });\n }\n\n updateState(params: UpdateParameters) {\n super.updateState(params);\n\n if (params.changeFlags.extensionsChanged) {\n const {gl} = this.context;\n this.state.model?.delete();\n this.state.model = this._getModel(gl);\n this.getAttributeManager()!.invalidateAll();\n }\n }\n\n draw({uniforms}) {\n const {\n radiusUnits,\n radiusScale,\n radiusMinPixels,\n radiusMaxPixels,\n stroked,\n filled,\n billboard,\n antialiasing,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels\n } = this.props;\n\n this.state.model\n .setUniforms(uniforms)\n .setUniforms({\n stroked: stroked ? 1 : 0,\n filled,\n billboard,\n antialiasing,\n radiusUnits: UNIT[radiusUnits],\n radiusScale,\n radiusMinPixels,\n radiusMaxPixels,\n lineWidthUnits: UNIT[lineWidthUnits],\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels\n })\n .draw();\n }\n\n protected _getModel(gl) {\n // a square that minimally cover the unit circle\n const positions = [-1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0];\n\n return new Model(gl, {\n ...this.getShaders(),\n id: this.props.id,\n geometry: new Geometry({\n drawMode: GL.TRIANGLE_FAN,\n vertexCount: 4,\n attributes: {\n positions: {size: 3, value: new Float32Array(positions)}\n }\n }),\n isInstanced: true\n });\n }\n}\n","export default \"#define SHADER_NAME scatterplot-layer-vertex-shader\\n\\nattribute vec3 positions;\\n\\nattribute vec3 instancePositions;\\nattribute vec3 instancePositions64Low;\\nattribute float instanceRadius;\\nattribute float instanceLineWidths;\\nattribute vec4 instanceFillColors;\\nattribute vec4 instanceLineColors;\\nattribute vec3 instancePickingColors;\\n\\nuniform float opacity;\\nuniform float radiusScale;\\nuniform float radiusMinPixels;\\nuniform float radiusMaxPixels;\\nuniform float lineWidthScale;\\nuniform float lineWidthMinPixels;\\nuniform float lineWidthMaxPixels;\\nuniform float stroked;\\nuniform bool filled;\\nuniform bool antialiasing;\\nuniform bool billboard;\\nuniform int radiusUnits;\\nuniform int lineWidthUnits;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying vec2 unitPosition;\\nvarying float innerUnitRadius;\\nvarying float outerRadiusPixels;\\n\\n\\nvoid main(void) {\\n geometry.worldPosition = instancePositions;\\n outerRadiusPixels = clamp(\\n project_size_to_pixel(radiusScale * instanceRadius, radiusUnits),\\n radiusMinPixels, radiusMaxPixels\\n );\\n float lineWidthPixels = clamp(\\n project_size_to_pixel(lineWidthScale * instanceLineWidths, lineWidthUnits),\\n lineWidthMinPixels, lineWidthMaxPixels\\n );\\n outerRadiusPixels += stroked * lineWidthPixels / 2.0;\\n float edgePadding = antialiasing ? (outerRadiusPixels + SMOOTH_EDGE_RADIUS) / outerRadiusPixels : 1.0;\\n unitPosition = edgePadding * positions.xy;\\n geometry.uv = unitPosition;\\n geometry.pickingColor = instancePickingColors;\\n\\n innerUnitRadius = 1.0 - stroked * lineWidthPixels / outerRadiusPixels;\\n \\n if (billboard) {\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n vec3 offset = edgePadding * positions * outerRadiusPixels;\\n DECKGL_FILTER_SIZE(offset, geometry);\\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\\n } else {\\n vec3 offset = edgePadding * positions * project_pixel_size(outerRadiusPixels);\\n DECKGL_FILTER_SIZE(offset, geometry);\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position);\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n }\\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\\n DECKGL_FILTER_COLOR(vFillColor, geometry);\\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\\n DECKGL_FILTER_COLOR(vLineColor, geometry);\\n}\\n\";\n//# sourceMappingURL=scatterplot-layer-vertex.glsl.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME scatterplot-layer-vertex-shader\n\nattribute vec3 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute float instanceRadius;\nattribute float instanceLineWidths;\nattribute vec4 instanceFillColors;\nattribute vec4 instanceLineColors;\nattribute vec3 instancePickingColors;\n\nuniform float opacity;\nuniform float radiusScale;\nuniform float radiusMinPixels;\nuniform float radiusMaxPixels;\nuniform float lineWidthScale;\nuniform float lineWidthMinPixels;\nuniform float lineWidthMaxPixels;\nuniform float stroked;\nuniform bool filled;\nuniform bool antialiasing;\nuniform bool billboard;\nuniform int radiusUnits;\nuniform int lineWidthUnits;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying vec2 unitPosition;\nvarying float innerUnitRadius;\nvarying float outerRadiusPixels;\n\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n\n // Multiply out radius and clamp to limits\n outerRadiusPixels = clamp(\n project_size_to_pixel(radiusScale * instanceRadius, radiusUnits),\n radiusMinPixels, radiusMaxPixels\n );\n \n // Multiply out line width and clamp to limits\n float lineWidthPixels = clamp(\n project_size_to_pixel(lineWidthScale * instanceLineWidths, lineWidthUnits),\n lineWidthMinPixels, lineWidthMaxPixels\n );\n\n // outer radius needs to offset by half stroke width\n outerRadiusPixels += stroked * lineWidthPixels / 2.0;\n\n // Expand geometry to accomodate edge smoothing\n float edgePadding = antialiasing ? (outerRadiusPixels + SMOOTH_EDGE_RADIUS) / outerRadiusPixels : 1.0;\n\n // position on the containing square in [-1, 1] space\n unitPosition = edgePadding * positions.xy;\n geometry.uv = unitPosition;\n geometry.pickingColor = instancePickingColors;\n\n innerUnitRadius = 1.0 - stroked * lineWidthPixels / outerRadiusPixels;\n \n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = edgePadding * positions * outerRadiusPixels;\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n } else {\n vec3 offset = edgePadding * positions * project_pixel_size(outerRadiusPixels);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n\n // Apply opacity to instance color, or return instance picking color\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\n DECKGL_FILTER_COLOR(vFillColor, geometry);\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\n DECKGL_FILTER_COLOR(vLineColor, geometry);\n}\n`;\n","export default \"#define SHADER_NAME scatterplot-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform bool filled;\\nuniform float stroked;\\nuniform bool antialiasing;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying vec2 unitPosition;\\nvarying float innerUnitRadius;\\nvarying float outerRadiusPixels;\\n\\nvoid main(void) {\\n geometry.uv = unitPosition;\\n\\n float distToCenter = length(unitPosition) * outerRadiusPixels;\\n float inCircle = antialiasing ? \\n smoothedge(distToCenter, outerRadiusPixels) : \\n step(distToCenter, outerRadiusPixels);\\n\\n if (inCircle == 0.0) {\\n discard;\\n }\\n\\n if (stroked > 0.5) {\\n float isLine = antialiasing ? \\n smoothedge(innerUnitRadius * outerRadiusPixels, distToCenter) :\\n step(innerUnitRadius * outerRadiusPixels, distToCenter);\\n\\n if (filled) {\\n gl_FragColor = mix(vFillColor, vLineColor, isLine);\\n } else {\\n if (isLine == 0.0) {\\n discard;\\n }\\n gl_FragColor = vec4(vLineColor.rgb, vLineColor.a * isLine);\\n }\\n } else if (!filled) {\\n discard;\\n } else {\\n gl_FragColor = vFillColor;\\n }\\n\\n gl_FragColor.a *= inCircle;\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=scatterplot-layer-fragment.glsl.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME scatterplot-layer-fragment-shader\n\nprecision highp float;\n\nuniform bool filled;\nuniform float stroked;\nuniform bool antialiasing;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying vec2 unitPosition;\nvarying float innerUnitRadius;\nvarying float outerRadiusPixels;\n\nvoid main(void) {\n geometry.uv = unitPosition;\n\n float distToCenter = length(unitPosition) * outerRadiusPixels;\n float inCircle = antialiasing ? \n smoothedge(distToCenter, outerRadiusPixels) : \n step(distToCenter, outerRadiusPixels);\n\n if (inCircle == 0.0) {\n discard;\n }\n\n if (stroked > 0.5) {\n float isLine = antialiasing ? \n smoothedge(innerUnitRadius * outerRadiusPixels, distToCenter) :\n step(innerUnitRadius * outerRadiusPixels, distToCenter);\n\n if (filled) {\n gl_FragColor = mix(vFillColor, vLineColor, isLine);\n } else {\n if (isLine == 0.0) {\n discard;\n }\n gl_FragColor = vec4(vLineColor.rgb, vLineColor.a * isLine);\n }\n } else if (!filled) {\n discard;\n } else {\n gl_FragColor = vFillColor;\n }\n\n gl_FragColor.a *= inCircle;\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { CompositeLayer, createIterable, log } from '@deck.gl/core';\nimport MultiIconLayer from './multi-icon-layer/multi-icon-layer';\nimport FontAtlasManager, { DEFAULT_FONT_SETTINGS, setFontAtlasCacheLimit } from './font-atlas-manager';\nimport { transformParagraph, getTextFromBuffer } from './utils';\nimport TextBackgroundLayer from './text-background-layer/text-background-layer';\nconst TEXT_ANCHOR = {\n start: 1,\n middle: 0,\n end: -1\n};\nconst ALIGNMENT_BASELINE = {\n top: 1,\n center: 0,\n bottom: -1\n};\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst DEFAULT_LINE_HEIGHT = 1.0;\nconst defaultProps = {\n billboard: true,\n sizeScale: 1,\n sizeUnits: 'pixels',\n sizeMinPixels: 0,\n sizeMaxPixels: Number.MAX_SAFE_INTEGER,\n background: false,\n getBackgroundColor: {\n type: 'accessor',\n value: [255, 255, 255, 255]\n },\n getBorderColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n getBorderWidth: {\n type: 'accessor',\n value: 0\n },\n backgroundPadding: {\n type: 'array',\n value: [0, 0, 0, 0]\n },\n characterSet: {\n type: 'object',\n value: DEFAULT_FONT_SETTINGS.characterSet\n },\n fontFamily: DEFAULT_FONT_SETTINGS.fontFamily,\n fontWeight: DEFAULT_FONT_SETTINGS.fontWeight,\n lineHeight: DEFAULT_LINE_HEIGHT,\n outlineWidth: {\n type: 'number',\n value: 0,\n min: 0\n },\n outlineColor: {\n type: 'color',\n value: DEFAULT_COLOR\n },\n fontSettings: {\n type: 'object',\n value: {},\n compare: 1\n },\n wordBreak: 'break-word',\n maxWidth: {\n type: 'number',\n value: -1\n },\n getText: {\n type: 'accessor',\n value: x => x.text\n },\n getPosition: {\n type: 'accessor',\n value: x => x.position\n },\n getColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n getSize: {\n type: 'accessor',\n value: 32\n },\n getAngle: {\n type: 'accessor',\n value: 0\n },\n getTextAnchor: {\n type: 'accessor',\n value: 'middle'\n },\n getAlignmentBaseline: {\n type: 'accessor',\n value: 'center'\n },\n getPixelOffset: {\n type: 'accessor',\n value: [0, 0]\n },\n backgroundColor: {\n deprecatedFor: ['background', 'getBackgroundColor']\n }\n};\nexport default class TextLayer extends CompositeLayer {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", void 0);\n\n _defineProperty(this, \"getBoundingRect\", (object, objectInfo) => {\n let {\n size: [width, height]\n } = this.transformParagraph(object, objectInfo);\n const {\n fontSize\n } = this.state.fontAtlasManager.props;\n width /= fontSize;\n height /= fontSize;\n const {\n getTextAnchor,\n getAlignmentBaseline\n } = this.props;\n const anchorX = TEXT_ANCHOR[typeof getTextAnchor === 'function' ? getTextAnchor(object, objectInfo) : getTextAnchor];\n const anchorY = ALIGNMENT_BASELINE[typeof getAlignmentBaseline === 'function' ? getAlignmentBaseline(object, objectInfo) : getAlignmentBaseline];\n return [(anchorX - 1) * width / 2, (anchorY - 1) * height / 2, width, height];\n });\n\n _defineProperty(this, \"getIconOffsets\", (object, objectInfo) => {\n const {\n getTextAnchor,\n getAlignmentBaseline\n } = this.props;\n const {\n x,\n y,\n rowWidth,\n size: [width, height]\n } = this.transformParagraph(object, objectInfo);\n const anchorX = TEXT_ANCHOR[typeof getTextAnchor === 'function' ? getTextAnchor(object, objectInfo) : getTextAnchor];\n const anchorY = ALIGNMENT_BASELINE[typeof getAlignmentBaseline === 'function' ? getAlignmentBaseline(object, objectInfo) : getAlignmentBaseline];\n const numCharacters = x.length;\n const offsets = new Array(numCharacters * 2);\n let index = 0;\n\n for (let i = 0; i < numCharacters; i++) {\n const rowOffset = (1 - anchorX) * (width - rowWidth[i]) / 2;\n offsets[index++] = (anchorX - 1) * width / 2 + rowOffset + x[i];\n offsets[index++] = (anchorY - 1) * height / 2 + y[i];\n }\n\n return offsets;\n });\n }\n\n initializeState() {\n this.state = {\n styleVersion: 0,\n fontAtlasManager: new FontAtlasManager()\n };\n\n if (this.props.maxWidth > 0) {\n log.warn('v8.9 breaking change: TextLayer maxWidth is now relative to text size')();\n }\n }\n\n updateState(params) {\n const {\n props,\n oldProps,\n changeFlags\n } = params;\n const textChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getText);\n\n if (textChanged) {\n this._updateText();\n }\n\n const fontChanged = this._updateFontAtlas();\n\n const styleChanged = fontChanged || props.lineHeight !== oldProps.lineHeight || props.wordBreak !== oldProps.wordBreak || props.maxWidth !== oldProps.maxWidth;\n\n if (styleChanged) {\n this.setState({\n styleVersion: this.state.styleVersion + 1\n });\n }\n }\n\n getPickingInfo({\n info\n }) {\n info.object = info.index >= 0 ? this.props.data[info.index] : null;\n return info;\n }\n\n _updateFontAtlas() {\n const {\n fontSettings,\n fontFamily,\n fontWeight\n } = this.props;\n const {\n fontAtlasManager,\n characterSet\n } = this.state;\n const fontProps = { ...fontSettings,\n characterSet,\n fontFamily,\n fontWeight\n };\n\n if (!fontAtlasManager.mapping) {\n fontAtlasManager.setProps(fontProps);\n return true;\n }\n\n for (const key in fontProps) {\n if (fontProps[key] !== fontAtlasManager.props[key]) {\n fontAtlasManager.setProps(fontProps);\n return true;\n }\n }\n\n return false;\n }\n\n _updateText() {\n var _attributes;\n\n const {\n data,\n characterSet\n } = this.props;\n const textBuffer = (_attributes = data.attributes) === null || _attributes === void 0 ? void 0 : _attributes.getText;\n let {\n getText\n } = this.props;\n let startIndices = data.startIndices;\n let numInstances;\n const autoCharacterSet = characterSet === 'auto' && new Set();\n\n if (textBuffer && startIndices) {\n const {\n texts,\n characterCount\n } = getTextFromBuffer({ ...(ArrayBuffer.isView(textBuffer) ? {\n value: textBuffer\n } : textBuffer),\n length: data.length,\n startIndices,\n characterSet: autoCharacterSet\n });\n numInstances = characterCount;\n\n getText = (_, {\n index\n }) => texts[index];\n } else {\n const {\n iterable,\n objectInfo\n } = createIterable(data);\n startIndices = [0];\n numInstances = 0;\n\n for (const object of iterable) {\n objectInfo.index++;\n const text = Array.from(getText(object, objectInfo) || '');\n\n if (autoCharacterSet) {\n text.forEach(autoCharacterSet.add, autoCharacterSet);\n }\n\n numInstances += text.length;\n startIndices.push(numInstances);\n }\n }\n\n this.setState({\n getText,\n startIndices,\n numInstances,\n characterSet: autoCharacterSet || characterSet\n });\n }\n\n transformParagraph(object, objectInfo) {\n const {\n fontAtlasManager\n } = this.state;\n const iconMapping = fontAtlasManager.mapping;\n const getText = this.state.getText;\n const {\n wordBreak,\n lineHeight,\n maxWidth\n } = this.props;\n const paragraph = getText(object, objectInfo) || '';\n return transformParagraph(paragraph, lineHeight, wordBreak, maxWidth * fontAtlasManager.props.fontSize, iconMapping);\n }\n\n renderLayers() {\n const {\n startIndices,\n numInstances,\n getText,\n fontAtlasManager: {\n scale,\n texture,\n mapping\n },\n styleVersion\n } = this.state;\n const {\n data,\n _dataDiff,\n getPosition,\n getColor,\n getSize,\n getAngle,\n getPixelOffset,\n getBackgroundColor,\n getBorderColor,\n getBorderWidth,\n backgroundPadding,\n background,\n billboard,\n fontSettings,\n outlineWidth,\n outlineColor,\n sizeScale,\n sizeUnits,\n sizeMinPixels,\n sizeMaxPixels,\n transitions,\n updateTriggers\n } = this.props;\n const CharactersLayerClass = this.getSubLayerClass('characters', MultiIconLayer);\n const BackgroundLayerClass = this.getSubLayerClass('background', TextBackgroundLayer);\n return [background && new BackgroundLayerClass({\n getFillColor: getBackgroundColor,\n getLineColor: getBorderColor,\n getLineWidth: getBorderWidth,\n padding: backgroundPadding,\n getPosition,\n getSize,\n getAngle,\n getPixelOffset,\n billboard,\n sizeScale,\n sizeUnits,\n sizeMinPixels,\n sizeMaxPixels,\n transitions: transitions && {\n getPosition: transitions.getPosition,\n getAngle: transitions.getAngle,\n getSize: transitions.getSize,\n getFillColor: transitions.getBackgroundColor,\n getLineColor: transitions.getBorderColor,\n getLineWidth: transitions.getBorderWidth,\n getPixelOffset: transitions.getPixelOffset\n }\n }, this.getSubLayerProps({\n id: 'background',\n updateTriggers: {\n getPosition: updateTriggers.getPosition,\n getAngle: updateTriggers.getAngle,\n getSize: updateTriggers.getSize,\n getFillColor: updateTriggers.getBackgroundColor,\n getLineColor: updateTriggers.getBorderColor,\n getLineWidth: updateTriggers.getBorderWidth,\n getPixelOffset: updateTriggers.getPixelOffset,\n getBoundingRect: {\n getText: updateTriggers.getText,\n getTextAnchor: updateTriggers.getTextAnchor,\n getAlignmentBaseline: updateTriggers.getAlignmentBaseline,\n styleVersion\n }\n }\n }), {\n data: data.attributes && data.attributes.background ? {\n length: data.length,\n attributes: data.attributes.background\n } : data,\n _dataDiff,\n autoHighlight: false,\n getBoundingRect: this.getBoundingRect\n }), new CharactersLayerClass({\n sdf: fontSettings.sdf,\n smoothing: Number.isFinite(fontSettings.smoothing) ? fontSettings.smoothing : DEFAULT_FONT_SETTINGS.smoothing,\n outlineWidth: outlineWidth / (fontSettings.radius || DEFAULT_FONT_SETTINGS.radius),\n outlineColor,\n iconAtlas: texture,\n iconMapping: mapping,\n getPosition,\n getColor,\n getSize,\n getAngle,\n getPixelOffset,\n billboard,\n sizeScale: sizeScale * scale,\n sizeUnits,\n sizeMinPixels: sizeMinPixels * scale,\n sizeMaxPixels: sizeMaxPixels * scale,\n transitions: transitions && {\n getPosition: transitions.getPosition,\n getAngle: transitions.getAngle,\n getColor: transitions.getColor,\n getSize: transitions.getSize,\n getPixelOffset: transitions.getPixelOffset\n }\n }, this.getSubLayerProps({\n id: 'characters',\n updateTriggers: {\n all: updateTriggers.getText,\n getPosition: updateTriggers.getPosition,\n getAngle: updateTriggers.getAngle,\n getColor: updateTriggers.getColor,\n getSize: updateTriggers.getSize,\n getPixelOffset: updateTriggers.getPixelOffset,\n getIconOffsets: {\n getTextAnchor: updateTriggers.getTextAnchor,\n getAlignmentBaseline: updateTriggers.getAlignmentBaseline,\n styleVersion\n }\n }\n }), {\n data,\n _dataDiff,\n startIndices,\n numInstances,\n getIconOffsets: this.getIconOffsets,\n getIcon: getText\n })];\n }\n\n static set fontAtlasCacheLimit(limit) {\n setFontAtlasCacheLimit(limit);\n }\n\n}\n\n_defineProperty(TextLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(TextLayer, \"layerName\", 'TextLayer');\n//# sourceMappingURL=text-layer.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {CompositeLayer, createIterable, log} from '@deck.gl/core';\nimport MultiIconLayer from './multi-icon-layer/multi-icon-layer';\nimport FontAtlasManager, {\n DEFAULT_FONT_SETTINGS,\n setFontAtlasCacheLimit\n} from './font-atlas-manager';\nimport {transformParagraph, getTextFromBuffer} from './utils';\n\nimport TextBackgroundLayer from './text-background-layer/text-background-layer';\n\nimport type {FontSettings} from './font-atlas-manager';\nimport type {\n LayerProps,\n LayerDataSource,\n Accessor,\n AccessorFunction,\n AccessorContext,\n Unit,\n Position,\n Color,\n UpdateParameters,\n GetPickingInfoParams,\n PickingInfo,\n DefaultProps\n} from '@deck.gl/core';\n\nconst TEXT_ANCHOR = {\n start: 1,\n middle: 0,\n end: -1\n} as const;\n\nconst ALIGNMENT_BASELINE = {\n top: 1,\n center: 0,\n bottom: -1\n} as const;\n\nconst DEFAULT_COLOR: [number, number, number, number] = [0, 0, 0, 255];\n\nconst DEFAULT_LINE_HEIGHT = 1.0;\n\ntype _TextLayerProps = {\n data: LayerDataSource;\n /** If `true`, the text always faces camera. Otherwise the text faces up (z).\n * @default true\n */\n billboard?: boolean;\n /**\n * Text size multiplier.\n * @default 1\n */\n sizeScale?: number;\n /**\n * The units of the size, one of `'meters'`, `'common'`, and `'pixels'`.\n * @default 'pixels'\n */\n sizeUnits?: Unit;\n /**\n * The minimum size in pixels. When using non-pixel `sizeUnits`, this prop can be used to prevent the icon from getting too small when zoomed out.\n * @default 0\n */\n sizeMinPixels?: number;\n /**\n * The maximum size in pixels. When using non-pixel `sizeUnits`, this prop can be used to prevent the icon from getting too big when zoomed in.\n * @default Number.MAX_SAFE_INTEGER\n */\n sizeMaxPixels?: number;\n\n /** Whether to render background for the text blocks.\n * @default false\n */\n background?: boolean;\n /** Background color accessor.\n * @default [255, 255, 255, 255]\n */\n getBackgroundColor?: Accessor;\n /** Border color accessor.\n * @default [0, 0, 0, 255]\n */\n getBorderColor?: Accessor;\n /** Border width accessor.\n * @default 0\n */\n getBorderWidth?: Accessor;\n /**\n * The padding of the background..\n * If an array of 2 is supplied, it is interpreted as `[padding_x, padding_y]` in pixels.\n * If an array of 4 is supplied, it is interpreted as `[padding_left, padding_top, padding_right, padding_bottom]` in pixels.\n * @default [0, 0, 0, 0]\n */\n backgroundPadding?: [number, number] | [number, number, number, number];\n /**\n * Specifies a list of characters to include in the font. If set to 'auto', will be automatically generated from the data set.\n * @default (ASCII characters 32-128)\n */\n characterSet?: FontSettings['characterSet'] | 'auto';\n /** CSS font family\n * @default 'Monaco, monospace'\n */\n fontFamily?: FontSettings['fontFamily'];\n /** CSS font weight\n * @default 'normal'\n */\n fontWeight?: FontSettings['fontWeight'];\n /** A unitless number that will be multiplied with the current text size to set the line height.\n * @default 'normal'\n */\n lineHeight?: number;\n /**\n * Width of outline around the text, relative to the text size. Only effective if `fontSettings.sdf` is `true`.\n * @default 0\n */\n outlineWidth?: number;\n /**\n * Color of outline around the text, in `[r, g, b, [a]]`. Each channel is a number between 0-255 and `a` is 255 if not supplied.\n * @default [0, 0, 0, 255]\n */\n outlineColor?: Color;\n /**\n * Advance options for fine tuning the appearance and performance of the generated shared `fontAtlas`.\n */\n fontSettings?: FontSettings;\n /**\n * Available options are `break-all` and `break-word`. A valid `maxWidth` has to be provided to use `wordBreak`.\n * @default 'break-word'\n */\n wordBreak?: 'break-word' | 'break-all';\n /**\n * A unitless number that will be multiplied with the current text size to set the width limit of a string.\n * If specified, when the text is longer than the width limit, it will be wrapped into multiple lines using\n * the strategy of `wordBreak`.\n * @default -1\n */\n maxWidth?: number;\n /**\n * Label text accessor\n */\n getText?: AccessorFunction;\n /**\n * Anchor position accessor\n */\n getPosition?: Accessor;\n /**\n * Label color accessor\n * @default [0, 0, 0, 255]\n */\n getColor?: Accessor;\n /**\n * Label size accessor\n * @default 32\n */\n getSize?: Accessor;\n /**\n * Label rotation accessor, in degrees\n * @default 0\n */\n getAngle?: Accessor;\n /**\n * Horizontal alignment accessor\n * @default 'middle'\n */\n getTextAnchor?: Accessor;\n /**\n * Vertical alignment accessor\n * @default 'center'\n */\n getAlignmentBaseline?: Accessor;\n /**\n * Label offset from the anchor position, [x, y] in pixels\n * @default [0, 0]\n */\n getPixelOffset?: Accessor;\n /**\n * @deprecated Use `background` and `getBackgroundColor` instead\n */\n backgroundColor?: Color;\n};\n\nexport type TextLayerProps = _TextLayerProps & LayerProps;\n\nconst defaultProps: DefaultProps = {\n billboard: true,\n sizeScale: 1,\n sizeUnits: 'pixels',\n sizeMinPixels: 0,\n sizeMaxPixels: Number.MAX_SAFE_INTEGER,\n\n background: false,\n getBackgroundColor: {type: 'accessor', value: [255, 255, 255, 255]},\n getBorderColor: {type: 'accessor', value: DEFAULT_COLOR},\n getBorderWidth: {type: 'accessor', value: 0},\n backgroundPadding: {type: 'array', value: [0, 0, 0, 0]},\n\n characterSet: {type: 'object', value: DEFAULT_FONT_SETTINGS.characterSet},\n fontFamily: DEFAULT_FONT_SETTINGS.fontFamily,\n fontWeight: DEFAULT_FONT_SETTINGS.fontWeight,\n lineHeight: DEFAULT_LINE_HEIGHT,\n outlineWidth: {type: 'number', value: 0, min: 0},\n outlineColor: {type: 'color', value: DEFAULT_COLOR},\n fontSettings: {type: 'object', value: {}, compare: 1},\n\n // auto wrapping options\n wordBreak: 'break-word',\n maxWidth: {type: 'number', value: -1},\n\n getText: {type: 'accessor', value: x => x.text},\n getPosition: {type: 'accessor', value: x => x.position},\n getColor: {type: 'accessor', value: DEFAULT_COLOR},\n getSize: {type: 'accessor', value: 32},\n getAngle: {type: 'accessor', value: 0},\n getTextAnchor: {type: 'accessor', value: 'middle'},\n getAlignmentBaseline: {type: 'accessor', value: 'center'},\n getPixelOffset: {type: 'accessor', value: [0, 0]},\n\n // deprecated\n backgroundColor: {deprecatedFor: ['background', 'getBackgroundColor']}\n};\n\n/** Render text labels at given coordinates. */\nexport default class TextLayer extends CompositeLayer<\n ExtraPropsT & Required<_TextLayerProps>\n> {\n static defaultProps = defaultProps;\n static layerName = 'TextLayer';\n\n state!: {\n styleVersion: number;\n fontAtlasManager: FontAtlasManager;\n characterSet?: Set;\n startIndices?: number[];\n numInstances?: number;\n getText?: AccessorFunction;\n };\n\n initializeState() {\n this.state = {\n styleVersion: 0,\n fontAtlasManager: new FontAtlasManager()\n };\n\n // Breaking change in v8.9\n if (this.props.maxWidth > 0) {\n log.warn('v8.9 breaking change: TextLayer maxWidth is now relative to text size')();\n }\n }\n\n // eslint-disable-next-line complexity\n updateState(params: UpdateParameters) {\n const {props, oldProps, changeFlags} = params;\n const textChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getText));\n\n if (textChanged) {\n this._updateText();\n }\n\n const fontChanged = this._updateFontAtlas();\n\n const styleChanged =\n fontChanged ||\n props.lineHeight !== oldProps.lineHeight ||\n props.wordBreak !== oldProps.wordBreak ||\n props.maxWidth !== oldProps.maxWidth;\n\n if (styleChanged) {\n this.setState({\n styleVersion: this.state.styleVersion + 1\n });\n }\n }\n\n getPickingInfo({info}: GetPickingInfoParams): PickingInfo {\n // because `TextLayer` assign the same pickingInfoIndex for one text label,\n // here info.index refers the index of text label in props.data\n info.object = info.index >= 0 ? this.props.data[info.index] : null;\n return info;\n }\n\n /** Returns true if font has changed */\n private _updateFontAtlas(): boolean {\n const {fontSettings, fontFamily, fontWeight} = this.props;\n const {fontAtlasManager, characterSet} = this.state;\n\n const fontProps = {\n ...fontSettings,\n characterSet,\n fontFamily,\n fontWeight\n };\n\n if (!fontAtlasManager.mapping) {\n // This is the first update\n fontAtlasManager.setProps(fontProps);\n return true;\n }\n\n for (const key in fontProps) {\n if (fontProps[key] !== fontAtlasManager.props[key]) {\n fontAtlasManager.setProps(fontProps);\n return true;\n }\n }\n\n return false;\n }\n\n // Text strings are variable width objects\n // Count characters and start offsets\n private _updateText() {\n const {data, characterSet} = this.props;\n const textBuffer = (data as any).attributes?.getText;\n let {getText} = this.props;\n let startIndices: number[] = (data as any).startIndices;\n let numInstances: number;\n\n const autoCharacterSet = characterSet === 'auto' && new Set();\n\n if (textBuffer && startIndices) {\n const {texts, characterCount} = getTextFromBuffer({\n ...(ArrayBuffer.isView(textBuffer) ? {value: textBuffer} : textBuffer),\n // @ts-ignore if data.attribute is defined then length is expected\n length: data.length,\n startIndices,\n characterSet: autoCharacterSet\n });\n numInstances = characterCount;\n getText = (_, {index}) => texts[index];\n } else {\n const {iterable, objectInfo} = createIterable(data);\n startIndices = [0];\n numInstances = 0;\n\n for (const object of iterable) {\n objectInfo.index++;\n // Break into an array of characters\n // When dealing with double-length unicode characters, `str.length` or `str[i]` do not work\n const text = Array.from(getText(object, objectInfo) || '');\n if (autoCharacterSet) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n text.forEach(autoCharacterSet.add, autoCharacterSet);\n }\n numInstances += text.length;\n startIndices.push(numInstances);\n }\n }\n\n this.setState({\n getText,\n startIndices,\n numInstances,\n characterSet: autoCharacterSet || characterSet\n });\n }\n\n /** There are two size systems in this layer:\n\n + Pixel size: user-specified text size, via getSize, sizeScale, sizeUnits etc.\n The layer roughly matches the output of the layer to CSS pixels, e.g. getSize: 12, sizeScale: 2\n in layer props is roughly equivalent to font-size: 24px in CSS.\n + Texture size: internally, character positions in a text blob are calculated using the sizes of iconMapping,\n which depends on how large each character is drawn into the font atlas. This is controlled by\n fontSettings.fontSize (default 64) and most users do not set it manually.\n These numbers are intended to be used in the vertex shader and never to be exposed to the end user.\n\n All surfaces exposed to the user should either use the pixel size or a multiplier relative to the pixel size. */\n\n /** Calculate the size and position of each character in a text string.\n * Values are in texture size */\n private transformParagraph(\n object: DataT,\n objectInfo: AccessorContext\n ): ReturnType {\n const {fontAtlasManager} = this.state;\n const iconMapping = fontAtlasManager.mapping!;\n const getText = this.state.getText!;\n const {wordBreak, lineHeight, maxWidth} = this.props;\n\n const paragraph = getText(object, objectInfo) || '';\n return transformParagraph(\n paragraph,\n lineHeight,\n wordBreak,\n maxWidth * fontAtlasManager.props.fontSize,\n iconMapping\n );\n }\n\n /** Returns the x, y, width, height of each text string, relative to pixel size.\n * Used to render the background.\n */\n private getBoundingRect: AccessorFunction = (\n object,\n objectInfo\n ) => {\n let {\n size: [width, height]\n } = this.transformParagraph(object, objectInfo);\n const {fontSize} = this.state.fontAtlasManager.props;\n width /= fontSize;\n height /= fontSize;\n\n const {getTextAnchor, getAlignmentBaseline} = this.props;\n const anchorX =\n TEXT_ANCHOR[\n typeof getTextAnchor === 'function' ? getTextAnchor(object, objectInfo) : getTextAnchor\n ];\n const anchorY =\n ALIGNMENT_BASELINE[\n typeof getAlignmentBaseline === 'function'\n ? getAlignmentBaseline(object, objectInfo)\n : getAlignmentBaseline\n ];\n\n return [((anchorX - 1) * width) / 2, ((anchorY - 1) * height) / 2, width, height];\n };\n\n /** Returns the x, y offsets of each character in a text string, in texture size.\n * Used to layout characters in the vertex shader.\n */\n private getIconOffsets: AccessorFunction = (object, objectInfo) => {\n const {getTextAnchor, getAlignmentBaseline} = this.props;\n\n const {\n x,\n y,\n rowWidth,\n size: [width, height]\n } = this.transformParagraph(object, objectInfo);\n const anchorX =\n TEXT_ANCHOR[\n typeof getTextAnchor === 'function' ? getTextAnchor(object, objectInfo) : getTextAnchor\n ];\n const anchorY =\n ALIGNMENT_BASELINE[\n typeof getAlignmentBaseline === 'function'\n ? getAlignmentBaseline(object, objectInfo)\n : getAlignmentBaseline\n ];\n\n const numCharacters = x.length;\n const offsets = new Array(numCharacters * 2);\n let index = 0;\n\n for (let i = 0; i < numCharacters; i++) {\n // For a multi-line object, offset in x-direction needs consider\n // the row offset in the paragraph and the object offset in the row\n const rowOffset = ((1 - anchorX) * (width - rowWidth[i])) / 2;\n offsets[index++] = ((anchorX - 1) * width) / 2 + rowOffset + x[i];\n offsets[index++] = ((anchorY - 1) * height) / 2 + y[i];\n }\n return offsets;\n };\n\n renderLayers() {\n const {\n startIndices,\n numInstances,\n getText,\n fontAtlasManager: {scale, texture, mapping},\n styleVersion\n } = this.state;\n\n const {\n data,\n _dataDiff,\n getPosition,\n getColor,\n getSize,\n getAngle,\n getPixelOffset,\n getBackgroundColor,\n getBorderColor,\n getBorderWidth,\n backgroundPadding,\n background,\n billboard,\n fontSettings,\n outlineWidth,\n outlineColor,\n sizeScale,\n sizeUnits,\n sizeMinPixels,\n sizeMaxPixels,\n transitions,\n updateTriggers\n } = this.props;\n\n const CharactersLayerClass = this.getSubLayerClass('characters', MultiIconLayer);\n const BackgroundLayerClass = this.getSubLayerClass('background', TextBackgroundLayer);\n\n return [\n background &&\n new BackgroundLayerClass(\n {\n // background props\n getFillColor: getBackgroundColor,\n getLineColor: getBorderColor,\n getLineWidth: getBorderWidth,\n padding: backgroundPadding,\n\n // props shared with characters layer\n getPosition,\n getSize,\n getAngle,\n getPixelOffset,\n billboard,\n sizeScale,\n sizeUnits,\n sizeMinPixels,\n sizeMaxPixels,\n\n transitions: transitions && {\n getPosition: transitions.getPosition,\n getAngle: transitions.getAngle,\n getSize: transitions.getSize,\n getFillColor: transitions.getBackgroundColor,\n getLineColor: transitions.getBorderColor,\n getLineWidth: transitions.getBorderWidth,\n getPixelOffset: transitions.getPixelOffset\n }\n },\n this.getSubLayerProps({\n id: 'background',\n updateTriggers: {\n getPosition: updateTriggers.getPosition,\n getAngle: updateTriggers.getAngle,\n getSize: updateTriggers.getSize,\n getFillColor: updateTriggers.getBackgroundColor,\n getLineColor: updateTriggers.getBorderColor,\n getLineWidth: updateTriggers.getBorderWidth,\n getPixelOffset: updateTriggers.getPixelOffset,\n getBoundingRect: {\n getText: updateTriggers.getText,\n getTextAnchor: updateTriggers.getTextAnchor,\n getAlignmentBaseline: updateTriggers.getAlignmentBaseline,\n styleVersion\n }\n }\n }),\n {\n data:\n // @ts-ignore (2339) attribute is not defined on all data types\n data.attributes && data.attributes.background\n ? // @ts-ignore (2339) attribute is not defined on all data types\n {length: data.length, attributes: data.attributes.background}\n : data,\n _dataDiff,\n // Maintain the same background behavior as <=8.3. Remove in v9?\n autoHighlight: false,\n getBoundingRect: this.getBoundingRect\n }\n ),\n new CharactersLayerClass(\n {\n sdf: fontSettings.sdf,\n smoothing: Number.isFinite(fontSettings.smoothing)\n ? fontSettings.smoothing\n : DEFAULT_FONT_SETTINGS.smoothing,\n outlineWidth: outlineWidth / (fontSettings.radius || DEFAULT_FONT_SETTINGS.radius),\n outlineColor,\n iconAtlas: texture,\n iconMapping: mapping,\n\n getPosition,\n getColor,\n getSize,\n getAngle,\n getPixelOffset,\n\n billboard,\n sizeScale: sizeScale * scale,\n sizeUnits,\n sizeMinPixels: sizeMinPixels * scale,\n sizeMaxPixels: sizeMaxPixels * scale,\n\n transitions: transitions && {\n getPosition: transitions.getPosition,\n getAngle: transitions.getAngle,\n getColor: transitions.getColor,\n getSize: transitions.getSize,\n getPixelOffset: transitions.getPixelOffset\n }\n },\n this.getSubLayerProps({\n id: 'characters',\n updateTriggers: {\n all: updateTriggers.getText,\n getPosition: updateTriggers.getPosition,\n getAngle: updateTriggers.getAngle,\n getColor: updateTriggers.getColor,\n getSize: updateTriggers.getSize,\n getPixelOffset: updateTriggers.getPixelOffset,\n getIconOffsets: {\n getTextAnchor: updateTriggers.getTextAnchor,\n getAlignmentBaseline: updateTriggers.getAlignmentBaseline,\n styleVersion\n }\n }\n }),\n {\n data,\n _dataDiff,\n startIndices,\n numInstances,\n getIconOffsets: this.getIconOffsets,\n getIcon: getText\n }\n )\n ];\n }\n\n static set fontAtlasCacheLimit(limit: number) {\n setFontAtlasCacheLimit(limit);\n }\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { log } from '@deck.gl/core';\nimport IconLayer from '../../icon-layer/icon-layer';\nimport fs from './multi-icon-layer-fragment.glsl';\nconst DEFAULT_BUFFER = 192.0 / 256;\nconst EMPTY_ARRAY = [];\nconst defaultProps = {\n getIconOffsets: {\n type: 'accessor',\n value: x => x.offsets\n },\n alphaCutoff: 0.001,\n smoothing: 0.1,\n outlineWidth: 0,\n outlineColor: {\n type: 'color',\n value: [0, 0, 0, 255]\n }\n};\nexport default class MultiIconLayer extends IconLayer {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", void 0);\n }\n\n getShaders() {\n return { ...super.getShaders(),\n fs\n };\n }\n\n initializeState() {\n super.initializeState();\n const attributeManager = this.getAttributeManager();\n attributeManager.addInstanced({\n instanceOffsets: {\n size: 2,\n accessor: 'getIconOffsets'\n },\n instancePickingColors: {\n type: 5121,\n size: 3,\n accessor: (object, {\n index,\n target: value\n }) => this.encodePickingColor(index, value)\n }\n });\n }\n\n updateState(params) {\n super.updateState(params);\n const {\n props,\n oldProps\n } = params;\n let {\n outlineColor\n } = props;\n\n if (outlineColor !== oldProps.outlineColor) {\n outlineColor = outlineColor.map(x => x / 255);\n outlineColor[3] = Number.isFinite(outlineColor[3]) ? outlineColor[3] : 1;\n this.setState({\n outlineColor\n });\n }\n\n if (!props.sdf && props.outlineWidth) {\n log.warn(\"\".concat(this.id, \": fontSettings.sdf is required to render outline\"))();\n }\n }\n\n draw(params) {\n const {\n sdf,\n smoothing,\n outlineWidth\n } = this.props;\n const {\n outlineColor\n } = this.state;\n const outlineBuffer = outlineWidth ? Math.max(smoothing, DEFAULT_BUFFER * (1 - outlineWidth)) : -1;\n params.uniforms = { ...params.uniforms,\n sdfBuffer: DEFAULT_BUFFER,\n outlineBuffer,\n gamma: smoothing,\n sdf: Boolean(sdf),\n outlineColor\n };\n super.draw(params);\n\n if (sdf && outlineWidth) {\n const {\n iconManager\n } = this.state;\n const iconsTexture = iconManager.getTexture();\n\n if (iconsTexture) {\n this.state.model.draw({\n uniforms: {\n outlineBuffer: DEFAULT_BUFFER\n }\n });\n }\n }\n }\n\n getInstanceOffset(icons) {\n return icons ? Array.from(icons).flatMap(icon => super.getInstanceOffset(icon)) : EMPTY_ARRAY;\n }\n\n getInstanceColorMode(icons) {\n return 1;\n }\n\n getInstanceIconFrame(icons) {\n return icons ? Array.from(icons).flatMap(icon => super.getInstanceIconFrame(icon)) : EMPTY_ARRAY;\n }\n\n}\n\n_defineProperty(MultiIconLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(MultiIconLayer, \"layerName\", 'MultiIconLayer');\n//# sourceMappingURL=multi-icon-layer.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport GL from '@luma.gl/constants';\nimport {log} from '@deck.gl/core';\nimport IconLayer from '../../icon-layer/icon-layer';\n\nimport fs from './multi-icon-layer-fragment.glsl';\n\nimport type {IconLayerProps} from '../../icon-layer/icon-layer';\nimport type {Accessor, Color, UpdateParameters, DefaultProps} from '@deck.gl/core';\n\n// TODO expose as layer properties\nconst DEFAULT_BUFFER = 192.0 / 256;\nconst EMPTY_ARRAY = [];\n\ntype _MultiIconLayerProps = {\n getIconOffsets?: Accessor;\n sdf?: boolean;\n smoothing?: number;\n outlineWidth?: number;\n outlineColor?: Color;\n};\n\nexport type MultiIconLayerProps = _MultiIconLayerProps & IconLayerProps;\n\nconst defaultProps: DefaultProps = {\n getIconOffsets: {type: 'accessor', value: x => x.offsets},\n alphaCutoff: 0.001,\n smoothing: 0.1,\n outlineWidth: 0,\n outlineColor: {type: 'color', value: [0, 0, 0, 255]}\n};\n\nexport default class MultiIconLayer extends IconLayer<\n DataT,\n ExtraPropsT & Required<_MultiIconLayerProps>\n> {\n static defaultProps = defaultProps;\n static layerName = 'MultiIconLayer';\n\n state!: IconLayer['state'] & {\n outlineColor: Color;\n };\n\n getShaders() {\n return {...super.getShaders(), fs};\n }\n\n initializeState() {\n super.initializeState();\n\n const attributeManager = this.getAttributeManager();\n attributeManager!.addInstanced({\n instanceOffsets: {\n size: 2,\n accessor: 'getIconOffsets'\n },\n instancePickingColors: {\n type: GL.UNSIGNED_BYTE,\n size: 3,\n accessor: (object, {index, target: value}) => this.encodePickingColor(index, value)\n }\n });\n }\n\n updateState(params: UpdateParameters) {\n super.updateState(params);\n const {props, oldProps} = params;\n let {outlineColor} = props;\n\n if (outlineColor !== oldProps.outlineColor) {\n outlineColor = outlineColor.map(x => x / 255) as Color;\n outlineColor[3] = Number.isFinite(outlineColor[3]) ? outlineColor[3] : 1;\n\n this.setState({\n outlineColor\n });\n }\n if (!props.sdf && props.outlineWidth) {\n log.warn(`${this.id}: fontSettings.sdf is required to render outline`)();\n }\n }\n\n draw(params) {\n const {sdf, smoothing, outlineWidth} = this.props;\n const {outlineColor} = this.state;\n const outlineBuffer = outlineWidth\n ? Math.max(smoothing, DEFAULT_BUFFER * (1 - outlineWidth))\n : -1;\n\n params.uniforms = {\n ...params.uniforms,\n // Refer the following doc about gamma and buffer\n // https://blog.mapbox.com/drawing-text-with-signed-distance-fields-in-mapbox-gl-b0933af6f817\n sdfBuffer: DEFAULT_BUFFER,\n outlineBuffer,\n gamma: smoothing,\n sdf: Boolean(sdf),\n outlineColor\n };\n\n super.draw(params);\n\n // draw text without outline on top to ensure a thick outline won't occlude other characters\n if (sdf && outlineWidth) {\n const {iconManager} = this.state;\n const iconsTexture = iconManager.getTexture();\n\n if (iconsTexture) {\n this.state.model.draw({uniforms: {outlineBuffer: DEFAULT_BUFFER}});\n }\n }\n }\n\n protected getInstanceOffset(icons: string): number[] {\n return icons ? Array.from(icons).flatMap(icon => super.getInstanceOffset(icon)) : EMPTY_ARRAY;\n }\n\n getInstanceColorMode(icons: string): number {\n return 1; // mask\n }\n\n getInstanceIconFrame(icons: string): number[] {\n return icons\n ? Array.from(icons).flatMap(icon => super.getInstanceIconFrame(icon))\n : EMPTY_ARRAY;\n }\n}\n","export default \"#define SHADER_NAME multi-icon-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform float opacity;\\nuniform sampler2D iconsTexture;\\nuniform float gamma;\\nuniform bool sdf;\\nuniform float alphaCutoff;\\nuniform float sdfBuffer;\\nuniform float outlineBuffer;\\nuniform vec4 outlineColor;\\n\\nvarying vec4 vColor;\\nvarying vec2 vTextureCoords;\\nvarying vec2 uv;\\n\\nvoid main(void) {\\n geometry.uv = uv;\\n\\n if (!picking_uActive) {\\n float alpha = texture2D(iconsTexture, vTextureCoords).a;\\n vec4 color = vColor;\\n if (sdf) {\\n float distance = alpha;\\n alpha = smoothstep(sdfBuffer - gamma, sdfBuffer + gamma, distance);\\n\\n if (outlineBuffer > 0.0) {\\n float inFill = alpha;\\n float inBorder = smoothstep(outlineBuffer - gamma, outlineBuffer + gamma, distance);\\n color = mix(outlineColor, vColor, inFill);\\n alpha = inBorder;\\n }\\n }\\n float a = alpha * color.a;\\n \\n if (a < alphaCutoff) {\\n discard;\\n }\\n\\n gl_FragColor = vec4(color.rgb, a * opacity);\\n }\\n\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=multi-icon-layer-fragment.glsl.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME multi-icon-layer-fragment-shader\n\nprecision highp float;\n\nuniform float opacity;\nuniform sampler2D iconsTexture;\nuniform float gamma;\nuniform bool sdf;\nuniform float alphaCutoff;\nuniform float sdfBuffer;\nuniform float outlineBuffer;\nuniform vec4 outlineColor;\n\nvarying vec4 vColor;\nvarying vec2 vTextureCoords;\nvarying vec2 uv;\n\nvoid main(void) {\n geometry.uv = uv;\n\n if (!picking_uActive) {\n float alpha = texture2D(iconsTexture, vTextureCoords).a;\n vec4 color = vColor;\n\n // if enable sdf (signed distance fields)\n if (sdf) {\n float distance = alpha;\n alpha = smoothstep(sdfBuffer - gamma, sdfBuffer + gamma, distance);\n\n if (outlineBuffer > 0.0) {\n float inFill = alpha;\n float inBorder = smoothstep(outlineBuffer - gamma, outlineBuffer + gamma, distance);\n color = mix(outlineColor, vColor, inFill);\n alpha = inBorder;\n }\n }\n\n // Take the global opacity and the alpha from color into account for the alpha component\n float a = alpha * color.a;\n \n if (a < alphaCutoff) {\n discard;\n }\n\n gl_FragColor = vec4(color.rgb, a * opacity);\n }\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport TinySDF from '@mapbox/tiny-sdf';\nimport { log } from '@deck.gl/core';\nimport { buildMapping } from './utils';\nimport LRUCache from './lru-cache';\n\nfunction getDefaultCharacterSet() {\n const charSet = [];\n\n for (let i = 32; i < 128; i++) {\n charSet.push(String.fromCharCode(i));\n }\n\n return charSet;\n}\n\nexport const DEFAULT_FONT_SETTINGS = {\n fontFamily: 'Monaco, monospace',\n fontWeight: 'normal',\n characterSet: getDefaultCharacterSet(),\n fontSize: 64,\n buffer: 4,\n sdf: false,\n cutoff: 0.25,\n radius: 12,\n smoothing: 0.1\n};\nconst MAX_CANVAS_WIDTH = 1024;\nconst BASELINE_SCALE = 0.9;\nconst HEIGHT_SCALE = 1.2;\nconst CACHE_LIMIT = 3;\nlet cache = new LRUCache(CACHE_LIMIT);\n\nfunction getNewChars(cacheKey, characterSet) {\n let newCharSet;\n\n if (typeof characterSet === 'string') {\n newCharSet = new Set(Array.from(characterSet));\n } else {\n newCharSet = new Set(characterSet);\n }\n\n const cachedFontAtlas = cache.get(cacheKey);\n\n if (!cachedFontAtlas) {\n return newCharSet;\n }\n\n for (const char in cachedFontAtlas.mapping) {\n if (newCharSet.has(char)) {\n newCharSet.delete(char);\n }\n }\n\n return newCharSet;\n}\n\nfunction populateAlphaChannel(alphaChannel, imageData) {\n for (let i = 0; i < alphaChannel.length; i++) {\n imageData.data[4 * i + 3] = alphaChannel[i];\n }\n}\n\nfunction setTextStyle(ctx, fontFamily, fontSize, fontWeight) {\n ctx.font = \"\".concat(fontWeight, \" \").concat(fontSize, \"px \").concat(fontFamily);\n ctx.fillStyle = '#000';\n ctx.textBaseline = 'alphabetic';\n ctx.textAlign = 'left';\n}\n\nexport function setFontAtlasCacheLimit(limit) {\n log.assert(Number.isFinite(limit) && limit >= CACHE_LIMIT, 'Invalid cache limit');\n cache = new LRUCache(limit);\n}\nexport default class FontAtlasManager {\n constructor() {\n _defineProperty(this, \"props\", { ...DEFAULT_FONT_SETTINGS\n });\n\n _defineProperty(this, \"_key\", void 0);\n\n _defineProperty(this, \"_atlas\", void 0);\n }\n\n get texture() {\n return this._atlas;\n }\n\n get mapping() {\n return this._atlas && this._atlas.mapping;\n }\n\n get scale() {\n const {\n fontSize,\n buffer\n } = this.props;\n return (fontSize * HEIGHT_SCALE + buffer * 2) / fontSize;\n }\n\n setProps(props = {}) {\n Object.assign(this.props, props);\n this._key = this._getKey();\n const charSet = getNewChars(this._key, this.props.characterSet);\n const cachedFontAtlas = cache.get(this._key);\n\n if (cachedFontAtlas && charSet.size === 0) {\n if (this._atlas !== cachedFontAtlas) {\n this._atlas = cachedFontAtlas;\n }\n\n return;\n }\n\n const fontAtlas = this._generateFontAtlas(charSet, cachedFontAtlas);\n\n this._atlas = fontAtlas;\n cache.set(this._key, fontAtlas);\n }\n\n _generateFontAtlas(characterSet, cachedFontAtlas) {\n const {\n fontFamily,\n fontWeight,\n fontSize,\n buffer,\n sdf,\n radius,\n cutoff\n } = this.props;\n let canvas = cachedFontAtlas && cachedFontAtlas.data;\n\n if (!canvas) {\n canvas = document.createElement('canvas');\n canvas.width = MAX_CANVAS_WIDTH;\n }\n\n const ctx = canvas.getContext('2d', {\n willReadFrequently: true\n });\n setTextStyle(ctx, fontFamily, fontSize, fontWeight);\n const {\n mapping,\n canvasHeight,\n xOffset,\n yOffset\n } = buildMapping({\n getFontWidth: char => ctx.measureText(char).width,\n fontHeight: fontSize * HEIGHT_SCALE,\n buffer,\n characterSet,\n maxCanvasWidth: MAX_CANVAS_WIDTH,\n ...(cachedFontAtlas && {\n mapping: cachedFontAtlas.mapping,\n xOffset: cachedFontAtlas.xOffset,\n yOffset: cachedFontAtlas.yOffset\n })\n });\n\n if (canvas.height !== canvasHeight) {\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n canvas.height = canvasHeight;\n ctx.putImageData(imageData, 0, 0);\n }\n\n setTextStyle(ctx, fontFamily, fontSize, fontWeight);\n\n if (sdf) {\n const tinySDF = new TinySDF({\n fontSize,\n buffer,\n radius,\n cutoff,\n fontFamily,\n fontWeight: \"\".concat(fontWeight)\n });\n\n for (const char of characterSet) {\n const {\n data,\n width,\n height,\n glyphTop\n } = tinySDF.draw(char);\n mapping[char].width = width;\n mapping[char].layoutOffsetY = fontSize * BASELINE_SCALE - glyphTop;\n const imageData = ctx.createImageData(width, height);\n populateAlphaChannel(data, imageData);\n ctx.putImageData(imageData, mapping[char].x, mapping[char].y);\n }\n } else {\n for (const char of characterSet) {\n ctx.fillText(char, mapping[char].x, mapping[char].y + buffer + fontSize * BASELINE_SCALE);\n }\n }\n\n return {\n xOffset,\n yOffset,\n mapping,\n data: canvas,\n width: canvas.width,\n height: canvas.height\n };\n }\n\n _getKey() {\n const {\n fontFamily,\n fontWeight,\n fontSize,\n buffer,\n sdf,\n radius,\n cutoff\n } = this.props;\n\n if (sdf) {\n return \"\".concat(fontFamily, \" \").concat(fontWeight, \" \").concat(fontSize, \" \").concat(buffer, \" \").concat(radius, \" \").concat(cutoff);\n }\n\n return \"\".concat(fontFamily, \" \").concat(fontWeight, \" \").concat(fontSize, \" \").concat(buffer);\n }\n\n}\n//# sourceMappingURL=font-atlas-manager.js.map","/* global document */\nimport TinySDF from '@mapbox/tiny-sdf';\n\nimport {log} from '@deck.gl/core';\n\nimport {buildMapping, CharacterMapping} from './utils';\nimport LRUCache from './lru-cache';\n\nimport type {Texture} from '@deck.gl/core';\n\nfunction getDefaultCharacterSet() {\n const charSet: string[] = [];\n for (let i = 32; i < 128; i++) {\n charSet.push(String.fromCharCode(i));\n }\n return charSet;\n}\n\nexport type FontSettings = {\n /** CSS font family\n * @default 'Monaco, monospace'\n */\n fontFamily?: string;\n /** CSS font weight\n * @default 'normal'\n */\n fontWeight?: string | number;\n /** Specifies a list of characters to include in the font.\n * @default (ASCII characters 32-128)\n */\n characterSet?: Set | string[] | string;\n /** Font size in pixels. This option is only applied for generating `fontAtlas`, it does not impact the size of displayed text labels. Larger `fontSize` will give you a sharper look when rendering text labels with very large font sizes. But larger `fontSize` requires more time and space to generate the `fontAtlas`.\n * @default 64\n */\n fontSize?: number;\n /** Whitespace buffer around each side of the character. In general, bigger `fontSize` requires bigger `buffer`. Increase `buffer` will add more space between each character when layout `characterSet` in `fontAtlas`. This option could be tuned to provide sufficient space for drawing each character and avoiding overlapping of neighboring characters.\n * @default 4\n */\n buffer?: number;\n /** Flag to enable / disable `sdf`. [`sdf` (Signed Distance Fields)](http://cs.brown.edu/people/pfelzens/papers/dt-final.pdf) will provide a sharper look when rendering with very large or small font sizes. `TextLayer` integrates with [`TinySDF`](https://github.com/mapbox/tiny-sdf) which implements the `sdf` algorithm.\n * @default false\n */\n sdf?: boolean;\n /** How much of the radius (relative) is used for the inside part the glyph. Bigger `cutoff` makes character thinner. Smaller `cutoff` makes character look thicker. Only applies when `sdf: true`.\n * @default 0.25\n */\n cutoff?: number;\n /** How many pixels around the glyph shape to use for encoding distance. Bigger radius yields higher quality outcome. Only applies when `sdf: true`.\n * @default 12\n */\n radius?: number;\n /** How much smoothing to apply to the text edges. Only applies when `sdf: true`.\n * @default 0.1\n */\n smoothing?: number;\n};\n\nexport const DEFAULT_FONT_SETTINGS: Required = {\n fontFamily: 'Monaco, monospace',\n fontWeight: 'normal',\n characterSet: getDefaultCharacterSet(),\n fontSize: 64,\n buffer: 4,\n sdf: false,\n cutoff: 0.25,\n radius: 12,\n smoothing: 0.1\n};\n\nconst MAX_CANVAS_WIDTH = 1024;\n\nconst BASELINE_SCALE = 0.9;\nconst HEIGHT_SCALE = 1.2;\n\n// only preserve latest three fontAtlas\nconst CACHE_LIMIT = 3;\n\ntype FontAtlas = {\n /** x position of last character in mapping */\n xOffset: number;\n /** y position of last character in mapping */\n yOffset: number;\n /** bounding box of each character in the texture */\n mapping: CharacterMapping;\n /** packed texture */\n data: HTMLCanvasElement;\n /** texture width */\n width: number;\n /** texture height */\n height: number;\n};\n\nlet cache = new LRUCache(CACHE_LIMIT);\n\n/**\n * get all the chars not in cache\n * @returns chars not in cache\n */\nfunction getNewChars(cacheKey: string, characterSet: Set | string[] | string): Set {\n let newCharSet: Set;\n if (typeof characterSet === 'string') {\n newCharSet = new Set(Array.from(characterSet));\n } else {\n newCharSet = new Set(characterSet);\n }\n\n const cachedFontAtlas = cache.get(cacheKey);\n if (!cachedFontAtlas) {\n return newCharSet;\n }\n\n for (const char in cachedFontAtlas.mapping) {\n if (newCharSet.has(char)) {\n newCharSet.delete(char);\n }\n }\n return newCharSet;\n}\n\nfunction populateAlphaChannel(alphaChannel: Uint8ClampedArray, imageData: ImageData): void {\n // populate distance value from tinySDF to image alpha channel\n for (let i = 0; i < alphaChannel.length; i++) {\n imageData.data[4 * i + 3] = alphaChannel[i];\n }\n}\n\nfunction setTextStyle(\n ctx: CanvasRenderingContext2D,\n fontFamily: string,\n fontSize: number,\n fontWeight: string | number\n): void {\n ctx.font = `${fontWeight} ${fontSize}px ${fontFamily}`;\n ctx.fillStyle = '#000';\n ctx.textBaseline = 'alphabetic';\n ctx.textAlign = 'left';\n}\n\n/**\n * Sets the Font Atlas LRU Cache Limit\n * @param {number} limit LRU Cache limit\n */\nexport function setFontAtlasCacheLimit(limit: number): void {\n log.assert(Number.isFinite(limit) && limit >= CACHE_LIMIT, 'Invalid cache limit');\n\n cache = new LRUCache(limit);\n}\n\nexport default class FontAtlasManager {\n /** Font settings */\n props: Required = {...DEFAULT_FONT_SETTINGS};\n\n /** Cache key of the current font atlas */\n private _key?: string;\n /** The current font atlas */\n private _atlas?: FontAtlas;\n\n get texture(): Texture | undefined {\n return this._atlas;\n }\n\n get mapping(): CharacterMapping | undefined {\n return this._atlas && this._atlas.mapping;\n }\n\n get scale(): number {\n const {fontSize, buffer} = this.props;\n return (fontSize * HEIGHT_SCALE + buffer * 2) / fontSize;\n }\n\n setProps(props: FontSettings = {}) {\n Object.assign(this.props, props);\n\n // update cache key\n this._key = this._getKey();\n\n const charSet = getNewChars(this._key, this.props.characterSet);\n const cachedFontAtlas = cache.get(this._key);\n\n // if a fontAtlas associated with the new settings is cached and\n // there are no new chars\n if (cachedFontAtlas && charSet.size === 0) {\n // update texture with cached fontAtlas\n if (this._atlas !== cachedFontAtlas) {\n this._atlas = cachedFontAtlas;\n }\n return;\n }\n\n // update fontAtlas with new settings\n const fontAtlas = this._generateFontAtlas(charSet, cachedFontAtlas);\n this._atlas = fontAtlas;\n\n // update cache\n cache.set(this._key, fontAtlas);\n }\n\n // eslint-disable-next-line max-statements\n private _generateFontAtlas(characterSet: Set, cachedFontAtlas?: FontAtlas): FontAtlas {\n const {fontFamily, fontWeight, fontSize, buffer, sdf, radius, cutoff} = this.props;\n let canvas = cachedFontAtlas && cachedFontAtlas.data;\n if (!canvas) {\n canvas = document.createElement('canvas');\n canvas.width = MAX_CANVAS_WIDTH;\n }\n const ctx = canvas.getContext('2d', {willReadFrequently: true})!;\n\n setTextStyle(ctx, fontFamily, fontSize, fontWeight);\n\n // 1. build mapping\n const {mapping, canvasHeight, xOffset, yOffset} = buildMapping({\n getFontWidth: char => ctx.measureText(char).width,\n fontHeight: fontSize * HEIGHT_SCALE,\n buffer,\n characterSet,\n maxCanvasWidth: MAX_CANVAS_WIDTH,\n ...(cachedFontAtlas && {\n mapping: cachedFontAtlas.mapping,\n xOffset: cachedFontAtlas.xOffset,\n yOffset: cachedFontAtlas.yOffset\n })\n });\n\n // 2. update canvas\n // copy old canvas data to new canvas only when height changed\n if (canvas.height !== canvasHeight) {\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n canvas.height = canvasHeight;\n ctx.putImageData(imageData, 0, 0);\n }\n setTextStyle(ctx, fontFamily, fontSize, fontWeight);\n\n // 3. layout characters\n if (sdf) {\n const tinySDF = new TinySDF({\n fontSize,\n buffer,\n radius,\n cutoff,\n fontFamily,\n fontWeight: `${fontWeight}`\n });\n\n for (const char of characterSet) {\n const {data, width, height, glyphTop} = tinySDF.draw(char);\n mapping[char].width = width;\n mapping[char].layoutOffsetY = fontSize * BASELINE_SCALE - glyphTop;\n\n const imageData = ctx.createImageData(width, height);\n populateAlphaChannel(data, imageData);\n ctx.putImageData(imageData, mapping[char].x, mapping[char].y);\n }\n } else {\n for (const char of characterSet) {\n ctx.fillText(char, mapping[char].x, mapping[char].y + buffer + fontSize * BASELINE_SCALE);\n }\n }\n\n return {\n xOffset,\n yOffset,\n mapping,\n data: canvas,\n width: canvas.width,\n height: canvas.height\n };\n }\n\n private _getKey(): string {\n const {fontFamily, fontWeight, fontSize, buffer, sdf, radius, cutoff} = this.props;\n if (sdf) {\n return `${fontFamily} ${fontWeight} ${fontSize} ${buffer} ${radius} ${cutoff}`;\n }\n return `${fontFamily} ${fontWeight} ${fontSize} ${buffer}`;\n }\n}\n","const INF = 1e20;\n\nexport default class TinySDF {\n constructor({\n fontSize = 24,\n buffer = 3,\n radius = 8,\n cutoff = 0.25,\n fontFamily = 'sans-serif',\n fontWeight = 'normal',\n fontStyle = 'normal'\n } = {}) {\n this.buffer = buffer;\n this.cutoff = cutoff;\n this.radius = radius;\n\n // make the canvas size big enough to both have the specified buffer around the glyph\n // for \"halo\", and account for some glyphs possibly being larger than their font size\n const size = this.size = fontSize + buffer * 4;\n\n const canvas = this._createCanvas(size);\n const ctx = this.ctx = canvas.getContext('2d', {willReadFrequently: true});\n ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n\n ctx.textBaseline = 'alphabetic';\n ctx.textAlign = 'left'; // Necessary so that RTL text doesn't have different alignment\n ctx.fillStyle = 'black';\n\n // temporary arrays for the distance transform\n this.gridOuter = new Float64Array(size * size);\n this.gridInner = new Float64Array(size * size);\n this.f = new Float64Array(size);\n this.z = new Float64Array(size + 1);\n this.v = new Uint16Array(size);\n }\n\n _createCanvas(size) {\n const canvas = document.createElement('canvas');\n canvas.width = canvas.height = size;\n return canvas;\n }\n\n draw(char) {\n const {\n width: glyphAdvance,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n actualBoundingBoxLeft,\n actualBoundingBoxRight\n } = this.ctx.measureText(char);\n\n // The integer/pixel part of the top alignment is encoded in metrics.glyphTop\n // The remainder is implicitly encoded in the rasterization\n const glyphTop = Math.ceil(actualBoundingBoxAscent);\n const glyphLeft = 0;\n\n // If the glyph overflows the canvas size, it will be clipped at the bottom/right\n const glyphWidth = Math.max(0, Math.min(this.size - this.buffer, Math.ceil(actualBoundingBoxRight - actualBoundingBoxLeft)));\n const glyphHeight = Math.min(this.size - this.buffer, glyphTop + Math.ceil(actualBoundingBoxDescent));\n\n const width = glyphWidth + 2 * this.buffer;\n const height = glyphHeight + 2 * this.buffer;\n\n const len = Math.max(width * height, 0);\n const data = new Uint8ClampedArray(len);\n const glyph = {data, width, height, glyphWidth, glyphHeight, glyphTop, glyphLeft, glyphAdvance};\n if (glyphWidth === 0 || glyphHeight === 0) return glyph;\n\n const {ctx, buffer, gridInner, gridOuter} = this;\n ctx.clearRect(buffer, buffer, glyphWidth, glyphHeight);\n ctx.fillText(char, buffer, buffer + glyphTop);\n const imgData = ctx.getImageData(buffer, buffer, glyphWidth, glyphHeight);\n\n // Initialize grids outside the glyph range to alpha 0\n gridOuter.fill(INF, 0, len);\n gridInner.fill(0, 0, len);\n\n for (let y = 0; y < glyphHeight; y++) {\n for (let x = 0; x < glyphWidth; x++) {\n const a = imgData.data[4 * (y * glyphWidth + x) + 3] / 255; // alpha value\n if (a === 0) continue; // empty pixels\n\n const j = (y + buffer) * width + x + buffer;\n\n if (a === 1) { // fully drawn pixels\n gridOuter[j] = 0;\n gridInner[j] = INF;\n\n } else { // aliased pixels\n const d = 0.5 - a;\n gridOuter[j] = d > 0 ? d * d : 0;\n gridInner[j] = d < 0 ? d * d : 0;\n }\n }\n }\n\n edt(gridOuter, 0, 0, width, height, width, this.f, this.v, this.z);\n edt(gridInner, buffer, buffer, glyphWidth, glyphHeight, width, this.f, this.v, this.z);\n\n for (let i = 0; i < len; i++) {\n const d = Math.sqrt(gridOuter[i]) - Math.sqrt(gridInner[i]);\n data[i] = Math.round(255 - 255 * (d / this.radius + this.cutoff));\n }\n\n return glyph;\n }\n}\n\n// 2D Euclidean squared distance transform by Felzenszwalb & Huttenlocher https://cs.brown.edu/~pff/papers/dt-final.pdf\nfunction edt(data, x0, y0, width, height, gridSize, f, v, z) {\n for (let x = x0; x < x0 + width; x++) edt1d(data, y0 * gridSize + x, gridSize, height, f, v, z);\n for (let y = y0; y < y0 + height; y++) edt1d(data, y * gridSize + x0, 1, width, f, v, z);\n}\n\n// 1D squared distance transform\nfunction edt1d(grid, offset, stride, length, f, v, z) {\n v[0] = 0;\n z[0] = -INF;\n z[1] = INF;\n f[0] = grid[offset];\n\n for (let q = 1, k = 0, s = 0; q < length; q++) {\n f[q] = grid[offset + q * stride];\n const q2 = q * q;\n do {\n const r = v[k];\n s = (f[q] - f[r] + q2 - r * r) / (q - r) / 2;\n } while (s <= z[k] && --k > -1);\n\n k++;\n v[k] = q;\n z[k] = s;\n z[k + 1] = INF;\n }\n\n for (let q = 0, k = 0; q < length; q++) {\n while (z[k + 1] < q) k++;\n const r = v[k];\n const qr = q - r;\n grid[offset + q * stride] = f[r] + qr * qr;\n }\n}\n","import { log } from '@deck.gl/core';\nconst MISSING_CHAR_WIDTH = 32;\nconst SINGLE_LINE = [];\nexport function nextPowOfTwo(number) {\n return Math.pow(2, Math.ceil(Math.log2(number)));\n}\nexport function buildMapping({\n characterSet,\n getFontWidth,\n fontHeight,\n buffer,\n maxCanvasWidth,\n mapping = {},\n xOffset = 0,\n yOffset = 0\n}) {\n let row = 0;\n let x = xOffset;\n const rowHeight = fontHeight + buffer * 2;\n\n for (const char of characterSet) {\n if (!mapping[char]) {\n const width = getFontWidth(char);\n\n if (x + width + buffer * 2 > maxCanvasWidth) {\n x = 0;\n row++;\n }\n\n mapping[char] = {\n x: x + buffer,\n y: yOffset + row * rowHeight + buffer,\n width,\n height: rowHeight,\n layoutWidth: width,\n layoutHeight: fontHeight\n };\n x += width + buffer * 2;\n }\n }\n\n return {\n mapping,\n xOffset: x,\n yOffset: yOffset + row * rowHeight,\n canvasHeight: nextPowOfTwo(yOffset + (row + 1) * rowHeight)\n };\n}\n\nfunction getTextWidth(text, startIndex, endIndex, mapping) {\n let width = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n var _mapping$character;\n\n const character = text[i];\n width += ((_mapping$character = mapping[character]) === null || _mapping$character === void 0 ? void 0 : _mapping$character.layoutWidth) || 0;\n }\n\n return width;\n}\n\nfunction breakAll(text, startIndex, endIndex, maxWidth, iconMapping, target) {\n let rowStartCharIndex = startIndex;\n let rowOffsetLeft = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n const textWidth = getTextWidth(text, i, i + 1, iconMapping);\n\n if (rowOffsetLeft + textWidth > maxWidth) {\n if (rowStartCharIndex < i) {\n target.push(i);\n }\n\n rowStartCharIndex = i;\n rowOffsetLeft = 0;\n }\n\n rowOffsetLeft += textWidth;\n }\n\n return rowOffsetLeft;\n}\n\nfunction breakWord(text, startIndex, endIndex, maxWidth, iconMapping, target) {\n let rowStartCharIndex = startIndex;\n let groupStartCharIndex = startIndex;\n let groupEndCharIndex = startIndex;\n let rowOffsetLeft = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n if (text[i] === ' ') {\n groupEndCharIndex = i + 1;\n } else if (text[i + 1] === ' ' || i + 1 === endIndex) {\n groupEndCharIndex = i + 1;\n }\n\n if (groupEndCharIndex > groupStartCharIndex) {\n let groupWidth = getTextWidth(text, groupStartCharIndex, groupEndCharIndex, iconMapping);\n\n if (rowOffsetLeft + groupWidth > maxWidth) {\n if (rowStartCharIndex < groupStartCharIndex) {\n target.push(groupStartCharIndex);\n rowStartCharIndex = groupStartCharIndex;\n rowOffsetLeft = 0;\n }\n\n if (groupWidth > maxWidth) {\n groupWidth = breakAll(text, groupStartCharIndex, groupEndCharIndex, maxWidth, iconMapping, target);\n rowStartCharIndex = target[target.length - 1];\n }\n }\n\n groupStartCharIndex = groupEndCharIndex;\n rowOffsetLeft += groupWidth;\n }\n }\n\n return rowOffsetLeft;\n}\n\nexport function autoWrapping(text, wordBreak, maxWidth, iconMapping, startIndex = 0, endIndex) {\n if (endIndex === undefined) {\n endIndex = text.length;\n }\n\n const result = [];\n\n if (wordBreak === 'break-all') {\n breakAll(text, startIndex, endIndex, maxWidth, iconMapping, result);\n } else {\n breakWord(text, startIndex, endIndex, maxWidth, iconMapping, result);\n }\n\n return result;\n}\n\nfunction transformRow(line, startIndex, endIndex, iconMapping, leftOffsets, rowSize) {\n let x = 0;\n let rowHeight = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n const character = line[i];\n const frame = iconMapping[character];\n\n if (frame) {\n if (!rowHeight) {\n rowHeight = frame.layoutHeight;\n }\n\n leftOffsets[i] = x + frame.layoutWidth / 2;\n x += frame.layoutWidth;\n } else {\n log.warn(\"Missing character: \".concat(character, \" (\").concat(character.codePointAt(0), \")\"))();\n leftOffsets[i] = x;\n x += MISSING_CHAR_WIDTH;\n }\n }\n\n rowSize[0] = x;\n rowSize[1] = rowHeight;\n}\n\nexport function transformParagraph(paragraph, lineHeight, wordBreak, maxWidth, iconMapping) {\n const characters = Array.from(paragraph);\n const numCharacters = characters.length;\n const x = new Array(numCharacters);\n const y = new Array(numCharacters);\n const rowWidth = new Array(numCharacters);\n const autoWrappingEnabled = (wordBreak === 'break-word' || wordBreak === 'break-all') && isFinite(maxWidth) && maxWidth > 0;\n const size = [0, 0];\n const rowSize = [0, 0];\n let rowOffsetTop = 0;\n let lineStartIndex = 0;\n let lineEndIndex = 0;\n\n for (let i = 0; i <= numCharacters; i++) {\n const char = characters[i];\n\n if (char === '\\n' || i === numCharacters) {\n lineEndIndex = i;\n }\n\n if (lineEndIndex > lineStartIndex) {\n const rows = autoWrappingEnabled ? autoWrapping(characters, wordBreak, maxWidth, iconMapping, lineStartIndex, lineEndIndex) : SINGLE_LINE;\n\n for (let rowIndex = 0; rowIndex <= rows.length; rowIndex++) {\n const rowStart = rowIndex === 0 ? lineStartIndex : rows[rowIndex - 1];\n const rowEnd = rowIndex < rows.length ? rows[rowIndex] : lineEndIndex;\n transformRow(characters, rowStart, rowEnd, iconMapping, x, rowSize);\n\n for (let j = rowStart; j < rowEnd; j++) {\n var _iconMapping$char;\n\n const char = characters[j];\n const layoutOffsetY = ((_iconMapping$char = iconMapping[char]) === null || _iconMapping$char === void 0 ? void 0 : _iconMapping$char.layoutOffsetY) || 0;\n y[j] = rowOffsetTop + rowSize[1] / 2 + layoutOffsetY;\n rowWidth[j] = rowSize[0];\n }\n\n rowOffsetTop = rowOffsetTop + rowSize[1] * lineHeight;\n size[0] = Math.max(size[0], rowSize[0]);\n }\n\n lineStartIndex = lineEndIndex;\n }\n\n if (char === '\\n') {\n x[lineStartIndex] = 0;\n y[lineStartIndex] = 0;\n rowWidth[lineStartIndex] = 0;\n lineStartIndex++;\n }\n }\n\n size[1] = rowOffsetTop;\n return {\n x,\n y,\n rowWidth,\n size\n };\n}\nexport function getTextFromBuffer({\n value,\n length,\n stride,\n offset,\n startIndices,\n characterSet\n}) {\n const bytesPerElement = value.BYTES_PER_ELEMENT;\n const elementStride = stride ? stride / bytesPerElement : 1;\n const elementOffset = offset ? offset / bytesPerElement : 0;\n const characterCount = startIndices[length] || Math.ceil((value.length - elementOffset) / elementStride);\n const autoCharacterSet = characterSet && new Set();\n const texts = new Array(length);\n let codes = value;\n\n if (elementStride > 1 || elementOffset > 0) {\n const ArrayType = value.constructor;\n codes = new ArrayType(characterCount);\n\n for (let i = 0; i < characterCount; i++) {\n codes[i] = value[i * elementStride + elementOffset];\n }\n }\n\n for (let index = 0; index < length; index++) {\n const startIndex = startIndices[index];\n const endIndex = startIndices[index + 1] || characterCount;\n const codesAtIndex = codes.subarray(startIndex, endIndex);\n texts[index] = String.fromCodePoint.apply(null, codesAtIndex);\n\n if (autoCharacterSet) {\n codesAtIndex.forEach(autoCharacterSet.add, autoCharacterSet);\n }\n }\n\n if (autoCharacterSet) {\n for (const charCode of autoCharacterSet) {\n characterSet.add(String.fromCodePoint(charCode));\n }\n }\n\n return {\n texts,\n characterCount\n };\n}\n//# sourceMappingURL=utils.js.map","/* eslint-disable max-statements, max-params, complexity, max-depth */\n// TODO merge with icon-layer/icon-manager\nimport {log} from '@deck.gl/core';\nimport type {NumericArray} from '@math.gl/core';\n\nconst MISSING_CHAR_WIDTH = 32;\nconst SINGLE_LINE = [];\n\nexport type Character = {\n x: number;\n y: number;\n width: number;\n height: number;\n layoutWidth: number;\n layoutHeight: number;\n layoutOffsetY?: number;\n};\n\nexport type CharacterMapping = Record;\n\nexport function nextPowOfTwo(number: number): number {\n return Math.pow(2, Math.ceil(Math.log2(number)));\n}\n\n/**\n * Generate character mapping table or update from an existing mapping table\n */\nexport function buildMapping({\n characterSet,\n getFontWidth,\n fontHeight,\n buffer,\n maxCanvasWidth,\n mapping = {},\n xOffset = 0,\n yOffset = 0\n}: {\n /** list of characters */\n characterSet: Set;\n /** function to get width of each character */\n getFontWidth: (char: string) => number;\n /** height of font */\n fontHeight: number;\n /** bleeding buffer surround each character */\n buffer: number;\n /** max width of font atlas */\n maxCanvasWidth: number;\n /** cached mapping table */\n mapping?: CharacterMapping;\n /** x position of last character in the existing mapping table */\n xOffset?: number;\n /** y position of last character in the existing mapping table */\n yOffset?: number;\n}): {\n /** new mapping table */\n mapping: CharacterMapping;\n /** x position of last character in the new mapping table */\n xOffset: number;\n /** y position of last character in the new mapping table */\n yOffset: number;\n /** height of the font atlas canvas, power of 2 */\n canvasHeight: number;\n} {\n let row = 0;\n // continue from x position of last character in the old mapping\n let x = xOffset;\n const rowHeight = fontHeight + buffer * 2;\n\n for (const char of characterSet) {\n if (!mapping[char]) {\n // measure texts\n // TODO - use Advanced text metrics when they are adopted:\n // https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics\n const width = getFontWidth(char);\n\n if (x + width + buffer * 2 > maxCanvasWidth) {\n x = 0;\n row++;\n }\n mapping[char] = {\n x: x + buffer,\n y: yOffset + row * rowHeight + buffer,\n width,\n height: rowHeight,\n layoutWidth: width,\n layoutHeight: fontHeight\n };\n x += width + buffer * 2;\n }\n }\n\n return {\n mapping,\n xOffset: x,\n yOffset: yOffset + row * rowHeight,\n canvasHeight: nextPowOfTwo(yOffset + (row + 1) * rowHeight)\n };\n}\n\nfunction getTextWidth(\n text: string[],\n startIndex: number,\n endIndex: number,\n mapping: CharacterMapping\n): number {\n let width = 0;\n for (let i = startIndex; i < endIndex; i++) {\n const character = text[i];\n width += mapping[character]?.layoutWidth || 0;\n }\n\n return width;\n}\n\nfunction breakAll(\n text: string[],\n startIndex: number,\n endIndex: number,\n maxWidth: number,\n iconMapping: CharacterMapping,\n target: number[]\n): number {\n let rowStartCharIndex = startIndex;\n let rowOffsetLeft = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n // 2. figure out where to break lines\n const textWidth = getTextWidth(text, i, i + 1, iconMapping);\n if (rowOffsetLeft + textWidth > maxWidth) {\n if (rowStartCharIndex < i) {\n target.push(i);\n }\n rowStartCharIndex = i;\n rowOffsetLeft = 0;\n }\n rowOffsetLeft += textWidth;\n }\n\n return rowOffsetLeft;\n}\n\nfunction breakWord(\n text: string[],\n startIndex: number,\n endIndex: number,\n maxWidth: number,\n iconMapping: CharacterMapping,\n target: number[]\n): number {\n let rowStartCharIndex = startIndex;\n let groupStartCharIndex = startIndex;\n let groupEndCharIndex = startIndex;\n let rowOffsetLeft = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n // 1. break text into word groups\n // - if current char is white space\n // - else if next char is white space\n // - else if reach last char\n if (text[i] === ' ') {\n groupEndCharIndex = i + 1;\n } else if (text[i + 1] === ' ' || i + 1 === endIndex) {\n groupEndCharIndex = i + 1;\n }\n\n if (groupEndCharIndex > groupStartCharIndex) {\n // 2. break text into next row at maxWidth\n let groupWidth = getTextWidth(text, groupStartCharIndex, groupEndCharIndex, iconMapping);\n if (rowOffsetLeft + groupWidth > maxWidth) {\n if (rowStartCharIndex < groupStartCharIndex) {\n target.push(groupStartCharIndex);\n rowStartCharIndex = groupStartCharIndex;\n rowOffsetLeft = 0;\n }\n\n // if a single text group is bigger than maxWidth, then `break-all`\n if (groupWidth > maxWidth) {\n groupWidth = breakAll(\n text,\n groupStartCharIndex,\n groupEndCharIndex,\n maxWidth,\n iconMapping,\n target\n );\n // move reference to last row\n rowStartCharIndex = target[target.length - 1];\n }\n }\n groupStartCharIndex = groupEndCharIndex;\n rowOffsetLeft += groupWidth;\n }\n }\n\n return rowOffsetLeft;\n}\n\n/**\n * Wrap the given text so that each line does not exceed the given max width.\n * Returns a list of indices where line breaks should be inserted.\n */\nexport function autoWrapping(\n text: string[],\n wordBreak: 'break-all' | 'break-word',\n maxWidth: number,\n iconMapping: CharacterMapping,\n startIndex: number = 0,\n endIndex: number\n): number[] {\n if (endIndex === undefined) {\n endIndex = text.length;\n }\n const result = [];\n if (wordBreak === 'break-all') {\n breakAll(text, startIndex, endIndex, maxWidth, iconMapping, result);\n } else {\n breakWord(text, startIndex, endIndex, maxWidth, iconMapping, result);\n }\n return result;\n}\n\nfunction transformRow(\n line: string[],\n startIndex: number,\n endIndex: number,\n iconMapping: CharacterMapping,\n leftOffsets: number[],\n rowSize: [number, number]\n) {\n let x = 0;\n let rowHeight = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n const character = line[i];\n const frame = iconMapping[character];\n if (frame) {\n if (!rowHeight) {\n // frame.height should be a constant\n rowHeight = frame.layoutHeight;\n }\n leftOffsets[i] = x + frame.layoutWidth / 2;\n x += frame.layoutWidth;\n } else {\n log.warn(`Missing character: ${character} (${character.codePointAt(0)})`)();\n leftOffsets[i] = x;\n x += MISSING_CHAR_WIDTH;\n }\n }\n\n rowSize[0] = x;\n rowSize[1] = rowHeight;\n}\n\n/**\n * Transform a text paragraph to an array of characters, each character contains\n */\nexport function transformParagraph(\n paragraph: string,\n /** CSS line-height */\n lineHeight: number,\n /** CSS word-break option */\n wordBreak: 'break-word' | 'break-all',\n /** CSS max-width */\n maxWidth: number,\n /** character mapping table for retrieving a character from font atlas */\n iconMapping: CharacterMapping\n): {\n /** x position of each character */\n x: number[];\n /** y position of each character */\n y: number[];\n /** the current row width of each character */\n rowWidth: number[];\n /** the width and height of the paragraph */\n size: [number, number];\n} {\n // Break into an array of characters\n // When dealing with double-length unicode characters, `str.length` or `str[i]` do not work\n const characters = Array.from(paragraph);\n const numCharacters = characters.length;\n const x = new Array(numCharacters) as number[];\n const y = new Array(numCharacters) as number[];\n const rowWidth = new Array(numCharacters) as number[];\n const autoWrappingEnabled =\n (wordBreak === 'break-word' || wordBreak === 'break-all') && isFinite(maxWidth) && maxWidth > 0;\n\n // maxWidth and height of the paragraph\n const size: [number, number] = [0, 0];\n const rowSize: [number, number] = [0, 0];\n let rowOffsetTop = 0;\n let lineStartIndex = 0;\n let lineEndIndex = 0;\n\n for (let i = 0; i <= numCharacters; i++) {\n const char = characters[i];\n if (char === '\\n' || i === numCharacters) {\n lineEndIndex = i;\n }\n\n if (lineEndIndex > lineStartIndex) {\n const rows = autoWrappingEnabled\n ? autoWrapping(characters, wordBreak, maxWidth, iconMapping, lineStartIndex, lineEndIndex)\n : SINGLE_LINE;\n\n for (let rowIndex = 0; rowIndex <= rows.length; rowIndex++) {\n const rowStart = rowIndex === 0 ? lineStartIndex : rows[rowIndex - 1];\n const rowEnd = rowIndex < rows.length ? rows[rowIndex] : lineEndIndex;\n\n transformRow(characters, rowStart, rowEnd, iconMapping, x, rowSize);\n for (let j = rowStart; j < rowEnd; j++) {\n const char = characters[j];\n const layoutOffsetY = iconMapping[char]?.layoutOffsetY || 0;\n y[j] = rowOffsetTop + rowSize[1] / 2 + layoutOffsetY;\n rowWidth[j] = rowSize[0];\n }\n\n rowOffsetTop = rowOffsetTop + rowSize[1] * lineHeight;\n size[0] = Math.max(size[0], rowSize[0]);\n }\n lineStartIndex = lineEndIndex;\n }\n\n if (char === '\\n') {\n // Make sure result.length matches paragraph.length\n x[lineStartIndex] = 0;\n y[lineStartIndex] = 0;\n rowWidth[lineStartIndex] = 0;\n lineStartIndex++;\n }\n }\n\n // last row\n size[1] = rowOffsetTop;\n return {x, y, rowWidth, size};\n}\n\nexport function getTextFromBuffer({\n value,\n length,\n stride,\n offset,\n startIndices,\n characterSet\n}: {\n value: Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array;\n length: number;\n stride?: number;\n offset?: number;\n startIndices: NumericArray;\n characterSet?: Set;\n}): {\n texts: string[];\n characterCount: number;\n} {\n const bytesPerElement = value.BYTES_PER_ELEMENT;\n const elementStride = stride ? stride / bytesPerElement : 1;\n const elementOffset = offset ? offset / bytesPerElement : 0;\n const characterCount =\n startIndices[length] || Math.ceil((value.length - elementOffset) / elementStride);\n const autoCharacterSet = characterSet && new Set();\n\n const texts = new Array(length);\n\n let codes = value;\n if (elementStride > 1 || elementOffset > 0) {\n const ArrayType = value.constructor as\n | Uint8ArrayConstructor\n | Uint8ClampedArrayConstructor\n | Uint16ArrayConstructor\n | Uint32ArrayConstructor;\n codes = new ArrayType(characterCount);\n for (let i = 0; i < characterCount; i++) {\n codes[i] = value[i * elementStride + elementOffset];\n }\n }\n\n for (let index = 0; index < length; index++) {\n const startIndex = startIndices[index];\n const endIndex = startIndices[index + 1] || characterCount;\n const codesAtIndex = codes.subarray(startIndex, endIndex);\n // @ts-ignore TS wants the argument to be number[] but typed array works too\n texts[index] = String.fromCodePoint.apply(null, codesAtIndex);\n if (autoCharacterSet) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n codesAtIndex.forEach(autoCharacterSet.add, autoCharacterSet);\n }\n }\n\n if (autoCharacterSet) {\n for (const charCode of autoCharacterSet) {\n characterSet.add(String.fromCodePoint(charCode));\n }\n }\n\n return {texts, characterCount};\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport default class LRUCache {\n constructor(limit = 5) {\n _defineProperty(this, \"limit\", void 0);\n\n _defineProperty(this, \"_cache\", {});\n\n _defineProperty(this, \"_order\", []);\n\n this.limit = limit;\n }\n\n get(key) {\n const value = this._cache[key];\n\n if (value) {\n this._deleteOrder(key);\n\n this._appendOrder(key);\n }\n\n return value;\n }\n\n set(key, value) {\n if (!this._cache[key]) {\n if (Object.keys(this._cache).length === this.limit) {\n this.delete(this._order[0]);\n }\n\n this._cache[key] = value;\n\n this._appendOrder(key);\n } else {\n this.delete(key);\n this._cache[key] = value;\n\n this._appendOrder(key);\n }\n }\n\n delete(key) {\n const value = this._cache[key];\n\n if (value) {\n delete this._cache[key];\n\n this._deleteOrder(key);\n }\n }\n\n _deleteOrder(key) {\n const index = this._order.indexOf(key);\n\n if (index >= 0) {\n this._order.splice(index, 1);\n }\n }\n\n _appendOrder(key) {\n this._order.push(key);\n }\n\n}\n//# sourceMappingURL=lru-cache.js.map","/**\n * LRU Cache class with limit\n *\n * Update order for each get/set operation\n * Delete oldest when reach given limit\n */\n\nexport default class LRUCache {\n private limit: number;\n private _cache: Record = {};\n /** access/update order, first item is oldest, last item is newest */\n private _order: string[] = [];\n\n constructor(limit: number = 5) {\n this.limit = limit;\n }\n\n get(key: string): ValueT {\n const value = this._cache[key];\n if (value) {\n // update order\n this._deleteOrder(key);\n this._appendOrder(key);\n }\n return value;\n }\n\n set(key: string, value: ValueT): void {\n if (!this._cache[key]) {\n // if reach limit, delete the oldest\n if (Object.keys(this._cache).length === this.limit) {\n this.delete(this._order[0]);\n }\n\n this._cache[key] = value;\n this._appendOrder(key);\n } else {\n // if found in cache, delete the old one, insert new one to the first of list\n this.delete(key);\n\n this._cache[key] = value;\n this._appendOrder(key);\n }\n }\n\n delete(key: string): void {\n const value = this._cache[key];\n if (value) {\n delete this._cache[key];\n this._deleteOrder(key);\n }\n }\n\n private _deleteOrder(key: string): void {\n const index = this._order.indexOf(key);\n if (index >= 0) {\n this._order.splice(index, 1);\n }\n }\n\n private _appendOrder(key: string): void {\n this._order.push(key);\n }\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, picking, UNIT } from '@deck.gl/core';\nimport { Model, Geometry } from '@luma.gl/core';\nimport vs from './text-background-layer-vertex.glsl';\nimport fs from './text-background-layer-fragment.glsl';\nconst defaultProps = {\n billboard: true,\n sizeScale: 1,\n sizeUnits: 'pixels',\n sizeMinPixels: 0,\n sizeMaxPixels: Number.MAX_SAFE_INTEGER,\n padding: {\n type: 'array',\n value: [0, 0, 0, 0]\n },\n getPosition: {\n type: 'accessor',\n value: x => x.position\n },\n getSize: {\n type: 'accessor',\n value: 1\n },\n getAngle: {\n type: 'accessor',\n value: 0\n },\n getPixelOffset: {\n type: 'accessor',\n value: [0, 0]\n },\n getBoundingRect: {\n type: 'accessor',\n value: [0, 0, 0, 0]\n },\n getFillColor: {\n type: 'accessor',\n value: [0, 0, 0, 255]\n },\n getLineColor: {\n type: 'accessor',\n value: [0, 0, 0, 255]\n },\n getLineWidth: {\n type: 'accessor',\n value: 1\n }\n};\nexport default class TextBackgroundLayer extends Layer {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", void 0);\n }\n\n getShaders() {\n return super.getShaders({\n vs,\n fs,\n modules: [project32, picking]\n });\n }\n\n initializeState() {\n this.getAttributeManager().addInstanced({\n instancePositions: {\n size: 3,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getPosition'\n },\n instanceSizes: {\n size: 1,\n transition: true,\n accessor: 'getSize',\n defaultValue: 1\n },\n instanceAngles: {\n size: 1,\n transition: true,\n accessor: 'getAngle'\n },\n instanceRects: {\n size: 4,\n accessor: 'getBoundingRect'\n },\n instancePixelOffsets: {\n size: 2,\n transition: true,\n accessor: 'getPixelOffset'\n },\n instanceFillColors: {\n size: 4,\n transition: true,\n normalized: true,\n type: 5121,\n accessor: 'getFillColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineColors: {\n size: 4,\n transition: true,\n normalized: true,\n type: 5121,\n accessor: 'getLineColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineWidths: {\n size: 1,\n transition: true,\n accessor: 'getLineWidth',\n defaultValue: 1\n }\n });\n }\n\n updateState(params) {\n super.updateState(params);\n const {\n changeFlags\n } = params;\n\n if (changeFlags.extensionsChanged) {\n var _this$state$model;\n\n const {\n gl\n } = this.context;\n (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n this.state.model = this._getModel(gl);\n this.getAttributeManager().invalidateAll();\n }\n }\n\n draw({\n uniforms\n }) {\n const {\n billboard,\n sizeScale,\n sizeUnits,\n sizeMinPixels,\n sizeMaxPixels,\n getLineWidth\n } = this.props;\n let {\n padding\n } = this.props;\n\n if (padding.length < 4) {\n padding = [padding[0], padding[1], padding[0], padding[1]];\n }\n\n this.state.model.setUniforms(uniforms).setUniforms({\n billboard,\n stroked: Boolean(getLineWidth),\n padding,\n sizeUnits: UNIT[sizeUnits],\n sizeScale,\n sizeMinPixels,\n sizeMaxPixels\n }).draw();\n }\n\n _getModel(gl) {\n const positions = [0, 0, 1, 0, 1, 1, 0, 1];\n return new Model(gl, { ...this.getShaders(),\n id: this.props.id,\n geometry: new Geometry({\n drawMode: 6,\n vertexCount: 4,\n attributes: {\n positions: {\n size: 2,\n value: new Float32Array(positions)\n }\n }\n }),\n isInstanced: true\n });\n }\n\n}\n\n_defineProperty(TextBackgroundLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(TextBackgroundLayer, \"layerName\", 'TextBackgroundLayer');\n//# sourceMappingURL=text-background-layer.js.map","import {Layer, project32, picking, UNIT} from '@deck.gl/core';\nimport GL from '@luma.gl/constants';\nimport {Model, Geometry} from '@luma.gl/core';\n\nimport vs from './text-background-layer-vertex.glsl';\nimport fs from './text-background-layer-fragment.glsl';\n\nimport type {\n LayerProps,\n LayerDataSource,\n Accessor,\n Unit,\n Position,\n Color,\n UpdateParameters,\n DefaultProps\n} from '@deck.gl/core';\n\ntype _TextBackgroundLayerProps = {\n data: LayerDataSource;\n billboard?: boolean;\n sizeScale?: number;\n sizeUnits?: Unit;\n sizeMinPixels?: number;\n sizeMaxPixels?: number;\n\n padding?: [number, number] | [number, number, number, number];\n\n getPosition?: Accessor;\n getSize?: Accessor;\n getAngle?: Accessor;\n getPixelOffset?: Accessor;\n getBoundingRect?: Accessor;\n getFillColor?: Accessor;\n getLineColor?: Accessor;\n getLineWidth?: Accessor;\n};\n\nexport type TextBackgroundLayerProps = _TextBackgroundLayerProps & LayerProps;\n\nconst defaultProps: DefaultProps = {\n billboard: true,\n sizeScale: 1,\n sizeUnits: 'pixels',\n sizeMinPixels: 0,\n sizeMaxPixels: Number.MAX_SAFE_INTEGER,\n\n padding: {type: 'array', value: [0, 0, 0, 0]},\n\n getPosition: {type: 'accessor', value: x => x.position},\n getSize: {type: 'accessor', value: 1},\n getAngle: {type: 'accessor', value: 0},\n getPixelOffset: {type: 'accessor', value: [0, 0]},\n getBoundingRect: {type: 'accessor', value: [0, 0, 0, 0]},\n getFillColor: {type: 'accessor', value: [0, 0, 0, 255]},\n getLineColor: {type: 'accessor', value: [0, 0, 0, 255]},\n getLineWidth: {type: 'accessor', value: 1}\n};\n\nexport default class TextBackgroundLayer extends Layer<\n ExtraPropsT & Required<_TextBackgroundLayerProps>\n> {\n static defaultProps = defaultProps;\n static layerName = 'TextBackgroundLayer';\n\n state!: {\n model: Model;\n };\n\n getShaders() {\n return super.getShaders({vs, fs, modules: [project32, picking]});\n }\n\n initializeState() {\n this.getAttributeManager()!.addInstanced({\n instancePositions: {\n size: 3,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getPosition'\n },\n instanceSizes: {\n size: 1,\n transition: true,\n accessor: 'getSize',\n defaultValue: 1\n },\n instanceAngles: {\n size: 1,\n transition: true,\n accessor: 'getAngle'\n },\n instanceRects: {\n size: 4,\n accessor: 'getBoundingRect'\n },\n instancePixelOffsets: {\n size: 2,\n transition: true,\n accessor: 'getPixelOffset'\n },\n instanceFillColors: {\n size: 4,\n transition: true,\n normalized: true,\n type: GL.UNSIGNED_BYTE,\n accessor: 'getFillColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineColors: {\n size: 4,\n transition: true,\n normalized: true,\n type: GL.UNSIGNED_BYTE,\n accessor: 'getLineColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineWidths: {\n size: 1,\n transition: true,\n accessor: 'getLineWidth',\n defaultValue: 1\n }\n });\n }\n\n updateState(params: UpdateParameters) {\n super.updateState(params);\n const {changeFlags} = params;\n if (changeFlags.extensionsChanged) {\n const {gl} = this.context;\n this.state.model?.delete();\n this.state.model = this._getModel(gl);\n this.getAttributeManager()!.invalidateAll();\n }\n }\n\n draw({uniforms}) {\n const {billboard, sizeScale, sizeUnits, sizeMinPixels, sizeMaxPixels, getLineWidth} =\n this.props;\n let {padding} = this.props;\n\n if (padding.length < 4) {\n padding = [padding[0], padding[1], padding[0], padding[1]];\n }\n\n this.state.model\n .setUniforms(uniforms)\n .setUniforms({\n billboard,\n stroked: Boolean(getLineWidth),\n padding,\n sizeUnits: UNIT[sizeUnits],\n sizeScale,\n sizeMinPixels,\n sizeMaxPixels\n })\n .draw();\n }\n\n protected _getModel(gl: WebGLRenderingContext): Model {\n // a square that minimally cover the unit circle\n const positions = [0, 0, 1, 0, 1, 1, 0, 1];\n\n return new Model(gl, {\n ...this.getShaders(),\n id: this.props.id,\n geometry: new Geometry({\n drawMode: GL.TRIANGLE_FAN,\n vertexCount: 4,\n attributes: {\n positions: {size: 2, value: new Float32Array(positions)}\n }\n }),\n isInstanced: true\n });\n }\n}\n","export default \"#define SHADER_NAME text-background-layer-vertex-shader\\n\\nattribute vec2 positions;\\n\\nattribute vec3 instancePositions;\\nattribute vec3 instancePositions64Low;\\nattribute vec4 instanceRects;\\nattribute float instanceSizes;\\nattribute float instanceAngles;\\nattribute vec2 instancePixelOffsets;\\nattribute float instanceLineWidths;\\nattribute vec4 instanceFillColors;\\nattribute vec4 instanceLineColors;\\nattribute vec3 instancePickingColors;\\n\\nuniform bool billboard;\\nuniform float opacity;\\nuniform float sizeScale;\\nuniform float sizeMinPixels;\\nuniform float sizeMaxPixels;\\nuniform vec4 padding;\\nuniform int sizeUnits;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying float vLineWidth;\\nvarying vec2 uv;\\nvarying vec2 dimensions;\\n\\nvec2 rotate_by_angle(vec2 vertex, float angle) {\\n float angle_radian = radians(angle);\\n float cos_angle = cos(angle_radian);\\n float sin_angle = sin(angle_radian);\\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\\n return rotationMatrix * vertex;\\n}\\n\\nvoid main(void) {\\n geometry.worldPosition = instancePositions;\\n geometry.uv = positions;\\n geometry.pickingColor = instancePickingColors;\\n uv = positions;\\n vLineWidth = instanceLineWidths;\\n float sizePixels = clamp(\\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits),\\n sizeMinPixels, sizeMaxPixels\\n );\\n\\n dimensions = instanceRects.zw * sizePixels + padding.xy + padding.zw;\\n\\n vec2 pixelOffset = (positions * instanceRects.zw + instanceRects.xy) * sizePixels + mix(-padding.xy, padding.zw, positions);\\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles);\\n pixelOffset += instancePixelOffsets;\\n pixelOffset.y *= -1.0;\\n\\n if (billboard) {\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n vec3 offset = vec3(pixelOffset, 0.0);\\n DECKGL_FILTER_SIZE(offset, geometry);\\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\\n } else {\\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\\n DECKGL_FILTER_SIZE(offset_common, geometry);\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position);\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n }\\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\\n DECKGL_FILTER_COLOR(vFillColor, geometry);\\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\\n DECKGL_FILTER_COLOR(vLineColor, geometry);\\n}\\n\";\n//# sourceMappingURL=text-background-layer-vertex.glsl.js.map","export default `\\\n#define SHADER_NAME text-background-layer-vertex-shader\n\nattribute vec2 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute vec4 instanceRects;\nattribute float instanceSizes;\nattribute float instanceAngles;\nattribute vec2 instancePixelOffsets;\nattribute float instanceLineWidths;\nattribute vec4 instanceFillColors;\nattribute vec4 instanceLineColors;\nattribute vec3 instancePickingColors;\n\nuniform bool billboard;\nuniform float opacity;\nuniform float sizeScale;\nuniform float sizeMinPixels;\nuniform float sizeMaxPixels;\nuniform vec4 padding;\nuniform int sizeUnits;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying float vLineWidth;\nvarying vec2 uv;\nvarying vec2 dimensions;\n\nvec2 rotate_by_angle(vec2 vertex, float angle) {\n float angle_radian = radians(angle);\n float cos_angle = cos(angle_radian);\n float sin_angle = sin(angle_radian);\n mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\n return rotationMatrix * vertex;\n}\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = positions;\n geometry.pickingColor = instancePickingColors;\n uv = positions;\n vLineWidth = instanceLineWidths;\n\n // convert size in meters to pixels, then scaled and clamp\n\n // project meters to pixels and clamp to limits\n float sizePixels = clamp(\n project_size_to_pixel(instanceSizes * sizeScale, sizeUnits),\n sizeMinPixels, sizeMaxPixels\n );\n\n dimensions = instanceRects.zw * sizePixels + padding.xy + padding.zw;\n\n vec2 pixelOffset = (positions * instanceRects.zw + instanceRects.xy) * sizePixels + mix(-padding.xy, padding.zw, positions);\n pixelOffset = rotate_by_angle(pixelOffset, instanceAngles);\n pixelOffset += instancePixelOffsets;\n pixelOffset.y *= -1.0;\n\n if (billboard) {\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n vec3 offset = vec3(pixelOffset, 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position.xy += project_pixel_size_to_clipspace(offset.xy);\n } else {\n vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0);\n DECKGL_FILTER_SIZE(offset_common, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n }\n\n // Apply opacity to instance color, or return instance picking color\n vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity);\n DECKGL_FILTER_COLOR(vFillColor, geometry);\n vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity);\n DECKGL_FILTER_COLOR(vLineColor, geometry);\n}\n`;\n","export default \"#define SHADER_NAME text-background-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform bool stroked;\\n\\nvarying vec4 vFillColor;\\nvarying vec4 vLineColor;\\nvarying float vLineWidth;\\nvarying vec2 uv;\\nvarying vec2 dimensions;\\n\\nvoid main(void) {\\n geometry.uv = uv;\\n\\n vec2 pixelPosition = uv * dimensions;\\n if (stroked) {\\n float distToEdge = min(\\n min(pixelPosition.x, dimensions.x - pixelPosition.x),\\n min(pixelPosition.y, dimensions.y - pixelPosition.y)\\n );\\n float isBorder = smoothedge(distToEdge, vLineWidth);\\n gl_FragColor = mix(vFillColor, vLineColor, isBorder);\\n } else {\\n gl_FragColor = vFillColor;\\n }\\n\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=text-background-layer-fragment.glsl.js.map","export default `\\\n#define SHADER_NAME text-background-layer-fragment-shader\n\nprecision highp float;\n\nuniform bool stroked;\n\nvarying vec4 vFillColor;\nvarying vec4 vLineColor;\nvarying float vLineWidth;\nvarying vec2 uv;\nvarying vec2 dimensions;\n\nvoid main(void) {\n geometry.uv = uv;\n\n vec2 pixelPosition = uv * dimensions;\n if (stroked) {\n float distToEdge = min(\n min(pixelPosition.x, dimensions.x - pixelPosition.x),\n min(pixelPosition.y, dimensions.y - pixelPosition.y)\n );\n float isBorder = smoothedge(distToEdge, vLineWidth);\n gl_FragColor = mix(vFillColor, vLineColor, isBorder);\n } else {\n gl_FragColor = vFillColor;\n }\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;\n","import { log } from '@deck.gl/core';\nexport function getGeojsonFeatures(geojson) {\n if (Array.isArray(geojson)) {\n return geojson;\n }\n\n log.assert(geojson.type, 'GeoJSON does not have type');\n\n switch (geojson.type) {\n case 'Feature':\n return [geojson];\n\n case 'FeatureCollection':\n log.assert(Array.isArray(geojson.features), 'GeoJSON does not have features array');\n return geojson.features;\n\n default:\n return [{\n geometry: geojson\n }];\n }\n}\nexport function separateGeojsonFeatures(features, wrapFeature, dataRange = {}) {\n const separated = {\n pointFeatures: [],\n lineFeatures: [],\n polygonFeatures: [],\n polygonOutlineFeatures: []\n };\n const {\n startRow = 0,\n endRow = features.length\n } = dataRange;\n\n for (let featureIndex = startRow; featureIndex < endRow; featureIndex++) {\n const feature = features[featureIndex];\n const {\n geometry\n } = feature;\n\n if (!geometry) {\n continue;\n }\n\n if (geometry.type === 'GeometryCollection') {\n log.assert(Array.isArray(geometry.geometries), 'GeoJSON does not have geometries array');\n const {\n geometries\n } = geometry;\n\n for (let i = 0; i < geometries.length; i++) {\n const subGeometry = geometries[i];\n separateGeometry(subGeometry, separated, wrapFeature, feature, featureIndex);\n }\n } else {\n separateGeometry(geometry, separated, wrapFeature, feature, featureIndex);\n }\n }\n\n return separated;\n}\n\nfunction separateGeometry(geometry, separated, wrapFeature, sourceFeature, sourceFeatureIndex) {\n const {\n type,\n coordinates\n } = geometry;\n const {\n pointFeatures,\n lineFeatures,\n polygonFeatures,\n polygonOutlineFeatures\n } = separated;\n\n if (!validateGeometry(type, coordinates)) {\n log.warn(\"\".concat(type, \" coordinates are malformed\"))();\n return;\n }\n\n switch (type) {\n case 'Point':\n pointFeatures.push(wrapFeature({\n geometry\n }, sourceFeature, sourceFeatureIndex));\n break;\n\n case 'MultiPoint':\n coordinates.forEach(point => {\n pointFeatures.push(wrapFeature({\n geometry: {\n type: 'Point',\n coordinates: point\n }\n }, sourceFeature, sourceFeatureIndex));\n });\n break;\n\n case 'LineString':\n lineFeatures.push(wrapFeature({\n geometry\n }, sourceFeature, sourceFeatureIndex));\n break;\n\n case 'MultiLineString':\n coordinates.forEach(path => {\n lineFeatures.push(wrapFeature({\n geometry: {\n type: 'LineString',\n coordinates: path\n }\n }, sourceFeature, sourceFeatureIndex));\n });\n break;\n\n case 'Polygon':\n polygonFeatures.push(wrapFeature({\n geometry\n }, sourceFeature, sourceFeatureIndex));\n coordinates.forEach(path => {\n polygonOutlineFeatures.push(wrapFeature({\n geometry: {\n type: 'LineString',\n coordinates: path\n }\n }, sourceFeature, sourceFeatureIndex));\n });\n break;\n\n case 'MultiPolygon':\n coordinates.forEach(polygon => {\n polygonFeatures.push(wrapFeature({\n geometry: {\n type: 'Polygon',\n coordinates: polygon\n }\n }, sourceFeature, sourceFeatureIndex));\n polygon.forEach(path => {\n polygonOutlineFeatures.push(wrapFeature({\n geometry: {\n type: 'LineString',\n coordinates: path\n }\n }, sourceFeature, sourceFeatureIndex));\n });\n });\n break;\n\n default:\n }\n}\n\nconst COORDINATE_NEST_LEVEL = {\n Point: 1,\n MultiPoint: 2,\n LineString: 2,\n MultiLineString: 3,\n Polygon: 3,\n MultiPolygon: 4\n};\nexport function validateGeometry(type, coordinates) {\n let nestLevel = COORDINATE_NEST_LEVEL[type];\n log.assert(nestLevel, \"Unknown GeoJSON type \".concat(type));\n\n while (coordinates && --nestLevel > 0) {\n coordinates = coordinates[0];\n }\n\n return coordinates && Number.isFinite(coordinates[0]);\n}\n//# sourceMappingURL=geojson.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {log} from '@deck.gl/core';\nimport type {\n Feature,\n GeoJSON,\n GeoJsonGeometryTypes,\n LineString,\n MultiLineString,\n MultiPoint,\n MultiPolygon,\n Point,\n Polygon\n} from 'geojson';\n\ntype SupportedGeometry = Point | MultiPoint | LineString | MultiLineString | Polygon | MultiPolygon;\n\nexport type SeparatedGeometries = {\n pointFeatures: {geometry: Point}[];\n lineFeatures: {geometry: LineString}[];\n polygonFeatures: {geometry: Polygon}[];\n polygonOutlineFeatures: {geometry: LineString}[];\n};\n\n/**\n * \"Normalizes\" complete or partial GeoJSON data into iterable list of features\n * Can accept GeoJSON geometry or \"Feature\", \"FeatureCollection\" in addition\n * to plain arrays and iterables.\n * Works by extracting the feature array or wrapping single objects in an array,\n * so that subsequent code can simply iterate over features.\n *\n * @param {object} geojson - geojson data\n * @param {Object|Array} data - geojson object (FeatureCollection, Feature or\n * Geometry) or array of features\n * @return {Array|\"iteratable\"} - iterable list of features\n */\nexport function getGeojsonFeatures(geojson: GeoJSON): Feature[] {\n // If array, assume this is a list of features\n if (Array.isArray(geojson)) {\n return geojson;\n }\n\n log.assert(geojson.type, 'GeoJSON does not have type');\n\n switch (geojson.type) {\n case 'Feature':\n // Wrap the feature in a 'Features' array\n return [geojson];\n case 'FeatureCollection':\n // Just return the 'Features' array from the collection\n log.assert(Array.isArray(geojson.features), 'GeoJSON does not have features array');\n return geojson.features;\n default:\n // Assume it's a geometry, we'll check type in separateGeojsonFeatures\n // Wrap the geometry object in a 'Feature' object and wrap in an array\n return [{geometry: geojson}] as Feature[];\n }\n}\n\n// Linearize\nexport function separateGeojsonFeatures(\n features: Feature[],\n wrapFeature: (row: T, sourceObject: any, sourceObjectIndex: number) => T,\n dataRange: {startRow?: number; endRow?: number} = {}\n): SeparatedGeometries {\n const separated: SeparatedGeometries = {\n pointFeatures: [],\n lineFeatures: [],\n polygonFeatures: [],\n polygonOutlineFeatures: []\n };\n const {startRow = 0, endRow = features.length} = dataRange;\n\n for (let featureIndex = startRow; featureIndex < endRow; featureIndex++) {\n const feature = features[featureIndex];\n const {geometry} = feature;\n\n if (!geometry) {\n // geometry can be null per specification\n continue; // eslint-disable-line no-continue\n }\n\n if (geometry.type === 'GeometryCollection') {\n log.assert(Array.isArray(geometry.geometries), 'GeoJSON does not have geometries array');\n const {geometries} = geometry;\n for (let i = 0; i < geometries.length; i++) {\n const subGeometry = geometries[i];\n separateGeometry(\n subGeometry as SupportedGeometry,\n separated,\n wrapFeature,\n feature,\n featureIndex\n );\n }\n } else {\n separateGeometry(geometry, separated, wrapFeature, feature, featureIndex);\n }\n }\n\n return separated;\n}\n\nfunction separateGeometry(\n geometry: SupportedGeometry,\n separated: SeparatedGeometries,\n wrapFeature: (row: T, sourceObject: any, sourceObjectIndex: number) => T,\n sourceFeature: Feature,\n sourceFeatureIndex: number\n) {\n const {type, coordinates} = geometry;\n const {pointFeatures, lineFeatures, polygonFeatures, polygonOutlineFeatures} = separated;\n\n if (!validateGeometry(type, coordinates)) {\n // Avoid hard failure if some features are malformed\n log.warn(`${type} coordinates are malformed`)();\n return;\n }\n\n // Split each feature, but keep track of the source feature and index (for Multi* geometries)\n switch (type) {\n case 'Point':\n pointFeatures.push(\n wrapFeature(\n {\n geometry\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n break;\n case 'MultiPoint':\n coordinates.forEach(point => {\n pointFeatures.push(\n wrapFeature(\n {\n geometry: {type: 'Point', coordinates: point}\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n });\n break;\n case 'LineString':\n lineFeatures.push(\n wrapFeature(\n {\n geometry\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n break;\n case 'MultiLineString':\n // Break multilinestrings into multiple lines\n coordinates.forEach(path => {\n lineFeatures.push(\n wrapFeature(\n {\n geometry: {type: 'LineString', coordinates: path}\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n });\n break;\n case 'Polygon':\n polygonFeatures.push(\n wrapFeature(\n {\n geometry\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n // Break polygon into multiple lines\n coordinates.forEach(path => {\n polygonOutlineFeatures.push(\n wrapFeature(\n {\n geometry: {type: 'LineString', coordinates: path}\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n });\n break;\n case 'MultiPolygon':\n // Break multipolygons into multiple polygons\n coordinates.forEach(polygon => {\n polygonFeatures.push(\n wrapFeature(\n {\n geometry: {type: 'Polygon', coordinates: polygon}\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n // Break polygon into multiple lines\n polygon.forEach(path => {\n polygonOutlineFeatures.push(\n wrapFeature(\n {\n geometry: {type: 'LineString', coordinates: path}\n },\n sourceFeature,\n sourceFeatureIndex\n )\n );\n });\n });\n break;\n default:\n }\n}\n\n/**\n * Simple GeoJSON validation util. For perf reasons we do not validate against the full spec,\n * only the following:\n - geometry.type is supported\n - geometry.coordinate has correct nesting level\n */\nconst COORDINATE_NEST_LEVEL: Record = {\n Point: 1,\n MultiPoint: 2,\n LineString: 2,\n MultiLineString: 3,\n Polygon: 3,\n MultiPolygon: 4\n};\n\nexport function validateGeometry(type: GeoJsonGeometryTypes, coordinates: any): boolean {\n let nestLevel = COORDINATE_NEST_LEVEL[type] as number;\n\n log.assert(nestLevel, `Unknown GeoJSON type ${type}`);\n\n while (coordinates && --nestLevel > 0) {\n coordinates = coordinates[0];\n }\n\n return coordinates && Number.isFinite(coordinates[0]);\n}\n","import { calculatePickingColors } from './geojson-binary';\n\nfunction createEmptyLayerProps() {\n return {\n points: {},\n lines: {},\n polygons: {},\n polygonsOutline: {}\n };\n}\n\nfunction getCoordinates(f) {\n return f.geometry.coordinates;\n}\n\nexport function createLayerPropsFromFeatures(features, featuresDiff) {\n const layerProps = createEmptyLayerProps();\n const {\n pointFeatures,\n lineFeatures,\n polygonFeatures,\n polygonOutlineFeatures\n } = features;\n layerProps.points.data = pointFeatures;\n\n layerProps.points._dataDiff = featuresDiff.pointFeatures && (() => featuresDiff.pointFeatures);\n\n layerProps.points.getPosition = getCoordinates;\n layerProps.lines.data = lineFeatures;\n\n layerProps.lines._dataDiff = featuresDiff.lineFeatures && (() => featuresDiff.lineFeatures);\n\n layerProps.lines.getPath = getCoordinates;\n layerProps.polygons.data = polygonFeatures;\n\n layerProps.polygons._dataDiff = featuresDiff.polygonFeatures && (() => featuresDiff.polygonFeatures);\n\n layerProps.polygons.getPolygon = getCoordinates;\n layerProps.polygonsOutline.data = polygonOutlineFeatures;\n\n layerProps.polygonsOutline._dataDiff = featuresDiff.polygonOutlineFeatures && (() => featuresDiff.polygonOutlineFeatures);\n\n layerProps.polygonsOutline.getPath = getCoordinates;\n return layerProps;\n}\nexport function createLayerPropsFromBinary(geojsonBinary, encodePickingColor) {\n const layerProps = createEmptyLayerProps();\n const {\n points,\n lines,\n polygons\n } = geojsonBinary;\n const customPickingColors = calculatePickingColors(geojsonBinary, encodePickingColor);\n layerProps.points.data = {\n length: points.positions.value.length / points.positions.size,\n attributes: { ...points.attributes,\n getPosition: points.positions,\n instancePickingColors: {\n size: 3,\n value: customPickingColors.points\n }\n },\n properties: points.properties,\n numericProps: points.numericProps,\n featureIds: points.featureIds\n };\n layerProps.lines.data = {\n length: lines.pathIndices.value.length - 1,\n startIndices: lines.pathIndices.value,\n attributes: { ...lines.attributes,\n getPath: lines.positions,\n instancePickingColors: {\n size: 3,\n value: customPickingColors.lines\n }\n },\n properties: lines.properties,\n numericProps: lines.numericProps,\n featureIds: lines.featureIds\n };\n layerProps.lines._pathType = 'open';\n layerProps.polygons.data = {\n length: polygons.polygonIndices.value.length - 1,\n startIndices: polygons.polygonIndices.value,\n attributes: { ...polygons.attributes,\n getPolygon: polygons.positions,\n pickingColors: {\n size: 3,\n value: customPickingColors.polygons\n }\n },\n properties: polygons.properties,\n numericProps: polygons.numericProps,\n featureIds: polygons.featureIds\n };\n layerProps.polygons._normalize = false;\n\n if (polygons.triangles) {\n layerProps.polygons.data.attributes.indices = polygons.triangles.value;\n }\n\n layerProps.polygonsOutline.data = {\n length: polygons.primitivePolygonIndices.value.length - 1,\n startIndices: polygons.primitivePolygonIndices.value,\n attributes: { ...polygons.attributes,\n getPath: polygons.positions,\n instancePickingColors: {\n size: 3,\n value: customPickingColors.polygons\n }\n },\n properties: polygons.properties,\n numericProps: polygons.numericProps,\n featureIds: polygons.featureIds\n };\n layerProps.polygonsOutline._pathType = 'open';\n return layerProps;\n}\n//# sourceMappingURL=geojson-layer-props.js.map","import {BinaryAttribute, LayerData, LayerProps} from '@deck.gl/core';\nimport {PolygonLayerProps, ScatterplotLayerProps} from '..';\nimport {calculatePickingColors} from './geojson-binary';\nimport {BinaryFeatures} from '@loaders.gl/schema';\nimport {SeparatedGeometries} from './geojson';\n\n// TODO: PathLayer is not yet typed\ntype PathLayerProps = LayerProps & Record;\n\ntype SubLayersProps = {\n points: Partial;\n lines: Partial;\n polygons: Partial;\n polygonsOutline: Partial;\n};\n\ntype ExtendedBinaryFeatures = {\n [P in keyof BinaryFeatures]: BinaryFeatures[P] & {attributes?: Record};\n};\n\nfunction createEmptyLayerProps(): SubLayersProps {\n return {\n points: {},\n lines: {},\n polygons: {},\n polygonsOutline: {}\n };\n}\n\nfunction getCoordinates(f) {\n return f.geometry.coordinates;\n}\n\nexport function createLayerPropsFromFeatures(\n features: SeparatedGeometries,\n featuresDiff\n): SubLayersProps {\n const layerProps = createEmptyLayerProps();\n const {pointFeatures, lineFeatures, polygonFeatures, polygonOutlineFeatures} = features;\n\n layerProps.points.data = pointFeatures;\n layerProps.points._dataDiff = featuresDiff.pointFeatures && (() => featuresDiff.pointFeatures);\n layerProps.points.getPosition = getCoordinates;\n\n layerProps.lines.data = lineFeatures;\n layerProps.lines._dataDiff = featuresDiff.lineFeatures && (() => featuresDiff.lineFeatures);\n layerProps.lines.getPath = getCoordinates;\n\n layerProps.polygons.data = polygonFeatures;\n layerProps.polygons._dataDiff =\n featuresDiff.polygonFeatures && (() => featuresDiff.polygonFeatures);\n layerProps.polygons.getPolygon = getCoordinates;\n\n layerProps.polygonsOutline.data = polygonOutlineFeatures;\n layerProps.polygonsOutline._dataDiff =\n featuresDiff.polygonOutlineFeatures && (() => featuresDiff.polygonOutlineFeatures);\n layerProps.polygonsOutline.getPath = getCoordinates;\n\n return layerProps;\n}\n\nexport function createLayerPropsFromBinary(\n geojsonBinary: Required,\n encodePickingColor\n): SubLayersProps {\n // The binary data format is documented here\n // https://github.com/visgl/loaders.gl/blob/master/modules/gis/docs/api-reference/geojson-to-binary.md\n // It is the default output from the `MVTLoader` and can also be obtained\n // from GeoJSON by using the `geojsonToBinary` utility function.\n const layerProps = createEmptyLayerProps();\n const {points, lines, polygons} = geojsonBinary;\n\n const customPickingColors = calculatePickingColors(geojsonBinary, encodePickingColor);\n\n layerProps.points.data = {\n length: points.positions.value.length / points.positions.size,\n attributes: {\n ...points.attributes,\n getPosition: points.positions,\n instancePickingColors: {\n size: 3,\n value: customPickingColors.points!\n }\n },\n properties: points.properties,\n numericProps: points.numericProps,\n featureIds: points.featureIds\n } as LayerData;\n\n layerProps.lines.data = {\n length: lines.pathIndices.value.length - 1,\n startIndices: lines.pathIndices.value,\n attributes: {\n ...lines.attributes,\n getPath: lines.positions,\n instancePickingColors: {\n size: 3,\n value: customPickingColors.lines!\n }\n },\n properties: lines.properties,\n numericProps: lines.numericProps,\n featureIds: lines.featureIds\n } as LayerData;\n layerProps.lines._pathType = 'open';\n\n layerProps.polygons.data = {\n length: polygons.polygonIndices.value.length - 1,\n startIndices: polygons.polygonIndices.value,\n attributes: {\n ...polygons.attributes,\n getPolygon: polygons.positions,\n pickingColors: {\n size: 3,\n value: customPickingColors.polygons!\n }\n },\n properties: polygons.properties,\n numericProps: polygons.numericProps,\n featureIds: polygons.featureIds\n } as LayerData;\n layerProps.polygons._normalize = false;\n if (polygons.triangles) {\n (layerProps.polygons.data as any).attributes.indices = polygons.triangles.value;\n }\n\n layerProps.polygonsOutline.data = {\n length: polygons.primitivePolygonIndices.value.length - 1,\n startIndices: polygons.primitivePolygonIndices.value,\n attributes: {\n ...polygons.attributes,\n getPath: polygons.positions,\n instancePickingColors: {\n size: 3,\n value: customPickingColors.polygons!\n }\n },\n properties: polygons.properties,\n numericProps: polygons.numericProps,\n featureIds: polygons.featureIds\n } as LayerData;\n layerProps.polygonsOutline._pathType = 'open';\n\n return layerProps;\n}\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"GeoJsonEditMode\", {\n enumerable: true,\n get: function get() {\n return _geojsonEditMode.GeoJsonEditMode;\n }\n});\nObject.defineProperty(exports, \"ModifyMode\", {\n enumerable: true,\n get: function get() {\n return _modifyMode.ModifyMode;\n }\n});\nObject.defineProperty(exports, \"ResizeCircleMode\", {\n enumerable: true,\n get: function get() {\n return _resizeCircleMode.ResizeCircleMode;\n }\n});\nObject.defineProperty(exports, \"TranslateMode\", {\n enumerable: true,\n get: function get() {\n return _translateMode.TranslateMode;\n }\n});\nObject.defineProperty(exports, \"ScaleMode\", {\n enumerable: true,\n get: function get() {\n return _scaleMode.ScaleMode;\n }\n});\nObject.defineProperty(exports, \"RotateMode\", {\n enumerable: true,\n get: function get() {\n return _rotateMode.RotateMode;\n }\n});\nObject.defineProperty(exports, \"DuplicateMode\", {\n enumerable: true,\n get: function get() {\n return _duplicateMode.DuplicateMode;\n }\n});\nObject.defineProperty(exports, \"ExtendLineStringMode\", {\n enumerable: true,\n get: function get() {\n return _extendLineStringMode.ExtendLineStringMode;\n }\n});\nObject.defineProperty(exports, \"SplitPolygonMode\", {\n enumerable: true,\n get: function get() {\n return _splitPolygonMode.SplitPolygonMode;\n }\n});\nObject.defineProperty(exports, \"ExtrudeMode\", {\n enumerable: true,\n get: function get() {\n return _extrudeMode.ExtrudeMode;\n }\n});\nObject.defineProperty(exports, \"ElevationMode\", {\n enumerable: true,\n get: function get() {\n return _elevationMode.ElevationMode;\n }\n});\nObject.defineProperty(exports, \"TransformMode\", {\n enumerable: true,\n get: function get() {\n return _transformMode.TransformMode;\n }\n});\nObject.defineProperty(exports, \"DrawPointMode\", {\n enumerable: true,\n get: function get() {\n return _drawPointMode.DrawPointMode;\n }\n});\nObject.defineProperty(exports, \"DrawLineStringMode\", {\n enumerable: true,\n get: function get() {\n return _drawLineStringMode.DrawLineStringMode;\n }\n});\nObject.defineProperty(exports, \"DrawPolygonMode\", {\n enumerable: true,\n get: function get() {\n return _drawPolygonMode.DrawPolygonMode;\n }\n});\nObject.defineProperty(exports, \"DrawRectangleMode\", {\n enumerable: true,\n get: function get() {\n return _drawRectangleMode.DrawRectangleMode;\n }\n});\nObject.defineProperty(exports, \"DrawSquareMode\", {\n enumerable: true,\n get: function get() {\n return _drawSquareMode.DrawSquareMode;\n }\n});\nObject.defineProperty(exports, \"DrawRectangleFromCenterMode\", {\n enumerable: true,\n get: function get() {\n return _drawRectangleFromCenterMode.DrawRectangleFromCenterMode;\n }\n});\nObject.defineProperty(exports, \"DrawSquareFromCenterMode\", {\n enumerable: true,\n get: function get() {\n return _drawSquareFromCenterMode.DrawSquareFromCenterMode;\n }\n});\nObject.defineProperty(exports, \"DrawCircleByDiameterMode\", {\n enumerable: true,\n get: function get() {\n return _drawCircleByDiameterMode.DrawCircleByDiameterMode;\n }\n});\nObject.defineProperty(exports, \"DrawCircleFromCenterMode\", {\n enumerable: true,\n get: function get() {\n return _drawCircleFromCenterMode.DrawCircleFromCenterMode;\n }\n});\nObject.defineProperty(exports, \"DrawEllipseByBoundingBoxMode\", {\n enumerable: true,\n get: function get() {\n return _drawEllipseByBoundingBoxMode.DrawEllipseByBoundingBoxMode;\n }\n});\nObject.defineProperty(exports, \"DrawEllipseUsingThreePointsMode\", {\n enumerable: true,\n get: function get() {\n return _drawEllipseUsingThreePointsMode.DrawEllipseUsingThreePointsMode;\n }\n});\nObject.defineProperty(exports, \"DrawRectangleUsingThreePointsMode\", {\n enumerable: true,\n get: function get() {\n return _drawRectangleUsingThreePointsMode.DrawRectangleUsingThreePointsMode;\n }\n});\nObject.defineProperty(exports, \"Draw90DegreePolygonMode\", {\n enumerable: true,\n get: function get() {\n return _draw90degreePolygonMode.Draw90DegreePolygonMode;\n }\n});\nObject.defineProperty(exports, \"DrawPolygonByDraggingMode\", {\n enumerable: true,\n get: function get() {\n return _drawPolygonByDraggingMode.DrawPolygonByDraggingMode;\n }\n});\nObject.defineProperty(exports, \"ImmutableFeatureCollection\", {\n enumerable: true,\n get: function get() {\n return _immutableFeatureCollection.ImmutableFeatureCollection;\n }\n});\nObject.defineProperty(exports, \"ViewMode\", {\n enumerable: true,\n get: function get() {\n return _viewMode.ViewMode;\n }\n});\nObject.defineProperty(exports, \"MeasureDistanceMode\", {\n enumerable: true,\n get: function get() {\n return _measureDistanceMode.MeasureDistanceMode;\n }\n});\nObject.defineProperty(exports, \"MeasureAreaMode\", {\n enumerable: true,\n get: function get() {\n return _measureAreaMode.MeasureAreaMode;\n }\n});\nObject.defineProperty(exports, \"MeasureAngleMode\", {\n enumerable: true,\n get: function get() {\n return _measureAngleMode.MeasureAngleMode;\n }\n});\nObject.defineProperty(exports, \"CompositeMode\", {\n enumerable: true,\n get: function get() {\n return _compositeMode.CompositeMode;\n }\n});\nObject.defineProperty(exports, \"SnappableMode\", {\n enumerable: true,\n get: function get() {\n return _snappableMode.SnappableMode;\n }\n});\nObject.defineProperty(exports, \"_memoize\", {\n enumerable: true,\n get: function get() {\n return _memoize[\"default\"];\n }\n});\nexports.utils = void 0;\n\nvar _geojsonEditMode = require(\"./lib/geojson-edit-mode\");\n\nvar _modifyMode = require(\"./lib/modify-mode\");\n\nvar _resizeCircleMode = require(\"./lib/resize-circle-mode\");\n\nvar _translateMode = require(\"./lib/translate-mode\");\n\nvar _scaleMode = require(\"./lib/scale-mode\");\n\nvar _rotateMode = require(\"./lib/rotate-mode\");\n\nvar _duplicateMode = require(\"./lib/duplicate-mode\");\n\nvar _extendLineStringMode = require(\"./lib/extend-line-string-mode\");\n\nvar _splitPolygonMode = require(\"./lib/split-polygon-mode\");\n\nvar _extrudeMode = require(\"./lib/extrude-mode\");\n\nvar _elevationMode = require(\"./lib/elevation-mode\");\n\nvar _transformMode = require(\"./lib/transform-mode\");\n\nvar _drawPointMode = require(\"./lib/draw-point-mode\");\n\nvar _drawLineStringMode = require(\"./lib/draw-line-string-mode\");\n\nvar _drawPolygonMode = require(\"./lib/draw-polygon-mode\");\n\nvar _drawRectangleMode = require(\"./lib/draw-rectangle-mode\");\n\nvar _drawSquareMode = require(\"./lib/draw-square-mode\");\n\nvar _drawRectangleFromCenterMode = require(\"./lib/draw-rectangle-from-center-mode\");\n\nvar _drawSquareFromCenterMode = require(\"./lib/draw-square-from-center-mode\");\n\nvar _drawCircleByDiameterMode = require(\"./lib/draw-circle-by-diameter-mode\");\n\nvar _drawCircleFromCenterMode = require(\"./lib/draw-circle-from-center-mode\");\n\nvar _drawEllipseByBoundingBoxMode = require(\"./lib/draw-ellipse-by-bounding-box-mode\");\n\nvar _drawEllipseUsingThreePointsMode = require(\"./lib/draw-ellipse-using-three-points-mode\");\n\nvar _drawRectangleUsingThreePointsMode = require(\"./lib/draw-rectangle-using-three-points-mode\");\n\nvar _draw90degreePolygonMode = require(\"./lib/draw-90degree-polygon-mode\");\n\nvar _drawPolygonByDraggingMode = require(\"./lib/draw-polygon-by-dragging-mode\");\n\nvar _immutableFeatureCollection = require(\"./lib/immutable-feature-collection\");\n\nvar _viewMode = require(\"./lib/view-mode\");\n\nvar _measureDistanceMode = require(\"./lib/measure-distance-mode\");\n\nvar _measureAreaMode = require(\"./lib/measure-area-mode\");\n\nvar _measureAngleMode = require(\"./lib/measure-angle-mode\");\n\nvar _compositeMode = require(\"./lib/composite-mode\");\n\nvar _snappableMode = require(\"./lib/snappable-mode\");\n\nvar _memoize = _interopRequireDefault(require(\"./memoize\"));\n\nvar utils = _interopRequireWildcard(require(\"./utils\"));\n\nexports.utils = utils;\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUEyQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7IEVkaXRNb2RlIH0gZnJvbSAnLi9saWIvZWRpdC1tb2RlJztcbmV4cG9ydCB0eXBlIHsgR2VvSnNvbkVkaXRNb2RlVHlwZSB9IGZyb20gJy4vbGliL2dlb2pzb24tZWRpdC1tb2RlJztcbmV4cG9ydCB0eXBlIHsgR2VvSnNvbkVkaXRNb2RlQ29uc3RydWN0b3IgfSBmcm9tICcuL2xpYi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbmV4cG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vbGliL2dlb2pzb24tZWRpdC1tb2RlJztcblxuLy8gQWx0ZXIgbW9kZXNcbmV4cG9ydCB7IE1vZGlmeU1vZGUgfSBmcm9tICcuL2xpYi9tb2RpZnktbW9kZSc7XG5leHBvcnQgeyBSZXNpemVDaXJjbGVNb2RlIH0gZnJvbSAnLi9saWIvcmVzaXplLWNpcmNsZS1tb2RlJztcbmV4cG9ydCB7IFRyYW5zbGF0ZU1vZGUgfSBmcm9tICcuL2xpYi90cmFuc2xhdGUtbW9kZSc7XG5leHBvcnQgeyBTY2FsZU1vZGUgfSBmcm9tICcuL2xpYi9zY2FsZS1tb2RlJztcbmV4cG9ydCB7IFJvdGF0ZU1vZGUgfSBmcm9tICcuL2xpYi9yb3RhdGUtbW9kZSc7XG5leHBvcnQgeyBEdXBsaWNhdGVNb2RlIH0gZnJvbSAnLi9saWIvZHVwbGljYXRlLW1vZGUnO1xuZXhwb3J0IHsgRXh0ZW5kTGluZVN0cmluZ01vZGUgfSBmcm9tICcuL2xpYi9leHRlbmQtbGluZS1zdHJpbmctbW9kZSc7XG5leHBvcnQgeyBTcGxpdFBvbHlnb25Nb2RlIH0gZnJvbSAnLi9saWIvc3BsaXQtcG9seWdvbi1tb2RlJztcbmV4cG9ydCB7IEV4dHJ1ZGVNb2RlIH0gZnJvbSAnLi9saWIvZXh0cnVkZS1tb2RlJztcbmV4cG9ydCB7IEVsZXZhdGlvbk1vZGUgfSBmcm9tICcuL2xpYi9lbGV2YXRpb24tbW9kZSc7XG5leHBvcnQgeyBUcmFuc2Zvcm1Nb2RlIH0gZnJvbSAnLi9saWIvdHJhbnNmb3JtLW1vZGUnO1xuXG4vLyBEcmF3IG1vZGVzXG5leHBvcnQgeyBEcmF3UG9pbnRNb2RlIH0gZnJvbSAnLi9saWIvZHJhdy1wb2ludC1tb2RlJztcbmV4cG9ydCB7IERyYXdMaW5lU3RyaW5nTW9kZSB9IGZyb20gJy4vbGliL2RyYXctbGluZS1zdHJpbmctbW9kZSc7XG5leHBvcnQgeyBEcmF3UG9seWdvbk1vZGUgfSBmcm9tICcuL2xpYi9kcmF3LXBvbHlnb24tbW9kZSc7XG5leHBvcnQgeyBEcmF3UmVjdGFuZ2xlTW9kZSB9IGZyb20gJy4vbGliL2RyYXctcmVjdGFuZ2xlLW1vZGUnO1xuZXhwb3J0IHsgRHJhd1NxdWFyZU1vZGUgfSBmcm9tICcuL2xpYi9kcmF3LXNxdWFyZS1tb2RlJztcbmV4cG9ydCB7IERyYXdSZWN0YW5nbGVGcm9tQ2VudGVyTW9kZSB9IGZyb20gJy4vbGliL2RyYXctcmVjdGFuZ2xlLWZyb20tY2VudGVyLW1vZGUnO1xuZXhwb3J0IHsgRHJhd1NxdWFyZUZyb21DZW50ZXJNb2RlIH0gZnJvbSAnLi9saWIvZHJhdy1zcXVhcmUtZnJvbS1jZW50ZXItbW9kZSc7XG5leHBvcnQgeyBEcmF3Q2lyY2xlQnlEaWFtZXRlck1vZGUgfSBmcm9tICcuL2xpYi9kcmF3LWNpcmNsZS1ieS1kaWFtZXRlci1tb2RlJztcbmV4cG9ydCB7IERyYXdDaXJjbGVGcm9tQ2VudGVyTW9kZSB9IGZyb20gJy4vbGliL2RyYXctY2lyY2xlLWZyb20tY2VudGVyLW1vZGUnO1xuZXhwb3J0IHsgRHJhd0VsbGlwc2VCeUJvdW5kaW5nQm94TW9kZSB9IGZyb20gJy4vbGliL2RyYXctZWxsaXBzZS1ieS1ib3VuZGluZy1ib3gtbW9kZSc7XG5leHBvcnQgeyBEcmF3RWxsaXBzZVVzaW5nVGhyZWVQb2ludHNNb2RlIH0gZnJvbSAnLi9saWIvZHJhdy1lbGxpcHNlLXVzaW5nLXRocmVlLXBvaW50cy1tb2RlJztcbmV4cG9ydCB7IERyYXdSZWN0YW5nbGVVc2luZ1RocmVlUG9pbnRzTW9kZSB9IGZyb20gJy4vbGliL2RyYXctcmVjdGFuZ2xlLXVzaW5nLXRocmVlLXBvaW50cy1tb2RlJztcbmV4cG9ydCB7IERyYXc5MERlZ3JlZVBvbHlnb25Nb2RlIH0gZnJvbSAnLi9saWIvZHJhdy05MGRlZ3JlZS1wb2x5Z29uLW1vZGUnO1xuZXhwb3J0IHsgRHJhd1BvbHlnb25CeURyYWdnaW5nTW9kZSB9IGZyb20gJy4vbGliL2RyYXctcG9seWdvbi1ieS1kcmFnZ2luZy1tb2RlJztcbmV4cG9ydCB7IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi9saWIvaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbic7XG5cbi8vIE90aGVyIG1vZGVzXG5leHBvcnQgeyBWaWV3TW9kZSB9IGZyb20gJy4vbGliL3ZpZXctbW9kZSc7XG5leHBvcnQgeyBNZWFzdXJlRGlzdGFuY2VNb2RlIH0gZnJvbSAnLi9saWIvbWVhc3VyZS1kaXN0YW5jZS1tb2RlJztcbmV4cG9ydCB7IE1lYXN1cmVBcmVhTW9kZSB9IGZyb20gJy4vbGliL21lYXN1cmUtYXJlYS1tb2RlJztcbmV4cG9ydCB7IE1lYXN1cmVBbmdsZU1vZGUgfSBmcm9tICcuL2xpYi9tZWFzdXJlLWFuZ2xlLW1vZGUnO1xuZXhwb3J0IHsgQ29tcG9zaXRlTW9kZSB9IGZyb20gJy4vbGliL2NvbXBvc2l0ZS1tb2RlJztcbmV4cG9ydCB7IFNuYXBwYWJsZU1vZGUgfSBmcm9tICcuL2xpYi9zbmFwcGFibGUtbW9kZSc7XG5cbi8vIEV4cGVyaW1lbnRhbFxuZXhwb3J0IHsgZGVmYXVsdCBhcyBfbWVtb2l6ZSB9IGZyb20gJy4vbWVtb2l6ZSc7XG5cbmV4cG9ydCB0eXBlIHtcbiAgU2NyZWVuQ29vcmRpbmF0ZXMsXG4gIEVkaXRBY3Rpb24sXG4gIFBpY2ssXG4gIENsaWNrRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIERyYWdnaW5nRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgVmlld3BvcnQsXG4gIFRvb2x0aXAsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSB7XG4gIFBvc2l0aW9uLFxuICBQb2ludENvb3JkaW5hdGVzLFxuICBMaW5lU3RyaW5nQ29vcmRpbmF0ZXMsXG4gIFBvbHlnb25Db29yZGluYXRlcyxcbiAgTXVsdGlQb2ludENvb3JkaW5hdGVzLFxuICBNdWx0aUxpbmVTdHJpbmdDb29yZGluYXRlcyxcbiAgTXVsdGlQb2x5Z29uQ29vcmRpbmF0ZXMsXG4gIEFueUNvb3JkaW5hdGVzLFxuICBQb2ludCxcbiAgTGluZVN0cmluZyxcbiAgUG9seWdvbixcbiAgTXVsdGlQb2ludCxcbiAgTXVsdGlMaW5lU3RyaW5nLFxuICBNdWx0aVBvbHlnb24sXG4gIEdlb21ldHJ5LFxuICBQb2x5Z29uYWwsXG4gIEJvdW5kaW5nQm94QXJyYXksXG4gIEZlYXR1cmVPZixcbiAgRmVhdHVyZVdpdGhQcm9wcyxcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZUNvbGxlY3Rpb24sXG4gIEFueUdlb0pzb24sXG59IGZyb20gJy4vZ2VvanNvbi10eXBlcyc7XG5cbi8vIFV0aWxzXG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCB7IHV0aWxzIH07XG4iXX0=","export type { EditMode } from './lib/edit-mode';\nexport type { GeoJsonEditModeType } from './lib/geojson-edit-mode';\nexport type { GeoJsonEditModeConstructor } from './lib/geojson-edit-mode';\n\nexport { GeoJsonEditMode } from './lib/geojson-edit-mode';\n\n// Alter modes\nexport { ModifyMode } from './lib/modify-mode';\nexport { ResizeCircleMode } from './lib/resize-circle-mode';\nexport { TranslateMode } from './lib/translate-mode';\nexport { ScaleMode } from './lib/scale-mode';\nexport { RotateMode } from './lib/rotate-mode';\nexport { DuplicateMode } from './lib/duplicate-mode';\nexport { ExtendLineStringMode } from './lib/extend-line-string-mode';\nexport { SplitPolygonMode } from './lib/split-polygon-mode';\nexport { ExtrudeMode } from './lib/extrude-mode';\nexport { ElevationMode } from './lib/elevation-mode';\nexport { TransformMode } from './lib/transform-mode';\n\n// Draw modes\nexport { DrawPointMode } from './lib/draw-point-mode';\nexport { DrawLineStringMode } from './lib/draw-line-string-mode';\nexport { DrawPolygonMode } from './lib/draw-polygon-mode';\nexport { DrawRectangleMode } from './lib/draw-rectangle-mode';\nexport { DrawSquareMode } from './lib/draw-square-mode';\nexport { DrawRectangleFromCenterMode } from './lib/draw-rectangle-from-center-mode';\nexport { DrawSquareFromCenterMode } from './lib/draw-square-from-center-mode';\nexport { DrawCircleByDiameterMode } from './lib/draw-circle-by-diameter-mode';\nexport { DrawCircleFromCenterMode } from './lib/draw-circle-from-center-mode';\nexport { DrawEllipseByBoundingBoxMode } from './lib/draw-ellipse-by-bounding-box-mode';\nexport { DrawEllipseUsingThreePointsMode } from './lib/draw-ellipse-using-three-points-mode';\nexport { DrawRectangleUsingThreePointsMode } from './lib/draw-rectangle-using-three-points-mode';\nexport { Draw90DegreePolygonMode } from './lib/draw-90degree-polygon-mode';\nexport { DrawPolygonByDraggingMode } from './lib/draw-polygon-by-dragging-mode';\nexport { ImmutableFeatureCollection } from './lib/immutable-feature-collection';\n\n// Other modes\nexport { ViewMode } from './lib/view-mode';\nexport { MeasureDistanceMode } from './lib/measure-distance-mode';\nexport { MeasureAreaMode } from './lib/measure-area-mode';\nexport { MeasureAngleMode } from './lib/measure-angle-mode';\nexport { CompositeMode } from './lib/composite-mode';\nexport { SnappableMode } from './lib/snappable-mode';\n\n// Experimental\nexport { default as _memoize } from './memoize';\n\nexport type {\n ScreenCoordinates,\n EditAction,\n Pick,\n ClickEvent,\n PointerMoveEvent,\n StartDraggingEvent,\n StopDraggingEvent,\n DraggingEvent,\n ModeProps,\n GuideFeatureCollection,\n Viewport,\n Tooltip,\n} from './types';\n\nexport type {\n Position,\n PointCoordinates,\n LineStringCoordinates,\n PolygonCoordinates,\n MultiPointCoordinates,\n MultiLineStringCoordinates,\n MultiPolygonCoordinates,\n AnyCoordinates,\n Point,\n LineString,\n Polygon,\n MultiPoint,\n MultiLineString,\n MultiPolygon,\n Geometry,\n Polygonal,\n BoundingBoxArray,\n FeatureOf,\n FeatureWithProps,\n Feature,\n FeatureCollection,\n AnyGeoJson,\n} from './geojson-types';\n\n// Utils\nimport * as utils from './utils';\nexport { utils };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getIntermediatePosition = getIntermediatePosition;\nexports.GeoJsonEditMode = void 0;\n\nvar _union = _interopRequireDefault(require(\"@turf/union\"));\n\nvar _difference = _interopRequireDefault(require(\"@turf/difference\"));\n\nvar _intersect = _interopRequireDefault(require(\"@turf/intersect\"));\n\nvar _rewind = _interopRequireDefault(require(\"@turf/rewind\"));\n\nvar _utils = require(\"../utils\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DEFAULT_GUIDES = {\n type: 'FeatureCollection',\n features: []\n};\nvar DEFAULT_TOOLTIPS = []; // Main interface for `EditMode`s that edit GeoJSON\n\nvar GeoJsonEditMode = /*#__PURE__*/function () {\n function GeoJsonEditMode() {\n _classCallCheck(this, GeoJsonEditMode);\n\n _defineProperty(this, \"_clickSequence\", []);\n }\n\n _createClass(GeoJsonEditMode, [{\n key: \"getGuides\",\n value: function getGuides(props) {\n return DEFAULT_GUIDES;\n }\n }, {\n key: \"getTooltips\",\n value: function getTooltips(props) {\n return DEFAULT_TOOLTIPS;\n }\n }, {\n key: \"getSelectedFeature\",\n value: function getSelectedFeature(props) {\n if (props.selectedIndexes.length === 1) {\n return props.data.features[props.selectedIndexes[0]];\n }\n\n return null;\n }\n }, {\n key: \"getSelectedGeometry\",\n value: function getSelectedGeometry(props) {\n var feature = this.getSelectedFeature(props);\n\n if (feature) {\n return feature.geometry;\n }\n\n return null;\n }\n }, {\n key: \"getSelectedFeaturesAsFeatureCollection\",\n value: function getSelectedFeaturesAsFeatureCollection(props) {\n var features = props.data.features;\n var selectedFeatures = props.selectedIndexes.map(function (selectedIndex) {\n return features[selectedIndex];\n });\n return {\n type: 'FeatureCollection',\n features: selectedFeatures\n };\n }\n }, {\n key: \"getClickSequence\",\n value: function getClickSequence() {\n return this._clickSequence;\n }\n }, {\n key: \"addClickSequence\",\n value: function addClickSequence(_ref) {\n var mapCoords = _ref.mapCoords;\n\n this._clickSequence.push(mapCoords);\n }\n }, {\n key: \"resetClickSequence\",\n value: function resetClickSequence() {\n this._clickSequence = [];\n }\n }, {\n key: \"getTentativeGuide\",\n value: function getTentativeGuide(props) {\n var guides = this.getGuides(props); // @ts-ignore\n\n return guides.features.find(function (f) {\n return f.properties && f.properties.guideType === 'tentative';\n });\n }\n }, {\n key: \"isSelectionPicked\",\n value: function isSelectionPicked(picks, props) {\n if (!picks.length) return false;\n var pickedFeatures = (0, _utils.getNonGuidePicks)(picks).map(function (_ref2) {\n var index = _ref2.index;\n return index;\n });\n var pickedHandles = (0, _utils.getPickedEditHandles)(picks).map(function (_ref3) {\n var properties = _ref3.properties;\n return properties.featureIndex;\n });\n var pickedIndexes = new Set([].concat(_toConsumableArray(pickedFeatures), _toConsumableArray(pickedHandles)));\n return props.selectedIndexes.some(function (index) {\n return pickedIndexes.has(index);\n });\n }\n }, {\n key: \"rewindPolygon\",\n value: function rewindPolygon(feature) {\n var geometry = feature.geometry;\n var isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon';\n\n if (isPolygonal) {\n // @ts-ignore\n return (0, _rewind[\"default\"])(feature);\n }\n\n return feature;\n }\n }, {\n key: \"getAddFeatureAction\",\n value: function getAddFeatureAction(featureOrGeometry, features) {\n // Unsure why flow can't deal with Geometry type, but there I fixed it\n var featureOrGeometryAsAny = featureOrGeometry;\n var feature = featureOrGeometryAsAny.type === 'Feature' ? featureOrGeometryAsAny : {\n type: 'Feature',\n properties: {},\n geometry: featureOrGeometryAsAny\n };\n var rewindFeature = this.rewindPolygon(feature);\n var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(features).addFeature(rewindFeature).getObject();\n return {\n updatedData: updatedData,\n editType: 'addFeature',\n editContext: {\n featureIndexes: [updatedData.features.length - 1]\n }\n };\n }\n }, {\n key: \"getAddManyFeaturesAction\",\n value: function getAddManyFeaturesAction(_ref4, features) {\n var featuresToAdd = _ref4.features;\n var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(features);\n var initialIndex = updatedData.getObject().features.length;\n var updatedIndexes = [];\n\n var _iterator = _createForOfIteratorHelper(featuresToAdd),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var feature = _step.value;\n var properties = feature.properties,\n geometry = feature.geometry;\n var geometryAsAny = geometry;\n updatedData = updatedData.addFeature({\n type: 'Feature',\n properties: properties,\n geometry: geometryAsAny\n });\n updatedIndexes.push(initialIndex + updatedIndexes.length);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return {\n updatedData: updatedData.getObject(),\n editType: 'addFeature',\n editContext: {\n featureIndexes: updatedIndexes\n }\n };\n }\n }, {\n key: \"getAddFeatureOrBooleanPolygonAction\",\n value: function getAddFeatureOrBooleanPolygonAction(featureOrGeometry, props) {\n var featureOrGeometryAsAny = featureOrGeometry;\n var selectedFeature = this.getSelectedFeature(props);\n var modeConfig = props.modeConfig;\n\n if (modeConfig && modeConfig.booleanOperation) {\n if (!selectedFeature || selectedFeature.geometry.type !== 'Polygon' && selectedFeature.geometry.type !== 'MultiPolygon') {\n // eslint-disable-next-line no-console,no-undef\n console.warn('booleanOperation only supported for single Polygon or MultiPolygon selection');\n return null;\n }\n\n var feature = featureOrGeometryAsAny.type === 'Feature' ? featureOrGeometryAsAny : {\n type: 'Feature',\n geometry: featureOrGeometryAsAny\n };\n var updatedGeometry;\n\n if (modeConfig.booleanOperation === 'union') {\n updatedGeometry = (0, _union[\"default\"])(selectedFeature, feature);\n } else if (modeConfig.booleanOperation === 'difference') {\n // @ts-ignore\n updatedGeometry = (0, _difference[\"default\"])(selectedFeature, feature);\n } else if (modeConfig.booleanOperation === 'intersection') {\n // @ts-ignore\n updatedGeometry = (0, _intersect[\"default\"])(selectedFeature, feature);\n } else {\n // eslint-disable-next-line no-console,no-undef\n console.warn(\"Invalid booleanOperation \".concat(modeConfig.booleanOperation));\n return null;\n }\n\n if (!updatedGeometry) {\n // eslint-disable-next-line no-console,no-undef\n console.warn('Canceling edit. Boolean operation erased entire polygon.');\n return null;\n }\n\n var featureIndex = props.selectedIndexes[0];\n var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replaceGeometry(featureIndex, updatedGeometry.geometry).getObject();\n var editAction = {\n updatedData: updatedData,\n editType: 'unionGeometry',\n editContext: {\n featureIndexes: [featureIndex]\n }\n };\n return editAction;\n }\n\n return this.getAddFeatureAction(featureOrGeometry, props.data);\n }\n }, {\n key: \"createTentativeFeature\",\n value: function createTentativeFeature(props) {\n return null;\n }\n }, {\n key: \"handleClick\",\n value: function handleClick(event, props) {}\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n var tentativeFeature = this.createTentativeFeature(props);\n\n if (tentativeFeature) {\n props.onEdit({\n updatedData: props.data,\n editType: 'updateTentativeFeature',\n editContext: {\n feature: tentativeFeature\n }\n });\n }\n }\n }, {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {}\n }, {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {}\n }, {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {}\n }, {\n key: \"handleKeyUp\",\n value: function handleKeyUp(event, props) {\n if (event.key === 'Escape') {\n this.resetClickSequence();\n props.onEdit({\n // Because the new drawing feature is dropped, so the data will keep as the same.\n updatedData: props.data,\n editType: 'cancelFeature',\n editContext: {}\n });\n }\n }\n }]);\n\n return GeoJsonEditMode;\n}();\n\nexports.GeoJsonEditMode = GeoJsonEditMode;\n\nfunction getIntermediatePosition(position1, position2) {\n var intermediatePosition = [(position1[0] + position2[0]) / 2.0, (position1[1] + position2[1]) / 2.0]; // @ts-ignore\n\n return intermediatePosition;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZ2VvanNvbi1lZGl0LW1vZGUudHMiXSwibmFtZXMiOlsiREVGQVVMVF9HVUlERVMiLCJ0eXBlIiwiZmVhdHVyZXMiLCJERUZBVUxUX1RPT0xUSVBTIiwiR2VvSnNvbkVkaXRNb2RlIiwicHJvcHMiLCJzZWxlY3RlZEluZGV4ZXMiLCJsZW5ndGgiLCJkYXRhIiwiZmVhdHVyZSIsImdldFNlbGVjdGVkRmVhdHVyZSIsImdlb21ldHJ5Iiwic2VsZWN0ZWRGZWF0dXJlcyIsIm1hcCIsInNlbGVjdGVkSW5kZXgiLCJfY2xpY2tTZXF1ZW5jZSIsIm1hcENvb3JkcyIsInB1c2giLCJndWlkZXMiLCJnZXRHdWlkZXMiLCJmaW5kIiwiZiIsInByb3BlcnRpZXMiLCJndWlkZVR5cGUiLCJwaWNrcyIsInBpY2tlZEZlYXR1cmVzIiwiaW5kZXgiLCJwaWNrZWRIYW5kbGVzIiwiZmVhdHVyZUluZGV4IiwicGlja2VkSW5kZXhlcyIsIlNldCIsInNvbWUiLCJoYXMiLCJpc1BvbHlnb25hbCIsImZlYXR1cmVPckdlb21ldHJ5IiwiZmVhdHVyZU9yR2VvbWV0cnlBc0FueSIsInJld2luZEZlYXR1cmUiLCJyZXdpbmRQb2x5Z29uIiwidXBkYXRlZERhdGEiLCJJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsImFkZEZlYXR1cmUiLCJnZXRPYmplY3QiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0IiwiZmVhdHVyZUluZGV4ZXMiLCJmZWF0dXJlc1RvQWRkIiwiaW5pdGlhbEluZGV4IiwidXBkYXRlZEluZGV4ZXMiLCJnZW9tZXRyeUFzQW55Iiwic2VsZWN0ZWRGZWF0dXJlIiwibW9kZUNvbmZpZyIsImJvb2xlYW5PcGVyYXRpb24iLCJjb25zb2xlIiwid2FybiIsInVwZGF0ZWRHZW9tZXRyeSIsInJlcGxhY2VHZW9tZXRyeSIsImVkaXRBY3Rpb24iLCJnZXRBZGRGZWF0dXJlQWN0aW9uIiwiZXZlbnQiLCJ0ZW50YXRpdmVGZWF0dXJlIiwiY3JlYXRlVGVudGF0aXZlRmVhdHVyZSIsIm9uRWRpdCIsImtleSIsInJlc2V0Q2xpY2tTZXF1ZW5jZSIsImdldEludGVybWVkaWF0ZVBvc2l0aW9uIiwicG9zaXRpb24xIiwicG9zaXRpb24yIiwiaW50ZXJtZWRpYXRlUG9zaXRpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBZ0JBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBLElBQU1BLGNBQXNDLEdBQUc7QUFDN0NDLEVBQUFBLElBQUksRUFBRSxtQkFEdUM7QUFFN0NDLEVBQUFBLFFBQVEsRUFBRTtBQUZtQyxDQUEvQztBQUlBLElBQU1DLGdCQUEyQixHQUFHLEVBQXBDLEMsQ0FFQTs7SUFPYUMsZTs7Ozs0Q0FDa0IsRTs7Ozs7OEJBRW5CQyxLLEVBQTZEO0FBQ3JFLGFBQU9MLGNBQVA7QUFDRDs7O2dDQUVXSyxLLEVBQWdEO0FBQzFELGFBQU9GLGdCQUFQO0FBQ0Q7Ozt1Q0FFa0JFLEssRUFBaUU7QUFDbEYsVUFBSUEsS0FBSyxDQUFDQyxlQUFOLENBQXNCQyxNQUF0QixLQUFpQyxDQUFyQyxFQUF3QztBQUN0QyxlQUFPRixLQUFLLENBQUNHLElBQU4sQ0FBV04sUUFBWCxDQUFvQkcsS0FBSyxDQUFDQyxlQUFOLENBQXNCLENBQXRCLENBQXBCLENBQVA7QUFDRDs7QUFDRCxhQUFPLElBQVA7QUFDRDs7O3dDQUVtQkQsSyxFQUFrRTtBQUNwRixVQUFNSSxPQUFPLEdBQUcsS0FBS0Msa0JBQUwsQ0FBd0JMLEtBQXhCLENBQWhCOztBQUNBLFVBQUlJLE9BQUosRUFBYTtBQUNYLGVBQU9BLE9BQU8sQ0FBQ0UsUUFBZjtBQUNEOztBQUNELGFBQU8sSUFBUDtBQUNEOzs7MkRBRXNDTixLLEVBQXdEO0FBQUEsVUFDckZILFFBRHFGLEdBQ3hFRyxLQUFLLENBQUNHLElBRGtFLENBQ3JGTixRQURxRjtBQUU3RixVQUFNVSxnQkFBZ0IsR0FBR1AsS0FBSyxDQUFDQyxlQUFOLENBQXNCTyxHQUF0QixDQUEwQixV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SyxFQUEyQyxDQUFFOzs7dUNBQ3pFcUQsSyxFQUEwQnJELEssRUFBMkMsQ0FBRTs7O21DQUMzRXFELEssRUFBc0JyRCxLLEVBQTJDLENBQUU7OztnQ0FFdEVxRCxLLEVBQXNCckQsSyxFQUEyQztBQUMzRSxVQUFJcUQsS0FBSyxDQUFDSSxHQUFOLEtBQWMsUUFBbEIsRUFBNEI7QUFDMUIsYUFBS0Msa0JBQUw7QUFDQTFELFFBQUFBLEtBQUssQ0FBQ3dELE1BQU4sQ0FBYTtBQUNYO0FBQ0F2QixVQUFBQSxXQUFXLEVBQUVqQyxLQUFLLENBQUNHLElBRlI7QUFHWGtDLFVBQUFBLFFBQVEsRUFBRSxlQUhDO0FBSVhDLFVBQUFBLFdBQVcsRUFBRTtBQUpGLFNBQWI7QUFNRDtBQUNGOzs7Ozs7OztBQUdJLFNBQVNxQix1QkFBVCxDQUFpQ0MsU0FBakMsRUFBc0RDLFNBQXRELEVBQXFGO0FBQzFGLE1BQU1DLG9CQUFvQixHQUFHLENBQzNCLENBQUNGLFNBQVMsQ0FBQyxDQUFELENBQVQsR0FBZUMsU0FBUyxDQUFDLENBQUQsQ0FBekIsSUFBZ0MsR0FETCxFQUUzQixDQUFDRCxTQUFTLENBQUMsQ0FBRCxDQUFULEdBQWVDLFNBQVMsQ0FBQyxDQUFELENBQXpCLElBQWdDLEdBRkwsQ0FBN0IsQ0FEMEYsQ0FLMUY7O0FBQ0EsU0FBT0Msb0JBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0dXJmVW5pb24gZnJvbSAnQHR1cmYvdW5pb24nO1xuaW1wb3J0IHR1cmZEaWZmZXJlbmNlIGZyb20gJ0B0dXJmL2RpZmZlcmVuY2UnO1xuaW1wb3J0IHR1cmZJbnRlcnNlY3QgZnJvbSAnQHR1cmYvaW50ZXJzZWN0JztcbmltcG9ydCByZXdpbmQgZnJvbSAnQHR1cmYvcmV3aW5kJztcblxuaW1wb3J0IHtcbiAgRWRpdEFjdGlvbixcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgUGljayxcbiAgVG9vbHRpcCxcbiAgTW9kZVByb3BzLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxuICBUZW50YXRpdmVGZWF0dXJlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiwgRmVhdHVyZSwgUG9seWdvbiwgR2VvbWV0cnksIFBvc2l0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBnZXRQaWNrZWRFZGl0SGFuZGxlcywgZ2V0Tm9uR3VpZGVQaWNrcyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEVkaXRNb2RlIH0gZnJvbSAnLi9lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgdHlwZSBHZW9Kc29uRWRpdEFjdGlvbiA9IEVkaXRBY3Rpb248RmVhdHVyZUNvbGxlY3Rpb24+O1xuXG5jb25zdCBERUZBVUxUX0dVSURFUzogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgZmVhdHVyZXM6IFtdLFxufTtcbmNvbnN0IERFRkFVTFRfVE9PTFRJUFM6IFRvb2x0aXBbXSA9IFtdO1xuXG4vLyBNYWluIGludGVyZmFjZSBmb3IgYEVkaXRNb2RlYHMgdGhhdCBlZGl0IEdlb0pTT05cbmV4cG9ydCB0eXBlIEdlb0pzb25FZGl0TW9kZVR5cGUgPSBFZGl0TW9kZTxGZWF0dXJlQ29sbGVjdGlvbiwgRmVhdHVyZUNvbGxlY3Rpb24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlb0pzb25FZGl0TW9kZUNvbnN0cnVjdG9yIHtcbiAgbmV3ICgpOiBHZW9Kc29uRWRpdE1vZGVUeXBlO1xufVxuXG5leHBvcnQgY2xhc3MgR2VvSnNvbkVkaXRNb2RlIGltcGxlbWVudHMgRWRpdE1vZGU8RmVhdHVyZUNvbGxlY3Rpb24sIEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24+IHtcbiAgX2NsaWNrU2VxdWVuY2U6IFBvc2l0aW9uW10gPSBbXTtcblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICByZXR1cm4gREVGQVVMVF9HVUlERVM7XG4gIH1cblxuICBnZXRUb29sdGlwcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRvb2x0aXBbXSB7XG4gICAgcmV0dXJuIERFRkFVTFRfVE9PTFRJUFM7XG4gIH1cblxuICBnZXRTZWxlY3RlZEZlYXR1cmUocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHByb3BzLnNlbGVjdGVkSW5kZXhlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBwcm9wcy5kYXRhLmZlYXR1cmVzW3Byb3BzLnNlbGVjdGVkSW5kZXhlc1swXV07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRHZW9tZXRyeShwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEdlb21ldHJ5IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZmVhdHVyZSA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlKHByb3BzKTtcbiAgICBpZiAoZmVhdHVyZSkge1xuICAgICAgcmV0dXJuIGZlYXR1cmUuZ2VvbWV0cnk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgeyBmZWF0dXJlcyB9ID0gcHJvcHMuZGF0YTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzLm1hcCgoc2VsZWN0ZWRJbmRleCkgPT4gZmVhdHVyZXNbc2VsZWN0ZWRJbmRleF0pO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IHNlbGVjdGVkRmVhdHVyZXMsXG4gICAgfTtcbiAgfVxuXG4gIGdldENsaWNrU2VxdWVuY2UoKTogUG9zaXRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsaWNrU2VxdWVuY2U7XG4gIH1cblxuICBhZGRDbGlja1NlcXVlbmNlKHsgbWFwQ29vcmRzIH06IENsaWNrRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9jbGlja1NlcXVlbmNlLnB1c2gobWFwQ29vcmRzKTtcbiAgfVxuXG4gIHJlc2V0Q2xpY2tTZXF1ZW5jZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbGlja1NlcXVlbmNlID0gW107XG4gIH1cblxuICBnZXRUZW50YXRpdmVHdWlkZShwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRlbnRhdGl2ZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBndWlkZXMgPSB0aGlzLmdldEd1aWRlcyhwcm9wcyk7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGd1aWRlcy5mZWF0dXJlcy5maW5kKChmKSA9PiBmLnByb3BlcnRpZXMgJiYgZi5wcm9wZXJ0aWVzLmd1aWRlVHlwZSA9PT0gJ3RlbnRhdGl2ZScpO1xuICB9XG5cbiAgaXNTZWxlY3Rpb25QaWNrZWQocGlja3M6IFBpY2tbXSwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBib29sZWFuIHtcbiAgICBpZiAoIXBpY2tzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IHBpY2tlZEZlYXR1cmVzID0gZ2V0Tm9uR3VpZGVQaWNrcyhwaWNrcykubWFwKCh7IGluZGV4IH0pID0+IGluZGV4KTtcbiAgICBjb25zdCBwaWNrZWRIYW5kbGVzID0gZ2V0UGlja2VkRWRpdEhhbmRsZXMocGlja3MpLm1hcChcbiAgICAgICh7IHByb3BlcnRpZXMgfSkgPT4gcHJvcGVydGllcy5mZWF0dXJlSW5kZXhcbiAgICApO1xuICAgIGNvbnN0IHBpY2tlZEluZGV4ZXMgPSBuZXcgU2V0KFsuLi5waWNrZWRGZWF0dXJlcywgLi4ucGlja2VkSGFuZGxlc10pO1xuICAgIHJldHVybiBwcm9wcy5zZWxlY3RlZEluZGV4ZXMuc29tZSgoaW5kZXgpID0+IHBpY2tlZEluZGV4ZXMuaGFzKGluZGV4KSk7XG4gIH1cblxuICByZXdpbmRQb2x5Z29uKGZlYXR1cmU6IEZlYXR1cmUpOiBGZWF0dXJlIHtcbiAgICBjb25zdCB7IGdlb21ldHJ5IH0gPSBmZWF0dXJlO1xuXG4gICAgY29uc3QgaXNQb2x5Z29uYWwgPSBnZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicgfHwgZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbic7XG4gICAgaWYgKGlzUG9seWdvbmFsKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gcmV3aW5kKGZlYXR1cmUpO1xuICAgIH1cblxuICAgIHJldHVybiBmZWF0dXJlO1xuICB9XG5cbiAgZ2V0QWRkRmVhdHVyZUFjdGlvbihcbiAgICBmZWF0dXJlT3JHZW9tZXRyeTogR2VvbWV0cnkgfCBGZWF0dXJlLFxuICAgIGZlYXR1cmVzOiBGZWF0dXJlQ29sbGVjdGlvblxuICApOiBHZW9Kc29uRWRpdEFjdGlvbiB7XG4gICAgLy8gVW5zdXJlIHdoeSBmbG93IGNhbid0IGRlYWwgd2l0aCBHZW9tZXRyeSB0eXBlLCBidXQgdGhlcmUgSSBmaXhlZCBpdFxuICAgIGNvbnN0IGZlYXR1cmVPckdlb21ldHJ5QXNBbnk6IGFueSA9IGZlYXR1cmVPckdlb21ldHJ5O1xuXG4gICAgY29uc3QgZmVhdHVyZTogYW55ID1cbiAgICAgIGZlYXR1cmVPckdlb21ldHJ5QXNBbnkudHlwZSA9PT0gJ0ZlYXR1cmUnXG4gICAgICAgID8gZmVhdHVyZU9yR2VvbWV0cnlBc0FueVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICAgICAgZ2VvbWV0cnk6IGZlYXR1cmVPckdlb21ldHJ5QXNBbnksXG4gICAgICAgICAgfTtcblxuICAgIGNvbnN0IHJld2luZEZlYXR1cmUgPSB0aGlzLnJld2luZFBvbHlnb24oZmVhdHVyZSk7XG4gICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oZmVhdHVyZXMpXG4gICAgICAuYWRkRmVhdHVyZShyZXdpbmRGZWF0dXJlKVxuICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgZWRpdFR5cGU6ICdhZGRGZWF0dXJlJyxcbiAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiBbdXBkYXRlZERhdGEuZmVhdHVyZXMubGVuZ3RoIC0gMV0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBnZXRBZGRNYW55RmVhdHVyZXNBY3Rpb24oXG4gICAgeyBmZWF0dXJlczogZmVhdHVyZXNUb0FkZCB9OiBGZWF0dXJlQ29sbGVjdGlvbixcbiAgICBmZWF0dXJlczogRmVhdHVyZUNvbGxlY3Rpb25cbiAgKTogR2VvSnNvbkVkaXRBY3Rpb24ge1xuICAgIGxldCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihmZWF0dXJlcyk7XG4gICAgY29uc3QgaW5pdGlhbEluZGV4ID0gdXBkYXRlZERhdGEuZ2V0T2JqZWN0KCkuZmVhdHVyZXMubGVuZ3RoO1xuICAgIGNvbnN0IHVwZGF0ZWRJbmRleGVzID0gW107XG4gICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzVG9BZGQpIHtcbiAgICAgIGNvbnN0IHsgcHJvcGVydGllcywgZ2VvbWV0cnkgfSA9IGZlYXR1cmU7XG4gICAgICBjb25zdCBnZW9tZXRyeUFzQW55OiBhbnkgPSBnZW9tZXRyeTtcbiAgICAgIHVwZGF0ZWREYXRhID0gdXBkYXRlZERhdGEuYWRkRmVhdHVyZSh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgZ2VvbWV0cnk6IGdlb21ldHJ5QXNBbnksXG4gICAgICB9KTtcbiAgICAgIHVwZGF0ZWRJbmRleGVzLnB1c2goaW5pdGlhbEluZGV4ICsgdXBkYXRlZEluZGV4ZXMubGVuZ3RoKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlZERhdGE6IHVwZGF0ZWREYXRhLmdldE9iamVjdCgpLFxuICAgICAgZWRpdFR5cGU6ICdhZGRGZWF0dXJlJyxcbiAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiB1cGRhdGVkSW5kZXhlcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uKFxuICAgIGZlYXR1cmVPckdlb21ldHJ5OiBQb2x5Z29uIHwgRmVhdHVyZSxcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBHZW9Kc29uRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGZlYXR1cmVPckdlb21ldHJ5QXNBbnk6IGFueSA9IGZlYXR1cmVPckdlb21ldHJ5O1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmUocHJvcHMpO1xuICAgIGNvbnN0IHsgbW9kZUNvbmZpZyB9ID0gcHJvcHM7XG4gICAgaWYgKG1vZGVDb25maWcgJiYgbW9kZUNvbmZpZy5ib29sZWFuT3BlcmF0aW9uKSB7XG4gICAgICBpZiAoXG4gICAgICAgICFzZWxlY3RlZEZlYXR1cmUgfHxcbiAgICAgICAgKHNlbGVjdGVkRmVhdHVyZS5nZW9tZXRyeS50eXBlICE9PSAnUG9seWdvbicgJiZcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmUuZ2VvbWV0cnkudHlwZSAhPT0gJ011bHRpUG9seWdvbicpXG4gICAgICApIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdib29sZWFuT3BlcmF0aW9uIG9ubHkgc3VwcG9ydGVkIGZvciBzaW5nbGUgUG9seWdvbiBvciBNdWx0aVBvbHlnb24gc2VsZWN0aW9uJ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmVhdHVyZSA9XG4gICAgICAgIGZlYXR1cmVPckdlb21ldHJ5QXNBbnkudHlwZSA9PT0gJ0ZlYXR1cmUnXG4gICAgICAgICAgPyBmZWF0dXJlT3JHZW9tZXRyeUFzQW55XG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgICAgZ2VvbWV0cnk6IGZlYXR1cmVPckdlb21ldHJ5QXNBbnksXG4gICAgICAgICAgICB9O1xuXG4gICAgICBsZXQgdXBkYXRlZEdlb21ldHJ5O1xuICAgICAgaWYgKG1vZGVDb25maWcuYm9vbGVhbk9wZXJhdGlvbiA9PT0gJ3VuaW9uJykge1xuICAgICAgICB1cGRhdGVkR2VvbWV0cnkgPSB0dXJmVW5pb24oc2VsZWN0ZWRGZWF0dXJlLCBmZWF0dXJlKTtcbiAgICAgIH0gZWxzZSBpZiAobW9kZUNvbmZpZy5ib29sZWFuT3BlcmF0aW9uID09PSAnZGlmZmVyZW5jZScpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB1cGRhdGVkR2VvbWV0cnkgPSB0dXJmRGlmZmVyZW5jZShzZWxlY3RlZEZlYXR1cmUsIGZlYXR1cmUpO1xuICAgICAgfSBlbHNlIGlmIChtb2RlQ29uZmlnLmJvb2xlYW5PcGVyYXRpb24gPT09ICdpbnRlcnNlY3Rpb24nKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdXBkYXRlZEdlb21ldHJ5ID0gdHVyZkludGVyc2VjdChzZWxlY3RlZEZlYXR1cmUsIGZlYXR1cmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgICAgY29uc29sZS53YXJuKGBJbnZhbGlkIGJvb2xlYW5PcGVyYXRpb24gJHttb2RlQ29uZmlnLmJvb2xlYW5PcGVyYXRpb259YCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXVwZGF0ZWRHZW9tZXRyeSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgICBjb25zb2xlLndhcm4oJ0NhbmNlbGluZyBlZGl0LiBCb29sZWFuIG9wZXJhdGlvbiBlcmFzZWQgZW50aXJlIHBvbHlnb24uJyk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmZWF0dXJlSW5kZXggPSBwcm9wcy5zZWxlY3RlZEluZGV4ZXNbMF07XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpXG4gICAgICAgIC5yZXBsYWNlR2VvbWV0cnkoZmVhdHVyZUluZGV4LCB1cGRhdGVkR2VvbWV0cnkuZ2VvbWV0cnkpXG4gICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgY29uc3QgZWRpdEFjdGlvbjogR2VvSnNvbkVkaXRBY3Rpb24gPSB7XG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ3VuaW9uR2VvbWV0cnknLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZmVhdHVyZUluZGV4XSxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRBZGRGZWF0dXJlQWN0aW9uKGZlYXR1cmVPckdlb21ldHJ5LCBwcm9wcy5kYXRhKTtcbiAgfVxuXG4gIGNyZWF0ZVRlbnRhdGl2ZUZlYXR1cmUocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBUZW50YXRpdmVGZWF0dXJlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge31cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuY3JlYXRlVGVudGF0aXZlRmVhdHVyZShwcm9wcyk7XG4gICAgaWYgKHRlbnRhdGl2ZUZlYXR1cmUpIHtcbiAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgIHVwZGF0ZWREYXRhOiBwcm9wcy5kYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ3VwZGF0ZVRlbnRhdGl2ZUZlYXR1cmUnLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIGZlYXR1cmU6IHRlbnRhdGl2ZUZlYXR1cmUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge31cbiAgaGFuZGxlU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHt9XG4gIGhhbmRsZURyYWdnaW5nKGV2ZW50OiBEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge31cblxuICBoYW5kbGVLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgIC8vIEJlY2F1c2UgdGhlIG5ldyBkcmF3aW5nIGZlYXR1cmUgaXMgZHJvcHBlZCwgc28gdGhlIGRhdGEgd2lsbCBrZWVwIGFzIHRoZSBzYW1lLlxuICAgICAgICB1cGRhdGVkRGF0YTogcHJvcHMuZGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICdjYW5jZWxGZWF0dXJlJyxcbiAgICAgICAgZWRpdENvbnRleHQ6IHt9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnRlcm1lZGlhdGVQb3NpdGlvbihwb3NpdGlvbjE6IFBvc2l0aW9uLCBwb3NpdGlvbjI6IFBvc2l0aW9uKTogUG9zaXRpb24ge1xuICBjb25zdCBpbnRlcm1lZGlhdGVQb3NpdGlvbiA9IFtcbiAgICAocG9zaXRpb24xWzBdICsgcG9zaXRpb24yWzBdKSAvIDIuMCxcbiAgICAocG9zaXRpb24xWzFdICsgcG9zaXRpb24yWzFdKSAvIDIuMCxcbiAgXTtcbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gaW50ZXJtZWRpYXRlUG9zaXRpb247XG59XG4iXX0=","import turfUnion from '@turf/union';\nimport turfDifference from '@turf/difference';\nimport turfIntersect from '@turf/intersect';\nimport rewind from '@turf/rewind';\n\nimport {\n EditAction,\n ClickEvent,\n PointerMoveEvent,\n StartDraggingEvent,\n StopDraggingEvent,\n DraggingEvent,\n Pick,\n Tooltip,\n ModeProps,\n GuideFeatureCollection,\n TentativeFeature,\n} from '../types';\nimport { FeatureCollection, Feature, Polygon, Geometry, Position } from '../geojson-types';\nimport { getPickedEditHandles, getNonGuidePicks } from '../utils';\nimport { EditMode } from './edit-mode';\nimport { ImmutableFeatureCollection } from './immutable-feature-collection';\n\nexport type GeoJsonEditAction = EditAction;\n\nconst DEFAULT_GUIDES: GuideFeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n};\nconst DEFAULT_TOOLTIPS: Tooltip[] = [];\n\n// Main interface for `EditMode`s that edit GeoJSON\nexport type GeoJsonEditModeType = EditMode;\n\nexport interface GeoJsonEditModeConstructor {\n new (): GeoJsonEditModeType;\n}\n\nexport class GeoJsonEditMode implements EditMode {\n _clickSequence: Position[] = [];\n\n getGuides(props: ModeProps): GuideFeatureCollection {\n return DEFAULT_GUIDES;\n }\n\n getTooltips(props: ModeProps): Tooltip[] {\n return DEFAULT_TOOLTIPS;\n }\n\n getSelectedFeature(props: ModeProps): Feature | null | undefined {\n if (props.selectedIndexes.length === 1) {\n return props.data.features[props.selectedIndexes[0]];\n }\n return null;\n }\n\n getSelectedGeometry(props: ModeProps): Geometry | null | undefined {\n const feature = this.getSelectedFeature(props);\n if (feature) {\n return feature.geometry;\n }\n return null;\n }\n\n getSelectedFeaturesAsFeatureCollection(props: ModeProps): FeatureCollection {\n const { features } = props.data;\n const selectedFeatures = props.selectedIndexes.map((selectedIndex) => features[selectedIndex]);\n return {\n type: 'FeatureCollection',\n features: selectedFeatures,\n };\n }\n\n getClickSequence(): Position[] {\n return this._clickSequence;\n }\n\n addClickSequence({ mapCoords }: ClickEvent): void {\n this._clickSequence.push(mapCoords);\n }\n\n resetClickSequence(): void {\n this._clickSequence = [];\n }\n\n getTentativeGuide(props: ModeProps): TentativeFeature | null | undefined {\n const guides = this.getGuides(props);\n\n // @ts-ignore\n return guides.features.find((f) => f.properties && f.properties.guideType === 'tentative');\n }\n\n isSelectionPicked(picks: Pick[], props: ModeProps): boolean {\n if (!picks.length) return false;\n const pickedFeatures = getNonGuidePicks(picks).map(({ index }) => index);\n const pickedHandles = getPickedEditHandles(picks).map(\n ({ properties }) => properties.featureIndex\n );\n const pickedIndexes = new Set([...pickedFeatures, ...pickedHandles]);\n return props.selectedIndexes.some((index) => pickedIndexes.has(index));\n }\n\n rewindPolygon(feature: Feature): Feature {\n const { geometry } = feature;\n\n const isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon';\n if (isPolygonal) {\n // @ts-ignore\n return rewind(feature);\n }\n\n return feature;\n }\n\n getAddFeatureAction(\n featureOrGeometry: Geometry | Feature,\n features: FeatureCollection\n ): GeoJsonEditAction {\n // Unsure why flow can't deal with Geometry type, but there I fixed it\n const featureOrGeometryAsAny: any = featureOrGeometry;\n\n const feature: any =\n featureOrGeometryAsAny.type === 'Feature'\n ? featureOrGeometryAsAny\n : {\n type: 'Feature',\n properties: {},\n geometry: featureOrGeometryAsAny,\n };\n\n const rewindFeature = this.rewindPolygon(feature);\n const updatedData = new ImmutableFeatureCollection(features)\n .addFeature(rewindFeature)\n .getObject();\n\n return {\n updatedData,\n editType: 'addFeature',\n editContext: {\n featureIndexes: [updatedData.features.length - 1],\n },\n };\n }\n\n getAddManyFeaturesAction(\n { features: featuresToAdd }: FeatureCollection,\n features: FeatureCollection\n ): GeoJsonEditAction {\n let updatedData = new ImmutableFeatureCollection(features);\n const initialIndex = updatedData.getObject().features.length;\n const updatedIndexes = [];\n for (const feature of featuresToAdd) {\n const { properties, geometry } = feature;\n const geometryAsAny: any = geometry;\n updatedData = updatedData.addFeature({\n type: 'Feature',\n properties,\n geometry: geometryAsAny,\n });\n updatedIndexes.push(initialIndex + updatedIndexes.length);\n }\n\n return {\n updatedData: updatedData.getObject(),\n editType: 'addFeature',\n editContext: {\n featureIndexes: updatedIndexes,\n },\n };\n }\n\n getAddFeatureOrBooleanPolygonAction(\n featureOrGeometry: Polygon | Feature,\n props: ModeProps\n ): GeoJsonEditAction | null | undefined {\n const featureOrGeometryAsAny: any = featureOrGeometry;\n\n const selectedFeature = this.getSelectedFeature(props);\n const { modeConfig } = props;\n if (modeConfig && modeConfig.booleanOperation) {\n if (\n !selectedFeature ||\n (selectedFeature.geometry.type !== 'Polygon' &&\n selectedFeature.geometry.type !== 'MultiPolygon')\n ) {\n // eslint-disable-next-line no-console,no-undef\n console.warn(\n 'booleanOperation only supported for single Polygon or MultiPolygon selection'\n );\n return null;\n }\n\n const feature =\n featureOrGeometryAsAny.type === 'Feature'\n ? featureOrGeometryAsAny\n : {\n type: 'Feature',\n geometry: featureOrGeometryAsAny,\n };\n\n let updatedGeometry;\n if (modeConfig.booleanOperation === 'union') {\n updatedGeometry = turfUnion(selectedFeature, feature);\n } else if (modeConfig.booleanOperation === 'difference') {\n // @ts-ignore\n updatedGeometry = turfDifference(selectedFeature, feature);\n } else if (modeConfig.booleanOperation === 'intersection') {\n // @ts-ignore\n updatedGeometry = turfIntersect(selectedFeature, feature);\n } else {\n // eslint-disable-next-line no-console,no-undef\n console.warn(`Invalid booleanOperation ${modeConfig.booleanOperation}`);\n return null;\n }\n\n if (!updatedGeometry) {\n // eslint-disable-next-line no-console,no-undef\n console.warn('Canceling edit. Boolean operation erased entire polygon.');\n return null;\n }\n\n const featureIndex = props.selectedIndexes[0];\n\n const updatedData = new ImmutableFeatureCollection(props.data)\n .replaceGeometry(featureIndex, updatedGeometry.geometry)\n .getObject();\n\n const editAction: GeoJsonEditAction = {\n updatedData,\n editType: 'unionGeometry',\n editContext: {\n featureIndexes: [featureIndex],\n },\n };\n\n return editAction;\n }\n return this.getAddFeatureAction(featureOrGeometry, props.data);\n }\n\n createTentativeFeature(props: ModeProps): TentativeFeature {\n return null;\n }\n\n handleClick(event: ClickEvent, props: ModeProps): void {}\n handlePointerMove(event: PointerMoveEvent, props: ModeProps): void {\n const tentativeFeature = this.createTentativeFeature(props);\n if (tentativeFeature) {\n props.onEdit({\n updatedData: props.data,\n editType: 'updateTentativeFeature',\n editContext: {\n feature: tentativeFeature,\n },\n });\n }\n }\n handleStartDragging(event: StartDraggingEvent, props: ModeProps): void {}\n handleStopDragging(event: StopDraggingEvent, props: ModeProps): void {}\n handleDragging(event: DraggingEvent, props: ModeProps): void {}\n\n handleKeyUp(event: KeyboardEvent, props: ModeProps): void {\n if (event.key === 'Escape') {\n this.resetClickSequence();\n props.onEdit({\n // Because the new drawing feature is dropped, so the data will keep as the same.\n updatedData: props.data,\n editType: 'cancelFeature',\n editContext: {},\n });\n }\n }\n}\n\nexport function getIntermediatePosition(position1: Position, position2: Position): Position {\n const intermediatePosition = [\n (position1[0] + position2[0]) / 2.0,\n (position1[1] + position2[1]) / 2.0,\n ];\n // @ts-ignore\n return intermediatePosition;\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar martinez = require(\"martinez-polygon-clipping\");\r\nvar invariant_1 = require(\"@turf/invariant\");\r\nvar helpers_1 = require(\"@turf/helpers\");\r\n/**\r\n * Takes two {@link (Multi)Polygon(s)} and returns a combined polygon. If the input polygons are not contiguous, this function returns a {@link MultiPolygon} feature.\r\n *\r\n * @name union\r\n * @param {Feature} polygon1 input Polygon feature\r\n * @param {Feature} polygon2 Polygon feature to difference from polygon1\r\n * @param {Object} [options={}] Optional Parameters\r\n * @param {Object} [options.properties={}] Translate Properties to output Feature\r\n * @returns {Feature<(Polygon|MultiPolygon)>} a combined {@link Polygon} or {@link MultiPolygon} feature\r\n * @example\r\n * var poly1 = turf.polygon([[\r\n * [-82.574787, 35.594087],\r\n * [-82.574787, 35.615581],\r\n * [-82.545261, 35.615581],\r\n * [-82.545261, 35.594087],\r\n * [-82.574787, 35.594087]\r\n * ]], {\"fill\": \"#0f0\"});\r\n * var poly2 = turf.polygon([[\r\n * [-82.560024, 35.585153],\r\n * [-82.560024, 35.602602],\r\n * [-82.52964, 35.602602],\r\n * [-82.52964, 35.585153],\r\n * [-82.560024, 35.585153]\r\n * ]], {\"fill\": \"#00f\"});\r\n *\r\n * var union = turf.union(poly1, poly2);\r\n *\r\n * //addToMap\r\n * var addToMap = [poly1, poly2, union];\r\n */\r\nfunction union(polygon1, polygon2, options) {\r\n if (options === void 0) { options = {}; }\r\n var coords1 = invariant_1.getGeom(polygon1).coordinates;\r\n var coords2 = invariant_1.getGeom(polygon2).coordinates;\r\n var unioned = martinez.union(coords1, coords2);\r\n if (unioned.length === 0)\r\n return null;\r\n if (unioned.length === 1)\r\n return helpers_1.polygon(unioned[0], options.properties);\r\n else\r\n return helpers_1.multiPolygon(unioned, options.properties);\r\n}\r\nexports.default = union;\r\n","\"use strict\";\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result[\"default\"] = mod;\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar helpers_1 = require(\"@turf/helpers\");\r\nvar invariant_1 = require(\"@turf/invariant\");\r\nvar martinez = __importStar(require(\"martinez-polygon-clipping\"));\r\n/**\r\n * Takes two {@link Polygon|polygon} or {@link MultiPolygon|multi-polygon} geometries and\r\n * finds their polygonal intersection. If they don't intersect, returns null.\r\n *\r\n * @name intersect\r\n * @param {Feature} poly1 the first polygon or multipolygon\r\n * @param {Feature} poly2 the second polygon or multipolygon\r\n * @param {Object} [options={}] Optional Parameters\r\n * @param {Object} [options.properties={}] Translate GeoJSON Properties to Feature\r\n * @returns {Feature|null} returns a feature representing the area they share (either a {@link Polygon} or\r\n * {@link MultiPolygon}). If they do not share any area, returns `null`.\r\n * @example\r\n * var poly1 = turf.polygon([[\r\n * [-122.801742, 45.48565],\r\n * [-122.801742, 45.60491],\r\n * [-122.584762, 45.60491],\r\n * [-122.584762, 45.48565],\r\n * [-122.801742, 45.48565]\r\n * ]]);\r\n *\r\n * var poly2 = turf.polygon([[\r\n * [-122.520217, 45.535693],\r\n * [-122.64038, 45.553967],\r\n * [-122.720031, 45.526554],\r\n * [-122.669906, 45.507309],\r\n * [-122.723464, 45.446643],\r\n * [-122.532577, 45.408574],\r\n * [-122.487258, 45.477466],\r\n * [-122.520217, 45.535693]\r\n * ]]);\r\n *\r\n * var intersection = turf.intersect(poly1, poly2);\r\n *\r\n * //addToMap\r\n * var addToMap = [poly1, poly2, intersection];\r\n */\r\nfunction intersect(poly1, poly2, options) {\r\n if (options === void 0) { options = {}; }\r\n var geom1 = invariant_1.getGeom(poly1);\r\n var geom2 = invariant_1.getGeom(poly2);\r\n if (geom1.type === \"Polygon\" && geom2.type === \"Polygon\") {\r\n var intersection = martinez.intersection(geom1.coordinates, geom2.coordinates);\r\n if (intersection === null || intersection.length === 0) {\r\n return null;\r\n }\r\n if (intersection.length === 1) {\r\n var start = intersection[0][0][0];\r\n var end = intersection[0][0][intersection[0][0].length - 1];\r\n if (start[0] === end[0] && start[1] === end[1]) {\r\n return helpers_1.polygon(intersection[0], options.properties);\r\n }\r\n return null;\r\n }\r\n return helpers_1.multiPolygon(intersection, options.properties);\r\n }\r\n else if (geom1.type === \"MultiPolygon\") {\r\n var resultCoords = [];\r\n // iterate through the polygon and run intersect with each part, adding to the resultCoords.\r\n for (var _i = 0, _a = geom1.coordinates; _i < _a.length; _i++) {\r\n var coords = _a[_i];\r\n var subGeom = invariant_1.getGeom(helpers_1.polygon(coords));\r\n var subIntersection = intersect(subGeom, geom2);\r\n if (subIntersection) {\r\n var subIntGeom = invariant_1.getGeom(subIntersection);\r\n if (subIntGeom.type === \"Polygon\") {\r\n resultCoords.push(subIntGeom.coordinates);\r\n }\r\n else if (subIntGeom.type === \"MultiPolygon\") {\r\n resultCoords = resultCoords.concat(subIntGeom.coordinates);\r\n }\r\n else {\r\n throw new Error(\"intersection is invalid\");\r\n }\r\n }\r\n }\r\n // Make a polygon with the result\r\n if (resultCoords.length === 0) {\r\n return null;\r\n }\r\n if (resultCoords.length === 1) {\r\n return helpers_1.polygon(resultCoords[0], options.properties);\r\n }\r\n else {\r\n return helpers_1.multiPolygon(resultCoords, options.properties);\r\n }\r\n }\r\n else if (geom2.type === \"MultiPolygon\") {\r\n // geom1 is a polygon and geom2 a multiPolygon,\r\n // put the multiPolygon first and fallback to the previous case.\r\n return intersect(geom2, geom1);\r\n }\r\n else {\r\n // handle invalid geometry types\r\n throw new Error(\"poly1 and poly2 must be either polygons or multiPolygons\");\r\n }\r\n}\r\nexports.default = intersect;\r\n","import clone from '@turf/clone';\nimport booleanClockwise from '@turf/boolean-clockwise';\nimport { featureEach, geomEach } from '@turf/meta';\nimport { getCoords } from '@turf/invariant';\nimport { featureCollection, isObject } from '@turf/helpers';\n\n/**\n * Rewind {@link LineString|(Multi)LineString} or {@link Polygon|(Multi)Polygon} outer ring counterclockwise and inner rings clockwise (Uses {@link http://en.wikipedia.org/wiki/Shoelace_formula|Shoelace Formula}).\n *\n * @name rewind\n * @param {GeoJSON} geojson input GeoJSON Polygon\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.reverse=false] enable reverse winding\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} rewind Polygon\n * @example\n * var polygon = turf.polygon([[[121, -29], [138, -29], [138, -18], [121, -18], [121, -29]]]);\n *\n * var rewind = turf.rewind(polygon);\n *\n * //addToMap\n * var addToMap = [rewind];\n */\nfunction rewind(geojson, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var reverse = options.reverse || false;\n var mutate = options.mutate || false;\n\n // validation\n if (!geojson) throw new Error(' is required');\n if (typeof reverse !== 'boolean') throw new Error(' must be a boolean');\n if (typeof mutate !== 'boolean') throw new Error(' must be a boolean');\n\n // prevent input mutation\n if (mutate === false) geojson = clone(geojson);\n\n // Support Feature Collection or Geometry Collection\n var results = [];\n switch (geojson.type) {\n case 'GeometryCollection':\n geomEach(geojson, function (geometry) {\n rewindFeature(geometry, reverse);\n });\n return geojson;\n case 'FeatureCollection':\n featureEach(geojson, function (feature) {\n featureEach(rewindFeature(feature, reverse), function (result) {\n results.push(result);\n });\n });\n return featureCollection(results);\n }\n // Support Feature or Geometry Objects\n return rewindFeature(geojson, reverse);\n}\n\n/**\n * Rewind\n *\n * @private\n * @param {Geometry|Feature} geojson Geometry or Feature\n * @param {Boolean} [reverse=false] enable reverse winding\n * @returns {Geometry|Feature} rewind Geometry or Feature\n */\nfunction rewindFeature(geojson, reverse) {\n var type = (geojson.type === 'Feature') ? geojson.geometry.type : geojson.type;\n\n // Support all GeoJSON Geometry Objects\n switch (type) {\n case 'GeometryCollection':\n geomEach(geojson, function (geometry) {\n rewindFeature(geometry, reverse);\n });\n return geojson;\n case 'LineString':\n rewindLineString(getCoords(geojson), reverse);\n return geojson;\n case 'Polygon':\n rewindPolygon(getCoords(geojson), reverse);\n return geojson;\n case 'MultiLineString':\n getCoords(geojson).forEach(function (lineCoords) {\n rewindLineString(lineCoords, reverse);\n });\n return geojson;\n case 'MultiPolygon':\n getCoords(geojson).forEach(function (lineCoords) {\n rewindPolygon(lineCoords, reverse);\n });\n return geojson;\n case 'Point':\n case 'MultiPoint':\n return geojson;\n }\n}\n\n/**\n * Rewind LineString - outer ring clockwise\n *\n * @private\n * @param {Array>} coords GeoJSON LineString geometry coordinates\n * @param {Boolean} [reverse=false] enable reverse winding\n * @returns {void} mutates coordinates\n */\nfunction rewindLineString(coords, reverse) {\n if (booleanClockwise(coords) === reverse) coords.reverse();\n}\n\n/**\n * Rewind Polygon - outer ring counterclockwise and inner rings clockwise.\n *\n * @private\n * @param {Array>>} coords GeoJSON Polygon geometry coordinates\n * @param {Boolean} [reverse=false] enable reverse winding\n * @returns {void} mutates coordinates\n */\nfunction rewindPolygon(coords, reverse) {\n // outer ring\n if (booleanClockwise(coords[0]) !== reverse) {\n coords[0].reverse();\n }\n // inner rings\n for (var i = 1; i < coords.length; i++) {\n if (booleanClockwise(coords[i]) === reverse) {\n coords[i].reverse();\n }\n }\n}\n\nexport default rewind;\n","import { getCoords } from '@turf/invariant';\n\n/**\n * Takes a ring and return true or false whether or not the ring is clockwise or counter-clockwise.\n *\n * @name booleanClockwise\n * @param {Feature} line to be evaluated\n * @returns {boolean} true/false\n * @example\n * var clockwiseRing = turf.lineString([[0,0],[1,1],[1,0],[0,0]]);\n * var counterClockwiseRing = turf.lineString([[0,0],[1,0],[1,1],[0,0]]);\n *\n * turf.booleanClockwise(clockwiseRing)\n * //=true\n * turf.booleanClockwise(counterClockwiseRing)\n * //=false\n */\nfunction booleanClockwise(line) {\n // validation\n if (!line) throw new Error('line is required');\n var type = (line.geometry) ? line.geometry.type : line.type;\n if (!Array.isArray(line) && type !== 'LineString') throw new Error('geometry must be a LineString');\n\n var ring = getCoords(line);\n var sum = 0;\n var i = 1;\n var prev, cur;\n while (i < ring.length) {\n prev = cur || ring[0];\n cur = ring[i];\n sum += ((cur[0] - prev[0]) * (cur[1] + prev[1]));\n i++;\n }\n return sum > 0;\n}\n\nexport default booleanClockwise;\n","import { isNumber } from '@turf/helpers';\n\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n if (!coord) throw new Error('coord is required');\n if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;\n if (coord.type === 'Point') return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n\n throw new Error('coord must be GeoJSON Point or an Array of numbers');\n}\n\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n if (!coords) throw new Error('coords is required');\n\n // Feature\n if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;\n\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n\n throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');\n}\n\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error('coordinates must only contain numbers');\n}\n\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n if (!type || !name) throw new Error('type and name required');\n\n if (!value || value.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n if (!feature) throw new Error('No feature passed');\n if (!name) throw new Error('.featureOf() requires a name');\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) throw new Error('No featureCollection passed');\n if (!name) throw new Error('.collectionOf() requires a name');\n if (!featureCollection || featureCollection.type !== 'FeatureCollection') {\n throw new Error('Invalid input to ' + name + ', FeatureCollection required');\n }\n for (var i = 0; i < featureCollection.features.length; i++) {\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n }\n}\n\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n if (!geojson) throw new Error('geojson is required');\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error('geojson must be a valid Feature or Geometry Object');\n}\n\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */\nfunction getGeomType() {\n throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');\n}\n\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, name) {\n if (!geojson) throw new Error((name || 'geojson') + ' is required');\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || 'geojson') + ' is invalid');\n}\n\nexport { getCoord, getCoords, containsNumber, geojsonType, featureOf, collectionOf, getGeom, getGeomType, getType };\n","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = {type: 'Feature'};\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point': geom = point(coordinates).geometry; break;\n case 'LineString': geom = lineString(coordinates).geometry; break;\n case 'Polygon': geom = polygon(coordinates).geometry; break;\n case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n default: throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = {type: 'FeatureCollection'};\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n","import { feature, isObject, lineString, point } from '@turf/helpers';\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords,\n geometryMaybeCollection,\n wrapShrink = 0,\n coordIndex = 0,\n isGeometryCollection,\n type = geojson.type,\n isFeatureCollection = type === 'FeatureCollection',\n isFeature = type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry :\n (isFeature ? geojson.geometry : geojson));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n\n wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0;\n\n switch (geomType) {\n case null:\n break;\n case 'Point':\n if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case 'LineString':\n case 'MultiPoint':\n for (j = 0; j < coords.length; j++) {\n if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n if (geomType === 'MultiPoint') multiFeatureIndex++;\n }\n if (geomType === 'LineString') multiFeatureIndex++;\n break;\n case 'Polygon':\n case 'MultiLineString':\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n if (geomType === 'MultiLineString') multiFeatureIndex++;\n if (geomType === 'Polygon') geometryIndex++;\n }\n if (geomType === 'Polygon') multiFeatureIndex++;\n break;\n case 'MultiPolygon':\n for (j = 0; j < coords.length; j++) {\n if (geomType === 'MultiPolygon') geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case 'GeometryCollection':\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n break;\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n }, excludeWrapCoord);\n return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case 'FeatureCollection':\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case 'Feature':\n callback(geojson.properties, 0);\n break;\n }\n}\n\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function (currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n else previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n if (geojson.type === 'Feature') {\n callback(geojson, 0);\n } else if (geojson.type === 'FeatureCollection') {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function (currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function (coord) {\n coords.push(coord);\n });\n return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG,\n geometryMaybeCollection,\n isGeometryCollection,\n featureProperties,\n featureBBox,\n featureId,\n featureIndex = 0,\n isFeatureCollection = geojson.type === 'FeatureCollection',\n isFeature = geojson.type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (i = 0; i < stop; i++) {\n\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry :\n (isFeature ? geojson.geometry : geojson));\n featureProperties = (isFeatureCollection ? geojson.features[i].properties :\n (isFeature ? geojson.properties : {}));\n featureBBox = (isFeatureCollection ? geojson.features[i].bbox :\n (isFeature ? geojson.bbox : undefined));\n featureId = (isFeatureCollection ? geojson.features[i].id :\n (isFeature ? geojson.id : undefined));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n\n // Handle null Geometry\n if (geometry === null) {\n if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n continue;\n }\n switch (geometry.type) {\n case 'Point':\n case 'LineString':\n case 'MultiPoint':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon': {\n if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n break;\n }\n case 'GeometryCollection': {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n }\n break;\n }\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n });\n return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = (geometry === null) ? null : geometry.type;\n switch (type) {\n case null:\n case 'Point':\n case 'LineString':\n case 'Polygon':\n if (callback(feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false;\n return;\n }\n\n var geomType;\n\n // Callback for multi-geometry\n switch (type) {\n case 'MultiPoint':\n geomType = 'Point';\n break;\n case 'MultiLineString':\n geomType = 'LineString';\n break;\n case 'MultiPolygon':\n geomType = 'Polygon';\n break;\n }\n\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n }\n });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n\n // Exclude null Geometries\n if (!feature$$1.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature$$1.geometry.type;\n if (type === 'Point' || type === 'MultiPoint') return;\n\n // Generate 2-vertex line segments\n var previousCoords;\n if (coordEach(feature$$1, function (currentCoord, coordIndex, featureIndexCoord, mutliPartIndexCoord, geometryIndex) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (previousCoords === undefined) {\n previousCoords = currentCoord;\n return;\n }\n var currentSegment = lineString([previousCoords, currentCoord], feature$$1.properties);\n if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }) === false) return false;\n });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentInex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === undefined) previousValue = currentSegment;\n else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n started = true;\n });\n return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n // validation\n if (!geojson) throw new Error('geojson is required');\n\n flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {\n if (feature$$1.geometry === null) return;\n var type = feature$$1.geometry.type;\n var coords = feature$$1.geometry.coordinates;\n switch (type) {\n case 'LineString':\n if (callback(feature$$1, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n break;\n case 'Polygon':\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(lineString(coords[geometryIndex], feature$$1.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n }\n break;\n }\n });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n });\n return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature>\n */\nfunction findSegment(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature>\n */\nfunction findPoint(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n return point(coords, properties, options);\n case 'MultiPoint':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case 'LineString':\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\nexport { coordEach, coordReduce, propEach, propReduce, featureEach, featureReduce, coordAll, geomEach, geomReduce, flattenEach, flattenReduce, segmentEach, segmentReduce, lineEach, lineReduce, findSegment, findPoint };\n","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = {type: 'Feature'};\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point': geom = point(coordinates).geometry; break;\n case 'LineString': geom = lineString(coordinates).geometry; break;\n case 'Polygon': geom = polygon(coordinates).geometry; break;\n case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n default: throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = {type: 'FeatureCollection'};\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n","import { isNumber } from '@turf/helpers';\n\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n if (!coord) throw new Error('coord is required');\n if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;\n if (coord.type === 'Point') return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n\n throw new Error('coord must be GeoJSON Point or an Array of numbers');\n}\n\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n if (!coords) throw new Error('coords is required');\n\n // Feature\n if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;\n\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n\n throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');\n}\n\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error('coordinates must only contain numbers');\n}\n\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n if (!type || !name) throw new Error('type and name required');\n\n if (!value || value.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n if (!feature) throw new Error('No feature passed');\n if (!name) throw new Error('.featureOf() requires a name');\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) throw new Error('No featureCollection passed');\n if (!name) throw new Error('.collectionOf() requires a name');\n if (!featureCollection || featureCollection.type !== 'FeatureCollection') {\n throw new Error('Invalid input to ' + name + ', FeatureCollection required');\n }\n for (var i = 0; i < featureCollection.features.length; i++) {\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n }\n}\n\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n if (!geojson) throw new Error('geojson is required');\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error('geojson must be a valid Feature or Geometry Object');\n}\n\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */\nfunction getGeomType() {\n throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');\n}\n\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, name) {\n if (!geojson) throw new Error((name || 'geojson') + ' is required');\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || 'geojson') + ' is invalid');\n}\n\nexport { getCoord, getCoords, containsNumber, geojsonType, featureOf, collectionOf, getGeom, getGeomType, getType };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toDeckColor = toDeckColor;\nexports.recursivelyTraverseNestedArrays = recursivelyTraverseNestedArrays;\nexports.generatePointsParallelToLinePoints = generatePointsParallelToLinePoints;\nexports.distance2d = distance2d;\nexports.mix = mix;\nexports.nearestPointOnProjectedLine = nearestPointOnProjectedLine;\nexports.nearestPointOnLine = nearestPointOnLine;\nexports.getPickedEditHandle = getPickedEditHandle;\nexports.getPickedSnapSourceEditHandle = getPickedSnapSourceEditHandle;\nexports.getNonGuidePicks = getNonGuidePicks;\nexports.getPickedExistingEditHandle = getPickedExistingEditHandle;\nexports.getPickedIntermediateEditHandle = getPickedIntermediateEditHandle;\nexports.getPickedEditHandles = getPickedEditHandles;\nexports.getEditHandlesForGeometry = getEditHandlesForGeometry;\nexports.updateRectanglePosition = updateRectanglePosition;\nexports.mapCoords = mapCoords;\n\nvar _destination = _interopRequireDefault(require(\"@turf/destination\"));\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _pointToLineDistance = _interopRequireDefault(require(\"@turf/point-to-line-distance\"));\n\nvar _meta = require(\"@turf/meta\");\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _invariant = require(\"@turf/invariant\");\n\nvar _viewportMercatorProject = _interopRequireDefault(require(\"viewport-mercator-project\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction toDeckColor(color) {\n var defaultColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [255, 0, 0, 255];\n\n if (!Array.isArray(color)) {\n return defaultColor;\n }\n\n return [color[0] * 255, color[1] * 255, color[2] * 255, color[3] * 255];\n} //\n// a GeoJSON helper function that calls the provided function with\n// an argument that is the most deeply-nested array having elements\n// that are arrays of primitives as an argument, e.g.\n//\n// {\n// \"type\": \"MultiPolygon\",\n// \"coordinates\": [\n// [\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n// ],\n// [\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n// ]\n// ]\n// }\n//\n// the function would be called on:\n//\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n//\n// and\n//\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n//\n\n\nfunction recursivelyTraverseNestedArrays(array, prefix, fn) {\n if (!Array.isArray(array[0])) {\n return true;\n }\n\n for (var i = 0; i < array.length; i++) {\n if (recursivelyTraverseNestedArrays(array[i], [].concat(_toConsumableArray(prefix), [i]), fn)) {\n fn(array, prefix);\n break;\n }\n }\n\n return false;\n}\n\nfunction generatePointsParallelToLinePoints(p1, p2, mapCoords) {\n var lineString = {\n type: 'LineString',\n coordinates: [p1, p2]\n };\n var pt = (0, _helpers.point)(mapCoords);\n var ddistance = (0, _pointToLineDistance[\"default\"])(pt, lineString);\n var lineBearing = (0, _bearing[\"default\"])(p1, p2); // Check if current point is to the left or right of line\n // Line from A=(x1,y1) to B=(x2,y2) a point P=(x,y)\n // then (x−x1)(y2−y1)−(y−y1)(x2−x1)\n\n var isPointToLeftOfLine = (mapCoords[0] - p1[0]) * (p2[1] - p1[1]) - (mapCoords[1] - p1[1]) * (p2[0] - p1[0]); // Bearing to draw perpendicular to the line string\n\n var orthogonalBearing = isPointToLeftOfLine < 0 ? lineBearing - 90 : lineBearing - 270; // Get coordinates for the point p3 and p4 which are perpendicular to the lineString\n // Add the distance as the current position moves away from the lineString\n\n var p3 = (0, _destination[\"default\"])(p2, ddistance, orthogonalBearing);\n var p4 = (0, _destination[\"default\"])(p1, ddistance, orthogonalBearing);\n return [p3.geometry.coordinates, p4.geometry.coordinates];\n}\n\nfunction distance2d(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nfunction mix(a, b, ratio) {\n return b * ratio + a * (1 - ratio);\n}\n\nfunction nearestPointOnProjectedLine(line, inPoint, viewport) {\n var wmViewport = new _viewportMercatorProject[\"default\"](viewport); // Project the line to viewport, then find the nearest point\n\n var coordinates = line.geometry.coordinates;\n var projectedCoords = coordinates.map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 3),\n x = _ref2[0],\n y = _ref2[1],\n _ref2$ = _ref2[2],\n z = _ref2$ === void 0 ? 0 : _ref2$;\n\n return wmViewport.project([x, y, z]);\n }); // @ts-ignore\n\n var _wmViewport$project = wmViewport.project(inPoint.geometry.coordinates),\n _wmViewport$project2 = _slicedToArray(_wmViewport$project, 2),\n x = _wmViewport$project2[0],\n y = _wmViewport$project2[1]; // console.log('projectedCoords', JSON.stringify(projectedCoords));\n\n\n var minDistance = Infinity;\n var minPointInfo = {};\n projectedCoords.forEach(function (_ref3, index) {\n var _ref4 = _slicedToArray(_ref3, 2),\n x2 = _ref4[0],\n y2 = _ref4[1];\n\n if (index === 0) {\n return;\n }\n\n var _projectedCoords = _slicedToArray(projectedCoords[index - 1], 2),\n x1 = _projectedCoords[0],\n y1 = _projectedCoords[1]; // line from projectedCoords[index - 1] to projectedCoords[index]\n // convert to Ax + By + C = 0\n\n\n var A = y1 - y2;\n var B = x2 - x1;\n var C = x1 * y2 - x2 * y1; // https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line\n\n var div = A * A + B * B;\n var distance = Math.abs(A * x + B * y + C) / Math.sqrt(div); // TODO: Check if inside bounds\n\n if (distance < minDistance) {\n minDistance = distance;\n minPointInfo = {\n index: index,\n x0: (B * (B * x - A * y) - A * C) / div,\n y0: (A * (-B * x + A * y) - B * C) / div\n };\n }\n }); // @ts-ignore\n\n var _minPointInfo = minPointInfo,\n index = _minPointInfo.index,\n x0 = _minPointInfo.x0,\n y0 = _minPointInfo.y0;\n\n var _projectedCoords2 = _slicedToArray(projectedCoords[index - 1], 3),\n x1 = _projectedCoords2[0],\n y1 = _projectedCoords2[1],\n _projectedCoords2$ = _projectedCoords2[2],\n z1 = _projectedCoords2$ === void 0 ? 0 : _projectedCoords2$;\n\n var _projectedCoords$inde = _slicedToArray(projectedCoords[index], 3),\n x2 = _projectedCoords$inde[0],\n y2 = _projectedCoords$inde[1],\n _projectedCoords$inde2 = _projectedCoords$inde[2],\n z2 = _projectedCoords$inde2 === void 0 ? 0 : _projectedCoords$inde2; // calculate what ratio of the line we are on to find the proper z\n\n\n var lineLength = distance2d(x1, y1, x2, y2);\n var startToPointLength = distance2d(x1, y1, x0, y0);\n var ratio = startToPointLength / lineLength;\n var z0 = mix(z1, z2, ratio);\n return {\n type: 'Feature',\n geometry: {\n type: 'Point',\n coordinates: wmViewport.unproject([x0, y0, z0])\n },\n properties: {\n // TODO: calculate the distance in proper units\n dist: minDistance,\n index: index - 1\n }\n };\n}\n\nfunction nearestPointOnLine(lines, inPoint, viewport) {\n var _lines$geometry, _lines$geometry2;\n\n var mercator;\n\n if (viewport) {\n mercator = new _viewportMercatorProject[\"default\"](viewport);\n }\n\n var closestPoint = (0, _helpers.point)([Infinity, Infinity], {\n dist: Infinity\n });\n\n if (!((_lines$geometry = lines.geometry) === null || _lines$geometry === void 0 ? void 0 : _lines$geometry.coordinates.length) || ((_lines$geometry2 = lines.geometry) === null || _lines$geometry2 === void 0 ? void 0 : _lines$geometry2.coordinates.length) < 2) {\n return closestPoint;\n } // @ts-ignore\n\n\n (0, _meta.flattenEach)(lines, function (line) {\n var coords = (0, _invariant.getCoords)(line); // @ts-ignore\n\n var pointCoords = (0, _invariant.getCoords)(inPoint);\n var minDist;\n var to;\n var from;\n var x;\n var y;\n var segmentIdx;\n var dist;\n\n if (coords.length > 1 && pointCoords.length) {\n var lineCoordinates;\n var pointCoordinate; // If viewport is given, then translate these coordinates to pixels to increase precision\n\n if (mercator) {\n lineCoordinates = coords.map(function (lineCoordinate) {\n return mercator.project(lineCoordinate);\n });\n pointCoordinate = mercator.project(pointCoords);\n } else {\n lineCoordinates = coords;\n pointCoordinate = pointCoords;\n }\n\n for (var n = 1; n < lineCoordinates.length; n++) {\n if (lineCoordinates[n][0] !== lineCoordinates[n - 1][0]) {\n var slope = (lineCoordinates[n][1] - lineCoordinates[n - 1][1]) / (lineCoordinates[n][0] - lineCoordinates[n - 1][0]);\n var inverseSlope = lineCoordinates[n][1] - slope * lineCoordinates[n][0];\n dist = Math.abs(slope * pointCoordinate[0] + inverseSlope - pointCoordinate[1]) / Math.sqrt(slope * slope + 1);\n } else dist = Math.abs(pointCoordinate[0] - lineCoordinates[n][0]); // length^2 of line segment\n\n\n var rl2 = Math.pow(lineCoordinates[n][1] - lineCoordinates[n - 1][1], 2) + Math.pow(lineCoordinates[n][0] - lineCoordinates[n - 1][0], 2); // distance^2 of pt to end line segment\n\n var ln2 = Math.pow(lineCoordinates[n][1] - pointCoordinate[1], 2) + Math.pow(lineCoordinates[n][0] - pointCoordinate[0], 2); // distance^2 of pt to begin line segment\n\n var lnm12 = Math.pow(lineCoordinates[n - 1][1] - pointCoordinate[1], 2) + Math.pow(lineCoordinates[n - 1][0] - pointCoordinate[0], 2); // minimum distance^2 of pt to infinite line\n\n var dist2 = Math.pow(dist, 2); // calculated length^2 of line segment\n\n var calcrl2 = ln2 - dist2 + lnm12 - dist2; // redefine minimum distance to line segment (not infinite line) if necessary\n\n if (calcrl2 > rl2) {\n dist = Math.sqrt(Math.min(ln2, lnm12));\n }\n\n if (minDist === null || minDist === undefined || minDist > dist) {\n // eslint-disable-next-line max-depth\n if (calcrl2 > rl2) {\n // eslint-disable-next-line max-depth\n if (lnm12 < ln2) {\n to = 0; // nearer to previous point\n\n from = 1;\n } else {\n from = 0; // nearer to current point\n\n to = 1;\n }\n } else {\n // perpendicular from point intersects line segment\n to = Math.sqrt(lnm12 - dist2) / Math.sqrt(rl2);\n from = Math.sqrt(ln2 - dist2) / Math.sqrt(rl2);\n }\n\n minDist = dist;\n segmentIdx = n;\n }\n }\n\n var dx = lineCoordinates[segmentIdx - 1][0] - lineCoordinates[segmentIdx][0];\n var dy = lineCoordinates[segmentIdx - 1][1] - lineCoordinates[segmentIdx][1];\n x = lineCoordinates[segmentIdx - 1][0] - dx * to;\n y = lineCoordinates[segmentIdx - 1][1] - dy * to;\n } // index needs to be -1 because we have to account for the shift from initial backscan\n\n\n var snapPoint = {\n x: x,\n y: y,\n idx: segmentIdx - 1,\n to: to,\n from: from\n };\n\n if (mercator) {\n var pixelToLatLong = mercator.unproject([snapPoint.x, snapPoint.y]);\n snapPoint = {\n x: pixelToLatLong[0],\n y: pixelToLatLong[1],\n idx: segmentIdx - 1,\n to: to,\n from: from\n };\n }\n\n closestPoint = (0, _helpers.point)([snapPoint.x, snapPoint.y], {\n dist: Math.abs(snapPoint.from - snapPoint.to),\n index: snapPoint.idx\n });\n });\n return closestPoint;\n}\n\nfunction getPickedEditHandle(picks) {\n var handles = getPickedEditHandles(picks);\n return handles.length ? handles[0] : null;\n}\n\nfunction getPickedSnapSourceEditHandle(picks) {\n var handles = getPickedEditHandles(picks);\n return handles.find(function (handle) {\n return handle.properties.editHandleType === 'snap-source';\n });\n}\n\nfunction getNonGuidePicks(picks) {\n return picks && picks.filter(function (pick) {\n return !pick.isGuide;\n });\n}\n\nfunction getPickedExistingEditHandle(picks) {\n var handles = getPickedEditHandles(picks);\n return handles.find(function (_ref5) {\n var properties = _ref5.properties;\n return properties.featureIndex >= 0 && properties.editHandleType === 'existing';\n });\n}\n\nfunction getPickedIntermediateEditHandle(picks) {\n var handles = getPickedEditHandles(picks);\n return handles.find(function (_ref6) {\n var properties = _ref6.properties;\n return properties.featureIndex >= 0 && properties.editHandleType === 'intermediate';\n });\n}\n\nfunction getPickedEditHandles(picks) {\n var handles = picks && picks.filter(function (pick) {\n return pick.isGuide && pick.object.properties.guideType === 'editHandle';\n }).map(function (pick) {\n return pick.object;\n }) || [];\n return handles;\n}\n\nfunction getEditHandlesForGeometry(geometry, featureIndex) {\n var editHandleType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'existing';\n var handles = [];\n\n switch (geometry.type) {\n case 'Point':\n // positions are not nested\n handles = [{\n type: 'Feature',\n properties: {\n guideType: 'editHandle',\n editHandleType: editHandleType,\n positionIndexes: [],\n featureIndex: featureIndex\n },\n geometry: {\n type: 'Point',\n coordinates: geometry.coordinates\n }\n }];\n break;\n\n case 'MultiPoint':\n case 'LineString':\n // positions are nested 1 level\n handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates, [], featureIndex, editHandleType));\n break;\n\n case 'Polygon':\n case 'MultiLineString':\n // positions are nested 2 levels\n for (var a = 0; a < geometry.coordinates.length; a++) {\n handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates[a], [a], featureIndex, editHandleType));\n\n if (geometry.type === 'Polygon') {\n // Don't repeat the first/last handle for Polygons\n handles = handles.slice(0, -1);\n }\n }\n\n break;\n\n case 'MultiPolygon':\n // positions are nested 3 levels\n for (var _a = 0; _a < geometry.coordinates.length; _a++) {\n for (var b = 0; b < geometry.coordinates[_a].length; b++) {\n handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates[_a][b], [_a, b], featureIndex, editHandleType)); // Don't repeat the first/last handle for Polygons\n\n handles = handles.slice(0, -1);\n }\n }\n\n break;\n\n default:\n // @ts-ignore\n throw Error(\"Unhandled geometry type: \".concat(geometry.type));\n }\n\n return handles;\n}\n\nfunction getEditHandlesForCoordinates(coordinates, positionIndexPrefix, featureIndex) {\n var editHandleType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'existing';\n var editHandles = [];\n\n for (var i = 0; i < coordinates.length; i++) {\n var position = coordinates[i];\n editHandles.push({\n type: 'Feature',\n properties: {\n guideType: 'editHandle',\n positionIndexes: [].concat(_toConsumableArray(positionIndexPrefix), [i]),\n featureIndex: featureIndex,\n editHandleType: editHandleType\n },\n geometry: {\n type: 'Point',\n coordinates: position\n }\n });\n }\n\n return editHandles;\n}\n/**\n * Calculates coordinates for a feature preserving rectangular shape.\n * @param feature Feature before modification.\n * @param editHandleIndex Index of the point to modify.\n * @param mapCoords New position for the point.\n * @returns Updated coordinates.\n */\n\n\nfunction updateRectanglePosition(feature, editHandleIndex, mapCoords) {\n var coordinates = feature.geometry.coordinates;\n\n if (!coordinates) {\n return null;\n }\n\n var points = coordinates[0].slice(0, 4);\n points[editHandleIndex % 4] = mapCoords;\n var p0 = points[(editHandleIndex + 2) % 4];\n var p2 = points[editHandleIndex % 4];\n points[(editHandleIndex + 1) % 4] = [p2[0], p0[1]];\n points[(editHandleIndex + 3) % 4] = [p0[0], p2[1]];\n return [[].concat(_toConsumableArray(points), [points[0]])];\n}\n/** Creates a copy of feature's coordinates.\n * Each position in coordinates is transformed by calling the provided function.\n * @param coords Coordinates of a feature.\n * @param callback A function to transform each coordinate.\n * @retuns Transformed coordinates.\n */\n\n\nfunction mapCoords(coords, callback) {\n if (typeof coords[0] === 'number') {\n if (!isNaN(coords[0]) && isFinite(coords[0])) {\n return callback(coords);\n }\n\n return coords;\n }\n\n return coords.map(function (coord) {\n return mapCoords(coord, callback);\n }).filter(Boolean);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJuYW1lcyI6WyJ0b0RlY2tDb2xvciIsImNvbG9yIiwiZGVmYXVsdENvbG9yIiwiQXJyYXkiLCJpc0FycmF5IiwicmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyIsImFycmF5IiwicHJlZml4IiwiZm4iLCJpIiwibGVuZ3RoIiwiZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyIsInAxIiwicDIiLCJtYXBDb29yZHMiLCJsaW5lU3RyaW5nIiwidHlwZSIsImNvb3JkaW5hdGVzIiwicHQiLCJkZGlzdGFuY2UiLCJsaW5lQmVhcmluZyIsImlzUG9pbnRUb0xlZnRPZkxpbmUiLCJvcnRob2dvbmFsQmVhcmluZyIsInAzIiwicDQiLCJnZW9tZXRyeSIsImRpc3RhbmNlMmQiLCJ4MSIsInkxIiwieDIiLCJ5MiIsImR4IiwiZHkiLCJNYXRoIiwic3FydCIsIm1peCIsImEiLCJiIiwicmF0aW8iLCJuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUiLCJsaW5lIiwiaW5Qb2ludCIsInZpZXdwb3J0Iiwid21WaWV3cG9ydCIsIldlYk1lcmNhdG9yVmlld3BvcnQiLCJwcm9qZWN0ZWRDb29yZHMiLCJtYXAiLCJ4IiwieSIsInoiLCJwcm9qZWN0IiwibWluRGlzdGFuY2UiLCJJbmZpbml0eSIsIm1pblBvaW50SW5mbyIsImZvckVhY2giLCJpbmRleCIsIkEiLCJCIiwiQyIsImRpdiIsImRpc3RhbmNlIiwiYWJzIiwieDAiLCJ5MCIsInoxIiwiejIiLCJsaW5lTGVuZ3RoIiwic3RhcnRUb1BvaW50TGVuZ3RoIiwiejAiLCJ1bnByb2plY3QiLCJwcm9wZXJ0aWVzIiwiZGlzdCIsIm5lYXJlc3RQb2ludE9uTGluZSIsImxpbmVzIiwibWVyY2F0b3IiLCJjbG9zZXN0UG9pbnQiLCJjb29yZHMiLCJwb2ludENvb3JkcyIsIm1pbkRpc3QiLCJ0byIsImZyb20iLCJzZWdtZW50SWR4IiwibGluZUNvb3JkaW5hdGVzIiwicG9pbnRDb29yZGluYXRlIiwibGluZUNvb3JkaW5hdGUiLCJuIiwic2xvcGUiLCJpbnZlcnNlU2xvcGUiLCJybDIiLCJwb3ciLCJsbjIiLCJsbm0xMiIsImRpc3QyIiwiY2FsY3JsMiIsIm1pbiIsInVuZGVmaW5lZCIsInNuYXBQb2ludCIsImlkeCIsInBpeGVsVG9MYXRMb25nIiwiZ2V0UGlja2VkRWRpdEhhbmRsZSIsInBpY2tzIiwiaGFuZGxlcyIsImdldFBpY2tlZEVkaXRIYW5kbGVzIiwiZ2V0UGlja2VkU25hcFNvdXJjZUVkaXRIYW5kbGUiLCJmaW5kIiwiaGFuZGxlIiwiZWRpdEhhbmRsZVR5cGUiLCJnZXROb25HdWlkZVBpY2tzIiwiZmlsdGVyIiwicGljayIsImlzR3VpZGUiLCJnZXRQaWNrZWRFeGlzdGluZ0VkaXRIYW5kbGUiLCJmZWF0dXJlSW5kZXgiLCJnZXRQaWNrZWRJbnRlcm1lZGlhdGVFZGl0SGFuZGxlIiwib2JqZWN0IiwiZ3VpZGVUeXBlIiwiZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSIsInBvc2l0aW9uSW5kZXhlcyIsImNvbmNhdCIsImdldEVkaXRIYW5kbGVzRm9yQ29vcmRpbmF0ZXMiLCJzbGljZSIsIkVycm9yIiwicG9zaXRpb25JbmRleFByZWZpeCIsImVkaXRIYW5kbGVzIiwicG9zaXRpb24iLCJwdXNoIiwidXBkYXRlUmVjdGFuZ2xlUG9zaXRpb24iLCJmZWF0dXJlIiwiZWRpdEhhbmRsZUluZGV4IiwicG9pbnRzIiwicDAiLCJjYWxsYmFjayIsImlzTmFOIiwiaXNGaW5pdGUiLCJjb29yZCIsIkJvb2xlYW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZU8sU0FBU0EsV0FBVCxDQUNMQyxLQURLLEVBRzZCO0FBQUEsTUFEbENDLFlBQ2tDLHVFQURlLENBQUMsR0FBRCxFQUFNLENBQU4sRUFBUyxDQUFULEVBQVksR0FBWixDQUNm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LEVBQUFBLE1BQU0sQ0FBQyxDQUFDRCxlQUFlLEdBQUcsQ0FBbkIsSUFBd0IsQ0FBekIsQ0FBTixHQUFvQyxDQUFDbkgsRUFBRSxDQUFDLENBQUQsQ0FBSCxFQUFRcUgsRUFBRSxDQUFDLENBQUQsQ0FBVixDQUFwQztBQUNBRCxFQUFBQSxNQUFNLENBQUMsQ0FBQ0QsZUFBZSxHQUFHLENBQW5CLElBQXdCLENBQXpCLENBQU4sR0FBb0MsQ0FBQ0UsRUFBRSxDQUFDLENBQUQsQ0FBSCxFQUFRckgsRUFBRSxDQUFDLENBQUQsQ0FBVixDQUFwQztBQUVBLFNBQU8sOEJBQUtvSCxNQUFMLElBQWFBLE1BQU0sQ0FBQyxDQUFELENBQW5CLEdBQVA7QUFDRDtBQUVEOzs7Ozs7OztBQU1PLFNBQVNuSCxTQUFULENBQ0w4RCxNQURLLEVBRUx1RCxRQUZLLEVBR1c7QUFDaEIsTUFBSSxPQUFPdkQsTUFBTSxDQUFDLENBQUQsQ0FBYixLQUFxQixRQUF6QixFQUFtQztBQUNqQyxRQUFJLENBQUN3RCxLQUFLLENBQUN4RCxNQUFNLENBQUMsQ0FBRCxDQUFQLENBQU4sSUFBcUJ5RCxRQUFRLENBQUN6RCxNQUFNLENBQUMsQ0FBRCxDQUFQLENBQWpDLEVBQThDO0FBQzVDLGFBQU91RCxRQUFRLENBQUN2RCxNQUFELENBQWY7QUFDRDs7QUFDRCxXQUFPQSxNQUFQO0FBQ0Q7O0FBRUQsU0FBUUEsTUFBRCxDQUNKOUIsR0FESSxDQUNBLFVBQUN3RixLQUFELEVBQVc7QUFDZCxXQUFPeEgsU0FBUyxDQUFDd0gsS0FBRCxFQUFRSCxRQUFSLENBQWhCO0FBQ0QsR0FISSxFQUlKdkIsTUFKSSxDQUlHMkIsT0FKSCxDQUFQO0FBS0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVzdGluYXRpb24gZnJvbSAnQHR1cmYvZGVzdGluYXRpb24nO1xuaW1wb3J0IGJlYXJpbmcgZnJvbSAnQHR1cmYvYmVhcmluZyc7XG5pbXBvcnQgcG9pbnRUb0xpbmVEaXN0YW5jZSBmcm9tICdAdHVyZi9wb2ludC10by1saW5lLWRpc3RhbmNlJztcbmltcG9ydCB7IGZsYXR0ZW5FYWNoIH0gZnJvbSAnQHR1cmYvbWV0YSc7XG5pbXBvcnQgeyBwb2ludCwgTXVsdGlMaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBnZXRDb29yZHMgfSBmcm9tICdAdHVyZi9pbnZhcmlhbnQnO1xuaW1wb3J0IFdlYk1lcmNhdG9yVmlld3BvcnQgZnJvbSAndmlld3BvcnQtbWVyY2F0b3ItcHJvamVjdCc7XG5pbXBvcnQgeyBWaWV3cG9ydCwgUGljaywgRWRpdEhhbmRsZUZlYXR1cmUsIEVkaXRIYW5kbGVUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBHZW9tZXRyeSxcbiAgUG9zaXRpb24sXG4gIFBvaW50LFxuICBMaW5lU3RyaW5nLFxuICBQb2x5Z29uLFxuICBGZWF0dXJlT2YsXG4gIEZlYXR1cmVXaXRoUHJvcHMsXG4gIEFueUNvb3JkaW5hdGVzLFxufSBmcm9tICcuL2dlb2pzb24tdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBOZWFyZXN0UG9pbnRUeXBlID0gRmVhdHVyZVdpdGhQcm9wczxQb2ludCwgeyBkaXN0OiBudW1iZXI7IGluZGV4OiBudW1iZXIgfT47XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0RlY2tDb2xvcihcbiAgY29sb3I/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IG51bWJlcixcbiAgZGVmYXVsdENvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFsyNTUsIDAsIDAsIDI1NV1cbik6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGNvbG9yKSkge1xuICAgIHJldHVybiBkZWZhdWx0Q29sb3I7XG4gIH1cbiAgcmV0dXJuIFtjb2xvclswXSAqIDI1NSwgY29sb3JbMV0gKiAyNTUsIGNvbG9yWzJdICogMjU1LCBjb2xvclszXSAqIDI1NV07XG59XG5cbi8vXG4vLyBhIEdlb0pTT04gaGVscGVyIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIHdpdGhcbi8vIGFuIGFyZ3VtZW50IHRoYXQgaXMgdGhlIG1vc3QgZGVlcGx5LW5lc3RlZCBhcnJheSBoYXZpbmcgZWxlbWVudHNcbi8vIHRoYXQgYXJlIGFycmF5cyBvZiBwcmltaXRpdmVzIGFzIGFuIGFyZ3VtZW50LCBlLmcuXG4vL1xuLy8ge1xuLy8gICBcInR5cGVcIjogXCJNdWx0aVBvbHlnb25cIixcbi8vICAgXCJjb29yZGluYXRlc1wiOiBbXG4vLyAgICAgICBbXG4vLyAgICAgICAgICAgW1szMCwgMjBdLCBbNDUsIDQwXSwgWzEwLCA0MF0sIFszMCwgMjBdXVxuLy8gICAgICAgXSxcbi8vICAgICAgIFtcbi8vICAgICAgICAgICBbWzE1LCA1XSwgWzQwLCAxMF0sIFsxMCwgMjBdLCBbNSwgMTBdLCBbMTUsIDVdXVxuLy8gICAgICAgXVxuLy8gICBdXG4vLyB9XG4vL1xuLy8gdGhlIGZ1bmN0aW9uIHdvdWxkIGJlIGNhbGxlZCBvbjpcbi8vXG4vLyBbWzMwLCAyMF0sIFs0NSwgNDBdLCBbMTAsIDQwXSwgWzMwLCAyMF1dXG4vL1xuLy8gYW5kXG4vL1xuLy8gW1sxNSwgNV0sIFs0MCwgMTBdLCBbMTAsIDIwXSwgWzUsIDEwXSwgWzE1LCA1XV1cbi8vXG5leHBvcnQgZnVuY3Rpb24gcmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyhcbiAgYXJyYXk6IEFycmF5PGFueT4sXG4gIHByZWZpeDogQXJyYXk8bnVtYmVyPixcbiAgZm46IEZ1bmN0aW9uXG4pIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGFycmF5WzBdKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAocmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyhhcnJheVtpXSwgWy4uLnByZWZpeCwgaV0sIGZuKSkge1xuICAgICAgZm4oYXJyYXksIHByZWZpeCk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyhcbiAgcDE6IFBvc2l0aW9uLFxuICBwMjogUG9zaXRpb24sXG4gIG1hcENvb3JkczogUG9zaXRpb25cbik6IFBvc2l0aW9uW10ge1xuICBjb25zdCBsaW5lU3RyaW5nOiBMaW5lU3RyaW5nID0ge1xuICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICBjb29yZGluYXRlczogW3AxLCBwMl0sXG4gIH07XG4gIGNvbnN0IHB0ID0gcG9pbnQobWFwQ29vcmRzKTtcbiAgY29uc3QgZGRpc3RhbmNlID0gcG9pbnRUb0xpbmVEaXN0YW5jZShwdCwgbGluZVN0cmluZyk7XG4gIGNvbnN0IGxpbmVCZWFyaW5nID0gYmVhcmluZyhwMSwgcDIpO1xuXG4gIC8vIENoZWNrIGlmIGN1cnJlbnQgcG9pbnQgaXMgdG8gdGhlIGxlZnQgb3IgcmlnaHQgb2YgbGluZVxuICAvLyBMaW5lIGZyb20gQT0oeDEseTEpIHRvIEI9KHgyLHkyKSBhIHBvaW50IFA9KHgseSlcbiAgLy8gdGhlbiAoeOKIkngxKSh5MuKIknkxKeKIkih54oiSeTEpKHgy4oiSeDEpXG4gIGNvbnN0IGlzUG9pbnRUb0xlZnRPZkxpbmUgPVxuICAgIChtYXBDb29yZHNbMF0gLSBwMVswXSkgKiAocDJbMV0gLSBwMVsxXSkgLSAobWFwQ29vcmRzWzFdIC0gcDFbMV0pICogKHAyWzBdIC0gcDFbMF0pO1xuXG4gIC8vIEJlYXJpbmcgdG8gZHJhdyBwZXJwZW5kaWN1bGFyIHRvIHRoZSBsaW5lIHN0cmluZ1xuICBjb25zdCBvcnRob2dvbmFsQmVhcmluZyA9IGlzUG9pbnRUb0xlZnRPZkxpbmUgPCAwID8gbGluZUJlYXJpbmcgLSA5MCA6IGxpbmVCZWFyaW5nIC0gMjcwO1xuXG4gIC8vIEdldCBjb29yZGluYXRlcyBmb3IgdGhlIHBvaW50IHAzIGFuZCBwNCB3aGljaCBhcmUgcGVycGVuZGljdWxhciB0byB0aGUgbGluZVN0cmluZ1xuICAvLyBBZGQgdGhlIGRpc3RhbmNlIGFzIHRoZSBjdXJyZW50IHBvc2l0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGluZVN0cmluZ1xuICBjb25zdCBwMyA9IGRlc3RpbmF0aW9uKHAyLCBkZGlzdGFuY2UsIG9ydGhvZ29uYWxCZWFyaW5nKTtcbiAgY29uc3QgcDQgPSBkZXN0aW5hdGlvbihwMSwgZGRpc3RhbmNlLCBvcnRob2dvbmFsQmVhcmluZyk7XG5cbiAgcmV0dXJuIFtwMy5nZW9tZXRyeS5jb29yZGluYXRlcywgcDQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNdIGFzIFBvc2l0aW9uW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZTJkKHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBkeCA9IHgxIC0geDI7XG4gIGNvbnN0IGR5ID0geTEgLSB5MjtcbiAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaXgoYTogbnVtYmVyLCBiOiBudW1iZXIsIHJhdGlvOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYiAqIHJhdGlvICsgYSAqICgxIC0gcmF0aW8pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVhcmVzdFBvaW50T25Qcm9qZWN0ZWRMaW5lKFxuICBsaW5lOiBGZWF0dXJlT2Y8TGluZVN0cmluZz4sXG4gIGluUG9pbnQ6IEZlYXR1cmVPZjxQb2ludD4sXG4gIHZpZXdwb3J0OiBWaWV3cG9ydFxuKTogTmVhcmVzdFBvaW50VHlwZSB7XG4gIGNvbnN0IHdtVmlld3BvcnQgPSBuZXcgV2ViTWVyY2F0b3JWaWV3cG9ydCh2aWV3cG9ydCk7XG4gIC8vIFByb2plY3QgdGhlIGxpbmUgdG8gdmlld3BvcnQsIHRoZW4gZmluZCB0aGUgbmVhcmVzdCBwb2ludFxuICBjb25zdCBjb29yZGluYXRlczogQXJyYXk8QXJyYXk8bnVtYmVyPj4gPSBsaW5lLmdlb21ldHJ5LmNvb3JkaW5hdGVzIGFzIGFueTtcbiAgY29uc3QgcHJvamVjdGVkQ29vcmRzID0gY29vcmRpbmF0ZXMubWFwKChbeCwgeSwgeiA9IDBdKSA9PiB3bVZpZXdwb3J0LnByb2plY3QoW3gsIHksIHpdKSk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgW3gsIHldID0gd21WaWV3cG9ydC5wcm9qZWN0KGluUG9pbnQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpO1xuICAvLyBjb25zb2xlLmxvZygncHJvamVjdGVkQ29vcmRzJywgSlNPTi5zdHJpbmdpZnkocHJvamVjdGVkQ29vcmRzKSk7XG5cbiAgbGV0IG1pbkRpc3RhbmNlID0gSW5maW5pdHk7XG4gIGxldCBtaW5Qb2ludEluZm8gPSB7fTtcblxuICBwcm9qZWN0ZWRDb29yZHMuZm9yRWFjaCgoW3gyLCB5Ml0sIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgW3gxLCB5MV0gPSBwcm9qZWN0ZWRDb29yZHNbaW5kZXggLSAxXTtcblxuICAgIC8vIGxpbmUgZnJvbSBwcm9qZWN0ZWRDb29yZHNbaW5kZXggLSAxXSB0byBwcm9qZWN0ZWRDb29yZHNbaW5kZXhdXG4gICAgLy8gY29udmVydCB0byBBeCArIEJ5ICsgQyA9IDBcbiAgICBjb25zdCBBID0geTEgLSB5MjtcbiAgICBjb25zdCBCID0geDIgLSB4MTtcbiAgICBjb25zdCBDID0geDEgKiB5MiAtIHgyICogeTE7XG5cbiAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EaXN0YW5jZV9mcm9tX2FfcG9pbnRfdG9fYV9saW5lXG4gICAgY29uc3QgZGl2ID0gQSAqIEEgKyBCICogQjtcbiAgICBjb25zdCBkaXN0YW5jZSA9IE1hdGguYWJzKEEgKiB4ICsgQiAqIHkgKyBDKSAvIE1hdGguc3FydChkaXYpO1xuXG4gICAgLy8gVE9ETzogQ2hlY2sgaWYgaW5zaWRlIGJvdW5kc1xuXG4gICAgaWYgKGRpc3RhbmNlIDwgbWluRGlzdGFuY2UpIHtcbiAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgICBtaW5Qb2ludEluZm8gPSB7XG4gICAgICAgIGluZGV4LFxuICAgICAgICB4MDogKEIgKiAoQiAqIHggLSBBICogeSkgLSBBICogQykgLyBkaXYsXG4gICAgICAgIHkwOiAoQSAqICgtQiAqIHggKyBBICogeSkgLSBCICogQykgLyBkaXYsXG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgeyBpbmRleCwgeDAsIHkwIH0gPSBtaW5Qb2ludEluZm87XG4gIGNvbnN0IFt4MSwgeTEsIHoxID0gMF0gPSBwcm9qZWN0ZWRDb29yZHNbaW5kZXggLSAxXTtcbiAgY29uc3QgW3gyLCB5MiwgejIgPSAwXSA9IHByb2plY3RlZENvb3Jkc1tpbmRleF07XG5cbiAgLy8gY2FsY3VsYXRlIHdoYXQgcmF0aW8gb2YgdGhlIGxpbmUgd2UgYXJlIG9uIHRvIGZpbmQgdGhlIHByb3BlciB6XG4gIGNvbnN0IGxpbmVMZW5ndGggPSBkaXN0YW5jZTJkKHgxLCB5MSwgeDIsIHkyKTtcbiAgY29uc3Qgc3RhcnRUb1BvaW50TGVuZ3RoID0gZGlzdGFuY2UyZCh4MSwgeTEsIHgwLCB5MCk7XG4gIGNvbnN0IHJhdGlvID0gc3RhcnRUb1BvaW50TGVuZ3RoIC8gbGluZUxlbmd0aDtcbiAgY29uc3QgejAgPSBtaXgoejEsIHoyLCByYXRpbyk7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgZ2VvbWV0cnk6IHtcbiAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICBjb29yZGluYXRlczogd21WaWV3cG9ydC51bnByb2plY3QoW3gwLCB5MCwgejBdKSxcbiAgICB9LFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIC8vIFRPRE86IGNhbGN1bGF0ZSB0aGUgZGlzdGFuY2UgaW4gcHJvcGVyIHVuaXRzXG4gICAgICBkaXN0OiBtaW5EaXN0YW5jZSxcbiAgICAgIGluZGV4OiBpbmRleCAtIDEsXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lYXJlc3RQb2ludE9uTGluZTxHIGV4dGVuZHMgTGluZVN0cmluZyB8IE11bHRpTGluZVN0cmluZz4oXG4gIGxpbmVzOiBGZWF0dXJlT2Y8TGluZVN0cmluZz4sXG4gIGluUG9pbnQ6IEZlYXR1cmVPZjxQb2ludD4sXG4gIHZpZXdwb3J0PzogVmlld3BvcnRcbik6IE5lYXJlc3RQb2ludFR5cGUge1xuICBsZXQgbWVyY2F0b3I7XG5cbiAgaWYgKHZpZXdwb3J0KSB7XG4gICAgbWVyY2F0b3IgPSBuZXcgV2ViTWVyY2F0b3JWaWV3cG9ydCh2aWV3cG9ydCk7XG4gIH1cbiAgbGV0IGNsb3Nlc3RQb2ludDogYW55ID0gcG9pbnQoW0luZmluaXR5LCBJbmZpbml0eV0sIHtcbiAgICBkaXN0OiBJbmZpbml0eSxcbiAgfSk7XG5cbiAgaWYgKCFsaW5lcy5nZW9tZXRyeT8uY29vcmRpbmF0ZXMubGVuZ3RoIHx8IGxpbmVzLmdlb21ldHJ5Py5jb29yZGluYXRlcy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuIGNsb3Nlc3RQb2ludDtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgZmxhdHRlbkVhY2gobGluZXMsIChsaW5lOiBhbnkpID0+IHtcbiAgICBjb25zdCBjb29yZHM6IGFueSA9IGdldENvb3JkcyhsaW5lKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcG9pbnRDb29yZHM6IGFueSA9IGdldENvb3JkcyhpblBvaW50KTtcblxuICAgIGxldCBtaW5EaXN0O1xuICAgIGxldCB0bztcbiAgICBsZXQgZnJvbTtcbiAgICBsZXQgeDtcbiAgICBsZXQgeTtcbiAgICBsZXQgc2VnbWVudElkeDtcbiAgICBsZXQgZGlzdDtcblxuICAgIGlmIChjb29yZHMubGVuZ3RoID4gMSAmJiBwb2ludENvb3Jkcy5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lQ29vcmRpbmF0ZXM7XG4gICAgICBsZXQgcG9pbnRDb29yZGluYXRlO1xuXG4gICAgICAvLyBJZiB2aWV3cG9ydCBpcyBnaXZlbiwgdGhlbiB0cmFuc2xhdGUgdGhlc2UgY29vcmRpbmF0ZXMgdG8gcGl4ZWxzIHRvIGluY3JlYXNlIHByZWNpc2lvblxuICAgICAgaWYgKG1lcmNhdG9yKSB7XG4gICAgICAgIGxpbmVDb29yZGluYXRlcyA9IGNvb3Jkcy5tYXAoKGxpbmVDb29yZGluYXRlKSA9PiBtZXJjYXRvci5wcm9qZWN0KGxpbmVDb29yZGluYXRlKSk7XG4gICAgICAgIHBvaW50Q29vcmRpbmF0ZSA9IG1lcmNhdG9yLnByb2plY3QocG9pbnRDb29yZHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGluZUNvb3JkaW5hdGVzID0gY29vcmRzO1xuICAgICAgICBwb2ludENvb3JkaW5hdGUgPSBwb2ludENvb3JkcztcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgbiA9IDE7IG4gPCBsaW5lQ29vcmRpbmF0ZXMubGVuZ3RoOyBuKyspIHtcbiAgICAgICAgaWYgKGxpbmVDb29yZGluYXRlc1tuXVswXSAhPT0gbGluZUNvb3JkaW5hdGVzW24gLSAxXVswXSkge1xuICAgICAgICAgIGNvbnN0IHNsb3BlID1cbiAgICAgICAgICAgIChsaW5lQ29vcmRpbmF0ZXNbbl1bMV0gLSBsaW5lQ29vcmRpbmF0ZXNbbiAtIDFdWzFdKSAvXG4gICAgICAgICAgICAobGluZUNvb3JkaW5hdGVzW25dWzBdIC0gbGluZUNvb3JkaW5hdGVzW24gLSAxXVswXSk7XG4gICAgICAgICAgY29uc3QgaW52ZXJzZVNsb3BlID0gbGluZUNvb3JkaW5hdGVzW25dWzFdIC0gc2xvcGUgKiBsaW5lQ29vcmRpbmF0ZXNbbl1bMF07XG5cbiAgICAgICAgICBkaXN0ID1cbiAgICAgICAgICAgIE1hdGguYWJzKHNsb3BlICogcG9pbnRDb29yZGluYXRlWzBdICsgaW52ZXJzZVNsb3BlIC0gcG9pbnRDb29yZGluYXRlWzFdKSAvXG4gICAgICAgICAgICBNYXRoLnNxcnQoc2xvcGUgKiBzbG9wZSArIDEpO1xuICAgICAgICB9IGVsc2UgZGlzdCA9IE1hdGguYWJzKHBvaW50Q29vcmRpbmF0ZVswXSAtIGxpbmVDb29yZGluYXRlc1tuXVswXSk7XG5cbiAgICAgICAgLy8gbGVuZ3RoXjIgb2YgbGluZSBzZWdtZW50XG4gICAgICAgIGNvbnN0IHJsMiA9XG4gICAgICAgICAgTWF0aC5wb3cobGluZUNvb3JkaW5hdGVzW25dWzFdIC0gbGluZUNvb3JkaW5hdGVzW24gLSAxXVsxXSwgMikgK1xuICAgICAgICAgIE1hdGgucG93KGxpbmVDb29yZGluYXRlc1tuXVswXSAtIGxpbmVDb29yZGluYXRlc1tuIC0gMV1bMF0sIDIpO1xuXG4gICAgICAgIC8vIGRpc3RhbmNlXjIgb2YgcHQgdG8gZW5kIGxpbmUgc2VnbWVudFxuICAgICAgICBjb25zdCBsbjIgPVxuICAgICAgICAgIE1hdGgucG93KGxpbmVDb29yZGluYXRlc1tuXVsxXSAtIHBvaW50Q29vcmRpbmF0ZVsxXSwgMikgK1xuICAgICAgICAgIE1hdGgucG93KGxpbmVDb29yZGluYXRlc1tuXVswXSAtIHBvaW50Q29vcmRpbmF0ZVswXSwgMik7XG5cbiAgICAgICAgLy8gZGlzdGFuY2VeMiBvZiBwdCB0byBiZWdpbiBsaW5lIHNlZ21lbnRcbiAgICAgICAgY29uc3QgbG5tMTIgPVxuICAgICAgICAgIE1hdGgucG93KGxpbmVDb29yZGluYXRlc1tuIC0gMV1bMV0gLSBwb2ludENvb3JkaW5hdGVbMV0sIDIpICtcbiAgICAgICAgICBNYXRoLnBvdyhsaW5lQ29vcmRpbmF0ZXNbbiAtIDFdWzBdIC0gcG9pbnRDb29yZGluYXRlWzBdLCAyKTtcblxuICAgICAgICAvLyBtaW5pbXVtIGRpc3RhbmNlXjIgb2YgcHQgdG8gaW5maW5pdGUgbGluZVxuICAgICAgICBjb25zdCBkaXN0MiA9IE1hdGgucG93KGRpc3QsIDIpO1xuXG4gICAgICAgIC8vIGNhbGN1bGF0ZWQgbGVuZ3RoXjIgb2YgbGluZSBzZWdtZW50XG4gICAgICAgIGNvbnN0IGNhbGNybDIgPSBsbjIgLSBkaXN0MiArIGxubTEyIC0gZGlzdDI7XG5cbiAgICAgICAgLy8gcmVkZWZpbmUgbWluaW11bSBkaXN0YW5jZSB0byBsaW5lIHNlZ21lbnQgKG5vdCBpbmZpbml0ZSBsaW5lKSBpZiBuZWNlc3NhcnlcbiAgICAgICAgaWYgKGNhbGNybDIgPiBybDIpIHtcbiAgICAgICAgICBkaXN0ID0gTWF0aC5zcXJ0KE1hdGgubWluKGxuMiwgbG5tMTIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtaW5EaXN0ID09PSBudWxsIHx8IG1pbkRpc3QgPT09IHVuZGVmaW5lZCB8fCBtaW5EaXN0ID4gZGlzdCkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtZGVwdGhcbiAgICAgICAgICBpZiAoY2FsY3JsMiA+IHJsMikge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1kZXB0aFxuICAgICAgICAgICAgaWYgKGxubTEyIDwgbG4yKSB7XG4gICAgICAgICAgICAgIHRvID0gMDsgLy8gbmVhcmVyIHRvIHByZXZpb3VzIHBvaW50XG4gICAgICAgICAgICAgIGZyb20gPSAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZnJvbSA9IDA7IC8vIG5lYXJlciB0byBjdXJyZW50IHBvaW50XG4gICAgICAgICAgICAgIHRvID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcGVycGVuZGljdWxhciBmcm9tIHBvaW50IGludGVyc2VjdHMgbGluZSBzZWdtZW50XG4gICAgICAgICAgICB0byA9IE1hdGguc3FydChsbm0xMiAtIGRpc3QyKSAvIE1hdGguc3FydChybDIpO1xuICAgICAgICAgICAgZnJvbSA9IE1hdGguc3FydChsbjIgLSBkaXN0MikgLyBNYXRoLnNxcnQocmwyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbWluRGlzdCA9IGRpc3Q7XG4gICAgICAgICAgc2VnbWVudElkeCA9IG47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgZHggPSBsaW5lQ29vcmRpbmF0ZXNbc2VnbWVudElkeCAtIDFdWzBdIC0gbGluZUNvb3JkaW5hdGVzW3NlZ21lbnRJZHhdWzBdO1xuICAgICAgY29uc3QgZHkgPSBsaW5lQ29vcmRpbmF0ZXNbc2VnbWVudElkeCAtIDFdWzFdIC0gbGluZUNvb3JkaW5hdGVzW3NlZ21lbnRJZHhdWzFdO1xuXG4gICAgICB4ID0gbGluZUNvb3JkaW5hdGVzW3NlZ21lbnRJZHggLSAxXVswXSAtIGR4ICogdG87XG4gICAgICB5ID0gbGluZUNvb3JkaW5hdGVzW3NlZ21lbnRJZHggLSAxXVsxXSAtIGR5ICogdG87XG4gICAgfVxuXG4gICAgLy8gaW5kZXggbmVlZHMgdG8gYmUgLTEgYmVjYXVzZSB3ZSBoYXZlIHRvIGFjY291bnQgZm9yIHRoZSBzaGlmdCBmcm9tIGluaXRpYWwgYmFja3NjYW5cbiAgICBsZXQgc25hcFBvaW50ID0geyB4LCB5LCBpZHg6IHNlZ21lbnRJZHggLSAxLCB0bywgZnJvbSB9O1xuXG4gICAgaWYgKG1lcmNhdG9yKSB7XG4gICAgICBjb25zdCBwaXhlbFRvTGF0TG9uZyA9IG1lcmNhdG9yLnVucHJvamVjdChbc25hcFBvaW50LngsIHNuYXBQb2ludC55XSk7XG4gICAgICBzbmFwUG9pbnQgPSB7XG4gICAgICAgIHg6IHBpeGVsVG9MYXRMb25nWzBdLFxuICAgICAgICB5OiBwaXhlbFRvTGF0TG9uZ1sxXSxcbiAgICAgICAgaWR4OiBzZWdtZW50SWR4IC0gMSxcbiAgICAgICAgdG8sXG4gICAgICAgIGZyb20sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNsb3Nlc3RQb2ludCA9IHBvaW50KFtzbmFwUG9pbnQueCwgc25hcFBvaW50LnldLCB7XG4gICAgICBkaXN0OiBNYXRoLmFicyhzbmFwUG9pbnQuZnJvbSAtIHNuYXBQb2ludC50byksXG4gICAgICBpbmRleDogc25hcFBvaW50LmlkeCxcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNsb3Nlc3RQb2ludDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBpY2tlZEVkaXRIYW5kbGUoXG4gIHBpY2tzOiBQaWNrW10gfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBFZGl0SGFuZGxlRmVhdHVyZSB8IG51bGwgfCB1bmRlZmluZWQge1xuICBjb25zdCBoYW5kbGVzID0gZ2V0UGlja2VkRWRpdEhhbmRsZXMocGlja3MpO1xuICByZXR1cm4gaGFuZGxlcy5sZW5ndGggPyBoYW5kbGVzWzBdIDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBpY2tlZFNuYXBTb3VyY2VFZGl0SGFuZGxlKFxuICBwaWNrczogUGlja1tdIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogRWRpdEhhbmRsZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgaGFuZGxlcyA9IGdldFBpY2tlZEVkaXRIYW5kbGVzKHBpY2tzKTtcbiAgcmV0dXJuIGhhbmRsZXMuZmluZCgoaGFuZGxlKSA9PiBoYW5kbGUucHJvcGVydGllcy5lZGl0SGFuZGxlVHlwZSA9PT0gJ3NuYXAtc291cmNlJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROb25HdWlkZVBpY2tzKHBpY2tzOiBQaWNrW10pOiBQaWNrW10ge1xuICByZXR1cm4gcGlja3MgJiYgcGlja3MuZmlsdGVyKChwaWNrKSA9PiAhcGljay5pc0d1aWRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBpY2tlZEV4aXN0aW5nRWRpdEhhbmRsZShcbiAgcGlja3M6IFBpY2tbXSB8IG51bGwgfCB1bmRlZmluZWRcbik6IEVkaXRIYW5kbGVGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGhhbmRsZXMgPSBnZXRQaWNrZWRFZGl0SGFuZGxlcyhwaWNrcyk7XG4gIHJldHVybiBoYW5kbGVzLmZpbmQoXG4gICAgKHsgcHJvcGVydGllcyB9KSA9PiBwcm9wZXJ0aWVzLmZlYXR1cmVJbmRleCA+PSAwICYmIHByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUgPT09ICdleGlzdGluZydcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBpY2tlZEludGVybWVkaWF0ZUVkaXRIYW5kbGUoXG4gIHBpY2tzOiBQaWNrW10gfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBFZGl0SGFuZGxlRmVhdHVyZSB8IG51bGwgfCB1bmRlZmluZWQge1xuICBjb25zdCBoYW5kbGVzID0gZ2V0UGlja2VkRWRpdEhhbmRsZXMocGlja3MpO1xuICByZXR1cm4gaGFuZGxlcy5maW5kKFxuICAgICh7IHByb3BlcnRpZXMgfSkgPT4gcHJvcGVydGllcy5mZWF0dXJlSW5kZXggPj0gMCAmJiBwcm9wZXJ0aWVzLmVkaXRIYW5kbGVUeXBlID09PSAnaW50ZXJtZWRpYXRlJ1xuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGlja2VkRWRpdEhhbmRsZXMocGlja3M6IFBpY2tbXSB8IG51bGwgfCB1bmRlZmluZWQpOiBFZGl0SGFuZGxlRmVhdHVyZVtdIHtcbiAgY29uc3QgaGFuZGxlcyA9XG4gICAgKHBpY2tzICYmXG4gICAgICBwaWNrc1xuICAgICAgICAuZmlsdGVyKChwaWNrKSA9PiBwaWNrLmlzR3VpZGUgJiYgcGljay5vYmplY3QucHJvcGVydGllcy5ndWlkZVR5cGUgPT09ICdlZGl0SGFuZGxlJylcbiAgICAgICAgLm1hcCgocGljaykgPT4gcGljay5vYmplY3QpKSB8fFxuICAgIFtdO1xuXG4gIHJldHVybiBoYW5kbGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeShcbiAgZ2VvbWV0cnk6IEdlb21ldHJ5LFxuICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgZWRpdEhhbmRsZVR5cGU6IEVkaXRIYW5kbGVUeXBlID0gJ2V4aXN0aW5nJ1xuKTogRWRpdEhhbmRsZUZlYXR1cmVbXSB7XG4gIGxldCBoYW5kbGVzOiBFZGl0SGFuZGxlRmVhdHVyZVtdID0gW107XG5cbiAgc3dpdGNoIChnZW9tZXRyeS50eXBlKSB7XG4gICAgY2FzZSAnUG9pbnQnOlxuICAgICAgLy8gcG9zaXRpb25zIGFyZSBub3QgbmVzdGVkXG4gICAgICBoYW5kbGVzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIGd1aWRlVHlwZTogJ2VkaXRIYW5kbGUnLFxuICAgICAgICAgICAgZWRpdEhhbmRsZVR5cGUsXG4gICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IFtdLFxuICAgICAgICAgICAgZmVhdHVyZUluZGV4LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgICBjb29yZGluYXRlczogZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdNdWx0aVBvaW50JzpcbiAgICBjYXNlICdMaW5lU3RyaW5nJzpcbiAgICAgIC8vIHBvc2l0aW9ucyBhcmUgbmVzdGVkIDEgbGV2ZWxcbiAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLmNvbmNhdChcbiAgICAgICAgZ2V0RWRpdEhhbmRsZXNGb3JDb29yZGluYXRlcyhnZW9tZXRyeS5jb29yZGluYXRlcywgW10sIGZlYXR1cmVJbmRleCwgZWRpdEhhbmRsZVR5cGUpXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnUG9seWdvbic6XG4gICAgY2FzZSAnTXVsdGlMaW5lU3RyaW5nJzpcbiAgICAgIC8vIHBvc2l0aW9ucyBhcmUgbmVzdGVkIDIgbGV2ZWxzXG4gICAgICBmb3IgKGxldCBhID0gMDsgYSA8IGdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aDsgYSsrKSB7XG4gICAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLmNvbmNhdChcbiAgICAgICAgICBnZXRFZGl0SGFuZGxlc0ZvckNvb3JkaW5hdGVzKGdlb21ldHJ5LmNvb3JkaW5hdGVzW2FdLCBbYV0sIGZlYXR1cmVJbmRleCwgZWRpdEhhbmRsZVR5cGUpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChnZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicpIHtcbiAgICAgICAgICAvLyBEb24ndCByZXBlYXQgdGhlIGZpcnN0L2xhc3QgaGFuZGxlIGZvciBQb2x5Z29uc1xuICAgICAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICBjYXNlICdNdWx0aVBvbHlnb24nOlxuICAgICAgLy8gcG9zaXRpb25zIGFyZSBuZXN0ZWQgMyBsZXZlbHNcbiAgICAgIGZvciAobGV0IGEgPSAwOyBhIDwgZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoOyBhKyspIHtcbiAgICAgICAgZm9yIChsZXQgYiA9IDA7IGIgPCBnZW9tZXRyeS5jb29yZGluYXRlc1thXS5sZW5ndGg7IGIrKykge1xuICAgICAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLmNvbmNhdChcbiAgICAgICAgICAgIGdldEVkaXRIYW5kbGVzRm9yQ29vcmRpbmF0ZXMoXG4gICAgICAgICAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzW2FdW2JdLFxuICAgICAgICAgICAgICBbYSwgYl0sXG4gICAgICAgICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgICAgICAgZWRpdEhhbmRsZVR5cGVcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vIERvbid0IHJlcGVhdCB0aGUgZmlyc3QvbGFzdCBoYW5kbGUgZm9yIFBvbHlnb25zXG4gICAgICAgICAgaGFuZGxlcyA9IGhhbmRsZXMuc2xpY2UoMCwgLTEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aHJvdyBFcnJvcihgVW5oYW5kbGVkIGdlb21ldHJ5IHR5cGU6ICR7Z2VvbWV0cnkudHlwZX1gKTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVzO1xufVxuXG5mdW5jdGlvbiBnZXRFZGl0SGFuZGxlc0ZvckNvb3JkaW5hdGVzKFxuICBjb29yZGluYXRlczogYW55W10sXG4gIHBvc2l0aW9uSW5kZXhQcmVmaXg6IG51bWJlcltdLFxuICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgZWRpdEhhbmRsZVR5cGU6IEVkaXRIYW5kbGVUeXBlID0gJ2V4aXN0aW5nJ1xuKTogRWRpdEhhbmRsZUZlYXR1cmVbXSB7XG4gIGNvbnN0IGVkaXRIYW5kbGVzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY29vcmRpbmF0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGNvb3JkaW5hdGVzW2ldO1xuICAgIGVkaXRIYW5kbGVzLnB1c2goe1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgcG9zaXRpb25JbmRleGVzOiBbLi4ucG9zaXRpb25JbmRleFByZWZpeCwgaV0sXG4gICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgZWRpdEhhbmRsZVR5cGUsXG4gICAgICB9LFxuICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IHBvc2l0aW9uLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZWRpdEhhbmRsZXM7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyBjb29yZGluYXRlcyBmb3IgYSBmZWF0dXJlIHByZXNlcnZpbmcgcmVjdGFuZ3VsYXIgc2hhcGUuXG4gKiBAcGFyYW0gZmVhdHVyZSBGZWF0dXJlIGJlZm9yZSBtb2RpZmljYXRpb24uXG4gKiBAcGFyYW0gZWRpdEhhbmRsZUluZGV4IEluZGV4IG9mIHRoZSBwb2ludCB0byBtb2RpZnkuXG4gKiBAcGFyYW0gbWFwQ29vcmRzIE5ldyBwb3NpdGlvbiBmb3IgdGhlIHBvaW50LlxuICogQHJldHVybnMgVXBkYXRlZCBjb29yZGluYXRlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVJlY3RhbmdsZVBvc2l0aW9uKFxuICBmZWF0dXJlOiBGZWF0dXJlT2Y8UG9seWdvbj4sXG4gIGVkaXRIYW5kbGVJbmRleDogbnVtYmVyLFxuICBtYXBDb29yZHM6IFBvc2l0aW9uXG4pOiBQb3NpdGlvbltdW10ge1xuICBjb25zdCBjb29yZGluYXRlcyA9IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gIGlmICghY29vcmRpbmF0ZXMpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHBvaW50cyA9IGNvb3JkaW5hdGVzWzBdLnNsaWNlKDAsIDQpO1xuICBwb2ludHNbZWRpdEhhbmRsZUluZGV4ICUgNF0gPSBtYXBDb29yZHM7XG5cbiAgY29uc3QgcDAgPSBwb2ludHNbKGVkaXRIYW5kbGVJbmRleCArIDIpICUgNF07XG4gIGNvbnN0IHAyID0gcG9pbnRzW2VkaXRIYW5kbGVJbmRleCAlIDRdO1xuICBwb2ludHNbKGVkaXRIYW5kbGVJbmRleCArIDEpICUgNF0gPSBbcDJbMF0sIHAwWzFdXTtcbiAgcG9pbnRzWyhlZGl0SGFuZGxlSW5kZXggKyAzKSAlIDRdID0gW3AwWzBdLCBwMlsxXV07XG5cbiAgcmV0dXJuIFtbLi4ucG9pbnRzLCBwb2ludHNbMF1dXTtcbn1cblxuLyoqIENyZWF0ZXMgYSBjb3B5IG9mIGZlYXR1cmUncyBjb29yZGluYXRlcy5cbiAqIEVhY2ggcG9zaXRpb24gaW4gY29vcmRpbmF0ZXMgaXMgdHJhbnNmb3JtZWQgYnkgY2FsbGluZyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24uXG4gKiBAcGFyYW0gY29vcmRzIENvb3JkaW5hdGVzIG9mIGEgZmVhdHVyZS5cbiAqIEBwYXJhbSBjYWxsYmFjayBBIGZ1bmN0aW9uIHRvIHRyYW5zZm9ybSBlYWNoIGNvb3JkaW5hdGUuXG4gKiBAcmV0dW5zIFRyYW5zZm9ybWVkIGNvb3JkaW5hdGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwQ29vcmRzKFxuICBjb29yZHM6IEFueUNvb3JkaW5hdGVzLFxuICBjYWxsYmFjazogKGNvb3JkczogUG9zaXRpb24pID0+IFBvc2l0aW9uXG4pOiBBbnlDb29yZGluYXRlcyB7XG4gIGlmICh0eXBlb2YgY29vcmRzWzBdID09PSAnbnVtYmVyJykge1xuICAgIGlmICghaXNOYU4oY29vcmRzWzBdKSAmJiBpc0Zpbml0ZShjb29yZHNbMF0pKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soY29vcmRzIGFzIFBvc2l0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvb3JkcztcbiAgfVxuXG4gIHJldHVybiAoY29vcmRzIGFzIFBvc2l0aW9uW10pXG4gICAgLm1hcCgoY29vcmQpID0+IHtcbiAgICAgIHJldHVybiBtYXBDb29yZHMoY29vcmQsIGNhbGxiYWNrKSBhcyBQb3NpdGlvbjtcbiAgICB9KVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG59XG4iXX0=","import destination from '@turf/destination';\nimport bearing from '@turf/bearing';\nimport pointToLineDistance from '@turf/point-to-line-distance';\nimport { flattenEach } from '@turf/meta';\nimport { point, MultiLineString } from '@turf/helpers';\nimport { getCoords } from '@turf/invariant';\nimport WebMercatorViewport from 'viewport-mercator-project';\nimport { Viewport, Pick, EditHandleFeature, EditHandleType } from './types';\nimport {\n Geometry,\n Position,\n Point,\n LineString,\n Polygon,\n FeatureOf,\n FeatureWithProps,\n AnyCoordinates,\n} from './geojson-types';\n\nexport type NearestPointType = FeatureWithProps;\n\nexport function toDeckColor(\n color?: [number, number, number, number] | number,\n defaultColor: [number, number, number, number] = [255, 0, 0, 255]\n): [number, number, number, number] {\n if (!Array.isArray(color)) {\n return defaultColor;\n }\n return [color[0] * 255, color[1] * 255, color[2] * 255, color[3] * 255];\n}\n\n//\n// a GeoJSON helper function that calls the provided function with\n// an argument that is the most deeply-nested array having elements\n// that are arrays of primitives as an argument, e.g.\n//\n// {\n// \"type\": \"MultiPolygon\",\n// \"coordinates\": [\n// [\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n// ],\n// [\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n// ]\n// ]\n// }\n//\n// the function would be called on:\n//\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n//\n// and\n//\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n//\nexport function recursivelyTraverseNestedArrays(\n array: Array,\n prefix: Array,\n fn: Function\n) {\n if (!Array.isArray(array[0])) {\n return true;\n }\n for (let i = 0; i < array.length; i++) {\n if (recursivelyTraverseNestedArrays(array[i], [...prefix, i], fn)) {\n fn(array, prefix);\n break;\n }\n }\n return false;\n}\n\nexport function generatePointsParallelToLinePoints(\n p1: Position,\n p2: Position,\n mapCoords: Position\n): Position[] {\n const lineString: LineString = {\n type: 'LineString',\n coordinates: [p1, p2],\n };\n const pt = point(mapCoords);\n const ddistance = pointToLineDistance(pt, lineString);\n const lineBearing = bearing(p1, p2);\n\n // Check if current point is to the left or right of line\n // Line from A=(x1,y1) to B=(x2,y2) a point P=(x,y)\n // then (x−x1)(y2−y1)−(y−y1)(x2−x1)\n const isPointToLeftOfLine =\n (mapCoords[0] - p1[0]) * (p2[1] - p1[1]) - (mapCoords[1] - p1[1]) * (p2[0] - p1[0]);\n\n // Bearing to draw perpendicular to the line string\n const orthogonalBearing = isPointToLeftOfLine < 0 ? lineBearing - 90 : lineBearing - 270;\n\n // Get coordinates for the point p3 and p4 which are perpendicular to the lineString\n // Add the distance as the current position moves away from the lineString\n const p3 = destination(p2, ddistance, orthogonalBearing);\n const p4 = destination(p1, ddistance, orthogonalBearing);\n\n return [p3.geometry.coordinates, p4.geometry.coordinates] as Position[];\n}\n\nexport function distance2d(x1: number, y1: number, x2: number, y2: number): number {\n const dx = x1 - x2;\n const dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nexport function mix(a: number, b: number, ratio: number): number {\n return b * ratio + a * (1 - ratio);\n}\n\nexport function nearestPointOnProjectedLine(\n line: FeatureOf,\n inPoint: FeatureOf,\n viewport: Viewport\n): NearestPointType {\n const wmViewport = new WebMercatorViewport(viewport);\n // Project the line to viewport, then find the nearest point\n const coordinates: Array> = line.geometry.coordinates as any;\n const projectedCoords = coordinates.map(([x, y, z = 0]) => wmViewport.project([x, y, z]));\n // @ts-ignore\n const [x, y] = wmViewport.project(inPoint.geometry.coordinates);\n // console.log('projectedCoords', JSON.stringify(projectedCoords));\n\n let minDistance = Infinity;\n let minPointInfo = {};\n\n projectedCoords.forEach(([x2, y2], index) => {\n if (index === 0) {\n return;\n }\n\n const [x1, y1] = projectedCoords[index - 1];\n\n // line from projectedCoords[index - 1] to projectedCoords[index]\n // convert to Ax + By + C = 0\n const A = y1 - y2;\n const B = x2 - x1;\n const C = x1 * y2 - x2 * y1;\n\n // https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line\n const div = A * A + B * B;\n const distance = Math.abs(A * x + B * y + C) / Math.sqrt(div);\n\n // TODO: Check if inside bounds\n\n if (distance < minDistance) {\n minDistance = distance;\n minPointInfo = {\n index,\n x0: (B * (B * x - A * y) - A * C) / div,\n y0: (A * (-B * x + A * y) - B * C) / div,\n };\n }\n });\n // @ts-ignore\n const { index, x0, y0 } = minPointInfo;\n const [x1, y1, z1 = 0] = projectedCoords[index - 1];\n const [x2, y2, z2 = 0] = projectedCoords[index];\n\n // calculate what ratio of the line we are on to find the proper z\n const lineLength = distance2d(x1, y1, x2, y2);\n const startToPointLength = distance2d(x1, y1, x0, y0);\n const ratio = startToPointLength / lineLength;\n const z0 = mix(z1, z2, ratio);\n\n return {\n type: 'Feature',\n geometry: {\n type: 'Point',\n coordinates: wmViewport.unproject([x0, y0, z0]),\n },\n properties: {\n // TODO: calculate the distance in proper units\n dist: minDistance,\n index: index - 1,\n },\n };\n}\n\nexport function nearestPointOnLine(\n lines: FeatureOf,\n inPoint: FeatureOf,\n viewport?: Viewport\n): NearestPointType {\n let mercator;\n\n if (viewport) {\n mercator = new WebMercatorViewport(viewport);\n }\n let closestPoint: any = point([Infinity, Infinity], {\n dist: Infinity,\n });\n\n if (!lines.geometry?.coordinates.length || lines.geometry?.coordinates.length < 2) {\n return closestPoint;\n }\n\n // @ts-ignore\n flattenEach(lines, (line: any) => {\n const coords: any = getCoords(line);\n // @ts-ignore\n const pointCoords: any = getCoords(inPoint);\n\n let minDist;\n let to;\n let from;\n let x;\n let y;\n let segmentIdx;\n let dist;\n\n if (coords.length > 1 && pointCoords.length) {\n let lineCoordinates;\n let pointCoordinate;\n\n // If viewport is given, then translate these coordinates to pixels to increase precision\n if (mercator) {\n lineCoordinates = coords.map((lineCoordinate) => mercator.project(lineCoordinate));\n pointCoordinate = mercator.project(pointCoords);\n } else {\n lineCoordinates = coords;\n pointCoordinate = pointCoords;\n }\n\n for (let n = 1; n < lineCoordinates.length; n++) {\n if (lineCoordinates[n][0] !== lineCoordinates[n - 1][0]) {\n const slope =\n (lineCoordinates[n][1] - lineCoordinates[n - 1][1]) /\n (lineCoordinates[n][0] - lineCoordinates[n - 1][0]);\n const inverseSlope = lineCoordinates[n][1] - slope * lineCoordinates[n][0];\n\n dist =\n Math.abs(slope * pointCoordinate[0] + inverseSlope - pointCoordinate[1]) /\n Math.sqrt(slope * slope + 1);\n } else dist = Math.abs(pointCoordinate[0] - lineCoordinates[n][0]);\n\n // length^2 of line segment\n const rl2 =\n Math.pow(lineCoordinates[n][1] - lineCoordinates[n - 1][1], 2) +\n Math.pow(lineCoordinates[n][0] - lineCoordinates[n - 1][0], 2);\n\n // distance^2 of pt to end line segment\n const ln2 =\n Math.pow(lineCoordinates[n][1] - pointCoordinate[1], 2) +\n Math.pow(lineCoordinates[n][0] - pointCoordinate[0], 2);\n\n // distance^2 of pt to begin line segment\n const lnm12 =\n Math.pow(lineCoordinates[n - 1][1] - pointCoordinate[1], 2) +\n Math.pow(lineCoordinates[n - 1][0] - pointCoordinate[0], 2);\n\n // minimum distance^2 of pt to infinite line\n const dist2 = Math.pow(dist, 2);\n\n // calculated length^2 of line segment\n const calcrl2 = ln2 - dist2 + lnm12 - dist2;\n\n // redefine minimum distance to line segment (not infinite line) if necessary\n if (calcrl2 > rl2) {\n dist = Math.sqrt(Math.min(ln2, lnm12));\n }\n\n if (minDist === null || minDist === undefined || minDist > dist) {\n // eslint-disable-next-line max-depth\n if (calcrl2 > rl2) {\n // eslint-disable-next-line max-depth\n if (lnm12 < ln2) {\n to = 0; // nearer to previous point\n from = 1;\n } else {\n from = 0; // nearer to current point\n to = 1;\n }\n } else {\n // perpendicular from point intersects line segment\n to = Math.sqrt(lnm12 - dist2) / Math.sqrt(rl2);\n from = Math.sqrt(ln2 - dist2) / Math.sqrt(rl2);\n }\n minDist = dist;\n segmentIdx = n;\n }\n }\n\n const dx = lineCoordinates[segmentIdx - 1][0] - lineCoordinates[segmentIdx][0];\n const dy = lineCoordinates[segmentIdx - 1][1] - lineCoordinates[segmentIdx][1];\n\n x = lineCoordinates[segmentIdx - 1][0] - dx * to;\n y = lineCoordinates[segmentIdx - 1][1] - dy * to;\n }\n\n // index needs to be -1 because we have to account for the shift from initial backscan\n let snapPoint = { x, y, idx: segmentIdx - 1, to, from };\n\n if (mercator) {\n const pixelToLatLong = mercator.unproject([snapPoint.x, snapPoint.y]);\n snapPoint = {\n x: pixelToLatLong[0],\n y: pixelToLatLong[1],\n idx: segmentIdx - 1,\n to,\n from,\n };\n }\n\n closestPoint = point([snapPoint.x, snapPoint.y], {\n dist: Math.abs(snapPoint.from - snapPoint.to),\n index: snapPoint.idx,\n });\n });\n\n return closestPoint;\n}\n\nexport function getPickedEditHandle(\n picks: Pick[] | null | undefined\n): EditHandleFeature | null | undefined {\n const handles = getPickedEditHandles(picks);\n return handles.length ? handles[0] : null;\n}\n\nexport function getPickedSnapSourceEditHandle(\n picks: Pick[] | null | undefined\n): EditHandleFeature | null | undefined {\n const handles = getPickedEditHandles(picks);\n return handles.find((handle) => handle.properties.editHandleType === 'snap-source');\n}\n\nexport function getNonGuidePicks(picks: Pick[]): Pick[] {\n return picks && picks.filter((pick) => !pick.isGuide);\n}\n\nexport function getPickedExistingEditHandle(\n picks: Pick[] | null | undefined\n): EditHandleFeature | null | undefined {\n const handles = getPickedEditHandles(picks);\n return handles.find(\n ({ properties }) => properties.featureIndex >= 0 && properties.editHandleType === 'existing'\n );\n}\n\nexport function getPickedIntermediateEditHandle(\n picks: Pick[] | null | undefined\n): EditHandleFeature | null | undefined {\n const handles = getPickedEditHandles(picks);\n return handles.find(\n ({ properties }) => properties.featureIndex >= 0 && properties.editHandleType === 'intermediate'\n );\n}\n\nexport function getPickedEditHandles(picks: Pick[] | null | undefined): EditHandleFeature[] {\n const handles =\n (picks &&\n picks\n .filter((pick) => pick.isGuide && pick.object.properties.guideType === 'editHandle')\n .map((pick) => pick.object)) ||\n [];\n\n return handles;\n}\n\nexport function getEditHandlesForGeometry(\n geometry: Geometry,\n featureIndex: number,\n editHandleType: EditHandleType = 'existing'\n): EditHandleFeature[] {\n let handles: EditHandleFeature[] = [];\n\n switch (geometry.type) {\n case 'Point':\n // positions are not nested\n handles = [\n {\n type: 'Feature',\n properties: {\n guideType: 'editHandle',\n editHandleType,\n positionIndexes: [],\n featureIndex,\n },\n geometry: {\n type: 'Point',\n coordinates: geometry.coordinates,\n },\n },\n ];\n break;\n case 'MultiPoint':\n case 'LineString':\n // positions are nested 1 level\n handles = handles.concat(\n getEditHandlesForCoordinates(geometry.coordinates, [], featureIndex, editHandleType)\n );\n break;\n case 'Polygon':\n case 'MultiLineString':\n // positions are nested 2 levels\n for (let a = 0; a < geometry.coordinates.length; a++) {\n handles = handles.concat(\n getEditHandlesForCoordinates(geometry.coordinates[a], [a], featureIndex, editHandleType)\n );\n if (geometry.type === 'Polygon') {\n // Don't repeat the first/last handle for Polygons\n handles = handles.slice(0, -1);\n }\n }\n\n break;\n case 'MultiPolygon':\n // positions are nested 3 levels\n for (let a = 0; a < geometry.coordinates.length; a++) {\n for (let b = 0; b < geometry.coordinates[a].length; b++) {\n handles = handles.concat(\n getEditHandlesForCoordinates(\n geometry.coordinates[a][b],\n [a, b],\n featureIndex,\n editHandleType\n )\n );\n // Don't repeat the first/last handle for Polygons\n handles = handles.slice(0, -1);\n }\n }\n\n break;\n default:\n // @ts-ignore\n throw Error(`Unhandled geometry type: ${geometry.type}`);\n }\n\n return handles;\n}\n\nfunction getEditHandlesForCoordinates(\n coordinates: any[],\n positionIndexPrefix: number[],\n featureIndex: number,\n editHandleType: EditHandleType = 'existing'\n): EditHandleFeature[] {\n const editHandles = [];\n for (let i = 0; i < coordinates.length; i++) {\n const position = coordinates[i];\n editHandles.push({\n type: 'Feature',\n properties: {\n guideType: 'editHandle',\n positionIndexes: [...positionIndexPrefix, i],\n featureIndex,\n editHandleType,\n },\n geometry: {\n type: 'Point',\n coordinates: position,\n },\n });\n }\n return editHandles;\n}\n\n/**\n * Calculates coordinates for a feature preserving rectangular shape.\n * @param feature Feature before modification.\n * @param editHandleIndex Index of the point to modify.\n * @param mapCoords New position for the point.\n * @returns Updated coordinates.\n */\nexport function updateRectanglePosition(\n feature: FeatureOf,\n editHandleIndex: number,\n mapCoords: Position\n): Position[][] {\n const coordinates = feature.geometry.coordinates;\n if (!coordinates) {\n return null;\n }\n\n const points = coordinates[0].slice(0, 4);\n points[editHandleIndex % 4] = mapCoords;\n\n const p0 = points[(editHandleIndex + 2) % 4];\n const p2 = points[editHandleIndex % 4];\n points[(editHandleIndex + 1) % 4] = [p2[0], p0[1]];\n points[(editHandleIndex + 3) % 4] = [p0[0], p2[1]];\n\n return [[...points, points[0]]];\n}\n\n/** Creates a copy of feature's coordinates.\n * Each position in coordinates is transformed by calling the provided function.\n * @param coords Coordinates of a feature.\n * @param callback A function to transform each coordinate.\n * @retuns Transformed coordinates.\n */\nexport function mapCoords(\n coords: AnyCoordinates,\n callback: (coords: Position) => Position\n): AnyCoordinates {\n if (typeof coords[0] === 'number') {\n if (!isNaN(coords[0]) && isFinite(coords[0])) {\n return callback(coords as Position);\n }\n return coords;\n }\n\n return (coords as Position[])\n .map((coord) => {\n return mapCoords(coord, callback) as Position;\n })\n .filter(Boolean);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// http://en.wikipedia.org/wiki/Haversine_formula\n// http://www.movable-type.co.uk/scripts/latlong.html\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Takes a {@link Point} and calculates the location of a destination point given a distance in\n * degrees, radians, miles, or kilometers; and bearing in degrees.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name destination\n * @param {Coord} origin starting point\n * @param {number} distance distance from the origin point\n * @param {number} bearing ranging from -180 to 180\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians\n * @param {Object} [options.properties={}] Translate properties to Point\n * @returns {Feature} destination point\n * @example\n * var point = turf.point([-75.343, 39.984]);\n * var distance = 50;\n * var bearing = 90;\n * var options = {units: 'miles'};\n *\n * var destination = turf.destination(point, distance, bearing, options);\n *\n * //addToMap\n * var addToMap = [point, destination]\n * destination.properties['marker-color'] = '#f00';\n * point.properties['marker-color'] = '#0f0';\n */\nfunction destination(origin, distance, bearing, options) {\n if (options === void 0) { options = {}; }\n // Handle input\n var coordinates1 = invariant_1.getCoord(origin);\n var longitude1 = helpers_1.degreesToRadians(coordinates1[0]);\n var latitude1 = helpers_1.degreesToRadians(coordinates1[1]);\n var bearingRad = helpers_1.degreesToRadians(bearing);\n var radians = helpers_1.lengthToRadians(distance, options.units);\n // Main\n var latitude2 = Math.asin(Math.sin(latitude1) * Math.cos(radians) +\n Math.cos(latitude1) * Math.sin(radians) * Math.cos(bearingRad));\n var longitude2 = longitude1 + Math.atan2(Math.sin(bearingRad) * Math.sin(radians) * Math.cos(latitude1), Math.cos(radians) - Math.sin(latitude1) * Math.sin(latitude2));\n var lng = helpers_1.radiansToDegrees(longitude2);\n var lat = helpers_1.radiansToDegrees(latitude2);\n return helpers_1.point([lng, lat], options.properties);\n}\nexports.default = destination;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n// http://en.wikipedia.org/wiki/Haversine_formula\n// http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Takes two {@link Point|points} and finds the geographic bearing between them,\n * i.e. the angle measured in degrees from the north line (0 degrees)\n *\n * @name bearing\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.final=false] calculates the final bearing if true\n * @returns {number} bearing in decimal degrees, between -180 and 180 degrees (positive clockwise)\n * @example\n * var point1 = turf.point([-75.343, 39.984]);\n * var point2 = turf.point([-75.534, 39.123]);\n *\n * var bearing = turf.bearing(point1, point2);\n *\n * //addToMap\n * var addToMap = [point1, point2]\n * point1.properties['marker-color'] = '#f00'\n * point2.properties['marker-color'] = '#0f0'\n * point1.properties.bearing = bearing\n */\nfunction bearing(start, end, options) {\n if (options === void 0) { options = {}; }\n // Reverse calculation\n if (options.final === true) {\n return calculateFinalBearing(start, end);\n }\n var coordinates1 = invariant_1.getCoord(start);\n var coordinates2 = invariant_1.getCoord(end);\n var lon1 = helpers_1.degreesToRadians(coordinates1[0]);\n var lon2 = helpers_1.degreesToRadians(coordinates2[0]);\n var lat1 = helpers_1.degreesToRadians(coordinates1[1]);\n var lat2 = helpers_1.degreesToRadians(coordinates2[1]);\n var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n var b = Math.cos(lat1) * Math.sin(lat2) -\n Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n return helpers_1.radiansToDegrees(Math.atan2(a, b));\n}\n/**\n * Calculates Final Bearing\n *\n * @private\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @returns {number} bearing\n */\nfunction calculateFinalBearing(start, end) {\n // Swap start & end\n var bear = bearing(end, start);\n bear = (bear + 180) % 360;\n return bear;\n}\nexports.default = bearing;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// Taken from http://geomalgorithms.com/a02-_lines.html\nvar distance_1 = __importDefault(require(\"@turf/distance\"));\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar meta_1 = require(\"@turf/meta\");\nvar rhumb_distance_1 = __importDefault(require(\"@turf/rhumb-distance\"));\n/**\n * Returns the minimum distance between a {@link Point} and a {@link LineString}, being the distance from a line the\n * minimum distance between the point and any segment of the `LineString`.\n *\n * @name pointToLineDistance\n * @param {Feature|Array} pt Feature or Geometry\n * @param {Feature} line GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units=\"kilometers\"] can be anything supported by turf/convertLength\n * (ex: degrees, radians, miles, or kilometers)\n * @param {string} [options.method=\"geodesic\"] wether to calculate the distance based on geodesic (spheroid) or\n * planar (flat) method. Valid options are 'geodesic' or 'planar'.\n * @returns {number} distance between point and line\n * @example\n * var pt = turf.point([0, 0]);\n * var line = turf.lineString([[1, 1],[-1, 1]]);\n *\n * var distance = turf.pointToLineDistance(pt, line, {units: 'miles'});\n * //=69.11854715938406\n */\nfunction pointToLineDistance(pt, line, options) {\n if (options === void 0) { options = {}; }\n // Optional parameters\n if (!options.method) {\n options.method = \"geodesic\";\n }\n if (!options.units) {\n options.units = \"kilometers\";\n }\n // validation\n if (!pt) {\n throw new Error(\"pt is required\");\n }\n if (Array.isArray(pt)) {\n pt = helpers_1.point(pt);\n }\n else if (pt.type === \"Point\") {\n pt = helpers_1.feature(pt);\n }\n else {\n invariant_1.featureOf(pt, \"Point\", \"point\");\n }\n if (!line) {\n throw new Error(\"line is required\");\n }\n if (Array.isArray(line)) {\n line = helpers_1.lineString(line);\n }\n else if (line.type === \"LineString\") {\n line = helpers_1.feature(line);\n }\n else {\n invariant_1.featureOf(line, \"LineString\", \"line\");\n }\n var distance = Infinity;\n var p = pt.geometry.coordinates;\n meta_1.segmentEach(line, function (segment) {\n var a = segment.geometry.coordinates[0];\n var b = segment.geometry.coordinates[1];\n var d = distanceToSegment(p, a, b, options);\n if (d < distance) {\n distance = d;\n }\n });\n return helpers_1.convertLength(distance, \"degrees\", options.units);\n}\n/**\n * Returns the distance between a point P on a segment AB.\n *\n * @private\n * @param {Array} p external point\n * @param {Array} a first segment point\n * @param {Array} b second segment point\n * @param {Object} [options={}] Optional parameters\n * @returns {number} distance\n */\nfunction distanceToSegment(p, a, b, options) {\n var v = [b[0] - a[0], b[1] - a[1]];\n var w = [p[0] - a[0], p[1] - a[1]];\n var c1 = dot(w, v);\n if (c1 <= 0) {\n return calcDistance(p, a, { method: options.method, units: \"degrees\" });\n }\n var c2 = dot(v, v);\n if (c2 <= c1) {\n return calcDistance(p, b, { method: options.method, units: \"degrees\" });\n }\n var b2 = c1 / c2;\n var Pb = [a[0] + (b2 * v[0]), a[1] + (b2 * v[1])];\n return calcDistance(p, Pb, { method: options.method, units: \"degrees\" });\n}\nfunction dot(u, v) {\n return (u[0] * v[0] + u[1] * v[1]);\n}\nfunction calcDistance(a, b, options) {\n return options.method === \"planar\" ? rhumb_distance_1.default(a, b, options) : distance_1.default(a, b, options);\n}\nexports.default = pointToLineDistance;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://en.wikipedia.org/wiki/Rhumb_line\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Calculates the distance along a rhumb line between two {@link Point|points} in degrees, radians,\n * miles, or kilometers.\n *\n * @name rhumbDistance\n * @param {Coord} from origin point\n * @param {Coord} to destination point\n * @param {Object} [options] Optional parameters\n * @param {string} [options.units=\"kilometers\"] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.rhumbDistance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */\nfunction rhumbDistance(from, to, options) {\n if (options === void 0) { options = {}; }\n var origin = invariant_1.getCoord(from);\n var destination = invariant_1.getCoord(to);\n // compensate the crossing of the 180th meridian (https://macwright.org/2016/09/26/the-180th-meridian.html)\n // solution from https://github.com/mapbox/mapbox-gl-js/issues/3250#issuecomment-294887678\n destination[0] += (destination[0] - origin[0] > 180) ? -360 : (origin[0] - destination[0] > 180) ? 360 : 0;\n var distanceInMeters = calculateRhumbDistance(origin, destination);\n var distance = helpers_1.convertLength(distanceInMeters, \"meters\", options.units);\n return distance;\n}\n/**\n * Returns the distance travelling from ‘this’ point to destination point along a rhumb line.\n * Adapted from Geodesy: https://github.com/chrisveness/geodesy/blob/master/latlon-spherical.js\n *\n * @private\n * @param {Array} origin point.\n * @param {Array} destination point.\n * @param {number} [radius=6371e3] - (Mean) radius of earth (defaults to radius in metres).\n * @returns {number} Distance in km between this point and destination point (same units as radius).\n *\n * @example\n * var p1 = new LatLon(51.127, 1.338);\n * var p2 = new LatLon(50.964, 1.853);\n * var d = p1.distanceTo(p2); // 40.31 km\n */\nfunction calculateRhumbDistance(origin, destination, radius) {\n // φ => phi\n // λ => lambda\n // ψ => psi\n // Δ => Delta\n // δ => delta\n // θ => theta\n radius = (radius === undefined) ? helpers_1.earthRadius : Number(radius);\n // see www.edwilliams.org/avform.htm#Rhumb\n var R = radius;\n var phi1 = origin[1] * Math.PI / 180;\n var phi2 = destination[1] * Math.PI / 180;\n var DeltaPhi = phi2 - phi1;\n var DeltaLambda = Math.abs(destination[0] - origin[0]) * Math.PI / 180;\n // if dLon over 180° take shorter rhumb line across the anti-meridian:\n if (DeltaLambda > Math.PI) {\n DeltaLambda -= 2 * Math.PI;\n }\n // on Mercator projection, longitude distances shrink by latitude; q is the 'stretch factor'\n // q becomes ill-conditioned along E-W line (0/0); use empirical tolerance to avoid it\n var DeltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));\n var q = Math.abs(DeltaPsi) > 10e-12 ? DeltaPhi / DeltaPsi : Math.cos(phi1);\n // distance is pythagoras on 'stretched' Mercator projection\n var delta = Math.sqrt(DeltaPhi * DeltaPhi + q * q * DeltaLambda * DeltaLambda); // angular distance in radians\n var dist = delta * R;\n return dist;\n}\nexports.default = rhumbDistance;\n","import { feature, lineString, isObject, point } from '@turf/helpers';\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j,\n k,\n l,\n geometry,\n stopG,\n coords,\n geometryMaybeCollection,\n wrapShrink = 0,\n coordIndex = 0,\n isGeometryCollection,\n type = geojson.type,\n isFeatureCollection = type === \"FeatureCollection\",\n isFeature = type === \"Feature\",\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = isFeatureCollection\n ? geojson.features[featureIndex].geometry\n : isFeature\n ? geojson.geometry\n : geojson;\n isGeometryCollection = geometryMaybeCollection\n ? geometryMaybeCollection.type === \"GeometryCollection\"\n : false;\n stopG = isGeometryCollection\n ? geometryMaybeCollection.geometries.length\n : 1;\n\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection\n ? geometryMaybeCollection.geometries[geomIndex]\n : geometryMaybeCollection;\n\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n\n wrapShrink =\n excludeWrapCoord &&\n (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n ? 1\n : 0;\n\n switch (geomType) {\n case null:\n break;\n case \"Point\":\n if (\n callback(\n coords,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for (j = 0; j < coords.length; j++) {\n if (\n callback(\n coords[j],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (\n callback(\n coords[j][k],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (\n callback(\n coords[j][k][l],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for (j = 0; j < geometry.geometries.length; j++)\n if (\n coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n false\n )\n return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(\n geojson,\n function (\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) {\n if (coordIndex === 0 && initialValue === undefined)\n previousValue = currentCoord;\n else\n previousValue = callback(\n previousValue,\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n },\n excludeWrapCoord\n );\n return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case \"FeatureCollection\":\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function (currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined)\n previousValue = currentProperties;\n else\n previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n if (geojson.type === \"Feature\") {\n callback(geojson, 0);\n } else if (geojson.type === \"FeatureCollection\") {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function (currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined)\n previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function (coord) {\n coords.push(coord);\n });\n return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n var i,\n j,\n g,\n geometry,\n stopG,\n geometryMaybeCollection,\n isGeometryCollection,\n featureProperties,\n featureBBox,\n featureId,\n featureIndex = 0,\n isFeatureCollection = geojson.type === \"FeatureCollection\",\n isFeature = geojson.type === \"Feature\",\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (i = 0; i < stop; i++) {\n geometryMaybeCollection = isFeatureCollection\n ? geojson.features[i].geometry\n : isFeature\n ? geojson.geometry\n : geojson;\n featureProperties = isFeatureCollection\n ? geojson.features[i].properties\n : isFeature\n ? geojson.properties\n : {};\n featureBBox = isFeatureCollection\n ? geojson.features[i].bbox\n : isFeature\n ? geojson.bbox\n : undefined;\n featureId = isFeatureCollection\n ? geojson.features[i].id\n : isFeature\n ? geojson.id\n : undefined;\n isGeometryCollection = geometryMaybeCollection\n ? geometryMaybeCollection.type === \"GeometryCollection\"\n : false;\n stopG = isGeometryCollection\n ? geometryMaybeCollection.geometries.length\n : 1;\n\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection\n ? geometryMaybeCollection.geometries[g]\n : geometryMaybeCollection;\n\n // Handle null Geometry\n if (geometry === null) {\n if (\n callback(\n null,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n continue;\n }\n switch (geometry.type) {\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\": {\n if (\n callback(\n geometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n break;\n }\n case \"GeometryCollection\": {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (\n callback(\n geometry.geometries[j],\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n }\n break;\n }\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(\n geojson,\n function (\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) {\n if (featureIndex === 0 && initialValue === undefined)\n previousValue = currentGeometry;\n else\n previousValue = callback(\n previousValue,\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n );\n }\n );\n return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = geometry === null ? null : geometry.type;\n switch (type) {\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (\n callback(\n feature(geometry, properties, { bbox: bbox, id: id }),\n featureIndex,\n 0\n ) === false\n )\n return false;\n return;\n }\n\n var geomType;\n\n // Callback for multi-geometry\n switch (type) {\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n\n for (\n var multiFeatureIndex = 0;\n multiFeatureIndex < geometry.coordinates.length;\n multiFeatureIndex++\n ) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate,\n };\n if (\n callback(feature(geom, properties), featureIndex, multiFeatureIndex) ===\n false\n )\n return false;\n }\n });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(\n geojson,\n function (currentFeature, featureIndex, multiFeatureIndex) {\n if (\n featureIndex === 0 &&\n multiFeatureIndex === 0 &&\n initialValue === undefined\n )\n previousValue = currentFeature;\n else\n previousValue = callback(\n previousValue,\n currentFeature,\n featureIndex,\n multiFeatureIndex\n );\n }\n );\n return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n\n // Exclude null Geometries\n if (!feature.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n\n // Generate 2-vertex line segments\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (\n coordEach(\n feature,\n function (\n currentCoord,\n coordIndex,\n featureIndexCoord,\n multiPartIndexCoord,\n geometryIndex\n ) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (\n previousCoords === undefined ||\n featureIndex > previousFeatureIndex ||\n multiPartIndexCoord > previousMultiIndex ||\n geometryIndex > prevGeomIndex\n ) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = lineString(\n [previousCoords, currentCoord],\n feature.properties\n );\n if (\n callback(\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) === false\n )\n return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }\n ) === false\n )\n return false;\n });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentIndex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(\n geojson,\n function (\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) {\n if (started === false && initialValue === undefined)\n previousValue = currentSegment;\n else\n previousValue = callback(\n previousValue,\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n );\n started = true;\n }\n );\n return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n // validation\n if (!geojson) throw new Error(\"geojson is required\");\n\n flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n if (feature.geometry === null) return;\n var type = feature.geometry.type;\n var coords = feature.geometry.coordinates;\n switch (type) {\n case \"LineString\":\n if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n return false;\n break;\n case \"Polygon\":\n for (\n var geometryIndex = 0;\n geometryIndex < coords.length;\n geometryIndex++\n ) {\n if (\n callback(\n lineString(coords[geometryIndex], feature.properties),\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n }\n break;\n }\n });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(\n geojson,\n function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined)\n previousValue = currentLine;\n else\n previousValue = callback(\n previousValue,\n currentLine,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n }\n );\n return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature>\n */\nfunction findSegment(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString(\n [coords[segmentIndex], coords[segmentIndex + 1]],\n properties,\n options\n );\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1],\n ],\n properties,\n options\n );\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1],\n ],\n properties,\n options\n );\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex =\n coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n ],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature>\n */\nfunction findPoint(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n return point(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0)\n coordIndex =\n coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(\n coords[multiFeatureIndex][geometryIndex][coordIndex],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\n\nexport { coordAll, coordEach, coordReduce, featureEach, featureReduce, findPoint, findSegment, flattenEach, flattenReduce, geomEach, geomReduce, lineEach, lineReduce, propEach, propReduce, segmentEach, segmentReduce };\n","/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexport var earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: earthRadius / 111325,\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var unitsFactors = {\n centimeters: 100,\n centimetres: 100,\n degrees: 1 / 111325,\n feet: 3.28084,\n inches: 39.37,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n meters: 1,\n metres: 1,\n miles: 1 / 1609.344,\n millimeters: 1000,\n millimetres: 1000,\n nauticalmiles: 1 / 1852,\n radians: 1 / earthRadius,\n yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var areaFactors = {\n acres: 0.000247105,\n centimeters: 10000,\n centimetres: 10000,\n feet: 10.763910417,\n hectares: 0.0001,\n inches: 1550.003100006,\n kilometers: 0.000001,\n kilometres: 0.000001,\n meters: 1,\n metres: 1,\n miles: 3.86e-7,\n millimeters: 1000000,\n millimetres: 1000000,\n yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nexport function feature(geom, properties, options) {\n if (options === void 0) { options = {}; }\n var feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nexport function geometry(type, coordinates, _options) {\n if (_options === void 0) { _options = {}; }\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nexport function point(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n var geom = {\n type: \"Point\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nexport function points(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nexport function polygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n var ring = coordinates_1[_i];\n if (ring.length < 4) {\n throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n var geom = {\n type: \"Polygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nexport function polygons(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nexport function lineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n var geom = {\n type: \"LineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nexport function lineStrings(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nexport function featureCollection(features, options) {\n if (options === void 0) { options = {}; }\n var fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nexport function multiLineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiLineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nexport function multiPoint(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPoint\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nexport function multiPolygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPolygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nexport function geometryCollection(geometries, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"GeometryCollection\",\n geometries: geometries,\n };\n return feature(geom, properties, options);\n}\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nexport function round(num, precision) {\n if (precision === void 0) { precision = 0; }\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nexport function radiansToLength(radians, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nexport function lengthToRadians(distance, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nexport function lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nexport function bearingToAzimuth(bearing) {\n var angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nexport function radiansToDegrees(radians) {\n var degrees = radians % (2 * Math.PI);\n return (degrees * 180) / Math.PI;\n}\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nexport function degreesToRadians(degrees) {\n var radians = degrees % 360;\n return (radians * Math.PI) / 180;\n}\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nexport function convertLength(length, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nexport function convertArea(area, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"meters\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n var startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n var finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return (area / startFactor) * finalFactor;\n}\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nexport function isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nexport function isObject(input) {\n return !!input && input.constructor === Object;\n}\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nexport function validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach(function (num) {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nexport function validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\n","export {WebMercatorViewport as default} from '@math.gl/web-mercator';\nexport * from '@math.gl/web-mercator';\n","// Classic web-mercator-project\nexport {default} from './web-mercator-viewport';\nexport {default as WebMercatorViewport} from './web-mercator-viewport';\n\nexport {default as fitBounds} from './fit-bounds';\nexport {default as normalizeViewportProps} from './normalize-viewport-props';\nexport {default as flyToViewport, getFlyToDuration} from './fly-to-viewport';\n\nexport {\n lngLatToWorld,\n worldToLngLat,\n worldToPixels,\n pixelsToWorld,\n zoomToScale,\n scaleToZoom,\n getMeterZoom,\n getDistanceScales,\n addMetersToLngLat,\n getViewMatrix,\n getProjectionMatrix,\n getProjectionParameters\n} from './web-mercator-utils';\n","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport Viewport from './viewport';\nimport { zoomToScale, pixelsToWorld, lngLatToWorld, worldToLngLat, getProjectionMatrix, getDistanceScales, getViewMatrix } from './web-mercator-utils';\nimport _fitBounds from './fit-bounds';\nimport * as vec2 from 'gl-matrix/vec2';\n\nvar WebMercatorViewport = function (_Viewport) {\n _inherits(WebMercatorViewport, _Viewport);\n\n function WebMercatorViewport() {\n var _this;\n\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n width = _ref.width,\n height = _ref.height,\n _ref$latitude = _ref.latitude,\n latitude = _ref$latitude === void 0 ? 0 : _ref$latitude,\n _ref$longitude = _ref.longitude,\n longitude = _ref$longitude === void 0 ? 0 : _ref$longitude,\n _ref$zoom = _ref.zoom,\n zoom = _ref$zoom === void 0 ? 0 : _ref$zoom,\n _ref$pitch = _ref.pitch,\n pitch = _ref$pitch === void 0 ? 0 : _ref$pitch,\n _ref$bearing = _ref.bearing,\n bearing = _ref$bearing === void 0 ? 0 : _ref$bearing,\n _ref$altitude = _ref.altitude,\n altitude = _ref$altitude === void 0 ? 1.5 : _ref$altitude,\n _ref$nearZMultiplier = _ref.nearZMultiplier,\n nearZMultiplier = _ref$nearZMultiplier === void 0 ? 0.02 : _ref$nearZMultiplier,\n _ref$farZMultiplier = _ref.farZMultiplier,\n farZMultiplier = _ref$farZMultiplier === void 0 ? 1.01 : _ref$farZMultiplier;\n\n _classCallCheck(this, WebMercatorViewport);\n\n width = width || 1;\n height = height || 1;\n var scale = zoomToScale(zoom);\n altitude = Math.max(0.75, altitude);\n var center = lngLatToWorld([longitude, latitude]);\n center[2] = 0;\n var projectionMatrix = getProjectionMatrix({\n width: width,\n height: height,\n pitch: pitch,\n bearing: bearing,\n altitude: altitude,\n nearZMultiplier: nearZMultiplier,\n farZMultiplier: farZMultiplier\n });\n var viewMatrix = getViewMatrix({\n height: height,\n scale: scale,\n center: center,\n pitch: pitch,\n bearing: bearing,\n altitude: altitude\n });\n _this = _possibleConstructorReturn(this, _getPrototypeOf(WebMercatorViewport).call(this, {\n width: width,\n height: height,\n scale: scale,\n viewMatrix: viewMatrix,\n projectionMatrix: projectionMatrix\n }));\n _this.latitude = latitude;\n _this.longitude = longitude;\n _this.zoom = zoom;\n _this.pitch = pitch;\n _this.bearing = bearing;\n _this.altitude = altitude;\n _this.center = center;\n _this.unitsPerMeter = getDistanceScales(_assertThisInitialized(_this)).unitsPerMeter[2];\n Object.freeze(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(WebMercatorViewport, [{\n key: \"projectFlat\",\n value: function projectFlat(lngLat) {\n return lngLatToWorld(lngLat);\n }\n }, {\n key: \"unprojectFlat\",\n value: function unprojectFlat(xy) {\n return worldToLngLat(xy);\n }\n }, {\n key: \"getMapCenterByLngLatPosition\",\n value: function getMapCenterByLngLatPosition(_ref2) {\n var lngLat = _ref2.lngLat,\n pos = _ref2.pos;\n var fromLocation = pixelsToWorld(pos, this.pixelUnprojectionMatrix);\n var toLocation = lngLatToWorld(lngLat);\n var translate = vec2.add([], toLocation, vec2.negate([], fromLocation));\n var newCenter = vec2.add([], this.center, translate);\n return worldToLngLat(newCenter, this.scale);\n }\n }, {\n key: \"getLocationAtPoint\",\n value: function getLocationAtPoint(_ref3) {\n var lngLat = _ref3.lngLat,\n pos = _ref3.pos;\n return this.getMapCenterByLngLatPosition({\n lngLat: lngLat,\n pos: pos\n });\n }\n }, {\n key: \"fitBounds\",\n value: function fitBounds(bounds) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = this.width,\n height = this.height;\n\n var _fitBounds2 = _fitBounds(Object.assign({\n width: width,\n height: height,\n bounds: bounds\n }, options)),\n longitude = _fitBounds2.longitude,\n latitude = _fitBounds2.latitude,\n zoom = _fitBounds2.zoom;\n\n return new WebMercatorViewport({\n width: width,\n height: height,\n longitude: longitude,\n latitude: latitude,\n zoom: zoom\n });\n }\n }]);\n\n return WebMercatorViewport;\n}(Viewport);\n\nexport { WebMercatorViewport as default };\n//# sourceMappingURL=web-mercator-viewport.js.map","// View and Projection Matrix calculations for mapbox-js style map view properties\nimport Viewport from './viewport';\n\nimport {\n zoomToScale,\n pixelsToWorld,\n lngLatToWorld,\n worldToLngLat,\n getProjectionMatrix,\n getDistanceScales,\n getViewMatrix\n} from './web-mercator-utils';\nimport fitBounds from './fit-bounds';\n\nimport * as vec2 from 'gl-matrix/vec2';\n\nexport default class WebMercatorViewport extends Viewport {\n /**\n * @classdesc\n * Creates view/projection matrices from mercator params\n * Note: The Viewport is immutable in the sense that it only has accessors.\n * A new viewport instance should be created if any parameters have changed.\n *\n * @class\n * @param {Object} opt - options\n *\n * @param {Number} opt.width=1 - Width of \"viewport\" or window\n * @param {Number} opt.height=1 - Height of \"viewport\" or window\n * @param {Number} opt.scale=1 - Either use scale or zoom\n * @param {Number} opt.pitch=0 - Camera angle in degrees (0 is straight down)\n * @param {Number} opt.bearing=0 - Map rotation in degrees (0 means north is up)\n * @param {Number} opt.altitude= - Altitude of camera in screen units\n *\n * Web mercator projection short-hand parameters\n * @param {Number} opt.latitude - Center of viewport on map (alternative to opt.center)\n * @param {Number} opt.longitude - Center of viewport on map (alternative to opt.center)\n * @param {Number} opt.zoom - Scale = Math.pow(2,zoom) on map (alternative to opt.scale)\n\n * Notes:\n * - Only one of center or [latitude, longitude] can be specified\n * - [latitude, longitude] can only be specified when \"mercator\" is true\n * - Altitude has a default value that matches assumptions in mapbox-gl\n * - width and height are forced to 1 if supplied as 0, to avoid\n * division by zero. This is intended to reduce the burden of apps to\n * to check values before instantiating a Viewport.\n */\n /* eslint-disable complexity */\n constructor({\n // Map state\n width,\n height,\n latitude = 0,\n longitude = 0,\n zoom = 0,\n pitch = 0,\n bearing = 0,\n altitude = 1.5,\n nearZMultiplier = 0.02,\n farZMultiplier = 1.01\n } = {}) {\n // Silently allow apps to send in 0,0 to facilitate isomorphic render etc\n width = width || 1;\n height = height || 1;\n\n const scale = zoomToScale(zoom);\n // Altitude - prevent division by 0\n // TODO - just throw an Error instead?\n altitude = Math.max(0.75, altitude);\n\n const center = lngLatToWorld([longitude, latitude]);\n center[2] = 0;\n\n const projectionMatrix = getProjectionMatrix({\n width,\n height,\n pitch,\n bearing,\n altitude,\n nearZMultiplier,\n farZMultiplier\n });\n\n const viewMatrix = getViewMatrix({\n height,\n scale,\n center,\n pitch,\n bearing,\n altitude\n });\n\n super({width, height, scale, viewMatrix, projectionMatrix});\n\n // Save parameters\n this.latitude = latitude;\n this.longitude = longitude;\n this.zoom = zoom;\n this.pitch = pitch;\n this.bearing = bearing;\n this.altitude = altitude;\n\n this.center = center;\n this.unitsPerMeter = getDistanceScales(this).unitsPerMeter[2];\n\n Object.freeze(this);\n }\n /* eslint-enable complexity */\n\n /**\n * Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n * Performs the nonlinear part of the web mercator projection.\n * Remaining projection is done with 4x4 matrices which also handles\n * perspective.\n *\n * @param {Array} lngLat - [lng, lat] coordinates\n * Specifies a point on the sphere to project onto the map.\n * @return {Array} [x,y] coordinates.\n */\n projectFlat(lngLat) {\n return lngLatToWorld(lngLat);\n }\n\n /**\n * Unproject world point [x,y] on map onto {lat, lon} on sphere\n *\n * @param {object|Vector} xy - object with {x,y} members\n * representing point on projected map plane\n * @return {GeoCoordinates} - object with {lat,lon} of point on sphere.\n * Has toArray method if you need a GeoJSON Array.\n * Per cartographic tradition, lat and lon are specified as degrees.\n */\n unprojectFlat(xy) {\n return worldToLngLat(xy);\n }\n\n /**\n * Get the map center that place a given [lng, lat] coordinate at screen\n * point [x, y]\n *\n * @param {Array} lngLat - [lng,lat] coordinates\n * Specifies a point on the sphere.\n * @param {Array} pos - [x,y] coordinates\n * Specifies a point on the screen.\n * @return {Array} [lng,lat] new map center.\n */\n getMapCenterByLngLatPosition({lngLat, pos}) {\n const fromLocation = pixelsToWorld(pos, this.pixelUnprojectionMatrix);\n const toLocation = lngLatToWorld(lngLat);\n\n const translate = vec2.add([], toLocation, vec2.negate([], fromLocation));\n const newCenter = vec2.add([], this.center, translate);\n\n return worldToLngLat(newCenter, this.scale);\n }\n\n // Legacy method name\n getLocationAtPoint({lngLat, pos}) {\n return this.getMapCenterByLngLatPosition({lngLat, pos});\n }\n\n /**\n * Returns a new viewport that fit around the given rectangle.\n * Only supports non-perspective mode.\n * @param {Array} bounds - [[lon, lat], [lon, lat]]\n * @param {Number} [options.padding] - The amount of padding in pixels to add to the given bounds.\n * @param {Array} [options.offset] - The center of the given bounds relative to the map's center,\n * [x, y] measured in pixels.\n * @returns {WebMercatorViewport}\n */\n fitBounds(bounds, options = {}) {\n const {width, height} = this;\n const {longitude, latitude, zoom} = fitBounds(Object.assign({width, height, bounds}, options));\n return new WebMercatorViewport({width, height, longitude, latitude, zoom});\n }\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport { createMat4 } from './math-utils';\nimport { worldToPixels, pixelsToWorld } from './web-mercator-utils';\nimport * as mat4 from 'gl-matrix/mat4';\nvar IDENTITY = createMat4();\n\nvar Viewport = function () {\n function Viewport() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n width = _ref.width,\n height = _ref.height,\n scale = _ref.scale,\n _ref$viewMatrix = _ref.viewMatrix,\n viewMatrix = _ref$viewMatrix === void 0 ? IDENTITY : _ref$viewMatrix,\n _ref$projectionMatrix = _ref.projectionMatrix,\n projectionMatrix = _ref$projectionMatrix === void 0 ? IDENTITY : _ref$projectionMatrix;\n\n _classCallCheck(this, Viewport);\n\n this.width = width || 1;\n this.height = height || 1;\n this.scale = scale;\n this.unitsPerMeter = 1;\n this.viewMatrix = viewMatrix;\n this.projectionMatrix = projectionMatrix;\n var vpm = createMat4();\n mat4.multiply(vpm, vpm, this.projectionMatrix);\n mat4.multiply(vpm, vpm, this.viewMatrix);\n this.viewProjectionMatrix = vpm;\n var m = createMat4();\n mat4.scale(m, m, [this.width / 2, -this.height / 2, 1]);\n mat4.translate(m, m, [1, -1, 0]);\n mat4.multiply(m, m, this.viewProjectionMatrix);\n var mInverse = mat4.invert(createMat4(), m);\n\n if (!mInverse) {\n throw new Error('Pixel project matrix not invertible');\n }\n\n this.pixelProjectionMatrix = m;\n this.pixelUnprojectionMatrix = mInverse;\n this.equals = this.equals.bind(this);\n this.project = this.project.bind(this);\n this.unproject = this.unproject.bind(this);\n this.projectPosition = this.projectPosition.bind(this);\n this.unprojectPosition = this.unprojectPosition.bind(this);\n this.projectFlat = this.projectFlat.bind(this);\n this.unprojectFlat = this.unprojectFlat.bind(this);\n }\n\n _createClass(Viewport, [{\n key: \"equals\",\n value: function equals(viewport) {\n if (!(viewport instanceof Viewport)) {\n return false;\n }\n\n return viewport.width === this.width && viewport.height === this.height && mat4.equals(viewport.projectionMatrix, this.projectionMatrix) && mat4.equals(viewport.viewMatrix, this.viewMatrix);\n }\n }, {\n key: \"project\",\n value: function project(xyz) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$topLeft = _ref2.topLeft,\n topLeft = _ref2$topLeft === void 0 ? true : _ref2$topLeft;\n\n var worldPosition = this.projectPosition(xyz);\n var coord = worldToPixels(worldPosition, this.pixelProjectionMatrix);\n\n var _coord = _slicedToArray(coord, 2),\n x = _coord[0],\n y = _coord[1];\n\n var y2 = topLeft ? y : this.height - y;\n return xyz.length === 2 ? [x, y2] : [x, y2, coord[2]];\n }\n }, {\n key: \"unproject\",\n value: function unproject(xyz) {\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref3$topLeft = _ref3.topLeft,\n topLeft = _ref3$topLeft === void 0 ? true : _ref3$topLeft,\n targetZ = _ref3.targetZ;\n\n var _xyz = _slicedToArray(xyz, 3),\n x = _xyz[0],\n y = _xyz[1],\n z = _xyz[2];\n\n var y2 = topLeft ? y : this.height - y;\n var targetZWorld = targetZ && targetZ * this.unitsPerMeter;\n var coord = pixelsToWorld([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n\n var _this$unprojectPositi = this.unprojectPosition(coord),\n _this$unprojectPositi2 = _slicedToArray(_this$unprojectPositi, 3),\n X = _this$unprojectPositi2[0],\n Y = _this$unprojectPositi2[1],\n Z = _this$unprojectPositi2[2];\n\n if (Number.isFinite(z)) {\n return [X, Y, Z];\n }\n\n return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n }\n }, {\n key: \"projectPosition\",\n value: function projectPosition(xyz) {\n var _this$projectFlat = this.projectFlat(xyz),\n _this$projectFlat2 = _slicedToArray(_this$projectFlat, 2),\n X = _this$projectFlat2[0],\n Y = _this$projectFlat2[1];\n\n var Z = (xyz[2] || 0) * this.unitsPerMeter;\n return [X, Y, Z];\n }\n }, {\n key: \"unprojectPosition\",\n value: function unprojectPosition(xyz) {\n var _this$unprojectFlat = this.unprojectFlat(xyz),\n _this$unprojectFlat2 = _slicedToArray(_this$unprojectFlat, 2),\n X = _this$unprojectFlat2[0],\n Y = _this$unprojectFlat2[1];\n\n var Z = (xyz[2] || 0) / this.unitsPerMeter;\n return [X, Y, Z];\n }\n }, {\n key: \"projectFlat\",\n value: function projectFlat(xyz) {\n var scale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.scale;\n return xyz;\n }\n }, {\n key: \"unprojectFlat\",\n value: function unprojectFlat(xyz) {\n var scale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.scale;\n return xyz;\n }\n }]);\n\n return Viewport;\n}();\n\nexport { Viewport as default };\n//# sourceMappingURL=viewport.js.map","// View and Projection Matrix management\n\nimport {createMat4} from './math-utils';\nimport {worldToPixels, pixelsToWorld} from './web-mercator-utils';\n\nimport * as mat4 from 'gl-matrix/mat4';\n\nconst IDENTITY = createMat4();\n\nexport default class Viewport {\n /**\n * @classdesc\n * Manages coordinate system transformations for deck.gl.\n *\n * Note: The Viewport is immutable in the sense that it only has accessors.\n * A new viewport instance should be created if any parameters have changed.\n *\n * @class\n * @param {Object} opt - options\n * @param {Boolean} mercator=true - Whether to use mercator projection\n *\n * @param {Number} opt.width=1 - Width of \"viewport\" or window\n * @param {Number} opt.height=1 - Height of \"viewport\" or window\n * @param {Array} opt.center=[0, 0] - Center of viewport\n * [longitude, latitude] or [x, y]\n * @param {Number} opt.scale=1 - Either use scale or zoom\n * @param {Number} opt.pitch=0 - Camera angle in degrees (0 is straight down)\n * @param {Number} opt.bearing=0 - Map rotation in degrees (0 means north is up)\n * @param {Number} opt.altitude= - Altitude of camera in screen units\n *\n * Web mercator projection short-hand parameters\n * @param {Number} opt.latitude - Center of viewport on map (alternative to opt.center)\n * @param {Number} opt.longitude - Center of viewport on map (alternative to opt.center)\n * @param {Number} opt.zoom - Scale = Math.pow(2,zoom) on map (alternative to opt.scale)\n */\n // eslint-disable-next-line complexity, max-statements\n constructor({\n // Window width/height in pixels (for pixel projection)\n width,\n height,\n scale,\n // Desc\n viewMatrix = IDENTITY,\n projectionMatrix = IDENTITY\n } = {}) {\n // Silently allow apps to send in 0,0\n this.width = width || 1;\n this.height = height || 1;\n this.scale = scale;\n this.unitsPerMeter = 1;\n\n this.viewMatrix = viewMatrix;\n this.projectionMatrix = projectionMatrix;\n\n // Note: As usual, matrix operations should be applied in \"reverse\" order\n // since vectors will be multiplied in from the right during transformation\n const vpm = createMat4();\n mat4.multiply(vpm, vpm, this.projectionMatrix);\n mat4.multiply(vpm, vpm, this.viewMatrix);\n this.viewProjectionMatrix = vpm;\n\n // Calculate matrices and scales needed for projection\n /**\n * Builds matrices that converts preprojected lngLats to screen pixels\n * and vice versa.\n * Note: Currently returns bottom-left coordinates!\n * Note: Starts with the GL projection matrix and adds steps to the\n * scale and translate that matrix onto the window.\n * Note: WebGL controls clip space to screen projection with gl.viewport\n * and does not need this step.\n */\n const m = createMat4();\n\n // matrix for conversion from location to screen coordinates\n mat4.scale(m, m, [this.width / 2, -this.height / 2, 1]);\n mat4.translate(m, m, [1, -1, 0]);\n\n mat4.multiply(m, m, this.viewProjectionMatrix);\n\n const mInverse = mat4.invert(createMat4(), m);\n if (!mInverse) {\n throw new Error('Pixel project matrix not invertible');\n }\n\n this.pixelProjectionMatrix = m;\n this.pixelUnprojectionMatrix = mInverse;\n\n // Bind methods for easy access\n this.equals = this.equals.bind(this);\n this.project = this.project.bind(this);\n this.unproject = this.unproject.bind(this);\n this.projectPosition = this.projectPosition.bind(this);\n this.unprojectPosition = this.unprojectPosition.bind(this);\n this.projectFlat = this.projectFlat.bind(this);\n this.unprojectFlat = this.unprojectFlat.bind(this);\n }\n /* eslint-enable complexity */\n\n // Two viewports are equal if width and height are identical, and if\n // their view and projection matrices are (approximately) equal.\n equals(viewport) {\n if (!(viewport instanceof Viewport)) {\n return false;\n }\n\n return (\n viewport.width === this.width &&\n viewport.height === this.height &&\n mat4.equals(viewport.projectionMatrix, this.projectionMatrix) &&\n mat4.equals(viewport.viewMatrix, this.viewMatrix)\n );\n }\n\n /**\n * Projects xyz (possibly latitude and longitude) to pixel coordinates in window\n * using viewport projection parameters\n * - [longitude, latitude] to [x, y]\n * - [longitude, latitude, Z] => [x, y, z]\n * Note: By default, returns top-left coordinates for canvas/SVG type render\n *\n * @param {Array} lngLatZ - [lng, lat] or [lng, lat, Z]\n * @param {Object} opts - options\n * @param {Object} opts.topLeft=true - Whether projected coords are top left\n * @return {Array} - screen coordinates [x, y] or [x, y, z], z as pixel depth\n */\n project(xyz, {topLeft = true} = {}) {\n const worldPosition = this.projectPosition(xyz);\n const coord = worldToPixels(worldPosition, this.pixelProjectionMatrix);\n\n const [x, y] = coord;\n const y2 = topLeft ? y : this.height - y;\n return xyz.length === 2 ? [x, y2] : [x, y2, coord[2]];\n }\n\n /**\n * Unproject pixel coordinates on screen onto world coordinates,\n * (possibly [lon, lat]) on map.\n * - [x, y] => [lng, lat]\n * - [x, y, z] => [lng, lat, Z]\n * @param {Array} xyz - screen coordinates, z as pixel depth\n * @param {Object} opts - options\n * @param {Object} opts.topLeft=true - Whether projected coords are top left\n * @param {Object} opts.targetZ=0 - If pixel depth is unknown, targetZ is used as\n * the elevation plane to unproject onto\n * @return {Array} - [lng, lat, Z] or [X, Y, Z]\n */\n unproject(xyz, {topLeft = true, targetZ} = {}) {\n const [x, y, z] = xyz;\n\n const y2 = topLeft ? y : this.height - y;\n const targetZWorld = targetZ && targetZ * this.unitsPerMeter;\n const coord = pixelsToWorld([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n const [X, Y, Z] = this.unprojectPosition(coord);\n\n if (Number.isFinite(z)) {\n return [X, Y, Z];\n }\n return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n }\n\n // NON_LINEAR PROJECTION HOOKS\n // Used for web meractor projection\n\n projectPosition(xyz) {\n const [X, Y] = this.projectFlat(xyz);\n const Z = (xyz[2] || 0) * this.unitsPerMeter;\n return [X, Y, Z];\n }\n\n unprojectPosition(xyz) {\n const [X, Y] = this.unprojectFlat(xyz);\n const Z = (xyz[2] || 0) / this.unitsPerMeter;\n return [X, Y, Z];\n }\n\n /**\n * Project map coordinates to world coordinates.\n * This should be overridden by each viewport that implements a specific\n * geographic projection.\n * @param {Array} xyz - map coordinates\n * @return {Array} [x,y,z] world coordinates.\n */\n projectFlat(xyz, scale = this.scale) {\n return xyz;\n }\n\n /**\n * Project world coordinates to map coordinates.\n * This should be overridden by each viewport that implements a specific\n * geographic projection.\n * @param {Array} xyz - world coordinates\n * @return {Array} [x,y,z] map coordinates.\n */\n unprojectFlat(xyz, scale = this.scale) {\n return xyz;\n }\n}\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import * as vec4 from 'gl-matrix/vec4';\nexport function createMat4() {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\nexport function transformVector(matrix, vector) {\n var result = vec4.transformMat4([], vector, matrix);\n vec4.scale(result, result, 1 / result[3]);\n return result;\n}\nexport function mod(value, divisor) {\n var modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\nexport function lerp(start, end, step) {\n return step * end + (1 - step) * start;\n}\n//# sourceMappingURL=math-utils.js.map","import * as vec4 from 'gl-matrix/vec4';\n\n// Helper, avoids low-precision 32 bit matrices from gl-matrix mat4.create()\nexport function createMat4() {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\n\n// Transforms a vec4 with a projection matrix\nexport function transformVector(matrix, vector) {\n const result = vec4.transformMat4([], vector, matrix);\n vec4.scale(result, result, 1 / result[3]);\n return result;\n}\n\nexport function mod(value, divisor) {\n const modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\n\nexport function lerp(start, end, step) {\n return step * end + (1 - step) * start;\n}\n","import * as glMatrix from \"./common.js\";\n/**\r\n * 4 Dimensional Vector\r\n * @module vec4\r\n */\n\n/**\r\n * Creates a new, empty vec4\r\n *\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(4);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec4 initialized with values from an existing vector\r\n *\r\n * @param {vec4} a vector to clone\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\r\n * Creates a new vec4 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {vec4} a new 4D vector\r\n */\n\nexport function fromValues(x, y, z, w) {\n var out = new glMatrix.ARRAY_TYPE(4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\r\n * Copy the values from one vec4 to another\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the source vector\r\n * @returns {vec4} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\r\n * Set the components of a vec4 to the given values\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @param {Number} w W component\r\n * @returns {vec4} out\r\n */\n\nexport function set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\r\n * Adds two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\r\n * Multiplies two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\r\n * Divides two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to ceil\r\n * @returns {vec4} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to floor\r\n * @returns {vec4} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {vec4} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\r\n * Math.round the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to round\r\n * @returns {vec4} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\r\n * Scales a vec4 by a scalar number\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec4} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\r\n * Adds two vec4's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec4} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec4's\r\n *\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec4's\r\n *\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\r\n * Calculates the length of a vec4\r\n *\r\n * @param {vec4} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\r\n * Calculates the squared length of a vec4\r\n *\r\n * @param {vec4} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\r\n * Negates the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to negate\r\n * @returns {vec4} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to invert\r\n * @returns {vec4} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\r\n * Normalize a vec4\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a vector to normalize\r\n * @returns {vec4} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec4's\r\n *\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\r\n * Returns the cross-product of three vectors in a 4-dimensional space\r\n *\r\n * @param {vec4} result the receiving vector\r\n * @param {vec4} U the first vector\r\n * @param {vec4} V the second vector\r\n * @param {vec4} W the third vector\r\n * @returns {vec4} result\r\n */\n\nexport function cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec4's\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the first operand\r\n * @param {vec4} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec4} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec4} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = glMatrix.RANDOM() * 2 - 1;\n v2 = glMatrix.RANDOM() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = glMatrix.RANDOM() * 2 - 1;\n v4 = glMatrix.RANDOM() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\r\n * Transforms the vec4 with a mat4.\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the vector to transform\r\n * @param {mat4} m matrix to transform with\r\n * @returns {vec4} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\r\n * Transforms the vec4 with a quat\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @param {vec4} a the vector to transform\r\n * @param {quat} q quaternion to transform with\r\n * @returns {vec4} out\r\n */\n\nexport function transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\r\n * Set the components of a vec4 to zero\r\n *\r\n * @param {vec4} out the receiving vector\r\n * @returns {vec4} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {vec4} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\r\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {vec4} a The first vector.\r\n * @param {vec4} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {vec4} a The first vector.\r\n * @param {vec4} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\r\n * Alias for {@link vec4.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec4.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec4.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec4.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec4.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec4.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec4.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec4s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();","/**\r\n * Common utilities\r\n * @module glMatrix\r\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\r\n * Sets the type of array used when creating new vectors and matrices\r\n *\r\n * @param {Type} type Array type, such as Float32Array or Array\r\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\r\n * Convert Degree To Radian\r\n *\r\n * @param {Number} a Angle in Degrees\r\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\r\n * Tests whether or not the arguments have approximately the same value, within an absolute\r\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\r\n * than or equal to 1.0, and a relative tolerance is used for larger values)\r\n *\r\n * @param {Number} a The first number to test.\r\n * @param {Number} b The second number to test.\r\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { createMat4, transformVector } from './math-utils';\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport assert from './assert';\nvar PI = Math.PI;\nvar PI_4 = PI / 4;\nvar DEGREES_TO_RADIANS = PI / 180;\nvar RADIANS_TO_DEGREES = 180 / PI;\nvar TILE_SIZE = 512;\nvar EARTH_CIRCUMFERENCE = 40.03e6;\nvar DEFAULT_ALTITUDE = 1.5;\nexport function zoomToScale(zoom) {\n return Math.pow(2, zoom);\n}\nexport function scaleToZoom(scale) {\n return Math.log2(scale);\n}\nexport function lngLatToWorld(_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n lng = _ref2[0],\n lat = _ref2[1];\n\n assert(Number.isFinite(lng));\n assert(Number.isFinite(lat) && lat >= -90 && lat <= 90, 'invalid latitude');\n var lambda2 = lng * DEGREES_TO_RADIANS;\n var phi2 = lat * DEGREES_TO_RADIANS;\n var x = TILE_SIZE * (lambda2 + PI) / (2 * PI);\n var y = TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5))) / (2 * PI);\n return [x, y];\n}\nexport function worldToLngLat(_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n x = _ref4[0],\n y = _ref4[1];\n\n var lambda2 = x / TILE_SIZE * (2 * PI) - PI;\n var phi2 = 2 * (Math.atan(Math.exp(y / TILE_SIZE * (2 * PI) - PI)) - PI_4);\n return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];\n}\nexport function getMeterZoom(_ref5) {\n var latitude = _ref5.latitude;\n assert(Number.isFinite(latitude));\n var latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\nexport function getDistanceScales(_ref6) {\n var latitude = _ref6.latitude,\n longitude = _ref6.longitude,\n _ref6$highPrecision = _ref6.highPrecision,\n highPrecision = _ref6$highPrecision === void 0 ? false : _ref6$highPrecision;\n assert(Number.isFinite(latitude) && Number.isFinite(longitude));\n var result = {};\n var worldSize = TILE_SIZE;\n var latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n var unitsPerDegreeX = worldSize / 360;\n var unitsPerDegreeY = unitsPerDegreeX / latCosine;\n var altUnitsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;\n result.unitsPerMeter = [altUnitsPerMeter, altUnitsPerMeter, altUnitsPerMeter];\n result.metersPerUnit = [1 / altUnitsPerMeter, 1 / altUnitsPerMeter, 1 / altUnitsPerMeter];\n result.unitsPerDegree = [unitsPerDegreeX, unitsPerDegreeY, altUnitsPerMeter];\n result.degreesPerUnit = [1 / unitsPerDegreeX, 1 / unitsPerDegreeY, 1 / altUnitsPerMeter];\n\n if (highPrecision) {\n var latCosine2 = DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS) / latCosine;\n var unitsPerDegreeY2 = unitsPerDegreeX * latCosine2 / 2;\n var altUnitsPerDegree2 = worldSize / EARTH_CIRCUMFERENCE * latCosine2;\n var altUnitsPerMeter2 = altUnitsPerDegree2 / unitsPerDegreeY * altUnitsPerMeter;\n result.unitsPerDegree2 = [0, unitsPerDegreeY2, altUnitsPerDegree2];\n result.unitsPerMeter2 = [altUnitsPerMeter2, 0, altUnitsPerMeter2];\n }\n\n return result;\n}\nexport function addMetersToLngLat(lngLatZ, xyz) {\n var _lngLatZ = _slicedToArray(lngLatZ, 3),\n longitude = _lngLatZ[0],\n latitude = _lngLatZ[1],\n z0 = _lngLatZ[2];\n\n var _xyz = _slicedToArray(xyz, 3),\n x = _xyz[0],\n y = _xyz[1],\n z = _xyz[2];\n\n var _getDistanceScales = getDistanceScales({\n longitude: longitude,\n latitude: latitude,\n highPrecision: true\n }),\n unitsPerMeter = _getDistanceScales.unitsPerMeter,\n unitsPerMeter2 = _getDistanceScales.unitsPerMeter2;\n\n var worldspace = lngLatToWorld(lngLatZ);\n worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n var newLngLat = worldToLngLat(worldspace);\n var newZ = (z0 || 0) + (z || 0);\n return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;\n}\nexport function getViewMatrix(_ref7) {\n var height = _ref7.height,\n pitch = _ref7.pitch,\n bearing = _ref7.bearing,\n altitude = _ref7.altitude,\n scale = _ref7.scale,\n _ref7$center = _ref7.center,\n center = _ref7$center === void 0 ? null : _ref7$center;\n var vm = createMat4();\n mat4.translate(vm, vm, [0, 0, -altitude]);\n mat4.rotateX(vm, vm, -pitch * DEGREES_TO_RADIANS);\n mat4.rotateZ(vm, vm, bearing * DEGREES_TO_RADIANS);\n scale /= height;\n mat4.scale(vm, vm, [scale, scale, scale]);\n\n if (center) {\n mat4.translate(vm, vm, vec3.negate([], center));\n }\n\n return vm;\n}\nexport function getProjectionParameters(_ref8) {\n var width = _ref8.width,\n height = _ref8.height,\n _ref8$altitude = _ref8.altitude,\n altitude = _ref8$altitude === void 0 ? DEFAULT_ALTITUDE : _ref8$altitude,\n _ref8$pitch = _ref8.pitch,\n pitch = _ref8$pitch === void 0 ? 0 : _ref8$pitch,\n _ref8$nearZMultiplier = _ref8.nearZMultiplier,\n nearZMultiplier = _ref8$nearZMultiplier === void 0 ? 1 : _ref8$nearZMultiplier,\n _ref8$farZMultiplier = _ref8.farZMultiplier,\n farZMultiplier = _ref8$farZMultiplier === void 0 ? 1 : _ref8$farZMultiplier;\n var pitchRadians = pitch * DEGREES_TO_RADIANS;\n var halfFov = Math.atan(0.5 / altitude);\n var topHalfSurfaceDistance = Math.sin(halfFov) * altitude / Math.sin(Math.PI / 2 - pitchRadians - halfFov);\n var farZ = Math.cos(Math.PI / 2 - pitchRadians) * topHalfSurfaceDistance + altitude;\n return {\n fov: 2 * halfFov,\n aspect: width / height,\n focalDistance: altitude,\n near: nearZMultiplier,\n far: farZ * farZMultiplier\n };\n}\nexport function getProjectionMatrix(_ref9) {\n var width = _ref9.width,\n height = _ref9.height,\n pitch = _ref9.pitch,\n altitude = _ref9.altitude,\n nearZMultiplier = _ref9.nearZMultiplier,\n farZMultiplier = _ref9.farZMultiplier;\n\n var _getProjectionParamet = getProjectionParameters({\n width: width,\n height: height,\n altitude: altitude,\n pitch: pitch,\n nearZMultiplier: nearZMultiplier,\n farZMultiplier: farZMultiplier\n }),\n fov = _getProjectionParamet.fov,\n aspect = _getProjectionParamet.aspect,\n near = _getProjectionParamet.near,\n far = _getProjectionParamet.far;\n\n var projectionMatrix = mat4.perspective([], fov, aspect, near, far);\n return projectionMatrix;\n}\nexport function worldToPixels(xyz, pixelProjectionMatrix) {\n var _xyz2 = _slicedToArray(xyz, 3),\n x = _xyz2[0],\n y = _xyz2[1],\n _xyz2$ = _xyz2[2],\n z = _xyz2$ === void 0 ? 0 : _xyz2$;\n\n assert(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n return transformVector(pixelProjectionMatrix, [x, y, z, 1]);\n}\nexport function pixelsToWorld(xyz, pixelUnprojectionMatrix) {\n var targetZ = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n var _xyz3 = _slicedToArray(xyz, 3),\n x = _xyz3[0],\n y = _xyz3[1],\n z = _xyz3[2];\n\n assert(Number.isFinite(x) && Number.isFinite(y), 'invalid pixel coordinate');\n\n if (Number.isFinite(z)) {\n var coord = transformVector(pixelUnprojectionMatrix, [x, y, z, 1]);\n return coord;\n }\n\n var coord0 = transformVector(pixelUnprojectionMatrix, [x, y, 0, 1]);\n var coord1 = transformVector(pixelUnprojectionMatrix, [x, y, 1, 1]);\n var z0 = coord0[2];\n var z1 = coord1[2];\n var t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n return vec2.lerp([], coord0, coord1, t);\n}\n//# sourceMappingURL=web-mercator-utils.js.map","// TODO - THE UTILITIES IN THIS FILE SHOULD BE IMPORTED FROM WEB-MERCATOR-VIEWPORT MODULE\n\nimport {createMat4, transformVector} from './math-utils';\n\nimport * as mat4 from 'gl-matrix/mat4';\nimport * as vec2 from 'gl-matrix/vec2';\nimport * as vec3 from 'gl-matrix/vec3';\nimport assert from './assert';\n\n// CONSTANTS\nconst PI = Math.PI;\nconst PI_4 = PI / 4;\nconst DEGREES_TO_RADIANS = PI / 180;\nconst RADIANS_TO_DEGREES = 180 / PI;\nconst TILE_SIZE = 512;\n// Average circumference (40075 km equatorial, 40007 km meridional)\nconst EARTH_CIRCUMFERENCE = 40.03e6;\n\n// Mapbox default altitude\nconst DEFAULT_ALTITUDE = 1.5;\n\n/** Util functions **/\nexport function zoomToScale(zoom) {\n return Math.pow(2, zoom);\n}\n\nexport function scaleToZoom(scale) {\n return Math.log2(scale);\n}\n\n/**\n * Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n * Performs the nonlinear part of the web mercator projection.\n * Remaining projection is done with 4x4 matrices which also handles\n * perspective.\n *\n * @param {Array} lngLat - [lng, lat] coordinates\n * Specifies a point on the sphere to project onto the map.\n * @return {Array} [x,y] coordinates.\n */\nexport function lngLatToWorld([lng, lat]) {\n assert(Number.isFinite(lng));\n assert(Number.isFinite(lat) && lat >= -90 && lat <= 90, 'invalid latitude');\n\n const lambda2 = lng * DEGREES_TO_RADIANS;\n const phi2 = lat * DEGREES_TO_RADIANS;\n const x = (TILE_SIZE * (lambda2 + PI)) / (2 * PI);\n const y = (TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5)))) / (2 * PI);\n return [x, y];\n}\n\n/**\n * Unproject world point [x,y] on map onto {lat, lon} on sphere\n *\n * @param {object|Vector} xy - object with {x,y} members\n * representing point on projected map plane\n * @return {GeoCoordinates} - object with {lat,lon} of point on sphere.\n * Has toArray method if you need a GeoJSON Array.\n * Per cartographic tradition, lat and lon are specified as degrees.\n */\nexport function worldToLngLat([x, y]) {\n const lambda2 = (x / TILE_SIZE) * (2 * PI) - PI;\n const phi2 = 2 * (Math.atan(Math.exp((y / TILE_SIZE) * (2 * PI) - PI)) - PI_4);\n return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];\n}\n\n// Returns the zoom level that gives a 1 meter pixel at a certain latitude\n// 1 = C*cos(y)/2^z/TILE_SIZE = C*cos(y)/2^(z+9)\nexport function getMeterZoom({latitude}) {\n assert(Number.isFinite(latitude));\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\n\n/**\n * Calculate distance scales in meters around current lat/lon, both for\n * degrees and pixels.\n * In mercator projection mode, the distance scales vary significantly\n * with latitude.\n */\n\nexport function getDistanceScales({latitude, longitude, highPrecision = false}) {\n assert(Number.isFinite(latitude) && Number.isFinite(longitude));\n\n const result = {};\n const worldSize = TILE_SIZE;\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n\n /**\n * Number of pixels occupied by one degree longitude around current lat/lon:\n unitsPerDegreeX = d(lngLatToWorld([lng, lat])[0])/d(lng)\n = scale * TILE_SIZE * DEGREES_TO_RADIANS / (2 * PI)\n unitsPerDegreeY = d(lngLatToWorld([lng, lat])[1])/d(lat)\n = -scale * TILE_SIZE * DEGREES_TO_RADIANS / cos(lat * DEGREES_TO_RADIANS) / (2 * PI)\n */\n const unitsPerDegreeX = worldSize / 360;\n const unitsPerDegreeY = unitsPerDegreeX / latCosine;\n\n /**\n * Number of pixels occupied by one meter around current lat/lon:\n */\n const altUnitsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;\n\n /**\n * LngLat: longitude -> east and latitude -> north (bottom left)\n * UTM meter offset: x -> east and y -> north (bottom left)\n * World space: x -> east and y -> south (top left)\n *\n * Y needs to be flipped when converting delta degree/meter to delta pixels\n */\n result.unitsPerMeter = [altUnitsPerMeter, altUnitsPerMeter, altUnitsPerMeter];\n result.metersPerUnit = [1 / altUnitsPerMeter, 1 / altUnitsPerMeter, 1 / altUnitsPerMeter];\n\n result.unitsPerDegree = [unitsPerDegreeX, unitsPerDegreeY, altUnitsPerMeter];\n result.degreesPerUnit = [1 / unitsPerDegreeX, 1 / unitsPerDegreeY, 1 / altUnitsPerMeter];\n\n /**\n * Taylor series 2nd order for 1/latCosine\n f'(a) * (x - a)\n = d(1/cos(lat * DEGREES_TO_RADIANS))/d(lat) * dLat\n = DEGREES_TO_RADIANS * tan(lat * DEGREES_TO_RADIANS) / cos(lat * DEGREES_TO_RADIANS) * dLat\n */\n if (highPrecision) {\n const latCosine2 = (DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS)) / latCosine;\n const unitsPerDegreeY2 = (unitsPerDegreeX * latCosine2) / 2;\n const altUnitsPerDegree2 = (worldSize / EARTH_CIRCUMFERENCE) * latCosine2;\n const altUnitsPerMeter2 = (altUnitsPerDegree2 / unitsPerDegreeY) * altUnitsPerMeter;\n\n result.unitsPerDegree2 = [0, unitsPerDegreeY2, altUnitsPerDegree2];\n result.unitsPerMeter2 = [altUnitsPerMeter2, 0, altUnitsPerMeter2];\n }\n\n // Main results, used for converting meters to latlng deltas and scaling offsets\n return result;\n}\n\n/**\n * Offset a lng/lat position by meterOffset (northing, easting)\n */\nexport function addMetersToLngLat(lngLatZ, xyz) {\n const [longitude, latitude, z0] = lngLatZ;\n const [x, y, z] = xyz;\n\n const {unitsPerMeter, unitsPerMeter2} = getDistanceScales({\n longitude,\n latitude,\n highPrecision: true\n });\n\n const worldspace = lngLatToWorld(lngLatZ);\n worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n\n const newLngLat = worldToLngLat(worldspace);\n const newZ = (z0 || 0) + (z || 0);\n\n return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;\n}\n\n// ATTRIBUTION:\n// view and projection matrix creation is intentionally kept compatible with\n// mapbox-gl's implementation to ensure that seamless interoperation\n// with mapbox and react-map-gl. See: https://github.com/mapbox/mapbox-gl-js\n\nexport function getViewMatrix({\n // Viewport props\n height,\n pitch,\n bearing,\n altitude,\n // Pre-calculated parameters\n scale,\n center = null\n}) {\n // VIEW MATRIX: PROJECTS MERCATOR WORLD COORDINATES\n // Note that mercator world coordinates typically need to be flipped\n //\n // Note: As usual, matrix operation orders should be read in reverse\n // since vectors will be multiplied from the right during transformation\n const vm = createMat4();\n\n // Move camera to altitude (along the pitch & bearing direction)\n mat4.translate(vm, vm, [0, 0, -altitude]);\n\n // Rotate by bearing, and then by pitch (which tilts the view)\n mat4.rotateX(vm, vm, -pitch * DEGREES_TO_RADIANS);\n mat4.rotateZ(vm, vm, bearing * DEGREES_TO_RADIANS);\n\n scale /= height;\n mat4.scale(vm, vm, [scale, scale, scale]);\n\n if (center) {\n mat4.translate(vm, vm, vec3.negate([], center));\n }\n\n return vm;\n}\n\n// PROJECTION MATRIX PARAMETERS\n// Variable fov (in radians)\nexport function getProjectionParameters({\n width,\n height,\n altitude = DEFAULT_ALTITUDE,\n pitch = 0,\n nearZMultiplier = 1,\n farZMultiplier = 1\n}) {\n // Find the distance from the center point to the center top\n // in altitude units using law of sines.\n const pitchRadians = pitch * DEGREES_TO_RADIANS;\n const halfFov = Math.atan(0.5 / altitude);\n const topHalfSurfaceDistance =\n (Math.sin(halfFov) * altitude) / Math.sin(Math.PI / 2 - pitchRadians - halfFov);\n\n // Calculate z value of the farthest fragment that should be rendered.\n const farZ = Math.cos(Math.PI / 2 - pitchRadians) * topHalfSurfaceDistance + altitude;\n\n return {\n fov: 2 * halfFov,\n aspect: width / height,\n focalDistance: altitude,\n near: nearZMultiplier,\n far: farZ * farZMultiplier\n };\n}\n\n// PROJECTION MATRIX: PROJECTS FROM CAMERA (VIEW) SPACE TO CLIPSPACE\n// To match mapbox's z buffer:\n// <= 0.28 - nearZMultiplier: 0.1, farZmultiplier: 1\n// >= 0.29 - nearZMultiplier: 1 / height, farZMultiplier: 1.01\nexport function getProjectionMatrix({\n width,\n height,\n pitch,\n altitude,\n nearZMultiplier,\n farZMultiplier\n}) {\n const {fov, aspect, near, far} = getProjectionParameters({\n width,\n height,\n altitude,\n pitch,\n nearZMultiplier,\n farZMultiplier\n });\n\n const projectionMatrix = mat4.perspective(\n [],\n fov, // fov in radians\n aspect, // aspect ratio\n near, // near plane\n far // far plane\n );\n\n return projectionMatrix;\n}\n\n/**\n * Project flat coordinates to pixels on screen.\n *\n * @param {Array} xyz - flat coordinate on 512*512 Mercator Zoom 0 tile\n * @param {Matrix4} pixelProjectionMatrix - projection matrix\n * @return {Array} [x, y, depth] pixel coordinate on screen.\n */\nexport function worldToPixels(xyz, pixelProjectionMatrix) {\n const [x, y, z = 0] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n\n return transformVector(pixelProjectionMatrix, [x, y, z, 1]);\n}\n\n/**\n * Unproject pixels on screen to flat coordinates.\n *\n * @param {Array} xyz - pixel coordinate on screen.\n * @param {Matrix4} pixelUnprojectionMatrix - unprojection matrix\n * @param {Number} targetZ - if pixel coordinate does not have a 3rd component (depth),\n * targetZ is used as the elevation plane to unproject onto\n * @return {Array} [x, y, Z] flat coordinates on 512*512 Mercator Zoom 0 tile.\n */\nexport function pixelsToWorld(xyz, pixelUnprojectionMatrix, targetZ = 0) {\n const [x, y, z] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y), 'invalid pixel coordinate');\n\n if (Number.isFinite(z)) {\n // Has depth component\n const coord = transformVector(pixelUnprojectionMatrix, [x, y, z, 1]);\n return coord;\n }\n\n // since we don't know the correct projected z value for the point,\n // unproject two points to get a line and then find the point on that line with z=0\n const coord0 = transformVector(pixelUnprojectionMatrix, [x, y, 0, 1]);\n const coord1 = transformVector(pixelUnprojectionMatrix, [x, y, 1, 1]);\n\n const z0 = coord0[2];\n const z1 = coord1[2];\n\n const t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n return vec2.lerp([], coord0, coord1, t);\n}\n","import * as glMatrix from \"./common.js\";\n/**\r\n * 4x4 Matrix
Format: column-major, when typed out it looks like row-major
The matrices are being post multiplied.\r\n * @module mat4\r\n */\n\n/**\r\n * Creates a new identity mat4\r\n *\r\n * @returns {mat4} a new 4x4 matrix\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(16);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a new mat4 initialized with values from an existing matrix\r\n *\r\n * @param {mat4} a matrix to clone\r\n * @returns {mat4} a new 4x4 matrix\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Copy the values from one mat4 to another\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Create a new mat4 with the given values\r\n *\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\r\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\r\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\r\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\r\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\r\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\r\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\r\n * @returns {mat4} A new mat4\r\n */\n\nexport function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new glMatrix.ARRAY_TYPE(16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\r\n * Set the components of a mat4 to the given values\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\r\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\r\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\r\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\r\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\r\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\r\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\r\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\r\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\r\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\r\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\r\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\r\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\r\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\r\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\r\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\r\n * @returns {mat4} out\r\n */\n\nexport function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\r\n * Set a mat4 to the identity matrix\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @returns {mat4} out\r\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Transpose the values of a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\r\n * Inverts a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\r\n * Calculates the adjugate of a mat4\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the source matrix\r\n * @returns {mat4} out\r\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\r\n * Calculates the determinant of a mat4\r\n *\r\n * @param {mat4} a the source matrix\r\n * @returns {Number} determinant of a\r\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\r\n * Multiplies two mat4s\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\r\n * Translate a mat4 by the given vector\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to translate\r\n * @param {vec3} v vector to translate by\r\n * @returns {mat4} out\r\n */\n\nexport function translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\r\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to scale\r\n * @param {vec3} v the vec3 to scale the matrix by\r\n * @returns {mat4} out\r\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\r\n * Rotates a mat4 by the given angle around the given axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @param {vec3} axis the axis to rotate around\r\n * @returns {mat4} out\r\n */\n\nexport function rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the X axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the Y axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\r\n * Rotates a matrix by the given angle around the Z axis\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to rotate\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\r\n * Creates a matrix from a vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, dest, vec);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {vec3} v Translation vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a vector scaling\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.scale(dest, dest, vec);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {vec3} v Scaling vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a given angle around a given axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotate(dest, dest, rad, axis);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @param {vec3} axis the axis to rotate around\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < glMatrix.EPSILON) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the X axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateX(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the Y axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateY(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from the given angle around the Z axis\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.rotateZ(dest, dest, rad);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {Number} rad the angle to rotate the matrix by\r\n * @returns {mat4} out\r\n */\n\nexport function fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation and vector translation\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {vec3} v Translation vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a new mat4 from a dual quat.\r\n *\r\n * @param {mat4} out Matrix\r\n * @param {quat2} a Dual Quaternion\r\n * @returns {mat4} mat4 receiving operation result\r\n */\n\nexport function fromQuat2(out, a) {\n var translation = new glMatrix.ARRAY_TYPE(3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\r\n * Returns the translation vector component of a transformation\r\n * matrix. If a matrix is built with fromRotationTranslation,\r\n * the returned vector will be the same as the translation vector\r\n * originally supplied.\r\n * @param {vec3} out Vector to receive translation component\r\n * @param {mat4} mat Matrix to be decomposed (input)\r\n * @return {vec3} out\r\n */\n\nexport function getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\r\n * Returns the scaling factor component of a transformation\r\n * matrix. If a matrix is built with fromRotationTranslationScale\r\n * with a normalized Quaternion paramter, the returned vector will be\r\n * the same as the scaling vector\r\n * originally supplied.\r\n * @param {vec3} out Vector to receive scaling factor component\r\n * @param {mat4} mat Matrix to be decomposed (input)\r\n * @return {vec3} out\r\n */\n\nexport function getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\r\n * Returns a quaternion representing the rotational component\r\n * of a transformation matrix. If a matrix is built with\r\n * fromRotationTranslation, the returned quaternion will be the\r\n * same as the quaternion originally supplied.\r\n * @param {quat} out Quaternion to receive the rotation component\r\n * @param {mat4} mat Matrix to be decomposed (input)\r\n * @return {quat} out\r\n */\n\nexport function getRotation(out, mat) {\n var scaling = new glMatrix.ARRAY_TYPE(3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n * mat4.scale(dest, scale)\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {vec3} v Translation vector\r\n * @param {vec3} s Scaling vector\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\r\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\r\n * This is equivalent to (but much faster than):\r\n *\r\n * mat4.identity(dest);\r\n * mat4.translate(dest, vec);\r\n * mat4.translate(dest, origin);\r\n * let quatMat = mat4.create();\r\n * quat4.toMat4(quat, quatMat);\r\n * mat4.multiply(dest, quatMat);\r\n * mat4.scale(dest, scale)\r\n * mat4.translate(dest, negativeOrigin);\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat4} q Rotation quaternion\r\n * @param {vec3} v Translation vector\r\n * @param {vec3} s Scaling vector\r\n * @param {vec3} o The origin vector around which to scale and rotate\r\n * @returns {mat4} out\r\n */\n\nexport function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\r\n * Calculates a 4x4 matrix from the given quaternion\r\n *\r\n * @param {mat4} out mat4 receiving operation result\r\n * @param {quat} q Quaternion to create matrix from\r\n *\r\n * @returns {mat4} out\r\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a frustum matrix with the given bounds\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {Number} left Left bound of the frustum\r\n * @param {Number} right Right bound of the frustum\r\n * @param {Number} bottom Bottom bound of the frustum\r\n * @param {Number} top Top bound of the frustum\r\n * @param {Number} near Near bound of the frustum\r\n * @param {Number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\r\n * Generates a perspective projection matrix with the given bounds.\r\n * Passing null/undefined/no value for far will generate infinite projection matrix.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {number} fovy Vertical field of view in radians\r\n * @param {number} aspect Aspect ratio. typically viewport width/height\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum, can be null or Infinity\r\n * @returns {mat4} out\r\n */\n\nexport function perspective(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\r\n * Generates a perspective projection matrix with the given field of view.\r\n * This is primarily useful for generating projection matrices to be used\r\n * with the still experiemental WebVR API.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\r\n * Generates a orthogonal projection matrix with the given bounds\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {number} left Left bound of the frustum\r\n * @param {number} right Right bound of the frustum\r\n * @param {number} bottom Bottom bound of the frustum\r\n * @param {number} top Top bound of the frustum\r\n * @param {number} near Near bound of the frustum\r\n * @param {number} far Far bound of the frustum\r\n * @returns {mat4} out\r\n */\n\nexport function ortho(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\r\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {vec3} eye Position of the viewer\r\n * @param {vec3} center Point the viewer is looking at\r\n * @param {vec3} up vec3 pointing up\r\n * @returns {mat4} out\r\n */\n\nexport function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\r\n * Generates a matrix that makes something look at something else.\r\n *\r\n * @param {mat4} out mat4 frustum matrix will be written into\r\n * @param {vec3} eye Position of the viewer\r\n * @param {vec3} center Point the viewer is looking at\r\n * @param {vec3} up vec3 pointing up\r\n * @returns {mat4} out\r\n */\n\nexport function targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\r\n * Returns a string representation of a mat4\r\n *\r\n * @param {mat4} a matrix to represent as a string\r\n * @returns {String} string representation of the matrix\r\n */\n\nexport function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\r\n * Returns Frobenius norm of a mat4\r\n *\r\n * @param {mat4} a the matrix to calculate Frobenius norm of\r\n * @returns {Number} Frobenius norm\r\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\r\n * Adds two mat4's\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\r\n * Subtracts matrix b from matrix a\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @returns {mat4} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\r\n * Multiply each element of the matrix by a scalar.\r\n *\r\n * @param {mat4} out the receiving matrix\r\n * @param {mat4} a the matrix to scale\r\n * @param {Number} b amount to scale the matrix's elements by\r\n * @returns {mat4} out\r\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\r\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\r\n *\r\n * @param {mat4} out the receiving vector\r\n * @param {mat4} a the first operand\r\n * @param {mat4} b the second operand\r\n * @param {Number} scale the amount to scale b's elements by before adding\r\n * @returns {mat4} out\r\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\r\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {mat4} a The first matrix.\r\n * @param {mat4} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\r\n * Returns whether or not the matrices have approximately the same elements in the same position.\r\n *\r\n * @param {mat4} a The first matrix.\r\n * @param {mat4} b The second matrix.\r\n * @returns {Boolean} True if the matrices are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\r\n * Alias for {@link mat4.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link mat4.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\r\n * 2 Dimensional Vector\r\n * @module vec2\r\n */\n\n/**\r\n * Creates a new, empty vec2\r\n *\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec2 initialized with values from an existing vector\r\n *\r\n * @param {vec2} a vector to clone\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\r\n * Creates a new vec2 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @returns {vec2} a new 2D vector\r\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\r\n * Copy the values from one vec2 to another\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the source vector\r\n * @returns {vec2} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\r\n * Set the components of a vec2 to the given values\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @returns {vec2} out\r\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\r\n * Adds two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\r\n * Multiplies two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\r\n * Divides two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to ceil\r\n * @returns {vec2} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to floor\r\n * @returns {vec2} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec2} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\r\n * Math.round the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to round\r\n * @returns {vec2} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\r\n * Scales a vec2 by a scalar number\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec2} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\r\n * Adds two vec2's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec2} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec2's\r\n *\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec2's\r\n *\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\r\n * Calculates the length of a vec2\r\n *\r\n * @param {vec2} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\r\n * Calculates the squared length of a vec2\r\n *\r\n * @param {vec2} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\r\n * Negates the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to negate\r\n * @returns {vec2} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to invert\r\n * @returns {vec2} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\r\n * Normalize a vec2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a vector to normalize\r\n * @returns {vec2} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec2's\r\n *\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\r\n * Computes the cross product of two vec2's\r\n * Note that the cross product must by definition produce a 3D vector\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec2's\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the first operand\r\n * @param {vec2} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec2} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec2} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat2\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat2} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat2d\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat2d} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat3\r\n * 3rd vector component is implicitly '1'\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat3} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\r\n * Transforms the vec2 with a mat4\r\n * 3rd vector component is implicitly '0'\r\n * 4th vector component is implicitly '1'\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @param {vec2} a the vector to transform\r\n * @param {mat4} m matrix to transform with\r\n * @returns {vec2} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\r\n * Rotate a 2D vector\r\n * @param {vec2} out The receiving vec2\r\n * @param {vec2} a The vec2 point to rotate\r\n * @param {vec2} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec2} out\r\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\r\n * Get the angle between two 2D vectors\r\n * @param {vec2} a The first operand\r\n * @param {vec2} b The second operand\r\n * @returns {Number} The angle in radians\r\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\r\n * Set the components of a vec2 to zero\r\n *\r\n * @param {vec2} out the receiving vector\r\n * @returns {vec2} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {vec2} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\r\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\r\n *\r\n * @param {vec2} a The first vector.\r\n * @param {vec2} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {vec2} a The first vector.\r\n * @param {vec2} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\r\n * Alias for {@link vec2.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec2.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec2.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec2.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec2.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec2.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec2.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec2s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","import * as glMatrix from \"./common.js\";\n/**\r\n * 3 Dimensional Vector\r\n * @module vec3\r\n */\n\n/**\r\n * Creates a new, empty vec3\r\n *\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\r\n * Creates a new vec3 initialized with values from an existing vector\r\n *\r\n * @param {vec3} a vector to clone\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\r\n * Calculates the length of a vec3\r\n *\r\n * @param {vec3} a vector to calculate length of\r\n * @returns {Number} length of a\r\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\r\n * Creates a new vec3 initialized with the given values\r\n *\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @returns {vec3} a new 3D vector\r\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\r\n * Copy the values from one vec3 to another\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the source vector\r\n * @returns {vec3} out\r\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\r\n * Set the components of a vec3 to the given values\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {Number} x X component\r\n * @param {Number} y Y component\r\n * @param {Number} z Z component\r\n * @returns {vec3} out\r\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\r\n * Adds two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\r\n * Subtracts vector b from vector a\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\r\n * Multiplies two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\r\n * Divides two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\r\n * Math.ceil the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to ceil\r\n * @returns {vec3} out\r\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\r\n * Math.floor the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to floor\r\n * @returns {vec3} out\r\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\r\n * Returns the minimum of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\r\n * Returns the maximum of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\r\n * Math.round the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to round\r\n * @returns {vec3} out\r\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\r\n * Scales a vec3 by a scalar number\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to scale\r\n * @param {Number} b amount to scale the vector by\r\n * @returns {vec3} out\r\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\r\n * Adds two vec3's after scaling the second operand by a scalar value\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {Number} scale the amount to scale b by before adding\r\n * @returns {vec3} out\r\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\r\n * Calculates the euclidian distance between two vec3's\r\n *\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {Number} distance between a and b\r\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\r\n * Calculates the squared euclidian distance between two vec3's\r\n *\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {Number} squared distance between a and b\r\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\r\n * Calculates the squared length of a vec3\r\n *\r\n * @param {vec3} a vector to calculate squared length of\r\n * @returns {Number} squared length of a\r\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\r\n * Negates the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to negate\r\n * @returns {vec3} out\r\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\r\n * Returns the inverse of the components of a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to invert\r\n * @returns {vec3} out\r\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\r\n * Normalize a vec3\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a vector to normalize\r\n * @returns {vec3} out\r\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\r\n * Calculates the dot product of two vec3's\r\n *\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {Number} dot product of a and b\r\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\r\n * Computes the cross product of two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @returns {vec3} out\r\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\r\n * Performs a linear interpolation between two vec3's\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\r\n * Performs a hermite interpolation with two control points\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {vec3} c the third operand\r\n * @param {vec3} d the fourth operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\r\n * Performs a bezier interpolation with two control points\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the first operand\r\n * @param {vec3} b the second operand\r\n * @param {vec3} c the third operand\r\n * @param {vec3} d the fourth operand\r\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\r\n * @returns {vec3} out\r\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\r\n * Generates a random vector with the given scale\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\r\n * @returns {vec3} out\r\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\r\n * Transforms the vec3 with a mat4.\r\n * 4th vector component is implicitly '1'\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to transform\r\n * @param {mat4} m matrix to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\r\n * Transforms the vec3 with a mat3.\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to transform\r\n * @param {mat3} m the 3x3 matrix to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\r\n * Transforms the vec3 with a quat\r\n * Can also be used for dual quaternions. (Multiply it with the real part)\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @param {vec3} a the vector to transform\r\n * @param {quat} q quaternion to transform with\r\n * @returns {vec3} out\r\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\r\n * Rotate a 3D vector around the x-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {vec3} a The vec3 point to rotate\r\n * @param {vec3} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec3} out\r\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Rotate a 3D vector around the y-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {vec3} a The vec3 point to rotate\r\n * @param {vec3} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec3} out\r\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Rotate a 3D vector around the z-axis\r\n * @param {vec3} out The receiving vec3\r\n * @param {vec3} a The vec3 point to rotate\r\n * @param {vec3} b The origin of the rotation\r\n * @param {Number} rad The angle of rotation in radians\r\n * @returns {vec3} out\r\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\r\n * Get the angle between two 3D vectors\r\n * @param {vec3} a The first operand\r\n * @param {vec3} b The second operand\r\n * @returns {Number} The angle in radians\r\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\r\n * Set the components of a vec3 to zero\r\n *\r\n * @param {vec3} out the receiving vector\r\n * @returns {vec3} out\r\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\r\n * Returns a string representation of a vector\r\n *\r\n * @param {vec3} a vector to represent as a string\r\n * @returns {String} string representation of the vector\r\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\r\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\r\n *\r\n * @param {vec3} a The first vector.\r\n * @param {vec3} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\r\n * Returns whether or not the vectors have approximately the same elements in the same position.\r\n *\r\n * @param {vec3} a The first vector.\r\n * @param {vec3} b The second vector.\r\n * @returns {Boolean} True if the vectors are equal, false otherwise.\r\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\r\n * Alias for {@link vec3.subtract}\r\n * @function\r\n */\n\nexport var sub = subtract;\n/**\r\n * Alias for {@link vec3.multiply}\r\n * @function\r\n */\n\nexport var mul = multiply;\n/**\r\n * Alias for {@link vec3.divide}\r\n * @function\r\n */\n\nexport var div = divide;\n/**\r\n * Alias for {@link vec3.distance}\r\n * @function\r\n */\n\nexport var dist = distance;\n/**\r\n * Alias for {@link vec3.squaredDistance}\r\n * @function\r\n */\n\nexport var sqrDist = squaredDistance;\n/**\r\n * Alias for {@link vec3.length}\r\n * @function\r\n */\n\nexport var len = length;\n/**\r\n * Alias for {@link vec3.squaredLength}\r\n * @function\r\n */\n\nexport var sqrLen = squaredLength;\n/**\r\n * Perform some operation over an array of vec3s.\r\n *\r\n * @param {Array} a the array of vectors to iterate over\r\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\r\n * @param {Number} offset Number of elements to skip at the beginning of the array\r\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\r\n * @param {Function} fn Function to call for each vector in the array\r\n * @param {Object} [arg] additional argument to pass to fn\r\n * @returns {Array} a\r\n * @function\r\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || '@math.gl/web-mercator: assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || '@math.gl/web-mercator: assertion failed.');\n }\n}\n","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport WebMercatorViewport from './web-mercator-viewport';\nimport assert from './assert';\nexport default function fitBounds(_ref) {\n var width = _ref.width,\n height = _ref.height,\n bounds = _ref.bounds,\n _ref$minExtent = _ref.minExtent,\n minExtent = _ref$minExtent === void 0 ? 0 : _ref$minExtent,\n _ref$maxZoom = _ref.maxZoom,\n maxZoom = _ref$maxZoom === void 0 ? 24 : _ref$maxZoom,\n _ref$padding = _ref.padding,\n padding = _ref$padding === void 0 ? 0 : _ref$padding,\n _ref$offset = _ref.offset,\n offset = _ref$offset === void 0 ? [0, 0] : _ref$offset;\n\n var _bounds = _slicedToArray(bounds, 2),\n _bounds$ = _slicedToArray(_bounds[0], 2),\n west = _bounds$[0],\n south = _bounds$[1],\n _bounds$2 = _slicedToArray(_bounds[1], 2),\n east = _bounds$2[0],\n north = _bounds$2[1];\n\n if (Number.isFinite(padding)) {\n var p = padding;\n padding = {\n top: p,\n bottom: p,\n left: p,\n right: p\n };\n } else {\n assert(Number.isFinite(padding.top) && Number.isFinite(padding.bottom) && Number.isFinite(padding.left) && Number.isFinite(padding.right));\n }\n\n var viewport = new WebMercatorViewport({\n width: width,\n height: height,\n longitude: 0,\n latitude: 0,\n zoom: 0\n });\n var nw = viewport.project([west, north]);\n var se = viewport.project([east, south]);\n var size = [Math.max(Math.abs(se[0] - nw[0]), minExtent), Math.max(Math.abs(se[1] - nw[1]), minExtent)];\n var targetSize = [width - padding.left - padding.right - Math.abs(offset[0]) * 2, height - padding.top - padding.bottom - Math.abs(offset[1]) * 2];\n assert(targetSize[0] > 0 && targetSize[1] > 0);\n var scaleX = targetSize[0] / size[0];\n var scaleY = targetSize[1] / size[1];\n var offsetX = (padding.right - padding.left) / 2 / scaleX;\n var offsetY = (padding.bottom - padding.top) / 2 / scaleY;\n var center = [(se[0] + nw[0]) / 2 + offsetX, (se[1] + nw[1]) / 2 + offsetY];\n var centerLngLat = viewport.unproject(center);\n var zoom = Math.min(maxZoom, viewport.zoom + Math.log2(Math.abs(Math.min(scaleX, scaleY))));\n assert(Number.isFinite(zoom));\n return {\n longitude: centerLngLat[0],\n latitude: centerLngLat[1],\n zoom: zoom\n };\n}\n//# sourceMappingURL=fit-bounds.js.map","import WebMercatorViewport from './web-mercator-viewport';\nimport assert from './assert';\n\n/**\n * * An object describing the padding to add to the bounds.\n * @typedef {Object} PaddingObject\n * @property {Number} top - Padding from top in pixels to add to the given bounds\n * @property {Number} bottom - Padding from bottom in pixels to add to the given bounds\n * @property {Number} left - Padding from left in pixels to add to the given bounds\n * @property {Number} right - Padding from right in pixels to add to the given bounds\n */\n\n/**\n * Returns map settings {latitude, longitude, zoom}\n * that will contain the provided corners within the provided width.\n * Only supports non-perspective mode.\n * @param {Number} width - viewport width\n * @param {Number} height - viewport height\n * @param {Array} bounds - [[lon, lat], [lon, lat]]\n * @param {Array} minExtent - The width/height of the bounded area will never be smaller than this\n * @param {Number|PaddingObject} [padding] - The amount of padding in pixels\n * to add to the given bounds. Can also be an object with top, bottom, left and right\n * properties defining the padding.\n * @param {Array} [offset] - The center of the given bounds relative to the map's center,\n * [x, y] measured in pixels.\n * @returns {Object} - latitude, longitude and zoom\n */\nexport default function fitBounds({\n width,\n height,\n bounds,\n minExtent = 0, // 0.01 would be about 1000 meters (degree is ~110KM)\n maxZoom = 24, // ~x4,000,000 => About 10 meter extents\n // options\n padding = 0,\n offset = [0, 0]\n}) {\n const [[west, south], [east, north]] = bounds;\n\n if (Number.isFinite(padding)) {\n const p = padding;\n padding = {\n top: p,\n bottom: p,\n left: p,\n right: p\n };\n } else {\n // Make sure all the required properties are set\n assert(\n Number.isFinite(padding.top) &&\n Number.isFinite(padding.bottom) &&\n Number.isFinite(padding.left) &&\n Number.isFinite(padding.right)\n );\n }\n\n const viewport = new WebMercatorViewport({\n width,\n height,\n longitude: 0,\n latitude: 0,\n zoom: 0\n });\n\n const nw = viewport.project([west, north]);\n const se = viewport.project([east, south]);\n\n // width/height on the Web Mercator plane\n const size = [\n Math.max(Math.abs(se[0] - nw[0]), minExtent),\n Math.max(Math.abs(se[1] - nw[1]), minExtent)\n ];\n\n const targetSize = [\n width - padding.left - padding.right - Math.abs(offset[0]) * 2,\n height - padding.top - padding.bottom - Math.abs(offset[1]) * 2\n ];\n\n assert(targetSize[0] > 0 && targetSize[1] > 0);\n\n // scale = screen pixels per unit on the Web Mercator plane\n const scaleX = targetSize[0] / size[0];\n const scaleY = targetSize[1] / size[1];\n\n // Find how much we need to shift the center\n const offsetX = (padding.right - padding.left) / 2 / scaleX;\n const offsetY = (padding.bottom - padding.top) / 2 / scaleY;\n\n const center = [(se[0] + nw[0]) / 2 + offsetX, (se[1] + nw[1]) / 2 + offsetY];\n\n const centerLngLat = viewport.unproject(center);\n const zoom = Math.min(maxZoom, viewport.zoom + Math.log2(Math.abs(Math.min(scaleX, scaleY))));\n\n assert(Number.isFinite(zoom));\n\n return {\n longitude: centerLngLat[0],\n latitude: centerLngLat[1],\n zoom\n };\n}\n","import WebMercatorViewport from './web-mercator-viewport';\nimport { mod } from './math-utils';\nvar MAX_LATITUDE = 85.05113;\nvar MIN_LATITUDE = -85.05113;\nexport default function normalizeViewportProps(_ref) {\n var width = _ref.width,\n height = _ref.height,\n longitude = _ref.longitude,\n latitude = _ref.latitude,\n zoom = _ref.zoom,\n _ref$pitch = _ref.pitch,\n pitch = _ref$pitch === void 0 ? 0 : _ref$pitch,\n _ref$bearing = _ref.bearing,\n bearing = _ref$bearing === void 0 ? 0 : _ref$bearing;\n\n if (longitude < -180 || longitude > 180) {\n longitude = mod(longitude + 180, 360) - 180;\n }\n\n if (bearing < -180 || bearing > 180) {\n bearing = mod(bearing + 180, 360) - 180;\n }\n\n var flatViewport = new WebMercatorViewport({\n width: width,\n height: height,\n longitude: longitude,\n latitude: latitude,\n zoom: zoom\n });\n var topY = flatViewport.project([longitude, MAX_LATITUDE])[1];\n var bottomY = flatViewport.project([longitude, MIN_LATITUDE])[1];\n var shiftY = 0;\n\n if (bottomY - topY < height) {\n zoom += Math.log2(height / (bottomY - topY));\n flatViewport = new WebMercatorViewport({\n width: width,\n height: height,\n longitude: longitude,\n latitude: latitude,\n zoom: zoom\n });\n topY = flatViewport.project([longitude, MAX_LATITUDE])[1];\n bottomY = flatViewport.project([longitude, MIN_LATITUDE])[1];\n }\n\n if (topY > 0) {\n shiftY = topY;\n } else if (bottomY < height) {\n shiftY = bottomY - height;\n }\n\n if (shiftY) {\n latitude = flatViewport.unproject([width / 2, height / 2 + shiftY])[1];\n }\n\n return {\n width: width,\n height: height,\n longitude: longitude,\n latitude: latitude,\n zoom: zoom,\n pitch: pitch,\n bearing: bearing\n };\n}\n//# sourceMappingURL=normalize-viewport-props.js.map","import WebMercatorViewport from './web-mercator-viewport';\nimport {mod} from './math-utils';\n\n// defined by mapbox-gl\nconst MAX_LATITUDE = 85.05113;\nconst MIN_LATITUDE = -85.05113;\n\n// Apply mathematical constraints to viewport props\n/* eslint-disable complexity */\nexport default function normalizeViewportProps({\n width,\n height,\n longitude,\n latitude,\n zoom,\n pitch = 0,\n bearing = 0\n}) {\n // Normalize degrees\n if (longitude < -180 || longitude > 180) {\n longitude = mod(longitude + 180, 360) - 180;\n }\n if (bearing < -180 || bearing > 180) {\n bearing = mod(bearing + 180, 360) - 180;\n }\n\n // Constrain zoom and shift center at low zoom levels\n let flatViewport = new WebMercatorViewport({width, height, longitude, latitude, zoom});\n let topY = flatViewport.project([longitude, MAX_LATITUDE])[1];\n let bottomY = flatViewport.project([longitude, MIN_LATITUDE])[1];\n let shiftY = 0;\n\n if (bottomY - topY < height) {\n // Map height must not be smaller than viewport height\n // Zoom out map to fit map height into viewport\n zoom += Math.log2(height / (bottomY - topY));\n\n // Calculate top and bottom using new zoom\n flatViewport = new WebMercatorViewport({width, height, longitude, latitude, zoom});\n topY = flatViewport.project([longitude, MAX_LATITUDE])[1];\n bottomY = flatViewport.project([longitude, MIN_LATITUDE])[1];\n }\n if (topY > 0) {\n // Compensate for white gap on top\n shiftY = topY;\n } else if (bottomY < height) {\n // Compensate for white gap on bottom\n shiftY = bottomY - height;\n }\n if (shiftY) {\n latitude = flatViewport.unproject([width / 2, height / 2 + shiftY])[1];\n }\n\n return {width, height, longitude, latitude, zoom, pitch, bearing};\n}\n","import { lerp } from './math-utils';\nimport { scaleToZoom, zoomToScale, lngLatToWorld, worldToLngLat } from './web-mercator-utils';\nimport * as vec2 from 'gl-matrix/vec2';\nvar EPSILON = 0.01;\nvar VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom'];\nvar DEFAULT_OPTS = {\n curve: 1.414,\n speed: 1.2\n};\nexport default function flyToViewport(startProps, endProps, t) {\n var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var viewport = {};\n\n var _getFlyToTransitionPa = getFlyToTransitionParams(startProps, endProps, opts),\n startZoom = _getFlyToTransitionPa.startZoom,\n startCenterXY = _getFlyToTransitionPa.startCenterXY,\n uDelta = _getFlyToTransitionPa.uDelta,\n w0 = _getFlyToTransitionPa.w0,\n u1 = _getFlyToTransitionPa.u1,\n S = _getFlyToTransitionPa.S,\n rho = _getFlyToTransitionPa.rho,\n rho2 = _getFlyToTransitionPa.rho2,\n r0 = _getFlyToTransitionPa.r0;\n\n if (u1 < EPSILON) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = VIEWPORT_TRANSITION_PROPS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n var startValue = startProps[key];\n var endValue = endProps[key];\n viewport[key] = lerp(startValue, endValue, t);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return viewport;\n }\n\n var s = t * S;\n var w = Math.cosh(r0) / Math.cosh(r0 + rho * s);\n var u = w0 * ((Math.cosh(r0) * Math.tanh(r0 + rho * s) - Math.sinh(r0)) / rho2) / u1;\n var scaleIncrement = 1 / w;\n var newZoom = startZoom + scaleToZoom(scaleIncrement);\n var newCenterWorld = vec2.scale([], uDelta, u);\n vec2.add(newCenterWorld, newCenterWorld, startCenterXY);\n var newCenter = worldToLngLat(newCenterWorld);\n viewport.longitude = newCenter[0];\n viewport.latitude = newCenter[1];\n viewport.zoom = newZoom;\n return viewport;\n}\nexport function getFlyToDuration(startProps, endProps) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts = Object.assign({}, DEFAULT_OPTS, opts);\n var _opts = opts,\n screenSpeed = _opts.screenSpeed,\n speed = _opts.speed,\n maxDuration = _opts.maxDuration;\n\n var _getFlyToTransitionPa2 = getFlyToTransitionParams(startProps, endProps, opts),\n S = _getFlyToTransitionPa2.S,\n rho = _getFlyToTransitionPa2.rho;\n\n var length = 1000 * S;\n var duration;\n\n if (Number.isFinite(screenSpeed)) {\n duration = length / (screenSpeed / rho);\n } else {\n duration = length / speed;\n }\n\n return Number.isFinite(maxDuration) && duration > maxDuration ? 0 : duration;\n}\n\nfunction getFlyToTransitionParams(startProps, endProps, opts) {\n opts = Object.assign({}, DEFAULT_OPTS, opts);\n var rho = opts.curve;\n var startZoom = startProps.zoom;\n var startCenter = [startProps.longitude, startProps.latitude];\n var startScale = zoomToScale(startZoom);\n var endZoom = endProps.zoom;\n var endCenter = [endProps.longitude, endProps.latitude];\n var scale = zoomToScale(endZoom - startZoom);\n var startCenterXY = lngLatToWorld(startCenter);\n var endCenterXY = lngLatToWorld(endCenter);\n var uDelta = vec2.sub([], endCenterXY, startCenterXY);\n var w0 = Math.max(startProps.width, startProps.height);\n var w1 = w0 / scale;\n var u1 = vec2.length(uDelta) * startScale;\n\n var _u1 = Math.max(u1, EPSILON);\n\n var rho2 = rho * rho;\n var b0 = (w1 * w1 - w0 * w0 + rho2 * rho2 * _u1 * _u1) / (2 * w0 * rho2 * _u1);\n var b1 = (w1 * w1 - w0 * w0 - rho2 * rho2 * _u1 * _u1) / (2 * w1 * rho2 * _u1);\n var r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0);\n var r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n var S = (r1 - r0) / rho;\n return {\n startZoom: startZoom,\n startCenterXY: startCenterXY,\n uDelta: uDelta,\n w0: w0,\n u1: u1,\n S: S,\n rho: rho,\n rho2: rho2,\n r0: r0,\n r1: r1\n };\n}\n//# sourceMappingURL=fly-to-viewport.js.map","import {lerp} from './math-utils';\nimport {scaleToZoom, zoomToScale, lngLatToWorld, worldToLngLat} from './web-mercator-utils';\nimport * as vec2 from 'gl-matrix/vec2';\n\nconst EPSILON = 0.01;\nconst VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom'];\nconst DEFAULT_OPTS = {\n curve: 1.414,\n speed: 1.2\n // screenSpeed and maxDuration are used only if specified\n};\n\n/**\n * mapbox-gl-js flyTo : https://www.mapbox.com/mapbox-gl-js/api/#map#flyto.\n * It implements “Smooth and efficient zooming and panning.” algorithm by\n * \"Jarke J. van Wijk and Wim A.A. Nuij\"\n */\nexport default function flyToViewport(startProps, endProps, t, opts = {}) {\n // Equations from above paper are referred where needed.\n\n const viewport = {};\n\n const {startZoom, startCenterXY, uDelta, w0, u1, S, rho, rho2, r0} = getFlyToTransitionParams(\n startProps,\n endProps,\n opts\n );\n\n // If change in center is too small, do linear interpolaiton.\n if (u1 < EPSILON) {\n for (const key of VIEWPORT_TRANSITION_PROPS) {\n const startValue = startProps[key];\n const endValue = endProps[key];\n viewport[key] = lerp(startValue, endValue, t);\n }\n return viewport;\n }\n\n const s = t * S;\n\n const w = Math.cosh(r0) / Math.cosh(r0 + rho * s);\n const u = (w0 * ((Math.cosh(r0) * Math.tanh(r0 + rho * s) - Math.sinh(r0)) / rho2)) / u1;\n\n const scaleIncrement = 1 / w; // Using w method for scaling.\n const newZoom = startZoom + scaleToZoom(scaleIncrement);\n\n const newCenterWorld = vec2.scale([], uDelta, u);\n vec2.add(newCenterWorld, newCenterWorld, startCenterXY);\n\n const newCenter = worldToLngLat(newCenterWorld);\n viewport.longitude = newCenter[0];\n viewport.latitude = newCenter[1];\n viewport.zoom = newZoom;\n return viewport;\n}\n\n// returns transition duration in milliseconds\nexport function getFlyToDuration(startProps, endProps, opts = {}) {\n opts = Object.assign({}, DEFAULT_OPTS, opts);\n const {screenSpeed, speed, maxDuration} = opts;\n const {S, rho} = getFlyToTransitionParams(startProps, endProps, opts);\n const length = 1000 * S;\n let duration;\n if (Number.isFinite(screenSpeed)) {\n duration = length / (screenSpeed / rho);\n } else {\n duration = length / speed;\n }\n\n return Number.isFinite(maxDuration) && duration > maxDuration ? 0 : duration;\n}\n\n// Private Methods\n\n// Calculate all parameters that are static for given startProps and endProps\nfunction getFlyToTransitionParams(startProps, endProps, opts) {\n opts = Object.assign({}, DEFAULT_OPTS, opts);\n const rho = opts.curve;\n const startZoom = startProps.zoom;\n const startCenter = [startProps.longitude, startProps.latitude];\n const startScale = zoomToScale(startZoom);\n const endZoom = endProps.zoom;\n const endCenter = [endProps.longitude, endProps.latitude];\n const scale = zoomToScale(endZoom - startZoom);\n\n const startCenterXY = lngLatToWorld(startCenter);\n const endCenterXY = lngLatToWorld(endCenter);\n const uDelta = vec2.sub([], endCenterXY, startCenterXY);\n\n const w0 = Math.max(startProps.width, startProps.height);\n const w1 = w0 / scale;\n const u1 = vec2.length(uDelta) * startScale;\n // u0 is treated as '0' in Eq (9).\n\n // If u1 is too small, will generate invalid number\n const _u1 = Math.max(u1, EPSILON);\n\n // Implement Equation (9) from above algorithm.\n const rho2 = rho * rho;\n const b0 = (w1 * w1 - w0 * w0 + rho2 * rho2 * _u1 * _u1) / (2 * w0 * rho2 * _u1);\n const b1 = (w1 * w1 - w0 * w0 - rho2 * rho2 * _u1 * _u1) / (2 * w1 * rho2 * _u1);\n const r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0);\n const r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n const S = (r1 - r0) / rho;\n\n return {startZoom, startCenterXY, uDelta, w0, u1, S, rho, rho2, r0, r1};\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ImmutableFeatureCollection = void 0;\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ImmutableFeatureCollection = /*#__PURE__*/function () {\n function ImmutableFeatureCollection(featureCollection) {\n _classCallCheck(this, ImmutableFeatureCollection);\n\n _defineProperty(this, \"featureCollection\", void 0);\n\n this.featureCollection = featureCollection;\n }\n\n _createClass(ImmutableFeatureCollection, [{\n key: \"getObject\",\n value: function getObject() {\n return this.featureCollection;\n }\n /**\n * Replaces the position deeply nested withing the given feature's geometry.\n * Works with Point, MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon.\n *\n * @param featureIndex The index of the feature to update\n * @param positionIndexes An array containing the indexes of the position to replace\n * @param updatedPosition The updated position to place in the result (i.e. [lng, lat])\n *\n * @returns A new `ImmutableFeatureCollection` with the given position replaced. Does not modify this `ImmutableFeatureCollection`.\n */\n\n }, {\n key: \"replacePosition\",\n value: function replacePosition(featureIndex, positionIndexes, updatedPosition) {\n var geometry = this.featureCollection.features[featureIndex].geometry;\n var isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon';\n\n var updatedGeometry = _objectSpread({}, geometry, {\n coordinates: immutablyReplacePosition(geometry.coordinates, positionIndexes, updatedPosition, isPolygonal)\n });\n\n return this.replaceGeometry(featureIndex, updatedGeometry);\n }\n /**\n * Removes a position deeply nested in a GeoJSON geometry coordinates array.\n * Works with MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon.\n *\n * @param featureIndex The index of the feature to update\n * @param positionIndexes An array containing the indexes of the postion to remove\n *\n * @returns A new `ImmutableFeatureCollection` with the given coordinate removed. Does not modify this `ImmutableFeatureCollection`.\n */\n\n }, {\n key: \"removePosition\",\n value: function removePosition(featureIndex, positionIndexes) {\n var geometry = this.featureCollection.features[featureIndex].geometry;\n\n if (geometry.type === 'Point') {\n throw Error(\"Can't remove a position from a Point or there'd be nothing left\");\n }\n\n if (geometry.type === 'MultiPoint' && // only 1 point left\n geometry.coordinates.length < 2) {\n throw Error(\"Can't remove the last point of a MultiPoint or there'd be nothing left\");\n }\n\n if (geometry.type === 'LineString' && // only 2 positions\n geometry.coordinates.length < 3) {\n throw Error(\"Can't remove position. LineString must have at least two positions\");\n }\n\n if (geometry.type === 'Polygon' && // outer ring is a triangle\n geometry.coordinates[0].length < 5 && Array.isArray(positionIndexes) && // trying to remove from outer ring\n positionIndexes[0] === 0) {\n throw Error(\"Can't remove position. Polygon's outer ring must have at least four positions\");\n }\n\n if (geometry.type === 'MultiLineString' && // only 1 LineString left\n geometry.coordinates.length === 1 && // only 2 positions\n geometry.coordinates[0].length < 3) {\n throw Error(\"Can't remove position. MultiLineString must have at least two positions\");\n }\n\n if (geometry.type === 'MultiPolygon' && // only 1 polygon left\n geometry.coordinates.length === 1 && // outer ring is a triangle\n geometry.coordinates[0][0].length < 5 && Array.isArray(positionIndexes) && // trying to remove from first polygon\n positionIndexes[0] === 0 && // trying to remove from outer ring\n positionIndexes[1] === 0) {\n throw Error(\"Can't remove position. MultiPolygon's outer ring must have at least four positions\");\n }\n\n var isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon';\n\n var updatedGeometry = _objectSpread({}, geometry, {\n coordinates: immutablyRemovePosition(geometry.coordinates, positionIndexes, isPolygonal)\n }); // Handle cases where incomplete geometries need pruned (e.g. holes that were triangles)\n\n\n pruneGeometryIfNecessary(updatedGeometry);\n return this.replaceGeometry(featureIndex, updatedGeometry);\n }\n /**\n * Adds a position deeply nested in a GeoJSON geometry coordinates array.\n * Works with MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon.\n *\n * @param featureIndex The index of the feature to update\n * @param positionIndexes An array containing the indexes of the position that will proceed the new position\n * @param positionToAdd The new position to place in the result (i.e. [lng, lat])\n *\n * @returns A new `ImmutableFeatureCollection` with the given coordinate removed. Does not modify this `ImmutableFeatureCollection`.\n */\n\n }, {\n key: \"addPosition\",\n value: function addPosition(featureIndex, positionIndexes, positionToAdd) {\n var geometry = this.featureCollection.features[featureIndex].geometry;\n\n if (geometry.type === 'Point') {\n throw new Error('Unable to add a position to a Point feature');\n }\n\n var isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon';\n\n var updatedGeometry = _objectSpread({}, geometry, {\n coordinates: immutablyAddPosition(geometry.coordinates, positionIndexes, positionToAdd, isPolygonal)\n });\n\n return this.replaceGeometry(featureIndex, updatedGeometry);\n }\n }, {\n key: \"replaceGeometry\",\n value: function replaceGeometry(featureIndex, geometry) {\n var updatedFeature = _objectSpread({}, this.featureCollection.features[featureIndex], {\n geometry: geometry\n });\n\n var updatedFeatureCollection = _objectSpread({}, this.featureCollection, {\n features: [].concat(_toConsumableArray(this.featureCollection.features.slice(0, featureIndex)), [updatedFeature], _toConsumableArray(this.featureCollection.features.slice(featureIndex + 1)))\n });\n\n return new ImmutableFeatureCollection(updatedFeatureCollection);\n }\n }, {\n key: \"addFeature\",\n value: function addFeature(feature) {\n return this.addFeatures([feature]);\n }\n }, {\n key: \"addFeatures\",\n value: function addFeatures(features) {\n var updatedFeatureCollection = _objectSpread({}, this.featureCollection, {\n features: [].concat(_toConsumableArray(this.featureCollection.features), _toConsumableArray(features))\n });\n\n return new ImmutableFeatureCollection(updatedFeatureCollection);\n }\n }, {\n key: \"deleteFeature\",\n value: function deleteFeature(featureIndex) {\n return this.deleteFeatures([featureIndex]);\n }\n }, {\n key: \"deleteFeatures\",\n value: function deleteFeatures(featureIndexes) {\n var features = _toConsumableArray(this.featureCollection.features);\n\n featureIndexes.sort();\n\n for (var i = featureIndexes.length - 1; i >= 0; i--) {\n var featureIndex = featureIndexes[i];\n\n if (featureIndex >= 0 && featureIndex < features.length) {\n features.splice(featureIndex, 1);\n }\n }\n\n var updatedFeatureCollection = _objectSpread({}, this.featureCollection, {\n features: features\n });\n\n return new ImmutableFeatureCollection(updatedFeatureCollection);\n }\n }]);\n\n return ImmutableFeatureCollection;\n}();\n\nexports.ImmutableFeatureCollection = ImmutableFeatureCollection;\n\nfunction getUpdatedPosition(updatedPosition, previousPosition) {\n // This function checks if the updatedPosition is missing elevation\n // and copies it from previousPosition\n if (updatedPosition.length === 2 && previousPosition.length === 3) {\n var elevation = previousPosition[2];\n return [updatedPosition[0], updatedPosition[1], elevation];\n }\n\n return updatedPosition;\n}\n\nfunction immutablyReplacePosition(coordinates, positionIndexes, updatedPosition, isPolygonal) {\n if (!positionIndexes) {\n return coordinates;\n }\n\n if (positionIndexes.length === 0) {\n return getUpdatedPosition(updatedPosition, coordinates);\n }\n\n if (positionIndexes.length === 1) {\n var updated = [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [getUpdatedPosition(updatedPosition, coordinates[positionIndexes[0]])], _toConsumableArray(coordinates.slice(positionIndexes[0] + 1)));\n\n if (isPolygonal && (positionIndexes[0] === 0 || positionIndexes[0] === coordinates.length - 1)) {\n // for polygons, the first point is repeated at the end of the array\n // so, update it on both ends of the array\n updated[0] = getUpdatedPosition(updatedPosition, coordinates[0]);\n updated[coordinates.length - 1] = getUpdatedPosition(updatedPosition, coordinates[0]);\n }\n\n return updated;\n } // recursively update inner array\n\n\n return [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [immutablyReplacePosition(coordinates[positionIndexes[0]], positionIndexes.slice(1, positionIndexes.length), updatedPosition, isPolygonal)], _toConsumableArray(coordinates.slice(positionIndexes[0] + 1)));\n}\n\nfunction immutablyRemovePosition(coordinates, positionIndexes, isPolygonal) {\n if (!positionIndexes) {\n return coordinates;\n }\n\n if (positionIndexes.length === 0) {\n throw Error('Must specify the index of the position to remove');\n }\n\n if (positionIndexes.length === 1) {\n var updated = [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), _toConsumableArray(coordinates.slice(positionIndexes[0] + 1)));\n\n if (isPolygonal && (positionIndexes[0] === 0 || positionIndexes[0] === coordinates.length - 1)) {\n // for polygons, the first point is repeated at the end of the array\n // so, if the first/last coordinate is to be removed, coordinates[1] will be the new first/last coordinate\n if (positionIndexes[0] === 0) {\n // change the last to be the same as the first\n updated[updated.length - 1] = updated[0];\n } else if (positionIndexes[0] === coordinates.length - 1) {\n // change the first to be the same as the last\n updated[0] = updated[updated.length - 1];\n }\n }\n\n return updated;\n } // recursively update inner array\n\n\n return [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [immutablyRemovePosition(coordinates[positionIndexes[0]], positionIndexes.slice(1, positionIndexes.length), isPolygonal)], _toConsumableArray(coordinates.slice(positionIndexes[0] + 1)));\n}\n\nfunction immutablyAddPosition(coordinates, positionIndexes, positionToAdd, isPolygonal) {\n if (!positionIndexes) {\n return coordinates;\n }\n\n if (positionIndexes.length === 0) {\n throw Error('Must specify the index of the position to remove');\n }\n\n if (positionIndexes.length === 1) {\n var updated = [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [positionToAdd], _toConsumableArray(coordinates.slice(positionIndexes[0])));\n return updated;\n } // recursively update inner array\n\n\n return [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [immutablyAddPosition(coordinates[positionIndexes[0]], positionIndexes.slice(1, positionIndexes.length), positionToAdd, isPolygonal)], _toConsumableArray(coordinates.slice(positionIndexes[0] + 1)));\n}\n\nfunction pruneGeometryIfNecessary(geometry) {\n switch (geometry.type) {\n case 'Polygon':\n prunePolygonIfNecessary(geometry);\n break;\n\n case 'MultiLineString':\n pruneMultiLineStringIfNecessary(geometry);\n break;\n\n case 'MultiPolygon':\n pruneMultiPolygonIfNecessary(geometry);\n break;\n\n default:\n // Not downgradable\n break;\n }\n}\n\nfunction prunePolygonIfNecessary(geometry) {\n var polygon = geometry.coordinates; // If any hole is no longer a polygon, remove the hole entirely\n\n for (var holeIndex = 1; holeIndex < polygon.length; holeIndex++) {\n if (removeHoleIfNecessary(polygon, holeIndex)) {\n // It was removed, so keep the index the same\n holeIndex--;\n }\n }\n}\n\nfunction pruneMultiLineStringIfNecessary(geometry) {\n for (var lineStringIndex = 0; lineStringIndex < geometry.coordinates.length; lineStringIndex++) {\n var lineString = geometry.coordinates[lineStringIndex];\n\n if (lineString.length === 1) {\n // Only a single position left on this LineString, so remove it (can't have Point in MultiLineString)\n geometry.coordinates.splice(lineStringIndex, 1); // Keep the index the same\n\n lineStringIndex--;\n }\n }\n}\n\nfunction pruneMultiPolygonIfNecessary(geometry) {\n for (var polygonIndex = 0; polygonIndex < geometry.coordinates.length; polygonIndex++) {\n var polygon = geometry.coordinates[polygonIndex];\n var outerRing = polygon[0]; // If the outer ring is no longer a polygon, remove the whole polygon\n\n if (outerRing.length <= 3) {\n geometry.coordinates.splice(polygonIndex, 1); // It was removed, so keep the index the same\n\n polygonIndex--;\n }\n\n for (var holeIndex = 1; holeIndex < polygon.length; holeIndex++) {\n if (removeHoleIfNecessary(polygon, holeIndex)) {\n // It was removed, so keep the index the same\n holeIndex--;\n }\n }\n }\n}\n\nfunction removeHoleIfNecessary(polygon, holeIndex) {\n var hole = polygon[holeIndex];\n\n if (hole.length <= 3) {\n polygon.splice(holeIndex, 1);\n return true;\n }\n\n return false;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6WyJJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsImZlYXR1cmVDb2xsZWN0aW9uIiwiZmVhdHVyZUluZGV4IiwicG9zaXRpb25JbmRleGVzIiwidXBkYXRlZFBvc2l0aW9uIiwiZ2VvbWV0cnkiLCJmZWF0dXJlcyIsImlzUG9seWdvbmFsIiwidHlwZSIsInVwZGF0ZWRHZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiaW1tdXRhYmx5UmVwbGFjZVBvc2l0aW9uIiwicmVwbGFjZUdlb21ldHJ5IiwiRXJyb3IiLCJsZW5ndGgiLCJBcnJheSIsImlzQXJyYXkiLCJpbW11dGFibHlSZW1vdmVQb3NpdGlvbiIsInBydW5lR2VvbWV0cnlJZk5lY2Vzc2FyeSIsInBvc2l0aW9uVG9BZGQiLCJpbW11dGFibHlBZGRQb3NpdGlvbiIsInVwZGF0ZWRGZWF0dXJlIiwidXBkYXRlZEZlYXR1cmVDb2xsZWN0aW9uIiwic2xpY2UiLCJmZWF0dXJlIiwiYWRkRmVhdHVyZXMiLCJkZWxldGVGZWF0dXJlcyIsImZlYXR1cmVJbmRleGVzIiwic29ydCIsImkiLCJzcGxpY2UiLCJnZXRVcGRhdGVkUG9zaXRpb24iLCJwcmV2aW91c1Bvc2l0aW9uIiwiZWxldmF0aW9uIiwidXBkYXRlZCIsInBydW5lUG9seWdvbklmTmVjZXNzYXJ5IiwicHJ1bmVNdWx0aUxpbmVTdHJpbmdJZk5lY2Vzc2FyeSIsInBydW5lTXVsdGlQb2x5Z29uSWZOZWNlc3NhcnkiLCJwb2x5Z29uIiwiaG9sZUluZGV4IiwicmVtb3ZlSG9sZUlmTmVjZXNzYXJ5IiwibGluZVN0cmluZ0luZGV4IiwibGluZVN0cmluZyIsInBvbHlnb25JbmRleCIsIm91dGVyUmluZyIsImhvbGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFXYUEsMEI7QUFHWCxzQ0FBWUMsaUJBQVosRUFBa0Q7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S0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZUNvbGxlY3Rpb24sXG4gIEdlb21ldHJ5LFxuICBQb2x5Z29uLFxuICBNdWx0aUxpbmVTdHJpbmcsXG4gIE11bHRpUG9seWdvbixcbiAgUG9zaXRpb24sXG4gIFBvbHlnb25Db29yZGluYXRlcyxcbn0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gIGZlYXR1cmVDb2xsZWN0aW9uOiBGZWF0dXJlQ29sbGVjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihmZWF0dXJlQ29sbGVjdGlvbjogRmVhdHVyZUNvbGxlY3Rpb24pIHtcbiAgICB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uID0gZmVhdHVyZUNvbGxlY3Rpb247XG4gIH1cblxuICBnZXRPYmplY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmVhdHVyZUNvbGxlY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZXMgdGhlIHBvc2l0aW9uIGRlZXBseSBuZXN0ZWQgd2l0aGluZyB0aGUgZ2l2ZW4gZmVhdHVyZSdzIGdlb21ldHJ5LlxuICAgKiBXb3JrcyB3aXRoIFBvaW50LCBNdWx0aVBvaW50LCBMaW5lU3RyaW5nLCBNdWx0aUxpbmVTdHJpbmcsIFBvbHlnb24sIGFuZCBNdWx0aVBvbHlnb24uXG4gICAqXG4gICAqIEBwYXJhbSBmZWF0dXJlSW5kZXggVGhlIGluZGV4IG9mIHRoZSBmZWF0dXJlIHRvIHVwZGF0ZVxuICAgKiBAcGFyYW0gcG9zaXRpb25JbmRleGVzIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGluZGV4ZXMgb2YgdGhlIHBvc2l0aW9uIHRvIHJlcGxhY2VcbiAgICogQHBhcmFtIHVwZGF0ZWRQb3NpdGlvbiBUaGUgdXBkYXRlZCBwb3NpdGlvbiB0byBwbGFjZSBpbiB0aGUgcmVzdWx0IChpLmUuIFtsbmcsIGxhdF0pXG4gICAqXG4gICAqIEByZXR1cm5zIEEgbmV3IGBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbmAgd2l0aCB0aGUgZ2l2ZW4gcG9zaXRpb24gcmVwbGFjZWQuIERvZXMgbm90IG1vZGlmeSB0aGlzIGBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbmAuXG4gICAqL1xuICByZXBsYWNlUG9zaXRpb24oXG4gICAgZmVhdHVyZUluZGV4OiBudW1iZXIsXG4gICAgcG9zaXRpb25JbmRleGVzOiBudW1iZXJbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgdXBkYXRlZFBvc2l0aW9uOiBQb3NpdGlvblxuICApOiBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgZ2VvbWV0cnkgPSB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzW2ZlYXR1cmVJbmRleF0uZ2VvbWV0cnk7XG5cbiAgICBjb25zdCBpc1BvbHlnb25hbCA9IGdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJyB8fCBnZW9tZXRyeS50eXBlID09PSAnTXVsdGlQb2x5Z29uJztcbiAgICBjb25zdCB1cGRhdGVkR2VvbWV0cnk6IGFueSA9IHtcbiAgICAgIC4uLmdlb21ldHJ5LFxuICAgICAgY29vcmRpbmF0ZXM6IGltbXV0YWJseVJlcGxhY2VQb3NpdGlvbihcbiAgICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgdXBkYXRlZFBvc2l0aW9uLFxuICAgICAgICBpc1BvbHlnb25hbFxuICAgICAgKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVwbGFjZUdlb21ldHJ5KGZlYXR1cmVJbmRleCwgdXBkYXRlZEdlb21ldHJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgcG9zaXRpb24gZGVlcGx5IG5lc3RlZCBpbiBhIEdlb0pTT04gZ2VvbWV0cnkgY29vcmRpbmF0ZXMgYXJyYXkuXG4gICAqIFdvcmtzIHdpdGggTXVsdGlQb2ludCwgTGluZVN0cmluZywgTXVsdGlMaW5lU3RyaW5nLCBQb2x5Z29uLCBhbmQgTXVsdGlQb2x5Z29uLlxuICAgKlxuICAgKiBAcGFyYW0gZmVhdHVyZUluZGV4IFRoZSBpbmRleCBvZiB0aGUgZmVhdHVyZSB0byB1cGRhdGVcbiAgICogQHBhcmFtIHBvc2l0aW9uSW5kZXhlcyBBbiBhcnJheSBjb250YWluaW5nIHRoZSBpbmRleGVzIG9mIHRoZSBwb3N0aW9uIHRvIHJlbW92ZVxuICAgKlxuICAgKiBAcmV0dXJucyBBIG5ldyBgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb25gIHdpdGggdGhlIGdpdmVuIGNvb3JkaW5hdGUgcmVtb3ZlZC4gRG9lcyBub3QgbW9kaWZ5IHRoaXMgYEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uYC5cbiAgICovXG4gIHJlbW92ZVBvc2l0aW9uKFxuICAgIGZlYXR1cmVJbmRleDogbnVtYmVyLFxuICAgIHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBnZW9tZXRyeSA9IHRoaXMuZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXNbZmVhdHVyZUluZGV4XS5nZW9tZXRyeTtcblxuICAgIGlmIChnZW9tZXRyeS50eXBlID09PSAnUG9pbnQnKSB7XG4gICAgICB0aHJvdyBFcnJvcihgQ2FuJ3QgcmVtb3ZlIGEgcG9zaXRpb24gZnJvbSBhIFBvaW50IG9yIHRoZXJlJ2QgYmUgbm90aGluZyBsZWZ0YCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aVBvaW50JyAmJiAvLyBvbmx5IDEgcG9pbnQgbGVmdFxuICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoIDwgMlxuICAgICkge1xuICAgICAgdGhyb3cgRXJyb3IoYENhbid0IHJlbW92ZSB0aGUgbGFzdCBwb2ludCBvZiBhIE11bHRpUG9pbnQgb3IgdGhlcmUnZCBiZSBub3RoaW5nIGxlZnRgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgZ2VvbWV0cnkudHlwZSA9PT0gJ0xpbmVTdHJpbmcnICYmIC8vIG9ubHkgMiBwb3NpdGlvbnNcbiAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aCA8IDNcbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKGBDYW4ndCByZW1vdmUgcG9zaXRpb24uIExpbmVTdHJpbmcgbXVzdCBoYXZlIGF0IGxlYXN0IHR3byBwb3NpdGlvbnNgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nICYmIC8vIG91dGVyIHJpbmcgaXMgYSB0cmlhbmdsZVxuICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0ubGVuZ3RoIDwgNSAmJlxuICAgICAgQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpICYmIC8vIHRyeWluZyB0byByZW1vdmUgZnJvbSBvdXRlciByaW5nXG4gICAgICBwb3NpdGlvbkluZGV4ZXNbMF0gPT09IDBcbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKGBDYW4ndCByZW1vdmUgcG9zaXRpb24uIFBvbHlnb24ncyBvdXRlciByaW5nIG11c3QgaGF2ZSBhdCBsZWFzdCBmb3VyIHBvc2l0aW9uc2ApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBnZW9tZXRyeS50eXBlID09PSAnTXVsdGlMaW5lU3RyaW5nJyAmJiAvLyBvbmx5IDEgTGluZVN0cmluZyBsZWZ0XG4gICAgICBnZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGggPT09IDEgJiYgLy8gb25seSAyIHBvc2l0aW9uc1xuICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0ubGVuZ3RoIDwgM1xuICAgICkge1xuICAgICAgdGhyb3cgRXJyb3IoYENhbid0IHJlbW92ZSBwb3NpdGlvbi4gTXVsdGlMaW5lU3RyaW5nIG11c3QgaGF2ZSBhdCBsZWFzdCB0d28gcG9zaXRpb25zYCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aVBvbHlnb24nICYmIC8vIG9ubHkgMSBwb2x5Z29uIGxlZnRcbiAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aCA9PT0gMSAmJiAvLyBvdXRlciByaW5nIGlzIGEgdHJpYW5nbGVcbiAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdWzBdLmxlbmd0aCA8IDUgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkocG9zaXRpb25JbmRleGVzKSAmJiAvLyB0cnlpbmcgdG8gcmVtb3ZlIGZyb20gZmlyc3QgcG9seWdvblxuICAgICAgcG9zaXRpb25JbmRleGVzWzBdID09PSAwICYmIC8vIHRyeWluZyB0byByZW1vdmUgZnJvbSBvdXRlciByaW5nXG4gICAgICBwb3NpdGlvbkluZGV4ZXNbMV0gPT09IDBcbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBgQ2FuJ3QgcmVtb3ZlIHBvc2l0aW9uLiBNdWx0aVBvbHlnb24ncyBvdXRlciByaW5nIG11c3QgaGF2ZSBhdCBsZWFzdCBmb3VyIHBvc2l0aW9uc2BcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNQb2x5Z29uYWwgPSBnZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicgfHwgZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbic7XG4gICAgY29uc3QgdXBkYXRlZEdlb21ldHJ5OiBhbnkgPSB7XG4gICAgICAuLi5nZW9tZXRyeSxcbiAgICAgIGNvb3JkaW5hdGVzOiBpbW11dGFibHlSZW1vdmVQb3NpdGlvbihnZW9tZXRyeS5jb29yZGluYXRlcywgcG9zaXRpb25JbmRleGVzLCBpc1BvbHlnb25hbCksXG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBjYXNlcyB3aGVyZSBpbmNvbXBsZXRlIGdlb21ldHJpZXMgbmVlZCBwcnVuZWQgKGUuZy4gaG9sZXMgdGhhdCB3ZXJlIHRyaWFuZ2xlcylcbiAgICBwcnVuZUdlb21ldHJ5SWZOZWNlc3NhcnkodXBkYXRlZEdlb21ldHJ5KTtcblxuICAgIHJldHVybiB0aGlzLnJlcGxhY2VHZW9tZXRyeShmZWF0dXJlSW5kZXgsIHVwZGF0ZWRHZW9tZXRyeSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHBvc2l0aW9uIGRlZXBseSBuZXN0ZWQgaW4gYSBHZW9KU09OIGdlb21ldHJ5IGNvb3JkaW5hdGVzIGFycmF5LlxuICAgKiBXb3JrcyB3aXRoIE11bHRpUG9pbnQsIExpbmVTdHJpbmcsIE11bHRpTGluZVN0cmluZywgUG9seWdvbiwgYW5kIE11bHRpUG9seWdvbi5cbiAgICpcbiAgICogQHBhcmFtIGZlYXR1cmVJbmRleCBUaGUgaW5kZXggb2YgdGhlIGZlYXR1cmUgdG8gdXBkYXRlXG4gICAqIEBwYXJhbSBwb3NpdGlvbkluZGV4ZXMgQW4gYXJyYXkgY29udGFpbmluZyB0aGUgaW5kZXhlcyBvZiB0aGUgcG9zaXRpb24gdGhhdCB3aWxsIHByb2NlZWQgdGhlIG5ldyBwb3NpdGlvblxuICAgKiBAcGFyYW0gcG9zaXRpb25Ub0FkZCBUaGUgbmV3IHBvc2l0aW9uIHRvIHBsYWNlIGluIHRoZSByZXN1bHQgKGkuZS4gW2xuZywgbGF0XSlcbiAgICpcbiAgICogQHJldHVybnMgQSBuZXcgYEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uYCB3aXRoIHRoZSBnaXZlbiBjb29yZGluYXRlIHJlbW92ZWQuIERvZXMgbm90IG1vZGlmeSB0aGlzIGBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbmAuXG4gICAqL1xuICBhZGRQb3NpdGlvbihcbiAgICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBwb3NpdGlvblRvQWRkOiBQb3NpdGlvblxuICApOiBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgZ2VvbWV0cnkgPSB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzW2ZlYXR1cmVJbmRleF0uZ2VvbWV0cnk7XG5cbiAgICBpZiAoZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gYWRkIGEgcG9zaXRpb24gdG8gYSBQb2ludCBmZWF0dXJlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNQb2x5Z29uYWwgPSBnZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicgfHwgZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbic7XG4gICAgY29uc3QgdXBkYXRlZEdlb21ldHJ5OiBhbnkgPSB7XG4gICAgICAuLi5nZW9tZXRyeSxcbiAgICAgIGNvb3JkaW5hdGVzOiBpbW11dGFibHlBZGRQb3NpdGlvbihcbiAgICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgcG9zaXRpb25Ub0FkZCxcbiAgICAgICAgaXNQb2x5Z29uYWxcbiAgICAgICksXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnJlcGxhY2VHZW9tZXRyeShmZWF0dXJlSW5kZXgsIHVwZGF0ZWRHZW9tZXRyeSk7XG4gIH1cblxuICByZXBsYWNlR2VvbWV0cnkoZmVhdHVyZUluZGV4OiBudW1iZXIsIGdlb21ldHJ5OiBHZW9tZXRyeSk6IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCB1cGRhdGVkRmVhdHVyZTogYW55ID0ge1xuICAgICAgLi4udGhpcy5mZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlc1tmZWF0dXJlSW5kZXhdLFxuICAgICAgZ2VvbWV0cnksXG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZWRGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIC4uLnRoaXMuZmVhdHVyZUNvbGxlY3Rpb24sXG4gICAgICBmZWF0dXJlczogW1xuICAgICAgICAuLi50aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLnNsaWNlKDAsIGZlYXR1cmVJbmRleCksXG4gICAgICAgIHVwZGF0ZWRGZWF0dXJlLFxuICAgICAgICAuLi50aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLnNsaWNlKGZlYXR1cmVJbmRleCArIDEpLFxuICAgICAgXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih1cGRhdGVkRmVhdHVyZUNvbGxlY3Rpb24pO1xuICB9XG5cbiAgYWRkRmVhdHVyZShmZWF0dXJlOiBGZWF0dXJlKTogSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLmFkZEZlYXR1cmVzKFtmZWF0dXJlXSk7XG4gIH1cblxuICBhZGRGZWF0dXJlcyhmZWF0dXJlczogRmVhdHVyZVtdKTogSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IHVwZGF0ZWRGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIC4uLnRoaXMuZmVhdHVyZUNvbGxlY3Rpb24sXG4gICAgICBmZWF0dXJlczogWy4uLnRoaXMuZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXMsIC4uLmZlYXR1cmVzXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih1cGRhdGVkRmVhdHVyZUNvbGxlY3Rpb24pO1xuICB9XG5cbiAgZGVsZXRlRmVhdHVyZShmZWF0dXJlSW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZUZlYXR1cmVzKFtmZWF0dXJlSW5kZXhdKTtcbiAgfVxuXG4gIGRlbGV0ZUZlYXR1cmVzKGZlYXR1cmVJbmRleGVzOiBudW1iZXJbXSkge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gWy4uLnRoaXMuZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXNdO1xuICAgIGZlYXR1cmVJbmRleGVzLnNvcnQoKTtcbiAgICBmb3IgKGxldCBpID0gZmVhdHVyZUluZGV4ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IGZlYXR1cmVJbmRleCA9IGZlYXR1cmVJbmRleGVzW2ldO1xuICAgICAgaWYgKGZlYXR1cmVJbmRleCA+PSAwICYmIGZlYXR1cmVJbmRleCA8IGZlYXR1cmVzLmxlbmd0aCkge1xuICAgICAgICBmZWF0dXJlcy5zcGxpY2UoZmVhdHVyZUluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkRmVhdHVyZUNvbGxlY3Rpb24gPSB7XG4gICAgICAuLi50aGlzLmZlYXR1cmVDb2xsZWN0aW9uLFxuICAgICAgZmVhdHVyZXMsXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24odXBkYXRlZEZlYXR1cmVDb2xsZWN0aW9uKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRVcGRhdGVkUG9zaXRpb24odXBkYXRlZFBvc2l0aW9uOiBQb3NpdGlvbiwgcHJldmlvdXNQb3NpdGlvbjogUG9zaXRpb24pOiBQb3NpdGlvbiB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSB1cGRhdGVkUG9zaXRpb24gaXMgbWlzc2luZyBlbGV2YXRpb25cbiAgLy8gYW5kIGNvcGllcyBpdCBmcm9tIHByZXZpb3VzUG9zaXRpb25cbiAgaWYgKHVwZGF0ZWRQb3NpdGlvbi5sZW5ndGggPT09IDIgJiYgcHJldmlvdXNQb3NpdGlvbi5sZW5ndGggPT09IDMpIHtcbiAgICBjb25zdCBlbGV2YXRpb24gPSAocHJldmlvdXNQb3NpdGlvbiBhcyBhbnkpWzJdO1xuICAgIHJldHVybiBbdXBkYXRlZFBvc2l0aW9uWzBdLCB1cGRhdGVkUG9zaXRpb25bMV0sIGVsZXZhdGlvbl07XG4gIH1cblxuICByZXR1cm4gdXBkYXRlZFBvc2l0aW9uO1xufVxuXG5mdW5jdGlvbiBpbW11dGFibHlSZXBsYWNlUG9zaXRpb24oXG4gIGNvb3JkaW5hdGVzOiBhbnksXG4gIHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICB1cGRhdGVkUG9zaXRpb246IFBvc2l0aW9uLFxuICBpc1BvbHlnb25hbDogYm9vbGVhblxuKTogYW55IHtcbiAgaWYgKCFwb3NpdGlvbkluZGV4ZXMpIHtcbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gIH1cbiAgaWYgKHBvc2l0aW9uSW5kZXhlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZ2V0VXBkYXRlZFBvc2l0aW9uKHVwZGF0ZWRQb3NpdGlvbiwgY29vcmRpbmF0ZXMpO1xuICB9XG4gIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgY29uc3QgdXBkYXRlZCA9IFtcbiAgICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKDAsIHBvc2l0aW9uSW5kZXhlc1swXSksXG4gICAgICBnZXRVcGRhdGVkUG9zaXRpb24odXBkYXRlZFBvc2l0aW9uLCBjb29yZGluYXRlc1twb3NpdGlvbkluZGV4ZXNbMF1dKSxcbiAgICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKHBvc2l0aW9uSW5kZXhlc1swXSArIDEpLFxuICAgIF07XG5cbiAgICBpZiAoXG4gICAgICBpc1BvbHlnb25hbCAmJlxuICAgICAgKHBvc2l0aW9uSW5kZXhlc1swXSA9PT0gMCB8fCBwb3NpdGlvbkluZGV4ZXNbMF0gPT09IGNvb3JkaW5hdGVzLmxlbmd0aCAtIDEpXG4gICAgKSB7XG4gICAgICAvLyBmb3IgcG9seWdvbnMsIHRoZSBmaXJzdCBwb2ludCBpcyByZXBlYXRlZCBhdCB0aGUgZW5kIG9mIHRoZSBhcnJheVxuICAgICAgLy8gc28sIHVwZGF0ZSBpdCBvbiBib3RoIGVuZHMgb2YgdGhlIGFycmF5XG4gICAgICB1cGRhdGVkWzBdID0gZ2V0VXBkYXRlZFBvc2l0aW9uKHVwZGF0ZWRQb3NpdGlvbiwgY29vcmRpbmF0ZXNbMF0pO1xuICAgICAgdXBkYXRlZFtjb29yZGluYXRlcy5sZW5ndGggLSAxXSA9IGdldFVwZGF0ZWRQb3NpdGlvbih1cGRhdGVkUG9zaXRpb24sIGNvb3JkaW5hdGVzWzBdKTtcbiAgICB9XG4gICAgcmV0dXJuIHVwZGF0ZWQ7XG4gIH1cblxuICAvLyByZWN1cnNpdmVseSB1cGRhdGUgaW5uZXIgYXJyYXlcbiAgcmV0dXJuIFtcbiAgICAuLi5jb29yZGluYXRlcy5zbGljZSgwLCBwb3NpdGlvbkluZGV4ZXNbMF0pLFxuICAgIGltbXV0YWJseVJlcGxhY2VQb3NpdGlvbihcbiAgICAgIGNvb3JkaW5hdGVzW3Bvc2l0aW9uSW5kZXhlc1swXV0sXG4gICAgICBwb3NpdGlvbkluZGV4ZXMuc2xpY2UoMSwgcG9zaXRpb25JbmRleGVzLmxlbmd0aCksXG4gICAgICB1cGRhdGVkUG9zaXRpb24sXG4gICAgICBpc1BvbHlnb25hbFxuICAgICksXG4gICAgLi4uY29vcmRpbmF0ZXMuc2xpY2UocG9zaXRpb25JbmRleGVzWzBdICsgMSksXG4gIF07XG59XG5cbmZ1bmN0aW9uIGltbXV0YWJseVJlbW92ZVBvc2l0aW9uKFxuICBjb29yZGluYXRlczogYW55LFxuICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgaXNQb2x5Z29uYWw6IGJvb2xlYW5cbik6IGFueSB7XG4gIGlmICghcG9zaXRpb25JbmRleGVzKSB7XG4gICAgcmV0dXJuIGNvb3JkaW5hdGVzO1xuICB9XG4gIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgRXJyb3IoJ011c3Qgc3BlY2lmeSB0aGUgaW5kZXggb2YgdGhlIHBvc2l0aW9uIHRvIHJlbW92ZScpO1xuICB9XG4gIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgY29uc3QgdXBkYXRlZCA9IFtcbiAgICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKDAsIHBvc2l0aW9uSW5kZXhlc1swXSksXG4gICAgICAuLi5jb29yZGluYXRlcy5zbGljZShwb3NpdGlvbkluZGV4ZXNbMF0gKyAxKSxcbiAgICBdO1xuXG4gICAgaWYgKFxuICAgICAgaXNQb2x5Z29uYWwgJiZcbiAgICAgIChwb3NpdGlvbkluZGV4ZXNbMF0gPT09IDAgfHwgcG9zaXRpb25JbmRleGVzWzBdID09PSBjb29yZGluYXRlcy5sZW5ndGggLSAxKVxuICAgICkge1xuICAgICAgLy8gZm9yIHBvbHlnb25zLCB0aGUgZmlyc3QgcG9pbnQgaXMgcmVwZWF0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXlcbiAgICAgIC8vIHNvLCBpZiB0aGUgZmlyc3QvbGFzdCBjb29yZGluYXRlIGlzIHRvIGJlIHJlbW92ZWQsIGNvb3JkaW5hdGVzWzFdIHdpbGwgYmUgdGhlIG5ldyBmaXJzdC9sYXN0IGNvb3JkaW5hdGVcbiAgICAgIGlmIChwb3NpdGlvbkluZGV4ZXNbMF0gPT09IDApIHtcbiAgICAgICAgLy8gY2hhbmdlIHRoZSBsYXN0IHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBmaXJzdFxuICAgICAgICB1cGRhdGVkW3VwZGF0ZWQubGVuZ3RoIC0gMV0gPSB1cGRhdGVkWzBdO1xuICAgICAgfSBlbHNlIGlmIChwb3NpdGlvbkluZGV4ZXNbMF0gPT09IGNvb3JkaW5hdGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgLy8gY2hhbmdlIHRoZSBmaXJzdCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgbGFzdFxuICAgICAgICB1cGRhdGVkWzBdID0gdXBkYXRlZFt1cGRhdGVkLmxlbmd0aCAtIDFdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdXBkYXRlZDtcbiAgfVxuXG4gIC8vIHJlY3Vyc2l2ZWx5IHVwZGF0ZSBpbm5lciBhcnJheVxuICByZXR1cm4gW1xuICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKDAsIHBvc2l0aW9uSW5kZXhlc1swXSksXG4gICAgaW1tdXRhYmx5UmVtb3ZlUG9zaXRpb24oXG4gICAgICBjb29yZGluYXRlc1twb3NpdGlvbkluZGV4ZXNbMF1dLFxuICAgICAgcG9zaXRpb25JbmRleGVzLnNsaWNlKDEsIHBvc2l0aW9uSW5kZXhlcy5sZW5ndGgpLFxuICAgICAgaXNQb2x5Z29uYWxcbiAgICApLFxuICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKHBvc2l0aW9uSW5kZXhlc1swXSArIDEpLFxuICBdO1xufVxuXG5mdW5jdGlvbiBpbW11dGFibHlBZGRQb3NpdGlvbihcbiAgY29vcmRpbmF0ZXM6IGFueSxcbiAgcG9zaXRpb25JbmRleGVzOiBudW1iZXJbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHBvc2l0aW9uVG9BZGQ6IFBvc2l0aW9uLFxuICBpc1BvbHlnb25hbDogYm9vbGVhblxuKTogYW55IHtcbiAgaWYgKCFwb3NpdGlvbkluZGV4ZXMpIHtcbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gIH1cbiAgaWYgKHBvc2l0aW9uSW5kZXhlcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBFcnJvcignTXVzdCBzcGVjaWZ5IHRoZSBpbmRleCBvZiB0aGUgcG9zaXRpb24gdG8gcmVtb3ZlJyk7XG4gIH1cbiAgaWYgKHBvc2l0aW9uSW5kZXhlcy5sZW5ndGggPT09IDEpIHtcbiAgICBjb25zdCB1cGRhdGVkID0gW1xuICAgICAgLi4uY29vcmRpbmF0ZXMuc2xpY2UoMCwgcG9zaXRpb25JbmRleGVzWzBdKSxcbiAgICAgIHBvc2l0aW9uVG9BZGQsXG4gICAgICAuLi5jb29yZGluYXRlcy5zbGljZShwb3NpdGlvbkluZGV4ZXNbMF0pLFxuICAgIF07XG4gICAgcmV0dXJuIHVwZGF0ZWQ7XG4gIH1cblxuICAvLyByZWN1cnNpdmVseSB1cGRhdGUgaW5uZXIgYXJyYXlcbiAgcmV0dXJuIFtcbiAgICAuLi5jb29yZGluYXRlcy5zbGljZSgwLCBwb3NpdGlvbkluZGV4ZXNbMF0pLFxuICAgIGltbXV0YWJseUFkZFBvc2l0aW9uKFxuICAgICAgY29vcmRpbmF0ZXNbcG9zaXRpb25JbmRleGVzWzBdXSxcbiAgICAgIHBvc2l0aW9uSW5kZXhlcy5zbGljZSgxLCBwb3NpdGlvbkluZGV4ZXMubGVuZ3RoKSxcbiAgICAgIHBvc2l0aW9uVG9BZGQsXG4gICAgICBpc1BvbHlnb25hbFxuICAgICksXG4gICAgLi4uY29vcmRpbmF0ZXMuc2xpY2UocG9zaXRpb25JbmRleGVzWzBdICsgMSksXG4gIF07XG59XG5cbmZ1bmN0aW9uIHBydW5lR2VvbWV0cnlJZk5lY2Vzc2FyeShnZW9tZXRyeTogR2VvbWV0cnkpIHtcbiAgc3dpdGNoIChnZW9tZXRyeS50eXBlKSB7XG4gICAgY2FzZSAnUG9seWdvbic6XG4gICAgICBwcnVuZVBvbHlnb25JZk5lY2Vzc2FyeShnZW9tZXRyeSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdNdWx0aUxpbmVTdHJpbmcnOlxuICAgICAgcHJ1bmVNdWx0aUxpbmVTdHJpbmdJZk5lY2Vzc2FyeShnZW9tZXRyeSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdNdWx0aVBvbHlnb24nOlxuICAgICAgcHJ1bmVNdWx0aVBvbHlnb25JZk5lY2Vzc2FyeShnZW9tZXRyeSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gTm90IGRvd25ncmFkYWJsZVxuICAgICAgYnJlYWs7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJ1bmVQb2x5Z29uSWZOZWNlc3NhcnkoZ2VvbWV0cnk6IFBvbHlnb24pIHtcbiAgY29uc3QgcG9seWdvbiA9IGdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuXG4gIC8vIElmIGFueSBob2xlIGlzIG5vIGxvbmdlciBhIHBvbHlnb24sIHJlbW92ZSB0aGUgaG9sZSBlbnRpcmVseVxuICBmb3IgKGxldCBob2xlSW5kZXggPSAxOyBob2xlSW5kZXggPCBwb2x5Z29uLmxlbmd0aDsgaG9sZUluZGV4KyspIHtcbiAgICBpZiAocmVtb3ZlSG9sZUlmTmVjZXNzYXJ5KHBvbHlnb24sIGhvbGVJbmRleCkpIHtcbiAgICAgIC8vIEl0IHdhcyByZW1vdmVkLCBzbyBrZWVwIHRoZSBpbmRleCB0aGUgc2FtZVxuICAgICAgaG9sZUluZGV4LS07XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBydW5lTXVsdGlMaW5lU3RyaW5nSWZOZWNlc3NhcnkoZ2VvbWV0cnk6IE11bHRpTGluZVN0cmluZykge1xuICBmb3IgKGxldCBsaW5lU3RyaW5nSW5kZXggPSAwOyBsaW5lU3RyaW5nSW5kZXggPCBnZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IGxpbmVTdHJpbmdJbmRleCsrKSB7XG4gICAgY29uc3QgbGluZVN0cmluZyA9IGdlb21ldHJ5LmNvb3JkaW5hdGVzW2xpbmVTdHJpbmdJbmRleF07XG4gICAgaWYgKGxpbmVTdHJpbmcubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyBPbmx5IGEgc2luZ2xlIHBvc2l0aW9uIGxlZnQgb24gdGhpcyBMaW5lU3RyaW5nLCBzbyByZW1vdmUgaXQgKGNhbid0IGhhdmUgUG9pbnQgaW4gTXVsdGlMaW5lU3RyaW5nKVxuICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMuc3BsaWNlKGxpbmVTdHJpbmdJbmRleCwgMSk7XG4gICAgICAvLyBLZWVwIHRoZSBpbmRleCB0aGUgc2FtZVxuICAgICAgbGluZVN0cmluZ0luZGV4LS07XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBydW5lTXVsdGlQb2x5Z29uSWZOZWNlc3NhcnkoZ2VvbWV0cnk6IE11bHRpUG9seWdvbikge1xuICBmb3IgKGxldCBwb2x5Z29uSW5kZXggPSAwOyBwb2x5Z29uSW5kZXggPCBnZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IHBvbHlnb25JbmRleCsrKSB7XG4gICAgY29uc3QgcG9seWdvbiA9IGdlb21ldHJ5LmNvb3JkaW5hdGVzW3BvbHlnb25JbmRleF07XG4gICAgY29uc3Qgb3V0ZXJSaW5nID0gcG9seWdvblswXTtcblxuICAgIC8vIElmIHRoZSBvdXRlciByaW5nIGlzIG5vIGxvbmdlciBhIHBvbHlnb24sIHJlbW92ZSB0aGUgd2hvbGUgcG9seWdvblxuICAgIGlmIChvdXRlclJpbmcubGVuZ3RoIDw9IDMpIHtcbiAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzLnNwbGljZShwb2x5Z29uSW5kZXgsIDEpO1xuICAgICAgLy8gSXQgd2FzIHJlbW92ZWQsIHNvIGtlZXAgdGhlIGluZGV4IHRoZSBzYW1lXG4gICAgICBwb2x5Z29uSW5kZXgtLTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBob2xlSW5kZXggPSAxOyBob2xlSW5kZXggPCBwb2x5Z29uLmxlbmd0aDsgaG9sZUluZGV4KyspIHtcbiAgICAgIGlmIChyZW1vdmVIb2xlSWZOZWNlc3NhcnkocG9seWdvbiwgaG9sZUluZGV4KSkge1xuICAgICAgICAvLyBJdCB3YXMgcmVtb3ZlZCwgc28ga2VlcCB0aGUgaW5kZXggdGhlIHNhbWVcbiAgICAgICAgaG9sZUluZGV4LS07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUhvbGVJZk5lY2Vzc2FyeShwb2x5Z29uOiBQb2x5Z29uQ29vcmRpbmF0ZXMsIGhvbGVJbmRleDogbnVtYmVyKSB7XG4gIGNvbnN0IGhvbGUgPSBwb2x5Z29uW2hvbGVJbmRleF07XG4gIGlmIChob2xlLmxlbmd0aCA8PSAzKSB7XG4gICAgcG9seWdvbi5zcGxpY2UoaG9sZUluZGV4LCAxKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0=","import {\n Feature,\n FeatureCollection,\n Geometry,\n Polygon,\n MultiLineString,\n MultiPolygon,\n Position,\n PolygonCoordinates,\n} from '../geojson-types';\n\nexport class ImmutableFeatureCollection {\n featureCollection: FeatureCollection;\n\n constructor(featureCollection: FeatureCollection) {\n this.featureCollection = featureCollection;\n }\n\n getObject() {\n return this.featureCollection;\n }\n\n /**\n * Replaces the position deeply nested withing the given feature's geometry.\n * Works with Point, MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon.\n *\n * @param featureIndex The index of the feature to update\n * @param positionIndexes An array containing the indexes of the position to replace\n * @param updatedPosition The updated position to place in the result (i.e. [lng, lat])\n *\n * @returns A new `ImmutableFeatureCollection` with the given position replaced. Does not modify this `ImmutableFeatureCollection`.\n */\n replacePosition(\n featureIndex: number,\n positionIndexes: number[] | null | undefined,\n updatedPosition: Position\n ): ImmutableFeatureCollection {\n const geometry = this.featureCollection.features[featureIndex].geometry;\n\n const isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon';\n const updatedGeometry: any = {\n ...geometry,\n coordinates: immutablyReplacePosition(\n geometry.coordinates,\n positionIndexes,\n updatedPosition,\n isPolygonal\n ),\n };\n\n return this.replaceGeometry(featureIndex, updatedGeometry);\n }\n\n /**\n * Removes a position deeply nested in a GeoJSON geometry coordinates array.\n * Works with MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon.\n *\n * @param featureIndex The index of the feature to update\n * @param positionIndexes An array containing the indexes of the postion to remove\n *\n * @returns A new `ImmutableFeatureCollection` with the given coordinate removed. Does not modify this `ImmutableFeatureCollection`.\n */\n removePosition(\n featureIndex: number,\n positionIndexes: number[] | null | undefined\n ): ImmutableFeatureCollection {\n const geometry = this.featureCollection.features[featureIndex].geometry;\n\n if (geometry.type === 'Point') {\n throw Error(`Can't remove a position from a Point or there'd be nothing left`);\n }\n if (\n geometry.type === 'MultiPoint' && // only 1 point left\n geometry.coordinates.length < 2\n ) {\n throw Error(`Can't remove the last point of a MultiPoint or there'd be nothing left`);\n }\n if (\n geometry.type === 'LineString' && // only 2 positions\n geometry.coordinates.length < 3\n ) {\n throw Error(`Can't remove position. LineString must have at least two positions`);\n }\n if (\n geometry.type === 'Polygon' && // outer ring is a triangle\n geometry.coordinates[0].length < 5 &&\n Array.isArray(positionIndexes) && // trying to remove from outer ring\n positionIndexes[0] === 0\n ) {\n throw Error(`Can't remove position. Polygon's outer ring must have at least four positions`);\n }\n if (\n geometry.type === 'MultiLineString' && // only 1 LineString left\n geometry.coordinates.length === 1 && // only 2 positions\n geometry.coordinates[0].length < 3\n ) {\n throw Error(`Can't remove position. MultiLineString must have at least two positions`);\n }\n if (\n geometry.type === 'MultiPolygon' && // only 1 polygon left\n geometry.coordinates.length === 1 && // outer ring is a triangle\n geometry.coordinates[0][0].length < 5 &&\n Array.isArray(positionIndexes) && // trying to remove from first polygon\n positionIndexes[0] === 0 && // trying to remove from outer ring\n positionIndexes[1] === 0\n ) {\n throw Error(\n `Can't remove position. MultiPolygon's outer ring must have at least four positions`\n );\n }\n\n const isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon';\n const updatedGeometry: any = {\n ...geometry,\n coordinates: immutablyRemovePosition(geometry.coordinates, positionIndexes, isPolygonal),\n };\n\n // Handle cases where incomplete geometries need pruned (e.g. holes that were triangles)\n pruneGeometryIfNecessary(updatedGeometry);\n\n return this.replaceGeometry(featureIndex, updatedGeometry);\n }\n\n /**\n * Adds a position deeply nested in a GeoJSON geometry coordinates array.\n * Works with MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon.\n *\n * @param featureIndex The index of the feature to update\n * @param positionIndexes An array containing the indexes of the position that will proceed the new position\n * @param positionToAdd The new position to place in the result (i.e. [lng, lat])\n *\n * @returns A new `ImmutableFeatureCollection` with the given coordinate removed. Does not modify this `ImmutableFeatureCollection`.\n */\n addPosition(\n featureIndex: number,\n positionIndexes: number[] | null | undefined,\n positionToAdd: Position\n ): ImmutableFeatureCollection {\n const geometry = this.featureCollection.features[featureIndex].geometry;\n\n if (geometry.type === 'Point') {\n throw new Error('Unable to add a position to a Point feature');\n }\n\n const isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon';\n const updatedGeometry: any = {\n ...geometry,\n coordinates: immutablyAddPosition(\n geometry.coordinates,\n positionIndexes,\n positionToAdd,\n isPolygonal\n ),\n };\n\n return this.replaceGeometry(featureIndex, updatedGeometry);\n }\n\n replaceGeometry(featureIndex: number, geometry: Geometry): ImmutableFeatureCollection {\n const updatedFeature: any = {\n ...this.featureCollection.features[featureIndex],\n geometry,\n };\n\n const updatedFeatureCollection = {\n ...this.featureCollection,\n features: [\n ...this.featureCollection.features.slice(0, featureIndex),\n updatedFeature,\n ...this.featureCollection.features.slice(featureIndex + 1),\n ],\n };\n\n return new ImmutableFeatureCollection(updatedFeatureCollection);\n }\n\n addFeature(feature: Feature): ImmutableFeatureCollection {\n return this.addFeatures([feature]);\n }\n\n addFeatures(features: Feature[]): ImmutableFeatureCollection {\n const updatedFeatureCollection = {\n ...this.featureCollection,\n features: [...this.featureCollection.features, ...features],\n };\n\n return new ImmutableFeatureCollection(updatedFeatureCollection);\n }\n\n deleteFeature(featureIndex: number) {\n return this.deleteFeatures([featureIndex]);\n }\n\n deleteFeatures(featureIndexes: number[]) {\n const features = [...this.featureCollection.features];\n featureIndexes.sort();\n for (let i = featureIndexes.length - 1; i >= 0; i--) {\n const featureIndex = featureIndexes[i];\n if (featureIndex >= 0 && featureIndex < features.length) {\n features.splice(featureIndex, 1);\n }\n }\n\n const updatedFeatureCollection = {\n ...this.featureCollection,\n features,\n };\n\n return new ImmutableFeatureCollection(updatedFeatureCollection);\n }\n}\n\nfunction getUpdatedPosition(updatedPosition: Position, previousPosition: Position): Position {\n // This function checks if the updatedPosition is missing elevation\n // and copies it from previousPosition\n if (updatedPosition.length === 2 && previousPosition.length === 3) {\n const elevation = (previousPosition as any)[2];\n return [updatedPosition[0], updatedPosition[1], elevation];\n }\n\n return updatedPosition;\n}\n\nfunction immutablyReplacePosition(\n coordinates: any,\n positionIndexes: number[] | null | undefined,\n updatedPosition: Position,\n isPolygonal: boolean\n): any {\n if (!positionIndexes) {\n return coordinates;\n }\n if (positionIndexes.length === 0) {\n return getUpdatedPosition(updatedPosition, coordinates);\n }\n if (positionIndexes.length === 1) {\n const updated = [\n ...coordinates.slice(0, positionIndexes[0]),\n getUpdatedPosition(updatedPosition, coordinates[positionIndexes[0]]),\n ...coordinates.slice(positionIndexes[0] + 1),\n ];\n\n if (\n isPolygonal &&\n (positionIndexes[0] === 0 || positionIndexes[0] === coordinates.length - 1)\n ) {\n // for polygons, the first point is repeated at the end of the array\n // so, update it on both ends of the array\n updated[0] = getUpdatedPosition(updatedPosition, coordinates[0]);\n updated[coordinates.length - 1] = getUpdatedPosition(updatedPosition, coordinates[0]);\n }\n return updated;\n }\n\n // recursively update inner array\n return [\n ...coordinates.slice(0, positionIndexes[0]),\n immutablyReplacePosition(\n coordinates[positionIndexes[0]],\n positionIndexes.slice(1, positionIndexes.length),\n updatedPosition,\n isPolygonal\n ),\n ...coordinates.slice(positionIndexes[0] + 1),\n ];\n}\n\nfunction immutablyRemovePosition(\n coordinates: any,\n positionIndexes: number[] | null | undefined,\n isPolygonal: boolean\n): any {\n if (!positionIndexes) {\n return coordinates;\n }\n if (positionIndexes.length === 0) {\n throw Error('Must specify the index of the position to remove');\n }\n if (positionIndexes.length === 1) {\n const updated = [\n ...coordinates.slice(0, positionIndexes[0]),\n ...coordinates.slice(positionIndexes[0] + 1),\n ];\n\n if (\n isPolygonal &&\n (positionIndexes[0] === 0 || positionIndexes[0] === coordinates.length - 1)\n ) {\n // for polygons, the first point is repeated at the end of the array\n // so, if the first/last coordinate is to be removed, coordinates[1] will be the new first/last coordinate\n if (positionIndexes[0] === 0) {\n // change the last to be the same as the first\n updated[updated.length - 1] = updated[0];\n } else if (positionIndexes[0] === coordinates.length - 1) {\n // change the first to be the same as the last\n updated[0] = updated[updated.length - 1];\n }\n }\n return updated;\n }\n\n // recursively update inner array\n return [\n ...coordinates.slice(0, positionIndexes[0]),\n immutablyRemovePosition(\n coordinates[positionIndexes[0]],\n positionIndexes.slice(1, positionIndexes.length),\n isPolygonal\n ),\n ...coordinates.slice(positionIndexes[0] + 1),\n ];\n}\n\nfunction immutablyAddPosition(\n coordinates: any,\n positionIndexes: number[] | null | undefined,\n positionToAdd: Position,\n isPolygonal: boolean\n): any {\n if (!positionIndexes) {\n return coordinates;\n }\n if (positionIndexes.length === 0) {\n throw Error('Must specify the index of the position to remove');\n }\n if (positionIndexes.length === 1) {\n const updated = [\n ...coordinates.slice(0, positionIndexes[0]),\n positionToAdd,\n ...coordinates.slice(positionIndexes[0]),\n ];\n return updated;\n }\n\n // recursively update inner array\n return [\n ...coordinates.slice(0, positionIndexes[0]),\n immutablyAddPosition(\n coordinates[positionIndexes[0]],\n positionIndexes.slice(1, positionIndexes.length),\n positionToAdd,\n isPolygonal\n ),\n ...coordinates.slice(positionIndexes[0] + 1),\n ];\n}\n\nfunction pruneGeometryIfNecessary(geometry: Geometry) {\n switch (geometry.type) {\n case 'Polygon':\n prunePolygonIfNecessary(geometry);\n break;\n case 'MultiLineString':\n pruneMultiLineStringIfNecessary(geometry);\n break;\n case 'MultiPolygon':\n pruneMultiPolygonIfNecessary(geometry);\n break;\n default:\n // Not downgradable\n break;\n }\n}\n\nfunction prunePolygonIfNecessary(geometry: Polygon) {\n const polygon = geometry.coordinates;\n\n // If any hole is no longer a polygon, remove the hole entirely\n for (let holeIndex = 1; holeIndex < polygon.length; holeIndex++) {\n if (removeHoleIfNecessary(polygon, holeIndex)) {\n // It was removed, so keep the index the same\n holeIndex--;\n }\n }\n}\n\nfunction pruneMultiLineStringIfNecessary(geometry: MultiLineString) {\n for (let lineStringIndex = 0; lineStringIndex < geometry.coordinates.length; lineStringIndex++) {\n const lineString = geometry.coordinates[lineStringIndex];\n if (lineString.length === 1) {\n // Only a single position left on this LineString, so remove it (can't have Point in MultiLineString)\n geometry.coordinates.splice(lineStringIndex, 1);\n // Keep the index the same\n lineStringIndex--;\n }\n }\n}\n\nfunction pruneMultiPolygonIfNecessary(geometry: MultiPolygon) {\n for (let polygonIndex = 0; polygonIndex < geometry.coordinates.length; polygonIndex++) {\n const polygon = geometry.coordinates[polygonIndex];\n const outerRing = polygon[0];\n\n // If the outer ring is no longer a polygon, remove the whole polygon\n if (outerRing.length <= 3) {\n geometry.coordinates.splice(polygonIndex, 1);\n // It was removed, so keep the index the same\n polygonIndex--;\n }\n\n for (let holeIndex = 1; holeIndex < polygon.length; holeIndex++) {\n if (removeHoleIfNecessary(polygon, holeIndex)) {\n // It was removed, so keep the index the same\n holeIndex--;\n }\n }\n }\n}\n\nfunction removeHoleIfNecessary(polygon: PolygonCoordinates, holeIndex: number) {\n const hole = polygon[holeIndex];\n if (hole.length <= 3) {\n polygon.splice(holeIndex, 1);\n return true;\n }\n return false;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ModifyMode = void 0;\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ModifyMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(ModifyMode, _GeoJsonEditMode);\n\n var _super = _createSuper(ModifyMode);\n\n function ModifyMode() {\n _classCallCheck(this, ModifyMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(ModifyMode, [{\n key: \"getGuides\",\n value: function getGuides(props) {\n var _this = this;\n\n var handles = [];\n var data = props.data,\n lastPointerMoveEvent = props.lastPointerMoveEvent;\n var features = data.features;\n var picks = lastPointerMoveEvent && lastPointerMoveEvent.picks;\n var mapCoords = lastPointerMoveEvent && lastPointerMoveEvent.mapCoords;\n\n var _iterator = _createForOfIteratorHelper(props.selectedIndexes),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _index = _step.value;\n\n if (_index < features.length) {\n var geometry = features[_index].geometry;\n handles.push.apply(handles, _toConsumableArray((0, _utils.getEditHandlesForGeometry)(geometry, _index)));\n } else {\n console.warn(\"selectedFeatureIndexes out of range \".concat(_index)); // eslint-disable-line no-console,no-undef\n }\n } // intermediate edit handle\n\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n if (picks && picks.length && mapCoords) {\n var _props$modeConfig;\n\n var existingEditHandle = (0, _utils.getPickedExistingEditHandle)(picks); // don't show intermediate point when too close to an existing edit handle\n\n var featureAsPick = !existingEditHandle && picks.find(function (pick) {\n return !pick.isGuide;\n }); // is the feature in the pick selected\n\n if (featureAsPick && !featureAsPick.object.geometry.type.includes('Point') && !(((_props$modeConfig = props.modeConfig) === null || _props$modeConfig === void 0 ? void 0 : _props$modeConfig.lockRectangles) && featureAsPick.object.properties.shape === 'Rectangle') && props.selectedIndexes.includes(featureAsPick.index)) {\n var intermediatePoint = null;\n var positionIndexPrefix = [];\n var referencePoint = (0, _helpers.point)(mapCoords); // process all lines of the (single) feature\n\n (0, _utils.recursivelyTraverseNestedArrays)(featureAsPick.object.geometry.coordinates, [], function (lineString, prefix) {\n var lineStringFeature = (0, _helpers.lineString)(lineString);\n\n var candidateIntermediatePoint = _this.getNearestPoint( // @ts-ignore\n lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport);\n\n if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) {\n intermediatePoint = candidateIntermediatePoint;\n positionIndexPrefix = prefix;\n }\n }); // tack on the lone intermediate point to the set of handles\n\n if (intermediatePoint) {\n var _intermediatePoint = intermediatePoint,\n position = _intermediatePoint.geometry.coordinates,\n index = _intermediatePoint.properties.index;\n handles.push({\n type: 'Feature',\n properties: {\n guideType: 'editHandle',\n editHandleType: 'intermediate',\n featureIndex: featureAsPick.index,\n positionIndexes: [].concat(_toConsumableArray(positionIndexPrefix), [index + 1])\n },\n geometry: {\n type: 'Point',\n coordinates: position\n }\n });\n }\n }\n }\n\n return {\n type: 'FeatureCollection',\n features: handles\n };\n } // turf.js does not support elevation for nearestPointOnLine\n\n }, {\n key: \"getNearestPoint\",\n value: function getNearestPoint(line, inPoint, viewport) {\n var coordinates = line.geometry.coordinates;\n\n if (coordinates.some(function (coord) {\n return coord.length > 2;\n })) {\n if (viewport) {\n // This line has elevation, we need to use alternative algorithm\n return (0, _utils.nearestPointOnProjectedLine)(line, inPoint, viewport);\n } // eslint-disable-next-line no-console,no-undef\n\n\n console.log('Editing 3D point but modeConfig.viewport not provided. Falling back to 2D logic.');\n }\n\n return (0, _utils.nearestPointOnLine)(line, inPoint, viewport);\n }\n }, {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n var pickedExistingHandle = (0, _utils.getPickedExistingEditHandle)(event.picks);\n var pickedIntermediateHandle = (0, _utils.getPickedIntermediateEditHandle)(event.picks);\n\n if (pickedExistingHandle) {\n var _pickedExistingHandle = pickedExistingHandle.properties,\n featureIndex = _pickedExistingHandle.featureIndex,\n positionIndexes = _pickedExistingHandle.positionIndexes;\n var updatedData;\n\n try {\n updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).removePosition(featureIndex, positionIndexes).getObject();\n } catch (ignored) {// This happens if user attempts to remove the last point\n }\n\n if (updatedData) {\n props.onEdit({\n updatedData: updatedData,\n editType: 'removePosition',\n editContext: {\n featureIndexes: [featureIndex],\n positionIndexes: positionIndexes,\n position: pickedExistingHandle.geometry.coordinates\n }\n });\n }\n } else if (pickedIntermediateHandle) {\n var _props$modeConfig2;\n\n var _pickedIntermediateHa = pickedIntermediateHandle.properties,\n _featureIndex = _pickedIntermediateHa.featureIndex,\n _positionIndexes = _pickedIntermediateHa.positionIndexes;\n var feature = props.data.features[_featureIndex];\n var canAddPosition = !(((_props$modeConfig2 = props.modeConfig) === null || _props$modeConfig2 === void 0 ? void 0 : _props$modeConfig2.lockRectangles) && (feature === null || feature === void 0 ? void 0 : feature.properties.shape) === 'Rectangle');\n\n if (canAddPosition) {\n var _updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).addPosition(_featureIndex, _positionIndexes, pickedIntermediateHandle.geometry.coordinates).getObject();\n\n if (_updatedData) {\n props.onEdit({\n updatedData: _updatedData,\n editType: 'addPosition',\n editContext: {\n featureIndexes: [_featureIndex],\n positionIndexes: _positionIndexes,\n position: pickedIntermediateHandle.geometry.coordinates\n }\n });\n }\n }\n }\n }\n }, {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks);\n\n if (editHandle) {\n // Cancel map panning if pointer went down on an edit handle\n event.cancelPan();\n\n this._dragEditHandle('movePosition', props, editHandle, event);\n }\n }\n }, {\n key: \"_dragEditHandle\",\n value: function _dragEditHandle(editType, props, editHandle, event) {\n var _props$modeConfig3;\n\n var editHandleProperties = editHandle.properties;\n var editedFeature = props.data.features[editHandleProperties.featureIndex];\n var updatedData;\n\n if (((_props$modeConfig3 = props.modeConfig) === null || _props$modeConfig3 === void 0 ? void 0 : _props$modeConfig3.lockRectangles) && editedFeature.properties.shape === 'Rectangle') {\n var coordinates = (0, _utils.updateRectanglePosition)(editedFeature, editHandleProperties.positionIndexes[1], event.mapCoords);\n updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replaceGeometry(editHandleProperties.featureIndex, {\n coordinates: coordinates,\n type: 'Polygon'\n }).getObject();\n } else {\n updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replacePosition(editHandleProperties.featureIndex, editHandleProperties.positionIndexes, event.mapCoords).getObject();\n }\n\n props.onEdit({\n updatedData: updatedData,\n editType: editType,\n editContext: {\n featureIndexes: [editHandleProperties.featureIndex],\n positionIndexes: editHandleProperties.positionIndexes,\n position: event.mapCoords\n }\n });\n }\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n var cursor = this.getCursor(event);\n props.onUpdateCursor(cursor);\n }\n }, {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n var selectedFeatureIndexes = props.selectedIndexes;\n var editHandle = (0, _utils.getPickedIntermediateEditHandle)(event.picks);\n\n if (selectedFeatureIndexes.length && editHandle) {\n var editHandleProperties = editHandle.properties;\n var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).addPosition(editHandleProperties.featureIndex, editHandleProperties.positionIndexes, event.mapCoords).getObject();\n props.onEdit({\n updatedData: updatedData,\n editType: 'addPosition',\n editContext: {\n featureIndexes: [editHandleProperties.featureIndex],\n positionIndexes: editHandleProperties.positionIndexes,\n position: event.mapCoords\n }\n });\n }\n }\n }, {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n var selectedFeatureIndexes = props.selectedIndexes;\n var editHandle = (0, _utils.getPickedEditHandle)(event.picks);\n\n if (selectedFeatureIndexes.length && editHandle) {\n this._dragEditHandle('finishMovePosition', props, editHandle, event);\n }\n }\n }, {\n key: \"getCursor\",\n value: function getCursor(event) {\n var picks = event && event.picks || [];\n var handlesPicked = (0, _utils.getPickedEditHandles)(picks);\n\n if (handlesPicked.length) {\n return 'cell';\n }\n\n return null;\n }\n }]);\n\n return ModifyMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.ModifyMode = ModifyMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbW9kaWZ5LW1vZGUudHMiXSwibmFtZXMiOlsiTW9kaWZ5TW9kZSIsInByb3BzIiwiaGFuZGxlcyIsImRhdGEiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsImZlYXR1cmVzIiwicGlja3MiLCJtYXBDb29yZHMiLCJzZWxlY3RlZEluZGV4ZXMiLCJpbmRleCIsImxlbmd0aCIsImdlb21ldHJ5IiwicHVzaCIsImNvbnNvbGUiLCJ3YXJuIiwiZXhpc3RpbmdFZGl0SGFuZGxlIiwiZmVhdHVyZUFzUGljayIsImZpbmQiLCJwaWNrIiwiaXNHdWlkZSIsIm9iamVjdCIsInR5cGUiLCJpbmNsdWRlcyIsIm1vZGVDb25maWciLCJsb2NrUmVjdGFuZ2xlcyIsInByb3BlcnRpZXMiLCJzaGFwZSIsImludGVybWVkaWF0ZVBvaW50IiwicG9zaXRpb25JbmRleFByZWZpeCIsInJlZmVyZW5jZVBvaW50IiwiY29vcmRpbmF0ZXMiLCJsaW5lU3RyaW5nIiwicHJlZml4IiwibGluZVN0cmluZ0ZlYXR1cmUiLCJjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludCIsImdldE5lYXJlc3RQb2ludCIsInZpZXdwb3J0IiwiZGlzdCIsInBvc2l0aW9uIiwiZ3VpZGVUeXBlIiwiZWRpdEhhbmRsZVR5cGUiLCJmZWF0dXJlSW5kZXgiLCJwb3NpdGlvbkluZGV4ZXMiLCJsaW5lIiwiaW5Qb2ludCIsInNvbWUiLCJjb29yZCIsImxvZyIsImV2ZW50IiwicGlja2VkRXhpc3RpbmdIYW5kbGUiLCJwaWNrZWRJbnRlcm1lZGlhdGVIYW5kbGUiLCJ1cGRhdGVkRGF0YSIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwicmVtb3ZlUG9zaXRpb24iLCJnZXRPYmplY3QiLCJpZ25vcmVkIiwib25FZGl0IiwiZWRpdFR5cGUiLCJlZGl0Q29udGV4dCIsImZlYXR1cmVJbmRleGVzIiwiZmVhdHVyZSIsImNhbkFkZFBvc2l0aW9uIiwiYWRkUG9zaXRpb24iLCJlZGl0SGFuZGxlIiwicG9pbnRlckRvd25QaWNrcyIsImNhbmNlbFBhbiIsIl9kcmFnRWRpdEhhbmRsZSIsImVkaXRIYW5kbGVQcm9wZXJ0aWVzIiwiZWRpdGVkRmVhdHVyZSIsInJlcGxhY2VHZW9tZXRyeSIsInJlcGxhY2VQb3NpdGlvbiIsImN1cnNvciIsImdldEN1cnNvciIsIm9uVXBkYXRlQ3Vyc29yIiwic2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsImhhbmRsZXNQaWNrZWQiLCJHZW9Kc29uRWRpdE1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUF3QkE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLFU7Ozs7Ozs7Ozs7Ozs7OEJBQ0RDLEssRUFBNkQ7QUFBQTs7QUFDckUsVUFBTUMsT0FBTyxHQUFHLEVBQWhCO0FBRHFFLFVBRzdEQyxJQUg2RCxHQUc5QkYsS0FIOEIsQ0FHN0RFLElBSDZEO0FBQUEsVUFHdkRDLG9CQUh1RCxHQUc5QkgsS0FIOEIsQ0FHdkRHLG9CQUh1RDtBQUFBLFVBSTdEQyxRQUo2RCxHQUloREYsSUFKZ0QsQ0FJN0RFLFFBSjZEO0FBS3JFLFVBQU1DLEtBQUssR0FBR0Ysb0JBQW9CLElBQUlBLG9CQUFvQixDQUFDRSxLQUEzRDtBQUNBLFVBQU1DLFNBQVMsR0FBR0gsb0JBQW9CLElBQUlBLG9CQUFvQixDQUFDRyxTQUEvRDs7QUFOcUUsaURBUWpETixLQUFLLENBQUNPLGVBUjJDO0FBQUE7O0FBQUE7QUFRckUsNERBQTJDO0FBQUEsY0FBaENDLE1BQWdDOztBQUN6QyxjQUFJQSxNQUFLLEdBQUdKLFFBQVEsQ0FBQ0ssTUFBckIsRUFBNkI7QUFBQSxnQkFDbkJDLFFBRG1CLEdBQ05OLFFBQVEsQ0FBQ0ksTUFBRCxDQURGLENBQ25CRSxRQURtQjtBQUUzQlQsWUFBQUEsT0FBTyxDQUFDVSxJQUFSLE9BQUFWLE9BQU8scUJBQVMsc0NBQTBCUyxRQUExQixFQUFvQ0YsTUFBcEMsQ0FBVCxFQUFQO0FBQ0QsV0FIRCxNQUdPO0FBQ0xJ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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9pbnQsIGxpbmVTdHJpbmcgYXMgdG9MaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQge1xuICByZWN1cnNpdmVseVRyYXZlcnNlTmVzdGVkQXJyYXlzLFxuICBuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUsXG4gIG5lYXJlc3RQb2ludE9uTGluZSxcbiAgZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSxcbiAgZ2V0UGlja2VkRWRpdEhhbmRsZXMsXG4gIGdldFBpY2tlZEVkaXRIYW5kbGUsXG4gIGdldFBpY2tlZEV4aXN0aW5nRWRpdEhhbmRsZSxcbiAgZ2V0UGlja2VkSW50ZXJtZWRpYXRlRWRpdEhhbmRsZSxcbiAgdXBkYXRlUmVjdGFuZ2xlUG9zaXRpb24sXG4gIE5lYXJlc3RQb2ludFR5cGUsXG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IExpbmVTdHJpbmcsIFBvaW50LCBQb2x5Z29uLCBGZWF0dXJlQ29sbGVjdGlvbiwgRmVhdHVyZU9mIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQge1xuICBNb2RlUHJvcHMsXG4gIENsaWNrRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIERyYWdnaW5nRXZlbnQsXG4gIFZpZXdwb3J0LFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxuICBFZGl0SGFuZGxlRmVhdHVyZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5pbXBvcnQgeyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4vaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBNb2RpZnlNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgaGFuZGxlcyA9IFtdO1xuXG4gICAgY29uc3QgeyBkYXRhLCBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyBmZWF0dXJlcyB9ID0gZGF0YTtcbiAgICBjb25zdCBwaWNrcyA9IGxhc3RQb2ludGVyTW92ZUV2ZW50ICYmIGxhc3RQb2ludGVyTW92ZUV2ZW50LnBpY2tzO1xuICAgIGNvbnN0IG1hcENvb3JkcyA9IGxhc3RQb2ludGVyTW92ZUV2ZW50ICYmIGxhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3JkcztcblxuICAgIGZvciAoY29uc3QgaW5kZXggb2YgcHJvcHMuc2VsZWN0ZWRJbmRleGVzKSB7XG4gICAgICBpZiAoaW5kZXggPCBmZWF0dXJlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgeyBnZW9tZXRyeSB9ID0gZmVhdHVyZXNbaW5kZXhdO1xuICAgICAgICBoYW5kbGVzLnB1c2goLi4uZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeShnZW9tZXRyeSwgaW5kZXgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2Fybihgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyBvdXQgb2YgcmFuZ2UgJHtpbmRleH1gKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlLG5vLXVuZGVmXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaW50ZXJtZWRpYXRlIGVkaXQgaGFuZGxlXG4gICAgaWYgKHBpY2tzICYmIHBpY2tzLmxlbmd0aCAmJiBtYXBDb29yZHMpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nRWRpdEhhbmRsZSA9IGdldFBpY2tlZEV4aXN0aW5nRWRpdEhhbmRsZShwaWNrcyk7XG4gICAgICAvLyBkb24ndCBzaG93IGludGVybWVkaWF0ZSBwb2ludCB3aGVuIHRvbyBjbG9zZSB0byBhbiBleGlzdGluZyBlZGl0IGhhbmRsZVxuICAgICAgY29uc3QgZmVhdHVyZUFzUGljayA9ICFleGlzdGluZ0VkaXRIYW5kbGUgJiYgcGlja3MuZmluZCgocGljaykgPT4gIXBpY2suaXNHdWlkZSk7XG5cbiAgICAgIC8vIGlzIHRoZSBmZWF0dXJlIGluIHRoZSBwaWNrIHNlbGVjdGVkXG4gICAgICBpZiAoXG4gICAgICAgIGZlYXR1cmVBc1BpY2sgJiZcbiAgICAgICAgIWZlYXR1cmVBc1BpY2sub2JqZWN0Lmdlb21ldHJ5LnR5cGUuaW5jbHVkZXMoJ1BvaW50JykgJiZcbiAgICAgICAgIShcbiAgICAgICAgICBwcm9wcy5tb2RlQ29uZmlnPy5sb2NrUmVjdGFuZ2xlcyAmJiBmZWF0dXJlQXNQaWNrLm9iamVjdC5wcm9wZXJ0aWVzLnNoYXBlID09PSAnUmVjdGFuZ2xlJ1xuICAgICAgICApICYmXG4gICAgICAgIHByb3BzLnNlbGVjdGVkSW5kZXhlcy5pbmNsdWRlcyhmZWF0dXJlQXNQaWNrLmluZGV4KVxuICAgICAgKSB7XG4gICAgICAgIGxldCBpbnRlcm1lZGlhdGVQb2ludDogTmVhcmVzdFBvaW50VHlwZSB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICAgICAgICBsZXQgcG9zaXRpb25JbmRleFByZWZpeCA9IFtdO1xuICAgICAgICBjb25zdCByZWZlcmVuY2VQb2ludCA9IHBvaW50KG1hcENvb3Jkcyk7XG4gICAgICAgIC8vIHByb2Nlc3MgYWxsIGxpbmVzIG9mIHRoZSAoc2luZ2xlKSBmZWF0dXJlXG4gICAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VOZXN0ZWRBcnJheXMoXG4gICAgICAgICAgZmVhdHVyZUFzUGljay5vYmplY3QuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgW10sXG4gICAgICAgICAgKGxpbmVTdHJpbmcsIHByZWZpeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGluZVN0cmluZ0ZlYXR1cmUgPSB0b0xpbmVTdHJpbmcobGluZVN0cmluZyk7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludCA9IHRoaXMuZ2V0TmVhcmVzdFBvaW50KFxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGxpbmVTdHJpbmdGZWF0dXJlLFxuICAgICAgICAgICAgICByZWZlcmVuY2VQb2ludCxcbiAgICAgICAgICAgICAgcHJvcHMubW9kZUNvbmZpZyAmJiBwcm9wcy5tb2RlQ29uZmlnLnZpZXdwb3J0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAhaW50ZXJtZWRpYXRlUG9pbnQgfHxcbiAgICAgICAgICAgICAgY2FuZGlkYXRlSW50ZXJtZWRpYXRlUG9pbnQucHJvcGVydGllcy5kaXN0IDwgaW50ZXJtZWRpYXRlUG9pbnQucHJvcGVydGllcy5kaXN0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlUG9pbnQgPSBjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludDtcbiAgICAgICAgICAgICAgcG9zaXRpb25JbmRleFByZWZpeCA9IHByZWZpeDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIC8vIHRhY2sgb24gdGhlIGxvbmUgaW50ZXJtZWRpYXRlIHBvaW50IHRvIHRoZSBzZXQgb2YgaGFuZGxlc1xuICAgICAgICBpZiAoaW50ZXJtZWRpYXRlUG9pbnQpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBnZW9tZXRyeTogeyBjb29yZGluYXRlczogcG9zaXRpb24gfSxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHsgaW5kZXggfSxcbiAgICAgICAgICB9ID0gaW50ZXJtZWRpYXRlUG9pbnQ7XG4gICAgICAgICAgaGFuZGxlcy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgZ3VpZGVUeXBlOiAnZWRpdEhhbmRsZScsXG4gICAgICAgICAgICAgIGVkaXRIYW5kbGVUeXBlOiAnaW50ZXJtZWRpYXRlJyxcbiAgICAgICAgICAgICAgZmVhdHVyZUluZGV4OiBmZWF0dXJlQXNQaWNrLmluZGV4LFxuICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IFsuLi5wb3NpdGlvbkluZGV4UHJlZml4LCBpbmRleCArIDFdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBwb3NpdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBoYW5kbGVzLFxuICAgIH07XG4gIH1cblxuICAvLyB0dXJmLmpzIGRvZXMgbm90IHN1cHBvcnQgZWxldmF0aW9uIGZvciBuZWFyZXN0UG9pbnRPbkxpbmVcbiAgZ2V0TmVhcmVzdFBvaW50KFxuICAgIGxpbmU6IEZlYXR1cmVPZjxMaW5lU3RyaW5nPixcbiAgICBpblBvaW50OiBGZWF0dXJlT2Y8UG9pbnQ+LFxuICAgIHZpZXdwb3J0OiBWaWV3cG9ydCB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogTmVhcmVzdFBvaW50VHlwZSB7XG4gICAgY29uc3QgeyBjb29yZGluYXRlcyB9ID0gbGluZS5nZW9tZXRyeTtcbiAgICBpZiAoY29vcmRpbmF0ZXMuc29tZSgoY29vcmQpID0+IGNvb3JkLmxlbmd0aCA+IDIpKSB7XG4gICAgICBpZiAodmlld3BvcnQpIHtcbiAgICAgICAgLy8gVGhpcyBsaW5lIGhhcyBlbGV2YXRpb24sIHdlIG5lZWQgdG8gdXNlIGFsdGVybmF0aXZlIGFsZ29yaXRobVxuICAgICAgICByZXR1cm4gbmVhcmVzdFBvaW50T25Qcm9qZWN0ZWRMaW5lKGxpbmUsIGluUG9pbnQsIHZpZXdwb3J0KTtcbiAgICAgIH1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlLG5vLXVuZGVmXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgJ0VkaXRpbmcgM0QgcG9pbnQgYnV0IG1vZGVDb25maWcudmlld3BvcnQgbm90IHByb3ZpZGVkLiBGYWxsaW5nIGJhY2sgdG8gMkQgbG9naWMuJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG5lYXJlc3RQb2ludE9uTGluZShsaW5lLCBpblBvaW50LCB2aWV3cG9ydCk7XG4gIH1cblxuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBwaWNrZWRFeGlzdGluZ0hhbmRsZSA9IGdldFBpY2tlZEV4aXN0aW5nRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG4gICAgY29uc3QgcGlja2VkSW50ZXJtZWRpYXRlSGFuZGxlID0gZ2V0UGlja2VkSW50ZXJtZWRpYXRlRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG5cbiAgICBpZiAocGlja2VkRXhpc3RpbmdIYW5kbGUpIHtcbiAgICAgIGNvbnN0IHsgZmVhdHVyZUluZGV4LCBwb3NpdGlvbkluZGV4ZXMgfSA9IHBpY2tlZEV4aXN0aW5nSGFuZGxlLnByb3BlcnRpZXM7XG5cbiAgICAgIGxldCB1cGRhdGVkRGF0YTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpXG4gICAgICAgICAgLnJlbW92ZVBvc2l0aW9uKGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzKVxuICAgICAgICAgIC5nZXRPYmplY3QoKTtcbiAgICAgIH0gY2F0Y2ggKGlnbm9yZWQpIHtcbiAgICAgICAgLy8gVGhpcyBoYXBwZW5zIGlmIHVzZXIgYXR0ZW1wdHMgdG8gcmVtb3ZlIHRoZSBsYXN0IHBvaW50XG4gICAgICB9XG5cbiAgICAgIGlmICh1cGRhdGVkRGF0YSkge1xuICAgICAgICBwcm9wcy5vbkVkaXQoe1xuICAgICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICAgIGVkaXRUeXBlOiAncmVtb3ZlUG9zaXRpb24nLFxuICAgICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgICBmZWF0dXJlSW5kZXhlczogW2ZlYXR1cmVJbmRleF0sXG4gICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgICBwb3NpdGlvbjogcGlja2VkRXhpc3RpbmdIYW5kbGUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwaWNrZWRJbnRlcm1lZGlhdGVIYW5kbGUpIHtcbiAgICAgIGNvbnN0IHsgZmVhdHVyZUluZGV4LCBwb3NpdGlvbkluZGV4ZXMgfSA9IHBpY2tlZEludGVybWVkaWF0ZUhhbmRsZS5wcm9wZXJ0aWVzO1xuXG4gICAgICBjb25zdCBmZWF0dXJlID0gcHJvcHMuZGF0YS5mZWF0dXJlc1tmZWF0dXJlSW5kZXhdO1xuICAgICAgY29uc3QgY2FuQWRkUG9zaXRpb24gPSAhKFxuICAgICAgICBwcm9wcy5tb2RlQ29uZmlnPy5sb2NrUmVjdGFuZ2xlcyAmJiBmZWF0dXJlPy5wcm9wZXJ0aWVzLnNoYXBlID09PSAnUmVjdGFuZ2xlJ1xuICAgICAgKTtcblxuICAgICAgaWYgKGNhbkFkZFBvc2l0aW9uKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpXG4gICAgICAgICAgLmFkZFBvc2l0aW9uKGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzLCBwaWNrZWRJbnRlcm1lZGlhdGVIYW5kbGUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpXG4gICAgICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgICAgIGlmICh1cGRhdGVkRGF0YSkge1xuICAgICAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgICAgICB1cGRhdGVkRGF0YSxcbiAgICAgICAgICAgIGVkaXRUeXBlOiAnYWRkUG9zaXRpb24nLFxuICAgICAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtmZWF0dXJlSW5kZXhdLFxuICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBwaWNrZWRJbnRlcm1lZGlhdGVIYW5kbGUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRHJhZ2dpbmcoZXZlbnQ6IERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG5cbiAgICBpZiAoZWRpdEhhbmRsZSkge1xuICAgICAgLy8gQ2FuY2VsIG1hcCBwYW5uaW5nIGlmIHBvaW50ZXIgd2VudCBkb3duIG9uIGFuIGVkaXQgaGFuZGxlXG4gICAgICBldmVudC5jYW5jZWxQYW4oKTtcblxuICAgICAgdGhpcy5fZHJhZ0VkaXRIYW5kbGUoJ21vdmVQb3NpdGlvbicsIHByb3BzLCBlZGl0SGFuZGxlLCBldmVudCk7XG4gICAgfVxuICB9XG5cbiAgX2RyYWdFZGl0SGFuZGxlKFxuICAgIGVkaXRUeXBlOiBzdHJpbmcsXG4gICAgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4sXG4gICAgZWRpdEhhbmRsZTogRWRpdEhhbmRsZUZlYXR1cmUsXG4gICAgZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50IHwgRHJhZ2dpbmdFdmVudFxuICApIHtcbiAgICBjb25zdCBlZGl0SGFuZGxlUHJvcGVydGllcyA9IGVkaXRIYW5kbGUucHJvcGVydGllcztcbiAgICBjb25zdCBlZGl0ZWRGZWF0dXJlID0gcHJvcHMuZGF0YS5mZWF0dXJlc1tlZGl0SGFuZGxlUHJvcGVydGllcy5mZWF0dXJlSW5kZXhdO1xuXG4gICAgbGV0IHVwZGF0ZWREYXRhO1xuICAgIGlmIChwcm9wcy5tb2RlQ29uZmlnPy5sb2NrUmVjdGFuZ2xlcyAmJiBlZGl0ZWRGZWF0dXJlLnByb3BlcnRpZXMuc2hhcGUgPT09ICdSZWN0YW5nbGUnKSB7XG4gICAgICBjb25zdCBjb29yZGluYXRlcyA9IHVwZGF0ZVJlY3RhbmdsZVBvc2l0aW9uKFxuICAgICAgICBlZGl0ZWRGZWF0dXJlIGFzIEZlYXR1cmVPZjxQb2x5Z29uPixcbiAgICAgICAgZWRpdEhhbmRsZVByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzFdLFxuICAgICAgICBldmVudC5tYXBDb29yZHNcbiAgICAgICk7XG5cbiAgICAgIHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpXG4gICAgICAgIC5yZXBsYWNlR2VvbWV0cnkoZWRpdEhhbmRsZVByb3BlcnRpZXMuZmVhdHVyZUluZGV4LCB7IGNvb3JkaW5hdGVzLCB0eXBlOiAnUG9seWdvbicgfSlcbiAgICAgICAgLmdldE9iamVjdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKVxuICAgICAgICAucmVwbGFjZVBvc2l0aW9uKFxuICAgICAgICAgIGVkaXRIYW5kbGVQcm9wZXJ0aWVzLmZlYXR1cmVJbmRleCxcbiAgICAgICAgICBlZGl0SGFuZGxlUHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgZXZlbnQubWFwQ29vcmRzXG4gICAgICAgIClcbiAgICAgICAgLmdldE9iamVjdCgpO1xuICAgIH1cblxuICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICB1cGRhdGVkRGF0YSxcbiAgICAgIGVkaXRUeXBlLFxuICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtlZGl0SGFuZGxlUHJvcGVydGllcy5mZWF0dXJlSW5kZXhdLFxuICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IGVkaXRIYW5kbGVQcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgcG9zaXRpb246IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBjb25zdCBjdXJzb3IgPSB0aGlzLmdldEN1cnNvcihldmVudCk7XG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IoY3Vyc29yKTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuXG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEludGVybWVkaWF0ZUVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgIGlmIChzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCAmJiBlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCBlZGl0SGFuZGxlUHJvcGVydGllcyA9IGVkaXRIYW5kbGUucHJvcGVydGllcztcblxuICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSlcbiAgICAgICAgLmFkZFBvc2l0aW9uKFxuICAgICAgICAgIGVkaXRIYW5kbGVQcm9wZXJ0aWVzLmZlYXR1cmVJbmRleCxcbiAgICAgICAgICBlZGl0SGFuZGxlUHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgZXZlbnQubWFwQ29vcmRzXG4gICAgICAgIClcbiAgICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgICBwcm9wcy5vbkVkaXQoe1xuICAgICAgICB1cGRhdGVkRGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICdhZGRQb3NpdGlvbicsXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtlZGl0SGFuZGxlUHJvcGVydGllcy5mZWF0dXJlSW5kZXhdLFxuICAgICAgICAgIHBvc2l0aW9uSW5kZXhlczogZWRpdEhhbmRsZVByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgIHBvc2l0aW9uOiBldmVudC5tYXBDb29yZHMsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMgPSBwcm9wcy5zZWxlY3RlZEluZGV4ZXM7XG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgIGlmIChzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCAmJiBlZGl0SGFuZGxlKSB7XG4gICAgICB0aGlzLl9kcmFnRWRpdEhhbmRsZSgnZmluaXNoTW92ZVBvc2l0aW9uJywgcHJvcHMsIGVkaXRIYW5kbGUsIGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBnZXRDdXJzb3IoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQpOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwaWNrcyA9IChldmVudCAmJiBldmVudC5waWNrcykgfHwgW107XG5cbiAgICBjb25zdCBoYW5kbGVzUGlja2VkID0gZ2V0UGlja2VkRWRpdEhhbmRsZXMocGlja3MpO1xuICAgIGlmIChoYW5kbGVzUGlja2VkLmxlbmd0aCkge1xuICAgICAgcmV0dXJuICdjZWxsJztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==","import { point, lineString as toLineString } from '@turf/helpers';\nimport {\n recursivelyTraverseNestedArrays,\n nearestPointOnProjectedLine,\n nearestPointOnLine,\n getEditHandlesForGeometry,\n getPickedEditHandles,\n getPickedEditHandle,\n getPickedExistingEditHandle,\n getPickedIntermediateEditHandle,\n updateRectanglePosition,\n NearestPointType,\n} from '../utils';\nimport { LineString, Point, Polygon, FeatureCollection, FeatureOf } from '../geojson-types';\nimport {\n ModeProps,\n ClickEvent,\n PointerMoveEvent,\n StartDraggingEvent,\n StopDraggingEvent,\n DraggingEvent,\n Viewport,\n GuideFeatureCollection,\n EditHandleFeature,\n} from '../types';\nimport { GeoJsonEditMode } from './geojson-edit-mode';\nimport { ImmutableFeatureCollection } from './immutable-feature-collection';\n\nexport class ModifyMode extends GeoJsonEditMode {\n getGuides(props: ModeProps): GuideFeatureCollection {\n const handles = [];\n\n const { data, lastPointerMoveEvent } = props;\n const { features } = data;\n const picks = lastPointerMoveEvent && lastPointerMoveEvent.picks;\n const mapCoords = lastPointerMoveEvent && lastPointerMoveEvent.mapCoords;\n\n for (const index of props.selectedIndexes) {\n if (index < features.length) {\n const { geometry } = features[index];\n handles.push(...getEditHandlesForGeometry(geometry, index));\n } else {\n console.warn(`selectedFeatureIndexes out of range ${index}`); // eslint-disable-line no-console,no-undef\n }\n }\n\n // intermediate edit handle\n if (picks && picks.length && mapCoords) {\n const existingEditHandle = getPickedExistingEditHandle(picks);\n // don't show intermediate point when too close to an existing edit handle\n const featureAsPick = !existingEditHandle && picks.find((pick) => !pick.isGuide);\n\n // is the feature in the pick selected\n if (\n featureAsPick &&\n !featureAsPick.object.geometry.type.includes('Point') &&\n !(\n props.modeConfig?.lockRectangles && featureAsPick.object.properties.shape === 'Rectangle'\n ) &&\n props.selectedIndexes.includes(featureAsPick.index)\n ) {\n let intermediatePoint: NearestPointType | null | undefined = null;\n let positionIndexPrefix = [];\n const referencePoint = point(mapCoords);\n // process all lines of the (single) feature\n recursivelyTraverseNestedArrays(\n featureAsPick.object.geometry.coordinates,\n [],\n (lineString, prefix) => {\n const lineStringFeature = toLineString(lineString);\n const candidateIntermediatePoint = this.getNearestPoint(\n // @ts-ignore\n lineStringFeature,\n referencePoint,\n props.modeConfig && props.modeConfig.viewport\n );\n if (\n !intermediatePoint ||\n candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist\n ) {\n intermediatePoint = candidateIntermediatePoint;\n positionIndexPrefix = prefix;\n }\n }\n );\n // tack on the lone intermediate point to the set of handles\n if (intermediatePoint) {\n const {\n geometry: { coordinates: position },\n properties: { index },\n } = intermediatePoint;\n handles.push({\n type: 'Feature',\n properties: {\n guideType: 'editHandle',\n editHandleType: 'intermediate',\n featureIndex: featureAsPick.index,\n positionIndexes: [...positionIndexPrefix, index + 1],\n },\n geometry: {\n type: 'Point',\n coordinates: position,\n },\n });\n }\n }\n }\n\n return {\n type: 'FeatureCollection',\n features: handles,\n };\n }\n\n // turf.js does not support elevation for nearestPointOnLine\n getNearestPoint(\n line: FeatureOf,\n inPoint: FeatureOf,\n viewport: Viewport | null | undefined\n ): NearestPointType {\n const { coordinates } = line.geometry;\n if (coordinates.some((coord) => coord.length > 2)) {\n if (viewport) {\n // This line has elevation, we need to use alternative algorithm\n return nearestPointOnProjectedLine(line, inPoint, viewport);\n }\n // eslint-disable-next-line no-console,no-undef\n console.log(\n 'Editing 3D point but modeConfig.viewport not provided. Falling back to 2D logic.'\n );\n }\n return nearestPointOnLine(line, inPoint, viewport);\n }\n\n handleClick(event: ClickEvent, props: ModeProps) {\n const pickedExistingHandle = getPickedExistingEditHandle(event.picks);\n const pickedIntermediateHandle = getPickedIntermediateEditHandle(event.picks);\n\n if (pickedExistingHandle) {\n const { featureIndex, positionIndexes } = pickedExistingHandle.properties;\n\n let updatedData;\n try {\n updatedData = new ImmutableFeatureCollection(props.data)\n .removePosition(featureIndex, positionIndexes)\n .getObject();\n } catch (ignored) {\n // This happens if user attempts to remove the last point\n }\n\n if (updatedData) {\n props.onEdit({\n updatedData,\n editType: 'removePosition',\n editContext: {\n featureIndexes: [featureIndex],\n positionIndexes,\n position: pickedExistingHandle.geometry.coordinates,\n },\n });\n }\n } else if (pickedIntermediateHandle) {\n const { featureIndex, positionIndexes } = pickedIntermediateHandle.properties;\n\n const feature = props.data.features[featureIndex];\n const canAddPosition = !(\n props.modeConfig?.lockRectangles && feature?.properties.shape === 'Rectangle'\n );\n\n if (canAddPosition) {\n const updatedData = new ImmutableFeatureCollection(props.data)\n .addPosition(featureIndex, positionIndexes, pickedIntermediateHandle.geometry.coordinates)\n .getObject();\n\n if (updatedData) {\n props.onEdit({\n updatedData,\n editType: 'addPosition',\n editContext: {\n featureIndexes: [featureIndex],\n positionIndexes,\n position: pickedIntermediateHandle.geometry.coordinates,\n },\n });\n }\n }\n }\n }\n\n handleDragging(event: DraggingEvent, props: ModeProps): void {\n const editHandle = getPickedEditHandle(event.pointerDownPicks);\n\n if (editHandle) {\n // Cancel map panning if pointer went down on an edit handle\n event.cancelPan();\n\n this._dragEditHandle('movePosition', props, editHandle, event);\n }\n }\n\n _dragEditHandle(\n editType: string,\n props: ModeProps,\n editHandle: EditHandleFeature,\n event: StopDraggingEvent | DraggingEvent\n ) {\n const editHandleProperties = editHandle.properties;\n const editedFeature = props.data.features[editHandleProperties.featureIndex];\n\n let updatedData;\n if (props.modeConfig?.lockRectangles && editedFeature.properties.shape === 'Rectangle') {\n const coordinates = updateRectanglePosition(\n editedFeature as FeatureOf,\n editHandleProperties.positionIndexes[1],\n event.mapCoords\n );\n\n updatedData = new ImmutableFeatureCollection(props.data)\n .replaceGeometry(editHandleProperties.featureIndex, { coordinates, type: 'Polygon' })\n .getObject();\n } else {\n updatedData = new ImmutableFeatureCollection(props.data)\n .replacePosition(\n editHandleProperties.featureIndex,\n editHandleProperties.positionIndexes,\n event.mapCoords\n )\n .getObject();\n }\n\n props.onEdit({\n updatedData,\n editType,\n editContext: {\n featureIndexes: [editHandleProperties.featureIndex],\n positionIndexes: editHandleProperties.positionIndexes,\n position: event.mapCoords,\n },\n });\n }\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps): void {\n const cursor = this.getCursor(event);\n props.onUpdateCursor(cursor);\n }\n\n handleStartDragging(event: StartDraggingEvent, props: ModeProps) {\n const selectedFeatureIndexes = props.selectedIndexes;\n\n const editHandle = getPickedIntermediateEditHandle(event.picks);\n if (selectedFeatureIndexes.length && editHandle) {\n const editHandleProperties = editHandle.properties;\n\n const updatedData = new ImmutableFeatureCollection(props.data)\n .addPosition(\n editHandleProperties.featureIndex,\n editHandleProperties.positionIndexes,\n event.mapCoords\n )\n .getObject();\n\n props.onEdit({\n updatedData,\n editType: 'addPosition',\n editContext: {\n featureIndexes: [editHandleProperties.featureIndex],\n positionIndexes: editHandleProperties.positionIndexes,\n position: event.mapCoords,\n },\n });\n }\n }\n\n handleStopDragging(event: StopDraggingEvent, props: ModeProps) {\n const selectedFeatureIndexes = props.selectedIndexes;\n const editHandle = getPickedEditHandle(event.picks);\n if (selectedFeatureIndexes.length && editHandle) {\n this._dragEditHandle('finishMovePosition', props, editHandle, event);\n }\n }\n\n getCursor(event: PointerMoveEvent): string | null | undefined {\n const picks = (event && event.picks) || [];\n\n const handlesPicked = getPickedEditHandles(picks);\n if (handlesPicked.length) {\n return 'cell';\n }\n return null;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ResizeCircleMode = void 0;\n\nvar _nearestPointOnLine = _interopRequireDefault(require(\"@turf/nearest-point-on-line\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _circle = _interopRequireDefault(require(\"@turf/circle\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _center = _interopRequireDefault(require(\"@turf/center\"));\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ResizeCircleMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(ResizeCircleMode, _GeoJsonEditMode);\n\n var _super = _createSuper(ResizeCircleMode);\n\n function ResizeCircleMode() {\n var _this;\n\n _classCallCheck(this, ResizeCircleMode);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"_selectedEditHandle\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_isResizing\", false);\n\n return _this;\n }\n\n _createClass(ResizeCircleMode, [{\n key: \"getGuides\",\n value: function getGuides(props) {\n var _this2 = this;\n\n var handles = [];\n var selectedFeatureIndexes = props.selectedIndexes;\n var lastPointerMoveEvent = props.lastPointerMoveEvent;\n var picks = lastPointerMoveEvent && lastPointerMoveEvent.picks;\n var mapCoords = lastPointerMoveEvent && lastPointerMoveEvent.mapCoords; // intermediate edit handle\n\n if (picks && picks.length && mapCoords && selectedFeatureIndexes.length === 1 && !this._isResizing) {\n var featureAsPick = picks.find(function (pick) {\n return !pick.isGuide;\n }); // is the feature in the pick selected\n\n if (featureAsPick && featureAsPick.object.properties.shape && featureAsPick.object.properties.shape.includes('Circle') && props.selectedIndexes.includes(featureAsPick.index)) {\n var intermediatePoint = null;\n var positionIndexPrefix = [];\n var referencePoint = (0, _helpers.point)(mapCoords); // process all lines of the (single) feature\n\n (0, _utils.recursivelyTraverseNestedArrays)(featureAsPick.object.geometry.coordinates, [], function (lineString, prefix) {\n var lineStringFeature = (0, _helpers.lineString)(lineString);\n\n var candidateIntermediatePoint = _this2.getNearestPoint( // @ts-ignore\n lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport);\n\n if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) {\n intermediatePoint = candidateIntermediatePoint;\n positionIndexPrefix = prefix;\n }\n }); // tack on the lone intermediate point to the set of handles\n\n if (intermediatePoint) {\n var _intermediatePoint = intermediatePoint,\n position = _intermediatePoint.geometry.coordinates,\n index = _intermediatePoint.properties.index;\n handles.push({\n type: 'Feature',\n properties: {\n guideType: 'editHandle',\n editHandleType: 'intermediate',\n featureIndex: featureAsPick.index,\n positionIndexes: [].concat(_toConsumableArray(positionIndexPrefix), [index + 1])\n },\n geometry: {\n type: 'Point',\n coordinates: position\n }\n });\n }\n }\n }\n\n return {\n type: 'FeatureCollection',\n features: handles\n };\n } // turf.js does not support elevation for nearestPointOnLine\n\n }, {\n key: \"getNearestPoint\",\n value: function getNearestPoint(line, inPoint, viewport) {\n var coordinates = line.geometry.coordinates;\n\n if (coordinates.some(function (coord) {\n return coord.length > 2;\n })) {\n if (viewport) {\n // This line has elevation, we need to use alternative algorithm\n return (0, _utils.nearestPointOnProjectedLine)(line, inPoint, viewport);\n } // eslint-disable-next-line no-console,no-undef\n\n\n console.log('Editing 3D point but modeConfig.viewport not provided. Falling back to 2D logic.');\n }\n\n return (0, _nearestPointOnLine[\"default\"])(line, inPoint);\n }\n }, {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks);\n\n if (editHandle) {\n // Cancel map panning if pointer went down on an edit handle\n event.cancelPan();\n var editHandleProperties = editHandle.properties;\n var feature = this.getSelectedFeature(props);\n var center = (0, _center[\"default\"])(feature).geometry.coordinates;\n var numberOfSteps = Object.entries(feature.geometry.coordinates[0]).length - 1;\n var radius = Math.max((0, _distance[\"default\"])(center, event.mapCoords), 0.001);\n var _ref = {},\n _ref$steps = _ref.steps,\n steps = _ref$steps === void 0 ? numberOfSteps : _ref$steps;\n var options = {\n steps: steps\n };\n var updatedFeature = (0, _circle[\"default\"])(center, radius, options);\n var geometry = updatedFeature.geometry;\n var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replaceGeometry(editHandleProperties.featureIndex, geometry).getObject();\n props.onEdit({\n updatedData: updatedData,\n editType: 'unionGeometry',\n editContext: {\n featureIndexes: [editHandleProperties.featureIndex]\n }\n });\n }\n }\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n if (!this._isResizing) {\n var selectedEditHandle = (0, _utils.getPickedEditHandle)(event.picks);\n this._selectedEditHandle = selectedEditHandle && selectedEditHandle.properties.editHandleType === 'intermediate' ? selectedEditHandle : null;\n }\n\n var cursor = this.getCursor(event);\n props.onUpdateCursor(cursor);\n }\n }, {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n if (this._selectedEditHandle) {\n this._isResizing = true;\n }\n }\n }, {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n if (this._isResizing) {\n this._selectedEditHandle = null;\n this._isResizing = false;\n }\n }\n }, {\n key: \"getCursor\",\n value: function getCursor(event) {\n var picks = event && event.picks || [];\n var handlesPicked = (0, _utils.getPickedEditHandles)(picks);\n\n if (handlesPicked.length) {\n return 'cell';\n }\n\n return null;\n }\n }]);\n\n return ResizeCircleMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.ResizeCircleMode = ResizeCircleMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVzaXplLWNpcmNsZS1tb2RlLnRzIl0sIm5hbWVzIjpbIlJlc2l6ZUNpcmNsZU1vZGUiLCJwcm9wcyIsImhhbmRsZXMiLCJzZWxlY3RlZEZlYXR1cmVJbmRleGVzIiwic2VsZWN0ZWRJbmRleGVzIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJwaWNrcyIsIm1hcENvb3JkcyIsImxlbmd0aCIsIl9pc1Jlc2l6aW5nIiwiZmVhdHVyZUFzUGljayIsImZpbmQiLCJwaWNrIiwiaXNHdWlkZSIsIm9iamVjdCIsInByb3BlcnRpZXMiLCJzaGFwZSIsImluY2x1ZGVzIiwiaW5kZXgiLCJpbnRlcm1lZGlhdGVQb2ludCIsInBvc2l0aW9uSW5kZXhQcmVmaXgiLCJyZWZlcmVuY2VQb2ludCIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJsaW5lU3RyaW5nIiwicHJlZml4IiwibGluZVN0cmluZ0ZlYXR1cmUiLCJjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludCIsImdldE5lYXJlc3RQb2ludCIsIm1vZGVDb25maWciLCJ2aWV3cG9ydCIsImRpc3QiLCJwb3NpdGlvbiIsInB1c2giLCJ0eXBlIiwiZ3VpZGVUeXBlIiwiZWRpdEhhbmRsZVR5cGUiLCJmZWF0dXJlSW5kZXgiLCJwb3NpdGlvbkluZGV4ZXMiLCJmZWF0dXJlcyIsImxpbmUiLCJpblBvaW50Iiwic29tZSIsImNvb3JkIiwiY29uc29sZSIsImxvZyIsImV2ZW50IiwiZWRpdEhhbmRsZSIsInBvaW50ZXJEb3duUGlja3MiLCJjYW5jZWxQYW4iLCJlZGl0SGFuZGxlUHJvcGVydGllcyIsImZlYXR1cmUiLCJnZXRTZWxlY3RlZEZlYXR1cmUiLCJjZW50ZXIiLCJudW1iZXJPZlN0ZXBzIiwiT2JqZWN0IiwiZW50cmllcyIsInJhZGl1cyIsIk1hdGgiLCJtYXgiLCJzdGVwcyIsIm9wdGlvbnMiLCJ1cGRhdGVkRmVhdHVyZSIsInVwZGF0ZWREYXRhIiwiSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJkYXRhIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2V0T2JqZWN0Iiwib25FZGl0IiwiZWRpdFR5cGUiLCJlZGl0Q29udGV4dCIsImZlYXR1cmVJbmRleGVzIiwic2VsZWN0ZWRFZGl0SGFuZGxlIiwiX3NlbGVjdGVkRWRpdEhhbmRsZSIsImN1cnNvciIsImdldEN1cnNvciIsIm9uVXBkYXRlQ3Vyc29yIiwiaGFuZGxlc1BpY2tlZCIsIkdlb0pzb25FZGl0TW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQWtCQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tFQUVHLEs7Ozs7Ozs7OEJBRUpDLEssRUFBNkQ7QUFBQTs7QUFDckUsVUFBTUMsT0FBTyxHQUFHLEVBQWhCO0FBQ0EsVUFBTUMsc0JBQXNCLEdBQUdGLEtBQUssQ0FBQ0csZUFBckM7QUFGcUUsVUFJN0RDLG9CQUo2RCxHQUlwQ0osS0FKb0MsQ0FJN0RJLG9CQUo2RDtBQUtyRSxVQUFNQyxLQUFLLEdBQUdELG9CQUFvQixJQUFJQSxvQkFBb0IsQ0FBQ0MsS0FBM0Q7QUFDQSxVQUFNQyxTQUFTLEdBQUdGLG9CQUFvQixJQUFJQSxvQkFBb0IsQ0FBQ0UsU0FBL0QsQ0FOcUUsQ0FRckU7O0FBQ0EsVUFDRUQsS0FBSyxJQUNMQSxLQUFLLENBQUNFLE1BRE4sSUFFQUQsU0FGQSxJQUdBSixzQkFBc0IsQ0FBQ0ssTUFBdkIsS0FBa0MsQ0FIbEMsSUFJQSxDQUFDLEtBQUtDLFdBTFIsRUFNRTtBQUNBLFlBQU1DLGFBQWEsR0FBR0osS0FBSyxDQUFDSyxJQUFOLENBQVcsVUFBQ0MsSUFBRDtBQUFBLGlCQUFVLENBQUNBLElBQUksQ0FBQ0MsT0FBaEI7QUFBQSxTQUFYLENBQXRCLENBREEsQ0FHQTs7QUFDQSxZQUNFSCxhQUFhLElBQ2JBLGFBQWEsQ0FBQ0ksTUFBZCxDQUFxQkMsVUFBckIsQ0FBZ0ND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dC1wb2ludC1vbi1saW5lJztcbmltcG9ydCB7IHBvaW50LCBsaW5lU3RyaW5nIGFzIHRvTGluZVN0cmluZyB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IGNpcmNsZSBmcm9tICdAdHVyZi9jaXJjbGUnO1xuaW1wb3J0IGRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB0dXJmQ2VudGVyIGZyb20gJ0B0dXJmL2NlbnRlcic7XG5pbXBvcnQge1xuICByZWN1cnNpdmVseVRyYXZlcnNlTmVzdGVkQXJyYXlzLFxuICBuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUsXG4gIGdldFBpY2tlZEVkaXRIYW5kbGVzLFxuICBnZXRQaWNrZWRFZGl0SGFuZGxlLFxuICBOZWFyZXN0UG9pbnRUeXBlLFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBMaW5lU3RyaW5nLCBQb2ludCwgRmVhdHVyZUNvbGxlY3Rpb24sIEZlYXR1cmVPZiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHtcbiAgTW9kZVByb3BzLFxuICBQb2ludGVyTW92ZUV2ZW50LFxuICBTdGFydERyYWdnaW5nRXZlbnQsXG4gIFN0b3BEcmFnZ2luZ0V2ZW50LFxuICBEcmFnZ2luZ0V2ZW50LFxuICBWaWV3cG9ydCxcbiAgRWRpdEhhbmRsZUZlYXR1cmUsXG4gIEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24sXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgUmVzaXplQ2lyY2xlTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIF9zZWxlY3RlZEVkaXRIYW5kbGU6IEVkaXRIYW5kbGVGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX2lzUmVzaXppbmcgPSBmYWxzZTtcblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBoYW5kbGVzID0gW107XG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyA9IHByb3BzLnNlbGVjdGVkSW5kZXhlcztcblxuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBpY2tzID0gbGFzdFBvaW50ZXJNb3ZlRXZlbnQgJiYgbGFzdFBvaW50ZXJNb3ZlRXZlbnQucGlja3M7XG4gICAgY29uc3QgbWFwQ29vcmRzID0gbGFzdFBvaW50ZXJNb3ZlRXZlbnQgJiYgbGFzdFBvaW50ZXJNb3ZlRXZlbnQubWFwQ29vcmRzO1xuXG4gICAgLy8gaW50ZXJtZWRpYXRlIGVkaXQgaGFuZGxlXG4gICAgaWYgKFxuICAgICAgcGlja3MgJiZcbiAgICAgIHBpY2tzLmxlbmd0aCAmJlxuICAgICAgbWFwQ29vcmRzICYmXG4gICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgIXRoaXMuX2lzUmVzaXppbmdcbiAgICApIHtcbiAgICAgIGNvbnN0IGZlYXR1cmVBc1BpY2sgPSBwaWNrcy5maW5kKChwaWNrKSA9PiAhcGljay5pc0d1aWRlKTtcblxuICAgICAgLy8gaXMgdGhlIGZlYXR1cmUgaW4gdGhlIHBpY2sgc2VsZWN0ZWRcbiAgICAgIGlmIChcbiAgICAgICAgZmVhdHVyZUFzUGljayAmJlxuICAgICAgICBmZWF0dXJlQXNQaWNrLm9iamVjdC5wcm9wZXJ0aWVzLnNoYXBlICYmXG4gICAgICAgIGZlYXR1cmVBc1BpY2sub2JqZWN0LnByb3BlcnRpZXMuc2hhcGUuaW5jbHVkZXMoJ0NpcmNsZScpICYmXG4gICAgICAgIHByb3BzLnNlbGVjdGVkSW5kZXhlcy5pbmNsdWRlcyhmZWF0dXJlQXNQaWNrLmluZGV4KVxuICAgICAgKSB7XG4gICAgICAgIGxldCBpbnRlcm1lZGlhdGVQb2ludDogTmVhcmVzdFBvaW50VHlwZSB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICAgICAgICBsZXQgcG9zaXRpb25JbmRleFByZWZpeCA9IFtdO1xuICAgICAgICBjb25zdCByZWZlcmVuY2VQb2ludCA9IHBvaW50KG1hcENvb3Jkcyk7XG4gICAgICAgIC8vIHByb2Nlc3MgYWxsIGxpbmVzIG9mIHRoZSAoc2luZ2xlKSBmZWF0dXJlXG4gICAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VOZXN0ZWRBcnJheXMoXG4gICAgICAgICAgZmVhdHVyZUFzUGljay5vYmplY3QuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgW10sXG4gICAgICAgICAgKGxpbmVTdHJpbmcsIHByZWZpeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGluZVN0cmluZ0ZlYXR1cmUgPSB0b0xpbmVTdHJpbmcobGluZVN0cmluZyk7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludCA9IHRoaXMuZ2V0TmVhcmVzdFBvaW50KFxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGxpbmVTdHJpbmdGZWF0dXJlLFxuICAgICAgICAgICAgICByZWZlcmVuY2VQb2ludCxcbiAgICAgICAgICAgICAgcHJvcHMubW9kZUNvbmZpZyAmJiBwcm9wcy5tb2RlQ29uZmlnLnZpZXdwb3J0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAhaW50ZXJtZWRpYXRlUG9pbnQgfHxcbiAgICAgICAgICAgICAgY2FuZGlkYXRlSW50ZXJtZWRpYXRlUG9pbnQucHJvcGVydGllcy5kaXN0IDwgaW50ZXJtZWRpYXRlUG9pbnQucHJvcGVydGllcy5kaXN0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlUG9pbnQgPSBjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludDtcbiAgICAgICAgICAgICAgcG9zaXRpb25JbmRleFByZWZpeCA9IHByZWZpeDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIC8vIHRhY2sgb24gdGhlIGxvbmUgaW50ZXJtZWRpYXRlIHBvaW50IHRvIHRoZSBzZXQgb2YgaGFuZGxlc1xuICAgICAgICBpZiAoaW50ZXJtZWRpYXRlUG9pbnQpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBnZW9tZXRyeTogeyBjb29yZGluYXRlczogcG9zaXRpb24gfSxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHsgaW5kZXggfSxcbiAgICAgICAgICB9ID0gaW50ZXJtZWRpYXRlUG9pbnQ7XG4gICAgICAgICAgaGFuZGxlcy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgZ3VpZGVUeXBlOiAnZWRpdEhhbmRsZScsXG4gICAgICAgICAgICAgIGVkaXRIYW5kbGVUeXBlOiAnaW50ZXJtZWRpYXRlJyxcbiAgICAgICAgICAgICAgZmVhdHVyZUluZGV4OiBmZWF0dXJlQXNQaWNrLmluZGV4LFxuICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IFsuLi5wb3NpdGlvbkluZGV4UHJlZml4LCBpbmRleCArIDFdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBwb3NpdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBoYW5kbGVzLFxuICAgIH07XG4gIH1cblxuICAvLyB0dXJmLmpzIGRvZXMgbm90IHN1cHBvcnQgZWxldmF0aW9uIGZvciBuZWFyZXN0UG9pbnRPbkxpbmVcbiAgZ2V0TmVhcmVzdFBvaW50KFxuICAgIGxpbmU6IEZlYXR1cmVPZjxMaW5lU3RyaW5nPixcbiAgICBpblBvaW50OiBGZWF0dXJlT2Y8UG9pbnQ+LFxuICAgIHZpZXdwb3J0OiBWaWV3cG9ydCB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogTmVhcmVzdFBvaW50VHlwZSB7XG4gICAgY29uc3QgeyBjb29yZGluYXRlcyB9ID0gbGluZS5nZW9tZXRyeTtcbiAgICBpZiAoY29vcmRpbmF0ZXMuc29tZSgoY29vcmQpID0+IGNvb3JkLmxlbmd0aCA+IDIpKSB7XG4gICAgICBpZiAodmlld3BvcnQpIHtcbiAgICAgICAgLy8gVGhpcyBsaW5lIGhhcyBlbGV2YXRpb24sIHdlIG5lZWQgdG8gdXNlIGFsdGVybmF0aXZlIGFsZ29yaXRobVxuICAgICAgICByZXR1cm4gbmVhcmVzdFBvaW50T25Qcm9qZWN0ZWRMaW5lKGxpbmUsIGluUG9pbnQsIHZpZXdwb3J0KTtcbiAgICAgIH1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlLG5vLXVuZGVmXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgJ0VkaXRpbmcgM0QgcG9pbnQgYnV0IG1vZGVDb25maWcudmlld3BvcnQgbm90IHByb3ZpZGVkLiBGYWxsaW5nIGJhY2sgdG8gMkQgbG9naWMuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmVhcmVzdFBvaW50T25MaW5lKGxpbmUsIGluUG9pbnQpO1xuICB9XG5cbiAgaGFuZGxlRHJhZ2dpbmcoZXZlbnQ6IERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG5cbiAgICBpZiAoZWRpdEhhbmRsZSkge1xuICAgICAgLy8gQ2FuY2VsIG1hcCBwYW5uaW5nIGlmIHBvaW50ZXIgd2VudCBkb3duIG9uIGFuIGVkaXQgaGFuZGxlXG4gICAgICBldmVudC5jYW5jZWxQYW4oKTtcblxuICAgICAgY29uc3QgZWRpdEhhbmRsZVByb3BlcnRpZXMgPSBlZGl0SGFuZGxlLnByb3BlcnRpZXM7XG5cbiAgICAgIGNvbnN0IGZlYXR1cmUgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZShwcm9wcyk7XG4gICAgICBjb25zdCBjZW50ZXIgPSB0dXJmQ2VudGVyKGZlYXR1cmUpLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICAgICAgY29uc3QgbnVtYmVyT2ZTdGVwcyA9IE9iamVjdC5lbnRyaWVzKGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0pLmxlbmd0aCAtIDE7XG4gICAgICBjb25zdCByYWRpdXMgPSBNYXRoLm1heChkaXN0YW5jZShjZW50ZXIsIGV2ZW50Lm1hcENvb3JkcyksIDAuMDAxKTtcblxuICAgICAgY29uc3QgeyBzdGVwcyA9IG51bWJlck9mU3RlcHMgfSA9IHt9O1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHsgc3RlcHMgfTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRGZWF0dXJlID0gY2lyY2xlKGNlbnRlciwgcmFkaXVzLCBvcHRpb25zKTtcbiAgICAgIGNvbnN0IGdlb21ldHJ5ID0gdXBkYXRlZEZlYXR1cmUuZ2VvbWV0cnk7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpXG4gICAgICAgIC5yZXBsYWNlR2VvbWV0cnkoZWRpdEhhbmRsZVByb3BlcnRpZXMuZmVhdHVyZUluZGV4LCBnZW9tZXRyeSlcbiAgICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgICBwcm9wcy5vbkVkaXQoe1xuICAgICAgICB1cGRhdGVkRGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICd1bmlvbkdlb21ldHJ5JyxcbiAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICBmZWF0dXJlSW5kZXhlczogW2VkaXRIYW5kbGVQcm9wZXJ0aWVzLmZlYXR1cmVJbmRleF0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzUmVzaXppbmcpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlID1cbiAgICAgICAgc2VsZWN0ZWRFZGl0SGFuZGxlICYmIHNlbGVjdGVkRWRpdEhhbmRsZS5wcm9wZXJ0aWVzLmVkaXRIYW5kbGVUeXBlID09PSAnaW50ZXJtZWRpYXRlJ1xuICAgICAgICAgID8gc2VsZWN0ZWRFZGl0SGFuZGxlXG4gICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnNvciA9IHRoaXMuZ2V0Q3Vyc29yKGV2ZW50KTtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcihjdXJzb3IpO1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9zZWxlY3RlZEVkaXRIYW5kbGUpIHtcbiAgICAgIHRoaXMuX2lzUmVzaXppbmcgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKHRoaXMuX2lzUmVzaXppbmcpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkRWRpdEhhbmRsZSA9IG51bGw7XG4gICAgICB0aGlzLl9pc1Jlc2l6aW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q3Vyc29yKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50KTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcGlja3MgPSAoZXZlbnQgJiYgZXZlbnQucGlja3MpIHx8IFtdO1xuXG4gICAgY29uc3QgaGFuZGxlc1BpY2tlZCA9IGdldFBpY2tlZEVkaXRIYW5kbGVzKHBpY2tzKTtcbiAgICBpZiAoaGFuZGxlc1BpY2tlZC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiAnY2VsbCc7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=","import nearestPointOnLine from '@turf/nearest-point-on-line';\nimport { point, lineString as toLineString } from '@turf/helpers';\nimport circle from '@turf/circle';\nimport distance from '@turf/distance';\nimport turfCenter from '@turf/center';\nimport {\n recursivelyTraverseNestedArrays,\n nearestPointOnProjectedLine,\n getPickedEditHandles,\n getPickedEditHandle,\n NearestPointType,\n} from '../utils';\nimport { LineString, Point, FeatureCollection, FeatureOf } from '../geojson-types';\nimport {\n ModeProps,\n PointerMoveEvent,\n StartDraggingEvent,\n StopDraggingEvent,\n DraggingEvent,\n Viewport,\n EditHandleFeature,\n GuideFeatureCollection,\n} from '../types';\nimport { GeoJsonEditMode } from './geojson-edit-mode';\nimport { ImmutableFeatureCollection } from './immutable-feature-collection';\n\nexport class ResizeCircleMode extends GeoJsonEditMode {\n _selectedEditHandle: EditHandleFeature | null | undefined;\n _isResizing = false;\n\n getGuides(props: ModeProps): GuideFeatureCollection {\n const handles = [];\n const selectedFeatureIndexes = props.selectedIndexes;\n\n const { lastPointerMoveEvent } = props;\n const picks = lastPointerMoveEvent && lastPointerMoveEvent.picks;\n const mapCoords = lastPointerMoveEvent && lastPointerMoveEvent.mapCoords;\n\n // intermediate edit handle\n if (\n picks &&\n picks.length &&\n mapCoords &&\n selectedFeatureIndexes.length === 1 &&\n !this._isResizing\n ) {\n const featureAsPick = picks.find((pick) => !pick.isGuide);\n\n // is the feature in the pick selected\n if (\n featureAsPick &&\n featureAsPick.object.properties.shape &&\n featureAsPick.object.properties.shape.includes('Circle') &&\n props.selectedIndexes.includes(featureAsPick.index)\n ) {\n let intermediatePoint: NearestPointType | null | undefined = null;\n let positionIndexPrefix = [];\n const referencePoint = point(mapCoords);\n // process all lines of the (single) feature\n recursivelyTraverseNestedArrays(\n featureAsPick.object.geometry.coordinates,\n [],\n (lineString, prefix) => {\n const lineStringFeature = toLineString(lineString);\n const candidateIntermediatePoint = this.getNearestPoint(\n // @ts-ignore\n lineStringFeature,\n referencePoint,\n props.modeConfig && props.modeConfig.viewport\n );\n if (\n !intermediatePoint ||\n candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist\n ) {\n intermediatePoint = candidateIntermediatePoint;\n positionIndexPrefix = prefix;\n }\n }\n );\n // tack on the lone intermediate point to the set of handles\n if (intermediatePoint) {\n const {\n geometry: { coordinates: position },\n properties: { index },\n } = intermediatePoint;\n handles.push({\n type: 'Feature',\n properties: {\n guideType: 'editHandle',\n editHandleType: 'intermediate',\n featureIndex: featureAsPick.index,\n positionIndexes: [...positionIndexPrefix, index + 1],\n },\n geometry: {\n type: 'Point',\n coordinates: position,\n },\n });\n }\n }\n }\n\n return {\n type: 'FeatureCollection',\n features: handles,\n };\n }\n\n // turf.js does not support elevation for nearestPointOnLine\n getNearestPoint(\n line: FeatureOf,\n inPoint: FeatureOf,\n viewport: Viewport | null | undefined\n ): NearestPointType {\n const { coordinates } = line.geometry;\n if (coordinates.some((coord) => coord.length > 2)) {\n if (viewport) {\n // This line has elevation, we need to use alternative algorithm\n return nearestPointOnProjectedLine(line, inPoint, viewport);\n }\n // eslint-disable-next-line no-console,no-undef\n console.log(\n 'Editing 3D point but modeConfig.viewport not provided. Falling back to 2D logic.'\n );\n }\n\n return nearestPointOnLine(line, inPoint);\n }\n\n handleDragging(event: DraggingEvent, props: ModeProps): void {\n const editHandle = getPickedEditHandle(event.pointerDownPicks);\n\n if (editHandle) {\n // Cancel map panning if pointer went down on an edit handle\n event.cancelPan();\n\n const editHandleProperties = editHandle.properties;\n\n const feature = this.getSelectedFeature(props);\n const center = turfCenter(feature).geometry.coordinates;\n const numberOfSteps = Object.entries(feature.geometry.coordinates[0]).length - 1;\n const radius = Math.max(distance(center, event.mapCoords), 0.001);\n\n const { steps = numberOfSteps } = {};\n const options = { steps };\n const updatedFeature = circle(center, radius, options);\n const geometry = updatedFeature.geometry;\n\n const updatedData = new ImmutableFeatureCollection(props.data)\n .replaceGeometry(editHandleProperties.featureIndex, geometry)\n .getObject();\n\n props.onEdit({\n updatedData,\n editType: 'unionGeometry',\n editContext: {\n featureIndexes: [editHandleProperties.featureIndex],\n },\n });\n }\n }\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps): void {\n if (!this._isResizing) {\n const selectedEditHandle = getPickedEditHandle(event.picks);\n this._selectedEditHandle =\n selectedEditHandle && selectedEditHandle.properties.editHandleType === 'intermediate'\n ? selectedEditHandle\n : null;\n }\n\n const cursor = this.getCursor(event);\n props.onUpdateCursor(cursor);\n }\n\n handleStartDragging(event: StartDraggingEvent, props: ModeProps) {\n if (this._selectedEditHandle) {\n this._isResizing = true;\n }\n }\n\n handleStopDragging(event: StopDraggingEvent, props: ModeProps) {\n if (this._isResizing) {\n this._selectedEditHandle = null;\n this._isResizing = false;\n }\n }\n\n getCursor(event: PointerMoveEvent): string | null | undefined {\n const picks = (event && event.picks) || [];\n\n const handlesPicked = getPickedEditHandles(picks);\n if (handlesPicked.length) {\n return 'cell';\n }\n return null;\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bearing_1 = require(\"@turf/bearing\");\nvar distance_1 = require(\"@turf/distance\");\nvar destination_1 = require(\"@turf/destination\");\nvar line_intersect_1 = require(\"@turf/line-intersect\");\nvar meta_1 = require(\"@turf/meta\");\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Takes a {@link Point} and a {@link LineString} and calculates the closest Point on the (Multi)LineString.\n *\n * @name nearestPointOnLine\n * @param {Geometry|Feature} lines lines to snap to\n * @param {Geometry|Feature|number[]} pt point to snap from\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {Feature} closest point on the `line` to `point`. The properties object will contain three values: `index`: closest point was found on nth line part, `dist`: distance between pt and the closest point, `location`: distance along the line between start and the closest point.\n * @example\n * var line = turf.lineString([\n * [-77.031669, 38.878605],\n * [-77.029609, 38.881946],\n * [-77.020339, 38.884084],\n * [-77.025661, 38.885821],\n * [-77.021884, 38.889563],\n * [-77.019824, 38.892368]\n * ]);\n * var pt = turf.point([-77.037076, 38.884017]);\n *\n * var snapped = turf.nearestPointOnLine(line, pt, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [line, pt, snapped];\n * snapped.properties['marker-color'] = '#00f';\n */\nfunction nearestPointOnLine(lines, pt, options) {\n if (options === void 0) { options = {}; }\n var closestPt = helpers_1.point([Infinity, Infinity], {\n dist: Infinity\n });\n var length = 0.0;\n meta_1.flattenEach(lines, function (line) {\n var coords = invariant_1.getCoords(line);\n for (var i = 0; i < coords.length - 1; i++) {\n //start\n var start = helpers_1.point(coords[i]);\n start.properties.dist = distance_1.default(pt, start, options);\n //stop\n var stop_1 = helpers_1.point(coords[i + 1]);\n stop_1.properties.dist = distance_1.default(pt, stop_1, options);\n // sectionLength\n var sectionLength = distance_1.default(start, stop_1, options);\n //perpendicular\n var heightDistance = Math.max(start.properties.dist, stop_1.properties.dist);\n var direction = bearing_1.default(start, stop_1);\n var perpendicularPt1 = destination_1.default(pt, heightDistance, direction + 90, options);\n var perpendicularPt2 = destination_1.default(pt, heightDistance, direction - 90, options);\n var intersect = line_intersect_1.default(helpers_1.lineString([perpendicularPt1.geometry.coordinates, perpendicularPt2.geometry.coordinates]), helpers_1.lineString([start.geometry.coordinates, stop_1.geometry.coordinates]));\n var intersectPt = null;\n if (intersect.features.length > 0) {\n intersectPt = intersect.features[0];\n intersectPt.properties.dist = distance_1.default(pt, intersectPt, options);\n intersectPt.properties.location = length + distance_1.default(start, intersectPt, options);\n }\n if (start.properties.dist < closestPt.properties.dist) {\n closestPt = start;\n closestPt.properties.index = i;\n closestPt.properties.location = length;\n }\n if (stop_1.properties.dist < closestPt.properties.dist) {\n closestPt = stop_1;\n closestPt.properties.index = i + 1;\n closestPt.properties.location = length + sectionLength;\n }\n if (intersectPt && intersectPt.properties.dist < closestPt.properties.dist) {\n closestPt = intersectPt;\n closestPt.properties.index = i;\n }\n // update length\n length += sectionLength;\n }\n });\n return closestPt;\n}\nexports.default = nearestPointOnLine;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar line_segment_1 = __importDefault(require(\"@turf/line-segment\"));\nvar meta_1 = require(\"@turf/meta\");\nvar geojson_rbush_1 = __importDefault(require(\"geojson-rbush\"));\n/**\n * Takes any LineString or Polygon GeoJSON and returns the intersecting point(s).\n *\n * @name lineIntersect\n * @param {GeoJSON} line1 any LineString or Polygon\n * @param {GeoJSON} line2 any LineString or Polygon\n * @returns {FeatureCollection} point(s) that intersect both\n * @example\n * var line1 = turf.lineString([[126, -11], [129, -21]]);\n * var line2 = turf.lineString([[123, -18], [131, -14]]);\n * var intersects = turf.lineIntersect(line1, line2);\n *\n * //addToMap\n * var addToMap = [line1, line2, intersects]\n */\nfunction lineIntersect(line1, line2) {\n var unique = {};\n var results = [];\n // First, normalize geometries to features\n // Then, handle simple 2-vertex segments\n if (line1.type === \"LineString\") {\n line1 = helpers_1.feature(line1);\n }\n if (line2.type === \"LineString\") {\n line2 = helpers_1.feature(line2);\n }\n if (line1.type === \"Feature\" &&\n line2.type === \"Feature\" &&\n line1.geometry !== null &&\n line2.geometry !== null &&\n line1.geometry.type === \"LineString\" &&\n line2.geometry.type === \"LineString\" &&\n line1.geometry.coordinates.length === 2 &&\n line2.geometry.coordinates.length === 2) {\n var intersect = intersects(line1, line2);\n if (intersect) {\n results.push(intersect);\n }\n return helpers_1.featureCollection(results);\n }\n // Handles complex GeoJSON Geometries\n var tree = geojson_rbush_1.default();\n tree.load(line_segment_1.default(line2));\n meta_1.featureEach(line_segment_1.default(line1), function (segment) {\n meta_1.featureEach(tree.search(segment), function (match) {\n var intersect = intersects(segment, match);\n if (intersect) {\n // prevent duplicate points https://github.com/Turfjs/turf/issues/688\n var key = invariant_1.getCoords(intersect).join(\",\");\n if (!unique[key]) {\n unique[key] = true;\n results.push(intersect);\n }\n }\n });\n });\n return helpers_1.featureCollection(results);\n}\n/**\n * Find a point that intersects LineStrings with two coordinates each\n *\n * @private\n * @param {Feature} line1 GeoJSON LineString (Must only contain 2 coordinates)\n * @param {Feature} line2 GeoJSON LineString (Must only contain 2 coordinates)\n * @returns {Feature} intersecting GeoJSON Point\n */\nfunction intersects(line1, line2) {\n var coords1 = invariant_1.getCoords(line1);\n var coords2 = invariant_1.getCoords(line2);\n if (coords1.length !== 2) {\n throw new Error(\" line1 must only contain 2 coordinates\");\n }\n if (coords2.length !== 2) {\n throw new Error(\" line2 must only contain 2 coordinates\");\n }\n var x1 = coords1[0][0];\n var y1 = coords1[0][1];\n var x2 = coords1[1][0];\n var y2 = coords1[1][1];\n var x3 = coords2[0][0];\n var y3 = coords2[0][1];\n var x4 = coords2[1][0];\n var y4 = coords2[1][1];\n var denom = ((y4 - y3) * (x2 - x1)) - ((x4 - x3) * (y2 - y1));\n var numeA = ((x4 - x3) * (y1 - y3)) - ((y4 - y3) * (x1 - x3));\n var numeB = ((x2 - x1) * (y1 - y3)) - ((y2 - y1) * (x1 - x3));\n if (denom === 0) {\n if (numeA === 0 && numeB === 0) {\n return null;\n }\n return null;\n }\n var uA = numeA / denom;\n var uB = numeB / denom;\n if (uA >= 0 && uA <= 1 && uB >= 0 && uB <= 1) {\n var x = x1 + (uA * (x2 - x1));\n var y = y1 + (uA * (y2 - y1));\n return helpers_1.point([x, y]);\n }\n return null;\n}\nexports.default = lineIntersect;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar meta_1 = require(\"@turf/meta\");\n/**\n * Creates a {@link FeatureCollection} of 2-vertex {@link LineString} segments from a\n * {@link LineString|(Multi)LineString} or {@link Polygon|(Multi)Polygon}.\n *\n * @name lineSegment\n * @param {GeoJSON} geojson GeoJSON Polygon or LineString\n * @returns {FeatureCollection} 2-vertex line segments\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n * var segments = turf.lineSegment(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, segments]\n */\nfunction lineSegment(geojson) {\n if (!geojson) {\n throw new Error(\"geojson is required\");\n }\n var results = [];\n meta_1.flattenEach(geojson, function (feature) {\n lineSegmentFeature(feature, results);\n });\n return helpers_1.featureCollection(results);\n}\n/**\n * Line Segment\n *\n * @private\n * @param {Feature} geojson Line or polygon feature\n * @param {Array} results push to results\n * @returns {void}\n */\nfunction lineSegmentFeature(geojson, results) {\n var coords = [];\n var geometry = geojson.geometry;\n if (geometry !== null) {\n switch (geometry.type) {\n case \"Polygon\":\n coords = invariant_1.getCoords(geometry);\n break;\n case \"LineString\":\n coords = [invariant_1.getCoords(geometry)];\n }\n coords.forEach(function (coord) {\n var segments = createSegments(coord, geojson.properties);\n segments.forEach(function (segment) {\n segment.id = results.length;\n results.push(segment);\n });\n });\n }\n}\n/**\n * Create Segments from LineString coordinates\n *\n * @private\n * @param {Array>} coords LineString coordinates\n * @param {*} properties GeoJSON properties\n * @returns {Array>} line segments\n */\nfunction createSegments(coords, properties) {\n var segments = [];\n coords.reduce(function (previousCoords, currentCoords) {\n var segment = helpers_1.lineString([previousCoords, currentCoords], properties);\n segment.bbox = bbox(previousCoords, currentCoords);\n segments.push(segment);\n return currentCoords;\n });\n return segments;\n}\n/**\n * Create BBox between two coordinates (faster than @turf/bbox)\n *\n * @private\n * @param {Array} coords1 Point coordinate\n * @param {Array} coords2 Point coordinate\n * @returns {BBox} [west, south, east, north]\n */\nfunction bbox(coords1, coords2) {\n var x1 = coords1[0];\n var y1 = coords1[1];\n var x2 = coords2[0];\n var y2 = coords2[1];\n var west = (x1 < x2) ? x1 : x2;\n var south = (y1 < y2) ? y1 : y2;\n var east = (x1 > x2) ? x1 : x2;\n var north = (y1 > y2) ? y1 : y2;\n return [west, south, east, north];\n}\nexports.default = lineSegment;\n","var rbush = require('rbush');\nvar helpers = require('@turf/helpers');\nvar meta = require('@turf/meta');\nvar turfBBox = require('@turf/bbox').default;\nvar featureEach = meta.featureEach;\nvar coordEach = meta.coordEach;\nvar polygon = helpers.polygon;\nvar featureCollection = helpers.featureCollection;\n\n/**\n * GeoJSON implementation of [RBush](https://github.com/mourner/rbush#rbush) spatial index.\n *\n * @name rbush\n * @param {number} [maxEntries=9] defines the maximum number of entries in a tree node. 9 (used by default) is a\n * reasonable choice for most applications. Higher value means faster insertion and slower search, and vice versa.\n * @returns {RBush} GeoJSON RBush\n * @example\n * var geojsonRbush = require('geojson-rbush').default;\n * var tree = geojsonRbush();\n */\nfunction geojsonRbush(maxEntries) {\n var tree = rbush(maxEntries);\n /**\n * [insert](https://github.com/mourner/rbush#data-format)\n *\n * @param {Feature} feature insert single GeoJSON Feature\n * @returns {RBush} GeoJSON RBush\n * @example\n * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n * tree.insert(poly)\n */\n tree.insert = function (feature) {\n if (feature.type !== 'Feature') throw new Error('invalid feature');\n feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n return rbush.prototype.insert.call(this, feature);\n };\n\n /**\n * [load](https://github.com/mourner/rbush#bulk-inserting-data)\n *\n * @param {FeatureCollection|Array} features load entire GeoJSON FeatureCollection\n * @returns {RBush} GeoJSON RBush\n * @example\n * var polys = turf.polygons([\n * [[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]],\n * [[[-93, 32], [-83, 32], [-83, 39], [-93, 39], [-93, 32]]]\n * ]);\n * tree.load(polys);\n */\n tree.load = function (features) {\n var load = [];\n // Load an Array of Features\n if (Array.isArray(features)) {\n features.forEach(function (feature) {\n if (feature.type !== 'Feature') throw new Error('invalid features');\n feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n load.push(feature);\n });\n } else {\n // Load a FeatureCollection\n featureEach(features, function (feature) {\n if (feature.type !== 'Feature') throw new Error('invalid features');\n feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n load.push(feature);\n });\n }\n return rbush.prototype.load.call(this, load);\n };\n\n /**\n * [remove](https://github.com/mourner/rbush#removing-data)\n *\n * @param {Feature} feature remove single GeoJSON Feature\n * @param {Function} equals Pass a custom equals function to compare by value for removal.\n * @returns {RBush} GeoJSON RBush\n * @example\n * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n *\n * tree.remove(poly);\n */\n tree.remove = function (feature, equals) {\n if (feature.type !== 'Feature') throw new Error('invalid feature');\n feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n return rbush.prototype.remove.call(this, feature, equals);\n };\n\n /**\n * [clear](https://github.com/mourner/rbush#removing-data)\n *\n * @returns {RBush} GeoJSON Rbush\n * @example\n * tree.clear()\n */\n tree.clear = function () {\n return rbush.prototype.clear.call(this);\n };\n\n /**\n * [search](https://github.com/mourner/rbush#search)\n *\n * @param {BBox|FeatureCollection|Feature} geojson search with GeoJSON\n * @returns {FeatureCollection} all features that intersects with the given GeoJSON.\n * @example\n * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n *\n * tree.search(poly);\n */\n tree.search = function (geojson) {\n var features = rbush.prototype.search.call(this, this.toBBox(geojson));\n return featureCollection(features);\n };\n\n /**\n * [collides](https://github.com/mourner/rbush#collisions)\n *\n * @param {BBox|FeatureCollection|Feature} geojson collides with GeoJSON\n * @returns {boolean} true if there are any items intersecting the given GeoJSON, otherwise false.\n * @example\n * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n *\n * tree.collides(poly);\n */\n tree.collides = function (geojson) {\n return rbush.prototype.collides.call(this, this.toBBox(geojson));\n };\n\n /**\n * [all](https://github.com/mourner/rbush#search)\n *\n * @returns {FeatureCollection} all the features in RBush\n * @example\n * tree.all()\n */\n tree.all = function () {\n var features = rbush.prototype.all.call(this);\n return featureCollection(features);\n };\n\n /**\n * [toJSON](https://github.com/mourner/rbush#export-and-import)\n *\n * @returns {any} export data as JSON object\n * @example\n * var exported = tree.toJSON()\n */\n tree.toJSON = function () {\n return rbush.prototype.toJSON.call(this);\n };\n\n /**\n * [fromJSON](https://github.com/mourner/rbush#export-and-import)\n *\n * @param {any} json import previously exported data\n * @returns {RBush} GeoJSON RBush\n * @example\n * var exported = {\n * \"children\": [\n * {\n * \"type\": \"Feature\",\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * },\n * \"properties\": {},\n * \"bbox\": [110, 50, 110, 50]\n * }\n * ],\n * \"height\": 1,\n * \"leaf\": true,\n * \"minX\": 110,\n * \"minY\": 50,\n * \"maxX\": 110,\n * \"maxY\": 50\n * }\n * tree.fromJSON(exported)\n */\n tree.fromJSON = function (json) {\n return rbush.prototype.fromJSON.call(this, json);\n };\n\n /**\n * Converts GeoJSON to {minX, minY, maxX, maxY} schema\n *\n * @private\n * @param {BBox|FeatureCollection|Feature} geojson feature(s) to retrieve BBox from\n * @returns {Object} converted to {minX, minY, maxX, maxY}\n */\n tree.toBBox = function (geojson) {\n var bbox;\n if (geojson.bbox) bbox = geojson.bbox;\n else if (Array.isArray(geojson) && geojson.length === 4) bbox = geojson;\n else if (Array.isArray(geojson) && geojson.length === 6) bbox = [geojson[0], geojson[1], geojson[3], geojson[4]];\n else if (geojson.type === 'Feature') bbox = turfBBox(geojson);\n else if (geojson.type === 'FeatureCollection') bbox = turfBBox(geojson);\n else throw new Error('invalid geojson')\n\n return {\n minX: bbox[0],\n minY: bbox[1],\n maxX: bbox[2],\n maxY: bbox[3]\n };\n };\n return tree;\n}\n\nmodule.exports = geojsonRbush;\nmodule.exports.default = geojsonRbush;\n","'use strict';\n\nmodule.exports = rbush;\nmodule.exports.default = rbush;\n\nvar quickselect = require('quickselect');\n\nfunction rbush(maxEntries, format) {\n if (!(this instanceof rbush)) return new rbush(maxEntries, format);\n\n // max entries in a node is 9 by default; min node fill is 40% for best performance\n this._maxEntries = Math.max(4, maxEntries || 9);\n this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));\n\n if (format) {\n this._initFormat(format);\n }\n\n this.clear();\n}\n\nrbush.prototype = {\n\n all: function () {\n return this._all(this.data, []);\n },\n\n search: function (bbox) {\n\n var node = this.data,\n result = [],\n toBBox = this.toBBox;\n\n if (!intersects(bbox, node)) return result;\n\n var nodesToSearch = [],\n i, len, child, childBBox;\n\n while (node) {\n for (i = 0, len = node.children.length; i < len; i++) {\n\n child = node.children[i];\n childBBox = node.leaf ? toBBox(child) : child;\n\n if (intersects(bbox, childBBox)) {\n if (node.leaf) result.push(child);\n else if (contains(bbox, childBBox)) this._all(child, result);\n else nodesToSearch.push(child);\n }\n }\n node = nodesToSearch.pop();\n }\n\n return result;\n },\n\n collides: function (bbox) {\n\n var node = this.data,\n toBBox = this.toBBox;\n\n if (!intersects(bbox, node)) return false;\n\n var nodesToSearch = [],\n i, len, child, childBBox;\n\n while (node) {\n for (i = 0, len = node.children.length; i < len; i++) {\n\n child = node.children[i];\n childBBox = node.leaf ? toBBox(child) : child;\n\n if (intersects(bbox, childBBox)) {\n if (node.leaf || contains(bbox, childBBox)) return true;\n nodesToSearch.push(child);\n }\n }\n node = nodesToSearch.pop();\n }\n\n return false;\n },\n\n load: function (data) {\n if (!(data && data.length)) return this;\n\n if (data.length < this._minEntries) {\n for (var i = 0, len = data.length; i < len; i++) {\n this.insert(data[i]);\n }\n return this;\n }\n\n // recursively build the tree with the given data from scratch using OMT algorithm\n var node = this._build(data.slice(), 0, data.length - 1, 0);\n\n if (!this.data.children.length) {\n // save as is if tree is empty\n this.data = node;\n\n } else if (this.data.height === node.height) {\n // split root if trees have the same height\n this._splitRoot(this.data, node);\n\n } else {\n if (this.data.height < node.height) {\n // swap trees if inserted one is bigger\n var tmpNode = this.data;\n this.data = node;\n node = tmpNode;\n }\n\n // insert the small tree into the large tree at appropriate level\n this._insert(node, this.data.height - node.height - 1, true);\n }\n\n return this;\n },\n\n insert: function (item) {\n if (item) this._insert(item, this.data.height - 1);\n return this;\n },\n\n clear: function () {\n this.data = createNode([]);\n return this;\n },\n\n remove: function (item, equalsFn) {\n if (!item) return this;\n\n var node = this.data,\n bbox = this.toBBox(item),\n path = [],\n indexes = [],\n i, parent, index, goingUp;\n\n // depth-first iterative tree traversal\n while (node || path.length) {\n\n if (!node) { // go up\n node = path.pop();\n parent = path[path.length - 1];\n i = indexes.pop();\n goingUp = true;\n }\n\n if (node.leaf) { // check current node\n index = findItem(item, node.children, equalsFn);\n\n if (index !== -1) {\n // item found, remove the item and condense tree upwards\n node.children.splice(index, 1);\n path.push(node);\n this._condense(path);\n return this;\n }\n }\n\n if (!goingUp && !node.leaf && contains(node, bbox)) { // go down\n path.push(node);\n indexes.push(i);\n i = 0;\n parent = node;\n node = node.children[0];\n\n } else if (parent) { // go right\n i++;\n node = parent.children[i];\n goingUp = false;\n\n } else node = null; // nothing found\n }\n\n return this;\n },\n\n toBBox: function (item) { return item; },\n\n compareMinX: compareNodeMinX,\n compareMinY: compareNodeMinY,\n\n toJSON: function () { return this.data; },\n\n fromJSON: function (data) {\n this.data = data;\n return this;\n },\n\n _all: function (node, result) {\n var nodesToSearch = [];\n while (node) {\n if (node.leaf) result.push.apply(result, node.children);\n else nodesToSearch.push.apply(nodesToSearch, node.children);\n\n node = nodesToSearch.pop();\n }\n return result;\n },\n\n _build: function (items, left, right, height) {\n\n var N = right - left + 1,\n M = this._maxEntries,\n node;\n\n if (N <= M) {\n // reached leaf level; return leaf\n node = createNode(items.slice(left, right + 1));\n calcBBox(node, this.toBBox);\n return node;\n }\n\n if (!height) {\n // target height of the bulk-loaded tree\n height = Math.ceil(Math.log(N) / Math.log(M));\n\n // target number of root entries to maximize storage utilization\n M = Math.ceil(N / Math.pow(M, height - 1));\n }\n\n node = createNode([]);\n node.leaf = false;\n node.height = height;\n\n // split the items into M mostly square tiles\n\n var N2 = Math.ceil(N / M),\n N1 = N2 * Math.ceil(Math.sqrt(M)),\n i, j, right2, right3;\n\n multiSelect(items, left, right, N1, this.compareMinX);\n\n for (i = left; i <= right; i += N1) {\n\n right2 = Math.min(i + N1 - 1, right);\n\n multiSelect(items, i, right2, N2, this.compareMinY);\n\n for (j = i; j <= right2; j += N2) {\n\n right3 = Math.min(j + N2 - 1, right2);\n\n // pack each entry recursively\n node.children.push(this._build(items, j, right3, height - 1));\n }\n }\n\n calcBBox(node, this.toBBox);\n\n return node;\n },\n\n _chooseSubtree: function (bbox, node, level, path) {\n\n var i, len, child, targetNode, area, enlargement, minArea, minEnlargement;\n\n while (true) {\n path.push(node);\n\n if (node.leaf || path.length - 1 === level) break;\n\n minArea = minEnlargement = Infinity;\n\n for (i = 0, len = node.children.length; i < len; i++) {\n child = node.children[i];\n area = bboxArea(child);\n enlargement = enlargedArea(bbox, child) - area;\n\n // choose entry with the least area enlargement\n if (enlargement < minEnlargement) {\n minEnlargement = enlargement;\n minArea = area < minArea ? area : minArea;\n targetNode = child;\n\n } else if (enlargement === minEnlargement) {\n // otherwise choose one with the smallest area\n if (area < minArea) {\n minArea = area;\n targetNode = child;\n }\n }\n }\n\n node = targetNode || node.children[0];\n }\n\n return node;\n },\n\n _insert: function (item, level, isNode) {\n\n var toBBox = this.toBBox,\n bbox = isNode ? item : toBBox(item),\n insertPath = [];\n\n // find the best node for accommodating the item, saving all nodes along the path too\n var node = this._chooseSubtree(bbox, this.data, level, insertPath);\n\n // put the item into the node\n node.children.push(item);\n extend(node, bbox);\n\n // split on node overflow; propagate upwards if necessary\n while (level >= 0) {\n if (insertPath[level].children.length > this._maxEntries) {\n this._split(insertPath, level);\n level--;\n } else break;\n }\n\n // adjust bboxes along the insertion path\n this._adjustParentBBoxes(bbox, insertPath, level);\n },\n\n // split overflowed node into two\n _split: function (insertPath, level) {\n\n var node = insertPath[level],\n M = node.children.length,\n m = this._minEntries;\n\n this._chooseSplitAxis(node, m, M);\n\n var splitIndex = this._chooseSplitIndex(node, m, M);\n\n var newNode = createNode(node.children.splice(splitIndex, node.children.length - splitIndex));\n newNode.height = node.height;\n newNode.leaf = node.leaf;\n\n calcBBox(node, this.toBBox);\n calcBBox(newNode, this.toBBox);\n\n if (level) insertPath[level - 1].children.push(newNode);\n else this._splitRoot(node, newNode);\n },\n\n _splitRoot: function (node, newNode) {\n // split root node\n this.data = createNode([node, newNode]);\n this.data.height = node.height + 1;\n this.data.leaf = false;\n calcBBox(this.data, this.toBBox);\n },\n\n _chooseSplitIndex: function (node, m, M) {\n\n var i, bbox1, bbox2, overlap, area, minOverlap, minArea, index;\n\n minOverlap = minArea = Infinity;\n\n for (i = m; i <= M - m; i++) {\n bbox1 = distBBox(node, 0, i, this.toBBox);\n bbox2 = distBBox(node, i, M, this.toBBox);\n\n overlap = intersectionArea(bbox1, bbox2);\n area = bboxArea(bbox1) + bboxArea(bbox2);\n\n // choose distribution with minimum overlap\n if (overlap < minOverlap) {\n minOverlap = overlap;\n index = i;\n\n minArea = area < minArea ? area : minArea;\n\n } else if (overlap === minOverlap) {\n // otherwise choose distribution with minimum area\n if (area < minArea) {\n minArea = area;\n index = i;\n }\n }\n }\n\n return index;\n },\n\n // sorts node children by the best axis for split\n _chooseSplitAxis: function (node, m, M) {\n\n var compareMinX = node.leaf ? this.compareMinX : compareNodeMinX,\n compareMinY = node.leaf ? this.compareMinY : compareNodeMinY,\n xMargin = this._allDistMargin(node, m, M, compareMinX),\n yMargin = this._allDistMargin(node, m, M, compareMinY);\n\n // if total distributions margin value is minimal for x, sort by minX,\n // otherwise it's already sorted by minY\n if (xMargin < yMargin) node.children.sort(compareMinX);\n },\n\n // total margin of all possible split distributions where each node is at least m full\n _allDistMargin: function (node, m, M, compare) {\n\n node.children.sort(compare);\n\n var toBBox = this.toBBox,\n leftBBox = distBBox(node, 0, m, toBBox),\n rightBBox = distBBox(node, M - m, M, toBBox),\n margin = bboxMargin(leftBBox) + bboxMargin(rightBBox),\n i, child;\n\n for (i = m; i < M - m; i++) {\n child = node.children[i];\n extend(leftBBox, node.leaf ? toBBox(child) : child);\n margin += bboxMargin(leftBBox);\n }\n\n for (i = M - m - 1; i >= m; i--) {\n child = node.children[i];\n extend(rightBBox, node.leaf ? toBBox(child) : child);\n margin += bboxMargin(rightBBox);\n }\n\n return margin;\n },\n\n _adjustParentBBoxes: function (bbox, path, level) {\n // adjust bboxes along the given tree path\n for (var i = level; i >= 0; i--) {\n extend(path[i], bbox);\n }\n },\n\n _condense: function (path) {\n // go through the path, removing empty nodes and updating bboxes\n for (var i = path.length - 1, siblings; i >= 0; i--) {\n if (path[i].children.length === 0) {\n if (i > 0) {\n siblings = path[i - 1].children;\n siblings.splice(siblings.indexOf(path[i]), 1);\n\n } else this.clear();\n\n } else calcBBox(path[i], this.toBBox);\n }\n },\n\n _initFormat: function (format) {\n // data format (minX, minY, maxX, maxY accessors)\n\n // uses eval-type function compilation instead of just accepting a toBBox function\n // because the algorithms are very sensitive to sorting functions performance,\n // so they should be dead simple and without inner calls\n\n var compareArr = ['return a', ' - b', ';'];\n\n this.compareMinX = new Function('a', 'b', compareArr.join(format[0]));\n this.compareMinY = new Function('a', 'b', compareArr.join(format[1]));\n\n this.toBBox = new Function('a',\n 'return {minX: a' + format[0] +\n ', minY: a' + format[1] +\n ', maxX: a' + format[2] +\n ', maxY: a' + format[3] + '};');\n }\n};\n\nfunction findItem(item, items, equalsFn) {\n if (!equalsFn) return items.indexOf(item);\n\n for (var i = 0; i < items.length; i++) {\n if (equalsFn(item, items[i])) return i;\n }\n return -1;\n}\n\n// calculate node's bbox from bboxes of its children\nfunction calcBBox(node, toBBox) {\n distBBox(node, 0, node.children.length, toBBox, node);\n}\n\n// min bounding rectangle of node children from k to p-1\nfunction distBBox(node, k, p, toBBox, destNode) {\n if (!destNode) destNode = createNode(null);\n destNode.minX = Infinity;\n destNode.minY = Infinity;\n destNode.maxX = -Infinity;\n destNode.maxY = -Infinity;\n\n for (var i = k, child; i < p; i++) {\n child = node.children[i];\n extend(destNode, node.leaf ? toBBox(child) : child);\n }\n\n return destNode;\n}\n\nfunction extend(a, b) {\n a.minX = Math.min(a.minX, b.minX);\n a.minY = Math.min(a.minY, b.minY);\n a.maxX = Math.max(a.maxX, b.maxX);\n a.maxY = Math.max(a.maxY, b.maxY);\n return a;\n}\n\nfunction compareNodeMinX(a, b) { return a.minX - b.minX; }\nfunction compareNodeMinY(a, b) { return a.minY - b.minY; }\n\nfunction bboxArea(a) { return (a.maxX - a.minX) * (a.maxY - a.minY); }\nfunction bboxMargin(a) { return (a.maxX - a.minX) + (a.maxY - a.minY); }\n\nfunction enlargedArea(a, b) {\n return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) *\n (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY));\n}\n\nfunction intersectionArea(a, b) {\n var minX = Math.max(a.minX, b.minX),\n minY = Math.max(a.minY, b.minY),\n maxX = Math.min(a.maxX, b.maxX),\n maxY = Math.min(a.maxY, b.maxY);\n\n return Math.max(0, maxX - minX) *\n Math.max(0, maxY - minY);\n}\n\nfunction contains(a, b) {\n return a.minX <= b.minX &&\n a.minY <= b.minY &&\n b.maxX <= a.maxX &&\n b.maxY <= a.maxY;\n}\n\nfunction intersects(a, b) {\n return b.minX <= a.maxX &&\n b.minY <= a.maxY &&\n b.maxX >= a.minX &&\n b.maxY >= a.minY;\n}\n\nfunction createNode(children) {\n return {\n children: children,\n height: 1,\n leaf: true,\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity\n };\n}\n\n// sort an array so that items come in groups of n unsorted items, with groups sorted between each other;\n// combines selection algorithm with binary divide & conquer approach\n\nfunction multiSelect(arr, left, right, n, compare) {\n var stack = [left, right],\n mid;\n\n while (stack.length) {\n right = stack.pop();\n left = stack.pop();\n\n if (right - left <= n) continue;\n\n mid = left + Math.ceil((right - left) / n / 2) * n;\n quickselect(arr, mid, left, right, compare);\n\n stack.push(left, mid, mid, right);\n }\n}\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.quickselect = factory());\n}(this, (function () { 'use strict';\n\nfunction quickselect(arr, k, left, right, compare) {\n quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare);\n}\n\nfunction quickselectStep(arr, k, left, right, compare) {\n\n while (right > left) {\n if (right - left > 600) {\n var n = right - left + 1;\n var m = k - left + 1;\n var z = Math.log(n);\n var s = 0.5 * Math.exp(2 * z / 3);\n var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselectStep(arr, k, newLeft, newRight, compare);\n }\n\n var t = arr[k];\n var i = left;\n var j = right;\n\n swap(arr, left, k);\n if (compare(arr[right], t) > 0) swap(arr, left, right);\n\n while (i < j) {\n swap(arr, i, j);\n i++;\n j--;\n while (compare(arr[i], t) < 0) i++;\n while (compare(arr[j], t) > 0) j--;\n }\n\n if (compare(arr[left], t) === 0) swap(arr, left, j);\n else {\n j++;\n swap(arr, j, right);\n }\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n}\n\nfunction swap(arr, i, j) {\n var tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nreturn quickselect;\n\n})));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar destination_1 = require(\"@turf/destination\");\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes a {@link Point} and calculates the circle polygon given a radius in degrees, radians, miles, or kilometers; and steps for precision.\n *\n * @name circle\n * @param {Feature|number[]} center center point\n * @param {number} radius radius of the circle\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.steps=64] number of steps\n * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians\n * @param {Object} [options.properties={}] properties\n * @returns {Feature} circle polygon\n * @example\n * var center = [-75.343, 39.984];\n * var radius = 5;\n * var options = {steps: 10, units: 'kilometers', properties: {foo: 'bar'}};\n * var circle = turf.circle(center, radius, options);\n *\n * //addToMap\n * var addToMap = [turf.point(center), circle]\n */\nfunction circle(center, radius, options) {\n if (options === void 0) { options = {}; }\n // default params\n var steps = options.steps || 64;\n var properties = options.properties ? options.properties : (!Array.isArray(center) && center.type === 'Feature' && center.properties) ? center.properties : {};\n // main\n var coordinates = [];\n for (var i = 0; i < steps; i++) {\n coordinates.push(destination_1.default(center, radius, i * -360 / steps, options).geometry.coordinates);\n }\n coordinates.push(coordinates[0]);\n return helpers_1.polygon([coordinates], properties);\n}\nexports.default = circle;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bbox_1 = require(\"@turf/bbox\");\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes a {@link Feature} or {@link FeatureCollection} and returns the absolute center point of all features.\n *\n * @name center\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] Translate GeoJSON Properties to Point\n * @param {Object} [options.bbox={}] Translate GeoJSON BBox to Point\n * @param {Object} [options.id={}] Translate GeoJSON Id to Point\n * @returns {Feature} a Point feature at the absolute center point of all input features\n * @example\n * var features = turf.points([\n * [-97.522259, 35.4691],\n * [-97.502754, 35.463455],\n * [-97.508269, 35.463245]\n * ]);\n *\n * var center = turf.center(features);\n *\n * //addToMap\n * var addToMap = [features, center]\n * center.properties['marker-size'] = 'large';\n * center.properties['marker-color'] = '#000';\n */\nfunction center(geojson, options) {\n if (options === void 0) { options = {}; }\n var ext = bbox_1.default(geojson);\n var x = (ext[0] + ext[2]) / 2;\n var y = (ext[1] + ext[3]) / 2;\n return helpers_1.point([x, y], options.properties, options);\n}\nexports.default = center;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TranslateMode = void 0;\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _transformTranslate = _interopRequireDefault(require(\"@turf/transform-translate\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _viewportMercatorProject = _interopRequireDefault(require(\"viewport-mercator-project\"));\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar TranslateMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(TranslateMode, _GeoJsonEditMode);\n\n var _super = _createSuper(TranslateMode);\n\n function TranslateMode() {\n var _this;\n\n _classCallCheck(this, TranslateMode);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"_geometryBeforeTranslate\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_isTranslatable\", void 0);\n\n return _this;\n }\n\n _createClass(TranslateMode, [{\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n if (!this._isTranslatable) {\n // Nothing to do\n return;\n }\n\n if (this._geometryBeforeTranslate) {\n // Translate the geometry\n var editAction = this.getTranslateAction(event.pointerDownMapCoords, event.mapCoords, 'translating', props);\n\n if (editAction) {\n props.onEdit(editAction);\n }\n } // cancel map panning\n\n\n event.cancelPan();\n }\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n this._isTranslatable = this.isSelectionPicked(event.pointerDownPicks || event.picks, props);\n this.updateCursor(props);\n }\n }, {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n if (!this._isTranslatable) {\n return;\n }\n\n this._geometryBeforeTranslate = this.getSelectedFeaturesAsFeatureCollection(props);\n }\n }, {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n if (this._geometryBeforeTranslate) {\n // Translate the geometry\n var editAction = this.getTranslateAction(event.pointerDownMapCoords, event.mapCoords, 'translated', props);\n\n if (editAction) {\n props.onEdit(editAction);\n }\n\n this._geometryBeforeTranslate = null;\n }\n }\n }, {\n key: \"updateCursor\",\n value: function updateCursor(props) {\n if (this._isTranslatable) {\n props.onUpdateCursor('move');\n } else {\n props.onUpdateCursor(null);\n }\n }\n }, {\n key: \"getTranslateAction\",\n value: function getTranslateAction(startDragPoint, currentPoint, editType, props) {\n var _this2 = this;\n\n if (!this._geometryBeforeTranslate) {\n return null;\n }\n\n var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data);\n var selectedIndexes = props.selectedIndexes;\n\n var _ref = props.modeConfig || {},\n viewportDesc = _ref.viewport,\n screenSpace = _ref.screenSpace;\n\n if (viewportDesc && screenSpace) {\n (function () {\n var viewport = viewportDesc.project ? viewportDesc : new _viewportMercatorProject[\"default\"](viewportDesc);\n var from = viewport.project(startDragPoint);\n var to = viewport.project(currentPoint);\n var dx = to[0] - from[0];\n var dy = to[1] - from[1];\n\n for (var i = 0; i < selectedIndexes.length; i++) {\n var selectedIndex = selectedIndexes[i];\n var feature = _this2._geometryBeforeTranslate.features[i];\n var coordinates = feature.geometry.coordinates;\n\n if (coordinates) {\n coordinates = (0, _utils.mapCoords)(coordinates, function (coord) {\n var pixels = viewport.project(coord);\n\n if (pixels) {\n pixels[0] += dx;\n pixels[1] += dy;\n return viewport.unproject(pixels);\n }\n\n return null;\n }); // @ts-ignore\n\n updatedData = updatedData.replaceGeometry(selectedIndex, {\n type: feature.geometry.type,\n coordinates: coordinates\n });\n }\n }\n })();\n } else {\n var p1 = (0, _helpers.point)(startDragPoint);\n var p2 = (0, _helpers.point)(currentPoint);\n var distanceMoved = (0, _distance[\"default\"])(p1, p2);\n var direction = (0, _bearing[\"default\"])(p1, p2);\n var movedFeatures = (0, _transformTranslate[\"default\"])( // @ts-ignore\n this._geometryBeforeTranslate, distanceMoved, direction);\n\n for (var i = 0; i < selectedIndexes.length; i++) {\n var selectedIndex = selectedIndexes[i];\n var movedFeature = movedFeatures.features[i];\n updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry);\n }\n }\n\n return {\n updatedData: updatedData.getObject(),\n editType: editType,\n editContext: {\n featureIndexes: selectedIndexes\n }\n };\n }\n }]);\n\n return TranslateMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.TranslateMode = TranslateMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHJhbnNsYXRlLW1vZGUudHMiXSwibmFtZXMiOlsiVHJhbnNsYXRlTW9kZSIsImV2ZW50IiwicHJvcHMiLCJfaXNUcmFuc2xhdGFibGUiLCJfZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUiLCJlZGl0QWN0aW9uIiwiZ2V0VHJhbnNsYXRlQWN0aW9uIiwicG9pbnRlckRvd25NYXBDb29yZHMiLCJtYXBDb29yZHMiLCJvbkVkaXQiLCJjYW5jZWxQYW4iLCJpc1NlbGVjdGlvblBpY2tlZCIsInBvaW50ZXJEb3duUGlja3MiLCJwaWNrcyIsInVwZGF0ZUN1cnNvciIsImdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uIiwib25VcGRhdGVDdXJzb3IiLCJzdGFydERyYWdQb2ludCIsImN1cnJlbnRQb2ludCIsImVkaXRUeXBlIiwidXBkYXRlZERhdGEiLCJJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsImRhdGEiLCJzZWxlY3RlZEluZGV4ZXMiLCJtb2RlQ29uZmlnIiwidmlld3BvcnREZXNjIiwidmlld3BvcnQiLCJzY3JlZW5TcGFjZSIsInByb2plY3QiLCJXZWJNZXJjYXRvclZpZXdwb3J0IiwiZnJvbSIsInRvIiwiZHgiLCJkeSIsImkiLCJsZW5ndGgiLCJzZWxlY3RlZEluZGV4IiwiZmVhdHVyZSIsImZlYXR1cmVzIiwiY29vcmRpbmF0ZXMiLCJnZW9tZXRyeSIsImNvb3JkIiwicGl4ZWxzIiwidW5wcm9qZWN0IiwicmVwbGFjZUdlb21ldHJ5IiwidHlwZSIsInAxIiwicDIiLCJkaXN0YW5jZU1vdmVkIiwiZGlyZWN0aW9uIiwibW92ZWRGZWF0dXJlcyIsIm1vdmVkRmVhdHVyZSIsImdldE9iamVjdCIsImVkaXRDb250ZXh0IiwiZmVhdHVyZUluZGV4ZXMiLCJHZW9Kc29uRWRpdE1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFTQTs7QUFDQTs7QUFDQTs7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QUFNOEIsYUFBYSxHQUFHLDBCQUFhRixFQUFiLEVBQWlCQyxFQUFqQixDQUF0QjtBQUNBLFlBQU1FLFNBQVMsR0FBRyx5QkFBWUgsRUFBWixFQUFnQkMsRUFBaEIsQ0FBbEI7QUFFQSxZQUFNRyxhQUFhLEdBQUcscUNBQ3BCO0FBQ0EsYUFBSzlDLHdCQUZlLEVBR3BCNEMsYUFIb0IsRUFJcEJDLFNBSm9CLENBQXRCOztBQU9BLGFBQUssSUFBSWYsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR1gsZUFBZSxDQUFDWSxNQUFwQyxFQUE0Q0QsQ0FBQyxFQUE3QyxFQUFpRDtBQUMvQyxjQUFNRSxhQUFhLEdBQUdiLGVBQWUsQ0FBQ1csQ0FBRCxDQUFyQztBQUNBLGNBQU1pQixZQUFZLEdBQUdELGFBQWEsQ0FBQ1osUUFBZCxDQUF1QkosQ0FBdkIsQ0FBckI7QUFDQWQsVUFBQUEsV0FBVyxHQUFHQSxXQUFXLENBQUN3QixlQUFaLENBQTRCUixhQUE1QixFQUEyQ2UsWUFBWSxDQUFDWCxRQUF4RCxDQUFkO0FBQ0Q7QUFDRjs7QUFFRCxhQUFPO0FBQ0xwQixRQUFBQSxXQUFXLEVBQUVBLFdBQVcsQ0FBQ2dDLFNBQVosRUFEUjtBQUVMakMsUUFBQUEsUUFBUSxFQUFSQSxRQUZLO0FBR0xrQyxRQUFBQSxXQUFXLEVBQUU7QUFDWEMsVUFBQUEsY0FBYyxFQUFFL0I7QUFETDtBQUhSLE9BQVA7QUFPRDs7OztFQTlJZ0NnQyxnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCB0dXJmRGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHR1cmZUcmFuc2Zvcm1UcmFuc2xhdGUgZnJvbSAnQHR1cmYvdHJhbnNmb3JtLXRyYW5zbGF0ZSc7XG5pbXBvcnQgeyBwb2ludCB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IFdlYk1lcmNhdG9yVmlld3BvcnQgZnJvbSAndmlld3BvcnQtbWVyY2F0b3ItcHJvamVjdCc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiwgUG9zaXRpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7XG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIERyYWdnaW5nRXZlbnQsXG4gIE1vZGVQcm9wcyxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgbWFwQ29vcmRzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlLCBHZW9Kc29uRWRpdEFjdGlvbiB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIF9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZTogRmVhdHVyZUNvbGxlY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkO1xuICBfaXNUcmFuc2xhdGFibGU6IGJvb2xlYW47XG5cbiAgaGFuZGxlRHJhZ2dpbmcoZXZlbnQ6IERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKCF0aGlzLl9pc1RyYW5zbGF0YWJsZSkge1xuICAgICAgLy8gTm90aGluZyB0byBkb1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZSkge1xuICAgICAgLy8gVHJhbnNsYXRlIHRoZSBnZW9tZXRyeVxuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0VHJhbnNsYXRlQWN0aW9uKFxuICAgICAgICBldmVudC5wb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICAgICAgZXZlbnQubWFwQ29vcmRzLFxuICAgICAgICAndHJhbnNsYXRpbmcnLFxuICAgICAgICBwcm9wc1xuICAgICAgKTtcblxuICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgcHJvcHMub25FZGl0KGVkaXRBY3Rpb24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGNhbmNlbCBtYXAgcGFubmluZ1xuICAgIGV2ZW50LmNhbmNlbFBhbigpO1xuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgdGhpcy5faXNUcmFuc2xhdGFibGUgPSB0aGlzLmlzU2VsZWN0aW9uUGlja2VkKGV2ZW50LnBvaW50ZXJEb3duUGlja3MgfHwgZXZlbnQucGlja3MsIHByb3BzKTtcblxuICAgIHRoaXMudXBkYXRlQ3Vyc29yKHByb3BzKTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAoIXRoaXMuX2lzVHJhbnNsYXRhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uKHByb3BzKTtcbiAgfVxuXG4gIGhhbmRsZVN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlKSB7XG4gICAgICAvLyBUcmFuc2xhdGUgdGhlIGdlb21ldHJ5XG4gICAgICBjb25zdCBlZGl0QWN0aW9uID0gdGhpcy5nZXRUcmFuc2xhdGVBY3Rpb24oXG4gICAgICAgIGV2ZW50LnBvaW50ZXJEb3duTWFwQ29vcmRzLFxuICAgICAgICBldmVudC5tYXBDb29yZHMsXG4gICAgICAgICd0cmFuc2xhdGVkJyxcbiAgICAgICAgcHJvcHNcbiAgICAgICk7XG5cbiAgICAgIGlmIChlZGl0QWN0aW9uKSB7XG4gICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUN1cnNvcihwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9pc1RyYW5zbGF0YWJsZSkge1xuICAgICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ21vdmUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvcHMub25VcGRhdGVDdXJzb3IobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VHJhbnNsYXRlQWN0aW9uKFxuICAgIHN0YXJ0RHJhZ1BvaW50OiBQb3NpdGlvbixcbiAgICBjdXJyZW50UG9pbnQ6IFBvc2l0aW9uLFxuICAgIGVkaXRUeXBlOiBzdHJpbmcsXG4gICAgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj5cbiAgKTogR2VvSnNvbkVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuXG4gICAgY29uc3QgeyB2aWV3cG9ydDogdmlld3BvcnREZXNjLCBzY3JlZW5TcGFjZSB9ID0gcHJvcHMubW9kZUNvbmZpZyB8fCB7fTtcblxuICAgIGlmICh2aWV3cG9ydERlc2MgJiYgc2NyZWVuU3BhY2UpIHtcbiAgICAgIGNvbnN0IHZpZXdwb3J0ID0gdmlld3BvcnREZXNjLnByb2plY3QgPyB2aWV3cG9ydERlc2MgOiBuZXcgV2ViTWVyY2F0b3JWaWV3cG9ydCh2aWV3cG9ydERlc2MpO1xuXG4gICAgICBjb25zdCBmcm9tID0gdmlld3BvcnQucHJvamVjdChzdGFydERyYWdQb2ludCk7XG4gICAgICBjb25zdCB0byA9IHZpZXdwb3J0LnByb2plY3QoY3VycmVudFBvaW50KTtcbiAgICAgIGNvbnN0IGR4ID0gdG9bMF0gLSBmcm9tWzBdO1xuICAgICAgY29uc3QgZHkgPSB0b1sxXSAtIGZyb21bMV07XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRJbmRleGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4ZXNbaV07XG4gICAgICAgIGNvbnN0IGZlYXR1cmUgPSB0aGlzLl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZS5mZWF0dXJlc1tpXTtcblxuICAgICAgICBsZXQgY29vcmRpbmF0ZXMgPSBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICAgICAgICBpZiAoY29vcmRpbmF0ZXMpIHtcbiAgICAgICAgICBjb29yZGluYXRlcyA9IG1hcENvb3Jkcyhjb29yZGluYXRlcywgKGNvb3JkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwaXhlbHMgPSB2aWV3cG9ydC5wcm9qZWN0KGNvb3JkKTtcbiAgICAgICAgICAgIGlmIChwaXhlbHMpIHtcbiAgICAgICAgICAgICAgcGl4ZWxzWzBdICs9IGR4O1xuICAgICAgICAgICAgICBwaXhlbHNbMV0gKz0gZHk7XG4gICAgICAgICAgICAgIHJldHVybiB2aWV3cG9ydC51bnByb2plY3QocGl4ZWxzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHVwZGF0ZWREYXRhID0gdXBkYXRlZERhdGEucmVwbGFjZUdlb21ldHJ5KHNlbGVjdGVkSW5kZXgsIHtcbiAgICAgICAgICAgIHR5cGU6IGZlYXR1cmUuZ2VvbWV0cnkudHlwZSxcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHAxID0gcG9pbnQoc3RhcnREcmFnUG9pbnQpO1xuICAgICAgY29uc3QgcDIgPSBwb2ludChjdXJyZW50UG9pbnQpO1xuXG4gICAgICBjb25zdCBkaXN0YW5jZU1vdmVkID0gdHVyZkRpc3RhbmNlKHAxLCBwMik7XG4gICAgICBjb25zdCBkaXJlY3Rpb24gPSB0dXJmQmVhcmluZyhwMSwgcDIpO1xuXG4gICAgICBjb25zdCBtb3ZlZEZlYXR1cmVzID0gdHVyZlRyYW5zZm9ybVRyYW5zbGF0ZShcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZSxcbiAgICAgICAgZGlzdGFuY2VNb3ZlZCxcbiAgICAgICAgZGlyZWN0aW9uXG4gICAgICApO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdGVkSW5kZXhlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleGVzW2ldO1xuICAgICAgICBjb25zdCBtb3ZlZEZlYXR1cmUgPSBtb3ZlZEZlYXR1cmVzLmZlYXR1cmVzW2ldO1xuICAgICAgICB1cGRhdGVkRGF0YSA9IHVwZGF0ZWREYXRhLnJlcGxhY2VHZW9tZXRyeShzZWxlY3RlZEluZGV4LCBtb3ZlZEZlYXR1cmUuZ2VvbWV0cnkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB1cGRhdGVkRGF0YTogdXBkYXRlZERhdGEuZ2V0T2JqZWN0KCksXG4gICAgICBlZGl0VHlwZSxcbiAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiBzZWxlY3RlZEluZGV4ZXMsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==","import turfBearing from '@turf/bearing';\nimport turfDistance from '@turf/distance';\nimport turfTransformTranslate from '@turf/transform-translate';\nimport { point } from '@turf/helpers';\nimport WebMercatorViewport from 'viewport-mercator-project';\nimport { FeatureCollection, Position } from '../geojson-types';\nimport {\n PointerMoveEvent,\n StartDraggingEvent,\n StopDraggingEvent,\n DraggingEvent,\n ModeProps,\n} from '../types';\nimport { mapCoords } from '../utils';\nimport { GeoJsonEditMode, GeoJsonEditAction } from './geojson-edit-mode';\nimport { ImmutableFeatureCollection } from './immutable-feature-collection';\n\nexport class TranslateMode extends GeoJsonEditMode {\n _geometryBeforeTranslate: FeatureCollection | null | undefined;\n _isTranslatable: boolean;\n\n handleDragging(event: DraggingEvent, props: ModeProps) {\n if (!this._isTranslatable) {\n // Nothing to do\n return;\n }\n\n if (this._geometryBeforeTranslate) {\n // Translate the geometry\n const editAction = this.getTranslateAction(\n event.pointerDownMapCoords,\n event.mapCoords,\n 'translating',\n props\n );\n\n if (editAction) {\n props.onEdit(editAction);\n }\n }\n\n // cancel map panning\n event.cancelPan();\n }\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps) {\n this._isTranslatable = this.isSelectionPicked(event.pointerDownPicks || event.picks, props);\n\n this.updateCursor(props);\n }\n\n handleStartDragging(event: StartDraggingEvent, props: ModeProps) {\n if (!this._isTranslatable) {\n return;\n }\n\n this._geometryBeforeTranslate = this.getSelectedFeaturesAsFeatureCollection(props);\n }\n\n handleStopDragging(event: StopDraggingEvent, props: ModeProps) {\n if (this._geometryBeforeTranslate) {\n // Translate the geometry\n const editAction = this.getTranslateAction(\n event.pointerDownMapCoords,\n event.mapCoords,\n 'translated',\n props\n );\n\n if (editAction) {\n props.onEdit(editAction);\n }\n\n this._geometryBeforeTranslate = null;\n }\n }\n\n updateCursor(props: ModeProps) {\n if (this._isTranslatable) {\n props.onUpdateCursor('move');\n } else {\n props.onUpdateCursor(null);\n }\n }\n\n getTranslateAction(\n startDragPoint: Position,\n currentPoint: Position,\n editType: string,\n props: ModeProps\n ): GeoJsonEditAction | null | undefined {\n if (!this._geometryBeforeTranslate) {\n return null;\n }\n\n let updatedData = new ImmutableFeatureCollection(props.data);\n const selectedIndexes = props.selectedIndexes;\n\n const { viewport: viewportDesc, screenSpace } = props.modeConfig || {};\n\n if (viewportDesc && screenSpace) {\n const viewport = viewportDesc.project ? viewportDesc : new WebMercatorViewport(viewportDesc);\n\n const from = viewport.project(startDragPoint);\n const to = viewport.project(currentPoint);\n const dx = to[0] - from[0];\n const dy = to[1] - from[1];\n\n for (let i = 0; i < selectedIndexes.length; i++) {\n const selectedIndex = selectedIndexes[i];\n const feature = this._geometryBeforeTranslate.features[i];\n\n let coordinates = feature.geometry.coordinates;\n if (coordinates) {\n coordinates = mapCoords(coordinates, (coord) => {\n const pixels = viewport.project(coord);\n if (pixels) {\n pixels[0] += dx;\n pixels[1] += dy;\n return viewport.unproject(pixels);\n }\n return null;\n });\n\n // @ts-ignore\n updatedData = updatedData.replaceGeometry(selectedIndex, {\n type: feature.geometry.type,\n coordinates,\n });\n }\n }\n } else {\n const p1 = point(startDragPoint);\n const p2 = point(currentPoint);\n\n const distanceMoved = turfDistance(p1, p2);\n const direction = turfBearing(p1, p2);\n\n const movedFeatures = turfTransformTranslate(\n // @ts-ignore\n this._geometryBeforeTranslate,\n distanceMoved,\n direction\n );\n\n for (let i = 0; i < selectedIndexes.length; i++) {\n const selectedIndex = selectedIndexes[i];\n const movedFeature = movedFeatures.features[i];\n updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry);\n }\n }\n\n return {\n updatedData: updatedData.getObject(),\n editType,\n editContext: {\n featureIndexes: selectedIndexes,\n },\n };\n }\n}\n","import { coordEach } from '@turf/meta';\nimport { isObject } from '@turf/helpers';\nimport { getCoords } from '@turf/invariant';\nimport clone from '@turf/clone';\nimport rhumbDestination from '@turf/rhumb-destination';\n\n/**\n * Moves any geojson Feature or Geometry of a specified distance along a Rhumb Line\n * on the provided direction angle.\n *\n * @name transformTranslate\n * @param {GeoJSON} geojson object to be translated\n * @param {number} distance length of the motion; negative values determine motion in opposite direction\n * @param {number} direction of the motion; angle from North in decimal degrees, positive clockwise\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] in which `distance` will be express; miles, kilometers, degrees, or radians\n * @param {number} [options.zTranslation=0] length of the vertical motion, same unit of distance\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} the translated GeoJSON object\n * @example\n * var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);\n * var translatedPoly = turf.transformTranslate(poly, 100, 35);\n *\n * //addToMap\n * var addToMap = [poly, translatedPoly];\n * translatedPoly.properties = {stroke: '#F00', 'stroke-width': 4};\n */\nfunction transformTranslate(geojson, distance, direction, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var units = options.units;\n var zTranslation = options.zTranslation;\n var mutate = options.mutate;\n\n // Input validation\n if (!geojson) throw new Error('geojson is required');\n if (distance === undefined || distance === null || isNaN(distance)) throw new Error('distance is required');\n if (zTranslation && typeof zTranslation !== 'number' && isNaN(zTranslation)) throw new Error('zTranslation is not a number');\n\n // Shortcut no-motion\n zTranslation = (zTranslation !== undefined) ? zTranslation : 0;\n if (distance === 0 && zTranslation === 0) return geojson;\n\n if (direction === undefined || direction === null || isNaN(direction)) throw new Error('direction is required');\n\n // Invert with negative distances\n if (distance < 0) {\n distance = -distance;\n direction = -direction;\n }\n\n // Clone geojson to avoid side effects\n if (mutate === false || mutate === undefined) geojson = clone(geojson);\n\n // Translate each coordinate\n coordEach(geojson, function (pointCoords) {\n var newCoords = getCoords(rhumbDestination(pointCoords, distance, direction, {units: units}));\n pointCoords[0] = newCoords[0];\n pointCoords[1] = newCoords[1];\n if (zTranslation && pointCoords.length === 3) pointCoords[2] += zTranslation;\n });\n return geojson;\n}\n\nexport default transformTranslate;\n","import { feature, isObject, lineString, point } from '@turf/helpers';\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords,\n geometryMaybeCollection,\n wrapShrink = 0,\n coordIndex = 0,\n isGeometryCollection,\n type = geojson.type,\n isFeatureCollection = type === 'FeatureCollection',\n isFeature = type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry :\n (isFeature ? geojson.geometry : geojson));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n\n wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0;\n\n switch (geomType) {\n case null:\n break;\n case 'Point':\n if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case 'LineString':\n case 'MultiPoint':\n for (j = 0; j < coords.length; j++) {\n if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n if (geomType === 'MultiPoint') multiFeatureIndex++;\n }\n if (geomType === 'LineString') multiFeatureIndex++;\n break;\n case 'Polygon':\n case 'MultiLineString':\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n if (geomType === 'MultiLineString') multiFeatureIndex++;\n if (geomType === 'Polygon') geometryIndex++;\n }\n if (geomType === 'Polygon') multiFeatureIndex++;\n break;\n case 'MultiPolygon':\n for (j = 0; j < coords.length; j++) {\n if (geomType === 'MultiPolygon') geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case 'GeometryCollection':\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n break;\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n }, excludeWrapCoord);\n return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case 'FeatureCollection':\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case 'Feature':\n callback(geojson.properties, 0);\n break;\n }\n}\n\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function (currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n else previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n if (geojson.type === 'Feature') {\n callback(geojson, 0);\n } else if (geojson.type === 'FeatureCollection') {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function (currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function (coord) {\n coords.push(coord);\n });\n return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG,\n geometryMaybeCollection,\n isGeometryCollection,\n featureProperties,\n featureBBox,\n featureId,\n featureIndex = 0,\n isFeatureCollection = geojson.type === 'FeatureCollection',\n isFeature = geojson.type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (i = 0; i < stop; i++) {\n\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry :\n (isFeature ? geojson.geometry : geojson));\n featureProperties = (isFeatureCollection ? geojson.features[i].properties :\n (isFeature ? geojson.properties : {}));\n featureBBox = (isFeatureCollection ? geojson.features[i].bbox :\n (isFeature ? geojson.bbox : undefined));\n featureId = (isFeatureCollection ? geojson.features[i].id :\n (isFeature ? geojson.id : undefined));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n\n // Handle null Geometry\n if (geometry === null) {\n if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n continue;\n }\n switch (geometry.type) {\n case 'Point':\n case 'LineString':\n case 'MultiPoint':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon': {\n if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n break;\n }\n case 'GeometryCollection': {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n }\n break;\n }\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n });\n return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = (geometry === null) ? null : geometry.type;\n switch (type) {\n case null:\n case 'Point':\n case 'LineString':\n case 'Polygon':\n if (callback(feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false;\n return;\n }\n\n var geomType;\n\n // Callback for multi-geometry\n switch (type) {\n case 'MultiPoint':\n geomType = 'Point';\n break;\n case 'MultiLineString':\n geomType = 'LineString';\n break;\n case 'MultiPolygon':\n geomType = 'Polygon';\n break;\n }\n\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n }\n });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n\n // Exclude null Geometries\n if (!feature$$1.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature$$1.geometry.type;\n if (type === 'Point' || type === 'MultiPoint') return;\n\n // Generate 2-vertex line segments\n var previousCoords;\n if (coordEach(feature$$1, function (currentCoord, coordIndex, featureIndexCoord, mutliPartIndexCoord, geometryIndex) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (previousCoords === undefined) {\n previousCoords = currentCoord;\n return;\n }\n var currentSegment = lineString([previousCoords, currentCoord], feature$$1.properties);\n if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }) === false) return false;\n });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentInex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === undefined) previousValue = currentSegment;\n else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n started = true;\n });\n return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n // validation\n if (!geojson) throw new Error('geojson is required');\n\n flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {\n if (feature$$1.geometry === null) return;\n var type = feature$$1.geometry.type;\n var coords = feature$$1.geometry.coordinates;\n switch (type) {\n case 'LineString':\n if (callback(feature$$1, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n break;\n case 'Polygon':\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(lineString(coords[geometryIndex], feature$$1.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n }\n break;\n }\n });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n });\n return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature>\n */\nfunction findSegment(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature>\n */\nfunction findPoint(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n return point(coords, properties, options);\n case 'MultiPoint':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case 'LineString':\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\nexport { coordEach, coordReduce, propEach, propReduce, featureEach, featureReduce, coordAll, geomEach, geomReduce, flattenEach, flattenReduce, segmentEach, segmentReduce, lineEach, lineReduce, findSegment, findPoint };\n","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = {type: 'Feature'};\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point': geom = point(coordinates).geometry; break;\n case 'LineString': geom = lineString(coordinates).geometry; break;\n case 'Polygon': geom = polygon(coordinates).geometry; break;\n case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n default: throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = {type: 'FeatureCollection'};\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n","import { isNumber } from '@turf/helpers';\n\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n if (!coord) throw new Error('coord is required');\n if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;\n if (coord.type === 'Point') return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n\n throw new Error('coord must be GeoJSON Point or an Array of numbers');\n}\n\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n if (!coords) throw new Error('coords is required');\n\n // Feature\n if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;\n\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n\n throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');\n}\n\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error('coordinates must only contain numbers');\n}\n\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n if (!type || !name) throw new Error('type and name required');\n\n if (!value || value.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n if (!feature) throw new Error('No feature passed');\n if (!name) throw new Error('.featureOf() requires a name');\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) throw new Error('No featureCollection passed');\n if (!name) throw new Error('.collectionOf() requires a name');\n if (!featureCollection || featureCollection.type !== 'FeatureCollection') {\n throw new Error('Invalid input to ' + name + ', FeatureCollection required');\n }\n for (var i = 0; i < featureCollection.features.length; i++) {\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n }\n}\n\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n if (!geojson) throw new Error('geojson is required');\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error('geojson must be a valid Feature or Geometry Object');\n}\n\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */\nfunction getGeomType() {\n throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');\n}\n\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, name) {\n if (!geojson) throw new Error((name || 'geojson') + ' is required');\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || 'geojson') + ' is invalid');\n}\n\nexport { getCoord, getCoords, containsNumber, geojsonType, featureOf, collectionOf, getGeom, getGeomType, getType };\n","import { convertLength, degreesToRadians, earthRadius, isObject, point } from '@turf/helpers';\nimport { getCoord } from '@turf/invariant';\n\n// https://en.wikipedia.org/wiki/Rhumb_line\n/**\n * Returns the destination {@link Point} having travelled the given distance along a Rhumb line from the\n * origin Point with the (varant) given bearing.\n *\n * @name rhumbDestination\n * @param {Coord} origin starting point\n * @param {number} distance distance from the starting point\n * @param {number} bearing varant bearing angle ranging from -180 to 180 degrees from north\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @param {Object} [options.properties={}] translate properties to destination point\n * @returns {Feature} Destination point.\n * @example\n * var pt = turf.point([-75.343, 39.984], {\"marker-color\": \"F00\"});\n * var distance = 50;\n * var bearing = 90;\n * var options = {units: 'miles'};\n *\n * var destination = turf.rhumbDestination(pt, distance, bearing, options);\n *\n * //addToMap\n * var addToMap = [pt, destination]\n * destination.properties['marker-color'] = '#00F';\n */\nfunction rhumbDestination(origin, distance, bearing, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var units = options.units;\n var properties = options.properties;\n\n // validation\n if (!origin) throw new Error('origin is required');\n if (distance === undefined || distance === null) throw new Error('distance is required');\n if (bearing === undefined || bearing === null) throw new Error('bearing is required');\n if (!(distance >= 0)) throw new Error('distance must be greater than 0');\n\n var distanceInMeters = convertLength(distance, units, 'meters');\n var coords = getCoord(origin);\n var destination = calculateRhumbDestination(coords, distanceInMeters, bearing);\n\n // compensate the crossing of the 180th meridian (https://macwright.org/2016/09/26/the-180th-meridian.html)\n // solution from https://github.com/mapbox/mapbox-gl-js/issues/3250#issuecomment-294887678\n destination[0] += (destination[0] - coords[0] > 180) ? -360 : (coords[0] - destination[0] > 180) ? 360 : 0;\n return point(destination, properties);\n}\n\n/**\n * Returns the destination point having travelled along a rhumb line from origin point the given\n * distance on the given bearing.\n * Adapted from Geodesy: http://www.movable-type.co.uk/scripts/latlong.html#rhumblines\n *\n * @private\n * @param {Array} origin - point\n * @param {number} distance - Distance travelled, in same units as earth radius (default: metres).\n * @param {number} bearing - Bearing in degrees from north.\n * @param {number} [radius=6371e3] - (Mean) radius of earth (defaults to radius in metres).\n * @returns {Array} Destination point.\n */\nfunction calculateRhumbDestination(origin, distance, bearing, radius) {\n // φ => phi\n // λ => lambda\n // ψ => psi\n // Δ => Delta\n // δ => delta\n // θ => theta\n\n radius = (radius === undefined) ? earthRadius : Number(radius);\n\n var delta = distance / radius; // angular distance in radians\n var lambda1 = origin[0] * Math.PI / 180; // to radians, but without normalize to 𝜋\n var phi1 = degreesToRadians(origin[1]);\n var theta = degreesToRadians(bearing);\n\n var DeltaPhi = delta * Math.cos(theta);\n var phi2 = phi1 + DeltaPhi;\n\n // check for some daft bugger going past the pole, normalise latitude if so\n if (Math.abs(phi2) > Math.PI / 2) phi2 = phi2 > 0 ? Math.PI - phi2 : -Math.PI - phi2;\n\n var DeltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));\n var q = Math.abs(DeltaPsi) > 10e-12 ? DeltaPhi / DeltaPsi : Math.cos(phi1); // E-W course becomes ill-conditioned with 0/0\n\n var DeltaLambda = delta * Math.sin(theta) / q;\n var lambda2 = lambda1 + DeltaLambda;\n\n return [((lambda2 * 180 / Math.PI) + 540) % 360 - 180, phi2 * 180 / Math.PI]; // normalise to −180..+180°\n}\n\nexport default rhumbDestination;\n","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = {type: 'Feature'};\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point': geom = point(coordinates).geometry; break;\n case 'LineString': geom = lineString(coordinates).geometry; break;\n case 'Polygon': geom = polygon(coordinates).geometry; break;\n case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n default: throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = {type: 'FeatureCollection'};\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n","import { isNumber } from '@turf/helpers';\n\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n if (!coord) throw new Error('coord is required');\n if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;\n if (coord.type === 'Point') return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n\n throw new Error('coord must be GeoJSON Point or an Array of numbers');\n}\n\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n if (!coords) throw new Error('coords is required');\n\n // Feature\n if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;\n\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n\n throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');\n}\n\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error('coordinates must only contain numbers');\n}\n\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n if (!type || !name) throw new Error('type and name required');\n\n if (!value || value.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n if (!feature) throw new Error('No feature passed');\n if (!name) throw new Error('.featureOf() requires a name');\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) throw new Error('No featureCollection passed');\n if (!name) throw new Error('.collectionOf() requires a name');\n if (!featureCollection || featureCollection.type !== 'FeatureCollection') {\n throw new Error('Invalid input to ' + name + ', FeatureCollection required');\n }\n for (var i = 0; i < featureCollection.features.length; i++) {\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n }\n}\n\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n if (!geojson) throw new Error('geojson is required');\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error('geojson must be a valid Feature or Geometry Object');\n}\n\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */\nfunction getGeomType() {\n throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');\n}\n\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, name) {\n if (!geojson) throw new Error((name || 'geojson') + ' is required');\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || 'geojson') + ' is invalid');\n}\n\nexport { getCoord, getCoords, containsNumber, geojsonType, featureOf, collectionOf, getGeom, getGeomType, getType };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ScaleMode = void 0;\n\nvar _bbox = _interopRequireDefault(require(\"@turf/bbox\"));\n\nvar _centroid = _interopRequireDefault(require(\"@turf/centroid\"));\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _bboxPolygon = _interopRequireDefault(require(\"@turf/bbox-polygon\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _polygonToLine = _interopRequireDefault(require(\"@turf/polygon-to-line\"));\n\nvar _meta = require(\"@turf/meta\");\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _transformScale = _interopRequireDefault(require(\"@turf/transform-scale\"));\n\nvar _invariant = require(\"@turf/invariant\");\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ScaleMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(ScaleMode, _GeoJsonEditMode);\n\n var _super = _createSuper(ScaleMode);\n\n function ScaleMode() {\n var _this;\n\n _classCallCheck(this, ScaleMode);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"_geometryBeingScaled\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_selectedEditHandle\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_cornerGuidePoints\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_cursor\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_isScaling\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_isSinglePointGeometrySelected\", function (geometry) {\n var _ref = geometry || {},\n features = _ref.features;\n\n if (Array.isArray(features) && features.length === 1) {\n // @ts-ignore\n var _getGeom = (0, _invariant.getGeom)(features[0]),\n type = _getGeom.type;\n\n return type === 'Point';\n }\n\n return false;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_getOppositeScaleHandle\", function (selectedHandle) {\n var selectedHandleIndex = selectedHandle && selectedHandle.properties && Array.isArray(selectedHandle.properties.positionIndexes) && selectedHandle.properties.positionIndexes[0];\n\n if (typeof selectedHandleIndex !== 'number') {\n return null;\n }\n\n var guidePointCount = _this._cornerGuidePoints.length;\n var oppositeIndex = (selectedHandleIndex + guidePointCount / 2) % guidePointCount;\n return _this._cornerGuidePoints.find(function (p) {\n if (!Array.isArray(p.properties.positionIndexes)) {\n return false;\n }\n\n return p.properties.positionIndexes[0] === oppositeIndex;\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_getUpdatedData\", function (props, editedData) {\n var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data);\n var selectedIndexes = props.selectedIndexes;\n\n for (var i = 0; i < selectedIndexes.length; i++) {\n var selectedIndex = selectedIndexes[i];\n var movedFeature = editedData.features[i];\n updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry);\n }\n\n return updatedData.getObject();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"isEditHandleSelected\", function () {\n return Boolean(_this._selectedEditHandle);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getScaleAction\", function (startDragPoint, currentPoint, editType, props) {\n if (!_this._selectedEditHandle) {\n return null;\n }\n\n var oppositeHandle = _this._getOppositeScaleHandle(_this._selectedEditHandle);\n\n var origin = (0, _invariant.getCoord)(oppositeHandle); // @ts-ignore\n\n var scaleFactor = getScaleFactor(origin, startDragPoint, currentPoint); // @ts-ignore\n\n var scaledFeatures = (0, _transformScale[\"default\"])( // @ts-ignore\n _this._geometryBeingScaled, scaleFactor, {\n origin: origin\n });\n return {\n updatedData: _this._getUpdatedData(props, scaledFeatures),\n editType: editType,\n editContext: {\n featureIndexes: props.selectedIndexes\n }\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateCursor\", function (props) {\n if (_this._selectedEditHandle) {\n if (_this._cursor) {\n props.onUpdateCursor(_this._cursor);\n }\n\n var cursorGeometry = _this.getSelectedFeaturesAsFeatureCollection(props); // Get resize cursor direction from the hovered scale editHandle (e.g. nesw or nwse)\n\n\n var centroid = (0, _centroid[\"default\"])(cursorGeometry);\n var bearing = (0, _bearing[\"default\"])(centroid, _this._selectedEditHandle);\n var positiveBearing = bearing < 0 ? bearing + 180 : bearing;\n\n if (positiveBearing >= 0 && positiveBearing <= 90 || positiveBearing >= 180 && positiveBearing <= 270) {\n _this._cursor = 'nesw-resize';\n props.onUpdateCursor('nesw-resize');\n } else {\n _this._cursor = 'nwse-resize';\n props.onUpdateCursor('nwse-resize');\n }\n } else {\n props.onUpdateCursor(null);\n _this._cursor = null;\n }\n });\n\n return _this;\n }\n\n _createClass(ScaleMode, [{\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n if (!this._isScaling) {\n var selectedEditHandle = (0, _utils.getPickedEditHandle)(event.picks);\n this._selectedEditHandle = selectedEditHandle && selectedEditHandle.properties.editHandleType === 'scale' ? selectedEditHandle : null;\n this.updateCursor(props);\n }\n }\n }, {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n if (this._selectedEditHandle) {\n this._isScaling = true;\n this._geometryBeingScaled = this.getSelectedFeaturesAsFeatureCollection(props);\n }\n }\n }, {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n if (!this._isScaling) {\n return;\n }\n\n props.onUpdateCursor(this._cursor);\n var scaleAction = this.getScaleAction(event.pointerDownMapCoords, event.mapCoords, 'scaling', props);\n\n if (scaleAction) {\n props.onEdit(scaleAction);\n }\n\n event.cancelPan();\n }\n }, {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n if (this._isScaling) {\n // Scale the geometry\n var scaleAction = this.getScaleAction(event.pointerDownMapCoords, event.mapCoords, 'scaled', props);\n\n if (scaleAction) {\n props.onEdit(scaleAction);\n }\n\n props.onUpdateCursor(null);\n this._geometryBeingScaled = null;\n this._selectedEditHandle = null;\n this._cursor = null;\n this._isScaling = false;\n }\n }\n }, {\n key: \"getGuides\",\n value: function getGuides(props) {\n this._cornerGuidePoints = [];\n var selectedGeometry = this.getSelectedFeaturesAsFeatureCollection(props); // Add buffer to the enveloping box if a single Point feature is selected\n\n if (this._isSinglePointGeometrySelected(selectedGeometry)) {\n return {\n type: 'FeatureCollection',\n features: []\n };\n }\n\n var boundingBox = (0, _bboxPolygon[\"default\"])((0, _bbox[\"default\"])(selectedGeometry));\n boundingBox.properties.mode = 'scale';\n var cornerGuidePoints = [];\n (0, _meta.coordEach)(boundingBox, function (coord, coordIndex) {\n if (coordIndex < 4) {\n // Get corner midpoint guides from the enveloping box\n var cornerPoint = (0, _helpers.point)(coord, {\n guideType: 'editHandle',\n editHandleType: 'scale',\n positionIndexes: [coordIndex]\n });\n cornerGuidePoints.push(cornerPoint);\n }\n });\n this._cornerGuidePoints = cornerGuidePoints; // @ts-ignore\n\n return (0, _helpers.featureCollection)([(0, _polygonToLine[\"default\"])(boundingBox)].concat(_toConsumableArray(this._cornerGuidePoints)));\n }\n }]);\n\n return ScaleMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.ScaleMode = ScaleMode;\n\nfunction getScaleFactor(centroid, startDragPoint, currentPoint) {\n var startDistance = (0, _distance[\"default\"])(centroid, startDragPoint);\n var endDistance = (0, _distance[\"default\"])(centroid, currentPoint);\n return endDistance / startDistance;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc2NhbGUtbW9kZS50cyJdLCJuYW1lcyI6WyJTY2FsZU1vZGUiLCJnZW9tZXRyeSIsImZlYXR1cmVzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwidHlwZSIsInNlbGVjdGVkSGFuZGxlIiwic2VsZWN0ZWRIYW5kbGVJbmRleCIsInByb3BlcnRpZXMiLCJwb3NpdGlvbkluZGV4ZXMiLCJndWlkZVBvaW50Q291bnQiLCJfY29ybmVyR3VpZGVQb2ludHMiLCJvcHBvc2l0ZUluZGV4IiwiZmluZCIsInAiLCJwcm9wcyIsImVkaXRlZERhdGEiLCJ1cGRhdGVkRGF0YSIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwiZGF0YSIsInNlbGVjdGVkSW5kZXhlcyIsImkiLCJzZWxlY3RlZEluZGV4IiwibW92ZWRGZWF0dXJlIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2V0T2JqZWN0IiwiQm9vbGVhbiIsIl9zZWxlY3RlZEVkaXRIYW5kbGUiLCJzdGFydERyYWdQb2ludCIsImN1cnJlbnRQb2ludCIsImVkaXRUeXBlIiwib3Bwb3NpdGVIYW5kbGUiLCJfZ2V0T3Bwb3NpdGVTY2FsZUhhbmRsZSIsIm9yaWdpbiIsInNjYWxlRmFjdG9yIiwiZ2V0U2NhbGVGYWN0b3IiLCJzY2FsZWRGZWF0dXJlcyIsIl9nZW9tZXRyeUJlaW5nU2NhbGVkIiwiX2dldFVwZGF0ZWREYXRhIiwiZWRpdENvbnRleHQiLCJmZWF0dXJlSW5kZXhlcyIsIl9jdXJzb3IiLCJvblVwZGF0ZUN1cnNvciIsImN1cnNvckdlb21ldHJ5IiwiZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24iLCJjZW50cm9pZCIsImJlYXJpbmciLCJwb3NpdGl2ZUJlYXJpbmciLCJldmVudCIsIl9pc1NjYWxpbmciLCJzZWxlY3RlZEVkaXRIYW5kbGUiLCJwaWNrcyIsImVkaXRIYW5kbGVUeXBlIiwidXBkYXRlQ3Vyc29yIiwic2NhbGVBY3Rpb24iLCJnZXRTY2FsZUFjdGlvbiIsInBvaW50ZXJEb3duTWFwQ29vcmRzIiwibWFwQ29vcmRzIiwib25FZGl0IiwiY2FuY2VsUGFuIiwic2VsZWN0ZWRHZW9tZXRyeSIsIl9pc1NpbmdsZVBvaW50R2VvbWV0cnlTZWxlY3RlZCIsImJvdW5kaW5nQm94IiwibW9kZSIsImNvcm5lckd1aWRlUG9pbnRzIiwiY29vcmQiLCJjb29yZEluZGV4IiwiY29ybmVyUG9pbnQiLCJndWlkZVR5cGUiLCJwdXNoIiwiR2VvSnNvbkVkaXRNb2RlIiwic3RhcnREaXN0YW5jZSIsImVuZERpc3RhbmNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBV0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lFQUtFLEs7O3FGQUVvQixVQUFDQyxRQUFELEVBQTZEO0FBQUEsaUJBQ3ZFQSxRQUFRLElBQUksRUFEMkQ7QUFBQSxVQUNwRkMsUUFEb0YsUUFDcEZBLFFBRG9GOztBQUU1RixVQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0YsUUFBZCxLQUEyQkEsUUFBUSxDQUFDRyxNQUFULEtBQW9CLENBQW5ELEVBQXNEO0FBQ3BEO0FBRG9ELHVCQUVuQyx3QkFBUUgsUUFBUSxDQUFDLENBQUQsQ0FBaEIsQ0FGbUM7QUFBQSxZQUU1Q0ksSUFGNEMsWUFFNUNBLElBRjRDOztBQUdwRCxlQUFPQSxJQUFJLEtBQUssT0FBaEI7QUFDRDs7QUFDRCxhQUFPLEtBQVA7QUFDRCxLOzs4RUFFeUIsVUFBQ0MsY0FBRCxFQUF1QztBQUMvRCxVQUFNQyxtQkFBbUIsR0FDdkJELGNBQWMsSUFDZEEsY0FBYyxDQUFDRSxVQURmLElBRUFOLEtBQUssQ0FBQ0MsT0FBTixDQUFjRyxjQUFjLENBQUNFLFVBQWYsQ0FBMEJDLGVBQXhDLENBRkEsSUFHQUgsY0FBYyxDQUFDRSxVQUFm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KiBlc2xpbnQtZGlzYWJsZSBwcmV0dGllci9wcmV0dGllciAqL1xuaW1wb3J0IGJib3ggZnJvbSAnQHR1cmYvYmJveCc7XG5pbXBvcnQgdHVyZkNlbnRyb2lkIGZyb20gJ0B0dXJmL2NlbnRyb2lkJztcbmltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHsgcG9pbnQsIGZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgcG9seWdvblRvTGluZSBmcm9tICdAdHVyZi9wb2x5Z29uLXRvLWxpbmUnO1xuaW1wb3J0IHsgY29vcmRFYWNoIH0gZnJvbSAnQHR1cmYvbWV0YSc7XG5pbXBvcnQgdHVyZkRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB0dXJmVHJhbnNmb3JtU2NhbGUgZnJvbSAnQHR1cmYvdHJhbnNmb3JtLXNjYWxlJztcbmltcG9ydCB7IGdldENvb3JkLCBnZXRHZW9tIH0gZnJvbSAnQHR1cmYvaW52YXJpYW50JztcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uLCBQb3NpdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHtcbiAgTW9kZVByb3BzLFxuICBQb2ludGVyTW92ZUV2ZW50LFxuICBTdGFydERyYWdnaW5nRXZlbnQsXG4gIFN0b3BEcmFnZ2luZ0V2ZW50LFxuICBEcmFnZ2luZ0V2ZW50LFxuICBFZGl0SGFuZGxlRmVhdHVyZSxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0UGlja2VkRWRpdEhhbmRsZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgU2NhbGVNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX2dlb21ldHJ5QmVpbmdTY2FsZWQ6IEZlYXR1cmVDb2xsZWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX3NlbGVjdGVkRWRpdEhhbmRsZTogRWRpdEhhbmRsZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBfY29ybmVyR3VpZGVQb2ludHM6IEFycmF5PEVkaXRIYW5kbGVGZWF0dXJlPjtcbiAgX2N1cnNvcjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX2lzU2NhbGluZyA9IGZhbHNlO1xuXG4gIF9pc1NpbmdsZVBvaW50R2VvbWV0cnlTZWxlY3RlZCA9IChnZW9tZXRyeTogRmVhdHVyZUNvbGxlY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgeyBmZWF0dXJlcyB9ID0gZ2VvbWV0cnkgfHwge307XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZmVhdHVyZXMpICYmIGZlYXR1cmVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgeyB0eXBlIH0gPSBnZXRHZW9tKGZlYXR1cmVzWzBdKTtcbiAgICAgIHJldHVybiB0eXBlID09PSAnUG9pbnQnO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgX2dldE9wcG9zaXRlU2NhbGVIYW5kbGUgPSAoc2VsZWN0ZWRIYW5kbGU6IEVkaXRIYW5kbGVGZWF0dXJlKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRIYW5kbGVJbmRleCA9XG4gICAgICBzZWxlY3RlZEhhbmRsZSAmJlxuICAgICAgc2VsZWN0ZWRIYW5kbGUucHJvcGVydGllcyAmJlxuICAgICAgQXJyYXkuaXNBcnJheShzZWxlY3RlZEhhbmRsZS5wcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlcykgJiZcbiAgICAgIHNlbGVjdGVkSGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzBdO1xuXG4gICAgaWYgKHR5cGVvZiBzZWxlY3RlZEhhbmRsZUluZGV4ICE9PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGd1aWRlUG9pbnRDb3VudCA9IHRoaXMuX2Nvcm5lckd1aWRlUG9pbnRzLmxlbmd0aDtcbiAgICBjb25zdCBvcHBvc2l0ZUluZGV4ID0gKHNlbGVjdGVkSGFuZGxlSW5kZXggKyBndWlkZVBvaW50Q291bnQgLyAyKSAlIGd1aWRlUG9pbnRDb3VudDtcbiAgICByZXR1cm4gdGhpcy5fY29ybmVyR3VpZGVQb2ludHMuZmluZCgocCkgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHAucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzBdID09PSBvcHBvc2l0ZUluZGV4O1xuICAgIH0pO1xuICB9O1xuXG4gIF9nZXRVcGRhdGVkRGF0YSA9IChwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPiwgZWRpdGVkRGF0YTogRmVhdHVyZUNvbGxlY3Rpb24pID0+IHtcbiAgICBsZXQgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRJbmRleGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleGVzW2ldO1xuICAgICAgY29uc3QgbW92ZWRGZWF0dXJlID0gZWRpdGVkRGF0YS5mZWF0dXJlc1tpXTtcbiAgICAgIHVwZGF0ZWREYXRhID0gdXBkYXRlZERhdGEucmVwbGFjZUdlb21ldHJ5KHNlbGVjdGVkSW5kZXgsIG1vdmVkRmVhdHVyZS5nZW9tZXRyeSk7XG4gICAgfVxuICAgIHJldHVybiB1cGRhdGVkRGF0YS5nZXRPYmplY3QoKTtcbiAgfTtcblxuICBpc0VkaXRIYW5kbGVTZWxlY3RlZCA9ICgpOiBib29sZWFuID0+IEJvb2xlYW4odGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKTtcblxuICBnZXRTY2FsZUFjdGlvbiA9IChcbiAgICBzdGFydERyYWdQb2ludDogUG9zaXRpb24sXG4gICAgY3VycmVudFBvaW50OiBQb3NpdGlvbixcbiAgICBlZGl0VHlwZTogc3RyaW5nLFxuICAgIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+XG4gICkgPT4ge1xuICAgIGlmICghdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBvcHBvc2l0ZUhhbmRsZSA9IHRoaXMuX2dldE9wcG9zaXRlU2NhbGVIYW5kbGUodGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKTtcbiAgICBjb25zdCBvcmlnaW4gPSBnZXRDb29yZChvcHBvc2l0ZUhhbmRsZSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHNjYWxlRmFjdG9yID0gZ2V0U2NhbGVGYWN0b3Iob3JpZ2luLCBzdGFydERyYWdQb2ludCwgY3VycmVudFBvaW50KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qgc2NhbGVkRmVhdHVyZXM6IEZlYXR1cmVDb2xsZWN0aW9uID0gdHVyZlRyYW5zZm9ybVNjYWxlKFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1NjYWxlZCxcbiAgICAgIHNjYWxlRmFjdG9yLFxuICAgICAgeyBvcmlnaW4gfVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlZERhdGE6IHRoaXMuX2dldFVwZGF0ZWREYXRhKHByb3BzLCBzY2FsZWRGZWF0dXJlcyksXG4gICAgICBlZGl0VHlwZSxcbiAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiBwcm9wcy5zZWxlY3RlZEluZGV4ZXMsXG4gICAgICB9LFxuICAgIH07XG4gIH07XG5cbiAgdXBkYXRlQ3Vyc29yID0gKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSA9PiB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkRWRpdEhhbmRsZSkge1xuICAgICAgaWYgKHRoaXMuX2N1cnNvcikge1xuICAgICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcih0aGlzLl9jdXJzb3IpO1xuICAgICAgfVxuICAgICAgY29uc3QgY3Vyc29yR2VvbWV0cnkgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uKHByb3BzKTtcblxuICAgICAgLy8gR2V0IHJlc2l6ZSBjdXJzb3IgZGlyZWN0aW9uIGZyb20gdGhlIGhvdmVyZWQgc2NhbGUgZWRpdEhhbmRsZSAoZS5nLiBuZXN3IG9yIG53c2UpXG4gICAgICBjb25zdCBjZW50cm9pZCA9IHR1cmZDZW50cm9pZChjdXJzb3JHZW9tZXRyeSk7XG4gICAgICBjb25zdCBiZWFyaW5nID0gdHVyZkJlYXJpbmcoY2VudHJvaWQsIHRoaXMuX3NlbGVjdGVkRWRpdEhhbmRsZSk7XG4gICAgICBjb25zdCBwb3NpdGl2ZUJlYXJpbmcgPSBiZWFyaW5nIDwgMCA/IGJlYXJpbmcgKyAxODAgOiBiZWFyaW5nO1xuICAgICAgaWYgKFxuICAgICAgICAocG9zaXRpdmVCZWFyaW5nID49IDAgJiYgcG9zaXRpdmVCZWFyaW5nIDw9IDkwKSB8fFxuICAgICAgICAocG9zaXRpdmVCZWFyaW5nID49IDE4MCAmJiBwb3NpdGl2ZUJlYXJpbmcgPD0gMjcwKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuX2N1cnNvciA9ICduZXN3LXJlc2l6ZSc7XG4gICAgICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKCduZXN3LXJlc2l6ZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fY3Vyc29yID0gJ253c2UtcmVzaXplJztcbiAgICAgICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ253c2UtcmVzaXplJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKG51bGwpO1xuICAgICAgdGhpcy5fY3Vyc29yID0gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKCF0aGlzLl9pc1NjYWxpbmcpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlID1cbiAgICAgICAgc2VsZWN0ZWRFZGl0SGFuZGxlICYmIHNlbGVjdGVkRWRpdEhhbmRsZS5wcm9wZXJ0aWVzLmVkaXRIYW5kbGVUeXBlID09PSAnc2NhbGUnXG4gICAgICAgICAgPyBzZWxlY3RlZEVkaXRIYW5kbGVcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIHRoaXMudXBkYXRlQ3Vyc29yKHByb3BzKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdGFydERyYWdnaW5nKGV2ZW50OiBTdGFydERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkRWRpdEhhbmRsZSkge1xuICAgICAgdGhpcy5faXNTY2FsaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2dlb21ldHJ5QmVpbmdTY2FsZWQgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uKHByb3BzKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAoIXRoaXMuX2lzU2NhbGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKHRoaXMuX2N1cnNvcik7XG5cbiAgICBjb25zdCBzY2FsZUFjdGlvbiA9IHRoaXMuZ2V0U2NhbGVBY3Rpb24oXG4gICAgICBldmVudC5wb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICAgIGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICdzY2FsaW5nJyxcbiAgICAgIHByb3BzXG4gICAgKTtcbiAgICBpZiAoc2NhbGVBY3Rpb24pIHtcbiAgICAgIHByb3BzLm9uRWRpdChzY2FsZUFjdGlvbik7XG4gICAgfVxuXG4gICAgZXZlbnQuY2FuY2VsUGFuKCk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9pc1NjYWxpbmcpIHtcbiAgICAgIC8vIFNjYWxlIHRoZSBnZW9tZXRyeVxuICAgICAgY29uc3Qgc2NhbGVBY3Rpb24gPSB0aGlzLmdldFNjYWxlQWN0aW9uKFxuICAgICAgICBldmVudC5wb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICAgICAgZXZlbnQubWFwQ29vcmRzLFxuICAgICAgICAnc2NhbGVkJyxcbiAgICAgICAgcHJvcHNcbiAgICAgICk7XG4gICAgICBpZiAoc2NhbGVBY3Rpb24pIHtcbiAgICAgICAgcHJvcHMub25FZGl0KHNjYWxlQWN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgcHJvcHMub25VcGRhdGVDdXJzb3IobnVsbCk7XG5cbiAgICAgIHRoaXMuX2dlb21ldHJ5QmVpbmdTY2FsZWQgPSBudWxsO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlID0gbnVsbDtcbiAgICAgIHRoaXMuX2N1cnNvciA9IG51bGw7XG4gICAgICB0aGlzLl9pc1NjYWxpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICB0aGlzLl9jb3JuZXJHdWlkZVBvaW50cyA9IFtdO1xuICAgIGNvbnN0IHNlbGVjdGVkR2VvbWV0cnkgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uKHByb3BzKTtcblxuICAgIC8vIEFkZCBidWZmZXIgdG8gdGhlIGVudmVsb3BpbmcgYm94IGlmIGEgc2luZ2xlIFBvaW50IGZlYXR1cmUgaXMgc2VsZWN0ZWRcbiAgICBpZiAodGhpcy5faXNTaW5nbGVQb2ludEdlb21ldHJ5U2VsZWN0ZWQoc2VsZWN0ZWRHZW9tZXRyeSkpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsIGZlYXR1cmVzOiBbXSB9O1xuICAgIH1cblxuICAgIGNvbnN0IGJvdW5kaW5nQm94ID0gYmJveFBvbHlnb24oYmJveChzZWxlY3RlZEdlb21ldHJ5KSk7XG4gICAgYm91bmRpbmdCb3gucHJvcGVydGllcy5tb2RlID0gJ3NjYWxlJztcbiAgICBjb25zdCBjb3JuZXJHdWlkZVBvaW50cyA9IFtdO1xuXG4gICAgY29vcmRFYWNoKGJvdW5kaW5nQm94LCAoY29vcmQsIGNvb3JkSW5kZXgpID0+IHtcbiAgICAgIGlmIChjb29yZEluZGV4IDwgNCkge1xuICAgICAgICAvLyBHZXQgY29ybmVyIG1pZHBvaW50IGd1aWRlcyBmcm9tIHRoZSBlbnZlbG9waW5nIGJveFxuICAgICAgICBjb25zdCBjb3JuZXJQb2ludCA9IHBvaW50KGNvb3JkLCB7XG4gICAgICAgICAgZ3VpZGVUeXBlOiAnZWRpdEhhbmRsZScsXG4gICAgICAgICAgZWRpdEhhbmRsZVR5cGU6ICdzY2FsZScsXG4gICAgICAgICAgcG9zaXRpb25JbmRleGVzOiBbY29vcmRJbmRleF0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb3JuZXJHdWlkZVBvaW50cy5wdXNoKGNvcm5lclBvaW50KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuX2Nvcm5lckd1aWRlUG9pbnRzID0gY29ybmVyR3VpZGVQb2ludHM7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBmZWF0dXJlQ29sbGVjdGlvbihbcG9seWdvblRvTGluZShib3VuZGluZ0JveCksIC4uLnRoaXMuX2Nvcm5lckd1aWRlUG9pbnRzXSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGVGYWN0b3IoY2VudHJvaWQ6IFBvc2l0aW9uLCBzdGFydERyYWdQb2ludDogUG9zaXRpb24sIGN1cnJlbnRQb2ludDogUG9zaXRpb24pIHtcbiAgY29uc3Qgc3RhcnREaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShjZW50cm9pZCwgc3RhcnREcmFnUG9pbnQpO1xuICBjb25zdCBlbmREaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShjZW50cm9pZCwgY3VycmVudFBvaW50KTtcbiAgcmV0dXJuIGVuZERpc3RhbmNlIC8gc3RhcnREaXN0YW5jZTtcbn1cbiJdfQ==","/* eslint-disable prettier/prettier */\nimport bbox from '@turf/bbox';\nimport turfCentroid from '@turf/centroid';\nimport turfBearing from '@turf/bearing';\nimport bboxPolygon from '@turf/bbox-polygon';\nimport { point, featureCollection } from '@turf/helpers';\nimport polygonToLine from '@turf/polygon-to-line';\nimport { coordEach } from '@turf/meta';\nimport turfDistance from '@turf/distance';\nimport turfTransformScale from '@turf/transform-scale';\nimport { getCoord, getGeom } from '@turf/invariant';\nimport { FeatureCollection, Position } from '../geojson-types';\nimport {\n ModeProps,\n PointerMoveEvent,\n StartDraggingEvent,\n StopDraggingEvent,\n DraggingEvent,\n EditHandleFeature,\n GuideFeatureCollection,\n} from '../types';\nimport { getPickedEditHandle } from '../utils';\nimport { GeoJsonEditMode } from './geojson-edit-mode';\nimport { ImmutableFeatureCollection } from './immutable-feature-collection';\n\nexport class ScaleMode extends GeoJsonEditMode {\n _geometryBeingScaled: FeatureCollection | null | undefined;\n _selectedEditHandle: EditHandleFeature | null | undefined;\n _cornerGuidePoints: Array;\n _cursor: string | null | undefined;\n _isScaling = false;\n\n _isSinglePointGeometrySelected = (geometry: FeatureCollection | null | undefined): boolean => {\n const { features } = geometry || {};\n if (Array.isArray(features) && features.length === 1) {\n // @ts-ignore\n const { type } = getGeom(features[0]);\n return type === 'Point';\n }\n return false;\n };\n\n _getOppositeScaleHandle = (selectedHandle: EditHandleFeature) => {\n const selectedHandleIndex =\n selectedHandle &&\n selectedHandle.properties &&\n Array.isArray(selectedHandle.properties.positionIndexes) &&\n selectedHandle.properties.positionIndexes[0];\n\n if (typeof selectedHandleIndex !== 'number') {\n return null;\n }\n const guidePointCount = this._cornerGuidePoints.length;\n const oppositeIndex = (selectedHandleIndex + guidePointCount / 2) % guidePointCount;\n return this._cornerGuidePoints.find((p) => {\n if (!Array.isArray(p.properties.positionIndexes)) {\n return false;\n }\n return p.properties.positionIndexes[0] === oppositeIndex;\n });\n };\n\n _getUpdatedData = (props: ModeProps, editedData: FeatureCollection) => {\n let updatedData = new ImmutableFeatureCollection(props.data);\n const selectedIndexes = props.selectedIndexes;\n for (let i = 0; i < selectedIndexes.length; i++) {\n const selectedIndex = selectedIndexes[i];\n const movedFeature = editedData.features[i];\n updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry);\n }\n return updatedData.getObject();\n };\n\n isEditHandleSelected = (): boolean => Boolean(this._selectedEditHandle);\n\n getScaleAction = (\n startDragPoint: Position,\n currentPoint: Position,\n editType: string,\n props: ModeProps\n ) => {\n if (!this._selectedEditHandle) {\n return null;\n }\n\n const oppositeHandle = this._getOppositeScaleHandle(this._selectedEditHandle);\n const origin = getCoord(oppositeHandle);\n // @ts-ignore\n const scaleFactor = getScaleFactor(origin, startDragPoint, currentPoint);\n // @ts-ignore\n const scaledFeatures: FeatureCollection = turfTransformScale(\n // @ts-ignore\n this._geometryBeingScaled,\n scaleFactor,\n { origin }\n );\n\n return {\n updatedData: this._getUpdatedData(props, scaledFeatures),\n editType,\n editContext: {\n featureIndexes: props.selectedIndexes,\n },\n };\n };\n\n updateCursor = (props: ModeProps) => {\n if (this._selectedEditHandle) {\n if (this._cursor) {\n props.onUpdateCursor(this._cursor);\n }\n const cursorGeometry = this.getSelectedFeaturesAsFeatureCollection(props);\n\n // Get resize cursor direction from the hovered scale editHandle (e.g. nesw or nwse)\n const centroid = turfCentroid(cursorGeometry);\n const bearing = turfBearing(centroid, this._selectedEditHandle);\n const positiveBearing = bearing < 0 ? bearing + 180 : bearing;\n if (\n (positiveBearing >= 0 && positiveBearing <= 90) ||\n (positiveBearing >= 180 && positiveBearing <= 270)\n ) {\n this._cursor = 'nesw-resize';\n props.onUpdateCursor('nesw-resize');\n } else {\n this._cursor = 'nwse-resize';\n props.onUpdateCursor('nwse-resize');\n }\n } else {\n props.onUpdateCursor(null);\n this._cursor = null;\n }\n };\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps) {\n if (!this._isScaling) {\n const selectedEditHandle = getPickedEditHandle(event.picks);\n this._selectedEditHandle =\n selectedEditHandle && selectedEditHandle.properties.editHandleType === 'scale'\n ? selectedEditHandle\n : null;\n\n this.updateCursor(props);\n }\n }\n\n handleStartDragging(event: StartDraggingEvent, props: ModeProps) {\n if (this._selectedEditHandle) {\n this._isScaling = true;\n this._geometryBeingScaled = this.getSelectedFeaturesAsFeatureCollection(props);\n }\n }\n\n handleDragging(event: DraggingEvent, props: ModeProps) {\n if (!this._isScaling) {\n return;\n }\n\n props.onUpdateCursor(this._cursor);\n\n const scaleAction = this.getScaleAction(\n event.pointerDownMapCoords,\n event.mapCoords,\n 'scaling',\n props\n );\n if (scaleAction) {\n props.onEdit(scaleAction);\n }\n\n event.cancelPan();\n }\n\n handleStopDragging(event: StopDraggingEvent, props: ModeProps) {\n if (this._isScaling) {\n // Scale the geometry\n const scaleAction = this.getScaleAction(\n event.pointerDownMapCoords,\n event.mapCoords,\n 'scaled',\n props\n );\n if (scaleAction) {\n props.onEdit(scaleAction);\n }\n\n props.onUpdateCursor(null);\n\n this._geometryBeingScaled = null;\n this._selectedEditHandle = null;\n this._cursor = null;\n this._isScaling = false;\n }\n }\n\n getGuides(props: ModeProps): GuideFeatureCollection {\n this._cornerGuidePoints = [];\n const selectedGeometry = this.getSelectedFeaturesAsFeatureCollection(props);\n\n // Add buffer to the enveloping box if a single Point feature is selected\n if (this._isSinglePointGeometrySelected(selectedGeometry)) {\n return { type: 'FeatureCollection', features: [] };\n }\n\n const boundingBox = bboxPolygon(bbox(selectedGeometry));\n boundingBox.properties.mode = 'scale';\n const cornerGuidePoints = [];\n\n coordEach(boundingBox, (coord, coordIndex) => {\n if (coordIndex < 4) {\n // Get corner midpoint guides from the enveloping box\n const cornerPoint = point(coord, {\n guideType: 'editHandle',\n editHandleType: 'scale',\n positionIndexes: [coordIndex],\n });\n cornerGuidePoints.push(cornerPoint);\n }\n });\n\n this._cornerGuidePoints = cornerGuidePoints;\n // @ts-ignore\n return featureCollection([polygonToLine(boundingBox), ...this._cornerGuidePoints]);\n }\n}\n\nfunction getScaleFactor(centroid: Position, startDragPoint: Position, currentPoint: Position) {\n const startDistance = turfDistance(centroid, startDragPoint);\n const endDistance = turfDistance(centroid, currentPoint);\n return endDistance / startDistance;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar meta_1 = require(\"@turf/meta\");\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes one or more features and calculates the centroid using the mean of all vertices.\n * This lessens the effect of small islands and artifacts when calculating the centroid of a set of polygons.\n *\n * @name centroid\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional Parameters\n * @param {Object} [options.properties={}] an Object that is used as the {@link Feature}'s properties\n * @returns {Feature} the centroid of the input features\n * @example\n * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);\n *\n * var centroid = turf.centroid(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, centroid]\n */\nfunction centroid(geojson, options) {\n if (options === void 0) { options = {}; }\n var xSum = 0;\n var ySum = 0;\n var len = 0;\n meta_1.coordEach(geojson, function (coord) {\n xSum += coord[0];\n ySum += coord[1];\n len++;\n });\n return helpers_1.point([xSum / len, ySum / len], options.properties);\n}\nexports.default = centroid;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Converts a {@link Polygon} to {@link LineString|(Multi)LineString} or {@link MultiPolygon} to a\n * {@link FeatureCollection} of {@link LineString|(Multi)LineString}.\n *\n * @name polygonToLine\n * @param {Feature} poly Feature to convert\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] translates GeoJSON properties to Feature\n * @returns {FeatureCollection|Feature} converted (Multi)Polygon to (Multi)LineString\n * @example\n * var poly = turf.polygon([[[125, -30], [145, -30], [145, -20], [125, -20], [125, -30]]]);\n *\n * var line = turf.polygonToLine(poly);\n *\n * //addToMap\n * var addToMap = [line];\n */\nfunction default_1(poly, options) {\n if (options === void 0) { options = {}; }\n var geom = invariant_1.getGeom(poly);\n if (!options.properties && poly.type === \"Feature\") {\n options.properties = poly.properties;\n }\n switch (geom.type) {\n case \"Polygon\": return polygonToLine(geom, options);\n case \"MultiPolygon\": return multiPolygonToLine(geom, options);\n default: throw new Error(\"invalid poly\");\n }\n}\nexports.default = default_1;\n/**\n * @private\n */\nfunction polygonToLine(poly, options) {\n if (options === void 0) { options = {}; }\n var geom = invariant_1.getGeom(poly);\n var type = geom.type;\n var coords = geom.coordinates;\n var properties = options.properties ? options.properties : poly.type === \"Feature\" ? poly.properties : {};\n return coordsToLine(coords, properties);\n}\nexports.polygonToLine = polygonToLine;\n/**\n * @private\n */\nfunction multiPolygonToLine(multiPoly, options) {\n if (options === void 0) { options = {}; }\n var geom = invariant_1.getGeom(multiPoly);\n var type = geom.type;\n var coords = geom.coordinates;\n var properties = options.properties ? options.properties :\n multiPoly.type === \"Feature\" ? multiPoly.properties : {};\n var lines = [];\n coords.forEach(function (coord) {\n lines.push(coordsToLine(coord, properties));\n });\n return helpers_1.featureCollection(lines);\n}\nexports.multiPolygonToLine = multiPolygonToLine;\n/**\n * @private\n */\nfunction coordsToLine(coords, properties) {\n if (coords.length > 1) {\n return helpers_1.multiLineString(coords, properties);\n }\n return helpers_1.lineString(coords[0], properties);\n}\nexports.coordsToLine = coordsToLine;\n","import clone from '@turf/clone';\nimport center from '@turf/center';\nimport centroid from '@turf/centroid';\nimport turfBBox from '@turf/bbox';\nimport rhumbBearing from '@turf/rhumb-bearing';\nimport rhumbDistance from '@turf/rhumb-distance';\nimport rhumbDestination from '@turf/rhumb-destination';\nimport { coordEach, featureEach } from '@turf/meta';\nimport { isObject, point } from '@turf/helpers';\nimport { getCoord, getCoords, getType } from '@turf/invariant';\n\n/**\n * Scale a GeoJSON from a given point by a factor of scaling (ex: factor=2 would make the GeoJSON 200% larger).\n * If a FeatureCollection is provided, the origin point will be calculated based on each individual Feature.\n *\n * @name transformScale\n * @param {GeoJSON} geojson GeoJSON to be scaled\n * @param {number} factor of scaling, positive or negative values greater than 0\n * @param {Object} [options={}] Optional parameters\n * @param {string|Coord} [options.origin='centroid'] Point from which the scaling will occur (string options: sw/se/nw/ne/center/centroid)\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} scaled GeoJSON\n * @example\n * var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);\n * var scaledPoly = turf.transformScale(poly, 3);\n *\n * //addToMap\n * var addToMap = [poly, scaledPoly];\n * scaledPoly.properties = {stroke: '#F00', 'stroke-width': 4};\n */\nfunction transformScale(geojson, factor, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var origin = options.origin;\n var mutate = options.mutate;\n\n // Input validation\n if (!geojson) throw new Error('geojson required');\n if (typeof factor !== 'number' || factor === 0) throw new Error('invalid factor');\n var originIsPoint = Array.isArray(origin) || typeof origin === 'object';\n\n // Clone geojson to avoid side effects\n if (mutate !== true) geojson = clone(geojson);\n\n // Scale each Feature separately\n if (geojson.type === 'FeatureCollection' && !originIsPoint) {\n featureEach(geojson, function (feature, index) {\n geojson.features[index] = scale(feature, factor, origin);\n });\n return geojson;\n }\n // Scale Feature/Geometry\n return scale(geojson, factor, origin);\n}\n\n/**\n * Scale Feature/Geometry\n *\n * @private\n * @param {Feature|Geometry} feature GeoJSON Feature/Geometry\n * @param {number} factor of scaling, positive or negative values greater than 0\n * @param {string|Coord} [origin=\"centroid\"] Point from which the scaling will occur (string options: sw/se/nw/ne/center/centroid)\n * @returns {Feature|Geometry} scaled GeoJSON Feature/Geometry\n */\nfunction scale(feature, factor, origin) {\n // Default params\n var isPoint = getType(feature) === 'Point';\n origin = defineOrigin(feature, origin);\n\n // Shortcut no-scaling\n if (factor === 1 || isPoint) return feature;\n\n // Scale each coordinate\n coordEach(feature, function (coord) {\n var originalDistance = rhumbDistance(origin, coord);\n var bearing = rhumbBearing(origin, coord);\n var newDistance = originalDistance * factor;\n var newCoord = getCoords(rhumbDestination(origin, newDistance, bearing));\n coord[0] = newCoord[0];\n coord[1] = newCoord[1];\n if (coord.length === 3) coord[2] *= factor;\n });\n\n return feature;\n}\n\n/**\n * Define Origin\n *\n * @private\n * @param {GeoJSON} geojson GeoJSON\n * @param {string|Coord} origin sw/se/nw/ne/center/centroid\n * @returns {Feature} Point origin\n */\nfunction defineOrigin(geojson, origin) {\n // Default params\n if (origin === undefined || origin === null) origin = 'centroid';\n\n // Input Coord\n if (Array.isArray(origin) || typeof origin === 'object') return getCoord(origin);\n\n // Define BBox\n var bbox = (geojson.bbox) ? geojson.bbox : turfBBox(geojson);\n var west = bbox[0];\n var south = bbox[1];\n var east = bbox[2];\n var north = bbox[3];\n\n switch (origin) {\n case 'sw':\n case 'southwest':\n case 'westsouth':\n case 'bottomleft':\n return point([west, south]);\n case 'se':\n case 'southeast':\n case 'eastsouth':\n case 'bottomright':\n return point([east, south]);\n case 'nw':\n case 'northwest':\n case 'westnorth':\n case 'topleft':\n return point([west, north]);\n case 'ne':\n case 'northeast':\n case 'eastnorth':\n case 'topright':\n return point([east, north]);\n case 'center':\n return center(geojson);\n case undefined:\n case null:\n case 'centroid':\n return centroid(geojson);\n default:\n throw new Error('invalid origin');\n }\n}\n\nexport default transformScale;\n","import bbox from '@turf/bbox';\nimport { isObject, point } from '@turf/helpers';\n\n/**\n * Takes a {@link Feature} or {@link FeatureCollection} and returns the absolute center point of all features.\n *\n * @name center\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] an Object that is used as the {@link Feature}'s properties\n * @returns {Feature} a Point feature at the absolute center point of all input features\n * @example\n * var features = turf.featureCollection([\n * turf.point( [-97.522259, 35.4691]),\n * turf.point( [-97.502754, 35.463455]),\n * turf.point( [-97.508269, 35.463245])\n * ]);\n *\n * var center = turf.center(features);\n *\n * //addToMap\n * var addToMap = [features, center]\n * center.properties['marker-size'] = 'large';\n * center.properties['marker-color'] = '#000';\n */\nfunction center(geojson, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var properties = options.properties;\n\n // Input validation\n if (!geojson) throw new Error('geojson is required');\n\n var ext = bbox(geojson);\n var x = (ext[0] + ext[2]) / 2;\n var y = (ext[1] + ext[3]) / 2;\n return point([x, y], properties);\n}\n\nexport default center;\n","import { coordEach } from '@turf/meta';\n\n/**\n * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.\n *\n * @name bbox\n * @param {GeoJSON} geojson any GeoJSON object\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);\n * var bbox = turf.bbox(line);\n * var bboxPolygon = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [line, bboxPolygon]\n */\nfunction bbox(geojson) {\n var BBox = [Infinity, Infinity, -Infinity, -Infinity];\n coordEach(geojson, function (coord) {\n if (BBox[0] > coord[0]) BBox[0] = coord[0];\n if (BBox[1] > coord[1]) BBox[1] = coord[1];\n if (BBox[2] < coord[0]) BBox[2] = coord[0];\n if (BBox[3] < coord[1]) BBox[3] = coord[1];\n });\n return BBox;\n}\n\nexport default bbox;\n","import { feature, isObject, lineString, point } from '@turf/helpers';\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords,\n geometryMaybeCollection,\n wrapShrink = 0,\n coordIndex = 0,\n isGeometryCollection,\n type = geojson.type,\n isFeatureCollection = type === 'FeatureCollection',\n isFeature = type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry :\n (isFeature ? geojson.geometry : geojson));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n\n wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0;\n\n switch (geomType) {\n case null:\n break;\n case 'Point':\n if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case 'LineString':\n case 'MultiPoint':\n for (j = 0; j < coords.length; j++) {\n if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n if (geomType === 'MultiPoint') multiFeatureIndex++;\n }\n if (geomType === 'LineString') multiFeatureIndex++;\n break;\n case 'Polygon':\n case 'MultiLineString':\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n if (geomType === 'MultiLineString') multiFeatureIndex++;\n if (geomType === 'Polygon') geometryIndex++;\n }\n if (geomType === 'Polygon') multiFeatureIndex++;\n break;\n case 'MultiPolygon':\n for (j = 0; j < coords.length; j++) {\n if (geomType === 'MultiPolygon') geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case 'GeometryCollection':\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n break;\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n }, excludeWrapCoord);\n return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case 'FeatureCollection':\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case 'Feature':\n callback(geojson.properties, 0);\n break;\n }\n}\n\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function (currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n else previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n if (geojson.type === 'Feature') {\n callback(geojson, 0);\n } else if (geojson.type === 'FeatureCollection') {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function (currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function (coord) {\n coords.push(coord);\n });\n return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG,\n geometryMaybeCollection,\n isGeometryCollection,\n featureProperties,\n featureBBox,\n featureId,\n featureIndex = 0,\n isFeatureCollection = geojson.type === 'FeatureCollection',\n isFeature = geojson.type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (i = 0; i < stop; i++) {\n\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry :\n (isFeature ? geojson.geometry : geojson));\n featureProperties = (isFeatureCollection ? geojson.features[i].properties :\n (isFeature ? geojson.properties : {}));\n featureBBox = (isFeatureCollection ? geojson.features[i].bbox :\n (isFeature ? geojson.bbox : undefined));\n featureId = (isFeatureCollection ? geojson.features[i].id :\n (isFeature ? geojson.id : undefined));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n\n // Handle null Geometry\n if (geometry === null) {\n if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n continue;\n }\n switch (geometry.type) {\n case 'Point':\n case 'LineString':\n case 'MultiPoint':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon': {\n if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n break;\n }\n case 'GeometryCollection': {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n }\n break;\n }\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n });\n return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = (geometry === null) ? null : geometry.type;\n switch (type) {\n case null:\n case 'Point':\n case 'LineString':\n case 'Polygon':\n if (callback(feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false;\n return;\n }\n\n var geomType;\n\n // Callback for multi-geometry\n switch (type) {\n case 'MultiPoint':\n geomType = 'Point';\n break;\n case 'MultiLineString':\n geomType = 'LineString';\n break;\n case 'MultiPolygon':\n geomType = 'Polygon';\n break;\n }\n\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n }\n });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n\n // Exclude null Geometries\n if (!feature$$1.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature$$1.geometry.type;\n if (type === 'Point' || type === 'MultiPoint') return;\n\n // Generate 2-vertex line segments\n var previousCoords;\n if (coordEach(feature$$1, function (currentCoord, coordIndex, featureIndexCoord, mutliPartIndexCoord, geometryIndex) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (previousCoords === undefined) {\n previousCoords = currentCoord;\n return;\n }\n var currentSegment = lineString([previousCoords, currentCoord], feature$$1.properties);\n if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }) === false) return false;\n });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentInex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === undefined) previousValue = currentSegment;\n else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n started = true;\n });\n return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n // validation\n if (!geojson) throw new Error('geojson is required');\n\n flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {\n if (feature$$1.geometry === null) return;\n var type = feature$$1.geometry.type;\n var coords = feature$$1.geometry.coordinates;\n switch (type) {\n case 'LineString':\n if (callback(feature$$1, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n break;\n case 'Polygon':\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(lineString(coords[geometryIndex], feature$$1.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n }\n break;\n }\n });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n });\n return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature>\n */\nfunction findSegment(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature>\n */\nfunction findPoint(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n return point(coords, properties, options);\n case 'MultiPoint':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case 'LineString':\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\nexport { coordEach, coordReduce, propEach, propReduce, featureEach, featureReduce, coordAll, geomEach, geomReduce, flattenEach, flattenReduce, segmentEach, segmentReduce, lineEach, lineReduce, findSegment, findPoint };\n","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = {type: 'Feature'};\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point': geom = point(coordinates).geometry; break;\n case 'LineString': geom = lineString(coordinates).geometry; break;\n case 'Polygon': geom = polygon(coordinates).geometry; break;\n case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n default: throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = {type: 'FeatureCollection'};\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n","import { coordEach } from '@turf/meta';\nimport { point } from '@turf/helpers';\n\n/**\n * Takes one or more features and calculates the centroid using the mean of all vertices.\n * This lessens the effect of small islands and artifacts when calculating the centroid of a set of polygons.\n *\n * @name centroid\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [properties={}] an Object that is used as the {@link Feature}'s properties\n * @returns {Feature} the centroid of the input features\n * @example\n * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);\n *\n * var centroid = turf.centroid(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, centroid]\n */\nfunction centroid(geojson, properties) {\n var xSum = 0;\n var ySum = 0;\n var len = 0;\n coordEach(geojson, function (coord) {\n xSum += coord[0];\n ySum += coord[1];\n len++;\n }, true);\n return point([xSum / len, ySum / len], properties);\n}\n\nexport default centroid;\n","import { getCoord } from '@turf/invariant';\nimport { degreesToRadians, isObject, radiansToDegrees } from '@turf/helpers';\n\n// https://en.wikipedia.org/wiki/Rhumb_line\n/**\n * Takes two {@link Point|points} and finds the bearing angle between them along a Rhumb line\n * i.e. the angle measured in degrees start the north line (0 degrees)\n *\n * @name rhumbBearing\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.final=false] calculates the final bearing if true\n * @returns {number} bearing from north in decimal degrees, between -180 and 180 degrees (positive clockwise)\n * @example\n * var point1 = turf.point([-75.343, 39.984], {\"marker-color\": \"#F00\"});\n * var point2 = turf.point([-75.534, 39.123], {\"marker-color\": \"#00F\"});\n *\n * var bearing = turf.rhumbBearing(point1, point2);\n *\n * //addToMap\n * var addToMap = [point1, point2];\n * point1.properties.bearing = bearing;\n * point2.properties.bearing = bearing;\n */\nfunction rhumbBearing(start, end, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var final = options.final;\n\n // validation\n if (!start) throw new Error('start point is required');\n if (!end) throw new Error('end point is required');\n\n var bear360;\n\n if (final) bear360 = calculateRhumbBearing(getCoord(end), getCoord(start));\n else bear360 = calculateRhumbBearing(getCoord(start), getCoord(end));\n\n var bear180 = (bear360 > 180) ? -(360 - bear360) : bear360;\n\n return bear180;\n}\n\n/**\n * Returns the bearing from ‘this’ point to destination point along a rhumb line.\n * Adapted from Geodesy: https://github.com/chrisveness/geodesy/blob/master/latlon-spherical.js\n *\n * @private\n * @param {Array} from - origin point.\n * @param {Array} to - destination point.\n * @returns {number} Bearing in degrees from north.\n * @example\n * var p1 = new LatLon(51.127, 1.338);\n * var p2 = new LatLon(50.964, 1.853);\n * var d = p1.rhumbBearingTo(p2); // 116.7 m\n */\nfunction calculateRhumbBearing(from, to) {\n // φ => phi\n // Δλ => deltaLambda\n // Δψ => deltaPsi\n // θ => theta\n var phi1 = degreesToRadians(from[1]);\n var phi2 = degreesToRadians(to[1]);\n var deltaLambda = degreesToRadians((to[0] - from[0]));\n // if deltaLambdaon over 180° take shorter rhumb line across the anti-meridian:\n if (deltaLambda > Math.PI) deltaLambda -= 2 * Math.PI;\n if (deltaLambda < -Math.PI) deltaLambda += 2 * Math.PI;\n\n var deltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));\n\n var theta = Math.atan2(deltaLambda, deltaPsi);\n\n return (radiansToDegrees(theta) + 360) % 360;\n}\n\nexport default rhumbBearing;\n","import { isNumber } from '@turf/helpers';\n\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n if (!coord) throw new Error('coord is required');\n if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;\n if (coord.type === 'Point') return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n\n throw new Error('coord must be GeoJSON Point or an Array of numbers');\n}\n\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n if (!coords) throw new Error('coords is required');\n\n // Feature\n if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;\n\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n\n throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');\n}\n\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error('coordinates must only contain numbers');\n}\n\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n if (!type || !name) throw new Error('type and name required');\n\n if (!value || value.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n if (!feature) throw new Error('No feature passed');\n if (!name) throw new Error('.featureOf() requires a name');\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) throw new Error('No featureCollection passed');\n if (!name) throw new Error('.collectionOf() requires a name');\n if (!featureCollection || featureCollection.type !== 'FeatureCollection') {\n throw new Error('Invalid input to ' + name + ', FeatureCollection required');\n }\n for (var i = 0; i < featureCollection.features.length; i++) {\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n }\n}\n\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n if (!geojson) throw new Error('geojson is required');\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error('geojson must be a valid Feature or Geometry Object');\n}\n\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */\nfunction getGeomType() {\n throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');\n}\n\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, name) {\n if (!geojson) throw new Error((name || 'geojson') + ' is required');\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || 'geojson') + ' is invalid');\n}\n\nexport { getCoord, getCoords, containsNumber, geojsonType, featureOf, collectionOf, getGeom, getGeomType, getType };\n","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = {type: 'Feature'};\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point': geom = point(coordinates).geometry; break;\n case 'LineString': geom = lineString(coordinates).geometry; break;\n case 'Polygon': geom = polygon(coordinates).geometry; break;\n case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n default: throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = {type: 'FeatureCollection'};\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n","import { convertLength, earthRadius, isObject } from '@turf/helpers';\nimport { getCoord } from '@turf/invariant';\n\n// https://en.wikipedia.org/wiki/Rhumb_line\n/**\n * Calculates the distance along a rhumb line between two {@link Point|points} in degrees, radians,\n * miles, or kilometers.\n *\n * @name rhumbDistance\n * @param {Coord} from origin point\n * @param {Coord} to destination point\n * @param {Object} [options] Optional parameters\n * @param {string} [options.units=\"kilometers\"] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.rhumbDistance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */\nfunction rhumbDistance(from, to, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var units = options.units;\n\n // validation\n if (!from) throw new Error('from point is required');\n if (!to) throw new Error('to point is required');\n\n var origin = getCoord(from);\n var destination = getCoord(to);\n\n // compensate the crossing of the 180th meridian (https://macwright.org/2016/09/26/the-180th-meridian.html)\n // solution from https://github.com/mapbox/mapbox-gl-js/issues/3250#issuecomment-294887678\n destination[0] += (destination[0] - origin[0] > 180) ? -360 : (origin[0] - destination[0] > 180) ? 360 : 0;\n var distanceInMeters = calculateRhumbDistance(origin, destination);\n var distance = convertLength(distanceInMeters, 'meters', units);\n return distance;\n}\n\n/**\n * Returns the distance travelling from ‘this’ point to destination point along a rhumb line.\n * Adapted from Geodesy: https://github.com/chrisveness/geodesy/blob/master/latlon-spherical.js\n *\n * @private\n * @param {Array} origin point.\n * @param {Array} destination point.\n * @param {number} [radius=6371e3] - (Mean) radius of earth (defaults to radius in metres).\n * @returns {number} Distance in km between this point and destination point (same units as radius).\n *\n * @example\n * var p1 = new LatLon(51.127, 1.338);\n * var p2 = new LatLon(50.964, 1.853);\n * var d = p1.distanceTo(p2); // 40.31 km\n */\nfunction calculateRhumbDistance(origin, destination, radius) {\n // φ => phi\n // λ => lambda\n // ψ => psi\n // Δ => Delta\n // δ => delta\n // θ => theta\n\n radius = (radius === undefined) ? earthRadius : Number(radius);\n // see www.edwilliams.org/avform.htm#Rhumb\n\n var R = radius;\n var phi1 = origin[1] * Math.PI / 180;\n var phi2 = destination[1] * Math.PI / 180;\n var DeltaPhi = phi2 - phi1;\n var DeltaLambda = Math.abs(destination[0] - origin[0]) * Math.PI / 180;\n // if dLon over 180° take shorter rhumb line across the anti-meridian:\n if (DeltaLambda > Math.PI) DeltaLambda -= 2 * Math.PI;\n\n // on Mercator projection, longitude distances shrink by latitude; q is the 'stretch factor'\n // q becomes ill-conditioned along E-W line (0/0); use empirical tolerance to avoid it\n var DeltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));\n var q = Math.abs(DeltaPsi) > 10e-12 ? DeltaPhi / DeltaPsi : Math.cos(phi1);\n\n // distance is pythagoras on 'stretched' Mercator projection\n var delta = Math.sqrt(DeltaPhi * DeltaPhi + q * q * DeltaLambda * DeltaLambda); // angular distance in radians\n var dist = delta * R;\n\n return dist;\n}\n\nexport default rhumbDistance;\n","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = {type: 'Feature'};\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point': geom = point(coordinates).geometry; break;\n case 'LineString': geom = lineString(coordinates).geometry; break;\n case 'Polygon': geom = polygon(coordinates).geometry; break;\n case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n default: throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = {type: 'FeatureCollection'};\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n","import { isNumber } from '@turf/helpers';\n\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n if (!coord) throw new Error('coord is required');\n if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;\n if (coord.type === 'Point') return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n\n throw new Error('coord must be GeoJSON Point or an Array of numbers');\n}\n\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n if (!coords) throw new Error('coords is required');\n\n // Feature\n if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;\n\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n\n throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');\n}\n\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error('coordinates must only contain numbers');\n}\n\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n if (!type || !name) throw new Error('type and name required');\n\n if (!value || value.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n if (!feature) throw new Error('No feature passed');\n if (!name) throw new Error('.featureOf() requires a name');\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) throw new Error('No featureCollection passed');\n if (!name) throw new Error('.collectionOf() requires a name');\n if (!featureCollection || featureCollection.type !== 'FeatureCollection') {\n throw new Error('Invalid input to ' + name + ', FeatureCollection required');\n }\n for (var i = 0; i < featureCollection.features.length; i++) {\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n }\n}\n\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n if (!geojson) throw new Error('geojson is required');\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error('geojson must be a valid Feature or Geometry Object');\n}\n\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */\nfunction getGeomType() {\n throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');\n}\n\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, name) {\n if (!geojson) throw new Error((name || 'geojson') + ' is required');\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || 'geojson') + ' is invalid');\n}\n\nexport { getCoord, getCoords, containsNumber, geojsonType, featureOf, collectionOf, getGeom, getGeomType, getType };\n","import { isNumber } from '@turf/helpers';\n\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n if (!coord) throw new Error('coord is required');\n if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;\n if (coord.type === 'Point') return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n\n throw new Error('coord must be GeoJSON Point or an Array of numbers');\n}\n\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n if (!coords) throw new Error('coords is required');\n\n // Feature\n if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;\n\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n\n throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');\n}\n\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error('coordinates must only contain numbers');\n}\n\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n if (!type || !name) throw new Error('type and name required');\n\n if (!value || value.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n if (!feature) throw new Error('No feature passed');\n if (!name) throw new Error('.featureOf() requires a name');\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) throw new Error('No featureCollection passed');\n if (!name) throw new Error('.collectionOf() requires a name');\n if (!featureCollection || featureCollection.type !== 'FeatureCollection') {\n throw new Error('Invalid input to ' + name + ', FeatureCollection required');\n }\n for (var i = 0; i < featureCollection.features.length; i++) {\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n }\n}\n\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n if (!geojson) throw new Error('geojson is required');\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error('geojson must be a valid Feature or Geometry Object');\n}\n\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */\nfunction getGeomType() {\n throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');\n}\n\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, name) {\n if (!geojson) throw new Error((name || 'geojson') + ' is required');\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || 'geojson') + ' is invalid');\n}\n\nexport { getCoord, getCoords, containsNumber, geojsonType, featureOf, collectionOf, getGeom, getGeomType, getType };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RotateMode = void 0;\n\nvar _bbox = _interopRequireDefault(require(\"@turf/bbox\"));\n\nvar _centroid = _interopRequireDefault(require(\"@turf/centroid\"));\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _bboxPolygon = _interopRequireDefault(require(\"@turf/bbox-polygon\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _meta = require(\"@turf/meta\");\n\nvar _invariant = require(\"@turf/invariant\");\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _transformRotate = _interopRequireDefault(require(\"@turf/transform-rotate\"));\n\nvar _polygonToLine = _interopRequireDefault(require(\"@turf/polygon-to-line\"));\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar RotateMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(RotateMode, _GeoJsonEditMode);\n\n var _super = _createSuper(RotateMode);\n\n function RotateMode() {\n var _this;\n\n _classCallCheck(this, RotateMode);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"_selectedEditHandle\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_geometryBeingRotated\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_isRotating\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_isSinglePointGeometrySelected\", function (geometry) {\n var _ref = geometry || {},\n features = _ref.features;\n\n if (Array.isArray(features) && features.length === 1) {\n // @ts-ignore\n var _getGeom = (0, _invariant.getGeom)(features[0]),\n type = _getGeom.type;\n\n return type === 'Point';\n }\n\n return false;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getIsRotating\", function () {\n return _this._isRotating;\n });\n\n return _this;\n }\n\n _createClass(RotateMode, [{\n key: \"getGuides\",\n value: function getGuides(props) {\n var selectedGeometry = this._geometryBeingRotated || this.getSelectedFeaturesAsFeatureCollection(props);\n\n if (this._isSinglePointGeometrySelected(selectedGeometry)) {\n return {\n type: 'FeatureCollection',\n features: []\n };\n }\n\n if (this._isRotating) {\n // Display rotate pivot\n return (0, _helpers.featureCollection)([(0, _centroid[\"default\"])(selectedGeometry)]);\n }\n\n var boundingBox = (0, _bboxPolygon[\"default\"])((0, _bbox[\"default\"])(selectedGeometry));\n var previousCoord = null;\n var topEdgeMidpointCoords = null;\n var longestEdgeLength = 0;\n (0, _meta.coordEach)(boundingBox, function (coord) {\n if (previousCoord) {\n // @ts-ignore\n var edgeMidpoint = (0, _geojsonEditMode.getIntermediatePosition)(coord, previousCoord);\n\n if (!topEdgeMidpointCoords || edgeMidpoint[1] > topEdgeMidpointCoords[1]) {\n // Get the top edge midpoint of the enveloping box\n topEdgeMidpointCoords = edgeMidpoint;\n } // Get the length of the longest edge of the enveloping box\n\n\n var edgeDistance = (0, _distance[\"default\"])(coord, previousCoord);\n longestEdgeLength = Math.max(longestEdgeLength, edgeDistance);\n }\n\n previousCoord = coord;\n }); // Scale the length of the line between the rotate handler and the enveloping box\n // relative to the length of the longest edge of the enveloping box\n\n var rotateHandleCoords = topEdgeMidpointCoords && [topEdgeMidpointCoords[0], topEdgeMidpointCoords[1] + longestEdgeLength / 1000];\n var lineFromEnvelopeToRotateHandle = (0, _helpers.lineString)([topEdgeMidpointCoords, rotateHandleCoords]);\n var rotateHandle = (0, _helpers.point)(rotateHandleCoords, {\n guideType: 'editHandle',\n editHandleType: 'rotate'\n }); // @ts-ignore\n\n return (0, _helpers.featureCollection)([// @ts-ignore\n (0, _polygonToLine[\"default\"])(boundingBox), // @ts-ignore\n rotateHandle, // @ts-ignore\n lineFromEnvelopeToRotateHandle]);\n }\n }, {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n if (!this._isRotating) {\n return;\n }\n\n var rotateAction = this.getRotateAction(event.pointerDownMapCoords, event.mapCoords, 'rotating', props);\n\n if (rotateAction) {\n props.onEdit(rotateAction);\n }\n\n event.cancelPan();\n }\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n if (!this._isRotating) {\n var selectedEditHandle = (0, _utils.getPickedEditHandle)(event.picks);\n this._selectedEditHandle = selectedEditHandle && selectedEditHandle.properties.editHandleType === 'rotate' ? selectedEditHandle : null;\n }\n\n this.updateCursor(props);\n }\n }, {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n if (this._selectedEditHandle) {\n this._isRotating = true;\n this._geometryBeingRotated = this.getSelectedFeaturesAsFeatureCollection(props);\n }\n }\n }, {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n if (this._isRotating) {\n // Rotate the geometry\n var rotateAction = this.getRotateAction(event.pointerDownMapCoords, event.mapCoords, 'rotated', props);\n\n if (rotateAction) {\n props.onEdit(rotateAction);\n }\n\n this._geometryBeingRotated = null;\n this._selectedEditHandle = null;\n this._isRotating = false;\n }\n }\n }, {\n key: \"updateCursor\",\n value: function updateCursor(props) {\n if (this._selectedEditHandle) {\n // TODO: look at doing SVG cursors to get a better \"rotate\" cursor\n props.onUpdateCursor('crosshair');\n } else {\n props.onUpdateCursor(null);\n }\n }\n }, {\n key: \"getRotateAction\",\n value: function getRotateAction(startDragPoint, currentPoint, editType, props) {\n if (!this._geometryBeingRotated) {\n return null;\n }\n\n var centroid = (0, _centroid[\"default\"])(this._geometryBeingRotated);\n var angle = getRotationAngle(centroid, startDragPoint, currentPoint); // @ts-ignore\n\n var rotatedFeatures = (0, _transformRotate[\"default\"])( // @ts-ignore\n this._geometryBeingRotated, angle, {\n pivot: centroid\n });\n var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data);\n var selectedIndexes = props.selectedIndexes;\n\n for (var i = 0; i < selectedIndexes.length; i++) {\n var selectedIndex = selectedIndexes[i];\n var movedFeature = rotatedFeatures.features[i];\n updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry);\n }\n\n return {\n updatedData: updatedData.getObject(),\n editType: editType,\n editContext: {\n featureIndexes: selectedIndexes\n }\n };\n }\n }]);\n\n return RotateMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.RotateMode = RotateMode;\n\nfunction getRotationAngle(centroid, startDragPoint, currentPoint) {\n var bearing1 = (0, _bearing[\"default\"])(centroid, startDragPoint);\n var bearing2 = (0, _bearing[\"default\"])(centroid, currentPoint);\n return bearing2 - bearing1;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcm90YXRlLW1vZGUudHMiXSwibmFtZXMiOlsiUm90YXRlTW9kZSIsImdlb21ldHJ5IiwiZmVhdHVyZXMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJ0eXBlIiwiX2lzUm90YXRpbmciLCJwcm9wcyIsInNlbGVjdGVkR2VvbWV0cnkiLCJfZ2VvbWV0cnlCZWluZ1JvdGF0ZWQiLCJnZXRTZWxlY3RlZEZlYXR1cmVzQXNGZWF0dXJlQ29sbGVjdGlvbiIsIl9pc1NpbmdsZVBvaW50R2VvbWV0cnlTZWxlY3RlZCIsImJvdW5kaW5nQm94IiwicHJldmlvdXNDb29yZCIsInRvcEVkZ2VNaWRwb2ludENvb3JkcyIsImxvbmdlc3RFZGdlTGVuZ3RoIiwiY29vcmQiLCJlZGdlTWlkcG9pbnQiLCJlZGdlRGlzdGFuY2UiLCJNYXRoIiwibWF4Iiwicm90YXRlSGFuZGxlQ29vcmRzIiwibGluZUZyb21FbnZlbG9wZVRvUm90YXRlSGFuZGxlIiwicm90YXRlSGFuZGxlIiwiZ3VpZGVUeXBlIiwiZWRpdEhhbmRsZVR5cGUiLCJldmVudCIsInJvdGF0ZUFjdGlvbiIsImdldFJvdGF0ZUFjdGlvbiIsInBvaW50ZXJEb3duTWFwQ29vcmRzIiwibWFwQ29vcmRzIiwib25FZGl0IiwiY2FuY2VsUGFuIiwic2VsZWN0ZWRFZGl0SGFuZGxlIiwicGlja3MiLCJfc2VsZWN0ZWRFZGl0SGFuZGxlIiwicHJvcGVydGllcyIsInVwZGF0ZUN1cnNvciIsIm9uVXBkYXRlQ3Vyc29yIiwic3RhcnREcmFnUG9pbnQiLCJjdXJyZW50UG9pbnQiLCJlZGl0VHlwZSIsImNlbnRyb2lkIiwiYW5nbGUiLCJnZXRSb3RhdGlvbkFuZ2xlIiwicm90YXRlZEZlYXR1cmVzIiwicGl2b3QiLCJ1cGRhdGVkRGF0YSIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwiZGF0YSIsInNlbGVjdGVkSW5kZXhlcyIsImkiLCJzZWxlY3RlZEluZGV4IiwibW92ZWRGZWF0dXJlIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2V0T2JqZWN0IiwiZWRpdENvbnRleHQiLCJmZWF0dXJlSW5kZXhlcyIsIkdlb0pzb25FZGl0TW9kZSIsImJlYXJpbmcxIiwiYmVhcmluZzIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFVQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrRUFHRyxLOztxRkFFbUIsVUFBQ0MsUUFBRCxFQUE2RDtBQUFBLGlCQUN2RUEsUUFBUSxJQUFJLEVBRDJEO0FBQUEsVUFDcEZDLFFBRG9GLFFBQ3BGQSxRQURvRjs7QUFFNUYsVUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNGLFFBQWQsS0FBMkJBLFFBQVEsQ0FBQ0csTUFBVCxLQUFvQixDQUFuRCxFQUFzRDtBQUNwRDtBQURvRCx1QkFFbkMsd0JBQVFILFFBQVEsQ0FBQyxDQUFELENBQWhCLENBRm1DO0FBQUEsWUFFNUNJLElBRjRDLFlBRTVDQSxJQUY0Qzs7QUFHcEQsZUFBT0EsSUFBSSxLQUFLLE9BQWhCO0FBQ0Q7O0FBQ0QsYUFBTyxLQUFQO0FBQ0QsSzs7b0VBRWU7QUFBQSxhQUFNLE1BQUtDLFdBQVg7QUFBQSxLOzs7Ozs7OzhCQUVOQyxLLEVBQTZEO0FBQ3JFLFVBQU1DLGdCQUFnQixHQUNwQixLQUFLQyxxQkFBTCxJQUE4QixLQUFLQyxzQ0FBTCxDQUE0Q0gsS0FBNUMsQ0FEaEM7O0FBR0EsVUFBSSxLQUFLSSw4QkFBTCxDQUFvQ0gsZ0JBQXBDLENBQUosRUFBMkQ7QUFDekQsZUFBTztBQUFFSCxVQUFBQSxJQUFJLEVBQUUsbUJBQVI7QUFBNkJKLFVBQUFBLFFBQVEsRUFBRTtBQUF2QyxTQUFQO0FBQ0Q7O0FBRUQsVUFBSSxLQUFLSyxXQUFULEVBQXNCO0FBQ3BCO0FBQ0EsZUFBTyxnQ0FBa0IsQ0FBQywwQkFBYUUsZ0JBQWIsQ0FBRCxDQUFs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LENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELGVBQWUsQ0FBQzlDLE1BQXBDLEVBQTRDK0MsQ0FBQyxFQUE3QyxFQUFpRDtBQUMvQyxZQUFNQyxhQUFhLEdBQUdGLGVBQWUsQ0FBQ0MsQ0FBRCxDQUFyQztBQUNBLFlBQU1FLFlBQVksR0FBR1IsZUFBZSxDQUFDNUMsUUFBaEIsQ0FBeUJrRCxDQUF6QixDQUFyQjtBQUNBSixRQUFBQSxXQUFXLEdBQUdBLFdBQVcsQ0FBQ08sZUFBWixDQUE0QkYsYUFBNUIsRUFBMkNDLFlBQVksQ0FBQ3JELFFBQXhELENBQWQ7QUFDRDs7QUFFRCxhQUFPO0FBQ0wrQyxRQUFBQSxXQUFXLEVBQUVBLFdBQVcsQ0FBQ1EsU0FBWixFQURSO0FBRUxkLFFBQUFBLFFBQVEsRUFBUkEsUUFGSztBQUdMZSxRQUFBQSxXQUFXLEVBQUU7QUFDWEMsVUFBQUEsY0FBYyxFQUFFUDtBQURMO0FBSFIsT0FBUDtBQU9EOzs7O0VBbEw2QlEsZ0M7Ozs7QUFxTGhDLFNBQVNkLGdCQUFULENBQTBCRixRQUExQixFQUE4Q0gsY0FBOUMsRUFBd0VDLFlBQXhFLEVBQWdHO0FBQzlGLE1BQU1tQixRQUFRLEdBQUcseUJBQVlqQixRQUFaLEVBQXNCSCxjQUF0QixDQUFqQjtBQUNBLE1BQU1xQixRQUFRLEdBQUcseUJBQVlsQixRQUFaLEVBQXNCRixZQUF0QixDQUFqQjtBQUNBLFNBQU9vQixRQUFRLEdBQUdELFFBQWxCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBwcmV0dGllci9wcmV0dGllciAqL1xuaW1wb3J0IGJib3ggZnJvbSAnQHR1cmYvYmJveCc7XG5pbXBvcnQgdHVyZkNlbnRyb2lkIGZyb20gJ0B0dXJmL2NlbnRyb2lkJztcbmltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgeyBjb29yZEVhY2ggfSBmcm9tICdAdHVyZi9tZXRhJztcbmltcG9ydCB7IGdldEdlb20gfSBmcm9tICdAdHVyZi9pbnZhcmlhbnQnO1xuaW1wb3J0IHsgcG9pbnQsIGZlYXR1cmVDb2xsZWN0aW9uLCBsaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgdHVyZlRyYW5zZm9ybVJvdGF0ZSBmcm9tICdAdHVyZi90cmFuc2Zvcm0tcm90YXRlJztcbmltcG9ydCBwb2x5Z29uVG9MaW5lIGZyb20gJ0B0dXJmL3BvbHlnb24tdG8tbGluZSc7XG5pbXBvcnQge1xuICBQb2ludGVyTW92ZUV2ZW50LFxuICBTdGFydERyYWdnaW5nRXZlbnQsXG4gIFN0b3BEcmFnZ2luZ0V2ZW50LFxuICBEcmFnZ2luZ0V2ZW50LFxuICBNb2RlUHJvcHMsXG4gIEVkaXRIYW5kbGVGZWF0dXJlLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRQaWNrZWRFZGl0SGFuZGxlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24sIFBvc2l0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUsIEdlb0pzb25FZGl0QWN0aW9uLCBnZXRJbnRlcm1lZGlhdGVQb3NpdGlvbiB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgUm90YXRlTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIF9zZWxlY3RlZEVkaXRIYW5kbGU6IEVkaXRIYW5kbGVGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX2dlb21ldHJ5QmVpbmdSb3RhdGVkOiBGZWF0dXJlQ29sbGVjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIF9pc1JvdGF0aW5nID0gZmFsc2U7XG5cbiAgX2lzU2luZ2xlUG9pbnRHZW9tZXRyeVNlbGVjdGVkID0gKGdlb21ldHJ5OiBGZWF0dXJlQ29sbGVjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCB7IGZlYXR1cmVzIH0gPSBnZW9tZXRyeSB8fCB7fTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmZWF0dXJlcykgJiYgZmVhdHVyZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCB7IHR5cGUgfSA9IGdldEdlb20oZmVhdHVyZXNbMF0pO1xuICAgICAgcmV0dXJuIHR5cGUgPT09ICdQb2ludCc7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBnZXRJc1JvdGF0aW5nID0gKCkgPT4gdGhpcy5faXNSb3RhdGluZztcblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBzZWxlY3RlZEdlb21ldHJ5ID1cbiAgICAgIHRoaXMuX2dlb21ldHJ5QmVpbmdSb3RhdGVkIHx8IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMpO1xuXG4gICAgaWYgKHRoaXMuX2lzU2luZ2xlUG9pbnRHZW9tZXRyeVNlbGVjdGVkKHNlbGVjdGVkR2VvbWV0cnkpKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLCBmZWF0dXJlczogW10gfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNSb3RhdGluZykge1xuICAgICAgLy8gRGlzcGxheSByb3RhdGUgcGl2b3RcbiAgICAgIHJldHVybiBmZWF0dXJlQ29sbGVjdGlvbihbdHVyZkNlbnRyb2lkKHNlbGVjdGVkR2VvbWV0cnkpXSkgYXMgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbjtcbiAgICB9XG5cbiAgICBjb25zdCBib3VuZGluZ0JveCA9IGJib3hQb2x5Z29uKGJib3goc2VsZWN0ZWRHZW9tZXRyeSkpO1xuXG4gICAgbGV0IHByZXZpb3VzQ29vcmQgPSBudWxsO1xuICAgIGxldCB0b3BFZGdlTWlkcG9pbnRDb29yZHMgPSBudWxsO1xuICAgIGxldCBsb25nZXN0RWRnZUxlbmd0aCA9IDA7XG5cbiAgICBjb29yZEVhY2goYm91bmRpbmdCb3gsIChjb29yZCkgPT4ge1xuICAgICAgaWYgKHByZXZpb3VzQ29vcmQpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBlZGdlTWlkcG9pbnQgPSBnZXRJbnRlcm1lZGlhdGVQb3NpdGlvbihjb29yZCwgcHJldmlvdXNDb29yZCk7XG4gICAgICAgIGlmICghdG9wRWRnZU1pZHBvaW50Q29vcmRzIHx8IGVkZ2VNaWRwb2ludFsxXSA+IHRvcEVkZ2VNaWRwb2ludENvb3Jkc1sxXSkge1xuICAgICAgICAgIC8vIEdldCB0aGUgdG9wIGVkZ2UgbWlkcG9pbnQgb2YgdGhlIGVudmVsb3BpbmcgYm94XG4gICAgICAgICAgdG9wRWRnZU1pZHBvaW50Q29vcmRzID0gZWRnZU1pZHBvaW50O1xuICAgICAgICB9XG4gICAgICAgIC8vIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGVkZ2Ugb2YgdGhlIGVudmVsb3BpbmcgYm94XG4gICAgICAgIGNvbnN0IGVkZ2VEaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShjb29yZCwgcHJldmlvdXNDb29yZCk7XG4gICAgICAgIGxvbmdlc3RFZGdlTGVuZ3RoID0gTWF0aC5tYXgobG9uZ2VzdEVkZ2VMZW5ndGgsIGVkZ2VEaXN0YW5jZSk7XG4gICAgICB9XG4gICAgICBwcmV2aW91c0Nvb3JkID0gY29vcmQ7XG4gICAgfSk7XG5cbiAgICAvLyBTY2FsZSB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lIGJldHdlZW4gdGhlIHJvdGF0ZSBoYW5kbGVyIGFuZCB0aGUgZW52ZWxvcGluZyBib3hcbiAgICAvLyByZWxhdGl2ZSB0byB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGVkZ2Ugb2YgdGhlIGVudmVsb3BpbmcgYm94XG4gICAgY29uc3Qgcm90YXRlSGFuZGxlQ29vcmRzID0gdG9wRWRnZU1pZHBvaW50Q29vcmRzICYmIFtcbiAgICAgIHRvcEVkZ2VNaWRwb2ludENvb3Jkc1swXSxcbiAgICAgIHRvcEVkZ2VNaWRwb2ludENvb3Jkc1sxXSArIGxvbmdlc3RFZGdlTGVuZ3RoIC8gMTAwMCxcbiAgICBdO1xuXG4gICAgY29uc3QgbGluZUZyb21FbnZlbG9wZVRvUm90YXRlSGFuZGxlID0gbGluZVN0cmluZyhbdG9wRWRnZU1pZHBvaW50Q29vcmRzLCByb3RhdGVIYW5kbGVDb29yZHNdKTtcbiAgICBjb25zdCByb3RhdGVIYW5kbGUgPSBwb2ludChyb3RhdGVIYW5kbGVDb29yZHMsIHtcbiAgICAgIGd1aWRlVHlwZTogJ2VkaXRIYW5kbGUnLFxuICAgICAgZWRpdEhhbmRsZVR5cGU6ICdyb3RhdGUnLFxuICAgIH0pO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gZmVhdHVyZUNvbGxlY3Rpb24oW1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcG9seWdvblRvTGluZShib3VuZGluZ0JveCksXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByb3RhdGVIYW5kbGUsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBsaW5lRnJvbUVudmVsb3BlVG9Sb3RhdGVIYW5kbGUsXG4gICAgXSk7XG4gIH1cblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAoIXRoaXMuX2lzUm90YXRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByb3RhdGVBY3Rpb24gPSB0aGlzLmdldFJvdGF0ZUFjdGlvbihcbiAgICAgIGV2ZW50LnBvaW50ZXJEb3duTWFwQ29vcmRzLFxuICAgICAgZXZlbnQubWFwQ29vcmRzLFxuICAgICAgJ3JvdGF0aW5nJyxcbiAgICAgIHByb3BzXG4gICAgKTtcbiAgICBpZiAocm90YXRlQWN0aW9uKSB7XG4gICAgICBwcm9wcy5vbkVkaXQocm90YXRlQWN0aW9uKTtcbiAgICB9XG5cbiAgICBldmVudC5jYW5jZWxQYW4oKTtcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICghdGhpcy5faXNSb3RhdGluZykge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRFZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG4gICAgICB0aGlzLl9zZWxlY3RlZEVkaXRIYW5kbGUgPVxuICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGUgJiYgc2VsZWN0ZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUgPT09ICdyb3RhdGUnXG4gICAgICAgICAgPyBzZWxlY3RlZEVkaXRIYW5kbGVcbiAgICAgICAgICA6IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVDdXJzb3IocHJvcHMpO1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9zZWxlY3RlZEVkaXRIYW5kbGUpIHtcbiAgICAgIHRoaXMuX2lzUm90YXRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1JvdGF0ZWQgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uKHByb3BzKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9pc1JvdGF0aW5nKSB7XG4gICAgICAvLyBSb3RhdGUgdGhlIGdlb21ldHJ5XG4gICAgICBjb25zdCByb3RhdGVBY3Rpb24gPSB0aGlzLmdldFJvdGF0ZUFjdGlvbihcbiAgICAgICAgZXZlbnQucG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgICAgIGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgJ3JvdGF0ZWQnLFxuICAgICAgICBwcm9wc1xuICAgICAgKTtcblxuICAgICAgaWYgKHJvdGF0ZUFjdGlvbikge1xuICAgICAgICBwcm9wcy5vbkVkaXQocm90YXRlQWN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1JvdGF0ZWQgPSBudWxsO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlID0gbnVsbDtcbiAgICAgIHRoaXMuX2lzUm90YXRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDdXJzb3IocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKSB7XG4gICAgICAvLyBUT0RPOiBsb29rIGF0IGRvaW5nIFNWRyBjdXJzb3JzIHRvIGdldCBhIGJldHRlciBcInJvdGF0ZVwiIGN1cnNvclxuICAgICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ2Nyb3NzaGFpcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcihudWxsKTtcbiAgICB9XG4gIH1cblxuICBnZXRSb3RhdGVBY3Rpb24oXG4gICAgc3RhcnREcmFnUG9pbnQ6IFBvc2l0aW9uLFxuICAgIGN1cnJlbnRQb2ludDogUG9zaXRpb24sXG4gICAgZWRpdFR5cGU6IHN0cmluZyxcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBHZW9Kc29uRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5fZ2VvbWV0cnlCZWluZ1JvdGF0ZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNlbnRyb2lkID0gdHVyZkNlbnRyb2lkKHRoaXMuX2dlb21ldHJ5QmVpbmdSb3RhdGVkKTtcbiAgICBjb25zdCBhbmdsZSA9IGdldFJvdGF0aW9uQW5nbGUoY2VudHJvaWQsIHN0YXJ0RHJhZ1BvaW50LCBjdXJyZW50UG9pbnQpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCByb3RhdGVkRmVhdHVyZXM6IEZlYXR1cmVDb2xsZWN0aW9uID0gdHVyZlRyYW5zZm9ybVJvdGF0ZShcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuX2dlb21ldHJ5QmVpbmdSb3RhdGVkLFxuICAgICAgYW5nbGUsXG4gICAgICB7XG4gICAgICAgIHBpdm90OiBjZW50cm9pZCxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgbGV0IHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRJbmRleGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleGVzW2ldO1xuICAgICAgY29uc3QgbW92ZWRGZWF0dXJlID0gcm90YXRlZEZlYXR1cmVzLmZlYXR1cmVzW2ldO1xuICAgICAgdXBkYXRlZERhdGEgPSB1cGRhdGVkRGF0YS5yZXBsYWNlR2VvbWV0cnkoc2VsZWN0ZWRJbmRleCwgbW92ZWRGZWF0dXJlLmdlb21ldHJ5KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlZERhdGE6IHVwZGF0ZWREYXRhLmdldE9iamVjdCgpLFxuICAgICAgZWRpdFR5cGUsXG4gICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICBmZWF0dXJlSW5kZXhlczogc2VsZWN0ZWRJbmRleGVzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFJvdGF0aW9uQW5nbGUoY2VudHJvaWQ6IFBvc2l0aW9uLCBzdGFydERyYWdQb2ludDogUG9zaXRpb24sIGN1cnJlbnRQb2ludDogUG9zaXRpb24pIHtcbiAgY29uc3QgYmVhcmluZzEgPSB0dXJmQmVhcmluZyhjZW50cm9pZCwgc3RhcnREcmFnUG9pbnQpO1xuICBjb25zdCBiZWFyaW5nMiA9IHR1cmZCZWFyaW5nKGNlbnRyb2lkLCBjdXJyZW50UG9pbnQpO1xuICByZXR1cm4gYmVhcmluZzIgLSBiZWFyaW5nMTtcbn1cbiJdfQ==","/* eslint-disable prettier/prettier */\nimport bbox from '@turf/bbox';\nimport turfCentroid from '@turf/centroid';\nimport turfBearing from '@turf/bearing';\nimport bboxPolygon from '@turf/bbox-polygon';\nimport turfDistance from '@turf/distance';\nimport { coordEach } from '@turf/meta';\nimport { getGeom } from '@turf/invariant';\nimport { point, featureCollection, lineString } from '@turf/helpers';\nimport turfTransformRotate from '@turf/transform-rotate';\nimport polygonToLine from '@turf/polygon-to-line';\nimport {\n PointerMoveEvent,\n StartDraggingEvent,\n StopDraggingEvent,\n DraggingEvent,\n ModeProps,\n EditHandleFeature,\n GuideFeatureCollection,\n} from '../types';\nimport { getPickedEditHandle } from '../utils';\nimport { FeatureCollection, Position } from '../geojson-types';\nimport { GeoJsonEditMode, GeoJsonEditAction, getIntermediatePosition } from './geojson-edit-mode';\nimport { ImmutableFeatureCollection } from './immutable-feature-collection';\n\nexport class RotateMode extends GeoJsonEditMode {\n _selectedEditHandle: EditHandleFeature | null | undefined;\n _geometryBeingRotated: FeatureCollection | null | undefined;\n _isRotating = false;\n\n _isSinglePointGeometrySelected = (geometry: FeatureCollection | null | undefined): boolean => {\n const { features } = geometry || {};\n if (Array.isArray(features) && features.length === 1) {\n // @ts-ignore\n const { type } = getGeom(features[0]);\n return type === 'Point';\n }\n return false;\n };\n\n getIsRotating = () => this._isRotating;\n\n getGuides(props: ModeProps): GuideFeatureCollection {\n const selectedGeometry =\n this._geometryBeingRotated || this.getSelectedFeaturesAsFeatureCollection(props);\n\n if (this._isSinglePointGeometrySelected(selectedGeometry)) {\n return { type: 'FeatureCollection', features: [] };\n }\n\n if (this._isRotating) {\n // Display rotate pivot\n return featureCollection([turfCentroid(selectedGeometry)]) as GuideFeatureCollection;\n }\n\n const boundingBox = bboxPolygon(bbox(selectedGeometry));\n\n let previousCoord = null;\n let topEdgeMidpointCoords = null;\n let longestEdgeLength = 0;\n\n coordEach(boundingBox, (coord) => {\n if (previousCoord) {\n // @ts-ignore\n const edgeMidpoint = getIntermediatePosition(coord, previousCoord);\n if (!topEdgeMidpointCoords || edgeMidpoint[1] > topEdgeMidpointCoords[1]) {\n // Get the top edge midpoint of the enveloping box\n topEdgeMidpointCoords = edgeMidpoint;\n }\n // Get the length of the longest edge of the enveloping box\n const edgeDistance = turfDistance(coord, previousCoord);\n longestEdgeLength = Math.max(longestEdgeLength, edgeDistance);\n }\n previousCoord = coord;\n });\n\n // Scale the length of the line between the rotate handler and the enveloping box\n // relative to the length of the longest edge of the enveloping box\n const rotateHandleCoords = topEdgeMidpointCoords && [\n topEdgeMidpointCoords[0],\n topEdgeMidpointCoords[1] + longestEdgeLength / 1000,\n ];\n\n const lineFromEnvelopeToRotateHandle = lineString([topEdgeMidpointCoords, rotateHandleCoords]);\n const rotateHandle = point(rotateHandleCoords, {\n guideType: 'editHandle',\n editHandleType: 'rotate',\n });\n // @ts-ignore\n return featureCollection([\n // @ts-ignore\n polygonToLine(boundingBox),\n // @ts-ignore\n rotateHandle,\n // @ts-ignore\n lineFromEnvelopeToRotateHandle,\n ]);\n }\n\n handleDragging(event: DraggingEvent, props: ModeProps) {\n if (!this._isRotating) {\n return;\n }\n\n const rotateAction = this.getRotateAction(\n event.pointerDownMapCoords,\n event.mapCoords,\n 'rotating',\n props\n );\n if (rotateAction) {\n props.onEdit(rotateAction);\n }\n\n event.cancelPan();\n }\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps) {\n if (!this._isRotating) {\n const selectedEditHandle = getPickedEditHandle(event.picks);\n this._selectedEditHandle =\n selectedEditHandle && selectedEditHandle.properties.editHandleType === 'rotate'\n ? selectedEditHandle\n : null;\n }\n\n this.updateCursor(props);\n }\n\n handleStartDragging(event: StartDraggingEvent, props: ModeProps) {\n if (this._selectedEditHandle) {\n this._isRotating = true;\n this._geometryBeingRotated = this.getSelectedFeaturesAsFeatureCollection(props);\n }\n }\n\n handleStopDragging(event: StopDraggingEvent, props: ModeProps) {\n if (this._isRotating) {\n // Rotate the geometry\n const rotateAction = this.getRotateAction(\n event.pointerDownMapCoords,\n event.mapCoords,\n 'rotated',\n props\n );\n\n if (rotateAction) {\n props.onEdit(rotateAction);\n }\n\n this._geometryBeingRotated = null;\n this._selectedEditHandle = null;\n this._isRotating = false;\n }\n }\n\n updateCursor(props: ModeProps) {\n if (this._selectedEditHandle) {\n // TODO: look at doing SVG cursors to get a better \"rotate\" cursor\n props.onUpdateCursor('crosshair');\n } else {\n props.onUpdateCursor(null);\n }\n }\n\n getRotateAction(\n startDragPoint: Position,\n currentPoint: Position,\n editType: string,\n props: ModeProps\n ): GeoJsonEditAction | null | undefined {\n if (!this._geometryBeingRotated) {\n return null;\n }\n\n const centroid = turfCentroid(this._geometryBeingRotated);\n const angle = getRotationAngle(centroid, startDragPoint, currentPoint);\n // @ts-ignore\n const rotatedFeatures: FeatureCollection = turfTransformRotate(\n // @ts-ignore\n this._geometryBeingRotated,\n angle,\n {\n pivot: centroid,\n }\n );\n\n let updatedData = new ImmutableFeatureCollection(props.data);\n\n const selectedIndexes = props.selectedIndexes;\n for (let i = 0; i < selectedIndexes.length; i++) {\n const selectedIndex = selectedIndexes[i];\n const movedFeature = rotatedFeatures.features[i];\n updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry);\n }\n\n return {\n updatedData: updatedData.getObject(),\n editType,\n editContext: {\n featureIndexes: selectedIndexes,\n },\n };\n }\n}\n\nfunction getRotationAngle(centroid: Position, startDragPoint: Position, currentPoint: Position) {\n const bearing1 = turfBearing(centroid, startDragPoint);\n const bearing2 = turfBearing(centroid, currentPoint);\n return bearing2 - bearing1;\n}\n","import centroid from '@turf/centroid';\nimport rhumbBearing from '@turf/rhumb-bearing';\nimport rhumbDistance from '@turf/rhumb-distance';\nimport rhumbDestination from '@turf/rhumb-destination';\nimport clone from '@turf/clone';\nimport { coordEach } from '@turf/meta';\nimport { getCoords } from '@turf/invariant';\nimport { isObject } from '@turf/helpers';\n\n/**\n * Rotates any geojson Feature or Geometry of a specified angle, around its `centroid` or a given `pivot` point;\n * all rotations follow the right-hand rule: https://en.wikipedia.org/wiki/Right-hand_rule\n *\n * @name transformRotate\n * @param {GeoJSON} geojson object to be rotated\n * @param {number} angle of rotation (along the vertical axis), from North in decimal degrees, negative clockwise\n * @param {Object} [options={}] Optional parameters\n * @param {Coord} [options.pivot='centroid'] point around which the rotation will be performed\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} the rotated GeoJSON feature\n * @example\n * var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);\n * var options = {pivot: [0, 25]};\n * var rotatedPoly = turf.transformRotate(poly, 10, options);\n *\n * //addToMap\n * var addToMap = [poly, rotatedPoly];\n * rotatedPoly.properties = {stroke: '#F00', 'stroke-width': 4};\n */\nfunction transformRotate(geojson, angle, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var pivot = options.pivot;\n var mutate = options.mutate;\n\n // Input validation\n if (!geojson) throw new Error('geojson is required');\n if (angle === undefined || angle === null || isNaN(angle)) throw new Error('angle is required');\n\n // Shortcut no-rotation\n if (angle === 0) return geojson;\n\n // Use centroid of GeoJSON if pivot is not provided\n if (!pivot) pivot = centroid(geojson);\n\n // Clone geojson to avoid side effects\n if (mutate === false || mutate === undefined) geojson = clone(geojson);\n\n // Rotate each coordinate\n coordEach(geojson, function (pointCoords) {\n var initialAngle = rhumbBearing(pivot, pointCoords);\n var finalAngle = initialAngle + angle;\n var distance = rhumbDistance(pivot, pointCoords);\n var newCoords = getCoords(rhumbDestination(pivot, distance, finalAngle));\n pointCoords[0] = newCoords[0];\n pointCoords[1] = newCoords[1];\n });\n return geojson;\n}\n\nexport default transformRotate;\n","import { coordEach } from '@turf/meta';\nimport { point } from '@turf/helpers';\n\n/**\n * Takes one or more features and calculates the centroid using the mean of all vertices.\n * This lessens the effect of small islands and artifacts when calculating the centroid of a set of polygons.\n *\n * @name centroid\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [properties={}] an Object that is used as the {@link Feature}'s properties\n * @returns {Feature} the centroid of the input features\n * @example\n * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);\n *\n * var centroid = turf.centroid(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, centroid]\n */\nfunction centroid(geojson, properties) {\n var xSum = 0;\n var ySum = 0;\n var len = 0;\n coordEach(geojson, function (coord) {\n xSum += coord[0];\n ySum += coord[1];\n len++;\n }, true);\n return point([xSum / len, ySum / len], properties);\n}\n\nexport default centroid;\n","import { feature, isObject, lineString, point } from '@turf/helpers';\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords,\n geometryMaybeCollection,\n wrapShrink = 0,\n coordIndex = 0,\n isGeometryCollection,\n type = geojson.type,\n isFeatureCollection = type === 'FeatureCollection',\n isFeature = type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry :\n (isFeature ? geojson.geometry : geojson));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n\n wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0;\n\n switch (geomType) {\n case null:\n break;\n case 'Point':\n if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case 'LineString':\n case 'MultiPoint':\n for (j = 0; j < coords.length; j++) {\n if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n if (geomType === 'MultiPoint') multiFeatureIndex++;\n }\n if (geomType === 'LineString') multiFeatureIndex++;\n break;\n case 'Polygon':\n case 'MultiLineString':\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n if (geomType === 'MultiLineString') multiFeatureIndex++;\n if (geomType === 'Polygon') geometryIndex++;\n }\n if (geomType === 'Polygon') multiFeatureIndex++;\n break;\n case 'MultiPolygon':\n for (j = 0; j < coords.length; j++) {\n if (geomType === 'MultiPolygon') geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case 'GeometryCollection':\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n break;\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n }, excludeWrapCoord);\n return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case 'FeatureCollection':\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case 'Feature':\n callback(geojson.properties, 0);\n break;\n }\n}\n\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function (currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n else previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n if (geojson.type === 'Feature') {\n callback(geojson, 0);\n } else if (geojson.type === 'FeatureCollection') {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function (currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function (coord) {\n coords.push(coord);\n });\n return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG,\n geometryMaybeCollection,\n isGeometryCollection,\n featureProperties,\n featureBBox,\n featureId,\n featureIndex = 0,\n isFeatureCollection = geojson.type === 'FeatureCollection',\n isFeature = geojson.type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (i = 0; i < stop; i++) {\n\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry :\n (isFeature ? geojson.geometry : geojson));\n featureProperties = (isFeatureCollection ? geojson.features[i].properties :\n (isFeature ? geojson.properties : {}));\n featureBBox = (isFeatureCollection ? geojson.features[i].bbox :\n (isFeature ? geojson.bbox : undefined));\n featureId = (isFeatureCollection ? geojson.features[i].id :\n (isFeature ? geojson.id : undefined));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n\n // Handle null Geometry\n if (geometry === null) {\n if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n continue;\n }\n switch (geometry.type) {\n case 'Point':\n case 'LineString':\n case 'MultiPoint':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon': {\n if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n break;\n }\n case 'GeometryCollection': {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n }\n break;\n }\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n });\n return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = (geometry === null) ? null : geometry.type;\n switch (type) {\n case null:\n case 'Point':\n case 'LineString':\n case 'Polygon':\n if (callback(feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false;\n return;\n }\n\n var geomType;\n\n // Callback for multi-geometry\n switch (type) {\n case 'MultiPoint':\n geomType = 'Point';\n break;\n case 'MultiLineString':\n geomType = 'LineString';\n break;\n case 'MultiPolygon':\n geomType = 'Polygon';\n break;\n }\n\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n }\n });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n\n // Exclude null Geometries\n if (!feature$$1.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature$$1.geometry.type;\n if (type === 'Point' || type === 'MultiPoint') return;\n\n // Generate 2-vertex line segments\n var previousCoords;\n if (coordEach(feature$$1, function (currentCoord, coordIndex, featureIndexCoord, mutliPartIndexCoord, geometryIndex) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (previousCoords === undefined) {\n previousCoords = currentCoord;\n return;\n }\n var currentSegment = lineString([previousCoords, currentCoord], feature$$1.properties);\n if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }) === false) return false;\n });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentInex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === undefined) previousValue = currentSegment;\n else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n started = true;\n });\n return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n // validation\n if (!geojson) throw new Error('geojson is required');\n\n flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {\n if (feature$$1.geometry === null) return;\n var type = feature$$1.geometry.type;\n var coords = feature$$1.geometry.coordinates;\n switch (type) {\n case 'LineString':\n if (callback(feature$$1, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n break;\n case 'Polygon':\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(lineString(coords[geometryIndex], feature$$1.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n }\n break;\n }\n });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n });\n return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature>\n */\nfunction findSegment(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature>\n */\nfunction findPoint(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n return point(coords, properties, options);\n case 'MultiPoint':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case 'LineString':\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\nexport { coordEach, coordReduce, propEach, propReduce, featureEach, featureReduce, coordAll, geomEach, geomReduce, flattenEach, flattenReduce, segmentEach, segmentReduce, lineEach, lineReduce, findSegment, findPoint };\n","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = {type: 'Feature'};\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point': geom = point(coordinates).geometry; break;\n case 'LineString': geom = lineString(coordinates).geometry; break;\n case 'Polygon': geom = polygon(coordinates).geometry; break;\n case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n default: throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = {type: 'FeatureCollection'};\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n","import { isNumber } from '@turf/helpers';\n\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n if (!coord) throw new Error('coord is required');\n if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;\n if (coord.type === 'Point') return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n\n throw new Error('coord must be GeoJSON Point or an Array of numbers');\n}\n\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n if (!coords) throw new Error('coords is required');\n\n // Feature\n if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;\n\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n\n throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');\n}\n\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error('coordinates must only contain numbers');\n}\n\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n if (!type || !name) throw new Error('type and name required');\n\n if (!value || value.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n if (!feature) throw new Error('No feature passed');\n if (!name) throw new Error('.featureOf() requires a name');\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) throw new Error('No featureCollection passed');\n if (!name) throw new Error('.collectionOf() requires a name');\n if (!featureCollection || featureCollection.type !== 'FeatureCollection') {\n throw new Error('Invalid input to ' + name + ', FeatureCollection required');\n }\n for (var i = 0; i < featureCollection.features.length; i++) {\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n }\n}\n\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n if (!geojson) throw new Error('geojson is required');\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error('geojson must be a valid Feature or Geometry Object');\n}\n\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */\nfunction getGeomType() {\n throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');\n}\n\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, name) {\n if (!geojson) throw new Error((name || 'geojson') + ' is required');\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || 'geojson') + ' is invalid');\n}\n\nexport { getCoord, getCoords, containsNumber, geojsonType, featureOf, collectionOf, getGeom, getGeomType, getType };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DuplicateMode = void 0;\n\nvar _translateMode = require(\"./translate-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DuplicateMode = /*#__PURE__*/function (_TranslateMode) {\n _inherits(DuplicateMode, _TranslateMode);\n\n var _super = _createSuper(DuplicateMode);\n\n function DuplicateMode() {\n _classCallCheck(this, DuplicateMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DuplicateMode, [{\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n _get(_getPrototypeOf(DuplicateMode.prototype), \"handleStartDragging\", this).call(this, event, props);\n\n if (this._geometryBeforeTranslate) {\n props.onEdit(this.getAddManyFeaturesAction(this._geometryBeforeTranslate, props.data));\n }\n }\n }, {\n key: \"updateCursor\",\n value: function updateCursor(props) {\n if (this._isTranslatable) {\n props.onUpdateCursor('copy');\n } else {\n props.onUpdateCursor(null);\n }\n }\n }]);\n\n return DuplicateMode;\n}(_translateMode.TranslateMode);\n\nexports.DuplicateMode = DuplicateMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHVwbGljYXRlLW1vZGUudHMiXSwibmFtZXMiOlsiRHVwbGljYXRlTW9kZSIsImV2ZW50IiwicHJvcHMiLCJfZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUiLCJvbkVkaXQiLCJnZXRBZGRNYW55RmVhdHVyZXNBY3Rpb24iLCJkYXRhIiwiX2lzVHJhbnNsYXRhYmxlIiwib25VcGRhdGVDdXJzb3IiLCJUcmFuc2xhdGVNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsYTs7Ozs7Ozs7Ozs7Ozt3Q0FDU0MsSyxFQUEyQkMsSyxFQUFxQztBQUNsRiw2RkFBMEJELEtBQTFCLEVBQWlDQyxLQUFqQzs7QUFFQSxVQUFJLEtBQUtDLHdCQUFULEVBQW1DO0FBQ2pDRCxRQUFBQSxLQUFLLENBQUNFLE1BQU4sQ0FBYSxLQUFLQyx3QkFBTCxDQUE4QixLQUFLRix3QkFBbkMsRUFBNkRELEtBQUssQ0FBQ0ksSUFBbkUsQ0FBYjtBQUNEO0FBQ0Y7OztpQ0FFWUosSyxFQUFxQztBQUNoRCxVQUFJLEtBQUtLLGVBQVQsRUFBMEI7QUFDeEJMLFFBQUFBLEtBQUssQ0FBQ00sY0FBTixDQUFxQixNQUFyQjtBQUNELE9BRkQsTUFFTztBQUNMTixRQUFBQSxLQUFLLENBQUNNLGNBQU4sQ0FBcUIsSUFBckI7QUFDRDtBQUNGOzs7O0VBZmdDQyw0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXJ0RHJhZ2dpbmdFdmVudCwgTW9kZVByb3BzIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZGUgfSBmcm9tICcuL3RyYW5zbGF0ZS1tb2RlJztcblxuZXhwb3J0IGNsYXNzIER1cGxpY2F0ZU1vZGUgZXh0ZW5kcyBUcmFuc2xhdGVNb2RlIHtcbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIHN1cGVyLmhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQsIHByb3BzKTtcblxuICAgIGlmICh0aGlzLl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZSkge1xuICAgICAgcHJvcHMub25FZGl0KHRoaXMuZ2V0QWRkTWFueUZlYXR1cmVzQWN0aW9uKHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlLCBwcm9wcy5kYXRhKSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ3Vyc29yKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKHRoaXMuX2lzVHJhbnNsYXRhYmxlKSB7XG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY29weScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcihudWxsKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { StartDraggingEvent, ModeProps } from '../types';\nimport { FeatureCollection } from '../geojson-types';\nimport { TranslateMode } from './translate-mode';\n\nexport class DuplicateMode extends TranslateMode {\n handleStartDragging(event: StartDraggingEvent, props: ModeProps) {\n super.handleStartDragging(event, props);\n\n if (this._geometryBeforeTranslate) {\n props.onEdit(this.getAddManyFeaturesAction(this._geometryBeforeTranslate, props.data));\n }\n }\n\n updateCursor(props: ModeProps) {\n if (this._isTranslatable) {\n props.onUpdateCursor('copy');\n } else {\n props.onUpdateCursor(null);\n }\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ExtendLineStringMode = void 0;\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ExtendLineStringMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(ExtendLineStringMode, _GeoJsonEditMode);\n\n var _super = _createSuper(ExtendLineStringMode);\n\n function ExtendLineStringMode() {\n _classCallCheck(this, ExtendLineStringMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(ExtendLineStringMode, [{\n key: \"getSingleSelectedLineString\",\n value: function getSingleSelectedLineString(props) {\n var selectedGeometry = this.getSelectedGeometry(props);\n\n if (selectedGeometry && selectedGeometry.type === 'LineString') {\n return selectedGeometry;\n }\n\n return null;\n }\n }, {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n var selectedIndexes = props.selectedIndexes;\n var selectedLineString = this.getSingleSelectedLineString(props);\n\n if (!selectedLineString) {\n console.warn(\"ExtendLineStringMode only supported for single LineString selection\"); // eslint-disable-line\n\n return;\n } // Extend the LineString\n\n\n var positionIndexes = [selectedLineString.coordinates.length];\n var modeConfig = props.modeConfig;\n\n if (modeConfig && modeConfig.drawAtFront) {\n positionIndexes = [0];\n }\n\n var featureIndex = selectedIndexes[0];\n var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).addPosition(featureIndex, positionIndexes, event.mapCoords).getObject();\n props.onEdit({\n updatedData: updatedData,\n editType: 'addPosition',\n editContext: {\n featureIndexes: [featureIndex],\n positionIndexes: positionIndexes,\n position: event.mapCoords\n }\n });\n }\n }, {\n key: \"getGuides\",\n value: function getGuides(props) {\n var guides = {\n type: 'FeatureCollection',\n features: []\n };\n var selectedLineString = this.getSingleSelectedLineString(props);\n\n if (!selectedLineString) {\n // nothing to do\n // @ts-ignore\n return guides;\n }\n\n var mapCoords = props.lastPointerMoveEvent && props.lastPointerMoveEvent.mapCoords; // Draw an extension line starting from one end of the selected LineString to the cursor\n\n var startPosition = null;\n var modeConfig = props.modeConfig;\n\n if (modeConfig && modeConfig.drawAtFront) {\n startPosition = selectedLineString.coordinates[0];\n } else {\n startPosition = selectedLineString.coordinates[selectedLineString.coordinates.length - 1];\n }\n\n guides.features.push({\n type: 'Feature',\n properties: {\n guideType: 'tentative'\n },\n geometry: {\n type: 'LineString',\n coordinates: [startPosition, mapCoords]\n }\n }); // @ts-ignore\n\n return guides;\n }\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor('cell');\n }\n }]);\n\n return ExtendLineStringMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.ExtendLineStringMode = ExtendLineStringMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZXh0ZW5kLWxpbmUtc3RyaW5nLW1vZGUudHMiXSwibmFtZXMiOlsiRXh0ZW5kTGluZVN0cmluZ01vZGUiLCJwcm9wcyIsInNlbGVjdGVkR2VvbWV0cnkiLCJnZXRTZWxlY3RlZEdlb21ldHJ5IiwidHlwZSIsImV2ZW50Iiwic2VsZWN0ZWRJbmRleGVzIiwic2VsZWN0ZWRMaW5lU3RyaW5nIiwiZ2V0U2luZ2xlU2VsZWN0ZWRMaW5lU3RyaW5nIiwiY29uc29sZSIsIndhcm4iLCJwb3NpdGlvbkluZGV4ZXMiLCJjb29yZGluYXRlcyIsImxlbmd0aCIsIm1vZGVDb25maWciLCJkcmF3QXRGcm9udCIsImZlYXR1cmVJbmRleCIsInVwZGF0ZWREYXRhIiwiSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJkYXRhIiwiYWRkUG9zaXRpb24iLCJtYXBDb29yZHMiLCJnZXRPYmplY3QiLCJvbkVkaXQiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0IiwiZmVhdHVyZUluZGV4ZXMiLCJwb3NpdGlvbiIsImd1aWRlcyIsImZlYXR1cmVzIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJzdGFydFBvc2l0aW9uIiwicHVzaCIsInByb3BlcnRpZXMiLCJndWlkZVR5cGUiLCJnZW9tZXRyeSIsIm9uVXBkYXRlQ3Vyc29yIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxvQjs7Ozs7Ozs7Ozs7OztnREFDaUJDLEssRUFBb0U7QUFDOUYsVUFBTUMsZ0JBQWdCLEdBQUcsS0FBS0MsbUJBQUwsQ0FBeUJGLEtBQXpCLENBQXpCOztBQUVBLFVBQUlDLGdCQUFnQixJQUFJQSxnQkFBZ0IsQ0FBQ0UsSUFBakIsS0FBMEIsWUFBbEQsRUFBZ0U7QUFDOUQsZUFBT0YsZ0JBQVA7QUFDRDs7QUFDRCxhQUFPLElBQVA7QUFDRDs7O2dDQUVXRyxLLEVBQW1CSixLLEVBQXFDO0FB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LGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9zaXRpb24sIExpbmVTdHJpbmcsIEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBDbGlja0V2ZW50LCBQb2ludGVyTW92ZUV2ZW50LCBNb2RlUHJvcHMsIEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUgfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcbmltcG9ydCB7IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi9pbW11dGFibGUtZmVhdHVyZS1jb2xsZWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIEV4dGVuZExpbmVTdHJpbmdNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgZ2V0U2luZ2xlU2VsZWN0ZWRMaW5lU3RyaW5nKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogTGluZVN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNlbGVjdGVkR2VvbWV0cnkgPSB0aGlzLmdldFNlbGVjdGVkR2VvbWV0cnkocHJvcHMpO1xuXG4gICAgaWYgKHNlbGVjdGVkR2VvbWV0cnkgJiYgc2VsZWN0ZWRHZW9tZXRyeS50eXBlID09PSAnTGluZVN0cmluZycpIHtcbiAgICAgIHJldHVybiBzZWxlY3RlZEdlb21ldHJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHsgc2VsZWN0ZWRJbmRleGVzIH0gPSBwcm9wcztcbiAgICBjb25zdCBzZWxlY3RlZExpbmVTdHJpbmcgPSB0aGlzLmdldFNpbmdsZVNlbGVjdGVkTGluZVN0cmluZyhwcm9wcyk7XG5cbiAgICBpZiAoIXNlbGVjdGVkTGluZVN0cmluZykge1xuICAgICAgY29uc29sZS53YXJuKGBFeHRlbmRMaW5lU3RyaW5nTW9kZSBvbmx5IHN1cHBvcnRlZCBmb3Igc2luZ2xlIExpbmVTdHJpbmcgc2VsZWN0aW9uYCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBFeHRlbmQgdGhlIExpbmVTdHJpbmdcbiAgICBsZXQgcG9zaXRpb25JbmRleGVzID0gW3NlbGVjdGVkTGluZVN0cmluZy5jb29yZGluYXRlcy5sZW5ndGhdO1xuXG4gICAgY29uc3QgbW9kZUNvbmZpZyA9IHByb3BzLm1vZGVDb25maWc7XG4gICAgaWYgKG1vZGVDb25maWcgJiYgbW9kZUNvbmZpZy5kcmF3QXRGcm9udCkge1xuICAgICAgcG9zaXRpb25JbmRleGVzID0gWzBdO1xuICAgIH1cbiAgICBjb25zdCBmZWF0dXJlSW5kZXggPSBzZWxlY3RlZEluZGV4ZXNbMF07XG4gICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSlcbiAgICAgIC5hZGRQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgZXZlbnQubWFwQ29vcmRzKVxuICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgcHJvcHMub25FZGl0KHtcbiAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgZWRpdFR5cGU6ICdhZGRQb3NpdGlvbicsXG4gICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICBmZWF0dXJlSW5kZXhlczogW2ZlYXR1cmVJbmRleF0sXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgcG9zaXRpb246IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBndWlkZXMgPSB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtdLFxuICAgIH07XG5cbiAgICBjb25zdCBzZWxlY3RlZExpbmVTdHJpbmcgPSB0aGlzLmdldFNpbmdsZVNlbGVjdGVkTGluZVN0cmluZyhwcm9wcyk7XG4gICAgaWYgKCFzZWxlY3RlZExpbmVTdHJpbmcpIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG9cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBndWlkZXM7XG4gICAgfVxuXG4gICAgY29uc3QgbWFwQ29vcmRzID0gcHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQgJiYgcHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQubWFwQ29vcmRzO1xuXG4gICAgLy8gRHJhdyBhbiBleHRlbnNpb24gbGluZSBzdGFydGluZyBmcm9tIG9uZSBlbmQgb2YgdGhlIHNlbGVjdGVkIExpbmVTdHJpbmcgdG8gdGhlIGN1cnNvclxuICAgIGxldCBzdGFydFBvc2l0aW9uOiBQb3NpdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICAgIGNvbnN0IHsgbW9kZUNvbmZpZyB9ID0gcHJvcHM7XG4gICAgaWYgKG1vZGVDb25maWcgJiYgbW9kZUNvbmZpZy5kcmF3QXRGcm9udCkge1xuICAgICAgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGVkTGluZVN0cmluZy5jb29yZGluYXRlc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGVkTGluZVN0cmluZy5jb29yZGluYXRlc1tzZWxlY3RlZExpbmVTdHJpbmcuY29vcmRpbmF0ZXMubGVuZ3RoIC0gMV07XG4gICAgfVxuXG4gICAgZ3VpZGVzLmZlYXR1cmVzLnB1c2goe1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICd0ZW50YXRpdmUnLFxuICAgICAgfSxcbiAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IFtzdGFydFBvc2l0aW9uLCBtYXBDb29yZHNdLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGd1aWRlcztcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKCdjZWxsJyk7XG4gIH1cbn1cbiJdfQ==","import { Position, LineString, FeatureCollection } from '../geojson-types';\nimport { ClickEvent, PointerMoveEvent, ModeProps, GuideFeatureCollection } from '../types';\nimport { GeoJsonEditMode } from './geojson-edit-mode';\nimport { ImmutableFeatureCollection } from './immutable-feature-collection';\n\nexport class ExtendLineStringMode extends GeoJsonEditMode {\n getSingleSelectedLineString(props: ModeProps): LineString | null | undefined {\n const selectedGeometry = this.getSelectedGeometry(props);\n\n if (selectedGeometry && selectedGeometry.type === 'LineString') {\n return selectedGeometry;\n }\n return null;\n }\n\n handleClick(event: ClickEvent, props: ModeProps) {\n const { selectedIndexes } = props;\n const selectedLineString = this.getSingleSelectedLineString(props);\n\n if (!selectedLineString) {\n console.warn(`ExtendLineStringMode only supported for single LineString selection`); // eslint-disable-line\n return;\n }\n\n // Extend the LineString\n let positionIndexes = [selectedLineString.coordinates.length];\n\n const modeConfig = props.modeConfig;\n if (modeConfig && modeConfig.drawAtFront) {\n positionIndexes = [0];\n }\n const featureIndex = selectedIndexes[0];\n const updatedData = new ImmutableFeatureCollection(props.data)\n .addPosition(featureIndex, positionIndexes, event.mapCoords)\n .getObject();\n\n props.onEdit({\n updatedData,\n editType: 'addPosition',\n editContext: {\n featureIndexes: [featureIndex],\n positionIndexes,\n position: event.mapCoords,\n },\n });\n }\n\n getGuides(props: ModeProps): GuideFeatureCollection {\n const guides = {\n type: 'FeatureCollection',\n features: [],\n };\n\n const selectedLineString = this.getSingleSelectedLineString(props);\n if (!selectedLineString) {\n // nothing to do\n // @ts-ignore\n return guides;\n }\n\n const mapCoords = props.lastPointerMoveEvent && props.lastPointerMoveEvent.mapCoords;\n\n // Draw an extension line starting from one end of the selected LineString to the cursor\n let startPosition: Position | null | undefined = null;\n const { modeConfig } = props;\n if (modeConfig && modeConfig.drawAtFront) {\n startPosition = selectedLineString.coordinates[0];\n } else {\n startPosition = selectedLineString.coordinates[selectedLineString.coordinates.length - 1];\n }\n\n guides.features.push({\n type: 'Feature',\n properties: {\n guideType: 'tentative',\n },\n geometry: {\n type: 'LineString',\n coordinates: [startPosition, mapCoords],\n },\n });\n // @ts-ignore\n return guides;\n }\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps) {\n props.onUpdateCursor('cell');\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SplitPolygonMode = void 0;\n\nvar _booleanPointInPolygon = _interopRequireDefault(require(\"@turf/boolean-point-in-polygon\"));\n\nvar _difference = _interopRequireDefault(require(\"@turf/difference\"));\n\nvar _buffer = _interopRequireDefault(require(\"@turf/buffer\"));\n\nvar _lineIntersect = _interopRequireDefault(require(\"@turf/line-intersect\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _destination = _interopRequireDefault(require(\"@turf/destination\"));\n\nvar _polygonToLine = _interopRequireDefault(require(\"@turf/polygon-to-line\"));\n\nvar _nearestPointOnLine = _interopRequireDefault(require(\"@turf/nearest-point-on-line\"));\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar SplitPolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(SplitPolygonMode, _GeoJsonEditMode);\n\n var _super = _createSuper(SplitPolygonMode);\n\n function SplitPolygonMode() {\n _classCallCheck(this, SplitPolygonMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(SplitPolygonMode, [{\n key: \"calculateMapCoords\",\n value: function calculateMapCoords(clickSequence, mapCoords, props) {\n var modeConfig = props.modeConfig;\n\n if (!modeConfig || !modeConfig.lock90Degree || !clickSequence.length) {\n return mapCoords;\n }\n\n if (clickSequence.length === 1) {\n // if first point is clicked, then find closest polygon point and build ~90deg vector\n var firstPoint = clickSequence[0];\n var selectedGeometry = this.getSelectedGeometry(props); // @ts-ignore\n\n var feature = (0, _polygonToLine[\"default\"])(selectedGeometry);\n var lines = feature.type === 'FeatureCollection' ? feature.features : [feature];\n var minDistance = Number.MAX_SAFE_INTEGER;\n var closestPoint = null; // If Multipolygon, then we should find nearest polygon line and stick split to it.\n\n lines.forEach(function (line) {\n var snapPoint = (0, _nearestPointOnLine[\"default\"])(line, firstPoint);\n var distanceFromOrigin = (0, _distance[\"default\"])(snapPoint, firstPoint);\n\n if (minDistance > distanceFromOrigin) {\n minDistance = distanceFromOrigin;\n closestPoint = snapPoint;\n }\n });\n\n if (closestPoint) {\n // closest point is used as 90degree entry to the polygon\n var lastBearing = (0, _bearing[\"default\"])(firstPoint, closestPoint);\n var currentDistance = (0, _distance[\"default\"])(firstPoint, mapCoords, {\n units: 'meters'\n });\n return (0, _destination[\"default\"])(firstPoint, currentDistance, lastBearing, {\n units: 'meters'\n }).geometry.coordinates;\n }\n\n return mapCoords;\n } // Allow only 90 degree turns\n\n\n var lastPoint = clickSequence[clickSequence.length - 1];\n\n var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(clickSequence[clickSequence.length - 2], lastPoint, mapCoords),\n _generatePointsParall2 = _slicedToArray(_generatePointsParall, 1),\n approximatePoint = _generatePointsParall2[0]; // align point with current ground\n\n\n var nearestPt = (0, _nearestPointOnLine[\"default\"])((0, _helpers.lineString)([lastPoint, approximatePoint]), mapCoords).geometry.coordinates;\n return nearestPt;\n }\n }, {\n key: \"getGuides\",\n value: function getGuides(props) {\n var clickSequence = this.getClickSequence();\n var guides = {\n type: 'FeatureCollection',\n features: []\n };\n\n if (clickSequence.length === 0 || !props.lastPointerMoveEvent) {\n // nothing to do yet\n return guides;\n }\n\n var mapCoords = props.lastPointerMoveEvent.mapCoords;\n guides.features.push({\n type: 'Feature',\n properties: {\n guideType: 'tentative'\n },\n geometry: {\n type: 'LineString',\n coordinates: [].concat(_toConsumableArray(clickSequence), [this.calculateMapCoords(clickSequence, mapCoords, props)])\n }\n });\n return guides;\n }\n }, {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n var tentativeFeature = this.getTentativeGuide(props);\n var selectedGeometry = this.getSelectedGeometry(props);\n\n if (!selectedGeometry) {\n // eslint-disable-next-line no-console,no-undef\n console.warn('A polygon must be selected for splitting');\n return;\n }\n\n var clickSequence = this.getClickSequence();\n\n if (tentativeFeature && tentativeFeature.geometry.type === 'LineString') {\n clickSequence.push(tentativeFeature.geometry.coordinates[tentativeFeature.geometry.coordinates.length - 1]);\n } else {\n this.addClickSequence(event);\n }\n\n var pt = {\n type: 'Point',\n coordinates: clickSequence[clickSequence.length - 1]\n }; // @ts-ignore\n\n var isPointInPolygon = (0, _booleanPointInPolygon[\"default\"])(pt, selectedGeometry);\n\n if (clickSequence.length > 1 && tentativeFeature && !isPointInPolygon) {\n this.resetClickSequence(); // @ts-ignore\n\n var isLineInterectingWithPolygon = (0, _lineIntersect[\"default\"])(tentativeFeature, selectedGeometry);\n\n if (isLineInterectingWithPolygon.features.length === 0) {\n return;\n }\n\n var editAction = this.splitPolygon(tentativeFeature, props);\n\n if (editAction) {\n props.onEdit(editAction);\n }\n }\n }\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor('cell');\n }\n }, {\n key: \"splitPolygon\",\n value: function splitPolygon(tentativeFeature, props) {\n var selectedGeometry = this.getSelectedGeometry(props);\n var featureIndex = props.selectedIndexes[0];\n var modeConfig = props.modeConfig || {}; // Default gap in between the polygon\n\n var _modeConfig$gap = modeConfig.gap,\n gap = _modeConfig$gap === void 0 ? 0.1 : _modeConfig$gap,\n _modeConfig$units = modeConfig.units,\n units = _modeConfig$units === void 0 ? 'centimeters' : _modeConfig$units;\n\n if (gap === 0) {\n gap = 0.1;\n units = 'centimeters';\n }\n\n var buffer = (0, _buffer[\"default\"])(tentativeFeature, gap, {\n units: units\n }); // @ts-ignore\n\n var updatedGeometry = (0, _difference[\"default\"])(selectedGeometry, buffer);\n\n if (!updatedGeometry) {\n // eslint-disable-next-line no-console,no-undef\n console.warn('Canceling edit. Split Polygon erased');\n return null;\n }\n\n var _updatedGeometry$geom = updatedGeometry.geometry,\n type = _updatedGeometry$geom.type,\n coordinates = _updatedGeometry$geom.coordinates;\n var updatedCoordinates = [];\n\n if (type === 'Polygon') {\n // Update the coordinates as per Multipolygon\n // @ts-ignore\n updatedCoordinates = coordinates.map(function (c) {\n return [c];\n });\n } else {\n // Handle Case when Multipolygon has holes\n // @ts-ignore\n updatedCoordinates = coordinates.reduce(function (agg, prev) {\n prev.forEach(function (p) {\n agg.push([p]);\n });\n return agg;\n }, []);\n } // Update the type to Mulitpolygon\n\n\n var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replaceGeometry(featureIndex, {\n type: 'MultiPolygon',\n coordinates: updatedCoordinates\n });\n var editAction = {\n updatedData: updatedData.getObject(),\n editType: 'split',\n editContext: {\n featureIndexes: [featureIndex]\n }\n };\n return editAction;\n }\n }]);\n\n return SplitPolygonMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.SplitPolygonMode = SplitPolygonMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc3BsaXQtcG9seWdvbi1tb2RlLnRzIl0sIm5hbWVzIjpbIlNwbGl0UG9seWdvbk1vZGUiLCJjbGlja1NlcXVlbmNlIiwibWFwQ29vcmRzIiwicHJvcHMiLCJtb2RlQ29uZmlnIiwibG9jazkwRGVncmVlIiwibGVuZ3RoIiwiZmlyc3RQb2ludCIsInNlbGVjdGVkR2VvbWV0cnkiLCJnZXRTZWxlY3RlZEdlb21ldHJ5IiwiZmVhdHVyZSIsImxpbmVzIiwidHlwZSIsImZlYXR1cmVzIiwibWluRGlzdGFuY2UiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwiY2xvc2VzdFBvaW50IiwiZm9yRWFjaCIsImxpbmUiLCJzbmFwUG9pbnQiLCJkaXN0YW5jZUZyb21PcmlnaW4iLCJsYXN0QmVhcmluZyIsImN1cnJlbnREaXN0YW5jZSIsInVuaXRzIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsImxhc3RQb2ludCIsImFwcHJveGltYXRlUG9pbnQiLCJuZWFyZXN0UHQiLCJnZXRDbGlja1NlcXVlbmNlIiwiZ3VpZGVzIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJwdXNoIiwicHJvcGVydGllcyIsImd1aWRlVHlwZSIsImNhbGN1bGF0ZU1hcENvb3JkcyIsImV2ZW50IiwidGVudGF0aXZlRmVhdHVyZSIsImdldFRlbnRhdGl2ZUd1aWRlIiwiY29uc29sZSIsIndhcm4iLCJhZGRDbGlja1NlcXVlbmNlIiwicHQiLCJpc1BvaW50SW5Qb2x5Z29uIiwicmVzZXRDbGlja1NlcXVlbmNlIiwiaXNMaW5lSW50ZXJlY3RpbmdXaXRoUG9seWdvbiIsImVkaXRBY3Rpb24iLCJzcGxpdFBvbHlnb24iLCJvbkVkaXQiLCJvblVwZGF0ZUN1cnNvciIsImZlYXR1cmVJbmRleCIsInNlbGVjdGVkSW5kZXhlcyIsImdhcCIsImJ1ZmZlciIsInVwZGF0ZWRHZW9tZXRyeSIsInVwZGF0ZWRDb29yZGluYXRlcyIsIm1hcCIsImMiLCJyZWR1Y2UiLCJhZ2ciLCJwcmV2IiwicCIsInVwZGF0ZWREYXRhIiwiSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJkYXRhIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2V0T2JqZWN0IiwiZWRpdFR5cGUiLCJlZGl0Q29udGV4dCIsImZlYXR1cmVJbmRleGVzIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBU0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsZ0I7Ozs7Ozs7Ozs7Ozs7dUNBQ1FDLGEsRUFBb0JDLFMsRUFBZ0JDLEssRUFBcUM7QUFDMUYsVUFBTUMsVUFBVSxHQUFHRCxLQUFLLENBQUNDLFVBQXpCOztBQUNBLFVBQUksQ0FBQ0EsVUFBRCxJQUFlLENBQUNBLFVBQVUsQ0FBQ0MsWUFBM0IsSUFBMkMsQ0FBQ0osYUFBYSxDQUFDSyxNQUE5RCxFQUFzRTtBQUNwRSxlQUFPSixTQUFQO0FBQ0Q7O0FBQ0QsVUFBSUQsYUFBYSxDQUFDSyxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQzlCO0FBQ0EsWUFBTUMsVUFBVSxHQUFHTixhQUFhLENBQUMsQ0FBRCxDQUFoQztBQUNBLFlBQU1PLGdCQUFnQixHQUFHLEtBQUtDLG1CQUFMLENBQXlCTixLQUF6QixDQUF6QixDQUg4QixDQUk5Qjs7QUFDQSxZQUFNTyxPQUFPLEdBQUcsK0JBQWtCRixnQkFBbEIsQ0FBaEI7QUFFQSxZQUFNRyxLQUFLLEdBQUdELE9BQU8sQ0FBQ0UsSUFBUixLQUFpQixtQkFBakIsR0FBdUNGLE9BQU8sQ0FBQ0csUUFBL0MsR0FBMEQsQ0FBQ0gsT0FBRCxDQUF4RTtBQUNBLFlBQUlJLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxnQkFBekI7QUFDQSxZQUFJQyxZQUFZLEdBQUcsSUFBbkIsQ0FUOEIsQ0FVOUI7O0FBQ0FOLFFBQUFBLEtBQUssQ0FBQ08sT0FBTixDQUFjLFVBQUNDLElBQUQsRUFBVTtBQUN0QixjQUFNQyxTQUFTLEdBQUcsb0NBQW1CRCxJQUFuQixFQUF5QlosVUFBekIsQ0FBbEI7QUFDQSxjQUFNYyxrQkFBa0IsR0FBRywwQkFBYUQsU0FBYixFQUF3QmIsVUFBeEIsQ0FBM0I7O0FBQ0EsY0FBSU8sV0FBVyxHQUFHTyxrQkFBbEIsRUFBc0M7QUFDcENQLFlBQUFBLFdBQVcsR0FBR08sa0JBQWQ7QUFDQUosWUFBQUEsWUFBWSxHQUFHRyxTQUFmO0FBQ0Q7QUFDRixTQVBEOztBQVNBLFlBQUlILFlBQUosRUFBa0I7QUFDaEI7QUFDQSxjQUFNSyxXQUFXLEdBQUcseUJBQVlmLFVBQVosRUFBd0JVLFlBQXhCLENBQXBCO0FBQ0EsY0FBTU0sZUFBZSxHQUFHLDBCQUFhaEIsVUFBYixFQUF5QkwsU0FBekIsRUFBb0M7QUFBRXNCLFlBQUFBLEtBQUssRUFBRTtBQUFULFdBQXBDLENBQXhCO0FBQ0EsaUJBQU8sNkJBQWdCakIsVUFBaEIsRUFBNEJnQixlQUE1QixFQUE2Q0QsV0FBN0MsRUFBMEQ7QUFDL0RFLFlBQUFBLEtBQUssRUFBRTtBQUR3RCxXQUExRCxFQUVKQyxRQUZJLENBRUtDLFdBRlo7QUFHRDs7QUFDRCxlQUFPeEIsU0FBUDtBQUNELE9BbEN5RixDQW1DMUY7OztBQUNBLFVBQU15QixTQUFTLEdBQUcxQixhQUFhLENBQUNBLGFBQWEsQ0FBQ0ssTUFBZCxHQUF1QixDQUF4QixDQUEvQjs7QUFwQzBGLGtDQXFDL0QsK0NBQ3pCTCxhQUFhLENBQUNBLGFBQWEsQ0FBQ0ssTUFBZCxHQUF1QixDQUF4QixDQURZLEVBRXpCcUIsU0FGeUIsRUFHekJ6QixTQUh5QixDQXJDK0Q7QUFBQTtBQUFBLFVBcUNuRjBCLGdCQXJDbUYsOEJBMEMxRjs7O0FBQ0EsVUFBTUMsU0FBUyxHQUFHLG9DQUFtQix5QkFBVyxDQUFDRixTQUFELEVBQVlDLGdCQUFaLENBQVgsQ0FBbkIsRUFBOEQxQixTQUE5RCxFQUNmdUIsUUFEZSxDQUNOQyxXQURaO0FBRUEsYUFBT0csU0FBUDtBQUNEOzs7OEJBRVMxQixLLEVBQTZEO0FBQ3JFLFVBQU1GLGFBQWEsR0FBRyxLQUFLNkIsZ0JBQUwsRUFBdEI7QUFFQSxVQUFNQyxNQUE4QixHQUFHO0FBQ3JDbkIsUUFBQUEsSUFBSSxFQUFFLG1CQUQrQjtBQUVyQ0MsUUFBQUEsUUFBUSxFQUFFO0FBRjJCLE9BQXZDOztBQUtBLFVBQUlaLGFBQWEsQ0FBQ0ssTUFBZCxLQUF5QixDQUF6QixJQUE4QixDQUFDSCxLQUFLLENBQUM2QixvQkFBekMsRUFBK0Q7QUFDN0Q7QUFDQSxlQUFPRCxNQUFQO0FBQ0Q7O0FBWG9FLFVBYTdEN0IsU0FiNkQsR0FhL0NDLEtBQUssQ0FBQzZCLG9CQWJ5QyxDQWE3RDlCLFNBYjZEO0FBZXJFNkIsTUFBQUEsTUFBTSxDQUFDbEIsUUFBUCxDQUFnQm9CLElBQWhCLENBQXFCO0FBQ25CckIsUUFBQUEsSUFBSSxFQUFFLFNBRGE7QUFFbkJzQixRQUFBQSxVQUFVLEVBQUU7QUFDVkMsVUFBQUEsU0FBUyxFQUFFO0FBREQsU0FGTztBQUtuQlYsUUFBQUEsUUFBUSxFQUFFO0FBQ1JiLFVBQUFBLElBQUksRUFBRSxZQURFO0FBRVJjLFVBQUFBLFdBQVcsK0JBQU16QixhQUFOLElBQXFCLEtBQUttQyxrQkFBTCxDQUF3Qm5DLGFBQXhCLEVBQXVDQyxTQUF2QyxFQUFrREMsS0FBbEQsQ0FBckI7QUFGSDtBQUxTLE9BQXJCO0FBV0EsYUFBTzRCLE1BQVA7QUFDRDs7O2dDQUVXTSxLLEVBQW1CbEMsSyxFQUFxQztBQUNsRSxVQUFNbUMsZ0JBQWdCLEdBQUcsS0FBS0MsaUJBQUwsQ0FBdUJwQyxLQUF2QixDQUF6QjtBQUVBLFVBQU1LLGdCQUFnQixHQUFHLEtBQUtDLG1CQUFMLENBQXlCTixLQUF6QixDQUF6Qjs7QUFFQSxVQUFJLENBQUNLLGdCQUFMLEVBQXVCO0FBQ3JCO0FBQ0FnQyxRQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FBYSwwQ0FBYjtBQUNBO0FBQ0Q7O0FBRUQsVUFBTXhDLGFBQWEsR0FBRyxLQUFLNkIsZ0JBQUwsRUFBdEI7O0FBQ0EsVUFBSVEsZ0JBQWdCLElBQUlBLGdCQUFnQixDQUFDYixRQUFqQixDQUEwQmIsSUFBMUIsS0FBbUMsWUFBM0QsRUFBeUU7QUFDdkVYLFFBQUFBLGFBQWEsQ0FBQ2dDLElBQWQsQ0FDRUssZ0JBQWdCLENBQUNiLFFBQWpCLENBQTBCQyxXQUExQixDQUFzQ1ksZ0JBQWdCLENBQUNiLFFBQWpCLENBQTBCQyxXQUExQixDQUFzQ3BCLE1BQXRDLEdBQStDLENBQXJGLENBREY7QUFHRCxPQUpELE1BSU87QUFDTCxhQUFLb0MsZ0JBQUwsQ0FBc0JMLEtBQXRCO0FBQ0Q7O0FBRUQsVUFBTU0sRUFBRSxHQUFHO0FBQ1QvQixRQUFBQSxJQUFJLEVBQUUsT0FERztBQUVUYyxRQUFBQSxXQUFXLEVBQUV6QixhQUFhLENBQUNBLGFBQWEsQ0FBQ0ssTUFBZCxHQUF1QixDQUF4QjtBQUZqQixPQUFYLENBcEJrRSxDQXdCbEU7O0FBQ0EsVUFBTXNDLGdCQUFnQixHQUFHLHVDQUFzQkQsRUFBdEIsRUFBMEJuQyxnQkFBMUIsQ0FBekI7O0FBQ0EsVUFBSVAsYUFBYSxDQUFDSyxNQUFkLEdBQXVCLENBQXZCLElBQTRCZ0MsZ0JBQTVCLElBQWdELENBQUNNLGdCQUFyRCxFQUF1RTtBQUNyRSxhQUFLQyxrQkFBTCxHQURxRSxDQUVyRTs7QUFDQSxZQUFNQyw0QkFBNEIsR0FBRywrQkFBY1IsZ0JBQWQsRUFBZ0M5QixnQkFBaEMsQ0FBckM7O0FBQ0EsWUFBSXNDLDRCQUE0QixDQUFDakMsUUFBN0IsQ0FBc0NQLE1BQXRDLEtBQWlELENBQXJELEVBQXdEO0FBQ3REO0FBQ0Q7O0FBRUQsWUFBTXlDLFVBQVUsR0FBRyxLQUFLQyxZQUFMLENBQWtCVixnQkFBbEIsRUFBb0NuQyxLQUFwQyxDQUFuQjs7QUFFQSxZQUFJNEMsVUFBSixFQUFnQjtBQUNkNUMsVUFBQUEsS0FBSyxDQUFDOEMsTUFBTixDQUFhRixVQUFiO0FBQ0Q7QUFDRjtBQUNGOzs7c0NBRWlCVixLLEVBQXlCbEMsSyxFQUFxQztBQUM5RUEsTUFBQUEsS0FBSyxDQUFDK0MsY0FBTixDQUFxQixNQUFyQjtBQUNEOzs7aUNBRVlaLGdCLEVBQW9DbkMsSyxFQUFxQztBQUNwRixVQUFNSyxnQkFBZ0IsR0FBRyxLQUFLQyxtQkFBTCxDQUF5Qk4sS0FBekIsQ0FBekI7QUFDQSxVQUFNZ0QsWUFBWSxHQUFHaEQsS0FBSyxDQUFDaUQsZUFBTixDQUFzQixDQUF0QixDQUFyQjtBQUNBLFVBQU1oRCxVQUFVLEdBQUdELEtBQUssQ0FBQ0MsVUFBTixJQUFvQixFQUF2QyxDQUhvRixDQUtwRjs7QUFMb0YsNEJBTXpDQSxVQU55QyxDQU05RWlELEdBTjhFO0FBQUEsVUFNOUVBLEdBTjhFLGdDQU14RSxHQU53RTtBQUFBLDhCQU16Q2pELFVBTnlDLENBTW5Fb0IsS0FObUU7QUFBQSxVQU1uRUEsS0FObUUsa0NBTTNELGFBTjJEOztBQU9wRixVQUFJNkIsR0FBRyxLQUFLLENBQVosRUFBZTtBQUNiQSxRQUFBQSxHQUFHLEdBQUcsR0FBTjtBQUNBN0IsUUFBQUEsS0FBSyxHQUFHLGFBQVI7QUFDRDs7QUFFRCxVQUFNOEIsTUFBTSxHQUFHLHdCQUFXaEIsZ0JBQVgsRUFBNkJlLEdBQTdCLEVBQWtDO0FBQUU3QixRQUFBQSxLQUFLLEVBQUxBO0FBQUYsT0FBbEMsQ0FBZixDQVpvRixDQWFwRjs7QUFDQSxVQUFNK0IsZUFBZSxHQUFHLDRCQUFlL0MsZ0JBQWYsRUFBaUM4QyxNQUFqQyxDQUF4Qjs7QUFDQSxVQUFJLENBQUNDLGVBQUwsRUFBc0I7QUFDcEI7QUFDQWYsUUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWEsc0NBQWI7QUFDQSxlQUFPLElBQVA7QUFDRDs7QUFuQm1GLGtDQXFCdERjLGVBQWUsQ0FBQzlCLFFBckJzQztBQUFBLFVBcUI1RWIsSUFyQjRFLHlCQXFCNUVBLElBckI0RTtBQUFBLFVBcUJ0RWMsV0FyQnNFLHlCQXFCdEVBLFdBckJzRTtBQXNCcEYsVUFBSThCLGtCQUFrQixHQUFHLEVBQXpCOztBQUNBLFVBQUk1QyxJQUFJLEtBQUssU0FBYixFQUF3QjtBQUN0QjtBQUNBO0FBQ0E0QyxRQUFBQSxrQkFBa0IsR0FBRzlCLFdBQVcsQ0FBQytCLEdBQVosQ0FBZ0IsVUFBQ0MsQ0FBRDtBQUFBLGlCQUFPLENBQUNBLENBQUQsQ0FBUDtBQUFBLFNBQWhCLENBQXJCO0FBQ0QsT0FKRCxNQUlPO0FBQ0w7QUFDQTtBQUNBRixRQUFBQSxrQkFBa0IsR0FBRzlCLFdBQVcsQ0FBQ2lDLE1BQVosQ0FBbUIsVUFBQ0MsR0FBRCxFQUFNQyxJQUFOLEVBQWU7QUFDckRBLFVBQUFBLElBQUksQ0FBQzNDLE9BQUwsQ0FBYSxVQUFDNEMsQ0FBRCxFQUFPO0FBQ2xCRixZQUFBQSxHQUFHLENBQUMzQixJQUFKLENBQVMsQ0FBQzZCLENBQUQsQ0FBVDtBQUNELFdBRkQ7QUFHQSxpQkFBT0YsR0FBUDtBQUNELFNBTG9CLEVBS2xCLEVBTGtCLENBQXJCO0FBTUQsT0FwQ21GLENBc0NwRjs7O0FBQ0EsVUFBTUcsV0FBVyxHQUFHLElBQUlDLHNEQUFKLENBQStCN0QsS0FBSyxDQUFDOEQsSUFBckMsRUFBMkNDLGVBQTNDLENBQTJEZixZQUEzRCxFQUF5RTtBQUMzRnZDLFFBQUFBLElBQUksRUFBRSxjQURxRjtBQUUzRmMsUUFBQUEsV0FBVyxFQUFFOEI7QUFGOEUsT0FBekUsQ0FBcEI7QUFLQSxVQUFNVCxVQUE2QixHQUFHO0FBQ3BDZ0IsUUFBQUEsV0FBVyxFQUFFQSxXQUFXLENBQUNJLFNBQVosRUFEdUI7QUFFcENDLFFBQUFBLFFBQVEsRUFBRSxPQUYwQjtBQUdwQ0MsUUFBQUEsV0FBVyxFQUFFO0FBQ1hDLFVBQUFBLGNBQWMsRUFBRSxDQUFDbkIsWUFBRDtBQURMO0FBSHVCLE9BQXRDO0FBUUEsYUFBT0osVUFBUDtBQUNEOzs7O0VBakxtQ3dCLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJvb2xlYW5Qb2ludEluUG9seWdvbiBmcm9tICdAdHVyZi9ib29sZWFuLXBvaW50LWluLXBvbHlnb24nO1xuaW1wb3J0IHR1cmZEaWZmZXJlbmNlIGZyb20gJ0B0dXJmL2RpZmZlcmVuY2UnO1xuaW1wb3J0IHR1cmZCdWZmZXIgZnJvbSAnQHR1cmYvYnVmZmVyJztcbmltcG9ydCBsaW5lSW50ZXJzZWN0IGZyb20gJ0B0dXJmL2xpbmUtaW50ZXJzZWN0JztcbmltcG9ydCB7IGxpbmVTdHJpbmcgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCB0dXJmRGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHR1cmZEZXN0aW5hdGlvbiBmcm9tICdAdHVyZi9kZXN0aW5hdGlvbic7XG5pbXBvcnQgdHVyZlBvbHlnb25Ub0xpbmUgZnJvbSAnQHR1cmYvcG9seWdvbi10by1saW5lJztcbmltcG9ydCBuZWFyZXN0UG9pbnRPbkxpbmUgZnJvbSAnQHR1cmYvbmVhcmVzdC1wb2ludC1vbi1saW5lJztcbmltcG9ydCB7IGdlbmVyYXRlUG9pbnRzUGFyYWxsZWxUb0xpbmVQb2ludHMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgTW9kZVByb3BzLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxuICBUZW50YXRpdmVGZWF0dXJlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUsIEdlb0pzb25FZGl0QWN0aW9uIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5pbXBvcnQgeyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4vaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBTcGxpdFBvbHlnb25Nb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgY2FsY3VsYXRlTWFwQ29vcmRzKGNsaWNrU2VxdWVuY2U6IGFueSwgbWFwQ29vcmRzOiBhbnksIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3QgbW9kZUNvbmZpZyA9IHByb3BzLm1vZGVDb25maWc7XG4gICAgaWYgKCFtb2RlQ29uZmlnIHx8ICFtb2RlQ29uZmlnLmxvY2s5MERlZ3JlZSB8fCAhY2xpY2tTZXF1ZW5jZS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBtYXBDb29yZHM7XG4gICAgfVxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gaWYgZmlyc3QgcG9pbnQgaXMgY2xpY2tlZCwgdGhlbiBmaW5kIGNsb3Nlc3QgcG9seWdvbiBwb2ludCBhbmQgYnVpbGQgfjkwZGVnIHZlY3RvclxuICAgICAgY29uc3QgZmlyc3RQb2ludCA9IGNsaWNrU2VxdWVuY2VbMF07XG4gICAgICBjb25zdCBzZWxlY3RlZEdlb21ldHJ5ID0gdGhpcy5nZXRTZWxlY3RlZEdlb21ldHJ5KHByb3BzKTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGZlYXR1cmUgPSB0dXJmUG9seWdvblRvTGluZShzZWxlY3RlZEdlb21ldHJ5KTtcblxuICAgICAgY29uc3QgbGluZXMgPSBmZWF0dXJlLnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbicgPyBmZWF0dXJlLmZlYXR1cmVzIDogW2ZlYXR1cmVdO1xuICAgICAgbGV0IG1pbkRpc3RhbmNlID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gICAgICBsZXQgY2xvc2VzdFBvaW50ID0gbnVsbDtcbiAgICAgIC8vIElmIE11bHRpcG9seWdvbiwgdGhlbiB3ZSBzaG91bGQgZmluZCBuZWFyZXN0IHBvbHlnb24gbGluZSBhbmQgc3RpY2sgc3BsaXQgdG8gaXQuXG4gICAgICBsaW5lcy5mb3JFYWNoKChsaW5lKSA9PiB7XG4gICAgICAgIGNvbnN0IHNuYXBQb2ludCA9IG5lYXJlc3RQb2ludE9uTGluZShsaW5lLCBmaXJzdFBvaW50KTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tT3JpZ2luID0gdHVyZkRpc3RhbmNlKHNuYXBQb2ludCwgZmlyc3RQb2ludCk7XG4gICAgICAgIGlmIChtaW5EaXN0YW5jZSA+IGRpc3RhbmNlRnJvbU9yaWdpbikge1xuICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2VGcm9tT3JpZ2luO1xuICAgICAgICAgIGNsb3Nlc3RQb2ludCA9IHNuYXBQb2ludDtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChjbG9zZXN0UG9pbnQpIHtcbiAgICAgICAgLy8gY2xvc2VzdCBwb2ludCBpcyB1c2VkIGFzIDkwZGVncmVlIGVudHJ5IHRvIHRoZSBwb2x5Z29uXG4gICAgICAgIGNvbnN0IGxhc3RCZWFyaW5nID0gdHVyZkJlYXJpbmcoZmlyc3RQb2ludCwgY2xvc2VzdFBvaW50KTtcbiAgICAgICAgY29uc3QgY3VycmVudERpc3RhbmNlID0gdHVyZkRpc3RhbmNlKGZpcnN0UG9pbnQsIG1hcENvb3JkcywgeyB1bml0czogJ21ldGVycycgfSk7XG4gICAgICAgIHJldHVybiB0dXJmRGVzdGluYXRpb24oZmlyc3RQb2ludCwgY3VycmVudERpc3RhbmNlLCBsYXN0QmVhcmluZywge1xuICAgICAgICAgIHVuaXRzOiAnbWV0ZXJzJyxcbiAgICAgICAgfSkuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWFwQ29vcmRzO1xuICAgIH1cbiAgICAvLyBBbGxvdyBvbmx5IDkwIGRlZ3JlZSB0dXJuc1xuICAgIGNvbnN0IGxhc3RQb2ludCA9IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBbYXBwcm94aW1hdGVQb2ludF0gPSBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzKFxuICAgICAgY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDJdLFxuICAgICAgbGFzdFBvaW50LFxuICAgICAgbWFwQ29vcmRzXG4gICAgKTtcbiAgICAvLyBhbGlnbiBwb2ludCB3aXRoIGN1cnJlbnQgZ3JvdW5kXG4gICAgY29uc3QgbmVhcmVzdFB0ID0gbmVhcmVzdFBvaW50T25MaW5lKGxpbmVTdHJpbmcoW2xhc3RQb2ludCwgYXBwcm94aW1hdGVQb2ludF0pLCBtYXBDb29yZHMpXG4gICAgICAuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgcmV0dXJuIG5lYXJlc3RQdDtcbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IGd1aWRlczogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogW10sXG4gICAgfTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMCB8fCAhcHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQpIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG8geWV0XG4gICAgICByZXR1cm4gZ3VpZGVzO1xuICAgIH1cblxuICAgIGNvbnN0IHsgbWFwQ29vcmRzIH0gPSBwcm9wcy5sYXN0UG9pbnRlck1vdmVFdmVudDtcblxuICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgIH0sXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZSwgdGhpcy5jYWxjdWxhdGVNYXBDb29yZHMoY2xpY2tTZXF1ZW5jZSwgbWFwQ29vcmRzLCBwcm9wcyldLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVHdWlkZShwcm9wcyk7XG5cbiAgICBjb25zdCBzZWxlY3RlZEdlb21ldHJ5ID0gdGhpcy5nZXRTZWxlY3RlZEdlb21ldHJ5KHByb3BzKTtcblxuICAgIGlmICghc2VsZWN0ZWRHZW9tZXRyeSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIGNvbnNvbGUud2FybignQSBwb2x5Z29uIG11c3QgYmUgc2VsZWN0ZWQgZm9yIHNwbGl0dGluZycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcbiAgICBpZiAodGVudGF0aXZlRmVhdHVyZSAmJiB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdMaW5lU3RyaW5nJykge1xuICAgICAgY2xpY2tTZXF1ZW5jZS5wdXNoKFxuICAgICAgICB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzW3RlbnRhdGl2ZUZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoIC0gMV1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHQgPSB7XG4gICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgY29vcmRpbmF0ZXM6IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXSxcbiAgICB9O1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBpc1BvaW50SW5Qb2x5Z29uID0gYm9vbGVhblBvaW50SW5Qb2x5Z29uKHB0LCBzZWxlY3RlZEdlb21ldHJ5KTtcbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAxICYmIHRlbnRhdGl2ZUZlYXR1cmUgJiYgIWlzUG9pbnRJblBvbHlnb24pIHtcbiAgICAgIHRoaXMucmVzZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBpc0xpbmVJbnRlcmVjdGluZ1dpdGhQb2x5Z29uID0gbGluZUludGVyc2VjdCh0ZW50YXRpdmVGZWF0dXJlLCBzZWxlY3RlZEdlb21ldHJ5KTtcbiAgICAgIGlmIChpc0xpbmVJbnRlcmVjdGluZ1dpdGhQb2x5Z29uLmZlYXR1cmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVkaXRBY3Rpb24gPSB0aGlzLnNwbGl0UG9seWdvbih0ZW50YXRpdmVGZWF0dXJlLCBwcm9wcyk7XG5cbiAgICAgIGlmIChlZGl0QWN0aW9uKSB7XG4gICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICB9XG5cbiAgc3BsaXRQb2x5Z29uKHRlbnRhdGl2ZUZlYXR1cmU6IFRlbnRhdGl2ZUZlYXR1cmUsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRHZW9tZXRyeSA9IHRoaXMuZ2V0U2VsZWN0ZWRHZW9tZXRyeShwcm9wcyk7XG4gICAgY29uc3QgZmVhdHVyZUluZGV4ID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzWzBdO1xuICAgIGNvbnN0IG1vZGVDb25maWcgPSBwcm9wcy5tb2RlQ29uZmlnIHx8IHt9O1xuXG4gICAgLy8gRGVmYXVsdCBnYXAgaW4gYmV0d2VlbiB0aGUgcG9seWdvblxuICAgIGxldCB7IGdhcCA9IDAuMSwgdW5pdHMgPSAnY2VudGltZXRlcnMnIH0gPSBtb2RlQ29uZmlnO1xuICAgIGlmIChnYXAgPT09IDApIHtcbiAgICAgIGdhcCA9IDAuMTtcbiAgICAgIHVuaXRzID0gJ2NlbnRpbWV0ZXJzJztcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSB0dXJmQnVmZmVyKHRlbnRhdGl2ZUZlYXR1cmUsIGdhcCwgeyB1bml0cyB9KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgdXBkYXRlZEdlb21ldHJ5ID0gdHVyZkRpZmZlcmVuY2Uoc2VsZWN0ZWRHZW9tZXRyeSwgYnVmZmVyKTtcbiAgICBpZiAoIXVwZGF0ZWRHZW9tZXRyeSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIGNvbnNvbGUud2FybignQ2FuY2VsaW5nIGVkaXQuIFNwbGl0IFBvbHlnb24gZXJhc2VkJyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHR5cGUsIGNvb3JkaW5hdGVzIH0gPSB1cGRhdGVkR2VvbWV0cnkuZ2VvbWV0cnk7XG4gICAgbGV0IHVwZGF0ZWRDb29yZGluYXRlcyA9IFtdO1xuICAgIGlmICh0eXBlID09PSAnUG9seWdvbicpIHtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgYXMgcGVyIE11bHRpcG9seWdvblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdXBkYXRlZENvb3JkaW5hdGVzID0gY29vcmRpbmF0ZXMubWFwKChjKSA9PiBbY10pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIYW5kbGUgQ2FzZSB3aGVuIE11bHRpcG9seWdvbiBoYXMgaG9sZXNcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHVwZGF0ZWRDb29yZGluYXRlcyA9IGNvb3JkaW5hdGVzLnJlZHVjZSgoYWdnLCBwcmV2KSA9PiB7XG4gICAgICAgIHByZXYuZm9yRWFjaCgocCkgPT4ge1xuICAgICAgICAgIGFnZy5wdXNoKFtwXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYWdnO1xuICAgICAgfSwgW10pO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgdHlwZSB0byBNdWxpdHBvbHlnb25cbiAgICBjb25zdCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKS5yZXBsYWNlR2VvbWV0cnkoZmVhdHVyZUluZGV4LCB7XG4gICAgICB0eXBlOiAnTXVsdGlQb2x5Z29uJyxcbiAgICAgIGNvb3JkaW5hdGVzOiB1cGRhdGVkQ29vcmRpbmF0ZXMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBlZGl0QWN0aW9uOiBHZW9Kc29uRWRpdEFjdGlvbiA9IHtcbiAgICAgIHVwZGF0ZWREYXRhOiB1cGRhdGVkRGF0YS5nZXRPYmplY3QoKSxcbiAgICAgIGVkaXRUeXBlOiAnc3BsaXQnLFxuICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtmZWF0dXJlSW5kZXhdLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVkaXRBY3Rpb247XG4gIH1cbn1cbiJdfQ==","import booleanPointInPolygon from '@turf/boolean-point-in-polygon';\nimport turfDifference from '@turf/difference';\nimport turfBuffer from '@turf/buffer';\nimport lineIntersect from '@turf/line-intersect';\nimport { lineString } from '@turf/helpers';\nimport turfBearing from '@turf/bearing';\nimport turfDistance from '@turf/distance';\nimport turfDestination from '@turf/destination';\nimport turfPolygonToLine from '@turf/polygon-to-line';\nimport nearestPointOnLine from '@turf/nearest-point-on-line';\nimport { generatePointsParallelToLinePoints } from '../utils';\nimport { FeatureCollection } from '../geojson-types';\nimport {\n ClickEvent,\n PointerMoveEvent,\n ModeProps,\n GuideFeatureCollection,\n TentativeFeature,\n} from '../types';\nimport { GeoJsonEditMode, GeoJsonEditAction } from './geojson-edit-mode';\nimport { ImmutableFeatureCollection } from './immutable-feature-collection';\n\nexport class SplitPolygonMode extends GeoJsonEditMode {\n calculateMapCoords(clickSequence: any, mapCoords: any, props: ModeProps) {\n const modeConfig = props.modeConfig;\n if (!modeConfig || !modeConfig.lock90Degree || !clickSequence.length) {\n return mapCoords;\n }\n if (clickSequence.length === 1) {\n // if first point is clicked, then find closest polygon point and build ~90deg vector\n const firstPoint = clickSequence[0];\n const selectedGeometry = this.getSelectedGeometry(props);\n // @ts-ignore\n const feature = turfPolygonToLine(selectedGeometry);\n\n const lines = feature.type === 'FeatureCollection' ? feature.features : [feature];\n let minDistance = Number.MAX_SAFE_INTEGER;\n let closestPoint = null;\n // If Multipolygon, then we should find nearest polygon line and stick split to it.\n lines.forEach((line) => {\n const snapPoint = nearestPointOnLine(line, firstPoint);\n const distanceFromOrigin = turfDistance(snapPoint, firstPoint);\n if (minDistance > distanceFromOrigin) {\n minDistance = distanceFromOrigin;\n closestPoint = snapPoint;\n }\n });\n\n if (closestPoint) {\n // closest point is used as 90degree entry to the polygon\n const lastBearing = turfBearing(firstPoint, closestPoint);\n const currentDistance = turfDistance(firstPoint, mapCoords, { units: 'meters' });\n return turfDestination(firstPoint, currentDistance, lastBearing, {\n units: 'meters',\n }).geometry.coordinates;\n }\n return mapCoords;\n }\n // Allow only 90 degree turns\n const lastPoint = clickSequence[clickSequence.length - 1];\n const [approximatePoint] = generatePointsParallelToLinePoints(\n clickSequence[clickSequence.length - 2],\n lastPoint,\n mapCoords\n );\n // align point with current ground\n const nearestPt = nearestPointOnLine(lineString([lastPoint, approximatePoint]), mapCoords)\n .geometry.coordinates;\n return nearestPt;\n }\n\n getGuides(props: ModeProps): GuideFeatureCollection {\n const clickSequence = this.getClickSequence();\n\n const guides: GuideFeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (clickSequence.length === 0 || !props.lastPointerMoveEvent) {\n // nothing to do yet\n return guides;\n }\n\n const { mapCoords } = props.lastPointerMoveEvent;\n\n guides.features.push({\n type: 'Feature',\n properties: {\n guideType: 'tentative',\n },\n geometry: {\n type: 'LineString',\n coordinates: [...clickSequence, this.calculateMapCoords(clickSequence, mapCoords, props)],\n },\n });\n\n return guides;\n }\n\n handleClick(event: ClickEvent, props: ModeProps) {\n const tentativeFeature = this.getTentativeGuide(props);\n\n const selectedGeometry = this.getSelectedGeometry(props);\n\n if (!selectedGeometry) {\n // eslint-disable-next-line no-console,no-undef\n console.warn('A polygon must be selected for splitting');\n return;\n }\n\n const clickSequence = this.getClickSequence();\n if (tentativeFeature && tentativeFeature.geometry.type === 'LineString') {\n clickSequence.push(\n tentativeFeature.geometry.coordinates[tentativeFeature.geometry.coordinates.length - 1]\n );\n } else {\n this.addClickSequence(event);\n }\n\n const pt = {\n type: 'Point',\n coordinates: clickSequence[clickSequence.length - 1],\n };\n // @ts-ignore\n const isPointInPolygon = booleanPointInPolygon(pt, selectedGeometry);\n if (clickSequence.length > 1 && tentativeFeature && !isPointInPolygon) {\n this.resetClickSequence();\n // @ts-ignore\n const isLineInterectingWithPolygon = lineIntersect(tentativeFeature, selectedGeometry);\n if (isLineInterectingWithPolygon.features.length === 0) {\n return;\n }\n\n const editAction = this.splitPolygon(tentativeFeature, props);\n\n if (editAction) {\n props.onEdit(editAction);\n }\n }\n }\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps) {\n props.onUpdateCursor('cell');\n }\n\n splitPolygon(tentativeFeature: TentativeFeature, props: ModeProps) {\n const selectedGeometry = this.getSelectedGeometry(props);\n const featureIndex = props.selectedIndexes[0];\n const modeConfig = props.modeConfig || {};\n\n // Default gap in between the polygon\n let { gap = 0.1, units = 'centimeters' } = modeConfig;\n if (gap === 0) {\n gap = 0.1;\n units = 'centimeters';\n }\n\n const buffer = turfBuffer(tentativeFeature, gap, { units });\n // @ts-ignore\n const updatedGeometry = turfDifference(selectedGeometry, buffer);\n if (!updatedGeometry) {\n // eslint-disable-next-line no-console,no-undef\n console.warn('Canceling edit. Split Polygon erased');\n return null;\n }\n\n const { type, coordinates } = updatedGeometry.geometry;\n let updatedCoordinates = [];\n if (type === 'Polygon') {\n // Update the coordinates as per Multipolygon\n // @ts-ignore\n updatedCoordinates = coordinates.map((c) => [c]);\n } else {\n // Handle Case when Multipolygon has holes\n // @ts-ignore\n updatedCoordinates = coordinates.reduce((agg, prev) => {\n prev.forEach((p) => {\n agg.push([p]);\n });\n return agg;\n }, []);\n }\n\n // Update the type to Mulitpolygon\n const updatedData = new ImmutableFeatureCollection(props.data).replaceGeometry(featureIndex, {\n type: 'MultiPolygon',\n coordinates: updatedCoordinates,\n });\n\n const editAction: GeoJsonEditAction = {\n updatedData: updatedData.getObject(),\n editType: 'split',\n editContext: {\n featureIndexes: [featureIndex],\n },\n };\n\n return editAction;\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = require(\"@turf/invariant\");\n// http://en.wikipedia.org/wiki/Even%E2%80%93odd_rule\n// modified from: https://github.com/substack/point-in-polygon/blob/master/index.js\n// which was modified from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n/**\n * Takes a {@link Point} and a {@link Polygon} or {@link MultiPolygon} and determines if the point\n * resides inside the polygon. The polygon can be convex or concave. The function accounts for holes.\n *\n * @name booleanPointInPolygon\n * @param {Coord} point input point\n * @param {Feature} polygon input polygon or multipolygon\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.ignoreBoundary=false] True if polygon boundary should be ignored when determining if\n * the point is inside the polygon otherwise false.\n * @returns {boolean} `true` if the Point is inside the Polygon; `false` if the Point is not inside the Polygon\n * @example\n * var pt = turf.point([-77, 44]);\n * var poly = turf.polygon([[\n * [-81, 41],\n * [-81, 47],\n * [-72, 47],\n * [-72, 41],\n * [-81, 41]\n * ]]);\n *\n * turf.booleanPointInPolygon(pt, poly);\n * //= true\n */\nfunction booleanPointInPolygon(point, polygon, options) {\n if (options === void 0) { options = {}; }\n // validation\n if (!point) {\n throw new Error(\"point is required\");\n }\n if (!polygon) {\n throw new Error(\"polygon is required\");\n }\n var pt = invariant_1.getCoord(point);\n var geom = invariant_1.getGeom(polygon);\n var type = geom.type;\n var bbox = polygon.bbox;\n var polys = geom.coordinates;\n // Quick elimination if point is not inside bbox\n if (bbox && inBBox(pt, bbox) === false) {\n return false;\n }\n // normalize to multipolygon\n if (type === \"Polygon\") {\n polys = [polys];\n }\n var insidePoly = false;\n for (var i = 0; i < polys.length && !insidePoly; i++) {\n // check if it is in the outer ring first\n if (inRing(pt, polys[i][0], options.ignoreBoundary)) {\n var inHole = false;\n var k = 1;\n // check for the point in any of the holes\n while (k < polys[i].length && !inHole) {\n if (inRing(pt, polys[i][k], !options.ignoreBoundary)) {\n inHole = true;\n }\n k++;\n }\n if (!inHole) {\n insidePoly = true;\n }\n }\n }\n return insidePoly;\n}\nexports.default = booleanPointInPolygon;\n/**\n * inRing\n *\n * @private\n * @param {Array} pt [x,y]\n * @param {Array>} ring [[x,y], [x,y],..]\n * @param {boolean} ignoreBoundary ignoreBoundary\n * @returns {boolean} inRing\n */\nfunction inRing(pt, ring, ignoreBoundary) {\n var isInside = false;\n if (ring[0][0] === ring[ring.length - 1][0] && ring[0][1] === ring[ring.length - 1][1]) {\n ring = ring.slice(0, ring.length - 1);\n }\n for (var i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n var xi = ring[i][0];\n var yi = ring[i][1];\n var xj = ring[j][0];\n var yj = ring[j][1];\n var onBoundary = (pt[1] * (xi - xj) + yi * (xj - pt[0]) + yj * (pt[0] - xi) === 0) &&\n ((xi - pt[0]) * (xj - pt[0]) <= 0) && ((yi - pt[1]) * (yj - pt[1]) <= 0);\n if (onBoundary) {\n return !ignoreBoundary;\n }\n var intersect = ((yi > pt[1]) !== (yj > pt[1])) &&\n (pt[0] < (xj - xi) * (pt[1] - yi) / (yj - yi) + xi);\n if (intersect) {\n isInside = !isInside;\n }\n }\n return isInside;\n}\n/**\n * inBBox\n *\n * @private\n * @param {Position} pt point [x,y]\n * @param {BBox} bbox BBox [west, south, east, north]\n * @returns {boolean} true/false if point is inside BBox\n */\nfunction inBBox(pt, bbox) {\n return bbox[0] <= pt[0] &&\n bbox[1] <= pt[1] &&\n bbox[2] >= pt[0] &&\n bbox[3] >= pt[1];\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ExtrudeMode = void 0;\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _utils = require(\"../utils\");\n\nvar _modifyMode = require(\"./modify-mode\");\n\nvar _immutableFeatureCollection = require(\"./immutable-feature-collection\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ExtrudeMode = /*#__PURE__*/function (_ModifyMode) {\n _inherits(ExtrudeMode, _ModifyMode);\n\n var _super = _createSuper(ExtrudeMode);\n\n function ExtrudeMode() {\n var _this;\n\n _classCallCheck(this, ExtrudeMode);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"isPointAdded\", false);\n\n return _this;\n }\n\n _createClass(ExtrudeMode, [{\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks);\n\n if (editHandle) {\n var featureIndex = editHandle.properties.featureIndex;\n var positionIndexes = editHandle.properties.positionIndexes;\n var size = this.coordinatesSize(positionIndexes, featureIndex, props.data);\n positionIndexes = this.isPointAdded ? this.nextPositionIndexes(positionIndexes, size) : positionIndexes; // p1 and p1 are end points for edge\n\n var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, props.data);\n var p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data);\n\n if (p1 && p2) {\n // p3 and p4 are end points for moving (extruding) edge\n var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, event.mapCoords),\n _generatePointsParall2 = _slicedToArray(_generatePointsParall, 2),\n p3 = _generatePointsParall2[0],\n p4 = _generatePointsParall2[1];\n\n var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replacePosition(featureIndex, this.prevPositionIndexes(positionIndexes, size), p4).replacePosition(featureIndex, positionIndexes, p3).getObject();\n props.onEdit({\n updatedData: updatedData,\n editType: 'extruding',\n editContext: {\n featureIndexes: [featureIndex],\n positionIndexes: this.nextPositionIndexes(positionIndexes, size),\n position: p3\n }\n });\n event.cancelPan();\n }\n }\n }\n }, {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n var selectedFeatureIndexes = props.selectedIndexes;\n var editHandle = (0, _utils.getPickedIntermediateEditHandle)(event.picks);\n\n if (selectedFeatureIndexes.length && editHandle) {\n var _editHandle$propertie = editHandle.properties,\n positionIndexes = _editHandle$propertie.positionIndexes,\n featureIndex = _editHandle$propertie.featureIndex;\n var size = this.coordinatesSize(positionIndexes, featureIndex, props.data); // p1 and p1 are end points for edge\n\n var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, props.data);\n var p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data);\n\n if (p1 && p2) {\n var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data);\n\n if (!this.isOrthogonal(positionIndexes, featureIndex, size, props.data)) {\n updatedData = updatedData.addPosition(featureIndex, positionIndexes, p2);\n }\n\n if (!this.isOrthogonal(this.prevPositionIndexes(positionIndexes, size), featureIndex, size, props.data)) {\n updatedData = updatedData.addPosition(featureIndex, positionIndexes, p1);\n this.isPointAdded = true;\n }\n\n props.onEdit({\n updatedData: updatedData.getObject(),\n editType: 'startExtruding',\n editContext: {\n featureIndexes: [featureIndex],\n positionIndexes: positionIndexes,\n position: p1\n }\n });\n }\n }\n }\n }, {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n var selectedFeatureIndexes = props.selectedIndexes;\n var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks);\n\n if (selectedFeatureIndexes.length && editHandle) {\n var featureIndex = editHandle.properties.featureIndex;\n var positionIndexes = editHandle.properties.positionIndexes;\n var size = this.coordinatesSize(positionIndexes, featureIndex, props.data);\n positionIndexes = this.isPointAdded ? this.nextPositionIndexes(positionIndexes, size) : positionIndexes; // p1 and p1 are end points for edge\n\n var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, props.data);\n var p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data);\n\n if (p1 && p2) {\n // p3 and p4 are end points for new moved (extruded) edge\n var _generatePointsParall3 = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, event.mapCoords),\n _generatePointsParall4 = _slicedToArray(_generatePointsParall3, 2),\n p3 = _generatePointsParall4[0],\n p4 = _generatePointsParall4[1];\n\n var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replacePosition(featureIndex, this.prevPositionIndexes(positionIndexes, size), p4).replacePosition(featureIndex, positionIndexes, p3).getObject();\n props.onEdit({\n updatedData: updatedData,\n editType: 'extruded',\n editContext: {\n featureIndexes: [featureIndex],\n positionIndexes: positionIndexes,\n position: p3\n }\n });\n }\n }\n\n this.isPointAdded = false;\n }\n }, {\n key: \"coordinatesSize\",\n value: function coordinatesSize(positionIndexes, featureIndex, _ref) {\n var features = _ref.features;\n var size = 0;\n\n if (Array.isArray(positionIndexes)) {\n var feature = features[featureIndex];\n var coordinates = feature.geometry.coordinates; // for Multi polygons, length will be 3\n\n if (positionIndexes.length === 3) {\n var _positionIndexes = _slicedToArray(positionIndexes, 2),\n a = _positionIndexes[0],\n b = _positionIndexes[1];\n\n if (coordinates.length && coordinates[a].length) {\n size = coordinates[a][b].length;\n }\n } else {\n var _positionIndexes2 = _slicedToArray(positionIndexes, 1),\n _b = _positionIndexes2[0];\n\n if (coordinates.length && coordinates[_b].length) {\n size = coordinates[_b].length;\n }\n }\n }\n\n return size;\n }\n }, {\n key: \"getBearing\",\n value: function getBearing(p1, p2) {\n var angle = (0, _bearing[\"default\"])(p1, p2);\n\n if (angle < 0) {\n return Math.floor(360 + angle);\n }\n\n return Math.floor(angle);\n }\n }, {\n key: \"isOrthogonal\",\n value: function isOrthogonal(positionIndexes, featureIndex, size, features) {\n if (!Array.isArray(positionIndexes)) {\n return false;\n }\n\n if (positionIndexes[positionIndexes.length - 1] === size - 1) {\n positionIndexes[positionIndexes.length - 1] = 0;\n }\n\n var prevPoint = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, features);\n var nextPoint = this.getPointForPositionIndexes(this.nextPositionIndexes(positionIndexes, size), featureIndex, features);\n var currentPoint = this.getPointForPositionIndexes(positionIndexes, featureIndex, features);\n var prevAngle = this.getBearing(currentPoint, prevPoint);\n var nextAngle = this.getBearing(currentPoint, nextPoint);\n return [89, 90, 91, 269, 270, 271].includes(Math.abs(prevAngle - nextAngle));\n }\n }, {\n key: \"nextPositionIndexes\",\n value: function nextPositionIndexes(positionIndexes, size) {\n if (!Array.isArray(positionIndexes)) {\n return [];\n }\n\n var next = _toConsumableArray(positionIndexes);\n\n if (next.length) {\n next[next.length - 1] = next[next.length - 1] === size - 1 ? 0 : next[next.length - 1] + 1;\n }\n\n return next;\n }\n }, {\n key: \"prevPositionIndexes\",\n value: function prevPositionIndexes(positionIndexes, size) {\n if (!Array.isArray(positionIndexes)) {\n return [];\n }\n\n var prev = _toConsumableArray(positionIndexes);\n\n if (prev.length) {\n prev[prev.length - 1] = prev[prev.length - 1] === 0 ? size - 2 : prev[prev.length - 1] - 1;\n }\n\n return prev;\n }\n }, {\n key: \"getPointForPositionIndexes\",\n value: function getPointForPositionIndexes(positionIndexes, featureIndex, _ref2) {\n var features = _ref2.features;\n var p1;\n\n if (Array.isArray(positionIndexes)) {\n var feature = features[featureIndex];\n var coordinates = feature.geometry.coordinates; // for Multi polygons, length will be 3\n\n if (positionIndexes.length === 3) {\n var _positionIndexes3 = _slicedToArray(positionIndexes, 3),\n a = _positionIndexes3[0],\n b = _positionIndexes3[1],\n c = _positionIndexes3[2];\n\n if (coordinates.length && coordinates[a].length) {\n p1 = coordinates[a][b][c];\n }\n } else {\n var _positionIndexes4 = _slicedToArray(positionIndexes, 2),\n _b2 = _positionIndexes4[0],\n _c = _positionIndexes4[1];\n\n if (coordinates.length && coordinates[_b2].length) {\n p1 = coordinates[_b2][_c];\n }\n }\n }\n\n return p1;\n }\n }]);\n\n return ExtrudeMode;\n}(_modifyMode.ModifyMode);\n\nexports.ExtrudeMode = ExtrudeMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZXh0cnVkZS1tb2RlLnRzIl0sIm5hbWVzIjpbIkV4dHJ1ZGVNb2RlIiwiZXZlbnQiLCJwcm9wcyIsImVkaXRIYW5kbGUiLCJwb2ludGVyRG93blBpY2tzIiwiZmVhdHVyZUluZGV4IiwicHJvcGVydGllcyIsInBvc2l0aW9uSW5kZXhlcyIsInNpemUiLCJjb29yZGluYXRlc1NpemUiLCJkYXRhIiwiaXNQb2ludEFkZGVkIiwibmV4dFBvc2l0aW9uSW5kZXhlcyIsInAxIiwiZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMiLCJwcmV2UG9zaXRpb25JbmRleGVzIiwicDIiLCJtYXBDb29yZHMiLCJwMyIsInA0IiwidXBkYXRlZERhdGEiLCJJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsInJlcGxhY2VQb3NpdGlvbiIsImdldE9iamVjdCIsIm9uRWRpdCIsImVkaXRUeXBlIiwiZWRpdENvbnRleHQiLCJmZWF0dXJlSW5kZXhlcyIsInBvc2l0aW9uIiwiY2FuY2VsUGFuIiwic2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsInNlbGVjdGVkSW5kZXhlcyIsInBpY2tzIiwibGVuZ3RoIiwiaXNPcnRob2dvbmFsIiwiYWRkUG9zaXRpb24iLCJmZWF0dXJlcyIsIkFycmF5IiwiaXNBcnJheSIsImZlYXR1cmUiLCJjb29yZGluYXRlcyIsImdlb21ldHJ5IiwiYSIsImIiLCJhbmdsZSIsIk1hdGgiLCJmbG9vciIsInByZXZQb2ludCIsIm5leHRQb2ludCIsImN1cnJlbnRQb2ludCIsInByZXZBbmdsZSIsImdldEJlYXJpbmciLCJuZXh0QW5nbGUiLCJpbmNsdWRlcyIsImFicyIsIm5leHQiLCJwcmV2IiwiYyIsIk1vZGlmeU1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFPQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLFc7Ozs7Ozs7Ozs7Ozs7Ozs7bUVBR0ks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Q0FBZVYsTUFBekMsRUFBaUQ7QUFDL0NwQixZQUFBQSxFQUFFLEdBQUcyQixXQUFXLENBQUNHLEdBQUQsQ0FBWCxDQUFlYyxFQUFmLENBQUw7QUFDRDtBQUNGO0FBQ0Y7O0FBQ0QsYUFBTzVDLEVBQVA7QUFDRDs7OztFQWpQOEI2QyxzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiZWFyaW5nIGZyb20gJ0B0dXJmL2JlYXJpbmcnO1xuaW1wb3J0IHtcbiAgZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyxcbiAgZ2V0UGlja2VkRWRpdEhhbmRsZSxcbiAgZ2V0UGlja2VkSW50ZXJtZWRpYXRlRWRpdEhhbmRsZSxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IE1vZGVQcm9wcywgU3RhcnREcmFnZ2luZ0V2ZW50LCBTdG9wRHJhZ2dpbmdFdmVudCwgRHJhZ2dpbmdFdmVudCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IE1vZGlmeU1vZGUgfSBmcm9tICcuL21vZGlmeS1tb2RlJztcbmltcG9ydCB7IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi9pbW11dGFibGUtZmVhdHVyZS1jb2xsZWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIEV4dHJ1ZGVNb2RlIGV4dGVuZHMgTW9kaWZ5TW9kZSB7XG4gIC8vIHRoaXMgbW9kZSBpcyBidXN0ZWQgPShcblxuICBpc1BvaW50QWRkZWQgPSBmYWxzZTtcblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5wb2ludGVyRG93blBpY2tzKTtcblxuICAgIGlmIChlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCB7IGZlYXR1cmVJbmRleCB9ID0gZWRpdEhhbmRsZS5wcm9wZXJ0aWVzO1xuICAgICAgbGV0IHsgcG9zaXRpb25JbmRleGVzIH0gPSBlZGl0SGFuZGxlLnByb3BlcnRpZXM7XG5cbiAgICAgIGNvbnN0IHNpemUgPSB0aGlzLmNvb3JkaW5hdGVzU2l6ZShwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgcHJvcHMuZGF0YSk7XG4gICAgICBwb3NpdGlvbkluZGV4ZXMgPSB0aGlzLmlzUG9pbnRBZGRlZFxuICAgICAgICA/IHRoaXMubmV4dFBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIHNpemUpXG4gICAgICAgIDogcG9zaXRpb25JbmRleGVzO1xuICAgICAgLy8gcDEgYW5kIHAxIGFyZSBlbmQgcG9pbnRzIGZvciBlZGdlXG4gICAgICBjb25zdCBwMSA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMoXG4gICAgICAgIHRoaXMucHJldlBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIHNpemUpLFxuICAgICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICAgIHByb3BzLmRhdGFcbiAgICAgICk7XG4gICAgICBjb25zdCBwMiA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBmZWF0dXJlSW5kZXgsIHByb3BzLmRhdGEpO1xuICAgICAgaWYgKHAxICYmIHAyKSB7XG4gICAgICAgIC8vIHAzIGFuZCBwNCBhcmUgZW5kIHBvaW50cyBmb3IgbW92aW5nIChleHRydWRpbmcpIGVkZ2VcbiAgICAgICAgY29uc3QgW3AzLCBwNF0gPSBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzKHAxLCBwMiwgZXZlbnQubWFwQ29vcmRzKTtcblxuICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKVxuICAgICAgICAgIC5yZXBsYWNlUG9zaXRpb24oZmVhdHVyZUluZGV4LCB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSwgcDQpXG4gICAgICAgICAgLnJlcGxhY2VQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgcDMpXG4gICAgICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgICAgZWRpdFR5cGU6ICdleHRydWRpbmcnLFxuICAgICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgICBmZWF0dXJlSW5kZXhlczogW2ZlYXR1cmVJbmRleF0sXG4gICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IHRoaXMubmV4dFBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIHNpemUpLFxuICAgICAgICAgICAgcG9zaXRpb246IHAzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGV2ZW50LmNhbmNlbFBhbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuXG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEludGVybWVkaWF0ZUVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgIGlmIChzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCAmJiBlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCB7IHBvc2l0aW9uSW5kZXhlcywgZmVhdHVyZUluZGV4IH0gPSBlZGl0SGFuZGxlLnByb3BlcnRpZXM7XG5cbiAgICAgIGNvbnN0IHNpemUgPSB0aGlzLmNvb3JkaW5hdGVzU2l6ZShwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgcHJvcHMuZGF0YSk7XG4gICAgICAvLyBwMSBhbmQgcDEgYXJlIGVuZCBwb2ludHMgZm9yIGVkZ2VcbiAgICAgIGNvbnN0IHAxID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhcbiAgICAgICAgdGhpcy5wcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgcHJvcHMuZGF0YVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHAyID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgcHJvcHMuZGF0YSk7XG5cbiAgICAgIGlmIChwMSAmJiBwMikge1xuICAgICAgICBsZXQgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSk7XG4gICAgICAgIGlmICghdGhpcy5pc09ydGhvZ29uYWwocG9zaXRpb25JbmRleGVzLCBmZWF0dXJlSW5kZXgsIHNpemUsIHByb3BzLmRhdGEpKSB7XG4gICAgICAgICAgdXBkYXRlZERhdGEgPSB1cGRhdGVkRGF0YS5hZGRQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgcDIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdGhpcy5pc09ydGhvZ29uYWwoXG4gICAgICAgICAgICB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSxcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgICAgIHNpemUsXG4gICAgICAgICAgICBwcm9wcy5kYXRhXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICB1cGRhdGVkRGF0YSA9IHVwZGF0ZWREYXRhLmFkZFBvc2l0aW9uKGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzLCBwMSk7XG4gICAgICAgICAgdGhpcy5pc1BvaW50QWRkZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvcHMub25FZGl0KHtcbiAgICAgICAgICB1cGRhdGVkRGF0YTogdXBkYXRlZERhdGEuZ2V0T2JqZWN0KCksXG4gICAgICAgICAgZWRpdFR5cGU6ICdzdGFydEV4dHJ1ZGluZycsXG4gICAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZmVhdHVyZUluZGV4XSxcbiAgICAgICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBwMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMgPSBwcm9wcy5zZWxlY3RlZEluZGV4ZXM7XG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG4gICAgaWYgKHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubGVuZ3RoICYmIGVkaXRIYW5kbGUpIHtcbiAgICAgIGNvbnN0IHsgZmVhdHVyZUluZGV4IH0gPSBlZGl0SGFuZGxlLnByb3BlcnRpZXM7XG4gICAgICBsZXQgeyBwb3NpdGlvbkluZGV4ZXMgfSA9IGVkaXRIYW5kbGUucHJvcGVydGllcztcblxuICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuY29vcmRpbmF0ZXNTaXplKHBvc2l0aW9uSW5kZXhlcywgZmVhdHVyZUluZGV4LCBwcm9wcy5kYXRhKTtcbiAgICAgIHBvc2l0aW9uSW5kZXhlcyA9IHRoaXMuaXNQb2ludEFkZGVkXG4gICAgICAgID8gdGhpcy5uZXh0UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSlcbiAgICAgICAgOiBwb3NpdGlvbkluZGV4ZXM7XG4gICAgICAvLyBwMSBhbmQgcDEgYXJlIGVuZCBwb2ludHMgZm9yIGVkZ2VcbiAgICAgIGNvbnN0IHAxID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhcbiAgICAgICAgdGhpcy5wcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgcHJvcHMuZGF0YVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHAyID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgcHJvcHMuZGF0YSk7XG5cbiAgICAgIGlmIChwMSAmJiBwMikge1xuICAgICAgICAvLyBwMyBhbmQgcDQgYXJlIGVuZCBwb2ludHMgZm9yIG5ldyBtb3ZlZCAoZXh0cnVkZWQpIGVkZ2VcbiAgICAgICAgY29uc3QgW3AzLCBwNF0gPSBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzKHAxLCBwMiwgZXZlbnQubWFwQ29vcmRzKTtcblxuICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKVxuICAgICAgICAgIC5yZXBsYWNlUG9zaXRpb24oZmVhdHVyZUluZGV4LCB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSwgcDQpXG4gICAgICAgICAgLnJlcGxhY2VQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgcDMpXG4gICAgICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgICAgZWRpdFR5cGU6ICdleHRydWRlZCcsXG4gICAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZmVhdHVyZUluZGV4XSxcbiAgICAgICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBwMyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5pc1BvaW50QWRkZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGNvb3JkaW5hdGVzU2l6ZShcbiAgICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgICB7IGZlYXR1cmVzIH06IEZlYXR1cmVDb2xsZWN0aW9uXG4gICkge1xuICAgIGxldCBzaXplID0gMDtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICBjb25zdCBmZWF0dXJlID0gZmVhdHVyZXNbZmVhdHVyZUluZGV4XTtcbiAgICAgIGNvbnN0IGNvb3JkaW5hdGVzOiBhbnkgPSBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICAgICAgLy8gZm9yIE11bHRpIHBvbHlnb25zLCBsZW5ndGggd2lsbCBiZSAzXG4gICAgICBpZiAocG9zaXRpb25JbmRleGVzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICBjb25zdCBbYSwgYl0gPSBwb3NpdGlvbkluZGV4ZXM7XG4gICAgICAgIGlmIChjb29yZGluYXRlcy5sZW5ndGggJiYgY29vcmRpbmF0ZXNbYV0ubGVuZ3RoKSB7XG4gICAgICAgICAgc2l6ZSA9IGNvb3JkaW5hdGVzW2FdW2JdLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgW2JdID0gcG9zaXRpb25JbmRleGVzO1xuICAgICAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoICYmIGNvb3JkaW5hdGVzW2JdLmxlbmd0aCkge1xuICAgICAgICAgIHNpemUgPSBjb29yZGluYXRlc1tiXS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNpemU7XG4gIH1cblxuICBnZXRCZWFyaW5nKHAxOiBhbnksIHAyOiBhbnkpIHtcbiAgICBjb25zdCBhbmdsZSA9IGJlYXJpbmcocDEsIHAyKTtcbiAgICBpZiAoYW5nbGUgPCAwKSB7XG4gICAgICByZXR1cm4gTWF0aC5mbG9vcigzNjAgKyBhbmdsZSk7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLmZsb29yKGFuZ2xlKTtcbiAgfVxuXG4gIGlzT3J0aG9nb25hbChcbiAgICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgICBzaXplOiBudW1iZXIsXG4gICAgZmVhdHVyZXM6IEZlYXR1cmVDb2xsZWN0aW9uXG4gICkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChwb3NpdGlvbkluZGV4ZXNbcG9zaXRpb25JbmRleGVzLmxlbmd0aCAtIDFdID09PSBzaXplIC0gMSkge1xuICAgICAgcG9zaXRpb25JbmRleGVzW3Bvc2l0aW9uSW5kZXhlcy5sZW5ndGggLSAxXSA9IDA7XG4gICAgfVxuICAgIGNvbnN0IHByZXZQb2ludCA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMoXG4gICAgICB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSxcbiAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgIGZlYXR1cmVzXG4gICAgKTtcbiAgICBjb25zdCBuZXh0UG9pbnQgPSB0aGlzLmdldFBvaW50Rm9yUG9zaXRpb25JbmRleGVzKFxuICAgICAgdGhpcy5uZXh0UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICBmZWF0dXJlc1xuICAgICk7XG4gICAgY29uc3QgY3VycmVudFBvaW50ID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgZmVhdHVyZXMpO1xuICAgIGNvbnN0IHByZXZBbmdsZSA9IHRoaXMuZ2V0QmVhcmluZyhjdXJyZW50UG9pbnQsIHByZXZQb2ludCk7XG4gICAgY29uc3QgbmV4dEFuZ2xlID0gdGhpcy5nZXRCZWFyaW5nKGN1cnJlbnRQb2ludCwgbmV4dFBvaW50KTtcbiAgICByZXR1cm4gWzg5LCA5MCwgOTEsIDI2OSwgMjcwLCAyNzFdLmluY2x1ZGVzKE1hdGguYWJzKHByZXZBbmdsZSAtIG5leHRBbmdsZSkpO1xuICB9XG5cbiAgbmV4dFBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCwgc2l6ZTogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IG5leHQgPSBbLi4ucG9zaXRpb25JbmRleGVzXTtcbiAgICBpZiAobmV4dC5sZW5ndGgpIHtcbiAgICAgIG5leHRbbmV4dC5sZW5ndGggLSAxXSA9IG5leHRbbmV4dC5sZW5ndGggLSAxXSA9PT0gc2l6ZSAtIDEgPyAwIDogbmV4dFtuZXh0Lmxlbmd0aCAtIDFdICsgMTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cblxuICBwcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkLCBzaXplOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBvc2l0aW9uSW5kZXhlcykpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgcHJldiA9IFsuLi5wb3NpdGlvbkluZGV4ZXNdO1xuICAgIGlmIChwcmV2Lmxlbmd0aCkge1xuICAgICAgcHJldltwcmV2Lmxlbmd0aCAtIDFdID0gcHJldltwcmV2Lmxlbmd0aCAtIDFdID09PSAwID8gc2l6ZSAtIDIgOiBwcmV2W3ByZXYubGVuZ3RoIC0gMV0gLSAxO1xuICAgIH1cbiAgICByZXR1cm4gcHJldjtcbiAgfVxuXG4gIGdldFBvaW50Rm9yUG9zaXRpb25JbmRleGVzKFxuICAgIHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIGZlYXR1cmVJbmRleDogbnVtYmVyLFxuICAgIHsgZmVhdHVyZXMgfTogRmVhdHVyZUNvbGxlY3Rpb25cbiAgKSB7XG4gICAgbGV0IHAxO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHBvc2l0aW9uSW5kZXhlcykpIHtcbiAgICAgIGNvbnN0IGZlYXR1cmUgPSBmZWF0dXJlc1tmZWF0dXJlSW5kZXhdO1xuICAgICAgY29uc3QgY29vcmRpbmF0ZXM6IGFueSA9IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgICAvLyBmb3IgTXVsdGkgcG9seWdvbnMsIGxlbmd0aCB3aWxsIGJlIDNcbiAgICAgIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIGNvbnN0IFthLCBiLCBjXSA9IHBvc2l0aW9uSW5kZXhlcztcbiAgICAgICAgaWYgKGNvb3JkaW5hdGVzLmxlbmd0aCAmJiBjb29yZGluYXRlc1thXS5sZW5ndGgpIHtcbiAgICAgICAgICBwMSA9IGNvb3JkaW5hdGVzW2FdW2JdW2NdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBbYiwgY10gPSBwb3NpdGlvbkluZGV4ZXM7XG4gICAgICAgIGlmIChjb29yZGluYXRlcy5sZW5ndGggJiYgY29vcmRpbmF0ZXNbYl0ubGVuZ3RoKSB7XG4gICAgICAgICAgcDEgPSBjb29yZGluYXRlc1tiXVtjXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcDE7XG4gIH1cbn1cbiJdfQ==","import bearing from '@turf/bearing';\nimport {\n generatePointsParallelToLinePoints,\n getPickedEditHandle,\n getPickedIntermediateEditHandle,\n} from '../utils';\nimport { FeatureCollection } from '../geojson-types';\nimport { ModeProps, StartDraggingEvent, StopDraggingEvent, DraggingEvent } from '../types';\nimport { ModifyMode } from './modify-mode';\nimport { ImmutableFeatureCollection } from './immutable-feature-collection';\n\nexport class ExtrudeMode extends ModifyMode {\n // this mode is busted =(\n\n isPointAdded = false;\n\n handleDragging(event: DraggingEvent, props: ModeProps): void {\n const editHandle = getPickedEditHandle(event.pointerDownPicks);\n\n if (editHandle) {\n const { featureIndex } = editHandle.properties;\n let { positionIndexes } = editHandle.properties;\n\n const size = this.coordinatesSize(positionIndexes, featureIndex, props.data);\n positionIndexes = this.isPointAdded\n ? this.nextPositionIndexes(positionIndexes, size)\n : positionIndexes;\n // p1 and p1 are end points for edge\n const p1 = this.getPointForPositionIndexes(\n this.prevPositionIndexes(positionIndexes, size),\n featureIndex,\n props.data\n );\n const p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data);\n if (p1 && p2) {\n // p3 and p4 are end points for moving (extruding) edge\n const [p3, p4] = generatePointsParallelToLinePoints(p1, p2, event.mapCoords);\n\n const updatedData = new ImmutableFeatureCollection(props.data)\n .replacePosition(featureIndex, this.prevPositionIndexes(positionIndexes, size), p4)\n .replacePosition(featureIndex, positionIndexes, p3)\n .getObject();\n\n props.onEdit({\n updatedData,\n editType: 'extruding',\n editContext: {\n featureIndexes: [featureIndex],\n positionIndexes: this.nextPositionIndexes(positionIndexes, size),\n position: p3,\n },\n });\n\n event.cancelPan();\n }\n }\n }\n\n handleStartDragging(event: StartDraggingEvent, props: ModeProps) {\n const selectedFeatureIndexes = props.selectedIndexes;\n\n const editHandle = getPickedIntermediateEditHandle(event.picks);\n if (selectedFeatureIndexes.length && editHandle) {\n const { positionIndexes, featureIndex } = editHandle.properties;\n\n const size = this.coordinatesSize(positionIndexes, featureIndex, props.data);\n // p1 and p1 are end points for edge\n const p1 = this.getPointForPositionIndexes(\n this.prevPositionIndexes(positionIndexes, size),\n featureIndex,\n props.data\n );\n const p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data);\n\n if (p1 && p2) {\n let updatedData = new ImmutableFeatureCollection(props.data);\n if (!this.isOrthogonal(positionIndexes, featureIndex, size, props.data)) {\n updatedData = updatedData.addPosition(featureIndex, positionIndexes, p2);\n }\n if (\n !this.isOrthogonal(\n this.prevPositionIndexes(positionIndexes, size),\n featureIndex,\n size,\n props.data\n )\n ) {\n updatedData = updatedData.addPosition(featureIndex, positionIndexes, p1);\n this.isPointAdded = true;\n }\n\n props.onEdit({\n updatedData: updatedData.getObject(),\n editType: 'startExtruding',\n editContext: {\n featureIndexes: [featureIndex],\n positionIndexes,\n position: p1,\n },\n });\n }\n }\n }\n\n handleStopDragging(event: StopDraggingEvent, props: ModeProps) {\n const selectedFeatureIndexes = props.selectedIndexes;\n const editHandle = getPickedEditHandle(event.pointerDownPicks);\n if (selectedFeatureIndexes.length && editHandle) {\n const { featureIndex } = editHandle.properties;\n let { positionIndexes } = editHandle.properties;\n\n const size = this.coordinatesSize(positionIndexes, featureIndex, props.data);\n positionIndexes = this.isPointAdded\n ? this.nextPositionIndexes(positionIndexes, size)\n : positionIndexes;\n // p1 and p1 are end points for edge\n const p1 = this.getPointForPositionIndexes(\n this.prevPositionIndexes(positionIndexes, size),\n featureIndex,\n props.data\n );\n const p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data);\n\n if (p1 && p2) {\n // p3 and p4 are end points for new moved (extruded) edge\n const [p3, p4] = generatePointsParallelToLinePoints(p1, p2, event.mapCoords);\n\n const updatedData = new ImmutableFeatureCollection(props.data)\n .replacePosition(featureIndex, this.prevPositionIndexes(positionIndexes, size), p4)\n .replacePosition(featureIndex, positionIndexes, p3)\n .getObject();\n\n props.onEdit({\n updatedData,\n editType: 'extruded',\n editContext: {\n featureIndexes: [featureIndex],\n positionIndexes,\n position: p3,\n },\n });\n }\n }\n this.isPointAdded = false;\n }\n\n coordinatesSize(\n positionIndexes: number[] | null | undefined,\n featureIndex: number,\n { features }: FeatureCollection\n ) {\n let size = 0;\n if (Array.isArray(positionIndexes)) {\n const feature = features[featureIndex];\n const coordinates: any = feature.geometry.coordinates;\n // for Multi polygons, length will be 3\n if (positionIndexes.length === 3) {\n const [a, b] = positionIndexes;\n if (coordinates.length && coordinates[a].length) {\n size = coordinates[a][b].length;\n }\n } else {\n const [b] = positionIndexes;\n if (coordinates.length && coordinates[b].length) {\n size = coordinates[b].length;\n }\n }\n }\n return size;\n }\n\n getBearing(p1: any, p2: any) {\n const angle = bearing(p1, p2);\n if (angle < 0) {\n return Math.floor(360 + angle);\n }\n return Math.floor(angle);\n }\n\n isOrthogonal(\n positionIndexes: number[] | null | undefined,\n featureIndex: number,\n size: number,\n features: FeatureCollection\n ) {\n if (!Array.isArray(positionIndexes)) {\n return false;\n }\n if (positionIndexes[positionIndexes.length - 1] === size - 1) {\n positionIndexes[positionIndexes.length - 1] = 0;\n }\n const prevPoint = this.getPointForPositionIndexes(\n this.prevPositionIndexes(positionIndexes, size),\n featureIndex,\n features\n );\n const nextPoint = this.getPointForPositionIndexes(\n this.nextPositionIndexes(positionIndexes, size),\n featureIndex,\n features\n );\n const currentPoint = this.getPointForPositionIndexes(positionIndexes, featureIndex, features);\n const prevAngle = this.getBearing(currentPoint, prevPoint);\n const nextAngle = this.getBearing(currentPoint, nextPoint);\n return [89, 90, 91, 269, 270, 271].includes(Math.abs(prevAngle - nextAngle));\n }\n\n nextPositionIndexes(positionIndexes: number[] | null | undefined, size: number): number[] {\n if (!Array.isArray(positionIndexes)) {\n return [];\n }\n const next = [...positionIndexes];\n if (next.length) {\n next[next.length - 1] = next[next.length - 1] === size - 1 ? 0 : next[next.length - 1] + 1;\n }\n return next;\n }\n\n prevPositionIndexes(positionIndexes: number[] | null | undefined, size: number): number[] {\n if (!Array.isArray(positionIndexes)) {\n return [];\n }\n const prev = [...positionIndexes];\n if (prev.length) {\n prev[prev.length - 1] = prev[prev.length - 1] === 0 ? size - 2 : prev[prev.length - 1] - 1;\n }\n return prev;\n }\n\n getPointForPositionIndexes(\n positionIndexes: number[] | null | undefined,\n featureIndex: number,\n { features }: FeatureCollection\n ) {\n let p1;\n if (Array.isArray(positionIndexes)) {\n const feature = features[featureIndex];\n const coordinates: any = feature.geometry.coordinates;\n // for Multi polygons, length will be 3\n if (positionIndexes.length === 3) {\n const [a, b, c] = positionIndexes;\n if (coordinates.length && coordinates[a].length) {\n p1 = coordinates[a][b][c];\n }\n } else {\n const [b, c] = positionIndexes;\n if (coordinates.length && coordinates[b].length) {\n p1 = coordinates[b][c];\n }\n }\n }\n return p1;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ElevationMode = void 0;\n\nvar _utils = require(\"../utils\");\n\nvar _modifyMode = require(\"./modify-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction defaultCalculateElevationChange(_ref) {\n var pointerDownScreenCoords = _ref.pointerDownScreenCoords,\n screenCoords = _ref.screenCoords;\n return 10 * (pointerDownScreenCoords[1] - screenCoords[1]);\n}\n\nvar ElevationMode = /*#__PURE__*/function (_ModifyMode) {\n _inherits(ElevationMode, _ModifyMode);\n\n var _super = _createSuper(ElevationMode);\n\n function ElevationMode() {\n _classCallCheck(this, ElevationMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(ElevationMode, [{\n key: \"makeElevatedEvent\",\n value: function makeElevatedEvent(event, position, props) {\n var _ref2 = props.modeConfig || {},\n _ref2$minElevation = _ref2.minElevation,\n minElevation = _ref2$minElevation === void 0 ? 0 : _ref2$minElevation,\n _ref2$maxElevation = _ref2.maxElevation,\n maxElevation = _ref2$maxElevation === void 0 ? 20000 : _ref2$maxElevation,\n _ref2$calculateElevat = _ref2.calculateElevationChange,\n calculateElevationChange = _ref2$calculateElevat === void 0 ? defaultCalculateElevationChange : _ref2$calculateElevat;\n\n if (!event.pointerDownScreenCoords) {\n return event;\n } // $FlowFixMe - really, I know it has something at index 2\n\n\n var elevation = position.length === 3 ? position[2] : 0; // calculateElevationChange is configurable because (at this time) modes are not aware of the viewport\n\n elevation += calculateElevationChange({\n pointerDownScreenCoords: event.pointerDownScreenCoords,\n screenCoords: event.screenCoords\n });\n elevation = Math.min(elevation, maxElevation);\n elevation = Math.max(elevation, minElevation);\n return Object.assign({}, event, {\n mapCoords: [position[0], position[1], elevation]\n });\n }\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks);\n var position = editHandle ? editHandle.geometry.coordinates : event.mapCoords; // @ts-ignore\n\n _get(_getPrototypeOf(ElevationMode.prototype), \"handlePointerMove\", this).call(this, this.makeElevatedEvent(event, position, props), props);\n }\n }, {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n var editHandle = (0, _utils.getPickedEditHandle)(event.picks);\n var position = editHandle ? editHandle.geometry.coordinates : event.mapCoords; // @ts-ignore\n\n _get(_getPrototypeOf(ElevationMode.prototype), \"handleStopDragging\", this).call(this, this.makeElevatedEvent(event, position, props), props);\n }\n }, {\n key: \"getCursor\",\n value: function getCursor(event) {\n var cursor = _get(_getPrototypeOf(ElevationMode.prototype), \"getCursor\", this).call(this, event);\n\n if (cursor === 'cell') {\n cursor = 'ns-resize';\n }\n\n return cursor;\n }\n }], [{\n key: \"calculateElevationChangeWithViewport\",\n value: function calculateElevationChangeWithViewport(viewport, _ref3) {\n var pointerDownScreenCoords = _ref3.pointerDownScreenCoords,\n screenCoords = _ref3.screenCoords;\n // Source: https://gis.stackexchange.com/a/127949/111804\n var metersPerPixel = 156543.03392 * Math.cos(viewport.latitude * Math.PI / 180) / Math.pow(2, viewport.zoom);\n return metersPerPixel * (pointerDownScreenCoords[1] - screenCoords[1]) / 2;\n }\n }]);\n\n return ElevationMode;\n}(_modifyMode.ModifyMode);\n\nexports.ElevationMode = ElevationMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZWxldmF0aW9uLW1vZGUudHMiXSwibmFtZXMiOlsiZGVmYXVsdENhbGN1bGF0ZUVsZXZhdGlvbkNoYW5nZSIsInBvaW50ZXJEb3duU2NyZWVuQ29vcmRzIiwic2NyZWVuQ29vcmRzIiwiRWxldmF0aW9uTW9kZSIsImV2ZW50IiwicG9zaXRpb24iLCJwcm9wcyIsIm1vZGVDb25maWciLCJtaW5FbGV2YXRpb24iLCJtYXhFbGV2YXRpb24iLCJjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2UiLCJlbGV2YXRpb24iLCJsZW5ndGgiLCJNYXRoIiwibWluIiwibWF4IiwiT2JqZWN0IiwiYXNzaWduIiwibWFwQ29vcmRzIiwiZWRpdEhhbmRsZSIsInBvaW50ZXJEb3duUGlja3MiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwibWFrZUVsZXZhdGVkRXZlbnQiLCJwaWNrcyIsImN1cnNvciIsInZpZXdwb3J0IiwibWV0ZXJzUGVyUGl4ZWwiLCJjb3MiLCJsYXRpdHVkZSIsIlBJIiwicG93Iiwiem9vbSIsIk1vZGlmeU1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFNBQVNBLCtCQUFULE9BTUc7QUFBQSxNQUxEQyx1QkFLQyxRQUxEQSx1QkFLQztBQUFBLE1BSkRDLFlBSUMsUUFKREEsWUFJQztBQUNELFNBQU8sTUFBTUQsdUJBQXVCLENBQUMsQ0FBRCxDQUF2QixHQUE2QkMsWUFBWSxDQUFDLENBQUQsQ0FBL0MsQ0FBUDtBQUNEOztJQUVZQyxhOzs7Ozs7Ozs7Ozs7O3NDQUVUQyxLLEVBQ0FDLFEsRUFDQUMsSyxFQUNxQjtBQUFBLGtCQUtqQkEsS0FBSyxDQUFDQyxVQUFOLElBQW9CLEVBTEg7QUFBQSxxQ0FFbkJDLFlBRm1CO0FBQUEsVUFFbkJBLFlBRm1CLG1DQUVKLENBRkk7QUFBQSxxQ0FHbkJDLFlBSG1CO0FBQUEsVUFHbkJBLFlBSG1CLG1DQUdKLEtBSEk7QUFBQSx3Q0FJbkJDLHdCQUptQjtBQUFBLFVBSW5CQSx3QkFKbUIsc0NBSVFWLCtCQUpSOztBQU9yQixVQUFJLENBQUNJLEtBQUssQ0FBQ0gsdUJBQVgsRUFBb0M7QUFDbEMsZUFBT0csS0FBUDtBQUNELE9BVG9CLENBV3JCOzs7QUFDQSxVQUFJTyxTQUFTLEdBQUdOLFFBQVEsQ0FBQ08sTUFBVCxLQUFvQixDQUFwQixHQUF3QlAsUUFBUSxDQUFDLENBQUQsQ0FBaEMsR0FBc0MsQ0FBdEQsQ0FacUIsQ0FjckI7O0FBQ0FNLE1BQUFBLFNBQVMsSUFBSUQsd0JBQXdCLENBQUM7QUFDcENULFFBQUFBLHVCQUF1QixFQUFFRyxLQUFLLENBQUNILHVCQURLO0FBRXBDQyxRQUFBQSxZQUFZLEVBQUVFLEtBQUssQ0FBQ0Y7QUFGZ0IsT0FBRCxDQUFyQztBQUlBUyxNQUFBQSxTQUFTLEdBQUdFLElBQUksQ0FBQ0MsR0FBTCxDQUFTSCxTQUFULEVBQW9CRixZQUFwQixDQUFaO0FBQ0FFLE1BQUFBLFNBQVMsR0FBR0UsSUFBSSxDQUFDRSxHQUFMLENBQVNKLFNBQVQsRUFBb0JILFlBQXBCLENBQVo7QUFFQSxhQUFPUSxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCYixLQUFsQixFQUF5QjtBQUM5QmMsUUFBQUEsU0FBUyxFQUFFLENBQUNiLFFBQVEsQ0FBQyxDQUFELENBQVQsRUFBY0EsUUFBUSxDQUFDLENBQUQsQ0FBdEIsRUFBMkJNLFNBQTNCO0FBRG1CLE9BQXpCLENBQVA7QUFHRDs7O3NDQUVpQlAsSyxFQUF5QkUsSyxFQUFxQztBQUM5RSxVQUFNYSxVQUFVLEdBQUcsZ0NBQW9CZixLQUFLLENBQUNnQixnQkFBMUIsQ0FBbkI7QUFDQSxVQUFNZixRQUFRLEdBQUdjLFVBQVUsR0FBR0EsVUFBVSxDQUFDRSxRQUFYLENBQW9CQyxXQUF2QixHQUFxQ2xCLEtBQUssQ0FBQ2MsU0FBdEUsQ0FGOEUsQ0FHOUU7O0FBQ0EsMkZBQXdCLEtBQUtLLGlCQUFMLENBQXVCbkIsS0FBdkIsRUFBOEJDLFFBQTlCLEVBQXdDQyxLQUF4QyxDQUF4QixFQUF3RUEsS0FBeEU7QUFDRDs7O3VDQUVrQkYsSyxFQUEwQkUsSyxFQUFxQztBQUNoRixVQUFNYSxVQUFVLEdBQUcsZ0NBQW9CZixLQUFLLENBQUNvQixLQUExQixDQUFuQjtBQUNBLFVBQU1uQixRQUFRLEdBQUdjLFVBQVUsR0FBR0EsVUFBVSxDQUFDRSxRQUFYLENBQW9CQyxXQUF2QixHQUFxQ2xCLEtBQUssQ0FBQ2MsU0FBdEUsQ0FGZ0YsQ0FHaEY7O0FBQ0EsNEZBQXlCLEtBQUtLLGlCQUFMLENBQXVCbkIsS0FBdkIsRUFBOEJDLFFBQTlCLEVBQXdDQyxLQUF4QyxDQUF6QixFQUF5RUEsS0FBekU7QUFDRDs7OzhCQUVTRixLLEVBQW9EO0FBQzVELFVBQUlxQixNQUFNLGdGQUFtQnJCLEtBQW5CLENBQVY7O0FBQ0EsVUFBSXFCLE1BQU0sS0FBSyxNQUFmLEVBQXVCO0FBQ3JCQSxRQUFBQSxNQUFNLEdBQUcsV0FBVDtBQUNEOztBQUNELGFBQU9BLE1BQVA7QUFDRDs7O3lEQUdDQyxRLFNBUVE7QUFBQSxVQU5OekIsdUJBTU0sU0FOTkEsdUJBTU07QUFBQSxVQUxOQyxZQUtNLFNBTE5BLFlBS007QUFDUjtBQUNBLFVBQU15QixjQUFjLEdBQ2pCLGVBQWVkLElBQUksQ0FBQ2UsR0FBTCxDQUFVRixRQUFRLENBQUNHLFFBQVQsR0FBb0JoQixJQUFJLENBQUNpQixFQUExQixHQUFnQyxHQUF6QyxDQUFoQixHQUFpRWpCLElBQUksQ0FBQ2tCLEdBQUwsQ0FBUyxDQUFULEVBQVlMLFFBQVEsQ0FBQ00sSUFBckIsQ0FEbkU7QUFHQSxhQUFRTCxjQUFjLElBQUkxQix1QkFBdUIsQ0FBQyxDQUFELENBQXZCLEdBQTZCQyxZQUFZLENBQUMsQ0FBRCxDQUE3QyxDQUFmLEdBQW9FLENBQTNFO0FBQ0Q7Ozs7RUFyRWdDK0Isc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlUHJvcHMsIFBvaW50ZXJNb3ZlRXZlbnQsIFN0b3BEcmFnZ2luZ0V2ZW50IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUG9zaXRpb24sIEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBnZXRQaWNrZWRFZGl0SGFuZGxlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgTW9kaWZ5TW9kZSB9IGZyb20gJy4vbW9kaWZ5LW1vZGUnO1xuXG5mdW5jdGlvbiBkZWZhdWx0Q2FsY3VsYXRlRWxldmF0aW9uQ2hhbmdlKHtcbiAgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gIHNjcmVlbkNvb3Jkcyxcbn06IHtcbiAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IFBvc2l0aW9uO1xuICBzY3JlZW5Db29yZHM6IFBvc2l0aW9uO1xufSkge1xuICByZXR1cm4gMTAgKiAocG9pbnRlckRvd25TY3JlZW5Db29yZHNbMV0gLSBzY3JlZW5Db29yZHNbMV0pO1xufVxuXG5leHBvcnQgY2xhc3MgRWxldmF0aW9uTW9kZSBleHRlbmRzIE1vZGlmeU1vZGUge1xuICBtYWtlRWxldmF0ZWRFdmVudChcbiAgICBldmVudDogUG9pbnRlck1vdmVFdmVudCB8IFN0b3BEcmFnZ2luZ0V2ZW50LFxuICAgIHBvc2l0aW9uOiBQb3NpdGlvbixcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBjb25zdCB7XG4gICAgICBtaW5FbGV2YXRpb24gPSAwLFxuICAgICAgbWF4RWxldmF0aW9uID0gMjAwMDAsXG4gICAgICBjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2UgPSBkZWZhdWx0Q2FsY3VsYXRlRWxldmF0aW9uQ2hhbmdlLFxuICAgIH0gPSBwcm9wcy5tb2RlQ29uZmlnIHx8IHt9O1xuXG4gICAgaWYgKCFldmVudC5wb2ludGVyRG93blNjcmVlbkNvb3Jkcykge1xuICAgICAgcmV0dXJuIGV2ZW50O1xuICAgIH1cblxuICAgIC8vICRGbG93Rml4TWUgLSByZWFsbHksIEkga25vdyBpdCBoYXMgc29tZXRoaW5nIGF0IGluZGV4IDJcbiAgICBsZXQgZWxldmF0aW9uID0gcG9zaXRpb24ubGVuZ3RoID09PSAzID8gcG9zaXRpb25bMl0gOiAwO1xuXG4gICAgLy8gY2FsY3VsYXRlRWxldmF0aW9uQ2hhbmdlIGlzIGNvbmZpZ3VyYWJsZSBiZWNhdXNlIChhdCB0aGlzIHRpbWUpIG1vZGVzIGFyZSBub3QgYXdhcmUgb2YgdGhlIHZpZXdwb3J0XG4gICAgZWxldmF0aW9uICs9IGNhbGN1bGF0ZUVsZXZhdGlvbkNoYW5nZSh7XG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogZXZlbnQucG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gICAgICBzY3JlZW5Db29yZHM6IGV2ZW50LnNjcmVlbkNvb3JkcyxcbiAgICB9KTtcbiAgICBlbGV2YXRpb24gPSBNYXRoLm1pbihlbGV2YXRpb24sIG1heEVsZXZhdGlvbik7XG4gICAgZWxldmF0aW9uID0gTWF0aC5tYXgoZWxldmF0aW9uLCBtaW5FbGV2YXRpb24pO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGV2ZW50LCB7XG4gICAgICBtYXBDb29yZHM6IFtwb3NpdGlvblswXSwgcG9zaXRpb25bMV0sIGVsZXZhdGlvbl0sXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5wb2ludGVyRG93blBpY2tzKTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGVkaXRIYW5kbGUgPyBlZGl0SGFuZGxlLmdlb21ldHJ5LmNvb3JkaW5hdGVzIDogZXZlbnQubWFwQ29vcmRzO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzdXBlci5oYW5kbGVQb2ludGVyTW92ZSh0aGlzLm1ha2VFbGV2YXRlZEV2ZW50KGV2ZW50LCBwb3NpdGlvbiwgcHJvcHMpLCBwcm9wcyk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IGVkaXRIYW5kbGUgPSBnZXRQaWNrZWRFZGl0SGFuZGxlKGV2ZW50LnBpY2tzKTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGVkaXRIYW5kbGUgPyBlZGl0SGFuZGxlLmdlb21ldHJ5LmNvb3JkaW5hdGVzIDogZXZlbnQubWFwQ29vcmRzO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzdXBlci5oYW5kbGVTdG9wRHJhZ2dpbmcodGhpcy5tYWtlRWxldmF0ZWRFdmVudChldmVudCwgcG9zaXRpb24sIHByb3BzKSwgcHJvcHMpO1xuICB9XG5cbiAgZ2V0Q3Vyc29yKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50KTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGN1cnNvciA9IHN1cGVyLmdldEN1cnNvcihldmVudCk7XG4gICAgaWYgKGN1cnNvciA9PT0gJ2NlbGwnKSB7XG4gICAgICBjdXJzb3IgPSAnbnMtcmVzaXplJztcbiAgICB9XG4gICAgcmV0dXJuIGN1cnNvcjtcbiAgfVxuXG4gIHN0YXRpYyBjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2VXaXRoVmlld3BvcnQoXG4gICAgdmlld3BvcnQ6IGFueSxcbiAgICB7XG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkcyxcbiAgICAgIHNjcmVlbkNvb3JkcyxcbiAgICB9OiB7XG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogUG9zaXRpb247XG4gICAgICBzY3JlZW5Db29yZHM6IFBvc2l0aW9uO1xuICAgIH1cbiAgKTogbnVtYmVyIHtcbiAgICAvLyBTb3VyY2U6IGh0dHBzOi8vZ2lzLnN0YWNrZXhjaGFuZ2UuY29tL2EvMTI3OTQ5LzExMTgwNFxuICAgIGNvbnN0IG1ldGVyc1BlclBpeGVsID1cbiAgICAgICgxNTY1NDMuMDMzOTIgKiBNYXRoLmNvcygodmlld3BvcnQubGF0aXR1ZGUgKiBNYXRoLlBJKSAvIDE4MCkpIC8gTWF0aC5wb3coMiwgdmlld3BvcnQuem9vbSk7XG5cbiAgICByZXR1cm4gKG1ldGVyc1BlclBpeGVsICogKHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzWzFdIC0gc2NyZWVuQ29vcmRzWzFdKSkgLyAyO1xuICB9XG59XG4iXX0=","import { ModeProps, PointerMoveEvent, StopDraggingEvent } from '../types';\nimport { Position, FeatureCollection } from '../geojson-types';\nimport { getPickedEditHandle } from '../utils';\nimport { ModifyMode } from './modify-mode';\n\nfunction defaultCalculateElevationChange({\n pointerDownScreenCoords,\n screenCoords,\n}: {\n pointerDownScreenCoords: Position;\n screenCoords: Position;\n}) {\n return 10 * (pointerDownScreenCoords[1] - screenCoords[1]);\n}\n\nexport class ElevationMode extends ModifyMode {\n makeElevatedEvent(\n event: PointerMoveEvent | StopDraggingEvent,\n position: Position,\n props: ModeProps\n ): Record {\n const {\n minElevation = 0,\n maxElevation = 20000,\n calculateElevationChange = defaultCalculateElevationChange,\n } = props.modeConfig || {};\n\n if (!event.pointerDownScreenCoords) {\n return event;\n }\n\n // $FlowFixMe - really, I know it has something at index 2\n let elevation = position.length === 3 ? position[2] : 0;\n\n // calculateElevationChange is configurable because (at this time) modes are not aware of the viewport\n elevation += calculateElevationChange({\n pointerDownScreenCoords: event.pointerDownScreenCoords,\n screenCoords: event.screenCoords,\n });\n elevation = Math.min(elevation, maxElevation);\n elevation = Math.max(elevation, minElevation);\n\n return Object.assign({}, event, {\n mapCoords: [position[0], position[1], elevation],\n });\n }\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps) {\n const editHandle = getPickedEditHandle(event.pointerDownPicks);\n const position = editHandle ? editHandle.geometry.coordinates : event.mapCoords;\n // @ts-ignore\n super.handlePointerMove(this.makeElevatedEvent(event, position, props), props);\n }\n\n handleStopDragging(event: StopDraggingEvent, props: ModeProps) {\n const editHandle = getPickedEditHandle(event.picks);\n const position = editHandle ? editHandle.geometry.coordinates : event.mapCoords;\n // @ts-ignore\n super.handleStopDragging(this.makeElevatedEvent(event, position, props), props);\n }\n\n getCursor(event: PointerMoveEvent): string | null | undefined {\n let cursor = super.getCursor(event);\n if (cursor === 'cell') {\n cursor = 'ns-resize';\n }\n return cursor;\n }\n\n static calculateElevationChangeWithViewport(\n viewport: any,\n {\n pointerDownScreenCoords,\n screenCoords,\n }: {\n pointerDownScreenCoords: Position;\n screenCoords: Position;\n }\n ): number {\n // Source: https://gis.stackexchange.com/a/127949/111804\n const metersPerPixel =\n (156543.03392 * Math.cos((viewport.latitude * Math.PI) / 180)) / Math.pow(2, viewport.zoom);\n\n return (metersPerPixel * (pointerDownScreenCoords[1] - screenCoords[1])) / 2;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TransformMode = void 0;\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _translateMode = require(\"./translate-mode\");\n\nvar _scaleMode = require(\"./scale-mode\");\n\nvar _rotateMode = require(\"./rotate-mode\");\n\nvar _compositeMode = require(\"./composite-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar TransformMode = /*#__PURE__*/function (_CompositeMode) {\n _inherits(TransformMode, _CompositeMode);\n\n var _super = _createSuper(TransformMode);\n\n function TransformMode() {\n _classCallCheck(this, TransformMode);\n\n return _super.call(this, [new _translateMode.TranslateMode(), new _scaleMode.ScaleMode(), new _rotateMode.RotateMode()]);\n }\n\n _createClass(TransformMode, [{\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n var updatedCursor = null;\n\n _get(_getPrototypeOf(TransformMode.prototype), \"handlePointerMove\", this).call(this, event, _objectSpread({}, props, {\n onUpdateCursor: function onUpdateCursor(cursor) {\n updatedCursor = cursor || updatedCursor;\n }\n }));\n\n props.onUpdateCursor(updatedCursor);\n }\n }, {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n var scaleMode = null;\n var translateMode = null;\n var filteredModes = []; // If the user selects a scaling edit handle that overlaps with part of the selected feature,\n // it is possible for both scale and translate actions to be triggered. This logic prevents\n // this simultaneous action trigger from happening by putting a higher priority on scaling\n // since the user needs to be more precise to hover over a scaling edit handle.\n\n this._modes.forEach(function (mode) {\n if (mode instanceof _translateMode.TranslateMode) {\n translateMode = mode;\n } else {\n if (mode instanceof _scaleMode.ScaleMode) {\n scaleMode = mode;\n }\n\n filteredModes.push(mode);\n }\n });\n\n if (scaleMode instanceof _scaleMode.ScaleMode && !scaleMode.isEditHandleSelected()) {\n filteredModes.push(translateMode);\n }\n\n filteredModes.filter(Boolean).forEach(function (mode) {\n return mode.handleStartDragging(event, props);\n });\n }\n }, {\n key: \"getGuides\",\n value: function getGuides(props) {\n var compositeGuides = _get(_getPrototypeOf(TransformMode.prototype), \"getGuides\", this).call(this, props);\n\n var rotateMode = (this._modes || []).find(function (mode) {\n return mode instanceof _rotateMode.RotateMode;\n });\n\n if (rotateMode instanceof _rotateMode.RotateMode) {\n var nonEnvelopeGuides = compositeGuides.features.filter(function (guide) {\n var _ref = guide.properties || {},\n editHandleType = _ref.editHandleType,\n mode = _ref.mode; // Both scale and rotate modes have the same enveloping box as a guide - only need one\n\n\n var guidesToFilterOut = [mode]; // Do not render scaling edit handles if rotating\n\n if (rotateMode.getIsRotating()) {\n guidesToFilterOut.push(editHandleType);\n }\n\n return !guidesToFilterOut.includes('scale');\n }); // @ts-ignore\n\n compositeGuides = (0, _helpers.featureCollection)(nonEnvelopeGuides);\n }\n\n return compositeGuides;\n }\n }]);\n\n return TransformMode;\n}(_compositeMode.CompositeMode);\n\nexports.TransformMode = TransformMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHJhbnNmb3JtLW1vZGUudHMiXSwibmFtZXMiOlsiVHJhbnNmb3JtTW9kZSIsIlRyYW5zbGF0ZU1vZGUiLCJTY2FsZU1vZGUiLCJSb3RhdGVNb2RlIiwiZXZlbnQiLCJwcm9wcyIsInVwZGF0ZWRDdXJzb3IiLCJvblVwZGF0ZUN1cnNvciIsImN1cnNvciIsInNjYWxlTW9kZSIsInRyYW5zbGF0ZU1vZGUiLCJmaWx0ZXJlZE1vZGVzIiwiX21vZGVzIiwiZm9yRWFjaCIsIm1vZGUiLCJwdXNoIiwiaXNFZGl0SGFuZGxlU2VsZWN0ZWQiLCJmaWx0ZXIiLCJCb29sZWFuIiwiaGFuZGxlU3RhcnREcmFnZ2luZyIsImNvbXBvc2l0ZUd1aWRlcyIsInJvdGF0ZU1vZGUiLCJmaW5kIiwibm9uRW52ZWxvcGVHdWlkZXMiLCJmZWF0dXJlcyIsImd1aWRlIiwicHJvcGVydGllcyIsImVkaXRIYW5kbGVUeXBlIiwiZ3VpZGVzVG9GaWx0ZXJPdXQiLCJnZXRJc1JvdGF0aW5nIiwiaW5jbHVkZXMiLCJDb21wb3NpdGVNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsYTs7Ozs7QUFDWCwyQkFBYztBQUFBOztBQUFBLDZCQUNOLENBQUMsSUFBSUMsNEJBQUosRUFBRCxFQUFzQixJQUFJQyxvQkFBSixFQUF0QixFQUF1QyxJQUFJQyxzQkFBSixFQUF2QyxDQURNO0FBRWI7Ozs7c0NBRWlCQyxLLEVBQXlCQyxLLEVBQXFDO0FBQzlFLFVBQUlDLGFBQWEsR0FBRyxJQUFwQjs7QUFDQSwyRkFBd0JGLEtBQXhCLG9CQUNLQyxLQURMO0FBRUVFLFFBQUFBLGNBQWMsRUFBRSx3QkFBQ0MsTUFBRCxFQUFZO0FBQzFCRixVQUFBQSxhQUFhLEdBQUdFLE1BQU0sSUFBSUYsYUFBMUI7QUFDRDtBQUpIOztBQU1BRCxNQUFBQSxLQUFLLENBQUNFLGNBQU4sQ0FBcUJELGFBQXJCO0FBQ0Q7Ozt3Q0FFbUJGLEssRUFBMkJDLEssRUFBcUM7QUFDbEYsVUFBSUksU0FBUyxHQUFHLElBQWhCO0FBQ0EsVUFBSUMsYUFBYSxHQUFHLElBQXBCO0FBQ0EsVUFBTUMsYUFBYSxHQUFHLEVBQXRCLENBSGtGLENBS2xGO0FBQ0E7QUFDQTtBQUNBOztBQUNBLFdBQUtDLE1BQUwsQ0FBWUMsT0FBWixDQUFvQixVQUFDQyxJQUFELEVBQVU7QUFDNUIsWUFBSUEsSUFBSSxZQUFZYiw0QkFBcEIsRUFBbUM7QUFDakNTLFVBQUFBLGFBQWEsR0FBR0ksSUFBaEI7QUFDRCxTQUZELE1BRU87QUFDTCxjQUFJQSxJQUFJLFlBQVlaLG9CQUFwQixFQUErQjtBQUM3Qk8sWUFBQUEsU0FBUyxHQUFHSyxJQUFaO0FBQ0Q7O0FBQ0RILFVBQUFBLGFBQWEsQ0FBQ0ksSUFBZCxDQUFtQkQsSUFBbkI7QUFDRDtBQUNGLE9BVEQ7O0FBV0EsVUFBSUwsU0FBUyxZQUFZUCxvQkFBckIsSUFBa0MsQ0FBQ08sU0FBUyxDQUFDTyxvQkFBVixFQUF2QyxFQUF5RTtBQUN2RUwsUUFBQUEsYUFBYSxDQUFDSSxJQUFkLENBQW1CTCxhQUFuQjtBQUNEOztBQUVEQyxNQUFBQSxhQUFhLENBQUNNLE1BQWQsQ0FBcUJDLE9BQXJCLEVBQThCTCxPQUE5QixDQUFzQyxVQUFDQyxJQUFEO0FBQUEsZUFBVUEsSUFBSSxDQUFDSyxtQkFBTCxDQUF5QmYsS0FBekIsRUFBZ0NDLEtBQWhDLENBQVY7QUFBQSxPQUF0QztBQUNEOzs7OEJBRVNBLEssRUFBcUM7QUFDN0MsVUFBSWUsZUFBZSxnRkFBbUJmLEtBQW5CLENBQW5COztBQUNBLFVBQU1nQixVQUFVLEdBQUcsQ0FBQyxLQUFLVCxNQUFMLElBQWUsRUFBaEIsRUFBb0JVLElBQXBCLENBQXlCLFVBQUNSLElBQUQ7QUFBQSxlQUFVQSxJQUFJLFlBQVlYLHNCQUExQjtBQUFBLE9BQXpCLENBQW5COztBQUVBLFVBQUlrQixVQUFVLFlBQVlsQixzQkFBMUIsRUFBc0M7QUFDcEMsWUFBTW9CLGlCQUFpQixHQUFHSCxlQUFlLENBQUNJLFFBQWhCLENBQXlCUCxNQUF6QixDQUFnQyxVQUFDUSxLQUFELEVBQVc7QUFBQSxxQkFDakNBLEtBQUssQ0FBQ0MsVUFBUCxJQUE2QixFQURLO0FBQUEsY0FDM0RDLGNBRDJELFFBQzNEQSxjQUQyRDtBQUFBLGNBQzNDYixJQUQyQyxRQUMzQ0EsSUFEMkMsRUFFbkU7OztBQUNBLGNBQU1jLGlCQUFpQixHQUFHLENBQUNkLElBQUQsQ0FBMUIsQ0FIbUUsQ0FJbkU7O0FBQ0EsY0FBSU8sVUFBVSxDQUFDUSxhQUFYLEVBQUosRUFBZ0M7QUFDOUJELFlBQUFBLGlCQUFpQixDQUFDYixJQUFsQixDQUF1QlksY0FBdkI7QUFDRDs7QUFDRCxpQkFBTyxDQUFDQyxpQkFBaUIsQ0FBQ0UsUUFBbEIsQ0FBMkIsT0FBM0IsQ0FBUjtBQUNELFNBVHlCLENBQTFCLENBRG9DLENBV3BDOztBQUNBVixRQUFBQSxlQUFlLEdBQUcsZ0NBQWtCRyxpQkFBbEIsQ0FBbEI7QUFDRDs7QUFDRCxhQUFPSCxlQUFQO0FBQ0Q7Ozs7RUE5RGdDVyw0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb2ludGVyTW92ZUV2ZW50LCBNb2RlUHJvcHMsIFN0YXJ0RHJhZ2dpbmdFdmVudCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2RlIH0gZnJvbSAnLi90cmFuc2xhdGUtbW9kZSc7XG5pbXBvcnQgeyBTY2FsZU1vZGUgfSBmcm9tICcuL3NjYWxlLW1vZGUnO1xuaW1wb3J0IHsgUm90YXRlTW9kZSB9IGZyb20gJy4vcm90YXRlLW1vZGUnO1xuXG5pbXBvcnQgeyBDb21wb3NpdGVNb2RlIH0gZnJvbSAnLi9jb21wb3NpdGUtbW9kZSc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2Zvcm1Nb2RlIGV4dGVuZHMgQ29tcG9zaXRlTW9kZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFtuZXcgVHJhbnNsYXRlTW9kZSgpLCBuZXcgU2NhbGVNb2RlKCksIG5ldyBSb3RhdGVNb2RlKCldKTtcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGxldCB1cGRhdGVkQ3Vyc29yID0gbnVsbDtcbiAgICBzdXBlci5oYW5kbGVQb2ludGVyTW92ZShldmVudCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBvblVwZGF0ZUN1cnNvcjogKGN1cnNvcikgPT4ge1xuICAgICAgICB1cGRhdGVkQ3Vyc29yID0gY3Vyc29yIHx8IHVwZGF0ZWRDdXJzb3I7XG4gICAgICB9LFxuICAgIH0pO1xuICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKHVwZGF0ZWRDdXJzb3IpO1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGxldCBzY2FsZU1vZGUgPSBudWxsO1xuICAgIGxldCB0cmFuc2xhdGVNb2RlID0gbnVsbDtcbiAgICBjb25zdCBmaWx0ZXJlZE1vZGVzID0gW107XG5cbiAgICAvLyBJZiB0aGUgdXNlciBzZWxlY3RzIGEgc2NhbGluZyBlZGl0IGhhbmRsZSB0aGF0IG92ZXJsYXBzIHdpdGggcGFydCBvZiB0aGUgc2VsZWN0ZWQgZmVhdHVyZSxcbiAgICAvLyBpdCBpcyBwb3NzaWJsZSBmb3IgYm90aCBzY2FsZSBhbmQgdHJhbnNsYXRlIGFjdGlvbnMgdG8gYmUgdHJpZ2dlcmVkLiBUaGlzIGxvZ2ljIHByZXZlbnRzXG4gICAgLy8gdGhpcyBzaW11bHRhbmVvdXMgYWN0aW9uIHRyaWdnZXIgZnJvbSBoYXBwZW5pbmcgYnkgcHV0dGluZyBhIGhpZ2hlciBwcmlvcml0eSBvbiBzY2FsaW5nXG4gICAgLy8gc2luY2UgdGhlIHVzZXIgbmVlZHMgdG8gYmUgbW9yZSBwcmVjaXNlIHRvIGhvdmVyIG92ZXIgYSBzY2FsaW5nIGVkaXQgaGFuZGxlLlxuICAgIHRoaXMuX21vZGVzLmZvckVhY2goKG1vZGUpID0+IHtcbiAgICAgIGlmIChtb2RlIGluc3RhbmNlb2YgVHJhbnNsYXRlTW9kZSkge1xuICAgICAgICB0cmFuc2xhdGVNb2RlID0gbW9kZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChtb2RlIGluc3RhbmNlb2YgU2NhbGVNb2RlKSB7XG4gICAgICAgICAgc2NhbGVNb2RlID0gbW9kZTtcbiAgICAgICAgfVxuICAgICAgICBmaWx0ZXJlZE1vZGVzLnB1c2gobW9kZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc2NhbGVNb2RlIGluc3RhbmNlb2YgU2NhbGVNb2RlICYmICFzY2FsZU1vZGUuaXNFZGl0SGFuZGxlU2VsZWN0ZWQoKSkge1xuICAgICAgZmlsdGVyZWRNb2Rlcy5wdXNoKHRyYW5zbGF0ZU1vZGUpO1xuICAgIH1cblxuICAgIGZpbHRlcmVkTW9kZXMuZmlsdGVyKEJvb2xlYW4pLmZvckVhY2goKG1vZGUpID0+IG1vZGUuaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudCwgcHJvcHMpKTtcbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGxldCBjb21wb3NpdGVHdWlkZXMgPSBzdXBlci5nZXRHdWlkZXMocHJvcHMpO1xuICAgIGNvbnN0IHJvdGF0ZU1vZGUgPSAodGhpcy5fbW9kZXMgfHwgW10pLmZpbmQoKG1vZGUpID0+IG1vZGUgaW5zdGFuY2VvZiBSb3RhdGVNb2RlKTtcblxuICAgIGlmIChyb3RhdGVNb2RlIGluc3RhbmNlb2YgUm90YXRlTW9kZSkge1xuICAgICAgY29uc3Qgbm9uRW52ZWxvcGVHdWlkZXMgPSBjb21wb3NpdGVHdWlkZXMuZmVhdHVyZXMuZmlsdGVyKChndWlkZSkgPT4ge1xuICAgICAgICBjb25zdCB7IGVkaXRIYW5kbGVUeXBlLCBtb2RlIH0gPSAoZ3VpZGUucHJvcGVydGllcyBhcyBhbnkpIHx8IHt9O1xuICAgICAgICAvLyBCb3RoIHNjYWxlIGFuZCByb3RhdGUgbW9kZXMgaGF2ZSB0aGUgc2FtZSBlbnZlbG9waW5nIGJveCBhcyBhIGd1aWRlIC0gb25seSBuZWVkIG9uZVxuICAgICAgICBjb25zdCBndWlkZXNUb0ZpbHRlck91dCA9IFttb2RlXTtcbiAgICAgICAgLy8gRG8gbm90IHJlbmRlciBzY2FsaW5nIGVkaXQgaGFuZGxlcyBpZiByb3RhdGluZ1xuICAgICAgICBpZiAocm90YXRlTW9kZS5nZXRJc1JvdGF0aW5nKCkpIHtcbiAgICAgICAgICBndWlkZXNUb0ZpbHRlck91dC5wdXNoKGVkaXRIYW5kbGVUeXBlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIWd1aWRlc1RvRmlsdGVyT3V0LmluY2x1ZGVzKCdzY2FsZScpO1xuICAgICAgfSk7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb21wb3NpdGVHdWlkZXMgPSBmZWF0dXJlQ29sbGVjdGlvbihub25FbnZlbG9wZUd1aWRlcyk7XG4gICAgfVxuICAgIHJldHVybiBjb21wb3NpdGVHdWlkZXM7XG4gIH1cbn1cbiJdfQ==","import { featureCollection } from '@turf/helpers';\nimport { PointerMoveEvent, ModeProps, StartDraggingEvent } from '../types';\nimport { FeatureCollection } from '../geojson-types';\nimport { TranslateMode } from './translate-mode';\nimport { ScaleMode } from './scale-mode';\nimport { RotateMode } from './rotate-mode';\n\nimport { CompositeMode } from './composite-mode';\n\nexport class TransformMode extends CompositeMode {\n constructor() {\n super([new TranslateMode(), new ScaleMode(), new RotateMode()]);\n }\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps) {\n let updatedCursor = null;\n super.handlePointerMove(event, {\n ...props,\n onUpdateCursor: (cursor) => {\n updatedCursor = cursor || updatedCursor;\n },\n });\n props.onUpdateCursor(updatedCursor);\n }\n\n handleStartDragging(event: StartDraggingEvent, props: ModeProps) {\n let scaleMode = null;\n let translateMode = null;\n const filteredModes = [];\n\n // If the user selects a scaling edit handle that overlaps with part of the selected feature,\n // it is possible for both scale and translate actions to be triggered. This logic prevents\n // this simultaneous action trigger from happening by putting a higher priority on scaling\n // since the user needs to be more precise to hover over a scaling edit handle.\n this._modes.forEach((mode) => {\n if (mode instanceof TranslateMode) {\n translateMode = mode;\n } else {\n if (mode instanceof ScaleMode) {\n scaleMode = mode;\n }\n filteredModes.push(mode);\n }\n });\n\n if (scaleMode instanceof ScaleMode && !scaleMode.isEditHandleSelected()) {\n filteredModes.push(translateMode);\n }\n\n filteredModes.filter(Boolean).forEach((mode) => mode.handleStartDragging(event, props));\n }\n\n getGuides(props: ModeProps) {\n let compositeGuides = super.getGuides(props);\n const rotateMode = (this._modes || []).find((mode) => mode instanceof RotateMode);\n\n if (rotateMode instanceof RotateMode) {\n const nonEnvelopeGuides = compositeGuides.features.filter((guide) => {\n const { editHandleType, mode } = (guide.properties as any) || {};\n // Both scale and rotate modes have the same enveloping box as a guide - only need one\n const guidesToFilterOut = [mode];\n // Do not render scaling edit handles if rotating\n if (rotateMode.getIsRotating()) {\n guidesToFilterOut.push(editHandleType);\n }\n return !guidesToFilterOut.includes('scale');\n });\n // @ts-ignore\n compositeGuides = featureCollection(nonEnvelopeGuides);\n }\n return compositeGuides;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CompositeMode = void 0;\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CompositeMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(CompositeMode, _GeoJsonEditMode);\n\n var _super = _createSuper(CompositeMode);\n\n function CompositeMode(modes) {\n var _this;\n\n _classCallCheck(this, CompositeMode);\n\n _this = _super.call(this);\n\n _defineProperty(_assertThisInitialized(_this), \"_modes\", void 0);\n\n _this._modes = modes;\n return _this;\n }\n\n _createClass(CompositeMode, [{\n key: \"_coalesce\",\n value: function _coalesce(callback) {\n var resultEval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var result;\n\n for (var i = 0; i < this._modes.length; i++) {\n result = callback(this._modes[i]);\n\n if (resultEval ? resultEval(result) : result) {\n break;\n }\n }\n\n return result;\n }\n }, {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n this._coalesce(function (handler) {\n return handler.handleClick(event, props);\n });\n }\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n return this._coalesce(function (handler) {\n return handler.handlePointerMove(event, props);\n });\n }\n }, {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n return this._coalesce(function (handler) {\n return handler.handleStartDragging(event, props);\n });\n }\n }, {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n return this._coalesce(function (handler) {\n return handler.handleStopDragging(event, props);\n });\n }\n }, {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n return this._coalesce(function (handler) {\n return handler.handleDragging(event, props);\n });\n }\n }, {\n key: \"getGuides\",\n value: function getGuides(props) {\n // TODO: Combine the guides *BUT* make sure if none of the results have\n // changed to return the same object so that \"guides !== this.state.guides\"\n // in editable-geojson-layer works.\n var allGuides = [];\n\n var _iterator = _createForOfIteratorHelper(this._modes),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var mode = _step.value;\n allGuides.push.apply(allGuides, _toConsumableArray(mode.getGuides(props).features));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return {\n type: 'FeatureCollection',\n features: allGuides\n };\n }\n }]);\n\n return CompositeMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.CompositeMode = CompositeMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9zaXRlLW1vZGUudHMiXSwibmFtZXMiOlsiQ29tcG9zaXRlTW9kZSIsIm1vZGVzIiwiX21vZGVzIiwiY2FsbGJhY2siLCJyZXN1bHRFdmFsIiwicmVzdWx0IiwiaSIsImxlbmd0aCIsImV2ZW50IiwicHJvcHMiLCJfY29hbGVzY2UiLCJoYW5kbGVyIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVQb2ludGVyTW92ZSIsImhhbmRsZVN0YXJ0RHJhZ2dpbmciLCJoYW5kbGVTdG9wRHJhZ2dpbmciLCJoYW5kbGVEcmFnZ2luZyIsImFsbEd1aWRlcyIsIm1vZGUiLCJwdXNoIiwiZ2V0R3VpZGVzIiwiZmVhdHVyZXMiLCJ0eXBlIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsYTs7Ozs7QUFHWCx5QkFBWUMsS0FBWixFQUEyQztBQUFBOztBQUFBOztBQUN6Qzs7QUFEeUM7O0FBRXpDLFVBQUtDLE1BQUwsR0FBY0QsS0FBZDtBQUZ5QztBQUcxQzs7Ozs4QkFHQ0UsUSxFQUVHO0FBQUEsVUFESEMsVUFDRyx1RUFEbUQsSUFDbkQ7QUFDSCxVQUFJQyxNQUFKOztBQUVBLFdBQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxLQUFLSixNQUFMLENBQVlLLE1BQWhDLEVBQXdDRCxDQUFDLEVBQXpDLEVBQTZDO0FBQzNDRCxRQUFBQSxNQUFNLEdBQUdGLFFBQVEsQ0FBQyxLQUFLRCxNQUFMLENBQVlJLENBQVosQ0FBRCxDQUFqQjs7QUFDQSxZQUFJRixVQUFVLEdBQUdBLFVBQVUsQ0FBQ0MsTUFBRCxDQUFiLEdBQXdCQSxNQUF0QyxFQUE4QztBQUM1QztBQUNEO0FBQ0Y7O0FBRUQsYUFBT0EsTUFBUDtBQUNEOzs7Z0NBRVdHLEssRUFBbUJDLEssRUFBMkM7QUFDeEUsV0FBS0MsU0FBTCxDQUFlLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNDLFdBQVIsQ0FBb0JKLEtBQXBCLEVBQTJCQyxLQUEzQixDQUFiO0FBQUEsT0FBZjtBQUNEOzs7c0NBRWlCRCxLLEVBQXlCQyxLLEVBQTJDO0FBQ3BGLGFBQU8sS0FBS0MsU0FBTCxDQUFlLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNFLGlCQUFSLENBQTBCTCxLQUExQixFQUFpQ0MsS0FBakMsQ0FBYjtBQUFBLE9BQWYsQ0FBUDtBQUNEOzs7d0NBRW1CRCxLLEVBQTJCQyxLLEVBQTJDO0FBQ3hGLGFBQU8sS0FBS0MsU0FBTCxDQUFlLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNHLG1CQUFSLENBQTRCTixLQUE1QixFQUFtQ0MsS0FBbkMsQ0FBYjtBQUFBLE9BQWYsQ0FBUDtBQUNEOzs7dUNBRWtCRCxLLEVBQTBCQyxLLEVBQTJDO0FBQ3RGLGFBQU8sS0FBS0MsU0FBTCxDQUFlLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNJLGtCQUFSLENBQTJCUCxLQUEzQixFQUFrQ0MsS0FBbEMsQ0FBYjtBQUFBLE9BQWYsQ0FBUDtBQUNEOzs7bUNBRWNELEssRUFBc0JDLEssRUFBMkM7QUFDOUUsYUFBTyxLQUFLQyxTQUFMLENBQWUsVUFBQ0MsT0FBRDtBQUFBLGVBQWFBLE9BQU8sQ0FBQ0ssY0FBUixDQUF1QlIsS0FBdkIsRUFBOEJDLEtBQTlCLENBQWI7QUFBQSxPQUFmLENBQVA7QUFDRDs7OzhCQUVTQSxLLEVBQTZEO0FBQ3JFO0FBQ0E7QUFDQTtBQUVBLFVBQU1RLFNBQVMsR0FBRyxFQUFsQjs7QUFMcUUsaURBTWxELEtBQUtmLE1BTjZDO0FBQUE7O0FBQUE7QUFNckUsNERBQWdDO0FBQUEsY0FBckJnQixJQUFxQjtBQUM5QkQsVUFBQUEsU0FBUyxDQUFDRSxJQUFWLE9BQUFGLFNBQVMscUJBQVNDLElBQUksQ0FBQ0UsU0FBTCxDQUFlWCxLQUFmLEVBQXNCWSxRQUEvQixFQUFUO0FBQ0Q7QUFSb0U7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFVckUsYUFBTztBQUNMQyxRQUFBQSxJQUFJLEVBQUUsbUJBREQ7QUFFTEQsUUFBQUEsUUFBUSxFQUFFSjtBQUZMLE9BQVA7QUFJRDs7OztFQTFEZ0NNLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7XG4gIE1vZGVQcm9wcyxcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbmV4cG9ydCBjbGFzcyBDb21wb3NpdGVNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX21vZGVzOiBBcnJheTxHZW9Kc29uRWRpdE1vZGU+O1xuXG4gIGNvbnN0cnVjdG9yKG1vZGVzOiBBcnJheTxHZW9Kc29uRWRpdE1vZGU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9tb2RlcyA9IG1vZGVzO1xuICB9XG5cbiAgX2NvYWxlc2NlPFQ+KFxuICAgIGNhbGxiYWNrOiAoYXJnMDogR2VvSnNvbkVkaXRNb2RlKSA9PiBULFxuICAgIHJlc3VsdEV2YWw6IChhcmcwOiBUKSA9PiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGxcbiAgKTogVCB7XG4gICAgbGV0IHJlc3VsdDogVDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbW9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKHRoaXMuX21vZGVzW2ldKTtcbiAgICAgIGlmIChyZXN1bHRFdmFsID8gcmVzdWx0RXZhbChyZXN1bHQpIDogcmVzdWx0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQgYXMgYW55O1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgdGhpcy5fY29hbGVzY2UoKGhhbmRsZXIpID0+IGhhbmRsZXIuaGFuZGxlQ2xpY2soZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fY29hbGVzY2UoKGhhbmRsZXIpID0+IGhhbmRsZXIuaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBoYW5kbGVTdGFydERyYWdnaW5nKGV2ZW50OiBTdGFydERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2NvYWxlc2NlKChoYW5kbGVyKSA9PiBoYW5kbGVyLmhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9jb2FsZXNjZSgoaGFuZGxlcikgPT4gaGFuZGxlci5oYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fY29hbGVzY2UoKGhhbmRsZXIpID0+IGhhbmRsZXIuaGFuZGxlRHJhZ2dpbmcoZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICAvLyBUT0RPOiBDb21iaW5lIHRoZSBndWlkZXMgKkJVVCogbWFrZSBzdXJlIGlmIG5vbmUgb2YgdGhlIHJlc3VsdHMgaGF2ZVxuICAgIC8vIGNoYW5nZWQgdG8gcmV0dXJuIHRoZSBzYW1lIG9iamVjdCBzbyB0aGF0IFwiZ3VpZGVzICE9PSB0aGlzLnN0YXRlLmd1aWRlc1wiXG4gICAgLy8gaW4gZWRpdGFibGUtZ2VvanNvbi1sYXllciB3b3Jrcy5cblxuICAgIGNvbnN0IGFsbEd1aWRlcyA9IFtdO1xuICAgIGZvciAoY29uc3QgbW9kZSBvZiB0aGlzLl9tb2Rlcykge1xuICAgICAgYWxsR3VpZGVzLnB1c2goLi4ubW9kZS5nZXRHdWlkZXMocHJvcHMpLmZlYXR1cmVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBhbGxHdWlkZXMsXG4gICAgfTtcbiAgfVxufVxuIl19","import { FeatureCollection } from '../geojson-types';\nimport {\n ModeProps,\n ClickEvent,\n PointerMoveEvent,\n StartDraggingEvent,\n StopDraggingEvent,\n DraggingEvent,\n GuideFeatureCollection,\n} from '../types';\nimport { GeoJsonEditMode } from './geojson-edit-mode';\n\nexport class CompositeMode extends GeoJsonEditMode {\n _modes: Array;\n\n constructor(modes: Array) {\n super();\n this._modes = modes;\n }\n\n _coalesce(\n callback: (arg0: GeoJsonEditMode) => T,\n resultEval: (arg0: T) => boolean | null | undefined = null\n ): T {\n let result: T;\n\n for (let i = 0; i < this._modes.length; i++) {\n result = callback(this._modes[i]);\n if (resultEval ? resultEval(result) : result) {\n break;\n }\n }\n\n return result as any;\n }\n\n handleClick(event: ClickEvent, props: ModeProps): void {\n this._coalesce((handler) => handler.handleClick(event, props));\n }\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps): void {\n return this._coalesce((handler) => handler.handlePointerMove(event, props));\n }\n\n handleStartDragging(event: StartDraggingEvent, props: ModeProps): void {\n return this._coalesce((handler) => handler.handleStartDragging(event, props));\n }\n\n handleStopDragging(event: StopDraggingEvent, props: ModeProps): void {\n return this._coalesce((handler) => handler.handleStopDragging(event, props));\n }\n\n handleDragging(event: DraggingEvent, props: ModeProps): void {\n return this._coalesce((handler) => handler.handleDragging(event, props));\n }\n\n getGuides(props: ModeProps): GuideFeatureCollection {\n // TODO: Combine the guides *BUT* make sure if none of the results have\n // changed to return the same object so that \"guides !== this.state.guides\"\n // in editable-geojson-layer works.\n\n const allGuides = [];\n for (const mode of this._modes) {\n allGuides.push(...mode.getGuides(props).features);\n }\n\n return {\n type: 'FeatureCollection',\n features: allGuides,\n };\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DrawPointMode = void 0;\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawPointMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(DrawPointMode, _GeoJsonEditMode);\n\n var _super = _createSuper(DrawPointMode);\n\n function DrawPointMode() {\n _classCallCheck(this, DrawPointMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DrawPointMode, [{\n key: \"createTentativeFeature\",\n value: function createTentativeFeature(props) {\n var lastPointerMoveEvent = props.lastPointerMoveEvent;\n var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];\n return {\n type: 'Feature',\n properties: {\n guideType: 'tentative'\n },\n geometry: {\n type: 'Point',\n coordinates: lastCoords[0]\n }\n };\n }\n }, {\n key: \"handleClick\",\n value: function handleClick(_ref, props) {\n var mapCoords = _ref.mapCoords;\n var geometry = {\n type: 'Point',\n coordinates: mapCoords\n }; // @ts-ignore\n\n props.onEdit(this.getAddFeatureAction(geometry, props.data));\n }\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor('cell');\n\n _get(_getPrototypeOf(DrawPointMode.prototype), \"handlePointerMove\", this).call(this, event, props);\n }\n }]);\n\n return DrawPointMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.DrawPointMode = DrawPointMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1wb2ludC1tb2RlLnRzIl0sIm5hbWVzIjpbIkRyYXdQb2ludE1vZGUiLCJwcm9wcyIsImxhc3RQb2ludGVyTW92ZUV2ZW50IiwibGFzdENvb3JkcyIsIm1hcENvb3JkcyIsInR5cGUiLCJwcm9wZXJ0aWVzIiwiZ3VpZGVUeXBlIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsIm9uRWRpdCIsImdldEFkZEZlYXR1cmVBY3Rpb24iLCJkYXRhIiwiZXZlbnQiLCJvblVwZGF0ZUN1cnNvciIsIkdlb0pzb25FZGl0TW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLGE7Ozs7Ozs7Ozs7Ozs7MkNBQ1lDLEssRUFBdUQ7QUFBQSxVQUNwRUMsb0JBRG9FLEdBQzNDRCxLQUQyQyxDQUNwRUMsb0JBRG9FO0FBRTVFLFVBQU1DLFVBQVUsR0FBR0Qsb0JBQW9CLEdBQUcsQ0FBQ0Esb0JBQW9CLENBQUNFLFNBQXRCLENBQUgsR0FBc0MsRUFBN0U7QUFFQSxhQUFPO0FBQ0xDLFFBQUFBLElBQUksRUFBRSxTQUREO0FBRUxDLFFBQUFBLFVBQVUsRUFBRTtBQUNWQyxVQUFBQSxTQUFTLEVBQUU7QUFERCxTQUZQO0FBS0xDLFFBQUFBLFFBQVEsRUFBRTtBQUNSSCxVQUFBQSxJQUFJLEVBQUUsT0FERTtBQUVSSSxVQUFBQSxXQUFXLEVBQUVOLFVBQVUsQ0FBQyxDQUFEO0FBRmY7QUFMTCxPQUFQO0FBVUQ7OztzQ0FFc0NGLEssRUFBMkM7QUFBQSxVQUFwRUcsU0FBb0UsUUFBcEVBLFNBQW9FO0FBQ2hGLFVBQU1JLFFBQVEsR0FBRztBQUNmSCxRQUFBQSxJQUFJLEVBQUUsT0FEUztBQUVmSSxRQUFBQSxXQUFXLEVBQUVMO0FBRkUsT0FBakIsQ0FEZ0YsQ0FLaEY7O0FBQ0FILE1BQUFBLEtBQUssQ0FBQ1MsTUFBTixDQUFhLEtBQUtDLG1CQUFMLENBQXlCSCxRQUF6QixFQUFtQ1AsS0FBSyxDQUFDVyxJQUF6QyxDQUFiO0FBQ0Q7OztzQ0FFaUJDLEssRUFBeUJaLEssRUFBcUM7QUFDOUVBLE1BQUFBLEtBQUssQ0FBQ2EsY0FBTixDQUFxQixNQUFyQjs7QUFDQSwyRkFBd0JELEtBQXhCLEVBQStCWixLQUEvQjtBQUNEOzs7O0VBN0JnQ2MsZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGlja0V2ZW50LCBQb2ludGVyTW92ZUV2ZW50LCBNb2RlUHJvcHMsIFRlbnRhdGl2ZUZlYXR1cmUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbmV4cG9ydCBjbGFzcyBEcmF3UG9pbnRNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgY3JlYXRlVGVudGF0aXZlRmVhdHVyZShwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRlbnRhdGl2ZUZlYXR1cmUge1xuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgfSA9IHByb3BzO1xuICAgIGNvbnN0IGxhc3RDb29yZHMgPSBsYXN0UG9pbnRlck1vdmVFdmVudCA/IFtsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHNdIDogW107XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICd0ZW50YXRpdmUnLFxuICAgICAgfSxcbiAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBsYXN0Q29vcmRzWzBdLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soeyBtYXBDb29yZHMgfTogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBjb25zdCBnZW9tZXRyeSA9IHtcbiAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICBjb29yZGluYXRlczogbWFwQ29vcmRzLFxuICAgIH07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHByb3BzLm9uRWRpdCh0aGlzLmdldEFkZEZlYXR1cmVBY3Rpb24oZ2VvbWV0cnksIHByb3BzLmRhdGEpKTtcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKCdjZWxsJyk7XG4gICAgc3VwZXIuaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQsIHByb3BzKTtcbiAgfVxufVxuIl19","import { ClickEvent, PointerMoveEvent, ModeProps, TentativeFeature } from '../types';\nimport { FeatureCollection } from '../geojson-types';\nimport { GeoJsonEditMode } from './geojson-edit-mode';\n\nexport class DrawPointMode extends GeoJsonEditMode {\n createTentativeFeature(props: ModeProps): TentativeFeature {\n const { lastPointerMoveEvent } = props;\n const lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];\n\n return {\n type: 'Feature',\n properties: {\n guideType: 'tentative',\n },\n geometry: {\n type: 'Point',\n coordinates: lastCoords[0],\n },\n };\n }\n\n handleClick({ mapCoords }: ClickEvent, props: ModeProps): void {\n const geometry = {\n type: 'Point',\n coordinates: mapCoords,\n };\n // @ts-ignore\n props.onEdit(this.getAddFeatureAction(geometry, props.data));\n }\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps) {\n props.onUpdateCursor('cell');\n super.handlePointerMove(event, props);\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DrawLineStringMode = void 0;\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawLineStringMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(DrawLineStringMode, _GeoJsonEditMode);\n\n var _super = _createSuper(DrawLineStringMode);\n\n function DrawLineStringMode() {\n _classCallCheck(this, DrawLineStringMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DrawLineStringMode, [{\n key: \"handleClick\",\n value: function handleClick(event, props) {\n var picks = event.picks;\n var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks);\n var positionAdded = false;\n\n if (!clickedEditHandle) {\n // Don't add another point right next to an existing one\n this.addClickSequence(event);\n positionAdded = true;\n }\n\n var clickSequence = this.getClickSequence();\n\n if (clickSequence.length > 1 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1) {\n // They clicked the last point (or double-clicked), so add the LineString\n var lineStringToAdd = {\n type: 'LineString',\n coordinates: _toConsumableArray(clickSequence)\n };\n this.resetClickSequence();\n var editAction = this.getAddFeatureAction(lineStringToAdd, props.data);\n\n if (editAction) {\n props.onEdit(editAction);\n }\n } else if (positionAdded) {\n // new tentative point\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: 'addTentativePosition',\n editContext: {\n position: event.mapCoords\n }\n });\n }\n }\n }, {\n key: \"handleKeyUp\",\n value: function handleKeyUp(event, props) {\n var key = event.key;\n\n if (key === 'Enter') {\n var clickSequence = this.getClickSequence();\n\n if (clickSequence.length > 1) {\n var lineStringToAdd = {\n type: 'LineString',\n coordinates: _toConsumableArray(clickSequence)\n };\n this.resetClickSequence();\n var editAction = this.getAddFeatureAction(lineStringToAdd, props.data);\n\n if (editAction) {\n props.onEdit(editAction);\n }\n }\n }\n }\n }, {\n key: \"getGuides\",\n value: function getGuides(props) {\n var _guides$features;\n\n var lastPointerMoveEvent = props.lastPointerMoveEvent;\n var clickSequence = this.getClickSequence();\n var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];\n var guides = {\n type: 'FeatureCollection',\n features: []\n };\n var tentativeFeature;\n\n if (clickSequence.length > 0) {\n tentativeFeature = {\n type: 'Feature',\n properties: {\n guideType: 'tentative'\n },\n geometry: {\n type: 'LineString',\n coordinates: [].concat(_toConsumableArray(clickSequence), lastCoords)\n }\n };\n }\n\n if (tentativeFeature) {\n guides.features.push(tentativeFeature);\n }\n\n var editHandles = clickSequence.map(function (clickedCoord, index) {\n return {\n type: 'Feature',\n properties: {\n guideType: 'editHandle',\n editHandleType: 'existing',\n featureIndex: -1,\n positionIndexes: [index]\n },\n geometry: {\n type: 'Point',\n coordinates: clickedCoord\n }\n };\n });\n\n (_guides$features = guides.features).push.apply(_guides$features, _toConsumableArray(editHandles)); // @ts-ignore\n\n\n return guides;\n }\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor('cell');\n }\n }]);\n\n return DrawLineStringMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.DrawLineStringMode = DrawLineStringMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1saW5lLXN0cmluZy1tb2RlLnRzIl0sIm5hbWVzIjpbIkRyYXdMaW5lU3RyaW5nTW9kZSIsImV2ZW50IiwicHJvcHMiLCJwaWNrcyIsImNsaWNrZWRFZGl0SGFuZGxlIiwicG9zaXRpb25BZGRlZCIsImFkZENsaWNrU2VxdWVuY2UiLCJjbGlja1NlcXVlbmNlIiwiZ2V0Q2xpY2tTZXF1ZW5jZSIsImxlbmd0aCIsIkFycmF5IiwiaXNBcnJheSIsInByb3BlcnRpZXMiLCJwb3NpdGlvbkluZGV4ZXMiLCJsaW5lU3RyaW5nVG9BZGQiLCJ0eXBlIiwiY29vcmRpbmF0ZXMiLCJyZXNldENsaWNrU2VxdWVuY2UiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZUFjdGlvbiIsImRhdGEiLCJvbkVkaXQiLCJ1cGRhdGVkRGF0YSIsImVkaXRUeXBlIiwiZWRpdENvbnRleHQiLCJwb3NpdGlvbiIsIm1hcENvb3JkcyIsImtleSIsImxhc3RQb2ludGVyTW92ZUV2ZW50IiwibGFzdENvb3JkcyIsImd1aWRlcyIsImZlYXR1cmVzIiwidGVudGF0aXZlRmVhdHVyZSIsImd1aWRlVHlwZSIsImdlb21ldHJ5IiwicHVzaCIsImVkaXRIYW5kbGVzIiwibWFwIiwiY2xpY2tlZENvb3JkIiwiaW5kZXgiLCJlZGl0SGFuZGxlVHlwZSIsImZlYXR1cmVJbmRleCIsIm9uVXBkYXRlQ3Vyc29yIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxrQjs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFtQkMsSyxFQUFxQztBQUFBLFVBQzFEQyxLQUQwRCxHQUNoREYsS0FEZ0QsQ0FDMURFLEtBRDBEO0FBRWxFLFVBQU1DLGlCQUFpQixHQUFHLGdDQUFvQkQsS0FBcEIsQ0FBMUI7QUFFQSxVQUFJRSxhQUFhLEdBQUcsS0FBcEI7O0FBQ0EsVUFBSSxD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QUEsV0FBVywrQkFBTVQsYUFBTixHQUF3QnNCLFVBQXhCO0FBRkg7QUFMTyxTQUFuQjtBQVVEOztBQUVELFVBQUlHLGdCQUFKLEVBQXNCO0FBQ3BCRixRQUFBQSxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JJLElBQWhCLENBQXFCSCxnQkFBckI7QUFDRDs7QUFFRCxVQUFNSSxXQUFXLEdBQUc3QixhQUFhLENBQUM4QixHQUFkLENBQWtCLFVBQUNDLFlBQUQsRUFBZUMsS0FBZjtBQUFBLGVBQTBCO0FBQzlEeEIsVUFBQUEsSUFBSSxFQUFFLFNBRHdEO0FBRTlESCxVQUFBQSxVQUFVLEVBQUU7QUFDVnFCLFlBQUFBLFNBQVMsRUFBRSxZQUREO0FBRVZPLFlBQUFBLGNBQWMsRUFBRSxVQUZOO0FBR1ZDLFlBQUFBLFlBQVksRUFBRSxDQUFDLENBSEw7QUFJVjVCLFlBQUFBLGVBQWUsRUFBRSxDQUFDMEIsS0FBRDtBQUpQLFdBRmtEO0FBUTlETCxVQUFBQSxRQUFRLEVBQUU7QUFDUm5CLFlBQUFBLElBQUksRUFBRSxPQURFO0FBRVJDLFlBQUFBLFdBQVcsRUFBRXNCO0FBRkw7QUFSb0QsU0FBMUI7QUFBQSxPQUFsQixDQUFwQjs7QUFjQSwwQkFBQVIsTUFBTSxDQUFDQyxRQUFQLEVBQWdCSSxJQUFoQiw0Q0FBd0JDLFdBQXhCLEdBM0NxRSxDQTRDckU7OztBQUNBLGFBQU9OLE1BQVA7QUFDRDs7O3NDQUVpQjdCLEssRUFBeUJDLEssRUFBcUM7QUFDOUVBLE1BQUFBLEtBQUssQ0FBQ3dDLGNBQU4sQ0FBcUIsTUFBckI7QUFDRDs7OztFQS9HcUNDLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGluZVN0cmluZywgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IENsaWNrRXZlbnQsIFBvaW50ZXJNb3ZlRXZlbnQsIE1vZGVQcm9wcywgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGdldFBpY2tlZEVkaXRIYW5kbGUgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUgfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcblxuZXhwb3J0IGNsYXNzIERyYXdMaW5lU3RyaW5nTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHsgcGlja3MgfSA9IGV2ZW50O1xuICAgIGNvbnN0IGNsaWNrZWRFZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShwaWNrcyk7XG5cbiAgICBsZXQgcG9zaXRpb25BZGRlZCA9IGZhbHNlO1xuICAgIGlmICghY2xpY2tlZEVkaXRIYW5kbGUpIHtcbiAgICAgIC8vIERvbid0IGFkZCBhbm90aGVyIHBvaW50IHJpZ2h0IG5leHQgdG8gYW4gZXhpc3Rpbmcgb25lXG4gICAgICB0aGlzLmFkZENsaWNrU2VxdWVuY2UoZXZlbnQpO1xuICAgICAgcG9zaXRpb25BZGRlZCA9IHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGlmIChcbiAgICAgIGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMSAmJlxuICAgICAgY2xpY2tlZEVkaXRIYW5kbGUgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkoY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMpICYmXG4gICAgICBjbGlja2VkRWRpdEhhbmRsZS5wcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlc1swXSA9PT0gY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXG4gICAgKSB7XG4gICAgICAvLyBUaGV5IGNsaWNrZWQgdGhlIGxhc3QgcG9pbnQgKG9yIGRvdWJsZS1jbGlja2VkKSwgc28gYWRkIHRoZSBMaW5lU3RyaW5nXG5cbiAgICAgIGNvbnN0IGxpbmVTdHJpbmdUb0FkZDogTGluZVN0cmluZyA9IHtcbiAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICBjb29yZGluYXRlczogWy4uLmNsaWNrU2VxdWVuY2VdLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZUFjdGlvbihsaW5lU3RyaW5nVG9BZGQsIHByb3BzLmRhdGEpO1xuICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgcHJvcHMub25FZGl0KGVkaXRBY3Rpb24pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocG9zaXRpb25BZGRlZCkge1xuICAgICAgLy8gbmV3IHRlbnRhdGl2ZSBwb2ludFxuICAgICAgcHJvcHMub25FZGl0KHtcbiAgICAgICAgLy8gZGF0YSBpcyB0aGUgc2FtZVxuICAgICAgICB1cGRhdGVkRGF0YTogcHJvcHMuZGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICdhZGRUZW50YXRpdmVQb3NpdGlvbicsXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgcG9zaXRpb246IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBoYW5kbGVLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCB7IGtleSB9ID0gZXZlbnQ7XG4gICAgaWYgKGtleSA9PT0gJ0VudGVyJykge1xuICAgICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBsaW5lU3RyaW5nVG9BZGQ6IExpbmVTdHJpbmcgPSB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZV0sXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVzZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgICAgIGNvbnN0IGVkaXRBY3Rpb24gPSB0aGlzLmdldEFkZEZlYXR1cmVBY3Rpb24obGluZVN0cmluZ1RvQWRkLCBwcm9wcy5kYXRhKTtcbiAgICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgICBwcm9wcy5vbkVkaXQoZWRpdEFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgbGFzdENvb3JkcyA9IGxhc3RQb2ludGVyTW92ZUV2ZW50ID8gW2xhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkc10gOiBbXTtcblxuICAgIGNvbnN0IGd1aWRlcyA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogW10sXG4gICAgfTtcblxuICAgIGxldCB0ZW50YXRpdmVGZWF0dXJlO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRlbnRhdGl2ZUZlYXR1cmUgPSB7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGd1aWRlVHlwZTogJ3RlbnRhdGl2ZScsXG4gICAgICAgIH0sXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZSwgLi4ubGFzdENvb3Jkc10sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0ZW50YXRpdmVGZWF0dXJlKSB7XG4gICAgICBndWlkZXMuZmVhdHVyZXMucHVzaCh0ZW50YXRpdmVGZWF0dXJlKTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0SGFuZGxlcyA9IGNsaWNrU2VxdWVuY2UubWFwKChjbGlja2VkQ29vcmQsIGluZGV4KSA9PiAoe1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgZWRpdEhhbmRsZVR5cGU6ICdleGlzdGluZycsXG4gICAgICAgIGZlYXR1cmVJbmRleDogLTEsXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlczogW2luZGV4XSxcbiAgICAgIH0sXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICBjb29yZGluYXRlczogY2xpY2tlZENvb3JkLFxuICAgICAgfSxcbiAgICB9KSk7XG5cbiAgICBndWlkZXMuZmVhdHVyZXMucHVzaCguLi5lZGl0SGFuZGxlcyk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICB9XG59XG4iXX0=","import { LineString, FeatureCollection } from '../geojson-types';\nimport { ClickEvent, PointerMoveEvent, ModeProps, GuideFeatureCollection } from '../types';\nimport { getPickedEditHandle } from '../utils';\nimport { GeoJsonEditMode } from './geojson-edit-mode';\n\nexport class DrawLineStringMode extends GeoJsonEditMode {\n handleClick(event: ClickEvent, props: ModeProps) {\n const { picks } = event;\n const clickedEditHandle = getPickedEditHandle(picks);\n\n let positionAdded = false;\n if (!clickedEditHandle) {\n // Don't add another point right next to an existing one\n this.addClickSequence(event);\n positionAdded = true;\n }\n const clickSequence = this.getClickSequence();\n\n if (\n clickSequence.length > 1 &&\n clickedEditHandle &&\n Array.isArray(clickedEditHandle.properties.positionIndexes) &&\n clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1\n ) {\n // They clicked the last point (or double-clicked), so add the LineString\n\n const lineStringToAdd: LineString = {\n type: 'LineString',\n coordinates: [...clickSequence],\n };\n\n this.resetClickSequence();\n\n const editAction = this.getAddFeatureAction(lineStringToAdd, props.data);\n if (editAction) {\n props.onEdit(editAction);\n }\n } else if (positionAdded) {\n // new tentative point\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: 'addTentativePosition',\n editContext: {\n position: event.mapCoords,\n },\n });\n }\n }\n handleKeyUp(event: KeyboardEvent, props: ModeProps) {\n const { key } = event;\n if (key === 'Enter') {\n const clickSequence = this.getClickSequence();\n if (clickSequence.length > 1) {\n const lineStringToAdd: LineString = {\n type: 'LineString',\n coordinates: [...clickSequence],\n };\n this.resetClickSequence();\n const editAction = this.getAddFeatureAction(lineStringToAdd, props.data);\n if (editAction) {\n props.onEdit(editAction);\n }\n }\n }\n }\n getGuides(props: ModeProps): GuideFeatureCollection {\n const { lastPointerMoveEvent } = props;\n const clickSequence = this.getClickSequence();\n\n const lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];\n\n const guides = {\n type: 'FeatureCollection',\n features: [],\n };\n\n let tentativeFeature;\n if (clickSequence.length > 0) {\n tentativeFeature = {\n type: 'Feature',\n properties: {\n guideType: 'tentative',\n },\n geometry: {\n type: 'LineString',\n coordinates: [...clickSequence, ...lastCoords],\n },\n };\n }\n\n if (tentativeFeature) {\n guides.features.push(tentativeFeature);\n }\n\n const editHandles = clickSequence.map((clickedCoord, index) => ({\n type: 'Feature',\n properties: {\n guideType: 'editHandle',\n editHandleType: 'existing',\n featureIndex: -1,\n positionIndexes: [index],\n },\n geometry: {\n type: 'Point',\n coordinates: clickedCoord,\n },\n }));\n\n guides.features.push(...editHandles);\n // @ts-ignore\n return guides;\n }\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps) {\n props.onUpdateCursor('cell');\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DrawPolygonMode = void 0;\n\nvar _lineIntersect = _interopRequireDefault(require(\"@turf/line-intersect\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawPolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(DrawPolygonMode, _GeoJsonEditMode);\n\n var _super = _createSuper(DrawPolygonMode);\n\n function DrawPolygonMode() {\n _classCallCheck(this, DrawPolygonMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DrawPolygonMode, [{\n key: \"createTentativeFeature\",\n value: function createTentativeFeature(props) {\n var lastPointerMoveEvent = props.lastPointerMoveEvent;\n var clickSequence = this.getClickSequence();\n var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];\n var tentativeFeature;\n\n if (clickSequence.length === 1 || clickSequence.length === 2) {\n tentativeFeature = {\n type: 'Feature',\n properties: {\n guideType: 'tentative'\n },\n geometry: {\n type: 'LineString',\n coordinates: [].concat(_toConsumableArray(clickSequence), lastCoords)\n }\n };\n } else if (clickSequence.length > 2) {\n tentativeFeature = {\n type: 'Feature',\n properties: {\n guideType: 'tentative'\n },\n geometry: {\n type: 'Polygon',\n coordinates: [[].concat(_toConsumableArray(clickSequence), lastCoords, [clickSequence[0]])]\n }\n };\n }\n\n return tentativeFeature;\n }\n }, {\n key: \"getGuides\",\n value: function getGuides(props) {\n var _guides$features;\n\n var clickSequence = this.getClickSequence();\n var guides = {\n type: 'FeatureCollection',\n features: []\n };\n var tentativeFeature = this.createTentativeFeature(props);\n\n if (tentativeFeature) {\n guides.features.push(tentativeFeature);\n }\n\n var editHandles = clickSequence.map(function (clickedCoord, index) {\n return {\n type: 'Feature',\n properties: {\n guideType: 'editHandle',\n editHandleType: 'existing',\n featureIndex: -1,\n positionIndexes: [index]\n },\n geometry: {\n type: 'Point',\n coordinates: clickedCoord\n }\n };\n });\n\n (_guides$features = guides.features).push.apply(_guides$features, _toConsumableArray(editHandles)); // @ts-ignore\n\n\n return guides;\n }\n }, {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n var picks = event.picks;\n var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks);\n var clickSequence = this.getClickSequence();\n var overlappingLines = false;\n\n if (clickSequence.length > 2 && props.modeConfig && props.modeConfig.preventOverlappingLines) {\n var currentLine = (0, _helpers.lineString)([clickSequence[clickSequence.length - 1], event.mapCoords]);\n var otherLines = (0, _helpers.lineString)(_toConsumableArray(clickSequence.slice(0, clickSequence.length - 1)));\n var intersectingPoints = (0, _lineIntersect[\"default\"])(currentLine, otherLines);\n\n if (intersectingPoints.features.length > 0) {\n overlappingLines = true;\n }\n }\n\n var positionAdded = false;\n\n if (!clickedEditHandle && !overlappingLines) {\n // Don't add another point right next to an existing one\n this.addClickSequence(event);\n positionAdded = true;\n }\n\n if (clickSequence.length > 2 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[0] === 0 || clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1)) {\n // They clicked the first or last point (or double-clicked), so complete the polygon\n // Remove the hovered position\n var polygonToAdd = {\n type: 'Polygon',\n coordinates: [[].concat(_toConsumableArray(clickSequence), [clickSequence[0]])]\n };\n this.resetClickSequence();\n var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);\n\n if (editAction) {\n props.onEdit(editAction);\n }\n } else if (positionAdded) {\n // new tentative point\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: 'addTentativePosition',\n editContext: {\n position: event.mapCoords\n }\n });\n }\n }\n }, {\n key: \"handleKeyUp\",\n value: function handleKeyUp(event, props) {\n if (event.key === 'Enter') {\n var clickSequence = this.getClickSequence();\n\n if (clickSequence.length > 2) {\n var polygonToAdd = {\n type: 'Polygon',\n coordinates: [[].concat(_toConsumableArray(clickSequence), [clickSequence[0]])]\n };\n this.resetClickSequence();\n var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);\n\n if (editAction) {\n props.onEdit(editAction);\n }\n }\n }\n }\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor('cell');\n\n _get(_getPrototypeOf(DrawPolygonMode.prototype), \"handlePointerMove\", this).call(this, event, props);\n }\n }]);\n\n return DrawPolygonMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.DrawPolygonMode = DrawPolygonMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1wb2x5Z29uLW1vZGUudHMiXSwibmFtZXMiOlsiRHJhd1BvbHlnb25Nb2RlIiwicHJvcHMiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwibGFzdENvb3JkcyIsIm1hcENvb3JkcyIsInRlbnRhdGl2ZUZlYXR1cmUiLCJsZW5ndGgiLCJ0eXBlIiwicHJvcGVydGllcyIsImd1aWRlVHlwZSIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJndWlkZXMiLCJmZWF0dXJlcyIsImNyZWF0ZVRlbnRhdGl2ZUZlYXR1cmUiLCJwdXNoIiwiZWRpdEhhbmRsZXMiLCJtYXAiLCJjbGlja2VkQ29vcmQiLCJpbmRleCIsImVkaXRIYW5kbGVUeXBlIiwiZmVhdHVyZUluZGV4IiwicG9zaXRpb25JbmRleGVzIiwiZXZlbnQiLCJwaWNrcyIsImNsaWNrZWRFZGl0SGFuZGxlIiwib3ZlcmxhcHBpbmdMaW5lcyIsIm1vZGVDb25maWciLCJwcmV2ZW50T3ZlcmxhcHBpbmdMaW5lcyIsImN1cnJlbnRMaW5lIiwib3RoZXJMaW5lcyIsInNsaWNlIiwiaW50ZXJzZWN0aW5nUG9pbnRzIiwicG9zaXRpb25BZGRlZCIsImFkZENsaWNrU2VxdWVuY2UiLCJBcnJheSIsImlzQXJyYXkiLCJwb2x5Z29uVG9BZGQiLCJyZXNldENsaWNrU2VxdWVuY2UiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24iLCJvbkVkaXQiLCJ1cGRhdGVkRGF0YSIsImRhdGEiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0IiwicG9zaXRpb24iLCJrZXkiLCJvblVwZGF0ZUN1cnNvciIsIkdlb0pzb25FZGl0TW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQVNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsZTs7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LEVBQWdCO0FBQ2R4QyxZQUFBQSxLQUFLLENBQUMwQyxNQUFOLENBQWFGLFVBQWI7QUFDRDtBQUNGO0FBQ0Y7QUFDRjs7O3NDQUVpQmhCLEssRUFBeUJ4QixLLEVBQXFDO0FBQzlFQSxNQUFBQSxLQUFLLENBQUNpRCxjQUFOLENBQXFCLE1BQXJCOztBQUNBLDZGQUF3QnpCLEtBQXhCLEVBQStCeEIsS0FBL0I7QUFDRDs7OztFQW5Ka0NrRCxnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsaW5lSW50ZXJzZWN0IGZyb20gJ0B0dXJmL2xpbmUtaW50ZXJzZWN0JztcbmltcG9ydCB7IGxpbmVTdHJpbmcgYXMgdHVyZkxpbmVTdHJpbmcgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB7XG4gIENsaWNrRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgVGVudGF0aXZlRmVhdHVyZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUG9seWdvbiwgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IGdldFBpY2tlZEVkaXRIYW5kbGUgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUgfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcblxuZXhwb3J0IGNsYXNzIERyYXdQb2x5Z29uTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIGNyZWF0ZVRlbnRhdGl2ZUZlYXR1cmUocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBUZW50YXRpdmVGZWF0dXJlIHtcbiAgICBjb25zdCB7IGxhc3RQb2ludGVyTW92ZUV2ZW50IH0gPSBwcm9wcztcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBjb25zdCBsYXN0Q29vcmRzID0gbGFzdFBvaW50ZXJNb3ZlRXZlbnQgPyBbbGFzdFBvaW50ZXJNb3ZlRXZlbnQubWFwQ29vcmRzXSA6IFtdO1xuXG4gICAgbGV0IHRlbnRhdGl2ZUZlYXR1cmU7XG4gICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID09PSAxIHx8IGNsaWNrU2VxdWVuY2UubGVuZ3RoID09PSAyKSB7XG4gICAgICB0ZW50YXRpdmVGZWF0dXJlID0ge1xuICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBndWlkZVR5cGU6ICd0ZW50YXRpdmUnLFxuICAgICAgICB9LFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgICAgICBjb29yZGluYXRlczogWy4uLmNsaWNrU2VxdWVuY2UsIC4uLmxhc3RDb29yZHNdLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMikge1xuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtbLi4uY2xpY2tTZXF1ZW5jZSwgLi4ubGFzdENvb3JkcywgY2xpY2tTZXF1ZW5jZVswXV1dLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVudGF0aXZlRmVhdHVyZTtcbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IGd1aWRlcyA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogW10sXG4gICAgfTtcblxuICAgIGNvbnN0IHRlbnRhdGl2ZUZlYXR1cmUgPSB0aGlzLmNyZWF0ZVRlbnRhdGl2ZUZlYXR1cmUocHJvcHMpO1xuICAgIGlmICh0ZW50YXRpdmVGZWF0dXJlKSB7XG4gICAgICBndWlkZXMuZmVhdHVyZXMucHVzaCh0ZW50YXRpdmVGZWF0dXJlKTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0SGFuZGxlcyA9IGNsaWNrU2VxdWVuY2UubWFwKChjbGlja2VkQ29vcmQsIGluZGV4KSA9PiAoe1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgZWRpdEhhbmRsZVR5cGU6ICdleGlzdGluZycsXG4gICAgICAgIGZlYXR1cmVJbmRleDogLTEsXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlczogW2luZGV4XSxcbiAgICAgIH0sXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICBjb29yZGluYXRlczogY2xpY2tlZENvb3JkLFxuICAgICAgfSxcbiAgICB9KSk7XG5cbiAgICBndWlkZXMuZmVhdHVyZXMucHVzaCguLi5lZGl0SGFuZGxlcyk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCB7IHBpY2tzIH0gPSBldmVudDtcbiAgICBjb25zdCBjbGlja2VkRWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUocGlja3MpO1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGxldCBvdmVybGFwcGluZ0xpbmVzID0gZmFsc2U7XG4gICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMiAmJiBwcm9wcy5tb2RlQ29uZmlnICYmIHByb3BzLm1vZGVDb25maWcucHJldmVudE92ZXJsYXBwaW5nTGluZXMpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRMaW5lID0gdHVyZkxpbmVTdHJpbmcoW1xuICAgICAgICBjbGlja1NlcXVlbmNlW2NsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMV0sXG4gICAgICAgIGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgIF0pO1xuICAgICAgY29uc3Qgb3RoZXJMaW5lcyA9IHR1cmZMaW5lU3RyaW5nKFsuLi5jbGlja1NlcXVlbmNlLnNsaWNlKDAsIGNsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMSldKTtcbiAgICAgIGNvbnN0IGludGVyc2VjdGluZ1BvaW50cyA9IGxpbmVJbnRlcnNlY3QoY3VycmVudExpbmUsIG90aGVyTGluZXMpO1xuICAgICAgaWYgKGludGVyc2VjdGluZ1BvaW50cy5mZWF0dXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIG92ZXJsYXBwaW5nTGluZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwb3NpdGlvbkFkZGVkID0gZmFsc2U7XG4gICAgaWYgKCFjbGlja2VkRWRpdEhhbmRsZSAmJiAhb3ZlcmxhcHBpbmdMaW5lcykge1xuICAgICAgLy8gRG9uJ3QgYWRkIGFub3RoZXIgcG9pbnQgcmlnaHQgbmV4dCB0byBhbiBleGlzdGluZyBvbmVcbiAgICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG4gICAgICBwb3NpdGlvbkFkZGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBjbGlja1NlcXVlbmNlLmxlbmd0aCA+IDIgJiZcbiAgICAgIGNsaWNrZWRFZGl0SGFuZGxlICYmXG4gICAgICBBcnJheS5pc0FycmF5KGNsaWNrZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzKSAmJlxuICAgICAgKGNsaWNrZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzBdID09PSAwIHx8XG4gICAgICAgIGNsaWNrZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzBdID09PSBjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDEpXG4gICAgKSB7XG4gICAgICAvLyBUaGV5IGNsaWNrZWQgdGhlIGZpcnN0IG9yIGxhc3QgcG9pbnQgKG9yIGRvdWJsZS1jbGlja2VkKSwgc28gY29tcGxldGUgdGhlIHBvbHlnb25cblxuICAgICAgLy8gUmVtb3ZlIHRoZSBob3ZlcmVkIHBvc2l0aW9uXG4gICAgICBjb25zdCBwb2x5Z29uVG9BZGQ6IFBvbHlnb24gPSB7XG4gICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IFtbLi4uY2xpY2tTZXF1ZW5jZSwgY2xpY2tTZXF1ZW5jZVswXV1dLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24ocG9seWdvblRvQWRkLCBwcm9wcyk7XG4gICAgICBpZiAoZWRpdEFjdGlvbikge1xuICAgICAgICBwcm9wcy5vbkVkaXQoZWRpdEFjdGlvbik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwb3NpdGlvbkFkZGVkKSB7XG4gICAgICAvLyBuZXcgdGVudGF0aXZlIHBvaW50XG4gICAgICBwcm9wcy5vbkVkaXQoe1xuICAgICAgICAvLyBkYXRhIGlzIHRoZSBzYW1lXG4gICAgICAgIHVwZGF0ZWREYXRhOiBwcm9wcy5kYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ2FkZFRlbnRhdGl2ZVBvc2l0aW9uJyxcbiAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICBwb3NpdGlvbjogZXZlbnQubWFwQ29vcmRzLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMikge1xuICAgICAgICBjb25zdCBwb2x5Z29uVG9BZGQ6IFBvbHlnb24gPSB7XG4gICAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbWy4uLmNsaWNrU2VxdWVuY2UsIGNsaWNrU2VxdWVuY2VbMF1dXSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgICBjb25zdCBlZGl0QWN0aW9uID0gdGhpcy5nZXRBZGRGZWF0dXJlT3JCb29sZWFuUG9seWdvbkFjdGlvbihwb2x5Z29uVG9BZGQsIHByb3BzKTtcbiAgICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgICBwcm9wcy5vbkVkaXQoZWRpdEFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICAgIHN1cGVyLmhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50LCBwcm9wcyk7XG4gIH1cbn1cbiJdfQ==","import lineIntersect from '@turf/line-intersect';\nimport { lineString as turfLineString } from '@turf/helpers';\nimport {\n ClickEvent,\n PointerMoveEvent,\n ModeProps,\n GuideFeatureCollection,\n TentativeFeature,\n} from '../types';\nimport { Polygon, FeatureCollection } from '../geojson-types';\nimport { getPickedEditHandle } from '../utils';\nimport { GeoJsonEditMode } from './geojson-edit-mode';\n\nexport class DrawPolygonMode extends GeoJsonEditMode {\n createTentativeFeature(props: ModeProps): TentativeFeature {\n const { lastPointerMoveEvent } = props;\n const clickSequence = this.getClickSequence();\n\n const lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];\n\n let tentativeFeature;\n if (clickSequence.length === 1 || clickSequence.length === 2) {\n tentativeFeature = {\n type: 'Feature',\n properties: {\n guideType: 'tentative',\n },\n geometry: {\n type: 'LineString',\n coordinates: [...clickSequence, ...lastCoords],\n },\n };\n } else if (clickSequence.length > 2) {\n tentativeFeature = {\n type: 'Feature',\n properties: {\n guideType: 'tentative',\n },\n geometry: {\n type: 'Polygon',\n coordinates: [[...clickSequence, ...lastCoords, clickSequence[0]]],\n },\n };\n }\n\n return tentativeFeature;\n }\n\n getGuides(props: ModeProps): GuideFeatureCollection {\n const clickSequence = this.getClickSequence();\n\n const guides = {\n type: 'FeatureCollection',\n features: [],\n };\n\n const tentativeFeature = this.createTentativeFeature(props);\n if (tentativeFeature) {\n guides.features.push(tentativeFeature);\n }\n\n const editHandles = clickSequence.map((clickedCoord, index) => ({\n type: 'Feature',\n properties: {\n guideType: 'editHandle',\n editHandleType: 'existing',\n featureIndex: -1,\n positionIndexes: [index],\n },\n geometry: {\n type: 'Point',\n coordinates: clickedCoord,\n },\n }));\n\n guides.features.push(...editHandles);\n // @ts-ignore\n return guides;\n }\n\n handleClick(event: ClickEvent, props: ModeProps) {\n const { picks } = event;\n const clickedEditHandle = getPickedEditHandle(picks);\n const clickSequence = this.getClickSequence();\n\n let overlappingLines = false;\n if (clickSequence.length > 2 && props.modeConfig && props.modeConfig.preventOverlappingLines) {\n const currentLine = turfLineString([\n clickSequence[clickSequence.length - 1],\n event.mapCoords,\n ]);\n const otherLines = turfLineString([...clickSequence.slice(0, clickSequence.length - 1)]);\n const intersectingPoints = lineIntersect(currentLine, otherLines);\n if (intersectingPoints.features.length > 0) {\n overlappingLines = true;\n }\n }\n\n let positionAdded = false;\n if (!clickedEditHandle && !overlappingLines) {\n // Don't add another point right next to an existing one\n this.addClickSequence(event);\n positionAdded = true;\n }\n\n if (\n clickSequence.length > 2 &&\n clickedEditHandle &&\n Array.isArray(clickedEditHandle.properties.positionIndexes) &&\n (clickedEditHandle.properties.positionIndexes[0] === 0 ||\n clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1)\n ) {\n // They clicked the first or last point (or double-clicked), so complete the polygon\n\n // Remove the hovered position\n const polygonToAdd: Polygon = {\n type: 'Polygon',\n coordinates: [[...clickSequence, clickSequence[0]]],\n };\n\n this.resetClickSequence();\n\n const editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);\n if (editAction) {\n props.onEdit(editAction);\n }\n } else if (positionAdded) {\n // new tentative point\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: 'addTentativePosition',\n editContext: {\n position: event.mapCoords,\n },\n });\n }\n }\n\n handleKeyUp(event: KeyboardEvent, props: ModeProps) {\n if (event.key === 'Enter') {\n const clickSequence = this.getClickSequence();\n if (clickSequence.length > 2) {\n const polygonToAdd: Polygon = {\n type: 'Polygon',\n coordinates: [[...clickSequence, clickSequence[0]]],\n };\n this.resetClickSequence();\n\n const editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);\n if (editAction) {\n props.onEdit(editAction);\n }\n }\n }\n }\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps) {\n props.onUpdateCursor('cell');\n super.handlePointerMove(event, props);\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DrawRectangleMode = void 0;\n\nvar _bboxPolygon = _interopRequireDefault(require(\"@turf/bbox-polygon\"));\n\nvar _twoClickPolygonMode = require(\"./two-click-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawRectangleMode = /*#__PURE__*/function (_TwoClickPolygonMode) {\n _inherits(DrawRectangleMode, _TwoClickPolygonMode);\n\n var _super = _createSuper(DrawRectangleMode);\n\n function DrawRectangleMode() {\n _classCallCheck(this, DrawRectangleMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DrawRectangleMode, [{\n key: \"getTwoClickPolygon\",\n value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n var rectangle = (0, _bboxPolygon[\"default\"])([coord1[0], coord1[1], coord2[0], coord2[1]]);\n rectangle.properties = rectangle.properties || {};\n rectangle.properties.shape = 'Rectangle'; // @ts-ignore\n\n return rectangle;\n }\n }]);\n\n return DrawRectangleMode;\n}(_twoClickPolygonMode.TwoClickPolygonMode);\n\nexports.DrawRectangleMode = DrawRectangleMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1yZWN0YW5nbGUtbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3UmVjdGFuZ2xlTW9kZSIsImNvb3JkMSIsImNvb3JkMiIsIm1vZGVDb25maWciLCJyZWN0YW5nbGUiLCJwcm9wZXJ0aWVzIiwic2hhcGUiLCJUd29DbGlja1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLGlCOzs7Ozs7Ozs7Ozs7O3VDQUNRQyxNLEVBQWtCQyxNLEVBQWtCQyxVLEVBQXFDO0FBQzFGLFVBQU1DLFNBQVMsR0FBRyw2QkFBWSxDQUFDSCxNQUFNLENBQUMsQ0FBRCxDQUFQLEVBQVlBLE1BQU0sQ0FBQyxDQUFELENBQWxCLEVBQXVCQyxNQUFNLENBQUMsQ0FBRCxDQUE3QixFQUFrQ0EsTUFBTSxDQUFDLENBQUQsQ0FBeEMsQ0FBWixDQUFsQjtBQUNBRSxNQUFBQSxTQUFTLENBQUNDLFVBQVYsR0FBdUJELFNBQVMsQ0FBQ0MsVUFBVixJQUF3QixFQUEvQztBQUNBRCxNQUFBQSxTQUFTLENBQUNDLFVBQVYsQ0FBcUJDLEtBQXJCLEdBQTZCLFdBQTdCLENBSDBGLENBSzFGOztBQUNBLGFBQU9GLFNBQVA7QUFDRDs7OztFQVJvQ0csd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmJveFBvbHlnb24gZnJvbSAnQHR1cmYvYmJveC1wb2x5Z29uJztcbmltcG9ydCB7IFBvc2l0aW9uLCBQb2x5Z29uLCBGZWF0dXJlT2YgfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IFR3b0NsaWNrUG9seWdvbk1vZGUgfSBmcm9tICcuL3R3by1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd1JlY3RhbmdsZU1vZGUgZXh0ZW5kcyBUd29DbGlja1BvbHlnb25Nb2RlIHtcbiAgZ2V0VHdvQ2xpY2tQb2x5Z29uKGNvb3JkMTogUG9zaXRpb24sIGNvb3JkMjogUG9zaXRpb24sIG1vZGVDb25maWc6IGFueSk6IEZlYXR1cmVPZjxQb2x5Z29uPiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gYmJveFBvbHlnb24oW2Nvb3JkMVswXSwgY29vcmQxWzFdLCBjb29yZDJbMF0sIGNvb3JkMlsxXV0pO1xuICAgIHJlY3RhbmdsZS5wcm9wZXJ0aWVzID0gcmVjdGFuZ2xlLnByb3BlcnRpZXMgfHwge307XG4gICAgcmVjdGFuZ2xlLnByb3BlcnRpZXMuc2hhcGUgPSAnUmVjdGFuZ2xlJztcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gcmVjdGFuZ2xlO1xuICB9XG59XG4iXX0=","import bboxPolygon from '@turf/bbox-polygon';\nimport { Position, Polygon, FeatureOf } from '../geojson-types';\nimport { TwoClickPolygonMode } from './two-click-polygon-mode';\n\nexport class DrawRectangleMode extends TwoClickPolygonMode {\n getTwoClickPolygon(coord1: Position, coord2: Position, modeConfig: any): FeatureOf {\n const rectangle = bboxPolygon([coord1[0], coord1[1], coord2[0], coord2[1]]);\n rectangle.properties = rectangle.properties || {};\n rectangle.properties.shape = 'Rectangle';\n\n // @ts-ignore\n return rectangle;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TwoClickPolygonMode = void 0;\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar TwoClickPolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(TwoClickPolygonMode, _GeoJsonEditMode);\n\n var _super = _createSuper(TwoClickPolygonMode);\n\n function TwoClickPolygonMode() {\n _classCallCheck(this, TwoClickPolygonMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(TwoClickPolygonMode, [{\n key: \"handleClick\",\n value: function handleClick(event, props) {\n if (props.modeConfig && props.modeConfig.dragToDraw) {\n // handled in drag handlers\n return;\n }\n\n this.addClickSequence(event);\n this.checkAndFinishPolygon(props);\n }\n }, {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n if (!props.modeConfig || !props.modeConfig.dragToDraw) {\n // handled in click handlers\n return;\n }\n\n this.addClickSequence(event);\n event.cancelPan();\n }\n }, {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n if (!props.modeConfig || !props.modeConfig.dragToDraw) {\n // handled in click handlers\n return;\n }\n\n this.addClickSequence(event);\n this.checkAndFinishPolygon(props);\n }\n }, {\n key: \"checkAndFinishPolygon\",\n value: function checkAndFinishPolygon(props) {\n var clickSequence = this.getClickSequence();\n var tentativeFeature = this.getTentativeGuide(props);\n\n if (clickSequence.length > 1 && tentativeFeature && tentativeFeature.geometry.type === 'Polygon') {\n var feature = {\n type: 'Feature',\n properties: {\n shape: tentativeFeature.properties.shape\n },\n geometry: {\n type: 'Polygon',\n coordinates: tentativeFeature.geometry.coordinates\n }\n };\n var editAction = this.getAddFeatureOrBooleanPolygonAction(feature, props);\n this.resetClickSequence();\n\n if (editAction) {\n props.onEdit(editAction);\n }\n }\n }\n }, {\n key: \"getGuides\",\n value: function getGuides(props) {\n var lastPointerMoveEvent = props.lastPointerMoveEvent,\n modeConfig = props.modeConfig;\n var clickSequence = this.getClickSequence();\n var guides = {\n type: 'FeatureCollection',\n features: []\n };\n\n if (clickSequence.length === 0) {\n // nothing to do yet\n return guides;\n }\n\n var corner1 = clickSequence[0];\n var corner2 = lastPointerMoveEvent.mapCoords;\n var polygon = this.getTwoClickPolygon(corner1, corner2, modeConfig);\n\n if (polygon) {\n guides.features.push({\n type: 'Feature',\n properties: {\n shape: polygon.properties && polygon.properties.shape,\n guideType: 'tentative'\n },\n geometry: polygon.geometry\n });\n }\n\n return guides;\n }\n }, {\n key: \"getTwoClickPolygon\",\n value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n return null;\n }\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor('cell');\n\n _get(_getPrototypeOf(TwoClickPolygonMode.prototype), \"handlePointerMove\", this).call(this, event, props);\n }\n }, {\n key: \"createTentativeFeature\",\n value: function createTentativeFeature(props) {\n var lastPointerMoveEvent = props.lastPointerMoveEvent;\n var clickSequence = this.getClickSequence();\n var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];\n var tentativeFeature;\n\n if (clickSequence.length === 1) {\n tentativeFeature = this.getTwoClickPolygon(clickSequence[0], lastCoords[0], props.modeConfig);\n }\n\n return tentativeFeature;\n }\n }]);\n\n return TwoClickPolygonMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.TwoClickPolygonMode = TwoClickPolygonMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHdvLWNsaWNrLXBvbHlnb24tbW9kZS50cyJdLCJuYW1lcyI6WyJUd29DbGlja1BvbHlnb25Nb2RlIiwiZXZlbnQiLCJwcm9wcyIsIm1vZGVDb25maWciLCJkcmFnVG9EcmF3IiwiYWRkQ2xpY2tTZXF1ZW5jZSIsImNoZWNrQW5kRmluaXNoUG9seWdvbiIsImNhbmNlbFBhbiIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwidGVudGF0aXZlRmVhdHVyZSIsImdldFRlbnRhdGl2ZUd1aWRlIiwibGVuZ3RoIiwiZ2VvbWV0cnkiLCJ0eXBlIiwiZmVhdHVyZSIsInByb3BlcnRpZXMiLCJzaGFwZSIsImNvb3JkaW5hdGVzIiwiZWRpdEFjdGlvbiIsImdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uIiwicmVzZXRDbGlja1NlcXVlbmNlIiwib25FZGl0IiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJndWlkZXMiLCJmZWF0dXJlcyIsImNvcm5lcjEiLCJjb3JuZXIyIiwibWFwQ29vcmRzIiwicG9seWdvbiIsImdldFR3b0NsaWNrUG9seWdvbiIsInB1c2giLCJndWlkZVR5cGUiLCJjb29yZDEiLCJjb29yZDIiLCJvblVwZGF0ZUN1cnNvciIsImxhc3RDb29yZHMiLCJHZW9Kc29uRWRpdE1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFVQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxtQjs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFtQkMsSyxFQUFxQztBQUNsRSxVQUFJQSxLQUFLLENBQUNDLFVBQU4sSUFBb0JELEtBQUssQ0FBQ0MsVUFBTixDQUFpQkMsVUFBekMsRUFBcUQ7QUFDbkQ7QUFDQTtBQUNEOztBQUVELFdBQUtDLGdCQUFMLENBQXNCSixLQUF0QjtBQUVBLFdBQUtLLHFCQUFMLENBQTJCSixLQUEzQjtBQUNEOzs7d0NBRW1CRCxLLEVBQTJCQyxLLEVBQTJDO0FBQ3hGLFVBQUks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SUFBUDtBQUNEOzs7c0NBRWlCRixLLEVBQXlCQyxLLEVBQXFDO0FBQzlFQSxNQUFBQSxLQUFLLENBQUNpQyxjQUFOLENBQXFCLE1BQXJCOztBQUNBLGlHQUF3QmxDLEtBQXhCLEVBQStCQyxLQUEvQjtBQUNEOzs7MkNBRXNCQSxLLEVBQXVEO0FBQUEsVUFDcEVxQixvQkFEb0UsR0FDM0NyQixLQUQyQyxDQUNwRXFCLG9CQURvRTtBQUU1RSxVQUFNZixhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7QUFFQSxVQUFNMkIsVUFBVSxHQUFHYixvQkFBb0IsR0FBRyxDQUFDQSxvQkFBb0IsQ0FBQ0ssU0FBdEIsQ0FBSCxHQUFzQyxFQUE3RTtBQUVBLFVBQUlsQixnQkFBSjs7QUFDQSxVQUFJRixhQUFhLENBQUNJLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUJGLFFBQUFBLGdCQUFnQixHQUFHLEtBQUtvQixrQkFBTCxDQUF3QnRCLGFBQWEsQ0FBQyxDQUFELENBQXJDLEVBQTBDNEIsVUFBVSxDQUFDLENBQUQsQ0FBcEQsRUFBeURsQyxLQUFLLENBQUNDLFVBQS9ELENBQW5CO0FBQ0Q7O0FBRUQsYUFBT08sZ0JBQVA7QUFDRDs7OztFQXRIc0MyQixnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENsaWNrRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgVGVudGF0aXZlRmVhdHVyZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUG9seWdvbiwgRmVhdHVyZUNvbGxlY3Rpb24sIEZlYXR1cmVPZiwgUG9zaXRpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgVHdvQ2xpY2tQb2x5Z29uTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmIChwcm9wcy5tb2RlQ29uZmlnICYmIHByb3BzLm1vZGVDb25maWcuZHJhZ1RvRHJhdykge1xuICAgICAgLy8gaGFuZGxlZCBpbiBkcmFnIGhhbmRsZXJzXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hZGRDbGlja1NlcXVlbmNlKGV2ZW50KTtcblxuICAgIHRoaXMuY2hlY2tBbmRGaW5pc2hQb2x5Z29uKHByb3BzKTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBpZiAoIXByb3BzLm1vZGVDb25maWcgfHwgIXByb3BzLm1vZGVDb25maWcuZHJhZ1RvRHJhdykge1xuICAgICAgLy8gaGFuZGxlZCBpbiBjbGljayBoYW5kbGVyc1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG4gICAgZXZlbnQuY2FuY2VsUGFuKCk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge1xuICAgIGlmICghcHJvcHMubW9kZUNvbmZpZyB8fCAhcHJvcHMubW9kZUNvbmZpZy5kcmFnVG9EcmF3KSB7XG4gICAgICAvLyBoYW5kbGVkIGluIGNsaWNrIGhhbmRsZXJzXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG5cbiAgICB0aGlzLmNoZWNrQW5kRmluaXNoUG9seWdvbihwcm9wcyk7XG4gIH1cblxuICBjaGVja0FuZEZpbmlzaFBvbHlnb24ocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGVudGF0aXZlR3VpZGUocHJvcHMpO1xuXG4gICAgaWYgKFxuICAgICAgY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAxICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJ1xuICAgICkge1xuICAgICAgY29uc3QgZmVhdHVyZTogRmVhdHVyZU9mPFBvbHlnb24+ID0ge1xuICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBzaGFwZTogdGVudGF0aXZlRmVhdHVyZS5wcm9wZXJ0aWVzLnNoYXBlLFxuICAgICAgICB9LFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgICBjb29yZGluYXRlczogdGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlcyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBlZGl0QWN0aW9uID0gdGhpcy5nZXRBZGRGZWF0dXJlT3JCb29sZWFuUG9seWdvbkFjdGlvbihmZWF0dXJlLCBwcm9wcyk7XG5cbiAgICAgIHRoaXMucmVzZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICAgIGlmIChlZGl0QWN0aW9uKSB7XG4gICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCB7IGxhc3RQb2ludGVyTW92ZUV2ZW50LCBtb2RlQ29uZmlnIH0gPSBwcm9wcztcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBjb25zdCBndWlkZXM6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24gPSB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtdLFxuICAgIH07XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG8geWV0XG4gICAgICByZXR1cm4gZ3VpZGVzO1xuICAgIH1cblxuICAgIGNvbnN0IGNvcm5lcjEgPSBjbGlja1NlcXVlbmNlWzBdO1xuICAgIGNvbnN0IGNvcm5lcjIgPSBsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHM7XG5cbiAgICBjb25zdCBwb2x5Z29uID0gdGhpcy5nZXRUd29DbGlja1BvbHlnb24oY29ybmVyMSwgY29ybmVyMiwgbW9kZUNvbmZpZyk7XG4gICAgaWYgKHBvbHlnb24pIHtcbiAgICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgc2hhcGU6IHBvbHlnb24ucHJvcGVydGllcyAmJiBwb2x5Z29uLnByb3BlcnRpZXMuc2hhcGUsXG4gICAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvbWV0cnk6IHBvbHlnb24uZ2VvbWV0cnksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3VpZGVzO1xuICB9XG5cbiAgZ2V0VHdvQ2xpY2tQb2x5Z29uKFxuICAgIGNvb3JkMTogUG9zaXRpb24sXG4gICAgY29vcmQyOiBQb3NpdGlvbixcbiAgICBtb2RlQ29uZmlnOiBhbnlcbiAgKTogRmVhdHVyZU9mPFBvbHlnb24+IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICAgIHN1cGVyLmhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50LCBwcm9wcyk7XG4gIH1cblxuICBjcmVhdGVUZW50YXRpdmVGZWF0dXJlKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogVGVudGF0aXZlRmVhdHVyZSB7XG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgbGFzdENvb3JkcyA9IGxhc3RQb2ludGVyTW92ZUV2ZW50ID8gW2xhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkc10gOiBbXTtcblxuICAgIGxldCB0ZW50YXRpdmVGZWF0dXJlO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VHdvQ2xpY2tQb2x5Z29uKGNsaWNrU2VxdWVuY2VbMF0sIGxhc3RDb29yZHNbMF0sIHByb3BzLm1vZGVDb25maWcpO1xuICAgIH1cblxuICAgIHJldHVybiB0ZW50YXRpdmVGZWF0dXJlO1xuICB9XG59XG4iXX0=","import {\n ClickEvent,\n StartDraggingEvent,\n StopDraggingEvent,\n PointerMoveEvent,\n ModeProps,\n GuideFeatureCollection,\n TentativeFeature,\n} from '../types';\nimport { Polygon, FeatureCollection, FeatureOf, Position } from '../geojson-types';\nimport { GeoJsonEditMode } from './geojson-edit-mode';\n\nexport class TwoClickPolygonMode extends GeoJsonEditMode {\n handleClick(event: ClickEvent, props: ModeProps) {\n if (props.modeConfig && props.modeConfig.dragToDraw) {\n // handled in drag handlers\n return;\n }\n\n this.addClickSequence(event);\n\n this.checkAndFinishPolygon(props);\n }\n\n handleStartDragging(event: StartDraggingEvent, props: ModeProps): void {\n if (!props.modeConfig || !props.modeConfig.dragToDraw) {\n // handled in click handlers\n return;\n }\n\n this.addClickSequence(event);\n event.cancelPan();\n }\n\n handleStopDragging(event: StopDraggingEvent, props: ModeProps): void {\n if (!props.modeConfig || !props.modeConfig.dragToDraw) {\n // handled in click handlers\n return;\n }\n this.addClickSequence(event);\n\n this.checkAndFinishPolygon(props);\n }\n\n checkAndFinishPolygon(props: ModeProps) {\n const clickSequence = this.getClickSequence();\n const tentativeFeature = this.getTentativeGuide(props);\n\n if (\n clickSequence.length > 1 &&\n tentativeFeature &&\n tentativeFeature.geometry.type === 'Polygon'\n ) {\n const feature: FeatureOf = {\n type: 'Feature',\n properties: {\n shape: tentativeFeature.properties.shape,\n },\n geometry: {\n type: 'Polygon',\n coordinates: tentativeFeature.geometry.coordinates,\n },\n };\n const editAction = this.getAddFeatureOrBooleanPolygonAction(feature, props);\n\n this.resetClickSequence();\n\n if (editAction) {\n props.onEdit(editAction);\n }\n }\n }\n\n getGuides(props: ModeProps): GuideFeatureCollection {\n const { lastPointerMoveEvent, modeConfig } = props;\n const clickSequence = this.getClickSequence();\n\n const guides: GuideFeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (clickSequence.length === 0) {\n // nothing to do yet\n return guides;\n }\n\n const corner1 = clickSequence[0];\n const corner2 = lastPointerMoveEvent.mapCoords;\n\n const polygon = this.getTwoClickPolygon(corner1, corner2, modeConfig);\n if (polygon) {\n guides.features.push({\n type: 'Feature',\n properties: {\n shape: polygon.properties && polygon.properties.shape,\n guideType: 'tentative',\n },\n geometry: polygon.geometry,\n });\n }\n\n return guides;\n }\n\n getTwoClickPolygon(\n coord1: Position,\n coord2: Position,\n modeConfig: any\n ): FeatureOf | null | undefined {\n return null;\n }\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps) {\n props.onUpdateCursor('cell');\n super.handlePointerMove(event, props);\n }\n\n createTentativeFeature(props: ModeProps): TentativeFeature {\n const { lastPointerMoveEvent } = props;\n const clickSequence = this.getClickSequence();\n\n const lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];\n\n let tentativeFeature;\n if (clickSequence.length === 1) {\n tentativeFeature = this.getTwoClickPolygon(clickSequence[0], lastCoords[0], props.modeConfig);\n }\n\n return tentativeFeature;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DrawSquareMode = void 0;\n\nvar _bboxPolygon = _interopRequireDefault(require(\"@turf/bbox-polygon\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _along = _interopRequireDefault(require(\"@turf/along\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _twoClickPolygonMode = require(\"./two-click-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawSquareMode = /*#__PURE__*/function (_TwoClickPolygonMode) {\n _inherits(DrawSquareMode, _TwoClickPolygonMode);\n\n var _super = _createSuper(DrawSquareMode);\n\n function DrawSquareMode() {\n _classCallCheck(this, DrawSquareMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DrawSquareMode, [{\n key: \"getTwoClickPolygon\",\n value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n // get the coordinates of the other two rectangle vertices\n var coord3 = [coord2[0], coord1[1]];\n var coord4 = [coord1[0], coord2[1]]; // determine the shortest distance to the origin, which will be the length of each square side\n\n var distance1 = (0, _distance[\"default\"])((0, _helpers.point)(coord3), (0, _helpers.point)(coord1));\n var distance2 = (0, _distance[\"default\"])((0, _helpers.point)(coord4), (0, _helpers.point)(coord1));\n var shortestDistance = distance1 <= distance2 ? distance1 : distance2; // determine which coordinate pair of the two is closest to the origin\n\n var closestPoint = distance1 <= distance2 ? coord3 : coord4; // create a linestring which will used to locate the second square vertex\n\n var line = (0, _helpers.lineString)([closestPoint, coord2]); // get the coordinates of the second square vertex\n\n var newPoint = (0, _along[\"default\"])(line, shortestDistance);\n var corner = newPoint.geometry.coordinates;\n var square = (0, _bboxPolygon[\"default\"])([coord1[0], coord1[1], corner[0], corner[1]]);\n square.properties = square.properties || {};\n square.properties.shape = 'Square'; // @ts-ignore\n\n return square;\n }\n }]);\n\n return DrawSquareMode;\n}(_twoClickPolygonMode.TwoClickPolygonMode);\n\nexports.DrawSquareMode = DrawSquareMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1zcXVhcmUtbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3U3F1YXJlTW9kZSIsImNvb3JkMSIsImNvb3JkMiIsIm1vZGVDb25maWciLCJjb29yZDMiLCJjb29yZDQiLCJkaXN0YW5jZTEiLCJkaXN0YW5jZTIiLCJzaG9ydGVzdERpc3RhbmNlIiwiY2xvc2VzdFBvaW50IiwibGluZSIsIm5ld1BvaW50IiwiY29ybmVyIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsInNxdWFyZSIsInByb3BlcnRpZXMiLCJzaGFwZSIsIlR3b0NsaWNrUG9seWdvbk1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsYzs7Ozs7Ozs7Ozs7Ozt1Q0FDUUMsTSxFQUFrQkMsTSxFQUFrQkMsVSxFQUFxQztBQUMxRjtBQUNBLFVBQU1DLE1BQU0sR0FBRyxDQUFDRixNQUFNLENBQUMsQ0FBRCxDQUFQLEVBQVlELE1BQU0sQ0FBQyxDQUFELENBQWxCLENBQWY7QUFDQSxVQUFNSSxNQUFNLEdBQUcsQ0FBQ0osTUFBTSxDQUFDLENBQUQsQ0FBUCxFQUFZQyxNQUFNLENBQUMsQ0FBRCxDQUFsQixDQUFmLENBSDBGLENBSzFGOztBQUNBLFVBQU1JLFNBQVMsR0FBRywwQkFBYSxvQkFBTUYsTUFBTixDQUFiLEVBQTRCLG9CQUFNSCxNQUFOLENBQTVCLENBQWxCO0FBQ0EsVUFBTU0sU0FBUyxHQUFHLDBCQUFhLG9CQUFNRixNQUFOLENBQWIsRUFBNEIsb0JBQU1KLE1BQU4sQ0FBNUIsQ0FBbEI7QUFDQSxVQUFNTyxnQkFBZ0IsR0FBR0YsU0FBUyxJQUFJQyxTQUFiLEdBQXlCRCxTQUF6QixHQUFxQ0MsU0FBOUQsQ0FSMEYsQ0FVMUY7O0FBQ0EsVUFBTUUsWUFBWSxHQUFHSCxTQUFTLElBQUlDLFNBQWIsR0FBeUJILE1BQXpCLEdBQWtDQyxNQUF2RCxDQVgwRixDQWExRjs7QUFDQSxVQUFNSyxJQUFJLEdBQUcseUJBQWUsQ0FBQ0QsWUFBRCxFQUFlUCxNQUFmLENBQWYsQ0FBYixDQWQwRixDQWdCMUY7O0FBQ0EsVUFBTVMsUUFBUSxHQUFHLHVCQUFVRCxJQUFWLEVBQWdCRixnQkFBaEIsQ0FBakI7QUFDQSxVQUFNSSxNQUFNLEdBQUdELFFBQVEsQ0FBQ0UsUUFBVCxDQUFrQkMsV0FBakM7QUFFQSxVQUFNQyxNQUFNLEdBQUcsNkJBQVksQ0FBQ2QsTUFBTSxDQUFDLENBQUQsQ0FBUCxFQUFZQSxNQUFNLENBQUMsQ0FBRCxDQUFsQixFQUF1QlcsTUFBTSxDQUFDLENBQUQsQ0FBN0IsRUFBa0NBLE1BQU0sQ0FBQyxDQUFELENBQXhDLENBQVosQ0FBZjtBQUNBRyxNQUFBQSxNQUFNLENBQUNDLFVBQVAsR0FBb0JELE1BQU0sQ0FBQ0MsVUFBUCxJQUFxQixFQUF6QztBQUNBRCxNQUFBQSxNQUFNLENBQUNDLFVBQVAsQ0FBa0JDLEtBQWxCLEdBQTBCLFFBQTFCLENBdEIwRixDQXdCMUY7O0FBQ0EsYUFBT0YsTUFBUDtBQUNEOzs7O0VBM0JpQ0csd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmJveFBvbHlnb24gZnJvbSAnQHR1cmYvYmJveC1wb2x5Z29uJztcbmltcG9ydCB0dXJmRGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHR1cmZBbG9uZyBmcm9tICdAdHVyZi9hbG9uZyc7XG5pbXBvcnQgeyBwb2ludCwgbGluZVN0cmluZyBhcyB0dXJmTGluZVN0cmluZyB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IHsgUG9zaXRpb24sIFBvbHlnb24sIEZlYXR1cmVPZiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgVHdvQ2xpY2tQb2x5Z29uTW9kZSB9IGZyb20gJy4vdHdvLWNsaWNrLXBvbHlnb24tbW9kZSc7XG5cbmV4cG9ydCBjbGFzcyBEcmF3U3F1YXJlTW9kZSBleHRlbmRzIFR3b0NsaWNrUG9seWdvbk1vZGUge1xuICBnZXRUd29DbGlja1BvbHlnb24oY29vcmQxOiBQb3NpdGlvbiwgY29vcmQyOiBQb3NpdGlvbiwgbW9kZUNvbmZpZzogYW55KTogRmVhdHVyZU9mPFBvbHlnb24+IHtcbiAgICAvLyBnZXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBvdGhlciB0d28gcmVjdGFuZ2xlIHZlcnRpY2VzXG4gICAgY29uc3QgY29vcmQzID0gW2Nvb3JkMlswXSwgY29vcmQxWzFdXTtcbiAgICBjb25zdCBjb29yZDQgPSBbY29vcmQxWzBdLCBjb29yZDJbMV1dO1xuXG4gICAgLy8gZGV0ZXJtaW5lIHRoZSBzaG9ydGVzdCBkaXN0YW5jZSB0byB0aGUgb3JpZ2luLCB3aGljaCB3aWxsIGJlIHRoZSBsZW5ndGggb2YgZWFjaCBzcXVhcmUgc2lkZVxuICAgIGNvbnN0IGRpc3RhbmNlMSA9IHR1cmZEaXN0YW5jZShwb2ludChjb29yZDMpLCBwb2ludChjb29yZDEpKTtcbiAgICBjb25zdCBkaXN0YW5jZTIgPSB0dXJmRGlzdGFuY2UocG9pbnQoY29vcmQ0KSwgcG9pbnQoY29vcmQxKSk7XG4gICAgY29uc3Qgc2hvcnRlc3REaXN0YW5jZSA9IGRpc3RhbmNlMSA8PSBkaXN0YW5jZTIgPyBkaXN0YW5jZTEgOiBkaXN0YW5jZTI7XG5cbiAgICAvLyBkZXRlcm1pbmUgd2hpY2ggY29vcmRpbmF0ZSBwYWlyIG9mIHRoZSB0d28gaXMgY2xvc2VzdCB0byB0aGUgb3JpZ2luXG4gICAgY29uc3QgY2xvc2VzdFBvaW50ID0gZGlzdGFuY2UxIDw9IGRpc3RhbmNlMiA/IGNvb3JkMyA6IGNvb3JkNDtcblxuICAgIC8vIGNyZWF0ZSBhIGxpbmVzdHJpbmcgd2hpY2ggd2lsbCB1c2VkIHRvIGxvY2F0ZSB0aGUgc2Vjb25kIHNxdWFyZSB2ZXJ0ZXhcbiAgICBjb25zdCBsaW5lID0gdHVyZkxpbmVTdHJpbmcoW2Nsb3Nlc3RQb2ludCwgY29vcmQyXSk7XG5cbiAgICAvLyBnZXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBzZWNvbmQgc3F1YXJlIHZlcnRleFxuICAgIGNvbnN0IG5ld1BvaW50ID0gdHVyZkFsb25nKGxpbmUsIHNob3J0ZXN0RGlzdGFuY2UpO1xuICAgIGNvbnN0IGNvcm5lciA9IG5ld1BvaW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuXG4gICAgY29uc3Qgc3F1YXJlID0gYmJveFBvbHlnb24oW2Nvb3JkMVswXSwgY29vcmQxWzFdLCBjb3JuZXJbMF0sIGNvcm5lclsxXV0pO1xuICAgIHNxdWFyZS5wcm9wZXJ0aWVzID0gc3F1YXJlLnByb3BlcnRpZXMgfHwge307XG4gICAgc3F1YXJlLnByb3BlcnRpZXMuc2hhcGUgPSAnU3F1YXJlJztcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gc3F1YXJlO1xuICB9XG59XG4iXX0=","import bboxPolygon from '@turf/bbox-polygon';\nimport turfDistance from '@turf/distance';\nimport turfAlong from '@turf/along';\nimport { point, lineString as turfLineString } from '@turf/helpers';\nimport { Position, Polygon, FeatureOf } from '../geojson-types';\nimport { TwoClickPolygonMode } from './two-click-polygon-mode';\n\nexport class DrawSquareMode extends TwoClickPolygonMode {\n getTwoClickPolygon(coord1: Position, coord2: Position, modeConfig: any): FeatureOf {\n // get the coordinates of the other two rectangle vertices\n const coord3 = [coord2[0], coord1[1]];\n const coord4 = [coord1[0], coord2[1]];\n\n // determine the shortest distance to the origin, which will be the length of each square side\n const distance1 = turfDistance(point(coord3), point(coord1));\n const distance2 = turfDistance(point(coord4), point(coord1));\n const shortestDistance = distance1 <= distance2 ? distance1 : distance2;\n\n // determine which coordinate pair of the two is closest to the origin\n const closestPoint = distance1 <= distance2 ? coord3 : coord4;\n\n // create a linestring which will used to locate the second square vertex\n const line = turfLineString([closestPoint, coord2]);\n\n // get the coordinates of the second square vertex\n const newPoint = turfAlong(line, shortestDistance);\n const corner = newPoint.geometry.coordinates;\n\n const square = bboxPolygon([coord1[0], coord1[1], corner[0], corner[1]]);\n square.properties = square.properties || {};\n square.properties.shape = 'Square';\n\n // @ts-ignore\n return square;\n }\n}\n","import bearing from \"@turf/bearing\";\nimport destination from \"@turf/destination\";\nimport measureDistance from \"@turf/distance\";\nimport { point } from \"@turf/helpers\";\nimport { getGeom } from \"@turf/invariant\";\n/**\n * Takes a {@link LineString} and returns a {@link Point} at a specified distance along the line.\n *\n * @name along\n * @param {Feature} line input line\n * @param {number} distance distance along the line\n * @param {Object} [options] Optional parameters\n * @param {string} [options.units=\"kilometers\"] can be degrees, radians, miles, or kilometers\n * @returns {Feature} Point `distance` `units` along the line\n * @example\n * var line = turf.lineString([[-83, 30], [-84, 36], [-78, 41]]);\n * var options = {units: 'miles'};\n *\n * var along = turf.along(line, 200, options);\n *\n * //addToMap\n * var addToMap = [along, line]\n */\nexport default function along(line, distance, options) {\n if (options === void 0) { options = {}; }\n // Get Coords\n var geom = getGeom(line);\n var coords = geom.coordinates;\n var travelled = 0;\n for (var i = 0; i < coords.length; i++) {\n if (distance >= travelled && i === coords.length - 1) {\n break;\n }\n else if (travelled >= distance) {\n var overshot = distance - travelled;\n if (!overshot) {\n return point(coords[i]);\n }\n else {\n var direction = bearing(coords[i], coords[i - 1]) - 180;\n var interpolated = destination(coords[i], overshot, direction, options);\n return interpolated;\n }\n }\n else {\n travelled += measureDistance(coords[i], coords[i + 1], options);\n }\n }\n return point(coords[coords.length - 1]);\n}\n","import { degreesToRadians, radiansToDegrees } from \"@turf/helpers\";\nimport { getCoord } from \"@turf/invariant\";\n// http://en.wikipedia.org/wiki/Haversine_formula\n// http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Takes two {@link Point|points} and finds the geographic bearing between them,\n * i.e. the angle measured in degrees from the north line (0 degrees)\n *\n * @name bearing\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.final=false] calculates the final bearing if true\n * @returns {number} bearing in decimal degrees, between -180 and 180 degrees (positive clockwise)\n * @example\n * var point1 = turf.point([-75.343, 39.984]);\n * var point2 = turf.point([-75.534, 39.123]);\n *\n * var bearing = turf.bearing(point1, point2);\n *\n * //addToMap\n * var addToMap = [point1, point2]\n * point1.properties['marker-color'] = '#f00'\n * point2.properties['marker-color'] = '#0f0'\n * point1.properties.bearing = bearing\n */\nexport default function bearing(start, end, options) {\n if (options === void 0) { options = {}; }\n // Reverse calculation\n if (options.final === true) {\n return calculateFinalBearing(start, end);\n }\n var coordinates1 = getCoord(start);\n var coordinates2 = getCoord(end);\n var lon1 = degreesToRadians(coordinates1[0]);\n var lon2 = degreesToRadians(coordinates2[0]);\n var lat1 = degreesToRadians(coordinates1[1]);\n var lat2 = degreesToRadians(coordinates2[1]);\n var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n var b = Math.cos(lat1) * Math.sin(lat2) -\n Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n return radiansToDegrees(Math.atan2(a, b));\n}\n/**\n * Calculates Final Bearing\n *\n * @private\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @returns {number} bearing\n */\nfunction calculateFinalBearing(start, end) {\n // Swap start & end\n var bear = bearing(end, start);\n bear = (bear + 180) % 360;\n return bear;\n}\n","/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexport var earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: earthRadius / 111325,\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var unitsFactors = {\n centimeters: 100,\n centimetres: 100,\n degrees: 1 / 111325,\n feet: 3.28084,\n inches: 39.37,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n meters: 1,\n metres: 1,\n miles: 1 / 1609.344,\n millimeters: 1000,\n millimetres: 1000,\n nauticalmiles: 1 / 1852,\n radians: 1 / earthRadius,\n yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var areaFactors = {\n acres: 0.000247105,\n centimeters: 10000,\n centimetres: 10000,\n feet: 10.763910417,\n hectares: 0.0001,\n inches: 1550.003100006,\n kilometers: 0.000001,\n kilometres: 0.000001,\n meters: 1,\n metres: 1,\n miles: 3.86e-7,\n millimeters: 1000000,\n millimetres: 1000000,\n yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nexport function feature(geom, properties, options) {\n if (options === void 0) { options = {}; }\n var feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nexport function geometry(type, coordinates, _options) {\n if (_options === void 0) { _options = {}; }\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nexport function point(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n var geom = {\n type: \"Point\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nexport function points(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nexport function polygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n var ring = coordinates_1[_i];\n if (ring.length < 4) {\n throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n var geom = {\n type: \"Polygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nexport function polygons(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nexport function lineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n var geom = {\n type: \"LineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nexport function lineStrings(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nexport function featureCollection(features, options) {\n if (options === void 0) { options = {}; }\n var fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nexport function multiLineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiLineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nexport function multiPoint(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPoint\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nexport function multiPolygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPolygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nexport function geometryCollection(geometries, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"GeometryCollection\",\n geometries: geometries,\n };\n return feature(geom, properties, options);\n}\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nexport function round(num, precision) {\n if (precision === void 0) { precision = 0; }\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nexport function radiansToLength(radians, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nexport function lengthToRadians(distance, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nexport function lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nexport function bearingToAzimuth(bearing) {\n var angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nexport function radiansToDegrees(radians) {\n var degrees = radians % (2 * Math.PI);\n return (degrees * 180) / Math.PI;\n}\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nexport function degreesToRadians(degrees) {\n var radians = degrees % 360;\n return (radians * Math.PI) / 180;\n}\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nexport function convertLength(length, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nexport function convertArea(area, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"meters\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n var startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n var finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return (area / startFactor) * finalFactor;\n}\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nexport function isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nexport function isObject(input) {\n return !!input && input.constructor === Object;\n}\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nexport function validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach(function (num) {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nexport function validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\n","import { isNumber, } from \"@turf/helpers\";\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nexport function getCoord(coord) {\n if (!coord) {\n throw new Error(\"coord is required\");\n }\n if (!Array.isArray(coord)) {\n if (coord.type === \"Feature\" &&\n coord.geometry !== null &&\n coord.geometry.type === \"Point\") {\n return coord.geometry.coordinates;\n }\n if (coord.type === \"Point\") {\n return coord.coordinates;\n }\n }\n if (Array.isArray(coord) &&\n coord.length >= 2 &&\n !Array.isArray(coord[0]) &&\n !Array.isArray(coord[1])) {\n return coord;\n }\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nexport function getCoords(coords) {\n if (Array.isArray(coords)) {\n return coords;\n }\n // Feature\n if (coords.type === \"Feature\") {\n if (coords.geometry !== null) {\n return coords.geometry.coordinates;\n }\n }\n else {\n // Geometry\n if (coords.coordinates) {\n return coords.coordinates;\n }\n }\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nexport function containsNumber(coordinates) {\n if (coordinates.length > 1 &&\n isNumber(coordinates[0]) &&\n isNumber(coordinates[1])) {\n return true;\n }\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error(\"coordinates must only contain numbers\");\n}\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nexport function geojsonType(value, type, name) {\n if (!type || !name) {\n throw new Error(\"type and name required\");\n }\n if (!value || value.type !== type) {\n throw new Error(\"Invalid input to \" +\n name +\n \": must be a \" +\n type +\n \", given \" +\n value.type);\n }\n}\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nexport function featureOf(feature, type, name) {\n if (!feature) {\n throw new Error(\"No feature passed\");\n }\n if (!name) {\n throw new Error(\".featureOf() requires a name\");\n }\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\"Invalid input to \" +\n name +\n \": must be a \" +\n type +\n \", given \" +\n feature.geometry.type);\n }\n}\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nexport function collectionOf(featureCollection, type, name) {\n if (!featureCollection) {\n throw new Error(\"No featureCollection passed\");\n }\n if (!name) {\n throw new Error(\".collectionOf() requires a name\");\n }\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n }\n for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n var feature = _a[_i];\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\"Invalid input to \" +\n name +\n \": must be a \" +\n type +\n \", given \" +\n feature.geometry.type);\n }\n }\n}\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nexport function getGeom(geojson) {\n if (geojson.type === \"Feature\") {\n return geojson.geometry;\n }\n return geojson;\n}\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nexport function getType(geojson, _name) {\n if (geojson.type === \"FeatureCollection\") {\n return \"FeatureCollection\";\n }\n if (geojson.type === \"GeometryCollection\") {\n return \"GeometryCollection\";\n }\n if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n return geojson.geometry.type;\n }\n return geojson.type;\n}\n","// http://en.wikipedia.org/wiki/Haversine_formula\n// http://www.movable-type.co.uk/scripts/latlong.html\nimport { degreesToRadians, lengthToRadians, point, radiansToDegrees, } from \"@turf/helpers\";\nimport { getCoord } from \"@turf/invariant\";\n/**\n * Takes a {@link Point} and calculates the location of a destination point given a distance in\n * degrees, radians, miles, or kilometers; and bearing in degrees.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name destination\n * @param {Coord} origin starting point\n * @param {number} distance distance from the origin point\n * @param {number} bearing ranging from -180 to 180\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians\n * @param {Object} [options.properties={}] Translate properties to Point\n * @returns {Feature} destination point\n * @example\n * var point = turf.point([-75.343, 39.984]);\n * var distance = 50;\n * var bearing = 90;\n * var options = {units: 'miles'};\n *\n * var destination = turf.destination(point, distance, bearing, options);\n *\n * //addToMap\n * var addToMap = [point, destination]\n * destination.properties['marker-color'] = '#f00';\n * point.properties['marker-color'] = '#0f0';\n */\nexport default function destination(origin, distance, bearing, options) {\n if (options === void 0) { options = {}; }\n // Handle input\n var coordinates1 = getCoord(origin);\n var longitude1 = degreesToRadians(coordinates1[0]);\n var latitude1 = degreesToRadians(coordinates1[1]);\n var bearingRad = degreesToRadians(bearing);\n var radians = lengthToRadians(distance, options.units);\n // Main\n var latitude2 = Math.asin(Math.sin(latitude1) * Math.cos(radians) +\n Math.cos(latitude1) * Math.sin(radians) * Math.cos(bearingRad));\n var longitude2 = longitude1 +\n Math.atan2(Math.sin(bearingRad) * Math.sin(radians) * Math.cos(latitude1), Math.cos(radians) - Math.sin(latitude1) * Math.sin(latitude2));\n var lng = radiansToDegrees(longitude2);\n var lat = radiansToDegrees(latitude2);\n return point([lng, lat], options.properties);\n}\n","import { getCoord } from \"@turf/invariant\";\nimport { radiansToLength, degreesToRadians, } from \"@turf/helpers\";\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Calculates the distance between two {@link Point|points} in degrees, radians, miles, or kilometers.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name distance\n * @param {Coord | Point} from origin point or coordinate\n * @param {Coord | Point} to destination point or coordinate\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.distance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */\nfunction distance(from, to, options) {\n if (options === void 0) { options = {}; }\n var coordinates1 = getCoord(from);\n var coordinates2 = getCoord(to);\n var dLat = degreesToRadians(coordinates2[1] - coordinates1[1]);\n var dLon = degreesToRadians(coordinates2[0] - coordinates1[0]);\n var lat1 = degreesToRadians(coordinates1[1]);\n var lat2 = degreesToRadians(coordinates2[1]);\n var a = Math.pow(Math.sin(dLat / 2), 2) +\n Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n return radiansToLength(2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)), options.units);\n}\nexport default distance;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DrawRectangleFromCenterMode = void 0;\n\nvar _bboxPolygon = _interopRequireDefault(require(\"@turf/bbox-polygon\"));\n\nvar _twoClickPolygonMode = require(\"./two-click-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawRectangleFromCenterMode = /*#__PURE__*/function (_TwoClickPolygonMode) {\n _inherits(DrawRectangleFromCenterMode, _TwoClickPolygonMode);\n\n var _super = _createSuper(DrawRectangleFromCenterMode);\n\n function DrawRectangleFromCenterMode() {\n _classCallCheck(this, DrawRectangleFromCenterMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DrawRectangleFromCenterMode, [{\n key: \"getTwoClickPolygon\",\n value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n var longitude = coord1[0] > coord2[0] ? coord1[0] + Math.abs(coord1[0] - coord2[0]) : coord1[0] - Math.abs(coord1[0] - coord2[0]);\n var latitude = coord1[1] > coord2[1] ? coord1[1] + Math.abs(coord1[1] - coord2[1]) : coord1[1] - Math.abs(coord1[1] - coord2[1]);\n var rectangle = (0, _bboxPolygon[\"default\"])([longitude, latitude, coord2[0], coord2[1]]);\n rectangle.properties = rectangle.properties || {};\n rectangle.properties.shape = 'Rectangle'; // @ts-ignore\n\n return rectangle;\n }\n }]);\n\n return DrawRectangleFromCenterMode;\n}(_twoClickPolygonMode.TwoClickPolygonMode);\n\nexports.DrawRectangleFromCenterMode = DrawRectangleFromCenterMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1yZWN0YW5nbGUtZnJvbS1jZW50ZXItbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3UmVjdGFuZ2xlRnJvbUNlbnRlck1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwibG9uZ2l0dWRlIiwiTWF0aCIsImFicyIsImxhdGl0dWRlIiwicmVjdGFuZ2xlIiwicHJvcGVydGllcyIsInNoYXBlIiwiVHdvQ2xpY2tQb2x5Z29uTW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSwyQjs7Ozs7Ozs7Ozs7Ozt1Q0FDUUMsTSxFQUFrQkMsTSxFQUFrQkMsVSxFQUFxQztBQUMxRixVQUFNQyxTQUFTLEdBQ2JILE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWUMsTUFBTSxDQUFDLENBQUQsQ0FBbEIsR0FDSUQsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZSSxJQUFJLENBQUNDLEdBQUwsQ0FBU0wsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZQyxNQUFNLENBQUMsQ0FBRCxDQUEzQixDQURoQixHQUVJRCxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVlJLElBQUksQ0FBQ0MsR0FBTCxDQUFTTCxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVlDLE1BQU0sQ0FBQyxDQUFELENBQTNCLENBSGxCO0FBSUEsVUFBTUssUUFBUSxHQUNaTixNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVlDLE1BQU0sQ0FBQyxDQUFELENBQWxCLEdBQ0lELE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWUksSUFBSSxDQUFDQyxHQUFMLENBQVNMLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWUMsTUFBTSxDQUFDLENBQUQsQ0FBM0IsQ0FEaEIsR0FFSUQsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZSSxJQUFJLENBQUNDLEdBQUwsQ0FBU0wsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZQyxNQUFNLENBQUMsQ0FBRCxDQUEzQixDQUhsQjtBQUtBLFVBQU1NLFNBQVMsR0FBRyw2QkFBWSxDQUFDSixTQUFELEVBQVlHLFFBQVosRUFBc0JMLE1BQU0sQ0FBQyxDQUFELENBQTVCLEVBQWlDQSxNQUFNLENBQUMsQ0FBRCxDQUF2QyxDQUFaLENBQWxCO0FBQ0FNLE1BQUFBLFNBQVMsQ0FBQ0MsVUFBVixHQUF1QkQsU0FBUyxDQUFDQyxVQUFWLElBQXdCLEVBQS9DO0FBQ0FELE1BQUFBLFNBQVMsQ0FBQ0MsVUFBVixDQUFxQkMsS0FBckIsR0FBNkIsV0FBN0IsQ0FaMEYsQ0FjMUY7O0FBQ0EsYUFBT0YsU0FBUDtBQUNEOzs7O0VBakI4Q0csd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmJveFBvbHlnb24gZnJvbSAnQHR1cmYvYmJveC1wb2x5Z29uJztcbmltcG9ydCB7IFBvc2l0aW9uLCBQb2x5Z29uLCBGZWF0dXJlT2YgfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IFR3b0NsaWNrUG9seWdvbk1vZGUgfSBmcm9tICcuL3R3by1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd1JlY3RhbmdsZUZyb21DZW50ZXJNb2RlIGV4dGVuZHMgVHdvQ2xpY2tQb2x5Z29uTW9kZSB7XG4gIGdldFR3b0NsaWNrUG9seWdvbihjb29yZDE6IFBvc2l0aW9uLCBjb29yZDI6IFBvc2l0aW9uLCBtb2RlQ29uZmlnOiBhbnkpOiBGZWF0dXJlT2Y8UG9seWdvbj4ge1xuICAgIGNvbnN0IGxvbmdpdHVkZSA9XG4gICAgICBjb29yZDFbMF0gPiBjb29yZDJbMF1cbiAgICAgICAgPyBjb29yZDFbMF0gKyBNYXRoLmFicyhjb29yZDFbMF0gLSBjb29yZDJbMF0pXG4gICAgICAgIDogY29vcmQxWzBdIC0gTWF0aC5hYnMoY29vcmQxWzBdIC0gY29vcmQyWzBdKTtcbiAgICBjb25zdCBsYXRpdHVkZSA9XG4gICAgICBjb29yZDFbMV0gPiBjb29yZDJbMV1cbiAgICAgICAgPyBjb29yZDFbMV0gKyBNYXRoLmFicyhjb29yZDFbMV0gLSBjb29yZDJbMV0pXG4gICAgICAgIDogY29vcmQxWzFdIC0gTWF0aC5hYnMoY29vcmQxWzFdIC0gY29vcmQyWzFdKTtcblxuICAgIGNvbnN0IHJlY3RhbmdsZSA9IGJib3hQb2x5Z29uKFtsb25naXR1ZGUsIGxhdGl0dWRlLCBjb29yZDJbMF0sIGNvb3JkMlsxXV0pO1xuICAgIHJlY3RhbmdsZS5wcm9wZXJ0aWVzID0gcmVjdGFuZ2xlLnByb3BlcnRpZXMgfHwge307XG4gICAgcmVjdGFuZ2xlLnByb3BlcnRpZXMuc2hhcGUgPSAnUmVjdGFuZ2xlJztcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gcmVjdGFuZ2xlO1xuICB9XG59XG4iXX0=","import bboxPolygon from '@turf/bbox-polygon';\nimport { Position, Polygon, FeatureOf } from '../geojson-types';\nimport { TwoClickPolygonMode } from './two-click-polygon-mode';\n\nexport class DrawRectangleFromCenterMode extends TwoClickPolygonMode {\n getTwoClickPolygon(coord1: Position, coord2: Position, modeConfig: any): FeatureOf {\n const longitude =\n coord1[0] > coord2[0]\n ? coord1[0] + Math.abs(coord1[0] - coord2[0])\n : coord1[0] - Math.abs(coord1[0] - coord2[0]);\n const latitude =\n coord1[1] > coord2[1]\n ? coord1[1] + Math.abs(coord1[1] - coord2[1])\n : coord1[1] - Math.abs(coord1[1] - coord2[1]);\n\n const rectangle = bboxPolygon([longitude, latitude, coord2[0], coord2[1]]);\n rectangle.properties = rectangle.properties || {};\n rectangle.properties.shape = 'Rectangle';\n\n // @ts-ignore\n return rectangle;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DrawSquareFromCenterMode = void 0;\n\nvar _bboxPolygon = _interopRequireDefault(require(\"@turf/bbox-polygon\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _along = _interopRequireDefault(require(\"@turf/along\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _twoClickPolygonMode = require(\"./two-click-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawSquareFromCenterMode = /*#__PURE__*/function (_TwoClickPolygonMode) {\n _inherits(DrawSquareFromCenterMode, _TwoClickPolygonMode);\n\n var _super = _createSuper(DrawSquareFromCenterMode);\n\n function DrawSquareFromCenterMode() {\n _classCallCheck(this, DrawSquareFromCenterMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DrawSquareFromCenterMode, [{\n key: \"getTwoClickPolygon\",\n value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n // get the coordinates of the other two rectangle vertices\n var coord3 = [coord2[0], coord1[1]];\n var coord4 = [coord1[0], coord2[1]]; // determine the shortest distance to the origin, which will be the length of each square side\n\n var distance1 = (0, _distance[\"default\"])((0, _helpers.point)(coord3), (0, _helpers.point)(coord1));\n var distance2 = (0, _distance[\"default\"])((0, _helpers.point)(coord4), (0, _helpers.point)(coord1));\n var shortestDistance = distance1 <= distance2 ? distance1 : distance2; // determine which coordinate pair of the two is closest to the origin\n\n var closestPoint = distance1 <= distance2 ? coord3 : coord4; // create a linestring which will used to locate the second square vertex\n\n var line = (0, _helpers.lineString)([closestPoint, coord2]); // get the coordinates of the second square vertex\n\n var newPoint = (0, _along[\"default\"])(line, shortestDistance);\n var corner = newPoint.geometry.coordinates; // determine the longitude and latitude values of the opposite corner\n\n var longitude = coord1[0] > corner[0] ? coord1[0] + Math.abs(coord1[0] - corner[0]) : coord1[0] - Math.abs(coord1[0] - corner[0]);\n var latitude = coord1[1] > corner[1] ? coord1[1] + Math.abs(coord1[1] - corner[1]) : coord1[1] - Math.abs(coord1[1] - corner[1]);\n var square = (0, _bboxPolygon[\"default\"])([longitude, latitude, corner[0], corner[1]]);\n square.properties = square.properties || {};\n square.properties.shape = 'Square'; // @ts-ignore\n\n return square;\n }\n }]);\n\n return DrawSquareFromCenterMode;\n}(_twoClickPolygonMode.TwoClickPolygonMode);\n\nexports.DrawSquareFromCenterMode = DrawSquareFromCenterMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1zcXVhcmUtZnJvbS1jZW50ZXItbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3U3F1YXJlRnJvbUNlbnRlck1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwiY29vcmQzIiwiY29vcmQ0IiwiZGlzdGFuY2UxIiwiZGlzdGFuY2UyIiwic2hvcnRlc3REaXN0YW5jZSIsImNsb3Nlc3RQb2ludCIsImxpbmUiLCJuZXdQb2ludCIsImNvcm5lciIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJsb25naXR1ZGUiLCJNYXRoIiwiYWJzIiwibGF0aXR1ZGUiLCJzcXVhcmUiLCJwcm9wZXJ0aWVzIiwic2hhcGUiLCJUd29DbGlja1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLHdCOzs7Ozs7Ozs7Ozs7O3VDQUNRQyxNLEVBQWtCQyxNLEVBQWtCQyxVLEVBQXFDO0FBQzFGO0FBQ0EsVUFBTUMsTUFBTSxHQUFHLENBQUNGLE1BQU0sQ0FBQyxDQUFELENBQVAsRUFBWUQsTUFBTSxDQUFDLENBQUQsQ0FBbEIsQ0FBZjtBQUNBLFVBQU1JLE1BQU0sR0FBRyxDQUFDSixNQUFNLENBQUMsQ0FBRCxDQUFQLEVBQVlDLE1BQU0sQ0FBQyxDQUFELENBQWxCLENBQWYsQ0FIMEYsQ0FLMUY7O0FBQ0EsVUFBTUksU0FBUyxHQUFHLDBCQUFhLG9CQUFNRixNQUFOLENBQWIsRUFBNEIsb0JBQU1ILE1BQU4sQ0FBNUIsQ0FBbEI7QUFDQSxVQUFNTSxTQUFTLEdBQUcsMEJBQWEsb0JBQU1GLE1BQU4sQ0FBYixFQUE0QixvQkFBTUosTUFBTixDQUE1QixDQUFsQjtBQUNBLFVBQU1PLGdCQUFnQixHQUFHRixTQUFTLElBQUlDLFNBQWIsR0FBeUJELFNBQXpCLEdBQXFDQyxTQUE5RCxDQVIwRixDQVUxRjs7QUFDQSxVQUFNRSxZQUFZLEdBQUdILFNBQVMsSUFBSUMsU0FBYixHQUF5QkgsTUFBekIsR0FBa0NDLE1BQXZELENBWDBGLENBYTFGOztBQUNBLFVBQU1LLElBQUksR0FBRyx5QkFBZSxDQUFDRCxZQUFELEVBQWVQLE1BQWYsQ0FBZixDQUFiLENBZDBGLENBZ0IxRjs7QUFDQSxVQUFNUyxRQUFRLEdBQUcsdUJBQVVELElBQVYsRUFBZ0JGLGdCQUFoQixDQUFqQjtBQUNBLFVBQU1JLE1BQU0sR0FBR0QsUUFBUSxDQUFDRSxRQUFULENBQWtCQyxXQUFqQyxDQWxCMEYsQ0FvQjFGOztBQUNBLFVBQU1DLFNBQVMsR0FDYmQsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZVyxNQUFNLENBQUMsQ0FBRCxDQUFsQixHQUNJWCxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVllLElBQUksQ0FBQ0MsR0FBTCxDQUFTaEIsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZVyxNQUFNLENBQUMsQ0FBRCxDQUEzQixDQURoQixHQUVJWCxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVllLElBQUksQ0FBQ0MsR0FBTCxDQUFTaEIsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZVyxNQUFNLENBQUMsQ0FBRCxDQUEzQixDQUhsQjtBQUlBLFVBQU1NLFFBQVEsR0FDWmpCLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWVcsTUFBTSxDQUFDLENBQUQsQ0FBbEIsR0FDSVgsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZZSxJQUFJLENBQUNDLEdBQUwsQ0FBU2hCLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWVcsTUFBTSxDQUFDLENBQUQsQ0FBM0IsQ0FEaEIsR0FFSVgsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZZSxJQUFJLENBQUNDLEdBQUwsQ0FBU2hCLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWVcsTUFBTSxDQUFDLENBQUQsQ0FBM0IsQ0FIbEI7QUFLQSxVQUFNTyxNQUFNLEdBQUcsNkJBQVksQ0FBQ0osU0FBRCxFQUFZRyxRQUFaLEVBQXNCTixNQUFNLENBQUMsQ0FBRCxDQUE1QixFQUFpQ0EsTUFBTSxDQUFDLENBQUQsQ0FBdkMsQ0FBWixDQUFmO0FBQ0FPLE1BQUFBLE1BQU0sQ0FBQ0MsVUFBUCxHQUFvQkQsTUFBTSxDQUFDQyxVQUFQLElBQXFCLEVBQXpDO0FBQ0FELE1BQUFBLE1BQU0sQ0FBQ0MsVUFBUCxDQUFrQkMsS0FBbEIsR0FBMEIsUUFBMUIsQ0FoQzBGLENBa0MxRjs7QUFDQSxhQUFPRixNQUFQO0FBQ0Q7Ozs7RUFyQzJDRyx3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgdHVyZkFsb25nIGZyb20gJ0B0dXJmL2Fsb25nJztcbmltcG9ydCB7IHBvaW50LCBsaW5lU3RyaW5nIGFzIHR1cmZMaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb3NpdGlvbiwgUG9seWdvbiwgRmVhdHVyZU9mIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBUd29DbGlja1BvbHlnb25Nb2RlIH0gZnJvbSAnLi90d28tY2xpY2stcG9seWdvbi1tb2RlJztcblxuZXhwb3J0IGNsYXNzIERyYXdTcXVhcmVGcm9tQ2VudGVyTW9kZSBleHRlbmRzIFR3b0NsaWNrUG9seWdvbk1vZGUge1xuICBnZXRUd29DbGlja1BvbHlnb24oY29vcmQxOiBQb3NpdGlvbiwgY29vcmQyOiBQb3NpdGlvbiwgbW9kZUNvbmZpZzogYW55KTogRmVhdHVyZU9mPFBvbHlnb24+IHtcbiAgICAvLyBnZXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBvdGhlciB0d28gcmVjdGFuZ2xlIHZlcnRpY2VzXG4gICAgY29uc3QgY29vcmQzID0gW2Nvb3JkMlswXSwgY29vcmQxWzFdXTtcbiAgICBjb25zdCBjb29yZDQgPSBbY29vcmQxWzBdLCBjb29yZDJbMV1dO1xuXG4gICAgLy8gZGV0ZXJtaW5lIHRoZSBzaG9ydGVzdCBkaXN0YW5jZSB0byB0aGUgb3JpZ2luLCB3aGljaCB3aWxsIGJlIHRoZSBsZW5ndGggb2YgZWFjaCBzcXVhcmUgc2lkZVxuICAgIGNvbnN0IGRpc3RhbmNlMSA9IHR1cmZEaXN0YW5jZShwb2ludChjb29yZDMpLCBwb2ludChjb29yZDEpKTtcbiAgICBjb25zdCBkaXN0YW5jZTIgPSB0dXJmRGlzdGFuY2UocG9pbnQoY29vcmQ0KSwgcG9pbnQoY29vcmQxKSk7XG4gICAgY29uc3Qgc2hvcnRlc3REaXN0YW5jZSA9IGRpc3RhbmNlMSA8PSBkaXN0YW5jZTIgPyBkaXN0YW5jZTEgOiBkaXN0YW5jZTI7XG5cbiAgICAvLyBkZXRlcm1pbmUgd2hpY2ggY29vcmRpbmF0ZSBwYWlyIG9mIHRoZSB0d28gaXMgY2xvc2VzdCB0byB0aGUgb3JpZ2luXG4gICAgY29uc3QgY2xvc2VzdFBvaW50ID0gZGlzdGFuY2UxIDw9IGRpc3RhbmNlMiA/IGNvb3JkMyA6IGNvb3JkNDtcblxuICAgIC8vIGNyZWF0ZSBhIGxpbmVzdHJpbmcgd2hpY2ggd2lsbCB1c2VkIHRvIGxvY2F0ZSB0aGUgc2Vjb25kIHNxdWFyZSB2ZXJ0ZXhcbiAgICBjb25zdCBsaW5lID0gdHVyZkxpbmVTdHJpbmcoW2Nsb3Nlc3RQb2ludCwgY29vcmQyXSk7XG5cbiAgICAvLyBnZXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBzZWNvbmQgc3F1YXJlIHZlcnRleFxuICAgIGNvbnN0IG5ld1BvaW50ID0gdHVyZkFsb25nKGxpbmUsIHNob3J0ZXN0RGlzdGFuY2UpO1xuICAgIGNvbnN0IGNvcm5lciA9IG5ld1BvaW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuXG4gICAgLy8gZGV0ZXJtaW5lIHRoZSBsb25naXR1ZGUgYW5kIGxhdGl0dWRlIHZhbHVlcyBvZiB0aGUgb3Bwb3NpdGUgY29ybmVyXG4gICAgY29uc3QgbG9uZ2l0dWRlID1cbiAgICAgIGNvb3JkMVswXSA+IGNvcm5lclswXVxuICAgICAgICA/IGNvb3JkMVswXSArIE1hdGguYWJzKGNvb3JkMVswXSAtIGNvcm5lclswXSlcbiAgICAgICAgOiBjb29yZDFbMF0gLSBNYXRoLmFicyhjb29yZDFbMF0gLSBjb3JuZXJbMF0pO1xuICAgIGNvbnN0IGxhdGl0dWRlID1cbiAgICAgIGNvb3JkMVsxXSA+IGNvcm5lclsxXVxuICAgICAgICA/IGNvb3JkMVsxXSArIE1hdGguYWJzKGNvb3JkMVsxXSAtIGNvcm5lclsxXSlcbiAgICAgICAgOiBjb29yZDFbMV0gLSBNYXRoLmFicyhjb29yZDFbMV0gLSBjb3JuZXJbMV0pO1xuXG4gICAgY29uc3Qgc3F1YXJlID0gYmJveFBvbHlnb24oW2xvbmdpdHVkZSwgbGF0aXR1ZGUsIGNvcm5lclswXSwgY29ybmVyWzFdXSk7XG4gICAgc3F1YXJlLnByb3BlcnRpZXMgPSBzcXVhcmUucHJvcGVydGllcyB8fCB7fTtcbiAgICBzcXVhcmUucHJvcGVydGllcy5zaGFwZSA9ICdTcXVhcmUnO1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBzcXVhcmU7XG4gIH1cbn1cbiJdfQ==","import bboxPolygon from '@turf/bbox-polygon';\nimport turfDistance from '@turf/distance';\nimport turfAlong from '@turf/along';\nimport { point, lineString as turfLineString } from '@turf/helpers';\nimport { Position, Polygon, FeatureOf } from '../geojson-types';\nimport { TwoClickPolygonMode } from './two-click-polygon-mode';\n\nexport class DrawSquareFromCenterMode extends TwoClickPolygonMode {\n getTwoClickPolygon(coord1: Position, coord2: Position, modeConfig: any): FeatureOf {\n // get the coordinates of the other two rectangle vertices\n const coord3 = [coord2[0], coord1[1]];\n const coord4 = [coord1[0], coord2[1]];\n\n // determine the shortest distance to the origin, which will be the length of each square side\n const distance1 = turfDistance(point(coord3), point(coord1));\n const distance2 = turfDistance(point(coord4), point(coord1));\n const shortestDistance = distance1 <= distance2 ? distance1 : distance2;\n\n // determine which coordinate pair of the two is closest to the origin\n const closestPoint = distance1 <= distance2 ? coord3 : coord4;\n\n // create a linestring which will used to locate the second square vertex\n const line = turfLineString([closestPoint, coord2]);\n\n // get the coordinates of the second square vertex\n const newPoint = turfAlong(line, shortestDistance);\n const corner = newPoint.geometry.coordinates;\n\n // determine the longitude and latitude values of the opposite corner\n const longitude =\n coord1[0] > corner[0]\n ? coord1[0] + Math.abs(coord1[0] - corner[0])\n : coord1[0] - Math.abs(coord1[0] - corner[0]);\n const latitude =\n coord1[1] > corner[1]\n ? coord1[1] + Math.abs(coord1[1] - corner[1])\n : coord1[1] - Math.abs(coord1[1] - corner[1]);\n\n const square = bboxPolygon([longitude, latitude, corner[0], corner[1]]);\n square.properties = square.properties || {};\n square.properties.shape = 'Square';\n\n // @ts-ignore\n return square;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DrawCircleByDiameterMode = void 0;\n\nvar _circle = _interopRequireDefault(require(\"@turf/circle\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _twoClickPolygonMode = require(\"./two-click-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawCircleByDiameterMode = /*#__PURE__*/function (_TwoClickPolygonMode) {\n _inherits(DrawCircleByDiameterMode, _TwoClickPolygonMode);\n\n var _super = _createSuper(DrawCircleByDiameterMode);\n\n function DrawCircleByDiameterMode() {\n _classCallCheck(this, DrawCircleByDiameterMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DrawCircleByDiameterMode, [{\n key: \"getTwoClickPolygon\",\n value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n // Default turf value for circle is 64\n var _ref = modeConfig || {},\n _ref$steps = _ref.steps,\n steps = _ref$steps === void 0 ? 64 : _ref$steps;\n\n var options = {\n steps: steps\n };\n\n if (steps < 4) {\n console.warn(\"Minimum steps to draw a circle is 4 \"); // eslint-disable-line no-console,no-undef\n\n options.steps = 4;\n }\n\n var centerCoordinates = (0, _geojsonEditMode.getIntermediatePosition)(coord1, coord2);\n var radius = Math.max((0, _distance[\"default\"])(coord1, centerCoordinates), 0.001);\n var geometry = (0, _circle[\"default\"])(centerCoordinates, radius, options);\n geometry.properties = geometry.properties || {};\n geometry.properties.shape = 'Circle';\n return geometry;\n }\n }]);\n\n return DrawCircleByDiameterMode;\n}(_twoClickPolygonMode.TwoClickPolygonMode);\n\nexports.DrawCircleByDiameterMode = DrawCircleByDiameterMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1jaXJjbGUtYnktZGlhbWV0ZXItbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3Q2lyY2xlQnlEaWFtZXRlck1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwic3RlcHMiLCJvcHRpb25zIiwiY29uc29sZSIsIndhcm4iLCJjZW50ZXJDb29yZGluYXRlcyIsInJhZGl1cyIsIk1hdGgiLCJtYXgiLCJnZW9tZXRyeSIsInByb3BlcnRpZXMiLCJzaGFwZSIsIlR3b0NsaWNrUG9seWdvbk1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsd0I7Ozs7Ozs7Ozs7Ozs7dUNBQ1FDLE0sRUFBa0JDLE0sRUFBa0JDLFUsRUFBcUM7QUFDMUY7QUFEMEYsaUJBRW5FQSxVQUFVLElBQUksRUFGcUQ7QUFBQSw0QkFFbEZDLEtBRmtGO0FBQUEsVUFFbEZBLEtBRmtGLDJCQUUxRSxFQUYwRTs7QUFHMUYsVUFBTUMsT0FBTyxHQUFHO0FBQUVELFFBQUFBLEtBQUssRUFBTEE7QUFBRixPQUFoQjs7QUFFQSxVQUFJQSxLQUFLLEdBQUcsQ0FBWixFQUFlO0FBQ2JFLFFBQUFBLE9BQU8sQ0FBQ0MsSUFBUix5Q0FEYSxDQUN5Qzs7QUFDdERGLFFBQUFBLE9BQU8sQ0FBQ0QsS0FBUixHQUFnQixDQUFoQjtBQUNEOztBQUVELFVBQU1JLGlCQUFpQixHQUFHLDhDQUF3QlAsTUFBeEIsRUFBZ0NDLE1BQWhDLENBQTFCO0FBQ0EsVUFBTU8sTUFBTSxHQUFHQyxJQUFJLENBQUNDLEdBQUwsQ0FBUywwQkFBU1YsTUFBVCxFQUFpQk8saUJBQWpCLENBQVQsRUFBOEMsS0FBOUMsQ0FBZjtBQUVBLFVBQU1JLFFBQVEsR0FBRyx3QkFBT0osaUJBQVAsRUFBMEJDLE1BQTFCLEVBQWtDSixPQUFsQyxDQUFqQjtBQUVBTyxNQUFBQSxRQUFRLENBQUNDLFVBQVQsR0FBc0JELFFBQVEsQ0FBQ0MsVUFBVCxJQUF1QixFQUE3QztBQUNBRCxNQUFBQSxRQUFRLENBQUNDLFVBQVQsQ0FBb0JDLEtBQXBCLEdBQTRCLFFBQTVCO0FBRUEsYUFBT0YsUUFBUDtBQUNEOzs7O0VBcEIyQ0csd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2lyY2xlIGZyb20gJ0B0dXJmL2NpcmNsZSc7XG5pbXBvcnQgZGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHsgUG9zaXRpb24sIFBvbHlnb24sIEZlYXR1cmVPZiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24gfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcbmltcG9ydCB7IFR3b0NsaWNrUG9seWdvbk1vZGUgfSBmcm9tICcuL3R3by1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd0NpcmNsZUJ5RGlhbWV0ZXJNb2RlIGV4dGVuZHMgVHdvQ2xpY2tQb2x5Z29uTW9kZSB7XG4gIGdldFR3b0NsaWNrUG9seWdvbihjb29yZDE6IFBvc2l0aW9uLCBjb29yZDI6IFBvc2l0aW9uLCBtb2RlQ29uZmlnOiBhbnkpOiBGZWF0dXJlT2Y8UG9seWdvbj4ge1xuICAgIC8vIERlZmF1bHQgdHVyZiB2YWx1ZSBmb3IgY2lyY2xlIGlzIDY0XG4gICAgY29uc3QgeyBzdGVwcyA9IDY0IH0gPSBtb2RlQ29uZmlnIHx8IHt9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHN0ZXBzIH07XG5cbiAgICBpZiAoc3RlcHMgPCA0KSB7XG4gICAgICBjb25zb2xlLndhcm4oYE1pbmltdW0gc3RlcHMgdG8gZHJhdyBhIGNpcmNsZSBpcyA0IGApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIG9wdGlvbnMuc3RlcHMgPSA0O1xuICAgIH1cblxuICAgIGNvbnN0IGNlbnRlckNvb3JkaW5hdGVzID0gZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24oY29vcmQxLCBjb29yZDIpO1xuICAgIGNvbnN0IHJhZGl1cyA9IE1hdGgubWF4KGRpc3RhbmNlKGNvb3JkMSwgY2VudGVyQ29vcmRpbmF0ZXMpLCAwLjAwMSk7XG5cbiAgICBjb25zdCBnZW9tZXRyeSA9IGNpcmNsZShjZW50ZXJDb29yZGluYXRlcywgcmFkaXVzLCBvcHRpb25zKTtcblxuICAgIGdlb21ldHJ5LnByb3BlcnRpZXMgPSBnZW9tZXRyeS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgIGdlb21ldHJ5LnByb3BlcnRpZXMuc2hhcGUgPSAnQ2lyY2xlJztcblxuICAgIHJldHVybiBnZW9tZXRyeTtcbiAgfVxufVxuIl19","import circle from '@turf/circle';\nimport distance from '@turf/distance';\nimport { Position, Polygon, FeatureOf } from '../geojson-types';\nimport { getIntermediatePosition } from './geojson-edit-mode';\nimport { TwoClickPolygonMode } from './two-click-polygon-mode';\n\nexport class DrawCircleByDiameterMode extends TwoClickPolygonMode {\n getTwoClickPolygon(coord1: Position, coord2: Position, modeConfig: any): FeatureOf {\n // Default turf value for circle is 64\n const { steps = 64 } = modeConfig || {};\n const options = { steps };\n\n if (steps < 4) {\n console.warn(`Minimum steps to draw a circle is 4 `); // eslint-disable-line no-console,no-undef\n options.steps = 4;\n }\n\n const centerCoordinates = getIntermediatePosition(coord1, coord2);\n const radius = Math.max(distance(coord1, centerCoordinates), 0.001);\n\n const geometry = circle(centerCoordinates, radius, options);\n\n geometry.properties = geometry.properties || {};\n geometry.properties.shape = 'Circle';\n\n return geometry;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DrawCircleFromCenterMode = void 0;\n\nvar _circle = _interopRequireDefault(require(\"@turf/circle\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _twoClickPolygonMode = require(\"./two-click-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawCircleFromCenterMode = /*#__PURE__*/function (_TwoClickPolygonMode) {\n _inherits(DrawCircleFromCenterMode, _TwoClickPolygonMode);\n\n var _super = _createSuper(DrawCircleFromCenterMode);\n\n function DrawCircleFromCenterMode() {\n _classCallCheck(this, DrawCircleFromCenterMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DrawCircleFromCenterMode, [{\n key: \"getTwoClickPolygon\",\n value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n // Default turf value for circle is 64\n var _ref = modeConfig || {},\n _ref$steps = _ref.steps,\n steps = _ref$steps === void 0 ? 64 : _ref$steps;\n\n var options = {\n steps: steps\n };\n\n if (steps < 4) {\n console.warn(\"Minimum steps to draw a circle is 4 \"); // eslint-disable-line no-console,no-undef\n\n options.steps = 4;\n }\n\n var radius = Math.max((0, _distance[\"default\"])(coord1, coord2), 0.001);\n var geometry = (0, _circle[\"default\"])(coord1, radius, options);\n geometry.properties = geometry.properties || {};\n geometry.properties.shape = 'Circle';\n return geometry;\n }\n }]);\n\n return DrawCircleFromCenterMode;\n}(_twoClickPolygonMode.TwoClickPolygonMode);\n\nexports.DrawCircleFromCenterMode = DrawCircleFromCenterMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1jaXJjbGUtZnJvbS1jZW50ZXItbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3Q2lyY2xlRnJvbUNlbnRlck1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwic3RlcHMiLCJvcHRpb25zIiwiY29uc29sZSIsIndhcm4iLCJyYWRpdXMiLCJNYXRoIiwibWF4IiwiZ2VvbWV0cnkiLCJwcm9wZXJ0aWVzIiwic2hhcGUiLCJUd29DbGlja1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLHdCOzs7Ozs7Ozs7Ozs7O3VDQUNRQyxNLEVBQWtCQyxNLEVBQWtCQyxVLEVBQXFDO0FBQzFGO0FBRDBGLGlCQUVuRUEsVUFBVSxJQUFJLEVBRnFEO0FBQUEsNEJBRWxGQyxLQUZrRjtBQUFBLFVBRWxGQSxLQUZrRiwyQkFFMUUsRUFGMEU7O0FBRzFGLFVBQU1DLE9BQU8sR0FBRztBQUFFRCxRQUFBQSxLQUFLLEVBQUxBO0FBQUYsT0FBaEI7O0FBRUEsVUFBSUEsS0FBSyxHQUFHLENBQVosRUFBZTtBQUNiRSxRQUFBQSxPQUFPLENBQUNDLElBQVIseUNBRGEsQ0FDeUM7O0FBQ3RERixRQUFBQSxPQUFPLENBQUNELEtBQVIsR0FBZ0IsQ0FBaEI7QUFDRDs7QUFFRCxVQUFNSSxNQUFNLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxDQUFTLDBCQUFTVCxNQUFULEVBQWlCQyxNQUFqQixDQUFULEVBQW1DLEtBQW5DLENBQWY7QUFDQSxVQUFNUyxRQUFRLEdBQUcsd0JBQU9WLE1BQVAsRUFBZU8sTUFBZixFQUF1QkgsT0FBdkIsQ0FBakI7QUFFQU0sTUFBQUEsUUFBUSxDQUFDQyxVQUFULEdBQXNCRCxRQUFRLENBQUNDLFVBQVQsSUFBdUIsRUFBN0M7QUFDQUQsTUFBQUEsUUFBUSxDQUFDQyxVQUFULENBQW9CQyxLQUFwQixHQUE0QixRQUE1QjtBQUVBLGFBQU9GLFFBQVA7QUFDRDs7OztFQWxCMkNHLHdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNpcmNsZSBmcm9tICdAdHVyZi9jaXJjbGUnO1xuaW1wb3J0IGRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB7IFBvc2l0aW9uLCBQb2x5Z29uLCBGZWF0dXJlT2YgfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IFR3b0NsaWNrUG9seWdvbk1vZGUgfSBmcm9tICcuL3R3by1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd0NpcmNsZUZyb21DZW50ZXJNb2RlIGV4dGVuZHMgVHdvQ2xpY2tQb2x5Z29uTW9kZSB7XG4gIGdldFR3b0NsaWNrUG9seWdvbihjb29yZDE6IFBvc2l0aW9uLCBjb29yZDI6IFBvc2l0aW9uLCBtb2RlQ29uZmlnOiBhbnkpOiBGZWF0dXJlT2Y8UG9seWdvbj4ge1xuICAgIC8vIERlZmF1bHQgdHVyZiB2YWx1ZSBmb3IgY2lyY2xlIGlzIDY0XG4gICAgY29uc3QgeyBzdGVwcyA9IDY0IH0gPSBtb2RlQ29uZmlnIHx8IHt9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHN0ZXBzIH07XG5cbiAgICBpZiAoc3RlcHMgPCA0KSB7XG4gICAgICBjb25zb2xlLndhcm4oYE1pbmltdW0gc3RlcHMgdG8gZHJhdyBhIGNpcmNsZSBpcyA0IGApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIG9wdGlvbnMuc3RlcHMgPSA0O1xuICAgIH1cblxuICAgIGNvbnN0IHJhZGl1cyA9IE1hdGgubWF4KGRpc3RhbmNlKGNvb3JkMSwgY29vcmQyKSwgMC4wMDEpO1xuICAgIGNvbnN0IGdlb21ldHJ5ID0gY2lyY2xlKGNvb3JkMSwgcmFkaXVzLCBvcHRpb25zKTtcblxuICAgIGdlb21ldHJ5LnByb3BlcnRpZXMgPSBnZW9tZXRyeS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgIGdlb21ldHJ5LnByb3BlcnRpZXMuc2hhcGUgPSAnQ2lyY2xlJztcblxuICAgIHJldHVybiBnZW9tZXRyeTtcbiAgfVxufVxuIl19","import circle from '@turf/circle';\nimport distance from '@turf/distance';\nimport { Position, Polygon, FeatureOf } from '../geojson-types';\nimport { TwoClickPolygonMode } from './two-click-polygon-mode';\n\nexport class DrawCircleFromCenterMode extends TwoClickPolygonMode {\n getTwoClickPolygon(coord1: Position, coord2: Position, modeConfig: any): FeatureOf {\n // Default turf value for circle is 64\n const { steps = 64 } = modeConfig || {};\n const options = { steps };\n\n if (steps < 4) {\n console.warn(`Minimum steps to draw a circle is 4 `); // eslint-disable-line no-console,no-undef\n options.steps = 4;\n }\n\n const radius = Math.max(distance(coord1, coord2), 0.001);\n const geometry = circle(coord1, radius, options);\n\n geometry.properties = geometry.properties || {};\n geometry.properties.shape = 'Circle';\n\n return geometry;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DrawEllipseByBoundingBoxMode = void 0;\n\nvar _bboxPolygon = _interopRequireDefault(require(\"@turf/bbox-polygon\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _ellipse = _interopRequireDefault(require(\"@turf/ellipse\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _twoClickPolygonMode = require(\"./two-click-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawEllipseByBoundingBoxMode = /*#__PURE__*/function (_TwoClickPolygonMode) {\n _inherits(DrawEllipseByBoundingBoxMode, _TwoClickPolygonMode);\n\n var _super = _createSuper(DrawEllipseByBoundingBoxMode);\n\n function DrawEllipseByBoundingBoxMode() {\n _classCallCheck(this, DrawEllipseByBoundingBoxMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DrawEllipseByBoundingBoxMode, [{\n key: \"getTwoClickPolygon\",\n value: function getTwoClickPolygon(coord1, coord2, modeConfig) {\n var minX = Math.min(coord1[0], coord2[0]);\n var minY = Math.min(coord1[1], coord2[1]);\n var maxX = Math.max(coord1[0], coord2[0]);\n var maxY = Math.max(coord1[1], coord2[1]);\n var polygonPoints = (0, _bboxPolygon[\"default\"])([minX, minY, maxX, maxY]).geometry.coordinates[0];\n var centerCoordinates = (0, _geojsonEditMode.getIntermediatePosition)(coord1, coord2);\n var xSemiAxis = Math.max((0, _distance[\"default\"])((0, _helpers.point)(polygonPoints[0]), (0, _helpers.point)(polygonPoints[1])), 0.001);\n var ySemiAxis = Math.max((0, _distance[\"default\"])((0, _helpers.point)(polygonPoints[0]), (0, _helpers.point)(polygonPoints[3])), 0.001); // @ts-ignore\n\n return (0, _ellipse[\"default\"])(centerCoordinates, xSemiAxis, ySemiAxis);\n }\n }]);\n\n return DrawEllipseByBoundingBoxMode;\n}(_twoClickPolygonMode.TwoClickPolygonMode);\n\nexports.DrawEllipseByBoundingBoxMode = DrawEllipseByBoundingBoxMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1lbGxpcHNlLWJ5LWJvdW5kaW5nLWJveC1tb2RlLnRzIl0sIm5hbWVzIjpbIkRyYXdFbGxpcHNlQnlCb3VuZGluZ0JveE1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwibWluWCIsIk1hdGgiLCJtaW4iLCJtaW5ZIiwibWF4WCIsIm1heCIsIm1heFkiLCJwb2x5Z29uUG9pbnRzIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsImNlbnRlckNvb3JkaW5hdGVzIiwieFNlbWlBeGlzIiwieVNlbWlBeGlzIiwiVHdvQ2xpY2tQb2x5Z29uTW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSw0Qjs7Ozs7Ozs7Ozs7Ozt1Q0FDUUMsTSxFQUFrQkMsTSxFQUFrQkMsVSxFQUFxQztBQUMxRixVQUFNQyxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxDQUFTTCxNQUFNLENBQUMsQ0FBRCxDQUFmLEVBQW9CQyxNQUFNLENBQUMsQ0FBRCxDQUExQixDQUFiO0FBQ0EsVUFBTUssSUFBSSxHQUFHRixJQUFJLENBQUNDLEdBQUwsQ0FBU0wsTUFBTSxDQUFDLENBQUQsQ0FBZixFQUFvQkMsTUFBTSxDQUFDLENBQUQsQ0FBMUIsQ0FBYjtBQUNBLFVBQU1NLElBQUksR0FBR0gsSUFBSSxDQUFDSSxHQUFMLENBQVNSLE1BQU0sQ0FBQyxDQUFELENBQWYsRUFBb0JDLE1BQU0sQ0FBQyxDQUFELENBQTFCLENBQWI7QUFDQSxVQUFNUSxJQUFJLEdBQUdMLElBQUksQ0FBQ0ksR0FBTCxDQUFTUixNQUFNLENBQUMsQ0FBRCxDQUFmLEVBQW9CQyxNQUFNLENBQUMsQ0FBRCxDQUExQixDQUFiO0FBRUEsVUFBTVMsYUFBYSxHQUFHLDZCQUFZLENBQUNQLElBQUQsRUFBT0csSUFBUCxFQUFhQyxJQUFiLEVBQW1CRSxJQUFuQixDQUFaLEVBQXNDRSxRQUF0QyxDQUErQ0MsV0FBL0MsQ0FBMkQsQ0FBM0QsQ0FBdEI7QUFDQSxVQUFNQyxpQkFBaUIsR0FBRyw4Q0FBd0JiLE1BQXhCLEVBQWdDQyxNQUFoQyxDQUExQjtBQUVBLFVBQU1hLFNBQVMsR0FBR1YsSUFBSSxDQUFDSSxHQUFMLENBQVMsMEJBQVMsb0JBQU1FLGFBQWEsQ0FBQyxDQUFELENBQW5CLENBQVQsRUFBa0Msb0JBQU1BLGFBQWEsQ0FBQyxDQUFELENBQW5CLENBQWxDLENBQVQsRUFBcUUsS0FBckUsQ0FBbEI7QUFDQSxVQUFNSyxTQUFTLEdBQUdYLElBQUksQ0FBQ0ksR0FBTCxDQUFTLDBCQUFTLG9CQUFNRSxhQUFhLENBQUMsQ0FBRCxDQUFuQixDQUFULEVBQWtDLG9CQUFNQSxhQUFhLENBQUMsQ0FBRCxDQUFuQixDQUFsQyxDQUFULEVBQXFFLEtBQXJFLENBQWxCLENBVjBGLENBWTFGOztBQUNBLGFBQU8seUJBQVFHLGlCQUFSLEVBQTJCQyxTQUEzQixFQUFzQ0MsU0FBdEMsQ0FBUDtBQUNEOzs7O0VBZitDQyx3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IGRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCBlbGxpcHNlIGZyb20gJ0B0dXJmL2VsbGlwc2UnO1xuaW1wb3J0IHsgcG9pbnQgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB7IFBvc2l0aW9uLCBQb2x5Z29uLCBGZWF0dXJlT2YgfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IGdldEludGVybWVkaWF0ZVBvc2l0aW9uIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5pbXBvcnQgeyBUd29DbGlja1BvbHlnb25Nb2RlIH0gZnJvbSAnLi90d28tY2xpY2stcG9seWdvbi1tb2RlJztcblxuZXhwb3J0IGNsYXNzIERyYXdFbGxpcHNlQnlCb3VuZGluZ0JveE1vZGUgZXh0ZW5kcyBUd29DbGlja1BvbHlnb25Nb2RlIHtcbiAgZ2V0VHdvQ2xpY2tQb2x5Z29uKGNvb3JkMTogUG9zaXRpb24sIGNvb3JkMjogUG9zaXRpb24sIG1vZGVDb25maWc6IGFueSk6IEZlYXR1cmVPZjxQb2x5Z29uPiB7XG4gICAgY29uc3QgbWluWCA9IE1hdGgubWluKGNvb3JkMVswXSwgY29vcmQyWzBdKTtcbiAgICBjb25zdCBtaW5ZID0gTWF0aC5taW4oY29vcmQxWzFdLCBjb29yZDJbMV0pO1xuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heChjb29yZDFbMF0sIGNvb3JkMlswXSk7XG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KGNvb3JkMVsxXSwgY29vcmQyWzFdKTtcblxuICAgIGNvbnN0IHBvbHlnb25Qb2ludHMgPSBiYm94UG9seWdvbihbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0pLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdO1xuICAgIGNvbnN0IGNlbnRlckNvb3JkaW5hdGVzID0gZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24oY29vcmQxLCBjb29yZDIpO1xuXG4gICAgY29uc3QgeFNlbWlBeGlzID0gTWF0aC5tYXgoZGlzdGFuY2UocG9pbnQocG9seWdvblBvaW50c1swXSksIHBvaW50KHBvbHlnb25Qb2ludHNbMV0pKSwgMC4wMDEpO1xuICAgIGNvbnN0IHlTZW1pQXhpcyA9IE1hdGgubWF4KGRpc3RhbmNlKHBvaW50KHBvbHlnb25Qb2ludHNbMF0pLCBwb2ludChwb2x5Z29uUG9pbnRzWzNdKSksIDAuMDAxKTtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gZWxsaXBzZShjZW50ZXJDb29yZGluYXRlcywgeFNlbWlBeGlzLCB5U2VtaUF4aXMpO1xuICB9XG59XG4iXX0=","import bboxPolygon from '@turf/bbox-polygon';\nimport distance from '@turf/distance';\nimport ellipse from '@turf/ellipse';\nimport { point } from '@turf/helpers';\nimport { Position, Polygon, FeatureOf } from '../geojson-types';\nimport { getIntermediatePosition } from './geojson-edit-mode';\nimport { TwoClickPolygonMode } from './two-click-polygon-mode';\n\nexport class DrawEllipseByBoundingBoxMode extends TwoClickPolygonMode {\n getTwoClickPolygon(coord1: Position, coord2: Position, modeConfig: any): FeatureOf {\n const minX = Math.min(coord1[0], coord2[0]);\n const minY = Math.min(coord1[1], coord2[1]);\n const maxX = Math.max(coord1[0], coord2[0]);\n const maxY = Math.max(coord1[1], coord2[1]);\n\n const polygonPoints = bboxPolygon([minX, minY, maxX, maxY]).geometry.coordinates[0];\n const centerCoordinates = getIntermediatePosition(coord1, coord2);\n\n const xSemiAxis = Math.max(distance(point(polygonPoints[0]), point(polygonPoints[1])), 0.001);\n const ySemiAxis = Math.max(distance(point(polygonPoints[0]), point(polygonPoints[3])), 0.001);\n\n // @ts-ignore\n return ellipse(centerCoordinates, xSemiAxis, ySemiAxis);\n }\n}\n","import { degreesToRadians, isNumber, isObject, polygon } from '@turf/helpers';\nimport rhumbDestination from '@turf/rhumb-destination';\nimport transformRotate from '@turf/transform-rotate';\nimport { getCoord } from '@turf/invariant';\n\n/**\n * Takes a {@link Point} and calculates the ellipse polygon given two semi-axes expressed in variable units and steps for precision.\n *\n * @param {Coord} center center point\n * @param {number} xSemiAxis semi (major) axis of the ellipse along the x-axis\n * @param {number} ySemiAxis semi (minor) axis of the ellipse along the y-axis\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.angle=0] angle of rotation (along the vertical axis), from North in decimal degrees, negative clockwise\n * @param {Coord} [options.pivot='origin'] point around which the rotation will be performed\n * @param {number} [options.steps=64] number of steps\n * @param {string} [options.units='kilometers'] unit of measurement for axes\n * @param {Object} [options.properties={}] properties\n * @returns {Feature} ellipse polygon\n * @example\n * var center = [-75, 40];\n * var xSemiAxis = 5;\n * var ySemiAxis = 2;\n * var ellipse = turf.ellipse(center, xSemiAxis, ySemiAxis);\n *\n * //addToMap\n * var addToMap = [turf.point(center), ellipse]\n */\nfunction ellipse(center, xSemiAxis, ySemiAxis, options) {\n // Optional params\n options = options || {};\n var steps = options.steps || 64;\n var units = options.units || 'kilometers';\n var angle = options.angle || 0;\n var pivot = options.pivot || center;\n var properties = options.properties || center.properties || {};\n\n // validation\n if (!center) throw new Error('center is required');\n if (!xSemiAxis) throw new Error('xSemiAxis is required');\n if (!ySemiAxis) throw new Error('ySemiAxis is required');\n if (!isObject(options)) throw new Error('options must be an object');\n if (!isNumber(steps)) throw new Error('steps must be a number');\n if (!isNumber(angle)) throw new Error('angle must be a number');\n\n var centerCoords = getCoord(center);\n if (units === 'degrees') {\n var angleRad = degreesToRadians(angle);\n } else {\n xSemiAxis = rhumbDestination(center, xSemiAxis, 90, {units: units});\n ySemiAxis = rhumbDestination(center, ySemiAxis, 0, {units: units});\n xSemiAxis = getCoord(xSemiAxis)[0] - centerCoords[0];\n ySemiAxis = getCoord(ySemiAxis)[1] - centerCoords[1];\n }\n\n var coordinates = [];\n for (var i = 0; i < steps; i += 1) {\n var stepAngle = i * -360 / steps;\n var x = ((xSemiAxis * ySemiAxis) / Math.sqrt(Math.pow(ySemiAxis, 2) + (Math.pow(xSemiAxis, 2) * Math.pow(getTanDeg(stepAngle), 2))));\n var y = ((xSemiAxis * ySemiAxis) / Math.sqrt(Math.pow(xSemiAxis, 2) + (Math.pow(ySemiAxis, 2) / Math.pow(getTanDeg(stepAngle), 2))));\n\n if (stepAngle < -90 && stepAngle >= -270) x = -x;\n if (stepAngle < -180 && stepAngle >= -360) y = -y;\n if (units === 'degrees') {\n var newx = x * Math.cos(angleRad) + y * Math.sin(angleRad);\n var newy = y * Math.cos(angleRad) - x * Math.sin(angleRad);\n x = newx;\n y = newy;\n }\n\n coordinates.push([x + centerCoords[0], y + centerCoords[1]]);\n }\n coordinates.push(coordinates[0]);\n if (units === 'degrees') {\n return polygon([coordinates], properties);\n } else {\n return transformRotate(polygon([coordinates], properties), angle, { pivot: pivot });\n }\n}\n\n/**\n * Get Tan Degrees\n *\n * @private\n * @param {number} deg Degrees\n * @returns {number} Tan Degrees\n */\nfunction getTanDeg(deg) {\n var rad = deg * Math.PI / 180;\n return Math.tan(rad);\n}\n\nexport default ellipse;\n","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = {type: 'Feature'};\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point': geom = point(coordinates).geometry; break;\n case 'LineString': geom = lineString(coordinates).geometry; break;\n case 'Polygon': geom = polygon(coordinates).geometry; break;\n case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n default: throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = {type: 'FeatureCollection'};\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n","import { isNumber } from '@turf/helpers';\n\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n if (!coord) throw new Error('coord is required');\n if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;\n if (coord.type === 'Point') return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n\n throw new Error('coord must be GeoJSON Point or an Array of numbers');\n}\n\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n if (!coords) throw new Error('coords is required');\n\n // Feature\n if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;\n\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n\n throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');\n}\n\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error('coordinates must only contain numbers');\n}\n\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n if (!type || !name) throw new Error('type and name required');\n\n if (!value || value.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n if (!feature) throw new Error('No feature passed');\n if (!name) throw new Error('.featureOf() requires a name');\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) throw new Error('No featureCollection passed');\n if (!name) throw new Error('.collectionOf() requires a name');\n if (!featureCollection || featureCollection.type !== 'FeatureCollection') {\n throw new Error('Invalid input to ' + name + ', FeatureCollection required');\n }\n for (var i = 0; i < featureCollection.features.length; i++) {\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n }\n}\n\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n if (!geojson) throw new Error('geojson is required');\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error('geojson must be a valid Feature or Geometry Object');\n}\n\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */\nfunction getGeomType() {\n throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');\n}\n\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, name) {\n if (!geojson) throw new Error((name || 'geojson') + ' is required');\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || 'geojson') + ' is invalid');\n}\n\nexport { getCoord, getCoords, containsNumber, geojsonType, featureOf, collectionOf, getGeom, getGeomType, getType };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DrawEllipseUsingThreePointsMode = void 0;\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _ellipse = _interopRequireDefault(require(\"@turf/ellipse\"));\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nvar _threeClickPolygonMode = require(\"./three-click-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawEllipseUsingThreePointsMode = /*#__PURE__*/function (_ThreeClickPolygonMod) {\n _inherits(DrawEllipseUsingThreePointsMode, _ThreeClickPolygonMod);\n\n var _super = _createSuper(DrawEllipseUsingThreePointsMode);\n\n function DrawEllipseUsingThreePointsMode() {\n _classCallCheck(this, DrawEllipseUsingThreePointsMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DrawEllipseUsingThreePointsMode, [{\n key: \"getThreeClickPolygon\",\n value: function getThreeClickPolygon(coord1, coord2, coord3, modeConfig) {\n var centerCoordinates = (0, _geojsonEditMode.getIntermediatePosition)(coord1, coord2);\n var xSemiAxis = Math.max((0, _distance[\"default\"])(centerCoordinates, (0, _helpers.point)(coord3)), 0.001);\n var ySemiAxis = Math.max((0, _distance[\"default\"])(coord1, coord2), 0.001) / 2;\n var options = {\n angle: (0, _bearing[\"default\"])(coord1, coord2)\n }; // @ts-ignore\n\n return (0, _ellipse[\"default\"])(centerCoordinates, xSemiAxis, ySemiAxis, options);\n }\n }]);\n\n return DrawEllipseUsingThreePointsMode;\n}(_threeClickPolygonMode.ThreeClickPolygonMode);\n\nexports.DrawEllipseUsingThreePointsMode = DrawEllipseUsingThreePointsMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1lbGxpcHNlLXVzaW5nLXRocmVlLXBvaW50cy1tb2RlLnRzIl0sIm5hbWVzIjpbIkRyYXdFbGxpcHNlVXNpbmdUaHJlZVBvaW50c01vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJjb29yZDMiLCJtb2RlQ29uZmlnIiwiY2VudGVyQ29vcmRpbmF0ZXMiLCJ4U2VtaUF4aXMiLCJNYXRoIiwibWF4IiwieVNlbWlBeGlzIiwib3B0aW9ucyIsImFuZ2xlIiwiVGhyZWVDbGlja1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLCtCOzs7Ozs7Ozs7Ozs7O3lDQUVUQyxNLEVBQ0FDLE0sRUFDQUMsTSxFQUNBQyxVLEVBQ3VDO0FBQ3ZDLFVBQU1DLGlCQUFpQixHQUFHLDhDQUF3QkosTUFBeEIsRUFBZ0NDLE1BQWhDLENBQTFCO0FBQ0EsVUFBTUksU0FBUyxHQUFHQyxJQUFJLENBQUNDLEdBQUwsQ0FBUywwQkFBU0gsaUJBQVQsRUFBNEIsb0JBQU1GLE1BQU4sQ0FBNUIsQ0FBVCxFQUFxRCxLQUFyRCxDQUFsQjtBQUNBLFVBQU1NLFNBQVMsR0FBR0YsSUFBSSxDQUFDQyxHQUFMLENBQVMsMEJBQVNQLE1BQVQsRUFBaUJDLE1BQWpCLENBQVQsRUFBbUMsS0FBbkMsSUFBNEMsQ0FBOUQ7QUFDQSxVQUFNUSxPQUFPLEdBQUc7QUFBRUMsUUFBQUEsS0FBSyxFQUFFLHlCQUFRVixNQUFSLEVBQWdCQyxNQUFoQjtBQUFULE9BQWhCLENBSnVDLENBS3ZDOztBQUNBLGFBQU8seUJBQVFHLGlCQUFSLEVBQTJCQyxTQUEzQixFQUFzQ0csU0FBdEMsRUFBaURDLE9BQWpELENBQVA7QUFDRDs7OztFQWJrREUsNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IGVsbGlwc2UgZnJvbSAnQHR1cmYvZWxsaXBzZSc7XG5pbXBvcnQgYmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCB7IHBvaW50IH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb3NpdGlvbiwgUG9seWdvbiwgRmVhdHVyZU9mIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBnZXRJbnRlcm1lZGlhdGVQb3NpdGlvbiB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgVGhyZWVDbGlja1BvbHlnb25Nb2RlIH0gZnJvbSAnLi90aHJlZS1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd0VsbGlwc2VVc2luZ1RocmVlUG9pbnRzTW9kZSBleHRlbmRzIFRocmVlQ2xpY2tQb2x5Z29uTW9kZSB7XG4gIGdldFRocmVlQ2xpY2tQb2x5Z29uKFxuICAgIGNvb3JkMTogUG9zaXRpb24sXG4gICAgY29vcmQyOiBQb3NpdGlvbixcbiAgICBjb29yZDM6IFBvc2l0aW9uLFxuICAgIG1vZGVDb25maWc6IGFueVxuICApOiBGZWF0dXJlT2Y8UG9seWdvbj4gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjZW50ZXJDb29yZGluYXRlcyA9IGdldEludGVybWVkaWF0ZVBvc2l0aW9uKGNvb3JkMSwgY29vcmQyKTtcbiAgICBjb25zdCB4U2VtaUF4aXMgPSBNYXRoLm1heChkaXN0YW5jZShjZW50ZXJDb29yZGluYXRlcywgcG9pbnQoY29vcmQzKSksIDAuMDAxKTtcbiAgICBjb25zdCB5U2VtaUF4aXMgPSBNYXRoLm1heChkaXN0YW5jZShjb29yZDEsIGNvb3JkMiksIDAuMDAxKSAvIDI7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgYW5nbGU6IGJlYXJpbmcoY29vcmQxLCBjb29yZDIpIH07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBlbGxpcHNlKGNlbnRlckNvb3JkaW5hdGVzLCB4U2VtaUF4aXMsIHlTZW1pQXhpcywgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==","import distance from '@turf/distance';\nimport ellipse from '@turf/ellipse';\nimport bearing from '@turf/bearing';\nimport { point } from '@turf/helpers';\nimport { Position, Polygon, FeatureOf } from '../geojson-types';\nimport { getIntermediatePosition } from './geojson-edit-mode';\nimport { ThreeClickPolygonMode } from './three-click-polygon-mode';\n\nexport class DrawEllipseUsingThreePointsMode extends ThreeClickPolygonMode {\n getThreeClickPolygon(\n coord1: Position,\n coord2: Position,\n coord3: Position,\n modeConfig: any\n ): FeatureOf | null | undefined {\n const centerCoordinates = getIntermediatePosition(coord1, coord2);\n const xSemiAxis = Math.max(distance(centerCoordinates, point(coord3)), 0.001);\n const ySemiAxis = Math.max(distance(coord1, coord2), 0.001) / 2;\n const options = { angle: bearing(coord1, coord2) };\n // @ts-ignore\n return ellipse(centerCoordinates, xSemiAxis, ySemiAxis, options);\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ThreeClickPolygonMode = void 0;\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ThreeClickPolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(ThreeClickPolygonMode, _GeoJsonEditMode);\n\n var _super = _createSuper(ThreeClickPolygonMode);\n\n function ThreeClickPolygonMode() {\n _classCallCheck(this, ThreeClickPolygonMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(ThreeClickPolygonMode, [{\n key: \"handleClick\",\n value: function handleClick(event, props) {\n this.addClickSequence(event);\n var clickSequence = this.getClickSequence();\n var tentativeFeature = this.getTentativeGuide(props);\n\n if (clickSequence.length > 2 && tentativeFeature && tentativeFeature.geometry.type === 'Polygon') {\n var editAction = this.getAddFeatureOrBooleanPolygonAction(tentativeFeature.geometry, props);\n this.resetClickSequence();\n\n if (editAction) {\n props.onEdit(editAction);\n }\n }\n }\n }, {\n key: \"getGuides\",\n value: function getGuides(props) {\n var lastPointerMoveEvent = props.lastPointerMoveEvent,\n modeConfig = props.modeConfig;\n var clickSequence = this.getClickSequence();\n var guides = {\n type: 'FeatureCollection',\n features: []\n };\n\n if (clickSequence.length === 0) {\n // nothing to do yet\n return guides;\n }\n\n var hoveredCoord = lastPointerMoveEvent.mapCoords;\n\n if (clickSequence.length === 1) {\n guides.features.push({\n type: 'Feature',\n properties: {\n guideType: 'tentative'\n },\n geometry: {\n type: 'LineString',\n coordinates: [clickSequence[0], hoveredCoord]\n }\n });\n } else {\n var polygon = this.getThreeClickPolygon(clickSequence[0], clickSequence[1], hoveredCoord, modeConfig);\n\n if (polygon) {\n guides.features.push({\n type: 'Feature',\n properties: {\n guideType: 'tentative'\n },\n geometry: polygon.geometry\n });\n }\n }\n\n return guides;\n }\n }, {\n key: \"getThreeClickPolygon\",\n value: function getThreeClickPolygon(coord1, coord2, coord3, modeConfig) {\n return null;\n }\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor('cell');\n\n _get(_getPrototypeOf(ThreeClickPolygonMode.prototype), \"handlePointerMove\", this).call(this, event, props);\n }\n }, {\n key: \"createTentativeFeature\",\n value: function createTentativeFeature(props) {\n var lastPointerMoveEvent = props.lastPointerMoveEvent;\n var clickSequence = this.getClickSequence();\n var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];\n var tentativeFeature;\n\n if (clickSequence.length === 2) {\n tentativeFeature = this.getThreeClickPolygon(clickSequence[0], clickSequence[1], lastCoords[0], props.modeConfig);\n }\n\n return tentativeFeature;\n }\n }]);\n\n return ThreeClickPolygonMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.ThreeClickPolygonMode = ThreeClickPolygonMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdGhyZWUtY2xpY2stcG9seWdvbi1tb2RlLnRzIl0sIm5hbWVzIjpbIlRocmVlQ2xpY2tQb2x5Z29uTW9kZSIsImV2ZW50IiwicHJvcHMiLCJhZGRDbGlja1NlcXVlbmNlIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJ0ZW50YXRpdmVGZWF0dXJlIiwiZ2V0VGVudGF0aXZlR3VpZGUiLCJsZW5ndGgiLCJnZW9tZXRyeSIsInR5cGUiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24iLCJyZXNldENsaWNrU2VxdWVuY2UiLCJvbkVkaXQiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsIm1vZGVDb25maWciLCJndWlkZXMiLCJmZWF0dXJlcyIsImhvdmVyZWRDb29yZCIsIm1hcENvb3JkcyIsInB1c2giLCJwcm9wZXJ0aWVzIiwiZ3VpZGVUeXBlIiwiY29vcmRpbmF0ZXMiLCJwb2x5Z29uIiwiZ2V0VGhyZWVDbGlja1BvbHlnb24iLCJjb29yZDEiLCJjb29yZDIiLCJjb29yZDMiLCJvblVwZGF0ZUN1cnNvciIsImxhc3RDb29yZHMiLCJHZW9Kc29uRWRpdE1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFRQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxxQjs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFtQkMsSyxFQUFxQztBQUNsRSxXQUFLQyxnQkFBTCxDQUFzQkYsS0FBdEI7QUFDQSxVQUFNRyxhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7QUFDQSxVQUFNQyxnQkFBZ0IsR0FBRyxLQUFLQyxpQkFBTCxDQUF1QkwsS0FBdkIsQ0FBekI7O0FBRUEsVUFDRUUsYUFBYSxDQUFDSSxNQUFkLEdBQXVCLENBQXZCLElBQ0FGLGdCQURBLElBRUFBLGdCQUFnQixDQUFDRyxRQUFqQixDQUEwQkMsSUFBMUIsS0FBbUMsU0FIckMsRUFJRTtBQUNBLFlBQU1DLFVBQVUs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ImltcG9ydCB7XG4gIENsaWNrRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgVGVudGF0aXZlRmVhdHVyZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUG9zaXRpb24sIFBvbHlnb24sIEZlYXR1cmVPZiwgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgVGhyZWVDbGlja1BvbHlnb25Nb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgdGhpcy5hZGRDbGlja1NlcXVlbmNlKGV2ZW50KTtcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGVudGF0aXZlR3VpZGUocHJvcHMpO1xuXG4gICAgaWYgKFxuICAgICAgY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAyICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJ1xuICAgICkge1xuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24odGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeSwgcHJvcHMpO1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgcHJvcHMub25FZGl0KGVkaXRBY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQsIG1vZGVDb25maWcgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IGd1aWRlczogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogW10sXG4gICAgfTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gbm90aGluZyB0byBkbyB5ZXRcbiAgICAgIHJldHVybiBndWlkZXM7XG4gICAgfVxuXG4gICAgY29uc3QgaG92ZXJlZENvb3JkID0gbGFzdFBvaW50ZXJNb3ZlRXZlbnQubWFwQ29vcmRzO1xuXG4gICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID09PSAxKSB7XG4gICAgICBndWlkZXMuZmVhdHVyZXMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGd1aWRlVHlwZTogJ3RlbnRhdGl2ZScsXG4gICAgICAgIH0sXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbY2xpY2tTZXF1ZW5jZVswXSwgaG92ZXJlZENvb3JkXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwb2x5Z29uID0gdGhpcy5nZXRUaHJlZUNsaWNrUG9seWdvbihcbiAgICAgICAgY2xpY2tTZXF1ZW5jZVswXSxcbiAgICAgICAgY2xpY2tTZXF1ZW5jZVsxXSxcbiAgICAgICAgaG92ZXJlZENvb3JkLFxuICAgICAgICBtb2RlQ29uZmlnXG4gICAgICApO1xuICAgICAgaWYgKHBvbHlnb24pIHtcbiAgICAgICAgZ3VpZGVzLmZlYXR1cmVzLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBndWlkZVR5cGU6ICd0ZW50YXRpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2VvbWV0cnk6IHBvbHlnb24uZ2VvbWV0cnksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBnZXRUaHJlZUNsaWNrUG9seWdvbihcbiAgICBjb29yZDE6IFBvc2l0aW9uLFxuICAgIGNvb3JkMjogUG9zaXRpb24sXG4gICAgY29vcmQzOiBQb3NpdGlvbixcbiAgICBtb2RlQ29uZmlnOiBhbnlcbiAgKTogRmVhdHVyZU9mPFBvbHlnb24+IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICAgIHN1cGVyLmhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50LCBwcm9wcyk7XG4gIH1cblxuICBjcmVhdGVUZW50YXRpdmVGZWF0dXJlKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogVGVudGF0aXZlRmVhdHVyZSB7XG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgbGFzdENvb3JkcyA9IGxhc3RQb2ludGVyTW92ZUV2ZW50ID8gW2xhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkc10gOiBbXTtcblxuICAgIGxldCB0ZW50YXRpdmVGZWF0dXJlO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMikge1xuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGhyZWVDbGlja1BvbHlnb24oXG4gICAgICAgIGNsaWNrU2VxdWVuY2VbMF0sXG4gICAgICAgIGNsaWNrU2VxdWVuY2VbMV0sXG4gICAgICAgIGxhc3RDb29yZHNbMF0sXG4gICAgICAgIHByb3BzLm1vZGVDb25maWdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbnRhdGl2ZUZlYXR1cmU7XG4gIH1cbn1cbiJdfQ==","import {\n ClickEvent,\n PointerMoveEvent,\n ModeProps,\n GuideFeatureCollection,\n TentativeFeature,\n} from '../types';\nimport { Position, Polygon, FeatureOf, FeatureCollection } from '../geojson-types';\nimport { GeoJsonEditMode } from './geojson-edit-mode';\n\nexport class ThreeClickPolygonMode extends GeoJsonEditMode {\n handleClick(event: ClickEvent, props: ModeProps) {\n this.addClickSequence(event);\n const clickSequence = this.getClickSequence();\n const tentativeFeature = this.getTentativeGuide(props);\n\n if (\n clickSequence.length > 2 &&\n tentativeFeature &&\n tentativeFeature.geometry.type === 'Polygon'\n ) {\n const editAction = this.getAddFeatureOrBooleanPolygonAction(tentativeFeature.geometry, props);\n this.resetClickSequence();\n\n if (editAction) {\n props.onEdit(editAction);\n }\n }\n }\n\n getGuides(props: ModeProps): GuideFeatureCollection {\n const { lastPointerMoveEvent, modeConfig } = props;\n const clickSequence = this.getClickSequence();\n\n const guides: GuideFeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (clickSequence.length === 0) {\n // nothing to do yet\n return guides;\n }\n\n const hoveredCoord = lastPointerMoveEvent.mapCoords;\n\n if (clickSequence.length === 1) {\n guides.features.push({\n type: 'Feature',\n properties: {\n guideType: 'tentative',\n },\n geometry: {\n type: 'LineString',\n coordinates: [clickSequence[0], hoveredCoord],\n },\n });\n } else {\n const polygon = this.getThreeClickPolygon(\n clickSequence[0],\n clickSequence[1],\n hoveredCoord,\n modeConfig\n );\n if (polygon) {\n guides.features.push({\n type: 'Feature',\n properties: {\n guideType: 'tentative',\n },\n geometry: polygon.geometry,\n });\n }\n }\n\n return guides;\n }\n\n getThreeClickPolygon(\n coord1: Position,\n coord2: Position,\n coord3: Position,\n modeConfig: any\n ): FeatureOf | null | undefined {\n return null;\n }\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps) {\n props.onUpdateCursor('cell');\n super.handlePointerMove(event, props);\n }\n\n createTentativeFeature(props: ModeProps): TentativeFeature {\n const { lastPointerMoveEvent } = props;\n const clickSequence = this.getClickSequence();\n\n const lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];\n\n let tentativeFeature;\n if (clickSequence.length === 2) {\n tentativeFeature = this.getThreeClickPolygon(\n clickSequence[0],\n clickSequence[1],\n lastCoords[0],\n props.modeConfig\n );\n }\n\n return tentativeFeature;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DrawRectangleUsingThreePointsMode = void 0;\n\nvar _utils = require(\"../utils\");\n\nvar _threeClickPolygonMode = require(\"./three-click-polygon-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DrawRectangleUsingThreePointsMode = /*#__PURE__*/function (_ThreeClickPolygonMod) {\n _inherits(DrawRectangleUsingThreePointsMode, _ThreeClickPolygonMod);\n\n var _super = _createSuper(DrawRectangleUsingThreePointsMode);\n\n function DrawRectangleUsingThreePointsMode() {\n _classCallCheck(this, DrawRectangleUsingThreePointsMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DrawRectangleUsingThreePointsMode, [{\n key: \"getThreeClickPolygon\",\n value: function getThreeClickPolygon(coord1, coord2, coord3, modeConfig) {\n var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(coord1, coord2, coord3),\n _generatePointsParall2 = _slicedToArray(_generatePointsParall, 2),\n p3 = _generatePointsParall2[0],\n p4 = _generatePointsParall2[1];\n\n return {\n type: 'Feature',\n properties: {\n shape: 'Rectangle'\n },\n geometry: {\n type: 'Polygon',\n coordinates: [[// Draw a polygon containing all the points of the LineString,\n // then the points orthogonal to the lineString,\n // then back to the starting position\n coord1, coord2, p3, p4, coord1]]\n }\n };\n }\n }]);\n\n return DrawRectangleUsingThreePointsMode;\n}(_threeClickPolygonMode.ThreeClickPolygonMode);\n\nexports.DrawRectangleUsingThreePointsMode = DrawRectangleUsingThreePointsMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1yZWN0YW5nbGUtdXNpbmctdGhyZWUtcG9pbnRzLW1vZGUudHMiXSwibmFtZXMiOlsiRHJhd1JlY3RhbmdsZVVzaW5nVGhyZWVQb2ludHNNb2RlIiwiY29vcmQxIiwiY29vcmQyIiwiY29vcmQzIiwibW9kZUNvbmZpZyIsInAzIiwicDQiLCJ0eXBlIiwicHJvcGVydGllcyIsInNoYXBlIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsIlRocmVlQ2xpY2tQb2x5Z29uTW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsaUM7Ozs7Ozs7Ozs7Ozs7eUNBRVRDLE0sRUFDQUMsTSxFQUNBQyxNLEVBQ0FDLFUsRUFDdUM7QUFBQSxrQ0FDdEIsK0NBQW1DSCxNQUFuQyxFQUEyQ0MsTUFBM0MsRUFBbURDLE1BQW5ELENBRHNCO0FBQUE7QUFBQSxVQUNoQ0UsRUFEZ0M7QUFBQSxVQUM1QkMsRUFENEI7O0FBR3ZDLGFBQU87QUFDTEMsUUFBQUEsSUFBSSxFQUFFLFNBREQ7QUFFTEMsUUFBQUEsVUFBVSxFQUFFO0FBQ1ZDLFVBQUFBLEtBQUssRUFBRTtBQURHLFNBRlA7QUFLTEMsUUFBQUEsUUFBUSxFQUFFO0FBQ1JILFVBQUFBLElBQUksRUFBRSxTQURFO0FBRVJJLFVBQUFBLFdBQVcsRUFBRSxDQUNYLENBQ0U7QUFDQTtBQUNBO0FBQ0FWLFVBQUFBLE1BSkYsRUFLRUMsTUFMRixFQU1FRyxFQU5GLEVBT0VDLEVBUEYsRUFRRUwsTUFSRixDQURXO0FBRkw7QUFMTCxPQUFQO0FBcUJEOzs7O0VBOUJvRFcsNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUG9zaXRpb24sIFBvbHlnb24sIEZlYXR1cmVPZiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgVGhyZWVDbGlja1BvbHlnb25Nb2RlIH0gZnJvbSAnLi90aHJlZS1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd1JlY3RhbmdsZVVzaW5nVGhyZWVQb2ludHNNb2RlIGV4dGVuZHMgVGhyZWVDbGlja1BvbHlnb25Nb2RlIHtcbiAgZ2V0VGhyZWVDbGlja1BvbHlnb24oXG4gICAgY29vcmQxOiBQb3NpdGlvbixcbiAgICBjb29yZDI6IFBvc2l0aW9uLFxuICAgIGNvb3JkMzogUG9zaXRpb24sXG4gICAgbW9kZUNvbmZpZzogYW55XG4gICk6IEZlYXR1cmVPZjxQb2x5Z29uPiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IFtwMywgcDRdID0gZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyhjb29yZDEsIGNvb3JkMiwgY29vcmQzKTtcblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHNoYXBlOiAnUmVjdGFuZ2xlJyxcbiAgICAgIH0sXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBbXG4gICAgICAgICAgW1xuICAgICAgICAgICAgLy8gRHJhdyBhIHBvbHlnb24gY29udGFpbmluZyBhbGwgdGhlIHBvaW50cyBvZiB0aGUgTGluZVN0cmluZyxcbiAgICAgICAgICAgIC8vIHRoZW4gdGhlIHBvaW50cyBvcnRob2dvbmFsIHRvIHRoZSBsaW5lU3RyaW5nLFxuICAgICAgICAgICAgLy8gdGhlbiBiYWNrIHRvIHRoZSBzdGFydGluZyBwb3NpdGlvblxuICAgICAgICAgICAgY29vcmQxLFxuICAgICAgICAgICAgY29vcmQyLFxuICAgICAgICAgICAgcDMsXG4gICAgICAgICAgICBwNCxcbiAgICAgICAgICAgIGNvb3JkMSxcbiAgICAgICAgICBdLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=","import { generatePointsParallelToLinePoints } from '../utils';\nimport { Position, Polygon, FeatureOf } from '../geojson-types';\nimport { ThreeClickPolygonMode } from './three-click-polygon-mode';\n\nexport class DrawRectangleUsingThreePointsMode extends ThreeClickPolygonMode {\n getThreeClickPolygon(\n coord1: Position,\n coord2: Position,\n coord3: Position,\n modeConfig: any\n ): FeatureOf | null | undefined {\n const [p3, p4] = generatePointsParallelToLinePoints(coord1, coord2, coord3);\n\n return {\n type: 'Feature',\n properties: {\n shape: 'Rectangle',\n },\n geometry: {\n type: 'Polygon',\n coordinates: [\n [\n // Draw a polygon containing all the points of the LineString,\n // then the points orthogonal to the lineString,\n // then back to the starting position\n coord1,\n coord2,\n p3,\n p4,\n coord1,\n ],\n ],\n },\n };\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Draw90DegreePolygonMode = void 0;\n\nvar _destination = _interopRequireDefault(require(\"@turf/destination\"));\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _lineIntersect = _interopRequireDefault(require(\"@turf/line-intersect\"));\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Draw90DegreePolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(Draw90DegreePolygonMode, _GeoJsonEditMode);\n\n var _super = _createSuper(Draw90DegreePolygonMode);\n\n function Draw90DegreePolygonMode() {\n _classCallCheck(this, Draw90DegreePolygonMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Draw90DegreePolygonMode, [{\n key: \"createTentativeFeature\",\n value: function createTentativeFeature(props) {\n var clickSequence = this.getClickSequence();\n var mapCoords = props.lastPointerMoveEvent.mapCoords;\n var p3;\n\n if (clickSequence.length === 1) {\n p3 = mapCoords;\n } else {\n var p1 = clickSequence[clickSequence.length - 2];\n var p2 = clickSequence[clickSequence.length - 1];\n\n var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, mapCoords);\n\n var _generatePointsParall2 = _slicedToArray(_generatePointsParall, 1);\n\n p3 = _generatePointsParall2[0];\n }\n\n var tentativeFeature;\n\n if (clickSequence.length < 3) {\n // Draw a LineString connecting all the clicked points with the hovered point\n tentativeFeature = {\n type: 'Feature',\n properties: {\n guideType: 'tentative'\n },\n geometry: {\n type: 'LineString',\n coordinates: [].concat(_toConsumableArray(clickSequence), [p3])\n }\n };\n } else {\n // Draw a Polygon connecting all the clicked points with the hovered point\n tentativeFeature = {\n type: 'Feature',\n properties: {\n guideType: 'tentative'\n },\n geometry: {\n type: 'Polygon',\n coordinates: [[].concat(_toConsumableArray(clickSequence), [p3, clickSequence[0]])]\n }\n };\n }\n\n return tentativeFeature;\n }\n }, {\n key: \"getGuides\",\n value: function getGuides(props) {\n var guides = {\n type: 'FeatureCollection',\n features: []\n };\n var clickSequence = this.getClickSequence();\n\n if (clickSequence.length === 0 || !props.lastPointerMoveEvent) {\n return guides;\n }\n\n var tentativeFeature = this.createTentativeFeature(props);\n guides.features.push(tentativeFeature);\n guides.features = guides.features.concat((0, _utils.getEditHandlesForGeometry)(tentativeFeature.geometry, -1)); // Slice off the handles that are are next to the pointer\n\n guides.features = guides.features.slice(0, -1);\n return guides;\n }\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor('cell');\n\n _get(_getPrototypeOf(Draw90DegreePolygonMode.prototype), \"handlePointerMove\", this).call(this, event, props);\n }\n }, {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n var picks = event.picks;\n var tentativeFeature = this.getTentativeGuide(props);\n this.addClickSequence(event);\n var clickSequence = this.getClickSequence();\n\n if (!tentativeFeature) {\n // nothing else to do\n return;\n }\n\n if (clickSequence.length === 3 && tentativeFeature.geometry.type === 'LineString') {\n var lineString = tentativeFeature.geometry; // Tweak the clicked position to be the snapped 90 degree point along the polygon\n\n clickSequence[clickSequence.length - 1] = lineString.coordinates[lineString.coordinates.length - 1];\n } else if (clickSequence.length > 3 && tentativeFeature.geometry.type === 'Polygon') {\n var polygon = tentativeFeature.geometry; // Tweak the clicked position to be the snapped 90 degree point along the polygon\n\n clickSequence[clickSequence.length - 1] = polygon.coordinates[0][polygon.coordinates[0].length - 2];\n var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks);\n\n if (clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[1] === 0 || clickedEditHandle.properties.positionIndexes[1] === polygon.coordinates[0].length - 3)) {\n // They clicked the first or last point (or double-clicked), so complete the polygon\n var polygonToAdd = {\n type: 'Polygon',\n coordinates: this.finalizedCoordinates(_toConsumableArray(polygon.coordinates[0]))\n };\n this.resetClickSequence();\n var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);\n\n if (editAction) {\n props.onEdit(editAction);\n }\n }\n } // Trigger pointer move right away in order for it to update edit handles (to support double-click)\n\n\n var fakePointerMoveEvent = {\n screenCoords: [-1, -1],\n mapCoords: event.mapCoords,\n picks: [],\n pointerDownPicks: null,\n pointerDownScreenCoords: null,\n pointerDownMapCoords: null,\n cancelPan: function cancelPan() {},\n sourceEvent: null\n };\n this.handlePointerMove(fakePointerMoveEvent, props);\n }\n }, {\n key: \"finalizedCoordinates\",\n value: function finalizedCoordinates(coords) {\n // Remove the hovered position\n var coordinates = [[].concat(_toConsumableArray(coords.slice(0, -2)), [coords[0]])];\n var pt = this.getIntermediatePoint(_toConsumableArray(coords));\n\n if (!pt) {\n // if intermediate point with 90 degree not available\n // try remove the last clicked point and get the intermediate point.\n var tc = _toConsumableArray(coords);\n\n tc.splice(-3, 1);\n pt = this.getIntermediatePoint(_toConsumableArray(tc));\n\n if (pt) {\n coordinates = [[].concat(_toConsumableArray(coords.slice(0, -3)), [pt, coords[0]])];\n }\n } else {\n coordinates = [[].concat(_toConsumableArray(coords.slice(0, -2)), [pt, coords[0]])];\n }\n\n return coordinates;\n }\n }, {\n key: \"getIntermediatePoint\",\n value: function getIntermediatePoint(coordinates) {\n var pt;\n\n if (coordinates.length > 4) {\n var _ref = _toConsumableArray(coordinates),\n p1 = _ref[0],\n p2 = _ref[1];\n\n var angle1 = (0, _bearing[\"default\"])(p1, p2);\n var p3 = coordinates[coordinates.length - 3];\n var p4 = coordinates[coordinates.length - 4];\n var angle2 = (0, _bearing[\"default\"])(p3, p4);\n var angles = {\n first: [],\n second: []\n }; // calculate 3 right angle points for first and last points in lineString\n\n [1, 2, 3].forEach(function (factor) {\n var newAngle1 = angle1 + factor * 90; // convert angles to 0 to -180 for anti-clock and 0 to 180 for clock wise\n\n angles.first.push(newAngle1 > 180 ? newAngle1 - 360 : newAngle1);\n var newAngle2 = angle2 + factor * 90;\n angles.second.push(newAngle2 > 180 ? newAngle2 - 360 : newAngle2);\n });\n var distance = (0, _distance[\"default\"])((0, _helpers.point)(p1), (0, _helpers.point)(p3)); // Draw imaginary right angle lines for both first and last points in lineString\n // If there is intersection point for any 2 lines, will be the 90 degree point.\n\n [0, 1, 2].forEach(function (indexFirst) {\n var line1 = (0, _helpers.lineString)([p1, (0, _destination[\"default\"])(p1, distance, angles.first[indexFirst]).geometry.coordinates]);\n [0, 1, 2].forEach(function (indexSecond) {\n var line2 = (0, _helpers.lineString)([p3, (0, _destination[\"default\"])(p3, distance, angles.second[indexSecond]).geometry.coordinates]);\n var fc = (0, _lineIntersect[\"default\"])(line1, line2);\n\n if (fc && fc.features.length) {\n // found the intersect point\n pt = fc.features[0].geometry.coordinates;\n }\n });\n });\n }\n\n return pt;\n }\n }]);\n\n return Draw90DegreePolygonMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.Draw90DegreePolygonMode = Draw90DegreePolygonMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy05MGRlZ3JlZS1wb2x5Z29uLW1vZGUudHMiXSwibmFtZXMiOlsiRHJhdzkwRGVncmVlUG9seWdvbk1vZGUiLCJwcm9wcyIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwibWFwQ29vcmRzIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJwMyIsImxlbmd0aCIsInAxIiwicDIiLCJ0ZW50YXRpdmVGZWF0dXJlIiwidHlwZSIsInByb3BlcnRpZXMiLCJndWlkZVR5cGUiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiZ3VpZGVzIiwiZmVhdHVyZXMiLCJjcmVhdGVUZW50YXRpdmVGZWF0dXJlIiwicHVzaCIsImNvbmNhdCIsInNsaWNlIiwiZXZlbnQiLCJvblVwZGF0ZUN1cnNvciIsInBpY2tzIiwiZ2V0VGVudGF0aXZlR3VpZGUiLCJhZGRDbGlja1NlcXVlbmNlIiwibGluZVN0cmluZyIsInBvbHlnb24iLCJjbGlja2VkRWRpdEhhbmRsZSIsIkFycmF5IiwiaXNBcnJheSIsInBvc2l0aW9uSW5kZXhlcyIsInBvbHlnb25Ub0FkZCIsImZpbmFsaXplZENvb3JkaW5hdGVzIiwicmVzZXRDbGlja1NlcXVlbmNlIiwiZWRpdEFjdGlvbiIsImdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uIiwib25FZGl0IiwiZmFrZVBvaW50ZXJNb3ZlRXZlbnQiLCJzY3JlZW5Db29yZHMiLCJwb2ludGVyRG93blBpY2tzIiwicG9pbnRlckRvd25TY3JlZW5Db29yZHMiLCJwb2ludGVyRG93bk1hcENvb3JkcyIsImNhbmNlbFBhbiIsInNvdXJjZUV2ZW50IiwiaGFuZGxlUG9pbnRlck1vdmUiLCJjb29yZHMiLCJwdCIsImdldEludGVybWVkaWF0ZVBvaW50IiwidGMiLCJzcGxpY2UiLCJhbmdsZTEiLCJwNCIsImFuZ2xlMiIsImFuZ2xlcyIsImZpcnN0Iiwic2Vjb25kIiwiZm9yRWFjaCIsImZhY3RvciIsIm5ld0FuZ2xlMSIsIm5ld0FuZ2xlMiIsImRpc3RhbmNlIiwiaW5kZXhGaXJzdCIsImxpbmUxIiwiaW5kZXhTZWNvbmQiLCJsaW5lMiIsImZjIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBYUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLHVCOzs7Ozs7Ozs7Ozs7OzJDQUNZQyxLLEVBQXVEO0FBQzVFLFVBQU1DLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0QjtBQUQ0RSxVQUdwRUMsU0FIb0UsR0FHdERILEtBQUssQ0FBQ0ksb0JBSGdELENBR3BFRCxTQUhvRTtBQUs1RSxVQUFJRSxFQUFKOztBQUNBLFVBQUlKLGFBQWEsQ0FBQ0ssTUFBZCxLQUF5QixDQUE3QixFQUFnQztBQUM5QkQsUUFBQUEsRUFBRSxHQUFHRixTQUFMO0FBQ0QsT0FGRCxNQUVPO0FBQ0wsWUFBTUksRUFBRSxHQUFHTixhQUFhLENBQUNBLGFBQWEsQ0FBQ0ssTUFBZCxHQUF1QixDQUF4QixDQUF4QjtBQUNBLFlBQU1FLEVBQUUsR0FBR1AsYUFBYSxDQUFDQSxhQUFhLENBQUNLLE1BQWQsR0FBdUIsQ0FBeEIsQ0FBeEI7O0FBRkssb0NBR0UsK0NBQW1DQyxFQUFuQyxFQUF1Q0MsRUFBdkMsRUFBMkNMLFNBQTNDLENBSEY7O0FBQUE7O0FBR0pFLFFBQUFBLEVBSEk7QUFJTjs7QUFFRCxVQUFJSSxnQkFBSjs7QUFFQSxVQUFJUixhQUFhLENBQUNLLE1BQWQsR0FBdUIsQ0FBM0IsRUFBOEI7QUFDNUI7QUFDQUcsUUFBQUEsZ0JBQWdCLEdBQUc7QUFDakJDLFVBQUFBLElBQUksRUFBRSxTQURXO0FBRWpCQyxVQUFBQSxVQUFVLEVBQUU7QUFDVkMsWUFBQUEsU0FBUyxFQUFFO0FBREQsV0FGSztBQUtqQkMsVUFBQUEsUUFBUSxFQUFFO0FBQ1JILFlBQUFBLElBQUksRUFBRSxZQURFO0FBRVJJLFlB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QUFRLEdBQUcsMEJBQWEsb0JBQU10RCxFQUFOLENBQWIsRUFBd0Isb0JBQU1GLEVBQU4sQ0FBeEIsQ0FBakIsQ0FqQjBCLENBa0IxQjtBQUNBOztBQUNBLFNBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVVvRCxPQUFWLENBQWtCLFVBQUNLLFVBQUQsRUFBZ0I7QUFDaEMsY0FBTUMsS0FBSyxHQUFHLHlCQUFlLENBQzNCeEQsRUFEMkIsRUFFM0IsNkJBQVlBLEVBQVosRUFBZ0JzRCxRQUFoQixFQUEwQlAsTUFBTSxDQUFDQyxLQUFQLENBQWFPLFVBQWIsQ0FBMUIsRUFBb0RqRCxRQUFwRCxDQUE2REMsV0FGbEMsQ0FBZixDQUFkO0FBSUEsV0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVTJDLE9BQVYsQ0FBa0IsVUFBQ08sV0FBRCxFQUFpQjtBQUNqQyxnQkFBTUMsS0FBSyxHQUFHLHlCQUFlLENBQzNCNUQsRUFEMkIsRUFFM0IsNkJBQVlBLEVBQVosRUFBZ0J3RCxRQUFoQixFQUEwQlAsTUFBTSxDQUFDRSxNQUFQLENBQWNRLFdBQWQsQ0FBMUIsRUFBc0RuRCxRQUF0RCxDQUErREMsV0FGcEMsQ0FBZixDQUFkO0FBSUEsZ0JBQU1vRCxFQUFFLEdBQUcsK0JBQWNILEtBQWQsRUFBcUJFLEtBQXJCLENBQVg7O0FBQ0EsZ0JBQUlDLEVBQUUsSUFBSUEsRUFBRSxDQUFDbEQsUUFBSCxDQUFZVixNQUF0QixFQUE4QjtBQUM1QjtBQUNBeUMsY0FBQUEsRUFBRSxHQUFHbUIsRUFBRSxDQUFDbEQsUUFBSCxDQUFZLENBQVosRUFBZUgsUUFBZixDQUF3QkMsV0FBN0I7QUFDRDtBQUNGLFdBVkQ7QUFXRCxTQWhCRDtBQWlCRDs7QUFDRCxhQUFPaUMsRUFBUDtBQUNEOzs7O0VBdE0wQ29CLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlc3RpbmF0aW9uIGZyb20gJ0B0dXJmL2Rlc3RpbmF0aW9uJztcbmltcG9ydCBiZWFyaW5nIGZyb20gJ0B0dXJmL2JlYXJpbmcnO1xuaW1wb3J0IGxpbmVJbnRlcnNlY3QgZnJvbSAnQHR1cmYvbGluZS1pbnRlcnNlY3QnO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgeyBwb2ludCwgbGluZVN0cmluZyBhcyB0dXJmTGluZVN0cmluZyB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyxcbiAgZ2V0UGlja2VkRWRpdEhhbmRsZSxcbiAgZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgTW9kZVByb3BzLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxuICBUZW50YXRpdmVGZWF0dXJlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBQb2x5Z29uLCBMaW5lU3RyaW5nLCBQb3NpdGlvbiwgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhdzkwRGVncmVlUG9seWdvbk1vZGUgZXh0ZW5kcyBHZW9Kc29uRWRpdE1vZGUge1xuICBjcmVhdGVUZW50YXRpdmVGZWF0dXJlKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogVGVudGF0aXZlRmVhdHVyZSB7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgeyBtYXBDb29yZHMgfSA9IHByb3BzLmxhc3RQb2ludGVyTW92ZUV2ZW50O1xuXG4gICAgbGV0IHAzO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcDMgPSBtYXBDb29yZHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHAxID0gY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDJdO1xuICAgICAgY29uc3QgcDIgPSBjbGlja1NlcXVlbmNlW2NsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMV07XG4gICAgICBbcDNdID0gZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyhwMSwgcDIsIG1hcENvb3Jkcyk7XG4gICAgfVxuXG4gICAgbGV0IHRlbnRhdGl2ZUZlYXR1cmU7XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPCAzKSB7XG4gICAgICAvLyBEcmF3IGEgTGluZVN0cmluZyBjb25uZWN0aW5nIGFsbCB0aGUgY2xpY2tlZCBwb2ludHMgd2l0aCB0aGUgaG92ZXJlZCBwb2ludFxuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFsuLi5jbGlja1NlcXVlbmNlLCBwM10sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEcmF3IGEgUG9seWdvbiBjb25uZWN0aW5nIGFsbCB0aGUgY2xpY2tlZCBwb2ludHMgd2l0aCB0aGUgaG92ZXJlZCBwb2ludFxuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtbLi4uY2xpY2tTZXF1ZW5jZSwgcDMsIGNsaWNrU2VxdWVuY2VbMF1dXSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbnRhdGl2ZUZlYXR1cmU7XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBndWlkZXM6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24gPSB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtdLFxuICAgIH07XG5cbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDAgfHwgIXByb3BzLmxhc3RQb2ludGVyTW92ZUV2ZW50KSB7XG4gICAgICByZXR1cm4gZ3VpZGVzO1xuICAgIH1cbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5jcmVhdGVUZW50YXRpdmVGZWF0dXJlKHByb3BzKTtcblxuICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKHRlbnRhdGl2ZUZlYXR1cmUpO1xuXG4gICAgZ3VpZGVzLmZlYXR1cmVzID0gZ3VpZGVzLmZlYXR1cmVzLmNvbmNhdChcbiAgICAgIGdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkodGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeSwgLTEpXG4gICAgKTtcblxuICAgIC8vIFNsaWNlIG9mZiB0aGUgaGFuZGxlcyB0aGF0IGFyZSBhcmUgbmV4dCB0byB0aGUgcG9pbnRlclxuICAgIGd1aWRlcy5mZWF0dXJlcyA9IGd1aWRlcy5mZWF0dXJlcy5zbGljZSgwLCAtMSk7XG5cbiAgICByZXR1cm4gZ3VpZGVzO1xuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ2NlbGwnKTtcbiAgICBzdXBlci5oYW5kbGVQb2ludGVyTW92ZShldmVudCwgcHJvcHMpO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3QgeyBwaWNrcyB9ID0gZXZlbnQ7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGVudGF0aXZlR3VpZGUocHJvcHMpO1xuICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgaWYgKCF0ZW50YXRpdmVGZWF0dXJlKSB7XG4gICAgICAvLyBub3RoaW5nIGVsc2UgdG8gZG9cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDMgJiYgdGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSAnTGluZVN0cmluZycpIHtcbiAgICAgIGNvbnN0IGxpbmVTdHJpbmc6IExpbmVTdHJpbmcgPSB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5O1xuXG4gICAgICAvLyBUd2VhayB0aGUgY2xpY2tlZCBwb3NpdGlvbiB0byBiZSB0aGUgc25hcHBlZCA5MCBkZWdyZWUgcG9pbnQgYWxvbmcgdGhlIHBvbHlnb25cbiAgICAgIGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXSA9XG4gICAgICAgIGxpbmVTdHJpbmcuY29vcmRpbmF0ZXNbbGluZVN0cmluZy5jb29yZGluYXRlcy5sZW5ndGggLSAxXTtcbiAgICB9IGVsc2UgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMyAmJiB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgY29uc3QgcG9seWdvbjogUG9seWdvbiA9IHRlbnRhdGl2ZUZlYXR1cmUuZ2VvbWV0cnk7XG5cbiAgICAgIC8vIFR3ZWFrIHRoZSBjbGlja2VkIHBvc2l0aW9uIHRvIGJlIHRoZSBzbmFwcGVkIDkwIGRlZ3JlZSBwb2ludCBhbG9uZyB0aGUgcG9seWdvblxuICAgICAgY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdID1cbiAgICAgICAgcG9seWdvbi5jb29yZGluYXRlc1swXVtwb2x5Z29uLmNvb3JkaW5hdGVzWzBdLmxlbmd0aCAtIDJdO1xuXG4gICAgICBjb25zdCBjbGlja2VkRWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUocGlja3MpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGNsaWNrZWRFZGl0SGFuZGxlICYmXG4gICAgICAgIEFycmF5LmlzQXJyYXkoY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMpICYmXG4gICAgICAgIChjbGlja2VkRWRpdEhhbmRsZS5wcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlc1sxXSA9PT0gMCB8fFxuICAgICAgICAgIGNsaWNrZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzFdID09PSBwb2x5Z29uLmNvb3JkaW5hdGVzWzBdLmxlbmd0aCAtIDMpXG4gICAgICApIHtcbiAgICAgICAgLy8gVGhleSBjbGlja2VkIHRoZSBmaXJzdCBvciBsYXN0IHBvaW50IChvciBkb3VibGUtY2xpY2tlZCksIHNvIGNvbXBsZXRlIHRoZSBwb2x5Z29uXG4gICAgICAgIGNvbnN0IHBvbHlnb25Ub0FkZDogUG9seWdvbiA9IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IHRoaXMuZmluYWxpemVkQ29vcmRpbmF0ZXMoWy4uLnBvbHlnb24uY29vcmRpbmF0ZXNbMF1dKSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnJlc2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgICAgIGNvbnN0IGVkaXRBY3Rpb24gPSB0aGlzLmdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uKHBvbHlnb25Ub0FkZCwgcHJvcHMpO1xuICAgICAgICBpZiAoZWRpdEFjdGlvbikge1xuICAgICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRyaWdnZXIgcG9pbnRlciBtb3ZlIHJpZ2h0IGF3YXkgaW4gb3JkZXIgZm9yIGl0IHRvIHVwZGF0ZSBlZGl0IGhhbmRsZXMgKHRvIHN1cHBvcnQgZG91YmxlLWNsaWNrKVxuICAgIGNvbnN0IGZha2VQb2ludGVyTW92ZUV2ZW50OiBQb2ludGVyTW92ZUV2ZW50ID0ge1xuICAgICAgc2NyZWVuQ29vcmRzOiBbLTEsIC0xXSxcbiAgICAgIG1hcENvb3JkczogZXZlbnQubWFwQ29vcmRzLFxuICAgICAgcGlja3M6IFtdLFxuICAgICAgcG9pbnRlckRvd25QaWNrczogbnVsbCxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG4gICAgICBjYW5jZWxQYW46ICgpID0+IHt9LFxuICAgICAgc291cmNlRXZlbnQ6IG51bGwsXG4gICAgfTtcblxuICAgIHRoaXMuaGFuZGxlUG9pbnRlck1vdmUoZmFrZVBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzKTtcbiAgfVxuXG4gIGZpbmFsaXplZENvb3JkaW5hdGVzKGNvb3JkczogUG9zaXRpb25bXSkge1xuICAgIC8vIFJlbW92ZSB0aGUgaG92ZXJlZCBwb3NpdGlvblxuICAgIGxldCBjb29yZGluYXRlcyA9IFtbLi4uY29vcmRzLnNsaWNlKDAsIC0yKSwgY29vcmRzWzBdXV07XG4gICAgbGV0IHB0ID0gdGhpcy5nZXRJbnRlcm1lZGlhdGVQb2ludChbLi4uY29vcmRzXSk7XG4gICAgaWYgKCFwdCkge1xuICAgICAgLy8gaWYgaW50ZXJtZWRpYXRlIHBvaW50IHdpdGggOTAgZGVncmVlIG5vdCBhdmFpbGFibGVcbiAgICAgIC8vIHRyeSByZW1vdmUgdGhlIGxhc3QgY2xpY2tlZCBwb2ludCBhbmQgZ2V0IHRoZSBpbnRlcm1lZGlhdGUgcG9pbnQuXG4gICAgICBjb25zdCB0YyA9IFsuLi5jb29yZHNdO1xuICAgICAgdGMuc3BsaWNlKC0zLCAxKTtcbiAgICAgIHB0ID0gdGhpcy5nZXRJbnRlcm1lZGlhdGVQb2ludChbLi4udGNdKTtcbiAgICAgIGlmIChwdCkge1xuICAgICAgICBjb29yZGluYXRlcyA9IFtbLi4uY29vcmRzLnNsaWNlKDAsIC0zKSwgcHQsIGNvb3Jkc1swXV1dO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb29yZGluYXRlcyA9IFtbLi4uY29vcmRzLnNsaWNlKDAsIC0yKSwgcHQsIGNvb3Jkc1swXV1dO1xuICAgIH1cbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gIH1cblxuICBnZXRJbnRlcm1lZGlhdGVQb2ludChjb29yZGluYXRlczogUG9zaXRpb25bXSkge1xuICAgIGxldCBwdDtcbiAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoID4gNCkge1xuICAgICAgY29uc3QgW3AxLCBwMl0gPSBbLi4uY29vcmRpbmF0ZXNdO1xuICAgICAgY29uc3QgYW5nbGUxID0gYmVhcmluZyhwMSwgcDIpO1xuICAgICAgY29uc3QgcDMgPSBjb29yZGluYXRlc1tjb29yZGluYXRlcy5sZW5ndGggLSAzXTtcbiAgICAgIGNvbnN0IHA0ID0gY29vcmRpbmF0ZXNbY29vcmRpbmF0ZXMubGVuZ3RoIC0gNF07XG4gICAgICBjb25zdCBhbmdsZTIgPSBiZWFyaW5nKHAzLCBwNCk7XG5cbiAgICAgIGNvbnN0IGFuZ2xlcyA9IHsgZmlyc3Q6IFtdLCBzZWNvbmQ6IFtdIH07XG4gICAgICAvLyBjYWxjdWxhdGUgMyByaWdodCBhbmdsZSBwb2ludHMgZm9yIGZpcnN0IGFuZCBsYXN0IHBvaW50cyBpbiBsaW5lU3RyaW5nXG4gICAgICBbMSwgMiwgM10uZm9yRWFjaCgoZmFjdG9yKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0FuZ2xlMSA9IGFuZ2xlMSArIGZhY3RvciAqIDkwO1xuICAgICAgICAvLyBjb252ZXJ0IGFuZ2xlcyB0byAwIHRvIC0xODAgZm9yIGFudGktY2xvY2sgYW5kIDAgdG8gMTgwIGZvciBjbG9jayB3aXNlXG4gICAgICAgIGFuZ2xlcy5maXJzdC5wdXNoKG5ld0FuZ2xlMSA+IDE4MCA/IG5ld0FuZ2xlMSAtIDM2MCA6IG5ld0FuZ2xlMSk7XG4gICAgICAgIGNvbnN0IG5ld0FuZ2xlMiA9IGFuZ2xlMiArIGZhY3RvciAqIDkwO1xuICAgICAgICBhbmdsZXMuc2Vjb25kLnB1c2gobmV3QW5nbGUyID4gMTgwID8gbmV3QW5nbGUyIC0gMzYwIDogbmV3QW5nbGUyKTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBkaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShwb2ludChwMSksIHBvaW50KHAzKSk7XG4gICAgICAvLyBEcmF3IGltYWdpbmFyeSByaWdodCBhbmdsZSBsaW5lcyBmb3IgYm90aCBmaXJzdCBhbmQgbGFzdCBwb2ludHMgaW4gbGluZVN0cmluZ1xuICAgICAgLy8gSWYgdGhlcmUgaXMgaW50ZXJzZWN0aW9uIHBvaW50IGZvciBhbnkgMiBsaW5lcywgd2lsbCBiZSB0aGUgOTAgZGVncmVlIHBvaW50LlxuICAgICAgWzAsIDEsIDJdLmZvckVhY2goKGluZGV4Rmlyc3QpID0+IHtcbiAgICAgICAgY29uc3QgbGluZTEgPSB0dXJmTGluZVN0cmluZyhbXG4gICAgICAgICAgcDEsXG4gICAgICAgICAgZGVzdGluYXRpb24ocDEsIGRpc3RhbmNlLCBhbmdsZXMuZmlyc3RbaW5kZXhGaXJzdF0pLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgICBdKTtcbiAgICAgICAgWzAsIDEsIDJdLmZvckVhY2goKGluZGV4U2Vjb25kKSA9PiB7XG4gICAgICAgICAgY29uc3QgbGluZTIgPSB0dXJmTGluZVN0cmluZyhbXG4gICAgICAgICAgICBwMyxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uKHAzLCBkaXN0YW5jZSwgYW5nbGVzLnNlY29uZFtpbmRleFNlY29uZF0pLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgICAgIF0pO1xuICAgICAgICAgIGNvbnN0IGZjID0gbGluZUludGVyc2VjdChsaW5lMSwgbGluZTIpO1xuICAgICAgICAgIGlmIChmYyAmJiBmYy5mZWF0dXJlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIGZvdW5kIHRoZSBpbnRlcnNlY3QgcG9pbnRcbiAgICAgICAgICAgIHB0ID0gZmMuZmVhdHVyZXNbMF0uZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcHQ7XG4gIH1cbn1cbiJdfQ==","import destination from '@turf/destination';\nimport bearing from '@turf/bearing';\nimport lineIntersect from '@turf/line-intersect';\nimport turfDistance from '@turf/distance';\nimport { point, lineString as turfLineString } from '@turf/helpers';\nimport {\n generatePointsParallelToLinePoints,\n getPickedEditHandle,\n getEditHandlesForGeometry,\n} from '../utils';\nimport {\n ClickEvent,\n PointerMoveEvent,\n ModeProps,\n GuideFeatureCollection,\n TentativeFeature,\n} from '../types';\nimport { Polygon, LineString, Position, FeatureCollection } from '../geojson-types';\nimport { GeoJsonEditMode } from './geojson-edit-mode';\n\nexport class Draw90DegreePolygonMode extends GeoJsonEditMode {\n createTentativeFeature(props: ModeProps): TentativeFeature {\n const clickSequence = this.getClickSequence();\n\n const { mapCoords } = props.lastPointerMoveEvent;\n\n let p3;\n if (clickSequence.length === 1) {\n p3 = mapCoords;\n } else {\n const p1 = clickSequence[clickSequence.length - 2];\n const p2 = clickSequence[clickSequence.length - 1];\n [p3] = generatePointsParallelToLinePoints(p1, p2, mapCoords);\n }\n\n let tentativeFeature;\n\n if (clickSequence.length < 3) {\n // Draw a LineString connecting all the clicked points with the hovered point\n tentativeFeature = {\n type: 'Feature',\n properties: {\n guideType: 'tentative',\n },\n geometry: {\n type: 'LineString',\n coordinates: [...clickSequence, p3],\n },\n };\n } else {\n // Draw a Polygon connecting all the clicked points with the hovered point\n tentativeFeature = {\n type: 'Feature',\n properties: {\n guideType: 'tentative',\n },\n geometry: {\n type: 'Polygon',\n coordinates: [[...clickSequence, p3, clickSequence[0]]],\n },\n };\n }\n\n return tentativeFeature;\n }\n\n getGuides(props: ModeProps): GuideFeatureCollection {\n const guides: GuideFeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n const clickSequence = this.getClickSequence();\n\n if (clickSequence.length === 0 || !props.lastPointerMoveEvent) {\n return guides;\n }\n const tentativeFeature = this.createTentativeFeature(props);\n\n guides.features.push(tentativeFeature);\n\n guides.features = guides.features.concat(\n getEditHandlesForGeometry(tentativeFeature.geometry, -1)\n );\n\n // Slice off the handles that are are next to the pointer\n guides.features = guides.features.slice(0, -1);\n\n return guides;\n }\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps) {\n props.onUpdateCursor('cell');\n super.handlePointerMove(event, props);\n }\n\n handleClick(event: ClickEvent, props: ModeProps) {\n const { picks } = event;\n const tentativeFeature = this.getTentativeGuide(props);\n this.addClickSequence(event);\n const clickSequence = this.getClickSequence();\n\n if (!tentativeFeature) {\n // nothing else to do\n return;\n }\n\n if (clickSequence.length === 3 && tentativeFeature.geometry.type === 'LineString') {\n const lineString: LineString = tentativeFeature.geometry;\n\n // Tweak the clicked position to be the snapped 90 degree point along the polygon\n clickSequence[clickSequence.length - 1] =\n lineString.coordinates[lineString.coordinates.length - 1];\n } else if (clickSequence.length > 3 && tentativeFeature.geometry.type === 'Polygon') {\n const polygon: Polygon = tentativeFeature.geometry;\n\n // Tweak the clicked position to be the snapped 90 degree point along the polygon\n clickSequence[clickSequence.length - 1] =\n polygon.coordinates[0][polygon.coordinates[0].length - 2];\n\n const clickedEditHandle = getPickedEditHandle(picks);\n\n if (\n clickedEditHandle &&\n Array.isArray(clickedEditHandle.properties.positionIndexes) &&\n (clickedEditHandle.properties.positionIndexes[1] === 0 ||\n clickedEditHandle.properties.positionIndexes[1] === polygon.coordinates[0].length - 3)\n ) {\n // They clicked the first or last point (or double-clicked), so complete the polygon\n const polygonToAdd: Polygon = {\n type: 'Polygon',\n coordinates: this.finalizedCoordinates([...polygon.coordinates[0]]),\n };\n\n this.resetClickSequence();\n\n const editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);\n if (editAction) {\n props.onEdit(editAction);\n }\n }\n }\n\n // Trigger pointer move right away in order for it to update edit handles (to support double-click)\n const fakePointerMoveEvent: PointerMoveEvent = {\n screenCoords: [-1, -1],\n mapCoords: event.mapCoords,\n picks: [],\n pointerDownPicks: null,\n pointerDownScreenCoords: null,\n pointerDownMapCoords: null,\n cancelPan: () => {},\n sourceEvent: null,\n };\n\n this.handlePointerMove(fakePointerMoveEvent, props);\n }\n\n finalizedCoordinates(coords: Position[]) {\n // Remove the hovered position\n let coordinates = [[...coords.slice(0, -2), coords[0]]];\n let pt = this.getIntermediatePoint([...coords]);\n if (!pt) {\n // if intermediate point with 90 degree not available\n // try remove the last clicked point and get the intermediate point.\n const tc = [...coords];\n tc.splice(-3, 1);\n pt = this.getIntermediatePoint([...tc]);\n if (pt) {\n coordinates = [[...coords.slice(0, -3), pt, coords[0]]];\n }\n } else {\n coordinates = [[...coords.slice(0, -2), pt, coords[0]]];\n }\n return coordinates;\n }\n\n getIntermediatePoint(coordinates: Position[]) {\n let pt;\n if (coordinates.length > 4) {\n const [p1, p2] = [...coordinates];\n const angle1 = bearing(p1, p2);\n const p3 = coordinates[coordinates.length - 3];\n const p4 = coordinates[coordinates.length - 4];\n const angle2 = bearing(p3, p4);\n\n const angles = { first: [], second: [] };\n // calculate 3 right angle points for first and last points in lineString\n [1, 2, 3].forEach((factor) => {\n const newAngle1 = angle1 + factor * 90;\n // convert angles to 0 to -180 for anti-clock and 0 to 180 for clock wise\n angles.first.push(newAngle1 > 180 ? newAngle1 - 360 : newAngle1);\n const newAngle2 = angle2 + factor * 90;\n angles.second.push(newAngle2 > 180 ? newAngle2 - 360 : newAngle2);\n });\n\n const distance = turfDistance(point(p1), point(p3));\n // Draw imaginary right angle lines for both first and last points in lineString\n // If there is intersection point for any 2 lines, will be the 90 degree point.\n [0, 1, 2].forEach((indexFirst) => {\n const line1 = turfLineString([\n p1,\n destination(p1, distance, angles.first[indexFirst]).geometry.coordinates,\n ]);\n [0, 1, 2].forEach((indexSecond) => {\n const line2 = turfLineString([\n p3,\n destination(p3, distance, angles.second[indexSecond]).geometry.coordinates,\n ]);\n const fc = lineIntersect(line1, line2);\n if (fc && fc.features.length) {\n // found the intersect point\n pt = fc.features[0].geometry.coordinates;\n }\n });\n });\n }\n return pt;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DrawPolygonByDraggingMode = void 0;\n\nvar _lodash = _interopRequireDefault(require(\"lodash.throttle\"));\n\nvar _utils = require(\"../utils\");\n\nvar _drawPolygonMode = require(\"./draw-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DrawPolygonByDraggingMode = /*#__PURE__*/function (_DrawPolygonMode) {\n _inherits(DrawPolygonByDraggingMode, _DrawPolygonMode);\n\n var _super = _createSuper(DrawPolygonByDraggingMode);\n\n function DrawPolygonByDraggingMode() {\n var _this;\n\n _classCallCheck(this, DrawPolygonByDraggingMode);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"handleDraggingThrottled\", null);\n\n return _this;\n }\n\n _createClass(DrawPolygonByDraggingMode, [{\n key: \"handleClick\",\n value: function handleClick(event, props) {// No-op\n }\n }, {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n event.cancelPan();\n\n if (props.modeConfig && props.modeConfig.throttleMs) {\n this.handleDraggingThrottled = (0, _lodash[\"default\"])(this.handleDraggingAux, props.modeConfig.throttleMs);\n } else {\n this.handleDraggingThrottled = this.handleDraggingAux;\n }\n }\n }, {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n this.addClickSequence(event);\n var clickSequence = this.getClickSequence(); // @ts-ignore\n\n if (this.handleDraggingThrottled && this.handleDraggingThrottled.cancel) {\n // @ts-ignore\n this.handleDraggingThrottled.cancel();\n }\n\n if (clickSequence.length > 2) {\n // Complete the polygon.\n var polygonToAdd = {\n type: 'Polygon',\n coordinates: [[].concat(_toConsumableArray(clickSequence), [clickSequence[0]])]\n };\n this.resetClickSequence();\n var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);\n\n if (editAction) {\n props.onEdit(editAction);\n }\n }\n }\n }, {\n key: \"handleDraggingAux\",\n value: function handleDraggingAux(event, props) {\n var picks = event.picks;\n var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks);\n\n if (!clickedEditHandle) {\n // Don't add another point right next to an existing one.\n this.addClickSequence(event);\n }\n }\n }, {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n if (this.handleDraggingThrottled) {\n this.handleDraggingThrottled(event, props);\n }\n }\n }]);\n\n return DrawPolygonByDraggingMode;\n}(_drawPolygonMode.DrawPolygonMode);\n\nexports.DrawPolygonByDraggingMode = DrawPolygonByDraggingMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1wb2x5Z29uLWJ5LWRyYWdnaW5nLW1vZGUudHMiXSwibmFtZXMiOlsiRHJhd1BvbHlnb25CeURyYWdnaW5nTW9kZSIsImV2ZW50IiwicHJvcHMiLCJjYW5jZWxQYW4iLCJtb2RlQ29uZmlnIiwidGhyb3R0bGVNcyIsImhhbmRsZURyYWdnaW5nVGhyb3R0bGVkIiwiaGFuZGxlRHJhZ2dpbmdBdXgiLCJhZGRDbGlja1NlcXVlbmNlIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJjYW5jZWwiLCJsZW5ndGgiLCJwb2x5Z29uVG9BZGQiLCJ0eXBlIiwiY29vcmRpbmF0ZXMiLCJyZXNldENsaWNrU2VxdWVuY2UiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24iLCJvbkVkaXQiLCJwaWNrcyIsImNsaWNrZWRFZGl0SGFuZGxlIiwiRHJhd1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBU0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFJYUEseUI7Ozs7Ozs7Ozs7Ozs7Ozs7OEVBQ21ELEk7Ozs7Ozs7Z0NBRWxEQyxLLEVBQW1CQyxLLEVBQXFDLENBQ2xFO0FBQ0Q7Ozt3Q0FFbUJELEssRUFBMkJDLEssRUFBcUM7QUFDbEZELE1BQUFBLEtBQUssQ0FBQ0UsU0FBTjs7QUFDQSxVQUFJRCxLQUFLLENBQUNFLFVBQU4sSUFBb0JGLEtBQUssQ0FBQ0UsVUFBTixDQUFpQkMsVUFBekMsRUFBcUQ7QUFDbkQsYUFBS0MsdUJBQUwsR0FBK0Isd0JBQVMsS0FBS0MsaUJBQWQsRUFBaUNMLEtBQUssQ0FBQ0UsVUFBTixDQUFpQkMsVUFBbEQsQ0FBL0I7QUFDRCxPQUZELE1BRU87QUFDTCxhQUFLQyx1QkFBTCxHQUErQixLQUFLQyxpQkFBcEM7QUFDRDtBQUNGOzs7dUNBRWtCTixLLEVBQTBCQyxLLEVBQXFDO0FBQ2hGLFdBQUtNLGdCQUFMLENBQXNCUCxLQUF0QjtBQUNBLFVBQU1RLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0QixDQUZnRixDQUdoRjs7QUFDQSxVQUFJLEtBQUtKLHVCQUFMLElBQWdDLEtBQUtBLHVCQUFMLENBQTZCSyxNQUFqRSxFQUF5RTtBQUN2RTtBQUNBLGFBQUtMLHVCQUFMLENBQTZCSyxNQUE3QjtBQUNEOztBQUVELFVBQUlGLGFBQWEsQ0FBQ0csTUFBZCxHQUF1QixDQUEzQixFQUE4QjtBQUM1QjtBQUNBLFlBQU1DLFlBQXFCLEdBQUc7QUFDNUJDLFVBQUFBLElBQUksRUFBRSxTQURzQjtBQUU1QkMsVUFBQUEsV0FBVyxFQUFFLDhCQUFLTixhQUFMLElBQW9CQSxhQUFhLENBQUMsQ0FBRCxDQUFqQztBQUZlLFNBQTlCO0FBS0EsYUFBS08sa0JBQUw7QUFFQSxZQUFNQyxVQUFVLEdBQUcsS0FBS0MsbUNBQUwsQ0FBeUNMLFlBQXpDLEVBQXVEWCxLQUF2RCxDQUFuQjs7QUFDQSxZQUFJZSxVQUFKLEVBQWdCO0FBQ2RmLFVBQUFBLEtBQUssQ0FBQ2lCLE1BQU4sQ0FBYUYsVUFBYjtBQUNEO0FBQ0Y7QUFDRjs7O3NDQUVpQmhCLEssRUFBc0JDLEssRUFBcUM7QUFBQSxVQUNuRWtCLEtBRG1FLEdBQ3pEbkIsS0FEeUQsQ0FDbkVtQixLQURtRTtBQUUzRSxVQUFNQyxpQkFBaUIsR0FBRyxnQ0FBb0JELEtBQXBCLENBQTFCOztBQUVBLFVBQUksQ0FBQ0MsaUJBQUwsRUFBd0I7QUFDdEI7QUFDQSxhQUFLYixnQkFBTCxDQUFzQlAsS0FBdEI7QUFDRDtBQUNGOzs7bUNBRWNBLEssRUFBc0JDLEssRUFBcUM7QUFDeEUsVUFBSSxLQUFLSSx1QkFBVCxFQUFrQztBQUNoQyxhQUFLQSx1QkFBTCxDQUE2QkwsS0FBN0IsRUFBb0NDLEtBQXBDO0FBQ0Q7QUFDRjs7OztFQXZENENvQixnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gudGhyb3R0bGUnO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgTW9kZVByb3BzLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBQb2x5Z29uLCBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgZ2V0UGlja2VkRWRpdEhhbmRsZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IERyYXdQb2x5Z29uTW9kZSB9IGZyb20gJy4vZHJhdy1wb2x5Z29uLW1vZGUnO1xuXG50eXBlIERyYWdnaW5nSGFuZGxlciA9IChldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pID0+IHZvaWQ7XG5cbmV4cG9ydCBjbGFzcyBEcmF3UG9seWdvbkJ5RHJhZ2dpbmdNb2RlIGV4dGVuZHMgRHJhd1BvbHlnb25Nb2RlIHtcbiAgaGFuZGxlRHJhZ2dpbmdUaHJvdHRsZWQ6IERyYWdnaW5nSGFuZGxlciB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIC8vIE5vLW9wXG4gIH1cblxuICBoYW5kbGVTdGFydERyYWdnaW5nKGV2ZW50OiBTdGFydERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgZXZlbnQuY2FuY2VsUGFuKCk7XG4gICAgaWYgKHByb3BzLm1vZGVDb25maWcgJiYgcHJvcHMubW9kZUNvbmZpZy50aHJvdHRsZU1zKSB7XG4gICAgICB0aGlzLmhhbmRsZURyYWdnaW5nVGhyb3R0bGVkID0gdGhyb3R0bGUodGhpcy5oYW5kbGVEcmFnZ2luZ0F1eCwgcHJvcHMubW9kZUNvbmZpZy50aHJvdHRsZU1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYW5kbGVEcmFnZ2luZ1Rocm90dGxlZCA9IHRoaXMuaGFuZGxlRHJhZ2dpbmdBdXg7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICB0aGlzLmFkZENsaWNrU2VxdWVuY2UoZXZlbnQpO1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHRoaXMuaGFuZGxlRHJhZ2dpbmdUaHJvdHRsZWQgJiYgdGhpcy5oYW5kbGVEcmFnZ2luZ1Rocm90dGxlZC5jYW5jZWwpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuaGFuZGxlRHJhZ2dpbmdUaHJvdHRsZWQuY2FuY2VsKCk7XG4gICAgfVxuXG4gICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMikge1xuICAgICAgLy8gQ29tcGxldGUgdGhlIHBvbHlnb24uXG4gICAgICBjb25zdCBwb2x5Z29uVG9BZGQ6IFBvbHlnb24gPSB7XG4gICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IFtbLi4uY2xpY2tTZXF1ZW5jZSwgY2xpY2tTZXF1ZW5jZVswXV1dLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24ocG9seWdvblRvQWRkLCBwcm9wcyk7XG4gICAgICBpZiAoZWRpdEFjdGlvbikge1xuICAgICAgICBwcm9wcy5vbkVkaXQoZWRpdEFjdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRHJhZ2dpbmdBdXgoZXZlbnQ6IERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3QgeyBwaWNrcyB9ID0gZXZlbnQ7XG4gICAgY29uc3QgY2xpY2tlZEVkaXRIYW5kbGUgPSBnZXRQaWNrZWRFZGl0SGFuZGxlKHBpY2tzKTtcblxuICAgIGlmICghY2xpY2tlZEVkaXRIYW5kbGUpIHtcbiAgICAgIC8vIERvbid0IGFkZCBhbm90aGVyIHBvaW50IHJpZ2h0IG5leHQgdG8gYW4gZXhpc3Rpbmcgb25lLlxuICAgICAgdGhpcy5hZGRDbGlja1NlcXVlbmNlKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAodGhpcy5oYW5kbGVEcmFnZ2luZ1Rocm90dGxlZCkge1xuICAgICAgdGhpcy5oYW5kbGVEcmFnZ2luZ1Rocm90dGxlZChldmVudCwgcHJvcHMpO1xuICAgIH1cbiAgfVxufVxuIl19","import throttle from 'lodash.throttle';\nimport {\n ClickEvent,\n StartDraggingEvent,\n StopDraggingEvent,\n DraggingEvent,\n ModeProps,\n} from '../types';\nimport { Polygon, FeatureCollection } from '../geojson-types';\nimport { getPickedEditHandle } from '../utils';\nimport { DrawPolygonMode } from './draw-polygon-mode';\n\ntype DraggingHandler = (event: DraggingEvent, props: ModeProps) => void;\n\nexport class DrawPolygonByDraggingMode extends DrawPolygonMode {\n handleDraggingThrottled: DraggingHandler | null | undefined = null;\n\n handleClick(event: ClickEvent, props: ModeProps) {\n // No-op\n }\n\n handleStartDragging(event: StartDraggingEvent, props: ModeProps) {\n event.cancelPan();\n if (props.modeConfig && props.modeConfig.throttleMs) {\n this.handleDraggingThrottled = throttle(this.handleDraggingAux, props.modeConfig.throttleMs);\n } else {\n this.handleDraggingThrottled = this.handleDraggingAux;\n }\n }\n\n handleStopDragging(event: StopDraggingEvent, props: ModeProps) {\n this.addClickSequence(event);\n const clickSequence = this.getClickSequence();\n // @ts-ignore\n if (this.handleDraggingThrottled && this.handleDraggingThrottled.cancel) {\n // @ts-ignore\n this.handleDraggingThrottled.cancel();\n }\n\n if (clickSequence.length > 2) {\n // Complete the polygon.\n const polygonToAdd: Polygon = {\n type: 'Polygon',\n coordinates: [[...clickSequence, clickSequence[0]]],\n };\n\n this.resetClickSequence();\n\n const editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);\n if (editAction) {\n props.onEdit(editAction);\n }\n }\n }\n\n handleDraggingAux(event: DraggingEvent, props: ModeProps) {\n const { picks } = event;\n const clickedEditHandle = getPickedEditHandle(picks);\n\n if (!clickedEditHandle) {\n // Don't add another point right next to an existing one.\n this.addClickSequence(event);\n }\n }\n\n handleDragging(event: DraggingEvent, props: ModeProps) {\n if (this.handleDraggingThrottled) {\n this.handleDraggingThrottled(event, props);\n }\n }\n}\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ViewMode = void 0;\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ViewMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(ViewMode, _GeoJsonEditMode);\n\n var _super = _createSuper(ViewMode);\n\n function ViewMode() {\n _classCallCheck(this, ViewMode);\n\n return _super.apply(this, arguments);\n }\n\n return ViewMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.ViewMode = ViewMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdmlldy1tb2RlLnRzIl0sIm5hbWVzIjpbIlZpZXdNb2RlIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLFE7Ozs7Ozs7Ozs7OztFQUFpQkMsZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUgfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcblxuZXhwb3J0IGNsYXNzIFZpZXdNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHt9XG4iXX0=","import { GeoJsonEditMode } from './geojson-edit-mode';\n\nexport class ViewMode extends GeoJsonEditMode {}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MeasureDistanceMode = void 0;\n\nvar _distance = _interopRequireDefault(require(\"@turf/distance\"));\n\nvar _midpoint = _interopRequireDefault(require(\"@turf/midpoint\"));\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar MeasureDistanceMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(MeasureDistanceMode, _GeoJsonEditMode);\n\n var _super = _createSuper(MeasureDistanceMode);\n\n function MeasureDistanceMode() {\n var _this;\n\n _classCallCheck(this, MeasureDistanceMode);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"_isMeasuringSessionFinished\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_currentTooltips\", []);\n\n _defineProperty(_assertThisInitialized(_this), \"_currentDistance\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_calculateDistanceForTooltip\", function (_ref) {\n var positionA = _ref.positionA,\n positionB = _ref.positionB,\n modeConfig = _ref.modeConfig;\n\n var _ref2 = modeConfig || {},\n turfOptions = _ref2.turfOptions,\n measurementCallback = _ref2.measurementCallback;\n\n var distance = (0, _distance[\"default\"])(positionA, positionB, turfOptions);\n\n if (measurementCallback) {\n measurementCallback(distance);\n }\n\n return distance;\n });\n\n return _this;\n }\n\n _createClass(MeasureDistanceMode, [{\n key: \"_formatTooltip\",\n value: function _formatTooltip(distance, modeConfig) {\n var _ref3 = modeConfig || {},\n formatTooltip = _ref3.formatTooltip,\n turfOptions = _ref3.turfOptions;\n\n var units = turfOptions && turfOptions.units || 'kilometers';\n var text;\n\n if (formatTooltip) {\n text = formatTooltip(distance);\n } else {\n // By default, round to 2 decimal places and append units\n text = \"\".concat(parseFloat(distance).toFixed(2), \" \").concat(units);\n }\n\n return text;\n }\n }, {\n key: \"handleClick\",\n value: function handleClick(event, props) {\n var modeConfig = props.modeConfig,\n data = props.data,\n onEdit = props.onEdit;\n\n var _ref4 = modeConfig || {},\n _ref4$centerTooltipsO = _ref4.centerTooltipsOnLine,\n centerTooltipsOnLine = _ref4$centerTooltipsO === void 0 ? false : _ref4$centerTooltipsO; // restart measuring session\n\n\n if (this._isMeasuringSessionFinished) {\n this._isMeasuringSessionFinished = false;\n this.resetClickSequence();\n this._currentTooltips = [];\n this._currentDistance = 0;\n }\n\n var picks = event.picks;\n var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks);\n var positionAdded = false;\n\n if (!clickedEditHandle) {\n // Don't add another point right next to an existing one\n this.addClickSequence(event);\n positionAdded = true;\n }\n\n var clickSequence = this.getClickSequence();\n\n if (clickSequence.length > 1 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1) {\n // They clicked the last point (or double-clicked), so add the LineString\n this._isMeasuringSessionFinished = true;\n } else if (positionAdded) {\n if (clickSequence.length > 1) {\n this._currentDistance += this._calculateDistanceForTooltip({\n positionA: clickSequence[clickSequence.length - 2],\n positionB: clickSequence[clickSequence.length - 1],\n modeConfig: modeConfig\n });\n var tooltipPosition = centerTooltipsOnLine ? (0, _midpoint[\"default\"])(clickSequence[clickSequence.length - 2], clickSequence[clickSequence.length - 1]).geometry.coordinates : event.mapCoords;\n\n this._currentTooltips.push({\n position: tooltipPosition,\n text: this._formatTooltip(this._currentDistance, modeConfig)\n });\n } // new tentative point\n\n\n onEdit({\n // data is the same\n updatedData: data,\n editType: 'addTentativePosition',\n editContext: {\n position: event.mapCoords\n }\n });\n }\n }\n }, {\n key: \"handleKeyUp\",\n value: function handleKeyUp(event, props) {\n if (this._isMeasuringSessionFinished) return;\n event.stopPropagation();\n var key = event.key;\n var clickSequenceLength = this.getClickSequence().length;\n\n switch (key) {\n case 'Escape':\n this._isMeasuringSessionFinished = true;\n\n if (clickSequenceLength === 1) {\n this.resetClickSequence();\n this._currentTooltips = [];\n } // force update drawings\n\n\n props.onUpdateCursor('cell');\n break;\n\n case 'Enter':\n this.handleClick(props.lastPointerMoveEvent, props);\n this._isMeasuringSessionFinished = true;\n break;\n\n default:\n break;\n }\n }\n }, {\n key: \"getGuides\",\n value: function getGuides(props) {\n var _guides$features;\n\n var lastPointerMoveEvent = props.lastPointerMoveEvent;\n var clickSequence = this.getClickSequence();\n var lastCoords = lastPointerMoveEvent && !this._isMeasuringSessionFinished ? [lastPointerMoveEvent.mapCoords] : [];\n var guides = {\n type: 'FeatureCollection',\n features: []\n };\n\n if (clickSequence.length > 0) {\n guides.features.push({\n type: 'Feature',\n properties: {\n guideType: 'tentative'\n },\n geometry: {\n type: 'LineString',\n coordinates: [].concat(_toConsumableArray(clickSequence), lastCoords)\n }\n });\n }\n\n var editHandles = clickSequence.map(function (clickedCoord, index) {\n return {\n type: 'Feature',\n properties: {\n guideType: 'editHandle',\n editHandleType: 'existing',\n featureIndex: -1,\n positionIndexes: [index]\n },\n geometry: {\n type: 'Point',\n coordinates: clickedCoord\n }\n };\n });\n\n (_guides$features = guides.features).push.apply(_guides$features, _toConsumableArray(editHandles)); // @ts-ignore\n\n\n return guides;\n }\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor('cell');\n }\n }, {\n key: \"getTooltips\",\n value: function getTooltips(props) {\n var lastPointerMoveEvent = props.lastPointerMoveEvent,\n modeConfig = props.modeConfig;\n\n var _ref5 = modeConfig || {},\n _ref5$centerTooltipsO = _ref5.centerTooltipsOnLine,\n centerTooltipsOnLine = _ref5$centerTooltipsO === void 0 ? false : _ref5$centerTooltipsO;\n\n var positions = this.getClickSequence();\n\n if (positions.length > 0 && lastPointerMoveEvent && !this._isMeasuringSessionFinished) {\n var distance = this._calculateDistanceForTooltip({\n positionA: positions[positions.length - 1],\n positionB: lastPointerMoveEvent.mapCoords,\n modeConfig: props.modeConfig\n });\n\n var tooltipPosition = centerTooltipsOnLine ? (0, _midpoint[\"default\"])(positions[positions.length - 1], lastPointerMoveEvent.mapCoords).geometry.coordinates : lastPointerMoveEvent.mapCoords;\n return [].concat(_toConsumableArray(this._currentTooltips), [{\n position: tooltipPosition,\n text: this._formatTooltip(this._currentDistance + distance, modeConfig)\n }]);\n }\n\n return this._currentTooltips;\n }\n }]);\n\n return MeasureDistanceMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.MeasureDistanceMode = MeasureDistanceMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbWVhc3VyZS1kaXN0YW5jZS1tb2RlLnRzIl0sIm5hbWVzIjpbIk1lYXN1cmVEaXN0YW5jZU1vZGUiLCJwb3NpdGlvbkEiLCJwb3NpdGlvbkIiLCJtb2RlQ29uZmlnIiwidHVyZk9wdGlvbnMiLCJtZWFzdXJlbWVudENhbGxiYWNrIiwiZGlzdGFuY2UiLCJmb3JtYXRUb29sdGlwIiwidW5pdHMiLCJ0ZXh0IiwicGFyc2VGbG9hdCIsInRvRml4ZWQiLCJldmVudCIsInByb3BzIiwiZGF0YSIsIm9uRWRpdCIsImNlbnRlclRvb2x0aXBzT25MaW5lIiwiX2lzTWVhc3VyaW5nU2Vzc2lvbkZpbmlzaGVkIiwicmVzZXRDbGlja1NlcXVlbmNlIiwiX2N1cnJlbnRUb29sdGlwcyIsIl9jdXJyZW50RGlzdGFuY2UiLCJwaWNrcyIsImNsaWNrZWRFZGl0SGFuZGxlIiwicG9zaXRpb25BZGRlZCIsImFkZENsaWNrU2VxdWVuY2UiLCJjbGlja1NlcXVlbmNlIiwiZ2V0Q2xpY2tTZXF1ZW5jZSIsImxlbmd0aCIsIkFycmF5IiwiaXNBcnJheSIsInByb3BlcnRpZXMiLCJwb3NpdGlvbkluZGV4ZXMiLCJfY2FsY3VsYXRlRGlzdGFuY2VGb3JUb29sdGlwIiwidG9vbHRpcFBvc2l0aW9uIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsIm1hcENvb3JkcyIsInB1c2giLCJwb3NpdGlvbiIsIl9mb3JtYXRUb29sdGlwIiwidXBkYXRlZERhdGEiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0Iiwic3RvcFByb3BhZ2F0aW9uIiwia2V5IiwiY2xpY2tTZXF1ZW5jZUxlbmd0aCIsIm9uVXBkYXRlQ3Vyc29yIiwiaGFuZGxlQ2xpY2siLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsImxhc3RDb29yZHMiLCJndWlkZXMiLCJ0eXBlIiwiZmVhdHVyZXMiLCJndWlkZVR5cGUiLCJlZGl0SGFuZGxlcyIsIm1hcCIsImNsaWNrZWRDb29yZCIsImluZGV4IiwiZWRpdEhhbmRs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LHNDQUUzQixLQUYyQjs7QUFHMUQsVUFBTTRDLFNBQVMsR0FBRyxLQUFLbEMsZ0JBQUwsRUFBbEI7O0FBRUEsVUFBSWtDLFNBQVMsQ0FBQ2pDLE1BQVYsR0FBbUIsQ0FBbkIsSUFBd0JxQixvQkFBeEIsSUFBZ0QsQ0FBQyxLQUFLL0IsMkJBQTFELEVBQXVGO0FBQ3JGLFlBQU1YLFFBQVEsR0FBRyxLQUFLMEIsNEJBQUwsQ0FBa0M7QUFDakQvQixVQUFBQSxTQUFTLEVBQUUyRCxTQUFTLENBQUNBLFNBQVMsQ0FBQ2pDLE1BQVYsR0FBbUIsQ0FBcEIsQ0FENkI7QUFFakR6QixVQUFBQSxTQUFTLEVBQUU4QyxvQkFBb0IsQ0FBQ1osU0FGaUI7QUFHakRqQyxVQUFBQSxVQUFVLEVBQUVVLEtBQUssQ0FBQ1Y7QUFIK0IsU0FBbEMsQ0FBakI7O0FBTUEsWUFBTThCLGVBQWUsR0FBR2pCLG9CQUFvQixHQUN4QywwQkFBYTRDLFNBQVMsQ0FBQ0EsU0FBUyxDQUFDakMsTUFBVixHQUFtQixDQUFwQixDQUF0QixFQUE4Q3FCLG9CQUFvQixDQUFDWixTQUFuRSxFQUE4RUYsUUFBOUUsQ0FDR0MsV0FGcUMsR0FHeENhLG9CQUFvQixDQUFDWixTQUh6QjtBQUtBLDRDQUNLLEtBQUtqQixnQkFEVixJQUVFO0FBQ0VtQixVQUFBQSxRQUFRLEVBQUVMLGVBRFo7QUFFRXhCLFVBQUFBLElBQUksRUFBRSxLQUFLOEIsY0FBTCxDQUFvQixLQUFLbkIsZ0JBQUwsR0FBd0JkLFFBQTVDLEVBQXNESCxVQUF0RDtBQUZSLFNBRkY7QUFPRDs7QUFFRCxhQUFPLEtBQUtnQixnQkFBWjtBQUNEOzs7O0VBdk1zQzBDLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgdHVyZk1pZHBvaW50IGZyb20gJ0B0dXJmL21pZHBvaW50JztcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBDbGlja0V2ZW50LCBQb2ludGVyTW92ZUV2ZW50LCBNb2RlUHJvcHMsIEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24sIFRvb2x0aXAgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRQaWNrZWRFZGl0SGFuZGxlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbmV4cG9ydCBjbGFzcyBNZWFzdXJlRGlzdGFuY2VNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX2lzTWVhc3VyaW5nU2Vzc2lvbkZpbmlzaGVkID0gZmFsc2U7XG4gIF9jdXJyZW50VG9vbHRpcHMgPSBbXTtcbiAgX2N1cnJlbnREaXN0YW5jZSA9IDA7XG5cbiAgX2NhbGN1bGF0ZURpc3RhbmNlRm9yVG9vbHRpcCA9ICh7IHBvc2l0aW9uQSwgcG9zaXRpb25CLCBtb2RlQ29uZmlnIH0pID0+IHtcbiAgICBjb25zdCB7IHR1cmZPcHRpb25zLCBtZWFzdXJlbWVudENhbGxiYWNrIH0gPSBtb2RlQ29uZmlnIHx8IHt9O1xuICAgIGNvbnN0IGRpc3RhbmNlID0gdHVyZkRpc3RhbmNlKHBvc2l0aW9uQSwgcG9zaXRpb25CLCB0dXJmT3B0aW9ucyk7XG5cbiAgICBpZiAobWVhc3VyZW1lbnRDYWxsYmFjaykge1xuICAgICAgbWVhc3VyZW1lbnRDYWxsYmFjayhkaXN0YW5jZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpc3RhbmNlO1xuICB9O1xuXG4gIF9mb3JtYXRUb29sdGlwKGRpc3RhbmNlLCBtb2RlQ29uZmlnPykge1xuICAgIGNvbnN0IHsgZm9ybWF0VG9vbHRpcCwgdHVyZk9wdGlvbnMgfSA9IG1vZGVDb25maWcgfHwge307XG4gICAgY29uc3QgdW5pdHMgPSAodHVyZk9wdGlvbnMgJiYgdHVyZk9wdGlvbnMudW5pdHMpIHx8ICdraWxvbWV0ZXJzJztcblxuICAgIGxldCB0ZXh0O1xuICAgIGlmIChmb3JtYXRUb29sdGlwKSB7XG4gICAgICB0ZXh0ID0gZm9ybWF0VG9vbHRpcChkaXN0YW5jZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEJ5IGRlZmF1bHQsIHJvdW5kIHRvIDIgZGVjaW1hbCBwbGFjZXMgYW5kIGFwcGVuZCB1bml0c1xuICAgICAgdGV4dCA9IGAke3BhcnNlRmxvYXQoZGlzdGFuY2UpLnRvRml4ZWQoMil9ICR7dW5pdHN9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHsgbW9kZUNvbmZpZywgZGF0YSwgb25FZGl0IH0gPSBwcm9wcztcbiAgICBjb25zdCB7IGNlbnRlclRvb2x0aXBzT25MaW5lID0gZmFsc2UgfSA9IG1vZGVDb25maWcgfHwge307XG5cbiAgICAvLyByZXN0YXJ0IG1lYXN1cmluZyBzZXNzaW9uXG4gICAgaWYgKHRoaXMuX2lzTWVhc3VyaW5nU2Vzc2lvbkZpbmlzaGVkKSB7XG4gICAgICB0aGlzLl9pc01lYXN1cmluZ1Nlc3Npb25GaW5pc2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICAgIHRoaXMuX2N1cnJlbnRUb29sdGlwcyA9IFtdO1xuICAgICAgdGhpcy5fY3VycmVudERpc3RhbmNlID0gMDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHBpY2tzIH0gPSBldmVudDtcbiAgICBjb25zdCBjbGlja2VkRWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUocGlja3MpO1xuXG4gICAgbGV0IHBvc2l0aW9uQWRkZWQgPSBmYWxzZTtcbiAgICBpZiAoIWNsaWNrZWRFZGl0SGFuZGxlKSB7XG4gICAgICAvLyBEb24ndCBhZGQgYW5vdGhlciBwb2ludCByaWdodCBuZXh0IHRvIGFuIGV4aXN0aW5nIG9uZVxuICAgICAgdGhpcy5hZGRDbGlja1NlcXVlbmNlKGV2ZW50KTtcbiAgICAgIHBvc2l0aW9uQWRkZWQgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBpZiAoXG4gICAgICBjbGlja1NlcXVlbmNlLmxlbmd0aCA+IDEgJiZcbiAgICAgIGNsaWNrZWRFZGl0SGFuZGxlICYmXG4gICAgICBBcnJheS5pc0FycmF5KGNsaWNrZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzKSAmJlxuICAgICAgY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXNbMF0gPT09IGNsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMVxuICAgICkge1xuICAgICAgLy8gVGhleSBjbGlja2VkIHRoZSBsYXN0IHBvaW50IChvciBkb3VibGUtY2xpY2tlZCksIHNvIGFkZCB0aGUgTGluZVN0cmluZ1xuICAgICAgdGhpcy5faXNNZWFzdXJpbmdTZXNzaW9uRmluaXNoZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAocG9zaXRpb25BZGRlZCkge1xuICAgICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMSkge1xuICAgICAgICB0aGlzLl9jdXJyZW50RGlzdGFuY2UgKz0gdGhpcy5fY2FsY3VsYXRlRGlzdGFuY2VGb3JUb29sdGlwKHtcbiAgICAgICAgICBwb3NpdGlvbkE6IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAyXSxcbiAgICAgICAgICBwb3NpdGlvbkI6IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXSxcbiAgICAgICAgICBtb2RlQ29uZmlnLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB0b29sdGlwUG9zaXRpb24gPSBjZW50ZXJUb29sdGlwc09uTGluZVxuICAgICAgICAgID8gdHVyZk1pZHBvaW50KFxuICAgICAgICAgICAgICBjbGlja1NlcXVlbmNlW2NsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMl0sXG4gICAgICAgICAgICAgIGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXVxuICAgICAgICAgICAgKS5nZW9tZXRyeS5jb29yZGluYXRlc1xuICAgICAgICAgIDogZXZlbnQubWFwQ29vcmRzO1xuXG4gICAgICAgIHRoaXMuX2N1cnJlbnRUb29sdGlwcy5wdXNoKHtcbiAgICAgICAgICBwb3NpdGlvbjogdG9vbHRpcFBvc2l0aW9uLFxuICAgICAgICAgIHRleHQ6IHRoaXMuX2Zvcm1hdFRvb2x0aXAodGhpcy5fY3VycmVudERpc3RhbmNlLCBtb2RlQ29uZmlnKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIG5ldyB0ZW50YXRpdmUgcG9pbnRcbiAgICAgIG9uRWRpdCh7XG4gICAgICAgIC8vIGRhdGEgaXMgdGhlIHNhbWVcbiAgICAgICAgdXBkYXRlZERhdGE6IGRhdGEsXG4gICAgICAgIGVkaXRUeXBlOiAnYWRkVGVudGF0aXZlUG9zaXRpb24nLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIHBvc2l0aW9uOiBldmVudC5tYXBDb29yZHMsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAodGhpcy5faXNNZWFzdXJpbmdTZXNzaW9uRmluaXNoZWQpIHJldHVybjtcblxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IHsga2V5IH0gPSBldmVudDtcblxuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2VMZW5ndGggPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKS5sZW5ndGg7XG5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgdGhpcy5faXNNZWFzdXJpbmdTZXNzaW9uRmluaXNoZWQgPSB0cnVlO1xuICAgICAgICBpZiAoY2xpY2tTZXF1ZW5jZUxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIHRoaXMucmVzZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgICAgICAgdGhpcy5fY3VycmVudFRvb2x0aXBzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgLy8gZm9yY2UgdXBkYXRlIGRyYXdpbmdzXG4gICAgICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKCdjZWxsJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICB0aGlzLmhhbmRsZUNsaWNrKHByb3BzLmxhc3RQb2ludGVyTW92ZUV2ZW50LCBwcm9wcyk7XG4gICAgICAgIHRoaXMuX2lzTWVhc3VyaW5nU2Vzc2lvbkZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCB7IGxhc3RQb2ludGVyTW92ZUV2ZW50IH0gPSBwcm9wcztcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBjb25zdCBsYXN0Q29vcmRzID1cbiAgICAgIGxhc3RQb2ludGVyTW92ZUV2ZW50ICYmICF0aGlzLl9pc01lYXN1cmluZ1Nlc3Npb25GaW5pc2hlZFxuICAgICAgICA/IFtsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHNdXG4gICAgICAgIDogW107XG5cbiAgICBjb25zdCBndWlkZXMgPSB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtdLFxuICAgIH07XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAwKSB7XG4gICAgICBndWlkZXMuZmVhdHVyZXMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGd1aWRlVHlwZTogJ3RlbnRhdGl2ZScsXG4gICAgICAgIH0sXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZSwgLi4ubGFzdENvb3Jkc10sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0SGFuZGxlcyA9IGNsaWNrU2VxdWVuY2UubWFwKChjbGlja2VkQ29vcmQsIGluZGV4KSA9PiAoe1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgZWRpdEhhbmRsZVR5cGU6ICdleGlzdGluZycsXG4gICAgICAgIGZlYXR1cmVJbmRleDogLTEsXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlczogW2luZGV4XSxcbiAgICAgIH0sXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICBjb29yZGluYXRlczogY2xpY2tlZENvb3JkLFxuICAgICAgfSxcbiAgICB9KSk7XG5cbiAgICBndWlkZXMuZmVhdHVyZXMucHVzaCguLi5lZGl0SGFuZGxlcyk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICB9XG5cbiAgZ2V0VG9vbHRpcHMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBUb29sdGlwW10ge1xuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQsIG1vZGVDb25maWcgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgY2VudGVyVG9vbHRpcHNPbkxpbmUgPSBmYWxzZSB9ID0gbW9kZUNvbmZpZyB8fCB7fTtcbiAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGlmIChwb3NpdGlvbnMubGVuZ3RoID4gMCAmJiBsYXN0UG9pbnRlck1vdmVFdmVudCAmJiAhdGhpcy5faXNNZWFzdXJpbmdTZXNzaW9uRmluaXNoZWQpIHtcbiAgICAgIGNvbnN0IGRpc3RhbmNlID0gdGhpcy5fY2FsY3VsYXRlRGlzdGFuY2VGb3JUb29sdGlwKHtcbiAgICAgICAgcG9zaXRpb25BOiBwb3NpdGlvbnNbcG9zaXRpb25zLmxlbmd0aCAtIDFdLFxuICAgICAgICBwb3NpdGlvbkI6IGxhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgbW9kZUNvbmZpZzogcHJvcHMubW9kZUNvbmZpZyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0b29sdGlwUG9zaXRpb24gPSBjZW50ZXJUb29sdGlwc09uTGluZVxuICAgICAgICA/IHR1cmZNaWRwb2ludChwb3NpdGlvbnNbcG9zaXRpb25zLmxlbmd0aCAtIDFdLCBsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHMpLmdlb21ldHJ5XG4gICAgICAgICAgICAuY29vcmRpbmF0ZXNcbiAgICAgICAgOiBsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHM7XG5cbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLnRoaXMuX2N1cnJlbnRUb29sdGlwcyxcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiB0b29sdGlwUG9zaXRpb24sXG4gICAgICAgICAgdGV4dDogdGhpcy5fZm9ybWF0VG9vbHRpcCh0aGlzLl9jdXJyZW50RGlzdGFuY2UgKyBkaXN0YW5jZSwgbW9kZUNvbmZpZyksXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50VG9vbHRpcHM7XG4gIH1cbn1cbiJdfQ==","import turfDistance from '@turf/distance';\nimport turfMidpoint from '@turf/midpoint';\nimport { FeatureCollection } from '../geojson-types';\nimport { ClickEvent, PointerMoveEvent, ModeProps, GuideFeatureCollection, Tooltip } from '../types';\nimport { getPickedEditHandle } from '../utils';\nimport { GeoJsonEditMode } from './geojson-edit-mode';\n\nexport class MeasureDistanceMode extends GeoJsonEditMode {\n _isMeasuringSessionFinished = false;\n _currentTooltips = [];\n _currentDistance = 0;\n\n _calculateDistanceForTooltip = ({ positionA, positionB, modeConfig }) => {\n const { turfOptions, measurementCallback } = modeConfig || {};\n const distance = turfDistance(positionA, positionB, turfOptions);\n\n if (measurementCallback) {\n measurementCallback(distance);\n }\n\n return distance;\n };\n\n _formatTooltip(distance, modeConfig?) {\n const { formatTooltip, turfOptions } = modeConfig || {};\n const units = (turfOptions && turfOptions.units) || 'kilometers';\n\n let text;\n if (formatTooltip) {\n text = formatTooltip(distance);\n } else {\n // By default, round to 2 decimal places and append units\n text = `${parseFloat(distance).toFixed(2)} ${units}`;\n }\n\n return text;\n }\n\n handleClick(event: ClickEvent, props: ModeProps) {\n const { modeConfig, data, onEdit } = props;\n const { centerTooltipsOnLine = false } = modeConfig || {};\n\n // restart measuring session\n if (this._isMeasuringSessionFinished) {\n this._isMeasuringSessionFinished = false;\n this.resetClickSequence();\n this._currentTooltips = [];\n this._currentDistance = 0;\n }\n\n const { picks } = event;\n const clickedEditHandle = getPickedEditHandle(picks);\n\n let positionAdded = false;\n if (!clickedEditHandle) {\n // Don't add another point right next to an existing one\n this.addClickSequence(event);\n positionAdded = true;\n }\n const clickSequence = this.getClickSequence();\n\n if (\n clickSequence.length > 1 &&\n clickedEditHandle &&\n Array.isArray(clickedEditHandle.properties.positionIndexes) &&\n clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1\n ) {\n // They clicked the last point (or double-clicked), so add the LineString\n this._isMeasuringSessionFinished = true;\n } else if (positionAdded) {\n if (clickSequence.length > 1) {\n this._currentDistance += this._calculateDistanceForTooltip({\n positionA: clickSequence[clickSequence.length - 2],\n positionB: clickSequence[clickSequence.length - 1],\n modeConfig,\n });\n\n const tooltipPosition = centerTooltipsOnLine\n ? turfMidpoint(\n clickSequence[clickSequence.length - 2],\n clickSequence[clickSequence.length - 1]\n ).geometry.coordinates\n : event.mapCoords;\n\n this._currentTooltips.push({\n position: tooltipPosition,\n text: this._formatTooltip(this._currentDistance, modeConfig),\n });\n }\n\n // new tentative point\n onEdit({\n // data is the same\n updatedData: data,\n editType: 'addTentativePosition',\n editContext: {\n position: event.mapCoords,\n },\n });\n }\n }\n\n handleKeyUp(event: KeyboardEvent, props: ModeProps) {\n if (this._isMeasuringSessionFinished) return;\n\n event.stopPropagation();\n const { key } = event;\n\n const clickSequenceLength = this.getClickSequence().length;\n\n switch (key) {\n case 'Escape':\n this._isMeasuringSessionFinished = true;\n if (clickSequenceLength === 1) {\n this.resetClickSequence();\n this._currentTooltips = [];\n }\n // force update drawings\n props.onUpdateCursor('cell');\n break;\n case 'Enter':\n this.handleClick(props.lastPointerMoveEvent, props);\n this._isMeasuringSessionFinished = true;\n break;\n default:\n break;\n }\n }\n\n getGuides(props: ModeProps): GuideFeatureCollection {\n const { lastPointerMoveEvent } = props;\n const clickSequence = this.getClickSequence();\n\n const lastCoords =\n lastPointerMoveEvent && !this._isMeasuringSessionFinished\n ? [lastPointerMoveEvent.mapCoords]\n : [];\n\n const guides = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (clickSequence.length > 0) {\n guides.features.push({\n type: 'Feature',\n properties: {\n guideType: 'tentative',\n },\n geometry: {\n type: 'LineString',\n coordinates: [...clickSequence, ...lastCoords],\n },\n });\n }\n\n const editHandles = clickSequence.map((clickedCoord, index) => ({\n type: 'Feature',\n properties: {\n guideType: 'editHandle',\n editHandleType: 'existing',\n featureIndex: -1,\n positionIndexes: [index],\n },\n geometry: {\n type: 'Point',\n coordinates: clickedCoord,\n },\n }));\n\n guides.features.push(...editHandles);\n // @ts-ignore\n return guides;\n }\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps) {\n props.onUpdateCursor('cell');\n }\n\n getTooltips(props: ModeProps): Tooltip[] {\n const { lastPointerMoveEvent, modeConfig } = props;\n const { centerTooltipsOnLine = false } = modeConfig || {};\n const positions = this.getClickSequence();\n\n if (positions.length > 0 && lastPointerMoveEvent && !this._isMeasuringSessionFinished) {\n const distance = this._calculateDistanceForTooltip({\n positionA: positions[positions.length - 1],\n positionB: lastPointerMoveEvent.mapCoords,\n modeConfig: props.modeConfig,\n });\n\n const tooltipPosition = centerTooltipsOnLine\n ? turfMidpoint(positions[positions.length - 1], lastPointerMoveEvent.mapCoords).geometry\n .coordinates\n : lastPointerMoveEvent.mapCoords;\n\n return [\n ...this._currentTooltips,\n {\n position: tooltipPosition,\n text: this._formatTooltip(this._currentDistance + distance, modeConfig),\n },\n ];\n }\n\n return this._currentTooltips;\n }\n}\n","import bearing from '@turf/bearing';\nimport destination from '@turf/destination';\nimport distance from '@turf/distance';\n\n/**\n * Takes two {@link Point|points} and returns a point midway between them.\n * The midpoint is calculated geodesically, meaning the curvature of the earth is taken into account.\n *\n * @name midpoint\n * @param {Coord} point1 first point\n * @param {Coord} point2 second point\n * @returns {Feature} a point midway between `pt1` and `pt2`\n * @example\n * var point1 = turf.point([144.834823, -37.771257]);\n * var point2 = turf.point([145.14244, -37.830937]);\n *\n * var midpoint = turf.midpoint(point1, point2);\n *\n * //addToMap\n * var addToMap = [point1, point2, midpoint];\n * midpoint.properties['marker-color'] = '#f00';\n */\nfunction midpoint(point1, point2) {\n var dist = distance(point1, point2);\n var heading = bearing(point1, point2);\n var midpoint = destination(point1, dist / 2, heading);\n\n return midpoint;\n}\n\nexport default midpoint;\n","import { degreesToRadians, radiansToDegrees } from \"@turf/helpers\";\nimport { getCoord } from \"@turf/invariant\";\n// http://en.wikipedia.org/wiki/Haversine_formula\n// http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Takes two {@link Point|points} and finds the geographic bearing between them,\n * i.e. the angle measured in degrees from the north line (0 degrees)\n *\n * @name bearing\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.final=false] calculates the final bearing if true\n * @returns {number} bearing in decimal degrees, between -180 and 180 degrees (positive clockwise)\n * @example\n * var point1 = turf.point([-75.343, 39.984]);\n * var point2 = turf.point([-75.534, 39.123]);\n *\n * var bearing = turf.bearing(point1, point2);\n *\n * //addToMap\n * var addToMap = [point1, point2]\n * point1.properties['marker-color'] = '#f00'\n * point2.properties['marker-color'] = '#0f0'\n * point1.properties.bearing = bearing\n */\nexport default function bearing(start, end, options) {\n if (options === void 0) { options = {}; }\n // Reverse calculation\n if (options.final === true) {\n return calculateFinalBearing(start, end);\n }\n var coordinates1 = getCoord(start);\n var coordinates2 = getCoord(end);\n var lon1 = degreesToRadians(coordinates1[0]);\n var lon2 = degreesToRadians(coordinates2[0]);\n var lat1 = degreesToRadians(coordinates1[1]);\n var lat2 = degreesToRadians(coordinates2[1]);\n var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n var b = Math.cos(lat1) * Math.sin(lat2) -\n Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n return radiansToDegrees(Math.atan2(a, b));\n}\n/**\n * Calculates Final Bearing\n *\n * @private\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @returns {number} bearing\n */\nfunction calculateFinalBearing(start, end) {\n // Swap start & end\n var bear = bearing(end, start);\n bear = (bear + 180) % 360;\n return bear;\n}\n","/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexport var earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: earthRadius / 111325,\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var unitsFactors = {\n centimeters: 100,\n centimetres: 100,\n degrees: 1 / 111325,\n feet: 3.28084,\n inches: 39.37,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n meters: 1,\n metres: 1,\n miles: 1 / 1609.344,\n millimeters: 1000,\n millimetres: 1000,\n nauticalmiles: 1 / 1852,\n radians: 1 / earthRadius,\n yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var areaFactors = {\n acres: 0.000247105,\n centimeters: 10000,\n centimetres: 10000,\n feet: 10.763910417,\n hectares: 0.0001,\n inches: 1550.003100006,\n kilometers: 0.000001,\n kilometres: 0.000001,\n meters: 1,\n metres: 1,\n miles: 3.86e-7,\n millimeters: 1000000,\n millimetres: 1000000,\n yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nexport function feature(geom, properties, options) {\n if (options === void 0) { options = {}; }\n var feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nexport function geometry(type, coordinates, _options) {\n if (_options === void 0) { _options = {}; }\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nexport function point(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n var geom = {\n type: \"Point\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nexport function points(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nexport function polygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n var ring = coordinates_1[_i];\n if (ring.length < 4) {\n throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n var geom = {\n type: \"Polygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nexport function polygons(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nexport function lineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n var geom = {\n type: \"LineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nexport function lineStrings(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nexport function featureCollection(features, options) {\n if (options === void 0) { options = {}; }\n var fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nexport function multiLineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiLineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nexport function multiPoint(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPoint\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nexport function multiPolygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPolygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nexport function geometryCollection(geometries, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"GeometryCollection\",\n geometries: geometries,\n };\n return feature(geom, properties, options);\n}\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nexport function round(num, precision) {\n if (precision === void 0) { precision = 0; }\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nexport function radiansToLength(radians, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nexport function lengthToRadians(distance, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nexport function lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nexport function bearingToAzimuth(bearing) {\n var angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nexport function radiansToDegrees(radians) {\n var degrees = radians % (2 * Math.PI);\n return (degrees * 180) / Math.PI;\n}\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nexport function degreesToRadians(degrees) {\n var radians = degrees % 360;\n return (radians * Math.PI) / 180;\n}\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nexport function convertLength(length, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nexport function convertArea(area, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"meters\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n var startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n var finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return (area / startFactor) * finalFactor;\n}\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nexport function isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nexport function isObject(input) {\n return !!input && input.constructor === Object;\n}\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nexport function validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach(function (num) {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nexport function validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\n","import { isNumber, } from \"@turf/helpers\";\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nexport function getCoord(coord) {\n if (!coord) {\n throw new Error(\"coord is required\");\n }\n if (!Array.isArray(coord)) {\n if (coord.type === \"Feature\" &&\n coord.geometry !== null &&\n coord.geometry.type === \"Point\") {\n return coord.geometry.coordinates;\n }\n if (coord.type === \"Point\") {\n return coord.coordinates;\n }\n }\n if (Array.isArray(coord) &&\n coord.length >= 2 &&\n !Array.isArray(coord[0]) &&\n !Array.isArray(coord[1])) {\n return coord;\n }\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nexport function getCoords(coords) {\n if (Array.isArray(coords)) {\n return coords;\n }\n // Feature\n if (coords.type === \"Feature\") {\n if (coords.geometry !== null) {\n return coords.geometry.coordinates;\n }\n }\n else {\n // Geometry\n if (coords.coordinates) {\n return coords.coordinates;\n }\n }\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nexport function containsNumber(coordinates) {\n if (coordinates.length > 1 &&\n isNumber(coordinates[0]) &&\n isNumber(coordinates[1])) {\n return true;\n }\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error(\"coordinates must only contain numbers\");\n}\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nexport function geojsonType(value, type, name) {\n if (!type || !name) {\n throw new Error(\"type and name required\");\n }\n if (!value || value.type !== type) {\n throw new Error(\"Invalid input to \" +\n name +\n \": must be a \" +\n type +\n \", given \" +\n value.type);\n }\n}\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nexport function featureOf(feature, type, name) {\n if (!feature) {\n throw new Error(\"No feature passed\");\n }\n if (!name) {\n throw new Error(\".featureOf() requires a name\");\n }\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\"Invalid input to \" +\n name +\n \": must be a \" +\n type +\n \", given \" +\n feature.geometry.type);\n }\n}\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nexport function collectionOf(featureCollection, type, name) {\n if (!featureCollection) {\n throw new Error(\"No featureCollection passed\");\n }\n if (!name) {\n throw new Error(\".collectionOf() requires a name\");\n }\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n }\n for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n var feature = _a[_i];\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\"Invalid input to \" +\n name +\n \": must be a \" +\n type +\n \", given \" +\n feature.geometry.type);\n }\n }\n}\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nexport function getGeom(geojson) {\n if (geojson.type === \"Feature\") {\n return geojson.geometry;\n }\n return geojson;\n}\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nexport function getType(geojson, _name) {\n if (geojson.type === \"FeatureCollection\") {\n return \"FeatureCollection\";\n }\n if (geojson.type === \"GeometryCollection\") {\n return \"GeometryCollection\";\n }\n if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n return geojson.geometry.type;\n }\n return geojson.type;\n}\n","// http://en.wikipedia.org/wiki/Haversine_formula\n// http://www.movable-type.co.uk/scripts/latlong.html\nimport { degreesToRadians, lengthToRadians, point, radiansToDegrees, } from \"@turf/helpers\";\nimport { getCoord } from \"@turf/invariant\";\n/**\n * Takes a {@link Point} and calculates the location of a destination point given a distance in\n * degrees, radians, miles, or kilometers; and bearing in degrees.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name destination\n * @param {Coord} origin starting point\n * @param {number} distance distance from the origin point\n * @param {number} bearing ranging from -180 to 180\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians\n * @param {Object} [options.properties={}] Translate properties to Point\n * @returns {Feature} destination point\n * @example\n * var point = turf.point([-75.343, 39.984]);\n * var distance = 50;\n * var bearing = 90;\n * var options = {units: 'miles'};\n *\n * var destination = turf.destination(point, distance, bearing, options);\n *\n * //addToMap\n * var addToMap = [point, destination]\n * destination.properties['marker-color'] = '#f00';\n * point.properties['marker-color'] = '#0f0';\n */\nexport default function destination(origin, distance, bearing, options) {\n if (options === void 0) { options = {}; }\n // Handle input\n var coordinates1 = getCoord(origin);\n var longitude1 = degreesToRadians(coordinates1[0]);\n var latitude1 = degreesToRadians(coordinates1[1]);\n var bearingRad = degreesToRadians(bearing);\n var radians = lengthToRadians(distance, options.units);\n // Main\n var latitude2 = Math.asin(Math.sin(latitude1) * Math.cos(radians) +\n Math.cos(latitude1) * Math.sin(radians) * Math.cos(bearingRad));\n var longitude2 = longitude1 +\n Math.atan2(Math.sin(bearingRad) * Math.sin(radians) * Math.cos(latitude1), Math.cos(radians) - Math.sin(latitude1) * Math.sin(latitude2));\n var lng = radiansToDegrees(longitude2);\n var lat = radiansToDegrees(latitude2);\n return point([lng, lat], options.properties);\n}\n","import { getCoord } from \"@turf/invariant\";\nimport { radiansToLength, degreesToRadians, } from \"@turf/helpers\";\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Calculates the distance between two {@link Point|points} in degrees, radians, miles, or kilometers.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name distance\n * @param {Coord | Point} from origin point or coordinate\n * @param {Coord | Point} to destination point or coordinate\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.distance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */\nfunction distance(from, to, options) {\n if (options === void 0) { options = {}; }\n var coordinates1 = getCoord(from);\n var coordinates2 = getCoord(to);\n var dLat = degreesToRadians(coordinates2[1] - coordinates1[1]);\n var dLon = degreesToRadians(coordinates2[0] - coordinates1[0]);\n var lat1 = degreesToRadians(coordinates1[1]);\n var lat2 = degreesToRadians(coordinates2[1]);\n var a = Math.pow(Math.sin(dLat / 2), 2) +\n Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n return radiansToLength(2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)), options.units);\n}\nexport default distance;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MeasureAreaMode = void 0;\n\nvar _area = _interopRequireDefault(require(\"@turf/area\"));\n\nvar _centroid = _interopRequireDefault(require(\"@turf/centroid\"));\n\nvar _drawPolygonMode = require(\"./draw-polygon-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DEFAULT_TOOLTIPS = [];\n\nvar MeasureAreaMode = /*#__PURE__*/function (_DrawPolygonMode) {\n _inherits(MeasureAreaMode, _DrawPolygonMode);\n\n var _super = _createSuper(MeasureAreaMode);\n\n function MeasureAreaMode() {\n _classCallCheck(this, MeasureAreaMode);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MeasureAreaMode, [{\n key: \"handleClick\",\n value: function handleClick(event, props) {\n var propsWithoutEdit = _objectSpread({}, props, {\n // @ts-ignore\n onEdit: function onEdit() {}\n });\n\n _get(_getPrototypeOf(MeasureAreaMode.prototype), \"handleClick\", this).call(this, event, propsWithoutEdit);\n }\n }, {\n key: \"getTooltips\",\n value: function getTooltips(props) {\n var tentativeGuide = this.getTentativeGuide(props);\n\n if (tentativeGuide && tentativeGuide.geometry.type === 'Polygon') {\n var modeConfig = props.modeConfig;\n\n var _ref = modeConfig || {},\n formatTooltip = _ref.formatTooltip,\n measurementCallback = _ref.measurementCallback;\n\n var units = 'sq. m';\n var centroid = (0, _centroid[\"default\"])(tentativeGuide);\n var area = (0, _area[\"default\"])(tentativeGuide);\n var text;\n\n if (formatTooltip) {\n text = formatTooltip(area);\n } else {\n // By default, round to 2 decimal places and append units\n // @ts-ignore\n text = \"\".concat(parseFloat(area).toFixed(2), \" \").concat(units);\n }\n\n if (measurementCallback) {\n measurementCallback(area);\n }\n\n return [{\n position: centroid.geometry.coordinates,\n text: text\n }];\n }\n\n return DEFAULT_TOOLTIPS;\n }\n }]);\n\n return MeasureAreaMode;\n}(_drawPolygonMode.DrawPolygonMode);\n\nexports.MeasureAreaMode = MeasureAreaMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbWVhc3VyZS1hcmVhLW1vZGUudHMiXSwibmFtZXMiOlsiREVGQVVMVF9UT09MVElQUyIsIk1lYXN1cmVBcmVhTW9kZSIsImV2ZW50IiwicHJvcHMiLCJwcm9wc1dpdGhvdXRFZGl0Iiwib25FZGl0IiwidGVudGF0aXZlR3VpZGUiLCJnZXRUZW50YXRpdmVHdWlkZSIsImdlb21ldHJ5IiwidHlwZSIsIm1vZGVDb25maWciLCJmb3JtYXRUb29sdGlwIiwibWVhc3VyZW1lbnRDYWxsYmFjayIsInVuaXRzIiwiY2VudHJvaWQiLCJhcmVhIiwidGV4dCIsInBhcnNlRmxvYXQiLCJ0b0ZpeGVkIiwicG9zaXRpb24iLCJjb29yZGluYXRlcyIsIkRyYXdQb2x5Z29uTW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUdBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxnQkFBZ0IsR0FBRyxFQUF6Qjs7SUFFYUMsZTs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFtQkMsSyxFQUFxQztBQUNsRSxVQUFNQyxnQkFBZ0IscUJBQ2pCRCxLQURpQjtBQUVwQjtBQUNBRSxRQUFBQSxNQUFNLEVBQUUsa0JBQU0sQ0FBRTtBQUhJLFFBQXRCOztBQU1BLHVGQUFrQkgsS0FBbEIsRUFBeUJFLGdCQUF6QjtBQUNEOzs7Z0NBRVdELEssRUFBZ0Q7QUFDMUQsVUFBTUcsY0FBYyxHQUFHLEtBQUtDLGlCQUFMLENBQXVCSixLQUF2QixDQUF2Qjs7QUFFQSxVQUFJRyxjQUFjLElBQUlBLGNBQWMsQ0FBQ0UsUUFBZixDQUF3QkMsSUFBeEIsS0FBaUMsU0FBdkQsRUFBa0U7QUFBQSxZQUN4REMsVUFEd0QsR0FDekNQLEtBRHlDLENBQ3hETyxVQUR3RDs7QUFBQSxtQkFFakJBLFVBQVUsSUFBSSxFQUZHO0FBQUEsWUFFeERDLGFBRndELFFBRXhEQSxhQUZ3RDtBQUFBLFlBRXpDQyxtQkFGeUMsUUFFekNBLG1CQUZ5Qzs7QUFHaEUsWUFBTUMsS0FBSyxHQUFHLE9BQWQ7QUFFQSxZQUFNQyxRQUFRLEdBQUcsMEJBQWFSLGNBQWIsQ0FBakI7QUFDQSxZQUFNUyxJQUFJLEdBQUcsc0JBQVNULGNBQVQsQ0FBYjtBQUVBLFlBQUlVLElBQUo7O0FBQ0EsWUFBSUwsYUFBSixFQUFtQjtBQUNqQkssVUFBQUEsSUFBSSxHQUFHTCxhQUFhLENBQUNJLElBQUQsQ0FBcEI7QUFDRCxTQUZELE1BRU87QUFDTDtBQUNBO0FBQ0FDLFVBQUFBLElBQUksYUFBTUMsVUFBVSxDQUFDRixJQUFELENBQVYsQ0FBaUJHLE9BQWpCLENBQXlCLENBQXpCLENBQU4sY0FBcUNMLEtBQXJDLENBQUo7QUFDRDs7QUFFRCxZQUFJRCxtQkFBSixFQUF5QjtBQUN2QkEsVUFBQUEsbUJBQW1CLENBQUNHLElBQUQsQ0FBbkI7QUFDRDs7QUFFRCxlQUFPLENBQ0w7QUFDRUksVUFBQUEsUUFBUSxFQUFFTCxRQUFRLENBQUNOLFFBQVQsQ0FBa0JZLFdBRDlCO0FBRUVKLFVBQUFBLElBQUksRUFBSkE7QUFGRixTQURLLENBQVA7QUFNRDs7QUFDRCxhQUFPaEIsZ0JBQVA7QUFDRDs7OztFQTNDa0NxQixnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0dXJmQXJlYSBmcm9tICdAdHVyZi9hcmVhJztcbmltcG9ydCB0dXJmQ2VudHJvaWQgZnJvbSAnQHR1cmYvY2VudHJvaWQnO1xuaW1wb3J0IHsgQ2xpY2tFdmVudCwgVG9vbHRpcCwgTW9kZVByb3BzIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IERyYXdQb2x5Z29uTW9kZSB9IGZyb20gJy4vZHJhdy1wb2x5Z29uLW1vZGUnO1xuXG5jb25zdCBERUZBVUxUX1RPT0xUSVBTID0gW107XG5cbmV4cG9ydCBjbGFzcyBNZWFzdXJlQXJlYU1vZGUgZXh0ZW5kcyBEcmF3UG9seWdvbk1vZGUge1xuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBwcm9wc1dpdGhvdXRFZGl0ID0ge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBvbkVkaXQ6ICgpID0+IHt9LFxuICAgIH07XG5cbiAgICBzdXBlci5oYW5kbGVDbGljayhldmVudCwgcHJvcHNXaXRob3V0RWRpdCk7XG4gIH1cblxuICBnZXRUb29sdGlwcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRvb2x0aXBbXSB7XG4gICAgY29uc3QgdGVudGF0aXZlR3VpZGUgPSB0aGlzLmdldFRlbnRhdGl2ZUd1aWRlKHByb3BzKTtcblxuICAgIGlmICh0ZW50YXRpdmVHdWlkZSAmJiB0ZW50YXRpdmVHdWlkZS5nZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicpIHtcbiAgICAgIGNvbnN0IHsgbW9kZUNvbmZpZyB9ID0gcHJvcHM7XG4gICAgICBjb25zdCB7IGZvcm1hdFRvb2x0aXAsIG1lYXN1cmVtZW50Q2FsbGJhY2sgfSA9IG1vZGVDb25maWcgfHwge307XG4gICAgICBjb25zdCB1bml0cyA9ICdzcS4gbSc7XG5cbiAgICAgIGNvbnN0IGNlbnRyb2lkID0gdHVyZkNlbnRyb2lkKHRlbnRhdGl2ZUd1aWRlKTtcbiAgICAgIGNvbnN0IGFyZWEgPSB0dXJmQXJlYSh0ZW50YXRpdmVHdWlkZSk7XG5cbiAgICAgIGxldCB0ZXh0O1xuICAgICAgaWYgKGZvcm1hdFRvb2x0aXApIHtcbiAgICAgICAgdGV4dCA9IGZvcm1hdFRvb2x0aXAoYXJlYSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBCeSBkZWZhdWx0LCByb3VuZCB0byAyIGRlY2ltYWwgcGxhY2VzIGFuZCBhcHBlbmQgdW5pdHNcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0ZXh0ID0gYCR7cGFyc2VGbG9hdChhcmVhKS50b0ZpeGVkKDIpfSAke3VuaXRzfWA7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZWFzdXJlbWVudENhbGxiYWNrKSB7XG4gICAgICAgIG1lYXN1cmVtZW50Q2FsbGJhY2soYXJlYSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbjogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgdGV4dCxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBERUZBVUxUX1RPT0xUSVBTO1xuICB9XG59XG4iXX0=","import turfArea from '@turf/area';\nimport turfCentroid from '@turf/centroid';\nimport { ClickEvent, Tooltip, ModeProps } from '../types';\nimport { FeatureCollection } from '../geojson-types';\nimport { DrawPolygonMode } from './draw-polygon-mode';\n\nconst DEFAULT_TOOLTIPS = [];\n\nexport class MeasureAreaMode extends DrawPolygonMode {\n handleClick(event: ClickEvent, props: ModeProps) {\n const propsWithoutEdit = {\n ...props,\n // @ts-ignore\n onEdit: () => {},\n };\n\n super.handleClick(event, propsWithoutEdit);\n }\n\n getTooltips(props: ModeProps): Tooltip[] {\n const tentativeGuide = this.getTentativeGuide(props);\n\n if (tentativeGuide && tentativeGuide.geometry.type === 'Polygon') {\n const { modeConfig } = props;\n const { formatTooltip, measurementCallback } = modeConfig || {};\n const units = 'sq. m';\n\n const centroid = turfCentroid(tentativeGuide);\n const area = turfArea(tentativeGuide);\n\n let text;\n if (formatTooltip) {\n text = formatTooltip(area);\n } else {\n // By default, round to 2 decimal places and append units\n // @ts-ignore\n text = `${parseFloat(area).toFixed(2)} ${units}`;\n }\n\n if (measurementCallback) {\n measurementCallback(area);\n }\n\n return [\n {\n position: centroid.geometry.coordinates,\n text,\n },\n ];\n }\n return DEFAULT_TOOLTIPS;\n }\n}\n","import { geomReduce } from \"@turf/meta\";\n// Note: change RADIUS => earthRadius\nvar RADIUS = 6378137;\n/**\n * Takes one or more features and returns their area in square meters.\n *\n * @name area\n * @param {GeoJSON} geojson input GeoJSON feature(s)\n * @returns {number} area in square meters\n * @example\n * var polygon = turf.polygon([[[125, -15], [113, -22], [154, -27], [144, -15], [125, -15]]]);\n *\n * var area = turf.area(polygon);\n *\n * //addToMap\n * var addToMap = [polygon]\n * polygon.properties.area = area\n */\nexport default function area(geojson) {\n return geomReduce(geojson, function (value, geom) {\n return value + calculateArea(geom);\n }, 0);\n}\n/**\n * Calculate Area\n *\n * @private\n * @param {Geometry} geom GeoJSON Geometries\n * @returns {number} area\n */\nfunction calculateArea(geom) {\n var total = 0;\n var i;\n switch (geom.type) {\n case \"Polygon\":\n return polygonArea(geom.coordinates);\n case \"MultiPolygon\":\n for (i = 0; i < geom.coordinates.length; i++) {\n total += polygonArea(geom.coordinates[i]);\n }\n return total;\n case \"Point\":\n case \"MultiPoint\":\n case \"LineString\":\n case \"MultiLineString\":\n return 0;\n }\n return 0;\n}\nfunction polygonArea(coords) {\n var total = 0;\n if (coords && coords.length > 0) {\n total += Math.abs(ringArea(coords[0]));\n for (var i = 1; i < coords.length; i++) {\n total -= Math.abs(ringArea(coords[i]));\n }\n }\n return total;\n}\n/**\n * @private\n * Calculate the approximate area of the polygon were it projected onto the earth.\n * Note that this area will be positive if ring is oriented clockwise, otherwise it will be negative.\n *\n * Reference:\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for Polygons on a Sphere\",\n * JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007 https://trs.jpl.nasa.gov/handle/2014/40409\n *\n * @param {Array>} coords Ring Coordinates\n * @returns {number} The approximate signed geodesic area of the polygon in square meters.\n */\nfunction ringArea(coords) {\n var p1;\n var p2;\n var p3;\n var lowerIndex;\n var middleIndex;\n var upperIndex;\n var i;\n var total = 0;\n var coordsLength = coords.length;\n if (coordsLength > 2) {\n for (i = 0; i < coordsLength; i++) {\n if (i === coordsLength - 2) {\n // i = N-2\n lowerIndex = coordsLength - 2;\n middleIndex = coordsLength - 1;\n upperIndex = 0;\n }\n else if (i === coordsLength - 1) {\n // i = N-1\n lowerIndex = coordsLength - 1;\n middleIndex = 0;\n upperIndex = 1;\n }\n else {\n // i = 0 to N-3\n lowerIndex = i;\n middleIndex = i + 1;\n upperIndex = i + 2;\n }\n p1 = coords[lowerIndex];\n p2 = coords[middleIndex];\n p3 = coords[upperIndex];\n total += (rad(p3[0]) - rad(p1[0])) * Math.sin(rad(p2[1]));\n }\n total = (total * RADIUS * RADIUS) / 2;\n }\n return total;\n}\nfunction rad(num) {\n return (num * Math.PI) / 180;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MeasureAngleMode = void 0;\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _center = _interopRequireDefault(require(\"@turf/center\"));\n\nvar _memoize = _interopRequireDefault(require(\"../memoize\"));\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DEFAULT_TOOLTIPS = [];\n\nvar MeasureAngleMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(MeasureAngleMode, _GeoJsonEditMode);\n\n var _super = _createSuper(MeasureAngleMode);\n\n function MeasureAngleMode() {\n var _this;\n\n _classCallCheck(this, MeasureAngleMode);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"_getTooltips\", (0, _memoize[\"default\"])(function (_ref) {\n var modeConfig = _ref.modeConfig,\n vertex = _ref.vertex,\n point1 = _ref.point1,\n point2 = _ref.point2;\n var tooltips = DEFAULT_TOOLTIPS;\n\n if (vertex && point1 && point2) {\n var _ref2 = modeConfig || {},\n formatTooltip = _ref2.formatTooltip,\n measurementCallback = _ref2.measurementCallback;\n\n var units = 'deg';\n var angle1 = (0, _bearing[\"default\"])(vertex, point1);\n var angle2 = (0, _bearing[\"default\"])(vertex, point2);\n var angle = Math.abs(angle1 - angle2);\n\n if (angle > 180) {\n angle = 360 - angle;\n }\n\n var text;\n\n if (formatTooltip) {\n text = formatTooltip(angle);\n } else {\n // By default, round to 2 decimal places and append units\n // @ts-ignore\n text = \"\".concat(parseFloat(angle).toFixed(2), \" \").concat(units);\n }\n\n if (measurementCallback) {\n measurementCallback(angle);\n }\n\n var position = (0, _center[\"default\"])({\n type: 'FeatureCollection',\n features: [point1, point2].map(function (p) {\n return {\n type: 'Feature',\n geometry: {\n type: 'Point',\n coordinates: p\n }\n };\n })\n }).geometry.coordinates;\n tooltips = [{\n position: position,\n text: text\n }];\n }\n\n return tooltips;\n }));\n\n return _this;\n }\n\n _createClass(MeasureAngleMode, [{\n key: \"handleClick\",\n value: function handleClick(event, props) {\n if (this.getClickSequence().length >= 3) {\n this.resetClickSequence();\n }\n\n this.addClickSequence(event);\n } // Called when the pointer moved, regardless of whether the pointer is down, up, and whether something was picked\n\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n props.onUpdateCursor('cell');\n }\n }, {\n key: \"getPoints\",\n value: function getPoints(props) {\n var clickSequence = this.getClickSequence();\n\n var points = _toConsumableArray(clickSequence);\n\n if (clickSequence.length < 3 && props.lastPointerMoveEvent) {\n points.push(props.lastPointerMoveEvent.mapCoords);\n }\n\n return points;\n } // Return features that can be used as a guide for editing the data\n\n }, {\n key: \"getGuides\",\n value: function getGuides(props) {\n var guides = {\n type: 'FeatureCollection',\n features: []\n };\n var features = guides.features;\n var points = this.getPoints(props);\n\n if (points.length > 2) {\n features.push({\n type: 'Feature',\n properties: {\n guideType: 'tentative'\n },\n geometry: {\n type: 'LineString',\n coordinates: [points[1], points[0], points[2]]\n }\n });\n } else if (points.length > 1) {\n features.push({\n type: 'Feature',\n properties: {\n guideType: 'tentative'\n },\n geometry: {\n type: 'LineString',\n coordinates: [points[1], points[0]]\n }\n });\n }\n\n return guides;\n }\n }, {\n key: \"getTooltips\",\n value: function getTooltips(props) {\n var points = this.getPoints(props);\n return this._getTooltips({\n modeConfig: props.modeConfig,\n vertex: points[0],\n point1: points[1],\n point2: points[2]\n });\n }\n }]);\n\n return MeasureAngleMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.MeasureAngleMode = MeasureAngleMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbWVhc3VyZS1hbmdsZS1tb2RlLnRzIl0sIm5hbWVzIjpbIkRFRkFVTFRfVE9PTFRJUFMiLCJNZWFzdXJlQW5nbGVNb2RlIiwibW9kZUNvbmZpZyIsInZlcnRleCIsInBvaW50MSIsInBvaW50MiIsInRvb2x0aXBzIiwiZm9ybWF0VG9vbHRpcCIsIm1lYXN1cmVtZW50Q2FsbGJhY2siLCJ1bml0cyIsImFuZ2xlMSIsImFuZ2xlMiIsImFuZ2xlIiwiTWF0aCIsImFicyIsInRleHQiLCJwYXJzZUZsb2F0IiwidG9GaXhlZCIsInBvc2l0aW9uIiwidHlwZSIsImZlYXR1cmVzIiwibWFwIiwicCIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJldmVudCIsInByb3BzIiwiZ2V0Q2xpY2tTZXF1ZW5jZSIsImxlbmd0aCIsInJlc2V0Q2xpY2tTZXF1ZW5jZSIsImFkZENsaWNrU2VxdWVuY2UiLCJvblVwZGF0ZUN1cnNvciIsImNsaWNrU2VxdWVuY2UiLCJwb2ludHMiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsInB1c2giLCJtYXBDb29yZHMiLCJndWlkZXMiLCJnZXRQb2ludHMiLCJwcm9wZXJ0aWVzIiwiZ3VpZGVUeXBlIiwiX2dldFRvb2x0aXBzIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBRUE7O0FBRUE7O0FBSUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxnQkFBZ0IsR0FBRyxFQUF6Qjs7SUFFYUMsZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7bUVBQ0kseUJBQVEsZ0JBQTRDO0FBQUEsVUFBekNDLFVBQXlDLFFBQXpDQSxVQUF5QztBQUFBLFVBQTdCQyxNQUE2QixRQUE3QkEsTUFBNkI7QUFBQSxVQUFyQkMsTUFBcUIsUUFBckJBLE1BQXFCO0FBQUEsVUFBYkMsTUFBYSxRQUFiQSxNQUFhO0FBQ2pFLFVBQUlDLFFBQVEsR0FBR04sZ0JBQWY7O0FBRUEsVUFB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UUFBQUEsTUFBTSxFQUFFNEIsTUFBTSxDQUFDLENBQUQ7QUFKUyxPQUFsQixDQUFQO0FBTUQ7Ozs7RUFsSG1DUyxnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB0dXJmQ2VudGVyIGZyb20gJ0B0dXJmL2NlbnRlcic7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgbWVtb2l6ZSBmcm9tICcuLi9tZW1vaXplJztcblxuaW1wb3J0IHsgQ2xpY2tFdmVudCwgUG9pbnRlck1vdmVFdmVudCwgVG9vbHRpcCwgTW9kZVByb3BzLCBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5jb25zdCBERUZBVUxUX1RPT0xUSVBTID0gW107XG5cbmV4cG9ydCBjbGFzcyBNZWFzdXJlQW5nbGVNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX2dldFRvb2x0aXBzID0gbWVtb2l6ZSgoeyBtb2RlQ29uZmlnLCB2ZXJ0ZXgsIHBvaW50MSwgcG9pbnQyIH0pID0+IHtcbiAgICBsZXQgdG9vbHRpcHMgPSBERUZBVUxUX1RPT0xUSVBTO1xuXG4gICAgaWYgKHZlcnRleCAmJiBwb2ludDEgJiYgcG9pbnQyKSB7XG4gICAgICBjb25zdCB7IGZvcm1hdFRvb2x0aXAsIG1lYXN1cmVtZW50Q2FsbGJhY2sgfSA9IG1vZGVDb25maWcgfHwge307XG4gICAgICBjb25zdCB1bml0cyA9ICdkZWcnO1xuXG4gICAgICBjb25zdCBhbmdsZTEgPSB0dXJmQmVhcmluZyh2ZXJ0ZXgsIHBvaW50MSk7XG4gICAgICBjb25zdCBhbmdsZTIgPSB0dXJmQmVhcmluZyh2ZXJ0ZXgsIHBvaW50Mik7XG4gICAgICBsZXQgYW5nbGUgPSBNYXRoLmFicyhhbmdsZTEgLSBhbmdsZTIpO1xuICAgICAgaWYgKGFuZ2xlID4gMTgwKSB7XG4gICAgICAgIGFuZ2xlID0gMzYwIC0gYW5nbGU7XG4gICAgICB9XG5cbiAgICAgIGxldCB0ZXh0O1xuICAgICAgaWYgKGZvcm1hdFRvb2x0aXApIHtcbiAgICAgICAgdGV4dCA9IGZvcm1hdFRvb2x0aXAoYW5nbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQnkgZGVmYXVsdCwgcm91bmQgdG8gMiBkZWNpbWFsIHBsYWNlcyBhbmQgYXBwZW5kIHVuaXRzXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGV4dCA9IGAke3BhcnNlRmxvYXQoYW5nbGUpLnRvRml4ZWQoMil9ICR7dW5pdHN9YDtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lYXN1cmVtZW50Q2FsbGJhY2spIHtcbiAgICAgICAgbWVhc3VyZW1lbnRDYWxsYmFjayhhbmdsZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdHVyZkNlbnRlcih7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICAgIGZlYXR1cmVzOiBbcG9pbnQxLCBwb2ludDJdLm1hcCgocCkgPT4gKHtcbiAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgICBjb29yZGluYXRlczogcCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSksXG4gICAgICB9KS5nZW9tZXRyeS5jb29yZGluYXRlcztcblxuICAgICAgdG9vbHRpcHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICB0ZXh0LFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9vbHRpcHM7XG4gIH0pO1xuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge1xuICAgIGlmICh0aGlzLmdldENsaWNrU2VxdWVuY2UoKS5sZW5ndGggPj0gMykge1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZENsaWNrU2VxdWVuY2UoZXZlbnQpO1xuICB9XG5cbiAgLy8gQ2FsbGVkIHdoZW4gdGhlIHBvaW50ZXIgbW92ZWQsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgcG9pbnRlciBpcyBkb3duLCB1cCwgYW5kIHdoZXRoZXIgc29tZXRoaW5nIHdhcyBwaWNrZWRcbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ2NlbGwnKTtcbiAgfVxuXG4gIGdldFBvaW50cyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IHBvaW50cyA9IFsuLi5jbGlja1NlcXVlbmNlXTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA8IDMgJiYgcHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQpIHtcbiAgICAgIHBvaW50cy5wdXNoKHByb3BzLmxhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvaW50cztcbiAgfVxuXG4gIC8vIFJldHVybiBmZWF0dXJlcyB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgZ3VpZGUgZm9yIGVkaXRpbmcgdGhlIGRhdGFcbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgZ3VpZGVzOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uID0geyB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLCBmZWF0dXJlczogW10gfTtcbiAgICBjb25zdCB7IGZlYXR1cmVzIH0gPSBndWlkZXM7XG5cbiAgICBjb25zdCBwb2ludHMgPSB0aGlzLmdldFBvaW50cyhwcm9wcyk7XG5cbiAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGZlYXR1cmVzLnB1c2goe1xuICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgIHByb3BlcnRpZXM6IHsgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyB9LFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgICAgICBjb29yZGluYXRlczogW3BvaW50c1sxXSwgcG9pbnRzWzBdLCBwb2ludHNbMl1dLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChwb2ludHMubGVuZ3RoID4gMSkge1xuICAgICAgZmVhdHVyZXMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczogeyBndWlkZVR5cGU6ICd0ZW50YXRpdmUnIH0sXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbcG9pbnRzWzFdLCBwb2ludHNbMF1dLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGd1aWRlcztcbiAgfVxuXG4gIGdldFRvb2x0aXBzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogVG9vbHRpcFtdIHtcbiAgICBjb25zdCBwb2ludHMgPSB0aGlzLmdldFBvaW50cyhwcm9wcyk7XG5cbiAgICByZXR1cm4gdGhpcy5fZ2V0VG9vbHRpcHMoe1xuICAgICAgbW9kZUNvbmZpZzogcHJvcHMubW9kZUNvbmZpZyxcbiAgICAgIHZlcnRleDogcG9pbnRzWzBdLFxuICAgICAgcG9pbnQxOiBwb2ludHNbMV0sXG4gICAgICBwb2ludDI6IHBvaW50c1syXSxcbiAgICB9KTtcbiAgfVxufVxuIl19","import turfBearing from '@turf/bearing';\n// @ts-ignore\nimport turfCenter from '@turf/center';\n// @ts-ignore\nimport memoize from '../memoize';\n\nimport { ClickEvent, PointerMoveEvent, Tooltip, ModeProps, GuideFeatureCollection } from '../types';\nimport { FeatureCollection } from '../geojson-types';\nimport { GeoJsonEditMode } from './geojson-edit-mode';\n\nconst DEFAULT_TOOLTIPS = [];\n\nexport class MeasureAngleMode extends GeoJsonEditMode {\n _getTooltips = memoize(({ modeConfig, vertex, point1, point2 }) => {\n let tooltips = DEFAULT_TOOLTIPS;\n\n if (vertex && point1 && point2) {\n const { formatTooltip, measurementCallback } = modeConfig || {};\n const units = 'deg';\n\n const angle1 = turfBearing(vertex, point1);\n const angle2 = turfBearing(vertex, point2);\n let angle = Math.abs(angle1 - angle2);\n if (angle > 180) {\n angle = 360 - angle;\n }\n\n let text;\n if (formatTooltip) {\n text = formatTooltip(angle);\n } else {\n // By default, round to 2 decimal places and append units\n // @ts-ignore\n text = `${parseFloat(angle).toFixed(2)} ${units}`;\n }\n\n if (measurementCallback) {\n measurementCallback(angle);\n }\n\n const position = turfCenter({\n type: 'FeatureCollection',\n features: [point1, point2].map((p) => ({\n type: 'Feature',\n geometry: {\n type: 'Point',\n coordinates: p,\n },\n })),\n }).geometry.coordinates;\n\n tooltips = [\n {\n position,\n text,\n },\n ];\n }\n\n return tooltips;\n });\n\n handleClick(event: ClickEvent, props: ModeProps): void {\n if (this.getClickSequence().length >= 3) {\n this.resetClickSequence();\n }\n\n this.addClickSequence(event);\n }\n\n // Called when the pointer moved, regardless of whether the pointer is down, up, and whether something was picked\n handlePointerMove(event: PointerMoveEvent, props: ModeProps): void {\n props.onUpdateCursor('cell');\n }\n\n getPoints(props: ModeProps) {\n const clickSequence = this.getClickSequence();\n\n const points = [...clickSequence];\n\n if (clickSequence.length < 3 && props.lastPointerMoveEvent) {\n points.push(props.lastPointerMoveEvent.mapCoords);\n }\n\n return points;\n }\n\n // Return features that can be used as a guide for editing the data\n getGuides(props: ModeProps): GuideFeatureCollection {\n const guides: GuideFeatureCollection = { type: 'FeatureCollection', features: [] };\n const { features } = guides;\n\n const points = this.getPoints(props);\n\n if (points.length > 2) {\n features.push({\n type: 'Feature',\n properties: { guideType: 'tentative' },\n geometry: {\n type: 'LineString',\n coordinates: [points[1], points[0], points[2]],\n },\n });\n } else if (points.length > 1) {\n features.push({\n type: 'Feature',\n properties: { guideType: 'tentative' },\n geometry: {\n type: 'LineString',\n coordinates: [points[1], points[0]],\n },\n });\n }\n\n return guides;\n }\n\n getTooltips(props: ModeProps): Tooltip[] {\n const points = this.getPoints(props);\n\n return this._getTooltips({\n modeConfig: props.modeConfig,\n vertex: points[0],\n point1: points[1],\n point2: points[2],\n });\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = memoize;\n\n// port from @deck.gl/core\nfunction isEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (Array.isArray(a)) {\n // Special treatment for arrays: compare 1-level deep\n // This is to support equality of matrix/coordinate props\n var len = a.length;\n\n if (!b || b.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n/**\n * Speed up consecutive function calls by caching the result of calls with identical input\n * https://en.wikipedia.org/wiki/Memoization\n * @param {function} compute - the function to be memoized\n */\n\n\nfunction memoize(compute) {\n var cachedArgs = {};\n var cachedResult;\n return function (args) {\n for (var key in args) {\n if (!isEqual(args[key], cachedArgs[key])) {\n cachedResult = compute(args);\n cachedArgs = args;\n break;\n }\n }\n\n return cachedResult;\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZW1vaXplLnRzIl0sIm5hbWVzIjpbImlzRXF1YWwiLCJhIiwiYiIsIkFycmF5IiwiaXNBcnJheSIsImxlbiIsImxlbmd0aCIsImkiLCJtZW1vaXplIiwiY29tcHV0ZSIsImNhY2hlZEFyZ3MiLCJjYWNoZWRSZXN1bHQiLCJhcmdzIiwia2V5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQSxTQUFTQSxPQUFULENBQWlCQyxDQUFqQixFQUF5QkMsQ0FBekIsRUFBaUM7QUFDL0IsTUFBSUQsQ0FBQyxLQUFLQyxDQUFWLEVBQWE7QUFDWCxXQUFPLElBQVA7QUFDRDs7QUFDRCxNQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0gsQ0FBZCxDQUFKLEVBQXNCO0FBQ3BCO0FBQ0E7QUFDQSxRQUFNSSxHQUFHLEdBQUdKLENBQUMsQ0FBQ0ssTUFBZDs7QUFDQSxRQUFJLENBQUNKLENBQUQsSUFBTUEsQ0FBQyxDQUFDSSxNQUFGLEtBQWFELEdBQXZCLEVBQTRCO0FBQzFCLGFBQU8sS0FBUDtBQUNEOztBQUVELFNBQUssSUFBSUUsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsR0FBcEIsRUFBeUJFLENBQUMsRUFBMUIsRUFBOEI7QUFDNUIsVUFBSU4sQ0FBQyxDQUFDTSxDQUFELENBQUQsS0FBU0wsQ0FBQyxDQUFDSyxDQUFELENBQWQsRUFBbUI7QUFDakIsZUFBTyxLQUFQO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPLElBQVA7QUFDRDs7QUFDRCxTQUFPLEtBQVA7QUFDRDtBQUVEOzs7Ozs7O0FBS2UsU0FBU0MsT0FBVCxDQUFpQkMsT0FBakIsRUFBb0M7QUFDakQsTUFBSUMsVUFBVSxHQUFHLEVBQWpCO0FBQ0EsTUFBSUMsWUFBSjtBQUVBLFNBQU8sVUFBQ0MsSUFBRCxFQUFlO0FBQ3BCLFNBQUssSUFBTUMsR0FBWCxJQUFrQkQsSUFBbEIsRUFBd0I7QUFDdEIsVUFBSSxDQUFDWixPQUFPLENBQUNZLElBQUksQ0FBQ0MsR0FBRCxDQUFMLEVBQVlILFVBQVUsQ0FBQ0csR0FBRCxDQUF0QixDQUFaLEVBQTBDO0FBQ3hDRixRQUFBQSxZQUFZLEdBQUdGLE9BQU8sQ0FBQ0csSUFBRCxDQUF0QjtBQUNBRixRQUFBQSxVQUFVLEdBQUdFLElBQWI7QUFDQTtBQUNEO0FBQ0Y7O0FBQ0QsV0FBT0QsWUFBUDtBQUNELEdBVEQ7QUFVRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIHBvcnQgZnJvbSBAZGVjay5nbC9jb3JlXG5mdW5jdGlvbiBpc0VxdWFsKGE6IGFueSwgYjogYW55KSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAvLyBTcGVjaWFsIHRyZWF0bWVudCBmb3IgYXJyYXlzOiBjb21wYXJlIDEtbGV2ZWwgZGVlcFxuICAgIC8vIFRoaXMgaXMgdG8gc3VwcG9ydCBlcXVhbGl0eSBvZiBtYXRyaXgvY29vcmRpbmF0ZSBwcm9wc1xuICAgIGNvbnN0IGxlbiA9IGEubGVuZ3RoO1xuICAgIGlmICghYiB8fCBiLmxlbmd0aCAhPT0gbGVuKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogU3BlZWQgdXAgY29uc2VjdXRpdmUgZnVuY3Rpb24gY2FsbHMgYnkgY2FjaGluZyB0aGUgcmVzdWx0IG9mIGNhbGxzIHdpdGggaWRlbnRpY2FsIGlucHV0XG4gKiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZW1vaXphdGlvblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcHV0ZSAtIHRoZSBmdW5jdGlvbiB0byBiZSBtZW1vaXplZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZW1vaXplKGNvbXB1dGU6IEZ1bmN0aW9uKSB7XG4gIGxldCBjYWNoZWRBcmdzID0ge307XG4gIGxldCBjYWNoZWRSZXN1bHQ7XG5cbiAgcmV0dXJuIChhcmdzOiBhbnkpID0+IHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBhcmdzKSB7XG4gICAgICBpZiAoIWlzRXF1YWwoYXJnc1trZXldLCBjYWNoZWRBcmdzW2tleV0pKSB7XG4gICAgICAgIGNhY2hlZFJlc3VsdCA9IGNvbXB1dGUoYXJncyk7XG4gICAgICAgIGNhY2hlZEFyZ3MgPSBhcmdzO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgfTtcbn1cbiJdfQ==","// port from @deck.gl/core\nfunction isEqual(a: any, b: any) {\n if (a === b) {\n return true;\n }\n if (Array.isArray(a)) {\n // Special treatment for arrays: compare 1-level deep\n // This is to support equality of matrix/coordinate props\n const len = a.length;\n if (!b || b.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\n/**\n * Speed up consecutive function calls by caching the result of calls with identical input\n * https://en.wikipedia.org/wiki/Memoization\n * @param {function} compute - the function to be memoized\n */\nexport default function memoize(compute: Function) {\n let cachedArgs = {};\n let cachedResult;\n\n return (args: any) => {\n for (const key in args) {\n if (!isEqual(args[key], cachedArgs[key])) {\n cachedResult = compute(args);\n cachedArgs = args;\n break;\n }\n }\n return cachedResult;\n };\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SnappableMode = void 0;\n\nvar _utils = require(\"../utils\");\n\nvar _geojsonEditMode = require(\"./geojson-edit-mode\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SnappableMode = /*#__PURE__*/function (_GeoJsonEditMode) {\n _inherits(SnappableMode, _GeoJsonEditMode);\n\n var _super = _createSuper(SnappableMode);\n\n function SnappableMode(handler) {\n var _this;\n\n _classCallCheck(this, SnappableMode);\n\n _this = _super.call(this);\n\n _defineProperty(_assertThisInitialized(_this), \"_handler\", void 0);\n\n _this._handler = handler;\n return _this;\n }\n\n _createClass(SnappableMode, [{\n key: \"_getSnappedMouseEvent\",\n value: function _getSnappedMouseEvent(event, snapSource, snapTarget) {\n return Object.assign(event, {\n mapCoords: snapTarget.geometry.coordinates,\n pointerDownMapCoords: snapSource && snapSource.geometry.coordinates\n });\n }\n }, {\n key: \"_getPickedSnapTarget\",\n value: function _getPickedSnapTarget(picks) {\n return (0, _utils.getPickedEditHandles)(picks).find(function (handle) {\n return handle.properties.editHandleType === 'snap-target';\n });\n }\n }, {\n key: \"_getPickedSnapSource\",\n value: function _getPickedSnapSource(pointerDownPicks) {\n return (0, _utils.getPickedSnapSourceEditHandle)(pointerDownPicks);\n }\n }, {\n key: \"_getUpdatedSnapSourceHandle\",\n value: function _getUpdatedSnapSourceHandle(snapSourceHandle, data) {\n var _snapSourceHandle$pro = snapSourceHandle.properties,\n featureIndex = _snapSourceHandle$pro.featureIndex,\n positionIndexes = _snapSourceHandle$pro.positionIndexes;\n\n if (!Array.isArray(positionIndexes)) {\n return snapSourceHandle;\n }\n\n var snapSourceFeature = data.features[featureIndex]; // $FlowFixMe\n\n var snapSourceCoordinates = positionIndexes.reduce(function (a, b) {\n return a[b];\n }, snapSourceFeature.geometry.coordinates);\n return _objectSpread({}, snapSourceHandle, {\n geometry: {\n type: 'Point',\n coordinates: snapSourceCoordinates\n }\n });\n } // If additionalSnapTargets is present in modeConfig and is populated, this\n // method will return those features along with the features\n // that live in the current layer. Otherwise, this method will simply return the\n // features from the current layer\n\n }, {\n key: \"_getSnapTargets\",\n value: function _getSnapTargets(props) {\n var _ref = props.modeConfig || {},\n additionalSnapTargets = _ref.additionalSnapTargets;\n\n additionalSnapTargets = additionalSnapTargets || [];\n var features = [].concat(_toConsumableArray(props.data.features), _toConsumableArray(additionalSnapTargets));\n return features;\n }\n }, {\n key: \"_getSnapTargetHandles\",\n value: function _getSnapTargetHandles(props) {\n var handles = [];\n\n var features = this._getSnapTargets(props);\n\n for (var i = 0; i < features.length; i++) {\n // Filter out the currently selected feature(s)\n var isCurrentIndexFeatureNotSelected = !props.selectedIndexes.includes(i);\n\n if (isCurrentIndexFeatureNotSelected) {\n var geometry = features[i].geometry;\n handles.push.apply(handles, _toConsumableArray((0, _utils.getEditHandlesForGeometry)(geometry, i, 'snap-target')));\n }\n }\n\n return handles;\n } // If no snap handle has been picked, only display the edit handles of the\n // selected feature. If a snap handle has been picked, display said snap handle\n // along with all snappable points on all non-selected features.\n\n }, {\n key: \"getGuides\",\n value: function getGuides(props) {\n var modeConfig = props.modeConfig,\n lastPointerMoveEvent = props.lastPointerMoveEvent;\n\n var _ref2 = modeConfig || {},\n enableSnapping = _ref2.enableSnapping;\n\n var guides = {\n type: 'FeatureCollection',\n features: _toConsumableArray(this._handler.getGuides(props).features)\n };\n\n if (!enableSnapping) {\n return guides;\n }\n\n var snapSourceHandle = lastPointerMoveEvent && this._getPickedSnapSource(lastPointerMoveEvent.pointerDownPicks); // They started dragging a handle\n // So render the picked handle (in its updated location) and all possible snap targets\n\n\n if (snapSourceHandle) {\n var _guides$features;\n\n (_guides$features = guides.features).push.apply(_guides$features, _toConsumableArray(this._getSnapTargetHandles(props)).concat([this._getUpdatedSnapSourceHandle(snapSourceHandle, props.data)]));\n\n return guides;\n } // Render the possible snap source handles\n\n\n var features = props.data.features;\n\n var _iterator = _createForOfIteratorHelper(props.selectedIndexes),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var index = _step.value;\n\n if (index < features.length) {\n var _guides$features2;\n\n var geometry = features[index].geometry;\n\n (_guides$features2 = guides.features).push.apply(_guides$features2, _toConsumableArray((0, _utils.getEditHandlesForGeometry)(geometry, index, 'snap-source')));\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return guides;\n }\n }, {\n key: \"_getSnapAwareEvent\",\n value: function _getSnapAwareEvent(event, props) {\n var snapSource = this._getPickedSnapSource(props.lastPointerMoveEvent.pointerDownPicks);\n\n var snapTarget = this._getPickedSnapTarget(event.picks);\n\n return snapSource && snapTarget ? this._getSnappedMouseEvent(event, snapSource, snapTarget) : event;\n }\n }, {\n key: \"handleStartDragging\",\n value: function handleStartDragging(event, props) {\n this._handler.handleStartDragging(event, props);\n }\n }, {\n key: \"handleStopDragging\",\n value: function handleStopDragging(event, props) {\n this._handler.handleStopDragging(this._getSnapAwareEvent(event, props), props);\n }\n }, {\n key: \"handleDragging\",\n value: function handleDragging(event, props) {\n this._handler.handleDragging(this._getSnapAwareEvent(event, props), props);\n }\n }, {\n key: \"handlePointerMove\",\n value: function handlePointerMove(event, props) {\n this._handler.handlePointerMove(this._getSnapAwareEvent(event, props), props);\n }\n }]);\n\n return SnappableMode;\n}(_geojsonEditMode.GeoJsonEditMode);\n\nexports.SnappableMode = SnappableMode;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc25hcHBhYmxlLW1vZGUudHMiXSwibmFtZXMiOlsiU25hcHBhYmxlTW9kZSIsImhhbmRsZXIiLCJfaGFuZGxlciIsImV2ZW50Iiwic25hcFNvdXJjZSIsInNuYXBUYXJnZXQiLCJPYmplY3QiLCJhc3NpZ24iLCJtYXBDb29yZHMiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwicG9pbnRlckRvd25NYXBDb29yZHMiLCJwaWNrcyIsImZpbmQiLCJoYW5kbGUiLCJwcm9wZXJ0aWVzIiwiZWRpdEhhbmRsZVR5cGUiLCJwb2ludGVyRG93blBpY2tzIiwic25hcFNvdXJjZUhhbmRsZSIsImRhdGEiLCJmZWF0dXJlSW5kZXgiLCJwb3NpdGlvbkluZGV4ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJzbmFwU291cmNlRmVhdHVyZSIsImZlYXR1cmVzIiwic25hcFNvdXJjZUNvb3JkaW5hdGVzIiwicmVkdWNlIiwiYSIsImIiLCJ0eXBlIiwicHJvcHMiLCJtb2RlQ29uZmlnIiwiYWRkaXRpb25hbFNuYXBUYXJnZXRzIiwiaGFuZGxlcyIsIl9nZXRTbmFwVGFyZ2V0cyIsImkiLCJsZW5ndGgiLCJpc0N1cnJlbnRJbmRleEZlYXR1cmVOb3RTZWxlY3RlZCIsInNlbGVjdGVkSW5kZXhlcyIsImluY2x1ZGVzIiwicHVzaCIsImxhc3RQb2ludGVyTW92ZUV2ZW50IiwiZW5hYmxlU25hcHBpbmciLCJndWlkZXMiLCJnZXRHdWlkZXMiLCJfZ2V0UGlja2VkU25hcFNvdXJjZSIsIl9nZXRTbmFwVGFyZ2V0SGFuZGxlcyIsIl9nZXRVcGRhdGVkU25hcFNvdXJjZUhhbmRsZSIsImluZGV4IiwiX2dldFBpY2tlZFNuYXBUYXJnZXQiLCJfZ2V0U25hcHBlZE1vdXNlRXZlbnQiLCJoYW5kbGVTdGFydERyYWdnaW5nIiwiaGFuZGxlU3RvcERyYWdnaW5nIiwiX2dldFNuYXBBd2FyZUV2ZW50IiwiaGFuZGxlRHJhZ2dpbmciLCJoYW5kbGVQb2ludGVyTW92ZSIsIkdl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S0FBcEU7QUFDRDs7O3NDQUVpQjVCLEssRUFBeUI0QixLLEVBQXFDO0FBQzlFLFdBQUs3QixRQUFMLENBQWNzRCxpQkFBZCxDQUFnQyxLQUFLRixrQkFBTCxDQUF3Qm5ELEtBQXhCLEVBQStCNEIsS0FBL0IsQ0FBaEMsRUFBdUVBLEtBQXZFO0FBQ0Q7Ozs7RUF4SmdDMEIsZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3NpdGlvbiwgRmVhdHVyZSwgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7XG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIERyYWdnaW5nRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgUGljayxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgRWRpdEhhbmRsZUZlYXR1cmUsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7XG4gIGdldFBpY2tlZFNuYXBTb3VyY2VFZGl0SGFuZGxlLFxuICBnZXRQaWNrZWRFZGl0SGFuZGxlcyxcbiAgZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbnR5cGUgTW92ZW1lbnRUeXBlRXZlbnQgPSBQb2ludGVyTW92ZUV2ZW50IHwgU3RhcnREcmFnZ2luZ0V2ZW50IHwgU3RvcERyYWdnaW5nRXZlbnQgfCBEcmFnZ2luZ0V2ZW50O1xuXG5leHBvcnQgY2xhc3MgU25hcHBhYmxlTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIF9oYW5kbGVyOiBHZW9Kc29uRWRpdE1vZGU7XG5cbiAgY29uc3RydWN0b3IoaGFuZGxlcjogR2VvSnNvbkVkaXRNb2RlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9oYW5kbGVyID0gaGFuZGxlcjtcbiAgfVxuXG4gIF9nZXRTbmFwcGVkTW91c2VFdmVudDxUIGV4dGVuZHMgTW92ZW1lbnRUeXBlRXZlbnQ+KFxuICAgIGV2ZW50OiBULFxuICAgIHNuYXBTb3VyY2U6IEVkaXRIYW5kbGVGZWF0dXJlLFxuICAgIHNuYXBUYXJnZXQ6IEVkaXRIYW5kbGVGZWF0dXJlXG4gICk6IFQge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGV2ZW50LCB7XG4gICAgICBtYXBDb29yZHM6IHNuYXBUYXJnZXQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3Jkczogc25hcFNvdXJjZSAmJiBzbmFwU291cmNlLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgIH0pO1xuICB9XG5cbiAgX2dldFBpY2tlZFNuYXBUYXJnZXQocGlja3M6IFBpY2tbXSk6IEVkaXRIYW5kbGVGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldFBpY2tlZEVkaXRIYW5kbGVzKHBpY2tzKS5maW5kKFxuICAgICAgKGhhbmRsZSkgPT4gaGFuZGxlLnByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUgPT09ICdzbmFwLXRhcmdldCdcbiAgICApO1xuICB9XG5cbiAgX2dldFBpY2tlZFNuYXBTb3VyY2UoXG4gICAgcG9pbnRlckRvd25QaWNrczogUGlja1tdIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBFZGl0SGFuZGxlRmVhdHVyZSB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBnZXRQaWNrZWRTbmFwU291cmNlRWRpdEhhbmRsZShwb2ludGVyRG93blBpY2tzKTtcbiAgfVxuXG4gIF9nZXRVcGRhdGVkU25hcFNvdXJjZUhhbmRsZShcbiAgICBzbmFwU291cmNlSGFuZGxlOiBFZGl0SGFuZGxlRmVhdHVyZSxcbiAgICBkYXRhOiBGZWF0dXJlQ29sbGVjdGlvblxuICApOiBFZGl0SGFuZGxlRmVhdHVyZSB7XG4gICAgY29uc3QgeyBmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcyB9ID0gc25hcFNvdXJjZUhhbmRsZS5wcm9wZXJ0aWVzO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICByZXR1cm4gc25hcFNvdXJjZUhhbmRsZTtcbiAgICB9XG4gICAgY29uc3Qgc25hcFNvdXJjZUZlYXR1cmUgPSBkYXRhLmZlYXR1cmVzW2ZlYXR1cmVJbmRleF07XG5cbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgY29uc3Qgc25hcFNvdXJjZUNvb3JkaW5hdGVzOiBQb3NpdGlvbiA9IHBvc2l0aW9uSW5kZXhlcy5yZWR1Y2UoXG4gICAgICAoYTogYW55W10sIGI6IG51bWJlcikgPT4gYVtiXSxcbiAgICAgIHNuYXBTb3VyY2VGZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zbmFwU291cmNlSGFuZGxlLFxuICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IHNuYXBTb3VyY2VDb29yZGluYXRlcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8vIElmIGFkZGl0aW9uYWxTbmFwVGFyZ2V0cyBpcyBwcmVzZW50IGluIG1vZGVDb25maWcgYW5kIGlzIHBvcHVsYXRlZCwgdGhpc1xuICAvLyBtZXRob2Qgd2lsbCByZXR1cm4gdGhvc2UgZmVhdHVyZXMgYWxvbmcgd2l0aCB0aGUgZmVhdHVyZXNcbiAgLy8gdGhhdCBsaXZlIGluIHRoZSBjdXJyZW50IGxheWVyLiBPdGhlcndpc2UsIHRoaXMgbWV0aG9kIHdpbGwgc2ltcGx5IHJldHVybiB0aGVcbiAgLy8gZmVhdHVyZXMgZnJvbSB0aGUgY3VycmVudCBsYXllclxuICBfZ2V0U25hcFRhcmdldHMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBGZWF0dXJlW10ge1xuICAgIGxldCB7IGFkZGl0aW9uYWxTbmFwVGFyZ2V0cyB9ID0gcHJvcHMubW9kZUNvbmZpZyB8fCB7fTtcbiAgICBhZGRpdGlvbmFsU25hcFRhcmdldHMgPSBhZGRpdGlvbmFsU25hcFRhcmdldHMgfHwgW107XG5cbiAgICBjb25zdCBmZWF0dXJlcyA9IFsuLi5wcm9wcy5kYXRhLmZlYXR1cmVzLCAuLi5hZGRpdGlvbmFsU25hcFRhcmdldHNdO1xuICAgIHJldHVybiBmZWF0dXJlcztcbiAgfVxuXG4gIF9nZXRTbmFwVGFyZ2V0SGFuZGxlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEVkaXRIYW5kbGVGZWF0dXJlW10ge1xuICAgIGNvbnN0IGhhbmRsZXMgPSBbXTtcbiAgICBjb25zdCBmZWF0dXJlcyA9IHRoaXMuX2dldFNuYXBUYXJnZXRzKHByb3BzKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIEZpbHRlciBvdXQgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBmZWF0dXJlKHMpXG4gICAgICBjb25zdCBpc0N1cnJlbnRJbmRleEZlYXR1cmVOb3RTZWxlY3RlZCA9ICFwcm9wcy5zZWxlY3RlZEluZGV4ZXMuaW5jbHVkZXMoaSk7XG5cbiAgICAgIGlmIChpc0N1cnJlbnRJbmRleEZlYXR1cmVOb3RTZWxlY3RlZCkge1xuICAgICAgICBjb25zdCB7IGdlb21ldHJ5IH0gPSBmZWF0dXJlc1tpXTtcbiAgICAgICAgaGFuZGxlcy5wdXNoKC4uLmdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkoZ2VvbWV0cnksIGksICdzbmFwLXRhcmdldCcpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhbmRsZXM7XG4gIH1cblxuICAvLyBJZiBubyBzbmFwIGhhbmRsZSBoYXMgYmVlbiBwaWNrZWQsIG9ubHkgZGlzcGxheSB0aGUgZWRpdCBoYW5kbGVzIG9mIHRoZVxuICAvLyBzZWxlY3RlZCBmZWF0dXJlLiBJZiBhIHNuYXAgaGFuZGxlIGhhcyBiZWVuIHBpY2tlZCwgZGlzcGxheSBzYWlkIHNuYXAgaGFuZGxlXG4gIC8vIGFsb25nIHdpdGggYWxsIHNuYXBwYWJsZSBwb2ludHMgb24gYWxsIG5vbi1zZWxlY3RlZCBmZWF0dXJlcy5cbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgeyBtb2RlQ29uZmlnLCBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyBlbmFibGVTbmFwcGluZyB9ID0gbW9kZUNvbmZpZyB8fCB7fTtcblxuICAgIGNvbnN0IGd1aWRlczogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogWy4uLnRoaXMuX2hhbmRsZXIuZ2V0R3VpZGVzKHByb3BzKS5mZWF0dXJlc10sXG4gICAgfTtcblxuICAgIGlmICghZW5hYmxlU25hcHBpbmcpIHtcbiAgICAgIHJldHVybiBndWlkZXM7XG4gICAgfVxuXG4gICAgY29uc3Qgc25hcFNvdXJjZUhhbmRsZTogRWRpdEhhbmRsZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkID1cbiAgICAgIGxhc3RQb2ludGVyTW92ZUV2ZW50ICYmIHRoaXMuX2dldFBpY2tlZFNuYXBTb3VyY2UobGFzdFBvaW50ZXJNb3ZlRXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG5cbiAgICAvLyBUaGV5IHN0YXJ0ZWQgZHJhZ2dpbmcgYSBoYW5kbGVcbiAgICAvLyBTbyByZW5kZXIgdGhlIHBpY2tlZCBoYW5kbGUgKGluIGl0cyB1cGRhdGVkIGxvY2F0aW9uKSBhbmQgYWxsIHBvc3NpYmxlIHNuYXAgdGFyZ2V0c1xuICAgIGlmIChzbmFwU291cmNlSGFuZGxlKSB7XG4gICAgICBndWlkZXMuZmVhdHVyZXMucHVzaChcbiAgICAgICAgLi4udGhpcy5fZ2V0U25hcFRhcmdldEhhbmRsZXMocHJvcHMpLFxuICAgICAgICB0aGlzLl9nZXRVcGRhdGVkU25hcFNvdXJjZUhhbmRsZShzbmFwU291cmNlSGFuZGxlLCBwcm9wcy5kYXRhKVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGd1aWRlcztcbiAgICB9XG5cbiAgICAvLyBSZW5kZXIgdGhlIHBvc3NpYmxlIHNuYXAgc291cmNlIGhhbmRsZXNcbiAgICBjb25zdCB7IGZlYXR1cmVzIH0gPSBwcm9wcy5kYXRhO1xuICAgIGZvciAoY29uc3QgaW5kZXggb2YgcHJvcHMuc2VsZWN0ZWRJbmRleGVzKSB7XG4gICAgICBpZiAoaW5kZXggPCBmZWF0dXJlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgeyBnZW9tZXRyeSB9ID0gZmVhdHVyZXNbaW5kZXhdO1xuICAgICAgICBndWlkZXMuZmVhdHVyZXMucHVzaCguLi5nZXRFZGl0SGFuZGxlc0Zvckdlb21ldHJ5KGdlb21ldHJ5LCBpbmRleCwgJ3NuYXAtc291cmNlJykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBfZ2V0U25hcEF3YXJlRXZlbnQ8VCBleHRlbmRzIE1vdmVtZW50VHlwZUV2ZW50PihcbiAgICBldmVudDogVCxcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBUIHtcbiAgICBjb25zdCBzbmFwU291cmNlID0gdGhpcy5fZ2V0UGlja2VkU25hcFNvdXJjZShwcm9wcy5sYXN0UG9pbnRlck1vdmVFdmVudC5wb2ludGVyRG93blBpY2tzKTtcbiAgICBjb25zdCBzbmFwVGFyZ2V0ID0gdGhpcy5fZ2V0UGlja2VkU25hcFRhcmdldChldmVudC5waWNrcyk7XG5cbiAgICByZXR1cm4gc25hcFNvdXJjZSAmJiBzbmFwVGFyZ2V0XG4gICAgICA/IHRoaXMuX2dldFNuYXBwZWRNb3VzZUV2ZW50KGV2ZW50LCBzbmFwU291cmNlLCBzbmFwVGFyZ2V0KVxuICAgICAgOiBldmVudDtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICB0aGlzLl9oYW5kbGVyLmhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQsIHByb3BzKTtcbiAgfVxuXG4gIGhhbmRsZVN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgdGhpcy5faGFuZGxlci5oYW5kbGVTdG9wRHJhZ2dpbmcodGhpcy5fZ2V0U25hcEF3YXJlRXZlbnQoZXZlbnQsIHByb3BzKSwgcHJvcHMpO1xuICB9XG5cbiAgaGFuZGxlRHJhZ2dpbmcoZXZlbnQ6IERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgdGhpcy5faGFuZGxlci5oYW5kbGVEcmFnZ2luZyh0aGlzLl9nZXRTbmFwQXdhcmVFdmVudChldmVudCwgcHJvcHMpLCBwcm9wcyk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICB0aGlzLl9oYW5kbGVyLmhhbmRsZVBvaW50ZXJNb3ZlKHRoaXMuX2dldFNuYXBBd2FyZUV2ZW50KGV2ZW50LCBwcm9wcyksIHByb3BzKTtcbiAgfVxufVxuIl19","import { Position, Feature, FeatureCollection } from '../geojson-types';\nimport {\n PointerMoveEvent,\n StartDraggingEvent,\n StopDraggingEvent,\n DraggingEvent,\n ModeProps,\n Pick,\n GuideFeatureCollection,\n EditHandleFeature,\n} from '../types';\nimport {\n getPickedSnapSourceEditHandle,\n getPickedEditHandles,\n getEditHandlesForGeometry,\n} from '../utils';\nimport { GeoJsonEditMode } from './geojson-edit-mode';\n\ntype MovementTypeEvent = PointerMoveEvent | StartDraggingEvent | StopDraggingEvent | DraggingEvent;\n\nexport class SnappableMode extends GeoJsonEditMode {\n _handler: GeoJsonEditMode;\n\n constructor(handler: GeoJsonEditMode) {\n super();\n this._handler = handler;\n }\n\n _getSnappedMouseEvent(\n event: T,\n snapSource: EditHandleFeature,\n snapTarget: EditHandleFeature\n ): T {\n return Object.assign(event, {\n mapCoords: snapTarget.geometry.coordinates,\n pointerDownMapCoords: snapSource && snapSource.geometry.coordinates,\n });\n }\n\n _getPickedSnapTarget(picks: Pick[]): EditHandleFeature | null | undefined {\n return getPickedEditHandles(picks).find(\n (handle) => handle.properties.editHandleType === 'snap-target'\n );\n }\n\n _getPickedSnapSource(\n pointerDownPicks: Pick[] | null | undefined\n ): EditHandleFeature | null | undefined {\n return getPickedSnapSourceEditHandle(pointerDownPicks);\n }\n\n _getUpdatedSnapSourceHandle(\n snapSourceHandle: EditHandleFeature,\n data: FeatureCollection\n ): EditHandleFeature {\n const { featureIndex, positionIndexes } = snapSourceHandle.properties;\n if (!Array.isArray(positionIndexes)) {\n return snapSourceHandle;\n }\n const snapSourceFeature = data.features[featureIndex];\n\n // $FlowFixMe\n const snapSourceCoordinates: Position = positionIndexes.reduce(\n (a: any[], b: number) => a[b],\n snapSourceFeature.geometry.coordinates\n );\n\n return {\n ...snapSourceHandle,\n geometry: {\n type: 'Point',\n coordinates: snapSourceCoordinates,\n },\n };\n }\n\n // If additionalSnapTargets is present in modeConfig and is populated, this\n // method will return those features along with the features\n // that live in the current layer. Otherwise, this method will simply return the\n // features from the current layer\n _getSnapTargets(props: ModeProps): Feature[] {\n let { additionalSnapTargets } = props.modeConfig || {};\n additionalSnapTargets = additionalSnapTargets || [];\n\n const features = [...props.data.features, ...additionalSnapTargets];\n return features;\n }\n\n _getSnapTargetHandles(props: ModeProps): EditHandleFeature[] {\n const handles = [];\n const features = this._getSnapTargets(props);\n\n for (let i = 0; i < features.length; i++) {\n // Filter out the currently selected feature(s)\n const isCurrentIndexFeatureNotSelected = !props.selectedIndexes.includes(i);\n\n if (isCurrentIndexFeatureNotSelected) {\n const { geometry } = features[i];\n handles.push(...getEditHandlesForGeometry(geometry, i, 'snap-target'));\n }\n }\n return handles;\n }\n\n // If no snap handle has been picked, only display the edit handles of the\n // selected feature. If a snap handle has been picked, display said snap handle\n // along with all snappable points on all non-selected features.\n getGuides(props: ModeProps): GuideFeatureCollection {\n const { modeConfig, lastPointerMoveEvent } = props;\n const { enableSnapping } = modeConfig || {};\n\n const guides: GuideFeatureCollection = {\n type: 'FeatureCollection',\n features: [...this._handler.getGuides(props).features],\n };\n\n if (!enableSnapping) {\n return guides;\n }\n\n const snapSourceHandle: EditHandleFeature | null | undefined =\n lastPointerMoveEvent && this._getPickedSnapSource(lastPointerMoveEvent.pointerDownPicks);\n\n // They started dragging a handle\n // So render the picked handle (in its updated location) and all possible snap targets\n if (snapSourceHandle) {\n guides.features.push(\n ...this._getSnapTargetHandles(props),\n this._getUpdatedSnapSourceHandle(snapSourceHandle, props.data)\n );\n\n return guides;\n }\n\n // Render the possible snap source handles\n const { features } = props.data;\n for (const index of props.selectedIndexes) {\n if (index < features.length) {\n const { geometry } = features[index];\n guides.features.push(...getEditHandlesForGeometry(geometry, index, 'snap-source'));\n }\n }\n\n return guides;\n }\n\n _getSnapAwareEvent(\n event: T,\n props: ModeProps\n ): T {\n const snapSource = this._getPickedSnapSource(props.lastPointerMoveEvent.pointerDownPicks);\n const snapTarget = this._getPickedSnapTarget(event.picks);\n\n return snapSource && snapTarget\n ? this._getSnappedMouseEvent(event, snapSource, snapTarget)\n : event;\n }\n\n handleStartDragging(event: StartDraggingEvent, props: ModeProps) {\n this._handler.handleStartDragging(event, props);\n }\n\n handleStopDragging(event: StopDraggingEvent, props: ModeProps) {\n this._handler.handleStopDragging(this._getSnapAwareEvent(event, props), props);\n }\n\n handleDragging(event: DraggingEvent, props: ModeProps) {\n this._handler.handleDragging(this._getSnapAwareEvent(event, props), props);\n }\n\n handlePointerMove(event: PointerMoveEvent, props: ModeProps) {\n this._handler.handlePointerMove(this._getSnapAwareEvent(event, props), props);\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UNIT = exports.PROJECTED_PIXEL_SIZE_MULTIPLIER = void 0;\n\n/**\n * A multiplier for screen-space width/scale for Arc, Line, Icon and Text layers.\n * Required in order to maintain the same appearance after upgrading to deck.gl v8.5.\n * https://github.com/visgl/deck.gl/blob/master/docs/upgrade-guide.md\n */\nvar PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;\n/**\n * Unit literal to shader unit number conversion.\n */\n\nexports.PROJECTED_PIXEL_SIZE_MULTIPLIER = PROJECTED_PIXEL_SIZE_MULTIPLIER;\nvar UNIT = {\n common: 0,\n meters: 1,\n pixels: 2\n};\nexports.UNIT = UNIT;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMudHMiXSwibmFtZXMiOlsiUFJPSkVDVEVEX1BJWEVMX1NJWkVfTVVMVElQTElFUiIsIlVOSVQiLCJjb21tb24iLCJtZXRlcnMiLCJwaXhlbHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7Ozs7QUFLTyxJQUFNQSwrQkFBK0IsR0FBRyxJQUFJLENBQTVDO0FBRVA7Ozs7O0FBR08sSUFBTUMsSUFBSSxHQUFHO0FBQ2xCQyxFQUFBQSxNQUFNLEVBQUUsQ0FEVTtBQUVsQkMsRUFBQUEsTUFBTSxFQUFFLENBRlU7QUFHbEJDLEVBQUFBLE1BQU0sRUFBRTtBQUhVLENBQWIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgbXVsdGlwbGllciBmb3Igc2NyZWVuLXNwYWNlIHdpZHRoL3NjYWxlIGZvciBBcmMsIExpbmUsIEljb24gYW5kIFRleHQgbGF5ZXJzLlxuICogUmVxdWlyZWQgaW4gb3JkZXIgdG8gbWFpbnRhaW4gdGhlIHNhbWUgYXBwZWFyYW5jZSBhZnRlciB1cGdyYWRpbmcgdG8gZGVjay5nbCB2OC41LlxuICogaHR0cHM6Ly9naXRodWIuY29tL3Zpc2dsL2RlY2suZ2wvYmxvYi9tYXN0ZXIvZG9jcy91cGdyYWRlLWd1aWRlLm1kXG4gKi9cbmV4cG9ydCBjb25zdCBQUk9KRUNURURfUElYRUxfU0laRV9NVUxUSVBMSUVSID0gMiAvIDM7XG5cbi8qKlxuICogVW5pdCBsaXRlcmFsIHRvIHNoYWRlciB1bml0IG51bWJlciBjb252ZXJzaW9uLlxuICovXG5leHBvcnQgY29uc3QgVU5JVCA9IHtcbiAgY29tbW9uOiAwLFxuICBtZXRlcnM6IDEsXG4gIHBpeGVsczogMixcbn07XG4iXX0=","/**\n * A multiplier for screen-space width/scale for Arc, Line, Icon and Text layers.\n * Required in order to maintain the same appearance after upgrading to deck.gl v8.5.\n * https://github.com/visgl/deck.gl/blob/master/docs/upgrade-guide.md\n */\nexport const PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;\n\n/**\n * Unit literal to shader unit number conversion.\n */\nexport const UNIT = {\n common: 0,\n meters: 1,\n pixels: 2,\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _core = require(\"@deck.gl/core\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar EVENT_TYPES = ['anyclick', 'pointermove', 'panstart', 'panmove', 'panend', 'keyup'];\n\nvar EditableLayer = /*#__PURE__*/function (_CompositeLayer) {\n _inherits(EditableLayer, _CompositeLayer);\n\n var _super = _createSuper(EditableLayer);\n\n function EditableLayer() {\n _classCallCheck(this, EditableLayer);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(EditableLayer, [{\n key: \"onLayerClick\",\n // Overridable interaction event handlers\n value: function onLayerClick(event) {// default implementation - do nothing\n }\n }, {\n key: \"onStartDragging\",\n value: function onStartDragging(event) {// default implementation - do nothing\n }\n }, {\n key: \"onStopDragging\",\n value: function onStopDragging(event) {// default implementation - do nothing\n }\n }, {\n key: \"onDragging\",\n value: function onDragging(event) {// default implementation - do nothing\n }\n }, {\n key: \"onPointerMove\",\n value: function onPointerMove(event) {// default implementation - do nothing\n }\n }, {\n key: \"onLayerKeyUp\",\n value: function onLayerKeyUp(event) {} // default implementation - do nothing;\n // TODO: implement onCancelDragging (e.g. drag off screen)\n\n }, {\n key: \"initializeState\",\n value: function initializeState() {\n this.setState({\n _editableLayerState: {\n // Picked objects at the time the pointer went down\n pointerDownPicks: null,\n // Screen coordinates where the pointer went down\n pointerDownScreenCoords: null,\n // Ground coordinates where the pointer went down\n pointerDownMapCoords: null,\n // Keep track of the mjolnir.js event handler so it can be deregistered\n eventHandler: this._forwardEventToCurrentLayer.bind(this)\n }\n });\n\n this._addEventHandlers();\n }\n }, {\n key: \"finalizeState\",\n value: function finalizeState() {\n this._removeEventHandlers();\n }\n }, {\n key: \"_addEventHandlers\",\n value: function _addEventHandlers() {\n // @ts-ignore\n var eventManager = this.context.deck.eventManager;\n var eventHandler = this.state._editableLayerState.eventHandler;\n\n var _iterator = _createForOfIteratorHelper(EVENT_TYPES),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var eventType = _step.value;\n eventManager.on(eventType, eventHandler, {\n // give nebula a higher priority so that it can stop propagation to deck.gl's map panning handlers\n priority: 100\n });\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"_removeEventHandlers\",\n value: function _removeEventHandlers() {\n // @ts-ignore\n var eventManager = this.context.deck.eventManager;\n var eventHandler = this.state._editableLayerState.eventHandler;\n\n var _iterator2 = _createForOfIteratorHelper(EVENT_TYPES),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var eventType = _step2.value;\n eventManager.off(eventType, eventHandler);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n } // A new layer instance is created on every render, so forward the event to the current layer\n // This means that the first layer instance will stick around to be the event listener, but will forward the event\n // to the latest layer instance.\n\n }, {\n key: \"_forwardEventToCurrentLayer\",\n value: function _forwardEventToCurrentLayer(event) {\n var currentLayer = this.getCurrentLayer(); // Use a naming convention to find the event handling function for this event type\n\n var func = currentLayer[\"_on\".concat(event.type)].bind(currentLayer);\n\n if (!func) {\n console.warn(\"no handler for mjolnir.js event \".concat(event.type)); // eslint-disable-line\n\n return;\n }\n\n func(event);\n }\n }, {\n key: \"_onanyclick\",\n value: function _onanyclick(_ref) {\n var srcEvent = _ref.srcEvent;\n var screenCoords = this.getScreenCoords(srcEvent);\n var mapCoords = this.getMapCoords(screenCoords); // @ts-ignore\n\n var picks = this.getPicks(screenCoords);\n this.onLayerClick({\n mapCoords: mapCoords,\n // @ts-ignore\n screenCoords: screenCoords,\n picks: picks,\n sourceEvent: srcEvent\n });\n }\n }, {\n key: \"_onkeyup\",\n value: function _onkeyup(_ref2) {\n var srcEvent = _ref2.srcEvent;\n this.onLayerKeyUp(srcEvent);\n }\n }, {\n key: \"_onpanstart\",\n value: function _onpanstart(event) {\n var screenCoords = this.getScreenCoords(event.srcEvent);\n var mapCoords = this.getMapCoords(screenCoords); // @ts-ignore\n\n var picks = this.getPicks(screenCoords);\n this.setState({\n _editableLayerState: _objectSpread({}, this.state._editableLayerState, {\n pointerDownScreenCoords: screenCoords,\n pointerDownMapCoords: mapCoords,\n pointerDownPicks: picks\n })\n });\n this.onStartDragging({\n picks: picks,\n // @ts-ignore\n screenCoords: screenCoords,\n // @ts-ignore\n mapCoords: mapCoords,\n // @ts-ignore\n pointerDownScreenCoords: screenCoords,\n pointerDownMapCoords: mapCoords,\n cancelPan: event.stopImmediatePropagation,\n sourceEvent: event.srcEvent\n });\n }\n }, {\n key: \"_onpanmove\",\n value: function _onpanmove(event) {\n var srcEvent = event.srcEvent;\n var screenCoords = this.getScreenCoords(srcEvent);\n var mapCoords = this.getMapCoords(screenCoords);\n var _this$state$_editable = this.state._editableLayerState,\n pointerDownPicks = _this$state$_editable.pointerDownPicks,\n pointerDownScreenCoords = _this$state$_editable.pointerDownScreenCoords,\n pointerDownMapCoords = _this$state$_editable.pointerDownMapCoords; // @ts-ignore\n\n var picks = this.getPicks(screenCoords);\n this.onDragging({\n // @ts-ignore\n screenCoords: screenCoords,\n mapCoords: mapCoords,\n picks: picks,\n pointerDownPicks: pointerDownPicks,\n pointerDownScreenCoords: pointerDownScreenCoords,\n pointerDownMapCoords: pointerDownMapCoords,\n sourceEvent: srcEvent,\n cancelPan: event.stopImmediatePropagation // another (hacky) approach for cancelling map panning\n // const controller = this.context.deck.viewManager.controllers[\n // Object.keys(this.context.deck.viewManager.controllers)[0]\n // ];\n // controller._state.isDragging = false;\n\n });\n }\n }, {\n key: \"_onpanend\",\n value: function _onpanend(_ref3) {\n var srcEvent = _ref3.srcEvent;\n var screenCoords = this.getScreenCoords(srcEvent);\n var mapCoords = this.getMapCoords(screenCoords);\n var _this$state$_editable2 = this.state._editableLayerState,\n pointerDownPicks = _this$state$_editable2.pointerDownPicks,\n pointerDownScreenCoords = _this$state$_editable2.pointerDownScreenCoords,\n pointerDownMapCoords = _this$state$_editable2.pointerDownMapCoords; // @ts-ignore\n\n var picks = this.getPicks(screenCoords);\n this.onStopDragging({\n picks: picks,\n // @ts-ignore\n screenCoords: screenCoords,\n mapCoords: mapCoords,\n pointerDownPicks: pointerDownPicks,\n pointerDownScreenCoords: pointerDownScreenCoords,\n pointerDownMapCoords: pointerDownMapCoords,\n sourceEvent: srcEvent\n });\n this.setState({\n _editableLayerState: _objectSpread({}, this.state._editableLayerState, {\n pointerDownScreenCoords: null,\n pointerDownMapCoords: null,\n pointerDownPicks: null\n })\n });\n }\n }, {\n key: \"_onpointermove\",\n value: function _onpointermove(event) {\n var srcEvent = event.srcEvent;\n var screenCoords = this.getScreenCoords(srcEvent);\n var mapCoords = this.getMapCoords(screenCoords);\n var _this$state$_editable3 = this.state._editableLayerState,\n pointerDownPicks = _this$state$_editable3.pointerDownPicks,\n pointerDownScreenCoords = _this$state$_editable3.pointerDownScreenCoords,\n pointerDownMapCoords = _this$state$_editable3.pointerDownMapCoords; // @ts-ignore\n\n var picks = this.getPicks(screenCoords);\n this.onPointerMove({\n // @ts-ignore\n screenCoords: screenCoords,\n mapCoords: mapCoords,\n picks: picks,\n pointerDownPicks: pointerDownPicks,\n pointerDownScreenCoords: pointerDownScreenCoords,\n pointerDownMapCoords: pointerDownMapCoords,\n sourceEvent: srcEvent\n });\n }\n }, {\n key: \"getPicks\",\n value: function getPicks(screenCoords) {\n // @ts-ignore\n return this.context.deck.pickMultipleObjects({\n x: screenCoords[0],\n y: screenCoords[1],\n layerIds: [this.props.id],\n radius: this.props.pickingRadius,\n depth: this.props.pickingDepth\n });\n }\n }, {\n key: \"getScreenCoords\",\n value: function getScreenCoords(pointerEvent) {\n return [pointerEvent.clientX - this.context.gl.canvas.getBoundingClientRect().left, pointerEvent.clientY - this.context.gl.canvas.getBoundingClientRect().top];\n }\n }, {\n key: \"getMapCoords\",\n value: function getMapCoords(screenCoords) {\n // @ts-ignore\n return this.context.viewport.unproject([screenCoords[0], screenCoords[1]]);\n }\n }]);\n\n return EditableLayer;\n}(_core.CompositeLayer);\n\nexports[\"default\"] = EditableLayer;\n\n_defineProperty(EditableLayer, \"layerName\", 'EditableLayer');\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWRpdGFibGUtbGF5ZXIudHMiXSwibmFtZXMiOlsiRVZFTlRfVFlQRVMiLCJFZGl0YWJsZUxheWVyIiwiZXZlbnQiLCJzZXRTdGF0ZSIsIl9lZGl0YWJsZUxheWVyU3RhdGUiLCJwb2ludGVyRG93blBpY2tzIiwicG9pbnRlckRvd25TY3JlZW5Db29yZHMiLCJwb2ludGVyRG93bk1hcENvb3JkcyIsImV2ZW50SGFuZGxlciIsIl9mb3J3YXJkRXZlbnRUb0N1cnJlbnRMYXllciIsImJpbmQiLCJfYWRkRXZlbnRIYW5kbGVycyIsIl9yZW1vdmVFdmVudEhhbmRsZXJzIiwiZXZlbnRNYW5hZ2VyIiwiY29udGV4dCIsImRlY2siLCJzdGF0ZSIsImV2ZW50VHlwZSIsIm9uIiwicHJpb3JpdHkiLCJvZmYiLCJjdXJyZW50TGF5ZXIiLCJnZXRDdXJyZW50TGF5ZXIiLCJmdW5jIiwidHlwZSIsImNvbnNvbGUiLCJ3YXJuIiwic3JjRXZlbnQiLCJzY3JlZW5Db29yZHMiLCJnZXRTY3JlZW5Db29yZHMiLCJtYXBDb29yZHMiLCJnZXRNYXBDb29yZHMiLCJwaWNrcyIsImdldFBpY2tzIiwib25MYXllckNsaWNrIiwic291cmNlRXZlbnQiLCJvbkxheWVyS2V5VXAiLCJvblN0YXJ0RHJhZ2dpbmciLCJjYW5jZWxQYW4iLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJvbkRyYWdnaW5nIiwib25TdG9wRHJhZ2dpbmciLCJvblBvaW50ZXJNb3ZlIiwicGlja011bHRpcGxlT2JqZWN0cyIsIngiLCJ5IiwibGF5ZXJJZHMiLCJwcm9wcyIsImlkIiwicmFkaXVzIiwicGlja2luZ1JhZGl1cyIsImRlcHRoIiwicGlja2luZ0RlcHRoIiwicG9pbnRlckV2ZW50IiwiY2xpZW50WCIsImdsIiwiY2FudmFzIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibGVmdCIsImNsaWVudFkiLCJ0b3AiLCJ2aWV3cG9ydCIsInVucHJvamVjdCIsIkNvbXBvc2l0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QWIsRUFBa0JBLFlBQVksQ0FBQyxDQUFELENBQTlCLENBQWhDLENBQVA7QUFDRDs7OztFQXpQT21DLG9COzs7O2dCQUhXOUQsYSxlQUlBLGUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxuaW1wb3J0IHsgQ29tcG9zaXRlTGF5ZXIgfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7IENvbXBvc2l0ZUxheWVyUHJvcHMgfSBmcm9tICdAZGVjay5nbC9jb3JlL2xpYi9jb21wb3NpdGUtbGF5ZXInO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgUG9zaXRpb24sXG59IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5cbmNvbnN0IEVWRU5UX1RZUEVTID0gWydhbnljbGljaycsICdwb2ludGVybW92ZScsICdwYW5zdGFydCcsICdwYW5tb3ZlJywgJ3BhbmVuZCcsICdrZXl1cCddO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRhYmxlTGF5ZXJQcm9wczxEPiBleHRlbmRzIENvbXBvc2l0ZUxheWVyUHJvcHM8RD4ge1xuICBwaWNraW5nUmFkaXVzPzogbnVtYmVyO1xuICBwaWNraW5nRGVwdGg/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXRhYmxlTGF5ZXI8XG4gIEQsXG4gIFAgZXh0ZW5kcyBFZGl0YWJsZUxheWVyUHJvcHM8RD4gPSBFZGl0YWJsZUxheWVyUHJvcHM8RD5cbj4gZXh0ZW5kcyBDb21wb3NpdGVMYXllcjxELCBQPiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnRWRpdGFibGVMYXllcic7XG5cbiAgLy8gT3ZlcnJpZGFibGUgaW50ZXJhY3Rpb24gZXZlbnQgaGFuZGxlcnNcbiAgb25MYXllckNsaWNrKGV2ZW50OiBDbGlja0V2ZW50KSB7XG4gICAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIGRvIG5vdGhpbmdcbiAgfVxuXG4gIG9uU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KSB7XG4gICAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIGRvIG5vdGhpbmdcbiAgfVxuXG4gIG9uU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCkge1xuICAgIC8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gLSBkbyBub3RoaW5nXG4gIH1cblxuICBvbkRyYWdnaW5nKGV2ZW50OiBEcmFnZ2luZ0V2ZW50KSB7XG4gICAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIGRvIG5vdGhpbmdcbiAgfVxuXG4gIG9uUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQpIHtcbiAgICAvLyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIC0gZG8gbm90aGluZ1xuICB9XG5cbiAgb25MYXllcktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIGRvIG5vdGhpbmc7XG4gIH1cbiAgLy8gVE9ETzogaW1wbGVtZW50IG9uQ2FuY2VsRHJhZ2dpbmcgKGUuZy4gZHJhZyBvZmYgc2NyZWVuKVxuXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIF9lZGl0YWJsZUxheWVyU3RhdGU6IHtcbiAgICAgICAgLy8gUGlja2VkIG9iamVjdHMgYXQgdGhlIHRpbWUgdGhlIHBvaW50ZXIgd2VudCBkb3duXG4gICAgICAgIHBvaW50ZXJEb3duUGlja3M6IG51bGwsXG4gICAgICAgIC8vIFNjcmVlbiBjb29yZGluYXRlcyB3aGVyZSB0aGUgcG9pbnRlciB3ZW50IGRvd25cbiAgICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IG51bGwsXG4gICAgICAgIC8vIEdyb3VuZCBjb29yZGluYXRlcyB3aGVyZSB0aGUgcG9pbnRlciB3ZW50IGRvd25cbiAgICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG5cbiAgICAgICAgLy8gS2VlcCB0cmFjayBvZiB0aGUgbWpvbG5pci5qcyBldmVudCBoYW5kbGVyIHNvIGl0IGNhbiBiZSBkZXJlZ2lzdGVyZWRcbiAgICAgICAgZXZlbnRIYW5kbGVyOiB0aGlzLl9mb3J3YXJkRXZlbnRUb0N1cnJlbnRMYXllci5iaW5kKHRoaXMpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuX2FkZEV2ZW50SGFuZGxlcnMoKTtcbiAgfVxuXG4gIGZpbmFsaXplU3RhdGUoKSB7XG4gICAgdGhpcy5fcmVtb3ZlRXZlbnRIYW5kbGVycygpO1xuICB9XG5cbiAgX2FkZEV2ZW50SGFuZGxlcnMoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgZXZlbnRNYW5hZ2VyIH0gPSB0aGlzLmNvbnRleHQuZGVjaztcbiAgICBjb25zdCB7IGV2ZW50SGFuZGxlciB9ID0gdGhpcy5zdGF0ZS5fZWRpdGFibGVMYXllclN0YXRlO1xuXG4gICAgZm9yIChjb25zdCBldmVudFR5cGUgb2YgRVZFTlRfVFlQRVMpIHtcbiAgICAgIGV2ZW50TWFuYWdlci5vbihldmVudFR5cGUsIGV2ZW50SGFuZGxlciwge1xuICAgICAgICAvLyBnaXZlIG5lYnVsYSBhIGhpZ2hlciBwcmlvcml0eSBzbyB0aGF0IGl0IGNhbiBzdG9wIHByb3BhZ2F0aW9uIHRvIGRlY2suZ2wncyBtYXAgcGFubmluZyBoYW5kbGVyc1xuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgX3JlbW92ZUV2ZW50SGFuZGxlcnMoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgZXZlbnRNYW5hZ2VyIH0gPSB0aGlzLmNvbnRleHQuZGVjaztcbiAgICBjb25zdCB7IGV2ZW50SGFuZGxlciB9ID0gdGhpcy5zdGF0ZS5fZWRpdGFibGVMYXllclN0YXRlO1xuXG4gICAgZm9yIChjb25zdCBldmVudFR5cGUgb2YgRVZFTlRfVFlQRVMpIHtcbiAgICAgIGV2ZW50TWFuYWdlci5vZmYoZXZlbnRUeXBlLCBldmVudEhhbmRsZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEEgbmV3IGxheWVyIGluc3RhbmNlIGlzIGNyZWF0ZWQgb24gZXZlcnkgcmVuZGVyLCBzbyBmb3J3YXJkIHRoZSBldmVudCB0byB0aGUgY3VycmVudCBsYXllclxuICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhlIGZpcnN0IGxheWVyIGluc3RhbmNlIHdpbGwgc3RpY2sgYXJvdW5kIHRvIGJlIHRoZSBldmVudCBsaXN0ZW5lciwgYnV0IHdpbGwgZm9yd2FyZCB0aGUgZXZlbnRcbiAgLy8gdG8gdGhlIGxhdGVzdCBsYXllciBpbnN0YW5jZS5cbiAgX2ZvcndhcmRFdmVudFRvQ3VycmVudExheWVyKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBjdXJyZW50TGF5ZXIgPSB0aGlzLmdldEN1cnJlbnRMYXllcigpO1xuXG4gICAgLy8gVXNlIGEgbmFtaW5nIGNvbnZlbnRpb24gdG8gZmluZCB0aGUgZXZlbnQgaGFuZGxpbmcgZnVuY3Rpb24gZm9yIHRoaXMgZXZlbnQgdHlwZVxuICAgIGNvbnN0IGZ1bmMgPSBjdXJyZW50TGF5ZXJbYF9vbiR7ZXZlbnQudHlwZX1gXS5iaW5kKGN1cnJlbnRMYXllcik7XG4gICAgaWYgKCFmdW5jKSB7XG4gICAgICBjb25zb2xlLndhcm4oYG5vIGhhbmRsZXIgZm9yIG1qb2xuaXIuanMgZXZlbnQgJHtldmVudC50eXBlfWApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZ1bmMoZXZlbnQpO1xuICB9XG5cbiAgX29uYW55Y2xpY2soeyBzcmNFdmVudCB9OiBhbnkpIHtcbiAgICBjb25zdCBzY3JlZW5Db29yZHMgPSB0aGlzLmdldFNjcmVlbkNvb3JkcyhzcmNFdmVudCk7XG4gICAgY29uc3QgbWFwQ29vcmRzID0gdGhpcy5nZXRNYXBDb29yZHMoc2NyZWVuQ29vcmRzKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja3MgPSB0aGlzLmdldFBpY2tzKHNjcmVlbkNvb3Jkcyk7XG5cbiAgICB0aGlzLm9uTGF5ZXJDbGljayh7XG4gICAgICBtYXBDb29yZHMsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBzY3JlZW5Db29yZHMsXG4gICAgICBwaWNrcyxcbiAgICAgIHNvdXJjZUV2ZW50OiBzcmNFdmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIF9vbmtleXVwKHsgc3JjRXZlbnQgfTogeyBzcmNFdmVudDogS2V5Ym9hcmRFdmVudCB9KSB7XG4gICAgdGhpcy5vbkxheWVyS2V5VXAoc3JjRXZlbnQpO1xuICB9XG5cbiAgX29ucGFuc3RhcnQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHNjcmVlbkNvb3JkcyA9IHRoaXMuZ2V0U2NyZWVuQ29vcmRzKGV2ZW50LnNyY0V2ZW50KTtcbiAgICBjb25zdCBtYXBDb29yZHMgPSB0aGlzLmdldE1hcENvb3JkcyhzY3JlZW5Db29yZHMpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBwaWNrcyA9IHRoaXMuZ2V0UGlja3Moc2NyZWVuQ29vcmRzKTtcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgX2VkaXRhYmxlTGF5ZXJTdGF0ZToge1xuICAgICAgICAuLi50aGlzLnN0YXRlLl9lZGl0YWJsZUxheWVyU3RhdGUsXG4gICAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBzY3JlZW5Db29yZHMsXG4gICAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzOiBtYXBDb29yZHMsXG4gICAgICAgIHBvaW50ZXJEb3duUGlja3M6IHBpY2tzLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMub25TdGFydERyYWdnaW5nKHtcbiAgICAgIHBpY2tzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IHNjcmVlbkNvb3JkcyxcbiAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzOiBtYXBDb29yZHMsXG4gICAgICBjYW5jZWxQYW46IGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbixcbiAgICAgIHNvdXJjZUV2ZW50OiBldmVudC5zcmNFdmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIF9vbnBhbm1vdmUoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHsgc3JjRXZlbnQgfSA9IGV2ZW50O1xuICAgIGNvbnN0IHNjcmVlbkNvb3JkcyA9IHRoaXMuZ2V0U2NyZWVuQ29vcmRzKHNyY0V2ZW50KTtcbiAgICBjb25zdCBtYXBDb29yZHMgPSB0aGlzLmdldE1hcENvb3JkcyhzY3JlZW5Db29yZHMpO1xuXG4gICAgY29uc3Qge1xuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgfSA9IHRoaXMuc3RhdGUuX2VkaXRhYmxlTGF5ZXJTdGF0ZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja3MgPSB0aGlzLmdldFBpY2tzKHNjcmVlbkNvb3Jkcyk7XG5cbiAgICB0aGlzLm9uRHJhZ2dpbmcoe1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgcGlja3MsXG4gICAgICBwb2ludGVyRG93blBpY2tzLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICAgIHNvdXJjZUV2ZW50OiBzcmNFdmVudCxcbiAgICAgIGNhbmNlbFBhbjogZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uLFxuICAgICAgLy8gYW5vdGhlciAoaGFja3kpIGFwcHJvYWNoIGZvciBjYW5jZWxsaW5nIG1hcCBwYW5uaW5nXG4gICAgICAvLyBjb25zdCBjb250cm9sbGVyID0gdGhpcy5jb250ZXh0LmRlY2sudmlld01hbmFnZXIuY29udHJvbGxlcnNbXG4gICAgICAvLyAgIE9iamVjdC5rZXlzKHRoaXMuY29udGV4dC5kZWNrLnZpZXdNYW5hZ2VyLmNvbnRyb2xsZXJzKVswXVxuICAgICAgLy8gXTtcbiAgICAgIC8vIGNvbnRyb2xsZXIuX3N0YXRlLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIF9vbnBhbmVuZCh7IHNyY0V2ZW50IH06IGFueSkge1xuICAgIGNvbnN0IHNjcmVlbkNvb3JkcyA9IHRoaXMuZ2V0U2NyZWVuQ29vcmRzKHNyY0V2ZW50KTtcbiAgICBjb25zdCBtYXBDb29yZHMgPSB0aGlzLmdldE1hcENvb3JkcyhzY3JlZW5Db29yZHMpO1xuXG4gICAgY29uc3Qge1xuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgfSA9IHRoaXMuc3RhdGUuX2VkaXRhYmxlTGF5ZXJTdGF0ZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja3MgPSB0aGlzLmdldFBpY2tzKHNjcmVlbkNvb3Jkcyk7XG5cbiAgICB0aGlzLm9uU3RvcERyYWdnaW5nKHtcbiAgICAgIHBpY2tzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgICBzb3VyY2VFdmVudDogc3JjRXZlbnQsXG4gICAgfSk7XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIF9lZGl0YWJsZUxheWVyU3RhdGU6IHtcbiAgICAgICAgLi4udGhpcy5zdGF0ZS5fZWRpdGFibGVMYXllclN0YXRlLFxuICAgICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogbnVsbCxcbiAgICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG4gICAgICAgIHBvaW50ZXJEb3duUGlja3M6IG51bGwsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgX29ucG9pbnRlcm1vdmUoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHsgc3JjRXZlbnQgfSA9IGV2ZW50O1xuICAgIGNvbnN0IHNjcmVlbkNvb3JkcyA9IHRoaXMuZ2V0U2NyZWVuQ29vcmRzKHNyY0V2ZW50KTtcbiAgICBjb25zdCBtYXBDb29yZHMgPSB0aGlzLmdldE1hcENvb3JkcyhzY3JlZW5Db29yZHMpO1xuXG4gICAgY29uc3Qge1xuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgfSA9IHRoaXMuc3RhdGUuX2VkaXRhYmxlTGF5ZXJTdGF0ZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja3MgPSB0aGlzLmdldFBpY2tzKHNjcmVlbkNvb3Jkcyk7XG5cbiAgICB0aGlzLm9uUG9pbnRlck1vdmUoe1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgcGlja3MsXG4gICAgICBwb2ludGVyRG93blBpY2tzLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICAgIHNvdXJjZUV2ZW50OiBzcmNFdmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFBpY2tzKHNjcmVlbkNvb3JkczogW251bWJlciwgbnVtYmVyXSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LmRlY2sucGlja011bHRpcGxlT2JqZWN0cyh7XG4gICAgICB4OiBzY3JlZW5Db29yZHNbMF0sXG4gICAgICB5OiBzY3JlZW5Db29yZHNbMV0sXG4gICAgICBsYXllcklkczogW3RoaXMucHJvcHMuaWRdLFxuICAgICAgcmFkaXVzOiB0aGlzLnByb3BzLnBpY2tpbmdSYWRpdXMsXG4gICAgICBkZXB0aDogdGhpcy5wcm9wcy5waWNraW5nRGVwdGgsXG4gICAgfSk7XG4gIH1cblxuICBnZXRTY3JlZW5Db29yZHMocG9pbnRlckV2ZW50OiBhbnkpOiBQb3NpdGlvbiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHBvaW50ZXJFdmVudC5jbGllbnRYIC1cbiAgICAgICAgKHRoaXMuY29udGV4dC5nbC5jYW52YXMgYXMgSFRNTENhbnZhc0VsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQsXG4gICAgICBwb2ludGVyRXZlbnQuY2xpZW50WSAtXG4gICAgICAgICh0aGlzLmNvbnRleHQuZ2wuY2FudmFzIGFzIEhUTUxDYW52YXNFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsXG4gICAgXTtcbiAgfVxuXG4gIGdldE1hcENvb3JkcyhzY3JlZW5Db29yZHM6IFBvc2l0aW9uKTogUG9zaXRpb24ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LnZpZXdwb3J0LnVucHJvamVjdChbc2NyZWVuQ29vcmRzWzBdLCBzY3JlZW5Db29yZHNbMV1dKTtcbiAgfVxufVxuIl19","/* eslint-env browser */\n\nimport { CompositeLayer } from '@deck.gl/core';\nimport { CompositeLayerProps } from '@deck.gl/core/lib/composite-layer';\nimport {\n ClickEvent,\n StartDraggingEvent,\n StopDraggingEvent,\n DraggingEvent,\n PointerMoveEvent,\n Position,\n} from '@nebula.gl/edit-modes';\n\nconst EVENT_TYPES = ['anyclick', 'pointermove', 'panstart', 'panmove', 'panend', 'keyup'];\n\nexport interface EditableLayerProps extends CompositeLayerProps {\n pickingRadius?: number;\n pickingDepth?: number;\n}\n\nexport default class EditableLayer<\n D,\n P extends EditableLayerProps = EditableLayerProps\n> extends CompositeLayer {\n static layerName = 'EditableLayer';\n\n // Overridable interaction event handlers\n onLayerClick(event: ClickEvent) {\n // default implementation - do nothing\n }\n\n onStartDragging(event: StartDraggingEvent) {\n // default implementation - do nothing\n }\n\n onStopDragging(event: StopDraggingEvent) {\n // default implementation - do nothing\n }\n\n onDragging(event: DraggingEvent) {\n // default implementation - do nothing\n }\n\n onPointerMove(event: PointerMoveEvent) {\n // default implementation - do nothing\n }\n\n onLayerKeyUp(event: KeyboardEvent): void {\n // default implementation - do nothing;\n }\n // TODO: implement onCancelDragging (e.g. drag off screen)\n\n initializeState() {\n this.setState({\n _editableLayerState: {\n // Picked objects at the time the pointer went down\n pointerDownPicks: null,\n // Screen coordinates where the pointer went down\n pointerDownScreenCoords: null,\n // Ground coordinates where the pointer went down\n pointerDownMapCoords: null,\n\n // Keep track of the mjolnir.js event handler so it can be deregistered\n eventHandler: this._forwardEventToCurrentLayer.bind(this),\n },\n });\n\n this._addEventHandlers();\n }\n\n finalizeState() {\n this._removeEventHandlers();\n }\n\n _addEventHandlers() {\n // @ts-ignore\n const { eventManager } = this.context.deck;\n const { eventHandler } = this.state._editableLayerState;\n\n for (const eventType of EVENT_TYPES) {\n eventManager.on(eventType, eventHandler, {\n // give nebula a higher priority so that it can stop propagation to deck.gl's map panning handlers\n priority: 100,\n });\n }\n }\n\n _removeEventHandlers() {\n // @ts-ignore\n const { eventManager } = this.context.deck;\n const { eventHandler } = this.state._editableLayerState;\n\n for (const eventType of EVENT_TYPES) {\n eventManager.off(eventType, eventHandler);\n }\n }\n\n // A new layer instance is created on every render, so forward the event to the current layer\n // This means that the first layer instance will stick around to be the event listener, but will forward the event\n // to the latest layer instance.\n _forwardEventToCurrentLayer(event: any) {\n const currentLayer = this.getCurrentLayer();\n\n // Use a naming convention to find the event handling function for this event type\n const func = currentLayer[`_on${event.type}`].bind(currentLayer);\n if (!func) {\n console.warn(`no handler for mjolnir.js event ${event.type}`); // eslint-disable-line\n return;\n }\n func(event);\n }\n\n _onanyclick({ srcEvent }: any) {\n const screenCoords = this.getScreenCoords(srcEvent);\n const mapCoords = this.getMapCoords(screenCoords);\n // @ts-ignore\n const picks = this.getPicks(screenCoords);\n\n this.onLayerClick({\n mapCoords,\n // @ts-ignore\n screenCoords,\n picks,\n sourceEvent: srcEvent,\n });\n }\n\n _onkeyup({ srcEvent }: { srcEvent: KeyboardEvent }) {\n this.onLayerKeyUp(srcEvent);\n }\n\n _onpanstart(event: any) {\n const screenCoords = this.getScreenCoords(event.srcEvent);\n const mapCoords = this.getMapCoords(screenCoords);\n // @ts-ignore\n const picks = this.getPicks(screenCoords);\n\n this.setState({\n _editableLayerState: {\n ...this.state._editableLayerState,\n pointerDownScreenCoords: screenCoords,\n pointerDownMapCoords: mapCoords,\n pointerDownPicks: picks,\n },\n });\n\n this.onStartDragging({\n picks,\n // @ts-ignore\n screenCoords,\n // @ts-ignore\n mapCoords,\n // @ts-ignore\n pointerDownScreenCoords: screenCoords,\n pointerDownMapCoords: mapCoords,\n cancelPan: event.stopImmediatePropagation,\n sourceEvent: event.srcEvent,\n });\n }\n\n _onpanmove(event: any) {\n const { srcEvent } = event;\n const screenCoords = this.getScreenCoords(srcEvent);\n const mapCoords = this.getMapCoords(screenCoords);\n\n const {\n pointerDownPicks,\n pointerDownScreenCoords,\n pointerDownMapCoords,\n } = this.state._editableLayerState;\n // @ts-ignore\n const picks = this.getPicks(screenCoords);\n\n this.onDragging({\n // @ts-ignore\n screenCoords,\n mapCoords,\n picks,\n pointerDownPicks,\n pointerDownScreenCoords,\n pointerDownMapCoords,\n sourceEvent: srcEvent,\n cancelPan: event.stopImmediatePropagation,\n // another (hacky) approach for cancelling map panning\n // const controller = this.context.deck.viewManager.controllers[\n // Object.keys(this.context.deck.viewManager.controllers)[0]\n // ];\n // controller._state.isDragging = false;\n });\n }\n\n _onpanend({ srcEvent }: any) {\n const screenCoords = this.getScreenCoords(srcEvent);\n const mapCoords = this.getMapCoords(screenCoords);\n\n const {\n pointerDownPicks,\n pointerDownScreenCoords,\n pointerDownMapCoords,\n } = this.state._editableLayerState;\n // @ts-ignore\n const picks = this.getPicks(screenCoords);\n\n this.onStopDragging({\n picks,\n // @ts-ignore\n screenCoords,\n mapCoords,\n pointerDownPicks,\n pointerDownScreenCoords,\n pointerDownMapCoords,\n sourceEvent: srcEvent,\n });\n\n this.setState({\n _editableLayerState: {\n ...this.state._editableLayerState,\n pointerDownScreenCoords: null,\n pointerDownMapCoords: null,\n pointerDownPicks: null,\n },\n });\n }\n\n _onpointermove(event: any) {\n const { srcEvent } = event;\n const screenCoords = this.getScreenCoords(srcEvent);\n const mapCoords = this.getMapCoords(screenCoords);\n\n const {\n pointerDownPicks,\n pointerDownScreenCoords,\n pointerDownMapCoords,\n } = this.state._editableLayerState;\n // @ts-ignore\n const picks = this.getPicks(screenCoords);\n\n this.onPointerMove({\n // @ts-ignore\n screenCoords,\n mapCoords,\n picks,\n pointerDownPicks,\n pointerDownScreenCoords,\n pointerDownMapCoords,\n sourceEvent: srcEvent,\n });\n }\n\n getPicks(screenCoords: [number, number]) {\n // @ts-ignore\n return this.context.deck.pickMultipleObjects({\n x: screenCoords[0],\n y: screenCoords[1],\n layerIds: [this.props.id],\n radius: this.props.pickingRadius,\n depth: this.props.pickingDepth,\n });\n }\n\n getScreenCoords(pointerEvent: any): Position {\n return [\n pointerEvent.clientX -\n (this.context.gl.canvas as HTMLCanvasElement).getBoundingClientRect().left,\n pointerEvent.clientY -\n (this.context.gl.canvas as HTMLCanvasElement).getBoundingClientRect().top,\n ];\n }\n\n getMapCoords(screenCoords: Position): Position {\n // @ts-ignore\n return this.context.viewport.unproject([screenCoords[0], screenCoords[1]]);\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _layers = require(\"@deck.gl/layers\");\n\nvar _utils = require(\"../utils\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar defaultProps = _objectSpread({}, _layers.PathLayer.defaultProps, {\n pickingLineWidthExtraPixels: {\n type: 'number',\n min: 0,\n value: Number.MAX_SAFE_INTEGER\n }\n});\n\nvar EditablePathLayer = /*#__PURE__*/function (_PathLayer) {\n _inherits(EditablePathLayer, _PathLayer);\n\n var _super = _createSuper(EditablePathLayer);\n\n function EditablePathLayer() {\n _classCallCheck(this, EditablePathLayer);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(EditablePathLayer, [{\n key: \"getShaders\",\n value: function getShaders() {\n var _shaders$inject;\n\n var shaders = _get(_getPrototypeOf(EditablePathLayer.prototype), \"getShaders\", this).call(this);\n\n shaders.vs = (0, _utils.insertBefore)(shaders.vs, 'vec3 width;', \"\\n if(picking_uActive){\\n widthPixels.xy += pickingLineWidthExtraPixels;\\n }\\n \");\n return _objectSpread({}, shaders, {\n inject: _objectSpread({}, shaders.inject || {}, {\n 'vs:#decl': (((_shaders$inject = shaders.inject) === null || _shaders$inject === void 0 ? void 0 : _shaders$inject['vs:#decl']) || '').concat(\"uniform float pickingLineWidthExtraPixels;\")\n })\n });\n }\n }, {\n key: \"draw\",\n value: function draw(props) {\n _get(_getPrototypeOf(EditablePathLayer.prototype), \"draw\", this).call(this, _objectSpread({}, props, {\n uniforms: _objectSpread({}, props.uniforms, {\n pickingLineWidthExtraPixels: this.props.pickingLineWidthExtraPixels\n })\n }));\n }\n }]);\n\n return EditablePathLayer;\n}(_layers.PathLayer);\n\nexports[\"default\"] = EditablePathLayer;\nEditablePathLayer.defaultProps = defaultProps;\nEditablePathLayer.layerName = 'EditablePathLayer';\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWRpdGFibGUtcGF0aC1sYXllci50cyJdLCJuYW1lcyI6WyJkZWZhdWx0UHJvcHMiLCJQYXRoTGF5ZXIiLCJwaWNraW5nTGluZVdpZHRoRXh0cmFQaXhlbHMiLCJ0eXBlIiwibWluIiwidmFsdWUiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwiRWRpdGFibGVQYXRoTGF5ZXIiLCJzaGFkZXJzIiwidnMiLCJpbmplY3QiLCJjb25jYXQiLCJwcm9wcyIsInVuaWZvcm1zIiwibGF5ZXJOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNQSxJQUFNQSxZQUFZLHFCQUNiQyxrQkFBVUQsWUFERztBQUVoQkUsRUFBQUEsMkJBQTJCLEVBQUU7QUFBRUMsSUFBQUEsSUFBSSxFQUFFLFFBQVI7QUFBa0JDLElBQUFBLEdBQUcsRUFBRSxDQUF2QjtBQUEwQkMsSUFBQUEsS0FBSyxFQUFFQyxNQUFNLENBQUNDO0FBQXhDO0FBRmIsRUFBbEI7O0lBS3FCQyxpQjs7Ozs7Ozs7Ozs7OztpQ0FDTjtBQUFBOztBQUNYLFVBQU1DLE9BQU8sb0ZBQWI7O0FBRUFBLE1BQUFBLE9BQU8sQ0FBQ0MsRUFBUixHQUFhLHlCQUNYRCxPQUFPLENBQUNDLEVBREcsRUFFWCxhQUZXLDRHQUFiO0FBVUEsK0JBQ0tELE9BREw7QUFFRUUsUUFBQUEsTUFBTSxvQkFDQUYsT0FBTyxDQUFDRSxNQUFSLElBQWtCLEVBRGxCO0FBRUosc0JBQVksQ0FBQyxvQkFBQUYsT0FBTyxDQUFDRSxNQUFSLG9FQUFpQixVQUFqQixNQUFnQyxFQUFqQyxFQUFxQ0MsTUFBckM7QUFGUjtBQUZSO0FBU0Q7Ozt5QkFFSUMsSyxFQUFPO0FBQ1Ysb0dBQ0tBLEtBREw7QUFFRUMsUUFBQUEsUUFBUSxvQkFDSEQsS0FBSyxDQUFDQyxRQURIO0FBRU5aLFVBQUFBLDJCQUEyQixFQUFFLEtBQUtXLEtBQUwsQ0FBV1g7QUFGbEM7QUFGVjtBQU9EOzs7O0VBakM0Q0QsaUI7OztBQW9DL0NPLGlCQUFpQixDQUFDUixZQUFsQixHQUFpQ0EsWUFBakM7QUFDQVEsaUJBQWlCLENBQUNPLFNBQWxCLEdBQThCLG1CQUE5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhdGhMYXllciwgUGF0aExheWVyUHJvcHMgfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuXG5pbXBvcnQgeyBpbnNlcnRCZWZvcmUgfSBmcm9tICcuLi91dGlscyc7XG5cbmludGVyZmFjZSBFZGl0YWJsZVBhdGhMYXllclByb3BzIGV4dGVuZHMgUGF0aExheWVyUHJvcHM8YW55PiB7XG4gIHBpY2tpbmdMaW5lV2lkdGhFeHRyYVBpeGVscz86IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAuLi5QYXRoTGF5ZXIuZGVmYXVsdFByb3BzLFxuICBwaWNraW5nTGluZVdpZHRoRXh0cmFQaXhlbHM6IHsgdHlwZTogJ251bWJlcicsIG1pbjogMCwgdmFsdWU6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGl0YWJsZVBhdGhMYXllciBleHRlbmRzIFBhdGhMYXllcjxhbnksIEVkaXRhYmxlUGF0aExheWVyUHJvcHM+IHtcbiAgZ2V0U2hhZGVycygpIHtcbiAgICBjb25zdCBzaGFkZXJzID0gc3VwZXIuZ2V0U2hhZGVycygpO1xuXG4gICAgc2hhZGVycy52cyA9IGluc2VydEJlZm9yZShcbiAgICAgIHNoYWRlcnMudnMsXG4gICAgICAndmVjMyB3aWR0aDsnLFxuICAgICAgYFxuICAgICAgIGlmKHBpY2tpbmdfdUFjdGl2ZSl7XG4gICAgICAgIHdpZHRoUGl4ZWxzLnh5ICs9IHBpY2tpbmdMaW5lV2lkdGhFeHRyYVBpeGVscztcbiAgICAgICB9XG4gICAgICBgXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zaGFkZXJzLFxuICAgICAgaW5qZWN0OiB7XG4gICAgICAgIC4uLihzaGFkZXJzLmluamVjdCB8fCB7fSksXG4gICAgICAgICd2czojZGVjbCc6IChzaGFkZXJzLmluamVjdD8uWyd2czojZGVjbCddIHx8ICcnKS5jb25jYXQoXG4gICAgICAgICAgYHVuaWZvcm0gZmxvYXQgcGlja2luZ0xpbmVXaWR0aEV4dHJhUGl4ZWxzO2BcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGRyYXcocHJvcHMpIHtcbiAgICBzdXBlci5kcmF3KHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgLi4ucHJvcHMudW5pZm9ybXMsXG4gICAgICAgIHBpY2tpbmdMaW5lV2lkdGhFeHRyYVBpeGVsczogdGhpcy5wcm9wcy5waWNraW5nTGluZVdpZHRoRXh0cmFQaXhlbHMsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbkVkaXRhYmxlUGF0aExheWVyLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbkVkaXRhYmxlUGF0aExheWVyLmxheWVyTmFtZSA9ICdFZGl0YWJsZVBhdGhMYXllcic7XG4iXX0=","import { PathLayer, PathLayerProps } from '@deck.gl/layers';\n\nimport { insertBefore } from '../utils';\n\ninterface EditablePathLayerProps extends PathLayerProps {\n pickingLineWidthExtraPixels?: number;\n}\n\nconst defaultProps = {\n ...PathLayer.defaultProps,\n pickingLineWidthExtraPixels: { type: 'number', min: 0, value: Number.MAX_SAFE_INTEGER },\n};\n\nexport default class EditablePathLayer extends PathLayer {\n getShaders() {\n const shaders = super.getShaders();\n\n shaders.vs = insertBefore(\n shaders.vs,\n 'vec3 width;',\n `\n if(picking_uActive){\n widthPixels.xy += pickingLineWidthExtraPixels;\n }\n `\n );\n\n return {\n ...shaders,\n inject: {\n ...(shaders.inject || {}),\n 'vs:#decl': (shaders.inject?.['vs:#decl'] || '').concat(\n `uniform float pickingLineWidthExtraPixels;`\n ),\n },\n };\n }\n\n draw(props) {\n super.draw({\n ...props,\n uniforms: {\n ...props.uniforms,\n pickingLineWidthExtraPixels: this.props.pickingLineWidthExtraPixels,\n },\n });\n }\n}\n\nEditablePathLayer.defaultProps = defaultProps;\nEditablePathLayer.layerName = 'EditablePathLayer';\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toDeckColor = toDeckColor;\nexports.recursivelyTraverseNestedArrays = recursivelyTraverseNestedArrays;\nexports.generatePointsParallelToLinePoints = generatePointsParallelToLinePoints;\nexports.distance2d = distance2d;\nexports.mix = mix;\nexports.nearestPointOnProjectedLine = nearestPointOnProjectedLine;\nexports.insertBefore = insertBefore;\n\nvar _destination = _interopRequireDefault(require(\"@turf/destination\"));\n\nvar _bearing = _interopRequireDefault(require(\"@turf/bearing\"));\n\nvar _pointToLineDistance = _interopRequireDefault(require(\"@turf/point-to-line-distance\"));\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _viewportMercatorProject = _interopRequireDefault(require(\"viewport-mercator-project\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction toDeckColor(color) {\n var defaultColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [255, 0, 0, 255];\n\n if (!Array.isArray(color)) {\n return defaultColor;\n }\n\n return [color[0] * 255, color[1] * 255, color[2] * 255, color[3] * 255];\n} //\n// a GeoJSON helper function that calls the provided function with\n// an argument that is the most deeply-nested array having elements\n// that are arrays of primitives as an argument, e.g.\n//\n// {\n// \"type\": \"MultiPolygon\",\n// \"coordinates\": [\n// [\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n// ],\n// [\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n// ]\n// ]\n// }\n//\n// the function would be called on:\n//\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n//\n// and\n//\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n//\n\n\nfunction recursivelyTraverseNestedArrays(array, prefix, fn) {\n if (!Array.isArray(array[0])) {\n return true;\n }\n\n for (var i = 0; i < array.length; i++) {\n if (recursivelyTraverseNestedArrays(array[i], [].concat(_toConsumableArray(prefix), [i]), fn)) {\n fn(array, prefix);\n break;\n }\n }\n\n return false;\n}\n\nfunction generatePointsParallelToLinePoints(p1, p2, groundCoords) {\n var lineString = {\n type: 'LineString',\n coordinates: [p1, p2]\n };\n var pt = (0, _helpers.point)(groundCoords);\n var ddistance = (0, _pointToLineDistance[\"default\"])(pt, lineString);\n var lineBearing = (0, _bearing[\"default\"])(p1, p2); // Check if current point is to the left or right of line\n // Line from A=(x1,y1) to B=(x2,y2) a point P=(x,y)\n // then (x−x1)(y2−y1)−(y−y1)(x2−x1)\n\n var isPointToLeftOfLine = (groundCoords[0] - p1[0]) * (p2[1] - p1[1]) - (groundCoords[1] - p1[1]) * (p2[0] - p1[0]); // Bearing to draw perpendicular to the line string\n\n var orthogonalBearing = isPointToLeftOfLine < 0 ? lineBearing - 90 : lineBearing - 270; // Get coordinates for the point p3 and p4 which are perpendicular to the lineString\n // Add the distance as the current position moves away from the lineString\n\n var p3 = (0, _destination[\"default\"])(p2, ddistance, orthogonalBearing);\n var p4 = (0, _destination[\"default\"])(p1, ddistance, orthogonalBearing); //@ts-ignore\n\n return [p3.geometry.coordinates, p4.geometry.coordinates];\n}\n\nfunction distance2d(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nfunction mix(a, b, ratio) {\n return b * ratio + a * (1 - ratio);\n}\n\nfunction nearestPointOnProjectedLine(line, inPoint, viewport) {\n var wmViewport = new _viewportMercatorProject[\"default\"](viewport); // Project the line to viewport, then find the nearest point\n\n var coordinates = line.geometry.coordinates;\n var projectedCoords = coordinates.map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 3),\n x = _ref2[0],\n y = _ref2[1],\n _ref2$ = _ref2[2],\n z = _ref2$ === void 0 ? 0 : _ref2$;\n\n return wmViewport.project([x, y, z]);\n }); //@ts-ignore\n\n var _wmViewport$project = wmViewport.project(inPoint.geometry.coordinates),\n _wmViewport$project2 = _slicedToArray(_wmViewport$project, 2),\n x = _wmViewport$project2[0],\n y = _wmViewport$project2[1]; // console.log('projectedCoords', JSON.stringify(projectedCoords));\n\n\n var minDistance = Infinity;\n var minPointInfo = {};\n projectedCoords.forEach(function (_ref3, index) {\n var _ref4 = _slicedToArray(_ref3, 2),\n x2 = _ref4[0],\n y2 = _ref4[1];\n\n if (index === 0) {\n return;\n }\n\n var _projectedCoords = _slicedToArray(projectedCoords[index - 1], 2),\n x1 = _projectedCoords[0],\n y1 = _projectedCoords[1]; // line from projectedCoords[index - 1] to projectedCoords[index]\n // convert to Ax + By + C = 0\n\n\n var A = y1 - y2;\n var B = x2 - x1;\n var C = x1 * y2 - x2 * y1; // https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line\n\n var div = A * A + B * B;\n var distance = Math.abs(A * x + B * y + C) / Math.sqrt(div); // TODO: Check if inside bounds\n\n if (distance < minDistance) {\n minDistance = distance;\n minPointInfo = {\n index: index,\n x0: (B * (B * x - A * y) - A * C) / div,\n y0: (A * (-B * x + A * y) - B * C) / div\n };\n }\n }); //@ts-ignore\n\n var _minPointInfo = minPointInfo,\n index = _minPointInfo.index,\n x0 = _minPointInfo.x0,\n y0 = _minPointInfo.y0;\n\n var _projectedCoords2 = _slicedToArray(projectedCoords[index - 1], 3),\n x1 = _projectedCoords2[0],\n y1 = _projectedCoords2[1],\n _projectedCoords2$ = _projectedCoords2[2],\n z1 = _projectedCoords2$ === void 0 ? 0 : _projectedCoords2$;\n\n var _projectedCoords$inde = _slicedToArray(projectedCoords[index], 3),\n x2 = _projectedCoords$inde[0],\n y2 = _projectedCoords$inde[1],\n _projectedCoords$inde2 = _projectedCoords$inde[2],\n z2 = _projectedCoords$inde2 === void 0 ? 0 : _projectedCoords$inde2; // calculate what ratio of the line we are on to find the proper z\n\n\n var lineLength = distance2d(x1, y1, x2, y2);\n var startToPointLength = distance2d(x1, y1, x0, y0);\n var ratio = startToPointLength / lineLength;\n var z0 = mix(z1, z2, ratio);\n return {\n type: 'Feature',\n geometry: {\n type: 'Point',\n coordinates: wmViewport.unproject([x0, y0, z0])\n },\n properties: {\n // TODO: calculate the distance in proper units\n dist: minDistance,\n index: index - 1\n }\n };\n}\n/**\n * Inserts toInsert string into base string before insertBefore string.\n * @param base A string to insert into.\n * @param insertBefore A sub string in `base` string to insert before.\n * @param toInsert A string to insert.\n * @returns Combined string. `base` string if `insertBefore` string isn't found.\n */\n\n\nfunction insertBefore(base, insertBefore, toInsert) {\n var at = base.indexOf(insertBefore);\n\n if (at < 0) {\n return base;\n }\n\n return base.slice(0, at) + toInsert + base.slice(at);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJuYW1lcyI6WyJ0b0RlY2tDb2xvciIsImNvbG9yIiwiZGVmYXVsdENvbG9yIiwiQXJyYXkiLCJpc0FycmF5IiwicmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyIsImFycmF5IiwicHJlZml4IiwiZm4iLCJpIiwibGVuZ3RoIiwiZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyIsInAxIiwicDIiLCJncm91bmRDb29yZHMiLCJsaW5lU3RyaW5nIiwidHlwZSIsImNvb3JkaW5hdGVzIiwicHQiLCJkZGlzdGFuY2UiLCJsaW5lQmVhcmluZyIsImlzUG9pbnRUb0xlZnRPZkxpbmUiLCJvcnRob2dvbmFsQmVhcmluZyIsInAzIiwicDQiLCJnZW9tZXRyeSIsImRpc3RhbmNlMmQiLCJ4MSIsInkxIiwieDIiLCJ5MiIsImR4IiwiZHkiLCJNYXRoIiwic3FydCIsIm1peCIsImEiLCJiIiwicmF0aW8iLCJuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUiLCJsaW5lIiwiaW5Qb2ludCIsInZpZXdwb3J0Iiwid21WaWV3cG9ydCIsIldlYk1lcmNhdG9yVmlld3BvcnQiLCJwcm9qZWN0ZWRDb29yZHMiLCJtYXAiLCJ4IiwieSIsInoiLCJwcm9qZWN0IiwibWluRGlzdGFuY2UiLCJJbmZpbml0eSIsIm1pblBvaW50SW5mbyIsImZvckVhY2giLCJpbmRleCIsIkEiLCJCIiwiQyIsImRpdiIsImRpc3RhbmNlIiwiYWJzIiwieDAiLCJ5MCIsInoxIiwiejIiLCJsaW5lTGVuZ3RoIiwic3RhcnRUb1BvaW50TGVuZ3RoIiwiejAiLCJ1bnByb2plY3QiLCJwcm9wZXJ0aWVzIiwiZGlzdCIsImluc2VydEJlZm9yZSIsImJhc2UiLCJ0b0luc2VydCIsImF0IiwiaW5kZXhPZiIsInNsaWNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBU0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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VUFBVSxDQUFDMEIsU0FBWCxDQUFxQixDQUFDUCxFQUFELEVBQUtDLEVBQUwsRUFBU0ssRUFBVCxDQUFyQjtBQUZMLEtBRkw7QUFNTEUsSUFBQUEsVUFBVSxFQUFFO0FBQ1Y7QUFDQUMsTUFBQUEsSUFBSSxFQUFFcEIsV0FGSTtBQUdWSSxNQUFBQSxLQUFLLEVBQUVBLEtBQUssR0FBRztBQUhMO0FBTlAsR0FBUDtBQVlEO0FBRUQ7Ozs7Ozs7OztBQU9PLFNBQVNpQixZQUFULENBQXNCQyxJQUF0QixFQUFvQ0QsWUFBcEMsRUFBMERFLFFBQTFELEVBQW9GO0FBQ3pGLE1BQU1DLEVBQUUsR0FBR0YsSUFBSSxDQUFDRyxPQUFMLENBQWFKLFlBQWIsQ0FBWDs7QUFDQSxNQUFJRyxFQUFFLEdBQUcsQ0FBVCxFQUFZO0FBQ1YsV0FBT0YsSUFBUDtBQUNEOztBQUNELFNBQU9BLElBQUksQ0FBQ0ksS0FBTCxDQUFXLENBQVgsRUFBY0YsRUFBZCxJQUFvQkQsUUFBcEIsR0FBK0JELElBQUksQ0FBQ0ksS0FBTCxDQUFXRixFQUFYLENBQXRDO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVzdGluYXRpb24gZnJvbSAnQHR1cmYvZGVzdGluYXRpb24nO1xuaW1wb3J0IGJlYXJpbmcgZnJvbSAnQHR1cmYvYmVhcmluZyc7XG5pbXBvcnQgcG9pbnRUb0xpbmVEaXN0YW5jZSBmcm9tICdAdHVyZi9wb2ludC10by1saW5lLWRpc3RhbmNlJztcbmltcG9ydCB7IHBvaW50IH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQge1xuICBQb3NpdGlvbixcbiAgUG9pbnQsXG4gIExpbmVTdHJpbmcsXG4gIEZlYXR1cmVPZixcbiAgRmVhdHVyZVdpdGhQcm9wcyxcbiAgVmlld3BvcnQsXG59IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgV2ViTWVyY2F0b3JWaWV3cG9ydCBmcm9tICd2aWV3cG9ydC1tZXJjYXRvci1wcm9qZWN0JztcblxuLy8gVE9ETyBlZGl0LW1vZGVzOiBkZWxldGUgYW5kIHVzZSBlZGl0LW1vZGVzL3V0aWxzIGluc3RlYWRcblxuZXhwb3J0IHR5cGUgTmVhcmVzdFBvaW50VHlwZSA9IEZlYXR1cmVXaXRoUHJvcHM8UG9pbnQsIHsgZGlzdDogbnVtYmVyOyBpbmRleDogbnVtYmVyIH0+O1xuXG5leHBvcnQgZnVuY3Rpb24gdG9EZWNrQ29sb3IoXG4gIGNvbG9yPzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCBudW1iZXIsXG4gIGRlZmF1bHRDb2xvcjogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbMjU1LCAwLCAwLCAyNTVdXG4pOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShjb2xvcikpIHtcbiAgICByZXR1cm4gZGVmYXVsdENvbG9yO1xuICB9XG4gIHJldHVybiBbY29sb3JbMF0gKiAyNTUsIGNvbG9yWzFdICogMjU1LCBjb2xvclsyXSAqIDI1NSwgY29sb3JbM10gKiAyNTVdO1xufVxuXG4vL1xuLy8gYSBHZW9KU09OIGhlbHBlciBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBwcm92aWRlZCBmdW5jdGlvbiB3aXRoXG4vLyBhbiBhcmd1bWVudCB0aGF0IGlzIHRoZSBtb3N0IGRlZXBseS1uZXN0ZWQgYXJyYXkgaGF2aW5nIGVsZW1lbnRzXG4vLyB0aGF0IGFyZSBhcnJheXMgb2YgcHJpbWl0aXZlcyBhcyBhbiBhcmd1bWVudCwgZS5nLlxuLy9cbi8vIHtcbi8vICAgXCJ0eXBlXCI6IFwiTXVsdGlQb2x5Z29uXCIsXG4vLyAgIFwiY29vcmRpbmF0ZXNcIjogW1xuLy8gICAgICAgW1xuLy8gICAgICAgICAgIFtbMzAsIDIwXSwgWzQ1LCA0MF0sIFsxMCwgNDBdLCBbMzAsIDIwXV1cbi8vICAgICAgIF0sXG4vLyAgICAgICBbXG4vLyAgICAgICAgICAgW1sxNSwgNV0sIFs0MCwgMTBdLCBbMTAsIDIwXSwgWzUsIDEwXSwgWzE1LCA1XV1cbi8vICAgICAgIF1cbi8vICAgXVxuLy8gfVxuLy9cbi8vIHRoZSBmdW5jdGlvbiB3b3VsZCBiZSBjYWxsZWQgb246XG4vL1xuLy8gW1szMCwgMjBdLCBbNDUsIDQwXSwgWzEwLCA0MF0sIFszMCwgMjBdXVxuLy9cbi8vIGFuZFxuLy9cbi8vIFtbMTUsIDVdLCBbNDAsIDEwXSwgWzEwLCAyMF0sIFs1LCAxMF0sIFsxNSwgNV1dXG4vL1xuZXhwb3J0IGZ1bmN0aW9uIHJlY3Vyc2l2ZWx5VHJhdmVyc2VOZXN0ZWRBcnJheXMoXG4gIGFycmF5OiBBcnJheTxhbnk+LFxuICBwcmVmaXg6IEFycmF5PG51bWJlcj4sXG4gIGZuOiBGdW5jdGlvblxuKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShhcnJheVswXSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHJlY3Vyc2l2ZWx5VHJhdmVyc2VOZXN0ZWRBcnJheXMoYXJyYXlbaV0sIFsuLi5wcmVmaXgsIGldLCBmbikpIHtcbiAgICAgIGZuKGFycmF5LCBwcmVmaXgpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUG9pbnRzUGFyYWxsZWxUb0xpbmVQb2ludHMoXG4gIHAxOiBQb3NpdGlvbixcbiAgcDI6IFBvc2l0aW9uLFxuICBncm91bmRDb29yZHM6IFBvc2l0aW9uXG4pOiBQb3NpdGlvbltdIHtcbiAgY29uc3QgbGluZVN0cmluZzogTGluZVN0cmluZyA9IHtcbiAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgY29vcmRpbmF0ZXM6IFtwMSwgcDJdLFxuICB9O1xuICBjb25zdCBwdCA9IHBvaW50KGdyb3VuZENvb3Jkcyk7XG4gIGNvbnN0IGRkaXN0YW5jZSA9IHBvaW50VG9MaW5lRGlzdGFuY2UocHQsIGxpbmVTdHJpbmcpO1xuICBjb25zdCBsaW5lQmVhcmluZyA9IGJlYXJpbmcocDEsIHAyKTtcblxuICAvLyBDaGVjayBpZiBjdXJyZW50IHBvaW50IGlzIHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IG9mIGxpbmVcbiAgLy8gTGluZSBmcm9tIEE9KHgxLHkxKSB0byBCPSh4Mix5MikgYSBwb2ludCBQPSh4LHkpXG4gIC8vIHRoZW4gKHjiiJJ4MSkoeTLiiJJ5MSniiJIoeeKIknkxKSh4MuKIkngxKVxuICBjb25zdCBpc1BvaW50VG9MZWZ0T2ZMaW5lID1cbiAgICAoZ3JvdW5kQ29vcmRzWzBdIC0gcDFbMF0pICogKHAyWzFdIC0gcDFbMV0pIC0gKGdyb3VuZENvb3Jkc1sxXSAtIHAxWzFdKSAqIChwMlswXSAtIHAxWzBdKTtcblxuICAvLyBCZWFyaW5nIHRvIGRyYXcgcGVycGVuZGljdWxhciB0byB0aGUgbGluZSBzdHJpbmdcbiAgY29uc3Qgb3J0aG9nb25hbEJlYXJpbmcgPSBpc1BvaW50VG9MZWZ0T2ZMaW5lIDwgMCA/IGxpbmVCZWFyaW5nIC0gOTAgOiBsaW5lQmVhcmluZyAtIDI3MDtcblxuICAvLyBHZXQgY29vcmRpbmF0ZXMgZm9yIHRoZSBwb2ludCBwMyBhbmQgcDQgd2hpY2ggYXJlIHBlcnBlbmRpY3VsYXIgdG8gdGhlIGxpbmVTdHJpbmdcbiAgLy8gQWRkIHRoZSBkaXN0YW5jZSBhcyB0aGUgY3VycmVudCBwb3NpdGlvbiBtb3ZlcyBhd2F5IGZyb20gdGhlIGxpbmVTdHJpbmdcbiAgY29uc3QgcDMgPSBkZXN0aW5hdGlvbihwMiwgZGRpc3RhbmNlLCBvcnRob2dvbmFsQmVhcmluZyk7XG4gIGNvbnN0IHA0ID0gZGVzdGluYXRpb24ocDEsIGRkaXN0YW5jZSwgb3J0aG9nb25hbEJlYXJpbmcpO1xuICAvL0B0cy1pZ25vcmVcbiAgcmV0dXJuIFtwMy5nZW9tZXRyeS5jb29yZGluYXRlcywgcDQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2UyZCh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKTogbnVtYmVyIHtcbiAgY29uc3QgZHggPSB4MSAtIHgyO1xuICBjb25zdCBkeSA9IHkxIC0geTI7XG4gIHJldHVybiBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWl4KGE6IG51bWJlciwgYjogbnVtYmVyLCByYXRpbzogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGIgKiByYXRpbyArIGEgKiAoMSAtIHJhdGlvKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lYXJlc3RQb2ludE9uUHJvamVjdGVkTGluZShcbiAgbGluZTogRmVhdHVyZU9mPExpbmVTdHJpbmc+LFxuICBpblBvaW50OiBGZWF0dXJlT2Y8UG9pbnQ+LFxuICB2aWV3cG9ydDogVmlld3BvcnRcbik6IE5lYXJlc3RQb2ludFR5cGUge1xuICBjb25zdCB3bVZpZXdwb3J0ID0gbmV3IFdlYk1lcmNhdG9yVmlld3BvcnQodmlld3BvcnQpO1xuICAvLyBQcm9qZWN0IHRoZSBsaW5lIHRvIHZpZXdwb3J0LCB0aGVuIGZpbmQgdGhlIG5lYXJlc3QgcG9pbnRcbiAgY29uc3QgY29vcmRpbmF0ZXM6IEFycmF5PEFycmF5PG51bWJlcj4+ID0gbGluZS5nZW9tZXRyeS5jb29yZGluYXRlcyBhcyBhbnk7XG4gIGNvbnN0IHByb2plY3RlZENvb3JkcyA9IGNvb3JkaW5hdGVzLm1hcCgoW3gsIHksIHogPSAwXSkgPT4gd21WaWV3cG9ydC5wcm9qZWN0KFt4LCB5LCB6XSkpO1xuICAvL0B0cy1pZ25vcmVcbiAgY29uc3QgW3gsIHldID0gd21WaWV3cG9ydC5wcm9qZWN0KGluUG9pbnQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpO1xuICAvLyBjb25zb2xlLmxvZygncHJvamVjdGVkQ29vcmRzJywgSlNPTi5zdHJpbmdpZnkocHJvamVjdGVkQ29vcmRzKSk7XG5cbiAgbGV0IG1pbkRpc3RhbmNlID0gSW5maW5pdHk7XG4gIGxldCBtaW5Qb2ludEluZm8gPSB7fTtcblxuICBwcm9qZWN0ZWRDb29yZHMuZm9yRWFjaCgoW3gyLCB5Ml0sIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgW3gxLCB5MV0gPSBwcm9qZWN0ZWRDb29yZHNbaW5kZXggLSAxXTtcblxuICAgIC8vIGxpbmUgZnJvbSBwcm9qZWN0ZWRDb29yZHNbaW5kZXggLSAxXSB0byBwcm9qZWN0ZWRDb29yZHNbaW5kZXhdXG4gICAgLy8gY29udmVydCB0byBBeCArIEJ5ICsgQyA9IDBcbiAgICBjb25zdCBBID0geTEgLSB5MjtcbiAgICBjb25zdCBCID0geDIgLSB4MTtcbiAgICBjb25zdCBDID0geDEgKiB5MiAtIHgyICogeTE7XG5cbiAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EaXN0YW5jZV9mcm9tX2FfcG9pbnRfdG9fYV9saW5lXG4gICAgY29uc3QgZGl2ID0gQSAqIEEgKyBCICogQjtcbiAgICBjb25zdCBkaXN0YW5jZSA9IE1hdGguYWJzKEEgKiB4ICsgQiAqIHkgKyBDKSAvIE1hdGguc3FydChkaXYpO1xuXG4gICAgLy8gVE9ETzogQ2hlY2sgaWYgaW5zaWRlIGJvdW5kc1xuXG4gICAgaWYgKGRpc3RhbmNlIDwgbWluRGlzdGFuY2UpIHtcbiAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgICBtaW5Qb2ludEluZm8gPSB7XG4gICAgICAgIGluZGV4LFxuICAgICAgICB4MDogKEIgKiAoQiAqIHggLSBBICogeSkgLSBBICogQykgLyBkaXYsXG4gICAgICAgIHkwOiAoQSAqICgtQiAqIHggKyBBICogeSkgLSBCICogQykgLyBkaXYsXG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG4gIC8vQHRzLWlnbm9yZVxuICBjb25zdCB7IGluZGV4LCB4MCwgeTAgfSA9IG1pblBvaW50SW5mbztcbiAgY29uc3QgW3gxLCB5MSwgejEgPSAwXSA9IHByb2plY3RlZENvb3Jkc1tpbmRleCAtIDFdO1xuICBjb25zdCBbeDIsIHkyLCB6MiA9IDBdID0gcHJvamVjdGVkQ29vcmRzW2luZGV4XTtcblxuICAvLyBjYWxjdWxhdGUgd2hhdCByYXRpbyBvZiB0aGUgbGluZSB3ZSBhcmUgb24gdG8gZmluZCB0aGUgcHJvcGVyIHpcbiAgY29uc3QgbGluZUxlbmd0aCA9IGRpc3RhbmNlMmQoeDEsIHkxLCB4MiwgeTIpO1xuICBjb25zdCBzdGFydFRvUG9pbnRMZW5ndGggPSBkaXN0YW5jZTJkKHgxLCB5MSwgeDAsIHkwKTtcbiAgY29uc3QgcmF0aW8gPSBzdGFydFRvUG9pbnRMZW5ndGggLyBsaW5lTGVuZ3RoO1xuICBjb25zdCB6MCA9IG1peCh6MSwgejIsIHJhdGlvKTtcblxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICBnZW9tZXRyeToge1xuICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgIGNvb3JkaW5hdGVzOiB3bVZpZXdwb3J0LnVucHJvamVjdChbeDAsIHkwLCB6MF0pLFxuICAgIH0sXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLy8gVE9ETzogY2FsY3VsYXRlIHRoZSBkaXN0YW5jZSBpbiBwcm9wZXIgdW5pdHNcbiAgICAgIGRpc3Q6IG1pbkRpc3RhbmNlLFxuICAgICAgaW5kZXg6IGluZGV4IC0gMSxcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIEluc2VydHMgdG9JbnNlcnQgc3RyaW5nIGludG8gYmFzZSBzdHJpbmcgYmVmb3JlIGluc2VydEJlZm9yZSBzdHJpbmcuXG4gKiBAcGFyYW0gYmFzZSBBIHN0cmluZyB0byBpbnNlcnQgaW50by5cbiAqIEBwYXJhbSBpbnNlcnRCZWZvcmUgQSBzdWIgc3RyaW5nIGluIGBiYXNlYCBzdHJpbmcgdG8gaW5zZXJ0IGJlZm9yZS5cbiAqIEBwYXJhbSB0b0luc2VydCBBIHN0cmluZyB0byBpbnNlcnQuXG4gKiBAcmV0dXJucyBDb21iaW5lZCBzdHJpbmcuIGBiYXNlYCBzdHJpbmcgaWYgYGluc2VydEJlZm9yZWAgc3RyaW5nIGlzbid0IGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QmVmb3JlKGJhc2U6IHN0cmluZywgaW5zZXJ0QmVmb3JlOiBzdHJpbmcsIHRvSW5zZXJ0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBhdCA9IGJhc2UuaW5kZXhPZihpbnNlcnRCZWZvcmUpO1xuICBpZiAoYXQgPCAwKSB7XG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cbiAgcmV0dXJuIGJhc2Uuc2xpY2UoMCwgYXQpICsgdG9JbnNlcnQgKyBiYXNlLnNsaWNlKGF0KTtcbn1cbiJdfQ==","import destination from '@turf/destination';\nimport bearing from '@turf/bearing';\nimport pointToLineDistance from '@turf/point-to-line-distance';\nimport { point } from '@turf/helpers';\nimport {\n Position,\n Point,\n LineString,\n FeatureOf,\n FeatureWithProps,\n Viewport,\n} from '@nebula.gl/edit-modes';\nimport WebMercatorViewport from 'viewport-mercator-project';\n\n// TODO edit-modes: delete and use edit-modes/utils instead\n\nexport type NearestPointType = FeatureWithProps;\n\nexport function toDeckColor(\n color?: [number, number, number, number] | number,\n defaultColor: [number, number, number, number] = [255, 0, 0, 255]\n): [number, number, number, number] {\n if (!Array.isArray(color)) {\n return defaultColor;\n }\n return [color[0] * 255, color[1] * 255, color[2] * 255, color[3] * 255];\n}\n\n//\n// a GeoJSON helper function that calls the provided function with\n// an argument that is the most deeply-nested array having elements\n// that are arrays of primitives as an argument, e.g.\n//\n// {\n// \"type\": \"MultiPolygon\",\n// \"coordinates\": [\n// [\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n// ],\n// [\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n// ]\n// ]\n// }\n//\n// the function would be called on:\n//\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n//\n// and\n//\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n//\nexport function recursivelyTraverseNestedArrays(\n array: Array,\n prefix: Array,\n fn: Function\n) {\n if (!Array.isArray(array[0])) {\n return true;\n }\n for (let i = 0; i < array.length; i++) {\n if (recursivelyTraverseNestedArrays(array[i], [...prefix, i], fn)) {\n fn(array, prefix);\n break;\n }\n }\n return false;\n}\n\nexport function generatePointsParallelToLinePoints(\n p1: Position,\n p2: Position,\n groundCoords: Position\n): Position[] {\n const lineString: LineString = {\n type: 'LineString',\n coordinates: [p1, p2],\n };\n const pt = point(groundCoords);\n const ddistance = pointToLineDistance(pt, lineString);\n const lineBearing = bearing(p1, p2);\n\n // Check if current point is to the left or right of line\n // Line from A=(x1,y1) to B=(x2,y2) a point P=(x,y)\n // then (x−x1)(y2−y1)−(y−y1)(x2−x1)\n const isPointToLeftOfLine =\n (groundCoords[0] - p1[0]) * (p2[1] - p1[1]) - (groundCoords[1] - p1[1]) * (p2[0] - p1[0]);\n\n // Bearing to draw perpendicular to the line string\n const orthogonalBearing = isPointToLeftOfLine < 0 ? lineBearing - 90 : lineBearing - 270;\n\n // Get coordinates for the point p3 and p4 which are perpendicular to the lineString\n // Add the distance as the current position moves away from the lineString\n const p3 = destination(p2, ddistance, orthogonalBearing);\n const p4 = destination(p1, ddistance, orthogonalBearing);\n //@ts-ignore\n return [p3.geometry.coordinates, p4.geometry.coordinates];\n}\n\nexport function distance2d(x1: number, y1: number, x2: number, y2: number): number {\n const dx = x1 - x2;\n const dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nexport function mix(a: number, b: number, ratio: number): number {\n return b * ratio + a * (1 - ratio);\n}\n\nexport function nearestPointOnProjectedLine(\n line: FeatureOf,\n inPoint: FeatureOf,\n viewport: Viewport\n): NearestPointType {\n const wmViewport = new WebMercatorViewport(viewport);\n // Project the line to viewport, then find the nearest point\n const coordinates: Array> = line.geometry.coordinates as any;\n const projectedCoords = coordinates.map(([x, y, z = 0]) => wmViewport.project([x, y, z]));\n //@ts-ignore\n const [x, y] = wmViewport.project(inPoint.geometry.coordinates);\n // console.log('projectedCoords', JSON.stringify(projectedCoords));\n\n let minDistance = Infinity;\n let minPointInfo = {};\n\n projectedCoords.forEach(([x2, y2], index) => {\n if (index === 0) {\n return;\n }\n\n const [x1, y1] = projectedCoords[index - 1];\n\n // line from projectedCoords[index - 1] to projectedCoords[index]\n // convert to Ax + By + C = 0\n const A = y1 - y2;\n const B = x2 - x1;\n const C = x1 * y2 - x2 * y1;\n\n // https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line\n const div = A * A + B * B;\n const distance = Math.abs(A * x + B * y + C) / Math.sqrt(div);\n\n // TODO: Check if inside bounds\n\n if (distance < minDistance) {\n minDistance = distance;\n minPointInfo = {\n index,\n x0: (B * (B * x - A * y) - A * C) / div,\n y0: (A * (-B * x + A * y) - B * C) / div,\n };\n }\n });\n //@ts-ignore\n const { index, x0, y0 } = minPointInfo;\n const [x1, y1, z1 = 0] = projectedCoords[index - 1];\n const [x2, y2, z2 = 0] = projectedCoords[index];\n\n // calculate what ratio of the line we are on to find the proper z\n const lineLength = distance2d(x1, y1, x2, y2);\n const startToPointLength = distance2d(x1, y1, x0, y0);\n const ratio = startToPointLength / lineLength;\n const z0 = mix(z1, z2, ratio);\n\n return {\n type: 'Feature',\n geometry: {\n type: 'Point',\n coordinates: wmViewport.unproject([x0, y0, z0]),\n },\n properties: {\n // TODO: calculate the distance in proper units\n dist: minDistance,\n index: index - 1,\n },\n };\n}\n\n/**\n * Inserts toInsert string into base string before insertBefore string.\n * @param base A string to insert into.\n * @param insertBefore A sub string in `base` string to insert before.\n * @param toInsert A string to insert.\n * @returns Combined string. `base` string if `insertBefore` string isn't found.\n */\nexport function insertBefore(base: string, insertBefore: string, toInsert: string): string {\n const at = base.indexOf(insertBefore);\n if (at < 0) {\n return base;\n }\n return base.slice(0, at) + toInsert + base.slice(at);\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _geoLayers = require(\"@deck.gl/geo-layers\");\n\nvar _editModes = require(\"@nebula.gl/edit-modes\");\n\nvar _h3Js = require(\"h3-js\");\n\nvar _constants = require(\"../constants\");\n\nvar _editableGeojsonLayer = _interopRequireDefault(require(\"./editable-geojson-layer\"));\n\nvar _editableLayer = _interopRequireDefault(require(\"./editable-layer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DEFAULT_EDIT_MODE = _editModes.ViewMode;\nvar DEFAULT_H3_RESOLUTION = 9;\nvar EMPTY_FEATURE_COLLECTION = {\n type: 'FeatureCollection',\n features: []\n};\n\nvar defaultProps = _objectSpread({\n mode: DEFAULT_EDIT_MODE\n}, _editableGeojsonLayer[\"default\"].defaultProps, {\n // h3 layer\n data: [],\n selectedIndexes: [],\n filled: false,\n stroked: true,\n lineWidthScale: _constants.PROJECTED_PIXEL_SIZE_MULTIPLIER,\n lineWidthMinPixels: 1,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n lineWidthUnits: 'pixels',\n getHexagons: function getHexagons(d) {\n return d.hexIds;\n },\n getEditedCluster: function getEditedCluster(updatedHexagons, existingCluster) {\n if (existingCluster) {\n return _objectSpread({}, existingCluster, {\n hexIds: updatedHexagons\n });\n }\n\n return {\n hexIds: updatedHexagons\n };\n },\n resolution: DEFAULT_H3_RESOLUTION\n});\n\nvar EditableH3ClusterLayer = /*#__PURE__*/function (_EditableLayer) {\n _inherits(EditableH3ClusterLayer, _EditableLayer);\n\n var _super = _createSuper(EditableH3ClusterLayer);\n\n function EditableH3ClusterLayer() {\n _classCallCheck(this, EditableH3ClusterLayer);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(EditableH3ClusterLayer, [{\n key: \"initializeState\",\n value: function initializeState() {\n _get(_getPrototypeOf(EditableH3ClusterLayer.prototype), \"initializeState\", this).call(this);\n\n this.setState({\n tentativeHexagonIDs: []\n });\n } // convert array of (lng, lat) coords to cluster of hexes\n\n }, {\n key: \"getDerivedHexagonIDs\",\n value: function getDerivedHexagonIDs(coords) {\n return (0, _h3Js.polyfill)(coords, this.props.resolution, true);\n } // convert pair of (lng, lat) coords into single hex\n\n }, {\n key: \"getDerivedHexagonID\",\n value: function getDerivedHexagonID(coords) {\n return (0, _h3Js.geoToH3)(coords[1], coords[0], this.props.resolution);\n }\n }, {\n key: \"renderLayers\",\n value: function renderLayers() {\n var _this = this;\n\n var layers = [new _editableGeojsonLayer[\"default\"](this.getSubLayerProps({\n id: 'editable-geojson',\n mode: this.props.mode,\n data: EMPTY_FEATURE_COLLECTION,\n selectedFeatureIndexes: [],\n onEdit: function onEdit(editAction) {\n var editType = editAction.editType,\n editContext = editAction.editContext;\n\n switch (editType) {\n case 'updateTentativeFeature':\n // tentative feature updates, updated on every pointer move\n if (editContext.feature.geometry.type === 'Polygon') {\n var coords = editContext.feature.geometry.coordinates;\n\n var hexIDs = _this.getDerivedHexagonIDs(coords);\n\n _this.setState({\n tentativeHexagonIDs: hexIDs\n });\n } else if (editContext.feature.geometry.type === 'Point') {\n var _coords = editContext.feature.geometry.coordinates;\n\n var hexID = _this.getDerivedHexagonID(_coords);\n\n _this.setState({\n tentativeHexagonIDs: [hexID]\n });\n }\n\n break;\n\n case 'addFeature':\n var _updatedData = _toConsumableArray(_this.props.data);\n\n var modeConfig = _this.props.modeConfig;\n\n if (!modeConfig || !modeConfig.booleanOperation) {\n // add new h3 cluster\n _updatedData.push(_this.props.getEditedCluster(_this.state.tentativeHexagonIDs, null));\n } else if (_this.props.selectedIndexes.length !== 1) {\n // eslint-disable-next-line no-console,no-undef\n console.warn('booleanOperation only supported for single cluster selection');\n } else {\n // they're affecting a selected cluster\n var finalHexagonIDs;\n var committedHexagonIDs = new Set(_this.getSelectedHexIDs());\n var tentativeHexagonIDs = new Set(_this.state.tentativeHexagonIDs);\n\n switch (modeConfig.booleanOperation) {\n case 'union':\n default:\n finalHexagonIDs = _toConsumableArray(new Set([].concat(_toConsumableArray(committedHexagonIDs), _toConsumableArray(tentativeHexagonIDs))));\n break;\n\n case 'intersection':\n finalHexagonIDs = _toConsumableArray(committedHexagonIDs).filter(function (hexID) {\n return tentativeHexagonIDs.has(hexID);\n });\n break;\n\n case 'difference':\n finalHexagonIDs = _toConsumableArray(committedHexagonIDs).filter(function (hexID) {\n return !tentativeHexagonIDs.has(hexID);\n });\n break;\n }\n\n var selectedIndex = _this.props.selectedIndexes[0];\n var _existingCluster = _this.props.data[selectedIndex];\n _updatedData[selectedIndex] = _this.props.getEditedCluster(finalHexagonIDs, _existingCluster);\n }\n\n _this.setState({\n tentativeHexagonIDs: []\n });\n\n _this.props.onEdit({\n updatedData: _updatedData\n });\n\n break;\n\n default:\n break;\n }\n }\n })), new _geoLayers.H3ClusterLayer(this.getSubLayerProps({\n id: 'hexagons',\n data: this.props.data,\n getHexagons: this.props.getHexagons\n })), new _geoLayers.H3ClusterLayer(this.getSubLayerProps({\n id: 'tentative-hexagons',\n data: [{\n hexIds: this.state.tentativeHexagonIDs\n }],\n getHexagons: function getHexagons(d) {\n return d.hexIds;\n }\n }))];\n return layers;\n } // because data is an array of hexagon data, we take the cumulative of all selected indexes,\n // using props.getHexagons to support multiple data types\n\n }, {\n key: \"getSelectedHexIDs\",\n value: function getSelectedHexIDs() {\n var _this2 = this;\n\n var cumulativeHexIDs = [];\n this.props.selectedIndexes.forEach(function (index) {\n var selectedCluster = _this2.props.data[index];\n\n var hexIDs = _this2.props.getHexagons(selectedCluster);\n\n cumulativeHexIDs = cumulativeHexIDs.concat(hexIDs);\n });\n return cumulativeHexIDs;\n }\n }, {\n key: \"getCursor\",\n value: function getCursor(_ref) {\n var isDragging = _ref.isDragging;\n\n var _ref2 = this.state || {},\n cursor = _ref2.cursor;\n\n if (!cursor) {\n // default cursor\n cursor = isDragging ? 'grabbing' : 'grab';\n }\n\n return cursor;\n }\n }]);\n\n return EditableH3ClusterLayer;\n}(_editableLayer[\"default\"]);\n\nexports[\"default\"] = EditableH3ClusterLayer;\n\n_defineProperty(EditableH3ClusterLayer, \"layerName\", 'EditableH3ClusterLayer');\n\n_defineProperty(EditableH3ClusterLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWRpdGFibGUtaDMtY2x1c3Rlci1sYXllci50cyJdLCJuYW1lcyI6WyJERUZBVUxUX0VESVRfTU9ERSIsIlZpZXdNb2RlIiwiREVGQVVMVF9IM19SRVNPTFVUSU9OIiwiRU1QVFlfRkVBVFVSRV9DT0xMRUNUSU9OIiwidHlwZSIsImZlYXR1cmVzIiwiZGVmYXVsdFByb3BzIiwibW9kZSIsIkVkaXRhYmxlR2VvSnNvbkxheWVyIiwiZGF0YSIsInNlbGVjdGVkSW5kZXhlcyIsImZpbGxlZCIsInN0cm9rZWQiLCJsaW5lV2lkdGhTY2FsZSIsIlBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIiLCJsaW5lV2lkdGhNaW5QaXhlbHMiLCJsaW5lV2lkdGhNYXhQaXhlbHMiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwibGluZVdpZHRoVW5pdHMiLCJnZXRIZXhhZ29ucyIsImQiLCJoZXhJZHMiLCJnZXRFZGl0ZWRDbHVzdGVyIiwidXBkYXRlZEhleGFnb25zIiwiZXhpc3RpbmdDbHVzdGVyIiwicmVzb2x1dGlvbiIsIkVkaXRhYmxlSDNDbHVzdGVyTGF5ZXIiLCJzZXRTdGF0ZSIsInRlbnRhdGl2ZUhleGFnb25JRHMiLCJjb29yZHMiLCJwcm9wcyIsImxheWVycyIsImdldFN1YkxheWVyUHJvcHMiLCJpZCIsInNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJvbkVkaXQiLCJlZGl0QWN0aW9uIiwiZWRpdFR5cGUiLCJlZGl0Q29udGV4dCIsImZlYXR1cmUiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiaGV4SURzIiwiZ2V0RGVyaXZlZEhleGFnb25JRHMiLCJoZXhJRCIsImdldERlcml2ZWRIZXhhZ29uSUQiLCJ1cGRhdGVkRGF0YSIsIm1vZGVDb25maWciLCJib29sZWFuT3BlcmF0aW9uIiwicHVzaCIsInN0YXRlIiwibGVuZ3RoIiwiY29uc29sZSIsIndhcm4iLCJmaW5hbEhleGFnb25JRHMiLCJjb21taXR0ZWRIZXhhZ29uSURzIiwiU2V0IiwiZ2V0U2VsZWN0ZWRIZXhJRHMiLCJmaWx0ZXIiLCJoYXMiLCJzZWxlY3RlZEluZGV4IiwiSDNDbHVzdGVyTGF5ZXIiLCJjdW11bGF0aXZlSGV4SURzIiwiZm9yRWFjaCIsImluZGV4Iiwic2VsZWN0ZWRDbHVzdGVyIiwiY29uY2F0IiwiaXNEcmFnZ2luZyIsImN1cnNvciIsIkVkaXRhYmxlTGF5ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsaUJBQWlCLEdBQUdDLG1CQUExQjtBQUNBLElBQU1DLHFCQUFxQixHQUFHLENBQTlCO0FBQ0EsSUFBTUMsd0JBQXdCLEdBQUc7QUFDL0JDLEVBQUFBLElBQUksRUFBRSxtQkFEeUI7QUFFL0JDLEVBQUFBLFFBQVEsRUFBRTtBQUZxQixDQUFqQzs7QUFxQkEsSUFBTUMsWUFBOEM7QUFDbERDLEVBQUFBLElBQUksRUFBRVA7QUFENEMsR0FHL0NRLGlDQUFxQkYsWUFIMEI7QUFLbEQ7QUFDQUcsRUFBQUEsSUFBSSxFQUFFLEVBTjRDO0FBT2xEQyxFQUFBQSxlQUFlLEVBQUUsRUFQaUM7QUFRbERDLEVBQUFBLE1BQU0sRUFBRSxLQVIwQztBQVNsREMsRUFBQUEsT0FBTyxFQUFFLElBVHlDO0FBVWxEQyxFQUFBQSxjQUFjLEVBQUVDLDBDQVZrQztBQVdsREMsRUFBQUEsa0JBQWtCLEVBQUUsQ0FYOEI7QUFZbERDLEVBQUFBLGtCQUFrQixFQUFFQyxNQUFNLENBQUNDLGdCQVp1QjtBQWFsREMsRUFBQUEsY0FBYyxFQUFFLFFBYmtDO0FBY2xEQyxFQUFBQSxXQUFXLEVBQUUscUJBQUNDLENBQUQ7QUFBQSxXQUFPQSxDQUFDLENBQUNDLE1BQVQ7QUFBQSxHQWRxQztBQWVsREMsRUFBQUEsZ0JBQWdCLEVBQUUsMEJBQUNDLGVBQUQsRUFBa0JDLGVBQWxCLEVBQXNDO0FBQ3RELFFBQUlB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LENBQWdCd0QsS0FBaEIsQ0FBeEI7O0FBQ0EsWUFBTXRCLE1BQU0sR0FBRyxNQUFJLENBQUNaLEtBQUwsQ0FBV1gsV0FBWCxDQUF1QjhDLGVBQXZCLENBQWY7O0FBQ0FILFFBQUFBLGdCQUFnQixHQUFHQSxnQkFBZ0IsQ0FBQ0ksTUFBakIsQ0FBd0J4QixNQUF4QixDQUFuQjtBQUNELE9BSkQ7QUFLQSxhQUFPb0IsZ0JBQVA7QUFDRDs7O29DQUVrRDtBQUFBLFVBQXZDSyxVQUF1QyxRQUF2Q0EsVUFBdUM7O0FBQUEsa0JBQ2hDLEtBQUtqQixLQUFMLElBQWMsRUFEa0I7QUFBQSxVQUMzQ2tCLE1BRDJDLFNBQzNDQSxNQUQyQzs7QUFFakQsVUFBSSxDQUFDQSxNQUFMLEVBQWE7QUFDWDtBQUNBQSxRQUFBQSxNQUFNLEdBQUdELFVBQVUsR0FBRyxVQUFILEdBQWdCLE1BQW5DO0FBQ0Q7O0FBQ0QsYUFBT0MsTUFBUDtBQUNEOzs7O0VBekppREMseUI7Ozs7Z0JBQS9CM0Msc0IsZUFJQSx3Qjs7Z0JBSkFBLHNCLGtCQUtHckIsWSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG5pbXBvcnQgeyBIM0NsdXN0ZXJMYXllciB9IGZyb20gJ0BkZWNrLmdsL2dlby1sYXllcnMnO1xuaW1wb3J0IHsgVmlld01vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHsgcG9seWZpbGwsIGdlb1RvSDMgfSBmcm9tICdoMy1qcyc7XG5pbXBvcnQgeyBQUk9KRUNURURfUElYRUxfU0laRV9NVUxUSVBMSUVSIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBFZGl0YWJsZUdlb0pzb25MYXllciBmcm9tICcuL2VkaXRhYmxlLWdlb2pzb24tbGF5ZXInO1xuaW1wb3J0IEVkaXRhYmxlTGF5ZXIsIHsgRWRpdGFibGVMYXllclByb3BzIH0gZnJvbSAnLi9lZGl0YWJsZS1sYXllcic7XG5cbmNvbnN0IERFRkFVTFRfRURJVF9NT0RFID0gVmlld01vZGU7XG5jb25zdCBERUZBVUxUX0gzX1JFU09MVVRJT04gPSA5O1xuY29uc3QgRU1QVFlfRkVBVFVSRV9DT0xMRUNUSU9OID0ge1xuICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICBmZWF0dXJlczogW10sXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRhYmxlSDNDbHVzdGVyTGF5ZXJQcm9wczxEPiBleHRlbmRzIEVkaXRhYmxlTGF5ZXJQcm9wczxEPiB7XG4gIHJlc29sdXRpb24/OiBudW1iZXI7XG4gIG1vZGU/OiBhbnk7XG4gIG1vZGVDb25maWc/OiBhbnk7XG4gIHNlbGVjdGVkSW5kZXhlcz86IG51bWJlcltdO1xuICBnZXRFZGl0ZWRDbHVzdGVyPzogKHVwZGF0ZWRIZXhhZ29uczogYW55W10sIGV4aXN0aW5nQ2x1c3RlcjogYW55KSA9PiBhbnk7XG4gIGdldEhleGFnb25zPzogKGQpID0+IG51bWJlcltdO1xuICBvbkVkaXQ/OiAodXBkYXRlZERhdGE/LCBlZGl0VHlwZT86IHN0cmluZywgZmVhdHVyZUluZGV4ZXM/OiBudW1iZXJbXSwgZWRpdENvbnRleHQ/KSA9PiB2b2lkO1xuICBmaWxsZWQ/OiBib29sZWFuO1xuICBzdHJva2VkPzogYm9vbGVhbjtcbiAgbGluZVdpZHRoU2NhbGU/OiBudW1iZXI7XG4gIGxpbmVXaWR0aE1pblBpeGVscz86IG51bWJlcjtcbiAgbGluZVdpZHRoTWF4UGl4ZWxzPzogbnVtYmVyO1xuICBsaW5lV2lkdGhVbml0cz86IHN0cmluZztcbn1cblxuY29uc3QgZGVmYXVsdFByb3BzOiBFZGl0YWJsZUgzQ2x1c3RlckxheWVyUHJvcHM8YW55PiA9IHtcbiAgbW9kZTogREVGQVVMVF9FRElUX01PREUsXG5cbiAgLi4uRWRpdGFibGVHZW9Kc29uTGF5ZXIuZGVmYXVsdFByb3BzLFxuXG4gIC8vIGgzIGxheWVyXG4gIGRhdGE6IFtdLFxuICBzZWxlY3RlZEluZGV4ZXM6IFtdLFxuICBmaWxsZWQ6IGZhbHNlLFxuICBzdHJva2VkOiB0cnVlLFxuICBsaW5lV2lkdGhTY2FsZTogUFJPSkVDVEVEX1BJWEVMX1NJWkVfTVVMVElQTElFUixcbiAgbGluZVdpZHRoTWluUGl4ZWxzOiAxLFxuICBsaW5lV2lkdGhNYXhQaXhlbHM6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICBsaW5lV2lkdGhVbml0czogJ3BpeGVscycsXG4gIGdldEhleGFnb25zOiAoZCkgPT4gZC5oZXhJZHMsXG4gIGdldEVkaXRlZENsdXN0ZXI6ICh1cGRhdGVkSGV4YWdvbnMsIGV4aXN0aW5nQ2x1c3RlcikgPT4ge1xuICAgIGlmIChleGlzdGluZ0NsdXN0ZXIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmV4aXN0aW5nQ2x1c3RlcixcbiAgICAgICAgaGV4SWRzOiB1cGRhdGVkSGV4YWdvbnMsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaGV4SWRzOiB1cGRhdGVkSGV4YWdvbnMsXG4gICAgfTtcbiAgfSxcbiAgcmVzb2x1dGlvbjogREVGQVVMVF9IM19SRVNPTFVUSU9OLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRpdGFibGVIM0NsdXN0ZXJMYXllciBleHRlbmRzIEVkaXRhYmxlTGF5ZXI8XG4gIGFueSxcbiAgRWRpdGFibGVIM0NsdXN0ZXJMYXllclByb3BzPGFueT5cbj4ge1xuICBzdGF0aWMgbGF5ZXJOYW1lID0gJ0VkaXRhYmxlSDNDbHVzdGVyTGF5ZXInO1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICBzdXBlci5pbml0aWFsaXplU3RhdGUoKTtcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgdGVudGF0aXZlSGV4YWdvbklEczogW10sXG4gICAgfSk7XG4gIH1cblxuICAvLyBjb252ZXJ0IGFycmF5IG9mIChsbmcsIGxhdCkgY29vcmRzIHRvIGNsdXN0ZXIgb2YgaGV4ZXNcbiAgZ2V0RGVyaXZlZEhleGFnb25JRHMoY29vcmRzKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGNvb3JkcywgdGhpcy5wcm9wcy5yZXNvbHV0aW9uLCB0cnVlKTtcbiAgfVxuXG4gIC8vIGNvbnZlcnQgcGFpciBvZiAobG5nLCBsYXQpIGNvb3JkcyBpbnRvIHNpbmdsZSBoZXhcbiAgZ2V0RGVyaXZlZEhleGFnb25JRChjb29yZHMpIHtcbiAgICByZXR1cm4gZ2VvVG9IMyhjb29yZHNbMV0sIGNvb3Jkc1swXSwgdGhpcy5wcm9wcy5yZXNvbHV0aW9uKTtcbiAgfVxuXG4gIHJlbmRlckxheWVycygpIHtcbiAgICBjb25zdCBsYXllcnM6IGFueSA9IFtcbiAgICAgIG5ldyBFZGl0YWJsZUdlb0pzb25MYXllcihcbiAgICAgICAgdGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgICAgICBpZDogJ2VkaXRhYmxlLWdlb2pzb24nLFxuXG4gICAgICAgICAgbW9kZTogdGhpcy5wcm9wcy5tb2RlLFxuICAgICAgICAgIGRhdGE6IEVNUFRZX0ZFQVRVUkVfQ09MTEVDVElPTixcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleGVzOiBbXSxcblxuICAgICAgICAgIG9uRWRpdDogKGVkaXRBY3Rpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZWRpdFR5cGUsIGVkaXRDb250ZXh0IH0gPSBlZGl0QWN0aW9uO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKGVkaXRUeXBlKSB7XG4gICAgICAgICAgICAgIGNhc2UgJ3VwZGF0ZVRlbnRhdGl2ZUZlYXR1cmUnOlxuICAgICAgICAgICAgICAgIC8vIHRlbnRhdGl2ZSBmZWF0dXJlIHVwZGF0ZXMsIHVwZGF0ZWQgb24gZXZlcnkgcG9pbnRlciBtb3ZlXG4gICAgICAgICAgICAgICAgaWYgKGVkaXRDb250ZXh0LmZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjb29yZHMgPSBlZGl0Q29udGV4dC5mZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICAgICAgICAgICAgICAgICAgY29uc3QgaGV4SURzID0gdGhpcy5nZXREZXJpdmVkSGV4YWdvbklEcyhjb29yZHMpO1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgdGVudGF0aXZlSGV4YWdvbklEczogaGV4SURzIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWRpdENvbnRleHQuZmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSAnUG9pbnQnKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjb29yZHMgPSBlZGl0Q29udGV4dC5mZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICAgICAgICAgICAgICAgICAgY29uc3QgaGV4SUQgPSB0aGlzLmdldERlcml2ZWRIZXhhZ29uSUQoY29vcmRzKTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHRlbnRhdGl2ZUhleGFnb25JRHM6IFtoZXhJRF0gfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlICdhZGRGZWF0dXJlJzpcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IFsuLi50aGlzLnByb3BzLmRhdGFdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgbW9kZUNvbmZpZyB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICAgICAgICAgIGlmICghbW9kZUNvbmZpZyB8fCAhbW9kZUNvbmZpZy5ib29sZWFuT3BlcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAvLyBhZGQgbmV3IGgzIGNsdXN0ZXJcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWREYXRhLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuZ2V0RWRpdGVkQ2x1c3Rlcih0aGlzLnN0YXRlLnRlbnRhdGl2ZUhleGFnb25JRHMsIG51bGwpXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5zZWxlY3RlZEluZGV4ZXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdib29sZWFuT3BlcmF0aW9uIG9ubHkgc3VwcG9ydGVkIGZvciBzaW5nbGUgY2x1c3RlciBzZWxlY3Rpb24nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgLy8gdGhleSdyZSBhZmZlY3RpbmcgYSBzZWxlY3RlZCBjbHVzdGVyXG4gICAgICAgICAgICAgICAgICBsZXQgZmluYWxIZXhhZ29uSURzO1xuICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWl0dGVkSGV4YWdvbklEcyA9IG5ldyBTZXQodGhpcy5nZXRTZWxlY3RlZEhleElEcygpKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbnRhdGl2ZUhleGFnb25JRHMgPSBuZXcgU2V0KHRoaXMuc3RhdGUudGVudGF0aXZlSGV4YWdvbklEcyk7XG5cbiAgICAgICAgICAgICAgICAgIHN3aXRjaCAobW9kZUNvbmZpZy5ib29sZWFuT3BlcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICBmaW5hbEhleGFnb25JRHMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5uZXcgU2V0KFsuLi5jb21taXR0ZWRIZXhhZ29uSURzLCAuLi50ZW50YXRpdmVIZXhhZ29uSURzXSksXG4gICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW50ZXJzZWN0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgICBmaW5hbEhleGFnb25JRHMgPSBbLi4uY29tbWl0dGVkSGV4YWdvbklEc10uZmlsdGVyKChoZXhJRDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGVudGF0aXZlSGV4YWdvbklEcy5oYXMoaGV4SUQpXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZGlmZmVyZW5jZSc6XG4gICAgICAgICAgICAgICAgICAgICAgZmluYWxIZXhhZ29uSURzID0gWy4uLmNvbW1pdHRlZEhleGFnb25JRHNdLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIChoZXhJRDogc3RyaW5nKSA9PiAhdGVudGF0aXZlSGV4YWdvbklEcy5oYXMoaGV4SUQpXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMucHJvcHMuc2VsZWN0ZWRJbmRleGVzWzBdO1xuICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdDbHVzdGVyID0gdGhpcy5wcm9wcy5kYXRhW3NlbGVjdGVkSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgdXBkYXRlZERhdGFbc2VsZWN0ZWRJbmRleF0gPSB0aGlzLnByb3BzLmdldEVkaXRlZENsdXN0ZXIoXG4gICAgICAgICAgICAgICAgICAgIGZpbmFsSGV4YWdvbklEcyxcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdDbHVzdGVyXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgdGVudGF0aXZlSGV4YWdvbklEczogW10sXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uRWRpdCh7IHVwZGF0ZWREYXRhIH0pO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICksXG5cbiAgICAgIG5ldyBIM0NsdXN0ZXJMYXllcihcbiAgICAgICAgdGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgICAgICBpZDogJ2hleGFnb25zJyxcbiAgICAgICAgICBkYXRhOiB0aGlzLnByb3BzLmRhdGEsXG4gICAgICAgICAgZ2V0SGV4YWdvbnM6IHRoaXMucHJvcHMuZ2V0SGV4YWdvbnMsXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgbmV3IEgzQ2x1c3RlckxheWVyKFxuICAgICAgICB0aGlzLmdldFN1YkxheWVyUHJvcHMoe1xuICAgICAgICAgIGlkOiAndGVudGF0aXZlLWhleGFnb25zJyxcbiAgICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGhleElkczogdGhpcy5zdGF0ZS50ZW50YXRpdmVIZXhhZ29uSURzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGdldEhleGFnb25zOiAoZCkgPT4gZC5oZXhJZHMsXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIF07XG4gICAgcmV0dXJuIGxheWVycztcbiAgfVxuXG4gIC8vIGJlY2F1c2UgZGF0YSBpcyBhbiBhcnJheSBvZiBoZXhhZ29uIGRhdGEsIHdlIHRha2UgdGhlIGN1bXVsYXRpdmUgb2YgYWxsIHNlbGVjdGVkIGluZGV4ZXMsXG4gIC8vIHVzaW5nIHByb3BzLmdldEhleGFnb25zIHRvIHN1cHBvcnQgbXVsdGlwbGUgZGF0YSB0eXBlc1xuICBnZXRTZWxlY3RlZEhleElEcygpIHtcbiAgICBsZXQgY3VtdWxhdGl2ZUhleElEcyA9IFtdO1xuICAgIHRoaXMucHJvcHMuc2VsZWN0ZWRJbmRleGVzLmZvckVhY2goKGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZENsdXN0ZXIgPSB0aGlzLnByb3BzLmRhdGFbaW5kZXhdO1xuICAgICAgY29uc3QgaGV4SURzID0gdGhpcy5wcm9wcy5nZXRIZXhhZ29ucyhzZWxlY3RlZENsdXN0ZXIpO1xuICAgICAgY3VtdWxhdGl2ZUhleElEcyA9IGN1bXVsYXRpdmVIZXhJRHMuY29uY2F0KGhleElEcyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGN1bXVsYXRpdmVIZXhJRHM7XG4gIH1cblxuICBnZXRDdXJzb3IoeyBpc0RyYWdnaW5nIH06IHsgaXNEcmFnZ2luZzogYm9vbGVhbiB9KSB7XG4gICAgbGV0IHsgY3Vyc29yIH0gPSB0aGlzLnN0YXRlIHx8IHt9O1xuICAgIGlmICghY3Vyc29yKSB7XG4gICAgICAvLyBkZWZhdWx0IGN1cnNvclxuICAgICAgY3Vyc29yID0gaXNEcmFnZ2luZyA/ICdncmFiYmluZycgOiAnZ3JhYic7XG4gICAgfVxuICAgIHJldHVybiBjdXJzb3I7XG4gIH1cbn1cbiJdfQ==","/* eslint-env browser */\n\nimport { H3ClusterLayer } from '@deck.gl/geo-layers';\nimport { ViewMode } from '@nebula.gl/edit-modes';\nimport { polyfill, geoToH3 } from 'h3-js';\nimport { PROJECTED_PIXEL_SIZE_MULTIPLIER } from '../constants';\nimport EditableGeoJsonLayer from './editable-geojson-layer';\nimport EditableLayer, { EditableLayerProps } from './editable-layer';\n\nconst DEFAULT_EDIT_MODE = ViewMode;\nconst DEFAULT_H3_RESOLUTION = 9;\nconst EMPTY_FEATURE_COLLECTION = {\n type: 'FeatureCollection',\n features: [],\n};\n\nexport interface EditableH3ClusterLayerProps extends EditableLayerProps {\n resolution?: number;\n mode?: any;\n modeConfig?: any;\n selectedIndexes?: number[];\n getEditedCluster?: (updatedHexagons: any[], existingCluster: any) => any;\n getHexagons?: (d) => number[];\n onEdit?: (updatedData?, editType?: string, featureIndexes?: number[], editContext?) => void;\n filled?: boolean;\n stroked?: boolean;\n lineWidthScale?: number;\n lineWidthMinPixels?: number;\n lineWidthMaxPixels?: number;\n lineWidthUnits?: string;\n}\n\nconst defaultProps: EditableH3ClusterLayerProps = {\n mode: DEFAULT_EDIT_MODE,\n\n ...EditableGeoJsonLayer.defaultProps,\n\n // h3 layer\n data: [],\n selectedIndexes: [],\n filled: false,\n stroked: true,\n lineWidthScale: PROJECTED_PIXEL_SIZE_MULTIPLIER,\n lineWidthMinPixels: 1,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n lineWidthUnits: 'pixels',\n getHexagons: (d) => d.hexIds,\n getEditedCluster: (updatedHexagons, existingCluster) => {\n if (existingCluster) {\n return {\n ...existingCluster,\n hexIds: updatedHexagons,\n };\n }\n return {\n hexIds: updatedHexagons,\n };\n },\n resolution: DEFAULT_H3_RESOLUTION,\n};\n\nexport default class EditableH3ClusterLayer extends EditableLayer<\n any,\n EditableH3ClusterLayerProps\n> {\n static layerName = 'EditableH3ClusterLayer';\n static defaultProps = defaultProps;\n\n initializeState() {\n super.initializeState();\n\n this.setState({\n tentativeHexagonIDs: [],\n });\n }\n\n // convert array of (lng, lat) coords to cluster of hexes\n getDerivedHexagonIDs(coords) {\n return polyfill(coords, this.props.resolution, true);\n }\n\n // convert pair of (lng, lat) coords into single hex\n getDerivedHexagonID(coords) {\n return geoToH3(coords[1], coords[0], this.props.resolution);\n }\n\n renderLayers() {\n const layers: any = [\n new EditableGeoJsonLayer(\n this.getSubLayerProps({\n id: 'editable-geojson',\n\n mode: this.props.mode,\n data: EMPTY_FEATURE_COLLECTION,\n selectedFeatureIndexes: [],\n\n onEdit: (editAction) => {\n const { editType, editContext } = editAction;\n\n switch (editType) {\n case 'updateTentativeFeature':\n // tentative feature updates, updated on every pointer move\n if (editContext.feature.geometry.type === 'Polygon') {\n const coords = editContext.feature.geometry.coordinates;\n const hexIDs = this.getDerivedHexagonIDs(coords);\n\n this.setState({ tentativeHexagonIDs: hexIDs });\n } else if (editContext.feature.geometry.type === 'Point') {\n const coords = editContext.feature.geometry.coordinates;\n const hexID = this.getDerivedHexagonID(coords);\n\n this.setState({ tentativeHexagonIDs: [hexID] });\n }\n break;\n case 'addFeature':\n const updatedData = [...this.props.data];\n const { modeConfig } = this.props;\n\n if (!modeConfig || !modeConfig.booleanOperation) {\n // add new h3 cluster\n updatedData.push(\n this.props.getEditedCluster(this.state.tentativeHexagonIDs, null)\n );\n } else if (this.props.selectedIndexes.length !== 1) {\n // eslint-disable-next-line no-console,no-undef\n console.warn('booleanOperation only supported for single cluster selection');\n } else {\n // they're affecting a selected cluster\n let finalHexagonIDs;\n const committedHexagonIDs = new Set(this.getSelectedHexIDs());\n const tentativeHexagonIDs = new Set(this.state.tentativeHexagonIDs);\n\n switch (modeConfig.booleanOperation) {\n case 'union':\n default:\n finalHexagonIDs = [\n ...new Set([...committedHexagonIDs, ...tentativeHexagonIDs]),\n ];\n break;\n case 'intersection':\n finalHexagonIDs = [...committedHexagonIDs].filter((hexID: string) =>\n tentativeHexagonIDs.has(hexID)\n );\n break;\n case 'difference':\n finalHexagonIDs = [...committedHexagonIDs].filter(\n (hexID: string) => !tentativeHexagonIDs.has(hexID)\n );\n break;\n }\n\n const selectedIndex = this.props.selectedIndexes[0];\n const existingCluster = this.props.data[selectedIndex];\n updatedData[selectedIndex] = this.props.getEditedCluster(\n finalHexagonIDs,\n existingCluster\n );\n }\n\n this.setState({\n tentativeHexagonIDs: [],\n });\n\n this.props.onEdit({ updatedData });\n\n break;\n default:\n break;\n }\n },\n })\n ),\n\n new H3ClusterLayer(\n this.getSubLayerProps({\n id: 'hexagons',\n data: this.props.data,\n getHexagons: this.props.getHexagons,\n })\n ),\n new H3ClusterLayer(\n this.getSubLayerProps({\n id: 'tentative-hexagons',\n data: [\n {\n hexIds: this.state.tentativeHexagonIDs,\n },\n ],\n getHexagons: (d) => d.hexIds,\n })\n ),\n ];\n return layers;\n }\n\n // because data is an array of hexagon data, we take the cumulative of all selected indexes,\n // using props.getHexagons to support multiple data types\n getSelectedHexIDs() {\n let cumulativeHexIDs = [];\n this.props.selectedIndexes.forEach((index) => {\n const selectedCluster = this.props.data[index];\n const hexIDs = this.props.getHexagons(selectedCluster);\n cumulativeHexIDs = cumulativeHexIDs.concat(hexIDs);\n });\n return cumulativeHexIDs;\n }\n\n getCursor({ isDragging }: { isDragging: boolean }) {\n let { cursor } = this.state || {};\n if (!cursor) {\n // default cursor\n cursor = isDragging ? 'grabbing' : 'grab';\n }\n return cursor;\n }\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { h3SetToMultiPolygon } from 'h3-js';\nimport { createIterable } from '@deck.gl/core';\nimport { default as H3HexagonLayer } from './h3-hexagon-layer';\nimport GeoCellLayer from '../geo-cell-layer/GeoCellLayer';\nconst defaultProps = {\n getHexagons: {\n type: 'accessor',\n value: d => d.hexagons\n }\n};\nexport default class H3ClusterLayer extends GeoCellLayer {\n initializeState() {\n H3HexagonLayer._checkH3Lib();\n }\n\n updateState({\n props,\n changeFlags\n }) {\n if (changeFlags.dataChanged || changeFlags.updateTriggersChanged && changeFlags.updateTriggersChanged.getHexagons) {\n const {\n data,\n getHexagons\n } = props;\n const polygons = [];\n const {\n iterable,\n objectInfo\n } = createIterable(data);\n\n for (const object of iterable) {\n objectInfo.index++;\n const hexagons = getHexagons(object, objectInfo);\n const multiPolygon = h3SetToMultiPolygon(hexagons, true);\n\n for (const polygon of multiPolygon) {\n polygons.push(this.getSubLayerRow({\n polygon\n }, object, objectInfo.index));\n }\n }\n\n this.setState({\n polygons\n });\n }\n }\n\n indexToBounds() {\n const {\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth\n } = this.props;\n return {\n data: this.state.polygons,\n getPolygon: d => d.polygon,\n getElevation: this.getSubLayerAccessor(getElevation),\n getFillColor: this.getSubLayerAccessor(getFillColor),\n getLineColor: this.getSubLayerAccessor(getLineColor),\n getLineWidth: this.getSubLayerAccessor(getLineWidth)\n };\n }\n\n}\n\n_defineProperty(H3ClusterLayer, \"layerName\", 'H3ClusterLayer');\n\n_defineProperty(H3ClusterLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=h3-cluster-layer.js.map","import {h3SetToMultiPolygon, H3IndexInput} from 'h3-js';\n\nimport {AccessorFunction, createIterable, UpdateParameters, DefaultProps} from '@deck.gl/core';\nimport {default as H3HexagonLayer} from './h3-hexagon-layer';\nimport GeoCellLayer, {GeoCellLayerProps} from '../geo-cell-layer/GeoCellLayer';\n\nconst defaultProps: DefaultProps = {\n getHexagons: {type: 'accessor', value: d => d.hexagons}\n};\n\n/** All properties supported by H3ClusterLayer. */\nexport type H3ClusterLayerProps = _H3ClusterLayerProps &\n GeoCellLayerProps;\n\n/** Properties added by H3ClusterLayer. */\ntype _H3ClusterLayerProps = {\n /**\n * Called for each data object to retrieve the hexagon identifiers.\n *\n * By default, it reads `hexagons` property of data object.\n */\n getHexagons?: AccessorFunction;\n};\n\nexport default class H3ClusterLayer extends GeoCellLayer<\n DataT,\n Required<_H3ClusterLayerProps> & ExtraProps\n> {\n static layerName = 'H3ClusterLayer';\n static defaultProps = defaultProps;\n\n initializeState(): void {\n H3HexagonLayer._checkH3Lib();\n }\n\n updateState({props, changeFlags}: UpdateParameters): void {\n if (\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged && changeFlags.updateTriggersChanged.getHexagons)\n ) {\n const {data, getHexagons} = props;\n const polygons: {polygon: number[][][]}[] = [];\n\n const {iterable, objectInfo} = createIterable(data);\n for (const object of iterable) {\n objectInfo.index++;\n const hexagons = getHexagons(object, objectInfo);\n const multiPolygon = h3SetToMultiPolygon(hexagons, true);\n\n for (const polygon of multiPolygon) {\n polygons.push(this.getSubLayerRow({polygon}, object, objectInfo.index));\n }\n }\n\n this.setState({polygons});\n }\n }\n\n indexToBounds(): Partial {\n const {getElevation, getFillColor, getLineColor, getLineWidth} = this.props;\n\n return {\n data: this.state.polygons,\n getPolygon: d => d.polygon,\n\n getElevation: this.getSubLayerAccessor(getElevation),\n getFillColor: this.getSubLayerAccessor(getFillColor),\n getLineColor: this.getSubLayerAccessor(getLineColor),\n getLineWidth: this.getSubLayerAccessor(getLineWidth)\n };\n }\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","var libh3 = function (libh3) {\n libh3 = libh3 || {};\n var Module = typeof libh3 !== \"undefined\" ? libh3 : {};\n var moduleOverrides = {};\n var key;\n\n for (key in Module) {\n if (Module.hasOwnProperty(key)) {\n moduleOverrides[key] = Module[key];\n }\n }\n\n var arguments_ = [];\n var scriptDirectory = \"\";\n\n function locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n\n return scriptDirectory + path;\n }\n\n var readAsync;\n\n {\n if (document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n\n readAsync = function readAsync(url, onload, onerror) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n\n xhr.onload = function xhr_onload() {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n\n var data = tryParseAsDataURI(url);\n\n if (data) {\n onload(data.buffer);\n return;\n }\n\n onerror();\n };\n\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n\n for (key in moduleOverrides) {\n if (moduleOverrides.hasOwnProperty(key)) {\n Module[key] = moduleOverrides[key];\n }\n }\n\n moduleOverrides = null;\n if (Module[\"arguments\"]) { arguments_ = Module[\"arguments\"]; }\n\n var tempRet0 = 0;\n\n var setTempRet0 = function (value) {\n tempRet0 = value;\n };\n\n var getTempRet0 = function () {\n return tempRet0;\n };\n\n var GLOBAL_BASE = 8;\n\n function setValue(ptr, value, type, noSafe) {\n type = type || \"i8\";\n if (type.charAt(type.length - 1) === \"*\") { type = \"i32\"; }\n\n switch (type) {\n case \"i1\":\n HEAP8[ptr >> 0] = value;\n break;\n\n case \"i8\":\n HEAP8[ptr >> 0] = value;\n break;\n\n case \"i16\":\n HEAP16[ptr >> 1] = value;\n break;\n\n case \"i32\":\n HEAP32[ptr >> 2] = value;\n break;\n\n case \"i64\":\n tempI64 = [value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= +1 ? tempDouble > +0 ? (Math_min(+Math_floor(tempDouble / +4294967296), +4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / +4294967296) >>> 0 : 0)], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];\n break;\n\n case \"float\":\n HEAPF32[ptr >> 2] = value;\n break;\n\n case \"double\":\n HEAPF64[ptr >> 3] = value;\n break;\n\n default:\n abort(\"invalid type for setValue: \" + type);\n }\n }\n\n function getValue(ptr, type, noSafe) {\n type = type || \"i8\";\n if (type.charAt(type.length - 1) === \"*\") { type = \"i32\"; }\n\n switch (type) {\n case \"i1\":\n return HEAP8[ptr >> 0];\n\n case \"i8\":\n return HEAP8[ptr >> 0];\n\n case \"i16\":\n return HEAP16[ptr >> 1];\n\n case \"i32\":\n return HEAP32[ptr >> 2];\n\n case \"i64\":\n return HEAP32[ptr >> 2];\n\n case \"float\":\n return HEAPF32[ptr >> 2];\n\n case \"double\":\n return HEAPF64[ptr >> 3];\n\n default:\n abort(\"invalid type for getValue: \" + type);\n }\n\n return null;\n }\n\n var ABORT = false;\n\n function assert(condition, text) {\n if (!condition) {\n abort(\"Assertion failed: \" + text);\n }\n }\n\n function getCFunc(ident) {\n var func = Module[\"_\" + ident];\n assert(func, \"Cannot call unknown function \" + ident + \", make sure it is exported\");\n return func;\n }\n\n function ccall(ident, returnType, argTypes, args, opts) {\n var toC = {\n \"string\": function (str) {\n var ret = 0;\n\n if (str !== null && str !== undefined && str !== 0) {\n var len = (str.length << 2) + 1;\n ret = stackAlloc(len);\n stringToUTF8(str, ret, len);\n }\n\n return ret;\n },\n \"array\": function (arr) {\n var ret = stackAlloc(arr.length);\n writeArrayToMemory(arr, ret);\n return ret;\n }\n };\n\n function convertReturnValue(ret) {\n if (returnType === \"string\") { return UTF8ToString(ret); }\n if (returnType === \"boolean\") { return Boolean(ret); }\n return ret;\n }\n\n var func = getCFunc(ident);\n var cArgs = [];\n var stack = 0;\n\n if (args) {\n for (var i = 0; i < args.length; i++) {\n var converter = toC[argTypes[i]];\n\n if (converter) {\n if (stack === 0) { stack = stackSave(); }\n cArgs[i] = converter(args[i]);\n } else {\n cArgs[i] = args[i];\n }\n }\n }\n\n var ret = func.apply(null, cArgs);\n ret = convertReturnValue(ret);\n if (stack !== 0) { stackRestore(stack); }\n return ret;\n }\n\n function cwrap(ident, returnType, argTypes, opts) {\n argTypes = argTypes || [];\n var numericArgs = argTypes.every(function (type) {\n return type === \"number\";\n });\n var numericRet = returnType !== \"string\";\n\n if (numericRet && numericArgs && !opts) {\n return getCFunc(ident);\n }\n\n return function () {\n return ccall(ident, returnType, argTypes, arguments, opts);\n };\n }\n var UTF8Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf8\") : undefined;\n\n function UTF8ArrayToString(u8Array, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n\n while (u8Array[endPtr] && !(endPtr >= endIdx)) { ++endPtr; }\n\n if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {\n return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));\n } else {\n var str = \"\";\n\n while (idx < endPtr) {\n var u0 = u8Array[idx++];\n\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n\n var u1 = u8Array[idx++] & 63;\n\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n\n var u2 = u8Array[idx++] & 63;\n\n if ((u0 & 240) == 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u8Array[idx++] & 63;\n }\n\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n }\n\n return str;\n }\n\n function UTF8ToString(ptr, maxBytesToRead) {\n return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n }\n\n function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) { return 0; }\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n\n if (u <= 127) {\n if (outIdx >= endIdx) { break; }\n outU8Array[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) { break; }\n outU8Array[outIdx++] = 192 | u >> 6;\n outU8Array[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) { break; }\n outU8Array[outIdx++] = 224 | u >> 12;\n outU8Array[outIdx++] = 128 | u >> 6 & 63;\n outU8Array[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) { break; }\n outU8Array[outIdx++] = 240 | u >> 18;\n outU8Array[outIdx++] = 128 | u >> 12 & 63;\n outU8Array[outIdx++] = 128 | u >> 6 & 63;\n outU8Array[outIdx++] = 128 | u & 63;\n }\n }\n\n outU8Array[outIdx] = 0;\n return outIdx - startIdx;\n }\n\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n\n var UTF16Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf-16le\") : undefined;\n\n function writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n }\n\n function alignUp(x, multiple) {\n if (x % multiple > 0) {\n x += multiple - x % multiple;\n }\n\n return x;\n }\n\n var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\n function updateGlobalBufferAndViews(buf) {\n buffer = buf;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(buf);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(buf);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(buf);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(buf);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(buf);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(buf);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(buf);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(buf);\n }\n\n var DYNAMIC_BASE = 5266928,\n DYNAMICTOP_PTR = 24016;\n var INITIAL_TOTAL_MEMORY = Module[\"TOTAL_MEMORY\"] || 33554432;\n\n if (Module[\"buffer\"]) {\n buffer = Module[\"buffer\"];\n } else {\n buffer = new ArrayBuffer(INITIAL_TOTAL_MEMORY);\n }\n\n INITIAL_TOTAL_MEMORY = buffer.byteLength;\n updateGlobalBufferAndViews(buffer);\n HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;\n\n function callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n var callback = callbacks.shift();\n\n if (typeof callback == \"function\") {\n callback();\n continue;\n }\n\n var func = callback.func;\n\n if (typeof func === \"number\") {\n if (callback.arg === undefined) {\n Module[\"dynCall_v\"](func);\n } else {\n Module[\"dynCall_vi\"](func, callback.arg);\n }\n } else {\n func(callback.arg === undefined ? null : callback.arg);\n }\n }\n }\n\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATPOSTRUN__ = [];\n\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") { Module[\"preRun\"] = [Module[\"preRun\"]]; }\n\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n\n callRuntimeCallbacks(__ATPRERUN__);\n }\n\n function initRuntime() {\n callRuntimeCallbacks(__ATINIT__);\n }\n\n function preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n }\n\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") { Module[\"postRun\"] = [Module[\"postRun\"]]; }\n\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n\n var Math_abs = Math.abs;\n var Math_ceil = Math.ceil;\n var Math_floor = Math.floor;\n var Math_min = Math.min;\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n\n function addRunDependency(id) {\n runDependencies++;\n\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n }\n\n function removeRunDependency(id) {\n runDependencies--;\n\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n\n Module[\"preloadedImages\"] = {};\n Module[\"preloadedAudios\"] = {};\n var memoryInitializer = null;\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n\n function isDataURI(filename) {\n return String.prototype.startsWith ? filename.startsWith(dataURIPrefix) : filename.indexOf(dataURIPrefix) === 0;\n }\n\n var tempDouble;\n var tempI64;\n memoryInitializer = \"data:application/octet-stream;base64,AAAAAAAAAAACAAAAAwAAAAEAAAAFAAAABAAAAAYAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAABAAAAAMAAAAGAAAABQAAAAIAAAAAAAAAAgAAAAMAAAABAAAABAAAAAYAAAAAAAAABQAAAAMAAAAGAAAABAAAAAUAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAABAAAABQAAAAIAAAAAAAAAAQAAAAMAAAAGAAAABAAAAAYAAAAAAAAABQAAAAIAAAABAAAABAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABgAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAABgAAAAAAAAADAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAUAAAAEAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAEAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAACAAAABAAAAAMAAAAIAAAA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AAAAAAAAAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAQAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAADAAAABQAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAABQAAAAUAAAAAAAAAAAAAAP////8BAAAAAAAAAAMAAAAEAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAABQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAQAAAP//////////AQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAIAAAAAAAAAAAAAAAEAAAACAAAABgAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAoAAAACAAAAAAAAAAAAAAABAAAAAQAAAAUAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAIAAAAAAAAAAAAAAAEAAAADAAAABwAAAAYAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAJAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAgAAAAAAAAAAAAAAAQAAAAQAAAAIAAAACgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAACAAAAAAAAAAAAAAABAAAACwAAAA8AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAgAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAACAAAAAAAAAAAAAAABAAAADAAAABAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAEAAAAKAAAAEwAAAAgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAgAAAAAAAAAAAAAAAQAAAA0AAAARAAAADQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAAAAAAAAAAAAAEAAAAOAAAAEgAAAA8AAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABMAAAACAAAAAAAAAAAAAAABAAAA//////////8TAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABIAAAAAAAAAGAAAAAAAAAAhAAAAAAAAAB4AAAAAAAAAIAAAAAMAAAAxAAAAAQAAADAAAAADAAAAMgAAAAMAAAAIAAAAAAAAAAUAAAAFAAAACgAAAAUAAAAWAAAAAAAAABAAAAAAAAAAEgAAAAAAAAApAAAAAQAAACEAAAAAAAAAHgAAAAAAAAAEAAAAAAAAAAAAAAAFAAAAAgAAAAUAAAAPAAAAAQAAAAgAAAAAAAAABQAAAAUAAAAfAAAAAQAAABYAAAAAAAAAEAAAAAAAAAACAAAAAAAAAAYAAAAAAAAADgAAAAAAAAAKAAAAAAAAAAsAAAAAAAAAEQAAAAMAAAAYAAAAAQAAABcAAAADAAAAGQAAAAMAAAAAAAAAAAAAAAEAAAAFAAAACQAAAAUAAAAFAAAAAAAAAAIAAAAAAAAABgAAAAAAAAASAAAAAQAAAAoAAAAAAAAACwAAAAAAAAAEAAAAAQAAAAMAAAAFAAAABwAAAAUAAAAIAAAAAQAAAAAAAAAAAAAAAQAAAAUAAAAQAAAAAQAAAAUAAAAAAAAAAgAAAAAAAAAHAAAAAAAAABUAAAAAAAAAJgAAAAAAAAAJAAAAAAAAABMAAAAAAAAAIgAAAAMAAAAOAAAAAQAAABQAAAADAAAAJAAAAAMAAAADAAAAAAAAAA0AAAAFAAAAHQAAAAUAAAABAAAAAAAAAAcAAAAAAAAAFQAAAAAAAAAGAAAA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74auECWhw7+cjSACjzniv8CZ+wUhN9I/1uGEKzup6z+/GYr/04bavwmkNHp7xee/F2NMZVAA1z+82s+x2BLivwr2ytbJ9em/KwEH1sMS1r8yp/2LhTfev81i5RexJsy/BlIKPVwR5b95Wyu0/Qjnv5DjoT7YYcs/nBhKZ6zrwr8wRYS7Nebuv3OW6geh+Lu/SLrixebL3j+pcyymN9Xrv8rHIFfWehZAMBwUdlo0DECTUc17EOb2PxpVB1SWChdAzjbhb9pTDUDQhmdvECX5P9FlMKCC9+g/IIAzjELgE0DajDngMv8GQFhWDmDPjNs/y1guLh96EkAxPi8k7DIEQJCc4URlhRhA3eLKKLwkEECqpNAyTBD/P6xpjXcDiwVAFtl//cQm4z+Ibt3XKiYTQM7mCLUb3QdAoM1t8yVv7D8aLZv2Nk8UQEAJPV5nQwxAtSsfTCoE9z9TPjXLXIIWQBVanC5W9AtAYM3d7Adm9j++5mQz1FoWQBUThyaVBghAwH5muQsV7T89Q1qv82MUQJoWGOfNuBdAzrkClkmwDkDQjKq77t37Py+g0dtitsE/ZwAMTwVPEUBojepluNwBQGYbtuW+t9w/HNWIJs6MEkDTNuQUSlgEQKxktPP5TcQ/ixbLB8JjEUCwuWjXMQYCQAS/R09FkRdAowpiZjhhDkB7LmlczD/7P01iQmhhsAVAnrtTwDy84z/Z6jfQ2TgTQChOCXMnWwpAhrW3daoz8z/HYJvVPI4VQLT3ik5FcA5Angi7LOZd+z+NNVzDy5gXQBXdvVTFUA1AYNMgOeYe+T8+qHXGCwkXQKQTOKwa5AJA8gFVoEMW0T+FwzJyttIRQAEAAAD/////BwAAAP////8xAAAA/////1cBAAD/////YQkAAP////+nQQAA/////5HLAQD/////95AMAP/////B9lcAAAAAAAAAAAAAAAAAAgAAAP////8OAAAA/////2IAAAD/////rgIAAP/////CEgAA/////06DAAD/////IpcDAP/////uIRkA/////4LtrwAAAAAAAAAAAAAAAAAAAAAAAgAAAP//////////AQAAAAMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////wIAAAD//////////wEAAAAAAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA/////////////////////wEAAAD///////////////8CAAAA////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD///////////////////////////////8CAAAA////////////////AQAAAP////////////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAAAQAAAP//////////AgAAAP//////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAAEAAAD//////////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAQAAAAEAAAACAAAAAgAAAAAAAAAFAAAABQAAAAAAAAACAAAAAgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAABAAAAAgAAAAIAAAACAAAAAAAAAAUAAAAGAAAAAAAAAAIAAAACAAAAAwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAgAAAAEAAAADAAAAAgAAAAIAAAAAAAAABQAAAAcAAAAAAAAAAgAAAAIAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAACAAAAAQAAAAQAAAACAAAAAgAAAAAAAAAFAAAACAAAAAAAAAACAAAAAgAAAAMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAACAAAAAAAAAAUAAAAJAAAAAAAAAAIAAAACAAAAAwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAIAAAACAAAAAAAAAAMAAAAOAAAAAgAAAAAAAAACAAAAAwAAAAAAAAAAAAAAAgAAAAIAAAADAAAABgAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAgAAAAIAAAAAAAAAAwAAAAoAAAACAAAAAAAAAAIAAAADAAAAAQAAAAAAAAACAAAAAgAAAAMAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAgAAAAAAAAADAAAACwAAAAIAAAAAAAAAAgAAAAMAAAACAAAAAAAAAAIAAAACAAAAAwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAACAAAAAAAAAAMAAAAMAAAAAgAAAAAAAAACAAAAAwAAAAMAAAAAAAAAAgAAAAIAAAADAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAIAAAAAAAAAAwAAAA0AAAACAAAAAAAAAAIAAAADAAAABAAAAAAAAAACAAAAAgAAAAMAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAgAAAAAAAAADAAAABgAAAAIAAAAAAAAAAgAAAAMAAAAPAAAAAAAAAAIAAAACAAAAAwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAIAAAACAAAAAAAAAAMAAAAHAAAAAgAAAAAAAAACAAAAAwAAABAAAAAAAAAAAgAAAAIAAAADAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAIAAAAAAAAAAwAAAAgAAAACAAAAAAAAAAIAAAADAAAAEQAAAAAAAAACAAAAAgAAAAMAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAACAAAAAgAAAAAAAAADAAAACQAAAAIAAAAAAAAAAgAAAAMAAAASAAAAAAAAAAIAAAACAAAAAwAAAA4AAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAACAAAAAAAAAAMAAAAFAAAAAgAAAAAAAAACAAAAAwAAABMAAAAAAAAAAgAAAAIAAAADAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAABAAEAAAEBAAAAAAABAAAAAQAAAAEAAQAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAAAAQAAAAMAAAAOAAAABgAAAAsAAAACAAAABwAAAAEAAAAYAAAABQAAAAoAAAABAAAABgAAAAAAAAAmAAAABwAAAAwAAAADAAAACAAAAAIAAAAxAAAACQAAAA4AAAAAAAAABQAAAAQAAAA6AAAACAAAAA0AAAAEAAAACQAAAAMAAAA/AAAACwAAAAYAAAAPAAAACgAAABAAAABIAAAADAAAAAcAAAAQAAAACwAAABEAAABTAAAACgAAAAUAAAATAAAADgAAAA8AAABhAAAADQAAAAgAAAARAAAADAAAABIAAABrAAAADgAAAAkAAAASAAAADQAAABMAAAB1AAAADwAAABMAAAARAAAAEgAAABAAAAAHAAAABwAAAAEAAAACAAAABAAAAAMAAAAAAAAAAAAAAAcAAAADAAAAAQAAAAIAAAAFAAAABAAAAAAAAAAAAAAAYWxnb3MuYwBfcG9seWZpbGxJbnRlcm5hbABhZGphY2VudEZhY2VEaXJbdG1wRmlqay5mYWNlXVtmaWprLmZhY2VdID09IEtJAGZhY2VpamsuYwBfZmFjZUlqa1BlbnRUb0dlb0JvdW5kYXJ5AGFkamFjZW50RmFjZURpcltjZW50ZXJJSksuZmFjZV1bZmFjZTJdID09IEtJAF9mYWNlSWprVG9HZW9Cb3VuZGFyeQBwb2x5Z29uLT5uZXh0ID09IE5VTEwAbGlua2VkR2VvLmMAYWRkTmV3TGlua2VkUG9seWdvbgBuZXh0ICE9IE5VTEwAbG9vcCAhPSBOVUxMAGFkZE5ld0xpbmtlZExvb3AAcG9seWdvbi0+Zmlyc3QgPT0gTlVMTABhZGRMaW5rZWRMb29wAGNvb3JkICE9IE5VTEwAYWRkTGlua2VkQ29vcmQAbG9vcC0+Zmlyc3QgPT0gTlVMTABpbm5lckxvb3BzICE9IE5VTEwAbm9ybWFsaXplTXVsdGlQb2x5Z29uAGJib3hlcyAhPSBOVUxMAGNhbmRpZGF0ZXMgIT0gTlVMTABmaW5kUG9seWdvbkZvckhvbGUAY2FuZGlkYXRlQkJveGVzICE9IE5VTEwAcmV2RGlyICE9IElOVkFMSURfRElHSVQAbG9jYWxpai5jAGgzVG9Mb2NhbElqawBiYXNlQ2VsbCAhPSBvcmlnaW5CYXNlQ2VsbAAhKG9yaWdpbk9uUGVudCAmJiBpbmRleE9uUGVudCkAcGVudGFnb25Sb3RhdGlvbnMgPj0gMABkaXJlY3Rpb25Sb3RhdGlvbnMgPj0gMABiYXNlQ2VsbCA9PSBvcmlnaW5CYXNlQ2VsbABiYXNlQ2VsbCAhPSBJTlZBTElEX0JBU0VfQ0VMTABsb2NhbElqa1RvSDMAIV9pc0Jhc2VDZWxsUGVudGFnb24oYmFzZUNlbGwpAGJhc2VDZWxsUm90YXRpb25zID49IDAAd2l0aGluUGVudGFnb25Sb3RhdGlvbnMgPj0gMABncmFwaC0+YnVja2V0cyAhPSBOVUxMAHZlcnRleEdyYXBoLmMAaW5pdFZlcnRleEdyYXBoAG5vZGUgIT0gTlVMTABhZGRWZXJ0ZXhOb2Rl\";\n var tempDoublePtr = 24032;\n\n function demangle(func) {\n return func;\n }\n\n function demangleAll(text) {\n var regex = /\\b__Z[\\w\\d_]+/g;\n return text.replace(regex, function (x) {\n var y = demangle(x);\n return x === y ? x : y + \" [\" + x + \"]\";\n });\n }\n\n function jsStackTrace() {\n var err = new Error();\n\n if (!err.stack) {\n try {\n throw new Error(0);\n } catch (e) {\n err = e;\n }\n\n if (!err.stack) {\n return \"(no stack trace available)\";\n }\n }\n\n return err.stack.toString();\n }\n\n function stackTrace() {\n var js = jsStackTrace();\n if (Module[\"extraStackTrace\"]) { js += \"\\n\" + Module[\"extraStackTrace\"](); }\n return demangleAll(js);\n }\n\n function ___assert_fail(condition, filename, line, func) {\n abort(\"Assertion failed: \" + UTF8ToString(condition) + \", at: \" + [filename ? UTF8ToString(filename) : \"unknown filename\", line, func ? UTF8ToString(func) : \"unknown function\"]);\n }\n\n function _emscripten_get_heap_size() {\n return HEAP8.length;\n }\n\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.set(HEAPU8.subarray(src, src + num), dest);\n }\n\n function ___setErrNo(value) {\n if (Module[\"___errno_location\"]) { HEAP32[Module[\"___errno_location\"]() >> 2] = value; }\n return value;\n }\n\n function abortOnCannotGrowMemory(requestedSize) {\n abort(\"OOM\");\n }\n\n function emscripten_realloc_buffer(size) {\n try {\n var newBuffer = new ArrayBuffer(size);\n if (newBuffer.byteLength != size) { return; }\n new Int8Array(newBuffer).set(HEAP8);\n\n _emscripten_replace_memory(newBuffer);\n\n updateGlobalBufferAndViews(newBuffer);\n return 1;\n } catch (e) {}\n }\n\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = _emscripten_get_heap_size();\n\n var PAGE_MULTIPLE = 16777216;\n var LIMIT = 2147483648 - PAGE_MULTIPLE;\n\n if (requestedSize > LIMIT) {\n return false;\n }\n\n var MIN_TOTAL_MEMORY = 16777216;\n var newSize = Math.max(oldSize, MIN_TOTAL_MEMORY);\n\n while (newSize < requestedSize) {\n if (newSize <= 536870912) {\n newSize = alignUp(2 * newSize, PAGE_MULTIPLE);\n } else {\n newSize = Math.min(alignUp((3 * newSize + 2147483648) / 4, PAGE_MULTIPLE), LIMIT);\n }\n }\n\n var replacement = emscripten_realloc_buffer(newSize);\n\n if (!replacement) {\n return false;\n }\n\n return true;\n }\n\n var decodeBase64 = typeof atob === \"function\" ? atob : function (input) {\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var output = \"\";\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0;\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n do {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = enc1 << 2 | enc2 >> 4;\n chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n chr3 = (enc3 & 3) << 6 | enc4;\n output = output + String.fromCharCode(chr1);\n\n if (enc3 !== 64) {\n output = output + String.fromCharCode(chr2);\n }\n\n if (enc4 !== 64) {\n output = output + String.fromCharCode(chr3);\n }\n } while (i < input.length);\n\n return output;\n };\n\n function intArrayFromBase64(s) {\n try {\n var decoded = decodeBase64(s);\n var bytes = new Uint8Array(decoded.length);\n\n for (var i = 0; i < decoded.length; ++i) {\n bytes[i] = decoded.charCodeAt(i);\n }\n\n return bytes;\n } catch (_) {\n throw new Error(\"Converting base64 string to bytes failed.\");\n }\n }\n\n function tryParseAsDataURI(filename) {\n if (!isDataURI(filename)) {\n return;\n }\n\n return intArrayFromBase64(filename.slice(dataURIPrefix.length));\n }\n\n var asmGlobalArg = {\n \"Math\": Math,\n \"Int8Array\": Int8Array,\n \"Int32Array\": Int32Array,\n \"Uint8Array\": Uint8Array,\n \"Float32Array\": Float32Array,\n \"Float64Array\": Float64Array\n };\n var asmLibraryArg = {\n \"a\": abort,\n \"b\": setTempRet0,\n \"c\": getTempRet0,\n \"d\": ___assert_fail,\n \"e\": ___setErrNo,\n \"f\": _emscripten_get_heap_size,\n \"g\": _emscripten_memcpy_big,\n \"h\": _emscripten_resize_heap,\n \"i\": abortOnCannotGrowMemory,\n \"j\": demangle,\n \"k\": demangleAll,\n \"l\": emscripten_realloc_buffer,\n \"m\": jsStackTrace,\n \"n\": stackTrace,\n \"o\": tempDoublePtr,\n \"p\": DYNAMICTOP_PTR\n }; // EMSCRIPTEN_START_ASM\n\n var asm =\n /** @suppress {uselessCode} */\n function (global, env, buffer) {\n \"almost asm\";\n\n var a = new global.Int8Array(buffer),\n b = new global.Int32Array(buffer),\n c = new global.Uint8Array(buffer),\n d = new global.Float32Array(buffer),\n e = new global.Float64Array(buffer),\n g = env.p | 0,\n p = global.Math.floor,\n q = global.Math.abs,\n r = global.Math.sqrt,\n s = global.Math.pow,\n t = global.Math.cos,\n u = global.Math.sin,\n v = global.Math.tan,\n w = global.Math.acos,\n x = global.Math.asin,\n y = global.Math.atan,\n z = global.Math.atan2,\n A = global.Math.ceil,\n B = global.Math.imul,\n C = global.Math.min,\n D = global.Math.clz32,\n F = env.b,\n G = env.c,\n H = env.d,\n I = env.e,\n J = env.f,\n K = env.g,\n L = env.h,\n M = env.i,\n S = 24048;\n\n function V(newBuffer) {\n a = new Int8Array(newBuffer);\n c = new Uint8Array(newBuffer);\n b = new Int32Array(newBuffer);\n d = new Float32Array(newBuffer);\n e = new Float64Array(newBuffer);\n buffer = newBuffer;\n return true;\n } // EMSCRIPTEN_START_FUNCS\n\n\n function W(a) {\n a = a | 0;\n var b = 0;\n b = S;\n S = S + a | 0;\n S = S + 15 & -16;\n return b | 0;\n }\n\n function X() {\n return S | 0;\n }\n\n function Y(a) {\n a = a | 0;\n S = a;\n }\n\n function Z(a, b) {\n a = a | 0;\n b = b | 0;\n S = a;\n }\n\n function _(a) {\n a = a | 0;\n return (B(a * 3 | 0, a + 1 | 0) | 0) + 1 | 0;\n }\n\n function $(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0;\n if (!(ba(a, b, c, d, 0) | 0)) { return; }\n f = (B(c * 3 | 0, c + 1 | 0) | 0) + 1 | 0;\n hd(d | 0, 0, f << 3 | 0) | 0;\n e = Yc(f, 4) | 0;\n if (!e) { return; }\n ca(a, b, c, d, e, f, 0);\n Xc(e);\n return;\n }\n\n function aa(a, b, c, d, e) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0;\n if (!(ba(a, b, c, d, e) | 0)) { return; }\n f = (B(c * 3 | 0, c + 1 | 0) | 0) + 1 | 0;\n hd(d | 0, 0, f << 3 | 0) | 0;\n\n if (e | 0) {\n hd(e | 0, 0, f << 2 | 0) | 0;\n ca(a, b, c, d, e, f, 0);\n return;\n }\n\n e = Yc(f, 4) | 0;\n if (!e) { return; }\n ca(a, b, c, d, e, f, 0);\n Xc(e);\n return;\n }\n\n function ba(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0;\n o = S;\n S = S + 16 | 0;\n n = o;\n g = e;\n b[g >> 2] = a;\n b[g + 4 >> 2] = c;\n g = (f | 0) != 0;\n if (g) { b[f >> 2] = 0; }\n\n if (Fb(a, c) | 0) {\n n = 1;\n S = o;\n return n | 0;\n }\n\n b[n >> 2] = 0;\n\n a: do { if ((d | 0) >= 1) {\n if (g) {\n k = 0;\n l = 1;\n m = 1;\n h = 0;\n g = a;\n\n while (1) {\n if (!(h | k)) {\n g = da(g, c, 4, n) | 0;\n c = G() | 0;\n\n if ((g | 0) == 0 & (c | 0) == 0) {\n g = 2;\n break a;\n }\n\n if (Fb(g, c) | 0) {\n g = 1;\n break a;\n }\n }\n\n g = da(g, c, b[16 + (k << 2) >> 2] | 0, n) | 0;\n c = G() | 0;\n\n if ((g | 0) == 0 & (c | 0) == 0) {\n g = 2;\n break a;\n }\n\n a = e + (m << 3) | 0;\n b[a >> 2] = g;\n b[a + 4 >> 2] = c;\n b[f + (m << 2) >> 2] = l;\n h = h + 1 | 0;\n a = (h | 0) == (l | 0);\n i = k + 1 | 0;\n j = (i | 0) == 6;\n\n if (Fb(g, c) | 0) {\n g = 1;\n break a;\n }\n\n l = l + (j & a & 1) | 0;\n\n if ((l | 0) > (d | 0)) {\n g = 0;\n break;\n } else {\n k = a ? j ? 0 : i : k;\n m = m + 1 | 0;\n h = a ? 0 : h;\n }\n }\n } else {\n k = 0;\n l = 1;\n m = 1;\n h = 0;\n g = a;\n\n while (1) {\n if (!(h | k)) {\n g = da(g, c, 4, n) | 0;\n c = G() | 0;\n\n if ((g | 0) == 0 & (c | 0) == 0) {\n g = 2;\n break a;\n }\n\n if (Fb(g, c) | 0) {\n g = 1;\n break a;\n }\n }\n\n g = da(g, c, b[16 + (k << 2) >> 2] | 0, n) | 0;\n c = G() | 0;\n\n if ((g | 0) == 0 & (c | 0) == 0) {\n g = 2;\n break a;\n }\n\n a = e + (m << 3) | 0;\n b[a >> 2] = g;\n b[a + 4 >> 2] = c;\n h = h + 1 | 0;\n a = (h | 0) == (l | 0);\n i = k + 1 | 0;\n j = (i | 0) == 6;\n\n if (Fb(g, c) | 0) {\n g = 1;\n break a;\n }\n\n l = l + (j & a & 1) | 0;\n\n if ((l | 0) > (d | 0)) {\n g = 0;\n break;\n } else {\n k = a ? j ? 0 : i : k;\n m = m + 1 | 0;\n h = a ? 0 : h;\n }\n }\n }\n } else { g = 0; } } while (0);\n\n n = g;\n S = o;\n return n | 0;\n }\n\n function ca(a, c, d, e, f, g, h) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n g = g | 0;\n h = h | 0;\n var i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0;\n m = S;\n S = S + 16 | 0;\n l = m;\n\n if ((a | 0) == 0 & (c | 0) == 0) {\n S = m;\n return;\n }\n\n i = bd(a | 0, c | 0, g | 0, ((g | 0) < 0) << 31 >> 31 | 0) | 0;\n G() | 0;\n j = e + (i << 3) | 0;\n n = j;\n o = b[n >> 2] | 0;\n n = b[n + 4 >> 2] | 0;\n k = (o | 0) == (a | 0) & (n | 0) == (c | 0);\n if (!((o | 0) == 0 & (n | 0) == 0 | k)) { do {\n i = (i + 1 | 0) % (g | 0) | 0;\n j = e + (i << 3) | 0;\n o = j;\n n = b[o >> 2] | 0;\n o = b[o + 4 >> 2] | 0;\n k = (n | 0) == (a | 0) & (o | 0) == (c | 0);\n } while (!((n | 0) == 0 & (o | 0) == 0 | k)); }\n i = f + (i << 2) | 0;\n\n if (k ? (b[i >> 2] | 0) <= (h | 0) : 0) {\n S = m;\n return;\n }\n\n o = j;\n b[o >> 2] = a;\n b[o + 4 >> 2] = c;\n b[i >> 2] = h;\n\n if ((h | 0) >= (d | 0)) {\n S = m;\n return;\n }\n\n o = h + 1 | 0;\n b[l >> 2] = 0;\n n = da(a, c, 2, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 3, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 1, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 5, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 4, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 6, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n S = m;\n return;\n }\n\n function da(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0;\n\n if ((b[e >> 2] | 0) > 0) {\n f = 0;\n\n do {\n d = Pa(d) | 0;\n f = f + 1 | 0;\n } while ((f | 0) < (b[e >> 2] | 0));\n }\n\n i = cd(a | 0, c | 0, 45) | 0;\n G() | 0;\n j = i & 127;\n g = Lb(a, c) | 0;\n f = cd(a | 0, c | 0, 52) | 0;\n G() | 0;\n f = f & 15;\n\n a: do { if (!f) { h = 6; }else { while (1) {\n m = (15 - f | 0) * 3 | 0;\n n = cd(a | 0, c | 0, m | 0) | 0;\n G() | 0;\n n = n & 7;\n o = (Rb(f) | 0) == 0;\n f = f + -1 | 0;\n l = dd(7, 0, m | 0) | 0;\n c = c & ~(G() | 0);\n m = dd(b[(o ? 464 : 48) + (n * 28 | 0) + (d << 2) >> 2] | 0, 0, m | 0) | 0;\n k = G() | 0;\n d = b[(o ? 672 : 256) + (n * 28 | 0) + (d << 2) >> 2] | 0;\n a = m | a & ~l;\n c = k | c;\n\n if (!d) {\n d = 0;\n break a;\n }\n\n if (!f) {\n h = 6;\n break;\n }\n } } } while (0);\n\n if ((h | 0) == 6) {\n o = b[880 + (j * 28 | 0) + (d << 2) >> 2] | 0;\n n = dd(o | 0, 0, 45) | 0;\n a = n | a;\n c = G() | 0 | c & -1040385;\n d = b[4304 + (j * 28 | 0) + (d << 2) >> 2] | 0;\n\n if ((o & 127 | 0) == 127) {\n o = dd(b[880 + (j * 28 | 0) + 20 >> 2] | 0, 0, 45) | 0;\n c = G() | 0 | c & -1040385;\n d = b[4304 + (j * 28 | 0) + 20 >> 2] | 0;\n a = Nb(o | a, c) | 0;\n c = G() | 0;\n b[e >> 2] = (b[e >> 2] | 0) + 1;\n }\n }\n\n h = cd(a | 0, c | 0, 45) | 0;\n G() | 0;\n h = h & 127;\n\n b: do { if (!(la(h) | 0)) {\n if ((d | 0) > 0) {\n f = 0;\n\n do {\n a = Nb(a, c) | 0;\n c = G() | 0;\n f = f + 1 | 0;\n } while ((f | 0) != (d | 0));\n }\n } else {\n c: do { if ((Lb(a, c) | 0) == 1) {\n if ((j | 0) != (h | 0)) { if (ra(h, b[7728 + (j * 28 | 0) >> 2] | 0) | 0) {\n a = Pb(a, c) | 0;\n g = 1;\n c = G() | 0;\n break;\n } else {\n a = Nb(a, c) | 0;\n g = 1;\n c = G() | 0;\n break;\n } }\n\n switch (g | 0) {\n case 5:\n {\n a = Pb(a, c) | 0;\n c = G() | 0;\n b[e >> 2] = (b[e >> 2] | 0) + 5;\n g = 0;\n break c;\n }\n\n case 3:\n {\n a = Nb(a, c) | 0;\n c = G() | 0;\n b[e >> 2] = (b[e >> 2] | 0) + 1;\n g = 0;\n break c;\n }\n\n default:\n {\n n = 0;\n o = 0;\n F(n | 0);\n return o | 0;\n }\n }\n } else { g = 0; } } while (0);\n\n if ((d | 0) > 0) {\n f = 0;\n\n do {\n a = Mb(a, c) | 0;\n c = G() | 0;\n f = f + 1 | 0;\n } while ((f | 0) != (d | 0));\n }\n\n if ((j | 0) != (h | 0)) {\n if (!(ma(h) | 0)) {\n if ((g | 0) != 0 | (Lb(a, c) | 0) != 5) { break; }\n b[e >> 2] = (b[e >> 2] | 0) + 1;\n break;\n }\n\n switch (i & 127) {\n case 8:\n case 118:\n break b;\n\n default:\n\n }\n\n if ((Lb(a, c) | 0) != 3) { b[e >> 2] = (b[e >> 2] | 0) + 1; }\n }\n } } while (0);\n\n b[e >> 2] = ((b[e >> 2] | 0) + d | 0) % 6 | 0;\n n = c;\n o = a;\n F(n | 0);\n return o | 0;\n }\n\n function ea(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0;\n m = S;\n S = S + 16 | 0;\n l = m;\n\n if (!d) {\n l = e;\n b[l >> 2] = a;\n b[l + 4 >> 2] = c;\n l = 0;\n S = m;\n return l | 0;\n }\n\n b[l >> 2] = 0;\n\n a: do { if (!(Fb(a, c) | 0)) {\n g = (d | 0) > 0;\n\n if (g) {\n f = 0;\n k = a;\n\n do {\n k = da(k, c, 4, l) | 0;\n c = G() | 0;\n\n if ((k | 0) == 0 & (c | 0) == 0) {\n a = 2;\n break a;\n }\n\n f = f + 1 | 0;\n\n if (Fb(k, c) | 0) {\n a = 1;\n break a;\n }\n } while ((f | 0) < (d | 0));\n\n j = e;\n b[j >> 2] = k;\n b[j + 4 >> 2] = c;\n j = d + -1 | 0;\n\n if (g) {\n g = 0;\n h = 1;\n f = k;\n a = c;\n\n do {\n f = da(f, a, 2, l) | 0;\n a = G() | 0;\n\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n\n i = e + (h << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n h = h + 1 | 0;\n\n if (Fb(f, a) | 0) {\n a = 1;\n break a;\n }\n\n g = g + 1 | 0;\n } while ((g | 0) < (d | 0));\n\n i = 0;\n g = h;\n\n do {\n f = da(f, a, 3, l) | 0;\n a = G() | 0;\n\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n\n h = e + (g << 3) | 0;\n b[h >> 2] = f;\n b[h + 4 >> 2] = a;\n g = g + 1 | 0;\n\n if (Fb(f, a) | 0) {\n a = 1;\n break a;\n }\n\n i = i + 1 | 0;\n } while ((i | 0) < (d | 0));\n\n h = 0;\n\n do {\n f = da(f, a, 1, l) | 0;\n a = G() | 0;\n\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n\n i = e + (g << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n g = g + 1 | 0;\n\n if (Fb(f, a) | 0) {\n a = 1;\n break a;\n }\n\n h = h + 1 | 0;\n } while ((h | 0) < (d | 0));\n\n h = 0;\n\n do {\n f = da(f, a, 5, l) | 0;\n a = G() | 0;\n\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n\n i = e + (g << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n g = g + 1 | 0;\n\n if (Fb(f, a) | 0) {\n a = 1;\n break a;\n }\n\n h = h + 1 | 0;\n } while ((h | 0) < (d | 0));\n\n h = 0;\n\n do {\n f = da(f, a, 4, l) | 0;\n a = G() | 0;\n\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n\n i = e + (g << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n g = g + 1 | 0;\n\n if (Fb(f, a) | 0) {\n a = 1;\n break a;\n }\n\n h = h + 1 | 0;\n } while ((h | 0) < (d | 0));\n\n h = 0;\n\n while (1) {\n f = da(f, a, 6, l) | 0;\n a = G() | 0;\n\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n\n if ((h | 0) != (j | 0)) {\n i = e + (g << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n if (!(Fb(f, a) | 0)) { g = g + 1 | 0; }else {\n a = 1;\n break a;\n }\n }\n\n h = h + 1 | 0;\n\n if ((h | 0) >= (d | 0)) {\n h = k;\n g = c;\n break;\n }\n }\n } else {\n h = k;\n f = k;\n g = c;\n a = c;\n }\n } else {\n h = e;\n b[h >> 2] = a;\n b[h + 4 >> 2] = c;\n h = a;\n f = a;\n g = c;\n a = c;\n }\n\n a = ((h | 0) != (f | 0) | (g | 0) != (a | 0)) & 1;\n } else { a = 1; } } while (0);\n\n l = a;\n S = m;\n return l | 0;\n }\n\n function fa(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n g = S;\n S = S + 48 | 0;\n f = g + 8 | 0;\n e = g;\n i = a;\n h = b[i + 4 >> 2] | 0;\n d = e;\n b[d >> 2] = b[i >> 2];\n b[d + 4 >> 2] = h;\n vc(e, f);\n f = ya(f, c) | 0;\n c = b[e >> 2] | 0;\n e = b[a + 8 >> 2] | 0;\n\n if ((e | 0) <= 0) {\n i = c;\n h = (f | 0) < (i | 0);\n i = h ? i : f;\n i = i + 12 | 0;\n S = g;\n return i | 0;\n }\n\n d = b[a + 12 >> 2] | 0;\n a = 0;\n\n do {\n c = (b[d + (a << 3) >> 2] | 0) + c | 0;\n a = a + 1 | 0;\n } while ((a | 0) < (e | 0));\n\n i = (f | 0) < (c | 0);\n i = i ? c : f;\n i = i + 12 | 0;\n S = g;\n return i | 0;\n }\n\n function ga(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n i = S;\n S = S + 48 | 0;\n e = i + 8 | 0;\n f = i;\n\n if (!(ha(a, c, d) | 0)) {\n S = i;\n return;\n }\n\n j = a;\n g = b[j + 4 >> 2] | 0;\n h = f;\n b[h >> 2] = b[j >> 2];\n b[h + 4 >> 2] = g;\n vc(f, e);\n h = ya(e, c) | 0;\n c = b[f >> 2] | 0;\n g = b[a + 8 >> 2] | 0;\n\n if ((g | 0) > 0) {\n f = b[a + 12 >> 2] | 0;\n e = 0;\n\n do {\n c = (b[f + (e << 3) >> 2] | 0) + c | 0;\n e = e + 1 | 0;\n } while ((e | 0) != (g | 0));\n }\n\n c = (h | 0) < (c | 0) ? c : h;\n\n if ((c | 0) <= -12) {\n S = i;\n return;\n }\n\n j = c + 11 | 0;\n hd(d | 0, 0, (((j | 0) > 0 ? j : 0) << 3) + 8 | 0) | 0;\n S = i;\n return;\n }\n\n function ha(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0,\n D = 0,\n E = 0,\n F = 0,\n I = 0,\n J = 0;\n J = S;\n S = S + 112 | 0;\n D = J + 80 | 0;\n j = J + 72 | 0;\n E = J;\n F = J + 56 | 0;\n k = a + 8 | 0;\n I = Wc((b[k >> 2] << 5) + 32 | 0) | 0;\n if (!I) { H(22848, 22448, 800, 22456); }\n wc(a, I);\n g = a;\n e = b[g + 4 >> 2] | 0;\n i = j;\n b[i >> 2] = b[g >> 2];\n b[i + 4 >> 2] = e;\n vc(j, D);\n i = ya(D, c) | 0;\n e = b[j >> 2] | 0;\n g = b[k >> 2] | 0;\n\n if ((g | 0) > 0) {\n h = b[a + 12 >> 2] | 0;\n f = 0;\n\n do {\n e = (b[h + (f << 3) >> 2] | 0) + e | 0;\n f = f + 1 | 0;\n } while ((f | 0) != (g | 0));\n }\n\n i = (i | 0) < (e | 0) ? e : i;\n C = i + 12 | 0;\n f = Yc(C, 8) | 0;\n l = Yc(C, 8) | 0;\n b[D >> 2] = 0;\n A = a;\n B = b[A + 4 >> 2] | 0;\n e = j;\n b[e >> 2] = b[A >> 2];\n b[e + 4 >> 2] = B;\n e = ia(j, C, c, D, f, l) | 0;\n\n if (e | 0) {\n Xc(f);\n Xc(l);\n Xc(I);\n I = e;\n S = J;\n return I | 0;\n }\n\n a: do { if ((b[k >> 2] | 0) > 0) {\n g = a + 12 | 0;\n e = 0;\n\n while (1) {\n h = ia((b[g >> 2] | 0) + (e << 3) | 0, C, c, D, f, l) | 0;\n e = e + 1 | 0;\n if (h | 0) { break; }\n if ((e | 0) >= (b[k >> 2] | 0)) { break a; }\n }\n\n Xc(f);\n Xc(l);\n Xc(I);\n I = h;\n S = J;\n return I | 0;\n } } while (0);\n\n if ((i | 0) > -12) { hd(l | 0, 0, ((C | 0) > 1 ? C : 1) << 3 | 0) | 0; }\n\n b: do { if ((b[D >> 2] | 0) > 0) {\n B = ((C | 0) < 0) << 31 >> 31;\n v = f;\n w = l;\n x = f;\n y = f;\n z = l;\n A = f;\n e = f;\n r = f;\n s = l;\n t = l;\n u = l;\n f = l;\n\n c: while (1) {\n q = b[D >> 2] | 0;\n o = 0;\n p = 0;\n g = 0;\n\n while (1) {\n h = E;\n i = h + 56 | 0;\n\n do {\n b[h >> 2] = 0;\n h = h + 4 | 0;\n } while ((h | 0) < (i | 0));\n\n c = v + (o << 3) | 0;\n j = b[c >> 2] | 0;\n c = b[c + 4 >> 2] | 0;\n\n if (ba(j, c, 1, E, 0) | 0) {\n h = E;\n i = h + 56 | 0;\n\n do {\n b[h >> 2] = 0;\n h = h + 4 | 0;\n } while ((h | 0) < (i | 0));\n\n h = Yc(7, 4) | 0;\n\n if (h | 0) {\n ca(j, c, 1, E, h, 7, 0);\n Xc(h);\n }\n }\n\n n = 0;\n\n do {\n m = E + (n << 3) | 0;\n l = b[m >> 2] | 0;\n m = b[m + 4 >> 2] | 0;\n\n d: do { if (!((l | 0) == 0 & (m | 0) == 0)) {\n j = bd(l | 0, m | 0, C | 0, B | 0) | 0;\n G() | 0;\n h = d + (j << 3) | 0;\n i = h;\n c = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n\n if (!((c | 0) == 0 & (i | 0) == 0)) {\n k = 0;\n\n while (1) {\n if ((k | 0) > (C | 0)) { break c; }\n if ((c | 0) == (l | 0) & (i | 0) == (m | 0)) { break d; }\n j = (j + 1 | 0) % (C | 0) | 0;\n h = d + (j << 3) | 0;\n i = h;\n c = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n if ((c | 0) == 0 & (i | 0) == 0) { break; }else { k = k + 1 | 0; }\n }\n }\n\n if (!((l | 0) == 0 & (m | 0) == 0)) {\n Vb(l, m, F);\n\n if (xc(a, I, F) | 0) {\n k = h;\n b[k >> 2] = l;\n b[k + 4 >> 2] = m;\n k = w + (g << 3) | 0;\n b[k >> 2] = l;\n b[k + 4 >> 2] = m;\n g = g + 1 | 0;\n }\n }\n } } while (0);\n\n n = n + 1 | 0;\n } while (n >>> 0 < 7);\n\n p = p + 1 | 0;\n if ((p | 0) >= (q | 0)) { break; }else { o = o + 1 | 0; }\n }\n\n if ((q | 0) > 0) { hd(x | 0, 0, q << 3 | 0) | 0; }\n b[D >> 2] = g;\n\n if ((g | 0) > 0) {\n l = f;\n m = u;\n n = A;\n o = t;\n p = s;\n q = w;\n f = r;\n u = e;\n t = y;\n s = x;\n r = l;\n e = m;\n A = z;\n z = n;\n y = o;\n x = p;\n w = v;\n v = q;\n } else { break b; }\n }\n\n Xc(y);\n Xc(z);\n Xc(I);\n I = -1;\n S = J;\n return I | 0;\n } else { e = l; } } while (0);\n\n Xc(I);\n Xc(f);\n Xc(e);\n I = 0;\n S = J;\n return I | 0;\n }\n\n function ia(a, c, d, f, g, h) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n h = h | 0;\n var i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0.0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0,\n D = 0.0,\n E = 0.0;\n C = S;\n S = S + 48 | 0;\n y = C + 32 | 0;\n z = C + 16 | 0;\n A = C;\n i = b[a >> 2] | 0;\n\n if ((i | 0) <= 0) {\n B = 0;\n S = C;\n return B | 0;\n }\n\n t = a + 4 | 0;\n u = y + 8 | 0;\n v = z + 8 | 0;\n w = A + 8 | 0;\n x = ((c | 0) < 0) << 31 >> 31;\n s = 0;\n\n a: while (1) {\n j = b[t >> 2] | 0;\n q = j + (s << 4) | 0;\n b[y >> 2] = b[q >> 2];\n b[y + 4 >> 2] = b[q + 4 >> 2];\n b[y + 8 >> 2] = b[q + 8 >> 2];\n b[y + 12 >> 2] = b[q + 12 >> 2];\n\n if ((s | 0) == (i + -1 | 0)) {\n b[z >> 2] = b[j >> 2];\n b[z + 4 >> 2] = b[j + 4 >> 2];\n b[z + 8 >> 2] = b[j + 8 >> 2];\n b[z + 12 >> 2] = b[j + 12 >> 2];\n } else {\n q = j + (s + 1 << 4) | 0;\n b[z >> 2] = b[q >> 2];\n b[z + 4 >> 2] = b[q + 4 >> 2];\n b[z + 8 >> 2] = b[q + 8 >> 2];\n b[z + 12 >> 2] = b[q + 12 >> 2];\n }\n\n q = za(y, z, d) | 0;\n\n b: do { if ((q | 0) > 0) {\n r = +(q | 0);\n p = 0;\n\n c: while (1) {\n E = +(q - p | 0);\n D = +(p | 0);\n e[A >> 3] = +e[y >> 3] * E / r + +e[z >> 3] * D / r;\n e[w >> 3] = +e[u >> 3] * E / r + +e[v >> 3] * D / r;\n n = Sb(A, d) | 0;\n o = G() | 0;\n j = bd(n | 0, o | 0, c | 0, x | 0) | 0;\n G() | 0;\n i = h + (j << 3) | 0;\n k = i;\n l = b[k >> 2] | 0;\n k = b[k + 4 >> 2] | 0;\n\n d: do { if ((l | 0) == 0 & (k | 0) == 0) { B = 14; }else {\n m = 0;\n\n while (1) {\n if ((m | 0) > (c | 0)) {\n i = 1;\n break d;\n }\n\n if ((l | 0) == (n | 0) & (k | 0) == (o | 0)) {\n i = 7;\n break d;\n }\n\n j = (j + 1 | 0) % (c | 0) | 0;\n i = h + (j << 3) | 0;\n k = i;\n l = b[k >> 2] | 0;\n k = b[k + 4 >> 2] | 0;\n\n if ((l | 0) == 0 & (k | 0) == 0) {\n B = 14;\n break;\n } else { m = m + 1 | 0; }\n }\n } } while (0);\n\n if ((B | 0) == 14) {\n B = 0;\n if ((n | 0) == 0 & (o | 0) == 0) { i = 7; }else {\n b[i >> 2] = n;\n b[i + 4 >> 2] = o;\n i = b[f >> 2] | 0;\n m = g + (i << 3) | 0;\n b[m >> 2] = n;\n b[m + 4 >> 2] = o;\n b[f >> 2] = i + 1;\n i = 0;\n }\n }\n\n switch (i & 7) {\n case 7:\n case 0:\n break;\n\n default:\n break c;\n }\n\n p = p + 1 | 0;\n\n if ((q | 0) <= (p | 0)) {\n B = 8;\n break b;\n }\n }\n\n if (i | 0) {\n i = -1;\n B = 20;\n break a;\n }\n } else { B = 8; } } while (0);\n\n if ((B | 0) == 8) { B = 0; }\n s = s + 1 | 0;\n i = b[a >> 2] | 0;\n\n if ((s | 0) >= (i | 0)) {\n i = 0;\n B = 20;\n break;\n }\n }\n\n if ((B | 0) == 20) {\n S = C;\n return i | 0;\n }\n\n return 0;\n }\n\n function ja(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;\n k = S;\n S = S + 176 | 0;\n j = k;\n\n if ((c | 0) < 1) {\n Mc(d, 0, 0);\n S = k;\n return;\n }\n\n h = a;\n h = cd(b[h >> 2] | 0, b[h + 4 >> 2] | 0, 52) | 0;\n G() | 0;\n Mc(d, (c | 0) > 6 ? c : 6, h & 15);\n h = 0;\n\n do {\n e = a + (h << 3) | 0;\n Wb(b[e >> 2] | 0, b[e + 4 >> 2] | 0, j);\n e = b[j >> 2] | 0;\n\n if ((e | 0) > 0) {\n i = 0;\n\n do {\n g = j + 8 + (i << 4) | 0;\n i = i + 1 | 0;\n e = j + 8 + (((i | 0) % (e | 0) | 0) << 4) | 0;\n f = Rc(d, e, g) | 0;\n if (!f) { Qc(d, g, e) | 0; }else { Pc(d, f) | 0; }\n e = b[j >> 2] | 0;\n } while ((i | 0) < (e | 0));\n }\n\n h = h + 1 | 0;\n } while ((h | 0) != (c | 0));\n\n S = k;\n return;\n }\n\n function ka(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0;\n g = S;\n S = S + 32 | 0;\n e = g;\n f = g + 16 | 0;\n ja(a, c, f);\n b[d >> 2] = 0;\n b[d + 4 >> 2] = 0;\n b[d + 8 >> 2] = 0;\n a = Oc(f) | 0;\n\n if (!a) {\n kc(d) | 0;\n Nc(f);\n S = g;\n return;\n }\n\n do {\n c = hc(d) | 0;\n\n do {\n ic(c, a) | 0;\n h = a + 16 | 0;\n b[e >> 2] = b[h >> 2];\n b[e + 4 >> 2] = b[h + 4 >> 2];\n b[e + 8 >> 2] = b[h + 8 >> 2];\n b[e + 12 >> 2] = b[h + 12 >> 2];\n Pc(f, a) | 0;\n a = Sc(f, e) | 0;\n } while ((a | 0) != 0);\n\n a = Oc(f) | 0;\n } while ((a | 0) != 0);\n\n kc(d) | 0;\n Nc(f);\n S = g;\n return;\n }\n\n function la(a) {\n a = a | 0;\n return b[7728 + (a * 28 | 0) + 16 >> 2] | 0;\n }\n\n function ma(a) {\n a = a | 0;\n return (a | 0) == 4 | (a | 0) == 117 | 0;\n }\n\n function na(a) {\n a = a | 0;\n return b[11152 + ((b[a >> 2] | 0) * 216 | 0) + ((b[a + 4 >> 2] | 0) * 72 | 0) + ((b[a + 8 >> 2] | 0) * 24 | 0) + (b[a + 12 >> 2] << 3) >> 2] | 0;\n }\n\n function oa(a) {\n a = a | 0;\n return b[11152 + ((b[a >> 2] | 0) * 216 | 0) + ((b[a + 4 >> 2] | 0) * 72 | 0) + ((b[a + 8 >> 2] | 0) * 24 | 0) + (b[a + 12 >> 2] << 3) + 4 >> 2] | 0;\n }\n\n function pa(a, c) {\n a = a | 0;\n c = c | 0;\n a = 7728 + (a * 28 | 0) | 0;\n b[c >> 2] = b[a >> 2];\n b[c + 4 >> 2] = b[a + 4 >> 2];\n b[c + 8 >> 2] = b[a + 8 >> 2];\n b[c + 12 >> 2] = b[a + 12 >> 2];\n return;\n }\n\n function qa(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n\n if (c >>> 0 > 20) {\n c = -1;\n return c | 0;\n }\n\n do { if ((b[11152 + (c * 216 | 0) >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 8 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 16 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 24 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 32 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 40 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 48 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 56 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 64 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 72 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 80 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 88 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 96 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 104 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 112 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 120 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 128 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 136 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 1;\n e = 2;\n } else {\n if ((b[11152 + (c * 216 | 0) + 144 >> 2] | 0) == (a | 0)) {\n a = 0;\n d = 2;\n e = 0;\n break;\n }\n\n if ((b[11152 + (c * 216 | 0) + 152 >> 2] | 0) == (a | 0)) {\n a = 0;\n d = 2;\n e = 1;\n break;\n }\n\n if ((b[11152 + (c * 216 | 0) + 160 >> 2] | 0) == (a | 0)) {\n a = 0;\n d = 2;\n e = 2;\n break;\n }\n\n if ((b[11152 + (c * 216 | 0) + 168 >> 2] | 0) == (a | 0)) {\n a = 1;\n d = 2;\n e = 0;\n break;\n }\n\n if ((b[11152 + (c * 216 | 0) + 176 >> 2] | 0) == (a | 0)) {\n a = 1;\n d = 2;\n e = 1;\n break;\n }\n\n if ((b[11152 + (c * 216 | 0) + 184 >> 2] | 0) == (a | 0)) {\n a = 1;\n d = 2;\n e = 2;\n break;\n }\n\n if ((b[11152 + (c * 216 | 0) + 192 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 2;\n e = 0;\n break;\n }\n\n if ((b[11152 + (c * 216 | 0) + 200 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 2;\n e = 1;\n break;\n }\n\n if ((b[11152 + (c * 216 | 0) + 208 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 2;\n e = 2;\n break;\n } else { a = -1; }\n\n return a | 0;\n }\n } else {\n a = 2;\n d = 1;\n e = 1;\n }\n } else {\n a = 2;\n d = 1;\n e = 0;\n }\n } else {\n a = 1;\n d = 1;\n e = 2;\n }\n } else {\n a = 1;\n d = 1;\n e = 1;\n }\n } else {\n a = 1;\n d = 1;\n e = 0;\n }\n } else {\n a = 0;\n d = 1;\n e = 2;\n }\n } else {\n a = 0;\n d = 1;\n e = 1;\n }\n } else {\n a = 0;\n d = 1;\n e = 0;\n }\n } else {\n a = 2;\n d = 0;\n e = 2;\n }\n } else {\n a = 2;\n d = 0;\n e = 1;\n }\n } else {\n a = 2;\n d = 0;\n e = 0;\n }\n } else {\n a = 1;\n d = 0;\n e = 2;\n }\n } else {\n a = 1;\n d = 0;\n e = 1;\n }\n } else {\n a = 1;\n d = 0;\n e = 0;\n }\n } else {\n a = 0;\n d = 0;\n e = 2;\n }\n } else {\n a = 0;\n d = 0;\n e = 1;\n }\n } else {\n a = 0;\n d = 0;\n e = 0;\n } } while (0);\n\n c = b[11152 + (c * 216 | 0) + (d * 72 | 0) + (a * 24 | 0) + (e << 3) + 4 >> 2] | 0;\n return c | 0;\n }\n\n function ra(a, c) {\n a = a | 0;\n c = c | 0;\n\n if ((b[7728 + (a * 28 | 0) + 20 >> 2] | 0) == (c | 0)) {\n c = 1;\n return c | 0;\n }\n\n c = (b[7728 + (a * 28 | 0) + 24 >> 2] | 0) == (c | 0);\n return c | 0;\n }\n\n function sa(a, c) {\n a = a | 0;\n c = c | 0;\n return b[880 + (a * 28 | 0) + (c << 2) >> 2] | 0;\n }\n\n function ta(a, c) {\n a = a | 0;\n c = c | 0;\n\n if ((b[880 + (a * 28 | 0) >> 2] | 0) == (c | 0)) {\n c = 0;\n return c | 0;\n }\n\n if ((b[880 + (a * 28 | 0) + 4 >> 2] | 0) == (c | 0)) {\n c = 1;\n return c | 0;\n }\n\n if ((b[880 + (a * 28 | 0) + 8 >> 2] | 0) == (c | 0)) {\n c = 2;\n return c | 0;\n }\n\n if ((b[880 + (a * 28 | 0) + 12 >> 2] | 0) == (c | 0)) {\n c = 3;\n return c | 0;\n }\n\n if ((b[880 + (a * 28 | 0) + 16 >> 2] | 0) == (c | 0)) {\n c = 4;\n return c | 0;\n }\n\n if ((b[880 + (a * 28 | 0) + 20 >> 2] | 0) == (c | 0)) {\n c = 5;\n return c | 0;\n } else { return ((b[880 + (a * 28 | 0) + 24 >> 2] | 0) == (c | 0) ? 6 : 7) | 0; }\n\n return 0;\n }\n\n function ua() {\n return 122;\n }\n\n function va(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0;\n c = 0;\n\n do {\n dd(c | 0, 0, 45) | 0;\n e = G() | 0 | 134225919;\n d = a + (c << 3) | 0;\n b[d >> 2] = -1;\n b[d + 4 >> 2] = e;\n c = c + 1 | 0;\n } while ((c | 0) != 122);\n\n return;\n }\n\n function wa(a) {\n a = a | 0;\n return +e[a + 16 >> 3] < +e[a + 24 >> 3] | 0;\n }\n\n function xa(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0;\n c = +e[b >> 3];\n\n if (!(c >= +e[a + 8 >> 3])) {\n b = 0;\n return b | 0;\n }\n\n if (!(c <= +e[a >> 3])) {\n b = 0;\n return b | 0;\n }\n\n d = +e[a + 16 >> 3];\n c = +e[a + 24 >> 3];\n f = +e[b + 8 >> 3];\n b = f >= c;\n a = f <= d & 1;\n\n if (d < c) {\n if (b) { a = 1; }\n } else if (!b) { a = 0; }\n\n b = (a | 0) != 0;\n return b | 0;\n }\n\n function ya(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0.0,\n l = 0.0;\n i = S;\n S = S + 288 | 0;\n d = i + 264 | 0;\n f = i + 96 | 0;\n g = i;\n h = g;\n j = h + 96 | 0;\n\n do {\n b[h >> 2] = 0;\n h = h + 4 | 0;\n } while ((h | 0) < (j | 0));\n\n _b(c, g);\n\n h = g;\n j = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n Vb(j, h, d);\n Wb(j, h, f);\n k = +jb(d, f + 8 | 0);\n e[d >> 3] = +e[a >> 3];\n h = d + 8 | 0;\n e[h >> 3] = +e[a + 16 >> 3];\n e[f >> 3] = +e[a + 8 >> 3];\n j = f + 8 | 0;\n e[j >> 3] = +e[a + 24 >> 3];\n l = +jb(d, f);\n j = ~~+A(+(l * l / +ed(+ +q(+((+e[h >> 3] - +e[j >> 3]) / (+e[d >> 3] - +e[f >> 3]))), 3.0) / (k * (k * 2.59807621135) * .8)));\n S = i;\n return ((j | 0) == 0 ? 1 : j) | 0;\n }\n\n function za(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0.0;\n i = S;\n S = S + 288 | 0;\n e = i + 264 | 0;\n f = i + 96 | 0;\n g = i;\n h = g;\n j = h + 96 | 0;\n\n do {\n b[h >> 2] = 0;\n h = h + 4 | 0;\n } while ((h | 0) < (j | 0));\n\n _b(d, g);\n\n j = g;\n h = b[j >> 2] | 0;\n j = b[j + 4 >> 2] | 0;\n Vb(h, j, e);\n Wb(h, j, f);\n k = +jb(e, f + 8 | 0);\n j = ~~+A(+(+jb(a, c) / (k * 2.0)));\n S = i;\n return ((j | 0) == 0 ? 1 : j) | 0;\n }\n\n function Aa(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n b[a >> 2] = c;\n b[a + 4 >> 2] = d;\n b[a + 8 >> 2] = e;\n return;\n }\n\n function Ba(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0,\n n = 0,\n o = 0.0;\n n = c + 8 | 0;\n b[n >> 2] = 0;\n k = +e[a >> 3];\n i = +q(+k);\n l = +e[a + 8 >> 3];\n j = +q(+l) / .8660254037844386;\n i = i + j * .5;\n d = ~~i;\n a = ~~j;\n i = i - +(d | 0);\n j = j - +(a | 0);\n\n do { if (i < .5) {\n if (i < .3333333333333333) {\n b[c >> 2] = d;\n\n if (j < (i + 1.0) * .5) {\n b[c + 4 >> 2] = a;\n break;\n } else {\n a = a + 1 | 0;\n b[c + 4 >> 2] = a;\n break;\n }\n } else {\n o = 1.0 - i;\n a = (!(j < o) & 1) + a | 0;\n b[c + 4 >> 2] = a;\n\n if (o <= j & j < i * 2.0) {\n d = d + 1 | 0;\n b[c >> 2] = d;\n break;\n } else {\n b[c >> 2] = d;\n break;\n }\n }\n } else {\n if (!(i < .6666666666666666)) {\n d = d + 1 | 0;\n b[c >> 2] = d;\n\n if (j < i * .5) {\n b[c + 4 >> 2] = a;\n break;\n } else {\n a = a + 1 | 0;\n b[c + 4 >> 2] = a;\n break;\n }\n }\n\n if (j < 1.0 - i) {\n b[c + 4 >> 2] = a;\n\n if (i * 2.0 + -1.0 < j) {\n b[c >> 2] = d;\n break;\n }\n } else {\n a = a + 1 | 0;\n b[c + 4 >> 2] = a;\n }\n\n d = d + 1 | 0;\n b[c >> 2] = d;\n } } while (0);\n\n do { if (k < 0.0) { if (!(a & 1)) {\n m = (a | 0) / 2 | 0;\n m = _c(d | 0, ((d | 0) < 0) << 31 >> 31 | 0, m | 0, ((m | 0) < 0) << 31 >> 31 | 0) | 0;\n d = ~~(+(d | 0) - (+(m >>> 0) + 4294967296.0 * +(G() | 0)) * 2.0);\n b[c >> 2] = d;\n break;\n } else {\n m = (a + 1 | 0) / 2 | 0;\n m = _c(d | 0, ((d | 0) < 0) << 31 >> 31 | 0, m | 0, ((m | 0) < 0) << 31 >> 31 | 0) | 0;\n d = ~~(+(d | 0) - ((+(m >>> 0) + 4294967296.0 * +(G() | 0)) * 2.0 + 1.0));\n b[c >> 2] = d;\n break;\n } } } while (0);\n\n m = c + 4 | 0;\n\n if (l < 0.0) {\n d = d - ((a << 1 | 1 | 0) / 2 | 0) | 0;\n b[c >> 2] = d;\n a = 0 - a | 0;\n b[m >> 2] = a;\n }\n\n f = a - d | 0;\n\n if ((d | 0) < 0) {\n g = 0 - d | 0;\n b[m >> 2] = f;\n b[n >> 2] = g;\n b[c >> 2] = 0;\n a = f;\n d = 0;\n } else { g = 0; }\n\n if ((a | 0) < 0) {\n d = d - a | 0;\n b[c >> 2] = d;\n g = g - a | 0;\n b[n >> 2] = g;\n b[m >> 2] = 0;\n a = 0;\n }\n\n h = d - g | 0;\n f = a - g | 0;\n\n if ((g | 0) < 0) {\n b[c >> 2] = h;\n b[m >> 2] = f;\n b[n >> 2] = 0;\n a = f;\n d = h;\n g = 0;\n }\n\n f = (a | 0) < (d | 0) ? a : d;\n f = (g | 0) < (f | 0) ? g : f;\n if ((f | 0) <= 0) { return; }\n b[c >> 2] = d - f;\n b[m >> 2] = a - f;\n b[n >> 2] = g - f;\n return;\n }\n\n function Ca(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n d = b[h >> 2] | 0;\n\n if ((c | 0) < 0) {\n d = d - c | 0;\n b[h >> 2] = d;\n g = a + 8 | 0;\n b[g >> 2] = (b[g >> 2] | 0) - c;\n b[a >> 2] = 0;\n c = 0;\n }\n\n if ((d | 0) < 0) {\n c = c - d | 0;\n b[a >> 2] = c;\n g = a + 8 | 0;\n f = (b[g >> 2] | 0) - d | 0;\n b[g >> 2] = f;\n b[h >> 2] = 0;\n d = 0;\n } else {\n f = a + 8 | 0;\n g = f;\n f = b[f >> 2] | 0;\n }\n\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[a >> 2] = c;\n d = d - f | 0;\n b[h >> 2] = d;\n b[g >> 2] = 0;\n f = 0;\n }\n\n e = (d | 0) < (c | 0) ? d : c;\n e = (f | 0) < (e | 0) ? f : e;\n if ((e | 0) <= 0) { return; }\n b[a >> 2] = c - e;\n b[h >> 2] = d - e;\n b[g >> 2] = f - e;\n return;\n }\n\n function Da(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n f = 0;\n f = b[a + 8 >> 2] | 0;\n d = +((b[a + 4 >> 2] | 0) - f | 0);\n e[c >> 3] = +((b[a >> 2] | 0) - f | 0) - d * .5;\n e[c + 8 >> 3] = d * .8660254037844386;\n return;\n }\n\n function Ea(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n b[d >> 2] = (b[c >> 2] | 0) + (b[a >> 2] | 0);\n b[d + 4 >> 2] = (b[c + 4 >> 2] | 0) + (b[a + 4 >> 2] | 0);\n b[d + 8 >> 2] = (b[c + 8 >> 2] | 0) + (b[a + 8 >> 2] | 0);\n return;\n }\n\n function Fa(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n b[d >> 2] = (b[a >> 2] | 0) - (b[c >> 2] | 0);\n b[d + 4 >> 2] = (b[a + 4 >> 2] | 0) - (b[c + 4 >> 2] | 0);\n b[d + 8 >> 2] = (b[a + 8 >> 2] | 0) - (b[c + 8 >> 2] | 0);\n return;\n }\n\n function Ga(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n d = B(b[a >> 2] | 0, c) | 0;\n b[a >> 2] = d;\n d = a + 4 | 0;\n e = B(b[d >> 2] | 0, c) | 0;\n b[d >> 2] = e;\n a = a + 8 | 0;\n c = B(b[a >> 2] | 0, c) | 0;\n b[a >> 2] = c;\n return;\n }\n\n function Ha(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = b[a >> 2] | 0;\n i = (h | 0) < 0;\n e = (b[a + 4 >> 2] | 0) - (i ? h : 0) | 0;\n g = (e | 0) < 0;\n f = (g ? 0 - e | 0 : 0) + ((b[a + 8 >> 2] | 0) - (i ? h : 0)) | 0;\n d = (f | 0) < 0;\n a = d ? 0 : f;\n c = (g ? 0 : e) - (d ? f : 0) | 0;\n f = (i ? 0 : h) - (g ? e : 0) - (d ? f : 0) | 0;\n d = (c | 0) < (f | 0) ? c : f;\n d = (a | 0) < (d | 0) ? a : d;\n e = (d | 0) > 0;\n a = a - (e ? d : 0) | 0;\n c = c - (e ? d : 0) | 0;\n\n a: do { switch (f - (e ? d : 0) | 0) {\n case 0:\n switch (c | 0) {\n case 0:\n {\n i = (a | 0) == 0 ? 0 : (a | 0) == 1 ? 1 : 7;\n return i | 0;\n }\n\n case 1:\n {\n i = (a | 0) == 0 ? 2 : (a | 0) == 1 ? 3 : 7;\n return i | 0;\n }\n\n default:\n break a;\n }\n\n case 1:\n switch (c | 0) {\n case 0:\n {\n i = (a | 0) == 0 ? 4 : (a | 0) == 1 ? 5 : 7;\n return i | 0;\n }\n\n case 1:\n {\n if (!a) { a = 6; }else { break a; }\n return a | 0;\n }\n\n default:\n break a;\n }\n\n default:\n\n } } while (0);\n\n i = 7;\n return i | 0;\n }\n\n function Ia(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = a + 8 | 0;\n d = b[h >> 2] | 0;\n c = (b[a >> 2] | 0) - d | 0;\n i = a + 4 | 0;\n d = (b[i >> 2] | 0) - d | 0;\n e = Vc(+((c * 3 | 0) - d | 0) / 7.0) | 0;\n b[a >> 2] = e;\n c = Vc(+((d << 1) + c | 0) / 7.0) | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = c - e | 0;\n\n if ((e | 0) < 0) {\n g = 0 - e | 0;\n b[i >> 2] = d;\n b[h >> 2] = g;\n b[a >> 2] = 0;\n c = d;\n e = 0;\n d = g;\n } else { d = 0; }\n\n if ((c | 0) < 0) {\n e = e - c | 0;\n b[a >> 2] = e;\n d = d - c | 0;\n b[h >> 2] = d;\n b[i >> 2] = 0;\n c = 0;\n }\n\n g = e - d | 0;\n f = c - d | 0;\n\n if ((d | 0) < 0) {\n b[a >> 2] = g;\n b[i >> 2] = f;\n b[h >> 2] = 0;\n c = f;\n f = g;\n d = 0;\n } else { f = e; }\n\n e = (c | 0) < (f | 0) ? c : f;\n e = (d | 0) < (e | 0) ? d : e;\n if ((e | 0) <= 0) { return; }\n b[a >> 2] = f - e;\n b[i >> 2] = c - e;\n b[h >> 2] = d - e;\n return;\n }\n\n function Ja(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = a + 8 | 0;\n d = b[h >> 2] | 0;\n c = (b[a >> 2] | 0) - d | 0;\n i = a + 4 | 0;\n d = (b[i >> 2] | 0) - d | 0;\n e = Vc(+((c << 1) + d | 0) / 7.0) | 0;\n b[a >> 2] = e;\n c = Vc(+((d * 3 | 0) - c | 0) / 7.0) | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = c - e | 0;\n\n if ((e | 0) < 0) {\n g = 0 - e | 0;\n b[i >> 2] = d;\n b[h >> 2] = g;\n b[a >> 2] = 0;\n c = d;\n e = 0;\n d = g;\n } else { d = 0; }\n\n if ((c | 0) < 0) {\n e = e - c | 0;\n b[a >> 2] = e;\n d = d - c | 0;\n b[h >> 2] = d;\n b[i >> 2] = 0;\n c = 0;\n }\n\n g = e - d | 0;\n f = c - d | 0;\n\n if ((d | 0) < 0) {\n b[a >> 2] = g;\n b[i >> 2] = f;\n b[h >> 2] = 0;\n c = f;\n f = g;\n d = 0;\n } else { f = e; }\n\n e = (c | 0) < (f | 0) ? c : f;\n e = (d | 0) < (e | 0) ? d : e;\n if ((e | 0) <= 0) { return; }\n b[a >> 2] = f - e;\n b[i >> 2] = c - e;\n b[h >> 2] = d - e;\n return;\n }\n\n function Ka(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n d = b[h >> 2] | 0;\n i = a + 8 | 0;\n e = b[i >> 2] | 0;\n f = d + (c * 3 | 0) | 0;\n b[a >> 2] = f;\n d = e + (d * 3 | 0) | 0;\n b[h >> 2] = d;\n c = (e * 3 | 0) + c | 0;\n b[i >> 2] = c;\n e = d - f | 0;\n\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = e;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n d = e;\n e = 0;\n } else { e = f; }\n\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n\n g = e - c | 0;\n f = d - c | 0;\n\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else { f = d; }\n\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n\n function La(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n f = b[a >> 2] | 0;\n h = a + 4 | 0;\n c = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n e = (c * 3 | 0) + f | 0;\n f = d + (f * 3 | 0) | 0;\n b[a >> 2] = f;\n b[h >> 2] = e;\n c = (d * 3 | 0) + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n f = 0;\n } else { d = e; }\n\n if ((d | 0) < 0) {\n f = f - d | 0;\n b[a >> 2] = f;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n\n g = f - c | 0;\n e = d - c | 0;\n\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = e;\n b[i >> 2] = 0;\n f = g;\n c = 0;\n } else { e = d; }\n\n d = (e | 0) < (f | 0) ? e : f;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = f - d;\n b[h >> 2] = e - d;\n b[i >> 2] = c - d;\n return;\n }\n\n function Ma(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n if ((c + -1 | 0) >>> 0 >= 6) { return; }\n f = (b[15472 + (c * 12 | 0) >> 2] | 0) + (b[a >> 2] | 0) | 0;\n b[a >> 2] = f;\n i = a + 4 | 0;\n e = (b[15472 + (c * 12 | 0) + 4 >> 2] | 0) + (b[i >> 2] | 0) | 0;\n b[i >> 2] = e;\n h = a + 8 | 0;\n c = (b[15472 + (c * 12 | 0) + 8 >> 2] | 0) + (b[h >> 2] | 0) | 0;\n b[h >> 2] = c;\n d = e - f | 0;\n\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[i >> 2] = d;\n b[h >> 2] = c;\n b[a >> 2] = 0;\n e = 0;\n } else {\n d = e;\n e = f;\n }\n\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[h >> 2] = c;\n b[i >> 2] = 0;\n d = 0;\n }\n\n g = e - c | 0;\n f = d - c | 0;\n\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[i >> 2] = f;\n b[h >> 2] = 0;\n e = g;\n c = 0;\n } else { f = d; }\n\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = e - d;\n b[i >> 2] = f - d;\n b[h >> 2] = c - d;\n return;\n }\n\n function Na(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n f = b[a >> 2] | 0;\n h = a + 4 | 0;\n c = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n e = c + f | 0;\n f = d + f | 0;\n b[a >> 2] = f;\n b[h >> 2] = e;\n c = d + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n e = 0;\n } else {\n d = e;\n e = f;\n }\n\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n\n g = e - c | 0;\n f = d - c | 0;\n\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else { f = d; }\n\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n\n function Oa(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n e = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n f = e + c | 0;\n b[a >> 2] = f;\n e = d + e | 0;\n b[h >> 2] = e;\n c = d + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n e = 0;\n } else {\n d = e;\n e = f;\n }\n\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n\n g = e - c | 0;\n f = d - c | 0;\n\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else { f = d; }\n\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n\n function Pa(a) {\n a = a | 0;\n\n switch (a | 0) {\n case 1:\n {\n a = 5;\n break;\n }\n\n case 5:\n {\n a = 4;\n break;\n }\n\n case 4:\n {\n a = 6;\n break;\n }\n\n case 6:\n {\n a = 2;\n break;\n }\n\n case 2:\n {\n a = 3;\n break;\n }\n\n case 3:\n {\n a = 1;\n break;\n }\n\n default:\n\n }\n\n return a | 0;\n }\n\n function Qa(a) {\n a = a | 0;\n\n switch (a | 0) {\n case 1:\n {\n a = 3;\n break;\n }\n\n case 3:\n {\n a = 2;\n break;\n }\n\n case 2:\n {\n a = 6;\n break;\n }\n\n case 6:\n {\n a = 4;\n break;\n }\n\n case 4:\n {\n a = 5;\n break;\n }\n\n case 5:\n {\n a = 1;\n break;\n }\n\n default:\n\n }\n\n return a | 0;\n }\n\n function Ra(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n d = b[h >> 2] | 0;\n i = a + 8 | 0;\n e = b[i >> 2] | 0;\n f = d + (c << 1) | 0;\n b[a >> 2] = f;\n d = e + (d << 1) | 0;\n b[h >> 2] = d;\n c = (e << 1) + c | 0;\n b[i >> 2] = c;\n e = d - f | 0;\n\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = e;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n d = e;\n e = 0;\n } else { e = f; }\n\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n\n g = e - c | 0;\n f = d - c | 0;\n\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else { f = d; }\n\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n\n function Sa(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n f = b[a >> 2] | 0;\n h = a + 4 | 0;\n c = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n e = (c << 1) + f | 0;\n f = d + (f << 1) | 0;\n b[a >> 2] = f;\n b[h >> 2] = e;\n c = (d << 1) + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n f = 0;\n } else { d = e; }\n\n if ((d | 0) < 0) {\n f = f - d | 0;\n b[a >> 2] = f;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n\n g = f - c | 0;\n e = d - c | 0;\n\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = e;\n b[i >> 2] = 0;\n f = g;\n c = 0;\n } else { e = d; }\n\n d = (e | 0) < (f | 0) ? e : f;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = f - d;\n b[h >> 2] = e - d;\n b[i >> 2] = c - d;\n return;\n }\n\n function Ta(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = (b[a >> 2] | 0) - (b[c >> 2] | 0) | 0;\n i = (h | 0) < 0;\n e = (b[a + 4 >> 2] | 0) - (b[c + 4 >> 2] | 0) - (i ? h : 0) | 0;\n g = (e | 0) < 0;\n f = (i ? 0 - h | 0 : 0) + (b[a + 8 >> 2] | 0) - (b[c + 8 >> 2] | 0) + (g ? 0 - e | 0 : 0) | 0;\n a = (f | 0) < 0;\n c = a ? 0 : f;\n d = (g ? 0 : e) - (a ? f : 0) | 0;\n f = (i ? 0 : h) - (g ? e : 0) - (a ? f : 0) | 0;\n a = (d | 0) < (f | 0) ? d : f;\n a = (c | 0) < (a | 0) ? c : a;\n e = (a | 0) > 0;\n c = c - (e ? a : 0) | 0;\n d = d - (e ? a : 0) | 0;\n a = f - (e ? a : 0) | 0;\n a = (a | 0) > -1 ? a : 0 - a | 0;\n d = (d | 0) > -1 ? d : 0 - d | 0;\n c = (c | 0) > -1 ? c : 0 - c | 0;\n c = (d | 0) > (c | 0) ? d : c;\n return ((a | 0) > (c | 0) ? a : c) | 0;\n }\n\n function Ua(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0;\n d = b[a + 8 >> 2] | 0;\n b[c >> 2] = (b[a >> 2] | 0) - d;\n b[c + 4 >> 2] = (b[a + 4 >> 2] | 0) - d;\n return;\n }\n\n function Va(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n e = b[a >> 2] | 0;\n b[c >> 2] = e;\n a = b[a + 4 >> 2] | 0;\n h = c + 4 | 0;\n b[h >> 2] = a;\n i = c + 8 | 0;\n b[i >> 2] = 0;\n d = a - e | 0;\n\n if ((e | 0) < 0) {\n a = 0 - e | 0;\n b[h >> 2] = d;\n b[i >> 2] = a;\n b[c >> 2] = 0;\n e = 0;\n } else {\n d = a;\n a = 0;\n }\n\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[c >> 2] = e;\n a = a - d | 0;\n b[i >> 2] = a;\n b[h >> 2] = 0;\n d = 0;\n }\n\n g = e - a | 0;\n f = d - a | 0;\n\n if ((a | 0) < 0) {\n b[c >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n d = f;\n f = g;\n a = 0;\n } else { f = e; }\n\n e = (d | 0) < (f | 0) ? d : f;\n e = (a | 0) < (e | 0) ? a : e;\n if ((e | 0) <= 0) { return; }\n b[c >> 2] = f - e;\n b[h >> 2] = d - e;\n b[i >> 2] = a - e;\n return;\n }\n\n function Wa(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0;\n c = a + 8 | 0;\n f = b[c >> 2] | 0;\n d = f - (b[a >> 2] | 0) | 0;\n b[a >> 2] = d;\n e = a + 4 | 0;\n a = (b[e >> 2] | 0) - f | 0;\n b[e >> 2] = a;\n b[c >> 2] = 0 - (a + d);\n return;\n }\n\n function Xa(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n d = b[a >> 2] | 0;\n c = 0 - d | 0;\n b[a >> 2] = c;\n h = a + 8 | 0;\n b[h >> 2] = 0;\n i = a + 4 | 0;\n e = b[i >> 2] | 0;\n f = e + d | 0;\n\n if ((d | 0) > 0) {\n b[i >> 2] = f;\n b[h >> 2] = d;\n b[a >> 2] = 0;\n c = 0;\n e = f;\n } else { d = 0; }\n\n if ((e | 0) < 0) {\n g = c - e | 0;\n b[a >> 2] = g;\n d = d - e | 0;\n b[h >> 2] = d;\n b[i >> 2] = 0;\n f = g - d | 0;\n c = 0 - d | 0;\n\n if ((d | 0) < 0) {\n b[a >> 2] = f;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n e = c;\n d = 0;\n } else {\n e = 0;\n f = g;\n }\n } else { f = c; }\n\n c = (e | 0) < (f | 0) ? e : f;\n c = (d | 0) < (c | 0) ? d : c;\n if ((c | 0) <= 0) { return; }\n b[a >> 2] = f - c;\n b[i >> 2] = e - c;\n b[h >> 2] = d - c;\n return;\n }\n\n function Ya(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n d = S;\n S = S + 16 | 0;\n e = d;\n Za(a, b, c, e);\n Ba(e, c + 4 | 0);\n S = d;\n return;\n }\n\n function Za(a, c, d, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n var g = 0.0,\n h = 0,\n i = 0.0,\n j = 0.0,\n k = 0;\n k = S;\n S = S + 32 | 0;\n h = k;\n Jc(a, h);\n b[d >> 2] = 0;\n g = +Ic(15888, h);\n i = +Ic(15912, h);\n\n if (i < g) {\n b[d >> 2] = 1;\n g = i;\n }\n\n i = +Ic(15936, h);\n\n if (i < g) {\n b[d >> 2] = 2;\n g = i;\n }\n\n i = +Ic(15960, h);\n\n if (i < g) {\n b[d >> 2] = 3;\n g = i;\n }\n\n i = +Ic(15984, h);\n\n if (i < g) {\n b[d >> 2] = 4;\n g = i;\n }\n\n i = +Ic(16008, h);\n\n if (i < g) {\n b[d >> 2] = 5;\n g = i;\n }\n\n i = +Ic(16032, h);\n\n if (i < g) {\n b[d >> 2] = 6;\n g = i;\n }\n\n i = +Ic(16056, h);\n\n if (i < g) {\n b[d >> 2] = 7;\n g = i;\n }\n\n i = +Ic(16080, h);\n\n if (i < g) {\n b[d >> 2] = 8;\n g = i;\n }\n\n i = +Ic(16104, h);\n\n if (i < g) {\n b[d >> 2] = 9;\n g = i;\n }\n\n i = +Ic(16128, h);\n\n if (i < g) {\n b[d >> 2] = 10;\n g = i;\n }\n\n i = +Ic(16152, h);\n\n if (i < g) {\n b[d >> 2] = 11;\n g = i;\n }\n\n i = +Ic(16176, h);\n\n if (i < g) {\n b[d >> 2] = 12;\n g = i;\n }\n\n i = +Ic(16200, h);\n\n if (i < g) {\n b[d >> 2] = 13;\n g = i;\n }\n\n i = +Ic(16224, h);\n\n if (i < g) {\n b[d >> 2] = 14;\n g = i;\n }\n\n i = +Ic(16248, h);\n\n if (i < g) {\n b[d >> 2] = 15;\n g = i;\n }\n\n i = +Ic(16272, h);\n\n if (i < g) {\n b[d >> 2] = 16;\n g = i;\n }\n\n i = +Ic(16296, h);\n\n if (i < g) {\n b[d >> 2] = 17;\n g = i;\n }\n\n i = +Ic(16320, h);\n\n if (i < g) {\n b[d >> 2] = 18;\n g = i;\n }\n\n i = +Ic(16344, h);\n\n if (i < g) {\n b[d >> 2] = 19;\n g = i;\n }\n\n i = +w(+(1.0 - g * .5));\n\n if (i < 1.0e-16) {\n b[f >> 2] = 0;\n b[f + 4 >> 2] = 0;\n b[f + 8 >> 2] = 0;\n b[f + 12 >> 2] = 0;\n S = k;\n return;\n }\n\n d = b[d >> 2] | 0;\n g = +e[16368 + (d * 24 | 0) >> 3];\n g = +gb(g - +gb(+lb(15568 + (d << 4) | 0, a)));\n if (!(Rb(c) | 0)) { j = g; }else { j = +gb(g + -.3334731722518321); }\n g = +v(+i) / .381966011250105;\n\n if ((c | 0) > 0) {\n h = 0;\n\n do {\n g = g * 2.6457513110645907;\n h = h + 1 | 0;\n } while ((h | 0) != (c | 0));\n }\n\n i = +t(+j) * g;\n e[f >> 3] = i;\n j = +u(+j) * g;\n e[f + 8 >> 3] = j;\n S = k;\n return;\n }\n\n function _a(a, c, d, f, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n var h = 0.0,\n i = 0.0;\n h = +Fc(a);\n\n if (h < 1.0e-16) {\n c = 15568 + (c << 4) | 0;\n b[g >> 2] = b[c >> 2];\n b[g + 4 >> 2] = b[c + 4 >> 2];\n b[g + 8 >> 2] = b[c + 8 >> 2];\n b[g + 12 >> 2] = b[c + 12 >> 2];\n return;\n }\n\n i = +z(+ +e[a + 8 >> 3], + +e[a >> 3]);\n\n if ((d | 0) > 0) {\n a = 0;\n\n do {\n h = h / 2.6457513110645907;\n a = a + 1 | 0;\n } while ((a | 0) != (d | 0));\n }\n\n if (!f) {\n h = +y(+(h * .381966011250105));\n if (Rb(d) | 0) { i = +gb(i + .3334731722518321); }\n } else {\n h = h / 3.0;\n d = (Rb(d) | 0) == 0;\n h = +y(+((d ? h : h / 2.6457513110645907) * .381966011250105));\n }\n\n mb(15568 + (c << 4) | 0, +gb(+e[16368 + (c * 24 | 0) >> 3] - i), h, g);\n return;\n }\n\n function $a(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0;\n e = S;\n S = S + 16 | 0;\n f = e;\n Da(a + 4 | 0, f);\n\n _a(f, b[a >> 2] | 0, c, 0, d);\n\n S = e;\n return;\n }\n\n function ab(a, c, d, f, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n var h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0,\n D = 0,\n E = 0,\n F = 0,\n G = 0,\n I = 0.0,\n J = 0.0;\n G = S;\n S = S + 272 | 0;\n h = G + 256 | 0;\n u = G + 240 | 0;\n D = G;\n E = G + 224 | 0;\n F = G + 208 | 0;\n v = G + 176 | 0;\n w = G + 160 | 0;\n x = G + 192 | 0;\n y = G + 144 | 0;\n z = G + 128 | 0;\n A = G + 112 | 0;\n B = G + 96 | 0;\n C = G + 80 | 0;\n b[h >> 2] = c;\n b[u >> 2] = b[a >> 2];\n b[u + 4 >> 2] = b[a + 4 >> 2];\n b[u + 8 >> 2] = b[a + 8 >> 2];\n b[u + 12 >> 2] = b[a + 12 >> 2];\n bb(u, h, D);\n b[g >> 2] = 0;\n u = f + d + ((f | 0) == 5 & 1) | 0;\n\n if ((u | 0) <= (d | 0)) {\n S = G;\n return;\n }\n\n k = b[h >> 2] | 0;\n l = E + 4 | 0;\n m = v + 4 | 0;\n n = d + 5 | 0;\n o = 16848 + (k << 2) | 0;\n p = 16928 + (k << 2) | 0;\n q = z + 8 | 0;\n r = A + 8 | 0;\n s = B + 8 | 0;\n t = F + 4 | 0;\n j = d;\n\n a: while (1) {\n i = D + (((j | 0) % 5 | 0) << 4) | 0;\n b[F >> 2] = b[i >> 2];\n b[F + 4 >> 2] = b[i + 4 >> 2];\n b[F + 8 >> 2] = b[i + 8 >> 2];\n b[F + 12 >> 2] = b[i + 12 >> 2];\n\n do {} while ((cb(F, k, 0, 1) | 0) == 2);\n\n if ((j | 0) > (d | 0) & (Rb(c) | 0) != 0) {\n b[v >> 2] = b[F >> 2];\n b[v + 4 >> 2] = b[F + 4 >> 2];\n b[v + 8 >> 2] = b[F + 8 >> 2];\n b[v + 12 >> 2] = b[F + 12 >> 2];\n Da(l, w);\n f = b[v >> 2] | 0;\n h = b[17008 + (f * 80 | 0) + (b[E >> 2] << 2) >> 2] | 0;\n b[v >> 2] = b[18608 + (f * 80 | 0) + (h * 20 | 0) >> 2];\n i = b[18608 + (f * 80 | 0) + (h * 20 | 0) + 16 >> 2] | 0;\n\n if ((i | 0) > 0) {\n a = 0;\n\n do {\n Na(m);\n a = a + 1 | 0;\n } while ((a | 0) < (i | 0));\n }\n\n i = 18608 + (f * 80 | 0) + (h * 20 | 0) + 4 | 0;\n b[x >> 2] = b[i >> 2];\n b[x + 4 >> 2] = b[i + 4 >> 2];\n b[x + 8 >> 2] = b[i + 8 >> 2];\n Ga(x, (b[o >> 2] | 0) * 3 | 0);\n Ea(m, x, m);\n Ca(m);\n Da(m, y);\n I = +(b[p >> 2] | 0);\n e[z >> 3] = I * 3.0;\n e[q >> 3] = 0.0;\n J = I * -1.5;\n e[A >> 3] = J;\n e[r >> 3] = I * 2.598076211353316;\n e[B >> 3] = J;\n e[s >> 3] = I * -2.598076211353316;\n\n switch (b[17008 + ((b[v >> 2] | 0) * 80 | 0) + (b[F >> 2] << 2) >> 2] | 0) {\n case 1:\n {\n a = A;\n f = z;\n break;\n }\n\n case 3:\n {\n a = B;\n f = A;\n break;\n }\n\n case 2:\n {\n a = z;\n f = B;\n break;\n }\n\n default:\n {\n a = 12;\n break a;\n }\n }\n\n Gc(w, y, f, a, C);\n\n _a(C, b[v >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n\n if ((j | 0) < (n | 0)) {\n Da(t, v);\n\n _a(v, b[F >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n b[E >> 2] = b[F >> 2];\n b[E + 4 >> 2] = b[F + 4 >> 2];\n b[E + 8 >> 2] = b[F + 8 >> 2];\n b[E + 12 >> 2] = b[F + 12 >> 2];\n j = j + 1 | 0;\n\n if ((j | 0) >= (u | 0)) {\n a = 3;\n break;\n }\n }\n\n if ((a | 0) == 3) {\n S = G;\n return;\n } else if ((a | 0) == 12) { H(22474, 22521, 581, 22531); }\n }\n\n function bb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n j = S;\n S = S + 128 | 0;\n e = j + 64 | 0;\n f = j;\n g = e;\n h = 20208;\n i = g + 60 | 0;\n\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n } while ((g | 0) < (i | 0));\n\n g = f;\n h = 20272;\n i = g + 60 | 0;\n\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n } while ((g | 0) < (i | 0));\n\n i = (Rb(b[c >> 2] | 0) | 0) == 0;\n e = i ? e : f;\n f = a + 4 | 0;\n Ra(f);\n Sa(f);\n\n if (Rb(b[c >> 2] | 0) | 0) {\n La(f);\n b[c >> 2] = (b[c >> 2] | 0) + 1;\n }\n\n b[d >> 2] = b[a >> 2];\n c = d + 4 | 0;\n Ea(f, e, c);\n Ca(c);\n b[d + 16 >> 2] = b[a >> 2];\n c = d + 20 | 0;\n Ea(f, e + 12 | 0, c);\n Ca(c);\n b[d + 32 >> 2] = b[a >> 2];\n c = d + 36 | 0;\n Ea(f, e + 24 | 0, c);\n Ca(c);\n b[d + 48 >> 2] = b[a >> 2];\n c = d + 52 | 0;\n Ea(f, e + 36 | 0, c);\n Ca(c);\n b[d + 64 >> 2] = b[a >> 2];\n d = d + 68 | 0;\n Ea(f, e + 48 | 0, d);\n Ca(d);\n S = j;\n return;\n }\n\n function cb(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0;\n p = S;\n S = S + 32 | 0;\n n = p + 12 | 0;\n i = p;\n o = a + 4 | 0;\n m = b[16928 + (c << 2) >> 2] | 0;\n l = (e | 0) != 0;\n m = l ? m * 3 | 0 : m;\n f = b[o >> 2] | 0;\n k = a + 8 | 0;\n h = b[k >> 2] | 0;\n\n if (l) {\n g = a + 12 | 0;\n e = b[g >> 2] | 0;\n f = h + f + e | 0;\n\n if ((f | 0) == (m | 0)) {\n o = 1;\n S = p;\n return o | 0;\n } else { j = g; }\n } else {\n j = a + 12 | 0;\n e = b[j >> 2] | 0;\n f = h + f + e | 0;\n }\n\n if ((f | 0) <= (m | 0)) {\n o = 0;\n S = p;\n return o | 0;\n }\n\n do { if ((e | 0) > 0) {\n e = b[a >> 2] | 0;\n\n if ((h | 0) > 0) {\n g = 18608 + (e * 80 | 0) + 60 | 0;\n e = a;\n break;\n }\n\n e = 18608 + (e * 80 | 0) + 40 | 0;\n\n if (!d) {\n g = e;\n e = a;\n } else {\n Aa(n, m, 0, 0);\n Fa(o, n, i);\n Oa(i);\n Ea(i, n, o);\n g = e;\n e = a;\n }\n } else {\n g = 18608 + ((b[a >> 2] | 0) * 80 | 0) + 20 | 0;\n e = a;\n } } while (0);\n\n b[e >> 2] = b[g >> 2];\n f = g + 16 | 0;\n\n if ((b[f >> 2] | 0) > 0) {\n e = 0;\n\n do {\n Na(o);\n e = e + 1 | 0;\n } while ((e | 0) < (b[f >> 2] | 0));\n }\n\n a = g + 4 | 0;\n b[n >> 2] = b[a >> 2];\n b[n + 4 >> 2] = b[a + 4 >> 2];\n b[n + 8 >> 2] = b[a + 8 >> 2];\n c = b[16848 + (c << 2) >> 2] | 0;\n Ga(n, l ? c * 3 | 0 : c);\n Ea(o, n, o);\n Ca(o);\n if (l) { e = ((b[k >> 2] | 0) + (b[o >> 2] | 0) + (b[j >> 2] | 0) | 0) == (m | 0) ? 1 : 2; }else { e = 2; }\n o = e;\n S = p;\n return o | 0;\n }\n\n function db(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n\n do { c = cb(a, b, 0, 1) | 0; } while ((c | 0) == 2);\n\n return c | 0;\n }\n\n function eb(a, c, d, f, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n var h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0.0,\n D = 0.0;\n B = S;\n S = S + 240 | 0;\n h = B + 224 | 0;\n x = B + 208 | 0;\n y = B;\n z = B + 192 | 0;\n A = B + 176 | 0;\n s = B + 160 | 0;\n t = B + 144 | 0;\n u = B + 128 | 0;\n v = B + 112 | 0;\n w = B + 96 | 0;\n b[h >> 2] = c;\n b[x >> 2] = b[a >> 2];\n b[x + 4 >> 2] = b[a + 4 >> 2];\n b[x + 8 >> 2] = b[a + 8 >> 2];\n b[x + 12 >> 2] = b[a + 12 >> 2];\n fb(x, h, y);\n b[g >> 2] = 0;\n r = f + d + ((f | 0) == 6 & 1) | 0;\n\n if ((r | 0) <= (d | 0)) {\n S = B;\n return;\n }\n\n k = b[h >> 2] | 0;\n l = d + 6 | 0;\n m = 16928 + (k << 2) | 0;\n n = t + 8 | 0;\n o = u + 8 | 0;\n p = v + 8 | 0;\n q = z + 4 | 0;\n i = 0;\n j = d;\n f = -1;\n\n a: while (1) {\n h = (j | 0) % 6 | 0;\n a = y + (h << 4) | 0;\n b[z >> 2] = b[a >> 2];\n b[z + 4 >> 2] = b[a + 4 >> 2];\n b[z + 8 >> 2] = b[a + 8 >> 2];\n b[z + 12 >> 2] = b[a + 12 >> 2];\n a = i;\n i = cb(z, k, 0, 1) | 0;\n\n if ((j | 0) > (d | 0) & (Rb(c) | 0) != 0 ? (a | 0) != 1 ? (b[z >> 2] | 0) != (f | 0) : 0 : 0) {\n Da(y + (((h + 5 | 0) % 6 | 0) << 4) + 4 | 0, A);\n Da(y + (h << 4) + 4 | 0, s);\n C = +(b[m >> 2] | 0);\n e[t >> 3] = C * 3.0;\n e[n >> 3] = 0.0;\n D = C * -1.5;\n e[u >> 3] = D;\n e[o >> 3] = C * 2.598076211353316;\n e[v >> 3] = D;\n e[p >> 3] = C * -2.598076211353316;\n h = b[x >> 2] | 0;\n\n switch (b[17008 + (h * 80 | 0) + (((f | 0) == (h | 0) ? b[z >> 2] | 0 : f) << 2) >> 2] | 0) {\n case 1:\n {\n a = u;\n f = t;\n break;\n }\n\n case 3:\n {\n a = v;\n f = u;\n break;\n }\n\n case 2:\n {\n a = t;\n f = v;\n break;\n }\n\n default:\n {\n a = 8;\n break a;\n }\n }\n\n Gc(A, s, f, a, w);\n\n if (!(Hc(A, w) | 0) ? !(Hc(s, w) | 0) : 0) {\n _a(w, b[x >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n }\n\n if ((j | 0) < (l | 0)) {\n Da(q, A);\n\n _a(A, b[z >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n\n j = j + 1 | 0;\n\n if ((j | 0) >= (r | 0)) {\n a = 3;\n break;\n } else { f = b[z >> 2] | 0; }\n }\n\n if ((a | 0) == 3) {\n S = B;\n return;\n } else if ((a | 0) == 8) { H(22557, 22521, 746, 22602); }\n }\n\n function fb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n j = S;\n S = S + 160 | 0;\n e = j + 80 | 0;\n f = j;\n g = e;\n h = 20336;\n i = g + 72 | 0;\n\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n } while ((g | 0) < (i | 0));\n\n g = f;\n h = 20416;\n i = g + 72 | 0;\n\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n } while ((g | 0) < (i | 0));\n\n i = (Rb(b[c >> 2] | 0) | 0) == 0;\n e = i ? e : f;\n f = a + 4 | 0;\n Ra(f);\n Sa(f);\n\n if (Rb(b[c >> 2] | 0) | 0) {\n La(f);\n b[c >> 2] = (b[c >> 2] | 0) + 1;\n }\n\n b[d >> 2] = b[a >> 2];\n c = d + 4 | 0;\n Ea(f, e, c);\n Ca(c);\n b[d + 16 >> 2] = b[a >> 2];\n c = d + 20 | 0;\n Ea(f, e + 12 | 0, c);\n Ca(c);\n b[d + 32 >> 2] = b[a >> 2];\n c = d + 36 | 0;\n Ea(f, e + 24 | 0, c);\n Ca(c);\n b[d + 48 >> 2] = b[a >> 2];\n c = d + 52 | 0;\n Ea(f, e + 36 | 0, c);\n Ca(c);\n b[d + 64 >> 2] = b[a >> 2];\n c = d + 68 | 0;\n Ea(f, e + 48 | 0, c);\n Ca(c);\n b[d + 80 >> 2] = b[a >> 2];\n d = d + 84 | 0;\n Ea(f, e + 60 | 0, d);\n Ca(d);\n S = j;\n return;\n }\n\n function gb(a) {\n a = +a;\n var b = 0.0;\n b = a < 0.0 ? a + 6.283185307179586 : a;\n return +(!(a >= 6.283185307179586) ? b : b + -6.283185307179586);\n }\n\n function hb(a, b) {\n a = a | 0;\n b = b | 0;\n\n if (!(+q(+(+e[a >> 3] - +e[b >> 3])) < 1.7453292519943298e-11)) {\n b = 0;\n return b | 0;\n }\n\n b = +q(+(+e[a + 8 >> 3] - +e[b + 8 >> 3])) < 1.7453292519943298e-11;\n return b | 0;\n }\n\n function ib(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0,\n g = 0.0;\n f = +e[b >> 3];\n d = +e[a >> 3];\n g = +u(+((f - d) * .5));\n c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n c = g * g + c * (+t(+f) * +t(+d) * c);\n return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 2.0);\n }\n\n function jb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0,\n g = 0.0;\n f = +e[b >> 3];\n d = +e[a >> 3];\n g = +u(+((f - d) * .5));\n c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n c = g * g + c * (+t(+f) * +t(+d) * c);\n return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 2.0 * 6371.007180918475);\n }\n\n function kb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0,\n g = 0.0;\n f = +e[b >> 3];\n d = +e[a >> 3];\n g = +u(+((f - d) * .5));\n c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n c = g * g + c * (+t(+f) * +t(+d) * c);\n return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 2.0 * 6371.007180918475 * 1.0e3);\n }\n\n function lb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0,\n g = 0.0,\n h = 0.0;\n g = +e[b >> 3];\n d = +t(+g);\n f = +e[b + 8 >> 3] - +e[a + 8 >> 3];\n h = d * +u(+f);\n c = +e[a >> 3];\n return + +z(+h, +(+u(+g) * +t(+c) - +t(+f) * (d * +u(+c))));\n }\n\n function mb(a, c, d, f) {\n a = a | 0;\n c = +c;\n d = +d;\n f = f | 0;\n var g = 0,\n h = 0.0,\n i = 0.0,\n j = 0.0;\n\n if (d < 1.0e-16) {\n b[f >> 2] = b[a >> 2];\n b[f + 4 >> 2] = b[a + 4 >> 2];\n b[f + 8 >> 2] = b[a + 8 >> 2];\n b[f + 12 >> 2] = b[a + 12 >> 2];\n return;\n }\n\n h = c < 0.0 ? c + 6.283185307179586 : c;\n h = !(c >= 6.283185307179586) ? h : h + -6.283185307179586;\n\n do { if (h < 1.0e-16) {\n c = +e[a >> 3] + d;\n e[f >> 3] = c;\n g = f;\n } else {\n g = +q(+(h + -3.141592653589793)) < 1.0e-16;\n c = +e[a >> 3];\n\n if (g) {\n c = c - d;\n e[f >> 3] = c;\n g = f;\n break;\n }\n\n i = +t(+d);\n d = +u(+d);\n c = i * +u(+c) + +t(+h) * (d * +t(+c));\n c = c > 1.0 ? 1.0 : c;\n c = +x(+(c < -1.0 ? -1.0 : c));\n e[f >> 3] = c;\n\n if (+q(+(c + -1.5707963267948966)) < 1.0e-16) {\n e[f >> 3] = 1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n\n if (+q(+(c + 1.5707963267948966)) < 1.0e-16) {\n e[f >> 3] = -1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n\n j = +t(+c);\n h = d * +u(+h) / j;\n d = +e[a >> 3];\n c = (i - +u(+c) * +u(+d)) / +t(+d) / j;\n i = h > 1.0 ? 1.0 : h;\n c = c > 1.0 ? 1.0 : c;\n c = +e[a + 8 >> 3] + +z(+(i < -1.0 ? -1.0 : i), +(c < -1.0 ? -1.0 : c));\n if (c > 3.141592653589793) { do { c = c + -6.283185307179586; } while (c > 3.141592653589793); }\n if (c < -3.141592653589793) { do { c = c + 6.283185307179586; } while (c < -3.141592653589793); }\n e[f + 8 >> 3] = c;\n return;\n } } while (0);\n\n if (+q(+(c + -1.5707963267948966)) < 1.0e-16) {\n e[g >> 3] = 1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n\n if (+q(+(c + 1.5707963267948966)) < 1.0e-16) {\n e[g >> 3] = -1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n\n c = +e[a + 8 >> 3];\n if (c > 3.141592653589793) { do { c = c + -6.283185307179586; } while (c > 3.141592653589793); }\n if (c < -3.141592653589793) { do { c = c + 6.283185307179586; } while (c < -3.141592653589793); }\n e[f + 8 >> 3] = c;\n return;\n }\n\n function nb(a) {\n a = a | 0;\n return + +e[20496 + (a << 3) >> 3];\n }\n\n function ob(a) {\n a = a | 0;\n return + +e[20624 + (a << 3) >> 3];\n }\n\n function pb(a) {\n a = a | 0;\n return + +e[20752 + (a << 3) >> 3];\n }\n\n function qb(a) {\n a = a | 0;\n return + +e[20880 + (a << 3) >> 3];\n }\n\n function rb(a) {\n a = a | 0;\n var c = 0;\n c = 21008 + (a << 3) | 0;\n a = b[c >> 2] | 0;\n F(b[c + 4 >> 2] | 0);\n return a | 0;\n }\n\n function sb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0.0,\n f = 0.0,\n g = 0.0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0.0,\n n = 0.0;\n n = +e[b >> 3];\n l = +e[a >> 3];\n j = +u(+((n - l) * .5));\n g = +e[b + 8 >> 3];\n k = +e[a + 8 >> 3];\n h = +u(+((g - k) * .5));\n i = +t(+l);\n m = +t(+n);\n h = j * j + h * (m * i * h);\n h = +z(+ +r(+h), + +r(+(1.0 - h))) * 2.0;\n j = +e[c >> 3];\n n = +u(+((j - n) * .5));\n d = +e[c + 8 >> 3];\n g = +u(+((d - g) * .5));\n f = +t(+j);\n g = n * n + g * (m * f * g);\n g = +z(+ +r(+g), + +r(+(1.0 - g))) * 2.0;\n j = +u(+((l - j) * .5));\n d = +u(+((k - d) * .5));\n d = j * j + d * (i * f * d);\n d = +z(+ +r(+d), + +r(+(1.0 - d))) * 2.0;\n f = (h + g + d) * .5;\n return +(+y(+ +r(+(+v(+(f * .5)) * +v(+((f - h) * .5)) * +v(+((f - g) * .5)) * +v(+((f - d) * .5))))) * 4.0);\n }\n\n function tb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;\n g = S;\n S = S + 192 | 0;\n e = g + 168 | 0;\n f = g;\n Vb(a, c, e);\n Wb(a, c, f);\n c = b[f >> 2] | 0;\n\n if ((c | 0) <= 0) {\n d = 0.0;\n S = g;\n return +d;\n }\n\n d = +sb(f + 8 | 0, f + 8 + (((c | 0) != 1 & 1) << 4) | 0, e) + 0.0;\n\n if ((c | 0) == 1) {\n S = g;\n return +d;\n }\n\n a = 1;\n\n do {\n h = a;\n a = a + 1 | 0;\n d = d + +sb(f + 8 + (h << 4) | 0, f + 8 + (((a | 0) % (c | 0) | 0) << 4) | 0, e);\n } while ((a | 0) < (c | 0));\n\n S = g;\n return +d;\n }\n\n function ub(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;\n g = S;\n S = S + 192 | 0;\n e = g + 168 | 0;\n f = g;\n Vb(a, c, e);\n Wb(a, c, f);\n c = b[f >> 2] | 0;\n\n if ((c | 0) > 0) {\n d = +sb(f + 8 | 0, f + 8 + (((c | 0) != 1 & 1) << 4) | 0, e) + 0.0;\n\n if ((c | 0) != 1) {\n a = 1;\n\n do {\n h = a;\n a = a + 1 | 0;\n d = d + +sb(f + 8 + (h << 4) | 0, f + 8 + (((a | 0) % (c | 0) | 0) << 4) | 0, e);\n } while ((a | 0) < (c | 0));\n }\n } else { d = 0.0; }\n\n S = g;\n return +(d * 6371.007180918475 * 6371.007180918475);\n }\n\n function vb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;\n g = S;\n S = S + 192 | 0;\n e = g + 168 | 0;\n f = g;\n Vb(a, c, e);\n Wb(a, c, f);\n c = b[f >> 2] | 0;\n\n if ((c | 0) > 0) {\n d = +sb(f + 8 | 0, f + 8 + (((c | 0) != 1 & 1) << 4) | 0, e) + 0.0;\n\n if ((c | 0) != 1) {\n a = 1;\n\n do {\n h = a;\n a = a + 1 | 0;\n d = d + +sb(f + 8 + (h << 4) | 0, f + 8 + (((a | 0) % (c | 0) | 0) << 4) | 0, e);\n } while ((a | 0) < (c | 0));\n }\n } else { d = 0.0; }\n\n S = g;\n return +(d * 6371.007180918475 * 6371.007180918475 * 1.0e3 * 1.0e3);\n }\n\n function wb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n f = 0.0,\n g = 0.0,\n h = 0,\n i = 0,\n j = 0.0,\n k = 0.0,\n l = 0.0;\n i = S;\n S = S + 176 | 0;\n h = i;\n gc(a, c, h);\n a = b[h >> 2] | 0;\n\n if ((a | 0) <= 1) {\n g = 0.0;\n S = i;\n return +g;\n }\n\n c = a + -1 | 0;\n a = 0;\n d = 0.0;\n f = +e[h + 8 >> 3];\n g = +e[h + 16 >> 3];\n\n do {\n a = a + 1 | 0;\n k = f;\n f = +e[h + 8 + (a << 4) >> 3];\n l = +u(+((f - k) * .5));\n j = g;\n g = +e[h + 8 + (a << 4) + 8 >> 3];\n j = +u(+((g - j) * .5));\n j = l * l + j * (+t(+f) * +t(+k) * j);\n d = d + +z(+ +r(+j), + +r(+(1.0 - j))) * 2.0;\n } while ((a | 0) < (c | 0));\n\n S = i;\n return +d;\n }\n\n function xb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n f = 0.0,\n g = 0.0,\n h = 0,\n i = 0,\n j = 0.0,\n k = 0.0,\n l = 0.0;\n i = S;\n S = S + 176 | 0;\n h = i;\n gc(a, c, h);\n a = b[h >> 2] | 0;\n\n if ((a | 0) <= 1) {\n g = 0.0;\n S = i;\n return +g;\n }\n\n c = a + -1 | 0;\n a = 0;\n d = 0.0;\n f = +e[h + 8 >> 3];\n g = +e[h + 16 >> 3];\n\n do {\n a = a + 1 | 0;\n k = f;\n f = +e[h + 8 + (a << 4) >> 3];\n l = +u(+((f - k) * .5));\n j = g;\n g = +e[h + 8 + (a << 4) + 8 >> 3];\n j = +u(+((g - j) * .5));\n j = l * l + j * (+t(+k) * +t(+f) * j);\n d = d + +z(+ +r(+j), + +r(+(1.0 - j))) * 2.0;\n } while ((a | 0) != (c | 0));\n\n l = d * 6371.007180918475;\n S = i;\n return +l;\n }\n\n function yb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n f = 0.0,\n g = 0.0,\n h = 0,\n i = 0,\n j = 0.0,\n k = 0.0,\n l = 0.0;\n i = S;\n S = S + 176 | 0;\n h = i;\n gc(a, c, h);\n a = b[h >> 2] | 0;\n\n if ((a | 0) <= 1) {\n g = 0.0;\n S = i;\n return +g;\n }\n\n c = a + -1 | 0;\n a = 0;\n d = 0.0;\n f = +e[h + 8 >> 3];\n g = +e[h + 16 >> 3];\n\n do {\n a = a + 1 | 0;\n k = f;\n f = +e[h + 8 + (a << 4) >> 3];\n l = +u(+((f - k) * .5));\n j = g;\n g = +e[h + 8 + (a << 4) + 8 >> 3];\n j = +u(+((g - j) * .5));\n j = l * l + j * (+t(+k) * +t(+f) * j);\n d = d + +z(+ +r(+j), + +r(+(1.0 - j))) * 2.0;\n } while ((a | 0) != (c | 0));\n\n l = d * 6371.007180918475 * 1.0e3;\n S = i;\n return +l;\n }\n\n function zb(a, b) {\n a = a | 0;\n b = b | 0;\n b = cd(a | 0, b | 0, 52) | 0;\n G() | 0;\n return b & 15 | 0;\n }\n\n function Ab(a, b) {\n a = a | 0;\n b = b | 0;\n b = cd(a | 0, b | 0, 45) | 0;\n G() | 0;\n return b & 127 | 0;\n }\n\n function Bb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;\n\n if (!(0 == 0 & (b & -16777216 | 0) == 134217728)) {\n b = 0;\n return b | 0;\n }\n\n g = cd(a | 0, b | 0, 45) | 0;\n G() | 0;\n g = g & 127;\n\n if (g >>> 0 > 121) {\n b = 0;\n return b | 0;\n }\n\n c = cd(a | 0, b | 0, 52) | 0;\n G() | 0;\n c = c & 15;\n\n do { if (c | 0) {\n e = 1;\n d = 0;\n\n while (1) {\n f = cd(a | 0, b | 0, (15 - e | 0) * 3 | 0) | 0;\n G() | 0;\n f = f & 7;\n if ((f | 0) != 0 & (d ^ 1)) { if ((f | 0) == 1 & (la(g) | 0) != 0) {\n h = 0;\n d = 13;\n break;\n } else { d = 1; } }\n\n if ((f | 0) == 7) {\n h = 0;\n d = 13;\n break;\n }\n\n if (e >>> 0 < c >>> 0) { e = e + 1 | 0; }else {\n d = 9;\n break;\n }\n }\n\n if ((d | 0) == 9) {\n if ((c | 0) == 15) { h = 1; }else { break; }\n return h | 0;\n } else if ((d | 0) == 13) { return h | 0; }\n } } while (0);\n\n while (1) {\n h = cd(a | 0, b | 0, (14 - c | 0) * 3 | 0) | 0;\n G() | 0;\n\n if (!((h & 7 | 0) == 7 & 0 == 0)) {\n h = 0;\n d = 13;\n break;\n }\n\n if (c >>> 0 < 14) { c = c + 1 | 0; }else {\n h = 1;\n d = 13;\n break;\n }\n }\n\n if ((d | 0) == 13) { return h | 0; }\n return 0;\n }\n\n function Cb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n d = cd(a | 0, b | 0, 52) | 0;\n G() | 0;\n d = d & 15;\n\n if ((d | 0) >= (c | 0)) {\n if ((d | 0) != (c | 0)) { if (c >>> 0 <= 15) {\n e = dd(c | 0, 0, 52) | 0;\n a = e | a;\n b = G() | 0 | b & -15728641;\n if ((d | 0) > (c | 0)) { do {\n e = dd(7, 0, (14 - c | 0) * 3 | 0) | 0;\n c = c + 1 | 0;\n a = e | a;\n b = G() | 0 | b;\n } while ((c | 0) < (d | 0)); }\n } else {\n b = 0;\n a = 0;\n } }\n } else {\n b = 0;\n a = 0;\n }\n\n F(b | 0);\n return a | 0;\n }\n\n function Db(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n a = cd(a | 0, b | 0, 52) | 0;\n G() | 0;\n a = a & 15;\n\n if (!((c | 0) < 16 & (a | 0) <= (c | 0))) {\n c = 0;\n return c | 0;\n }\n\n c = tc(7, c - a | 0) | 0;\n return c | 0;\n }\n\n function Eb(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0;\n h = cd(a | 0, c | 0, 52) | 0;\n G() | 0;\n h = h & 15;\n if (!((d | 0) < 16 & (h | 0) <= (d | 0))) { return; }\n\n if ((h | 0) == (d | 0)) {\n d = e;\n b[d >> 2] = a;\n b[d + 4 >> 2] = c;\n return;\n }\n\n j = tc(7, d - h | 0) | 0;\n k = (j | 0) / 7 | 0;\n i = cd(a | 0, c | 0, 45) | 0;\n G() | 0;\n if (!(la(i & 127) | 0)) { g = 0; }else {\n a: do { if (!h) { f = 0; }else {\n g = 1;\n\n while (1) {\n f = cd(a | 0, c | 0, (15 - g | 0) * 3 | 0) | 0;\n G() | 0;\n f = f & 7;\n if (f | 0) { break a; }\n if (g >>> 0 < h >>> 0) { g = g + 1 | 0; }else {\n f = 0;\n break;\n }\n }\n } } while (0);\n\n g = (f | 0) == 0;\n }\n l = dd(h + 1 | 0, 0, 52) | 0;\n f = G() | 0 | c & -15728641;\n i = (14 - h | 0) * 3 | 0;\n c = dd(7, 0, i | 0) | 0;\n c = (l | a) & ~c;\n h = f & ~(G() | 0);\n Eb(c, h, d, e);\n f = e + (k << 3) | 0;\n\n if (!g) {\n l = dd(1, 0, i | 0) | 0;\n Eb(l | c, G() | 0 | h, d, f);\n l = f + (k << 3) | 0;\n j = dd(2, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = dd(3, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = dd(4, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = dd(5, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l);\n j = dd(6, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l + (k << 3) | 0);\n return;\n }\n\n g = f + (k << 3) | 0;\n\n if ((j | 0) > 6) {\n j = f + 8 | 0;\n l = (g >>> 0 > j >>> 0 ? g : j) + -1 + (0 - f) | 0;\n hd(f | 0, 0, l + 8 & -8 | 0) | 0;\n f = j + (l >>> 3 << 3) | 0;\n }\n\n l = dd(2, 0, i | 0) | 0;\n Eb(l | c, G() | 0 | h, d, f);\n l = f + (k << 3) | 0;\n j = dd(3, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = dd(4, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = dd(5, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l);\n j = dd(6, 0, i | 0) | 0;\n Eb(j | c, G() | 0 | h, d, l + (k << 3) | 0);\n return;\n }\n\n function Fb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0;\n e = cd(a | 0, b | 0, 45) | 0;\n G() | 0;\n\n if (!(la(e & 127) | 0)) {\n e = 0;\n return e | 0;\n }\n\n e = cd(a | 0, b | 0, 52) | 0;\n G() | 0;\n e = e & 15;\n\n a: do { if (!e) { c = 0; }else {\n d = 1;\n\n while (1) {\n c = cd(a | 0, b | 0, (15 - d | 0) * 3 | 0) | 0;\n G() | 0;\n c = c & 7;\n if (c | 0) { break a; }\n if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else {\n c = 0;\n break;\n }\n }\n } } while (0);\n\n e = (c | 0) == 0 & 1;\n return e | 0;\n }\n\n function Gb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n d = cd(a | 0, b | 0, 52) | 0;\n G() | 0;\n d = d & 15;\n\n if ((c | 0) < 16 & (d | 0) <= (c | 0)) {\n if ((d | 0) != (c | 0)) {\n e = dd(c | 0, 0, 52) | 0;\n a = e | a;\n b = G() | 0 | b & -15728641;\n if ((d | 0) < (c | 0)) { do {\n e = dd(7, 0, (14 - d | 0) * 3 | 0) | 0;\n d = d + 1 | 0;\n a = a & ~e;\n b = b & ~(G() | 0);\n } while ((d | 0) < (c | 0)); }\n }\n } else {\n b = 0;\n a = 0;\n }\n\n F(b | 0);\n return a | 0;\n }\n\n function Hb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0;\n\n if (!d) {\n y = 0;\n return y | 0;\n }\n\n f = a;\n e = b[f >> 2] | 0;\n f = b[f + 4 >> 2] | 0;\n\n if (0 == 0 & (f & 15728640 | 0) == 0) {\n if ((d | 0) <= 0) {\n y = 0;\n return y | 0;\n }\n\n y = c;\n b[y >> 2] = e;\n b[y + 4 >> 2] = f;\n\n if ((d | 0) == 1) {\n y = 0;\n return y | 0;\n }\n\n e = 1;\n\n do {\n w = a + (e << 3) | 0;\n x = b[w + 4 >> 2] | 0;\n y = c + (e << 3) | 0;\n b[y >> 2] = b[w >> 2];\n b[y + 4 >> 2] = x;\n e = e + 1 | 0;\n } while ((e | 0) != (d | 0));\n\n e = 0;\n return e | 0;\n }\n\n w = d << 3;\n x = Wc(w) | 0;\n\n if (!x) {\n y = -3;\n return y | 0;\n }\n\n gd(x | 0, a | 0, w | 0) | 0;\n v = Yc(d, 8) | 0;\n\n if (!v) {\n Xc(x);\n y = -3;\n return y | 0;\n }\n\n e = d;\n\n a: while (1) {\n h = x;\n l = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n t = cd(l | 0, h | 0, 52) | 0;\n G() | 0;\n t = t & 15;\n u = t + -1 | 0;\n s = (e | 0) > 0;\n\n b: do { if (s) {\n r = ((e | 0) < 0) << 31 >> 31;\n p = dd(u | 0, 0, 52) | 0;\n q = G() | 0;\n\n if (u >>> 0 > 15) {\n f = 0;\n a = l;\n d = h;\n\n while (1) {\n if (!((a | 0) == 0 & (d | 0) == 0)) {\n g = cd(a | 0, d | 0, 52) | 0;\n G() | 0;\n g = g & 15;\n i = (g | 0) < (u | 0);\n g = (g | 0) == (u | 0);\n k = i ? 0 : g ? a : 0;\n a = i ? 0 : g ? d : 0;\n d = bd(k | 0, a | 0, e | 0, r | 0) | 0;\n G() | 0;\n g = v + (d << 3) | 0;\n i = g;\n j = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n if ((j | 0) == 0 & (i | 0) == 0) { d = k; }else {\n p = 0;\n o = d;\n n = i;\n d = k;\n\n while (1) {\n if ((p | 0) > (e | 0)) {\n y = 41;\n break a;\n }\n\n if ((j | 0) == (d | 0) & (n & -117440513 | 0) == (a | 0)) {\n k = cd(j | 0, n | 0, 56) | 0;\n G() | 0;\n k = k & 7;\n m = k + 1 | 0;\n q = cd(j | 0, n | 0, 45) | 0;\n G() | 0;\n\n c: do { if (!(la(q & 127) | 0)) { i = 7; }else {\n j = cd(j | 0, n | 0, 52) | 0;\n G() | 0;\n j = j & 15;\n\n if (!j) {\n i = 6;\n break;\n }\n\n i = 1;\n\n while (1) {\n q = dd(7, 0, (15 - i | 0) * 3 | 0) | 0;\n\n if (!((q & d | 0) == 0 & ((G() | 0) & a | 0) == 0)) {\n i = 7;\n break c;\n }\n\n if (i >>> 0 < j >>> 0) { i = i + 1 | 0; }else {\n i = 6;\n break;\n }\n }\n } } while (0);\n\n if ((k + 2 | 0) >>> 0 > i >>> 0) {\n y = 51;\n break a;\n }\n\n q = dd(m | 0, 0, 56) | 0;\n a = G() | 0 | a & -117440513;\n i = g;\n b[i >> 2] = 0;\n b[i + 4 >> 2] = 0;\n i = o;\n d = q | d;\n } else { i = (o + 1 | 0) % (e | 0) | 0; }\n\n g = v + (i << 3) | 0;\n n = g;\n j = b[n >> 2] | 0;\n n = b[n + 4 >> 2] | 0;\n if ((j | 0) == 0 & (n | 0) == 0) { break; }else {\n p = p + 1 | 0;\n o = i;\n }\n }\n }\n q = g;\n b[q >> 2] = d;\n b[q + 4 >> 2] = a;\n }\n\n f = f + 1 | 0;\n if ((f | 0) >= (e | 0)) { break b; }\n d = x + (f << 3) | 0;\n a = b[d >> 2] | 0;\n d = b[d + 4 >> 2] | 0;\n }\n }\n\n f = 0;\n a = l;\n d = h;\n\n while (1) {\n if (!((a | 0) == 0 & (d | 0) == 0)) {\n i = cd(a | 0, d | 0, 52) | 0;\n G() | 0;\n i = i & 15;\n\n if ((i | 0) >= (u | 0)) {\n if ((i | 0) != (u | 0)) {\n a = a | p;\n d = d & -15728641 | q;\n\n if (i >>> 0 >= t >>> 0) {\n g = u;\n\n do {\n o = dd(7, 0, (14 - g | 0) * 3 | 0) | 0;\n g = g + 1 | 0;\n a = o | a;\n d = G() | 0 | d;\n } while (g >>> 0 < i >>> 0);\n }\n }\n } else {\n a = 0;\n d = 0;\n }\n\n i = bd(a | 0, d | 0, e | 0, r | 0) | 0;\n G() | 0;\n g = v + (i << 3) | 0;\n j = g;\n k = b[j >> 2] | 0;\n j = b[j + 4 >> 2] | 0;\n\n if (!((k | 0) == 0 & (j | 0) == 0)) {\n o = 0;\n\n while (1) {\n if ((o | 0) > (e | 0)) {\n y = 41;\n break a;\n }\n\n if ((k | 0) == (a | 0) & (j & -117440513 | 0) == (d | 0)) {\n m = cd(k | 0, j | 0, 56) | 0;\n G() | 0;\n m = m & 7;\n n = m + 1 | 0;\n z = cd(k | 0, j | 0, 45) | 0;\n G() | 0;\n\n d: do { if (!(la(z & 127) | 0)) { j = 7; }else {\n k = cd(k | 0, j | 0, 52) | 0;\n G() | 0;\n k = k & 15;\n\n if (!k) {\n j = 6;\n break;\n }\n\n j = 1;\n\n while (1) {\n z = dd(7, 0, (15 - j | 0) * 3 | 0) | 0;\n\n if (!((z & a | 0) == 0 & ((G() | 0) & d | 0) == 0)) {\n j = 7;\n break d;\n }\n\n if (j >>> 0 < k >>> 0) { j = j + 1 | 0; }else {\n j = 6;\n break;\n }\n }\n } } while (0);\n\n if ((m + 2 | 0) >>> 0 > j >>> 0) {\n y = 51;\n break a;\n }\n\n z = dd(n | 0, 0, 56) | 0;\n d = G() | 0 | d & -117440513;\n n = g;\n b[n >> 2] = 0;\n b[n + 4 >> 2] = 0;\n a = z | a;\n } else { i = (i + 1 | 0) % (e | 0) | 0; }\n\n g = v + (i << 3) | 0;\n j = g;\n k = b[j >> 2] | 0;\n j = b[j + 4 >> 2] | 0;\n if ((k | 0) == 0 & (j | 0) == 0) { break; }else { o = o + 1 | 0; }\n }\n }\n\n z = g;\n b[z >> 2] = a;\n b[z + 4 >> 2] = d;\n }\n\n f = f + 1 | 0;\n if ((f | 0) >= (e | 0)) { break b; }\n d = x + (f << 3) | 0;\n a = b[d >> 2] | 0;\n d = b[d + 4 >> 2] | 0;\n }\n } } while (0);\n\n if ((e + 5 | 0) >>> 0 < 11) {\n y = 99;\n break;\n }\n\n q = Yc((e | 0) / 6 | 0, 8) | 0;\n\n if (!q) {\n y = 58;\n break;\n }\n\n e: do { if (s) {\n o = 0;\n n = 0;\n\n do {\n i = v + (o << 3) | 0;\n a = i;\n f = b[a >> 2] | 0;\n a = b[a + 4 >> 2] | 0;\n\n if (!((f | 0) == 0 & (a | 0) == 0)) {\n j = cd(f | 0, a | 0, 56) | 0;\n G() | 0;\n j = j & 7;\n d = j + 1 | 0;\n k = a & -117440513;\n z = cd(f | 0, a | 0, 45) | 0;\n G() | 0;\n\n f: do { if (la(z & 127) | 0) {\n m = cd(f | 0, a | 0, 52) | 0;\n G() | 0;\n m = m & 15;\n\n if (m | 0) {\n g = 1;\n\n while (1) {\n z = dd(7, 0, (15 - g | 0) * 3 | 0) | 0;\n if (!((f & z | 0) == 0 & (k & (G() | 0) | 0) == 0)) { break f; }\n if (g >>> 0 < m >>> 0) { g = g + 1 | 0; }else { break; }\n }\n }\n\n a = dd(d | 0, 0, 56) | 0;\n f = a | f;\n a = G() | 0 | k;\n d = i;\n b[d >> 2] = f;\n b[d + 4 >> 2] = a;\n d = j + 2 | 0;\n } } while (0);\n\n if ((d | 0) == 7) {\n z = q + (n << 3) | 0;\n b[z >> 2] = f;\n b[z + 4 >> 2] = a & -117440513;\n n = n + 1 | 0;\n }\n }\n\n o = o + 1 | 0;\n } while ((o | 0) != (e | 0));\n\n if (s) {\n p = ((e | 0) < 0) << 31 >> 31;\n m = dd(u | 0, 0, 52) | 0;\n o = G() | 0;\n\n if (u >>> 0 > 15) {\n a = 0;\n f = 0;\n\n while (1) {\n do { if (!((l | 0) == 0 & (h | 0) == 0)) {\n j = cd(l | 0, h | 0, 52) | 0;\n G() | 0;\n j = j & 15;\n g = (j | 0) < (u | 0);\n j = (j | 0) == (u | 0);\n i = g ? 0 : j ? l : 0;\n j = g ? 0 : j ? h : 0;\n g = bd(i | 0, j | 0, e | 0, p | 0) | 0;\n G() | 0;\n d = 0;\n\n while (1) {\n if ((d | 0) > (e | 0)) {\n y = 98;\n break a;\n }\n\n z = v + (g << 3) | 0;\n k = b[z + 4 >> 2] | 0;\n\n if ((k & -117440513 | 0) == (j | 0) ? (b[z >> 2] | 0) == (i | 0) : 0) {\n y = 70;\n break;\n }\n\n g = (g + 1 | 0) % (e | 0) | 0;\n z = v + (g << 3) | 0;\n if ((b[z >> 2] | 0) == (i | 0) ? (b[z + 4 >> 2] | 0) == (j | 0) : 0) { break; }else { d = d + 1 | 0; }\n }\n\n if ((y | 0) == 70 ? (y = 0, 0 == 0 & (k & 117440512 | 0) == 100663296) : 0) { break; }\n z = c + (f << 3) | 0;\n b[z >> 2] = l;\n b[z + 4 >> 2] = h;\n f = f + 1 | 0;\n } } while (0);\n\n a = a + 1 | 0;\n\n if ((a | 0) >= (e | 0)) {\n e = n;\n break e;\n }\n\n h = x + (a << 3) | 0;\n l = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n }\n }\n\n a = 0;\n f = 0;\n\n while (1) {\n do { if (!((l | 0) == 0 & (h | 0) == 0)) {\n j = cd(l | 0, h | 0, 52) | 0;\n G() | 0;\n j = j & 15;\n if ((j | 0) >= (u | 0)) {\n if ((j | 0) != (u | 0)) {\n d = l | m;\n g = h & -15728641 | o;\n if (j >>> 0 < t >>> 0) { j = g; }else {\n i = u;\n\n do {\n z = dd(7, 0, (14 - i | 0) * 3 | 0) | 0;\n i = i + 1 | 0;\n d = z | d;\n g = G() | 0 | g;\n } while (i >>> 0 < j >>> 0);\n\n j = g;\n }\n } else {\n d = l;\n j = h;\n }\n } else {\n d = 0;\n j = 0;\n }\n i = bd(d | 0, j | 0, e | 0, p | 0) | 0;\n G() | 0;\n g = 0;\n\n while (1) {\n if ((g | 0) > (e | 0)) {\n y = 98;\n break a;\n }\n\n z = v + (i << 3) | 0;\n k = b[z + 4 >> 2] | 0;\n\n if ((k & -117440513 | 0) == (j | 0) ? (b[z >> 2] | 0) == (d | 0) : 0) {\n y = 93;\n break;\n }\n\n i = (i + 1 | 0) % (e | 0) | 0;\n z = v + (i << 3) | 0;\n if ((b[z >> 2] | 0) == (d | 0) ? (b[z + 4 >> 2] | 0) == (j | 0) : 0) { break; }else { g = g + 1 | 0; }\n }\n\n if ((y | 0) == 93 ? (y = 0, 0 == 0 & (k & 117440512 | 0) == 100663296) : 0) { break; }\n z = c + (f << 3) | 0;\n b[z >> 2] = l;\n b[z + 4 >> 2] = h;\n f = f + 1 | 0;\n } } while (0);\n\n a = a + 1 | 0;\n\n if ((a | 0) >= (e | 0)) {\n e = n;\n break e;\n }\n\n h = x + (a << 3) | 0;\n l = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n }\n } else {\n f = 0;\n e = n;\n }\n } else {\n f = 0;\n e = 0;\n } } while (0);\n\n hd(v | 0, 0, w | 0) | 0;\n gd(x | 0, q | 0, e << 3 | 0) | 0;\n Xc(q);\n if (!e) { break; }else { c = c + (f << 3) | 0; }\n }\n\n if ((y | 0) == 41) {\n Xc(x);\n Xc(v);\n z = -1;\n return z | 0;\n } else if ((y | 0) == 51) {\n Xc(x);\n Xc(v);\n z = -2;\n return z | 0;\n } else if ((y | 0) == 58) {\n Xc(x);\n Xc(v);\n z = -3;\n return z | 0;\n } else if ((y | 0) == 98) {\n Xc(q);\n Xc(x);\n Xc(v);\n z = -1;\n return z | 0;\n } else if ((y | 0) == 99) { gd(c | 0, x | 0, e << 3 | 0) | 0; }\n\n Xc(x);\n Xc(v);\n z = 0;\n return z | 0;\n }\n\n function Ib(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0;\n\n if ((c | 0) <= 0) {\n f = 0;\n return f | 0;\n }\n\n if ((f | 0) >= 16) {\n g = 0;\n\n while (1) {\n l = a + (g << 3) | 0;\n\n if (!((b[l >> 2] | 0) == 0 & (b[l + 4 >> 2] | 0) == 0)) {\n g = 14;\n break;\n }\n\n g = g + 1 | 0;\n\n if ((g | 0) >= (c | 0)) {\n h = 0;\n g = 16;\n break;\n }\n }\n\n if ((g | 0) == 14) { return ((e | 0) > 0 ? -2 : -1) | 0; }else if ((g | 0) == 16) { return h | 0; }\n }\n\n g = 0;\n l = 0;\n\n a: while (1) {\n k = a + (l << 3) | 0;\n i = k;\n h = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n\n do { if (!((h | 0) == 0 & (i | 0) == 0)) {\n if ((g | 0) >= (e | 0)) {\n h = -1;\n g = 16;\n break a;\n }\n\n j = cd(h | 0, i | 0, 52) | 0;\n G() | 0;\n j = j & 15;\n\n if ((j | 0) > (f | 0)) {\n h = -2;\n g = 16;\n break a;\n }\n\n if ((j | 0) == (f | 0)) {\n k = d + (g << 3) | 0;\n b[k >> 2] = h;\n b[k + 4 >> 2] = i;\n g = g + 1 | 0;\n break;\n }\n\n h = (tc(7, f - j | 0) | 0) + g | 0;\n\n if ((h | 0) > (e | 0)) {\n h = -1;\n g = 16;\n break a;\n }\n\n Eb(b[k >> 2] | 0, b[k + 4 >> 2] | 0, f, d + (g << 3) | 0);\n g = h;\n } } while (0);\n\n l = l + 1 | 0;\n\n if ((l | 0) >= (c | 0)) {\n h = 0;\n g = 16;\n break;\n }\n }\n\n if ((g | 0) == 16) { return h | 0; }\n return 0;\n }\n\n function Jb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0;\n\n if ((c | 0) <= 0) {\n d = 0;\n return d | 0;\n }\n\n if ((d | 0) >= 16) {\n e = 0;\n\n while (1) {\n h = a + (e << 3) | 0;\n\n if (!((b[h >> 2] | 0) == 0 & (b[h + 4 >> 2] | 0) == 0)) {\n e = -1;\n f = 13;\n break;\n }\n\n e = e + 1 | 0;\n\n if ((e | 0) >= (c | 0)) {\n e = 0;\n f = 13;\n break;\n }\n }\n\n if ((f | 0) == 13) { return e | 0; }\n }\n\n e = 0;\n h = 0;\n\n a: while (1) {\n f = a + (h << 3) | 0;\n g = b[f >> 2] | 0;\n f = b[f + 4 >> 2] | 0;\n\n do { if (!((g | 0) == 0 & (f | 0) == 0)) {\n f = cd(g | 0, f | 0, 52) | 0;\n G() | 0;\n f = f & 15;\n\n if ((f | 0) > (d | 0)) {\n e = -1;\n f = 13;\n break a;\n }\n\n if ((f | 0) == (d | 0)) {\n e = e + 1 | 0;\n break;\n } else {\n e = (tc(7, d - f | 0) | 0) + e | 0;\n break;\n }\n } } while (0);\n\n h = h + 1 | 0;\n\n if ((h | 0) >= (c | 0)) {\n f = 13;\n break;\n }\n }\n\n if ((f | 0) == 13) { return e | 0; }\n return 0;\n }\n\n function Kb(a, b) {\n a = a | 0;\n b = b | 0;\n b = cd(a | 0, b | 0, 52) | 0;\n G() | 0;\n return b & 1 | 0;\n }\n\n function Lb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0;\n e = cd(a | 0, b | 0, 52) | 0;\n G() | 0;\n e = e & 15;\n\n if (!e) {\n e = 0;\n return e | 0;\n }\n\n d = 1;\n\n while (1) {\n c = cd(a | 0, b | 0, (15 - d | 0) * 3 | 0) | 0;\n G() | 0;\n c = c & 7;\n\n if (c | 0) {\n d = 5;\n break;\n }\n\n if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else {\n c = 0;\n d = 5;\n break;\n }\n }\n\n if ((d | 0) == 5) { return c | 0; }\n return 0;\n }\n\n function Mb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n i = cd(a | 0, b | 0, 52) | 0;\n G() | 0;\n i = i & 15;\n\n if (!i) {\n h = b;\n i = a;\n F(h | 0);\n return i | 0;\n }\n\n h = 1;\n c = 0;\n\n while (1) {\n f = (15 - h | 0) * 3 | 0;\n d = dd(7, 0, f | 0) | 0;\n e = G() | 0;\n g = cd(a | 0, b | 0, f | 0) | 0;\n G() | 0;\n f = dd(Pa(g & 7) | 0, 0, f | 0) | 0;\n g = G() | 0;\n a = f | a & ~d;\n b = g | b & ~e;\n\n a: do { if (!c) { if (!((f & d | 0) == 0 & (g & e | 0) == 0)) {\n d = cd(a | 0, b | 0, 52) | 0;\n G() | 0;\n d = d & 15;\n if (!d) { c = 1; }else {\n c = 1;\n\n b: while (1) {\n g = cd(a | 0, b | 0, (15 - c | 0) * 3 | 0) | 0;\n G() | 0;\n\n switch (g & 7) {\n case 1:\n break b;\n\n case 0:\n break;\n\n default:\n {\n c = 1;\n break a;\n }\n }\n\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n c = 1;\n break a;\n }\n }\n\n c = 1;\n\n while (1) {\n g = (15 - c | 0) * 3 | 0;\n e = cd(a | 0, b | 0, g | 0) | 0;\n G() | 0;\n f = dd(7, 0, g | 0) | 0;\n b = b & ~(G() | 0);\n g = dd(Pa(e & 7) | 0, 0, g | 0) | 0;\n a = a & ~f | g;\n b = b | (G() | 0);\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n c = 1;\n break;\n }\n }\n }\n } else { c = 0; } } } while (0);\n\n if (h >>> 0 < i >>> 0) { h = h + 1 | 0; }else { break; }\n }\n\n F(b | 0);\n return a | 0;\n }\n\n function Nb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0;\n d = cd(a | 0, b | 0, 52) | 0;\n G() | 0;\n d = d & 15;\n\n if (!d) {\n c = b;\n d = a;\n F(c | 0);\n return d | 0;\n }\n\n c = 1;\n\n while (1) {\n f = (15 - c | 0) * 3 | 0;\n g = cd(a | 0, b | 0, f | 0) | 0;\n G() | 0;\n e = dd(7, 0, f | 0) | 0;\n b = b & ~(G() | 0);\n f = dd(Pa(g & 7) | 0, 0, f | 0) | 0;\n a = f | a & ~e;\n b = G() | 0 | b;\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else { break; }\n }\n\n F(b | 0);\n return a | 0;\n }\n\n function Ob(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n i = cd(a | 0, b | 0, 52) | 0;\n G() | 0;\n i = i & 15;\n\n if (!i) {\n h = b;\n i = a;\n F(h | 0);\n return i | 0;\n }\n\n h = 1;\n c = 0;\n\n while (1) {\n f = (15 - h | 0) * 3 | 0;\n d = dd(7, 0, f | 0) | 0;\n e = G() | 0;\n g = cd(a | 0, b | 0, f | 0) | 0;\n G() | 0;\n f = dd(Qa(g & 7) | 0, 0, f | 0) | 0;\n g = G() | 0;\n a = f | a & ~d;\n b = g | b & ~e;\n\n a: do { if (!c) { if (!((f & d | 0) == 0 & (g & e | 0) == 0)) {\n d = cd(a | 0, b | 0, 52) | 0;\n G() | 0;\n d = d & 15;\n if (!d) { c = 1; }else {\n c = 1;\n\n b: while (1) {\n g = cd(a | 0, b | 0, (15 - c | 0) * 3 | 0) | 0;\n G() | 0;\n\n switch (g & 7) {\n case 1:\n break b;\n\n case 0:\n break;\n\n default:\n {\n c = 1;\n break a;\n }\n }\n\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n c = 1;\n break a;\n }\n }\n\n c = 1;\n\n while (1) {\n e = (15 - c | 0) * 3 | 0;\n f = dd(7, 0, e | 0) | 0;\n g = b & ~(G() | 0);\n b = cd(a | 0, b | 0, e | 0) | 0;\n G() | 0;\n b = dd(Qa(b & 7) | 0, 0, e | 0) | 0;\n a = a & ~f | b;\n b = g | (G() | 0);\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n c = 1;\n break;\n }\n }\n }\n } else { c = 0; } } } while (0);\n\n if (h >>> 0 < i >>> 0) { h = h + 1 | 0; }else { break; }\n }\n\n F(b | 0);\n return a | 0;\n }\n\n function Pb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0;\n d = cd(a | 0, b | 0, 52) | 0;\n G() | 0;\n d = d & 15;\n\n if (!d) {\n c = b;\n d = a;\n F(c | 0);\n return d | 0;\n }\n\n c = 1;\n\n while (1) {\n g = (15 - c | 0) * 3 | 0;\n f = dd(7, 0, g | 0) | 0;\n e = b & ~(G() | 0);\n b = cd(a | 0, b | 0, g | 0) | 0;\n G() | 0;\n b = dd(Qa(b & 7) | 0, 0, g | 0) | 0;\n a = b | a & ~f;\n b = G() | 0 | e;\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else { break; }\n }\n\n F(b | 0);\n return a | 0;\n }\n\n function Qb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0;\n j = S;\n S = S + 64 | 0;\n i = j + 40 | 0;\n e = j + 24 | 0;\n f = j + 12 | 0;\n g = j;\n dd(c | 0, 0, 52) | 0;\n d = G() | 0 | 134225919;\n\n if (!c) {\n if ((b[a + 4 >> 2] | 0) > 2) {\n h = 0;\n i = 0;\n F(h | 0);\n S = j;\n return i | 0;\n }\n\n if ((b[a + 8 >> 2] | 0) > 2) {\n h = 0;\n i = 0;\n F(h | 0);\n S = j;\n return i | 0;\n }\n\n if ((b[a + 12 >> 2] | 0) > 2) {\n h = 0;\n i = 0;\n F(h | 0);\n S = j;\n return i | 0;\n }\n\n dd(na(a) | 0, 0, 45) | 0;\n h = G() | 0 | d;\n i = -1;\n F(h | 0);\n S = j;\n return i | 0;\n }\n b[i >> 2] = b[a >> 2];\n b[i + 4 >> 2] = b[a + 4 >> 2];\n b[i + 8 >> 2] = b[a + 8 >> 2];\n b[i + 12 >> 2] = b[a + 12 >> 2];\n h = i + 4 | 0;\n\n if ((c | 0) > 0) {\n a = -1;\n\n while (1) {\n b[e >> 2] = b[h >> 2];\n b[e + 4 >> 2] = b[h + 4 >> 2];\n b[e + 8 >> 2] = b[h + 8 >> 2];\n\n if (!(c & 1)) {\n Ja(h);\n b[f >> 2] = b[h >> 2];\n b[f + 4 >> 2] = b[h + 4 >> 2];\n b[f + 8 >> 2] = b[h + 8 >> 2];\n La(f);\n } else {\n Ia(h);\n b[f >> 2] = b[h >> 2];\n b[f + 4 >> 2] = b[h + 4 >> 2];\n b[f + 8 >> 2] = b[h + 8 >> 2];\n Ka(f);\n }\n\n Fa(e, f, g);\n Ca(g);\n l = (15 - c | 0) * 3 | 0;\n k = dd(7, 0, l | 0) | 0;\n d = d & ~(G() | 0);\n l = dd(Ha(g) | 0, 0, l | 0) | 0;\n a = l | a & ~k;\n d = G() | 0 | d;\n if ((c | 0) > 1) { c = c + -1 | 0; }else { break; }\n }\n } else { a = -1; }\n\n a: do { if (((b[h >> 2] | 0) <= 2 ? (b[i + 8 >> 2] | 0) <= 2 : 0) ? (b[i + 12 >> 2] | 0) <= 2 : 0) {\n e = na(i) | 0;\n c = dd(e | 0, 0, 45) | 0;\n c = c | a;\n a = G() | 0 | d & -1040385;\n g = oa(i) | 0;\n\n if (!(la(e) | 0)) {\n if ((g | 0) <= 0) { break; }\n f = 0;\n\n while (1) {\n e = cd(c | 0, a | 0, 52) | 0;\n G() | 0;\n e = e & 15;\n\n if (e) {\n d = 1;\n\n while (1) {\n l = (15 - d | 0) * 3 | 0;\n i = cd(c | 0, a | 0, l | 0) | 0;\n G() | 0;\n k = dd(7, 0, l | 0) | 0;\n a = a & ~(G() | 0);\n l = dd(Pa(i & 7) | 0, 0, l | 0) | 0;\n c = c & ~k | l;\n a = a | (G() | 0);\n if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else { break; }\n }\n }\n\n f = f + 1 | 0;\n if ((f | 0) == (g | 0)) { break a; }\n }\n }\n\n f = cd(c | 0, a | 0, 52) | 0;\n G() | 0;\n f = f & 15;\n\n b: do { if (f) {\n d = 1;\n\n c: while (1) {\n l = cd(c | 0, a | 0, (15 - d | 0) * 3 | 0) | 0;\n G() | 0;\n\n switch (l & 7) {\n case 1:\n break c;\n\n case 0:\n break;\n\n default:\n break b;\n }\n\n if (d >>> 0 < f >>> 0) { d = d + 1 | 0; }else { break b; }\n }\n\n if (ra(e, b[i >> 2] | 0) | 0) {\n d = 1;\n\n while (1) {\n i = (15 - d | 0) * 3 | 0;\n k = dd(7, 0, i | 0) | 0;\n l = a & ~(G() | 0);\n a = cd(c | 0, a | 0, i | 0) | 0;\n G() | 0;\n a = dd(Qa(a & 7) | 0, 0, i | 0) | 0;\n c = c & ~k | a;\n a = l | (G() | 0);\n if (d >>> 0 < f >>> 0) { d = d + 1 | 0; }else { break; }\n }\n } else {\n d = 1;\n\n while (1) {\n l = (15 - d | 0) * 3 | 0;\n i = cd(c | 0, a | 0, l | 0) | 0;\n G() | 0;\n k = dd(7, 0, l | 0) | 0;\n a = a & ~(G() | 0);\n l = dd(Pa(i & 7) | 0, 0, l | 0) | 0;\n c = c & ~k | l;\n a = a | (G() | 0);\n if (d >>> 0 < f >>> 0) { d = d + 1 | 0; }else { break; }\n }\n }\n } } while (0);\n\n if ((g | 0) > 0) {\n d = 0;\n\n do {\n c = Mb(c, a) | 0;\n a = G() | 0;\n d = d + 1 | 0;\n } while ((d | 0) != (g | 0));\n }\n } else {\n c = 0;\n a = 0;\n } } while (0);\n\n k = a;\n l = c;\n F(k | 0);\n S = j;\n return l | 0;\n }\n\n function Rb(a) {\n a = a | 0;\n return (a | 0) % 2 | 0 | 0;\n }\n\n function Sb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n e = S;\n S = S + 16 | 0;\n d = e;\n\n if ((c >>> 0 <= 15 ? !((b[a + 4 >> 2] & 2146435072 | 0) == 2146435072) : 0) ? !((b[a + 8 + 4 >> 2] & 2146435072 | 0) == 2146435072) : 0) {\n Ya(a, c, d);\n c = Qb(d, c) | 0;\n a = G() | 0;\n } else {\n a = 0;\n c = 0;\n }\n\n F(a | 0);\n S = e;\n return c | 0;\n }\n\n function Tb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0;\n f = d + 4 | 0;\n g = cd(a | 0, c | 0, 52) | 0;\n G() | 0;\n g = g & 15;\n h = cd(a | 0, c | 0, 45) | 0;\n G() | 0;\n e = (g | 0) == 0;\n\n if (!(la(h & 127) | 0)) {\n if (e) {\n h = 0;\n return h | 0;\n }\n\n if ((b[f >> 2] | 0) == 0 ? (b[d + 8 >> 2] | 0) == 0 : 0) { e = (b[d + 12 >> 2] | 0) != 0 & 1; }else { e = 1; }\n } else if (e) {\n h = 1;\n return h | 0;\n } else { e = 1; }\n\n d = 1;\n\n while (1) {\n if (!(d & 1)) { La(f); }else { Ka(f); }\n h = cd(a | 0, c | 0, (15 - d | 0) * 3 | 0) | 0;\n G() | 0;\n Ma(f, h & 7);\n if (d >>> 0 < g >>> 0) { d = d + 1 | 0; }else { break; }\n }\n\n return e | 0;\n }\n\n function Ub(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0;\n l = S;\n S = S + 16 | 0;\n j = l;\n k = cd(a | 0, c | 0, 45) | 0;\n G() | 0;\n k = k & 127;\n\n a: do { if ((la(k) | 0) != 0 ? (g = cd(a | 0, c | 0, 52) | 0, G() | 0, g = g & 15, (g | 0) != 0) : 0) {\n e = 1;\n\n b: while (1) {\n i = cd(a | 0, c | 0, (15 - e | 0) * 3 | 0) | 0;\n G() | 0;\n\n switch (i & 7) {\n case 5:\n break b;\n\n case 0:\n break;\n\n default:\n {\n e = c;\n break a;\n }\n }\n\n if (e >>> 0 < g >>> 0) { e = e + 1 | 0; }else {\n e = c;\n break a;\n }\n }\n\n f = 1;\n e = c;\n\n while (1) {\n c = (15 - f | 0) * 3 | 0;\n h = dd(7, 0, c | 0) | 0;\n i = e & ~(G() | 0);\n e = cd(a | 0, e | 0, c | 0) | 0;\n G() | 0;\n e = dd(Qa(e & 7) | 0, 0, c | 0) | 0;\n a = a & ~h | e;\n e = i | (G() | 0);\n if (f >>> 0 < g >>> 0) { f = f + 1 | 0; }else { break; }\n }\n } else { e = c; } } while (0);\n\n i = 7728 + (k * 28 | 0) | 0;\n b[d >> 2] = b[i >> 2];\n b[d + 4 >> 2] = b[i + 4 >> 2];\n b[d + 8 >> 2] = b[i + 8 >> 2];\n b[d + 12 >> 2] = b[i + 12 >> 2];\n\n if (!(Tb(a, e, d) | 0)) {\n S = l;\n return;\n }\n\n h = d + 4 | 0;\n b[j >> 2] = b[h >> 2];\n b[j + 4 >> 2] = b[h + 4 >> 2];\n b[j + 8 >> 2] = b[h + 8 >> 2];\n g = cd(a | 0, e | 0, 52) | 0;\n G() | 0;\n i = g & 15;\n if (!(g & 1)) { g = i; }else {\n La(h);\n g = i + 1 | 0;\n }\n if (!(la(k) | 0)) { e = 0; }else {\n c: do { if (!i) { e = 0; }else {\n c = 1;\n\n while (1) {\n f = cd(a | 0, e | 0, (15 - c | 0) * 3 | 0) | 0;\n G() | 0;\n f = f & 7;\n\n if (f | 0) {\n e = f;\n break c;\n }\n\n if (c >>> 0 < i >>> 0) { c = c + 1 | 0; }else {\n e = 0;\n break;\n }\n }\n } } while (0);\n\n e = (e | 0) == 4 & 1;\n }\n\n if (!(cb(d, g, e, 0) | 0)) {\n if ((g | 0) != (i | 0)) {\n b[h >> 2] = b[j >> 2];\n b[h + 4 >> 2] = b[j + 4 >> 2];\n b[h + 8 >> 2] = b[j + 8 >> 2];\n }\n } else {\n if (la(k) | 0) { do {} while ((cb(d, g, 0, 0) | 0) != 0); }\n if ((g | 0) != (i | 0)) { Ja(h); }\n }\n\n S = l;\n return;\n }\n\n function Vb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n d = S;\n S = S + 16 | 0;\n e = d;\n Ub(a, b, e);\n b = cd(a | 0, b | 0, 52) | 0;\n G() | 0;\n $a(e, b & 15, c);\n S = d;\n return;\n }\n\n function Wb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;\n g = S;\n S = S + 16 | 0;\n f = g;\n Ub(a, b, f);\n d = cd(a | 0, b | 0, 45) | 0;\n G() | 0;\n d = (la(d & 127) | 0) == 0;\n e = cd(a | 0, b | 0, 52) | 0;\n G() | 0;\n e = e & 15;\n\n a: do { if (!d) {\n if (e | 0) {\n d = 1;\n\n while (1) {\n h = dd(7, 0, (15 - d | 0) * 3 | 0) | 0;\n if (!((h & a | 0) == 0 & ((G() | 0) & b | 0) == 0)) { break a; }\n if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else { break; }\n }\n }\n\n ab(f, e, 0, 5, c);\n S = g;\n return;\n } } while (0);\n\n eb(f, e, 0, 6, c);\n S = g;\n return;\n }\n\n function Xb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0;\n d = cd(a | 0, b | 0, 45) | 0;\n G() | 0;\n\n if (!(la(d & 127) | 0)) {\n d = 2;\n return d | 0;\n }\n\n d = cd(a | 0, b | 0, 52) | 0;\n G() | 0;\n d = d & 15;\n\n if (!d) {\n d = 5;\n return d | 0;\n }\n\n c = 1;\n\n while (1) {\n e = dd(7, 0, (15 - c | 0) * 3 | 0) | 0;\n\n if (!((e & a | 0) == 0 & ((G() | 0) & b | 0) == 0)) {\n c = 2;\n a = 6;\n break;\n }\n\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n c = 5;\n a = 6;\n break;\n }\n }\n\n if ((a | 0) == 6) { return c | 0; }\n return 0;\n }\n\n function Yb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0;\n m = S;\n S = S + 128 | 0;\n k = m + 112 | 0;\n g = m + 96 | 0;\n l = m;\n f = cd(a | 0, c | 0, 52) | 0;\n G() | 0;\n i = f & 15;\n b[k >> 2] = i;\n h = cd(a | 0, c | 0, 45) | 0;\n G() | 0;\n h = h & 127;\n\n a: do { if (la(h) | 0) {\n if (i | 0) {\n e = 1;\n\n while (1) {\n j = dd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n\n if (!((j & a | 0) == 0 & ((G() | 0) & c | 0) == 0)) {\n f = 0;\n break a;\n }\n\n if (e >>> 0 < i >>> 0) { e = e + 1 | 0; }else { break; }\n }\n }\n\n if (!(f & 1)) {\n j = dd(i + 1 | 0, 0, 52) | 0;\n l = G() | 0 | c & -15728641;\n k = dd(7, 0, (14 - i | 0) * 3 | 0) | 0;\n Yb((j | a) & ~k, l & ~(G() | 0), d);\n S = m;\n return;\n } else { f = 1; }\n } else { f = 0; } } while (0);\n\n Ub(a, c, g);\n\n if (f) {\n bb(g, k, l);\n j = 5;\n } else {\n fb(g, k, l);\n j = 6;\n }\n\n b: do { if (la(h) | 0) {\n if (!i) { e = 20; }else {\n e = 1;\n\n while (1) {\n h = dd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n\n if (!((h & a | 0) == 0 & ((G() | 0) & c | 0) == 0)) {\n e = 8;\n break b;\n }\n\n if (e >>> 0 < i >>> 0) { e = e + 1 | 0; }else {\n e = 20;\n break;\n }\n }\n }\n } else { e = 8; } } while (0);\n\n hd(d | 0, -1, e | 0) | 0;\n\n if (f) {\n f = 0;\n\n do {\n g = l + (f << 4) | 0;\n db(g, b[k >> 2] | 0) | 0;\n g = b[g >> 2] | 0;\n e = 0;\n\n while (1) {\n h = d + (e << 2) | 0;\n i = b[h >> 2] | 0;\n if ((i | 0) == -1 | (i | 0) == (g | 0)) { break; }else { e = e + 1 | 0; }\n }\n\n b[h >> 2] = g;\n f = f + 1 | 0;\n } while ((f | 0) != (j | 0));\n } else {\n f = 0;\n\n do {\n g = l + (f << 4) | 0;\n cb(g, b[k >> 2] | 0, 0, 1) | 0;\n g = b[g >> 2] | 0;\n e = 0;\n\n while (1) {\n h = d + (e << 2) | 0;\n i = b[h >> 2] | 0;\n if ((i | 0) == -1 | (i | 0) == (g | 0)) { break; }else { e = e + 1 | 0; }\n }\n\n b[h >> 2] = g;\n f = f + 1 | 0;\n } while ((f | 0) != (j | 0));\n }\n\n S = m;\n return;\n }\n\n function Zb() {\n return 12;\n }\n\n function _b(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n dd(a | 0, 0, 52) | 0;\n i = G() | 0 | 134225919;\n\n if ((a | 0) < 1) {\n e = 0;\n d = 0;\n\n do {\n if (la(e) | 0) {\n dd(e | 0, 0, 45) | 0;\n h = i | (G() | 0);\n a = c + (d << 3) | 0;\n b[a >> 2] = -1;\n b[a + 4 >> 2] = h;\n d = d + 1 | 0;\n }\n\n e = e + 1 | 0;\n } while ((e | 0) != 122);\n\n return;\n }\n\n h = 0;\n d = 0;\n\n do {\n if (la(h) | 0) {\n dd(h | 0, 0, 45) | 0;\n e = 1;\n f = -1;\n g = i | (G() | 0);\n\n while (1) {\n j = dd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n f = f & ~j;\n g = g & ~(G() | 0);\n if ((e | 0) == (a | 0)) { break; }else { e = e + 1 | 0; }\n }\n\n j = c + (d << 3) | 0;\n b[j >> 2] = f;\n b[j + 4 >> 2] = g;\n d = d + 1 | 0;\n }\n\n h = h + 1 | 0;\n } while ((h | 0) != 122);\n\n return;\n }\n\n function $b(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;\n i = S;\n S = S + 64 | 0;\n h = i;\n\n if ((a | 0) == (d | 0) & (c | 0) == (e | 0) | (0 != 0 | (c & 2013265920 | 0) != 134217728 | (0 != 0 | (e & 2013265920 | 0) != 134217728))) {\n h = 0;\n S = i;\n return h | 0;\n }\n\n f = cd(a | 0, c | 0, 52) | 0;\n G() | 0;\n f = f & 15;\n g = cd(d | 0, e | 0, 52) | 0;\n G() | 0;\n\n if ((f | 0) != (g & 15 | 0)) {\n h = 0;\n S = i;\n return h | 0;\n }\n\n g = f + -1 | 0;\n\n if (f >>> 0 > 1 ? (k = Cb(a, c, g) | 0, j = G() | 0, g = Cb(d, e, g) | 0, (k | 0) == (g | 0) & (j | 0) == (G() | 0)) : 0) {\n g = (f ^ 15) * 3 | 0;\n f = cd(a | 0, c | 0, g | 0) | 0;\n G() | 0;\n f = f & 7;\n g = cd(d | 0, e | 0, g | 0) | 0;\n G() | 0;\n g = g & 7;\n\n if ((f | 0) == 0 | (g | 0) == 0) {\n k = 1;\n S = i;\n return k | 0;\n }\n\n if ((b[21136 + (f << 2) >> 2] | 0) == (g | 0)) {\n k = 1;\n S = i;\n return k | 0;\n }\n\n if ((b[21168 + (f << 2) >> 2] | 0) == (g | 0)) {\n k = 1;\n S = i;\n return k | 0;\n }\n }\n\n f = h;\n g = f + 56 | 0;\n\n do {\n b[f >> 2] = 0;\n f = f + 4 | 0;\n } while ((f | 0) < (g | 0));\n\n $(a, c, 1, h);\n k = h;\n\n if (((((!((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0) ? (k = h + 8 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 16 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 24 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 32 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 40 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) {\n f = h + 48 | 0;\n f = ((b[f >> 2] | 0) == (d | 0) ? (b[f + 4 >> 2] | 0) == (e | 0) : 0) & 1;\n } else { f = 1; }\n\n k = f;\n S = i;\n return k | 0;\n }\n\n function ac(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0;\n k = S;\n S = S + 16 | 0;\n h = k;\n\n if (!($b(a, c, d, e) | 0)) {\n i = 0;\n j = 0;\n F(i | 0);\n S = k;\n return j | 0;\n }\n\n i = c & -2130706433;\n f = (Fb(a, c) | 0) == 0;\n f = f ? 1 : 2;\n\n while (1) {\n b[h >> 2] = 0;\n l = da(a, c, f, h) | 0;\n g = f + 1 | 0;\n if ((l | 0) == (d | 0) & (G() | 0) == (e | 0)) { break; }\n if (g >>> 0 < 7) { f = g; }else {\n f = 0;\n a = 0;\n j = 6;\n break;\n }\n }\n\n if ((j | 0) == 6) {\n F(f | 0);\n S = k;\n return a | 0;\n }\n\n l = dd(f | 0, 0, 56) | 0;\n j = i | (G() | 0) | 268435456;\n l = a | l;\n F(j | 0);\n S = k;\n return l | 0;\n }\n\n function bc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n c = 0 == 0 & (b & 2013265920 | 0) == 268435456;\n F((c ? b & -2130706433 | 134217728 : 0) | 0);\n return (c ? a : 0) | 0;\n }\n\n function cc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0;\n e = S;\n S = S + 16 | 0;\n d = e;\n\n if (!(0 == 0 & (c & 2013265920 | 0) == 268435456)) {\n c = 0;\n d = 0;\n F(c | 0);\n S = e;\n return d | 0;\n }\n\n f = cd(a | 0, c | 0, 56) | 0;\n G() | 0;\n b[d >> 2] = 0;\n d = da(a, c & -2130706433 | 134217728, f & 7, d) | 0;\n c = G() | 0;\n F(c | 0);\n S = e;\n return d | 0;\n }\n\n function dc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n\n if (!(0 == 0 & (b & 2013265920 | 0) == 268435456)) {\n c = 0;\n return c | 0;\n }\n\n c = cd(a | 0, b | 0, 56) | 0;\n G() | 0;\n\n switch (c & 7) {\n case 0:\n case 7:\n {\n c = 0;\n return c | 0;\n }\n\n default:\n\n }\n\n c = b & -2130706433 | 134217728;\n\n if (0 == 0 & (b & 117440512 | 0) == 16777216 & (Fb(a, c) | 0) != 0) {\n c = 0;\n return c | 0;\n }\n\n c = Bb(a, c) | 0;\n return c | 0;\n }\n\n function ec(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n g = S;\n S = S + 16 | 0;\n e = g;\n h = 0 == 0 & (c & 2013265920 | 0) == 268435456;\n f = c & -2130706433 | 134217728;\n i = d;\n b[i >> 2] = h ? a : 0;\n b[i + 4 >> 2] = h ? f : 0;\n\n if (h) {\n c = cd(a | 0, c | 0, 56) | 0;\n G() | 0;\n b[e >> 2] = 0;\n a = da(a, f, c & 7, e) | 0;\n c = G() | 0;\n } else {\n a = 0;\n c = 0;\n }\n\n i = d + 8 | 0;\n b[i >> 2] = a;\n b[i + 4 >> 2] = c;\n S = g;\n return;\n }\n\n function fc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0;\n f = (Fb(a, c) | 0) == 0;\n c = c & -2130706433;\n e = d;\n b[e >> 2] = f ? a : 0;\n b[e + 4 >> 2] = f ? c | 285212672 : 0;\n e = d + 8 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 301989888;\n e = d + 16 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 318767104;\n e = d + 24 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 335544320;\n e = d + 32 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 352321536;\n d = d + 40 | 0;\n b[d >> 2] = a;\n b[d + 4 >> 2] = c | 369098752;\n return;\n }\n\n function gc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = S;\n S = S + 16 | 0;\n g = h;\n e = cd(a | 0, c | 0, 56) | 0;\n G() | 0;\n i = 0 == 0 & (c & 2013265920 | 0) == 268435456;\n f = i ? a : 0;\n a = i ? c & -2130706433 | 134217728 : 0;\n c = Lc(f, a, e & 7) | 0;\n\n if ((c | 0) == -1) {\n b[d >> 2] = 0;\n S = h;\n return;\n }\n\n Ub(f, a, g);\n e = cd(f | 0, a | 0, 52) | 0;\n G() | 0;\n e = e & 15;\n if (!(Fb(f, a) | 0)) { eb(g, e, c, 2, d); }else { ab(g, e, c, 2, d); }\n S = h;\n return;\n }\n\n function hc(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0;\n c = Yc(1, 12) | 0;\n if (!c) { H(22691, 22646, 49, 22704); }\n d = a + 4 | 0;\n e = b[d >> 2] | 0;\n\n if (e | 0) {\n e = e + 8 | 0;\n b[e >> 2] = c;\n b[d >> 2] = c;\n return c | 0;\n }\n\n if (b[a >> 2] | 0) { H(22721, 22646, 61, 22744); }\n e = a;\n b[e >> 2] = c;\n b[d >> 2] = c;\n return c | 0;\n }\n\n function ic(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n e = Wc(24) | 0;\n if (!e) { H(22758, 22646, 78, 22772); }\n b[e >> 2] = b[c >> 2];\n b[e + 4 >> 2] = b[c + 4 >> 2];\n b[e + 8 >> 2] = b[c + 8 >> 2];\n b[e + 12 >> 2] = b[c + 12 >> 2];\n b[e + 16 >> 2] = 0;\n c = a + 4 | 0;\n d = b[c >> 2] | 0;\n\n if (d | 0) {\n b[d + 16 >> 2] = e;\n b[c >> 2] = e;\n return e | 0;\n }\n\n if (b[a >> 2] | 0) { H(22787, 22646, 82, 22772); }\n b[a >> 2] = e;\n b[c >> 2] = e;\n return e | 0;\n }\n\n function jc(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0;\n if (!a) { return; }\n e = 1;\n\n while (1) {\n c = b[a >> 2] | 0;\n if (c | 0) { do {\n d = b[c >> 2] | 0;\n if (d | 0) { do {\n f = d;\n d = b[d + 16 >> 2] | 0;\n Xc(f);\n } while ((d | 0) != 0); }\n f = c;\n c = b[c + 8 >> 2] | 0;\n Xc(f);\n } while ((c | 0) != 0); }\n c = a;\n a = b[a + 8 >> 2] | 0;\n if (!e) { Xc(c); }\n if (!a) { break; }else { e = 0; }\n }\n\n return;\n }\n\n function kc(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n f = 0,\n g = 0,\n h = 0.0,\n i = 0,\n j = 0.0,\n k = 0.0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n r = 0,\n s = 0.0,\n t = 0.0,\n u = 0.0,\n v = 0.0,\n w = 0.0,\n x = 0.0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0,\n D = 0,\n E = 0,\n F = 0,\n G = 0,\n I = 0,\n J = 0,\n K = 0;\n g = a + 8 | 0;\n\n if (b[g >> 2] | 0) {\n K = 1;\n return K | 0;\n }\n\n f = b[a >> 2] | 0;\n\n if (!f) {\n K = 0;\n return K | 0;\n }\n\n c = f;\n d = 0;\n\n do {\n d = d + 1 | 0;\n c = b[c + 8 >> 2] | 0;\n } while ((c | 0) != 0);\n\n if (d >>> 0 < 2) {\n K = 0;\n return K | 0;\n }\n\n I = Wc(d << 2) | 0;\n if (!I) { H(22807, 22646, 317, 22826); }\n G = Wc(d << 5) | 0;\n if (!G) { H(22848, 22646, 321, 22826); }\n b[a >> 2] = 0;\n z = a + 4 | 0;\n b[z >> 2] = 0;\n b[g >> 2] = 0;\n d = 0;\n F = 0;\n y = 0;\n n = 0;\n\n a: while (1) {\n m = b[f >> 2] | 0;\n\n if (m) {\n h = 0.0;\n i = m;\n\n do {\n k = +e[i + 8 >> 3];\n c = i;\n i = b[i + 16 >> 2] | 0;\n l = (i | 0) == 0;\n g = l ? m : i;\n j = +e[g + 8 >> 3];\n\n if (+q(+(k - j)) > 3.141592653589793) {\n K = 14;\n break;\n }\n\n h = h + (j - k) * (+e[c >> 3] + +e[g >> 3]);\n } while (!l);\n\n if ((K | 0) == 14) {\n K = 0;\n h = 0.0;\n c = m;\n\n do {\n x = +e[c + 8 >> 3];\n E = c + 16 | 0;\n D = b[E >> 2] | 0;\n D = (D | 0) == 0 ? m : D;\n w = +e[D + 8 >> 3];\n h = h + (+e[c >> 3] + +e[D >> 3]) * ((w < 0.0 ? w + 6.283185307179586 : w) - (x < 0.0 ? x + 6.283185307179586 : x));\n c = b[((c | 0) == 0 ? f : E) >> 2] | 0;\n } while ((c | 0) != 0);\n }\n\n if (h > 0.0) {\n b[I + (F << 2) >> 2] = f;\n F = F + 1 | 0;\n g = y;\n c = n;\n } else { K = 19; }\n } else { K = 19; }\n\n if ((K | 0) == 19) {\n K = 0;\n\n do { if (!d) {\n if (!n) {\n if (!(b[a >> 2] | 0)) {\n g = z;\n i = a;\n c = f;\n d = a;\n break;\n } else {\n K = 27;\n break a;\n }\n } else {\n g = z;\n i = n + 8 | 0;\n c = f;\n d = a;\n break;\n }\n } else {\n c = d + 8 | 0;\n\n if (b[c >> 2] | 0) {\n K = 21;\n break a;\n }\n\n d = Yc(1, 12) | 0;\n\n if (!d) {\n K = 23;\n break a;\n }\n\n b[c >> 2] = d;\n g = d + 4 | 0;\n i = d;\n c = n;\n } } while (0);\n\n b[i >> 2] = f;\n b[g >> 2] = f;\n i = G + (y << 5) | 0;\n l = b[f >> 2] | 0;\n\n if (l) {\n m = G + (y << 5) + 8 | 0;\n e[m >> 3] = 1797693134862315708145274.0e284;\n n = G + (y << 5) + 24 | 0;\n e[n >> 3] = 1797693134862315708145274.0e284;\n e[i >> 3] = -1797693134862315708145274.0e284;\n o = G + (y << 5) + 16 | 0;\n e[o >> 3] = -1797693134862315708145274.0e284;\n u = 1797693134862315708145274.0e284;\n v = -1797693134862315708145274.0e284;\n g = 0;\n p = l;\n k = 1797693134862315708145274.0e284;\n s = 1797693134862315708145274.0e284;\n t = -1797693134862315708145274.0e284;\n j = -1797693134862315708145274.0e284;\n\n while (1) {\n h = +e[p >> 3];\n x = +e[p + 8 >> 3];\n p = b[p + 16 >> 2] | 0;\n r = (p | 0) == 0;\n w = +e[(r ? l : p) + 8 >> 3];\n\n if (h < k) {\n e[m >> 3] = h;\n k = h;\n }\n\n if (x < s) {\n e[n >> 3] = x;\n s = x;\n }\n\n if (h > t) { e[i >> 3] = h; }else { h = t; }\n\n if (x > j) {\n e[o >> 3] = x;\n j = x;\n }\n\n u = x > 0.0 & x < u ? x : u;\n v = x < 0.0 & x > v ? x : v;\n g = g | +q(+(x - w)) > 3.141592653589793;\n if (r) { break; }else { t = h; }\n }\n\n if (g) {\n e[o >> 3] = v;\n e[n >> 3] = u;\n }\n } else {\n b[i >> 2] = 0;\n b[i + 4 >> 2] = 0;\n b[i + 8 >> 2] = 0;\n b[i + 12 >> 2] = 0;\n b[i + 16 >> 2] = 0;\n b[i + 20 >> 2] = 0;\n b[i + 24 >> 2] = 0;\n b[i + 28 >> 2] = 0;\n }\n\n g = y + 1 | 0;\n }\n\n E = f + 8 | 0;\n f = b[E >> 2] | 0;\n b[E >> 2] = 0;\n\n if (!f) {\n K = 45;\n break;\n } else {\n y = g;\n n = c;\n }\n }\n\n if ((K | 0) == 21) { H(22624, 22646, 35, 22658); }else if ((K | 0) == 23) { H(22678, 22646, 37, 22658); }else if ((K | 0) == 27) { H(22721, 22646, 61, 22744); }else if ((K | 0) == 45) {\n b: do { if ((F | 0) > 0) {\n E = (g | 0) == 0;\n C = g << 2;\n D = (a | 0) == 0;\n B = 0;\n c = 0;\n\n while (1) {\n A = b[I + (B << 2) >> 2] | 0;\n\n if (!E) {\n y = Wc(C) | 0;\n\n if (!y) {\n K = 50;\n break;\n }\n\n z = Wc(C) | 0;\n\n if (!z) {\n K = 52;\n break;\n }\n\n c: do { if (!D) {\n g = 0;\n d = 0;\n i = a;\n\n while (1) {\n f = G + (g << 5) | 0;\n\n if (lc(b[i >> 2] | 0, f, b[A >> 2] | 0) | 0) {\n b[y + (d << 2) >> 2] = i;\n b[z + (d << 2) >> 2] = f;\n r = d + 1 | 0;\n } else { r = d; }\n\n i = b[i + 8 >> 2] | 0;\n if (!i) { break; }else {\n g = g + 1 | 0;\n d = r;\n }\n }\n\n if ((r | 0) > 0) {\n f = b[y >> 2] | 0;\n if ((r | 0) == 1) { d = f; }else {\n o = 0;\n p = -1;\n d = f;\n n = f;\n\n while (1) {\n l = b[n >> 2] | 0;\n f = 0;\n i = 0;\n\n while (1) {\n g = b[b[y + (i << 2) >> 2] >> 2] | 0;\n if ((g | 0) == (l | 0)) { m = f; }else { m = f + ((lc(g, b[z + (i << 2) >> 2] | 0, b[l >> 2] | 0) | 0) & 1) | 0; }\n i = i + 1 | 0;\n if ((i | 0) == (r | 0)) { break; }else { f = m; }\n }\n\n g = (m | 0) > (p | 0);\n d = g ? n : d;\n f = o + 1 | 0;\n if ((f | 0) == (r | 0)) { break c; }\n o = f;\n p = g ? m : p;\n n = b[y + (f << 2) >> 2] | 0;\n }\n }\n } else { d = 0; }\n } else { d = 0; } } while (0);\n\n Xc(y);\n Xc(z);\n\n if (d) {\n g = d + 4 | 0;\n f = b[g >> 2] | 0;\n\n if (!f) {\n if (b[d >> 2] | 0) {\n K = 70;\n break;\n }\n } else { d = f + 8 | 0; }\n\n b[d >> 2] = A;\n b[g >> 2] = A;\n } else { K = 73; }\n } else { K = 73; }\n\n if ((K | 0) == 73) {\n K = 0;\n c = b[A >> 2] | 0;\n if (c | 0) { do {\n z = c;\n c = b[c + 16 >> 2] | 0;\n Xc(z);\n } while ((c | 0) != 0); }\n Xc(A);\n c = 2;\n }\n\n B = B + 1 | 0;\n\n if ((B | 0) >= (F | 0)) {\n J = c;\n break b;\n }\n }\n\n if ((K | 0) == 50) { H(22863, 22646, 249, 22882); }else if ((K | 0) == 52) { H(22901, 22646, 252, 22882); }else if ((K | 0) == 70) { H(22721, 22646, 61, 22744); }\n } else { J = 0; } } while (0);\n\n Xc(I);\n Xc(G);\n K = J;\n return K | 0;\n }\n return 0;\n }\n\n function lc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0.0,\n g = 0.0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0;\n\n if (!(xa(c, d) | 0)) {\n a = 0;\n return a | 0;\n }\n\n c = wa(c) | 0;\n l = +e[d >> 3];\n f = +e[d + 8 >> 3];\n f = c & f < 0.0 ? f + 6.283185307179586 : f;\n a = b[a >> 2] | 0;\n\n if (!a) {\n a = 0;\n return a | 0;\n }\n\n if (c) {\n c = 0;\n d = a;\n\n a: while (1) {\n while (1) {\n i = +e[d >> 3];\n k = +e[d + 8 >> 3];\n d = d + 16 | 0;\n m = b[d >> 2] | 0;\n m = (m | 0) == 0 ? a : m;\n h = +e[m >> 3];\n g = +e[m + 8 >> 3];\n\n if (i > h) {\n j = i;\n i = k;\n } else {\n j = h;\n h = i;\n i = g;\n g = k;\n }\n\n if (!(l < h | l > j)) { break; }\n d = b[d >> 2] | 0;\n\n if (!d) {\n d = 22;\n break a;\n }\n }\n\n k = g < 0.0 ? g + 6.283185307179586 : g;\n i = i < 0.0 ? i + 6.283185307179586 : i;\n f = i == f | k == f ? f + -2.220446049250313e-16 : f;\n k = k + (l - h) / (j - h) * (i - k);\n if ((k < 0.0 ? k + 6.283185307179586 : k) > f) { c = c ^ 1; }\n d = b[d >> 2] | 0;\n\n if (!d) {\n d = 22;\n break;\n }\n }\n\n if ((d | 0) == 22) { return c | 0; }\n } else {\n c = 0;\n d = a;\n\n b: while (1) {\n while (1) {\n i = +e[d >> 3];\n k = +e[d + 8 >> 3];\n d = d + 16 | 0;\n m = b[d >> 2] | 0;\n m = (m | 0) == 0 ? a : m;\n h = +e[m >> 3];\n g = +e[m + 8 >> 3];\n\n if (i > h) {\n j = i;\n i = k;\n } else {\n j = h;\n h = i;\n i = g;\n g = k;\n }\n\n if (!(l < h | l > j)) { break; }\n d = b[d >> 2] | 0;\n\n if (!d) {\n d = 22;\n break b;\n }\n }\n\n f = i == f | g == f ? f + -2.220446049250313e-16 : f;\n if (g + (l - h) / (j - h) * (i - g) > f) { c = c ^ 1; }\n d = b[d >> 2] | 0;\n\n if (!d) {\n d = 22;\n break;\n }\n }\n\n if ((d | 0) == 22) { return c | 0; }\n }\n\n return 0;\n }\n\n function mc(c, d, e, f, g) {\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n g = g | 0;\n var h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0;\n u = S;\n S = S + 32 | 0;\n t = u + 16 | 0;\n s = u;\n h = cd(c | 0, d | 0, 52) | 0;\n G() | 0;\n h = h & 15;\n p = cd(e | 0, f | 0, 52) | 0;\n G() | 0;\n\n if ((h | 0) != (p & 15 | 0)) {\n t = 1;\n S = u;\n return t | 0;\n }\n\n l = cd(c | 0, d | 0, 45) | 0;\n G() | 0;\n l = l & 127;\n m = cd(e | 0, f | 0, 45) | 0;\n G() | 0;\n m = m & 127;\n p = (l | 0) != (m | 0);\n\n if (p) {\n j = ta(l, m) | 0;\n\n if ((j | 0) == 7) {\n t = 2;\n S = u;\n return t | 0;\n }\n\n k = ta(m, l) | 0;\n if ((k | 0) == 7) { H(22925, 22949, 151, 22959); }else {\n q = j;\n i = k;\n }\n } else {\n q = 0;\n i = 0;\n }\n\n n = la(l) | 0;\n o = la(m) | 0;\n b[t >> 2] = 0;\n b[t + 4 >> 2] = 0;\n b[t + 8 >> 2] = 0;\n b[t + 12 >> 2] = 0;\n\n do { if (!q) {\n Tb(e, f, t) | 0;\n\n if ((n | 0) != 0 & (o | 0) != 0) {\n if ((m | 0) != (l | 0)) { H(23077, 22949, 243, 22959); }\n i = Lb(c, d) | 0;\n h = Lb(e, f) | 0;\n\n if (!(a[22032 + (i * 7 | 0) + h >> 0] | 0)) {\n i = b[21200 + (i * 28 | 0) + (h << 2) >> 2] | 0;\n\n if ((i | 0) > 0) {\n j = t + 4 | 0;\n h = 0;\n\n do {\n Oa(j);\n h = h + 1 | 0;\n } while ((h | 0) != (i | 0));\n\n r = 50;\n } else { r = 50; }\n } else { h = 5; }\n } else { r = 50; }\n } else {\n m = b[4304 + (l * 28 | 0) + (q << 2) >> 2] | 0;\n j = (m | 0) > 0;\n if (!o) {\n if (j) {\n l = 0;\n k = e;\n j = f;\n\n do {\n k = Pb(k, j) | 0;\n j = G() | 0;\n i = Qa(i) | 0;\n l = l + 1 | 0;\n } while ((l | 0) != (m | 0));\n\n m = i;\n l = k;\n k = j;\n } else {\n m = i;\n l = e;\n k = f;\n }\n } else if (j) {\n l = 0;\n k = e;\n j = f;\n\n do {\n k = Ob(k, j) | 0;\n j = G() | 0;\n i = Qa(i) | 0;\n if ((i | 0) == 1) { i = Qa(1) | 0; }\n l = l + 1 | 0;\n } while ((l | 0) != (m | 0));\n\n m = i;\n l = k;\n k = j;\n } else {\n m = i;\n l = e;\n k = f;\n }\n Tb(l, k, t) | 0;\n if (!p) { H(22972, 22949, 181, 22959); }\n j = (n | 0) != 0;\n i = (o | 0) != 0;\n if (j & i) { H(22999, 22949, 182, 22959); }\n if (!j) {\n if (i) {\n i = Lb(l, k) | 0;\n\n if (a[22032 + (i * 7 | 0) + m >> 0] | 0) {\n h = 4;\n break;\n }\n\n l = 0;\n k = b[21200 + (m * 28 | 0) + (i << 2) >> 2] | 0;\n r = 26;\n } else { i = 0; }\n } else {\n i = Lb(c, d) | 0;\n\n if (a[22032 + (i * 7 | 0) + q >> 0] | 0) {\n h = 3;\n break;\n }\n\n k = b[21200 + (i * 28 | 0) + (q << 2) >> 2] | 0;\n l = k;\n r = 26;\n }\n\n if ((r | 0) == 26) {\n if ((k | 0) <= -1) { H(23030, 22949, 212, 22959); }\n if ((l | 0) <= -1) { H(23053, 22949, 213, 22959); }\n\n if ((k | 0) > 0) {\n j = t + 4 | 0;\n i = 0;\n\n do {\n Oa(j);\n i = i + 1 | 0;\n } while ((i | 0) != (k | 0));\n\n i = l;\n } else { i = l; }\n }\n b[s >> 2] = 0;\n b[s + 4 >> 2] = 0;\n b[s + 8 >> 2] = 0;\n Ma(s, q);\n if (h | 0) { while (1) {\n if (!(Rb(h) | 0)) { La(s); }else { Ka(s); }\n if ((h | 0) > 1) { h = h + -1 | 0; }else { break; }\n } }\n\n if ((i | 0) > 0) {\n h = 0;\n\n do {\n Oa(s);\n h = h + 1 | 0;\n } while ((h | 0) != (i | 0));\n }\n\n r = t + 4 | 0;\n Ea(r, s, r);\n Ca(r);\n r = 50;\n } } while (0);\n\n if ((r | 0) == 50) {\n h = t + 4 | 0;\n b[g >> 2] = b[h >> 2];\n b[g + 4 >> 2] = b[h + 4 >> 2];\n b[g + 8 >> 2] = b[h + 8 >> 2];\n h = 0;\n }\n\n t = h;\n S = u;\n return t | 0;\n }\n\n function nc(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0;\n p = S;\n S = S + 48 | 0;\n h = p + 36 | 0;\n i = p + 24 | 0;\n j = p + 12 | 0;\n k = p;\n g = cd(a | 0, c | 0, 52) | 0;\n G() | 0;\n g = g & 15;\n n = cd(a | 0, c | 0, 45) | 0;\n G() | 0;\n n = n & 127;\n l = la(n) | 0;\n dd(g | 0, 0, 52) | 0;\n r = G() | 0 | 134225919;\n q = e;\n b[q >> 2] = -1;\n b[q + 4 >> 2] = r;\n\n if (!g) {\n if ((b[d >> 2] | 0) > 1) {\n r = 1;\n S = p;\n return r | 0;\n }\n\n if ((b[d + 4 >> 2] | 0) > 1) {\n r = 1;\n S = p;\n return r | 0;\n }\n\n if ((b[d + 8 >> 2] | 0) > 1) {\n r = 1;\n S = p;\n return r | 0;\n }\n\n f = sa(n, Ha(d) | 0) | 0;\n\n if ((f | 0) == 127) {\n r = 1;\n S = p;\n return r | 0;\n }\n\n o = dd(f | 0, 0, 45) | 0;\n q = G() | 0;\n n = e;\n q = b[n + 4 >> 2] & -1040385 | q;\n r = e;\n b[r >> 2] = b[n >> 2] | o;\n b[r + 4 >> 2] = q;\n r = 0;\n S = p;\n return r | 0;\n }\n b[h >> 2] = b[d >> 2];\n b[h + 4 >> 2] = b[d + 4 >> 2];\n b[h + 8 >> 2] = b[d + 8 >> 2];\n\n while (1) {\n b[i >> 2] = b[h >> 2];\n b[i + 4 >> 2] = b[h + 4 >> 2];\n b[i + 8 >> 2] = b[h + 8 >> 2];\n\n if (!(Rb(g) | 0)) {\n Ja(h);\n b[j >> 2] = b[h >> 2];\n b[j + 4 >> 2] = b[h + 4 >> 2];\n b[j + 8 >> 2] = b[h + 8 >> 2];\n La(j);\n } else {\n Ia(h);\n b[j >> 2] = b[h >> 2];\n b[j + 4 >> 2] = b[h + 4 >> 2];\n b[j + 8 >> 2] = b[h + 8 >> 2];\n Ka(j);\n }\n\n Fa(i, j, k);\n Ca(k);\n q = e;\n s = b[q >> 2] | 0;\n q = b[q + 4 >> 2] | 0;\n t = (15 - g | 0) * 3 | 0;\n d = dd(7, 0, t | 0) | 0;\n q = q & ~(G() | 0);\n t = dd(Ha(k) | 0, 0, t | 0) | 0;\n q = G() | 0 | q;\n r = e;\n b[r >> 2] = t | s & ~d;\n b[r + 4 >> 2] = q;\n if ((g | 0) > 1) { g = g + -1 | 0; }else { break; }\n }\n\n a: do { if (((b[h >> 2] | 0) <= 1 ? (b[h + 4 >> 2] | 0) <= 1 : 0) ? (b[h + 8 >> 2] | 0) <= 1 : 0) {\n g = Ha(h) | 0;\n i = sa(n, g) | 0;\n if ((i | 0) == 127) { k = 0; }else { k = la(i) | 0; }\n\n b: do { if (!g) {\n if ((l | 0) != 0 & (k | 0) != 0) {\n t = Lb(a, c) | 0;\n g = e;\n g = 21408 + (t * 28 | 0) + ((Lb(b[g >> 2] | 0, b[g + 4 >> 2] | 0) | 0) << 2) | 0;\n g = b[g >> 2] | 0;\n if ((g | 0) <= -1) { H(23201, 22949, 433, 23134); }\n\n if (!g) {\n f = i;\n g = 55;\n } else {\n h = e;\n f = 0;\n d = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n\n do {\n d = Nb(d, h) | 0;\n h = G() | 0;\n t = e;\n b[t >> 2] = d;\n b[t + 4 >> 2] = h;\n f = f + 1 | 0;\n } while ((f | 0) < (g | 0));\n\n f = i;\n g = 54;\n }\n } else {\n f = i;\n g = 54;\n }\n } else {\n if (l) {\n h = 21408 + ((Lb(a, c) | 0) * 28 | 0) + (g << 2) | 0;\n h = b[h >> 2] | 0;\n\n if ((h | 0) > 0) {\n d = 0;\n\n do {\n g = Pa(g) | 0;\n d = d + 1 | 0;\n } while ((d | 0) != (h | 0));\n }\n\n if ((g | 0) == 1) {\n f = 3;\n break a;\n }\n\n d = sa(n, g) | 0;\n if ((d | 0) == 127) { H(23104, 22949, 376, 23134); }\n\n if (!(la(d) | 0)) {\n o = h;\n m = g;\n f = d;\n } else { H(23147, 22949, 377, 23134); }\n } else {\n o = 0;\n m = g;\n f = i;\n }\n\n j = b[4304 + (n * 28 | 0) + (m << 2) >> 2] | 0;\n if ((j | 0) <= -1) { H(23178, 22949, 384, 23134); }\n\n if (!k) {\n if ((o | 0) <= -1) { H(23030, 22949, 417, 23134); }\n\n if (o | 0) {\n h = e;\n g = 0;\n d = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n\n do {\n d = Nb(d, h) | 0;\n h = G() | 0;\n t = e;\n b[t >> 2] = d;\n b[t + 4 >> 2] = h;\n g = g + 1 | 0;\n } while ((g | 0) < (o | 0));\n }\n\n if ((j | 0) <= 0) {\n g = 54;\n break;\n }\n\n h = e;\n g = 0;\n d = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n\n while (1) {\n d = Nb(d, h) | 0;\n h = G() | 0;\n t = e;\n b[t >> 2] = d;\n b[t + 4 >> 2] = h;\n g = g + 1 | 0;\n\n if ((g | 0) == (j | 0)) {\n g = 54;\n break b;\n }\n }\n }\n\n i = ta(f, n) | 0;\n if ((i | 0) == 7) { H(22925, 22949, 393, 23134); }\n g = e;\n d = b[g >> 2] | 0;\n g = b[g + 4 >> 2] | 0;\n\n if ((j | 0) > 0) {\n h = 0;\n\n do {\n d = Nb(d, g) | 0;\n g = G() | 0;\n t = e;\n b[t >> 2] = d;\n b[t + 4 >> 2] = g;\n h = h + 1 | 0;\n } while ((h | 0) != (j | 0));\n }\n\n d = Lb(d, g) | 0;\n t = ma(f) | 0;\n d = b[(t ? 21824 : 21616) + (i * 28 | 0) + (d << 2) >> 2] | 0;\n if ((d | 0) <= -1) { H(23030, 22949, 412, 23134); }\n if (!d) { g = 54; }else {\n i = e;\n g = 0;\n h = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n\n do {\n h = Mb(h, i) | 0;\n i = G() | 0;\n t = e;\n b[t >> 2] = h;\n b[t + 4 >> 2] = i;\n g = g + 1 | 0;\n } while ((g | 0) < (d | 0));\n\n g = 54;\n }\n } } while (0);\n\n if ((g | 0) == 54) { if (k) { g = 55; } }\n\n if ((g | 0) == 55) {\n t = e;\n\n if ((Lb(b[t >> 2] | 0, b[t + 4 >> 2] | 0) | 0) == 1) {\n f = 4;\n break;\n }\n }\n\n t = e;\n r = b[t >> 2] | 0;\n t = b[t + 4 >> 2] & -1040385;\n s = dd(f | 0, 0, 45) | 0;\n t = t | (G() | 0);\n f = e;\n b[f >> 2] = r | s;\n b[f + 4 >> 2] = t;\n f = 0;\n } else { f = 2; } } while (0);\n\n t = f;\n S = p;\n return t | 0;\n }\n\n function oc(a, b, c, d, e) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0;\n g = S;\n S = S + 16 | 0;\n f = g;\n a = mc(a, b, c, d, f) | 0;\n\n if (!a) {\n Ua(f, e);\n a = 0;\n }\n\n S = g;\n return a | 0;\n }\n\n function pc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0;\n e = S;\n S = S + 16 | 0;\n f = e;\n Va(c, f);\n d = nc(a, b, f, d) | 0;\n S = e;\n return d | 0;\n }\n\n function qc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0;\n g = S;\n S = S + 32 | 0;\n e = g + 12 | 0;\n f = g;\n if ((mc(a, b, a, b, e) | 0) == 0 ? (mc(a, b, c, d, f) | 0) == 0 : 0) { a = Ta(e, f) | 0; }else { a = -1; }\n S = g;\n return a | 0;\n }\n\n function rc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0;\n g = S;\n S = S + 32 | 0;\n e = g + 12 | 0;\n f = g;\n if ((mc(a, b, a, b, e) | 0) == 0 ? (mc(a, b, c, d, f) | 0) == 0 : 0) { a = Ta(e, f) | 0; }else { a = -1; }\n S = g;\n return (a >>> 31 ^ 1) + a | 0;\n }\n\n function sc(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0.0,\n j = 0.0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0.0,\n p = 0.0,\n r = 0.0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0.0;\n x = S;\n S = S + 48 | 0;\n g = x + 24 | 0;\n h = x + 12 | 0;\n w = x;\n\n if ((mc(a, c, a, c, g) | 0) == 0 ? (mc(a, c, d, e, h) | 0) == 0 : 0) {\n v = Ta(g, h) | 0;\n\n if ((v | 0) < 0) {\n w = v;\n S = x;\n return w | 0;\n }\n b[g >> 2] = 0;\n b[g + 4 >> 2] = 0;\n b[g + 8 >> 2] = 0;\n b[h >> 2] = 0;\n b[h + 4 >> 2] = 0;\n b[h + 8 >> 2] = 0;\n mc(a, c, a, c, g) | 0;\n mc(a, c, d, e, h) | 0;\n Wa(g);\n Wa(h);\n\n if (!v) {\n e = g + 4 | 0;\n n = g + 8 | 0;\n s = e;\n t = n;\n u = g;\n d = b[g >> 2] | 0;\n e = b[e >> 2] | 0;\n g = b[n >> 2] | 0;\n p = 0.0;\n r = 0.0;\n o = 0.0;\n } else {\n l = b[g >> 2] | 0;\n o = +(v | 0);\n s = g + 4 | 0;\n m = b[s >> 2] | 0;\n t = g + 8 | 0;\n n = b[t >> 2] | 0;\n u = g;\n d = l;\n e = m;\n g = n;\n p = +((b[h >> 2] | 0) - l | 0) / o;\n r = +((b[h + 4 >> 2] | 0) - m | 0) / o;\n o = +((b[h + 8 >> 2] | 0) - n | 0) / o;\n }\n\n b[w >> 2] = d;\n n = w + 4 | 0;\n b[n >> 2] = e;\n m = w + 8 | 0;\n b[m >> 2] = g;\n l = 0;\n\n while (1) {\n j = +(l | 0);\n y = p * j + +(d | 0);\n i = r * j + +(b[s >> 2] | 0);\n j = o * j + +(b[t >> 2] | 0);\n e = ~~+fd(+y);\n h = ~~+fd(+i);\n d = ~~+fd(+j);\n y = +q(+(+(e | 0) - y));\n i = +q(+(+(h | 0) - i));\n j = +q(+(+(d | 0) - j));\n\n do { if (!(y > i & y > j)) {\n k = 0 - e | 0;\n\n if (i > j) {\n g = k - d | 0;\n break;\n } else {\n g = h;\n d = k - h | 0;\n break;\n }\n } else {\n e = 0 - (h + d) | 0;\n g = h;\n } } while (0);\n\n b[w >> 2] = e;\n b[n >> 2] = g;\n b[m >> 2] = d;\n Xa(w);\n nc(a, c, w, f + (l << 3) | 0) | 0;\n if ((l | 0) == (v | 0)) { break; }\n l = l + 1 | 0;\n d = b[u >> 2] | 0;\n }\n\n w = 0;\n S = x;\n return w | 0;\n }\n\n w = -1;\n S = x;\n return w | 0;\n }\n\n function tc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n\n if (!b) {\n c = 1;\n return c | 0;\n }\n\n c = a;\n a = 1;\n\n do {\n a = B((b & 1 | 0) == 0 ? 1 : c, a) | 0;\n b = b >> 1;\n c = B(c, c) | 0;\n } while ((b | 0) != 0);\n\n return a | 0;\n }\n\n function uc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0.0,\n g = 0.0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0,\n m = 0,\n n = 0,\n o = 0.0;\n\n if (!(xa(c, d) | 0)) {\n n = 0;\n return n | 0;\n }\n\n c = wa(c) | 0;\n o = +e[d >> 3];\n f = +e[d + 8 >> 3];\n f = c & f < 0.0 ? f + 6.283185307179586 : f;\n n = b[a >> 2] | 0;\n\n if ((n | 0) <= 0) {\n n = 0;\n return n | 0;\n }\n\n m = b[a + 4 >> 2] | 0;\n\n if (c) {\n c = 0;\n d = -1;\n a = 0;\n\n a: while (1) {\n l = a;\n\n while (1) {\n i = +e[m + (l << 4) >> 3];\n k = +e[m + (l << 4) + 8 >> 3];\n a = (d + 2 | 0) % (n | 0) | 0;\n h = +e[m + (a << 4) >> 3];\n g = +e[m + (a << 4) + 8 >> 3];\n\n if (i > h) {\n j = i;\n i = k;\n } else {\n j = h;\n h = i;\n i = g;\n g = k;\n }\n\n if (!(o < h | o > j)) { break; }\n d = l + 1 | 0;\n\n if ((d | 0) < (n | 0)) {\n a = l;\n l = d;\n d = a;\n } else {\n d = 22;\n break a;\n }\n }\n\n k = g < 0.0 ? g + 6.283185307179586 : g;\n i = i < 0.0 ? i + 6.283185307179586 : i;\n f = i == f | k == f ? f + -2.220446049250313e-16 : f;\n k = k + (o - h) / (j - h) * (i - k);\n if ((k < 0.0 ? k + 6.283185307179586 : k) > f) { c = c ^ 1; }\n a = l + 1 | 0;\n\n if ((a | 0) >= (n | 0)) {\n d = 22;\n break;\n } else { d = l; }\n }\n\n if ((d | 0) == 22) { return c | 0; }\n } else {\n c = 0;\n d = -1;\n a = 0;\n\n b: while (1) {\n l = a;\n\n while (1) {\n i = +e[m + (l << 4) >> 3];\n k = +e[m + (l << 4) + 8 >> 3];\n a = (d + 2 | 0) % (n | 0) | 0;\n h = +e[m + (a << 4) >> 3];\n g = +e[m + (a << 4) + 8 >> 3];\n\n if (i > h) {\n j = i;\n i = k;\n } else {\n j = h;\n h = i;\n i = g;\n g = k;\n }\n\n if (!(o < h | o > j)) { break; }\n d = l + 1 | 0;\n\n if ((d | 0) < (n | 0)) {\n a = l;\n l = d;\n d = a;\n } else {\n d = 22;\n break b;\n }\n }\n\n f = i == f | g == f ? f + -2.220446049250313e-16 : f;\n if (g + (o - h) / (j - h) * (i - g) > f) { c = c ^ 1; }\n a = l + 1 | 0;\n\n if ((a | 0) >= (n | 0)) {\n d = 22;\n break;\n } else { d = l; }\n }\n\n if ((d | 0) == 22) { return c | 0; }\n }\n\n return 0;\n }\n\n function vc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n f = 0.0,\n g = 0.0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0.0,\n n = 0,\n o = 0,\n p = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0;\n r = b[a >> 2] | 0;\n\n if (!r) {\n b[c >> 2] = 0;\n b[c + 4 >> 2] = 0;\n b[c + 8 >> 2] = 0;\n b[c + 12 >> 2] = 0;\n b[c + 16 >> 2] = 0;\n b[c + 20 >> 2] = 0;\n b[c + 24 >> 2] = 0;\n b[c + 28 >> 2] = 0;\n return;\n }\n\n s = c + 8 | 0;\n e[s >> 3] = 1797693134862315708145274.0e284;\n t = c + 24 | 0;\n e[t >> 3] = 1797693134862315708145274.0e284;\n e[c >> 3] = -1797693134862315708145274.0e284;\n u = c + 16 | 0;\n e[u >> 3] = -1797693134862315708145274.0e284;\n if ((r | 0) <= 0) { return; }\n o = b[a + 4 >> 2] | 0;\n l = 1797693134862315708145274.0e284;\n m = -1797693134862315708145274.0e284;\n n = 0;\n a = -1;\n h = 1797693134862315708145274.0e284;\n i = 1797693134862315708145274.0e284;\n k = -1797693134862315708145274.0e284;\n f = -1797693134862315708145274.0e284;\n p = 0;\n\n while (1) {\n d = +e[o + (p << 4) >> 3];\n j = +e[o + (p << 4) + 8 >> 3];\n a = a + 2 | 0;\n g = +e[o + (((a | 0) == (r | 0) ? 0 : a) << 4) + 8 >> 3];\n\n if (d < h) {\n e[s >> 3] = d;\n h = d;\n }\n\n if (j < i) {\n e[t >> 3] = j;\n i = j;\n }\n\n if (d > k) { e[c >> 3] = d; }else { d = k; }\n\n if (j > f) {\n e[u >> 3] = j;\n f = j;\n }\n\n l = j > 0.0 & j < l ? j : l;\n m = j < 0.0 & j > m ? j : m;\n n = n | +q(+(j - g)) > 3.141592653589793;\n a = p + 1 | 0;\n if ((a | 0) == (r | 0)) { break; }else {\n v = p;\n k = d;\n p = a;\n a = v;\n }\n }\n\n if (!n) { return; }\n e[u >> 3] = m;\n e[t >> 3] = l;\n return;\n }\n\n function wc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n f = 0,\n g = 0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0.0,\n n = 0.0,\n o = 0.0,\n p = 0.0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0;\n r = b[a >> 2] | 0;\n\n if (r) {\n s = c + 8 | 0;\n e[s >> 3] = 1797693134862315708145274.0e284;\n t = c + 24 | 0;\n e[t >> 3] = 1797693134862315708145274.0e284;\n e[c >> 3] = -1797693134862315708145274.0e284;\n u = c + 16 | 0;\n e[u >> 3] = -1797693134862315708145274.0e284;\n\n if ((r | 0) > 0) {\n g = b[a + 4 >> 2] | 0;\n o = 1797693134862315708145274.0e284;\n p = -1797693134862315708145274.0e284;\n f = 0;\n d = -1;\n k = 1797693134862315708145274.0e284;\n l = 1797693134862315708145274.0e284;\n n = -1797693134862315708145274.0e284;\n i = -1797693134862315708145274.0e284;\n v = 0;\n\n while (1) {\n h = +e[g + (v << 4) >> 3];\n m = +e[g + (v << 4) + 8 >> 3];\n z = d + 2 | 0;\n j = +e[g + (((z | 0) == (r | 0) ? 0 : z) << 4) + 8 >> 3];\n\n if (h < k) {\n e[s >> 3] = h;\n k = h;\n }\n\n if (m < l) {\n e[t >> 3] = m;\n l = m;\n }\n\n if (h > n) { e[c >> 3] = h; }else { h = n; }\n\n if (m > i) {\n e[u >> 3] = m;\n i = m;\n }\n\n o = m > 0.0 & m < o ? m : o;\n p = m < 0.0 & m > p ? m : p;\n f = f | +q(+(m - j)) > 3.141592653589793;\n d = v + 1 | 0;\n if ((d | 0) == (r | 0)) { break; }else {\n z = v;\n n = h;\n v = d;\n d = z;\n }\n }\n\n if (f) {\n e[u >> 3] = p;\n e[t >> 3] = o;\n }\n }\n } else {\n b[c >> 2] = 0;\n b[c + 4 >> 2] = 0;\n b[c + 8 >> 2] = 0;\n b[c + 12 >> 2] = 0;\n b[c + 16 >> 2] = 0;\n b[c + 20 >> 2] = 0;\n b[c + 24 >> 2] = 0;\n b[c + 28 >> 2] = 0;\n }\n\n z = a + 8 | 0;\n d = b[z >> 2] | 0;\n if ((d | 0) <= 0) { return; }\n y = a + 12 | 0;\n x = 0;\n\n do {\n g = b[y >> 2] | 0;\n f = x;\n x = x + 1 | 0;\n t = c + (x << 5) | 0;\n u = b[g + (f << 3) >> 2] | 0;\n\n if (u) {\n v = c + (x << 5) + 8 | 0;\n e[v >> 3] = 1797693134862315708145274.0e284;\n a = c + (x << 5) + 24 | 0;\n e[a >> 3] = 1797693134862315708145274.0e284;\n e[t >> 3] = -1797693134862315708145274.0e284;\n w = c + (x << 5) + 16 | 0;\n e[w >> 3] = -1797693134862315708145274.0e284;\n\n if ((u | 0) > 0) {\n r = b[g + (f << 3) + 4 >> 2] | 0;\n o = 1797693134862315708145274.0e284;\n p = -1797693134862315708145274.0e284;\n g = 0;\n f = -1;\n s = 0;\n k = 1797693134862315708145274.0e284;\n l = 1797693134862315708145274.0e284;\n m = -1797693134862315708145274.0e284;\n i = -1797693134862315708145274.0e284;\n\n while (1) {\n h = +e[r + (s << 4) >> 3];\n n = +e[r + (s << 4) + 8 >> 3];\n f = f + 2 | 0;\n j = +e[r + (((f | 0) == (u | 0) ? 0 : f) << 4) + 8 >> 3];\n\n if (h < k) {\n e[v >> 3] = h;\n k = h;\n }\n\n if (n < l) {\n e[a >> 3] = n;\n l = n;\n }\n\n if (h > m) { e[t >> 3] = h; }else { h = m; }\n\n if (n > i) {\n e[w >> 3] = n;\n i = n;\n }\n\n o = n > 0.0 & n < o ? n : o;\n p = n < 0.0 & n > p ? n : p;\n g = g | +q(+(n - j)) > 3.141592653589793;\n f = s + 1 | 0;\n if ((f | 0) == (u | 0)) { break; }else {\n A = s;\n s = f;\n m = h;\n f = A;\n }\n }\n\n if (g) {\n e[w >> 3] = p;\n e[a >> 3] = o;\n }\n }\n } else {\n b[t >> 2] = 0;\n b[t + 4 >> 2] = 0;\n b[t + 8 >> 2] = 0;\n b[t + 12 >> 2] = 0;\n b[t + 16 >> 2] = 0;\n b[t + 20 >> 2] = 0;\n b[t + 24 >> 2] = 0;\n b[t + 28 >> 2] = 0;\n d = b[z >> 2] | 0;\n }\n } while ((x | 0) < (d | 0));\n\n return;\n }\n\n function xc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0;\n\n if (!(uc(a, c, d) | 0)) {\n f = 0;\n return f | 0;\n }\n\n f = a + 8 | 0;\n\n if ((b[f >> 2] | 0) <= 0) {\n f = 1;\n return f | 0;\n }\n\n e = a + 12 | 0;\n a = 0;\n\n while (1) {\n g = a;\n a = a + 1 | 0;\n\n if (uc((b[e >> 2] | 0) + (g << 3) | 0, c + (a << 5) | 0, d) | 0) {\n a = 0;\n e = 6;\n break;\n }\n\n if ((a | 0) >= (b[f >> 2] | 0)) {\n a = 1;\n e = 6;\n break;\n }\n }\n\n if ((e | 0) == 6) { return a | 0; }\n return 0;\n }\n\n function yc() {\n return 8;\n }\n\n function zc() {\n return 16;\n }\n\n function Ac() {\n return 168;\n }\n\n function Bc() {\n return 8;\n }\n\n function Cc() {\n return 16;\n }\n\n function Dc() {\n return 12;\n }\n\n function Ec() {\n return 8;\n }\n\n function Fc(a) {\n a = a | 0;\n var b = 0.0,\n c = 0.0;\n c = +e[a >> 3];\n b = +e[a + 8 >> 3];\n return + +r(+(c * c + b * b));\n }\n\n function Gc(a, b, c, d, f) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n var g = 0.0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0.0,\n n = 0.0;\n k = +e[a >> 3];\n j = +e[b >> 3] - k;\n i = +e[a + 8 >> 3];\n h = +e[b + 8 >> 3] - i;\n m = +e[c >> 3];\n g = +e[d >> 3] - m;\n n = +e[c + 8 >> 3];\n l = +e[d + 8 >> 3] - n;\n g = (g * (i - n) - (k - m) * l) / (j * l - h * g);\n e[f >> 3] = k + j * g;\n e[f + 8 >> 3] = i + h * g;\n return;\n }\n\n function Hc(a, b) {\n a = a | 0;\n b = b | 0;\n\n if (!(+e[a >> 3] == +e[b >> 3])) {\n b = 0;\n return b | 0;\n }\n\n b = +e[a + 8 >> 3] == +e[b + 8 >> 3];\n return b | 0;\n }\n\n function Ic(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0;\n f = +e[a >> 3] - +e[b >> 3];\n d = +e[a + 8 >> 3] - +e[b + 8 >> 3];\n c = +e[a + 16 >> 3] - +e[b + 16 >> 3];\n return +(f * f + d * d + c * c);\n }\n\n function Jc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0;\n c = +e[a >> 3];\n d = +t(+c);\n c = +u(+c);\n e[b + 16 >> 3] = c;\n c = +e[a + 8 >> 3];\n f = d * +t(+c);\n e[b >> 3] = f;\n c = d * +u(+c);\n e[b + 8 >> 3] = c;\n return;\n }\n\n function Kc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;\n k = S;\n S = S + 32 | 0;\n f = k + 16 | 0;\n g = k;\n Ub(a, c, f);\n h = Ab(a, c) | 0;\n j = Lb(a, c) | 0;\n pa(h, g);\n c = qa(h, b[f >> 2] | 0) | 0;\n\n if (!(la(h) | 0)) {\n j = c;\n S = k;\n return j | 0;\n }\n\n do { switch (h | 0) {\n case 4:\n {\n a = 0;\n d = 14;\n break;\n }\n\n case 14:\n {\n a = 1;\n d = 14;\n break;\n }\n\n case 24:\n {\n a = 2;\n d = 14;\n break;\n }\n\n case 38:\n {\n a = 3;\n d = 14;\n break;\n }\n\n case 49:\n {\n a = 4;\n d = 14;\n break;\n }\n\n case 58:\n {\n a = 5;\n d = 14;\n break;\n }\n\n case 63:\n {\n a = 6;\n d = 14;\n break;\n }\n\n case 72:\n {\n a = 7;\n d = 14;\n break;\n }\n\n case 83:\n {\n a = 8;\n d = 14;\n break;\n }\n\n case 97:\n {\n a = 9;\n d = 14;\n break;\n }\n\n case 107:\n {\n a = 10;\n d = 14;\n break;\n }\n\n case 117:\n {\n a = 11;\n d = 14;\n break;\n }\n\n default:\n {\n i = 0;\n e = 0;\n }\n } } while (0);\n\n if ((d | 0) == 14) {\n i = b[22096 + (a * 24 | 0) + 8 >> 2] | 0;\n e = b[22096 + (a * 24 | 0) + 16 >> 2] | 0;\n }\n\n a = b[f >> 2] | 0;\n\n if ((a | 0) != (b[g >> 2] | 0)) {\n h = ma(h) | 0;\n a = b[f >> 2] | 0;\n if (h | (a | 0) == (e | 0)) { c = (c + 1 | 0) % 6 | 0; }\n }\n\n if ((j | 0) == 3 & (a | 0) == (e | 0)) {\n j = (c + 5 | 0) % 6 | 0;\n S = k;\n return j | 0;\n }\n\n if (!((j | 0) == 5 & (a | 0) == (i | 0))) {\n j = c;\n S = k;\n return j | 0;\n }\n\n j = (c + 1 | 0) % 6 | 0;\n S = k;\n return j | 0;\n }\n\n function Lc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0;\n e = Fb(a, c) | 0;\n\n if ((d + -1 | 0) >>> 0 > 5) {\n d = -1;\n return d | 0;\n }\n\n f = (e | 0) != 0;\n\n if ((d | 0) == 1 & f) {\n d = -1;\n return d | 0;\n }\n\n e = Kc(a, c) | 0;\n\n if (f) {\n d = (5 - e + (b[22384 + (d << 2) >> 2] | 0) | 0) % 5 | 0;\n return d | 0;\n } else {\n d = (6 - e + (b[22416 + (d << 2) >> 2] | 0) | 0) % 6 | 0;\n return d | 0;\n }\n\n return 0;\n }\n\n function Mc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0;\n\n if ((c | 0) > 0) {\n e = Yc(c, 4) | 0;\n b[a >> 2] = e;\n if (!e) { H(23230, 23253, 40, 23267); }\n } else { b[a >> 2] = 0; }\n\n b[a + 4 >> 2] = c;\n b[a + 8 >> 2] = 0;\n b[a + 12 >> 2] = d;\n return;\n }\n\n function Nc(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n g = a + 4 | 0;\n h = a + 12 | 0;\n i = a + 8 | 0;\n\n a: while (1) {\n d = b[g >> 2] | 0;\n c = 0;\n\n while (1) {\n if ((c | 0) >= (d | 0)) { break a; }\n f = b[a >> 2] | 0;\n j = b[f + (c << 2) >> 2] | 0;\n if (!j) { c = c + 1 | 0; }else { break; }\n }\n\n c = f + (~~(+q(+(+s(10.0, + +(15 - (b[h >> 2] | 0) | 0)) * (+e[j >> 3] + +e[j + 8 >> 3]))) % +(d | 0)) >>> 0 << 2) | 0;\n d = b[c >> 2] | 0;\n\n b: do { if (d | 0) {\n f = j + 32 | 0;\n if ((d | 0) == (j | 0)) { b[c >> 2] = b[f >> 2]; }else {\n d = d + 32 | 0;\n c = b[d >> 2] | 0;\n if (!c) { break; }\n\n while (1) {\n if ((c | 0) == (j | 0)) { break; }\n d = c + 32 | 0;\n c = b[d >> 2] | 0;\n if (!c) { break b; }\n }\n\n b[d >> 2] = b[f >> 2];\n }\n Xc(j);\n b[i >> 2] = (b[i >> 2] | 0) + -1;\n } } while (0);\n }\n\n Xc(b[a >> 2] | 0);\n return;\n }\n\n function Oc(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0;\n e = b[a + 4 >> 2] | 0;\n d = 0;\n\n while (1) {\n if ((d | 0) >= (e | 0)) {\n c = 0;\n d = 4;\n break;\n }\n\n c = b[(b[a >> 2] | 0) + (d << 2) >> 2] | 0;\n if (!c) { d = d + 1 | 0; }else {\n d = 4;\n break;\n }\n }\n\n if ((d | 0) == 4) { return c | 0; }\n return 0;\n }\n\n function Pc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n f = 0,\n g = 0,\n h = 0;\n d = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n d = (b[a >> 2] | 0) + (d << 2) | 0;\n f = b[d >> 2] | 0;\n\n if (!f) {\n h = 1;\n return h | 0;\n }\n\n h = c + 32 | 0;\n\n do { if ((f | 0) != (c | 0)) {\n d = b[f + 32 >> 2] | 0;\n\n if (!d) {\n h = 1;\n return h | 0;\n }\n\n g = d;\n\n while (1) {\n if ((g | 0) == (c | 0)) {\n g = 8;\n break;\n }\n\n d = b[g + 32 >> 2] | 0;\n\n if (!d) {\n d = 1;\n g = 10;\n break;\n } else {\n f = g;\n g = d;\n }\n }\n\n if ((g | 0) == 8) {\n b[f + 32 >> 2] = b[h >> 2];\n break;\n } else if ((g | 0) == 10) { return d | 0; }\n } else { b[d >> 2] = b[h >> 2]; } } while (0);\n\n Xc(c);\n h = a + 8 | 0;\n b[h >> 2] = (b[h >> 2] | 0) + -1;\n h = 0;\n return h | 0;\n }\n\n function Qc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = Wc(40) | 0;\n if (!h) { H(23283, 23253, 98, 23296); }\n b[h >> 2] = b[c >> 2];\n b[h + 4 >> 2] = b[c + 4 >> 2];\n b[h + 8 >> 2] = b[c + 8 >> 2];\n b[h + 12 >> 2] = b[c + 12 >> 2];\n g = h + 16 | 0;\n b[g >> 2] = b[d >> 2];\n b[g + 4 >> 2] = b[d + 4 >> 2];\n b[g + 8 >> 2] = b[d + 8 >> 2];\n b[g + 12 >> 2] = b[d + 12 >> 2];\n b[h + 32 >> 2] = 0;\n g = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n g = (b[a >> 2] | 0) + (g << 2) | 0;\n f = b[g >> 2] | 0;\n\n do { if (!f) { b[g >> 2] = h; }else {\n while (1) {\n if (hb(f, c) | 0 ? hb(f + 16 | 0, d) | 0 : 0) { break; }\n g = b[f + 32 >> 2] | 0;\n f = (g | 0) == 0 ? f : g;\n\n if (!(b[f + 32 >> 2] | 0)) {\n i = 10;\n break;\n }\n }\n\n if ((i | 0) == 10) {\n b[f + 32 >> 2] = h;\n break;\n }\n\n Xc(h);\n i = f;\n return i | 0;\n } } while (0);\n\n i = a + 8 | 0;\n b[i >> 2] = (b[i >> 2] | 0) + 1;\n i = h;\n return i | 0;\n }\n\n function Rc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0,\n g = 0;\n g = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n g = b[(b[a >> 2] | 0) + (g << 2) >> 2] | 0;\n\n if (!g) {\n d = 0;\n return d | 0;\n }\n\n if (!d) {\n a = g;\n\n while (1) {\n if (hb(a, c) | 0) {\n f = 10;\n break;\n }\n\n a = b[a + 32 >> 2] | 0;\n\n if (!a) {\n a = 0;\n f = 10;\n break;\n }\n }\n\n if ((f | 0) == 10) { return a | 0; }\n }\n\n a = g;\n\n while (1) {\n if (hb(a, c) | 0 ? hb(a + 16 | 0, d) | 0 : 0) {\n f = 10;\n break;\n }\n\n a = b[a + 32 >> 2] | 0;\n\n if (!a) {\n a = 0;\n f = 10;\n break;\n }\n }\n\n if ((f | 0) == 10) { return a | 0; }\n return 0;\n }\n\n function Sc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0;\n d = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n a = b[(b[a >> 2] | 0) + (d << 2) >> 2] | 0;\n\n if (!a) {\n d = 0;\n return d | 0;\n }\n\n while (1) {\n if (hb(a, c) | 0) {\n c = 5;\n break;\n }\n\n a = b[a + 32 >> 2] | 0;\n\n if (!a) {\n a = 0;\n c = 5;\n break;\n }\n }\n\n if ((c | 0) == 5) { return a | 0; }\n return 0;\n }\n\n function Tc() {\n return 23312;\n }\n\n function Uc(a) {\n a = +a;\n return + +id(+a);\n }\n\n function Vc(a) {\n a = +a;\n return ~~+Uc(a) | 0;\n }\n\n function Wc(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0;\n w = S;\n S = S + 16 | 0;\n n = w;\n\n do { if (a >>> 0 < 245) {\n k = a >>> 0 < 11 ? 16 : a + 11 & -8;\n a = k >>> 3;\n m = b[5829] | 0;\n d = m >>> a;\n\n if (d & 3 | 0) {\n c = (d & 1 ^ 1) + a | 0;\n a = 23356 + (c << 1 << 2) | 0;\n d = a + 8 | 0;\n e = b[d >> 2] | 0;\n f = e + 8 | 0;\n g = b[f >> 2] | 0;\n if ((g | 0) == (a | 0)) { b[5829] = m & ~(1 << c); }else {\n b[g + 12 >> 2] = a;\n b[d >> 2] = g;\n }\n v = c << 3;\n b[e + 4 >> 2] = v | 3;\n v = e + v + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n v = f;\n S = w;\n return v | 0;\n }\n\n l = b[5831] | 0;\n\n if (k >>> 0 > l >>> 0) {\n if (d | 0) {\n c = 2 << a;\n c = d << a & (c | 0 - c);\n c = (c & 0 - c) + -1 | 0;\n i = c >>> 12 & 16;\n c = c >>> i;\n d = c >>> 5 & 8;\n c = c >>> d;\n g = c >>> 2 & 4;\n c = c >>> g;\n a = c >>> 1 & 2;\n c = c >>> a;\n e = c >>> 1 & 1;\n e = (d | i | g | a | e) + (c >>> e) | 0;\n c = 23356 + (e << 1 << 2) | 0;\n a = c + 8 | 0;\n g = b[a >> 2] | 0;\n i = g + 8 | 0;\n d = b[i >> 2] | 0;\n\n if ((d | 0) == (c | 0)) {\n a = m & ~(1 << e);\n b[5829] = a;\n } else {\n b[d + 12 >> 2] = c;\n b[a >> 2] = d;\n a = m;\n }\n\n v = e << 3;\n h = v - k | 0;\n b[g + 4 >> 2] = k | 3;\n f = g + k | 0;\n b[f + 4 >> 2] = h | 1;\n b[g + v >> 2] = h;\n\n if (l | 0) {\n e = b[5834] | 0;\n c = l >>> 3;\n d = 23356 + (c << 1 << 2) | 0;\n c = 1 << c;\n\n if (!(a & c)) {\n b[5829] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n\n b[a >> 2] = e;\n b[c + 12 >> 2] = e;\n b[e + 8 >> 2] = c;\n b[e + 12 >> 2] = d;\n }\n\n b[5831] = h;\n b[5834] = f;\n v = i;\n S = w;\n return v | 0;\n }\n\n g = b[5830] | 0;\n\n if (g) {\n d = (g & 0 - g) + -1 | 0;\n f = d >>> 12 & 16;\n d = d >>> f;\n e = d >>> 5 & 8;\n d = d >>> e;\n h = d >>> 2 & 4;\n d = d >>> h;\n i = d >>> 1 & 2;\n d = d >>> i;\n j = d >>> 1 & 1;\n j = b[23620 + ((e | f | h | i | j) + (d >>> j) << 2) >> 2] | 0;\n d = j;\n i = j;\n j = (b[j + 4 >> 2] & -8) - k | 0;\n\n while (1) {\n a = b[d + 16 >> 2] | 0;\n\n if (!a) {\n a = b[d + 20 >> 2] | 0;\n if (!a) { break; }\n }\n\n h = (b[a + 4 >> 2] & -8) - k | 0;\n f = h >>> 0 < j >>> 0;\n d = a;\n i = f ? a : i;\n j = f ? h : j;\n }\n\n h = i + k | 0;\n\n if (h >>> 0 > i >>> 0) {\n f = b[i + 24 >> 2] | 0;\n c = b[i + 12 >> 2] | 0;\n\n do { if ((c | 0) == (i | 0)) {\n a = i + 20 | 0;\n c = b[a >> 2] | 0;\n\n if (!c) {\n a = i + 16 | 0;\n c = b[a >> 2] | 0;\n\n if (!c) {\n d = 0;\n break;\n }\n }\n\n while (1) {\n e = c + 20 | 0;\n d = b[e >> 2] | 0;\n\n if (!d) {\n e = c + 16 | 0;\n d = b[e >> 2] | 0;\n if (!d) { break; }else {\n c = d;\n a = e;\n }\n } else {\n c = d;\n a = e;\n }\n }\n\n b[a >> 2] = 0;\n d = c;\n } else {\n d = b[i + 8 >> 2] | 0;\n b[d + 12 >> 2] = c;\n b[c + 8 >> 2] = d;\n d = c;\n } } while (0);\n\n do { if (f | 0) {\n c = b[i + 28 >> 2] | 0;\n a = 23620 + (c << 2) | 0;\n\n if ((i | 0) == (b[a >> 2] | 0)) {\n b[a >> 2] = d;\n\n if (!d) {\n b[5830] = g & ~(1 << c);\n break;\n }\n } else {\n v = f + 16 | 0;\n b[((b[v >> 2] | 0) == (i | 0) ? v : f + 20 | 0) >> 2] = d;\n if (!d) { break; }\n }\n\n b[d + 24 >> 2] = f;\n c = b[i + 16 >> 2] | 0;\n\n if (c | 0) {\n b[d + 16 >> 2] = c;\n b[c + 24 >> 2] = d;\n }\n\n c = b[i + 20 >> 2] | 0;\n\n if (c | 0) {\n b[d + 20 >> 2] = c;\n b[c + 24 >> 2] = d;\n }\n } } while (0);\n\n if (j >>> 0 < 16) {\n v = j + k | 0;\n b[i + 4 >> 2] = v | 3;\n v = i + v + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n } else {\n b[i + 4 >> 2] = k | 3;\n b[h + 4 >> 2] = j | 1;\n b[h + j >> 2] = j;\n\n if (l | 0) {\n e = b[5834] | 0;\n c = l >>> 3;\n d = 23356 + (c << 1 << 2) | 0;\n c = 1 << c;\n\n if (!(c & m)) {\n b[5829] = c | m;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n\n b[a >> 2] = e;\n b[c + 12 >> 2] = e;\n b[e + 8 >> 2] = c;\n b[e + 12 >> 2] = d;\n }\n\n b[5831] = j;\n b[5834] = h;\n }\n\n v = i + 8 | 0;\n S = w;\n return v | 0;\n } else { m = k; }\n } else { m = k; }\n } else { m = k; }\n } else if (a >>> 0 <= 4294967231) {\n a = a + 11 | 0;\n k = a & -8;\n e = b[5830] | 0;\n\n if (e) {\n f = 0 - k | 0;\n a = a >>> 8;\n if (a) {\n if (k >>> 0 > 16777215) { j = 31; }else {\n m = (a + 1048320 | 0) >>> 16 & 8;\n q = a << m;\n i = (q + 520192 | 0) >>> 16 & 4;\n q = q << i;\n j = (q + 245760 | 0) >>> 16 & 2;\n j = 14 - (i | m | j) + (q << j >>> 15) | 0;\n j = k >>> (j + 7 | 0) & 1 | j << 1;\n }\n } else { j = 0; }\n d = b[23620 + (j << 2) >> 2] | 0;\n\n a: do { if (!d) {\n d = 0;\n a = 0;\n q = 61;\n } else {\n a = 0;\n i = k << ((j | 0) == 31 ? 0 : 25 - (j >>> 1) | 0);\n g = 0;\n\n while (1) {\n h = (b[d + 4 >> 2] & -8) - k | 0;\n if (h >>> 0 < f >>> 0) { if (!h) {\n a = d;\n f = 0;\n q = 65;\n break a;\n } else {\n a = d;\n f = h;\n } }\n q = b[d + 20 >> 2] | 0;\n d = b[d + 16 + (i >>> 31 << 2) >> 2] | 0;\n g = (q | 0) == 0 | (q | 0) == (d | 0) ? g : q;\n\n if (!d) {\n d = g;\n q = 61;\n break;\n } else { i = i << 1; }\n }\n } } while (0);\n\n if ((q | 0) == 61) {\n if ((d | 0) == 0 & (a | 0) == 0) {\n a = 2 << j;\n a = (a | 0 - a) & e;\n\n if (!a) {\n m = k;\n break;\n }\n\n m = (a & 0 - a) + -1 | 0;\n h = m >>> 12 & 16;\n m = m >>> h;\n g = m >>> 5 & 8;\n m = m >>> g;\n i = m >>> 2 & 4;\n m = m >>> i;\n j = m >>> 1 & 2;\n m = m >>> j;\n d = m >>> 1 & 1;\n a = 0;\n d = b[23620 + ((g | h | i | j | d) + (m >>> d) << 2) >> 2] | 0;\n }\n\n if (!d) {\n i = a;\n h = f;\n } else { q = 65; }\n }\n\n if ((q | 0) == 65) {\n g = d;\n\n while (1) {\n m = (b[g + 4 >> 2] & -8) - k | 0;\n d = m >>> 0 < f >>> 0;\n f = d ? m : f;\n a = d ? g : a;\n d = b[g + 16 >> 2] | 0;\n if (!d) { d = b[g + 20 >> 2] | 0; }\n\n if (!d) {\n i = a;\n h = f;\n break;\n } else { g = d; }\n }\n }\n\n if (((i | 0) != 0 ? h >>> 0 < ((b[5831] | 0) - k | 0) >>> 0 : 0) ? (l = i + k | 0, l >>> 0 > i >>> 0) : 0) {\n g = b[i + 24 >> 2] | 0;\n c = b[i + 12 >> 2] | 0;\n\n do { if ((c | 0) == (i | 0)) {\n a = i + 20 | 0;\n c = b[a >> 2] | 0;\n\n if (!c) {\n a = i + 16 | 0;\n c = b[a >> 2] | 0;\n\n if (!c) {\n c = 0;\n break;\n }\n }\n\n while (1) {\n f = c + 20 | 0;\n d = b[f >> 2] | 0;\n\n if (!d) {\n f = c + 16 | 0;\n d = b[f >> 2] | 0;\n if (!d) { break; }else {\n c = d;\n a = f;\n }\n } else {\n c = d;\n a = f;\n }\n }\n\n b[a >> 2] = 0;\n } else {\n v = b[i + 8 >> 2] | 0;\n b[v + 12 >> 2] = c;\n b[c + 8 >> 2] = v;\n } } while (0);\n\n do { if (g) {\n a = b[i + 28 >> 2] | 0;\n d = 23620 + (a << 2) | 0;\n\n if ((i | 0) == (b[d >> 2] | 0)) {\n b[d >> 2] = c;\n\n if (!c) {\n e = e & ~(1 << a);\n b[5830] = e;\n break;\n }\n } else {\n v = g + 16 | 0;\n b[((b[v >> 2] | 0) == (i | 0) ? v : g + 20 | 0) >> 2] = c;\n if (!c) { break; }\n }\n\n b[c + 24 >> 2] = g;\n a = b[i + 16 >> 2] | 0;\n\n if (a | 0) {\n b[c + 16 >> 2] = a;\n b[a + 24 >> 2] = c;\n }\n\n a = b[i + 20 >> 2] | 0;\n\n if (a) {\n b[c + 20 >> 2] = a;\n b[a + 24 >> 2] = c;\n }\n } } while (0);\n\n b: do { if (h >>> 0 < 16) {\n v = h + k | 0;\n b[i + 4 >> 2] = v | 3;\n v = i + v + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n } else {\n b[i + 4 >> 2] = k | 3;\n b[l + 4 >> 2] = h | 1;\n b[l + h >> 2] = h;\n c = h >>> 3;\n\n if (h >>> 0 < 256) {\n d = 23356 + (c << 1 << 2) | 0;\n a = b[5829] | 0;\n c = 1 << c;\n\n if (!(a & c)) {\n b[5829] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n\n b[a >> 2] = l;\n b[c + 12 >> 2] = l;\n b[l + 8 >> 2] = c;\n b[l + 12 >> 2] = d;\n break;\n }\n\n c = h >>> 8;\n if (c) {\n if (h >>> 0 > 16777215) { d = 31; }else {\n u = (c + 1048320 | 0) >>> 16 & 8;\n v = c << u;\n t = (v + 520192 | 0) >>> 16 & 4;\n v = v << t;\n d = (v + 245760 | 0) >>> 16 & 2;\n d = 14 - (t | u | d) + (v << d >>> 15) | 0;\n d = h >>> (d + 7 | 0) & 1 | d << 1;\n }\n } else { d = 0; }\n c = 23620 + (d << 2) | 0;\n b[l + 28 >> 2] = d;\n a = l + 16 | 0;\n b[a + 4 >> 2] = 0;\n b[a >> 2] = 0;\n a = 1 << d;\n\n if (!(e & a)) {\n b[5830] = e | a;\n b[c >> 2] = l;\n b[l + 24 >> 2] = c;\n b[l + 12 >> 2] = l;\n b[l + 8 >> 2] = l;\n break;\n }\n\n c = b[c >> 2] | 0;\n\n c: do { if ((b[c + 4 >> 2] & -8 | 0) != (h | 0)) {\n e = h << ((d | 0) == 31 ? 0 : 25 - (d >>> 1) | 0);\n\n while (1) {\n d = c + 16 + (e >>> 31 << 2) | 0;\n a = b[d >> 2] | 0;\n if (!a) { break; }\n\n if ((b[a + 4 >> 2] & -8 | 0) == (h | 0)) {\n c = a;\n break c;\n } else {\n e = e << 1;\n c = a;\n }\n }\n\n b[d >> 2] = l;\n b[l + 24 >> 2] = c;\n b[l + 12 >> 2] = l;\n b[l + 8 >> 2] = l;\n break b;\n } } while (0);\n\n u = c + 8 | 0;\n v = b[u >> 2] | 0;\n b[v + 12 >> 2] = l;\n b[u >> 2] = l;\n b[l + 8 >> 2] = v;\n b[l + 12 >> 2] = c;\n b[l + 24 >> 2] = 0;\n } } while (0);\n\n v = i + 8 | 0;\n S = w;\n return v | 0;\n } else { m = k; }\n } else { m = k; }\n } else { m = -1; } } while (0);\n\n d = b[5831] | 0;\n\n if (d >>> 0 >= m >>> 0) {\n c = d - m | 0;\n a = b[5834] | 0;\n\n if (c >>> 0 > 15) {\n v = a + m | 0;\n b[5834] = v;\n b[5831] = c;\n b[v + 4 >> 2] = c | 1;\n b[a + d >> 2] = c;\n b[a + 4 >> 2] = m | 3;\n } else {\n b[5831] = 0;\n b[5834] = 0;\n b[a + 4 >> 2] = d | 3;\n v = a + d + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n }\n\n v = a + 8 | 0;\n S = w;\n return v | 0;\n }\n\n h = b[5832] | 0;\n\n if (h >>> 0 > m >>> 0) {\n t = h - m | 0;\n b[5832] = t;\n v = b[5835] | 0;\n u = v + m | 0;\n b[5835] = u;\n b[u + 4 >> 2] = t | 1;\n b[v + 4 >> 2] = m | 3;\n v = v + 8 | 0;\n S = w;\n return v | 0;\n }\n\n if (!(b[5947] | 0)) {\n b[5949] = 4096;\n b[5948] = 4096;\n b[5950] = -1;\n b[5951] = -1;\n b[5952] = 0;\n b[5940] = 0;\n b[5947] = n & -16 ^ 1431655768;\n a = 4096;\n } else { a = b[5949] | 0; }\n\n i = m + 48 | 0;\n j = m + 47 | 0;\n g = a + j | 0;\n f = 0 - a | 0;\n k = g & f;\n\n if (k >>> 0 <= m >>> 0) {\n v = 0;\n S = w;\n return v | 0;\n }\n\n a = b[5939] | 0;\n\n if (a | 0 ? (l = b[5937] | 0, n = l + k | 0, n >>> 0 <= l >>> 0 | n >>> 0 > a >>> 0) : 0) {\n v = 0;\n S = w;\n return v | 0;\n }\n\n d: do { if (!(b[5940] & 4)) {\n d = b[5835] | 0;\n\n e: do { if (d) {\n e = 23764;\n\n while (1) {\n n = b[e >> 2] | 0;\n if (n >>> 0 <= d >>> 0 ? (n + (b[e + 4 >> 2] | 0) | 0) >>> 0 > d >>> 0 : 0) { break; }\n a = b[e + 8 >> 2] | 0;\n\n if (!a) {\n q = 128;\n break e;\n } else { e = a; }\n }\n\n c = g - h & f;\n\n if (c >>> 0 < 2147483647) {\n a = jd(c | 0) | 0;\n\n if ((a | 0) == ((b[e >> 2] | 0) + (b[e + 4 >> 2] | 0) | 0)) {\n if ((a | 0) != (-1 | 0)) {\n h = c;\n g = a;\n q = 145;\n break d;\n }\n } else {\n e = a;\n q = 136;\n }\n } else { c = 0; }\n } else { q = 128; } } while (0);\n\n do { if ((q | 0) == 128) {\n d = jd(0) | 0;\n\n if ((d | 0) != (-1 | 0) ? (c = d, o = b[5948] | 0, p = o + -1 | 0, c = ((p & c | 0) == 0 ? 0 : (p + c & 0 - o) - c | 0) + k | 0, o = b[5937] | 0, p = c + o | 0, c >>> 0 > m >>> 0 & c >>> 0 < 2147483647) : 0) {\n n = b[5939] | 0;\n\n if (n | 0 ? p >>> 0 <= o >>> 0 | p >>> 0 > n >>> 0 : 0) {\n c = 0;\n break;\n }\n\n a = jd(c | 0) | 0;\n\n if ((a | 0) == (d | 0)) {\n h = c;\n g = d;\n q = 145;\n break d;\n } else {\n e = a;\n q = 136;\n }\n } else { c = 0; }\n } } while (0);\n\n do { if ((q | 0) == 136) {\n d = 0 - c | 0;\n if (!(i >>> 0 > c >>> 0 & (c >>> 0 < 2147483647 & (e | 0) != (-1 | 0)))) { if ((e | 0) == (-1 | 0)) {\n c = 0;\n break;\n } else {\n h = c;\n g = e;\n q = 145;\n break d;\n } }\n a = b[5949] | 0;\n a = j - c + a & 0 - a;\n\n if (a >>> 0 >= 2147483647) {\n h = c;\n g = e;\n q = 145;\n break d;\n }\n\n if ((jd(a | 0) | 0) == (-1 | 0)) {\n jd(d | 0) | 0;\n c = 0;\n break;\n } else {\n h = a + c | 0;\n g = e;\n q = 145;\n break d;\n }\n } } while (0);\n\n b[5940] = b[5940] | 4;\n q = 143;\n } else {\n c = 0;\n q = 143;\n } } while (0);\n\n if (((q | 0) == 143 ? k >>> 0 < 2147483647 : 0) ? (t = jd(k | 0) | 0, p = jd(0) | 0, r = p - t | 0, s = r >>> 0 > (m + 40 | 0) >>> 0, !((t | 0) == (-1 | 0) | s ^ 1 | t >>> 0 < p >>> 0 & ((t | 0) != (-1 | 0) & (p | 0) != (-1 | 0)) ^ 1)) : 0) {\n h = s ? r : c;\n g = t;\n q = 145;\n }\n\n if ((q | 0) == 145) {\n c = (b[5937] | 0) + h | 0;\n b[5937] = c;\n if (c >>> 0 > (b[5938] | 0) >>> 0) { b[5938] = c; }\n j = b[5835] | 0;\n\n f: do { if (j) {\n c = 23764;\n\n while (1) {\n a = b[c >> 2] | 0;\n d = b[c + 4 >> 2] | 0;\n\n if ((g | 0) == (a + d | 0)) {\n q = 154;\n break;\n }\n\n e = b[c + 8 >> 2] | 0;\n if (!e) { break; }else { c = e; }\n }\n\n if (((q | 0) == 154 ? (u = c + 4 | 0, (b[c + 12 >> 2] & 8 | 0) == 0) : 0) ? g >>> 0 > j >>> 0 & a >>> 0 <= j >>> 0 : 0) {\n b[u >> 2] = d + h;\n v = (b[5832] | 0) + h | 0;\n t = j + 8 | 0;\n t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n u = j + t | 0;\n t = v - t | 0;\n b[5835] = u;\n b[5832] = t;\n b[u + 4 >> 2] = t | 1;\n b[j + v + 4 >> 2] = 40;\n b[5836] = b[5951];\n break;\n }\n\n if (g >>> 0 < (b[5833] | 0) >>> 0) { b[5833] = g; }\n d = g + h | 0;\n c = 23764;\n\n while (1) {\n if ((b[c >> 2] | 0) == (d | 0)) {\n q = 162;\n break;\n }\n\n a = b[c + 8 >> 2] | 0;\n if (!a) { break; }else { c = a; }\n }\n\n if ((q | 0) == 162 ? (b[c + 12 >> 2] & 8 | 0) == 0 : 0) {\n b[c >> 2] = g;\n l = c + 4 | 0;\n b[l >> 2] = (b[l >> 2] | 0) + h;\n l = g + 8 | 0;\n l = g + ((l & 7 | 0) == 0 ? 0 : 0 - l & 7) | 0;\n c = d + 8 | 0;\n c = d + ((c & 7 | 0) == 0 ? 0 : 0 - c & 7) | 0;\n k = l + m | 0;\n i = c - l - m | 0;\n b[l + 4 >> 2] = m | 3;\n\n g: do { if ((j | 0) == (c | 0)) {\n v = (b[5832] | 0) + i | 0;\n b[5832] = v;\n b[5835] = k;\n b[k + 4 >> 2] = v | 1;\n } else {\n if ((b[5834] | 0) == (c | 0)) {\n v = (b[5831] | 0) + i | 0;\n b[5831] = v;\n b[5834] = k;\n b[k + 4 >> 2] = v | 1;\n b[k + v >> 2] = v;\n break;\n }\n\n a = b[c + 4 >> 2] | 0;\n\n if ((a & 3 | 0) == 1) {\n h = a & -8;\n e = a >>> 3;\n\n h: do { if (a >>> 0 < 256) {\n a = b[c + 8 >> 2] | 0;\n d = b[c + 12 >> 2] | 0;\n\n if ((d | 0) == (a | 0)) {\n b[5829] = b[5829] & ~(1 << e);\n break;\n } else {\n b[a + 12 >> 2] = d;\n b[d + 8 >> 2] = a;\n break;\n }\n } else {\n g = b[c + 24 >> 2] | 0;\n a = b[c + 12 >> 2] | 0;\n\n do { if ((a | 0) == (c | 0)) {\n d = c + 16 | 0;\n e = d + 4 | 0;\n a = b[e >> 2] | 0;\n\n if (!a) {\n a = b[d >> 2] | 0;\n\n if (!a) {\n a = 0;\n break;\n }\n } else { d = e; }\n\n while (1) {\n f = a + 20 | 0;\n e = b[f >> 2] | 0;\n\n if (!e) {\n f = a + 16 | 0;\n e = b[f >> 2] | 0;\n if (!e) { break; }else {\n a = e;\n d = f;\n }\n } else {\n a = e;\n d = f;\n }\n }\n\n b[d >> 2] = 0;\n } else {\n v = b[c + 8 >> 2] | 0;\n b[v + 12 >> 2] = a;\n b[a + 8 >> 2] = v;\n } } while (0);\n\n if (!g) { break; }\n d = b[c + 28 >> 2] | 0;\n e = 23620 + (d << 2) | 0;\n\n do { if ((b[e >> 2] | 0) != (c | 0)) {\n v = g + 16 | 0;\n b[((b[v >> 2] | 0) == (c | 0) ? v : g + 20 | 0) >> 2] = a;\n if (!a) { break h; }\n } else {\n b[e >> 2] = a;\n if (a | 0) { break; }\n b[5830] = b[5830] & ~(1 << d);\n break h;\n } } while (0);\n\n b[a + 24 >> 2] = g;\n d = c + 16 | 0;\n e = b[d >> 2] | 0;\n\n if (e | 0) {\n b[a + 16 >> 2] = e;\n b[e + 24 >> 2] = a;\n }\n\n d = b[d + 4 >> 2] | 0;\n if (!d) { break; }\n b[a + 20 >> 2] = d;\n b[d + 24 >> 2] = a;\n } } while (0);\n\n c = c + h | 0;\n f = h + i | 0;\n } else { f = i; }\n\n c = c + 4 | 0;\n b[c >> 2] = b[c >> 2] & -2;\n b[k + 4 >> 2] = f | 1;\n b[k + f >> 2] = f;\n c = f >>> 3;\n\n if (f >>> 0 < 256) {\n d = 23356 + (c << 1 << 2) | 0;\n a = b[5829] | 0;\n c = 1 << c;\n\n if (!(a & c)) {\n b[5829] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n\n b[a >> 2] = k;\n b[c + 12 >> 2] = k;\n b[k + 8 >> 2] = c;\n b[k + 12 >> 2] = d;\n break;\n }\n\n c = f >>> 8;\n\n do { if (!c) { e = 0; }else {\n if (f >>> 0 > 16777215) {\n e = 31;\n break;\n }\n\n u = (c + 1048320 | 0) >>> 16 & 8;\n v = c << u;\n t = (v + 520192 | 0) >>> 16 & 4;\n v = v << t;\n e = (v + 245760 | 0) >>> 16 & 2;\n e = 14 - (t | u | e) + (v << e >>> 15) | 0;\n e = f >>> (e + 7 | 0) & 1 | e << 1;\n } } while (0);\n\n c = 23620 + (e << 2) | 0;\n b[k + 28 >> 2] = e;\n a = k + 16 | 0;\n b[a + 4 >> 2] = 0;\n b[a >> 2] = 0;\n a = b[5830] | 0;\n d = 1 << e;\n\n if (!(a & d)) {\n b[5830] = a | d;\n b[c >> 2] = k;\n b[k + 24 >> 2] = c;\n b[k + 12 >> 2] = k;\n b[k + 8 >> 2] = k;\n break;\n }\n\n c = b[c >> 2] | 0;\n\n i: do { if ((b[c + 4 >> 2] & -8 | 0) != (f | 0)) {\n e = f << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n\n while (1) {\n d = c + 16 + (e >>> 31 << 2) | 0;\n a = b[d >> 2] | 0;\n if (!a) { break; }\n\n if ((b[a + 4 >> 2] & -8 | 0) == (f | 0)) {\n c = a;\n break i;\n } else {\n e = e << 1;\n c = a;\n }\n }\n\n b[d >> 2] = k;\n b[k + 24 >> 2] = c;\n b[k + 12 >> 2] = k;\n b[k + 8 >> 2] = k;\n break g;\n } } while (0);\n\n u = c + 8 | 0;\n v = b[u >> 2] | 0;\n b[v + 12 >> 2] = k;\n b[u >> 2] = k;\n b[k + 8 >> 2] = v;\n b[k + 12 >> 2] = c;\n b[k + 24 >> 2] = 0;\n } } while (0);\n\n v = l + 8 | 0;\n S = w;\n return v | 0;\n }\n\n c = 23764;\n\n while (1) {\n a = b[c >> 2] | 0;\n if (a >>> 0 <= j >>> 0 ? (v = a + (b[c + 4 >> 2] | 0) | 0, v >>> 0 > j >>> 0) : 0) { break; }\n c = b[c + 8 >> 2] | 0;\n }\n\n f = v + -47 | 0;\n a = f + 8 | 0;\n a = f + ((a & 7 | 0) == 0 ? 0 : 0 - a & 7) | 0;\n f = j + 16 | 0;\n a = a >>> 0 < f >>> 0 ? j : a;\n c = a + 8 | 0;\n d = h + -40 | 0;\n t = g + 8 | 0;\n t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n u = g + t | 0;\n t = d - t | 0;\n b[5835] = u;\n b[5832] = t;\n b[u + 4 >> 2] = t | 1;\n b[g + d + 4 >> 2] = 40;\n b[5836] = b[5951];\n d = a + 4 | 0;\n b[d >> 2] = 27;\n b[c >> 2] = b[5941];\n b[c + 4 >> 2] = b[5942];\n b[c + 8 >> 2] = b[5943];\n b[c + 12 >> 2] = b[5944];\n b[5941] = g;\n b[5942] = h;\n b[5944] = 0;\n b[5943] = c;\n c = a + 24 | 0;\n\n do {\n u = c;\n c = c + 4 | 0;\n b[c >> 2] = 7;\n } while ((u + 8 | 0) >>> 0 < v >>> 0);\n\n if ((a | 0) != (j | 0)) {\n g = a - j | 0;\n b[d >> 2] = b[d >> 2] & -2;\n b[j + 4 >> 2] = g | 1;\n b[a >> 2] = g;\n c = g >>> 3;\n\n if (g >>> 0 < 256) {\n d = 23356 + (c << 1 << 2) | 0;\n a = b[5829] | 0;\n c = 1 << c;\n\n if (!(a & c)) {\n b[5829] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n\n b[a >> 2] = j;\n b[c + 12 >> 2] = j;\n b[j + 8 >> 2] = c;\n b[j + 12 >> 2] = d;\n break;\n }\n\n c = g >>> 8;\n if (c) {\n if (g >>> 0 > 16777215) { e = 31; }else {\n u = (c + 1048320 | 0) >>> 16 & 8;\n v = c << u;\n t = (v + 520192 | 0) >>> 16 & 4;\n v = v << t;\n e = (v + 245760 | 0) >>> 16 & 2;\n e = 14 - (t | u | e) + (v << e >>> 15) | 0;\n e = g >>> (e + 7 | 0) & 1 | e << 1;\n }\n } else { e = 0; }\n d = 23620 + (e << 2) | 0;\n b[j + 28 >> 2] = e;\n b[j + 20 >> 2] = 0;\n b[f >> 2] = 0;\n c = b[5830] | 0;\n a = 1 << e;\n\n if (!(c & a)) {\n b[5830] = c | a;\n b[d >> 2] = j;\n b[j + 24 >> 2] = d;\n b[j + 12 >> 2] = j;\n b[j + 8 >> 2] = j;\n break;\n }\n\n c = b[d >> 2] | 0;\n\n j: do { if ((b[c + 4 >> 2] & -8 | 0) != (g | 0)) {\n e = g << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n\n while (1) {\n d = c + 16 + (e >>> 31 << 2) | 0;\n a = b[d >> 2] | 0;\n if (!a) { break; }\n\n if ((b[a + 4 >> 2] & -8 | 0) == (g | 0)) {\n c = a;\n break j;\n } else {\n e = e << 1;\n c = a;\n }\n }\n\n b[d >> 2] = j;\n b[j + 24 >> 2] = c;\n b[j + 12 >> 2] = j;\n b[j + 8 >> 2] = j;\n break f;\n } } while (0);\n\n u = c + 8 | 0;\n v = b[u >> 2] | 0;\n b[v + 12 >> 2] = j;\n b[u >> 2] = j;\n b[j + 8 >> 2] = v;\n b[j + 12 >> 2] = c;\n b[j + 24 >> 2] = 0;\n }\n } else {\n v = b[5833] | 0;\n if ((v | 0) == 0 | g >>> 0 < v >>> 0) { b[5833] = g; }\n b[5941] = g;\n b[5942] = h;\n b[5944] = 0;\n b[5838] = b[5947];\n b[5837] = -1;\n b[5842] = 23356;\n b[5841] = 23356;\n b[5844] = 23364;\n b[5843] = 23364;\n b[5846] = 23372;\n b[5845] = 23372;\n b[5848] = 23380;\n b[5847] = 23380;\n b[5850] = 23388;\n b[5849] = 23388;\n b[5852] = 23396;\n b[5851] = 23396;\n b[5854] = 23404;\n b[5853] = 23404;\n b[5856] = 23412;\n b[5855] = 23412;\n b[5858] = 23420;\n b[5857] = 23420;\n b[5860] = 23428;\n b[5859] = 23428;\n b[5862] = 23436;\n b[5861] = 23436;\n b[5864] = 23444;\n b[5863] = 23444;\n b[5866] = 23452;\n b[5865] = 23452;\n b[5868] = 23460;\n b[5867] = 23460;\n b[5870] = 23468;\n b[5869] = 23468;\n b[5872] = 23476;\n b[5871] = 23476;\n b[5874] = 23484;\n b[5873] = 23484;\n b[5876] = 23492;\n b[5875] = 23492;\n b[5878] = 23500;\n b[5877] = 23500;\n b[5880] = 23508;\n b[5879] = 23508;\n b[5882] = 23516;\n b[5881] = 23516;\n b[5884] = 23524;\n b[5883] = 23524;\n b[5886] = 23532;\n b[5885] = 23532;\n b[5888] = 23540;\n b[5887] = 23540;\n b[5890] = 23548;\n b[5889] = 23548;\n b[5892] = 23556;\n b[5891] = 23556;\n b[5894] = 23564;\n b[5893] = 23564;\n b[5896] = 23572;\n b[5895] = 23572;\n b[5898] = 23580;\n b[5897] = 23580;\n b[5900] = 23588;\n b[5899] = 23588;\n b[5902] = 23596;\n b[5901] = 23596;\n b[5904] = 23604;\n b[5903] = 23604;\n v = h + -40 | 0;\n t = g + 8 | 0;\n t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n u = g + t | 0;\n t = v - t | 0;\n b[5835] = u;\n b[5832] = t;\n b[u + 4 >> 2] = t | 1;\n b[g + v + 4 >> 2] = 40;\n b[5836] = b[5951];\n } } while (0);\n\n c = b[5832] | 0;\n\n if (c >>> 0 > m >>> 0) {\n t = c - m | 0;\n b[5832] = t;\n v = b[5835] | 0;\n u = v + m | 0;\n b[5835] = u;\n b[u + 4 >> 2] = t | 1;\n b[v + 4 >> 2] = m | 3;\n v = v + 8 | 0;\n S = w;\n return v | 0;\n }\n }\n\n v = Tc() | 0;\n b[v >> 2] = 12;\n v = 0;\n S = w;\n return v | 0;\n }\n\n function Xc(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n if (!a) { return; }\n d = a + -8 | 0;\n f = b[5833] | 0;\n a = b[a + -4 >> 2] | 0;\n c = a & -8;\n j = d + c | 0;\n\n do { if (!(a & 1)) {\n e = b[d >> 2] | 0;\n if (!(a & 3)) { return; }\n h = d + (0 - e) | 0;\n g = e + c | 0;\n if (h >>> 0 < f >>> 0) { return; }\n\n if ((b[5834] | 0) == (h | 0)) {\n a = j + 4 | 0;\n c = b[a >> 2] | 0;\n\n if ((c & 3 | 0) != 3) {\n i = h;\n c = g;\n break;\n }\n\n b[5831] = g;\n b[a >> 2] = c & -2;\n b[h + 4 >> 2] = g | 1;\n b[h + g >> 2] = g;\n return;\n }\n\n d = e >>> 3;\n\n if (e >>> 0 < 256) {\n a = b[h + 8 >> 2] | 0;\n c = b[h + 12 >> 2] | 0;\n\n if ((c | 0) == (a | 0)) {\n b[5829] = b[5829] & ~(1 << d);\n i = h;\n c = g;\n break;\n } else {\n b[a + 12 >> 2] = c;\n b[c + 8 >> 2] = a;\n i = h;\n c = g;\n break;\n }\n }\n\n f = b[h + 24 >> 2] | 0;\n a = b[h + 12 >> 2] | 0;\n\n do { if ((a | 0) == (h | 0)) {\n c = h + 16 | 0;\n d = c + 4 | 0;\n a = b[d >> 2] | 0;\n\n if (!a) {\n a = b[c >> 2] | 0;\n\n if (!a) {\n a = 0;\n break;\n }\n } else { c = d; }\n\n while (1) {\n e = a + 20 | 0;\n d = b[e >> 2] | 0;\n\n if (!d) {\n e = a + 16 | 0;\n d = b[e >> 2] | 0;\n if (!d) { break; }else {\n a = d;\n c = e;\n }\n } else {\n a = d;\n c = e;\n }\n }\n\n b[c >> 2] = 0;\n } else {\n i = b[h + 8 >> 2] | 0;\n b[i + 12 >> 2] = a;\n b[a + 8 >> 2] = i;\n } } while (0);\n\n if (f) {\n c = b[h + 28 >> 2] | 0;\n d = 23620 + (c << 2) | 0;\n\n if ((b[d >> 2] | 0) == (h | 0)) {\n b[d >> 2] = a;\n\n if (!a) {\n b[5830] = b[5830] & ~(1 << c);\n i = h;\n c = g;\n break;\n }\n } else {\n i = f + 16 | 0;\n b[((b[i >> 2] | 0) == (h | 0) ? i : f + 20 | 0) >> 2] = a;\n\n if (!a) {\n i = h;\n c = g;\n break;\n }\n }\n\n b[a + 24 >> 2] = f;\n c = h + 16 | 0;\n d = b[c >> 2] | 0;\n\n if (d | 0) {\n b[a + 16 >> 2] = d;\n b[d + 24 >> 2] = a;\n }\n\n c = b[c + 4 >> 2] | 0;\n\n if (c) {\n b[a + 20 >> 2] = c;\n b[c + 24 >> 2] = a;\n i = h;\n c = g;\n } else {\n i = h;\n c = g;\n }\n } else {\n i = h;\n c = g;\n }\n } else {\n i = d;\n h = d;\n } } while (0);\n\n if (h >>> 0 >= j >>> 0) { return; }\n a = j + 4 | 0;\n e = b[a >> 2] | 0;\n if (!(e & 1)) { return; }\n\n if (!(e & 2)) {\n if ((b[5835] | 0) == (j | 0)) {\n j = (b[5832] | 0) + c | 0;\n b[5832] = j;\n b[5835] = i;\n b[i + 4 >> 2] = j | 1;\n if ((i | 0) != (b[5834] | 0)) { return; }\n b[5834] = 0;\n b[5831] = 0;\n return;\n }\n\n if ((b[5834] | 0) == (j | 0)) {\n j = (b[5831] | 0) + c | 0;\n b[5831] = j;\n b[5834] = h;\n b[i + 4 >> 2] = j | 1;\n b[h + j >> 2] = j;\n return;\n }\n\n f = (e & -8) + c | 0;\n d = e >>> 3;\n\n do { if (e >>> 0 < 256) {\n c = b[j + 8 >> 2] | 0;\n a = b[j + 12 >> 2] | 0;\n\n if ((a | 0) == (c | 0)) {\n b[5829] = b[5829] & ~(1 << d);\n break;\n } else {\n b[c + 12 >> 2] = a;\n b[a + 8 >> 2] = c;\n break;\n }\n } else {\n g = b[j + 24 >> 2] | 0;\n a = b[j + 12 >> 2] | 0;\n\n do { if ((a | 0) == (j | 0)) {\n c = j + 16 | 0;\n d = c + 4 | 0;\n a = b[d >> 2] | 0;\n\n if (!a) {\n a = b[c >> 2] | 0;\n\n if (!a) {\n d = 0;\n break;\n }\n } else { c = d; }\n\n while (1) {\n e = a + 20 | 0;\n d = b[e >> 2] | 0;\n\n if (!d) {\n e = a + 16 | 0;\n d = b[e >> 2] | 0;\n if (!d) { break; }else {\n a = d;\n c = e;\n }\n } else {\n a = d;\n c = e;\n }\n }\n\n b[c >> 2] = 0;\n d = a;\n } else {\n d = b[j + 8 >> 2] | 0;\n b[d + 12 >> 2] = a;\n b[a + 8 >> 2] = d;\n d = a;\n } } while (0);\n\n if (g | 0) {\n a = b[j + 28 >> 2] | 0;\n c = 23620 + (a << 2) | 0;\n\n if ((b[c >> 2] | 0) == (j | 0)) {\n b[c >> 2] = d;\n\n if (!d) {\n b[5830] = b[5830] & ~(1 << a);\n break;\n }\n } else {\n e = g + 16 | 0;\n b[((b[e >> 2] | 0) == (j | 0) ? e : g + 20 | 0) >> 2] = d;\n if (!d) { break; }\n }\n\n b[d + 24 >> 2] = g;\n a = j + 16 | 0;\n c = b[a >> 2] | 0;\n\n if (c | 0) {\n b[d + 16 >> 2] = c;\n b[c + 24 >> 2] = d;\n }\n\n a = b[a + 4 >> 2] | 0;\n\n if (a | 0) {\n b[d + 20 >> 2] = a;\n b[a + 24 >> 2] = d;\n }\n }\n } } while (0);\n\n b[i + 4 >> 2] = f | 1;\n b[h + f >> 2] = f;\n\n if ((i | 0) == (b[5834] | 0)) {\n b[5831] = f;\n return;\n }\n } else {\n b[a >> 2] = e & -2;\n b[i + 4 >> 2] = c | 1;\n b[h + c >> 2] = c;\n f = c;\n }\n\n a = f >>> 3;\n\n if (f >>> 0 < 256) {\n d = 23356 + (a << 1 << 2) | 0;\n c = b[5829] | 0;\n a = 1 << a;\n\n if (!(c & a)) {\n b[5829] = c | a;\n a = d;\n c = d + 8 | 0;\n } else {\n c = d + 8 | 0;\n a = b[c >> 2] | 0;\n }\n\n b[c >> 2] = i;\n b[a + 12 >> 2] = i;\n b[i + 8 >> 2] = a;\n b[i + 12 >> 2] = d;\n return;\n }\n\n a = f >>> 8;\n if (a) {\n if (f >>> 0 > 16777215) { e = 31; }else {\n h = (a + 1048320 | 0) >>> 16 & 8;\n j = a << h;\n g = (j + 520192 | 0) >>> 16 & 4;\n j = j << g;\n e = (j + 245760 | 0) >>> 16 & 2;\n e = 14 - (g | h | e) + (j << e >>> 15) | 0;\n e = f >>> (e + 7 | 0) & 1 | e << 1;\n }\n } else { e = 0; }\n a = 23620 + (e << 2) | 0;\n b[i + 28 >> 2] = e;\n b[i + 20 >> 2] = 0;\n b[i + 16 >> 2] = 0;\n c = b[5830] | 0;\n d = 1 << e;\n\n a: do { if (!(c & d)) {\n b[5830] = c | d;\n b[a >> 2] = i;\n b[i + 24 >> 2] = a;\n b[i + 12 >> 2] = i;\n b[i + 8 >> 2] = i;\n } else {\n a = b[a >> 2] | 0;\n\n b: do { if ((b[a + 4 >> 2] & -8 | 0) != (f | 0)) {\n e = f << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n\n while (1) {\n d = a + 16 + (e >>> 31 << 2) | 0;\n c = b[d >> 2] | 0;\n if (!c) { break; }\n\n if ((b[c + 4 >> 2] & -8 | 0) == (f | 0)) {\n a = c;\n break b;\n } else {\n e = e << 1;\n a = c;\n }\n }\n\n b[d >> 2] = i;\n b[i + 24 >> 2] = a;\n b[i + 12 >> 2] = i;\n b[i + 8 >> 2] = i;\n break a;\n } } while (0);\n\n h = a + 8 | 0;\n j = b[h >> 2] | 0;\n b[j + 12 >> 2] = i;\n b[h >> 2] = i;\n b[i + 8 >> 2] = j;\n b[i + 12 >> 2] = a;\n b[i + 24 >> 2] = 0;\n } } while (0);\n\n j = (b[5837] | 0) + -1 | 0;\n b[5837] = j;\n if (j | 0) { return; }\n a = 23772;\n\n while (1) {\n a = b[a >> 2] | 0;\n if (!a) { break; }else { a = a + 8 | 0; }\n }\n\n b[5837] = -1;\n return;\n }\n\n function Yc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0;\n\n if (a) {\n d = B(c, a) | 0;\n if ((c | a) >>> 0 > 65535) { d = ((d >>> 0) / (a >>> 0) | 0 | 0) == (c | 0) ? d : -1; }\n } else { d = 0; }\n\n a = Wc(d) | 0;\n if (!a) { return a | 0; }\n if (!(b[a + -4 >> 2] & 3)) { return a | 0; }\n hd(a | 0, 0, d | 0) | 0;\n return a | 0;\n }\n\n function Zc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n c = a + c >>> 0;\n return (F(b + d + (c >>> 0 < a >>> 0 | 0) >>> 0 | 0), c | 0) | 0;\n }\n\n function _c(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n d = b - d - (c >>> 0 > a >>> 0 | 0) >>> 0;\n return (F(d | 0), a - c >>> 0 | 0) | 0;\n }\n\n function $c(a) {\n a = a | 0;\n return (a ? 31 - (D(a ^ a - 1) | 0) | 0 : 32) | 0;\n }\n\n function ad(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0;\n l = a;\n j = c;\n k = j;\n h = d;\n n = e;\n i = n;\n\n if (!k) {\n g = (f | 0) != 0;\n\n if (!i) {\n if (g) {\n b[f >> 2] = (l >>> 0) % (h >>> 0);\n b[f + 4 >> 2] = 0;\n }\n\n n = 0;\n f = (l >>> 0) / (h >>> 0) >>> 0;\n return (F(n | 0), f) | 0;\n } else {\n if (!g) {\n n = 0;\n f = 0;\n return (F(n | 0), f) | 0;\n }\n\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = c & 0;\n n = 0;\n f = 0;\n return (F(n | 0), f) | 0;\n }\n }\n\n g = (i | 0) == 0;\n\n do { if (h) {\n if (!g) {\n g = (D(i | 0) | 0) - (D(k | 0) | 0) | 0;\n\n if (g >>> 0 <= 31) {\n m = g + 1 | 0;\n i = 31 - g | 0;\n c = g - 31 >> 31;\n h = m;\n a = l >>> (m >>> 0) & c | k << i;\n c = k >>> (m >>> 0) & c;\n g = 0;\n i = l << i;\n break;\n }\n\n if (!f) {\n n = 0;\n f = 0;\n return (F(n | 0), f) | 0;\n }\n\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = j | c & 0;\n n = 0;\n f = 0;\n return (F(n | 0), f) | 0;\n }\n\n g = h - 1 | 0;\n\n if (g & h | 0) {\n i = (D(h | 0) | 0) + 33 - (D(k | 0) | 0) | 0;\n p = 64 - i | 0;\n m = 32 - i | 0;\n j = m >> 31;\n o = i - 32 | 0;\n c = o >> 31;\n h = i;\n a = m - 1 >> 31 & k >>> (o >>> 0) | (k << m | l >>> (i >>> 0)) & c;\n c = c & k >>> (i >>> 0);\n g = l << p & j;\n i = (k << p | l >>> (o >>> 0)) & j | l << m & i - 33 >> 31;\n break;\n }\n\n if (f | 0) {\n b[f >> 2] = g & l;\n b[f + 4 >> 2] = 0;\n }\n\n if ((h | 0) == 1) {\n o = j | c & 0;\n p = a | 0 | 0;\n return (F(o | 0), p) | 0;\n } else {\n p = $c(h | 0) | 0;\n o = k >>> (p >>> 0) | 0;\n p = k << 32 - p | l >>> (p >>> 0) | 0;\n return (F(o | 0), p) | 0;\n }\n } else {\n if (g) {\n if (f | 0) {\n b[f >> 2] = (k >>> 0) % (h >>> 0);\n b[f + 4 >> 2] = 0;\n }\n\n o = 0;\n p = (k >>> 0) / (h >>> 0) >>> 0;\n return (F(o | 0), p) | 0;\n }\n\n if (!l) {\n if (f | 0) {\n b[f >> 2] = 0;\n b[f + 4 >> 2] = (k >>> 0) % (i >>> 0);\n }\n\n o = 0;\n p = (k >>> 0) / (i >>> 0) >>> 0;\n return (F(o | 0), p) | 0;\n }\n\n g = i - 1 | 0;\n\n if (!(g & i)) {\n if (f | 0) {\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = g & k | c & 0;\n }\n\n o = 0;\n p = k >>> (($c(i | 0) | 0) >>> 0);\n return (F(o | 0), p) | 0;\n }\n\n g = (D(i | 0) | 0) - (D(k | 0) | 0) | 0;\n\n if (g >>> 0 <= 30) {\n c = g + 1 | 0;\n i = 31 - g | 0;\n h = c;\n a = k << i | l >>> (c >>> 0);\n c = k >>> (c >>> 0);\n g = 0;\n i = l << i;\n break;\n }\n\n if (!f) {\n o = 0;\n p = 0;\n return (F(o | 0), p) | 0;\n }\n\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = j | c & 0;\n o = 0;\n p = 0;\n return (F(o | 0), p) | 0;\n } } while (0);\n\n if (!h) {\n k = i;\n j = 0;\n i = 0;\n } else {\n m = d | 0 | 0;\n l = n | e & 0;\n k = Zc(m | 0, l | 0, -1, -1) | 0;\n d = G() | 0;\n j = i;\n i = 0;\n\n do {\n e = j;\n j = g >>> 31 | j << 1;\n g = i | g << 1;\n e = a << 1 | e >>> 31 | 0;\n n = a >>> 31 | c << 1 | 0;\n _c(k | 0, d | 0, e | 0, n | 0) | 0;\n p = G() | 0;\n o = p >> 31 | ((p | 0) < 0 ? -1 : 0) << 1;\n i = o & 1;\n a = _c(e | 0, n | 0, o & m | 0, (((p | 0) < 0 ? -1 : 0) >> 31 | ((p | 0) < 0 ? -1 : 0) << 1) & l | 0) | 0;\n c = G() | 0;\n h = h - 1 | 0;\n } while ((h | 0) != 0);\n\n k = j;\n j = 0;\n }\n\n h = 0;\n\n if (f | 0) {\n b[f >> 2] = a;\n b[f + 4 >> 2] = c;\n }\n\n o = (g | 0) >>> 31 | (k | h) << 1 | (h << 1 | g >>> 31) & 0 | j;\n p = (g << 1 | 0 >>> 31) & -2 | i;\n return (F(o | 0), p) | 0;\n }\n\n function bd(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0;\n g = S;\n S = S + 16 | 0;\n f = g | 0;\n ad(a, c, d, e, f) | 0;\n S = g;\n return (F(b[f + 4 >> 2] | 0), b[f >> 2] | 0) | 0;\n }\n\n function cd(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n\n if ((c | 0) < 32) {\n F(b >>> c | 0);\n return a >>> c | (b & (1 << c) - 1) << 32 - c;\n }\n\n F(0);\n return b >>> c - 32 | 0;\n }\n\n function dd(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n\n if ((c | 0) < 32) {\n F(b << c | (a & (1 << c) - 1 << 32 - c) >>> 32 - c | 0);\n return a << c;\n }\n\n F(a << c - 32 | 0);\n return 0;\n }\n\n function ed(a, b) {\n a = +a;\n b = +b;\n if (a != a) { return +b; }\n if (b != b) { return +a; }\n return +C(+a, +b);\n }\n\n function fd(a) {\n a = +a;\n return a >= 0.0 ? +p(a + .5) : +A(a - .5);\n }\n\n function gd(c, d, e) {\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0;\n\n if ((e | 0) >= 8192) {\n K(c | 0, d | 0, e | 0) | 0;\n return c | 0;\n }\n\n h = c | 0;\n g = c + e | 0;\n\n if ((c & 3) == (d & 3)) {\n while (c & 3) {\n if (!e) { return h | 0; }\n a[c >> 0] = a[d >> 0] | 0;\n c = c + 1 | 0;\n d = d + 1 | 0;\n e = e - 1 | 0;\n }\n\n e = g & -4 | 0;\n f = e - 64 | 0;\n\n while ((c | 0) <= (f | 0)) {\n b[c >> 2] = b[d >> 2];\n b[c + 4 >> 2] = b[d + 4 >> 2];\n b[c + 8 >> 2] = b[d + 8 >> 2];\n b[c + 12 >> 2] = b[d + 12 >> 2];\n b[c + 16 >> 2] = b[d + 16 >> 2];\n b[c + 20 >> 2] = b[d + 20 >> 2];\n b[c + 24 >> 2] = b[d + 24 >> 2];\n b[c + 28 >> 2] = b[d + 28 >> 2];\n b[c + 32 >> 2] = b[d + 32 >> 2];\n b[c + 36 >> 2] = b[d + 36 >> 2];\n b[c + 40 >> 2] = b[d + 40 >> 2];\n b[c + 44 >> 2] = b[d + 44 >> 2];\n b[c + 48 >> 2] = b[d + 48 >> 2];\n b[c + 52 >> 2] = b[d + 52 >> 2];\n b[c + 56 >> 2] = b[d + 56 >> 2];\n b[c + 60 >> 2] = b[d + 60 >> 2];\n c = c + 64 | 0;\n d = d + 64 | 0;\n }\n\n while ((c | 0) < (e | 0)) {\n b[c >> 2] = b[d >> 2];\n c = c + 4 | 0;\n d = d + 4 | 0;\n }\n } else {\n e = g - 4 | 0;\n\n while ((c | 0) < (e | 0)) {\n a[c >> 0] = a[d >> 0] | 0;\n a[c + 1 >> 0] = a[d + 1 >> 0] | 0;\n a[c + 2 >> 0] = a[d + 2 >> 0] | 0;\n a[c + 3 >> 0] = a[d + 3 >> 0] | 0;\n c = c + 4 | 0;\n d = d + 4 | 0;\n }\n }\n\n while ((c | 0) < (g | 0)) {\n a[c >> 0] = a[d >> 0] | 0;\n c = c + 1 | 0;\n d = d + 1 | 0;\n }\n\n return h | 0;\n }\n\n function hd(c, d, e) {\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = c + e | 0;\n d = d & 255;\n\n if ((e | 0) >= 67) {\n while (c & 3) {\n a[c >> 0] = d;\n c = c + 1 | 0;\n }\n\n f = h & -4 | 0;\n i = d | d << 8 | d << 16 | d << 24;\n g = f - 64 | 0;\n\n while ((c | 0) <= (g | 0)) {\n b[c >> 2] = i;\n b[c + 4 >> 2] = i;\n b[c + 8 >> 2] = i;\n b[c + 12 >> 2] = i;\n b[c + 16 >> 2] = i;\n b[c + 20 >> 2] = i;\n b[c + 24 >> 2] = i;\n b[c + 28 >> 2] = i;\n b[c + 32 >> 2] = i;\n b[c + 36 >> 2] = i;\n b[c + 40 >> 2] = i;\n b[c + 44 >> 2] = i;\n b[c + 48 >> 2] = i;\n b[c + 52 >> 2] = i;\n b[c + 56 >> 2] = i;\n b[c + 60 >> 2] = i;\n c = c + 64 | 0;\n }\n\n while ((c | 0) < (f | 0)) {\n b[c >> 2] = i;\n c = c + 4 | 0;\n }\n }\n\n while ((c | 0) < (h | 0)) {\n a[c >> 0] = d;\n c = c + 1 | 0;\n }\n\n return h - e | 0;\n }\n\n function id(a) {\n a = +a;\n return a >= 0.0 ? +p(a + .5) : +A(a - .5);\n }\n\n function jd(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0;\n e = J() | 0;\n d = b[g >> 2] | 0;\n c = d + a | 0;\n\n if ((a | 0) > 0 & (c | 0) < (d | 0) | (c | 0) < 0) {\n M(c | 0) | 0;\n I(12);\n return -1;\n }\n\n if ((c | 0) > (e | 0)) { if (!(L(c | 0) | 0)) {\n I(12);\n return -1;\n } }\n b[g >> 2] = c;\n return d | 0;\n } // EMSCRIPTEN_END_FUNCS\n\n\n return {\n ___uremdi3: bd,\n _bitshift64Lshr: cd,\n _bitshift64Shl: dd,\n _calloc: Yc,\n _cellAreaKm2: ub,\n _cellAreaM2: vb,\n _cellAreaRads2: tb,\n _compact: Hb,\n _destroyLinkedPolygon: jc,\n _edgeLengthKm: pb,\n _edgeLengthM: qb,\n _emscripten_replace_memory: V,\n _exactEdgeLengthKm: xb,\n _exactEdgeLengthM: yb,\n _exactEdgeLengthRads: wb,\n _experimentalH3ToLocalIj: oc,\n _experimentalLocalIjToH3: pc,\n _free: Xc,\n _geoToH3: Sb,\n _getDestinationH3IndexFromUnidirectionalEdge: cc,\n _getH3IndexesFromUnidirectionalEdge: ec,\n _getH3UnidirectionalEdge: ac,\n _getH3UnidirectionalEdgeBoundary: gc,\n _getH3UnidirectionalEdgesFromHexagon: fc,\n _getOriginH3IndexFromUnidirectionalEdge: bc,\n _getPentagonIndexes: _b,\n _getRes0Indexes: va,\n _h3Distance: qc,\n _h3GetBaseCell: Ab,\n _h3GetFaces: Yb,\n _h3GetResolution: zb,\n _h3IndexesAreNeighbors: $b,\n _h3IsPentagon: Fb,\n _h3IsResClassIII: Kb,\n _h3IsValid: Bb,\n _h3Line: sc,\n _h3LineSize: rc,\n _h3SetToLinkedGeo: ka,\n _h3ToCenterChild: Gb,\n _h3ToChildren: Eb,\n _h3ToGeo: Vb,\n _h3ToGeoBoundary: Wb,\n _h3ToParent: Cb,\n _h3UnidirectionalEdgeIsValid: dc,\n _hexAreaKm2: nb,\n _hexAreaM2: ob,\n _hexRing: ea,\n _i64Subtract: _c,\n _kRing: $,\n _kRingDistances: aa,\n _llvm_minnum_f64: ed,\n _llvm_round_f64: fd,\n _malloc: Wc,\n _maxFaceCount: Xb,\n _maxH3ToChildrenSize: Db,\n _maxKringSize: _,\n _maxPolyfillSize: fa,\n _maxUncompactSize: Jb,\n _memcpy: gd,\n _memset: hd,\n _numHexagons: rb,\n _pentagonIndexCount: Zb,\n _pointDistKm: jb,\n _pointDistM: kb,\n _pointDistRads: ib,\n _polyfill: ga,\n _res0IndexCount: ua,\n _round: id,\n _sbrk: jd,\n _sizeOfCoordIJ: Ec,\n _sizeOfGeoBoundary: Ac,\n _sizeOfGeoCoord: zc,\n _sizeOfGeoPolygon: Cc,\n _sizeOfGeofence: Bc,\n _sizeOfH3Index: yc,\n _sizeOfLinkedGeoPolygon: Dc,\n _uncompact: Ib,\n establishStackSpace: Z,\n stackAlloc: W,\n stackRestore: Y,\n stackSave: X\n };\n }( // EMSCRIPTEN_END_ASM\n asmGlobalArg, asmLibraryArg, buffer);\n\n var ___uremdi3 = Module[\"___uremdi3\"] = asm[\"___uremdi3\"];\n\n var _bitshift64Lshr = Module[\"_bitshift64Lshr\"] = asm[\"_bitshift64Lshr\"];\n\n var _bitshift64Shl = Module[\"_bitshift64Shl\"] = asm[\"_bitshift64Shl\"];\n\n var _calloc = Module[\"_calloc\"] = asm[\"_calloc\"];\n\n var _cellAreaKm2 = Module[\"_cellAreaKm2\"] = asm[\"_cellAreaKm2\"];\n\n var _cellAreaM2 = Module[\"_cellAreaM2\"] = asm[\"_cellAreaM2\"];\n\n var _cellAreaRads2 = Module[\"_cellAreaRads2\"] = asm[\"_cellAreaRads2\"];\n\n var _compact = Module[\"_compact\"] = asm[\"_compact\"];\n\n var _destroyLinkedPolygon = Module[\"_destroyLinkedPolygon\"] = asm[\"_destroyLinkedPolygon\"];\n\n var _edgeLengthKm = Module[\"_edgeLengthKm\"] = asm[\"_edgeLengthKm\"];\n\n var _edgeLengthM = Module[\"_edgeLengthM\"] = asm[\"_edgeLengthM\"];\n\n var _emscripten_replace_memory = Module[\"_emscripten_replace_memory\"] = asm[\"_emscripten_replace_memory\"];\n\n var _exactEdgeLengthKm = Module[\"_exactEdgeLengthKm\"] = asm[\"_exactEdgeLengthKm\"];\n\n var _exactEdgeLengthM = Module[\"_exactEdgeLengthM\"] = asm[\"_exactEdgeLengthM\"];\n\n var _exactEdgeLengthRads = Module[\"_exactEdgeLengthRads\"] = asm[\"_exactEdgeLengthRads\"];\n\n var _experimentalH3ToLocalIj = Module[\"_experimentalH3ToLocalIj\"] = asm[\"_experimentalH3ToLocalIj\"];\n\n var _experimentalLocalIjToH3 = Module[\"_experimentalLocalIjToH3\"] = asm[\"_experimentalLocalIjToH3\"];\n\n var _free = Module[\"_free\"] = asm[\"_free\"];\n\n var _geoToH3 = Module[\"_geoToH3\"] = asm[\"_geoToH3\"];\n\n var _getDestinationH3IndexFromUnidirectionalEdge = Module[\"_getDestinationH3IndexFromUnidirectionalEdge\"] = asm[\"_getDestinationH3IndexFromUnidirectionalEdge\"];\n\n var _getH3IndexesFromUnidirectionalEdge = Module[\"_getH3IndexesFromUnidirectionalEdge\"] = asm[\"_getH3IndexesFromUnidirectionalEdge\"];\n\n var _getH3UnidirectionalEdge = Module[\"_getH3UnidirectionalEdge\"] = asm[\"_getH3UnidirectionalEdge\"];\n\n var _getH3UnidirectionalEdgeBoundary = Module[\"_getH3UnidirectionalEdgeBoundary\"] = asm[\"_getH3UnidirectionalEdgeBoundary\"];\n\n var _getH3UnidirectionalEdgesFromHexagon = Module[\"_getH3UnidirectionalEdgesFromHexagon\"] = asm[\"_getH3UnidirectionalEdgesFromHexagon\"];\n\n var _getOriginH3IndexFromUnidirectionalEdge = Module[\"_getOriginH3IndexFromUnidirectionalEdge\"] = asm[\"_getOriginH3IndexFromUnidirectionalEdge\"];\n\n var _getPentagonIndexes = Module[\"_getPentagonIndexes\"] = asm[\"_getPentagonIndexes\"];\n\n var _getRes0Indexes = Module[\"_getRes0Indexes\"] = asm[\"_getRes0Indexes\"];\n\n var _h3Distance = Module[\"_h3Distance\"] = asm[\"_h3Distance\"];\n\n var _h3GetBaseCell = Module[\"_h3GetBaseCell\"] = asm[\"_h3GetBaseCell\"];\n\n var _h3GetFaces = Module[\"_h3GetFaces\"] = asm[\"_h3GetFaces\"];\n\n var _h3GetResolution = Module[\"_h3GetResolution\"] = asm[\"_h3GetResolution\"];\n\n var _h3IndexesAreNeighbors = Module[\"_h3IndexesAreNeighbors\"] = asm[\"_h3IndexesAreNeighbors\"];\n\n var _h3IsPentagon = Module[\"_h3IsPentagon\"] = asm[\"_h3IsPentagon\"];\n\n var _h3IsResClassIII = Module[\"_h3IsResClassIII\"] = asm[\"_h3IsResClassIII\"];\n\n var _h3IsValid = Module[\"_h3IsValid\"] = asm[\"_h3IsValid\"];\n\n var _h3Line = Module[\"_h3Line\"] = asm[\"_h3Line\"];\n\n var _h3LineSize = Module[\"_h3LineSize\"] = asm[\"_h3LineSize\"];\n\n var _h3SetToLinkedGeo = Module[\"_h3SetToLinkedGeo\"] = asm[\"_h3SetToLinkedGeo\"];\n\n var _h3ToCenterChild = Module[\"_h3ToCenterChild\"] = asm[\"_h3ToCenterChild\"];\n\n var _h3ToChildren = Module[\"_h3ToChildren\"] = asm[\"_h3ToChildren\"];\n\n var _h3ToGeo = Module[\"_h3ToGeo\"] = asm[\"_h3ToGeo\"];\n\n var _h3ToGeoBoundary = Module[\"_h3ToGeoBoundary\"] = asm[\"_h3ToGeoBoundary\"];\n\n var _h3ToParent = Module[\"_h3ToParent\"] = asm[\"_h3ToParent\"];\n\n var _h3UnidirectionalEdgeIsValid = Module[\"_h3UnidirectionalEdgeIsValid\"] = asm[\"_h3UnidirectionalEdgeIsValid\"];\n\n var _hexAreaKm2 = Module[\"_hexAreaKm2\"] = asm[\"_hexAreaKm2\"];\n\n var _hexAreaM2 = Module[\"_hexAreaM2\"] = asm[\"_hexAreaM2\"];\n\n var _hexRing = Module[\"_hexRing\"] = asm[\"_hexRing\"];\n\n var _i64Subtract = Module[\"_i64Subtract\"] = asm[\"_i64Subtract\"];\n\n var _kRing = Module[\"_kRing\"] = asm[\"_kRing\"];\n\n var _kRingDistances = Module[\"_kRingDistances\"] = asm[\"_kRingDistances\"];\n\n var _llvm_minnum_f64 = Module[\"_llvm_minnum_f64\"] = asm[\"_llvm_minnum_f64\"];\n\n var _llvm_round_f64 = Module[\"_llvm_round_f64\"] = asm[\"_llvm_round_f64\"];\n\n var _malloc = Module[\"_malloc\"] = asm[\"_malloc\"];\n\n var _maxFaceCount = Module[\"_maxFaceCount\"] = asm[\"_maxFaceCount\"];\n\n var _maxH3ToChildrenSize = Module[\"_maxH3ToChildrenSize\"] = asm[\"_maxH3ToChildrenSize\"];\n\n var _maxKringSize = Module[\"_maxKringSize\"] = asm[\"_maxKringSize\"];\n\n var _maxPolyfillSize = Module[\"_maxPolyfillSize\"] = asm[\"_maxPolyfillSize\"];\n\n var _maxUncompactSize = Module[\"_maxUncompactSize\"] = asm[\"_maxUncompactSize\"];\n\n var _memcpy = Module[\"_memcpy\"] = asm[\"_memcpy\"];\n\n var _memset = Module[\"_memset\"] = asm[\"_memset\"];\n\n var _numHexagons = Module[\"_numHexagons\"] = asm[\"_numHexagons\"];\n\n var _pentagonIndexCount = Module[\"_pentagonIndexCount\"] = asm[\"_pentagonIndexCount\"];\n\n var _pointDistKm = Module[\"_pointDistKm\"] = asm[\"_pointDistKm\"];\n\n var _pointDistM = Module[\"_pointDistM\"] = asm[\"_pointDistM\"];\n\n var _pointDistRads = Module[\"_pointDistRads\"] = asm[\"_pointDistRads\"];\n\n var _polyfill = Module[\"_polyfill\"] = asm[\"_polyfill\"];\n\n var _res0IndexCount = Module[\"_res0IndexCount\"] = asm[\"_res0IndexCount\"];\n\n var _round = Module[\"_round\"] = asm[\"_round\"];\n\n var _sbrk = Module[\"_sbrk\"] = asm[\"_sbrk\"];\n\n var _sizeOfCoordIJ = Module[\"_sizeOfCoordIJ\"] = asm[\"_sizeOfCoordIJ\"];\n\n var _sizeOfGeoBoundary = Module[\"_sizeOfGeoBoundary\"] = asm[\"_sizeOfGeoBoundary\"];\n\n var _sizeOfGeoCoord = Module[\"_sizeOfGeoCoord\"] = asm[\"_sizeOfGeoCoord\"];\n\n var _sizeOfGeoPolygon = Module[\"_sizeOfGeoPolygon\"] = asm[\"_sizeOfGeoPolygon\"];\n\n var _sizeOfGeofence = Module[\"_sizeOfGeofence\"] = asm[\"_sizeOfGeofence\"];\n\n var _sizeOfH3Index = Module[\"_sizeOfH3Index\"] = asm[\"_sizeOfH3Index\"];\n\n var _sizeOfLinkedGeoPolygon = Module[\"_sizeOfLinkedGeoPolygon\"] = asm[\"_sizeOfLinkedGeoPolygon\"];\n\n var _uncompact = Module[\"_uncompact\"] = asm[\"_uncompact\"];\n\n var establishStackSpace = Module[\"establishStackSpace\"] = asm[\"establishStackSpace\"];\n var stackAlloc = Module[\"stackAlloc\"] = asm[\"stackAlloc\"];\n var stackRestore = Module[\"stackRestore\"] = asm[\"stackRestore\"];\n var stackSave = Module[\"stackSave\"] = asm[\"stackSave\"];\n Module[\"asm\"] = asm;\n Module[\"cwrap\"] = cwrap;\n Module[\"setValue\"] = setValue;\n Module[\"getValue\"] = getValue;\n Module[\"getTempRet0\"] = getTempRet0;\n\n if (memoryInitializer) {\n if (!isDataURI(memoryInitializer)) {\n memoryInitializer = locateFile(memoryInitializer);\n }\n\n {\n addRunDependency(\"memory initializer\");\n\n var applyMemoryInitializer = function (data) {\n if (data.byteLength) { data = new Uint8Array(data); }\n HEAPU8.set(data, GLOBAL_BASE);\n if (Module[\"memoryInitializerRequest\"]) { delete Module[\"memoryInitializerRequest\"].response; }\n removeRunDependency(\"memory initializer\");\n };\n\n var doBrowserLoad = function () {\n readAsync(memoryInitializer, applyMemoryInitializer, function () {\n throw \"could not load memory initializer \" + memoryInitializer;\n });\n };\n\n var memoryInitializerBytes = tryParseAsDataURI(memoryInitializer);\n\n if (memoryInitializerBytes) {\n applyMemoryInitializer(memoryInitializerBytes.buffer);\n } else if (Module[\"memoryInitializerRequest\"]) {\n var useRequest = function () {\n var request = Module[\"memoryInitializerRequest\"];\n var response = request.response;\n\n if (request.status !== 200 && request.status !== 0) {\n var data = tryParseAsDataURI(Module[\"memoryInitializerRequestURL\"]);\n\n if (data) {\n response = data.buffer;\n } else {\n console.warn(\"a problem seems to have happened with Module.memoryInitializerRequest, status: \" + request.status + \", retrying \" + memoryInitializer);\n doBrowserLoad();\n return;\n }\n }\n\n applyMemoryInitializer(response);\n };\n\n if (Module[\"memoryInitializerRequest\"].response) {\n setTimeout(useRequest, 0);\n } else {\n Module[\"memoryInitializerRequest\"].addEventListener(\"load\", useRequest);\n }\n } else {\n doBrowserLoad();\n }\n }\n }\n\n var calledRun;\n\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) { run(); }\n if (!calledRun) { dependenciesFulfilled = runCaller; }\n };\n\n function run(args) {\n args = args || arguments_;\n\n if (runDependencies > 0) {\n return;\n }\n\n preRun();\n if (runDependencies > 0) { return; }\n\n function doRun() {\n if (calledRun) { return; }\n calledRun = true;\n if (ABORT) { return; }\n initRuntime();\n preMain();\n if (Module[\"onRuntimeInitialized\"]) { Module[\"onRuntimeInitialized\"](); }\n postRun();\n }\n\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function () {\n setTimeout(function () {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n }\n\n Module[\"run\"] = run;\n\n function abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n\n what += \"\";\n out(what);\n err(what);\n ABORT = true;\n throw \"abort(\" + what + \"). Build with -s ASSERTIONS=1 for more info.\";\n }\n\n Module[\"abort\"] = abort;\n\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") { Module[\"preInit\"] = [Module[\"preInit\"]]; }\n\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n }\n run();\n return libh3;\n}(typeof libh3 === 'object' ? libh3 : {});\n\n/*\n * Copyright 2018-2019 Uber Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Define the C bindings for the h3 library\n// Add some aliases to make the function definitions more intelligible\nvar NUMBER = 'number';\nvar BOOLEAN = NUMBER;\nvar H3_LOWER = NUMBER;\nvar H3_UPPER = NUMBER;\nvar RESOLUTION = NUMBER;\nvar POINTER = NUMBER; // Define the bindings to functions in the C lib. Functions are defined as\n// [name, return type, [arg types]]. You must run `npm run build-emscripten`\n// before new functions added here will be available.\n\nvar BINDINGS = [// The size functions are inserted via build/sizes.h\n['sizeOfH3Index', NUMBER], ['sizeOfGeoCoord', NUMBER], ['sizeOfGeoBoundary', NUMBER], ['sizeOfGeoPolygon', NUMBER], ['sizeOfGeofence', NUMBER], ['sizeOfLinkedGeoPolygon', NUMBER], ['sizeOfCoordIJ', NUMBER], // The remaining functions are defined in the core lib in h3Api.h\n['h3IsValid', BOOLEAN, [H3_LOWER, H3_UPPER]], ['geoToH3', H3_LOWER, [NUMBER, NUMBER, RESOLUTION]], ['h3ToGeo', null, [H3_LOWER, H3_UPPER, POINTER]], ['h3ToGeoBoundary', null, [H3_LOWER, H3_UPPER, POINTER]], ['maxKringSize', NUMBER, [NUMBER]], ['kRing', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER]], ['kRingDistances', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER, POINTER]], ['hexRing', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER]], ['maxPolyfillSize', NUMBER, [POINTER, RESOLUTION]], ['polyfill', null, [POINTER, RESOLUTION, POINTER]], ['h3SetToLinkedGeo', null, [POINTER, NUMBER, POINTER]], ['destroyLinkedPolygon', null, [POINTER]], ['compact', NUMBER, [POINTER, POINTER, NUMBER]], ['uncompact', NUMBER, [POINTER, NUMBER, POINTER, NUMBER, RESOLUTION]], ['maxUncompactSize', NUMBER, [POINTER, NUMBER, RESOLUTION]], ['h3IsPentagon', BOOLEAN, [H3_LOWER, H3_UPPER]], ['h3IsResClassIII', BOOLEAN, [H3_LOWER, H3_UPPER]], ['h3GetBaseCell', NUMBER, [H3_LOWER, H3_UPPER]], ['h3GetResolution', NUMBER, [H3_LOWER, H3_UPPER]], ['maxFaceCount', NUMBER, [H3_LOWER, H3_UPPER]], ['h3GetFaces', null, [H3_LOWER, H3_UPPER, POINTER]], ['h3ToParent', H3_LOWER, [H3_LOWER, H3_UPPER, RESOLUTION]], ['h3ToChildren', null, [H3_LOWER, H3_UPPER, RESOLUTION, POINTER]], ['h3ToCenterChild', H3_LOWER, [H3_LOWER, H3_UPPER, RESOLUTION]], ['maxH3ToChildrenSize', NUMBER, [H3_LOWER, H3_UPPER, RESOLUTION]], ['h3IndexesAreNeighbors', BOOLEAN, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]], ['getH3UnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]], ['getOriginH3IndexFromUnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER]], ['getDestinationH3IndexFromUnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER]], ['h3UnidirectionalEdgeIsValid', BOOLEAN, [H3_LOWER, H3_UPPER]], ['getH3IndexesFromUnidirectionalEdge', null, [H3_LOWER, H3_UPPER, POINTER]], ['getH3UnidirectionalEdgesFromHexagon', null, [H3_LOWER, H3_UPPER, POINTER]], ['getH3UnidirectionalEdgeBoundary', null, [H3_LOWER, H3_UPPER, POINTER]], ['h3Distance', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]], ['h3Line', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]], ['h3LineSize', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]], ['experimentalH3ToLocalIj', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]], ['experimentalLocalIjToH3', NUMBER, [H3_LOWER, H3_UPPER, POINTER, POINTER]], ['hexAreaM2', NUMBER, [RESOLUTION]], ['hexAreaKm2', NUMBER, [RESOLUTION]], ['edgeLengthM', NUMBER, [RESOLUTION]], ['edgeLengthKm', NUMBER, [RESOLUTION]], ['pointDistM', NUMBER, [POINTER, POINTER]], ['pointDistKm', NUMBER, [POINTER, POINTER]], ['pointDistRads', NUMBER, [POINTER, POINTER]], ['cellAreaM2', NUMBER, [H3_LOWER, H3_UPPER]], ['cellAreaKm2', NUMBER, [H3_LOWER, H3_UPPER]], ['cellAreaRads2', NUMBER, [H3_LOWER, H3_UPPER]], ['exactEdgeLengthM', NUMBER, [H3_LOWER, H3_UPPER]], ['exactEdgeLengthKm', NUMBER, [H3_LOWER, H3_UPPER]], ['exactEdgeLengthRads', NUMBER, [H3_LOWER, H3_UPPER]], ['numHexagons', NUMBER, [RESOLUTION]], ['getRes0Indexes', null, [POINTER]], ['res0IndexCount', NUMBER], ['getPentagonIndexes', null, [NUMBER, POINTER]], ['pentagonIndexCount', NUMBER]];\n\n/*\n * Copyright 2018-2019 Uber Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar H3 = {}; // Create the bound functions themselves\n\nBINDINGS.forEach(function bind(def) {\n H3[def[0]] = libh3.cwrap.apply(libh3, def);\n}); // Alias the hexidecimal base for legibility\n\nvar BASE_16 = 16; // ----------------------------------------------------------------------------\n// Byte size imports\n\nvar SZ_INT = 4;\nvar SZ_PTR = 4;\nvar SZ_DBL = 8;\nvar SZ_H3INDEX = H3.sizeOfH3Index();\nvar SZ_GEOCOORD = H3.sizeOfGeoCoord();\nvar SZ_GEOBOUNDARY = H3.sizeOfGeoBoundary();\nvar SZ_GEOPOLYGON = H3.sizeOfGeoPolygon();\nvar SZ_GEOFENCE = H3.sizeOfGeofence();\nvar SZ_LINKED_GEOPOLYGON = H3.sizeOfLinkedGeoPolygon();\nvar SZ_COORDIJ = H3.sizeOfCoordIJ(); // ----------------------------------------------------------------------------\n// Custom types\n\n/**\n * 64-bit hexidecimal string representation of an H3 index\n * @static\n * @typedef {string} H3Index\n */\n\n/**\n * 64-bit hexidecimal string representation of an H3 index,\n * or two 32-bit integers in little endian order in an array.\n * @static\n * @typedef {string | number[]} H3IndexInput\n */\n\n/**\n * Coordinates as an `{i, j}` pair\n * @static\n * @typedef CoordIJ\n * @type {Object}\n * @property {number} i\n * @property {number} j\n */\n// ----------------------------------------------------------------------------\n// Unit constants\n\n/**\n * Length/Area units\n * @static\n * @typedef UNITS\n * @type {Object}\n * @property {string} m\n * @property {string} m2\n * @property {string} km\n * @property {string} km2\n * @property {string} rads\n * @property {string} rads2\n */\n\nvar UNITS = {\n m: 'm',\n m2: 'm2',\n km: 'km',\n km2: 'km2',\n rads: 'rads',\n rads2: 'rads2'\n}; // ----------------------------------------------------------------------------\n// Utilities and helpers\n\n/**\n * Validate a resolution, throwing an error if invalid\n * @private\n * @param {mixed} res Value to validate\n * @throws {Error} Error if invalid\n */\n\nfunction validateRes(res) {\n if (typeof res !== 'number' || res < 0 || res > 15 || Math.floor(res) !== res) {\n throw new Error((\"Invalid resolution: \" + res));\n }\n}\n\nvar INVALID_HEXIDECIMAL_CHAR = /[^0-9a-fA-F]/;\n/**\n * Convert an H3 index (64-bit hexidecimal string) into a \"split long\" - a pair of 32-bit ints\n * @private\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {number[]} A two-element array with 32 lower bits and 32 upper bits\n */\n\nfunction h3IndexToSplitLong(h3Index) {\n if (Array.isArray(h3Index) && h3Index.length === 2 && Number.isInteger(h3Index[0]) && Number.isInteger(h3Index[1])) {\n return h3Index;\n }\n\n if (typeof h3Index !== 'string' || INVALID_HEXIDECIMAL_CHAR.test(h3Index)) {\n return [0, 0];\n }\n\n var upper = parseInt(h3Index.substring(0, h3Index.length - 8), BASE_16);\n var lower = parseInt(h3Index.substring(h3Index.length - 8), BASE_16);\n return [lower, upper];\n}\n/**\n * Convert a 32-bit int to a hexdecimal string\n * @private\n * @param {number} num Integer to convert\n * @return {H3Index} Hexidecimal string\n */\n\nfunction hexFrom32Bit(num) {\n if (num >= 0) {\n return num.toString(BASE_16);\n } // Handle negative numbers\n\n\n num = num & 0x7fffffff;\n var tempStr = zeroPad(8, num.toString(BASE_16));\n var topNum = (parseInt(tempStr[0], BASE_16) + 8).toString(BASE_16);\n tempStr = topNum + tempStr.substring(1);\n return tempStr;\n}\n/**\n * Get a H3 index from a split long (pair of 32-bit ints)\n * @private\n * @param {number} lower Lower 32 bits\n * @param {number} upper Upper 32 bits\n * @return {H3Index} H3 index\n */\n\n\nfunction splitLongToh3Index(lower, upper) {\n return hexFrom32Bit(upper) + zeroPad(8, hexFrom32Bit(lower));\n}\n/**\n * Zero-pad a string to a given length\n * @private\n * @param {number} fullLen Target length\n * @param {string} numStr String to zero-pad\n * @return {string} Zero-padded string\n */\n\nfunction zeroPad(fullLen, numStr) {\n var numZeroes = fullLen - numStr.length;\n var outStr = '';\n\n for (var i = 0; i < numZeroes; i++) {\n outStr += '0';\n }\n\n outStr = outStr + numStr;\n return outStr;\n}\n/**\n * Populate a C-appropriate Geofence struct from a polygon array\n * @private\n * @param {Array[]} polygonArray Polygon, as an array of coordinate pairs\n * @param {number} geofence C pointer to a Geofence struct\n * @param {boolean} isGeoJson Whether coordinates are in [lng, lat] order per GeoJSON spec\n * @return {number} C pointer to populated Geofence struct\n */\n\n\nfunction polygonArrayToGeofence(polygonArray, geofence, isGeoJson) {\n var numVerts = polygonArray.length;\n\n var geoCoordArray = libh3._calloc(numVerts, SZ_GEOCOORD); // Support [lng, lat] pairs if GeoJSON is specified\n\n\n var latIndex = isGeoJson ? 1 : 0;\n var lngIndex = isGeoJson ? 0 : 1;\n\n for (var i = 0; i < numVerts * 2; i += 2) {\n libh3.HEAPF64.set([polygonArray[i / 2][latIndex], polygonArray[i / 2][lngIndex]].map(degsToRads), geoCoordArray / SZ_DBL + i);\n }\n\n libh3.HEAPU32.set([numVerts, geoCoordArray], geofence / SZ_INT);\n return geofence;\n}\n/**\n * Create a C-appropriate GeoPolygon struct from an array of polygons\n * @private\n * @param {Array[]} coordinates Array of polygons, each an array of coordinate pairs\n * @param {boolean} isGeoJson Whether coordinates are in [lng, lat] order per GeoJSON spec\n * @return {number} C pointer to populated GeoPolygon struct\n */\n\n\nfunction coordinatesToGeoPolygon(coordinates, isGeoJson) {\n // Any loops beyond the first loop are holes\n var numHoles = coordinates.length - 1;\n\n var geoPolygon = libh3._calloc(SZ_GEOPOLYGON); // Byte positions within the struct\n\n\n var geofenceOffset = 0;\n var numHolesOffset = geofenceOffset + SZ_GEOFENCE;\n var holesOffset = numHolesOffset + SZ_INT; // geofence is first part of struct\n\n polygonArrayToGeofence(coordinates[0], geoPolygon + geofenceOffset, isGeoJson);\n var holes;\n\n if (numHoles > 0) {\n holes = libh3._calloc(numHoles, SZ_GEOFENCE);\n\n for (var i = 0; i < numHoles; i++) {\n polygonArrayToGeofence(coordinates[i + 1], holes + SZ_GEOFENCE * i, isGeoJson);\n }\n }\n\n libh3.setValue(geoPolygon + numHolesOffset, numHoles, 'i32');\n libh3.setValue(geoPolygon + holesOffset, holes, 'i32');\n return geoPolygon;\n}\n/**\n * Free memory allocated for a GeoPolygon struct. It is an error to access the struct\n * after passing it to this method.\n * @private\n * @return {number} geoPolygon C pointer to populated GeoPolygon struct\n */\n\n\nfunction destroyGeoPolygon(geoPolygon) {\n // Byte positions within the struct\n var geofenceOffset = 0;\n var numHolesOffset = geofenceOffset + SZ_GEOFENCE;\n var holesOffset = numHolesOffset + SZ_INT; // Offset of the geofence vertex array pointer within the Geofence struct\n\n var geofenceArrayOffset = SZ_INT; // Free the outer vertex array\n\n libh3._free(libh3.getValue(geoPolygon + geofenceOffset + geofenceArrayOffset, 'i8*')); // Free the vertex array for the holes, if any\n\n\n var numHoles = libh3.getValue(geoPolygon + numHolesOffset, 'i32');\n\n if (numHoles > 0) {\n var holes = libh3.getValue(geoPolygon + holesOffset, 'i32');\n\n for (var i = 0; i < numHoles; i++) {\n libh3._free(libh3.getValue(holes + SZ_GEOFENCE * i + geofenceArrayOffset, 'i8*'));\n }\n\n libh3._free(holes);\n }\n\n libh3._free(geoPolygon);\n}\n/**\n * Read a long value, returning the lower and upper portions as separate 32-bit integers.\n * Because the upper bits are returned via side effect, the argument to this function is\n * intended to be the invocation that caused the side effect, e.g. readLong(H3.getSomeLong())\n * @private\n * @param {number} invocation Invoked function returning a long value. The actual return\n * value of these functions is a 32-bit integer.\n * @return {number} Long value as a [lower, upper] pair\n */\n\n\nfunction readLong(invocation) {\n // Upper 32-bits of the long set via side-effect\n var upper = libh3.getTempRet0();\n return [invocation, upper];\n}\n/**\n * Read an H3 index from a C return value. As with readLong, the argument to this function\n * is intended to be an invocation, e.g. readH3Index(H3.getSomeAddress()), to help ensure that\n * the temp value storing the upper bits of the long is still set.\n * @private\n * @param {number} invocation Invoked function returning a single H3 index\n * @return {H3Index} H3 index, or null if index was invalid\n */\n\n\nfunction readH3Index(invocation) {\n var ref = readLong(invocation);\n var lower = ref[0];\n var upper = ref[1]; // The lower bits are allowed to be 0s, but if the upper bits are 0\n // this represents an invalid H3 index\n\n return upper ? splitLongToh3Index(lower, upper) : null;\n}\n/**\n * Read an H3 index from a pointer to C memory.\n * @private\n * @param {number} cAddress Pointer to allocated C memory\n * @param {number} offset Offset, in number of H3 indexes, in case we're\n * reading an array\n * @return {H3Index} H3 index, or null if index was invalid\n */\n\n\nfunction readH3IndexFromPointer(cAddress, offset) {\n if ( offset === void 0 ) offset = 0;\n\n var lower = libh3.getValue(cAddress + SZ_INT * offset * 2, 'i32');\n var upper = libh3.getValue(cAddress + SZ_INT * (offset * 2 + 1), 'i32'); // The lower bits are allowed to be 0s, but if the upper bits are 0\n // this represents an invalid H3 index\n\n return upper ? splitLongToh3Index(lower, upper) : null;\n}\n/**\n * Store an H3 index in C memory. Primarily used as an efficient way to\n * write sets of hexagons.\n * @private\n * @param {H3IndexInput} h3Index H3 index to store\n * @param {number} cAddress Pointer to allocated C memory\n * @param {number} offset Offset, in number of H3 indexes from beginning\n * of the current array\n */\n\n\nfunction storeH3Index(h3Index, cAddress, offset) {\n // HEAPU32 is a typed array projection on the index space\n // as unsigned 32-bit integers. This means the index needs\n // to be divided by SZ_INT (4) to access correctly. Also,\n // the H3 index is 64 bits, so we skip by twos as we're writing\n // to 32-bit integers in the proper order.\n libh3.HEAPU32.set(h3IndexToSplitLong(h3Index), cAddress / SZ_INT + 2 * offset);\n}\n/**\n * Read an array of 64-bit H3 indexes from C and convert to a JS array of\n * H3 index strings\n * @private\n * @param {number} cAddress Pointer to C ouput array\n * @param {number} maxCount Max number of hexagons in array. Hexagons with\n * the value 0 will be skipped, so this isn't\n * necessarily the length of the output array.\n * @return {H3Index[]} Array of H3 indexes\n */\n\n\nfunction readArrayOfHexagons(cAddress, maxCount) {\n var out = [];\n\n for (var i = 0; i < maxCount; i++) {\n var h3Index = readH3IndexFromPointer(cAddress, i);\n\n if (h3Index !== null) {\n out.push(h3Index);\n }\n }\n\n return out;\n}\n/**\n * Store an array of H3 index strings as a C array of 64-bit integers.\n * @private\n * @param {number} cAddress Pointer to C input array\n * @param {H3IndexInput[]} hexagons H3 indexes to pass to the C lib\n */\n\n\nfunction storeArrayOfHexagons(cAddress, hexagons) {\n // Assuming the cAddress points to an already appropriately\n // allocated space\n var count = hexagons.length;\n\n for (var i = 0; i < count; i++) {\n storeH3Index(hexagons[i], cAddress, i);\n }\n}\n/**\n * Populate a C-appropriate GeoCoord struct from a [lat, lng] array\n * @private\n * @param {number} lat Coordinate latitude\n * @param {number} lng Coordinate longitude\n * @return {number} C pointer to populated GeoCoord struct\n */\n\n\nfunction storeGeoCoord(lat, lng) {\n var geoCoord = libh3._calloc(1, SZ_GEOCOORD);\n\n libh3.HEAPF64.set([lat, lng].map(degsToRads), geoCoord / SZ_DBL);\n return geoCoord;\n}\n\nfunction readSingleCoord(cAddress) {\n return radsToDegs(libh3.getValue(cAddress, 'double'));\n}\n/**\n * Read a GeoCoord from C and return a [lat, lng] pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {number[]} [lat, lng] pair\n */\n\n\nfunction readGeoCoord(cAddress) {\n return [readSingleCoord(cAddress), readSingleCoord(cAddress + SZ_DBL)];\n}\n/**\n * Read a GeoCoord from C and return a GeoJSON-style [lng, lat] pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {number[]} [lng, lat] pair\n */\n\n\nfunction readGeoCoordGeoJson(cAddress) {\n return [readSingleCoord(cAddress + SZ_DBL), readSingleCoord(cAddress)];\n}\n/**\n * Read the GeoBoundary structure into a list of geo coordinate pairs\n * @private\n * @param {number} geoBoundary C pointer to GeoBoundary struct\n * @param {boolean} geoJsonCoords Whether to provide GeoJSON coordinate order: [lng, lat]\n * @param {boolean} closedLoop Whether to close the loop\n * @return {Array[]} Array of geo coordinate pairs\n */\n\n\nfunction readGeoBoundary(geoBoundary, geoJsonCoords, closedLoop) {\n var numVerts = libh3.getValue(geoBoundary, 'i32'); // Note that though numVerts is an int, the coordinate doubles have to be\n // aligned to 8 bytes, hence the 8-byte offset here\n\n var vertsPos = geoBoundary + SZ_DBL;\n var out = []; // Support [lng, lat] pairs if GeoJSON is specified\n\n var readCoord = geoJsonCoords ? readGeoCoordGeoJson : readGeoCoord;\n\n for (var i = 0; i < numVerts * 2; i += 2) {\n out.push(readCoord(vertsPos + SZ_DBL * i));\n }\n\n if (closedLoop) {\n // Close loop if GeoJSON is specified\n out.push(out[0]);\n }\n\n return out;\n}\n/**\n * Read the LinkedGeoPolygon structure into a nested array of MultiPolygon coordinates\n * @private\n * @param {number} polygon C pointer to LinkedGeoPolygon struct\n * @param {boolean} formatAsGeoJson Whether to provide GeoJSON output: [lng, lat], closed loops\n * @return {number[][][][]} MultiPolygon-style output.\n */\n\n\nfunction readMultiPolygon(polygon, formatAsGeoJson) {\n var output = [];\n var readCoord = formatAsGeoJson ? readGeoCoordGeoJson : readGeoCoord;\n var loops;\n var loop;\n var coords;\n var coord; // Loop through the linked structure, building the output\n\n while (polygon) {\n output.push(loops = []); // Follow ->first pointer\n\n loop = libh3.getValue(polygon, 'i8*');\n\n while (loop) {\n loops.push(coords = []); // Follow ->first pointer\n\n coord = libh3.getValue(loop, 'i8*');\n\n while (coord) {\n coords.push(readCoord(coord)); // Follow ->next pointer\n\n coord = libh3.getValue(coord + SZ_DBL * 2, 'i8*');\n }\n\n if (formatAsGeoJson) {\n // Close loop if GeoJSON is requested\n coords.push(coords[0]);\n } // Follow ->next pointer\n\n\n loop = libh3.getValue(loop + SZ_PTR * 2, 'i8*');\n } // Follow ->next pointer\n\n\n polygon = libh3.getValue(polygon + SZ_PTR * 2, 'i8*');\n }\n\n return output;\n}\n/**\n * Read a CoordIJ from C and return an {i, j} pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {CoordIJ} {i, j} pair\n */\n\n\nfunction readCoordIJ(cAddress) {\n return {\n i: libh3.getValue(cAddress, 'i32'),\n j: libh3.getValue(cAddress + SZ_INT, 'i32')\n };\n}\n/**\n * Store an {i, j} pair to a C CoordIJ struct.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {CoordIJ} {i, j} pair\n */\n\n\nfunction storeCoordIJ(cAddress, ref) {\n var i = ref.i;\n var j = ref.j;\n\n libh3.setValue(cAddress, i, 'i32');\n libh3.setValue(cAddress + SZ_INT, j, 'i32');\n}\n/**\n * Read an array of positive integers array from C. Negative\n * values are considered invalid and ignored in output.\n * @private\n * @param {number} cAddress Pointer to C array\n * @param {number} count Length of C array\n * @return {number[]} Javascript integer array\n */\n\n\nfunction readArrayOfPositiveIntegers(cAddress, count) {\n var out = [];\n\n for (var i = 0; i < count; i++) {\n var int = libh3.getValue(cAddress + SZ_INT * i, 'i32');\n\n if (int >= 0) {\n out.push(int);\n }\n }\n\n return out;\n} // ----------------------------------------------------------------------------\n// Public API functions: Core\n\n/**\n * Whether a given string represents a valid H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} Whether the index is valid\n */\n\n\nfunction h3IsValid(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean(H3.h3IsValid(lower, upper));\n}\n/**\n * Whether the given H3 index is a pentagon\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} isPentagon\n */\n\nfunction h3IsPentagon(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean(H3.h3IsPentagon(lower, upper));\n}\n/**\n * Whether the given H3 index is in a Class III resolution (rotated versus\n * the icosahedron and subject to shape distortion adding extra points on\n * icosahedron edges, making them not true hexagons).\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} isResClassIII\n */\n\nfunction h3IsResClassIII(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean(H3.h3IsResClassIII(lower, upper));\n}\n/**\n * Get the number of the base cell for a given H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get the base cell for\n * @return {number} Index of the base cell (0-121)\n */\n\nfunction h3GetBaseCell(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return H3.h3GetBaseCell(lower, upper);\n}\n/**\n * Get the indices of all icosahedron faces intersected by a given H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get faces for\n * @return {number[]} Indices (0-19) of all intersected faces\n */\n\nfunction h3GetFaces(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var count = H3.maxFaceCount(lower, upper);\n\n var faces = libh3._malloc(SZ_INT * count);\n\n H3.h3GetFaces(lower, upper, faces);\n var out = readArrayOfPositiveIntegers(faces, count);\n\n libh3._free(faces);\n\n return out;\n}\n/**\n * Returns the resolution of an H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get resolution\n * @return {number} The number (0-15) resolution, or -1 if invalid\n */\n\nfunction h3GetResolution(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n\n if (!H3.h3IsValid(lower, upper)) {\n // Compatability with stated API\n return -1;\n }\n\n return H3.h3GetResolution(lower, upper);\n}\n/**\n * Get the hexagon containing a lat,lon point\n * @static\n * @param {number} lat Latitude of point\n * @param {number} lng Longtitude of point\n * @param {number} res Resolution of hexagons to return\n * @return {H3Index} H3 index\n */\n\nfunction geoToH3(lat, lng, res) {\n var latlng = libh3._malloc(SZ_GEOCOORD); // Slightly more efficient way to set the memory\n\n\n libh3.HEAPF64.set([lat, lng].map(degsToRads), latlng / SZ_DBL); // Read value as a split long\n\n var h3Index = readH3Index(H3.geoToH3(latlng, res));\n\n libh3._free(latlng);\n\n return h3Index;\n}\n/**\n * Get the lat,lon center of a given hexagon\n * @static\n * @param {H3IndexInput} h3Index H3 index\n * @return {number[]} Point as a [lat, lng] pair\n */\n\nfunction h3ToGeo(h3Index) {\n var latlng = libh3._malloc(SZ_GEOCOORD);\n\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n H3.h3ToGeo(lower, upper, latlng);\n var out = readGeoCoord(latlng);\n\n libh3._free(latlng);\n\n return out;\n}\n/**\n * Get the vertices of a given hexagon (or pentagon), as an array of [lat, lng]\n * points. For pentagons and hexagons on the edge of an icosahedron face, this\n * function may return up to 10 vertices.\n * @static\n * @param {H3Index} h3Index H3 index\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat], closed loops\n * @return {number[][]} Array of [lat, lng] pairs\n */\n\nfunction h3ToGeoBoundary(h3Index, formatAsGeoJson) {\n var geoBoundary = libh3._malloc(SZ_GEOBOUNDARY);\n\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n H3.h3ToGeoBoundary(lower, upper, geoBoundary);\n var out = readGeoBoundary(geoBoundary, formatAsGeoJson, formatAsGeoJson);\n\n libh3._free(geoBoundary);\n\n return out;\n} // ----------------------------------------------------------------------------\n// Public API functions: Algorithms\n\n/**\n * Get the parent of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get parent for\n * @param {number} res Resolution of hexagon to return\n * @return {H3Index} H3 index of parent, or null for invalid input\n */\n\nfunction h3ToParent(h3Index, res) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return readH3Index(H3.h3ToParent(lower, upper, res));\n}\n/**\n * Get the children/descendents of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get children for\n * @param {number} res Resolution of hexagons to return\n * @return {H3Index[]} H3 indexes of children, or empty array for invalid input\n */\n\nfunction h3ToChildren(h3Index, res) {\n // Bad input in this case can potentially result in high computation volume\n // using the current C algorithm. Validate and return an empty array on failure.\n if (!h3IsValid(h3Index)) {\n return [];\n }\n\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var maxCount = H3.maxH3ToChildrenSize(lower, upper, res);\n\n var hexagons = libh3._calloc(maxCount, SZ_H3INDEX);\n\n H3.h3ToChildren(lower, upper, res, hexagons);\n var out = readArrayOfHexagons(hexagons, maxCount);\n\n libh3._free(hexagons);\n\n return out;\n}\n/**\n * Get the center child of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get center child for\n * @param {number} res Resolution of hexagon to return\n * @return {H3Index} H3 index of child, or null for invalid input\n */\n\nfunction h3ToCenterChild(h3Index, res) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return readH3Index(H3.h3ToCenterChild(lower, upper, res));\n}\n/**\n * Get all hexagons in a k-ring around a given center. The order of the hexagons is undefined.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of k-ring\n * @return {H3Index[]} H3 indexes for all hexagons in ring\n */\n\nfunction kRing(h3Index, ringSize) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var maxCount = H3.maxKringSize(ringSize);\n\n var hexagons = libh3._calloc(maxCount, SZ_H3INDEX);\n\n H3.kRing(lower, upper, ringSize, hexagons);\n var out = readArrayOfHexagons(hexagons, maxCount);\n\n libh3._free(hexagons);\n\n return out;\n}\n/**\n * Get all hexagons in a k-ring around a given center, in an array of arrays\n * ordered by distance from the origin. The order of the hexagons within each ring is undefined.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of k-ring\n * @return {H3Index[][]} Array of arrays with H3 indexes for all hexagons each ring\n */\n\nfunction kRingDistances(h3Index, ringSize) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var maxCount = H3.maxKringSize(ringSize);\n\n var kRings = libh3._calloc(maxCount, SZ_H3INDEX);\n\n var distances = libh3._calloc(maxCount, SZ_INT);\n\n H3.kRingDistances(lower, upper, ringSize, kRings, distances); // Create an array of empty arrays to hold the output\n\n var out = [];\n\n for (var i = 0; i < ringSize + 1; i++) {\n out.push([]);\n } // Read the array of hexagons, putting them into the appropriate rings\n\n\n for (var i$1 = 0; i$1 < maxCount * 2; i$1 += 2) {\n var hexLower = libh3.getValue(kRings + SZ_INT * i$1, 'i32');\n var hexUpper = libh3.getValue(kRings + SZ_INT * (i$1 + 1), 'i32');\n var index = libh3.getValue(distances + SZ_INT * (i$1 / 2), 'i32');\n\n if (hexLower !== 0 || hexUpper !== 0) {\n out[index].push(splitLongToh3Index(hexLower, hexUpper));\n }\n }\n\n libh3._free(kRings);\n\n libh3._free(distances);\n\n return out;\n}\n/**\n * Get all hexagons in a hollow hexagonal ring centered at origin with sides of a given length.\n * Unlike kRing, this function will throw an error if there is a pentagon anywhere in the ring.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of ring\n * @return {H3Index[]} H3 indexes for all hexagons in ring\n * @throws {Error} If the algorithm could not calculate the ring\n */\n\nfunction hexRing(h3Index, ringSize) {\n var maxCount = ringSize === 0 ? 1 : 6 * ringSize;\n\n var hexagons = libh3._calloc(maxCount, SZ_H3INDEX);\n\n var retVal = H3.hexRing.apply(H3, h3IndexToSplitLong(h3Index).concat( [ringSize], [hexagons] ));\n\n if (retVal !== 0) {\n libh3._free(hexagons);\n\n throw new Error('Failed to get hexRing (encountered a pentagon?)');\n }\n\n var out = readArrayOfHexagons(hexagons, maxCount);\n\n libh3._free(hexagons);\n\n return out;\n}\n/**\n * Get all hexagons with centers contained in a given polygon. The polygon\n * is specified with GeoJson semantics as an array of loops. Each loop is\n * an array of [lat, lng] pairs (or [lng, lat] if isGeoJson is specified).\n * The first loop is the perimeter of the polygon, and subsequent loops are\n * expected to be holes.\n * @static\n * @param {number[][] | number[][][]} coordinates\n * Array of loops, or a single loop\n * @param {number} res Resolution of hexagons to return\n * @param {boolean} [isGeoJson] Whether to expect GeoJson-style [lng, lat]\n * pairs instead of [lat, lng]\n * @return {H3Index[]} H3 indexes for all hexagons in polygon\n */\n\nfunction polyfill(coordinates, res, isGeoJson) {\n validateRes(res);\n isGeoJson = Boolean(isGeoJson); // Guard against empty input\n\n if (coordinates.length === 0 || coordinates[0].length === 0) {\n return [];\n } // Wrap to expected format if a single loop is provided\n\n\n if (typeof coordinates[0][0] === 'number') {\n coordinates = [coordinates];\n }\n\n var geoPolygon = coordinatesToGeoPolygon(coordinates, isGeoJson);\n var arrayLen = H3.maxPolyfillSize(geoPolygon, res);\n\n var hexagons = libh3._calloc(arrayLen, SZ_H3INDEX);\n\n H3.polyfill(geoPolygon, res, hexagons);\n var out = readArrayOfHexagons(hexagons, arrayLen);\n\n libh3._free(hexagons);\n\n destroyGeoPolygon(geoPolygon);\n return out;\n}\n/**\n * Get the outlines of a set of H3 hexagons, returned in GeoJSON MultiPolygon\n * format (an array of polygons, each with an array of loops, each an array of\n * coordinates). Coordinates are returned as [lat, lng] pairs unless GeoJSON\n * is requested.\n *\n * It is the responsibility of the caller to ensure that all hexagons in the\n * set have the same resolution and that the set contains no duplicates. Behavior\n * is undefined if duplicates or multiple resolutions are present, and the\n * algorithm may produce unexpected or invalid polygons.\n *\n * @static\n * @param {H3IndexInput[]} h3Indexes H3 indexes to get outlines for\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output:\n * [lng, lat], closed loops\n * @return {number[][][][]} MultiPolygon-style output.\n */\n\nfunction h3SetToMultiPolygon(h3Indexes, formatAsGeoJson) {\n // Early exit on empty input\n if (!h3Indexes || !h3Indexes.length) {\n return [];\n } // Set up input set\n\n\n var indexCount = h3Indexes.length;\n\n var set = libh3._calloc(indexCount, SZ_H3INDEX);\n\n storeArrayOfHexagons(set, h3Indexes); // Allocate memory for output linked polygon\n\n var polygon = libh3._calloc(SZ_LINKED_GEOPOLYGON); // Store a reference to the first polygon - that's the one we need for\n // memory deallocation\n\n\n var originalPolygon = polygon;\n H3.h3SetToLinkedGeo(set, indexCount, polygon);\n var multiPolygon = readMultiPolygon(polygon, formatAsGeoJson); // Clean up\n\n H3.destroyLinkedPolygon(originalPolygon);\n\n libh3._free(originalPolygon);\n\n libh3._free(set);\n\n return multiPolygon;\n}\n/**\n * Compact a set of hexagons of the same resolution into a set of hexagons across\n * multiple levels that represents the same area.\n * @static\n * @param {H3IndexInput[]} h3Set H3 indexes to compact\n * @return {H3Index[]} Compacted H3 indexes\n * @throws {Error} If the input is invalid (e.g. duplicate hexagons)\n */\n\nfunction compact(h3Set) {\n if (!h3Set || !h3Set.length) {\n return [];\n } // Set up input set\n\n\n var count = h3Set.length;\n\n var set = libh3._calloc(count, SZ_H3INDEX);\n\n storeArrayOfHexagons(set, h3Set); // Allocate memory for compacted hexagons, worst-case is no compaction\n\n var compactedSet = libh3._calloc(count, SZ_H3INDEX);\n\n var retVal = H3.compact(set, compactedSet, count);\n\n if (retVal !== 0) {\n libh3._free(set);\n\n libh3._free(compactedSet);\n\n throw new Error('Failed to compact, malformed input data (duplicate hexagons?)');\n }\n\n var out = readArrayOfHexagons(compactedSet, count);\n\n libh3._free(set);\n\n libh3._free(compactedSet);\n\n return out;\n}\n/**\n * Uncompact a compacted set of hexagons to hexagons of the same resolution\n * @static\n * @param {H3IndexInput[]} compactedSet H3 indexes to uncompact\n * @param {number} res The resolution to uncompact to\n * @return {H3Index[]} The uncompacted H3 indexes\n * @throws {Error} If the input is invalid (e.g. invalid resolution)\n */\n\nfunction uncompact(compactedSet, res) {\n validateRes(res);\n\n if (!compactedSet || !compactedSet.length) {\n return [];\n } // Set up input set\n\n\n var count = compactedSet.length;\n\n var set = libh3._calloc(count, SZ_H3INDEX);\n\n storeArrayOfHexagons(set, compactedSet); // Estimate how many hexagons we need (always overestimates if in error)\n\n var maxUncompactedNum = H3.maxUncompactSize(set, count, res); // Allocate memory for uncompacted hexagons\n\n var uncompactedSet = libh3._calloc(maxUncompactedNum, SZ_H3INDEX);\n\n var retVal = H3.uncompact(set, count, uncompactedSet, maxUncompactedNum, res);\n\n if (retVal !== 0) {\n libh3._free(set);\n\n libh3._free(uncompactedSet);\n\n throw new Error('Failed to uncompact (bad resolution?)');\n }\n\n var out = readArrayOfHexagons(uncompactedSet, maxUncompactedNum);\n\n libh3._free(set);\n\n libh3._free(uncompactedSet);\n\n return out;\n} // ----------------------------------------------------------------------------\n// Public API functions: Unidirectional edges\n\n/**\n * Whether two H3 indexes are neighbors (share an edge)\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {boolean} Whether the hexagons share an edge\n */\n\nfunction h3IndexesAreNeighbors(origin, destination) {\n var ref = h3IndexToSplitLong(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = h3IndexToSplitLong(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n return Boolean(H3.h3IndexesAreNeighbors(oLower, oUpper, dLower, dUpper));\n}\n/**\n * Get an H3 index representing a unidirectional edge for a given origin and destination\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {H3Index} H3 index of the edge, or null if no edge is shared\n */\n\nfunction getH3UnidirectionalEdge(origin, destination) {\n var ref = h3IndexToSplitLong(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = h3IndexToSplitLong(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n return readH3Index(H3.getH3UnidirectionalEdge(oLower, oUpper, dLower, dUpper));\n}\n/**\n * Get the origin hexagon from an H3 index representing a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index} H3 index of the edge origin\n */\n\nfunction getOriginH3IndexFromUnidirectionalEdge(edgeIndex) {\n var ref = h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n return readH3Index(H3.getOriginH3IndexFromUnidirectionalEdge(lower, upper));\n}\n/**\n * Get the destination hexagon from an H3 index representing a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index} H3 index of the edge destination\n */\n\nfunction getDestinationH3IndexFromUnidirectionalEdge(edgeIndex) {\n var ref = h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n return readH3Index(H3.getDestinationH3IndexFromUnidirectionalEdge(lower, upper));\n}\n/**\n * Whether the input is a valid unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {boolean} Whether the index is valid\n */\n\nfunction h3UnidirectionalEdgeIsValid(edgeIndex) {\n var ref = h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean(H3.h3UnidirectionalEdgeIsValid(lower, upper));\n}\n/**\n * Get the [origin, destination] pair represented by a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index[]} [origin, destination] pair as H3 indexes\n */\n\nfunction getH3IndexesFromUnidirectionalEdge(edgeIndex) {\n var ref = h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n var count = 2;\n\n var hexagons = libh3._calloc(count, SZ_H3INDEX);\n\n H3.getH3IndexesFromUnidirectionalEdge(lower, upper, hexagons);\n var out = readArrayOfHexagons(hexagons, count);\n\n libh3._free(hexagons);\n\n return out;\n}\n/**\n * Get all of the unidirectional edges with the given H3 index as the origin (i.e. an edge to\n * every neighbor)\n * @static\n * @param {H3IndexInput} h3Index H3 index of the origin hexagon\n * @return {H3Index[]} List of unidirectional edges\n */\n\nfunction getH3UnidirectionalEdgesFromHexagon(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var count = 6;\n\n var edges = libh3._calloc(count, SZ_H3INDEX);\n\n H3.getH3UnidirectionalEdgesFromHexagon(lower, upper, edges);\n var out = readArrayOfHexagons(edges, count);\n\n libh3._free(edges);\n\n return out;\n}\n/**\n * Get the vertices of a given edge as an array of [lat, lng] points. Note that for edges that\n * cross the edge of an icosahedron face, this may return 3 coordinates.\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat]\n * @return {number[][]} Array of geo coordinate pairs\n */\n\nfunction getH3UnidirectionalEdgeBoundary(edgeIndex, formatAsGeoJson) {\n var geoBoundary = libh3._malloc(SZ_GEOBOUNDARY);\n\n var ref = h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n H3.getH3UnidirectionalEdgeBoundary(lower, upper, geoBoundary);\n var out = readGeoBoundary(geoBoundary, formatAsGeoJson);\n\n libh3._free(geoBoundary);\n\n return out;\n}\n/**\n * Get the grid distance between two hex indexes. This function may fail\n * to find the distance between two indexes if they are very far apart or\n * on opposite sides of a pentagon.\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {number} Distance between hexagons, or a negative\n * number if the distance could not be computed\n */\n\nfunction h3Distance(origin, destination) {\n var ref = h3IndexToSplitLong(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = h3IndexToSplitLong(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n return H3.h3Distance(oLower, oUpper, dLower, dUpper);\n}\n/**\n * Given two H3 indexes, return the line of indexes between them (inclusive).\n *\n * This function may fail to find the line between two indexes, for\n * example if they are very far apart. It may also fail when finding\n * distances for indexes on opposite sides of a pentagon.\n *\n * Notes:\n *\n * - The specific output of this function should not be considered stable\n * across library versions. The only guarantees the library provides are\n * that the line length will be `h3Distance(start, end) + 1` and that\n * every index in the line will be a neighbor of the preceding index.\n * - Lines are drawn in grid space, and may not correspond exactly to either\n * Cartesian lines or great arcs.\n *\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {H3Index[]} H3 indexes connecting origin and destination\n * @throws {Error} If the line cannot be calculated\n */\n\nfunction h3Line(origin, destination) {\n var ref = h3IndexToSplitLong(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = h3IndexToSplitLong(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n var count = H3.h3LineSize(oLower, oUpper, dLower, dUpper);\n\n if (count < 0) {\n // We can't get the specific error code here - may be any of\n // the errors possible in experimentalH3ToLocalIj\n throw new Error('Line cannot be calculated');\n }\n\n var hexagons = libh3._calloc(count, SZ_H3INDEX);\n\n H3.h3Line(oLower, oUpper, dLower, dUpper, hexagons);\n var out = readArrayOfHexagons(hexagons, count);\n\n libh3._free(hexagons);\n\n return out;\n}\n/**\n * Produces IJ coordinates for an H3 index anchored by an origin.\n *\n * - The coordinate space used by this function may have deleted\n * regions or warping due to pentagonal distortion.\n * - Coordinates are only comparable if they come from the same\n * origin index.\n * - Failure may occur if the index is too far away from the origin\n * or if the index is on the other side of a pentagon.\n * - This function is experimental, and its output is not guaranteed\n * to be compatible across different versions of H3.\n * @static\n * @param {H3IndexInput} origin Origin H3 index\n * @param {H3IndexInput} destination H3 index for which to find relative coordinates\n * @return {CoordIJ} Coordinates as an `{i, j}` pair\n * @throws {Error} If the IJ coordinates cannot be calculated\n */\n\nfunction experimentalH3ToLocalIj(origin, destination) {\n var ij = libh3._malloc(SZ_COORDIJ);\n\n var retVal = H3.experimentalH3ToLocalIj.apply(H3, h3IndexToSplitLong(origin).concat( h3IndexToSplitLong(destination), [ij] ));\n var coords = readCoordIJ(ij);\n\n libh3._free(ij); // Return the pair, or throw if an error code was returned.\n // Switch statement and error codes cribbed from h3-java's implementation.\n\n\n switch (retVal) {\n case 0:\n return coords;\n\n case 1:\n throw new Error('Incompatible origin and index.');\n\n case 2:\n default:\n throw new Error('Local IJ coordinates undefined for this origin and index pair. ' + 'The index may be too far from the origin.');\n\n case 3:\n case 4:\n case 5:\n throw new Error('Encountered possible pentagon distortion');\n }\n}\n/**\n * Produces an H3 index for IJ coordinates anchored by an origin.\n *\n * - The coordinate space used by this function may have deleted\n * regions or warping due to pentagonal distortion.\n * - Coordinates are only comparable if they come from the same\n * origin index.\n * - Failure may occur if the index is too far away from the origin\n * or if the index is on the other side of a pentagon.\n * - This function is experimental, and its output is not guaranteed\n * to be compatible across different versions of H3.\n * @static\n * @param {H3IndexInput} origin Origin H3 index\n * @param {CoordIJ} coords Coordinates as an `{i, j}` pair\n * @return {H3Index} H3 index at the relative coordinates\n * @throws {Error} If the H3 index cannot be calculated\n */\n\nfunction experimentalLocalIjToH3(origin, coords) {\n // Validate input coords\n if (!coords || typeof coords.i !== 'number' || typeof coords.j !== 'number') {\n throw new Error('Coordinates must be provided as an {i, j} object');\n } // Allocate memory for the CoordIJ struct and an H3 index to hold the return value\n\n\n var ij = libh3._malloc(SZ_COORDIJ);\n\n var out = libh3._malloc(SZ_H3INDEX);\n\n storeCoordIJ(ij, coords);\n var retVal = H3.experimentalLocalIjToH3.apply(H3, h3IndexToSplitLong(origin).concat( [ij], [out] ));\n var h3Index = readH3IndexFromPointer(out);\n\n libh3._free(ij);\n\n libh3._free(out);\n\n if (retVal !== 0) {\n throw new Error('Index not defined for this origin and IJ coordinates pair. ' + 'IJ coordinates may be too far from origin, or ' + 'a pentagon distortion was encountered.');\n }\n\n return h3Index;\n} // ----------------------------------------------------------------------------\n// Public API functions: Distance/area utilities\n\n/**\n * Great circle distance between two geo points. This is not specific to H3,\n * but is implemented in the library and provided here as a convenience.\n * @static\n * @param {number[]} latlng1 Origin coordinate as [lat, lng]\n * @param {number[]} latlng2 Destination coordinate as [lat, lng]\n * @param {string} unit Distance unit (either UNITS.m or UNITS.km)\n * @return {number} Great circle distance\n * @throws {Error} If the unit is invalid\n */\n\nfunction pointDist(latlng1, latlng2, unit) {\n var coord1 = storeGeoCoord(latlng1[0], latlng1[1]);\n var coord2 = storeGeoCoord(latlng2[0], latlng2[1]);\n var result;\n\n switch (unit) {\n case UNITS.m:\n result = H3.pointDistM(coord1, coord2);\n break;\n\n case UNITS.km:\n result = H3.pointDistKm(coord1, coord2);\n break;\n\n case UNITS.rads:\n result = H3.pointDistRads(coord1, coord2);\n break;\n\n default:\n result = null;\n }\n\n libh3._free(coord1);\n\n libh3._free(coord2);\n\n if (result === null) {\n throw new Error((\"Unknown unit: \" + unit));\n }\n\n return result;\n}\n/**\n * Exact area of a given cell\n * @static\n * @param {H3Index} h3Index H3 index of the hexagon to measure\n * @param {string} unit Distance unit (either UNITS.m2 or UNITS.km2)\n * @return {number} Cell area\n * @throws {Error} If the unit is invalid\n */\n\nfunction cellArea(h3Index, unit) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n\n switch (unit) {\n case UNITS.m2:\n return H3.cellAreaM2(lower, upper);\n\n case UNITS.km2:\n return H3.cellAreaKm2(lower, upper);\n\n case UNITS.rads2:\n return H3.cellAreaRads2(lower, upper);\n\n default:\n throw new Error((\"Unknown unit: \" + unit));\n }\n}\n/**\n * Exact length of a given unidirectional edge\n * @static\n * @param {H3Index} edge H3 index of the edge to measure\n * @param {string} unit Distance unit (either UNITS.m, UNITS.km, or UNITS.rads)\n * @return {number} Cell area\n * @throws {Error} If the unit is invalid\n */\n\nfunction exactEdgeLength(edge, unit) {\n var ref = h3IndexToSplitLong(edge);\n var lower = ref[0];\n var upper = ref[1];\n\n switch (unit) {\n case UNITS.m:\n return H3.exactEdgeLengthM(lower, upper);\n\n case UNITS.km:\n return H3.exactEdgeLengthKm(lower, upper);\n\n case UNITS.rads:\n return H3.exactEdgeLengthRads(lower, upper);\n\n default:\n throw new Error((\"Unknown unit: \" + unit));\n }\n}\n/**\n * Average hexagon area at a given resolution\n * @static\n * @param {number} res Hexagon resolution\n * @param {string} unit Area unit (either UNITS.m2, UNITS.km2, or UNITS.rads2)\n * @return {number} Average area\n * @throws {Error} If the unit is invalid\n */\n\nfunction hexArea(res, unit) {\n validateRes(res);\n\n switch (unit) {\n case UNITS.m2:\n return H3.hexAreaM2(res);\n\n case UNITS.km2:\n return H3.hexAreaKm2(res);\n\n default:\n throw new Error((\"Unknown unit: \" + unit));\n }\n}\n/**\n * Average hexagon edge length at a given resolution\n * @static\n * @param {number} res Hexagon resolution\n * @param {string} unit Distance unit (either UNITS.m, UNITS.km, or UNITS.rads)\n * @return {number} Average edge length\n * @throws {Error} If the unit is invalid\n */\n\nfunction edgeLength(res, unit) {\n validateRes(res);\n\n switch (unit) {\n case UNITS.m:\n return H3.edgeLengthM(res);\n\n case UNITS.km:\n return H3.edgeLengthKm(res);\n\n default:\n throw new Error((\"Unknown unit: \" + unit));\n }\n} // ----------------------------------------------------------------------------\n// Public informational utilities\n\n/**\n * The total count of hexagons in the world at a given resolution. Note that above\n * resolution 8 the exact count cannot be represented in a JavaScript 32-bit number,\n * so consumers should use caution when applying further operations to the output.\n * @static\n * @param {number} res Hexagon resolution\n * @return {number} Count\n */\n\nfunction numHexagons(res) {\n validateRes(res); // Get number as a long value\n\n var ref = readLong(H3.numHexagons(res));\n var lower = ref[0];\n var upper = ref[1]; // If we're using <= 32 bits we can use normal JS numbers\n\n if (!upper) {\n return lower;\n } // Above 32 bit, make a JS number that's correct in order of magnitude\n\n\n return upper * Math.pow(2, 32) + lower;\n}\n/**\n * Get all H3 indexes at resolution 0. As every index at every resolution > 0 is\n * the descendant of a res 0 index, this can be used with h3ToChildren to iterate\n * over H3 indexes at any resolution.\n * @static\n * @return {H3Index[]} All H3 indexes at res 0\n */\n\nfunction getRes0Indexes() {\n var count = H3.res0IndexCount();\n\n var hexagons = libh3._malloc(SZ_H3INDEX * count);\n\n H3.getRes0Indexes(hexagons);\n var out = readArrayOfHexagons(hexagons, count);\n\n libh3._free(hexagons);\n\n return out;\n}\n/**\n * Get the twelve pentagon indexes at a given resolution.\n * @static\n * @param {number} res Hexagon resolution\n * @return {H3Index[]} All H3 pentagon indexes at res\n */\n\nfunction getPentagonIndexes(res) {\n validateRes(res);\n var count = H3.pentagonIndexCount();\n\n var hexagons = libh3._malloc(SZ_H3INDEX * count);\n\n H3.getPentagonIndexes(res, hexagons);\n var out = readArrayOfHexagons(hexagons, count);\n\n libh3._free(hexagons);\n\n return out;\n}\n/**\n * Convert degrees to radians\n * @static\n * @param {number} deg Value in degrees\n * @return {number} Value in radians\n */\n\nfunction degsToRads(deg) {\n return deg * Math.PI / 180;\n}\n/**\n * Convert radians to degrees\n * @static\n * @param {number} rad Value in radians\n * @return {number} Value in degrees\n */\n\nfunction radsToDegs(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport { UNITS, h3IndexToSplitLong, splitLongToh3Index, h3IsValid, h3IsPentagon, h3IsResClassIII, h3GetBaseCell, h3GetFaces, h3GetResolution, geoToH3, h3ToGeo, h3ToGeoBoundary, h3ToParent, h3ToChildren, h3ToCenterChild, kRing, kRingDistances, hexRing, polyfill, h3SetToMultiPolygon, compact, uncompact, h3IndexesAreNeighbors, getH3UnidirectionalEdge, getOriginH3IndexFromUnidirectionalEdge, getDestinationH3IndexFromUnidirectionalEdge, h3UnidirectionalEdgeIsValid, getH3IndexesFromUnidirectionalEdge, getH3UnidirectionalEdgesFromHexagon, getH3UnidirectionalEdgeBoundary, h3Distance, h3Line, experimentalH3ToLocalIj, experimentalLocalIjToH3, pointDist, cellArea, exactEdgeLength, hexArea, edgeLength, numHexagons, getRes0Indexes, getPentagonIndexes, degsToRads, radsToDegs };\n//# sourceMappingURL=h3-js.es.js.map\n","\nvar libh3 = (\nfunction(libh3) {\n libh3 = libh3 || {};\n\nvar Module=typeof libh3!==\"undefined\"?libh3:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}read_=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)};setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var STACK_ALIGN=16;function dynamicAlloc(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;if(end>_emscripten_get_heap_size()){abort()}HEAP32[DYNAMICTOP_PTR>>2]=end;return ret}function getNativeTypeSize(type){switch(type){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(type[type.length-1]===\"*\"){return 4}else if(type[0]===\"i\"){var bits=parseInt(type.substr(1));assert(bits%8===0,\"getNativeTypeSize invalid bits \"+bits+\", type \"+type);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module[\"dynCall_\"+sig].apply(null,[ptr].concat(args))}else{return Module[\"dynCall_\"+sig].call(null,ptr)}}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var getTempRet0=function(){return tempRet0};var GLOBAL_BASE=8;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];function setValue(ptr,value,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":HEAP8[ptr>>0]=value;break;case\"i8\":HEAP8[ptr>>0]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;case\"i64\":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;default:abort(\"invalid type for setValue: \"+type)}}function getValue(ptr,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":return HEAP8[ptr>>0];case\"i8\":return HEAP8[ptr>>0];case\"i16\":return HEAP16[ptr>>1];case\"i32\":return HEAP32[ptr>>2];case\"i64\":return HEAP32[ptr>>2];case\"float\":return HEAPF32[ptr>>2];case\"double\":return HEAPF64[ptr>>3];default:abort(\"invalid type for getValue: \"+type)}return null}var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=24048,DYNAMIC_BASE=5266928,DYNAMICTOP_PTR=24016;var INITIAL_TOTAL_MEMORY=Module[\"TOTAL_MEMORY\"]||33554432;if(Module[\"buffer\"]){buffer=Module[\"buffer\"]}else{buffer=new ArrayBuffer(INITIAL_TOTAL_MEMORY)}INITIAL_TOTAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback();continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};var memoryInitializer=null;var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var tempDouble;var tempI64;memoryInitializer=\"data:application/octet-stream;base64,AAAAAAAAAAACAAAAAwAAAAEAAAAFAAAABAAAAAYAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAABAAAAAMAAAAGAAAABQAAAAIAAAAAAAAAAgAAAAMAAAABAAAABAAAAAYAAAAAAAAABQAAAAMAAAAGAAAABAAAAAUAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAABAAAABQAAAAIAAAAAAAAAAQAAAAMAAAAGAAAABAAAAAYAAAAAAAAABQAAAAIAAAABAAAABAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABgAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAABgAAAAAAAAADAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAUAAAAEAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAEAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAACAAAABAAAAAMAAAAIAAAA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AAAAAAAAAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAQAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAADAAAABQAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAABQAAAAUAAAAAAAAAAAAAAP////8BAAAAAAAAAAMAAAAEAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAABQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAQAAAP//////////AQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAIAAAAAAAAAAAAAAAEAAAACAAAABgAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAoAAAACAAAAAAAAAAAAAAABAAAAAQAAAAUAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAIAAAAAAAAAAAAAAAEAAAADAAAABwAAAAYAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAJAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAgAAAAAAAAAAAAAAAQAAAAQAAAAIAAAACgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAACAAAAAAAAAAAAAAABAAAACwAAAA8AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAgAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAACAAAAAAAAAAAAAAABAAAADAAAABAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAEAAAAKAAAAEwAAAAgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAgAAAAAAAAAAAAAAAQAAAA0AAAARAAAADQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAAAAAAAAAAAAAEAAAAOAAAAEgAAAA8AAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABMAAAACAAAAAAAAAAAAAAABAAAA//////////8TAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABIAAAAAAAAAGAAAAAAAAAAhAAAAAAAAAB4AAAAAAAAAIAAAAAMAAAAxAAAAAQAAADAAAAADAAAAMgAAAAMAAAAIAAAAAAAAAAUAAAAFAAAACgAAAAUAAAAWAAAAAAAAABAAAAAAAAAAEgAAAAAAAAApAAAAAQAAACEAAAAAAAAAHgAAAAAAAAAEAAAAAAAAAAAAAAAFAAAAAgAAAAUAAAAPAAAAAQAAAAgAAAAAAAAABQAAAAUAAAAfAAAAAQAAABYAAAAAAAAAEAAAAAAAAAACAAAAAAAAAAYAAAAAAAAADgAAAAAAAAAKAAAAAAAAAAsAAAAAAAAAEQAAAAMAAAAYAAAAAQAAABcAAAADAAAAGQAAAAMAAAAAAAAAAAAAAAEAAAAFAAAACQAAAAUAAAAFAAAAAAAAAAIAAAAAAAAABgAAAAAAAAASAAAAAQAAAAoAAAAAAAAACwAAAAAAAAAEAAAAAQAAAAMAAAAFAAAABwAAAAUAAAAIAAAAAQAAAAAAAAAAAAAAAQAAAAUAAAAQAAAAAQAAAAUAAAAAAAAAAgAAAAAAAAAHAAAAAAAAABUAAAAAAAAAJgAAAAAAAAAJAAAAAAAAABMAAAAAAAAAIgAAAAMAAAAOAAAAAQAAABQAAAADAAAAJAAAAAMAAAADAAAAAAAAAA0AAAAFAAAAHQAAAAUAAAABAAAAAAAAAAcAAAAAAAAAFQAAAAAAAAAGAAAA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74auECWhw7+cjSACjzniv8CZ+wUhN9I/1uGEKzup6z+/GYr/04bavwmkNHp7xee/F2NMZVAA1z+82s+x2BLivwr2ytbJ9em/KwEH1sMS1r8yp/2LhTfev81i5RexJsy/BlIKPVwR5b95Wyu0/Qjnv5DjoT7YYcs/nBhKZ6zrwr8wRYS7Nebuv3OW6geh+Lu/SLrixebL3j+pcyymN9Xrv8rHIFfWehZAMBwUdlo0DECTUc17EOb2PxpVB1SWChdAzjbhb9pTDUDQhmdvECX5P9FlMKCC9+g/IIAzjELgE0DajDngMv8GQFhWDmDPjNs/y1guLh96EkAxPi8k7DIEQJCc4URlhRhA3eLKKLwkEECqpNAyTBD/P6xpjXcDiwVAFtl//cQm4z+Ibt3XKiYTQM7mCLUb3QdAoM1t8yVv7D8aLZv2Nk8UQEAJPV5nQwxAtSsfTCoE9z9TPjXLXIIWQBVanC5W9AtAYM3d7Adm9j++5mQz1FoWQBUThyaVBghAwH5muQsV7T89Q1qv82MUQJoWGOfNuBdAzrkClkmwDkDQjKq77t37Py+g0dtitsE/ZwAMTwVPEUBojepluNwBQGYbtuW+t9w/HNWIJs6MEkDTNuQUSlgEQKxktPP5TcQ/ixbLB8JjEUCwuWjXMQYCQAS/R09FkRdAowpiZjhhDkB7LmlczD/7P01iQmhhsAVAnrtTwDy84z/Z6jfQ2TgTQChOCXMnWwpAhrW3daoz8z/HYJvVPI4VQLT3ik5FcA5Angi7LOZd+z+NNVzDy5gXQBXdvVTFUA1AYNMgOeYe+T8+qHXGCwkXQKQTOKwa5AJA8gFVoEMW0T+FwzJyttIRQAEAAAD/////BwAAAP////8xAAAA/////1cBAAD/////YQkAAP////+nQQAA/////5HLAQD/////95AMAP/////B9lcAAAAAAAAAAAAAAAAAAgAAAP////8OAAAA/////2IAAAD/////rgIAAP/////CEgAA/////06DAAD/////IpcDAP/////uIRkA/////4LtrwAAAAAAAAAAAAAAAAAAAAAAAgAAAP//////////AQAAAAMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////wIAAAD//////////wEAAAAAAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA/////////////////////wEAAAD///////////////8CAAAA////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD///////////////////////////////8CAAAA////////////////AQAAAP////////////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAAAQAAAP//////////AgAAAP//////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAAEAAAD//////////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAQAAAAEAAAACAAAAAgAAAAAAAAAFAAAABQAAAAAAAAACAAAAAgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAABAAAAAgAAAAIAAAACAAAAAAAAAAUAAAAGAAAAAAAAAAIAAAACAAAAAwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAgAAAAEAAAADAAAAAgAAAAIAAAAAAAAABQAAAAcAAAAAAAAAAgAAAAIAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAACAAAAAQAAAAQAAAACAAAAAgAAAAAAAAAFAAAACAAAAAAAAAACAAAAAgAAAAMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAACAAAAAAAAAAUAAAAJAAAAAAAAAAIAAAACAAAAAwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAIAAAACAAAAAAAAAAMAAAAOAAAAAgAAAAAAAAACAAAAAwAAAAAAAAAAAAAAAgAAAAIAAAADAAAABgAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAgAAAAIAAAAAAAAAAwAAAAoAAAACAAAAAAAAAAIAAAADAAAAAQAAAAAAAAACAAAAAgAAAAMAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAgAAAAAAAAADAAAACwAAAAIAAAAAAAAAAgAAAAMAAAACAAAAAAAAAAIAAAACAAAAAwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAACAAAAAAAAAAMAAAAMAAAAAgAAAAAAAAACAAAAAwAAAAMAAAAAAAAAAgAAAAIAAAADAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAIAAAAAAAAAAwAAAA0AAAACAAAAAAAAAAIAAAADAAAABAAAAAAAAAACAAAAAgAAAAMAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAgAAAAAAAAADAAAABgAAAAIAAAAAAAAAAgAAAAMAAAAPAAAAAAAAAAIAAAACAAAAAwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAIAAAACAAAAAAAAAAMAAAAHAAAAAgAAAAAAAAACAAAAAwAAABAAAAAAAAAAAgAAAAIAAAADAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAIAAAAAAAAAAwAAAAgAAAACAAAAAAAAAAIAAAADAAAAEQAAAAAAAAACAAAAAgAAAAMAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAACAAAAAgAAAAAAAAADAAAACQAAAAIAAAAAAAAAAgAAAAMAAAASAAAAAAAAAAIAAAACAAAAAwAAAA4AAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAACAAAAAAAAAAMAAAAFAAAAAgAAAAAAAAACAAAAAwAAABMAAAAAAAAAAgAAAAIAAAADAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAABAAEAAAEBAAAAAAABAAAAAQAAAAEAAQAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAAAAQAAAAMAAAAOAAAABgAAAAsAAAACAAAABwAAAAEAAAAYAAAABQAAAAoAAAABAAAABgAAAAAAAAAmAAAABwAAAAwAAAADAAAACAAAAAIAAAAxAAAACQAAAA4AAAAAAAAABQAAAAQAAAA6AAAACAAAAA0AAAAEAAAACQAAAAMAAAA/AAAACwAAAAYAAAAPAAAACgAAABAAAABIAAAADAAAAAcAAAAQAAAACwAAABEAAABTAAAACgAAAAUAAAATAAAADgAAAA8AAABhAAAADQAAAAgAAAARAAAADAAAABIAAABrAAAADgAAAAkAAAASAAAADQAAABMAAAB1AAAADwAAABMAAAARAAAAEgAAABAAAAAHAAAABwAAAAEAAAACAAAABAAAAAMAAAAAAAAAAAAAAAcAAAADAAAAAQAAAAIAAAAFAAAABAAAAAAAAAAAAAAAYWxnb3MuYwBfcG9seWZpbGxJbnRlcm5hbABhZGphY2VudEZhY2VEaXJbdG1wRmlqay5mYWNlXVtmaWprLmZhY2VdID09IEtJAGZhY2VpamsuYwBfZmFjZUlqa1BlbnRUb0dlb0JvdW5kYXJ5AGFkamFjZW50RmFjZURpcltjZW50ZXJJSksuZmFjZV1bZmFjZTJdID09IEtJAF9mYWNlSWprVG9HZW9Cb3VuZGFyeQBwb2x5Z29uLT5uZXh0ID09IE5VTEwAbGlua2VkR2VvLmMAYWRkTmV3TGlua2VkUG9seWdvbgBuZXh0ICE9IE5VTEwAbG9vcCAhPSBOVUxMAGFkZE5ld0xpbmtlZExvb3AAcG9seWdvbi0+Zmlyc3QgPT0gTlVMTABhZGRMaW5rZWRMb29wAGNvb3JkICE9IE5VTEwAYWRkTGlua2VkQ29vcmQAbG9vcC0+Zmlyc3QgPT0gTlVMTABpbm5lckxvb3BzICE9IE5VTEwAbm9ybWFsaXplTXVsdGlQb2x5Z29uAGJib3hlcyAhPSBOVUxMAGNhbmRpZGF0ZXMgIT0gTlVMTABmaW5kUG9seWdvbkZvckhvbGUAY2FuZGlkYXRlQkJveGVzICE9IE5VTEwAcmV2RGlyICE9IElOVkFMSURfRElHSVQAbG9jYWxpai5jAGgzVG9Mb2NhbElqawBiYXNlQ2VsbCAhPSBvcmlnaW5CYXNlQ2VsbAAhKG9yaWdpbk9uUGVudCAmJiBpbmRleE9uUGVudCkAcGVudGFnb25Sb3RhdGlvbnMgPj0gMABkaXJlY3Rpb25Sb3RhdGlvbnMgPj0gMABiYXNlQ2VsbCA9PSBvcmlnaW5CYXNlQ2VsbABiYXNlQ2VsbCAhPSBJTlZBTElEX0JBU0VfQ0VMTABsb2NhbElqa1RvSDMAIV9pc0Jhc2VDZWxsUGVudGFnb24oYmFzZUNlbGwpAGJhc2VDZWxsUm90YXRpb25zID49IDAAd2l0aGluUGVudGFnb25Sb3RhdGlvbnMgPj0gMABncmFwaC0+YnVja2V0cyAhPSBOVUxMAHZlcnRleEdyYXBoLmMAaW5pdFZlcnRleEdyYXBoAG5vZGUgIT0gTlVMTABhZGRWZXJ0ZXhOb2Rl\";var tempDoublePtr=24032;function demangle(func){return func}function demangleAll(text){var regex=/\\b__Z[\\w\\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+\" [\"+x+\"]\"})}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return\"(no stack trace available)\"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module[\"extraStackTrace\"])js+=\"\\n\"+Module[\"extraStackTrace\"]();return demangleAll(js)}function ___assert_fail(condition,filename,line,func){abort(\"Assertion failed: \"+UTF8ToString(condition)+\", at: \"+[filename?UTF8ToString(filename):\"unknown filename\",line,func?UTF8ToString(func):\"unknown function\"])}function _emscripten_get_heap_size(){return HEAP8.length}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest)}function ___setErrNo(value){if(Module[\"___errno_location\"])HEAP32[Module[\"___errno_location\"]()>>2]=value;return value}function abortOnCannotGrowMemory(requestedSize){abort(\"OOM\")}function emscripten_realloc_buffer(size){try{var newBuffer=new ArrayBuffer(size);if(newBuffer.byteLength!=size)return;new Int8Array(newBuffer).set(HEAP8);_emscripten_replace_memory(newBuffer);updateGlobalBufferAndViews(newBuffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();var PAGE_MULTIPLE=16777216;var LIMIT=2147483648-PAGE_MULTIPLE;if(requestedSize>LIMIT){return false}var MIN_TOTAL_MEMORY=16777216;var newSize=Math.max(oldSize,MIN_TOTAL_MEMORY);while(newSize255){if(ASSERTIONS){assert(false,\"Character code \"+chr+\" (\"+String.fromCharCode(chr)+\") at offset \"+i+\" not in 0x00-0xFF.\")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}var decodeBase64=typeof atob===\"function\"?atob:function(input){var keyStr=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";var output=\"\";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i>2]=a;b[g+4>>2]=c;g=(f|0)!=0;if(g)b[f>>2]=0;if(Fb(a,c)|0){n=1;S=o;return n|0}b[n>>2]=0;a:do if((d|0)>=1)if(g){k=0;l=1;m=1;h=0;g=a;while(1){if(!(h|k)){g=da(g,c,4,n)|0;c=G()|0;if((g|0)==0&(c|0)==0){g=2;break a}if(Fb(g,c)|0){g=1;break a}}g=da(g,c,b[16+(k<<2)>>2]|0,n)|0;c=G()|0;if((g|0)==0&(c|0)==0){g=2;break a}a=e+(m<<3)|0;b[a>>2]=g;b[a+4>>2]=c;b[f+(m<<2)>>2]=l;h=h+1|0;a=(h|0)==(l|0);i=k+1|0;j=(i|0)==6;if(Fb(g,c)|0){g=1;break a}l=l+(j&a&1)|0;if((l|0)>(d|0)){g=0;break}else{k=a?(j?0:i):k;m=m+1|0;h=a?0:h}}}else{k=0;l=1;m=1;h=0;g=a;while(1){if(!(h|k)){g=da(g,c,4,n)|0;c=G()|0;if((g|0)==0&(c|0)==0){g=2;break a}if(Fb(g,c)|0){g=1;break a}}g=da(g,c,b[16+(k<<2)>>2]|0,n)|0;c=G()|0;if((g|0)==0&(c|0)==0){g=2;break a}a=e+(m<<3)|0;b[a>>2]=g;b[a+4>>2]=c;h=h+1|0;a=(h|0)==(l|0);i=k+1|0;j=(i|0)==6;if(Fb(g,c)|0){g=1;break a}l=l+(j&a&1)|0;if((l|0)>(d|0)){g=0;break}else{k=a?(j?0:i):k;m=m+1|0;h=a?0:h}}}else g=0;while(0);n=g;S=o;return n|0}function ca(a,c,d,e,f,g,h){a=a|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=S;S=S+16|0;l=m;if((a|0)==0&(c|0)==0){S=m;return}i=bd(a|0,c|0,g|0,((g|0)<0)<<31>>31|0)|0;G()|0;j=e+(i<<3)|0;n=j;o=b[n>>2]|0;n=b[n+4>>2]|0;k=(o|0)==(a|0)&(n|0)==(c|0);if(!((o|0)==0&(n|0)==0|k))do{i=(i+1|0)%(g|0)|0;j=e+(i<<3)|0;o=j;n=b[o>>2]|0;o=b[o+4>>2]|0;k=(n|0)==(a|0)&(o|0)==(c|0)}while(!((n|0)==0&(o|0)==0|k));i=f+(i<<2)|0;if(k?(b[i>>2]|0)<=(h|0):0){S=m;return}o=j;b[o>>2]=a;b[o+4>>2]=c;b[i>>2]=h;if((h|0)>=(d|0)){S=m;return}o=h+1|0;b[l>>2]=0;n=da(a,c,2,l)|0;ca(n,G()|0,d,e,f,g,o);b[l>>2]=0;n=da(a,c,3,l)|0;ca(n,G()|0,d,e,f,g,o);b[l>>2]=0;n=da(a,c,1,l)|0;ca(n,G()|0,d,e,f,g,o);b[l>>2]=0;n=da(a,c,5,l)|0;ca(n,G()|0,d,e,f,g,o);b[l>>2]=0;n=da(a,c,4,l)|0;ca(n,G()|0,d,e,f,g,o);b[l>>2]=0;n=da(a,c,6,l)|0;ca(n,G()|0,d,e,f,g,o);S=m;return}function da(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if((b[e>>2]|0)>0){f=0;do{d=Pa(d)|0;f=f+1|0}while((f|0)<(b[e>>2]|0))}i=cd(a|0,c|0,45)|0;G()|0;j=i&127;g=Lb(a,c)|0;f=cd(a|0,c|0,52)|0;G()|0;f=f&15;a:do if(!f)h=6;else while(1){m=(15-f|0)*3|0;n=cd(a|0,c|0,m|0)|0;G()|0;n=n&7;o=(Rb(f)|0)==0;f=f+-1|0;l=dd(7,0,m|0)|0;c=c&~(G()|0);m=dd(b[(o?464:48)+(n*28|0)+(d<<2)>>2]|0,0,m|0)|0;k=G()|0;d=b[(o?672:256)+(n*28|0)+(d<<2)>>2]|0;a=m|a&~l;c=k|c;if(!d){d=0;break a}if(!f){h=6;break}}while(0);if((h|0)==6){o=b[880+(j*28|0)+(d<<2)>>2]|0;n=dd(o|0,0,45)|0;a=n|a;c=G()|0|c&-1040385;d=b[4304+(j*28|0)+(d<<2)>>2]|0;if((o&127|0)==127){o=dd(b[880+(j*28|0)+20>>2]|0,0,45)|0;c=G()|0|c&-1040385;d=b[4304+(j*28|0)+20>>2]|0;a=Nb(o|a,c)|0;c=G()|0;b[e>>2]=(b[e>>2]|0)+1}}h=cd(a|0,c|0,45)|0;G()|0;h=h&127;b:do if(!(la(h)|0)){if((d|0)>0){f=0;do{a=Nb(a,c)|0;c=G()|0;f=f+1|0}while((f|0)!=(d|0))}}else{c:do if((Lb(a,c)|0)==1){if((j|0)!=(h|0))if(ra(h,b[7728+(j*28|0)>>2]|0)|0){a=Pb(a,c)|0;g=1;c=G()|0;break}else{a=Nb(a,c)|0;g=1;c=G()|0;break}switch(g|0){case 5:{a=Pb(a,c)|0;c=G()|0;b[e>>2]=(b[e>>2]|0)+5;g=0;break c}case 3:{a=Nb(a,c)|0;c=G()|0;b[e>>2]=(b[e>>2]|0)+1;g=0;break c}default:{n=0;o=0;F(n|0);return o|0}}}else g=0;while(0);if((d|0)>0){f=0;do{a=Mb(a,c)|0;c=G()|0;f=f+1|0}while((f|0)!=(d|0))}if((j|0)!=(h|0)){if(!(ma(h)|0)){if((g|0)!=0|(Lb(a,c)|0)!=5)break;b[e>>2]=(b[e>>2]|0)+1;break}switch(i&127){case 8:case 118:break b;default:{}}if((Lb(a,c)|0)!=3)b[e>>2]=(b[e>>2]|0)+1}}while(0);b[e>>2]=((b[e>>2]|0)+d|0)%6|0;n=c;o=a;F(n|0);return o|0}function ea(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=S;S=S+16|0;l=m;if(!d){l=e;b[l>>2]=a;b[l+4>>2]=c;l=0;S=m;return l|0}b[l>>2]=0;a:do if(!(Fb(a,c)|0)){g=(d|0)>0;if(g){f=0;k=a;do{k=da(k,c,4,l)|0;c=G()|0;if((k|0)==0&(c|0)==0){a=2;break a}f=f+1|0;if(Fb(k,c)|0){a=1;break a}}while((f|0)<(d|0));j=e;b[j>>2]=k;b[j+4>>2]=c;j=d+-1|0;if(g){g=0;h=1;f=k;a=c;do{f=da(f,a,2,l)|0;a=G()|0;if((f|0)==0&(a|0)==0){a=2;break a}i=e+(h<<3)|0;b[i>>2]=f;b[i+4>>2]=a;h=h+1|0;if(Fb(f,a)|0){a=1;break a}g=g+1|0}while((g|0)<(d|0));i=0;g=h;do{f=da(f,a,3,l)|0;a=G()|0;if((f|0)==0&(a|0)==0){a=2;break a}h=e+(g<<3)|0;b[h>>2]=f;b[h+4>>2]=a;g=g+1|0;if(Fb(f,a)|0){a=1;break a}i=i+1|0}while((i|0)<(d|0));h=0;do{f=da(f,a,1,l)|0;a=G()|0;if((f|0)==0&(a|0)==0){a=2;break a}i=e+(g<<3)|0;b[i>>2]=f;b[i+4>>2]=a;g=g+1|0;if(Fb(f,a)|0){a=1;break a}h=h+1|0}while((h|0)<(d|0));h=0;do{f=da(f,a,5,l)|0;a=G()|0;if((f|0)==0&(a|0)==0){a=2;break a}i=e+(g<<3)|0;b[i>>2]=f;b[i+4>>2]=a;g=g+1|0;if(Fb(f,a)|0){a=1;break a}h=h+1|0}while((h|0)<(d|0));h=0;do{f=da(f,a,4,l)|0;a=G()|0;if((f|0)==0&(a|0)==0){a=2;break a}i=e+(g<<3)|0;b[i>>2]=f;b[i+4>>2]=a;g=g+1|0;if(Fb(f,a)|0){a=1;break a}h=h+1|0}while((h|0)<(d|0));h=0;while(1){f=da(f,a,6,l)|0;a=G()|0;if((f|0)==0&(a|0)==0){a=2;break a}if((h|0)!=(j|0)){i=e+(g<<3)|0;b[i>>2]=f;b[i+4>>2]=a;if(!(Fb(f,a)|0))g=g+1|0;else{a=1;break a}}h=h+1|0;if((h|0)>=(d|0)){h=k;g=c;break}}}else{h=k;f=k;g=c;a=c}}else{h=e;b[h>>2]=a;b[h+4>>2]=c;h=a;f=a;g=c;a=c}a=((h|0)!=(f|0)|(g|0)!=(a|0))&1}else a=1;while(0);l=a;S=m;return l|0}function fa(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=S;S=S+48|0;f=g+8|0;e=g;i=a;h=b[i+4>>2]|0;d=e;b[d>>2]=b[i>>2];b[d+4>>2]=h;vc(e,f);f=ya(f,c)|0;c=b[e>>2]|0;e=b[a+8>>2]|0;if((e|0)<=0){i=c;h=(f|0)<(i|0);i=h?i:f;i=i+12|0;S=g;return i|0}d=b[a+12>>2]|0;a=0;do{c=(b[d+(a<<3)>>2]|0)+c|0;a=a+1|0}while((a|0)<(e|0));i=(f|0)<(c|0);i=i?c:f;i=i+12|0;S=g;return i|0}function ga(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=S;S=S+48|0;e=i+8|0;f=i;if(!(ha(a,c,d)|0)){S=i;return}j=a;g=b[j+4>>2]|0;h=f;b[h>>2]=b[j>>2];b[h+4>>2]=g;vc(f,e);h=ya(e,c)|0;c=b[f>>2]|0;g=b[a+8>>2]|0;if((g|0)>0){f=b[a+12>>2]|0;e=0;do{c=(b[f+(e<<3)>>2]|0)+c|0;e=e+1|0}while((e|0)!=(g|0))}c=(h|0)<(c|0)?c:h;if((c|0)<=-12){S=i;return}j=c+11|0;hd(d|0,0,(((j|0)>0?j:0)<<3)+8|0)|0;S=i;return}function ha(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,I=0,J=0;J=S;S=S+112|0;D=J+80|0;j=J+72|0;E=J;F=J+56|0;k=a+8|0;I=Wc((b[k>>2]<<5)+32|0)|0;if(!I)H(22848,22448,800,22456);wc(a,I);g=a;e=b[g+4>>2]|0;i=j;b[i>>2]=b[g>>2];b[i+4>>2]=e;vc(j,D);i=ya(D,c)|0;e=b[j>>2]|0;g=b[k>>2]|0;if((g|0)>0){h=b[a+12>>2]|0;f=0;do{e=(b[h+(f<<3)>>2]|0)+e|0;f=f+1|0}while((f|0)!=(g|0))}i=(i|0)<(e|0)?e:i;C=i+12|0;f=Yc(C,8)|0;l=Yc(C,8)|0;b[D>>2]=0;A=a;B=b[A+4>>2]|0;e=j;b[e>>2]=b[A>>2];b[e+4>>2]=B;e=ia(j,C,c,D,f,l)|0;if(e|0){Xc(f);Xc(l);Xc(I);I=e;S=J;return I|0}a:do if((b[k>>2]|0)>0){g=a+12|0;e=0;while(1){h=ia((b[g>>2]|0)+(e<<3)|0,C,c,D,f,l)|0;e=e+1|0;if(h|0)break;if((e|0)>=(b[k>>2]|0))break a}Xc(f);Xc(l);Xc(I);I=h;S=J;return I|0}while(0);if((i|0)>-12)hd(l|0,0,((C|0)>1?C:1)<<3|0)|0;b:do if((b[D>>2]|0)>0){B=((C|0)<0)<<31>>31;v=f;w=l;x=f;y=f;z=l;A=f;e=f;r=f;s=l;t=l;u=l;f=l;c:while(1){q=b[D>>2]|0;o=0;p=0;g=0;while(1){h=E;i=h+56|0;do{b[h>>2]=0;h=h+4|0}while((h|0)<(i|0));c=v+(o<<3)|0;j=b[c>>2]|0;c=b[c+4>>2]|0;if(ba(j,c,1,E,0)|0){h=E;i=h+56|0;do{b[h>>2]=0;h=h+4|0}while((h|0)<(i|0));h=Yc(7,4)|0;if(h|0){ca(j,c,1,E,h,7,0);Xc(h)}}n=0;do{m=E+(n<<3)|0;l=b[m>>2]|0;m=b[m+4>>2]|0;d:do if(!((l|0)==0&(m|0)==0)){j=bd(l|0,m|0,C|0,B|0)|0;G()|0;h=d+(j<<3)|0;i=h;c=b[i>>2]|0;i=b[i+4>>2]|0;if(!((c|0)==0&(i|0)==0)){k=0;while(1){if((k|0)>(C|0))break c;if((c|0)==(l|0)&(i|0)==(m|0))break d;j=(j+1|0)%(C|0)|0;h=d+(j<<3)|0;i=h;c=b[i>>2]|0;i=b[i+4>>2]|0;if((c|0)==0&(i|0)==0)break;else k=k+1|0}}if(!((l|0)==0&(m|0)==0)){Vb(l,m,F);if(xc(a,I,F)|0){k=h;b[k>>2]=l;b[k+4>>2]=m;k=w+(g<<3)|0;b[k>>2]=l;b[k+4>>2]=m;g=g+1|0}}}while(0);n=n+1|0}while(n>>>0<7);p=p+1|0;if((p|0)>=(q|0))break;else o=o+1|0}if((q|0)>0)hd(x|0,0,q<<3|0)|0;b[D>>2]=g;if((g|0)>0){l=f;m=u;n=A;o=t;p=s;q=w;f=r;u=e;t=y;s=x;r=l;e=m;A=z;z=n;y=o;x=p;w=v;v=q}else break b}Xc(y);Xc(z);Xc(I);I=-1;S=J;return I|0}else e=l;while(0);Xc(I);Xc(f);Xc(e);I=0;S=J;return I|0}function ia(a,c,d,f,g,h){a=a|0;c=c|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0;C=S;S=S+48|0;y=C+32|0;z=C+16|0;A=C;i=b[a>>2]|0;if((i|0)<=0){B=0;S=C;return B|0}t=a+4|0;u=y+8|0;v=z+8|0;w=A+8|0;x=((c|0)<0)<<31>>31;s=0;a:while(1){j=b[t>>2]|0;q=j+(s<<4)|0;b[y>>2]=b[q>>2];b[y+4>>2]=b[q+4>>2];b[y+8>>2]=b[q+8>>2];b[y+12>>2]=b[q+12>>2];if((s|0)==(i+-1|0)){b[z>>2]=b[j>>2];b[z+4>>2]=b[j+4>>2];b[z+8>>2]=b[j+8>>2];b[z+12>>2]=b[j+12>>2]}else{q=j+(s+1<<4)|0;b[z>>2]=b[q>>2];b[z+4>>2]=b[q+4>>2];b[z+8>>2]=b[q+8>>2];b[z+12>>2]=b[q+12>>2]}q=za(y,z,d)|0;b:do if((q|0)>0){r=+(q|0);p=0;c:while(1){E=+(q-p|0);D=+(p|0);e[A>>3]=+e[y>>3]*E/r+ +e[z>>3]*D/r;e[w>>3]=+e[u>>3]*E/r+ +e[v>>3]*D/r;n=Sb(A,d)|0;o=G()|0;j=bd(n|0,o|0,c|0,x|0)|0;G()|0;i=h+(j<<3)|0;k=i;l=b[k>>2]|0;k=b[k+4>>2]|0;d:do if((l|0)==0&(k|0)==0)B=14;else{m=0;while(1){if((m|0)>(c|0)){i=1;break d}if((l|0)==(n|0)&(k|0)==(o|0)){i=7;break d}j=(j+1|0)%(c|0)|0;i=h+(j<<3)|0;k=i;l=b[k>>2]|0;k=b[k+4>>2]|0;if((l|0)==0&(k|0)==0){B=14;break}else m=m+1|0}}while(0);if((B|0)==14){B=0;if((n|0)==0&(o|0)==0)i=7;else{b[i>>2]=n;b[i+4>>2]=o;i=b[f>>2]|0;m=g+(i<<3)|0;b[m>>2]=n;b[m+4>>2]=o;b[f>>2]=i+1;i=0}}switch(i&7){case 7:case 0:break;default:break c}p=p+1|0;if((q|0)<=(p|0)){B=8;break b}}if(i|0){i=-1;B=20;break a}}else B=8;while(0);if((B|0)==8)B=0;s=s+1|0;i=b[a>>2]|0;if((s|0)>=(i|0)){i=0;B=20;break}}if((B|0)==20){S=C;return i|0}return 0}function ja(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=S;S=S+176|0;j=k;if((c|0)<1){Mc(d,0,0);S=k;return}h=a;h=cd(b[h>>2]|0,b[h+4>>2]|0,52)|0;G()|0;Mc(d,(c|0)>6?c:6,h&15);h=0;do{e=a+(h<<3)|0;Wb(b[e>>2]|0,b[e+4>>2]|0,j);e=b[j>>2]|0;if((e|0)>0){i=0;do{g=j+8+(i<<4)|0;i=i+1|0;e=j+8+(((i|0)%(e|0)|0)<<4)|0;f=Rc(d,e,g)|0;if(!f)Qc(d,g,e)|0;else Pc(d,f)|0;e=b[j>>2]|0}while((i|0)<(e|0))}h=h+1|0}while((h|0)!=(c|0));S=k;return}function ka(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;g=S;S=S+32|0;e=g;f=g+16|0;ja(a,c,f);b[d>>2]=0;b[d+4>>2]=0;b[d+8>>2]=0;a=Oc(f)|0;if(!a){kc(d)|0;Nc(f);S=g;return}do{c=hc(d)|0;do{ic(c,a)|0;h=a+16|0;b[e>>2]=b[h>>2];b[e+4>>2]=b[h+4>>2];b[e+8>>2]=b[h+8>>2];b[e+12>>2]=b[h+12>>2];Pc(f,a)|0;a=Sc(f,e)|0}while((a|0)!=0);a=Oc(f)|0}while((a|0)!=0);kc(d)|0;Nc(f);S=g;return}function la(a){a=a|0;return b[7728+(a*28|0)+16>>2]|0}function ma(a){a=a|0;return (a|0)==4|(a|0)==117|0}function na(a){a=a|0;return b[11152+((b[a>>2]|0)*216|0)+((b[a+4>>2]|0)*72|0)+((b[a+8>>2]|0)*24|0)+(b[a+12>>2]<<3)>>2]|0}function oa(a){a=a|0;return b[11152+((b[a>>2]|0)*216|0)+((b[a+4>>2]|0)*72|0)+((b[a+8>>2]|0)*24|0)+(b[a+12>>2]<<3)+4>>2]|0}function pa(a,c){a=a|0;c=c|0;a=7728+(a*28|0)|0;b[c>>2]=b[a>>2];b[c+4>>2]=b[a+4>>2];b[c+8>>2]=b[a+8>>2];b[c+12>>2]=b[a+12>>2];return}function qa(a,c){a=a|0;c=c|0;var d=0,e=0;if(c>>>0>20){c=-1;return c|0}do if((b[11152+(c*216|0)>>2]|0)!=(a|0))if((b[11152+(c*216|0)+8>>2]|0)!=(a|0))if((b[11152+(c*216|0)+16>>2]|0)!=(a|0))if((b[11152+(c*216|0)+24>>2]|0)!=(a|0))if((b[11152+(c*216|0)+32>>2]|0)!=(a|0))if((b[11152+(c*216|0)+40>>2]|0)!=(a|0))if((b[11152+(c*216|0)+48>>2]|0)!=(a|0))if((b[11152+(c*216|0)+56>>2]|0)!=(a|0))if((b[11152+(c*216|0)+64>>2]|0)!=(a|0))if((b[11152+(c*216|0)+72>>2]|0)!=(a|0))if((b[11152+(c*216|0)+80>>2]|0)!=(a|0))if((b[11152+(c*216|0)+88>>2]|0)!=(a|0))if((b[11152+(c*216|0)+96>>2]|0)!=(a|0))if((b[11152+(c*216|0)+104>>2]|0)!=(a|0))if((b[11152+(c*216|0)+112>>2]|0)!=(a|0))if((b[11152+(c*216|0)+120>>2]|0)!=(a|0))if((b[11152+(c*216|0)+128>>2]|0)!=(a|0))if((b[11152+(c*216|0)+136>>2]|0)==(a|0)){a=2;d=1;e=2}else{if((b[11152+(c*216|0)+144>>2]|0)==(a|0)){a=0;d=2;e=0;break}if((b[11152+(c*216|0)+152>>2]|0)==(a|0)){a=0;d=2;e=1;break}if((b[11152+(c*216|0)+160>>2]|0)==(a|0)){a=0;d=2;e=2;break}if((b[11152+(c*216|0)+168>>2]|0)==(a|0)){a=1;d=2;e=0;break}if((b[11152+(c*216|0)+176>>2]|0)==(a|0)){a=1;d=2;e=1;break}if((b[11152+(c*216|0)+184>>2]|0)==(a|0)){a=1;d=2;e=2;break}if((b[11152+(c*216|0)+192>>2]|0)==(a|0)){a=2;d=2;e=0;break}if((b[11152+(c*216|0)+200>>2]|0)==(a|0)){a=2;d=2;e=1;break}if((b[11152+(c*216|0)+208>>2]|0)==(a|0)){a=2;d=2;e=2;break}else a=-1;return a|0}else{a=2;d=1;e=1}else{a=2;d=1;e=0}else{a=1;d=1;e=2}else{a=1;d=1;e=1}else{a=1;d=1;e=0}else{a=0;d=1;e=2}else{a=0;d=1;e=1}else{a=0;d=1;e=0}else{a=2;d=0;e=2}else{a=2;d=0;e=1}else{a=2;d=0;e=0}else{a=1;d=0;e=2}else{a=1;d=0;e=1}else{a=1;d=0;e=0}else{a=0;d=0;e=2}else{a=0;d=0;e=1}else{a=0;d=0;e=0}while(0);c=b[11152+(c*216|0)+(d*72|0)+(a*24|0)+(e<<3)+4>>2]|0;return c|0}function ra(a,c){a=a|0;c=c|0;if((b[7728+(a*28|0)+20>>2]|0)==(c|0)){c=1;return c|0}c=(b[7728+(a*28|0)+24>>2]|0)==(c|0);return c|0}function sa(a,c){a=a|0;c=c|0;return b[880+(a*28|0)+(c<<2)>>2]|0}function ta(a,c){a=a|0;c=c|0;if((b[880+(a*28|0)>>2]|0)==(c|0)){c=0;return c|0}if((b[880+(a*28|0)+4>>2]|0)==(c|0)){c=1;return c|0}if((b[880+(a*28|0)+8>>2]|0)==(c|0)){c=2;return c|0}if((b[880+(a*28|0)+12>>2]|0)==(c|0)){c=3;return c|0}if((b[880+(a*28|0)+16>>2]|0)==(c|0)){c=4;return c|0}if((b[880+(a*28|0)+20>>2]|0)==(c|0)){c=5;return c|0}else return ((b[880+(a*28|0)+24>>2]|0)==(c|0)?6:7)|0;return 0}function ua(){return 122}function va(a){a=a|0;var c=0,d=0,e=0;c=0;do{dd(c|0,0,45)|0;e=G()|0|134225919;d=a+(c<<3)|0;b[d>>2]=-1;b[d+4>>2]=e;c=c+1|0}while((c|0)!=122);return}function wa(a){a=a|0;return +e[a+16>>3]<+e[a+24>>3]|0}function xa(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,f=0.0;c=+e[b>>3];if(!(c>=+e[a+8>>3])){b=0;return b|0}if(!(c<=+e[a>>3])){b=0;return b|0}d=+e[a+16>>3];c=+e[a+24>>3];f=+e[b+8>>3];b=f>=c;a=f<=d&1;if(d>2]=0;h=h+4|0}while((h|0)<(j|0));_b(c,g);h=g;j=b[h>>2]|0;h=b[h+4>>2]|0;Vb(j,h,d);Wb(j,h,f);k=+jb(d,f+8|0);e[d>>3]=+e[a>>3];h=d+8|0;e[h>>3]=+e[a+16>>3];e[f>>3]=+e[a+8>>3];j=f+8|0;e[j>>3]=+e[a+24>>3];l=+jb(d,f);j=~~+A(+(l*l/+ed(+(+q(+((+e[h>>3]-+e[j>>3])/(+e[d>>3]-+e[f>>3])))),3.0)/(k*(k*2.59807621135)*.8)));S=i;return ((j|0)==0?1:j)|0}function za(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0.0;i=S;S=S+288|0;e=i+264|0;f=i+96|0;g=i;h=g;j=h+96|0;do{b[h>>2]=0;h=h+4|0}while((h|0)<(j|0));_b(d,g);j=g;h=b[j>>2]|0;j=b[j+4>>2]|0;Vb(h,j,e);Wb(h,j,f);k=+jb(e,f+8|0);j=~~+A(+(+jb(a,c)/(k*2.0)));S=i;return ((j|0)==0?1:j)|0}function Aa(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;b[a>>2]=c;b[a+4>>2]=d;b[a+8>>2]=e;return}function Ba(a,c){a=a|0;c=c|0;var d=0,f=0,g=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0,o=0.0;n=c+8|0;b[n>>2]=0;k=+e[a>>3];i=+q(+k);l=+e[a+8>>3];j=+q(+l)/.8660254037844386;i=i+j*.5;d=~~i;a=~~j;i=i-+(d|0);j=j-+(a|0);do if(i<.5)if(i<.3333333333333333){b[c>>2]=d;if(j<(i+1.0)*.5){b[c+4>>2]=a;break}else{a=a+1|0;b[c+4>>2]=a;break}}else{o=1.0-i;a=(!(j>2]=a;if(o<=j&j>2]=d;break}else{b[c>>2]=d;break}}else{if(!(i<.6666666666666666)){d=d+1|0;b[c>>2]=d;if(j>2]=a;break}else{a=a+1|0;b[c+4>>2]=a;break}}if(j<1.0-i){b[c+4>>2]=a;if(i*2.0+-1.0>2]=d;break}}else{a=a+1|0;b[c+4>>2]=a}d=d+1|0;b[c>>2]=d}while(0);do if(k<0.0)if(!(a&1)){m=(a|0)/2|0;m=_c(d|0,((d|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0;d=~~(+(d|0)-(+(m>>>0)+4294967296.0*+(G()|0))*2.0);b[c>>2]=d;break}else{m=(a+1|0)/2|0;m=_c(d|0,((d|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0;d=~~(+(d|0)-((+(m>>>0)+4294967296.0*+(G()|0))*2.0+1.0));b[c>>2]=d;break}while(0);m=c+4|0;if(l<0.0){d=d-((a<<1|1|0)/2|0)|0;b[c>>2]=d;a=0-a|0;b[m>>2]=a}f=a-d|0;if((d|0)<0){g=0-d|0;b[m>>2]=f;b[n>>2]=g;b[c>>2]=0;a=f;d=0}else g=0;if((a|0)<0){d=d-a|0;b[c>>2]=d;g=g-a|0;b[n>>2]=g;b[m>>2]=0;a=0}h=d-g|0;f=a-g|0;if((g|0)<0){b[c>>2]=h;b[m>>2]=f;b[n>>2]=0;a=f;d=h;g=0}f=(a|0)<(d|0)?a:d;f=(g|0)<(f|0)?g:f;if((f|0)<=0)return;b[c>>2]=d-f;b[m>>2]=a-f;b[n>>2]=g-f;return}function Ca(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=b[a>>2]|0;h=a+4|0;d=b[h>>2]|0;if((c|0)<0){d=d-c|0;b[h>>2]=d;g=a+8|0;b[g>>2]=(b[g>>2]|0)-c;b[a>>2]=0;c=0}if((d|0)<0){c=c-d|0;b[a>>2]=c;g=a+8|0;f=(b[g>>2]|0)-d|0;b[g>>2]=f;b[h>>2]=0;d=0}else{f=a+8|0;g=f;f=b[f>>2]|0}if((f|0)<0){c=c-f|0;b[a>>2]=c;d=d-f|0;b[h>>2]=d;b[g>>2]=0;f=0}e=(d|0)<(c|0)?d:c;e=(f|0)<(e|0)?f:e;if((e|0)<=0)return;b[a>>2]=c-e;b[h>>2]=d-e;b[g>>2]=f-e;return}function Da(a,c){a=a|0;c=c|0;var d=0.0,f=0;f=b[a+8>>2]|0;d=+((b[a+4>>2]|0)-f|0);e[c>>3]=+((b[a>>2]|0)-f|0)-d*.5;e[c+8>>3]=d*.8660254037844386;return}function Ea(a,c,d){a=a|0;c=c|0;d=d|0;b[d>>2]=(b[c>>2]|0)+(b[a>>2]|0);b[d+4>>2]=(b[c+4>>2]|0)+(b[a+4>>2]|0);b[d+8>>2]=(b[c+8>>2]|0)+(b[a+8>>2]|0);return}function Fa(a,c,d){a=a|0;c=c|0;d=d|0;b[d>>2]=(b[a>>2]|0)-(b[c>>2]|0);b[d+4>>2]=(b[a+4>>2]|0)-(b[c+4>>2]|0);b[d+8>>2]=(b[a+8>>2]|0)-(b[c+8>>2]|0);return}function Ga(a,c){a=a|0;c=c|0;var d=0,e=0;d=B(b[a>>2]|0,c)|0;b[a>>2]=d;d=a+4|0;e=B(b[d>>2]|0,c)|0;b[d>>2]=e;a=a+8|0;c=B(b[a>>2]|0,c)|0;b[a>>2]=c;return}function Ha(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=b[a>>2]|0;i=(h|0)<0;e=(b[a+4>>2]|0)-(i?h:0)|0;g=(e|0)<0;f=(g?0-e|0:0)+((b[a+8>>2]|0)-(i?h:0))|0;d=(f|0)<0;a=d?0:f;c=(g?0:e)-(d?f:0)|0;f=(i?0:h)-(g?e:0)-(d?f:0)|0;d=(c|0)<(f|0)?c:f;d=(a|0)<(d|0)?a:d;e=(d|0)>0;a=a-(e?d:0)|0;c=c-(e?d:0)|0;a:do switch(f-(e?d:0)|0){case 0:switch(c|0){case 0:{i=(a|0)==0?0:(a|0)==1?1:7;return i|0}case 1:{i=(a|0)==0?2:(a|0)==1?3:7;return i|0}default:break a}case 1:switch(c|0){case 0:{i=(a|0)==0?4:(a|0)==1?5:7;return i|0}case 1:{if(!a)a=6;else break a;return a|0}default:break a}default:{}}while(0);i=7;return i|0}function Ia(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;d=b[h>>2]|0;c=(b[a>>2]|0)-d|0;i=a+4|0;d=(b[i>>2]|0)-d|0;e=Vc(+((c*3|0)-d|0)/7.0)|0;b[a>>2]=e;c=Vc(+((d<<1)+c|0)/7.0)|0;b[i>>2]=c;b[h>>2]=0;d=c-e|0;if((e|0)<0){g=0-e|0;b[i>>2]=d;b[h>>2]=g;b[a>>2]=0;c=d;e=0;d=g}else d=0;if((c|0)<0){e=e-c|0;b[a>>2]=e;d=d-c|0;b[h>>2]=d;b[i>>2]=0;c=0}g=e-d|0;f=c-d|0;if((d|0)<0){b[a>>2]=g;b[i>>2]=f;b[h>>2]=0;c=f;f=g;d=0}else f=e;e=(c|0)<(f|0)?c:f;e=(d|0)<(e|0)?d:e;if((e|0)<=0)return;b[a>>2]=f-e;b[i>>2]=c-e;b[h>>2]=d-e;return}function Ja(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;d=b[h>>2]|0;c=(b[a>>2]|0)-d|0;i=a+4|0;d=(b[i>>2]|0)-d|0;e=Vc(+((c<<1)+d|0)/7.0)|0;b[a>>2]=e;c=Vc(+((d*3|0)-c|0)/7.0)|0;b[i>>2]=c;b[h>>2]=0;d=c-e|0;if((e|0)<0){g=0-e|0;b[i>>2]=d;b[h>>2]=g;b[a>>2]=0;c=d;e=0;d=g}else d=0;if((c|0)<0){e=e-c|0;b[a>>2]=e;d=d-c|0;b[h>>2]=d;b[i>>2]=0;c=0}g=e-d|0;f=c-d|0;if((d|0)<0){b[a>>2]=g;b[i>>2]=f;b[h>>2]=0;c=f;f=g;d=0}else f=e;e=(c|0)<(f|0)?c:f;e=(d|0)<(e|0)?d:e;if((e|0)<=0)return;b[a>>2]=f-e;b[i>>2]=c-e;b[h>>2]=d-e;return}function Ka(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b[a>>2]|0;h=a+4|0;d=b[h>>2]|0;i=a+8|0;e=b[i>>2]|0;f=d+(c*3|0)|0;b[a>>2]=f;d=e+(d*3|0)|0;b[h>>2]=d;c=(e*3|0)+c|0;b[i>>2]=c;e=d-f|0;if((f|0)<0){c=c-f|0;b[h>>2]=e;b[i>>2]=c;b[a>>2]=0;d=e;e=0}else e=f;if((d|0)<0){e=e-d|0;b[a>>2]=e;c=c-d|0;b[i>>2]=c;b[h>>2]=0;d=0}g=e-c|0;f=d-c|0;if((c|0)<0){b[a>>2]=g;b[h>>2]=f;b[i>>2]=0;e=g;c=0}else f=d;d=(f|0)<(e|0)?f:e;d=(c|0)<(d|0)?c:d;if((d|0)<=0)return;b[a>>2]=e-d;b[h>>2]=f-d;b[i>>2]=c-d;return}function La(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=b[a>>2]|0;h=a+4|0;c=b[h>>2]|0;i=a+8|0;d=b[i>>2]|0;e=(c*3|0)+f|0;f=d+(f*3|0)|0;b[a>>2]=f;b[h>>2]=e;c=(d*3|0)+c|0;b[i>>2]=c;d=e-f|0;if((f|0)<0){c=c-f|0;b[h>>2]=d;b[i>>2]=c;b[a>>2]=0;f=0}else d=e;if((d|0)<0){f=f-d|0;b[a>>2]=f;c=c-d|0;b[i>>2]=c;b[h>>2]=0;d=0}g=f-c|0;e=d-c|0;if((c|0)<0){b[a>>2]=g;b[h>>2]=e;b[i>>2]=0;f=g;c=0}else e=d;d=(e|0)<(f|0)?e:f;d=(c|0)<(d|0)?c:d;if((d|0)<=0)return;b[a>>2]=f-d;b[h>>2]=e-d;b[i>>2]=c-d;return}function Ma(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;if((c+-1|0)>>>0>=6)return;f=(b[15472+(c*12|0)>>2]|0)+(b[a>>2]|0)|0;b[a>>2]=f;i=a+4|0;e=(b[15472+(c*12|0)+4>>2]|0)+(b[i>>2]|0)|0;b[i>>2]=e;h=a+8|0;c=(b[15472+(c*12|0)+8>>2]|0)+(b[h>>2]|0)|0;b[h>>2]=c;d=e-f|0;if((f|0)<0){c=c-f|0;b[i>>2]=d;b[h>>2]=c;b[a>>2]=0;e=0}else{d=e;e=f}if((d|0)<0){e=e-d|0;b[a>>2]=e;c=c-d|0;b[h>>2]=c;b[i>>2]=0;d=0}g=e-c|0;f=d-c|0;if((c|0)<0){b[a>>2]=g;b[i>>2]=f;b[h>>2]=0;e=g;c=0}else f=d;d=(f|0)<(e|0)?f:e;d=(c|0)<(d|0)?c:d;if((d|0)<=0)return;b[a>>2]=e-d;b[i>>2]=f-d;b[h>>2]=c-d;return}function Na(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=b[a>>2]|0;h=a+4|0;c=b[h>>2]|0;i=a+8|0;d=b[i>>2]|0;e=c+f|0;f=d+f|0;b[a>>2]=f;b[h>>2]=e;c=d+c|0;b[i>>2]=c;d=e-f|0;if((f|0)<0){c=c-f|0;b[h>>2]=d;b[i>>2]=c;b[a>>2]=0;e=0}else{d=e;e=f}if((d|0)<0){e=e-d|0;b[a>>2]=e;c=c-d|0;b[i>>2]=c;b[h>>2]=0;d=0}g=e-c|0;f=d-c|0;if((c|0)<0){b[a>>2]=g;b[h>>2]=f;b[i>>2]=0;e=g;c=0}else f=d;d=(f|0)<(e|0)?f:e;d=(c|0)<(d|0)?c:d;if((d|0)<=0)return;b[a>>2]=e-d;b[h>>2]=f-d;b[i>>2]=c-d;return}function Oa(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b[a>>2]|0;h=a+4|0;e=b[h>>2]|0;i=a+8|0;d=b[i>>2]|0;f=e+c|0;b[a>>2]=f;e=d+e|0;b[h>>2]=e;c=d+c|0;b[i>>2]=c;d=e-f|0;if((f|0)<0){c=c-f|0;b[h>>2]=d;b[i>>2]=c;b[a>>2]=0;e=0}else{d=e;e=f}if((d|0)<0){e=e-d|0;b[a>>2]=e;c=c-d|0;b[i>>2]=c;b[h>>2]=0;d=0}g=e-c|0;f=d-c|0;if((c|0)<0){b[a>>2]=g;b[h>>2]=f;b[i>>2]=0;e=g;c=0}else f=d;d=(f|0)<(e|0)?f:e;d=(c|0)<(d|0)?c:d;if((d|0)<=0)return;b[a>>2]=e-d;b[h>>2]=f-d;b[i>>2]=c-d;return}function Pa(a){a=a|0;switch(a|0){case 1:{a=5;break}case 5:{a=4;break}case 4:{a=6;break}case 6:{a=2;break}case 2:{a=3;break}case 3:{a=1;break}default:{}}return a|0}function Qa(a){a=a|0;switch(a|0){case 1:{a=3;break}case 3:{a=2;break}case 2:{a=6;break}case 6:{a=4;break}case 4:{a=5;break}case 5:{a=1;break}default:{}}return a|0}function Ra(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b[a>>2]|0;h=a+4|0;d=b[h>>2]|0;i=a+8|0;e=b[i>>2]|0;f=d+(c<<1)|0;b[a>>2]=f;d=e+(d<<1)|0;b[h>>2]=d;c=(e<<1)+c|0;b[i>>2]=c;e=d-f|0;if((f|0)<0){c=c-f|0;b[h>>2]=e;b[i>>2]=c;b[a>>2]=0;d=e;e=0}else e=f;if((d|0)<0){e=e-d|0;b[a>>2]=e;c=c-d|0;b[i>>2]=c;b[h>>2]=0;d=0}g=e-c|0;f=d-c|0;if((c|0)<0){b[a>>2]=g;b[h>>2]=f;b[i>>2]=0;e=g;c=0}else f=d;d=(f|0)<(e|0)?f:e;d=(c|0)<(d|0)?c:d;if((d|0)<=0)return;b[a>>2]=e-d;b[h>>2]=f-d;b[i>>2]=c-d;return}function Sa(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=b[a>>2]|0;h=a+4|0;c=b[h>>2]|0;i=a+8|0;d=b[i>>2]|0;e=(c<<1)+f|0;f=d+(f<<1)|0;b[a>>2]=f;b[h>>2]=e;c=(d<<1)+c|0;b[i>>2]=c;d=e-f|0;if((f|0)<0){c=c-f|0;b[h>>2]=d;b[i>>2]=c;b[a>>2]=0;f=0}else d=e;if((d|0)<0){f=f-d|0;b[a>>2]=f;c=c-d|0;b[i>>2]=c;b[h>>2]=0;d=0}g=f-c|0;e=d-c|0;if((c|0)<0){b[a>>2]=g;b[h>>2]=e;b[i>>2]=0;f=g;c=0}else e=d;d=(e|0)<(f|0)?e:f;d=(c|0)<(d|0)?c:d;if((d|0)<=0)return;b[a>>2]=f-d;b[h>>2]=e-d;b[i>>2]=c-d;return}function Ta(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=(b[a>>2]|0)-(b[c>>2]|0)|0;i=(h|0)<0;e=(b[a+4>>2]|0)-(b[c+4>>2]|0)-(i?h:0)|0;g=(e|0)<0;f=(i?0-h|0:0)+(b[a+8>>2]|0)-(b[c+8>>2]|0)+(g?0-e|0:0)|0;a=(f|0)<0;c=a?0:f;d=(g?0:e)-(a?f:0)|0;f=(i?0:h)-(g?e:0)-(a?f:0)|0;a=(d|0)<(f|0)?d:f;a=(c|0)<(a|0)?c:a;e=(a|0)>0;c=c-(e?a:0)|0;d=d-(e?a:0)|0;a=f-(e?a:0)|0;a=(a|0)>-1?a:0-a|0;d=(d|0)>-1?d:0-d|0;c=(c|0)>-1?c:0-c|0;c=(d|0)>(c|0)?d:c;return ((a|0)>(c|0)?a:c)|0}function Ua(a,c){a=a|0;c=c|0;var d=0;d=b[a+8>>2]|0;b[c>>2]=(b[a>>2]|0)-d;b[c+4>>2]=(b[a+4>>2]|0)-d;return}function Va(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=b[a>>2]|0;b[c>>2]=e;a=b[a+4>>2]|0;h=c+4|0;b[h>>2]=a;i=c+8|0;b[i>>2]=0;d=a-e|0;if((e|0)<0){a=0-e|0;b[h>>2]=d;b[i>>2]=a;b[c>>2]=0;e=0}else{d=a;a=0}if((d|0)<0){e=e-d|0;b[c>>2]=e;a=a-d|0;b[i>>2]=a;b[h>>2]=0;d=0}g=e-a|0;f=d-a|0;if((a|0)<0){b[c>>2]=g;b[h>>2]=f;b[i>>2]=0;d=f;f=g;a=0}else f=e;e=(d|0)<(f|0)?d:f;e=(a|0)<(e|0)?a:e;if((e|0)<=0)return;b[c>>2]=f-e;b[h>>2]=d-e;b[i>>2]=a-e;return}function Wa(a){a=a|0;var c=0,d=0,e=0,f=0;c=a+8|0;f=b[c>>2]|0;d=f-(b[a>>2]|0)|0;b[a>>2]=d;e=a+4|0;a=(b[e>>2]|0)-f|0;b[e>>2]=a;b[c>>2]=0-(a+d);return}function Xa(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=b[a>>2]|0;c=0-d|0;b[a>>2]=c;h=a+8|0;b[h>>2]=0;i=a+4|0;e=b[i>>2]|0;f=e+d|0;if((d|0)>0){b[i>>2]=f;b[h>>2]=d;b[a>>2]=0;c=0;e=f}else d=0;if((e|0)<0){g=c-e|0;b[a>>2]=g;d=d-e|0;b[h>>2]=d;b[i>>2]=0;f=g-d|0;c=0-d|0;if((d|0)<0){b[a>>2]=f;b[i>>2]=c;b[h>>2]=0;e=c;d=0}else{e=0;f=g}}else f=c;c=(e|0)<(f|0)?e:f;c=(d|0)<(c|0)?d:c;if((c|0)<=0)return;b[a>>2]=f-c;b[i>>2]=e-c;b[h>>2]=d-c;return}function Ya(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=S;S=S+16|0;e=d;Za(a,b,c,e);Ba(e,c+4|0);S=d;return}function Za(a,c,d,f){a=a|0;c=c|0;d=d|0;f=f|0;var g=0.0,h=0,i=0.0,j=0.0,k=0;k=S;S=S+32|0;h=k;Jc(a,h);b[d>>2]=0;g=+Ic(15888,h);i=+Ic(15912,h);if(i>2]=1;g=i}i=+Ic(15936,h);if(i>2]=2;g=i}i=+Ic(15960,h);if(i>2]=3;g=i}i=+Ic(15984,h);if(i>2]=4;g=i}i=+Ic(16008,h);if(i>2]=5;g=i}i=+Ic(16032,h);if(i>2]=6;g=i}i=+Ic(16056,h);if(i>2]=7;g=i}i=+Ic(16080,h);if(i>2]=8;g=i}i=+Ic(16104,h);if(i>2]=9;g=i}i=+Ic(16128,h);if(i>2]=10;g=i}i=+Ic(16152,h);if(i>2]=11;g=i}i=+Ic(16176,h);if(i>2]=12;g=i}i=+Ic(16200,h);if(i>2]=13;g=i}i=+Ic(16224,h);if(i>2]=14;g=i}i=+Ic(16248,h);if(i>2]=15;g=i}i=+Ic(16272,h);if(i>2]=16;g=i}i=+Ic(16296,h);if(i>2]=17;g=i}i=+Ic(16320,h);if(i>2]=18;g=i}i=+Ic(16344,h);if(i>2]=19;g=i}i=+w(+(1.0-g*.5));if(i<1.0e-16){b[f>>2]=0;b[f+4>>2]=0;b[f+8>>2]=0;b[f+12>>2]=0;S=k;return}d=b[d>>2]|0;g=+e[16368+(d*24|0)>>3];g=+gb(g-+gb(+lb(15568+(d<<4)|0,a)));if(!(Rb(c)|0))j=g;else j=+gb(g+-.3334731722518321);g=+v(+i)/.381966011250105;if((c|0)>0){h=0;do{g=g*2.6457513110645907;h=h+1|0}while((h|0)!=(c|0))}i=+t(+j)*g;e[f>>3]=i;j=+u(+j)*g;e[f+8>>3]=j;S=k;return}function _a(a,c,d,f,g){a=a|0;c=c|0;d=d|0;f=f|0;g=g|0;var h=0.0,i=0.0;h=+Fc(a);if(h<1.0e-16){c=15568+(c<<4)|0;b[g>>2]=b[c>>2];b[g+4>>2]=b[c+4>>2];b[g+8>>2]=b[c+8>>2];b[g+12>>2]=b[c+12>>2];return}i=+z(+(+e[a+8>>3]),+(+e[a>>3]));if((d|0)>0){a=0;do{h=h/2.6457513110645907;a=a+1|0}while((a|0)!=(d|0))}if(!f){h=+y(+(h*.381966011250105));if(Rb(d)|0)i=+gb(i+.3334731722518321)}else{h=h/3.0;d=(Rb(d)|0)==0;h=+y(+((d?h:h/2.6457513110645907)*.381966011250105))}mb(15568+(c<<4)|0,+gb(+e[16368+(c*24|0)>>3]-i),h,g);return}function $a(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0;e=S;S=S+16|0;f=e;Da(a+4|0,f);_a(f,b[a>>2]|0,c,0,d);S=e;return}function ab(a,c,d,f,g){a=a|0;c=c|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0.0,J=0.0;G=S;S=S+272|0;h=G+256|0;u=G+240|0;D=G;E=G+224|0;F=G+208|0;v=G+176|0;w=G+160|0;x=G+192|0;y=G+144|0;z=G+128|0;A=G+112|0;B=G+96|0;C=G+80|0;b[h>>2]=c;b[u>>2]=b[a>>2];b[u+4>>2]=b[a+4>>2];b[u+8>>2]=b[a+8>>2];b[u+12>>2]=b[a+12>>2];bb(u,h,D);b[g>>2]=0;u=f+d+((f|0)==5&1)|0;if((u|0)<=(d|0)){S=G;return}k=b[h>>2]|0;l=E+4|0;m=v+4|0;n=d+5|0;o=16848+(k<<2)|0;p=16928+(k<<2)|0;q=z+8|0;r=A+8|0;s=B+8|0;t=F+4|0;j=d;a:while(1){i=D+(((j|0)%5|0)<<4)|0;b[F>>2]=b[i>>2];b[F+4>>2]=b[i+4>>2];b[F+8>>2]=b[i+8>>2];b[F+12>>2]=b[i+12>>2];do{}while((cb(F,k,0,1)|0)==2);if((j|0)>(d|0)&(Rb(c)|0)!=0){b[v>>2]=b[F>>2];b[v+4>>2]=b[F+4>>2];b[v+8>>2]=b[F+8>>2];b[v+12>>2]=b[F+12>>2];Da(l,w);f=b[v>>2]|0;h=b[17008+(f*80|0)+(b[E>>2]<<2)>>2]|0;b[v>>2]=b[18608+(f*80|0)+(h*20|0)>>2];i=b[18608+(f*80|0)+(h*20|0)+16>>2]|0;if((i|0)>0){a=0;do{Na(m);a=a+1|0}while((a|0)<(i|0))}i=18608+(f*80|0)+(h*20|0)+4|0;b[x>>2]=b[i>>2];b[x+4>>2]=b[i+4>>2];b[x+8>>2]=b[i+8>>2];Ga(x,(b[o>>2]|0)*3|0);Ea(m,x,m);Ca(m);Da(m,y);I=+(b[p>>2]|0);e[z>>3]=I*3.0;e[q>>3]=0.0;J=I*-1.5;e[A>>3]=J;e[r>>3]=I*2.598076211353316;e[B>>3]=J;e[s>>3]=I*-2.598076211353316;switch(b[17008+((b[v>>2]|0)*80|0)+(b[F>>2]<<2)>>2]|0){case 1:{a=A;f=z;break}case 3:{a=B;f=A;break}case 2:{a=z;f=B;break}default:{a=12;break a}}Gc(w,y,f,a,C);_a(C,b[v>>2]|0,k,1,g+8+(b[g>>2]<<4)|0);b[g>>2]=(b[g>>2]|0)+1}if((j|0)<(n|0)){Da(t,v);_a(v,b[F>>2]|0,k,1,g+8+(b[g>>2]<<4)|0);b[g>>2]=(b[g>>2]|0)+1};b[E>>2]=b[F>>2];b[E+4>>2]=b[F+4>>2];b[E+8>>2]=b[F+8>>2];b[E+12>>2]=b[F+12>>2];j=j+1|0;if((j|0)>=(u|0)){a=3;break}}if((a|0)==3){S=G;return}else if((a|0)==12)H(22474,22521,581,22531)}function bb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=S;S=S+128|0;e=j+64|0;f=j;g=e;h=20208;i=g+60|0;do{b[g>>2]=b[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=f;h=20272;i=g+60|0;do{b[g>>2]=b[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));i=(Rb(b[c>>2]|0)|0)==0;e=i?e:f;f=a+4|0;Ra(f);Sa(f);if(Rb(b[c>>2]|0)|0){La(f);b[c>>2]=(b[c>>2]|0)+1}b[d>>2]=b[a>>2];c=d+4|0;Ea(f,e,c);Ca(c);b[d+16>>2]=b[a>>2];c=d+20|0;Ea(f,e+12|0,c);Ca(c);b[d+32>>2]=b[a>>2];c=d+36|0;Ea(f,e+24|0,c);Ca(c);b[d+48>>2]=b[a>>2];c=d+52|0;Ea(f,e+36|0,c);Ca(c);b[d+64>>2]=b[a>>2];d=d+68|0;Ea(f,e+48|0,d);Ca(d);S=j;return}function cb(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=S;S=S+32|0;n=p+12|0;i=p;o=a+4|0;m=b[16928+(c<<2)>>2]|0;l=(e|0)!=0;m=l?m*3|0:m;f=b[o>>2]|0;k=a+8|0;h=b[k>>2]|0;if(l){g=a+12|0;e=b[g>>2]|0;f=h+f+e|0;if((f|0)==(m|0)){o=1;S=p;return o|0}else j=g}else{j=a+12|0;e=b[j>>2]|0;f=h+f+e|0}if((f|0)<=(m|0)){o=0;S=p;return o|0}do if((e|0)>0){e=b[a>>2]|0;if((h|0)>0){g=18608+(e*80|0)+60|0;e=a;break}e=18608+(e*80|0)+40|0;if(!d){g=e;e=a}else{Aa(n,m,0,0);Fa(o,n,i);Oa(i);Ea(i,n,o);g=e;e=a}}else{g=18608+((b[a>>2]|0)*80|0)+20|0;e=a}while(0);b[e>>2]=b[g>>2];f=g+16|0;if((b[f>>2]|0)>0){e=0;do{Na(o);e=e+1|0}while((e|0)<(b[f>>2]|0))}a=g+4|0;b[n>>2]=b[a>>2];b[n+4>>2]=b[a+4>>2];b[n+8>>2]=b[a+8>>2];c=b[16848+(c<<2)>>2]|0;Ga(n,l?c*3|0:c);Ea(o,n,o);Ca(o);if(l)e=((b[k>>2]|0)+(b[o>>2]|0)+(b[j>>2]|0)|0)==(m|0)?1:2;else e=2;o=e;S=p;return o|0}function db(a,b){a=a|0;b=b|0;var c=0;do c=cb(a,b,0,1)|0;while((c|0)==2);return c|0}function eb(a,c,d,f,g){a=a|0;c=c|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0;B=S;S=S+240|0;h=B+224|0;x=B+208|0;y=B;z=B+192|0;A=B+176|0;s=B+160|0;t=B+144|0;u=B+128|0;v=B+112|0;w=B+96|0;b[h>>2]=c;b[x>>2]=b[a>>2];b[x+4>>2]=b[a+4>>2];b[x+8>>2]=b[a+8>>2];b[x+12>>2]=b[a+12>>2];fb(x,h,y);b[g>>2]=0;r=f+d+((f|0)==6&1)|0;if((r|0)<=(d|0)){S=B;return}k=b[h>>2]|0;l=d+6|0;m=16928+(k<<2)|0;n=t+8|0;o=u+8|0;p=v+8|0;q=z+4|0;i=0;j=d;f=-1;a:while(1){h=(j|0)%6|0;a=y+(h<<4)|0;b[z>>2]=b[a>>2];b[z+4>>2]=b[a+4>>2];b[z+8>>2]=b[a+8>>2];b[z+12>>2]=b[a+12>>2];a=i;i=cb(z,k,0,1)|0;if((j|0)>(d|0)&(Rb(c)|0)!=0?((a|0)!=1?(b[z>>2]|0)!=(f|0):0):0){Da(y+(((h+5|0)%6|0)<<4)+4|0,A);Da(y+(h<<4)+4|0,s);C=+(b[m>>2]|0);e[t>>3]=C*3.0;e[n>>3]=0.0;D=C*-1.5;e[u>>3]=D;e[o>>3]=C*2.598076211353316;e[v>>3]=D;e[p>>3]=C*-2.598076211353316;h=b[x>>2]|0;switch(b[17008+(h*80|0)+(((f|0)==(h|0)?b[z>>2]|0:f)<<2)>>2]|0){case 1:{a=u;f=t;break}case 3:{a=v;f=u;break}case 2:{a=t;f=v;break}default:{a=8;break a}}Gc(A,s,f,a,w);if(!(Hc(A,w)|0)?!(Hc(s,w)|0):0){_a(w,b[x>>2]|0,k,1,g+8+(b[g>>2]<<4)|0);b[g>>2]=(b[g>>2]|0)+1}}if((j|0)<(l|0)){Da(q,A);_a(A,b[z>>2]|0,k,1,g+8+(b[g>>2]<<4)|0);b[g>>2]=(b[g>>2]|0)+1}j=j+1|0;if((j|0)>=(r|0)){a=3;break}else f=b[z>>2]|0}if((a|0)==3){S=B;return}else if((a|0)==8)H(22557,22521,746,22602)}function fb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=S;S=S+160|0;e=j+80|0;f=j;g=e;h=20336;i=g+72|0;do{b[g>>2]=b[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=f;h=20416;i=g+72|0;do{b[g>>2]=b[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));i=(Rb(b[c>>2]|0)|0)==0;e=i?e:f;f=a+4|0;Ra(f);Sa(f);if(Rb(b[c>>2]|0)|0){La(f);b[c>>2]=(b[c>>2]|0)+1}b[d>>2]=b[a>>2];c=d+4|0;Ea(f,e,c);Ca(c);b[d+16>>2]=b[a>>2];c=d+20|0;Ea(f,e+12|0,c);Ca(c);b[d+32>>2]=b[a>>2];c=d+36|0;Ea(f,e+24|0,c);Ca(c);b[d+48>>2]=b[a>>2];c=d+52|0;Ea(f,e+36|0,c);Ca(c);b[d+64>>2]=b[a>>2];c=d+68|0;Ea(f,e+48|0,c);Ca(c);b[d+80>>2]=b[a>>2];d=d+84|0;Ea(f,e+60|0,d);Ca(d);S=j;return}function gb(a){a=+a;var b=0.0;b=a<0.0?a+6.283185307179586:a;return +(!(a>=6.283185307179586)?b:b+-6.283185307179586)}function hb(a,b){a=a|0;b=b|0;if(!(+q(+(+e[a>>3]-+e[b>>3]))<1.7453292519943298e-11)){b=0;return b|0}b=+q(+(+e[a+8>>3]-+e[b+8>>3]))<1.7453292519943298e-11;return b|0}function ib(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,f=0.0,g=0.0;f=+e[b>>3];d=+e[a>>3];g=+u(+((f-d)*.5));c=+u(+((+e[b+8>>3]-+e[a+8>>3])*.5));c=g*g+c*(+t(+f)*+t(+d)*c);return +(+z(+(+r(+c)),+(+r(+(1.0-c))))*2.0)}function jb(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,f=0.0,g=0.0;f=+e[b>>3];d=+e[a>>3];g=+u(+((f-d)*.5));c=+u(+((+e[b+8>>3]-+e[a+8>>3])*.5));c=g*g+c*(+t(+f)*+t(+d)*c);return +(+z(+(+r(+c)),+(+r(+(1.0-c))))*2.0*6371.007180918475)}function kb(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,f=0.0,g=0.0;f=+e[b>>3];d=+e[a>>3];g=+u(+((f-d)*.5));c=+u(+((+e[b+8>>3]-+e[a+8>>3])*.5));c=g*g+c*(+t(+f)*+t(+d)*c);return +(+z(+(+r(+c)),+(+r(+(1.0-c))))*2.0*6371.007180918475*1.0e3)}function lb(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,f=0.0,g=0.0,h=0.0;g=+e[b>>3];d=+t(+g);f=+e[b+8>>3]-+e[a+8>>3];h=d*+u(+f);c=+e[a>>3];return +(+z(+h,+(+u(+g)*+t(+c)-+t(+f)*(d*+u(+c)))))}function mb(a,c,d,f){a=a|0;c=+c;d=+d;f=f|0;var g=0,h=0.0,i=0.0,j=0.0;if(d<1.0e-16){b[f>>2]=b[a>>2];b[f+4>>2]=b[a+4>>2];b[f+8>>2]=b[a+8>>2];b[f+12>>2]=b[a+12>>2];return}h=c<0.0?c+6.283185307179586:c;h=!(c>=6.283185307179586)?h:h+-6.283185307179586;do if(h<1.0e-16){c=+e[a>>3]+d;e[f>>3]=c;g=f}else{g=+q(+(h+-3.141592653589793))<1.0e-16;c=+e[a>>3];if(g){c=c-d;e[f>>3]=c;g=f;break}i=+t(+d);d=+u(+d);c=i*+u(+c)+ +t(+h)*(d*+t(+c));c=c>1.0?1.0:c;c=+x(+(c<-1.0?-1.0:c));e[f>>3]=c;if(+q(+(c+-1.5707963267948966))<1.0e-16){e[f>>3]=1.5707963267948966;e[f+8>>3]=0.0;return}if(+q(+(c+1.5707963267948966))<1.0e-16){e[f>>3]=-1.5707963267948966;e[f+8>>3]=0.0;return}j=+t(+c);h=d*+u(+h)/j;d=+e[a>>3];c=(i-+u(+c)*+u(+d))/+t(+d)/j;i=h>1.0?1.0:h;c=c>1.0?1.0:c;c=+e[a+8>>3]+ +z(+(i<-1.0?-1.0:i),+(c<-1.0?-1.0:c));if(c>3.141592653589793)do c=c+-6.283185307179586;while(c>3.141592653589793);if(c<-3.141592653589793)do c=c+6.283185307179586;while(c<-3.141592653589793);e[f+8>>3]=c;return}while(0);if(+q(+(c+-1.5707963267948966))<1.0e-16){e[g>>3]=1.5707963267948966;e[f+8>>3]=0.0;return}if(+q(+(c+1.5707963267948966))<1.0e-16){e[g>>3]=-1.5707963267948966;e[f+8>>3]=0.0;return}c=+e[a+8>>3];if(c>3.141592653589793)do c=c+-6.283185307179586;while(c>3.141592653589793);if(c<-3.141592653589793)do c=c+6.283185307179586;while(c<-3.141592653589793);e[f+8>>3]=c;return}function nb(a){a=a|0;return +(+e[20496+(a<<3)>>3])}function ob(a){a=a|0;return +(+e[20624+(a<<3)>>3])}function pb(a){a=a|0;return +(+e[20752+(a<<3)>>3])}function qb(a){a=a|0;return +(+e[20880+(a<<3)>>3])}function rb(a){a=a|0;var c=0;c=21008+(a<<3)|0;a=b[c>>2]|0;F(b[c+4>>2]|0);return a|0}function sb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;n=+e[b>>3];l=+e[a>>3];j=+u(+((n-l)*.5));g=+e[b+8>>3];k=+e[a+8>>3];h=+u(+((g-k)*.5));i=+t(+l);m=+t(+n);h=j*j+h*(m*i*h);h=+z(+(+r(+h)),+(+r(+(1.0-h))))*2.0;j=+e[c>>3];n=+u(+((j-n)*.5));d=+e[c+8>>3];g=+u(+((d-g)*.5));f=+t(+j);g=n*n+g*(m*f*g);g=+z(+(+r(+g)),+(+r(+(1.0-g))))*2.0;j=+u(+((l-j)*.5));d=+u(+((k-d)*.5));d=j*j+d*(i*f*d);d=+z(+(+r(+d)),+(+r(+(1.0-d))))*2.0;f=(h+g+d)*.5;return +(+y(+(+r(+(+v(+(f*.5))*+v(+((f-h)*.5))*+v(+((f-g)*.5))*+v(+((f-d)*.5))))))*4.0)}function tb(a,c){a=a|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0;g=S;S=S+192|0;e=g+168|0;f=g;Vb(a,c,e);Wb(a,c,f);c=b[f>>2]|0;if((c|0)<=0){d=0.0;S=g;return +d}d=+sb(f+8|0,f+8+(((c|0)!=1&1)<<4)|0,e)+0.0;if((c|0)==1){S=g;return +d}a=1;do{h=a;a=a+1|0;d=d+ +sb(f+8+(h<<4)|0,f+8+(((a|0)%(c|0)|0)<<4)|0,e)}while((a|0)<(c|0));S=g;return +d}function ub(a,c){a=a|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0;g=S;S=S+192|0;e=g+168|0;f=g;Vb(a,c,e);Wb(a,c,f);c=b[f>>2]|0;if((c|0)>0){d=+sb(f+8|0,f+8+(((c|0)!=1&1)<<4)|0,e)+0.0;if((c|0)!=1){a=1;do{h=a;a=a+1|0;d=d+ +sb(f+8+(h<<4)|0,f+8+(((a|0)%(c|0)|0)<<4)|0,e)}while((a|0)<(c|0))}}else d=0.0;S=g;return +(d*6371.007180918475*6371.007180918475)}function vb(a,c){a=a|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0;g=S;S=S+192|0;e=g+168|0;f=g;Vb(a,c,e);Wb(a,c,f);c=b[f>>2]|0;if((c|0)>0){d=+sb(f+8|0,f+8+(((c|0)!=1&1)<<4)|0,e)+0.0;if((c|0)!=1){a=1;do{h=a;a=a+1|0;d=d+ +sb(f+8+(h<<4)|0,f+8+(((a|0)%(c|0)|0)<<4)|0,e)}while((a|0)<(c|0))}}else d=0.0;S=g;return +(d*6371.007180918475*6371.007180918475*1.0e3*1.0e3)}function wb(a,c){a=a|0;c=c|0;var d=0.0,f=0.0,g=0.0,h=0,i=0,j=0.0,k=0.0,l=0.0;i=S;S=S+176|0;h=i;gc(a,c,h);a=b[h>>2]|0;if((a|0)<=1){g=0.0;S=i;return +g}c=a+-1|0;a=0;d=0.0;f=+e[h+8>>3];g=+e[h+16>>3];do{a=a+1|0;k=f;f=+e[h+8+(a<<4)>>3];l=+u(+((f-k)*.5));j=g;g=+e[h+8+(a<<4)+8>>3];j=+u(+((g-j)*.5));j=l*l+j*(+t(+f)*+t(+k)*j);d=d+ +z(+(+r(+j)),+(+r(+(1.0-j))))*2.0}while((a|0)<(c|0));S=i;return +d}function xb(a,c){a=a|0;c=c|0;var d=0.0,f=0.0,g=0.0,h=0,i=0,j=0.0,k=0.0,l=0.0;i=S;S=S+176|0;h=i;gc(a,c,h);a=b[h>>2]|0;if((a|0)<=1){g=0.0;S=i;return +g}c=a+-1|0;a=0;d=0.0;f=+e[h+8>>3];g=+e[h+16>>3];do{a=a+1|0;k=f;f=+e[h+8+(a<<4)>>3];l=+u(+((f-k)*.5));j=g;g=+e[h+8+(a<<4)+8>>3];j=+u(+((g-j)*.5));j=l*l+j*(+t(+k)*+t(+f)*j);d=d+ +z(+(+r(+j)),+(+r(+(1.0-j))))*2.0}while((a|0)!=(c|0));l=d*6371.007180918475;S=i;return +l}function yb(a,c){a=a|0;c=c|0;var d=0.0,f=0.0,g=0.0,h=0,i=0,j=0.0,k=0.0,l=0.0;i=S;S=S+176|0;h=i;gc(a,c,h);a=b[h>>2]|0;if((a|0)<=1){g=0.0;S=i;return +g}c=a+-1|0;a=0;d=0.0;f=+e[h+8>>3];g=+e[h+16>>3];do{a=a+1|0;k=f;f=+e[h+8+(a<<4)>>3];l=+u(+((f-k)*.5));j=g;g=+e[h+8+(a<<4)+8>>3];j=+u(+((g-j)*.5));j=l*l+j*(+t(+k)*+t(+f)*j);d=d+ +z(+(+r(+j)),+(+r(+(1.0-j))))*2.0}while((a|0)!=(c|0));l=d*6371.007180918475*1.0e3;S=i;return +l}function zb(a,b){a=a|0;b=b|0;b=cd(a|0,b|0,52)|0;G()|0;return b&15|0}function Ab(a,b){a=a|0;b=b|0;b=cd(a|0,b|0,45)|0;G()|0;return b&127|0}function Bb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;if(!(0==0&(b&-16777216|0)==134217728)){b=0;return b|0}g=cd(a|0,b|0,45)|0;G()|0;g=g&127;if(g>>>0>121){b=0;return b|0}c=cd(a|0,b|0,52)|0;G()|0;c=c&15;do if(c|0){e=1;d=0;while(1){f=cd(a|0,b|0,(15-e|0)*3|0)|0;G()|0;f=f&7;if((f|0)!=0&(d^1))if((f|0)==1&(la(g)|0)!=0){h=0;d=13;break}else d=1;if((f|0)==7){h=0;d=13;break}if(e>>>0>>0)e=e+1|0;else{d=9;break}}if((d|0)==9){if((c|0)==15)h=1;else break;return h|0}else if((d|0)==13)return h|0}while(0);while(1){h=cd(a|0,b|0,(14-c|0)*3|0)|0;G()|0;if(!((h&7|0)==7&0==0)){h=0;d=13;break}if(c>>>0<14)c=c+1|0;else{h=1;d=13;break}}if((d|0)==13)return h|0;return 0}function Cb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=cd(a|0,b|0,52)|0;G()|0;d=d&15;if((d|0)>=(c|0)){if((d|0)!=(c|0))if(c>>>0<=15){e=dd(c|0,0,52)|0;a=e|a;b=G()|0|b&-15728641;if((d|0)>(c|0))do{e=dd(7,0,(14-c|0)*3|0)|0;c=c+1|0;a=e|a;b=G()|0|b}while((c|0)<(d|0))}else{b=0;a=0}}else{b=0;a=0}F(b|0);return a|0}function Db(a,b,c){a=a|0;b=b|0;c=c|0;a=cd(a|0,b|0,52)|0;G()|0;a=a&15;if(!((c|0)<16&(a|0)<=(c|0))){c=0;return c|0}c=tc(7,c-a|0)|0;return c|0}function Eb(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=cd(a|0,c|0,52)|0;G()|0;h=h&15;if(!((d|0)<16&(h|0)<=(d|0)))return;if((h|0)==(d|0)){d=e;b[d>>2]=a;b[d+4>>2]=c;return}j=tc(7,d-h|0)|0;k=(j|0)/7|0;i=cd(a|0,c|0,45)|0;G()|0;if(!(la(i&127)|0))g=0;else{a:do if(!h)f=0;else{g=1;while(1){f=cd(a|0,c|0,(15-g|0)*3|0)|0;G()|0;f=f&7;if(f|0)break a;if(g>>>0>>0)g=g+1|0;else{f=0;break}}}while(0);g=(f|0)==0}l=dd(h+1|0,0,52)|0;f=G()|0|c&-15728641;i=(14-h|0)*3|0;c=dd(7,0,i|0)|0;c=(l|a)&~c;h=f&~(G()|0);Eb(c,h,d,e);f=e+(k<<3)|0;if(!g){l=dd(1,0,i|0)|0;Eb(l|c,G()|0|h,d,f);l=f+(k<<3)|0;j=dd(2,0,i|0)|0;Eb(j|c,G()|0|h,d,l);l=l+(k<<3)|0;j=dd(3,0,i|0)|0;Eb(j|c,G()|0|h,d,l);l=l+(k<<3)|0;j=dd(4,0,i|0)|0;Eb(j|c,G()|0|h,d,l);l=l+(k<<3)|0;j=dd(5,0,i|0)|0;Eb(j|c,G()|0|h,d,l);j=dd(6,0,i|0)|0;Eb(j|c,G()|0|h,d,l+(k<<3)|0);return}g=f+(k<<3)|0;if((j|0)>6){j=f+8|0;l=(g>>>0>j>>>0?g:j)+-1+(0-f)|0;hd(f|0,0,l+8&-8|0)|0;f=j+(l>>>3<<3)|0}l=dd(2,0,i|0)|0;Eb(l|c,G()|0|h,d,f);l=f+(k<<3)|0;j=dd(3,0,i|0)|0;Eb(j|c,G()|0|h,d,l);l=l+(k<<3)|0;j=dd(4,0,i|0)|0;Eb(j|c,G()|0|h,d,l);l=l+(k<<3)|0;j=dd(5,0,i|0)|0;Eb(j|c,G()|0|h,d,l);j=dd(6,0,i|0)|0;Eb(j|c,G()|0|h,d,l+(k<<3)|0);return}function Fb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=cd(a|0,b|0,45)|0;G()|0;if(!(la(e&127)|0)){e=0;return e|0}e=cd(a|0,b|0,52)|0;G()|0;e=e&15;a:do if(!e)c=0;else{d=1;while(1){c=cd(a|0,b|0,(15-d|0)*3|0)|0;G()|0;c=c&7;if(c|0)break a;if(d>>>0>>0)d=d+1|0;else{c=0;break}}}while(0);e=(c|0)==0&1;return e|0}function Gb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=cd(a|0,b|0,52)|0;G()|0;d=d&15;if((c|0)<16&(d|0)<=(c|0)){if((d|0)!=(c|0)){e=dd(c|0,0,52)|0;a=e|a;b=G()|0|b&-15728641;if((d|0)<(c|0))do{e=dd(7,0,(14-d|0)*3|0)|0;d=d+1|0;a=a&~e;b=b&~(G()|0)}while((d|0)<(c|0))}}else{b=0;a=0}F(b|0);return a|0}function Hb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;if(!d){y=0;return y|0}f=a;e=b[f>>2]|0;f=b[f+4>>2]|0;if(0==0&(f&15728640|0)==0){if((d|0)<=0){y=0;return y|0}y=c;b[y>>2]=e;b[y+4>>2]=f;if((d|0)==1){y=0;return y|0}e=1;do{w=a+(e<<3)|0;x=b[w+4>>2]|0;y=c+(e<<3)|0;b[y>>2]=b[w>>2];b[y+4>>2]=x;e=e+1|0}while((e|0)!=(d|0));e=0;return e|0}w=d<<3;x=Wc(w)|0;if(!x){y=-3;return y|0}gd(x|0,a|0,w|0)|0;v=Yc(d,8)|0;if(!v){Xc(x);y=-3;return y|0}e=d;a:while(1){h=x;l=b[h>>2]|0;h=b[h+4>>2]|0;t=cd(l|0,h|0,52)|0;G()|0;t=t&15;u=t+-1|0;s=(e|0)>0;b:do if(s){r=((e|0)<0)<<31>>31;p=dd(u|0,0,52)|0;q=G()|0;if(u>>>0>15){f=0;a=l;d=h;while(1){if(!((a|0)==0&(d|0)==0)){g=cd(a|0,d|0,52)|0;G()|0;g=g&15;i=(g|0)<(u|0);g=(g|0)==(u|0);k=i?0:g?a:0;a=i?0:g?d:0;d=bd(k|0,a|0,e|0,r|0)|0;G()|0;g=v+(d<<3)|0;i=g;j=b[i>>2]|0;i=b[i+4>>2]|0;if((j|0)==0&(i|0)==0)d=k;else{p=0;o=d;n=i;d=k;while(1){if((p|0)>(e|0)){y=41;break a}if((j|0)==(d|0)&(n&-117440513|0)==(a|0)){k=cd(j|0,n|0,56)|0;G()|0;k=k&7;m=k+1|0;q=cd(j|0,n|0,45)|0;G()|0;c:do if(!(la(q&127)|0))i=7;else{j=cd(j|0,n|0,52)|0;G()|0;j=j&15;if(!j){i=6;break}i=1;while(1){q=dd(7,0,(15-i|0)*3|0)|0;if(!((q&d|0)==0&((G()|0)&a|0)==0)){i=7;break c}if(i>>>0>>0)i=i+1|0;else{i=6;break}}}while(0);if((k+2|0)>>>0>i>>>0){y=51;break a}q=dd(m|0,0,56)|0;a=G()|0|a&-117440513;i=g;b[i>>2]=0;b[i+4>>2]=0;i=o;d=q|d}else i=(o+1|0)%(e|0)|0;g=v+(i<<3)|0;n=g;j=b[n>>2]|0;n=b[n+4>>2]|0;if((j|0)==0&(n|0)==0)break;else{p=p+1|0;o=i}}}q=g;b[q>>2]=d;b[q+4>>2]=a}f=f+1|0;if((f|0)>=(e|0))break b;d=x+(f<<3)|0;a=b[d>>2]|0;d=b[d+4>>2]|0}}f=0;a=l;d=h;while(1){if(!((a|0)==0&(d|0)==0)){i=cd(a|0,d|0,52)|0;G()|0;i=i&15;if((i|0)>=(u|0)){if((i|0)!=(u|0)){a=a|p;d=d&-15728641|q;if(i>>>0>=t>>>0){g=u;do{o=dd(7,0,(14-g|0)*3|0)|0;g=g+1|0;a=o|a;d=G()|0|d}while(g>>>0>>0)}}}else{a=0;d=0}i=bd(a|0,d|0,e|0,r|0)|0;G()|0;g=v+(i<<3)|0;j=g;k=b[j>>2]|0;j=b[j+4>>2]|0;if(!((k|0)==0&(j|0)==0)){o=0;while(1){if((o|0)>(e|0)){y=41;break a}if((k|0)==(a|0)&(j&-117440513|0)==(d|0)){m=cd(k|0,j|0,56)|0;G()|0;m=m&7;n=m+1|0;z=cd(k|0,j|0,45)|0;G()|0;d:do if(!(la(z&127)|0))j=7;else{k=cd(k|0,j|0,52)|0;G()|0;k=k&15;if(!k){j=6;break}j=1;while(1){z=dd(7,0,(15-j|0)*3|0)|0;if(!((z&a|0)==0&((G()|0)&d|0)==0)){j=7;break d}if(j>>>0>>0)j=j+1|0;else{j=6;break}}}while(0);if((m+2|0)>>>0>j>>>0){y=51;break a}z=dd(n|0,0,56)|0;d=G()|0|d&-117440513;n=g;b[n>>2]=0;b[n+4>>2]=0;a=z|a}else i=(i+1|0)%(e|0)|0;g=v+(i<<3)|0;j=g;k=b[j>>2]|0;j=b[j+4>>2]|0;if((k|0)==0&(j|0)==0)break;else o=o+1|0}}z=g;b[z>>2]=a;b[z+4>>2]=d}f=f+1|0;if((f|0)>=(e|0))break b;d=x+(f<<3)|0;a=b[d>>2]|0;d=b[d+4>>2]|0}}while(0);if((e+5|0)>>>0<11){y=99;break}q=Yc((e|0)/6|0,8)|0;if(!q){y=58;break}e:do if(s){o=0;n=0;do{i=v+(o<<3)|0;a=i;f=b[a>>2]|0;a=b[a+4>>2]|0;if(!((f|0)==0&(a|0)==0)){j=cd(f|0,a|0,56)|0;G()|0;j=j&7;d=j+1|0;k=a&-117440513;z=cd(f|0,a|0,45)|0;G()|0;f:do if(la(z&127)|0){m=cd(f|0,a|0,52)|0;G()|0;m=m&15;if(m|0){g=1;while(1){z=dd(7,0,(15-g|0)*3|0)|0;if(!((f&z|0)==0&(k&(G()|0)|0)==0))break f;if(g>>>0>>0)g=g+1|0;else break}}a=dd(d|0,0,56)|0;f=a|f;a=G()|0|k;d=i;b[d>>2]=f;b[d+4>>2]=a;d=j+2|0}while(0);if((d|0)==7){z=q+(n<<3)|0;b[z>>2]=f;b[z+4>>2]=a&-117440513;n=n+1|0}}o=o+1|0}while((o|0)!=(e|0));if(s){p=((e|0)<0)<<31>>31;m=dd(u|0,0,52)|0;o=G()|0;if(u>>>0>15){a=0;f=0;while(1){do if(!((l|0)==0&(h|0)==0)){j=cd(l|0,h|0,52)|0;G()|0;j=j&15;g=(j|0)<(u|0);j=(j|0)==(u|0);i=g?0:j?l:0;j=g?0:j?h:0;g=bd(i|0,j|0,e|0,p|0)|0;G()|0;d=0;while(1){if((d|0)>(e|0)){y=98;break a}z=v+(g<<3)|0;k=b[z+4>>2]|0;if((k&-117440513|0)==(j|0)?(b[z>>2]|0)==(i|0):0){y=70;break}g=(g+1|0)%(e|0)|0;z=v+(g<<3)|0;if((b[z>>2]|0)==(i|0)?(b[z+4>>2]|0)==(j|0):0)break;else d=d+1|0}if((y|0)==70?(y=0,0==0&(k&117440512|0)==100663296):0)break;z=c+(f<<3)|0;b[z>>2]=l;b[z+4>>2]=h;f=f+1|0}while(0);a=a+1|0;if((a|0)>=(e|0)){e=n;break e}h=x+(a<<3)|0;l=b[h>>2]|0;h=b[h+4>>2]|0}}a=0;f=0;while(1){do if(!((l|0)==0&(h|0)==0)){j=cd(l|0,h|0,52)|0;G()|0;j=j&15;if((j|0)>=(u|0))if((j|0)!=(u|0)){d=l|m;g=h&-15728641|o;if(j>>>0>>0)j=g;else{i=u;do{z=dd(7,0,(14-i|0)*3|0)|0;i=i+1|0;d=z|d;g=G()|0|g}while(i>>>0>>0);j=g}}else{d=l;j=h}else{d=0;j=0}i=bd(d|0,j|0,e|0,p|0)|0;G()|0;g=0;while(1){if((g|0)>(e|0)){y=98;break a}z=v+(i<<3)|0;k=b[z+4>>2]|0;if((k&-117440513|0)==(j|0)?(b[z>>2]|0)==(d|0):0){y=93;break}i=(i+1|0)%(e|0)|0;z=v+(i<<3)|0;if((b[z>>2]|0)==(d|0)?(b[z+4>>2]|0)==(j|0):0)break;else g=g+1|0}if((y|0)==93?(y=0,0==0&(k&117440512|0)==100663296):0)break;z=c+(f<<3)|0;b[z>>2]=l;b[z+4>>2]=h;f=f+1|0}while(0);a=a+1|0;if((a|0)>=(e|0)){e=n;break e}h=x+(a<<3)|0;l=b[h>>2]|0;h=b[h+4>>2]|0}}else{f=0;e=n}}else{f=0;e=0}while(0);hd(v|0,0,w|0)|0;gd(x|0,q|0,e<<3|0)|0;Xc(q);if(!e)break;else c=c+(f<<3)|0}if((y|0)==41){Xc(x);Xc(v);z=-1;return z|0}else if((y|0)==51){Xc(x);Xc(v);z=-2;return z|0}else if((y|0)==58){Xc(x);Xc(v);z=-3;return z|0}else if((y|0)==98){Xc(q);Xc(x);Xc(v);z=-1;return z|0}else if((y|0)==99)gd(c|0,x|0,e<<3|0)|0;Xc(x);Xc(v);z=0;return z|0}function Ib(a,c,d,e,f){a=a|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;if((c|0)<=0){f=0;return f|0}if((f|0)>=16){g=0;while(1){l=a+(g<<3)|0;if(!((b[l>>2]|0)==0&(b[l+4>>2]|0)==0)){g=14;break}g=g+1|0;if((g|0)>=(c|0)){h=0;g=16;break}}if((g|0)==14)return ((e|0)>0?-2:-1)|0;else if((g|0)==16)return h|0}g=0;l=0;a:while(1){k=a+(l<<3)|0;i=k;h=b[i>>2]|0;i=b[i+4>>2]|0;do if(!((h|0)==0&(i|0)==0)){if((g|0)>=(e|0)){h=-1;g=16;break a}j=cd(h|0,i|0,52)|0;G()|0;j=j&15;if((j|0)>(f|0)){h=-2;g=16;break a}if((j|0)==(f|0)){k=d+(g<<3)|0;b[k>>2]=h;b[k+4>>2]=i;g=g+1|0;break}h=(tc(7,f-j|0)|0)+g|0;if((h|0)>(e|0)){h=-1;g=16;break a}Eb(b[k>>2]|0,b[k+4>>2]|0,f,d+(g<<3)|0);g=h}while(0);l=l+1|0;if((l|0)>=(c|0)){h=0;g=16;break}}if((g|0)==16)return h|0;return 0}function Jb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;if((c|0)<=0){d=0;return d|0}if((d|0)>=16){e=0;while(1){h=a+(e<<3)|0;if(!((b[h>>2]|0)==0&(b[h+4>>2]|0)==0)){e=-1;f=13;break}e=e+1|0;if((e|0)>=(c|0)){e=0;f=13;break}}if((f|0)==13)return e|0}e=0;h=0;a:while(1){f=a+(h<<3)|0;g=b[f>>2]|0;f=b[f+4>>2]|0;do if(!((g|0)==0&(f|0)==0)){f=cd(g|0,f|0,52)|0;G()|0;f=f&15;if((f|0)>(d|0)){e=-1;f=13;break a}if((f|0)==(d|0)){e=e+1|0;break}else{e=(tc(7,d-f|0)|0)+e|0;break}}while(0);h=h+1|0;if((h|0)>=(c|0)){f=13;break}}if((f|0)==13)return e|0;return 0}function Kb(a,b){a=a|0;b=b|0;b=cd(a|0,b|0,52)|0;G()|0;return b&1|0}function Lb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=cd(a|0,b|0,52)|0;G()|0;e=e&15;if(!e){e=0;return e|0}d=1;while(1){c=cd(a|0,b|0,(15-d|0)*3|0)|0;G()|0;c=c&7;if(c|0){d=5;break}if(d>>>0>>0)d=d+1|0;else{c=0;d=5;break}}if((d|0)==5)return c|0;return 0}function Mb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=cd(a|0,b|0,52)|0;G()|0;i=i&15;if(!i){h=b;i=a;F(h|0);return i|0}h=1;c=0;while(1){f=(15-h|0)*3|0;d=dd(7,0,f|0)|0;e=G()|0;g=cd(a|0,b|0,f|0)|0;G()|0;f=dd(Pa(g&7)|0,0,f|0)|0;g=G()|0;a=f|a&~d;b=g|b&~e;a:do if(!c)if(!((f&d|0)==0&(g&e|0)==0)){d=cd(a|0,b|0,52)|0;G()|0;d=d&15;if(!d)c=1;else{c=1;b:while(1){g=cd(a|0,b|0,(15-c|0)*3|0)|0;G()|0;switch(g&7){case 1:break b;case 0:break;default:{c=1;break a}}if(c>>>0>>0)c=c+1|0;else{c=1;break a}}c=1;while(1){g=(15-c|0)*3|0;e=cd(a|0,b|0,g|0)|0;G()|0;f=dd(7,0,g|0)|0;b=b&~(G()|0);g=dd(Pa(e&7)|0,0,g|0)|0;a=a&~f|g;b=b|(G()|0);if(c>>>0>>0)c=c+1|0;else{c=1;break}}}}else c=0;while(0);if(h>>>0>>0)h=h+1|0;else break}F(b|0);return a|0}function Nb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;d=cd(a|0,b|0,52)|0;G()|0;d=d&15;if(!d){c=b;d=a;F(c|0);return d|0}c=1;while(1){f=(15-c|0)*3|0;g=cd(a|0,b|0,f|0)|0;G()|0;e=dd(7,0,f|0)|0;b=b&~(G()|0);f=dd(Pa(g&7)|0,0,f|0)|0;a=f|a&~e;b=G()|0|b;if(c>>>0>>0)c=c+1|0;else break}F(b|0);return a|0}function Ob(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=cd(a|0,b|0,52)|0;G()|0;i=i&15;if(!i){h=b;i=a;F(h|0);return i|0}h=1;c=0;while(1){f=(15-h|0)*3|0;d=dd(7,0,f|0)|0;e=G()|0;g=cd(a|0,b|0,f|0)|0;G()|0;f=dd(Qa(g&7)|0,0,f|0)|0;g=G()|0;a=f|a&~d;b=g|b&~e;a:do if(!c)if(!((f&d|0)==0&(g&e|0)==0)){d=cd(a|0,b|0,52)|0;G()|0;d=d&15;if(!d)c=1;else{c=1;b:while(1){g=cd(a|0,b|0,(15-c|0)*3|0)|0;G()|0;switch(g&7){case 1:break b;case 0:break;default:{c=1;break a}}if(c>>>0>>0)c=c+1|0;else{c=1;break a}}c=1;while(1){e=(15-c|0)*3|0;f=dd(7,0,e|0)|0;g=b&~(G()|0);b=cd(a|0,b|0,e|0)|0;G()|0;b=dd(Qa(b&7)|0,0,e|0)|0;a=a&~f|b;b=g|(G()|0);if(c>>>0>>0)c=c+1|0;else{c=1;break}}}}else c=0;while(0);if(h>>>0>>0)h=h+1|0;else break}F(b|0);return a|0}function Pb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;d=cd(a|0,b|0,52)|0;G()|0;d=d&15;if(!d){c=b;d=a;F(c|0);return d|0}c=1;while(1){g=(15-c|0)*3|0;f=dd(7,0,g|0)|0;e=b&~(G()|0);b=cd(a|0,b|0,g|0)|0;G()|0;b=dd(Qa(b&7)|0,0,g|0)|0;a=b|a&~f;b=G()|0|e;if(c>>>0>>0)c=c+1|0;else break}F(b|0);return a|0}function Qb(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=S;S=S+64|0;i=j+40|0;e=j+24|0;f=j+12|0;g=j;dd(c|0,0,52)|0;d=G()|0|134225919;if(!c){if((b[a+4>>2]|0)>2){h=0;i=0;F(h|0);S=j;return i|0}if((b[a+8>>2]|0)>2){h=0;i=0;F(h|0);S=j;return i|0}if((b[a+12>>2]|0)>2){h=0;i=0;F(h|0);S=j;return i|0}dd(na(a)|0,0,45)|0;h=G()|0|d;i=-1;F(h|0);S=j;return i|0};b[i>>2]=b[a>>2];b[i+4>>2]=b[a+4>>2];b[i+8>>2]=b[a+8>>2];b[i+12>>2]=b[a+12>>2];h=i+4|0;if((c|0)>0){a=-1;while(1){b[e>>2]=b[h>>2];b[e+4>>2]=b[h+4>>2];b[e+8>>2]=b[h+8>>2];if(!(c&1)){Ja(h);b[f>>2]=b[h>>2];b[f+4>>2]=b[h+4>>2];b[f+8>>2]=b[h+8>>2];La(f)}else{Ia(h);b[f>>2]=b[h>>2];b[f+4>>2]=b[h+4>>2];b[f+8>>2]=b[h+8>>2];Ka(f)}Fa(e,f,g);Ca(g);l=(15-c|0)*3|0;k=dd(7,0,l|0)|0;d=d&~(G()|0);l=dd(Ha(g)|0,0,l|0)|0;a=l|a&~k;d=G()|0|d;if((c|0)>1)c=c+-1|0;else break}}else a=-1;a:do if(((b[h>>2]|0)<=2?(b[i+8>>2]|0)<=2:0)?(b[i+12>>2]|0)<=2:0){e=na(i)|0;c=dd(e|0,0,45)|0;c=c|a;a=G()|0|d&-1040385;g=oa(i)|0;if(!(la(e)|0)){if((g|0)<=0)break;f=0;while(1){e=cd(c|0,a|0,52)|0;G()|0;e=e&15;if(e){d=1;while(1){l=(15-d|0)*3|0;i=cd(c|0,a|0,l|0)|0;G()|0;k=dd(7,0,l|0)|0;a=a&~(G()|0);l=dd(Pa(i&7)|0,0,l|0)|0;c=c&~k|l;a=a|(G()|0);if(d>>>0>>0)d=d+1|0;else break}}f=f+1|0;if((f|0)==(g|0))break a}}f=cd(c|0,a|0,52)|0;G()|0;f=f&15;b:do if(f){d=1;c:while(1){l=cd(c|0,a|0,(15-d|0)*3|0)|0;G()|0;switch(l&7){case 1:break c;case 0:break;default:break b}if(d>>>0>>0)d=d+1|0;else break b}if(ra(e,b[i>>2]|0)|0){d=1;while(1){i=(15-d|0)*3|0;k=dd(7,0,i|0)|0;l=a&~(G()|0);a=cd(c|0,a|0,i|0)|0;G()|0;a=dd(Qa(a&7)|0,0,i|0)|0;c=c&~k|a;a=l|(G()|0);if(d>>>0>>0)d=d+1|0;else break}}else{d=1;while(1){l=(15-d|0)*3|0;i=cd(c|0,a|0,l|0)|0;G()|0;k=dd(7,0,l|0)|0;a=a&~(G()|0);l=dd(Pa(i&7)|0,0,l|0)|0;c=c&~k|l;a=a|(G()|0);if(d>>>0>>0)d=d+1|0;else break}}}while(0);if((g|0)>0){d=0;do{c=Mb(c,a)|0;a=G()|0;d=d+1|0}while((d|0)!=(g|0))}}else{c=0;a=0}while(0);k=a;l=c;F(k|0);S=j;return l|0}function Rb(a){a=a|0;return (a|0)%2|0|0}function Sb(a,c){a=a|0;c=c|0;var d=0,e=0;e=S;S=S+16|0;d=e;if((c>>>0<=15?!(0==0?(b[a+4>>2]&2146435072|0)==2146435072:0):0)?!(0==0?(b[a+8+4>>2]&2146435072|0)==2146435072:0):0){Ya(a,c,d);c=Qb(d,c)|0;a=G()|0}else{a=0;c=0}F(a|0);S=e;return c|0}function Tb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;f=d+4|0;g=cd(a|0,c|0,52)|0;G()|0;g=g&15;h=cd(a|0,c|0,45)|0;G()|0;e=(g|0)==0;if(!(la(h&127)|0)){if(e){h=0;return h|0}if((b[f>>2]|0)==0?(b[d+8>>2]|0)==0:0)e=(b[d+12>>2]|0)!=0&1;else e=1}else if(e){h=1;return h|0}else e=1;d=1;while(1){if(!(d&1))La(f);else Ka(f);h=cd(a|0,c|0,(15-d|0)*3|0)|0;G()|0;Ma(f,h&7);if(d>>>0>>0)d=d+1|0;else break}return e|0}function Ub(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=S;S=S+16|0;j=l;k=cd(a|0,c|0,45)|0;G()|0;k=k&127;a:do if((la(k)|0)!=0?(g=cd(a|0,c|0,52)|0,G()|0,g=g&15,(g|0)!=0):0){e=1;b:while(1){i=cd(a|0,c|0,(15-e|0)*3|0)|0;G()|0;switch(i&7){case 5:break b;case 0:break;default:{e=c;break a}}if(e>>>0>>0)e=e+1|0;else{e=c;break a}}f=1;e=c;while(1){c=(15-f|0)*3|0;h=dd(7,0,c|0)|0;i=e&~(G()|0);e=cd(a|0,e|0,c|0)|0;G()|0;e=dd(Qa(e&7)|0,0,c|0)|0;a=a&~h|e;e=i|(G()|0);if(f>>>0>>0)f=f+1|0;else break}}else e=c;while(0);i=7728+(k*28|0)|0;b[d>>2]=b[i>>2];b[d+4>>2]=b[i+4>>2];b[d+8>>2]=b[i+8>>2];b[d+12>>2]=b[i+12>>2];if(!(Tb(a,e,d)|0)){S=l;return}h=d+4|0;b[j>>2]=b[h>>2];b[j+4>>2]=b[h+4>>2];b[j+8>>2]=b[h+8>>2];g=cd(a|0,e|0,52)|0;G()|0;i=g&15;if(!(g&1))g=i;else{La(h);g=i+1|0}if(!(la(k)|0))e=0;else{c:do if(!i)e=0;else{c=1;while(1){f=cd(a|0,e|0,(15-c|0)*3|0)|0;G()|0;f=f&7;if(f|0){e=f;break c}if(c>>>0>>0)c=c+1|0;else{e=0;break}}}while(0);e=(e|0)==4&1}if(!(cb(d,g,e,0)|0)){if((g|0)!=(i|0)){b[h>>2]=b[j>>2];b[h+4>>2]=b[j+4>>2];b[h+8>>2]=b[j+8>>2]}}else{if(la(k)|0)do{}while((cb(d,g,0,0)|0)!=0);if((g|0)!=(i|0))Ja(h)}S=l;return}function Vb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=S;S=S+16|0;e=d;Ub(a,b,e);b=cd(a|0,b|0,52)|0;G()|0;$a(e,b&15,c);S=d;return}function Wb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;g=S;S=S+16|0;f=g;Ub(a,b,f);d=cd(a|0,b|0,45)|0;G()|0;d=(la(d&127)|0)==0;e=cd(a|0,b|0,52)|0;G()|0;e=e&15;a:do if(!d){if(e|0){d=1;while(1){h=dd(7,0,(15-d|0)*3|0)|0;if(!((h&a|0)==0&((G()|0)&b|0)==0))break a;if(d>>>0>>0)d=d+1|0;else break}}ab(f,e,0,5,c);S=g;return}while(0);eb(f,e,0,6,c);S=g;return}function Xb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=cd(a|0,b|0,45)|0;G()|0;if(!(la(d&127)|0)){d=2;return d|0}d=cd(a|0,b|0,52)|0;G()|0;d=d&15;if(!d){d=5;return d|0}c=1;while(1){e=dd(7,0,(15-c|0)*3|0)|0;if(!((e&a|0)==0&((G()|0)&b|0)==0)){c=2;a=6;break}if(c>>>0>>0)c=c+1|0;else{c=5;a=6;break}}if((a|0)==6)return c|0;return 0}function Yb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=S;S=S+128|0;k=m+112|0;g=m+96|0;l=m;f=cd(a|0,c|0,52)|0;G()|0;i=f&15;b[k>>2]=i;h=cd(a|0,c|0,45)|0;G()|0;h=h&127;a:do if(la(h)|0){if(i|0){e=1;while(1){j=dd(7,0,(15-e|0)*3|0)|0;if(!((j&a|0)==0&((G()|0)&c|0)==0)){f=0;break a}if(e>>>0>>0)e=e+1|0;else break}}if(!(f&1)){j=dd(i+1|0,0,52)|0;l=G()|0|c&-15728641;k=dd(7,0,(14-i|0)*3|0)|0;Yb((j|a)&~k,l&~(G()|0),d);S=m;return}else f=1}else f=0;while(0);Ub(a,c,g);if(f){bb(g,k,l);j=5}else{fb(g,k,l);j=6}b:do if(la(h)|0)if(!i)e=20;else{e=1;while(1){h=dd(7,0,(15-e|0)*3|0)|0;if(!((h&a|0)==0&((G()|0)&c|0)==0)){e=8;break b}if(e>>>0>>0)e=e+1|0;else{e=20;break}}}else e=8;while(0);hd(d|0,-1,e|0)|0;if(f){f=0;do{g=l+(f<<4)|0;db(g,b[k>>2]|0)|0;g=b[g>>2]|0;e=0;while(1){h=d+(e<<2)|0;i=b[h>>2]|0;if((i|0)==-1|(i|0)==(g|0))break;else e=e+1|0}b[h>>2]=g;f=f+1|0}while((f|0)!=(j|0))}else{f=0;do{g=l+(f<<4)|0;cb(g,b[k>>2]|0,0,1)|0;g=b[g>>2]|0;e=0;while(1){h=d+(e<<2)|0;i=b[h>>2]|0;if((i|0)==-1|(i|0)==(g|0))break;else e=e+1|0}b[h>>2]=g;f=f+1|0}while((f|0)!=(j|0))}S=m;return}function Zb(){return 12}function _b(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;dd(a|0,0,52)|0;i=G()|0|134225919;if((a|0)<1){e=0;d=0;do{if(la(e)|0){dd(e|0,0,45)|0;h=i|(G()|0);a=c+(d<<3)|0;b[a>>2]=-1;b[a+4>>2]=h;d=d+1|0}e=e+1|0}while((e|0)!=122);return}h=0;d=0;do{if(la(h)|0){dd(h|0,0,45)|0;e=1;f=-1;g=i|(G()|0);while(1){j=dd(7,0,(15-e|0)*3|0)|0;f=f&~j;g=g&~(G()|0);if((e|0)==(a|0))break;else e=e+1|0}j=c+(d<<3)|0;b[j>>2]=f;b[j+4>>2]=g;d=d+1|0}h=h+1|0}while((h|0)!=122);return}function $b(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;i=S;S=S+64|0;h=i;if((a|0)==(d|0)&(c|0)==(e|0)|(0!=0|(c&2013265920|0)!=134217728|(0!=0|(e&2013265920|0)!=134217728))){h=0;S=i;return h|0}f=cd(a|0,c|0,52)|0;G()|0;f=f&15;g=cd(d|0,e|0,52)|0;G()|0;if((f|0)!=(g&15|0)){h=0;S=i;return h|0}g=f+-1|0;if(f>>>0>1?(k=Cb(a,c,g)|0,j=G()|0,g=Cb(d,e,g)|0,(k|0)==(g|0)&(j|0)==(G()|0)):0){g=(f^15)*3|0;f=cd(a|0,c|0,g|0)|0;G()|0;f=f&7;g=cd(d|0,e|0,g|0)|0;G()|0;g=g&7;if((f|0)==0|(g|0)==0){k=1;S=i;return k|0}if((b[21136+(f<<2)>>2]|0)==(g|0)){k=1;S=i;return k|0}if((b[21168+(f<<2)>>2]|0)==(g|0)){k=1;S=i;return k|0}}f=h;g=f+56|0;do{b[f>>2]=0;f=f+4|0}while((f|0)<(g|0));$(a,c,1,h);k=h;if(((((!((b[k>>2]|0)==(d|0)?(b[k+4>>2]|0)==(e|0):0)?(k=h+8|0,!((b[k>>2]|0)==(d|0)?(b[k+4>>2]|0)==(e|0):0)):0)?(k=h+16|0,!((b[k>>2]|0)==(d|0)?(b[k+4>>2]|0)==(e|0):0)):0)?(k=h+24|0,!((b[k>>2]|0)==(d|0)?(b[k+4>>2]|0)==(e|0):0)):0)?(k=h+32|0,!((b[k>>2]|0)==(d|0)?(b[k+4>>2]|0)==(e|0):0)):0)?(k=h+40|0,!((b[k>>2]|0)==(d|0)?(b[k+4>>2]|0)==(e|0):0)):0){f=h+48|0;f=((b[f>>2]|0)==(d|0)?(b[f+4>>2]|0)==(e|0):0)&1}else f=1;k=f;S=i;return k|0}function ac(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=S;S=S+16|0;h=k;if(!($b(a,c,d,e)|0)){i=0;j=0;F(i|0);S=k;return j|0}i=c&-2130706433;f=(Fb(a,c)|0)==0;f=f?1:2;while(1){b[h>>2]=0;l=da(a,c,f,h)|0;g=f+1|0;if((l|0)==(d|0)&(G()|0)==(e|0))break;if(g>>>0<7)f=g;else{f=0;a=0;j=6;break}}if((j|0)==6){F(f|0);S=k;return a|0}l=dd(f|0,0,56)|0;j=i|(G()|0)|268435456;l=a|l;F(j|0);S=k;return l|0}function bc(a,b){a=a|0;b=b|0;var c=0;c=0==0&(b&2013265920|0)==268435456;F((c?b&-2130706433|134217728:0)|0);return (c?a:0)|0}function cc(a,c){a=a|0;c=c|0;var d=0,e=0,f=0;e=S;S=S+16|0;d=e;if(!(0==0&(c&2013265920|0)==268435456)){c=0;d=0;F(c|0);S=e;return d|0}f=cd(a|0,c|0,56)|0;G()|0;b[d>>2]=0;d=da(a,c&-2130706433|134217728,f&7,d)|0;c=G()|0;F(c|0);S=e;return d|0}function dc(a,b){a=a|0;b=b|0;var c=0;if(!(0==0&(b&2013265920|0)==268435456)){c=0;return c|0}c=cd(a|0,b|0,56)|0;G()|0;switch(c&7){case 0:case 7:{c=0;return c|0}default:{}}c=b&-2130706433|134217728;if(0==0&(b&117440512|0)==16777216&(Fb(a,c)|0)!=0){c=0;return c|0}c=Bb(a,c)|0;return c|0}function ec(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=S;S=S+16|0;e=g;h=0==0&(c&2013265920|0)==268435456;f=c&-2130706433|134217728;i=d;b[i>>2]=h?a:0;b[i+4>>2]=h?f:0;if(h){c=cd(a|0,c|0,56)|0;G()|0;b[e>>2]=0;a=da(a,f,c&7,e)|0;c=G()|0}else{a=0;c=0}i=d+8|0;b[i>>2]=a;b[i+4>>2]=c;S=g;return}function fc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0;f=(Fb(a,c)|0)==0;c=c&-2130706433;e=d;b[e>>2]=f?a:0;b[e+4>>2]=f?c|285212672:0;e=d+8|0;b[e>>2]=a;b[e+4>>2]=c|301989888;e=d+16|0;b[e>>2]=a;b[e+4>>2]=c|318767104;e=d+24|0;b[e>>2]=a;b[e+4>>2]=c|335544320;e=d+32|0;b[e>>2]=a;b[e+4>>2]=c|352321536;d=d+40|0;b[d>>2]=a;b[d+4>>2]=c|369098752;return}function gc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=S;S=S+16|0;g=h;e=cd(a|0,c|0,56)|0;G()|0;i=0==0&(c&2013265920|0)==268435456;f=i?a:0;a=i?c&-2130706433|134217728:0;c=Lc(f,a,e&7)|0;if((c|0)==-1){b[d>>2]=0;S=h;return}Ub(f,a,g);e=cd(f|0,a|0,52)|0;G()|0;e=e&15;if(!(Fb(f,a)|0))eb(g,e,c,2,d);else ab(g,e,c,2,d);S=h;return}function hc(a){a=a|0;var c=0,d=0,e=0;c=Yc(1,12)|0;if(!c)H(22691,22646,49,22704);d=a+4|0;e=b[d>>2]|0;if(e|0){e=e+8|0;b[e>>2]=c;b[d>>2]=c;return c|0}if(b[a>>2]|0)H(22721,22646,61,22744);e=a;b[e>>2]=c;b[d>>2]=c;return c|0}function ic(a,c){a=a|0;c=c|0;var d=0,e=0;e=Wc(24)|0;if(!e)H(22758,22646,78,22772);b[e>>2]=b[c>>2];b[e+4>>2]=b[c+4>>2];b[e+8>>2]=b[c+8>>2];b[e+12>>2]=b[c+12>>2];b[e+16>>2]=0;c=a+4|0;d=b[c>>2]|0;if(d|0){b[d+16>>2]=e;b[c>>2]=e;return e|0}if(b[a>>2]|0)H(22787,22646,82,22772);b[a>>2]=e;b[c>>2]=e;return e|0}function jc(a){a=a|0;var c=0,d=0,e=0,f=0;if(!a)return;e=1;while(1){c=b[a>>2]|0;if(c|0)do{d=b[c>>2]|0;if(d|0)do{f=d;d=b[d+16>>2]|0;Xc(f)}while((d|0)!=0);f=c;c=b[c+8>>2]|0;Xc(f)}while((c|0)!=0);c=a;a=b[a+8>>2]|0;if(!e)Xc(c);if(!a)break;else e=0}return}function kc(a){a=a|0;var c=0,d=0,f=0,g=0,h=0.0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0;g=a+8|0;if(b[g>>2]|0){K=1;return K|0}f=b[a>>2]|0;if(!f){K=0;return K|0}c=f;d=0;do{d=d+1|0;c=b[c+8>>2]|0}while((c|0)!=0);if(d>>>0<2){K=0;return K|0}I=Wc(d<<2)|0;if(!I)H(22807,22646,317,22826);G=Wc(d<<5)|0;if(!G)H(22848,22646,321,22826);b[a>>2]=0;z=a+4|0;b[z>>2]=0;b[g>>2]=0;d=0;F=0;y=0;n=0;a:while(1){m=b[f>>2]|0;if(m){h=0.0;i=m;do{k=+e[i+8>>3];c=i;i=b[i+16>>2]|0;l=(i|0)==0;g=l?m:i;j=+e[g+8>>3];if(+q(+(k-j))>3.141592653589793){K=14;break}h=h+(j-k)*(+e[c>>3]+ +e[g>>3])}while(!l);if((K|0)==14){K=0;h=0.0;c=m;do{x=+e[c+8>>3];E=c+16|0;D=b[E>>2]|0;D=(D|0)==0?m:D;w=+e[D+8>>3];h=h+(+e[c>>3]+ +e[D>>3])*((w<0.0?w+6.283185307179586:w)-(x<0.0?x+6.283185307179586:x));c=b[((c|0)==0?f:E)>>2]|0}while((c|0)!=0)}if(h>0.0){b[I+(F<<2)>>2]=f;F=F+1|0;g=y;c=n}else K=19}else K=19;if((K|0)==19){K=0;do if(!d)if(!n)if(!(b[a>>2]|0)){g=z;i=a;c=f;d=a;break}else{K=27;break a}else{g=z;i=n+8|0;c=f;d=a;break}else{c=d+8|0;if(b[c>>2]|0){K=21;break a}d=Yc(1,12)|0;if(!d){K=23;break a}b[c>>2]=d;g=d+4|0;i=d;c=n}while(0);b[i>>2]=f;b[g>>2]=f;i=G+(y<<5)|0;l=b[f>>2]|0;if(l){m=G+(y<<5)+8|0;e[m>>3]=1797693134862315708145274.0e284;n=G+(y<<5)+24|0;e[n>>3]=1797693134862315708145274.0e284;e[i>>3]=-1797693134862315708145274.0e284;o=G+(y<<5)+16|0;e[o>>3]=-1797693134862315708145274.0e284;u=1797693134862315708145274.0e284;v=-1797693134862315708145274.0e284;g=0;p=l;k=1797693134862315708145274.0e284;s=1797693134862315708145274.0e284;t=-1797693134862315708145274.0e284;j=-1797693134862315708145274.0e284;while(1){h=+e[p>>3];x=+e[p+8>>3];p=b[p+16>>2]|0;r=(p|0)==0;w=+e[(r?l:p)+8>>3];if(h>3]=h;k=h}if(x>3]=x;s=x}if(h>t)e[i>>3]=h;else h=t;if(x>j){e[o>>3]=x;j=x}u=x>0.0&xv?x:v;g=g|+q(+(x-w))>3.141592653589793;if(r)break;else t=h}if(g){e[o>>3]=v;e[n>>3]=u}}else{b[i>>2]=0;b[i+4>>2]=0;b[i+8>>2]=0;b[i+12>>2]=0;b[i+16>>2]=0;b[i+20>>2]=0;b[i+24>>2]=0;b[i+28>>2]=0}g=y+1|0}E=f+8|0;f=b[E>>2]|0;b[E>>2]=0;if(!f){K=45;break}else{y=g;n=c}}if((K|0)==21)H(22624,22646,35,22658);else if((K|0)==23)H(22678,22646,37,22658);else if((K|0)==27)H(22721,22646,61,22744);else if((K|0)==45){b:do if((F|0)>0){E=(g|0)==0;C=g<<2;D=(a|0)==0;B=0;c=0;while(1){A=b[I+(B<<2)>>2]|0;if(!E){y=Wc(C)|0;if(!y){K=50;break}z=Wc(C)|0;if(!z){K=52;break}c:do if(!D){g=0;d=0;i=a;while(1){f=G+(g<<5)|0;if(lc(b[i>>2]|0,f,b[A>>2]|0)|0){b[y+(d<<2)>>2]=i;b[z+(d<<2)>>2]=f;r=d+1|0}else r=d;i=b[i+8>>2]|0;if(!i)break;else{g=g+1|0;d=r}}if((r|0)>0){f=b[y>>2]|0;if((r|0)==1)d=f;else{o=0;p=-1;d=f;n=f;while(1){l=b[n>>2]|0;f=0;i=0;while(1){g=b[b[y+(i<<2)>>2]>>2]|0;if((g|0)==(l|0))m=f;else m=f+((lc(g,b[z+(i<<2)>>2]|0,b[l>>2]|0)|0)&1)|0;i=i+1|0;if((i|0)==(r|0))break;else f=m}g=(m|0)>(p|0);d=g?n:d;f=o+1|0;if((f|0)==(r|0))break c;o=f;p=g?m:p;n=b[y+(f<<2)>>2]|0}}}else d=0}else d=0;while(0);Xc(y);Xc(z);if(d){g=d+4|0;f=b[g>>2]|0;if(!f){if(b[d>>2]|0){K=70;break}}else d=f+8|0;b[d>>2]=A;b[g>>2]=A}else K=73}else K=73;if((K|0)==73){K=0;c=b[A>>2]|0;if(c|0)do{z=c;c=b[c+16>>2]|0;Xc(z)}while((c|0)!=0);Xc(A);c=2}B=B+1|0;if((B|0)>=(F|0)){J=c;break b}}if((K|0)==50)H(22863,22646,249,22882);else if((K|0)==52)H(22901,22646,252,22882);else if((K|0)==70)H(22721,22646,61,22744)}else J=0;while(0);Xc(I);Xc(G);K=J;return K|0}return 0}function lc(a,c,d){a=a|0;c=c|0;d=d|0;var f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0;if(!(xa(c,d)|0)){a=0;return a|0}c=wa(c)|0;l=+e[d>>3];f=+e[d+8>>3];f=c&f<0.0?f+6.283185307179586:f;a=b[a>>2]|0;if(!a){a=0;return a|0}if(c){c=0;d=a;a:while(1){while(1){i=+e[d>>3];k=+e[d+8>>3];d=d+16|0;m=b[d>>2]|0;m=(m|0)==0?a:m;h=+e[m>>3];g=+e[m+8>>3];if(i>h){j=i;i=k}else{j=h;h=i;i=g;g=k}if(!(lj))break;d=b[d>>2]|0;if(!d){d=22;break a}}k=g<0.0?g+6.283185307179586:g;i=i<0.0?i+6.283185307179586:i;f=i==f|k==f?f+-2.220446049250313e-16:f;k=k+(l-h)/(j-h)*(i-k);if((k<0.0?k+6.283185307179586:k)>f)c=c^1;d=b[d>>2]|0;if(!d){d=22;break}}if((d|0)==22)return c|0}else{c=0;d=a;b:while(1){while(1){i=+e[d>>3];k=+e[d+8>>3];d=d+16|0;m=b[d>>2]|0;m=(m|0)==0?a:m;h=+e[m>>3];g=+e[m+8>>3];if(i>h){j=i;i=k}else{j=h;h=i;i=g;g=k}if(!(lj))break;d=b[d>>2]|0;if(!d){d=22;break b}}f=i==f|g==f?f+-2.220446049250313e-16:f;if(g+(l-h)/(j-h)*(i-g)>f)c=c^1;d=b[d>>2]|0;if(!d){d=22;break}}if((d|0)==22)return c|0}return 0}function mc(c,d,e,f,g){c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=S;S=S+32|0;t=u+16|0;s=u;h=cd(c|0,d|0,52)|0;G()|0;h=h&15;p=cd(e|0,f|0,52)|0;G()|0;if((h|0)!=(p&15|0)){t=1;S=u;return t|0}l=cd(c|0,d|0,45)|0;G()|0;l=l&127;m=cd(e|0,f|0,45)|0;G()|0;m=m&127;p=(l|0)!=(m|0);if(p){j=ta(l,m)|0;if((j|0)==7){t=2;S=u;return t|0}k=ta(m,l)|0;if((k|0)==7)H(22925,22949,151,22959);else{q=j;i=k}}else{q=0;i=0}n=la(l)|0;o=la(m)|0;b[t>>2]=0;b[t+4>>2]=0;b[t+8>>2]=0;b[t+12>>2]=0;do if(!q){Tb(e,f,t)|0;if((n|0)!=0&(o|0)!=0){if((m|0)!=(l|0))H(23077,22949,243,22959);i=Lb(c,d)|0;h=Lb(e,f)|0;if(!(a[22032+(i*7|0)+h>>0]|0)){i=b[21200+(i*28|0)+(h<<2)>>2]|0;if((i|0)>0){j=t+4|0;h=0;do{Oa(j);h=h+1|0}while((h|0)!=(i|0));r=50}else r=50}else h=5}else r=50}else{m=b[4304+(l*28|0)+(q<<2)>>2]|0;j=(m|0)>0;if(!o)if(j){l=0;k=e;j=f;do{k=Pb(k,j)|0;j=G()|0;i=Qa(i)|0;l=l+1|0}while((l|0)!=(m|0));m=i;l=k;k=j}else{m=i;l=e;k=f}else if(j){l=0;k=e;j=f;do{k=Ob(k,j)|0;j=G()|0;i=Qa(i)|0;if((i|0)==1)i=Qa(1)|0;l=l+1|0}while((l|0)!=(m|0));m=i;l=k;k=j}else{m=i;l=e;k=f}Tb(l,k,t)|0;if(!p)H(22972,22949,181,22959);j=(n|0)!=0;i=(o|0)!=0;if(j&i)H(22999,22949,182,22959);if(!j)if(i){i=Lb(l,k)|0;if(a[22032+(i*7|0)+m>>0]|0){h=4;break}l=0;k=b[21200+(m*28|0)+(i<<2)>>2]|0;r=26}else i=0;else{i=Lb(c,d)|0;if(a[22032+(i*7|0)+q>>0]|0){h=3;break}k=b[21200+(i*28|0)+(q<<2)>>2]|0;l=k;r=26}if((r|0)==26){if((k|0)<=-1)H(23030,22949,212,22959);if((l|0)<=-1)H(23053,22949,213,22959);if((k|0)>0){j=t+4|0;i=0;do{Oa(j);i=i+1|0}while((i|0)!=(k|0));i=l}else i=l};b[s>>2]=0;b[s+4>>2]=0;b[s+8>>2]=0;Ma(s,q);if(h|0)while(1){if(!(Rb(h)|0))La(s);else Ka(s);if((h|0)>1)h=h+-1|0;else break}if((i|0)>0){h=0;do{Oa(s);h=h+1|0}while((h|0)!=(i|0))}r=t+4|0;Ea(r,s,r);Ca(r);r=50}while(0);if((r|0)==50){h=t+4|0;b[g>>2]=b[h>>2];b[g+4>>2]=b[h+4>>2];b[g+8>>2]=b[h+8>>2];h=0}t=h;S=u;return t|0}function nc(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;p=S;S=S+48|0;h=p+36|0;i=p+24|0;j=p+12|0;k=p;g=cd(a|0,c|0,52)|0;G()|0;g=g&15;n=cd(a|0,c|0,45)|0;G()|0;n=n&127;l=la(n)|0;dd(g|0,0,52)|0;r=G()|0|134225919;q=e;b[q>>2]=-1;b[q+4>>2]=r;if(!g){if((b[d>>2]|0)>1){r=1;S=p;return r|0}if((b[d+4>>2]|0)>1){r=1;S=p;return r|0}if((b[d+8>>2]|0)>1){r=1;S=p;return r|0}f=sa(n,Ha(d)|0)|0;if((f|0)==127){r=1;S=p;return r|0}o=dd(f|0,0,45)|0;q=G()|0;n=e;q=b[n+4>>2]&-1040385|q;r=e;b[r>>2]=b[n>>2]|o;b[r+4>>2]=q;r=0;S=p;return r|0};b[h>>2]=b[d>>2];b[h+4>>2]=b[d+4>>2];b[h+8>>2]=b[d+8>>2];while(1){b[i>>2]=b[h>>2];b[i+4>>2]=b[h+4>>2];b[i+8>>2]=b[h+8>>2];if(!(Rb(g)|0)){Ja(h);b[j>>2]=b[h>>2];b[j+4>>2]=b[h+4>>2];b[j+8>>2]=b[h+8>>2];La(j)}else{Ia(h);b[j>>2]=b[h>>2];b[j+4>>2]=b[h+4>>2];b[j+8>>2]=b[h+8>>2];Ka(j)}Fa(i,j,k);Ca(k);q=e;s=b[q>>2]|0;q=b[q+4>>2]|0;t=(15-g|0)*3|0;d=dd(7,0,t|0)|0;q=q&~(G()|0);t=dd(Ha(k)|0,0,t|0)|0;q=G()|0|q;r=e;b[r>>2]=t|s&~d;b[r+4>>2]=q;if((g|0)>1)g=g+-1|0;else break}a:do if(((b[h>>2]|0)<=1?(b[h+4>>2]|0)<=1:0)?(b[h+8>>2]|0)<=1:0){g=Ha(h)|0;i=sa(n,g)|0;if((i|0)==127)k=0;else k=la(i)|0;b:do if(!g)if((l|0)!=0&(k|0)!=0){t=Lb(a,c)|0;g=e;g=21408+(t*28|0)+((Lb(b[g>>2]|0,b[g+4>>2]|0)|0)<<2)|0;g=b[g>>2]|0;if((g|0)<=-1)H(23201,22949,433,23134);if(!g){f=i;g=55}else{h=e;f=0;d=b[h>>2]|0;h=b[h+4>>2]|0;do{d=Nb(d,h)|0;h=G()|0;t=e;b[t>>2]=d;b[t+4>>2]=h;f=f+1|0}while((f|0)<(g|0));f=i;g=54}}else{f=i;g=54}else{if(l){h=21408+((Lb(a,c)|0)*28|0)+(g<<2)|0;h=b[h>>2]|0;if((h|0)>0){d=0;do{g=Pa(g)|0;d=d+1|0}while((d|0)!=(h|0))}if((g|0)==1){f=3;break a}d=sa(n,g)|0;if((d|0)==127)H(23104,22949,376,23134);if(!(la(d)|0)){o=h;m=g;f=d}else H(23147,22949,377,23134)}else{o=0;m=g;f=i}j=b[4304+(n*28|0)+(m<<2)>>2]|0;if((j|0)<=-1)H(23178,22949,384,23134);if(!k){if((o|0)<=-1)H(23030,22949,417,23134);if(o|0){h=e;g=0;d=b[h>>2]|0;h=b[h+4>>2]|0;do{d=Nb(d,h)|0;h=G()|0;t=e;b[t>>2]=d;b[t+4>>2]=h;g=g+1|0}while((g|0)<(o|0))}if((j|0)<=0){g=54;break}h=e;g=0;d=b[h>>2]|0;h=b[h+4>>2]|0;while(1){d=Nb(d,h)|0;h=G()|0;t=e;b[t>>2]=d;b[t+4>>2]=h;g=g+1|0;if((g|0)==(j|0)){g=54;break b}}}i=ta(f,n)|0;if((i|0)==7)H(22925,22949,393,23134);g=e;d=b[g>>2]|0;g=b[g+4>>2]|0;if((j|0)>0){h=0;do{d=Nb(d,g)|0;g=G()|0;t=e;b[t>>2]=d;b[t+4>>2]=g;h=h+1|0}while((h|0)!=(j|0))}d=Lb(d,g)|0;t=ma(f)|0;d=b[(t?21824:21616)+(i*28|0)+(d<<2)>>2]|0;if((d|0)<=-1)H(23030,22949,412,23134);if(!d)g=54;else{i=e;g=0;h=b[i>>2]|0;i=b[i+4>>2]|0;do{h=Mb(h,i)|0;i=G()|0;t=e;b[t>>2]=h;b[t+4>>2]=i;g=g+1|0}while((g|0)<(d|0));g=54}}while(0);if((g|0)==54)if(k)g=55;if((g|0)==55){t=e;if((Lb(b[t>>2]|0,b[t+4>>2]|0)|0)==1){f=4;break}}t=e;r=b[t>>2]|0;t=b[t+4>>2]&-1040385;s=dd(f|0,0,45)|0;t=t|(G()|0);f=e;b[f>>2]=r|s;b[f+4>>2]=t;f=0}else f=2;while(0);t=f;S=p;return t|0}function oc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=S;S=S+16|0;f=g;a=mc(a,b,c,d,f)|0;if(!a){Ua(f,e);a=0}S=g;return a|0}function pc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=S;S=S+16|0;f=e;Va(c,f);d=nc(a,b,f,d)|0;S=e;return d|0}function qc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=S;S=S+32|0;e=g+12|0;f=g;if((mc(a,b,a,b,e)|0)==0?(mc(a,b,c,d,f)|0)==0:0)a=Ta(e,f)|0;else a=-1;S=g;return a|0}function rc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=S;S=S+32|0;e=g+12|0;f=g;if((mc(a,b,a,b,e)|0)==0?(mc(a,b,c,d,f)|0)==0:0)a=Ta(e,f)|0;else a=-1;S=g;return (a>>>31^1)+a|0}function sc(a,c,d,e,f){a=a|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=S;S=S+48|0;g=x+24|0;h=x+12|0;w=x;if((mc(a,c,a,c,g)|0)==0?(mc(a,c,d,e,h)|0)==0:0){v=Ta(g,h)|0;if((v|0)<0){w=v;S=x;return w|0};b[g>>2]=0;b[g+4>>2]=0;b[g+8>>2]=0;b[h>>2]=0;b[h+4>>2]=0;b[h+8>>2]=0;mc(a,c,a,c,g)|0;mc(a,c,d,e,h)|0;Wa(g);Wa(h);if(!v){e=g+4|0;n=g+8|0;s=e;t=n;u=g;d=b[g>>2]|0;e=b[e>>2]|0;g=b[n>>2]|0;p=0.0;r=0.0;o=0.0}else{l=b[g>>2]|0;o=+(v|0);s=g+4|0;m=b[s>>2]|0;t=g+8|0;n=b[t>>2]|0;u=g;d=l;e=m;g=n;p=+((b[h>>2]|0)-l|0)/o;r=+((b[h+4>>2]|0)-m|0)/o;o=+((b[h+8>>2]|0)-n|0)/o}b[w>>2]=d;n=w+4|0;b[n>>2]=e;m=w+8|0;b[m>>2]=g;l=0;while(1){j=+(l|0);y=p*j+ +(d|0);i=r*j+ +(b[s>>2]|0);j=o*j+ +(b[t>>2]|0);e=~~+fd(+y);h=~~+fd(+i);d=~~+fd(+j);y=+q(+(+(e|0)-y));i=+q(+(+(h|0)-i));j=+q(+(+(d|0)-j));do if(!(y>i&y>j)){k=0-e|0;if(i>j){g=k-d|0;break}else{g=h;d=k-h|0;break}}else{e=0-(h+d)|0;g=h}while(0);b[w>>2]=e;b[n>>2]=g;b[m>>2]=d;Xa(w);nc(a,c,w,f+(l<<3)|0)|0;if((l|0)==(v|0))break;l=l+1|0;d=b[u>>2]|0}w=0;S=x;return w|0}w=-1;S=x;return w|0}function tc(a,b){a=a|0;b=b|0;var c=0;if(!b){c=1;return c|0}c=a;a=1;do{a=B((b&1|0)==0?1:c,a)|0;b=b>>1;c=B(c,c)|0}while((b|0)!=0);return a|0}function uc(a,c,d){a=a|0;c=c|0;d=d|0;var f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0,n=0,o=0.0;if(!(xa(c,d)|0)){n=0;return n|0}c=wa(c)|0;o=+e[d>>3];f=+e[d+8>>3];f=c&f<0.0?f+6.283185307179586:f;n=b[a>>2]|0;if((n|0)<=0){n=0;return n|0}m=b[a+4>>2]|0;if(c){c=0;d=-1;a=0;a:while(1){l=a;while(1){i=+e[m+(l<<4)>>3];k=+e[m+(l<<4)+8>>3];a=(d+2|0)%(n|0)|0;h=+e[m+(a<<4)>>3];g=+e[m+(a<<4)+8>>3];if(i>h){j=i;i=k}else{j=h;h=i;i=g;g=k}if(!(oj))break;d=l+1|0;if((d|0)<(n|0)){a=l;l=d;d=a}else{d=22;break a}}k=g<0.0?g+6.283185307179586:g;i=i<0.0?i+6.283185307179586:i;f=i==f|k==f?f+-2.220446049250313e-16:f;k=k+(o-h)/(j-h)*(i-k);if((k<0.0?k+6.283185307179586:k)>f)c=c^1;a=l+1|0;if((a|0)>=(n|0)){d=22;break}else d=l}if((d|0)==22)return c|0}else{c=0;d=-1;a=0;b:while(1){l=a;while(1){i=+e[m+(l<<4)>>3];k=+e[m+(l<<4)+8>>3];a=(d+2|0)%(n|0)|0;h=+e[m+(a<<4)>>3];g=+e[m+(a<<4)+8>>3];if(i>h){j=i;i=k}else{j=h;h=i;i=g;g=k}if(!(oj))break;d=l+1|0;if((d|0)<(n|0)){a=l;l=d;d=a}else{d=22;break b}}f=i==f|g==f?f+-2.220446049250313e-16:f;if(g+(o-h)/(j-h)*(i-g)>f)c=c^1;a=l+1|0;if((a|0)>=(n|0)){d=22;break}else d=l}if((d|0)==22)return c|0}return 0}function vc(a,c){a=a|0;c=c|0;var d=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,r=0,s=0,t=0,u=0,v=0;r=b[a>>2]|0;if(!r){b[c>>2]=0;b[c+4>>2]=0;b[c+8>>2]=0;b[c+12>>2]=0;b[c+16>>2]=0;b[c+20>>2]=0;b[c+24>>2]=0;b[c+28>>2]=0;return}s=c+8|0;e[s>>3]=1797693134862315708145274.0e284;t=c+24|0;e[t>>3]=1797693134862315708145274.0e284;e[c>>3]=-1797693134862315708145274.0e284;u=c+16|0;e[u>>3]=-1797693134862315708145274.0e284;if((r|0)<=0)return;o=b[a+4>>2]|0;l=1797693134862315708145274.0e284;m=-1797693134862315708145274.0e284;n=0;a=-1;h=1797693134862315708145274.0e284;i=1797693134862315708145274.0e284;k=-1797693134862315708145274.0e284;f=-1797693134862315708145274.0e284;p=0;while(1){d=+e[o+(p<<4)>>3];j=+e[o+(p<<4)+8>>3];a=a+2|0;g=+e[o+(((a|0)==(r|0)?0:a)<<4)+8>>3];if(d>3]=d;h=d}if(j>3]=j;i=j}if(d>k)e[c>>3]=d;else d=k;if(j>f){e[u>>3]=j;f=j}l=j>0.0&jm?j:m;n=n|+q(+(j-g))>3.141592653589793;a=p+1|0;if((a|0)==(r|0))break;else{v=p;k=d;p=a;a=v}}if(!n)return;e[u>>3]=m;e[t>>3]=l;return}function wc(a,c){a=a|0;c=c|0;var d=0,f=0,g=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;r=b[a>>2]|0;if(r){s=c+8|0;e[s>>3]=1797693134862315708145274.0e284;t=c+24|0;e[t>>3]=1797693134862315708145274.0e284;e[c>>3]=-1797693134862315708145274.0e284;u=c+16|0;e[u>>3]=-1797693134862315708145274.0e284;if((r|0)>0){g=b[a+4>>2]|0;o=1797693134862315708145274.0e284;p=-1797693134862315708145274.0e284;f=0;d=-1;k=1797693134862315708145274.0e284;l=1797693134862315708145274.0e284;n=-1797693134862315708145274.0e284;i=-1797693134862315708145274.0e284;v=0;while(1){h=+e[g+(v<<4)>>3];m=+e[g+(v<<4)+8>>3];z=d+2|0;j=+e[g+(((z|0)==(r|0)?0:z)<<4)+8>>3];if(h>3]=h;k=h}if(m>3]=m;l=m}if(h>n)e[c>>3]=h;else h=n;if(m>i){e[u>>3]=m;i=m}o=m>0.0&mp?m:p;f=f|+q(+(m-j))>3.141592653589793;d=v+1|0;if((d|0)==(r|0))break;else{z=v;n=h;v=d;d=z}}if(f){e[u>>3]=p;e[t>>3]=o}}}else{b[c>>2]=0;b[c+4>>2]=0;b[c+8>>2]=0;b[c+12>>2]=0;b[c+16>>2]=0;b[c+20>>2]=0;b[c+24>>2]=0;b[c+28>>2]=0}z=a+8|0;d=b[z>>2]|0;if((d|0)<=0)return;y=a+12|0;x=0;do{g=b[y>>2]|0;f=x;x=x+1|0;t=c+(x<<5)|0;u=b[g+(f<<3)>>2]|0;if(u){v=c+(x<<5)+8|0;e[v>>3]=1797693134862315708145274.0e284;a=c+(x<<5)+24|0;e[a>>3]=1797693134862315708145274.0e284;e[t>>3]=-1797693134862315708145274.0e284;w=c+(x<<5)+16|0;e[w>>3]=-1797693134862315708145274.0e284;if((u|0)>0){r=b[g+(f<<3)+4>>2]|0;o=1797693134862315708145274.0e284;p=-1797693134862315708145274.0e284;g=0;f=-1;s=0;k=1797693134862315708145274.0e284;l=1797693134862315708145274.0e284;m=-1797693134862315708145274.0e284;i=-1797693134862315708145274.0e284;while(1){h=+e[r+(s<<4)>>3];n=+e[r+(s<<4)+8>>3];f=f+2|0;j=+e[r+(((f|0)==(u|0)?0:f)<<4)+8>>3];if(h>3]=h;k=h}if(n>3]=n;l=n}if(h>m)e[t>>3]=h;else h=m;if(n>i){e[w>>3]=n;i=n}o=n>0.0&np?n:p;g=g|+q(+(n-j))>3.141592653589793;f=s+1|0;if((f|0)==(u|0))break;else{A=s;s=f;m=h;f=A}}if(g){e[w>>3]=p;e[a>>3]=o}}}else{b[t>>2]=0;b[t+4>>2]=0;b[t+8>>2]=0;b[t+12>>2]=0;b[t+16>>2]=0;b[t+20>>2]=0;b[t+24>>2]=0;b[t+28>>2]=0;d=b[z>>2]|0}}while((x|0)<(d|0));return}function xc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0;if(!(uc(a,c,d)|0)){f=0;return f|0}f=a+8|0;if((b[f>>2]|0)<=0){f=1;return f|0}e=a+12|0;a=0;while(1){g=a;a=a+1|0;if(uc((b[e>>2]|0)+(g<<3)|0,c+(a<<5)|0,d)|0){a=0;e=6;break}if((a|0)>=(b[f>>2]|0)){a=1;e=6;break}}if((e|0)==6)return a|0;return 0}function yc(){return 8}function zc(){return 16}function Ac(){return 168}function Bc(){return 8}function Cc(){return 16}function Dc(){return 12}function Ec(){return 8}function Fc(a){a=a|0;var b=0.0,c=0.0;c=+e[a>>3];b=+e[a+8>>3];return +(+r(+(c*c+b*b)))}function Gc(a,b,c,d,f){a=a|0;b=b|0;c=c|0;d=d|0;f=f|0;var g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;k=+e[a>>3];j=+e[b>>3]-k;i=+e[a+8>>3];h=+e[b+8>>3]-i;m=+e[c>>3];g=+e[d>>3]-m;n=+e[c+8>>3];l=+e[d+8>>3]-n;g=(g*(i-n)-(k-m)*l)/(j*l-h*g);e[f>>3]=k+j*g;e[f+8>>3]=i+h*g;return}function Hc(a,b){a=a|0;b=b|0;if(!(+e[a>>3]==+e[b>>3])){b=0;return b|0}b=+e[a+8>>3]==+e[b+8>>3];return b|0}function Ic(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,f=0.0;f=+e[a>>3]-+e[b>>3];d=+e[a+8>>3]-+e[b+8>>3];c=+e[a+16>>3]-+e[b+16>>3];return +(f*f+d*d+c*c)}function Jc(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,f=0.0;c=+e[a>>3];d=+t(+c);c=+u(+c);e[b+16>>3]=c;c=+e[a+8>>3];f=d*+t(+c);e[b>>3]=f;c=d*+u(+c);e[b+8>>3]=c;return}function Kc(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=S;S=S+32|0;f=k+16|0;g=k;Ub(a,c,f);h=Ab(a,c)|0;j=Lb(a,c)|0;pa(h,g);c=qa(h,b[f>>2]|0)|0;if(!(la(h)|0)){j=c;S=k;return j|0}do switch(h|0){case 4:{a=0;d=14;break}case 14:{a=1;d=14;break}case 24:{a=2;d=14;break}case 38:{a=3;d=14;break}case 49:{a=4;d=14;break}case 58:{a=5;d=14;break}case 63:{a=6;d=14;break}case 72:{a=7;d=14;break}case 83:{a=8;d=14;break}case 97:{a=9;d=14;break}case 107:{a=10;d=14;break}case 117:{a=11;d=14;break}default:{i=0;e=0}}while(0);if((d|0)==14){i=b[22096+(a*24|0)+8>>2]|0;e=b[22096+(a*24|0)+16>>2]|0}a=b[f>>2]|0;if((a|0)!=(b[g>>2]|0)){h=ma(h)|0;a=b[f>>2]|0;if(h|(a|0)==(e|0))c=(c+1|0)%6|0}if((j|0)==3&(a|0)==(e|0)){j=(c+5|0)%6|0;S=k;return j|0}if(!((j|0)==5&(a|0)==(i|0))){j=c;S=k;return j|0}j=(c+1|0)%6|0;S=k;return j|0}function Lc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0;e=Fb(a,c)|0;if((d+-1|0)>>>0>5){d=-1;return d|0}f=(e|0)!=0;if((d|0)==1&f){d=-1;return d|0}e=Kc(a,c)|0;if(f){d=(5-e+(b[22384+(d<<2)>>2]|0)|0)%5|0;return d|0}else{d=(6-e+(b[22416+(d<<2)>>2]|0)|0)%6|0;return d|0}return 0}function Mc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0;if((c|0)>0){e=Yc(c,4)|0;b[a>>2]=e;if(!e)H(23230,23253,40,23267)}else b[a>>2]=0;b[a+4>>2]=c;b[a+8>>2]=0;b[a+12>>2]=d;return}function Nc(a){a=a|0;var c=0,d=0,f=0,g=0,h=0,i=0,j=0;g=a+4|0;h=a+12|0;i=a+8|0;a:while(1){d=b[g>>2]|0;c=0;while(1){if((c|0)>=(d|0))break a;f=b[a>>2]|0;j=b[f+(c<<2)>>2]|0;if(!j)c=c+1|0;else break}c=f+(~~(+q(+(+s(10.0,+(+(15-(b[h>>2]|0)|0)))*(+e[j>>3]+ +e[j+8>>3])))%+(d|0))>>>0<<2)|0;d=b[c>>2]|0;b:do if(d|0){f=j+32|0;if((d|0)==(j|0))b[c>>2]=b[f>>2];else{d=d+32|0;c=b[d>>2]|0;if(!c)break;while(1){if((c|0)==(j|0))break;d=c+32|0;c=b[d>>2]|0;if(!c)break b}b[d>>2]=b[f>>2]}Xc(j);b[i>>2]=(b[i>>2]|0)+-1}while(0)}Xc(b[a>>2]|0);return}function Oc(a){a=a|0;var c=0,d=0,e=0;e=b[a+4>>2]|0;d=0;while(1){if((d|0)>=(e|0)){c=0;d=4;break}c=b[(b[a>>2]|0)+(d<<2)>>2]|0;if(!c)d=d+1|0;else{d=4;break}}if((d|0)==4)return c|0;return 0}function Pc(a,c){a=a|0;c=c|0;var d=0,f=0,g=0,h=0;d=~~(+q(+(+s(10.0,+(+(15-(b[a+12>>2]|0)|0)))*(+e[c>>3]+ +e[c+8>>3])))%+(b[a+4>>2]|0))>>>0;d=(b[a>>2]|0)+(d<<2)|0;f=b[d>>2]|0;if(!f){h=1;return h|0}h=c+32|0;do if((f|0)!=(c|0)){d=b[f+32>>2]|0;if(!d){h=1;return h|0}g=d;while(1){if((g|0)==(c|0)){g=8;break}d=b[g+32>>2]|0;if(!d){d=1;g=10;break}else{f=g;g=d}}if((g|0)==8){b[f+32>>2]=b[h>>2];break}else if((g|0)==10)return d|0}else b[d>>2]=b[h>>2];while(0);Xc(c);h=a+8|0;b[h>>2]=(b[h>>2]|0)+-1;h=0;return h|0}function Qc(a,c,d){a=a|0;c=c|0;d=d|0;var f=0,g=0,h=0,i=0;h=Wc(40)|0;if(!h)H(23283,23253,98,23296);b[h>>2]=b[c>>2];b[h+4>>2]=b[c+4>>2];b[h+8>>2]=b[c+8>>2];b[h+12>>2]=b[c+12>>2];g=h+16|0;b[g>>2]=b[d>>2];b[g+4>>2]=b[d+4>>2];b[g+8>>2]=b[d+8>>2];b[g+12>>2]=b[d+12>>2];b[h+32>>2]=0;g=~~(+q(+(+s(10.0,+(+(15-(b[a+12>>2]|0)|0)))*(+e[c>>3]+ +e[c+8>>3])))%+(b[a+4>>2]|0))>>>0;g=(b[a>>2]|0)+(g<<2)|0;f=b[g>>2]|0;do if(!f)b[g>>2]=h;else{while(1){if(hb(f,c)|0?hb(f+16|0,d)|0:0)break;g=b[f+32>>2]|0;f=(g|0)==0?f:g;if(!(b[f+32>>2]|0)){i=10;break}}if((i|0)==10){b[f+32>>2]=h;break}Xc(h);i=f;return i|0}while(0);i=a+8|0;b[i>>2]=(b[i>>2]|0)+1;i=h;return i|0}function Rc(a,c,d){a=a|0;c=c|0;d=d|0;var f=0,g=0;g=~~(+q(+(+s(10.0,+(+(15-(b[a+12>>2]|0)|0)))*(+e[c>>3]+ +e[c+8>>3])))%+(b[a+4>>2]|0))>>>0;g=b[(b[a>>2]|0)+(g<<2)>>2]|0;if(!g){d=0;return d|0}if(!d){a=g;while(1){if(hb(a,c)|0){f=10;break}a=b[a+32>>2]|0;if(!a){a=0;f=10;break}}if((f|0)==10)return a|0}a=g;while(1){if(hb(a,c)|0?hb(a+16|0,d)|0:0){f=10;break}a=b[a+32>>2]|0;if(!a){a=0;f=10;break}}if((f|0)==10)return a|0;return 0}function Sc(a,c){a=a|0;c=c|0;var d=0;d=~~(+q(+(+s(10.0,+(+(15-(b[a+12>>2]|0)|0)))*(+e[c>>3]+ +e[c+8>>3])))%+(b[a+4>>2]|0))>>>0;a=b[(b[a>>2]|0)+(d<<2)>>2]|0;if(!a){d=0;return d|0}while(1){if(hb(a,c)|0){c=5;break}a=b[a+32>>2]|0;if(!a){a=0;c=5;break}}if((c|0)==5)return a|0;return 0}function Tc(){return 23312}function Uc(a){a=+a;return +(+id(+a))}function Vc(a){a=+a;return ~~+Uc(a)|0}function Wc(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=S;S=S+16|0;n=w;do if(a>>>0<245){k=a>>>0<11?16:a+11&-8;a=k>>>3;m=b[5829]|0;d=m>>>a;if(d&3|0){c=(d&1^1)+a|0;a=23356+(c<<1<<2)|0;d=a+8|0;e=b[d>>2]|0;f=e+8|0;g=b[f>>2]|0;if((g|0)==(a|0))b[5829]=m&~(1<>2]=a;b[d>>2]=g}v=c<<3;b[e+4>>2]=v|3;v=e+v+4|0;b[v>>2]=b[v>>2]|1;v=f;S=w;return v|0}l=b[5831]|0;if(k>>>0>l>>>0){if(d|0){c=2<>>12&16;c=c>>>i;d=c>>>5&8;c=c>>>d;g=c>>>2&4;c=c>>>g;a=c>>>1&2;c=c>>>a;e=c>>>1&1;e=(d|i|g|a|e)+(c>>>e)|0;c=23356+(e<<1<<2)|0;a=c+8|0;g=b[a>>2]|0;i=g+8|0;d=b[i>>2]|0;if((d|0)==(c|0)){a=m&~(1<>2]=c;b[a>>2]=d;a=m}v=e<<3;h=v-k|0;b[g+4>>2]=k|3;f=g+k|0;b[f+4>>2]=h|1;b[g+v>>2]=h;if(l|0){e=b[5834]|0;c=l>>>3;d=23356+(c<<1<<2)|0;c=1<>2]|0}b[a>>2]=e;b[c+12>>2]=e;b[e+8>>2]=c;b[e+12>>2]=d}b[5831]=h;b[5834]=f;v=i;S=w;return v|0}g=b[5830]|0;if(g){d=(g&0-g)+-1|0;f=d>>>12&16;d=d>>>f;e=d>>>5&8;d=d>>>e;h=d>>>2&4;d=d>>>h;i=d>>>1&2;d=d>>>i;j=d>>>1&1;j=b[23620+((e|f|h|i|j)+(d>>>j)<<2)>>2]|0;d=j;i=j;j=(b[j+4>>2]&-8)-k|0;while(1){a=b[d+16>>2]|0;if(!a){a=b[d+20>>2]|0;if(!a)break}h=(b[a+4>>2]&-8)-k|0;f=h>>>0>>0;d=a;i=f?a:i;j=f?h:j}h=i+k|0;if(h>>>0>i>>>0){f=b[i+24>>2]|0;c=b[i+12>>2]|0;do if((c|0)==(i|0)){a=i+20|0;c=b[a>>2]|0;if(!c){a=i+16|0;c=b[a>>2]|0;if(!c){d=0;break}}while(1){e=c+20|0;d=b[e>>2]|0;if(!d){e=c+16|0;d=b[e>>2]|0;if(!d)break;else{c=d;a=e}}else{c=d;a=e}}b[a>>2]=0;d=c}else{d=b[i+8>>2]|0;b[d+12>>2]=c;b[c+8>>2]=d;d=c}while(0);do if(f|0){c=b[i+28>>2]|0;a=23620+(c<<2)|0;if((i|0)==(b[a>>2]|0)){b[a>>2]=d;if(!d){b[5830]=g&~(1<>2]|0)==(i|0)?v:f+20|0)>>2]=d;if(!d)break}b[d+24>>2]=f;c=b[i+16>>2]|0;if(c|0){b[d+16>>2]=c;b[c+24>>2]=d}c=b[i+20>>2]|0;if(c|0){b[d+20>>2]=c;b[c+24>>2]=d}}while(0);if(j>>>0<16){v=j+k|0;b[i+4>>2]=v|3;v=i+v+4|0;b[v>>2]=b[v>>2]|1}else{b[i+4>>2]=k|3;b[h+4>>2]=j|1;b[h+j>>2]=j;if(l|0){e=b[5834]|0;c=l>>>3;d=23356+(c<<1<<2)|0;c=1<>2]|0}b[a>>2]=e;b[c+12>>2]=e;b[e+8>>2]=c;b[e+12>>2]=d}b[5831]=j;b[5834]=h}v=i+8|0;S=w;return v|0}else m=k}else m=k}else m=k}else if(a>>>0<=4294967231){a=a+11|0;k=a&-8;e=b[5830]|0;if(e){f=0-k|0;a=a>>>8;if(a)if(k>>>0>16777215)j=31;else{m=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;j=14-(i|m|j)+(q<>>15)|0;j=k>>>(j+7|0)&1|j<<1}else j=0;d=b[23620+(j<<2)>>2]|0;a:do if(!d){d=0;a=0;q=61}else{a=0;i=k<<((j|0)==31?0:25-(j>>>1)|0);g=0;while(1){h=(b[d+4>>2]&-8)-k|0;if(h>>>0>>0)if(!h){a=d;f=0;q=65;break a}else{a=d;f=h}q=b[d+20>>2]|0;d=b[d+16+(i>>>31<<2)>>2]|0;g=(q|0)==0|(q|0)==(d|0)?g:q;if(!d){d=g;q=61;break}else i=i<<1}}while(0);if((q|0)==61){if((d|0)==0&(a|0)==0){a=2<>>12&16;m=m>>>h;g=m>>>5&8;m=m>>>g;i=m>>>2&4;m=m>>>i;j=m>>>1&2;m=m>>>j;d=m>>>1&1;a=0;d=b[23620+((g|h|i|j|d)+(m>>>d)<<2)>>2]|0}if(!d){i=a;h=f}else q=65}if((q|0)==65){g=d;while(1){m=(b[g+4>>2]&-8)-k|0;d=m>>>0>>0;f=d?m:f;a=d?g:a;d=b[g+16>>2]|0;if(!d)d=b[g+20>>2]|0;if(!d){i=a;h=f;break}else g=d}}if(((i|0)!=0?h>>>0<((b[5831]|0)-k|0)>>>0:0)?(l=i+k|0,l>>>0>i>>>0):0){g=b[i+24>>2]|0;c=b[i+12>>2]|0;do if((c|0)==(i|0)){a=i+20|0;c=b[a>>2]|0;if(!c){a=i+16|0;c=b[a>>2]|0;if(!c){c=0;break}}while(1){f=c+20|0;d=b[f>>2]|0;if(!d){f=c+16|0;d=b[f>>2]|0;if(!d)break;else{c=d;a=f}}else{c=d;a=f}}b[a>>2]=0}else{v=b[i+8>>2]|0;b[v+12>>2]=c;b[c+8>>2]=v}while(0);do if(g){a=b[i+28>>2]|0;d=23620+(a<<2)|0;if((i|0)==(b[d>>2]|0)){b[d>>2]=c;if(!c){e=e&~(1<>2]|0)==(i|0)?v:g+20|0)>>2]=c;if(!c)break}b[c+24>>2]=g;a=b[i+16>>2]|0;if(a|0){b[c+16>>2]=a;b[a+24>>2]=c}a=b[i+20>>2]|0;if(a){b[c+20>>2]=a;b[a+24>>2]=c}}while(0);b:do if(h>>>0<16){v=h+k|0;b[i+4>>2]=v|3;v=i+v+4|0;b[v>>2]=b[v>>2]|1}else{b[i+4>>2]=k|3;b[l+4>>2]=h|1;b[l+h>>2]=h;c=h>>>3;if(h>>>0<256){d=23356+(c<<1<<2)|0;a=b[5829]|0;c=1<>2]|0}b[a>>2]=l;b[c+12>>2]=l;b[l+8>>2]=c;b[l+12>>2]=d;break}c=h>>>8;if(c)if(h>>>0>16777215)d=31;else{u=(c+1048320|0)>>>16&8;v=c<>>16&4;v=v<>>16&2;d=14-(t|u|d)+(v<>>15)|0;d=h>>>(d+7|0)&1|d<<1}else d=0;c=23620+(d<<2)|0;b[l+28>>2]=d;a=l+16|0;b[a+4>>2]=0;b[a>>2]=0;a=1<>2]=l;b[l+24>>2]=c;b[l+12>>2]=l;b[l+8>>2]=l;break}c=b[c>>2]|0;c:do if((b[c+4>>2]&-8|0)!=(h|0)){e=h<<((d|0)==31?0:25-(d>>>1)|0);while(1){d=c+16+(e>>>31<<2)|0;a=b[d>>2]|0;if(!a)break;if((b[a+4>>2]&-8|0)==(h|0)){c=a;break c}else{e=e<<1;c=a}}b[d>>2]=l;b[l+24>>2]=c;b[l+12>>2]=l;b[l+8>>2]=l;break b}while(0);u=c+8|0;v=b[u>>2]|0;b[v+12>>2]=l;b[u>>2]=l;b[l+8>>2]=v;b[l+12>>2]=c;b[l+24>>2]=0}while(0);v=i+8|0;S=w;return v|0}else m=k}else m=k}else m=-1;while(0);d=b[5831]|0;if(d>>>0>=m>>>0){c=d-m|0;a=b[5834]|0;if(c>>>0>15){v=a+m|0;b[5834]=v;b[5831]=c;b[v+4>>2]=c|1;b[a+d>>2]=c;b[a+4>>2]=m|3}else{b[5831]=0;b[5834]=0;b[a+4>>2]=d|3;v=a+d+4|0;b[v>>2]=b[v>>2]|1}v=a+8|0;S=w;return v|0}h=b[5832]|0;if(h>>>0>m>>>0){t=h-m|0;b[5832]=t;v=b[5835]|0;u=v+m|0;b[5835]=u;b[u+4>>2]=t|1;b[v+4>>2]=m|3;v=v+8|0;S=w;return v|0}if(!(b[5947]|0)){b[5949]=4096;b[5948]=4096;b[5950]=-1;b[5951]=-1;b[5952]=0;b[5940]=0;b[5947]=n&-16^1431655768;a=4096}else a=b[5949]|0;i=m+48|0;j=m+47|0;g=a+j|0;f=0-a|0;k=g&f;if(k>>>0<=m>>>0){v=0;S=w;return v|0}a=b[5939]|0;if(a|0?(l=b[5937]|0,n=l+k|0,n>>>0<=l>>>0|n>>>0>a>>>0):0){v=0;S=w;return v|0}d:do if(!(b[5940]&4)){d=b[5835]|0;e:do if(d){e=23764;while(1){n=b[e>>2]|0;if(n>>>0<=d>>>0?(n+(b[e+4>>2]|0)|0)>>>0>d>>>0:0)break;a=b[e+8>>2]|0;if(!a){q=128;break e}else e=a}c=g-h&f;if(c>>>0<2147483647){a=jd(c|0)|0;if((a|0)==((b[e>>2]|0)+(b[e+4>>2]|0)|0)){if((a|0)!=(-1|0)){h=c;g=a;q=145;break d}}else{e=a;q=136}}else c=0}else q=128;while(0);do if((q|0)==128){d=jd(0)|0;if((d|0)!=(-1|0)?(c=d,o=b[5948]|0,p=o+-1|0,c=((p&c|0)==0?0:(p+c&0-o)-c|0)+k|0,o=b[5937]|0,p=c+o|0,c>>>0>m>>>0&c>>>0<2147483647):0){n=b[5939]|0;if(n|0?p>>>0<=o>>>0|p>>>0>n>>>0:0){c=0;break}a=jd(c|0)|0;if((a|0)==(d|0)){h=c;g=d;q=145;break d}else{e=a;q=136}}else c=0}while(0);do if((q|0)==136){d=0-c|0;if(!(i>>>0>c>>>0&(c>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){c=0;break}else{h=c;g=e;q=145;break d}a=b[5949]|0;a=j-c+a&0-a;if(a>>>0>=2147483647){h=c;g=e;q=145;break d}if((jd(a|0)|0)==(-1|0)){jd(d|0)|0;c=0;break}else{h=a+c|0;g=e;q=145;break d}}while(0);b[5940]=b[5940]|4;q=143}else{c=0;q=143}while(0);if(((q|0)==143?k>>>0<2147483647:0)?(t=jd(k|0)|0,p=jd(0)|0,r=p-t|0,s=r>>>0>(m+40|0)>>>0,!((t|0)==(-1|0)|s^1|t>>>0

>>0&((t|0)!=(-1|0)&(p|0)!=(-1|0))^1)):0){h=s?r:c;g=t;q=145}if((q|0)==145){c=(b[5937]|0)+h|0;b[5937]=c;if(c>>>0>(b[5938]|0)>>>0)b[5938]=c;j=b[5835]|0;f:do if(j){c=23764;while(1){a=b[c>>2]|0;d=b[c+4>>2]|0;if((g|0)==(a+d|0)){q=154;break}e=b[c+8>>2]|0;if(!e)break;else c=e}if(((q|0)==154?(u=c+4|0,(b[c+12>>2]&8|0)==0):0)?g>>>0>j>>>0&a>>>0<=j>>>0:0){b[u>>2]=d+h;v=(b[5832]|0)+h|0;t=j+8|0;t=(t&7|0)==0?0:0-t&7;u=j+t|0;t=v-t|0;b[5835]=u;b[5832]=t;b[u+4>>2]=t|1;b[j+v+4>>2]=40;b[5836]=b[5951];break}if(g>>>0<(b[5833]|0)>>>0)b[5833]=g;d=g+h|0;c=23764;while(1){if((b[c>>2]|0)==(d|0)){q=162;break}a=b[c+8>>2]|0;if(!a)break;else c=a}if((q|0)==162?(b[c+12>>2]&8|0)==0:0){b[c>>2]=g;l=c+4|0;b[l>>2]=(b[l>>2]|0)+h;l=g+8|0;l=g+((l&7|0)==0?0:0-l&7)|0;c=d+8|0;c=d+((c&7|0)==0?0:0-c&7)|0;k=l+m|0;i=c-l-m|0;b[l+4>>2]=m|3;g:do if((j|0)==(c|0)){v=(b[5832]|0)+i|0;b[5832]=v;b[5835]=k;b[k+4>>2]=v|1}else{if((b[5834]|0)==(c|0)){v=(b[5831]|0)+i|0;b[5831]=v;b[5834]=k;b[k+4>>2]=v|1;b[k+v>>2]=v;break}a=b[c+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;h:do if(a>>>0<256){a=b[c+8>>2]|0;d=b[c+12>>2]|0;if((d|0)==(a|0)){b[5829]=b[5829]&~(1<>2]=d;b[d+8>>2]=a;break}}else{g=b[c+24>>2]|0;a=b[c+12>>2]|0;do if((a|0)==(c|0)){d=c+16|0;e=d+4|0;a=b[e>>2]|0;if(!a){a=b[d>>2]|0;if(!a){a=0;break}}else d=e;while(1){f=a+20|0;e=b[f>>2]|0;if(!e){f=a+16|0;e=b[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}b[d>>2]=0}else{v=b[c+8>>2]|0;b[v+12>>2]=a;b[a+8>>2]=v}while(0);if(!g)break;d=b[c+28>>2]|0;e=23620+(d<<2)|0;do if((b[e>>2]|0)!=(c|0)){v=g+16|0;b[((b[v>>2]|0)==(c|0)?v:g+20|0)>>2]=a;if(!a)break h}else{b[e>>2]=a;if(a|0)break;b[5830]=b[5830]&~(1<>2]=g;d=c+16|0;e=b[d>>2]|0;if(e|0){b[a+16>>2]=e;b[e+24>>2]=a}d=b[d+4>>2]|0;if(!d)break;b[a+20>>2]=d;b[d+24>>2]=a}while(0);c=c+h|0;f=h+i|0}else f=i;c=c+4|0;b[c>>2]=b[c>>2]&-2;b[k+4>>2]=f|1;b[k+f>>2]=f;c=f>>>3;if(f>>>0<256){d=23356+(c<<1<<2)|0;a=b[5829]|0;c=1<>2]|0}b[a>>2]=k;b[c+12>>2]=k;b[k+8>>2]=c;b[k+12>>2]=d;break}c=f>>>8;do if(!c)e=0;else{if(f>>>0>16777215){e=31;break}u=(c+1048320|0)>>>16&8;v=c<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=f>>>(e+7|0)&1|e<<1}while(0);c=23620+(e<<2)|0;b[k+28>>2]=e;a=k+16|0;b[a+4>>2]=0;b[a>>2]=0;a=b[5830]|0;d=1<>2]=k;b[k+24>>2]=c;b[k+12>>2]=k;b[k+8>>2]=k;break}c=b[c>>2]|0;i:do if((b[c+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=c+16+(e>>>31<<2)|0;a=b[d>>2]|0;if(!a)break;if((b[a+4>>2]&-8|0)==(f|0)){c=a;break i}else{e=e<<1;c=a}}b[d>>2]=k;b[k+24>>2]=c;b[k+12>>2]=k;b[k+8>>2]=k;break g}while(0);u=c+8|0;v=b[u>>2]|0;b[v+12>>2]=k;b[u>>2]=k;b[k+8>>2]=v;b[k+12>>2]=c;b[k+24>>2]=0}while(0);v=l+8|0;S=w;return v|0}c=23764;while(1){a=b[c>>2]|0;if(a>>>0<=j>>>0?(v=a+(b[c+4>>2]|0)|0,v>>>0>j>>>0):0)break;c=b[c+8>>2]|0}f=v+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0>>0?j:a;c=a+8|0;d=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=d-t|0;b[5835]=u;b[5832]=t;b[u+4>>2]=t|1;b[g+d+4>>2]=40;b[5836]=b[5951];d=a+4|0;b[d>>2]=27;b[c>>2]=b[5941];b[c+4>>2]=b[5942];b[c+8>>2]=b[5943];b[c+12>>2]=b[5944];b[5941]=g;b[5942]=h;b[5944]=0;b[5943]=c;c=a+24|0;do{u=c;c=c+4|0;b[c>>2]=7}while((u+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;b[d>>2]=b[d>>2]&-2;b[j+4>>2]=g|1;b[a>>2]=g;c=g>>>3;if(g>>>0<256){d=23356+(c<<1<<2)|0;a=b[5829]|0;c=1<>2]|0}b[a>>2]=j;b[c+12>>2]=j;b[j+8>>2]=c;b[j+12>>2]=d;break}c=g>>>8;if(c)if(g>>>0>16777215)e=31;else{u=(c+1048320|0)>>>16&8;v=c<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=g>>>(e+7|0)&1|e<<1}else e=0;d=23620+(e<<2)|0;b[j+28>>2]=e;b[j+20>>2]=0;b[f>>2]=0;c=b[5830]|0;a=1<>2]=j;b[j+24>>2]=d;b[j+12>>2]=j;b[j+8>>2]=j;break}c=b[d>>2]|0;j:do if((b[c+4>>2]&-8|0)!=(g|0)){e=g<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=c+16+(e>>>31<<2)|0;a=b[d>>2]|0;if(!a)break;if((b[a+4>>2]&-8|0)==(g|0)){c=a;break j}else{e=e<<1;c=a}}b[d>>2]=j;b[j+24>>2]=c;b[j+12>>2]=j;b[j+8>>2]=j;break f}while(0);u=c+8|0;v=b[u>>2]|0;b[v+12>>2]=j;b[u>>2]=j;b[j+8>>2]=v;b[j+12>>2]=c;b[j+24>>2]=0}}else{v=b[5833]|0;if((v|0)==0|g>>>0>>0)b[5833]=g;b[5941]=g;b[5942]=h;b[5944]=0;b[5838]=b[5947];b[5837]=-1;b[5842]=23356;b[5841]=23356;b[5844]=23364;b[5843]=23364;b[5846]=23372;b[5845]=23372;b[5848]=23380;b[5847]=23380;b[5850]=23388;b[5849]=23388;b[5852]=23396;b[5851]=23396;b[5854]=23404;b[5853]=23404;b[5856]=23412;b[5855]=23412;b[5858]=23420;b[5857]=23420;b[5860]=23428;b[5859]=23428;b[5862]=23436;b[5861]=23436;b[5864]=23444;b[5863]=23444;b[5866]=23452;b[5865]=23452;b[5868]=23460;b[5867]=23460;b[5870]=23468;b[5869]=23468;b[5872]=23476;b[5871]=23476;b[5874]=23484;b[5873]=23484;b[5876]=23492;b[5875]=23492;b[5878]=23500;b[5877]=23500;b[5880]=23508;b[5879]=23508;b[5882]=23516;b[5881]=23516;b[5884]=23524;b[5883]=23524;b[5886]=23532;b[5885]=23532;b[5888]=23540;b[5887]=23540;b[5890]=23548;b[5889]=23548;b[5892]=23556;b[5891]=23556;b[5894]=23564;b[5893]=23564;b[5896]=23572;b[5895]=23572;b[5898]=23580;b[5897]=23580;b[5900]=23588;b[5899]=23588;b[5902]=23596;b[5901]=23596;b[5904]=23604;b[5903]=23604;v=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=v-t|0;b[5835]=u;b[5832]=t;b[u+4>>2]=t|1;b[g+v+4>>2]=40;b[5836]=b[5951]}while(0);c=b[5832]|0;if(c>>>0>m>>>0){t=c-m|0;b[5832]=t;v=b[5835]|0;u=v+m|0;b[5835]=u;b[u+4>>2]=t|1;b[v+4>>2]=m|3;v=v+8|0;S=w;return v|0}}v=Tc()|0;b[v>>2]=12;v=0;S=w;return v|0}function Xc(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;d=a+-8|0;f=b[5833]|0;a=b[a+-4>>2]|0;c=a&-8;j=d+c|0;do if(!(a&1)){e=b[d>>2]|0;if(!(a&3))return;h=d+(0-e)|0;g=e+c|0;if(h>>>0>>0)return;if((b[5834]|0)==(h|0)){a=j+4|0;c=b[a>>2]|0;if((c&3|0)!=3){i=h;c=g;break}b[5831]=g;b[a>>2]=c&-2;b[h+4>>2]=g|1;b[h+g>>2]=g;return}d=e>>>3;if(e>>>0<256){a=b[h+8>>2]|0;c=b[h+12>>2]|0;if((c|0)==(a|0)){b[5829]=b[5829]&~(1<>2]=c;b[c+8>>2]=a;i=h;c=g;break}}f=b[h+24>>2]|0;a=b[h+12>>2]|0;do if((a|0)==(h|0)){c=h+16|0;d=c+4|0;a=b[d>>2]|0;if(!a){a=b[c>>2]|0;if(!a){a=0;break}}else c=d;while(1){e=a+20|0;d=b[e>>2]|0;if(!d){e=a+16|0;d=b[e>>2]|0;if(!d)break;else{a=d;c=e}}else{a=d;c=e}}b[c>>2]=0}else{i=b[h+8>>2]|0;b[i+12>>2]=a;b[a+8>>2]=i}while(0);if(f){c=b[h+28>>2]|0;d=23620+(c<<2)|0;if((b[d>>2]|0)==(h|0)){b[d>>2]=a;if(!a){b[5830]=b[5830]&~(1<>2]|0)==(h|0)?i:f+20|0)>>2]=a;if(!a){i=h;c=g;break}}b[a+24>>2]=f;c=h+16|0;d=b[c>>2]|0;if(d|0){b[a+16>>2]=d;b[d+24>>2]=a}c=b[c+4>>2]|0;if(c){b[a+20>>2]=c;b[c+24>>2]=a;i=h;c=g}else{i=h;c=g}}else{i=h;c=g}}else{i=d;h=d}while(0);if(h>>>0>=j>>>0)return;a=j+4|0;e=b[a>>2]|0;if(!(e&1))return;if(!(e&2)){if((b[5835]|0)==(j|0)){j=(b[5832]|0)+c|0;b[5832]=j;b[5835]=i;b[i+4>>2]=j|1;if((i|0)!=(b[5834]|0))return;b[5834]=0;b[5831]=0;return}if((b[5834]|0)==(j|0)){j=(b[5831]|0)+c|0;b[5831]=j;b[5834]=h;b[i+4>>2]=j|1;b[h+j>>2]=j;return}f=(e&-8)+c|0;d=e>>>3;do if(e>>>0<256){c=b[j+8>>2]|0;a=b[j+12>>2]|0;if((a|0)==(c|0)){b[5829]=b[5829]&~(1<>2]=a;b[a+8>>2]=c;break}}else{g=b[j+24>>2]|0;a=b[j+12>>2]|0;do if((a|0)==(j|0)){c=j+16|0;d=c+4|0;a=b[d>>2]|0;if(!a){a=b[c>>2]|0;if(!a){d=0;break}}else c=d;while(1){e=a+20|0;d=b[e>>2]|0;if(!d){e=a+16|0;d=b[e>>2]|0;if(!d)break;else{a=d;c=e}}else{a=d;c=e}}b[c>>2]=0;d=a}else{d=b[j+8>>2]|0;b[d+12>>2]=a;b[a+8>>2]=d;d=a}while(0);if(g|0){a=b[j+28>>2]|0;c=23620+(a<<2)|0;if((b[c>>2]|0)==(j|0)){b[c>>2]=d;if(!d){b[5830]=b[5830]&~(1<>2]|0)==(j|0)?e:g+20|0)>>2]=d;if(!d)break}b[d+24>>2]=g;a=j+16|0;c=b[a>>2]|0;if(c|0){b[d+16>>2]=c;b[c+24>>2]=d}a=b[a+4>>2]|0;if(a|0){b[d+20>>2]=a;b[a+24>>2]=d}}}while(0);b[i+4>>2]=f|1;b[h+f>>2]=f;if((i|0)==(b[5834]|0)){b[5831]=f;return}}else{b[a>>2]=e&-2;b[i+4>>2]=c|1;b[h+c>>2]=c;f=c}a=f>>>3;if(f>>>0<256){d=23356+(a<<1<<2)|0;c=b[5829]|0;a=1<>2]|0}b[c>>2]=i;b[a+12>>2]=i;b[i+8>>2]=a;b[i+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)e=31;else{h=(a+1048320|0)>>>16&8;j=a<>>16&4;j=j<>>16&2;e=14-(g|h|e)+(j<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;a=23620+(e<<2)|0;b[i+28>>2]=e;b[i+20>>2]=0;b[i+16>>2]=0;c=b[5830]|0;d=1<>2]=i;b[i+24>>2]=a;b[i+12>>2]=i;b[i+8>>2]=i}else{a=b[a>>2]|0;b:do if((b[a+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=a+16+(e>>>31<<2)|0;c=b[d>>2]|0;if(!c)break;if((b[c+4>>2]&-8|0)==(f|0)){a=c;break b}else{e=e<<1;a=c}}b[d>>2]=i;b[i+24>>2]=a;b[i+12>>2]=i;b[i+8>>2]=i;break a}while(0);h=a+8|0;j=b[h>>2]|0;b[j+12>>2]=i;b[h>>2]=i;b[i+8>>2]=j;b[i+12>>2]=a;b[i+24>>2]=0}while(0);j=(b[5837]|0)+-1|0;b[5837]=j;if(j|0)return;a=23772;while(1){a=b[a>>2]|0;if(!a)break;else a=a+8|0}b[5837]=-1;return}function Yc(a,c){a=a|0;c=c|0;var d=0;if(a){d=B(c,a)|0;if((c|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(c|0)?d:-1}else d=0;a=Wc(d)|0;if(!a)return a|0;if(!(b[a+-4>>2]&3))return a|0;hd(a|0,0,d|0)|0;return a|0}function Zc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (F(b+d+(c>>>0>>0|0)>>>0|0),c|0)|0}function _c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (F(d|0),a-c>>>0|0)|0}function $c(a){a=a|0;return (a?31-(D(a^a-1)|0)|0:32)|0}function ad(a,c,d,e,f){a=a|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=c;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){b[f>>2]=(l>>>0)%(h>>>0);b[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (F(n|0),f)|0}else{if(!g){n=0;f=0;return (F(n|0),f)|0}b[f>>2]=a|0;b[f+4>>2]=c&0;n=0;f=0;return (F(n|0),f)|0}}g=(i|0)==0;do if(h){if(!g){g=(D(i|0)|0)-(D(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;c=g-31>>31;h=m;a=l>>>(m>>>0)&c|k<>>(m>>>0)&c;g=0;i=l<>2]=a|0;b[f+4>>2]=j|c&0;n=0;f=0;return (F(n|0),f)|0}g=h-1|0;if(g&h|0){i=(D(h|0)|0)+33-(D(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;c=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&c;c=c&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f|0){b[f>>2]=g&l;b[f+4>>2]=0}if((h|0)==1){o=j|c&0;p=a|0|0;return (F(o|0),p)|0}else{p=$c(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (F(o|0),p)|0}}else{if(g){if(f|0){b[f>>2]=(k>>>0)%(h>>>0);b[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (F(o|0),p)|0}if(!l){if(f|0){b[f>>2]=0;b[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (F(o|0),p)|0}g=i-1|0;if(!(g&i)){if(f|0){b[f>>2]=a|0;b[f+4>>2]=g&k|c&0}o=0;p=k>>>(($c(i|0)|0)>>>0);return (F(o|0),p)|0}g=(D(i|0)|0)-(D(k|0)|0)|0;if(g>>>0<=30){c=g+1|0;i=31-g|0;h=c;a=k<>>(c>>>0);c=k>>>(c>>>0);g=0;i=l<>2]=a|0;b[f+4>>2]=j|c&0;o=0;p=0;return (F(o|0),p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=Zc(m|0,l|0,-1,-1)|0;d=G()|0;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|c<<1|0;_c(k|0,d|0,e|0,n|0)|0;p=G()|0;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=_c(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;c=G()|0;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){b[f>>2]=a;b[f+4>>2]=c}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (F(o|0),p)|0}function bd(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=S;S=S+16|0;f=g|0;ad(a,c,d,e,f)|0;S=g;return (F(b[f+4>>2]|0),b[f>>2]|0)|0}function cd(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){F(b>>>c|0);return a>>>c|(b&(1<>>c-32|0}function dd(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){F(b<>>32-c|0);return a<=0.0?+p(a+.5):+A(a-.5)}function gd(c,d,e){c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192){K(c|0,d|0,e|0)|0;return c|0}h=c|0;g=c+e|0;if((c&3)==(d&3)){while(c&3){if(!e)return h|0;a[c>>0]=a[d>>0]|0;c=c+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((c|0)<=(f|0)){b[c>>2]=b[d>>2];b[c+4>>2]=b[d+4>>2];b[c+8>>2]=b[d+8>>2];b[c+12>>2]=b[d+12>>2];b[c+16>>2]=b[d+16>>2];b[c+20>>2]=b[d+20>>2];b[c+24>>2]=b[d+24>>2];b[c+28>>2]=b[d+28>>2];b[c+32>>2]=b[d+32>>2];b[c+36>>2]=b[d+36>>2];b[c+40>>2]=b[d+40>>2];b[c+44>>2]=b[d+44>>2];b[c+48>>2]=b[d+48>>2];b[c+52>>2]=b[d+52>>2];b[c+56>>2]=b[d+56>>2];b[c+60>>2]=b[d+60>>2];c=c+64|0;d=d+64|0}while((c|0)<(e|0)){b[c>>2]=b[d>>2];c=c+4|0;d=d+4|0}}else{e=g-4|0;while((c|0)<(e|0)){a[c>>0]=a[d>>0]|0;a[c+1>>0]=a[d+1>>0]|0;a[c+2>>0]=a[d+2>>0]|0;a[c+3>>0]=a[d+3>>0]|0;c=c+4|0;d=d+4|0}}while((c|0)<(g|0)){a[c>>0]=a[d>>0]|0;c=c+1|0;d=d+1|0}return h|0}function hd(c,d,e){c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=c+e|0;d=d&255;if((e|0)>=67){while(c&3){a[c>>0]=d;c=c+1|0}f=h&-4|0;i=d|d<<8|d<<16|d<<24;g=f-64|0;while((c|0)<=(g|0)){b[c>>2]=i;b[c+4>>2]=i;b[c+8>>2]=i;b[c+12>>2]=i;b[c+16>>2]=i;b[c+20>>2]=i;b[c+24>>2]=i;b[c+28>>2]=i;b[c+32>>2]=i;b[c+36>>2]=i;b[c+40>>2]=i;b[c+44>>2]=i;b[c+48>>2]=i;b[c+52>>2]=i;b[c+56>>2]=i;b[c+60>>2]=i;c=c+64|0}while((c|0)<(f|0)){b[c>>2]=i;c=c+4|0}}while((c|0)<(h|0)){a[c>>0]=d;c=c+1|0}return h-e|0}function id(a){a=+a;return a>=0.0?+p(a+.5):+A(a-.5)}function jd(a){a=a|0;var c=0,d=0,e=0;e=J()|0;d=b[g>>2]|0;c=d+a|0;if((a|0)>0&(c|0)<(d|0)|(c|0)<0){M(c|0)|0;I(12);return -1}if((c|0)>(e|0))if(!(L(c|0)|0)){I(12);return -1}b[g>>2]=c;return d|0}\n\n// EMSCRIPTEN_END_FUNCS\nreturn{___uremdi3:bd,_bitshift64Lshr:cd,_bitshift64Shl:dd,_calloc:Yc,_cellAreaKm2:ub,_cellAreaM2:vb,_cellAreaRads2:tb,_compact:Hb,_destroyLinkedPolygon:jc,_edgeLengthKm:pb,_edgeLengthM:qb,_emscripten_replace_memory:V,_exactEdgeLengthKm:xb,_exactEdgeLengthM:yb,_exactEdgeLengthRads:wb,_experimentalH3ToLocalIj:oc,_experimentalLocalIjToH3:pc,_free:Xc,_geoToH3:Sb,_getDestinationH3IndexFromUnidirectionalEdge:cc,_getH3IndexesFromUnidirectionalEdge:ec,_getH3UnidirectionalEdge:ac,_getH3UnidirectionalEdgeBoundary:gc,_getH3UnidirectionalEdgesFromHexagon:fc,_getOriginH3IndexFromUnidirectionalEdge:bc,_getPentagonIndexes:_b,_getRes0Indexes:va,_h3Distance:qc,_h3GetBaseCell:Ab,_h3GetFaces:Yb,_h3GetResolution:zb,_h3IndexesAreNeighbors:$b,_h3IsPentagon:Fb,_h3IsResClassIII:Kb,_h3IsValid:Bb,_h3Line:sc,_h3LineSize:rc,_h3SetToLinkedGeo:ka,_h3ToCenterChild:Gb,_h3ToChildren:Eb,_h3ToGeo:Vb,_h3ToGeoBoundary:Wb,_h3ToParent:Cb,_h3UnidirectionalEdgeIsValid:dc,_hexAreaKm2:nb,_hexAreaM2:ob,_hexRing:ea,_i64Subtract:_c,_kRing:$,_kRingDistances:aa,_llvm_minnum_f64:ed,_llvm_round_f64:fd,_malloc:Wc,_maxFaceCount:Xb,_maxH3ToChildrenSize:Db,_maxKringSize:_,_maxPolyfillSize:fa,_maxUncompactSize:Jb,_memcpy:gd,_memset:hd,_numHexagons:rb,_pentagonIndexCount:Zb,_pointDistKm:jb,_pointDistM:kb,_pointDistRads:ib,_polyfill:ga,_res0IndexCount:ua,_round:id,_sbrk:jd,_sizeOfCoordIJ:Ec,_sizeOfGeoBoundary:Ac,_sizeOfGeoCoord:zc,_sizeOfGeoPolygon:Cc,_sizeOfGeofence:Bc,_sizeOfH3Index:yc,_sizeOfLinkedGeoPolygon:Dc,_uncompact:Ib,establishStackSpace:Z,stackAlloc:W,stackRestore:Y,stackSave:X}})\n\n\n// EMSCRIPTEN_END_ASM\n(asmGlobalArg,asmLibraryArg,buffer);var ___uremdi3=Module[\"___uremdi3\"]=asm[\"___uremdi3\"];var _bitshift64Lshr=Module[\"_bitshift64Lshr\"]=asm[\"_bitshift64Lshr\"];var _bitshift64Shl=Module[\"_bitshift64Shl\"]=asm[\"_bitshift64Shl\"];var _calloc=Module[\"_calloc\"]=asm[\"_calloc\"];var _cellAreaKm2=Module[\"_cellAreaKm2\"]=asm[\"_cellAreaKm2\"];var _cellAreaM2=Module[\"_cellAreaM2\"]=asm[\"_cellAreaM2\"];var _cellAreaRads2=Module[\"_cellAreaRads2\"]=asm[\"_cellAreaRads2\"];var _compact=Module[\"_compact\"]=asm[\"_compact\"];var _destroyLinkedPolygon=Module[\"_destroyLinkedPolygon\"]=asm[\"_destroyLinkedPolygon\"];var _edgeLengthKm=Module[\"_edgeLengthKm\"]=asm[\"_edgeLengthKm\"];var _edgeLengthM=Module[\"_edgeLengthM\"]=asm[\"_edgeLengthM\"];var _emscripten_replace_memory=Module[\"_emscripten_replace_memory\"]=asm[\"_emscripten_replace_memory\"];var _exactEdgeLengthKm=Module[\"_exactEdgeLengthKm\"]=asm[\"_exactEdgeLengthKm\"];var _exactEdgeLengthM=Module[\"_exactEdgeLengthM\"]=asm[\"_exactEdgeLengthM\"];var _exactEdgeLengthRads=Module[\"_exactEdgeLengthRads\"]=asm[\"_exactEdgeLengthRads\"];var _experimentalH3ToLocalIj=Module[\"_experimentalH3ToLocalIj\"]=asm[\"_experimentalH3ToLocalIj\"];var _experimentalLocalIjToH3=Module[\"_experimentalLocalIjToH3\"]=asm[\"_experimentalLocalIjToH3\"];var _free=Module[\"_free\"]=asm[\"_free\"];var _geoToH3=Module[\"_geoToH3\"]=asm[\"_geoToH3\"];var _getDestinationH3IndexFromUnidirectionalEdge=Module[\"_getDestinationH3IndexFromUnidirectionalEdge\"]=asm[\"_getDestinationH3IndexFromUnidirectionalEdge\"];var _getH3IndexesFromUnidirectionalEdge=Module[\"_getH3IndexesFromUnidirectionalEdge\"]=asm[\"_getH3IndexesFromUnidirectionalEdge\"];var _getH3UnidirectionalEdge=Module[\"_getH3UnidirectionalEdge\"]=asm[\"_getH3UnidirectionalEdge\"];var _getH3UnidirectionalEdgeBoundary=Module[\"_getH3UnidirectionalEdgeBoundary\"]=asm[\"_getH3UnidirectionalEdgeBoundary\"];var _getH3UnidirectionalEdgesFromHexagon=Module[\"_getH3UnidirectionalEdgesFromHexagon\"]=asm[\"_getH3UnidirectionalEdgesFromHexagon\"];var _getOriginH3IndexFromUnidirectionalEdge=Module[\"_getOriginH3IndexFromUnidirectionalEdge\"]=asm[\"_getOriginH3IndexFromUnidirectionalEdge\"];var _getPentagonIndexes=Module[\"_getPentagonIndexes\"]=asm[\"_getPentagonIndexes\"];var _getRes0Indexes=Module[\"_getRes0Indexes\"]=asm[\"_getRes0Indexes\"];var _h3Distance=Module[\"_h3Distance\"]=asm[\"_h3Distance\"];var _h3GetBaseCell=Module[\"_h3GetBaseCell\"]=asm[\"_h3GetBaseCell\"];var _h3GetFaces=Module[\"_h3GetFaces\"]=asm[\"_h3GetFaces\"];var _h3GetResolution=Module[\"_h3GetResolution\"]=asm[\"_h3GetResolution\"];var _h3IndexesAreNeighbors=Module[\"_h3IndexesAreNeighbors\"]=asm[\"_h3IndexesAreNeighbors\"];var _h3IsPentagon=Module[\"_h3IsPentagon\"]=asm[\"_h3IsPentagon\"];var _h3IsResClassIII=Module[\"_h3IsResClassIII\"]=asm[\"_h3IsResClassIII\"];var _h3IsValid=Module[\"_h3IsValid\"]=asm[\"_h3IsValid\"];var _h3Line=Module[\"_h3Line\"]=asm[\"_h3Line\"];var _h3LineSize=Module[\"_h3LineSize\"]=asm[\"_h3LineSize\"];var _h3SetToLinkedGeo=Module[\"_h3SetToLinkedGeo\"]=asm[\"_h3SetToLinkedGeo\"];var _h3ToCenterChild=Module[\"_h3ToCenterChild\"]=asm[\"_h3ToCenterChild\"];var _h3ToChildren=Module[\"_h3ToChildren\"]=asm[\"_h3ToChildren\"];var _h3ToGeo=Module[\"_h3ToGeo\"]=asm[\"_h3ToGeo\"];var _h3ToGeoBoundary=Module[\"_h3ToGeoBoundary\"]=asm[\"_h3ToGeoBoundary\"];var _h3ToParent=Module[\"_h3ToParent\"]=asm[\"_h3ToParent\"];var _h3UnidirectionalEdgeIsValid=Module[\"_h3UnidirectionalEdgeIsValid\"]=asm[\"_h3UnidirectionalEdgeIsValid\"];var _hexAreaKm2=Module[\"_hexAreaKm2\"]=asm[\"_hexAreaKm2\"];var _hexAreaM2=Module[\"_hexAreaM2\"]=asm[\"_hexAreaM2\"];var _hexRing=Module[\"_hexRing\"]=asm[\"_hexRing\"];var _i64Subtract=Module[\"_i64Subtract\"]=asm[\"_i64Subtract\"];var _kRing=Module[\"_kRing\"]=asm[\"_kRing\"];var _kRingDistances=Module[\"_kRingDistances\"]=asm[\"_kRingDistances\"];var _llvm_minnum_f64=Module[\"_llvm_minnum_f64\"]=asm[\"_llvm_minnum_f64\"];var _llvm_round_f64=Module[\"_llvm_round_f64\"]=asm[\"_llvm_round_f64\"];var _malloc=Module[\"_malloc\"]=asm[\"_malloc\"];var _maxFaceCount=Module[\"_maxFaceCount\"]=asm[\"_maxFaceCount\"];var _maxH3ToChildrenSize=Module[\"_maxH3ToChildrenSize\"]=asm[\"_maxH3ToChildrenSize\"];var _maxKringSize=Module[\"_maxKringSize\"]=asm[\"_maxKringSize\"];var _maxPolyfillSize=Module[\"_maxPolyfillSize\"]=asm[\"_maxPolyfillSize\"];var _maxUncompactSize=Module[\"_maxUncompactSize\"]=asm[\"_maxUncompactSize\"];var _memcpy=Module[\"_memcpy\"]=asm[\"_memcpy\"];var _memset=Module[\"_memset\"]=asm[\"_memset\"];var _numHexagons=Module[\"_numHexagons\"]=asm[\"_numHexagons\"];var _pentagonIndexCount=Module[\"_pentagonIndexCount\"]=asm[\"_pentagonIndexCount\"];var _pointDistKm=Module[\"_pointDistKm\"]=asm[\"_pointDistKm\"];var _pointDistM=Module[\"_pointDistM\"]=asm[\"_pointDistM\"];var _pointDistRads=Module[\"_pointDistRads\"]=asm[\"_pointDistRads\"];var _polyfill=Module[\"_polyfill\"]=asm[\"_polyfill\"];var _res0IndexCount=Module[\"_res0IndexCount\"]=asm[\"_res0IndexCount\"];var _round=Module[\"_round\"]=asm[\"_round\"];var _sbrk=Module[\"_sbrk\"]=asm[\"_sbrk\"];var _sizeOfCoordIJ=Module[\"_sizeOfCoordIJ\"]=asm[\"_sizeOfCoordIJ\"];var _sizeOfGeoBoundary=Module[\"_sizeOfGeoBoundary\"]=asm[\"_sizeOfGeoBoundary\"];var _sizeOfGeoCoord=Module[\"_sizeOfGeoCoord\"]=asm[\"_sizeOfGeoCoord\"];var _sizeOfGeoPolygon=Module[\"_sizeOfGeoPolygon\"]=asm[\"_sizeOfGeoPolygon\"];var _sizeOfGeofence=Module[\"_sizeOfGeofence\"]=asm[\"_sizeOfGeofence\"];var _sizeOfH3Index=Module[\"_sizeOfH3Index\"]=asm[\"_sizeOfH3Index\"];var _sizeOfLinkedGeoPolygon=Module[\"_sizeOfLinkedGeoPolygon\"]=asm[\"_sizeOfLinkedGeoPolygon\"];var _uncompact=Module[\"_uncompact\"]=asm[\"_uncompact\"];var establishStackSpace=Module[\"establishStackSpace\"]=asm[\"establishStackSpace\"];var stackAlloc=Module[\"stackAlloc\"]=asm[\"stackAlloc\"];var stackRestore=Module[\"stackRestore\"]=asm[\"stackRestore\"];var stackSave=Module[\"stackSave\"]=asm[\"stackSave\"];Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"setValue\"]=setValue;Module[\"getValue\"]=getValue;Module[\"getTempRet0\"]=getTempRet0;if(memoryInitializer){if(!isDataURI(memoryInitializer)){memoryInitializer=locateFile(memoryInitializer)}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=readBinary(memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency(\"memory initializer\");var applyMemoryInitializer=function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module[\"memoryInitializerRequest\"])delete Module[\"memoryInitializerRequest\"].response;removeRunDependency(\"memory initializer\")};var doBrowserLoad=function(){readAsync(memoryInitializer,applyMemoryInitializer,function(){throw\"could not load memory initializer \"+memoryInitializer})};var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module[\"memoryInitializerRequest\"]){var useRequest=function(){var request=Module[\"memoryInitializerRequest\"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module[\"memoryInitializerRequestURL\"]);if(data){response=data.buffer}else{console.warn(\"a problem seems to have happened with Module.memoryInitializerRequest, status: \"+request.status+\", retrying \"+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)};if(Module[\"memoryInitializerRequest\"].response){setTimeout(useRequest,0)}else{Module[\"memoryInitializerRequest\"].addEventListener(\"load\",useRequest)}}else{doBrowserLoad()}}}var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;throw\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\"}Module[\"abort\"]=abort;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}noExitRuntime=true;run();\n\n\n\n return libh3\n}\n)(typeof libh3 === 'object' ? libh3 : {});\nexport default libh3;","/*\n * Copyright 2018-2019 Uber Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Define the C bindings for the h3 library\n\n// Add some aliases to make the function definitions more intelligible\nconst NUMBER = 'number';\nconst BOOLEAN = NUMBER;\nconst H3_LOWER = NUMBER;\nconst H3_UPPER = NUMBER;\nconst RESOLUTION = NUMBER;\nconst POINTER = NUMBER;\n\n// Define the bindings to functions in the C lib. Functions are defined as\n// [name, return type, [arg types]]. You must run `npm run build-emscripten`\n// before new functions added here will be available.\nexport default [\n // The size functions are inserted via build/sizes.h\n ['sizeOfH3Index', NUMBER],\n ['sizeOfGeoCoord', NUMBER],\n ['sizeOfGeoBoundary', NUMBER],\n ['sizeOfGeoPolygon', NUMBER],\n ['sizeOfGeofence', NUMBER],\n ['sizeOfLinkedGeoPolygon', NUMBER],\n ['sizeOfCoordIJ', NUMBER],\n // The remaining functions are defined in the core lib in h3Api.h\n ['h3IsValid', BOOLEAN, [H3_LOWER, H3_UPPER]],\n ['geoToH3', H3_LOWER, [NUMBER, NUMBER, RESOLUTION]],\n ['h3ToGeo', null, [H3_LOWER, H3_UPPER, POINTER]],\n ['h3ToGeoBoundary', null, [H3_LOWER, H3_UPPER, POINTER]],\n ['maxKringSize', NUMBER, [NUMBER]],\n ['kRing', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER]],\n ['kRingDistances', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER, POINTER]],\n ['hexRing', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER]],\n ['maxPolyfillSize', NUMBER, [POINTER, RESOLUTION]],\n ['polyfill', null, [POINTER, RESOLUTION, POINTER]],\n ['h3SetToLinkedGeo', null, [POINTER, NUMBER, POINTER]],\n ['destroyLinkedPolygon', null, [POINTER]],\n ['compact', NUMBER, [POINTER, POINTER, NUMBER]],\n ['uncompact', NUMBER, [POINTER, NUMBER, POINTER, NUMBER, RESOLUTION]],\n ['maxUncompactSize', NUMBER, [POINTER, NUMBER, RESOLUTION]],\n ['h3IsPentagon', BOOLEAN, [H3_LOWER, H3_UPPER]],\n ['h3IsResClassIII', BOOLEAN, [H3_LOWER, H3_UPPER]],\n ['h3GetBaseCell', NUMBER, [H3_LOWER, H3_UPPER]],\n ['h3GetResolution', NUMBER, [H3_LOWER, H3_UPPER]],\n ['maxFaceCount', NUMBER, [H3_LOWER, H3_UPPER]],\n ['h3GetFaces', null, [H3_LOWER, H3_UPPER, POINTER]],\n ['h3ToParent', H3_LOWER, [H3_LOWER, H3_UPPER, RESOLUTION]],\n ['h3ToChildren', null, [H3_LOWER, H3_UPPER, RESOLUTION, POINTER]],\n ['h3ToCenterChild', H3_LOWER, [H3_LOWER, H3_UPPER, RESOLUTION]],\n ['maxH3ToChildrenSize', NUMBER, [H3_LOWER, H3_UPPER, RESOLUTION]],\n ['h3IndexesAreNeighbors', BOOLEAN, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]],\n ['getH3UnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]],\n ['getOriginH3IndexFromUnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER]],\n ['getDestinationH3IndexFromUnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER]],\n ['h3UnidirectionalEdgeIsValid', BOOLEAN, [H3_LOWER, H3_UPPER]],\n ['getH3IndexesFromUnidirectionalEdge', null, [H3_LOWER, H3_UPPER, POINTER]],\n ['getH3UnidirectionalEdgesFromHexagon', null, [H3_LOWER, H3_UPPER, POINTER]],\n ['getH3UnidirectionalEdgeBoundary', null, [H3_LOWER, H3_UPPER, POINTER]],\n ['h3Distance', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]],\n ['h3Line', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]],\n ['h3LineSize', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]],\n ['experimentalH3ToLocalIj', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]],\n ['experimentalLocalIjToH3', NUMBER, [H3_LOWER, H3_UPPER, POINTER, POINTER]],\n ['hexAreaM2', NUMBER, [RESOLUTION]],\n ['hexAreaKm2', NUMBER, [RESOLUTION]],\n ['edgeLengthM', NUMBER, [RESOLUTION]],\n ['edgeLengthKm', NUMBER, [RESOLUTION]],\n ['pointDistM', NUMBER, [POINTER, POINTER]],\n ['pointDistKm', NUMBER, [POINTER, POINTER]],\n ['pointDistRads', NUMBER, [POINTER, POINTER]],\n ['cellAreaM2', NUMBER, [H3_LOWER, H3_UPPER]],\n ['cellAreaKm2', NUMBER, [H3_LOWER, H3_UPPER]],\n ['cellAreaRads2', NUMBER, [H3_LOWER, H3_UPPER]],\n ['exactEdgeLengthM', NUMBER, [H3_LOWER, H3_UPPER]],\n ['exactEdgeLengthKm', NUMBER, [H3_LOWER, H3_UPPER]],\n ['exactEdgeLengthRads', NUMBER, [H3_LOWER, H3_UPPER]],\n ['numHexagons', NUMBER, [RESOLUTION]],\n ['getRes0Indexes', null, [POINTER]],\n ['res0IndexCount', NUMBER],\n ['getPentagonIndexes', null, [NUMBER, POINTER]],\n ['pentagonIndexCount', NUMBER]\n];\n","/*\n * Copyright 2018-2019 Uber Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module h3\n */\n\nimport C from '../out/libh3';\nimport BINDINGS from './bindings';\n\nconst H3 = {};\n\n// Create the bound functions themselves\nBINDINGS.forEach(function bind(def) {\n H3[def[0]] = C.cwrap(...def);\n});\n\n// Alias the hexidecimal base for legibility\nconst BASE_16 = 16;\n\n// ----------------------------------------------------------------------------\n// Byte size imports\n\nconst SZ_INT = 4;\nconst SZ_PTR = 4;\nconst SZ_DBL = 8;\nconst SZ_H3INDEX = H3.sizeOfH3Index();\nconst SZ_GEOCOORD = H3.sizeOfGeoCoord();\nconst SZ_GEOBOUNDARY = H3.sizeOfGeoBoundary();\nconst SZ_GEOPOLYGON = H3.sizeOfGeoPolygon();\nconst SZ_GEOFENCE = H3.sizeOfGeofence();\nconst SZ_LINKED_GEOPOLYGON = H3.sizeOfLinkedGeoPolygon();\nconst SZ_COORDIJ = H3.sizeOfCoordIJ();\n\n// ----------------------------------------------------------------------------\n// Custom types\n\n/**\n * 64-bit hexidecimal string representation of an H3 index\n * @static\n * @typedef {string} H3Index\n */\n\n/**\n * 64-bit hexidecimal string representation of an H3 index,\n * or two 32-bit integers in little endian order in an array.\n * @static\n * @typedef {string | number[]} H3IndexInput\n */\n\n/**\n * Coordinates as an `{i, j}` pair\n * @static\n * @typedef CoordIJ\n * @type {Object}\n * @property {number} i\n * @property {number} j\n */\n\n// ----------------------------------------------------------------------------\n// Unit constants\n\n/**\n * Length/Area units\n * @static\n * @typedef UNITS\n * @type {Object}\n * @property {string} m\n * @property {string} m2\n * @property {string} km\n * @property {string} km2\n * @property {string} rads\n * @property {string} rads2\n */\nexport const UNITS = {\n m: 'm',\n m2: 'm2',\n km: 'km',\n km2: 'km2',\n rads: 'rads',\n rads2: 'rads2'\n};\n\n// ----------------------------------------------------------------------------\n// Utilities and helpers\n\n/**\n * Validate a resolution, throwing an error if invalid\n * @private\n * @param {mixed} res Value to validate\n * @throws {Error} Error if invalid\n */\nfunction validateRes(res) {\n if (typeof res !== 'number' || res < 0 || res > 15 || Math.floor(res) !== res) {\n throw new Error(`Invalid resolution: ${res}`);\n }\n}\n\nconst INVALID_HEXIDECIMAL_CHAR = /[^0-9a-fA-F]/;\n\n/**\n * Convert an H3 index (64-bit hexidecimal string) into a \"split long\" - a pair of 32-bit ints\n * @private\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {number[]} A two-element array with 32 lower bits and 32 upper bits\n */\nexport function h3IndexToSplitLong(h3Index) {\n if (\n Array.isArray(h3Index) &&\n h3Index.length === 2 &&\n Number.isInteger(h3Index[0]) &&\n Number.isInteger(h3Index[1])\n ) {\n return h3Index;\n }\n if (typeof h3Index !== 'string' || INVALID_HEXIDECIMAL_CHAR.test(h3Index)) {\n return [0, 0];\n }\n const upper = parseInt(h3Index.substring(0, h3Index.length - 8), BASE_16);\n const lower = parseInt(h3Index.substring(h3Index.length - 8), BASE_16);\n return [lower, upper];\n}\n\n/**\n * Convert a 32-bit int to a hexdecimal string\n * @private\n * @param {number} num Integer to convert\n * @return {H3Index} Hexidecimal string\n */\nfunction hexFrom32Bit(num) {\n if (num >= 0) {\n return num.toString(BASE_16);\n }\n\n // Handle negative numbers\n num = num & 0x7fffffff;\n let tempStr = zeroPad(8, num.toString(BASE_16));\n const topNum = (parseInt(tempStr[0], BASE_16) + 8).toString(BASE_16);\n tempStr = topNum + tempStr.substring(1);\n return tempStr;\n}\n\n/**\n * Get a H3 index from a split long (pair of 32-bit ints)\n * @private\n * @param {number} lower Lower 32 bits\n * @param {number} upper Upper 32 bits\n * @return {H3Index} H3 index\n */\nexport function splitLongToh3Index(lower, upper) {\n return hexFrom32Bit(upper) + zeroPad(8, hexFrom32Bit(lower));\n}\n\n/**\n * Zero-pad a string to a given length\n * @private\n * @param {number} fullLen Target length\n * @param {string} numStr String to zero-pad\n * @return {string} Zero-padded string\n */\nfunction zeroPad(fullLen, numStr) {\n const numZeroes = fullLen - numStr.length;\n let outStr = '';\n for (let i = 0; i < numZeroes; i++) {\n outStr += '0';\n }\n outStr = outStr + numStr;\n return outStr;\n}\n\n/**\n * Populate a C-appropriate Geofence struct from a polygon array\n * @private\n * @param {Array[]} polygonArray Polygon, as an array of coordinate pairs\n * @param {number} geofence C pointer to a Geofence struct\n * @param {boolean} isGeoJson Whether coordinates are in [lng, lat] order per GeoJSON spec\n * @return {number} C pointer to populated Geofence struct\n */\nfunction polygonArrayToGeofence(polygonArray, geofence, isGeoJson) {\n const numVerts = polygonArray.length;\n const geoCoordArray = C._calloc(numVerts, SZ_GEOCOORD);\n // Support [lng, lat] pairs if GeoJSON is specified\n const latIndex = isGeoJson ? 1 : 0;\n const lngIndex = isGeoJson ? 0 : 1;\n for (let i = 0; i < numVerts * 2; i += 2) {\n C.HEAPF64.set(\n [polygonArray[i / 2][latIndex], polygonArray[i / 2][lngIndex]].map(degsToRads),\n geoCoordArray / SZ_DBL + i\n );\n }\n C.HEAPU32.set([numVerts, geoCoordArray], geofence / SZ_INT);\n return geofence;\n}\n\n/**\n * Create a C-appropriate GeoPolygon struct from an array of polygons\n * @private\n * @param {Array[]} coordinates Array of polygons, each an array of coordinate pairs\n * @param {boolean} isGeoJson Whether coordinates are in [lng, lat] order per GeoJSON spec\n * @return {number} C pointer to populated GeoPolygon struct\n */\nfunction coordinatesToGeoPolygon(coordinates, isGeoJson) {\n // Any loops beyond the first loop are holes\n const numHoles = coordinates.length - 1;\n const geoPolygon = C._calloc(SZ_GEOPOLYGON);\n // Byte positions within the struct\n const geofenceOffset = 0;\n const numHolesOffset = geofenceOffset + SZ_GEOFENCE;\n const holesOffset = numHolesOffset + SZ_INT;\n // geofence is first part of struct\n polygonArrayToGeofence(coordinates[0], geoPolygon + geofenceOffset, isGeoJson);\n let holes;\n if (numHoles > 0) {\n holes = C._calloc(numHoles, SZ_GEOFENCE);\n for (let i = 0; i < numHoles; i++) {\n polygonArrayToGeofence(coordinates[i + 1], holes + SZ_GEOFENCE * i, isGeoJson);\n }\n }\n C.setValue(geoPolygon + numHolesOffset, numHoles, 'i32');\n C.setValue(geoPolygon + holesOffset, holes, 'i32');\n return geoPolygon;\n}\n\n/**\n * Free memory allocated for a GeoPolygon struct. It is an error to access the struct\n * after passing it to this method.\n * @private\n * @return {number} geoPolygon C pointer to populated GeoPolygon struct\n */\nfunction destroyGeoPolygon(geoPolygon) {\n // Byte positions within the struct\n const geofenceOffset = 0;\n const numHolesOffset = geofenceOffset + SZ_GEOFENCE;\n const holesOffset = numHolesOffset + SZ_INT;\n // Offset of the geofence vertex array pointer within the Geofence struct\n const geofenceArrayOffset = SZ_INT;\n // Free the outer vertex array\n C._free(C.getValue(geoPolygon + geofenceOffset + geofenceArrayOffset, 'i8*'));\n // Free the vertex array for the holes, if any\n const numHoles = C.getValue(geoPolygon + numHolesOffset, 'i32');\n if (numHoles > 0) {\n const holes = C.getValue(geoPolygon + holesOffset, 'i32');\n for (let i = 0; i < numHoles; i++) {\n C._free(C.getValue(holes + SZ_GEOFENCE * i + geofenceArrayOffset, 'i8*'));\n }\n C._free(holes);\n }\n C._free(geoPolygon);\n}\n\n/**\n * Read a long value, returning the lower and upper portions as separate 32-bit integers.\n * Because the upper bits are returned via side effect, the argument to this function is\n * intended to be the invocation that caused the side effect, e.g. readLong(H3.getSomeLong())\n * @private\n * @param {number} invocation Invoked function returning a long value. The actual return\n * value of these functions is a 32-bit integer.\n * @return {number} Long value as a [lower, upper] pair\n */\nfunction readLong(invocation) {\n // Upper 32-bits of the long set via side-effect\n const upper = C.getTempRet0();\n return [invocation, upper];\n}\n\n/**\n * Read an H3 index from a C return value. As with readLong, the argument to this function\n * is intended to be an invocation, e.g. readH3Index(H3.getSomeAddress()), to help ensure that\n * the temp value storing the upper bits of the long is still set.\n * @private\n * @param {number} invocation Invoked function returning a single H3 index\n * @return {H3Index} H3 index, or null if index was invalid\n */\nfunction readH3Index(invocation) {\n const [lower, upper] = readLong(invocation);\n // The lower bits are allowed to be 0s, but if the upper bits are 0\n // this represents an invalid H3 index\n return upper ? splitLongToh3Index(lower, upper) : null;\n}\n\n/**\n * Read an H3 index from a pointer to C memory.\n * @private\n * @param {number} cAddress Pointer to allocated C memory\n * @param {number} offset Offset, in number of H3 indexes, in case we're\n * reading an array\n * @return {H3Index} H3 index, or null if index was invalid\n */\nfunction readH3IndexFromPointer(cAddress, offset = 0) {\n const lower = C.getValue(cAddress + SZ_INT * offset * 2, 'i32');\n const upper = C.getValue(cAddress + SZ_INT * (offset * 2 + 1), 'i32');\n // The lower bits are allowed to be 0s, but if the upper bits are 0\n // this represents an invalid H3 index\n return upper ? splitLongToh3Index(lower, upper) : null;\n}\n\n/**\n * Store an H3 index in C memory. Primarily used as an efficient way to\n * write sets of hexagons.\n * @private\n * @param {H3IndexInput} h3Index H3 index to store\n * @param {number} cAddress Pointer to allocated C memory\n * @param {number} offset Offset, in number of H3 indexes from beginning\n * of the current array\n */\nfunction storeH3Index(h3Index, cAddress, offset) {\n // HEAPU32 is a typed array projection on the index space\n // as unsigned 32-bit integers. This means the index needs\n // to be divided by SZ_INT (4) to access correctly. Also,\n // the H3 index is 64 bits, so we skip by twos as we're writing\n // to 32-bit integers in the proper order.\n C.HEAPU32.set(h3IndexToSplitLong(h3Index), cAddress / SZ_INT + 2 * offset);\n}\n\n/**\n * Read an array of 64-bit H3 indexes from C and convert to a JS array of\n * H3 index strings\n * @private\n * @param {number} cAddress Pointer to C ouput array\n * @param {number} maxCount Max number of hexagons in array. Hexagons with\n * the value 0 will be skipped, so this isn't\n * necessarily the length of the output array.\n * @return {H3Index[]} Array of H3 indexes\n */\nfunction readArrayOfHexagons(cAddress, maxCount) {\n const out = [];\n for (let i = 0; i < maxCount; i++) {\n const h3Index = readH3IndexFromPointer(cAddress, i);\n if (h3Index !== null) {\n out.push(h3Index);\n }\n }\n return out;\n}\n\n/**\n * Store an array of H3 index strings as a C array of 64-bit integers.\n * @private\n * @param {number} cAddress Pointer to C input array\n * @param {H3IndexInput[]} hexagons H3 indexes to pass to the C lib\n */\nfunction storeArrayOfHexagons(cAddress, hexagons) {\n // Assuming the cAddress points to an already appropriately\n // allocated space\n const count = hexagons.length;\n for (let i = 0; i < count; i++) {\n storeH3Index(hexagons[i], cAddress, i);\n }\n}\n\n/**\n * Populate a C-appropriate GeoCoord struct from a [lat, lng] array\n * @private\n * @param {number} lat Coordinate latitude\n * @param {number} lng Coordinate longitude\n * @return {number} C pointer to populated GeoCoord struct\n */\nfunction storeGeoCoord(lat, lng) {\n const geoCoord = C._calloc(1, SZ_GEOCOORD);\n C.HEAPF64.set([lat, lng].map(degsToRads), geoCoord / SZ_DBL);\n return geoCoord;\n}\n\nfunction readSingleCoord(cAddress) {\n return radsToDegs(C.getValue(cAddress, 'double'));\n}\n\n/**\n * Read a GeoCoord from C and return a [lat, lng] pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {number[]} [lat, lng] pair\n */\nfunction readGeoCoord(cAddress) {\n return [readSingleCoord(cAddress), readSingleCoord(cAddress + SZ_DBL)];\n}\n\n/**\n * Read a GeoCoord from C and return a GeoJSON-style [lng, lat] pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {number[]} [lng, lat] pair\n */\nfunction readGeoCoordGeoJson(cAddress) {\n return [readSingleCoord(cAddress + SZ_DBL), readSingleCoord(cAddress)];\n}\n\n/**\n * Read the GeoBoundary structure into a list of geo coordinate pairs\n * @private\n * @param {number} geoBoundary C pointer to GeoBoundary struct\n * @param {boolean} geoJsonCoords Whether to provide GeoJSON coordinate order: [lng, lat]\n * @param {boolean} closedLoop Whether to close the loop\n * @return {Array[]} Array of geo coordinate pairs\n */\nfunction readGeoBoundary(geoBoundary, geoJsonCoords, closedLoop) {\n const numVerts = C.getValue(geoBoundary, 'i32');\n // Note that though numVerts is an int, the coordinate doubles have to be\n // aligned to 8 bytes, hence the 8-byte offset here\n const vertsPos = geoBoundary + SZ_DBL;\n const out = [];\n // Support [lng, lat] pairs if GeoJSON is specified\n const readCoord = geoJsonCoords ? readGeoCoordGeoJson : readGeoCoord;\n for (let i = 0; i < numVerts * 2; i += 2) {\n out.push(readCoord(vertsPos + SZ_DBL * i));\n }\n if (closedLoop) {\n // Close loop if GeoJSON is specified\n out.push(out[0]);\n }\n return out;\n}\n\n/**\n * Read the LinkedGeoPolygon structure into a nested array of MultiPolygon coordinates\n * @private\n * @param {number} polygon C pointer to LinkedGeoPolygon struct\n * @param {boolean} formatAsGeoJson Whether to provide GeoJSON output: [lng, lat], closed loops\n * @return {number[][][][]} MultiPolygon-style output.\n */\nfunction readMultiPolygon(polygon, formatAsGeoJson) {\n const output = [];\n const readCoord = formatAsGeoJson ? readGeoCoordGeoJson : readGeoCoord;\n let loops;\n let loop;\n let coords;\n let coord;\n // Loop through the linked structure, building the output\n while (polygon) {\n output.push((loops = []));\n // Follow ->first pointer\n loop = C.getValue(polygon, 'i8*');\n while (loop) {\n loops.push((coords = []));\n // Follow ->first pointer\n coord = C.getValue(loop, 'i8*');\n while (coord) {\n coords.push(readCoord(coord));\n // Follow ->next pointer\n coord = C.getValue(coord + SZ_DBL * 2, 'i8*');\n }\n if (formatAsGeoJson) {\n // Close loop if GeoJSON is requested\n coords.push(coords[0]);\n }\n // Follow ->next pointer\n loop = C.getValue(loop + SZ_PTR * 2, 'i8*');\n }\n // Follow ->next pointer\n polygon = C.getValue(polygon + SZ_PTR * 2, 'i8*');\n }\n return output;\n}\n\n/**\n * Read a CoordIJ from C and return an {i, j} pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {CoordIJ} {i, j} pair\n */\nfunction readCoordIJ(cAddress) {\n return {\n i: C.getValue(cAddress, 'i32'),\n j: C.getValue(cAddress + SZ_INT, 'i32')\n };\n}\n\n/**\n * Store an {i, j} pair to a C CoordIJ struct.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {CoordIJ} {i, j} pair\n */\nfunction storeCoordIJ(cAddress, {i, j}) {\n C.setValue(cAddress, i, 'i32');\n C.setValue(cAddress + SZ_INT, j, 'i32');\n}\n\n/**\n * Read an array of positive integers array from C. Negative\n * values are considered invalid and ignored in output.\n * @private\n * @param {number} cAddress Pointer to C array\n * @param {number} count Length of C array\n * @return {number[]} Javascript integer array\n */\nfunction readArrayOfPositiveIntegers(cAddress, count) {\n const out = [];\n for (let i = 0; i < count; i++) {\n const int = C.getValue(cAddress + SZ_INT * i, 'i32');\n if (int >= 0) {\n out.push(int);\n }\n }\n return out;\n}\n\n// ----------------------------------------------------------------------------\n// Public API functions: Core\n\n/**\n * Whether a given string represents a valid H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} Whether the index is valid\n */\nexport function h3IsValid(h3Index) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n return Boolean(H3.h3IsValid(lower, upper));\n}\n\n/**\n * Whether the given H3 index is a pentagon\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} isPentagon\n */\nexport function h3IsPentagon(h3Index) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n return Boolean(H3.h3IsPentagon(lower, upper));\n}\n\n/**\n * Whether the given H3 index is in a Class III resolution (rotated versus\n * the icosahedron and subject to shape distortion adding extra points on\n * icosahedron edges, making them not true hexagons).\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} isResClassIII\n */\nexport function h3IsResClassIII(h3Index) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n return Boolean(H3.h3IsResClassIII(lower, upper));\n}\n\n/**\n * Get the number of the base cell for a given H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get the base cell for\n * @return {number} Index of the base cell (0-121)\n */\nexport function h3GetBaseCell(h3Index) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n return H3.h3GetBaseCell(lower, upper);\n}\n\n/**\n * Get the indices of all icosahedron faces intersected by a given H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get faces for\n * @return {number[]} Indices (0-19) of all intersected faces\n */\nexport function h3GetFaces(h3Index) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n const count = H3.maxFaceCount(lower, upper);\n const faces = C._malloc(SZ_INT * count);\n H3.h3GetFaces(lower, upper, faces);\n const out = readArrayOfPositiveIntegers(faces, count);\n C._free(faces);\n return out;\n}\n\n/**\n * Returns the resolution of an H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get resolution\n * @return {number} The number (0-15) resolution, or -1 if invalid\n */\nexport function h3GetResolution(h3Index) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n if (!H3.h3IsValid(lower, upper)) {\n // Compatability with stated API\n return -1;\n }\n return H3.h3GetResolution(lower, upper);\n}\n\n/**\n * Get the hexagon containing a lat,lon point\n * @static\n * @param {number} lat Latitude of point\n * @param {number} lng Longtitude of point\n * @param {number} res Resolution of hexagons to return\n * @return {H3Index} H3 index\n */\nexport function geoToH3(lat, lng, res) {\n const latlng = C._malloc(SZ_GEOCOORD);\n // Slightly more efficient way to set the memory\n C.HEAPF64.set([lat, lng].map(degsToRads), latlng / SZ_DBL);\n // Read value as a split long\n const h3Index = readH3Index(H3.geoToH3(latlng, res));\n C._free(latlng);\n return h3Index;\n}\n\n/**\n * Get the lat,lon center of a given hexagon\n * @static\n * @param {H3IndexInput} h3Index H3 index\n * @return {number[]} Point as a [lat, lng] pair\n */\nexport function h3ToGeo(h3Index) {\n const latlng = C._malloc(SZ_GEOCOORD);\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n H3.h3ToGeo(lower, upper, latlng);\n const out = readGeoCoord(latlng);\n C._free(latlng);\n return out;\n}\n\n/**\n * Get the vertices of a given hexagon (or pentagon), as an array of [lat, lng]\n * points. For pentagons and hexagons on the edge of an icosahedron face, this\n * function may return up to 10 vertices.\n * @static\n * @param {H3Index} h3Index H3 index\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat], closed loops\n * @return {number[][]} Array of [lat, lng] pairs\n */\nexport function h3ToGeoBoundary(h3Index, formatAsGeoJson) {\n const geoBoundary = C._malloc(SZ_GEOBOUNDARY);\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n H3.h3ToGeoBoundary(lower, upper, geoBoundary);\n const out = readGeoBoundary(geoBoundary, formatAsGeoJson, formatAsGeoJson);\n C._free(geoBoundary);\n return out;\n}\n\n// ----------------------------------------------------------------------------\n// Public API functions: Algorithms\n\n/**\n * Get the parent of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get parent for\n * @param {number} res Resolution of hexagon to return\n * @return {H3Index} H3 index of parent, or null for invalid input\n */\nexport function h3ToParent(h3Index, res) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n return readH3Index(H3.h3ToParent(lower, upper, res));\n}\n\n/**\n * Get the children/descendents of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get children for\n * @param {number} res Resolution of hexagons to return\n * @return {H3Index[]} H3 indexes of children, or empty array for invalid input\n */\nexport function h3ToChildren(h3Index, res) {\n // Bad input in this case can potentially result in high computation volume\n // using the current C algorithm. Validate and return an empty array on failure.\n if (!h3IsValid(h3Index)) {\n return [];\n }\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n const maxCount = H3.maxH3ToChildrenSize(lower, upper, res);\n const hexagons = C._calloc(maxCount, SZ_H3INDEX);\n H3.h3ToChildren(lower, upper, res, hexagons);\n const out = readArrayOfHexagons(hexagons, maxCount);\n C._free(hexagons);\n return out;\n}\n\n/**\n * Get the center child of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get center child for\n * @param {number} res Resolution of hexagon to return\n * @return {H3Index} H3 index of child, or null for invalid input\n */\nexport function h3ToCenterChild(h3Index, res) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n return readH3Index(H3.h3ToCenterChild(lower, upper, res));\n}\n\n/**\n * Get all hexagons in a k-ring around a given center. The order of the hexagons is undefined.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of k-ring\n * @return {H3Index[]} H3 indexes for all hexagons in ring\n */\nexport function kRing(h3Index, ringSize) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n const maxCount = H3.maxKringSize(ringSize);\n const hexagons = C._calloc(maxCount, SZ_H3INDEX);\n H3.kRing(lower, upper, ringSize, hexagons);\n const out = readArrayOfHexagons(hexagons, maxCount);\n C._free(hexagons);\n return out;\n}\n\n/**\n * Get all hexagons in a k-ring around a given center, in an array of arrays\n * ordered by distance from the origin. The order of the hexagons within each ring is undefined.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of k-ring\n * @return {H3Index[][]} Array of arrays with H3 indexes for all hexagons each ring\n */\nexport function kRingDistances(h3Index, ringSize) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n const maxCount = H3.maxKringSize(ringSize);\n const kRings = C._calloc(maxCount, SZ_H3INDEX);\n const distances = C._calloc(maxCount, SZ_INT);\n H3.kRingDistances(lower, upper, ringSize, kRings, distances);\n // Create an array of empty arrays to hold the output\n const out = [];\n for (let i = 0; i < ringSize + 1; i++) {\n out.push([]);\n }\n // Read the array of hexagons, putting them into the appropriate rings\n for (let i = 0; i < maxCount * 2; i += 2) {\n const hexLower = C.getValue(kRings + SZ_INT * i, 'i32');\n const hexUpper = C.getValue(kRings + SZ_INT * (i + 1), 'i32');\n const index = C.getValue(distances + SZ_INT * (i / 2), 'i32');\n if (hexLower !== 0 || hexUpper !== 0) {\n out[index].push(splitLongToh3Index(hexLower, hexUpper));\n }\n }\n C._free(kRings);\n C._free(distances);\n return out;\n}\n\n/**\n * Get all hexagons in a hollow hexagonal ring centered at origin with sides of a given length.\n * Unlike kRing, this function will throw an error if there is a pentagon anywhere in the ring.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of ring\n * @return {H3Index[]} H3 indexes for all hexagons in ring\n * @throws {Error} If the algorithm could not calculate the ring\n */\nexport function hexRing(h3Index, ringSize) {\n const maxCount = ringSize === 0 ? 1 : 6 * ringSize;\n const hexagons = C._calloc(maxCount, SZ_H3INDEX);\n const retVal = H3.hexRing(...h3IndexToSplitLong(h3Index), ringSize, hexagons);\n if (retVal !== 0) {\n C._free(hexagons);\n throw new Error('Failed to get hexRing (encountered a pentagon?)');\n }\n const out = readArrayOfHexagons(hexagons, maxCount);\n C._free(hexagons);\n return out;\n}\n\n/**\n * Get all hexagons with centers contained in a given polygon. The polygon\n * is specified with GeoJson semantics as an array of loops. Each loop is\n * an array of [lat, lng] pairs (or [lng, lat] if isGeoJson is specified).\n * The first loop is the perimeter of the polygon, and subsequent loops are\n * expected to be holes.\n * @static\n * @param {number[][] | number[][][]} coordinates\n * Array of loops, or a single loop\n * @param {number} res Resolution of hexagons to return\n * @param {boolean} [isGeoJson] Whether to expect GeoJson-style [lng, lat]\n * pairs instead of [lat, lng]\n * @return {H3Index[]} H3 indexes for all hexagons in polygon\n */\nexport function polyfill(coordinates, res, isGeoJson) {\n validateRes(res);\n isGeoJson = Boolean(isGeoJson);\n // Guard against empty input\n if (coordinates.length === 0 || coordinates[0].length === 0) {\n return [];\n }\n // Wrap to expected format if a single loop is provided\n if (typeof coordinates[0][0] === 'number') {\n coordinates = [coordinates];\n }\n const geoPolygon = coordinatesToGeoPolygon(coordinates, isGeoJson);\n const arrayLen = H3.maxPolyfillSize(geoPolygon, res);\n const hexagons = C._calloc(arrayLen, SZ_H3INDEX);\n H3.polyfill(geoPolygon, res, hexagons);\n const out = readArrayOfHexagons(hexagons, arrayLen);\n C._free(hexagons);\n destroyGeoPolygon(geoPolygon);\n return out;\n}\n\n/**\n * Get the outlines of a set of H3 hexagons, returned in GeoJSON MultiPolygon\n * format (an array of polygons, each with an array of loops, each an array of\n * coordinates). Coordinates are returned as [lat, lng] pairs unless GeoJSON\n * is requested.\n *\n * It is the responsibility of the caller to ensure that all hexagons in the\n * set have the same resolution and that the set contains no duplicates. Behavior\n * is undefined if duplicates or multiple resolutions are present, and the\n * algorithm may produce unexpected or invalid polygons.\n *\n * @static\n * @param {H3IndexInput[]} h3Indexes H3 indexes to get outlines for\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output:\n * [lng, lat], closed loops\n * @return {number[][][][]} MultiPolygon-style output.\n */\nexport function h3SetToMultiPolygon(h3Indexes, formatAsGeoJson) {\n // Early exit on empty input\n if (!h3Indexes || !h3Indexes.length) {\n return [];\n }\n // Set up input set\n const indexCount = h3Indexes.length;\n const set = C._calloc(indexCount, SZ_H3INDEX);\n storeArrayOfHexagons(set, h3Indexes);\n // Allocate memory for output linked polygon\n const polygon = C._calloc(SZ_LINKED_GEOPOLYGON);\n // Store a reference to the first polygon - that's the one we need for\n // memory deallocation\n const originalPolygon = polygon;\n H3.h3SetToLinkedGeo(set, indexCount, polygon);\n const multiPolygon = readMultiPolygon(polygon, formatAsGeoJson);\n // Clean up\n H3.destroyLinkedPolygon(originalPolygon);\n C._free(originalPolygon);\n C._free(set);\n return multiPolygon;\n}\n\n/**\n * Compact a set of hexagons of the same resolution into a set of hexagons across\n * multiple levels that represents the same area.\n * @static\n * @param {H3IndexInput[]} h3Set H3 indexes to compact\n * @return {H3Index[]} Compacted H3 indexes\n * @throws {Error} If the input is invalid (e.g. duplicate hexagons)\n */\nexport function compact(h3Set) {\n if (!h3Set || !h3Set.length) {\n return [];\n }\n // Set up input set\n const count = h3Set.length;\n const set = C._calloc(count, SZ_H3INDEX);\n storeArrayOfHexagons(set, h3Set);\n // Allocate memory for compacted hexagons, worst-case is no compaction\n const compactedSet = C._calloc(count, SZ_H3INDEX);\n const retVal = H3.compact(set, compactedSet, count);\n if (retVal !== 0) {\n C._free(set);\n C._free(compactedSet);\n throw new Error('Failed to compact, malformed input data (duplicate hexagons?)');\n }\n const out = readArrayOfHexagons(compactedSet, count);\n C._free(set);\n C._free(compactedSet);\n return out;\n}\n\n/**\n * Uncompact a compacted set of hexagons to hexagons of the same resolution\n * @static\n * @param {H3IndexInput[]} compactedSet H3 indexes to uncompact\n * @param {number} res The resolution to uncompact to\n * @return {H3Index[]} The uncompacted H3 indexes\n * @throws {Error} If the input is invalid (e.g. invalid resolution)\n */\nexport function uncompact(compactedSet, res) {\n validateRes(res);\n if (!compactedSet || !compactedSet.length) {\n return [];\n }\n // Set up input set\n const count = compactedSet.length;\n const set = C._calloc(count, SZ_H3INDEX);\n storeArrayOfHexagons(set, compactedSet);\n // Estimate how many hexagons we need (always overestimates if in error)\n const maxUncompactedNum = H3.maxUncompactSize(set, count, res);\n // Allocate memory for uncompacted hexagons\n const uncompactedSet = C._calloc(maxUncompactedNum, SZ_H3INDEX);\n const retVal = H3.uncompact(set, count, uncompactedSet, maxUncompactedNum, res);\n if (retVal !== 0) {\n C._free(set);\n C._free(uncompactedSet);\n throw new Error('Failed to uncompact (bad resolution?)');\n }\n const out = readArrayOfHexagons(uncompactedSet, maxUncompactedNum);\n C._free(set);\n C._free(uncompactedSet);\n return out;\n}\n\n// ----------------------------------------------------------------------------\n// Public API functions: Unidirectional edges\n\n/**\n * Whether two H3 indexes are neighbors (share an edge)\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {boolean} Whether the hexagons share an edge\n */\nexport function h3IndexesAreNeighbors(origin, destination) {\n const [oLower, oUpper] = h3IndexToSplitLong(origin);\n const [dLower, dUpper] = h3IndexToSplitLong(destination);\n return Boolean(H3.h3IndexesAreNeighbors(oLower, oUpper, dLower, dUpper));\n}\n\n/**\n * Get an H3 index representing a unidirectional edge for a given origin and destination\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {H3Index} H3 index of the edge, or null if no edge is shared\n */\nexport function getH3UnidirectionalEdge(origin, destination) {\n const [oLower, oUpper] = h3IndexToSplitLong(origin);\n const [dLower, dUpper] = h3IndexToSplitLong(destination);\n return readH3Index(H3.getH3UnidirectionalEdge(oLower, oUpper, dLower, dUpper));\n}\n\n/**\n * Get the origin hexagon from an H3 index representing a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index} H3 index of the edge origin\n */\nexport function getOriginH3IndexFromUnidirectionalEdge(edgeIndex) {\n const [lower, upper] = h3IndexToSplitLong(edgeIndex);\n return readH3Index(H3.getOriginH3IndexFromUnidirectionalEdge(lower, upper));\n}\n\n/**\n * Get the destination hexagon from an H3 index representing a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index} H3 index of the edge destination\n */\nexport function getDestinationH3IndexFromUnidirectionalEdge(edgeIndex) {\n const [lower, upper] = h3IndexToSplitLong(edgeIndex);\n return readH3Index(H3.getDestinationH3IndexFromUnidirectionalEdge(lower, upper));\n}\n\n/**\n * Whether the input is a valid unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {boolean} Whether the index is valid\n */\nexport function h3UnidirectionalEdgeIsValid(edgeIndex) {\n const [lower, upper] = h3IndexToSplitLong(edgeIndex);\n return Boolean(H3.h3UnidirectionalEdgeIsValid(lower, upper));\n}\n\n/**\n * Get the [origin, destination] pair represented by a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index[]} [origin, destination] pair as H3 indexes\n */\nexport function getH3IndexesFromUnidirectionalEdge(edgeIndex) {\n const [lower, upper] = h3IndexToSplitLong(edgeIndex);\n const count = 2;\n const hexagons = C._calloc(count, SZ_H3INDEX);\n H3.getH3IndexesFromUnidirectionalEdge(lower, upper, hexagons);\n const out = readArrayOfHexagons(hexagons, count);\n C._free(hexagons);\n return out;\n}\n\n/**\n * Get all of the unidirectional edges with the given H3 index as the origin (i.e. an edge to\n * every neighbor)\n * @static\n * @param {H3IndexInput} h3Index H3 index of the origin hexagon\n * @return {H3Index[]} List of unidirectional edges\n */\nexport function getH3UnidirectionalEdgesFromHexagon(h3Index) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n const count = 6;\n const edges = C._calloc(count, SZ_H3INDEX);\n H3.getH3UnidirectionalEdgesFromHexagon(lower, upper, edges);\n const out = readArrayOfHexagons(edges, count);\n C._free(edges);\n return out;\n}\n\n/**\n * Get the vertices of a given edge as an array of [lat, lng] points. Note that for edges that\n * cross the edge of an icosahedron face, this may return 3 coordinates.\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat]\n * @return {number[][]} Array of geo coordinate pairs\n */\nexport function getH3UnidirectionalEdgeBoundary(edgeIndex, formatAsGeoJson) {\n const geoBoundary = C._malloc(SZ_GEOBOUNDARY);\n const [lower, upper] = h3IndexToSplitLong(edgeIndex);\n H3.getH3UnidirectionalEdgeBoundary(lower, upper, geoBoundary);\n const out = readGeoBoundary(geoBoundary, formatAsGeoJson);\n C._free(geoBoundary);\n return out;\n}\n\n/**\n * Get the grid distance between two hex indexes. This function may fail\n * to find the distance between two indexes if they are very far apart or\n * on opposite sides of a pentagon.\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {number} Distance between hexagons, or a negative\n * number if the distance could not be computed\n */\nexport function h3Distance(origin, destination) {\n const [oLower, oUpper] = h3IndexToSplitLong(origin);\n const [dLower, dUpper] = h3IndexToSplitLong(destination);\n return H3.h3Distance(oLower, oUpper, dLower, dUpper);\n}\n\n/**\n * Given two H3 indexes, return the line of indexes between them (inclusive).\n *\n * This function may fail to find the line between two indexes, for\n * example if they are very far apart. It may also fail when finding\n * distances for indexes on opposite sides of a pentagon.\n *\n * Notes:\n *\n * - The specific output of this function should not be considered stable\n * across library versions. The only guarantees the library provides are\n * that the line length will be `h3Distance(start, end) + 1` and that\n * every index in the line will be a neighbor of the preceding index.\n * - Lines are drawn in grid space, and may not correspond exactly to either\n * Cartesian lines or great arcs.\n *\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {H3Index[]} H3 indexes connecting origin and destination\n * @throws {Error} If the line cannot be calculated\n */\nexport function h3Line(origin, destination) {\n const [oLower, oUpper] = h3IndexToSplitLong(origin);\n const [dLower, dUpper] = h3IndexToSplitLong(destination);\n const count = H3.h3LineSize(oLower, oUpper, dLower, dUpper);\n if (count < 0) {\n // We can't get the specific error code here - may be any of\n // the errors possible in experimentalH3ToLocalIj\n throw new Error('Line cannot be calculated');\n }\n const hexagons = C._calloc(count, SZ_H3INDEX);\n H3.h3Line(oLower, oUpper, dLower, dUpper, hexagons);\n const out = readArrayOfHexagons(hexagons, count);\n C._free(hexagons);\n return out;\n}\n\n/**\n * Produces IJ coordinates for an H3 index anchored by an origin.\n *\n * - The coordinate space used by this function may have deleted\n * regions or warping due to pentagonal distortion.\n * - Coordinates are only comparable if they come from the same\n * origin index.\n * - Failure may occur if the index is too far away from the origin\n * or if the index is on the other side of a pentagon.\n * - This function is experimental, and its output is not guaranteed\n * to be compatible across different versions of H3.\n * @static\n * @param {H3IndexInput} origin Origin H3 index\n * @param {H3IndexInput} destination H3 index for which to find relative coordinates\n * @return {CoordIJ} Coordinates as an `{i, j}` pair\n * @throws {Error} If the IJ coordinates cannot be calculated\n */\nexport function experimentalH3ToLocalIj(origin, destination) {\n const ij = C._malloc(SZ_COORDIJ);\n const retVal = H3.experimentalH3ToLocalIj(\n ...h3IndexToSplitLong(origin),\n ...h3IndexToSplitLong(destination),\n ij\n );\n const coords = readCoordIJ(ij);\n C._free(ij);\n // Return the pair, or throw if an error code was returned.\n // Switch statement and error codes cribbed from h3-java's implementation.\n switch (retVal) {\n case 0:\n return coords;\n case 1:\n throw new Error('Incompatible origin and index.');\n case 2:\n default:\n throw new Error(\n 'Local IJ coordinates undefined for this origin and index pair. ' +\n 'The index may be too far from the origin.'\n );\n case 3:\n case 4:\n case 5:\n throw new Error('Encountered possible pentagon distortion');\n }\n}\n\n/**\n * Produces an H3 index for IJ coordinates anchored by an origin.\n *\n * - The coordinate space used by this function may have deleted\n * regions or warping due to pentagonal distortion.\n * - Coordinates are only comparable if they come from the same\n * origin index.\n * - Failure may occur if the index is too far away from the origin\n * or if the index is on the other side of a pentagon.\n * - This function is experimental, and its output is not guaranteed\n * to be compatible across different versions of H3.\n * @static\n * @param {H3IndexInput} origin Origin H3 index\n * @param {CoordIJ} coords Coordinates as an `{i, j}` pair\n * @return {H3Index} H3 index at the relative coordinates\n * @throws {Error} If the H3 index cannot be calculated\n */\nexport function experimentalLocalIjToH3(origin, coords) {\n // Validate input coords\n if (!coords || typeof coords.i !== 'number' || typeof coords.j !== 'number') {\n throw new Error('Coordinates must be provided as an {i, j} object');\n }\n // Allocate memory for the CoordIJ struct and an H3 index to hold the return value\n const ij = C._malloc(SZ_COORDIJ);\n const out = C._malloc(SZ_H3INDEX);\n storeCoordIJ(ij, coords);\n const retVal = H3.experimentalLocalIjToH3(...h3IndexToSplitLong(origin), ij, out);\n const h3Index = readH3IndexFromPointer(out);\n C._free(ij);\n C._free(out);\n if (retVal !== 0) {\n throw new Error(\n 'Index not defined for this origin and IJ coordinates pair. ' +\n 'IJ coordinates may be too far from origin, or ' +\n 'a pentagon distortion was encountered.'\n );\n }\n return h3Index;\n}\n\n// ----------------------------------------------------------------------------\n// Public API functions: Distance/area utilities\n\n/**\n * Great circle distance between two geo points. This is not specific to H3,\n * but is implemented in the library and provided here as a convenience.\n * @static\n * @param {number[]} latlng1 Origin coordinate as [lat, lng]\n * @param {number[]} latlng2 Destination coordinate as [lat, lng]\n * @param {string} unit Distance unit (either UNITS.m or UNITS.km)\n * @return {number} Great circle distance\n * @throws {Error} If the unit is invalid\n */\nexport function pointDist(latlng1, latlng2, unit) {\n const coord1 = storeGeoCoord(latlng1[0], latlng1[1]);\n const coord2 = storeGeoCoord(latlng2[0], latlng2[1]);\n let result;\n switch (unit) {\n case UNITS.m:\n result = H3.pointDistM(coord1, coord2);\n break;\n case UNITS.km:\n result = H3.pointDistKm(coord1, coord2);\n break;\n case UNITS.rads:\n result = H3.pointDistRads(coord1, coord2);\n break;\n default:\n result = null;\n }\n C._free(coord1);\n C._free(coord2);\n if (result === null) {\n throw new Error(`Unknown unit: ${unit}`);\n }\n return result;\n}\n\n/**\n * Exact area of a given cell\n * @static\n * @param {H3Index} h3Index H3 index of the hexagon to measure\n * @param {string} unit Distance unit (either UNITS.m2 or UNITS.km2)\n * @return {number} Cell area\n * @throws {Error} If the unit is invalid\n */\nexport function cellArea(h3Index, unit) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n switch (unit) {\n case UNITS.m2:\n return H3.cellAreaM2(lower, upper);\n case UNITS.km2:\n return H3.cellAreaKm2(lower, upper);\n case UNITS.rads2:\n return H3.cellAreaRads2(lower, upper);\n default:\n throw new Error(`Unknown unit: ${unit}`);\n }\n}\n\n/**\n * Exact length of a given unidirectional edge\n * @static\n * @param {H3Index} edge H3 index of the edge to measure\n * @param {string} unit Distance unit (either UNITS.m, UNITS.km, or UNITS.rads)\n * @return {number} Cell area\n * @throws {Error} If the unit is invalid\n */\nexport function exactEdgeLength(edge, unit) {\n const [lower, upper] = h3IndexToSplitLong(edge);\n switch (unit) {\n case UNITS.m:\n return H3.exactEdgeLengthM(lower, upper);\n case UNITS.km:\n return H3.exactEdgeLengthKm(lower, upper);\n case UNITS.rads:\n return H3.exactEdgeLengthRads(lower, upper);\n default:\n throw new Error(`Unknown unit: ${unit}`);\n }\n}\n\n/**\n * Average hexagon area at a given resolution\n * @static\n * @param {number} res Hexagon resolution\n * @param {string} unit Area unit (either UNITS.m2, UNITS.km2, or UNITS.rads2)\n * @return {number} Average area\n * @throws {Error} If the unit is invalid\n */\nexport function hexArea(res, unit) {\n validateRes(res);\n switch (unit) {\n case UNITS.m2:\n return H3.hexAreaM2(res);\n case UNITS.km2:\n return H3.hexAreaKm2(res);\n default:\n throw new Error(`Unknown unit: ${unit}`);\n }\n}\n\n/**\n * Average hexagon edge length at a given resolution\n * @static\n * @param {number} res Hexagon resolution\n * @param {string} unit Distance unit (either UNITS.m, UNITS.km, or UNITS.rads)\n * @return {number} Average edge length\n * @throws {Error} If the unit is invalid\n */\nexport function edgeLength(res, unit) {\n validateRes(res);\n switch (unit) {\n case UNITS.m:\n return H3.edgeLengthM(res);\n case UNITS.km:\n return H3.edgeLengthKm(res);\n default:\n throw new Error(`Unknown unit: ${unit}`);\n }\n}\n\n// ----------------------------------------------------------------------------\n// Public informational utilities\n\n/**\n * The total count of hexagons in the world at a given resolution. Note that above\n * resolution 8 the exact count cannot be represented in a JavaScript 32-bit number,\n * so consumers should use caution when applying further operations to the output.\n * @static\n * @param {number} res Hexagon resolution\n * @return {number} Count\n */\nexport function numHexagons(res) {\n validateRes(res);\n // Get number as a long value\n const [lower, upper] = readLong(H3.numHexagons(res));\n // If we're using <= 32 bits we can use normal JS numbers\n if (!upper) {\n return lower;\n }\n // Above 32 bit, make a JS number that's correct in order of magnitude\n return upper * Math.pow(2, 32) + lower;\n}\n\n/**\n * Get all H3 indexes at resolution 0. As every index at every resolution > 0 is\n * the descendant of a res 0 index, this can be used with h3ToChildren to iterate\n * over H3 indexes at any resolution.\n * @static\n * @return {H3Index[]} All H3 indexes at res 0\n */\nexport function getRes0Indexes() {\n const count = H3.res0IndexCount();\n const hexagons = C._malloc(SZ_H3INDEX * count);\n H3.getRes0Indexes(hexagons);\n const out = readArrayOfHexagons(hexagons, count);\n C._free(hexagons);\n return out;\n}\n\n/**\n * Get the twelve pentagon indexes at a given resolution.\n * @static\n * @param {number} res Hexagon resolution\n * @return {H3Index[]} All H3 pentagon indexes at res\n */\nexport function getPentagonIndexes(res) {\n validateRes(res);\n const count = H3.pentagonIndexCount();\n const hexagons = C._malloc(SZ_H3INDEX * count);\n H3.getPentagonIndexes(res, hexagons);\n const out = readArrayOfHexagons(hexagons, count);\n C._free(hexagons);\n return out;\n}\n\n/**\n * Convert degrees to radians\n * @static\n * @param {number} deg Value in degrees\n * @return {number} Value in radians\n */\nexport function degsToRads(deg) {\n return (deg * Math.PI) / 180;\n}\n\n/**\n * Convert radians to degrees\n * @static\n * @param {number} rad Value in radians\n * @return {number} Value in degrees\n */\nexport function radsToDegs(rad) {\n return (rad * 180) / Math.PI;\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { h3ToGeoBoundary, h3GetResolution, h3ToGeo, geoToH3, h3IsPentagon, h3Distance, edgeLength } from 'h3-js';\nimport { lerp } from '@math.gl/core';\nimport { CompositeLayer, createIterable } from '@deck.gl/core';\nimport { ColumnLayer, PolygonLayer } from '@deck.gl/layers';\nconst UPDATE_THRESHOLD_KM = 10;\nexport function normalizeLongitudes(vertices, refLng) {\n refLng = refLng === undefined ? vertices[0][0] : refLng;\n\n for (const pt of vertices) {\n const deltaLng = pt[0] - refLng;\n\n if (deltaLng > 180) {\n pt[0] -= 360;\n } else if (deltaLng < -180) {\n pt[0] += 360;\n }\n }\n}\nexport function scalePolygon(hexId, vertices, factor) {\n const [lat, lng] = h3ToGeo(hexId);\n const actualCount = vertices.length;\n normalizeLongitudes(vertices, lng);\n const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;\n\n for (let i = 0; i < vertexCount; i++) {\n vertices[i][0] = lerp(lng, vertices[i][0], factor);\n vertices[i][1] = lerp(lat, vertices[i][1], factor);\n }\n}\n\nfunction getHexagonCentroid(getHexagon, object, objectInfo) {\n const hexagonId = getHexagon(object, objectInfo);\n const [lat, lng] = h3ToGeo(hexagonId);\n return [lng, lat];\n}\n\nfunction h3ToPolygon(hexId, coverage = 1) {\n const vertices = h3ToGeoBoundary(hexId, true);\n\n if (coverage !== 1) {\n scalePolygon(hexId, vertices, coverage);\n } else {\n normalizeLongitudes(vertices);\n }\n\n return vertices;\n}\n\nfunction flattenPolygon(vertices) {\n const positions = new Float64Array(vertices.length * 2);\n let i = 0;\n\n for (const pt of vertices) {\n positions[i++] = pt[0];\n positions[i++] = pt[1];\n }\n\n return positions;\n}\n\nfunction mergeTriggers(getHexagon, coverage) {\n let trigger;\n\n if (getHexagon === undefined || getHexagon === null) {\n trigger = coverage;\n } else if (typeof getHexagon === 'object') {\n trigger = { ...getHexagon,\n coverage\n };\n } else {\n trigger = {\n getHexagon,\n coverage\n };\n }\n\n return trigger;\n}\n\nconst defaultProps = { ...PolygonLayer.defaultProps,\n highPrecision: 'auto',\n coverage: {\n type: 'number',\n min: 0,\n max: 1,\n value: 1\n },\n centerHexagon: null,\n getHexagon: {\n type: 'accessor',\n value: x => x.hexagon\n },\n extruded: true\n};\nexport default class H3HexagonLayer extends CompositeLayer {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", void 0);\n }\n\n initializeState() {\n H3HexagonLayer._checkH3Lib();\n\n this.state = {\n edgeLengthKM: 0,\n resolution: -1\n };\n }\n\n shouldUpdateState({\n changeFlags\n }) {\n return this._shouldUseHighPrecision() ? changeFlags.propsOrDataChanged : changeFlags.somethingChanged;\n }\n\n updateState({\n props,\n changeFlags\n }) {\n if (props.highPrecision !== true && (changeFlags.dataChanged || changeFlags.updateTriggersChanged && changeFlags.updateTriggersChanged.getHexagon)) {\n const dataProps = this._calculateH3DataProps();\n\n this.setState(dataProps);\n }\n\n this._updateVertices(this.context.viewport);\n }\n\n _calculateH3DataProps() {\n let resolution = -1;\n let hasPentagon = false;\n let hasMultipleRes = false;\n const {\n iterable,\n objectInfo\n } = createIterable(this.props.data);\n\n for (const object of iterable) {\n objectInfo.index++;\n const hexId = this.props.getHexagon(object, objectInfo);\n const hexResolution = h3GetResolution(hexId);\n\n if (resolution < 0) {\n resolution = hexResolution;\n if (!this.props.highPrecision) break;\n } else if (resolution !== hexResolution) {\n hasMultipleRes = true;\n break;\n }\n\n if (h3IsPentagon(hexId)) {\n hasPentagon = true;\n break;\n }\n }\n\n return {\n resolution,\n edgeLengthKM: resolution >= 0 ? edgeLength(resolution, 'km') : 0,\n hasMultipleRes,\n hasPentagon\n };\n }\n\n _shouldUseHighPrecision() {\n if (this.props.highPrecision === 'auto') {\n const {\n resolution,\n hasPentagon,\n hasMultipleRes\n } = this.state;\n const {\n viewport\n } = this.context;\n return Boolean(viewport === null || viewport === void 0 ? void 0 : viewport.resolution) || hasMultipleRes || hasPentagon || resolution >= 0 && resolution <= 5;\n }\n\n return this.props.highPrecision;\n }\n\n _updateVertices(viewport) {\n if (this._shouldUseHighPrecision()) {\n return;\n }\n\n const {\n resolution,\n edgeLengthKM,\n centerHex\n } = this.state;\n\n if (resolution < 0) {\n return;\n }\n\n const hex = this.props.centerHexagon || geoToH3(viewport.latitude, viewport.longitude, resolution);\n\n if (centerHex === hex) {\n return;\n }\n\n if (centerHex) {\n const distance = h3Distance(centerHex, hex);\n\n if (distance >= 0 && distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {\n return;\n }\n }\n\n const {\n unitsPerMeter\n } = viewport.distanceScales;\n let vertices = h3ToPolygon(hex);\n const [centerLat, centerLng] = h3ToGeo(hex);\n const [centerX, centerY] = viewport.projectFlat([centerLng, centerLat]);\n vertices = vertices.map(p => {\n const worldPosition = viewport.projectFlat(p);\n return [(worldPosition[0] - centerX) / unitsPerMeter[0], (worldPosition[1] - centerY) / unitsPerMeter[1]];\n });\n this.setState({\n centerHex: hex,\n vertices\n });\n }\n\n renderLayers() {\n return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();\n }\n\n _getForwardProps() {\n const {\n elevationScale,\n material,\n coverage,\n extruded,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n getFillColor,\n getElevation,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers\n } = this.props;\n return {\n elevationScale,\n extruded,\n coverage,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n material,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers: {\n getFillColor: updateTriggers.getFillColor,\n getElevation: updateTriggers.getElevation,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n }\n };\n }\n\n _renderPolygonLayer() {\n const {\n data,\n getHexagon,\n updateTriggers,\n coverage\n } = this.props;\n const SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', PolygonLayer);\n\n const forwardProps = this._getForwardProps();\n\n forwardProps.updateTriggers.getPolygon = mergeTriggers(updateTriggers.getHexagon, coverage);\n return new SubLayerClass(forwardProps, this.getSubLayerProps({\n id: 'hexagon-cell-hifi',\n updateTriggers: forwardProps.updateTriggers\n }), {\n data,\n _normalize: false,\n _windingOrder: 'CCW',\n positionFormat: 'XY',\n getPolygon: (object, objectInfo) => {\n const hexagonId = getHexagon(object, objectInfo);\n return flattenPolygon(h3ToPolygon(hexagonId, coverage));\n }\n });\n }\n\n _renderColumnLayer() {\n const {\n data,\n getHexagon,\n updateTriggers\n } = this.props;\n const SubLayerClass = this.getSubLayerClass('hexagon-cell', ColumnLayer);\n\n const forwardProps = this._getForwardProps();\n\n forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;\n return new SubLayerClass(forwardProps, this.getSubLayerProps({\n id: 'hexagon-cell',\n flatShading: true,\n updateTriggers: forwardProps.updateTriggers\n }), {\n data,\n diskResolution: 6,\n radius: 1,\n vertices: this.state.vertices,\n getPosition: getHexagonCentroid.bind(null, getHexagon)\n });\n }\n\n}\n\n_defineProperty(H3HexagonLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(H3HexagonLayer, \"layerName\", 'H3HexagonLayer');\n\n_defineProperty(H3HexagonLayer, \"_checkH3Lib\", () => {});\n//# sourceMappingURL=h3-hexagon-layer.js.map","import {\n h3ToGeoBoundary,\n h3GetResolution,\n h3ToGeo,\n geoToH3,\n h3IsPentagon,\n h3Distance,\n edgeLength,\n H3Index\n} from 'h3-js';\nimport {lerp} from '@math.gl/core';\nimport {\n AccessorFunction,\n CompositeLayer,\n createIterable,\n Layer,\n LayersList,\n UpdateParameters,\n WebMercatorViewport,\n DefaultProps\n} from '@deck.gl/core';\nimport {ColumnLayer, PolygonLayer, PolygonLayerProps} from '@deck.gl/layers';\n\n// There is a cost to updating the instanced geometries when using highPrecision: false\n// This constant defines the distance between two hexagons that leads to \"significant\n// distortion.\" Smaller value makes the column layer more sensitive to viewport change.\nconst UPDATE_THRESHOLD_KM = 10;\n\n// normalize longitudes w.r.t center (refLng), when not provided first vertex\nexport function normalizeLongitudes(vertices: number[][], refLng?: number): void {\n refLng = refLng === undefined ? vertices[0][0] : refLng;\n for (const pt of vertices) {\n const deltaLng = pt[0] - refLng;\n if (deltaLng > 180) {\n pt[0] -= 360;\n } else if (deltaLng < -180) {\n pt[0] += 360;\n }\n }\n}\n\n// scale polygon vertices w.r.t center (hexId)\nexport function scalePolygon(hexId: H3Index, vertices: number[][], factor: number): void {\n const [lat, lng] = h3ToGeo(hexId);\n const actualCount = vertices.length;\n\n // normalize with respect to center\n normalizeLongitudes(vertices, lng);\n\n // `h3ToGeoBoundary` returns same array object for first and last vertex (closed polygon),\n // if so skip scaling the last vertex\n const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;\n for (let i = 0; i < vertexCount; i++) {\n vertices[i][0] = lerp(lng, vertices[i][0], factor);\n vertices[i][1] = lerp(lat, vertices[i][1], factor);\n }\n}\n\nfunction getHexagonCentroid(getHexagon, object, objectInfo) {\n const hexagonId = getHexagon(object, objectInfo);\n const [lat, lng] = h3ToGeo(hexagonId);\n return [lng, lat];\n}\n\nfunction h3ToPolygon(hexId: H3Index, coverage: number = 1): number[][] {\n const vertices = h3ToGeoBoundary(hexId, true);\n\n if (coverage !== 1) {\n // scale and normalize vertices w.r.t to center\n scalePolygon(hexId, vertices, coverage);\n } else {\n // normalize w.r.t to start vertex\n normalizeLongitudes(vertices);\n }\n\n return vertices;\n}\n\nfunction flattenPolygon(vertices: number[][]): Float64Array {\n const positions = new Float64Array(vertices.length * 2);\n let i = 0;\n for (const pt of vertices) {\n positions[i++] = pt[0];\n positions[i++] = pt[1];\n }\n return positions;\n}\n\nfunction mergeTriggers(getHexagon, coverage) {\n let trigger;\n if (getHexagon === undefined || getHexagon === null) {\n trigger = coverage;\n } else if (typeof getHexagon === 'object') {\n trigger = {...getHexagon, coverage};\n } else {\n trigger = {getHexagon, coverage};\n }\n return trigger;\n}\n\nconst defaultProps: DefaultProps = {\n ...PolygonLayer.defaultProps,\n highPrecision: 'auto',\n coverage: {type: 'number', min: 0, max: 1, value: 1},\n centerHexagon: null,\n getHexagon: {type: 'accessor', value: x => x.hexagon},\n extruded: true\n};\n\n/** All properties supported by H3HexagonLayer */\nexport type H3HexagonLayerProps = _H3HexagonLayerProps &\n PolygonLayerProps;\n\n/** Props added by the H3HexagonLayer */\ntype _H3HexagonLayerProps = {\n /**\n * Whether or not draw hexagons with high precision.\n * @default 'auto'\n */\n highPrecision?: boolean | 'auto';\n /**\n * Coverage of hexagon in cell.\n * @default 1\n */\n coverage?: number;\n /**\n * Center hexagon that best represents the shape of the set. If not specified, the hexagon closest to the center of the viewport is used.\n */\n centerHexagon?: H3Index | null;\n /**\n * Called for each data object to retrieve the quadkey string identifier.\n *\n * By default, it reads `hexagon` property of data object.\n */\n getHexagon?: AccessorFunction;\n /**\n * Whether to extrude polygons.\n * @default true\n */\n extruded?: boolean;\n};\n\n/**\n * Render hexagons from the [H3](https://h3geo.org/) geospatial indexing system.\n */\nexport default class H3HexagonLayer<\n DataT = any,\n ExtraPropsT extends {} = {}\n> extends CompositeLayer>> {\n static defaultProps = defaultProps;\n static layerName = 'H3HexagonLayer';\n\n // See `main/bundle.ts`\n static _checkH3Lib = () => {};\n\n initializeState() {\n H3HexagonLayer._checkH3Lib();\n this.state = {\n edgeLengthKM: 0,\n resolution: -1\n };\n }\n\n state!: {\n centerHex?: H3Index;\n edgeLengthKM: number;\n hasMultipleRes?: boolean;\n hasPentagon?: boolean;\n resolution: number;\n vertices?: number[][];\n };\n\n shouldUpdateState({changeFlags}: UpdateParameters): boolean {\n return this._shouldUseHighPrecision()\n ? changeFlags.propsOrDataChanged\n : changeFlags.somethingChanged;\n }\n\n updateState({props, changeFlags}: UpdateParameters): void {\n if (\n props.highPrecision !== true &&\n (changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged && changeFlags.updateTriggersChanged.getHexagon))\n ) {\n const dataProps = this._calculateH3DataProps();\n this.setState(dataProps);\n }\n\n this._updateVertices(this.context.viewport as WebMercatorViewport);\n }\n\n private _calculateH3DataProps() {\n let resolution = -1;\n let hasPentagon = false;\n let hasMultipleRes = false;\n\n const {iterable, objectInfo} = createIterable(this.props.data);\n for (const object of iterable) {\n objectInfo.index++;\n const hexId = this.props.getHexagon(object, objectInfo);\n // Take the resolution of the first hex\n const hexResolution = h3GetResolution(hexId);\n if (resolution < 0) {\n resolution = hexResolution;\n if (!this.props.highPrecision) break;\n } else if (resolution !== hexResolution) {\n hasMultipleRes = true;\n break;\n }\n if (h3IsPentagon(hexId)) {\n hasPentagon = true;\n break;\n }\n }\n\n return {\n resolution,\n edgeLengthKM: resolution >= 0 ? edgeLength(resolution, 'km') : 0,\n hasMultipleRes,\n hasPentagon\n };\n }\n\n private _shouldUseHighPrecision(): boolean {\n if (this.props.highPrecision === 'auto') {\n const {resolution, hasPentagon, hasMultipleRes} = this.state;\n const {viewport} = this.context;\n return (\n Boolean(viewport?.resolution) ||\n hasMultipleRes ||\n hasPentagon ||\n (resolution >= 0 && resolution <= 5)\n );\n }\n\n return this.props.highPrecision;\n }\n\n private _updateVertices(viewport: WebMercatorViewport): void {\n if (this._shouldUseHighPrecision()) {\n return;\n }\n const {resolution, edgeLengthKM, centerHex} = this.state;\n if (resolution < 0) {\n return;\n }\n const hex =\n this.props.centerHexagon || geoToH3(viewport.latitude, viewport.longitude, resolution);\n if (centerHex === hex) {\n return;\n }\n if (centerHex) {\n const distance = h3Distance(centerHex, hex);\n // h3Distance returns a negative number if the distance could not be computed\n // due to the two indexes very far apart or on opposite sides of a pentagon.\n if (distance >= 0 && distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {\n return;\n }\n }\n\n const {unitsPerMeter} = viewport.distanceScales;\n\n let vertices = h3ToPolygon(hex);\n const [centerLat, centerLng] = h3ToGeo(hex);\n\n const [centerX, centerY] = viewport.projectFlat([centerLng, centerLat]);\n vertices = vertices.map(p => {\n const worldPosition = viewport.projectFlat(p);\n return [\n (worldPosition[0] - centerX) / unitsPerMeter[0],\n (worldPosition[1] - centerY) / unitsPerMeter[1]\n ];\n });\n\n this.setState({centerHex: hex, vertices});\n }\n\n renderLayers(): Layer | null | LayersList {\n return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();\n }\n\n private _getForwardProps() {\n const {\n elevationScale,\n material,\n coverage,\n extruded,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n getFillColor,\n getElevation,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers\n } = this.props;\n\n return {\n elevationScale,\n extruded,\n coverage,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n material,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers: {\n getFillColor: updateTriggers.getFillColor,\n getElevation: updateTriggers.getElevation,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n } as {\n getFillColor: any;\n getElevation: any;\n getLineColor: any;\n getLineWidth: any;\n getPolygon?: any;\n getPosition?: any;\n }\n };\n }\n\n private _renderPolygonLayer(): PolygonLayer {\n const {data, getHexagon, updateTriggers, coverage} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', PolygonLayer);\n const forwardProps = this._getForwardProps();\n forwardProps.updateTriggers.getPolygon = mergeTriggers(updateTriggers.getHexagon, coverage);\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell-hifi',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n _normalize: false,\n _windingOrder: 'CCW',\n positionFormat: 'XY',\n getPolygon: (object, objectInfo) => {\n const hexagonId = getHexagon(object, objectInfo);\n return flattenPolygon(h3ToPolygon(hexagonId, coverage));\n }\n }\n );\n }\n\n private _renderColumnLayer(): ColumnLayer {\n const {data, getHexagon, updateTriggers} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell', ColumnLayer);\n const forwardProps = this._getForwardProps();\n forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell',\n flatShading: true,\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n diskResolution: 6, // generate an extruded hexagon as the base geometry\n radius: 1,\n vertices: this.state.vertices,\n getPosition: getHexagonCentroid.bind(null, getHexagon)\n }\n );\n }\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, gouraudLighting, phongLighting, picking, UNIT } from '@deck.gl/core';\nimport { Model, isWebGL2, hasFeature, FEATURES } from '@luma.gl/core';\nimport ColumnGeometry from './column-geometry';\nimport vs from './column-layer-vertex.glsl';\nimport fs from './column-layer-fragment.glsl';\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n diskResolution: {\n type: 'number',\n min: 4,\n value: 20\n },\n vertices: null,\n radius: {\n type: 'number',\n min: 0,\n value: 1000\n },\n angle: {\n type: 'number',\n value: 0\n },\n offset: {\n type: 'array',\n value: [0, 0]\n },\n coverage: {\n type: 'number',\n min: 0,\n max: 1,\n value: 1\n },\n elevationScale: {\n type: 'number',\n min: 0,\n value: 1\n },\n radiusUnits: 'meters',\n lineWidthUnits: 'meters',\n lineWidthScale: 1,\n lineWidthMinPixels: 0,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n extruded: true,\n wireframe: false,\n filled: true,\n stroked: false,\n getPosition: {\n type: 'accessor',\n value: x => x.position\n },\n getFillColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n getLineColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n getLineWidth: {\n type: 'accessor',\n value: 1\n },\n getElevation: {\n type: 'accessor',\n value: 1000\n },\n material: true,\n getColor: {\n deprecatedFor: ['getFillColor', 'getLineColor']\n }\n};\nexport default class ColumnLayer extends Layer {\n getShaders() {\n const {\n gl\n } = this.context;\n const transpileToGLSL100 = !isWebGL2(gl);\n const defines = {};\n const useDerivatives = this.props.flatShading && hasFeature(gl, FEATURES.GLSL_DERIVATIVES);\n\n if (useDerivatives) {\n defines.FLAT_SHADING = 1;\n }\n\n return super.getShaders({\n vs,\n fs,\n defines,\n transpileToGLSL100,\n modules: [project32, useDerivatives ? phongLighting : gouraudLighting, picking]\n });\n }\n\n initializeState() {\n const attributeManager = this.getAttributeManager();\n attributeManager.addInstanced({\n instancePositions: {\n size: 3,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getPosition'\n },\n instanceElevations: {\n size: 1,\n transition: true,\n accessor: 'getElevation'\n },\n instanceFillColors: {\n size: this.props.colorFormat.length,\n type: 5121,\n normalized: true,\n transition: true,\n accessor: 'getFillColor',\n defaultValue: DEFAULT_COLOR\n },\n instanceLineColors: {\n size: this.props.colorFormat.length,\n type: 5121,\n normalized: true,\n transition: true,\n accessor: 'getLineColor',\n defaultValue: DEFAULT_COLOR\n },\n instanceStrokeWidths: {\n size: 1,\n accessor: 'getLineWidth',\n transition: true\n }\n });\n }\n\n updateState(params) {\n super.updateState(params);\n const {\n props,\n oldProps,\n changeFlags\n } = params;\n const regenerateModels = changeFlags.extensionsChanged || props.flatShading !== oldProps.flatShading;\n\n if (regenerateModels) {\n var _this$state$model;\n\n const {\n gl\n } = this.context;\n (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n this.state.model = this._getModel(gl);\n this.getAttributeManager().invalidateAll();\n }\n\n if (regenerateModels || props.diskResolution !== oldProps.diskResolution || props.vertices !== oldProps.vertices || (props.extruded || props.stroked) !== (oldProps.extruded || oldProps.stroked)) {\n this._updateGeometry(props);\n }\n }\n\n getGeometry(diskResolution, vertices, hasThinkness) {\n const geometry = new ColumnGeometry({\n radius: 1,\n height: hasThinkness ? 2 : 0,\n vertices,\n nradial: diskResolution\n });\n let meanVertexDistance = 0;\n\n if (vertices) {\n for (let i = 0; i < diskResolution; i++) {\n const p = vertices[i];\n const d = Math.sqrt(p[0] * p[0] + p[1] * p[1]);\n meanVertexDistance += d / diskResolution;\n }\n } else {\n meanVertexDistance = 1;\n }\n\n this.setState({\n edgeDistance: Math.cos(Math.PI / diskResolution) * meanVertexDistance\n });\n return geometry;\n }\n\n _getModel(gl) {\n return new Model(gl, { ...this.getShaders(),\n id: this.props.id,\n isInstanced: true\n });\n }\n\n _updateGeometry({\n diskResolution,\n vertices,\n extruded,\n stroked\n }) {\n const geometry = this.getGeometry(diskResolution, vertices, extruded || stroked);\n this.setState({\n fillVertexCount: geometry.attributes.POSITION.value.length / 3,\n wireframeVertexCount: geometry.indices.value.length\n });\n this.state.model.setProps({\n geometry\n });\n }\n\n draw({\n uniforms\n }) {\n const {\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n radiusUnits,\n elevationScale,\n extruded,\n filled,\n stroked,\n wireframe,\n offset,\n coverage,\n radius,\n angle\n } = this.props;\n const {\n model,\n fillVertexCount,\n wireframeVertexCount,\n edgeDistance\n } = this.state;\n model.setUniforms(uniforms).setUniforms({\n radius,\n angle: angle / 180 * Math.PI,\n offset,\n extruded,\n stroked,\n coverage,\n elevationScale,\n edgeDistance,\n radiusUnits: UNIT[radiusUnits],\n widthUnits: UNIT[lineWidthUnits],\n widthScale: lineWidthScale,\n widthMinPixels: lineWidthMinPixels,\n widthMaxPixels: lineWidthMaxPixels\n });\n\n if (extruded && wireframe) {\n model.setProps({\n isIndexed: true\n });\n model.setVertexCount(wireframeVertexCount).setDrawMode(1).setUniforms({\n isStroke: true\n }).draw();\n }\n\n if (filled) {\n model.setProps({\n isIndexed: false\n });\n model.setVertexCount(fillVertexCount).setDrawMode(5).setUniforms({\n isStroke: false\n }).draw();\n }\n\n if (!extruded && stroked) {\n model.setProps({\n isIndexed: false\n });\n model.setVertexCount(fillVertexCount * 2 / 3).setDrawMode(5).setUniforms({\n isStroke: true\n }).draw();\n }\n }\n\n}\n\n_defineProperty(ColumnLayer, \"layerName\", 'ColumnLayer');\n\n_defineProperty(ColumnLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=column-layer.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {\n Layer,\n project32,\n gouraudLighting,\n phongLighting,\n picking,\n UNIT,\n LayerProps,\n LayerDataSource,\n UpdateParameters,\n Unit,\n AccessorFunction,\n Position,\n Accessor,\n Color,\n Material,\n DefaultProps\n} from '@deck.gl/core';\nimport GL from '@luma.gl/constants';\nimport {Model, isWebGL2, hasFeature, FEATURES} from '@luma.gl/core';\nimport ColumnGeometry from './column-geometry';\n\nimport vs from './column-layer-vertex.glsl';\nimport fs from './column-layer-fragment.glsl';\n\nconst DEFAULT_COLOR: [number, number, number, number] = [0, 0, 0, 255];\n\nconst defaultProps: DefaultProps = {\n diskResolution: {type: 'number', min: 4, value: 20},\n vertices: null,\n radius: {type: 'number', min: 0, value: 1000},\n angle: {type: 'number', value: 0},\n offset: {type: 'array', value: [0, 0]},\n coverage: {type: 'number', min: 0, max: 1, value: 1},\n elevationScale: {type: 'number', min: 0, value: 1},\n radiusUnits: 'meters',\n lineWidthUnits: 'meters',\n lineWidthScale: 1,\n lineWidthMinPixels: 0,\n lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,\n\n extruded: true,\n wireframe: false,\n filled: true,\n stroked: false,\n\n getPosition: {type: 'accessor', value: x => x.position},\n getFillColor: {type: 'accessor', value: DEFAULT_COLOR},\n getLineColor: {type: 'accessor', value: DEFAULT_COLOR},\n getLineWidth: {type: 'accessor', value: 1},\n getElevation: {type: 'accessor', value: 1000},\n material: true,\n getColor: {deprecatedFor: ['getFillColor', 'getLineColor']}\n};\n\n/** All properties supported by ColumnLayer. */\nexport type ColumnLayerProps = _ColumnLayerProps & LayerProps;\n\n/** Properties added by ColumnLayer. */\ntype _ColumnLayerProps = {\n data: LayerDataSource;\n /**\n * The number of sides to render the disk as.\n * @default 20\n */\n diskResolution?: number;\n\n /**\n * isk size in units specified by `radiusUnits`.\n * @default 1000\n */\n radius?: number;\n\n /**\n * Disk rotation, counter-clockwise in degrees.\n * @default 0\n */\n angle?: number;\n\n /**\n * Replace the default geometry (regular polygon that fits inside the unit circle) with a custom one.\n * @default null\n */\n vertices: Position[] | null;\n\n /**\n * Disk offset from the position, relative to the radius.\n * @default [0,0]\n */\n offset?: [number, number];\n\n /**\n * Radius multiplier, between 0 - 1\n * @default 1\n */\n coverage?: number;\n\n /**\n * Column elevation multiplier.\n * @default 1\n */\n elevationScale?: number;\n\n /**\n * Whether to draw a filled column (solid fill).\n * @default true\n */\n filled?: boolean;\n\n /**\n * Whether to draw an outline around the disks.\n * @default false\n */\n stroked?: boolean;\n\n /**\n * Whether to extrude the columns. If set to `false`, all columns will be rendered as flat polygons.\n * @default true\n */\n extruded?: boolean;\n\n /**\n * Whether to generate a line wireframe of the column.\n * @default false\n */\n wireframe?: boolean;\n\n /**\n * If `true`, the vertical surfaces of the columns use [flat shading](https://en.wikipedia.org/wiki/Shading#Flat_vs._smooth_shading).\n * @default false\n */\n flatShading?: boolean;\n\n /**\n * The units of the radius.\n * @default 'meters'\n */\n radiusUnits?: Unit;\n\n /**\n * The units of the line width.\n * @default 'meters'\n */\n lineWidthUnits?: Unit;\n\n /**\n * The line width multiplier that multiplied to all outlines.\n * @default 1\n */\n lineWidthScale?: number;\n\n /**\n * The minimum outline width in pixels.\n * @default 0\n */\n lineWidthMinPixels?: number;\n\n /**\n * The maximum outline width in pixels.\n * @default Number.MAX_SAFE_INTEGER\n */\n lineWidthMaxPixels?: number;\n\n /**\n * Material settings for lighting effect. Applies if `extruded: true`.\n *\n * @default true\n * @see https://deck.gl/docs/developer-guide/using-lighting\n */\n material?: Material;\n\n /**\n * Method called to retrieve the position of each column.\n * @default object => object.position\n */\n getPosition?: AccessorFunction;\n\n /**\n * @deprecated Use getFilledColor and getLineColor instead\n */\n getColor?: Accessor;\n\n /**\n * Fill collor value or accessor.\n * @default [0, 0, 0, 255]\n */\n getFillColor?: Accessor;\n\n /**\n * Line color value or accessor.\n *\n * @default [0, 0, 0, 255]\n */\n getLineColor?: Accessor;\n\n /**\n * The elevation of each cell in meters.\n * @default 1000\n */\n getElevation?: Accessor;\n\n /**\n * The width of the outline of the column, in units specified by `lineWidthUnits`.\n *\n * @default 1\n */\n getLineWidth?: Accessor;\n};\n\n/** Render extruded cylinders (tessellated regular polygons) at given coordinates. */\nexport default class ColumnLayer extends Layer<\n ExtraPropsT & Required<_ColumnLayerProps>\n> {\n static layerName = 'ColumnLayer';\n static defaultProps = defaultProps;\n\n getShaders() {\n const {gl} = this.context;\n const transpileToGLSL100 = !isWebGL2(gl);\n const defines: Record = {};\n\n const useDerivatives = this.props.flatShading && hasFeature(gl, FEATURES.GLSL_DERIVATIVES);\n if (useDerivatives) {\n defines.FLAT_SHADING = 1;\n }\n return super.getShaders({\n vs,\n fs,\n defines,\n transpileToGLSL100,\n modules: [project32, useDerivatives ? phongLighting : gouraudLighting, picking]\n });\n }\n\n /**\n * DeckGL calls initializeState when GL context is available\n * Essentially a deferred constructor\n */\n initializeState() {\n const attributeManager = this.getAttributeManager()!;\n /* eslint-disable max-len */\n attributeManager.addInstanced({\n instancePositions: {\n size: 3,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getPosition'\n },\n instanceElevations: {\n size: 1,\n transition: true,\n accessor: 'getElevation'\n },\n instanceFillColors: {\n size: this.props.colorFormat.length,\n type: GL.UNSIGNED_BYTE,\n normalized: true,\n transition: true,\n accessor: 'getFillColor',\n defaultValue: DEFAULT_COLOR\n },\n instanceLineColors: {\n size: this.props.colorFormat.length,\n type: GL.UNSIGNED_BYTE,\n normalized: true,\n transition: true,\n accessor: 'getLineColor',\n defaultValue: DEFAULT_COLOR\n },\n instanceStrokeWidths: {\n size: 1,\n accessor: 'getLineWidth',\n transition: true\n }\n });\n /* eslint-enable max-len */\n }\n\n updateState(params: UpdateParameters): void {\n super.updateState(params);\n\n const {props, oldProps, changeFlags} = params;\n const regenerateModels =\n changeFlags.extensionsChanged || props.flatShading !== oldProps.flatShading;\n\n if (regenerateModels) {\n const {gl} = this.context;\n this.state.model?.delete();\n this.state.model = this._getModel(gl);\n this.getAttributeManager()!.invalidateAll();\n }\n\n if (\n regenerateModels ||\n props.diskResolution !== oldProps.diskResolution ||\n props.vertices !== oldProps.vertices ||\n (props.extruded || props.stroked) !== (oldProps.extruded || oldProps.stroked)\n ) {\n this._updateGeometry(props);\n }\n }\n\n getGeometry(diskResolution: number, vertices: number[] | undefined, hasThinkness: boolean) {\n const geometry = new ColumnGeometry({\n radius: 1,\n height: hasThinkness ? 2 : 0,\n vertices,\n nradial: diskResolution\n });\n\n let meanVertexDistance = 0;\n if (vertices) {\n for (let i = 0; i < diskResolution; i++) {\n const p = vertices[i];\n const d = Math.sqrt(p[0] * p[0] + p[1] * p[1]);\n meanVertexDistance += d / diskResolution;\n }\n } else {\n meanVertexDistance = 1;\n }\n this.setState({\n edgeDistance: Math.cos(Math.PI / diskResolution) * meanVertexDistance\n });\n\n return geometry;\n }\n\n protected _getModel(gl: WebGLRenderingContext): Model {\n return new Model(gl, {\n ...this.getShaders(),\n id: this.props.id,\n isInstanced: true\n });\n }\n\n protected _updateGeometry({diskResolution, vertices, extruded, stroked}) {\n const geometry: any = this.getGeometry(diskResolution, vertices, extruded || stroked);\n\n this.setState({\n fillVertexCount: geometry.attributes.POSITION.value.length / 3,\n wireframeVertexCount: geometry.indices.value.length\n });\n\n this.state.model.setProps({geometry});\n }\n\n draw({uniforms}) {\n const {\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n radiusUnits,\n elevationScale,\n extruded,\n filled,\n stroked,\n wireframe,\n offset,\n coverage,\n radius,\n angle\n } = this.props;\n const {model, fillVertexCount, wireframeVertexCount, edgeDistance} = this.state;\n\n model.setUniforms(uniforms).setUniforms({\n radius,\n angle: (angle / 180) * Math.PI,\n offset,\n extruded,\n stroked,\n coverage,\n elevationScale,\n edgeDistance,\n radiusUnits: UNIT[radiusUnits],\n widthUnits: UNIT[lineWidthUnits],\n widthScale: lineWidthScale,\n widthMinPixels: lineWidthMinPixels,\n widthMaxPixels: lineWidthMaxPixels\n });\n\n // When drawing 3d: draw wireframe first so it doesn't get occluded by depth test\n if (extruded && wireframe) {\n model.setProps({isIndexed: true});\n model\n .setVertexCount(wireframeVertexCount)\n .setDrawMode(GL.LINES)\n .setUniforms({isStroke: true})\n .draw();\n }\n if (filled) {\n model.setProps({isIndexed: false});\n model\n .setVertexCount(fillVertexCount)\n .setDrawMode(GL.TRIANGLE_STRIP)\n .setUniforms({isStroke: false})\n .draw();\n }\n // When drawing 2d: draw fill before stroke so that the outline is always on top\n if (!extruded && stroked) {\n model.setProps({isIndexed: false});\n // The width of the stroke is achieved by flattening the side of the cylinder.\n // Skip the last 1/3 of the vertices which is the top.\n model\n .setVertexCount((fillVertexCount * 2) / 3)\n .setDrawMode(GL.TRIANGLE_STRIP)\n .setUniforms({isStroke: true})\n .draw();\n }\n }\n}\n","import { log } from '@deck.gl/core';\nimport { Geometry, uid } from '@luma.gl/core';\nimport { modifyPolygonWindingDirection, WINDING } from '@math.gl/polygon';\nexport default class ColumnGeometry extends Geometry {\n constructor(props) {\n const {\n id = uid('column-geometry')\n } = props;\n const {\n indices,\n attributes\n } = tesselateColumn(props);\n super({ ...props,\n id,\n indices,\n attributes\n });\n }\n\n}\n\nfunction tesselateColumn(props) {\n const {\n radius,\n height = 1,\n nradial = 10\n } = props;\n let {\n vertices\n } = props;\n\n if (vertices) {\n log.assert(vertices.length >= nradial);\n vertices = vertices.flatMap(v => [v[0], v[1]]);\n modifyPolygonWindingDirection(vertices, WINDING.COUNTER_CLOCKWISE);\n }\n\n const isExtruded = height > 0;\n const vertsAroundEdge = nradial + 1;\n const numVertices = isExtruded ? vertsAroundEdge * 3 + 1 : nradial;\n const stepAngle = Math.PI * 2 / nradial;\n const indices = new Uint16Array(isExtruded ? nradial * 3 * 2 : 0);\n const positions = new Float32Array(numVertices * 3);\n const normals = new Float32Array(numVertices * 3);\n let i = 0;\n\n if (isExtruded) {\n for (let j = 0; j < vertsAroundEdge; j++) {\n const a = j * stepAngle;\n const vertexIndex = j % nradial;\n const sin = Math.sin(a);\n const cos = Math.cos(a);\n\n for (let k = 0; k < 2; k++) {\n positions[i + 0] = vertices ? vertices[vertexIndex * 2] : cos * radius;\n positions[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin * radius;\n positions[i + 2] = (1 / 2 - k) * height;\n normals[i + 0] = vertices ? vertices[vertexIndex * 2] : cos;\n normals[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin;\n i += 3;\n }\n }\n\n positions[i + 0] = positions[i - 3];\n positions[i + 1] = positions[i - 2];\n positions[i + 2] = positions[i - 1];\n i += 3;\n }\n\n for (let j = isExtruded ? 0 : 1; j < vertsAroundEdge; j++) {\n const v = Math.floor(j / 2) * Math.sign(0.5 - j % 2);\n const a = v * stepAngle;\n const vertexIndex = (v + nradial) % nradial;\n const sin = Math.sin(a);\n const cos = Math.cos(a);\n positions[i + 0] = vertices ? vertices[vertexIndex * 2] : cos * radius;\n positions[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin * radius;\n positions[i + 2] = height / 2;\n normals[i + 2] = 1;\n i += 3;\n }\n\n if (isExtruded) {\n let index = 0;\n\n for (let j = 0; j < nradial; j++) {\n indices[index++] = j * 2 + 0;\n indices[index++] = j * 2 + 2;\n indices[index++] = j * 2 + 0;\n indices[index++] = j * 2 + 1;\n indices[index++] = j * 2 + 1;\n indices[index++] = j * 2 + 3;\n }\n }\n\n return {\n indices,\n attributes: {\n POSITION: {\n size: 3,\n value: positions\n },\n NORMAL: {\n size: 3,\n value: normals\n }\n }\n };\n}\n//# sourceMappingURL=column-geometry.js.map","import {log, BinaryAttribute} from '@deck.gl/core';\nimport {Geometry, uid} from '@luma.gl/core';\nimport {modifyPolygonWindingDirection, WINDING} from '@math.gl/polygon';\n\ntype ColumnGeometryProps = {\n id?: string;\n radius: number;\n height?: number;\n nradial?: number;\n vertices?: number[];\n};\n\nexport default class ColumnGeometry extends Geometry {\n constructor(props: ColumnGeometryProps) {\n const {id = uid('column-geometry')} = props;\n const {indices, attributes} = tesselateColumn(props);\n super({\n ...props,\n id,\n indices,\n attributes\n });\n }\n}\n\n/* eslint-disable max-statements, complexity */\nfunction tesselateColumn(props: ColumnGeometryProps): {\n indices: Uint16Array;\n attributes: Record;\n} {\n const {radius, height = 1, nradial = 10} = props;\n let {vertices} = props;\n\n if (vertices) {\n log.assert(vertices.length >= nradial); // `vertices` must contain at least `diskResolution` points\n vertices = vertices.flatMap(v => [v[0], v[1]]);\n modifyPolygonWindingDirection(vertices, WINDING.COUNTER_CLOCKWISE);\n }\n\n const isExtruded = height > 0;\n const vertsAroundEdge = nradial + 1; // loop\n const numVertices = isExtruded\n ? vertsAroundEdge * 3 + 1 // top, side top edge, side bottom edge, one additional degenerage vertex\n : nradial; // top\n\n const stepAngle = (Math.PI * 2) / nradial;\n\n // Used for wireframe\n const indices = new Uint16Array(isExtruded ? nradial * 3 * 2 : 0); // top loop, side vertical, bottom loop\n\n const positions = new Float32Array(numVertices * 3);\n const normals = new Float32Array(numVertices * 3);\n\n let i = 0;\n\n // side tesselation: 0, 1, 2, 3, 4, 5, ...\n //\n // 0 - 2 - 4 ... top\n // | / | / |\n // 1 - 3 - 5 ... bottom\n //\n if (isExtruded) {\n for (let j = 0; j < vertsAroundEdge; j++) {\n const a = j * stepAngle;\n const vertexIndex = j % nradial;\n const sin = Math.sin(a);\n const cos = Math.cos(a);\n\n for (let k = 0; k < 2; k++) {\n positions[i + 0] = vertices ? vertices[vertexIndex * 2] : cos * radius;\n positions[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin * radius;\n positions[i + 2] = (1 / 2 - k) * height;\n\n normals[i + 0] = vertices ? vertices[vertexIndex * 2] : cos;\n normals[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin;\n\n i += 3;\n }\n }\n\n // duplicate the last vertex to create proper degenerate triangle.\n positions[i + 0] = positions[i - 3];\n positions[i + 1] = positions[i - 2];\n positions[i + 2] = positions[i - 1];\n i += 3;\n }\n\n // The column geometry is rendered as a triangle strip, so\n // in order to render sides and top in one go we need to use degenerate triangles.\n // Duplicate last vertex of side trinagles and first vertex of the top cap to preserve winding order.\n\n // top tesselation: 0, -1, 1, -2, 2, -3, 3, ...\n //\n // 0 -- 1\n // / \\\n // -1 2\n // | |\n // -2 3\n // \\ /\n // -3 -- 4\n //\n for (let j = isExtruded ? 0 : 1; j < vertsAroundEdge; j++) {\n const v = Math.floor(j / 2) * Math.sign(0.5 - (j % 2));\n const a = v * stepAngle;\n const vertexIndex = (v + nradial) % nradial;\n const sin = Math.sin(a);\n const cos = Math.cos(a);\n\n positions[i + 0] = vertices ? vertices[vertexIndex * 2] : cos * radius;\n positions[i + 1] = vertices ? vertices[vertexIndex * 2 + 1] : sin * radius;\n positions[i + 2] = height / 2;\n\n normals[i + 2] = 1;\n\n i += 3;\n }\n\n if (isExtruded) {\n let index = 0;\n for (let j = 0; j < nradial; j++) {\n // top loop\n indices[index++] = j * 2 + 0;\n indices[index++] = j * 2 + 2;\n // side vertical\n indices[index++] = j * 2 + 0;\n indices[index++] = j * 2 + 1;\n // bottom loop\n indices[index++] = j * 2 + 1;\n indices[index++] = j * 2 + 3;\n }\n }\n\n return {\n indices,\n attributes: {\n POSITION: {size: 3, value: positions},\n NORMAL: {size: 3, value: normals}\n }\n };\n}\n","export default \"#version 300 es\\n\\n#define SHADER_NAME column-layer-vertex-shader\\n\\nin vec3 positions;\\nin vec3 normals;\\n\\nin vec3 instancePositions;\\nin float instanceElevations;\\nin vec3 instancePositions64Low;\\nin vec4 instanceFillColors;\\nin vec4 instanceLineColors;\\nin float instanceStrokeWidths;\\n\\nin vec3 instancePickingColors;\\nuniform float opacity;\\nuniform float radius;\\nuniform float angle;\\nuniform vec2 offset;\\nuniform bool extruded;\\nuniform bool stroked;\\nuniform bool isStroke;\\nuniform float coverage;\\nuniform float elevationScale;\\nuniform float edgeDistance;\\nuniform float widthScale;\\nuniform float widthMinPixels;\\nuniform float widthMaxPixels;\\nuniform int radiusUnits;\\nuniform int widthUnits;\\nout vec4 vColor;\\n#ifdef FLAT_SHADING\\nout vec4 position_commonspace;\\n#endif\\n\\nvoid main(void) {\\n geometry.worldPosition = instancePositions;\\n\\n vec4 color = isStroke ? instanceLineColors : instanceFillColors;\\n mat2 rotationMatrix = mat2(cos(angle), sin(angle), -sin(angle), cos(angle));\\n float elevation = 0.0;\\n float strokeOffsetRatio = 1.0;\\n\\n if (extruded) {\\n elevation = instanceElevations * (positions.z + 1.0) / 2.0 * elevationScale;\\n } else if (stroked) {\\n float widthPixels = clamp(\\n project_size_to_pixel(instanceStrokeWidths * widthScale, widthUnits),\\n widthMinPixels, widthMaxPixels) / 2.0;\\n float halfOffset = project_pixel_size(widthPixels) / project_size(edgeDistance * coverage * radius);\\n if (isStroke) {\\n strokeOffsetRatio -= sign(positions.z) * halfOffset;\\n } else {\\n strokeOffsetRatio -= halfOffset;\\n }\\n }\\n float shouldRender = float(color.a > 0.0 && instanceElevations >= 0.0);\\n float dotRadius = radius * coverage * shouldRender;\\n\\n geometry.pickingColor = instancePickingColors;\\n vec3 centroidPosition = vec3(instancePositions.xy, instancePositions.z + elevation);\\n vec3 centroidPosition64Low = instancePositions64Low;\\n vec2 offset = (rotationMatrix * positions.xy * strokeOffsetRatio + offset) * dotRadius;\\n if (radiusUnits == UNIT_METERS) {\\n offset = project_size(offset);\\n }\\n vec3 pos = vec3(offset, 0.);\\n DECKGL_FILTER_SIZE(pos, geometry);\\n\\n gl_Position = project_position_to_clipspace(centroidPosition, centroidPosition64Low, pos, geometry.position);\\n geometry.normal = project_normal(vec3(rotationMatrix * normals.xy, normals.z));\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n if (extruded && !isStroke) {\\n#ifdef FLAT_SHADING\\n position_commonspace = geometry.position;\\n vColor = vec4(color.rgb, color.a * opacity);\\n#else\\n vec3 lightColor = lighting_getLightColor(color.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);\\n vColor = vec4(lightColor, color.a * opacity);\\n#endif\\n } else {\\n vColor = vec4(color.rgb, color.a * opacity);\\n }\\n DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n//# sourceMappingURL=column-layer-vertex.glsl.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `#version 300 es\n\n#define SHADER_NAME column-layer-vertex-shader\n\nin vec3 positions;\nin vec3 normals;\n\nin vec3 instancePositions;\nin float instanceElevations;\nin vec3 instancePositions64Low;\nin vec4 instanceFillColors;\nin vec4 instanceLineColors;\nin float instanceStrokeWidths;\n\nin vec3 instancePickingColors;\n\n// Custom uniforms\nuniform float opacity;\nuniform float radius;\nuniform float angle;\nuniform vec2 offset;\nuniform bool extruded;\nuniform bool stroked;\nuniform bool isStroke;\nuniform float coverage;\nuniform float elevationScale;\nuniform float edgeDistance;\nuniform float widthScale;\nuniform float widthMinPixels;\nuniform float widthMaxPixels;\nuniform int radiusUnits;\nuniform int widthUnits;\n\n// Result\nout vec4 vColor;\n#ifdef FLAT_SHADING\nout vec4 position_commonspace;\n#endif\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n\n vec4 color = isStroke ? instanceLineColors : instanceFillColors;\n // rotate primitive position and normal\n mat2 rotationMatrix = mat2(cos(angle), sin(angle), -sin(angle), cos(angle));\n\n // calculate elevation, if 3d not enabled set to 0\n // cylindar gemoetry height are between -1.0 to 1.0, transform it to between 0, 1\n float elevation = 0.0;\n // calculate stroke offset\n float strokeOffsetRatio = 1.0;\n\n if (extruded) {\n elevation = instanceElevations * (positions.z + 1.0) / 2.0 * elevationScale;\n } else if (stroked) {\n float widthPixels = clamp(\n project_size_to_pixel(instanceStrokeWidths * widthScale, widthUnits),\n widthMinPixels, widthMaxPixels) / 2.0;\n float halfOffset = project_pixel_size(widthPixels) / project_size(edgeDistance * coverage * radius);\n if (isStroke) {\n strokeOffsetRatio -= sign(positions.z) * halfOffset;\n } else {\n strokeOffsetRatio -= halfOffset;\n }\n }\n\n // if alpha == 0.0 or z < 0.0, do not render element\n float shouldRender = float(color.a > 0.0 && instanceElevations >= 0.0);\n float dotRadius = radius * coverage * shouldRender;\n\n geometry.pickingColor = instancePickingColors;\n\n // project center of column\n vec3 centroidPosition = vec3(instancePositions.xy, instancePositions.z + elevation);\n vec3 centroidPosition64Low = instancePositions64Low;\n vec2 offset = (rotationMatrix * positions.xy * strokeOffsetRatio + offset) * dotRadius;\n if (radiusUnits == UNIT_METERS) {\n offset = project_size(offset);\n }\n vec3 pos = vec3(offset, 0.);\n DECKGL_FILTER_SIZE(pos, geometry);\n\n gl_Position = project_position_to_clipspace(centroidPosition, centroidPosition64Low, pos, geometry.position);\n geometry.normal = project_normal(vec3(rotationMatrix * normals.xy, normals.z));\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n // Light calculations\n if (extruded && !isStroke) {\n#ifdef FLAT_SHADING\n position_commonspace = geometry.position;\n vColor = vec4(color.rgb, color.a * opacity);\n#else\n vec3 lightColor = lighting_getLightColor(color.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);\n vColor = vec4(lightColor, color.a * opacity);\n#endif\n } else {\n vColor = vec4(color.rgb, color.a * opacity);\n }\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;\n","export default \"#version 300 es\\n#define SHADER_NAME column-layer-fragment-shader\\n\\nprecision highp float;\\n\\nuniform vec3 project_uCameraPosition;\\nuniform bool extruded;\\nuniform bool isStroke;\\n\\nout vec4 fragColor;\\n\\nin vec4 vColor;\\n#ifdef FLAT_SHADING\\nin vec4 position_commonspace;\\n#endif\\n\\nvoid main(void) {\\n fragColor = vColor;\\n#ifdef FLAT_SHADING\\n if (extruded && !isStroke && !picking_uActive) {\\n vec3 normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\\n fragColor.rgb = lighting_getLightColor(vColor.rgb, project_uCameraPosition, position_commonspace.xyz, normal);\\n }\\n#endif\\n DECKGL_FILTER_COLOR(fragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=column-layer-fragment.glsl.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `#version 300 es\n#define SHADER_NAME column-layer-fragment-shader\n\nprecision highp float;\n\nuniform vec3 project_uCameraPosition;\nuniform bool extruded;\nuniform bool isStroke;\n\nout vec4 fragColor;\n\nin vec4 vColor;\n#ifdef FLAT_SHADING\nin vec4 position_commonspace;\n#endif\n\nvoid main(void) {\n fragColor = vColor;\n#ifdef FLAT_SHADING\n if (extruded && !isStroke && !picking_uActive) {\n vec3 normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\n fragColor.rgb = lighting_getLightColor(vColor.rgb, project_uCameraPosition, position_commonspace.xyz, normal);\n }\n#endif\n DECKGL_FILTER_COLOR(fragColor, geometry);\n}\n`;\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { CompositeLayer } from '@deck.gl/core';\nimport { PolygonLayer } from '@deck.gl/layers';\nconst defaultProps = { ...PolygonLayer.defaultProps\n};\nexport default class GeoCellLayer extends CompositeLayer {\n indexToBounds() {\n return null;\n }\n\n renderLayers() {\n const {\n elevationScale,\n extruded,\n wireframe,\n filled,\n stroked,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n lineJointRounded,\n lineMiterLimit,\n lineDashJustified,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth\n } = this.props;\n const {\n updateTriggers,\n material,\n transitions\n } = this.props;\n const CellLayer = this.getSubLayerClass('cell', PolygonLayer);\n const {\n updateTriggers: boundsUpdateTriggers,\n ...boundsProps\n } = this.indexToBounds() || {};\n return new CellLayer({\n filled,\n wireframe,\n extruded,\n elevationScale,\n stroked,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n lineJointRounded,\n lineMiterLimit,\n lineDashJustified,\n material,\n transitions,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth\n }, this.getSubLayerProps({\n id: 'cell',\n updateTriggers: updateTriggers && { ...boundsUpdateTriggers,\n getElevation: updateTriggers.getElevation,\n getFillColor: updateTriggers.getFillColor,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n }\n }), boundsProps);\n }\n\n}\n\n_defineProperty(GeoCellLayer, \"layerName\", 'GeoCellLayer');\n\n_defineProperty(GeoCellLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=GeoCellLayer.js.map","import {CompositeLayer, Layer, LayersList, DefaultProps} from '@deck.gl/core';\nimport {PolygonLayer, PolygonLayerProps} from '@deck.gl/layers';\n\nconst defaultProps: DefaultProps = {\n ...PolygonLayer.defaultProps\n};\n\n/** All properties supported by GeoCellLayer. */\nexport type GeoCellLayerProps = PolygonLayerProps;\n\nexport default class GeoCellLayer extends CompositeLayer<\n Required> & ExtraProps\n> {\n static layerName = 'GeoCellLayer';\n static defaultProps: DefaultProps = defaultProps;\n\n /** Implement to generate props to create geometry. */\n indexToBounds(): Partial | null {\n return null;\n }\n\n renderLayers(): Layer | null | LayersList {\n // Rendering props underlying layer\n const {\n elevationScale,\n extruded,\n wireframe,\n filled,\n stroked,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n lineJointRounded,\n lineMiterLimit,\n lineDashJustified,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth\n } = this.props;\n\n // Accessor props for underlying layers\n const {updateTriggers, material, transitions} = this.props;\n\n // Filled Polygon Layer\n const CellLayer = this.getSubLayerClass('cell', PolygonLayer);\n const {updateTriggers: boundsUpdateTriggers, ...boundsProps} = this.indexToBounds() || {};\n return new CellLayer(\n {\n filled,\n wireframe,\n\n extruded,\n elevationScale,\n\n stroked,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n lineJointRounded,\n lineMiterLimit,\n lineDashJustified,\n\n material,\n transitions,\n\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth\n },\n this.getSubLayerProps({\n id: 'cell',\n updateTriggers: updateTriggers && {\n ...boundsUpdateTriggers,\n getElevation: updateTriggers.getElevation,\n getFillColor: updateTriggers.getFillColor,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n }\n }),\n boundsProps\n );\n }\n}\n","var libh3 = function (libh3) {\n libh3 = libh3 || {};\n var Module = typeof libh3 !== \"undefined\" ? libh3 : {};\n var moduleOverrides = {};\n var key;\n\n for (key in Module) {\n if (Module.hasOwnProperty(key)) {\n moduleOverrides[key] = Module[key];\n }\n }\n\n var arguments_ = [];\n var scriptDirectory = \"\";\n\n function locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n\n return scriptDirectory + path;\n }\n\n var readAsync;\n\n {\n if (document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n\n readAsync = function readAsync(url, onload, onerror) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n\n xhr.onload = function xhr_onload() {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n\n var data = tryParseAsDataURI(url);\n\n if (data) {\n onload(data.buffer);\n return;\n }\n\n onerror();\n };\n\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.warn.bind(console);\n\n for (key in moduleOverrides) {\n if (moduleOverrides.hasOwnProperty(key)) {\n Module[key] = moduleOverrides[key];\n }\n }\n\n moduleOverrides = null;\n if (Module[\"arguments\"]) { arguments_ = Module[\"arguments\"]; }\n\n var tempRet0 = 0;\n\n var setTempRet0 = function (value) {\n tempRet0 = value;\n };\n\n var getTempRet0 = function () {\n return tempRet0;\n };\n\n var GLOBAL_BASE = 8;\n\n function setValue(ptr, value, type, noSafe) {\n type = type || \"i8\";\n if (type.charAt(type.length - 1) === \"*\") { type = \"i32\"; }\n\n switch (type) {\n case \"i1\":\n HEAP8[ptr >> 0] = value;\n break;\n\n case \"i8\":\n HEAP8[ptr >> 0] = value;\n break;\n\n case \"i16\":\n HEAP16[ptr >> 1] = value;\n break;\n\n case \"i32\":\n HEAP32[ptr >> 2] = value;\n break;\n\n case \"i64\":\n tempI64 = [value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= +1 ? tempDouble > +0 ? (Math_min(+Math_floor(tempDouble / +4294967296), +4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / +4294967296) >>> 0 : 0)], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];\n break;\n\n case \"float\":\n HEAPF32[ptr >> 2] = value;\n break;\n\n case \"double\":\n HEAPF64[ptr >> 3] = value;\n break;\n\n default:\n abort(\"invalid type for setValue: \" + type);\n }\n }\n\n function getValue(ptr, type, noSafe) {\n type = type || \"i8\";\n if (type.charAt(type.length - 1) === \"*\") { type = \"i32\"; }\n\n switch (type) {\n case \"i1\":\n return HEAP8[ptr >> 0];\n\n case \"i8\":\n return HEAP8[ptr >> 0];\n\n case \"i16\":\n return HEAP16[ptr >> 1];\n\n case \"i32\":\n return HEAP32[ptr >> 2];\n\n case \"i64\":\n return HEAP32[ptr >> 2];\n\n case \"float\":\n return HEAPF32[ptr >> 2];\n\n case \"double\":\n return HEAPF64[ptr >> 3];\n\n default:\n abort(\"invalid type for getValue: \" + type);\n }\n\n return null;\n }\n\n var ABORT = false;\n\n function assert(condition, text) {\n if (!condition) {\n abort(\"Assertion failed: \" + text);\n }\n }\n\n function getCFunc(ident) {\n var func = Module[\"_\" + ident];\n assert(func, \"Cannot call unknown function \" + ident + \", make sure it is exported\");\n return func;\n }\n\n function ccall(ident, returnType, argTypes, args, opts) {\n var toC = {\n \"string\": function (str) {\n var ret = 0;\n\n if (str !== null && str !== undefined && str !== 0) {\n var len = (str.length << 2) + 1;\n ret = stackAlloc(len);\n stringToUTF8(str, ret, len);\n }\n\n return ret;\n },\n \"array\": function (arr) {\n var ret = stackAlloc(arr.length);\n writeArrayToMemory(arr, ret);\n return ret;\n }\n };\n\n function convertReturnValue(ret) {\n if (returnType === \"string\") { return UTF8ToString(ret); }\n if (returnType === \"boolean\") { return Boolean(ret); }\n return ret;\n }\n\n var func = getCFunc(ident);\n var cArgs = [];\n var stack = 0;\n\n if (args) {\n for (var i = 0; i < args.length; i++) {\n var converter = toC[argTypes[i]];\n\n if (converter) {\n if (stack === 0) { stack = stackSave(); }\n cArgs[i] = converter(args[i]);\n } else {\n cArgs[i] = args[i];\n }\n }\n }\n\n var ret = func.apply(null, cArgs);\n ret = convertReturnValue(ret);\n if (stack !== 0) { stackRestore(stack); }\n return ret;\n }\n\n function cwrap(ident, returnType, argTypes, opts) {\n argTypes = argTypes || [];\n var numericArgs = argTypes.every(function (type) {\n return type === \"number\";\n });\n var numericRet = returnType !== \"string\";\n\n if (numericRet && numericArgs && !opts) {\n return getCFunc(ident);\n }\n\n return function () {\n return ccall(ident, returnType, argTypes, arguments, opts);\n };\n }\n var UTF8Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf8\") : undefined;\n\n function UTF8ArrayToString(u8Array, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n\n while (u8Array[endPtr] && !(endPtr >= endIdx)) { ++endPtr; }\n\n if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {\n return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));\n } else {\n var str = \"\";\n\n while (idx < endPtr) {\n var u0 = u8Array[idx++];\n\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n\n var u1 = u8Array[idx++] & 63;\n\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n\n var u2 = u8Array[idx++] & 63;\n\n if ((u0 & 240) == 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u8Array[idx++] & 63;\n }\n\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n }\n\n return str;\n }\n\n function UTF8ToString(ptr, maxBytesToRead) {\n return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n }\n\n function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) { return 0; }\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n\n if (u <= 127) {\n if (outIdx >= endIdx) { break; }\n outU8Array[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) { break; }\n outU8Array[outIdx++] = 192 | u >> 6;\n outU8Array[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) { break; }\n outU8Array[outIdx++] = 224 | u >> 12;\n outU8Array[outIdx++] = 128 | u >> 6 & 63;\n outU8Array[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) { break; }\n outU8Array[outIdx++] = 240 | u >> 18;\n outU8Array[outIdx++] = 128 | u >> 12 & 63;\n outU8Array[outIdx++] = 128 | u >> 6 & 63;\n outU8Array[outIdx++] = 128 | u & 63;\n }\n }\n\n outU8Array[outIdx] = 0;\n return outIdx - startIdx;\n }\n\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n\n var UTF16Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf-16le\") : undefined;\n\n function writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n }\n\n function alignUp(x, multiple) {\n if (x % multiple > 0) {\n x += multiple - x % multiple;\n }\n\n return x;\n }\n\n var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\n function updateGlobalBufferAndViews(buf) {\n buffer = buf;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(buf);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(buf);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(buf);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(buf);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(buf);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(buf);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(buf);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(buf);\n }\n\n var DYNAMIC_BASE = 5266928,\n DYNAMICTOP_PTR = 24016;\n var INITIAL_TOTAL_MEMORY = Module[\"TOTAL_MEMORY\"] || 33554432;\n\n if (Module[\"buffer\"]) {\n buffer = Module[\"buffer\"];\n } else {\n buffer = new ArrayBuffer(INITIAL_TOTAL_MEMORY);\n }\n\n INITIAL_TOTAL_MEMORY = buffer.byteLength;\n updateGlobalBufferAndViews(buffer);\n HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;\n\n function callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n var callback = callbacks.shift();\n\n if (typeof callback == \"function\") {\n callback();\n continue;\n }\n\n var func = callback.func;\n\n if (typeof func === \"number\") {\n if (callback.arg === undefined) {\n Module[\"dynCall_v\"](func);\n } else {\n Module[\"dynCall_vi\"](func, callback.arg);\n }\n } else {\n func(callback.arg === undefined ? null : callback.arg);\n }\n }\n }\n\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATMAIN__ = [];\n var __ATPOSTRUN__ = [];\n\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") { Module[\"preRun\"] = [Module[\"preRun\"]]; }\n\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n\n callRuntimeCallbacks(__ATPRERUN__);\n }\n\n function initRuntime() {\n callRuntimeCallbacks(__ATINIT__);\n }\n\n function preMain() {\n callRuntimeCallbacks(__ATMAIN__);\n }\n\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") { Module[\"postRun\"] = [Module[\"postRun\"]]; }\n\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n\n var Math_abs = Math.abs;\n var Math_ceil = Math.ceil;\n var Math_floor = Math.floor;\n var Math_min = Math.min;\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n\n function addRunDependency(id) {\n runDependencies++;\n\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n }\n\n function removeRunDependency(id) {\n runDependencies--;\n\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n\n Module[\"preloadedImages\"] = {};\n Module[\"preloadedAudios\"] = {};\n var memoryInitializer = null;\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n\n function isDataURI(filename) {\n return String.prototype.startsWith ? filename.startsWith(dataURIPrefix) : filename.indexOf(dataURIPrefix) === 0;\n }\n\n var tempDouble;\n var tempI64;\n memoryInitializer = \"data:application/octet-stream;base64,AAAAAAAAAAACAAAAAwAAAAEAAAAFAAAABAAAAAYAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAABAAAAAMAAAAGAAAABQAAAAIAAAAAAAAAAgAAAAMAAAABAAAABAAAAAYAAAAAAAAABQAAAAMAAAAGAAAABAAAAAUAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAABAAAABQAAAAIAAAAAAAAAAQAAAAMAAAAGAAAABAAAAAYAAAAAAAAABQAAAAIAAAABAAAABAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABgAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAABgAAAAAAAAADAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAUAAAAEAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAEAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAACAAAABAAAAAMAAAAIAAAA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AAAAAAAAAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAQAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAADAAAABQAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAABQAAAAUAAAAAAAAAAAAAAP////8BAAAAAAAAAAMAAAAEAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAABQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAQAAAP//////////AQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAIAAAAAAAAAAAAAAAEAAAACAAAABgAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAoAAAACAAAAAAAAAAAAAAABAAAAAQAAAAUAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAIAAAAAAAAAAAAAAAEAAAADAAAABwAAAAYAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAJAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAgAAAAAAAAAAAAAAAQAAAAQAAAAIAAAACgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAACAAAAAAAAAAAAAAABAAAACwAAAA8AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAgAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAACAAAAAAAAAAAAAAABAAAADAAAABAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAEAAAAKAAAAEwAAAAgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAgAAAAAAAAAAAAAAAQAAAA0AAAARAAAADQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAAAAAAAAAAAAAEAAAAOAAAAEgAAAA8AAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABMAAAACAAAAAAAAAAAAAAABAAAA//////////8TAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABIAAAAAAAAAGAAAAAAAAAAhAAAAAAAAAB4AAAAAAAAAIAAAAAMAAAAxAAAAAQAAADAAAAADAAAAMgAAAAMAAAAIAAAAAAAAAAUAAAAFAAAACgAAAAUAAAAWAAAAAAAAABAAAAAAAAAAEgAAAAAAAAApAAAAAQAAACEAAAAAAAAAHgAAAAAAAAAEAAAAAAAAAAAAAAAFAAAAAgAAAAUAAAAPAAAAAQAAAAgAAAAAAAAABQAAAAUAAAAfAAAAAQAAABYAAAAAAAAAEAAAAAAAAAACAAAAAAAAAAYAAAAAAAAADgAAAAAAAAAKAAAAAAAAAAsAAAAAAAAAEQAAAAMAAAAYAAAAAQAAABcAAAADAAAAGQAAAAMAAAAAAAAAAAAAAAEAAAAFAAAACQAAAAUAAAAFAAAAAAAAAAIAAAAAAAAABgAAAAAAAAASAAAAAQAAAAoAAAAAAAAACwAAAAAAAAAEAAAAAQAAAAMAAAAFAAAABwAAAAUAAAAIAAAAAQAAAAAAAAAAAAAAAQAAAAUAAAAQAAAAAQAAAAUAAAAAAAAAAgAAAAAAAAAHAAAAAAAAABUAAAAAAAAAJgAAAAAAAAAJAAAAAAAAABMAAAAAAAAAIgAAAAMAAAAOAAAAAQAAABQAAAADAAAAJAAAAAMAAAADAAAAAAAAAA0AAAAFAAAAHQAAAAUAAAABAAAAAAAAAAcAAAAAAAAAFQAAAAAAAAAGAAAA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74auECWhw7+cjSACjzniv8CZ+wUhN9I/1uGEKzup6z+/GYr/04bavwmkNHp7xee/F2NMZVAA1z+82s+x2BLivwr2ytbJ9em/KwEH1sMS1r8yp/2LhTfev81i5RexJsy/BlIKPVwR5b95Wyu0/Qjnv5DjoT7YYcs/nBhKZ6zrwr8wRYS7Nebuv3OW6geh+Lu/SLrixebL3j+pcyymN9Xrv8rHIFfWehZAMBwUdlo0DECTUc17EOb2PxpVB1SWChdAzjbhb9pTDUDQhmdvECX5P9FlMKCC9+g/IIAzjELgE0DajDngMv8GQFhWDmDPjNs/y1guLh96EkAxPi8k7DIEQJCc4URlhRhA3eLKKLwkEECqpNAyTBD/P6xpjXcDiwVAFtl//cQm4z+Ibt3XKiYTQM7mCLUb3QdAoM1t8yVv7D8aLZv2Nk8UQEAJPV5nQwxAtSsfTCoE9z9TPjXLXIIWQBVanC5W9AtAYM3d7Adm9j++5mQz1FoWQBUThyaVBghAwH5muQsV7T89Q1qv82MUQJoWGOfNuBdAzrkClkmwDkDQjKq77t37Py+g0dtitsE/ZwAMTwVPEUBojepluNwBQGYbtuW+t9w/HNWIJs6MEkDTNuQUSlgEQKxktPP5TcQ/ixbLB8JjEUCwuWjXMQYCQAS/R09FkRdAowpiZjhhDkB7LmlczD/7P01iQmhhsAVAnrtTwDy84z/Z6jfQ2TgTQChOCXMnWwpAhrW3daoz8z/HYJvVPI4VQLT3ik5FcA5Angi7LOZd+z+NNVzDy5gXQBXdvVTFUA1AYNMgOeYe+T8+qHXGCwkXQKQTOKwa5AJA8gFVoEMW0T+FwzJyttIRQAEAAAD/////BwAAAP////8xAAAA/////1cBAAD/////YQkAAP////+nQQAA/////5HLAQD/////95AMAP/////B9lcAAAAAAAAAAAAAAAAAAgAAAP////8OAAAA/////2IAAAD/////rgIAAP/////CEgAA/////06DAAD/////IpcDAP/////uIRkA/////4LtrwAAAAAAAAAAAAAAAAAAAAAAAgAAAP//////////AQAAAAMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////wIAAAD//////////wEAAAAAAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA/////////////////////wEAAAD///////////////8CAAAA////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD///////////////////////////////8CAAAA////////////////AQAAAP////////////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAAAQAAAP//////////AgAAAP//////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAAEAAAD//////////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAQAAAAEAAAACAAAAAgAAAAAAAAAFAAAABQAAAAAAAAACAAAAAgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAABAAAAAgAAAAIAAAACAAAAAAAAAAUAAAAGAAAAAAAAAAIAAAACAAAAAwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAgAAAAEAAAADAAAAAgAAAAIAAAAAAAAABQAAAAcAAAAAAAAAAgAAAAIAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAACAAAAAQAAAAQAAAACAAAAAgAAAAAAAAAFAAAACAAAAAAAAAACAAAAAgAAAAMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAACAAAAAAAAAAUAAAAJAAAAAAAAAAIAAAACAAAAAwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAIAAAACAAAAAAAAAAMAAAAOAAAAAgAAAAAAAAACAAAAAwAAAAAAAAAAAAAAAgAAAAIAAAADAAAABgAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAgAAAAIAAAAAAAAAAwAAAAoAAAACAAAAAAAAAAIAAAADAAAAAQAAAAAAAAACAAAAAgAAAAMAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAgAAAAAAAAADAAAACwAAAAIAAAAAAAAAAgAAAAMAAAACAAAAAAAAAAIAAAACAAAAAwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAACAAAAAAAAAAMAAAAMAAAAAgAAAAAAAAACAAAAAwAAAAMAAAAAAAAAAgAAAAIAAAADAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAIAAAAAAAAAAwAAAA0AAAACAAAAAAAAAAIAAAADAAAABAAAAAAAAAACAAAAAgAAAAMAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAgAAAAAAAAADAAAABgAAAAIAAAAAAAAAAgAAAAMAAAAPAAAAAAAAAAIAAAACAAAAAwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAIAAAACAAAAAAAAAAMAAAAHAAAAAgAAAAAAAAACAAAAAwAAABAAAAAAAAAAAgAAAAIAAAADAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAIAAAAAAAAAAwAAAAgAAAACAAAAAAAAAAIAAAADAAAAEQAAAAAAAAACAAAAAgAAAAMAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAACAAAAAgAAAAAAAAADAAAACQAAAAIAAAAAAAAAAgAAAAMAAAASAAAAAAAAAAIAAAACAAAAAwAAAA4AAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAACAAAAAAAAAAMAAAAFAAAAAgAAAAAAAAACAAAAAwAAABMAAAAAAAAAAgAAAAIAAAADAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAABAAEAAAEBAAAAAAABAAAAAQAAAAEAAQAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAAAAQAAAAMAAAAOAAAABgAAAAsAAAACAAAABwAAAAEAAAAYAAAABQAAAAoAAAABAAAABgAAAAAAAAAmAAAABwAAAAwAAAADAAAACAAAAAIAAAAxAAAACQAAAA4AAAAAAAAABQAAAAQAAAA6AAAACAAAAA0AAAAEAAAACQAAAAMAAAA/AAAACwAAAAYAAAAPAAAACgAAABAAAABIAAAADAAAAAcAAAAQAAAACwAAABEAAABTAAAACgAAAAUAAAATAAAADgAAAA8AAABhAAAADQAAAAgAAAARAAAADAAAABIAAABrAAAADgAAAAkAAAASAAAADQAAABMAAAB1AAAADwAAABMAAAARAAAAEgAAABAAAAAHAAAABwAAAAEAAAACAAAABAAAAAMAAAAAAAAAAAAAAAcAAAADAAAAAQAAAAIAAAAFAAAABAAAAAAAAAAAAAAAYWxnb3MuYwBfcG9seWZpbGxJbnRlcm5hbABhZGphY2VudEZhY2VEaXJbdG1wRmlqay5mYWNlXVtmaWprLmZhY2VdID09IEtJAGZhY2VpamsuYwBfZmFjZUlqa1BlbnRUb0dlb0JvdW5kYXJ5AGFkamFjZW50RmFjZURpcltjZW50ZXJJSksuZmFjZV1bZmFjZTJdID09IEtJAF9mYWNlSWprVG9HZW9Cb3VuZGFyeQBwb2x5Z29uLT5uZXh0ID09IE5VTEwAbGlua2VkR2VvLmMAYWRkTmV3TGlua2VkUG9seWdvbgBuZXh0ICE9IE5VTEwAbG9vcCAhPSBOVUxMAGFkZE5ld0xpbmtlZExvb3AAcG9seWdvbi0+Zmlyc3QgPT0gTlVMTABhZGRMaW5rZWRMb29wAGNvb3JkICE9IE5VTEwAYWRkTGlua2VkQ29vcmQAbG9vcC0+Zmlyc3QgPT0gTlVMTABpbm5lckxvb3BzICE9IE5VTEwAbm9ybWFsaXplTXVsdGlQb2x5Z29uAGJib3hlcyAhPSBOVUxMAGNhbmRpZGF0ZXMgIT0gTlVMTABmaW5kUG9seWdvbkZvckhvbGUAY2FuZGlkYXRlQkJveGVzICE9IE5VTEwAcmV2RGlyICE9IElOVkFMSURfRElHSVQAbG9jYWxpai5jAGgzVG9Mb2NhbElqawBiYXNlQ2VsbCAhPSBvcmlnaW5CYXNlQ2VsbAAhKG9yaWdpbk9uUGVudCAmJiBpbmRleE9uUGVudCkAcGVudGFnb25Sb3RhdGlvbnMgPj0gMABkaXJlY3Rpb25Sb3RhdGlvbnMgPj0gMABiYXNlQ2VsbCA9PSBvcmlnaW5CYXNlQ2VsbABiYXNlQ2VsbCAhPSBJTlZBTElEX0JBU0VfQ0VMTABsb2NhbElqa1RvSDMAIV9pc0Jhc2VDZWxsUGVudGFnb24oYmFzZUNlbGwpAGJhc2VDZWxsUm90YXRpb25zID49IDAAd2l0aGluUGVudGFnb25Sb3RhdGlvbnMgPj0gMABncmFwaC0+YnVja2V0cyAhPSBOVUxMAHZlcnRleEdyYXBoLmMAaW5pdFZlcnRleEdyYXBoAG5vZGUgIT0gTlVMTABhZGRWZXJ0ZXhOb2Rl\";\n var tempDoublePtr = 24032;\n\n function demangle(func) {\n return func;\n }\n\n function demangleAll(text) {\n var regex = /\\b__Z[\\w\\d_]+/g;\n return text.replace(regex, function (x) {\n var y = demangle(x);\n return x === y ? x : y + \" [\" + x + \"]\";\n });\n }\n\n function jsStackTrace() {\n var err = new Error();\n\n if (!err.stack) {\n try {\n throw new Error(0);\n } catch (e) {\n err = e;\n }\n\n if (!err.stack) {\n return \"(no stack trace available)\";\n }\n }\n\n return err.stack.toString();\n }\n\n function stackTrace() {\n var js = jsStackTrace();\n if (Module[\"extraStackTrace\"]) { js += \"\\n\" + Module[\"extraStackTrace\"](); }\n return demangleAll(js);\n }\n\n function ___assert_fail(condition, filename, line, func) {\n abort(\"Assertion failed: \" + UTF8ToString(condition) + \", at: \" + [filename ? UTF8ToString(filename) : \"unknown filename\", line, func ? UTF8ToString(func) : \"unknown function\"]);\n }\n\n function _emscripten_get_heap_size() {\n return HEAP8.length;\n }\n\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.set(HEAPU8.subarray(src, src + num), dest);\n }\n\n function ___setErrNo(value) {\n if (Module[\"___errno_location\"]) { HEAP32[Module[\"___errno_location\"]() >> 2] = value; }\n return value;\n }\n\n function abortOnCannotGrowMemory(requestedSize) {\n abort(\"OOM\");\n }\n\n function emscripten_realloc_buffer(size) {\n try {\n var newBuffer = new ArrayBuffer(size);\n if (newBuffer.byteLength != size) { return; }\n new Int8Array(newBuffer).set(HEAP8);\n\n _emscripten_replace_memory(newBuffer);\n\n updateGlobalBufferAndViews(newBuffer);\n return 1;\n } catch (e) {}\n }\n\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = _emscripten_get_heap_size();\n\n var PAGE_MULTIPLE = 16777216;\n var LIMIT = 2147483648 - PAGE_MULTIPLE;\n\n if (requestedSize > LIMIT) {\n return false;\n }\n\n var MIN_TOTAL_MEMORY = 16777216;\n var newSize = Math.max(oldSize, MIN_TOTAL_MEMORY);\n\n while (newSize < requestedSize) {\n if (newSize <= 536870912) {\n newSize = alignUp(2 * newSize, PAGE_MULTIPLE);\n } else {\n newSize = Math.min(alignUp((3 * newSize + 2147483648) / 4, PAGE_MULTIPLE), LIMIT);\n }\n }\n\n var replacement = emscripten_realloc_buffer(newSize);\n\n if (!replacement) {\n return false;\n }\n\n return true;\n }\n\n var decodeBase64 = typeof atob === \"function\" ? atob : function (input) {\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var output = \"\";\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0;\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n do {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = enc1 << 2 | enc2 >> 4;\n chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n chr3 = (enc3 & 3) << 6 | enc4;\n output = output + String.fromCharCode(chr1);\n\n if (enc3 !== 64) {\n output = output + String.fromCharCode(chr2);\n }\n\n if (enc4 !== 64) {\n output = output + String.fromCharCode(chr3);\n }\n } while (i < input.length);\n\n return output;\n };\n\n function intArrayFromBase64(s) {\n try {\n var decoded = decodeBase64(s);\n var bytes = new Uint8Array(decoded.length);\n\n for (var i = 0; i < decoded.length; ++i) {\n bytes[i] = decoded.charCodeAt(i);\n }\n\n return bytes;\n } catch (_) {\n throw new Error(\"Converting base64 string to bytes failed.\");\n }\n }\n\n function tryParseAsDataURI(filename) {\n if (!isDataURI(filename)) {\n return;\n }\n\n return intArrayFromBase64(filename.slice(dataURIPrefix.length));\n }\n\n var asmGlobalArg = {\n \"Math\": Math,\n \"Int8Array\": Int8Array,\n \"Int32Array\": Int32Array,\n \"Uint8Array\": Uint8Array,\n \"Float32Array\": Float32Array,\n \"Float64Array\": Float64Array\n };\n var asmLibraryArg = {\n \"a\": abort,\n \"b\": setTempRet0,\n \"c\": getTempRet0,\n \"d\": ___assert_fail,\n \"e\": ___setErrNo,\n \"f\": _emscripten_get_heap_size,\n \"g\": _emscripten_memcpy_big,\n \"h\": _emscripten_resize_heap,\n \"i\": abortOnCannotGrowMemory,\n \"j\": demangle,\n \"k\": demangleAll,\n \"l\": emscripten_realloc_buffer,\n \"m\": jsStackTrace,\n \"n\": stackTrace,\n \"o\": tempDoublePtr,\n \"p\": DYNAMICTOP_PTR\n }; // EMSCRIPTEN_START_ASM\n\n var asm =\n /** @suppress {uselessCode} */\n function (global, env, buffer) {\n \"almost asm\";\n\n var a = new global.Int8Array(buffer),\n b = new global.Int32Array(buffer),\n c = new global.Uint8Array(buffer),\n d = new global.Float32Array(buffer),\n e = new global.Float64Array(buffer),\n g = env.p | 0,\n p = global.Math.floor,\n q = global.Math.abs,\n r = global.Math.sqrt,\n s = global.Math.pow,\n t = global.Math.cos,\n u = global.Math.sin,\n v = global.Math.tan,\n w = global.Math.acos,\n x = global.Math.asin,\n y = global.Math.atan,\n z = global.Math.atan2,\n A = global.Math.ceil,\n B = global.Math.imul,\n C = global.Math.min,\n D = global.Math.clz32,\n F = env.b,\n G = env.c,\n H = env.d,\n I = env.e,\n J = env.f,\n K = env.g,\n L = env.h,\n M = env.i,\n S = 24048;\n\n function V(newBuffer) {\n a = new Int8Array(newBuffer);\n c = new Uint8Array(newBuffer);\n b = new Int32Array(newBuffer);\n d = new Float32Array(newBuffer);\n e = new Float64Array(newBuffer);\n buffer = newBuffer;\n return true;\n } // EMSCRIPTEN_START_FUNCS\n\n\n function W(a) {\n a = a | 0;\n var b = 0;\n b = S;\n S = S + a | 0;\n S = S + 15 & -16;\n return b | 0;\n }\n\n function X() {\n return S | 0;\n }\n\n function Y(a) {\n a = a | 0;\n S = a;\n }\n\n function Z(a, b) {\n a = a | 0;\n b = b | 0;\n S = a;\n }\n\n function _(a) {\n a = a | 0;\n return (B(a * 3 | 0, a + 1 | 0) | 0) + 1 | 0;\n }\n\n function $(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0;\n if (!(ba(a, b, c, d, 0) | 0)) { return; }\n f = (B(c * 3 | 0, c + 1 | 0) | 0) + 1 | 0;\n gd(d | 0, 0, f << 3 | 0) | 0;\n e = Xc(f, 4) | 0;\n if (!e) { return; }\n ca(a, b, c, d, e, f, 0);\n Wc(e);\n return;\n }\n\n function aa(a, b, c, d, e) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0;\n if (!(ba(a, b, c, d, e) | 0)) { return; }\n f = (B(c * 3 | 0, c + 1 | 0) | 0) + 1 | 0;\n gd(d | 0, 0, f << 3 | 0) | 0;\n\n if (e | 0) {\n gd(e | 0, 0, f << 2 | 0) | 0;\n ca(a, b, c, d, e, f, 0);\n return;\n }\n\n e = Xc(f, 4) | 0;\n if (!e) { return; }\n ca(a, b, c, d, e, f, 0);\n Wc(e);\n return;\n }\n\n function ba(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0;\n o = S;\n S = S + 16 | 0;\n n = o;\n g = e;\n b[g >> 2] = a;\n b[g + 4 >> 2] = c;\n g = (f | 0) != 0;\n if (g) { b[f >> 2] = 0; }\n\n if (Eb(a, c) | 0) {\n n = 1;\n S = o;\n return n | 0;\n }\n\n b[n >> 2] = 0;\n\n a: do { if ((d | 0) >= 1) {\n if (g) {\n k = 0;\n l = 1;\n m = 1;\n h = 0;\n g = a;\n\n while (1) {\n if (!(h | k)) {\n g = da(g, c, 4, n) | 0;\n c = G() | 0;\n\n if ((g | 0) == 0 & (c | 0) == 0) {\n g = 2;\n break a;\n }\n\n if (Eb(g, c) | 0) {\n g = 1;\n break a;\n }\n }\n\n g = da(g, c, b[16 + (k << 2) >> 2] | 0, n) | 0;\n c = G() | 0;\n\n if ((g | 0) == 0 & (c | 0) == 0) {\n g = 2;\n break a;\n }\n\n a = e + (m << 3) | 0;\n b[a >> 2] = g;\n b[a + 4 >> 2] = c;\n b[f + (m << 2) >> 2] = l;\n h = h + 1 | 0;\n a = (h | 0) == (l | 0);\n i = k + 1 | 0;\n j = (i | 0) == 6;\n\n if (Eb(g, c) | 0) {\n g = 1;\n break a;\n }\n\n l = l + (j & a & 1) | 0;\n\n if ((l | 0) > (d | 0)) {\n g = 0;\n break;\n } else {\n k = a ? j ? 0 : i : k;\n m = m + 1 | 0;\n h = a ? 0 : h;\n }\n }\n } else {\n k = 0;\n l = 1;\n m = 1;\n h = 0;\n g = a;\n\n while (1) {\n if (!(h | k)) {\n g = da(g, c, 4, n) | 0;\n c = G() | 0;\n\n if ((g | 0) == 0 & (c | 0) == 0) {\n g = 2;\n break a;\n }\n\n if (Eb(g, c) | 0) {\n g = 1;\n break a;\n }\n }\n\n g = da(g, c, b[16 + (k << 2) >> 2] | 0, n) | 0;\n c = G() | 0;\n\n if ((g | 0) == 0 & (c | 0) == 0) {\n g = 2;\n break a;\n }\n\n a = e + (m << 3) | 0;\n b[a >> 2] = g;\n b[a + 4 >> 2] = c;\n h = h + 1 | 0;\n a = (h | 0) == (l | 0);\n i = k + 1 | 0;\n j = (i | 0) == 6;\n\n if (Eb(g, c) | 0) {\n g = 1;\n break a;\n }\n\n l = l + (j & a & 1) | 0;\n\n if ((l | 0) > (d | 0)) {\n g = 0;\n break;\n } else {\n k = a ? j ? 0 : i : k;\n m = m + 1 | 0;\n h = a ? 0 : h;\n }\n }\n }\n } else { g = 0; } } while (0);\n\n n = g;\n S = o;\n return n | 0;\n }\n\n function ca(a, c, d, e, f, g, h) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n g = g | 0;\n h = h | 0;\n var i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0;\n m = S;\n S = S + 16 | 0;\n l = m;\n\n if ((a | 0) == 0 & (c | 0) == 0) {\n S = m;\n return;\n }\n\n i = ad(a | 0, c | 0, g | 0, ((g | 0) < 0) << 31 >> 31 | 0) | 0;\n G() | 0;\n j = e + (i << 3) | 0;\n n = j;\n o = b[n >> 2] | 0;\n n = b[n + 4 >> 2] | 0;\n k = (o | 0) == (a | 0) & (n | 0) == (c | 0);\n if (!((o | 0) == 0 & (n | 0) == 0 | k)) { do {\n i = (i + 1 | 0) % (g | 0) | 0;\n j = e + (i << 3) | 0;\n o = j;\n n = b[o >> 2] | 0;\n o = b[o + 4 >> 2] | 0;\n k = (n | 0) == (a | 0) & (o | 0) == (c | 0);\n } while (!((n | 0) == 0 & (o | 0) == 0 | k)); }\n i = f + (i << 2) | 0;\n\n if (k ? (b[i >> 2] | 0) <= (h | 0) : 0) {\n S = m;\n return;\n }\n\n o = j;\n b[o >> 2] = a;\n b[o + 4 >> 2] = c;\n b[i >> 2] = h;\n\n if ((h | 0) >= (d | 0)) {\n S = m;\n return;\n }\n\n o = h + 1 | 0;\n b[l >> 2] = 0;\n n = da(a, c, 2, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 3, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 1, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 5, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 4, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n b[l >> 2] = 0;\n n = da(a, c, 6, l) | 0;\n ca(n, G() | 0, d, e, f, g, o);\n S = m;\n return;\n }\n\n function da(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0;\n\n if ((b[e >> 2] | 0) > 0) {\n f = 0;\n\n do {\n d = Pa(d) | 0;\n f = f + 1 | 0;\n } while ((f | 0) < (b[e >> 2] | 0));\n }\n\n i = bd(a | 0, c | 0, 45) | 0;\n G() | 0;\n j = i & 127;\n g = Kb(a, c) | 0;\n f = bd(a | 0, c | 0, 52) | 0;\n G() | 0;\n f = f & 15;\n\n a: do { if (!f) { h = 6; }else { while (1) {\n m = (15 - f | 0) * 3 | 0;\n n = bd(a | 0, c | 0, m | 0) | 0;\n G() | 0;\n n = n & 7;\n o = (Qb(f) | 0) == 0;\n f = f + -1 | 0;\n l = cd(7, 0, m | 0) | 0;\n c = c & ~(G() | 0);\n m = cd(b[(o ? 464 : 48) + (n * 28 | 0) + (d << 2) >> 2] | 0, 0, m | 0) | 0;\n k = G() | 0;\n d = b[(o ? 672 : 256) + (n * 28 | 0) + (d << 2) >> 2] | 0;\n a = m | a & ~l;\n c = k | c;\n\n if (!d) {\n d = 0;\n break a;\n }\n\n if (!f) {\n h = 6;\n break;\n }\n } } } while (0);\n\n if ((h | 0) == 6) {\n o = b[880 + (j * 28 | 0) + (d << 2) >> 2] | 0;\n n = cd(o | 0, 0, 45) | 0;\n a = n | a;\n c = G() | 0 | c & -1040385;\n d = b[4304 + (j * 28 | 0) + (d << 2) >> 2] | 0;\n\n if ((o & 127 | 0) == 127) {\n o = cd(b[880 + (j * 28 | 0) + 20 >> 2] | 0, 0, 45) | 0;\n c = G() | 0 | c & -1040385;\n d = b[4304 + (j * 28 | 0) + 20 >> 2] | 0;\n a = Mb(o | a, c) | 0;\n c = G() | 0;\n b[e >> 2] = (b[e >> 2] | 0) + 1;\n }\n }\n\n h = bd(a | 0, c | 0, 45) | 0;\n G() | 0;\n h = h & 127;\n\n b: do { if (!(la(h) | 0)) {\n if ((d | 0) > 0) {\n f = 0;\n\n do {\n a = Mb(a, c) | 0;\n c = G() | 0;\n f = f + 1 | 0;\n } while ((f | 0) != (d | 0));\n }\n } else {\n c: do { if ((Kb(a, c) | 0) == 1) {\n if ((j | 0) != (h | 0)) { if (ra(h, b[7728 + (j * 28 | 0) >> 2] | 0) | 0) {\n a = Ob(a, c) | 0;\n g = 1;\n c = G() | 0;\n break;\n } else {\n a = Mb(a, c) | 0;\n g = 1;\n c = G() | 0;\n break;\n } }\n\n switch (g | 0) {\n case 5:\n {\n a = Ob(a, c) | 0;\n c = G() | 0;\n b[e >> 2] = (b[e >> 2] | 0) + 5;\n g = 0;\n break c;\n }\n\n case 3:\n {\n a = Mb(a, c) | 0;\n c = G() | 0;\n b[e >> 2] = (b[e >> 2] | 0) + 1;\n g = 0;\n break c;\n }\n\n default:\n {\n n = 0;\n o = 0;\n F(n | 0);\n return o | 0;\n }\n }\n } else { g = 0; } } while (0);\n\n if ((d | 0) > 0) {\n f = 0;\n\n do {\n a = Lb(a, c) | 0;\n c = G() | 0;\n f = f + 1 | 0;\n } while ((f | 0) != (d | 0));\n }\n\n if ((j | 0) != (h | 0)) {\n if (!(ma(h) | 0)) {\n if ((g | 0) != 0 | (Kb(a, c) | 0) != 5) { break; }\n b[e >> 2] = (b[e >> 2] | 0) + 1;\n break;\n }\n\n switch (i & 127) {\n case 8:\n case 118:\n break b;\n\n default:\n\n }\n\n if ((Kb(a, c) | 0) != 3) { b[e >> 2] = (b[e >> 2] | 0) + 1; }\n }\n } } while (0);\n\n b[e >> 2] = ((b[e >> 2] | 0) + d | 0) % 6 | 0;\n n = c;\n o = a;\n F(n | 0);\n return o | 0;\n }\n\n function ea(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0;\n m = S;\n S = S + 16 | 0;\n l = m;\n\n if (!d) {\n l = e;\n b[l >> 2] = a;\n b[l + 4 >> 2] = c;\n l = 0;\n S = m;\n return l | 0;\n }\n\n b[l >> 2] = 0;\n\n a: do { if (!(Eb(a, c) | 0)) {\n g = (d | 0) > 0;\n\n if (g) {\n f = 0;\n k = a;\n\n do {\n k = da(k, c, 4, l) | 0;\n c = G() | 0;\n\n if ((k | 0) == 0 & (c | 0) == 0) {\n a = 2;\n break a;\n }\n\n f = f + 1 | 0;\n\n if (Eb(k, c) | 0) {\n a = 1;\n break a;\n }\n } while ((f | 0) < (d | 0));\n\n j = e;\n b[j >> 2] = k;\n b[j + 4 >> 2] = c;\n j = d + -1 | 0;\n\n if (g) {\n g = 0;\n h = 1;\n f = k;\n a = c;\n\n do {\n f = da(f, a, 2, l) | 0;\n a = G() | 0;\n\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n\n i = e + (h << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n h = h + 1 | 0;\n\n if (Eb(f, a) | 0) {\n a = 1;\n break a;\n }\n\n g = g + 1 | 0;\n } while ((g | 0) < (d | 0));\n\n i = 0;\n g = h;\n\n do {\n f = da(f, a, 3, l) | 0;\n a = G() | 0;\n\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n\n h = e + (g << 3) | 0;\n b[h >> 2] = f;\n b[h + 4 >> 2] = a;\n g = g + 1 | 0;\n\n if (Eb(f, a) | 0) {\n a = 1;\n break a;\n }\n\n i = i + 1 | 0;\n } while ((i | 0) < (d | 0));\n\n h = 0;\n\n do {\n f = da(f, a, 1, l) | 0;\n a = G() | 0;\n\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n\n i = e + (g << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n g = g + 1 | 0;\n\n if (Eb(f, a) | 0) {\n a = 1;\n break a;\n }\n\n h = h + 1 | 0;\n } while ((h | 0) < (d | 0));\n\n h = 0;\n\n do {\n f = da(f, a, 5, l) | 0;\n a = G() | 0;\n\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n\n i = e + (g << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n g = g + 1 | 0;\n\n if (Eb(f, a) | 0) {\n a = 1;\n break a;\n }\n\n h = h + 1 | 0;\n } while ((h | 0) < (d | 0));\n\n h = 0;\n\n do {\n f = da(f, a, 4, l) | 0;\n a = G() | 0;\n\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n\n i = e + (g << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n g = g + 1 | 0;\n\n if (Eb(f, a) | 0) {\n a = 1;\n break a;\n }\n\n h = h + 1 | 0;\n } while ((h | 0) < (d | 0));\n\n h = 0;\n\n while (1) {\n f = da(f, a, 6, l) | 0;\n a = G() | 0;\n\n if ((f | 0) == 0 & (a | 0) == 0) {\n a = 2;\n break a;\n }\n\n if ((h | 0) != (j | 0)) {\n i = e + (g << 3) | 0;\n b[i >> 2] = f;\n b[i + 4 >> 2] = a;\n if (!(Eb(f, a) | 0)) { g = g + 1 | 0; }else {\n a = 1;\n break a;\n }\n }\n\n h = h + 1 | 0;\n\n if ((h | 0) >= (d | 0)) {\n h = k;\n g = c;\n break;\n }\n }\n } else {\n h = k;\n f = k;\n g = c;\n a = c;\n }\n } else {\n h = e;\n b[h >> 2] = a;\n b[h + 4 >> 2] = c;\n h = a;\n f = a;\n g = c;\n a = c;\n }\n\n a = ((h | 0) != (f | 0) | (g | 0) != (a | 0)) & 1;\n } else { a = 1; } } while (0);\n\n l = a;\n S = m;\n return l | 0;\n }\n\n function fa(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n g = S;\n S = S + 48 | 0;\n f = g + 8 | 0;\n e = g;\n i = a;\n h = b[i + 4 >> 2] | 0;\n d = e;\n b[d >> 2] = b[i >> 2];\n b[d + 4 >> 2] = h;\n uc(e, f);\n f = ya(f, c) | 0;\n c = b[e >> 2] | 0;\n e = b[a + 8 >> 2] | 0;\n\n if ((e | 0) <= 0) {\n i = c;\n h = (f | 0) < (i | 0);\n i = h ? i : f;\n i = i + 12 | 0;\n S = g;\n return i | 0;\n }\n\n d = b[a + 12 >> 2] | 0;\n a = 0;\n\n do {\n c = (b[d + (a << 3) >> 2] | 0) + c | 0;\n a = a + 1 | 0;\n } while ((a | 0) < (e | 0));\n\n i = (f | 0) < (c | 0);\n i = i ? c : f;\n i = i + 12 | 0;\n S = g;\n return i | 0;\n }\n\n function ga(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n i = S;\n S = S + 48 | 0;\n e = i + 8 | 0;\n f = i;\n\n if (!(ha(a, c, d) | 0)) {\n S = i;\n return;\n }\n\n j = a;\n g = b[j + 4 >> 2] | 0;\n h = f;\n b[h >> 2] = b[j >> 2];\n b[h + 4 >> 2] = g;\n uc(f, e);\n h = ya(e, c) | 0;\n c = b[f >> 2] | 0;\n g = b[a + 8 >> 2] | 0;\n\n if ((g | 0) > 0) {\n f = b[a + 12 >> 2] | 0;\n e = 0;\n\n do {\n c = (b[f + (e << 3) >> 2] | 0) + c | 0;\n e = e + 1 | 0;\n } while ((e | 0) != (g | 0));\n }\n\n c = (h | 0) < (c | 0) ? c : h;\n\n if ((c | 0) <= -12) {\n S = i;\n return;\n }\n\n j = c + 11 | 0;\n gd(d | 0, 0, (((j | 0) > 0 ? j : 0) << 3) + 8 | 0) | 0;\n S = i;\n return;\n }\n\n function ha(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0,\n D = 0,\n E = 0,\n F = 0,\n I = 0,\n J = 0;\n J = S;\n S = S + 112 | 0;\n D = J + 80 | 0;\n j = J + 72 | 0;\n E = J;\n F = J + 56 | 0;\n k = a + 8 | 0;\n I = Vc((b[k >> 2] << 5) + 32 | 0) | 0;\n if (!I) { H(22848, 22448, 800, 22456); }\n vc(a, I);\n g = a;\n e = b[g + 4 >> 2] | 0;\n i = j;\n b[i >> 2] = b[g >> 2];\n b[i + 4 >> 2] = e;\n uc(j, D);\n i = ya(D, c) | 0;\n e = b[j >> 2] | 0;\n g = b[k >> 2] | 0;\n\n if ((g | 0) > 0) {\n h = b[a + 12 >> 2] | 0;\n f = 0;\n\n do {\n e = (b[h + (f << 3) >> 2] | 0) + e | 0;\n f = f + 1 | 0;\n } while ((f | 0) != (g | 0));\n }\n\n i = (i | 0) < (e | 0) ? e : i;\n C = i + 12 | 0;\n f = Xc(C, 8) | 0;\n l = Xc(C, 8) | 0;\n b[D >> 2] = 0;\n A = a;\n B = b[A + 4 >> 2] | 0;\n e = j;\n b[e >> 2] = b[A >> 2];\n b[e + 4 >> 2] = B;\n e = ia(j, C, c, D, f, l) | 0;\n\n if (e | 0) {\n Wc(f);\n Wc(l);\n Wc(I);\n I = e;\n S = J;\n return I | 0;\n }\n\n a: do { if ((b[k >> 2] | 0) > 0) {\n g = a + 12 | 0;\n e = 0;\n\n while (1) {\n h = ia((b[g >> 2] | 0) + (e << 3) | 0, C, c, D, f, l) | 0;\n e = e + 1 | 0;\n if (h | 0) { break; }\n if ((e | 0) >= (b[k >> 2] | 0)) { break a; }\n }\n\n Wc(f);\n Wc(l);\n Wc(I);\n I = h;\n S = J;\n return I | 0;\n } } while (0);\n\n if ((i | 0) > -12) { gd(l | 0, 0, ((C | 0) > 1 ? C : 1) << 3 | 0) | 0; }\n\n b: do { if ((b[D >> 2] | 0) > 0) {\n B = ((C | 0) < 0) << 31 >> 31;\n v = f;\n w = l;\n x = f;\n y = f;\n z = l;\n A = f;\n e = f;\n r = f;\n s = l;\n t = l;\n u = l;\n f = l;\n\n c: while (1) {\n q = b[D >> 2] | 0;\n o = 0;\n p = 0;\n g = 0;\n\n while (1) {\n h = E;\n i = h + 56 | 0;\n\n do {\n b[h >> 2] = 0;\n h = h + 4 | 0;\n } while ((h | 0) < (i | 0));\n\n c = v + (o << 3) | 0;\n j = b[c >> 2] | 0;\n c = b[c + 4 >> 2] | 0;\n\n if (ba(j, c, 1, E, 0) | 0) {\n h = E;\n i = h + 56 | 0;\n\n do {\n b[h >> 2] = 0;\n h = h + 4 | 0;\n } while ((h | 0) < (i | 0));\n\n h = Xc(7, 4) | 0;\n\n if (h | 0) {\n ca(j, c, 1, E, h, 7, 0);\n Wc(h);\n }\n }\n\n n = 0;\n\n do {\n m = E + (n << 3) | 0;\n l = b[m >> 2] | 0;\n m = b[m + 4 >> 2] | 0;\n\n d: do { if (!((l | 0) == 0 & (m | 0) == 0)) {\n j = ad(l | 0, m | 0, C | 0, B | 0) | 0;\n G() | 0;\n h = d + (j << 3) | 0;\n i = h;\n c = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n\n if (!((c | 0) == 0 & (i | 0) == 0)) {\n k = 0;\n\n while (1) {\n if ((k | 0) > (C | 0)) { break c; }\n if ((c | 0) == (l | 0) & (i | 0) == (m | 0)) { break d; }\n j = (j + 1 | 0) % (C | 0) | 0;\n h = d + (j << 3) | 0;\n i = h;\n c = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n if ((c | 0) == 0 & (i | 0) == 0) { break; }else { k = k + 1 | 0; }\n }\n }\n\n if (!((l | 0) == 0 & (m | 0) == 0)) {\n Ub(l, m, F);\n\n if (wc(a, I, F) | 0) {\n k = h;\n b[k >> 2] = l;\n b[k + 4 >> 2] = m;\n k = w + (g << 3) | 0;\n b[k >> 2] = l;\n b[k + 4 >> 2] = m;\n g = g + 1 | 0;\n }\n }\n } } while (0);\n\n n = n + 1 | 0;\n } while (n >>> 0 < 7);\n\n p = p + 1 | 0;\n if ((p | 0) >= (q | 0)) { break; }else { o = o + 1 | 0; }\n }\n\n if ((q | 0) > 0) { gd(x | 0, 0, q << 3 | 0) | 0; }\n b[D >> 2] = g;\n\n if ((g | 0) > 0) {\n l = f;\n m = u;\n n = A;\n o = t;\n p = s;\n q = w;\n f = r;\n u = e;\n t = y;\n s = x;\n r = l;\n e = m;\n A = z;\n z = n;\n y = o;\n x = p;\n w = v;\n v = q;\n } else { break b; }\n }\n\n Wc(y);\n Wc(z);\n Wc(I);\n I = -1;\n S = J;\n return I | 0;\n } else { e = l; } } while (0);\n\n Wc(I);\n Wc(f);\n Wc(e);\n I = 0;\n S = J;\n return I | 0;\n }\n\n function ia(a, c, d, f, g, h) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n h = h | 0;\n var i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0.0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0,\n D = 0.0,\n E = 0.0;\n C = S;\n S = S + 48 | 0;\n y = C + 32 | 0;\n z = C + 16 | 0;\n A = C;\n i = b[a >> 2] | 0;\n\n if ((i | 0) <= 0) {\n B = 0;\n S = C;\n return B | 0;\n }\n\n t = a + 4 | 0;\n u = y + 8 | 0;\n v = z + 8 | 0;\n w = A + 8 | 0;\n x = ((c | 0) < 0) << 31 >> 31;\n s = 0;\n\n a: while (1) {\n j = b[t >> 2] | 0;\n q = j + (s << 4) | 0;\n b[y >> 2] = b[q >> 2];\n b[y + 4 >> 2] = b[q + 4 >> 2];\n b[y + 8 >> 2] = b[q + 8 >> 2];\n b[y + 12 >> 2] = b[q + 12 >> 2];\n\n if ((s | 0) == (i + -1 | 0)) {\n b[z >> 2] = b[j >> 2];\n b[z + 4 >> 2] = b[j + 4 >> 2];\n b[z + 8 >> 2] = b[j + 8 >> 2];\n b[z + 12 >> 2] = b[j + 12 >> 2];\n } else {\n q = j + (s + 1 << 4) | 0;\n b[z >> 2] = b[q >> 2];\n b[z + 4 >> 2] = b[q + 4 >> 2];\n b[z + 8 >> 2] = b[q + 8 >> 2];\n b[z + 12 >> 2] = b[q + 12 >> 2];\n }\n\n q = za(y, z, d) | 0;\n\n b: do { if ((q | 0) > 0) {\n r = +(q | 0);\n p = 0;\n\n c: while (1) {\n E = +(q - p | 0);\n D = +(p | 0);\n e[A >> 3] = +e[y >> 3] * E / r + +e[z >> 3] * D / r;\n e[w >> 3] = +e[u >> 3] * E / r + +e[v >> 3] * D / r;\n n = Rb(A, d) | 0;\n o = G() | 0;\n j = ad(n | 0, o | 0, c | 0, x | 0) | 0;\n G() | 0;\n i = h + (j << 3) | 0;\n k = i;\n l = b[k >> 2] | 0;\n k = b[k + 4 >> 2] | 0;\n\n d: do { if ((l | 0) == 0 & (k | 0) == 0) { B = 14; }else {\n m = 0;\n\n while (1) {\n if ((m | 0) > (c | 0)) {\n i = 1;\n break d;\n }\n\n if ((l | 0) == (n | 0) & (k | 0) == (o | 0)) {\n i = 7;\n break d;\n }\n\n j = (j + 1 | 0) % (c | 0) | 0;\n i = h + (j << 3) | 0;\n k = i;\n l = b[k >> 2] | 0;\n k = b[k + 4 >> 2] | 0;\n\n if ((l | 0) == 0 & (k | 0) == 0) {\n B = 14;\n break;\n } else { m = m + 1 | 0; }\n }\n } } while (0);\n\n if ((B | 0) == 14) {\n B = 0;\n if ((n | 0) == 0 & (o | 0) == 0) { i = 7; }else {\n b[i >> 2] = n;\n b[i + 4 >> 2] = o;\n i = b[f >> 2] | 0;\n m = g + (i << 3) | 0;\n b[m >> 2] = n;\n b[m + 4 >> 2] = o;\n b[f >> 2] = i + 1;\n i = 0;\n }\n }\n\n switch (i & 7) {\n case 7:\n case 0:\n break;\n\n default:\n break c;\n }\n\n p = p + 1 | 0;\n\n if ((q | 0) <= (p | 0)) {\n B = 8;\n break b;\n }\n }\n\n if (i | 0) {\n i = -1;\n B = 20;\n break a;\n }\n } else { B = 8; } } while (0);\n\n if ((B | 0) == 8) { B = 0; }\n s = s + 1 | 0;\n i = b[a >> 2] | 0;\n\n if ((s | 0) >= (i | 0)) {\n i = 0;\n B = 20;\n break;\n }\n }\n\n if ((B | 0) == 20) {\n S = C;\n return i | 0;\n }\n\n return 0;\n }\n\n function ja(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;\n k = S;\n S = S + 176 | 0;\n j = k;\n\n if ((c | 0) < 1) {\n Lc(d, 0, 0);\n S = k;\n return;\n }\n\n h = a;\n h = bd(b[h >> 2] | 0, b[h + 4 >> 2] | 0, 52) | 0;\n G() | 0;\n Lc(d, (c | 0) > 6 ? c : 6, h & 15);\n h = 0;\n\n do {\n e = a + (h << 3) | 0;\n Vb(b[e >> 2] | 0, b[e + 4 >> 2] | 0, j);\n e = b[j >> 2] | 0;\n\n if ((e | 0) > 0) {\n i = 0;\n\n do {\n g = j + 8 + (i << 4) | 0;\n i = i + 1 | 0;\n e = j + 8 + (((i | 0) % (e | 0) | 0) << 4) | 0;\n f = Qc(d, e, g) | 0;\n if (!f) { Pc(d, g, e) | 0; }else { Oc(d, f) | 0; }\n e = b[j >> 2] | 0;\n } while ((i | 0) < (e | 0));\n }\n\n h = h + 1 | 0;\n } while ((h | 0) != (c | 0));\n\n S = k;\n return;\n }\n\n function ka(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0;\n g = S;\n S = S + 32 | 0;\n e = g;\n f = g + 16 | 0;\n ja(a, c, f);\n b[d >> 2] = 0;\n b[d + 4 >> 2] = 0;\n b[d + 8 >> 2] = 0;\n a = Nc(f) | 0;\n\n if (!a) {\n jc(d) | 0;\n Mc(f);\n S = g;\n return;\n }\n\n do {\n c = gc(d) | 0;\n\n do {\n hc(c, a) | 0;\n h = a + 16 | 0;\n b[e >> 2] = b[h >> 2];\n b[e + 4 >> 2] = b[h + 4 >> 2];\n b[e + 8 >> 2] = b[h + 8 >> 2];\n b[e + 12 >> 2] = b[h + 12 >> 2];\n Oc(f, a) | 0;\n a = Rc(f, e) | 0;\n } while ((a | 0) != 0);\n\n a = Nc(f) | 0;\n } while ((a | 0) != 0);\n\n jc(d) | 0;\n Mc(f);\n S = g;\n return;\n }\n\n function la(a) {\n a = a | 0;\n return b[7728 + (a * 28 | 0) + 16 >> 2] | 0;\n }\n\n function ma(a) {\n a = a | 0;\n return (a | 0) == 4 | (a | 0) == 117 | 0;\n }\n\n function na(a) {\n a = a | 0;\n return b[11152 + ((b[a >> 2] | 0) * 216 | 0) + ((b[a + 4 >> 2] | 0) * 72 | 0) + ((b[a + 8 >> 2] | 0) * 24 | 0) + (b[a + 12 >> 2] << 3) >> 2] | 0;\n }\n\n function oa(a) {\n a = a | 0;\n return b[11152 + ((b[a >> 2] | 0) * 216 | 0) + ((b[a + 4 >> 2] | 0) * 72 | 0) + ((b[a + 8 >> 2] | 0) * 24 | 0) + (b[a + 12 >> 2] << 3) + 4 >> 2] | 0;\n }\n\n function pa(a, c) {\n a = a | 0;\n c = c | 0;\n a = 7728 + (a * 28 | 0) | 0;\n b[c >> 2] = b[a >> 2];\n b[c + 4 >> 2] = b[a + 4 >> 2];\n b[c + 8 >> 2] = b[a + 8 >> 2];\n b[c + 12 >> 2] = b[a + 12 >> 2];\n return;\n }\n\n function qa(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n\n if (c >>> 0 > 20) {\n c = -1;\n return c | 0;\n }\n\n do { if ((b[11152 + (c * 216 | 0) >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 8 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 16 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 24 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 32 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 40 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 48 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 56 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 64 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 72 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 80 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 88 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 96 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 104 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 112 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 120 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 128 >> 2] | 0) != (a | 0)) {\n if ((b[11152 + (c * 216 | 0) + 136 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 1;\n e = 2;\n } else {\n if ((b[11152 + (c * 216 | 0) + 144 >> 2] | 0) == (a | 0)) {\n a = 0;\n d = 2;\n e = 0;\n break;\n }\n\n if ((b[11152 + (c * 216 | 0) + 152 >> 2] | 0) == (a | 0)) {\n a = 0;\n d = 2;\n e = 1;\n break;\n }\n\n if ((b[11152 + (c * 216 | 0) + 160 >> 2] | 0) == (a | 0)) {\n a = 0;\n d = 2;\n e = 2;\n break;\n }\n\n if ((b[11152 + (c * 216 | 0) + 168 >> 2] | 0) == (a | 0)) {\n a = 1;\n d = 2;\n e = 0;\n break;\n }\n\n if ((b[11152 + (c * 216 | 0) + 176 >> 2] | 0) == (a | 0)) {\n a = 1;\n d = 2;\n e = 1;\n break;\n }\n\n if ((b[11152 + (c * 216 | 0) + 184 >> 2] | 0) == (a | 0)) {\n a = 1;\n d = 2;\n e = 2;\n break;\n }\n\n if ((b[11152 + (c * 216 | 0) + 192 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 2;\n e = 0;\n break;\n }\n\n if ((b[11152 + (c * 216 | 0) + 200 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 2;\n e = 1;\n break;\n }\n\n if ((b[11152 + (c * 216 | 0) + 208 >> 2] | 0) == (a | 0)) {\n a = 2;\n d = 2;\n e = 2;\n break;\n } else { a = -1; }\n\n return a | 0;\n }\n } else {\n a = 2;\n d = 1;\n e = 1;\n }\n } else {\n a = 2;\n d = 1;\n e = 0;\n }\n } else {\n a = 1;\n d = 1;\n e = 2;\n }\n } else {\n a = 1;\n d = 1;\n e = 1;\n }\n } else {\n a = 1;\n d = 1;\n e = 0;\n }\n } else {\n a = 0;\n d = 1;\n e = 2;\n }\n } else {\n a = 0;\n d = 1;\n e = 1;\n }\n } else {\n a = 0;\n d = 1;\n e = 0;\n }\n } else {\n a = 2;\n d = 0;\n e = 2;\n }\n } else {\n a = 2;\n d = 0;\n e = 1;\n }\n } else {\n a = 2;\n d = 0;\n e = 0;\n }\n } else {\n a = 1;\n d = 0;\n e = 2;\n }\n } else {\n a = 1;\n d = 0;\n e = 1;\n }\n } else {\n a = 1;\n d = 0;\n e = 0;\n }\n } else {\n a = 0;\n d = 0;\n e = 2;\n }\n } else {\n a = 0;\n d = 0;\n e = 1;\n }\n } else {\n a = 0;\n d = 0;\n e = 0;\n } } while (0);\n\n c = b[11152 + (c * 216 | 0) + (d * 72 | 0) + (a * 24 | 0) + (e << 3) + 4 >> 2] | 0;\n return c | 0;\n }\n\n function ra(a, c) {\n a = a | 0;\n c = c | 0;\n\n if ((b[7728 + (a * 28 | 0) + 20 >> 2] | 0) == (c | 0)) {\n c = 1;\n return c | 0;\n }\n\n c = (b[7728 + (a * 28 | 0) + 24 >> 2] | 0) == (c | 0);\n return c | 0;\n }\n\n function sa(a, c) {\n a = a | 0;\n c = c | 0;\n return b[880 + (a * 28 | 0) + (c << 2) >> 2] | 0;\n }\n\n function ta(a, c) {\n a = a | 0;\n c = c | 0;\n\n if ((b[880 + (a * 28 | 0) >> 2] | 0) == (c | 0)) {\n c = 0;\n return c | 0;\n }\n\n if ((b[880 + (a * 28 | 0) + 4 >> 2] | 0) == (c | 0)) {\n c = 1;\n return c | 0;\n }\n\n if ((b[880 + (a * 28 | 0) + 8 >> 2] | 0) == (c | 0)) {\n c = 2;\n return c | 0;\n }\n\n if ((b[880 + (a * 28 | 0) + 12 >> 2] | 0) == (c | 0)) {\n c = 3;\n return c | 0;\n }\n\n if ((b[880 + (a * 28 | 0) + 16 >> 2] | 0) == (c | 0)) {\n c = 4;\n return c | 0;\n }\n\n if ((b[880 + (a * 28 | 0) + 20 >> 2] | 0) == (c | 0)) {\n c = 5;\n return c | 0;\n } else { return ((b[880 + (a * 28 | 0) + 24 >> 2] | 0) == (c | 0) ? 6 : 7) | 0; }\n\n return 0;\n }\n\n function ua() {\n return 122;\n }\n\n function va(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0;\n c = 0;\n\n do {\n cd(c | 0, 0, 45) | 0;\n e = G() | 0 | 134225919;\n d = a + (c << 3) | 0;\n b[d >> 2] = -1;\n b[d + 4 >> 2] = e;\n c = c + 1 | 0;\n } while ((c | 0) != 122);\n\n return;\n }\n\n function wa(a) {\n a = a | 0;\n return +e[a + 16 >> 3] < +e[a + 24 >> 3] | 0;\n }\n\n function xa(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0;\n c = +e[b >> 3];\n\n if (!(c >= +e[a + 8 >> 3])) {\n b = 0;\n return b | 0;\n }\n\n if (!(c <= +e[a >> 3])) {\n b = 0;\n return b | 0;\n }\n\n d = +e[a + 16 >> 3];\n c = +e[a + 24 >> 3];\n f = +e[b + 8 >> 3];\n b = f >= c;\n a = f <= d & 1;\n\n if (d < c) {\n if (b) { a = 1; }\n } else if (!b) { a = 0; }\n\n b = (a | 0) != 0;\n return b | 0;\n }\n\n function ya(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0.0,\n l = 0.0;\n i = S;\n S = S + 288 | 0;\n d = i + 264 | 0;\n f = i + 96 | 0;\n g = i;\n h = g;\n j = h + 96 | 0;\n\n do {\n b[h >> 2] = 0;\n h = h + 4 | 0;\n } while ((h | 0) < (j | 0));\n\n Zb(c, g);\n h = g;\n j = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n Ub(j, h, d);\n Vb(j, h, f);\n k = +jb(d, f + 8 | 0);\n e[d >> 3] = +e[a >> 3];\n h = d + 8 | 0;\n e[h >> 3] = +e[a + 16 >> 3];\n e[f >> 3] = +e[a + 8 >> 3];\n j = f + 8 | 0;\n e[j >> 3] = +e[a + 24 >> 3];\n l = +jb(d, f);\n j = ~~+A(+(l * l / +dd(+ +q(+((+e[h >> 3] - +e[j >> 3]) / (+e[d >> 3] - +e[f >> 3]))), 3.0) / (k * (k * 2.59807621135) * .8)));\n S = i;\n return ((j | 0) == 0 ? 1 : j) | 0;\n }\n\n function za(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0.0;\n i = S;\n S = S + 288 | 0;\n e = i + 264 | 0;\n f = i + 96 | 0;\n g = i;\n h = g;\n j = h + 96 | 0;\n\n do {\n b[h >> 2] = 0;\n h = h + 4 | 0;\n } while ((h | 0) < (j | 0));\n\n Zb(d, g);\n j = g;\n h = b[j >> 2] | 0;\n j = b[j + 4 >> 2] | 0;\n Ub(h, j, e);\n Vb(h, j, f);\n k = +jb(e, f + 8 | 0);\n j = ~~+A(+(+jb(a, c) / (k * 2.0)));\n S = i;\n return ((j | 0) == 0 ? 1 : j) | 0;\n }\n\n function Aa(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n b[a >> 2] = c;\n b[a + 4 >> 2] = d;\n b[a + 8 >> 2] = e;\n return;\n }\n\n function Ba(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0,\n n = 0,\n o = 0.0;\n n = c + 8 | 0;\n b[n >> 2] = 0;\n k = +e[a >> 3];\n i = +q(+k);\n l = +e[a + 8 >> 3];\n j = +q(+l) / .8660254037844386;\n i = i + j * .5;\n d = ~~i;\n a = ~~j;\n i = i - +(d | 0);\n j = j - +(a | 0);\n\n do { if (i < .5) {\n if (i < .3333333333333333) {\n b[c >> 2] = d;\n\n if (j < (i + 1.0) * .5) {\n b[c + 4 >> 2] = a;\n break;\n } else {\n a = a + 1 | 0;\n b[c + 4 >> 2] = a;\n break;\n }\n } else {\n o = 1.0 - i;\n a = (!(j < o) & 1) + a | 0;\n b[c + 4 >> 2] = a;\n\n if (o <= j & j < i * 2.0) {\n d = d + 1 | 0;\n b[c >> 2] = d;\n break;\n } else {\n b[c >> 2] = d;\n break;\n }\n }\n } else {\n if (!(i < .6666666666666666)) {\n d = d + 1 | 0;\n b[c >> 2] = d;\n\n if (j < i * .5) {\n b[c + 4 >> 2] = a;\n break;\n } else {\n a = a + 1 | 0;\n b[c + 4 >> 2] = a;\n break;\n }\n }\n\n if (j < 1.0 - i) {\n b[c + 4 >> 2] = a;\n\n if (i * 2.0 + -1.0 < j) {\n b[c >> 2] = d;\n break;\n }\n } else {\n a = a + 1 | 0;\n b[c + 4 >> 2] = a;\n }\n\n d = d + 1 | 0;\n b[c >> 2] = d;\n } } while (0);\n\n do { if (k < 0.0) { if (!(a & 1)) {\n m = (a | 0) / 2 | 0;\n m = Zc(d | 0, ((d | 0) < 0) << 31 >> 31 | 0, m | 0, ((m | 0) < 0) << 31 >> 31 | 0) | 0;\n d = ~~(+(d | 0) - (+(m >>> 0) + 4294967296.0 * +(G() | 0)) * 2.0);\n b[c >> 2] = d;\n break;\n } else {\n m = (a + 1 | 0) / 2 | 0;\n m = Zc(d | 0, ((d | 0) < 0) << 31 >> 31 | 0, m | 0, ((m | 0) < 0) << 31 >> 31 | 0) | 0;\n d = ~~(+(d | 0) - ((+(m >>> 0) + 4294967296.0 * +(G() | 0)) * 2.0 + 1.0));\n b[c >> 2] = d;\n break;\n } } } while (0);\n\n m = c + 4 | 0;\n\n if (l < 0.0) {\n d = d - ((a << 1 | 1 | 0) / 2 | 0) | 0;\n b[c >> 2] = d;\n a = 0 - a | 0;\n b[m >> 2] = a;\n }\n\n f = a - d | 0;\n\n if ((d | 0) < 0) {\n g = 0 - d | 0;\n b[m >> 2] = f;\n b[n >> 2] = g;\n b[c >> 2] = 0;\n a = f;\n d = 0;\n } else { g = 0; }\n\n if ((a | 0) < 0) {\n d = d - a | 0;\n b[c >> 2] = d;\n g = g - a | 0;\n b[n >> 2] = g;\n b[m >> 2] = 0;\n a = 0;\n }\n\n h = d - g | 0;\n f = a - g | 0;\n\n if ((g | 0) < 0) {\n b[c >> 2] = h;\n b[m >> 2] = f;\n b[n >> 2] = 0;\n a = f;\n d = h;\n g = 0;\n }\n\n f = (a | 0) < (d | 0) ? a : d;\n f = (g | 0) < (f | 0) ? g : f;\n if ((f | 0) <= 0) { return; }\n b[c >> 2] = d - f;\n b[m >> 2] = a - f;\n b[n >> 2] = g - f;\n return;\n }\n\n function Ca(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n d = b[h >> 2] | 0;\n\n if ((c | 0) < 0) {\n d = d - c | 0;\n b[h >> 2] = d;\n g = a + 8 | 0;\n b[g >> 2] = (b[g >> 2] | 0) - c;\n b[a >> 2] = 0;\n c = 0;\n }\n\n if ((d | 0) < 0) {\n c = c - d | 0;\n b[a >> 2] = c;\n g = a + 8 | 0;\n f = (b[g >> 2] | 0) - d | 0;\n b[g >> 2] = f;\n b[h >> 2] = 0;\n d = 0;\n } else {\n f = a + 8 | 0;\n g = f;\n f = b[f >> 2] | 0;\n }\n\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[a >> 2] = c;\n d = d - f | 0;\n b[h >> 2] = d;\n b[g >> 2] = 0;\n f = 0;\n }\n\n e = (d | 0) < (c | 0) ? d : c;\n e = (f | 0) < (e | 0) ? f : e;\n if ((e | 0) <= 0) { return; }\n b[a >> 2] = c - e;\n b[h >> 2] = d - e;\n b[g >> 2] = f - e;\n return;\n }\n\n function Da(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n f = 0;\n f = b[a + 8 >> 2] | 0;\n d = +((b[a + 4 >> 2] | 0) - f | 0);\n e[c >> 3] = +((b[a >> 2] | 0) - f | 0) - d * .5;\n e[c + 8 >> 3] = d * .8660254037844386;\n return;\n }\n\n function Ea(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n b[d >> 2] = (b[c >> 2] | 0) + (b[a >> 2] | 0);\n b[d + 4 >> 2] = (b[c + 4 >> 2] | 0) + (b[a + 4 >> 2] | 0);\n b[d + 8 >> 2] = (b[c + 8 >> 2] | 0) + (b[a + 8 >> 2] | 0);\n return;\n }\n\n function Fa(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n b[d >> 2] = (b[a >> 2] | 0) - (b[c >> 2] | 0);\n b[d + 4 >> 2] = (b[a + 4 >> 2] | 0) - (b[c + 4 >> 2] | 0);\n b[d + 8 >> 2] = (b[a + 8 >> 2] | 0) - (b[c + 8 >> 2] | 0);\n return;\n }\n\n function Ga(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n d = B(b[a >> 2] | 0, c) | 0;\n b[a >> 2] = d;\n d = a + 4 | 0;\n e = B(b[d >> 2] | 0, c) | 0;\n b[d >> 2] = e;\n a = a + 8 | 0;\n c = B(b[a >> 2] | 0, c) | 0;\n b[a >> 2] = c;\n return;\n }\n\n function Ha(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = b[a >> 2] | 0;\n i = (h | 0) < 0;\n e = (b[a + 4 >> 2] | 0) - (i ? h : 0) | 0;\n g = (e | 0) < 0;\n f = (g ? 0 - e | 0 : 0) + ((b[a + 8 >> 2] | 0) - (i ? h : 0)) | 0;\n d = (f | 0) < 0;\n a = d ? 0 : f;\n c = (g ? 0 : e) - (d ? f : 0) | 0;\n f = (i ? 0 : h) - (g ? e : 0) - (d ? f : 0) | 0;\n d = (c | 0) < (f | 0) ? c : f;\n d = (a | 0) < (d | 0) ? a : d;\n e = (d | 0) > 0;\n a = a - (e ? d : 0) | 0;\n c = c - (e ? d : 0) | 0;\n\n a: do { switch (f - (e ? d : 0) | 0) {\n case 0:\n switch (c | 0) {\n case 0:\n {\n i = (a | 0) == 0 ? 0 : (a | 0) == 1 ? 1 : 7;\n return i | 0;\n }\n\n case 1:\n {\n i = (a | 0) == 0 ? 2 : (a | 0) == 1 ? 3 : 7;\n return i | 0;\n }\n\n default:\n break a;\n }\n\n case 1:\n switch (c | 0) {\n case 0:\n {\n i = (a | 0) == 0 ? 4 : (a | 0) == 1 ? 5 : 7;\n return i | 0;\n }\n\n case 1:\n {\n if (!a) { a = 6; }else { break a; }\n return a | 0;\n }\n\n default:\n break a;\n }\n\n default:\n\n } } while (0);\n\n i = 7;\n return i | 0;\n }\n\n function Ia(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = a + 8 | 0;\n d = b[h >> 2] | 0;\n c = (b[a >> 2] | 0) - d | 0;\n i = a + 4 | 0;\n d = (b[i >> 2] | 0) - d | 0;\n e = Uc(+((c * 3 | 0) - d | 0) / 7.0) | 0;\n b[a >> 2] = e;\n c = Uc(+((d << 1) + c | 0) / 7.0) | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = c - e | 0;\n\n if ((e | 0) < 0) {\n g = 0 - e | 0;\n b[i >> 2] = d;\n b[h >> 2] = g;\n b[a >> 2] = 0;\n c = d;\n e = 0;\n d = g;\n } else { d = 0; }\n\n if ((c | 0) < 0) {\n e = e - c | 0;\n b[a >> 2] = e;\n d = d - c | 0;\n b[h >> 2] = d;\n b[i >> 2] = 0;\n c = 0;\n }\n\n g = e - d | 0;\n f = c - d | 0;\n\n if ((d | 0) < 0) {\n b[a >> 2] = g;\n b[i >> 2] = f;\n b[h >> 2] = 0;\n c = f;\n f = g;\n d = 0;\n } else { f = e; }\n\n e = (c | 0) < (f | 0) ? c : f;\n e = (d | 0) < (e | 0) ? d : e;\n if ((e | 0) <= 0) { return; }\n b[a >> 2] = f - e;\n b[i >> 2] = c - e;\n b[h >> 2] = d - e;\n return;\n }\n\n function Ja(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = a + 8 | 0;\n d = b[h >> 2] | 0;\n c = (b[a >> 2] | 0) - d | 0;\n i = a + 4 | 0;\n d = (b[i >> 2] | 0) - d | 0;\n e = Uc(+((c << 1) + d | 0) / 7.0) | 0;\n b[a >> 2] = e;\n c = Uc(+((d * 3 | 0) - c | 0) / 7.0) | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = c - e | 0;\n\n if ((e | 0) < 0) {\n g = 0 - e | 0;\n b[i >> 2] = d;\n b[h >> 2] = g;\n b[a >> 2] = 0;\n c = d;\n e = 0;\n d = g;\n } else { d = 0; }\n\n if ((c | 0) < 0) {\n e = e - c | 0;\n b[a >> 2] = e;\n d = d - c | 0;\n b[h >> 2] = d;\n b[i >> 2] = 0;\n c = 0;\n }\n\n g = e - d | 0;\n f = c - d | 0;\n\n if ((d | 0) < 0) {\n b[a >> 2] = g;\n b[i >> 2] = f;\n b[h >> 2] = 0;\n c = f;\n f = g;\n d = 0;\n } else { f = e; }\n\n e = (c | 0) < (f | 0) ? c : f;\n e = (d | 0) < (e | 0) ? d : e;\n if ((e | 0) <= 0) { return; }\n b[a >> 2] = f - e;\n b[i >> 2] = c - e;\n b[h >> 2] = d - e;\n return;\n }\n\n function Ka(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n d = b[h >> 2] | 0;\n i = a + 8 | 0;\n e = b[i >> 2] | 0;\n f = d + (c * 3 | 0) | 0;\n b[a >> 2] = f;\n d = e + (d * 3 | 0) | 0;\n b[h >> 2] = d;\n c = (e * 3 | 0) + c | 0;\n b[i >> 2] = c;\n e = d - f | 0;\n\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = e;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n d = e;\n e = 0;\n } else { e = f; }\n\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n\n g = e - c | 0;\n f = d - c | 0;\n\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else { f = d; }\n\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n\n function La(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n f = b[a >> 2] | 0;\n h = a + 4 | 0;\n c = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n e = (c * 3 | 0) + f | 0;\n f = d + (f * 3 | 0) | 0;\n b[a >> 2] = f;\n b[h >> 2] = e;\n c = (d * 3 | 0) + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n f = 0;\n } else { d = e; }\n\n if ((d | 0) < 0) {\n f = f - d | 0;\n b[a >> 2] = f;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n\n g = f - c | 0;\n e = d - c | 0;\n\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = e;\n b[i >> 2] = 0;\n f = g;\n c = 0;\n } else { e = d; }\n\n d = (e | 0) < (f | 0) ? e : f;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = f - d;\n b[h >> 2] = e - d;\n b[i >> 2] = c - d;\n return;\n }\n\n function Ma(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n if ((c + -1 | 0) >>> 0 >= 6) { return; }\n f = (b[15472 + (c * 12 | 0) >> 2] | 0) + (b[a >> 2] | 0) | 0;\n b[a >> 2] = f;\n i = a + 4 | 0;\n e = (b[15472 + (c * 12 | 0) + 4 >> 2] | 0) + (b[i >> 2] | 0) | 0;\n b[i >> 2] = e;\n h = a + 8 | 0;\n c = (b[15472 + (c * 12 | 0) + 8 >> 2] | 0) + (b[h >> 2] | 0) | 0;\n b[h >> 2] = c;\n d = e - f | 0;\n\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[i >> 2] = d;\n b[h >> 2] = c;\n b[a >> 2] = 0;\n e = 0;\n } else {\n d = e;\n e = f;\n }\n\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[h >> 2] = c;\n b[i >> 2] = 0;\n d = 0;\n }\n\n g = e - c | 0;\n f = d - c | 0;\n\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[i >> 2] = f;\n b[h >> 2] = 0;\n e = g;\n c = 0;\n } else { f = d; }\n\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = e - d;\n b[i >> 2] = f - d;\n b[h >> 2] = c - d;\n return;\n }\n\n function Na(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n f = b[a >> 2] | 0;\n h = a + 4 | 0;\n c = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n e = c + f | 0;\n f = d + f | 0;\n b[a >> 2] = f;\n b[h >> 2] = e;\n c = d + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n e = 0;\n } else {\n d = e;\n e = f;\n }\n\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n\n g = e - c | 0;\n f = d - c | 0;\n\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else { f = d; }\n\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n\n function Oa(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n e = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n f = e + c | 0;\n b[a >> 2] = f;\n e = d + e | 0;\n b[h >> 2] = e;\n c = d + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n e = 0;\n } else {\n d = e;\n e = f;\n }\n\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n\n g = e - c | 0;\n f = d - c | 0;\n\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else { f = d; }\n\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n\n function Pa(a) {\n a = a | 0;\n\n switch (a | 0) {\n case 1:\n {\n a = 5;\n break;\n }\n\n case 5:\n {\n a = 4;\n break;\n }\n\n case 4:\n {\n a = 6;\n break;\n }\n\n case 6:\n {\n a = 2;\n break;\n }\n\n case 2:\n {\n a = 3;\n break;\n }\n\n case 3:\n {\n a = 1;\n break;\n }\n\n default:\n\n }\n\n return a | 0;\n }\n\n function Qa(a) {\n a = a | 0;\n\n switch (a | 0) {\n case 1:\n {\n a = 3;\n break;\n }\n\n case 3:\n {\n a = 2;\n break;\n }\n\n case 2:\n {\n a = 6;\n break;\n }\n\n case 6:\n {\n a = 4;\n break;\n }\n\n case 4:\n {\n a = 5;\n break;\n }\n\n case 5:\n {\n a = 1;\n break;\n }\n\n default:\n\n }\n\n return a | 0;\n }\n\n function Ra(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n c = b[a >> 2] | 0;\n h = a + 4 | 0;\n d = b[h >> 2] | 0;\n i = a + 8 | 0;\n e = b[i >> 2] | 0;\n f = d + (c << 1) | 0;\n b[a >> 2] = f;\n d = e + (d << 1) | 0;\n b[h >> 2] = d;\n c = (e << 1) + c | 0;\n b[i >> 2] = c;\n e = d - f | 0;\n\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = e;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n d = e;\n e = 0;\n } else { e = f; }\n\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[a >> 2] = e;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n\n g = e - c | 0;\n f = d - c | 0;\n\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n e = g;\n c = 0;\n } else { f = d; }\n\n d = (f | 0) < (e | 0) ? f : e;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = e - d;\n b[h >> 2] = f - d;\n b[i >> 2] = c - d;\n return;\n }\n\n function Sa(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n f = b[a >> 2] | 0;\n h = a + 4 | 0;\n c = b[h >> 2] | 0;\n i = a + 8 | 0;\n d = b[i >> 2] | 0;\n e = (c << 1) + f | 0;\n f = d + (f << 1) | 0;\n b[a >> 2] = f;\n b[h >> 2] = e;\n c = (d << 1) + c | 0;\n b[i >> 2] = c;\n d = e - f | 0;\n\n if ((f | 0) < 0) {\n c = c - f | 0;\n b[h >> 2] = d;\n b[i >> 2] = c;\n b[a >> 2] = 0;\n f = 0;\n } else { d = e; }\n\n if ((d | 0) < 0) {\n f = f - d | 0;\n b[a >> 2] = f;\n c = c - d | 0;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n d = 0;\n }\n\n g = f - c | 0;\n e = d - c | 0;\n\n if ((c | 0) < 0) {\n b[a >> 2] = g;\n b[h >> 2] = e;\n b[i >> 2] = 0;\n f = g;\n c = 0;\n } else { e = d; }\n\n d = (e | 0) < (f | 0) ? e : f;\n d = (c | 0) < (d | 0) ? c : d;\n if ((d | 0) <= 0) { return; }\n b[a >> 2] = f - d;\n b[h >> 2] = e - d;\n b[i >> 2] = c - d;\n return;\n }\n\n function Ta(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = (b[a >> 2] | 0) - (b[c >> 2] | 0) | 0;\n i = (h | 0) < 0;\n e = (b[a + 4 >> 2] | 0) - (b[c + 4 >> 2] | 0) - (i ? h : 0) | 0;\n g = (e | 0) < 0;\n f = (i ? 0 - h | 0 : 0) + (b[a + 8 >> 2] | 0) - (b[c + 8 >> 2] | 0) + (g ? 0 - e | 0 : 0) | 0;\n a = (f | 0) < 0;\n c = a ? 0 : f;\n d = (g ? 0 : e) - (a ? f : 0) | 0;\n f = (i ? 0 : h) - (g ? e : 0) - (a ? f : 0) | 0;\n a = (d | 0) < (f | 0) ? d : f;\n a = (c | 0) < (a | 0) ? c : a;\n e = (a | 0) > 0;\n c = c - (e ? a : 0) | 0;\n d = d - (e ? a : 0) | 0;\n a = f - (e ? a : 0) | 0;\n a = (a | 0) > -1 ? a : 0 - a | 0;\n d = (d | 0) > -1 ? d : 0 - d | 0;\n c = (c | 0) > -1 ? c : 0 - c | 0;\n c = (d | 0) > (c | 0) ? d : c;\n return ((a | 0) > (c | 0) ? a : c) | 0;\n }\n\n function Ua(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0;\n d = b[a + 8 >> 2] | 0;\n b[c >> 2] = (b[a >> 2] | 0) - d;\n b[c + 4 >> 2] = (b[a + 4 >> 2] | 0) - d;\n return;\n }\n\n function Va(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n e = b[a >> 2] | 0;\n b[c >> 2] = e;\n a = b[a + 4 >> 2] | 0;\n h = c + 4 | 0;\n b[h >> 2] = a;\n i = c + 8 | 0;\n b[i >> 2] = 0;\n d = a - e | 0;\n\n if ((e | 0) < 0) {\n a = 0 - e | 0;\n b[h >> 2] = d;\n b[i >> 2] = a;\n b[c >> 2] = 0;\n e = 0;\n } else {\n d = a;\n a = 0;\n }\n\n if ((d | 0) < 0) {\n e = e - d | 0;\n b[c >> 2] = e;\n a = a - d | 0;\n b[i >> 2] = a;\n b[h >> 2] = 0;\n d = 0;\n }\n\n g = e - a | 0;\n f = d - a | 0;\n\n if ((a | 0) < 0) {\n b[c >> 2] = g;\n b[h >> 2] = f;\n b[i >> 2] = 0;\n d = f;\n f = g;\n a = 0;\n } else { f = e; }\n\n e = (d | 0) < (f | 0) ? d : f;\n e = (a | 0) < (e | 0) ? a : e;\n if ((e | 0) <= 0) { return; }\n b[c >> 2] = f - e;\n b[h >> 2] = d - e;\n b[i >> 2] = a - e;\n return;\n }\n\n function Wa(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0;\n c = a + 8 | 0;\n f = b[c >> 2] | 0;\n d = f - (b[a >> 2] | 0) | 0;\n b[a >> 2] = d;\n e = a + 4 | 0;\n a = (b[e >> 2] | 0) - f | 0;\n b[e >> 2] = a;\n b[c >> 2] = 0 - (a + d);\n return;\n }\n\n function Xa(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n d = b[a >> 2] | 0;\n c = 0 - d | 0;\n b[a >> 2] = c;\n h = a + 8 | 0;\n b[h >> 2] = 0;\n i = a + 4 | 0;\n e = b[i >> 2] | 0;\n f = e + d | 0;\n\n if ((d | 0) > 0) {\n b[i >> 2] = f;\n b[h >> 2] = d;\n b[a >> 2] = 0;\n c = 0;\n e = f;\n } else { d = 0; }\n\n if ((e | 0) < 0) {\n g = c - e | 0;\n b[a >> 2] = g;\n d = d - e | 0;\n b[h >> 2] = d;\n b[i >> 2] = 0;\n f = g - d | 0;\n c = 0 - d | 0;\n\n if ((d | 0) < 0) {\n b[a >> 2] = f;\n b[i >> 2] = c;\n b[h >> 2] = 0;\n e = c;\n d = 0;\n } else {\n e = 0;\n f = g;\n }\n } else { f = c; }\n\n c = (e | 0) < (f | 0) ? e : f;\n c = (d | 0) < (c | 0) ? d : c;\n if ((c | 0) <= 0) { return; }\n b[a >> 2] = f - c;\n b[i >> 2] = e - c;\n b[h >> 2] = d - c;\n return;\n }\n\n function Ya(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n d = S;\n S = S + 16 | 0;\n e = d;\n Za(a, b, c, e);\n Ba(e, c + 4 | 0);\n S = d;\n return;\n }\n\n function Za(a, c, d, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n var g = 0.0,\n h = 0,\n i = 0.0,\n j = 0.0,\n k = 0;\n k = S;\n S = S + 32 | 0;\n h = k;\n Ic(a, h);\n b[d >> 2] = 0;\n g = +Hc(15888, h);\n i = +Hc(15912, h);\n\n if (i < g) {\n b[d >> 2] = 1;\n g = i;\n }\n\n i = +Hc(15936, h);\n\n if (i < g) {\n b[d >> 2] = 2;\n g = i;\n }\n\n i = +Hc(15960, h);\n\n if (i < g) {\n b[d >> 2] = 3;\n g = i;\n }\n\n i = +Hc(15984, h);\n\n if (i < g) {\n b[d >> 2] = 4;\n g = i;\n }\n\n i = +Hc(16008, h);\n\n if (i < g) {\n b[d >> 2] = 5;\n g = i;\n }\n\n i = +Hc(16032, h);\n\n if (i < g) {\n b[d >> 2] = 6;\n g = i;\n }\n\n i = +Hc(16056, h);\n\n if (i < g) {\n b[d >> 2] = 7;\n g = i;\n }\n\n i = +Hc(16080, h);\n\n if (i < g) {\n b[d >> 2] = 8;\n g = i;\n }\n\n i = +Hc(16104, h);\n\n if (i < g) {\n b[d >> 2] = 9;\n g = i;\n }\n\n i = +Hc(16128, h);\n\n if (i < g) {\n b[d >> 2] = 10;\n g = i;\n }\n\n i = +Hc(16152, h);\n\n if (i < g) {\n b[d >> 2] = 11;\n g = i;\n }\n\n i = +Hc(16176, h);\n\n if (i < g) {\n b[d >> 2] = 12;\n g = i;\n }\n\n i = +Hc(16200, h);\n\n if (i < g) {\n b[d >> 2] = 13;\n g = i;\n }\n\n i = +Hc(16224, h);\n\n if (i < g) {\n b[d >> 2] = 14;\n g = i;\n }\n\n i = +Hc(16248, h);\n\n if (i < g) {\n b[d >> 2] = 15;\n g = i;\n }\n\n i = +Hc(16272, h);\n\n if (i < g) {\n b[d >> 2] = 16;\n g = i;\n }\n\n i = +Hc(16296, h);\n\n if (i < g) {\n b[d >> 2] = 17;\n g = i;\n }\n\n i = +Hc(16320, h);\n\n if (i < g) {\n b[d >> 2] = 18;\n g = i;\n }\n\n i = +Hc(16344, h);\n\n if (i < g) {\n b[d >> 2] = 19;\n g = i;\n }\n\n i = +w(+(1.0 - g * .5));\n\n if (i < 1.0e-16) {\n b[f >> 2] = 0;\n b[f + 4 >> 2] = 0;\n b[f + 8 >> 2] = 0;\n b[f + 12 >> 2] = 0;\n S = k;\n return;\n }\n\n d = b[d >> 2] | 0;\n g = +e[16368 + (d * 24 | 0) >> 3];\n g = +gb(g - +gb(+lb(15568 + (d << 4) | 0, a)));\n if (!(Qb(c) | 0)) { j = g; }else { j = +gb(g + -.3334731722518321); }\n g = +v(+i) / .381966011250105;\n\n if ((c | 0) > 0) {\n h = 0;\n\n do {\n g = g * 2.6457513110645907;\n h = h + 1 | 0;\n } while ((h | 0) != (c | 0));\n }\n\n i = +t(+j) * g;\n e[f >> 3] = i;\n j = +u(+j) * g;\n e[f + 8 >> 3] = j;\n S = k;\n return;\n }\n\n function _a(a, c, d, f, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n var h = 0.0,\n i = 0.0;\n h = +Ec(a);\n\n if (h < 1.0e-16) {\n c = 15568 + (c << 4) | 0;\n b[g >> 2] = b[c >> 2];\n b[g + 4 >> 2] = b[c + 4 >> 2];\n b[g + 8 >> 2] = b[c + 8 >> 2];\n b[g + 12 >> 2] = b[c + 12 >> 2];\n return;\n }\n\n i = +z(+ +e[a + 8 >> 3], + +e[a >> 3]);\n\n if ((d | 0) > 0) {\n a = 0;\n\n do {\n h = h / 2.6457513110645907;\n a = a + 1 | 0;\n } while ((a | 0) != (d | 0));\n }\n\n if (!f) {\n h = +y(+(h * .381966011250105));\n if (Qb(d) | 0) { i = +gb(i + .3334731722518321); }\n } else {\n h = h / 3.0;\n d = (Qb(d) | 0) == 0;\n h = +y(+((d ? h : h / 2.6457513110645907) * .381966011250105));\n }\n\n mb(15568 + (c << 4) | 0, +gb(+e[16368 + (c * 24 | 0) >> 3] - i), h, g);\n return;\n }\n\n function $a(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0;\n e = S;\n S = S + 16 | 0;\n f = e;\n Da(a + 4 | 0, f);\n\n _a(f, b[a >> 2] | 0, c, 0, d);\n\n S = e;\n return;\n }\n\n function ab(a, c, d, f, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n var h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0,\n D = 0,\n E = 0,\n F = 0,\n G = 0,\n I = 0.0,\n J = 0.0;\n G = S;\n S = S + 272 | 0;\n h = G + 256 | 0;\n u = G + 240 | 0;\n D = G;\n E = G + 224 | 0;\n F = G + 208 | 0;\n v = G + 176 | 0;\n w = G + 160 | 0;\n x = G + 192 | 0;\n y = G + 144 | 0;\n z = G + 128 | 0;\n A = G + 112 | 0;\n B = G + 96 | 0;\n C = G + 80 | 0;\n b[h >> 2] = c;\n b[u >> 2] = b[a >> 2];\n b[u + 4 >> 2] = b[a + 4 >> 2];\n b[u + 8 >> 2] = b[a + 8 >> 2];\n b[u + 12 >> 2] = b[a + 12 >> 2];\n bb(u, h, D);\n b[g >> 2] = 0;\n u = f + d + ((f | 0) == 5 & 1) | 0;\n\n if ((u | 0) <= (d | 0)) {\n S = G;\n return;\n }\n\n k = b[h >> 2] | 0;\n l = E + 4 | 0;\n m = v + 4 | 0;\n n = d + 5 | 0;\n o = 16848 + (k << 2) | 0;\n p = 16928 + (k << 2) | 0;\n q = z + 8 | 0;\n r = A + 8 | 0;\n s = B + 8 | 0;\n t = F + 4 | 0;\n j = d;\n\n a: while (1) {\n i = D + (((j | 0) % 5 | 0) << 4) | 0;\n b[F >> 2] = b[i >> 2];\n b[F + 4 >> 2] = b[i + 4 >> 2];\n b[F + 8 >> 2] = b[i + 8 >> 2];\n b[F + 12 >> 2] = b[i + 12 >> 2];\n\n do {} while ((cb(F, k, 0, 1) | 0) == 2);\n\n if ((j | 0) > (d | 0) & (Qb(c) | 0) != 0) {\n b[v >> 2] = b[F >> 2];\n b[v + 4 >> 2] = b[F + 4 >> 2];\n b[v + 8 >> 2] = b[F + 8 >> 2];\n b[v + 12 >> 2] = b[F + 12 >> 2];\n Da(l, w);\n f = b[v >> 2] | 0;\n h = b[17008 + (f * 80 | 0) + (b[E >> 2] << 2) >> 2] | 0;\n b[v >> 2] = b[18608 + (f * 80 | 0) + (h * 20 | 0) >> 2];\n i = b[18608 + (f * 80 | 0) + (h * 20 | 0) + 16 >> 2] | 0;\n\n if ((i | 0) > 0) {\n a = 0;\n\n do {\n Na(m);\n a = a + 1 | 0;\n } while ((a | 0) < (i | 0));\n }\n\n i = 18608 + (f * 80 | 0) + (h * 20 | 0) + 4 | 0;\n b[x >> 2] = b[i >> 2];\n b[x + 4 >> 2] = b[i + 4 >> 2];\n b[x + 8 >> 2] = b[i + 8 >> 2];\n Ga(x, (b[o >> 2] | 0) * 3 | 0);\n Ea(m, x, m);\n Ca(m);\n Da(m, y);\n I = +(b[p >> 2] | 0);\n e[z >> 3] = I * 3.0;\n e[q >> 3] = 0.0;\n J = I * -1.5;\n e[A >> 3] = J;\n e[r >> 3] = I * 2.598076211353316;\n e[B >> 3] = J;\n e[s >> 3] = I * -2.598076211353316;\n\n switch (b[17008 + ((b[v >> 2] | 0) * 80 | 0) + (b[F >> 2] << 2) >> 2] | 0) {\n case 1:\n {\n a = A;\n f = z;\n break;\n }\n\n case 3:\n {\n a = B;\n f = A;\n break;\n }\n\n case 2:\n {\n a = z;\n f = B;\n break;\n }\n\n default:\n {\n a = 12;\n break a;\n }\n }\n\n Fc(w, y, f, a, C);\n\n _a(C, b[v >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n\n if ((j | 0) < (n | 0)) {\n Da(t, v);\n\n _a(v, b[F >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n b[E >> 2] = b[F >> 2];\n b[E + 4 >> 2] = b[F + 4 >> 2];\n b[E + 8 >> 2] = b[F + 8 >> 2];\n b[E + 12 >> 2] = b[F + 12 >> 2];\n j = j + 1 | 0;\n\n if ((j | 0) >= (u | 0)) {\n a = 3;\n break;\n }\n }\n\n if ((a | 0) == 3) {\n S = G;\n return;\n } else if ((a | 0) == 12) { H(22474, 22521, 581, 22531); }\n }\n\n function bb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n j = S;\n S = S + 128 | 0;\n e = j + 64 | 0;\n f = j;\n g = e;\n h = 20208;\n i = g + 60 | 0;\n\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n } while ((g | 0) < (i | 0));\n\n g = f;\n h = 20272;\n i = g + 60 | 0;\n\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n } while ((g | 0) < (i | 0));\n\n i = (Qb(b[c >> 2] | 0) | 0) == 0;\n e = i ? e : f;\n f = a + 4 | 0;\n Ra(f);\n Sa(f);\n\n if (Qb(b[c >> 2] | 0) | 0) {\n La(f);\n b[c >> 2] = (b[c >> 2] | 0) + 1;\n }\n\n b[d >> 2] = b[a >> 2];\n c = d + 4 | 0;\n Ea(f, e, c);\n Ca(c);\n b[d + 16 >> 2] = b[a >> 2];\n c = d + 20 | 0;\n Ea(f, e + 12 | 0, c);\n Ca(c);\n b[d + 32 >> 2] = b[a >> 2];\n c = d + 36 | 0;\n Ea(f, e + 24 | 0, c);\n Ca(c);\n b[d + 48 >> 2] = b[a >> 2];\n c = d + 52 | 0;\n Ea(f, e + 36 | 0, c);\n Ca(c);\n b[d + 64 >> 2] = b[a >> 2];\n d = d + 68 | 0;\n Ea(f, e + 48 | 0, d);\n Ca(d);\n S = j;\n return;\n }\n\n function cb(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0;\n p = S;\n S = S + 32 | 0;\n n = p + 12 | 0;\n i = p;\n o = a + 4 | 0;\n m = b[16928 + (c << 2) >> 2] | 0;\n l = (e | 0) != 0;\n m = l ? m * 3 | 0 : m;\n f = b[o >> 2] | 0;\n k = a + 8 | 0;\n h = b[k >> 2] | 0;\n\n if (l) {\n g = a + 12 | 0;\n e = b[g >> 2] | 0;\n f = h + f + e | 0;\n\n if ((f | 0) == (m | 0)) {\n o = 1;\n S = p;\n return o | 0;\n } else { j = g; }\n } else {\n j = a + 12 | 0;\n e = b[j >> 2] | 0;\n f = h + f + e | 0;\n }\n\n if ((f | 0) <= (m | 0)) {\n o = 0;\n S = p;\n return o | 0;\n }\n\n do { if ((e | 0) > 0) {\n e = b[a >> 2] | 0;\n\n if ((h | 0) > 0) {\n g = 18608 + (e * 80 | 0) + 60 | 0;\n e = a;\n break;\n }\n\n e = 18608 + (e * 80 | 0) + 40 | 0;\n\n if (!d) {\n g = e;\n e = a;\n } else {\n Aa(n, m, 0, 0);\n Fa(o, n, i);\n Oa(i);\n Ea(i, n, o);\n g = e;\n e = a;\n }\n } else {\n g = 18608 + ((b[a >> 2] | 0) * 80 | 0) + 20 | 0;\n e = a;\n } } while (0);\n\n b[e >> 2] = b[g >> 2];\n f = g + 16 | 0;\n\n if ((b[f >> 2] | 0) > 0) {\n e = 0;\n\n do {\n Na(o);\n e = e + 1 | 0;\n } while ((e | 0) < (b[f >> 2] | 0));\n }\n\n a = g + 4 | 0;\n b[n >> 2] = b[a >> 2];\n b[n + 4 >> 2] = b[a + 4 >> 2];\n b[n + 8 >> 2] = b[a + 8 >> 2];\n c = b[16848 + (c << 2) >> 2] | 0;\n Ga(n, l ? c * 3 | 0 : c);\n Ea(o, n, o);\n Ca(o);\n if (l) { e = ((b[k >> 2] | 0) + (b[o >> 2] | 0) + (b[j >> 2] | 0) | 0) == (m | 0) ? 1 : 2; }else { e = 2; }\n o = e;\n S = p;\n return o | 0;\n }\n\n function db(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n\n do { c = cb(a, b, 0, 1) | 0; } while ((c | 0) == 2);\n\n return c | 0;\n }\n\n function eb(a, c, d, f, g) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n g = g | 0;\n var h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0.0,\n D = 0.0;\n B = S;\n S = S + 240 | 0;\n h = B + 224 | 0;\n x = B + 208 | 0;\n y = B;\n z = B + 192 | 0;\n A = B + 176 | 0;\n s = B + 160 | 0;\n t = B + 144 | 0;\n u = B + 128 | 0;\n v = B + 112 | 0;\n w = B + 96 | 0;\n b[h >> 2] = c;\n b[x >> 2] = b[a >> 2];\n b[x + 4 >> 2] = b[a + 4 >> 2];\n b[x + 8 >> 2] = b[a + 8 >> 2];\n b[x + 12 >> 2] = b[a + 12 >> 2];\n fb(x, h, y);\n b[g >> 2] = 0;\n r = f + d + ((f | 0) == 6 & 1) | 0;\n\n if ((r | 0) <= (d | 0)) {\n S = B;\n return;\n }\n\n k = b[h >> 2] | 0;\n l = d + 6 | 0;\n m = 16928 + (k << 2) | 0;\n n = t + 8 | 0;\n o = u + 8 | 0;\n p = v + 8 | 0;\n q = z + 4 | 0;\n i = 0;\n j = d;\n f = -1;\n\n a: while (1) {\n h = (j | 0) % 6 | 0;\n a = y + (h << 4) | 0;\n b[z >> 2] = b[a >> 2];\n b[z + 4 >> 2] = b[a + 4 >> 2];\n b[z + 8 >> 2] = b[a + 8 >> 2];\n b[z + 12 >> 2] = b[a + 12 >> 2];\n a = i;\n i = cb(z, k, 0, 1) | 0;\n\n if ((j | 0) > (d | 0) & (Qb(c) | 0) != 0 ? (a | 0) != 1 ? (b[z >> 2] | 0) != (f | 0) : 0 : 0) {\n Da(y + (((h + 5 | 0) % 6 | 0) << 4) + 4 | 0, A);\n Da(y + (h << 4) + 4 | 0, s);\n C = +(b[m >> 2] | 0);\n e[t >> 3] = C * 3.0;\n e[n >> 3] = 0.0;\n D = C * -1.5;\n e[u >> 3] = D;\n e[o >> 3] = C * 2.598076211353316;\n e[v >> 3] = D;\n e[p >> 3] = C * -2.598076211353316;\n h = b[x >> 2] | 0;\n\n switch (b[17008 + (h * 80 | 0) + (((f | 0) == (h | 0) ? b[z >> 2] | 0 : f) << 2) >> 2] | 0) {\n case 1:\n {\n a = u;\n f = t;\n break;\n }\n\n case 3:\n {\n a = v;\n f = u;\n break;\n }\n\n case 2:\n {\n a = t;\n f = v;\n break;\n }\n\n default:\n {\n a = 8;\n break a;\n }\n }\n\n Fc(A, s, f, a, w);\n\n if (!(Gc(A, w) | 0) ? !(Gc(s, w) | 0) : 0) {\n _a(w, b[x >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n }\n\n if ((j | 0) < (l | 0)) {\n Da(q, A);\n\n _a(A, b[z >> 2] | 0, k, 1, g + 8 + (b[g >> 2] << 4) | 0);\n\n b[g >> 2] = (b[g >> 2] | 0) + 1;\n }\n\n j = j + 1 | 0;\n\n if ((j | 0) >= (r | 0)) {\n a = 3;\n break;\n } else { f = b[z >> 2] | 0; }\n }\n\n if ((a | 0) == 3) {\n S = B;\n return;\n } else if ((a | 0) == 8) { H(22557, 22521, 746, 22602); }\n }\n\n function fb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n j = S;\n S = S + 160 | 0;\n e = j + 80 | 0;\n f = j;\n g = e;\n h = 20336;\n i = g + 72 | 0;\n\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n } while ((g | 0) < (i | 0));\n\n g = f;\n h = 20416;\n i = g + 72 | 0;\n\n do {\n b[g >> 2] = b[h >> 2];\n g = g + 4 | 0;\n h = h + 4 | 0;\n } while ((g | 0) < (i | 0));\n\n i = (Qb(b[c >> 2] | 0) | 0) == 0;\n e = i ? e : f;\n f = a + 4 | 0;\n Ra(f);\n Sa(f);\n\n if (Qb(b[c >> 2] | 0) | 0) {\n La(f);\n b[c >> 2] = (b[c >> 2] | 0) + 1;\n }\n\n b[d >> 2] = b[a >> 2];\n c = d + 4 | 0;\n Ea(f, e, c);\n Ca(c);\n b[d + 16 >> 2] = b[a >> 2];\n c = d + 20 | 0;\n Ea(f, e + 12 | 0, c);\n Ca(c);\n b[d + 32 >> 2] = b[a >> 2];\n c = d + 36 | 0;\n Ea(f, e + 24 | 0, c);\n Ca(c);\n b[d + 48 >> 2] = b[a >> 2];\n c = d + 52 | 0;\n Ea(f, e + 36 | 0, c);\n Ca(c);\n b[d + 64 >> 2] = b[a >> 2];\n c = d + 68 | 0;\n Ea(f, e + 48 | 0, c);\n Ca(c);\n b[d + 80 >> 2] = b[a >> 2];\n d = d + 84 | 0;\n Ea(f, e + 60 | 0, d);\n Ca(d);\n S = j;\n return;\n }\n\n function gb(a) {\n a = +a;\n var b = 0.0;\n b = a < 0.0 ? a + 6.283185307179586 : a;\n return +(!(a >= 6.283185307179586) ? b : b + -6.283185307179586);\n }\n\n function hb(a, b) {\n a = a | 0;\n b = b | 0;\n\n if (!(+q(+(+e[a >> 3] - +e[b >> 3])) < 1.7453292519943298e-11)) {\n b = 0;\n return b | 0;\n }\n\n b = +q(+(+e[a + 8 >> 3] - +e[b + 8 >> 3])) < 1.7453292519943298e-11;\n return b | 0;\n }\n\n function ib(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0,\n g = 0.0;\n f = +e[b >> 3];\n d = +e[a >> 3];\n g = +u(+((f - d) * .5));\n c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n c = g * g + c * (+t(+f) * +t(+d) * c);\n return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 2.0);\n }\n\n function jb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0,\n g = 0.0;\n f = +e[b >> 3];\n d = +e[a >> 3];\n g = +u(+((f - d) * .5));\n c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n c = g * g + c * (+t(+f) * +t(+d) * c);\n return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 2.0 * 6371.007180918475);\n }\n\n function kb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0,\n g = 0.0;\n f = +e[b >> 3];\n d = +e[a >> 3];\n g = +u(+((f - d) * .5));\n c = +u(+((+e[b + 8 >> 3] - +e[a + 8 >> 3]) * .5));\n c = g * g + c * (+t(+f) * +t(+d) * c);\n return +(+z(+ +r(+c), + +r(+(1.0 - c))) * 2.0 * 6371.007180918475 * 1.0e3);\n }\n\n function lb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0,\n g = 0.0,\n h = 0.0;\n g = +e[b >> 3];\n d = +t(+g);\n f = +e[b + 8 >> 3] - +e[a + 8 >> 3];\n h = d * +u(+f);\n c = +e[a >> 3];\n return + +z(+h, +(+u(+g) * +t(+c) - +t(+f) * (d * +u(+c))));\n }\n\n function mb(a, c, d, f) {\n a = a | 0;\n c = +c;\n d = +d;\n f = f | 0;\n var g = 0,\n h = 0.0,\n i = 0.0,\n j = 0.0;\n\n if (d < 1.0e-16) {\n b[f >> 2] = b[a >> 2];\n b[f + 4 >> 2] = b[a + 4 >> 2];\n b[f + 8 >> 2] = b[a + 8 >> 2];\n b[f + 12 >> 2] = b[a + 12 >> 2];\n return;\n }\n\n h = c < 0.0 ? c + 6.283185307179586 : c;\n h = !(c >= 6.283185307179586) ? h : h + -6.283185307179586;\n\n do { if (h < 1.0e-16) {\n c = +e[a >> 3] + d;\n e[f >> 3] = c;\n g = f;\n } else {\n g = +q(+(h + -3.141592653589793)) < 1.0e-16;\n c = +e[a >> 3];\n\n if (g) {\n c = c - d;\n e[f >> 3] = c;\n g = f;\n break;\n }\n\n i = +t(+d);\n d = +u(+d);\n c = i * +u(+c) + +t(+h) * (d * +t(+c));\n c = c > 1.0 ? 1.0 : c;\n c = +x(+(c < -1.0 ? -1.0 : c));\n e[f >> 3] = c;\n\n if (+q(+(c + -1.5707963267948966)) < 1.0e-16) {\n e[f >> 3] = 1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n\n if (+q(+(c + 1.5707963267948966)) < 1.0e-16) {\n e[f >> 3] = -1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n\n j = +t(+c);\n h = d * +u(+h) / j;\n d = +e[a >> 3];\n c = (i - +u(+c) * +u(+d)) / +t(+d) / j;\n i = h > 1.0 ? 1.0 : h;\n c = c > 1.0 ? 1.0 : c;\n c = +e[a + 8 >> 3] + +z(+(i < -1.0 ? -1.0 : i), +(c < -1.0 ? -1.0 : c));\n if (c > 3.141592653589793) { do { c = c + -6.283185307179586; } while (c > 3.141592653589793); }\n if (c < -3.141592653589793) { do { c = c + 6.283185307179586; } while (c < -3.141592653589793); }\n e[f + 8 >> 3] = c;\n return;\n } } while (0);\n\n if (+q(+(c + -1.5707963267948966)) < 1.0e-16) {\n e[g >> 3] = 1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n\n if (+q(+(c + 1.5707963267948966)) < 1.0e-16) {\n e[g >> 3] = -1.5707963267948966;\n e[f + 8 >> 3] = 0.0;\n return;\n }\n\n c = +e[a + 8 >> 3];\n if (c > 3.141592653589793) { do { c = c + -6.283185307179586; } while (c > 3.141592653589793); }\n if (c < -3.141592653589793) { do { c = c + 6.283185307179586; } while (c < -3.141592653589793); }\n e[f + 8 >> 3] = c;\n return;\n }\n\n function nb(a) {\n a = a | 0;\n return + +e[20496 + (a << 3) >> 3];\n }\n\n function ob(a) {\n a = a | 0;\n return + +e[20624 + (a << 3) >> 3];\n }\n\n function pb(a) {\n a = a | 0;\n return + +e[20752 + (a << 3) >> 3];\n }\n\n function qb(a) {\n a = a | 0;\n return + +e[20880 + (a << 3) >> 3];\n }\n\n function rb(a) {\n a = a | 0;\n var c = 0;\n c = 21008 + (a << 3) | 0;\n a = b[c >> 2] | 0;\n F(b[c + 4 >> 2] | 0);\n return a | 0;\n }\n\n function sb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0.0,\n f = 0.0,\n g = 0.0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0.0,\n n = 0.0;\n n = +e[b >> 3];\n l = +e[a >> 3];\n j = +u(+((n - l) * .5));\n g = +e[b + 8 >> 3];\n k = +e[a + 8 >> 3];\n h = +u(+((g - k) * .5));\n i = +t(+l);\n m = +t(+n);\n h = j * j + h * (m * i * h);\n h = +z(+ +r(+h), + +r(+(1.0 - h))) * 2.0;\n j = +e[c >> 3];\n n = +u(+((j - n) * .5));\n d = +e[c + 8 >> 3];\n g = +u(+((d - g) * .5));\n f = +t(+j);\n g = n * n + g * (m * f * g);\n g = +z(+ +r(+g), + +r(+(1.0 - g))) * 2.0;\n j = +u(+((l - j) * .5));\n d = +u(+((k - d) * .5));\n d = j * j + d * (i * f * d);\n d = +z(+ +r(+d), + +r(+(1.0 - d))) * 2.0;\n f = (h + g + d) * .5;\n return +(+y(+ +r(+(+v(+(f * .5)) * +v(+((f - h) * .5)) * +v(+((f - g) * .5)) * +v(+((f - d) * .5))))) * 4.0);\n }\n\n function tb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;\n g = S;\n S = S + 192 | 0;\n e = g + 168 | 0;\n f = g;\n Ub(a, c, e);\n Vb(a, c, f);\n c = b[f >> 2] | 0;\n\n if ((c | 0) <= 0) {\n d = 0.0;\n S = g;\n return +d;\n }\n\n d = +sb(f + 8 | 0, f + 8 + (((c | 0) != 1 & 1) << 4) | 0, e) + 0.0;\n\n if ((c | 0) == 1) {\n S = g;\n return +d;\n }\n\n a = 1;\n\n do {\n h = a;\n a = a + 1 | 0;\n d = d + +sb(f + 8 + (h << 4) | 0, f + 8 + (((a | 0) % (c | 0) | 0) << 4) | 0, e);\n } while ((a | 0) < (c | 0));\n\n S = g;\n return +d;\n }\n\n function ub(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;\n g = S;\n S = S + 192 | 0;\n e = g + 168 | 0;\n f = g;\n Ub(a, c, e);\n Vb(a, c, f);\n c = b[f >> 2] | 0;\n\n if ((c | 0) > 0) {\n d = +sb(f + 8 | 0, f + 8 + (((c | 0) != 1 & 1) << 4) | 0, e) + 0.0;\n\n if ((c | 0) != 1) {\n a = 1;\n\n do {\n h = a;\n a = a + 1 | 0;\n d = d + +sb(f + 8 + (h << 4) | 0, f + 8 + (((a | 0) % (c | 0) | 0) << 4) | 0, e);\n } while ((a | 0) < (c | 0));\n }\n } else { d = 0.0; }\n\n S = g;\n return +(d * 6371.007180918475 * 6371.007180918475);\n }\n\n function vb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;\n g = S;\n S = S + 192 | 0;\n e = g + 168 | 0;\n f = g;\n Ub(a, c, e);\n Vb(a, c, f);\n c = b[f >> 2] | 0;\n\n if ((c | 0) > 0) {\n d = +sb(f + 8 | 0, f + 8 + (((c | 0) != 1 & 1) << 4) | 0, e) + 0.0;\n\n if ((c | 0) != 1) {\n a = 1;\n\n do {\n h = a;\n a = a + 1 | 0;\n d = d + +sb(f + 8 + (h << 4) | 0, f + 8 + (((a | 0) % (c | 0) | 0) << 4) | 0, e);\n } while ((a | 0) < (c | 0));\n }\n } else { d = 0.0; }\n\n S = g;\n return +(d * 6371.007180918475 * 6371.007180918475 * 1.0e3 * 1.0e3);\n }\n\n function wb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n f = 0.0,\n g = 0.0,\n h = 0,\n i = 0,\n j = 0.0,\n k = 0.0,\n l = 0.0;\n i = S;\n S = S + 176 | 0;\n h = i;\n fc(a, c, h);\n a = b[h >> 2] | 0;\n\n if ((a | 0) <= 1) {\n g = 0.0;\n S = i;\n return +g;\n }\n\n c = a + -1 | 0;\n a = 0;\n d = 0.0;\n f = +e[h + 8 >> 3];\n g = +e[h + 16 >> 3];\n\n do {\n a = a + 1 | 0;\n k = f;\n f = +e[h + 8 + (a << 4) >> 3];\n l = +u(+((f - k) * .5));\n j = g;\n g = +e[h + 8 + (a << 4) + 8 >> 3];\n j = +u(+((g - j) * .5));\n j = l * l + j * (+t(+f) * +t(+k) * j);\n d = d + +z(+ +r(+j), + +r(+(1.0 - j))) * 2.0;\n } while ((a | 0) < (c | 0));\n\n S = i;\n return +d;\n }\n\n function xb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n f = 0.0,\n g = 0.0,\n h = 0,\n i = 0,\n j = 0.0,\n k = 0.0,\n l = 0.0;\n i = S;\n S = S + 176 | 0;\n h = i;\n fc(a, c, h);\n a = b[h >> 2] | 0;\n\n if ((a | 0) <= 1) {\n g = 0.0;\n S = i;\n return +g;\n }\n\n c = a + -1 | 0;\n a = 0;\n d = 0.0;\n f = +e[h + 8 >> 3];\n g = +e[h + 16 >> 3];\n\n do {\n a = a + 1 | 0;\n k = f;\n f = +e[h + 8 + (a << 4) >> 3];\n l = +u(+((f - k) * .5));\n j = g;\n g = +e[h + 8 + (a << 4) + 8 >> 3];\n j = +u(+((g - j) * .5));\n j = l * l + j * (+t(+k) * +t(+f) * j);\n d = d + +z(+ +r(+j), + +r(+(1.0 - j))) * 2.0;\n } while ((a | 0) != (c | 0));\n\n l = d * 6371.007180918475;\n S = i;\n return +l;\n }\n\n function yb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n f = 0.0,\n g = 0.0,\n h = 0,\n i = 0,\n j = 0.0,\n k = 0.0,\n l = 0.0;\n i = S;\n S = S + 176 | 0;\n h = i;\n fc(a, c, h);\n a = b[h >> 2] | 0;\n\n if ((a | 0) <= 1) {\n g = 0.0;\n S = i;\n return +g;\n }\n\n c = a + -1 | 0;\n a = 0;\n d = 0.0;\n f = +e[h + 8 >> 3];\n g = +e[h + 16 >> 3];\n\n do {\n a = a + 1 | 0;\n k = f;\n f = +e[h + 8 + (a << 4) >> 3];\n l = +u(+((f - k) * .5));\n j = g;\n g = +e[h + 8 + (a << 4) + 8 >> 3];\n j = +u(+((g - j) * .5));\n j = l * l + j * (+t(+k) * +t(+f) * j);\n d = d + +z(+ +r(+j), + +r(+(1.0 - j))) * 2.0;\n } while ((a | 0) != (c | 0));\n\n l = d * 6371.007180918475 * 1.0e3;\n S = i;\n return +l;\n }\n\n function zb(a, b) {\n a = a | 0;\n b = b | 0;\n b = bd(a | 0, b | 0, 45) | 0;\n G() | 0;\n return b & 127 | 0;\n }\n\n function Ab(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;\n\n if (!(0 == 0 & (b & -16777216 | 0) == 134217728)) {\n b = 0;\n return b | 0;\n }\n\n g = bd(a | 0, b | 0, 45) | 0;\n G() | 0;\n g = g & 127;\n\n if (g >>> 0 > 121) {\n b = 0;\n return b | 0;\n }\n\n c = bd(a | 0, b | 0, 52) | 0;\n G() | 0;\n c = c & 15;\n\n do { if (c | 0) {\n e = 1;\n d = 0;\n\n while (1) {\n f = bd(a | 0, b | 0, (15 - e | 0) * 3 | 0) | 0;\n G() | 0;\n f = f & 7;\n if ((f | 0) != 0 & (d ^ 1)) { if ((f | 0) == 1 & (la(g) | 0) != 0) {\n h = 0;\n d = 13;\n break;\n } else { d = 1; } }\n\n if ((f | 0) == 7) {\n h = 0;\n d = 13;\n break;\n }\n\n if (e >>> 0 < c >>> 0) { e = e + 1 | 0; }else {\n d = 9;\n break;\n }\n }\n\n if ((d | 0) == 9) {\n if ((c | 0) == 15) { h = 1; }else { break; }\n return h | 0;\n } else if ((d | 0) == 13) { return h | 0; }\n } } while (0);\n\n while (1) {\n h = bd(a | 0, b | 0, (14 - c | 0) * 3 | 0) | 0;\n G() | 0;\n\n if (!((h & 7 | 0) == 7 & 0 == 0)) {\n h = 0;\n d = 13;\n break;\n }\n\n if (c >>> 0 < 14) { c = c + 1 | 0; }else {\n h = 1;\n d = 13;\n break;\n }\n }\n\n if ((d | 0) == 13) { return h | 0; }\n return 0;\n }\n\n function Bb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n d = bd(a | 0, b | 0, 52) | 0;\n G() | 0;\n d = d & 15;\n\n if ((d | 0) >= (c | 0)) {\n if ((d | 0) != (c | 0)) { if (c >>> 0 <= 15) {\n e = cd(c | 0, 0, 52) | 0;\n a = e | a;\n b = G() | 0 | b & -15728641;\n if ((d | 0) > (c | 0)) { do {\n e = cd(7, 0, (14 - c | 0) * 3 | 0) | 0;\n c = c + 1 | 0;\n a = e | a;\n b = G() | 0 | b;\n } while ((c | 0) < (d | 0)); }\n } else {\n b = 0;\n a = 0;\n } }\n } else {\n b = 0;\n a = 0;\n }\n\n F(b | 0);\n return a | 0;\n }\n\n function Cb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n a = bd(a | 0, b | 0, 52) | 0;\n G() | 0;\n a = a & 15;\n\n if (!((c | 0) < 16 & (a | 0) <= (c | 0))) {\n c = 0;\n return c | 0;\n }\n\n c = sc(7, c - a | 0) | 0;\n return c | 0;\n }\n\n function Db(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0;\n h = bd(a | 0, c | 0, 52) | 0;\n G() | 0;\n h = h & 15;\n if (!((d | 0) < 16 & (h | 0) <= (d | 0))) { return; }\n\n if ((h | 0) == (d | 0)) {\n d = e;\n b[d >> 2] = a;\n b[d + 4 >> 2] = c;\n return;\n }\n\n j = sc(7, d - h | 0) | 0;\n k = (j | 0) / 7 | 0;\n i = bd(a | 0, c | 0, 45) | 0;\n G() | 0;\n if (!(la(i & 127) | 0)) { g = 0; }else {\n a: do { if (!h) { f = 0; }else {\n g = 1;\n\n while (1) {\n f = bd(a | 0, c | 0, (15 - g | 0) * 3 | 0) | 0;\n G() | 0;\n f = f & 7;\n if (f | 0) { break a; }\n if (g >>> 0 < h >>> 0) { g = g + 1 | 0; }else {\n f = 0;\n break;\n }\n }\n } } while (0);\n\n g = (f | 0) == 0;\n }\n l = cd(h + 1 | 0, 0, 52) | 0;\n f = G() | 0 | c & -15728641;\n i = (14 - h | 0) * 3 | 0;\n c = cd(7, 0, i | 0) | 0;\n c = (l | a) & ~c;\n h = f & ~(G() | 0);\n Db(c, h, d, e);\n f = e + (k << 3) | 0;\n\n if (!g) {\n l = cd(1, 0, i | 0) | 0;\n Db(l | c, G() | 0 | h, d, f);\n l = f + (k << 3) | 0;\n j = cd(2, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = cd(3, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = cd(4, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = cd(5, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l);\n j = cd(6, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l + (k << 3) | 0);\n return;\n }\n\n g = f + (k << 3) | 0;\n\n if ((j | 0) > 6) {\n j = f + 8 | 0;\n l = (g >>> 0 > j >>> 0 ? g : j) + -1 + (0 - f) | 0;\n gd(f | 0, 0, l + 8 & -8 | 0) | 0;\n f = j + (l >>> 3 << 3) | 0;\n }\n\n l = cd(2, 0, i | 0) | 0;\n Db(l | c, G() | 0 | h, d, f);\n l = f + (k << 3) | 0;\n j = cd(3, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = cd(4, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l);\n l = l + (k << 3) | 0;\n j = cd(5, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l);\n j = cd(6, 0, i | 0) | 0;\n Db(j | c, G() | 0 | h, d, l + (k << 3) | 0);\n return;\n }\n\n function Eb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0;\n e = bd(a | 0, b | 0, 45) | 0;\n G() | 0;\n\n if (!(la(e & 127) | 0)) {\n e = 0;\n return e | 0;\n }\n\n e = bd(a | 0, b | 0, 52) | 0;\n G() | 0;\n e = e & 15;\n\n a: do { if (!e) { c = 0; }else {\n d = 1;\n\n while (1) {\n c = bd(a | 0, b | 0, (15 - d | 0) * 3 | 0) | 0;\n G() | 0;\n c = c & 7;\n if (c | 0) { break a; }\n if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else {\n c = 0;\n break;\n }\n }\n } } while (0);\n\n e = (c | 0) == 0 & 1;\n return e | 0;\n }\n\n function Fb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n d = bd(a | 0, b | 0, 52) | 0;\n G() | 0;\n d = d & 15;\n\n if ((c | 0) < 16 & (d | 0) <= (c | 0)) {\n if ((d | 0) != (c | 0)) {\n e = cd(c | 0, 0, 52) | 0;\n a = e | a;\n b = G() | 0 | b & -15728641;\n if ((d | 0) < (c | 0)) { do {\n e = cd(7, 0, (14 - d | 0) * 3 | 0) | 0;\n d = d + 1 | 0;\n a = a & ~e;\n b = b & ~(G() | 0);\n } while ((d | 0) < (c | 0)); }\n }\n } else {\n b = 0;\n a = 0;\n }\n\n F(b | 0);\n return a | 0;\n }\n\n function Gb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0;\n\n if (!d) {\n y = 0;\n return y | 0;\n }\n\n f = a;\n e = b[f >> 2] | 0;\n f = b[f + 4 >> 2] | 0;\n\n if (0 == 0 & (f & 15728640 | 0) == 0) {\n if ((d | 0) <= 0) {\n y = 0;\n return y | 0;\n }\n\n y = c;\n b[y >> 2] = e;\n b[y + 4 >> 2] = f;\n\n if ((d | 0) == 1) {\n y = 0;\n return y | 0;\n }\n\n e = 1;\n\n do {\n w = a + (e << 3) | 0;\n x = b[w + 4 >> 2] | 0;\n y = c + (e << 3) | 0;\n b[y >> 2] = b[w >> 2];\n b[y + 4 >> 2] = x;\n e = e + 1 | 0;\n } while ((e | 0) != (d | 0));\n\n e = 0;\n return e | 0;\n }\n\n w = d << 3;\n x = Vc(w) | 0;\n\n if (!x) {\n y = -3;\n return y | 0;\n }\n\n fd(x | 0, a | 0, w | 0) | 0;\n v = Xc(d, 8) | 0;\n\n if (!v) {\n Wc(x);\n y = -3;\n return y | 0;\n }\n\n e = d;\n\n a: while (1) {\n h = x;\n l = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n t = bd(l | 0, h | 0, 52) | 0;\n G() | 0;\n t = t & 15;\n u = t + -1 | 0;\n s = (e | 0) > 0;\n\n b: do { if (s) {\n r = ((e | 0) < 0) << 31 >> 31;\n p = cd(u | 0, 0, 52) | 0;\n q = G() | 0;\n\n if (u >>> 0 > 15) {\n f = 0;\n a = l;\n d = h;\n\n while (1) {\n if (!((a | 0) == 0 & (d | 0) == 0)) {\n g = bd(a | 0, d | 0, 52) | 0;\n G() | 0;\n g = g & 15;\n i = (g | 0) < (u | 0);\n g = (g | 0) == (u | 0);\n k = i ? 0 : g ? a : 0;\n a = i ? 0 : g ? d : 0;\n d = ad(k | 0, a | 0, e | 0, r | 0) | 0;\n G() | 0;\n g = v + (d << 3) | 0;\n i = g;\n j = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n if ((j | 0) == 0 & (i | 0) == 0) { d = k; }else {\n p = 0;\n o = d;\n n = i;\n d = k;\n\n while (1) {\n if ((p | 0) > (e | 0)) {\n y = 41;\n break a;\n }\n\n if ((j | 0) == (d | 0) & (n & -117440513 | 0) == (a | 0)) {\n k = bd(j | 0, n | 0, 56) | 0;\n G() | 0;\n k = k & 7;\n m = k + 1 | 0;\n q = bd(j | 0, n | 0, 45) | 0;\n G() | 0;\n\n c: do { if (!(la(q & 127) | 0)) { i = 7; }else {\n j = bd(j | 0, n | 0, 52) | 0;\n G() | 0;\n j = j & 15;\n\n if (!j) {\n i = 6;\n break;\n }\n\n i = 1;\n\n while (1) {\n q = cd(7, 0, (15 - i | 0) * 3 | 0) | 0;\n\n if (!((q & d | 0) == 0 & ((G() | 0) & a | 0) == 0)) {\n i = 7;\n break c;\n }\n\n if (i >>> 0 < j >>> 0) { i = i + 1 | 0; }else {\n i = 6;\n break;\n }\n }\n } } while (0);\n\n if ((k + 2 | 0) >>> 0 > i >>> 0) {\n y = 51;\n break a;\n }\n\n q = cd(m | 0, 0, 56) | 0;\n a = G() | 0 | a & -117440513;\n i = g;\n b[i >> 2] = 0;\n b[i + 4 >> 2] = 0;\n i = o;\n d = q | d;\n } else { i = (o + 1 | 0) % (e | 0) | 0; }\n\n g = v + (i << 3) | 0;\n n = g;\n j = b[n >> 2] | 0;\n n = b[n + 4 >> 2] | 0;\n if ((j | 0) == 0 & (n | 0) == 0) { break; }else {\n p = p + 1 | 0;\n o = i;\n }\n }\n }\n q = g;\n b[q >> 2] = d;\n b[q + 4 >> 2] = a;\n }\n\n f = f + 1 | 0;\n if ((f | 0) >= (e | 0)) { break b; }\n d = x + (f << 3) | 0;\n a = b[d >> 2] | 0;\n d = b[d + 4 >> 2] | 0;\n }\n }\n\n f = 0;\n a = l;\n d = h;\n\n while (1) {\n if (!((a | 0) == 0 & (d | 0) == 0)) {\n i = bd(a | 0, d | 0, 52) | 0;\n G() | 0;\n i = i & 15;\n\n if ((i | 0) >= (u | 0)) {\n if ((i | 0) != (u | 0)) {\n a = a | p;\n d = d & -15728641 | q;\n\n if (i >>> 0 >= t >>> 0) {\n g = u;\n\n do {\n o = cd(7, 0, (14 - g | 0) * 3 | 0) | 0;\n g = g + 1 | 0;\n a = o | a;\n d = G() | 0 | d;\n } while (g >>> 0 < i >>> 0);\n }\n }\n } else {\n a = 0;\n d = 0;\n }\n\n i = ad(a | 0, d | 0, e | 0, r | 0) | 0;\n G() | 0;\n g = v + (i << 3) | 0;\n j = g;\n k = b[j >> 2] | 0;\n j = b[j + 4 >> 2] | 0;\n\n if (!((k | 0) == 0 & (j | 0) == 0)) {\n o = 0;\n\n while (1) {\n if ((o | 0) > (e | 0)) {\n y = 41;\n break a;\n }\n\n if ((k | 0) == (a | 0) & (j & -117440513 | 0) == (d | 0)) {\n m = bd(k | 0, j | 0, 56) | 0;\n G() | 0;\n m = m & 7;\n n = m + 1 | 0;\n z = bd(k | 0, j | 0, 45) | 0;\n G() | 0;\n\n d: do { if (!(la(z & 127) | 0)) { j = 7; }else {\n k = bd(k | 0, j | 0, 52) | 0;\n G() | 0;\n k = k & 15;\n\n if (!k) {\n j = 6;\n break;\n }\n\n j = 1;\n\n while (1) {\n z = cd(7, 0, (15 - j | 0) * 3 | 0) | 0;\n\n if (!((z & a | 0) == 0 & ((G() | 0) & d | 0) == 0)) {\n j = 7;\n break d;\n }\n\n if (j >>> 0 < k >>> 0) { j = j + 1 | 0; }else {\n j = 6;\n break;\n }\n }\n } } while (0);\n\n if ((m + 2 | 0) >>> 0 > j >>> 0) {\n y = 51;\n break a;\n }\n\n z = cd(n | 0, 0, 56) | 0;\n d = G() | 0 | d & -117440513;\n n = g;\n b[n >> 2] = 0;\n b[n + 4 >> 2] = 0;\n a = z | a;\n } else { i = (i + 1 | 0) % (e | 0) | 0; }\n\n g = v + (i << 3) | 0;\n j = g;\n k = b[j >> 2] | 0;\n j = b[j + 4 >> 2] | 0;\n if ((k | 0) == 0 & (j | 0) == 0) { break; }else { o = o + 1 | 0; }\n }\n }\n\n z = g;\n b[z >> 2] = a;\n b[z + 4 >> 2] = d;\n }\n\n f = f + 1 | 0;\n if ((f | 0) >= (e | 0)) { break b; }\n d = x + (f << 3) | 0;\n a = b[d >> 2] | 0;\n d = b[d + 4 >> 2] | 0;\n }\n } } while (0);\n\n if ((e + 5 | 0) >>> 0 < 11) {\n y = 99;\n break;\n }\n\n q = Xc((e | 0) / 6 | 0, 8) | 0;\n\n if (!q) {\n y = 58;\n break;\n }\n\n e: do { if (s) {\n o = 0;\n n = 0;\n\n do {\n i = v + (o << 3) | 0;\n a = i;\n f = b[a >> 2] | 0;\n a = b[a + 4 >> 2] | 0;\n\n if (!((f | 0) == 0 & (a | 0) == 0)) {\n j = bd(f | 0, a | 0, 56) | 0;\n G() | 0;\n j = j & 7;\n d = j + 1 | 0;\n k = a & -117440513;\n z = bd(f | 0, a | 0, 45) | 0;\n G() | 0;\n\n f: do { if (la(z & 127) | 0) {\n m = bd(f | 0, a | 0, 52) | 0;\n G() | 0;\n m = m & 15;\n\n if (m | 0) {\n g = 1;\n\n while (1) {\n z = cd(7, 0, (15 - g | 0) * 3 | 0) | 0;\n if (!((f & z | 0) == 0 & (k & (G() | 0) | 0) == 0)) { break f; }\n if (g >>> 0 < m >>> 0) { g = g + 1 | 0; }else { break; }\n }\n }\n\n a = cd(d | 0, 0, 56) | 0;\n f = a | f;\n a = G() | 0 | k;\n d = i;\n b[d >> 2] = f;\n b[d + 4 >> 2] = a;\n d = j + 2 | 0;\n } } while (0);\n\n if ((d | 0) == 7) {\n z = q + (n << 3) | 0;\n b[z >> 2] = f;\n b[z + 4 >> 2] = a & -117440513;\n n = n + 1 | 0;\n }\n }\n\n o = o + 1 | 0;\n } while ((o | 0) != (e | 0));\n\n if (s) {\n p = ((e | 0) < 0) << 31 >> 31;\n m = cd(u | 0, 0, 52) | 0;\n o = G() | 0;\n\n if (u >>> 0 > 15) {\n a = 0;\n f = 0;\n\n while (1) {\n do { if (!((l | 0) == 0 & (h | 0) == 0)) {\n j = bd(l | 0, h | 0, 52) | 0;\n G() | 0;\n j = j & 15;\n g = (j | 0) < (u | 0);\n j = (j | 0) == (u | 0);\n i = g ? 0 : j ? l : 0;\n j = g ? 0 : j ? h : 0;\n g = ad(i | 0, j | 0, e | 0, p | 0) | 0;\n G() | 0;\n d = 0;\n\n while (1) {\n if ((d | 0) > (e | 0)) {\n y = 98;\n break a;\n }\n\n z = v + (g << 3) | 0;\n k = b[z + 4 >> 2] | 0;\n\n if ((k & -117440513 | 0) == (j | 0) ? (b[z >> 2] | 0) == (i | 0) : 0) {\n y = 70;\n break;\n }\n\n g = (g + 1 | 0) % (e | 0) | 0;\n z = v + (g << 3) | 0;\n if ((b[z >> 2] | 0) == (i | 0) ? (b[z + 4 >> 2] | 0) == (j | 0) : 0) { break; }else { d = d + 1 | 0; }\n }\n\n if ((y | 0) == 70 ? (y = 0, 0 == 0 & (k & 117440512 | 0) == 100663296) : 0) { break; }\n z = c + (f << 3) | 0;\n b[z >> 2] = l;\n b[z + 4 >> 2] = h;\n f = f + 1 | 0;\n } } while (0);\n\n a = a + 1 | 0;\n\n if ((a | 0) >= (e | 0)) {\n e = n;\n break e;\n }\n\n h = x + (a << 3) | 0;\n l = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n }\n }\n\n a = 0;\n f = 0;\n\n while (1) {\n do { if (!((l | 0) == 0 & (h | 0) == 0)) {\n j = bd(l | 0, h | 0, 52) | 0;\n G() | 0;\n j = j & 15;\n if ((j | 0) >= (u | 0)) {\n if ((j | 0) != (u | 0)) {\n d = l | m;\n g = h & -15728641 | o;\n if (j >>> 0 < t >>> 0) { j = g; }else {\n i = u;\n\n do {\n z = cd(7, 0, (14 - i | 0) * 3 | 0) | 0;\n i = i + 1 | 0;\n d = z | d;\n g = G() | 0 | g;\n } while (i >>> 0 < j >>> 0);\n\n j = g;\n }\n } else {\n d = l;\n j = h;\n }\n } else {\n d = 0;\n j = 0;\n }\n i = ad(d | 0, j | 0, e | 0, p | 0) | 0;\n G() | 0;\n g = 0;\n\n while (1) {\n if ((g | 0) > (e | 0)) {\n y = 98;\n break a;\n }\n\n z = v + (i << 3) | 0;\n k = b[z + 4 >> 2] | 0;\n\n if ((k & -117440513 | 0) == (j | 0) ? (b[z >> 2] | 0) == (d | 0) : 0) {\n y = 93;\n break;\n }\n\n i = (i + 1 | 0) % (e | 0) | 0;\n z = v + (i << 3) | 0;\n if ((b[z >> 2] | 0) == (d | 0) ? (b[z + 4 >> 2] | 0) == (j | 0) : 0) { break; }else { g = g + 1 | 0; }\n }\n\n if ((y | 0) == 93 ? (y = 0, 0 == 0 & (k & 117440512 | 0) == 100663296) : 0) { break; }\n z = c + (f << 3) | 0;\n b[z >> 2] = l;\n b[z + 4 >> 2] = h;\n f = f + 1 | 0;\n } } while (0);\n\n a = a + 1 | 0;\n\n if ((a | 0) >= (e | 0)) {\n e = n;\n break e;\n }\n\n h = x + (a << 3) | 0;\n l = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n }\n } else {\n f = 0;\n e = n;\n }\n } else {\n f = 0;\n e = 0;\n } } while (0);\n\n gd(v | 0, 0, w | 0) | 0;\n fd(x | 0, q | 0, e << 3 | 0) | 0;\n Wc(q);\n if (!e) { break; }else { c = c + (f << 3) | 0; }\n }\n\n if ((y | 0) == 41) {\n Wc(x);\n Wc(v);\n z = -1;\n return z | 0;\n } else if ((y | 0) == 51) {\n Wc(x);\n Wc(v);\n z = -2;\n return z | 0;\n } else if ((y | 0) == 58) {\n Wc(x);\n Wc(v);\n z = -3;\n return z | 0;\n } else if ((y | 0) == 98) {\n Wc(q);\n Wc(x);\n Wc(v);\n z = -1;\n return z | 0;\n } else if ((y | 0) == 99) { fd(c | 0, x | 0, e << 3 | 0) | 0; }\n\n Wc(x);\n Wc(v);\n z = 0;\n return z | 0;\n }\n\n function Hb(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0;\n\n if ((c | 0) <= 0) {\n f = 0;\n return f | 0;\n }\n\n if ((f | 0) >= 16) {\n g = 0;\n\n while (1) {\n l = a + (g << 3) | 0;\n\n if (!((b[l >> 2] | 0) == 0 & (b[l + 4 >> 2] | 0) == 0)) {\n g = 14;\n break;\n }\n\n g = g + 1 | 0;\n\n if ((g | 0) >= (c | 0)) {\n h = 0;\n g = 16;\n break;\n }\n }\n\n if ((g | 0) == 14) { return ((e | 0) > 0 ? -2 : -1) | 0; }else if ((g | 0) == 16) { return h | 0; }\n }\n\n g = 0;\n l = 0;\n\n a: while (1) {\n k = a + (l << 3) | 0;\n i = k;\n h = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n\n do { if (!((h | 0) == 0 & (i | 0) == 0)) {\n if ((g | 0) >= (e | 0)) {\n h = -1;\n g = 16;\n break a;\n }\n\n j = bd(h | 0, i | 0, 52) | 0;\n G() | 0;\n j = j & 15;\n\n if ((j | 0) > (f | 0)) {\n h = -2;\n g = 16;\n break a;\n }\n\n if ((j | 0) == (f | 0)) {\n k = d + (g << 3) | 0;\n b[k >> 2] = h;\n b[k + 4 >> 2] = i;\n g = g + 1 | 0;\n break;\n }\n\n h = (sc(7, f - j | 0) | 0) + g | 0;\n\n if ((h | 0) > (e | 0)) {\n h = -1;\n g = 16;\n break a;\n }\n\n Db(b[k >> 2] | 0, b[k + 4 >> 2] | 0, f, d + (g << 3) | 0);\n g = h;\n } } while (0);\n\n l = l + 1 | 0;\n\n if ((l | 0) >= (c | 0)) {\n h = 0;\n g = 16;\n break;\n }\n }\n\n if ((g | 0) == 16) { return h | 0; }\n return 0;\n }\n\n function Ib(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0;\n\n if ((c | 0) <= 0) {\n d = 0;\n return d | 0;\n }\n\n if ((d | 0) >= 16) {\n e = 0;\n\n while (1) {\n h = a + (e << 3) | 0;\n\n if (!((b[h >> 2] | 0) == 0 & (b[h + 4 >> 2] | 0) == 0)) {\n e = -1;\n f = 13;\n break;\n }\n\n e = e + 1 | 0;\n\n if ((e | 0) >= (c | 0)) {\n e = 0;\n f = 13;\n break;\n }\n }\n\n if ((f | 0) == 13) { return e | 0; }\n }\n\n e = 0;\n h = 0;\n\n a: while (1) {\n f = a + (h << 3) | 0;\n g = b[f >> 2] | 0;\n f = b[f + 4 >> 2] | 0;\n\n do { if (!((g | 0) == 0 & (f | 0) == 0)) {\n f = bd(g | 0, f | 0, 52) | 0;\n G() | 0;\n f = f & 15;\n\n if ((f | 0) > (d | 0)) {\n e = -1;\n f = 13;\n break a;\n }\n\n if ((f | 0) == (d | 0)) {\n e = e + 1 | 0;\n break;\n } else {\n e = (sc(7, d - f | 0) | 0) + e | 0;\n break;\n }\n } } while (0);\n\n h = h + 1 | 0;\n\n if ((h | 0) >= (c | 0)) {\n f = 13;\n break;\n }\n }\n\n if ((f | 0) == 13) { return e | 0; }\n return 0;\n }\n\n function Jb(a, b) {\n a = a | 0;\n b = b | 0;\n b = bd(a | 0, b | 0, 52) | 0;\n G() | 0;\n return b & 1 | 0;\n }\n\n function Kb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0;\n e = bd(a | 0, b | 0, 52) | 0;\n G() | 0;\n e = e & 15;\n\n if (!e) {\n e = 0;\n return e | 0;\n }\n\n d = 1;\n\n while (1) {\n c = bd(a | 0, b | 0, (15 - d | 0) * 3 | 0) | 0;\n G() | 0;\n c = c & 7;\n\n if (c | 0) {\n d = 5;\n break;\n }\n\n if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else {\n c = 0;\n d = 5;\n break;\n }\n }\n\n if ((d | 0) == 5) { return c | 0; }\n return 0;\n }\n\n function Lb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n i = bd(a | 0, b | 0, 52) | 0;\n G() | 0;\n i = i & 15;\n\n if (!i) {\n h = b;\n i = a;\n F(h | 0);\n return i | 0;\n }\n\n h = 1;\n c = 0;\n\n while (1) {\n f = (15 - h | 0) * 3 | 0;\n d = cd(7, 0, f | 0) | 0;\n e = G() | 0;\n g = bd(a | 0, b | 0, f | 0) | 0;\n G() | 0;\n f = cd(Pa(g & 7) | 0, 0, f | 0) | 0;\n g = G() | 0;\n a = f | a & ~d;\n b = g | b & ~e;\n\n a: do { if (!c) { if (!((f & d | 0) == 0 & (g & e | 0) == 0)) {\n d = bd(a | 0, b | 0, 52) | 0;\n G() | 0;\n d = d & 15;\n if (!d) { c = 1; }else {\n c = 1;\n\n b: while (1) {\n g = bd(a | 0, b | 0, (15 - c | 0) * 3 | 0) | 0;\n G() | 0;\n\n switch (g & 7) {\n case 1:\n break b;\n\n case 0:\n break;\n\n default:\n {\n c = 1;\n break a;\n }\n }\n\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n c = 1;\n break a;\n }\n }\n\n c = 1;\n\n while (1) {\n g = (15 - c | 0) * 3 | 0;\n e = bd(a | 0, b | 0, g | 0) | 0;\n G() | 0;\n f = cd(7, 0, g | 0) | 0;\n b = b & ~(G() | 0);\n g = cd(Pa(e & 7) | 0, 0, g | 0) | 0;\n a = a & ~f | g;\n b = b | (G() | 0);\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n c = 1;\n break;\n }\n }\n }\n } else { c = 0; } } } while (0);\n\n if (h >>> 0 < i >>> 0) { h = h + 1 | 0; }else { break; }\n }\n\n F(b | 0);\n return a | 0;\n }\n\n function Mb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0;\n d = bd(a | 0, b | 0, 52) | 0;\n G() | 0;\n d = d & 15;\n\n if (!d) {\n c = b;\n d = a;\n F(c | 0);\n return d | 0;\n }\n\n c = 1;\n\n while (1) {\n f = (15 - c | 0) * 3 | 0;\n g = bd(a | 0, b | 0, f | 0) | 0;\n G() | 0;\n e = cd(7, 0, f | 0) | 0;\n b = b & ~(G() | 0);\n f = cd(Pa(g & 7) | 0, 0, f | 0) | 0;\n a = f | a & ~e;\n b = G() | 0 | b;\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else { break; }\n }\n\n F(b | 0);\n return a | 0;\n }\n\n function Nb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n i = bd(a | 0, b | 0, 52) | 0;\n G() | 0;\n i = i & 15;\n\n if (!i) {\n h = b;\n i = a;\n F(h | 0);\n return i | 0;\n }\n\n h = 1;\n c = 0;\n\n while (1) {\n f = (15 - h | 0) * 3 | 0;\n d = cd(7, 0, f | 0) | 0;\n e = G() | 0;\n g = bd(a | 0, b | 0, f | 0) | 0;\n G() | 0;\n f = cd(Qa(g & 7) | 0, 0, f | 0) | 0;\n g = G() | 0;\n a = f | a & ~d;\n b = g | b & ~e;\n\n a: do { if (!c) { if (!((f & d | 0) == 0 & (g & e | 0) == 0)) {\n d = bd(a | 0, b | 0, 52) | 0;\n G() | 0;\n d = d & 15;\n if (!d) { c = 1; }else {\n c = 1;\n\n b: while (1) {\n g = bd(a | 0, b | 0, (15 - c | 0) * 3 | 0) | 0;\n G() | 0;\n\n switch (g & 7) {\n case 1:\n break b;\n\n case 0:\n break;\n\n default:\n {\n c = 1;\n break a;\n }\n }\n\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n c = 1;\n break a;\n }\n }\n\n c = 1;\n\n while (1) {\n e = (15 - c | 0) * 3 | 0;\n f = cd(7, 0, e | 0) | 0;\n g = b & ~(G() | 0);\n b = bd(a | 0, b | 0, e | 0) | 0;\n G() | 0;\n b = cd(Qa(b & 7) | 0, 0, e | 0) | 0;\n a = a & ~f | b;\n b = g | (G() | 0);\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n c = 1;\n break;\n }\n }\n }\n } else { c = 0; } } } while (0);\n\n if (h >>> 0 < i >>> 0) { h = h + 1 | 0; }else { break; }\n }\n\n F(b | 0);\n return a | 0;\n }\n\n function Ob(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0;\n d = bd(a | 0, b | 0, 52) | 0;\n G() | 0;\n d = d & 15;\n\n if (!d) {\n c = b;\n d = a;\n F(c | 0);\n return d | 0;\n }\n\n c = 1;\n\n while (1) {\n g = (15 - c | 0) * 3 | 0;\n f = cd(7, 0, g | 0) | 0;\n e = b & ~(G() | 0);\n b = bd(a | 0, b | 0, g | 0) | 0;\n G() | 0;\n b = cd(Qa(b & 7) | 0, 0, g | 0) | 0;\n a = b | a & ~f;\n b = G() | 0 | e;\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else { break; }\n }\n\n F(b | 0);\n return a | 0;\n }\n\n function Pb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0;\n j = S;\n S = S + 64 | 0;\n i = j + 40 | 0;\n e = j + 24 | 0;\n f = j + 12 | 0;\n g = j;\n cd(c | 0, 0, 52) | 0;\n d = G() | 0 | 134225919;\n\n if (!c) {\n if ((b[a + 4 >> 2] | 0) > 2) {\n h = 0;\n i = 0;\n F(h | 0);\n S = j;\n return i | 0;\n }\n\n if ((b[a + 8 >> 2] | 0) > 2) {\n h = 0;\n i = 0;\n F(h | 0);\n S = j;\n return i | 0;\n }\n\n if ((b[a + 12 >> 2] | 0) > 2) {\n h = 0;\n i = 0;\n F(h | 0);\n S = j;\n return i | 0;\n }\n\n cd(na(a) | 0, 0, 45) | 0;\n h = G() | 0 | d;\n i = -1;\n F(h | 0);\n S = j;\n return i | 0;\n }\n b[i >> 2] = b[a >> 2];\n b[i + 4 >> 2] = b[a + 4 >> 2];\n b[i + 8 >> 2] = b[a + 8 >> 2];\n b[i + 12 >> 2] = b[a + 12 >> 2];\n h = i + 4 | 0;\n\n if ((c | 0) > 0) {\n a = -1;\n\n while (1) {\n b[e >> 2] = b[h >> 2];\n b[e + 4 >> 2] = b[h + 4 >> 2];\n b[e + 8 >> 2] = b[h + 8 >> 2];\n\n if (!(c & 1)) {\n Ja(h);\n b[f >> 2] = b[h >> 2];\n b[f + 4 >> 2] = b[h + 4 >> 2];\n b[f + 8 >> 2] = b[h + 8 >> 2];\n La(f);\n } else {\n Ia(h);\n b[f >> 2] = b[h >> 2];\n b[f + 4 >> 2] = b[h + 4 >> 2];\n b[f + 8 >> 2] = b[h + 8 >> 2];\n Ka(f);\n }\n\n Fa(e, f, g);\n Ca(g);\n l = (15 - c | 0) * 3 | 0;\n k = cd(7, 0, l | 0) | 0;\n d = d & ~(G() | 0);\n l = cd(Ha(g) | 0, 0, l | 0) | 0;\n a = l | a & ~k;\n d = G() | 0 | d;\n if ((c | 0) > 1) { c = c + -1 | 0; }else { break; }\n }\n } else { a = -1; }\n\n a: do { if (((b[h >> 2] | 0) <= 2 ? (b[i + 8 >> 2] | 0) <= 2 : 0) ? (b[i + 12 >> 2] | 0) <= 2 : 0) {\n e = na(i) | 0;\n c = cd(e | 0, 0, 45) | 0;\n c = c | a;\n a = G() | 0 | d & -1040385;\n g = oa(i) | 0;\n\n if (!(la(e) | 0)) {\n if ((g | 0) <= 0) { break; }\n f = 0;\n\n while (1) {\n e = bd(c | 0, a | 0, 52) | 0;\n G() | 0;\n e = e & 15;\n\n if (e) {\n d = 1;\n\n while (1) {\n l = (15 - d | 0) * 3 | 0;\n i = bd(c | 0, a | 0, l | 0) | 0;\n G() | 0;\n k = cd(7, 0, l | 0) | 0;\n a = a & ~(G() | 0);\n l = cd(Pa(i & 7) | 0, 0, l | 0) | 0;\n c = c & ~k | l;\n a = a | (G() | 0);\n if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else { break; }\n }\n }\n\n f = f + 1 | 0;\n if ((f | 0) == (g | 0)) { break a; }\n }\n }\n\n f = bd(c | 0, a | 0, 52) | 0;\n G() | 0;\n f = f & 15;\n\n b: do { if (f) {\n d = 1;\n\n c: while (1) {\n l = bd(c | 0, a | 0, (15 - d | 0) * 3 | 0) | 0;\n G() | 0;\n\n switch (l & 7) {\n case 1:\n break c;\n\n case 0:\n break;\n\n default:\n break b;\n }\n\n if (d >>> 0 < f >>> 0) { d = d + 1 | 0; }else { break b; }\n }\n\n if (ra(e, b[i >> 2] | 0) | 0) {\n d = 1;\n\n while (1) {\n i = (15 - d | 0) * 3 | 0;\n k = cd(7, 0, i | 0) | 0;\n l = a & ~(G() | 0);\n a = bd(c | 0, a | 0, i | 0) | 0;\n G() | 0;\n a = cd(Qa(a & 7) | 0, 0, i | 0) | 0;\n c = c & ~k | a;\n a = l | (G() | 0);\n if (d >>> 0 < f >>> 0) { d = d + 1 | 0; }else { break; }\n }\n } else {\n d = 1;\n\n while (1) {\n l = (15 - d | 0) * 3 | 0;\n i = bd(c | 0, a | 0, l | 0) | 0;\n G() | 0;\n k = cd(7, 0, l | 0) | 0;\n a = a & ~(G() | 0);\n l = cd(Pa(i & 7) | 0, 0, l | 0) | 0;\n c = c & ~k | l;\n a = a | (G() | 0);\n if (d >>> 0 < f >>> 0) { d = d + 1 | 0; }else { break; }\n }\n }\n } } while (0);\n\n if ((g | 0) > 0) {\n d = 0;\n\n do {\n c = Lb(c, a) | 0;\n a = G() | 0;\n d = d + 1 | 0;\n } while ((d | 0) != (g | 0));\n }\n } else {\n c = 0;\n a = 0;\n } } while (0);\n\n k = a;\n l = c;\n F(k | 0);\n S = j;\n return l | 0;\n }\n\n function Qb(a) {\n a = a | 0;\n return (a | 0) % 2 | 0 | 0;\n }\n\n function Rb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n e = S;\n S = S + 16 | 0;\n d = e;\n\n if ((c >>> 0 <= 15 ? !((b[a + 4 >> 2] & 2146435072 | 0) == 2146435072) : 0) ? !((b[a + 8 + 4 >> 2] & 2146435072 | 0) == 2146435072) : 0) {\n Ya(a, c, d);\n c = Pb(d, c) | 0;\n a = G() | 0;\n } else {\n a = 0;\n c = 0;\n }\n\n F(a | 0);\n S = e;\n return c | 0;\n }\n\n function Sb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0;\n f = d + 4 | 0;\n g = bd(a | 0, c | 0, 52) | 0;\n G() | 0;\n g = g & 15;\n h = bd(a | 0, c | 0, 45) | 0;\n G() | 0;\n e = (g | 0) == 0;\n\n if (!(la(h & 127) | 0)) {\n if (e) {\n h = 0;\n return h | 0;\n }\n\n if ((b[f >> 2] | 0) == 0 ? (b[d + 8 >> 2] | 0) == 0 : 0) { e = (b[d + 12 >> 2] | 0) != 0 & 1; }else { e = 1; }\n } else if (e) {\n h = 1;\n return h | 0;\n } else { e = 1; }\n\n d = 1;\n\n while (1) {\n if (!(d & 1)) { La(f); }else { Ka(f); }\n h = bd(a | 0, c | 0, (15 - d | 0) * 3 | 0) | 0;\n G() | 0;\n Ma(f, h & 7);\n if (d >>> 0 < g >>> 0) { d = d + 1 | 0; }else { break; }\n }\n\n return e | 0;\n }\n\n function Tb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0;\n l = S;\n S = S + 16 | 0;\n j = l;\n k = bd(a | 0, c | 0, 45) | 0;\n G() | 0;\n k = k & 127;\n\n a: do { if ((la(k) | 0) != 0 ? (g = bd(a | 0, c | 0, 52) | 0, G() | 0, g = g & 15, (g | 0) != 0) : 0) {\n e = 1;\n\n b: while (1) {\n i = bd(a | 0, c | 0, (15 - e | 0) * 3 | 0) | 0;\n G() | 0;\n\n switch (i & 7) {\n case 5:\n break b;\n\n case 0:\n break;\n\n default:\n {\n e = c;\n break a;\n }\n }\n\n if (e >>> 0 < g >>> 0) { e = e + 1 | 0; }else {\n e = c;\n break a;\n }\n }\n\n f = 1;\n e = c;\n\n while (1) {\n c = (15 - f | 0) * 3 | 0;\n h = cd(7, 0, c | 0) | 0;\n i = e & ~(G() | 0);\n e = bd(a | 0, e | 0, c | 0) | 0;\n G() | 0;\n e = cd(Qa(e & 7) | 0, 0, c | 0) | 0;\n a = a & ~h | e;\n e = i | (G() | 0);\n if (f >>> 0 < g >>> 0) { f = f + 1 | 0; }else { break; }\n }\n } else { e = c; } } while (0);\n\n i = 7728 + (k * 28 | 0) | 0;\n b[d >> 2] = b[i >> 2];\n b[d + 4 >> 2] = b[i + 4 >> 2];\n b[d + 8 >> 2] = b[i + 8 >> 2];\n b[d + 12 >> 2] = b[i + 12 >> 2];\n\n if (!(Sb(a, e, d) | 0)) {\n S = l;\n return;\n }\n\n h = d + 4 | 0;\n b[j >> 2] = b[h >> 2];\n b[j + 4 >> 2] = b[h + 4 >> 2];\n b[j + 8 >> 2] = b[h + 8 >> 2];\n g = bd(a | 0, e | 0, 52) | 0;\n G() | 0;\n i = g & 15;\n if (!(g & 1)) { g = i; }else {\n La(h);\n g = i + 1 | 0;\n }\n if (!(la(k) | 0)) { e = 0; }else {\n c: do { if (!i) { e = 0; }else {\n c = 1;\n\n while (1) {\n f = bd(a | 0, e | 0, (15 - c | 0) * 3 | 0) | 0;\n G() | 0;\n f = f & 7;\n\n if (f | 0) {\n e = f;\n break c;\n }\n\n if (c >>> 0 < i >>> 0) { c = c + 1 | 0; }else {\n e = 0;\n break;\n }\n }\n } } while (0);\n\n e = (e | 0) == 4 & 1;\n }\n\n if (!(cb(d, g, e, 0) | 0)) {\n if ((g | 0) != (i | 0)) {\n b[h >> 2] = b[j >> 2];\n b[h + 4 >> 2] = b[j + 4 >> 2];\n b[h + 8 >> 2] = b[j + 8 >> 2];\n }\n } else {\n if (la(k) | 0) { do {} while ((cb(d, g, 0, 0) | 0) != 0); }\n if ((g | 0) != (i | 0)) { Ja(h); }\n }\n\n S = l;\n return;\n }\n\n function Ub(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n d = S;\n S = S + 16 | 0;\n e = d;\n Tb(a, b, e);\n b = bd(a | 0, b | 0, 52) | 0;\n G() | 0;\n $a(e, b & 15, c);\n S = d;\n return;\n }\n\n function Vb(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0;\n g = S;\n S = S + 16 | 0;\n f = g;\n Tb(a, b, f);\n d = bd(a | 0, b | 0, 45) | 0;\n G() | 0;\n d = (la(d & 127) | 0) == 0;\n e = bd(a | 0, b | 0, 52) | 0;\n G() | 0;\n e = e & 15;\n\n a: do { if (!d) {\n if (e | 0) {\n d = 1;\n\n while (1) {\n h = cd(7, 0, (15 - d | 0) * 3 | 0) | 0;\n if (!((h & a | 0) == 0 & ((G() | 0) & b | 0) == 0)) { break a; }\n if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else { break; }\n }\n }\n\n ab(f, e, 0, 5, c);\n S = g;\n return;\n } } while (0);\n\n eb(f, e, 0, 6, c);\n S = g;\n return;\n }\n\n function Wb(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0,\n d = 0,\n e = 0;\n d = bd(a | 0, b | 0, 45) | 0;\n G() | 0;\n\n if (!(la(d & 127) | 0)) {\n d = 2;\n return d | 0;\n }\n\n d = bd(a | 0, b | 0, 52) | 0;\n G() | 0;\n d = d & 15;\n\n if (!d) {\n d = 5;\n return d | 0;\n }\n\n c = 1;\n\n while (1) {\n e = cd(7, 0, (15 - c | 0) * 3 | 0) | 0;\n\n if (!((e & a | 0) == 0 & ((G() | 0) & b | 0) == 0)) {\n c = 2;\n a = 6;\n break;\n }\n\n if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {\n c = 5;\n a = 6;\n break;\n }\n }\n\n if ((a | 0) == 6) { return c | 0; }\n return 0;\n }\n\n function Xb(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0;\n m = S;\n S = S + 128 | 0;\n k = m + 112 | 0;\n g = m + 96 | 0;\n l = m;\n f = bd(a | 0, c | 0, 52) | 0;\n G() | 0;\n i = f & 15;\n b[k >> 2] = i;\n h = bd(a | 0, c | 0, 45) | 0;\n G() | 0;\n h = h & 127;\n\n a: do { if (la(h) | 0) {\n if (i | 0) {\n e = 1;\n\n while (1) {\n j = cd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n\n if (!((j & a | 0) == 0 & ((G() | 0) & c | 0) == 0)) {\n f = 0;\n break a;\n }\n\n if (e >>> 0 < i >>> 0) { e = e + 1 | 0; }else { break; }\n }\n }\n\n if (!(f & 1)) {\n j = cd(i + 1 | 0, 0, 52) | 0;\n l = G() | 0 | c & -15728641;\n k = cd(7, 0, (14 - i | 0) * 3 | 0) | 0;\n Xb((j | a) & ~k, l & ~(G() | 0), d);\n S = m;\n return;\n } else { f = 1; }\n } else { f = 0; } } while (0);\n\n Tb(a, c, g);\n\n if (f) {\n bb(g, k, l);\n j = 5;\n } else {\n fb(g, k, l);\n j = 6;\n }\n\n b: do { if (la(h) | 0) {\n if (!i) { e = 20; }else {\n e = 1;\n\n while (1) {\n h = cd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n\n if (!((h & a | 0) == 0 & ((G() | 0) & c | 0) == 0)) {\n e = 8;\n break b;\n }\n\n if (e >>> 0 < i >>> 0) { e = e + 1 | 0; }else {\n e = 20;\n break;\n }\n }\n }\n } else { e = 8; } } while (0);\n\n gd(d | 0, -1, e | 0) | 0;\n\n if (f) {\n f = 0;\n\n do {\n g = l + (f << 4) | 0;\n db(g, b[k >> 2] | 0) | 0;\n g = b[g >> 2] | 0;\n e = 0;\n\n while (1) {\n h = d + (e << 2) | 0;\n i = b[h >> 2] | 0;\n if ((i | 0) == -1 | (i | 0) == (g | 0)) { break; }else { e = e + 1 | 0; }\n }\n\n b[h >> 2] = g;\n f = f + 1 | 0;\n } while ((f | 0) != (j | 0));\n } else {\n f = 0;\n\n do {\n g = l + (f << 4) | 0;\n cb(g, b[k >> 2] | 0, 0, 1) | 0;\n g = b[g >> 2] | 0;\n e = 0;\n\n while (1) {\n h = d + (e << 2) | 0;\n i = b[h >> 2] | 0;\n if ((i | 0) == -1 | (i | 0) == (g | 0)) { break; }else { e = e + 1 | 0; }\n }\n\n b[h >> 2] = g;\n f = f + 1 | 0;\n } while ((f | 0) != (j | 0));\n }\n\n S = m;\n return;\n }\n\n function Yb() {\n return 12;\n }\n\n function Zb(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n cd(a | 0, 0, 52) | 0;\n i = G() | 0 | 134225919;\n\n if ((a | 0) < 1) {\n e = 0;\n d = 0;\n\n do {\n if (la(e) | 0) {\n cd(e | 0, 0, 45) | 0;\n h = i | (G() | 0);\n a = c + (d << 3) | 0;\n b[a >> 2] = -1;\n b[a + 4 >> 2] = h;\n d = d + 1 | 0;\n }\n\n e = e + 1 | 0;\n } while ((e | 0) != 122);\n\n return;\n }\n\n h = 0;\n d = 0;\n\n do {\n if (la(h) | 0) {\n cd(h | 0, 0, 45) | 0;\n e = 1;\n f = -1;\n g = i | (G() | 0);\n\n while (1) {\n j = cd(7, 0, (15 - e | 0) * 3 | 0) | 0;\n f = f & ~j;\n g = g & ~(G() | 0);\n if ((e | 0) == (a | 0)) { break; }else { e = e + 1 | 0; }\n }\n\n j = c + (d << 3) | 0;\n b[j >> 2] = f;\n b[j + 4 >> 2] = g;\n d = d + 1 | 0;\n }\n\n h = h + 1 | 0;\n } while ((h | 0) != 122);\n\n return;\n }\n\n function _b(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;\n i = S;\n S = S + 64 | 0;\n h = i;\n\n if ((a | 0) == (d | 0) & (c | 0) == (e | 0) | (0 != 0 | (c & 2013265920 | 0) != 134217728 | (0 != 0 | (e & 2013265920 | 0) != 134217728))) {\n h = 0;\n S = i;\n return h | 0;\n }\n\n f = bd(a | 0, c | 0, 52) | 0;\n G() | 0;\n f = f & 15;\n g = bd(d | 0, e | 0, 52) | 0;\n G() | 0;\n\n if ((f | 0) != (g & 15 | 0)) {\n h = 0;\n S = i;\n return h | 0;\n }\n\n g = f + -1 | 0;\n\n if (f >>> 0 > 1 ? (k = Bb(a, c, g) | 0, j = G() | 0, g = Bb(d, e, g) | 0, (k | 0) == (g | 0) & (j | 0) == (G() | 0)) : 0) {\n g = (f ^ 15) * 3 | 0;\n f = bd(a | 0, c | 0, g | 0) | 0;\n G() | 0;\n f = f & 7;\n g = bd(d | 0, e | 0, g | 0) | 0;\n G() | 0;\n g = g & 7;\n\n if ((f | 0) == 0 | (g | 0) == 0) {\n k = 1;\n S = i;\n return k | 0;\n }\n\n if ((b[21136 + (f << 2) >> 2] | 0) == (g | 0)) {\n k = 1;\n S = i;\n return k | 0;\n }\n\n if ((b[21168 + (f << 2) >> 2] | 0) == (g | 0)) {\n k = 1;\n S = i;\n return k | 0;\n }\n }\n\n f = h;\n g = f + 56 | 0;\n\n do {\n b[f >> 2] = 0;\n f = f + 4 | 0;\n } while ((f | 0) < (g | 0));\n\n $(a, c, 1, h);\n k = h;\n\n if (((((!((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0) ? (k = h + 8 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 16 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 24 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 32 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 40 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) {\n f = h + 48 | 0;\n f = ((b[f >> 2] | 0) == (d | 0) ? (b[f + 4 >> 2] | 0) == (e | 0) : 0) & 1;\n } else { f = 1; }\n\n k = f;\n S = i;\n return k | 0;\n }\n\n function $b(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0;\n k = S;\n S = S + 16 | 0;\n h = k;\n\n if (!(_b(a, c, d, e) | 0)) {\n i = 0;\n j = 0;\n F(i | 0);\n S = k;\n return j | 0;\n }\n\n i = c & -2130706433;\n f = (Eb(a, c) | 0) == 0;\n f = f ? 1 : 2;\n\n while (1) {\n b[h >> 2] = 0;\n l = da(a, c, f, h) | 0;\n g = f + 1 | 0;\n if ((l | 0) == (d | 0) & (G() | 0) == (e | 0)) { break; }\n if (g >>> 0 < 7) { f = g; }else {\n f = 0;\n a = 0;\n j = 6;\n break;\n }\n }\n\n if ((j | 0) == 6) {\n F(f | 0);\n S = k;\n return a | 0;\n }\n\n l = cd(f | 0, 0, 56) | 0;\n j = i | (G() | 0) | 268435456;\n l = a | l;\n F(j | 0);\n S = k;\n return l | 0;\n }\n\n function ac(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n c = 0 == 0 & (b & 2013265920 | 0) == 268435456;\n F((c ? b & -2130706433 | 134217728 : 0) | 0);\n return (c ? a : 0) | 0;\n }\n\n function bc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0;\n e = S;\n S = S + 16 | 0;\n d = e;\n\n if (!(0 == 0 & (c & 2013265920 | 0) == 268435456)) {\n c = 0;\n d = 0;\n F(c | 0);\n S = e;\n return d | 0;\n }\n\n f = bd(a | 0, c | 0, 56) | 0;\n G() | 0;\n b[d >> 2] = 0;\n d = da(a, c & -2130706433 | 134217728, f & 7, d) | 0;\n c = G() | 0;\n F(c | 0);\n S = e;\n return d | 0;\n }\n\n function cc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n\n if (!(0 == 0 & (b & 2013265920 | 0) == 268435456)) {\n c = 0;\n return c | 0;\n }\n\n c = bd(a | 0, b | 0, 56) | 0;\n G() | 0;\n\n switch (c & 7) {\n case 0:\n case 7:\n {\n c = 0;\n return c | 0;\n }\n\n default:\n\n }\n\n c = b & -2130706433 | 134217728;\n\n if (0 == 0 & (b & 117440512 | 0) == 16777216 & (Eb(a, c) | 0) != 0) {\n c = 0;\n return c | 0;\n }\n\n c = Ab(a, c) | 0;\n return c | 0;\n }\n\n function dc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n g = S;\n S = S + 16 | 0;\n e = g;\n h = 0 == 0 & (c & 2013265920 | 0) == 268435456;\n f = c & -2130706433 | 134217728;\n i = d;\n b[i >> 2] = h ? a : 0;\n b[i + 4 >> 2] = h ? f : 0;\n\n if (h) {\n c = bd(a | 0, c | 0, 56) | 0;\n G() | 0;\n b[e >> 2] = 0;\n a = da(a, f, c & 7, e) | 0;\n c = G() | 0;\n } else {\n a = 0;\n c = 0;\n }\n\n i = d + 8 | 0;\n b[i >> 2] = a;\n b[i + 4 >> 2] = c;\n S = g;\n return;\n }\n\n function ec(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0;\n f = (Eb(a, c) | 0) == 0;\n c = c & -2130706433;\n e = d;\n b[e >> 2] = f ? a : 0;\n b[e + 4 >> 2] = f ? c | 285212672 : 0;\n e = d + 8 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 301989888;\n e = d + 16 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 318767104;\n e = d + 24 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 335544320;\n e = d + 32 | 0;\n b[e >> 2] = a;\n b[e + 4 >> 2] = c | 352321536;\n d = d + 40 | 0;\n b[d >> 2] = a;\n b[d + 4 >> 2] = c | 369098752;\n return;\n }\n\n function fc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = S;\n S = S + 16 | 0;\n g = h;\n e = bd(a | 0, c | 0, 56) | 0;\n G() | 0;\n i = 0 == 0 & (c & 2013265920 | 0) == 268435456;\n f = i ? a : 0;\n a = i ? c & -2130706433 | 134217728 : 0;\n c = Kc(f, a, e & 7) | 0;\n\n if ((c | 0) == -1) {\n b[d >> 2] = 0;\n S = h;\n return;\n }\n\n Tb(f, a, g);\n e = bd(f | 0, a | 0, 52) | 0;\n G() | 0;\n e = e & 15;\n if (!(Eb(f, a) | 0)) { eb(g, e, c, 2, d); }else { ab(g, e, c, 2, d); }\n S = h;\n return;\n }\n\n function gc(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0;\n c = Xc(1, 12) | 0;\n if (!c) { H(22691, 22646, 49, 22704); }\n d = a + 4 | 0;\n e = b[d >> 2] | 0;\n\n if (e | 0) {\n e = e + 8 | 0;\n b[e >> 2] = c;\n b[d >> 2] = c;\n return c | 0;\n }\n\n if (b[a >> 2] | 0) { H(22721, 22646, 61, 22744); }\n e = a;\n b[e >> 2] = c;\n b[d >> 2] = c;\n return c | 0;\n }\n\n function hc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0;\n e = Vc(24) | 0;\n if (!e) { H(22758, 22646, 78, 22772); }\n b[e >> 2] = b[c >> 2];\n b[e + 4 >> 2] = b[c + 4 >> 2];\n b[e + 8 >> 2] = b[c + 8 >> 2];\n b[e + 12 >> 2] = b[c + 12 >> 2];\n b[e + 16 >> 2] = 0;\n c = a + 4 | 0;\n d = b[c >> 2] | 0;\n\n if (d | 0) {\n b[d + 16 >> 2] = e;\n b[c >> 2] = e;\n return e | 0;\n }\n\n if (b[a >> 2] | 0) { H(22787, 22646, 82, 22772); }\n b[a >> 2] = e;\n b[c >> 2] = e;\n return e | 0;\n }\n\n function ic(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0;\n if (!a) { return; }\n e = 1;\n\n while (1) {\n c = b[a >> 2] | 0;\n if (c | 0) { do {\n d = b[c >> 2] | 0;\n if (d | 0) { do {\n f = d;\n d = b[d + 16 >> 2] | 0;\n Wc(f);\n } while ((d | 0) != 0); }\n f = c;\n c = b[c + 8 >> 2] | 0;\n Wc(f);\n } while ((c | 0) != 0); }\n c = a;\n a = b[a + 8 >> 2] | 0;\n if (!e) { Wc(c); }\n if (!a) { break; }else { e = 0; }\n }\n\n return;\n }\n\n function jc(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n f = 0,\n g = 0,\n h = 0.0,\n i = 0,\n j = 0.0,\n k = 0.0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n r = 0,\n s = 0.0,\n t = 0.0,\n u = 0.0,\n v = 0.0,\n w = 0.0,\n x = 0.0,\n y = 0,\n z = 0,\n A = 0,\n B = 0,\n C = 0,\n D = 0,\n E = 0,\n F = 0,\n G = 0,\n I = 0,\n J = 0,\n K = 0;\n g = a + 8 | 0;\n\n if (b[g >> 2] | 0) {\n K = 1;\n return K | 0;\n }\n\n f = b[a >> 2] | 0;\n\n if (!f) {\n K = 0;\n return K | 0;\n }\n\n c = f;\n d = 0;\n\n do {\n d = d + 1 | 0;\n c = b[c + 8 >> 2] | 0;\n } while ((c | 0) != 0);\n\n if (d >>> 0 < 2) {\n K = 0;\n return K | 0;\n }\n\n I = Vc(d << 2) | 0;\n if (!I) { H(22807, 22646, 317, 22826); }\n G = Vc(d << 5) | 0;\n if (!G) { H(22848, 22646, 321, 22826); }\n b[a >> 2] = 0;\n z = a + 4 | 0;\n b[z >> 2] = 0;\n b[g >> 2] = 0;\n d = 0;\n F = 0;\n y = 0;\n n = 0;\n\n a: while (1) {\n m = b[f >> 2] | 0;\n\n if (m) {\n h = 0.0;\n i = m;\n\n do {\n k = +e[i + 8 >> 3];\n c = i;\n i = b[i + 16 >> 2] | 0;\n l = (i | 0) == 0;\n g = l ? m : i;\n j = +e[g + 8 >> 3];\n\n if (+q(+(k - j)) > 3.141592653589793) {\n K = 14;\n break;\n }\n\n h = h + (j - k) * (+e[c >> 3] + +e[g >> 3]);\n } while (!l);\n\n if ((K | 0) == 14) {\n K = 0;\n h = 0.0;\n c = m;\n\n do {\n x = +e[c + 8 >> 3];\n E = c + 16 | 0;\n D = b[E >> 2] | 0;\n D = (D | 0) == 0 ? m : D;\n w = +e[D + 8 >> 3];\n h = h + (+e[c >> 3] + +e[D >> 3]) * ((w < 0.0 ? w + 6.283185307179586 : w) - (x < 0.0 ? x + 6.283185307179586 : x));\n c = b[((c | 0) == 0 ? f : E) >> 2] | 0;\n } while ((c | 0) != 0);\n }\n\n if (h > 0.0) {\n b[I + (F << 2) >> 2] = f;\n F = F + 1 | 0;\n g = y;\n c = n;\n } else { K = 19; }\n } else { K = 19; }\n\n if ((K | 0) == 19) {\n K = 0;\n\n do { if (!d) {\n if (!n) {\n if (!(b[a >> 2] | 0)) {\n g = z;\n i = a;\n c = f;\n d = a;\n break;\n } else {\n K = 27;\n break a;\n }\n } else {\n g = z;\n i = n + 8 | 0;\n c = f;\n d = a;\n break;\n }\n } else {\n c = d + 8 | 0;\n\n if (b[c >> 2] | 0) {\n K = 21;\n break a;\n }\n\n d = Xc(1, 12) | 0;\n\n if (!d) {\n K = 23;\n break a;\n }\n\n b[c >> 2] = d;\n g = d + 4 | 0;\n i = d;\n c = n;\n } } while (0);\n\n b[i >> 2] = f;\n b[g >> 2] = f;\n i = G + (y << 5) | 0;\n l = b[f >> 2] | 0;\n\n if (l) {\n m = G + (y << 5) + 8 | 0;\n e[m >> 3] = 1797693134862315708145274.0e284;\n n = G + (y << 5) + 24 | 0;\n e[n >> 3] = 1797693134862315708145274.0e284;\n e[i >> 3] = -1797693134862315708145274.0e284;\n o = G + (y << 5) + 16 | 0;\n e[o >> 3] = -1797693134862315708145274.0e284;\n u = 1797693134862315708145274.0e284;\n v = -1797693134862315708145274.0e284;\n g = 0;\n p = l;\n k = 1797693134862315708145274.0e284;\n s = 1797693134862315708145274.0e284;\n t = -1797693134862315708145274.0e284;\n j = -1797693134862315708145274.0e284;\n\n while (1) {\n h = +e[p >> 3];\n x = +e[p + 8 >> 3];\n p = b[p + 16 >> 2] | 0;\n r = (p | 0) == 0;\n w = +e[(r ? l : p) + 8 >> 3];\n\n if (h < k) {\n e[m >> 3] = h;\n k = h;\n }\n\n if (x < s) {\n e[n >> 3] = x;\n s = x;\n }\n\n if (h > t) { e[i >> 3] = h; }else { h = t; }\n\n if (x > j) {\n e[o >> 3] = x;\n j = x;\n }\n\n u = x > 0.0 & x < u ? x : u;\n v = x < 0.0 & x > v ? x : v;\n g = g | +q(+(x - w)) > 3.141592653589793;\n if (r) { break; }else { t = h; }\n }\n\n if (g) {\n e[o >> 3] = v;\n e[n >> 3] = u;\n }\n } else {\n b[i >> 2] = 0;\n b[i + 4 >> 2] = 0;\n b[i + 8 >> 2] = 0;\n b[i + 12 >> 2] = 0;\n b[i + 16 >> 2] = 0;\n b[i + 20 >> 2] = 0;\n b[i + 24 >> 2] = 0;\n b[i + 28 >> 2] = 0;\n }\n\n g = y + 1 | 0;\n }\n\n E = f + 8 | 0;\n f = b[E >> 2] | 0;\n b[E >> 2] = 0;\n\n if (!f) {\n K = 45;\n break;\n } else {\n y = g;\n n = c;\n }\n }\n\n if ((K | 0) == 21) { H(22624, 22646, 35, 22658); }else if ((K | 0) == 23) { H(22678, 22646, 37, 22658); }else if ((K | 0) == 27) { H(22721, 22646, 61, 22744); }else if ((K | 0) == 45) {\n b: do { if ((F | 0) > 0) {\n E = (g | 0) == 0;\n C = g << 2;\n D = (a | 0) == 0;\n B = 0;\n c = 0;\n\n while (1) {\n A = b[I + (B << 2) >> 2] | 0;\n\n if (!E) {\n y = Vc(C) | 0;\n\n if (!y) {\n K = 50;\n break;\n }\n\n z = Vc(C) | 0;\n\n if (!z) {\n K = 52;\n break;\n }\n\n c: do { if (!D) {\n g = 0;\n d = 0;\n i = a;\n\n while (1) {\n f = G + (g << 5) | 0;\n\n if (kc(b[i >> 2] | 0, f, b[A >> 2] | 0) | 0) {\n b[y + (d << 2) >> 2] = i;\n b[z + (d << 2) >> 2] = f;\n r = d + 1 | 0;\n } else { r = d; }\n\n i = b[i + 8 >> 2] | 0;\n if (!i) { break; }else {\n g = g + 1 | 0;\n d = r;\n }\n }\n\n if ((r | 0) > 0) {\n f = b[y >> 2] | 0;\n if ((r | 0) == 1) { d = f; }else {\n o = 0;\n p = -1;\n d = f;\n n = f;\n\n while (1) {\n l = b[n >> 2] | 0;\n f = 0;\n i = 0;\n\n while (1) {\n g = b[b[y + (i << 2) >> 2] >> 2] | 0;\n if ((g | 0) == (l | 0)) { m = f; }else { m = f + ((kc(g, b[z + (i << 2) >> 2] | 0, b[l >> 2] | 0) | 0) & 1) | 0; }\n i = i + 1 | 0;\n if ((i | 0) == (r | 0)) { break; }else { f = m; }\n }\n\n g = (m | 0) > (p | 0);\n d = g ? n : d;\n f = o + 1 | 0;\n if ((f | 0) == (r | 0)) { break c; }\n o = f;\n p = g ? m : p;\n n = b[y + (f << 2) >> 2] | 0;\n }\n }\n } else { d = 0; }\n } else { d = 0; } } while (0);\n\n Wc(y);\n Wc(z);\n\n if (d) {\n g = d + 4 | 0;\n f = b[g >> 2] | 0;\n\n if (!f) {\n if (b[d >> 2] | 0) {\n K = 70;\n break;\n }\n } else { d = f + 8 | 0; }\n\n b[d >> 2] = A;\n b[g >> 2] = A;\n } else { K = 73; }\n } else { K = 73; }\n\n if ((K | 0) == 73) {\n K = 0;\n c = b[A >> 2] | 0;\n if (c | 0) { do {\n z = c;\n c = b[c + 16 >> 2] | 0;\n Wc(z);\n } while ((c | 0) != 0); }\n Wc(A);\n c = 2;\n }\n\n B = B + 1 | 0;\n\n if ((B | 0) >= (F | 0)) {\n J = c;\n break b;\n }\n }\n\n if ((K | 0) == 50) { H(22863, 22646, 249, 22882); }else if ((K | 0) == 52) { H(22901, 22646, 252, 22882); }else if ((K | 0) == 70) { H(22721, 22646, 61, 22744); }\n } else { J = 0; } } while (0);\n\n Wc(I);\n Wc(G);\n K = J;\n return K | 0;\n }\n return 0;\n }\n\n function kc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0.0,\n g = 0.0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0;\n\n if (!(xa(c, d) | 0)) {\n a = 0;\n return a | 0;\n }\n\n c = wa(c) | 0;\n l = +e[d >> 3];\n f = +e[d + 8 >> 3];\n f = c & f < 0.0 ? f + 6.283185307179586 : f;\n a = b[a >> 2] | 0;\n\n if (!a) {\n a = 0;\n return a | 0;\n }\n\n if (c) {\n c = 0;\n d = a;\n\n a: while (1) {\n while (1) {\n i = +e[d >> 3];\n k = +e[d + 8 >> 3];\n d = d + 16 | 0;\n m = b[d >> 2] | 0;\n m = (m | 0) == 0 ? a : m;\n h = +e[m >> 3];\n g = +e[m + 8 >> 3];\n\n if (i > h) {\n j = i;\n i = k;\n } else {\n j = h;\n h = i;\n i = g;\n g = k;\n }\n\n if (!(l < h | l > j)) { break; }\n d = b[d >> 2] | 0;\n\n if (!d) {\n d = 22;\n break a;\n }\n }\n\n k = g < 0.0 ? g + 6.283185307179586 : g;\n i = i < 0.0 ? i + 6.283185307179586 : i;\n f = i == f | k == f ? f + -2.220446049250313e-16 : f;\n k = k + (l - h) / (j - h) * (i - k);\n if ((k < 0.0 ? k + 6.283185307179586 : k) > f) { c = c ^ 1; }\n d = b[d >> 2] | 0;\n\n if (!d) {\n d = 22;\n break;\n }\n }\n\n if ((d | 0) == 22) { return c | 0; }\n } else {\n c = 0;\n d = a;\n\n b: while (1) {\n while (1) {\n i = +e[d >> 3];\n k = +e[d + 8 >> 3];\n d = d + 16 | 0;\n m = b[d >> 2] | 0;\n m = (m | 0) == 0 ? a : m;\n h = +e[m >> 3];\n g = +e[m + 8 >> 3];\n\n if (i > h) {\n j = i;\n i = k;\n } else {\n j = h;\n h = i;\n i = g;\n g = k;\n }\n\n if (!(l < h | l > j)) { break; }\n d = b[d >> 2] | 0;\n\n if (!d) {\n d = 22;\n break b;\n }\n }\n\n f = i == f | g == f ? f + -2.220446049250313e-16 : f;\n if (g + (l - h) / (j - h) * (i - g) > f) { c = c ^ 1; }\n d = b[d >> 2] | 0;\n\n if (!d) {\n d = 22;\n break;\n }\n }\n\n if ((d | 0) == 22) { return c | 0; }\n }\n\n return 0;\n }\n\n function lc(c, d, e, f, g) {\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n g = g | 0;\n var h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0;\n u = S;\n S = S + 32 | 0;\n t = u + 16 | 0;\n s = u;\n h = bd(c | 0, d | 0, 52) | 0;\n G() | 0;\n h = h & 15;\n p = bd(e | 0, f | 0, 52) | 0;\n G() | 0;\n\n if ((h | 0) != (p & 15 | 0)) {\n t = 1;\n S = u;\n return t | 0;\n }\n\n l = bd(c | 0, d | 0, 45) | 0;\n G() | 0;\n l = l & 127;\n m = bd(e | 0, f | 0, 45) | 0;\n G() | 0;\n m = m & 127;\n p = (l | 0) != (m | 0);\n\n if (p) {\n j = ta(l, m) | 0;\n\n if ((j | 0) == 7) {\n t = 2;\n S = u;\n return t | 0;\n }\n\n k = ta(m, l) | 0;\n if ((k | 0) == 7) { H(22925, 22949, 151, 22959); }else {\n q = j;\n i = k;\n }\n } else {\n q = 0;\n i = 0;\n }\n\n n = la(l) | 0;\n o = la(m) | 0;\n b[t >> 2] = 0;\n b[t + 4 >> 2] = 0;\n b[t + 8 >> 2] = 0;\n b[t + 12 >> 2] = 0;\n\n do { if (!q) {\n Sb(e, f, t) | 0;\n\n if ((n | 0) != 0 & (o | 0) != 0) {\n if ((m | 0) != (l | 0)) { H(23077, 22949, 243, 22959); }\n i = Kb(c, d) | 0;\n h = Kb(e, f) | 0;\n\n if (!(a[22032 + (i * 7 | 0) + h >> 0] | 0)) {\n i = b[21200 + (i * 28 | 0) + (h << 2) >> 2] | 0;\n\n if ((i | 0) > 0) {\n j = t + 4 | 0;\n h = 0;\n\n do {\n Oa(j);\n h = h + 1 | 0;\n } while ((h | 0) != (i | 0));\n\n r = 50;\n } else { r = 50; }\n } else { h = 5; }\n } else { r = 50; }\n } else {\n m = b[4304 + (l * 28 | 0) + (q << 2) >> 2] | 0;\n j = (m | 0) > 0;\n if (!o) {\n if (j) {\n l = 0;\n k = e;\n j = f;\n\n do {\n k = Ob(k, j) | 0;\n j = G() | 0;\n i = Qa(i) | 0;\n l = l + 1 | 0;\n } while ((l | 0) != (m | 0));\n\n m = i;\n l = k;\n k = j;\n } else {\n m = i;\n l = e;\n k = f;\n }\n } else if (j) {\n l = 0;\n k = e;\n j = f;\n\n do {\n k = Nb(k, j) | 0;\n j = G() | 0;\n i = Qa(i) | 0;\n if ((i | 0) == 1) { i = Qa(1) | 0; }\n l = l + 1 | 0;\n } while ((l | 0) != (m | 0));\n\n m = i;\n l = k;\n k = j;\n } else {\n m = i;\n l = e;\n k = f;\n }\n Sb(l, k, t) | 0;\n if (!p) { H(22972, 22949, 181, 22959); }\n j = (n | 0) != 0;\n i = (o | 0) != 0;\n if (j & i) { H(22999, 22949, 182, 22959); }\n if (!j) {\n if (i) {\n i = Kb(l, k) | 0;\n\n if (a[22032 + (i * 7 | 0) + m >> 0] | 0) {\n h = 4;\n break;\n }\n\n l = 0;\n k = b[21200 + (m * 28 | 0) + (i << 2) >> 2] | 0;\n r = 26;\n } else { i = 0; }\n } else {\n i = Kb(c, d) | 0;\n\n if (a[22032 + (i * 7 | 0) + q >> 0] | 0) {\n h = 3;\n break;\n }\n\n k = b[21200 + (i * 28 | 0) + (q << 2) >> 2] | 0;\n l = k;\n r = 26;\n }\n\n if ((r | 0) == 26) {\n if ((k | 0) <= -1) { H(23030, 22949, 212, 22959); }\n if ((l | 0) <= -1) { H(23053, 22949, 213, 22959); }\n\n if ((k | 0) > 0) {\n j = t + 4 | 0;\n i = 0;\n\n do {\n Oa(j);\n i = i + 1 | 0;\n } while ((i | 0) != (k | 0));\n\n i = l;\n } else { i = l; }\n }\n b[s >> 2] = 0;\n b[s + 4 >> 2] = 0;\n b[s + 8 >> 2] = 0;\n Ma(s, q);\n if (h | 0) { while (1) {\n if (!(Qb(h) | 0)) { La(s); }else { Ka(s); }\n if ((h | 0) > 1) { h = h + -1 | 0; }else { break; }\n } }\n\n if ((i | 0) > 0) {\n h = 0;\n\n do {\n Oa(s);\n h = h + 1 | 0;\n } while ((h | 0) != (i | 0));\n }\n\n r = t + 4 | 0;\n Ea(r, s, r);\n Ca(r);\n r = 50;\n } } while (0);\n\n if ((r | 0) == 50) {\n h = t + 4 | 0;\n b[g >> 2] = b[h >> 2];\n b[g + 4 >> 2] = b[h + 4 >> 2];\n b[g + 8 >> 2] = b[h + 8 >> 2];\n h = 0;\n }\n\n t = h;\n S = u;\n return t | 0;\n }\n\n function mc(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0;\n p = S;\n S = S + 48 | 0;\n h = p + 36 | 0;\n i = p + 24 | 0;\n j = p + 12 | 0;\n k = p;\n g = bd(a | 0, c | 0, 52) | 0;\n G() | 0;\n g = g & 15;\n n = bd(a | 0, c | 0, 45) | 0;\n G() | 0;\n n = n & 127;\n l = la(n) | 0;\n cd(g | 0, 0, 52) | 0;\n r = G() | 0 | 134225919;\n q = e;\n b[q >> 2] = -1;\n b[q + 4 >> 2] = r;\n\n if (!g) {\n if ((b[d >> 2] | 0) > 1) {\n r = 1;\n S = p;\n return r | 0;\n }\n\n if ((b[d + 4 >> 2] | 0) > 1) {\n r = 1;\n S = p;\n return r | 0;\n }\n\n if ((b[d + 8 >> 2] | 0) > 1) {\n r = 1;\n S = p;\n return r | 0;\n }\n\n f = sa(n, Ha(d) | 0) | 0;\n\n if ((f | 0) == 127) {\n r = 1;\n S = p;\n return r | 0;\n }\n\n o = cd(f | 0, 0, 45) | 0;\n q = G() | 0;\n n = e;\n q = b[n + 4 >> 2] & -1040385 | q;\n r = e;\n b[r >> 2] = b[n >> 2] | o;\n b[r + 4 >> 2] = q;\n r = 0;\n S = p;\n return r | 0;\n }\n b[h >> 2] = b[d >> 2];\n b[h + 4 >> 2] = b[d + 4 >> 2];\n b[h + 8 >> 2] = b[d + 8 >> 2];\n\n while (1) {\n b[i >> 2] = b[h >> 2];\n b[i + 4 >> 2] = b[h + 4 >> 2];\n b[i + 8 >> 2] = b[h + 8 >> 2];\n\n if (!(Qb(g) | 0)) {\n Ja(h);\n b[j >> 2] = b[h >> 2];\n b[j + 4 >> 2] = b[h + 4 >> 2];\n b[j + 8 >> 2] = b[h + 8 >> 2];\n La(j);\n } else {\n Ia(h);\n b[j >> 2] = b[h >> 2];\n b[j + 4 >> 2] = b[h + 4 >> 2];\n b[j + 8 >> 2] = b[h + 8 >> 2];\n Ka(j);\n }\n\n Fa(i, j, k);\n Ca(k);\n q = e;\n s = b[q >> 2] | 0;\n q = b[q + 4 >> 2] | 0;\n t = (15 - g | 0) * 3 | 0;\n d = cd(7, 0, t | 0) | 0;\n q = q & ~(G() | 0);\n t = cd(Ha(k) | 0, 0, t | 0) | 0;\n q = G() | 0 | q;\n r = e;\n b[r >> 2] = t | s & ~d;\n b[r + 4 >> 2] = q;\n if ((g | 0) > 1) { g = g + -1 | 0; }else { break; }\n }\n\n a: do { if (((b[h >> 2] | 0) <= 1 ? (b[h + 4 >> 2] | 0) <= 1 : 0) ? (b[h + 8 >> 2] | 0) <= 1 : 0) {\n g = Ha(h) | 0;\n i = sa(n, g) | 0;\n if ((i | 0) == 127) { k = 0; }else { k = la(i) | 0; }\n\n b: do { if (!g) {\n if ((l | 0) != 0 & (k | 0) != 0) {\n t = Kb(a, c) | 0;\n g = e;\n g = 21408 + (t * 28 | 0) + ((Kb(b[g >> 2] | 0, b[g + 4 >> 2] | 0) | 0) << 2) | 0;\n g = b[g >> 2] | 0;\n if ((g | 0) <= -1) { H(23201, 22949, 433, 23134); }\n\n if (!g) {\n f = i;\n g = 55;\n } else {\n h = e;\n f = 0;\n d = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n\n do {\n d = Mb(d, h) | 0;\n h = G() | 0;\n t = e;\n b[t >> 2] = d;\n b[t + 4 >> 2] = h;\n f = f + 1 | 0;\n } while ((f | 0) < (g | 0));\n\n f = i;\n g = 54;\n }\n } else {\n f = i;\n g = 54;\n }\n } else {\n if (l) {\n h = 21408 + ((Kb(a, c) | 0) * 28 | 0) + (g << 2) | 0;\n h = b[h >> 2] | 0;\n\n if ((h | 0) > 0) {\n d = 0;\n\n do {\n g = Pa(g) | 0;\n d = d + 1 | 0;\n } while ((d | 0) != (h | 0));\n }\n\n if ((g | 0) == 1) {\n f = 3;\n break a;\n }\n\n d = sa(n, g) | 0;\n if ((d | 0) == 127) { H(23104, 22949, 376, 23134); }\n\n if (!(la(d) | 0)) {\n o = h;\n m = g;\n f = d;\n } else { H(23147, 22949, 377, 23134); }\n } else {\n o = 0;\n m = g;\n f = i;\n }\n\n j = b[4304 + (n * 28 | 0) + (m << 2) >> 2] | 0;\n if ((j | 0) <= -1) { H(23178, 22949, 384, 23134); }\n\n if (!k) {\n if ((o | 0) <= -1) { H(23030, 22949, 417, 23134); }\n\n if (o | 0) {\n h = e;\n g = 0;\n d = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n\n do {\n d = Mb(d, h) | 0;\n h = G() | 0;\n t = e;\n b[t >> 2] = d;\n b[t + 4 >> 2] = h;\n g = g + 1 | 0;\n } while ((g | 0) < (o | 0));\n }\n\n if ((j | 0) <= 0) {\n g = 54;\n break;\n }\n\n h = e;\n g = 0;\n d = b[h >> 2] | 0;\n h = b[h + 4 >> 2] | 0;\n\n while (1) {\n d = Mb(d, h) | 0;\n h = G() | 0;\n t = e;\n b[t >> 2] = d;\n b[t + 4 >> 2] = h;\n g = g + 1 | 0;\n\n if ((g | 0) == (j | 0)) {\n g = 54;\n break b;\n }\n }\n }\n\n i = ta(f, n) | 0;\n if ((i | 0) == 7) { H(22925, 22949, 393, 23134); }\n g = e;\n d = b[g >> 2] | 0;\n g = b[g + 4 >> 2] | 0;\n\n if ((j | 0) > 0) {\n h = 0;\n\n do {\n d = Mb(d, g) | 0;\n g = G() | 0;\n t = e;\n b[t >> 2] = d;\n b[t + 4 >> 2] = g;\n h = h + 1 | 0;\n } while ((h | 0) != (j | 0));\n }\n\n d = Kb(d, g) | 0;\n t = ma(f) | 0;\n d = b[(t ? 21824 : 21616) + (i * 28 | 0) + (d << 2) >> 2] | 0;\n if ((d | 0) <= -1) { H(23030, 22949, 412, 23134); }\n if (!d) { g = 54; }else {\n i = e;\n g = 0;\n h = b[i >> 2] | 0;\n i = b[i + 4 >> 2] | 0;\n\n do {\n h = Lb(h, i) | 0;\n i = G() | 0;\n t = e;\n b[t >> 2] = h;\n b[t + 4 >> 2] = i;\n g = g + 1 | 0;\n } while ((g | 0) < (d | 0));\n\n g = 54;\n }\n } } while (0);\n\n if ((g | 0) == 54) { if (k) { g = 55; } }\n\n if ((g | 0) == 55) {\n t = e;\n\n if ((Kb(b[t >> 2] | 0, b[t + 4 >> 2] | 0) | 0) == 1) {\n f = 4;\n break;\n }\n }\n\n t = e;\n r = b[t >> 2] | 0;\n t = b[t + 4 >> 2] & -1040385;\n s = cd(f | 0, 0, 45) | 0;\n t = t | (G() | 0);\n f = e;\n b[f >> 2] = r | s;\n b[f + 4 >> 2] = t;\n f = 0;\n } else { f = 2; } } while (0);\n\n t = f;\n S = p;\n return t | 0;\n }\n\n function nc(a, b, c, d, e) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0;\n g = S;\n S = S + 16 | 0;\n f = g;\n a = lc(a, b, c, d, f) | 0;\n\n if (!a) {\n Ua(f, e);\n a = 0;\n }\n\n S = g;\n return a | 0;\n }\n\n function oc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0;\n e = S;\n S = S + 16 | 0;\n f = e;\n Va(c, f);\n d = mc(a, b, f, d) | 0;\n S = e;\n return d | 0;\n }\n\n function pc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0;\n g = S;\n S = S + 32 | 0;\n e = g + 12 | 0;\n f = g;\n if ((lc(a, b, a, b, e) | 0) == 0 ? (lc(a, b, c, d, f) | 0) == 0 : 0) { a = Ta(e, f) | 0; }else { a = -1; }\n S = g;\n return a | 0;\n }\n\n function qc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0;\n g = S;\n S = S + 32 | 0;\n e = g + 12 | 0;\n f = g;\n if ((lc(a, b, a, b, e) | 0) == 0 ? (lc(a, b, c, d, f) | 0) == 0 : 0) { a = Ta(e, f) | 0; }else { a = -1; }\n S = g;\n return (a >>> 31 ^ 1) + a | 0;\n }\n\n function rc(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0.0,\n j = 0.0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0.0,\n p = 0.0,\n r = 0.0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0.0;\n x = S;\n S = S + 48 | 0;\n g = x + 24 | 0;\n h = x + 12 | 0;\n w = x;\n\n if ((lc(a, c, a, c, g) | 0) == 0 ? (lc(a, c, d, e, h) | 0) == 0 : 0) {\n v = Ta(g, h) | 0;\n\n if ((v | 0) < 0) {\n w = v;\n S = x;\n return w | 0;\n }\n b[g >> 2] = 0;\n b[g + 4 >> 2] = 0;\n b[g + 8 >> 2] = 0;\n b[h >> 2] = 0;\n b[h + 4 >> 2] = 0;\n b[h + 8 >> 2] = 0;\n lc(a, c, a, c, g) | 0;\n lc(a, c, d, e, h) | 0;\n Wa(g);\n Wa(h);\n\n if (!v) {\n e = g + 4 | 0;\n n = g + 8 | 0;\n s = e;\n t = n;\n u = g;\n d = b[g >> 2] | 0;\n e = b[e >> 2] | 0;\n g = b[n >> 2] | 0;\n p = 0.0;\n r = 0.0;\n o = 0.0;\n } else {\n l = b[g >> 2] | 0;\n o = +(v | 0);\n s = g + 4 | 0;\n m = b[s >> 2] | 0;\n t = g + 8 | 0;\n n = b[t >> 2] | 0;\n u = g;\n d = l;\n e = m;\n g = n;\n p = +((b[h >> 2] | 0) - l | 0) / o;\n r = +((b[h + 4 >> 2] | 0) - m | 0) / o;\n o = +((b[h + 8 >> 2] | 0) - n | 0) / o;\n }\n\n b[w >> 2] = d;\n n = w + 4 | 0;\n b[n >> 2] = e;\n m = w + 8 | 0;\n b[m >> 2] = g;\n l = 0;\n\n while (1) {\n j = +(l | 0);\n y = p * j + +(d | 0);\n i = r * j + +(b[s >> 2] | 0);\n j = o * j + +(b[t >> 2] | 0);\n e = ~~+ed(+y);\n h = ~~+ed(+i);\n d = ~~+ed(+j);\n y = +q(+(+(e | 0) - y));\n i = +q(+(+(h | 0) - i));\n j = +q(+(+(d | 0) - j));\n\n do { if (!(y > i & y > j)) {\n k = 0 - e | 0;\n\n if (i > j) {\n g = k - d | 0;\n break;\n } else {\n g = h;\n d = k - h | 0;\n break;\n }\n } else {\n e = 0 - (h + d) | 0;\n g = h;\n } } while (0);\n\n b[w >> 2] = e;\n b[n >> 2] = g;\n b[m >> 2] = d;\n Xa(w);\n mc(a, c, w, f + (l << 3) | 0) | 0;\n if ((l | 0) == (v | 0)) { break; }\n l = l + 1 | 0;\n d = b[u >> 2] | 0;\n }\n\n w = 0;\n S = x;\n return w | 0;\n }\n\n w = -1;\n S = x;\n return w | 0;\n }\n\n function sc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0;\n\n if (!b) {\n c = 1;\n return c | 0;\n }\n\n c = a;\n a = 1;\n\n do {\n a = B((b & 1 | 0) == 0 ? 1 : c, a) | 0;\n b = b >> 1;\n c = B(c, c) | 0;\n } while ((b | 0) != 0);\n\n return a | 0;\n }\n\n function tc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0.0,\n g = 0.0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0,\n m = 0,\n n = 0,\n o = 0.0;\n\n if (!(xa(c, d) | 0)) {\n n = 0;\n return n | 0;\n }\n\n c = wa(c) | 0;\n o = +e[d >> 3];\n f = +e[d + 8 >> 3];\n f = c & f < 0.0 ? f + 6.283185307179586 : f;\n n = b[a >> 2] | 0;\n\n if ((n | 0) <= 0) {\n n = 0;\n return n | 0;\n }\n\n m = b[a + 4 >> 2] | 0;\n\n if (c) {\n c = 0;\n d = -1;\n a = 0;\n\n a: while (1) {\n l = a;\n\n while (1) {\n i = +e[m + (l << 4) >> 3];\n k = +e[m + (l << 4) + 8 >> 3];\n a = (d + 2 | 0) % (n | 0) | 0;\n h = +e[m + (a << 4) >> 3];\n g = +e[m + (a << 4) + 8 >> 3];\n\n if (i > h) {\n j = i;\n i = k;\n } else {\n j = h;\n h = i;\n i = g;\n g = k;\n }\n\n if (!(o < h | o > j)) { break; }\n d = l + 1 | 0;\n\n if ((d | 0) < (n | 0)) {\n a = l;\n l = d;\n d = a;\n } else {\n d = 22;\n break a;\n }\n }\n\n k = g < 0.0 ? g + 6.283185307179586 : g;\n i = i < 0.0 ? i + 6.283185307179586 : i;\n f = i == f | k == f ? f + -2.220446049250313e-16 : f;\n k = k + (o - h) / (j - h) * (i - k);\n if ((k < 0.0 ? k + 6.283185307179586 : k) > f) { c = c ^ 1; }\n a = l + 1 | 0;\n\n if ((a | 0) >= (n | 0)) {\n d = 22;\n break;\n } else { d = l; }\n }\n\n if ((d | 0) == 22) { return c | 0; }\n } else {\n c = 0;\n d = -1;\n a = 0;\n\n b: while (1) {\n l = a;\n\n while (1) {\n i = +e[m + (l << 4) >> 3];\n k = +e[m + (l << 4) + 8 >> 3];\n a = (d + 2 | 0) % (n | 0) | 0;\n h = +e[m + (a << 4) >> 3];\n g = +e[m + (a << 4) + 8 >> 3];\n\n if (i > h) {\n j = i;\n i = k;\n } else {\n j = h;\n h = i;\n i = g;\n g = k;\n }\n\n if (!(o < h | o > j)) { break; }\n d = l + 1 | 0;\n\n if ((d | 0) < (n | 0)) {\n a = l;\n l = d;\n d = a;\n } else {\n d = 22;\n break b;\n }\n }\n\n f = i == f | g == f ? f + -2.220446049250313e-16 : f;\n if (g + (o - h) / (j - h) * (i - g) > f) { c = c ^ 1; }\n a = l + 1 | 0;\n\n if ((a | 0) >= (n | 0)) {\n d = 22;\n break;\n } else { d = l; }\n }\n\n if ((d | 0) == 22) { return c | 0; }\n }\n\n return 0;\n }\n\n function uc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0.0,\n f = 0.0,\n g = 0.0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0.0,\n n = 0,\n o = 0,\n p = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0;\n r = b[a >> 2] | 0;\n\n if (!r) {\n b[c >> 2] = 0;\n b[c + 4 >> 2] = 0;\n b[c + 8 >> 2] = 0;\n b[c + 12 >> 2] = 0;\n b[c + 16 >> 2] = 0;\n b[c + 20 >> 2] = 0;\n b[c + 24 >> 2] = 0;\n b[c + 28 >> 2] = 0;\n return;\n }\n\n s = c + 8 | 0;\n e[s >> 3] = 1797693134862315708145274.0e284;\n t = c + 24 | 0;\n e[t >> 3] = 1797693134862315708145274.0e284;\n e[c >> 3] = -1797693134862315708145274.0e284;\n u = c + 16 | 0;\n e[u >> 3] = -1797693134862315708145274.0e284;\n if ((r | 0) <= 0) { return; }\n o = b[a + 4 >> 2] | 0;\n l = 1797693134862315708145274.0e284;\n m = -1797693134862315708145274.0e284;\n n = 0;\n a = -1;\n h = 1797693134862315708145274.0e284;\n i = 1797693134862315708145274.0e284;\n k = -1797693134862315708145274.0e284;\n f = -1797693134862315708145274.0e284;\n p = 0;\n\n while (1) {\n d = +e[o + (p << 4) >> 3];\n j = +e[o + (p << 4) + 8 >> 3];\n a = a + 2 | 0;\n g = +e[o + (((a | 0) == (r | 0) ? 0 : a) << 4) + 8 >> 3];\n\n if (d < h) {\n e[s >> 3] = d;\n h = d;\n }\n\n if (j < i) {\n e[t >> 3] = j;\n i = j;\n }\n\n if (d > k) { e[c >> 3] = d; }else { d = k; }\n\n if (j > f) {\n e[u >> 3] = j;\n f = j;\n }\n\n l = j > 0.0 & j < l ? j : l;\n m = j < 0.0 & j > m ? j : m;\n n = n | +q(+(j - g)) > 3.141592653589793;\n a = p + 1 | 0;\n if ((a | 0) == (r | 0)) { break; }else {\n v = p;\n k = d;\n p = a;\n a = v;\n }\n }\n\n if (!n) { return; }\n e[u >> 3] = m;\n e[t >> 3] = l;\n return;\n }\n\n function vc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n f = 0,\n g = 0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0.0,\n n = 0.0,\n o = 0.0,\n p = 0.0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0,\n x = 0,\n y = 0,\n z = 0,\n A = 0;\n r = b[a >> 2] | 0;\n\n if (r) {\n s = c + 8 | 0;\n e[s >> 3] = 1797693134862315708145274.0e284;\n t = c + 24 | 0;\n e[t >> 3] = 1797693134862315708145274.0e284;\n e[c >> 3] = -1797693134862315708145274.0e284;\n u = c + 16 | 0;\n e[u >> 3] = -1797693134862315708145274.0e284;\n\n if ((r | 0) > 0) {\n g = b[a + 4 >> 2] | 0;\n o = 1797693134862315708145274.0e284;\n p = -1797693134862315708145274.0e284;\n f = 0;\n d = -1;\n k = 1797693134862315708145274.0e284;\n l = 1797693134862315708145274.0e284;\n n = -1797693134862315708145274.0e284;\n i = -1797693134862315708145274.0e284;\n v = 0;\n\n while (1) {\n h = +e[g + (v << 4) >> 3];\n m = +e[g + (v << 4) + 8 >> 3];\n z = d + 2 | 0;\n j = +e[g + (((z | 0) == (r | 0) ? 0 : z) << 4) + 8 >> 3];\n\n if (h < k) {\n e[s >> 3] = h;\n k = h;\n }\n\n if (m < l) {\n e[t >> 3] = m;\n l = m;\n }\n\n if (h > n) { e[c >> 3] = h; }else { h = n; }\n\n if (m > i) {\n e[u >> 3] = m;\n i = m;\n }\n\n o = m > 0.0 & m < o ? m : o;\n p = m < 0.0 & m > p ? m : p;\n f = f | +q(+(m - j)) > 3.141592653589793;\n d = v + 1 | 0;\n if ((d | 0) == (r | 0)) { break; }else {\n z = v;\n n = h;\n v = d;\n d = z;\n }\n }\n\n if (f) {\n e[u >> 3] = p;\n e[t >> 3] = o;\n }\n }\n } else {\n b[c >> 2] = 0;\n b[c + 4 >> 2] = 0;\n b[c + 8 >> 2] = 0;\n b[c + 12 >> 2] = 0;\n b[c + 16 >> 2] = 0;\n b[c + 20 >> 2] = 0;\n b[c + 24 >> 2] = 0;\n b[c + 28 >> 2] = 0;\n }\n\n z = a + 8 | 0;\n d = b[z >> 2] | 0;\n if ((d | 0) <= 0) { return; }\n y = a + 12 | 0;\n x = 0;\n\n do {\n g = b[y >> 2] | 0;\n f = x;\n x = x + 1 | 0;\n t = c + (x << 5) | 0;\n u = b[g + (f << 3) >> 2] | 0;\n\n if (u) {\n v = c + (x << 5) + 8 | 0;\n e[v >> 3] = 1797693134862315708145274.0e284;\n a = c + (x << 5) + 24 | 0;\n e[a >> 3] = 1797693134862315708145274.0e284;\n e[t >> 3] = -1797693134862315708145274.0e284;\n w = c + (x << 5) + 16 | 0;\n e[w >> 3] = -1797693134862315708145274.0e284;\n\n if ((u | 0) > 0) {\n r = b[g + (f << 3) + 4 >> 2] | 0;\n o = 1797693134862315708145274.0e284;\n p = -1797693134862315708145274.0e284;\n g = 0;\n f = -1;\n s = 0;\n k = 1797693134862315708145274.0e284;\n l = 1797693134862315708145274.0e284;\n m = -1797693134862315708145274.0e284;\n i = -1797693134862315708145274.0e284;\n\n while (1) {\n h = +e[r + (s << 4) >> 3];\n n = +e[r + (s << 4) + 8 >> 3];\n f = f + 2 | 0;\n j = +e[r + (((f | 0) == (u | 0) ? 0 : f) << 4) + 8 >> 3];\n\n if (h < k) {\n e[v >> 3] = h;\n k = h;\n }\n\n if (n < l) {\n e[a >> 3] = n;\n l = n;\n }\n\n if (h > m) { e[t >> 3] = h; }else { h = m; }\n\n if (n > i) {\n e[w >> 3] = n;\n i = n;\n }\n\n o = n > 0.0 & n < o ? n : o;\n p = n < 0.0 & n > p ? n : p;\n g = g | +q(+(n - j)) > 3.141592653589793;\n f = s + 1 | 0;\n if ((f | 0) == (u | 0)) { break; }else {\n A = s;\n s = f;\n m = h;\n f = A;\n }\n }\n\n if (g) {\n e[w >> 3] = p;\n e[a >> 3] = o;\n }\n }\n } else {\n b[t >> 2] = 0;\n b[t + 4 >> 2] = 0;\n b[t + 8 >> 2] = 0;\n b[t + 12 >> 2] = 0;\n b[t + 16 >> 2] = 0;\n b[t + 20 >> 2] = 0;\n b[t + 24 >> 2] = 0;\n b[t + 28 >> 2] = 0;\n d = b[z >> 2] | 0;\n }\n } while ((x | 0) < (d | 0));\n\n return;\n }\n\n function wc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0,\n g = 0;\n\n if (!(tc(a, c, d) | 0)) {\n f = 0;\n return f | 0;\n }\n\n f = a + 8 | 0;\n\n if ((b[f >> 2] | 0) <= 0) {\n f = 1;\n return f | 0;\n }\n\n e = a + 12 | 0;\n a = 0;\n\n while (1) {\n g = a;\n a = a + 1 | 0;\n\n if (tc((b[e >> 2] | 0) + (g << 3) | 0, c + (a << 5) | 0, d) | 0) {\n a = 0;\n e = 6;\n break;\n }\n\n if ((a | 0) >= (b[f >> 2] | 0)) {\n a = 1;\n e = 6;\n break;\n }\n }\n\n if ((e | 0) == 6) { return a | 0; }\n return 0;\n }\n\n function xc() {\n return 8;\n }\n\n function yc() {\n return 16;\n }\n\n function zc() {\n return 168;\n }\n\n function Ac() {\n return 8;\n }\n\n function Bc() {\n return 16;\n }\n\n function Cc() {\n return 12;\n }\n\n function Dc() {\n return 8;\n }\n\n function Ec(a) {\n a = a | 0;\n var b = 0.0,\n c = 0.0;\n c = +e[a >> 3];\n b = +e[a + 8 >> 3];\n return + +r(+(c * c + b * b));\n }\n\n function Fc(a, b, c, d, f) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n f = f | 0;\n var g = 0.0,\n h = 0.0,\n i = 0.0,\n j = 0.0,\n k = 0.0,\n l = 0.0,\n m = 0.0,\n n = 0.0;\n k = +e[a >> 3];\n j = +e[b >> 3] - k;\n i = +e[a + 8 >> 3];\n h = +e[b + 8 >> 3] - i;\n m = +e[c >> 3];\n g = +e[d >> 3] - m;\n n = +e[c + 8 >> 3];\n l = +e[d + 8 >> 3] - n;\n g = (g * (i - n) - (k - m) * l) / (j * l - h * g);\n e[f >> 3] = k + j * g;\n e[f + 8 >> 3] = i + h * g;\n return;\n }\n\n function Gc(a, b) {\n a = a | 0;\n b = b | 0;\n\n if (!(+e[a >> 3] == +e[b >> 3])) {\n b = 0;\n return b | 0;\n }\n\n b = +e[a + 8 >> 3] == +e[b + 8 >> 3];\n return b | 0;\n }\n\n function Hc(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0;\n f = +e[a >> 3] - +e[b >> 3];\n d = +e[a + 8 >> 3] - +e[b + 8 >> 3];\n c = +e[a + 16 >> 3] - +e[b + 16 >> 3];\n return +(f * f + d * d + c * c);\n }\n\n function Ic(a, b) {\n a = a | 0;\n b = b | 0;\n var c = 0.0,\n d = 0.0,\n f = 0.0;\n c = +e[a >> 3];\n d = +t(+c);\n c = +u(+c);\n e[b + 16 >> 3] = c;\n c = +e[a + 8 >> 3];\n f = d * +t(+c);\n e[b >> 3] = f;\n c = d * +u(+c);\n e[b + 8 >> 3] = c;\n return;\n }\n\n function Jc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0;\n k = S;\n S = S + 32 | 0;\n f = k + 16 | 0;\n g = k;\n Tb(a, c, f);\n h = zb(a, c) | 0;\n j = Kb(a, c) | 0;\n pa(h, g);\n c = qa(h, b[f >> 2] | 0) | 0;\n\n if (!(la(h) | 0)) {\n j = c;\n S = k;\n return j | 0;\n }\n\n do { switch (h | 0) {\n case 4:\n {\n a = 0;\n d = 14;\n break;\n }\n\n case 14:\n {\n a = 1;\n d = 14;\n break;\n }\n\n case 24:\n {\n a = 2;\n d = 14;\n break;\n }\n\n case 38:\n {\n a = 3;\n d = 14;\n break;\n }\n\n case 49:\n {\n a = 4;\n d = 14;\n break;\n }\n\n case 58:\n {\n a = 5;\n d = 14;\n break;\n }\n\n case 63:\n {\n a = 6;\n d = 14;\n break;\n }\n\n case 72:\n {\n a = 7;\n d = 14;\n break;\n }\n\n case 83:\n {\n a = 8;\n d = 14;\n break;\n }\n\n case 97:\n {\n a = 9;\n d = 14;\n break;\n }\n\n case 107:\n {\n a = 10;\n d = 14;\n break;\n }\n\n case 117:\n {\n a = 11;\n d = 14;\n break;\n }\n\n default:\n {\n i = 0;\n e = 0;\n }\n } } while (0);\n\n if ((d | 0) == 14) {\n i = b[22096 + (a * 24 | 0) + 8 >> 2] | 0;\n e = b[22096 + (a * 24 | 0) + 16 >> 2] | 0;\n }\n\n a = b[f >> 2] | 0;\n\n if ((a | 0) != (b[g >> 2] | 0)) {\n h = ma(h) | 0;\n a = b[f >> 2] | 0;\n if (h | (a | 0) == (e | 0)) { c = (c + 1 | 0) % 6 | 0; }\n }\n\n if ((j | 0) == 3 & (a | 0) == (e | 0)) {\n j = (c + 5 | 0) % 6 | 0;\n S = k;\n return j | 0;\n }\n\n if (!((j | 0) == 5 & (a | 0) == (i | 0))) {\n j = c;\n S = k;\n return j | 0;\n }\n\n j = (c + 1 | 0) % 6 | 0;\n S = k;\n return j | 0;\n }\n\n function Kc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0,\n f = 0;\n e = Eb(a, c) | 0;\n\n if ((d + -1 | 0) >>> 0 > 5) {\n d = -1;\n return d | 0;\n }\n\n f = (e | 0) != 0;\n\n if ((d | 0) == 1 & f) {\n d = -1;\n return d | 0;\n }\n\n e = Jc(a, c) | 0;\n\n if (f) {\n d = (5 - e + (b[22384 + (d << 2) >> 2] | 0) | 0) % 5 | 0;\n return d | 0;\n } else {\n d = (6 - e + (b[22416 + (d << 2) >> 2] | 0) | 0) % 6 | 0;\n return d | 0;\n }\n\n return 0;\n }\n\n function Lc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var e = 0;\n\n if ((c | 0) > 0) {\n e = Xc(c, 4) | 0;\n b[a >> 2] = e;\n if (!e) { H(23230, 23253, 40, 23267); }\n } else { b[a >> 2] = 0; }\n\n b[a + 4 >> 2] = c;\n b[a + 8 >> 2] = 0;\n b[a + 12 >> 2] = d;\n return;\n }\n\n function Mc(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n g = a + 4 | 0;\n h = a + 12 | 0;\n i = a + 8 | 0;\n\n a: while (1) {\n d = b[g >> 2] | 0;\n c = 0;\n\n while (1) {\n if ((c | 0) >= (d | 0)) { break a; }\n f = b[a >> 2] | 0;\n j = b[f + (c << 2) >> 2] | 0;\n if (!j) { c = c + 1 | 0; }else { break; }\n }\n\n c = f + (~~(+q(+(+s(10.0, + +(15 - (b[h >> 2] | 0) | 0)) * (+e[j >> 3] + +e[j + 8 >> 3]))) % +(d | 0)) >>> 0 << 2) | 0;\n d = b[c >> 2] | 0;\n\n b: do { if (d | 0) {\n f = j + 32 | 0;\n if ((d | 0) == (j | 0)) { b[c >> 2] = b[f >> 2]; }else {\n d = d + 32 | 0;\n c = b[d >> 2] | 0;\n if (!c) { break; }\n\n while (1) {\n if ((c | 0) == (j | 0)) { break; }\n d = c + 32 | 0;\n c = b[d >> 2] | 0;\n if (!c) { break b; }\n }\n\n b[d >> 2] = b[f >> 2];\n }\n Wc(j);\n b[i >> 2] = (b[i >> 2] | 0) + -1;\n } } while (0);\n }\n\n Wc(b[a >> 2] | 0);\n return;\n }\n\n function Nc(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0;\n e = b[a + 4 >> 2] | 0;\n d = 0;\n\n while (1) {\n if ((d | 0) >= (e | 0)) {\n c = 0;\n d = 4;\n break;\n }\n\n c = b[(b[a >> 2] | 0) + (d << 2) >> 2] | 0;\n if (!c) { d = d + 1 | 0; }else {\n d = 4;\n break;\n }\n }\n\n if ((d | 0) == 4) { return c | 0; }\n return 0;\n }\n\n function Oc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0,\n f = 0,\n g = 0,\n h = 0;\n d = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n d = (b[a >> 2] | 0) + (d << 2) | 0;\n f = b[d >> 2] | 0;\n\n if (!f) {\n h = 1;\n return h | 0;\n }\n\n h = c + 32 | 0;\n\n do { if ((f | 0) != (c | 0)) {\n d = b[f + 32 >> 2] | 0;\n\n if (!d) {\n h = 1;\n return h | 0;\n }\n\n g = d;\n\n while (1) {\n if ((g | 0) == (c | 0)) {\n g = 8;\n break;\n }\n\n d = b[g + 32 >> 2] | 0;\n\n if (!d) {\n d = 1;\n g = 10;\n break;\n } else {\n f = g;\n g = d;\n }\n }\n\n if ((g | 0) == 8) {\n b[f + 32 >> 2] = b[h >> 2];\n break;\n } else if ((g | 0) == 10) { return d | 0; }\n } else { b[d >> 2] = b[h >> 2]; } } while (0);\n\n Wc(c);\n h = a + 8 | 0;\n b[h >> 2] = (b[h >> 2] | 0) + -1;\n h = 0;\n return h | 0;\n }\n\n function Pc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = Vc(40) | 0;\n if (!h) { H(23283, 23253, 98, 23296); }\n b[h >> 2] = b[c >> 2];\n b[h + 4 >> 2] = b[c + 4 >> 2];\n b[h + 8 >> 2] = b[c + 8 >> 2];\n b[h + 12 >> 2] = b[c + 12 >> 2];\n g = h + 16 | 0;\n b[g >> 2] = b[d >> 2];\n b[g + 4 >> 2] = b[d + 4 >> 2];\n b[g + 8 >> 2] = b[d + 8 >> 2];\n b[g + 12 >> 2] = b[d + 12 >> 2];\n b[h + 32 >> 2] = 0;\n g = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n g = (b[a >> 2] | 0) + (g << 2) | 0;\n f = b[g >> 2] | 0;\n\n do { if (!f) { b[g >> 2] = h; }else {\n while (1) {\n if (hb(f, c) | 0 ? hb(f + 16 | 0, d) | 0 : 0) { break; }\n g = b[f + 32 >> 2] | 0;\n f = (g | 0) == 0 ? f : g;\n\n if (!(b[f + 32 >> 2] | 0)) {\n i = 10;\n break;\n }\n }\n\n if ((i | 0) == 10) {\n b[f + 32 >> 2] = h;\n break;\n }\n\n Wc(h);\n i = f;\n return i | 0;\n } } while (0);\n\n i = a + 8 | 0;\n b[i >> 2] = (b[i >> 2] | 0) + 1;\n i = h;\n return i | 0;\n }\n\n function Qc(a, c, d) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n var f = 0,\n g = 0;\n g = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n g = b[(b[a >> 2] | 0) + (g << 2) >> 2] | 0;\n\n if (!g) {\n d = 0;\n return d | 0;\n }\n\n if (!d) {\n a = g;\n\n while (1) {\n if (hb(a, c) | 0) {\n f = 10;\n break;\n }\n\n a = b[a + 32 >> 2] | 0;\n\n if (!a) {\n a = 0;\n f = 10;\n break;\n }\n }\n\n if ((f | 0) == 10) { return a | 0; }\n }\n\n a = g;\n\n while (1) {\n if (hb(a, c) | 0 ? hb(a + 16 | 0, d) | 0 : 0) {\n f = 10;\n break;\n }\n\n a = b[a + 32 >> 2] | 0;\n\n if (!a) {\n a = 0;\n f = 10;\n break;\n }\n }\n\n if ((f | 0) == 10) { return a | 0; }\n return 0;\n }\n\n function Rc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0;\n d = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;\n a = b[(b[a >> 2] | 0) + (d << 2) >> 2] | 0;\n\n if (!a) {\n d = 0;\n return d | 0;\n }\n\n while (1) {\n if (hb(a, c) | 0) {\n c = 5;\n break;\n }\n\n a = b[a + 32 >> 2] | 0;\n\n if (!a) {\n a = 0;\n c = 5;\n break;\n }\n }\n\n if ((c | 0) == 5) { return a | 0; }\n return 0;\n }\n\n function Sc() {\n return 23312;\n }\n\n function Tc(a) {\n a = +a;\n return + +hd(+a);\n }\n\n function Uc(a) {\n a = +a;\n return ~~+Tc(a) | 0;\n }\n\n function Vc(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0,\n q = 0,\n r = 0,\n s = 0,\n t = 0,\n u = 0,\n v = 0,\n w = 0;\n w = S;\n S = S + 16 | 0;\n n = w;\n\n do { if (a >>> 0 < 245) {\n k = a >>> 0 < 11 ? 16 : a + 11 & -8;\n a = k >>> 3;\n m = b[5829] | 0;\n d = m >>> a;\n\n if (d & 3 | 0) {\n c = (d & 1 ^ 1) + a | 0;\n a = 23356 + (c << 1 << 2) | 0;\n d = a + 8 | 0;\n e = b[d >> 2] | 0;\n f = e + 8 | 0;\n g = b[f >> 2] | 0;\n if ((g | 0) == (a | 0)) { b[5829] = m & ~(1 << c); }else {\n b[g + 12 >> 2] = a;\n b[d >> 2] = g;\n }\n v = c << 3;\n b[e + 4 >> 2] = v | 3;\n v = e + v + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n v = f;\n S = w;\n return v | 0;\n }\n\n l = b[5831] | 0;\n\n if (k >>> 0 > l >>> 0) {\n if (d | 0) {\n c = 2 << a;\n c = d << a & (c | 0 - c);\n c = (c & 0 - c) + -1 | 0;\n i = c >>> 12 & 16;\n c = c >>> i;\n d = c >>> 5 & 8;\n c = c >>> d;\n g = c >>> 2 & 4;\n c = c >>> g;\n a = c >>> 1 & 2;\n c = c >>> a;\n e = c >>> 1 & 1;\n e = (d | i | g | a | e) + (c >>> e) | 0;\n c = 23356 + (e << 1 << 2) | 0;\n a = c + 8 | 0;\n g = b[a >> 2] | 0;\n i = g + 8 | 0;\n d = b[i >> 2] | 0;\n\n if ((d | 0) == (c | 0)) {\n a = m & ~(1 << e);\n b[5829] = a;\n } else {\n b[d + 12 >> 2] = c;\n b[a >> 2] = d;\n a = m;\n }\n\n v = e << 3;\n h = v - k | 0;\n b[g + 4 >> 2] = k | 3;\n f = g + k | 0;\n b[f + 4 >> 2] = h | 1;\n b[g + v >> 2] = h;\n\n if (l | 0) {\n e = b[5834] | 0;\n c = l >>> 3;\n d = 23356 + (c << 1 << 2) | 0;\n c = 1 << c;\n\n if (!(a & c)) {\n b[5829] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n\n b[a >> 2] = e;\n b[c + 12 >> 2] = e;\n b[e + 8 >> 2] = c;\n b[e + 12 >> 2] = d;\n }\n\n b[5831] = h;\n b[5834] = f;\n v = i;\n S = w;\n return v | 0;\n }\n\n g = b[5830] | 0;\n\n if (g) {\n d = (g & 0 - g) + -1 | 0;\n f = d >>> 12 & 16;\n d = d >>> f;\n e = d >>> 5 & 8;\n d = d >>> e;\n h = d >>> 2 & 4;\n d = d >>> h;\n i = d >>> 1 & 2;\n d = d >>> i;\n j = d >>> 1 & 1;\n j = b[23620 + ((e | f | h | i | j) + (d >>> j) << 2) >> 2] | 0;\n d = j;\n i = j;\n j = (b[j + 4 >> 2] & -8) - k | 0;\n\n while (1) {\n a = b[d + 16 >> 2] | 0;\n\n if (!a) {\n a = b[d + 20 >> 2] | 0;\n if (!a) { break; }\n }\n\n h = (b[a + 4 >> 2] & -8) - k | 0;\n f = h >>> 0 < j >>> 0;\n d = a;\n i = f ? a : i;\n j = f ? h : j;\n }\n\n h = i + k | 0;\n\n if (h >>> 0 > i >>> 0) {\n f = b[i + 24 >> 2] | 0;\n c = b[i + 12 >> 2] | 0;\n\n do { if ((c | 0) == (i | 0)) {\n a = i + 20 | 0;\n c = b[a >> 2] | 0;\n\n if (!c) {\n a = i + 16 | 0;\n c = b[a >> 2] | 0;\n\n if (!c) {\n d = 0;\n break;\n }\n }\n\n while (1) {\n e = c + 20 | 0;\n d = b[e >> 2] | 0;\n\n if (!d) {\n e = c + 16 | 0;\n d = b[e >> 2] | 0;\n if (!d) { break; }else {\n c = d;\n a = e;\n }\n } else {\n c = d;\n a = e;\n }\n }\n\n b[a >> 2] = 0;\n d = c;\n } else {\n d = b[i + 8 >> 2] | 0;\n b[d + 12 >> 2] = c;\n b[c + 8 >> 2] = d;\n d = c;\n } } while (0);\n\n do { if (f | 0) {\n c = b[i + 28 >> 2] | 0;\n a = 23620 + (c << 2) | 0;\n\n if ((i | 0) == (b[a >> 2] | 0)) {\n b[a >> 2] = d;\n\n if (!d) {\n b[5830] = g & ~(1 << c);\n break;\n }\n } else {\n v = f + 16 | 0;\n b[((b[v >> 2] | 0) == (i | 0) ? v : f + 20 | 0) >> 2] = d;\n if (!d) { break; }\n }\n\n b[d + 24 >> 2] = f;\n c = b[i + 16 >> 2] | 0;\n\n if (c | 0) {\n b[d + 16 >> 2] = c;\n b[c + 24 >> 2] = d;\n }\n\n c = b[i + 20 >> 2] | 0;\n\n if (c | 0) {\n b[d + 20 >> 2] = c;\n b[c + 24 >> 2] = d;\n }\n } } while (0);\n\n if (j >>> 0 < 16) {\n v = j + k | 0;\n b[i + 4 >> 2] = v | 3;\n v = i + v + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n } else {\n b[i + 4 >> 2] = k | 3;\n b[h + 4 >> 2] = j | 1;\n b[h + j >> 2] = j;\n\n if (l | 0) {\n e = b[5834] | 0;\n c = l >>> 3;\n d = 23356 + (c << 1 << 2) | 0;\n c = 1 << c;\n\n if (!(c & m)) {\n b[5829] = c | m;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n\n b[a >> 2] = e;\n b[c + 12 >> 2] = e;\n b[e + 8 >> 2] = c;\n b[e + 12 >> 2] = d;\n }\n\n b[5831] = j;\n b[5834] = h;\n }\n\n v = i + 8 | 0;\n S = w;\n return v | 0;\n } else { m = k; }\n } else { m = k; }\n } else { m = k; }\n } else if (a >>> 0 <= 4294967231) {\n a = a + 11 | 0;\n k = a & -8;\n e = b[5830] | 0;\n\n if (e) {\n f = 0 - k | 0;\n a = a >>> 8;\n if (a) {\n if (k >>> 0 > 16777215) { j = 31; }else {\n m = (a + 1048320 | 0) >>> 16 & 8;\n q = a << m;\n i = (q + 520192 | 0) >>> 16 & 4;\n q = q << i;\n j = (q + 245760 | 0) >>> 16 & 2;\n j = 14 - (i | m | j) + (q << j >>> 15) | 0;\n j = k >>> (j + 7 | 0) & 1 | j << 1;\n }\n } else { j = 0; }\n d = b[23620 + (j << 2) >> 2] | 0;\n\n a: do { if (!d) {\n d = 0;\n a = 0;\n q = 61;\n } else {\n a = 0;\n i = k << ((j | 0) == 31 ? 0 : 25 - (j >>> 1) | 0);\n g = 0;\n\n while (1) {\n h = (b[d + 4 >> 2] & -8) - k | 0;\n if (h >>> 0 < f >>> 0) { if (!h) {\n a = d;\n f = 0;\n q = 65;\n break a;\n } else {\n a = d;\n f = h;\n } }\n q = b[d + 20 >> 2] | 0;\n d = b[d + 16 + (i >>> 31 << 2) >> 2] | 0;\n g = (q | 0) == 0 | (q | 0) == (d | 0) ? g : q;\n\n if (!d) {\n d = g;\n q = 61;\n break;\n } else { i = i << 1; }\n }\n } } while (0);\n\n if ((q | 0) == 61) {\n if ((d | 0) == 0 & (a | 0) == 0) {\n a = 2 << j;\n a = (a | 0 - a) & e;\n\n if (!a) {\n m = k;\n break;\n }\n\n m = (a & 0 - a) + -1 | 0;\n h = m >>> 12 & 16;\n m = m >>> h;\n g = m >>> 5 & 8;\n m = m >>> g;\n i = m >>> 2 & 4;\n m = m >>> i;\n j = m >>> 1 & 2;\n m = m >>> j;\n d = m >>> 1 & 1;\n a = 0;\n d = b[23620 + ((g | h | i | j | d) + (m >>> d) << 2) >> 2] | 0;\n }\n\n if (!d) {\n i = a;\n h = f;\n } else { q = 65; }\n }\n\n if ((q | 0) == 65) {\n g = d;\n\n while (1) {\n m = (b[g + 4 >> 2] & -8) - k | 0;\n d = m >>> 0 < f >>> 0;\n f = d ? m : f;\n a = d ? g : a;\n d = b[g + 16 >> 2] | 0;\n if (!d) { d = b[g + 20 >> 2] | 0; }\n\n if (!d) {\n i = a;\n h = f;\n break;\n } else { g = d; }\n }\n }\n\n if (((i | 0) != 0 ? h >>> 0 < ((b[5831] | 0) - k | 0) >>> 0 : 0) ? (l = i + k | 0, l >>> 0 > i >>> 0) : 0) {\n g = b[i + 24 >> 2] | 0;\n c = b[i + 12 >> 2] | 0;\n\n do { if ((c | 0) == (i | 0)) {\n a = i + 20 | 0;\n c = b[a >> 2] | 0;\n\n if (!c) {\n a = i + 16 | 0;\n c = b[a >> 2] | 0;\n\n if (!c) {\n c = 0;\n break;\n }\n }\n\n while (1) {\n f = c + 20 | 0;\n d = b[f >> 2] | 0;\n\n if (!d) {\n f = c + 16 | 0;\n d = b[f >> 2] | 0;\n if (!d) { break; }else {\n c = d;\n a = f;\n }\n } else {\n c = d;\n a = f;\n }\n }\n\n b[a >> 2] = 0;\n } else {\n v = b[i + 8 >> 2] | 0;\n b[v + 12 >> 2] = c;\n b[c + 8 >> 2] = v;\n } } while (0);\n\n do { if (g) {\n a = b[i + 28 >> 2] | 0;\n d = 23620 + (a << 2) | 0;\n\n if ((i | 0) == (b[d >> 2] | 0)) {\n b[d >> 2] = c;\n\n if (!c) {\n e = e & ~(1 << a);\n b[5830] = e;\n break;\n }\n } else {\n v = g + 16 | 0;\n b[((b[v >> 2] | 0) == (i | 0) ? v : g + 20 | 0) >> 2] = c;\n if (!c) { break; }\n }\n\n b[c + 24 >> 2] = g;\n a = b[i + 16 >> 2] | 0;\n\n if (a | 0) {\n b[c + 16 >> 2] = a;\n b[a + 24 >> 2] = c;\n }\n\n a = b[i + 20 >> 2] | 0;\n\n if (a) {\n b[c + 20 >> 2] = a;\n b[a + 24 >> 2] = c;\n }\n } } while (0);\n\n b: do { if (h >>> 0 < 16) {\n v = h + k | 0;\n b[i + 4 >> 2] = v | 3;\n v = i + v + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n } else {\n b[i + 4 >> 2] = k | 3;\n b[l + 4 >> 2] = h | 1;\n b[l + h >> 2] = h;\n c = h >>> 3;\n\n if (h >>> 0 < 256) {\n d = 23356 + (c << 1 << 2) | 0;\n a = b[5829] | 0;\n c = 1 << c;\n\n if (!(a & c)) {\n b[5829] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n\n b[a >> 2] = l;\n b[c + 12 >> 2] = l;\n b[l + 8 >> 2] = c;\n b[l + 12 >> 2] = d;\n break;\n }\n\n c = h >>> 8;\n if (c) {\n if (h >>> 0 > 16777215) { d = 31; }else {\n u = (c + 1048320 | 0) >>> 16 & 8;\n v = c << u;\n t = (v + 520192 | 0) >>> 16 & 4;\n v = v << t;\n d = (v + 245760 | 0) >>> 16 & 2;\n d = 14 - (t | u | d) + (v << d >>> 15) | 0;\n d = h >>> (d + 7 | 0) & 1 | d << 1;\n }\n } else { d = 0; }\n c = 23620 + (d << 2) | 0;\n b[l + 28 >> 2] = d;\n a = l + 16 | 0;\n b[a + 4 >> 2] = 0;\n b[a >> 2] = 0;\n a = 1 << d;\n\n if (!(e & a)) {\n b[5830] = e | a;\n b[c >> 2] = l;\n b[l + 24 >> 2] = c;\n b[l + 12 >> 2] = l;\n b[l + 8 >> 2] = l;\n break;\n }\n\n c = b[c >> 2] | 0;\n\n c: do { if ((b[c + 4 >> 2] & -8 | 0) != (h | 0)) {\n e = h << ((d | 0) == 31 ? 0 : 25 - (d >>> 1) | 0);\n\n while (1) {\n d = c + 16 + (e >>> 31 << 2) | 0;\n a = b[d >> 2] | 0;\n if (!a) { break; }\n\n if ((b[a + 4 >> 2] & -8 | 0) == (h | 0)) {\n c = a;\n break c;\n } else {\n e = e << 1;\n c = a;\n }\n }\n\n b[d >> 2] = l;\n b[l + 24 >> 2] = c;\n b[l + 12 >> 2] = l;\n b[l + 8 >> 2] = l;\n break b;\n } } while (0);\n\n u = c + 8 | 0;\n v = b[u >> 2] | 0;\n b[v + 12 >> 2] = l;\n b[u >> 2] = l;\n b[l + 8 >> 2] = v;\n b[l + 12 >> 2] = c;\n b[l + 24 >> 2] = 0;\n } } while (0);\n\n v = i + 8 | 0;\n S = w;\n return v | 0;\n } else { m = k; }\n } else { m = k; }\n } else { m = -1; } } while (0);\n\n d = b[5831] | 0;\n\n if (d >>> 0 >= m >>> 0) {\n c = d - m | 0;\n a = b[5834] | 0;\n\n if (c >>> 0 > 15) {\n v = a + m | 0;\n b[5834] = v;\n b[5831] = c;\n b[v + 4 >> 2] = c | 1;\n b[a + d >> 2] = c;\n b[a + 4 >> 2] = m | 3;\n } else {\n b[5831] = 0;\n b[5834] = 0;\n b[a + 4 >> 2] = d | 3;\n v = a + d + 4 | 0;\n b[v >> 2] = b[v >> 2] | 1;\n }\n\n v = a + 8 | 0;\n S = w;\n return v | 0;\n }\n\n h = b[5832] | 0;\n\n if (h >>> 0 > m >>> 0) {\n t = h - m | 0;\n b[5832] = t;\n v = b[5835] | 0;\n u = v + m | 0;\n b[5835] = u;\n b[u + 4 >> 2] = t | 1;\n b[v + 4 >> 2] = m | 3;\n v = v + 8 | 0;\n S = w;\n return v | 0;\n }\n\n if (!(b[5947] | 0)) {\n b[5949] = 4096;\n b[5948] = 4096;\n b[5950] = -1;\n b[5951] = -1;\n b[5952] = 0;\n b[5940] = 0;\n b[5947] = n & -16 ^ 1431655768;\n a = 4096;\n } else { a = b[5949] | 0; }\n\n i = m + 48 | 0;\n j = m + 47 | 0;\n g = a + j | 0;\n f = 0 - a | 0;\n k = g & f;\n\n if (k >>> 0 <= m >>> 0) {\n v = 0;\n S = w;\n return v | 0;\n }\n\n a = b[5939] | 0;\n\n if (a | 0 ? (l = b[5937] | 0, n = l + k | 0, n >>> 0 <= l >>> 0 | n >>> 0 > a >>> 0) : 0) {\n v = 0;\n S = w;\n return v | 0;\n }\n\n d: do { if (!(b[5940] & 4)) {\n d = b[5835] | 0;\n\n e: do { if (d) {\n e = 23764;\n\n while (1) {\n n = b[e >> 2] | 0;\n if (n >>> 0 <= d >>> 0 ? (n + (b[e + 4 >> 2] | 0) | 0) >>> 0 > d >>> 0 : 0) { break; }\n a = b[e + 8 >> 2] | 0;\n\n if (!a) {\n q = 128;\n break e;\n } else { e = a; }\n }\n\n c = g - h & f;\n\n if (c >>> 0 < 2147483647) {\n a = id(c | 0) | 0;\n\n if ((a | 0) == ((b[e >> 2] | 0) + (b[e + 4 >> 2] | 0) | 0)) {\n if ((a | 0) != (-1 | 0)) {\n h = c;\n g = a;\n q = 145;\n break d;\n }\n } else {\n e = a;\n q = 136;\n }\n } else { c = 0; }\n } else { q = 128; } } while (0);\n\n do { if ((q | 0) == 128) {\n d = id(0) | 0;\n\n if ((d | 0) != (-1 | 0) ? (c = d, o = b[5948] | 0, p = o + -1 | 0, c = ((p & c | 0) == 0 ? 0 : (p + c & 0 - o) - c | 0) + k | 0, o = b[5937] | 0, p = c + o | 0, c >>> 0 > m >>> 0 & c >>> 0 < 2147483647) : 0) {\n n = b[5939] | 0;\n\n if (n | 0 ? p >>> 0 <= o >>> 0 | p >>> 0 > n >>> 0 : 0) {\n c = 0;\n break;\n }\n\n a = id(c | 0) | 0;\n\n if ((a | 0) == (d | 0)) {\n h = c;\n g = d;\n q = 145;\n break d;\n } else {\n e = a;\n q = 136;\n }\n } else { c = 0; }\n } } while (0);\n\n do { if ((q | 0) == 136) {\n d = 0 - c | 0;\n if (!(i >>> 0 > c >>> 0 & (c >>> 0 < 2147483647 & (e | 0) != (-1 | 0)))) { if ((e | 0) == (-1 | 0)) {\n c = 0;\n break;\n } else {\n h = c;\n g = e;\n q = 145;\n break d;\n } }\n a = b[5949] | 0;\n a = j - c + a & 0 - a;\n\n if (a >>> 0 >= 2147483647) {\n h = c;\n g = e;\n q = 145;\n break d;\n }\n\n if ((id(a | 0) | 0) == (-1 | 0)) {\n id(d | 0) | 0;\n c = 0;\n break;\n } else {\n h = a + c | 0;\n g = e;\n q = 145;\n break d;\n }\n } } while (0);\n\n b[5940] = b[5940] | 4;\n q = 143;\n } else {\n c = 0;\n q = 143;\n } } while (0);\n\n if (((q | 0) == 143 ? k >>> 0 < 2147483647 : 0) ? (t = id(k | 0) | 0, p = id(0) | 0, r = p - t | 0, s = r >>> 0 > (m + 40 | 0) >>> 0, !((t | 0) == (-1 | 0) | s ^ 1 | t >>> 0 < p >>> 0 & ((t | 0) != (-1 | 0) & (p | 0) != (-1 | 0)) ^ 1)) : 0) {\n h = s ? r : c;\n g = t;\n q = 145;\n }\n\n if ((q | 0) == 145) {\n c = (b[5937] | 0) + h | 0;\n b[5937] = c;\n if (c >>> 0 > (b[5938] | 0) >>> 0) { b[5938] = c; }\n j = b[5835] | 0;\n\n f: do { if (j) {\n c = 23764;\n\n while (1) {\n a = b[c >> 2] | 0;\n d = b[c + 4 >> 2] | 0;\n\n if ((g | 0) == (a + d | 0)) {\n q = 154;\n break;\n }\n\n e = b[c + 8 >> 2] | 0;\n if (!e) { break; }else { c = e; }\n }\n\n if (((q | 0) == 154 ? (u = c + 4 | 0, (b[c + 12 >> 2] & 8 | 0) == 0) : 0) ? g >>> 0 > j >>> 0 & a >>> 0 <= j >>> 0 : 0) {\n b[u >> 2] = d + h;\n v = (b[5832] | 0) + h | 0;\n t = j + 8 | 0;\n t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n u = j + t | 0;\n t = v - t | 0;\n b[5835] = u;\n b[5832] = t;\n b[u + 4 >> 2] = t | 1;\n b[j + v + 4 >> 2] = 40;\n b[5836] = b[5951];\n break;\n }\n\n if (g >>> 0 < (b[5833] | 0) >>> 0) { b[5833] = g; }\n d = g + h | 0;\n c = 23764;\n\n while (1) {\n if ((b[c >> 2] | 0) == (d | 0)) {\n q = 162;\n break;\n }\n\n a = b[c + 8 >> 2] | 0;\n if (!a) { break; }else { c = a; }\n }\n\n if ((q | 0) == 162 ? (b[c + 12 >> 2] & 8 | 0) == 0 : 0) {\n b[c >> 2] = g;\n l = c + 4 | 0;\n b[l >> 2] = (b[l >> 2] | 0) + h;\n l = g + 8 | 0;\n l = g + ((l & 7 | 0) == 0 ? 0 : 0 - l & 7) | 0;\n c = d + 8 | 0;\n c = d + ((c & 7 | 0) == 0 ? 0 : 0 - c & 7) | 0;\n k = l + m | 0;\n i = c - l - m | 0;\n b[l + 4 >> 2] = m | 3;\n\n g: do { if ((j | 0) == (c | 0)) {\n v = (b[5832] | 0) + i | 0;\n b[5832] = v;\n b[5835] = k;\n b[k + 4 >> 2] = v | 1;\n } else {\n if ((b[5834] | 0) == (c | 0)) {\n v = (b[5831] | 0) + i | 0;\n b[5831] = v;\n b[5834] = k;\n b[k + 4 >> 2] = v | 1;\n b[k + v >> 2] = v;\n break;\n }\n\n a = b[c + 4 >> 2] | 0;\n\n if ((a & 3 | 0) == 1) {\n h = a & -8;\n e = a >>> 3;\n\n h: do { if (a >>> 0 < 256) {\n a = b[c + 8 >> 2] | 0;\n d = b[c + 12 >> 2] | 0;\n\n if ((d | 0) == (a | 0)) {\n b[5829] = b[5829] & ~(1 << e);\n break;\n } else {\n b[a + 12 >> 2] = d;\n b[d + 8 >> 2] = a;\n break;\n }\n } else {\n g = b[c + 24 >> 2] | 0;\n a = b[c + 12 >> 2] | 0;\n\n do { if ((a | 0) == (c | 0)) {\n d = c + 16 | 0;\n e = d + 4 | 0;\n a = b[e >> 2] | 0;\n\n if (!a) {\n a = b[d >> 2] | 0;\n\n if (!a) {\n a = 0;\n break;\n }\n } else { d = e; }\n\n while (1) {\n f = a + 20 | 0;\n e = b[f >> 2] | 0;\n\n if (!e) {\n f = a + 16 | 0;\n e = b[f >> 2] | 0;\n if (!e) { break; }else {\n a = e;\n d = f;\n }\n } else {\n a = e;\n d = f;\n }\n }\n\n b[d >> 2] = 0;\n } else {\n v = b[c + 8 >> 2] | 0;\n b[v + 12 >> 2] = a;\n b[a + 8 >> 2] = v;\n } } while (0);\n\n if (!g) { break; }\n d = b[c + 28 >> 2] | 0;\n e = 23620 + (d << 2) | 0;\n\n do { if ((b[e >> 2] | 0) != (c | 0)) {\n v = g + 16 | 0;\n b[((b[v >> 2] | 0) == (c | 0) ? v : g + 20 | 0) >> 2] = a;\n if (!a) { break h; }\n } else {\n b[e >> 2] = a;\n if (a | 0) { break; }\n b[5830] = b[5830] & ~(1 << d);\n break h;\n } } while (0);\n\n b[a + 24 >> 2] = g;\n d = c + 16 | 0;\n e = b[d >> 2] | 0;\n\n if (e | 0) {\n b[a + 16 >> 2] = e;\n b[e + 24 >> 2] = a;\n }\n\n d = b[d + 4 >> 2] | 0;\n if (!d) { break; }\n b[a + 20 >> 2] = d;\n b[d + 24 >> 2] = a;\n } } while (0);\n\n c = c + h | 0;\n f = h + i | 0;\n } else { f = i; }\n\n c = c + 4 | 0;\n b[c >> 2] = b[c >> 2] & -2;\n b[k + 4 >> 2] = f | 1;\n b[k + f >> 2] = f;\n c = f >>> 3;\n\n if (f >>> 0 < 256) {\n d = 23356 + (c << 1 << 2) | 0;\n a = b[5829] | 0;\n c = 1 << c;\n\n if (!(a & c)) {\n b[5829] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n\n b[a >> 2] = k;\n b[c + 12 >> 2] = k;\n b[k + 8 >> 2] = c;\n b[k + 12 >> 2] = d;\n break;\n }\n\n c = f >>> 8;\n\n do { if (!c) { e = 0; }else {\n if (f >>> 0 > 16777215) {\n e = 31;\n break;\n }\n\n u = (c + 1048320 | 0) >>> 16 & 8;\n v = c << u;\n t = (v + 520192 | 0) >>> 16 & 4;\n v = v << t;\n e = (v + 245760 | 0) >>> 16 & 2;\n e = 14 - (t | u | e) + (v << e >>> 15) | 0;\n e = f >>> (e + 7 | 0) & 1 | e << 1;\n } } while (0);\n\n c = 23620 + (e << 2) | 0;\n b[k + 28 >> 2] = e;\n a = k + 16 | 0;\n b[a + 4 >> 2] = 0;\n b[a >> 2] = 0;\n a = b[5830] | 0;\n d = 1 << e;\n\n if (!(a & d)) {\n b[5830] = a | d;\n b[c >> 2] = k;\n b[k + 24 >> 2] = c;\n b[k + 12 >> 2] = k;\n b[k + 8 >> 2] = k;\n break;\n }\n\n c = b[c >> 2] | 0;\n\n i: do { if ((b[c + 4 >> 2] & -8 | 0) != (f | 0)) {\n e = f << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n\n while (1) {\n d = c + 16 + (e >>> 31 << 2) | 0;\n a = b[d >> 2] | 0;\n if (!a) { break; }\n\n if ((b[a + 4 >> 2] & -8 | 0) == (f | 0)) {\n c = a;\n break i;\n } else {\n e = e << 1;\n c = a;\n }\n }\n\n b[d >> 2] = k;\n b[k + 24 >> 2] = c;\n b[k + 12 >> 2] = k;\n b[k + 8 >> 2] = k;\n break g;\n } } while (0);\n\n u = c + 8 | 0;\n v = b[u >> 2] | 0;\n b[v + 12 >> 2] = k;\n b[u >> 2] = k;\n b[k + 8 >> 2] = v;\n b[k + 12 >> 2] = c;\n b[k + 24 >> 2] = 0;\n } } while (0);\n\n v = l + 8 | 0;\n S = w;\n return v | 0;\n }\n\n c = 23764;\n\n while (1) {\n a = b[c >> 2] | 0;\n if (a >>> 0 <= j >>> 0 ? (v = a + (b[c + 4 >> 2] | 0) | 0, v >>> 0 > j >>> 0) : 0) { break; }\n c = b[c + 8 >> 2] | 0;\n }\n\n f = v + -47 | 0;\n a = f + 8 | 0;\n a = f + ((a & 7 | 0) == 0 ? 0 : 0 - a & 7) | 0;\n f = j + 16 | 0;\n a = a >>> 0 < f >>> 0 ? j : a;\n c = a + 8 | 0;\n d = h + -40 | 0;\n t = g + 8 | 0;\n t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n u = g + t | 0;\n t = d - t | 0;\n b[5835] = u;\n b[5832] = t;\n b[u + 4 >> 2] = t | 1;\n b[g + d + 4 >> 2] = 40;\n b[5836] = b[5951];\n d = a + 4 | 0;\n b[d >> 2] = 27;\n b[c >> 2] = b[5941];\n b[c + 4 >> 2] = b[5942];\n b[c + 8 >> 2] = b[5943];\n b[c + 12 >> 2] = b[5944];\n b[5941] = g;\n b[5942] = h;\n b[5944] = 0;\n b[5943] = c;\n c = a + 24 | 0;\n\n do {\n u = c;\n c = c + 4 | 0;\n b[c >> 2] = 7;\n } while ((u + 8 | 0) >>> 0 < v >>> 0);\n\n if ((a | 0) != (j | 0)) {\n g = a - j | 0;\n b[d >> 2] = b[d >> 2] & -2;\n b[j + 4 >> 2] = g | 1;\n b[a >> 2] = g;\n c = g >>> 3;\n\n if (g >>> 0 < 256) {\n d = 23356 + (c << 1 << 2) | 0;\n a = b[5829] | 0;\n c = 1 << c;\n\n if (!(a & c)) {\n b[5829] = a | c;\n c = d;\n a = d + 8 | 0;\n } else {\n a = d + 8 | 0;\n c = b[a >> 2] | 0;\n }\n\n b[a >> 2] = j;\n b[c + 12 >> 2] = j;\n b[j + 8 >> 2] = c;\n b[j + 12 >> 2] = d;\n break;\n }\n\n c = g >>> 8;\n if (c) {\n if (g >>> 0 > 16777215) { e = 31; }else {\n u = (c + 1048320 | 0) >>> 16 & 8;\n v = c << u;\n t = (v + 520192 | 0) >>> 16 & 4;\n v = v << t;\n e = (v + 245760 | 0) >>> 16 & 2;\n e = 14 - (t | u | e) + (v << e >>> 15) | 0;\n e = g >>> (e + 7 | 0) & 1 | e << 1;\n }\n } else { e = 0; }\n d = 23620 + (e << 2) | 0;\n b[j + 28 >> 2] = e;\n b[j + 20 >> 2] = 0;\n b[f >> 2] = 0;\n c = b[5830] | 0;\n a = 1 << e;\n\n if (!(c & a)) {\n b[5830] = c | a;\n b[d >> 2] = j;\n b[j + 24 >> 2] = d;\n b[j + 12 >> 2] = j;\n b[j + 8 >> 2] = j;\n break;\n }\n\n c = b[d >> 2] | 0;\n\n j: do { if ((b[c + 4 >> 2] & -8 | 0) != (g | 0)) {\n e = g << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n\n while (1) {\n d = c + 16 + (e >>> 31 << 2) | 0;\n a = b[d >> 2] | 0;\n if (!a) { break; }\n\n if ((b[a + 4 >> 2] & -8 | 0) == (g | 0)) {\n c = a;\n break j;\n } else {\n e = e << 1;\n c = a;\n }\n }\n\n b[d >> 2] = j;\n b[j + 24 >> 2] = c;\n b[j + 12 >> 2] = j;\n b[j + 8 >> 2] = j;\n break f;\n } } while (0);\n\n u = c + 8 | 0;\n v = b[u >> 2] | 0;\n b[v + 12 >> 2] = j;\n b[u >> 2] = j;\n b[j + 8 >> 2] = v;\n b[j + 12 >> 2] = c;\n b[j + 24 >> 2] = 0;\n }\n } else {\n v = b[5833] | 0;\n if ((v | 0) == 0 | g >>> 0 < v >>> 0) { b[5833] = g; }\n b[5941] = g;\n b[5942] = h;\n b[5944] = 0;\n b[5838] = b[5947];\n b[5837] = -1;\n b[5842] = 23356;\n b[5841] = 23356;\n b[5844] = 23364;\n b[5843] = 23364;\n b[5846] = 23372;\n b[5845] = 23372;\n b[5848] = 23380;\n b[5847] = 23380;\n b[5850] = 23388;\n b[5849] = 23388;\n b[5852] = 23396;\n b[5851] = 23396;\n b[5854] = 23404;\n b[5853] = 23404;\n b[5856] = 23412;\n b[5855] = 23412;\n b[5858] = 23420;\n b[5857] = 23420;\n b[5860] = 23428;\n b[5859] = 23428;\n b[5862] = 23436;\n b[5861] = 23436;\n b[5864] = 23444;\n b[5863] = 23444;\n b[5866] = 23452;\n b[5865] = 23452;\n b[5868] = 23460;\n b[5867] = 23460;\n b[5870] = 23468;\n b[5869] = 23468;\n b[5872] = 23476;\n b[5871] = 23476;\n b[5874] = 23484;\n b[5873] = 23484;\n b[5876] = 23492;\n b[5875] = 23492;\n b[5878] = 23500;\n b[5877] = 23500;\n b[5880] = 23508;\n b[5879] = 23508;\n b[5882] = 23516;\n b[5881] = 23516;\n b[5884] = 23524;\n b[5883] = 23524;\n b[5886] = 23532;\n b[5885] = 23532;\n b[5888] = 23540;\n b[5887] = 23540;\n b[5890] = 23548;\n b[5889] = 23548;\n b[5892] = 23556;\n b[5891] = 23556;\n b[5894] = 23564;\n b[5893] = 23564;\n b[5896] = 23572;\n b[5895] = 23572;\n b[5898] = 23580;\n b[5897] = 23580;\n b[5900] = 23588;\n b[5899] = 23588;\n b[5902] = 23596;\n b[5901] = 23596;\n b[5904] = 23604;\n b[5903] = 23604;\n v = h + -40 | 0;\n t = g + 8 | 0;\n t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;\n u = g + t | 0;\n t = v - t | 0;\n b[5835] = u;\n b[5832] = t;\n b[u + 4 >> 2] = t | 1;\n b[g + v + 4 >> 2] = 40;\n b[5836] = b[5951];\n } } while (0);\n\n c = b[5832] | 0;\n\n if (c >>> 0 > m >>> 0) {\n t = c - m | 0;\n b[5832] = t;\n v = b[5835] | 0;\n u = v + m | 0;\n b[5835] = u;\n b[u + 4 >> 2] = t | 1;\n b[v + 4 >> 2] = m | 3;\n v = v + 8 | 0;\n S = w;\n return v | 0;\n }\n }\n\n v = Sc() | 0;\n b[v >> 2] = 12;\n v = 0;\n S = w;\n return v | 0;\n }\n\n function Wc(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0,\n f = 0,\n g = 0,\n h = 0,\n i = 0,\n j = 0;\n if (!a) { return; }\n d = a + -8 | 0;\n f = b[5833] | 0;\n a = b[a + -4 >> 2] | 0;\n c = a & -8;\n j = d + c | 0;\n\n do { if (!(a & 1)) {\n e = b[d >> 2] | 0;\n if (!(a & 3)) { return; }\n h = d + (0 - e) | 0;\n g = e + c | 0;\n if (h >>> 0 < f >>> 0) { return; }\n\n if ((b[5834] | 0) == (h | 0)) {\n a = j + 4 | 0;\n c = b[a >> 2] | 0;\n\n if ((c & 3 | 0) != 3) {\n i = h;\n c = g;\n break;\n }\n\n b[5831] = g;\n b[a >> 2] = c & -2;\n b[h + 4 >> 2] = g | 1;\n b[h + g >> 2] = g;\n return;\n }\n\n d = e >>> 3;\n\n if (e >>> 0 < 256) {\n a = b[h + 8 >> 2] | 0;\n c = b[h + 12 >> 2] | 0;\n\n if ((c | 0) == (a | 0)) {\n b[5829] = b[5829] & ~(1 << d);\n i = h;\n c = g;\n break;\n } else {\n b[a + 12 >> 2] = c;\n b[c + 8 >> 2] = a;\n i = h;\n c = g;\n break;\n }\n }\n\n f = b[h + 24 >> 2] | 0;\n a = b[h + 12 >> 2] | 0;\n\n do { if ((a | 0) == (h | 0)) {\n c = h + 16 | 0;\n d = c + 4 | 0;\n a = b[d >> 2] | 0;\n\n if (!a) {\n a = b[c >> 2] | 0;\n\n if (!a) {\n a = 0;\n break;\n }\n } else { c = d; }\n\n while (1) {\n e = a + 20 | 0;\n d = b[e >> 2] | 0;\n\n if (!d) {\n e = a + 16 | 0;\n d = b[e >> 2] | 0;\n if (!d) { break; }else {\n a = d;\n c = e;\n }\n } else {\n a = d;\n c = e;\n }\n }\n\n b[c >> 2] = 0;\n } else {\n i = b[h + 8 >> 2] | 0;\n b[i + 12 >> 2] = a;\n b[a + 8 >> 2] = i;\n } } while (0);\n\n if (f) {\n c = b[h + 28 >> 2] | 0;\n d = 23620 + (c << 2) | 0;\n\n if ((b[d >> 2] | 0) == (h | 0)) {\n b[d >> 2] = a;\n\n if (!a) {\n b[5830] = b[5830] & ~(1 << c);\n i = h;\n c = g;\n break;\n }\n } else {\n i = f + 16 | 0;\n b[((b[i >> 2] | 0) == (h | 0) ? i : f + 20 | 0) >> 2] = a;\n\n if (!a) {\n i = h;\n c = g;\n break;\n }\n }\n\n b[a + 24 >> 2] = f;\n c = h + 16 | 0;\n d = b[c >> 2] | 0;\n\n if (d | 0) {\n b[a + 16 >> 2] = d;\n b[d + 24 >> 2] = a;\n }\n\n c = b[c + 4 >> 2] | 0;\n\n if (c) {\n b[a + 20 >> 2] = c;\n b[c + 24 >> 2] = a;\n i = h;\n c = g;\n } else {\n i = h;\n c = g;\n }\n } else {\n i = h;\n c = g;\n }\n } else {\n i = d;\n h = d;\n } } while (0);\n\n if (h >>> 0 >= j >>> 0) { return; }\n a = j + 4 | 0;\n e = b[a >> 2] | 0;\n if (!(e & 1)) { return; }\n\n if (!(e & 2)) {\n if ((b[5835] | 0) == (j | 0)) {\n j = (b[5832] | 0) + c | 0;\n b[5832] = j;\n b[5835] = i;\n b[i + 4 >> 2] = j | 1;\n if ((i | 0) != (b[5834] | 0)) { return; }\n b[5834] = 0;\n b[5831] = 0;\n return;\n }\n\n if ((b[5834] | 0) == (j | 0)) {\n j = (b[5831] | 0) + c | 0;\n b[5831] = j;\n b[5834] = h;\n b[i + 4 >> 2] = j | 1;\n b[h + j >> 2] = j;\n return;\n }\n\n f = (e & -8) + c | 0;\n d = e >>> 3;\n\n do { if (e >>> 0 < 256) {\n c = b[j + 8 >> 2] | 0;\n a = b[j + 12 >> 2] | 0;\n\n if ((a | 0) == (c | 0)) {\n b[5829] = b[5829] & ~(1 << d);\n break;\n } else {\n b[c + 12 >> 2] = a;\n b[a + 8 >> 2] = c;\n break;\n }\n } else {\n g = b[j + 24 >> 2] | 0;\n a = b[j + 12 >> 2] | 0;\n\n do { if ((a | 0) == (j | 0)) {\n c = j + 16 | 0;\n d = c + 4 | 0;\n a = b[d >> 2] | 0;\n\n if (!a) {\n a = b[c >> 2] | 0;\n\n if (!a) {\n d = 0;\n break;\n }\n } else { c = d; }\n\n while (1) {\n e = a + 20 | 0;\n d = b[e >> 2] | 0;\n\n if (!d) {\n e = a + 16 | 0;\n d = b[e >> 2] | 0;\n if (!d) { break; }else {\n a = d;\n c = e;\n }\n } else {\n a = d;\n c = e;\n }\n }\n\n b[c >> 2] = 0;\n d = a;\n } else {\n d = b[j + 8 >> 2] | 0;\n b[d + 12 >> 2] = a;\n b[a + 8 >> 2] = d;\n d = a;\n } } while (0);\n\n if (g | 0) {\n a = b[j + 28 >> 2] | 0;\n c = 23620 + (a << 2) | 0;\n\n if ((b[c >> 2] | 0) == (j | 0)) {\n b[c >> 2] = d;\n\n if (!d) {\n b[5830] = b[5830] & ~(1 << a);\n break;\n }\n } else {\n e = g + 16 | 0;\n b[((b[e >> 2] | 0) == (j | 0) ? e : g + 20 | 0) >> 2] = d;\n if (!d) { break; }\n }\n\n b[d + 24 >> 2] = g;\n a = j + 16 | 0;\n c = b[a >> 2] | 0;\n\n if (c | 0) {\n b[d + 16 >> 2] = c;\n b[c + 24 >> 2] = d;\n }\n\n a = b[a + 4 >> 2] | 0;\n\n if (a | 0) {\n b[d + 20 >> 2] = a;\n b[a + 24 >> 2] = d;\n }\n }\n } } while (0);\n\n b[i + 4 >> 2] = f | 1;\n b[h + f >> 2] = f;\n\n if ((i | 0) == (b[5834] | 0)) {\n b[5831] = f;\n return;\n }\n } else {\n b[a >> 2] = e & -2;\n b[i + 4 >> 2] = c | 1;\n b[h + c >> 2] = c;\n f = c;\n }\n\n a = f >>> 3;\n\n if (f >>> 0 < 256) {\n d = 23356 + (a << 1 << 2) | 0;\n c = b[5829] | 0;\n a = 1 << a;\n\n if (!(c & a)) {\n b[5829] = c | a;\n a = d;\n c = d + 8 | 0;\n } else {\n c = d + 8 | 0;\n a = b[c >> 2] | 0;\n }\n\n b[c >> 2] = i;\n b[a + 12 >> 2] = i;\n b[i + 8 >> 2] = a;\n b[i + 12 >> 2] = d;\n return;\n }\n\n a = f >>> 8;\n if (a) {\n if (f >>> 0 > 16777215) { e = 31; }else {\n h = (a + 1048320 | 0) >>> 16 & 8;\n j = a << h;\n g = (j + 520192 | 0) >>> 16 & 4;\n j = j << g;\n e = (j + 245760 | 0) >>> 16 & 2;\n e = 14 - (g | h | e) + (j << e >>> 15) | 0;\n e = f >>> (e + 7 | 0) & 1 | e << 1;\n }\n } else { e = 0; }\n a = 23620 + (e << 2) | 0;\n b[i + 28 >> 2] = e;\n b[i + 20 >> 2] = 0;\n b[i + 16 >> 2] = 0;\n c = b[5830] | 0;\n d = 1 << e;\n\n a: do { if (!(c & d)) {\n b[5830] = c | d;\n b[a >> 2] = i;\n b[i + 24 >> 2] = a;\n b[i + 12 >> 2] = i;\n b[i + 8 >> 2] = i;\n } else {\n a = b[a >> 2] | 0;\n\n b: do { if ((b[a + 4 >> 2] & -8 | 0) != (f | 0)) {\n e = f << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);\n\n while (1) {\n d = a + 16 + (e >>> 31 << 2) | 0;\n c = b[d >> 2] | 0;\n if (!c) { break; }\n\n if ((b[c + 4 >> 2] & -8 | 0) == (f | 0)) {\n a = c;\n break b;\n } else {\n e = e << 1;\n a = c;\n }\n }\n\n b[d >> 2] = i;\n b[i + 24 >> 2] = a;\n b[i + 12 >> 2] = i;\n b[i + 8 >> 2] = i;\n break a;\n } } while (0);\n\n h = a + 8 | 0;\n j = b[h >> 2] | 0;\n b[j + 12 >> 2] = i;\n b[h >> 2] = i;\n b[i + 8 >> 2] = j;\n b[i + 12 >> 2] = a;\n b[i + 24 >> 2] = 0;\n } } while (0);\n\n j = (b[5837] | 0) + -1 | 0;\n b[5837] = j;\n if (j | 0) { return; }\n a = 23772;\n\n while (1) {\n a = b[a >> 2] | 0;\n if (!a) { break; }else { a = a + 8 | 0; }\n }\n\n b[5837] = -1;\n return;\n }\n\n function Xc(a, c) {\n a = a | 0;\n c = c | 0;\n var d = 0;\n\n if (a) {\n d = B(c, a) | 0;\n if ((c | a) >>> 0 > 65535) { d = ((d >>> 0) / (a >>> 0) | 0 | 0) == (c | 0) ? d : -1; }\n } else { d = 0; }\n\n a = Vc(d) | 0;\n if (!a) { return a | 0; }\n if (!(b[a + -4 >> 2] & 3)) { return a | 0; }\n gd(a | 0, 0, d | 0) | 0;\n return a | 0;\n }\n\n function Yc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n c = a + c >>> 0;\n return (F(b + d + (c >>> 0 < a >>> 0 | 0) >>> 0 | 0), c | 0) | 0;\n }\n\n function Zc(a, b, c, d) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n d = d | 0;\n d = b - d - (c >>> 0 > a >>> 0 | 0) >>> 0;\n return (F(d | 0), a - c >>> 0 | 0) | 0;\n }\n\n function _c(a) {\n a = a | 0;\n return (a ? 31 - (D(a ^ a - 1) | 0) | 0 : 32) | 0;\n }\n\n function $c(a, c, d, e, f) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n f = f | 0;\n var g = 0,\n h = 0,\n i = 0,\n j = 0,\n k = 0,\n l = 0,\n m = 0,\n n = 0,\n o = 0,\n p = 0;\n l = a;\n j = c;\n k = j;\n h = d;\n n = e;\n i = n;\n\n if (!k) {\n g = (f | 0) != 0;\n\n if (!i) {\n if (g) {\n b[f >> 2] = (l >>> 0) % (h >>> 0);\n b[f + 4 >> 2] = 0;\n }\n\n n = 0;\n f = (l >>> 0) / (h >>> 0) >>> 0;\n return (F(n | 0), f) | 0;\n } else {\n if (!g) {\n n = 0;\n f = 0;\n return (F(n | 0), f) | 0;\n }\n\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = c & 0;\n n = 0;\n f = 0;\n return (F(n | 0), f) | 0;\n }\n }\n\n g = (i | 0) == 0;\n\n do { if (h) {\n if (!g) {\n g = (D(i | 0) | 0) - (D(k | 0) | 0) | 0;\n\n if (g >>> 0 <= 31) {\n m = g + 1 | 0;\n i = 31 - g | 0;\n c = g - 31 >> 31;\n h = m;\n a = l >>> (m >>> 0) & c | k << i;\n c = k >>> (m >>> 0) & c;\n g = 0;\n i = l << i;\n break;\n }\n\n if (!f) {\n n = 0;\n f = 0;\n return (F(n | 0), f) | 0;\n }\n\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = j | c & 0;\n n = 0;\n f = 0;\n return (F(n | 0), f) | 0;\n }\n\n g = h - 1 | 0;\n\n if (g & h | 0) {\n i = (D(h | 0) | 0) + 33 - (D(k | 0) | 0) | 0;\n p = 64 - i | 0;\n m = 32 - i | 0;\n j = m >> 31;\n o = i - 32 | 0;\n c = o >> 31;\n h = i;\n a = m - 1 >> 31 & k >>> (o >>> 0) | (k << m | l >>> (i >>> 0)) & c;\n c = c & k >>> (i >>> 0);\n g = l << p & j;\n i = (k << p | l >>> (o >>> 0)) & j | l << m & i - 33 >> 31;\n break;\n }\n\n if (f | 0) {\n b[f >> 2] = g & l;\n b[f + 4 >> 2] = 0;\n }\n\n if ((h | 0) == 1) {\n o = j | c & 0;\n p = a | 0 | 0;\n return (F(o | 0), p) | 0;\n } else {\n p = _c(h | 0) | 0;\n o = k >>> (p >>> 0) | 0;\n p = k << 32 - p | l >>> (p >>> 0) | 0;\n return (F(o | 0), p) | 0;\n }\n } else {\n if (g) {\n if (f | 0) {\n b[f >> 2] = (k >>> 0) % (h >>> 0);\n b[f + 4 >> 2] = 0;\n }\n\n o = 0;\n p = (k >>> 0) / (h >>> 0) >>> 0;\n return (F(o | 0), p) | 0;\n }\n\n if (!l) {\n if (f | 0) {\n b[f >> 2] = 0;\n b[f + 4 >> 2] = (k >>> 0) % (i >>> 0);\n }\n\n o = 0;\n p = (k >>> 0) / (i >>> 0) >>> 0;\n return (F(o | 0), p) | 0;\n }\n\n g = i - 1 | 0;\n\n if (!(g & i)) {\n if (f | 0) {\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = g & k | c & 0;\n }\n\n o = 0;\n p = k >>> ((_c(i | 0) | 0) >>> 0);\n return (F(o | 0), p) | 0;\n }\n\n g = (D(i | 0) | 0) - (D(k | 0) | 0) | 0;\n\n if (g >>> 0 <= 30) {\n c = g + 1 | 0;\n i = 31 - g | 0;\n h = c;\n a = k << i | l >>> (c >>> 0);\n c = k >>> (c >>> 0);\n g = 0;\n i = l << i;\n break;\n }\n\n if (!f) {\n o = 0;\n p = 0;\n return (F(o | 0), p) | 0;\n }\n\n b[f >> 2] = a | 0;\n b[f + 4 >> 2] = j | c & 0;\n o = 0;\n p = 0;\n return (F(o | 0), p) | 0;\n } } while (0);\n\n if (!h) {\n k = i;\n j = 0;\n i = 0;\n } else {\n m = d | 0 | 0;\n l = n | e & 0;\n k = Yc(m | 0, l | 0, -1, -1) | 0;\n d = G() | 0;\n j = i;\n i = 0;\n\n do {\n e = j;\n j = g >>> 31 | j << 1;\n g = i | g << 1;\n e = a << 1 | e >>> 31 | 0;\n n = a >>> 31 | c << 1 | 0;\n Zc(k | 0, d | 0, e | 0, n | 0) | 0;\n p = G() | 0;\n o = p >> 31 | ((p | 0) < 0 ? -1 : 0) << 1;\n i = o & 1;\n a = Zc(e | 0, n | 0, o & m | 0, (((p | 0) < 0 ? -1 : 0) >> 31 | ((p | 0) < 0 ? -1 : 0) << 1) & l | 0) | 0;\n c = G() | 0;\n h = h - 1 | 0;\n } while ((h | 0) != 0);\n\n k = j;\n j = 0;\n }\n\n h = 0;\n\n if (f | 0) {\n b[f >> 2] = a;\n b[f + 4 >> 2] = c;\n }\n\n o = (g | 0) >>> 31 | (k | h) << 1 | (h << 1 | g >>> 31) & 0 | j;\n p = (g << 1 | 0 >>> 31) & -2 | i;\n return (F(o | 0), p) | 0;\n }\n\n function ad(a, c, d, e) {\n a = a | 0;\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0;\n g = S;\n S = S + 16 | 0;\n f = g | 0;\n $c(a, c, d, e, f) | 0;\n S = g;\n return (F(b[f + 4 >> 2] | 0), b[f >> 2] | 0) | 0;\n }\n\n function bd(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n\n if ((c | 0) < 32) {\n F(b >>> c | 0);\n return a >>> c | (b & (1 << c) - 1) << 32 - c;\n }\n\n F(0);\n return b >>> c - 32 | 0;\n }\n\n function cd(a, b, c) {\n a = a | 0;\n b = b | 0;\n c = c | 0;\n\n if ((c | 0) < 32) {\n F(b << c | (a & (1 << c) - 1 << 32 - c) >>> 32 - c | 0);\n return a << c;\n }\n\n F(a << c - 32 | 0);\n return 0;\n }\n\n function dd(a, b) {\n a = +a;\n b = +b;\n if (a != a) { return +b; }\n if (b != b) { return +a; }\n return +C(+a, +b);\n }\n\n function ed(a) {\n a = +a;\n return a >= 0.0 ? +p(a + .5) : +A(a - .5);\n }\n\n function fd(c, d, e) {\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0;\n\n if ((e | 0) >= 8192) {\n K(c | 0, d | 0, e | 0) | 0;\n return c | 0;\n }\n\n h = c | 0;\n g = c + e | 0;\n\n if ((c & 3) == (d & 3)) {\n while (c & 3) {\n if (!e) { return h | 0; }\n a[c >> 0] = a[d >> 0] | 0;\n c = c + 1 | 0;\n d = d + 1 | 0;\n e = e - 1 | 0;\n }\n\n e = g & -4 | 0;\n f = e - 64 | 0;\n\n while ((c | 0) <= (f | 0)) {\n b[c >> 2] = b[d >> 2];\n b[c + 4 >> 2] = b[d + 4 >> 2];\n b[c + 8 >> 2] = b[d + 8 >> 2];\n b[c + 12 >> 2] = b[d + 12 >> 2];\n b[c + 16 >> 2] = b[d + 16 >> 2];\n b[c + 20 >> 2] = b[d + 20 >> 2];\n b[c + 24 >> 2] = b[d + 24 >> 2];\n b[c + 28 >> 2] = b[d + 28 >> 2];\n b[c + 32 >> 2] = b[d + 32 >> 2];\n b[c + 36 >> 2] = b[d + 36 >> 2];\n b[c + 40 >> 2] = b[d + 40 >> 2];\n b[c + 44 >> 2] = b[d + 44 >> 2];\n b[c + 48 >> 2] = b[d + 48 >> 2];\n b[c + 52 >> 2] = b[d + 52 >> 2];\n b[c + 56 >> 2] = b[d + 56 >> 2];\n b[c + 60 >> 2] = b[d + 60 >> 2];\n c = c + 64 | 0;\n d = d + 64 | 0;\n }\n\n while ((c | 0) < (e | 0)) {\n b[c >> 2] = b[d >> 2];\n c = c + 4 | 0;\n d = d + 4 | 0;\n }\n } else {\n e = g - 4 | 0;\n\n while ((c | 0) < (e | 0)) {\n a[c >> 0] = a[d >> 0] | 0;\n a[c + 1 >> 0] = a[d + 1 >> 0] | 0;\n a[c + 2 >> 0] = a[d + 2 >> 0] | 0;\n a[c + 3 >> 0] = a[d + 3 >> 0] | 0;\n c = c + 4 | 0;\n d = d + 4 | 0;\n }\n }\n\n while ((c | 0) < (g | 0)) {\n a[c >> 0] = a[d >> 0] | 0;\n c = c + 1 | 0;\n d = d + 1 | 0;\n }\n\n return h | 0;\n }\n\n function gd(c, d, e) {\n c = c | 0;\n d = d | 0;\n e = e | 0;\n var f = 0,\n g = 0,\n h = 0,\n i = 0;\n h = c + e | 0;\n d = d & 255;\n\n if ((e | 0) >= 67) {\n while (c & 3) {\n a[c >> 0] = d;\n c = c + 1 | 0;\n }\n\n f = h & -4 | 0;\n i = d | d << 8 | d << 16 | d << 24;\n g = f - 64 | 0;\n\n while ((c | 0) <= (g | 0)) {\n b[c >> 2] = i;\n b[c + 4 >> 2] = i;\n b[c + 8 >> 2] = i;\n b[c + 12 >> 2] = i;\n b[c + 16 >> 2] = i;\n b[c + 20 >> 2] = i;\n b[c + 24 >> 2] = i;\n b[c + 28 >> 2] = i;\n b[c + 32 >> 2] = i;\n b[c + 36 >> 2] = i;\n b[c + 40 >> 2] = i;\n b[c + 44 >> 2] = i;\n b[c + 48 >> 2] = i;\n b[c + 52 >> 2] = i;\n b[c + 56 >> 2] = i;\n b[c + 60 >> 2] = i;\n c = c + 64 | 0;\n }\n\n while ((c | 0) < (f | 0)) {\n b[c >> 2] = i;\n c = c + 4 | 0;\n }\n }\n\n while ((c | 0) < (h | 0)) {\n a[c >> 0] = d;\n c = c + 1 | 0;\n }\n\n return h - e | 0;\n }\n\n function hd(a) {\n a = +a;\n return a >= 0.0 ? +p(a + .5) : +A(a - .5);\n }\n\n function id(a) {\n a = a | 0;\n var c = 0,\n d = 0,\n e = 0;\n e = J() | 0;\n d = b[g >> 2] | 0;\n c = d + a | 0;\n\n if ((a | 0) > 0 & (c | 0) < (d | 0) | (c | 0) < 0) {\n M(c | 0) | 0;\n I(12);\n return -1;\n }\n\n if ((c | 0) > (e | 0)) { if (!(L(c | 0) | 0)) {\n I(12);\n return -1;\n } }\n b[g >> 2] = c;\n return d | 0;\n } // EMSCRIPTEN_END_FUNCS\n\n\n return {\n ___uremdi3: ad,\n _bitshift64Lshr: bd,\n _bitshift64Shl: cd,\n _calloc: Xc,\n _cellAreaKm2: ub,\n _cellAreaM2: vb,\n _cellAreaRads2: tb,\n _compact: Gb,\n _destroyLinkedPolygon: ic,\n _edgeLengthKm: pb,\n _edgeLengthM: qb,\n _emscripten_replace_memory: V,\n _exactEdgeLengthKm: xb,\n _exactEdgeLengthM: yb,\n _exactEdgeLengthRads: wb,\n _experimentalH3ToLocalIj: nc,\n _experimentalLocalIjToH3: oc,\n _free: Wc,\n _geoToH3: Rb,\n _getDestinationH3IndexFromUnidirectionalEdge: bc,\n _getH3IndexesFromUnidirectionalEdge: dc,\n _getH3UnidirectionalEdge: $b,\n _getH3UnidirectionalEdgeBoundary: fc,\n _getH3UnidirectionalEdgesFromHexagon: ec,\n _getOriginH3IndexFromUnidirectionalEdge: ac,\n _getPentagonIndexes: Zb,\n _getRes0Indexes: va,\n _h3Distance: pc,\n _h3GetBaseCell: zb,\n _h3GetFaces: Xb,\n _h3IndexesAreNeighbors: _b,\n _h3IsPentagon: Eb,\n _h3IsResClassIII: Jb,\n _h3IsValid: Ab,\n _h3Line: rc,\n _h3LineSize: qc,\n _h3SetToLinkedGeo: ka,\n _h3ToCenterChild: Fb,\n _h3ToChildren: Db,\n _h3ToGeo: Ub,\n _h3ToGeoBoundary: Vb,\n _h3ToParent: Bb,\n _h3UnidirectionalEdgeIsValid: cc,\n _hexAreaKm2: nb,\n _hexAreaM2: ob,\n _hexRing: ea,\n _i64Subtract: Zc,\n _kRing: $,\n _kRingDistances: aa,\n _llvm_minnum_f64: dd,\n _llvm_round_f64: ed,\n _malloc: Vc,\n _maxFaceCount: Wb,\n _maxH3ToChildrenSize: Cb,\n _maxKringSize: _,\n _maxPolyfillSize: fa,\n _maxUncompactSize: Ib,\n _memcpy: fd,\n _memset: gd,\n _numHexagons: rb,\n _pentagonIndexCount: Yb,\n _pointDistKm: jb,\n _pointDistM: kb,\n _pointDistRads: ib,\n _polyfill: ga,\n _res0IndexCount: ua,\n _round: hd,\n _sbrk: id,\n _sizeOfCoordIJ: Dc,\n _sizeOfGeoBoundary: zc,\n _sizeOfGeoCoord: yc,\n _sizeOfGeoPolygon: Bc,\n _sizeOfGeofence: Ac,\n _sizeOfH3Index: xc,\n _sizeOfLinkedGeoPolygon: Cc,\n _uncompact: Hb,\n establishStackSpace: Z,\n stackAlloc: W,\n stackRestore: Y,\n stackSave: X\n };\n }( // EMSCRIPTEN_END_ASM\n asmGlobalArg, asmLibraryArg, buffer);\n\n var ___uremdi3 = Module[\"___uremdi3\"] = asm[\"___uremdi3\"];\n\n var _bitshift64Lshr = Module[\"_bitshift64Lshr\"] = asm[\"_bitshift64Lshr\"];\n\n var _bitshift64Shl = Module[\"_bitshift64Shl\"] = asm[\"_bitshift64Shl\"];\n\n var _calloc = Module[\"_calloc\"] = asm[\"_calloc\"];\n\n var _cellAreaKm2 = Module[\"_cellAreaKm2\"] = asm[\"_cellAreaKm2\"];\n\n var _cellAreaM2 = Module[\"_cellAreaM2\"] = asm[\"_cellAreaM2\"];\n\n var _cellAreaRads2 = Module[\"_cellAreaRads2\"] = asm[\"_cellAreaRads2\"];\n\n var _compact = Module[\"_compact\"] = asm[\"_compact\"];\n\n var _destroyLinkedPolygon = Module[\"_destroyLinkedPolygon\"] = asm[\"_destroyLinkedPolygon\"];\n\n var _edgeLengthKm = Module[\"_edgeLengthKm\"] = asm[\"_edgeLengthKm\"];\n\n var _edgeLengthM = Module[\"_edgeLengthM\"] = asm[\"_edgeLengthM\"];\n\n var _emscripten_replace_memory = Module[\"_emscripten_replace_memory\"] = asm[\"_emscripten_replace_memory\"];\n\n var _exactEdgeLengthKm = Module[\"_exactEdgeLengthKm\"] = asm[\"_exactEdgeLengthKm\"];\n\n var _exactEdgeLengthM = Module[\"_exactEdgeLengthM\"] = asm[\"_exactEdgeLengthM\"];\n\n var _exactEdgeLengthRads = Module[\"_exactEdgeLengthRads\"] = asm[\"_exactEdgeLengthRads\"];\n\n var _experimentalH3ToLocalIj = Module[\"_experimentalH3ToLocalIj\"] = asm[\"_experimentalH3ToLocalIj\"];\n\n var _experimentalLocalIjToH3 = Module[\"_experimentalLocalIjToH3\"] = asm[\"_experimentalLocalIjToH3\"];\n\n var _free = Module[\"_free\"] = asm[\"_free\"];\n\n var _geoToH3 = Module[\"_geoToH3\"] = asm[\"_geoToH3\"];\n\n var _getDestinationH3IndexFromUnidirectionalEdge = Module[\"_getDestinationH3IndexFromUnidirectionalEdge\"] = asm[\"_getDestinationH3IndexFromUnidirectionalEdge\"];\n\n var _getH3IndexesFromUnidirectionalEdge = Module[\"_getH3IndexesFromUnidirectionalEdge\"] = asm[\"_getH3IndexesFromUnidirectionalEdge\"];\n\n var _getH3UnidirectionalEdge = Module[\"_getH3UnidirectionalEdge\"] = asm[\"_getH3UnidirectionalEdge\"];\n\n var _getH3UnidirectionalEdgeBoundary = Module[\"_getH3UnidirectionalEdgeBoundary\"] = asm[\"_getH3UnidirectionalEdgeBoundary\"];\n\n var _getH3UnidirectionalEdgesFromHexagon = Module[\"_getH3UnidirectionalEdgesFromHexagon\"] = asm[\"_getH3UnidirectionalEdgesFromHexagon\"];\n\n var _getOriginH3IndexFromUnidirectionalEdge = Module[\"_getOriginH3IndexFromUnidirectionalEdge\"] = asm[\"_getOriginH3IndexFromUnidirectionalEdge\"];\n\n var _getPentagonIndexes = Module[\"_getPentagonIndexes\"] = asm[\"_getPentagonIndexes\"];\n\n var _getRes0Indexes = Module[\"_getRes0Indexes\"] = asm[\"_getRes0Indexes\"];\n\n var _h3Distance = Module[\"_h3Distance\"] = asm[\"_h3Distance\"];\n\n var _h3GetBaseCell = Module[\"_h3GetBaseCell\"] = asm[\"_h3GetBaseCell\"];\n\n var _h3GetFaces = Module[\"_h3GetFaces\"] = asm[\"_h3GetFaces\"];\n\n var _h3IndexesAreNeighbors = Module[\"_h3IndexesAreNeighbors\"] = asm[\"_h3IndexesAreNeighbors\"];\n\n var _h3IsPentagon = Module[\"_h3IsPentagon\"] = asm[\"_h3IsPentagon\"];\n\n var _h3IsResClassIII = Module[\"_h3IsResClassIII\"] = asm[\"_h3IsResClassIII\"];\n\n var _h3IsValid = Module[\"_h3IsValid\"] = asm[\"_h3IsValid\"];\n\n var _h3Line = Module[\"_h3Line\"] = asm[\"_h3Line\"];\n\n var _h3LineSize = Module[\"_h3LineSize\"] = asm[\"_h3LineSize\"];\n\n var _h3SetToLinkedGeo = Module[\"_h3SetToLinkedGeo\"] = asm[\"_h3SetToLinkedGeo\"];\n\n var _h3ToCenterChild = Module[\"_h3ToCenterChild\"] = asm[\"_h3ToCenterChild\"];\n\n var _h3ToChildren = Module[\"_h3ToChildren\"] = asm[\"_h3ToChildren\"];\n\n var _h3ToGeo = Module[\"_h3ToGeo\"] = asm[\"_h3ToGeo\"];\n\n var _h3ToGeoBoundary = Module[\"_h3ToGeoBoundary\"] = asm[\"_h3ToGeoBoundary\"];\n\n var _h3ToParent = Module[\"_h3ToParent\"] = asm[\"_h3ToParent\"];\n\n var _h3UnidirectionalEdgeIsValid = Module[\"_h3UnidirectionalEdgeIsValid\"] = asm[\"_h3UnidirectionalEdgeIsValid\"];\n\n var _hexAreaKm2 = Module[\"_hexAreaKm2\"] = asm[\"_hexAreaKm2\"];\n\n var _hexAreaM2 = Module[\"_hexAreaM2\"] = asm[\"_hexAreaM2\"];\n\n var _hexRing = Module[\"_hexRing\"] = asm[\"_hexRing\"];\n\n var _i64Subtract = Module[\"_i64Subtract\"] = asm[\"_i64Subtract\"];\n\n var _kRing = Module[\"_kRing\"] = asm[\"_kRing\"];\n\n var _kRingDistances = Module[\"_kRingDistances\"] = asm[\"_kRingDistances\"];\n\n var _llvm_minnum_f64 = Module[\"_llvm_minnum_f64\"] = asm[\"_llvm_minnum_f64\"];\n\n var _llvm_round_f64 = Module[\"_llvm_round_f64\"] = asm[\"_llvm_round_f64\"];\n\n var _malloc = Module[\"_malloc\"] = asm[\"_malloc\"];\n\n var _maxFaceCount = Module[\"_maxFaceCount\"] = asm[\"_maxFaceCount\"];\n\n var _maxH3ToChildrenSize = Module[\"_maxH3ToChildrenSize\"] = asm[\"_maxH3ToChildrenSize\"];\n\n var _maxKringSize = Module[\"_maxKringSize\"] = asm[\"_maxKringSize\"];\n\n var _maxPolyfillSize = Module[\"_maxPolyfillSize\"] = asm[\"_maxPolyfillSize\"];\n\n var _maxUncompactSize = Module[\"_maxUncompactSize\"] = asm[\"_maxUncompactSize\"];\n\n var _memcpy = Module[\"_memcpy\"] = asm[\"_memcpy\"];\n\n var _memset = Module[\"_memset\"] = asm[\"_memset\"];\n\n var _numHexagons = Module[\"_numHexagons\"] = asm[\"_numHexagons\"];\n\n var _pentagonIndexCount = Module[\"_pentagonIndexCount\"] = asm[\"_pentagonIndexCount\"];\n\n var _pointDistKm = Module[\"_pointDistKm\"] = asm[\"_pointDistKm\"];\n\n var _pointDistM = Module[\"_pointDistM\"] = asm[\"_pointDistM\"];\n\n var _pointDistRads = Module[\"_pointDistRads\"] = asm[\"_pointDistRads\"];\n\n var _polyfill = Module[\"_polyfill\"] = asm[\"_polyfill\"];\n\n var _res0IndexCount = Module[\"_res0IndexCount\"] = asm[\"_res0IndexCount\"];\n\n var _round = Module[\"_round\"] = asm[\"_round\"];\n\n var _sbrk = Module[\"_sbrk\"] = asm[\"_sbrk\"];\n\n var _sizeOfCoordIJ = Module[\"_sizeOfCoordIJ\"] = asm[\"_sizeOfCoordIJ\"];\n\n var _sizeOfGeoBoundary = Module[\"_sizeOfGeoBoundary\"] = asm[\"_sizeOfGeoBoundary\"];\n\n var _sizeOfGeoCoord = Module[\"_sizeOfGeoCoord\"] = asm[\"_sizeOfGeoCoord\"];\n\n var _sizeOfGeoPolygon = Module[\"_sizeOfGeoPolygon\"] = asm[\"_sizeOfGeoPolygon\"];\n\n var _sizeOfGeofence = Module[\"_sizeOfGeofence\"] = asm[\"_sizeOfGeofence\"];\n\n var _sizeOfH3Index = Module[\"_sizeOfH3Index\"] = asm[\"_sizeOfH3Index\"];\n\n var _sizeOfLinkedGeoPolygon = Module[\"_sizeOfLinkedGeoPolygon\"] = asm[\"_sizeOfLinkedGeoPolygon\"];\n\n var _uncompact = Module[\"_uncompact\"] = asm[\"_uncompact\"];\n\n var establishStackSpace = Module[\"establishStackSpace\"] = asm[\"establishStackSpace\"];\n var stackAlloc = Module[\"stackAlloc\"] = asm[\"stackAlloc\"];\n var stackRestore = Module[\"stackRestore\"] = asm[\"stackRestore\"];\n var stackSave = Module[\"stackSave\"] = asm[\"stackSave\"];\n Module[\"asm\"] = asm;\n Module[\"cwrap\"] = cwrap;\n Module[\"setValue\"] = setValue;\n Module[\"getValue\"] = getValue;\n Module[\"getTempRet0\"] = getTempRet0;\n\n if (memoryInitializer) {\n if (!isDataURI(memoryInitializer)) {\n memoryInitializer = locateFile(memoryInitializer);\n }\n\n {\n addRunDependency(\"memory initializer\");\n\n var applyMemoryInitializer = function (data) {\n if (data.byteLength) { data = new Uint8Array(data); }\n HEAPU8.set(data, GLOBAL_BASE);\n if (Module[\"memoryInitializerRequest\"]) { delete Module[\"memoryInitializerRequest\"].response; }\n removeRunDependency(\"memory initializer\");\n };\n\n var doBrowserLoad = function () {\n readAsync(memoryInitializer, applyMemoryInitializer, function () {\n throw \"could not load memory initializer \" + memoryInitializer;\n });\n };\n\n var memoryInitializerBytes = tryParseAsDataURI(memoryInitializer);\n\n if (memoryInitializerBytes) {\n applyMemoryInitializer(memoryInitializerBytes.buffer);\n } else if (Module[\"memoryInitializerRequest\"]) {\n var useRequest = function () {\n var request = Module[\"memoryInitializerRequest\"];\n var response = request.response;\n\n if (request.status !== 200 && request.status !== 0) {\n var data = tryParseAsDataURI(Module[\"memoryInitializerRequestURL\"]);\n\n if (data) {\n response = data.buffer;\n } else {\n console.warn(\"a problem seems to have happened with Module.memoryInitializerRequest, status: \" + request.status + \", retrying \" + memoryInitializer);\n doBrowserLoad();\n return;\n }\n }\n\n applyMemoryInitializer(response);\n };\n\n if (Module[\"memoryInitializerRequest\"].response) {\n setTimeout(useRequest, 0);\n } else {\n Module[\"memoryInitializerRequest\"].addEventListener(\"load\", useRequest);\n }\n } else {\n doBrowserLoad();\n }\n }\n }\n\n var calledRun;\n\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) { run(); }\n if (!calledRun) { dependenciesFulfilled = runCaller; }\n };\n\n function run(args) {\n args = args || arguments_;\n\n if (runDependencies > 0) {\n return;\n }\n\n preRun();\n if (runDependencies > 0) { return; }\n\n function doRun() {\n if (calledRun) { return; }\n calledRun = true;\n if (ABORT) { return; }\n initRuntime();\n preMain();\n if (Module[\"onRuntimeInitialized\"]) { Module[\"onRuntimeInitialized\"](); }\n postRun();\n }\n\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function () {\n setTimeout(function () {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n }\n\n Module[\"run\"] = run;\n\n function abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n\n what += \"\";\n out(what);\n err(what);\n ABORT = true;\n throw \"abort(\" + what + \"). Build with -s ASSERTIONS=1 for more info.\";\n }\n\n Module[\"abort\"] = abort;\n\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") { Module[\"preInit\"] = [Module[\"preInit\"]]; }\n\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n }\n run();\n return libh3;\n}(typeof libh3 === 'object' ? libh3 : {});\n\n/*\n * Copyright 2018-2019 Uber Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Define the C bindings for the h3 library\n// Add some aliases to make the function definitions more intelligible\nvar NUMBER = 'number';\nvar BOOLEAN = NUMBER;\nvar H3_LOWER = NUMBER;\nvar H3_UPPER = NUMBER;\nvar RESOLUTION = NUMBER;\nvar POINTER = NUMBER; // Define the bindings to functions in the C lib. Functions are defined as\n// [name, return type, [arg types]]. You must run `npm run build-emscripten`\n// before new functions added here will be available.\n\nvar BINDINGS = [// The size functions are inserted via build/sizes.h\n['sizeOfH3Index', NUMBER], ['sizeOfGeoCoord', NUMBER], ['sizeOfGeoBoundary', NUMBER], ['sizeOfGeoPolygon', NUMBER], ['sizeOfGeofence', NUMBER], ['sizeOfLinkedGeoPolygon', NUMBER], ['sizeOfCoordIJ', NUMBER], // The remaining functions are defined in the core lib in h3Api.h\n['h3IsValid', BOOLEAN, [H3_LOWER, H3_UPPER]], ['geoToH3', H3_LOWER, [NUMBER, NUMBER, RESOLUTION]], ['h3ToGeo', null, [H3_LOWER, H3_UPPER, POINTER]], ['h3ToGeoBoundary', null, [H3_LOWER, H3_UPPER, POINTER]], ['maxKringSize', NUMBER, [NUMBER]], ['kRing', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER]], ['kRingDistances', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER, POINTER]], ['hexRing', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER]], ['maxPolyfillSize', NUMBER, [POINTER, RESOLUTION]], ['polyfill', null, [POINTER, RESOLUTION, POINTER]], ['h3SetToLinkedGeo', null, [POINTER, NUMBER, POINTER]], ['destroyLinkedPolygon', null, [POINTER]], ['compact', NUMBER, [POINTER, POINTER, NUMBER]], ['uncompact', NUMBER, [POINTER, NUMBER, POINTER, NUMBER, RESOLUTION]], ['maxUncompactSize', NUMBER, [POINTER, NUMBER, RESOLUTION]], ['h3IsPentagon', BOOLEAN, [H3_LOWER, H3_UPPER]], ['h3IsResClassIII', BOOLEAN, [H3_LOWER, H3_UPPER]], ['h3GetBaseCell', NUMBER, [H3_LOWER, H3_UPPER]], ['maxFaceCount', NUMBER, [H3_LOWER, H3_UPPER]], ['h3GetFaces', null, [H3_LOWER, H3_UPPER, POINTER]], ['h3ToParent', H3_LOWER, [H3_LOWER, H3_UPPER, RESOLUTION]], ['h3ToChildren', null, [H3_LOWER, H3_UPPER, RESOLUTION, POINTER]], ['h3ToCenterChild', H3_LOWER, [H3_LOWER, H3_UPPER, RESOLUTION]], ['maxH3ToChildrenSize', NUMBER, [H3_LOWER, H3_UPPER, RESOLUTION]], ['h3IndexesAreNeighbors', BOOLEAN, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]], ['getH3UnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]], ['getOriginH3IndexFromUnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER]], ['getDestinationH3IndexFromUnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER]], ['h3UnidirectionalEdgeIsValid', BOOLEAN, [H3_LOWER, H3_UPPER]], ['getH3IndexesFromUnidirectionalEdge', null, [H3_LOWER, H3_UPPER, POINTER]], ['getH3UnidirectionalEdgesFromHexagon', null, [H3_LOWER, H3_UPPER, POINTER]], ['getH3UnidirectionalEdgeBoundary', null, [H3_LOWER, H3_UPPER, POINTER]], ['h3Distance', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]], ['h3Line', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]], ['h3LineSize', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]], ['experimentalH3ToLocalIj', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]], ['experimentalLocalIjToH3', NUMBER, [H3_LOWER, H3_UPPER, POINTER, POINTER]], ['hexAreaM2', NUMBER, [RESOLUTION]], ['hexAreaKm2', NUMBER, [RESOLUTION]], ['edgeLengthM', NUMBER, [RESOLUTION]], ['edgeLengthKm', NUMBER, [RESOLUTION]], ['pointDistM', NUMBER, [POINTER, POINTER]], ['pointDistKm', NUMBER, [POINTER, POINTER]], ['pointDistRads', NUMBER, [POINTER, POINTER]], ['cellAreaM2', NUMBER, [H3_LOWER, H3_UPPER]], ['cellAreaKm2', NUMBER, [H3_LOWER, H3_UPPER]], ['cellAreaRads2', NUMBER, [H3_LOWER, H3_UPPER]], ['exactEdgeLengthM', NUMBER, [H3_LOWER, H3_UPPER]], ['exactEdgeLengthKm', NUMBER, [H3_LOWER, H3_UPPER]], ['exactEdgeLengthRads', NUMBER, [H3_LOWER, H3_UPPER]], ['numHexagons', NUMBER, [RESOLUTION]], ['getRes0Indexes', null, [POINTER]], ['res0IndexCount', NUMBER], ['getPentagonIndexes', null, [NUMBER, POINTER]], ['pentagonIndexCount', NUMBER]];\n\n/*\n * Copyright 2018-2019 Uber Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar H3 = {}; // Create the bound functions themselves\n\nBINDINGS.forEach(function bind(def) {\n H3[def[0]] = libh3.cwrap.apply(libh3, def);\n}); // Alias the hexidecimal base for legibility\n\nvar BASE_16 = 16; // ----------------------------------------------------------------------------\n// Byte size imports\n\nvar SZ_INT = 4;\nvar SZ_PTR = 4;\nvar SZ_DBL = 8;\nvar SZ_H3INDEX = H3.sizeOfH3Index();\nvar SZ_GEOCOORD = H3.sizeOfGeoCoord();\nvar SZ_GEOBOUNDARY = H3.sizeOfGeoBoundary();\nvar SZ_GEOPOLYGON = H3.sizeOfGeoPolygon();\nvar SZ_GEOFENCE = H3.sizeOfGeofence();\nvar SZ_LINKED_GEOPOLYGON = H3.sizeOfLinkedGeoPolygon();\nvar SZ_COORDIJ = H3.sizeOfCoordIJ(); // ----------------------------------------------------------------------------\n// Custom types\n\n/**\n * 64-bit hexidecimal string representation of an H3 index\n * @static\n * @typedef {string} H3Index\n */\n\n/**\n * 64-bit hexidecimal string representation of an H3 index,\n * or two 32-bit integers in little endian order in an array.\n * @static\n * @typedef {string | number[]} H3IndexInput\n */\n\n/**\n * Coordinates as an `{i, j}` pair\n * @static\n * @typedef CoordIJ\n * @type {Object}\n * @property {number} i\n * @property {number} j\n */\n// ----------------------------------------------------------------------------\n// Unit constants\n\n/**\n * Length/Area units\n * @static\n * @typedef UNITS\n * @type {Object}\n * @property {string} m\n * @property {string} m2\n * @property {string} km\n * @property {string} km2\n * @property {string} rads\n * @property {string} rads2\n */\n\nvar UNITS = {\n m: 'm',\n m2: 'm2',\n km: 'km',\n km2: 'km2',\n rads: 'rads',\n rads2: 'rads2'\n}; // ----------------------------------------------------------------------------\n// Utilities and helpers\n\n/**\n * Validate a resolution, throwing an error if invalid\n * @private\n * @param {mixed} res Value to validate\n * @throws {Error} Error if invalid\n */\n\nfunction validateRes(res) {\n if (typeof res !== 'number' || res < 0 || res > 15 || Math.floor(res) !== res) {\n throw new Error((\"Invalid resolution: \" + res));\n }\n}\n\nvar INVALID_HEXIDECIMAL_CHAR = /[^0-9a-fA-F]/;\n/**\n * Convert an H3 index (64-bit hexidecimal string) into a \"split long\" - a pair of 32-bit ints\n * @private\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {number[]} A two-element array with 32 lower bits and 32 upper bits\n */\n\nfunction h3IndexToSplitLong(h3Index) {\n if (Array.isArray(h3Index) && h3Index.length === 2 && Number.isInteger(h3Index[0]) && Number.isInteger(h3Index[1])) {\n return h3Index;\n }\n\n if (typeof h3Index !== 'string' || INVALID_HEXIDECIMAL_CHAR.test(h3Index)) {\n return [0, 0];\n }\n\n var upper = parseInt(h3Index.substring(0, h3Index.length - 8), BASE_16);\n var lower = parseInt(h3Index.substring(h3Index.length - 8), BASE_16);\n return [lower, upper];\n}\n/**\n * Convert a 32-bit int to a hexdecimal string\n * @private\n * @param {number} num Integer to convert\n * @return {H3Index} Hexidecimal string\n */\n\n\nfunction hexFrom32Bit(num) {\n if (num >= 0) {\n return num.toString(BASE_16);\n } // Handle negative numbers\n\n\n num = num & 0x7fffffff;\n var tempStr = zeroPad(8, num.toString(BASE_16));\n var topNum = (parseInt(tempStr[0], BASE_16) + 8).toString(BASE_16);\n tempStr = topNum + tempStr.substring(1);\n return tempStr;\n}\n/**\n * Get a H3 index from a split long (pair of 32-bit ints)\n * @private\n * @param {number} lower Lower 32 bits\n * @param {number} upper Upper 32 bits\n * @return {H3Index} H3 index\n */\n\n\nfunction splitLongToh3Index(lower, upper) {\n return hexFrom32Bit(upper) + zeroPad(8, hexFrom32Bit(lower));\n}\n/**\n * Zero-pad a string to a given length\n * @private\n * @param {number} fullLen Target length\n * @param {string} numStr String to zero-pad\n * @return {string} Zero-padded string\n */\n\n\nfunction zeroPad(fullLen, numStr) {\n var numZeroes = fullLen - numStr.length;\n var outStr = '';\n\n for (var i = 0; i < numZeroes; i++) {\n outStr += '0';\n }\n\n outStr = outStr + numStr;\n return outStr;\n}\n/**\n * Populate a C-appropriate Geofence struct from a polygon array\n * @private\n * @param {Array[]} polygonArray Polygon, as an array of coordinate pairs\n * @param {number} geofence C pointer to a Geofence struct\n * @param {boolean} isGeoJson Whether coordinates are in [lng, lat] order per GeoJSON spec\n * @return {number} C pointer to populated Geofence struct\n */\n\n\nfunction polygonArrayToGeofence(polygonArray, geofence, isGeoJson) {\n var numVerts = polygonArray.length;\n\n var geoCoordArray = libh3._calloc(numVerts, SZ_GEOCOORD); // Support [lng, lat] pairs if GeoJSON is specified\n\n\n var latIndex = isGeoJson ? 1 : 0;\n var lngIndex = isGeoJson ? 0 : 1;\n\n for (var i = 0; i < numVerts * 2; i += 2) {\n libh3.HEAPF64.set([polygonArray[i / 2][latIndex], polygonArray[i / 2][lngIndex]].map(degsToRads), geoCoordArray / SZ_DBL + i);\n }\n\n libh3.HEAPU32.set([numVerts, geoCoordArray], geofence / SZ_INT);\n return geofence;\n}\n/**\n * Create a C-appropriate GeoPolygon struct from an array of polygons\n * @private\n * @param {Array[]} coordinates Array of polygons, each an array of coordinate pairs\n * @param {boolean} isGeoJson Whether coordinates are in [lng, lat] order per GeoJSON spec\n * @return {number} C pointer to populated GeoPolygon struct\n */\n\n\nfunction coordinatesToGeoPolygon(coordinates, isGeoJson) {\n // Any loops beyond the first loop are holes\n var numHoles = coordinates.length - 1;\n\n var geoPolygon = libh3._calloc(SZ_GEOPOLYGON); // Byte positions within the struct\n\n\n var geofenceOffset = 0;\n var numHolesOffset = geofenceOffset + SZ_GEOFENCE;\n var holesOffset = numHolesOffset + SZ_INT; // geofence is first part of struct\n\n polygonArrayToGeofence(coordinates[0], geoPolygon + geofenceOffset, isGeoJson);\n var holes;\n\n if (numHoles > 0) {\n holes = libh3._calloc(numHoles, SZ_GEOFENCE);\n\n for (var i = 0; i < numHoles; i++) {\n polygonArrayToGeofence(coordinates[i + 1], holes + SZ_GEOFENCE * i, isGeoJson);\n }\n }\n\n libh3.setValue(geoPolygon + numHolesOffset, numHoles, 'i32');\n libh3.setValue(geoPolygon + holesOffset, holes, 'i32');\n return geoPolygon;\n}\n/**\n * Free memory allocated for a GeoPolygon struct. It is an error to access the struct\n * after passing it to this method.\n * @private\n * @return {number} geoPolygon C pointer to populated GeoPolygon struct\n */\n\n\nfunction destroyGeoPolygon(geoPolygon) {\n // Byte positions within the struct\n var geofenceOffset = 0;\n var numHolesOffset = geofenceOffset + SZ_GEOFENCE;\n var holesOffset = numHolesOffset + SZ_INT; // Free the outer loop\n\n libh3._free(libh3.getValue(geoPolygon + geofenceOffset, 'i8*')); // Free the holes, if any\n\n\n var numHoles = libh3.getValue(geoPolygon + numHolesOffset, 'i32');\n\n for (var i = 0; i < numHoles; i++) {\n libh3._free(libh3.getValue(geoPolygon + holesOffset + SZ_GEOFENCE * i, 'i8*'));\n }\n\n libh3._free(geoPolygon);\n}\n/**\n * Read a long value, returning the lower and upper portions as separate 32-bit integers.\n * Because the upper bits are returned via side effect, the argument to this function is\n * intended to be the invocation that caused the side effect, e.g. readLong(H3.getSomeLong())\n * @private\n * @param {number} invocation Invoked function returning a long value. The actual return\n * value of these functions is a 32-bit integer.\n * @return {number} Long value as a [lower, upper] pair\n */\n\n\nfunction readLong(invocation) {\n // Upper 32-bits of the long set via side-effect\n var upper = libh3.getTempRet0();\n return [invocation, upper];\n}\n/**\n * Read an H3 index from a C return value. As with readLong, the argument to this function\n * is intended to be an invocation, e.g. readH3Index(H3.getSomeAddress()), to help ensure that\n * the temp value storing the upper bits of the long is still set.\n * @private\n * @param {number} invocation Invoked function returning a single H3 index\n * @return {H3Index} H3 index, or null if index was invalid\n */\n\n\nfunction readH3Index(invocation) {\n var ref = readLong(invocation);\n var lower = ref[0];\n var upper = ref[1]; // The lower bits are allowed to be 0s, but if the upper bits are 0\n // this represents an invalid H3 index\n\n return upper ? splitLongToh3Index(lower, upper) : null;\n}\n/**\n * Read an H3 index from a pointer to C memory.\n * @private\n * @param {number} cAddress Pointer to allocated C memory\n * @param {number} offset Offset, in number of H3 indexes, in case we're\n * reading an array\n * @return {H3Index} H3 index, or null if index was invalid\n */\n\n\nfunction readH3IndexFromPointer(cAddress, offset) {\n if ( offset === void 0 ) offset = 0;\n\n var lower = libh3.getValue(cAddress + SZ_INT * offset * 2, 'i32');\n var upper = libh3.getValue(cAddress + SZ_INT * (offset * 2 + 1), 'i32'); // The lower bits are allowed to be 0s, but if the upper bits are 0\n // this represents an invalid H3 index\n\n return upper ? splitLongToh3Index(lower, upper) : null;\n}\n/**\n * Store an H3 index in C memory. Primarily used as an efficient way to\n * write sets of hexagons.\n * @private\n * @param {H3IndexInput} h3Index H3 index to store\n * @param {number} cAddress Pointer to allocated C memory\n * @param {number} offset Offset, in number of H3 indexes from beginning\n * of the current array\n */\n\n\nfunction storeH3Index(h3Index, cAddress, offset) {\n // HEAPU32 is a typed array projection on the index space\n // as unsigned 32-bit integers. This means the index needs\n // to be divided by SZ_INT (4) to access correctly. Also,\n // the H3 index is 64 bits, so we skip by twos as we're writing\n // to 32-bit integers in the proper order.\n libh3.HEAPU32.set(h3IndexToSplitLong(h3Index), cAddress / SZ_INT + 2 * offset);\n}\n/**\n * Read an array of 64-bit H3 indexes from C and convert to a JS array of\n * H3 index strings\n * @private\n * @param {number} cAddress Pointer to C ouput array\n * @param {number} maxCount Max number of hexagons in array. Hexagons with\n * the value 0 will be skipped, so this isn't\n * necessarily the length of the output array.\n * @return {H3Index[]} Array of H3 indexes\n */\n\n\nfunction readArrayOfHexagons(cAddress, maxCount) {\n var out = [];\n\n for (var i = 0; i < maxCount; i++) {\n var h3Index = readH3IndexFromPointer(cAddress, i);\n\n if (h3Index !== null) {\n out.push(h3Index);\n }\n }\n\n return out;\n}\n/**\n * Store an array of H3 index strings as a C array of 64-bit integers.\n * @private\n * @param {number} cAddress Pointer to C input array\n * @param {H3IndexInput[]} hexagons H3 indexes to pass to the C lib\n */\n\n\nfunction storeArrayOfHexagons(cAddress, hexagons) {\n // Assuming the cAddress points to an already appropriately\n // allocated space\n var count = hexagons.length;\n\n for (var i = 0; i < count; i++) {\n storeH3Index(hexagons[i], cAddress, i);\n }\n}\n/**\n * Populate a C-appropriate GeoCoord struct from a [lat, lng] array\n * @private\n * @param {number} lat Coordinate latitude\n * @param {number} lng Coordinate longitude\n * @return {number} C pointer to populated GeoCoord struct\n */\n\n\nfunction storeGeoCoord(lat, lng) {\n var geoCoord = libh3._calloc(1, SZ_GEOCOORD);\n\n libh3.HEAPF64.set([lat, lng].map(degsToRads), geoCoord / SZ_DBL);\n return geoCoord;\n}\n\nfunction readSingleCoord(cAddress) {\n return radsToDegs(libh3.getValue(cAddress, 'double'));\n}\n/**\n * Read a GeoCoord from C and return a [lat, lng] pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {number[]} [lat, lng] pair\n */\n\n\nfunction readGeoCoord(cAddress) {\n return [readSingleCoord(cAddress), readSingleCoord(cAddress + SZ_DBL)];\n}\n/**\n * Read a GeoCoord from C and return a GeoJSON-style [lng, lat] pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {number[]} [lng, lat] pair\n */\n\n\nfunction readGeoCoordGeoJson(cAddress) {\n return [readSingleCoord(cAddress + SZ_DBL), readSingleCoord(cAddress)];\n}\n/**\n * Read the GeoBoundary structure into a list of geo coordinate pairs\n * @private\n * @param {number} geoBoundary C pointer to GeoBoundary struct\n * @param {boolean} geoJsonCoords Whether to provide GeoJSON coordinate order: [lng, lat]\n * @param {boolean} closedLoop Whether to close the loop\n * @return {Array[]} Array of geo coordinate pairs\n */\n\n\nfunction readGeoBoundary(geoBoundary, geoJsonCoords, closedLoop) {\n var numVerts = libh3.getValue(geoBoundary, 'i32'); // Note that though numVerts is an int, the coordinate doubles have to be\n // aligned to 8 bytes, hence the 8-byte offset here\n\n var vertsPos = geoBoundary + SZ_DBL;\n var out = []; // Support [lng, lat] pairs if GeoJSON is specified\n\n var readCoord = geoJsonCoords ? readGeoCoordGeoJson : readGeoCoord;\n\n for (var i = 0; i < numVerts * 2; i += 2) {\n out.push(readCoord(vertsPos + SZ_DBL * i));\n }\n\n if (closedLoop) {\n // Close loop if GeoJSON is specified\n out.push(out[0]);\n }\n\n return out;\n}\n/**\n * Read the LinkedGeoPolygon structure into a nested array of MultiPolygon coordinates\n * @private\n * @param {number} polygon C pointer to LinkedGeoPolygon struct\n * @param {boolean} formatAsGeoJson Whether to provide GeoJSON output: [lng, lat], closed loops\n * @return {number[][][][]} MultiPolygon-style output.\n */\n\n\nfunction readMultiPolygon(polygon, formatAsGeoJson) {\n var output = [];\n var readCoord = formatAsGeoJson ? readGeoCoordGeoJson : readGeoCoord;\n var loops;\n var loop;\n var coords;\n var coord; // Loop through the linked structure, building the output\n\n while (polygon) {\n output.push(loops = []); // Follow ->first pointer\n\n loop = libh3.getValue(polygon, 'i8*');\n\n while (loop) {\n loops.push(coords = []); // Follow ->first pointer\n\n coord = libh3.getValue(loop, 'i8*');\n\n while (coord) {\n coords.push(readCoord(coord)); // Follow ->next pointer\n\n coord = libh3.getValue(coord + SZ_DBL * 2, 'i8*');\n }\n\n if (formatAsGeoJson) {\n // Close loop if GeoJSON is requested\n coords.push(coords[0]);\n } // Follow ->next pointer\n\n\n loop = libh3.getValue(loop + SZ_PTR * 2, 'i8*');\n } // Follow ->next pointer\n\n\n polygon = libh3.getValue(polygon + SZ_PTR * 2, 'i8*');\n }\n\n return output;\n}\n/**\n * Read a CoordIJ from C and return an {i, j} pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {CoordIJ} {i, j} pair\n */\n\n\nfunction readCoordIJ(cAddress) {\n return {\n i: libh3.getValue(cAddress, 'i32'),\n j: libh3.getValue(cAddress + SZ_INT, 'i32')\n };\n}\n/**\n * Store an {i, j} pair to a C CoordIJ struct.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {CoordIJ} {i, j} pair\n */\n\n\nfunction storeCoordIJ(cAddress, ref) {\n var i = ref.i;\n var j = ref.j;\n\n libh3.setValue(cAddress, i, 'i32');\n libh3.setValue(cAddress + SZ_INT, j, 'i32');\n}\n/**\n * Read an array of positive integers array from C. Negative\n * values are considered invalid and ignored in output.\n * @private\n * @param {number} cAddress Pointer to C array\n * @param {number} count Length of C array\n * @return {number[]} Javascript integer array\n */\n\n\nfunction readArrayOfPositiveIntegers(cAddress, count) {\n var out = [];\n\n for (var i = 0; i < count; i++) {\n var int = libh3.getValue(cAddress + SZ_INT * i, 'i32');\n\n if (int >= 0) {\n out.push(int);\n }\n }\n\n return out;\n} // ----------------------------------------------------------------------------\n// Public API functions: Core\n\n/**\n * Whether a given string represents a valid H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} Whether the index is valid\n */\n\n\nfunction h3IsValid(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean(H3.h3IsValid(lower, upper));\n}\n/**\n * Whether the given H3 index is a pentagon\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} isPentagon\n */\n\nfunction h3IsPentagon(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean(H3.h3IsPentagon(lower, upper));\n}\n/**\n * Whether the given H3 index is in a Class III resolution (rotated versus\n * the icosahedron and subject to shape distortion adding extra points on\n * icosahedron edges, making them not true hexagons).\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} isResClassIII\n */\n\nfunction h3IsResClassIII(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean(H3.h3IsResClassIII(lower, upper));\n}\n/**\n * Get the number of the base cell for a given H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get the base cell for\n * @return {number} Index of the base cell (0-121)\n */\n\nfunction h3GetBaseCell(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return H3.h3GetBaseCell(lower, upper);\n}\n/**\n * Get the indices of all icosahedron faces intersected by a given H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get faces for\n * @return {number[]} Indices (0-19) of all intersected faces\n */\n\nfunction h3GetFaces(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var count = H3.maxFaceCount(lower, upper);\n\n var faces = libh3._malloc(SZ_INT * count);\n\n H3.h3GetFaces(lower, upper, faces);\n var out = readArrayOfPositiveIntegers(faces, count);\n\n libh3._free(faces);\n\n return out;\n}\n/**\n * Returns the resolution of an H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get resolution\n * @return {number} The number (0-15) resolution, or -1 if invalid\n */\n\nfunction h3GetResolution(h3Index) {\n if (typeof h3Index !== 'string') {\n return -1;\n }\n\n return parseInt(h3Index.charAt(1), BASE_16);\n}\n/**\n * Get the hexagon containing a lat,lon point\n * @static\n * @param {number} lat Latitude of point\n * @param {number} lng Longtitude of point\n * @param {number} res Resolution of hexagons to return\n * @return {H3Index} H3 index\n */\n\nfunction geoToH3(lat, lng, res) {\n var latlng = libh3._malloc(SZ_GEOCOORD); // Slightly more efficient way to set the memory\n\n\n libh3.HEAPF64.set([lat, lng].map(degsToRads), latlng / SZ_DBL); // Read value as a split long\n\n var h3Index = readH3Index(H3.geoToH3(latlng, res));\n\n libh3._free(latlng);\n\n return h3Index;\n}\n/**\n * Get the lat,lon center of a given hexagon\n * @static\n * @param {H3IndexInput} h3Index H3 index\n * @return {number[]} Point as a [lat, lng] pair\n */\n\nfunction h3ToGeo(h3Index) {\n var latlng = libh3._malloc(SZ_GEOCOORD);\n\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n H3.h3ToGeo(lower, upper, latlng);\n var out = readGeoCoord(latlng);\n\n libh3._free(latlng);\n\n return out;\n}\n/**\n * Get the vertices of a given hexagon (or pentagon), as an array of [lat, lng]\n * points. For pentagons and hexagons on the edge of an icosahedron face, this\n * function may return up to 10 vertices.\n * @static\n * @param {H3Index} h3Index H3 index\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat], closed loops\n * @return {number[][]} Array of [lat, lng] pairs\n */\n\nfunction h3ToGeoBoundary(h3Index, formatAsGeoJson) {\n var geoBoundary = libh3._malloc(SZ_GEOBOUNDARY);\n\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n H3.h3ToGeoBoundary(lower, upper, geoBoundary);\n var out = readGeoBoundary(geoBoundary, formatAsGeoJson, formatAsGeoJson);\n\n libh3._free(geoBoundary);\n\n return out;\n} // ----------------------------------------------------------------------------\n// Public API functions: Algorithms\n\n/**\n * Get the parent of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get parent for\n * @param {number} res Resolution of hexagon to return\n * @return {H3Index} H3 index of parent, or null for invalid input\n */\n\nfunction h3ToParent(h3Index, res) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return readH3Index(H3.h3ToParent(lower, upper, res));\n}\n/**\n * Get the children/descendents of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get children for\n * @param {number} res Resolution of hexagons to return\n * @return {H3Index[]} H3 indexes of children, or empty array for invalid input\n */\n\nfunction h3ToChildren(h3Index, res) {\n // Bad input in this case can potentially result in high computation volume\n // using the current C algorithm. Validate and return an empty array on failure.\n if (!h3IsValid(h3Index)) {\n return [];\n }\n\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var maxCount = H3.maxH3ToChildrenSize(lower, upper, res);\n\n var hexagons = libh3._calloc(maxCount, SZ_H3INDEX);\n\n H3.h3ToChildren(lower, upper, res, hexagons);\n var out = readArrayOfHexagons(hexagons, maxCount);\n\n libh3._free(hexagons);\n\n return out;\n}\n/**\n * Get the center child of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get center child for\n * @param {number} res Resolution of hexagon to return\n * @return {H3Index} H3 index of child, or null for invalid input\n */\n\nfunction h3ToCenterChild(h3Index, res) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n return readH3Index(H3.h3ToCenterChild(lower, upper, res));\n}\n/**\n * Get all hexagons in a k-ring around a given center. The order of the hexagons is undefined.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of k-ring\n * @return {H3Index[]} H3 indexes for all hexagons in ring\n */\n\nfunction kRing(h3Index, ringSize) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var maxCount = H3.maxKringSize(ringSize);\n\n var hexagons = libh3._calloc(maxCount, SZ_H3INDEX);\n\n H3.kRing(lower, upper, ringSize, hexagons);\n var out = readArrayOfHexagons(hexagons, maxCount);\n\n libh3._free(hexagons);\n\n return out;\n}\n/**\n * Get all hexagons in a k-ring around a given center, in an array of arrays\n * ordered by distance from the origin. The order of the hexagons within each ring is undefined.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of k-ring\n * @return {H3Index[][]} Array of arrays with H3 indexes for all hexagons each ring\n */\n\nfunction kRingDistances(h3Index, ringSize) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var maxCount = H3.maxKringSize(ringSize);\n\n var kRings = libh3._calloc(maxCount, SZ_H3INDEX);\n\n var distances = libh3._calloc(maxCount, SZ_INT);\n\n H3.kRingDistances(lower, upper, ringSize, kRings, distances); // Create an array of empty arrays to hold the output\n\n var out = [];\n\n for (var i = 0; i < ringSize + 1; i++) {\n out.push([]);\n } // Read the array of hexagons, putting them into the appropriate rings\n\n\n for (var i$1 = 0; i$1 < maxCount * 2; i$1 += 2) {\n var hexLower = libh3.getValue(kRings + SZ_INT * i$1, 'i32');\n var hexUpper = libh3.getValue(kRings + SZ_INT * (i$1 + 1), 'i32');\n var index = libh3.getValue(distances + SZ_INT * (i$1 / 2), 'i32');\n\n if (hexLower !== 0 || hexUpper !== 0) {\n out[index].push(splitLongToh3Index(hexLower, hexUpper));\n }\n }\n\n libh3._free(kRings);\n\n libh3._free(distances);\n\n return out;\n}\n/**\n * Get all hexagons in a hollow hexagonal ring centered at origin with sides of a given length.\n * Unlike kRing, this function will throw an error if there is a pentagon anywhere in the ring.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of ring\n * @return {H3Index[]} H3 indexes for all hexagons in ring\n * @throws {Error} If the algorithm could not calculate the ring\n */\n\nfunction hexRing(h3Index, ringSize) {\n var maxCount = ringSize === 0 ? 1 : 6 * ringSize;\n\n var hexagons = libh3._calloc(maxCount, SZ_H3INDEX);\n\n var retVal = H3.hexRing.apply(H3, h3IndexToSplitLong(h3Index).concat( [ringSize], [hexagons] ));\n\n if (retVal !== 0) {\n libh3._free(hexagons);\n\n throw new Error('Failed to get hexRing (encountered a pentagon?)');\n }\n\n var out = readArrayOfHexagons(hexagons, maxCount);\n\n libh3._free(hexagons);\n\n return out;\n}\n/**\n * Get all hexagons with centers contained in a given polygon. The polygon\n * is specified with GeoJson semantics as an array of loops. Each loop is\n * an array of [lat, lng] pairs (or [lng, lat] if isGeoJson is specified).\n * The first loop is the perimeter of the polygon, and subsequent loops are\n * expected to be holes.\n * @static\n * @param {number[][] | number[][][]} coordinates\n * Array of loops, or a single loop\n * @param {number} res Resolution of hexagons to return\n * @param {boolean} [isGeoJson] Whether to expect GeoJson-style [lng, lat]\n * pairs instead of [lat, lng]\n * @return {H3Index[]} H3 indexes for all hexagons in polygon\n */\n\nfunction polyfill(coordinates, res, isGeoJson) {\n validateRes(res);\n isGeoJson = Boolean(isGeoJson); // Guard against empty input\n\n if (coordinates.length === 0 || coordinates[0].length === 0) {\n return [];\n } // Wrap to expected format if a single loop is provided\n\n\n if (typeof coordinates[0][0] === 'number') {\n coordinates = [coordinates];\n }\n\n var geoPolygon = coordinatesToGeoPolygon(coordinates, isGeoJson);\n var arrayLen = H3.maxPolyfillSize(geoPolygon, res);\n\n var hexagons = libh3._calloc(arrayLen, SZ_H3INDEX);\n\n H3.polyfill(geoPolygon, res, hexagons);\n var out = readArrayOfHexagons(hexagons, arrayLen);\n\n libh3._free(hexagons);\n\n destroyGeoPolygon(geoPolygon);\n return out;\n}\n/**\n * Get the outlines of a set of H3 hexagons, returned in GeoJSON MultiPolygon\n * format (an array of polygons, each with an array of loops, each an array of\n * coordinates). Coordinates are returned as [lat, lng] pairs unless GeoJSON\n * is requested.\n *\n * It is the responsibility of the caller to ensure that all hexagons in the\n * set have the same resolution and that the set contains no duplicates. Behavior\n * is undefined if duplicates or multiple resolutions are present, and the\n * algorithm may produce unexpected or invalid polygons.\n *\n * @static\n * @param {H3IndexInput[]} h3Indexes H3 indexes to get outlines for\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output:\n * [lng, lat], closed loops\n * @return {number[][][][]} MultiPolygon-style output.\n */\n\nfunction h3SetToMultiPolygon(h3Indexes, formatAsGeoJson) {\n // Early exit on empty input\n if (!h3Indexes || !h3Indexes.length) {\n return [];\n } // Set up input set\n\n\n var indexCount = h3Indexes.length;\n\n var set = libh3._calloc(indexCount, SZ_H3INDEX);\n\n storeArrayOfHexagons(set, h3Indexes); // Allocate memory for output linked polygon\n\n var polygon = libh3._calloc(SZ_LINKED_GEOPOLYGON); // Store a reference to the first polygon - that's the one we need for\n // memory deallocation\n\n\n var originalPolygon = polygon;\n H3.h3SetToLinkedGeo(set, indexCount, polygon);\n var multiPolygon = readMultiPolygon(polygon, formatAsGeoJson); // Clean up\n\n H3.destroyLinkedPolygon(originalPolygon);\n\n libh3._free(originalPolygon);\n\n libh3._free(set);\n\n return multiPolygon;\n}\n/**\n * Compact a set of hexagons of the same resolution into a set of hexagons across\n * multiple levels that represents the same area.\n * @static\n * @param {H3IndexInput[]} h3Set H3 indexes to compact\n * @return {H3Index[]} Compacted H3 indexes\n * @throws {Error} If the input is invalid (e.g. duplicate hexagons)\n */\n\nfunction compact(h3Set) {\n if (!h3Set || !h3Set.length) {\n return [];\n } // Set up input set\n\n\n var count = h3Set.length;\n\n var set = libh3._calloc(count, SZ_H3INDEX);\n\n storeArrayOfHexagons(set, h3Set); // Allocate memory for compacted hexagons, worst-case is no compaction\n\n var compactedSet = libh3._calloc(count, SZ_H3INDEX);\n\n var retVal = H3.compact(set, compactedSet, count);\n\n if (retVal !== 0) {\n libh3._free(set);\n\n libh3._free(compactedSet);\n\n throw new Error('Failed to compact, malformed input data (duplicate hexagons?)');\n }\n\n var out = readArrayOfHexagons(compactedSet, count);\n\n libh3._free(set);\n\n libh3._free(compactedSet);\n\n return out;\n}\n/**\n * Uncompact a compacted set of hexagons to hexagons of the same resolution\n * @static\n * @param {H3IndexInput[]} compactedSet H3 indexes to uncompact\n * @param {number} res The resolution to uncompact to\n * @return {H3Index[]} The uncompacted H3 indexes\n * @throws {Error} If the input is invalid (e.g. invalid resolution)\n */\n\nfunction uncompact(compactedSet, res) {\n validateRes(res);\n\n if (!compactedSet || !compactedSet.length) {\n return [];\n } // Set up input set\n\n\n var count = compactedSet.length;\n\n var set = libh3._calloc(count, SZ_H3INDEX);\n\n storeArrayOfHexagons(set, compactedSet); // Estimate how many hexagons we need (always overestimates if in error)\n\n var maxUncompactedNum = H3.maxUncompactSize(set, count, res); // Allocate memory for uncompacted hexagons\n\n var uncompactedSet = libh3._calloc(maxUncompactedNum, SZ_H3INDEX);\n\n var retVal = H3.uncompact(set, count, uncompactedSet, maxUncompactedNum, res);\n\n if (retVal !== 0) {\n libh3._free(set);\n\n libh3._free(uncompactedSet);\n\n throw new Error('Failed to uncompact (bad resolution?)');\n }\n\n var out = readArrayOfHexagons(uncompactedSet, maxUncompactedNum);\n\n libh3._free(set);\n\n libh3._free(uncompactedSet);\n\n return out;\n} // ----------------------------------------------------------------------------\n// Public API functions: Unidirectional edges\n\n/**\n * Whether two H3 indexes are neighbors (share an edge)\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {boolean} Whether the hexagons share an edge\n */\n\nfunction h3IndexesAreNeighbors(origin, destination) {\n var ref = h3IndexToSplitLong(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = h3IndexToSplitLong(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n return Boolean(H3.h3IndexesAreNeighbors(oLower, oUpper, dLower, dUpper));\n}\n/**\n * Get an H3 index representing a unidirectional edge for a given origin and destination\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {H3Index} H3 index of the edge, or null if no edge is shared\n */\n\nfunction getH3UnidirectionalEdge(origin, destination) {\n var ref = h3IndexToSplitLong(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = h3IndexToSplitLong(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n return readH3Index(H3.getH3UnidirectionalEdge(oLower, oUpper, dLower, dUpper));\n}\n/**\n * Get the origin hexagon from an H3 index representing a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index} H3 index of the edge origin\n */\n\nfunction getOriginH3IndexFromUnidirectionalEdge(edgeIndex) {\n var ref = h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n return readH3Index(H3.getOriginH3IndexFromUnidirectionalEdge(lower, upper));\n}\n/**\n * Get the destination hexagon from an H3 index representing a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index} H3 index of the edge destination\n */\n\nfunction getDestinationH3IndexFromUnidirectionalEdge(edgeIndex) {\n var ref = h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n return readH3Index(H3.getDestinationH3IndexFromUnidirectionalEdge(lower, upper));\n}\n/**\n * Whether the input is a valid unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {boolean} Whether the index is valid\n */\n\nfunction h3UnidirectionalEdgeIsValid(edgeIndex) {\n var ref = h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n return Boolean(H3.h3UnidirectionalEdgeIsValid(lower, upper));\n}\n/**\n * Get the [origin, destination] pair represented by a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index[]} [origin, destination] pair as H3 indexes\n */\n\nfunction getH3IndexesFromUnidirectionalEdge(edgeIndex) {\n var ref = h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n var count = 2;\n\n var hexagons = libh3._calloc(count, SZ_H3INDEX);\n\n H3.getH3IndexesFromUnidirectionalEdge(lower, upper, hexagons);\n var out = readArrayOfHexagons(hexagons, count);\n\n libh3._free(hexagons);\n\n return out;\n}\n/**\n * Get all of the unidirectional edges with the given H3 index as the origin (i.e. an edge to\n * every neighbor)\n * @static\n * @param {H3IndexInput} h3Index H3 index of the origin hexagon\n * @return {H3Index[]} List of unidirectional edges\n */\n\nfunction getH3UnidirectionalEdgesFromHexagon(h3Index) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n var count = 6;\n\n var edges = libh3._calloc(count, SZ_H3INDEX);\n\n H3.getH3UnidirectionalEdgesFromHexagon(lower, upper, edges);\n var out = readArrayOfHexagons(edges, count);\n\n libh3._free(edges);\n\n return out;\n}\n/**\n * Get the vertices of a given edge as an array of [lat, lng] points. Note that for edges that\n * cross the edge of an icosahedron face, this may return 3 coordinates.\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat]\n * @return {number[][]} Array of geo coordinate pairs\n */\n\nfunction getH3UnidirectionalEdgeBoundary(edgeIndex, formatAsGeoJson) {\n var geoBoundary = libh3._malloc(SZ_GEOBOUNDARY);\n\n var ref = h3IndexToSplitLong(edgeIndex);\n var lower = ref[0];\n var upper = ref[1];\n H3.getH3UnidirectionalEdgeBoundary(lower, upper, geoBoundary);\n var out = readGeoBoundary(geoBoundary, formatAsGeoJson);\n\n libh3._free(geoBoundary);\n\n return out;\n}\n/**\n * Get the grid distance between two hex indexes. This function may fail\n * to find the distance between two indexes if they are very far apart or\n * on opposite sides of a pentagon.\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {number} Distance between hexagons, or a negative\n * number if the distance could not be computed\n */\n\nfunction h3Distance(origin, destination) {\n var ref = h3IndexToSplitLong(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = h3IndexToSplitLong(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n return H3.h3Distance(oLower, oUpper, dLower, dUpper);\n}\n/**\n * Given two H3 indexes, return the line of indexes between them (inclusive).\n *\n * This function may fail to find the line between two indexes, for\n * example if they are very far apart. It may also fail when finding\n * distances for indexes on opposite sides of a pentagon.\n *\n * Notes:\n *\n * - The specific output of this function should not be considered stable\n * across library versions. The only guarantees the library provides are\n * that the line length will be `h3Distance(start, end) + 1` and that\n * every index in the line will be a neighbor of the preceding index.\n * - Lines are drawn in grid space, and may not correspond exactly to either\n * Cartesian lines or great arcs.\n *\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {H3Index[]} H3 indexes connecting origin and destination\n * @throws {Error} If the line cannot be calculated\n */\n\nfunction h3Line(origin, destination) {\n var ref = h3IndexToSplitLong(origin);\n var oLower = ref[0];\n var oUpper = ref[1];\n var ref$1 = h3IndexToSplitLong(destination);\n var dLower = ref$1[0];\n var dUpper = ref$1[1];\n var count = H3.h3LineSize(oLower, oUpper, dLower, dUpper);\n\n if (count < 0) {\n // We can't get the specific error code here - may be any of\n // the errors possible in experimentalH3ToLocalIj\n throw new Error('Line cannot be calculated');\n }\n\n var hexagons = libh3._calloc(count, SZ_H3INDEX);\n\n H3.h3Line(oLower, oUpper, dLower, dUpper, hexagons);\n var out = readArrayOfHexagons(hexagons, count);\n\n libh3._free(hexagons);\n\n return out;\n}\n/**\n * Produces IJ coordinates for an H3 index anchored by an origin.\n *\n * - The coordinate space used by this function may have deleted\n * regions or warping due to pentagonal distortion.\n * - Coordinates are only comparable if they come from the same\n * origin index.\n * - Failure may occur if the index is too far away from the origin\n * or if the index is on the other side of a pentagon.\n * - This function is experimental, and its output is not guaranteed\n * to be compatible across different versions of H3.\n * @static\n * @param {H3IndexInput} origin Origin H3 index\n * @param {H3IndexInput} destination H3 index for which to find relative coordinates\n * @return {CoordIJ} Coordinates as an `{i, j}` pair\n * @throws {Error} If the IJ coordinates cannot be calculated\n */\n\nfunction experimentalH3ToLocalIj(origin, destination) {\n var ij = libh3._malloc(SZ_COORDIJ);\n\n var retVal = H3.experimentalH3ToLocalIj.apply(H3, h3IndexToSplitLong(origin).concat( h3IndexToSplitLong(destination), [ij] ));\n var coords = readCoordIJ(ij);\n\n libh3._free(ij); // Return the pair, or throw if an error code was returned.\n // Switch statement and error codes cribbed from h3-java's implementation.\n\n\n switch (retVal) {\n case 0:\n return coords;\n\n case 1:\n throw new Error('Incompatible origin and index.');\n\n case 2:\n default:\n throw new Error('Local IJ coordinates undefined for this origin and index pair. ' + 'The index may be too far from the origin.');\n\n case 3:\n case 4:\n case 5:\n throw new Error('Encountered possible pentagon distortion');\n }\n}\n/**\n * Produces an H3 index for IJ coordinates anchored by an origin.\n *\n * - The coordinate space used by this function may have deleted\n * regions or warping due to pentagonal distortion.\n * - Coordinates are only comparable if they come from the same\n * origin index.\n * - Failure may occur if the index is too far away from the origin\n * or if the index is on the other side of a pentagon.\n * - This function is experimental, and its output is not guaranteed\n * to be compatible across different versions of H3.\n * @static\n * @param {H3IndexInput} origin Origin H3 index\n * @param {CoordIJ} coords Coordinates as an `{i, j}` pair\n * @return {H3Index} H3 index at the relative coordinates\n * @throws {Error} If the H3 index cannot be calculated\n */\n\nfunction experimentalLocalIjToH3(origin, coords) {\n // Validate input coords\n if (!coords || typeof coords.i !== 'number' || typeof coords.j !== 'number') {\n throw new Error('Coordinates must be provided as an {i, j} object');\n } // Allocate memory for the CoordIJ struct and an H3 index to hold the return value\n\n\n var ij = libh3._malloc(SZ_COORDIJ);\n\n var out = libh3._malloc(SZ_H3INDEX);\n\n storeCoordIJ(ij, coords);\n var retVal = H3.experimentalLocalIjToH3.apply(H3, h3IndexToSplitLong(origin).concat( [ij], [out] ));\n var h3Index = readH3IndexFromPointer(out);\n\n libh3._free(ij);\n\n libh3._free(out);\n\n if (retVal !== 0) {\n throw new Error('Index not defined for this origin and IJ coordinates pair. ' + 'IJ coordinates may be too far from origin, or ' + 'a pentagon distortion was encountered.');\n }\n\n return h3Index;\n} // ----------------------------------------------------------------------------\n// Public API functions: Distance/area utilities\n\n/**\n * Great circle distance between two geo points. This is not specific to H3,\n * but is implemented in the library and provided here as a convenience.\n * @static\n * @param {number[]} latlng1 Origin coordinate as [lat, lng]\n * @param {number[]} latlng2 Destination coordinate as [lat, lng]\n * @param {string} unit Distance unit (either UNITS.m or UNITS.km)\n * @return {number} Great circle distance\n * @throws {Error} If the unit is invalid\n */\n\nfunction pointDist(latlng1, latlng2, unit) {\n var coord1 = storeGeoCoord(latlng1[0], latlng1[1]);\n var coord2 = storeGeoCoord(latlng2[0], latlng2[1]);\n var result;\n\n switch (unit) {\n case UNITS.m:\n result = H3.pointDistM(coord1, coord2);\n break;\n\n case UNITS.km:\n result = H3.pointDistKm(coord1, coord2);\n break;\n\n case UNITS.rads:\n result = H3.pointDistRads(coord1, coord2);\n break;\n\n default:\n result = null;\n }\n\n libh3._free(coord1);\n\n libh3._free(coord2);\n\n if (result === null) {\n throw new Error((\"Unknown unit: \" + unit));\n }\n\n return result;\n}\n/**\n * Exact area of a given cell\n * @static\n * @param {H3Index} h3Index H3 index of the hexagon to measure\n * @param {string} unit Distance unit (either UNITS.m2 or UNITS.km2)\n * @return {number} Cell area\n * @throws {Error} If the unit is invalid\n */\n\nfunction cellArea(h3Index, unit) {\n var ref = h3IndexToSplitLong(h3Index);\n var lower = ref[0];\n var upper = ref[1];\n\n switch (unit) {\n case UNITS.m2:\n return H3.cellAreaM2(lower, upper);\n\n case UNITS.km2:\n return H3.cellAreaKm2(lower, upper);\n\n case UNITS.rads2:\n return H3.cellAreaRads2(lower, upper);\n\n default:\n throw new Error((\"Unknown unit: \" + unit));\n }\n}\n/**\n * Exact length of a given unidirectional edge\n * @static\n * @param {H3Index} edge H3 index of the edge to measure\n * @param {string} unit Distance unit (either UNITS.m, UNITS.km, or UNITS.rads)\n * @return {number} Cell area\n * @throws {Error} If the unit is invalid\n */\n\nfunction exactEdgeLength(edge, unit) {\n var ref = h3IndexToSplitLong(edge);\n var lower = ref[0];\n var upper = ref[1];\n\n switch (unit) {\n case UNITS.m:\n return H3.exactEdgeLengthM(lower, upper);\n\n case UNITS.km:\n return H3.exactEdgeLengthKm(lower, upper);\n\n case UNITS.rads:\n return H3.exactEdgeLengthRads(lower, upper);\n\n default:\n throw new Error((\"Unknown unit: \" + unit));\n }\n}\n/**\n * Average hexagon area at a given resolution\n * @static\n * @param {number} res Hexagon resolution\n * @param {string} unit Area unit (either UNITS.m2, UNITS.km2, or UNITS.rads2)\n * @return {number} Average area\n * @throws {Error} If the unit is invalid\n */\n\nfunction hexArea(res, unit) {\n validateRes(res);\n\n switch (unit) {\n case UNITS.m2:\n return H3.hexAreaM2(res);\n\n case UNITS.km2:\n return H3.hexAreaKm2(res);\n\n default:\n throw new Error((\"Unknown unit: \" + unit));\n }\n}\n/**\n * Average hexagon edge length at a given resolution\n * @static\n * @param {number} res Hexagon resolution\n * @param {string} unit Distance unit (either UNITS.m, UNITS.km, or UNITS.rads)\n * @return {number} Average edge length\n * @throws {Error} If the unit is invalid\n */\n\nfunction edgeLength(res, unit) {\n validateRes(res);\n\n switch (unit) {\n case UNITS.m:\n return H3.edgeLengthM(res);\n\n case UNITS.km:\n return H3.edgeLengthKm(res);\n\n default:\n throw new Error((\"Unknown unit: \" + unit));\n }\n} // ----------------------------------------------------------------------------\n// Public informational utilities\n\n/**\n * The total count of hexagons in the world at a given resolution. Note that above\n * resolution 8 the exact count cannot be represented in a JavaScript 32-bit number,\n * so consumers should use caution when applying further operations to the output.\n * @static\n * @param {number} res Hexagon resolution\n * @return {number} Count\n */\n\nfunction numHexagons(res) {\n validateRes(res); // Get number as a long value\n\n var ref = readLong(H3.numHexagons(res));\n var lower = ref[0];\n var upper = ref[1]; // If we're using <= 32 bits we can use normal JS numbers\n\n if (!upper) {\n return lower;\n } // Above 32 bit, make a JS number that's correct in order of magnitude\n\n\n return upper * Math.pow(2, 32) + lower;\n}\n/**\n * Get all H3 indexes at resolution 0. As every index at every resolution > 0 is\n * the descendant of a res 0 index, this can be used with h3ToChildren to iterate\n * over H3 indexes at any resolution.\n * @static\n * @return {H3Index[]} All H3 indexes at res 0\n */\n\nfunction getRes0Indexes() {\n var count = H3.res0IndexCount();\n\n var hexagons = libh3._malloc(SZ_H3INDEX * count);\n\n H3.getRes0Indexes(hexagons);\n var out = readArrayOfHexagons(hexagons, count);\n\n libh3._free(hexagons);\n\n return out;\n}\n/**\n * Get the twelve pentagon indexes at a given resolution.\n * @static\n * @param {number} res Hexagon resolution\n * @return {H3Index[]} All H3 pentagon indexes at res\n */\n\nfunction getPentagonIndexes(res) {\n validateRes(res);\n var count = H3.pentagonIndexCount();\n\n var hexagons = libh3._malloc(SZ_H3INDEX * count);\n\n H3.getPentagonIndexes(res, hexagons);\n var out = readArrayOfHexagons(hexagons, count);\n\n libh3._free(hexagons);\n\n return out;\n}\n/**\n * Convert degrees to radians\n * @static\n * @param {number} deg Value in degrees\n * @return {number} Value in radians\n */\n\nfunction degsToRads(deg) {\n return deg * Math.PI / 180;\n}\n/**\n * Convert radians to degrees\n * @static\n * @param {number} rad Value in radians\n * @return {number} Value in degrees\n */\n\nfunction radsToDegs(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport { UNITS, h3IsValid, h3IsPentagon, h3IsResClassIII, h3GetBaseCell, h3GetFaces, h3GetResolution, geoToH3, h3ToGeo, h3ToGeoBoundary, h3ToParent, h3ToChildren, h3ToCenterChild, kRing, kRingDistances, hexRing, polyfill, h3SetToMultiPolygon, compact, uncompact, h3IndexesAreNeighbors, getH3UnidirectionalEdge, getOriginH3IndexFromUnidirectionalEdge, getDestinationH3IndexFromUnidirectionalEdge, h3UnidirectionalEdgeIsValid, getH3IndexesFromUnidirectionalEdge, getH3UnidirectionalEdgesFromHexagon, getH3UnidirectionalEdgeBoundary, h3Distance, h3Line, experimentalH3ToLocalIj, experimentalLocalIjToH3, pointDist, cellArea, exactEdgeLength, hexArea, edgeLength, numHexagons, getRes0Indexes, getPentagonIndexes, degsToRads, radsToDegs };\n//# sourceMappingURL=h3-js.es.js.map\n","\nvar libh3 = (\nfunction(libh3) {\n libh3 = libh3 || {};\n\nvar Module=typeof libh3!==\"undefined\"?libh3:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}read_=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)};setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var STACK_ALIGN=16;function dynamicAlloc(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;if(end>_emscripten_get_heap_size()){abort()}HEAP32[DYNAMICTOP_PTR>>2]=end;return ret}function getNativeTypeSize(type){switch(type){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(type[type.length-1]===\"*\"){return 4}else if(type[0]===\"i\"){var bits=parseInt(type.substr(1));assert(bits%8===0,\"getNativeTypeSize invalid bits \"+bits+\", type \"+type);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module[\"dynCall_\"+sig].apply(null,[ptr].concat(args))}else{return Module[\"dynCall_\"+sig].call(null,ptr)}}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var getTempRet0=function(){return tempRet0};var GLOBAL_BASE=8;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];function setValue(ptr,value,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":HEAP8[ptr>>0]=value;break;case\"i8\":HEAP8[ptr>>0]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;case\"i64\":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;default:abort(\"invalid type for setValue: \"+type)}}function getValue(ptr,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":return HEAP8[ptr>>0];case\"i8\":return HEAP8[ptr>>0];case\"i16\":return HEAP16[ptr>>1];case\"i32\":return HEAP32[ptr>>2];case\"i64\":return HEAP32[ptr>>2];case\"float\":return HEAPF32[ptr>>2];case\"double\":return HEAPF64[ptr>>3];default:abort(\"invalid type for getValue: \"+type)}return null}var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=24048,DYNAMIC_BASE=5266928,DYNAMICTOP_PTR=24016;var INITIAL_TOTAL_MEMORY=Module[\"TOTAL_MEMORY\"]||33554432;if(Module[\"buffer\"]){buffer=Module[\"buffer\"]}else{buffer=new ArrayBuffer(INITIAL_TOTAL_MEMORY)}INITIAL_TOTAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback();continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};var memoryInitializer=null;var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var tempDouble;var tempI64;memoryInitializer=\"data:application/octet-stream;base64,AAAAAAAAAAACAAAAAwAAAAEAAAAFAAAABAAAAAYAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAABAAAAAMAAAAGAAAABQAAAAIAAAAAAAAAAgAAAAMAAAABAAAABAAAAAYAAAAAAAAABQAAAAMAAAAGAAAABAAAAAUAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAABAAAABQAAAAIAAAAAAAAAAQAAAAMAAAAGAAAABAAAAAYAAAAAAAAABQAAAAIAAAABAAAABAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABgAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAABgAAAAAAAAADAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAUAAAAEAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAEAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAACAAAABAAAAAMAAAAIAAAA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AAAAAAAAAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAQAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAADAAAABQAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAABQAAAAUAAAAAAAAAAAAAAP////8BAAAAAAAAAAMAAAAEAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAABQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAQAAAP//////////AQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAIAAAAAAAAAAAAAAAEAAAACAAAABgAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAoAAAACAAAAAAAAAAAAAAABAAAAAQAAAAUAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAIAAAAAAAAAAAAAAAEAAAADAAAABwAAAAYAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAJAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAgAAAAAAAAAAAAAAAQAAAAQAAAAIAAAACgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAACAAAAAAAAAAAAAAABAAAACwAAAA8AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAgAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAACAAAAAAAAAAAAAAABAAAADAAAABAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAEAAAAKAAAAEwAAAAgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAgAAAAAAAAAAAAAAAQAAAA0AAAARAAAADQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAAAAAAAAAAAAAEAAAAOAAAAEgAAAA8AAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABMAAAACAAAAAAAAAAAAAAABAAAA//////////8TAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABIAAAAAAAAAGAAAAAAAAAAhAAAAAAAAAB4AAAAAAAAAIAAAAAMAAAAxAAAAAQAAADAAAAADAAAAMgAAAAMAAAAIAAAAAAAAAAUAAAAFAAAACgAAAAUAAAAWAAAAAAAAABAAAAAAAAAAEgAAAAAAAAApAAAAAQAAACEAAAAAAAAAHgAAAAAAAAAEAAAAAAAAAAAAAAAFAAAAAgAAAAUAAAAPAAAAAQAAAAgAAAAAAAAABQAAAAUAAAAfAAAAAQAAABYAAAAAAAAAEAAAAAAAAAACAAAAAAAAAAYAAAAAAAAADgAAAAAAAAAKAAAAAAAAAAsAAAAAAAAAEQAAAAMAAAAYAAAAAQAAABcAAAADAAAAGQAAAAMAAAAAAAAAAAAAAAEAAAAFAAAACQAAAAUAAAAFAAAAAAAAAAIAAAAAAAAABgAAAAAAAAASAAAAAQAAAAoAAAAAAAAACwAAAAAAAAAEAAAAAQAAAAMAAAAFAAAABwAAAAUAAAAIAAAAAQAAAAAAAAAAAAAAAQAAAAUAAAAQAAAAAQAAAAUAAAAAAAAAAgAAAAAAAAAHAAAAAAAAABUAAAAAAAAAJgAAAAAAAAAJAAAAAAAAABMAAAAAAAAAIgAAAAMAAAAOAAAAAQAAABQAAAADAAAAJAAAAAMAAAADAAAAAAAAAA0AAAAFAAAAHQAAAAUAAAABAAAAAAAAAAcAAAAAAAAAFQAAAAAAAAAGAAAA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74auECWhw7+cjSACjzniv8CZ+wUhN9I/1uGEKzup6z+/GYr/04bavwmkNHp7xee/F2NMZVAA1z+82s+x2BLivwr2ytbJ9em/KwEH1sMS1r8yp/2LhTfev81i5RexJsy/BlIKPVwR5b95Wyu0/Qjnv5DjoT7YYcs/nBhKZ6zrwr8wRYS7Nebuv3OW6geh+Lu/SLrixebL3j+pcyymN9Xrv8rHIFfWehZAMBwUdlo0DECTUc17EOb2PxpVB1SWChdAzjbhb9pTDUDQhmdvECX5P9FlMKCC9+g/IIAzjELgE0DajDngMv8GQFhWDmDPjNs/y1guLh96EkAxPi8k7DIEQJCc4URlhRhA3eLKKLwkEECqpNAyTBD/P6xpjXcDiwVAFtl//cQm4z+Ibt3XKiYTQM7mCLUb3QdAoM1t8yVv7D8aLZv2Nk8UQEAJPV5nQwxAtSsfTCoE9z9TPjXLXIIWQBVanC5W9AtAYM3d7Adm9j++5mQz1FoWQBUThyaVBghAwH5muQsV7T89Q1qv82MUQJoWGOfNuBdAzrkClkmwDkDQjKq77t37Py+g0dtitsE/ZwAMTwVPEUBojepluNwBQGYbtuW+t9w/HNWIJs6MEkDTNuQUSlgEQKxktPP5TcQ/ixbLB8JjEUCwuWjXMQYCQAS/R09FkRdAowpiZjhhDkB7LmlczD/7P01iQmhhsAVAnrtTwDy84z/Z6jfQ2TgTQChOCXMnWwpAhrW3daoz8z/HYJvVPI4VQLT3ik5FcA5Angi7LOZd+z+NNVzDy5gXQBXdvVTFUA1AYNMgOeYe+T8+qHXGCwkXQKQTOKwa5AJA8gFVoEMW0T+FwzJyttIRQAEAAAD/////BwAAAP////8xAAAA/////1cBAAD/////YQkAAP////+nQQAA/////5HLAQD/////95AMAP/////B9lcAAAAAAAAAAAAAAAAAAgAAAP////8OAAAA/////2IAAAD/////rgIAAP/////CEgAA/////06DAAD/////IpcDAP/////uIRkA/////4LtrwAAAAAAAAAAAAAAAAAAAAAAAgAAAP//////////AQAAAAMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////wIAAAD//////////wEAAAAAAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA/////////////////////wEAAAD///////////////8CAAAA////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD///////////////////////////////8CAAAA////////////////AQAAAP////////////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAAAQAAAP//////////AgAAAP//////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAAEAAAD//////////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAQAAAAEAAAACAAAAAgAAAAAAAAAFAAAABQAAAAAAAAACAAAAAgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAABAAAAAgAAAAIAAAACAAAAAAAAAAUAAAAGAAAAAAAAAAIAAAACAAAAAwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAgAAAAEAAAADAAAAAgAAAAIAAAAAAAAABQAAAAcAAAAAAAAAAgAAAAIAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAACAAAAAQAAAAQAAAACAAAAAgAAAAAAAAAFAAAACAAAAAAAAAACAAAAAgAAAAMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAACAAAAAAAAAAUAAAAJAAAAAAAAAAIAAAACAAAAAwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAIAAAACAAAAAAAAAAMAAAAOAAAAAgAAAAAAAAACAAAAAwAAAAAAAAAAAAAAAgAAAAIAAAADAAAABgAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAgAAAAIAAAAAAAAAAwAAAAoAAAACAAAAAAAAAAIAAAADAAAAAQAAAAAAAAACAAAAAgAAAAMAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAgAAAAAAAAADAAAACwAAAAIAAAAAAAAAAgAAAAMAAAACAAAAAAAAAAIAAAACAAAAAwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAACAAAAAAAAAAMAAAAMAAAAAgAAAAAAAAACAAAAAwAAAAMAAAAAAAAAAgAAAAIAAAADAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAIAAAAAAAAAAwAAAA0AAAACAAAAAAAAAAIAAAADAAAABAAAAAAAAAACAAAAAgAAAAMAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAgAAAAAAAAADAAAABgAAAAIAAAAAAAAAAgAAAAMAAAAPAAAAAAAAAAIAAAACAAAAAwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAIAAAACAAAAAAAAAAMAAAAHAAAAAgAAAAAAAAACAAAAAwAAABAAAAAAAAAAAgAAAAIAAAADAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAIAAAAAAAAAAwAAAAgAAAACAAAAAAAAAAIAAAADAAAAEQAAAAAAAAACAAAAAgAAAAMAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAACAAAAAgAAAAAAAAADAAAACQAAAAIAAAAAAAAAAgAAAAMAAAASAAAAAAAAAAIAAAACAAAAAwAAAA4AAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAACAAAAAAAAAAMAAAAFAAAAAgAAAAAAAAACAAAAAwAAABMAAAAAAAAAAgAAAAIAAAADAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAABAAEAAAEBAAAAAAABAAAAAQAAAAEAAQAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAAAAQAAAAMAAAAOAAAABgAAAAsAAAACAAAABwAAAAEAAAAYAAAABQAAAAoAAAABAAAABgAAAAAAAAAmAAAABwAAAAwAAAADAAAACAAAAAIAAAAxAAAACQAAAA4AAAAAAAAABQAAAAQAAAA6AAAACAAAAA0AAAAEAAAACQAAAAMAAAA/AAAACwAAAAYAAAAPAAAACgAAABAAAABIAAAADAAAAAcAAAAQAAAACwAAABEAAABTAAAACgAAAAUAAAATAAAADgAAAA8AAABhAAAADQAAAAgAAAARAAAADAAAABIAAABrAAAADgAAAAkAAAASAAAADQAAABMAAAB1AAAADwAAABMAAAARAAAAEgAAABAAAAAHAAAABwAAAAEAAAACAAAABAAAAAMAAAAAAAAAAAAAAAcAAAADAAAAAQAAAAIAAAAFAAAABAAAAAAAAAAAAAAAYWxnb3MuYwBfcG9seWZpbGxJbnRlcm5hbABhZGphY2VudEZhY2VEaXJbdG1wRmlqay5mYWNlXVtmaWprLmZhY2VdID09IEtJAGZhY2VpamsuYwBfZmFjZUlqa1BlbnRUb0dlb0JvdW5kYXJ5AGFkamFjZW50RmFjZURpcltjZW50ZXJJSksuZmFjZV1bZmFjZTJdID09IEtJAF9mYWNlSWprVG9HZW9Cb3VuZGFyeQBwb2x5Z29uLT5uZXh0ID09IE5VTEwAbGlua2VkR2VvLmMAYWRkTmV3TGlua2VkUG9seWdvbgBuZXh0ICE9IE5VTEwAbG9vcCAhPSBOVUxMAGFkZE5ld0xpbmtlZExvb3AAcG9seWdvbi0+Zmlyc3QgPT0gTlVMTABhZGRMaW5rZWRMb29wAGNvb3JkICE9IE5VTEwAYWRkTGlua2VkQ29vcmQAbG9vcC0+Zmlyc3QgPT0gTlVMTABpbm5lckxvb3BzICE9IE5VTEwAbm9ybWFsaXplTXVsdGlQb2x5Z29uAGJib3hlcyAhPSBOVUxMAGNhbmRpZGF0ZXMgIT0gTlVMTABmaW5kUG9seWdvbkZvckhvbGUAY2FuZGlkYXRlQkJveGVzICE9IE5VTEwAcmV2RGlyICE9IElOVkFMSURfRElHSVQAbG9jYWxpai5jAGgzVG9Mb2NhbElqawBiYXNlQ2VsbCAhPSBvcmlnaW5CYXNlQ2VsbAAhKG9yaWdpbk9uUGVudCAmJiBpbmRleE9uUGVudCkAcGVudGFnb25Sb3RhdGlvbnMgPj0gMABkaXJlY3Rpb25Sb3RhdGlvbnMgPj0gMABiYXNlQ2VsbCA9PSBvcmlnaW5CYXNlQ2VsbABiYXNlQ2VsbCAhPSBJTlZBTElEX0JBU0VfQ0VMTABsb2NhbElqa1RvSDMAIV9pc0Jhc2VDZWxsUGVudGFnb24oYmFzZUNlbGwpAGJhc2VDZWxsUm90YXRpb25zID49IDAAd2l0aGluUGVudGFnb25Sb3RhdGlvbnMgPj0gMABncmFwaC0+YnVja2V0cyAhPSBOVUxMAHZlcnRleEdyYXBoLmMAaW5pdFZlcnRleEdyYXBoAG5vZGUgIT0gTlVMTABhZGRWZXJ0ZXhOb2Rl\";var tempDoublePtr=24032;function demangle(func){return func}function demangleAll(text){var regex=/\\b__Z[\\w\\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+\" [\"+x+\"]\"})}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return\"(no stack trace available)\"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module[\"extraStackTrace\"])js+=\"\\n\"+Module[\"extraStackTrace\"]();return demangleAll(js)}function ___assert_fail(condition,filename,line,func){abort(\"Assertion failed: \"+UTF8ToString(condition)+\", at: \"+[filename?UTF8ToString(filename):\"unknown filename\",line,func?UTF8ToString(func):\"unknown function\"])}function _emscripten_get_heap_size(){return HEAP8.length}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest)}function ___setErrNo(value){if(Module[\"___errno_location\"])HEAP32[Module[\"___errno_location\"]()>>2]=value;return value}function abortOnCannotGrowMemory(requestedSize){abort(\"OOM\")}function emscripten_realloc_buffer(size){try{var newBuffer=new ArrayBuffer(size);if(newBuffer.byteLength!=size)return;new Int8Array(newBuffer).set(HEAP8);_emscripten_replace_memory(newBuffer);updateGlobalBufferAndViews(newBuffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();var PAGE_MULTIPLE=16777216;var LIMIT=2147483648-PAGE_MULTIPLE;if(requestedSize>LIMIT){return false}var MIN_TOTAL_MEMORY=16777216;var newSize=Math.max(oldSize,MIN_TOTAL_MEMORY);while(newSize255){if(ASSERTIONS){assert(false,\"Character code \"+chr+\" (\"+String.fromCharCode(chr)+\") at offset \"+i+\" not in 0x00-0xFF.\")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}var decodeBase64=typeof atob===\"function\"?atob:function(input){var keyStr=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";var output=\"\";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i>2]=a;b[g+4>>2]=c;g=(f|0)!=0;if(g)b[f>>2]=0;if(Eb(a,c)|0){n=1;S=o;return n|0}b[n>>2]=0;a:do if((d|0)>=1)if(g){k=0;l=1;m=1;h=0;g=a;while(1){if(!(h|k)){g=da(g,c,4,n)|0;c=G()|0;if((g|0)==0&(c|0)==0){g=2;break a}if(Eb(g,c)|0){g=1;break a}}g=da(g,c,b[16+(k<<2)>>2]|0,n)|0;c=G()|0;if((g|0)==0&(c|0)==0){g=2;break a}a=e+(m<<3)|0;b[a>>2]=g;b[a+4>>2]=c;b[f+(m<<2)>>2]=l;h=h+1|0;a=(h|0)==(l|0);i=k+1|0;j=(i|0)==6;if(Eb(g,c)|0){g=1;break a}l=l+(j&a&1)|0;if((l|0)>(d|0)){g=0;break}else{k=a?(j?0:i):k;m=m+1|0;h=a?0:h}}}else{k=0;l=1;m=1;h=0;g=a;while(1){if(!(h|k)){g=da(g,c,4,n)|0;c=G()|0;if((g|0)==0&(c|0)==0){g=2;break a}if(Eb(g,c)|0){g=1;break a}}g=da(g,c,b[16+(k<<2)>>2]|0,n)|0;c=G()|0;if((g|0)==0&(c|0)==0){g=2;break a}a=e+(m<<3)|0;b[a>>2]=g;b[a+4>>2]=c;h=h+1|0;a=(h|0)==(l|0);i=k+1|0;j=(i|0)==6;if(Eb(g,c)|0){g=1;break a}l=l+(j&a&1)|0;if((l|0)>(d|0)){g=0;break}else{k=a?(j?0:i):k;m=m+1|0;h=a?0:h}}}else g=0;while(0);n=g;S=o;return n|0}function ca(a,c,d,e,f,g,h){a=a|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=S;S=S+16|0;l=m;if((a|0)==0&(c|0)==0){S=m;return}i=ad(a|0,c|0,g|0,((g|0)<0)<<31>>31|0)|0;G()|0;j=e+(i<<3)|0;n=j;o=b[n>>2]|0;n=b[n+4>>2]|0;k=(o|0)==(a|0)&(n|0)==(c|0);if(!((o|0)==0&(n|0)==0|k))do{i=(i+1|0)%(g|0)|0;j=e+(i<<3)|0;o=j;n=b[o>>2]|0;o=b[o+4>>2]|0;k=(n|0)==(a|0)&(o|0)==(c|0)}while(!((n|0)==0&(o|0)==0|k));i=f+(i<<2)|0;if(k?(b[i>>2]|0)<=(h|0):0){S=m;return}o=j;b[o>>2]=a;b[o+4>>2]=c;b[i>>2]=h;if((h|0)>=(d|0)){S=m;return}o=h+1|0;b[l>>2]=0;n=da(a,c,2,l)|0;ca(n,G()|0,d,e,f,g,o);b[l>>2]=0;n=da(a,c,3,l)|0;ca(n,G()|0,d,e,f,g,o);b[l>>2]=0;n=da(a,c,1,l)|0;ca(n,G()|0,d,e,f,g,o);b[l>>2]=0;n=da(a,c,5,l)|0;ca(n,G()|0,d,e,f,g,o);b[l>>2]=0;n=da(a,c,4,l)|0;ca(n,G()|0,d,e,f,g,o);b[l>>2]=0;n=da(a,c,6,l)|0;ca(n,G()|0,d,e,f,g,o);S=m;return}function da(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if((b[e>>2]|0)>0){f=0;do{d=Pa(d)|0;f=f+1|0}while((f|0)<(b[e>>2]|0))}i=bd(a|0,c|0,45)|0;G()|0;j=i&127;g=Kb(a,c)|0;f=bd(a|0,c|0,52)|0;G()|0;f=f&15;a:do if(!f)h=6;else while(1){m=(15-f|0)*3|0;n=bd(a|0,c|0,m|0)|0;G()|0;n=n&7;o=(Qb(f)|0)==0;f=f+-1|0;l=cd(7,0,m|0)|0;c=c&~(G()|0);m=cd(b[(o?464:48)+(n*28|0)+(d<<2)>>2]|0,0,m|0)|0;k=G()|0;d=b[(o?672:256)+(n*28|0)+(d<<2)>>2]|0;a=m|a&~l;c=k|c;if(!d){d=0;break a}if(!f){h=6;break}}while(0);if((h|0)==6){o=b[880+(j*28|0)+(d<<2)>>2]|0;n=cd(o|0,0,45)|0;a=n|a;c=G()|0|c&-1040385;d=b[4304+(j*28|0)+(d<<2)>>2]|0;if((o&127|0)==127){o=cd(b[880+(j*28|0)+20>>2]|0,0,45)|0;c=G()|0|c&-1040385;d=b[4304+(j*28|0)+20>>2]|0;a=Mb(o|a,c)|0;c=G()|0;b[e>>2]=(b[e>>2]|0)+1}}h=bd(a|0,c|0,45)|0;G()|0;h=h&127;b:do if(!(la(h)|0)){if((d|0)>0){f=0;do{a=Mb(a,c)|0;c=G()|0;f=f+1|0}while((f|0)!=(d|0))}}else{c:do if((Kb(a,c)|0)==1){if((j|0)!=(h|0))if(ra(h,b[7728+(j*28|0)>>2]|0)|0){a=Ob(a,c)|0;g=1;c=G()|0;break}else{a=Mb(a,c)|0;g=1;c=G()|0;break}switch(g|0){case 5:{a=Ob(a,c)|0;c=G()|0;b[e>>2]=(b[e>>2]|0)+5;g=0;break c}case 3:{a=Mb(a,c)|0;c=G()|0;b[e>>2]=(b[e>>2]|0)+1;g=0;break c}default:{n=0;o=0;F(n|0);return o|0}}}else g=0;while(0);if((d|0)>0){f=0;do{a=Lb(a,c)|0;c=G()|0;f=f+1|0}while((f|0)!=(d|0))}if((j|0)!=(h|0)){if(!(ma(h)|0)){if((g|0)!=0|(Kb(a,c)|0)!=5)break;b[e>>2]=(b[e>>2]|0)+1;break}switch(i&127){case 8:case 118:break b;default:{}}if((Kb(a,c)|0)!=3)b[e>>2]=(b[e>>2]|0)+1}}while(0);b[e>>2]=((b[e>>2]|0)+d|0)%6|0;n=c;o=a;F(n|0);return o|0}function ea(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=S;S=S+16|0;l=m;if(!d){l=e;b[l>>2]=a;b[l+4>>2]=c;l=0;S=m;return l|0}b[l>>2]=0;a:do if(!(Eb(a,c)|0)){g=(d|0)>0;if(g){f=0;k=a;do{k=da(k,c,4,l)|0;c=G()|0;if((k|0)==0&(c|0)==0){a=2;break a}f=f+1|0;if(Eb(k,c)|0){a=1;break a}}while((f|0)<(d|0));j=e;b[j>>2]=k;b[j+4>>2]=c;j=d+-1|0;if(g){g=0;h=1;f=k;a=c;do{f=da(f,a,2,l)|0;a=G()|0;if((f|0)==0&(a|0)==0){a=2;break a}i=e+(h<<3)|0;b[i>>2]=f;b[i+4>>2]=a;h=h+1|0;if(Eb(f,a)|0){a=1;break a}g=g+1|0}while((g|0)<(d|0));i=0;g=h;do{f=da(f,a,3,l)|0;a=G()|0;if((f|0)==0&(a|0)==0){a=2;break a}h=e+(g<<3)|0;b[h>>2]=f;b[h+4>>2]=a;g=g+1|0;if(Eb(f,a)|0){a=1;break a}i=i+1|0}while((i|0)<(d|0));h=0;do{f=da(f,a,1,l)|0;a=G()|0;if((f|0)==0&(a|0)==0){a=2;break a}i=e+(g<<3)|0;b[i>>2]=f;b[i+4>>2]=a;g=g+1|0;if(Eb(f,a)|0){a=1;break a}h=h+1|0}while((h|0)<(d|0));h=0;do{f=da(f,a,5,l)|0;a=G()|0;if((f|0)==0&(a|0)==0){a=2;break a}i=e+(g<<3)|0;b[i>>2]=f;b[i+4>>2]=a;g=g+1|0;if(Eb(f,a)|0){a=1;break a}h=h+1|0}while((h|0)<(d|0));h=0;do{f=da(f,a,4,l)|0;a=G()|0;if((f|0)==0&(a|0)==0){a=2;break a}i=e+(g<<3)|0;b[i>>2]=f;b[i+4>>2]=a;g=g+1|0;if(Eb(f,a)|0){a=1;break a}h=h+1|0}while((h|0)<(d|0));h=0;while(1){f=da(f,a,6,l)|0;a=G()|0;if((f|0)==0&(a|0)==0){a=2;break a}if((h|0)!=(j|0)){i=e+(g<<3)|0;b[i>>2]=f;b[i+4>>2]=a;if(!(Eb(f,a)|0))g=g+1|0;else{a=1;break a}}h=h+1|0;if((h|0)>=(d|0)){h=k;g=c;break}}}else{h=k;f=k;g=c;a=c}}else{h=e;b[h>>2]=a;b[h+4>>2]=c;h=a;f=a;g=c;a=c}a=((h|0)!=(f|0)|(g|0)!=(a|0))&1}else a=1;while(0);l=a;S=m;return l|0}function fa(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=S;S=S+48|0;f=g+8|0;e=g;i=a;h=b[i+4>>2]|0;d=e;b[d>>2]=b[i>>2];b[d+4>>2]=h;uc(e,f);f=ya(f,c)|0;c=b[e>>2]|0;e=b[a+8>>2]|0;if((e|0)<=0){i=c;h=(f|0)<(i|0);i=h?i:f;i=i+12|0;S=g;return i|0}d=b[a+12>>2]|0;a=0;do{c=(b[d+(a<<3)>>2]|0)+c|0;a=a+1|0}while((a|0)<(e|0));i=(f|0)<(c|0);i=i?c:f;i=i+12|0;S=g;return i|0}function ga(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=S;S=S+48|0;e=i+8|0;f=i;if(!(ha(a,c,d)|0)){S=i;return}j=a;g=b[j+4>>2]|0;h=f;b[h>>2]=b[j>>2];b[h+4>>2]=g;uc(f,e);h=ya(e,c)|0;c=b[f>>2]|0;g=b[a+8>>2]|0;if((g|0)>0){f=b[a+12>>2]|0;e=0;do{c=(b[f+(e<<3)>>2]|0)+c|0;e=e+1|0}while((e|0)!=(g|0))}c=(h|0)<(c|0)?c:h;if((c|0)<=-12){S=i;return}j=c+11|0;gd(d|0,0,(((j|0)>0?j:0)<<3)+8|0)|0;S=i;return}function ha(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,I=0,J=0;J=S;S=S+112|0;D=J+80|0;j=J+72|0;E=J;F=J+56|0;k=a+8|0;I=Vc((b[k>>2]<<5)+32|0)|0;if(!I)H(22848,22448,800,22456);vc(a,I);g=a;e=b[g+4>>2]|0;i=j;b[i>>2]=b[g>>2];b[i+4>>2]=e;uc(j,D);i=ya(D,c)|0;e=b[j>>2]|0;g=b[k>>2]|0;if((g|0)>0){h=b[a+12>>2]|0;f=0;do{e=(b[h+(f<<3)>>2]|0)+e|0;f=f+1|0}while((f|0)!=(g|0))}i=(i|0)<(e|0)?e:i;C=i+12|0;f=Xc(C,8)|0;l=Xc(C,8)|0;b[D>>2]=0;A=a;B=b[A+4>>2]|0;e=j;b[e>>2]=b[A>>2];b[e+4>>2]=B;e=ia(j,C,c,D,f,l)|0;if(e|0){Wc(f);Wc(l);Wc(I);I=e;S=J;return I|0}a:do if((b[k>>2]|0)>0){g=a+12|0;e=0;while(1){h=ia((b[g>>2]|0)+(e<<3)|0,C,c,D,f,l)|0;e=e+1|0;if(h|0)break;if((e|0)>=(b[k>>2]|0))break a}Wc(f);Wc(l);Wc(I);I=h;S=J;return I|0}while(0);if((i|0)>-12)gd(l|0,0,((C|0)>1?C:1)<<3|0)|0;b:do if((b[D>>2]|0)>0){B=((C|0)<0)<<31>>31;v=f;w=l;x=f;y=f;z=l;A=f;e=f;r=f;s=l;t=l;u=l;f=l;c:while(1){q=b[D>>2]|0;o=0;p=0;g=0;while(1){h=E;i=h+56|0;do{b[h>>2]=0;h=h+4|0}while((h|0)<(i|0));c=v+(o<<3)|0;j=b[c>>2]|0;c=b[c+4>>2]|0;if(ba(j,c,1,E,0)|0){h=E;i=h+56|0;do{b[h>>2]=0;h=h+4|0}while((h|0)<(i|0));h=Xc(7,4)|0;if(h|0){ca(j,c,1,E,h,7,0);Wc(h)}}n=0;do{m=E+(n<<3)|0;l=b[m>>2]|0;m=b[m+4>>2]|0;d:do if(!((l|0)==0&(m|0)==0)){j=ad(l|0,m|0,C|0,B|0)|0;G()|0;h=d+(j<<3)|0;i=h;c=b[i>>2]|0;i=b[i+4>>2]|0;if(!((c|0)==0&(i|0)==0)){k=0;while(1){if((k|0)>(C|0))break c;if((c|0)==(l|0)&(i|0)==(m|0))break d;j=(j+1|0)%(C|0)|0;h=d+(j<<3)|0;i=h;c=b[i>>2]|0;i=b[i+4>>2]|0;if((c|0)==0&(i|0)==0)break;else k=k+1|0}}if(!((l|0)==0&(m|0)==0)){Ub(l,m,F);if(wc(a,I,F)|0){k=h;b[k>>2]=l;b[k+4>>2]=m;k=w+(g<<3)|0;b[k>>2]=l;b[k+4>>2]=m;g=g+1|0}}}while(0);n=n+1|0}while(n>>>0<7);p=p+1|0;if((p|0)>=(q|0))break;else o=o+1|0}if((q|0)>0)gd(x|0,0,q<<3|0)|0;b[D>>2]=g;if((g|0)>0){l=f;m=u;n=A;o=t;p=s;q=w;f=r;u=e;t=y;s=x;r=l;e=m;A=z;z=n;y=o;x=p;w=v;v=q}else break b}Wc(y);Wc(z);Wc(I);I=-1;S=J;return I|0}else e=l;while(0);Wc(I);Wc(f);Wc(e);I=0;S=J;return I|0}function ia(a,c,d,f,g,h){a=a|0;c=c|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0;C=S;S=S+48|0;y=C+32|0;z=C+16|0;A=C;i=b[a>>2]|0;if((i|0)<=0){B=0;S=C;return B|0}t=a+4|0;u=y+8|0;v=z+8|0;w=A+8|0;x=((c|0)<0)<<31>>31;s=0;a:while(1){j=b[t>>2]|0;q=j+(s<<4)|0;b[y>>2]=b[q>>2];b[y+4>>2]=b[q+4>>2];b[y+8>>2]=b[q+8>>2];b[y+12>>2]=b[q+12>>2];if((s|0)==(i+-1|0)){b[z>>2]=b[j>>2];b[z+4>>2]=b[j+4>>2];b[z+8>>2]=b[j+8>>2];b[z+12>>2]=b[j+12>>2]}else{q=j+(s+1<<4)|0;b[z>>2]=b[q>>2];b[z+4>>2]=b[q+4>>2];b[z+8>>2]=b[q+8>>2];b[z+12>>2]=b[q+12>>2]}q=za(y,z,d)|0;b:do if((q|0)>0){r=+(q|0);p=0;c:while(1){E=+(q-p|0);D=+(p|0);e[A>>3]=+e[y>>3]*E/r+ +e[z>>3]*D/r;e[w>>3]=+e[u>>3]*E/r+ +e[v>>3]*D/r;n=Rb(A,d)|0;o=G()|0;j=ad(n|0,o|0,c|0,x|0)|0;G()|0;i=h+(j<<3)|0;k=i;l=b[k>>2]|0;k=b[k+4>>2]|0;d:do if((l|0)==0&(k|0)==0)B=14;else{m=0;while(1){if((m|0)>(c|0)){i=1;break d}if((l|0)==(n|0)&(k|0)==(o|0)){i=7;break d}j=(j+1|0)%(c|0)|0;i=h+(j<<3)|0;k=i;l=b[k>>2]|0;k=b[k+4>>2]|0;if((l|0)==0&(k|0)==0){B=14;break}else m=m+1|0}}while(0);if((B|0)==14){B=0;if((n|0)==0&(o|0)==0)i=7;else{b[i>>2]=n;b[i+4>>2]=o;i=b[f>>2]|0;m=g+(i<<3)|0;b[m>>2]=n;b[m+4>>2]=o;b[f>>2]=i+1;i=0}}switch(i&7){case 7:case 0:break;default:break c}p=p+1|0;if((q|0)<=(p|0)){B=8;break b}}if(i|0){i=-1;B=20;break a}}else B=8;while(0);if((B|0)==8)B=0;s=s+1|0;i=b[a>>2]|0;if((s|0)>=(i|0)){i=0;B=20;break}}if((B|0)==20){S=C;return i|0}return 0}function ja(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=S;S=S+176|0;j=k;if((c|0)<1){Lc(d,0,0);S=k;return}h=a;h=bd(b[h>>2]|0,b[h+4>>2]|0,52)|0;G()|0;Lc(d,(c|0)>6?c:6,h&15);h=0;do{e=a+(h<<3)|0;Vb(b[e>>2]|0,b[e+4>>2]|0,j);e=b[j>>2]|0;if((e|0)>0){i=0;do{g=j+8+(i<<4)|0;i=i+1|0;e=j+8+(((i|0)%(e|0)|0)<<4)|0;f=Qc(d,e,g)|0;if(!f)Pc(d,g,e)|0;else Oc(d,f)|0;e=b[j>>2]|0}while((i|0)<(e|0))}h=h+1|0}while((h|0)!=(c|0));S=k;return}function ka(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;g=S;S=S+32|0;e=g;f=g+16|0;ja(a,c,f);b[d>>2]=0;b[d+4>>2]=0;b[d+8>>2]=0;a=Nc(f)|0;if(!a){jc(d)|0;Mc(f);S=g;return}do{c=gc(d)|0;do{hc(c,a)|0;h=a+16|0;b[e>>2]=b[h>>2];b[e+4>>2]=b[h+4>>2];b[e+8>>2]=b[h+8>>2];b[e+12>>2]=b[h+12>>2];Oc(f,a)|0;a=Rc(f,e)|0}while((a|0)!=0);a=Nc(f)|0}while((a|0)!=0);jc(d)|0;Mc(f);S=g;return}function la(a){a=a|0;return b[7728+(a*28|0)+16>>2]|0}function ma(a){a=a|0;return (a|0)==4|(a|0)==117|0}function na(a){a=a|0;return b[11152+((b[a>>2]|0)*216|0)+((b[a+4>>2]|0)*72|0)+((b[a+8>>2]|0)*24|0)+(b[a+12>>2]<<3)>>2]|0}function oa(a){a=a|0;return b[11152+((b[a>>2]|0)*216|0)+((b[a+4>>2]|0)*72|0)+((b[a+8>>2]|0)*24|0)+(b[a+12>>2]<<3)+4>>2]|0}function pa(a,c){a=a|0;c=c|0;a=7728+(a*28|0)|0;b[c>>2]=b[a>>2];b[c+4>>2]=b[a+4>>2];b[c+8>>2]=b[a+8>>2];b[c+12>>2]=b[a+12>>2];return}function qa(a,c){a=a|0;c=c|0;var d=0,e=0;if(c>>>0>20){c=-1;return c|0}do if((b[11152+(c*216|0)>>2]|0)!=(a|0))if((b[11152+(c*216|0)+8>>2]|0)!=(a|0))if((b[11152+(c*216|0)+16>>2]|0)!=(a|0))if((b[11152+(c*216|0)+24>>2]|0)!=(a|0))if((b[11152+(c*216|0)+32>>2]|0)!=(a|0))if((b[11152+(c*216|0)+40>>2]|0)!=(a|0))if((b[11152+(c*216|0)+48>>2]|0)!=(a|0))if((b[11152+(c*216|0)+56>>2]|0)!=(a|0))if((b[11152+(c*216|0)+64>>2]|0)!=(a|0))if((b[11152+(c*216|0)+72>>2]|0)!=(a|0))if((b[11152+(c*216|0)+80>>2]|0)!=(a|0))if((b[11152+(c*216|0)+88>>2]|0)!=(a|0))if((b[11152+(c*216|0)+96>>2]|0)!=(a|0))if((b[11152+(c*216|0)+104>>2]|0)!=(a|0))if((b[11152+(c*216|0)+112>>2]|0)!=(a|0))if((b[11152+(c*216|0)+120>>2]|0)!=(a|0))if((b[11152+(c*216|0)+128>>2]|0)!=(a|0))if((b[11152+(c*216|0)+136>>2]|0)==(a|0)){a=2;d=1;e=2}else{if((b[11152+(c*216|0)+144>>2]|0)==(a|0)){a=0;d=2;e=0;break}if((b[11152+(c*216|0)+152>>2]|0)==(a|0)){a=0;d=2;e=1;break}if((b[11152+(c*216|0)+160>>2]|0)==(a|0)){a=0;d=2;e=2;break}if((b[11152+(c*216|0)+168>>2]|0)==(a|0)){a=1;d=2;e=0;break}if((b[11152+(c*216|0)+176>>2]|0)==(a|0)){a=1;d=2;e=1;break}if((b[11152+(c*216|0)+184>>2]|0)==(a|0)){a=1;d=2;e=2;break}if((b[11152+(c*216|0)+192>>2]|0)==(a|0)){a=2;d=2;e=0;break}if((b[11152+(c*216|0)+200>>2]|0)==(a|0)){a=2;d=2;e=1;break}if((b[11152+(c*216|0)+208>>2]|0)==(a|0)){a=2;d=2;e=2;break}else a=-1;return a|0}else{a=2;d=1;e=1}else{a=2;d=1;e=0}else{a=1;d=1;e=2}else{a=1;d=1;e=1}else{a=1;d=1;e=0}else{a=0;d=1;e=2}else{a=0;d=1;e=1}else{a=0;d=1;e=0}else{a=2;d=0;e=2}else{a=2;d=0;e=1}else{a=2;d=0;e=0}else{a=1;d=0;e=2}else{a=1;d=0;e=1}else{a=1;d=0;e=0}else{a=0;d=0;e=2}else{a=0;d=0;e=1}else{a=0;d=0;e=0}while(0);c=b[11152+(c*216|0)+(d*72|0)+(a*24|0)+(e<<3)+4>>2]|0;return c|0}function ra(a,c){a=a|0;c=c|0;if((b[7728+(a*28|0)+20>>2]|0)==(c|0)){c=1;return c|0}c=(b[7728+(a*28|0)+24>>2]|0)==(c|0);return c|0}function sa(a,c){a=a|0;c=c|0;return b[880+(a*28|0)+(c<<2)>>2]|0}function ta(a,c){a=a|0;c=c|0;if((b[880+(a*28|0)>>2]|0)==(c|0)){c=0;return c|0}if((b[880+(a*28|0)+4>>2]|0)==(c|0)){c=1;return c|0}if((b[880+(a*28|0)+8>>2]|0)==(c|0)){c=2;return c|0}if((b[880+(a*28|0)+12>>2]|0)==(c|0)){c=3;return c|0}if((b[880+(a*28|0)+16>>2]|0)==(c|0)){c=4;return c|0}if((b[880+(a*28|0)+20>>2]|0)==(c|0)){c=5;return c|0}else return ((b[880+(a*28|0)+24>>2]|0)==(c|0)?6:7)|0;return 0}function ua(){return 122}function va(a){a=a|0;var c=0,d=0,e=0;c=0;do{cd(c|0,0,45)|0;e=G()|0|134225919;d=a+(c<<3)|0;b[d>>2]=-1;b[d+4>>2]=e;c=c+1|0}while((c|0)!=122);return}function wa(a){a=a|0;return +e[a+16>>3]<+e[a+24>>3]|0}function xa(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,f=0.0;c=+e[b>>3];if(!(c>=+e[a+8>>3])){b=0;return b|0}if(!(c<=+e[a>>3])){b=0;return b|0}d=+e[a+16>>3];c=+e[a+24>>3];f=+e[b+8>>3];b=f>=c;a=f<=d&1;if(d>2]=0;h=h+4|0}while((h|0)<(j|0));Zb(c,g);h=g;j=b[h>>2]|0;h=b[h+4>>2]|0;Ub(j,h,d);Vb(j,h,f);k=+jb(d,f+8|0);e[d>>3]=+e[a>>3];h=d+8|0;e[h>>3]=+e[a+16>>3];e[f>>3]=+e[a+8>>3];j=f+8|0;e[j>>3]=+e[a+24>>3];l=+jb(d,f);j=~~+A(+(l*l/+dd(+(+q(+((+e[h>>3]-+e[j>>3])/(+e[d>>3]-+e[f>>3])))),3.0)/(k*(k*2.59807621135)*.8)));S=i;return ((j|0)==0?1:j)|0}function za(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0.0;i=S;S=S+288|0;e=i+264|0;f=i+96|0;g=i;h=g;j=h+96|0;do{b[h>>2]=0;h=h+4|0}while((h|0)<(j|0));Zb(d,g);j=g;h=b[j>>2]|0;j=b[j+4>>2]|0;Ub(h,j,e);Vb(h,j,f);k=+jb(e,f+8|0);j=~~+A(+(+jb(a,c)/(k*2.0)));S=i;return ((j|0)==0?1:j)|0}function Aa(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;b[a>>2]=c;b[a+4>>2]=d;b[a+8>>2]=e;return}function Ba(a,c){a=a|0;c=c|0;var d=0,f=0,g=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0,o=0.0;n=c+8|0;b[n>>2]=0;k=+e[a>>3];i=+q(+k);l=+e[a+8>>3];j=+q(+l)/.8660254037844386;i=i+j*.5;d=~~i;a=~~j;i=i-+(d|0);j=j-+(a|0);do if(i<.5)if(i<.3333333333333333){b[c>>2]=d;if(j<(i+1.0)*.5){b[c+4>>2]=a;break}else{a=a+1|0;b[c+4>>2]=a;break}}else{o=1.0-i;a=(!(j>2]=a;if(o<=j&j>2]=d;break}else{b[c>>2]=d;break}}else{if(!(i<.6666666666666666)){d=d+1|0;b[c>>2]=d;if(j>2]=a;break}else{a=a+1|0;b[c+4>>2]=a;break}}if(j<1.0-i){b[c+4>>2]=a;if(i*2.0+-1.0>2]=d;break}}else{a=a+1|0;b[c+4>>2]=a}d=d+1|0;b[c>>2]=d}while(0);do if(k<0.0)if(!(a&1)){m=(a|0)/2|0;m=Zc(d|0,((d|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0;d=~~(+(d|0)-(+(m>>>0)+4294967296.0*+(G()|0))*2.0);b[c>>2]=d;break}else{m=(a+1|0)/2|0;m=Zc(d|0,((d|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0;d=~~(+(d|0)-((+(m>>>0)+4294967296.0*+(G()|0))*2.0+1.0));b[c>>2]=d;break}while(0);m=c+4|0;if(l<0.0){d=d-((a<<1|1|0)/2|0)|0;b[c>>2]=d;a=0-a|0;b[m>>2]=a}f=a-d|0;if((d|0)<0){g=0-d|0;b[m>>2]=f;b[n>>2]=g;b[c>>2]=0;a=f;d=0}else g=0;if((a|0)<0){d=d-a|0;b[c>>2]=d;g=g-a|0;b[n>>2]=g;b[m>>2]=0;a=0}h=d-g|0;f=a-g|0;if((g|0)<0){b[c>>2]=h;b[m>>2]=f;b[n>>2]=0;a=f;d=h;g=0}f=(a|0)<(d|0)?a:d;f=(g|0)<(f|0)?g:f;if((f|0)<=0)return;b[c>>2]=d-f;b[m>>2]=a-f;b[n>>2]=g-f;return}function Ca(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=b[a>>2]|0;h=a+4|0;d=b[h>>2]|0;if((c|0)<0){d=d-c|0;b[h>>2]=d;g=a+8|0;b[g>>2]=(b[g>>2]|0)-c;b[a>>2]=0;c=0}if((d|0)<0){c=c-d|0;b[a>>2]=c;g=a+8|0;f=(b[g>>2]|0)-d|0;b[g>>2]=f;b[h>>2]=0;d=0}else{f=a+8|0;g=f;f=b[f>>2]|0}if((f|0)<0){c=c-f|0;b[a>>2]=c;d=d-f|0;b[h>>2]=d;b[g>>2]=0;f=0}e=(d|0)<(c|0)?d:c;e=(f|0)<(e|0)?f:e;if((e|0)<=0)return;b[a>>2]=c-e;b[h>>2]=d-e;b[g>>2]=f-e;return}function Da(a,c){a=a|0;c=c|0;var d=0.0,f=0;f=b[a+8>>2]|0;d=+((b[a+4>>2]|0)-f|0);e[c>>3]=+((b[a>>2]|0)-f|0)-d*.5;e[c+8>>3]=d*.8660254037844386;return}function Ea(a,c,d){a=a|0;c=c|0;d=d|0;b[d>>2]=(b[c>>2]|0)+(b[a>>2]|0);b[d+4>>2]=(b[c+4>>2]|0)+(b[a+4>>2]|0);b[d+8>>2]=(b[c+8>>2]|0)+(b[a+8>>2]|0);return}function Fa(a,c,d){a=a|0;c=c|0;d=d|0;b[d>>2]=(b[a>>2]|0)-(b[c>>2]|0);b[d+4>>2]=(b[a+4>>2]|0)-(b[c+4>>2]|0);b[d+8>>2]=(b[a+8>>2]|0)-(b[c+8>>2]|0);return}function Ga(a,c){a=a|0;c=c|0;var d=0,e=0;d=B(b[a>>2]|0,c)|0;b[a>>2]=d;d=a+4|0;e=B(b[d>>2]|0,c)|0;b[d>>2]=e;a=a+8|0;c=B(b[a>>2]|0,c)|0;b[a>>2]=c;return}function Ha(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=b[a>>2]|0;i=(h|0)<0;e=(b[a+4>>2]|0)-(i?h:0)|0;g=(e|0)<0;f=(g?0-e|0:0)+((b[a+8>>2]|0)-(i?h:0))|0;d=(f|0)<0;a=d?0:f;c=(g?0:e)-(d?f:0)|0;f=(i?0:h)-(g?e:0)-(d?f:0)|0;d=(c|0)<(f|0)?c:f;d=(a|0)<(d|0)?a:d;e=(d|0)>0;a=a-(e?d:0)|0;c=c-(e?d:0)|0;a:do switch(f-(e?d:0)|0){case 0:switch(c|0){case 0:{i=(a|0)==0?0:(a|0)==1?1:7;return i|0}case 1:{i=(a|0)==0?2:(a|0)==1?3:7;return i|0}default:break a}case 1:switch(c|0){case 0:{i=(a|0)==0?4:(a|0)==1?5:7;return i|0}case 1:{if(!a)a=6;else break a;return a|0}default:break a}default:{}}while(0);i=7;return i|0}function Ia(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;d=b[h>>2]|0;c=(b[a>>2]|0)-d|0;i=a+4|0;d=(b[i>>2]|0)-d|0;e=Uc(+((c*3|0)-d|0)/7.0)|0;b[a>>2]=e;c=Uc(+((d<<1)+c|0)/7.0)|0;b[i>>2]=c;b[h>>2]=0;d=c-e|0;if((e|0)<0){g=0-e|0;b[i>>2]=d;b[h>>2]=g;b[a>>2]=0;c=d;e=0;d=g}else d=0;if((c|0)<0){e=e-c|0;b[a>>2]=e;d=d-c|0;b[h>>2]=d;b[i>>2]=0;c=0}g=e-d|0;f=c-d|0;if((d|0)<0){b[a>>2]=g;b[i>>2]=f;b[h>>2]=0;c=f;f=g;d=0}else f=e;e=(c|0)<(f|0)?c:f;e=(d|0)<(e|0)?d:e;if((e|0)<=0)return;b[a>>2]=f-e;b[i>>2]=c-e;b[h>>2]=d-e;return}function Ja(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;d=b[h>>2]|0;c=(b[a>>2]|0)-d|0;i=a+4|0;d=(b[i>>2]|0)-d|0;e=Uc(+((c<<1)+d|0)/7.0)|0;b[a>>2]=e;c=Uc(+((d*3|0)-c|0)/7.0)|0;b[i>>2]=c;b[h>>2]=0;d=c-e|0;if((e|0)<0){g=0-e|0;b[i>>2]=d;b[h>>2]=g;b[a>>2]=0;c=d;e=0;d=g}else d=0;if((c|0)<0){e=e-c|0;b[a>>2]=e;d=d-c|0;b[h>>2]=d;b[i>>2]=0;c=0}g=e-d|0;f=c-d|0;if((d|0)<0){b[a>>2]=g;b[i>>2]=f;b[h>>2]=0;c=f;f=g;d=0}else f=e;e=(c|0)<(f|0)?c:f;e=(d|0)<(e|0)?d:e;if((e|0)<=0)return;b[a>>2]=f-e;b[i>>2]=c-e;b[h>>2]=d-e;return}function Ka(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b[a>>2]|0;h=a+4|0;d=b[h>>2]|0;i=a+8|0;e=b[i>>2]|0;f=d+(c*3|0)|0;b[a>>2]=f;d=e+(d*3|0)|0;b[h>>2]=d;c=(e*3|0)+c|0;b[i>>2]=c;e=d-f|0;if((f|0)<0){c=c-f|0;b[h>>2]=e;b[i>>2]=c;b[a>>2]=0;d=e;e=0}else e=f;if((d|0)<0){e=e-d|0;b[a>>2]=e;c=c-d|0;b[i>>2]=c;b[h>>2]=0;d=0}g=e-c|0;f=d-c|0;if((c|0)<0){b[a>>2]=g;b[h>>2]=f;b[i>>2]=0;e=g;c=0}else f=d;d=(f|0)<(e|0)?f:e;d=(c|0)<(d|0)?c:d;if((d|0)<=0)return;b[a>>2]=e-d;b[h>>2]=f-d;b[i>>2]=c-d;return}function La(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=b[a>>2]|0;h=a+4|0;c=b[h>>2]|0;i=a+8|0;d=b[i>>2]|0;e=(c*3|0)+f|0;f=d+(f*3|0)|0;b[a>>2]=f;b[h>>2]=e;c=(d*3|0)+c|0;b[i>>2]=c;d=e-f|0;if((f|0)<0){c=c-f|0;b[h>>2]=d;b[i>>2]=c;b[a>>2]=0;f=0}else d=e;if((d|0)<0){f=f-d|0;b[a>>2]=f;c=c-d|0;b[i>>2]=c;b[h>>2]=0;d=0}g=f-c|0;e=d-c|0;if((c|0)<0){b[a>>2]=g;b[h>>2]=e;b[i>>2]=0;f=g;c=0}else e=d;d=(e|0)<(f|0)?e:f;d=(c|0)<(d|0)?c:d;if((d|0)<=0)return;b[a>>2]=f-d;b[h>>2]=e-d;b[i>>2]=c-d;return}function Ma(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;if((c+-1|0)>>>0>=6)return;f=(b[15472+(c*12|0)>>2]|0)+(b[a>>2]|0)|0;b[a>>2]=f;i=a+4|0;e=(b[15472+(c*12|0)+4>>2]|0)+(b[i>>2]|0)|0;b[i>>2]=e;h=a+8|0;c=(b[15472+(c*12|0)+8>>2]|0)+(b[h>>2]|0)|0;b[h>>2]=c;d=e-f|0;if((f|0)<0){c=c-f|0;b[i>>2]=d;b[h>>2]=c;b[a>>2]=0;e=0}else{d=e;e=f}if((d|0)<0){e=e-d|0;b[a>>2]=e;c=c-d|0;b[h>>2]=c;b[i>>2]=0;d=0}g=e-c|0;f=d-c|0;if((c|0)<0){b[a>>2]=g;b[i>>2]=f;b[h>>2]=0;e=g;c=0}else f=d;d=(f|0)<(e|0)?f:e;d=(c|0)<(d|0)?c:d;if((d|0)<=0)return;b[a>>2]=e-d;b[i>>2]=f-d;b[h>>2]=c-d;return}function Na(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=b[a>>2]|0;h=a+4|0;c=b[h>>2]|0;i=a+8|0;d=b[i>>2]|0;e=c+f|0;f=d+f|0;b[a>>2]=f;b[h>>2]=e;c=d+c|0;b[i>>2]=c;d=e-f|0;if((f|0)<0){c=c-f|0;b[h>>2]=d;b[i>>2]=c;b[a>>2]=0;e=0}else{d=e;e=f}if((d|0)<0){e=e-d|0;b[a>>2]=e;c=c-d|0;b[i>>2]=c;b[h>>2]=0;d=0}g=e-c|0;f=d-c|0;if((c|0)<0){b[a>>2]=g;b[h>>2]=f;b[i>>2]=0;e=g;c=0}else f=d;d=(f|0)<(e|0)?f:e;d=(c|0)<(d|0)?c:d;if((d|0)<=0)return;b[a>>2]=e-d;b[h>>2]=f-d;b[i>>2]=c-d;return}function Oa(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b[a>>2]|0;h=a+4|0;e=b[h>>2]|0;i=a+8|0;d=b[i>>2]|0;f=e+c|0;b[a>>2]=f;e=d+e|0;b[h>>2]=e;c=d+c|0;b[i>>2]=c;d=e-f|0;if((f|0)<0){c=c-f|0;b[h>>2]=d;b[i>>2]=c;b[a>>2]=0;e=0}else{d=e;e=f}if((d|0)<0){e=e-d|0;b[a>>2]=e;c=c-d|0;b[i>>2]=c;b[h>>2]=0;d=0}g=e-c|0;f=d-c|0;if((c|0)<0){b[a>>2]=g;b[h>>2]=f;b[i>>2]=0;e=g;c=0}else f=d;d=(f|0)<(e|0)?f:e;d=(c|0)<(d|0)?c:d;if((d|0)<=0)return;b[a>>2]=e-d;b[h>>2]=f-d;b[i>>2]=c-d;return}function Pa(a){a=a|0;switch(a|0){case 1:{a=5;break}case 5:{a=4;break}case 4:{a=6;break}case 6:{a=2;break}case 2:{a=3;break}case 3:{a=1;break}default:{}}return a|0}function Qa(a){a=a|0;switch(a|0){case 1:{a=3;break}case 3:{a=2;break}case 2:{a=6;break}case 6:{a=4;break}case 4:{a=5;break}case 5:{a=1;break}default:{}}return a|0}function Ra(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b[a>>2]|0;h=a+4|0;d=b[h>>2]|0;i=a+8|0;e=b[i>>2]|0;f=d+(c<<1)|0;b[a>>2]=f;d=e+(d<<1)|0;b[h>>2]=d;c=(e<<1)+c|0;b[i>>2]=c;e=d-f|0;if((f|0)<0){c=c-f|0;b[h>>2]=e;b[i>>2]=c;b[a>>2]=0;d=e;e=0}else e=f;if((d|0)<0){e=e-d|0;b[a>>2]=e;c=c-d|0;b[i>>2]=c;b[h>>2]=0;d=0}g=e-c|0;f=d-c|0;if((c|0)<0){b[a>>2]=g;b[h>>2]=f;b[i>>2]=0;e=g;c=0}else f=d;d=(f|0)<(e|0)?f:e;d=(c|0)<(d|0)?c:d;if((d|0)<=0)return;b[a>>2]=e-d;b[h>>2]=f-d;b[i>>2]=c-d;return}function Sa(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=b[a>>2]|0;h=a+4|0;c=b[h>>2]|0;i=a+8|0;d=b[i>>2]|0;e=(c<<1)+f|0;f=d+(f<<1)|0;b[a>>2]=f;b[h>>2]=e;c=(d<<1)+c|0;b[i>>2]=c;d=e-f|0;if((f|0)<0){c=c-f|0;b[h>>2]=d;b[i>>2]=c;b[a>>2]=0;f=0}else d=e;if((d|0)<0){f=f-d|0;b[a>>2]=f;c=c-d|0;b[i>>2]=c;b[h>>2]=0;d=0}g=f-c|0;e=d-c|0;if((c|0)<0){b[a>>2]=g;b[h>>2]=e;b[i>>2]=0;f=g;c=0}else e=d;d=(e|0)<(f|0)?e:f;d=(c|0)<(d|0)?c:d;if((d|0)<=0)return;b[a>>2]=f-d;b[h>>2]=e-d;b[i>>2]=c-d;return}function Ta(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=(b[a>>2]|0)-(b[c>>2]|0)|0;i=(h|0)<0;e=(b[a+4>>2]|0)-(b[c+4>>2]|0)-(i?h:0)|0;g=(e|0)<0;f=(i?0-h|0:0)+(b[a+8>>2]|0)-(b[c+8>>2]|0)+(g?0-e|0:0)|0;a=(f|0)<0;c=a?0:f;d=(g?0:e)-(a?f:0)|0;f=(i?0:h)-(g?e:0)-(a?f:0)|0;a=(d|0)<(f|0)?d:f;a=(c|0)<(a|0)?c:a;e=(a|0)>0;c=c-(e?a:0)|0;d=d-(e?a:0)|0;a=f-(e?a:0)|0;a=(a|0)>-1?a:0-a|0;d=(d|0)>-1?d:0-d|0;c=(c|0)>-1?c:0-c|0;c=(d|0)>(c|0)?d:c;return ((a|0)>(c|0)?a:c)|0}function Ua(a,c){a=a|0;c=c|0;var d=0;d=b[a+8>>2]|0;b[c>>2]=(b[a>>2]|0)-d;b[c+4>>2]=(b[a+4>>2]|0)-d;return}function Va(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=b[a>>2]|0;b[c>>2]=e;a=b[a+4>>2]|0;h=c+4|0;b[h>>2]=a;i=c+8|0;b[i>>2]=0;d=a-e|0;if((e|0)<0){a=0-e|0;b[h>>2]=d;b[i>>2]=a;b[c>>2]=0;e=0}else{d=a;a=0}if((d|0)<0){e=e-d|0;b[c>>2]=e;a=a-d|0;b[i>>2]=a;b[h>>2]=0;d=0}g=e-a|0;f=d-a|0;if((a|0)<0){b[c>>2]=g;b[h>>2]=f;b[i>>2]=0;d=f;f=g;a=0}else f=e;e=(d|0)<(f|0)?d:f;e=(a|0)<(e|0)?a:e;if((e|0)<=0)return;b[c>>2]=f-e;b[h>>2]=d-e;b[i>>2]=a-e;return}function Wa(a){a=a|0;var c=0,d=0,e=0,f=0;c=a+8|0;f=b[c>>2]|0;d=f-(b[a>>2]|0)|0;b[a>>2]=d;e=a+4|0;a=(b[e>>2]|0)-f|0;b[e>>2]=a;b[c>>2]=0-(a+d);return}function Xa(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=b[a>>2]|0;c=0-d|0;b[a>>2]=c;h=a+8|0;b[h>>2]=0;i=a+4|0;e=b[i>>2]|0;f=e+d|0;if((d|0)>0){b[i>>2]=f;b[h>>2]=d;b[a>>2]=0;c=0;e=f}else d=0;if((e|0)<0){g=c-e|0;b[a>>2]=g;d=d-e|0;b[h>>2]=d;b[i>>2]=0;f=g-d|0;c=0-d|0;if((d|0)<0){b[a>>2]=f;b[i>>2]=c;b[h>>2]=0;e=c;d=0}else{e=0;f=g}}else f=c;c=(e|0)<(f|0)?e:f;c=(d|0)<(c|0)?d:c;if((c|0)<=0)return;b[a>>2]=f-c;b[i>>2]=e-c;b[h>>2]=d-c;return}function Ya(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=S;S=S+16|0;e=d;Za(a,b,c,e);Ba(e,c+4|0);S=d;return}function Za(a,c,d,f){a=a|0;c=c|0;d=d|0;f=f|0;var g=0.0,h=0,i=0.0,j=0.0,k=0;k=S;S=S+32|0;h=k;Ic(a,h);b[d>>2]=0;g=+Hc(15888,h);i=+Hc(15912,h);if(i>2]=1;g=i}i=+Hc(15936,h);if(i>2]=2;g=i}i=+Hc(15960,h);if(i>2]=3;g=i}i=+Hc(15984,h);if(i>2]=4;g=i}i=+Hc(16008,h);if(i>2]=5;g=i}i=+Hc(16032,h);if(i>2]=6;g=i}i=+Hc(16056,h);if(i>2]=7;g=i}i=+Hc(16080,h);if(i>2]=8;g=i}i=+Hc(16104,h);if(i>2]=9;g=i}i=+Hc(16128,h);if(i>2]=10;g=i}i=+Hc(16152,h);if(i>2]=11;g=i}i=+Hc(16176,h);if(i>2]=12;g=i}i=+Hc(16200,h);if(i>2]=13;g=i}i=+Hc(16224,h);if(i>2]=14;g=i}i=+Hc(16248,h);if(i>2]=15;g=i}i=+Hc(16272,h);if(i>2]=16;g=i}i=+Hc(16296,h);if(i>2]=17;g=i}i=+Hc(16320,h);if(i>2]=18;g=i}i=+Hc(16344,h);if(i>2]=19;g=i}i=+w(+(1.0-g*.5));if(i<1.0e-16){b[f>>2]=0;b[f+4>>2]=0;b[f+8>>2]=0;b[f+12>>2]=0;S=k;return}d=b[d>>2]|0;g=+e[16368+(d*24|0)>>3];g=+gb(g-+gb(+lb(15568+(d<<4)|0,a)));if(!(Qb(c)|0))j=g;else j=+gb(g+-.3334731722518321);g=+v(+i)/.381966011250105;if((c|0)>0){h=0;do{g=g*2.6457513110645907;h=h+1|0}while((h|0)!=(c|0))}i=+t(+j)*g;e[f>>3]=i;j=+u(+j)*g;e[f+8>>3]=j;S=k;return}function _a(a,c,d,f,g){a=a|0;c=c|0;d=d|0;f=f|0;g=g|0;var h=0.0,i=0.0;h=+Ec(a);if(h<1.0e-16){c=15568+(c<<4)|0;b[g>>2]=b[c>>2];b[g+4>>2]=b[c+4>>2];b[g+8>>2]=b[c+8>>2];b[g+12>>2]=b[c+12>>2];return}i=+z(+(+e[a+8>>3]),+(+e[a>>3]));if((d|0)>0){a=0;do{h=h/2.6457513110645907;a=a+1|0}while((a|0)!=(d|0))}if(!f){h=+y(+(h*.381966011250105));if(Qb(d)|0)i=+gb(i+.3334731722518321)}else{h=h/3.0;d=(Qb(d)|0)==0;h=+y(+((d?h:h/2.6457513110645907)*.381966011250105))}mb(15568+(c<<4)|0,+gb(+e[16368+(c*24|0)>>3]-i),h,g);return}function $a(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0;e=S;S=S+16|0;f=e;Da(a+4|0,f);_a(f,b[a>>2]|0,c,0,d);S=e;return}function ab(a,c,d,f,g){a=a|0;c=c|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0.0,J=0.0;G=S;S=S+272|0;h=G+256|0;u=G+240|0;D=G;E=G+224|0;F=G+208|0;v=G+176|0;w=G+160|0;x=G+192|0;y=G+144|0;z=G+128|0;A=G+112|0;B=G+96|0;C=G+80|0;b[h>>2]=c;b[u>>2]=b[a>>2];b[u+4>>2]=b[a+4>>2];b[u+8>>2]=b[a+8>>2];b[u+12>>2]=b[a+12>>2];bb(u,h,D);b[g>>2]=0;u=f+d+((f|0)==5&1)|0;if((u|0)<=(d|0)){S=G;return}k=b[h>>2]|0;l=E+4|0;m=v+4|0;n=d+5|0;o=16848+(k<<2)|0;p=16928+(k<<2)|0;q=z+8|0;r=A+8|0;s=B+8|0;t=F+4|0;j=d;a:while(1){i=D+(((j|0)%5|0)<<4)|0;b[F>>2]=b[i>>2];b[F+4>>2]=b[i+4>>2];b[F+8>>2]=b[i+8>>2];b[F+12>>2]=b[i+12>>2];do{}while((cb(F,k,0,1)|0)==2);if((j|0)>(d|0)&(Qb(c)|0)!=0){b[v>>2]=b[F>>2];b[v+4>>2]=b[F+4>>2];b[v+8>>2]=b[F+8>>2];b[v+12>>2]=b[F+12>>2];Da(l,w);f=b[v>>2]|0;h=b[17008+(f*80|0)+(b[E>>2]<<2)>>2]|0;b[v>>2]=b[18608+(f*80|0)+(h*20|0)>>2];i=b[18608+(f*80|0)+(h*20|0)+16>>2]|0;if((i|0)>0){a=0;do{Na(m);a=a+1|0}while((a|0)<(i|0))}i=18608+(f*80|0)+(h*20|0)+4|0;b[x>>2]=b[i>>2];b[x+4>>2]=b[i+4>>2];b[x+8>>2]=b[i+8>>2];Ga(x,(b[o>>2]|0)*3|0);Ea(m,x,m);Ca(m);Da(m,y);I=+(b[p>>2]|0);e[z>>3]=I*3.0;e[q>>3]=0.0;J=I*-1.5;e[A>>3]=J;e[r>>3]=I*2.598076211353316;e[B>>3]=J;e[s>>3]=I*-2.598076211353316;switch(b[17008+((b[v>>2]|0)*80|0)+(b[F>>2]<<2)>>2]|0){case 1:{a=A;f=z;break}case 3:{a=B;f=A;break}case 2:{a=z;f=B;break}default:{a=12;break a}}Fc(w,y,f,a,C);_a(C,b[v>>2]|0,k,1,g+8+(b[g>>2]<<4)|0);b[g>>2]=(b[g>>2]|0)+1}if((j|0)<(n|0)){Da(t,v);_a(v,b[F>>2]|0,k,1,g+8+(b[g>>2]<<4)|0);b[g>>2]=(b[g>>2]|0)+1};b[E>>2]=b[F>>2];b[E+4>>2]=b[F+4>>2];b[E+8>>2]=b[F+8>>2];b[E+12>>2]=b[F+12>>2];j=j+1|0;if((j|0)>=(u|0)){a=3;break}}if((a|0)==3){S=G;return}else if((a|0)==12)H(22474,22521,581,22531)}function bb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=S;S=S+128|0;e=j+64|0;f=j;g=e;h=20208;i=g+60|0;do{b[g>>2]=b[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=f;h=20272;i=g+60|0;do{b[g>>2]=b[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));i=(Qb(b[c>>2]|0)|0)==0;e=i?e:f;f=a+4|0;Ra(f);Sa(f);if(Qb(b[c>>2]|0)|0){La(f);b[c>>2]=(b[c>>2]|0)+1}b[d>>2]=b[a>>2];c=d+4|0;Ea(f,e,c);Ca(c);b[d+16>>2]=b[a>>2];c=d+20|0;Ea(f,e+12|0,c);Ca(c);b[d+32>>2]=b[a>>2];c=d+36|0;Ea(f,e+24|0,c);Ca(c);b[d+48>>2]=b[a>>2];c=d+52|0;Ea(f,e+36|0,c);Ca(c);b[d+64>>2]=b[a>>2];d=d+68|0;Ea(f,e+48|0,d);Ca(d);S=j;return}function cb(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=S;S=S+32|0;n=p+12|0;i=p;o=a+4|0;m=b[16928+(c<<2)>>2]|0;l=(e|0)!=0;m=l?m*3|0:m;f=b[o>>2]|0;k=a+8|0;h=b[k>>2]|0;if(l){g=a+12|0;e=b[g>>2]|0;f=h+f+e|0;if((f|0)==(m|0)){o=1;S=p;return o|0}else j=g}else{j=a+12|0;e=b[j>>2]|0;f=h+f+e|0}if((f|0)<=(m|0)){o=0;S=p;return o|0}do if((e|0)>0){e=b[a>>2]|0;if((h|0)>0){g=18608+(e*80|0)+60|0;e=a;break}e=18608+(e*80|0)+40|0;if(!d){g=e;e=a}else{Aa(n,m,0,0);Fa(o,n,i);Oa(i);Ea(i,n,o);g=e;e=a}}else{g=18608+((b[a>>2]|0)*80|0)+20|0;e=a}while(0);b[e>>2]=b[g>>2];f=g+16|0;if((b[f>>2]|0)>0){e=0;do{Na(o);e=e+1|0}while((e|0)<(b[f>>2]|0))}a=g+4|0;b[n>>2]=b[a>>2];b[n+4>>2]=b[a+4>>2];b[n+8>>2]=b[a+8>>2];c=b[16848+(c<<2)>>2]|0;Ga(n,l?c*3|0:c);Ea(o,n,o);Ca(o);if(l)e=((b[k>>2]|0)+(b[o>>2]|0)+(b[j>>2]|0)|0)==(m|0)?1:2;else e=2;o=e;S=p;return o|0}function db(a,b){a=a|0;b=b|0;var c=0;do c=cb(a,b,0,1)|0;while((c|0)==2);return c|0}function eb(a,c,d,f,g){a=a|0;c=c|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0;B=S;S=S+240|0;h=B+224|0;x=B+208|0;y=B;z=B+192|0;A=B+176|0;s=B+160|0;t=B+144|0;u=B+128|0;v=B+112|0;w=B+96|0;b[h>>2]=c;b[x>>2]=b[a>>2];b[x+4>>2]=b[a+4>>2];b[x+8>>2]=b[a+8>>2];b[x+12>>2]=b[a+12>>2];fb(x,h,y);b[g>>2]=0;r=f+d+((f|0)==6&1)|0;if((r|0)<=(d|0)){S=B;return}k=b[h>>2]|0;l=d+6|0;m=16928+(k<<2)|0;n=t+8|0;o=u+8|0;p=v+8|0;q=z+4|0;i=0;j=d;f=-1;a:while(1){h=(j|0)%6|0;a=y+(h<<4)|0;b[z>>2]=b[a>>2];b[z+4>>2]=b[a+4>>2];b[z+8>>2]=b[a+8>>2];b[z+12>>2]=b[a+12>>2];a=i;i=cb(z,k,0,1)|0;if((j|0)>(d|0)&(Qb(c)|0)!=0?((a|0)!=1?(b[z>>2]|0)!=(f|0):0):0){Da(y+(((h+5|0)%6|0)<<4)+4|0,A);Da(y+(h<<4)+4|0,s);C=+(b[m>>2]|0);e[t>>3]=C*3.0;e[n>>3]=0.0;D=C*-1.5;e[u>>3]=D;e[o>>3]=C*2.598076211353316;e[v>>3]=D;e[p>>3]=C*-2.598076211353316;h=b[x>>2]|0;switch(b[17008+(h*80|0)+(((f|0)==(h|0)?b[z>>2]|0:f)<<2)>>2]|0){case 1:{a=u;f=t;break}case 3:{a=v;f=u;break}case 2:{a=t;f=v;break}default:{a=8;break a}}Fc(A,s,f,a,w);if(!(Gc(A,w)|0)?!(Gc(s,w)|0):0){_a(w,b[x>>2]|0,k,1,g+8+(b[g>>2]<<4)|0);b[g>>2]=(b[g>>2]|0)+1}}if((j|0)<(l|0)){Da(q,A);_a(A,b[z>>2]|0,k,1,g+8+(b[g>>2]<<4)|0);b[g>>2]=(b[g>>2]|0)+1}j=j+1|0;if((j|0)>=(r|0)){a=3;break}else f=b[z>>2]|0}if((a|0)==3){S=B;return}else if((a|0)==8)H(22557,22521,746,22602)}function fb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=S;S=S+160|0;e=j+80|0;f=j;g=e;h=20336;i=g+72|0;do{b[g>>2]=b[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=f;h=20416;i=g+72|0;do{b[g>>2]=b[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));i=(Qb(b[c>>2]|0)|0)==0;e=i?e:f;f=a+4|0;Ra(f);Sa(f);if(Qb(b[c>>2]|0)|0){La(f);b[c>>2]=(b[c>>2]|0)+1}b[d>>2]=b[a>>2];c=d+4|0;Ea(f,e,c);Ca(c);b[d+16>>2]=b[a>>2];c=d+20|0;Ea(f,e+12|0,c);Ca(c);b[d+32>>2]=b[a>>2];c=d+36|0;Ea(f,e+24|0,c);Ca(c);b[d+48>>2]=b[a>>2];c=d+52|0;Ea(f,e+36|0,c);Ca(c);b[d+64>>2]=b[a>>2];c=d+68|0;Ea(f,e+48|0,c);Ca(c);b[d+80>>2]=b[a>>2];d=d+84|0;Ea(f,e+60|0,d);Ca(d);S=j;return}function gb(a){a=+a;var b=0.0;b=a<0.0?a+6.283185307179586:a;return +(!(a>=6.283185307179586)?b:b+-6.283185307179586)}function hb(a,b){a=a|0;b=b|0;if(!(+q(+(+e[a>>3]-+e[b>>3]))<1.7453292519943298e-11)){b=0;return b|0}b=+q(+(+e[a+8>>3]-+e[b+8>>3]))<1.7453292519943298e-11;return b|0}function ib(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,f=0.0,g=0.0;f=+e[b>>3];d=+e[a>>3];g=+u(+((f-d)*.5));c=+u(+((+e[b+8>>3]-+e[a+8>>3])*.5));c=g*g+c*(+t(+f)*+t(+d)*c);return +(+z(+(+r(+c)),+(+r(+(1.0-c))))*2.0)}function jb(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,f=0.0,g=0.0;f=+e[b>>3];d=+e[a>>3];g=+u(+((f-d)*.5));c=+u(+((+e[b+8>>3]-+e[a+8>>3])*.5));c=g*g+c*(+t(+f)*+t(+d)*c);return +(+z(+(+r(+c)),+(+r(+(1.0-c))))*2.0*6371.007180918475)}function kb(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,f=0.0,g=0.0;f=+e[b>>3];d=+e[a>>3];g=+u(+((f-d)*.5));c=+u(+((+e[b+8>>3]-+e[a+8>>3])*.5));c=g*g+c*(+t(+f)*+t(+d)*c);return +(+z(+(+r(+c)),+(+r(+(1.0-c))))*2.0*6371.007180918475*1.0e3)}function lb(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,f=0.0,g=0.0,h=0.0;g=+e[b>>3];d=+t(+g);f=+e[b+8>>3]-+e[a+8>>3];h=d*+u(+f);c=+e[a>>3];return +(+z(+h,+(+u(+g)*+t(+c)-+t(+f)*(d*+u(+c)))))}function mb(a,c,d,f){a=a|0;c=+c;d=+d;f=f|0;var g=0,h=0.0,i=0.0,j=0.0;if(d<1.0e-16){b[f>>2]=b[a>>2];b[f+4>>2]=b[a+4>>2];b[f+8>>2]=b[a+8>>2];b[f+12>>2]=b[a+12>>2];return}h=c<0.0?c+6.283185307179586:c;h=!(c>=6.283185307179586)?h:h+-6.283185307179586;do if(h<1.0e-16){c=+e[a>>3]+d;e[f>>3]=c;g=f}else{g=+q(+(h+-3.141592653589793))<1.0e-16;c=+e[a>>3];if(g){c=c-d;e[f>>3]=c;g=f;break}i=+t(+d);d=+u(+d);c=i*+u(+c)+ +t(+h)*(d*+t(+c));c=c>1.0?1.0:c;c=+x(+(c<-1.0?-1.0:c));e[f>>3]=c;if(+q(+(c+-1.5707963267948966))<1.0e-16){e[f>>3]=1.5707963267948966;e[f+8>>3]=0.0;return}if(+q(+(c+1.5707963267948966))<1.0e-16){e[f>>3]=-1.5707963267948966;e[f+8>>3]=0.0;return}j=+t(+c);h=d*+u(+h)/j;d=+e[a>>3];c=(i-+u(+c)*+u(+d))/+t(+d)/j;i=h>1.0?1.0:h;c=c>1.0?1.0:c;c=+e[a+8>>3]+ +z(+(i<-1.0?-1.0:i),+(c<-1.0?-1.0:c));if(c>3.141592653589793)do c=c+-6.283185307179586;while(c>3.141592653589793);if(c<-3.141592653589793)do c=c+6.283185307179586;while(c<-3.141592653589793);e[f+8>>3]=c;return}while(0);if(+q(+(c+-1.5707963267948966))<1.0e-16){e[g>>3]=1.5707963267948966;e[f+8>>3]=0.0;return}if(+q(+(c+1.5707963267948966))<1.0e-16){e[g>>3]=-1.5707963267948966;e[f+8>>3]=0.0;return}c=+e[a+8>>3];if(c>3.141592653589793)do c=c+-6.283185307179586;while(c>3.141592653589793);if(c<-3.141592653589793)do c=c+6.283185307179586;while(c<-3.141592653589793);e[f+8>>3]=c;return}function nb(a){a=a|0;return +(+e[20496+(a<<3)>>3])}function ob(a){a=a|0;return +(+e[20624+(a<<3)>>3])}function pb(a){a=a|0;return +(+e[20752+(a<<3)>>3])}function qb(a){a=a|0;return +(+e[20880+(a<<3)>>3])}function rb(a){a=a|0;var c=0;c=21008+(a<<3)|0;a=b[c>>2]|0;F(b[c+4>>2]|0);return a|0}function sb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;n=+e[b>>3];l=+e[a>>3];j=+u(+((n-l)*.5));g=+e[b+8>>3];k=+e[a+8>>3];h=+u(+((g-k)*.5));i=+t(+l);m=+t(+n);h=j*j+h*(m*i*h);h=+z(+(+r(+h)),+(+r(+(1.0-h))))*2.0;j=+e[c>>3];n=+u(+((j-n)*.5));d=+e[c+8>>3];g=+u(+((d-g)*.5));f=+t(+j);g=n*n+g*(m*f*g);g=+z(+(+r(+g)),+(+r(+(1.0-g))))*2.0;j=+u(+((l-j)*.5));d=+u(+((k-d)*.5));d=j*j+d*(i*f*d);d=+z(+(+r(+d)),+(+r(+(1.0-d))))*2.0;f=(h+g+d)*.5;return +(+y(+(+r(+(+v(+(f*.5))*+v(+((f-h)*.5))*+v(+((f-g)*.5))*+v(+((f-d)*.5))))))*4.0)}function tb(a,c){a=a|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0;g=S;S=S+192|0;e=g+168|0;f=g;Ub(a,c,e);Vb(a,c,f);c=b[f>>2]|0;if((c|0)<=0){d=0.0;S=g;return +d}d=+sb(f+8|0,f+8+(((c|0)!=1&1)<<4)|0,e)+0.0;if((c|0)==1){S=g;return +d}a=1;do{h=a;a=a+1|0;d=d+ +sb(f+8+(h<<4)|0,f+8+(((a|0)%(c|0)|0)<<4)|0,e)}while((a|0)<(c|0));S=g;return +d}function ub(a,c){a=a|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0;g=S;S=S+192|0;e=g+168|0;f=g;Ub(a,c,e);Vb(a,c,f);c=b[f>>2]|0;if((c|0)>0){d=+sb(f+8|0,f+8+(((c|0)!=1&1)<<4)|0,e)+0.0;if((c|0)!=1){a=1;do{h=a;a=a+1|0;d=d+ +sb(f+8+(h<<4)|0,f+8+(((a|0)%(c|0)|0)<<4)|0,e)}while((a|0)<(c|0))}}else d=0.0;S=g;return +(d*6371.007180918475*6371.007180918475)}function vb(a,c){a=a|0;c=c|0;var d=0.0,e=0,f=0,g=0,h=0;g=S;S=S+192|0;e=g+168|0;f=g;Ub(a,c,e);Vb(a,c,f);c=b[f>>2]|0;if((c|0)>0){d=+sb(f+8|0,f+8+(((c|0)!=1&1)<<4)|0,e)+0.0;if((c|0)!=1){a=1;do{h=a;a=a+1|0;d=d+ +sb(f+8+(h<<4)|0,f+8+(((a|0)%(c|0)|0)<<4)|0,e)}while((a|0)<(c|0))}}else d=0.0;S=g;return +(d*6371.007180918475*6371.007180918475*1.0e3*1.0e3)}function wb(a,c){a=a|0;c=c|0;var d=0.0,f=0.0,g=0.0,h=0,i=0,j=0.0,k=0.0,l=0.0;i=S;S=S+176|0;h=i;fc(a,c,h);a=b[h>>2]|0;if((a|0)<=1){g=0.0;S=i;return +g}c=a+-1|0;a=0;d=0.0;f=+e[h+8>>3];g=+e[h+16>>3];do{a=a+1|0;k=f;f=+e[h+8+(a<<4)>>3];l=+u(+((f-k)*.5));j=g;g=+e[h+8+(a<<4)+8>>3];j=+u(+((g-j)*.5));j=l*l+j*(+t(+f)*+t(+k)*j);d=d+ +z(+(+r(+j)),+(+r(+(1.0-j))))*2.0}while((a|0)<(c|0));S=i;return +d}function xb(a,c){a=a|0;c=c|0;var d=0.0,f=0.0,g=0.0,h=0,i=0,j=0.0,k=0.0,l=0.0;i=S;S=S+176|0;h=i;fc(a,c,h);a=b[h>>2]|0;if((a|0)<=1){g=0.0;S=i;return +g}c=a+-1|0;a=0;d=0.0;f=+e[h+8>>3];g=+e[h+16>>3];do{a=a+1|0;k=f;f=+e[h+8+(a<<4)>>3];l=+u(+((f-k)*.5));j=g;g=+e[h+8+(a<<4)+8>>3];j=+u(+((g-j)*.5));j=l*l+j*(+t(+k)*+t(+f)*j);d=d+ +z(+(+r(+j)),+(+r(+(1.0-j))))*2.0}while((a|0)!=(c|0));l=d*6371.007180918475;S=i;return +l}function yb(a,c){a=a|0;c=c|0;var d=0.0,f=0.0,g=0.0,h=0,i=0,j=0.0,k=0.0,l=0.0;i=S;S=S+176|0;h=i;fc(a,c,h);a=b[h>>2]|0;if((a|0)<=1){g=0.0;S=i;return +g}c=a+-1|0;a=0;d=0.0;f=+e[h+8>>3];g=+e[h+16>>3];do{a=a+1|0;k=f;f=+e[h+8+(a<<4)>>3];l=+u(+((f-k)*.5));j=g;g=+e[h+8+(a<<4)+8>>3];j=+u(+((g-j)*.5));j=l*l+j*(+t(+k)*+t(+f)*j);d=d+ +z(+(+r(+j)),+(+r(+(1.0-j))))*2.0}while((a|0)!=(c|0));l=d*6371.007180918475*1.0e3;S=i;return +l}function zb(a,b){a=a|0;b=b|0;b=bd(a|0,b|0,45)|0;G()|0;return b&127|0}function Ab(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;if(!(0==0&(b&-16777216|0)==134217728)){b=0;return b|0}g=bd(a|0,b|0,45)|0;G()|0;g=g&127;if(g>>>0>121){b=0;return b|0}c=bd(a|0,b|0,52)|0;G()|0;c=c&15;do if(c|0){e=1;d=0;while(1){f=bd(a|0,b|0,(15-e|0)*3|0)|0;G()|0;f=f&7;if((f|0)!=0&(d^1))if((f|0)==1&(la(g)|0)!=0){h=0;d=13;break}else d=1;if((f|0)==7){h=0;d=13;break}if(e>>>0>>0)e=e+1|0;else{d=9;break}}if((d|0)==9){if((c|0)==15)h=1;else break;return h|0}else if((d|0)==13)return h|0}while(0);while(1){h=bd(a|0,b|0,(14-c|0)*3|0)|0;G()|0;if(!((h&7|0)==7&0==0)){h=0;d=13;break}if(c>>>0<14)c=c+1|0;else{h=1;d=13;break}}if((d|0)==13)return h|0;return 0}function Bb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=bd(a|0,b|0,52)|0;G()|0;d=d&15;if((d|0)>=(c|0)){if((d|0)!=(c|0))if(c>>>0<=15){e=cd(c|0,0,52)|0;a=e|a;b=G()|0|b&-15728641;if((d|0)>(c|0))do{e=cd(7,0,(14-c|0)*3|0)|0;c=c+1|0;a=e|a;b=G()|0|b}while((c|0)<(d|0))}else{b=0;a=0}}else{b=0;a=0}F(b|0);return a|0}function Cb(a,b,c){a=a|0;b=b|0;c=c|0;a=bd(a|0,b|0,52)|0;G()|0;a=a&15;if(!((c|0)<16&(a|0)<=(c|0))){c=0;return c|0}c=sc(7,c-a|0)|0;return c|0}function Db(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=bd(a|0,c|0,52)|0;G()|0;h=h&15;if(!((d|0)<16&(h|0)<=(d|0)))return;if((h|0)==(d|0)){d=e;b[d>>2]=a;b[d+4>>2]=c;return}j=sc(7,d-h|0)|0;k=(j|0)/7|0;i=bd(a|0,c|0,45)|0;G()|0;if(!(la(i&127)|0))g=0;else{a:do if(!h)f=0;else{g=1;while(1){f=bd(a|0,c|0,(15-g|0)*3|0)|0;G()|0;f=f&7;if(f|0)break a;if(g>>>0>>0)g=g+1|0;else{f=0;break}}}while(0);g=(f|0)==0}l=cd(h+1|0,0,52)|0;f=G()|0|c&-15728641;i=(14-h|0)*3|0;c=cd(7,0,i|0)|0;c=(l|a)&~c;h=f&~(G()|0);Db(c,h,d,e);f=e+(k<<3)|0;if(!g){l=cd(1,0,i|0)|0;Db(l|c,G()|0|h,d,f);l=f+(k<<3)|0;j=cd(2,0,i|0)|0;Db(j|c,G()|0|h,d,l);l=l+(k<<3)|0;j=cd(3,0,i|0)|0;Db(j|c,G()|0|h,d,l);l=l+(k<<3)|0;j=cd(4,0,i|0)|0;Db(j|c,G()|0|h,d,l);l=l+(k<<3)|0;j=cd(5,0,i|0)|0;Db(j|c,G()|0|h,d,l);j=cd(6,0,i|0)|0;Db(j|c,G()|0|h,d,l+(k<<3)|0);return}g=f+(k<<3)|0;if((j|0)>6){j=f+8|0;l=(g>>>0>j>>>0?g:j)+-1+(0-f)|0;gd(f|0,0,l+8&-8|0)|0;f=j+(l>>>3<<3)|0}l=cd(2,0,i|0)|0;Db(l|c,G()|0|h,d,f);l=f+(k<<3)|0;j=cd(3,0,i|0)|0;Db(j|c,G()|0|h,d,l);l=l+(k<<3)|0;j=cd(4,0,i|0)|0;Db(j|c,G()|0|h,d,l);l=l+(k<<3)|0;j=cd(5,0,i|0)|0;Db(j|c,G()|0|h,d,l);j=cd(6,0,i|0)|0;Db(j|c,G()|0|h,d,l+(k<<3)|0);return}function Eb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=bd(a|0,b|0,45)|0;G()|0;if(!(la(e&127)|0)){e=0;return e|0}e=bd(a|0,b|0,52)|0;G()|0;e=e&15;a:do if(!e)c=0;else{d=1;while(1){c=bd(a|0,b|0,(15-d|0)*3|0)|0;G()|0;c=c&7;if(c|0)break a;if(d>>>0>>0)d=d+1|0;else{c=0;break}}}while(0);e=(c|0)==0&1;return e|0}function Fb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=bd(a|0,b|0,52)|0;G()|0;d=d&15;if((c|0)<16&(d|0)<=(c|0)){if((d|0)!=(c|0)){e=cd(c|0,0,52)|0;a=e|a;b=G()|0|b&-15728641;if((d|0)<(c|0))do{e=cd(7,0,(14-d|0)*3|0)|0;d=d+1|0;a=a&~e;b=b&~(G()|0)}while((d|0)<(c|0))}}else{b=0;a=0}F(b|0);return a|0}function Gb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;if(!d){y=0;return y|0}f=a;e=b[f>>2]|0;f=b[f+4>>2]|0;if(0==0&(f&15728640|0)==0){if((d|0)<=0){y=0;return y|0}y=c;b[y>>2]=e;b[y+4>>2]=f;if((d|0)==1){y=0;return y|0}e=1;do{w=a+(e<<3)|0;x=b[w+4>>2]|0;y=c+(e<<3)|0;b[y>>2]=b[w>>2];b[y+4>>2]=x;e=e+1|0}while((e|0)!=(d|0));e=0;return e|0}w=d<<3;x=Vc(w)|0;if(!x){y=-3;return y|0}fd(x|0,a|0,w|0)|0;v=Xc(d,8)|0;if(!v){Wc(x);y=-3;return y|0}e=d;a:while(1){h=x;l=b[h>>2]|0;h=b[h+4>>2]|0;t=bd(l|0,h|0,52)|0;G()|0;t=t&15;u=t+-1|0;s=(e|0)>0;b:do if(s){r=((e|0)<0)<<31>>31;p=cd(u|0,0,52)|0;q=G()|0;if(u>>>0>15){f=0;a=l;d=h;while(1){if(!((a|0)==0&(d|0)==0)){g=bd(a|0,d|0,52)|0;G()|0;g=g&15;i=(g|0)<(u|0);g=(g|0)==(u|0);k=i?0:g?a:0;a=i?0:g?d:0;d=ad(k|0,a|0,e|0,r|0)|0;G()|0;g=v+(d<<3)|0;i=g;j=b[i>>2]|0;i=b[i+4>>2]|0;if((j|0)==0&(i|0)==0)d=k;else{p=0;o=d;n=i;d=k;while(1){if((p|0)>(e|0)){y=41;break a}if((j|0)==(d|0)&(n&-117440513|0)==(a|0)){k=bd(j|0,n|0,56)|0;G()|0;k=k&7;m=k+1|0;q=bd(j|0,n|0,45)|0;G()|0;c:do if(!(la(q&127)|0))i=7;else{j=bd(j|0,n|0,52)|0;G()|0;j=j&15;if(!j){i=6;break}i=1;while(1){q=cd(7,0,(15-i|0)*3|0)|0;if(!((q&d|0)==0&((G()|0)&a|0)==0)){i=7;break c}if(i>>>0>>0)i=i+1|0;else{i=6;break}}}while(0);if((k+2|0)>>>0>i>>>0){y=51;break a}q=cd(m|0,0,56)|0;a=G()|0|a&-117440513;i=g;b[i>>2]=0;b[i+4>>2]=0;i=o;d=q|d}else i=(o+1|0)%(e|0)|0;g=v+(i<<3)|0;n=g;j=b[n>>2]|0;n=b[n+4>>2]|0;if((j|0)==0&(n|0)==0)break;else{p=p+1|0;o=i}}}q=g;b[q>>2]=d;b[q+4>>2]=a}f=f+1|0;if((f|0)>=(e|0))break b;d=x+(f<<3)|0;a=b[d>>2]|0;d=b[d+4>>2]|0}}f=0;a=l;d=h;while(1){if(!((a|0)==0&(d|0)==0)){i=bd(a|0,d|0,52)|0;G()|0;i=i&15;if((i|0)>=(u|0)){if((i|0)!=(u|0)){a=a|p;d=d&-15728641|q;if(i>>>0>=t>>>0){g=u;do{o=cd(7,0,(14-g|0)*3|0)|0;g=g+1|0;a=o|a;d=G()|0|d}while(g>>>0>>0)}}}else{a=0;d=0}i=ad(a|0,d|0,e|0,r|0)|0;G()|0;g=v+(i<<3)|0;j=g;k=b[j>>2]|0;j=b[j+4>>2]|0;if(!((k|0)==0&(j|0)==0)){o=0;while(1){if((o|0)>(e|0)){y=41;break a}if((k|0)==(a|0)&(j&-117440513|0)==(d|0)){m=bd(k|0,j|0,56)|0;G()|0;m=m&7;n=m+1|0;z=bd(k|0,j|0,45)|0;G()|0;d:do if(!(la(z&127)|0))j=7;else{k=bd(k|0,j|0,52)|0;G()|0;k=k&15;if(!k){j=6;break}j=1;while(1){z=cd(7,0,(15-j|0)*3|0)|0;if(!((z&a|0)==0&((G()|0)&d|0)==0)){j=7;break d}if(j>>>0>>0)j=j+1|0;else{j=6;break}}}while(0);if((m+2|0)>>>0>j>>>0){y=51;break a}z=cd(n|0,0,56)|0;d=G()|0|d&-117440513;n=g;b[n>>2]=0;b[n+4>>2]=0;a=z|a}else i=(i+1|0)%(e|0)|0;g=v+(i<<3)|0;j=g;k=b[j>>2]|0;j=b[j+4>>2]|0;if((k|0)==0&(j|0)==0)break;else o=o+1|0}}z=g;b[z>>2]=a;b[z+4>>2]=d}f=f+1|0;if((f|0)>=(e|0))break b;d=x+(f<<3)|0;a=b[d>>2]|0;d=b[d+4>>2]|0}}while(0);if((e+5|0)>>>0<11){y=99;break}q=Xc((e|0)/6|0,8)|0;if(!q){y=58;break}e:do if(s){o=0;n=0;do{i=v+(o<<3)|0;a=i;f=b[a>>2]|0;a=b[a+4>>2]|0;if(!((f|0)==0&(a|0)==0)){j=bd(f|0,a|0,56)|0;G()|0;j=j&7;d=j+1|0;k=a&-117440513;z=bd(f|0,a|0,45)|0;G()|0;f:do if(la(z&127)|0){m=bd(f|0,a|0,52)|0;G()|0;m=m&15;if(m|0){g=1;while(1){z=cd(7,0,(15-g|0)*3|0)|0;if(!((f&z|0)==0&(k&(G()|0)|0)==0))break f;if(g>>>0>>0)g=g+1|0;else break}}a=cd(d|0,0,56)|0;f=a|f;a=G()|0|k;d=i;b[d>>2]=f;b[d+4>>2]=a;d=j+2|0}while(0);if((d|0)==7){z=q+(n<<3)|0;b[z>>2]=f;b[z+4>>2]=a&-117440513;n=n+1|0}}o=o+1|0}while((o|0)!=(e|0));if(s){p=((e|0)<0)<<31>>31;m=cd(u|0,0,52)|0;o=G()|0;if(u>>>0>15){a=0;f=0;while(1){do if(!((l|0)==0&(h|0)==0)){j=bd(l|0,h|0,52)|0;G()|0;j=j&15;g=(j|0)<(u|0);j=(j|0)==(u|0);i=g?0:j?l:0;j=g?0:j?h:0;g=ad(i|0,j|0,e|0,p|0)|0;G()|0;d=0;while(1){if((d|0)>(e|0)){y=98;break a}z=v+(g<<3)|0;k=b[z+4>>2]|0;if((k&-117440513|0)==(j|0)?(b[z>>2]|0)==(i|0):0){y=70;break}g=(g+1|0)%(e|0)|0;z=v+(g<<3)|0;if((b[z>>2]|0)==(i|0)?(b[z+4>>2]|0)==(j|0):0)break;else d=d+1|0}if((y|0)==70?(y=0,0==0&(k&117440512|0)==100663296):0)break;z=c+(f<<3)|0;b[z>>2]=l;b[z+4>>2]=h;f=f+1|0}while(0);a=a+1|0;if((a|0)>=(e|0)){e=n;break e}h=x+(a<<3)|0;l=b[h>>2]|0;h=b[h+4>>2]|0}}a=0;f=0;while(1){do if(!((l|0)==0&(h|0)==0)){j=bd(l|0,h|0,52)|0;G()|0;j=j&15;if((j|0)>=(u|0))if((j|0)!=(u|0)){d=l|m;g=h&-15728641|o;if(j>>>0>>0)j=g;else{i=u;do{z=cd(7,0,(14-i|0)*3|0)|0;i=i+1|0;d=z|d;g=G()|0|g}while(i>>>0>>0);j=g}}else{d=l;j=h}else{d=0;j=0}i=ad(d|0,j|0,e|0,p|0)|0;G()|0;g=0;while(1){if((g|0)>(e|0)){y=98;break a}z=v+(i<<3)|0;k=b[z+4>>2]|0;if((k&-117440513|0)==(j|0)?(b[z>>2]|0)==(d|0):0){y=93;break}i=(i+1|0)%(e|0)|0;z=v+(i<<3)|0;if((b[z>>2]|0)==(d|0)?(b[z+4>>2]|0)==(j|0):0)break;else g=g+1|0}if((y|0)==93?(y=0,0==0&(k&117440512|0)==100663296):0)break;z=c+(f<<3)|0;b[z>>2]=l;b[z+4>>2]=h;f=f+1|0}while(0);a=a+1|0;if((a|0)>=(e|0)){e=n;break e}h=x+(a<<3)|0;l=b[h>>2]|0;h=b[h+4>>2]|0}}else{f=0;e=n}}else{f=0;e=0}while(0);gd(v|0,0,w|0)|0;fd(x|0,q|0,e<<3|0)|0;Wc(q);if(!e)break;else c=c+(f<<3)|0}if((y|0)==41){Wc(x);Wc(v);z=-1;return z|0}else if((y|0)==51){Wc(x);Wc(v);z=-2;return z|0}else if((y|0)==58){Wc(x);Wc(v);z=-3;return z|0}else if((y|0)==98){Wc(q);Wc(x);Wc(v);z=-1;return z|0}else if((y|0)==99)fd(c|0,x|0,e<<3|0)|0;Wc(x);Wc(v);z=0;return z|0}function Hb(a,c,d,e,f){a=a|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;if((c|0)<=0){f=0;return f|0}if((f|0)>=16){g=0;while(1){l=a+(g<<3)|0;if(!((b[l>>2]|0)==0&(b[l+4>>2]|0)==0)){g=14;break}g=g+1|0;if((g|0)>=(c|0)){h=0;g=16;break}}if((g|0)==14)return ((e|0)>0?-2:-1)|0;else if((g|0)==16)return h|0}g=0;l=0;a:while(1){k=a+(l<<3)|0;i=k;h=b[i>>2]|0;i=b[i+4>>2]|0;do if(!((h|0)==0&(i|0)==0)){if((g|0)>=(e|0)){h=-1;g=16;break a}j=bd(h|0,i|0,52)|0;G()|0;j=j&15;if((j|0)>(f|0)){h=-2;g=16;break a}if((j|0)==(f|0)){k=d+(g<<3)|0;b[k>>2]=h;b[k+4>>2]=i;g=g+1|0;break}h=(sc(7,f-j|0)|0)+g|0;if((h|0)>(e|0)){h=-1;g=16;break a}Db(b[k>>2]|0,b[k+4>>2]|0,f,d+(g<<3)|0);g=h}while(0);l=l+1|0;if((l|0)>=(c|0)){h=0;g=16;break}}if((g|0)==16)return h|0;return 0}function Ib(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;if((c|0)<=0){d=0;return d|0}if((d|0)>=16){e=0;while(1){h=a+(e<<3)|0;if(!((b[h>>2]|0)==0&(b[h+4>>2]|0)==0)){e=-1;f=13;break}e=e+1|0;if((e|0)>=(c|0)){e=0;f=13;break}}if((f|0)==13)return e|0}e=0;h=0;a:while(1){f=a+(h<<3)|0;g=b[f>>2]|0;f=b[f+4>>2]|0;do if(!((g|0)==0&(f|0)==0)){f=bd(g|0,f|0,52)|0;G()|0;f=f&15;if((f|0)>(d|0)){e=-1;f=13;break a}if((f|0)==(d|0)){e=e+1|0;break}else{e=(sc(7,d-f|0)|0)+e|0;break}}while(0);h=h+1|0;if((h|0)>=(c|0)){f=13;break}}if((f|0)==13)return e|0;return 0}function Jb(a,b){a=a|0;b=b|0;b=bd(a|0,b|0,52)|0;G()|0;return b&1|0}function Kb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=bd(a|0,b|0,52)|0;G()|0;e=e&15;if(!e){e=0;return e|0}d=1;while(1){c=bd(a|0,b|0,(15-d|0)*3|0)|0;G()|0;c=c&7;if(c|0){d=5;break}if(d>>>0>>0)d=d+1|0;else{c=0;d=5;break}}if((d|0)==5)return c|0;return 0}function Lb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=bd(a|0,b|0,52)|0;G()|0;i=i&15;if(!i){h=b;i=a;F(h|0);return i|0}h=1;c=0;while(1){f=(15-h|0)*3|0;d=cd(7,0,f|0)|0;e=G()|0;g=bd(a|0,b|0,f|0)|0;G()|0;f=cd(Pa(g&7)|0,0,f|0)|0;g=G()|0;a=f|a&~d;b=g|b&~e;a:do if(!c)if(!((f&d|0)==0&(g&e|0)==0)){d=bd(a|0,b|0,52)|0;G()|0;d=d&15;if(!d)c=1;else{c=1;b:while(1){g=bd(a|0,b|0,(15-c|0)*3|0)|0;G()|0;switch(g&7){case 1:break b;case 0:break;default:{c=1;break a}}if(c>>>0>>0)c=c+1|0;else{c=1;break a}}c=1;while(1){g=(15-c|0)*3|0;e=bd(a|0,b|0,g|0)|0;G()|0;f=cd(7,0,g|0)|0;b=b&~(G()|0);g=cd(Pa(e&7)|0,0,g|0)|0;a=a&~f|g;b=b|(G()|0);if(c>>>0>>0)c=c+1|0;else{c=1;break}}}}else c=0;while(0);if(h>>>0>>0)h=h+1|0;else break}F(b|0);return a|0}function Mb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;d=bd(a|0,b|0,52)|0;G()|0;d=d&15;if(!d){c=b;d=a;F(c|0);return d|0}c=1;while(1){f=(15-c|0)*3|0;g=bd(a|0,b|0,f|0)|0;G()|0;e=cd(7,0,f|0)|0;b=b&~(G()|0);f=cd(Pa(g&7)|0,0,f|0)|0;a=f|a&~e;b=G()|0|b;if(c>>>0>>0)c=c+1|0;else break}F(b|0);return a|0}function Nb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=bd(a|0,b|0,52)|0;G()|0;i=i&15;if(!i){h=b;i=a;F(h|0);return i|0}h=1;c=0;while(1){f=(15-h|0)*3|0;d=cd(7,0,f|0)|0;e=G()|0;g=bd(a|0,b|0,f|0)|0;G()|0;f=cd(Qa(g&7)|0,0,f|0)|0;g=G()|0;a=f|a&~d;b=g|b&~e;a:do if(!c)if(!((f&d|0)==0&(g&e|0)==0)){d=bd(a|0,b|0,52)|0;G()|0;d=d&15;if(!d)c=1;else{c=1;b:while(1){g=bd(a|0,b|0,(15-c|0)*3|0)|0;G()|0;switch(g&7){case 1:break b;case 0:break;default:{c=1;break a}}if(c>>>0>>0)c=c+1|0;else{c=1;break a}}c=1;while(1){e=(15-c|0)*3|0;f=cd(7,0,e|0)|0;g=b&~(G()|0);b=bd(a|0,b|0,e|0)|0;G()|0;b=cd(Qa(b&7)|0,0,e|0)|0;a=a&~f|b;b=g|(G()|0);if(c>>>0>>0)c=c+1|0;else{c=1;break}}}}else c=0;while(0);if(h>>>0>>0)h=h+1|0;else break}F(b|0);return a|0}function Ob(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;d=bd(a|0,b|0,52)|0;G()|0;d=d&15;if(!d){c=b;d=a;F(c|0);return d|0}c=1;while(1){g=(15-c|0)*3|0;f=cd(7,0,g|0)|0;e=b&~(G()|0);b=bd(a|0,b|0,g|0)|0;G()|0;b=cd(Qa(b&7)|0,0,g|0)|0;a=b|a&~f;b=G()|0|e;if(c>>>0>>0)c=c+1|0;else break}F(b|0);return a|0}function Pb(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=S;S=S+64|0;i=j+40|0;e=j+24|0;f=j+12|0;g=j;cd(c|0,0,52)|0;d=G()|0|134225919;if(!c){if((b[a+4>>2]|0)>2){h=0;i=0;F(h|0);S=j;return i|0}if((b[a+8>>2]|0)>2){h=0;i=0;F(h|0);S=j;return i|0}if((b[a+12>>2]|0)>2){h=0;i=0;F(h|0);S=j;return i|0}cd(na(a)|0,0,45)|0;h=G()|0|d;i=-1;F(h|0);S=j;return i|0};b[i>>2]=b[a>>2];b[i+4>>2]=b[a+4>>2];b[i+8>>2]=b[a+8>>2];b[i+12>>2]=b[a+12>>2];h=i+4|0;if((c|0)>0){a=-1;while(1){b[e>>2]=b[h>>2];b[e+4>>2]=b[h+4>>2];b[e+8>>2]=b[h+8>>2];if(!(c&1)){Ja(h);b[f>>2]=b[h>>2];b[f+4>>2]=b[h+4>>2];b[f+8>>2]=b[h+8>>2];La(f)}else{Ia(h);b[f>>2]=b[h>>2];b[f+4>>2]=b[h+4>>2];b[f+8>>2]=b[h+8>>2];Ka(f)}Fa(e,f,g);Ca(g);l=(15-c|0)*3|0;k=cd(7,0,l|0)|0;d=d&~(G()|0);l=cd(Ha(g)|0,0,l|0)|0;a=l|a&~k;d=G()|0|d;if((c|0)>1)c=c+-1|0;else break}}else a=-1;a:do if(((b[h>>2]|0)<=2?(b[i+8>>2]|0)<=2:0)?(b[i+12>>2]|0)<=2:0){e=na(i)|0;c=cd(e|0,0,45)|0;c=c|a;a=G()|0|d&-1040385;g=oa(i)|0;if(!(la(e)|0)){if((g|0)<=0)break;f=0;while(1){e=bd(c|0,a|0,52)|0;G()|0;e=e&15;if(e){d=1;while(1){l=(15-d|0)*3|0;i=bd(c|0,a|0,l|0)|0;G()|0;k=cd(7,0,l|0)|0;a=a&~(G()|0);l=cd(Pa(i&7)|0,0,l|0)|0;c=c&~k|l;a=a|(G()|0);if(d>>>0>>0)d=d+1|0;else break}}f=f+1|0;if((f|0)==(g|0))break a}}f=bd(c|0,a|0,52)|0;G()|0;f=f&15;b:do if(f){d=1;c:while(1){l=bd(c|0,a|0,(15-d|0)*3|0)|0;G()|0;switch(l&7){case 1:break c;case 0:break;default:break b}if(d>>>0>>0)d=d+1|0;else break b}if(ra(e,b[i>>2]|0)|0){d=1;while(1){i=(15-d|0)*3|0;k=cd(7,0,i|0)|0;l=a&~(G()|0);a=bd(c|0,a|0,i|0)|0;G()|0;a=cd(Qa(a&7)|0,0,i|0)|0;c=c&~k|a;a=l|(G()|0);if(d>>>0>>0)d=d+1|0;else break}}else{d=1;while(1){l=(15-d|0)*3|0;i=bd(c|0,a|0,l|0)|0;G()|0;k=cd(7,0,l|0)|0;a=a&~(G()|0);l=cd(Pa(i&7)|0,0,l|0)|0;c=c&~k|l;a=a|(G()|0);if(d>>>0>>0)d=d+1|0;else break}}}while(0);if((g|0)>0){d=0;do{c=Lb(c,a)|0;a=G()|0;d=d+1|0}while((d|0)!=(g|0))}}else{c=0;a=0}while(0);k=a;l=c;F(k|0);S=j;return l|0}function Qb(a){a=a|0;return (a|0)%2|0|0}function Rb(a,c){a=a|0;c=c|0;var d=0,e=0;e=S;S=S+16|0;d=e;if((c>>>0<=15?!(0==0?(b[a+4>>2]&2146435072|0)==2146435072:0):0)?!(0==0?(b[a+8+4>>2]&2146435072|0)==2146435072:0):0){Ya(a,c,d);c=Pb(d,c)|0;a=G()|0}else{a=0;c=0}F(a|0);S=e;return c|0}function Sb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;f=d+4|0;g=bd(a|0,c|0,52)|0;G()|0;g=g&15;h=bd(a|0,c|0,45)|0;G()|0;e=(g|0)==0;if(!(la(h&127)|0)){if(e){h=0;return h|0}if((b[f>>2]|0)==0?(b[d+8>>2]|0)==0:0)e=(b[d+12>>2]|0)!=0&1;else e=1}else if(e){h=1;return h|0}else e=1;d=1;while(1){if(!(d&1))La(f);else Ka(f);h=bd(a|0,c|0,(15-d|0)*3|0)|0;G()|0;Ma(f,h&7);if(d>>>0>>0)d=d+1|0;else break}return e|0}function Tb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=S;S=S+16|0;j=l;k=bd(a|0,c|0,45)|0;G()|0;k=k&127;a:do if((la(k)|0)!=0?(g=bd(a|0,c|0,52)|0,G()|0,g=g&15,(g|0)!=0):0){e=1;b:while(1){i=bd(a|0,c|0,(15-e|0)*3|0)|0;G()|0;switch(i&7){case 5:break b;case 0:break;default:{e=c;break a}}if(e>>>0>>0)e=e+1|0;else{e=c;break a}}f=1;e=c;while(1){c=(15-f|0)*3|0;h=cd(7,0,c|0)|0;i=e&~(G()|0);e=bd(a|0,e|0,c|0)|0;G()|0;e=cd(Qa(e&7)|0,0,c|0)|0;a=a&~h|e;e=i|(G()|0);if(f>>>0>>0)f=f+1|0;else break}}else e=c;while(0);i=7728+(k*28|0)|0;b[d>>2]=b[i>>2];b[d+4>>2]=b[i+4>>2];b[d+8>>2]=b[i+8>>2];b[d+12>>2]=b[i+12>>2];if(!(Sb(a,e,d)|0)){S=l;return}h=d+4|0;b[j>>2]=b[h>>2];b[j+4>>2]=b[h+4>>2];b[j+8>>2]=b[h+8>>2];g=bd(a|0,e|0,52)|0;G()|0;i=g&15;if(!(g&1))g=i;else{La(h);g=i+1|0}if(!(la(k)|0))e=0;else{c:do if(!i)e=0;else{c=1;while(1){f=bd(a|0,e|0,(15-c|0)*3|0)|0;G()|0;f=f&7;if(f|0){e=f;break c}if(c>>>0>>0)c=c+1|0;else{e=0;break}}}while(0);e=(e|0)==4&1}if(!(cb(d,g,e,0)|0)){if((g|0)!=(i|0)){b[h>>2]=b[j>>2];b[h+4>>2]=b[j+4>>2];b[h+8>>2]=b[j+8>>2]}}else{if(la(k)|0)do{}while((cb(d,g,0,0)|0)!=0);if((g|0)!=(i|0))Ja(h)}S=l;return}function Ub(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=S;S=S+16|0;e=d;Tb(a,b,e);b=bd(a|0,b|0,52)|0;G()|0;$a(e,b&15,c);S=d;return}function Vb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;g=S;S=S+16|0;f=g;Tb(a,b,f);d=bd(a|0,b|0,45)|0;G()|0;d=(la(d&127)|0)==0;e=bd(a|0,b|0,52)|0;G()|0;e=e&15;a:do if(!d){if(e|0){d=1;while(1){h=cd(7,0,(15-d|0)*3|0)|0;if(!((h&a|0)==0&((G()|0)&b|0)==0))break a;if(d>>>0>>0)d=d+1|0;else break}}ab(f,e,0,5,c);S=g;return}while(0);eb(f,e,0,6,c);S=g;return}function Wb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;d=bd(a|0,b|0,45)|0;G()|0;if(!(la(d&127)|0)){d=2;return d|0}d=bd(a|0,b|0,52)|0;G()|0;d=d&15;if(!d){d=5;return d|0}c=1;while(1){e=cd(7,0,(15-c|0)*3|0)|0;if(!((e&a|0)==0&((G()|0)&b|0)==0)){c=2;a=6;break}if(c>>>0>>0)c=c+1|0;else{c=5;a=6;break}}if((a|0)==6)return c|0;return 0}function Xb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=S;S=S+128|0;k=m+112|0;g=m+96|0;l=m;f=bd(a|0,c|0,52)|0;G()|0;i=f&15;b[k>>2]=i;h=bd(a|0,c|0,45)|0;G()|0;h=h&127;a:do if(la(h)|0){if(i|0){e=1;while(1){j=cd(7,0,(15-e|0)*3|0)|0;if(!((j&a|0)==0&((G()|0)&c|0)==0)){f=0;break a}if(e>>>0>>0)e=e+1|0;else break}}if(!(f&1)){j=cd(i+1|0,0,52)|0;l=G()|0|c&-15728641;k=cd(7,0,(14-i|0)*3|0)|0;Xb((j|a)&~k,l&~(G()|0),d);S=m;return}else f=1}else f=0;while(0);Tb(a,c,g);if(f){bb(g,k,l);j=5}else{fb(g,k,l);j=6}b:do if(la(h)|0)if(!i)e=20;else{e=1;while(1){h=cd(7,0,(15-e|0)*3|0)|0;if(!((h&a|0)==0&((G()|0)&c|0)==0)){e=8;break b}if(e>>>0>>0)e=e+1|0;else{e=20;break}}}else e=8;while(0);gd(d|0,-1,e|0)|0;if(f){f=0;do{g=l+(f<<4)|0;db(g,b[k>>2]|0)|0;g=b[g>>2]|0;e=0;while(1){h=d+(e<<2)|0;i=b[h>>2]|0;if((i|0)==-1|(i|0)==(g|0))break;else e=e+1|0}b[h>>2]=g;f=f+1|0}while((f|0)!=(j|0))}else{f=0;do{g=l+(f<<4)|0;cb(g,b[k>>2]|0,0,1)|0;g=b[g>>2]|0;e=0;while(1){h=d+(e<<2)|0;i=b[h>>2]|0;if((i|0)==-1|(i|0)==(g|0))break;else e=e+1|0}b[h>>2]=g;f=f+1|0}while((f|0)!=(j|0))}S=m;return}function Yb(){return 12}function Zb(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;cd(a|0,0,52)|0;i=G()|0|134225919;if((a|0)<1){e=0;d=0;do{if(la(e)|0){cd(e|0,0,45)|0;h=i|(G()|0);a=c+(d<<3)|0;b[a>>2]=-1;b[a+4>>2]=h;d=d+1|0}e=e+1|0}while((e|0)!=122);return}h=0;d=0;do{if(la(h)|0){cd(h|0,0,45)|0;e=1;f=-1;g=i|(G()|0);while(1){j=cd(7,0,(15-e|0)*3|0)|0;f=f&~j;g=g&~(G()|0);if((e|0)==(a|0))break;else e=e+1|0}j=c+(d<<3)|0;b[j>>2]=f;b[j+4>>2]=g;d=d+1|0}h=h+1|0}while((h|0)!=122);return}function _b(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;i=S;S=S+64|0;h=i;if((a|0)==(d|0)&(c|0)==(e|0)|(0!=0|(c&2013265920|0)!=134217728|(0!=0|(e&2013265920|0)!=134217728))){h=0;S=i;return h|0}f=bd(a|0,c|0,52)|0;G()|0;f=f&15;g=bd(d|0,e|0,52)|0;G()|0;if((f|0)!=(g&15|0)){h=0;S=i;return h|0}g=f+-1|0;if(f>>>0>1?(k=Bb(a,c,g)|0,j=G()|0,g=Bb(d,e,g)|0,(k|0)==(g|0)&(j|0)==(G()|0)):0){g=(f^15)*3|0;f=bd(a|0,c|0,g|0)|0;G()|0;f=f&7;g=bd(d|0,e|0,g|0)|0;G()|0;g=g&7;if((f|0)==0|(g|0)==0){k=1;S=i;return k|0}if((b[21136+(f<<2)>>2]|0)==(g|0)){k=1;S=i;return k|0}if((b[21168+(f<<2)>>2]|0)==(g|0)){k=1;S=i;return k|0}}f=h;g=f+56|0;do{b[f>>2]=0;f=f+4|0}while((f|0)<(g|0));$(a,c,1,h);k=h;if(((((!((b[k>>2]|0)==(d|0)?(b[k+4>>2]|0)==(e|0):0)?(k=h+8|0,!((b[k>>2]|0)==(d|0)?(b[k+4>>2]|0)==(e|0):0)):0)?(k=h+16|0,!((b[k>>2]|0)==(d|0)?(b[k+4>>2]|0)==(e|0):0)):0)?(k=h+24|0,!((b[k>>2]|0)==(d|0)?(b[k+4>>2]|0)==(e|0):0)):0)?(k=h+32|0,!((b[k>>2]|0)==(d|0)?(b[k+4>>2]|0)==(e|0):0)):0)?(k=h+40|0,!((b[k>>2]|0)==(d|0)?(b[k+4>>2]|0)==(e|0):0)):0){f=h+48|0;f=((b[f>>2]|0)==(d|0)?(b[f+4>>2]|0)==(e|0):0)&1}else f=1;k=f;S=i;return k|0}function $b(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=S;S=S+16|0;h=k;if(!(_b(a,c,d,e)|0)){i=0;j=0;F(i|0);S=k;return j|0}i=c&-2130706433;f=(Eb(a,c)|0)==0;f=f?1:2;while(1){b[h>>2]=0;l=da(a,c,f,h)|0;g=f+1|0;if((l|0)==(d|0)&(G()|0)==(e|0))break;if(g>>>0<7)f=g;else{f=0;a=0;j=6;break}}if((j|0)==6){F(f|0);S=k;return a|0}l=cd(f|0,0,56)|0;j=i|(G()|0)|268435456;l=a|l;F(j|0);S=k;return l|0}function ac(a,b){a=a|0;b=b|0;var c=0;c=0==0&(b&2013265920|0)==268435456;F((c?b&-2130706433|134217728:0)|0);return (c?a:0)|0}function bc(a,c){a=a|0;c=c|0;var d=0,e=0,f=0;e=S;S=S+16|0;d=e;if(!(0==0&(c&2013265920|0)==268435456)){c=0;d=0;F(c|0);S=e;return d|0}f=bd(a|0,c|0,56)|0;G()|0;b[d>>2]=0;d=da(a,c&-2130706433|134217728,f&7,d)|0;c=G()|0;F(c|0);S=e;return d|0}function cc(a,b){a=a|0;b=b|0;var c=0;if(!(0==0&(b&2013265920|0)==268435456)){c=0;return c|0}c=bd(a|0,b|0,56)|0;G()|0;switch(c&7){case 0:case 7:{c=0;return c|0}default:{}}c=b&-2130706433|134217728;if(0==0&(b&117440512|0)==16777216&(Eb(a,c)|0)!=0){c=0;return c|0}c=Ab(a,c)|0;return c|0}function dc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=S;S=S+16|0;e=g;h=0==0&(c&2013265920|0)==268435456;f=c&-2130706433|134217728;i=d;b[i>>2]=h?a:0;b[i+4>>2]=h?f:0;if(h){c=bd(a|0,c|0,56)|0;G()|0;b[e>>2]=0;a=da(a,f,c&7,e)|0;c=G()|0}else{a=0;c=0}i=d+8|0;b[i>>2]=a;b[i+4>>2]=c;S=g;return}function ec(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0;f=(Eb(a,c)|0)==0;c=c&-2130706433;e=d;b[e>>2]=f?a:0;b[e+4>>2]=f?c|285212672:0;e=d+8|0;b[e>>2]=a;b[e+4>>2]=c|301989888;e=d+16|0;b[e>>2]=a;b[e+4>>2]=c|318767104;e=d+24|0;b[e>>2]=a;b[e+4>>2]=c|335544320;e=d+32|0;b[e>>2]=a;b[e+4>>2]=c|352321536;d=d+40|0;b[d>>2]=a;b[d+4>>2]=c|369098752;return}function fc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=S;S=S+16|0;g=h;e=bd(a|0,c|0,56)|0;G()|0;i=0==0&(c&2013265920|0)==268435456;f=i?a:0;a=i?c&-2130706433|134217728:0;c=Kc(f,a,e&7)|0;if((c|0)==-1){b[d>>2]=0;S=h;return}Tb(f,a,g);e=bd(f|0,a|0,52)|0;G()|0;e=e&15;if(!(Eb(f,a)|0))eb(g,e,c,2,d);else ab(g,e,c,2,d);S=h;return}function gc(a){a=a|0;var c=0,d=0,e=0;c=Xc(1,12)|0;if(!c)H(22691,22646,49,22704);d=a+4|0;e=b[d>>2]|0;if(e|0){e=e+8|0;b[e>>2]=c;b[d>>2]=c;return c|0}if(b[a>>2]|0)H(22721,22646,61,22744);e=a;b[e>>2]=c;b[d>>2]=c;return c|0}function hc(a,c){a=a|0;c=c|0;var d=0,e=0;e=Vc(24)|0;if(!e)H(22758,22646,78,22772);b[e>>2]=b[c>>2];b[e+4>>2]=b[c+4>>2];b[e+8>>2]=b[c+8>>2];b[e+12>>2]=b[c+12>>2];b[e+16>>2]=0;c=a+4|0;d=b[c>>2]|0;if(d|0){b[d+16>>2]=e;b[c>>2]=e;return e|0}if(b[a>>2]|0)H(22787,22646,82,22772);b[a>>2]=e;b[c>>2]=e;return e|0}function ic(a){a=a|0;var c=0,d=0,e=0,f=0;if(!a)return;e=1;while(1){c=b[a>>2]|0;if(c|0)do{d=b[c>>2]|0;if(d|0)do{f=d;d=b[d+16>>2]|0;Wc(f)}while((d|0)!=0);f=c;c=b[c+8>>2]|0;Wc(f)}while((c|0)!=0);c=a;a=b[a+8>>2]|0;if(!e)Wc(c);if(!a)break;else e=0}return}function jc(a){a=a|0;var c=0,d=0,f=0,g=0,h=0.0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0;g=a+8|0;if(b[g>>2]|0){K=1;return K|0}f=b[a>>2]|0;if(!f){K=0;return K|0}c=f;d=0;do{d=d+1|0;c=b[c+8>>2]|0}while((c|0)!=0);if(d>>>0<2){K=0;return K|0}I=Vc(d<<2)|0;if(!I)H(22807,22646,317,22826);G=Vc(d<<5)|0;if(!G)H(22848,22646,321,22826);b[a>>2]=0;z=a+4|0;b[z>>2]=0;b[g>>2]=0;d=0;F=0;y=0;n=0;a:while(1){m=b[f>>2]|0;if(m){h=0.0;i=m;do{k=+e[i+8>>3];c=i;i=b[i+16>>2]|0;l=(i|0)==0;g=l?m:i;j=+e[g+8>>3];if(+q(+(k-j))>3.141592653589793){K=14;break}h=h+(j-k)*(+e[c>>3]+ +e[g>>3])}while(!l);if((K|0)==14){K=0;h=0.0;c=m;do{x=+e[c+8>>3];E=c+16|0;D=b[E>>2]|0;D=(D|0)==0?m:D;w=+e[D+8>>3];h=h+(+e[c>>3]+ +e[D>>3])*((w<0.0?w+6.283185307179586:w)-(x<0.0?x+6.283185307179586:x));c=b[((c|0)==0?f:E)>>2]|0}while((c|0)!=0)}if(h>0.0){b[I+(F<<2)>>2]=f;F=F+1|0;g=y;c=n}else K=19}else K=19;if((K|0)==19){K=0;do if(!d)if(!n)if(!(b[a>>2]|0)){g=z;i=a;c=f;d=a;break}else{K=27;break a}else{g=z;i=n+8|0;c=f;d=a;break}else{c=d+8|0;if(b[c>>2]|0){K=21;break a}d=Xc(1,12)|0;if(!d){K=23;break a}b[c>>2]=d;g=d+4|0;i=d;c=n}while(0);b[i>>2]=f;b[g>>2]=f;i=G+(y<<5)|0;l=b[f>>2]|0;if(l){m=G+(y<<5)+8|0;e[m>>3]=1797693134862315708145274.0e284;n=G+(y<<5)+24|0;e[n>>3]=1797693134862315708145274.0e284;e[i>>3]=-1797693134862315708145274.0e284;o=G+(y<<5)+16|0;e[o>>3]=-1797693134862315708145274.0e284;u=1797693134862315708145274.0e284;v=-1797693134862315708145274.0e284;g=0;p=l;k=1797693134862315708145274.0e284;s=1797693134862315708145274.0e284;t=-1797693134862315708145274.0e284;j=-1797693134862315708145274.0e284;while(1){h=+e[p>>3];x=+e[p+8>>3];p=b[p+16>>2]|0;r=(p|0)==0;w=+e[(r?l:p)+8>>3];if(h>3]=h;k=h}if(x>3]=x;s=x}if(h>t)e[i>>3]=h;else h=t;if(x>j){e[o>>3]=x;j=x}u=x>0.0&xv?x:v;g=g|+q(+(x-w))>3.141592653589793;if(r)break;else t=h}if(g){e[o>>3]=v;e[n>>3]=u}}else{b[i>>2]=0;b[i+4>>2]=0;b[i+8>>2]=0;b[i+12>>2]=0;b[i+16>>2]=0;b[i+20>>2]=0;b[i+24>>2]=0;b[i+28>>2]=0}g=y+1|0}E=f+8|0;f=b[E>>2]|0;b[E>>2]=0;if(!f){K=45;break}else{y=g;n=c}}if((K|0)==21)H(22624,22646,35,22658);else if((K|0)==23)H(22678,22646,37,22658);else if((K|0)==27)H(22721,22646,61,22744);else if((K|0)==45){b:do if((F|0)>0){E=(g|0)==0;C=g<<2;D=(a|0)==0;B=0;c=0;while(1){A=b[I+(B<<2)>>2]|0;if(!E){y=Vc(C)|0;if(!y){K=50;break}z=Vc(C)|0;if(!z){K=52;break}c:do if(!D){g=0;d=0;i=a;while(1){f=G+(g<<5)|0;if(kc(b[i>>2]|0,f,b[A>>2]|0)|0){b[y+(d<<2)>>2]=i;b[z+(d<<2)>>2]=f;r=d+1|0}else r=d;i=b[i+8>>2]|0;if(!i)break;else{g=g+1|0;d=r}}if((r|0)>0){f=b[y>>2]|0;if((r|0)==1)d=f;else{o=0;p=-1;d=f;n=f;while(1){l=b[n>>2]|0;f=0;i=0;while(1){g=b[b[y+(i<<2)>>2]>>2]|0;if((g|0)==(l|0))m=f;else m=f+((kc(g,b[z+(i<<2)>>2]|0,b[l>>2]|0)|0)&1)|0;i=i+1|0;if((i|0)==(r|0))break;else f=m}g=(m|0)>(p|0);d=g?n:d;f=o+1|0;if((f|0)==(r|0))break c;o=f;p=g?m:p;n=b[y+(f<<2)>>2]|0}}}else d=0}else d=0;while(0);Wc(y);Wc(z);if(d){g=d+4|0;f=b[g>>2]|0;if(!f){if(b[d>>2]|0){K=70;break}}else d=f+8|0;b[d>>2]=A;b[g>>2]=A}else K=73}else K=73;if((K|0)==73){K=0;c=b[A>>2]|0;if(c|0)do{z=c;c=b[c+16>>2]|0;Wc(z)}while((c|0)!=0);Wc(A);c=2}B=B+1|0;if((B|0)>=(F|0)){J=c;break b}}if((K|0)==50)H(22863,22646,249,22882);else if((K|0)==52)H(22901,22646,252,22882);else if((K|0)==70)H(22721,22646,61,22744)}else J=0;while(0);Wc(I);Wc(G);K=J;return K|0}return 0}function kc(a,c,d){a=a|0;c=c|0;d=d|0;var f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0;if(!(xa(c,d)|0)){a=0;return a|0}c=wa(c)|0;l=+e[d>>3];f=+e[d+8>>3];f=c&f<0.0?f+6.283185307179586:f;a=b[a>>2]|0;if(!a){a=0;return a|0}if(c){c=0;d=a;a:while(1){while(1){i=+e[d>>3];k=+e[d+8>>3];d=d+16|0;m=b[d>>2]|0;m=(m|0)==0?a:m;h=+e[m>>3];g=+e[m+8>>3];if(i>h){j=i;i=k}else{j=h;h=i;i=g;g=k}if(!(lj))break;d=b[d>>2]|0;if(!d){d=22;break a}}k=g<0.0?g+6.283185307179586:g;i=i<0.0?i+6.283185307179586:i;f=i==f|k==f?f+-2.220446049250313e-16:f;k=k+(l-h)/(j-h)*(i-k);if((k<0.0?k+6.283185307179586:k)>f)c=c^1;d=b[d>>2]|0;if(!d){d=22;break}}if((d|0)==22)return c|0}else{c=0;d=a;b:while(1){while(1){i=+e[d>>3];k=+e[d+8>>3];d=d+16|0;m=b[d>>2]|0;m=(m|0)==0?a:m;h=+e[m>>3];g=+e[m+8>>3];if(i>h){j=i;i=k}else{j=h;h=i;i=g;g=k}if(!(lj))break;d=b[d>>2]|0;if(!d){d=22;break b}}f=i==f|g==f?f+-2.220446049250313e-16:f;if(g+(l-h)/(j-h)*(i-g)>f)c=c^1;d=b[d>>2]|0;if(!d){d=22;break}}if((d|0)==22)return c|0}return 0}function lc(c,d,e,f,g){c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=S;S=S+32|0;t=u+16|0;s=u;h=bd(c|0,d|0,52)|0;G()|0;h=h&15;p=bd(e|0,f|0,52)|0;G()|0;if((h|0)!=(p&15|0)){t=1;S=u;return t|0}l=bd(c|0,d|0,45)|0;G()|0;l=l&127;m=bd(e|0,f|0,45)|0;G()|0;m=m&127;p=(l|0)!=(m|0);if(p){j=ta(l,m)|0;if((j|0)==7){t=2;S=u;return t|0}k=ta(m,l)|0;if((k|0)==7)H(22925,22949,151,22959);else{q=j;i=k}}else{q=0;i=0}n=la(l)|0;o=la(m)|0;b[t>>2]=0;b[t+4>>2]=0;b[t+8>>2]=0;b[t+12>>2]=0;do if(!q){Sb(e,f,t)|0;if((n|0)!=0&(o|0)!=0){if((m|0)!=(l|0))H(23077,22949,243,22959);i=Kb(c,d)|0;h=Kb(e,f)|0;if(!(a[22032+(i*7|0)+h>>0]|0)){i=b[21200+(i*28|0)+(h<<2)>>2]|0;if((i|0)>0){j=t+4|0;h=0;do{Oa(j);h=h+1|0}while((h|0)!=(i|0));r=50}else r=50}else h=5}else r=50}else{m=b[4304+(l*28|0)+(q<<2)>>2]|0;j=(m|0)>0;if(!o)if(j){l=0;k=e;j=f;do{k=Ob(k,j)|0;j=G()|0;i=Qa(i)|0;l=l+1|0}while((l|0)!=(m|0));m=i;l=k;k=j}else{m=i;l=e;k=f}else if(j){l=0;k=e;j=f;do{k=Nb(k,j)|0;j=G()|0;i=Qa(i)|0;if((i|0)==1)i=Qa(1)|0;l=l+1|0}while((l|0)!=(m|0));m=i;l=k;k=j}else{m=i;l=e;k=f}Sb(l,k,t)|0;if(!p)H(22972,22949,181,22959);j=(n|0)!=0;i=(o|0)!=0;if(j&i)H(22999,22949,182,22959);if(!j)if(i){i=Kb(l,k)|0;if(a[22032+(i*7|0)+m>>0]|0){h=4;break}l=0;k=b[21200+(m*28|0)+(i<<2)>>2]|0;r=26}else i=0;else{i=Kb(c,d)|0;if(a[22032+(i*7|0)+q>>0]|0){h=3;break}k=b[21200+(i*28|0)+(q<<2)>>2]|0;l=k;r=26}if((r|0)==26){if((k|0)<=-1)H(23030,22949,212,22959);if((l|0)<=-1)H(23053,22949,213,22959);if((k|0)>0){j=t+4|0;i=0;do{Oa(j);i=i+1|0}while((i|0)!=(k|0));i=l}else i=l};b[s>>2]=0;b[s+4>>2]=0;b[s+8>>2]=0;Ma(s,q);if(h|0)while(1){if(!(Qb(h)|0))La(s);else Ka(s);if((h|0)>1)h=h+-1|0;else break}if((i|0)>0){h=0;do{Oa(s);h=h+1|0}while((h|0)!=(i|0))}r=t+4|0;Ea(r,s,r);Ca(r);r=50}while(0);if((r|0)==50){h=t+4|0;b[g>>2]=b[h>>2];b[g+4>>2]=b[h+4>>2];b[g+8>>2]=b[h+8>>2];h=0}t=h;S=u;return t|0}function mc(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;p=S;S=S+48|0;h=p+36|0;i=p+24|0;j=p+12|0;k=p;g=bd(a|0,c|0,52)|0;G()|0;g=g&15;n=bd(a|0,c|0,45)|0;G()|0;n=n&127;l=la(n)|0;cd(g|0,0,52)|0;r=G()|0|134225919;q=e;b[q>>2]=-1;b[q+4>>2]=r;if(!g){if((b[d>>2]|0)>1){r=1;S=p;return r|0}if((b[d+4>>2]|0)>1){r=1;S=p;return r|0}if((b[d+8>>2]|0)>1){r=1;S=p;return r|0}f=sa(n,Ha(d)|0)|0;if((f|0)==127){r=1;S=p;return r|0}o=cd(f|0,0,45)|0;q=G()|0;n=e;q=b[n+4>>2]&-1040385|q;r=e;b[r>>2]=b[n>>2]|o;b[r+4>>2]=q;r=0;S=p;return r|0};b[h>>2]=b[d>>2];b[h+4>>2]=b[d+4>>2];b[h+8>>2]=b[d+8>>2];while(1){b[i>>2]=b[h>>2];b[i+4>>2]=b[h+4>>2];b[i+8>>2]=b[h+8>>2];if(!(Qb(g)|0)){Ja(h);b[j>>2]=b[h>>2];b[j+4>>2]=b[h+4>>2];b[j+8>>2]=b[h+8>>2];La(j)}else{Ia(h);b[j>>2]=b[h>>2];b[j+4>>2]=b[h+4>>2];b[j+8>>2]=b[h+8>>2];Ka(j)}Fa(i,j,k);Ca(k);q=e;s=b[q>>2]|0;q=b[q+4>>2]|0;t=(15-g|0)*3|0;d=cd(7,0,t|0)|0;q=q&~(G()|0);t=cd(Ha(k)|0,0,t|0)|0;q=G()|0|q;r=e;b[r>>2]=t|s&~d;b[r+4>>2]=q;if((g|0)>1)g=g+-1|0;else break}a:do if(((b[h>>2]|0)<=1?(b[h+4>>2]|0)<=1:0)?(b[h+8>>2]|0)<=1:0){g=Ha(h)|0;i=sa(n,g)|0;if((i|0)==127)k=0;else k=la(i)|0;b:do if(!g)if((l|0)!=0&(k|0)!=0){t=Kb(a,c)|0;g=e;g=21408+(t*28|0)+((Kb(b[g>>2]|0,b[g+4>>2]|0)|0)<<2)|0;g=b[g>>2]|0;if((g|0)<=-1)H(23201,22949,433,23134);if(!g){f=i;g=55}else{h=e;f=0;d=b[h>>2]|0;h=b[h+4>>2]|0;do{d=Mb(d,h)|0;h=G()|0;t=e;b[t>>2]=d;b[t+4>>2]=h;f=f+1|0}while((f|0)<(g|0));f=i;g=54}}else{f=i;g=54}else{if(l){h=21408+((Kb(a,c)|0)*28|0)+(g<<2)|0;h=b[h>>2]|0;if((h|0)>0){d=0;do{g=Pa(g)|0;d=d+1|0}while((d|0)!=(h|0))}if((g|0)==1){f=3;break a}d=sa(n,g)|0;if((d|0)==127)H(23104,22949,376,23134);if(!(la(d)|0)){o=h;m=g;f=d}else H(23147,22949,377,23134)}else{o=0;m=g;f=i}j=b[4304+(n*28|0)+(m<<2)>>2]|0;if((j|0)<=-1)H(23178,22949,384,23134);if(!k){if((o|0)<=-1)H(23030,22949,417,23134);if(o|0){h=e;g=0;d=b[h>>2]|0;h=b[h+4>>2]|0;do{d=Mb(d,h)|0;h=G()|0;t=e;b[t>>2]=d;b[t+4>>2]=h;g=g+1|0}while((g|0)<(o|0))}if((j|0)<=0){g=54;break}h=e;g=0;d=b[h>>2]|0;h=b[h+4>>2]|0;while(1){d=Mb(d,h)|0;h=G()|0;t=e;b[t>>2]=d;b[t+4>>2]=h;g=g+1|0;if((g|0)==(j|0)){g=54;break b}}}i=ta(f,n)|0;if((i|0)==7)H(22925,22949,393,23134);g=e;d=b[g>>2]|0;g=b[g+4>>2]|0;if((j|0)>0){h=0;do{d=Mb(d,g)|0;g=G()|0;t=e;b[t>>2]=d;b[t+4>>2]=g;h=h+1|0}while((h|0)!=(j|0))}d=Kb(d,g)|0;t=ma(f)|0;d=b[(t?21824:21616)+(i*28|0)+(d<<2)>>2]|0;if((d|0)<=-1)H(23030,22949,412,23134);if(!d)g=54;else{i=e;g=0;h=b[i>>2]|0;i=b[i+4>>2]|0;do{h=Lb(h,i)|0;i=G()|0;t=e;b[t>>2]=h;b[t+4>>2]=i;g=g+1|0}while((g|0)<(d|0));g=54}}while(0);if((g|0)==54)if(k)g=55;if((g|0)==55){t=e;if((Kb(b[t>>2]|0,b[t+4>>2]|0)|0)==1){f=4;break}}t=e;r=b[t>>2]|0;t=b[t+4>>2]&-1040385;s=cd(f|0,0,45)|0;t=t|(G()|0);f=e;b[f>>2]=r|s;b[f+4>>2]=t;f=0}else f=2;while(0);t=f;S=p;return t|0}function nc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=S;S=S+16|0;f=g;a=lc(a,b,c,d,f)|0;if(!a){Ua(f,e);a=0}S=g;return a|0}function oc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=S;S=S+16|0;f=e;Va(c,f);d=mc(a,b,f,d)|0;S=e;return d|0}function pc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=S;S=S+32|0;e=g+12|0;f=g;if((lc(a,b,a,b,e)|0)==0?(lc(a,b,c,d,f)|0)==0:0)a=Ta(e,f)|0;else a=-1;S=g;return a|0}function qc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=S;S=S+32|0;e=g+12|0;f=g;if((lc(a,b,a,b,e)|0)==0?(lc(a,b,c,d,f)|0)==0:0)a=Ta(e,f)|0;else a=-1;S=g;return (a>>>31^1)+a|0}function rc(a,c,d,e,f){a=a|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=S;S=S+48|0;g=x+24|0;h=x+12|0;w=x;if((lc(a,c,a,c,g)|0)==0?(lc(a,c,d,e,h)|0)==0:0){v=Ta(g,h)|0;if((v|0)<0){w=v;S=x;return w|0};b[g>>2]=0;b[g+4>>2]=0;b[g+8>>2]=0;b[h>>2]=0;b[h+4>>2]=0;b[h+8>>2]=0;lc(a,c,a,c,g)|0;lc(a,c,d,e,h)|0;Wa(g);Wa(h);if(!v){e=g+4|0;n=g+8|0;s=e;t=n;u=g;d=b[g>>2]|0;e=b[e>>2]|0;g=b[n>>2]|0;p=0.0;r=0.0;o=0.0}else{l=b[g>>2]|0;o=+(v|0);s=g+4|0;m=b[s>>2]|0;t=g+8|0;n=b[t>>2]|0;u=g;d=l;e=m;g=n;p=+((b[h>>2]|0)-l|0)/o;r=+((b[h+4>>2]|0)-m|0)/o;o=+((b[h+8>>2]|0)-n|0)/o}b[w>>2]=d;n=w+4|0;b[n>>2]=e;m=w+8|0;b[m>>2]=g;l=0;while(1){j=+(l|0);y=p*j+ +(d|0);i=r*j+ +(b[s>>2]|0);j=o*j+ +(b[t>>2]|0);e=~~+ed(+y);h=~~+ed(+i);d=~~+ed(+j);y=+q(+(+(e|0)-y));i=+q(+(+(h|0)-i));j=+q(+(+(d|0)-j));do if(!(y>i&y>j)){k=0-e|0;if(i>j){g=k-d|0;break}else{g=h;d=k-h|0;break}}else{e=0-(h+d)|0;g=h}while(0);b[w>>2]=e;b[n>>2]=g;b[m>>2]=d;Xa(w);mc(a,c,w,f+(l<<3)|0)|0;if((l|0)==(v|0))break;l=l+1|0;d=b[u>>2]|0}w=0;S=x;return w|0}w=-1;S=x;return w|0}function sc(a,b){a=a|0;b=b|0;var c=0;if(!b){c=1;return c|0}c=a;a=1;do{a=B((b&1|0)==0?1:c,a)|0;b=b>>1;c=B(c,c)|0}while((b|0)!=0);return a|0}function tc(a,c,d){a=a|0;c=c|0;d=d|0;var f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0,n=0,o=0.0;if(!(xa(c,d)|0)){n=0;return n|0}c=wa(c)|0;o=+e[d>>3];f=+e[d+8>>3];f=c&f<0.0?f+6.283185307179586:f;n=b[a>>2]|0;if((n|0)<=0){n=0;return n|0}m=b[a+4>>2]|0;if(c){c=0;d=-1;a=0;a:while(1){l=a;while(1){i=+e[m+(l<<4)>>3];k=+e[m+(l<<4)+8>>3];a=(d+2|0)%(n|0)|0;h=+e[m+(a<<4)>>3];g=+e[m+(a<<4)+8>>3];if(i>h){j=i;i=k}else{j=h;h=i;i=g;g=k}if(!(oj))break;d=l+1|0;if((d|0)<(n|0)){a=l;l=d;d=a}else{d=22;break a}}k=g<0.0?g+6.283185307179586:g;i=i<0.0?i+6.283185307179586:i;f=i==f|k==f?f+-2.220446049250313e-16:f;k=k+(o-h)/(j-h)*(i-k);if((k<0.0?k+6.283185307179586:k)>f)c=c^1;a=l+1|0;if((a|0)>=(n|0)){d=22;break}else d=l}if((d|0)==22)return c|0}else{c=0;d=-1;a=0;b:while(1){l=a;while(1){i=+e[m+(l<<4)>>3];k=+e[m+(l<<4)+8>>3];a=(d+2|0)%(n|0)|0;h=+e[m+(a<<4)>>3];g=+e[m+(a<<4)+8>>3];if(i>h){j=i;i=k}else{j=h;h=i;i=g;g=k}if(!(oj))break;d=l+1|0;if((d|0)<(n|0)){a=l;l=d;d=a}else{d=22;break b}}f=i==f|g==f?f+-2.220446049250313e-16:f;if(g+(o-h)/(j-h)*(i-g)>f)c=c^1;a=l+1|0;if((a|0)>=(n|0)){d=22;break}else d=l}if((d|0)==22)return c|0}return 0}function uc(a,c){a=a|0;c=c|0;var d=0.0,f=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,r=0,s=0,t=0,u=0,v=0;r=b[a>>2]|0;if(!r){b[c>>2]=0;b[c+4>>2]=0;b[c+8>>2]=0;b[c+12>>2]=0;b[c+16>>2]=0;b[c+20>>2]=0;b[c+24>>2]=0;b[c+28>>2]=0;return}s=c+8|0;e[s>>3]=1797693134862315708145274.0e284;t=c+24|0;e[t>>3]=1797693134862315708145274.0e284;e[c>>3]=-1797693134862315708145274.0e284;u=c+16|0;e[u>>3]=-1797693134862315708145274.0e284;if((r|0)<=0)return;o=b[a+4>>2]|0;l=1797693134862315708145274.0e284;m=-1797693134862315708145274.0e284;n=0;a=-1;h=1797693134862315708145274.0e284;i=1797693134862315708145274.0e284;k=-1797693134862315708145274.0e284;f=-1797693134862315708145274.0e284;p=0;while(1){d=+e[o+(p<<4)>>3];j=+e[o+(p<<4)+8>>3];a=a+2|0;g=+e[o+(((a|0)==(r|0)?0:a)<<4)+8>>3];if(d>3]=d;h=d}if(j>3]=j;i=j}if(d>k)e[c>>3]=d;else d=k;if(j>f){e[u>>3]=j;f=j}l=j>0.0&jm?j:m;n=n|+q(+(j-g))>3.141592653589793;a=p+1|0;if((a|0)==(r|0))break;else{v=p;k=d;p=a;a=v}}if(!n)return;e[u>>3]=m;e[t>>3]=l;return}function vc(a,c){a=a|0;c=c|0;var d=0,f=0,g=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;r=b[a>>2]|0;if(r){s=c+8|0;e[s>>3]=1797693134862315708145274.0e284;t=c+24|0;e[t>>3]=1797693134862315708145274.0e284;e[c>>3]=-1797693134862315708145274.0e284;u=c+16|0;e[u>>3]=-1797693134862315708145274.0e284;if((r|0)>0){g=b[a+4>>2]|0;o=1797693134862315708145274.0e284;p=-1797693134862315708145274.0e284;f=0;d=-1;k=1797693134862315708145274.0e284;l=1797693134862315708145274.0e284;n=-1797693134862315708145274.0e284;i=-1797693134862315708145274.0e284;v=0;while(1){h=+e[g+(v<<4)>>3];m=+e[g+(v<<4)+8>>3];z=d+2|0;j=+e[g+(((z|0)==(r|0)?0:z)<<4)+8>>3];if(h>3]=h;k=h}if(m>3]=m;l=m}if(h>n)e[c>>3]=h;else h=n;if(m>i){e[u>>3]=m;i=m}o=m>0.0&mp?m:p;f=f|+q(+(m-j))>3.141592653589793;d=v+1|0;if((d|0)==(r|0))break;else{z=v;n=h;v=d;d=z}}if(f){e[u>>3]=p;e[t>>3]=o}}}else{b[c>>2]=0;b[c+4>>2]=0;b[c+8>>2]=0;b[c+12>>2]=0;b[c+16>>2]=0;b[c+20>>2]=0;b[c+24>>2]=0;b[c+28>>2]=0}z=a+8|0;d=b[z>>2]|0;if((d|0)<=0)return;y=a+12|0;x=0;do{g=b[y>>2]|0;f=x;x=x+1|0;t=c+(x<<5)|0;u=b[g+(f<<3)>>2]|0;if(u){v=c+(x<<5)+8|0;e[v>>3]=1797693134862315708145274.0e284;a=c+(x<<5)+24|0;e[a>>3]=1797693134862315708145274.0e284;e[t>>3]=-1797693134862315708145274.0e284;w=c+(x<<5)+16|0;e[w>>3]=-1797693134862315708145274.0e284;if((u|0)>0){r=b[g+(f<<3)+4>>2]|0;o=1797693134862315708145274.0e284;p=-1797693134862315708145274.0e284;g=0;f=-1;s=0;k=1797693134862315708145274.0e284;l=1797693134862315708145274.0e284;m=-1797693134862315708145274.0e284;i=-1797693134862315708145274.0e284;while(1){h=+e[r+(s<<4)>>3];n=+e[r+(s<<4)+8>>3];f=f+2|0;j=+e[r+(((f|0)==(u|0)?0:f)<<4)+8>>3];if(h>3]=h;k=h}if(n>3]=n;l=n}if(h>m)e[t>>3]=h;else h=m;if(n>i){e[w>>3]=n;i=n}o=n>0.0&np?n:p;g=g|+q(+(n-j))>3.141592653589793;f=s+1|0;if((f|0)==(u|0))break;else{A=s;s=f;m=h;f=A}}if(g){e[w>>3]=p;e[a>>3]=o}}}else{b[t>>2]=0;b[t+4>>2]=0;b[t+8>>2]=0;b[t+12>>2]=0;b[t+16>>2]=0;b[t+20>>2]=0;b[t+24>>2]=0;b[t+28>>2]=0;d=b[z>>2]|0}}while((x|0)<(d|0));return}function wc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0;if(!(tc(a,c,d)|0)){f=0;return f|0}f=a+8|0;if((b[f>>2]|0)<=0){f=1;return f|0}e=a+12|0;a=0;while(1){g=a;a=a+1|0;if(tc((b[e>>2]|0)+(g<<3)|0,c+(a<<5)|0,d)|0){a=0;e=6;break}if((a|0)>=(b[f>>2]|0)){a=1;e=6;break}}if((e|0)==6)return a|0;return 0}function xc(){return 8}function yc(){return 16}function zc(){return 168}function Ac(){return 8}function Bc(){return 16}function Cc(){return 12}function Dc(){return 8}function Ec(a){a=a|0;var b=0.0,c=0.0;c=+e[a>>3];b=+e[a+8>>3];return +(+r(+(c*c+b*b)))}function Fc(a,b,c,d,f){a=a|0;b=b|0;c=c|0;d=d|0;f=f|0;var g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;k=+e[a>>3];j=+e[b>>3]-k;i=+e[a+8>>3];h=+e[b+8>>3]-i;m=+e[c>>3];g=+e[d>>3]-m;n=+e[c+8>>3];l=+e[d+8>>3]-n;g=(g*(i-n)-(k-m)*l)/(j*l-h*g);e[f>>3]=k+j*g;e[f+8>>3]=i+h*g;return}function Gc(a,b){a=a|0;b=b|0;if(!(+e[a>>3]==+e[b>>3])){b=0;return b|0}b=+e[a+8>>3]==+e[b+8>>3];return b|0}function Hc(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,f=0.0;f=+e[a>>3]-+e[b>>3];d=+e[a+8>>3]-+e[b+8>>3];c=+e[a+16>>3]-+e[b+16>>3];return +(f*f+d*d+c*c)}function Ic(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,f=0.0;c=+e[a>>3];d=+t(+c);c=+u(+c);e[b+16>>3]=c;c=+e[a+8>>3];f=d*+t(+c);e[b>>3]=f;c=d*+u(+c);e[b+8>>3]=c;return}function Jc(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=S;S=S+32|0;f=k+16|0;g=k;Tb(a,c,f);h=zb(a,c)|0;j=Kb(a,c)|0;pa(h,g);c=qa(h,b[f>>2]|0)|0;if(!(la(h)|0)){j=c;S=k;return j|0}do switch(h|0){case 4:{a=0;d=14;break}case 14:{a=1;d=14;break}case 24:{a=2;d=14;break}case 38:{a=3;d=14;break}case 49:{a=4;d=14;break}case 58:{a=5;d=14;break}case 63:{a=6;d=14;break}case 72:{a=7;d=14;break}case 83:{a=8;d=14;break}case 97:{a=9;d=14;break}case 107:{a=10;d=14;break}case 117:{a=11;d=14;break}default:{i=0;e=0}}while(0);if((d|0)==14){i=b[22096+(a*24|0)+8>>2]|0;e=b[22096+(a*24|0)+16>>2]|0}a=b[f>>2]|0;if((a|0)!=(b[g>>2]|0)){h=ma(h)|0;a=b[f>>2]|0;if(h|(a|0)==(e|0))c=(c+1|0)%6|0}if((j|0)==3&(a|0)==(e|0)){j=(c+5|0)%6|0;S=k;return j|0}if(!((j|0)==5&(a|0)==(i|0))){j=c;S=k;return j|0}j=(c+1|0)%6|0;S=k;return j|0}function Kc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0;e=Eb(a,c)|0;if((d+-1|0)>>>0>5){d=-1;return d|0}f=(e|0)!=0;if((d|0)==1&f){d=-1;return d|0}e=Jc(a,c)|0;if(f){d=(5-e+(b[22384+(d<<2)>>2]|0)|0)%5|0;return d|0}else{d=(6-e+(b[22416+(d<<2)>>2]|0)|0)%6|0;return d|0}return 0}function Lc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0;if((c|0)>0){e=Xc(c,4)|0;b[a>>2]=e;if(!e)H(23230,23253,40,23267)}else b[a>>2]=0;b[a+4>>2]=c;b[a+8>>2]=0;b[a+12>>2]=d;return}function Mc(a){a=a|0;var c=0,d=0,f=0,g=0,h=0,i=0,j=0;g=a+4|0;h=a+12|0;i=a+8|0;a:while(1){d=b[g>>2]|0;c=0;while(1){if((c|0)>=(d|0))break a;f=b[a>>2]|0;j=b[f+(c<<2)>>2]|0;if(!j)c=c+1|0;else break}c=f+(~~(+q(+(+s(10.0,+(+(15-(b[h>>2]|0)|0)))*(+e[j>>3]+ +e[j+8>>3])))%+(d|0))>>>0<<2)|0;d=b[c>>2]|0;b:do if(d|0){f=j+32|0;if((d|0)==(j|0))b[c>>2]=b[f>>2];else{d=d+32|0;c=b[d>>2]|0;if(!c)break;while(1){if((c|0)==(j|0))break;d=c+32|0;c=b[d>>2]|0;if(!c)break b}b[d>>2]=b[f>>2]}Wc(j);b[i>>2]=(b[i>>2]|0)+-1}while(0)}Wc(b[a>>2]|0);return}function Nc(a){a=a|0;var c=0,d=0,e=0;e=b[a+4>>2]|0;d=0;while(1){if((d|0)>=(e|0)){c=0;d=4;break}c=b[(b[a>>2]|0)+(d<<2)>>2]|0;if(!c)d=d+1|0;else{d=4;break}}if((d|0)==4)return c|0;return 0}function Oc(a,c){a=a|0;c=c|0;var d=0,f=0,g=0,h=0;d=~~(+q(+(+s(10.0,+(+(15-(b[a+12>>2]|0)|0)))*(+e[c>>3]+ +e[c+8>>3])))%+(b[a+4>>2]|0))>>>0;d=(b[a>>2]|0)+(d<<2)|0;f=b[d>>2]|0;if(!f){h=1;return h|0}h=c+32|0;do if((f|0)!=(c|0)){d=b[f+32>>2]|0;if(!d){h=1;return h|0}g=d;while(1){if((g|0)==(c|0)){g=8;break}d=b[g+32>>2]|0;if(!d){d=1;g=10;break}else{f=g;g=d}}if((g|0)==8){b[f+32>>2]=b[h>>2];break}else if((g|0)==10)return d|0}else b[d>>2]=b[h>>2];while(0);Wc(c);h=a+8|0;b[h>>2]=(b[h>>2]|0)+-1;h=0;return h|0}function Pc(a,c,d){a=a|0;c=c|0;d=d|0;var f=0,g=0,h=0,i=0;h=Vc(40)|0;if(!h)H(23283,23253,98,23296);b[h>>2]=b[c>>2];b[h+4>>2]=b[c+4>>2];b[h+8>>2]=b[c+8>>2];b[h+12>>2]=b[c+12>>2];g=h+16|0;b[g>>2]=b[d>>2];b[g+4>>2]=b[d+4>>2];b[g+8>>2]=b[d+8>>2];b[g+12>>2]=b[d+12>>2];b[h+32>>2]=0;g=~~(+q(+(+s(10.0,+(+(15-(b[a+12>>2]|0)|0)))*(+e[c>>3]+ +e[c+8>>3])))%+(b[a+4>>2]|0))>>>0;g=(b[a>>2]|0)+(g<<2)|0;f=b[g>>2]|0;do if(!f)b[g>>2]=h;else{while(1){if(hb(f,c)|0?hb(f+16|0,d)|0:0)break;g=b[f+32>>2]|0;f=(g|0)==0?f:g;if(!(b[f+32>>2]|0)){i=10;break}}if((i|0)==10){b[f+32>>2]=h;break}Wc(h);i=f;return i|0}while(0);i=a+8|0;b[i>>2]=(b[i>>2]|0)+1;i=h;return i|0}function Qc(a,c,d){a=a|0;c=c|0;d=d|0;var f=0,g=0;g=~~(+q(+(+s(10.0,+(+(15-(b[a+12>>2]|0)|0)))*(+e[c>>3]+ +e[c+8>>3])))%+(b[a+4>>2]|0))>>>0;g=b[(b[a>>2]|0)+(g<<2)>>2]|0;if(!g){d=0;return d|0}if(!d){a=g;while(1){if(hb(a,c)|0){f=10;break}a=b[a+32>>2]|0;if(!a){a=0;f=10;break}}if((f|0)==10)return a|0}a=g;while(1){if(hb(a,c)|0?hb(a+16|0,d)|0:0){f=10;break}a=b[a+32>>2]|0;if(!a){a=0;f=10;break}}if((f|0)==10)return a|0;return 0}function Rc(a,c){a=a|0;c=c|0;var d=0;d=~~(+q(+(+s(10.0,+(+(15-(b[a+12>>2]|0)|0)))*(+e[c>>3]+ +e[c+8>>3])))%+(b[a+4>>2]|0))>>>0;a=b[(b[a>>2]|0)+(d<<2)>>2]|0;if(!a){d=0;return d|0}while(1){if(hb(a,c)|0){c=5;break}a=b[a+32>>2]|0;if(!a){a=0;c=5;break}}if((c|0)==5)return a|0;return 0}function Sc(){return 23312}function Tc(a){a=+a;return +(+hd(+a))}function Uc(a){a=+a;return ~~+Tc(a)|0}function Vc(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=S;S=S+16|0;n=w;do if(a>>>0<245){k=a>>>0<11?16:a+11&-8;a=k>>>3;m=b[5829]|0;d=m>>>a;if(d&3|0){c=(d&1^1)+a|0;a=23356+(c<<1<<2)|0;d=a+8|0;e=b[d>>2]|0;f=e+8|0;g=b[f>>2]|0;if((g|0)==(a|0))b[5829]=m&~(1<>2]=a;b[d>>2]=g}v=c<<3;b[e+4>>2]=v|3;v=e+v+4|0;b[v>>2]=b[v>>2]|1;v=f;S=w;return v|0}l=b[5831]|0;if(k>>>0>l>>>0){if(d|0){c=2<>>12&16;c=c>>>i;d=c>>>5&8;c=c>>>d;g=c>>>2&4;c=c>>>g;a=c>>>1&2;c=c>>>a;e=c>>>1&1;e=(d|i|g|a|e)+(c>>>e)|0;c=23356+(e<<1<<2)|0;a=c+8|0;g=b[a>>2]|0;i=g+8|0;d=b[i>>2]|0;if((d|0)==(c|0)){a=m&~(1<>2]=c;b[a>>2]=d;a=m}v=e<<3;h=v-k|0;b[g+4>>2]=k|3;f=g+k|0;b[f+4>>2]=h|1;b[g+v>>2]=h;if(l|0){e=b[5834]|0;c=l>>>3;d=23356+(c<<1<<2)|0;c=1<>2]|0}b[a>>2]=e;b[c+12>>2]=e;b[e+8>>2]=c;b[e+12>>2]=d}b[5831]=h;b[5834]=f;v=i;S=w;return v|0}g=b[5830]|0;if(g){d=(g&0-g)+-1|0;f=d>>>12&16;d=d>>>f;e=d>>>5&8;d=d>>>e;h=d>>>2&4;d=d>>>h;i=d>>>1&2;d=d>>>i;j=d>>>1&1;j=b[23620+((e|f|h|i|j)+(d>>>j)<<2)>>2]|0;d=j;i=j;j=(b[j+4>>2]&-8)-k|0;while(1){a=b[d+16>>2]|0;if(!a){a=b[d+20>>2]|0;if(!a)break}h=(b[a+4>>2]&-8)-k|0;f=h>>>0>>0;d=a;i=f?a:i;j=f?h:j}h=i+k|0;if(h>>>0>i>>>0){f=b[i+24>>2]|0;c=b[i+12>>2]|0;do if((c|0)==(i|0)){a=i+20|0;c=b[a>>2]|0;if(!c){a=i+16|0;c=b[a>>2]|0;if(!c){d=0;break}}while(1){e=c+20|0;d=b[e>>2]|0;if(!d){e=c+16|0;d=b[e>>2]|0;if(!d)break;else{c=d;a=e}}else{c=d;a=e}}b[a>>2]=0;d=c}else{d=b[i+8>>2]|0;b[d+12>>2]=c;b[c+8>>2]=d;d=c}while(0);do if(f|0){c=b[i+28>>2]|0;a=23620+(c<<2)|0;if((i|0)==(b[a>>2]|0)){b[a>>2]=d;if(!d){b[5830]=g&~(1<>2]|0)==(i|0)?v:f+20|0)>>2]=d;if(!d)break}b[d+24>>2]=f;c=b[i+16>>2]|0;if(c|0){b[d+16>>2]=c;b[c+24>>2]=d}c=b[i+20>>2]|0;if(c|0){b[d+20>>2]=c;b[c+24>>2]=d}}while(0);if(j>>>0<16){v=j+k|0;b[i+4>>2]=v|3;v=i+v+4|0;b[v>>2]=b[v>>2]|1}else{b[i+4>>2]=k|3;b[h+4>>2]=j|1;b[h+j>>2]=j;if(l|0){e=b[5834]|0;c=l>>>3;d=23356+(c<<1<<2)|0;c=1<>2]|0}b[a>>2]=e;b[c+12>>2]=e;b[e+8>>2]=c;b[e+12>>2]=d}b[5831]=j;b[5834]=h}v=i+8|0;S=w;return v|0}else m=k}else m=k}else m=k}else if(a>>>0<=4294967231){a=a+11|0;k=a&-8;e=b[5830]|0;if(e){f=0-k|0;a=a>>>8;if(a)if(k>>>0>16777215)j=31;else{m=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;j=14-(i|m|j)+(q<>>15)|0;j=k>>>(j+7|0)&1|j<<1}else j=0;d=b[23620+(j<<2)>>2]|0;a:do if(!d){d=0;a=0;q=61}else{a=0;i=k<<((j|0)==31?0:25-(j>>>1)|0);g=0;while(1){h=(b[d+4>>2]&-8)-k|0;if(h>>>0>>0)if(!h){a=d;f=0;q=65;break a}else{a=d;f=h}q=b[d+20>>2]|0;d=b[d+16+(i>>>31<<2)>>2]|0;g=(q|0)==0|(q|0)==(d|0)?g:q;if(!d){d=g;q=61;break}else i=i<<1}}while(0);if((q|0)==61){if((d|0)==0&(a|0)==0){a=2<>>12&16;m=m>>>h;g=m>>>5&8;m=m>>>g;i=m>>>2&4;m=m>>>i;j=m>>>1&2;m=m>>>j;d=m>>>1&1;a=0;d=b[23620+((g|h|i|j|d)+(m>>>d)<<2)>>2]|0}if(!d){i=a;h=f}else q=65}if((q|0)==65){g=d;while(1){m=(b[g+4>>2]&-8)-k|0;d=m>>>0>>0;f=d?m:f;a=d?g:a;d=b[g+16>>2]|0;if(!d)d=b[g+20>>2]|0;if(!d){i=a;h=f;break}else g=d}}if(((i|0)!=0?h>>>0<((b[5831]|0)-k|0)>>>0:0)?(l=i+k|0,l>>>0>i>>>0):0){g=b[i+24>>2]|0;c=b[i+12>>2]|0;do if((c|0)==(i|0)){a=i+20|0;c=b[a>>2]|0;if(!c){a=i+16|0;c=b[a>>2]|0;if(!c){c=0;break}}while(1){f=c+20|0;d=b[f>>2]|0;if(!d){f=c+16|0;d=b[f>>2]|0;if(!d)break;else{c=d;a=f}}else{c=d;a=f}}b[a>>2]=0}else{v=b[i+8>>2]|0;b[v+12>>2]=c;b[c+8>>2]=v}while(0);do if(g){a=b[i+28>>2]|0;d=23620+(a<<2)|0;if((i|0)==(b[d>>2]|0)){b[d>>2]=c;if(!c){e=e&~(1<>2]|0)==(i|0)?v:g+20|0)>>2]=c;if(!c)break}b[c+24>>2]=g;a=b[i+16>>2]|0;if(a|0){b[c+16>>2]=a;b[a+24>>2]=c}a=b[i+20>>2]|0;if(a){b[c+20>>2]=a;b[a+24>>2]=c}}while(0);b:do if(h>>>0<16){v=h+k|0;b[i+4>>2]=v|3;v=i+v+4|0;b[v>>2]=b[v>>2]|1}else{b[i+4>>2]=k|3;b[l+4>>2]=h|1;b[l+h>>2]=h;c=h>>>3;if(h>>>0<256){d=23356+(c<<1<<2)|0;a=b[5829]|0;c=1<>2]|0}b[a>>2]=l;b[c+12>>2]=l;b[l+8>>2]=c;b[l+12>>2]=d;break}c=h>>>8;if(c)if(h>>>0>16777215)d=31;else{u=(c+1048320|0)>>>16&8;v=c<>>16&4;v=v<>>16&2;d=14-(t|u|d)+(v<>>15)|0;d=h>>>(d+7|0)&1|d<<1}else d=0;c=23620+(d<<2)|0;b[l+28>>2]=d;a=l+16|0;b[a+4>>2]=0;b[a>>2]=0;a=1<>2]=l;b[l+24>>2]=c;b[l+12>>2]=l;b[l+8>>2]=l;break}c=b[c>>2]|0;c:do if((b[c+4>>2]&-8|0)!=(h|0)){e=h<<((d|0)==31?0:25-(d>>>1)|0);while(1){d=c+16+(e>>>31<<2)|0;a=b[d>>2]|0;if(!a)break;if((b[a+4>>2]&-8|0)==(h|0)){c=a;break c}else{e=e<<1;c=a}}b[d>>2]=l;b[l+24>>2]=c;b[l+12>>2]=l;b[l+8>>2]=l;break b}while(0);u=c+8|0;v=b[u>>2]|0;b[v+12>>2]=l;b[u>>2]=l;b[l+8>>2]=v;b[l+12>>2]=c;b[l+24>>2]=0}while(0);v=i+8|0;S=w;return v|0}else m=k}else m=k}else m=-1;while(0);d=b[5831]|0;if(d>>>0>=m>>>0){c=d-m|0;a=b[5834]|0;if(c>>>0>15){v=a+m|0;b[5834]=v;b[5831]=c;b[v+4>>2]=c|1;b[a+d>>2]=c;b[a+4>>2]=m|3}else{b[5831]=0;b[5834]=0;b[a+4>>2]=d|3;v=a+d+4|0;b[v>>2]=b[v>>2]|1}v=a+8|0;S=w;return v|0}h=b[5832]|0;if(h>>>0>m>>>0){t=h-m|0;b[5832]=t;v=b[5835]|0;u=v+m|0;b[5835]=u;b[u+4>>2]=t|1;b[v+4>>2]=m|3;v=v+8|0;S=w;return v|0}if(!(b[5947]|0)){b[5949]=4096;b[5948]=4096;b[5950]=-1;b[5951]=-1;b[5952]=0;b[5940]=0;b[5947]=n&-16^1431655768;a=4096}else a=b[5949]|0;i=m+48|0;j=m+47|0;g=a+j|0;f=0-a|0;k=g&f;if(k>>>0<=m>>>0){v=0;S=w;return v|0}a=b[5939]|0;if(a|0?(l=b[5937]|0,n=l+k|0,n>>>0<=l>>>0|n>>>0>a>>>0):0){v=0;S=w;return v|0}d:do if(!(b[5940]&4)){d=b[5835]|0;e:do if(d){e=23764;while(1){n=b[e>>2]|0;if(n>>>0<=d>>>0?(n+(b[e+4>>2]|0)|0)>>>0>d>>>0:0)break;a=b[e+8>>2]|0;if(!a){q=128;break e}else e=a}c=g-h&f;if(c>>>0<2147483647){a=id(c|0)|0;if((a|0)==((b[e>>2]|0)+(b[e+4>>2]|0)|0)){if((a|0)!=(-1|0)){h=c;g=a;q=145;break d}}else{e=a;q=136}}else c=0}else q=128;while(0);do if((q|0)==128){d=id(0)|0;if((d|0)!=(-1|0)?(c=d,o=b[5948]|0,p=o+-1|0,c=((p&c|0)==0?0:(p+c&0-o)-c|0)+k|0,o=b[5937]|0,p=c+o|0,c>>>0>m>>>0&c>>>0<2147483647):0){n=b[5939]|0;if(n|0?p>>>0<=o>>>0|p>>>0>n>>>0:0){c=0;break}a=id(c|0)|0;if((a|0)==(d|0)){h=c;g=d;q=145;break d}else{e=a;q=136}}else c=0}while(0);do if((q|0)==136){d=0-c|0;if(!(i>>>0>c>>>0&(c>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){c=0;break}else{h=c;g=e;q=145;break d}a=b[5949]|0;a=j-c+a&0-a;if(a>>>0>=2147483647){h=c;g=e;q=145;break d}if((id(a|0)|0)==(-1|0)){id(d|0)|0;c=0;break}else{h=a+c|0;g=e;q=145;break d}}while(0);b[5940]=b[5940]|4;q=143}else{c=0;q=143}while(0);if(((q|0)==143?k>>>0<2147483647:0)?(t=id(k|0)|0,p=id(0)|0,r=p-t|0,s=r>>>0>(m+40|0)>>>0,!((t|0)==(-1|0)|s^1|t>>>0

>>0&((t|0)!=(-1|0)&(p|0)!=(-1|0))^1)):0){h=s?r:c;g=t;q=145}if((q|0)==145){c=(b[5937]|0)+h|0;b[5937]=c;if(c>>>0>(b[5938]|0)>>>0)b[5938]=c;j=b[5835]|0;f:do if(j){c=23764;while(1){a=b[c>>2]|0;d=b[c+4>>2]|0;if((g|0)==(a+d|0)){q=154;break}e=b[c+8>>2]|0;if(!e)break;else c=e}if(((q|0)==154?(u=c+4|0,(b[c+12>>2]&8|0)==0):0)?g>>>0>j>>>0&a>>>0<=j>>>0:0){b[u>>2]=d+h;v=(b[5832]|0)+h|0;t=j+8|0;t=(t&7|0)==0?0:0-t&7;u=j+t|0;t=v-t|0;b[5835]=u;b[5832]=t;b[u+4>>2]=t|1;b[j+v+4>>2]=40;b[5836]=b[5951];break}if(g>>>0<(b[5833]|0)>>>0)b[5833]=g;d=g+h|0;c=23764;while(1){if((b[c>>2]|0)==(d|0)){q=162;break}a=b[c+8>>2]|0;if(!a)break;else c=a}if((q|0)==162?(b[c+12>>2]&8|0)==0:0){b[c>>2]=g;l=c+4|0;b[l>>2]=(b[l>>2]|0)+h;l=g+8|0;l=g+((l&7|0)==0?0:0-l&7)|0;c=d+8|0;c=d+((c&7|0)==0?0:0-c&7)|0;k=l+m|0;i=c-l-m|0;b[l+4>>2]=m|3;g:do if((j|0)==(c|0)){v=(b[5832]|0)+i|0;b[5832]=v;b[5835]=k;b[k+4>>2]=v|1}else{if((b[5834]|0)==(c|0)){v=(b[5831]|0)+i|0;b[5831]=v;b[5834]=k;b[k+4>>2]=v|1;b[k+v>>2]=v;break}a=b[c+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;h:do if(a>>>0<256){a=b[c+8>>2]|0;d=b[c+12>>2]|0;if((d|0)==(a|0)){b[5829]=b[5829]&~(1<>2]=d;b[d+8>>2]=a;break}}else{g=b[c+24>>2]|0;a=b[c+12>>2]|0;do if((a|0)==(c|0)){d=c+16|0;e=d+4|0;a=b[e>>2]|0;if(!a){a=b[d>>2]|0;if(!a){a=0;break}}else d=e;while(1){f=a+20|0;e=b[f>>2]|0;if(!e){f=a+16|0;e=b[f>>2]|0;if(!e)break;else{a=e;d=f}}else{a=e;d=f}}b[d>>2]=0}else{v=b[c+8>>2]|0;b[v+12>>2]=a;b[a+8>>2]=v}while(0);if(!g)break;d=b[c+28>>2]|0;e=23620+(d<<2)|0;do if((b[e>>2]|0)!=(c|0)){v=g+16|0;b[((b[v>>2]|0)==(c|0)?v:g+20|0)>>2]=a;if(!a)break h}else{b[e>>2]=a;if(a|0)break;b[5830]=b[5830]&~(1<>2]=g;d=c+16|0;e=b[d>>2]|0;if(e|0){b[a+16>>2]=e;b[e+24>>2]=a}d=b[d+4>>2]|0;if(!d)break;b[a+20>>2]=d;b[d+24>>2]=a}while(0);c=c+h|0;f=h+i|0}else f=i;c=c+4|0;b[c>>2]=b[c>>2]&-2;b[k+4>>2]=f|1;b[k+f>>2]=f;c=f>>>3;if(f>>>0<256){d=23356+(c<<1<<2)|0;a=b[5829]|0;c=1<>2]|0}b[a>>2]=k;b[c+12>>2]=k;b[k+8>>2]=c;b[k+12>>2]=d;break}c=f>>>8;do if(!c)e=0;else{if(f>>>0>16777215){e=31;break}u=(c+1048320|0)>>>16&8;v=c<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=f>>>(e+7|0)&1|e<<1}while(0);c=23620+(e<<2)|0;b[k+28>>2]=e;a=k+16|0;b[a+4>>2]=0;b[a>>2]=0;a=b[5830]|0;d=1<>2]=k;b[k+24>>2]=c;b[k+12>>2]=k;b[k+8>>2]=k;break}c=b[c>>2]|0;i:do if((b[c+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=c+16+(e>>>31<<2)|0;a=b[d>>2]|0;if(!a)break;if((b[a+4>>2]&-8|0)==(f|0)){c=a;break i}else{e=e<<1;c=a}}b[d>>2]=k;b[k+24>>2]=c;b[k+12>>2]=k;b[k+8>>2]=k;break g}while(0);u=c+8|0;v=b[u>>2]|0;b[v+12>>2]=k;b[u>>2]=k;b[k+8>>2]=v;b[k+12>>2]=c;b[k+24>>2]=0}while(0);v=l+8|0;S=w;return v|0}c=23764;while(1){a=b[c>>2]|0;if(a>>>0<=j>>>0?(v=a+(b[c+4>>2]|0)|0,v>>>0>j>>>0):0)break;c=b[c+8>>2]|0}f=v+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0>>0?j:a;c=a+8|0;d=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=d-t|0;b[5835]=u;b[5832]=t;b[u+4>>2]=t|1;b[g+d+4>>2]=40;b[5836]=b[5951];d=a+4|0;b[d>>2]=27;b[c>>2]=b[5941];b[c+4>>2]=b[5942];b[c+8>>2]=b[5943];b[c+12>>2]=b[5944];b[5941]=g;b[5942]=h;b[5944]=0;b[5943]=c;c=a+24|0;do{u=c;c=c+4|0;b[c>>2]=7}while((u+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;b[d>>2]=b[d>>2]&-2;b[j+4>>2]=g|1;b[a>>2]=g;c=g>>>3;if(g>>>0<256){d=23356+(c<<1<<2)|0;a=b[5829]|0;c=1<>2]|0}b[a>>2]=j;b[c+12>>2]=j;b[j+8>>2]=c;b[j+12>>2]=d;break}c=g>>>8;if(c)if(g>>>0>16777215)e=31;else{u=(c+1048320|0)>>>16&8;v=c<>>16&4;v=v<>>16&2;e=14-(t|u|e)+(v<>>15)|0;e=g>>>(e+7|0)&1|e<<1}else e=0;d=23620+(e<<2)|0;b[j+28>>2]=e;b[j+20>>2]=0;b[f>>2]=0;c=b[5830]|0;a=1<>2]=j;b[j+24>>2]=d;b[j+12>>2]=j;b[j+8>>2]=j;break}c=b[d>>2]|0;j:do if((b[c+4>>2]&-8|0)!=(g|0)){e=g<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=c+16+(e>>>31<<2)|0;a=b[d>>2]|0;if(!a)break;if((b[a+4>>2]&-8|0)==(g|0)){c=a;break j}else{e=e<<1;c=a}}b[d>>2]=j;b[j+24>>2]=c;b[j+12>>2]=j;b[j+8>>2]=j;break f}while(0);u=c+8|0;v=b[u>>2]|0;b[v+12>>2]=j;b[u>>2]=j;b[j+8>>2]=v;b[j+12>>2]=c;b[j+24>>2]=0}}else{v=b[5833]|0;if((v|0)==0|g>>>0>>0)b[5833]=g;b[5941]=g;b[5942]=h;b[5944]=0;b[5838]=b[5947];b[5837]=-1;b[5842]=23356;b[5841]=23356;b[5844]=23364;b[5843]=23364;b[5846]=23372;b[5845]=23372;b[5848]=23380;b[5847]=23380;b[5850]=23388;b[5849]=23388;b[5852]=23396;b[5851]=23396;b[5854]=23404;b[5853]=23404;b[5856]=23412;b[5855]=23412;b[5858]=23420;b[5857]=23420;b[5860]=23428;b[5859]=23428;b[5862]=23436;b[5861]=23436;b[5864]=23444;b[5863]=23444;b[5866]=23452;b[5865]=23452;b[5868]=23460;b[5867]=23460;b[5870]=23468;b[5869]=23468;b[5872]=23476;b[5871]=23476;b[5874]=23484;b[5873]=23484;b[5876]=23492;b[5875]=23492;b[5878]=23500;b[5877]=23500;b[5880]=23508;b[5879]=23508;b[5882]=23516;b[5881]=23516;b[5884]=23524;b[5883]=23524;b[5886]=23532;b[5885]=23532;b[5888]=23540;b[5887]=23540;b[5890]=23548;b[5889]=23548;b[5892]=23556;b[5891]=23556;b[5894]=23564;b[5893]=23564;b[5896]=23572;b[5895]=23572;b[5898]=23580;b[5897]=23580;b[5900]=23588;b[5899]=23588;b[5902]=23596;b[5901]=23596;b[5904]=23604;b[5903]=23604;v=h+-40|0;t=g+8|0;t=(t&7|0)==0?0:0-t&7;u=g+t|0;t=v-t|0;b[5835]=u;b[5832]=t;b[u+4>>2]=t|1;b[g+v+4>>2]=40;b[5836]=b[5951]}while(0);c=b[5832]|0;if(c>>>0>m>>>0){t=c-m|0;b[5832]=t;v=b[5835]|0;u=v+m|0;b[5835]=u;b[u+4>>2]=t|1;b[v+4>>2]=m|3;v=v+8|0;S=w;return v|0}}v=Sc()|0;b[v>>2]=12;v=0;S=w;return v|0}function Wc(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;d=a+-8|0;f=b[5833]|0;a=b[a+-4>>2]|0;c=a&-8;j=d+c|0;do if(!(a&1)){e=b[d>>2]|0;if(!(a&3))return;h=d+(0-e)|0;g=e+c|0;if(h>>>0>>0)return;if((b[5834]|0)==(h|0)){a=j+4|0;c=b[a>>2]|0;if((c&3|0)!=3){i=h;c=g;break}b[5831]=g;b[a>>2]=c&-2;b[h+4>>2]=g|1;b[h+g>>2]=g;return}d=e>>>3;if(e>>>0<256){a=b[h+8>>2]|0;c=b[h+12>>2]|0;if((c|0)==(a|0)){b[5829]=b[5829]&~(1<>2]=c;b[c+8>>2]=a;i=h;c=g;break}}f=b[h+24>>2]|0;a=b[h+12>>2]|0;do if((a|0)==(h|0)){c=h+16|0;d=c+4|0;a=b[d>>2]|0;if(!a){a=b[c>>2]|0;if(!a){a=0;break}}else c=d;while(1){e=a+20|0;d=b[e>>2]|0;if(!d){e=a+16|0;d=b[e>>2]|0;if(!d)break;else{a=d;c=e}}else{a=d;c=e}}b[c>>2]=0}else{i=b[h+8>>2]|0;b[i+12>>2]=a;b[a+8>>2]=i}while(0);if(f){c=b[h+28>>2]|0;d=23620+(c<<2)|0;if((b[d>>2]|0)==(h|0)){b[d>>2]=a;if(!a){b[5830]=b[5830]&~(1<>2]|0)==(h|0)?i:f+20|0)>>2]=a;if(!a){i=h;c=g;break}}b[a+24>>2]=f;c=h+16|0;d=b[c>>2]|0;if(d|0){b[a+16>>2]=d;b[d+24>>2]=a}c=b[c+4>>2]|0;if(c){b[a+20>>2]=c;b[c+24>>2]=a;i=h;c=g}else{i=h;c=g}}else{i=h;c=g}}else{i=d;h=d}while(0);if(h>>>0>=j>>>0)return;a=j+4|0;e=b[a>>2]|0;if(!(e&1))return;if(!(e&2)){if((b[5835]|0)==(j|0)){j=(b[5832]|0)+c|0;b[5832]=j;b[5835]=i;b[i+4>>2]=j|1;if((i|0)!=(b[5834]|0))return;b[5834]=0;b[5831]=0;return}if((b[5834]|0)==(j|0)){j=(b[5831]|0)+c|0;b[5831]=j;b[5834]=h;b[i+4>>2]=j|1;b[h+j>>2]=j;return}f=(e&-8)+c|0;d=e>>>3;do if(e>>>0<256){c=b[j+8>>2]|0;a=b[j+12>>2]|0;if((a|0)==(c|0)){b[5829]=b[5829]&~(1<>2]=a;b[a+8>>2]=c;break}}else{g=b[j+24>>2]|0;a=b[j+12>>2]|0;do if((a|0)==(j|0)){c=j+16|0;d=c+4|0;a=b[d>>2]|0;if(!a){a=b[c>>2]|0;if(!a){d=0;break}}else c=d;while(1){e=a+20|0;d=b[e>>2]|0;if(!d){e=a+16|0;d=b[e>>2]|0;if(!d)break;else{a=d;c=e}}else{a=d;c=e}}b[c>>2]=0;d=a}else{d=b[j+8>>2]|0;b[d+12>>2]=a;b[a+8>>2]=d;d=a}while(0);if(g|0){a=b[j+28>>2]|0;c=23620+(a<<2)|0;if((b[c>>2]|0)==(j|0)){b[c>>2]=d;if(!d){b[5830]=b[5830]&~(1<>2]|0)==(j|0)?e:g+20|0)>>2]=d;if(!d)break}b[d+24>>2]=g;a=j+16|0;c=b[a>>2]|0;if(c|0){b[d+16>>2]=c;b[c+24>>2]=d}a=b[a+4>>2]|0;if(a|0){b[d+20>>2]=a;b[a+24>>2]=d}}}while(0);b[i+4>>2]=f|1;b[h+f>>2]=f;if((i|0)==(b[5834]|0)){b[5831]=f;return}}else{b[a>>2]=e&-2;b[i+4>>2]=c|1;b[h+c>>2]=c;f=c}a=f>>>3;if(f>>>0<256){d=23356+(a<<1<<2)|0;c=b[5829]|0;a=1<>2]|0}b[c>>2]=i;b[a+12>>2]=i;b[i+8>>2]=a;b[i+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)e=31;else{h=(a+1048320|0)>>>16&8;j=a<>>16&4;j=j<>>16&2;e=14-(g|h|e)+(j<>>15)|0;e=f>>>(e+7|0)&1|e<<1}else e=0;a=23620+(e<<2)|0;b[i+28>>2]=e;b[i+20>>2]=0;b[i+16>>2]=0;c=b[5830]|0;d=1<>2]=i;b[i+24>>2]=a;b[i+12>>2]=i;b[i+8>>2]=i}else{a=b[a>>2]|0;b:do if((b[a+4>>2]&-8|0)!=(f|0)){e=f<<((e|0)==31?0:25-(e>>>1)|0);while(1){d=a+16+(e>>>31<<2)|0;c=b[d>>2]|0;if(!c)break;if((b[c+4>>2]&-8|0)==(f|0)){a=c;break b}else{e=e<<1;a=c}}b[d>>2]=i;b[i+24>>2]=a;b[i+12>>2]=i;b[i+8>>2]=i;break a}while(0);h=a+8|0;j=b[h>>2]|0;b[j+12>>2]=i;b[h>>2]=i;b[i+8>>2]=j;b[i+12>>2]=a;b[i+24>>2]=0}while(0);j=(b[5837]|0)+-1|0;b[5837]=j;if(j|0)return;a=23772;while(1){a=b[a>>2]|0;if(!a)break;else a=a+8|0}b[5837]=-1;return}function Xc(a,c){a=a|0;c=c|0;var d=0;if(a){d=B(c,a)|0;if((c|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(c|0)?d:-1}else d=0;a=Vc(d)|0;if(!a)return a|0;if(!(b[a+-4>>2]&3))return a|0;gd(a|0,0,d|0)|0;return a|0}function Yc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (F(b+d+(c>>>0>>0|0)>>>0|0),c|0)|0}function Zc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (F(d|0),a-c>>>0|0)|0}function _c(a){a=a|0;return (a?31-(D(a^a-1)|0)|0:32)|0}function $c(a,c,d,e,f){a=a|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=c;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){b[f>>2]=(l>>>0)%(h>>>0);b[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (F(n|0),f)|0}else{if(!g){n=0;f=0;return (F(n|0),f)|0}b[f>>2]=a|0;b[f+4>>2]=c&0;n=0;f=0;return (F(n|0),f)|0}}g=(i|0)==0;do if(h){if(!g){g=(D(i|0)|0)-(D(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;c=g-31>>31;h=m;a=l>>>(m>>>0)&c|k<>>(m>>>0)&c;g=0;i=l<>2]=a|0;b[f+4>>2]=j|c&0;n=0;f=0;return (F(n|0),f)|0}g=h-1|0;if(g&h|0){i=(D(h|0)|0)+33-(D(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;c=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&c;c=c&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(f|0){b[f>>2]=g&l;b[f+4>>2]=0}if((h|0)==1){o=j|c&0;p=a|0|0;return (F(o|0),p)|0}else{p=_c(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (F(o|0),p)|0}}else{if(g){if(f|0){b[f>>2]=(k>>>0)%(h>>>0);b[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (F(o|0),p)|0}if(!l){if(f|0){b[f>>2]=0;b[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (F(o|0),p)|0}g=i-1|0;if(!(g&i)){if(f|0){b[f>>2]=a|0;b[f+4>>2]=g&k|c&0}o=0;p=k>>>((_c(i|0)|0)>>>0);return (F(o|0),p)|0}g=(D(i|0)|0)-(D(k|0)|0)|0;if(g>>>0<=30){c=g+1|0;i=31-g|0;h=c;a=k<>>(c>>>0);c=k>>>(c>>>0);g=0;i=l<>2]=a|0;b[f+4>>2]=j|c&0;o=0;p=0;return (F(o|0),p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=Yc(m|0,l|0,-1,-1)|0;d=G()|0;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|c<<1|0;Zc(k|0,d|0,e|0,n|0)|0;p=G()|0;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=Zc(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;c=G()|0;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){b[f>>2]=a;b[f+4>>2]=c}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (F(o|0),p)|0}function ad(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=S;S=S+16|0;f=g|0;$c(a,c,d,e,f)|0;S=g;return (F(b[f+4>>2]|0),b[f>>2]|0)|0}function bd(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){F(b>>>c|0);return a>>>c|(b&(1<>>c-32|0}function cd(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){F(b<>>32-c|0);return a<=0.0?+p(a+.5):+A(a-.5)}function fd(c,d,e){c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192){K(c|0,d|0,e|0)|0;return c|0}h=c|0;g=c+e|0;if((c&3)==(d&3)){while(c&3){if(!e)return h|0;a[c>>0]=a[d>>0]|0;c=c+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((c|0)<=(f|0)){b[c>>2]=b[d>>2];b[c+4>>2]=b[d+4>>2];b[c+8>>2]=b[d+8>>2];b[c+12>>2]=b[d+12>>2];b[c+16>>2]=b[d+16>>2];b[c+20>>2]=b[d+20>>2];b[c+24>>2]=b[d+24>>2];b[c+28>>2]=b[d+28>>2];b[c+32>>2]=b[d+32>>2];b[c+36>>2]=b[d+36>>2];b[c+40>>2]=b[d+40>>2];b[c+44>>2]=b[d+44>>2];b[c+48>>2]=b[d+48>>2];b[c+52>>2]=b[d+52>>2];b[c+56>>2]=b[d+56>>2];b[c+60>>2]=b[d+60>>2];c=c+64|0;d=d+64|0}while((c|0)<(e|0)){b[c>>2]=b[d>>2];c=c+4|0;d=d+4|0}}else{e=g-4|0;while((c|0)<(e|0)){a[c>>0]=a[d>>0]|0;a[c+1>>0]=a[d+1>>0]|0;a[c+2>>0]=a[d+2>>0]|0;a[c+3>>0]=a[d+3>>0]|0;c=c+4|0;d=d+4|0}}while((c|0)<(g|0)){a[c>>0]=a[d>>0]|0;c=c+1|0;d=d+1|0}return h|0}function gd(c,d,e){c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=c+e|0;d=d&255;if((e|0)>=67){while(c&3){a[c>>0]=d;c=c+1|0}f=h&-4|0;i=d|d<<8|d<<16|d<<24;g=f-64|0;while((c|0)<=(g|0)){b[c>>2]=i;b[c+4>>2]=i;b[c+8>>2]=i;b[c+12>>2]=i;b[c+16>>2]=i;b[c+20>>2]=i;b[c+24>>2]=i;b[c+28>>2]=i;b[c+32>>2]=i;b[c+36>>2]=i;b[c+40>>2]=i;b[c+44>>2]=i;b[c+48>>2]=i;b[c+52>>2]=i;b[c+56>>2]=i;b[c+60>>2]=i;c=c+64|0}while((c|0)<(f|0)){b[c>>2]=i;c=c+4|0}}while((c|0)<(h|0)){a[c>>0]=d;c=c+1|0}return h-e|0}function hd(a){a=+a;return a>=0.0?+p(a+.5):+A(a-.5)}function id(a){a=a|0;var c=0,d=0,e=0;e=J()|0;d=b[g>>2]|0;c=d+a|0;if((a|0)>0&(c|0)<(d|0)|(c|0)<0){M(c|0)|0;I(12);return -1}if((c|0)>(e|0))if(!(L(c|0)|0)){I(12);return -1}b[g>>2]=c;return d|0}\n\n// EMSCRIPTEN_END_FUNCS\nreturn{___uremdi3:ad,_bitshift64Lshr:bd,_bitshift64Shl:cd,_calloc:Xc,_cellAreaKm2:ub,_cellAreaM2:vb,_cellAreaRads2:tb,_compact:Gb,_destroyLinkedPolygon:ic,_edgeLengthKm:pb,_edgeLengthM:qb,_emscripten_replace_memory:V,_exactEdgeLengthKm:xb,_exactEdgeLengthM:yb,_exactEdgeLengthRads:wb,_experimentalH3ToLocalIj:nc,_experimentalLocalIjToH3:oc,_free:Wc,_geoToH3:Rb,_getDestinationH3IndexFromUnidirectionalEdge:bc,_getH3IndexesFromUnidirectionalEdge:dc,_getH3UnidirectionalEdge:$b,_getH3UnidirectionalEdgeBoundary:fc,_getH3UnidirectionalEdgesFromHexagon:ec,_getOriginH3IndexFromUnidirectionalEdge:ac,_getPentagonIndexes:Zb,_getRes0Indexes:va,_h3Distance:pc,_h3GetBaseCell:zb,_h3GetFaces:Xb,_h3IndexesAreNeighbors:_b,_h3IsPentagon:Eb,_h3IsResClassIII:Jb,_h3IsValid:Ab,_h3Line:rc,_h3LineSize:qc,_h3SetToLinkedGeo:ka,_h3ToCenterChild:Fb,_h3ToChildren:Db,_h3ToGeo:Ub,_h3ToGeoBoundary:Vb,_h3ToParent:Bb,_h3UnidirectionalEdgeIsValid:cc,_hexAreaKm2:nb,_hexAreaM2:ob,_hexRing:ea,_i64Subtract:Zc,_kRing:$,_kRingDistances:aa,_llvm_minnum_f64:dd,_llvm_round_f64:ed,_malloc:Vc,_maxFaceCount:Wb,_maxH3ToChildrenSize:Cb,_maxKringSize:_,_maxPolyfillSize:fa,_maxUncompactSize:Ib,_memcpy:fd,_memset:gd,_numHexagons:rb,_pentagonIndexCount:Yb,_pointDistKm:jb,_pointDistM:kb,_pointDistRads:ib,_polyfill:ga,_res0IndexCount:ua,_round:hd,_sbrk:id,_sizeOfCoordIJ:Dc,_sizeOfGeoBoundary:zc,_sizeOfGeoCoord:yc,_sizeOfGeoPolygon:Bc,_sizeOfGeofence:Ac,_sizeOfH3Index:xc,_sizeOfLinkedGeoPolygon:Cc,_uncompact:Hb,establishStackSpace:Z,stackAlloc:W,stackRestore:Y,stackSave:X}})\n\n\n// EMSCRIPTEN_END_ASM\n(asmGlobalArg,asmLibraryArg,buffer);var ___uremdi3=Module[\"___uremdi3\"]=asm[\"___uremdi3\"];var _bitshift64Lshr=Module[\"_bitshift64Lshr\"]=asm[\"_bitshift64Lshr\"];var _bitshift64Shl=Module[\"_bitshift64Shl\"]=asm[\"_bitshift64Shl\"];var _calloc=Module[\"_calloc\"]=asm[\"_calloc\"];var _cellAreaKm2=Module[\"_cellAreaKm2\"]=asm[\"_cellAreaKm2\"];var _cellAreaM2=Module[\"_cellAreaM2\"]=asm[\"_cellAreaM2\"];var _cellAreaRads2=Module[\"_cellAreaRads2\"]=asm[\"_cellAreaRads2\"];var _compact=Module[\"_compact\"]=asm[\"_compact\"];var _destroyLinkedPolygon=Module[\"_destroyLinkedPolygon\"]=asm[\"_destroyLinkedPolygon\"];var _edgeLengthKm=Module[\"_edgeLengthKm\"]=asm[\"_edgeLengthKm\"];var _edgeLengthM=Module[\"_edgeLengthM\"]=asm[\"_edgeLengthM\"];var _emscripten_replace_memory=Module[\"_emscripten_replace_memory\"]=asm[\"_emscripten_replace_memory\"];var _exactEdgeLengthKm=Module[\"_exactEdgeLengthKm\"]=asm[\"_exactEdgeLengthKm\"];var _exactEdgeLengthM=Module[\"_exactEdgeLengthM\"]=asm[\"_exactEdgeLengthM\"];var _exactEdgeLengthRads=Module[\"_exactEdgeLengthRads\"]=asm[\"_exactEdgeLengthRads\"];var _experimentalH3ToLocalIj=Module[\"_experimentalH3ToLocalIj\"]=asm[\"_experimentalH3ToLocalIj\"];var _experimentalLocalIjToH3=Module[\"_experimentalLocalIjToH3\"]=asm[\"_experimentalLocalIjToH3\"];var _free=Module[\"_free\"]=asm[\"_free\"];var _geoToH3=Module[\"_geoToH3\"]=asm[\"_geoToH3\"];var _getDestinationH3IndexFromUnidirectionalEdge=Module[\"_getDestinationH3IndexFromUnidirectionalEdge\"]=asm[\"_getDestinationH3IndexFromUnidirectionalEdge\"];var _getH3IndexesFromUnidirectionalEdge=Module[\"_getH3IndexesFromUnidirectionalEdge\"]=asm[\"_getH3IndexesFromUnidirectionalEdge\"];var _getH3UnidirectionalEdge=Module[\"_getH3UnidirectionalEdge\"]=asm[\"_getH3UnidirectionalEdge\"];var _getH3UnidirectionalEdgeBoundary=Module[\"_getH3UnidirectionalEdgeBoundary\"]=asm[\"_getH3UnidirectionalEdgeBoundary\"];var _getH3UnidirectionalEdgesFromHexagon=Module[\"_getH3UnidirectionalEdgesFromHexagon\"]=asm[\"_getH3UnidirectionalEdgesFromHexagon\"];var _getOriginH3IndexFromUnidirectionalEdge=Module[\"_getOriginH3IndexFromUnidirectionalEdge\"]=asm[\"_getOriginH3IndexFromUnidirectionalEdge\"];var _getPentagonIndexes=Module[\"_getPentagonIndexes\"]=asm[\"_getPentagonIndexes\"];var _getRes0Indexes=Module[\"_getRes0Indexes\"]=asm[\"_getRes0Indexes\"];var _h3Distance=Module[\"_h3Distance\"]=asm[\"_h3Distance\"];var _h3GetBaseCell=Module[\"_h3GetBaseCell\"]=asm[\"_h3GetBaseCell\"];var _h3GetFaces=Module[\"_h3GetFaces\"]=asm[\"_h3GetFaces\"];var _h3IndexesAreNeighbors=Module[\"_h3IndexesAreNeighbors\"]=asm[\"_h3IndexesAreNeighbors\"];var _h3IsPentagon=Module[\"_h3IsPentagon\"]=asm[\"_h3IsPentagon\"];var _h3IsResClassIII=Module[\"_h3IsResClassIII\"]=asm[\"_h3IsResClassIII\"];var _h3IsValid=Module[\"_h3IsValid\"]=asm[\"_h3IsValid\"];var _h3Line=Module[\"_h3Line\"]=asm[\"_h3Line\"];var _h3LineSize=Module[\"_h3LineSize\"]=asm[\"_h3LineSize\"];var _h3SetToLinkedGeo=Module[\"_h3SetToLinkedGeo\"]=asm[\"_h3SetToLinkedGeo\"];var _h3ToCenterChild=Module[\"_h3ToCenterChild\"]=asm[\"_h3ToCenterChild\"];var _h3ToChildren=Module[\"_h3ToChildren\"]=asm[\"_h3ToChildren\"];var _h3ToGeo=Module[\"_h3ToGeo\"]=asm[\"_h3ToGeo\"];var _h3ToGeoBoundary=Module[\"_h3ToGeoBoundary\"]=asm[\"_h3ToGeoBoundary\"];var _h3ToParent=Module[\"_h3ToParent\"]=asm[\"_h3ToParent\"];var _h3UnidirectionalEdgeIsValid=Module[\"_h3UnidirectionalEdgeIsValid\"]=asm[\"_h3UnidirectionalEdgeIsValid\"];var _hexAreaKm2=Module[\"_hexAreaKm2\"]=asm[\"_hexAreaKm2\"];var _hexAreaM2=Module[\"_hexAreaM2\"]=asm[\"_hexAreaM2\"];var _hexRing=Module[\"_hexRing\"]=asm[\"_hexRing\"];var _i64Subtract=Module[\"_i64Subtract\"]=asm[\"_i64Subtract\"];var _kRing=Module[\"_kRing\"]=asm[\"_kRing\"];var _kRingDistances=Module[\"_kRingDistances\"]=asm[\"_kRingDistances\"];var _llvm_minnum_f64=Module[\"_llvm_minnum_f64\"]=asm[\"_llvm_minnum_f64\"];var _llvm_round_f64=Module[\"_llvm_round_f64\"]=asm[\"_llvm_round_f64\"];var _malloc=Module[\"_malloc\"]=asm[\"_malloc\"];var _maxFaceCount=Module[\"_maxFaceCount\"]=asm[\"_maxFaceCount\"];var _maxH3ToChildrenSize=Module[\"_maxH3ToChildrenSize\"]=asm[\"_maxH3ToChildrenSize\"];var _maxKringSize=Module[\"_maxKringSize\"]=asm[\"_maxKringSize\"];var _maxPolyfillSize=Module[\"_maxPolyfillSize\"]=asm[\"_maxPolyfillSize\"];var _maxUncompactSize=Module[\"_maxUncompactSize\"]=asm[\"_maxUncompactSize\"];var _memcpy=Module[\"_memcpy\"]=asm[\"_memcpy\"];var _memset=Module[\"_memset\"]=asm[\"_memset\"];var _numHexagons=Module[\"_numHexagons\"]=asm[\"_numHexagons\"];var _pentagonIndexCount=Module[\"_pentagonIndexCount\"]=asm[\"_pentagonIndexCount\"];var _pointDistKm=Module[\"_pointDistKm\"]=asm[\"_pointDistKm\"];var _pointDistM=Module[\"_pointDistM\"]=asm[\"_pointDistM\"];var _pointDistRads=Module[\"_pointDistRads\"]=asm[\"_pointDistRads\"];var _polyfill=Module[\"_polyfill\"]=asm[\"_polyfill\"];var _res0IndexCount=Module[\"_res0IndexCount\"]=asm[\"_res0IndexCount\"];var _round=Module[\"_round\"]=asm[\"_round\"];var _sbrk=Module[\"_sbrk\"]=asm[\"_sbrk\"];var _sizeOfCoordIJ=Module[\"_sizeOfCoordIJ\"]=asm[\"_sizeOfCoordIJ\"];var _sizeOfGeoBoundary=Module[\"_sizeOfGeoBoundary\"]=asm[\"_sizeOfGeoBoundary\"];var _sizeOfGeoCoord=Module[\"_sizeOfGeoCoord\"]=asm[\"_sizeOfGeoCoord\"];var _sizeOfGeoPolygon=Module[\"_sizeOfGeoPolygon\"]=asm[\"_sizeOfGeoPolygon\"];var _sizeOfGeofence=Module[\"_sizeOfGeofence\"]=asm[\"_sizeOfGeofence\"];var _sizeOfH3Index=Module[\"_sizeOfH3Index\"]=asm[\"_sizeOfH3Index\"];var _sizeOfLinkedGeoPolygon=Module[\"_sizeOfLinkedGeoPolygon\"]=asm[\"_sizeOfLinkedGeoPolygon\"];var _uncompact=Module[\"_uncompact\"]=asm[\"_uncompact\"];var establishStackSpace=Module[\"establishStackSpace\"]=asm[\"establishStackSpace\"];var stackAlloc=Module[\"stackAlloc\"]=asm[\"stackAlloc\"];var stackRestore=Module[\"stackRestore\"]=asm[\"stackRestore\"];var stackSave=Module[\"stackSave\"]=asm[\"stackSave\"];Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"setValue\"]=setValue;Module[\"getValue\"]=getValue;Module[\"getTempRet0\"]=getTempRet0;if(memoryInitializer){if(!isDataURI(memoryInitializer)){memoryInitializer=locateFile(memoryInitializer)}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=readBinary(memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency(\"memory initializer\");var applyMemoryInitializer=function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module[\"memoryInitializerRequest\"])delete Module[\"memoryInitializerRequest\"].response;removeRunDependency(\"memory initializer\")};var doBrowserLoad=function(){readAsync(memoryInitializer,applyMemoryInitializer,function(){throw\"could not load memory initializer \"+memoryInitializer})};var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module[\"memoryInitializerRequest\"]){var useRequest=function(){var request=Module[\"memoryInitializerRequest\"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module[\"memoryInitializerRequestURL\"]);if(data){response=data.buffer}else{console.warn(\"a problem seems to have happened with Module.memoryInitializerRequest, status: \"+request.status+\", retrying \"+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)};if(Module[\"memoryInitializerRequest\"].response){setTimeout(useRequest,0)}else{Module[\"memoryInitializerRequest\"].addEventListener(\"load\",useRequest)}}else{doBrowserLoad()}}}var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;throw\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\"}Module[\"abort\"]=abort;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}noExitRuntime=true;run();\n\n\n\n return libh3\n}\n)(typeof libh3 === 'object' ? libh3 : {});\nexport default libh3;","/*\n * Copyright 2018-2019 Uber Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Define the C bindings for the h3 library\n\n// Add some aliases to make the function definitions more intelligible\nconst NUMBER = 'number';\nconst BOOLEAN = NUMBER;\nconst H3_LOWER = NUMBER;\nconst H3_UPPER = NUMBER;\nconst RESOLUTION = NUMBER;\nconst POINTER = NUMBER;\n\n// Define the bindings to functions in the C lib. Functions are defined as\n// [name, return type, [arg types]]. You must run `npm run build-emscripten`\n// before new functions added here will be available.\nexport default [\n // The size functions are inserted via build/sizes.h\n ['sizeOfH3Index', NUMBER],\n ['sizeOfGeoCoord', NUMBER],\n ['sizeOfGeoBoundary', NUMBER],\n ['sizeOfGeoPolygon', NUMBER],\n ['sizeOfGeofence', NUMBER],\n ['sizeOfLinkedGeoPolygon', NUMBER],\n ['sizeOfCoordIJ', NUMBER],\n // The remaining functions are defined in the core lib in h3Api.h\n ['h3IsValid', BOOLEAN, [H3_LOWER, H3_UPPER]],\n ['geoToH3', H3_LOWER, [NUMBER, NUMBER, RESOLUTION]],\n ['h3ToGeo', null, [H3_LOWER, H3_UPPER, POINTER]],\n ['h3ToGeoBoundary', null, [H3_LOWER, H3_UPPER, POINTER]],\n ['maxKringSize', NUMBER, [NUMBER]],\n ['kRing', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER]],\n ['kRingDistances', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER, POINTER]],\n ['hexRing', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER]],\n ['maxPolyfillSize', NUMBER, [POINTER, RESOLUTION]],\n ['polyfill', null, [POINTER, RESOLUTION, POINTER]],\n ['h3SetToLinkedGeo', null, [POINTER, NUMBER, POINTER]],\n ['destroyLinkedPolygon', null, [POINTER]],\n ['compact', NUMBER, [POINTER, POINTER, NUMBER]],\n ['uncompact', NUMBER, [POINTER, NUMBER, POINTER, NUMBER, RESOLUTION]],\n ['maxUncompactSize', NUMBER, [POINTER, NUMBER, RESOLUTION]],\n ['h3IsPentagon', BOOLEAN, [H3_LOWER, H3_UPPER]],\n ['h3IsResClassIII', BOOLEAN, [H3_LOWER, H3_UPPER]],\n ['h3GetBaseCell', NUMBER, [H3_LOWER, H3_UPPER]],\n ['maxFaceCount', NUMBER, [H3_LOWER, H3_UPPER]],\n ['h3GetFaces', null, [H3_LOWER, H3_UPPER, POINTER]],\n ['h3ToParent', H3_LOWER, [H3_LOWER, H3_UPPER, RESOLUTION]],\n ['h3ToChildren', null, [H3_LOWER, H3_UPPER, RESOLUTION, POINTER]],\n ['h3ToCenterChild', H3_LOWER, [H3_LOWER, H3_UPPER, RESOLUTION]],\n ['maxH3ToChildrenSize', NUMBER, [H3_LOWER, H3_UPPER, RESOLUTION]],\n ['h3IndexesAreNeighbors', BOOLEAN, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]],\n ['getH3UnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]],\n ['getOriginH3IndexFromUnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER]],\n ['getDestinationH3IndexFromUnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER]],\n ['h3UnidirectionalEdgeIsValid', BOOLEAN, [H3_LOWER, H3_UPPER]],\n ['getH3IndexesFromUnidirectionalEdge', null, [H3_LOWER, H3_UPPER, POINTER]],\n ['getH3UnidirectionalEdgesFromHexagon', null, [H3_LOWER, H3_UPPER, POINTER]],\n ['getH3UnidirectionalEdgeBoundary', null, [H3_LOWER, H3_UPPER, POINTER]],\n ['h3Distance', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]],\n ['h3Line', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]],\n ['h3LineSize', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]],\n ['experimentalH3ToLocalIj', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]],\n ['experimentalLocalIjToH3', NUMBER, [H3_LOWER, H3_UPPER, POINTER, POINTER]],\n ['hexAreaM2', NUMBER, [RESOLUTION]],\n ['hexAreaKm2', NUMBER, [RESOLUTION]],\n ['edgeLengthM', NUMBER, [RESOLUTION]],\n ['edgeLengthKm', NUMBER, [RESOLUTION]],\n ['pointDistM', NUMBER, [POINTER, POINTER]],\n ['pointDistKm', NUMBER, [POINTER, POINTER]],\n ['pointDistRads', NUMBER, [POINTER, POINTER]],\n ['cellAreaM2', NUMBER, [H3_LOWER, H3_UPPER]],\n ['cellAreaKm2', NUMBER, [H3_LOWER, H3_UPPER]],\n ['cellAreaRads2', NUMBER, [H3_LOWER, H3_UPPER]],\n ['exactEdgeLengthM', NUMBER, [H3_LOWER, H3_UPPER]],\n ['exactEdgeLengthKm', NUMBER, [H3_LOWER, H3_UPPER]],\n ['exactEdgeLengthRads', NUMBER, [H3_LOWER, H3_UPPER]],\n ['numHexagons', NUMBER, [RESOLUTION]],\n ['getRes0Indexes', null, [POINTER]],\n ['res0IndexCount', NUMBER],\n ['getPentagonIndexes', null, [NUMBER, POINTER]],\n ['pentagonIndexCount', NUMBER]\n];\n","/*\n * Copyright 2018-2019 Uber Technologies, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module h3\n */\n\nimport C from '../out/libh3';\nimport BINDINGS from './bindings';\n\nconst H3 = {};\n\n// Create the bound functions themselves\nBINDINGS.forEach(function bind(def) {\n H3[def[0]] = C.cwrap(...def);\n});\n\n// Alias the hexidecimal base for legibility\nconst BASE_16 = 16;\n\n// ----------------------------------------------------------------------------\n// Byte size imports\n\nconst SZ_INT = 4;\nconst SZ_PTR = 4;\nconst SZ_DBL = 8;\nconst SZ_H3INDEX = H3.sizeOfH3Index();\nconst SZ_GEOCOORD = H3.sizeOfGeoCoord();\nconst SZ_GEOBOUNDARY = H3.sizeOfGeoBoundary();\nconst SZ_GEOPOLYGON = H3.sizeOfGeoPolygon();\nconst SZ_GEOFENCE = H3.sizeOfGeofence();\nconst SZ_LINKED_GEOPOLYGON = H3.sizeOfLinkedGeoPolygon();\nconst SZ_COORDIJ = H3.sizeOfCoordIJ();\n\n// ----------------------------------------------------------------------------\n// Custom types\n\n/**\n * 64-bit hexidecimal string representation of an H3 index\n * @static\n * @typedef {string} H3Index\n */\n\n/**\n * 64-bit hexidecimal string representation of an H3 index,\n * or two 32-bit integers in little endian order in an array.\n * @static\n * @typedef {string | number[]} H3IndexInput\n */\n\n/**\n * Coordinates as an `{i, j}` pair\n * @static\n * @typedef CoordIJ\n * @type {Object}\n * @property {number} i\n * @property {number} j\n */\n\n// ----------------------------------------------------------------------------\n// Unit constants\n\n/**\n * Length/Area units\n * @static\n * @typedef UNITS\n * @type {Object}\n * @property {string} m\n * @property {string} m2\n * @property {string} km\n * @property {string} km2\n * @property {string} rads\n * @property {string} rads2\n */\nexport const UNITS = {\n m: 'm',\n m2: 'm2',\n km: 'km',\n km2: 'km2',\n rads: 'rads',\n rads2: 'rads2'\n};\n\n// ----------------------------------------------------------------------------\n// Utilities and helpers\n\n/**\n * Validate a resolution, throwing an error if invalid\n * @private\n * @param {mixed} res Value to validate\n * @throws {Error} Error if invalid\n */\nfunction validateRes(res) {\n if (typeof res !== 'number' || res < 0 || res > 15 || Math.floor(res) !== res) {\n throw new Error(`Invalid resolution: ${res}`);\n }\n}\n\nconst INVALID_HEXIDECIMAL_CHAR = /[^0-9a-fA-F]/;\n\n/**\n * Convert an H3 index (64-bit hexidecimal string) into a \"split long\" - a pair of 32-bit ints\n * @private\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {number[]} A two-element array with 32 lower bits and 32 upper bits\n */\nfunction h3IndexToSplitLong(h3Index) {\n if (\n Array.isArray(h3Index) &&\n h3Index.length === 2 &&\n Number.isInteger(h3Index[0]) &&\n Number.isInteger(h3Index[1])\n ) {\n return h3Index;\n }\n if (typeof h3Index !== 'string' || INVALID_HEXIDECIMAL_CHAR.test(h3Index)) {\n return [0, 0];\n }\n const upper = parseInt(h3Index.substring(0, h3Index.length - 8), BASE_16);\n const lower = parseInt(h3Index.substring(h3Index.length - 8), BASE_16);\n return [lower, upper];\n}\n\n/**\n * Convert a 32-bit int to a hexdecimal string\n * @private\n * @param {number} num Integer to convert\n * @return {H3Index} Hexidecimal string\n */\nfunction hexFrom32Bit(num) {\n if (num >= 0) {\n return num.toString(BASE_16);\n }\n\n // Handle negative numbers\n num = num & 0x7fffffff;\n let tempStr = zeroPad(8, num.toString(BASE_16));\n const topNum = (parseInt(tempStr[0], BASE_16) + 8).toString(BASE_16);\n tempStr = topNum + tempStr.substring(1);\n return tempStr;\n}\n\n/**\n * Get a H3 index from a split long (pair of 32-bit ints)\n * @private\n * @param {number} lower Lower 32 bits\n * @param {number} upper Upper 32 bits\n * @return {H3Index} H3 index\n */\nfunction splitLongToh3Index(lower, upper) {\n return hexFrom32Bit(upper) + zeroPad(8, hexFrom32Bit(lower));\n}\n\n/**\n * Zero-pad a string to a given length\n * @private\n * @param {number} fullLen Target length\n * @param {string} numStr String to zero-pad\n * @return {string} Zero-padded string\n */\nfunction zeroPad(fullLen, numStr) {\n const numZeroes = fullLen - numStr.length;\n let outStr = '';\n for (let i = 0; i < numZeroes; i++) {\n outStr += '0';\n }\n outStr = outStr + numStr;\n return outStr;\n}\n\n/**\n * Populate a C-appropriate Geofence struct from a polygon array\n * @private\n * @param {Array[]} polygonArray Polygon, as an array of coordinate pairs\n * @param {number} geofence C pointer to a Geofence struct\n * @param {boolean} isGeoJson Whether coordinates are in [lng, lat] order per GeoJSON spec\n * @return {number} C pointer to populated Geofence struct\n */\nfunction polygonArrayToGeofence(polygonArray, geofence, isGeoJson) {\n const numVerts = polygonArray.length;\n const geoCoordArray = C._calloc(numVerts, SZ_GEOCOORD);\n // Support [lng, lat] pairs if GeoJSON is specified\n const latIndex = isGeoJson ? 1 : 0;\n const lngIndex = isGeoJson ? 0 : 1;\n for (let i = 0; i < numVerts * 2; i += 2) {\n C.HEAPF64.set(\n [polygonArray[i / 2][latIndex], polygonArray[i / 2][lngIndex]].map(degsToRads),\n geoCoordArray / SZ_DBL + i\n );\n }\n C.HEAPU32.set([numVerts, geoCoordArray], geofence / SZ_INT);\n return geofence;\n}\n\n/**\n * Create a C-appropriate GeoPolygon struct from an array of polygons\n * @private\n * @param {Array[]} coordinates Array of polygons, each an array of coordinate pairs\n * @param {boolean} isGeoJson Whether coordinates are in [lng, lat] order per GeoJSON spec\n * @return {number} C pointer to populated GeoPolygon struct\n */\nfunction coordinatesToGeoPolygon(coordinates, isGeoJson) {\n // Any loops beyond the first loop are holes\n const numHoles = coordinates.length - 1;\n const geoPolygon = C._calloc(SZ_GEOPOLYGON);\n // Byte positions within the struct\n const geofenceOffset = 0;\n const numHolesOffset = geofenceOffset + SZ_GEOFENCE;\n const holesOffset = numHolesOffset + SZ_INT;\n // geofence is first part of struct\n polygonArrayToGeofence(coordinates[0], geoPolygon + geofenceOffset, isGeoJson);\n let holes;\n if (numHoles > 0) {\n holes = C._calloc(numHoles, SZ_GEOFENCE);\n for (let i = 0; i < numHoles; i++) {\n polygonArrayToGeofence(coordinates[i + 1], holes + SZ_GEOFENCE * i, isGeoJson);\n }\n }\n C.setValue(geoPolygon + numHolesOffset, numHoles, 'i32');\n C.setValue(geoPolygon + holesOffset, holes, 'i32');\n return geoPolygon;\n}\n\n/**\n * Free memory allocated for a GeoPolygon struct. It is an error to access the struct\n * after passing it to this method.\n * @private\n * @return {number} geoPolygon C pointer to populated GeoPolygon struct\n */\nfunction destroyGeoPolygon(geoPolygon) {\n // Byte positions within the struct\n const geofenceOffset = 0;\n const numHolesOffset = geofenceOffset + SZ_GEOFENCE;\n const holesOffset = numHolesOffset + SZ_INT;\n // Free the outer loop\n C._free(C.getValue(geoPolygon + geofenceOffset, 'i8*'));\n // Free the holes, if any\n const numHoles = C.getValue(geoPolygon + numHolesOffset, 'i32');\n for (let i = 0; i < numHoles; i++) {\n C._free(C.getValue(geoPolygon + holesOffset + SZ_GEOFENCE * i, 'i8*'));\n }\n C._free(geoPolygon);\n}\n\n/**\n * Read a long value, returning the lower and upper portions as separate 32-bit integers.\n * Because the upper bits are returned via side effect, the argument to this function is\n * intended to be the invocation that caused the side effect, e.g. readLong(H3.getSomeLong())\n * @private\n * @param {number} invocation Invoked function returning a long value. The actual return\n * value of these functions is a 32-bit integer.\n * @return {number} Long value as a [lower, upper] pair\n */\nfunction readLong(invocation) {\n // Upper 32-bits of the long set via side-effect\n const upper = C.getTempRet0();\n return [invocation, upper];\n}\n\n/**\n * Read an H3 index from a C return value. As with readLong, the argument to this function\n * is intended to be an invocation, e.g. readH3Index(H3.getSomeAddress()), to help ensure that\n * the temp value storing the upper bits of the long is still set.\n * @private\n * @param {number} invocation Invoked function returning a single H3 index\n * @return {H3Index} H3 index, or null if index was invalid\n */\nfunction readH3Index(invocation) {\n const [lower, upper] = readLong(invocation);\n // The lower bits are allowed to be 0s, but if the upper bits are 0\n // this represents an invalid H3 index\n return upper ? splitLongToh3Index(lower, upper) : null;\n}\n\n/**\n * Read an H3 index from a pointer to C memory.\n * @private\n * @param {number} cAddress Pointer to allocated C memory\n * @param {number} offset Offset, in number of H3 indexes, in case we're\n * reading an array\n * @return {H3Index} H3 index, or null if index was invalid\n */\nfunction readH3IndexFromPointer(cAddress, offset = 0) {\n const lower = C.getValue(cAddress + SZ_INT * offset * 2, 'i32');\n const upper = C.getValue(cAddress + SZ_INT * (offset * 2 + 1), 'i32');\n // The lower bits are allowed to be 0s, but if the upper bits are 0\n // this represents an invalid H3 index\n return upper ? splitLongToh3Index(lower, upper) : null;\n}\n\n/**\n * Store an H3 index in C memory. Primarily used as an efficient way to\n * write sets of hexagons.\n * @private\n * @param {H3IndexInput} h3Index H3 index to store\n * @param {number} cAddress Pointer to allocated C memory\n * @param {number} offset Offset, in number of H3 indexes from beginning\n * of the current array\n */\nfunction storeH3Index(h3Index, cAddress, offset) {\n // HEAPU32 is a typed array projection on the index space\n // as unsigned 32-bit integers. This means the index needs\n // to be divided by SZ_INT (4) to access correctly. Also,\n // the H3 index is 64 bits, so we skip by twos as we're writing\n // to 32-bit integers in the proper order.\n C.HEAPU32.set(h3IndexToSplitLong(h3Index), cAddress / SZ_INT + 2 * offset);\n}\n\n/**\n * Read an array of 64-bit H3 indexes from C and convert to a JS array of\n * H3 index strings\n * @private\n * @param {number} cAddress Pointer to C ouput array\n * @param {number} maxCount Max number of hexagons in array. Hexagons with\n * the value 0 will be skipped, so this isn't\n * necessarily the length of the output array.\n * @return {H3Index[]} Array of H3 indexes\n */\nfunction readArrayOfHexagons(cAddress, maxCount) {\n const out = [];\n for (let i = 0; i < maxCount; i++) {\n const h3Index = readH3IndexFromPointer(cAddress, i);\n if (h3Index !== null) {\n out.push(h3Index);\n }\n }\n return out;\n}\n\n/**\n * Store an array of H3 index strings as a C array of 64-bit integers.\n * @private\n * @param {number} cAddress Pointer to C input array\n * @param {H3IndexInput[]} hexagons H3 indexes to pass to the C lib\n */\nfunction storeArrayOfHexagons(cAddress, hexagons) {\n // Assuming the cAddress points to an already appropriately\n // allocated space\n const count = hexagons.length;\n for (let i = 0; i < count; i++) {\n storeH3Index(hexagons[i], cAddress, i);\n }\n}\n\n/**\n * Populate a C-appropriate GeoCoord struct from a [lat, lng] array\n * @private\n * @param {number} lat Coordinate latitude\n * @param {number} lng Coordinate longitude\n * @return {number} C pointer to populated GeoCoord struct\n */\nfunction storeGeoCoord(lat, lng) {\n const geoCoord = C._calloc(1, SZ_GEOCOORD);\n C.HEAPF64.set([lat, lng].map(degsToRads), geoCoord / SZ_DBL);\n return geoCoord;\n}\n\nfunction readSingleCoord(cAddress) {\n return radsToDegs(C.getValue(cAddress, 'double'));\n}\n\n/**\n * Read a GeoCoord from C and return a [lat, lng] pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {number[]} [lat, lng] pair\n */\nfunction readGeoCoord(cAddress) {\n return [readSingleCoord(cAddress), readSingleCoord(cAddress + SZ_DBL)];\n}\n\n/**\n * Read a GeoCoord from C and return a GeoJSON-style [lng, lat] pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {number[]} [lng, lat] pair\n */\nfunction readGeoCoordGeoJson(cAddress) {\n return [readSingleCoord(cAddress + SZ_DBL), readSingleCoord(cAddress)];\n}\n\n/**\n * Read the GeoBoundary structure into a list of geo coordinate pairs\n * @private\n * @param {number} geoBoundary C pointer to GeoBoundary struct\n * @param {boolean} geoJsonCoords Whether to provide GeoJSON coordinate order: [lng, lat]\n * @param {boolean} closedLoop Whether to close the loop\n * @return {Array[]} Array of geo coordinate pairs\n */\nfunction readGeoBoundary(geoBoundary, geoJsonCoords, closedLoop) {\n const numVerts = C.getValue(geoBoundary, 'i32');\n // Note that though numVerts is an int, the coordinate doubles have to be\n // aligned to 8 bytes, hence the 8-byte offset here\n const vertsPos = geoBoundary + SZ_DBL;\n const out = [];\n // Support [lng, lat] pairs if GeoJSON is specified\n const readCoord = geoJsonCoords ? readGeoCoordGeoJson : readGeoCoord;\n for (let i = 0; i < numVerts * 2; i += 2) {\n out.push(readCoord(vertsPos + SZ_DBL * i));\n }\n if (closedLoop) {\n // Close loop if GeoJSON is specified\n out.push(out[0]);\n }\n return out;\n}\n\n/**\n * Read the LinkedGeoPolygon structure into a nested array of MultiPolygon coordinates\n * @private\n * @param {number} polygon C pointer to LinkedGeoPolygon struct\n * @param {boolean} formatAsGeoJson Whether to provide GeoJSON output: [lng, lat], closed loops\n * @return {number[][][][]} MultiPolygon-style output.\n */\nfunction readMultiPolygon(polygon, formatAsGeoJson) {\n const output = [];\n const readCoord = formatAsGeoJson ? readGeoCoordGeoJson : readGeoCoord;\n let loops;\n let loop;\n let coords;\n let coord;\n // Loop through the linked structure, building the output\n while (polygon) {\n output.push((loops = []));\n // Follow ->first pointer\n loop = C.getValue(polygon, 'i8*');\n while (loop) {\n loops.push((coords = []));\n // Follow ->first pointer\n coord = C.getValue(loop, 'i8*');\n while (coord) {\n coords.push(readCoord(coord));\n // Follow ->next pointer\n coord = C.getValue(coord + SZ_DBL * 2, 'i8*');\n }\n if (formatAsGeoJson) {\n // Close loop if GeoJSON is requested\n coords.push(coords[0]);\n }\n // Follow ->next pointer\n loop = C.getValue(loop + SZ_PTR * 2, 'i8*');\n }\n // Follow ->next pointer\n polygon = C.getValue(polygon + SZ_PTR * 2, 'i8*');\n }\n return output;\n}\n\n/**\n * Read a CoordIJ from C and return an {i, j} pair.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {CoordIJ} {i, j} pair\n */\nfunction readCoordIJ(cAddress) {\n return {\n i: C.getValue(cAddress, 'i32'),\n j: C.getValue(cAddress + SZ_INT, 'i32')\n };\n}\n\n/**\n * Store an {i, j} pair to a C CoordIJ struct.\n * @private\n * @param {number} cAddress Pointer to C struct\n * @return {CoordIJ} {i, j} pair\n */\nfunction storeCoordIJ(cAddress, {i, j}) {\n C.setValue(cAddress, i, 'i32');\n C.setValue(cAddress + SZ_INT, j, 'i32');\n}\n\n/**\n * Read an array of positive integers array from C. Negative\n * values are considered invalid and ignored in output.\n * @private\n * @param {number} cAddress Pointer to C array\n * @param {number} count Length of C array\n * @return {number[]} Javascript integer array\n */\nfunction readArrayOfPositiveIntegers(cAddress, count) {\n const out = [];\n for (let i = 0; i < count; i++) {\n const int = C.getValue(cAddress + SZ_INT * i, 'i32');\n if (int >= 0) {\n out.push(int);\n }\n }\n return out;\n}\n\n// ----------------------------------------------------------------------------\n// Public API functions: Core\n\n/**\n * Whether a given string represents a valid H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} Whether the index is valid\n */\nexport function h3IsValid(h3Index) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n return Boolean(H3.h3IsValid(lower, upper));\n}\n\n/**\n * Whether the given H3 index is a pentagon\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} isPentagon\n */\nexport function h3IsPentagon(h3Index) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n return Boolean(H3.h3IsPentagon(lower, upper));\n}\n\n/**\n * Whether the given H3 index is in a Class III resolution (rotated versus\n * the icosahedron and subject to shape distortion adding extra points on\n * icosahedron edges, making them not true hexagons).\n * @static\n * @param {H3IndexInput} h3Index H3 index to check\n * @return {boolean} isResClassIII\n */\nexport function h3IsResClassIII(h3Index) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n return Boolean(H3.h3IsResClassIII(lower, upper));\n}\n\n/**\n * Get the number of the base cell for a given H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get the base cell for\n * @return {number} Index of the base cell (0-121)\n */\nexport function h3GetBaseCell(h3Index) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n return H3.h3GetBaseCell(lower, upper);\n}\n\n/**\n * Get the indices of all icosahedron faces intersected by a given H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get faces for\n * @return {number[]} Indices (0-19) of all intersected faces\n */\nexport function h3GetFaces(h3Index) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n const count = H3.maxFaceCount(lower, upper);\n const faces = C._malloc(SZ_INT * count);\n H3.h3GetFaces(lower, upper, faces);\n const out = readArrayOfPositiveIntegers(faces, count);\n C._free(faces);\n return out;\n}\n\n/**\n * Returns the resolution of an H3 index\n * @static\n * @param {H3IndexInput} h3Index H3 index to get resolution\n * @return {number} The number (0-15) resolution, or -1 if invalid\n */\nexport function h3GetResolution(h3Index) {\n if (typeof h3Index !== 'string') {\n return -1;\n }\n return parseInt(h3Index.charAt(1), BASE_16);\n}\n\n/**\n * Get the hexagon containing a lat,lon point\n * @static\n * @param {number} lat Latitude of point\n * @param {number} lng Longtitude of point\n * @param {number} res Resolution of hexagons to return\n * @return {H3Index} H3 index\n */\nexport function geoToH3(lat, lng, res) {\n const latlng = C._malloc(SZ_GEOCOORD);\n // Slightly more efficient way to set the memory\n C.HEAPF64.set([lat, lng].map(degsToRads), latlng / SZ_DBL);\n // Read value as a split long\n const h3Index = readH3Index(H3.geoToH3(latlng, res));\n C._free(latlng);\n return h3Index;\n}\n\n/**\n * Get the lat,lon center of a given hexagon\n * @static\n * @param {H3IndexInput} h3Index H3 index\n * @return {number[]} Point as a [lat, lng] pair\n */\nexport function h3ToGeo(h3Index) {\n const latlng = C._malloc(SZ_GEOCOORD);\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n H3.h3ToGeo(lower, upper, latlng);\n const out = readGeoCoord(latlng);\n C._free(latlng);\n return out;\n}\n\n/**\n * Get the vertices of a given hexagon (or pentagon), as an array of [lat, lng]\n * points. For pentagons and hexagons on the edge of an icosahedron face, this\n * function may return up to 10 vertices.\n * @static\n * @param {H3Index} h3Index H3 index\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat], closed loops\n * @return {number[][]} Array of [lat, lng] pairs\n */\nexport function h3ToGeoBoundary(h3Index, formatAsGeoJson) {\n const geoBoundary = C._malloc(SZ_GEOBOUNDARY);\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n H3.h3ToGeoBoundary(lower, upper, geoBoundary);\n const out = readGeoBoundary(geoBoundary, formatAsGeoJson, formatAsGeoJson);\n C._free(geoBoundary);\n return out;\n}\n\n// ----------------------------------------------------------------------------\n// Public API functions: Algorithms\n\n/**\n * Get the parent of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get parent for\n * @param {number} res Resolution of hexagon to return\n * @return {H3Index} H3 index of parent, or null for invalid input\n */\nexport function h3ToParent(h3Index, res) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n return readH3Index(H3.h3ToParent(lower, upper, res));\n}\n\n/**\n * Get the children/descendents of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get children for\n * @param {number} res Resolution of hexagons to return\n * @return {H3Index[]} H3 indexes of children, or empty array for invalid input\n */\nexport function h3ToChildren(h3Index, res) {\n // Bad input in this case can potentially result in high computation volume\n // using the current C algorithm. Validate and return an empty array on failure.\n if (!h3IsValid(h3Index)) {\n return [];\n }\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n const maxCount = H3.maxH3ToChildrenSize(lower, upper, res);\n const hexagons = C._calloc(maxCount, SZ_H3INDEX);\n H3.h3ToChildren(lower, upper, res, hexagons);\n const out = readArrayOfHexagons(hexagons, maxCount);\n C._free(hexagons);\n return out;\n}\n\n/**\n * Get the center child of the given hexagon at a particular resolution\n * @static\n * @param {H3IndexInput} h3Index H3 index to get center child for\n * @param {number} res Resolution of hexagon to return\n * @return {H3Index} H3 index of child, or null for invalid input\n */\nexport function h3ToCenterChild(h3Index, res) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n return readH3Index(H3.h3ToCenterChild(lower, upper, res));\n}\n\n/**\n * Get all hexagons in a k-ring around a given center. The order of the hexagons is undefined.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of k-ring\n * @return {H3Index[]} H3 indexes for all hexagons in ring\n */\nexport function kRing(h3Index, ringSize) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n const maxCount = H3.maxKringSize(ringSize);\n const hexagons = C._calloc(maxCount, SZ_H3INDEX);\n H3.kRing(lower, upper, ringSize, hexagons);\n const out = readArrayOfHexagons(hexagons, maxCount);\n C._free(hexagons);\n return out;\n}\n\n/**\n * Get all hexagons in a k-ring around a given center, in an array of arrays\n * ordered by distance from the origin. The order of the hexagons within each ring is undefined.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of k-ring\n * @return {H3Index[][]} Array of arrays with H3 indexes for all hexagons each ring\n */\nexport function kRingDistances(h3Index, ringSize) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n const maxCount = H3.maxKringSize(ringSize);\n const kRings = C._calloc(maxCount, SZ_H3INDEX);\n const distances = C._calloc(maxCount, SZ_INT);\n H3.kRingDistances(lower, upper, ringSize, kRings, distances);\n // Create an array of empty arrays to hold the output\n const out = [];\n for (let i = 0; i < ringSize + 1; i++) {\n out.push([]);\n }\n // Read the array of hexagons, putting them into the appropriate rings\n for (let i = 0; i < maxCount * 2; i += 2) {\n const hexLower = C.getValue(kRings + SZ_INT * i, 'i32');\n const hexUpper = C.getValue(kRings + SZ_INT * (i + 1), 'i32');\n const index = C.getValue(distances + SZ_INT * (i / 2), 'i32');\n if (hexLower !== 0 || hexUpper !== 0) {\n out[index].push(splitLongToh3Index(hexLower, hexUpper));\n }\n }\n C._free(kRings);\n C._free(distances);\n return out;\n}\n\n/**\n * Get all hexagons in a hollow hexagonal ring centered at origin with sides of a given length.\n * Unlike kRing, this function will throw an error if there is a pentagon anywhere in the ring.\n * @static\n * @param {H3IndexInput} h3Index H3 index of center hexagon\n * @param {number} ringSize Radius of ring\n * @return {H3Index[]} H3 indexes for all hexagons in ring\n * @throws {Error} If the algorithm could not calculate the ring\n */\nexport function hexRing(h3Index, ringSize) {\n const maxCount = ringSize === 0 ? 1 : 6 * ringSize;\n const hexagons = C._calloc(maxCount, SZ_H3INDEX);\n const retVal = H3.hexRing(...h3IndexToSplitLong(h3Index), ringSize, hexagons);\n if (retVal !== 0) {\n C._free(hexagons);\n throw new Error('Failed to get hexRing (encountered a pentagon?)');\n }\n const out = readArrayOfHexagons(hexagons, maxCount);\n C._free(hexagons);\n return out;\n}\n\n/**\n * Get all hexagons with centers contained in a given polygon. The polygon\n * is specified with GeoJson semantics as an array of loops. Each loop is\n * an array of [lat, lng] pairs (or [lng, lat] if isGeoJson is specified).\n * The first loop is the perimeter of the polygon, and subsequent loops are\n * expected to be holes.\n * @static\n * @param {number[][] | number[][][]} coordinates\n * Array of loops, or a single loop\n * @param {number} res Resolution of hexagons to return\n * @param {boolean} [isGeoJson] Whether to expect GeoJson-style [lng, lat]\n * pairs instead of [lat, lng]\n * @return {H3Index[]} H3 indexes for all hexagons in polygon\n */\nexport function polyfill(coordinates, res, isGeoJson) {\n validateRes(res);\n isGeoJson = Boolean(isGeoJson);\n // Guard against empty input\n if (coordinates.length === 0 || coordinates[0].length === 0) {\n return [];\n }\n // Wrap to expected format if a single loop is provided\n if (typeof coordinates[0][0] === 'number') {\n coordinates = [coordinates];\n }\n const geoPolygon = coordinatesToGeoPolygon(coordinates, isGeoJson);\n const arrayLen = H3.maxPolyfillSize(geoPolygon, res);\n const hexagons = C._calloc(arrayLen, SZ_H3INDEX);\n H3.polyfill(geoPolygon, res, hexagons);\n const out = readArrayOfHexagons(hexagons, arrayLen);\n C._free(hexagons);\n destroyGeoPolygon(geoPolygon);\n return out;\n}\n\n/**\n * Get the outlines of a set of H3 hexagons, returned in GeoJSON MultiPolygon\n * format (an array of polygons, each with an array of loops, each an array of\n * coordinates). Coordinates are returned as [lat, lng] pairs unless GeoJSON\n * is requested.\n *\n * It is the responsibility of the caller to ensure that all hexagons in the\n * set have the same resolution and that the set contains no duplicates. Behavior\n * is undefined if duplicates or multiple resolutions are present, and the\n * algorithm may produce unexpected or invalid polygons.\n *\n * @static\n * @param {H3IndexInput[]} h3Indexes H3 indexes to get outlines for\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output:\n * [lng, lat], closed loops\n * @return {number[][][][]} MultiPolygon-style output.\n */\nexport function h3SetToMultiPolygon(h3Indexes, formatAsGeoJson) {\n // Early exit on empty input\n if (!h3Indexes || !h3Indexes.length) {\n return [];\n }\n // Set up input set\n const indexCount = h3Indexes.length;\n const set = C._calloc(indexCount, SZ_H3INDEX);\n storeArrayOfHexagons(set, h3Indexes);\n // Allocate memory for output linked polygon\n const polygon = C._calloc(SZ_LINKED_GEOPOLYGON);\n // Store a reference to the first polygon - that's the one we need for\n // memory deallocation\n const originalPolygon = polygon;\n H3.h3SetToLinkedGeo(set, indexCount, polygon);\n const multiPolygon = readMultiPolygon(polygon, formatAsGeoJson);\n // Clean up\n H3.destroyLinkedPolygon(originalPolygon);\n C._free(originalPolygon);\n C._free(set);\n return multiPolygon;\n}\n\n/**\n * Compact a set of hexagons of the same resolution into a set of hexagons across\n * multiple levels that represents the same area.\n * @static\n * @param {H3IndexInput[]} h3Set H3 indexes to compact\n * @return {H3Index[]} Compacted H3 indexes\n * @throws {Error} If the input is invalid (e.g. duplicate hexagons)\n */\nexport function compact(h3Set) {\n if (!h3Set || !h3Set.length) {\n return [];\n }\n // Set up input set\n const count = h3Set.length;\n const set = C._calloc(count, SZ_H3INDEX);\n storeArrayOfHexagons(set, h3Set);\n // Allocate memory for compacted hexagons, worst-case is no compaction\n const compactedSet = C._calloc(count, SZ_H3INDEX);\n const retVal = H3.compact(set, compactedSet, count);\n if (retVal !== 0) {\n C._free(set);\n C._free(compactedSet);\n throw new Error('Failed to compact, malformed input data (duplicate hexagons?)');\n }\n const out = readArrayOfHexagons(compactedSet, count);\n C._free(set);\n C._free(compactedSet);\n return out;\n}\n\n/**\n * Uncompact a compacted set of hexagons to hexagons of the same resolution\n * @static\n * @param {H3IndexInput[]} compactedSet H3 indexes to uncompact\n * @param {number} res The resolution to uncompact to\n * @return {H3Index[]} The uncompacted H3 indexes\n * @throws {Error} If the input is invalid (e.g. invalid resolution)\n */\nexport function uncompact(compactedSet, res) {\n validateRes(res);\n if (!compactedSet || !compactedSet.length) {\n return [];\n }\n // Set up input set\n const count = compactedSet.length;\n const set = C._calloc(count, SZ_H3INDEX);\n storeArrayOfHexagons(set, compactedSet);\n // Estimate how many hexagons we need (always overestimates if in error)\n const maxUncompactedNum = H3.maxUncompactSize(set, count, res);\n // Allocate memory for uncompacted hexagons\n const uncompactedSet = C._calloc(maxUncompactedNum, SZ_H3INDEX);\n const retVal = H3.uncompact(set, count, uncompactedSet, maxUncompactedNum, res);\n if (retVal !== 0) {\n C._free(set);\n C._free(uncompactedSet);\n throw new Error('Failed to uncompact (bad resolution?)');\n }\n const out = readArrayOfHexagons(uncompactedSet, maxUncompactedNum);\n C._free(set);\n C._free(uncompactedSet);\n return out;\n}\n\n// ----------------------------------------------------------------------------\n// Public API functions: Unidirectional edges\n\n/**\n * Whether two H3 indexes are neighbors (share an edge)\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {boolean} Whether the hexagons share an edge\n */\nexport function h3IndexesAreNeighbors(origin, destination) {\n const [oLower, oUpper] = h3IndexToSplitLong(origin);\n const [dLower, dUpper] = h3IndexToSplitLong(destination);\n return Boolean(H3.h3IndexesAreNeighbors(oLower, oUpper, dLower, dUpper));\n}\n\n/**\n * Get an H3 index representing a unidirectional edge for a given origin and destination\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {H3Index} H3 index of the edge, or null if no edge is shared\n */\nexport function getH3UnidirectionalEdge(origin, destination) {\n const [oLower, oUpper] = h3IndexToSplitLong(origin);\n const [dLower, dUpper] = h3IndexToSplitLong(destination);\n return readH3Index(H3.getH3UnidirectionalEdge(oLower, oUpper, dLower, dUpper));\n}\n\n/**\n * Get the origin hexagon from an H3 index representing a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index} H3 index of the edge origin\n */\nexport function getOriginH3IndexFromUnidirectionalEdge(edgeIndex) {\n const [lower, upper] = h3IndexToSplitLong(edgeIndex);\n return readH3Index(H3.getOriginH3IndexFromUnidirectionalEdge(lower, upper));\n}\n\n/**\n * Get the destination hexagon from an H3 index representing a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index} H3 index of the edge destination\n */\nexport function getDestinationH3IndexFromUnidirectionalEdge(edgeIndex) {\n const [lower, upper] = h3IndexToSplitLong(edgeIndex);\n return readH3Index(H3.getDestinationH3IndexFromUnidirectionalEdge(lower, upper));\n}\n\n/**\n * Whether the input is a valid unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {boolean} Whether the index is valid\n */\nexport function h3UnidirectionalEdgeIsValid(edgeIndex) {\n const [lower, upper] = h3IndexToSplitLong(edgeIndex);\n return Boolean(H3.h3UnidirectionalEdgeIsValid(lower, upper));\n}\n\n/**\n * Get the [origin, destination] pair represented by a unidirectional edge\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @return {H3Index[]} [origin, destination] pair as H3 indexes\n */\nexport function getH3IndexesFromUnidirectionalEdge(edgeIndex) {\n const [lower, upper] = h3IndexToSplitLong(edgeIndex);\n const count = 2;\n const hexagons = C._calloc(count, SZ_H3INDEX);\n H3.getH3IndexesFromUnidirectionalEdge(lower, upper, hexagons);\n const out = readArrayOfHexagons(hexagons, count);\n C._free(hexagons);\n return out;\n}\n\n/**\n * Get all of the unidirectional edges with the given H3 index as the origin (i.e. an edge to\n * every neighbor)\n * @static\n * @param {H3IndexInput} h3Index H3 index of the origin hexagon\n * @return {H3Index[]} List of unidirectional edges\n */\nexport function getH3UnidirectionalEdgesFromHexagon(h3Index) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n const count = 6;\n const edges = C._calloc(count, SZ_H3INDEX);\n H3.getH3UnidirectionalEdgesFromHexagon(lower, upper, edges);\n const out = readArrayOfHexagons(edges, count);\n C._free(edges);\n return out;\n}\n\n/**\n * Get the vertices of a given edge as an array of [lat, lng] points. Note that for edges that\n * cross the edge of an icosahedron face, this may return 3 coordinates.\n * @static\n * @param {H3IndexInput} edgeIndex H3 index of the edge\n * @param {boolean} [formatAsGeoJson] Whether to provide GeoJSON output: [lng, lat]\n * @return {number[][]} Array of geo coordinate pairs\n */\nexport function getH3UnidirectionalEdgeBoundary(edgeIndex, formatAsGeoJson) {\n const geoBoundary = C._malloc(SZ_GEOBOUNDARY);\n const [lower, upper] = h3IndexToSplitLong(edgeIndex);\n H3.getH3UnidirectionalEdgeBoundary(lower, upper, geoBoundary);\n const out = readGeoBoundary(geoBoundary, formatAsGeoJson);\n C._free(geoBoundary);\n return out;\n}\n\n/**\n * Get the grid distance between two hex indexes. This function may fail\n * to find the distance between two indexes if they are very far apart or\n * on opposite sides of a pentagon.\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {number} Distance between hexagons, or a negative\n * number if the distance could not be computed\n */\nexport function h3Distance(origin, destination) {\n const [oLower, oUpper] = h3IndexToSplitLong(origin);\n const [dLower, dUpper] = h3IndexToSplitLong(destination);\n return H3.h3Distance(oLower, oUpper, dLower, dUpper);\n}\n\n/**\n * Given two H3 indexes, return the line of indexes between them (inclusive).\n *\n * This function may fail to find the line between two indexes, for\n * example if they are very far apart. It may also fail when finding\n * distances for indexes on opposite sides of a pentagon.\n *\n * Notes:\n *\n * - The specific output of this function should not be considered stable\n * across library versions. The only guarantees the library provides are\n * that the line length will be `h3Distance(start, end) + 1` and that\n * every index in the line will be a neighbor of the preceding index.\n * - Lines are drawn in grid space, and may not correspond exactly to either\n * Cartesian lines or great arcs.\n *\n * @static\n * @param {H3IndexInput} origin Origin hexagon index\n * @param {H3IndexInput} destination Destination hexagon index\n * @return {H3Index[]} H3 indexes connecting origin and destination\n * @throws {Error} If the line cannot be calculated\n */\nexport function h3Line(origin, destination) {\n const [oLower, oUpper] = h3IndexToSplitLong(origin);\n const [dLower, dUpper] = h3IndexToSplitLong(destination);\n const count = H3.h3LineSize(oLower, oUpper, dLower, dUpper);\n if (count < 0) {\n // We can't get the specific error code here - may be any of\n // the errors possible in experimentalH3ToLocalIj\n throw new Error('Line cannot be calculated');\n }\n const hexagons = C._calloc(count, SZ_H3INDEX);\n H3.h3Line(oLower, oUpper, dLower, dUpper, hexagons);\n const out = readArrayOfHexagons(hexagons, count);\n C._free(hexagons);\n return out;\n}\n\n/**\n * Produces IJ coordinates for an H3 index anchored by an origin.\n *\n * - The coordinate space used by this function may have deleted\n * regions or warping due to pentagonal distortion.\n * - Coordinates are only comparable if they come from the same\n * origin index.\n * - Failure may occur if the index is too far away from the origin\n * or if the index is on the other side of a pentagon.\n * - This function is experimental, and its output is not guaranteed\n * to be compatible across different versions of H3.\n * @static\n * @param {H3IndexInput} origin Origin H3 index\n * @param {H3IndexInput} destination H3 index for which to find relative coordinates\n * @return {CoordIJ} Coordinates as an `{i, j}` pair\n * @throws {Error} If the IJ coordinates cannot be calculated\n */\nexport function experimentalH3ToLocalIj(origin, destination) {\n const ij = C._malloc(SZ_COORDIJ);\n const retVal = H3.experimentalH3ToLocalIj(\n ...h3IndexToSplitLong(origin),\n ...h3IndexToSplitLong(destination),\n ij\n );\n const coords = readCoordIJ(ij);\n C._free(ij);\n // Return the pair, or throw if an error code was returned.\n // Switch statement and error codes cribbed from h3-java's implementation.\n switch (retVal) {\n case 0:\n return coords;\n case 1:\n throw new Error('Incompatible origin and index.');\n case 2:\n default:\n throw new Error(\n 'Local IJ coordinates undefined for this origin and index pair. ' +\n 'The index may be too far from the origin.'\n );\n case 3:\n case 4:\n case 5:\n throw new Error('Encountered possible pentagon distortion');\n }\n}\n\n/**\n * Produces an H3 index for IJ coordinates anchored by an origin.\n *\n * - The coordinate space used by this function may have deleted\n * regions or warping due to pentagonal distortion.\n * - Coordinates are only comparable if they come from the same\n * origin index.\n * - Failure may occur if the index is too far away from the origin\n * or if the index is on the other side of a pentagon.\n * - This function is experimental, and its output is not guaranteed\n * to be compatible across different versions of H3.\n * @static\n * @param {H3IndexInput} origin Origin H3 index\n * @param {CoordIJ} coords Coordinates as an `{i, j}` pair\n * @return {H3Index} H3 index at the relative coordinates\n * @throws {Error} If the H3 index cannot be calculated\n */\nexport function experimentalLocalIjToH3(origin, coords) {\n // Validate input coords\n if (!coords || typeof coords.i !== 'number' || typeof coords.j !== 'number') {\n throw new Error('Coordinates must be provided as an {i, j} object');\n }\n // Allocate memory for the CoordIJ struct and an H3 index to hold the return value\n const ij = C._malloc(SZ_COORDIJ);\n const out = C._malloc(SZ_H3INDEX);\n storeCoordIJ(ij, coords);\n const retVal = H3.experimentalLocalIjToH3(...h3IndexToSplitLong(origin), ij, out);\n const h3Index = readH3IndexFromPointer(out);\n C._free(ij);\n C._free(out);\n if (retVal !== 0) {\n throw new Error(\n 'Index not defined for this origin and IJ coordinates pair. ' +\n 'IJ coordinates may be too far from origin, or ' +\n 'a pentagon distortion was encountered.'\n );\n }\n return h3Index;\n}\n\n// ----------------------------------------------------------------------------\n// Public API functions: Distance/area utilities\n\n/**\n * Great circle distance between two geo points. This is not specific to H3,\n * but is implemented in the library and provided here as a convenience.\n * @static\n * @param {number[]} latlng1 Origin coordinate as [lat, lng]\n * @param {number[]} latlng2 Destination coordinate as [lat, lng]\n * @param {string} unit Distance unit (either UNITS.m or UNITS.km)\n * @return {number} Great circle distance\n * @throws {Error} If the unit is invalid\n */\nexport function pointDist(latlng1, latlng2, unit) {\n const coord1 = storeGeoCoord(latlng1[0], latlng1[1]);\n const coord2 = storeGeoCoord(latlng2[0], latlng2[1]);\n let result;\n switch (unit) {\n case UNITS.m:\n result = H3.pointDistM(coord1, coord2);\n break;\n case UNITS.km:\n result = H3.pointDistKm(coord1, coord2);\n break;\n case UNITS.rads:\n result = H3.pointDistRads(coord1, coord2);\n break;\n default:\n result = null;\n }\n C._free(coord1);\n C._free(coord2);\n if (result === null) {\n throw new Error(`Unknown unit: ${unit}`);\n }\n return result;\n}\n\n/**\n * Exact area of a given cell\n * @static\n * @param {H3Index} h3Index H3 index of the hexagon to measure\n * @param {string} unit Distance unit (either UNITS.m2 or UNITS.km2)\n * @return {number} Cell area\n * @throws {Error} If the unit is invalid\n */\nexport function cellArea(h3Index, unit) {\n const [lower, upper] = h3IndexToSplitLong(h3Index);\n switch (unit) {\n case UNITS.m2:\n return H3.cellAreaM2(lower, upper);\n case UNITS.km2:\n return H3.cellAreaKm2(lower, upper);\n case UNITS.rads2:\n return H3.cellAreaRads2(lower, upper);\n default:\n throw new Error(`Unknown unit: ${unit}`);\n }\n}\n\n/**\n * Exact length of a given unidirectional edge\n * @static\n * @param {H3Index} edge H3 index of the edge to measure\n * @param {string} unit Distance unit (either UNITS.m, UNITS.km, or UNITS.rads)\n * @return {number} Cell area\n * @throws {Error} If the unit is invalid\n */\nexport function exactEdgeLength(edge, unit) {\n const [lower, upper] = h3IndexToSplitLong(edge);\n switch (unit) {\n case UNITS.m:\n return H3.exactEdgeLengthM(lower, upper);\n case UNITS.km:\n return H3.exactEdgeLengthKm(lower, upper);\n case UNITS.rads:\n return H3.exactEdgeLengthRads(lower, upper);\n default:\n throw new Error(`Unknown unit: ${unit}`);\n }\n}\n\n/**\n * Average hexagon area at a given resolution\n * @static\n * @param {number} res Hexagon resolution\n * @param {string} unit Area unit (either UNITS.m2, UNITS.km2, or UNITS.rads2)\n * @return {number} Average area\n * @throws {Error} If the unit is invalid\n */\nexport function hexArea(res, unit) {\n validateRes(res);\n switch (unit) {\n case UNITS.m2:\n return H3.hexAreaM2(res);\n case UNITS.km2:\n return H3.hexAreaKm2(res);\n default:\n throw new Error(`Unknown unit: ${unit}`);\n }\n}\n\n/**\n * Average hexagon edge length at a given resolution\n * @static\n * @param {number} res Hexagon resolution\n * @param {string} unit Distance unit (either UNITS.m, UNITS.km, or UNITS.rads)\n * @return {number} Average edge length\n * @throws {Error} If the unit is invalid\n */\nexport function edgeLength(res, unit) {\n validateRes(res);\n switch (unit) {\n case UNITS.m:\n return H3.edgeLengthM(res);\n case UNITS.km:\n return H3.edgeLengthKm(res);\n default:\n throw new Error(`Unknown unit: ${unit}`);\n }\n}\n\n// ----------------------------------------------------------------------------\n// Public informational utilities\n\n/**\n * The total count of hexagons in the world at a given resolution. Note that above\n * resolution 8 the exact count cannot be represented in a JavaScript 32-bit number,\n * so consumers should use caution when applying further operations to the output.\n * @static\n * @param {number} res Hexagon resolution\n * @return {number} Count\n */\nexport function numHexagons(res) {\n validateRes(res);\n // Get number as a long value\n const [lower, upper] = readLong(H3.numHexagons(res));\n // If we're using <= 32 bits we can use normal JS numbers\n if (!upper) {\n return lower;\n }\n // Above 32 bit, make a JS number that's correct in order of magnitude\n return upper * Math.pow(2, 32) + lower;\n}\n\n/**\n * Get all H3 indexes at resolution 0. As every index at every resolution > 0 is\n * the descendant of a res 0 index, this can be used with h3ToChildren to iterate\n * over H3 indexes at any resolution.\n * @static\n * @return {H3Index[]} All H3 indexes at res 0\n */\nexport function getRes0Indexes() {\n const count = H3.res0IndexCount();\n const hexagons = C._malloc(SZ_H3INDEX * count);\n H3.getRes0Indexes(hexagons);\n const out = readArrayOfHexagons(hexagons, count);\n C._free(hexagons);\n return out;\n}\n\n/**\n * Get the twelve pentagon indexes at a given resolution.\n * @static\n * @param {number} res Hexagon resolution\n * @return {H3Index[]} All H3 pentagon indexes at res\n */\nexport function getPentagonIndexes(res) {\n validateRes(res);\n const count = H3.pentagonIndexCount();\n const hexagons = C._malloc(SZ_H3INDEX * count);\n H3.getPentagonIndexes(res, hexagons);\n const out = readArrayOfHexagons(hexagons, count);\n C._free(hexagons);\n return out;\n}\n\n/**\n * Convert degrees to radians\n * @static\n * @param {number} deg Value in degrees\n * @return {number} Value in radians\n */\nexport function degsToRads(deg) {\n return (deg * Math.PI) / 180;\n}\n\n/**\n * Convert radians to degrees\n * @static\n * @param {number} rad Value in radians\n * @return {number} Value in degrees\n */\nexport function radsToDegs(rad) {\n return (rad * 180) / Math.PI;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = exports.SELECTION_TYPE = void 0;\n\nvar _core = require(\"@deck.gl/core\");\n\nvar _layers = require(\"@deck.gl/layers\");\n\nvar _helpers = require(\"@turf/helpers\");\n\nvar _buffer = _interopRequireDefault(require(\"@turf/buffer\"));\n\nvar _difference = _interopRequireDefault(require(\"@turf/difference\"));\n\nvar _editModes = require(\"@nebula.gl/edit-modes\");\n\nvar _editableGeojsonLayer = _interopRequireDefault(require(\"./editable-geojson-layer\"));\n\nvar _MODE_MAP;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SELECTION_TYPE = {\n NONE: null,\n RECTANGLE: 'rectangle',\n POLYGON: 'polygon'\n};\nexports.SELECTION_TYPE = SELECTION_TYPE;\nvar MODE_MAP = (_MODE_MAP = {}, _defineProperty(_MODE_MAP, SELECTION_TYPE.RECTANGLE, _editModes.DrawRectangleMode), _defineProperty(_MODE_MAP, SELECTION_TYPE.POLYGON, _editModes.DrawPolygonMode), _MODE_MAP);\n\nvar MODE_CONFIG_MAP = _defineProperty({}, SELECTION_TYPE.RECTANGLE, {\n dragToDraw: true\n});\n\nvar defaultProps = {\n selectionType: SELECTION_TYPE.RECTANGLE,\n layerIds: [],\n onSelect: function onSelect() {}\n};\nvar EMPTY_DATA = {\n type: 'FeatureCollection',\n features: []\n};\nvar EXPANSION_KM = 50;\nvar LAYER_ID_GEOJSON = 'selection-geojson';\nvar LAYER_ID_BLOCKER = 'selection-blocker';\nvar PASS_THROUGH_PROPS = ['lineWidthScale', 'lineWidthMinPixels', 'lineWidthMaxPixels', 'lineWidthUnits', 'lineJointRounded', 'lineCapRounded', 'lineMiterLimit', 'pointRadiusScale', 'pointRadiusMinPixels', 'pointRadiusMaxPixels', 'lineDashJustified', 'getLineColor', 'getFillColor', 'getRadius', 'getLineWidth', 'getLineDashArray', 'getTentativeLineDashArray', 'getTentativeLineColor', 'getTentativeFillColor', 'getTentativeLineWidth'];\n\nvar SelectionLayer = /*#__PURE__*/function (_CompositeLayer) {\n _inherits(SelectionLayer, _CompositeLayer);\n\n var _super = _createSuper(SelectionLayer);\n\n function SelectionLayer() {\n _classCallCheck(this, SelectionLayer);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(SelectionLayer, [{\n key: \"_selectRectangleObjects\",\n value: function _selectRectangleObjects(coordinates) {\n var _this$props = this.props,\n layerIds = _this$props.layerIds,\n onSelect = _this$props.onSelect; // @ts-ignore\n\n var _this$context$viewpor = this.context.viewport.project(coordinates[0][0]),\n _this$context$viewpor2 = _slicedToArray(_this$context$viewpor, 2),\n x1 = _this$context$viewpor2[0],\n y1 = _this$context$viewpor2[1]; // @ts-ignore\n\n\n var _this$context$viewpor3 = this.context.viewport.project(coordinates[0][2]),\n _this$context$viewpor4 = _slicedToArray(_this$context$viewpor3, 2),\n x2 = _this$context$viewpor4[0],\n y2 = _this$context$viewpor4[1]; // @ts-ignore\n\n\n var pickingInfos = this.context.deck.pickObjects({\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1),\n layerIds: layerIds\n });\n onSelect({\n pickingInfos: pickingInfos\n });\n }\n }, {\n key: \"_selectPolygonObjects\",\n value: function _selectPolygonObjects(coordinates) {\n var _this = this;\n\n var _this$props2 = this.props,\n layerIds = _this$props2.layerIds,\n onSelect = _this$props2.onSelect; // @ts-ignore\n\n var mousePoints = coordinates[0].map(function (c) {\n return _this.context.viewport.project(c);\n });\n var allX = mousePoints.map(function (mousePoint) {\n return mousePoint[0];\n });\n var allY = mousePoints.map(function (mousePoint) {\n return mousePoint[1];\n });\n var x = Math.min.apply(Math, _toConsumableArray(allX));\n var y = Math.min.apply(Math, _toConsumableArray(allY));\n var maxX = Math.max.apply(Math, _toConsumableArray(allX));\n var maxY = Math.max.apply(Math, _toConsumableArray(allY)); // Use a polygon to hide the outside, because pickObjects()\n // does not support polygons\n\n var landPointsPoly = (0, _helpers.polygon)(coordinates);\n var bigBuffer = (0, _buffer[\"default\"])(landPointsPoly, EXPANSION_KM);\n var bigPolygon;\n\n try {\n // turfDifference throws an exception if the polygon\n // intersects with itself (TODO: check if true in all versions)\n bigPolygon = (0, _difference[\"default\"])(bigBuffer, landPointsPoly);\n } catch (e) {\n // invalid selection polygon\n console.log('turfDifference() error', e); // eslint-disable-line\n\n return;\n }\n\n this.setState({\n pendingPolygonSelection: {\n bigPolygon: bigPolygon\n }\n });\n var blockerId = \"\".concat(this.props.id, \"-\").concat(LAYER_ID_BLOCKER); // HACK, find a better way\n\n setTimeout(function () {\n // @ts-ignore\n var pickingInfos = _this.context.deck.pickObjects({\n x: x,\n y: y,\n width: maxX - x,\n height: maxY - y,\n layerIds: [blockerId].concat(_toConsumableArray(layerIds))\n });\n\n onSelect({\n pickingInfos: pickingInfos.filter(function (item) {\n return item.layer.id !== _this.props.id;\n })\n });\n }, 250);\n }\n }, {\n key: \"renderLayers\",\n value: function renderLayers() {\n var _this2 = this;\n\n var pendingPolygonSelection = this.state.pendingPolygonSelection;\n var mode = MODE_MAP[this.props.selectionType] || _editModes.ViewMode;\n var modeConfig = MODE_CONFIG_MAP[this.props.selectionType];\n var inheritedProps = {};\n PASS_THROUGH_PROPS.forEach(function (p) {\n if (_this2.props[p] !== undefined) inheritedProps[p] = _this2.props[p];\n });\n var layers = [new _editableGeojsonLayer[\"default\"](this.getSubLayerProps(_objectSpread({\n id: LAYER_ID_GEOJSON,\n pickable: true,\n mode: mode,\n modeConfig: modeConfig,\n selectedFeatureIndexes: [],\n data: EMPTY_DATA,\n onEdit: function onEdit(_ref) {\n var updatedData = _ref.updatedData,\n editType = _ref.editType;\n\n if (editType === 'addFeature') {\n var coordinates = updatedData.features[0].geometry.coordinates;\n\n if (_this2.props.selectionType === SELECTION_TYPE.RECTANGLE) {\n _this2._selectRectangleObjects(coordinates);\n } else if (_this2.props.selectionType === SELECTION_TYPE.POLYGON) {\n _this2._selectPolygonObjects(coordinates);\n }\n }\n }\n }, inheritedProps)))];\n\n if (pendingPolygonSelection) {\n var bigPolygon = pendingPolygonSelection.bigPolygon;\n layers.push( // @ts-ignore\n new _layers.PolygonLayer( // @ts-ignore\n this.getSubLayerProps({\n id: LAYER_ID_BLOCKER,\n pickable: true,\n stroked: false,\n opacity: 1.0,\n data: [bigPolygon],\n getLineColor: function getLineColor(obj) {\n return [0, 0, 0, 1];\n },\n getFillColor: function getFillColor(obj) {\n return [0, 0, 0, 1];\n },\n getPolygon: function getPolygon(o) {\n return o.geometry.coordinates;\n }\n })));\n }\n\n return layers;\n }\n }, {\n key: \"shouldUpdateState\",\n value: function shouldUpdateState(_ref2) {\n var _ref2$changeFlags = _ref2.changeFlags,\n stateChanged = _ref2$changeFlags.stateChanged,\n propsOrDataChanged = _ref2$changeFlags.propsOrDataChanged;\n return stateChanged || propsOrDataChanged;\n }\n }]);\n\n return SelectionLayer;\n}(_core.CompositeLayer);\n\nexports[\"default\"] = SelectionLayer;\n\n_defineProperty(SelectionLayer, \"layerName\", 'SelectionLayer');\n\n_defineProperty(SelectionLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvc2VsZWN0aW9uLWxheWVyLnRzIl0sIm5hbWVzIjpbIlNFTEVDVElPTl9UWVBFIiwiTk9ORSIsIlJFQ1RBTkdMRSIsIlBPTFlHT04iLCJNT0RFX01BUCIsIkRyYXdSZWN0YW5nbGVNb2RlIiwiRHJhd1BvbHlnb25Nb2RlIiwiTU9ERV9DT05GSUdfTUFQIiwiZHJhZ1RvRHJhdyIsImRlZmF1bHRQcm9wcyIsInNlbGVjdGlvblR5cGUiLCJsYXllcklkcyIsIm9uU2VsZWN0IiwiRU1QVFlfREFUQSIsInR5cGUiLCJmZWF0dXJlcyIsIkVYUEFOU0lPTl9LTSIsIkxBWUVSX0lEX0dFT0pTT04iLCJMQVlFUl9JRF9CTE9DS0VSIiwiUEFTU19USFJPVUdIX1BST1BTIiwiU2VsZWN0aW9uTGF5ZXIiLCJjb29yZGluYXRlcyIsInByb3BzIiwiY29udGV4dCIsInZpZXdwb3J0IiwicHJvamVjdCIsIngxIiwieTEiLCJ4MiIsInkyIiwicGlja2luZ0luZm9zIiwiZGVjayIsInBpY2tPYmplY3RzIiwieCIsIk1hdGgiLCJtaW4iLCJ5Iiwid2lkdGgiLCJhYnMiLCJoZWlnaHQiLCJtb3VzZVBvaW50cyIsIm1hcCIsImMiLCJhbGxYIiwibW91c2VQb2ludCIsImFsbFkiLCJtYXhYIiwibWF4IiwibWF4WSIsImxhbmRQb2ludHNQb2x5IiwiYmlnQnVmZmVyIiwiYmlnUG9seWdvbiIsImUiLCJjb25zb2xlIiwibG9nIiwic2V0U3RhdGUiLCJwZW5kaW5nUG9seWdvblNlbGVjdGlvbiIsImJsb2NrZXJJZCIsImlkIiwic2V0VGltZW91dCIsImZpbHRlciIsIml0ZW0iLCJsYXllciIsInN0YXRlIiwibW9kZSIsIlZpZXdNb2RlIiwibW9kZUNvbmZpZyIsImluaGVyaXRlZFByb3BzIiwiZm9yRWFjaCIsInAiLCJ1bmRlZmluZWQiLCJsYXllcnMiLCJFZGl0YWJsZUdlb0pzb25MYXllciIsImdldFN1YkxheWVyUHJvcHMiLCJwaWNrYWJsZSIsInNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJkYXRhIiwib25FZGl0IiwidXBkYXRlZERhdGEiLCJlZGl0VHlwZSIsImdlb21ldHJ5IiwiX3NlbGVjdFJlY3RhbmdsZU9iamVjdHMiLCJfc2VsZWN0UG9seWdvbk9iamVjdHMiLCJwdXNoIiwiUG9seWdvbkxheWVyIiwic3Ryb2tlZCIsIm9wYWNpdHkiLCJnZXRMaW5lQ29sb3IiLCJvYmoiLCJnZXRGaWxsQ29sb3IiLCJnZXRQb2x5Z29uIiwibyIsImNoYW5nZUZsYWdzIiwic3RhdGVDaGFuZ2VkIiwicHJvcHNPckRhdGFDaGFuZ2VkIiwiQ29tcG9zaXRlTGF5ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU8sSUFBTUEsY0FBYyxHQUFHO0FBQzVCQyxFQUFBQSxJQUFJLEVBQUUsSUFEc0I7QUFFNUJDLEVBQUFBLFNBQVMsRUFBRSxXQUZpQjtBQUc1QkMsRUFBQUEsT0FBTyxFQUFFO0FBSG1CLENBQXZCOztBQU1QLElBQU1DLFFBQVEsK0NBQ1hKLGNBQWMsQ0FBQ0UsU0FESixFQUNnQkcsNEJBRGhCLDhCQUVYTCxjQUFjLENBQUNHLE9BRkosRUFFY0csMEJBRmQsYUFBZDs7QUFLQSxJQUFNQyxlQUFlLHVCQUNsQlAsY0FBYyxDQUFDRSxTQURHLEVBQ1M7QUFBRU0sRUFBQUEsVUFBVSxFQUFFO0FBQWQsQ0FEVCxDQUFyQjs7QUFVQSxJQUFNQyxZQUFpQyxHQUFHO0FBQ3hDQyxFQUFBQSxhQUFhLEVBQUVWLGNBQWMsQ0FBQ0UsU0FEVTtBQUV4Q1MsRUFBQUEsUUFBUSxFQUFFLEVBRjhCO0FBR3hDQyxFQUFBQSxRQUFRLEVBQUUsb0JBQU0sQ0FBRTtBQUhzQixDQUExQztBQU1BLElBQU1DLFVBQVUsR0FBRztBQUNqQkMsRUFBQUEsSUFBSSxFQUFFLG1CQURXO0FBRWpCQyxFQUFBQSxRQUFRLEVBQUU7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QUQsRUFBSSxDQUFKLEVBQU8sQ0FBUCxFQUFVLENBQVYsQ0FBVDtBQUFBLFdBTk07QUFPcEJDLFVBQUFBLFlBQVksRUFBRSxzQkFBQ0QsR0FBRDtBQUFBLG1CQUFTLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsQ0FBVixDQUFUO0FBQUEsV0FQTTtBQVFwQkUsVUFBQUEsVUFBVSxFQUFFLG9CQUFDQyxDQUFEO0FBQUEsbUJBQU9BLENBQUMsQ0FBQ1gsUUFBRixDQUFXM0QsV0FBbEI7QUFBQTtBQVJRLFNBQXRCLENBRkYsQ0FGRjtBQWdCRDs7QUFFRCxhQUFPa0QsTUFBUDtBQUNEOzs7NkNBRTZGO0FBQUEsb0NBQTFFcUIsV0FBMEU7QUFBQSxVQUEzREMsWUFBMkQscUJBQTNEQSxZQUEyRDtBQUFBLFVBQTdDQyxrQkFBNkMscUJBQTdDQSxrQkFBNkM7QUFDNUYsYUFBT0QsWUFBWSxJQUFJQyxrQkFBdkI7QUFDRDs7OztFQXZJT0Msb0I7Ozs7Z0JBSFczRSxjLGVBSUEsZ0I7O2dCQUpBQSxjLGtCQUtHWCxZIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbmltcG9ydCB7IENvbXBvc2l0ZUxheWVyIH0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQgeyBQb2x5Z29uTGF5ZXIgfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHsgQ29tcG9zaXRlTGF5ZXJQcm9wcyB9IGZyb20gJ0BkZWNrLmdsL2NvcmUvbGliL2NvbXBvc2l0ZS1sYXllcic7XG5pbXBvcnQgeyBwb2x5Z29uIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgdHVyZkJ1ZmZlciBmcm9tICdAdHVyZi9idWZmZXInO1xuaW1wb3J0IHR1cmZEaWZmZXJlbmNlIGZyb20gJ0B0dXJmL2RpZmZlcmVuY2UnO1xuaW1wb3J0IHsgRHJhd1JlY3RhbmdsZU1vZGUsIERyYXdQb2x5Z29uTW9kZSwgVmlld01vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuXG5pbXBvcnQgRWRpdGFibGVHZW9Kc29uTGF5ZXIgZnJvbSAnLi9lZGl0YWJsZS1nZW9qc29uLWxheWVyJztcblxuZXhwb3J0IGNvbnN0IFNFTEVDVElPTl9UWVBFID0ge1xuICBOT05FOiBudWxsLFxuICBSRUNUQU5HTEU6ICdyZWN0YW5nbGUnLFxuICBQT0xZR09OOiAncG9seWdvbicsXG59O1xuXG5jb25zdCBNT0RFX01BUCA9IHtcbiAgW1NFTEVDVElPTl9UWVBFLlJFQ1RBTkdMRV06IERyYXdSZWN0YW5nbGVNb2RlLFxuICBbU0VMRUNUSU9OX1RZUEUuUE9MWUdPTl06IERyYXdQb2x5Z29uTW9kZSxcbn07XG5cbmNvbnN0IE1PREVfQ09ORklHX01BUCA9IHtcbiAgW1NFTEVDVElPTl9UWVBFLlJFQ1RBTkdMRV06IHsgZHJhZ1RvRHJhdzogdHJ1ZSB9LFxufTtcblxuaW50ZXJmYWNlIFNlbGVjdGlvbkxheWVyUHJvcHMgZXh0ZW5kcyBDb21wb3NpdGVMYXllclByb3BzPGFueT4ge1xuICBsYXllcklkczogYW55W107XG4gIG9uU2VsZWN0OiAoaW5mbzogYW55KSA9PiBhbnk7XG4gIHNlbGVjdGlvblR5cGU6IHN0cmluZyB8IG51bGw7XG59XG5cbmNvbnN0IGRlZmF1bHRQcm9wczogU2VsZWN0aW9uTGF5ZXJQcm9wcyA9IHtcbiAgc2VsZWN0aW9uVHlwZTogU0VMRUNUSU9OX1RZUEUuUkVDVEFOR0xFLFxuICBsYXllcklkczogW10sXG4gIG9uU2VsZWN0OiAoKSA9PiB7fSxcbn07XG5cbmNvbnN0IEVNUFRZX0RBVEEgPSB7XG4gIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gIGZlYXR1cmVzOiBbXSxcbn07XG5cbmNvbnN0IEVYUEFOU0lPTl9LTSA9IDUwO1xuY29uc3QgTEFZRVJfSURfR0VPSlNPTiA9ICdzZWxlY3Rpb24tZ2VvanNvbic7XG5jb25zdCBMQVlFUl9JRF9CTE9DS0VSID0gJ3NlbGVjdGlvbi1ibG9ja2VyJztcblxuY29uc3QgUEFTU19USFJPVUdIX1BST1BTID0gW1xuICAnbGluZVdpZHRoU2NhbGUnLFxuICAnbGluZVdpZHRoTWluUGl4ZWxzJyxcbiAgJ2xpbmVXaWR0aE1heFBpeGVscycsXG4gICdsaW5lV2lkdGhVbml0cycsXG4gICdsaW5lSm9pbnRSb3VuZGVkJyxcbiAgJ2xpbmVDYXBSb3VuZGVkJyxcbiAgJ2xpbmVNaXRlckxpbWl0JyxcbiAgJ3BvaW50UmFkaXVzU2NhbGUnLFxuICAncG9pbnRSYWRpdXNNaW5QaXhlbHMnLFxuICAncG9pbnRSYWRpdXNNYXhQaXhlbHMnLFxuICAnbGluZURhc2hKdXN0aWZpZWQnLFxuICAnZ2V0TGluZUNvbG9yJyxcbiAgJ2dldEZpbGxDb2xvcicsXG4gICdnZXRSYWRpdXMnLFxuICAnZ2V0TGluZVdpZHRoJyxcbiAgJ2dldExpbmVEYXNoQXJyYXknLFxuICAnZ2V0VGVudGF0aXZlTGluZURhc2hBcnJheScsXG4gICdnZXRUZW50YXRpdmVMaW5lQ29sb3InLFxuICAnZ2V0VGVudGF0aXZlRmlsbENvbG9yJyxcbiAgJ2dldFRlbnRhdGl2ZUxpbmVXaWR0aCcsXG5dO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VsZWN0aW9uTGF5ZXI8XG4gIEQsXG4gIFAgZXh0ZW5kcyBTZWxlY3Rpb25MYXllclByb3BzID0gU2VsZWN0aW9uTGF5ZXJQcm9wc1xuPiBleHRlbmRzIENvbXBvc2l0ZUxheWVyPEQsIFA+IHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdTZWxlY3Rpb25MYXllcic7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5cbiAgX3NlbGVjdFJlY3RhbmdsZU9iamVjdHMoY29vcmRpbmF0ZXM6IGFueSkge1xuICAgIGNvbnN0IHsgbGF5ZXJJZHMsIG9uU2VsZWN0IH0gPSB0aGlzLnByb3BzO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBbeDEsIHkxXSA9IHRoaXMuY29udGV4dC52aWV3cG9ydC5wcm9qZWN0KGNvb3JkaW5hdGVzWzBdWzBdKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgW3gyLCB5Ml0gPSB0aGlzLmNvbnRleHQudmlld3BvcnQucHJvamVjdChjb29yZGluYXRlc1swXVsyXSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHBpY2tpbmdJbmZvcyA9IHRoaXMuY29udGV4dC5kZWNrLnBpY2tPYmplY3RzKHtcbiAgICAgIHg6IE1hdGgubWluKHgxLCB4MiksXG4gICAgICB5OiBNYXRoLm1pbih5MSwgeTIpLFxuICAgICAgd2lkdGg6IE1hdGguYWJzKHgyIC0geDEpLFxuICAgICAgaGVpZ2h0OiBNYXRoLmFicyh5MiAtIHkxKSxcbiAgICAgIGxheWVySWRzLFxuICAgIH0pO1xuXG4gICAgb25TZWxlY3QoeyBwaWNraW5nSW5mb3MgfSk7XG4gIH1cblxuICBfc2VsZWN0UG9seWdvbk9iamVjdHMoY29vcmRpbmF0ZXM6IGFueSkge1xuICAgIGNvbnN0IHsgbGF5ZXJJZHMsIG9uU2VsZWN0IH0gPSB0aGlzLnByb3BzO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBtb3VzZVBvaW50cyA9IGNvb3JkaW5hdGVzWzBdLm1hcCgoYykgPT4gdGhpcy5jb250ZXh0LnZpZXdwb3J0LnByb2plY3QoYykpO1xuXG4gICAgY29uc3QgYWxsWCA9IG1vdXNlUG9pbnRzLm1hcCgobW91c2VQb2ludCkgPT4gbW91c2VQb2ludFswXSk7XG4gICAgY29uc3QgYWxsWSA9IG1vdXNlUG9pbnRzLm1hcCgobW91c2VQb2ludCkgPT4gbW91c2VQb2ludFsxXSk7XG4gICAgY29uc3QgeCA9IE1hdGgubWluKC4uLmFsbFgpO1xuICAgIGNvbnN0IHkgPSBNYXRoLm1pbiguLi5hbGxZKTtcbiAgICBjb25zdCBtYXhYID0gTWF0aC5tYXgoLi4uYWxsWCk7XG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KC4uLmFsbFkpO1xuXG4gICAgLy8gVXNlIGEgcG9seWdvbiB0byBoaWRlIHRoZSBvdXRzaWRlLCBiZWNhdXNlIHBpY2tPYmplY3RzKClcbiAgICAvLyBkb2VzIG5vdCBzdXBwb3J0IHBvbHlnb25zXG4gICAgY29uc3QgbGFuZFBvaW50c1BvbHkgPSBwb2x5Z29uKGNvb3JkaW5hdGVzKTtcbiAgICBjb25zdCBiaWdCdWZmZXIgPSB0dXJmQnVmZmVyKGxhbmRQb2ludHNQb2x5LCBFWFBBTlNJT05fS00pO1xuICAgIGxldCBiaWdQb2x5Z29uO1xuICAgIHRyeSB7XG4gICAgICAvLyB0dXJmRGlmZmVyZW5jZSB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIHRoZSBwb2x5Z29uXG4gICAgICAvLyBpbnRlcnNlY3RzIHdpdGggaXRzZWxmIChUT0RPOiBjaGVjayBpZiB0cnVlIGluIGFsbCB2ZXJzaW9ucylcbiAgICAgIGJpZ1BvbHlnb24gPSB0dXJmRGlmZmVyZW5jZShiaWdCdWZmZXIsIGxhbmRQb2ludHNQb2x5KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBpbnZhbGlkIHNlbGVjdGlvbiBwb2x5Z29uXG4gICAgICBjb25zb2xlLmxvZygndHVyZkRpZmZlcmVuY2UoKSBlcnJvcicsIGUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBwZW5kaW5nUG9seWdvblNlbGVjdGlvbjoge1xuICAgICAgICBiaWdQb2x5Z29uLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGJsb2NrZXJJZCA9IGAke3RoaXMucHJvcHMuaWR9LSR7TEFZRVJfSURfQkxPQ0tFUn1gO1xuXG4gICAgLy8gSEFDSywgZmluZCBhIGJldHRlciB3YXlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHBpY2tpbmdJbmZvcyA9IHRoaXMuY29udGV4dC5kZWNrLnBpY2tPYmplY3RzKHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgd2lkdGg6IG1heFggLSB4LFxuICAgICAgICBoZWlnaHQ6IG1heFkgLSB5LFxuICAgICAgICBsYXllcklkczogW2Jsb2NrZXJJZCwgLi4ubGF5ZXJJZHNdLFxuICAgICAgfSk7XG5cbiAgICAgIG9uU2VsZWN0KHtcbiAgICAgICAgcGlja2luZ0luZm9zOiBwaWNraW5nSW5mb3MuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmxheWVyLmlkICE9PSB0aGlzLnByb3BzLmlkKSxcbiAgICAgIH0pO1xuICAgIH0sIDI1MCk7XG4gIH1cblxuICByZW5kZXJMYXllcnMoKSB7XG4gICAgY29uc3QgeyBwZW5kaW5nUG9seWdvblNlbGVjdGlvbiB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGNvbnN0IG1vZGUgPSBNT0RFX01BUFt0aGlzLnByb3BzLnNlbGVjdGlvblR5cGVdIHx8IFZpZXdNb2RlO1xuICAgIGNvbnN0IG1vZGVDb25maWcgPSBNT0RFX0NPTkZJR19NQVBbdGhpcy5wcm9wcy5zZWxlY3Rpb25UeXBlXTtcblxuICAgIGNvbnN0IGluaGVyaXRlZFByb3BzID0ge307XG4gICAgUEFTU19USFJPVUdIX1BST1BTLmZvckVhY2goKHApID0+IHtcbiAgICAgIGlmICh0aGlzLnByb3BzW3BdICE9PSB1bmRlZmluZWQpIGluaGVyaXRlZFByb3BzW3BdID0gdGhpcy5wcm9wc1twXTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGxheWVycyA9IFtcbiAgICAgIG5ldyBFZGl0YWJsZUdlb0pzb25MYXllcihcbiAgICAgICAgdGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgICAgICBpZDogTEFZRVJfSURfR0VPSlNPTixcbiAgICAgICAgICBwaWNrYWJsZTogdHJ1ZSxcbiAgICAgICAgICBtb2RlLFxuICAgICAgICAgIG1vZGVDb25maWcsXG4gICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlczogW10sXG4gICAgICAgICAgZGF0YTogRU1QVFlfREFUQSxcbiAgICAgICAgICBvbkVkaXQ6ICh7IHVwZGF0ZWREYXRhLCBlZGl0VHlwZSB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoZWRpdFR5cGUgPT09ICdhZGRGZWF0dXJlJykge1xuICAgICAgICAgICAgICBjb25zdCB7IGNvb3JkaW5hdGVzIH0gPSB1cGRhdGVkRGF0YS5mZWF0dXJlc1swXS5nZW9tZXRyeTtcblxuICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3Rpb25UeXBlID09PSBTRUxFQ1RJT05fVFlQRS5SRUNUQU5HTEUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RSZWN0YW5nbGVPYmplY3RzKGNvb3JkaW5hdGVzKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLnNlbGVjdGlvblR5cGUgPT09IFNFTEVDVElPTl9UWVBFLlBPTFlHT04pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RQb2x5Z29uT2JqZWN0cyhjb29yZGluYXRlcyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLmluaGVyaXRlZFByb3BzLFxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICBdO1xuXG4gICAgaWYgKHBlbmRpbmdQb2x5Z29uU2VsZWN0aW9uKSB7XG4gICAgICBjb25zdCB7IGJpZ1BvbHlnb24gfSA9IHBlbmRpbmdQb2x5Z29uU2VsZWN0aW9uO1xuICAgICAgbGF5ZXJzLnB1c2goXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgbmV3IFBvbHlnb25MYXllcihcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgdGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgICAgICAgIGlkOiBMQVlFUl9JRF9CTE9DS0VSLFxuICAgICAgICAgICAgcGlja2FibGU6IHRydWUsXG4gICAgICAgICAgICBzdHJva2VkOiBmYWxzZSxcbiAgICAgICAgICAgIG9wYWNpdHk6IDEuMCxcbiAgICAgICAgICAgIGRhdGE6IFtiaWdQb2x5Z29uXSxcbiAgICAgICAgICAgIGdldExpbmVDb2xvcjogKG9iaikgPT4gWzAsIDAsIDAsIDFdLFxuICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiAob2JqKSA9PiBbMCwgMCwgMCwgMV0sXG4gICAgICAgICAgICBnZXRQb2x5Z29uOiAobykgPT4gby5nZW9tZXRyeS5jb29yZGluYXRlcyxcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBsYXllcnM7XG4gIH1cblxuICBzaG91bGRVcGRhdGVTdGF0ZSh7IGNoYW5nZUZsYWdzOiB7IHN0YXRlQ2hhbmdlZCwgcHJvcHNPckRhdGFDaGFuZ2VkIH0gfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHJldHVybiBzdGF0ZUNoYW5nZWQgfHwgcHJvcHNPckRhdGFDaGFuZ2VkO1xuICB9XG59XG4iXX0=","/* eslint-env browser */\n\nimport { CompositeLayer } from '@deck.gl/core';\nimport { PolygonLayer } from '@deck.gl/layers';\nimport { CompositeLayerProps } from '@deck.gl/core/lib/composite-layer';\nimport { polygon } from '@turf/helpers';\nimport turfBuffer from '@turf/buffer';\nimport turfDifference from '@turf/difference';\nimport { DrawRectangleMode, DrawPolygonMode, ViewMode } from '@nebula.gl/edit-modes';\n\nimport EditableGeoJsonLayer from './editable-geojson-layer';\n\nexport const SELECTION_TYPE = {\n NONE: null,\n RECTANGLE: 'rectangle',\n POLYGON: 'polygon',\n};\n\nconst MODE_MAP = {\n [SELECTION_TYPE.RECTANGLE]: DrawRectangleMode,\n [SELECTION_TYPE.POLYGON]: DrawPolygonMode,\n};\n\nconst MODE_CONFIG_MAP = {\n [SELECTION_TYPE.RECTANGLE]: { dragToDraw: true },\n};\n\ninterface SelectionLayerProps extends CompositeLayerProps {\n layerIds: any[];\n onSelect: (info: any) => any;\n selectionType: string | null;\n}\n\nconst defaultProps: SelectionLayerProps = {\n selectionType: SELECTION_TYPE.RECTANGLE,\n layerIds: [],\n onSelect: () => {},\n};\n\nconst EMPTY_DATA = {\n type: 'FeatureCollection',\n features: [],\n};\n\nconst EXPANSION_KM = 50;\nconst LAYER_ID_GEOJSON = 'selection-geojson';\nconst LAYER_ID_BLOCKER = 'selection-blocker';\n\nconst PASS_THROUGH_PROPS = [\n 'lineWidthScale',\n 'lineWidthMinPixels',\n 'lineWidthMaxPixels',\n 'lineWidthUnits',\n 'lineJointRounded',\n 'lineCapRounded',\n 'lineMiterLimit',\n 'pointRadiusScale',\n 'pointRadiusMinPixels',\n 'pointRadiusMaxPixels',\n 'lineDashJustified',\n 'getLineColor',\n 'getFillColor',\n 'getRadius',\n 'getLineWidth',\n 'getLineDashArray',\n 'getTentativeLineDashArray',\n 'getTentativeLineColor',\n 'getTentativeFillColor',\n 'getTentativeLineWidth',\n];\nexport default class SelectionLayer<\n D,\n P extends SelectionLayerProps = SelectionLayerProps\n> extends CompositeLayer {\n static layerName = 'SelectionLayer';\n static defaultProps = defaultProps;\n\n _selectRectangleObjects(coordinates: any) {\n const { layerIds, onSelect } = this.props;\n // @ts-ignore\n const [x1, y1] = this.context.viewport.project(coordinates[0][0]);\n // @ts-ignore\n const [x2, y2] = this.context.viewport.project(coordinates[0][2]);\n // @ts-ignore\n const pickingInfos = this.context.deck.pickObjects({\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1),\n layerIds,\n });\n\n onSelect({ pickingInfos });\n }\n\n _selectPolygonObjects(coordinates: any) {\n const { layerIds, onSelect } = this.props;\n // @ts-ignore\n const mousePoints = coordinates[0].map((c) => this.context.viewport.project(c));\n\n const allX = mousePoints.map((mousePoint) => mousePoint[0]);\n const allY = mousePoints.map((mousePoint) => mousePoint[1]);\n const x = Math.min(...allX);\n const y = Math.min(...allY);\n const maxX = Math.max(...allX);\n const maxY = Math.max(...allY);\n\n // Use a polygon to hide the outside, because pickObjects()\n // does not support polygons\n const landPointsPoly = polygon(coordinates);\n const bigBuffer = turfBuffer(landPointsPoly, EXPANSION_KM);\n let bigPolygon;\n try {\n // turfDifference throws an exception if the polygon\n // intersects with itself (TODO: check if true in all versions)\n bigPolygon = turfDifference(bigBuffer, landPointsPoly);\n } catch (e) {\n // invalid selection polygon\n console.log('turfDifference() error', e); // eslint-disable-line\n return;\n }\n\n this.setState({\n pendingPolygonSelection: {\n bigPolygon,\n },\n });\n\n const blockerId = `${this.props.id}-${LAYER_ID_BLOCKER}`;\n\n // HACK, find a better way\n setTimeout(() => {\n // @ts-ignore\n const pickingInfos = this.context.deck.pickObjects({\n x,\n y,\n width: maxX - x,\n height: maxY - y,\n layerIds: [blockerId, ...layerIds],\n });\n\n onSelect({\n pickingInfos: pickingInfos.filter((item) => item.layer.id !== this.props.id),\n });\n }, 250);\n }\n\n renderLayers() {\n const { pendingPolygonSelection } = this.state;\n\n const mode = MODE_MAP[this.props.selectionType] || ViewMode;\n const modeConfig = MODE_CONFIG_MAP[this.props.selectionType];\n\n const inheritedProps = {};\n PASS_THROUGH_PROPS.forEach((p) => {\n if (this.props[p] !== undefined) inheritedProps[p] = this.props[p];\n });\n\n const layers = [\n new EditableGeoJsonLayer(\n this.getSubLayerProps({\n id: LAYER_ID_GEOJSON,\n pickable: true,\n mode,\n modeConfig,\n selectedFeatureIndexes: [],\n data: EMPTY_DATA,\n onEdit: ({ updatedData, editType }) => {\n if (editType === 'addFeature') {\n const { coordinates } = updatedData.features[0].geometry;\n\n if (this.props.selectionType === SELECTION_TYPE.RECTANGLE) {\n this._selectRectangleObjects(coordinates);\n } else if (this.props.selectionType === SELECTION_TYPE.POLYGON) {\n this._selectPolygonObjects(coordinates);\n }\n }\n },\n ...inheritedProps,\n })\n ),\n ];\n\n if (pendingPolygonSelection) {\n const { bigPolygon } = pendingPolygonSelection;\n layers.push(\n // @ts-ignore\n new PolygonLayer(\n // @ts-ignore\n this.getSubLayerProps({\n id: LAYER_ID_BLOCKER,\n pickable: true,\n stroked: false,\n opacity: 1.0,\n data: [bigPolygon],\n getLineColor: (obj) => [0, 0, 0, 1],\n getFillColor: (obj) => [0, 0, 0, 1],\n getPolygon: (o) => o.geometry.coordinates,\n })\n )\n );\n }\n\n return layers;\n }\n\n shouldUpdateState({ changeFlags: { stateChanged, propsOrDataChanged } }: Record) {\n return stateChanged || propsOrDataChanged;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _core = require(\"@deck.gl/core\");\n\nvar _layers = require(\"@deck.gl/layers\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar defaultProps = {};\n\nvar ElevatedEditHandleLayer = /*#__PURE__*/function (_CompositeLayer) {\n _inherits(ElevatedEditHandleLayer, _CompositeLayer);\n\n var _super = _createSuper(ElevatedEditHandleLayer);\n\n function ElevatedEditHandleLayer() {\n _classCallCheck(this, ElevatedEditHandleLayer);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(ElevatedEditHandleLayer, [{\n key: \"renderLayers\",\n value: function renderLayers() {\n var handles = new _layers.ScatterplotLayer(Object.assign({}, this.props, {\n id: \"\".concat(this.props.id, \"-ScatterplotLayer\"),\n data: this.props.data\n }));\n var lines = new _layers.LineLayer(Object.assign({}, this.props, {\n id: \"\".concat(this.props.id, \"-LineLayer\"),\n data: this.props.data,\n pickable: false,\n getSourcePosition: function getSourcePosition(_ref) {\n var position = _ref.position;\n return [position[0], position[1], 0];\n },\n getTargetPosition: function getTargetPosition(_ref2) {\n var position = _ref2.position;\n return [position[0], position[1], position[2] || 0];\n },\n getColor: [150, 150, 150, 200],\n getStrokeWidth: 3\n }));\n return [handles, lines];\n }\n }]);\n\n return ElevatedEditHandleLayer;\n}(_core.CompositeLayer);\n\nexports[\"default\"] = ElevatedEditHandleLayer;\n\n_defineProperty(ElevatedEditHandleLayer, \"layerName\", 'ElevatedEditHandleLayer');\n\n_defineProperty(ElevatedEditHandleLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWxldmF0ZWQtZWRpdC1oYW5kbGUtbGF5ZXIudHMiXSwibmFtZXMiOlsiZGVmYXVsdFByb3BzIiwiRWxldmF0ZWRFZGl0SGFuZGxlTGF5ZXIiLCJoYW5kbGVzIiwiU2NhdHRlcnBsb3RMYXllciIsIk9iamVjdCIsImFzc2lnbiIsInByb3BzIiwiaWQiLCJkYXRhIiwibGluZXMiLCJMaW5lTGF5ZXIiLCJwaWNrYWJsZSIsImdldFNvdXJjZVBvc2l0aW9uIiwicG9zaXRpb24iLCJnZXRUYXJnZXRQb3NpdGlvbiIsImdldENvbG9yIiwiZ2V0U3Ryb2tlV2lkdGgiLCJDb21wb3NpdGVMYXllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLFlBQVksR0FBRyxFQUFyQjs7SUFFcUJDLHVCOzs7Ozs7Ozs7Ozs7O21DQUdKO0FBQ2IsVUFBTUMsT0FBTyxHQUFHLElBQUlDLHdCQUFKLENBQ2RDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0IsS0FBS0MsS0FBdkIsRUFBOEI7QUFDNUJDLFFBQUFBLEVBQUUsWUFBSyxLQUFLRCxLQUFMLENBQVdDLEVBQWhCLHNCQUQwQjtBQUU1QkMsUUFBQUEsSUFBSSxFQUFFLEtBQUtGLEtBQUwsQ0FBV0U7QUFGVyxPQUE5QixDQURjLENBQWhCO0FBT0EsVUFBTUMsS0FBSyxHQUFHLElBQUlDLGlCQUFKLENBQ1pOLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0IsS0FBS0MsS0FBdkIsRUFBOEI7QUFDNUJDLFFBQUFBLEVBQUUsWUFBSyxLQUFLRCxLQUFMLENBQVdDLEVBQWhCLGVBRDBCO0FBRTVCQyxRQUFBQSxJQUFJLEVBQUUsS0FBS0YsS0FBTCxDQUFXRSxJQUZXO0FBRzVCRyxRQUFBQSxRQUFRLEVBQUUsS0FIa0I7QUFJNUJDLFFBQUFBLGlCQUFpQixFQUFFO0FBQUEsY0FBR0MsUUFBSCxRQUFHQSxRQUFIO0FBQUEsaUJBQWtCLENBQUNBLFFBQVEsQ0FBQyxDQUFELENBQVQsRUFBY0EsUUFBUSxDQUFDLENBQUQsQ0FBdEIsRUFBMkIsQ0FBM0IsQ0FBbEI7QUFBQSxTQUpTO0FBSzVCQyxRQUFBQSxpQkFBaUIsRUFBRTtBQUFBLGNBQUdELFFBQUgsU0FBR0EsUUFBSDtBQUFBLGlCQUFrQixDQUFDQSxRQUFRLENBQUMsQ0FBRCxDQUFULEVBQWNBLFFBQVEsQ0FBQyxDQUFELENBQXRCLEVBQTJCQSxRQUFRLENBQUMsQ0FBRCxDQUFSLElBQWUsQ0FBMUMsQ0FBbEI7QUFBQSxTQUxTO0FBTTVCRSxRQUFBQSxRQUFRLEVBQUUsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXLEdBQVgsRUFBZ0IsR0FBaEIsQ0FOa0I7QUFPNUJDLFFBQUFBLGNBQWMsRUFBRTtBQVBZLE9BQTlCLENBRFksQ0FBZDtBQVlBLGFBQU8sQ0FBQ2QsT0FBRCxFQUFVTyxLQUFWLENBQVA7QUFDRDs7OztFQXhCa0RRLG9COzs7O2dCQUFoQ2hCLHVCLGVBQ0EseUI7O2dCQURBQSx1QixrQkFFR0QsWSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG5pbXBvcnQgeyBDb21wb3NpdGVMYXllciB9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHsgU2NhdHRlcnBsb3RMYXllciwgTGluZUxheWVyIH0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuY29uc3QgZGVmYXVsdFByb3BzID0ge307XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVsZXZhdGVkRWRpdEhhbmRsZUxheWVyIGV4dGVuZHMgQ29tcG9zaXRlTGF5ZXI8YW55PiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnRWxldmF0ZWRFZGl0SGFuZGxlTGF5ZXInO1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuICByZW5kZXJMYXllcnMoKSB7XG4gICAgY29uc3QgaGFuZGxlcyA9IG5ldyBTY2F0dGVycGxvdExheWVyKFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5wcm9wcywge1xuICAgICAgICBpZDogYCR7dGhpcy5wcm9wcy5pZH0tU2NhdHRlcnBsb3RMYXllcmAsXG4gICAgICAgIGRhdGE6IHRoaXMucHJvcHMuZGF0YSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGxpbmVzID0gbmV3IExpbmVMYXllcihcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIHRoaXMucHJvcHMsIHtcbiAgICAgICAgaWQ6IGAke3RoaXMucHJvcHMuaWR9LUxpbmVMYXllcmAsXG4gICAgICAgIGRhdGE6IHRoaXMucHJvcHMuZGF0YSxcbiAgICAgICAgcGlja2FibGU6IGZhbHNlLFxuICAgICAgICBnZXRTb3VyY2VQb3NpdGlvbjogKHsgcG9zaXRpb24gfSkgPT4gW3Bvc2l0aW9uWzBdLCBwb3NpdGlvblsxXSwgMF0sXG4gICAgICAgIGdldFRhcmdldFBvc2l0aW9uOiAoeyBwb3NpdGlvbiB9KSA9PiBbcG9zaXRpb25bMF0sIHBvc2l0aW9uWzFdLCBwb3NpdGlvblsyXSB8fCAwXSxcbiAgICAgICAgZ2V0Q29sb3I6IFsxNTAsIDE1MCwgMTUwLCAyMDBdLFxuICAgICAgICBnZXRTdHJva2VXaWR0aDogMyxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBbaGFuZGxlcywgbGluZXNdO1xuICB9XG59XG4iXX0=","/* eslint-env browser */\n\nimport { CompositeLayer } from '@deck.gl/core';\nimport { ScatterplotLayer, LineLayer } from '@deck.gl/layers';\n\nconst defaultProps = {};\n\nexport default class ElevatedEditHandleLayer extends CompositeLayer {\n static layerName = 'ElevatedEditHandleLayer';\n static defaultProps = defaultProps;\n renderLayers() {\n const handles = new ScatterplotLayer(\n Object.assign({}, this.props, {\n id: `${this.props.id}-ScatterplotLayer`,\n data: this.props.data,\n })\n );\n\n const lines = new LineLayer(\n Object.assign({}, this.props, {\n id: `${this.props.id}-LineLayer`,\n data: this.props.data,\n pickable: false,\n getSourcePosition: ({ position }) => [position[0], position[1], 0],\n getTargetPosition: ({ position }) => [position[0], position[1], position[2] || 0],\n getColor: [150, 150, 150, 200],\n getStrokeWidth: 3,\n })\n );\n\n return [handles, lines];\n }\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, picking, UNIT } from '@deck.gl/core';\nimport { Model, Geometry } from '@luma.gl/core';\nimport vs from './line-layer-vertex.glsl';\nimport fs from './line-layer-fragment.glsl';\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n getSourcePosition: {\n type: 'accessor',\n value: x => x.sourcePosition\n },\n getTargetPosition: {\n type: 'accessor',\n value: x => x.targetPosition\n },\n getColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n getWidth: {\n type: 'accessor',\n value: 1\n },\n widthUnits: 'pixels',\n widthScale: {\n type: 'number',\n value: 1,\n min: 0\n },\n widthMinPixels: {\n type: 'number',\n value: 0,\n min: 0\n },\n widthMaxPixels: {\n type: 'number',\n value: Number.MAX_SAFE_INTEGER,\n min: 0\n }\n};\nexport default class LineLayer extends Layer {\n getBounds() {\n var _this$getAttributeMan;\n\n return (_this$getAttributeMan = this.getAttributeManager()) === null || _this$getAttributeMan === void 0 ? void 0 : _this$getAttributeMan.getBounds(['instanceSourcePositions', 'instanceTargetPositions']);\n }\n\n getShaders() {\n return super.getShaders({\n vs,\n fs,\n modules: [project32, picking]\n });\n }\n\n get wrapLongitude() {\n return false;\n }\n\n initializeState() {\n const attributeManager = this.getAttributeManager();\n attributeManager.addInstanced({\n instanceSourcePositions: {\n size: 3,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getSourcePosition'\n },\n instanceTargetPositions: {\n size: 3,\n type: 5130,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getTargetPosition'\n },\n instanceColors: {\n size: this.props.colorFormat.length,\n type: 5121,\n normalized: true,\n transition: true,\n accessor: 'getColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceWidths: {\n size: 1,\n transition: true,\n accessor: 'getWidth',\n defaultValue: 1\n }\n });\n }\n\n updateState(params) {\n super.updateState(params);\n\n if (params.changeFlags.extensionsChanged) {\n var _this$state$model;\n\n const {\n gl\n } = this.context;\n (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n this.state.model = this._getModel(gl);\n this.getAttributeManager().invalidateAll();\n }\n }\n\n draw({\n uniforms\n }) {\n const {\n widthUnits,\n widthScale,\n widthMinPixels,\n widthMaxPixels,\n wrapLongitude\n } = this.props;\n this.state.model.setUniforms(uniforms).setUniforms({\n widthUnits: UNIT[widthUnits],\n widthScale,\n widthMinPixels,\n widthMaxPixels,\n useShortestPath: wrapLongitude ? 1 : 0\n }).draw();\n\n if (wrapLongitude) {\n this.state.model.setUniforms({\n useShortestPath: -1\n }).draw();\n }\n }\n\n _getModel(gl) {\n const positions = [0, -1, 0, 0, 1, 0, 1, -1, 0, 1, 1, 0];\n return new Model(gl, { ...this.getShaders(),\n id: this.props.id,\n geometry: new Geometry({\n drawMode: 5,\n attributes: {\n positions: new Float32Array(positions)\n }\n }),\n isInstanced: true\n });\n }\n\n}\n\n_defineProperty(LineLayer, \"layerName\", 'LineLayer');\n\n_defineProperty(LineLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=line-layer.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {\n Layer,\n project32,\n picking,\n UNIT,\n LayerProps,\n LayerDataSource,\n Unit,\n Position,\n Accessor,\n Color,\n UpdateParameters,\n DefaultProps\n} from '@deck.gl/core';\nimport GL from '@luma.gl/constants';\nimport {Model, Geometry} from '@luma.gl/core';\n\nimport vs from './line-layer-vertex.glsl';\nimport fs from './line-layer-fragment.glsl';\n\nconst DEFAULT_COLOR: [number, number, number, number] = [0, 0, 0, 255];\n\nconst defaultProps: DefaultProps = {\n getSourcePosition: {type: 'accessor', value: x => x.sourcePosition},\n getTargetPosition: {type: 'accessor', value: x => x.targetPosition},\n getColor: {type: 'accessor', value: DEFAULT_COLOR},\n getWidth: {type: 'accessor', value: 1},\n\n widthUnits: 'pixels',\n widthScale: {type: 'number', value: 1, min: 0},\n widthMinPixels: {type: 'number', value: 0, min: 0},\n widthMaxPixels: {type: 'number', value: Number.MAX_SAFE_INTEGER, min: 0}\n};\n\n/** All properties supported by LineLayer. */\nexport type LineLayerProps = _LineLayerProps & LayerProps;\n\n/** Properties added by LineLayer. */\ntype _LineLayerProps = {\n data: LayerDataSource;\n /**\n * The units of the line width, one of `'meters'`, `'common'`, and `'pixels'`.\n * @default 'pixels'\n */\n widthUnits?: Unit;\n\n /**\n * The scaling multiplier for the width of each line.\n * @default 1\n */\n widthScale?: number;\n\n /**\n * The minimum line width in pixels.\n * @default 0\n */\n widthMinPixels?: number;\n\n /**\n * The maximum line width in pixels.\n * @default Number.MAX_SAFE_INTEGER\n */\n widthMaxPixels?: number;\n\n /**\n * Source position of each object.\n * @default object => object.sourcePosition\n */\n getSourcePosition?: Accessor;\n\n /**\n * Target position of each object.\n * @default object => object.targetPosition\n */\n getTargetPosition?: Accessor;\n\n /**\n * The rgba color is in the format of `[r, g, b, [a]]`.\n * @default [0, 0, 0, 255]\n */\n getColor?: Accessor;\n\n /**\n * Width of each object\n * @default 1\n */\n getWidth?: Accessor;\n};\n\n/**\n * A layer that renders straight lines joining pairs of source and target coordinates.\n */\nexport default class LineLayer extends Layer<\n ExtraProps & Required<_LineLayerProps>\n> {\n static layerName = 'LineLayer';\n static defaultProps = defaultProps;\n\n getBounds(): [number[], number[]] | null {\n return this.getAttributeManager()?.getBounds([\n 'instanceSourcePositions',\n 'instanceTargetPositions'\n ]);\n }\n\n getShaders() {\n return super.getShaders({vs, fs, modules: [project32, picking]});\n }\n\n // This layer has its own wrapLongitude logic\n get wrapLongitude(): boolean {\n return false;\n }\n\n initializeState() {\n const attributeManager = this.getAttributeManager()!;\n\n /* eslint-disable max-len */\n attributeManager.addInstanced({\n instanceSourcePositions: {\n size: 3,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getSourcePosition'\n },\n instanceTargetPositions: {\n size: 3,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getTargetPosition'\n },\n instanceColors: {\n size: this.props.colorFormat.length,\n type: GL.UNSIGNED_BYTE,\n normalized: true,\n transition: true,\n accessor: 'getColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceWidths: {\n size: 1,\n transition: true,\n accessor: 'getWidth',\n defaultValue: 1\n }\n });\n /* eslint-enable max-len */\n }\n\n updateState(params: UpdateParameters): void {\n super.updateState(params);\n\n if (params.changeFlags.extensionsChanged) {\n const {gl} = this.context;\n this.state.model?.delete();\n this.state.model = this._getModel(gl);\n this.getAttributeManager()!.invalidateAll();\n }\n }\n\n draw({uniforms}): void {\n const {widthUnits, widthScale, widthMinPixels, widthMaxPixels, wrapLongitude} = this.props;\n\n this.state.model\n .setUniforms(uniforms)\n .setUniforms({\n widthUnits: UNIT[widthUnits],\n widthScale,\n widthMinPixels,\n widthMaxPixels,\n useShortestPath: wrapLongitude ? 1 : 0\n })\n .draw();\n\n if (wrapLongitude) {\n // Render a second copy for the clipped lines at the 180th meridian\n this.state.model\n .setUniforms({\n useShortestPath: -1\n })\n .draw();\n }\n }\n\n protected _getModel(gl: WebGLRenderingContext): Model {\n /*\n * (0, -1)-------------_(1, -1)\n * | _,-\" |\n * o _,-\" o\n * | _,-\" |\n * (0, 1)\"-------------(1, 1)\n */\n const positions = [0, -1, 0, 0, 1, 0, 1, -1, 0, 1, 1, 0];\n\n return new Model(gl, {\n ...this.getShaders(),\n id: this.props.id,\n geometry: new Geometry({\n drawMode: GL.TRIANGLE_STRIP,\n attributes: {\n positions: new Float32Array(positions)\n }\n }),\n isInstanced: true\n });\n }\n}\n","export default \"#define SHADER_NAME line-layer-vertex-shader\\n\\nattribute vec3 positions;\\nattribute vec3 instanceSourcePositions;\\nattribute vec3 instanceTargetPositions;\\nattribute vec3 instanceSourcePositions64Low;\\nattribute vec3 instanceTargetPositions64Low;\\nattribute vec4 instanceColors;\\nattribute vec3 instancePickingColors;\\nattribute float instanceWidths;\\n\\nuniform float opacity;\\nuniform float widthScale;\\nuniform float widthMinPixels;\\nuniform float widthMaxPixels;\\nuniform float useShortestPath;\\nuniform int widthUnits;\\n\\nvarying vec4 vColor;\\nvarying vec2 uv;\\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) {\\n vec2 dir_screenspace = normalize(line_clipspace * project_uViewportSize);\\n dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\\n\\n return dir_screenspace * offset_direction * width / 2.0;\\n}\\n\\nvec3 splitLine(vec3 a, vec3 b, float x) {\\n float t = (x - a.x) / (b.x - a.x);\\n return vec3(x, mix(a.yz, b.yz, t));\\n}\\n\\nvoid main(void) {\\n geometry.worldPosition = instanceSourcePositions;\\n geometry.worldPositionAlt = instanceTargetPositions;\\n\\n vec3 source_world = instanceSourcePositions;\\n vec3 target_world = instanceTargetPositions;\\n vec3 source_world_64low = instanceSourcePositions64Low;\\n vec3 target_world_64low = instanceTargetPositions64Low;\\n\\n if (useShortestPath > 0.5 || useShortestPath < -0.5) {\\n source_world.x = mod(source_world.x + 180., 360.0) - 180.;\\n target_world.x = mod(target_world.x + 180., 360.0) - 180.;\\n float deltaLng = target_world.x - source_world.x;\\n\\n if (deltaLng * useShortestPath > 180.) {\\n source_world.x += 360. * useShortestPath;\\n source_world = splitLine(source_world, target_world, 180. * useShortestPath);\\n source_world_64low = vec3(0.0);\\n } else if (deltaLng * useShortestPath < -180.) {\\n target_world.x += 360. * useShortestPath;\\n target_world = splitLine(source_world, target_world, 180. * useShortestPath);\\n target_world_64low = vec3(0.0);\\n } else if (useShortestPath < 0.) {\\n gl_Position = vec4(0.);\\n return;\\n }\\n }\\n vec4 source_commonspace;\\n vec4 target_commonspace;\\n vec4 source = project_position_to_clipspace(source_world, source_world_64low, vec3(0.), source_commonspace);\\n vec4 target = project_position_to_clipspace(target_world, target_world_64low, vec3(0.), target_commonspace);\\n float segmentIndex = positions.x;\\n vec4 p = mix(source, target, segmentIndex);\\n geometry.position = mix(source_commonspace, target_commonspace, segmentIndex);\\n uv = positions.xy;\\n geometry.uv = uv;\\n geometry.pickingColor = instancePickingColors;\\n float widthPixels = clamp(\\n project_size_to_pixel(instanceWidths * widthScale, widthUnits),\\n widthMinPixels, widthMaxPixels\\n );\\n vec3 offset = vec3(\\n getExtrusionOffset(target.xy - source.xy, positions.y, widthPixels),\\n 0.0);\\n DECKGL_FILTER_SIZE(offset, geometry);\\n DECKGL_FILTER_GL_POSITION(p, geometry);\\n gl_Position = p + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0);\\n vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\\n DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n//# sourceMappingURL=line-layer-vertex.glsl.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME line-layer-vertex-shader\n\nattribute vec3 positions;\nattribute vec3 instanceSourcePositions;\nattribute vec3 instanceTargetPositions;\nattribute vec3 instanceSourcePositions64Low;\nattribute vec3 instanceTargetPositions64Low;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\nattribute float instanceWidths;\n\nuniform float opacity;\nuniform float widthScale;\nuniform float widthMinPixels;\nuniform float widthMaxPixels;\nuniform float useShortestPath;\nuniform int widthUnits;\n\nvarying vec4 vColor;\nvarying vec2 uv;\n\n// offset vector by strokeWidth pixels\n// offset_direction is -1 (left) or 1 (right)\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) {\n // normalized direction of the line\n vec2 dir_screenspace = normalize(line_clipspace * project_uViewportSize);\n // rotate by 90 degrees\n dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\n\n return dir_screenspace * offset_direction * width / 2.0;\n}\n\nvec3 splitLine(vec3 a, vec3 b, float x) {\n float t = (x - a.x) / (b.x - a.x);\n return vec3(x, mix(a.yz, b.yz, t));\n}\n\nvoid main(void) {\n geometry.worldPosition = instanceSourcePositions;\n geometry.worldPositionAlt = instanceTargetPositions;\n\n vec3 source_world = instanceSourcePositions;\n vec3 target_world = instanceTargetPositions;\n vec3 source_world_64low = instanceSourcePositions64Low;\n vec3 target_world_64low = instanceTargetPositions64Low;\n\n if (useShortestPath > 0.5 || useShortestPath < -0.5) {\n source_world.x = mod(source_world.x + 180., 360.0) - 180.;\n target_world.x = mod(target_world.x + 180., 360.0) - 180.;\n float deltaLng = target_world.x - source_world.x;\n\n if (deltaLng * useShortestPath > 180.) {\n source_world.x += 360. * useShortestPath;\n source_world = splitLine(source_world, target_world, 180. * useShortestPath);\n source_world_64low = vec3(0.0);\n } else if (deltaLng * useShortestPath < -180.) {\n target_world.x += 360. * useShortestPath;\n target_world = splitLine(source_world, target_world, 180. * useShortestPath);\n target_world_64low = vec3(0.0);\n } else if (useShortestPath < 0.) {\n // Line is not split, abort\n gl_Position = vec4(0.);\n return;\n }\n }\n\n // Position\n vec4 source_commonspace;\n vec4 target_commonspace;\n vec4 source = project_position_to_clipspace(source_world, source_world_64low, vec3(0.), source_commonspace);\n vec4 target = project_position_to_clipspace(target_world, target_world_64low, vec3(0.), target_commonspace);\n \n // linear interpolation of source & target to pick right coord\n float segmentIndex = positions.x;\n vec4 p = mix(source, target, segmentIndex);\n geometry.position = mix(source_commonspace, target_commonspace, segmentIndex);\n uv = positions.xy;\n geometry.uv = uv;\n geometry.pickingColor = instancePickingColors;\n\n // Multiply out width and clamp to limits\n float widthPixels = clamp(\n project_size_to_pixel(instanceWidths * widthScale, widthUnits),\n widthMinPixels, widthMaxPixels\n );\n\n // extrude\n vec3 offset = vec3(\n getExtrusionOffset(target.xy - source.xy, positions.y, widthPixels),\n 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n DECKGL_FILTER_GL_POSITION(p, geometry);\n gl_Position = p + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0);\n\n // Color\n vColor = vec4(instanceColors.rgb, instanceColors.a * opacity);\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;\n","export default \"#define SHADER_NAME line-layer-fragment-shader\\n\\nprecision highp float;\\n\\nvarying vec4 vColor;\\nvarying vec2 uv;\\n\\nvoid main(void) {\\n geometry.uv = uv;\\n\\n gl_FragColor = vColor;\\n\\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\\n}\\n\";\n//# sourceMappingURL=line-layer-fragment.glsl.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport default `\\\n#define SHADER_NAME line-layer-fragment-shader\n\nprecision highp float;\n\nvarying vec4 vColor;\nvarying vec2 uv;\n\nvoid main(void) {\n geometry.uv = uv;\n\n gl_FragColor = vColor;\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _layers = require(\"@deck.gl/layers\");\n\nvar _constants = _interopRequireDefault(require(\"@luma.gl/constants\"));\n\nvar _core = require(\"@luma.gl/core\");\n\nvar _outline = _interopRequireDefault(require(\"../../shaderlib/outline/outline\"));\n\nvar _constants2 = require(\"../../constants\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// TODO - this should be built into assembleShaders\nfunction injectShaderCode(_ref) {\n var source = _ref.source,\n _ref$code = _ref.code,\n code = _ref$code === void 0 ? '' : _ref$code;\n var INJECT_CODE = /}[^{}]*$/;\n return source.replace(INJECT_CODE, code.concat('\\n}\\n'));\n}\n\nvar VS_CODE = \" outline_setUV(gl_Position);\\n outline_setZLevel(instanceZLevel);\\n\";\nvar FS_CODE = \" gl_FragColor = outline_filterColor(gl_FragColor);\\n\";\nvar defaultProps = {\n getZLevel: function getZLevel() {\n return 0;\n }\n};\n\nvar PathOutlineLayer = /*#__PURE__*/function (_PathLayer) {\n _inherits(PathOutlineLayer, _PathLayer);\n\n var _super = _createSuper(PathOutlineLayer);\n\n function PathOutlineLayer() {\n _classCallCheck(this, PathOutlineLayer);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PathOutlineLayer, [{\n key: \"getShaders\",\n // Override getShaders to inject the outline module\n value: function getShaders() {\n var shaders = _get(_getPrototypeOf(PathOutlineLayer.prototype), \"getShaders\", this).call(this);\n\n return Object.assign({}, shaders, {\n modules: shaders.modules.concat([_outline[\"default\"]]),\n vs: injectShaderCode({\n source: shaders.vs,\n code: VS_CODE\n }),\n fs: injectShaderCode({\n source: shaders.fs,\n code: FS_CODE\n })\n });\n }\n }, {\n key: \"initializeState\",\n value: function initializeState(context) {\n _get(_getPrototypeOf(PathOutlineLayer.prototype), \"initializeState\", this).call(this, context); // Create an outline \"shadow\" map\n // TODO - we should create a single outlineMap for all layers\n\n\n this.setState({\n outlineFramebuffer: new _core.Framebuffer(context.gl),\n dummyTexture: new _core.Texture2D(context.gl)\n }); // Create an attribute manager\n\n this.state.attributeManager.addInstanced({\n instanceZLevel: {\n size: 1,\n type: _constants[\"default\"].UNSIGNED_BYTE,\n accessor: 'getZLevel'\n }\n });\n } // Override draw to add render module\n\n }, {\n key: \"draw\",\n value: function draw(_ref2) {\n var _ref2$moduleParameter = _ref2.moduleParameters,\n moduleParameters = _ref2$moduleParameter === void 0 ? {} : _ref2$moduleParameter,\n parameters = _ref2.parameters,\n uniforms = _ref2.uniforms,\n context = _ref2.context;\n // Need to calculate same uniforms as base layer\n var _this$props = this.props,\n jointRounded = _this$props.jointRounded,\n capRounded = _this$props.capRounded,\n billboard = _this$props.billboard,\n miterLimit = _this$props.miterLimit,\n widthUnits = _this$props.widthUnits,\n widthScale = _this$props.widthScale,\n widthMinPixels = _this$props.widthMinPixels,\n widthMaxPixels = _this$props.widthMaxPixels;\n uniforms = Object.assign({}, uniforms, {\n jointType: Number(jointRounded),\n capType: Number(capRounded),\n billboard: billboard,\n widthUnits: _constants2.UNIT[widthUnits],\n widthScale: widthScale,\n miterLimit: miterLimit,\n widthMinPixels: widthMinPixels,\n widthMaxPixels: widthMaxPixels\n }); // Render the outline shadowmap (based on segment z orders)\n\n var _this$state = this.state,\n outlineFramebuffer = _this$state.outlineFramebuffer,\n dummyTexture = _this$state.dummyTexture;\n outlineFramebuffer.resize();\n outlineFramebuffer.clear({\n color: true,\n depth: true\n });\n this.state.model.updateModuleSettings({\n outlineEnabled: true,\n outlineRenderShadowmap: true,\n outlineShadowmap: dummyTexture\n });\n this.state.model.draw({\n uniforms: Object.assign({}, uniforms, {\n jointType: 0,\n widthScale: this.props.widthScale * 1.3\n }),\n parameters: {\n depthTest: false,\n // Biggest value needs to go into buffer\n blendEquation: _constants[\"default\"].MAX\n },\n framebuffer: outlineFramebuffer\n }); // Now use the outline shadowmap to render the lines (with outlines)\n\n this.state.model.updateModuleSettings({\n outlineEnabled: true,\n outlineRenderShadowmap: false,\n outlineShadowmap: outlineFramebuffer\n });\n this.state.model.draw({\n uniforms: Object.assign({}, uniforms, {\n jointType: Number(jointRounded),\n capType: Number(capRounded),\n widthScale: this.props.widthScale\n }),\n parameters: {\n depthTest: false\n }\n });\n }\n }]);\n\n return PathOutlineLayer;\n}(_layers.PathLayer);\n\nexports[\"default\"] = PathOutlineLayer;\n\n_defineProperty(PathOutlineLayer, \"layerName\", 'PathOutlineLayer');\n\n_defineProperty(PathOutlineLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1vdXRsaW5lLWxheWVyL3BhdGgtb3V0bGluZS1sYXllci50cyJdLCJuYW1lcyI6WyJpbmplY3RTaGFkZXJDb2RlIiwic291cmNlIiwiY29kZSIsIklOSkVDVF9DT0RFIiwicmVwbGFjZSIsImNvbmNhdCIsIlZTX0NPREUiLCJGU19DT0RFIiwiZGVmYXVsdFByb3BzIiwiZ2V0WkxldmVsIiwiUGF0aE91dGxpbmVMYXllciIsInNoYWRlcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJtb2R1bGVzIiwib3V0bGluZSIsInZzIiwiZnMiLCJjb250ZXh0Iiwic2V0U3RhdGUiLCJvdXRsaW5lRnJhbWVidWZmZXIiLCJGcmFtZWJ1ZmZlciIsImdsIiwiZHVtbXlUZXh0dXJlIiwiVGV4dHVyZTJEIiwic3RhdGUiLCJhdHRyaWJ1dGVNYW5hZ2VyIiwiYWRkSW5zdGFuY2VkIiwiaW5zdGFuY2VaTGV2ZWwiLCJzaXplIiwidHlwZSIsIkdMIiwiVU5TSUdORURfQllURSIsImFjY2Vzc29yIiwibW9kdWxlUGFyYW1ldGVycyIsInBhcmFtZXRlcnMiLCJ1bmlmb3JtcyIsInByb3BzIiwiam9pbnRSb3VuZGVkIiwiY2FwUm91bmRlZCIsImJpbGxib2FyZCIsIm1pdGVyTGltaXQiLCJ3aWR0aFVuaXRzIiwid2lkdGhTY2FsZSIsIndpZHRoTWluUGl4ZWxzIiwid2lkdGhNYXhQaXhlbHMiLCJqb2ludFR5cGUiLCJOdW1iZXIiLCJjYXBUeXBlIiwiVU5JVCIsInJlc2l6ZSIsImNsZWFyIiwiY29sb3IiLCJkZXB0aCIsIm1vZGVsIiwidXBkYXRlTW9kdWxlU2V0dGluZ3MiLCJvdXRsaW5lRW5hYmxlZCIsIm91dGxpbmVSZW5kZXJTaGFkb3dtYXAiLCJvdXRsaW5lU2hhZG93bWFwIiwiZHJhdyIsImRlcHRoVGVzdCIsImJsZW5kRXF1YXRpb24iLCJNQVgiLCJmcmFtZWJ1ZmZlciIsIlBhdGhMYXllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFB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S0FERDtBQUVWO0FBQ0FDLFVBQUFBLGFBQWEsRUFBRTlCLHNCQUFHK0I7QUFIUixTQUxRO0FBVXBCQyxRQUFBQSxXQUFXLEVBQUUzQztBQVZPLE9BQXRCLEVBbkM2RCxDQWdEN0Q7O0FBQ0EsV0FBS0ssS0FBTCxDQUFXNkIsS0FBWCxDQUFpQkMsb0JBQWpCLENBQXNDO0FBQ3BDQyxRQUFBQSxjQUFjLEVBQUUsSUFEb0I7QUFFcENDLFFBQUFBLHNCQUFzQixFQUFFLEtBRlk7QUFHcENDLFFBQUFBLGdCQUFnQixFQUFFdEM7QUFIa0IsT0FBdEM7QUFLQSxXQUFLSyxLQUFMLENBQVc2QixLQUFYLENBQWlCSyxJQUFqQixDQUFzQjtBQUNwQnZCLFFBQUFBLFFBQVEsRUFBRXhCLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0J1QixRQUFsQixFQUE0QjtBQUNwQ1UsVUFBQUEsU0FBUyxFQUFFQyxNQUFNLENBQUNULFlBQUQsQ0FEbUI7QUFFcENVLFVBQUFBLE9BQU8sRUFBRUQsTUFBTSxDQUFDUixVQUFELENBRnFCO0FBR3BDSSxVQUFBQSxVQUFVLEVBQUUsS0FBS04sS0FBTCxDQUFXTTtBQUhhLFNBQTVCLENBRFU7QUFNcEJSLFFBQUFBLFVBQVUsRUFBRTtBQUNWeUIsVUFBQUEsU0FBUyxFQUFFO0FBREQ7QUFOUSxPQUF0QjtBQVVEOzs7O0VBbkdPSSxpQjs7OztnQkFIV3RELGdCLGVBSUEsa0I7O2dCQUpBQSxnQixrQkFLR0YsWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhdGhMYXllciB9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQgeyBQYXRoTGF5ZXJQcm9wcyB9IGZyb20gJ0BkZWNrLmdsL2xheWVycy9wYXRoLWxheWVyL3BhdGgtbGF5ZXInO1xuaW1wb3J0IEdMIGZyb20gJ0BsdW1hLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBGcmFtZWJ1ZmZlciwgVGV4dHVyZTJEIH0gZnJvbSAnQGx1bWEuZ2wvY29yZSc7XG5pbXBvcnQgb3V0bGluZSBmcm9tICcuLi8uLi9zaGFkZXJsaWIvb3V0bGluZS9vdXRsaW5lJztcbmltcG9ydCB7IFVOSVQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuXG4vLyBUT0RPIC0gdGhpcyBzaG91bGQgYmUgYnVpbHQgaW50byBhc3NlbWJsZVNoYWRlcnNcbmZ1bmN0aW9uIGluamVjdFNoYWRlckNvZGUoeyBzb3VyY2UsIGNvZGUgPSAnJyB9KSB7XG4gIGNvbnN0IElOSkVDVF9DT0RFID0gL31bXnt9XSokLztcbiAgcmV0dXJuIHNvdXJjZS5yZXBsYWNlKElOSkVDVF9DT0RFLCBjb2RlLmNvbmNhdCgnXFxufVxcbicpKTtcbn1cblxuY29uc3QgVlNfQ09ERSA9IGBcXFxuICBvdXRsaW5lX3NldFVWKGdsX1Bvc2l0aW9uKTtcbiAgb3V0bGluZV9zZXRaTGV2ZWwoaW5zdGFuY2VaTGV2ZWwpO1xuYDtcblxuY29uc3QgRlNfQ09ERSA9IGBcXFxuICBnbF9GcmFnQ29sb3IgPSBvdXRsaW5lX2ZpbHRlckNvbG9yKGdsX0ZyYWdDb2xvcik7XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhdGhPdXRsaW5lTGF5ZXJQcm9wczxEPiBleHRlbmRzIFBhdGhMYXllclByb3BzPEQ+IHtcbiAgZGFzaEp1c3RpZmllZD86IGJvb2xlYW47XG4gIGdldERhc2hBcnJheT86IFtudW1iZXIsIG51bWJlcl0gfCAoKGQ6IEQpID0+IFtudW1iZXIsIG51bWJlcl0gfCBudWxsKTtcbiAgZ2V0WkxldmVsPzogKGQ6IEQsIGluZGV4OiBudW1iZXIpID0+IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdFByb3BzOiBQYXRoT3V0bGluZUxheWVyUHJvcHM8YW55PiA9IHtcbiAgZ2V0WkxldmVsOiAoKSA9PiAwLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGF0aE91dGxpbmVMYXllcjxcbiAgRCxcbiAgUCBleHRlbmRzIFBhdGhPdXRsaW5lTGF5ZXJQcm9wczxEPiA9IFBhdGhPdXRsaW5lTGF5ZXJQcm9wczxEPlxuPiBleHRlbmRzIFBhdGhMYXllcjxELCBQPiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnUGF0aE91dGxpbmVMYXllcic7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5cbiAgLy8gT3ZlcnJpZGUgZ2V0U2hhZGVycyB0byBpbmplY3QgdGhlIG91dGxpbmUgbW9kdWxlXG4gIGdldFNoYWRlcnMoKSB7XG4gICAgY29uc3Qgc2hhZGVycyA9IHN1cGVyLmdldFNoYWRlcnMoKTtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc2hhZGVycywge1xuICAgICAgbW9kdWxlczogc2hhZGVycy5tb2R1bGVzLmNvbmNhdChbb3V0bGluZV0pLFxuICAgICAgdnM6IGluamVjdFNoYWRlckNvZGUoeyBzb3VyY2U6IHNoYWRlcnMudnMsIGNvZGU6IFZTX0NPREUgfSksXG4gICAgICBmczogaW5qZWN0U2hhZGVyQ29kZSh7IHNvdXJjZTogc2hhZGVycy5mcywgY29kZTogRlNfQ09ERSB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIGluaXRpYWxpemVTdGF0ZShjb250ZXh0OiBhbnkpIHtcbiAgICBzdXBlci5pbml0aWFsaXplU3RhdGUoY29udGV4dCk7XG5cbiAgICAvLyBDcmVhdGUgYW4gb3V0bGluZSBcInNoYWRvd1wiIG1hcFxuICAgIC8vIFRPRE8gLSB3ZSBzaG91bGQgY3JlYXRlIGEgc2luZ2xlIG91dGxpbmVNYXAgZm9yIGFsbCBsYXllcnNcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIG91dGxpbmVGcmFtZWJ1ZmZlcjogbmV3IEZyYW1lYnVmZmVyKGNvbnRleHQuZ2wpLFxuICAgICAgZHVtbXlUZXh0dXJlOiBuZXcgVGV4dHVyZTJEKGNvbnRleHQuZ2wpLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIGFuIGF0dHJpYnV0ZSBtYW5hZ2VyXG4gICAgdGhpcy5zdGF0ZS5hdHRyaWJ1dGVNYW5hZ2VyLmFkZEluc3RhbmNlZCh7XG4gICAgICBpbnN0YW5jZVpMZXZlbDoge1xuICAgICAgICBzaXplOiAxLFxuICAgICAgICB0eXBlOiBHTC5VTlNJR05FRF9CWVRFLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldFpMZXZlbCcsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLy8gT3ZlcnJpZGUgZHJhdyB0byBhZGQgcmVuZGVyIG1vZHVsZVxuICBkcmF3KHsgbW9kdWxlUGFyYW1ldGVycyA9IHt9LCBwYXJhbWV0ZXJzLCB1bmlmb3JtcywgY29udGV4dCB9KSB7XG4gICAgLy8gTmVlZCB0byBjYWxjdWxhdGUgc2FtZSB1bmlmb3JtcyBhcyBiYXNlIGxheWVyXG4gICAgY29uc3Qge1xuICAgICAgam9pbnRSb3VuZGVkLFxuICAgICAgY2FwUm91bmRlZCxcbiAgICAgIGJpbGxib2FyZCxcbiAgICAgIG1pdGVyTGltaXQsXG4gICAgICB3aWR0aFVuaXRzLFxuICAgICAgd2lkdGhTY2FsZSxcbiAgICAgIHdpZHRoTWluUGl4ZWxzLFxuICAgICAgd2lkdGhNYXhQaXhlbHMsXG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICB1bmlmb3JtcyA9IE9iamVjdC5hc3NpZ24oe30sIHVuaWZvcm1zLCB7XG4gICAgICBqb2ludFR5cGU6IE51bWJlcihqb2ludFJvdW5kZWQpLFxuICAgICAgY2FwVHlwZTogTnVtYmVyKGNhcFJvdW5kZWQpLFxuICAgICAgYmlsbGJvYXJkLFxuICAgICAgd2lkdGhVbml0czogVU5JVFt3aWR0aFVuaXRzXSxcbiAgICAgIHdpZHRoU2NhbGUsXG4gICAgICBtaXRlckxpbWl0LFxuICAgICAgd2lkdGhNaW5QaXhlbHMsXG4gICAgICB3aWR0aE1heFBpeGVscyxcbiAgICB9KTtcblxuICAgIC8vIFJlbmRlciB0aGUgb3V0bGluZSBzaGFkb3dtYXAgKGJhc2VkIG9uIHNlZ21lbnQgeiBvcmRlcnMpXG4gICAgY29uc3QgeyBvdXRsaW5lRnJhbWVidWZmZXIsIGR1bW15VGV4dHVyZSB9ID0gdGhpcy5zdGF0ZTtcbiAgICBvdXRsaW5lRnJhbWVidWZmZXIucmVzaXplKCk7XG4gICAgb3V0bGluZUZyYW1lYnVmZmVyLmNsZWFyKHsgY29sb3I6IHRydWUsIGRlcHRoOiB0cnVlIH0pO1xuXG4gICAgdGhpcy5zdGF0ZS5tb2RlbC51cGRhdGVNb2R1bGVTZXR0aW5ncyh7XG4gICAgICBvdXRsaW5lRW5hYmxlZDogdHJ1ZSxcbiAgICAgIG91dGxpbmVSZW5kZXJTaGFkb3dtYXA6IHRydWUsXG4gICAgICBvdXRsaW5lU2hhZG93bWFwOiBkdW1teVRleHR1cmUsXG4gICAgfSk7XG5cbiAgICB0aGlzLnN0YXRlLm1vZGVsLmRyYXcoe1xuICAgICAgdW5pZm9ybXM6IE9iamVjdC5hc3NpZ24oe30sIHVuaWZvcm1zLCB7XG4gICAgICAgIGpvaW50VHlwZTogMCxcbiAgICAgICAgd2lkdGhTY2FsZTogdGhpcy5wcm9wcy53aWR0aFNjYWxlICogMS4zLFxuICAgICAgfSksXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIGRlcHRoVGVzdDogZmFsc2UsXG4gICAgICAgIC8vIEJpZ2dlc3QgdmFsdWUgbmVlZHMgdG8gZ28gaW50byBidWZmZXJcbiAgICAgICAgYmxlbmRFcXVhdGlvbjogR0wuTUFYLFxuICAgICAgfSxcbiAgICAgIGZyYW1lYnVmZmVyOiBvdXRsaW5lRnJhbWVidWZmZXIsXG4gICAgfSk7XG5cbiAgICAvLyBOb3cgdXNlIHRoZSBvdXRsaW5lIHNoYWRvd21hcCB0byByZW5kZXIgdGhlIGxpbmVzICh3aXRoIG91dGxpbmVzKVxuICAgIHRoaXMuc3RhdGUubW9kZWwudXBkYXRlTW9kdWxlU2V0dGluZ3Moe1xuICAgICAgb3V0bGluZUVuYWJsZWQ6IHRydWUsXG4gICAgICBvdXRsaW5lUmVuZGVyU2hhZG93bWFwOiBmYWxzZSxcbiAgICAgIG91dGxpbmVTaGFkb3dtYXA6IG91dGxpbmVGcmFtZWJ1ZmZlcixcbiAgICB9KTtcbiAgICB0aGlzLnN0YXRlLm1vZGVsLmRyYXcoe1xuICAgICAgdW5pZm9ybXM6IE9iamVjdC5hc3NpZ24oe30sIHVuaWZvcm1zLCB7XG4gICAgICAgIGpvaW50VHlwZTogTnVtYmVyKGpvaW50Um91bmRlZCksXG4gICAgICAgIGNhcFR5cGU6IE51bWJlcihjYXBSb3VuZGVkKSxcbiAgICAgICAgd2lkdGhTY2FsZTogdGhpcy5wcm9wcy53aWR0aFNjYWxlLFxuICAgICAgfSksXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIGRlcHRoVGVzdDogZmFsc2UsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=","import { PathLayer } from '@deck.gl/layers';\nimport { PathLayerProps } from '@deck.gl/layers/path-layer/path-layer';\nimport GL from '@luma.gl/constants';\nimport { Framebuffer, Texture2D } from '@luma.gl/core';\nimport outline from '../../shaderlib/outline/outline';\nimport { UNIT } from '../../constants';\n\n// TODO - this should be built into assembleShaders\nfunction injectShaderCode({ source, code = '' }) {\n const INJECT_CODE = /}[^{}]*$/;\n return source.replace(INJECT_CODE, code.concat('\\n}\\n'));\n}\n\nconst VS_CODE = `\\\n outline_setUV(gl_Position);\n outline_setZLevel(instanceZLevel);\n`;\n\nconst FS_CODE = `\\\n gl_FragColor = outline_filterColor(gl_FragColor);\n`;\n\nexport interface PathOutlineLayerProps extends PathLayerProps {\n dashJustified?: boolean;\n getDashArray?: [number, number] | ((d: D) => [number, number] | null);\n getZLevel?: (d: D, index: number) => number;\n}\n\nconst defaultProps: PathOutlineLayerProps = {\n getZLevel: () => 0,\n};\n\nexport default class PathOutlineLayer<\n D,\n P extends PathOutlineLayerProps = PathOutlineLayerProps\n> extends PathLayer {\n static layerName = 'PathOutlineLayer';\n static defaultProps = defaultProps;\n\n // Override getShaders to inject the outline module\n getShaders() {\n const shaders = super.getShaders();\n return Object.assign({}, shaders, {\n modules: shaders.modules.concat([outline]),\n vs: injectShaderCode({ source: shaders.vs, code: VS_CODE }),\n fs: injectShaderCode({ source: shaders.fs, code: FS_CODE }),\n });\n }\n\n initializeState(context: any) {\n super.initializeState(context);\n\n // Create an outline \"shadow\" map\n // TODO - we should create a single outlineMap for all layers\n this.setState({\n outlineFramebuffer: new Framebuffer(context.gl),\n dummyTexture: new Texture2D(context.gl),\n });\n\n // Create an attribute manager\n this.state.attributeManager.addInstanced({\n instanceZLevel: {\n size: 1,\n type: GL.UNSIGNED_BYTE,\n accessor: 'getZLevel',\n },\n });\n }\n\n // Override draw to add render module\n draw({ moduleParameters = {}, parameters, uniforms, context }) {\n // Need to calculate same uniforms as base layer\n const {\n jointRounded,\n capRounded,\n billboard,\n miterLimit,\n widthUnits,\n widthScale,\n widthMinPixels,\n widthMaxPixels,\n } = this.props;\n\n uniforms = Object.assign({}, uniforms, {\n jointType: Number(jointRounded),\n capType: Number(capRounded),\n billboard,\n widthUnits: UNIT[widthUnits],\n widthScale,\n miterLimit,\n widthMinPixels,\n widthMaxPixels,\n });\n\n // Render the outline shadowmap (based on segment z orders)\n const { outlineFramebuffer, dummyTexture } = this.state;\n outlineFramebuffer.resize();\n outlineFramebuffer.clear({ color: true, depth: true });\n\n this.state.model.updateModuleSettings({\n outlineEnabled: true,\n outlineRenderShadowmap: true,\n outlineShadowmap: dummyTexture,\n });\n\n this.state.model.draw({\n uniforms: Object.assign({}, uniforms, {\n jointType: 0,\n widthScale: this.props.widthScale * 1.3,\n }),\n parameters: {\n depthTest: false,\n // Biggest value needs to go into buffer\n blendEquation: GL.MAX,\n },\n framebuffer: outlineFramebuffer,\n });\n\n // Now use the outline shadowmap to render the lines (with outlines)\n this.state.model.updateModuleSettings({\n outlineEnabled: true,\n outlineRenderShadowmap: false,\n outlineShadowmap: outlineFramebuffer,\n });\n this.state.model.draw({\n uniforms: Object.assign({}, uniforms, {\n jointType: Number(jointRounded),\n capType: Number(capRounded),\n widthScale: this.props.widthScale,\n }),\n parameters: {\n depthTest: false,\n },\n });\n }\n}\n","export default {\n DEPTH_BUFFER_BIT: 0x00000100,\n STENCIL_BUFFER_BIT: 0x00000400,\n COLOR_BUFFER_BIT: 0x00004000,\n POINTS: 0x0000,\n LINES: 0x0001,\n LINE_LOOP: 0x0002,\n LINE_STRIP: 0x0003,\n TRIANGLES: 0x0004,\n TRIANGLE_STRIP: 0x0005,\n TRIANGLE_FAN: 0x0006,\n ZERO: 0,\n ONE: 1,\n SRC_COLOR: 0x0300,\n ONE_MINUS_SRC_COLOR: 0x0301,\n SRC_ALPHA: 0x0302,\n ONE_MINUS_SRC_ALPHA: 0x0303,\n DST_ALPHA: 0x0304,\n ONE_MINUS_DST_ALPHA: 0x0305,\n DST_COLOR: 0x0306,\n ONE_MINUS_DST_COLOR: 0x0307,\n SRC_ALPHA_SATURATE: 0x0308,\n CONSTANT_COLOR: 0x8001,\n ONE_MINUS_CONSTANT_COLOR: 0x8002,\n CONSTANT_ALPHA: 0x8003,\n ONE_MINUS_CONSTANT_ALPHA: 0x8004,\n FUNC_ADD: 0x8006,\n FUNC_SUBTRACT: 0x800a,\n FUNC_REVERSE_SUBTRACT: 0x800b,\n BLEND_EQUATION: 0x8009,\n BLEND_EQUATION_RGB: 0x8009,\n BLEND_EQUATION_ALPHA: 0x883d,\n BLEND_DST_RGB: 0x80c8,\n BLEND_SRC_RGB: 0x80c9,\n BLEND_DST_ALPHA: 0x80ca,\n BLEND_SRC_ALPHA: 0x80cb,\n BLEND_COLOR: 0x8005,\n ARRAY_BUFFER_BINDING: 0x8894,\n ELEMENT_ARRAY_BUFFER_BINDING: 0x8895,\n LINE_WIDTH: 0x0b21,\n ALIASED_POINT_SIZE_RANGE: 0x846d,\n ALIASED_LINE_WIDTH_RANGE: 0x846e,\n CULL_FACE_MODE: 0x0b45,\n FRONT_FACE: 0x0b46,\n DEPTH_RANGE: 0x0b70,\n DEPTH_WRITEMASK: 0x0b72,\n DEPTH_CLEAR_VALUE: 0x0b73,\n DEPTH_FUNC: 0x0b74,\n STENCIL_CLEAR_VALUE: 0x0b91,\n STENCIL_FUNC: 0x0b92,\n STENCIL_FAIL: 0x0b94,\n STENCIL_PASS_DEPTH_FAIL: 0x0b95,\n STENCIL_PASS_DEPTH_PASS: 0x0b96,\n STENCIL_REF: 0x0b97,\n STENCIL_VALUE_MASK: 0x0b93,\n STENCIL_WRITEMASK: 0x0b98,\n STENCIL_BACK_FUNC: 0x8800,\n STENCIL_BACK_FAIL: 0x8801,\n STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802,\n STENCIL_BACK_PASS_DEPTH_PASS: 0x8803,\n STENCIL_BACK_REF: 0x8ca3,\n STENCIL_BACK_VALUE_MASK: 0x8ca4,\n STENCIL_BACK_WRITEMASK: 0x8ca5,\n VIEWPORT: 0x0ba2,\n SCISSOR_BOX: 0x0c10,\n COLOR_CLEAR_VALUE: 0x0c22,\n COLOR_WRITEMASK: 0x0c23,\n UNPACK_ALIGNMENT: 0x0cf5,\n PACK_ALIGNMENT: 0x0d05,\n MAX_TEXTURE_SIZE: 0x0d33,\n MAX_VIEWPORT_DIMS: 0x0d3a,\n SUBPIXEL_BITS: 0x0d50,\n RED_BITS: 0x0d52,\n GREEN_BITS: 0x0d53,\n BLUE_BITS: 0x0d54,\n ALPHA_BITS: 0x0d55,\n DEPTH_BITS: 0x0d56,\n STENCIL_BITS: 0x0d57,\n POLYGON_OFFSET_UNITS: 0x2a00,\n POLYGON_OFFSET_FACTOR: 0x8038,\n TEXTURE_BINDING_2D: 0x8069,\n SAMPLE_BUFFERS: 0x80a8,\n SAMPLES: 0x80a9,\n SAMPLE_COVERAGE_VALUE: 0x80aa,\n SAMPLE_COVERAGE_INVERT: 0x80ab,\n COMPRESSED_TEXTURE_FORMATS: 0x86a3,\n VENDOR: 0x1f00,\n RENDERER: 0x1f01,\n VERSION: 0x1f02,\n IMPLEMENTATION_COLOR_READ_TYPE: 0x8b9a,\n IMPLEMENTATION_COLOR_READ_FORMAT: 0x8b9b,\n BROWSER_DEFAULT_WEBGL: 0x9244,\n STATIC_DRAW: 0x88e4,\n STREAM_DRAW: 0x88e0,\n DYNAMIC_DRAW: 0x88e8,\n ARRAY_BUFFER: 0x8892,\n ELEMENT_ARRAY_BUFFER: 0x8893,\n BUFFER_SIZE: 0x8764,\n BUFFER_USAGE: 0x8765,\n CURRENT_VERTEX_ATTRIB: 0x8626,\n VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622,\n VERTEX_ATTRIB_ARRAY_SIZE: 0x8623,\n VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624,\n VERTEX_ATTRIB_ARRAY_TYPE: 0x8625,\n VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886a,\n VERTEX_ATTRIB_ARRAY_POINTER: 0x8645,\n VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889f,\n CULL_FACE: 0x0b44,\n FRONT: 0x0404,\n BACK: 0x0405,\n FRONT_AND_BACK: 0x0408,\n BLEND: 0x0be2,\n DEPTH_TEST: 0x0b71,\n DITHER: 0x0bd0,\n POLYGON_OFFSET_FILL: 0x8037,\n SAMPLE_ALPHA_TO_COVERAGE: 0x809e,\n SAMPLE_COVERAGE: 0x80a0,\n SCISSOR_TEST: 0x0c11,\n STENCIL_TEST: 0x0b90,\n NO_ERROR: 0,\n INVALID_ENUM: 0x0500,\n INVALID_VALUE: 0x0501,\n INVALID_OPERATION: 0x0502,\n OUT_OF_MEMORY: 0x0505,\n CONTEXT_LOST_WEBGL: 0x9242,\n CW: 0x0900,\n CCW: 0x0901,\n DONT_CARE: 0x1100,\n FASTEST: 0x1101,\n NICEST: 0x1102,\n GENERATE_MIPMAP_HINT: 0x8192,\n BYTE: 0x1400,\n UNSIGNED_BYTE: 0x1401,\n SHORT: 0x1402,\n UNSIGNED_SHORT: 0x1403,\n INT: 0x1404,\n UNSIGNED_INT: 0x1405,\n FLOAT: 0x1406,\n DOUBLE: 0x140a,\n DEPTH_COMPONENT: 0x1902,\n ALPHA: 0x1906,\n RGB: 0x1907,\n RGBA: 0x1908,\n LUMINANCE: 0x1909,\n LUMINANCE_ALPHA: 0x190a,\n UNSIGNED_SHORT_4_4_4_4: 0x8033,\n UNSIGNED_SHORT_5_5_5_1: 0x8034,\n UNSIGNED_SHORT_5_6_5: 0x8363,\n FRAGMENT_SHADER: 0x8b30,\n VERTEX_SHADER: 0x8b31,\n COMPILE_STATUS: 0x8b81,\n DELETE_STATUS: 0x8b80,\n LINK_STATUS: 0x8b82,\n VALIDATE_STATUS: 0x8b83,\n ATTACHED_SHADERS: 0x8b85,\n ACTIVE_ATTRIBUTES: 0x8b89,\n ACTIVE_UNIFORMS: 0x8b86,\n MAX_VERTEX_ATTRIBS: 0x8869,\n MAX_VERTEX_UNIFORM_VECTORS: 0x8dfb,\n MAX_VARYING_VECTORS: 0x8dfc,\n MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8b4d,\n MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8b4c,\n MAX_TEXTURE_IMAGE_UNITS: 0x8872,\n MAX_FRAGMENT_UNIFORM_VECTORS: 0x8dfd,\n SHADER_TYPE: 0x8b4f,\n SHADING_LANGUAGE_VERSION: 0x8b8c,\n CURRENT_PROGRAM: 0x8b8d,\n NEVER: 0x0200,\n ALWAYS: 0x0207,\n LESS: 0x0201,\n EQUAL: 0x0202,\n LEQUAL: 0x0203,\n GREATER: 0x0204,\n GEQUAL: 0x0206,\n NOTEQUAL: 0x0205,\n KEEP: 0x1e00,\n REPLACE: 0x1e01,\n INCR: 0x1e02,\n DECR: 0x1e03,\n INVERT: 0x150a,\n INCR_WRAP: 0x8507,\n DECR_WRAP: 0x8508,\n NEAREST: 0x2600,\n LINEAR: 0x2601,\n NEAREST_MIPMAP_NEAREST: 0x2700,\n LINEAR_MIPMAP_NEAREST: 0x2701,\n NEAREST_MIPMAP_LINEAR: 0x2702,\n LINEAR_MIPMAP_LINEAR: 0x2703,\n TEXTURE_MAG_FILTER: 0x2800,\n TEXTURE_MIN_FILTER: 0x2801,\n TEXTURE_WRAP_S: 0x2802,\n TEXTURE_WRAP_T: 0x2803,\n TEXTURE_2D: 0x0de1,\n TEXTURE: 0x1702,\n TEXTURE_CUBE_MAP: 0x8513,\n TEXTURE_BINDING_CUBE_MAP: 0x8514,\n TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515,\n TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516,\n TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517,\n TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518,\n TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519,\n TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851a,\n MAX_CUBE_MAP_TEXTURE_SIZE: 0x851c,\n TEXTURE0: 0x84c0,\n ACTIVE_TEXTURE: 0x84e0,\n REPEAT: 0x2901,\n CLAMP_TO_EDGE: 0x812f,\n MIRRORED_REPEAT: 0x8370,\n TEXTURE_WIDTH: 0x1000,\n TEXTURE_HEIGHT: 0x1001,\n FLOAT_VEC2: 0x8b50,\n FLOAT_VEC3: 0x8b51,\n FLOAT_VEC4: 0x8b52,\n INT_VEC2: 0x8b53,\n INT_VEC3: 0x8b54,\n INT_VEC4: 0x8b55,\n BOOL: 0x8b56,\n BOOL_VEC2: 0x8b57,\n BOOL_VEC3: 0x8b58,\n BOOL_VEC4: 0x8b59,\n FLOAT_MAT2: 0x8b5a,\n FLOAT_MAT3: 0x8b5b,\n FLOAT_MAT4: 0x8b5c,\n SAMPLER_2D: 0x8b5e,\n SAMPLER_CUBE: 0x8b60,\n LOW_FLOAT: 0x8df0,\n MEDIUM_FLOAT: 0x8df1,\n HIGH_FLOAT: 0x8df2,\n LOW_INT: 0x8df3,\n MEDIUM_INT: 0x8df4,\n HIGH_INT: 0x8df5,\n FRAMEBUFFER: 0x8d40,\n RENDERBUFFER: 0x8d41,\n RGBA4: 0x8056,\n RGB5_A1: 0x8057,\n RGB565: 0x8d62,\n DEPTH_COMPONENT16: 0x81a5,\n STENCIL_INDEX: 0x1901,\n STENCIL_INDEX8: 0x8d48,\n DEPTH_STENCIL: 0x84f9,\n RENDERBUFFER_WIDTH: 0x8d42,\n RENDERBUFFER_HEIGHT: 0x8d43,\n RENDERBUFFER_INTERNAL_FORMAT: 0x8d44,\n RENDERBUFFER_RED_SIZE: 0x8d50,\n RENDERBUFFER_GREEN_SIZE: 0x8d51,\n RENDERBUFFER_BLUE_SIZE: 0x8d52,\n RENDERBUFFER_ALPHA_SIZE: 0x8d53,\n RENDERBUFFER_DEPTH_SIZE: 0x8d54,\n RENDERBUFFER_STENCIL_SIZE: 0x8d55,\n FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8cd0,\n FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8cd1,\n FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8cd2,\n FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8cd3,\n COLOR_ATTACHMENT0: 0x8ce0,\n DEPTH_ATTACHMENT: 0x8d00,\n STENCIL_ATTACHMENT: 0x8d20,\n DEPTH_STENCIL_ATTACHMENT: 0x821a,\n NONE: 0,\n FRAMEBUFFER_COMPLETE: 0x8cd5,\n FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8cd6,\n FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8cd7,\n FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8cd9,\n FRAMEBUFFER_UNSUPPORTED: 0x8cdd,\n FRAMEBUFFER_BINDING: 0x8ca6,\n RENDERBUFFER_BINDING: 0x8ca7,\n READ_FRAMEBUFFER: 0x8ca8,\n DRAW_FRAMEBUFFER: 0x8ca9,\n MAX_RENDERBUFFER_SIZE: 0x84e8,\n INVALID_FRAMEBUFFER_OPERATION: 0x0506,\n UNPACK_FLIP_Y_WEBGL: 0x9240,\n UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241,\n UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243,\n READ_BUFFER: 0x0c02,\n UNPACK_ROW_LENGTH: 0x0cf2,\n UNPACK_SKIP_ROWS: 0x0cf3,\n UNPACK_SKIP_PIXELS: 0x0cf4,\n PACK_ROW_LENGTH: 0x0d02,\n PACK_SKIP_ROWS: 0x0d03,\n PACK_SKIP_PIXELS: 0x0d04,\n TEXTURE_BINDING_3D: 0x806a,\n UNPACK_SKIP_IMAGES: 0x806d,\n UNPACK_IMAGE_HEIGHT: 0x806e,\n MAX_3D_TEXTURE_SIZE: 0x8073,\n MAX_ELEMENTS_VERTICES: 0x80e8,\n MAX_ELEMENTS_INDICES: 0x80e9,\n MAX_TEXTURE_LOD_BIAS: 0x84fd,\n MAX_FRAGMENT_UNIFORM_COMPONENTS: 0x8b49,\n MAX_VERTEX_UNIFORM_COMPONENTS: 0x8b4a,\n MAX_ARRAY_TEXTURE_LAYERS: 0x88ff,\n MIN_PROGRAM_TEXEL_OFFSET: 0x8904,\n MAX_PROGRAM_TEXEL_OFFSET: 0x8905,\n MAX_VARYING_COMPONENTS: 0x8b4b,\n FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8b8b,\n RASTERIZER_DISCARD: 0x8c89,\n VERTEX_ARRAY_BINDING: 0x85b5,\n MAX_VERTEX_OUTPUT_COMPONENTS: 0x9122,\n MAX_FRAGMENT_INPUT_COMPONENTS: 0x9125,\n MAX_SERVER_WAIT_TIMEOUT: 0x9111,\n MAX_ELEMENT_INDEX: 0x8d6b,\n RED: 0x1903,\n RGB8: 0x8051,\n RGBA8: 0x8058,\n RGB10_A2: 0x8059,\n TEXTURE_3D: 0x806f,\n TEXTURE_WRAP_R: 0x8072,\n TEXTURE_MIN_LOD: 0x813a,\n TEXTURE_MAX_LOD: 0x813b,\n TEXTURE_BASE_LEVEL: 0x813c,\n TEXTURE_MAX_LEVEL: 0x813d,\n TEXTURE_COMPARE_MODE: 0x884c,\n TEXTURE_COMPARE_FUNC: 0x884d,\n SRGB: 0x8c40,\n SRGB8: 0x8c41,\n SRGB8_ALPHA8: 0x8c43,\n COMPARE_REF_TO_TEXTURE: 0x884e,\n RGBA32F: 0x8814,\n RGB32F: 0x8815,\n RGBA16F: 0x881a,\n RGB16F: 0x881b,\n TEXTURE_2D_ARRAY: 0x8c1a,\n TEXTURE_BINDING_2D_ARRAY: 0x8c1d,\n R11F_G11F_B10F: 0x8c3a,\n RGB9_E5: 0x8c3d,\n RGBA32UI: 0x8d70,\n RGB32UI: 0x8d71,\n RGBA16UI: 0x8d76,\n RGB16UI: 0x8d77,\n RGBA8UI: 0x8d7c,\n RGB8UI: 0x8d7d,\n RGBA32I: 0x8d82,\n RGB32I: 0x8d83,\n RGBA16I: 0x8d88,\n RGB16I: 0x8d89,\n RGBA8I: 0x8d8e,\n RGB8I: 0x8d8f,\n RED_INTEGER: 0x8d94,\n RGB_INTEGER: 0x8d98,\n RGBA_INTEGER: 0x8d99,\n R8: 0x8229,\n RG8: 0x822b,\n R16F: 0x822d,\n R32F: 0x822e,\n RG16F: 0x822f,\n RG32F: 0x8230,\n R8I: 0x8231,\n R8UI: 0x8232,\n R16I: 0x8233,\n R16UI: 0x8234,\n R32I: 0x8235,\n R32UI: 0x8236,\n RG8I: 0x8237,\n RG8UI: 0x8238,\n RG16I: 0x8239,\n RG16UI: 0x823a,\n RG32I: 0x823b,\n RG32UI: 0x823c,\n R8_SNORM: 0x8f94,\n RG8_SNORM: 0x8f95,\n RGB8_SNORM: 0x8f96,\n RGBA8_SNORM: 0x8f97,\n RGB10_A2UI: 0x906f,\n TEXTURE_IMMUTABLE_FORMAT: 0x912f,\n TEXTURE_IMMUTABLE_LEVELS: 0x82df,\n UNSIGNED_INT_2_10_10_10_REV: 0x8368,\n UNSIGNED_INT_10F_11F_11F_REV: 0x8c3b,\n UNSIGNED_INT_5_9_9_9_REV: 0x8c3e,\n FLOAT_32_UNSIGNED_INT_24_8_REV: 0x8dad,\n UNSIGNED_INT_24_8: 0x84fa,\n HALF_FLOAT: 0x140b,\n RG: 0x8227,\n RG_INTEGER: 0x8228,\n INT_2_10_10_10_REV: 0x8d9f,\n CURRENT_QUERY: 0x8865,\n QUERY_RESULT: 0x8866,\n QUERY_RESULT_AVAILABLE: 0x8867,\n ANY_SAMPLES_PASSED: 0x8c2f,\n ANY_SAMPLES_PASSED_CONSERVATIVE: 0x8d6a,\n MAX_DRAW_BUFFERS: 0x8824,\n DRAW_BUFFER0: 0x8825,\n DRAW_BUFFER1: 0x8826,\n DRAW_BUFFER2: 0x8827,\n DRAW_BUFFER3: 0x8828,\n DRAW_BUFFER4: 0x8829,\n DRAW_BUFFER5: 0x882a,\n DRAW_BUFFER6: 0x882b,\n DRAW_BUFFER7: 0x882c,\n DRAW_BUFFER8: 0x882d,\n DRAW_BUFFER9: 0x882e,\n DRAW_BUFFER10: 0x882f,\n DRAW_BUFFER11: 0x8830,\n DRAW_BUFFER12: 0x8831,\n DRAW_BUFFER13: 0x8832,\n DRAW_BUFFER14: 0x8833,\n DRAW_BUFFER15: 0x8834,\n MAX_COLOR_ATTACHMENTS: 0x8cdf,\n COLOR_ATTACHMENT1: 0x8ce1,\n COLOR_ATTACHMENT2: 0x8ce2,\n COLOR_ATTACHMENT3: 0x8ce3,\n COLOR_ATTACHMENT4: 0x8ce4,\n COLOR_ATTACHMENT5: 0x8ce5,\n COLOR_ATTACHMENT6: 0x8ce6,\n COLOR_ATTACHMENT7: 0x8ce7,\n COLOR_ATTACHMENT8: 0x8ce8,\n COLOR_ATTACHMENT9: 0x8ce9,\n COLOR_ATTACHMENT10: 0x8cea,\n COLOR_ATTACHMENT11: 0x8ceb,\n COLOR_ATTACHMENT12: 0x8cec,\n COLOR_ATTACHMENT13: 0x8ced,\n COLOR_ATTACHMENT14: 0x8cee,\n COLOR_ATTACHMENT15: 0x8cef,\n SAMPLER_3D: 0x8b5f,\n SAMPLER_2D_SHADOW: 0x8b62,\n SAMPLER_2D_ARRAY: 0x8dc1,\n SAMPLER_2D_ARRAY_SHADOW: 0x8dc4,\n SAMPLER_CUBE_SHADOW: 0x8dc5,\n INT_SAMPLER_2D: 0x8dca,\n INT_SAMPLER_3D: 0x8dcb,\n INT_SAMPLER_CUBE: 0x8dcc,\n INT_SAMPLER_2D_ARRAY: 0x8dcf,\n UNSIGNED_INT_SAMPLER_2D: 0x8dd2,\n UNSIGNED_INT_SAMPLER_3D: 0x8dd3,\n UNSIGNED_INT_SAMPLER_CUBE: 0x8dd4,\n UNSIGNED_INT_SAMPLER_2D_ARRAY: 0x8dd7,\n MAX_SAMPLES: 0x8d57,\n SAMPLER_BINDING: 0x8919,\n PIXEL_PACK_BUFFER: 0x88eb,\n PIXEL_UNPACK_BUFFER: 0x88ec,\n PIXEL_PACK_BUFFER_BINDING: 0x88ed,\n PIXEL_UNPACK_BUFFER_BINDING: 0x88ef,\n COPY_READ_BUFFER: 0x8f36,\n COPY_WRITE_BUFFER: 0x8f37,\n COPY_READ_BUFFER_BINDING: 0x8f36,\n COPY_WRITE_BUFFER_BINDING: 0x8f37,\n FLOAT_MAT2x3: 0x8b65,\n FLOAT_MAT2x4: 0x8b66,\n FLOAT_MAT3x2: 0x8b67,\n FLOAT_MAT3x4: 0x8b68,\n FLOAT_MAT4x2: 0x8b69,\n FLOAT_MAT4x3: 0x8b6a,\n UNSIGNED_INT_VEC2: 0x8dc6,\n UNSIGNED_INT_VEC3: 0x8dc7,\n UNSIGNED_INT_VEC4: 0x8dc8,\n UNSIGNED_NORMALIZED: 0x8c17,\n SIGNED_NORMALIZED: 0x8f9c,\n VERTEX_ATTRIB_ARRAY_INTEGER: 0x88fd,\n VERTEX_ATTRIB_ARRAY_DIVISOR: 0x88fe,\n TRANSFORM_FEEDBACK_BUFFER_MODE: 0x8c7f,\n MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 0x8c80,\n TRANSFORM_FEEDBACK_VARYINGS: 0x8c83,\n TRANSFORM_FEEDBACK_BUFFER_START: 0x8c84,\n TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8c85,\n TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 0x8c88,\n MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 0x8c8a,\n MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 0x8c8b,\n INTERLEAVED_ATTRIBS: 0x8c8c,\n SEPARATE_ATTRIBS: 0x8c8d,\n TRANSFORM_FEEDBACK_BUFFER: 0x8c8e,\n TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8c8f,\n TRANSFORM_FEEDBACK: 0x8e22,\n TRANSFORM_FEEDBACK_PAUSED: 0x8e23,\n TRANSFORM_FEEDBACK_ACTIVE: 0x8e24,\n TRANSFORM_FEEDBACK_BINDING: 0x8e25,\n FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 0x8210,\n FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 0x8211,\n FRAMEBUFFER_ATTACHMENT_RED_SIZE: 0x8212,\n FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 0x8213,\n FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 0x8214,\n FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 0x8215,\n FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 0x8216,\n FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 0x8217,\n FRAMEBUFFER_DEFAULT: 0x8218,\n DEPTH24_STENCIL8: 0x88f0,\n DRAW_FRAMEBUFFER_BINDING: 0x8ca6,\n READ_FRAMEBUFFER_BINDING: 0x8caa,\n RENDERBUFFER_SAMPLES: 0x8cab,\n FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 0x8cd4,\n FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 0x8d56,\n UNIFORM_BUFFER: 0x8a11,\n UNIFORM_BUFFER_BINDING: 0x8a28,\n UNIFORM_BUFFER_START: 0x8a29,\n UNIFORM_BUFFER_SIZE: 0x8a2a,\n MAX_VERTEX_UNIFORM_BLOCKS: 0x8a2b,\n MAX_FRAGMENT_UNIFORM_BLOCKS: 0x8a2d,\n MAX_COMBINED_UNIFORM_BLOCKS: 0x8a2e,\n MAX_UNIFORM_BUFFER_BINDINGS: 0x8a2f,\n MAX_UNIFORM_BLOCK_SIZE: 0x8a30,\n MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 0x8a31,\n MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 0x8a33,\n UNIFORM_BUFFER_OFFSET_ALIGNMENT: 0x8a34,\n ACTIVE_UNIFORM_BLOCKS: 0x8a36,\n UNIFORM_TYPE: 0x8a37,\n UNIFORM_SIZE: 0x8a38,\n UNIFORM_BLOCK_INDEX: 0x8a3a,\n UNIFORM_OFFSET: 0x8a3b,\n UNIFORM_ARRAY_STRIDE: 0x8a3c,\n UNIFORM_MATRIX_STRIDE: 0x8a3d,\n UNIFORM_IS_ROW_MAJOR: 0x8a3e,\n UNIFORM_BLOCK_BINDING: 0x8a3f,\n UNIFORM_BLOCK_DATA_SIZE: 0x8a40,\n UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8a42,\n UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8a43,\n UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8a44,\n UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8a46,\n OBJECT_TYPE: 0x9112,\n SYNC_CONDITION: 0x9113,\n SYNC_STATUS: 0x9114,\n SYNC_FLAGS: 0x9115,\n SYNC_FENCE: 0x9116,\n SYNC_GPU_COMMANDS_COMPLETE: 0x9117,\n UNSIGNALED: 0x9118,\n SIGNALED: 0x9119,\n ALREADY_SIGNALED: 0x911a,\n TIMEOUT_EXPIRED: 0x911b,\n CONDITION_SATISFIED: 0x911c,\n WAIT_FAILED: 0x911d,\n SYNC_FLUSH_COMMANDS_BIT: 0x00000001,\n COLOR: 0x1800,\n DEPTH: 0x1801,\n STENCIL: 0x1802,\n MIN: 0x8007,\n MAX: 0x8008,\n DEPTH_COMPONENT24: 0x81a6,\n STREAM_READ: 0x88e1,\n STREAM_COPY: 0x88e2,\n STATIC_READ: 0x88e5,\n STATIC_COPY: 0x88e6,\n DYNAMIC_READ: 0x88e9,\n DYNAMIC_COPY: 0x88ea,\n DEPTH_COMPONENT32F: 0x8cac,\n DEPTH32F_STENCIL8: 0x8cad,\n INVALID_INDEX: 0xffffffff,\n TIMEOUT_IGNORED: -1,\n MAX_CLIENT_WAIT_TIMEOUT_WEBGL: 0x9247,\n VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: 0x88fe,\n UNMASKED_VENDOR_WEBGL: 0x9245,\n UNMASKED_RENDERER_WEBGL: 0x9246,\n MAX_TEXTURE_MAX_ANISOTROPY_EXT: 0x84ff,\n TEXTURE_MAX_ANISOTROPY_EXT: 0x84fe,\n COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83f0,\n COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83f1,\n COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83f2,\n COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83f3,\n COMPRESSED_R11_EAC: 0x9270,\n COMPRESSED_SIGNED_R11_EAC: 0x9271,\n COMPRESSED_RG11_EAC: 0x9272,\n COMPRESSED_SIGNED_RG11_EAC: 0x9273,\n COMPRESSED_RGB8_ETC2: 0x9274,\n COMPRESSED_RGBA8_ETC2_EAC: 0x9275,\n COMPRESSED_SRGB8_ETC2: 0x9276,\n COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 0x9277,\n COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9278,\n COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9279,\n COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 0x8c00,\n COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 0x8c02,\n COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 0x8c01,\n COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 0x8c03,\n COMPRESSED_RGB_ETC1_WEBGL: 0x8d64,\n COMPRESSED_RGB_ATC_WEBGL: 0x8c92,\n COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 0x8c92,\n COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 0x87ee,\n UNSIGNED_INT_24_8_WEBGL: 0x84fa,\n HALF_FLOAT_OES: 0x8d61,\n RGBA32F_EXT: 0x8814,\n RGB32F_EXT: 0x8815,\n FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: 0x8211,\n UNSIGNED_NORMALIZED_EXT: 0x8c17,\n MIN_EXT: 0x8007,\n MAX_EXT: 0x8008,\n SRGB_EXT: 0x8c40,\n SRGB_ALPHA_EXT: 0x8c42,\n SRGB8_ALPHA8_EXT: 0x8c43,\n FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: 0x8210,\n FRAGMENT_SHADER_DERIVATIVE_HINT_OES: 0x8b8b,\n COLOR_ATTACHMENT0_WEBGL: 0x8ce0,\n COLOR_ATTACHMENT1_WEBGL: 0x8ce1,\n COLOR_ATTACHMENT2_WEBGL: 0x8ce2,\n COLOR_ATTACHMENT3_WEBGL: 0x8ce3,\n COLOR_ATTACHMENT4_WEBGL: 0x8ce4,\n COLOR_ATTACHMENT5_WEBGL: 0x8ce5,\n COLOR_ATTACHMENT6_WEBGL: 0x8ce6,\n COLOR_ATTACHMENT7_WEBGL: 0x8ce7,\n COLOR_ATTACHMENT8_WEBGL: 0x8ce8,\n COLOR_ATTACHMENT9_WEBGL: 0x8ce9,\n COLOR_ATTACHMENT10_WEBGL: 0x8cea,\n COLOR_ATTACHMENT11_WEBGL: 0x8ceb,\n COLOR_ATTACHMENT12_WEBGL: 0x8cec,\n COLOR_ATTACHMENT13_WEBGL: 0x8ced,\n COLOR_ATTACHMENT14_WEBGL: 0x8cee,\n COLOR_ATTACHMENT15_WEBGL: 0x8cef,\n DRAW_BUFFER0_WEBGL: 0x8825,\n DRAW_BUFFER1_WEBGL: 0x8826,\n DRAW_BUFFER2_WEBGL: 0x8827,\n DRAW_BUFFER3_WEBGL: 0x8828,\n DRAW_BUFFER4_WEBGL: 0x8829,\n DRAW_BUFFER5_WEBGL: 0x882a,\n DRAW_BUFFER6_WEBGL: 0x882b,\n DRAW_BUFFER7_WEBGL: 0x882c,\n DRAW_BUFFER8_WEBGL: 0x882d,\n DRAW_BUFFER9_WEBGL: 0x882e,\n DRAW_BUFFER10_WEBGL: 0x882f,\n DRAW_BUFFER11_WEBGL: 0x8830,\n DRAW_BUFFER12_WEBGL: 0x8831,\n DRAW_BUFFER13_WEBGL: 0x8832,\n DRAW_BUFFER14_WEBGL: 0x8833,\n DRAW_BUFFER15_WEBGL: 0x8834,\n MAX_COLOR_ATTACHMENTS_WEBGL: 0x8cdf,\n MAX_DRAW_BUFFERS_WEBGL: 0x8824,\n VERTEX_ARRAY_BINDING_OES: 0x85b5,\n QUERY_COUNTER_BITS_EXT: 0x8864,\n CURRENT_QUERY_EXT: 0x8865,\n QUERY_RESULT_EXT: 0x8866,\n QUERY_RESULT_AVAILABLE_EXT: 0x8867,\n TIME_ELAPSED_EXT: 0x88bf,\n TIMESTAMP_EXT: 0x8e28,\n GPU_DISJOINT_EXT: 0x8fbb\n};\n//# sourceMappingURL=index.js.map","// GL constants, copied from Mozilla documentation\n// https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Constants\n\n// Standard WebGL 1 constants\n// These constants are defined on the WebGLRenderingContext interface.\n\n/* eslint-disable key-spacing, max-len, no-inline-comments, camelcase */\n// eslint-disable-next-line\nexport default {\n // Clearing buffers\n // Constants passed to clear() to clear buffer masks.\n\n DEPTH_BUFFER_BIT: 0x00000100,\n STENCIL_BUFFER_BIT: 0x00000400,\n COLOR_BUFFER_BIT: 0x00004000,\n\n // Rendering primitives\n // Constants passed to drawElements() or drawArrays() to specify what kind of primitive to render.\n\n POINTS: 0x0000,\n LINES: 0x0001,\n LINE_LOOP: 0x0002,\n LINE_STRIP: 0x0003,\n TRIANGLES: 0x0004,\n TRIANGLE_STRIP: 0x0005,\n TRIANGLE_FAN: 0x0006,\n\n // Blending modes\n // Constants passed to blendFunc() or blendFuncSeparate() to specify the blending mode (for both, RBG and alpha, or separately).\n\n ZERO: 0,\n ONE: 1,\n SRC_COLOR: 0x0300,\n ONE_MINUS_SRC_COLOR: 0x0301,\n SRC_ALPHA: 0x0302,\n ONE_MINUS_SRC_ALPHA: 0x0303,\n DST_ALPHA: 0x0304,\n ONE_MINUS_DST_ALPHA: 0x0305,\n DST_COLOR: 0x0306,\n ONE_MINUS_DST_COLOR: 0x0307,\n SRC_ALPHA_SATURATE: 0x0308,\n CONSTANT_COLOR: 0x8001,\n ONE_MINUS_CONSTANT_COLOR: 0x8002,\n CONSTANT_ALPHA: 0x8003,\n ONE_MINUS_CONSTANT_ALPHA: 0x8004,\n\n // Blending equations\n // Constants passed to blendEquation() or blendEquationSeparate() to control\n // how the blending is calculated (for both, RBG and alpha, or separately).\n\n FUNC_ADD: 0x8006,\n FUNC_SUBTRACT: 0x800a,\n FUNC_REVERSE_SUBTRACT: 0x800b,\n\n // Getting GL parameter information\n // Constants passed to getParameter() to specify what information to return.\n\n BLEND_EQUATION: 0x8009,\n BLEND_EQUATION_RGB: 0x8009,\n BLEND_EQUATION_ALPHA: 0x883d,\n BLEND_DST_RGB: 0x80c8,\n BLEND_SRC_RGB: 0x80c9,\n BLEND_DST_ALPHA: 0x80ca,\n BLEND_SRC_ALPHA: 0x80cb,\n BLEND_COLOR: 0x8005,\n ARRAY_BUFFER_BINDING: 0x8894,\n ELEMENT_ARRAY_BUFFER_BINDING: 0x8895,\n LINE_WIDTH: 0x0b21,\n ALIASED_POINT_SIZE_RANGE: 0x846d,\n ALIASED_LINE_WIDTH_RANGE: 0x846e,\n CULL_FACE_MODE: 0x0b45,\n FRONT_FACE: 0x0b46,\n DEPTH_RANGE: 0x0b70,\n DEPTH_WRITEMASK: 0x0b72,\n DEPTH_CLEAR_VALUE: 0x0b73,\n DEPTH_FUNC: 0x0b74,\n STENCIL_CLEAR_VALUE: 0x0b91,\n STENCIL_FUNC: 0x0b92,\n STENCIL_FAIL: 0x0b94,\n STENCIL_PASS_DEPTH_FAIL: 0x0b95,\n STENCIL_PASS_DEPTH_PASS: 0x0b96,\n STENCIL_REF: 0x0b97,\n STENCIL_VALUE_MASK: 0x0b93,\n STENCIL_WRITEMASK: 0x0b98,\n STENCIL_BACK_FUNC: 0x8800,\n STENCIL_BACK_FAIL: 0x8801,\n STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802,\n STENCIL_BACK_PASS_DEPTH_PASS: 0x8803,\n STENCIL_BACK_REF: 0x8ca3,\n STENCIL_BACK_VALUE_MASK: 0x8ca4,\n STENCIL_BACK_WRITEMASK: 0x8ca5,\n VIEWPORT: 0x0ba2,\n SCISSOR_BOX: 0x0c10,\n COLOR_CLEAR_VALUE: 0x0c22,\n COLOR_WRITEMASK: 0x0c23,\n UNPACK_ALIGNMENT: 0x0cf5,\n PACK_ALIGNMENT: 0x0d05,\n MAX_TEXTURE_SIZE: 0x0d33,\n MAX_VIEWPORT_DIMS: 0x0d3a,\n SUBPIXEL_BITS: 0x0d50,\n RED_BITS: 0x0d52,\n GREEN_BITS: 0x0d53,\n BLUE_BITS: 0x0d54,\n ALPHA_BITS: 0x0d55,\n DEPTH_BITS: 0x0d56,\n STENCIL_BITS: 0x0d57,\n POLYGON_OFFSET_UNITS: 0x2a00,\n POLYGON_OFFSET_FACTOR: 0x8038,\n TEXTURE_BINDING_2D: 0x8069,\n SAMPLE_BUFFERS: 0x80a8,\n SAMPLES: 0x80a9,\n SAMPLE_COVERAGE_VALUE: 0x80aa,\n SAMPLE_COVERAGE_INVERT: 0x80ab,\n COMPRESSED_TEXTURE_FORMATS: 0x86a3,\n VENDOR: 0x1f00,\n RENDERER: 0x1f01,\n VERSION: 0x1f02,\n IMPLEMENTATION_COLOR_READ_TYPE: 0x8b9a,\n IMPLEMENTATION_COLOR_READ_FORMAT: 0x8b9b,\n BROWSER_DEFAULT_WEBGL: 0x9244,\n\n // Buffers\n // Constants passed to bufferData(), bufferSubData(), bindBuffer(), or\n // getBufferParameter().\n\n STATIC_DRAW: 0x88e4,\n STREAM_DRAW: 0x88e0,\n DYNAMIC_DRAW: 0x88e8,\n ARRAY_BUFFER: 0x8892,\n ELEMENT_ARRAY_BUFFER: 0x8893,\n BUFFER_SIZE: 0x8764,\n BUFFER_USAGE: 0x8765,\n\n // Vertex attributes\n // Constants passed to getVertexAttrib().\n\n CURRENT_VERTEX_ATTRIB: 0x8626,\n VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622,\n VERTEX_ATTRIB_ARRAY_SIZE: 0x8623,\n VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624,\n VERTEX_ATTRIB_ARRAY_TYPE: 0x8625,\n VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886a,\n VERTEX_ATTRIB_ARRAY_POINTER: 0x8645,\n VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889f,\n\n // Culling\n // Constants passed to cullFace().\n\n CULL_FACE: 0x0b44,\n FRONT: 0x0404,\n BACK: 0x0405,\n FRONT_AND_BACK: 0x0408,\n\n // Enabling and disabling\n // Constants passed to enable() or disable().\n\n BLEND: 0x0be2,\n DEPTH_TEST: 0x0b71,\n DITHER: 0x0bd0,\n POLYGON_OFFSET_FILL: 0x8037,\n SAMPLE_ALPHA_TO_COVERAGE: 0x809e,\n SAMPLE_COVERAGE: 0x80a0,\n SCISSOR_TEST: 0x0c11,\n STENCIL_TEST: 0x0b90,\n\n // Errors\n // Constants returned from getError().\n\n NO_ERROR: 0,\n INVALID_ENUM: 0x0500,\n INVALID_VALUE: 0x0501,\n INVALID_OPERATION: 0x0502,\n OUT_OF_MEMORY: 0x0505,\n CONTEXT_LOST_WEBGL: 0x9242,\n\n // Front face directions\n // Constants passed to frontFace().\n\n CW: 0x0900,\n CCW: 0x0901,\n\n // Hints\n // Constants passed to hint()\n\n DONT_CARE: 0x1100,\n FASTEST: 0x1101,\n NICEST: 0x1102,\n GENERATE_MIPMAP_HINT: 0x8192,\n\n // Data types\n\n BYTE: 0x1400,\n UNSIGNED_BYTE: 0x1401,\n SHORT: 0x1402,\n UNSIGNED_SHORT: 0x1403,\n INT: 0x1404,\n UNSIGNED_INT: 0x1405,\n FLOAT: 0x1406,\n DOUBLE: 0x140a,\n\n // Pixel formats\n\n DEPTH_COMPONENT: 0x1902,\n ALPHA: 0x1906,\n RGB: 0x1907,\n RGBA: 0x1908,\n LUMINANCE: 0x1909,\n LUMINANCE_ALPHA: 0x190a,\n\n // Pixel types\n\n // UNSIGNED_BYTE: 0x1401,\n UNSIGNED_SHORT_4_4_4_4: 0x8033,\n UNSIGNED_SHORT_5_5_5_1: 0x8034,\n UNSIGNED_SHORT_5_6_5: 0x8363,\n\n // Shaders\n // Constants passed to createShader() or getShaderParameter()\n\n FRAGMENT_SHADER: 0x8b30,\n VERTEX_SHADER: 0x8b31,\n COMPILE_STATUS: 0x8b81,\n DELETE_STATUS: 0x8b80,\n LINK_STATUS: 0x8b82,\n VALIDATE_STATUS: 0x8b83,\n ATTACHED_SHADERS: 0x8b85,\n ACTIVE_ATTRIBUTES: 0x8b89,\n ACTIVE_UNIFORMS: 0x8b86,\n MAX_VERTEX_ATTRIBS: 0x8869,\n MAX_VERTEX_UNIFORM_VECTORS: 0x8dfb,\n MAX_VARYING_VECTORS: 0x8dfc,\n MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8b4d,\n MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8b4c,\n MAX_TEXTURE_IMAGE_UNITS: 0x8872,\n MAX_FRAGMENT_UNIFORM_VECTORS: 0x8dfd,\n SHADER_TYPE: 0x8b4f,\n SHADING_LANGUAGE_VERSION: 0x8b8c,\n CURRENT_PROGRAM: 0x8b8d,\n\n // Depth or stencil tests\n // Constants passed to depthFunc() or stencilFunc().\n\n NEVER: 0x0200,\n ALWAYS: 0x0207,\n LESS: 0x0201,\n EQUAL: 0x0202,\n LEQUAL: 0x0203,\n GREATER: 0x0204,\n GEQUAL: 0x0206,\n NOTEQUAL: 0x0205,\n\n // Stencil actions\n // Constants passed to stencilOp().\n\n KEEP: 0x1e00,\n REPLACE: 0x1e01,\n INCR: 0x1e02,\n DECR: 0x1e03,\n INVERT: 0x150a,\n INCR_WRAP: 0x8507,\n DECR_WRAP: 0x8508,\n\n // Textures\n // Constants passed to texParameteri(),\n // texParameterf(), bindTexture(), texImage2D(), and others.\n\n NEAREST: 0x2600,\n LINEAR: 0x2601,\n NEAREST_MIPMAP_NEAREST: 0x2700,\n LINEAR_MIPMAP_NEAREST: 0x2701,\n NEAREST_MIPMAP_LINEAR: 0x2702,\n LINEAR_MIPMAP_LINEAR: 0x2703,\n TEXTURE_MAG_FILTER: 0x2800,\n TEXTURE_MIN_FILTER: 0x2801,\n TEXTURE_WRAP_S: 0x2802,\n TEXTURE_WRAP_T: 0x2803,\n TEXTURE_2D: 0x0de1,\n TEXTURE: 0x1702,\n TEXTURE_CUBE_MAP: 0x8513,\n TEXTURE_BINDING_CUBE_MAP: 0x8514,\n TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515,\n TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516,\n TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517,\n TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518,\n TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519,\n TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851a,\n MAX_CUBE_MAP_TEXTURE_SIZE: 0x851c,\n // TEXTURE0 - 31 0x84C0 - 0x84DF A texture unit.\n TEXTURE0: 0x84c0,\n ACTIVE_TEXTURE: 0x84e0,\n REPEAT: 0x2901,\n CLAMP_TO_EDGE: 0x812f,\n MIRRORED_REPEAT: 0x8370,\n\n // Emulation\n TEXTURE_WIDTH: 0x1000,\n TEXTURE_HEIGHT: 0x1001,\n\n // Uniform types\n\n FLOAT_VEC2: 0x8b50,\n FLOAT_VEC3: 0x8b51,\n FLOAT_VEC4: 0x8b52,\n INT_VEC2: 0x8b53,\n INT_VEC3: 0x8b54,\n INT_VEC4: 0x8b55,\n BOOL: 0x8b56,\n BOOL_VEC2: 0x8b57,\n BOOL_VEC3: 0x8b58,\n BOOL_VEC4: 0x8b59,\n FLOAT_MAT2: 0x8b5a,\n FLOAT_MAT3: 0x8b5b,\n FLOAT_MAT4: 0x8b5c,\n SAMPLER_2D: 0x8b5e,\n SAMPLER_CUBE: 0x8b60,\n\n // Shader precision-specified types\n\n LOW_FLOAT: 0x8df0,\n MEDIUM_FLOAT: 0x8df1,\n HIGH_FLOAT: 0x8df2,\n LOW_INT: 0x8df3,\n MEDIUM_INT: 0x8df4,\n HIGH_INT: 0x8df5,\n\n // Framebuffers and renderbuffers\n\n FRAMEBUFFER: 0x8d40,\n RENDERBUFFER: 0x8d41,\n RGBA4: 0x8056,\n RGB5_A1: 0x8057,\n RGB565: 0x8d62,\n DEPTH_COMPONENT16: 0x81a5,\n STENCIL_INDEX: 0x1901,\n STENCIL_INDEX8: 0x8d48,\n DEPTH_STENCIL: 0x84f9,\n RENDERBUFFER_WIDTH: 0x8d42,\n RENDERBUFFER_HEIGHT: 0x8d43,\n RENDERBUFFER_INTERNAL_FORMAT: 0x8d44,\n RENDERBUFFER_RED_SIZE: 0x8d50,\n RENDERBUFFER_GREEN_SIZE: 0x8d51,\n RENDERBUFFER_BLUE_SIZE: 0x8d52,\n RENDERBUFFER_ALPHA_SIZE: 0x8d53,\n RENDERBUFFER_DEPTH_SIZE: 0x8d54,\n RENDERBUFFER_STENCIL_SIZE: 0x8d55,\n FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8cd0,\n FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8cd1,\n FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8cd2,\n FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8cd3,\n COLOR_ATTACHMENT0: 0x8ce0,\n DEPTH_ATTACHMENT: 0x8d00,\n STENCIL_ATTACHMENT: 0x8d20,\n DEPTH_STENCIL_ATTACHMENT: 0x821a,\n NONE: 0,\n FRAMEBUFFER_COMPLETE: 0x8cd5,\n FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8cd6,\n FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8cd7,\n FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8cd9,\n FRAMEBUFFER_UNSUPPORTED: 0x8cdd,\n FRAMEBUFFER_BINDING: 0x8ca6,\n RENDERBUFFER_BINDING: 0x8ca7,\n READ_FRAMEBUFFER: 0x8ca8,\n DRAW_FRAMEBUFFER: 0x8ca9,\n MAX_RENDERBUFFER_SIZE: 0x84e8,\n INVALID_FRAMEBUFFER_OPERATION: 0x0506,\n\n // Pixel storage modes\n // Constants passed to pixelStorei().\n\n UNPACK_FLIP_Y_WEBGL: 0x9240,\n UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241,\n UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243,\n\n // /////////////////////////////////////////////////////\n // Additional constants defined WebGL 2\n // These constants are defined on the WebGL2RenderingContext interface.\n // All WebGL 1 constants are also available in a WebGL 2 context.\n // /////////////////////////////////////////////////////\n\n // Getting GL parameter information\n // Constants passed to getParameter()\n // to specify what information to return.\n\n READ_BUFFER: 0x0c02,\n UNPACK_ROW_LENGTH: 0x0cf2,\n UNPACK_SKIP_ROWS: 0x0cf3,\n UNPACK_SKIP_PIXELS: 0x0cf4,\n PACK_ROW_LENGTH: 0x0d02,\n PACK_SKIP_ROWS: 0x0d03,\n PACK_SKIP_PIXELS: 0x0d04,\n TEXTURE_BINDING_3D: 0x806a,\n UNPACK_SKIP_IMAGES: 0x806d,\n UNPACK_IMAGE_HEIGHT: 0x806e,\n MAX_3D_TEXTURE_SIZE: 0x8073,\n MAX_ELEMENTS_VERTICES: 0x80e8,\n MAX_ELEMENTS_INDICES: 0x80e9,\n MAX_TEXTURE_LOD_BIAS: 0x84fd,\n MAX_FRAGMENT_UNIFORM_COMPONENTS: 0x8b49,\n MAX_VERTEX_UNIFORM_COMPONENTS: 0x8b4a,\n MAX_ARRAY_TEXTURE_LAYERS: 0x88ff,\n MIN_PROGRAM_TEXEL_OFFSET: 0x8904,\n MAX_PROGRAM_TEXEL_OFFSET: 0x8905,\n MAX_VARYING_COMPONENTS: 0x8b4b,\n FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8b8b,\n RASTERIZER_DISCARD: 0x8c89,\n VERTEX_ARRAY_BINDING: 0x85b5,\n MAX_VERTEX_OUTPUT_COMPONENTS: 0x9122,\n MAX_FRAGMENT_INPUT_COMPONENTS: 0x9125,\n MAX_SERVER_WAIT_TIMEOUT: 0x9111,\n MAX_ELEMENT_INDEX: 0x8d6b,\n\n // Textures\n // Constants passed to texParameteri(),\n // texParameterf(), bindTexture(), texImage2D(), and others.\n\n RED: 0x1903,\n RGB8: 0x8051,\n RGBA8: 0x8058,\n RGB10_A2: 0x8059,\n TEXTURE_3D: 0x806f,\n TEXTURE_WRAP_R: 0x8072,\n TEXTURE_MIN_LOD: 0x813a,\n TEXTURE_MAX_LOD: 0x813b,\n TEXTURE_BASE_LEVEL: 0x813c,\n TEXTURE_MAX_LEVEL: 0x813d,\n TEXTURE_COMPARE_MODE: 0x884c,\n TEXTURE_COMPARE_FUNC: 0x884d,\n SRGB: 0x8c40,\n SRGB8: 0x8c41,\n SRGB8_ALPHA8: 0x8c43,\n COMPARE_REF_TO_TEXTURE: 0x884e,\n RGBA32F: 0x8814,\n RGB32F: 0x8815,\n RGBA16F: 0x881a,\n RGB16F: 0x881b,\n TEXTURE_2D_ARRAY: 0x8c1a,\n TEXTURE_BINDING_2D_ARRAY: 0x8c1d,\n R11F_G11F_B10F: 0x8c3a,\n RGB9_E5: 0x8c3d,\n RGBA32UI: 0x8d70,\n RGB32UI: 0x8d71,\n RGBA16UI: 0x8d76,\n RGB16UI: 0x8d77,\n RGBA8UI: 0x8d7c,\n RGB8UI: 0x8d7d,\n RGBA32I: 0x8d82,\n RGB32I: 0x8d83,\n RGBA16I: 0x8d88,\n RGB16I: 0x8d89,\n RGBA8I: 0x8d8e,\n RGB8I: 0x8d8f,\n RED_INTEGER: 0x8d94,\n RGB_INTEGER: 0x8d98,\n RGBA_INTEGER: 0x8d99,\n R8: 0x8229,\n RG8: 0x822b,\n R16F: 0x822d,\n R32F: 0x822e,\n RG16F: 0x822f,\n RG32F: 0x8230,\n R8I: 0x8231,\n R8UI: 0x8232,\n R16I: 0x8233,\n R16UI: 0x8234,\n R32I: 0x8235,\n R32UI: 0x8236,\n RG8I: 0x8237,\n RG8UI: 0x8238,\n RG16I: 0x8239,\n RG16UI: 0x823a,\n RG32I: 0x823b,\n RG32UI: 0x823c,\n R8_SNORM: 0x8f94,\n RG8_SNORM: 0x8f95,\n RGB8_SNORM: 0x8f96,\n RGBA8_SNORM: 0x8f97,\n RGB10_A2UI: 0x906f,\n\n /* covered by extension\n COMPRESSED_R11_EAC : 0x9270,\n COMPRESSED_SIGNED_R11_EAC: 0x9271,\n COMPRESSED_RG11_EAC: 0x9272,\n COMPRESSED_SIGNED_RG11_EAC : 0x9273,\n COMPRESSED_RGB8_ETC2 : 0x9274,\n COMPRESSED_SRGB8_ETC2: 0x9275,\n COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 : 0x9276,\n COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC : 0x9277,\n COMPRESSED_RGBA8_ETC2_EAC: 0x9278,\n COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : 0x9279,\n */\n TEXTURE_IMMUTABLE_FORMAT: 0x912f,\n TEXTURE_IMMUTABLE_LEVELS: 0x82df,\n\n // Pixel types\n\n UNSIGNED_INT_2_10_10_10_REV: 0x8368,\n UNSIGNED_INT_10F_11F_11F_REV: 0x8c3b,\n UNSIGNED_INT_5_9_9_9_REV: 0x8c3e,\n FLOAT_32_UNSIGNED_INT_24_8_REV: 0x8dad,\n UNSIGNED_INT_24_8: 0x84fa,\n HALF_FLOAT: 0x140b,\n RG: 0x8227,\n RG_INTEGER: 0x8228,\n INT_2_10_10_10_REV: 0x8d9f,\n\n // Queries\n\n CURRENT_QUERY: 0x8865,\n QUERY_RESULT: 0x8866,\n QUERY_RESULT_AVAILABLE: 0x8867,\n ANY_SAMPLES_PASSED: 0x8c2f,\n ANY_SAMPLES_PASSED_CONSERVATIVE: 0x8d6a,\n\n // Draw buffers\n\n MAX_DRAW_BUFFERS: 0x8824,\n DRAW_BUFFER0: 0x8825,\n DRAW_BUFFER1: 0x8826,\n DRAW_BUFFER2: 0x8827,\n DRAW_BUFFER3: 0x8828,\n DRAW_BUFFER4: 0x8829,\n DRAW_BUFFER5: 0x882a,\n DRAW_BUFFER6: 0x882b,\n DRAW_BUFFER7: 0x882c,\n DRAW_BUFFER8: 0x882d,\n DRAW_BUFFER9: 0x882e,\n DRAW_BUFFER10: 0x882f,\n DRAW_BUFFER11: 0x8830,\n DRAW_BUFFER12: 0x8831,\n DRAW_BUFFER13: 0x8832,\n DRAW_BUFFER14: 0x8833,\n DRAW_BUFFER15: 0x8834,\n MAX_COLOR_ATTACHMENTS: 0x8cdf,\n COLOR_ATTACHMENT1: 0x8ce1,\n COLOR_ATTACHMENT2: 0x8ce2,\n COLOR_ATTACHMENT3: 0x8ce3,\n COLOR_ATTACHMENT4: 0x8ce4,\n COLOR_ATTACHMENT5: 0x8ce5,\n COLOR_ATTACHMENT6: 0x8ce6,\n COLOR_ATTACHMENT7: 0x8ce7,\n COLOR_ATTACHMENT8: 0x8ce8,\n COLOR_ATTACHMENT9: 0x8ce9,\n COLOR_ATTACHMENT10: 0x8cea,\n COLOR_ATTACHMENT11: 0x8ceb,\n COLOR_ATTACHMENT12: 0x8cec,\n COLOR_ATTACHMENT13: 0x8ced,\n COLOR_ATTACHMENT14: 0x8cee,\n COLOR_ATTACHMENT15: 0x8cef,\n\n // Samplers\n\n SAMPLER_3D: 0x8b5f,\n SAMPLER_2D_SHADOW: 0x8b62,\n SAMPLER_2D_ARRAY: 0x8dc1,\n SAMPLER_2D_ARRAY_SHADOW: 0x8dc4,\n SAMPLER_CUBE_SHADOW: 0x8dc5,\n INT_SAMPLER_2D: 0x8dca,\n INT_SAMPLER_3D: 0x8dcb,\n INT_SAMPLER_CUBE: 0x8dcc,\n INT_SAMPLER_2D_ARRAY: 0x8dcf,\n UNSIGNED_INT_SAMPLER_2D: 0x8dd2,\n UNSIGNED_INT_SAMPLER_3D: 0x8dd3,\n UNSIGNED_INT_SAMPLER_CUBE: 0x8dd4,\n UNSIGNED_INT_SAMPLER_2D_ARRAY: 0x8dd7,\n MAX_SAMPLES: 0x8d57,\n SAMPLER_BINDING: 0x8919,\n\n // Buffers\n\n PIXEL_PACK_BUFFER: 0x88eb,\n PIXEL_UNPACK_BUFFER: 0x88ec,\n PIXEL_PACK_BUFFER_BINDING: 0x88ed,\n PIXEL_UNPACK_BUFFER_BINDING: 0x88ef,\n COPY_READ_BUFFER: 0x8f36,\n COPY_WRITE_BUFFER: 0x8f37,\n COPY_READ_BUFFER_BINDING: 0x8f36,\n COPY_WRITE_BUFFER_BINDING: 0x8f37,\n\n // Data types\n\n FLOAT_MAT2x3: 0x8b65,\n FLOAT_MAT2x4: 0x8b66,\n FLOAT_MAT3x2: 0x8b67,\n FLOAT_MAT3x4: 0x8b68,\n FLOAT_MAT4x2: 0x8b69,\n FLOAT_MAT4x3: 0x8b6a,\n UNSIGNED_INT_VEC2: 0x8dc6,\n UNSIGNED_INT_VEC3: 0x8dc7,\n UNSIGNED_INT_VEC4: 0x8dc8,\n UNSIGNED_NORMALIZED: 0x8c17,\n SIGNED_NORMALIZED: 0x8f9c,\n\n // Vertex attributes\n\n VERTEX_ATTRIB_ARRAY_INTEGER: 0x88fd,\n VERTEX_ATTRIB_ARRAY_DIVISOR: 0x88fe,\n\n // Transform feedback\n\n TRANSFORM_FEEDBACK_BUFFER_MODE: 0x8c7f,\n MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 0x8c80,\n TRANSFORM_FEEDBACK_VARYINGS: 0x8c83,\n TRANSFORM_FEEDBACK_BUFFER_START: 0x8c84,\n TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8c85,\n TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 0x8c88,\n MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 0x8c8a,\n MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 0x8c8b,\n INTERLEAVED_ATTRIBS: 0x8c8c,\n SEPARATE_ATTRIBS: 0x8c8d,\n TRANSFORM_FEEDBACK_BUFFER: 0x8c8e,\n TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8c8f,\n TRANSFORM_FEEDBACK: 0x8e22,\n TRANSFORM_FEEDBACK_PAUSED: 0x8e23,\n TRANSFORM_FEEDBACK_ACTIVE: 0x8e24,\n TRANSFORM_FEEDBACK_BINDING: 0x8e25,\n\n // Framebuffers and renderbuffers\n\n FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 0x8210,\n FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 0x8211,\n FRAMEBUFFER_ATTACHMENT_RED_SIZE: 0x8212,\n FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 0x8213,\n FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 0x8214,\n FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 0x8215,\n FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 0x8216,\n FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 0x8217,\n FRAMEBUFFER_DEFAULT: 0x8218,\n // DEPTH_STENCIL_ATTACHMENT : 0x821A,\n // DEPTH_STENCIL: 0x84F9,\n DEPTH24_STENCIL8: 0x88f0,\n DRAW_FRAMEBUFFER_BINDING: 0x8ca6,\n READ_FRAMEBUFFER_BINDING: 0x8caa,\n RENDERBUFFER_SAMPLES: 0x8cab,\n FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 0x8cd4,\n FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 0x8d56,\n\n // Uniforms\n\n UNIFORM_BUFFER: 0x8a11,\n UNIFORM_BUFFER_BINDING: 0x8a28,\n UNIFORM_BUFFER_START: 0x8a29,\n UNIFORM_BUFFER_SIZE: 0x8a2a,\n MAX_VERTEX_UNIFORM_BLOCKS: 0x8a2b,\n MAX_FRAGMENT_UNIFORM_BLOCKS: 0x8a2d,\n MAX_COMBINED_UNIFORM_BLOCKS: 0x8a2e,\n MAX_UNIFORM_BUFFER_BINDINGS: 0x8a2f,\n MAX_UNIFORM_BLOCK_SIZE: 0x8a30,\n MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 0x8a31,\n MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 0x8a33,\n UNIFORM_BUFFER_OFFSET_ALIGNMENT: 0x8a34,\n ACTIVE_UNIFORM_BLOCKS: 0x8a36,\n UNIFORM_TYPE: 0x8a37,\n UNIFORM_SIZE: 0x8a38,\n UNIFORM_BLOCK_INDEX: 0x8a3a,\n UNIFORM_OFFSET: 0x8a3b,\n UNIFORM_ARRAY_STRIDE: 0x8a3c,\n UNIFORM_MATRIX_STRIDE: 0x8a3d,\n UNIFORM_IS_ROW_MAJOR: 0x8a3e,\n UNIFORM_BLOCK_BINDING: 0x8a3f,\n UNIFORM_BLOCK_DATA_SIZE: 0x8a40,\n UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8a42,\n UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8a43,\n UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8a44,\n UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8a46,\n\n // Sync objects\n\n OBJECT_TYPE: 0x9112,\n SYNC_CONDITION: 0x9113,\n SYNC_STATUS: 0x9114,\n SYNC_FLAGS: 0x9115,\n SYNC_FENCE: 0x9116,\n SYNC_GPU_COMMANDS_COMPLETE: 0x9117,\n UNSIGNALED: 0x9118,\n SIGNALED: 0x9119,\n ALREADY_SIGNALED: 0x911a,\n TIMEOUT_EXPIRED: 0x911b,\n CONDITION_SATISFIED: 0x911c,\n WAIT_FAILED: 0x911d,\n SYNC_FLUSH_COMMANDS_BIT: 0x00000001,\n\n // Miscellaneous constants\n\n COLOR: 0x1800,\n DEPTH: 0x1801,\n STENCIL: 0x1802,\n MIN: 0x8007,\n MAX: 0x8008,\n DEPTH_COMPONENT24: 0x81a6,\n STREAM_READ: 0x88e1,\n STREAM_COPY: 0x88e2,\n STATIC_READ: 0x88e5,\n STATIC_COPY: 0x88e6,\n DYNAMIC_READ: 0x88e9,\n DYNAMIC_COPY: 0x88ea,\n DEPTH_COMPONENT32F: 0x8cac,\n DEPTH32F_STENCIL8: 0x8cad,\n INVALID_INDEX: 0xffffffff,\n TIMEOUT_IGNORED: -1,\n MAX_CLIENT_WAIT_TIMEOUT_WEBGL: 0x9247,\n\n // Constants defined in WebGL extensions\n\n // ANGLE_instanced_arrays\n\n VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: 0x88fe,\n\n // WEBGL_debug_renderer_info\n\n UNMASKED_VENDOR_WEBGL: 0x9245,\n UNMASKED_RENDERER_WEBGL: 0x9246,\n\n // EXT_texture_filter_anisotropic\n\n MAX_TEXTURE_MAX_ANISOTROPY_EXT: 0x84ff,\n TEXTURE_MAX_ANISOTROPY_EXT: 0x84fe,\n\n // WEBGL_compressed_texture_s3tc\n\n COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83f0,\n COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83f1,\n COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83f2,\n COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83f3,\n\n // WEBGL_compressed_texture_es3\n\n COMPRESSED_R11_EAC: 0x9270,\n COMPRESSED_SIGNED_R11_EAC: 0x9271,\n COMPRESSED_RG11_EAC: 0x9272,\n COMPRESSED_SIGNED_RG11_EAC: 0x9273,\n COMPRESSED_RGB8_ETC2: 0x9274,\n COMPRESSED_RGBA8_ETC2_EAC: 0x9275,\n COMPRESSED_SRGB8_ETC2: 0x9276,\n COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 0x9277,\n COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9278,\n COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9279,\n\n // WEBGL_compressed_texture_pvrtc\n\n COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 0x8c00,\n COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 0x8c02,\n COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 0x8c01,\n COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 0x8c03,\n\n // WEBGL_compressed_texture_etc1\n\n COMPRESSED_RGB_ETC1_WEBGL: 0x8d64,\n\n // WEBGL_compressed_texture_atc\n\n COMPRESSED_RGB_ATC_WEBGL: 0x8c92,\n COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 0x8c92,\n COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 0x87ee,\n\n // WEBGL_depth_texture\n\n UNSIGNED_INT_24_8_WEBGL: 0x84fa,\n\n // OES_texture_half_float\n\n HALF_FLOAT_OES: 0x8d61,\n\n // WEBGL_color_buffer_float\n\n RGBA32F_EXT: 0x8814,\n RGB32F_EXT: 0x8815,\n FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: 0x8211,\n UNSIGNED_NORMALIZED_EXT: 0x8c17,\n\n // EXT_blend_minmax\n\n MIN_EXT: 0x8007,\n MAX_EXT: 0x8008,\n\n // EXT_sRGB\n\n SRGB_EXT: 0x8c40,\n SRGB_ALPHA_EXT: 0x8c42,\n SRGB8_ALPHA8_EXT: 0x8c43,\n FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: 0x8210,\n\n // OES_standard_derivatives\n\n FRAGMENT_SHADER_DERIVATIVE_HINT_OES: 0x8b8b,\n\n // WEBGL_draw_buffers\n\n COLOR_ATTACHMENT0_WEBGL: 0x8ce0,\n COLOR_ATTACHMENT1_WEBGL: 0x8ce1,\n COLOR_ATTACHMENT2_WEBGL: 0x8ce2,\n COLOR_ATTACHMENT3_WEBGL: 0x8ce3,\n COLOR_ATTACHMENT4_WEBGL: 0x8ce4,\n COLOR_ATTACHMENT5_WEBGL: 0x8ce5,\n COLOR_ATTACHMENT6_WEBGL: 0x8ce6,\n COLOR_ATTACHMENT7_WEBGL: 0x8ce7,\n COLOR_ATTACHMENT8_WEBGL: 0x8ce8,\n COLOR_ATTACHMENT9_WEBGL: 0x8ce9,\n COLOR_ATTACHMENT10_WEBGL: 0x8cea,\n COLOR_ATTACHMENT11_WEBGL: 0x8ceb,\n COLOR_ATTACHMENT12_WEBGL: 0x8cec,\n COLOR_ATTACHMENT13_WEBGL: 0x8ced,\n COLOR_ATTACHMENT14_WEBGL: 0x8cee,\n COLOR_ATTACHMENT15_WEBGL: 0x8cef,\n DRAW_BUFFER0_WEBGL: 0x8825,\n DRAW_BUFFER1_WEBGL: 0x8826,\n DRAW_BUFFER2_WEBGL: 0x8827,\n DRAW_BUFFER3_WEBGL: 0x8828,\n DRAW_BUFFER4_WEBGL: 0x8829,\n DRAW_BUFFER5_WEBGL: 0x882a,\n DRAW_BUFFER6_WEBGL: 0x882b,\n DRAW_BUFFER7_WEBGL: 0x882c,\n DRAW_BUFFER8_WEBGL: 0x882d,\n DRAW_BUFFER9_WEBGL: 0x882e,\n DRAW_BUFFER10_WEBGL: 0x882f,\n DRAW_BUFFER11_WEBGL: 0x8830,\n DRAW_BUFFER12_WEBGL: 0x8831,\n DRAW_BUFFER13_WEBGL: 0x8832,\n DRAW_BUFFER14_WEBGL: 0x8833,\n DRAW_BUFFER15_WEBGL: 0x8834,\n MAX_COLOR_ATTACHMENTS_WEBGL: 0x8cdf,\n MAX_DRAW_BUFFERS_WEBGL: 0x8824,\n\n // OES_vertex_array_object\n\n VERTEX_ARRAY_BINDING_OES: 0x85b5,\n\n // EXT_disjoint_timer_query\n\n QUERY_COUNTER_BITS_EXT: 0x8864,\n CURRENT_QUERY_EXT: 0x8865,\n QUERY_RESULT_EXT: 0x8866,\n QUERY_RESULT_AVAILABLE_EXT: 0x8867,\n TIME_ELAPSED_EXT: 0x88bf,\n TIMESTAMP_EXT: 0x8e28,\n GPU_DISJOINT_EXT: 0x8fbb // A Boolean indicating whether or not the GPU performed any disjoint operation.\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\n/* eslint-disable camelcase */\nvar INITIAL_STATE = {\n outlineEnabled: false,\n outlineRenderShadowmap: false,\n outlineShadowmap: null\n};\n\nfunction getUniforms() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_STATE,\n outlineEnabled = _ref.outlineEnabled,\n outlineRenderShadowmap = _ref.outlineRenderShadowmap,\n outlineShadowmap = _ref.outlineShadowmap;\n\n var uniforms = {};\n\n if (outlineEnabled !== undefined) {\n // ? 1.0 : 0.0;\n uniforms.outline_uEnabled = outlineEnabled;\n }\n\n if (outlineRenderShadowmap !== undefined) {\n // ? 1.0 : 0.0;\n uniforms.outline_uRenderOutlines = outlineRenderShadowmap;\n }\n\n if (outlineShadowmap !== undefined) {\n uniforms.outline_uShadowmap = outlineShadowmap;\n }\n\n return uniforms;\n}\n\nvar vs = \"attribute float instanceZLevel;\\nvarying float outline_vzLevel;\\nvarying vec4 outline_vPosition;\\n\\n// Set the z level for the outline shadowmap rendering\\nvoid outline_setZLevel(float zLevel) {\\n outline_vzLevel = zLevel;\\n}\\n\\n// Store an adjusted position for texture2DProj\\nvoid outline_setUV(vec4 position) {\\n // mat4(\\n // 0.5, 0.0, 0.0, 0.0,\\n // 0.0, 0.5, 0.0, 0.0,\\n // 0.0, 0.0, 0.5, 0.0,\\n // 0.5, 0.5, 0.5, 1.0\\n // ) * position;\\n outline_vPosition = vec4(position.xyz * 0.5 + position.w * 0.5, position.w);\\n}\\n\";\nvar fs = \"uniform bool outline_uEnabled;\\nuniform bool outline_uRenderOutlines;\\nuniform sampler2D outline_uShadowmap;\\n\\nvarying float outline_vzLevel;\\n// varying vec2 outline_vUV;\\nvarying vec4 outline_vPosition;\\n\\nconst float OUTLINE_Z_LEVEL_ERROR = 0.01;\\n\\n// Return a darker color in shadowmap\\nvec4 outline_filterShadowColor(vec4 color) {\\n return vec4(outline_vzLevel / 255., outline_vzLevel / 255., outline_vzLevel / 255., 1.);\\n}\\n\\n// Return a darker color if in shadowmap\\nvec4 outline_filterDarkenColor(vec4 color) {\\n if (outline_uEnabled) {\\n float maxZLevel;\\n if (outline_vPosition.q > 0.0) {\\n maxZLevel = texture2DProj(outline_uShadowmap, outline_vPosition).r * 255.;\\n } else {\\n discard;\\n }\\n if (maxZLevel < outline_vzLevel + OUTLINE_Z_LEVEL_ERROR) {\\n vec4(color.rgb * 0.5, color.a);\\n } else {\\n discard;\\n }\\n }\\n return color;\\n}\\n\\n// if enabled and rendering outlines - Render depth to shadowmap\\n// if enabled and rendering colors - Return a darker color if in shadowmap\\n// if disabled, just return color\\nvec4 outline_filterColor(vec4 color) {\\n if (outline_uEnabled) {\\n return outline_uRenderOutlines ?\\n outline_filterShadowColor(color) :\\n outline_filterDarkenColor(color);\\n }\\n return color;\\n}\\n\";\nvar _default = {\n name: 'outline',\n vs: vs,\n fs: fs,\n getUniforms: getUniforms\n};\nexports[\"default\"] = _default;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaGFkZXJsaWIvb3V0bGluZS9vdXRsaW5lLnRzIl0sIm5hbWVzIjpbIklOSVRJQUxfU1RBVEUiLCJvdXRsaW5lRW5hYmxlZCIsIm91dGxpbmVSZW5kZXJTaGFkb3dtYXAiLCJvdXRsaW5lU2hhZG93bWFwIiwiZ2V0VW5pZm9ybXMiLCJ1bmlmb3JtcyIsInVuZGVmaW5lZCIsIm91dGxpbmVfdUVuYWJsZWQiLCJvdXRsaW5lX3VSZW5kZXJPdXRsaW5lcyIsIm91dGxpbmVfdVNoYWRvd21hcCIsInZzIiwiZnMiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQSxJQUFNQSxhQUFrQyxHQUFHO0FBQ3pDQyxFQUFBQSxjQUFjLEVBQUUsS0FEeUI7QUFFekNDLEVBQUFBLHNCQUFzQixFQUFFLEtBRmlCO0FBR3pDQyxFQUFBQSxnQkFBZ0IsRUFBRTtBQUh1QixDQUEzQzs7QUFNQSxTQUFTQyxXQUFULEdBQW1HO0FBQUEsaUZBQWZKLGFBQWU7QUFBQSxNQUE1RUMsY0FBNEUsUUFBNUVBLGNBQTRFO0FBQUEsTUFBNURDLHNCQUE0RCxRQUE1REEsc0JBQTREO0FBQUEsTUFBcENDLGdCQUFvQyxRQUFwQ0EsZ0JBQW9DOztBQUNqRyxNQUFNRSxRQUE2QixHQUFHLEVBQXRDOztBQUNBLE1BQUlKLGNBQWMsS0FBS0ssU0FBdkIsRUFBa0M7QUFDaEM7QUFDQUQsSUFBQUEsUUFBUSxDQUFDRSxnQkFBVCxHQUE0Qk4sY0FBNUI7QUFDRDs7QUFDRCxNQUFJQyxzQkFBc0IsS0FBS0ksU0FBL0IsRUFBMEM7QUFDeEM7QUFDQUQsSUFBQUEsUUFBUSxDQUFDRyx1QkFBVCxHQUFtQ04sc0JBQW5DO0FBQ0Q7O0FBQ0QsTUFBSUMsZ0JBQWdCLEtBQUtHLFNBQXpCLEVBQW9DO0FBQ2xDRCxJQUFBQSxRQUFRLENBQUNJLGtCQUFULEdBQThCTixnQkFBOUI7QUFDRDs7QUFDRCxTQUFPRSxRQUFQO0FBQ0Q7O0FBRUQsSUFBTUssRUFBRSxtaUJBQVI7QUFzQkEsSUFBTUMsRUFBRSw0d0NBQVI7ZUErQ2U7QUFDYkMsRUFBQUEsSUFBSSxFQUFFLFNBRE87QUFFYkYsRUFBQUEsRUFBRSxFQUFGQSxFQUZhO0FBR2JDLEVBQUFBLEVBQUUsRUFBRkEsRUFIYTtBQUliUCxFQUFBQSxXQUFXLEVBQVhBO0FBSmEsQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuY29uc3QgSU5JVElBTF9TVEFURTogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcbiAgb3V0bGluZUVuYWJsZWQ6IGZhbHNlLFxuICBvdXRsaW5lUmVuZGVyU2hhZG93bWFwOiBmYWxzZSxcbiAgb3V0bGluZVNoYWRvd21hcDogbnVsbCxcbn07XG5cbmZ1bmN0aW9uIGdldFVuaWZvcm1zKHsgb3V0bGluZUVuYWJsZWQsIG91dGxpbmVSZW5kZXJTaGFkb3dtYXAsIG91dGxpbmVTaGFkb3dtYXAgfSA9IElOSVRJQUxfU1RBVEUpIHtcbiAgY29uc3QgdW5pZm9ybXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgaWYgKG91dGxpbmVFbmFibGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAvLyA/IDEuMCA6IDAuMDtcbiAgICB1bmlmb3Jtcy5vdXRsaW5lX3VFbmFibGVkID0gb3V0bGluZUVuYWJsZWQ7XG4gIH1cbiAgaWYgKG91dGxpbmVSZW5kZXJTaGFkb3dtYXAgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vID8gMS4wIDogMC4wO1xuICAgIHVuaWZvcm1zLm91dGxpbmVfdVJlbmRlck91dGxpbmVzID0gb3V0bGluZVJlbmRlclNoYWRvd21hcDtcbiAgfVxuICBpZiAob3V0bGluZVNoYWRvd21hcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdW5pZm9ybXMub3V0bGluZV91U2hhZG93bWFwID0gb3V0bGluZVNoYWRvd21hcDtcbiAgfVxuICByZXR1cm4gdW5pZm9ybXM7XG59XG5cbmNvbnN0IHZzID0gYFxcXG5hdHRyaWJ1dGUgZmxvYXQgaW5zdGFuY2VaTGV2ZWw7XG52YXJ5aW5nIGZsb2F0IG91dGxpbmVfdnpMZXZlbDtcbnZhcnlpbmcgdmVjNCBvdXRsaW5lX3ZQb3NpdGlvbjtcblxuLy8gU2V0IHRoZSB6IGxldmVsIGZvciB0aGUgb3V0bGluZSBzaGFkb3dtYXAgcmVuZGVyaW5nXG52b2lkIG91dGxpbmVfc2V0WkxldmVsKGZsb2F0IHpMZXZlbCkge1xuICBvdXRsaW5lX3Z6TGV2ZWwgPSB6TGV2ZWw7XG59XG5cbi8vIFN0b3JlIGFuIGFkanVzdGVkIHBvc2l0aW9uIGZvciB0ZXh0dXJlMkRQcm9qXG52b2lkIG91dGxpbmVfc2V0VVYodmVjNCBwb3NpdGlvbikge1xuICAvLyBtYXQ0KFxuICAvLyAgIDAuNSwgMC4wLCAwLjAsIDAuMCxcbiAgLy8gICAwLjAsIDAuNSwgMC4wLCAwLjAsXG4gIC8vICAgMC4wLCAwLjAsIDAuNSwgMC4wLFxuICAvLyAgIDAuNSwgMC41LCAwLjUsIDEuMFxuICAvLyApICogcG9zaXRpb247XG4gIG91dGxpbmVfdlBvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eXogKiAwLjUgKyBwb3NpdGlvbi53ICogMC41LCBwb3NpdGlvbi53KTtcbn1cbmA7XG5cbmNvbnN0IGZzID0gYFxcXG51bmlmb3JtIGJvb2wgb3V0bGluZV91RW5hYmxlZDtcbnVuaWZvcm0gYm9vbCBvdXRsaW5lX3VSZW5kZXJPdXRsaW5lcztcbnVuaWZvcm0gc2FtcGxlcjJEIG91dGxpbmVfdVNoYWRvd21hcDtcblxudmFyeWluZyBmbG9hdCBvdXRsaW5lX3Z6TGV2ZWw7XG4vLyB2YXJ5aW5nIHZlYzIgb3V0bGluZV92VVY7XG52YXJ5aW5nIHZlYzQgb3V0bGluZV92UG9zaXRpb247XG5cbmNvbnN0IGZsb2F0IE9VVExJTkVfWl9MRVZFTF9FUlJPUiA9IDAuMDE7XG5cbi8vIFJldHVybiBhIGRhcmtlciBjb2xvciBpbiBzaGFkb3dtYXBcbnZlYzQgb3V0bGluZV9maWx0ZXJTaGFkb3dDb2xvcih2ZWM0IGNvbG9yKSB7XG4gIHJldHVybiB2ZWM0KG91dGxpbmVfdnpMZXZlbCAvIDI1NS4sIG91dGxpbmVfdnpMZXZlbCAvIDI1NS4sIG91dGxpbmVfdnpMZXZlbCAvIDI1NS4sIDEuKTtcbn1cblxuLy8gUmV0dXJuIGEgZGFya2VyIGNvbG9yIGlmIGluIHNoYWRvd21hcFxudmVjNCBvdXRsaW5lX2ZpbHRlckRhcmtlbkNvbG9yKHZlYzQgY29sb3IpIHtcbiAgaWYgKG91dGxpbmVfdUVuYWJsZWQpIHtcbiAgICBmbG9hdCBtYXhaTGV2ZWw7XG4gICAgaWYgKG91dGxpbmVfdlBvc2l0aW9uLnEgPiAwLjApIHtcbiAgICAgIG1heFpMZXZlbCA9IHRleHR1cmUyRFByb2oob3V0bGluZV91U2hhZG93bWFwLCBvdXRsaW5lX3ZQb3NpdGlvbikuciAqIDI1NS47XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc2NhcmQ7XG4gICAgfVxuICAgIGlmIChtYXhaTGV2ZWwgPCBvdXRsaW5lX3Z6TGV2ZWwgKyBPVVRMSU5FX1pfTEVWRUxfRVJST1IpIHtcbiAgICAgIHZlYzQoY29sb3IucmdiICogMC41LCBjb2xvci5hKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlzY2FyZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbG9yO1xufVxuXG4vLyBpZiBlbmFibGVkIGFuZCByZW5kZXJpbmcgb3V0bGluZXMgLSBSZW5kZXIgZGVwdGggdG8gc2hhZG93bWFwXG4vLyBpZiBlbmFibGVkIGFuZCByZW5kZXJpbmcgY29sb3JzIC0gUmV0dXJuIGEgZGFya2VyIGNvbG9yIGlmIGluIHNoYWRvd21hcFxuLy8gaWYgZGlzYWJsZWQsIGp1c3QgcmV0dXJuIGNvbG9yXG52ZWM0IG91dGxpbmVfZmlsdGVyQ29sb3IodmVjNCBjb2xvcikge1xuICBpZiAob3V0bGluZV91RW5hYmxlZCkge1xuICAgIHJldHVybiBvdXRsaW5lX3VSZW5kZXJPdXRsaW5lcyA/XG4gICAgICBvdXRsaW5lX2ZpbHRlclNoYWRvd0NvbG9yKGNvbG9yKSA6XG4gICAgICBvdXRsaW5lX2ZpbHRlckRhcmtlbkNvbG9yKGNvbG9yKTtcbiAgfVxuICByZXR1cm4gY29sb3I7XG59XG5gO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdvdXRsaW5lJyxcbiAgdnMsXG4gIGZzLFxuICBnZXRVbmlmb3Jtcyxcbn07XG4iXX0=","/* eslint-disable camelcase */\nconst INITIAL_STATE: Record = {\n outlineEnabled: false,\n outlineRenderShadowmap: false,\n outlineShadowmap: null,\n};\n\nfunction getUniforms({ outlineEnabled, outlineRenderShadowmap, outlineShadowmap } = INITIAL_STATE) {\n const uniforms: Record = {};\n if (outlineEnabled !== undefined) {\n // ? 1.0 : 0.0;\n uniforms.outline_uEnabled = outlineEnabled;\n }\n if (outlineRenderShadowmap !== undefined) {\n // ? 1.0 : 0.0;\n uniforms.outline_uRenderOutlines = outlineRenderShadowmap;\n }\n if (outlineShadowmap !== undefined) {\n uniforms.outline_uShadowmap = outlineShadowmap;\n }\n return uniforms;\n}\n\nconst vs = `\\\nattribute float instanceZLevel;\nvarying float outline_vzLevel;\nvarying vec4 outline_vPosition;\n\n// Set the z level for the outline shadowmap rendering\nvoid outline_setZLevel(float zLevel) {\n outline_vzLevel = zLevel;\n}\n\n// Store an adjusted position for texture2DProj\nvoid outline_setUV(vec4 position) {\n // mat4(\n // 0.5, 0.0, 0.0, 0.0,\n // 0.0, 0.5, 0.0, 0.0,\n // 0.0, 0.0, 0.5, 0.0,\n // 0.5, 0.5, 0.5, 1.0\n // ) * position;\n outline_vPosition = vec4(position.xyz * 0.5 + position.w * 0.5, position.w);\n}\n`;\n\nconst fs = `\\\nuniform bool outline_uEnabled;\nuniform bool outline_uRenderOutlines;\nuniform sampler2D outline_uShadowmap;\n\nvarying float outline_vzLevel;\n// varying vec2 outline_vUV;\nvarying vec4 outline_vPosition;\n\nconst float OUTLINE_Z_LEVEL_ERROR = 0.01;\n\n// Return a darker color in shadowmap\nvec4 outline_filterShadowColor(vec4 color) {\n return vec4(outline_vzLevel / 255., outline_vzLevel / 255., outline_vzLevel / 255., 1.);\n}\n\n// Return a darker color if in shadowmap\nvec4 outline_filterDarkenColor(vec4 color) {\n if (outline_uEnabled) {\n float maxZLevel;\n if (outline_vPosition.q > 0.0) {\n maxZLevel = texture2DProj(outline_uShadowmap, outline_vPosition).r * 255.;\n } else {\n discard;\n }\n if (maxZLevel < outline_vzLevel + OUTLINE_Z_LEVEL_ERROR) {\n vec4(color.rgb * 0.5, color.a);\n } else {\n discard;\n }\n }\n return color;\n}\n\n// if enabled and rendering outlines - Render depth to shadowmap\n// if enabled and rendering colors - Return a darker color if in shadowmap\n// if disabled, just return color\nvec4 outline_filterColor(vec4 color) {\n if (outline_uEnabled) {\n return outline_uRenderOutlines ?\n outline_filterShadowColor(color) :\n outline_filterDarkenColor(color);\n }\n return color;\n}\n`;\n\nexport default {\n name: 'outline',\n vs,\n fs,\n getUniforms,\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _core = require(\"@deck.gl/core\");\n\nvar _layers = require(\"@deck.gl/layers\");\n\nvar _meshLayers = require(\"@deck.gl/mesh-layers\");\n\nvar _pathOutlineLayer = _interopRequireDefault(require(\"../path-outline-layer/path-outline-layer\"));\n\nvar _arrow2dGeometry = _interopRequireDefault(require(\"./arrow-2d-geometry\"));\n\nvar _createPathMarkers = _interopRequireDefault(require(\"./create-path-markers\"));\n\nvar _polyline = require(\"./polyline\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DISTANCE_FOR_MULTI_ARROWS = 0.1;\nvar ARROW_HEAD_SIZE = 0.2;\nvar ARROW_TAIL_WIDTH = 0.05; // const ARROW_CENTER_ADJUST = -0.8;\n\nvar DEFAULT_MARKER_LAYER = _meshLayers.SimpleMeshLayer;\nvar DEFAULT_MARKER_LAYER_PROPS = {\n mesh: new _arrow2dGeometry[\"default\"]({\n headSize: ARROW_HEAD_SIZE,\n tailWidth: ARROW_TAIL_WIDTH\n })\n};\nvar defaultProps = Object.assign({}, _pathOutlineLayer[\"default\"].defaultProps, {\n MarkerLayer: DEFAULT_MARKER_LAYER,\n markerLayerProps: DEFAULT_MARKER_LAYER_PROPS,\n sizeScale: 100,\n fp64: false,\n highlightIndex: -1,\n highlightPoint: null,\n getPath: function getPath(x) {\n return x.path;\n },\n getColor: function getColor(x) {\n return x.color;\n },\n getMarkerColor: function getMarkerColor(x) {\n return [0, 0, 0, 255];\n },\n getDirection: function getDirection(x) {\n return x.direction;\n },\n getMarkerPercentages: function getMarkerPercentages(object, _ref) {\n var lineLength = _ref.lineLength;\n return lineLength > DISTANCE_FOR_MULTI_ARROWS ? [0.25, 0.5, 0.75] : [0.5];\n }\n});\n\nvar PathMarkerLayer = /*#__PURE__*/function (_CompositeLayer) {\n _inherits(PathMarkerLayer, _CompositeLayer);\n\n var _super = _createSuper(PathMarkerLayer);\n\n function PathMarkerLayer() {\n _classCallCheck(this, PathMarkerLayer);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PathMarkerLayer, [{\n key: \"initializeState\",\n value: function initializeState() {\n this.state = {\n markers: [],\n mesh: new _arrow2dGeometry[\"default\"]({\n headSize: ARROW_HEAD_SIZE,\n tailWidth: ARROW_TAIL_WIDTH\n }),\n closestPoint: null\n };\n } // @ts-ignore\n\n }, {\n key: \"projectFlat\",\n value: function projectFlat(xyz, viewport, coordinateSystem, coordinateOrigin) {\n if (coordinateSystem === _core.COORDINATE_SYSTEM.METER_OFFSETS) {\n var _viewport$metersToLng = viewport.metersToLngLatDelta(xyz),\n _viewport$metersToLng2 = _slicedToArray(_viewport$metersToLng, 2),\n dx = _viewport$metersToLng2[0],\n dy = _viewport$metersToLng2[1];\n\n var _coordinateOrigin = _slicedToArray(coordinateOrigin, 2),\n _x = _coordinateOrigin[0],\n y = _coordinateOrigin[1];\n\n return viewport.projectFlat([_x + dx, dy + y]);\n } else if (coordinateSystem === _core.COORDINATE_SYSTEM.LNGLAT_OFFSETS) {\n var _xyz = _slicedToArray(xyz, 2),\n _dx = _xyz[0],\n _dy = _xyz[1];\n\n var _coordinateOrigin2 = _slicedToArray(coordinateOrigin, 2),\n _x2 = _coordinateOrigin2[0],\n _y = _coordinateOrigin2[1];\n\n return viewport.projectFlat([_x2 + _dx, _dy + _y]);\n }\n\n return viewport.projectFlat(xyz);\n }\n }, {\n key: \"updateState\",\n value: function updateState(_ref2) {\n var _this = this;\n\n var props = _ref2.props,\n oldProps = _ref2.oldProps,\n changeFlags = _ref2.changeFlags;\n\n if (changeFlags.dataChanged || changeFlags.updateTriggersChanged) {\n var _this$props = this.props,\n data = _this$props.data,\n getPath = _this$props.getPath,\n getDirection = _this$props.getDirection,\n getMarkerColor = _this$props.getMarkerColor,\n getMarkerPercentages = _this$props.getMarkerPercentages,\n coordinateSystem = _this$props.coordinateSystem,\n coordinateOrigin = _this$props.coordinateOrigin; // @ts-ignore\n\n var viewport = this.context.viewport;\n\n var projectFlat = function projectFlat(o) {\n return _this.projectFlat(o, viewport, coordinateSystem, coordinateOrigin);\n };\n\n this.state.markers = (0, _createPathMarkers[\"default\"])({\n data: data,\n getPath: getPath,\n getDirection: getDirection,\n getColor: getMarkerColor,\n getMarkerPercentages: getMarkerPercentages,\n projectFlat: projectFlat\n });\n\n this._recalculateClosestPoint();\n }\n\n if (changeFlags.propsChanged) {\n if (props.point !== oldProps.point) {\n this._recalculateClosestPoint();\n }\n }\n }\n }, {\n key: \"_recalculateClosestPoint\",\n value: function _recalculateClosestPoint() {\n var _this$props2 = this.props,\n highlightPoint = _this$props2.highlightPoint,\n highlightIndex = _this$props2.highlightIndex;\n\n if (highlightPoint && highlightIndex >= 0) {\n var object = this.props.data[highlightIndex];\n var points = this.props.getPath(object);\n\n var _getClosestPointOnPol = (0, _polyline.getClosestPointOnPolyline)({\n points: points,\n p: highlightPoint\n }),\n point = _getClosestPointOnPol.point;\n\n this.state.closestPoints = [{\n position: point\n }];\n } else {\n this.state.closestPoints = [];\n }\n }\n }, {\n key: \"getPickingInfo\",\n value: function getPickingInfo(_ref3) {\n var info = _ref3.info;\n return Object.assign(info, {\n // override object with picked feature\n object: info.object && info.object.path || info.object\n });\n }\n }, {\n key: \"renderLayers\",\n value: function renderLayers() {\n return [new _pathOutlineLayer[\"default\"](this.props, // @ts-ignore\n this.getSubLayerProps({\n id: 'paths',\n // Note: data has to be passed explicitly like this to avoid being empty\n data: this.props.data\n })), new this.props.MarkerLayer(this.getSubLayerProps(Object.assign({}, this.props.markerLayerProps, {\n id: 'markers',\n data: this.state.markers,\n getOrientation: function getOrientation(x) {\n return [0, -x.angle, 0];\n },\n getColor: function getColor(x) {\n return x.color;\n },\n sizeScale: this.props.sizeScale,\n fp64: this.props.fp64,\n pickable: false,\n parameters: {\n blend: false,\n depthTest: false\n }\n }))), this.state.closestPoints && new _layers.ScatterplotLayer({\n id: \"\".concat(this.props.id, \"-highlight\"),\n data: this.state.closestPoints,\n // @ts-ignore\n fp64: this.props.fp64\n })];\n }\n }]);\n\n return PathMarkerLayer;\n}(_core.CompositeLayer);\n\nexports[\"default\"] = PathMarkerLayer;\n\n_defineProperty(PathMarkerLayer, \"layerName\", 'PathMarkerLayer');\n\n_defineProperty(PathMarkerLayer, \"defaultProps\", defaultProps);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvcGF0aC1tYXJrZXItbGF5ZXIudHMiXSwibmFtZXMiOlsiRElTVEFOQ0VfRk9SX01VTFRJX0FSUk9XUyIsIkFSUk9XX0hFQURfU0laRSIsIkFSUk9XX1RBSUxfV0lEVEgiLCJERUZBVUxUX01BUktFUl9MQVlFUiIsIlNpbXBsZU1lc2hMYXllciIsIkRFRkFVTFRfTUFSS0VSX0xBWUVSX1BST1BTIiwibWVzaCIsIkFycm93MkRHZW9tZXRyeSIsImhlYWRTaXplIiwidGFpbFdpZHRoIiwiZGVmYXVsdFByb3BzIiwiT2JqZWN0IiwiYXNzaWduIiwiUGF0aE91dGxpbmVMYXllciIsIk1hcmtlckxheWVyIiwibWFya2VyTGF5ZXJQcm9wcyIsInNpemVTY2FsZSIsImZwNjQiLCJoaWdobGlnaHRJbmRleCIsImhpZ2hsaWdodFBvaW50IiwiZ2V0UGF0aCIsIngiLCJwYXRoIiwiZ2V0Q29sb3IiLCJjb2xvciIsImdldE1hcmtlckNvbG9yIiwiZ2V0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIiwiZ2V0TWFya2VyUGVyY2VudGFnZXMiLCJvYmplY3QiLCJsaW5lTGVuZ3RoIiwiUGF0aE1hcmtlckxheWVyIiwic3RhdGUiLCJtYXJrZXJzIiwiY2xvc2VzdFBvaW50IiwieHl6Iiwidmlld3BvcnQiLCJjb29yZGluYXRlU3lzdGVtIiwiY29vcmRpbmF0ZU9yaWdpbiIsIkNPT1JESU5BVEVfU1lTVEVNIiwiTUVURVJfT0ZGU0VUUyIsIm1ldGVyc1RvTG5nTGF0RGVsdGEiLCJkeCIsImR5IiwieSIsInByb2plY3RGbGF0IiwiTE5HTEFUX09GRlNFVFMiLCJwcm9wcyIsIm9sZFByb3BzIiwiY2hhbmdlRmxhZ3MiLCJkYXRhQ2hhbmdlZCIsInVwZGF0ZVRyaWdnZXJzQ2hhbmdlZCIsImRhdGEiLCJjb250ZXh0IiwibyIsIl9yZWNhbGN1bGF0ZUNsb3Nlc3RQb2ludCIsInByb3BzQ2hhbmdlZCIsInBvaW50IiwicG9pbnRzIiwicCIsImNsb3Nlc3RQb2ludHMiLCJwb3NpdGlvbiIsImluZm8iLCJnZXRTdWJMYXllclByb3BzIiwiaWQiLCJnZXRPcmllbnRhdGlvbiIsImFuZ2xlIiwicGlja2FibGUiLCJwYXJhbWV0ZXJzIiwiYmxlbmQiLCJkZXB0aFRlc3QiLCJTY2F0dGVycGxvdExheWVyIiwiQ29tcG9zaXRlTGF5ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLHlCQUF5QixHQUFHLEdBQWxDO0FBQ0EsSUFBTUMsZUFBZSxHQUFHLEdBQXhCO0FBQ0EsSUFBTUMsZ0JBQWdCLEdBQUcsSUFBekIsQyxDQUNBOztBQUVBLElBQU1DLG9CQUFvQixHQUFHQywyQkFBN0I7QUFlQSxJQUFNQywwQkFBMEIsR0FBRztBQUNqQ0MsRUFBQUEsSUFBSSxFQUFFLElBQUlDLDJCQUFKLENBQW9CO0FBQUVDLElBQUFBLFFBQVEsRUFBRVAsZUFBWjtBQUE2QlEsSUFBQUEsU0FBUyxFQUFFUDtBQUF4QyxHQUFwQjtBQUQyQixDQUFuQztBQUlBLElBQU1RLFlBQXVDLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JDLDZCQUFpQkgsWUFBbkMsRUFBaUQ7QUFDL0ZJLEVBQUFBLFdBQVcsRUFBRVgsb0JBRGtGO0FBRS9GWSxFQUFBQSxnQkFBZ0IsRUFBRVYsMEJBRjZFO0FBSS9GVyxFQUFBQSxTQUFTLEVBQUUsR0FKb0Y7QUFLL0ZDLEVBQUFBLElBQUksRUFBRSxLQUx5RjtBQU8vRkMsRUFBQUEsY0FBYyxFQUFFLENBQUMsQ0FQOEU7QUFRL0ZDLEVBQUFBLGNBQWMsRUFBRSxJQVIrRTtBQVUvRkMsRUFBQUEsT0FBTyxFQUFFLGlCQUFDQyxDQUFEO0FBQUEsV0FBT0EsQ0FBQyxDQUFDQyxJQUFUO0FBQUEsR0FWc0Y7QUFXL0ZDLEVBQUFBLFFBQVEsRUFBRSxrQkFBQ0Ys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LFFBQUFBLFNBQVMsRUFBRSxLQUFLK0IsS0FBTCxDQUFXL0IsU0FMdUI7QUFNN0NDLFFBQUFBLElBQUksRUFBRSxLQUFLOEIsS0FBTCxDQUFXOUIsSUFONEI7QUFPN0NrRCxRQUFBQSxRQUFRLEVBQUUsS0FQbUM7QUFRN0NDLFFBQUFBLFVBQVUsRUFBRTtBQUNWQyxVQUFBQSxLQUFLLEVBQUUsS0FERztBQUVWQyxVQUFBQSxTQUFTLEVBQUU7QUFGRDtBQVJpQyxPQUEvQyxDQURGLENBREYsQ0FWSyxFQTJCTCxLQUFLdEMsS0FBTCxDQUFXNEIsYUFBWCxJQUNFLElBQUlXLHdCQUFKLENBQXFCO0FBQ25CUCxRQUFBQSxFQUFFLFlBQUssS0FBS2pCLEtBQUwsQ0FBV2lCLEVBQWhCLGVBRGlCO0FBRW5CWixRQUFBQSxJQUFJLEVBQUUsS0FBS3BCLEtBQUwsQ0FBVzRCLGFBRkU7QUFHbkI7QUFDQTNDLFFBQUFBLElBQUksRUFBRSxLQUFLOEIsS0FBTCxDQUFXOUI7QUFKRSxPQUFyQixDQTVCRyxDQUFQO0FBbUNEOzs7O0VBcEgwQ3VELG9COzs7O2dCQUF4QnpDLGUsZUFDQSxpQjs7Z0JBREFBLGUsa0JBRUdyQixZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9zaXRlTGF5ZXIsIENPT1JESU5BVEVfU1lTVEVNIH0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQgeyBTY2F0dGVycGxvdExheWVyIH0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCB7IFNpbXBsZU1lc2hMYXllciB9IGZyb20gJ0BkZWNrLmdsL21lc2gtbGF5ZXJzJztcbmltcG9ydCBQYXRoT3V0bGluZUxheWVyLCB7IFBhdGhPdXRsaW5lTGF5ZXJQcm9wcyB9IGZyb20gJy4uL3BhdGgtb3V0bGluZS1sYXllci9wYXRoLW91dGxpbmUtbGF5ZXInO1xuaW1wb3J0IEFycm93MkRHZW9tZXRyeSBmcm9tICcuL2Fycm93LTJkLWdlb21ldHJ5JztcblxuaW1wb3J0IGNyZWF0ZVBhdGhNYXJrZXJzIGZyb20gJy4vY3JlYXRlLXBhdGgtbWFya2Vycyc7XG5pbXBvcnQgeyBnZXRDbG9zZXN0UG9pbnRPblBvbHlsaW5lIH0gZnJvbSAnLi9wb2x5bGluZSc7XG5cbmNvbnN0IERJU1RBTkNFX0ZPUl9NVUxUSV9BUlJPV1MgPSAwLjE7XG5jb25zdCBBUlJPV19IRUFEX1NJWkUgPSAwLjI7XG5jb25zdCBBUlJPV19UQUlMX1dJRFRIID0gMC4wNTtcbi8vIGNvbnN0IEFSUk9XX0NFTlRFUl9BREpVU1QgPSAtMC44O1xuXG5jb25zdCBERUZBVUxUX01BUktFUl9MQVlFUiA9IFNpbXBsZU1lc2hMYXllcjtcblxuZXhwb3J0IGludGVyZmFjZSBQYXRoTWFya2VyTGF5ZXJQcm9wczxEPiBleHRlbmRzIFBhdGhPdXRsaW5lTGF5ZXJQcm9wczxEPiB7XG4gIGdldERpcmVjdGlvbj86ICh4KSA9PiBhbnk7XG4gIGdldE1hcmtlckNvbG9yPzogKHgpID0+IG51bWJlcltdO1xuICBnZXRNYXJrZXJQZXJjZW50YWdlcz86ICh4OiBhbnksIGluZm86IGFueSkgPT4gbnVtYmVyW107XG4gIGhpZ2hsaWdodFBvaW50PzogYW55O1xuICBoaWdobGlnaHRJbmRleD86IG51bWJlcjtcbiAgTWFya2VyTGF5ZXI/OiBhbnk7XG4gIG1hcmtlckxheWVyUHJvcHM/OiBhbnk7XG4gIHNpemVTY2FsZT86IG51bWJlcjtcbiAgZnA2ND86IGJvb2xlYW47XG4gIG5lYnVsYUxheWVyPzogYW55O1xufVxuXG5jb25zdCBERUZBVUxUX01BUktFUl9MQVlFUl9QUk9QUyA9IHtcbiAgbWVzaDogbmV3IEFycm93MkRHZW9tZXRyeSh7IGhlYWRTaXplOiBBUlJPV19IRUFEX1NJWkUsIHRhaWxXaWR0aDogQVJST1dfVEFJTF9XSURUSCB9KSxcbn07XG5cbmNvbnN0IGRlZmF1bHRQcm9wczogUGF0aE1hcmtlckxheWVyUHJvcHM8YW55PiA9IE9iamVjdC5hc3NpZ24oe30sIFBhdGhPdXRsaW5lTGF5ZXIuZGVmYXVsdFByb3BzLCB7XG4gIE1hcmtlckxheWVyOiBERUZBVUxUX01BUktFUl9MQVlFUixcbiAgbWFya2VyTGF5ZXJQcm9wczogREVGQVVMVF9NQVJLRVJfTEFZRVJfUFJPUFMsXG5cbiAgc2l6ZVNjYWxlOiAxMDAsXG4gIGZwNjQ6IGZhbHNlLFxuXG4gIGhpZ2hsaWdodEluZGV4OiAtMSxcbiAgaGlnaGxpZ2h0UG9pbnQ6IG51bGwsXG5cbiAgZ2V0UGF0aDogKHgpID0+IHgucGF0aCxcbiAgZ2V0Q29sb3I6ICh4KSA9PiB4LmNvbG9yLFxuICBnZXRNYXJrZXJDb2xvcjogKHgpID0+IFswLCAwLCAwLCAyNTVdLFxuICBnZXREaXJlY3Rpb246ICh4KSA9PiB4LmRpcmVjdGlvbixcbiAgZ2V0TWFya2VyUGVyY2VudGFnZXM6IChvYmplY3QsIHsgbGluZUxlbmd0aCB9KSA9PlxuICAgIGxpbmVMZW5ndGggPiBESVNUQU5DRV9GT1JfTVVMVElfQVJST1dTID8gWzAuMjUsIDAuNSwgMC43NV0gOiBbMC41XSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXRoTWFya2VyTGF5ZXIgZXh0ZW5kcyBDb21wb3NpdGVMYXllcjxhbnksIFBhdGhNYXJrZXJMYXllclByb3BzPGFueT4+IHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdQYXRoTWFya2VyTGF5ZXInO1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgbWFya2VyczogW10sXG4gICAgICBtZXNoOiBuZXcgQXJyb3cyREdlb21ldHJ5KHsgaGVhZFNpemU6IEFSUk9XX0hFQURfU0laRSwgdGFpbFdpZHRoOiBBUlJPV19UQUlMX1dJRFRIIH0pLFxuICAgICAgY2xvc2VzdFBvaW50OiBudWxsLFxuICAgIH07XG4gIH1cbiAgLy8gQHRzLWlnbm9yZVxuICBwcm9qZWN0RmxhdCh4eXosIHZpZXdwb3J0LCBjb29yZGluYXRlU3lzdGVtLCBjb29yZGluYXRlT3JpZ2luKSB7XG4gICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT09IENPT1JESU5BVEVfU1lTVEVNLk1FVEVSX09GRlNFVFMpIHtcbiAgICAgIGNvbnN0IFtkeCwgZHldID0gdmlld3BvcnQubWV0ZXJzVG9MbmdMYXREZWx0YSh4eXopO1xuICAgICAgY29uc3QgW3gsIHldID0gY29vcmRpbmF0ZU9yaWdpbjtcbiAgICAgIHJldHVybiB2aWV3cG9ydC5wcm9qZWN0RmxhdChbeCArIGR4LCBkeSArIHldKTtcbiAgICB9IGVsc2UgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT09IENPT1JESU5BVEVfU1lTVEVNLkxOR0xBVF9PRkZTRVRTKSB7XG4gICAgICBjb25zdCBbZHgsIGR5XSA9IHh5ejtcbiAgICAgIGNvbnN0IFt4LCB5XSA9IGNvb3JkaW5hdGVPcmlnaW47XG4gICAgICByZXR1cm4gdmlld3BvcnQucHJvamVjdEZsYXQoW3ggKyBkeCwgZHkgKyB5XSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZpZXdwb3J0LnByb2plY3RGbGF0KHh5eik7XG4gIH1cblxuICB1cGRhdGVTdGF0ZSh7IHByb3BzLCBvbGRQcm9wcywgY2hhbmdlRmxhZ3MgfSkge1xuICAgIGlmIChjaGFuZ2VGbGFncy5kYXRhQ2hhbmdlZCB8fCBjaGFuZ2VGbGFncy51cGRhdGVUcmlnZ2Vyc0NoYW5nZWQpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZ2V0UGF0aCxcbiAgICAgICAgZ2V0RGlyZWN0aW9uLFxuICAgICAgICBnZXRNYXJrZXJDb2xvcixcbiAgICAgICAgZ2V0TWFya2VyUGVyY2VudGFnZXMsXG4gICAgICAgIGNvb3JkaW5hdGVTeXN0ZW0sXG4gICAgICAgIGNvb3JkaW5hdGVPcmlnaW4sXG4gICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHsgdmlld3BvcnQgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgIGNvbnN0IHByb2plY3RGbGF0ID0gKG8pID0+IHRoaXMucHJvamVjdEZsYXQobywgdmlld3BvcnQsIGNvb3JkaW5hdGVTeXN0ZW0sIGNvb3JkaW5hdGVPcmlnaW4pO1xuICAgICAgdGhpcy5zdGF0ZS5tYXJrZXJzID0gY3JlYXRlUGF0aE1hcmtlcnMoe1xuICAgICAgICBkYXRhLFxuICAgICAgICBnZXRQYXRoLFxuICAgICAgICBnZXREaXJlY3Rpb24sXG4gICAgICAgIGdldENvbG9yOiBnZXRNYXJrZXJDb2xvcixcbiAgICAgICAgZ2V0TWFya2VyUGVyY2VudGFnZXMsXG4gICAgICAgIHByb2plY3RGbGF0LFxuICAgICAgfSk7XG4gICAgICB0aGlzLl9yZWNhbGN1bGF0ZUNsb3Nlc3RQb2ludCgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlRmxhZ3MucHJvcHNDaGFuZ2VkKSB7XG4gICAgICBpZiAocHJvcHMucG9pbnQgIT09IG9sZFByb3BzLnBvaW50KSB7XG4gICAgICAgIHRoaXMuX3JlY2FsY3VsYXRlQ2xvc2VzdFBvaW50KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX3JlY2FsY3VsYXRlQ2xvc2VzdFBvaW50KCkge1xuICAgIGNvbnN0IHsgaGlnaGxpZ2h0UG9pbnQsIGhpZ2hsaWdodEluZGV4IH0gPSB0aGlzLnByb3BzO1xuICAgIGlmIChoaWdobGlnaHRQb2ludCAmJiBoaWdobGlnaHRJbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBvYmplY3QgPSB0aGlzLnByb3BzLmRhdGFbaGlnaGxpZ2h0SW5kZXhdO1xuICAgICAgY29uc3QgcG9pbnRzID0gdGhpcy5wcm9wcy5nZXRQYXRoKG9iamVjdCk7XG4gICAgICBjb25zdCB7IHBvaW50IH0gPSBnZXRDbG9zZXN0UG9pbnRPblBvbHlsaW5lKHsgcG9pbnRzLCBwOiBoaWdobGlnaHRQb2ludCB9KTtcbiAgICAgIHRoaXMuc3RhdGUuY2xvc2VzdFBvaW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiBwb2ludCxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhdGUuY2xvc2VzdFBvaW50cyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIGdldFBpY2tpbmdJbmZvKHsgaW5mbyB9KSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oaW5mbywge1xuICAgICAgLy8gb3ZlcnJpZGUgb2JqZWN0IHdpdGggcGlja2VkIGZlYXR1cmVcbiAgICAgIG9iamVjdDogKGluZm8ub2JqZWN0ICYmIGluZm8ub2JqZWN0LnBhdGgpIHx8IGluZm8ub2JqZWN0LFxuICAgIH0pO1xuICB9XG5cbiAgcmVuZGVyTGF5ZXJzKCkge1xuICAgIHJldHVybiBbXG4gICAgICBuZXcgUGF0aE91dGxpbmVMYXllcihcbiAgICAgICAgdGhpcy5wcm9wcyxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLmdldFN1YkxheWVyUHJvcHMoe1xuICAgICAgICAgIGlkOiAncGF0aHMnLFxuICAgICAgICAgIC8vIE5vdGU6IGRhdGEgaGFzIHRvIGJlIHBhc3NlZCBleHBsaWNpdGx5IGxpa2UgdGhpcyB0byBhdm9pZCBiZWluZyBlbXB0eVxuICAgICAgICAgIGRhdGE6IHRoaXMucHJvcHMuZGF0YSxcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICBuZXcgdGhpcy5wcm9wcy5NYXJrZXJMYXllcihcbiAgICAgICAgdGhpcy5nZXRTdWJMYXllclByb3BzKFxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oe30sIHRoaXMucHJvcHMubWFya2VyTGF5ZXJQcm9wcywge1xuICAgICAgICAgICAgaWQ6ICdtYXJrZXJzJyxcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuc3RhdGUubWFya2VycyxcbiAgICAgICAgICAgIGdldE9yaWVudGF0aW9uOiAoeCkgPT4gWzAsIC14LmFuZ2xlLCAwXSxcbiAgICAgICAgICAgIGdldENvbG9yOiAoeCkgPT4geC5jb2xvcixcbiAgICAgICAgICAgIHNpemVTY2FsZTogdGhpcy5wcm9wcy5zaXplU2NhbGUsXG4gICAgICAgICAgICBmcDY0OiB0aGlzLnByb3BzLmZwNjQsXG4gICAgICAgICAgICBwaWNrYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgIGJsZW5kOiBmYWxzZSxcbiAgICAgICAgICAgICAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIHRoaXMuc3RhdGUuY2xvc2VzdFBvaW50cyAmJlxuICAgICAgICBuZXcgU2NhdHRlcnBsb3RMYXllcih7XG4gICAgICAgICAgaWQ6IGAke3RoaXMucHJvcHMuaWR9LWhpZ2hsaWdodGAsXG4gICAgICAgICAgZGF0YTogdGhpcy5zdGF0ZS5jbG9zZXN0UG9pbnRzLFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBmcDY0OiB0aGlzLnByb3BzLmZwNjQsXG4gICAgICAgIH0pLFxuICAgIF07XG4gIH1cbn1cbiJdfQ==","import { CompositeLayer, COORDINATE_SYSTEM } from '@deck.gl/core';\nimport { ScatterplotLayer } from '@deck.gl/layers';\nimport { SimpleMeshLayer } from '@deck.gl/mesh-layers';\nimport PathOutlineLayer, { PathOutlineLayerProps } from '../path-outline-layer/path-outline-layer';\nimport Arrow2DGeometry from './arrow-2d-geometry';\n\nimport createPathMarkers from './create-path-markers';\nimport { getClosestPointOnPolyline } from './polyline';\n\nconst DISTANCE_FOR_MULTI_ARROWS = 0.1;\nconst ARROW_HEAD_SIZE = 0.2;\nconst ARROW_TAIL_WIDTH = 0.05;\n// const ARROW_CENTER_ADJUST = -0.8;\n\nconst DEFAULT_MARKER_LAYER = SimpleMeshLayer;\n\nexport interface PathMarkerLayerProps extends PathOutlineLayerProps {\n getDirection?: (x) => any;\n getMarkerColor?: (x) => number[];\n getMarkerPercentages?: (x: any, info: any) => number[];\n highlightPoint?: any;\n highlightIndex?: number;\n MarkerLayer?: any;\n markerLayerProps?: any;\n sizeScale?: number;\n fp64?: boolean;\n nebulaLayer?: any;\n}\n\nconst DEFAULT_MARKER_LAYER_PROPS = {\n mesh: new Arrow2DGeometry({ headSize: ARROW_HEAD_SIZE, tailWidth: ARROW_TAIL_WIDTH }),\n};\n\nconst defaultProps: PathMarkerLayerProps = Object.assign({}, PathOutlineLayer.defaultProps, {\n MarkerLayer: DEFAULT_MARKER_LAYER,\n markerLayerProps: DEFAULT_MARKER_LAYER_PROPS,\n\n sizeScale: 100,\n fp64: false,\n\n highlightIndex: -1,\n highlightPoint: null,\n\n getPath: (x) => x.path,\n getColor: (x) => x.color,\n getMarkerColor: (x) => [0, 0, 0, 255],\n getDirection: (x) => x.direction,\n getMarkerPercentages: (object, { lineLength }) =>\n lineLength > DISTANCE_FOR_MULTI_ARROWS ? [0.25, 0.5, 0.75] : [0.5],\n});\n\nexport default class PathMarkerLayer extends CompositeLayer> {\n static layerName = 'PathMarkerLayer';\n static defaultProps = defaultProps;\n\n initializeState() {\n this.state = {\n markers: [],\n mesh: new Arrow2DGeometry({ headSize: ARROW_HEAD_SIZE, tailWidth: ARROW_TAIL_WIDTH }),\n closestPoint: null,\n };\n }\n // @ts-ignore\n projectFlat(xyz, viewport, coordinateSystem, coordinateOrigin) {\n if (coordinateSystem === COORDINATE_SYSTEM.METER_OFFSETS) {\n const [dx, dy] = viewport.metersToLngLatDelta(xyz);\n const [x, y] = coordinateOrigin;\n return viewport.projectFlat([x + dx, dy + y]);\n } else if (coordinateSystem === COORDINATE_SYSTEM.LNGLAT_OFFSETS) {\n const [dx, dy] = xyz;\n const [x, y] = coordinateOrigin;\n return viewport.projectFlat([x + dx, dy + y]);\n }\n\n return viewport.projectFlat(xyz);\n }\n\n updateState({ props, oldProps, changeFlags }) {\n if (changeFlags.dataChanged || changeFlags.updateTriggersChanged) {\n const {\n data,\n getPath,\n getDirection,\n getMarkerColor,\n getMarkerPercentages,\n coordinateSystem,\n coordinateOrigin,\n } = this.props;\n // @ts-ignore\n const { viewport } = this.context;\n const projectFlat = (o) => this.projectFlat(o, viewport, coordinateSystem, coordinateOrigin);\n this.state.markers = createPathMarkers({\n data,\n getPath,\n getDirection,\n getColor: getMarkerColor,\n getMarkerPercentages,\n projectFlat,\n });\n this._recalculateClosestPoint();\n }\n if (changeFlags.propsChanged) {\n if (props.point !== oldProps.point) {\n this._recalculateClosestPoint();\n }\n }\n }\n\n _recalculateClosestPoint() {\n const { highlightPoint, highlightIndex } = this.props;\n if (highlightPoint && highlightIndex >= 0) {\n const object = this.props.data[highlightIndex];\n const points = this.props.getPath(object);\n const { point } = getClosestPointOnPolyline({ points, p: highlightPoint });\n this.state.closestPoints = [\n {\n position: point,\n },\n ];\n } else {\n this.state.closestPoints = [];\n }\n }\n\n getPickingInfo({ info }) {\n return Object.assign(info, {\n // override object with picked feature\n object: (info.object && info.object.path) || info.object,\n });\n }\n\n renderLayers() {\n return [\n new PathOutlineLayer(\n this.props,\n // @ts-ignore\n this.getSubLayerProps({\n id: 'paths',\n // Note: data has to be passed explicitly like this to avoid being empty\n data: this.props.data,\n })\n ),\n new this.props.MarkerLayer(\n this.getSubLayerProps(\n Object.assign({}, this.props.markerLayerProps, {\n id: 'markers',\n data: this.state.markers,\n getOrientation: (x) => [0, -x.angle, 0],\n getColor: (x) => x.color,\n sizeScale: this.props.sizeScale,\n fp64: this.props.fp64,\n pickable: false,\n parameters: {\n blend: false,\n depthTest: false,\n },\n })\n )\n ),\n this.state.closestPoints &&\n new ScatterplotLayer({\n id: `${this.props.id}-highlight`,\n data: this.state.closestPoints,\n // @ts-ignore\n fp64: this.props.fp64,\n }),\n ];\n }\n}\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Layer, project32, phongLighting, picking, log } from '@deck.gl/core';\nimport { Model, Geometry, Texture2D, isWebGL2 } from '@luma.gl/core';\nimport { hasFeature, FEATURES } from '@luma.gl/webgl';\nimport { MATRIX_ATTRIBUTES, shouldComposeModelMatrix } from '../utils/matrix';\nimport vs from './simple-mesh-layer-vertex.glsl';\nimport fs from './simple-mesh-layer-fragment.glsl';\nimport { getMeshBoundingBox } from '@loaders.gl/schema';\n\nfunction validateGeometryAttributes(attributes, useMeshColors) {\n const hasColorAttribute = attributes.COLOR_0 || attributes.colors;\n const useColorAttribute = hasColorAttribute && useMeshColors;\n\n if (!useColorAttribute) {\n attributes.colors = {\n constant: true,\n value: new Float32Array([1, 1, 1])\n };\n }\n\n log.assert(attributes.positions || attributes.POSITION, 'no \"postions\" or \"POSITION\" attribute in mesh');\n}\n\nfunction getGeometry(data, useMeshColors) {\n if (data.attributes) {\n validateGeometryAttributes(data.attributes, useMeshColors);\n\n if (data instanceof Geometry) {\n return data;\n } else {\n return new Geometry(data);\n }\n } else if (data.positions || data.POSITION) {\n validateGeometryAttributes(data, useMeshColors);\n return new Geometry({\n attributes: data\n });\n }\n\n throw Error('Invalid mesh');\n}\n\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst defaultProps = {\n mesh: {\n type: 'object',\n value: null,\n async: true\n },\n texture: {\n type: 'image',\n value: null,\n async: true\n },\n sizeScale: {\n type: 'number',\n value: 1,\n min: 0\n },\n _useMeshColors: {\n type: 'boolean',\n value: false\n },\n _instanced: true,\n wireframe: false,\n material: true,\n getPosition: {\n type: 'accessor',\n value: x => x.position\n },\n getColor: {\n type: 'accessor',\n value: DEFAULT_COLOR\n },\n getOrientation: {\n type: 'accessor',\n value: [0, 0, 0]\n },\n getScale: {\n type: 'accessor',\n value: [1, 1, 1]\n },\n getTranslation: {\n type: 'accessor',\n value: [0, 0, 0]\n },\n getTransformMatrix: {\n type: 'accessor',\n value: []\n },\n textureParameters: {\n type: 'object',\n ignore: true\n }\n};\nexport default class SimpleMeshLayer extends Layer {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", void 0);\n }\n\n getShaders() {\n const transpileToGLSL100 = !isWebGL2(this.context.gl);\n const defines = {};\n\n if (hasFeature(this.context.gl, FEATURES.GLSL_DERIVATIVES)) {\n defines.DERIVATIVES_AVAILABLE = 1;\n }\n\n return super.getShaders({\n vs,\n fs,\n modules: [project32, phongLighting, picking],\n transpileToGLSL100,\n defines\n });\n }\n\n getBounds() {\n var _mesh$header;\n\n if (this.props._instanced) {\n return super.getBounds();\n }\n\n let result = this.state.positionBounds;\n\n if (result) {\n return result;\n }\n\n const {\n mesh\n } = this.props;\n\n if (!mesh) {\n return null;\n }\n\n result = (_mesh$header = mesh.header) === null || _mesh$header === void 0 ? void 0 : _mesh$header.boundingBox;\n\n if (!result) {\n const {\n attributes\n } = getGeometry(mesh, this.props._useMeshColors);\n attributes.POSITION = attributes.POSITION || attributes.positions;\n result = getMeshBoundingBox(attributes);\n }\n\n this.state.positionBounds = result;\n return result;\n }\n\n initializeState() {\n const attributeManager = this.getAttributeManager();\n attributeManager.addInstanced({\n instancePositions: {\n transition: true,\n type: 5130,\n fp64: this.use64bitPositions(),\n size: 3,\n accessor: 'getPosition'\n },\n instanceColors: {\n type: 5121,\n transition: true,\n size: this.props.colorFormat.length,\n normalized: true,\n accessor: 'getColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceModelMatrix: MATRIX_ATTRIBUTES\n });\n this.setState({\n emptyTexture: new Texture2D(this.context.gl, {\n data: new Uint8Array(4),\n width: 1,\n height: 1\n })\n });\n }\n\n updateState(params) {\n super.updateState(params);\n const {\n props,\n oldProps,\n changeFlags\n } = params;\n\n if (props.mesh !== oldProps.mesh || changeFlags.extensionsChanged) {\n var _this$state$model;\n\n this.state.positionBounds = null;\n (_this$state$model = this.state.model) === null || _this$state$model === void 0 ? void 0 : _this$state$model.delete();\n\n if (props.mesh) {\n this.state.model = this.getModel(props.mesh);\n const attributes = props.mesh.attributes || props.mesh;\n this.setState({\n hasNormals: Boolean(attributes.NORMAL || attributes.normals)\n });\n }\n\n this.getAttributeManager().invalidateAll();\n }\n\n if (props.texture !== oldProps.texture) {\n this.setTexture(props.texture);\n }\n\n if (this.state.model) {\n this.state.model.setDrawMode(this.props.wireframe ? 3 : 4);\n }\n }\n\n finalizeState(context) {\n super.finalizeState(context);\n this.state.emptyTexture.delete();\n }\n\n draw({\n uniforms\n }) {\n if (!this.state.model) {\n return;\n }\n\n const {\n viewport\n } = this.context;\n const {\n sizeScale,\n coordinateSystem,\n _instanced\n } = this.props;\n this.state.model.setUniforms(uniforms).setUniforms({\n sizeScale,\n composeModelMatrix: !_instanced || shouldComposeModelMatrix(viewport, coordinateSystem),\n flatShading: !this.state.hasNormals\n }).draw();\n }\n\n get isLoaded() {\n var _this$state;\n\n return ((_this$state = this.state) === null || _this$state === void 0 ? void 0 : _this$state.model) && super.isLoaded;\n }\n\n getModel(mesh) {\n const model = new Model(this.context.gl, { ...this.getShaders(),\n id: this.props.id,\n geometry: getGeometry(mesh, this.props._useMeshColors),\n isInstanced: true\n });\n const {\n texture\n } = this.props;\n const {\n emptyTexture\n } = this.state;\n model.setUniforms({\n sampler: texture || emptyTexture,\n hasTexture: Boolean(texture)\n });\n return model;\n }\n\n setTexture(texture) {\n const {\n emptyTexture,\n model\n } = this.state;\n\n if (model) {\n model.setUniforms({\n sampler: texture || emptyTexture,\n hasTexture: Boolean(texture)\n });\n }\n }\n\n}\n\n_defineProperty(SimpleMeshLayer, \"defaultProps\", defaultProps);\n\n_defineProperty(SimpleMeshLayer, \"layerName\", 'SimpleMeshLayer');\n//# sourceMappingURL=simple-mesh-layer.js.map","// Note: This file will either be moved back to deck.gl or reformatted to web-monorepo standards\n// Disabling lint temporarily to facilitate copying code in and out of this repo\n/* eslint-disable */\n\n// Copyright (c) 2015 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {\n Layer,\n project32,\n phongLighting,\n picking,\n DefaultProps,\n log,\n LayerContext,\n Material\n} from '@deck.gl/core';\nimport GL from '@luma.gl/constants';\nimport {Model, Geometry, Texture2D, isWebGL2} from '@luma.gl/core';\nimport {hasFeature, FEATURES} from '@luma.gl/webgl';\n\nimport {MATRIX_ATTRIBUTES, shouldComposeModelMatrix} from '../utils/matrix';\n\nimport vs from './simple-mesh-layer-vertex.glsl';\nimport fs from './simple-mesh-layer-fragment.glsl';\n\nimport type {\n LayerProps,\n LayerDataSource,\n UpdateParameters,\n Accessor,\n Position,\n Color,\n Texture\n} from '@deck.gl/core';\nimport type {MeshAttribute, MeshAttributes} from '@loaders.gl/schema';\nimport type {Geometry as GeometryType} from '@luma.gl/engine';\nimport {GLTFMaterialParser} from '@luma.gl/experimental';\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\n\nfunction validateGeometryAttributes(attributes: Record, useMeshColors: boolean): void {\n const hasColorAttribute = attributes.COLOR_0 || attributes.colors;\n const useColorAttribute = hasColorAttribute && useMeshColors;\n if (!useColorAttribute) {\n attributes.colors = {constant: true, value: new Float32Array([1, 1, 1])};\n }\n log.assert(\n attributes.positions || attributes.POSITION,\n 'no \"postions\" or \"POSITION\" attribute in mesh'\n );\n}\n\n/*\n * Convert mesh data into geometry\n * @returns {Geometry} geometry\n */\nfunction getGeometry(data: Mesh, useMeshColors: boolean): Geometry {\n if ((data as any).attributes) {\n validateGeometryAttributes((data as any).attributes, useMeshColors);\n if (data instanceof Geometry) {\n return data;\n } else {\n return new Geometry(data);\n }\n } else if ((data as MeshAttributes).positions || (data as MeshAttributes).POSITION) {\n validateGeometryAttributes(data, useMeshColors);\n return new Geometry({\n attributes: data\n });\n }\n throw Error('Invalid mesh');\n}\n\nconst DEFAULT_COLOR: [number, number, number, number] = [0, 0, 0, 255];\n\ntype Mesh =\n | GeometryType\n | {\n attributes: MeshAttributes;\n indices?: MeshAttribute;\n }\n | MeshAttributes;\n\ntype _SimpleMeshLayerProps = {\n data: LayerDataSource;\n mesh: string | Mesh | Promise | null;\n texture?: string | Texture | Promise;\n /** Customize the [texture parameters](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texParameter). */\n textureParameters?: Record | null;\n\n /** Anchor position accessor. */\n getPosition?: Accessor;\n /** Color value or accessor.\n * If `mesh` does not contain vertex colors, use this color to render each object.\n * If `mesh` contains vertex colors, then the two colors are mixed together.\n * Use `[255, 255, 255]` to use the original mesh colors.\n * If `texture` is assigned, then both colors will be ignored.\n * @default [0, 0, 0, 255]\n */\n getColor?: Accessor;\n /**\n * Orientation in [pitch, yaw, roll] in degrees.\n * @see https://en.wikipedia.org/wiki/Euler_angles\n * @default [0, 0, 0]\n */\n getOrientation?: Accessor;\n /**\n * Scaling factor of the model along each axis.\n * @default [1, 1, 1]\n */\n getScale?: Accessor;\n /**\n * Translation from the anchor point, [x, y, z] in meters.\n * @default [0, 0, 0]\n */\n getTranslation?: Accessor;\n /**\n * TransformMatrix. If specified, `getOrientation`, `getScale` and `getTranslation` are ignored.\n */\n getTransformMatrix?: Accessor;\n /**\n * Multiplier to scale each geometry by.\n * @default 1\n */\n sizeScale?: number;\n /**\n * @deprecated Whether to color pixels using vertex colors supplied in the mesh (the `COLOR_0` or `colors` attribute).\n * If set to `false` vertex colors will be ignored.\n * This prop will be removed and set to always true in the next major release.\n * @default false\n */\n _useMeshColors?: boolean;\n\n /**\n * (Experimental) If rendering only one instance of the mesh, set this to false to treat mesh positions\n * as deltas of the world coordinates of the anchor.\n * E.g. in LNGLAT coordinates, mesh positions are interpreted as meter offsets by default.\n * setting _instanced to false interpreted mesh positions as lnglat deltas.\n * @default true\n */\n _instanced?: boolean; // TODO - formalize API\n /**\n * Whether to render the mesh in wireframe mode.\n * @default false\n */\n wireframe?: boolean;\n /**\n * Material props for lighting effect.\n *\n * @default true\n * @see https://deck.gl/docs/developer-guide/using-lighting#constructing-a-material-instance\n */\n material?: Material;\n};\n\nexport type SimpleMeshLayerProps = _SimpleMeshLayerProps & LayerProps;\n\nconst defaultProps: DefaultProps = {\n mesh: {type: 'object', value: null, async: true},\n texture: {type: 'image', value: null, async: true},\n sizeScale: {type: 'number', value: 1, min: 0},\n // Whether the color attribute in a mesh will be used\n // This prop will be removed and set to true in next major release\n _useMeshColors: {type: 'boolean', value: false},\n\n // _instanced is a hack to use world position instead of meter offsets in mesh\n // TODO - formalize API\n _instanced: true,\n // NOTE(Tarek): Quick and dirty wireframe. Just draws\n // the same mesh with LINE_STRIPS. Won't follow edges\n // of the original mesh.\n wireframe: false,\n // Optional material for 'lighting' shader module\n material: true,\n getPosition: {type: 'accessor', value: x => x.position},\n getColor: {type: 'accessor', value: DEFAULT_COLOR},\n\n // yaw, pitch and roll are in degrees\n // https://en.wikipedia.org/wiki/Euler_angles\n // [pitch, yaw, roll]\n getOrientation: {type: 'accessor', value: [0, 0, 0]},\n getScale: {type: 'accessor', value: [1, 1, 1]},\n getTranslation: {type: 'accessor', value: [0, 0, 0]},\n // 4x4 matrix\n getTransformMatrix: {type: 'accessor', value: []},\n\n textureParameters: {type: 'object', ignore: true}\n};\n\n/** Render a number of instances of an arbitrary 3D geometry. */\nexport default class SimpleMeshLayer extends Layer<\n ExtraPropsT & Required<_SimpleMeshLayerProps>\n> {\n static defaultProps = defaultProps;\n static layerName = 'SimpleMeshLayer';\n\n state!: {\n materialParser?: GLTFMaterialParser;\n model?: Model;\n emptyTexture: Texture2D;\n hasNormals?: boolean;\n positionBounds?: [number[], number[]] | null;\n };\n\n getShaders() {\n const transpileToGLSL100 = !isWebGL2(this.context.gl);\n\n const defines: any = {};\n\n if (hasFeature(this.context.gl, FEATURES.GLSL_DERIVATIVES)) {\n defines.DERIVATIVES_AVAILABLE = 1;\n }\n\n return super.getShaders({\n vs,\n fs,\n modules: [project32, phongLighting, picking],\n transpileToGLSL100,\n defines\n });\n }\n\n getBounds(): [number[], number[]] | null {\n if (this.props._instanced) {\n return super.getBounds();\n }\n let result = this.state.positionBounds;\n if (result) {\n return result;\n }\n const {mesh} = this.props;\n if (!mesh) {\n return null;\n }\n // @ts-ignore Detect if mesh is generated by loaders.gl\n result = mesh.header?.boundingBox;\n\n if (!result) {\n // Otherwise, calculate bounding box from positions\n const {attributes} = getGeometry(mesh as Mesh, this.props._useMeshColors);\n attributes.POSITION = attributes.POSITION || attributes.positions;\n result = getMeshBoundingBox(attributes);\n }\n\n this.state.positionBounds = result;\n return result;\n }\n\n initializeState() {\n const attributeManager = this.getAttributeManager();\n // attributeManager is always defined in a primitive layer\n attributeManager!.addInstanced({\n instancePositions: {\n transition: true,\n type: GL.DOUBLE,\n fp64: this.use64bitPositions(),\n size: 3,\n accessor: 'getPosition'\n },\n instanceColors: {\n type: GL.UNSIGNED_BYTE,\n transition: true,\n size: this.props.colorFormat.length,\n normalized: true,\n accessor: 'getColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceModelMatrix: MATRIX_ATTRIBUTES\n });\n\n this.setState({\n // Avoid luma.gl's missing uniform warning\n // TODO - add feature to luma.gl to specify ignored uniforms?\n emptyTexture: new Texture2D(this.context.gl, {\n data: new Uint8Array(4),\n width: 1,\n height: 1\n })\n });\n }\n\n updateState(params: UpdateParameters) {\n super.updateState(params);\n\n const {props, oldProps, changeFlags} = params;\n if (props.mesh !== oldProps.mesh || changeFlags.extensionsChanged) {\n this.state.positionBounds = null;\n this.state.model?.delete();\n if (props.mesh) {\n this.state.model = this.getModel(props.mesh as Mesh);\n\n const attributes = (props.mesh as any).attributes || props.mesh;\n this.setState({\n hasNormals: Boolean(attributes.NORMAL || attributes.normals)\n });\n }\n // attributeManager is always defined in a primitive layer\n this.getAttributeManager()!.invalidateAll();\n }\n\n if (props.texture !== oldProps.texture) {\n this.setTexture(props.texture);\n }\n\n if (this.state.model) {\n this.state.model.setDrawMode(this.props.wireframe ? GL.LINE_STRIP : GL.TRIANGLES);\n }\n }\n\n finalizeState(context: LayerContext) {\n super.finalizeState(context);\n\n this.state.emptyTexture.delete();\n }\n\n draw({uniforms}) {\n if (!this.state.model) {\n return;\n }\n\n const {viewport} = this.context;\n const {sizeScale, coordinateSystem, _instanced} = this.props;\n\n this.state.model\n .setUniforms(uniforms)\n .setUniforms({\n sizeScale,\n composeModelMatrix: !_instanced || shouldComposeModelMatrix(viewport, coordinateSystem),\n flatShading: !this.state.hasNormals\n })\n .draw();\n }\n\n get isLoaded(): boolean {\n return this.state?.model && super.isLoaded;\n }\n\n protected getModel(mesh: Mesh): Model {\n const model = new Model(this.context.gl, {\n ...this.getShaders(),\n id: this.props.id,\n geometry: getGeometry(mesh, this.props._useMeshColors),\n isInstanced: true\n });\n\n const {texture} = this.props;\n const {emptyTexture} = this.state;\n model.setUniforms({\n sampler: texture || emptyTexture,\n hasTexture: Boolean(texture)\n });\n\n return model;\n }\n\n private setTexture(texture: Texture2D): void {\n const {emptyTexture, model} = this.state;\n\n // props.mesh may not be ready at this time.\n // The sampler will be set when `getModel` is called\n if (model) {\n model.setUniforms({\n sampler: texture || emptyTexture,\n hasTexture: Boolean(texture)\n });\n }\n }\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import { COORDINATE_SYSTEM, createIterable } from '@deck.gl/core';\nconst RADIAN_PER_DEGREE = Math.PI / 180;\nconst modelMatrix = new Float32Array(16);\nconst valueArray = new Float32Array(12);\n\nfunction calculateTransformMatrix(targetMatrix, orientation, scale) {\n const pitch = orientation[0] * RADIAN_PER_DEGREE;\n const yaw = orientation[1] * RADIAN_PER_DEGREE;\n const roll = orientation[2] * RADIAN_PER_DEGREE;\n const sr = Math.sin(roll);\n const sp = Math.sin(pitch);\n const sw = Math.sin(yaw);\n const cr = Math.cos(roll);\n const cp = Math.cos(pitch);\n const cw = Math.cos(yaw);\n const scx = scale[0];\n const scy = scale[1];\n const scz = scale[2];\n targetMatrix[0] = scx * cw * cp;\n targetMatrix[1] = scx * sw * cp;\n targetMatrix[2] = scx * -sp;\n targetMatrix[3] = scy * (-sw * cr + cw * sp * sr);\n targetMatrix[4] = scy * (cw * cr + sw * sp * sr);\n targetMatrix[5] = scy * cp * sr;\n targetMatrix[6] = scz * (sw * sr + cw * sp * cr);\n targetMatrix[7] = scz * (-cw * sr + sw * sp * cr);\n targetMatrix[8] = scz * cp * cr;\n}\n\nfunction getExtendedMat3FromMat4(mat4) {\n mat4[0] = mat4[0];\n mat4[1] = mat4[1];\n mat4[2] = mat4[2];\n mat4[3] = mat4[4];\n mat4[4] = mat4[5];\n mat4[5] = mat4[6];\n mat4[6] = mat4[8];\n mat4[7] = mat4[9];\n mat4[8] = mat4[10];\n mat4[9] = mat4[12];\n mat4[10] = mat4[13];\n mat4[11] = mat4[14];\n return mat4.subarray(0, 12);\n}\n\nexport const MATRIX_ATTRIBUTES = {\n size: 12,\n accessor: ['getOrientation', 'getScale', 'getTranslation', 'getTransformMatrix'],\n shaderAttributes: {\n instanceModelMatrix__LOCATION_0: {\n size: 3,\n elementOffset: 0\n },\n instanceModelMatrix__LOCATION_1: {\n size: 3,\n elementOffset: 3\n },\n instanceModelMatrix__LOCATION_2: {\n size: 3,\n elementOffset: 6\n },\n instanceTranslation: {\n size: 3,\n elementOffset: 9\n }\n },\n\n update(attribute, {\n startRow,\n endRow\n }) {\n const {\n data,\n getOrientation,\n getScale,\n getTranslation,\n getTransformMatrix\n } = this.props;\n const arrayMatrix = Array.isArray(getTransformMatrix);\n const constantMatrix = arrayMatrix && getTransformMatrix.length === 16;\n const constantScale = Array.isArray(getScale);\n const constantOrientation = Array.isArray(getOrientation);\n const constantTranslation = Array.isArray(getTranslation);\n const hasMatrix = constantMatrix || !arrayMatrix && Boolean(getTransformMatrix(data[0]));\n\n if (hasMatrix) {\n attribute.constant = constantMatrix;\n } else {\n attribute.constant = constantOrientation && constantScale && constantTranslation;\n }\n\n const instanceModelMatrixData = attribute.value;\n\n if (attribute.constant) {\n let matrix;\n\n if (hasMatrix) {\n modelMatrix.set(getTransformMatrix);\n matrix = getExtendedMat3FromMat4(modelMatrix);\n } else {\n matrix = valueArray;\n const orientation = getOrientation;\n const scale = getScale;\n calculateTransformMatrix(matrix, orientation, scale);\n matrix.set(getTranslation, 9);\n }\n\n attribute.value = new Float32Array(matrix);\n } else {\n let i = startRow * attribute.size;\n const {\n iterable,\n objectInfo\n } = createIterable(data, startRow, endRow);\n\n for (const object of iterable) {\n objectInfo.index++;\n let matrix;\n\n if (hasMatrix) {\n modelMatrix.set(constantMatrix ? getTransformMatrix : getTransformMatrix(object, objectInfo));\n matrix = getExtendedMat3FromMat4(modelMatrix);\n } else {\n matrix = valueArray;\n const orientation = constantOrientation ? getOrientation : getOrientation(object, objectInfo);\n const scale = constantScale ? getScale : getScale(object, objectInfo);\n calculateTransformMatrix(matrix, orientation, scale);\n matrix.set(constantTranslation ? getTranslation : getTranslation(object, objectInfo), 9);\n }\n\n instanceModelMatrixData[i++] = matrix[0];\n instanceModelMatrixData[i++] = matrix[1];\n instanceModelMatrixData[i++] = matrix[2];\n instanceModelMatrixData[i++] = matrix[3];\n instanceModelMatrixData[i++] = matrix[4];\n instanceModelMatrixData[i++] = matrix[5];\n instanceModelMatrixData[i++] = matrix[6];\n instanceModelMatrixData[i++] = matrix[7];\n instanceModelMatrixData[i++] = matrix[8];\n instanceModelMatrixData[i++] = matrix[9];\n instanceModelMatrixData[i++] = matrix[10];\n instanceModelMatrixData[i++] = matrix[11];\n }\n }\n }\n\n};\nexport function shouldComposeModelMatrix(viewport, coordinateSystem) {\n return coordinateSystem === COORDINATE_SYSTEM.CARTESIAN || coordinateSystem === COORDINATE_SYSTEM.METER_OFFSETS || coordinateSystem === COORDINATE_SYSTEM.DEFAULT && !viewport.isGeospatial;\n}\n//# sourceMappingURL=matrix.js.map","import {COORDINATE_SYSTEM, createIterable} from '@deck.gl/core';\n\n/* eslint-disable max-statements, complexity, camelcase */\nconst RADIAN_PER_DEGREE = Math.PI / 180;\nconst modelMatrix = new Float32Array(16);\nconst valueArray = new Float32Array(12);\n\nfunction calculateTransformMatrix(targetMatrix, orientation, scale) {\n const pitch = orientation[0] * RADIAN_PER_DEGREE;\n const yaw = orientation[1] * RADIAN_PER_DEGREE;\n const roll = orientation[2] * RADIAN_PER_DEGREE;\n\n const sr = Math.sin(roll);\n const sp = Math.sin(pitch);\n const sw = Math.sin(yaw);\n\n const cr = Math.cos(roll);\n const cp = Math.cos(pitch);\n const cw = Math.cos(yaw);\n\n const scx = scale[0];\n const scy = scale[1];\n const scz = scale[2];\n\n targetMatrix[0] = scx * cw * cp; // 0,0\n targetMatrix[1] = scx * sw * cp; // 1,0\n targetMatrix[2] = scx * -sp; // 2,0\n targetMatrix[3] = scy * (-sw * cr + cw * sp * sr); // 0,1\n targetMatrix[4] = scy * (cw * cr + sw * sp * sr); // 1,1\n targetMatrix[5] = scy * cp * sr; // 2,1\n targetMatrix[6] = scz * (sw * sr + cw * sp * cr); // 0,2\n targetMatrix[7] = scz * (-cw * sr + sw * sp * cr); // 1,2\n targetMatrix[8] = scz * cp * cr; // 2,2\n}\n\nfunction getExtendedMat3FromMat4(mat4) {\n mat4[0] = mat4[0];\n mat4[1] = mat4[1];\n mat4[2] = mat4[2];\n mat4[3] = mat4[4];\n mat4[4] = mat4[5];\n mat4[5] = mat4[6];\n mat4[6] = mat4[8];\n mat4[7] = mat4[9];\n mat4[8] = mat4[10];\n mat4[9] = mat4[12];\n mat4[10] = mat4[13];\n mat4[11] = mat4[14];\n\n return mat4.subarray(0, 12);\n}\n\nexport const MATRIX_ATTRIBUTES = {\n size: 12,\n accessor: ['getOrientation', 'getScale', 'getTranslation', 'getTransformMatrix'],\n shaderAttributes: {\n instanceModelMatrix__LOCATION_0: {\n size: 3,\n elementOffset: 0\n },\n instanceModelMatrix__LOCATION_1: {\n size: 3,\n elementOffset: 3\n },\n instanceModelMatrix__LOCATION_2: {\n size: 3,\n elementOffset: 6\n },\n instanceTranslation: {\n size: 3,\n elementOffset: 9\n }\n } as const,\n\n update(attribute, {startRow, endRow}) {\n // @ts-expect-error: \"this\" will be bound to a layer when this function is called\n const {data, getOrientation, getScale, getTranslation, getTransformMatrix} = this.props;\n\n const arrayMatrix = Array.isArray(getTransformMatrix);\n const constantMatrix = arrayMatrix && getTransformMatrix.length === 16;\n const constantScale = Array.isArray(getScale);\n const constantOrientation = Array.isArray(getOrientation);\n const constantTranslation = Array.isArray(getTranslation);\n\n const hasMatrix = constantMatrix || (!arrayMatrix && Boolean(getTransformMatrix(data[0])));\n\n if (hasMatrix) {\n attribute.constant = constantMatrix;\n } else {\n attribute.constant = constantOrientation && constantScale && constantTranslation;\n }\n\n const instanceModelMatrixData = attribute.value;\n\n if (attribute.constant) {\n let matrix;\n\n if (hasMatrix) {\n modelMatrix.set(getTransformMatrix);\n matrix = getExtendedMat3FromMat4(modelMatrix);\n } else {\n matrix = valueArray;\n\n const orientation = getOrientation;\n const scale = getScale;\n\n calculateTransformMatrix(matrix, orientation, scale);\n matrix.set(getTranslation, 9);\n }\n\n attribute.value = new Float32Array(matrix);\n } else {\n let i = startRow * attribute.size;\n const {iterable, objectInfo} = createIterable(data, startRow, endRow);\n for (const object of iterable) {\n objectInfo.index++;\n let matrix;\n\n if (hasMatrix) {\n modelMatrix.set(\n constantMatrix ? getTransformMatrix : getTransformMatrix(object, objectInfo)\n );\n matrix = getExtendedMat3FromMat4(modelMatrix);\n } else {\n matrix = valueArray;\n\n const orientation = constantOrientation\n ? getOrientation\n : getOrientation(object, objectInfo);\n const scale = constantScale ? getScale : getScale(object, objectInfo);\n\n calculateTransformMatrix(matrix, orientation, scale);\n matrix.set(constantTranslation ? getTranslation : getTranslation(object, objectInfo), 9);\n }\n\n instanceModelMatrixData[i++] = matrix[0];\n instanceModelMatrixData[i++] = matrix[1];\n instanceModelMatrixData[i++] = matrix[2];\n instanceModelMatrixData[i++] = matrix[3];\n instanceModelMatrixData[i++] = matrix[4];\n instanceModelMatrixData[i++] = matrix[5];\n instanceModelMatrixData[i++] = matrix[6];\n instanceModelMatrixData[i++] = matrix[7];\n instanceModelMatrixData[i++] = matrix[8];\n instanceModelMatrixData[i++] = matrix[9];\n instanceModelMatrixData[i++] = matrix[10];\n instanceModelMatrixData[i++] = matrix[11];\n }\n }\n }\n};\n\n// only apply composeModelMatrix when in cartesian or meter_offsets coordinate system\n// with `composeModelMatrix` enabled, the rotation part of the layer's modelMatrix will be composed to instance's transformations\n// since rotating latitude and longitude can not provide meaningful results, hence `composeModelMatrix` is disabled\n// when in LNGLAT and LNGLAT_OFFSET coordinates.\nexport function shouldComposeModelMatrix(viewport, coordinateSystem) {\n return (\n coordinateSystem === COORDINATE_SYSTEM.CARTESIAN ||\n coordinateSystem === COORDINATE_SYSTEM.METER_OFFSETS ||\n (coordinateSystem === COORDINATE_SYSTEM.DEFAULT && !viewport.isGeospatial)\n );\n}\n","export default \"#version 300 es\\n#define SHADER_NAME simple-mesh-layer-vs\\nuniform float sizeScale;\\nuniform bool composeModelMatrix;\\nin vec3 positions;\\nin vec3 normals;\\nin vec3 colors;\\nin vec2 texCoords;\\nin vec3 instancePositions;\\nin vec3 instancePositions64Low;\\nin vec4 instanceColors;\\nin vec3 instancePickingColors;\\nin mat3 instanceModelMatrix;\\nin vec3 instanceTranslation;\\nout vec2 vTexCoord;\\nout vec3 cameraPosition;\\nout vec3 normals_commonspace;\\nout vec4 position_commonspace;\\nout vec4 vColor;\\n\\nvoid main(void) {\\n geometry.worldPosition = instancePositions;\\n geometry.uv = texCoords;\\n geometry.pickingColor = instancePickingColors;\\n\\n vTexCoord = texCoords;\\n cameraPosition = project_uCameraPosition;\\n vColor = vec4(colors * instanceColors.rgb, instanceColors.a);\\n\\n vec3 pos = (instanceModelMatrix * positions) * sizeScale + instanceTranslation;\\n\\n if (composeModelMatrix) {\\n DECKGL_FILTER_SIZE(pos, geometry);\\n normals_commonspace = project_normal(instanceModelMatrix * normals);\\n geometry.worldPosition += pos;\\n gl_Position = project_position_to_clipspace(pos + instancePositions, instancePositions64Low, vec3(0.0), position_commonspace);\\n geometry.position = position_commonspace;\\n }\\n else {\\n pos = project_size(pos);\\n DECKGL_FILTER_SIZE(pos, geometry);\\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, pos, position_commonspace);\\n geometry.position = position_commonspace;\\n normals_commonspace = project_normal(instanceModelMatrix * normals);\\n }\\n\\n geometry.normal = normals_commonspace;\\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\\n\\n DECKGL_FILTER_COLOR(vColor, geometry);\\n}\\n\";\n//# sourceMappingURL=simple-mesh-layer-vertex.glsl.js.map","export default `#version 300 es\n#define SHADER_NAME simple-mesh-layer-vs\n\n// Scale the model\nuniform float sizeScale;\nuniform bool composeModelMatrix;\n\n// Primitive attributes\nin vec3 positions;\nin vec3 normals;\nin vec3 colors;\nin vec2 texCoords;\n\n// Instance attributes\nin vec3 instancePositions;\nin vec3 instancePositions64Low;\nin vec4 instanceColors;\nin vec3 instancePickingColors;\nin mat3 instanceModelMatrix;\nin vec3 instanceTranslation;\n\n// Outputs to fragment shader\nout vec2 vTexCoord;\nout vec3 cameraPosition;\nout vec3 normals_commonspace;\nout vec4 position_commonspace;\nout vec4 vColor;\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = texCoords;\n geometry.pickingColor = instancePickingColors;\n\n vTexCoord = texCoords;\n cameraPosition = project_uCameraPosition;\n vColor = vec4(colors * instanceColors.rgb, instanceColors.a);\n\n vec3 pos = (instanceModelMatrix * positions) * sizeScale + instanceTranslation;\n\n if (composeModelMatrix) {\n DECKGL_FILTER_SIZE(pos, geometry);\n // using instancePositions as world coordinates\n // when using globe mode, this branch does not re-orient the model to align with the surface of the earth\n // call project_normal before setting position to avoid rotation\n normals_commonspace = project_normal(instanceModelMatrix * normals);\n geometry.worldPosition += pos;\n gl_Position = project_position_to_clipspace(pos + instancePositions, instancePositions64Low, vec3(0.0), position_commonspace);\n geometry.position = position_commonspace;\n }\n else {\n pos = project_size(pos);\n DECKGL_FILTER_SIZE(pos, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, pos, position_commonspace);\n geometry.position = position_commonspace;\n normals_commonspace = project_normal(instanceModelMatrix * normals);\n }\n\n geometry.normal = normals_commonspace;\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;\n","export default \"#version 300 es\\n#define SHADER_NAME simple-mesh-layer-fs\\n\\nprecision highp float;\\n\\nuniform bool hasTexture;\\nuniform sampler2D sampler;\\nuniform bool flatShading;\\nuniform float opacity;\\n\\nin vec2 vTexCoord;\\nin vec3 cameraPosition;\\nin vec3 normals_commonspace;\\nin vec4 position_commonspace;\\nin vec4 vColor;\\n\\nout vec4 fragColor;\\n\\nvoid main(void) {\\n geometry.uv = vTexCoord;\\n\\n vec3 normal;\\n if (flatShading) {\\n#ifdef DERIVATIVES_AVAILABLE\\n normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\\n#else\\n normal = vec3(0.0, 0.0, 1.0);\\n#endif\\n } else {\\n normal = normals_commonspace;\\n }\\n\\n vec4 color = hasTexture ? texture(sampler, vTexCoord) : vColor;\\n DECKGL_FILTER_COLOR(color, geometry);\\n\\n vec3 lightColor = lighting_getLightColor(color.rgb, cameraPosition, position_commonspace.xyz, normal);\\n fragColor = vec4(lightColor, color.a * opacity);\\n}\\n\";\n//# sourceMappingURL=simple-mesh-layer-fragment.glsl.js.map","export default `#version 300 es\n#define SHADER_NAME simple-mesh-layer-fs\n\nprecision highp float;\n\nuniform bool hasTexture;\nuniform sampler2D sampler;\nuniform bool flatShading;\nuniform float opacity;\n\nin vec2 vTexCoord;\nin vec3 cameraPosition;\nin vec3 normals_commonspace;\nin vec4 position_commonspace;\nin vec4 vColor;\n\nout vec4 fragColor;\n\nvoid main(void) {\n geometry.uv = vTexCoord;\n\n vec3 normal;\n if (flatShading) {\n\n// NOTE(Tarek): This is necessary because\n// headless.gl reports the extension as\n// available but does not support it in\n// the shader.\n#ifdef DERIVATIVES_AVAILABLE\n normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\n#else\n normal = vec3(0.0, 0.0, 1.0);\n#endif\n } else {\n normal = normals_commonspace;\n }\n\n vec4 color = hasTexture ? texture(sampler, vTexCoord) : vColor;\n DECKGL_FILTER_COLOR(color, geometry);\n\n vec3 lightColor = lighting_getLightColor(color.rgb, cameraPosition, position_commonspace.xyz, normal);\n fragColor = vec4(lightColor, color.a * opacity);\n}\n`;\n","export function getMeshSize(attributes) {\n let size = 0;\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n if (ArrayBuffer.isView(attribute)) {\n size += attribute.byteLength * attribute.BYTES_PER_ELEMENT;\n }\n }\n return size;\n}\nexport function getMeshBoundingBox(attributes) {\n let minX = Infinity;\n let minY = Infinity;\n let minZ = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n let maxZ = -Infinity;\n const positions = attributes.POSITION ? attributes.POSITION.value : [];\n const len = positions && positions.length;\n for (let i = 0; i < len; i += 3) {\n const x = positions[i];\n const y = positions[i + 1];\n const z = positions[i + 2];\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n minZ = z < minZ ? z : minZ;\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n maxZ = z > maxZ ? z : maxZ;\n }\n return [[minX, minY, minZ], [maxX, maxY, maxZ]];\n}\n//# sourceMappingURL=mesh-utils.js.map","// Mesh category utilities\n// TODO - move to mesh category module, or to math.gl/geometry module\nimport {TypedArray} from '../../types';\nimport {MeshAttributes} from './mesh-types';\n\ntype TypedArrays = {[key: string]: TypedArray};\n\n/**\n * Holds an axis aligned bounding box\n * TODO - make sure AxisAlignedBoundingBox in math.gl/culling understands this format (or change this format)\n */\ntype BoundingBox = [[number, number, number], [number, number, number]];\n\n/**\n * Get number of vertices in mesh\n * @param attributes\n */\nexport function getMeshSize(attributes: TypedArrays): number {\n let size = 0;\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n if (ArrayBuffer.isView(attribute)) {\n // @ts-ignore DataView doesn't have BYTES_PER_ELEMENT\n size += attribute.byteLength * attribute.BYTES_PER_ELEMENT;\n }\n }\n return size;\n}\n\n/**\n * Get the (axis aligned) bounding box of a mesh\n * @param attributes\n * @returns array of two vectors representing the axis aligned bounding box\n */\n// eslint-disable-next-line complexity\nexport function getMeshBoundingBox(attributes: MeshAttributes): BoundingBox {\n let minX = Infinity;\n let minY = Infinity;\n let minZ = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n let maxZ = -Infinity;\n\n const positions = attributes.POSITION ? attributes.POSITION.value : [];\n const len = positions && positions.length;\n\n for (let i = 0; i < len; i += 3) {\n const x = positions[i];\n const y = positions[i + 1];\n const z = positions[i + 2];\n\n minX = x < minX ? x : minX;\n minY = y < minY ? y : minY;\n minZ = z < minZ ? z : minZ;\n\n maxX = x > maxX ? x : maxX;\n maxY = y > maxY ? y : maxY;\n maxZ = z > maxZ ? z : maxZ;\n }\n return [\n [minX, minY, minZ],\n [maxX, maxY, maxZ]\n ];\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _core = require(\"@luma.gl/core\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Arrow2DGeometry = /*#__PURE__*/function (_Geometry) {\n _inherits(Arrow2DGeometry, _Geometry);\n\n var _super = _createSuper(Arrow2DGeometry);\n\n function Arrow2DGeometry() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Arrow2DGeometry);\n\n return _super.call(this, Object.assign({}, opts, {\n attributes: getArrowAttributes(opts)\n }));\n }\n\n return Arrow2DGeometry;\n}(_core.Geometry);\n\nexports[\"default\"] = Arrow2DGeometry;\n\nfunction getArrowAttributes(_ref) {\n var _ref$length = _ref.length,\n length = _ref$length === void 0 ? 1 : _ref$length,\n _ref$headSize = _ref.headSize,\n headSize = _ref$headSize === void 0 ? 0.2 : _ref$headSize,\n _ref$tailWidth = _ref.tailWidth,\n tailWidth = _ref$tailWidth === void 0 ? 0.05 : _ref$tailWidth,\n _ref$tailStart = _ref.tailStart,\n tailStart = _ref$tailStart === void 0 ? 0.05 : _ref$tailStart;\n var texCoords = [// HEAD\n 0.5, 1.0, 0, 0.5 - headSize / 2, 1.0 - headSize, 0, 0.5 + headSize / 2, 1.0 - headSize, 0, 0.5 - tailWidth / 2, tailStart, 0, 0.5 + tailWidth / 2, 1.0 - headSize, 0, 0.5 + tailWidth / 2, tailStart, 0, 0.5 - tailWidth / 2, tailStart, 0, 0.5 - tailWidth / 2, 1.0 - headSize, 0, 0.5 + tailWidth / 2, 1.0 - headSize, 0];\n var normals = [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]; // Center and scale\n\n var positions = new Array(texCoords.length);\n\n for (var i = 0; i < texCoords.length / 3; i++) {\n var i3 = i * 3;\n positions[i3 + 0] = (texCoords[i3 + 0] - 0.5) * length;\n positions[i3 + 1] = (texCoords[i3 + 1] - 0.5) * length;\n positions[i3 + 2] = 0;\n }\n\n return {\n positions: new Float32Array(positions),\n normals: new Float32Array(normals),\n texCoords: new Float32Array(texCoords)\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvYXJyb3ctMmQtZ2VvbWV0cnkudHMiXSwibmFtZXMiOlsiQXJyb3cyREdlb21ldHJ5Iiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsImF0dHJpYnV0ZXMiLCJnZXRBcnJvd0F0dHJpYnV0ZXMiLCJHZW9tZXRyeSIsImxlbmd0aCIsImhlYWRTaXplIiwidGFpbFdpZHRoIiwidGFpbFN0YXJ0IiwidGV4Q29vcmRzIiwibm9ybWFscyIsInBvc2l0aW9ucyIsIkFycmF5IiwiaSIsImkzIiwiRmxvYXQzMkFycmF5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRXFCQSxlOzs7OztBQUNuQiw2QkFBdUI7QUFBQSxRQUFYQyxJQUFXLHVFQUFKLEVBQUk7O0FBQUE7O0FBQUEsNkJBRW5CQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCRixJQUFsQixFQUF3QjtBQUN0QkcsTUFBQUEsVUFBVSxFQUFFQyxrQkFBa0IsQ0FBQ0osSUFBRDtBQURSLEtBQXhCLENBRm1CO0FBTXRCOzs7RUFQMENLLGM7Ozs7QUFVN0MsU0FBU0Qsa0JBQVQsT0FBZ0c7QUFBQSx5QkFBbEVFLE1BQWtFO0FBQUEsTUFBbEVBLE1BQWtFLDRCQUF6RCxDQUF5RDtBQUFBLDJCQUF0REMsUUFBc0Q7QUFBQSxNQUF0REEsUUFBc0QsOEJBQTNDLEdBQTJDO0FBQUEsNEJBQXRDQyxTQUFzQztBQUFBLE1BQXRDQSxTQUFzQywrQkFBMUIsSUFBMEI7QUFBQSw0QkFBcEJDLFNBQW9CO0FBQUEsTUFBcEJBLFNBQW9CLCtCQUFSLElBQVE7QUFDOUYsTUFBTUMsU0FBUyxHQUFHLENBQ2hCO0FBQ0EsS0FGZ0IsRUFHaEIsR0FIZ0IsRUFJaEIsQ0FKZ0IsRUFLaEIsTUFBTUgsUUFBUSxHQUFHLENBTEQsRUFNaEIsTUFBTUEsUUFOVSxFQU9oQixDQVBnQixFQVFoQixNQUFNQSxRQUFRLEdBQUcsQ0FSRCxFQVNoQixNQUFNQSxRQVRVLEVBVWhCLENBVmdCLEVBV2hCLE1BQU1DLFNBQVMsR0FBRyxDQVhGLEVBWWhCQyxTQVpnQixFQWFoQixDQWJnQixFQWNoQixNQUFNRCxTQUFTLEdBQUcsQ0FkRixFQWVoQixNQUFNRCxRQWZVLEVBZ0JoQixDQWhCZ0IsRUFpQmhCLE1BQU1DLFNBQVMsR0FBRyxDQWpCRixFQWtCaEJDLFNBbEJnQixFQW1CaEIsQ0FuQmdCLEVBb0JoQixNQUFNRCxTQUFTLEdBQUcsQ0FwQkYsRUFxQmhCQyxTQXJCZ0IsRUFzQmhCLENBdEJnQixFQXVCaEIsTUFBTUQsU0FBUyxHQUFHLENBdkJGLEVBd0JoQixNQUFNRCxRQXhCVSxFQXlCaEIsQ0F6QmdCLEVBMEJoQixNQUFNQyxTQUFTLEdBQUcsQ0ExQkYsRUEyQmhCLE1BQU1ELFFBM0JVLEVBNEJoQixDQTVCZ0IsQ0FBbEI7QUErQkEsTUFBTUksT0FBTyxHQUFHLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsQ0FBVixFQUFhLENBQWIsRUFBZ0IsQ0FBaEIsRUFBbUIsQ0FBbkIsRUFBc0IsQ0FBdEIsRUFBeUIsQ0FBekIsRUFBNEIsQ0FBNUIsRUFBK0IsQ0FBL0IsRUFBa0MsQ0FBbEMsRUFBcUMsQ0FBckMsRUFBd0MsQ0FBeEMsRUFBMkMsQ0FBM0MsRUFBOEMsQ0FBOUMsRUFBaUQsQ0FBakQsRUFBb0QsQ0FBcEQsRUFBdUQsQ0FBdkQsRUFBMEQsQ0FBMUQsRUFBNkQsQ0FBN0QsRUFBZ0UsQ0FBaEUsRUFBbUUsQ0FBbkUsRUFBc0UsQ0FBdEUsRUFBeUUsQ0FBekUsRUFBNEUsQ0FBNUUsRUFBK0UsQ0FBL0UsQ0FBaEIsQ0FoQzhGLENBa0M5Rjs7QUFDQSxNQUFNQyxTQUFTLEdBQUcsSUFBSUMsS0FBSixDQUFVSCxTQUFTLENBQUNKLE1BQXBCLENBQWxCOztBQUNBLE9BQUssSUFBSVEsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0osU0FBUyxDQUFDSixNQUFWLEdBQW1CLENBQXZDLEVBQTBDUSxDQUFDLEVBQTNDLEVBQStDO0FBQzdDLFFBQU1DLEVBQUUsR0FBR0QsQ0FBQyxHQUFHLENBQWY7QUFDQUYsSUFBQUEsU0FBUyxDQUFDRyxFQUFFLEdBQUcsQ0FBTixDQUFULEdBQW9CLENBQUNMLFNBQVMsQ0FBQ0ssRUFBRSxHQUFHLENBQU4sQ0FBVCxHQUFvQixHQUFyQixJQUE0QlQsTUFBaEQ7QUFDQU0sSUFBQUEsU0FBUyxDQUFDRyxFQUFFLEdBQUcsQ0FBTixDQUFULEdBQW9CLENBQUNMLFNBQVMsQ0FBQ0ssRUFBRSxHQUFHLENBQU4sQ0FBVCxHQUFvQixHQUFyQixJQUE0QlQsTUFBaEQ7QUFDQU0sSUFBQUEsU0FBUyxDQUFDRyxFQUFFLEdBQUcsQ0FBTixDQUFULEdBQW9CLENBQXBCO0FBQ0Q7O0FBQ0QsU0FBTztBQUNMSCxJQUFBQSxTQUFTLEVBQUUsSUFBSUksWUFBSixDQUFpQkosU0FBakIsQ0FETjtBQUVMRCxJQUFBQSxPQUFPLEVBQUUsSUFBSUssWUFBSixDQUFpQkwsT0FBakIsQ0FGSjtBQUdMRCxJQUFBQSxTQUFTLEVBQUUsSUFBSU0sWUFBSixDQUFpQk4sU0FBakI7QUFITixHQUFQO0FBS0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW9tZXRyeSB9IGZyb20gJ0BsdW1hLmdsL2NvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcnJvdzJER2VvbWV0cnkgZXh0ZW5kcyBHZW9tZXRyeSB7XG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgb3B0cywge1xuICAgICAgICBhdHRyaWJ1dGVzOiBnZXRBcnJvd0F0dHJpYnV0ZXMob3B0cyksXG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QXJyb3dBdHRyaWJ1dGVzKHsgbGVuZ3RoID0gMSwgaGVhZFNpemUgPSAwLjIsIHRhaWxXaWR0aCA9IDAuMDUsIHRhaWxTdGFydCA9IDAuMDUgfSkge1xuICBjb25zdCB0ZXhDb29yZHMgPSBbXG4gICAgLy8gSEVBRFxuICAgIDAuNSxcbiAgICAxLjAsXG4gICAgMCxcbiAgICAwLjUgLSBoZWFkU2l6ZSAvIDIsXG4gICAgMS4wIC0gaGVhZFNpemUsXG4gICAgMCxcbiAgICAwLjUgKyBoZWFkU2l6ZSAvIDIsXG4gICAgMS4wIC0gaGVhZFNpemUsXG4gICAgMCxcbiAgICAwLjUgLSB0YWlsV2lkdGggLyAyLFxuICAgIHRhaWxTdGFydCxcbiAgICAwLFxuICAgIDAuNSArIHRhaWxXaWR0aCAvIDIsXG4gICAgMS4wIC0gaGVhZFNpemUsXG4gICAgMCxcbiAgICAwLjUgKyB0YWlsV2lkdGggLyAyLFxuICAgIHRhaWxTdGFydCxcbiAgICAwLFxuICAgIDAuNSAtIHRhaWxXaWR0aCAvIDIsXG4gICAgdGFpbFN0YXJ0LFxuICAgIDAsXG4gICAgMC41IC0gdGFpbFdpZHRoIC8gMixcbiAgICAxLjAgLSBoZWFkU2l6ZSxcbiAgICAwLFxuICAgIDAuNSArIHRhaWxXaWR0aCAvIDIsXG4gICAgMS4wIC0gaGVhZFNpemUsXG4gICAgMCxcbiAgXTtcblxuICBjb25zdCBub3JtYWxzID0gWzAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDFdO1xuXG4gIC8vIENlbnRlciBhbmQgc2NhbGVcbiAgY29uc3QgcG9zaXRpb25zID0gbmV3IEFycmF5KHRleENvb3Jkcy5sZW5ndGgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRleENvb3Jkcy5sZW5ndGggLyAzOyBpKyspIHtcbiAgICBjb25zdCBpMyA9IGkgKiAzO1xuICAgIHBvc2l0aW9uc1tpMyArIDBdID0gKHRleENvb3Jkc1tpMyArIDBdIC0gMC41KSAqIGxlbmd0aDtcbiAgICBwb3NpdGlvbnNbaTMgKyAxXSA9ICh0ZXhDb29yZHNbaTMgKyAxXSAtIDAuNSkgKiBsZW5ndGg7XG4gICAgcG9zaXRpb25zW2kzICsgMl0gPSAwO1xuICB9XG4gIHJldHVybiB7XG4gICAgcG9zaXRpb25zOiBuZXcgRmxvYXQzMkFycmF5KHBvc2l0aW9ucyksXG4gICAgbm9ybWFsczogbmV3IEZsb2F0MzJBcnJheShub3JtYWxzKSxcbiAgICB0ZXhDb29yZHM6IG5ldyBGbG9hdDMyQXJyYXkodGV4Q29vcmRzKSxcbiAgfTtcbn1cbiJdfQ==","import { Geometry } from '@luma.gl/core';\n\nexport default class Arrow2DGeometry extends Geometry {\n constructor(opts = {}) {\n super(\n Object.assign({}, opts, {\n attributes: getArrowAttributes(opts),\n })\n );\n }\n}\n\nfunction getArrowAttributes({ length = 1, headSize = 0.2, tailWidth = 0.05, tailStart = 0.05 }) {\n const texCoords = [\n // HEAD\n 0.5,\n 1.0,\n 0,\n 0.5 - headSize / 2,\n 1.0 - headSize,\n 0,\n 0.5 + headSize / 2,\n 1.0 - headSize,\n 0,\n 0.5 - tailWidth / 2,\n tailStart,\n 0,\n 0.5 + tailWidth / 2,\n 1.0 - headSize,\n 0,\n 0.5 + tailWidth / 2,\n tailStart,\n 0,\n 0.5 - tailWidth / 2,\n tailStart,\n 0,\n 0.5 - tailWidth / 2,\n 1.0 - headSize,\n 0,\n 0.5 + tailWidth / 2,\n 1.0 - headSize,\n 0,\n ];\n\n const normals = [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1];\n\n // Center and scale\n const positions = new Array(texCoords.length);\n for (let i = 0; i < texCoords.length / 3; i++) {\n const i3 = i * 3;\n positions[i3 + 0] = (texCoords[i3 + 0] - 0.5) * length;\n positions[i3 + 1] = (texCoords[i3 + 1] - 0.5) * length;\n positions[i3 + 2] = 0;\n }\n return {\n positions: new Float32Array(positions),\n normals: new Float32Array(normals),\n texCoords: new Float32Array(texCoords),\n };\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = createPathMarkers;\n\nvar _math = require(\"math.gl\");\n\nfunction _createForOfIteratorHelper(o) { if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction getLineLength(vPoints) {\n // calculate total length\n var lineLength = 0;\n\n for (var i = 0; i < vPoints.length - 1; i++) {\n lineLength += vPoints[i].distance(vPoints[i + 1]);\n }\n\n return lineLength;\n}\n\nvar DEFAULT_COLOR = [0, 0, 0, 255];\nvar DEFAULT_DIRECTION = {\n forward: true,\n backward: false\n};\n\nfunction createPathMarkers(_ref) {\n var data = _ref.data,\n _ref$getPath = _ref.getPath,\n getPath = _ref$getPath === void 0 ? function (x) {\n return x.path;\n } : _ref$getPath,\n _ref$getDirection = _ref.getDirection,\n getDirection = _ref$getDirection === void 0 ? function (x) {\n return x.direction;\n } : _ref$getDirection,\n _ref$getColor = _ref.getColor,\n getColor = _ref$getColor === void 0 ? function (x) {\n return DEFAULT_COLOR;\n } : _ref$getColor,\n _ref$getMarkerPercent = _ref.getMarkerPercentages,\n getMarkerPercentages = _ref$getMarkerPercent === void 0 ? function (x, info) {\n return [0.5];\n } : _ref$getMarkerPercent,\n projectFlat = _ref.projectFlat;\n var markers = [];\n\n var _iterator = _createForOfIteratorHelper(data),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var object = _step.value;\n var path = getPath(object);\n var direction = getDirection(object) || DEFAULT_DIRECTION;\n var color = getColor(object);\n var vPoints = path.map(function (p) {\n return new _math.Vector2(p);\n });\n var vPointsReverse = vPoints.slice(0).reverse(); // calculate total length\n\n var lineLength = getLineLength(vPoints); // Ask for where to put markers\n // @ts-ignore\n\n var percentages = getMarkerPercentages(object, {\n lineLength: lineLength\n }); // Create the markers\n\n var _iterator2 = _createForOfIteratorHelper(percentages),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var percentage = _step2.value;\n\n if (direction.forward) {\n var marker = createMarkerAlongPath({\n path: vPoints,\n percentage: percentage,\n lineLength: lineLength,\n color: color,\n object: object,\n projectFlat: projectFlat\n });\n markers.push(marker);\n }\n\n if (direction.backward) {\n var _marker = createMarkerAlongPath({\n path: vPointsReverse,\n percentage: percentage,\n lineLength: lineLength,\n color: color,\n object: object,\n projectFlat: projectFlat\n });\n\n markers.push(_marker);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return markers;\n}\n\nfunction createMarkerAlongPath(_ref2) {\n var path = _ref2.path,\n percentage = _ref2.percentage,\n lineLength = _ref2.lineLength,\n color = _ref2.color,\n object = _ref2.object,\n projectFlat = _ref2.projectFlat;\n var distanceAlong = lineLength * percentage;\n var currentDistance = 0;\n var previousDistance = 0;\n var i = 0;\n\n for (i = 0; i < path.length - 1; i++) {\n currentDistance += path[i].distance(path[i + 1]);\n\n if (currentDistance > distanceAlong) {\n break;\n }\n\n previousDistance = currentDistance;\n } // If reached the end of the loop without exiting early,\n // undo the final increment to avoid a null-pointer exception\n\n\n if (i === path.length - 1) {\n i -= 1;\n }\n\n var vDirection = path[i + 1].clone().subtract(path[i]).normalize();\n var along = distanceAlong - previousDistance;\n var vCenter = vDirection.clone().multiply(new _math.Vector2(along, along)).add(path[i]);\n var vDirection2 = new _math.Vector2(projectFlat(path[i + 1])).subtract(projectFlat(path[i]));\n var angle = vDirection2.verticalAngle() * 180 / Math.PI;\n return {\n position: [vCenter.x, vCenter.y, 0],\n angle: angle,\n color: color,\n object: object\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvY3JlYXRlLXBhdGgtbWFya2Vycy50cyJdLCJuYW1lcyI6WyJnZXRMaW5lTGVuZ3RoIiwidlBvaW50cyIsImxpbmVMZW5ndGgiLCJpIiwibGVuZ3RoIiwiZGlzdGFuY2UiLCJERUZBVUxUX0NPTE9SIiwiREVGQVVMVF9ESVJFQ1RJT04iLCJmb3J3YXJkIiwiYmFja3dhcmQiLCJjcmVhdGVQYXRoTWFya2VycyIsImRhdGEiLCJnZXRQYXRoIiwieCIsInBhdGgiLCJnZXREaXJlY3Rpb24iLCJkaXJlY3Rpb24iLCJnZXRDb2xvciIsImdldE1hcmtlclBlcmNlbnRhZ2VzIiwiaW5mbyIsInByb2plY3RGbGF0IiwibWFya2VycyIsIm9iamVjdCIsImNvbG9yIiwibWFwIiwicCIsIlZlY3RvcjIiLCJ2UG9pbnRzUmV2ZXJzZSIsInNsaWNlIiwicmV2ZXJzZSIsInBlcmNlbnRhZ2VzIiwicGVyY2VudGFnZSIsIm1hcmtlciIsImNyZWF0ZU1hcmtlckFsb25nUGF0aCIsInB1c2giLCJkaXN0YW5jZUFsb25nIiwiY3VycmVudERpc3RhbmNlIiwicHJldmlvdXNEaXN0YW5jZSIsInZEaXJlY3Rpb24iLCJjbG9uZSIsInN1YnRyYWN0Iiwibm9ybWFsaXplIiwiYWxvbmciLCJ2Q2VudGVyIiwibXVsdGlwbHkiLCJhZGQiLCJ2RGlyZWN0aW9uMiIsImFuZ2xlIiwidmVydGljYWxBbmdsZSIsIk1hdGgiLCJQSSIsInBvc2l0aW9uIiwieSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7Ozs7OztBQUVBLFNBQVNBLGFBQVQsQ0FBdUJDLE9BQXZCLEVBQWdDO0FBQzlCO0FBQ0EsTUFBSUMsVUFBVSxHQUFHLENBQWpCOztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsT0FBTyxDQUFDRyxNQUFSLEdBQWlCLENBQXJDLEVBQXdDRCxDQUFDLEVBQXpDLEVBQTZDO0FBQzND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IGdldExpbmVMZW5ndGgodlBvaW50cykge1xuICAvLyBjYWxjdWxhdGUgdG90YWwgbGVuZ3RoXG4gIGxldCBsaW5lTGVuZ3RoID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2UG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIGxpbmVMZW5ndGggKz0gdlBvaW50c1tpXS5kaXN0YW5jZSh2UG9pbnRzW2kgKyAxXSk7XG4gIH1cbiAgcmV0dXJuIGxpbmVMZW5ndGg7XG59XG5cbmNvbnN0IERFRkFVTFRfQ09MT1IgPSBbMCwgMCwgMCwgMjU1XTtcbmNvbnN0IERFRkFVTFRfRElSRUNUSU9OID0geyBmb3J3YXJkOiB0cnVlLCBiYWNrd2FyZDogZmFsc2UgfTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlUGF0aE1hcmtlcnMoe1xuICBkYXRhLFxuICBnZXRQYXRoID0gKHgpID0+IHgucGF0aCxcbiAgZ2V0RGlyZWN0aW9uID0gKHgpID0+IHguZGlyZWN0aW9uLFxuICBnZXRDb2xvciA9ICh4KSA9PiBERUZBVUxUX0NPTE9SLFxuICBnZXRNYXJrZXJQZXJjZW50YWdlcyA9ICh4LCBpbmZvKSA9PiBbMC41XSxcbiAgcHJvamVjdEZsYXQsXG59KSB7XG4gIGNvbnN0IG1hcmtlcnMgPSBbXTtcblxuICBmb3IgKGNvbnN0IG9iamVjdCBvZiBkYXRhKSB7XG4gICAgY29uc3QgcGF0aCA9IGdldFBhdGgob2JqZWN0KTtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSBnZXREaXJlY3Rpb24ob2JqZWN0KSB8fCBERUZBVUxUX0RJUkVDVElPTjtcbiAgICBjb25zdCBjb2xvciA9IGdldENvbG9yKG9iamVjdCk7XG5cbiAgICBjb25zdCB2UG9pbnRzID0gcGF0aC5tYXAoKHApID0+IG5ldyBWZWN0b3IyKHApKTtcbiAgICBjb25zdCB2UG9pbnRzUmV2ZXJzZSA9IHZQb2ludHMuc2xpY2UoMCkucmV2ZXJzZSgpO1xuXG4gICAgLy8gY2FsY3VsYXRlIHRvdGFsIGxlbmd0aFxuICAgIGNvbnN0IGxpbmVMZW5ndGggPSBnZXRMaW5lTGVuZ3RoKHZQb2ludHMpO1xuXG4gICAgLy8gQXNrIGZvciB3aGVyZSB0byBwdXQgbWFya2Vyc1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBwZXJjZW50YWdlcyA9IGdldE1hcmtlclBlcmNlbnRhZ2VzKG9iamVjdCwgeyBsaW5lTGVuZ3RoIH0pO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBtYXJrZXJzXG4gICAgZm9yIChjb25zdCBwZXJjZW50YWdlIG9mIHBlcmNlbnRhZ2VzKSB7XG4gICAgICBpZiAoZGlyZWN0aW9uLmZvcndhcmQpIHtcbiAgICAgICAgY29uc3QgbWFya2VyID0gY3JlYXRlTWFya2VyQWxvbmdQYXRoKHtcbiAgICAgICAgICBwYXRoOiB2UG9pbnRzLFxuICAgICAgICAgIHBlcmNlbnRhZ2UsXG4gICAgICAgICAgbGluZUxlbmd0aCxcbiAgICAgICAgICBjb2xvcixcbiAgICAgICAgICBvYmplY3QsXG4gICAgICAgICAgcHJvamVjdEZsYXQsXG4gICAgICAgIH0pO1xuICAgICAgICBtYXJrZXJzLnB1c2gobWFya2VyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpcmVjdGlvbi5iYWNrd2FyZCkge1xuICAgICAgICBjb25zdCBtYXJrZXIgPSBjcmVhdGVNYXJrZXJBbG9uZ1BhdGgoe1xuICAgICAgICAgIHBhdGg6IHZQb2ludHNSZXZlcnNlLFxuICAgICAgICAgIHBlcmNlbnRhZ2UsXG4gICAgICAgICAgbGluZUxlbmd0aCxcbiAgICAgICAgICBjb2xvcixcbiAgICAgICAgICBvYmplY3QsXG4gICAgICAgICAgcHJvamVjdEZsYXQsXG4gICAgICAgIH0pO1xuICAgICAgICBtYXJrZXJzLnB1c2gobWFya2VyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWFya2Vycztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTWFya2VyQWxvbmdQYXRoKHsgcGF0aCwgcGVyY2VudGFnZSwgbGluZUxlbmd0aCwgY29sb3IsIG9iamVjdCwgcHJvamVjdEZsYXQgfSkge1xuICBjb25zdCBkaXN0YW5jZUFsb25nID0gbGluZUxlbmd0aCAqIHBlcmNlbnRhZ2U7XG4gIGxldCBjdXJyZW50RGlzdGFuY2UgPSAwO1xuICBsZXQgcHJldmlvdXNEaXN0YW5jZSA9IDA7XG4gIGxldCBpID0gMDtcbiAgZm9yIChpID0gMDsgaSA8IHBhdGgubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgY3VycmVudERpc3RhbmNlICs9IHBhdGhbaV0uZGlzdGFuY2UocGF0aFtpICsgMV0pO1xuICAgIGlmIChjdXJyZW50RGlzdGFuY2UgPiBkaXN0YW5jZUFsb25nKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcHJldmlvdXNEaXN0YW5jZSA9IGN1cnJlbnREaXN0YW5jZTtcbiAgfVxuXG4gIC8vIElmIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgbG9vcCB3aXRob3V0IGV4aXRpbmcgZWFybHksXG4gIC8vIHVuZG8gdGhlIGZpbmFsIGluY3JlbWVudCB0byBhdm9pZCBhIG51bGwtcG9pbnRlciBleGNlcHRpb25cbiAgaWYgKGkgPT09IHBhdGgubGVuZ3RoIC0gMSkge1xuICAgIGkgLT0gMTtcbiAgfVxuXG4gIGNvbnN0IHZEaXJlY3Rpb24gPSBwYXRoW2kgKyAxXS5jbG9uZSgpLnN1YnRyYWN0KHBhdGhbaV0pLm5vcm1hbGl6ZSgpO1xuICBjb25zdCBhbG9uZyA9IGRpc3RhbmNlQWxvbmcgLSBwcmV2aW91c0Rpc3RhbmNlO1xuICBjb25zdCB2Q2VudGVyID0gdkRpcmVjdGlvbi5jbG9uZSgpLm11bHRpcGx5KG5ldyBWZWN0b3IyKGFsb25nLCBhbG9uZykpLmFkZChwYXRoW2ldKTtcblxuICBjb25zdCB2RGlyZWN0aW9uMiA9IG5ldyBWZWN0b3IyKHByb2plY3RGbGF0KHBhdGhbaSArIDFdKSkuc3VidHJhY3QocHJvamVjdEZsYXQocGF0aFtpXSkpO1xuXG4gIGNvbnN0IGFuZ2xlID0gKHZEaXJlY3Rpb24yLnZlcnRpY2FsQW5nbGUoKSAqIDE4MCkgLyBNYXRoLlBJO1xuXG4gIHJldHVybiB7IHBvc2l0aW9uOiBbdkNlbnRlci54LCB2Q2VudGVyLnksIDBdLCBhbmdsZSwgY29sb3IsIG9iamVjdCB9O1xufVxuIl19","import { Vector2 } from 'math.gl';\n\nfunction getLineLength(vPoints) {\n // calculate total length\n let lineLength = 0;\n for (let i = 0; i < vPoints.length - 1; i++) {\n lineLength += vPoints[i].distance(vPoints[i + 1]);\n }\n return lineLength;\n}\n\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst DEFAULT_DIRECTION = { forward: true, backward: false };\n\nexport default function createPathMarkers({\n data,\n getPath = (x) => x.path,\n getDirection = (x) => x.direction,\n getColor = (x) => DEFAULT_COLOR,\n getMarkerPercentages = (x, info) => [0.5],\n projectFlat,\n}) {\n const markers = [];\n\n for (const object of data) {\n const path = getPath(object);\n const direction = getDirection(object) || DEFAULT_DIRECTION;\n const color = getColor(object);\n\n const vPoints = path.map((p) => new Vector2(p));\n const vPointsReverse = vPoints.slice(0).reverse();\n\n // calculate total length\n const lineLength = getLineLength(vPoints);\n\n // Ask for where to put markers\n // @ts-ignore\n const percentages = getMarkerPercentages(object, { lineLength });\n\n // Create the markers\n for (const percentage of percentages) {\n if (direction.forward) {\n const marker = createMarkerAlongPath({\n path: vPoints,\n percentage,\n lineLength,\n color,\n object,\n projectFlat,\n });\n markers.push(marker);\n }\n\n if (direction.backward) {\n const marker = createMarkerAlongPath({\n path: vPointsReverse,\n percentage,\n lineLength,\n color,\n object,\n projectFlat,\n });\n markers.push(marker);\n }\n }\n }\n\n return markers;\n}\n\nfunction createMarkerAlongPath({ path, percentage, lineLength, color, object, projectFlat }) {\n const distanceAlong = lineLength * percentage;\n let currentDistance = 0;\n let previousDistance = 0;\n let i = 0;\n for (i = 0; i < path.length - 1; i++) {\n currentDistance += path[i].distance(path[i + 1]);\n if (currentDistance > distanceAlong) {\n break;\n }\n previousDistance = currentDistance;\n }\n\n // If reached the end of the loop without exiting early,\n // undo the final increment to avoid a null-pointer exception\n if (i === path.length - 1) {\n i -= 1;\n }\n\n const vDirection = path[i + 1].clone().subtract(path[i]).normalize();\n const along = distanceAlong - previousDistance;\n const vCenter = vDirection.clone().multiply(new Vector2(along, along)).add(path[i]);\n\n const vDirection2 = new Vector2(projectFlat(path[i + 1])).subtract(projectFlat(path[i]));\n\n const angle = (vDirection2.verticalAngle() * 180) / Math.PI;\n\n return { position: [vCenter.x, vCenter.y, 0], angle, color, object };\n}\n","export * from '@math.gl/core';\n","import Vector from './base/vector';\nimport { config, isArray } from '../lib/common';\nimport { checkNumber } from '../lib/validators';\nimport * as vec2 from 'gl-matrix/vec2';\nimport { vec2_transformMat4AsVector } from '../lib/gl-matrix-extras';\nexport default class Vector2 extends Vector {\n constructor(x = 0, y = 0) {\n super(2);\n\n if (isArray(x) && arguments.length === 1) {\n this.copy(x);\n } else {\n if (config.debug) {\n checkNumber(x);\n checkNumber(y);\n }\n\n this[0] = x;\n this[1] = y;\n }\n }\n\n set(x, y) {\n this[0] = x;\n this[1] = y;\n return this.check();\n }\n\n copy(array) {\n this[0] = array[0];\n this[1] = array[1];\n return this.check();\n }\n\n fromObject(object) {\n if (config.debug) {\n checkNumber(object.x);\n checkNumber(object.y);\n }\n\n this[0] = object.x;\n this[1] = object.y;\n return this.check();\n }\n\n toObject(object) {\n object.x = this[0];\n object.y = this[1];\n return object;\n }\n\n get ELEMENTS() {\n return 2;\n }\n\n horizontalAngle() {\n return Math.atan2(this.y, this.x);\n }\n\n verticalAngle() {\n return Math.atan2(this.x, this.y);\n }\n\n transform(matrix4) {\n return this.transformAsPoint(matrix4);\n }\n\n transformAsPoint(matrix4) {\n vec2.transformMat4(this, this, matrix4);\n return this.check();\n }\n\n transformAsVector(matrix4) {\n vec2_transformMat4AsVector(this, this, matrix4);\n return this.check();\n }\n\n transformByMatrix3(matrix3) {\n vec2.transformMat3(this, this, matrix3);\n return this.check();\n }\n\n transformByMatrix2x3(matrix2x3) {\n vec2.transformMat2d(this, this, matrix2x3);\n return this.check();\n }\n\n transformByMatrix2(matrix2) {\n vec2.transformMat2(this, this, matrix2);\n return this.check();\n }\n\n}\n//# sourceMappingURL=vector2.js.map","// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport Vector from './base/vector';\nimport {config, isArray} from '../lib/common';\nimport {checkNumber} from '../lib/validators';\nimport * as vec2 from 'gl-matrix/vec2';\n/* eslint-disable camelcase */\nimport {vec2_transformMat4AsVector} from '../lib/gl-matrix-extras';\nimport {NumericArray} from '@math.gl/types';\n\n/**\n * Two-element vector class.\n * Subclass of Array\n */\nexport default class Vector2 extends Vector {\n // Creates a new, empty vec2\n constructor(x: number | Readonly = 0, y: number = 0) {\n // PERF NOTE: initialize elements as double precision numbers\n super(2); // -0, -0);\n if (isArray(x) && arguments.length === 1) {\n this.copy(x as Readonly);\n } else {\n if (config.debug) {\n checkNumber(x);\n checkNumber(y);\n }\n this[0] = x as number;\n this[1] = y;\n }\n }\n\n set(x: number, y: number): this {\n this[0] = x;\n this[1] = y;\n return this.check();\n }\n\n copy(array: Readonly): this {\n this[0] = array[0];\n this[1] = array[1];\n return this.check();\n }\n\n fromObject(object: {x: number; y: number}): this {\n if (config.debug) {\n checkNumber(object.x);\n checkNumber(object.y);\n }\n this[0] = object.x;\n this[1] = object.y;\n return this.check();\n }\n\n toObject(object: {x?: number; y?: number}): {x: number; y: number} {\n object.x = this[0];\n object.y = this[1];\n return object as {x: number; y: number};\n }\n\n // Getters/setters\n\n get ELEMENTS(): number {\n return 2;\n }\n\n /**\n * Returns angle from x axis\n * @returns\n */\n horizontalAngle(): number {\n return Math.atan2(this.y, this.x);\n }\n\n /**\n * Returns angle from y axis\n * @returns\n */\n verticalAngle(): number {\n return Math.atan2(this.x, this.y);\n }\n\n // Transforms\n\n /**\n * Transforms as point\n * @param matrix4\n * @returns\n */\n transform(matrix4: Readonly): this {\n return this.transformAsPoint(matrix4);\n }\n\n /**\n * transforms as point (4th component is implicitly 1)\n * @param matrix4\n * @returns\n */\n transformAsPoint(matrix4: Readonly): this {\n vec2.transformMat4(this, this, matrix4);\n return this.check();\n }\n\n /**\n * transforms as vector (4th component is implicitly 0, ignores translation. slightly faster)\n * @param matrix4\n * @returns\n */\n transformAsVector(matrix4: Readonly): this {\n vec2_transformMat4AsVector(this, this, matrix4);\n return this.check();\n }\n\n transformByMatrix3(matrix3: Readonly): this {\n vec2.transformMat3(this, this, matrix3);\n return this.check();\n }\n\n transformByMatrix2x3(matrix2x3: Readonly): this {\n vec2.transformMat2d(this, this, matrix2x3);\n return this.check();\n }\n\n transformByMatrix2(matrix2: Readonly): this {\n vec2.transformMat2(this, this, matrix2);\n return this.check();\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getClosestPointOnLine = getClosestPointOnLine;\nexports.getClosestPointOnPolyline = getClosestPointOnPolyline;\n\nvar _math = require(\"math.gl\");\n\n// Return the closest point on a line segment\nfunction getClosestPointOnLine(_ref) {\n var p = _ref.p,\n p1 = _ref.p1,\n p2 = _ref.p2,\n _ref$clampToLine = _ref.clampToLine,\n clampToLine = _ref$clampToLine === void 0 ? true : _ref$clampToLine;\n var lineVector = new _math.Vector3(p2).subtract(p1);\n var pointVector = new _math.Vector3(p).subtract(p1);\n var dotProduct = lineVector.dot(pointVector);\n\n if (clampToLine) {\n dotProduct = (0, _math.clamp)(dotProduct, 0, 1);\n } // @ts-ignore\n\n\n return lineVector.lerp(dotProduct);\n} // Return the closest point on a line segment\n\n\nfunction getClosestPointOnPolyline(_ref2) {\n var p = _ref2.p,\n points = _ref2.points;\n p = new _math.Vector3(p);\n var pClosest = null;\n var distanceSquared = Infinity;\n var index = -1;\n\n for (var i = 0; i < points.length - 1; ++i) {\n var p1 = points[i];\n var p2 = points[i + 1];\n var pClosestOnLine = getClosestPointOnLine({\n p: p,\n p1: p1,\n p2: p2\n });\n var distanceToLineSquared = p.distanceSquared(pClosestOnLine);\n\n if (distanceToLineSquared < distanceSquared) {\n distanceSquared = distanceToLineSquared;\n pClosest = pClosestOnLine;\n index = i;\n }\n }\n\n return {\n point: pClosest,\n index: index,\n p1: points[index],\n p2: points[index + 1],\n distanceSquared: distanceSquared,\n distance: Math.sqrt(distanceSquared)\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvcG9seWxpbmUudHMiXSwibmFtZXMiOlsiZ2V0Q2xvc2VzdFBvaW50T25MaW5lIiwicCIsInAxIiwicDIiLCJjbGFtcFRvTGluZSIsImxpbmVWZWN0b3IiLCJWZWN0b3IzIiwic3VidHJhY3QiLCJwb2ludFZlY3RvciIsImRvdFByb2R1Y3QiLCJkb3QiLCJsZXJwIiwiZ2V0Q2xvc2VzdFBvaW50T25Qb2x5bGluZSIsInBvaW50cyIsInBDbG9zZXN0IiwiZGlzdGFuY2VTcXVhcmVkIiwiSW5maW5pdHkiLCJpbmRleCIsImkiLCJsZW5ndGgiLCJwQ2xvc2VzdE9uTGluZSIsImRpc3RhbmNlVG9MaW5lU3F1YXJlZCIsInBvaW50IiwiZGlzdGFuY2UiLCJNYXRoIiwic3FydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFFQTtBQUNPLFNBQVNBLHFCQUFULE9BQWtFO0FBQUEsTUFBakNDLENBQWlDLFFBQWpDQSxDQUFpQztBQUFBLE1BQTlCQyxFQUE4QixRQUE5QkEsRUFBOEI7QUFBQSxNQUExQkMsRUFBMEIsUUFBMUJBLEVBQTBCO0FBQUEsOEJBQXRCQyxXQUFzQjtBQUFBLE1BQXRCQSxXQUFzQixpQ0FBUixJQUFRO0FBQ3ZFLE1BQU1DLFVBQVUsR0FBRyxJQUFJQyxhQUFKLENBQVlILEVBQVosRUFBZ0JJLFFBQWhCLENBQXlCTCxFQUF6QixDQUFuQjtBQUNBLE1BQU1NLFdBQVcsR0FBRyxJQUFJRixhQUFKLENBQVlMLENBQVosRUFBZU0sUUFBZixDQUF3QkwsRUFBeEIsQ0FBcEI7QUFDQSxNQUFJTyxVQUFVLEdBQUdKLFVBQVUsQ0FBQ0ssR0FBWCxDQUFlRixXQUFmLENBQWpCOztBQUNBLE1BQUlKLFdBQUosRUFBaUI7QUFDZkssSUFBQUEsVUFBVSxHQUFHLGlCQUFNQSxVQUFOLEVBQWtCLENBQWxCLEVBQXFCLENBQXJCLENBQWI7QUFDRCxHQU5zRSxDQU92RTs7O0FBQ0EsU0FBT0osVUFBVSxDQUFDTSxJQUFYLENBQWdCRixVQUFoQixDQUFQO0FBQ0QsQyxDQUVEOzs7QUFDTyxTQUFTRyx5QkFBVCxRQUFrRDtBQUFBLE1BQWJYLENBQWEsU0FBYkEsQ0FBYTtBQUFBLE1BQVZZLE1BQVUsU0FBVkEsTUFBVTtBQUN2RFosRUFBQUEsQ0FBQyxHQUFHLElBQUlLLGFBQUosQ0FBWUwsQ0FBWixDQUFKO0FBQ0EsTUFBSWEsUUFBUSxHQUFHLElBQWY7QUFDQSxNQUFJQyxlQUFlLEdBQUdDLFFBQXRCO0FBQ0EsTUFBSUMsS0FBSyxHQUFHLENBQUMsQ0FBYjs7QUFDQSxPQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdMLE1BQU0sQ0FBQ00sTUFBUCxHQUFnQixDQUFwQyxFQUF1QyxFQUFFRCxDQUF6QyxFQUE0QztBQUMxQyxRQUFNaEIsRUFBRSxHQUFHVyxNQUFNLENBQUNLLENBQUQsQ0FBakI7QUFDQSxRQUFNZixFQUFFLEdBQUdVLE1BQU0sQ0FBQ0ssQ0FBQyxHQUFHLENBQUwsQ0FBakI7QUFDQSxRQUFNRSxjQUFjLEdBQUdwQixxQkFBcUIsQ0FBQztBQUFFQyxNQUFBQSxDQUFDLEVBQURBLENBQUY7QUFBS0MsTUFBQUEsRUFBRSxFQUFGQSxFQUFMO0FBQVNDLE1BQUFBLEVBQUUsRUFBRkE7QUFBVCxLQUFELENBQTVDO0FBQ0EsUUFBTWtCLHFCQUFxQixHQUFHcEIsQ0FBQyxDQUFDYyxlQUFGLENBQWtCSyxjQUFsQixDQUE5Qjs7QUFDQSxRQUFJQyxxQkFBcUIsR0FBR04sZUFBNUIsRUFBNkM7QUFDM0NBLE1BQUFBLGVBQWUsR0FBR00scUJBQWxCO0FBQ0FQLE1BQUFBLFFBQVEsR0FBR00sY0FBWDtBQUNBSCxNQUFBQSxLQUFLLEdBQUdDLENBQVI7QUFDRDtBQUNGOztBQUNELFNBQU87QUFDTEksSUFBQUEsS0FBSyxFQUFFUixRQURGO0FBRUxHLElBQUFBLEtBQUssRUFBTEEsS0FGSztBQUdMZixJQUFBQSxFQUFFLEVBQUVXLE1BQU0sQ0FBQ0ksS0FBRCxDQUhMO0FBSUxkLElBQUFBLEVBQUUsRUFBRVUsTUFBTSxDQUFDSSxLQUFLLEdBQUcsQ0FBVCxDQUpMO0FBS0xGLElBQUFBLGVBQWUsRUFBZkEsZUFMSztBQU1MUSxJQUFBQSxRQUFRLEVBQUVDLElBQUksQ0FBQ0MsSUFBTCxDQUFVVixlQUFWO0FBTkwsR0FBUDtBQVFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVjdG9yMywgY2xhbXAgfSBmcm9tICdtYXRoLmdsJztcblxuLy8gUmV0dXJuIHRoZSBjbG9zZXN0IHBvaW50IG9uIGEgbGluZSBzZWdtZW50XG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xvc2VzdFBvaW50T25MaW5lKHsgcCwgcDEsIHAyLCBjbGFtcFRvTGluZSA9IHRydWUgfSkge1xuICBjb25zdCBsaW5lVmVjdG9yID0gbmV3IFZlY3RvcjMocDIpLnN1YnRyYWN0KHAxKTtcbiAgY29uc3QgcG9pbnRWZWN0b3IgPSBuZXcgVmVjdG9yMyhwKS5zdWJ0cmFjdChwMSk7XG4gIGxldCBkb3RQcm9kdWN0ID0gbGluZVZlY3Rvci5kb3QocG9pbnRWZWN0b3IpO1xuICBpZiAoY2xhbXBUb0xpbmUpIHtcbiAgICBkb3RQcm9kdWN0ID0gY2xhbXAoZG90UHJvZHVjdCwgMCwgMSk7XG4gIH1cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gbGluZVZlY3Rvci5sZXJwKGRvdFByb2R1Y3QpO1xufVxuXG4vLyBSZXR1cm4gdGhlIGNsb3Nlc3QgcG9pbnQgb24gYSBsaW5lIHNlZ21lbnRcbmV4cG9ydCBmdW5jdGlvbiBnZXRDbG9zZXN0UG9pbnRPblBvbHlsaW5lKHsgcCwgcG9pbnRzIH0pIHtcbiAgcCA9IG5ldyBWZWN0b3IzKHApO1xuICBsZXQgcENsb3Nlc3QgPSBudWxsO1xuICBsZXQgZGlzdGFuY2VTcXVhcmVkID0gSW5maW5pdHk7XG4gIGxldCBpbmRleCA9IC0xO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGggLSAxOyArK2kpIHtcbiAgICBjb25zdCBwMSA9IHBvaW50c1tpXTtcbiAgICBjb25zdCBwMiA9IHBvaW50c1tpICsgMV07XG4gICAgY29uc3QgcENsb3Nlc3RPbkxpbmUgPSBnZXRDbG9zZXN0UG9pbnRPbkxpbmUoeyBwLCBwMSwgcDIgfSk7XG4gICAgY29uc3QgZGlzdGFuY2VUb0xpbmVTcXVhcmVkID0gcC5kaXN0YW5jZVNxdWFyZWQocENsb3Nlc3RPbkxpbmUpO1xuICAgIGlmIChkaXN0YW5jZVRvTGluZVNxdWFyZWQgPCBkaXN0YW5jZVNxdWFyZWQpIHtcbiAgICAgIGRpc3RhbmNlU3F1YXJlZCA9IGRpc3RhbmNlVG9MaW5lU3F1YXJlZDtcbiAgICAgIHBDbG9zZXN0ID0gcENsb3Nlc3RPbkxpbmU7XG4gICAgICBpbmRleCA9IGk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgcG9pbnQ6IHBDbG9zZXN0LFxuICAgIGluZGV4LFxuICAgIHAxOiBwb2ludHNbaW5kZXhdLFxuICAgIHAyOiBwb2ludHNbaW5kZXggKyAxXSxcbiAgICBkaXN0YW5jZVNxdWFyZWQsXG4gICAgZGlzdGFuY2U6IE1hdGguc3FydChkaXN0YW5jZVNxdWFyZWQpLFxuICB9O1xufVxuIl19","import { Vector3, clamp } from 'math.gl';\n\n// Return the closest point on a line segment\nexport function getClosestPointOnLine({ p, p1, p2, clampToLine = true }) {\n const lineVector = new Vector3(p2).subtract(p1);\n const pointVector = new Vector3(p).subtract(p1);\n let dotProduct = lineVector.dot(pointVector);\n if (clampToLine) {\n dotProduct = clamp(dotProduct, 0, 1);\n }\n // @ts-ignore\n return lineVector.lerp(dotProduct);\n}\n\n// Return the closest point on a line segment\nexport function getClosestPointOnPolyline({ p, points }) {\n p = new Vector3(p);\n let pClosest = null;\n let distanceSquared = Infinity;\n let index = -1;\n for (let i = 0; i < points.length - 1; ++i) {\n const p1 = points[i];\n const p2 = points[i + 1];\n const pClosestOnLine = getClosestPointOnLine({ p, p1, p2 });\n const distanceToLineSquared = p.distanceSquared(pClosestOnLine);\n if (distanceToLineSquared < distanceSquared) {\n distanceSquared = distanceToLineSquared;\n pClosest = pClosestOnLine;\n index = i;\n }\n }\n return {\n point: pClosest,\n index,\n p1: points[index],\n p2: points[index + 1],\n distanceSquared,\n distance: Math.sqrt(distanceSquared),\n };\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _core = require(\"@deck.gl/core\");\n\nvar _layers = require(\"@deck.gl/layers\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar JunctionScatterplotLayer = /*#__PURE__*/function (_CompositeLayer) {\n _inherits(JunctionScatterplotLayer, _CompositeLayer);\n\n var _super = _createSuper(JunctionScatterplotLayer);\n\n function JunctionScatterplotLayer() {\n _classCallCheck(this, JunctionScatterplotLayer);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(JunctionScatterplotLayer, [{\n key: \"renderLayers\",\n value: function renderLayers() {\n var _this$props = this.props,\n id = _this$props.id,\n getFillColor = _this$props.getFillColor,\n getStrokeColor = _this$props.getStrokeColor,\n getInnerRadius = _this$props.getInnerRadius,\n updateTriggers = _this$props.updateTriggers; // data needs to be passed explicitly after deck.gl 5.3\n\n return [// the full circles\n new _layers.ScatterplotLayer(_objectSpread({}, this.props, {\n id: \"\".concat(id, \"-full\"),\n data: this.props.data,\n getLineColor: getStrokeColor,\n updateTriggers: _objectSpread({}, updateTriggers, {\n getStrokeColor: updateTriggers.getStrokeColor\n })\n })), // the inner part\n new _layers.ScatterplotLayer(_objectSpread({}, this.props, {\n id: \"\".concat(id, \"-inner\"),\n data: this.props.data,\n getFillColor: getFillColor,\n getRadius: getInnerRadius,\n pickable: false,\n updateTriggers: _objectSpread({}, updateTriggers, {\n getFillColor: updateTriggers.getFillColor,\n getRadius: updateTriggers.getInnerRadius\n })\n }))];\n }\n }]);\n\n return JunctionScatterplotLayer;\n}(_core.CompositeLayer);\n\nexports[\"default\"] = JunctionScatterplotLayer;\n\n_defineProperty(JunctionScatterplotLayer, \"layerName\", 'JunctionScatterplotLayer');\n\n_defineProperty(JunctionScatterplotLayer, \"defaultProps\", _objectSpread({}, _layers.ScatterplotLayer.defaultProps, {\n getFillColor: function getFillColor(d) {\n return [0, 0, 0, 255];\n },\n getStrokeColor: function getStrokeColor(d) {\n return [255, 255, 255, 255];\n },\n getInnerRadius: function getInnerRadius(d) {\n return 1;\n }\n}));\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvanVuY3Rpb24tc2NhdHRlcnBsb3QtbGF5ZXIudHMiXSwibmFtZXMiOlsiSnVuY3Rpb25TY2F0dGVycGxvdExheWVyIiwicHJvcHMiLCJpZCIsImdldEZpbGxDb2xvciIsImdldFN0cm9rZUNvbG9yIiwiZ2V0SW5uZXJSYWRpdXMiLCJ1cGRhdGVUcmlnZ2VycyIsIlNjYXR0ZXJwbG90TGF5ZXIiLCJkYXRhIiwiZ2V0TGluZUNvbG9yIiwiZ2V0UmFkaXVzIiwicGlja2FibGUiLCJDb21wb3NpdGVMYXllciIsImRlZmF1bHRQcm9wcyIsImQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBU3FCQSx3Qjs7Ozs7Ozs7Ozs7OzttQ0FZSjtBQUFBLHdCQUNnRSxLQUFLQyxLQURyRTtBQUFBLFVBQ0xDLEVBREssZUFDTEEsRUFESztBQUFBLFVBQ0RDLFlBREMsZUFDREEsWUFEQztBQUFBLFVBQ2FDLGNBRGIsZUFDYUEsY0FEYjtBQUFBLFVBQzZCQyxjQUQ3QixlQUM2QkEsY0FEN0I7QUFBQSxVQUM2Q0MsY0FEN0MsZUFDNkNBLGNBRDdDLEVBR2I7O0FBQ0EsYUFBTyxDQUNMO0FBQ0EsVUFBSUMsd0JBQUosbUJBQ0ssS0FBS04sS0FEVjtBQUVFQyxRQUFBQSxFQUFFLFlBQUtBLEVBQUwsVUFGSjtBQUdFTSxRQUFBQSxJQUFJLEVBQUUsS0FBS1AsS0FBTCxDQUFXTyxJQUhuQjtBQUlFQyxRQUFBQSxZQUFZLEVBQUVMLGNBSmhCO0FBS0VFLFFBQUFBLGNBQWMsb0JBQ1RBLGNBRFM7QUFFWkYsVUFBQUEsY0FBYyxFQUFFRSxjQUFjLENBQUNGO0FBRm5CO0FBTGhCLFNBRkssRUFXRDtBQUNKLFVBQUlHLHdCQUFKLG1CQUNLLEtBQUtOLEtBRFY7QUFFRUMsUUFBQUEsRUFBRSxZQUFLQSxFQUFMLFdBRko7QUFHRU0sUUFBQUEsSUFBSSxFQUFFLEtBQUtQLEtBQUwsQ0FBV08sSUFIbkI7QUFJRUwsUUFBQUEsWUFBWSxFQUFaQSxZQUpGO0FBS0VPLFFBQUFBLFNBQVMsRUFBRUwsY0FMYjtBQU1FTSxRQUFBQSxRQUFRLEVBQUUsS0FOWjtBQU9FTCxRQUFBQSxjQUFjLG9CQUNUQSxjQURTO0FBRVpILFVBQUFBLFlBQVksRUFBRUcsY0FBYyxDQUFDSCxZQUZqQjtBQUdaTyxVQUFBQSxTQUFTLEVBQUVKLGNBQWMsQ0FBQ0Q7QUFIZDtBQVBoQixTQVpLLENBQVA7QUEwQkQ7Ozs7RUExQ21ETyxvQjs7OztnQkFBakNaLHdCLGVBSUEsMEI7O2dCQUpBQSx3QixvQ0FNZE8seUJBQWlCTSxZO0FBQ3BCVixFQUFBQSxZQUFZLEVBQUUsc0JBQUNXLENBQUQ7QUFBQSxXQUFPLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsR0FBVixDQUFQO0FBQUEsRztBQUNkVixFQUFBQSxjQUFjLEVBQUUsd0JBQUNVLENBQUQ7QUFBQSxXQUFPLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBVyxHQUFYLEVBQWdCLEdBQWhCLENBQVA7QUFBQSxHO0FBQ2hCVCxFQUFBQSxjQUFjLEVBQUUsd0JBQUNTLENBQUQ7QUFBQSxXQUFPLENBQVA7QUFBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvc2l0ZUxheWVyLCBSR0JBQ29sb3IgfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7IFNjYXR0ZXJwbG90TGF5ZXIgfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHsgQ29tcG9zaXRlTGF5ZXJQcm9wcyB9IGZyb20gJ0BkZWNrLmdsL2NvcmUvbGliL2NvbXBvc2l0ZS1sYXllcic7XG5cbmludGVyZmFjZSBKdW5jdGlvblNjYXR0ZXJwbG90TGF5ZXJQcm9wcyBleHRlbmRzIENvbXBvc2l0ZUxheWVyUHJvcHM8YW55PiB7XG4gIGdldEZpbGxDb2xvcj86IFJHQkFDb2xvciB8ICgoZCkgPT4gUkdCQUNvbG9yKTtcbiAgZ2V0U3Ryb2tlQ29sb3I/OiBSR0JBQ29sb3IgfCAoKGQpID0+IFJHQkFDb2xvcik7XG4gIGdldElubmVyUmFkaXVzPzogbnVtYmVyIHwgKChkKSA9PiBudW1iZXIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBKdW5jdGlvblNjYXR0ZXJwbG90TGF5ZXIgZXh0ZW5kcyBDb21wb3NpdGVMYXllcjxcbiAgYW55LFxuICBKdW5jdGlvblNjYXR0ZXJwbG90TGF5ZXJQcm9wc1xuPiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnSnVuY3Rpb25TY2F0dGVycGxvdExheWVyJztcbiAgc3RhdGljIGRlZmF1bHRQcm9wczogSnVuY3Rpb25TY2F0dGVycGxvdExheWVyUHJvcHMgPSB7XG4gICAgLi4uU2NhdHRlcnBsb3RMYXllci5kZWZhdWx0UHJvcHMsXG4gICAgZ2V0RmlsbENvbG9yOiAoZCkgPT4gWzAsIDAsIDAsIDI1NV0sXG4gICAgZ2V0U3Ryb2tlQ29sb3I6IChkKSA9PiBbMjU1LCAyNTUsIDI1NSwgMjU1XSxcbiAgICBnZXRJbm5lclJhZGl1czogKGQpID0+IDEsXG4gIH07XG5cbiAgcmVuZGVyTGF5ZXJzKCkge1xuICAgIGNvbnN0IHsgaWQsIGdldEZpbGxDb2xvciwgZ2V0U3Ryb2tlQ29sb3IsIGdldElubmVyUmFkaXVzLCB1cGRhdGVUcmlnZ2VycyB9ID0gdGhpcy5wcm9wcztcblxuICAgIC8vIGRhdGEgbmVlZHMgdG8gYmUgcGFzc2VkIGV4cGxpY2l0bHkgYWZ0ZXIgZGVjay5nbCA1LjNcbiAgICByZXR1cm4gW1xuICAgICAgLy8gdGhlIGZ1bGwgY2lyY2xlc1xuICAgICAgbmV3IFNjYXR0ZXJwbG90TGF5ZXIoe1xuICAgICAgICAuLi50aGlzLnByb3BzLFxuICAgICAgICBpZDogYCR7aWR9LWZ1bGxgLFxuICAgICAgICBkYXRhOiB0aGlzLnByb3BzLmRhdGEsXG4gICAgICAgIGdldExpbmVDb2xvcjogZ2V0U3Ryb2tlQ29sb3IsXG4gICAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgICAgLi4udXBkYXRlVHJpZ2dlcnMsXG4gICAgICAgICAgZ2V0U3Ryb2tlQ29sb3I6IHVwZGF0ZVRyaWdnZXJzLmdldFN0cm9rZUNvbG9yLFxuICAgICAgICB9LFxuICAgICAgfSksIC8vIHRoZSBpbm5lciBwYXJ0XG4gICAgICBuZXcgU2NhdHRlcnBsb3RMYXllcih7XG4gICAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgICAgIGlkOiBgJHtpZH0taW5uZXJgLFxuICAgICAgICBkYXRhOiB0aGlzLnByb3BzLmRhdGEsXG4gICAgICAgIGdldEZpbGxDb2xvcixcbiAgICAgICAgZ2V0UmFkaXVzOiBnZXRJbm5lclJhZGl1cyxcbiAgICAgICAgcGlja2FibGU6IGZhbHNlLFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgIC4uLnVwZGF0ZVRyaWdnZXJzLFxuICAgICAgICAgIGdldEZpbGxDb2xvcjogdXBkYXRlVHJpZ2dlcnMuZ2V0RmlsbENvbG9yLFxuICAgICAgICAgIGdldFJhZGl1czogdXBkYXRlVHJpZ2dlcnMuZ2V0SW5uZXJSYWRpdXMsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICBdO1xuICB9XG59XG4iXX0=","import { CompositeLayer, RGBAColor } from '@deck.gl/core';\nimport { ScatterplotLayer } from '@deck.gl/layers';\nimport { CompositeLayerProps } from '@deck.gl/core/lib/composite-layer';\n\ninterface JunctionScatterplotLayerProps extends CompositeLayerProps {\n getFillColor?: RGBAColor | ((d) => RGBAColor);\n getStrokeColor?: RGBAColor | ((d) => RGBAColor);\n getInnerRadius?: number | ((d) => number);\n}\n\nexport default class JunctionScatterplotLayer extends CompositeLayer<\n any,\n JunctionScatterplotLayerProps\n> {\n static layerName = 'JunctionScatterplotLayer';\n static defaultProps: JunctionScatterplotLayerProps = {\n ...ScatterplotLayer.defaultProps,\n getFillColor: (d) => [0, 0, 0, 255],\n getStrokeColor: (d) => [255, 255, 255, 255],\n getInnerRadius: (d) => 1,\n };\n\n renderLayers() {\n const { id, getFillColor, getStrokeColor, getInnerRadius, updateTriggers } = this.props;\n\n // data needs to be passed explicitly after deck.gl 5.3\n return [\n // the full circles\n new ScatterplotLayer({\n ...this.props,\n id: `${id}-full`,\n data: this.props.data,\n getLineColor: getStrokeColor,\n updateTriggers: {\n ...updateTriggers,\n getStrokeColor: updateTriggers.getStrokeColor,\n },\n }), // the inner part\n new ScatterplotLayer({\n ...this.props,\n id: `${id}-inner`,\n data: this.props.data,\n getFillColor,\n getRadius: getInnerRadius,\n pickable: false,\n updateTriggers: {\n ...updateTriggers,\n getFillColor: updateTriggers.getFillColor,\n getRadius: updateTriggers.getInnerRadius,\n },\n }),\n ];\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toDeckColor = toDeckColor;\nexports.recursivelyTraverseNestedArrays = recursivelyTraverseNestedArrays;\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction toDeckColor(color) {\n var defaultColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [255, 0, 0, 255];\n\n if (!Array.isArray(color)) {\n return defaultColor;\n }\n\n return [color[0] * 255, color[1] * 255, color[2] * 255, color[3] * 255];\n} //\n// a GeoJSON helper function that calls the provided function with\n// an argument that is the most deeply-nested array having elements\n// that are arrays of primitives as an argument, e.g.\n//\n// {\n// \"type\": \"MultiPolygon\",\n// \"coordinates\": [\n// [\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n// ],\n// [\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n// ]\n// ]\n// }\n//\n// the function would be called on:\n//\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n//\n// and\n//\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n//\n\n\nfunction recursivelyTraverseNestedArrays(array, prefix, fn) {\n if (!Array.isArray(array[0])) {\n return true;\n }\n\n for (var i = 0; i < array.length; i++) {\n if (recursivelyTraverseNestedArrays(array[i], [].concat(_toConsumableArray(prefix), [i]), fn)) {\n fn(array, prefix);\n break;\n }\n }\n\n return false;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbHMudHMiXSwibmFtZXMiOlsidG9EZWNrQ29sb3IiLCJjb2xvciIsImRlZmF1bHRDb2xvciIsIkFycmF5IiwiaXNBcnJheSIsInJlY3Vyc2l2ZWx5VHJhdmVyc2VOZXN0ZWRBcnJheXMiLCJhcnJheSIsInByZWZpeCIsImZuIiwiaSIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTyxTQUFTQSxXQUFULENBQ0xDLEtBREssRUFHNkI7QUFBQSxNQURsQ0MsWUFDa0MsdUVBRGUsQ0FBQyxHQUFELEVBQU0sQ0FBTixFQUFTLENBQVQsRUFBWSxHQUFaLENBQ2Y7O0FBQ2xDLE1BQUksQ0FBQ0MsS0FBSyxDQUFDQyxPQUFOLENBQWNILEtBQWQsQ0FBTCxFQUEyQjtBQUN6QixXQUFPQyxZQUFQO0FBQ0Q7O0FBQ0QsU0FBTyxDQUFDRCxLQUFLLENBQUMsQ0FBRCxDQUFMLEdBQVcsR0FBWixFQUFpQkEsS0FBSyxDQUFDLENBQUQsQ0FBTCxHQUFXLEdBQTVCLEVBQWlDQSxLQUFLLENBQUMsQ0FBRCxDQUFMLEdBQVcsR0FBNUMsRUFBaURBLEtBQUssQ0FBQyxDQUFELENBQUwsR0FBVyxHQUE1RCxDQUFQO0FBQ0QsQyxDQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxTQUFTSSwrQkFBVCxDQUNMQyxLQURLLEVBRUxDLE1BRkssRUFHTEMsRUFISyxFQUlMO0FBQ0EsTUFBSSxDQUFDTCxLQUFLLENBQUNDLE9BQU4sQ0FBY0UsS0FBSyxDQUFDLENBQUQsQ0FBbkIsQ0FBTCxFQUE4QjtBQUM1QixXQUFPLElBQVA7QUFDRDs7QUFDRCxPQUFLLElBQUlHLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdILEtBQUssQ0FBQ0ksTUFBMUIsRUFBa0NELENBQUMsRUFBbkMsRUFBdUM7QUFDckMsUUFBSUosK0JBQStCLENBQUNDLEtBQUssQ0FBQ0csQ0FBRCxDQUFOLCtCQUFlRixNQUFmLElBQXVCRSxDQUF2QixJQUEyQkQsRUFBM0IsQ0FBbkMsRUFBbUU7QUFDakVBLE1BQUFBLEVBQUUsQ0FBQ0YsS0FBRCxFQUFRQyxNQUFSLENBQUY7QUFDQTtBQUNEO0FBQ0Y7O0FBQ0QsU0FBTyxLQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gdG9EZWNrQ29sb3IoXG4gIGNvbG9yPzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBkZWZhdWx0Q29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzI1NSwgMCwgMCwgMjU1XVxuKTogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoY29sb3IpKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRDb2xvcjtcbiAgfVxuICByZXR1cm4gW2NvbG9yWzBdICogMjU1LCBjb2xvclsxXSAqIDI1NSwgY29sb3JbMl0gKiAyNTUsIGNvbG9yWzNdICogMjU1XTtcbn1cblxuLy9cbi8vIGEgR2VvSlNPTiBoZWxwZXIgZnVuY3Rpb24gdGhhdCBjYWxscyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gd2l0aFxuLy8gYW4gYXJndW1lbnQgdGhhdCBpcyB0aGUgbW9zdCBkZWVwbHktbmVzdGVkIGFycmF5IGhhdmluZyBlbGVtZW50c1xuLy8gdGhhdCBhcmUgYXJyYXlzIG9mIHByaW1pdGl2ZXMgYXMgYW4gYXJndW1lbnQsIGUuZy5cbi8vXG4vLyB7XG4vLyAgIFwidHlwZVwiOiBcIk11bHRpUG9seWdvblwiLFxuLy8gICBcImNvb3JkaW5hdGVzXCI6IFtcbi8vICAgICAgIFtcbi8vICAgICAgICAgICBbWzMwLCAyMF0sIFs0NSwgNDBdLCBbMTAsIDQwXSwgWzMwLCAyMF1dXG4vLyAgICAgICBdLFxuLy8gICAgICAgW1xuLy8gICAgICAgICAgIFtbMTUsIDVdLCBbNDAsIDEwXSwgWzEwLCAyMF0sIFs1LCAxMF0sIFsxNSwgNV1dXG4vLyAgICAgICBdXG4vLyAgIF1cbi8vIH1cbi8vXG4vLyB0aGUgZnVuY3Rpb24gd291bGQgYmUgY2FsbGVkIG9uOlxuLy9cbi8vIFtbMzAsIDIwXSwgWzQ1LCA0MF0sIFsxMCwgNDBdLCBbMzAsIDIwXV1cbi8vXG4vLyBhbmRcbi8vXG4vLyBbWzE1LCA1XSwgWzQwLCAxMF0sIFsxMCwgMjBdLCBbNSwgMTBdLCBbMTUsIDVdXVxuLy9cbmV4cG9ydCBmdW5jdGlvbiByZWN1cnNpdmVseVRyYXZlcnNlTmVzdGVkQXJyYXlzKFxuICBhcnJheTogQXJyYXk8YW55PixcbiAgcHJlZml4OiBBcnJheTxudW1iZXI+LFxuICBmbjogRnVuY3Rpb25cbikge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXlbMF0pKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChyZWN1cnNpdmVseVRyYXZlcnNlTmVzdGVkQXJyYXlzKGFycmF5W2ldLCBbLi4ucHJlZml4LCBpXSwgZm4pKSB7XG4gICAgICBmbihhcnJheSwgcHJlZml4KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0=","export function toDeckColor(\n color?: [number, number, number, number] | [number, number, number] | null | undefined,\n defaultColor: [number, number, number, number] = [255, 0, 0, 255]\n): [number, number, number, number] {\n if (!Array.isArray(color)) {\n return defaultColor;\n }\n return [color[0] * 255, color[1] * 255, color[2] * 255, color[3] * 255];\n}\n\n//\n// a GeoJSON helper function that calls the provided function with\n// an argument that is the most deeply-nested array having elements\n// that are arrays of primitives as an argument, e.g.\n//\n// {\n// \"type\": \"MultiPolygon\",\n// \"coordinates\": [\n// [\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n// ],\n// [\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n// ]\n// ]\n// }\n//\n// the function would be called on:\n//\n// [[30, 20], [45, 40], [10, 40], [30, 20]]\n//\n// and\n//\n// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]\n//\nexport function recursivelyTraverseNestedArrays(\n array: Array,\n prefix: Array,\n fn: Function\n) {\n if (!Array.isArray(array[0])) {\n return true;\n }\n for (let i = 0; i < array.length; i++) {\n if (recursivelyTraverseNestedArrays(array[i], [...prefix, i], fn)) {\n fn(array, prefix);\n break;\n }\n }\n return false;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DeckCache = /*#__PURE__*/function () {\n function DeckCache(getData, convert) {\n _classCallCheck(this, DeckCache);\n\n _defineProperty(this, \"objects\", void 0);\n\n _defineProperty(this, \"originals\", void 0);\n\n _defineProperty(this, \"updateTrigger\", void 0);\n\n _defineProperty(this, \"_idToPosition\", void 0);\n\n _defineProperty(this, \"_getData\", void 0);\n\n _defineProperty(this, \"_convert\", void 0);\n\n this.objects = [];\n this.originals = [];\n this.updateTrigger = 0;\n this._idToPosition = new Map();\n this._getData = getData;\n this._convert = convert;\n }\n\n _createClass(DeckCache, [{\n key: \"updateAllDeckObjects\",\n value: function updateAllDeckObjects() {\n var _this = this;\n\n if (!this._getData || !this._convert) return;\n this.originals.length = 0;\n this.objects.length = 0;\n\n this._idToPosition.clear();\n\n this._getData().forEach(function (d) {\n _this._idToPosition.set(d.id, _this.objects.length);\n\n _this.originals.push(d);\n\n _this.objects.push(_this._convert(d));\n });\n\n this.triggerUpdate();\n }\n }, {\n key: \"updateDeckObjectsByIds\",\n value: function updateDeckObjectsByIds(ids) {\n var _this2 = this;\n\n if (!this._getData || !this._convert) return;\n ids.forEach(function (id) {\n var p = _this2._idToPosition.get(id);\n\n if (p !== undefined) {\n _this2.objects[p] = _this2._convert(_this2.originals[p]);\n }\n });\n this.triggerUpdate();\n }\n }, {\n key: \"triggerUpdate\",\n value: function triggerUpdate() {\n this.updateTrigger++;\n }\n }, {\n key: \"getDeckObjectById\",\n value: function getDeckObjectById(id) {\n var p = this._idToPosition.get(id);\n\n return p !== undefined ? this.objects[p] : null;\n }\n }, {\n key: \"getOriginalById\",\n value: function getOriginalById(id) {\n var p = this._idToPosition.get(id);\n\n return p !== undefined ? this.originals[p] : null;\n }\n }]);\n\n return DeckCache;\n}();\n\nexports[\"default\"] = DeckCache;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZGVjay1yZW5kZXJlci9kZWNrLWNhY2hlLnRzIl0sIm5hbWVzIjpbIkRlY2tDYWNoZSIsImdldERhdGEiLCJjb252ZXJ0Iiwib2JqZWN0cyIsIm9yaWdpbmFscyIsInVwZGF0ZVRyaWdnZXIiLCJfaWRUb1Bvc2l0aW9uIiwiTWFwIiwiX2dldERhdGEiLCJfY29udmVydCIsImxlbmd0aCIsImNsZWFyIiwiZm9yRWFjaCIsImQiLCJzZXQiLCJpZCIsInB1c2giLCJ0cmlnZ2VyVXBkYXRlIiwiaWRzIiwicCIsImdldCIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0lBQXFCQSxTO0FBUW5CLHFCQUFZQyxPQUFaLEVBQW9DQyxPQUFwQyxFQUFxRTtBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUNuRSxTQUFLQyxPQUFMLEdBQWUsRUFBZjtBQUNBLFNBQUtDLFNBQUwsR0FBaUIsRUFBakI7QUFDQSxTQUFLQyxhQUFMLEdBQXFCLENBQXJCO0FBRUEsU0FBS0MsYUFBTCxHQUFxQixJQUFJQyxHQUFKLEVBQXJCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQlAsT0FBaEI7QUFDQSxTQUFLUSxRQUFMLEdBQWdCUCxPQUFoQjtBQUNEOzs7OzJDQUVzQjtBQUFBOztBQUNyQixVQUFJLENBQUMsS0FBS00sUUFBTixJQUFrQixDQUFDLEtBQUtDLFFBQTVCLEVBQXNDO0FBRXRDLFdBQUtMLFNBQUwsQ0FBZU0sTUFBZixHQUF3QixDQUF4QjtBQUNBLFdBQUtQLE9BQUwsQ0FBYU8sTUFBYixHQUFzQixDQUF0Qjs7QUFDQSxXQUFLSixhQUFMLENBQW1CSyxLQUFuQjs7QUFFQSxXQUFLSCxRQUFMLEdBQWdCSSxPQUFoQixDQUF3QixVQUFDQyxDQUFELEVBQU87QUFDN0IsUUFBQSxLQUFJLENBQUNQLGFBQUwsQ0FBbUJRLEdBQW5CLENBQXdCRCxDQUFELENBQVdFLEVBQWxDLEVBQXNDLEtBQUksQ0FBQ1osT0FBTCxDQUFhTyxNQUFuRDs7QUFDQSxRQUFBLEtBQUksQ0FBQ04sU0FBTCxDQUFlWSxJQUFmLENBQW9CSCxDQUFwQjs7QUFDQSxRQUFBLEtBQUksQ0FBQ1YsT0FBTCxDQUFhYSxJQUFiLENBQWtCLEtBQUksQ0FBQ1AsUUFBTCxDQUFjSSxDQUFkLENBQWxCO0FBQ0QsT0FKRDs7QUFNQSxXQUFLSSxhQUFMO0FBQ0Q7OzsyQ0FFc0JDLEcsRUFBZTtBQUFBOztBQUNwQyxVQUFJLENBQUMsS0FBS1YsUUFBTixJQUFrQixDQUFDLEtBQUtDLFFBQTVCLEVBQXNDO0FBRXRDUyxNQUFBQSxHQUFHLENBQUNOLE9BQUosQ0FBWSxVQUFDRyxFQUFELEVBQVE7QUFDbEIsWUFBTUksQ0FBQyxHQUFHLE1BQUksQ0FBQ2IsYUFBTCxDQUFtQmMsR0FBbkIsQ0FBdUJMLEVBQXZCLENBQVY7O0FBQ0EsWUFBSUksQ0FBQyxLQUFLRSxTQUFWLEVBQXFCO0FBQ25CLFVBQUEsTUFBSSxDQUFDbEIsT0FBTCxDQUFhZ0IsQ0FBYixJQUFrQixNQUFJLENBQUNWLFFBQUwsQ0FBYyxNQUFJLENBQUNMLFNBQUwsQ0FBZWUsQ0FBZixDQUFkLENBQWxCO0FBQ0Q7QUFDRixPQUxEO0FBT0EsV0FBS0YsYUFBTDtBQUNEOzs7b0NBRWU7QUFDZCxXQUFLWixhQUFMO0FBQ0Q7OztzQ0FFaUJVLEUsRUFBc0M7QUFDdEQsVUFBTUksQ0FBQyxHQUFHLEtBQUtiLGFBQUwsQ0FBbUJjLEdBQW5CLENBQXVCTCxFQUF2QixDQUFWOztBQUNBLGFBQU9JLENBQUMsS0FBS0UsU0FBTixHQUFrQixLQUFLbEIsT0FBTCxDQUFhZ0IsQ0FBYixDQUFsQixHQUFvQyxJQUEzQztBQUNEOzs7b0NBRWVKLEUsRUFBc0M7QUFDcEQsVUFBTUksQ0FBQyxHQUFHLEtBQUtiLGFBQUwsQ0FBbUJjLEdBQW5CLENBQXVCTCxFQUF2QixDQUFWOztBQUNBLGFBQU9JLENBQUMsS0FBS0UsU0FBTixHQUFrQixLQUFLakIsU0FBTCxDQUFlZSxDQUFmLENBQWxCLEdBQXNDLElBQTdDO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBEZWNrQ2FjaGU8VE9SSUcsIFRDT05WPiB7XG4gIG9iamVjdHM6IFRDT05WW107XG4gIG9yaWdpbmFsczogVE9SSUdbXTtcbiAgdXBkYXRlVHJpZ2dlcjogbnVtYmVyO1xuICBfaWRUb1Bvc2l0aW9uOiBNYXA8c3RyaW5nLCBudW1iZXI+O1xuICBfZ2V0RGF0YTogKCkgPT4gVE9SSUdbXTtcbiAgX2NvbnZlcnQ6IChhcmcwOiBUT1JJRykgPT4gVENPTlY7XG5cbiAgY29uc3RydWN0b3IoZ2V0RGF0YTogKCkgPT4gVE9SSUdbXSwgY29udmVydDogKGFyZzA6IFRPUklHKSA9PiBUQ09OVikge1xuICAgIHRoaXMub2JqZWN0cyA9IFtdO1xuICAgIHRoaXMub3JpZ2luYWxzID0gW107XG4gICAgdGhpcy51cGRhdGVUcmlnZ2VyID0gMDtcblxuICAgIHRoaXMuX2lkVG9Qb3NpdGlvbiA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLl9nZXREYXRhID0gZ2V0RGF0YTtcbiAgICB0aGlzLl9jb252ZXJ0ID0gY29udmVydDtcbiAgfVxuXG4gIHVwZGF0ZUFsbERlY2tPYmplY3RzKCkge1xuICAgIGlmICghdGhpcy5fZ2V0RGF0YSB8fCAhdGhpcy5fY29udmVydCkgcmV0dXJuO1xuXG4gICAgdGhpcy5vcmlnaW5hbHMubGVuZ3RoID0gMDtcbiAgICB0aGlzLm9iamVjdHMubGVuZ3RoID0gMDtcbiAgICB0aGlzLl9pZFRvUG9zaXRpb24uY2xlYXIoKTtcblxuICAgIHRoaXMuX2dldERhdGEoKS5mb3JFYWNoKChkKSA9PiB7XG4gICAgICB0aGlzLl9pZFRvUG9zaXRpb24uc2V0KChkIGFzIGFueSkuaWQsIHRoaXMub2JqZWN0cy5sZW5ndGgpO1xuICAgICAgdGhpcy5vcmlnaW5hbHMucHVzaChkKTtcbiAgICAgIHRoaXMub2JqZWN0cy5wdXNoKHRoaXMuX2NvbnZlcnQoZCkpO1xuICAgIH0pO1xuXG4gICAgdGhpcy50cmlnZ2VyVXBkYXRlKCk7XG4gIH1cblxuICB1cGRhdGVEZWNrT2JqZWN0c0J5SWRzKGlkczogc3RyaW5nW10pIHtcbiAgICBpZiAoIXRoaXMuX2dldERhdGEgfHwgIXRoaXMuX2NvbnZlcnQpIHJldHVybjtcblxuICAgIGlkcy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgY29uc3QgcCA9IHRoaXMuX2lkVG9Qb3NpdGlvbi5nZXQoaWQpO1xuICAgICAgaWYgKHAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLm9iamVjdHNbcF0gPSB0aGlzLl9jb252ZXJ0KHRoaXMub3JpZ2luYWxzW3BdKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudHJpZ2dlclVwZGF0ZSgpO1xuICB9XG5cbiAgdHJpZ2dlclVwZGF0ZSgpIHtcbiAgICB0aGlzLnVwZGF0ZVRyaWdnZXIrKztcbiAgfVxuXG4gIGdldERlY2tPYmplY3RCeUlkKGlkOiBzdHJpbmcpOiBUQ09OViB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHAgPSB0aGlzLl9pZFRvUG9zaXRpb24uZ2V0KGlkKTtcbiAgICByZXR1cm4gcCAhPT0gdW5kZWZpbmVkID8gdGhpcy5vYmplY3RzW3BdIDogbnVsbDtcbiAgfVxuXG4gIGdldE9yaWdpbmFsQnlJZChpZDogc3RyaW5nKTogVE9SSUcgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwID0gdGhpcy5faWRUb1Bvc2l0aW9uLmdldChpZCk7XG4gICAgcmV0dXJuIHAgIT09IHVuZGVmaW5lZCA/IHRoaXMub3JpZ2luYWxzW3BdIDogbnVsbDtcbiAgfVxufVxuIl19","export default class DeckCache {\n objects: TCONV[];\n originals: TORIG[];\n updateTrigger: number;\n _idToPosition: Map;\n _getData: () => TORIG[];\n _convert: (arg0: TORIG) => TCONV;\n\n constructor(getData: () => TORIG[], convert: (arg0: TORIG) => TCONV) {\n this.objects = [];\n this.originals = [];\n this.updateTrigger = 0;\n\n this._idToPosition = new Map();\n this._getData = getData;\n this._convert = convert;\n }\n\n updateAllDeckObjects() {\n if (!this._getData || !this._convert) return;\n\n this.originals.length = 0;\n this.objects.length = 0;\n this._idToPosition.clear();\n\n this._getData().forEach((d) => {\n this._idToPosition.set((d as any).id, this.objects.length);\n this.originals.push(d);\n this.objects.push(this._convert(d));\n });\n\n this.triggerUpdate();\n }\n\n updateDeckObjectsByIds(ids: string[]) {\n if (!this._getData || !this._convert) return;\n\n ids.forEach((id) => {\n const p = this._idToPosition.get(id);\n if (p !== undefined) {\n this.objects[p] = this._convert(this.originals[p]);\n }\n });\n\n this.triggerUpdate();\n }\n\n triggerUpdate() {\n this.updateTrigger++;\n }\n\n getDeckObjectById(id: string): TCONV | null | undefined {\n const p = this._idToPosition.get(id);\n return p !== undefined ? this.objects[p] : null;\n }\n\n getOriginalById(id: string): TORIG | null | undefined {\n const p = this._idToPosition.get(id);\n return p !== undefined ? this.originals[p] : null;\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _layers = require(\"@deck.gl/layers\");\n\nvar _nebulaLayer = _interopRequireDefault(require(\"../nebula-layer\"));\n\nvar _utils = require(\"../utils\");\n\nvar _constants = require(\"../constants\");\n\nvar _deckCache = _interopRequireDefault(require(\"../deck-renderer/deck-cache\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar TextsLayer = /*#__PURE__*/function (_NebulaLayer) {\n _inherits(TextsLayer, _NebulaLayer);\n\n var _super = _createSuper(TextsLayer);\n\n function TextsLayer(config) {\n var _this;\n\n _classCallCheck(this, TextsLayer);\n\n _this = _super.call(this, config);\n\n _defineProperty(_assertThisInitialized(_this), \"deckCache\", void 0);\n\n _this.deckCache = new _deckCache[\"default\"](config.getData, function (data) {\n return config.toNebulaFeature(data);\n });\n return _this;\n }\n\n _createClass(TextsLayer, [{\n key: \"render\",\n value: function render(_ref) {\n var nebula = _ref.nebula;\n var defaultColor = [0x0, 0x0, 0x0, 0xff];\n var _this$deckCache = this.deckCache,\n objects = _this$deckCache.objects,\n updateTrigger = _this$deckCache.updateTrigger;\n var zoom = nebula.props.viewport.zoom;\n return new _layers.TextLayer({\n id: \"texts-\".concat(this.id),\n data: objects,\n opacity: 1,\n fp64: false,\n pickable: false,\n // @ts-ignore\n getText: function getText(nf) {\n return nf.style.text;\n },\n // @ts-ignore\n getPosition: function getPosition(nf) {\n return nf.geoJson.geometry.coordinates;\n },\n // @ts-ignore\n getColor: function getColor(nf) {\n return (0, _utils.toDeckColor)(nf.style.fillColor) || defaultColor;\n },\n // TODO: layer should offer option to scale with zoom\n sizeScale: 1 / Math.pow(2, 20 - zoom),\n getSize: _constants.PROJECTED_PIXEL_SIZE_MULTIPLIER,\n updateTriggers: {\n all: updateTrigger\n },\n nebulaLayer: this\n });\n }\n }]);\n\n return TextsLayer;\n}(_nebulaLayer[\"default\"]);\n\nexports[\"default\"] = TextsLayer;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbGF5ZXJzL3RleHRzLWxheWVyLnRzIl0sIm5hbWVzIjpbIlRleHRzTGF5ZXIiLCJjb25maWciLCJkZWNrQ2FjaGUiLCJEZWNrQ2FjaGUiLCJnZXREYXRhIiwiZGF0YSIsInRvTmVidWxhRmVhdHVyZSIsIm5lYnVsYSIsImRlZmF1bHRDb2xvciIsIm9iamVjdHMiLCJ1cGRhdGVUcmlnZ2VyIiwiem9vbSIsInByb3BzIiwidmlld3BvcnQiLCJUZXh0TGF5ZXIiLCJpZCIsIm9wYWNpdHkiLCJmcDY0IiwicGlja2FibGUiLCJnZXRUZXh0IiwibmYiLCJzdHlsZSIsInRleHQiLCJnZXRQb3NpdGlvbiIsImdlb0pzb24iLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiZ2V0Q29sb3IiLCJmaWxsQ29sb3IiLCJzaXplU2NhbGUiLCJNYXRoIiwicG93IiwiZ2V0U2l6ZSIsIlBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIiLCJ1cGRhdGVUcmlnZ2VycyIsImFsbCIsIm5lYnVsYUxheWVyIiwiTmVidWxhTGF5ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVxQkEsVTs7Ozs7QUFHbkIsc0JBQVlDLE1BQVosRUFBeUM7QUFBQTs7QUFBQTs7QUFDdkMsOEJBQU1BLE1BQU47O0FBRHVDOztBQUV2QyxVQUFLQyxTQUFMLEdBQWlCLElBQUlDLHFCQUFKLENBQWNGLE1BQU0sQ0FBQ0csT0FBckIsRUFBOEIsVUFBQ0MsSUFBRDtBQUFBLGFBQVVKLE1BQU0sQ0FBQ0ssZUFBUCxDQUF1QkQsSUFBdkIsQ0FBVjtBQUFBLEtBQTlCLENBQWpCO0FBRnVDO0FBR3hDOzs7O2lDQUV1QztBQUFBLFVBQS9CRSxNQUErQixRQUEvQkEsTUFBK0I7QUFDdEMsVUFBTUMsWUFBWSxHQUFHLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBVyxHQUFYLEVBQWdCLElBQWhCLENBQXJCO0FBRHNDLDRCQUVILEtBQUtOLFNBRkY7QUFBQSxVQUU5Qk8sT0FGOEIsbUJBRTlCQSxPQUY4QjtBQUFBLFVBRXJCQyxhQUZxQixtQkFFckJBLGFBRnFCO0FBQUEsVUFJOUJDLElBSjhCLEdBSXJCSixNQUFNLENBQUNLLEtBQVAsQ0FBYUMsUUFKUSxDQUk5QkYsSUFKOEI7QUFNdEMsYUFBTyxJQUFJRyxpQkFBSixDQUFjO0FBQ25CQyxRQUFBQSxFQUFFLGtCQUFXLEtBQUtBLEVBQWhCLENBRGlCO0FBRW5CVixRQUFBQSxJQUFJLEVBQUVJLE9BRmE7QUFHbkJPLFFBQUFBLE9BQU8sRUFBRSxDQUhVO0FBSW5CQyxRQUFBQSxJQUFJLEVBQUUsS0FKYTtBQUtuQkMsUUFBQUEsUUFBUSxFQUFFLEtBTFM7QUFPbkI7QUFDQUMsUUFBQUEsT0FBTyxFQUFFLGlCQUFDQyxFQUFEO0FBQUEsaUJBQVFBLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTQyxJQUFqQjtBQUFBLFNBUlU7QUFTbkI7QUFDQUMsUUFBQUEsV0FBVyxFQUFFLHFCQUFDSCxFQUFEO0FBQUEsaUJBQVFBLEVBQUUsQ0FBQ0ksT0FBSCxDQUFXQyxRQUFYLENBQW9CQyxXQUE1QjtBQUFBLFNBVk07QUFXbkI7QUFDQUMsUUFBQUEsUUFBUSxFQUFFLGtCQUFDUCxFQUFEO0FBQUEsaUJBQVEsd0JBQVlBLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTTyxTQUFyQixLQUFtQ3BCLFlBQTNDO0FBQUEsU0FaUztBQWNuQjtBQUNBcUIsUUFBQUEsU0FBUyxFQUFFLElBQUlDLElBQUksQ0FBQ0MsR0FBTCxDQUFTLENBQVQsRUFBWSxLQUFLcEIsSUFBakIsQ0FmSTtBQWdCbkJxQixRQUFBQSxPQUFPLEVBQUVDLDBDQWhCVTtBQWtCbkJDLFFBQUFBLGNBQWMsRUFBRTtBQUFFQyxVQUFBQSxHQUFHLEVBQUV6QjtBQUFQLFNBbEJHO0FBb0JuQjBCLFFBQUFBLFdBQVcsRUFBRTtBQXBCTSxPQUFkLENBQVA7QUFzQkQ7Ozs7RUFwQ3FDQyx1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHRMYXllciB9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5cbmltcG9ydCBOZWJ1bGFMYXllciBmcm9tICcuLi9uZWJ1bGEtbGF5ZXInO1xuaW1wb3J0IHsgdG9EZWNrQ29sb3IgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBQUk9KRUNURURfUElYRUxfU0laRV9NVUxUSVBMSUVSIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBEZWNrQ2FjaGUgZnJvbSAnLi4vZGVjay1yZW5kZXJlci9kZWNrLWNhY2hlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGV4dHNMYXllciBleHRlbmRzIE5lYnVsYUxheWVyIHtcbiAgZGVja0NhY2hlOiBEZWNrQ2FjaGU8YW55LCBhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHN1cGVyKGNvbmZpZyk7XG4gICAgdGhpcy5kZWNrQ2FjaGUgPSBuZXcgRGVja0NhY2hlKGNvbmZpZy5nZXREYXRhLCAoZGF0YSkgPT4gY29uZmlnLnRvTmVidWxhRmVhdHVyZShkYXRhKSk7XG4gIH1cblxuICByZW5kZXIoeyBuZWJ1bGEgfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGNvbnN0IGRlZmF1bHRDb2xvciA9IFsweDAsIDB4MCwgMHgwLCAweGZmXTtcbiAgICBjb25zdCB7IG9iamVjdHMsIHVwZGF0ZVRyaWdnZXIgfSA9IHRoaXMuZGVja0NhY2hlO1xuXG4gICAgY29uc3QgeyB6b29tIH0gPSBuZWJ1bGEucHJvcHMudmlld3BvcnQ7XG5cbiAgICByZXR1cm4gbmV3IFRleHRMYXllcih7XG4gICAgICBpZDogYHRleHRzLSR7dGhpcy5pZH1gLFxuICAgICAgZGF0YTogb2JqZWN0cyxcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgICBmcDY0OiBmYWxzZSxcbiAgICAgIHBpY2thYmxlOiBmYWxzZSxcblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZ2V0VGV4dDogKG5mKSA9PiBuZi5zdHlsZS50ZXh0LFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZ2V0UG9zaXRpb246IChuZikgPT4gbmYuZ2VvSnNvbi5nZW9tZXRyeS5jb29yZGluYXRlcyxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGdldENvbG9yOiAobmYpID0+IHRvRGVja0NvbG9yKG5mLnN0eWxlLmZpbGxDb2xvcikgfHwgZGVmYXVsdENvbG9yLFxuXG4gICAgICAvLyBUT0RPOiBsYXllciBzaG91bGQgb2ZmZXIgb3B0aW9uIHRvIHNjYWxlIHdpdGggem9vbVxuICAgICAgc2l6ZVNjYWxlOiAxIC8gTWF0aC5wb3coMiwgMjAgLSB6b29tKSxcbiAgICAgIGdldFNpemU6IFBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIsXG5cbiAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7IGFsbDogdXBkYXRlVHJpZ2dlciB9LFxuXG4gICAgICBuZWJ1bGFMYXllcjogdGhpcyxcbiAgICB9KTtcbiAgfVxufVxuIl19","import { TextLayer } from '@deck.gl/layers';\n\nimport NebulaLayer from '../nebula-layer';\nimport { toDeckColor } from '../utils';\nimport { PROJECTED_PIXEL_SIZE_MULTIPLIER } from '../constants';\nimport DeckCache from '../deck-renderer/deck-cache';\n\nexport default class TextsLayer extends NebulaLayer {\n deckCache: DeckCache;\n\n constructor(config: Record) {\n super(config);\n this.deckCache = new DeckCache(config.getData, (data) => config.toNebulaFeature(data));\n }\n\n render({ nebula }: Record) {\n const defaultColor = [0x0, 0x0, 0x0, 0xff];\n const { objects, updateTrigger } = this.deckCache;\n\n const { zoom } = nebula.props.viewport;\n\n return new TextLayer({\n id: `texts-${this.id}`,\n data: objects,\n opacity: 1,\n fp64: false,\n pickable: false,\n\n // @ts-ignore\n getText: (nf) => nf.style.text,\n // @ts-ignore\n getPosition: (nf) => nf.geoJson.geometry.coordinates,\n // @ts-ignore\n getColor: (nf) => toDeckColor(nf.style.fillColor) || defaultColor,\n\n // TODO: layer should offer option to scale with zoom\n sizeScale: 1 / Math.pow(2, 20 - zoom),\n getSize: PROJECTED_PIXEL_SIZE_MULTIPLIER,\n\n updateTriggers: { all: updateTrigger },\n\n nebulaLayer: this,\n });\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PROJECTED_PIXEL_SIZE_MULTIPLIER = void 0;\n\n/**\n * A multiplier for screen-space width/scale for Arc, Line, Icon and Text layers.\n * Required in order to maintain the same appearance after upgrading to deck.gl v8.5.\n * https://github.com/visgl/deck.gl/blob/master/docs/upgrade-guide.md\n */\nvar PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;\nexports.PROJECTED_PIXEL_SIZE_MULTIPLIER = PROJECTED_PIXEL_SIZE_MULTIPLIER;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbIlBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7Ozs7QUFLTyxJQUFNQSwrQkFBK0IsR0FBRyxJQUFJLENBQTVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIG11bHRpcGxpZXIgZm9yIHNjcmVlbi1zcGFjZSB3aWR0aC9zY2FsZSBmb3IgQXJjLCBMaW5lLCBJY29uIGFuZCBUZXh0IGxheWVycy5cbiAqIFJlcXVpcmVkIGluIG9yZGVyIHRvIG1haW50YWluIHRoZSBzYW1lIGFwcGVhcmFuY2UgYWZ0ZXIgdXBncmFkaW5nIHRvIGRlY2suZ2wgdjguNS5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS92aXNnbC9kZWNrLmdsL2Jsb2IvbWFzdGVyL2RvY3MvdXBncmFkZS1ndWlkZS5tZFxuICovXG5leHBvcnQgY29uc3QgUFJPSkVDVEVEX1BJWEVMX1NJWkVfTVVMVElQTElFUiA9IDIgLyAzO1xuIl19","/**\n * A multiplier for screen-space width/scale for Arc, Line, Icon and Text layers.\n * Required in order to maintain the same appearance after upgrading to deck.gl v8.5.\n * https://github.com/visgl/deck.gl/blob/master/docs/upgrade-guide.md\n */\nexport const PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _layers = require(\"@nebula.gl/layers\");\n\nvar _constants = _interopRequireDefault(require(\"@luma.gl/constants\"));\n\nvar _style = require(\"../style\");\n\nvar _nebulaLayer = _interopRequireDefault(require(\"../nebula-layer\"));\n\nvar _utils = require(\"../utils\");\n\nvar _deckCache = _interopRequireDefault(require(\"../deck-renderer/deck-cache\"));\n\nvar _NEBULA_TO_DECK_DIREC;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar NEBULA_TO_DECK_DIRECTIONS = (_NEBULA_TO_DECK_DIREC = {}, _defineProperty(_NEBULA_TO_DECK_DIREC, _style.ArrowStyles.NONE, {\n forward: false,\n backward: false\n}), _defineProperty(_NEBULA_TO_DECK_DIREC, _style.ArrowStyles.FORWARD, {\n forward: true,\n backward: false\n}), _defineProperty(_NEBULA_TO_DECK_DIREC, _style.ArrowStyles.BACKWARD, {\n forward: false,\n backward: true\n}), _defineProperty(_NEBULA_TO_DECK_DIREC, _style.ArrowStyles.BOTH, {\n forward: true,\n backward: true\n}), _NEBULA_TO_DECK_DIREC);\n\nvar SegmentsLayer = /*#__PURE__*/function (_NebulaLayer) {\n _inherits(SegmentsLayer, _NebulaLayer);\n\n var _super = _createSuper(SegmentsLayer);\n\n function SegmentsLayer(config) {\n var _this;\n\n _classCallCheck(this, SegmentsLayer);\n\n _this = _super.call(this, config);\n\n _defineProperty(_assertThisInitialized(_this), \"deckCache\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"noBlend\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"highlightColor\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"arrowSize\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"jointRounded\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"capRounded\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"dashed\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"markerLayerProps\", void 0);\n\n _this.deckCache = new _deckCache[\"default\"](config.getData, function (data) {\n return config.toNebulaFeature(data);\n });\n _this.enableSelection = true;\n var _config$enablePicking = config.enablePicking,\n enablePicking = _config$enablePicking === void 0 ? true : _config$enablePicking,\n _config$noBlend = config.noBlend,\n noBlend = _config$noBlend === void 0 ? false : _config$noBlend,\n _config$jointRounded = config.jointRounded,\n jointRounded = _config$jointRounded === void 0 ? true : _config$jointRounded,\n _config$capRounded = config.capRounded,\n capRounded = _config$capRounded === void 0 ? true : _config$capRounded,\n _config$dashed = config.dashed,\n dashed = _config$dashed === void 0 ? false : _config$dashed,\n _config$markerLayerPr = config.markerLayerProps,\n markerLayerProps = _config$markerLayerPr === void 0 ? null : _config$markerLayerPr;\n Object.assign(_assertThisInitialized(_this), {\n enablePicking: enablePicking,\n noBlend: noBlend,\n jointRounded: jointRounded,\n capRounded: capRounded,\n dashed: dashed,\n markerLayerProps: markerLayerProps\n });\n return _this;\n }\n\n _createClass(SegmentsLayer, [{\n key: \"getMouseOverSegment\",\n value: function getMouseOverSegment() {\n // TODO: remove references\n return null;\n }\n }, {\n key: \"_calcMarkerPercentages\",\n value: function _calcMarkerPercentages(nf) {\n var arrowPercentages = nf.style.arrowPercentages;\n\n if (arrowPercentages) {\n return arrowPercentages;\n }\n\n var arrowStyle = nf.style.arrowStyle || _style.DEFAULT_STYLE.arrowStyle;\n if (arrowStyle === _style.ArrowStyles.NONE) return [];\n var arrowCount = Math.min(nf.style.arrowCount || _style.DEFAULT_STYLE.arrowCount, _style.MAX_ARROWS);\n return [[0.5], [0.33, 0.66], [0.25, 0.5, 0.75]][arrowCount - 1];\n }\n }, {\n key: \"_getHighlightedObjectIndex\",\n value: function _getHighlightedObjectIndex(_ref) {\n var nebula = _ref.nebula;\n var deckglMouseOverInfo = nebula.deckglMouseOverInfo;\n\n if (deckglMouseOverInfo) {\n var originalLayer = deckglMouseOverInfo.originalLayer,\n index = deckglMouseOverInfo.index;\n\n if (originalLayer === this) {\n return index;\n }\n } // no object\n\n\n return -1;\n }\n }, {\n key: \"render\",\n value: function render(_ref2) {\n var nebula = _ref2.nebula;\n var defaultColor = [0x0, 0x0, 0x0, 0xff];\n var _this$deckCache = this.deckCache,\n objects = _this$deckCache.objects,\n updateTrigger = _this$deckCache.updateTrigger;\n return new _layers.PathMarkerLayer({\n id: \"segments-\".concat(this.id),\n data: objects,\n opacity: 1,\n fp64: false,\n jointRounded: this.jointRounded,\n capRounded: this.capRounded,\n pickable: true,\n sizeScale: this.arrowSize || 6,\n parameters: {\n depthTest: false,\n blend: !this.noBlend,\n blendEquation: _constants[\"default\"].MAX\n },\n getPath: function getPath(nf) {\n return nf.geoJson.geometry.coordinates;\n },\n getColor: function getColor(nf) {\n return (0, _utils.toDeckColor)(nf.style.lineColor, defaultColor);\n },\n getWidth: function getWidth(nf) {\n return nf.style.lineWidthMeters || 1;\n },\n getZLevel: function getZLevel(nf) {\n return nf.style.zLevel * 255;\n },\n getDirection: function getDirection(nf) {\n return NEBULA_TO_DECK_DIRECTIONS[nf.style.arrowStyle];\n },\n getMarkerColor: function getMarkerColor(nf) {\n return (0, _utils.toDeckColor)(nf.style.arrowColor, defaultColor);\n },\n getMarkerPercentages: this._calcMarkerPercentages,\n updateTriggers: {\n all: updateTrigger\n },\n highlightedObjectIndex: this._getHighlightedObjectIndex({\n nebula: nebula\n }),\n highlightColor: (0, _utils.toDeckColor)(this.highlightColor),\n dashJustified: this.dashed,\n getDashArray: this.dashed ? function (nf) {\n return nf.style.dashArray;\n } : null,\n markerLayerProps: this.markerLayerProps || _layers.PathMarkerLayer.defaultProps.markerLayerProps,\n nebulaLayer: this\n });\n }\n }]);\n\n return SegmentsLayer;\n}(_nebulaLayer[\"default\"]);\n\nexports[\"default\"] = SegmentsLayer;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbGF5ZXJzL3NlZ21lbnRzLWxheWVyLnRzIl0sIm5hbWVzIjpbIk5FQlVMQV9UT19ERUNLX0RJUkVDVElPTlMiLCJBcnJvd1N0eWxlcyIsIk5PTkUiLCJmb3J3YXJkIiwiYmFja3dhcmQiLCJGT1JXQVJEIiwiQkFDS1dBUkQiLCJCT1RIIiwiU2VnbWVudHNMYXllciIsImNvbmZpZyIsImRlY2tDYWNoZSIsIkRlY2tDYWNoZSIsImdldERhdGEiLCJkYXRhIiwidG9OZWJ1bGFGZWF0dXJlIiwiZW5hYmxlU2VsZWN0aW9uIiwiZW5hYmxlUGlja2luZyIsIm5vQmxlbmQiLCJqb2ludFJvdW5kZWQiLCJjYXBSb3VuZGVkIiwiZGFzaGVkIiwibWFya2VyTGF5ZXJQcm9wcyIsIk9iamVjdCIsImFzc2lnbiIsIm5mIiwiYXJyb3dQZXJjZW50YWdlcyIsInN0eWxlIiwiYXJyb3dTdHlsZSIsIkRFRkFVTFRfU1RZTEUiLCJhcnJvd0NvdW50IiwiTWF0aCIsIm1pbiIsIk1BWF9BUlJPV1MiLCJuZWJ1bGEiLCJkZWNrZ2xNb3VzZU92ZXJJbmZvIiwib3JpZ2luYWxMYXllciIsImluZGV4IiwiZGVmYXVsdENvbG9yIiwib2JqZWN0cyIsInVwZGF0ZVRyaWdnZXIiLCJQYXRoTWFya2VyTGF5ZXIiLCJpZCIsIm9wYWNpdHkiLCJmcDY0IiwicGlja2FibGUiLCJzaXplU2NhbGUiLCJhcnJvd1NpemUiLCJwYXJhbWV0ZXJzIiwiZGVwdGhUZXN0IiwiYmxlbmQiLCJibGVuZEVxdWF0aW9uIiwiR0wiLCJNQVgiLCJnZXRQYXRoIiwiZ2VvSnNvbiIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJnZXRDb2xvciIsImxpbmVDb2xvciIsImdldFdpZHRoIiwibGluZVdpZHRoTWV0ZXJzIiwiZ2V0WkxldmVsIiwiekxldmVsIiwiZ2V0RGlyZWN0aW9uIiwiZ2V0TWFya2VyQ29sb3IiLCJhcnJvd0NvbG9yIiwiZ2V0TWFya2VyUGVyY2VudGFnZXMiLCJfY2FsY01hcmtlclBlcmNlbnRhZ2VzIiwidXBkYXRlVHJpZ2dlcnMiLCJhbGwiLCJoaWdobGlnaHRlZE9iamVjdEluZGV4IiwiX2dldEhpZ2hsaWdodGVkT2JqZWN0SW5kZXgiLCJoaWdobGlnaHRDb2xvciIsImRhc2hKdXN0aWZpZWQiLCJnZXREYXNoQXJyYXkiLCJkYXNoQXJyYXkiLCJkZWZhdWx0UHJvcHMiLCJuZWJ1bGFMYXllciIsIk5lYnVsYUxheWVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLHlCQUF5Qix1RUFDNUJDLG1CQUFZQyxJQURnQixFQUNUO0FBQUVDLEVBQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxFQUFBQSxRQUFRLEVBQUU7QUFBNUIsQ0FEUywwQ0FFNUJILG1CQUFZSSxPQUZnQixFQUVOO0FBQUVGLEVBQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCQyxFQUFBQSxRQUFRLEVBQUU7QUFBM0IsQ0FGTSwwQ0FHNUJILG1CQUFZSyxRQUhnQixFQUdMO0FBQUVILEVBQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxFQUFBQSxRQUFRLEVBQUU7QUFBNUIsQ0FISywwQ0FJNUJILG1CQUFZTSxJQUpnQixFQUlUO0FBQUVKLEVBQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCQyxFQUFBQSxRQUFRLEVBQUU7QUFBM0IsQ0FKUyx5QkFBL0I7O0lBT3FCSSxhOzs7OztBQVVuQix5QkFBWUMsTUFBWixFQUF5QztBQUFBOztBQUFBOztBQUN2Qyw4QkFBTUEsTUFBTjs7QUFEdUM7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7O0FBRXZDLFVBQUtDLFNBQUwsR0FBaUIsSUFBSUMscUJBQUosQ0FBY0YsTUFBTSxDQUFDRyxPQUFyQixFQUE4QixVQUFDQyxJQUFEO0FBQUEsYUFBVUosTUFBTSxDQUFDSyxlQUFQLENBQXVCRCxJQUF2QixDQUFWO0FBQUEs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LEtBQUgsQ0FBU3VDLFVBQXJCLEVBQWlDNUIsWUFBakMsQ0FBYjtBQUFBLFNBbkJTO0FBb0J6QjZCLFFBQUFBLG9CQUFvQixFQUFFLEtBQUtDLHNCQXBCRjtBQXFCekJDLFFBQUFBLGNBQWMsRUFBRTtBQUFFQyxVQUFBQSxHQUFHLEVBQUU5QjtBQUFQLFNBckJTO0FBdUJ6QitCLFFBQUFBLHNCQUFzQixFQUFFLEtBQUtDLDBCQUFMLENBQWdDO0FBQUV0QyxVQUFBQSxNQUFNLEVBQU5BO0FBQUYsU0FBaEMsQ0F2QkM7QUF3QnpCdUMsUUFBQUEsY0FBYyxFQUFFLHdCQUFZLEtBQUtBLGNBQWpCLENBeEJTO0FBMEJ6QkMsUUFBQUEsYUFBYSxFQUFFLEtBQUtyRCxNQTFCSztBQTJCekJzRCxRQUFBQSxZQUFZLEVBQUUsS0FBS3RELE1BQUwsR0FBYyxVQUFDSSxFQUFEO0FBQUEsaUJBQVFBLEVBQUUsQ0FBQ0UsS0FBSCxDQUFTaUQsU0FBakI7QUFBQSxTQUFkLEdBQTJDLElBM0JoQztBQTRCekJ0RCxRQUFBQSxnQkFBZ0IsRUFDZCxLQUFLQSxnQkFBTCxJQUNDbUIsdUJBQUQsQ0FBeUNvQyxZQUF6QyxDQUFzRHZELGdCQTlCL0I7QUFnQ3pCd0QsUUFBQUEsV0FBVyxFQUFFO0FBaENZLE9BQXBCLENBQVA7QUFrQ0Q7Ozs7RUFyR3dDQyx1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhdGhNYXJrZXJMYXllciB9IGZyb20gJ0BuZWJ1bGEuZ2wvbGF5ZXJzJztcbmltcG9ydCBHTCBmcm9tICdAbHVtYS5nbC9jb25zdGFudHMnO1xuXG5pbXBvcnQgeyBBcnJvd1N0eWxlcywgREVGQVVMVF9TVFlMRSwgTUFYX0FSUk9XUyB9IGZyb20gJy4uL3N0eWxlJztcbmltcG9ydCBOZWJ1bGFMYXllciBmcm9tICcuLi9uZWJ1bGEtbGF5ZXInO1xuaW1wb3J0IHsgdG9EZWNrQ29sb3IgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgRGVja0NhY2hlIGZyb20gJy4uL2RlY2stcmVuZGVyZXIvZGVjay1jYWNoZSc7XG5cbmNvbnN0IE5FQlVMQV9UT19ERUNLX0RJUkVDVElPTlMgPSB7XG4gIFtBcnJvd1N0eWxlcy5OT05FXTogeyBmb3J3YXJkOiBmYWxzZSwgYmFja3dhcmQ6IGZhbHNlIH0sXG4gIFtBcnJvd1N0eWxlcy5GT1JXQVJEXTogeyBmb3J3YXJkOiB0cnVlLCBiYWNrd2FyZDogZmFsc2UgfSxcbiAgW0Fycm93U3R5bGVzLkJBQ0tXQVJEXTogeyBmb3J3YXJkOiBmYWxzZSwgYmFja3dhcmQ6IHRydWUgfSxcbiAgW0Fycm93U3R5bGVzLkJPVEhdOiB7IGZvcndhcmQ6IHRydWUsIGJhY2t3YXJkOiB0cnVlIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWdtZW50c0xheWVyIGV4dGVuZHMgTmVidWxhTGF5ZXIge1xuICBkZWNrQ2FjaGU6IERlY2tDYWNoZTxhbnksIGFueT47XG4gIG5vQmxlbmQ6IGJvb2xlYW47XG4gIGhpZ2hsaWdodENvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgYXJyb3dTaXplOiBudW1iZXI7XG4gIGpvaW50Um91bmRlZDogYm9vbGVhbjtcbiAgY2FwUm91bmRlZDogYm9vbGVhbjtcbiAgZGFzaGVkOiBib29sZWFuO1xuICBtYXJrZXJMYXllclByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICBzdXBlcihjb25maWcpO1xuICAgIHRoaXMuZGVja0NhY2hlID0gbmV3IERlY2tDYWNoZShjb25maWcuZ2V0RGF0YSwgKGRhdGEpID0+IGNvbmZpZy50b05lYnVsYUZlYXR1cmUoZGF0YSkpO1xuICAgIHRoaXMuZW5hYmxlU2VsZWN0aW9uID0gdHJ1ZTtcbiAgICBjb25zdCB7XG4gICAgICBlbmFibGVQaWNraW5nID0gdHJ1ZSxcbiAgICAgIG5vQmxlbmQgPSBmYWxzZSxcbiAgICAgIGpvaW50Um91bmRlZCA9IHRydWUsXG4gICAgICBjYXBSb3VuZGVkID0gdHJ1ZSxcbiAgICAgIGRhc2hlZCA9IGZhbHNlLFxuICAgICAgbWFya2VyTGF5ZXJQcm9wcyA9IG51bGwsXG4gICAgfSA9IGNvbmZpZztcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIHtcbiAgICAgIGVuYWJsZVBpY2tpbmcsXG4gICAgICBub0JsZW5kLFxuICAgICAgam9pbnRSb3VuZGVkLFxuICAgICAgY2FwUm91bmRlZCxcbiAgICAgIGRhc2hlZCxcbiAgICAgIG1hcmtlckxheWVyUHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICBnZXRNb3VzZU92ZXJTZWdtZW50KCk6IGFueSB7XG4gICAgLy8gVE9ETzogcmVtb3ZlIHJlZmVyZW5jZXNcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIF9jYWxjTWFya2VyUGVyY2VudGFnZXMobmY6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXJbXSB7XG4gICAgY29uc3QgeyBhcnJvd1BlcmNlbnRhZ2VzIH0gPSBuZi5zdHlsZTtcbiAgICBpZiAoYXJyb3dQZXJjZW50YWdlcykge1xuICAgICAgcmV0dXJuIGFycm93UGVyY2VudGFnZXM7XG4gICAgfVxuXG4gICAgY29uc3QgYXJyb3dTdHlsZSA9IG5mLnN0eWxlLmFycm93U3R5bGUgfHwgREVGQVVMVF9TVFlMRS5hcnJvd1N0eWxlO1xuICAgIGlmIChhcnJvd1N0eWxlID09PSBBcnJvd1N0eWxlcy5OT05FKSByZXR1cm4gW107XG5cbiAgICBjb25zdCBhcnJvd0NvdW50ID0gTWF0aC5taW4obmYuc3R5bGUuYXJyb3dDb3VudCB8fCBERUZBVUxUX1NUWUxFLmFycm93Q291bnQsIE1BWF9BUlJPV1MpO1xuICAgIHJldHVybiBbWzAuNV0sIFswLjMzLCAwLjY2XSwgWzAuMjUsIDAuNSwgMC43NV1dW2Fycm93Q291bnQgLSAxXTtcbiAgfVxuXG4gIF9nZXRIaWdobGlnaHRlZE9iamVjdEluZGV4KHsgbmVidWxhIH06IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICAgIGNvbnN0IHsgZGVja2dsTW91c2VPdmVySW5mbyB9ID0gbmVidWxhO1xuICAgIGlmIChkZWNrZ2xNb3VzZU92ZXJJbmZvKSB7XG4gICAgICBjb25zdCB7IG9yaWdpbmFsTGF5ZXIsIGluZGV4IH0gPSBkZWNrZ2xNb3VzZU92ZXJJbmZvO1xuICAgICAgaWYgKG9yaWdpbmFsTGF5ZXIgPT09IHRoaXMpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG5vIG9iamVjdFxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIHJlbmRlcih7IG5lYnVsYSB9OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgY29uc3QgZGVmYXVsdENvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFsweDAsIDB4MCwgMHgwLCAweGZmXTtcbiAgICBjb25zdCB7IG9iamVjdHMsIHVwZGF0ZVRyaWdnZXIgfSA9IHRoaXMuZGVja0NhY2hlO1xuXG4gICAgcmV0dXJuIG5ldyBQYXRoTWFya2VyTGF5ZXIoe1xuICAgICAgaWQ6IGBzZWdtZW50cy0ke3RoaXMuaWR9YCxcbiAgICAgIGRhdGE6IG9iamVjdHMsXG4gICAgICBvcGFjaXR5OiAxLFxuICAgICAgZnA2NDogZmFsc2UsXG4gICAgICBqb2ludFJvdW5kZWQ6IHRoaXMuam9pbnRSb3VuZGVkLFxuICAgICAgY2FwUm91bmRlZDogdGhpcy5jYXBSb3VuZGVkLFxuICAgICAgcGlja2FibGU6IHRydWUsXG4gICAgICBzaXplU2NhbGU6IHRoaXMuYXJyb3dTaXplIHx8IDYsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIGRlcHRoVGVzdDogZmFsc2UsXG4gICAgICAgIGJsZW5kOiAhdGhpcy5ub0JsZW5kLFxuICAgICAgICBibGVuZEVxdWF0aW9uOiBHTC5NQVgsXG4gICAgICB9LFxuICAgICAgZ2V0UGF0aDogKG5mOiBhbnkpID0+IG5mLmdlb0pzb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICBnZXRDb2xvcjogKG5mOiBhbnkpID0+IHRvRGVja0NvbG9yKG5mLnN0eWxlLmxpbmVDb2xvciwgZGVmYXVsdENvbG9yKSxcbiAgICAgIGdldFdpZHRoOiAobmY6IGFueSkgPT4gbmYuc3R5bGUubGluZVdpZHRoTWV0ZXJzIHx8IDEsXG4gICAgICBnZXRaTGV2ZWw6IChuZjogYW55KSA9PiBuZi5zdHlsZS56TGV2ZWwgKiAyNTUsXG4gICAgICBnZXREaXJlY3Rpb246IChuZjogYW55KSA9PiBORUJVTEFfVE9fREVDS19ESVJFQ1RJT05TW25mLnN0eWxlLmFycm93U3R5bGVdLFxuICAgICAgZ2V0TWFya2VyQ29sb3I6IChuZjogYW55KSA9PiB0b0RlY2tDb2xvcihuZi5zdHlsZS5hcnJvd0NvbG9yLCBkZWZhdWx0Q29sb3IpLFxuICAgICAgZ2V0TWFya2VyUGVyY2VudGFnZXM6IHRoaXMuX2NhbGNNYXJrZXJQZXJjZW50YWdlcyxcbiAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7IGFsbDogdXBkYXRlVHJpZ2dlciB9LFxuXG4gICAgICBoaWdobGlnaHRlZE9iamVjdEluZGV4OiB0aGlzLl9nZXRIaWdobGlnaHRlZE9iamVjdEluZGV4KHsgbmVidWxhIH0pLFxuICAgICAgaGlnaGxpZ2h0Q29sb3I6IHRvRGVja0NvbG9yKHRoaXMuaGlnaGxpZ2h0Q29sb3IpLFxuXG4gICAgICBkYXNoSnVzdGlmaWVkOiB0aGlzLmRhc2hlZCxcbiAgICAgIGdldERhc2hBcnJheTogdGhpcy5kYXNoZWQgPyAobmYpID0+IG5mLnN0eWxlLmRhc2hBcnJheSA6IG51bGwsXG4gICAgICBtYXJrZXJMYXllclByb3BzOlxuICAgICAgICB0aGlzLm1hcmtlckxheWVyUHJvcHMgfHxcbiAgICAgICAgKFBhdGhNYXJrZXJMYXllciBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KS5kZWZhdWx0UHJvcHMubWFya2VyTGF5ZXJQcm9wcyxcblxuICAgICAgbmVidWxhTGF5ZXI6IHRoaXMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { PathMarkerLayer } from '@nebula.gl/layers';\nimport GL from '@luma.gl/constants';\n\nimport { ArrowStyles, DEFAULT_STYLE, MAX_ARROWS } from '../style';\nimport NebulaLayer from '../nebula-layer';\nimport { toDeckColor } from '../utils';\nimport DeckCache from '../deck-renderer/deck-cache';\n\nconst NEBULA_TO_DECK_DIRECTIONS = {\n [ArrowStyles.NONE]: { forward: false, backward: false },\n [ArrowStyles.FORWARD]: { forward: true, backward: false },\n [ArrowStyles.BACKWARD]: { forward: false, backward: true },\n [ArrowStyles.BOTH]: { forward: true, backward: true },\n};\n\nexport default class SegmentsLayer extends NebulaLayer {\n deckCache: DeckCache;\n noBlend: boolean;\n highlightColor: [number, number, number, number];\n arrowSize: number;\n jointRounded: boolean;\n capRounded: boolean;\n dashed: boolean;\n markerLayerProps: Record | null | undefined;\n\n constructor(config: Record) {\n super(config);\n this.deckCache = new DeckCache(config.getData, (data) => config.toNebulaFeature(data));\n this.enableSelection = true;\n const {\n enablePicking = true,\n noBlend = false,\n jointRounded = true,\n capRounded = true,\n dashed = false,\n markerLayerProps = null,\n } = config;\n Object.assign(this, {\n enablePicking,\n noBlend,\n jointRounded,\n capRounded,\n dashed,\n markerLayerProps,\n });\n }\n\n getMouseOverSegment(): any {\n // TODO: remove references\n return null;\n }\n\n _calcMarkerPercentages(nf: Record): number[] {\n const { arrowPercentages } = nf.style;\n if (arrowPercentages) {\n return arrowPercentages;\n }\n\n const arrowStyle = nf.style.arrowStyle || DEFAULT_STYLE.arrowStyle;\n if (arrowStyle === ArrowStyles.NONE) return [];\n\n const arrowCount = Math.min(nf.style.arrowCount || DEFAULT_STYLE.arrowCount, MAX_ARROWS);\n return [[0.5], [0.33, 0.66], [0.25, 0.5, 0.75]][arrowCount - 1];\n }\n\n _getHighlightedObjectIndex({ nebula }: Record): number {\n const { deckglMouseOverInfo } = nebula;\n if (deckglMouseOverInfo) {\n const { originalLayer, index } = deckglMouseOverInfo;\n if (originalLayer === this) {\n return index;\n }\n }\n\n // no object\n return -1;\n }\n\n render({ nebula }: Record) {\n const defaultColor: [number, number, number, number] = [0x0, 0x0, 0x0, 0xff];\n const { objects, updateTrigger } = this.deckCache;\n\n return new PathMarkerLayer({\n id: `segments-${this.id}`,\n data: objects,\n opacity: 1,\n fp64: false,\n jointRounded: this.jointRounded,\n capRounded: this.capRounded,\n pickable: true,\n sizeScale: this.arrowSize || 6,\n parameters: {\n depthTest: false,\n blend: !this.noBlend,\n blendEquation: GL.MAX,\n },\n getPath: (nf: any) => nf.geoJson.geometry.coordinates,\n getColor: (nf: any) => toDeckColor(nf.style.lineColor, defaultColor),\n getWidth: (nf: any) => nf.style.lineWidthMeters || 1,\n getZLevel: (nf: any) => nf.style.zLevel * 255,\n getDirection: (nf: any) => NEBULA_TO_DECK_DIRECTIONS[nf.style.arrowStyle],\n getMarkerColor: (nf: any) => toDeckColor(nf.style.arrowColor, defaultColor),\n getMarkerPercentages: this._calcMarkerPercentages,\n updateTriggers: { all: updateTrigger },\n\n highlightedObjectIndex: this._getHighlightedObjectIndex({ nebula }),\n highlightColor: toDeckColor(this.highlightColor),\n\n dashJustified: this.dashed,\n getDashArray: this.dashed ? (nf) => nf.style.dashArray : null,\n markerLayerProps:\n this.markerLayerProps ||\n (PathMarkerLayer as Record).defaultProps.markerLayerProps,\n\n nebulaLayer: this,\n });\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _events = require(\"events\");\n\nvar _document = _interopRequireDefault(require(\"global/document\"));\n\nvar _core = require(\"@deck.gl/core\");\n\nvar _deckDrawer = _interopRequireDefault(require(\"./deck-renderer/deck-drawer\"));\n\nvar _layerMouseEvent = _interopRequireDefault(require(\"./layer-mouse-event\"));\n\nvar _nebulaLayer = _interopRequireDefault(require(\"./nebula-layer\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar LOGGER_PREFIX = 'Nebula: ';\n\nvar Nebula = /*#__PURE__*/function () {\n function Nebula() {\n var _this = this;\n\n _classCallCheck(this, Nebula);\n\n _defineProperty(this, \"props\", void 0);\n\n _defineProperty(this, \"deckgl\", void 0);\n\n _defineProperty(this, \"mainContainer\", void 0);\n\n _defineProperty(this, \"deckglMouseOverInfo\", void 0);\n\n _defineProperty(this, \"_deckDrawer\", void 0);\n\n _defineProperty(this, \"_mouseWasDown\", void 0);\n\n _defineProperty(this, \"wmViewport\", void 0);\n\n _defineProperty(this, \"queryObjectEvents\", new _events.EventEmitter());\n\n _defineProperty(this, \"forceUpdate\", void 0);\n\n _defineProperty(this, \"inited\", void 0);\n\n _defineProperty(this, \"_onMouseEvent\", function (event) {\n if (!_this._isNebulaEvent(event)) {\n return;\n }\n\n if (event.type === 'mousedown') {\n _this._mouseWasDown = true;\n } // offsetX/Y of the MouseEvent provides the offset in the X/Y coordinate\n // of the mouse pointer between that event and the padding edge of the target node.\n // We set our listener to document so we need to adjust offsetX/Y\n // in case the target is not be our WebGL canvas.\n\n\n var _ref = _this.mainContainer ? _this.mainContainer.getBoundingClientRect() : {},\n _ref$top = _ref.top,\n top = _ref$top === void 0 ? 0 : _ref$top,\n _ref$left = _ref.left,\n left = _ref$left === void 0 ? 0 : _ref$left;\n\n var proxyEvent = new Proxy(event, {\n get: function get(original, propertyName) {\n if (propertyName === 'offsetX') {\n return original.pageX - left;\n }\n\n if (propertyName === 'offsetY') {\n return original.pageY - top;\n } // TODO: Properly use pointer events\n\n\n if (propertyName === 'type') {\n return original.type.replace('pointer', 'mouse');\n }\n\n var result = original[propertyName];\n\n if (typeof result === 'function') {\n return result.bind(original);\n }\n\n return result;\n }\n });\n\n _this._handleDeckGLEvent(proxyEvent);\n });\n }\n\n _createClass(Nebula, [{\n key: \"init\",\n value: function init(props) {\n var _this2 = this;\n\n this.props = props;\n this.wmViewport = new _core.WebMercatorViewport(this.props.viewport); // TODO: Properly use pointer events: ['click', 'pointermove', 'pointerup', 'pointerdown']\n\n ['click', 'mousemove', 'mouseup', 'mousedown'].forEach(function (name) {\n return _document[\"default\"].addEventListener(name, _this2._onMouseEvent, true);\n });\n }\n }, {\n key: \"detach\",\n value: function detach() {\n var _this3 = this;\n\n // TODO: Properly use pointer events: ['click', 'pointermove', 'pointerup', 'pointerdown']\n ['click', 'mousemove', 'mouseup', 'mousedown'].forEach(function (name) {\n return _document[\"default\"].removeEventListener(name, _this3._onMouseEvent, true);\n });\n }\n }, {\n key: \"updateProps\",\n value: function updateProps(newProps) {\n this.props = newProps;\n var viewport = this.props.viewport;\n this.wmViewport = new _core.WebMercatorViewport(viewport);\n }\n }, {\n key: \"log\",\n value: function log(message) {\n var logger = this.props.logger;\n\n if (logger && logger.info) {\n logger.info(LOGGER_PREFIX + message);\n }\n }\n }, {\n key: \"updateAllDeckObjects\",\n value: function updateAllDeckObjects() {\n this.getAllLayers().forEach(function (layer) {\n if (layer && layer.deckCache) {\n layer.deckCache.updateAllDeckObjects();\n }\n });\n this.forceUpdate();\n }\n }, {\n key: \"updateDeckObjectsByIds\",\n value: function updateDeckObjectsByIds(ids) {\n this.getAllLayers().forEach(function (layer) {\n if (layer && layer.deckCache) {\n layer.deckCache.updateDeckObjectsByIds(ids);\n }\n });\n this.forceUpdate();\n }\n }, {\n key: \"rerenderLayers\",\n value: function rerenderLayers() {\n this.updateAllDeckObjects();\n }\n }, {\n key: \"_isNebulaEvent\",\n value: function _isNebulaEvent(_ref2) {\n var buttons = _ref2.buttons,\n target = _ref2.target,\n type = _ref2.type;\n var viewport = this.props.viewport; // allow mouseup event aggressively to cancel drag properly\n // TODO: use pointer capture setPointerCapture() to capture mouseup properly after deckgl\n\n if (this._mouseWasDown && type === 'mouseup') {\n this._mouseWasDown = false;\n return true;\n } // allow mousemove event while dragging\n\n\n if (type === 'mousemove' && buttons > 0) {\n return true;\n }\n\n if (!target.getBoundingClientRect) {\n return false;\n }\n\n var rect = target.getBoundingClientRect(); // Only listen to events coming from the basemap\n // identified by the canvas of the same size as viewport.\n // Need to round the rect dimension as some monitors\n // have some sub-pixel difference with viewport.\n\n return Math.round(rect.width) === Math.round(viewport.width) && Math.round(rect.height) === Math.round(viewport.height);\n }\n }, {\n key: \"getMouseGroundPosition\",\n value: function getMouseGroundPosition(event) {\n return this.wmViewport.unproject([event.offsetX, event.offsetY]);\n }\n }, {\n key: \"unprojectMousePosition\",\n value: function unprojectMousePosition(mousePosition) {\n // @ts-ignore\n return this.wmViewport.unproject(mousePosition);\n }\n }, {\n key: \"_handleDeckGLEvent\",\n value: function _handleDeckGLEvent(event) {\n var deckgl = this.deckgl,\n _this$props = this.props,\n onMapMouseEvent = _this$props.onMapMouseEvent,\n selectionType = _this$props.selectionType,\n eventFilter = _this$props.eventFilter;\n var sendMapEvent = true;\n var cursor = 'auto';\n\n if (event && deckgl && selectionType) {\n if (!this._deckDrawer) this._deckDrawer = new _deckDrawer[\"default\"](this);\n var lngLat = this.getMouseGroundPosition(event);\n if (eventFilter && !eventFilter(lngLat, event)) return; // @ts-ignore\n\n var drawerResult = this._deckDrawer.handleEvent(event, lngLat, selectionType);\n\n if (drawerResult.redraw) this.forceUpdate();\n return;\n }\n\n if (event && deckgl && (!event.buttons || event.type !== 'mousemove')) {\n // TODO: sort by mouse priority\n var layerIds = deckgl.props.layers.filter(function (l) {\n return l && l.props && l.props.nebulaLayer && l.props.nebulaLayer.enablePicking;\n }).map(function (l) {\n return l.id;\n });\n var pickingInfo = deckgl.pickObject({\n x: event.offsetX,\n y: event.offsetY,\n radius: 5,\n layerIds: layerIds\n });\n this.queryObjectEvents.emit('pick', {\n event: event,\n pickingInfo: pickingInfo\n });\n\n if (pickingInfo) {\n sendMapEvent = false;\n var index = pickingInfo.index,\n _lngLat = pickingInfo.lngLat;\n if (eventFilter && !eventFilter(_lngLat, event)) return;\n var deckLayer = pickingInfo.layer,\n object = pickingInfo.object;\n\n if (deckLayer && deckLayer.props && deckLayer.props.nebulaLayer && deckLayer.props.nebulaLayer.eventHandler) {\n deckLayer.props.nebulaLayer.eventHandler(event, pickingInfo);\n }\n\n var original = object.original || deckLayer.props.nebulaLayer && deckLayer.props.nebulaLayer.deckCache && deckLayer.props.nebulaLayer.deckCache.originals[index];\n\n if (original) {\n this.deckglMouseOverInfo = {\n originalLayer: deckLayer.props.nebulaLayer,\n index: index\n }; // @ts-ignore\n\n var nebulaMouseEvent = new _layerMouseEvent[\"default\"](event, {\n data: original,\n metadata: object.metadata,\n groundPoint: _lngLat,\n nebula: this\n });\n deckLayer.props.nebulaLayer.emit(event.type, nebulaMouseEvent);\n this.forceUpdate();\n }\n\n cursor = 'pointer';\n }\n }\n\n if (_document[\"default\"].documentElement) {\n _document[\"default\"].documentElement.style.cursor = cursor;\n }\n\n if (sendMapEvent) {\n this.deckglMouseOverInfo = null;\n\n var _lngLat2 = this.getMouseGroundPosition(event);\n\n if (eventFilter && !eventFilter(_lngLat2, event)) return; // send to layers first\n // @ts-ignore\n\n var _nebulaMouseEvent = new _layerMouseEvent[\"default\"](event, {\n groundPoint: _lngLat2,\n nebula: this\n });\n\n this.getAllLayers().filter(function (layer) {\n return layer && layer.usesMapEvents;\n }).forEach(function (layer) {\n return layer.emit('mapMouseEvent', _nebulaMouseEvent);\n });\n this.getAllLayers().filter(function (layer) {\n return layer && layer.props && layer.props.nebulaLayer && layer.props.nebulaLayer.mapMouseEvent;\n }).forEach(function (layer) {\n return layer.props.nebulaLayer.mapMouseEvent(_nebulaMouseEvent, layer);\n });\n\n if (onMapMouseEvent) {\n onMapMouseEvent(event, _lngLat2);\n }\n }\n }\n }, {\n key: \"getExtraDeckLayers\",\n value: function getExtraDeckLayers() {\n var result = [];\n if (this._deckDrawer) result.push.apply(result, _toConsumableArray(this._deckDrawer.render()));\n return result;\n }\n }, {\n key: \"renderDeckLayers\",\n value: function renderDeckLayers() {\n var _this4 = this;\n\n return this.getAllLayers().map(function (layer) {\n return layer instanceof _nebulaLayer[\"default\"] ? layer.render({\n nebula: _this4\n }) : layer;\n }).filter(Boolean);\n }\n }, {\n key: \"getAllLayers\",\n value: function getAllLayers() {\n var result = [];\n this.props.layers.filter(Boolean).forEach(function (layer) {\n result.push(layer); // Only NebulaLayers have helpers, Deck GL layers don't.\n\n if (layer instanceof _nebulaLayer[\"default\"]) {\n result.push.apply(result, _toConsumableArray(layer.helperLayers));\n }\n });\n return result.filter(Boolean);\n }\n }, {\n key: \"getRenderedLayers\",\n value: function getRenderedLayers() {\n return [].concat(_toConsumableArray(this.renderDeckLayers()), _toConsumableArray(this.getExtraDeckLayers()));\n }\n }, {\n key: \"updateAndGetRenderedLayers\",\n value: function updateAndGetRenderedLayers(layers, viewport, container) {\n if (this.inited) {\n this.updateProps({\n layers: layers,\n viewport: viewport\n });\n\n this.forceUpdate = function () {\n return container.forceUpdate();\n };\n } else {\n this.inited = true;\n this.init({\n layers: layers,\n viewport: viewport\n });\n\n this.forceUpdate = function () {\n return container.forceUpdate();\n };\n\n this.updateAllDeckObjects();\n }\n\n return this.getRenderedLayers();\n }\n }, {\n key: \"setDeck\",\n value: function setDeck(deckgl) {\n if (deckgl) {\n this.deckgl = deckgl;\n }\n }\n }, {\n key: \"setMainContainer\",\n value: function setMainContainer(mainContainer) {\n if (mainContainer) {\n this.mainContainer = mainContainer;\n }\n }\n }]);\n\n return Nebula;\n}();\n\nexports[\"default\"] = Nebula;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbmVidWxhLnRzIl0sIm5hbWVzIjpbIkxPR0dFUl9QUkVGSVgiLCJOZWJ1bGEiLCJFdmVudEVtaXR0ZXIiLCJldmVudCIsIl9pc05lYnVsYUV2ZW50IiwidHlwZSIsIl9tb3VzZVdhc0Rvd24iLCJtYWluQ29udGFpbmVyIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidG9wIiwibGVmdCIsInByb3h5RXZlbnQiLCJQcm94eSIsImdldCIsIm9yaWdpbmFsIiwicHJvcGVydHlOYW1lIiwicGFnZVgiLCJwYWdlWSIsInJlcGxhY2UiLCJyZXN1bHQiLCJiaW5kIiwiX2hhbmRsZURlY2tHTEV2ZW50IiwicHJvcHMiLCJ3bVZpZXdwb3J0IiwiV2ViTWVyY2F0b3JWaWV3cG9ydCIsInZpZXdwb3J0IiwiZm9yRWFjaCIsIm5hbWUiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJfb25Nb3VzZUV2ZW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm5ld1Byb3BzIiwibWVzc2FnZSIsImxvZ2dlciIsImluZm8iLCJnZXRBbGxMYXllcnMiLCJsYXllciIsImRlY2tDYWNoZSIsInVwZGF0ZUFsbERlY2tPYmplY3RzIiwiZm9yY2VVcGRhdGUiLCJpZHMiLCJ1cGRhdGVEZWNrT2JqZWN0c0J5SWRzIiwiYnV0dG9ucyIsInRhcmdldCIsInJlY3QiLCJNYXRoIiwicm91bmQiLCJ3aWR0aCIsImhlaWdodCIsInVucHJvamVjdCIsIm9mZnNldFgiLCJvZmZzZXRZIiwibW91c2VQb3NpdGlvbiIsImRlY2tnbCIsIm9uTWFwTW91c2VFdmVudCIsInNlbGVjdGlvblR5cGUiLCJldmVudEZpbHRlciIsInNlbmRNYXBFdmVudCIsImN1cnNvciIsIl9kZWNrRHJhd2VyIiwiRGVja0RyYXdlciIsImxuZ0xhdCIsImdldE1vdXNlR3JvdW5kUG9zaXRpb24iLCJkcmF3ZXJSZXN1bHQiLCJoYW5kbGVFdmVudCIsInJlZHJhdyIsImxheWVySWRzIiwibGF5ZXJzIiwiZmlsdGVyIiwibCIsIm5lYnVsYUxheWVyIiwiZW5hYmxlUGlja2luZyIsIm1hcCIsImlkIiwicGlja2luZ0luZm8iLCJwaWNrT2JqZWN0IiwieCIsInkiLCJyYWRpdXMiLCJxdWVyeU9iamVjdEV2ZW50cyIsImVtaXQiLCJpbmRleCIsImRlY2tMYXllciIsIm9iamVjdCIsImV2ZW50SGFuZGxlciIsIm9yaWdpbmFscyIsImRlY2tnbE1vdXNlT3ZlckluZm8iLCJvcmlnaW5hbExheWVyIiwibmVidWxhTW91c2VFdmVudCIsIkxheWVyTW91c2VFdmVudCIsImRhdGEiLCJtZXRhZGF0YSIsImdyb3VuZFBvaW50IiwibmVidWxhIiwiZG9jdW1lbnRFbGVtZW50Iiwic3R5bGUiLCJ1c2VzTWFwRXZlbnRzIiwibWFwTW91c2VFdmVudCIsInB1c2giLCJyZW5kZXIiLCJOZWJ1bGFMYXllciIsIkJvb2xlYW4iLCJoZWxwZXJMYXllcnMiLCJyZW5kZXJEZWNrTGF5ZXJzIiwiZ2V0RXh0cmFEZWNrTGF5ZXJzIiwiY29udGFpbmVyIiwiaW5pdGVkIiwidXBkYXRlUHJvcHMiLCJpbml0IiwiZ2V0UmVuZGVyZWRMYXllcnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsYUFBYSxHQUFHLFVBQXRCOztJQUVxQkMsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0NBZ0NlLElBQUlDLG9CQUFKLEU7Ozs7OzsyQ0ErRGxCLFVBQUNDLEtBQUQsRUFBOEI7QUFDNUMsVUFBSSxDQUFDLEtBQUksQ0FBQ0MsY0FBTCxDQUFvQkQsS0FBcEIsQ0FBTCxFQUFpQztBQUMvQjtBQUNEOztBQUVELFVBQUlBLEtBQUssQ0FBQ0UsSUFBTixLQUFlLFdBQW5CLEVBQWdDO0FBQzlCLFFBQUEsS0FBSSxDQUFDQyxhQUFMLEdBQXFCLElBQXJCO0FBQ0QsT0FQMkMsQ0FTNUM7QUFDQTtBQUNBO0FBQ0E7OztBQVo0QyxpQkFhZCxLQUFJ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QixLQUFLLENBQUNrRSxZQUFmLEVBQU47QUFDRDtBQUNGLE9BTkQ7QUFRQSxhQUFPcEYsTUFBTSxDQUFDa0QsTUFBUCxDQUFjaUMsT0FBZCxDQUFQO0FBQ0Q7Ozt3Q0FFbUI7QUFDbEIsMENBQVcsS0FBS0UsZ0JBQUwsRUFBWCxzQkFBdUMsS0FBS0Msa0JBQUwsRUFBdkM7QUFDRDs7OytDQUdDckMsTSxFQUNBM0MsUSxFQUNBaUYsUyxFQUNBO0FBQ0EsVUFBSSxLQUFLQyxNQUFULEVBQWlCO0FBQ2YsYUFBS0MsV0FBTCxDQUFpQjtBQUFFeEMsVUFBQUEsTUFBTSxFQUFOQSxNQUFGO0FBQVUzQyxVQUFBQSxRQUFRLEVBQVJBO0FBQVYsU0FBakI7O0FBQ0EsYUFBS2UsV0FBTCxHQUFtQjtBQUFBLGlCQUFNa0UsU0FBUyxDQUFDbEUsV0FBVixFQUFOO0FBQUEsU0FBbkI7QUFDRCxPQUhELE1BR087QUFDTCxhQUFLbUUsTUFBTCxHQUFjLElBQWQ7QUFDQSxhQUFLRSxJQUFMLENBQVU7QUFBRXpDLFVBQUFBLE1BQU0sRUFBTkEsTUFBRjtBQUFVM0MsVUFBQUEsUUFBUSxFQUFSQTtBQUFWLFNBQVY7O0FBQ0EsYUFBS2UsV0FBTCxHQUFtQjtBQUFBLGlCQUFNa0UsU0FBUyxDQUFDbEUsV0FBVixFQUFOO0FBQUEsU0FBbkI7O0FBQ0EsYUFBS0Qsb0JBQUw7QUFDRDs7QUFFRCxhQUFPLEtBQUt1RSxpQkFBTCxFQUFQO0FBQ0Q7Ozs0QkFFT3hELE0sRUFBb0M7QUFDMUMsVUFBSUEsTUFBSixFQUFZO0FBQ1YsYUFBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0Q7QUFDRjs7O3FDQUVnQi9DLGEsRUFBMkM7QUFDMUQsVUFBSUEsYUFBSixFQUFtQjtBQUNqQixhQUFLQSxhQUFMLEdBQXFCQSxhQUFyQjtBQUNEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xuXG5pbXBvcnQgZG9jdW1lbnQgZnJvbSAnZ2xvYmFsL2RvY3VtZW50JztcbmltcG9ydCB3aW5kb3cgZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQgeyBXZWJNZXJjYXRvclZpZXdwb3J0IH0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5cbmltcG9ydCBEZWNrRHJhd2VyIGZyb20gJy4vZGVjay1yZW5kZXJlci9kZWNrLWRyYXdlcic7XG5pbXBvcnQgTGF5ZXJNb3VzZUV2ZW50IGZyb20gJy4vbGF5ZXItbW91c2UtZXZlbnQnO1xuaW1wb3J0IE5lYnVsYUxheWVyIGZyb20gJy4vbmVidWxhLWxheWVyJztcblxuY29uc3QgTE9HR0VSX1BSRUZJWCA9ICdOZWJ1bGE6ICc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5lYnVsYSB7XG4gIGluaXQocHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgdGhpcy53bVZpZXdwb3J0ID0gbmV3IFdlYk1lcmNhdG9yVmlld3BvcnQodGhpcy5wcm9wcy52aWV3cG9ydCk7XG5cbiAgICAvLyBUT0RPOiBQcm9wZXJseSB1c2UgcG9pbnRlciBldmVudHM6IFsnY2xpY2snLCAncG9pbnRlcm1vdmUnLCAncG9pbnRlcnVwJywgJ3BvaW50ZXJkb3duJ11cbiAgICBbJ2NsaWNrJywgJ21vdXNlbW92ZScsICdtb3VzZXVwJywgJ21vdXNlZG93biddLmZvckVhY2goKG5hbWUpID0+XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKG5hbWUsIHRoaXMuX29uTW91c2VFdmVudCwgdHJ1ZSlcbiAgICApO1xuICB9XG5cbiAgZGV0YWNoKCkge1xuICAgIC8vIFRPRE86IFByb3Blcmx5IHVzZSBwb2ludGVyIGV2ZW50czogWydjbGljaycsICdwb2ludGVybW92ZScsICdwb2ludGVydXAnLCAncG9pbnRlcmRvd24nXVxuICAgIFsnY2xpY2snLCAnbW91c2Vtb3ZlJywgJ21vdXNldXAnLCAnbW91c2Vkb3duJ10uZm9yRWFjaCgobmFtZSkgPT5cbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgdGhpcy5fb25Nb3VzZUV2ZW50LCB0cnVlKVxuICAgICk7XG4gIH1cblxuICB1cGRhdGVQcm9wcyhuZXdQcm9wczogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHRoaXMucHJvcHMgPSBuZXdQcm9wcztcbiAgICBjb25zdCB7IHZpZXdwb3J0IH0gPSB0aGlzLnByb3BzO1xuXG4gICAgdGhpcy53bVZpZXdwb3J0ID0gbmV3IFdlYk1lcmNhdG9yVmlld3BvcnQodmlld3BvcnQpO1xuICB9XG5cbiAgcHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGRlY2tnbDogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGw7XG4gIG1haW5Db250YWluZXI6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsO1xuICBkZWNrZ2xNb3VzZU92ZXJJbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX2RlY2tEcmF3ZXI6IERlY2tEcmF3ZXI7XG4gIF9tb3VzZVdhc0Rvd246IGJvb2xlYW47XG4gIHdtVmlld3BvcnQ6IFdlYk1lcmNhdG9yVmlld3BvcnQ7XG4gIHF1ZXJ5T2JqZWN0RXZlbnRzOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIGZvcmNlVXBkYXRlOiBGdW5jdGlvbjtcbiAgaW5pdGVkOiBib29sZWFuO1xuXG4gIGxvZyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IGxvZ2dlciB9ID0gdGhpcy5wcm9wcztcbiAgICBpZiAobG9nZ2VyICYmIGxvZ2dlci5pbmZvKSB7XG4gICAgICBsb2dnZXIuaW5mbyhMT0dHRVJfUFJFRklYICsgbWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQWxsRGVja09iamVjdHMoKSB7XG4gICAgdGhpcy5nZXRBbGxMYXllcnMoKS5mb3JFYWNoKChsYXllcikgPT4ge1xuICAgICAgaWYgKGxheWVyICYmIGxheWVyLmRlY2tDYWNoZSkge1xuICAgICAgICAobGF5ZXIuZGVja0NhY2hlIGFzIGFueSkudXBkYXRlQWxsRGVja09iamVjdHMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gIH1cblxuICB1cGRhdGVEZWNrT2JqZWN0c0J5SWRzKGlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmdldEFsbExheWVycygpLmZvckVhY2goKGxheWVyKSA9PiB7XG4gICAgICBpZiAobGF5ZXIgJiYgbGF5ZXIuZGVja0NhY2hlKSB7XG4gICAgICAgIChsYXllci5kZWNrQ2FjaGUgYXMgYW55KS51cGRhdGVEZWNrT2JqZWN0c0J5SWRzKGlkcyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICB9XG5cbiAgcmVyZW5kZXJMYXllcnMoKSB7XG4gICAgdGhpcy51cGRhdGVBbGxEZWNrT2JqZWN0cygpO1xuICB9XG5cbiAgX2lzTmVidWxhRXZlbnQoeyBidXR0b25zLCB0YXJnZXQsIHR5cGUgfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGNvbnN0IHsgdmlld3BvcnQgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAvLyBhbGxvdyBtb3VzZXVwIGV2ZW50IGFnZ3Jlc3NpdmVseSB0byBjYW5jZWwgZHJhZyBwcm9wZXJseVxuICAgIC8vIFRPRE86IHVzZSBwb2ludGVyIGNhcHR1cmUgc2V0UG9pbnRlckNhcHR1cmUoKSB0byBjYXB0dXJlIG1vdXNldXAgcHJvcGVybHkgYWZ0ZXIgZGVja2dsXG4gICAgaWYgKHRoaXMuX21vdXNlV2FzRG93biAmJiB0eXBlID09PSAnbW91c2V1cCcpIHtcbiAgICAgIHRoaXMuX21vdXNlV2FzRG93biA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gYWxsb3cgbW91c2Vtb3ZlIGV2ZW50IHdoaWxlIGRyYWdnaW5nXG4gICAgaWYgKHR5cGUgPT09ICdtb3VzZW1vdmUnICYmIGJ1dHRvbnMgPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCByZWN0ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIC8vIE9ubHkgbGlzdGVuIHRvIGV2ZW50cyBjb21pbmcgZnJvbSB0aGUgYmFzZW1hcFxuICAgIC8vIGlkZW50aWZpZWQgYnkgdGhlIGNhbnZhcyBvZiB0aGUgc2FtZSBzaXplIGFzIHZpZXdwb3J0LlxuICAgIC8vIE5lZWQgdG8gcm91bmQgdGhlIHJlY3QgZGltZW5zaW9uIGFzIHNvbWUgbW9uaXRvcnNcbiAgICAvLyBoYXZlIHNvbWUgc3ViLXBpeGVsIGRpZmZlcmVuY2Ugd2l0aCB2aWV3cG9ydC5cbiAgICByZXR1cm4gKFxuICAgICAgTWF0aC5yb3VuZChyZWN0LndpZHRoKSA9PT0gTWF0aC5yb3VuZCh2aWV3cG9ydC53aWR0aCkgJiZcbiAgICAgIE1hdGgucm91bmQocmVjdC5oZWlnaHQpID09PSBNYXRoLnJvdW5kKHZpZXdwb3J0LmhlaWdodClcbiAgICApO1xuICB9XG5cbiAgX29uTW91c2VFdmVudCA9IChldmVudDogd2luZG93Lk1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoIXRoaXMuX2lzTmVidWxhRXZlbnQoZXZlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdtb3VzZWRvd24nKSB7XG4gICAgICB0aGlzLl9tb3VzZVdhc0Rvd24gPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIG9mZnNldFgvWSBvZiB0aGUgTW91c2VFdmVudCBwcm92aWRlcyB0aGUgb2Zmc2V0IGluIHRoZSBYL1kgY29vcmRpbmF0ZVxuICAgIC8vIG9mIHRoZSBtb3VzZSBwb2ludGVyIGJldHdlZW4gdGhhdCBldmVudCBhbmQgdGhlIHBhZGRpbmcgZWRnZSBvZiB0aGUgdGFyZ2V0IG5vZGUuXG4gICAgLy8gV2Ugc2V0IG91ciBsaXN0ZW5lciB0byBkb2N1bWVudCBzbyB3ZSBuZWVkIHRvIGFkanVzdCBvZmZzZXRYL1lcbiAgICAvLyBpbiBjYXNlIHRoZSB0YXJnZXQgaXMgbm90IGJlIG91ciBXZWJHTCBjYW52YXMuXG4gICAgY29uc3QgeyB0b3AgPSAwLCBsZWZ0ID0gMCB9ID0gdGhpcy5tYWluQ29udGFpbmVyXG4gICAgICA/IHRoaXMubWFpbkNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgOiB7fTtcbiAgICBjb25zdCBwcm94eUV2ZW50ID0gbmV3IFByb3h5KGV2ZW50LCB7XG4gICAgICBnZXQ6IChvcmlnaW5hbDogYW55LCBwcm9wZXJ0eU5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAocHJvcGVydHlOYW1lID09PSAnb2Zmc2V0WCcpIHtcbiAgICAgICAgICByZXR1cm4gb3JpZ2luYWwucGFnZVggLSBsZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PT0gJ29mZnNldFknKSB7XG4gICAgICAgICAgcmV0dXJuIG9yaWdpbmFsLnBhZ2VZIC0gdG9wO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVE9ETzogUHJvcGVybHkgdXNlIHBvaW50ZXIgZXZlbnRzXG4gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT09ICd0eXBlJykge1xuICAgICAgICAgIHJldHVybiBvcmlnaW5hbC50eXBlLnJlcGxhY2UoJ3BvaW50ZXInLCAnbW91c2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG9yaWdpbmFsW3Byb3BlcnR5TmFtZV07XG4gICAgICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5iaW5kKG9yaWdpbmFsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuX2hhbmRsZURlY2tHTEV2ZW50KHByb3h5RXZlbnQpO1xuICB9O1xuXG4gIGdldE1vdXNlR3JvdW5kUG9zaXRpb24oZXZlbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICByZXR1cm4gdGhpcy53bVZpZXdwb3J0LnVucHJvamVjdChbZXZlbnQub2Zmc2V0WCwgZXZlbnQub2Zmc2V0WV0pO1xuICB9XG5cbiAgdW5wcm9qZWN0TW91c2VQb3NpdGlvbihtb3VzZVBvc2l0aW9uOiBbbnVtYmVyLCBudW1iZXJdKTogW251bWJlciwgbnVtYmVyXSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiB0aGlzLndtVmlld3BvcnQudW5wcm9qZWN0KG1vdXNlUG9zaXRpb24pO1xuICB9XG5cbiAgX2hhbmRsZURlY2tHTEV2ZW50KGV2ZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgY29uc3Qge1xuICAgICAgZGVja2dsLFxuICAgICAgcHJvcHM6IHsgb25NYXBNb3VzZUV2ZW50LCBzZWxlY3Rpb25UeXBlLCBldmVudEZpbHRlciB9LFxuICAgIH0gPSB0aGlzO1xuICAgIGxldCBzZW5kTWFwRXZlbnQgPSB0cnVlO1xuICAgIGxldCBjdXJzb3IgPSAnYXV0byc7XG5cbiAgICBpZiAoZXZlbnQgJiYgZGVja2dsICYmIHNlbGVjdGlvblR5cGUpIHtcbiAgICAgIGlmICghdGhpcy5fZGVja0RyYXdlcikgdGhpcy5fZGVja0RyYXdlciA9IG5ldyBEZWNrRHJhd2VyKHRoaXMpO1xuXG4gICAgICBjb25zdCBsbmdMYXQgPSB0aGlzLmdldE1vdXNlR3JvdW5kUG9zaXRpb24oZXZlbnQpO1xuICAgICAgaWYgKGV2ZW50RmlsdGVyICYmICFldmVudEZpbHRlcihsbmdMYXQsIGV2ZW50KSkgcmV0dXJuO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgZHJhd2VyUmVzdWx0ID0gdGhpcy5fZGVja0RyYXdlci5oYW5kbGVFdmVudChldmVudCwgbG5nTGF0LCBzZWxlY3Rpb25UeXBlKTtcbiAgICAgIGlmIChkcmF3ZXJSZXN1bHQucmVkcmF3KSB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50ICYmIGRlY2tnbCAmJiAoIWV2ZW50LmJ1dHRvbnMgfHwgZXZlbnQudHlwZSAhPT0gJ21vdXNlbW92ZScpKSB7XG4gICAgICAvLyBUT0RPOiBzb3J0IGJ5IG1vdXNlIHByaW9yaXR5XG4gICAgICBjb25zdCBsYXllcklkcyA9IGRlY2tnbC5wcm9wcy5sYXllcnNcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAobDogYW55KSA9PiBsICYmIGwucHJvcHMgJiYgbC5wcm9wcy5uZWJ1bGFMYXllciAmJiBsLnByb3BzLm5lYnVsYUxheWVyLmVuYWJsZVBpY2tpbmdcbiAgICAgICAgKVxuICAgICAgICAubWFwKChsOiBhbnkpID0+IGwuaWQpO1xuXG4gICAgICBjb25zdCBwaWNraW5nSW5mbyA9IGRlY2tnbC5waWNrT2JqZWN0KHtcbiAgICAgICAgeDogZXZlbnQub2Zmc2V0WCxcbiAgICAgICAgeTogZXZlbnQub2Zmc2V0WSxcbiAgICAgICAgcmFkaXVzOiA1LFxuICAgICAgICBsYXllcklkcyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5xdWVyeU9iamVjdEV2ZW50cy5lbWl0KCdwaWNrJywgeyBldmVudCwgcGlja2luZ0luZm8gfSk7XG4gICAgICBpZiAocGlja2luZ0luZm8pIHtcbiAgICAgICAgc2VuZE1hcEV2ZW50ID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgeyBpbmRleCwgbG5nTGF0IH0gPSBwaWNraW5nSW5mbztcbiAgICAgICAgaWYgKGV2ZW50RmlsdGVyICYmICFldmVudEZpbHRlcihsbmdMYXQsIGV2ZW50KSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHsgbGF5ZXI6IGRlY2tMYXllciwgb2JqZWN0IH0gPSBwaWNraW5nSW5mbztcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgZGVja0xheWVyICYmXG4gICAgICAgICAgZGVja0xheWVyLnByb3BzICYmXG4gICAgICAgICAgZGVja0xheWVyLnByb3BzLm5lYnVsYUxheWVyICYmXG4gICAgICAgICAgZGVja0xheWVyLnByb3BzLm5lYnVsYUxheWVyLmV2ZW50SGFuZGxlclxuICAgICAgICApIHtcbiAgICAgICAgICBkZWNrTGF5ZXIucHJvcHMubmVidWxhTGF5ZXIuZXZlbnRIYW5kbGVyKGV2ZW50LCBwaWNraW5nSW5mbyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcmlnaW5hbCA9XG4gICAgICAgICAgb2JqZWN0Lm9yaWdpbmFsIHx8XG4gICAgICAgICAgKGRlY2tMYXllci5wcm9wcy5uZWJ1bGFMYXllciAmJlxuICAgICAgICAgICAgZGVja0xheWVyLnByb3BzLm5lYnVsYUxheWVyLmRlY2tDYWNoZSAmJlxuICAgICAgICAgICAgZGVja0xheWVyLnByb3BzLm5lYnVsYUxheWVyLmRlY2tDYWNoZS5vcmlnaW5hbHNbaW5kZXhdKTtcblxuICAgICAgICBpZiAob3JpZ2luYWwpIHtcbiAgICAgICAgICB0aGlzLmRlY2tnbE1vdXNlT3ZlckluZm8gPSB7IG9yaWdpbmFsTGF5ZXI6IGRlY2tMYXllci5wcm9wcy5uZWJ1bGFMYXllciwgaW5kZXggfTtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgY29uc3QgbmVidWxhTW91c2VFdmVudCA9IG5ldyBMYXllck1vdXNlRXZlbnQoZXZlbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IG9yaWdpbmFsLFxuICAgICAgICAgICAgbWV0YWRhdGE6IG9iamVjdC5tZXRhZGF0YSxcbiAgICAgICAgICAgIGdyb3VuZFBvaW50OiBsbmdMYXQsXG4gICAgICAgICAgICBuZWJ1bGE6IHRoaXMsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGVja0xheWVyLnByb3BzLm5lYnVsYUxheWVyLmVtaXQoZXZlbnQudHlwZSwgbmVidWxhTW91c2VFdmVudCk7XG4gICAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY3Vyc29yID0gJ3BvaW50ZXInO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5jdXJzb3IgPSBjdXJzb3I7XG4gICAgfVxuXG4gICAgaWYgKHNlbmRNYXBFdmVudCkge1xuICAgICAgdGhpcy5kZWNrZ2xNb3VzZU92ZXJJbmZvID0gbnVsbDtcblxuICAgICAgY29uc3QgbG5nTGF0ID0gdGhpcy5nZXRNb3VzZUdyb3VuZFBvc2l0aW9uKGV2ZW50KTtcbiAgICAgIGlmIChldmVudEZpbHRlciAmJiAhZXZlbnRGaWx0ZXIobG5nTGF0LCBldmVudCkpIHJldHVybjtcblxuICAgICAgLy8gc2VuZCB0byBsYXllcnMgZmlyc3RcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IG5lYnVsYU1vdXNlRXZlbnQgPSBuZXcgTGF5ZXJNb3VzZUV2ZW50KGV2ZW50LCB7XG4gICAgICAgIGdyb3VuZFBvaW50OiBsbmdMYXQsXG4gICAgICAgIG5lYnVsYTogdGhpcyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5nZXRBbGxMYXllcnMoKVxuICAgICAgICAuZmlsdGVyKChsYXllcikgPT4gbGF5ZXIgJiYgbGF5ZXIudXNlc01hcEV2ZW50cylcbiAgICAgICAgLmZvckVhY2goKGxheWVyKSA9PiBsYXllci5lbWl0KCdtYXBNb3VzZUV2ZW50JywgbmVidWxhTW91c2VFdmVudCkpO1xuXG4gICAgICB0aGlzLmdldEFsbExheWVycygpXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKGxheWVyKSA9PlxuICAgICAgICAgICAgbGF5ZXIgJiYgbGF5ZXIucHJvcHMgJiYgbGF5ZXIucHJvcHMubmVidWxhTGF5ZXIgJiYgbGF5ZXIucHJvcHMubmVidWxhTGF5ZXIubWFwTW91c2VFdmVudFxuICAgICAgICApXG4gICAgICAgIC5mb3JFYWNoKChsYXllcikgPT4gbGF5ZXIucHJvcHMubmVidWxhTGF5ZXIubWFwTW91c2VFdmVudChuZWJ1bGFNb3VzZUV2ZW50LCBsYXllcikpO1xuXG4gICAgICBpZiAob25NYXBNb3VzZUV2ZW50KSB7XG4gICAgICAgIG9uTWFwTW91c2VFdmVudChldmVudCwgbG5nTGF0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRFeHRyYURlY2tMYXllcnMoKTogUmVjb3JkPHN0cmluZywgYW55PltdIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgIGlmICh0aGlzLl9kZWNrRHJhd2VyKSByZXN1bHQucHVzaCguLi50aGlzLl9kZWNrRHJhd2VyLnJlbmRlcigpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZW5kZXJEZWNrTGF5ZXJzKCkge1xuICAgIHJldHVybiB0aGlzLmdldEFsbExheWVycygpXG4gICAgICAubWFwKChsYXllcikgPT4gKGxheWVyIGluc3RhbmNlb2YgTmVidWxhTGF5ZXIgPyBsYXllci5yZW5kZXIoeyBuZWJ1bGE6IHRoaXMgfSkgOiBsYXllcikpXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgZ2V0QWxsTGF5ZXJzKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gICAgdGhpcy5wcm9wcy5sYXllcnMuZmlsdGVyKEJvb2xlYW4pLmZvckVhY2goKGxheWVyKSA9PiB7XG4gICAgICByZXN1bHQucHVzaChsYXllcik7XG4gICAgICAvLyBPbmx5IE5lYnVsYUxheWVycyBoYXZlIGhlbHBlcnMsIERlY2sgR0wgbGF5ZXJzIGRvbid0LlxuICAgICAgaWYgKGxheWVyIGluc3RhbmNlb2YgTmVidWxhTGF5ZXIpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4ubGF5ZXIuaGVscGVyTGF5ZXJzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgZ2V0UmVuZGVyZWRMYXllcnMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnJlbmRlckRlY2tMYXllcnMoKSwgLi4udGhpcy5nZXRFeHRyYURlY2tMYXllcnMoKV07XG4gIH1cblxuICB1cGRhdGVBbmRHZXRSZW5kZXJlZExheWVycyhcbiAgICBsYXllcnM6IFJlY29yZDxzdHJpbmcsIGFueT5bXSxcbiAgICB2aWV3cG9ydDogV2ViTWVyY2F0b3JWaWV3cG9ydCxcbiAgICBjb250YWluZXI6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKSB7XG4gICAgaWYgKHRoaXMuaW5pdGVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVByb3BzKHsgbGF5ZXJzLCB2aWV3cG9ydCB9KTtcbiAgICAgIHRoaXMuZm9yY2VVcGRhdGUgPSAoKSA9PiBjb250YWluZXIuZm9yY2VVcGRhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5pbml0KHsgbGF5ZXJzLCB2aWV3cG9ydCB9KTtcbiAgICAgIHRoaXMuZm9yY2VVcGRhdGUgPSAoKSA9PiBjb250YWluZXIuZm9yY2VVcGRhdGUoKTtcbiAgICAgIHRoaXMudXBkYXRlQWxsRGVja09iamVjdHMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRSZW5kZXJlZExheWVycygpO1xuICB9XG5cbiAgc2V0RGVjayhkZWNrZ2w6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsKSB7XG4gICAgaWYgKGRlY2tnbCkge1xuICAgICAgdGhpcy5kZWNrZ2wgPSBkZWNrZ2w7XG4gICAgfVxuICB9XG5cbiAgc2V0TWFpbkNvbnRhaW5lcihtYWluQ29udGFpbmVyOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCkge1xuICAgIGlmIChtYWluQ29udGFpbmVyKSB7XG4gICAgICB0aGlzLm1haW5Db250YWluZXIgPSBtYWluQ29udGFpbmVyO1xuICAgIH1cbiAgfVxufVxuIl19","import { EventEmitter } from 'events';\n\nimport document from 'global/document';\nimport window from 'global/window';\nimport { WebMercatorViewport } from '@deck.gl/core';\n\nimport DeckDrawer from './deck-renderer/deck-drawer';\nimport LayerMouseEvent from './layer-mouse-event';\nimport NebulaLayer from './nebula-layer';\n\nconst LOGGER_PREFIX = 'Nebula: ';\n\nexport default class Nebula {\n init(props: Record) {\n this.props = props;\n this.wmViewport = new WebMercatorViewport(this.props.viewport);\n\n // TODO: Properly use pointer events: ['click', 'pointermove', 'pointerup', 'pointerdown']\n ['click', 'mousemove', 'mouseup', 'mousedown'].forEach((name) =>\n document.addEventListener(name, this._onMouseEvent, true)\n );\n }\n\n detach() {\n // TODO: Properly use pointer events: ['click', 'pointermove', 'pointerup', 'pointerdown']\n ['click', 'mousemove', 'mouseup', 'mousedown'].forEach((name) =>\n document.removeEventListener(name, this._onMouseEvent, true)\n );\n }\n\n updateProps(newProps: Record) {\n this.props = newProps;\n const { viewport } = this.props;\n\n this.wmViewport = new WebMercatorViewport(viewport);\n }\n\n props: Record;\n deckgl: Record | null;\n mainContainer: Record | null;\n deckglMouseOverInfo: Record | null | undefined;\n _deckDrawer: DeckDrawer;\n _mouseWasDown: boolean;\n wmViewport: WebMercatorViewport;\n queryObjectEvents: EventEmitter = new EventEmitter();\n forceUpdate: Function;\n inited: boolean;\n\n log(message: string) {\n const { logger } = this.props;\n if (logger && logger.info) {\n logger.info(LOGGER_PREFIX + message);\n }\n }\n\n updateAllDeckObjects() {\n this.getAllLayers().forEach((layer) => {\n if (layer && layer.deckCache) {\n (layer.deckCache as any).updateAllDeckObjects();\n }\n });\n this.forceUpdate();\n }\n\n updateDeckObjectsByIds(ids: string[]) {\n this.getAllLayers().forEach((layer) => {\n if (layer && layer.deckCache) {\n (layer.deckCache as any).updateDeckObjectsByIds(ids);\n }\n });\n this.forceUpdate();\n }\n\n rerenderLayers() {\n this.updateAllDeckObjects();\n }\n\n _isNebulaEvent({ buttons, target, type }: Record) {\n const { viewport } = this.props;\n\n // allow mouseup event aggressively to cancel drag properly\n // TODO: use pointer capture setPointerCapture() to capture mouseup properly after deckgl\n if (this._mouseWasDown && type === 'mouseup') {\n this._mouseWasDown = false;\n return true;\n }\n\n // allow mousemove event while dragging\n if (type === 'mousemove' && buttons > 0) {\n return true;\n }\n\n if (!target.getBoundingClientRect) {\n return false;\n }\n\n const rect = target.getBoundingClientRect();\n // Only listen to events coming from the basemap\n // identified by the canvas of the same size as viewport.\n // Need to round the rect dimension as some monitors\n // have some sub-pixel difference with viewport.\n return (\n Math.round(rect.width) === Math.round(viewport.width) &&\n Math.round(rect.height) === Math.round(viewport.height)\n );\n }\n\n _onMouseEvent = (event: window.MouseEvent) => {\n if (!this._isNebulaEvent(event)) {\n return;\n }\n\n if (event.type === 'mousedown') {\n this._mouseWasDown = true;\n }\n\n // offsetX/Y of the MouseEvent provides the offset in the X/Y coordinate\n // of the mouse pointer between that event and the padding edge of the target node.\n // We set our listener to document so we need to adjust offsetX/Y\n // in case the target is not be our WebGL canvas.\n const { top = 0, left = 0 } = this.mainContainer\n ? this.mainContainer.getBoundingClientRect()\n : {};\n const proxyEvent = new Proxy(event, {\n get: (original: any, propertyName: string) => {\n if (propertyName === 'offsetX') {\n return original.pageX - left;\n }\n\n if (propertyName === 'offsetY') {\n return original.pageY - top;\n }\n\n // TODO: Properly use pointer events\n if (propertyName === 'type') {\n return original.type.replace('pointer', 'mouse');\n }\n\n const result = original[propertyName];\n if (typeof result === 'function') {\n return result.bind(original);\n }\n return result;\n },\n });\n\n this._handleDeckGLEvent(proxyEvent);\n };\n\n getMouseGroundPosition(event: Record) {\n return this.wmViewport.unproject([event.offsetX, event.offsetY]);\n }\n\n unprojectMousePosition(mousePosition: [number, number]): [number, number] {\n // @ts-ignore\n return this.wmViewport.unproject(mousePosition);\n }\n\n _handleDeckGLEvent(event: Record) {\n const {\n deckgl,\n props: { onMapMouseEvent, selectionType, eventFilter },\n } = this;\n let sendMapEvent = true;\n let cursor = 'auto';\n\n if (event && deckgl && selectionType) {\n if (!this._deckDrawer) this._deckDrawer = new DeckDrawer(this);\n\n const lngLat = this.getMouseGroundPosition(event);\n if (eventFilter && !eventFilter(lngLat, event)) return;\n // @ts-ignore\n const drawerResult = this._deckDrawer.handleEvent(event, lngLat, selectionType);\n if (drawerResult.redraw) this.forceUpdate();\n return;\n }\n\n if (event && deckgl && (!event.buttons || event.type !== 'mousemove')) {\n // TODO: sort by mouse priority\n const layerIds = deckgl.props.layers\n .filter(\n (l: any) => l && l.props && l.props.nebulaLayer && l.props.nebulaLayer.enablePicking\n )\n .map((l: any) => l.id);\n\n const pickingInfo = deckgl.pickObject({\n x: event.offsetX,\n y: event.offsetY,\n radius: 5,\n layerIds,\n });\n this.queryObjectEvents.emit('pick', { event, pickingInfo });\n if (pickingInfo) {\n sendMapEvent = false;\n\n const { index, lngLat } = pickingInfo;\n if (eventFilter && !eventFilter(lngLat, event)) return;\n\n const { layer: deckLayer, object } = pickingInfo;\n\n if (\n deckLayer &&\n deckLayer.props &&\n deckLayer.props.nebulaLayer &&\n deckLayer.props.nebulaLayer.eventHandler\n ) {\n deckLayer.props.nebulaLayer.eventHandler(event, pickingInfo);\n }\n\n const original =\n object.original ||\n (deckLayer.props.nebulaLayer &&\n deckLayer.props.nebulaLayer.deckCache &&\n deckLayer.props.nebulaLayer.deckCache.originals[index]);\n\n if (original) {\n this.deckglMouseOverInfo = { originalLayer: deckLayer.props.nebulaLayer, index };\n // @ts-ignore\n const nebulaMouseEvent = new LayerMouseEvent(event, {\n data: original,\n metadata: object.metadata,\n groundPoint: lngLat,\n nebula: this,\n });\n deckLayer.props.nebulaLayer.emit(event.type, nebulaMouseEvent);\n this.forceUpdate();\n }\n\n cursor = 'pointer';\n }\n }\n\n if (document.documentElement) {\n document.documentElement.style.cursor = cursor;\n }\n\n if (sendMapEvent) {\n this.deckglMouseOverInfo = null;\n\n const lngLat = this.getMouseGroundPosition(event);\n if (eventFilter && !eventFilter(lngLat, event)) return;\n\n // send to layers first\n // @ts-ignore\n const nebulaMouseEvent = new LayerMouseEvent(event, {\n groundPoint: lngLat,\n nebula: this,\n });\n this.getAllLayers()\n .filter((layer) => layer && layer.usesMapEvents)\n .forEach((layer) => layer.emit('mapMouseEvent', nebulaMouseEvent));\n\n this.getAllLayers()\n .filter(\n (layer) =>\n layer && layer.props && layer.props.nebulaLayer && layer.props.nebulaLayer.mapMouseEvent\n )\n .forEach((layer) => layer.props.nebulaLayer.mapMouseEvent(nebulaMouseEvent, layer));\n\n if (onMapMouseEvent) {\n onMapMouseEvent(event, lngLat);\n }\n }\n }\n\n getExtraDeckLayers(): Record[] {\n const result = [];\n\n if (this._deckDrawer) result.push(...this._deckDrawer.render());\n\n return result;\n }\n\n renderDeckLayers() {\n return this.getAllLayers()\n .map((layer) => (layer instanceof NebulaLayer ? layer.render({ nebula: this }) : layer))\n .filter(Boolean);\n }\n\n getAllLayers() {\n const result = [];\n\n this.props.layers.filter(Boolean).forEach((layer) => {\n result.push(layer);\n // Only NebulaLayers have helpers, Deck GL layers don't.\n if (layer instanceof NebulaLayer) {\n result.push(...layer.helperLayers);\n }\n });\n\n return result.filter(Boolean);\n }\n\n getRenderedLayers() {\n return [...this.renderDeckLayers(), ...this.getExtraDeckLayers()];\n }\n\n updateAndGetRenderedLayers(\n layers: Record[],\n viewport: WebMercatorViewport,\n container: Record\n ) {\n if (this.inited) {\n this.updateProps({ layers, viewport });\n this.forceUpdate = () => container.forceUpdate();\n } else {\n this.inited = true;\n this.init({ layers, viewport });\n this.forceUpdate = () => container.forceUpdate();\n this.updateAllDeckObjects();\n }\n\n return this.getRenderedLayers();\n }\n\n setDeck(deckgl: Record | null) {\n if (deckgl) {\n this.deckgl = deckgl;\n }\n }\n\n setMainContainer(mainContainer: Record | null) {\n if (mainContainer) {\n this.mainContainer = mainContainer;\n }\n }\n}\n","var topLevel = typeof global !== 'undefined' ? global :\n typeof window !== 'undefined' ? window : {}\nvar minDoc = require('min-document');\n\nvar doccy;\n\nif (typeof document !== 'undefined') {\n doccy = document;\n} else {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];\n\n if (!doccy) {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;\n }\n}\n\nmodule.exports = doccy;\n","import { observable, action, computed, reaction, makeObservable } from 'mobx';\nimport { debounce } from 'debounce';\nimport * as colors from '@mui/material/colors';\nimport EditorStore from './EditorStore';\nimport agent from '../lib/agent';\nimport {\n hexToRgb,\n elevateGeometry,\n getElevationFromGeometry\n} from '../lib/utils';\n\nclass FeatureSettingsStore {\n id = null;\n properties = [];\n metadata = [];\n dataset = null;\n layer = null;\n name = null;\n height = 0;\n scale = 1;\n strokeWidth = 1;\n color = [0, 112, 255, 255];\n icon = null;\n layerId = null;\n isLoading = true;\n geometry = null;\n angle = 0;\n bbox = null;\n allColors = Object.entries(colors).reduce(\n (acc, [key, val]) => {\n if (key === 'common') return acc;\n if (key.split(/(?=[A-Z])/).length > 1) return acc;\n\n const label = key.charAt(0).toUpperCase() + key.slice(1);\n const value = val[400];\n const rgb = hexToRgb(value);\n if (rgb) {\n acc.push({\n label,\n value,\n rgb\n });\n }\n\n return acc;\n },\n [\n {\n label: 'Dark Blue (Default)',\n value: '#0070FF',\n rgb: hexToRgb('#0070FF')\n },\n {\n label: 'Orange (CHP)',\n value: '#ff6c00',\n rgb: hexToRgb('#ff6c00')\n },\n {\n label: 'Blue (Fuel Cell)',\n value: '#01A3FF',\n rgb: hexToRgb('#01A3FF')\n },\n {\n label: 'Green (Storage)',\n value: '#05D748',\n rgb: hexToRgb('#05D748')\n },\n {\n label: 'Yellow (Solar)',\n value: '#FFBC00',\n rgb: hexToRgb('#FFBC00')\n }\n ]\n );\n\n loadFeature = async (datasetId, featureId) => {\n this.isLoading = true;\n this.id = null;\n this.strokeWidth = 1;\n this.angle = 0;\n this.scale = 1;\n this.name = null;\n this.dataset = null;\n this.geometry = null;\n this.icon = null;\n this.layer = null;\n this.color = [0, 112, 255, 255];\n this.height = 1;\n this.layerId = null;\n this.layer = null;\n this.bbox = null;\n this.properties = [];\n this.metadata = [];\n\n if (datasetId === null) {\n this.isLoading = false;\n return;\n }\n\n const response = await agent.Dataset.getFeature(datasetId, featureId);\n const feature = response.data?.data;\n if (!feature) {\n console.error(`No Feature Found`);\n return;\n }\n\n this.dataset = feature.dataset;\n this.layer = feature.layer;\n this.bbox = feature.bbox;\n this.name = feature.name;\n this.layer = feature.layer;\n this.icon = feature.icon;\n this.strokeWidth = feature.stroke_width;\n this.angle = feature.angle || 0;\n this.scale = feature.scale || 1;\n\n this.height = feature.height || 0;\n if (feature.color) this.color = feature.color;\n if (EditorStore.currentDataset?.id !== feature.dataset?.id) {\n EditorStore.currentDataset = feature.dataset;\n }\n if (EditorStore.currentLayer?.id !== feature.layer?.id) {\n EditorStore.currentLayer = feature.layer;\n }\n\n this.geometry = feature.geometry;\n\n this.properties = Object.entries(feature.properties).reduce(\n (acc, kv, idx) => {\n const [name, value] = kv;\n const id = `${idx + 1}`;\n acc.push({\n id,\n name,\n value\n });\n return acc;\n },\n []\n );\n\n if (feature.properties.project_id) {\n this.projectId = feature.properties.project_id;\n }\n\n this.id = feature.id;\n this.layerId = feature.layer_id;\n // this.setProperties(properties);\n this.isLoading = false;\n return response.data.data;\n };\n\n constructor() {\n makeObservable(this, {\n id: observable,\n properties: observable,\n metadata: observable,\n dataset: observable,\n layer: observable,\n name: observable,\n height: observable,\n scale: observable,\n strokeWidth: observable,\n angle: observable,\n color: observable,\n icon: observable,\n layerId: observable,\n isLoading: observable,\n geometry: observable,\n bbox: observable,\n loadFeature: action,\n setProperty: action,\n addProperty: action,\n setLayer: action,\n setHeight: action,\n setIcon: action,\n setOpacity: action,\n setStrokeWidth: action,\n setElevation: action,\n setName: action,\n setScale: action,\n setColor: action,\n isBuilding: computed,\n heightInFeet: computed,\n elevationInFeet: computed,\n selectedColor: computed,\n opacityPercentage: computed,\n elevation: computed,\n geoJSON: computed,\n update: action,\n deleteProperty: action,\n setGeometry: action,\n getProperties: action,\n deleteFeature: action,\n getId: action,\n duplicate: action\n });\n }\n\n setProperty(id, field, value) {\n const newProperties = [...this.properties];\n\n const idx = newProperties.findIndex(item => item.id === id);\n if (idx !== -1) {\n if (field === 'name') {\n newProperties[idx].name = value;\n } else if (field === 'value') {\n newProperties[idx].value = value;\n } else {\n newProperties[idx].value = value;\n }\n } else if (['_opacity'].includes(id)) {\n newProperties.push({\n value,\n id,\n name: id\n });\n }\n this.properties = newProperties;\n }\n\n addProperty = () => {\n const row = {\n id: `${this.properties.length + 2}`,\n name: '',\n val: ''\n };\n\n this.properties = [...this.properties, row];\n };\n\n setLayer = async layer => {\n this.layer = layer;\n // update layer immediately since layer feature count depends on it\n await this.update();\n EditorStore.getDatasetFeatures();\n EditorStore.getLayers();\n };\n\n setHeight = value => {\n this.height = value;\n };\n\n setIcon = value => {\n this.icon = value;\n };\n\n setOpacity = value => {\n this.color = [...this.color.slice(0, 3), value];\n };\n\n setStrokeWidth = value => {\n this.strokeWidth = value;\n };\n\n setElevation = value => {\n this.geometry = elevateGeometry(this.geometry, value);\n };\n\n setName = name => {\n this.name = name;\n };\n\n setScale = scale => {\n this.scale = scale;\n };\n\n setColor = value => {\n let rgb = value;\n if (value.startsWith('#')) {\n rgb = hexToRgb(value);\n }\n this.color = [...rgb, this.color[3]];\n };\n\n get isBuilding() {\n return this.id?.startsWith('pb_');\n }\n\n get heightInFeet() {\n return Math.round(this.height * 3.28084);\n }\n\n get elevationInFeet() {\n return Math.round(this.elevation * 3.28084);\n }\n\n get selectedColor() {\n const { color, allColors } = this;\n const item = allColors.find(c => color.slice(0, 3).join() === c.rgb.join());\n return item;\n }\n\n get opacityPercentage() {\n const value = Math.round((this.color[3] / 255) * 100);\n return value;\n }\n\n get elevation() {\n return getElevationFromGeometry(this.geometry);\n }\n\n get geoJSON() {\n const properties = [...this.properties].reduce((acc, prop) => {\n acc[prop.name] = prop.value;\n return acc;\n }, {});\n\n const feature = {\n id: this.id,\n name: this.name,\n height: this.height,\n color: this.color,\n layer_id: this.layer?.id,\n icon: this.icon,\n stroke_width: this.strokeWidth,\n angle: this.angle,\n scale: this.scale,\n geometry: this.geometry,\n properties\n };\n\n return feature;\n }\n\n update = async () => {\n const feature = this.geoJSON;\n\n try {\n const res = await agent.Dataset.updateFeature(this.dataset.id, feature);\n\n if (res.data?.data?.area_in_sq_meters) {\n const area = res.data.data.area_in_sq_meters;\n const areaInSqFeet = (area * 10.76391).toFixed(2);\n\n // const areaInSqMetersIndex = this.metadata.findIndex(\n // item => item.label === 'area in sq meters'\n // );\n const areaInSqFeetIndex = this.metadata.findIndex(\n item => item.label === 'Area'\n );\n\n // if (areaInSqMetersIndex !== -1) {\n // this.metadata[areaInSqMetersIndex].value = area;\n // } else {\n // this.metadata.push({\n // label: 'area in sq meters',\n // value: area\n // });\n // }\n\n if (areaInSqFeetIndex !== -1) {\n this.metadata[areaInSqFeetIndex].value = areaInSqFeet;\n } else {\n this.metadata.push({\n label: 'Area',\n value: `${areaInSqFeet} ft²`\n });\n }\n }\n } catch (error) {\n console.error(error);\n }\n };\n\n deleteProperty = itemId => {\n const newProperties = [...this.properties].filter(\n item => item.id !== itemId\n );\n this.properties = newProperties;\n };\n\n setGeometry = geometry => {\n this.geometry = geometry;\n };\n\n setAngle = angle => {\n this.angle = angle;\n };\n\n getProperties = () => {\n return this.properties.reduce((acc, val) => {\n acc[val.name] = val.value;\n return acc;\n }, {});\n };\n\n deleteFeature = async () => {\n // this.features.delete(featureId);\n // agent.Dataset.deleteFeature(this.dataset.id, this.id);\n await EditorStore.deleteFeature(this.id);\n this.loadFeature(null);\n };\n\n getId = () => {\n return this.id;\n };\n\n duplicate = async () => {\n const feature = this.geoJSON;\n const response = await agent.Dataset.createFeature(this.dataset.id, {\n ...feature,\n id: null\n });\n\n const { id } = response.data.data;\n return id;\n };\n}\n\nconst store = new FeatureSettingsStore();\nconst debouncedUpdate = debounce(store.update, 200);\n\nreaction(\n () =>\n JSON.stringify([\n store.color,\n store.icon,\n store.height,\n store.properties,\n store.strokeWidth,\n store.name,\n store.geometry,\n store.scale,\n store.angle\n ]),\n () => {\n if (store.id && !store.isLoading) debouncedUpdate();\n }\n);\n\nexport default store;\n","export { default as common } from './common';\nexport { default as red } from './red';\nexport { default as pink } from './pink';\nexport { default as purple } from './purple';\nexport { default as deepPurple } from './deepPurple';\nexport { default as indigo } from './indigo';\nexport { default as blue } from './blue';\nexport { default as lightBlue } from './lightBlue';\nexport { default as cyan } from './cyan';\nexport { default as teal } from './teal';\nexport { default as green } from './green';\nexport { default as lightGreen } from './lightGreen';\nexport { default as lime } from './lime';\nexport { default as yellow } from './yellow';\nexport { default as amber } from './amber';\nexport { default as orange } from './orange';\nexport { default as deepOrange } from './deepOrange';\nexport { default as brown } from './brown';\nexport { default as grey } from './grey';\nexport { default as blueGrey } from './blueGrey';","const pink = {\n 50: '#fce4ec',\n 100: '#f8bbd0',\n 200: '#f48fb1',\n 300: '#f06292',\n 400: '#ec407a',\n 500: '#e91e63',\n 600: '#d81b60',\n 700: '#c2185b',\n 800: '#ad1457',\n 900: '#880e4f',\n A100: '#ff80ab',\n A200: '#ff4081',\n A400: '#f50057',\n A700: '#c51162'\n};\nexport default pink;","const deepPurple = {\n 50: '#ede7f6',\n 100: '#d1c4e9',\n 200: '#b39ddb',\n 300: '#9575cd',\n 400: '#7e57c2',\n 500: '#673ab7',\n 600: '#5e35b1',\n 700: '#512da8',\n 800: '#4527a0',\n 900: '#311b92',\n A100: '#b388ff',\n A200: '#7c4dff',\n A400: '#651fff',\n A700: '#6200ea'\n};\nexport default deepPurple;","const indigo = {\n 50: '#e8eaf6',\n 100: '#c5cae9',\n 200: '#9fa8da',\n 300: '#7986cb',\n 400: '#5c6bc0',\n 500: '#3f51b5',\n 600: '#3949ab',\n 700: '#303f9f',\n 800: '#283593',\n 900: '#1a237e',\n A100: '#8c9eff',\n A200: '#536dfe',\n A400: '#3d5afe',\n A700: '#304ffe'\n};\nexport default indigo;","const cyan = {\n 50: '#e0f7fa',\n 100: '#b2ebf2',\n 200: '#80deea',\n 300: '#4dd0e1',\n 400: '#26c6da',\n 500: '#00bcd4',\n 600: '#00acc1',\n 700: '#0097a7',\n 800: '#00838f',\n 900: '#006064',\n A100: '#84ffff',\n A200: '#18ffff',\n A400: '#00e5ff',\n A700: '#00b8d4'\n};\nexport default cyan;","const teal = {\n 50: '#e0f2f1',\n 100: '#b2dfdb',\n 200: '#80cbc4',\n 300: '#4db6ac',\n 400: '#26a69a',\n 500: '#009688',\n 600: '#00897b',\n 700: '#00796b',\n 800: '#00695c',\n 900: '#004d40',\n A100: '#a7ffeb',\n A200: '#64ffda',\n A400: '#1de9b6',\n A700: '#00bfa5'\n};\nexport default teal;","const lightGreen = {\n 50: '#f1f8e9',\n 100: '#dcedc8',\n 200: '#c5e1a5',\n 300: '#aed581',\n 400: '#9ccc65',\n 500: '#8bc34a',\n 600: '#7cb342',\n 700: '#689f38',\n 800: '#558b2f',\n 900: '#33691e',\n A100: '#ccff90',\n A200: '#b2ff59',\n A400: '#76ff03',\n A700: '#64dd17'\n};\nexport default lightGreen;","const lime = {\n 50: '#f9fbe7',\n 100: '#f0f4c3',\n 200: '#e6ee9c',\n 300: '#dce775',\n 400: '#d4e157',\n 500: '#cddc39',\n 600: '#c0ca33',\n 700: '#afb42b',\n 800: '#9e9d24',\n 900: '#827717',\n A100: '#f4ff81',\n A200: '#eeff41',\n A400: '#c6ff00',\n A700: '#aeea00'\n};\nexport default lime;","const yellow = {\n 50: '#fffde7',\n 100: '#fff9c4',\n 200: '#fff59d',\n 300: '#fff176',\n 400: '#ffee58',\n 500: '#ffeb3b',\n 600: '#fdd835',\n 700: '#fbc02d',\n 800: '#f9a825',\n 900: '#f57f17',\n A100: '#ffff8d',\n A200: '#ffff00',\n A400: '#ffea00',\n A700: '#ffd600'\n};\nexport default yellow;","const amber = {\n 50: '#fff8e1',\n 100: '#ffecb3',\n 200: '#ffe082',\n 300: '#ffd54f',\n 400: '#ffca28',\n 500: '#ffc107',\n 600: '#ffb300',\n 700: '#ffa000',\n 800: '#ff8f00',\n 900: '#ff6f00',\n A100: '#ffe57f',\n A200: '#ffd740',\n A400: '#ffc400',\n A700: '#ffab00'\n};\nexport default amber;","const deepOrange = {\n 50: '#fbe9e7',\n 100: '#ffccbc',\n 200: '#ffab91',\n 300: '#ff8a65',\n 400: '#ff7043',\n 500: '#ff5722',\n 600: '#f4511e',\n 700: '#e64a19',\n 800: '#d84315',\n 900: '#bf360c',\n A100: '#ff9e80',\n A200: '#ff6e40',\n A400: '#ff3d00',\n A700: '#dd2c00'\n};\nexport default deepOrange;","const brown = {\n 50: '#efebe9',\n 100: '#d7ccc8',\n 200: '#bcaaa4',\n 300: '#a1887f',\n 400: '#8d6e63',\n 500: '#795548',\n 600: '#6d4c41',\n 700: '#5d4037',\n 800: '#4e342e',\n 900: '#3e2723',\n A100: '#d7ccc8',\n A200: '#bcaaa4',\n A400: '#8d6e63',\n A700: '#5d4037'\n};\nexport default brown;","const blueGrey = {\n 50: '#eceff1',\n 100: '#cfd8dc',\n 200: '#b0bec5',\n 300: '#90a4ae',\n 400: '#78909c',\n 500: '#607d8b',\n 600: '#546e7a',\n 700: '#455a64',\n 800: '#37474f',\n 900: '#263238',\n A100: '#cfd8dc',\n A200: '#b0bec5',\n A400: '#78909c',\n A700: '#455a64'\n};\nexport default blueGrey;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"onEnter\", \"onExited\"],\n _excluded2 = [\"action\", \"anchorOrigin\", \"autoHideDuration\", \"children\", \"className\", \"ClickAwayListenerProps\", \"ContentProps\", \"disableWindowBlurListener\", \"message\", \"onBlur\", \"onClose\", \"onFocus\", \"onMouseEnter\", \"onMouseLeave\", \"open\", \"resumeHideDuration\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport ClickAwayListener from '@mui/base/ClickAwayListener';\nimport styled from '../styles/styled';\nimport useTheme from '../styles/useTheme';\nimport useThemeProps from '../styles/useThemeProps';\nimport useEventCallback from '../utils/useEventCallback';\nimport capitalize from '../utils/capitalize';\nimport Grow from '../Grow';\nimport SnackbarContent from '../SnackbarContent';\nimport { getSnackbarUtilityClass } from './snackbarClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n anchorOrigin\n } = ownerState;\n const slots = {\n root: ['root', `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}`]\n };\n return composeClasses(slots, getSnackbarUtilityClass, classes);\n};\n\nconst SnackbarRoot = styled('div', {\n name: 'MuiSnackbar',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`anchorOrigin${capitalize(ownerState.anchorOrigin.vertical)}${capitalize(ownerState.anchorOrigin.horizontal)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n const center = _extends({}, !ownerState.isRtl && {\n left: '50%',\n right: 'auto',\n transform: 'translateX(-50%)'\n }, ownerState.isRtl && {\n right: '50%',\n left: 'auto',\n transform: 'translateX(50%)'\n });\n\n return _extends({\n zIndex: theme.zIndex.snackbar,\n position: 'fixed',\n display: 'flex',\n left: 8,\n right: 8,\n justifyContent: 'center',\n alignItems: 'center'\n }, ownerState.anchorOrigin.vertical === 'top' ? {\n top: 8\n } : {\n bottom: 8\n }, ownerState.anchorOrigin.horizontal === 'left' && {\n justifyContent: 'flex-start'\n }, ownerState.anchorOrigin.horizontal === 'right' && {\n justifyContent: 'flex-end'\n }, {\n [theme.breakpoints.up('sm')]: _extends({}, ownerState.anchorOrigin.vertical === 'top' ? {\n top: 24\n } : {\n bottom: 24\n }, ownerState.anchorOrigin.horizontal === 'center' && center, ownerState.anchorOrigin.horizontal === 'left' && _extends({}, !ownerState.isRtl && {\n left: 24,\n right: 'auto'\n }, ownerState.isRtl && {\n right: 24,\n left: 'auto'\n }), ownerState.anchorOrigin.horizontal === 'right' && _extends({}, !ownerState.isRtl && {\n right: 24,\n left: 'auto'\n }, ownerState.isRtl && {\n left: 24,\n right: 'auto'\n }))\n });\n});\nconst Snackbar = /*#__PURE__*/React.forwardRef(function Snackbar(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiSnackbar'\n });\n const theme = useTheme();\n const defaultTransitionDuration = {\n enter: theme.transitions.duration.enteringScreen,\n exit: theme.transitions.duration.leavingScreen\n };\n\n const {\n action,\n anchorOrigin: {\n vertical,\n horizontal\n } = {\n vertical: 'bottom',\n horizontal: 'left'\n },\n autoHideDuration = null,\n children,\n className,\n ClickAwayListenerProps,\n ContentProps,\n disableWindowBlurListener = false,\n message,\n onBlur,\n onClose,\n onFocus,\n onMouseEnter,\n onMouseLeave,\n open,\n resumeHideDuration,\n TransitionComponent = Grow,\n transitionDuration = defaultTransitionDuration,\n TransitionProps: {\n onEnter,\n onExited\n } = {}\n } = props,\n TransitionProps = _objectWithoutPropertiesLoose(props.TransitionProps, _excluded),\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n\n const isRtl = theme.direction === 'rtl';\n\n const ownerState = _extends({}, props, {\n anchorOrigin: {\n vertical,\n horizontal\n },\n isRtl\n });\n\n const classes = useUtilityClasses(ownerState);\n const timerAutoHide = React.useRef();\n const [exited, setExited] = React.useState(true);\n const handleClose = useEventCallback((...args) => {\n if (onClose) {\n onClose(...args);\n }\n });\n const setAutoHideTimer = useEventCallback(autoHideDurationParam => {\n if (!onClose || autoHideDurationParam == null) {\n return;\n }\n\n clearTimeout(timerAutoHide.current);\n timerAutoHide.current = setTimeout(() => {\n handleClose(null, 'timeout');\n }, autoHideDurationParam);\n });\n React.useEffect(() => {\n if (open) {\n setAutoHideTimer(autoHideDuration);\n }\n\n return () => {\n clearTimeout(timerAutoHide.current);\n };\n }, [open, autoHideDuration, setAutoHideTimer]); // Pause the timer when the user is interacting with the Snackbar\n // or when the user hide the window.\n\n const handlePause = () => {\n clearTimeout(timerAutoHide.current);\n }; // Restart the timer when the user is no longer interacting with the Snackbar\n // or when the window is shown back.\n\n\n const handleResume = React.useCallback(() => {\n if (autoHideDuration != null) {\n setAutoHideTimer(resumeHideDuration != null ? resumeHideDuration : autoHideDuration * 0.5);\n }\n }, [autoHideDuration, resumeHideDuration, setAutoHideTimer]);\n\n const handleFocus = event => {\n if (onFocus) {\n onFocus(event);\n }\n\n handlePause();\n };\n\n const handleMouseEnter = event => {\n if (onMouseEnter) {\n onMouseEnter(event);\n }\n\n handlePause();\n };\n\n const handleBlur = event => {\n if (onBlur) {\n onBlur(event);\n }\n\n handleResume();\n };\n\n const handleMouseLeave = event => {\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n\n handleResume();\n };\n\n const handleClickAway = event => {\n if (onClose) {\n onClose(event, 'clickaway');\n }\n };\n\n const handleExited = node => {\n setExited(true);\n\n if (onExited) {\n onExited(node);\n }\n };\n\n const handleEnter = (node, isAppearing) => {\n setExited(false);\n\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n };\n\n React.useEffect(() => {\n // TODO: window global should be refactored here\n if (!disableWindowBlurListener && open) {\n window.addEventListener('focus', handleResume);\n window.addEventListener('blur', handlePause);\n return () => {\n window.removeEventListener('focus', handleResume);\n window.removeEventListener('blur', handlePause);\n };\n }\n\n return undefined;\n }, [disableWindowBlurListener, handleResume, open]);\n React.useEffect(() => {\n if (!open) {\n return undefined;\n }\n /**\n * @param {KeyboardEvent} nativeEvent\n */\n\n\n function handleKeyDown(nativeEvent) {\n if (!nativeEvent.defaultPrevented) {\n // IE11, Edge (prior to using Bink?) use 'Esc'\n if (nativeEvent.key === 'Escape' || nativeEvent.key === 'Esc') {\n // not calling `preventDefault` since we don't know if people may ignore this event e.g. a permanently open snackbar\n if (onClose) {\n onClose(nativeEvent, 'escapeKeyDown');\n }\n }\n }\n }\n\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [exited, open, onClose]); // So we only render active snackbars.\n\n if (!open && exited) {\n return null;\n }\n\n return /*#__PURE__*/_jsx(ClickAwayListener, _extends({\n onClickAway: handleClickAway\n }, ClickAwayListenerProps, {\n children: /*#__PURE__*/_jsx(SnackbarRoot, _extends({\n className: clsx(classes.root, className),\n onBlur: handleBlur,\n onFocus: handleFocus,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n ownerState: ownerState,\n ref: ref // ClickAwayListener adds an `onClick` prop which results in the alert not being announced.\n // See https://github.com/mui/material-ui/issues/29080\n ,\n role: \"presentation\"\n }, other, {\n children: /*#__PURE__*/_jsx(TransitionComponent, _extends({\n appear: true,\n in: open,\n timeout: transitionDuration,\n direction: vertical === 'top' ? 'down' : 'up',\n onEnter: handleEnter,\n onExited: handleExited\n }, TransitionProps, {\n children: children || /*#__PURE__*/_jsx(SnackbarContent, _extends({\n message: message,\n action: action\n }, ContentProps))\n }))\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Snackbar.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The action to display. It renders after the message, at the end of the snackbar.\n */\n action: PropTypes.node,\n\n /**\n * The anchor of the `Snackbar`.\n * On smaller screens, the component grows to occupy all the available width,\n * the horizontal alignment is ignored.\n * @default { vertical: 'bottom', horizontal: 'left' }\n */\n anchorOrigin: PropTypes.shape({\n horizontal: PropTypes.oneOf(['center', 'left', 'right']).isRequired,\n vertical: PropTypes.oneOf(['bottom', 'top']).isRequired\n }),\n\n /**\n * The number of milliseconds to wait before automatically calling the\n * `onClose` function. `onClose` should then set the state of the `open`\n * prop to hide the Snackbar. This behavior is disabled by default with\n * the `null` value.\n * @default null\n */\n autoHideDuration: PropTypes.number,\n\n /**\n * Replace the `SnackbarContent` component.\n */\n children: PropTypes.element,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * Props applied to the `ClickAwayListener` element.\n */\n ClickAwayListenerProps: PropTypes.object,\n\n /**\n * Props applied to the [`SnackbarContent`](/api/snackbar-content/) element.\n */\n ContentProps: PropTypes.object,\n\n /**\n * If `true`, the `autoHideDuration` timer will expire even if the window is not focused.\n * @default false\n */\n disableWindowBlurListener: PropTypes.bool,\n\n /**\n * When displaying multiple consecutive Snackbars from a parent rendering a single\n * , add the key prop to ensure independent treatment of each message.\n * e.g. , otherwise, the message may update-in-place and\n * features such as autoHideDuration may be canceled.\n */\n key: () => null,\n\n /**\n * The message to display.\n */\n message: PropTypes.node,\n\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n\n /**\n * Callback fired when the component requests to be closed.\n * Typically `onClose` is used to set state in the parent component,\n * which is used to control the `Snackbar` `open` prop.\n * The `reason` parameter can optionally be used to control the response to `onClose`,\n * for example ignoring `clickaway`.\n *\n * @param {React.SyntheticEvent | Event} event The event source of the callback.\n * @param {string} reason Can be: `\"timeout\"` (`autoHideDuration` expired), `\"clickaway\"`, or `\"escapeKeyDown\"`.\n */\n onClose: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n\n /**\n * @ignore\n */\n onMouseEnter: PropTypes.func,\n\n /**\n * @ignore\n */\n onMouseLeave: PropTypes.func,\n\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool,\n\n /**\n * The number of milliseconds to wait before dismissing after user interaction.\n * If `autoHideDuration` prop isn't specified, it does nothing.\n * If `autoHideDuration` prop is specified but `resumeHideDuration` isn't,\n * we default to `autoHideDuration / 2` ms.\n */\n resumeHideDuration: PropTypes.number,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The component used for the transition.\n * [Follow this guide](/components/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Grow\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n * @default {\n * enter: theme.transitions.duration.enteringScreen,\n * exit: theme.transitions.duration.leavingScreen,\n * }\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })]),\n\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n * @default {}\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default Snackbar;","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","export default function composeClasses(slots, getUtilityClass, classes) {\n const output = {};\n Object.keys(slots).forEach( // `Objet.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n slot => {\n output[slot] = slots[slot].reduce((acc, key) => {\n if (key) {\n if (classes && classes[key]) {\n acc.push(classes[key]);\n }\n\n acc.push(getUtilityClass(key));\n }\n\n return acc;\n }, []).join(' ');\n });\n return output;\n}","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, exactProp, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils'; // TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase : never` once generatePropTypes runs with TS 4.1\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction mapEventPropToEvent(eventProp) {\n return eventProp.substring(2).toLowerCase();\n}\n\nfunction clickedRootScrollbar(event, doc) {\n return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click Away Listener](https://mui.com/components/click-away-listener/)\n * - [Menus](https://mui.com/components/menus/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n const {\n children,\n disableReactTree = false,\n mouseEvent = 'onClick',\n onClickAway,\n touchEvent = 'onTouchEnd'\n } = props;\n const movedRef = React.useRef(false);\n const nodeRef = React.useRef(null);\n const activatedRef = React.useRef(false);\n const syntheticEventRef = React.useRef(false);\n React.useEffect(() => {\n // Ensure that this component is not \"activated\" synchronously.\n // https://github.com/facebook/react/issues/20074\n setTimeout(() => {\n activatedRef.current = true;\n }, 0);\n return () => {\n activatedRef.current = false;\n };\n }, []);\n const handleRef = useForkRef( // @ts-expect-error TODO upstream fix\n children.ref, nodeRef); // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviors like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n\n const handleClickAway = useEventCallback(event => {\n // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n const insideReactTree = syntheticEventRef.current;\n syntheticEventRef.current = false;\n const doc = ownerDocument(nodeRef.current); // 1. IE11 support, which trigger the handleClickAway even after the unbind\n // 2. The child might render null.\n // 3. Behave like a blur listener.\n\n if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n return;\n } // Do not act if user performed touchmove\n\n\n if (movedRef.current) {\n movedRef.current = false;\n return;\n }\n\n let insideDOM; // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n\n if (event.composedPath) {\n insideDOM = event.composedPath().indexOf(nodeRef.current) > -1;\n } else {\n insideDOM = !doc.documentElement.contains( // @ts-expect-error returns `false` as intended when not dispatched from a Node\n event.target) || nodeRef.current.contains( // @ts-expect-error returns `false` as intended when not dispatched from a Node\n event.target);\n }\n\n if (!insideDOM && (disableReactTree || !insideReactTree)) {\n onClickAway(event);\n }\n }); // Keep track of mouse/touch events that bubbled up through the portal.\n\n const createHandleSynthetic = handlerName => event => {\n syntheticEventRef.current = true;\n const childrenPropsHandler = children.props[handlerName];\n\n if (childrenPropsHandler) {\n childrenPropsHandler(event);\n }\n };\n\n const childrenProps = {\n ref: handleRef\n };\n\n if (touchEvent !== false) {\n childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n }\n\n React.useEffect(() => {\n if (touchEvent !== false) {\n const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n const doc = ownerDocument(nodeRef.current);\n\n const handleTouchMove = () => {\n movedRef.current = true;\n };\n\n doc.addEventListener(mappedTouchEvent, handleClickAway);\n doc.addEventListener('touchmove', handleTouchMove);\n return () => {\n doc.removeEventListener(mappedTouchEvent, handleClickAway);\n doc.removeEventListener('touchmove', handleTouchMove);\n };\n }\n\n return undefined;\n }, [handleClickAway, touchEvent]);\n\n if (mouseEvent !== false) {\n childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n }\n\n React.useEffect(() => {\n if (mouseEvent !== false) {\n const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n const doc = ownerDocument(nodeRef.current);\n doc.addEventListener(mappedMouseEvent, handleClickAway);\n return () => {\n doc.removeEventListener(mappedMouseEvent, handleClickAway);\n };\n }\n\n return undefined;\n }, [handleClickAway, mouseEvent]);\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: /*#__PURE__*/React.cloneElement(children, childrenProps)\n });\n}\n\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The wrapped element.\n */\n children: elementAcceptingRef.isRequired,\n\n /**\n * If `true`, the React tree is ignored and only the DOM tree is considered.\n * This prop changes how portaled elements are handled.\n * @default false\n */\n disableReactTree: PropTypes.bool,\n\n /**\n * The mouse event to listen to. You can disable the listener by providing `false`.\n * @default 'onClick'\n */\n mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', false]),\n\n /**\n * Callback fired when a \"click away\" event is detected.\n */\n onClickAway: PropTypes.func.isRequired,\n\n /**\n * The touch event to listen to. You can disable the listener by providing `false`.\n * @default 'onTouchEnd'\n */\n touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\n\nexport default ClickAwayListener;","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import * as React from 'react';\nimport useEnhancedEffect from './useEnhancedEffect';\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n */\n\nexport default function useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useCallback((...args) => // @ts-expect-error hide `this`\n // tslint:disable-next-line:ban-comma-operator\n (0, ref.current)(...args), []);\n}","import * as React from 'react';\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","import * as React from 'react';\nimport setRef from './setRef';\nexport default function useForkRef(refA, refB) {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refA == null && refB == null) {\n return null;\n }\n\n return refValue => {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","import { createStyled, shouldForwardProp } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nexport const rootShouldForwardProp = prop => shouldForwardProp(prop) && prop !== 'classes';\nexport const slotShouldForwardProp = shouldForwardProp;\nconst styled = createStyled({\n defaultTheme,\n rootShouldForwardProp\n});\nexport default styled;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"],\n _excluded2 = [\"theme\"],\n _excluded3 = [\"theme\"];\nimport styledEngineStyled from '@mui/styled-engine';\nimport { getDisplayName } from '@mui/utils';\nimport createTheme from './createTheme';\nimport propsToClassKey from './propsToClassKey';\nimport defaultStyleFunctionSx from './styleFunctionSx';\n\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\nconst getStyleOverrides = (name, theme) => {\n if (theme.components && theme.components[name] && theme.components[name].styleOverrides) {\n return theme.components[name].styleOverrides;\n }\n\n return null;\n};\n\nconst getVariantStyles = (name, theme) => {\n let variants = [];\n\n if (theme && theme.components && theme.components[name] && theme.components[name].variants) {\n variants = theme.components[name].variants;\n }\n\n const variantsStyles = {};\n variants.forEach(definition => {\n const key = propsToClassKey(definition.props);\n variantsStyles[key] = definition.style;\n });\n return variantsStyles;\n};\n\nconst variantsResolver = (props, styles, theme, name) => {\n var _theme$components, _theme$components$nam;\n\n const {\n ownerState = {}\n } = props;\n const variantsStyles = [];\n const themeVariants = theme == null ? void 0 : (_theme$components = theme.components) == null ? void 0 : (_theme$components$nam = _theme$components[name]) == null ? void 0 : _theme$components$nam.variants;\n\n if (themeVariants) {\n themeVariants.forEach(themeVariant => {\n let isMatch = true;\n Object.keys(themeVariant.props).forEach(key => {\n if (ownerState[key] !== themeVariant.props[key] && props[key] !== themeVariant.props[key]) {\n isMatch = false;\n }\n });\n\n if (isMatch) {\n variantsStyles.push(styles[propsToClassKey(themeVariant.props)]);\n }\n });\n }\n\n return variantsStyles;\n}; // Update /system/styled/#api in case if this changes\n\n\nexport function shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport const systemDefaultTheme = createTheme();\n\nconst lowercaseFirstLetter = string => {\n return string.charAt(0).toLowerCase() + string.slice(1);\n};\n\nexport default function createStyled(input = {}) {\n const {\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp,\n styleFunctionSx = defaultStyleFunctionSx\n } = input;\n return (tag, inputOptions = {}) => {\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n overridesResolver\n } = inputOptions,\n options = _objectWithoutPropertiesLoose(inputOptions, _excluded); // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n\n\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver : componentSlot && componentSlot !== 'Root' || false;\n const skipSx = inputSkipSx || false;\n let label;\n\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n\n let shouldForwardPropOption = shouldForwardProp;\n\n if (componentSlot === 'Root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n }\n\n const defaultStyledResolver = styledEngineStyled(tag, _extends({\n shouldForwardProp: shouldForwardPropOption,\n label\n }, options));\n\n const muiStyledResolver = (styleArg, ...expressions) => {\n const expressionsWithDefaultTheme = expressions ? expressions.map(stylesArg => {\n // On the server emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n // eslint-disable-next-line no-underscore-dangle\n return typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg ? _ref => {\n let {\n theme: themeInput\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded2);\n\n return stylesArg(_extends({\n theme: isEmpty(themeInput) ? defaultTheme : themeInput\n }, other));\n } : stylesArg;\n }) : [];\n let transformedStyleArg = styleArg;\n\n if (componentName && overridesResolver) {\n expressionsWithDefaultTheme.push(props => {\n const theme = isEmpty(props.theme) ? defaultTheme : props.theme;\n const styleOverrides = getStyleOverrides(componentName, theme);\n\n if (styleOverrides) {\n const resolvedStyleOverrides = {};\n Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n resolvedStyleOverrides[slotKey] = typeof slotStyle === 'function' ? slotStyle(props) : slotStyle;\n });\n return overridesResolver(props, resolvedStyleOverrides);\n }\n\n return null;\n });\n }\n\n if (componentName && !skipVariantsResolver) {\n expressionsWithDefaultTheme.push(props => {\n const theme = isEmpty(props.theme) ? defaultTheme : props.theme;\n return variantsResolver(props, getVariantStyles(componentName, theme), theme, componentName);\n });\n }\n\n if (!skipSx) {\n expressionsWithDefaultTheme.push(props => {\n const theme = isEmpty(props.theme) ? defaultTheme : props.theme;\n return styleFunctionSx(_extends({}, props, {\n theme\n }));\n });\n }\n\n const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n\n if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n const placeholders = new Array(numOfCustomFnsApplied).fill(''); // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n\n transformedStyleArg = [...styleArg, ...placeholders];\n transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n } else if (typeof styleArg === 'function' && // On the server emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n // eslint-disable-next-line no-underscore-dangle\n styleArg.__emotion_real !== styleArg) {\n // If the type is function, we need to define the default theme.\n transformedStyleArg = _ref2 => {\n let {\n theme: themeInput\n } = _ref2,\n other = _objectWithoutPropertiesLoose(_ref2, _excluded3);\n\n return styleArg(_extends({\n theme: isEmpty(themeInput) ? defaultTheme : themeInput\n }, other));\n };\n }\n\n const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n let displayName;\n\n if (componentName) {\n displayName = `${componentName}${componentSlot || ''}`;\n }\n\n if (displayName === undefined) {\n displayName = `Styled(${getDisplayName(tag)})`;\n }\n\n Component.displayName = displayName;\n }\n\n return Component;\n };\n\n if (defaultStyledResolver.withConfig) {\n muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n }\n\n return muiStyledResolver;\n };\n}","/** @license MUI v5.5.2\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport emStyled from '@emotion/styled';\nexport default function styled(tag, options) {\n const stylesFactory = emStyled(tag, options);\n\n if (process.env.NODE_ENV !== 'production') {\n return (...styles) => {\n const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n\n if (styles.length === 0) {\n console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n } else if (styles.some(style => style === undefined)) {\n console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n }\n\n return stylesFactory(...styles);\n };\n }\n\n return stylesFactory;\n}\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from './StyledEngineProvider';\nexport { default as GlobalStyles } from './GlobalStyles';","import '@babel/runtime/helpers/extends';\nimport 'react';\nimport '@emotion/is-prop-valid';\nimport createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@emotion/react';\nimport '@emotion/utils';\nimport '@emotion/serialize';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nvar newStyled = createStyled.bind();\ntags.forEach(function (tagName) {\n // $FlowFixMe: we can ignore this because its exposed type is defined by the CreateStyled type\n newStyled[tagName] = newStyled(tagName);\n});\n\nexport default newStyled;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default isPropValid;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { useContext, createElement, Fragment } from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n return typeof tag === 'string' && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n\n if (typeof shouldForwardProp !== 'function' && isReal) {\n shouldForwardProp = tag.__emotion_forwardProp;\n }\n\n return shouldForwardProp;\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : function useInsertionEffect(create) {\n create();\n};\nfunction useInsertionEffectMaybe(create) {\n\n useInsertionEffect(create);\n}\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n var rules = useInsertionEffectMaybe(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n if (process.env.NODE_ENV !== 'production') {\n if (tag === undefined) {\n throw new Error('You are trying to create a styled element with an undefined component.\\nYou may have forgotten to import it.');\n }\n }\n\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n\n var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp('as');\n return function () {\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n if (identifierName !== undefined) {\n styles.push(\"label:\" + identifierName + \";\");\n }\n\n if (args[0] == null || args[0].raw === undefined) {\n styles.push.apply(styles, args);\n } else {\n if (process.env.NODE_ENV !== 'production' && args[0][0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles.push(args[0][0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n if (process.env.NODE_ENV !== 'production' && args[0][i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles.push(args[i], args[0][i]);\n }\n } // $FlowFixMe: we need to cast StatelessFunctionalComponent to our PrivateStyledComponent class\n\n\n var Styled = withEmotionCache(function (props, cache, ref) {\n var FinalTag = shouldUseAs && props.as || baseTag;\n var className = '';\n var classInterpolations = [];\n var mergedProps = props;\n\n if (props.theme == null) {\n mergedProps = {};\n\n for (var key in props) {\n mergedProps[key] = props[key];\n }\n\n mergedProps.theme = useContext(ThemeContext);\n }\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n className += cache.key + \"-\" + serialized.name;\n\n if (targetClassName !== undefined) {\n className += \" \" + targetClassName;\n }\n\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n var newProps = {};\n\n for (var _key in props) {\n if (shouldUseAs && _key === 'as') continue;\n\n if ( // $FlowFixMe\n finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n newProps.ref = ref;\n return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof FinalTag === 'string'\n }), /*#__PURE__*/createElement(FinalTag, newProps));\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, 'toString', {\n value: function value() {\n if (targetClassName === undefined && process.env.NODE_ENV !== 'production') {\n return 'NO_COMPONENT_SELECTOR';\n } // $FlowFixMe: coerce undefined to string\n\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag, nextOptions) {\n return createStyled(nextTag, _extends({}, options, nextOptions, {\n shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n })).apply(void 0, styles);\n };\n\n return Styled;\n };\n};\n\nexport default createStyled;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Global } from '@emotion/react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction isEmpty(obj) {\n return obj === undefined || obj === null || Object.keys(obj).length === 0;\n}\n\nexport default function GlobalStyles(props) {\n const {\n styles,\n defaultTheme = {}\n } = props;\n const globalStyles = typeof styles === 'function' ? themeInput => styles(isEmpty(themeInput) ? defaultTheme : themeInput) : styles;\n return /*#__PURE__*/_jsx(Global, {\n styles: globalStyles\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes = {\n defaultTheme: PropTypes.object,\n styles: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.func])\n} : void 0;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"variant\"];\nimport { unstable_capitalize as capitalize } from '@mui/utils';\n\nfunction isEmpty(string) {\n return string.length === 0;\n}\n/**\n * Generates string classKey based on the properties provided. It starts with the\n * variant if defined, and then it appends all other properties in alphabetical order.\n * @param {object} props - the properties for which the classKey should be created.\n */\n\n\nexport default function propsToClassKey(props) {\n const {\n variant\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n let classKey = variant || '';\n Object.keys(other).sort().forEach(key => {\n if (key === 'color') {\n classKey += isEmpty(classKey) ? props[key] : capitalize(props[key]);\n } else {\n classKey += `${isEmpty(classKey) ? key : capitalize(key)}${capitalize(props[key].toString())}`;\n }\n });\n return classKey;\n}","import merge from '../merge';\nimport { styleFunctionMapping as defaultStyleFunctionMapping } from '../getThemeValue';\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from '../breakpoints';\n\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\n\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n} // eslint-disable-next-line @typescript-eslint/naming-convention\n\n\nexport function unstable_createStyleFunctionSx(styleFunctionMapping = defaultStyleFunctionMapping) {\n const propToStyleFunction = Object.keys(styleFunctionMapping).reduce((acc, styleFnName) => {\n styleFunctionMapping[styleFnName].filterProps.forEach(propName => {\n acc[propName] = styleFunctionMapping[styleFnName];\n });\n return acc;\n }, {});\n\n function getThemeValue(prop, value, theme) {\n const inputProps = {\n [prop]: value,\n theme\n };\n const styleFunction = propToStyleFunction[prop];\n return styleFunction ? styleFunction(inputProps) : {\n [prop]: value\n };\n }\n\n function styleFunctionSx(props) {\n const {\n sx,\n theme = {}\n } = props || {};\n\n if (!sx) {\n return null; // emotion & styled-components will neglect null\n }\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n\n\n function traverse(sxInput) {\n let sxObject = sxInput;\n\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n\n if (!sxObject) {\n return null;\n }\n\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (propToStyleFunction[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme));\n }\n }\n });\n return removeUnusedBreakpoints(breakpointsKeys, css);\n }\n\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","import borders from './borders';\nimport display from './display';\nimport flexbox from './flexbox';\nimport grid from './grid';\nimport positions from './positions';\nimport palette from './palette';\nimport shadows from './shadows';\nimport sizing from './sizing';\nimport spacing from './spacing';\nimport typography from './typography';\nconst filterPropsMapping = {\n borders: borders.filterProps,\n display: display.filterProps,\n flexbox: flexbox.filterProps,\n grid: grid.filterProps,\n positions: positions.filterProps,\n palette: palette.filterProps,\n shadows: shadows.filterProps,\n sizing: sizing.filterProps,\n spacing: spacing.filterProps,\n typography: typography.filterProps\n};\nexport const styleFunctionMapping = {\n borders,\n display,\n flexbox,\n grid,\n positions,\n palette,\n shadows,\n sizing,\n spacing,\n typography\n};\nexport const propToStyleFunction = Object.keys(filterPropsMapping).reduce((acc, styleFnName) => {\n filterPropsMapping[styleFnName].forEach(propName => {\n acc[propName] = styleFunctionMapping[styleFnName];\n });\n return acc;\n}, {});\n\nfunction getThemeValue(prop, value, theme) {\n const inputProps = {\n [prop]: value,\n theme\n };\n const styleFunction = propToStyleFunction[prop];\n return styleFunction ? styleFunction(inputProps) : {\n [prop]: value\n };\n}\n\nexport default getThemeValue;","import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\n\nfunction getBorder(value) {\n if (typeof value !== 'number') {\n return value;\n }\n\n return `${value}px solid`;\n}\n\nexport const border = style({\n prop: 'border',\n themeKey: 'borders',\n transform: getBorder\n});\nexport const borderTop = style({\n prop: 'borderTop',\n themeKey: 'borders',\n transform: getBorder\n});\nexport const borderRight = style({\n prop: 'borderRight',\n themeKey: 'borders',\n transform: getBorder\n});\nexport const borderBottom = style({\n prop: 'borderBottom',\n themeKey: 'borders',\n transform: getBorder\n});\nexport const borderLeft = style({\n prop: 'borderLeft',\n themeKey: 'borders',\n transform: getBorder\n});\nexport const borderColor = style({\n prop: 'borderColor',\n themeKey: 'palette'\n});\nexport const borderTopColor = style({\n prop: 'borderTopColor',\n themeKey: 'palette'\n});\nexport const borderRightColor = style({\n prop: 'borderRightColor',\n themeKey: 'palette'\n});\nexport const borderBottomColor = style({\n prop: 'borderBottomColor',\n themeKey: 'palette'\n});\nexport const borderLeftColor = style({\n prop: 'borderLeftColor',\n themeKey: 'palette'\n});\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius);\nexport default borders;","import merge from './merge';\n\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n\n return acc;\n }, {});\n };\n\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\n\nexport default compose;","import style from './style';\nimport compose from './compose';\nexport const displayPrint = style({\n prop: 'displayPrint',\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n});\nexport const displayRaw = style({\n prop: 'display'\n});\nexport const overflow = style({\n prop: 'overflow'\n});\nexport const textOverflow = style({\n prop: 'textOverflow'\n});\nexport const visibility = style({\n prop: 'visibility'\n});\nexport const whiteSpace = style({\n prop: 'whiteSpace'\n});\nexport default compose(displayPrint, displayRaw, overflow, textOverflow, visibility, whiteSpace);","import style from './style';\nimport compose from './compose';\nexport const flexBasis = style({\n prop: 'flexBasis'\n});\nexport const flexDirection = style({\n prop: 'flexDirection'\n});\nexport const flexWrap = style({\n prop: 'flexWrap'\n});\nexport const justifyContent = style({\n prop: 'justifyContent'\n});\nexport const alignItems = style({\n prop: 'alignItems'\n});\nexport const alignContent = style({\n prop: 'alignContent'\n});\nexport const order = style({\n prop: 'order'\n});\nexport const flex = style({\n prop: 'flex'\n});\nexport const flexGrow = style({\n prop: 'flexGrow'\n});\nexport const flexShrink = style({\n prop: 'flexShrink'\n});\nexport const alignSelf = style({\n prop: 'alignSelf'\n});\nexport const justifyItems = style({\n prop: 'justifyItems'\n});\nexport const justifySelf = style({\n prop: 'justifySelf'\n});\nconst flexbox = compose(flexBasis, flexDirection, flexWrap, justifyContent, alignItems, alignContent, order, flex, flexGrow, flexShrink, alignSelf, justifyItems, justifySelf);\nexport default flexbox;","import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport const position = style({\n prop: 'position'\n});\nexport const zIndex = style({\n prop: 'zIndex',\n themeKey: 'zIndex'\n});\nexport const top = style({\n prop: 'top'\n});\nexport const right = style({\n prop: 'right'\n});\nexport const bottom = style({\n prop: 'bottom'\n});\nexport const left = style({\n prop: 'left'\n});\nexport default compose(position, zIndex, top, right, bottom, left);","import style from './style';\nimport compose from './compose';\nexport const color = style({\n prop: 'color',\n themeKey: 'palette'\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette'\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette'\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from './style';\nconst boxShadow = style({\n prop: 'boxShadow',\n themeKey: 'shadows'\n});\nexport default boxShadow;","import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\n\nfunction transform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\n\nexport const width = style({\n prop: 'width',\n transform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n var _props$theme, _props$theme$breakpoi, _props$theme$breakpoi2;\n\n const breakpoint = ((_props$theme = props.theme) == null ? void 0 : (_props$theme$breakpoi = _props$theme.breakpoints) == null ? void 0 : (_props$theme$breakpoi2 = _props$theme$breakpoi.values) == null ? void 0 : _props$theme$breakpoi2[propValue]) || breakpointsValues[propValue];\n return {\n maxWidth: breakpoint || transform(propValue)\n };\n };\n\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform\n});\nexport const height = style({\n prop: 'height',\n transform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import style from './style';\nimport compose from './compose';\nexport const fontFamily = style({\n prop: 'fontFamily',\n themeKey: 'typography'\n});\nexport const fontSize = style({\n prop: 'fontSize',\n themeKey: 'typography'\n});\nexport const fontStyle = style({\n prop: 'fontStyle',\n themeKey: 'typography'\n});\nexport const fontWeight = style({\n prop: 'fontWeight',\n themeKey: 'typography'\n});\nexport const letterSpacing = style({\n prop: 'letterSpacing'\n});\nexport const textTransform = style({\n prop: 'textTransform'\n});\nexport const lineHeight = style({\n prop: 'lineHeight'\n});\nexport const textAlign = style({\n prop: 'textAlign'\n});\nexport const typographyVariant = style({\n prop: 'typography',\n cssProperty: false,\n themeKey: 'typography'\n});\nconst typography = compose(typographyVariant, fontFamily, fontSize, fontStyle, fontWeight, letterSpacing, lineHeight, textAlign, textTransform);\nexport default typography;","import * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nexport default function useTheme() {\n const theme = useThemeSystem(defaultTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n\n return theme;\n}","import { unstable_useEventCallback as useEventCallback } from '@mui/utils';\nexport default useEventCallback;","import { unstable_capitalize as capitalize } from '@mui/utils';\nexport default capitalize;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef } from '@mui/utils';\nimport { Transition } from 'react-transition-group';\nimport useTheme from '../styles/useTheme';\nimport { reflow, getTransitionProps } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction getScale(value) {\n return `scale(${value}, ${value ** 2})`;\n}\n\nconst styles = {\n entering: {\n opacity: 1,\n transform: getScale(1)\n },\n entered: {\n opacity: 1,\n transform: 'none'\n }\n};\n/**\n * The Grow transition is used by the [Tooltip](/components/tooltips/) and\n * [Popover](/components/popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nconst Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n const {\n addEndListener,\n appear = true,\n children,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n style,\n timeout = 'auto',\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const timer = React.useRef();\n const autoTimeout = React.useRef();\n const theme = useTheme();\n const nodeRef = React.useRef(null);\n const foreignRef = useForkRef(children.ref, ref);\n const handleRef = useForkRef(nodeRef, foreignRef);\n\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current; // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n\n const handleEntering = normalizedTransitionCallback(onEntering);\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n reflow(node); // So the animation always start from the start.\n\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n let duration;\n\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: duration * 0.666,\n delay,\n easing: transitionTimingFunction\n })].join(',');\n\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback(onEntered);\n const handleExiting = normalizedTransitionCallback(onExiting);\n const handleExit = normalizedTransitionCallback(node => {\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n let duration;\n\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: duration * 0.666,\n delay: delay || duration * 0.333,\n easing: transitionTimingFunction\n })].join(',');\n node.style.opacity = '0';\n node.style.transform = getScale(0.75);\n\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTimeout.current || 0);\n }\n\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n\n React.useEffect(() => {\n return () => {\n clearTimeout(timer.current);\n };\n }, []);\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n appear: appear,\n in: inProp,\n nodeRef: nodeRef,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n timeout: timeout === 'auto' ? null : timeout\n }, other, {\n children: (state, childProps) => {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n style: _extends({\n opacity: 0,\n transform: getScale(0.75),\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, styles[state], style, children.props.style),\n ref: handleRef\n }, childProps));\n }\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n\n /**\n * Perform the enter transition when it first mounts if `in` is also `true`.\n * Set this to `false` to disable this behavior.\n * @default true\n */\n appear: PropTypes.bool,\n\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default 'auto'\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nGrow.muiSupportAuto = true;\nexport default Grow;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *

\n * )}\n * \n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","export const reflow = node => node.scrollTop;\nexport function getTransitionProps(props, options) {\n var _style$transitionDura, _style$transitionTimi;\n\n const {\n timeout,\n easing,\n style = {}\n } = props;\n return {\n duration: (_style$transitionDura = style.transitionDuration) != null ? _style$transitionDura : typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n easing: (_style$transitionTimi = style.transitionTimingFunction) != null ? _style$transitionTimi : typeof easing === 'object' ? easing[options.mode] : easing,\n delay: style.transitionDelay\n };\n}","import { unstable_useForkRef as useForkRef } from '@mui/utils';\nexport default useForkRef;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"action\", \"className\", \"message\", \"role\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { emphasize } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Paper from '../Paper';\nimport { getSnackbarContentUtilityClass } from './snackbarContentClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n action: ['action'],\n message: ['message']\n };\n return composeClasses(slots, getSnackbarContentUtilityClass, classes);\n};\n\nconst SnackbarContentRoot = styled(Paper, {\n name: 'MuiSnackbarContent',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme\n}) => {\n const emphasis = theme.palette.mode === 'light' ? 0.8 : 0.98;\n const backgroundColor = emphasize(theme.palette.background.default, emphasis);\n return _extends({}, theme.typography.body2, {\n color: theme.palette.getContrastText(backgroundColor),\n backgroundColor,\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n padding: '6px 16px',\n borderRadius: theme.shape.borderRadius,\n flexGrow: 1,\n [theme.breakpoints.up('sm')]: {\n flexGrow: 'initial',\n minWidth: 288\n }\n });\n});\nconst SnackbarContentMessage = styled('div', {\n name: 'MuiSnackbarContent',\n slot: 'Message',\n overridesResolver: (props, styles) => styles.message\n})({\n padding: '8px 0'\n});\nconst SnackbarContentAction = styled('div', {\n name: 'MuiSnackbarContent',\n slot: 'Action',\n overridesResolver: (props, styles) => styles.action\n})({\n display: 'flex',\n alignItems: 'center',\n marginLeft: 'auto',\n paddingLeft: 16,\n marginRight: -8\n});\nconst SnackbarContent = /*#__PURE__*/React.forwardRef(function SnackbarContent(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiSnackbarContent'\n });\n\n const {\n action,\n className,\n message,\n role = 'alert'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(SnackbarContentRoot, _extends({\n role: role,\n square: true,\n elevation: 6,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: [/*#__PURE__*/_jsx(SnackbarContentMessage, {\n className: classes.message,\n ownerState: ownerState,\n children: message\n }), action ? /*#__PURE__*/_jsx(SnackbarContentAction, {\n className: classes.action,\n ownerState: ownerState,\n children: action\n }) : null]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? SnackbarContent.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The action to display. It renders after the message, at the end of the snackbar.\n */\n action: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The message to display.\n */\n message: PropTypes.node,\n\n /**\n * The ARIA role attribute of the element.\n * @default 'alert'\n */\n role: PropTypes\n /* @typescript-to-proptypes-ignore */\n .string,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default SnackbarContent;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"component\", \"elevation\", \"square\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes, integerPropType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useTheme from '../styles/useTheme';\nimport { getPaperUtilityClass } from './paperClasses'; // Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst getOverlayAlpha = elevation => {\n let alphaValue;\n\n if (elevation < 1) {\n alphaValue = 5.11916 * elevation ** 2;\n } else {\n alphaValue = 4.5 * Math.log(elevation + 1) + 2;\n }\n\n return (alphaValue / 100).toFixed(2);\n};\n\nconst useUtilityClasses = ownerState => {\n const {\n square,\n elevation,\n variant,\n classes\n } = ownerState;\n const slots = {\n root: ['root', variant, !square && 'rounded', variant === 'elevation' && `elevation${elevation}`]\n };\n return composeClasses(slots, getPaperUtilityClass, classes);\n};\n\nconst PaperRoot = styled('div', {\n name: 'MuiPaper',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], !ownerState.square && styles.rounded, ownerState.variant === 'elevation' && styles[`elevation${ownerState.elevation}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n transition: theme.transitions.create('box-shadow')\n}, !ownerState.square && {\n borderRadius: theme.shape.borderRadius\n}, ownerState.variant === 'outlined' && {\n border: `1px solid ${theme.palette.divider}`\n}, ownerState.variant === 'elevation' && _extends({\n boxShadow: theme.shadows[ownerState.elevation]\n}, theme.palette.mode === 'dark' && {\n backgroundImage: `linear-gradient(${alpha('#fff', getOverlayAlpha(ownerState.elevation))}, ${alpha('#fff', getOverlayAlpha(ownerState.elevation))})`\n})));\nconst Paper = /*#__PURE__*/React.forwardRef(function Paper(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPaper'\n });\n\n const {\n className,\n component = 'div',\n elevation = 1,\n square = false,\n variant = 'elevation'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n component,\n elevation,\n square,\n variant\n });\n\n const classes = useUtilityClasses(ownerState);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const theme = useTheme();\n\n if (theme.shadows[elevation] === undefined) {\n console.error([`MUI: The elevation provided is not available in the theme.`, `Please make sure that \\`theme.shadows[${elevation}]\\` is defined.`].join('\\n'));\n }\n }\n\n return /*#__PURE__*/_jsx(PaperRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Paper.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * Shadow depth, corresponds to `dp` in the spec.\n * It accepts values between 0 and 24 inclusive.\n * @default 1\n */\n elevation: chainPropTypes(integerPropType, props => {\n const {\n elevation,\n variant\n } = props;\n\n if (elevation > 0 && variant === 'outlined') {\n return new Error(`MUI: Combining \\`elevation={${elevation}}\\` with \\`variant=\"${variant}\"\\` has no effect. Either use \\`elevation={0}\\` or use a different \\`variant\\`.`);\n }\n\n return null;\n }),\n\n /**\n * If `true`, rounded corners are disabled.\n * @default false\n */\n square: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The variant to use.\n * @default 'elevation'\n */\n variant: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['elevation', 'outlined']), PropTypes.string])\n} : void 0;\nexport default Paper;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getPaperUtilityClass(slot) {\n return generateUtilityClass('MuiPaper', slot);\n}\nconst paperClasses = generateUtilityClasses('MuiPaper', ['root', 'rounded', 'outlined', 'elevation', 'elevation0', 'elevation1', 'elevation2', 'elevation3', 'elevation4', 'elevation5', 'elevation6', 'elevation7', 'elevation8', 'elevation9', 'elevation10', 'elevation11', 'elevation12', 'elevation13', 'elevation14', 'elevation15', 'elevation16', 'elevation17', 'elevation18', 'elevation19', 'elevation20', 'elevation21', 'elevation22', 'elevation23', 'elevation24']);\nexport default paperClasses;","import ClassNameGenerator from '../className/ClassNameGenerator';\nconst globalStateClassesMapping = {\n active: 'Mui-active',\n checked: 'Mui-checked',\n completed: 'Mui-completed',\n disabled: 'Mui-disabled',\n error: 'Mui-error',\n expanded: 'Mui-expanded',\n focused: 'Mui-focused',\n focusVisible: 'Mui-focusVisible',\n required: 'Mui-required',\n selected: 'Mui-selected'\n};\nexport default function generateUtilityClass(componentName, slot) {\n const globalStateClass = globalStateClassesMapping[slot];\n return globalStateClass || `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}","const defaultGenerator = componentName => componentName;\n\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n\n generate(componentName) {\n return generate(componentName);\n },\n\n reset() {\n generate = defaultGenerator;\n }\n\n };\n};\n\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import generateUtilityClass from '../generateUtilityClass';\nexport default function generateUtilityClasses(componentName, slots) {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot);\n });\n return result;\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getSnackbarContentUtilityClass(slot) {\n return generateUtilityClass('MuiSnackbarContent', slot);\n}\nconst snackbarContentClasses = generateUtilityClasses('MuiSnackbarContent', ['root', 'message', 'action']);\nexport default snackbarContentClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getSnackbarUtilityClass(slot) {\n return generateUtilityClass('MuiSnackbar', slot);\n}\nconst snackbarClasses = generateUtilityClasses('MuiSnackbar', ['root', 'anchorOriginTopCenter', 'anchorOriginBottomCenter', 'anchorOriginTopRight', 'anchorOriginBottomRight', 'anchorOriginTopLeft', 'anchorOriginBottomLeft']);\nexport default snackbarClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"align\", \"className\", \"component\", \"gutterBottom\", \"noWrap\", \"paragraph\", \"variant\", \"variantMapping\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_extendSxProp as extendSxProp } from '@mui/system';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport { getTypographyUtilityClass } from './typographyClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n align,\n gutterBottom,\n noWrap,\n paragraph,\n variant,\n classes\n } = ownerState;\n const slots = {\n root: ['root', variant, ownerState.align !== 'inherit' && `align${capitalize(align)}`, gutterBottom && 'gutterBottom', noWrap && 'noWrap', paragraph && 'paragraph']\n };\n return composeClasses(slots, getTypographyUtilityClass, classes);\n};\n\nexport const TypographyRoot = styled('span', {\n name: 'MuiTypography',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.variant && styles[ownerState.variant], ownerState.align !== 'inherit' && styles[`align${capitalize(ownerState.align)}`], ownerState.noWrap && styles.noWrap, ownerState.gutterBottom && styles.gutterBottom, ownerState.paragraph && styles.paragraph];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n margin: 0\n}, ownerState.variant && theme.typography[ownerState.variant], ownerState.align !== 'inherit' && {\n textAlign: ownerState.align\n}, ownerState.noWrap && {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n}, ownerState.gutterBottom && {\n marginBottom: '0.35em'\n}, ownerState.paragraph && {\n marginBottom: 16\n}));\nconst defaultVariantMapping = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n subtitle1: 'h6',\n subtitle2: 'h6',\n body1: 'p',\n body2: 'p',\n inherit: 'p'\n}; // TODO v6: deprecate these color values in v5.x and remove the transformation in v6\n\nconst colorTransformations = {\n primary: 'primary.main',\n textPrimary: 'text.primary',\n secondary: 'secondary.main',\n textSecondary: 'text.secondary',\n error: 'error.main'\n};\n\nconst transformDeprecatedColors = color => {\n return colorTransformations[color] || color;\n};\n\nconst Typography = /*#__PURE__*/React.forwardRef(function Typography(inProps, ref) {\n const themeProps = useThemeProps({\n props: inProps,\n name: 'MuiTypography'\n });\n const color = transformDeprecatedColors(themeProps.color);\n const props = extendSxProp(_extends({}, themeProps, {\n color\n }));\n\n const {\n align = 'inherit',\n className,\n component,\n gutterBottom = false,\n noWrap = false,\n paragraph = false,\n variant = 'body1',\n variantMapping = defaultVariantMapping\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n align,\n color,\n className,\n component,\n gutterBottom,\n noWrap,\n paragraph,\n variant,\n variantMapping\n });\n\n const Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(TypographyRoot, _extends({\n as: Component,\n ref: ref,\n ownerState: ownerState,\n className: clsx(classes.root, className)\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Typography.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Set the text-align on the component.\n * @default 'inherit'\n */\n align: PropTypes.oneOf(['center', 'inherit', 'justify', 'left', 'right']),\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * If `true`, the text will have a bottom margin.\n * @default false\n */\n gutterBottom: PropTypes.bool,\n\n /**\n * If `true`, the text will not wrap, but instead will truncate with a text overflow ellipsis.\n *\n * Note that text overflow can only happen with block or inline-block level elements\n * (the element needs to have a width in order to overflow).\n * @default false\n */\n noWrap: PropTypes.bool,\n\n /**\n * If `true`, the element will be a paragraph element.\n * @default false\n */\n paragraph: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * Applies the theme typography styles.\n * @default 'body1'\n */\n variant: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string]),\n\n /**\n * The component maps the variant prop to a range of different HTML element types.\n * For instance, subtitle1 to `
`.\n * If you wish to change that mapping, you can provide your own.\n * Alternatively, you can use the `component` prop.\n * @default {\n * h1: 'h1',\n * h2: 'h2',\n * h3: 'h3',\n * h4: 'h4',\n * h5: 'h5',\n * h6: 'h6',\n * subtitle1: 'h6',\n * subtitle2: 'h6',\n * body1: 'p',\n * body2: 'p',\n * inherit: 'p',\n * }\n */\n variantMapping: PropTypes\n /* @typescript-to-proptypes-ignore */\n .object\n} : void 0;\nexport default Typography;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"sx\"];\nimport { isPlainObject } from '@mui/utils';\nimport { propToStyleFunction } from '../getThemeValue';\n\nconst splitProps = props => {\n const result = {\n systemProps: {},\n otherProps: {}\n };\n Object.keys(props).forEach(prop => {\n if (propToStyleFunction[prop]) {\n result.systemProps[prop] = props[prop];\n } else {\n result.otherProps[prop] = props[prop];\n }\n });\n return result;\n};\n\nexport default function extendSxProp(props) {\n const {\n sx: inSx\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const {\n systemProps,\n otherProps\n } = splitProps(other);\n let finalSx;\n\n if (Array.isArray(inSx)) {\n finalSx = [systemProps, ...inSx];\n } else if (typeof inSx === 'function') {\n finalSx = (...args) => {\n const result = inSx(...args);\n\n if (!isPlainObject(result)) {\n return systemProps;\n }\n\n return _extends({}, systemProps, result);\n };\n } else {\n finalSx = _extends({}, systemProps, inSx);\n }\n\n return _extends({}, otherProps, {\n sx: finalSx\n });\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getTypographyUtilityClass(slot) {\n return generateUtilityClass('MuiTypography', slot);\n}\nconst typographyClasses = generateUtilityClasses('MuiTypography', ['root', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'inherit', 'button', 'caption', 'overline', 'alignLeft', 'alignRight', 'alignCenter', 'alignJustify', 'noWrap', 'gutterBottom', 'paragraph']);\nexport default typographyClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"defaultExpanded\", \"disabled\", \"disableGutters\", \"expanded\", \"onChange\", \"square\", \"TransitionComponent\", \"TransitionProps\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Collapse from '../Collapse';\nimport Paper from '../Paper';\nimport AccordionContext from './AccordionContext';\nimport useControlled from '../utils/useControlled';\nimport accordionClasses, { getAccordionUtilityClass } from './accordionClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n square,\n expanded,\n disabled,\n disableGutters\n } = ownerState;\n const slots = {\n root: ['root', !square && 'rounded', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n region: ['region']\n };\n return composeClasses(slots, getAccordionUtilityClass, classes);\n};\n\nconst AccordionRoot = styled(Paper, {\n name: 'MuiAccordion',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${accordionClasses.region}`]: styles.region\n }, styles.root, !ownerState.square && styles.rounded, !ownerState.disableGutters && styles.gutters];\n }\n})(({\n theme\n}) => {\n const transition = {\n duration: theme.transitions.duration.shortest\n };\n return {\n position: 'relative',\n transition: theme.transitions.create(['margin'], transition),\n overflowAnchor: 'none',\n // Keep the same scrolling position\n '&:before': {\n position: 'absolute',\n left: 0,\n top: -1,\n right: 0,\n height: 1,\n content: '\"\"',\n opacity: 1,\n backgroundColor: theme.palette.divider,\n transition: theme.transitions.create(['opacity', 'background-color'], transition)\n },\n '&:first-of-type': {\n '&:before': {\n display: 'none'\n }\n },\n [`&.${accordionClasses.expanded}`]: {\n '&:before': {\n opacity: 0\n },\n '&:first-of-type': {\n marginTop: 0\n },\n '&:last-of-type': {\n marginBottom: 0\n },\n '& + &': {\n '&:before': {\n display: 'none'\n }\n }\n },\n [`&.${accordionClasses.disabled}`]: {\n backgroundColor: theme.palette.action.disabledBackground\n }\n };\n}, ({\n theme,\n ownerState\n}) => _extends({}, !ownerState.square && {\n borderRadius: 0,\n '&:first-of-type': {\n borderTopLeftRadius: theme.shape.borderRadius,\n borderTopRightRadius: theme.shape.borderRadius\n },\n '&:last-of-type': {\n borderBottomLeftRadius: theme.shape.borderRadius,\n borderBottomRightRadius: theme.shape.borderRadius,\n // Fix a rendering issue on Edge\n '@supports (-ms-ime-align: auto)': {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }\n }\n}, !ownerState.disableGutters && {\n [`&.${accordionClasses.expanded}`]: {\n margin: '16px 0'\n }\n}));\nconst Accordion = /*#__PURE__*/React.forwardRef(function Accordion(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAccordion'\n });\n\n const {\n children: childrenProp,\n className,\n defaultExpanded = false,\n disabled = false,\n disableGutters = false,\n expanded: expandedProp,\n onChange,\n square = false,\n TransitionComponent = Collapse,\n TransitionProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const [expanded, setExpandedState] = useControlled({\n controlled: expandedProp,\n default: defaultExpanded,\n name: 'Accordion',\n state: 'expanded'\n });\n const handleChange = React.useCallback(event => {\n setExpandedState(!expanded);\n\n if (onChange) {\n onChange(event, !expanded);\n }\n }, [expanded, onChange, setExpandedState]);\n const [summary, ...children] = React.Children.toArray(childrenProp);\n const contextValue = React.useMemo(() => ({\n expanded,\n disabled,\n disableGutters,\n toggle: handleChange\n }), [expanded, disabled, disableGutters, handleChange]);\n\n const ownerState = _extends({}, props, {\n square,\n disabled,\n disableGutters,\n expanded\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(AccordionRoot, _extends({\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState,\n square: square\n }, other, {\n children: [/*#__PURE__*/_jsx(AccordionContext.Provider, {\n value: contextValue,\n children: summary\n }), /*#__PURE__*/_jsx(TransitionComponent, _extends({\n in: expanded,\n timeout: \"auto\"\n }, TransitionProps, {\n children: /*#__PURE__*/_jsx(\"div\", {\n \"aria-labelledby\": summary.props.id,\n id: summary.props['aria-controls'],\n role: \"region\",\n className: classes.region,\n children: children\n })\n }))]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Accordion.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: chainPropTypes(PropTypes.node.isRequired, props => {\n const summary = React.Children.toArray(props.children)[0];\n\n if (isFragment(summary)) {\n return new Error(\"MUI: The Accordion doesn't accept a Fragment as a child. \" + 'Consider providing an array instead.');\n }\n\n if (! /*#__PURE__*/React.isValidElement(summary)) {\n return new Error('MUI: Expected the first child of Accordion to be a valid element.');\n }\n\n return null;\n }),\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, expands the accordion by default.\n * @default false\n */\n defaultExpanded: PropTypes.bool,\n\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, it removes the margin between two expanded accordion items and the increase of height.\n * @default false\n */\n disableGutters: PropTypes.bool,\n\n /**\n * If `true`, expands the accordion, otherwise collapse it.\n * Setting this prop enables control over the accordion.\n */\n expanded: PropTypes.bool,\n\n /**\n * Callback fired when the expand/collapse state is changed.\n *\n * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n * @param {boolean} expanded The `expanded` state of the accordion.\n */\n onChange: PropTypes.func,\n\n /**\n * If `true`, rounded corners are disabled.\n * @default false\n */\n square: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The component used for the transition.\n * [Follow this guide](/components/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Collapse\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default Accordion;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"addEndListener\", \"children\", \"className\", \"collapsedSize\", \"component\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"orientation\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport { elementTypeAcceptingRef } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { duration } from '../styles/createTransitions';\nimport { getTransitionProps } from '../transitions/utils';\nimport useTheme from '../styles/useTheme';\nimport { useForkRef } from '../utils';\nimport { getCollapseUtilityClass } from './collapseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n orientation,\n classes\n } = ownerState;\n const slots = {\n root: ['root', `${orientation}`],\n entered: ['entered'],\n hidden: ['hidden'],\n wrapper: ['wrapper', `${orientation}`],\n wrapperInner: ['wrapperInner', `${orientation}`]\n };\n return composeClasses(slots, getCollapseUtilityClass, classes);\n};\n\nconst CollapseRoot = styled('div', {\n name: 'MuiCollapse',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.orientation], ownerState.state === 'entered' && styles.entered, ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && styles.hidden];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n height: 0,\n overflow: 'hidden',\n transition: theme.transitions.create('height')\n}, ownerState.orientation === 'horizontal' && {\n height: 'auto',\n width: 0,\n transition: theme.transitions.create('width')\n}, ownerState.state === 'entered' && _extends({\n height: 'auto',\n overflow: 'visible'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto'\n}), ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && {\n visibility: 'hidden'\n}));\nconst CollapseWrapper = styled('div', {\n name: 'MuiCollapse',\n slot: 'Wrapper',\n overridesResolver: (props, styles) => styles.wrapper\n})(({\n ownerState\n}) => _extends({\n // Hack to get children with a negative margin to not falsify the height computation.\n display: 'flex',\n width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto',\n height: '100%'\n}));\nconst CollapseWrapperInner = styled('div', {\n name: 'MuiCollapse',\n slot: 'WrapperInner',\n overridesResolver: (props, styles) => styles.wrapperInner\n})(({\n ownerState\n}) => _extends({\n width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto',\n height: '100%'\n}));\n/**\n * The Collapse transition is used by the\n * [Vertical Stepper](/components/steppers/#vertical-stepper) StepContent component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nconst Collapse = /*#__PURE__*/React.forwardRef(function Collapse(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCollapse'\n });\n\n const {\n addEndListener,\n children,\n className,\n collapsedSize: collapsedSizeProp = '0px',\n component,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n orientation = 'vertical',\n style,\n timeout = duration.standard,\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n orientation,\n collapsedSize: collapsedSizeProp\n });\n\n const classes = useUtilityClasses(ownerState);\n const theme = useTheme();\n const timer = React.useRef();\n const wrapperRef = React.useRef(null);\n const autoTransitionDuration = React.useRef();\n const collapsedSize = typeof collapsedSizeProp === 'number' ? `${collapsedSizeProp}px` : collapsedSizeProp;\n const isHorizontal = orientation === 'horizontal';\n const size = isHorizontal ? 'width' : 'height';\n React.useEffect(() => {\n return () => {\n clearTimeout(timer.current);\n };\n }, []);\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(ref, nodeRef);\n\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current; // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n\n const getWrapperSize = () => wrapperRef.current ? wrapperRef.current[isHorizontal ? 'clientWidth' : 'clientHeight'] : 0;\n\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n if (wrapperRef.current && isHorizontal) {\n // Set absolute position to get the size of collapsed content\n wrapperRef.current.style.position = 'absolute';\n }\n\n node.style[size] = collapsedSize;\n\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntering = normalizedTransitionCallback((node, isAppearing) => {\n const wrapperSize = getWrapperSize();\n\n if (wrapperRef.current && isHorizontal) {\n // After the size is read reset the position back to default\n wrapperRef.current.style.position = '';\n }\n\n const {\n duration: transitionDuration,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n\n if (timeout === 'auto') {\n const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n }\n\n node.style[size] = `${wrapperSize}px`;\n node.style.transitionTimingFunction = transitionTimingFunction;\n\n if (onEntering) {\n onEntering(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback((node, isAppearing) => {\n node.style[size] = 'auto';\n\n if (onEntered) {\n onEntered(node, isAppearing);\n }\n });\n const handleExit = normalizedTransitionCallback(node => {\n node.style[size] = `${getWrapperSize()}px`;\n\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleExiting = normalizedTransitionCallback(node => {\n const wrapperSize = getWrapperSize();\n const {\n duration: transitionDuration,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n\n if (timeout === 'auto') {\n // TODO: rename getAutoHeightDuration to something more generic (width support)\n // Actually it just calculates animation duration based on size\n const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n }\n\n node.style[size] = collapsedSize;\n node.style.transitionTimingFunction = transitionTimingFunction;\n\n if (onExiting) {\n onExiting(node);\n }\n });\n\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTransitionDuration.current || 0);\n }\n\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n in: inProp,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n nodeRef: nodeRef,\n timeout: timeout === 'auto' ? null : timeout\n }, other, {\n children: (state, childProps) => /*#__PURE__*/_jsx(CollapseRoot, _extends({\n as: component,\n className: clsx(classes.root, className, {\n 'entered': classes.entered,\n 'exited': !inProp && collapsedSize === '0px' && classes.hidden\n }[state]),\n style: _extends({\n [isHorizontal ? 'minWidth' : 'minHeight']: collapsedSize\n }, style),\n ownerState: _extends({}, ownerState, {\n state\n }),\n ref: handleRef\n }, childProps, {\n children: /*#__PURE__*/_jsx(CollapseWrapper, {\n ownerState: _extends({}, ownerState, {\n state\n }),\n className: classes.wrapper,\n ref: wrapperRef,\n children: /*#__PURE__*/_jsx(CollapseWrapperInner, {\n ownerState: _extends({}, ownerState, {\n state\n }),\n className: classes.wrapperInner,\n children: children\n })\n })\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Collapse.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n\n /**\n * The content node to be collapsed.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The width (horizontal) or height (vertical) of the container when collapsed.\n * @default '0px'\n */\n collapsedSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: elementTypeAcceptingRef,\n\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n\n /**\n * The transition orientation.\n * @default 'vertical'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default duration.standard\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nCollapse.muiSupportAuto = true;\nexport default Collapse;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getCollapseUtilityClass(slot) {\n return generateUtilityClass('MuiCollapse', slot);\n}\nconst collapseClasses = generateUtilityClasses('MuiCollapse', ['root', 'horizontal', 'vertical', 'entered', 'hidden', 'wrapper', 'wrapperInner']);\nexport default collapseClasses;","import * as React from 'react';\n/**\n * @ignore - internal component.\n * @type {React.Context<{} | {expanded: boolean, disabled: boolean, toggle: () => void}>}\n */\n\nconst AccordionContext = /*#__PURE__*/React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n AccordionContext.displayName = 'AccordionContext';\n}\n\nexport default AccordionContext;","import { unstable_useControlled as useControlled } from '@mui/utils';\nexport default useControlled;","/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getAccordionUtilityClass(slot) {\n return generateUtilityClass('MuiAccordion', slot);\n}\nconst accordionClasses = generateUtilityClasses('MuiAccordion', ['root', 'rounded', 'expanded', 'disabled', 'gutters', 'region']);\nexport default accordionClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getAccordionDetailsUtilityClass } from './accordionDetailsClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getAccordionDetailsUtilityClass, classes);\n};\n\nconst AccordionDetailsRoot = styled('div', {\n name: 'MuiAccordionDetails',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme\n}) => ({\n padding: theme.spacing(1, 2, 2)\n}));\nconst AccordionDetails = /*#__PURE__*/React.forwardRef(function AccordionDetails(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAccordionDetails'\n });\n\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(AccordionDetailsRoot, _extends({\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionDetails.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionDetails;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getAccordionDetailsUtilityClass(slot) {\n return generateUtilityClass('MuiAccordionDetails', slot);\n}\nconst accordionDetailsClasses = generateUtilityClasses('MuiAccordionDetails', ['root']);\nexport default accordionDetailsClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"expandIcon\", \"focusVisibleClassName\", \"onClick\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport AccordionContext from '../Accordion/AccordionContext';\nimport accordionSummaryClasses, { getAccordionSummaryUtilityClass } from './accordionSummaryClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n expanded,\n disabled,\n disableGutters\n } = ownerState;\n const slots = {\n root: ['root', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n focusVisible: ['focusVisible'],\n content: ['content', expanded && 'expanded', !disableGutters && 'contentGutters'],\n expandIconWrapper: ['expandIconWrapper', expanded && 'expanded']\n };\n return composeClasses(slots, getAccordionSummaryUtilityClass, classes);\n};\n\nconst AccordionSummaryRoot = styled(ButtonBase, {\n name: 'MuiAccordionSummary',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme,\n ownerState\n}) => {\n const transition = {\n duration: theme.transitions.duration.shortest\n };\n return _extends({\n display: 'flex',\n minHeight: 48,\n padding: theme.spacing(0, 2),\n transition: theme.transitions.create(['min-height', 'background-color'], transition),\n [`&.${accordionSummaryClasses.focusVisible}`]: {\n backgroundColor: theme.palette.action.focus\n },\n [`&.${accordionSummaryClasses.disabled}`]: {\n opacity: theme.palette.action.disabledOpacity\n },\n [`&:hover:not(.${accordionSummaryClasses.disabled})`]: {\n cursor: 'pointer'\n }\n }, !ownerState.disableGutters && {\n [`&.${accordionSummaryClasses.expanded}`]: {\n minHeight: 64\n }\n });\n});\nconst AccordionSummaryContent = styled('div', {\n name: 'MuiAccordionSummary',\n slot: 'Content',\n overridesResolver: (props, styles) => styles.content\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n flexGrow: 1,\n margin: '12px 0'\n}, !ownerState.disableGutters && {\n transition: theme.transitions.create(['margin'], {\n duration: theme.transitions.duration.shortest\n }),\n [`&.${accordionSummaryClasses.expanded}`]: {\n margin: '20px 0'\n }\n}));\nconst AccordionSummaryExpandIconWrapper = styled('div', {\n name: 'MuiAccordionSummary',\n slot: 'ExpandIconWrapper',\n overridesResolver: (props, styles) => styles.expandIconWrapper\n})(({\n theme\n}) => ({\n display: 'flex',\n color: theme.palette.action.active,\n transform: 'rotate(0deg)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shortest\n }),\n [`&.${accordionSummaryClasses.expanded}`]: {\n transform: 'rotate(180deg)'\n }\n}));\nconst AccordionSummary = /*#__PURE__*/React.forwardRef(function AccordionSummary(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAccordionSummary'\n });\n\n const {\n children,\n className,\n expandIcon,\n focusVisibleClassName,\n onClick\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const {\n disabled = false,\n disableGutters,\n expanded,\n toggle\n } = React.useContext(AccordionContext);\n\n const handleChange = event => {\n if (toggle) {\n toggle(event);\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n const ownerState = _extends({}, props, {\n expanded,\n disabled,\n disableGutters\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(AccordionSummaryRoot, _extends({\n focusRipple: false,\n disableRipple: true,\n disabled: disabled,\n component: \"div\",\n \"aria-expanded\": expanded,\n className: clsx(classes.root, className),\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n onClick: handleChange,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: [/*#__PURE__*/_jsx(AccordionSummaryContent, {\n className: classes.content,\n ownerState: ownerState,\n children: children\n }), expandIcon && /*#__PURE__*/_jsx(AccordionSummaryExpandIconWrapper, {\n className: classes.expandIconWrapper,\n ownerState: ownerState,\n children: expandIcon\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionSummary.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The icon to display as the expand indicator.\n */\n expandIcon: PropTypes.node,\n\n /**\n * This prop can help identify which element has keyboard focus.\n * The class name will be applied when the element gains the focus through keyboard interaction.\n * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n * if needed.\n */\n focusVisibleClassName: PropTypes.string,\n\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionSummary;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"action\", \"centerRipple\", \"children\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"LinkComponent\", \"onBlur\", \"onClick\", \"onContextMenu\", \"onDragLeave\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"tabIndex\", \"TouchRippleProps\", \"touchRippleRef\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { elementTypeAcceptingRef, refType } from '@mui/utils';\nimport composeClasses from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nimport buttonBaseClasses, { getButtonBaseUtilityClass } from './buttonBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n focusVisible,\n focusVisibleClassName,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n };\n const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);\n\n if (focusVisible && focusVisibleClassName) {\n composedClasses.root += ` ${focusVisibleClassName}`;\n }\n\n return composedClasses;\n};\n\nexport const ButtonBaseRoot = styled('button', {\n name: 'MuiButtonBase',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n\n },\n [`&.${buttonBaseClasses.disabled}`]: {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n});\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\n\nconst ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiButtonBase'\n });\n\n const {\n action,\n centerRipple = false,\n children,\n className,\n component = 'button',\n disabled = false,\n disableRipple = false,\n disableTouchRipple = false,\n focusRipple = false,\n LinkComponent = 'a',\n onBlur,\n onClick,\n onContextMenu,\n onDragLeave,\n onFocus,\n onFocusVisible,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseLeave,\n onMouseUp,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n tabIndex = 0,\n TouchRippleProps,\n touchRippleRef,\n type\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const buttonRef = React.useRef(null);\n const rippleRef = React.useRef(null);\n const handleRippleRef = useForkRef(rippleRef, touchRippleRef);\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n const [focusVisible, setFocusVisible] = React.useState(false);\n\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n\n React.useImperativeHandle(action, () => ({\n focusVisible: () => {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n }), []);\n React.useEffect(() => {\n if (focusVisible && focusRipple && !disableRipple) {\n rippleRef.current.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible]);\n\n function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) {\n return useEventCallback(event => {\n if (eventCallback) {\n eventCallback(event);\n }\n\n const ignore = skipRippleAction;\n\n if (!ignore && rippleRef.current) {\n rippleRef.current[rippleAction](event);\n }\n\n return true;\n });\n }\n\n const handleMouseDown = useRippleHandler('start', onMouseDown);\n const handleContextMenu = useRippleHandler('stop', onContextMenu);\n const handleDragLeave = useRippleHandler('stop', onDragLeave);\n const handleMouseUp = useRippleHandler('stop', onMouseUp);\n const handleMouseLeave = useRippleHandler('stop', event => {\n if (focusVisible) {\n event.preventDefault();\n }\n\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n const handleTouchStart = useRippleHandler('start', onTouchStart);\n const handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n const handleTouchMove = useRippleHandler('stop', onTouchMove);\n const handleBlur = useRippleHandler('stop', event => {\n handleBlurVisible(event);\n\n if (isFocusVisibleRef.current === false) {\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n const handleFocus = useEventCallback(event => {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n\n handleFocusVisible(event);\n\n if (isFocusVisibleRef.current === true) {\n setFocusVisible(true);\n\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n\n if (onFocus) {\n onFocus(event);\n }\n });\n\n const isNonNativeButton = () => {\n const button = buttonRef.current;\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n /**\n * IE11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n\n\n const keydownRef = React.useRef(false);\n const handleKeyDown = useEventCallback(event => {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n keydownRef.current = true;\n rippleRef.current.stop(event, () => {\n rippleRef.current.start(event);\n });\n }\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n } // Keyboard accessibility for non interactive elements\n\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n\n if (onClick) {\n onClick(event);\n }\n }\n });\n const handleKeyUp = useEventCallback(event => {\n // calling preventDefault in keyUp on a \n \n \n \n \n \n \n {activeRow && (\n \n \n {activeRow.label} {activeRow.value}kW (\n {activeRow.percentage}%)\n \n \n )}\n\n \n \n \n \n );\n};\n\nexport default UseChart;\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"alt\", \"children\", \"className\", \"component\", \"imgProps\", \"sizes\", \"src\", \"srcSet\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Person from '../internal/svg-icons/Person';\nimport { getAvatarUtilityClass } from './avatarClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n colorDefault\n } = ownerState;\n const slots = {\n root: ['root', variant, colorDefault && 'colorDefault'],\n img: ['img'],\n fallback: ['fallback']\n };\n return composeClasses(slots, getAvatarUtilityClass, classes);\n};\n\nconst AvatarRoot = styled('div', {\n name: 'MuiAvatar',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], ownerState.colorDefault && styles.colorDefault];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n width: 40,\n height: 40,\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.pxToRem(20),\n lineHeight: 1,\n borderRadius: '50%',\n overflow: 'hidden',\n userSelect: 'none'\n}, ownerState.variant === 'rounded' && {\n borderRadius: theme.shape.borderRadius\n}, ownerState.variant === 'square' && {\n borderRadius: 0\n}, ownerState.colorDefault && {\n color: theme.palette.background.default,\n backgroundColor: theme.palette.mode === 'light' ? theme.palette.grey[400] : theme.palette.grey[600]\n}));\nconst AvatarImg = styled('img', {\n name: 'MuiAvatar',\n slot: 'Img',\n overridesResolver: (props, styles) => styles.img\n})({\n width: '100%',\n height: '100%',\n textAlign: 'center',\n // Handle non-square image. The property isn't supported by IE11.\n objectFit: 'cover',\n // Hide alt text.\n color: 'transparent',\n // Hide the image broken icon, only works on Chrome.\n textIndent: 10000\n});\nconst AvatarFallback = styled(Person, {\n name: 'MuiAvatar',\n slot: 'Fallback',\n overridesResolver: (props, styles) => styles.fallback\n})({\n width: '75%',\n height: '75%'\n});\n\nfunction useLoaded({\n crossOrigin,\n referrerPolicy,\n src,\n srcSet\n}) {\n const [loaded, setLoaded] = React.useState(false);\n React.useEffect(() => {\n if (!src && !srcSet) {\n return undefined;\n }\n\n setLoaded(false);\n let active = true;\n const image = new Image();\n\n image.onload = () => {\n if (!active) {\n return;\n }\n\n setLoaded('loaded');\n };\n\n image.onerror = () => {\n if (!active) {\n return;\n }\n\n setLoaded('error');\n };\n\n image.crossOrigin = crossOrigin;\n image.referrerPolicy = referrerPolicy;\n image.src = src;\n\n if (srcSet) {\n image.srcset = srcSet;\n }\n\n return () => {\n active = false;\n };\n }, [crossOrigin, referrerPolicy, src, srcSet]);\n return loaded;\n}\n\nconst Avatar = /*#__PURE__*/React.forwardRef(function Avatar(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAvatar'\n });\n\n const {\n alt,\n children: childrenProp,\n className,\n component = 'div',\n imgProps,\n sizes,\n src,\n srcSet,\n variant = 'circular'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n let children = null; // Use a hook instead of onError on the img element to support server-side rendering.\n\n const loaded = useLoaded(_extends({}, imgProps, {\n src,\n srcSet\n }));\n const hasImg = src || srcSet;\n const hasImgNotFailing = hasImg && loaded !== 'error';\n\n const ownerState = _extends({}, props, {\n colorDefault: !hasImgNotFailing,\n component,\n variant\n });\n\n const classes = useUtilityClasses(ownerState);\n\n if (hasImgNotFailing) {\n children = /*#__PURE__*/_jsx(AvatarImg, _extends({\n alt: alt,\n src: src,\n srcSet: srcSet,\n sizes: sizes,\n ownerState: ownerState,\n className: classes.img\n }, imgProps));\n } else if (childrenProp != null) {\n children = childrenProp;\n } else if (hasImg && alt) {\n children = alt[0];\n } else {\n children = /*#__PURE__*/_jsx(AvatarFallback, {\n className: classes.fallback\n });\n }\n\n return /*#__PURE__*/_jsx(AvatarRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Avatar.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Used in combination with `src` or `srcSet` to\n * provide an alt attribute for the rendered `img` element.\n */\n alt: PropTypes.string,\n\n /**\n * Used to render icon or text elements inside the Avatar if `src` is not set.\n * This can be an element, or just a string.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attributes) applied to the `img` element if the component is used to display an image.\n * It can be used to listen for the loading error event.\n */\n imgProps: PropTypes.object,\n\n /**\n * The `sizes` attribute for the `img` element.\n */\n sizes: PropTypes.string,\n\n /**\n * The `src` attribute for the `img` element.\n */\n src: PropTypes.string,\n\n /**\n * The `srcSet` attribute for the `img` element.\n * Use this attribute for responsive image display.\n */\n srcSet: PropTypes.string,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The shape of the avatar.\n * @default 'circular'\n */\n variant: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['circular', 'rounded', 'square']), PropTypes.string])\n} : void 0;\nexport default Avatar;","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"\n}), 'Person');","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getAvatarUtilityClass(slot) {\n return generateUtilityClass('MuiAvatar', slot);\n}\nconst avatarClasses = generateUtilityClasses('MuiAvatar', ['root', 'colorDefault', 'circular', 'rounded', 'square', 'img', 'fallback']);\nexport default avatarClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nvar _StyledInput, _StyledFilledInput;\n\nconst _excluded = [\"autoWidth\", \"children\", \"classes\", \"className\", \"defaultOpen\", \"displayEmpty\", \"IconComponent\", \"id\", \"input\", \"inputProps\", \"label\", \"labelId\", \"MenuProps\", \"multiple\", \"native\", \"onClose\", \"onOpen\", \"open\", \"renderValue\", \"SelectDisplayProps\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { deepmerge } from '@mui/utils';\nimport SelectInput from './SelectInput';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport Input from '../Input';\nimport NativeSelectInput from '../NativeSelect/NativeSelectInput';\nimport FilledInput from '../FilledInput';\nimport OutlinedInput from '../OutlinedInput';\nimport useThemeProps from '../styles/useThemeProps';\nimport useForkRef from '../utils/useForkRef';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n return classes;\n};\n\nconst styledRootConfig = {\n name: 'MuiSelect',\n overridesResolver: (props, styles) => styles.root,\n shouldForwardProp: prop => rootShouldForwardProp(prop) && prop !== 'variant',\n slot: 'Root'\n};\nconst StyledInput = styled(Input, styledRootConfig)('');\nconst StyledOutlinedInput = styled(OutlinedInput, styledRootConfig)('');\nconst StyledFilledInput = styled(FilledInput, styledRootConfig)('');\nconst Select = /*#__PURE__*/React.forwardRef(function Select(inProps, ref) {\n const props = useThemeProps({\n name: 'MuiSelect',\n props: inProps\n });\n\n const {\n autoWidth = false,\n children,\n classes: classesProp = {},\n className,\n defaultOpen = false,\n displayEmpty = false,\n IconComponent = ArrowDropDownIcon,\n id,\n input,\n inputProps,\n label,\n labelId,\n MenuProps,\n multiple = false,\n native = false,\n onClose,\n onOpen,\n open,\n renderValue,\n SelectDisplayProps,\n variant: variantProp = 'outlined'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const inputComponent = native ? NativeSelectInput : SelectInput;\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['variant']\n });\n const variant = fcs.variant || variantProp;\n const InputComponent = input || {\n standard: _StyledInput || (_StyledInput = /*#__PURE__*/_jsx(StyledInput, {})),\n outlined: /*#__PURE__*/_jsx(StyledOutlinedInput, {\n label: label\n }),\n filled: _StyledFilledInput || (_StyledFilledInput = /*#__PURE__*/_jsx(StyledFilledInput, {}))\n }[variant];\n\n const ownerState = _extends({}, props, {\n variant,\n classes: classesProp\n });\n\n const classes = useUtilityClasses(ownerState);\n const inputComponentRef = useForkRef(ref, InputComponent.ref);\n return /*#__PURE__*/React.cloneElement(InputComponent, _extends({\n // Most of the logic is implemented in `SelectInput`.\n // The `Select` component is a simple API wrapper to expose something better to play with.\n inputComponent,\n inputProps: _extends({\n children,\n IconComponent,\n variant,\n type: undefined,\n // We render a select. We can ignore the type provided by the `Input`.\n multiple\n }, native ? {\n id\n } : {\n autoWidth,\n defaultOpen,\n displayEmpty,\n labelId,\n MenuProps,\n onClose,\n onOpen,\n open,\n renderValue,\n SelectDisplayProps: _extends({\n id\n }, SelectDisplayProps)\n }, inputProps, {\n classes: inputProps ? deepmerge(classes, inputProps.classes) : classes\n }, input ? input.props.inputProps : {})\n }, multiple && native && variant === 'outlined' ? {\n notched: true\n } : {}, {\n ref: inputComponentRef,\n className: clsx(InputComponent.props.className, className),\n variant\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Select.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * If `true`, the width of the popover will automatically be set according to the items inside the\n * menu, otherwise it will be at least the width of the select input.\n * @default false\n */\n autoWidth: PropTypes.bool,\n\n /**\n * The option elements to populate the select with.\n * Can be some `MenuItem` when `native` is false and `option` when `native` is true.\n *\n * ⚠️The `MenuItem` elements **must** be direct descendants when `native` is false.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * @default {}\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the component is initially open. Use when the component open state is not controlled (i.e. the `open` prop is not defined).\n * You can only use it when the `native` prop is `false` (default).\n * @default false\n */\n defaultOpen: PropTypes.bool,\n\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n\n /**\n * If `true`, a value is displayed even if no items are selected.\n *\n * In order to display a meaningful value, a function can be passed to the `renderValue` prop which\n * returns the value to be displayed when no items are selected.\n *\n * ⚠️ When using this prop, make sure the label doesn't overlap with the empty displayed value.\n * The label should either be hidden or forced to a shrunk state.\n * @default false\n */\n displayEmpty: PropTypes.bool,\n\n /**\n * The icon that displays the arrow.\n * @default ArrowDropDownIcon\n */\n IconComponent: PropTypes.elementType,\n\n /**\n * The `id` of the wrapper element or the `select` element when `native`.\n */\n id: PropTypes.string,\n\n /**\n * An `Input` element; does not have to be a material-ui specific `Input`.\n */\n input: PropTypes.element,\n\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n * When `native` is `true`, the attributes are applied on the `select` element.\n */\n inputProps: PropTypes.object,\n\n /**\n * See [OutlinedInput#label](/api/outlined-input/#props)\n */\n label: PropTypes.node,\n\n /**\n * The ID of an element that acts as an additional label. The Select will\n * be labelled by the additional label and the selected value.\n */\n labelId: PropTypes.string,\n\n /**\n * Props applied to the [`Menu`](/api/menu/) element.\n */\n MenuProps: PropTypes.object,\n\n /**\n * If `true`, `value` must be an array and the menu will support multiple selections.\n * @default false\n */\n multiple: PropTypes.bool,\n\n /**\n * If `true`, the component uses a native `select` element.\n * @default false\n */\n native: PropTypes.bool,\n\n /**\n * Callback fired when a menu item is selected.\n *\n * @param {SelectChangeEvent} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (any).\n * **Warning**: This is a generic event not a change event unless the change event is caused by browser autofill.\n * @param {object} [child] The react element that was selected when `native` is `false` (default).\n */\n onChange: PropTypes.func,\n\n /**\n * Callback fired when the component requests to be closed.\n * Use in controlled mode (see open).\n *\n * @param {object} event The event source of the callback.\n */\n onClose: PropTypes.func,\n\n /**\n * Callback fired when the component requests to be opened.\n * Use in controlled mode (see open).\n *\n * @param {object} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n\n /**\n * If `true`, the component is shown.\n * You can only use it when the `native` prop is `false` (default).\n */\n open: PropTypes.bool,\n\n /**\n * Render the selected value.\n * You can only use it when the `native` prop is `false` (default).\n *\n * @param {any} value The `value` provided to the component.\n * @returns {ReactNode}\n */\n renderValue: PropTypes.func,\n\n /**\n * Props applied to the clickable div element.\n */\n SelectDisplayProps: PropTypes.object,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The `input` value. Providing an empty string will select no options.\n * Set to an empty string `''` if you don't want any of the available options to be selected.\n *\n * If the value is an object it must have reference equality with the option in order to be selected.\n * If the value is not an object, the string representation must match with the string representation of the option in order to be selected.\n */\n value: PropTypes.any,\n\n /**\n * The variant to use.\n * @default 'outlined'\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nSelect.muiName = 'Select';\nexport default Select;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@mui/utils\";\n\nvar _span;\n\nconst _excluded = [\"aria-describedby\", \"aria-label\", \"autoFocus\", \"autoWidth\", \"children\", \"className\", \"defaultOpen\", \"defaultValue\", \"disabled\", \"displayEmpty\", \"IconComponent\", \"inputRef\", \"labelId\", \"MenuProps\", \"multiple\", \"name\", \"onBlur\", \"onChange\", \"onClose\", \"onFocus\", \"onOpen\", \"open\", \"readOnly\", \"renderValue\", \"SelectDisplayProps\", \"tabIndex\", \"type\", \"value\", \"variant\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { refType } from '@mui/utils';\nimport ownerDocument from '../utils/ownerDocument';\nimport capitalize from '../utils/capitalize';\nimport Menu from '../Menu/Menu';\nimport { nativeSelectSelectStyles, nativeSelectIconStyles } from '../NativeSelect/NativeSelectInput';\nimport { isFilled } from '../InputBase/utils';\nimport styled, { slotShouldForwardProp } from '../styles/styled';\nimport useForkRef from '../utils/useForkRef';\nimport useControlled from '../utils/useControlled';\nimport selectClasses, { getSelectUtilityClasses } from './selectClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst SelectSelect = styled('div', {\n name: 'MuiSelect',\n slot: 'Select',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [// Win specificity over the input base\n {\n [`&.${selectClasses.select}`]: styles.select\n }, {\n [`&.${selectClasses.select}`]: styles[ownerState.variant]\n }, {\n [`&.${selectClasses.multiple}`]: styles.multiple\n }];\n }\n})(nativeSelectSelectStyles, {\n // Win specificity over the input base\n [`&.${selectClasses.select}`]: {\n height: 'auto',\n // Resets for multiple select with chips\n minHeight: '1.4375em',\n // Required for select\\text-field height consistency\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden'\n }\n});\nconst SelectIcon = styled('svg', {\n name: 'MuiSelect',\n slot: 'Icon',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.icon, ownerState.variant && styles[`icon${capitalize(ownerState.variant)}`], ownerState.open && styles.iconOpen];\n }\n})(nativeSelectIconStyles);\nconst SelectNativeInput = styled('input', {\n shouldForwardProp: prop => slotShouldForwardProp(prop) && prop !== 'classes',\n name: 'MuiSelect',\n slot: 'NativeInput',\n overridesResolver: (props, styles) => styles.nativeInput\n})({\n bottom: 0,\n left: 0,\n position: 'absolute',\n opacity: 0,\n pointerEvents: 'none',\n width: '100%',\n boxSizing: 'border-box'\n});\n\nfunction areEqualValues(a, b) {\n if (typeof b === 'object' && b !== null) {\n return a === b;\n } // The value could be a number, the DOM will stringify it anyway.\n\n\n return String(a) === String(b);\n}\n\nfunction isEmpty(display) {\n return display == null || typeof display === 'string' && !display.trim();\n}\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n disabled,\n multiple,\n open\n } = ownerState;\n const slots = {\n select: ['select', variant, disabled && 'disabled', multiple && 'multiple'],\n icon: ['icon', `icon${capitalize(variant)}`, open && 'iconOpen', disabled && 'disabled'],\n nativeInput: ['nativeInput']\n };\n return composeClasses(slots, getSelectUtilityClasses, classes);\n};\n/**\n * @ignore - internal component.\n */\n\n\nconst SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, ref) {\n const {\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n autoFocus,\n autoWidth,\n children,\n className,\n defaultOpen,\n defaultValue,\n disabled,\n displayEmpty,\n IconComponent,\n inputRef: inputRefProp,\n labelId,\n MenuProps = {},\n multiple,\n name,\n onBlur,\n onChange,\n onClose,\n onFocus,\n onOpen,\n open: openProp,\n readOnly,\n renderValue,\n SelectDisplayProps = {},\n tabIndex: tabIndexProp,\n value: valueProp,\n variant = 'standard'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const [value, setValueState] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: 'Select'\n });\n const [openState, setOpenState] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n name: 'Select'\n });\n const inputRef = React.useRef(null);\n const displayRef = React.useRef(null);\n const [displayNode, setDisplayNode] = React.useState(null);\n const {\n current: isOpenControlled\n } = React.useRef(openProp != null);\n const [menuMinWidthState, setMenuMinWidthState] = React.useState();\n const handleRef = useForkRef(ref, inputRefProp);\n const handleDisplayRef = React.useCallback(node => {\n displayRef.current = node;\n\n if (node) {\n setDisplayNode(node);\n }\n }, []);\n React.useImperativeHandle(handleRef, () => ({\n focus: () => {\n displayRef.current.focus();\n },\n node: inputRef.current,\n value\n }), [value]); // Resize menu on `defaultOpen` automatic toggle.\n\n React.useEffect(() => {\n if (defaultOpen && openState && displayNode && !isOpenControlled) {\n setMenuMinWidthState(autoWidth ? null : displayNode.clientWidth);\n displayRef.current.focus();\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n }, [displayNode, autoWidth]); // `isOpenControlled` is ignored because the component should never switch between controlled and uncontrolled modes.\n // `defaultOpen` and `openState` are ignored to avoid unnecessary callbacks.\n\n React.useEffect(() => {\n if (autoFocus) {\n displayRef.current.focus();\n }\n }, [autoFocus]);\n React.useEffect(() => {\n if (!labelId) {\n return undefined;\n }\n\n const label = ownerDocument(displayRef.current).getElementById(labelId);\n\n if (label) {\n const handler = () => {\n if (getSelection().isCollapsed) {\n displayRef.current.focus();\n }\n };\n\n label.addEventListener('click', handler);\n return () => {\n label.removeEventListener('click', handler);\n };\n }\n\n return undefined;\n }, [labelId]);\n\n const update = (open, event) => {\n if (open) {\n if (onOpen) {\n onOpen(event);\n }\n } else if (onClose) {\n onClose(event);\n }\n\n if (!isOpenControlled) {\n setMenuMinWidthState(autoWidth ? null : displayNode.clientWidth);\n setOpenState(open);\n }\n };\n\n const handleMouseDown = event => {\n // Ignore everything but left-click\n if (event.button !== 0) {\n return;\n } // Hijack the default focus behavior.\n\n\n event.preventDefault();\n displayRef.current.focus();\n update(true, event);\n };\n\n const handleClose = event => {\n update(false, event);\n };\n\n const childrenArray = React.Children.toArray(children); // Support autofill.\n\n const handleChange = event => {\n const index = childrenArray.map(child => child.props.value).indexOf(event.target.value);\n\n if (index === -1) {\n return;\n }\n\n const child = childrenArray[index];\n setValueState(child.props.value);\n\n if (onChange) {\n onChange(event, child);\n }\n };\n\n const handleItemClick = child => event => {\n let newValue; // We use the tabindex attribute to signal the available options.\n\n if (!event.currentTarget.hasAttribute('tabindex')) {\n return;\n }\n\n if (multiple) {\n newValue = Array.isArray(value) ? value.slice() : [];\n const itemIndex = value.indexOf(child.props.value);\n\n if (itemIndex === -1) {\n newValue.push(child.props.value);\n } else {\n newValue.splice(itemIndex, 1);\n }\n } else {\n newValue = child.props.value;\n }\n\n if (child.props.onClick) {\n child.props.onClick(event);\n }\n\n if (value !== newValue) {\n setValueState(newValue);\n\n if (onChange) {\n // Redefine target to allow name and value to be read.\n // This allows seamless integration with the most popular form libraries.\n // https://github.com/mui/material-ui/issues/13485#issuecomment-676048492\n // Clone the event to not override `target` of the original event.\n const nativeEvent = event.nativeEvent || event;\n const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n Object.defineProperty(clonedEvent, 'target', {\n writable: true,\n value: {\n value: newValue,\n name\n }\n });\n onChange(clonedEvent, child);\n }\n }\n\n if (!multiple) {\n update(false, event);\n }\n };\n\n const handleKeyDown = event => {\n if (!readOnly) {\n const validKeys = [' ', 'ArrowUp', 'ArrowDown', // The native select doesn't respond to enter on MacOS, but it's recommended by\n // https://www.w3.org/TR/wai-aria-practices/examples/listbox/listbox-collapsible.html\n 'Enter'];\n\n if (validKeys.indexOf(event.key) !== -1) {\n event.preventDefault();\n update(true, event);\n }\n }\n };\n\n const open = displayNode !== null && openState;\n\n const handleBlur = event => {\n // if open event.stopImmediatePropagation\n if (!open && onBlur) {\n // Preact support, target is read only property on a native event.\n Object.defineProperty(event, 'target', {\n writable: true,\n value: {\n value,\n name\n }\n });\n onBlur(event);\n }\n };\n\n delete other['aria-invalid'];\n let display;\n let displaySingle;\n const displayMultiple = [];\n let computeDisplay = false;\n let foundMatch = false; // No need to display any value if the field is empty.\n\n if (isFilled({\n value\n }) || displayEmpty) {\n if (renderValue) {\n display = renderValue(value);\n } else {\n computeDisplay = true;\n }\n }\n\n const items = childrenArray.map(child => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"MUI: The Select component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n\n let selected;\n\n if (multiple) {\n if (!Array.isArray(value)) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The \\`value\\` prop must be an array when using the \\`Select\\` component with \\`multiple\\`.` : _formatMuiErrorMessage(2));\n }\n\n selected = value.some(v => areEqualValues(v, child.props.value));\n\n if (selected && computeDisplay) {\n displayMultiple.push(child.props.children);\n }\n } else {\n selected = areEqualValues(value, child.props.value);\n\n if (selected && computeDisplay) {\n displaySingle = child.props.children;\n }\n }\n\n if (selected) {\n foundMatch = true;\n }\n\n return /*#__PURE__*/React.cloneElement(child, {\n 'aria-selected': selected ? 'true' : 'false',\n onClick: handleItemClick(child),\n onKeyUp: event => {\n if (event.key === ' ') {\n // otherwise our MenuItems dispatches a click event\n // it's not behavior of the native